summaryrefslogtreecommitdiffstats
path: root/admin
diff options
context:
space:
mode:
Diffstat (limited to 'admin')
-rw-r--r--admin/survey/Fonts/Courier-Bold.afm342
-rw-r--r--admin/survey/Fonts/Courier-BoldOblique.afm342
-rw-r--r--admin/survey/Fonts/Courier-Oblique.afm342
-rw-r--r--admin/survey/Fonts/Courier.afm342
-rw-r--r--admin/survey/Fonts/GeosansLight.ttfbin60072 -> 0 bytes
-rw-r--r--admin/survey/Fonts/Helvetica-Bold.afm2827
-rw-r--r--admin/survey/Fonts/Helvetica-BoldOblique.afm2827
-rw-r--r--admin/survey/Fonts/Helvetica-Oblique.afm3051
-rw-r--r--admin/survey/Fonts/Helvetica.afm3051
-rw-r--r--admin/survey/Fonts/MankSans.ttfbin58492 -> 0 bytes
-rw-r--r--admin/survey/Fonts/OpenSans/OpenSans-Bold-webfont.eotbin30858 -> 0 bytes
-rw-r--r--admin/survey/Fonts/OpenSans/OpenSans-Bold-webfont.svg251
-rw-r--r--admin/survey/Fonts/OpenSans/OpenSans-Bold-webfont.ttfbin30680 -> 0 bytes
-rw-r--r--admin/survey/Fonts/OpenSans/OpenSans-Bold-webfont.woffbin19788 -> 0 bytes
-rw-r--r--admin/survey/Fonts/OpenSans/OpenSans-BoldItalic-webfont.eotbin34166 -> 0 bytes
-rw-r--r--admin/survey/Fonts/OpenSans/OpenSans-BoldItalic-webfont.svg251
-rw-r--r--admin/survey/Fonts/OpenSans/OpenSans-BoldItalic-webfont.ttfbin33960 -> 0 bytes
-rw-r--r--admin/survey/Fonts/OpenSans/OpenSans-BoldItalic-webfont.woffbin21940 -> 0 bytes
-rw-r--r--admin/survey/Fonts/OpenSans/OpenSans-ExtraBold-webfont.eotbin30602 -> 0 bytes
-rw-r--r--admin/survey/Fonts/OpenSans/OpenSans-ExtraBold-webfont.svg251
-rw-r--r--admin/survey/Fonts/OpenSans/OpenSans-ExtraBold-webfont.ttfbin30404 -> 0 bytes
-rw-r--r--admin/survey/Fonts/OpenSans/OpenSans-ExtraBold-webfont.woffbin19972 -> 0 bytes
-rw-r--r--admin/survey/Fonts/OpenSans/OpenSans-ExtraBoldItalic-webfont.eotbin33758 -> 0 bytes
-rw-r--r--admin/survey/Fonts/OpenSans/OpenSans-ExtraBoldItalic-webfont.svg251
-rw-r--r--admin/survey/Fonts/OpenSans/OpenSans-ExtraBoldItalic-webfont.ttfbin33532 -> 0 bytes
-rw-r--r--admin/survey/Fonts/OpenSans/OpenSans-ExtraBoldItalic-webfont.woffbin21824 -> 0 bytes
-rw-r--r--admin/survey/Fonts/OpenSans/OpenSans-Italic-webfont.eotbin34798 -> 0 bytes
-rw-r--r--admin/survey/Fonts/OpenSans/OpenSans-Italic-webfont.svg251
-rw-r--r--admin/survey/Fonts/OpenSans/OpenSans-Italic-webfont.ttfbin34612 -> 0 bytes
-rw-r--r--admin/survey/Fonts/OpenSans/OpenSans-Italic-webfont.woffbin22416 -> 0 bytes
-rw-r--r--admin/survey/Fonts/OpenSans/OpenSans-Light-webfont.eotbin29794 -> 0 bytes
-rw-r--r--admin/survey/Fonts/OpenSans/OpenSans-Light-webfont.svg252
-rw-r--r--admin/survey/Fonts/OpenSans/OpenSans-Light-webfont.ttfbin29612 -> 0 bytes
-rw-r--r--admin/survey/Fonts/OpenSans/OpenSans-Light-webfont.woffbin19396 -> 0 bytes
-rw-r--r--admin/survey/Fonts/OpenSans/OpenSans-LightItalic-webfont.eotbin34578 -> 0 bytes
-rw-r--r--admin/survey/Fonts/OpenSans/OpenSans-LightItalic-webfont.svg252
-rw-r--r--admin/survey/Fonts/OpenSans/OpenSans-LightItalic-webfont.ttfbin34368 -> 0 bytes
-rw-r--r--admin/survey/Fonts/OpenSans/OpenSans-LightItalic-webfont.woffbin22444 -> 0 bytes
-rw-r--r--admin/survey/Fonts/OpenSans/OpenSans-Regular-webfont.eotbin29934 -> 0 bytes
-rw-r--r--admin/survey/Fonts/OpenSans/OpenSans-Regular-webfont.svg252
-rw-r--r--admin/survey/Fonts/OpenSans/OpenSans-Regular-webfont.ttfbin29744 -> 0 bytes
-rw-r--r--admin/survey/Fonts/OpenSans/OpenSans-Regular-webfont.woffbin19624 -> 0 bytes
-rw-r--r--admin/survey/Fonts/OpenSans/OpenSans-Semibold-webfont.eotbin30350 -> 0 bytes
-rw-r--r--admin/survey/Fonts/OpenSans/OpenSans-Semibold-webfont.svg251
-rw-r--r--admin/survey/Fonts/OpenSans/OpenSans-Semibold-webfont.ttfbin30156 -> 0 bytes
-rw-r--r--admin/survey/Fonts/OpenSans/OpenSans-Semibold-webfont.woffbin19736 -> 0 bytes
-rw-r--r--admin/survey/Fonts/OpenSans/OpenSans-SemiboldItalic-webfont.eotbin34866 -> 0 bytes
-rw-r--r--admin/survey/Fonts/OpenSans/OpenSans-SemiboldItalic-webfont.svg251
-rw-r--r--admin/survey/Fonts/OpenSans/OpenSans-SemiboldItalic-webfont.ttfbin34644 -> 0 bytes
-rw-r--r--admin/survey/Fonts/OpenSans/OpenSans-SemiboldItalic-webfont.woffbin22332 -> 0 bytes
-rw-r--r--admin/survey/Fonts/PTSans/PTC55F_W.eotbin159192 -> 0 bytes
-rw-r--r--admin/survey/Fonts/PTSans/PTC55F_W.svg728
-rw-r--r--admin/survey/Fonts/PTSans/PTC55F_W.ttfbin375040 -> 0 bytes
-rw-r--r--admin/survey/Fonts/PTSans/PTC55F_W.woffbin191308 -> 0 bytes
-rw-r--r--admin/survey/Fonts/PTSans/PTC75F_W.eotbin160269 -> 0 bytes
-rw-r--r--admin/survey/Fonts/PTSans/PTC75F_W.svg728
-rw-r--r--admin/survey/Fonts/PTSans/PTC75F_W.ttfbin386628 -> 0 bytes
-rw-r--r--admin/survey/Fonts/PTSans/PTC75F_W.woffbin193812 -> 0 bytes
-rw-r--r--admin/survey/Fonts/PTSans/PTN57F_W.eotbin163618 -> 0 bytes
-rw-r--r--admin/survey/Fonts/PTSans/PTN57F_W.svg728
-rw-r--r--admin/survey/Fonts/PTSans/PTN57F_W.ttfbin384056 -> 0 bytes
-rw-r--r--admin/survey/Fonts/PTSans/PTN57F_W.woffbin192168 -> 0 bytes
-rw-r--r--admin/survey/Fonts/PTSans/PTN77F_W.eotbin212405 -> 0 bytes
-rw-r--r--admin/survey/Fonts/PTSans/PTN77F_W.svg728
-rw-r--r--admin/survey/Fonts/PTSans/PTN77F_W.ttfbin475568 -> 0 bytes
-rw-r--r--admin/survey/Fonts/PTSans/PTN77F_W.woffbin247864 -> 0 bytes
-rw-r--r--admin/survey/Fonts/PTSans/PTS55F_W.eotbin189134 -> 0 bytes
-rw-r--r--admin/survey/Fonts/PTSans/PTS55F_W.svg728
-rw-r--r--admin/survey/Fonts/PTSans/PTS55F_W.ttfbin430808 -> 0 bytes
-rw-r--r--admin/survey/Fonts/PTSans/PTS55F_W.woffbin224188 -> 0 bytes
-rw-r--r--admin/survey/Fonts/PTSans/PTS56F_W.eotbin180480 -> 0 bytes
-rw-r--r--admin/survey/Fonts/PTSans/PTS56F_W.svg728
-rw-r--r--admin/survey/Fonts/PTSans/PTS56F_W.ttfbin424296 -> 0 bytes
-rw-r--r--admin/survey/Fonts/PTSans/PTS56F_W.woffbin218904 -> 0 bytes
-rw-r--r--admin/survey/Fonts/PTSans/PTS75F_W.eotbin200631 -> 0 bytes
-rw-r--r--admin/survey/Fonts/PTSans/PTS75F_W.svg728
-rw-r--r--admin/survey/Fonts/PTSans/PTS75F_W.ttfbin458088 -> 0 bytes
-rw-r--r--admin/survey/Fonts/PTSans/PTS75F_W.woffbin238344 -> 0 bytes
-rw-r--r--admin/survey/Fonts/PTSans/PTS76F_W.eotbin153061 -> 0 bytes
-rw-r--r--admin/survey/Fonts/PTSans/PTS76F_W.svg728
-rw-r--r--admin/survey/Fonts/PTSans/PTS76F_W.ttfbin363052 -> 0 bytes
-rw-r--r--admin/survey/Fonts/PTSans/PTS76F_W.woffbin182624 -> 0 bytes
-rw-r--r--admin/survey/Fonts/Times-Bold.afm2588
-rw-r--r--admin/survey/Fonts/Times-BoldItalic.afm2384
-rw-r--r--admin/survey/Fonts/Times-Italic.afm2667
-rw-r--r--admin/survey/Fonts/Times-Roman.afm2419
-rw-r--r--admin/survey/Fonts/php_Courier.afm1
-rw-r--r--admin/survey/Fonts/php_Helvetica-Bold.afm1
-rw-r--r--admin/survey/Fonts/php_Helvetica.afm1
-rw-r--r--admin/survey/Fonts/php_Times-Roman.afm1
-rw-r--r--admin/survey/Fonts/tahoma.ttfbin383804 -> 0 bytes
-rw-r--r--admin/survey/Help.php125
-rw-r--r--admin/survey/R/TempData/.gitignore2
-rw-r--r--admin/survey/classes/class.SurveyLanguageTechnology.php809
-rw-r--r--admin/survey/classes/staticHtml/AnalizaPredogledFrekvence.html363
-rw-r--r--admin/survey/classes/staticHtml/AnalizaPredogledFrekvence.min.html2
-rw-r--r--admin/survey/classes/staticHtml/AnalizaPredogledMultitabele.html330
-rw-r--r--admin/survey/classes/staticHtml/AnalizaPredogledMultitabele.min.html2
-rw-r--r--admin/survey/classes/staticHtml/AnalizaPredogledNeodgovori.html108
-rw-r--r--admin/survey/classes/staticHtml/AnalizaPredogledNeodgovori.min.html2
-rw-r--r--admin/survey/classes/staticHtml/AnalizaPredogledOpisne.html106
-rw-r--r--admin/survey/classes/staticHtml/AnalizaPredogledOpisne.min.html2
-rw-r--r--admin/survey/classes/staticHtml/AnalizaPredogledPovprecja.html43
-rw-r--r--admin/survey/classes/staticHtml/AnalizaPredogledPovprecja.min.html2
-rw-r--r--admin/survey/classes/staticHtml/AnalizaPredogledRazbitje.html62
-rw-r--r--admin/survey/classes/staticHtml/AnalizaPredogledRazbitje.min.html2
-rw-r--r--admin/survey/classes/staticHtml/AnalizaPredogledSumarnik.html303
-rw-r--r--admin/survey/classes/staticHtml/AnalizaPredogledSumarnik.min.html2
-rw-r--r--admin/survey/classes/staticHtml/AnalizaPredogledTTest.html41
-rw-r--r--admin/survey/classes/staticHtml/AnalizaPredogledTTest.min.html2
-rw-r--r--admin/survey/classes/staticHtml/AnalizaPredogledTabele.html209
-rw-r--r--admin/survey/classes/staticHtml/AnalizaPredogledTabele.min.html2
-rw-r--r--admin/survey/excel/PHPExcel.php823
-rw-r--r--admin/survey/excel/PHPExcel/Autoloader.php85
-rw-r--r--admin/survey/excel/PHPExcel/CachedObjectStorage/APC.php280
-rw-r--r--admin/survey/excel/PHPExcel/CachedObjectStorage/CacheBase.php252
-rw-r--r--admin/survey/excel/PHPExcel/CachedObjectStorage/DiscISAM.php205
-rw-r--r--admin/survey/excel/PHPExcel/CachedObjectStorage/ICache.php112
-rw-r--r--admin/survey/excel/PHPExcel/CachedObjectStorage/Igbinary.php138
-rw-r--r--admin/survey/excel/PHPExcel/CachedObjectStorage/Memcache.php298
-rw-r--r--admin/survey/excel/PHPExcel/CachedObjectStorage/Memory.php109
-rw-r--r--admin/survey/excel/PHPExcel/CachedObjectStorage/MemoryGZip.php123
-rw-r--r--admin/survey/excel/PHPExcel/CachedObjectStorage/MemorySerialized.php123
-rw-r--r--admin/survey/excel/PHPExcel/CachedObjectStorage/PHPTemp.php192
-rw-r--r--admin/survey/excel/PHPExcel/CachedObjectStorage/SQLite.php270
-rw-r--r--admin/survey/excel/PHPExcel/CachedObjectStorage/SQLite3.php277
-rw-r--r--admin/survey/excel/PHPExcel/CachedObjectStorage/Wincache.php280
-rw-r--r--admin/survey/excel/PHPExcel/CachedObjectStorageFactory.php239
-rw-r--r--admin/survey/excel/PHPExcel/Calculation.php3811
-rw-r--r--admin/survey/excel/PHPExcel/Calculation/Database.php725
-rw-r--r--admin/survey/excel/PHPExcel/Calculation/DateTime.php1447
-rw-r--r--admin/survey/excel/PHPExcel/Calculation/Engineering.php2502
-rw-r--r--admin/survey/excel/PHPExcel/Calculation/Exception.php52
-rw-r--r--admin/survey/excel/PHPExcel/Calculation/ExceptionHandler.php49
-rw-r--r--admin/survey/excel/PHPExcel/Calculation/Financial.php2248
-rw-r--r--admin/survey/excel/PHPExcel/Calculation/FormulaParser.php614
-rw-r--r--admin/survey/excel/PHPExcel/Calculation/FormulaToken.php176
-rw-r--r--admin/survey/excel/PHPExcel/Calculation/Function.php149
-rw-r--r--admin/survey/excel/PHPExcel/Calculation/Functions.php813
-rw-r--r--admin/survey/excel/PHPExcel/Calculation/Logical.php288
-rw-r--r--admin/survey/excel/PHPExcel/Calculation/LookupRef.php808
-rw-r--r--admin/survey/excel/PHPExcel/Calculation/MathTrig.php1366
-rw-r--r--admin/survey/excel/PHPExcel/Calculation/Statistical.php3644
-rw-r--r--admin/survey/excel/PHPExcel/Calculation/TextData.php598
-rw-r--r--admin/survey/excel/PHPExcel/Calculation/Token/Stack.php73
-rw-r--r--admin/survey/excel/PHPExcel/Calculation/functionlist.txt351
-rw-r--r--admin/survey/excel/PHPExcel/Cell.php972
-rw-r--r--admin/survey/excel/PHPExcel/Cell/AdvancedValueBinder.php190
-rw-r--r--admin/survey/excel/PHPExcel/Cell/DataType.php114
-rw-r--r--admin/survey/excel/PHPExcel/Cell/DataValidation.php474
-rw-r--r--admin/survey/excel/PHPExcel/Cell/DefaultValueBinder.php106
-rw-r--r--admin/survey/excel/PHPExcel/Cell/Hyperlink.php127
-rw-r--r--admin/survey/excel/PHPExcel/Cell/IValueBinder.php46
-rw-r--r--admin/survey/excel/PHPExcel/Chart.php527
-rw-r--r--admin/survey/excel/PHPExcel/Chart/DataSeries.php354
-rw-r--r--admin/survey/excel/PHPExcel/Chart/DataSeriesValues.php321
-rw-r--r--admin/survey/excel/PHPExcel/Chart/Exception.php52
-rw-r--r--admin/survey/excel/PHPExcel/Chart/Layout.php417
-rw-r--r--admin/survey/excel/PHPExcel/Chart/Legend.php171
-rw-r--r--admin/survey/excel/PHPExcel/Chart/PlotArea.php125
-rw-r--r--admin/survey/excel/PHPExcel/Chart/Renderer/PHP Charting Libraries.txt17
-rw-r--r--admin/survey/excel/PHPExcel/Chart/Renderer/jpgraph.php839
-rw-r--r--admin/survey/excel/PHPExcel/Chart/Title.php89
-rw-r--r--admin/survey/excel/PHPExcel/Comment.php317
-rw-r--r--admin/survey/excel/PHPExcel/DocumentProperties.php588
-rw-r--r--admin/survey/excel/PHPExcel/DocumentSecurity.php218
-rw-r--r--admin/survey/excel/PHPExcel/Exception.php52
-rw-r--r--admin/survey/excel/PHPExcel/HashTable.php202
-rw-r--r--admin/survey/excel/PHPExcel/IComparable.php43
-rw-r--r--admin/survey/excel/PHPExcel/IOFactory.php288
-rw-r--r--admin/survey/excel/PHPExcel/NamedRange.php245
-rw-r--r--admin/survey/excel/PHPExcel/Reader/CSV.php505
-rw-r--r--admin/survey/excel/PHPExcel/Reader/DefaultReadFilter.php58
-rw-r--r--admin/survey/excel/PHPExcel/Reader/Excel2003XML.php906
-rw-r--r--admin/survey/excel/PHPExcel/Reader/Excel2007.php2112
-rw-r--r--admin/survey/excel/PHPExcel/Reader/Excel2007/Chart.php513
-rw-r--r--admin/survey/excel/PHPExcel/Reader/Excel2007/Theme.php124
-rw-r--r--admin/survey/excel/PHPExcel/Reader/Excel5.php6890
-rw-r--r--admin/survey/excel/PHPExcel/Reader/Excel5/Escher.php640
-rw-r--r--admin/survey/excel/PHPExcel/Reader/Gnumeric.php982
-rw-r--r--admin/survey/excel/PHPExcel/Reader/HTML.php499
-rw-r--r--admin/survey/excel/PHPExcel/Reader/IReadFilter.php47
-rw-r--r--admin/survey/excel/PHPExcel/Reader/IReader.php53
-rw-r--r--admin/survey/excel/PHPExcel/Reader/OOCalc.php733
-rw-r--r--admin/survey/excel/PHPExcel/Reader/SYLK.php498
-rw-r--r--admin/survey/excel/PHPExcel/ReferenceHelper.php685
-rw-r--r--admin/survey/excel/PHPExcel/RichText.php196
-rw-r--r--admin/survey/excel/PHPExcel/RichText/ITextElement.php64
-rw-r--r--admin/survey/excel/PHPExcel/RichText/Run.php102
-rw-r--r--admin/survey/excel/PHPExcel/RichText/TextElement.php108
-rw-r--r--admin/survey/excel/PHPExcel/Shared/CodePage.php101
-rw-r--r--admin/survey/excel/PHPExcel/Shared/Date.php356
-rw-r--r--admin/survey/excel/PHPExcel/Shared/Drawing.php272
-rw-r--r--admin/survey/excel/PHPExcel/Shared/Escher.php91
-rw-r--r--admin/survey/excel/PHPExcel/Shared/Escher/DgContainer.php83
-rw-r--r--admin/survey/excel/PHPExcel/Shared/Escher/DgContainer/SpgrContainer.php109
-rw-r--r--admin/survey/excel/PHPExcel/Shared/Escher/DgContainer/SpgrContainer/SpContainer.php395
-rw-r--r--admin/survey/excel/PHPExcel/Shared/Escher/DggContainer.php203
-rw-r--r--admin/survey/excel/PHPExcel/Shared/Escher/DggContainer/BstoreContainer.php65
-rw-r--r--admin/survey/excel/PHPExcel/Shared/Escher/DggContainer/BstoreContainer/BSE.php120
-rw-r--r--admin/survey/excel/PHPExcel/Shared/Escher/DggContainer/BstoreContainer/BSE/Blip.php91
-rw-r--r--admin/survey/excel/PHPExcel/Shared/Excel5.php317
-rw-r--r--admin/survey/excel/PHPExcel/Shared/File.php139
-rw-r--r--admin/survey/excel/PHPExcel/Shared/Font.php775
-rw-r--r--admin/survey/excel/PHPExcel/Shared/JAMA/CHANGELOG.TXT16
-rw-r--r--admin/survey/excel/PHPExcel/Shared/JAMA/CholeskyDecomposition.php149
-rw-r--r--admin/survey/excel/PHPExcel/Shared/JAMA/EigenvalueDecomposition.php862
-rw-r--r--admin/survey/excel/PHPExcel/Shared/JAMA/LUDecomposition.php258
-rw-r--r--admin/survey/excel/PHPExcel/Shared/JAMA/Matrix.php1059
-rw-r--r--admin/survey/excel/PHPExcel/Shared/JAMA/QRDecomposition.php234
-rw-r--r--admin/survey/excel/PHPExcel/Shared/JAMA/SingularValueDecomposition.php526
-rw-r--r--admin/survey/excel/PHPExcel/Shared/JAMA/examples/LMQuadTest.php116
-rw-r--r--admin/survey/excel/PHPExcel/Shared/JAMA/examples/LagrangeInterpolation.php59
-rw-r--r--admin/survey/excel/PHPExcel/Shared/JAMA/examples/LagrangeInterpolation2.php59
-rw-r--r--admin/survey/excel/PHPExcel/Shared/JAMA/examples/LevenbergMarquardt.php185
-rw-r--r--admin/survey/excel/PHPExcel/Shared/JAMA/examples/MagicSquareExample.php182
-rw-r--r--admin/survey/excel/PHPExcel/Shared/JAMA/examples/Stats.php1605
-rw-r--r--admin/survey/excel/PHPExcel/Shared/JAMA/examples/benchmark.php263
-rw-r--r--admin/survey/excel/PHPExcel/Shared/JAMA/examples/polyfit.php73
-rw-r--r--admin/survey/excel/PHPExcel/Shared/JAMA/examples/tile.php78
-rw-r--r--admin/survey/excel/PHPExcel/Shared/JAMA/tests/TestMatrix.php415
-rw-r--r--admin/survey/excel/PHPExcel/Shared/JAMA/utils/Error.php82
-rw-r--r--admin/survey/excel/PHPExcel/Shared/JAMA/utils/Maths.php43
-rw-r--r--admin/survey/excel/PHPExcel/Shared/OLE.php531
-rw-r--r--admin/survey/excel/PHPExcel/Shared/OLE/ChainedBlockStream.php229
-rw-r--r--admin/survey/excel/PHPExcel/Shared/OLE/PPS.php230
-rw-r--r--admin/survey/excel/PHPExcel/Shared/OLE/PPS/File.php84
-rw-r--r--admin/survey/excel/PHPExcel/Shared/OLE/PPS/Root.php467
-rw-r--r--admin/survey/excel/PHPExcel/Shared/OLERead.php317
-rw-r--r--admin/survey/excel/PHPExcel/Shared/PCLZip/gnu-lgpl.txt504
-rw-r--r--admin/survey/excel/PHPExcel/Shared/PCLZip/pclzip.lib.php5694
-rw-r--r--admin/survey/excel/PHPExcel/Shared/PCLZip/readme.txt421
-rw-r--r--admin/survey/excel/PHPExcel/Shared/PasswordHasher.php67
-rw-r--r--admin/survey/excel/PHPExcel/Shared/String.php730
-rw-r--r--admin/survey/excel/PHPExcel/Shared/XMLWriter.php127
-rw-r--r--admin/survey/excel/PHPExcel/Shared/ZipArchive.php114
-rw-r--r--admin/survey/excel/PHPExcel/Shared/ZipStreamWrapper.php183
-rw-r--r--admin/survey/excel/PHPExcel/Shared/trend/bestFitClass.php432
-rw-r--r--admin/survey/excel/PHPExcel/Shared/trend/exponentialBestFitClass.php148
-rw-r--r--admin/survey/excel/PHPExcel/Shared/trend/linearBestFitClass.php111
-rw-r--r--admin/survey/excel/PHPExcel/Shared/trend/logarithmicBestFitClass.php120
-rw-r--r--admin/survey/excel/PHPExcel/Shared/trend/polynomialBestFitClass.php224
-rw-r--r--admin/survey/excel/PHPExcel/Shared/trend/powerBestFitClass.php142
-rw-r--r--admin/survey/excel/PHPExcel/Shared/trend/trendClass.php156
-rw-r--r--admin/survey/excel/PHPExcel/Style.php684
-rw-r--r--admin/survey/excel/PHPExcel/Style/Alignment.php494
-rw-r--r--admin/survey/excel/PHPExcel/Style/Border.php388
-rw-r--r--admin/survey/excel/PHPExcel/Style/Borders.php512
-rw-r--r--admin/survey/excel/PHPExcel/Style/Color.php510
-rw-r--r--admin/survey/excel/PHPExcel/Style/Conditional.php277
-rw-r--r--admin/survey/excel/PHPExcel/Style/Fill.php409
-rw-r--r--admin/survey/excel/PHPExcel/Style/Font.php640
-rw-r--r--admin/survey/excel/PHPExcel/Style/NumberFormat.php741
-rw-r--r--admin/survey/excel/PHPExcel/Style/Protection.php290
-rw-r--r--admin/survey/excel/PHPExcel/Worksheet.php2795
-rw-r--r--admin/survey/excel/PHPExcel/Worksheet/AutoFilter.php855
-rw-r--r--admin/survey/excel/PHPExcel/Worksheet/AutoFilter/Column.php381
-rw-r--r--admin/survey/excel/PHPExcel/Worksheet/AutoFilter/Column/Rule.php462
-rw-r--r--admin/survey/excel/PHPExcel/Worksheet/BaseDrawing.php485
-rw-r--r--admin/survey/excel/PHPExcel/Worksheet/CellIterator.php161
-rw-r--r--admin/survey/excel/PHPExcel/Worksheet/ColumnDimension.php266
-rw-r--r--admin/survey/excel/PHPExcel/Worksheet/Drawing.php148
-rw-r--r--admin/survey/excel/PHPExcel/Worksheet/Drawing/Shadow.php288
-rw-r--r--admin/survey/excel/PHPExcel/Worksheet/HeaderFooter.php465
-rw-r--r--admin/survey/excel/PHPExcel/Worksheet/HeaderFooterDrawing.php350
-rw-r--r--admin/survey/excel/PHPExcel/Worksheet/MemoryDrawing.php200
-rw-r--r--admin/survey/excel/PHPExcel/Worksheet/PageMargins.php220
-rw-r--r--admin/survey/excel/PHPExcel/Worksheet/PageSetup.php798
-rw-r--r--admin/survey/excel/PHPExcel/Worksheet/Protection.php545
-rw-r--r--admin/survey/excel/PHPExcel/Worksheet/Row.php90
-rw-r--r--admin/survey/excel/PHPExcel/Worksheet/RowDimension.php265
-rw-r--r--admin/survey/excel/PHPExcel/Worksheet/RowIterator.php148
-rw-r--r--admin/survey/excel/PHPExcel/Worksheet/SheetView.php188
-rw-r--r--admin/survey/excel/PHPExcel/WorksheetIterator.php111
-rw-r--r--admin/survey/excel/PHPExcel/Writer/CSV.php339
-rw-r--r--admin/survey/excel/PHPExcel/Writer/Excel2007.php583
-rw-r--r--admin/survey/excel/PHPExcel/Writer/Excel2007/Chart.php1181
-rw-r--r--admin/survey/excel/PHPExcel/Writer/Excel2007/Comments.php268
-rw-r--r--admin/survey/excel/PHPExcel/Writer/Excel2007/ContentTypes.php261
-rw-r--r--admin/survey/excel/PHPExcel/Writer/Excel2007/DocProps.php272
-rw-r--r--admin/survey/excel/PHPExcel/Writer/Excel2007/Drawing.php598
-rw-r--r--admin/survey/excel/PHPExcel/Writer/Excel2007/Rels.php417
-rw-r--r--admin/survey/excel/PHPExcel/Writer/Excel2007/StringTable.php319
-rw-r--r--admin/survey/excel/PHPExcel/Writer/Excel2007/Style.php701
-rw-r--r--admin/survey/excel/PHPExcel/Writer/Excel2007/Theme.php871
-rw-r--r--admin/survey/excel/PHPExcel/Writer/Excel2007/Workbook.php452
-rw-r--r--admin/survey/excel/PHPExcel/Writer/Excel2007/Worksheet.php1215
-rw-r--r--admin/survey/excel/PHPExcel/Writer/Excel2007/WriterPart.php81
-rw-r--r--admin/survey/excel/PHPExcel/Writer/Excel5.php961
-rw-r--r--admin/survey/excel/PHPExcel/Writer/Excel5/BIFFwriter.php255
-rw-r--r--admin/survey/excel/PHPExcel/Writer/Excel5/Escher.php537
-rw-r--r--admin/survey/excel/PHPExcel/Writer/Excel5/Font.php165
-rw-r--r--admin/survey/excel/PHPExcel/Writer/Excel5/Parser.php1583
-rw-r--r--admin/survey/excel/PHPExcel/Writer/Excel5/Workbook.php1450
-rw-r--r--admin/survey/excel/PHPExcel/Writer/Excel5/Worksheet.php2954
-rw-r--r--admin/survey/excel/PHPExcel/Writer/Excel5/Xf.php546
-rw-r--r--admin/survey/excel/PHPExcel/Writer/HTML.php1377
-rw-r--r--admin/survey/excel/PHPExcel/Writer/IWriter.php45
-rw-r--r--admin/survey/excel/PHPExcel/Writer/PDF.php76
-rw-r--r--admin/survey/excel/PHPExcel/Writer/PDF/Core.php239
-rw-r--r--admin/survey/excel/PHPExcel/Writer/PDF/DomPDF.php128
-rw-r--r--admin/survey/excel/PHPExcel/Writer/PDF/mPDF.php135
-rw-r--r--admin/survey/excel/PHPExcel/Writer/PDF/tcPDF.php147
-rw-r--r--admin/survey/excel/PHPExcel/locale/cs/config47
-rw-r--r--admin/survey/excel/PHPExcel/locale/cs/functions438
-rw-r--r--admin/survey/excel/PHPExcel/locale/da/config48
-rw-r--r--admin/survey/excel/PHPExcel/locale/da/functions438
-rw-r--r--admin/survey/excel/PHPExcel/locale/de/config47
-rw-r--r--admin/survey/excel/PHPExcel/locale/de/functions438
-rw-r--r--admin/survey/excel/PHPExcel/locale/en/uk/config32
-rw-r--r--admin/survey/excel/PHPExcel/locale/es/config47
-rw-r--r--admin/survey/excel/PHPExcel/locale/es/functions438
-rw-r--r--admin/survey/excel/PHPExcel/locale/fi/config47
-rw-r--r--admin/survey/excel/PHPExcel/locale/fi/functions438
-rw-r--r--admin/survey/excel/PHPExcel/locale/fr/config47
-rw-r--r--admin/survey/excel/PHPExcel/locale/fr/functions438
-rw-r--r--admin/survey/excel/PHPExcel/locale/hu/config47
-rw-r--r--admin/survey/excel/PHPExcel/locale/hu/functions438
-rw-r--r--admin/survey/excel/PHPExcel/locale/it/config47
-rw-r--r--admin/survey/excel/PHPExcel/locale/it/functions438
-rw-r--r--admin/survey/excel/PHPExcel/locale/nl/config47
-rw-r--r--admin/survey/excel/PHPExcel/locale/nl/functions438
-rw-r--r--admin/survey/excel/PHPExcel/locale/no/config47
-rw-r--r--admin/survey/excel/PHPExcel/locale/no/functions438
-rw-r--r--admin/survey/excel/PHPExcel/locale/pl/config47
-rw-r--r--admin/survey/excel/PHPExcel/locale/pl/functions438
-rw-r--r--admin/survey/excel/PHPExcel/locale/pt/br/config47
-rw-r--r--admin/survey/excel/PHPExcel/locale/pt/br/functions408
-rw-r--r--admin/survey/excel/PHPExcel/locale/pt/config47
-rw-r--r--admin/survey/excel/PHPExcel/locale/pt/functions408
-rw-r--r--admin/survey/excel/PHPExcel/locale/ru/config47
-rw-r--r--admin/survey/excel/PHPExcel/locale/ru/functions438
-rw-r--r--admin/survey/excel/PHPExcel/locale/sv/config47
-rw-r--r--admin/survey/excel/PHPExcel/locale/sv/functions408
-rw-r--r--admin/survey/excel/PHPExcel/locale/tr/config47
-rw-r--r--admin/survey/excel/PHPExcel/locale/tr/functions438
-rw-r--r--admin/survey/modules/mod_360_1KA/results/.gitignore2
-rw-r--r--admin/survey/modules/mod_kakovost/R/calc.usability.R72
-rw-r--r--admin/survey/modules/mod_kakovost/R/gen.survey.str.R71
-rw-r--r--admin/survey/modules/mod_kakovost/R/gen.usability.matrix.R181
-rw-r--r--admin/survey/modules/mod_uporabnost/results/.gitignore2
-rw-r--r--admin/survey/modules/mod_uporabnost/temp/.gitignore2
-rw-r--r--admin/survey/script/LanguageTechnology.js1415
-rw-r--r--admin/survey/script/LanguageTechnology_old.js841
-rw-r--r--admin/survey/script/telefon.js31
345 files changed, 0 insertions, 143225 deletions
diff --git a/admin/survey/Fonts/Courier-Bold.afm b/admin/survey/Fonts/Courier-Bold.afm
deleted file mode 100644
index d25d776..0000000
--- a/admin/survey/Fonts/Courier-Bold.afm
+++ /dev/null
@@ -1,342 +0,0 @@
-StartFontMetrics 4.1
-Comment Copyright (c) 1989, 1990, 1991, 1993, 1997 Adobe Systems Incorporated. All Rights Reserved.
-Comment Creation Date: Mon Jun 23 16:28:00 1997
-Comment UniqueID 43048
-Comment VMusage 41139 52164
-FontName Courier-Bold
-FullName Courier Bold
-FamilyName Courier
-Weight Bold
-ItalicAngle 0
-IsFixedPitch true
-CharacterSet ExtendedRoman
-FontBBox -113 -250 749 801
-UnderlinePosition -100
-UnderlineThickness 50
-Version 003.000
-Notice Copyright (c) 1989, 1990, 1991, 1993, 1997 Adobe Systems Incorporated. All Rights Reserved.
-EncodingScheme AdobeStandardEncoding
-CapHeight 562
-XHeight 439
-Ascender 629
-Descender -157
-StdHW 84
-StdVW 106
-StartCharMetrics 315
-C 32 ; WX 600 ; N space ; B 0 0 0 0 ;
-C 33 ; WX 600 ; N exclam ; B 202 -15 398 572 ;
-C 34 ; WX 600 ; N quotedbl ; B 135 277 465 562 ;
-C 35 ; WX 600 ; N numbersign ; B 56 -45 544 651 ;
-C 36 ; WX 600 ; N dollar ; B 82 -126 519 666 ;
-C 37 ; WX 600 ; N percent ; B 5 -15 595 616 ;
-C 38 ; WX 600 ; N ampersand ; B 36 -15 546 543 ;
-C 39 ; WX 600 ; N quoteright ; B 171 277 423 562 ;
-C 40 ; WX 600 ; N parenleft ; B 219 -102 461 616 ;
-C 41 ; WX 600 ; N parenright ; B 139 -102 381 616 ;
-C 42 ; WX 600 ; N asterisk ; B 91 219 509 601 ;
-C 43 ; WX 600 ; N plus ; B 71 39 529 478 ;
-C 44 ; WX 600 ; N comma ; B 123 -111 393 174 ;
-C 45 ; WX 600 ; N hyphen ; B 100 203 500 313 ;
-C 46 ; WX 600 ; N period ; B 192 -15 408 171 ;
-C 47 ; WX 600 ; N slash ; B 98 -77 502 626 ;
-C 48 ; WX 600 ; N zero ; B 87 -15 513 616 ;
-C 49 ; WX 600 ; N one ; B 81 0 539 616 ;
-C 50 ; WX 600 ; N two ; B 61 0 499 616 ;
-C 51 ; WX 600 ; N three ; B 63 -15 501 616 ;
-C 52 ; WX 600 ; N four ; B 53 0 507 616 ;
-C 53 ; WX 600 ; N five ; B 70 -15 521 601 ;
-C 54 ; WX 600 ; N six ; B 90 -15 521 616 ;
-C 55 ; WX 600 ; N seven ; B 55 0 494 601 ;
-C 56 ; WX 600 ; N eight ; B 83 -15 517 616 ;
-C 57 ; WX 600 ; N nine ; B 79 -15 510 616 ;
-C 58 ; WX 600 ; N colon ; B 191 -15 407 425 ;
-C 59 ; WX 600 ; N semicolon ; B 123 -111 408 425 ;
-C 60 ; WX 600 ; N less ; B 66 15 523 501 ;
-C 61 ; WX 600 ; N equal ; B 71 118 529 398 ;
-C 62 ; WX 600 ; N greater ; B 77 15 534 501 ;
-C 63 ; WX 600 ; N question ; B 98 -14 501 580 ;
-C 64 ; WX 600 ; N at ; B 16 -15 584 616 ;
-C 65 ; WX 600 ; N A ; B -9 0 609 562 ;
-C 66 ; WX 600 ; N B ; B 30 0 573 562 ;
-C 67 ; WX 600 ; N C ; B 22 -18 560 580 ;
-C 68 ; WX 600 ; N D ; B 30 0 594 562 ;
-C 69 ; WX 600 ; N E ; B 25 0 560 562 ;
-C 70 ; WX 600 ; N F ; B 39 0 570 562 ;
-C 71 ; WX 600 ; N G ; B 22 -18 594 580 ;
-C 72 ; WX 600 ; N H ; B 20 0 580 562 ;
-C 73 ; WX 600 ; N I ; B 77 0 523 562 ;
-C 74 ; WX 600 ; N J ; B 37 -18 601 562 ;
-C 75 ; WX 600 ; N K ; B 21 0 599 562 ;
-C 76 ; WX 600 ; N L ; B 39 0 578 562 ;
-C 77 ; WX 600 ; N M ; B -2 0 602 562 ;
-C 78 ; WX 600 ; N N ; B 8 -12 610 562 ;
-C 79 ; WX 600 ; N O ; B 22 -18 578 580 ;
-C 80 ; WX 600 ; N P ; B 48 0 559 562 ;
-C 81 ; WX 600 ; N Q ; B 32 -138 578 580 ;
-C 82 ; WX 600 ; N R ; B 24 0 599 562 ;
-C 83 ; WX 600 ; N S ; B 47 -22 553 582 ;
-C 84 ; WX 600 ; N T ; B 21 0 579 562 ;
-C 85 ; WX 600 ; N U ; B 4 -18 596 562 ;
-C 86 ; WX 600 ; N V ; B -13 0 613 562 ;
-C 87 ; WX 600 ; N W ; B -18 0 618 562 ;
-C 88 ; WX 600 ; N X ; B 12 0 588 562 ;
-C 89 ; WX 600 ; N Y ; B 12 0 589 562 ;
-C 90 ; WX 600 ; N Z ; B 62 0 539 562 ;
-C 91 ; WX 600 ; N bracketleft ; B 245 -102 475 616 ;
-C 92 ; WX 600 ; N backslash ; B 99 -77 503 626 ;
-C 93 ; WX 600 ; N bracketright ; B 125 -102 355 616 ;
-C 94 ; WX 600 ; N asciicircum ; B 108 250 492 616 ;
-C 95 ; WX 600 ; N underscore ; B 0 -125 600 -75 ;
-C 96 ; WX 600 ; N quoteleft ; B 178 277 428 562 ;
-C 97 ; WX 600 ; N a ; B 35 -15 570 454 ;
-C 98 ; WX 600 ; N b ; B 0 -15 584 626 ;
-C 99 ; WX 600 ; N c ; B 40 -15 545 459 ;
-C 100 ; WX 600 ; N d ; B 20 -15 591 626 ;
-C 101 ; WX 600 ; N e ; B 40 -15 563 454 ;
-C 102 ; WX 600 ; N f ; B 83 0 547 626 ; L i fi ; L l fl ;
-C 103 ; WX 600 ; N g ; B 30 -146 580 454 ;
-C 104 ; WX 600 ; N h ; B 5 0 592 626 ;
-C 105 ; WX 600 ; N i ; B 77 0 523 658 ;
-C 106 ; WX 600 ; N j ; B 63 -146 440 658 ;
-C 107 ; WX 600 ; N k ; B 20 0 585 626 ;
-C 108 ; WX 600 ; N l ; B 77 0 523 626 ;
-C 109 ; WX 600 ; N m ; B -22 0 626 454 ;
-C 110 ; WX 600 ; N n ; B 18 0 592 454 ;
-C 111 ; WX 600 ; N o ; B 30 -15 570 454 ;
-C 112 ; WX 600 ; N p ; B -1 -142 570 454 ;
-C 113 ; WX 600 ; N q ; B 20 -142 591 454 ;
-C 114 ; WX 600 ; N r ; B 47 0 580 454 ;
-C 115 ; WX 600 ; N s ; B 68 -17 535 459 ;
-C 116 ; WX 600 ; N t ; B 47 -15 532 562 ;
-C 117 ; WX 600 ; N u ; B -1 -15 569 439 ;
-C 118 ; WX 600 ; N v ; B -1 0 601 439 ;
-C 119 ; WX 600 ; N w ; B -18 0 618 439 ;
-C 120 ; WX 600 ; N x ; B 6 0 594 439 ;
-C 121 ; WX 600 ; N y ; B -4 -142 601 439 ;
-C 122 ; WX 600 ; N z ; B 81 0 520 439 ;
-C 123 ; WX 600 ; N braceleft ; B 160 -102 464 616 ;
-C 124 ; WX 600 ; N bar ; B 255 -250 345 750 ;
-C 125 ; WX 600 ; N braceright ; B 136 -102 440 616 ;
-C 126 ; WX 600 ; N asciitilde ; B 71 153 530 356 ;
-C 161 ; WX 600 ; N exclamdown ; B 202 -146 398 449 ;
-C 162 ; WX 600 ; N cent ; B 66 -49 518 614 ;
-C 163 ; WX 600 ; N sterling ; B 72 -28 558 611 ;
-C 164 ; WX 600 ; N fraction ; B 25 -60 576 661 ;
-C 165 ; WX 600 ; N yen ; B 10 0 590 562 ;
-C 166 ; WX 600 ; N florin ; B -30 -131 572 616 ;
-C 167 ; WX 600 ; N section ; B 83 -70 517 580 ;
-C 168 ; WX 600 ; N currency ; B 54 49 546 517 ;
-C 169 ; WX 600 ; N quotesingle ; B 227 277 373 562 ;
-C 170 ; WX 600 ; N quotedblleft ; B 71 277 535 562 ;
-C 171 ; WX 600 ; N guillemotleft ; B 8 70 553 446 ;
-C 172 ; WX 600 ; N guilsinglleft ; B 141 70 459 446 ;
-C 173 ; WX 600 ; N guilsinglright ; B 141 70 459 446 ;
-C 174 ; WX 600 ; N fi ; B 12 0 593 626 ;
-C 175 ; WX 600 ; N fl ; B 12 0 593 626 ;
-C 177 ; WX 600 ; N endash ; B 65 203 535 313 ;
-C 178 ; WX 600 ; N dagger ; B 106 -70 494 580 ;
-C 179 ; WX 600 ; N daggerdbl ; B 106 -70 494 580 ;
-C 180 ; WX 600 ; N periodcentered ; B 196 165 404 351 ;
-C 182 ; WX 600 ; N paragraph ; B 6 -70 576 580 ;
-C 183 ; WX 600 ; N bullet ; B 140 132 460 430 ;
-C 184 ; WX 600 ; N quotesinglbase ; B 175 -142 427 143 ;
-C 185 ; WX 600 ; N quotedblbase ; B 65 -142 529 143 ;
-C 186 ; WX 600 ; N quotedblright ; B 61 277 525 562 ;
-C 187 ; WX 600 ; N guillemotright ; B 47 70 592 446 ;
-C 188 ; WX 600 ; N ellipsis ; B 26 -15 574 116 ;
-C 189 ; WX 600 ; N perthousand ; B -113 -15 713 616 ;
-C 191 ; WX 600 ; N questiondown ; B 99 -146 502 449 ;
-C 193 ; WX 600 ; N grave ; B 132 508 395 661 ;
-C 194 ; WX 600 ; N acute ; B 205 508 468 661 ;
-C 195 ; WX 600 ; N circumflex ; B 103 483 497 657 ;
-C 196 ; WX 600 ; N tilde ; B 89 493 512 636 ;
-C 197 ; WX 600 ; N macron ; B 88 505 512 585 ;
-C 198 ; WX 600 ; N breve ; B 83 468 517 631 ;
-C 199 ; WX 600 ; N dotaccent ; B 230 498 370 638 ;
-C 200 ; WX 600 ; N dieresis ; B 128 498 472 638 ;
-C 202 ; WX 600 ; N ring ; B 198 481 402 678 ;
-C 203 ; WX 600 ; N cedilla ; B 205 -206 387 0 ;
-C 205 ; WX 600 ; N hungarumlaut ; B 68 488 588 661 ;
-C 206 ; WX 600 ; N ogonek ; B 169 -199 400 0 ;
-C 207 ; WX 600 ; N caron ; B 103 493 497 667 ;
-C 208 ; WX 600 ; N emdash ; B -10 203 610 313 ;
-C 225 ; WX 600 ; N AE ; B -29 0 602 562 ;
-C 227 ; WX 600 ; N ordfeminine ; B 147 196 453 580 ;
-C 232 ; WX 600 ; N Lslash ; B 39 0 578 562 ;
-C 233 ; WX 600 ; N Oslash ; B 22 -22 578 584 ;
-C 234 ; WX 600 ; N OE ; B -25 0 595 562 ;
-C 235 ; WX 600 ; N ordmasculine ; B 147 196 453 580 ;
-C 241 ; WX 600 ; N ae ; B -4 -15 601 454 ;
-C 245 ; WX 600 ; N dotlessi ; B 77 0 523 439 ;
-C 248 ; WX 600 ; N lslash ; B 77 0 523 626 ;
-C 249 ; WX 600 ; N oslash ; B 30 -24 570 463 ;
-C 250 ; WX 600 ; N oe ; B -18 -15 611 454 ;
-C 251 ; WX 600 ; N germandbls ; B 22 -15 596 626 ;
-C -1 ; WX 600 ; N Idieresis ; B 77 0 523 761 ;
-C -1 ; WX 600 ; N eacute ; B 40 -15 563 661 ;
-C -1 ; WX 600 ; N abreve ; B 35 -15 570 661 ;
-C -1 ; WX 600 ; N uhungarumlaut ; B -1 -15 628 661 ;
-C -1 ; WX 600 ; N ecaron ; B 40 -15 563 667 ;
-C -1 ; WX 600 ; N Ydieresis ; B 12 0 589 761 ;
-C -1 ; WX 600 ; N divide ; B 71 16 529 500 ;
-C -1 ; WX 600 ; N Yacute ; B 12 0 589 784 ;
-C -1 ; WX 600 ; N Acircumflex ; B -9 0 609 780 ;
-C -1 ; WX 600 ; N aacute ; B 35 -15 570 661 ;
-C -1 ; WX 600 ; N Ucircumflex ; B 4 -18 596 780 ;
-C -1 ; WX 600 ; N yacute ; B -4 -142 601 661 ;
-C -1 ; WX 600 ; N scommaaccent ; B 68 -250 535 459 ;
-C -1 ; WX 600 ; N ecircumflex ; B 40 -15 563 657 ;
-C -1 ; WX 600 ; N Uring ; B 4 -18 596 801 ;
-C -1 ; WX 600 ; N Udieresis ; B 4 -18 596 761 ;
-C -1 ; WX 600 ; N aogonek ; B 35 -199 586 454 ;
-C -1 ; WX 600 ; N Uacute ; B 4 -18 596 784 ;
-C -1 ; WX 600 ; N uogonek ; B -1 -199 585 439 ;
-C -1 ; WX 600 ; N Edieresis ; B 25 0 560 761 ;
-C -1 ; WX 600 ; N Dcroat ; B 30 0 594 562 ;
-C -1 ; WX 600 ; N commaaccent ; B 205 -250 397 -57 ;
-C -1 ; WX 600 ; N copyright ; B 0 -18 600 580 ;
-C -1 ; WX 600 ; N Emacron ; B 25 0 560 708 ;
-C -1 ; WX 600 ; N ccaron ; B 40 -15 545 667 ;
-C -1 ; WX 600 ; N aring ; B 35 -15 570 678 ;
-C -1 ; WX 600 ; N Ncommaaccent ; B 8 -250 610 562 ;
-C -1 ; WX 600 ; N lacute ; B 77 0 523 801 ;
-C -1 ; WX 600 ; N agrave ; B 35 -15 570 661 ;
-C -1 ; WX 600 ; N Tcommaaccent ; B 21 -250 579 562 ;
-C -1 ; WX 600 ; N Cacute ; B 22 -18 560 784 ;
-C -1 ; WX 600 ; N atilde ; B 35 -15 570 636 ;
-C -1 ; WX 600 ; N Edotaccent ; B 25 0 560 761 ;
-C -1 ; WX 600 ; N scaron ; B 68 -17 535 667 ;
-C -1 ; WX 600 ; N scedilla ; B 68 -206 535 459 ;
-C -1 ; WX 600 ; N iacute ; B 77 0 523 661 ;
-C -1 ; WX 600 ; N lozenge ; B 66 0 534 740 ;
-C -1 ; WX 600 ; N Rcaron ; B 24 0 599 790 ;
-C -1 ; WX 600 ; N Gcommaaccent ; B 22 -250 594 580 ;
-C -1 ; WX 600 ; N ucircumflex ; B -1 -15 569 657 ;
-C -1 ; WX 600 ; N acircumflex ; B 35 -15 570 657 ;
-C -1 ; WX 600 ; N Amacron ; B -9 0 609 708 ;
-C -1 ; WX 600 ; N rcaron ; B 47 0 580 667 ;
-C -1 ; WX 600 ; N ccedilla ; B 40 -206 545 459 ;
-C -1 ; WX 600 ; N Zdotaccent ; B 62 0 539 761 ;
-C -1 ; WX 600 ; N Thorn ; B 48 0 557 562 ;
-C -1 ; WX 600 ; N Omacron ; B 22 -18 578 708 ;
-C -1 ; WX 600 ; N Racute ; B 24 0 599 784 ;
-C -1 ; WX 600 ; N Sacute ; B 47 -22 553 784 ;
-C -1 ; WX 600 ; N dcaron ; B 20 -15 727 626 ;
-C -1 ; WX 600 ; N Umacron ; B 4 -18 596 708 ;
-C -1 ; WX 600 ; N uring ; B -1 -15 569 678 ;
-C -1 ; WX 600 ; N threesuperior ; B 138 222 433 616 ;
-C -1 ; WX 600 ; N Ograve ; B 22 -18 578 784 ;
-C -1 ; WX 600 ; N Agrave ; B -9 0 609 784 ;
-C -1 ; WX 600 ; N Abreve ; B -9 0 609 784 ;
-C -1 ; WX 600 ; N multiply ; B 81 39 520 478 ;
-C -1 ; WX 600 ; N uacute ; B -1 -15 569 661 ;
-C -1 ; WX 600 ; N Tcaron ; B 21 0 579 790 ;
-C -1 ; WX 600 ; N partialdiff ; B 63 -38 537 728 ;
-C -1 ; WX 600 ; N ydieresis ; B -4 -142 601 638 ;
-C -1 ; WX 600 ; N Nacute ; B 8 -12 610 784 ;
-C -1 ; WX 600 ; N icircumflex ; B 73 0 523 657 ;
-C -1 ; WX 600 ; N Ecircumflex ; B 25 0 560 780 ;
-C -1 ; WX 600 ; N adieresis ; B 35 -15 570 638 ;
-C -1 ; WX 600 ; N edieresis ; B 40 -15 563 638 ;
-C -1 ; WX 600 ; N cacute ; B 40 -15 545 661 ;
-C -1 ; WX 600 ; N nacute ; B 18 0 592 661 ;
-C -1 ; WX 600 ; N umacron ; B -1 -15 569 585 ;
-C -1 ; WX 600 ; N Ncaron ; B 8 -12 610 790 ;
-C -1 ; WX 600 ; N Iacute ; B 77 0 523 784 ;
-C -1 ; WX 600 ; N plusminus ; B 71 24 529 515 ;
-C -1 ; WX 600 ; N brokenbar ; B 255 -175 345 675 ;
-C -1 ; WX 600 ; N registered ; B 0 -18 600 580 ;
-C -1 ; WX 600 ; N Gbreve ; B 22 -18 594 784 ;
-C -1 ; WX 600 ; N Idotaccent ; B 77 0 523 761 ;
-C -1 ; WX 600 ; N summation ; B 15 -10 586 706 ;
-C -1 ; WX 600 ; N Egrave ; B 25 0 560 784 ;
-C -1 ; WX 600 ; N racute ; B 47 0 580 661 ;
-C -1 ; WX 600 ; N omacron ; B 30 -15 570 585 ;
-C -1 ; WX 600 ; N Zacute ; B 62 0 539 784 ;
-C -1 ; WX 600 ; N Zcaron ; B 62 0 539 790 ;
-C -1 ; WX 600 ; N greaterequal ; B 26 0 523 696 ;
-C -1 ; WX 600 ; N Eth ; B 30 0 594 562 ;
-C -1 ; WX 600 ; N Ccedilla ; B 22 -206 560 580 ;
-C -1 ; WX 600 ; N lcommaaccent ; B 77 -250 523 626 ;
-C -1 ; WX 600 ; N tcaron ; B 47 -15 532 703 ;
-C -1 ; WX 600 ; N eogonek ; B 40 -199 563 454 ;
-C -1 ; WX 600 ; N Uogonek ; B 4 -199 596 562 ;
-C -1 ; WX 600 ; N Aacute ; B -9 0 609 784 ;
-C -1 ; WX 600 ; N Adieresis ; B -9 0 609 761 ;
-C -1 ; WX 600 ; N egrave ; B 40 -15 563 661 ;
-C -1 ; WX 600 ; N zacute ; B 81 0 520 661 ;
-C -1 ; WX 600 ; N iogonek ; B 77 -199 523 658 ;
-C -1 ; WX 600 ; N Oacute ; B 22 -18 578 784 ;
-C -1 ; WX 600 ; N oacute ; B 30 -15 570 661 ;
-C -1 ; WX 600 ; N amacron ; B 35 -15 570 585 ;
-C -1 ; WX 600 ; N sacute ; B 68 -17 535 661 ;
-C -1 ; WX 600 ; N idieresis ; B 77 0 523 618 ;
-C -1 ; WX 600 ; N Ocircumflex ; B 22 -18 578 780 ;
-C -1 ; WX 600 ; N Ugrave ; B 4 -18 596 784 ;
-C -1 ; WX 600 ; N Delta ; B 6 0 594 688 ;
-C -1 ; WX 600 ; N thorn ; B -14 -142 570 626 ;
-C -1 ; WX 600 ; N twosuperior ; B 143 230 436 616 ;
-C -1 ; WX 600 ; N Odieresis ; B 22 -18 578 761 ;
-C -1 ; WX 600 ; N mu ; B -1 -142 569 439 ;
-C -1 ; WX 600 ; N igrave ; B 77 0 523 661 ;
-C -1 ; WX 600 ; N ohungarumlaut ; B 30 -15 668 661 ;
-C -1 ; WX 600 ; N Eogonek ; B 25 -199 576 562 ;
-C -1 ; WX 600 ; N dcroat ; B 20 -15 591 626 ;
-C -1 ; WX 600 ; N threequarters ; B -47 -60 648 661 ;
-C -1 ; WX 600 ; N Scedilla ; B 47 -206 553 582 ;
-C -1 ; WX 600 ; N lcaron ; B 77 0 597 626 ;
-C -1 ; WX 600 ; N Kcommaaccent ; B 21 -250 599 562 ;
-C -1 ; WX 600 ; N Lacute ; B 39 0 578 784 ;
-C -1 ; WX 600 ; N trademark ; B -9 230 749 562 ;
-C -1 ; WX 600 ; N edotaccent ; B 40 -15 563 638 ;
-C -1 ; WX 600 ; N Igrave ; B 77 0 523 784 ;
-C -1 ; WX 600 ; N Imacron ; B 77 0 523 708 ;
-C -1 ; WX 600 ; N Lcaron ; B 39 0 637 562 ;
-C -1 ; WX 600 ; N onehalf ; B -47 -60 648 661 ;
-C -1 ; WX 600 ; N lessequal ; B 26 0 523 696 ;
-C -1 ; WX 600 ; N ocircumflex ; B 30 -15 570 657 ;
-C -1 ; WX 600 ; N ntilde ; B 18 0 592 636 ;
-C -1 ; WX 600 ; N Uhungarumlaut ; B 4 -18 638 784 ;
-C -1 ; WX 600 ; N Eacute ; B 25 0 560 784 ;
-C -1 ; WX 600 ; N emacron ; B 40 -15 563 585 ;
-C -1 ; WX 600 ; N gbreve ; B 30 -146 580 661 ;
-C -1 ; WX 600 ; N onequarter ; B -56 -60 656 661 ;
-C -1 ; WX 600 ; N Scaron ; B 47 -22 553 790 ;
-C -1 ; WX 600 ; N Scommaaccent ; B 47 -250 553 582 ;
-C -1 ; WX 600 ; N Ohungarumlaut ; B 22 -18 628 784 ;
-C -1 ; WX 600 ; N degree ; B 86 243 474 616 ;
-C -1 ; WX 600 ; N ograve ; B 30 -15 570 661 ;
-C -1 ; WX 600 ; N Ccaron ; B 22 -18 560 790 ;
-C -1 ; WX 600 ; N ugrave ; B -1 -15 569 661 ;
-C -1 ; WX 600 ; N radical ; B -19 -104 473 778 ;
-C -1 ; WX 600 ; N Dcaron ; B 30 0 594 790 ;
-C -1 ; WX 600 ; N rcommaaccent ; B 47 -250 580 454 ;
-C -1 ; WX 600 ; N Ntilde ; B 8 -12 610 759 ;
-C -1 ; WX 600 ; N otilde ; B 30 -15 570 636 ;
-C -1 ; WX 600 ; N Rcommaaccent ; B 24 -250 599 562 ;
-C -1 ; WX 600 ; N Lcommaaccent ; B 39 -250 578 562 ;
-C -1 ; WX 600 ; N Atilde ; B -9 0 609 759 ;
-C -1 ; WX 600 ; N Aogonek ; B -9 -199 625 562 ;
-C -1 ; WX 600 ; N Aring ; B -9 0 609 801 ;
-C -1 ; WX 600 ; N Otilde ; B 22 -18 578 759 ;
-C -1 ; WX 600 ; N zdotaccent ; B 81 0 520 638 ;
-C -1 ; WX 600 ; N Ecaron ; B 25 0 560 790 ;
-C -1 ; WX 600 ; N Iogonek ; B 77 -199 523 562 ;
-C -1 ; WX 600 ; N kcommaaccent ; B 20 -250 585 626 ;
-C -1 ; WX 600 ; N minus ; B 71 203 529 313 ;
-C -1 ; WX 600 ; N Icircumflex ; B 77 0 523 780 ;
-C -1 ; WX 600 ; N ncaron ; B 18 0 592 667 ;
-C -1 ; WX 600 ; N tcommaaccent ; B 47 -250 532 562 ;
-C -1 ; WX 600 ; N logicalnot ; B 71 103 529 413 ;
-C -1 ; WX 600 ; N odieresis ; B 30 -15 570 638 ;
-C -1 ; WX 600 ; N udieresis ; B -1 -15 569 638 ;
-C -1 ; WX 600 ; N notequal ; B 12 -47 537 563 ;
-C -1 ; WX 600 ; N gcommaaccent ; B 30 -146 580 714 ;
-C -1 ; WX 600 ; N eth ; B 58 -27 543 626 ;
-C -1 ; WX 600 ; N zcaron ; B 81 0 520 667 ;
-C -1 ; WX 600 ; N ncommaaccent ; B 18 -250 592 454 ;
-C -1 ; WX 600 ; N onesuperior ; B 153 230 447 616 ;
-C -1 ; WX 600 ; N imacron ; B 77 0 523 585 ;
-C -1 ; WX 600 ; N Euro ; B 0 0 0 0 ;
-EndCharMetrics
-EndFontMetrics
diff --git a/admin/survey/Fonts/Courier-BoldOblique.afm b/admin/survey/Fonts/Courier-BoldOblique.afm
deleted file mode 100644
index 9f365ee..0000000
--- a/admin/survey/Fonts/Courier-BoldOblique.afm
+++ /dev/null
@@ -1,342 +0,0 @@
-StartFontMetrics 4.1
-Comment Copyright (c) 1989, 1990, 1991, 1993, 1997 Adobe Systems Incorporated. All Rights Reserved.
-Comment Creation Date: Mon Jun 23 16:28:46 1997
-Comment UniqueID 43049
-Comment VMusage 17529 79244
-FontName Courier-BoldOblique
-FullName Courier Bold Oblique
-FamilyName Courier
-Weight Bold
-ItalicAngle -12
-IsFixedPitch true
-CharacterSet ExtendedRoman
-FontBBox -57 -250 869 801
-UnderlinePosition -100
-UnderlineThickness 50
-Version 003.000
-Notice Copyright (c) 1989, 1990, 1991, 1993, 1997 Adobe Systems Incorporated. All Rights Reserved.
-EncodingScheme AdobeStandardEncoding
-CapHeight 562
-XHeight 439
-Ascender 629
-Descender -157
-StdHW 84
-StdVW 106
-StartCharMetrics 315
-C 32 ; WX 600 ; N space ; B 0 0 0 0 ;
-C 33 ; WX 600 ; N exclam ; B 215 -15 495 572 ;
-C 34 ; WX 600 ; N quotedbl ; B 211 277 585 562 ;
-C 35 ; WX 600 ; N numbersign ; B 88 -45 641 651 ;
-C 36 ; WX 600 ; N dollar ; B 87 -126 630 666 ;
-C 37 ; WX 600 ; N percent ; B 101 -15 625 616 ;
-C 38 ; WX 600 ; N ampersand ; B 61 -15 595 543 ;
-C 39 ; WX 600 ; N quoteright ; B 229 277 543 562 ;
-C 40 ; WX 600 ; N parenleft ; B 265 -102 592 616 ;
-C 41 ; WX 600 ; N parenright ; B 117 -102 444 616 ;
-C 42 ; WX 600 ; N asterisk ; B 179 219 598 601 ;
-C 43 ; WX 600 ; N plus ; B 114 39 596 478 ;
-C 44 ; WX 600 ; N comma ; B 99 -111 430 174 ;
-C 45 ; WX 600 ; N hyphen ; B 143 203 567 313 ;
-C 46 ; WX 600 ; N period ; B 206 -15 427 171 ;
-C 47 ; WX 600 ; N slash ; B 90 -77 626 626 ;
-C 48 ; WX 600 ; N zero ; B 135 -15 593 616 ;
-C 49 ; WX 600 ; N one ; B 93 0 562 616 ;
-C 50 ; WX 600 ; N two ; B 61 0 594 616 ;
-C 51 ; WX 600 ; N three ; B 71 -15 571 616 ;
-C 52 ; WX 600 ; N four ; B 81 0 559 616 ;
-C 53 ; WX 600 ; N five ; B 77 -15 621 601 ;
-C 54 ; WX 600 ; N six ; B 135 -15 652 616 ;
-C 55 ; WX 600 ; N seven ; B 147 0 622 601 ;
-C 56 ; WX 600 ; N eight ; B 115 -15 604 616 ;
-C 57 ; WX 600 ; N nine ; B 75 -15 592 616 ;
-C 58 ; WX 600 ; N colon ; B 205 -15 480 425 ;
-C 59 ; WX 600 ; N semicolon ; B 99 -111 481 425 ;
-C 60 ; WX 600 ; N less ; B 120 15 613 501 ;
-C 61 ; WX 600 ; N equal ; B 96 118 614 398 ;
-C 62 ; WX 600 ; N greater ; B 97 15 589 501 ;
-C 63 ; WX 600 ; N question ; B 183 -14 592 580 ;
-C 64 ; WX 600 ; N at ; B 65 -15 642 616 ;
-C 65 ; WX 600 ; N A ; B -9 0 632 562 ;
-C 66 ; WX 600 ; N B ; B 30 0 630 562 ;
-C 67 ; WX 600 ; N C ; B 74 -18 675 580 ;
-C 68 ; WX 600 ; N D ; B 30 0 664 562 ;
-C 69 ; WX 600 ; N E ; B 25 0 670 562 ;
-C 70 ; WX 600 ; N F ; B 39 0 684 562 ;
-C 71 ; WX 600 ; N G ; B 74 -18 675 580 ;
-C 72 ; WX 600 ; N H ; B 20 0 700 562 ;
-C 73 ; WX 600 ; N I ; B 77 0 643 562 ;
-C 74 ; WX 600 ; N J ; B 58 -18 721 562 ;
-C 75 ; WX 600 ; N K ; B 21 0 692 562 ;
-C 76 ; WX 600 ; N L ; B 39 0 636 562 ;
-C 77 ; WX 600 ; N M ; B -2 0 722 562 ;
-C 78 ; WX 600 ; N N ; B 8 -12 730 562 ;
-C 79 ; WX 600 ; N O ; B 74 -18 645 580 ;
-C 80 ; WX 600 ; N P ; B 48 0 643 562 ;
-C 81 ; WX 600 ; N Q ; B 83 -138 636 580 ;
-C 82 ; WX 600 ; N R ; B 24 0 617 562 ;
-C 83 ; WX 600 ; N S ; B 54 -22 673 582 ;
-C 84 ; WX 600 ; N T ; B 86 0 679 562 ;
-C 85 ; WX 600 ; N U ; B 101 -18 716 562 ;
-C 86 ; WX 600 ; N V ; B 84 0 733 562 ;
-C 87 ; WX 600 ; N W ; B 79 0 738 562 ;
-C 88 ; WX 600 ; N X ; B 12 0 690 562 ;
-C 89 ; WX 600 ; N Y ; B 109 0 709 562 ;
-C 90 ; WX 600 ; N Z ; B 62 0 637 562 ;
-C 91 ; WX 600 ; N bracketleft ; B 223 -102 606 616 ;
-C 92 ; WX 600 ; N backslash ; B 222 -77 496 626 ;
-C 93 ; WX 600 ; N bracketright ; B 103 -102 486 616 ;
-C 94 ; WX 600 ; N asciicircum ; B 171 250 556 616 ;
-C 95 ; WX 600 ; N underscore ; B -27 -125 585 -75 ;
-C 96 ; WX 600 ; N quoteleft ; B 297 277 487 562 ;
-C 97 ; WX 600 ; N a ; B 61 -15 593 454 ;
-C 98 ; WX 600 ; N b ; B 13 -15 636 626 ;
-C 99 ; WX 600 ; N c ; B 81 -15 631 459 ;
-C 100 ; WX 600 ; N d ; B 60 -15 645 626 ;
-C 101 ; WX 600 ; N e ; B 81 -15 605 454 ;
-C 102 ; WX 600 ; N f ; B 83 0 677 626 ; L i fi ; L l fl ;
-C 103 ; WX 600 ; N g ; B 40 -146 674 454 ;
-C 104 ; WX 600 ; N h ; B 18 0 615 626 ;
-C 105 ; WX 600 ; N i ; B 77 0 546 658 ;
-C 106 ; WX 600 ; N j ; B 36 -146 580 658 ;
-C 107 ; WX 600 ; N k ; B 33 0 643 626 ;
-C 108 ; WX 600 ; N l ; B 77 0 546 626 ;
-C 109 ; WX 600 ; N m ; B -22 0 649 454 ;
-C 110 ; WX 600 ; N n ; B 18 0 615 454 ;
-C 111 ; WX 600 ; N o ; B 71 -15 622 454 ;
-C 112 ; WX 600 ; N p ; B -32 -142 622 454 ;
-C 113 ; WX 600 ; N q ; B 60 -142 685 454 ;
-C 114 ; WX 600 ; N r ; B 47 0 655 454 ;
-C 115 ; WX 600 ; N s ; B 66 -17 608 459 ;
-C 116 ; WX 600 ; N t ; B 118 -15 567 562 ;
-C 117 ; WX 600 ; N u ; B 70 -15 592 439 ;
-C 118 ; WX 600 ; N v ; B 70 0 695 439 ;
-C 119 ; WX 600 ; N w ; B 53 0 712 439 ;
-C 120 ; WX 600 ; N x ; B 6 0 671 439 ;
-C 121 ; WX 600 ; N y ; B -21 -142 695 439 ;
-C 122 ; WX 600 ; N z ; B 81 0 614 439 ;
-C 123 ; WX 600 ; N braceleft ; B 203 -102 595 616 ;
-C 124 ; WX 600 ; N bar ; B 201 -250 505 750 ;
-C 125 ; WX 600 ; N braceright ; B 114 -102 506 616 ;
-C 126 ; WX 600 ; N asciitilde ; B 120 153 590 356 ;
-C 161 ; WX 600 ; N exclamdown ; B 196 -146 477 449 ;
-C 162 ; WX 600 ; N cent ; B 121 -49 605 614 ;
-C 163 ; WX 600 ; N sterling ; B 106 -28 650 611 ;
-C 164 ; WX 600 ; N fraction ; B 22 -60 708 661 ;
-C 165 ; WX 600 ; N yen ; B 98 0 710 562 ;
-C 166 ; WX 600 ; N florin ; B -57 -131 702 616 ;
-C 167 ; WX 600 ; N section ; B 74 -70 620 580 ;
-C 168 ; WX 600 ; N currency ; B 77 49 644 517 ;
-C 169 ; WX 600 ; N quotesingle ; B 303 277 493 562 ;
-C 170 ; WX 600 ; N quotedblleft ; B 190 277 594 562 ;
-C 171 ; WX 600 ; N guillemotleft ; B 62 70 639 446 ;
-C 172 ; WX 600 ; N guilsinglleft ; B 195 70 545 446 ;
-C 173 ; WX 600 ; N guilsinglright ; B 165 70 514 446 ;
-C 174 ; WX 600 ; N fi ; B 12 0 644 626 ;
-C 175 ; WX 600 ; N fl ; B 12 0 644 626 ;
-C 177 ; WX 600 ; N endash ; B 108 203 602 313 ;
-C 178 ; WX 600 ; N dagger ; B 175 -70 586 580 ;
-C 179 ; WX 600 ; N daggerdbl ; B 121 -70 587 580 ;
-C 180 ; WX 600 ; N periodcentered ; B 248 165 461 351 ;
-C 182 ; WX 600 ; N paragraph ; B 61 -70 700 580 ;
-C 183 ; WX 600 ; N bullet ; B 196 132 523 430 ;
-C 184 ; WX 600 ; N quotesinglbase ; B 144 -142 458 143 ;
-C 185 ; WX 600 ; N quotedblbase ; B 34 -142 560 143 ;
-C 186 ; WX 600 ; N quotedblright ; B 119 277 645 562 ;
-C 187 ; WX 600 ; N guillemotright ; B 71 70 647 446 ;
-C 188 ; WX 600 ; N ellipsis ; B 35 -15 587 116 ;
-C 189 ; WX 600 ; N perthousand ; B -45 -15 743 616 ;
-C 191 ; WX 600 ; N questiondown ; B 100 -146 509 449 ;
-C 193 ; WX 600 ; N grave ; B 272 508 503 661 ;
-C 194 ; WX 600 ; N acute ; B 312 508 609 661 ;
-C 195 ; WX 600 ; N circumflex ; B 212 483 607 657 ;
-C 196 ; WX 600 ; N tilde ; B 199 493 643 636 ;
-C 197 ; WX 600 ; N macron ; B 195 505 637 585 ;
-C 198 ; WX 600 ; N breve ; B 217 468 652 631 ;
-C 199 ; WX 600 ; N dotaccent ; B 348 498 493 638 ;
-C 200 ; WX 600 ; N dieresis ; B 246 498 595 638 ;
-C 202 ; WX 600 ; N ring ; B 319 481 528 678 ;
-C 203 ; WX 600 ; N cedilla ; B 168 -206 368 0 ;
-C 205 ; WX 600 ; N hungarumlaut ; B 171 488 729 661 ;
-C 206 ; WX 600 ; N ogonek ; B 143 -199 367 0 ;
-C 207 ; WX 600 ; N caron ; B 238 493 633 667 ;
-C 208 ; WX 600 ; N emdash ; B 33 203 677 313 ;
-C 225 ; WX 600 ; N AE ; B -29 0 708 562 ;
-C 227 ; WX 600 ; N ordfeminine ; B 188 196 526 580 ;
-C 232 ; WX 600 ; N Lslash ; B 39 0 636 562 ;
-C 233 ; WX 600 ; N Oslash ; B 48 -22 673 584 ;
-C 234 ; WX 600 ; N OE ; B 26 0 701 562 ;
-C 235 ; WX 600 ; N ordmasculine ; B 188 196 543 580 ;
-C 241 ; WX 600 ; N ae ; B 21 -15 652 454 ;
-C 245 ; WX 600 ; N dotlessi ; B 77 0 546 439 ;
-C 248 ; WX 600 ; N lslash ; B 77 0 587 626 ;
-C 249 ; WX 600 ; N oslash ; B 54 -24 638 463 ;
-C 250 ; WX 600 ; N oe ; B 18 -15 662 454 ;
-C 251 ; WX 600 ; N germandbls ; B 22 -15 629 626 ;
-C -1 ; WX 600 ; N Idieresis ; B 77 0 643 761 ;
-C -1 ; WX 600 ; N eacute ; B 81 -15 609 661 ;
-C -1 ; WX 600 ; N abreve ; B 61 -15 658 661 ;
-C -1 ; WX 600 ; N uhungarumlaut ; B 70 -15 769 661 ;
-C -1 ; WX 600 ; N ecaron ; B 81 -15 633 667 ;
-C -1 ; WX 600 ; N Ydieresis ; B 109 0 709 761 ;
-C -1 ; WX 600 ; N divide ; B 114 16 596 500 ;
-C -1 ; WX 600 ; N Yacute ; B 109 0 709 784 ;
-C -1 ; WX 600 ; N Acircumflex ; B -9 0 632 780 ;
-C -1 ; WX 600 ; N aacute ; B 61 -15 609 661 ;
-C -1 ; WX 600 ; N Ucircumflex ; B 101 -18 716 780 ;
-C -1 ; WX 600 ; N yacute ; B -21 -142 695 661 ;
-C -1 ; WX 600 ; N scommaaccent ; B 66 -250 608 459 ;
-C -1 ; WX 600 ; N ecircumflex ; B 81 -15 607 657 ;
-C -1 ; WX 600 ; N Uring ; B 101 -18 716 801 ;
-C -1 ; WX 600 ; N Udieresis ; B 101 -18 716 761 ;
-C -1 ; WX 600 ; N aogonek ; B 61 -199 593 454 ;
-C -1 ; WX 600 ; N Uacute ; B 101 -18 716 784 ;
-C -1 ; WX 600 ; N uogonek ; B 70 -199 592 439 ;
-C -1 ; WX 600 ; N Edieresis ; B 25 0 670 761 ;
-C -1 ; WX 600 ; N Dcroat ; B 30 0 664 562 ;
-C -1 ; WX 600 ; N commaaccent ; B 151 -250 385 -57 ;
-C -1 ; WX 600 ; N copyright ; B 53 -18 667 580 ;
-C -1 ; WX 600 ; N Emacron ; B 25 0 670 708 ;
-C -1 ; WX 600 ; N ccaron ; B 81 -15 633 667 ;
-C -1 ; WX 600 ; N aring ; B 61 -15 593 678 ;
-C -1 ; WX 600 ; N Ncommaaccent ; B 8 -250 730 562 ;
-C -1 ; WX 600 ; N lacute ; B 77 0 639 801 ;
-C -1 ; WX 600 ; N agrave ; B 61 -15 593 661 ;
-C -1 ; WX 600 ; N Tcommaaccent ; B 86 -250 679 562 ;
-C -1 ; WX 600 ; N Cacute ; B 74 -18 675 784 ;
-C -1 ; WX 600 ; N atilde ; B 61 -15 643 636 ;
-C -1 ; WX 600 ; N Edotaccent ; B 25 0 670 761 ;
-C -1 ; WX 600 ; N scaron ; B 66 -17 633 667 ;
-C -1 ; WX 600 ; N scedilla ; B 66 -206 608 459 ;
-C -1 ; WX 600 ; N iacute ; B 77 0 609 661 ;
-C -1 ; WX 600 ; N lozenge ; B 145 0 614 740 ;
-C -1 ; WX 600 ; N Rcaron ; B 24 0 659 790 ;
-C -1 ; WX 600 ; N Gcommaaccent ; B 74 -250 675 580 ;
-C -1 ; WX 600 ; N ucircumflex ; B 70 -15 597 657 ;
-C -1 ; WX 600 ; N acircumflex ; B 61 -15 607 657 ;
-C -1 ; WX 600 ; N Amacron ; B -9 0 633 708 ;
-C -1 ; WX 600 ; N rcaron ; B 47 0 655 667 ;
-C -1 ; WX 600 ; N ccedilla ; B 81 -206 631 459 ;
-C -1 ; WX 600 ; N Zdotaccent ; B 62 0 637 761 ;
-C -1 ; WX 600 ; N Thorn ; B 48 0 620 562 ;
-C -1 ; WX 600 ; N Omacron ; B 74 -18 663 708 ;
-C -1 ; WX 600 ; N Racute ; B 24 0 665 784 ;
-C -1 ; WX 600 ; N Sacute ; B 54 -22 673 784 ;
-C -1 ; WX 600 ; N dcaron ; B 60 -15 861 626 ;
-C -1 ; WX 600 ; N Umacron ; B 101 -18 716 708 ;
-C -1 ; WX 600 ; N uring ; B 70 -15 592 678 ;
-C -1 ; WX 600 ; N threesuperior ; B 193 222 526 616 ;
-C -1 ; WX 600 ; N Ograve ; B 74 -18 645 784 ;
-C -1 ; WX 600 ; N Agrave ; B -9 0 632 784 ;
-C -1 ; WX 600 ; N Abreve ; B -9 0 684 784 ;
-C -1 ; WX 600 ; N multiply ; B 104 39 606 478 ;
-C -1 ; WX 600 ; N uacute ; B 70 -15 599 661 ;
-C -1 ; WX 600 ; N Tcaron ; B 86 0 679 790 ;
-C -1 ; WX 600 ; N partialdiff ; B 91 -38 627 728 ;
-C -1 ; WX 600 ; N ydieresis ; B -21 -142 695 638 ;
-C -1 ; WX 600 ; N Nacute ; B 8 -12 730 784 ;
-C -1 ; WX 600 ; N icircumflex ; B 77 0 577 657 ;
-C -1 ; WX 600 ; N Ecircumflex ; B 25 0 670 780 ;
-C -1 ; WX 600 ; N adieresis ; B 61 -15 595 638 ;
-C -1 ; WX 600 ; N edieresis ; B 81 -15 605 638 ;
-C -1 ; WX 600 ; N cacute ; B 81 -15 649 661 ;
-C -1 ; WX 600 ; N nacute ; B 18 0 639 661 ;
-C -1 ; WX 600 ; N umacron ; B 70 -15 637 585 ;
-C -1 ; WX 600 ; N Ncaron ; B 8 -12 730 790 ;
-C -1 ; WX 600 ; N Iacute ; B 77 0 643 784 ;
-C -1 ; WX 600 ; N plusminus ; B 76 24 614 515 ;
-C -1 ; WX 600 ; N brokenbar ; B 217 -175 489 675 ;
-C -1 ; WX 600 ; N registered ; B 53 -18 667 580 ;
-C -1 ; WX 600 ; N Gbreve ; B 74 -18 684 784 ;
-C -1 ; WX 600 ; N Idotaccent ; B 77 0 643 761 ;
-C -1 ; WX 600 ; N summation ; B 15 -10 672 706 ;
-C -1 ; WX 600 ; N Egrave ; B 25 0 670 784 ;
-C -1 ; WX 600 ; N racute ; B 47 0 655 661 ;
-C -1 ; WX 600 ; N omacron ; B 71 -15 637 585 ;
-C -1 ; WX 600 ; N Zacute ; B 62 0 665 784 ;
-C -1 ; WX 600 ; N Zcaron ; B 62 0 659 790 ;
-C -1 ; WX 600 ; N greaterequal ; B 26 0 627 696 ;
-C -1 ; WX 600 ; N Eth ; B 30 0 664 562 ;
-C -1 ; WX 600 ; N Ccedilla ; B 74 -206 675 580 ;
-C -1 ; WX 600 ; N lcommaaccent ; B 77 -250 546 626 ;
-C -1 ; WX 600 ; N tcaron ; B 118 -15 627 703 ;
-C -1 ; WX 600 ; N eogonek ; B 81 -199 605 454 ;
-C -1 ; WX 600 ; N Uogonek ; B 101 -199 716 562 ;
-C -1 ; WX 600 ; N Aacute ; B -9 0 655 784 ;
-C -1 ; WX 600 ; N Adieresis ; B -9 0 632 761 ;
-C -1 ; WX 600 ; N egrave ; B 81 -15 605 661 ;
-C -1 ; WX 600 ; N zacute ; B 81 0 614 661 ;
-C -1 ; WX 600 ; N iogonek ; B 77 -199 546 658 ;
-C -1 ; WX 600 ; N Oacute ; B 74 -18 645 784 ;
-C -1 ; WX 600 ; N oacute ; B 71 -15 649 661 ;
-C -1 ; WX 600 ; N amacron ; B 61 -15 637 585 ;
-C -1 ; WX 600 ; N sacute ; B 66 -17 609 661 ;
-C -1 ; WX 600 ; N idieresis ; B 77 0 561 618 ;
-C -1 ; WX 600 ; N Ocircumflex ; B 74 -18 645 780 ;
-C -1 ; WX 600 ; N Ugrave ; B 101 -18 716 784 ;
-C -1 ; WX 600 ; N Delta ; B 6 0 594 688 ;
-C -1 ; WX 600 ; N thorn ; B -32 -142 622 626 ;
-C -1 ; WX 600 ; N twosuperior ; B 191 230 542 616 ;
-C -1 ; WX 600 ; N Odieresis ; B 74 -18 645 761 ;
-C -1 ; WX 600 ; N mu ; B 49 -142 592 439 ;
-C -1 ; WX 600 ; N igrave ; B 77 0 546 661 ;
-C -1 ; WX 600 ; N ohungarumlaut ; B 71 -15 809 661 ;
-C -1 ; WX 600 ; N Eogonek ; B 25 -199 670 562 ;
-C -1 ; WX 600 ; N dcroat ; B 60 -15 712 626 ;
-C -1 ; WX 600 ; N threequarters ; B 8 -60 699 661 ;
-C -1 ; WX 600 ; N Scedilla ; B 54 -206 673 582 ;
-C -1 ; WX 600 ; N lcaron ; B 77 0 731 626 ;
-C -1 ; WX 600 ; N Kcommaaccent ; B 21 -250 692 562 ;
-C -1 ; WX 600 ; N Lacute ; B 39 0 636 784 ;
-C -1 ; WX 600 ; N trademark ; B 86 230 869 562 ;
-C -1 ; WX 600 ; N edotaccent ; B 81 -15 605 638 ;
-C -1 ; WX 600 ; N Igrave ; B 77 0 643 784 ;
-C -1 ; WX 600 ; N Imacron ; B 77 0 663 708 ;
-C -1 ; WX 600 ; N Lcaron ; B 39 0 757 562 ;
-C -1 ; WX 600 ; N onehalf ; B 22 -60 716 661 ;
-C -1 ; WX 600 ; N lessequal ; B 26 0 671 696 ;
-C -1 ; WX 600 ; N ocircumflex ; B 71 -15 622 657 ;
-C -1 ; WX 600 ; N ntilde ; B 18 0 643 636 ;
-C -1 ; WX 600 ; N Uhungarumlaut ; B 101 -18 805 784 ;
-C -1 ; WX 600 ; N Eacute ; B 25 0 670 784 ;
-C -1 ; WX 600 ; N emacron ; B 81 -15 637 585 ;
-C -1 ; WX 600 ; N gbreve ; B 40 -146 674 661 ;
-C -1 ; WX 600 ; N onequarter ; B 13 -60 707 661 ;
-C -1 ; WX 600 ; N Scaron ; B 54 -22 689 790 ;
-C -1 ; WX 600 ; N Scommaaccent ; B 54 -250 673 582 ;
-C -1 ; WX 600 ; N Ohungarumlaut ; B 74 -18 795 784 ;
-C -1 ; WX 600 ; N degree ; B 173 243 570 616 ;
-C -1 ; WX 600 ; N ograve ; B 71 -15 622 661 ;
-C -1 ; WX 600 ; N Ccaron ; B 74 -18 689 790 ;
-C -1 ; WX 600 ; N ugrave ; B 70 -15 592 661 ;
-C -1 ; WX 600 ; N radical ; B 67 -104 635 778 ;
-C -1 ; WX 600 ; N Dcaron ; B 30 0 664 790 ;
-C -1 ; WX 600 ; N rcommaaccent ; B 47 -250 655 454 ;
-C -1 ; WX 600 ; N Ntilde ; B 8 -12 730 759 ;
-C -1 ; WX 600 ; N otilde ; B 71 -15 643 636 ;
-C -1 ; WX 600 ; N Rcommaaccent ; B 24 -250 617 562 ;
-C -1 ; WX 600 ; N Lcommaaccent ; B 39 -250 636 562 ;
-C -1 ; WX 600 ; N Atilde ; B -9 0 669 759 ;
-C -1 ; WX 600 ; N Aogonek ; B -9 -199 632 562 ;
-C -1 ; WX 600 ; N Aring ; B -9 0 632 801 ;
-C -1 ; WX 600 ; N Otilde ; B 74 -18 669 759 ;
-C -1 ; WX 600 ; N zdotaccent ; B 81 0 614 638 ;
-C -1 ; WX 600 ; N Ecaron ; B 25 0 670 790 ;
-C -1 ; WX 600 ; N Iogonek ; B 77 -199 643 562 ;
-C -1 ; WX 600 ; N kcommaaccent ; B 33 -250 643 626 ;
-C -1 ; WX 600 ; N minus ; B 114 203 596 313 ;
-C -1 ; WX 600 ; N Icircumflex ; B 77 0 643 780 ;
-C -1 ; WX 600 ; N ncaron ; B 18 0 633 667 ;
-C -1 ; WX 600 ; N tcommaaccent ; B 118 -250 567 562 ;
-C -1 ; WX 600 ; N logicalnot ; B 135 103 617 413 ;
-C -1 ; WX 600 ; N odieresis ; B 71 -15 622 638 ;
-C -1 ; WX 600 ; N udieresis ; B 70 -15 595 638 ;
-C -1 ; WX 600 ; N notequal ; B 30 -47 626 563 ;
-C -1 ; WX 600 ; N gcommaaccent ; B 40 -146 674 714 ;
-C -1 ; WX 600 ; N eth ; B 93 -27 661 626 ;
-C -1 ; WX 600 ; N zcaron ; B 81 0 643 667 ;
-C -1 ; WX 600 ; N ncommaaccent ; B 18 -250 615 454 ;
-C -1 ; WX 600 ; N onesuperior ; B 212 230 514 616 ;
-C -1 ; WX 600 ; N imacron ; B 77 0 575 585 ;
-C -1 ; WX 600 ; N Euro ; B 0 0 0 0 ;
-EndCharMetrics
-EndFontMetrics
diff --git a/admin/survey/Fonts/Courier-Oblique.afm b/admin/survey/Fonts/Courier-Oblique.afm
deleted file mode 100644
index acacb3d..0000000
--- a/admin/survey/Fonts/Courier-Oblique.afm
+++ /dev/null
@@ -1,342 +0,0 @@
-StartFontMetrics 4.1
-Comment Copyright (c) 1989, 1990, 1991, 1992, 1993, 1997 Adobe Systems Incorporated. All Rights Reserved.
-Comment Creation Date: Thu May 1 17:37:52 1997
-Comment UniqueID 43051
-Comment VMusage 16248 75829
-FontName Courier-Oblique
-FullName Courier Oblique
-FamilyName Courier
-Weight Medium
-ItalicAngle -12
-IsFixedPitch true
-CharacterSet ExtendedRoman
-FontBBox -27 -250 849 805
-UnderlinePosition -100
-UnderlineThickness 50
-Version 003.000
-Notice Copyright (c) 1989, 1990, 1991, 1992, 1993, 1997 Adobe Systems Incorporated. All Rights Reserved.
-EncodingScheme AdobeStandardEncoding
-CapHeight 562
-XHeight 426
-Ascender 629
-Descender -157
-StdHW 51
-StdVW 51
-StartCharMetrics 315
-C 32 ; WX 600 ; N space ; B 0 0 0 0 ;
-C 33 ; WX 600 ; N exclam ; B 243 -15 464 572 ;
-C 34 ; WX 600 ; N quotedbl ; B 273 328 532 562 ;
-C 35 ; WX 600 ; N numbersign ; B 133 -32 596 639 ;
-C 36 ; WX 600 ; N dollar ; B 108 -126 596 662 ;
-C 37 ; WX 600 ; N percent ; B 134 -15 599 622 ;
-C 38 ; WX 600 ; N ampersand ; B 87 -15 580 543 ;
-C 39 ; WX 600 ; N quoteright ; B 283 328 495 562 ;
-C 40 ; WX 600 ; N parenleft ; B 313 -108 572 622 ;
-C 41 ; WX 600 ; N parenright ; B 137 -108 396 622 ;
-C 42 ; WX 600 ; N asterisk ; B 212 257 580 607 ;
-C 43 ; WX 600 ; N plus ; B 129 44 580 470 ;
-C 44 ; WX 600 ; N comma ; B 157 -112 370 122 ;
-C 45 ; WX 600 ; N hyphen ; B 152 231 558 285 ;
-C 46 ; WX 600 ; N period ; B 238 -15 382 109 ;
-C 47 ; WX 600 ; N slash ; B 112 -80 604 629 ;
-C 48 ; WX 600 ; N zero ; B 154 -15 575 622 ;
-C 49 ; WX 600 ; N one ; B 98 0 515 622 ;
-C 50 ; WX 600 ; N two ; B 70 0 568 622 ;
-C 51 ; WX 600 ; N three ; B 82 -15 538 622 ;
-C 52 ; WX 600 ; N four ; B 108 0 541 622 ;
-C 53 ; WX 600 ; N five ; B 99 -15 589 607 ;
-C 54 ; WX 600 ; N six ; B 155 -15 629 622 ;
-C 55 ; WX 600 ; N seven ; B 182 0 612 607 ;
-C 56 ; WX 600 ; N eight ; B 132 -15 588 622 ;
-C 57 ; WX 600 ; N nine ; B 93 -15 574 622 ;
-C 58 ; WX 600 ; N colon ; B 238 -15 441 385 ;
-C 59 ; WX 600 ; N semicolon ; B 157 -112 441 385 ;
-C 60 ; WX 600 ; N less ; B 96 42 610 472 ;
-C 61 ; WX 600 ; N equal ; B 109 138 600 376 ;
-C 62 ; WX 600 ; N greater ; B 85 42 599 472 ;
-C 63 ; WX 600 ; N question ; B 222 -15 583 572 ;
-C 64 ; WX 600 ; N at ; B 127 -15 582 622 ;
-C 65 ; WX 600 ; N A ; B 3 0 607 562 ;
-C 66 ; WX 600 ; N B ; B 43 0 616 562 ;
-C 67 ; WX 600 ; N C ; B 93 -18 655 580 ;
-C 68 ; WX 600 ; N D ; B 43 0 645 562 ;
-C 69 ; WX 600 ; N E ; B 53 0 660 562 ;
-C 70 ; WX 600 ; N F ; B 53 0 660 562 ;
-C 71 ; WX 600 ; N G ; B 83 -18 645 580 ;
-C 72 ; WX 600 ; N H ; B 32 0 687 562 ;
-C 73 ; WX 600 ; N I ; B 96 0 623 562 ;
-C 74 ; WX 600 ; N J ; B 52 -18 685 562 ;
-C 75 ; WX 600 ; N K ; B 38 0 671 562 ;
-C 76 ; WX 600 ; N L ; B 47 0 607 562 ;
-C 77 ; WX 600 ; N M ; B 4 0 715 562 ;
-C 78 ; WX 600 ; N N ; B 7 -13 712 562 ;
-C 79 ; WX 600 ; N O ; B 94 -18 625 580 ;
-C 80 ; WX 600 ; N P ; B 79 0 644 562 ;
-C 81 ; WX 600 ; N Q ; B 95 -138 625 580 ;
-C 82 ; WX 600 ; N R ; B 38 0 598 562 ;
-C 83 ; WX 600 ; N S ; B 76 -20 650 580 ;
-C 84 ; WX 600 ; N T ; B 108 0 665 562 ;
-C 85 ; WX 600 ; N U ; B 125 -18 702 562 ;
-C 86 ; WX 600 ; N V ; B 105 -13 723 562 ;
-C 87 ; WX 600 ; N W ; B 106 -13 722 562 ;
-C 88 ; WX 600 ; N X ; B 23 0 675 562 ;
-C 89 ; WX 600 ; N Y ; B 133 0 695 562 ;
-C 90 ; WX 600 ; N Z ; B 86 0 610 562 ;
-C 91 ; WX 600 ; N bracketleft ; B 246 -108 574 622 ;
-C 92 ; WX 600 ; N backslash ; B 249 -80 468 629 ;
-C 93 ; WX 600 ; N bracketright ; B 135 -108 463 622 ;
-C 94 ; WX 600 ; N asciicircum ; B 175 354 587 622 ;
-C 95 ; WX 600 ; N underscore ; B -27 -125 584 -75 ;
-C 96 ; WX 600 ; N quoteleft ; B 343 328 457 562 ;
-C 97 ; WX 600 ; N a ; B 76 -15 569 441 ;
-C 98 ; WX 600 ; N b ; B 29 -15 625 629 ;
-C 99 ; WX 600 ; N c ; B 106 -15 608 441 ;
-C 100 ; WX 600 ; N d ; B 85 -15 640 629 ;
-C 101 ; WX 600 ; N e ; B 106 -15 598 441 ;
-C 102 ; WX 600 ; N f ; B 114 0 662 629 ; L i fi ; L l fl ;
-C 103 ; WX 600 ; N g ; B 61 -157 657 441 ;
-C 104 ; WX 600 ; N h ; B 33 0 592 629 ;
-C 105 ; WX 600 ; N i ; B 95 0 515 657 ;
-C 106 ; WX 600 ; N j ; B 52 -157 550 657 ;
-C 107 ; WX 600 ; N k ; B 58 0 633 629 ;
-C 108 ; WX 600 ; N l ; B 95 0 515 629 ;
-C 109 ; WX 600 ; N m ; B -5 0 615 441 ;
-C 110 ; WX 600 ; N n ; B 26 0 585 441 ;
-C 111 ; WX 600 ; N o ; B 102 -15 588 441 ;
-C 112 ; WX 600 ; N p ; B -24 -157 605 441 ;
-C 113 ; WX 600 ; N q ; B 85 -157 682 441 ;
-C 114 ; WX 600 ; N r ; B 60 0 636 441 ;
-C 115 ; WX 600 ; N s ; B 78 -15 584 441 ;
-C 116 ; WX 600 ; N t ; B 167 -15 561 561 ;
-C 117 ; WX 600 ; N u ; B 101 -15 572 426 ;
-C 118 ; WX 600 ; N v ; B 90 -10 681 426 ;
-C 119 ; WX 600 ; N w ; B 76 -10 695 426 ;
-C 120 ; WX 600 ; N x ; B 20 0 655 426 ;
-C 121 ; WX 600 ; N y ; B -4 -157 683 426 ;
-C 122 ; WX 600 ; N z ; B 99 0 593 426 ;
-C 123 ; WX 600 ; N braceleft ; B 233 -108 569 622 ;
-C 124 ; WX 600 ; N bar ; B 222 -250 485 750 ;
-C 125 ; WX 600 ; N braceright ; B 140 -108 477 622 ;
-C 126 ; WX 600 ; N asciitilde ; B 116 197 600 320 ;
-C 161 ; WX 600 ; N exclamdown ; B 225 -157 445 430 ;
-C 162 ; WX 600 ; N cent ; B 151 -49 588 614 ;
-C 163 ; WX 600 ; N sterling ; B 124 -21 621 611 ;
-C 164 ; WX 600 ; N fraction ; B 84 -57 646 665 ;
-C 165 ; WX 600 ; N yen ; B 120 0 693 562 ;
-C 166 ; WX 600 ; N florin ; B -26 -143 671 622 ;
-C 167 ; WX 600 ; N section ; B 104 -78 590 580 ;
-C 168 ; WX 600 ; N currency ; B 94 58 628 506 ;
-C 169 ; WX 600 ; N quotesingle ; B 345 328 460 562 ;
-C 170 ; WX 600 ; N quotedblleft ; B 262 328 541 562 ;
-C 171 ; WX 600 ; N guillemotleft ; B 92 70 652 446 ;
-C 172 ; WX 600 ; N guilsinglleft ; B 204 70 540 446 ;
-C 173 ; WX 600 ; N guilsinglright ; B 170 70 506 446 ;
-C 174 ; WX 600 ; N fi ; B 3 0 619 629 ;
-C 175 ; WX 600 ; N fl ; B 3 0 619 629 ;
-C 177 ; WX 600 ; N endash ; B 124 231 586 285 ;
-C 178 ; WX 600 ; N dagger ; B 217 -78 546 580 ;
-C 179 ; WX 600 ; N daggerdbl ; B 163 -78 546 580 ;
-C 180 ; WX 600 ; N periodcentered ; B 275 189 434 327 ;
-C 182 ; WX 600 ; N paragraph ; B 100 -78 630 562 ;
-C 183 ; WX 600 ; N bullet ; B 224 130 485 383 ;
-C 184 ; WX 600 ; N quotesinglbase ; B 185 -134 397 100 ;
-C 185 ; WX 600 ; N quotedblbase ; B 115 -134 478 100 ;
-C 186 ; WX 600 ; N quotedblright ; B 213 328 576 562 ;
-C 187 ; WX 600 ; N guillemotright ; B 58 70 618 446 ;
-C 188 ; WX 600 ; N ellipsis ; B 46 -15 575 111 ;
-C 189 ; WX 600 ; N perthousand ; B 59 -15 627 622 ;
-C 191 ; WX 600 ; N questiondown ; B 105 -157 466 430 ;
-C 193 ; WX 600 ; N grave ; B 294 497 484 672 ;
-C 194 ; WX 600 ; N acute ; B 348 497 612 672 ;
-C 195 ; WX 600 ; N circumflex ; B 229 477 581 654 ;
-C 196 ; WX 600 ; N tilde ; B 212 489 629 606 ;
-C 197 ; WX 600 ; N macron ; B 232 525 600 565 ;
-C 198 ; WX 600 ; N breve ; B 279 501 576 609 ;
-C 199 ; WX 600 ; N dotaccent ; B 373 537 478 640 ;
-C 200 ; WX 600 ; N dieresis ; B 272 537 579 640 ;
-C 202 ; WX 600 ; N ring ; B 332 463 500 627 ;
-C 203 ; WX 600 ; N cedilla ; B 197 -151 344 10 ;
-C 205 ; WX 600 ; N hungarumlaut ; B 239 497 683 672 ;
-C 206 ; WX 600 ; N ogonek ; B 189 -172 377 4 ;
-C 207 ; WX 600 ; N caron ; B 262 492 614 669 ;
-C 208 ; WX 600 ; N emdash ; B 49 231 661 285 ;
-C 225 ; WX 600 ; N AE ; B 3 0 655 562 ;
-C 227 ; WX 600 ; N ordfeminine ; B 209 249 512 580 ;
-C 232 ; WX 600 ; N Lslash ; B 47 0 607 562 ;
-C 233 ; WX 600 ; N Oslash ; B 94 -80 625 629 ;
-C 234 ; WX 600 ; N OE ; B 59 0 672 562 ;
-C 235 ; WX 600 ; N ordmasculine ; B 210 249 535 580 ;
-C 241 ; WX 600 ; N ae ; B 41 -15 626 441 ;
-C 245 ; WX 600 ; N dotlessi ; B 95 0 515 426 ;
-C 248 ; WX 600 ; N lslash ; B 95 0 587 629 ;
-C 249 ; WX 600 ; N oslash ; B 102 -80 588 506 ;
-C 250 ; WX 600 ; N oe ; B 54 -15 615 441 ;
-C 251 ; WX 600 ; N germandbls ; B 48 -15 617 629 ;
-C -1 ; WX 600 ; N Idieresis ; B 96 0 623 753 ;
-C -1 ; WX 600 ; N eacute ; B 106 -15 612 672 ;
-C -1 ; WX 600 ; N abreve ; B 76 -15 576 609 ;
-C -1 ; WX 600 ; N uhungarumlaut ; B 101 -15 723 672 ;
-C -1 ; WX 600 ; N ecaron ; B 106 -15 614 669 ;
-C -1 ; WX 600 ; N Ydieresis ; B 133 0 695 753 ;
-C -1 ; WX 600 ; N divide ; B 136 48 573 467 ;
-C -1 ; WX 600 ; N Yacute ; B 133 0 695 805 ;
-C -1 ; WX 600 ; N Acircumflex ; B 3 0 607 787 ;
-C -1 ; WX 600 ; N aacute ; B 76 -15 612 672 ;
-C -1 ; WX 600 ; N Ucircumflex ; B 125 -18 702 787 ;
-C -1 ; WX 600 ; N yacute ; B -4 -157 683 672 ;
-C -1 ; WX 600 ; N scommaaccent ; B 78 -250 584 441 ;
-C -1 ; WX 600 ; N ecircumflex ; B 106 -15 598 654 ;
-C -1 ; WX 600 ; N Uring ; B 125 -18 702 760 ;
-C -1 ; WX 600 ; N Udieresis ; B 125 -18 702 753 ;
-C -1 ; WX 600 ; N aogonek ; B 76 -172 569 441 ;
-C -1 ; WX 600 ; N Uacute ; B 125 -18 702 805 ;
-C -1 ; WX 600 ; N uogonek ; B 101 -172 572 426 ;
-C -1 ; WX 600 ; N Edieresis ; B 53 0 660 753 ;
-C -1 ; WX 600 ; N Dcroat ; B 43 0 645 562 ;
-C -1 ; WX 600 ; N commaaccent ; B 145 -250 323 -58 ;
-C -1 ; WX 600 ; N copyright ; B 53 -18 667 580 ;
-C -1 ; WX 600 ; N Emacron ; B 53 0 660 698 ;
-C -1 ; WX 600 ; N ccaron ; B 106 -15 614 669 ;
-C -1 ; WX 600 ; N aring ; B 76 -15 569 627 ;
-C -1 ; WX 600 ; N Ncommaaccent ; B 7 -250 712 562 ;
-C -1 ; WX 600 ; N lacute ; B 95 0 640 805 ;
-C -1 ; WX 600 ; N agrave ; B 76 -15 569 672 ;
-C -1 ; WX 600 ; N Tcommaaccent ; B 108 -250 665 562 ;
-C -1 ; WX 600 ; N Cacute ; B 93 -18 655 805 ;
-C -1 ; WX 600 ; N atilde ; B 76 -15 629 606 ;
-C -1 ; WX 600 ; N Edotaccent ; B 53 0 660 753 ;
-C -1 ; WX 600 ; N scaron ; B 78 -15 614 669 ;
-C -1 ; WX 600 ; N scedilla ; B 78 -151 584 441 ;
-C -1 ; WX 600 ; N iacute ; B 95 0 612 672 ;
-C -1 ; WX 600 ; N lozenge ; B 94 0 519 706 ;
-C -1 ; WX 600 ; N Rcaron ; B 38 0 642 802 ;
-C -1 ; WX 600 ; N Gcommaaccent ; B 83 -250 645 580 ;
-C -1 ; WX 600 ; N ucircumflex ; B 101 -15 572 654 ;
-C -1 ; WX 600 ; N acircumflex ; B 76 -15 581 654 ;
-C -1 ; WX 600 ; N Amacron ; B 3 0 607 698 ;
-C -1 ; WX 600 ; N rcaron ; B 60 0 636 669 ;
-C -1 ; WX 600 ; N ccedilla ; B 106 -151 614 441 ;
-C -1 ; WX 600 ; N Zdotaccent ; B 86 0 610 753 ;
-C -1 ; WX 600 ; N Thorn ; B 79 0 606 562 ;
-C -1 ; WX 600 ; N Omacron ; B 94 -18 628 698 ;
-C -1 ; WX 600 ; N Racute ; B 38 0 670 805 ;
-C -1 ; WX 600 ; N Sacute ; B 76 -20 650 805 ;
-C -1 ; WX 600 ; N dcaron ; B 85 -15 849 629 ;
-C -1 ; WX 600 ; N Umacron ; B 125 -18 702 698 ;
-C -1 ; WX 600 ; N uring ; B 101 -15 572 627 ;
-C -1 ; WX 600 ; N threesuperior ; B 213 240 501 622 ;
-C -1 ; WX 600 ; N Ograve ; B 94 -18 625 805 ;
-C -1 ; WX 600 ; N Agrave ; B 3 0 607 805 ;
-C -1 ; WX 600 ; N Abreve ; B 3 0 607 732 ;
-C -1 ; WX 600 ; N multiply ; B 103 43 607 470 ;
-C -1 ; WX 600 ; N uacute ; B 101 -15 602 672 ;
-C -1 ; WX 600 ; N Tcaron ; B 108 0 665 802 ;
-C -1 ; WX 600 ; N partialdiff ; B 45 -38 546 710 ;
-C -1 ; WX 600 ; N ydieresis ; B -4 -157 683 620 ;
-C -1 ; WX 600 ; N Nacute ; B 7 -13 712 805 ;
-C -1 ; WX 600 ; N icircumflex ; B 95 0 551 654 ;
-C -1 ; WX 600 ; N Ecircumflex ; B 53 0 660 787 ;
-C -1 ; WX 600 ; N adieresis ; B 76 -15 575 620 ;
-C -1 ; WX 600 ; N edieresis ; B 106 -15 598 620 ;
-C -1 ; WX 600 ; N cacute ; B 106 -15 612 672 ;
-C -1 ; WX 600 ; N nacute ; B 26 0 602 672 ;
-C -1 ; WX 600 ; N umacron ; B 101 -15 600 565 ;
-C -1 ; WX 600 ; N Ncaron ; B 7 -13 712 802 ;
-C -1 ; WX 600 ; N Iacute ; B 96 0 640 805 ;
-C -1 ; WX 600 ; N plusminus ; B 96 44 594 558 ;
-C -1 ; WX 600 ; N brokenbar ; B 238 -175 469 675 ;
-C -1 ; WX 600 ; N registered ; B 53 -18 667 580 ;
-C -1 ; WX 600 ; N Gbreve ; B 83 -18 645 732 ;
-C -1 ; WX 600 ; N Idotaccent ; B 96 0 623 753 ;
-C -1 ; WX 600 ; N summation ; B 15 -10 670 706 ;
-C -1 ; WX 600 ; N Egrave ; B 53 0 660 805 ;
-C -1 ; WX 600 ; N racute ; B 60 0 636 672 ;
-C -1 ; WX 600 ; N omacron ; B 102 -15 600 565 ;
-C -1 ; WX 600 ; N Zacute ; B 86 0 670 805 ;
-C -1 ; WX 600 ; N Zcaron ; B 86 0 642 802 ;
-C -1 ; WX 600 ; N greaterequal ; B 98 0 594 710 ;
-C -1 ; WX 600 ; N Eth ; B 43 0 645 562 ;
-C -1 ; WX 600 ; N Ccedilla ; B 93 -151 658 580 ;
-C -1 ; WX 600 ; N lcommaaccent ; B 95 -250 515 629 ;
-C -1 ; WX 600 ; N tcaron ; B 167 -15 587 717 ;
-C -1 ; WX 600 ; N eogonek ; B 106 -172 598 441 ;
-C -1 ; WX 600 ; N Uogonek ; B 124 -172 702 562 ;
-C -1 ; WX 600 ; N Aacute ; B 3 0 660 805 ;
-C -1 ; WX 600 ; N Adieresis ; B 3 0 607 753 ;
-C -1 ; WX 600 ; N egrave ; B 106 -15 598 672 ;
-C -1 ; WX 600 ; N zacute ; B 99 0 612 672 ;
-C -1 ; WX 600 ; N iogonek ; B 95 -172 515 657 ;
-C -1 ; WX 600 ; N Oacute ; B 94 -18 640 805 ;
-C -1 ; WX 600 ; N oacute ; B 102 -15 612 672 ;
-C -1 ; WX 600 ; N amacron ; B 76 -15 600 565 ;
-C -1 ; WX 600 ; N sacute ; B 78 -15 612 672 ;
-C -1 ; WX 600 ; N idieresis ; B 95 0 545 620 ;
-C -1 ; WX 600 ; N Ocircumflex ; B 94 -18 625 787 ;
-C -1 ; WX 600 ; N Ugrave ; B 125 -18 702 805 ;
-C -1 ; WX 600 ; N Delta ; B 6 0 598 688 ;
-C -1 ; WX 600 ; N thorn ; B -24 -157 605 629 ;
-C -1 ; WX 600 ; N twosuperior ; B 230 249 535 622 ;
-C -1 ; WX 600 ; N Odieresis ; B 94 -18 625 753 ;
-C -1 ; WX 600 ; N mu ; B 72 -157 572 426 ;
-C -1 ; WX 600 ; N igrave ; B 95 0 515 672 ;
-C -1 ; WX 600 ; N ohungarumlaut ; B 102 -15 723 672 ;
-C -1 ; WX 600 ; N Eogonek ; B 53 -172 660 562 ;
-C -1 ; WX 600 ; N dcroat ; B 85 -15 704 629 ;
-C -1 ; WX 600 ; N threequarters ; B 73 -56 659 666 ;
-C -1 ; WX 600 ; N Scedilla ; B 76 -151 650 580 ;
-C -1 ; WX 600 ; N lcaron ; B 95 0 667 629 ;
-C -1 ; WX 600 ; N Kcommaaccent ; B 38 -250 671 562 ;
-C -1 ; WX 600 ; N Lacute ; B 47 0 607 805 ;
-C -1 ; WX 600 ; N trademark ; B 75 263 742 562 ;
-C -1 ; WX 600 ; N edotaccent ; B 106 -15 598 620 ;
-C -1 ; WX 600 ; N Igrave ; B 96 0 623 805 ;
-C -1 ; WX 600 ; N Imacron ; B 96 0 628 698 ;
-C -1 ; WX 600 ; N Lcaron ; B 47 0 632 562 ;
-C -1 ; WX 600 ; N onehalf ; B 65 -57 669 665 ;
-C -1 ; WX 600 ; N lessequal ; B 98 0 645 710 ;
-C -1 ; WX 600 ; N ocircumflex ; B 102 -15 588 654 ;
-C -1 ; WX 600 ; N ntilde ; B 26 0 629 606 ;
-C -1 ; WX 600 ; N Uhungarumlaut ; B 125 -18 761 805 ;
-C -1 ; WX 600 ; N Eacute ; B 53 0 670 805 ;
-C -1 ; WX 600 ; N emacron ; B 106 -15 600 565 ;
-C -1 ; WX 600 ; N gbreve ; B 61 -157 657 609 ;
-C -1 ; WX 600 ; N onequarter ; B 65 -57 674 665 ;
-C -1 ; WX 600 ; N Scaron ; B 76 -20 672 802 ;
-C -1 ; WX 600 ; N Scommaaccent ; B 76 -250 650 580 ;
-C -1 ; WX 600 ; N Ohungarumlaut ; B 94 -18 751 805 ;
-C -1 ; WX 600 ; N degree ; B 214 269 576 622 ;
-C -1 ; WX 600 ; N ograve ; B 102 -15 588 672 ;
-C -1 ; WX 600 ; N Ccaron ; B 93 -18 672 802 ;
-C -1 ; WX 600 ; N ugrave ; B 101 -15 572 672 ;
-C -1 ; WX 600 ; N radical ; B 85 -15 765 792 ;
-C -1 ; WX 600 ; N Dcaron ; B 43 0 645 802 ;
-C -1 ; WX 600 ; N rcommaaccent ; B 60 -250 636 441 ;
-C -1 ; WX 600 ; N Ntilde ; B 7 -13 712 729 ;
-C -1 ; WX 600 ; N otilde ; B 102 -15 629 606 ;
-C -1 ; WX 600 ; N Rcommaaccent ; B 38 -250 598 562 ;
-C -1 ; WX 600 ; N Lcommaaccent ; B 47 -250 607 562 ;
-C -1 ; WX 600 ; N Atilde ; B 3 0 655 729 ;
-C -1 ; WX 600 ; N Aogonek ; B 3 -172 607 562 ;
-C -1 ; WX 600 ; N Aring ; B 3 0 607 750 ;
-C -1 ; WX 600 ; N Otilde ; B 94 -18 655 729 ;
-C -1 ; WX 600 ; N zdotaccent ; B 99 0 593 620 ;
-C -1 ; WX 600 ; N Ecaron ; B 53 0 660 802 ;
-C -1 ; WX 600 ; N Iogonek ; B 96 -172 623 562 ;
-C -1 ; WX 600 ; N kcommaaccent ; B 58 -250 633 629 ;
-C -1 ; WX 600 ; N minus ; B 129 232 580 283 ;
-C -1 ; WX 600 ; N Icircumflex ; B 96 0 623 787 ;
-C -1 ; WX 600 ; N ncaron ; B 26 0 614 669 ;
-C -1 ; WX 600 ; N tcommaaccent ; B 165 -250 561 561 ;
-C -1 ; WX 600 ; N logicalnot ; B 155 108 591 369 ;
-C -1 ; WX 600 ; N odieresis ; B 102 -15 588 620 ;
-C -1 ; WX 600 ; N udieresis ; B 101 -15 575 620 ;
-C -1 ; WX 600 ; N notequal ; B 43 -16 621 529 ;
-C -1 ; WX 600 ; N gcommaaccent ; B 61 -157 657 708 ;
-C -1 ; WX 600 ; N eth ; B 102 -15 639 629 ;
-C -1 ; WX 600 ; N zcaron ; B 99 0 624 669 ;
-C -1 ; WX 600 ; N ncommaaccent ; B 26 -250 585 441 ;
-C -1 ; WX 600 ; N onesuperior ; B 231 249 491 622 ;
-C -1 ; WX 600 ; N imacron ; B 95 0 543 565 ;
-C -1 ; WX 600 ; N Euro ; B 0 0 0 0 ;
-EndCharMetrics
-EndFontMetrics
diff --git a/admin/survey/Fonts/Courier.afm b/admin/survey/Fonts/Courier.afm
deleted file mode 100644
index be84b6b..0000000
--- a/admin/survey/Fonts/Courier.afm
+++ /dev/null
@@ -1,342 +0,0 @@
-StartFontMetrics 4.1
-Comment Copyright (c) 1989, 1990, 1991, 1992, 1993, 1997 Adobe Systems Incorporated. All Rights Reserved.
-Comment Creation Date: Thu May 1 17:27:09 1997
-Comment UniqueID 43050
-Comment VMusage 39754 50779
-FontName Courier
-FullName Courier
-FamilyName Courier
-Weight Medium
-ItalicAngle 0
-IsFixedPitch true
-CharacterSet ExtendedRoman
-FontBBox -23 -250 715 805
-UnderlinePosition -100
-UnderlineThickness 50
-Version 003.000
-Notice Copyright (c) 1989, 1990, 1991, 1992, 1993, 1997 Adobe Systems Incorporated. All Rights Reserved.
-EncodingScheme AdobeStandardEncoding
-CapHeight 562
-XHeight 426
-Ascender 629
-Descender -157
-StdHW 51
-StdVW 51
-StartCharMetrics 315
-C 32 ; WX 600 ; N space ; B 0 0 0 0 ;
-C 33 ; WX 600 ; N exclam ; B 236 -15 364 572 ;
-C 34 ; WX 600 ; N quotedbl ; B 187 328 413 562 ;
-C 35 ; WX 600 ; N numbersign ; B 93 -32 507 639 ;
-C 36 ; WX 600 ; N dollar ; B 105 -126 496 662 ;
-C 37 ; WX 600 ; N percent ; B 81 -15 518 622 ;
-C 38 ; WX 600 ; N ampersand ; B 63 -15 538 543 ;
-C 39 ; WX 600 ; N quoteright ; B 213 328 376 562 ;
-C 40 ; WX 600 ; N parenleft ; B 269 -108 440 622 ;
-C 41 ; WX 600 ; N parenright ; B 160 -108 331 622 ;
-C 42 ; WX 600 ; N asterisk ; B 116 257 484 607 ;
-C 43 ; WX 600 ; N plus ; B 80 44 520 470 ;
-C 44 ; WX 600 ; N comma ; B 181 -112 344 122 ;
-C 45 ; WX 600 ; N hyphen ; B 103 231 497 285 ;
-C 46 ; WX 600 ; N period ; B 229 -15 371 109 ;
-C 47 ; WX 600 ; N slash ; B 125 -80 475 629 ;
-C 48 ; WX 600 ; N zero ; B 106 -15 494 622 ;
-C 49 ; WX 600 ; N one ; B 96 0 505 622 ;
-C 50 ; WX 600 ; N two ; B 70 0 471 622 ;
-C 51 ; WX 600 ; N three ; B 75 -15 466 622 ;
-C 52 ; WX 600 ; N four ; B 78 0 500 622 ;
-C 53 ; WX 600 ; N five ; B 92 -15 497 607 ;
-C 54 ; WX 600 ; N six ; B 111 -15 497 622 ;
-C 55 ; WX 600 ; N seven ; B 82 0 483 607 ;
-C 56 ; WX 600 ; N eight ; B 102 -15 498 622 ;
-C 57 ; WX 600 ; N nine ; B 96 -15 489 622 ;
-C 58 ; WX 600 ; N colon ; B 229 -15 371 385 ;
-C 59 ; WX 600 ; N semicolon ; B 181 -112 371 385 ;
-C 60 ; WX 600 ; N less ; B 41 42 519 472 ;
-C 61 ; WX 600 ; N equal ; B 80 138 520 376 ;
-C 62 ; WX 600 ; N greater ; B 66 42 544 472 ;
-C 63 ; WX 600 ; N question ; B 129 -15 492 572 ;
-C 64 ; WX 600 ; N at ; B 77 -15 533 622 ;
-C 65 ; WX 600 ; N A ; B 3 0 597 562 ;
-C 66 ; WX 600 ; N B ; B 43 0 559 562 ;
-C 67 ; WX 600 ; N C ; B 41 -18 540 580 ;
-C 68 ; WX 600 ; N D ; B 43 0 574 562 ;
-C 69 ; WX 600 ; N E ; B 53 0 550 562 ;
-C 70 ; WX 600 ; N F ; B 53 0 545 562 ;
-C 71 ; WX 600 ; N G ; B 31 -18 575 580 ;
-C 72 ; WX 600 ; N H ; B 32 0 568 562 ;
-C 73 ; WX 600 ; N I ; B 96 0 504 562 ;
-C 74 ; WX 600 ; N J ; B 34 -18 566 562 ;
-C 75 ; WX 600 ; N K ; B 38 0 582 562 ;
-C 76 ; WX 600 ; N L ; B 47 0 554 562 ;
-C 77 ; WX 600 ; N M ; B 4 0 596 562 ;
-C 78 ; WX 600 ; N N ; B 7 -13 593 562 ;
-C 79 ; WX 600 ; N O ; B 43 -18 557 580 ;
-C 80 ; WX 600 ; N P ; B 79 0 558 562 ;
-C 81 ; WX 600 ; N Q ; B 43 -138 557 580 ;
-C 82 ; WX 600 ; N R ; B 38 0 588 562 ;
-C 83 ; WX 600 ; N S ; B 72 -20 529 580 ;
-C 84 ; WX 600 ; N T ; B 38 0 563 562 ;
-C 85 ; WX 600 ; N U ; B 17 -18 583 562 ;
-C 86 ; WX 600 ; N V ; B -4 -13 604 562 ;
-C 87 ; WX 600 ; N W ; B -3 -13 603 562 ;
-C 88 ; WX 600 ; N X ; B 23 0 577 562 ;
-C 89 ; WX 600 ; N Y ; B 24 0 576 562 ;
-C 90 ; WX 600 ; N Z ; B 86 0 514 562 ;
-C 91 ; WX 600 ; N bracketleft ; B 269 -108 442 622 ;
-C 92 ; WX 600 ; N backslash ; B 118 -80 482 629 ;
-C 93 ; WX 600 ; N bracketright ; B 158 -108 331 622 ;
-C 94 ; WX 600 ; N asciicircum ; B 94 354 506 622 ;
-C 95 ; WX 600 ; N underscore ; B 0 -125 600 -75 ;
-C 96 ; WX 600 ; N quoteleft ; B 224 328 387 562 ;
-C 97 ; WX 600 ; N a ; B 53 -15 559 441 ;
-C 98 ; WX 600 ; N b ; B 14 -15 575 629 ;
-C 99 ; WX 600 ; N c ; B 66 -15 529 441 ;
-C 100 ; WX 600 ; N d ; B 45 -15 591 629 ;
-C 101 ; WX 600 ; N e ; B 66 -15 548 441 ;
-C 102 ; WX 600 ; N f ; B 114 0 531 629 ; L i fi ; L l fl ;
-C 103 ; WX 600 ; N g ; B 45 -157 566 441 ;
-C 104 ; WX 600 ; N h ; B 18 0 582 629 ;
-C 105 ; WX 600 ; N i ; B 95 0 505 657 ;
-C 106 ; WX 600 ; N j ; B 82 -157 410 657 ;
-C 107 ; WX 600 ; N k ; B 43 0 580 629 ;
-C 108 ; WX 600 ; N l ; B 95 0 505 629 ;
-C 109 ; WX 600 ; N m ; B -5 0 605 441 ;
-C 110 ; WX 600 ; N n ; B 26 0 575 441 ;
-C 111 ; WX 600 ; N o ; B 62 -15 538 441 ;
-C 112 ; WX 600 ; N p ; B 9 -157 555 441 ;
-C 113 ; WX 600 ; N q ; B 45 -157 591 441 ;
-C 114 ; WX 600 ; N r ; B 60 0 559 441 ;
-C 115 ; WX 600 ; N s ; B 80 -15 513 441 ;
-C 116 ; WX 600 ; N t ; B 87 -15 530 561 ;
-C 117 ; WX 600 ; N u ; B 21 -15 562 426 ;
-C 118 ; WX 600 ; N v ; B 10 -10 590 426 ;
-C 119 ; WX 600 ; N w ; B -4 -10 604 426 ;
-C 120 ; WX 600 ; N x ; B 20 0 580 426 ;
-C 121 ; WX 600 ; N y ; B 7 -157 592 426 ;
-C 122 ; WX 600 ; N z ; B 99 0 502 426 ;
-C 123 ; WX 600 ; N braceleft ; B 182 -108 437 622 ;
-C 124 ; WX 600 ; N bar ; B 275 -250 326 750 ;
-C 125 ; WX 600 ; N braceright ; B 163 -108 418 622 ;
-C 126 ; WX 600 ; N asciitilde ; B 63 197 540 320 ;
-C 161 ; WX 600 ; N exclamdown ; B 236 -157 364 430 ;
-C 162 ; WX 600 ; N cent ; B 96 -49 500 614 ;
-C 163 ; WX 600 ; N sterling ; B 84 -21 521 611 ;
-C 164 ; WX 600 ; N fraction ; B 92 -57 509 665 ;
-C 165 ; WX 600 ; N yen ; B 26 0 574 562 ;
-C 166 ; WX 600 ; N florin ; B 4 -143 539 622 ;
-C 167 ; WX 600 ; N section ; B 113 -78 488 580 ;
-C 168 ; WX 600 ; N currency ; B 73 58 527 506 ;
-C 169 ; WX 600 ; N quotesingle ; B 259 328 341 562 ;
-C 170 ; WX 600 ; N quotedblleft ; B 143 328 471 562 ;
-C 171 ; WX 600 ; N guillemotleft ; B 37 70 563 446 ;
-C 172 ; WX 600 ; N guilsinglleft ; B 149 70 451 446 ;
-C 173 ; WX 600 ; N guilsinglright ; B 149 70 451 446 ;
-C 174 ; WX 600 ; N fi ; B 3 0 597 629 ;
-C 175 ; WX 600 ; N fl ; B 3 0 597 629 ;
-C 177 ; WX 600 ; N endash ; B 75 231 525 285 ;
-C 178 ; WX 600 ; N dagger ; B 141 -78 459 580 ;
-C 179 ; WX 600 ; N daggerdbl ; B 141 -78 459 580 ;
-C 180 ; WX 600 ; N periodcentered ; B 222 189 378 327 ;
-C 182 ; WX 600 ; N paragraph ; B 50 -78 511 562 ;
-C 183 ; WX 600 ; N bullet ; B 172 130 428 383 ;
-C 184 ; WX 600 ; N quotesinglbase ; B 213 -134 376 100 ;
-C 185 ; WX 600 ; N quotedblbase ; B 143 -134 457 100 ;
-C 186 ; WX 600 ; N quotedblright ; B 143 328 457 562 ;
-C 187 ; WX 600 ; N guillemotright ; B 37 70 563 446 ;
-C 188 ; WX 600 ; N ellipsis ; B 37 -15 563 111 ;
-C 189 ; WX 600 ; N perthousand ; B 3 -15 600 622 ;
-C 191 ; WX 600 ; N questiondown ; B 108 -157 471 430 ;
-C 193 ; WX 600 ; N grave ; B 151 497 378 672 ;
-C 194 ; WX 600 ; N acute ; B 242 497 469 672 ;
-C 195 ; WX 600 ; N circumflex ; B 124 477 476 654 ;
-C 196 ; WX 600 ; N tilde ; B 105 489 503 606 ;
-C 197 ; WX 600 ; N macron ; B 120 525 480 565 ;
-C 198 ; WX 600 ; N breve ; B 153 501 447 609 ;
-C 199 ; WX 600 ; N dotaccent ; B 249 537 352 640 ;
-C 200 ; WX 600 ; N dieresis ; B 148 537 453 640 ;
-C 202 ; WX 600 ; N ring ; B 218 463 382 627 ;
-C 203 ; WX 600 ; N cedilla ; B 224 -151 362 10 ;
-C 205 ; WX 600 ; N hungarumlaut ; B 133 497 540 672 ;
-C 206 ; WX 600 ; N ogonek ; B 211 -172 407 4 ;
-C 207 ; WX 600 ; N caron ; B 124 492 476 669 ;
-C 208 ; WX 600 ; N emdash ; B 0 231 600 285 ;
-C 225 ; WX 600 ; N AE ; B 3 0 550 562 ;
-C 227 ; WX 600 ; N ordfeminine ; B 156 249 442 580 ;
-C 232 ; WX 600 ; N Lslash ; B 47 0 554 562 ;
-C 233 ; WX 600 ; N Oslash ; B 43 -80 557 629 ;
-C 234 ; WX 600 ; N OE ; B 7 0 567 562 ;
-C 235 ; WX 600 ; N ordmasculine ; B 157 249 443 580 ;
-C 241 ; WX 600 ; N ae ; B 19 -15 570 441 ;
-C 245 ; WX 600 ; N dotlessi ; B 95 0 505 426 ;
-C 248 ; WX 600 ; N lslash ; B 95 0 505 629 ;
-C 249 ; WX 600 ; N oslash ; B 62 -80 538 506 ;
-C 250 ; WX 600 ; N oe ; B 19 -15 559 441 ;
-C 251 ; WX 600 ; N germandbls ; B 48 -15 588 629 ;
-C -1 ; WX 600 ; N Idieresis ; B 96 0 504 753 ;
-C -1 ; WX 600 ; N eacute ; B 66 -15 548 672 ;
-C -1 ; WX 600 ; N abreve ; B 53 -15 559 609 ;
-C -1 ; WX 600 ; N uhungarumlaut ; B 21 -15 580 672 ;
-C -1 ; WX 600 ; N ecaron ; B 66 -15 548 669 ;
-C -1 ; WX 600 ; N Ydieresis ; B 24 0 576 753 ;
-C -1 ; WX 600 ; N divide ; B 87 48 513 467 ;
-C -1 ; WX 600 ; N Yacute ; B 24 0 576 805 ;
-C -1 ; WX 600 ; N Acircumflex ; B 3 0 597 787 ;
-C -1 ; WX 600 ; N aacute ; B 53 -15 559 672 ;
-C -1 ; WX 600 ; N Ucircumflex ; B 17 -18 583 787 ;
-C -1 ; WX 600 ; N yacute ; B 7 -157 592 672 ;
-C -1 ; WX 600 ; N scommaaccent ; B 80 -250 513 441 ;
-C -1 ; WX 600 ; N ecircumflex ; B 66 -15 548 654 ;
-C -1 ; WX 600 ; N Uring ; B 17 -18 583 760 ;
-C -1 ; WX 600 ; N Udieresis ; B 17 -18 583 753 ;
-C -1 ; WX 600 ; N aogonek ; B 53 -172 587 441 ;
-C -1 ; WX 600 ; N Uacute ; B 17 -18 583 805 ;
-C -1 ; WX 600 ; N uogonek ; B 21 -172 590 426 ;
-C -1 ; WX 600 ; N Edieresis ; B 53 0 550 753 ;
-C -1 ; WX 600 ; N Dcroat ; B 30 0 574 562 ;
-C -1 ; WX 600 ; N commaaccent ; B 198 -250 335 -58 ;
-C -1 ; WX 600 ; N copyright ; B 0 -18 600 580 ;
-C -1 ; WX 600 ; N Emacron ; B 53 0 550 698 ;
-C -1 ; WX 600 ; N ccaron ; B 66 -15 529 669 ;
-C -1 ; WX 600 ; N aring ; B 53 -15 559 627 ;
-C -1 ; WX 600 ; N Ncommaaccent ; B 7 -250 593 562 ;
-C -1 ; WX 600 ; N lacute ; B 95 0 505 805 ;
-C -1 ; WX 600 ; N agrave ; B 53 -15 559 672 ;
-C -1 ; WX 600 ; N Tcommaaccent ; B 38 -250 563 562 ;
-C -1 ; WX 600 ; N Cacute ; B 41 -18 540 805 ;
-C -1 ; WX 600 ; N atilde ; B 53 -15 559 606 ;
-C -1 ; WX 600 ; N Edotaccent ; B 53 0 550 753 ;
-C -1 ; WX 600 ; N scaron ; B 80 -15 513 669 ;
-C -1 ; WX 600 ; N scedilla ; B 80 -151 513 441 ;
-C -1 ; WX 600 ; N iacute ; B 95 0 505 672 ;
-C -1 ; WX 600 ; N lozenge ; B 18 0 443 706 ;
-C -1 ; WX 600 ; N Rcaron ; B 38 0 588 802 ;
-C -1 ; WX 600 ; N Gcommaaccent ; B 31 -250 575 580 ;
-C -1 ; WX 600 ; N ucircumflex ; B 21 -15 562 654 ;
-C -1 ; WX 600 ; N acircumflex ; B 53 -15 559 654 ;
-C -1 ; WX 600 ; N Amacron ; B 3 0 597 698 ;
-C -1 ; WX 600 ; N rcaron ; B 60 0 559 669 ;
-C -1 ; WX 600 ; N ccedilla ; B 66 -151 529 441 ;
-C -1 ; WX 600 ; N Zdotaccent ; B 86 0 514 753 ;
-C -1 ; WX 600 ; N Thorn ; B 79 0 538 562 ;
-C -1 ; WX 600 ; N Omacron ; B 43 -18 557 698 ;
-C -1 ; WX 600 ; N Racute ; B 38 0 588 805 ;
-C -1 ; WX 600 ; N Sacute ; B 72 -20 529 805 ;
-C -1 ; WX 600 ; N dcaron ; B 45 -15 715 629 ;
-C -1 ; WX 600 ; N Umacron ; B 17 -18 583 698 ;
-C -1 ; WX 600 ; N uring ; B 21 -15 562 627 ;
-C -1 ; WX 600 ; N threesuperior ; B 155 240 406 622 ;
-C -1 ; WX 600 ; N Ograve ; B 43 -18 557 805 ;
-C -1 ; WX 600 ; N Agrave ; B 3 0 597 805 ;
-C -1 ; WX 600 ; N Abreve ; B 3 0 597 732 ;
-C -1 ; WX 600 ; N multiply ; B 87 43 515 470 ;
-C -1 ; WX 600 ; N uacute ; B 21 -15 562 672 ;
-C -1 ; WX 600 ; N Tcaron ; B 38 0 563 802 ;
-C -1 ; WX 600 ; N partialdiff ; B 17 -38 459 710 ;
-C -1 ; WX 600 ; N ydieresis ; B 7 -157 592 620 ;
-C -1 ; WX 600 ; N Nacute ; B 7 -13 593 805 ;
-C -1 ; WX 600 ; N icircumflex ; B 94 0 505 654 ;
-C -1 ; WX 600 ; N Ecircumflex ; B 53 0 550 787 ;
-C -1 ; WX 600 ; N adieresis ; B 53 -15 559 620 ;
-C -1 ; WX 600 ; N edieresis ; B 66 -15 548 620 ;
-C -1 ; WX 600 ; N cacute ; B 66 -15 529 672 ;
-C -1 ; WX 600 ; N nacute ; B 26 0 575 672 ;
-C -1 ; WX 600 ; N umacron ; B 21 -15 562 565 ;
-C -1 ; WX 600 ; N Ncaron ; B 7 -13 593 802 ;
-C -1 ; WX 600 ; N Iacute ; B 96 0 504 805 ;
-C -1 ; WX 600 ; N plusminus ; B 87 44 513 558 ;
-C -1 ; WX 600 ; N brokenbar ; B 275 -175 326 675 ;
-C -1 ; WX 600 ; N registered ; B 0 -18 600 580 ;
-C -1 ; WX 600 ; N Gbreve ; B 31 -18 575 732 ;
-C -1 ; WX 600 ; N Idotaccent ; B 96 0 504 753 ;
-C -1 ; WX 600 ; N summation ; B 15 -10 585 706 ;
-C -1 ; WX 600 ; N Egrave ; B 53 0 550 805 ;
-C -1 ; WX 600 ; N racute ; B 60 0 559 672 ;
-C -1 ; WX 600 ; N omacron ; B 62 -15 538 565 ;
-C -1 ; WX 600 ; N Zacute ; B 86 0 514 805 ;
-C -1 ; WX 600 ; N Zcaron ; B 86 0 514 802 ;
-C -1 ; WX 600 ; N greaterequal ; B 98 0 502 710 ;
-C -1 ; WX 600 ; N Eth ; B 30 0 574 562 ;
-C -1 ; WX 600 ; N Ccedilla ; B 41 -151 540 580 ;
-C -1 ; WX 600 ; N lcommaaccent ; B 95 -250 505 629 ;
-C -1 ; WX 600 ; N tcaron ; B 87 -15 530 717 ;
-C -1 ; WX 600 ; N eogonek ; B 66 -172 548 441 ;
-C -1 ; WX 600 ; N Uogonek ; B 17 -172 583 562 ;
-C -1 ; WX 600 ; N Aacute ; B 3 0 597 805 ;
-C -1 ; WX 600 ; N Adieresis ; B 3 0 597 753 ;
-C -1 ; WX 600 ; N egrave ; B 66 -15 548 672 ;
-C -1 ; WX 600 ; N zacute ; B 99 0 502 672 ;
-C -1 ; WX 600 ; N iogonek ; B 95 -172 505 657 ;
-C -1 ; WX 600 ; N Oacute ; B 43 -18 557 805 ;
-C -1 ; WX 600 ; N oacute ; B 62 -15 538 672 ;
-C -1 ; WX 600 ; N amacron ; B 53 -15 559 565 ;
-C -1 ; WX 600 ; N sacute ; B 80 -15 513 672 ;
-C -1 ; WX 600 ; N idieresis ; B 95 0 505 620 ;
-C -1 ; WX 600 ; N Ocircumflex ; B 43 -18 557 787 ;
-C -1 ; WX 600 ; N Ugrave ; B 17 -18 583 805 ;
-C -1 ; WX 600 ; N Delta ; B 6 0 598 688 ;
-C -1 ; WX 600 ; N thorn ; B -6 -157 555 629 ;
-C -1 ; WX 600 ; N twosuperior ; B 177 249 424 622 ;
-C -1 ; WX 600 ; N Odieresis ; B 43 -18 557 753 ;
-C -1 ; WX 600 ; N mu ; B 21 -157 562 426 ;
-C -1 ; WX 600 ; N igrave ; B 95 0 505 672 ;
-C -1 ; WX 600 ; N ohungarumlaut ; B 62 -15 580 672 ;
-C -1 ; WX 600 ; N Eogonek ; B 53 -172 561 562 ;
-C -1 ; WX 600 ; N dcroat ; B 45 -15 591 629 ;
-C -1 ; WX 600 ; N threequarters ; B 8 -56 593 666 ;
-C -1 ; WX 600 ; N Scedilla ; B 72 -151 529 580 ;
-C -1 ; WX 600 ; N lcaron ; B 95 0 533 629 ;
-C -1 ; WX 600 ; N Kcommaaccent ; B 38 -250 582 562 ;
-C -1 ; WX 600 ; N Lacute ; B 47 0 554 805 ;
-C -1 ; WX 600 ; N trademark ; B -23 263 623 562 ;
-C -1 ; WX 600 ; N edotaccent ; B 66 -15 548 620 ;
-C -1 ; WX 600 ; N Igrave ; B 96 0 504 805 ;
-C -1 ; WX 600 ; N Imacron ; B 96 0 504 698 ;
-C -1 ; WX 600 ; N Lcaron ; B 47 0 554 562 ;
-C -1 ; WX 600 ; N onehalf ; B 0 -57 611 665 ;
-C -1 ; WX 600 ; N lessequal ; B 98 0 502 710 ;
-C -1 ; WX 600 ; N ocircumflex ; B 62 -15 538 654 ;
-C -1 ; WX 600 ; N ntilde ; B 26 0 575 606 ;
-C -1 ; WX 600 ; N Uhungarumlaut ; B 17 -18 590 805 ;
-C -1 ; WX 600 ; N Eacute ; B 53 0 550 805 ;
-C -1 ; WX 600 ; N emacron ; B 66 -15 548 565 ;
-C -1 ; WX 600 ; N gbreve ; B 45 -157 566 609 ;
-C -1 ; WX 600 ; N onequarter ; B 0 -57 600 665 ;
-C -1 ; WX 600 ; N Scaron ; B 72 -20 529 802 ;
-C -1 ; WX 600 ; N Scommaaccent ; B 72 -250 529 580 ;
-C -1 ; WX 600 ; N Ohungarumlaut ; B 43 -18 580 805 ;
-C -1 ; WX 600 ; N degree ; B 123 269 477 622 ;
-C -1 ; WX 600 ; N ograve ; B 62 -15 538 672 ;
-C -1 ; WX 600 ; N Ccaron ; B 41 -18 540 802 ;
-C -1 ; WX 600 ; N ugrave ; B 21 -15 562 672 ;
-C -1 ; WX 600 ; N radical ; B 3 -15 597 792 ;
-C -1 ; WX 600 ; N Dcaron ; B 43 0 574 802 ;
-C -1 ; WX 600 ; N rcommaaccent ; B 60 -250 559 441 ;
-C -1 ; WX 600 ; N Ntilde ; B 7 -13 593 729 ;
-C -1 ; WX 600 ; N otilde ; B 62 -15 538 606 ;
-C -1 ; WX 600 ; N Rcommaaccent ; B 38 -250 588 562 ;
-C -1 ; WX 600 ; N Lcommaaccent ; B 47 -250 554 562 ;
-C -1 ; WX 600 ; N Atilde ; B 3 0 597 729 ;
-C -1 ; WX 600 ; N Aogonek ; B 3 -172 608 562 ;
-C -1 ; WX 600 ; N Aring ; B 3 0 597 750 ;
-C -1 ; WX 600 ; N Otilde ; B 43 -18 557 729 ;
-C -1 ; WX 600 ; N zdotaccent ; B 99 0 502 620 ;
-C -1 ; WX 600 ; N Ecaron ; B 53 0 550 802 ;
-C -1 ; WX 600 ; N Iogonek ; B 96 -172 504 562 ;
-C -1 ; WX 600 ; N kcommaaccent ; B 43 -250 580 629 ;
-C -1 ; WX 600 ; N minus ; B 80 232 520 283 ;
-C -1 ; WX 600 ; N Icircumflex ; B 96 0 504 787 ;
-C -1 ; WX 600 ; N ncaron ; B 26 0 575 669 ;
-C -1 ; WX 600 ; N tcommaaccent ; B 87 -250 530 561 ;
-C -1 ; WX 600 ; N logicalnot ; B 87 108 513 369 ;
-C -1 ; WX 600 ; N odieresis ; B 62 -15 538 620 ;
-C -1 ; WX 600 ; N udieresis ; B 21 -15 562 620 ;
-C -1 ; WX 600 ; N notequal ; B 15 -16 540 529 ;
-C -1 ; WX 600 ; N gcommaaccent ; B 45 -157 566 708 ;
-C -1 ; WX 600 ; N eth ; B 62 -15 538 629 ;
-C -1 ; WX 600 ; N zcaron ; B 99 0 502 669 ;
-C -1 ; WX 600 ; N ncommaaccent ; B 26 -250 575 441 ;
-C -1 ; WX 600 ; N onesuperior ; B 172 249 428 622 ;
-C -1 ; WX 600 ; N imacron ; B 95 0 505 565 ;
-C -1 ; WX 600 ; N Euro ; B 0 0 0 0 ;
-EndCharMetrics
-EndFontMetrics
diff --git a/admin/survey/Fonts/GeosansLight.ttf b/admin/survey/Fonts/GeosansLight.ttf
deleted file mode 100644
index 055932a..0000000
--- a/admin/survey/Fonts/GeosansLight.ttf
+++ /dev/null
Binary files differ
diff --git a/admin/survey/Fonts/Helvetica-Bold.afm b/admin/survey/Fonts/Helvetica-Bold.afm
deleted file mode 100644
index 0d41049..0000000
--- a/admin/survey/Fonts/Helvetica-Bold.afm
+++ /dev/null
@@ -1,2827 +0,0 @@
-StartFontMetrics 4.1
-Comment Copyright (c) 1985, 1987, 1989, 1990, 1997 Adobe Systems Incorporated. All Rights Reserved.
-Comment Creation Date: Thu May 1 12:43:52 1997
-Comment UniqueID 43052
-Comment VMusage 37169 48194
-FontName Helvetica-Bold
-FullName Helvetica Bold
-FamilyName Helvetica
-Weight Bold
-ItalicAngle 0
-IsFixedPitch false
-CharacterSet ExtendedRoman
-FontBBox -170 -228 1003 962
-UnderlinePosition -100
-UnderlineThickness 50
-Version 002.000
-Notice Copyright (c) 1985, 1987, 1989, 1990, 1997 Adobe Systems Incorporated. All Rights Reserved.Helvetica is a trademark of Linotype-Hell AG and/or its subsidiaries.
-EncodingScheme AdobeStandardEncoding
-CapHeight 718
-XHeight 532
-Ascender 718
-Descender -207
-StdHW 118
-StdVW 140
-StartCharMetrics 315
-C 32 ; WX 278 ; N space ; B 0 0 0 0 ;
-C 33 ; WX 333 ; N exclam ; B 90 0 244 718 ;
-C 34 ; WX 474 ; N quotedbl ; B 98 447 376 718 ;
-C 35 ; WX 556 ; N numbersign ; B 18 0 538 698 ;
-C 36 ; WX 556 ; N dollar ; B 30 -115 523 775 ;
-C 37 ; WX 889 ; N percent ; B 28 -19 861 710 ;
-C 38 ; WX 722 ; N ampersand ; B 54 -19 701 718 ;
-C 39 ; WX 278 ; N quoteright ; B 69 445 209 718 ;
-C 40 ; WX 333 ; N parenleft ; B 35 -208 314 734 ;
-C 41 ; WX 333 ; N parenright ; B 19 -208 298 734 ;
-C 42 ; WX 389 ; N asterisk ; B 27 387 362 718 ;
-C 43 ; WX 584 ; N plus ; B 40 0 544 506 ;
-C 44 ; WX 278 ; N comma ; B 64 -168 214 146 ;
-C 45 ; WX 333 ; N hyphen ; B 27 215 306 345 ;
-C 46 ; WX 278 ; N period ; B 64 0 214 146 ;
-C 47 ; WX 278 ; N slash ; B -33 -19 311 737 ;
-C 48 ; WX 556 ; N zero ; B 32 -19 524 710 ;
-C 49 ; WX 556 ; N one ; B 69 0 378 710 ;
-C 50 ; WX 556 ; N two ; B 26 0 511 710 ;
-C 51 ; WX 556 ; N three ; B 27 -19 516 710 ;
-C 52 ; WX 556 ; N four ; B 27 0 526 710 ;
-C 53 ; WX 556 ; N five ; B 27 -19 516 698 ;
-C 54 ; WX 556 ; N six ; B 31 -19 520 710 ;
-C 55 ; WX 556 ; N seven ; B 25 0 528 698 ;
-C 56 ; WX 556 ; N eight ; B 32 -19 524 710 ;
-C 57 ; WX 556 ; N nine ; B 30 -19 522 710 ;
-C 58 ; WX 333 ; N colon ; B 92 0 242 512 ;
-C 59 ; WX 333 ; N semicolon ; B 92 -168 242 512 ;
-C 60 ; WX 584 ; N less ; B 38 -8 546 514 ;
-C 61 ; WX 584 ; N equal ; B 40 87 544 419 ;
-C 62 ; WX 584 ; N greater ; B 38 -8 546 514 ;
-C 63 ; WX 611 ; N question ; B 60 0 556 727 ;
-C 64 ; WX 975 ; N at ; B 118 -19 856 737 ;
-C 65 ; WX 722 ; N A ; B 20 0 702 718 ;
-C 66 ; WX 722 ; N B ; B 76 0 669 718 ;
-C 67 ; WX 722 ; N C ; B 44 -19 684 737 ;
-C 68 ; WX 722 ; N D ; B 76 0 685 718 ;
-C 69 ; WX 667 ; N E ; B 76 0 621 718 ;
-C 70 ; WX 611 ; N F ; B 76 0 587 718 ;
-C 71 ; WX 778 ; N G ; B 44 -19 713 737 ;
-C 72 ; WX 722 ; N H ; B 71 0 651 718 ;
-C 73 ; WX 278 ; N I ; B 64 0 214 718 ;
-C 74 ; WX 556 ; N J ; B 22 -18 484 718 ;
-C 75 ; WX 722 ; N K ; B 87 0 722 718 ;
-C 76 ; WX 611 ; N L ; B 76 0 583 718 ;
-C 77 ; WX 833 ; N M ; B 69 0 765 718 ;
-C 78 ; WX 722 ; N N ; B 69 0 654 718 ;
-C 79 ; WX 778 ; N O ; B 44 -19 734 737 ;
-C 80 ; WX 667 ; N P ; B 76 0 627 718 ;
-C 81 ; WX 778 ; N Q ; B 44 -52 737 737 ;
-C 82 ; WX 722 ; N R ; B 76 0 677 718 ;
-C 83 ; WX 667 ; N S ; B 39 -19 629 737 ;
-C 84 ; WX 611 ; N T ; B 14 0 598 718 ;
-C 85 ; WX 722 ; N U ; B 72 -19 651 718 ;
-C 86 ; WX 667 ; N V ; B 19 0 648 718 ;
-C 87 ; WX 944 ; N W ; B 16 0 929 718 ;
-C 88 ; WX 667 ; N X ; B 14 0 653 718 ;
-C 89 ; WX 667 ; N Y ; B 15 0 653 718 ;
-C 90 ; WX 611 ; N Z ; B 25 0 586 718 ;
-C 91 ; WX 333 ; N bracketleft ; B 63 -196 309 722 ;
-C 92 ; WX 278 ; N backslash ; B -33 -19 311 737 ;
-C 93 ; WX 333 ; N bracketright ; B 24 -196 270 722 ;
-C 94 ; WX 584 ; N asciicircum ; B 62 323 522 698 ;
-C 95 ; WX 556 ; N underscore ; B 0 -125 556 -75 ;
-C 96 ; WX 278 ; N quoteleft ; B 69 454 209 727 ;
-C 97 ; WX 556 ; N a ; B 29 -14 527 546 ;
-C 98 ; WX 611 ; N b ; B 61 -14 578 718 ;
-C 99 ; WX 556 ; N c ; B 34 -14 524 546 ;
-C 100 ; WX 611 ; N d ; B 34 -14 551 718 ;
-C 101 ; WX 556 ; N e ; B 23 -14 528 546 ;
-C 102 ; WX 333 ; N f ; B 10 0 318 727 ; L i fi ; L l fl ;
-C 103 ; WX 611 ; N g ; B 40 -217 553 546 ;
-C 104 ; WX 611 ; N h ; B 65 0 546 718 ;
-C 105 ; WX 278 ; N i ; B 69 0 209 725 ;
-C 106 ; WX 278 ; N j ; B 3 -214 209 725 ;
-C 107 ; WX 556 ; N k ; B 69 0 562 718 ;
-C 108 ; WX 278 ; N l ; B 69 0 209 718 ;
-C 109 ; WX 889 ; N m ; B 64 0 826 546 ;
-C 110 ; WX 611 ; N n ; B 65 0 546 546 ;
-C 111 ; WX 611 ; N o ; B 34 -14 578 546 ;
-C 112 ; WX 611 ; N p ; B 62 -207 578 546 ;
-C 113 ; WX 611 ; N q ; B 34 -207 552 546 ;
-C 114 ; WX 389 ; N r ; B 64 0 373 546 ;
-C 115 ; WX 556 ; N s ; B 30 -14 519 546 ;
-C 116 ; WX 333 ; N t ; B 10 -6 309 676 ;
-C 117 ; WX 611 ; N u ; B 66 -14 545 532 ;
-C 118 ; WX 556 ; N v ; B 13 0 543 532 ;
-C 119 ; WX 778 ; N w ; B 10 0 769 532 ;
-C 120 ; WX 556 ; N x ; B 15 0 541 532 ;
-C 121 ; WX 556 ; N y ; B 10 -214 539 532 ;
-C 122 ; WX 500 ; N z ; B 20 0 480 532 ;
-C 123 ; WX 389 ; N braceleft ; B 48 -196 365 722 ;
-C 124 ; WX 280 ; N bar ; B 84 -225 196 775 ;
-C 125 ; WX 389 ; N braceright ; B 24 -196 341 722 ;
-C 126 ; WX 584 ; N asciitilde ; B 61 163 523 343 ;
-C 161 ; WX 333 ; N exclamdown ; B 90 -186 244 532 ;
-C 162 ; WX 556 ; N cent ; B 34 -118 524 628 ;
-C 163 ; WX 556 ; N sterling ; B 28 -16 541 718 ;
-C 164 ; WX 167 ; N fraction ; B -170 -19 336 710 ;
-C 165 ; WX 556 ; N yen ; B -9 0 565 698 ;
-C 166 ; WX 556 ; N florin ; B -10 -210 516 737 ;
-C 167 ; WX 556 ; N section ; B 34 -184 522 727 ;
-C 168 ; WX 556 ; N currency ; B -3 76 559 636 ;
-C 169 ; WX 238 ; N quotesingle ; B 70 447 168 718 ;
-C 170 ; WX 500 ; N quotedblleft ; B 64 454 436 727 ;
-C 171 ; WX 556 ; N guillemotleft ; B 88 76 468 484 ;
-C 172 ; WX 333 ; N guilsinglleft ; B 83 76 250 484 ;
-C 173 ; WX 333 ; N guilsinglright ; B 83 76 250 484 ;
-C 174 ; WX 611 ; N fi ; B 10 0 542 727 ;
-C 175 ; WX 611 ; N fl ; B 10 0 542 727 ;
-C 177 ; WX 556 ; N endash ; B 0 227 556 333 ;
-C 178 ; WX 556 ; N dagger ; B 36 -171 520 718 ;
-C 179 ; WX 556 ; N daggerdbl ; B 36 -171 520 718 ;
-C 180 ; WX 278 ; N periodcentered ; B 58 172 220 334 ;
-C 182 ; WX 556 ; N paragraph ; B -8 -191 539 700 ;
-C 183 ; WX 350 ; N bullet ; B 10 194 340 524 ;
-C 184 ; WX 278 ; N quotesinglbase ; B 69 -146 209 127 ;
-C 185 ; WX 500 ; N quotedblbase ; B 64 -146 436 127 ;
-C 186 ; WX 500 ; N quotedblright ; B 64 445 436 718 ;
-C 187 ; WX 556 ; N guillemotright ; B 88 76 468 484 ;
-C 188 ; WX 1000 ; N ellipsis ; B 92 0 908 146 ;
-C 189 ; WX 1000 ; N perthousand ; B -3 -19 1003 710 ;
-C 191 ; WX 611 ; N questiondown ; B 55 -195 551 532 ;
-C 193 ; WX 333 ; N grave ; B -23 604 225 750 ;
-C 194 ; WX 333 ; N acute ; B 108 604 356 750 ;
-C 195 ; WX 333 ; N circumflex ; B -10 604 343 750 ;
-C 196 ; WX 333 ; N tilde ; B -17 610 350 737 ;
-C 197 ; WX 333 ; N macron ; B -6 604 339 678 ;
-C 198 ; WX 333 ; N breve ; B -2 604 335 750 ;
-C 199 ; WX 333 ; N dotaccent ; B 104 614 230 729 ;
-C 200 ; WX 333 ; N dieresis ; B 6 614 327 729 ;
-C 202 ; WX 333 ; N ring ; B 59 568 275 776 ;
-C 203 ; WX 333 ; N cedilla ; B 6 -228 245 0 ;
-C 205 ; WX 333 ; N hungarumlaut ; B 9 604 486 750 ;
-C 206 ; WX 333 ; N ogonek ; B 71 -228 304 0 ;
-C 207 ; WX 333 ; N caron ; B -10 604 343 750 ;
-C 208 ; WX 1000 ; N emdash ; B 0 227 1000 333 ;
-C 225 ; WX 1000 ; N AE ; B 5 0 954 718 ;
-C 227 ; WX 370 ; N ordfeminine ; B 22 401 347 737 ;
-C 232 ; WX 611 ; N Lslash ; B -20 0 583 718 ;
-C 233 ; WX 778 ; N Oslash ; B 33 -27 744 745 ;
-C 234 ; WX 1000 ; N OE ; B 37 -19 961 737 ;
-C 235 ; WX 365 ; N ordmasculine ; B 6 401 360 737 ;
-C 241 ; WX 889 ; N ae ; B 29 -14 858 546 ;
-C 245 ; WX 278 ; N dotlessi ; B 69 0 209 532 ;
-C 248 ; WX 278 ; N lslash ; B -18 0 296 718 ;
-C 249 ; WX 611 ; N oslash ; B 22 -29 589 560 ;
-C 250 ; WX 944 ; N oe ; B 34 -14 912 546 ;
-C 251 ; WX 611 ; N germandbls ; B 69 -14 579 731 ;
-C -1 ; WX 278 ; N Idieresis ; B -21 0 300 915 ;
-C -1 ; WX 556 ; N eacute ; B 23 -14 528 750 ;
-C -1 ; WX 556 ; N abreve ; B 29 -14 527 750 ;
-C -1 ; WX 611 ; N uhungarumlaut ; B 66 -14 625 750 ;
-C -1 ; WX 556 ; N ecaron ; B 23 -14 528 750 ;
-C -1 ; WX 667 ; N Ydieresis ; B 15 0 653 915 ;
-C -1 ; WX 584 ; N divide ; B 40 -42 544 548 ;
-C -1 ; WX 667 ; N Yacute ; B 15 0 653 936 ;
-C -1 ; WX 722 ; N Acircumflex ; B 20 0 702 936 ;
-C -1 ; WX 556 ; N aacute ; B 29 -14 527 750 ;
-C -1 ; WX 722 ; N Ucircumflex ; B 72 -19 651 936 ;
-C -1 ; WX 556 ; N yacute ; B 10 -214 539 750 ;
-C -1 ; WX 556 ; N scommaaccent ; B 30 -228 519 546 ;
-C -1 ; WX 556 ; N ecircumflex ; B 23 -14 528 750 ;
-C -1 ; WX 722 ; N Uring ; B 72 -19 651 962 ;
-C -1 ; WX 722 ; N Udieresis ; B 72 -19 651 915 ;
-C -1 ; WX 556 ; N aogonek ; B 29 -224 545 546 ;
-C -1 ; WX 722 ; N Uacute ; B 72 -19 651 936 ;
-C -1 ; WX 611 ; N uogonek ; B 66 -228 545 532 ;
-C -1 ; WX 667 ; N Edieresis ; B 76 0 621 915 ;
-C -1 ; WX 722 ; N Dcroat ; B -5 0 685 718 ;
-C -1 ; WX 250 ; N commaaccent ; B 64 -228 199 -50 ;
-C -1 ; WX 737 ; N copyright ; B -11 -19 749 737 ;
-C -1 ; WX 667 ; N Emacron ; B 76 0 621 864 ;
-C -1 ; WX 556 ; N ccaron ; B 34 -14 524 750 ;
-C -1 ; WX 556 ; N aring ; B 29 -14 527 776 ;
-C -1 ; WX 722 ; N Ncommaaccent ; B 69 -228 654 718 ;
-C -1 ; WX 278 ; N lacute ; B 69 0 329 936 ;
-C -1 ; WX 556 ; N agrave ; B 29 -14 527 750 ;
-C -1 ; WX 611 ; N Tcommaaccent ; B 14 -228 598 718 ;
-C -1 ; WX 722 ; N Cacute ; B 44 -19 684 936 ;
-C -1 ; WX 556 ; N atilde ; B 29 -14 527 737 ;
-C -1 ; WX 667 ; N Edotaccent ; B 76 0 621 915 ;
-C -1 ; WX 556 ; N scaron ; B 30 -14 519 750 ;
-C -1 ; WX 556 ; N scedilla ; B 30 -228 519 546 ;
-C -1 ; WX 278 ; N iacute ; B 69 0 329 750 ;
-C -1 ; WX 494 ; N lozenge ; B 10 0 484 745 ;
-C -1 ; WX 722 ; N Rcaron ; B 76 0 677 936 ;
-C -1 ; WX 778 ; N Gcommaaccent ; B 44 -228 713 737 ;
-C -1 ; WX 611 ; N ucircumflex ; B 66 -14 545 750 ;
-C -1 ; WX 556 ; N acircumflex ; B 29 -14 527 750 ;
-C -1 ; WX 722 ; N Amacron ; B 20 0 702 864 ;
-C -1 ; WX 389 ; N rcaron ; B 18 0 373 750 ;
-C -1 ; WX 556 ; N ccedilla ; B 34 -228 524 546 ;
-C -1 ; WX 611 ; N Zdotaccent ; B 25 0 586 915 ;
-C -1 ; WX 667 ; N Thorn ; B 76 0 627 718 ;
-C -1 ; WX 778 ; N Omacron ; B 44 -19 734 864 ;
-C -1 ; WX 722 ; N Racute ; B 76 0 677 936 ;
-C -1 ; WX 667 ; N Sacute ; B 39 -19 629 936 ;
-C -1 ; WX 743 ; N dcaron ; B 34 -14 750 718 ;
-C -1 ; WX 722 ; N Umacron ; B 72 -19 651 864 ;
-C -1 ; WX 611 ; N uring ; B 66 -14 545 776 ;
-C -1 ; WX 333 ; N threesuperior ; B 8 271 326 710 ;
-C -1 ; WX 778 ; N Ograve ; B 44 -19 734 936 ;
-C -1 ; WX 722 ; N Agrave ; B 20 0 702 936 ;
-C -1 ; WX 722 ; N Abreve ; B 20 0 702 936 ;
-C -1 ; WX 584 ; N multiply ; B 40 1 545 505 ;
-C -1 ; WX 611 ; N uacute ; B 66 -14 545 750 ;
-C -1 ; WX 611 ; N Tcaron ; B 14 0 598 936 ;
-C -1 ; WX 494 ; N partialdiff ; B 11 -21 494 750 ;
-C -1 ; WX 556 ; N ydieresis ; B 10 -214 539 729 ;
-C -1 ; WX 722 ; N Nacute ; B 69 0 654 936 ;
-C -1 ; WX 278 ; N icircumflex ; B -37 0 316 750 ;
-C -1 ; WX 667 ; N Ecircumflex ; B 76 0 621 936 ;
-C -1 ; WX 556 ; N adieresis ; B 29 -14 527 729 ;
-C -1 ; WX 556 ; N edieresis ; B 23 -14 528 729 ;
-C -1 ; WX 556 ; N cacute ; B 34 -14 524 750 ;
-C -1 ; WX 611 ; N nacute ; B 65 0 546 750 ;
-C -1 ; WX 611 ; N umacron ; B 66 -14 545 678 ;
-C -1 ; WX 722 ; N Ncaron ; B 69 0 654 936 ;
-C -1 ; WX 278 ; N Iacute ; B 64 0 329 936 ;
-C -1 ; WX 584 ; N plusminus ; B 40 0 544 506 ;
-C -1 ; WX 280 ; N brokenbar ; B 84 -150 196 700 ;
-C -1 ; WX 737 ; N registered ; B -11 -19 748 737 ;
-C -1 ; WX 778 ; N Gbreve ; B 44 -19 713 936 ;
-C -1 ; WX 278 ; N Idotaccent ; B 64 0 214 915 ;
-C -1 ; WX 600 ; N summation ; B 14 -10 585 706 ;
-C -1 ; WX 667 ; N Egrave ; B 76 0 621 936 ;
-C -1 ; WX 389 ; N racute ; B 64 0 384 750 ;
-C -1 ; WX 611 ; N omacron ; B 34 -14 578 678 ;
-C -1 ; WX 611 ; N Zacute ; B 25 0 586 936 ;
-C -1 ; WX 611 ; N Zcaron ; B 25 0 586 936 ;
-C -1 ; WX 549 ; N greaterequal ; B 26 0 523 704 ;
-C -1 ; WX 722 ; N Eth ; B -5 0 685 718 ;
-C -1 ; WX 722 ; N Ccedilla ; B 44 -228 684 737 ;
-C -1 ; WX 278 ; N lcommaaccent ; B 69 -228 213 718 ;
-C -1 ; WX 389 ; N tcaron ; B 10 -6 421 878 ;
-C -1 ; WX 556 ; N eogonek ; B 23 -228 528 546 ;
-C -1 ; WX 722 ; N Uogonek ; B 72 -228 651 718 ;
-C -1 ; WX 722 ; N Aacute ; B 20 0 702 936 ;
-C -1 ; WX 722 ; N Adieresis ; B 20 0 702 915 ;
-C -1 ; WX 556 ; N egrave ; B 23 -14 528 750 ;
-C -1 ; WX 500 ; N zacute ; B 20 0 480 750 ;
-C -1 ; WX 278 ; N iogonek ; B 16 -224 249 725 ;
-C -1 ; WX 778 ; N Oacute ; B 44 -19 734 936 ;
-C -1 ; WX 611 ; N oacute ; B 34 -14 578 750 ;
-C -1 ; WX 556 ; N amacron ; B 29 -14 527 678 ;
-C -1 ; WX 556 ; N sacute ; B 30 -14 519 750 ;
-C -1 ; WX 278 ; N idieresis ; B -21 0 300 729 ;
-C -1 ; WX 778 ; N Ocircumflex ; B 44 -19 734 936 ;
-C -1 ; WX 722 ; N Ugrave ; B 72 -19 651 936 ;
-C -1 ; WX 612 ; N Delta ; B 6 0 608 688 ;
-C -1 ; WX 611 ; N thorn ; B 62 -208 578 718 ;
-C -1 ; WX 333 ; N twosuperior ; B 9 283 324 710 ;
-C -1 ; WX 778 ; N Odieresis ; B 44 -19 734 915 ;
-C -1 ; WX 611 ; N mu ; B 66 -207 545 532 ;
-C -1 ; WX 278 ; N igrave ; B -50 0 209 750 ;
-C -1 ; WX 611 ; N ohungarumlaut ; B 34 -14 625 750 ;
-C -1 ; WX 667 ; N Eogonek ; B 76 -224 639 718 ;
-C -1 ; WX 611 ; N dcroat ; B 34 -14 650 718 ;
-C -1 ; WX 834 ; N threequarters ; B 16 -19 799 710 ;
-C -1 ; WX 667 ; N Scedilla ; B 39 -228 629 737 ;
-C -1 ; WX 400 ; N lcaron ; B 69 0 408 718 ;
-C -1 ; WX 722 ; N Kcommaaccent ; B 87 -228 722 718 ;
-C -1 ; WX 611 ; N Lacute ; B 76 0 583 936 ;
-C -1 ; WX 1000 ; N trademark ; B 44 306 956 718 ;
-C -1 ; WX 556 ; N edotaccent ; B 23 -14 528 729 ;
-C -1 ; WX 278 ; N Igrave ; B -50 0 214 936 ;
-C -1 ; WX 278 ; N Imacron ; B -33 0 312 864 ;
-C -1 ; WX 611 ; N Lcaron ; B 76 0 583 718 ;
-C -1 ; WX 834 ; N onehalf ; B 26 -19 794 710 ;
-C -1 ; WX 549 ; N lessequal ; B 29 0 526 704 ;
-C -1 ; WX 611 ; N ocircumflex ; B 34 -14 578 750 ;
-C -1 ; WX 611 ; N ntilde ; B 65 0 546 737 ;
-C -1 ; WX 722 ; N Uhungarumlaut ; B 72 -19 681 936 ;
-C -1 ; WX 667 ; N Eacute ; B 76 0 621 936 ;
-C -1 ; WX 556 ; N emacron ; B 23 -14 528 678 ;
-C -1 ; WX 611 ; N gbreve ; B 40 -217 553 750 ;
-C -1 ; WX 834 ; N onequarter ; B 26 -19 766 710 ;
-C -1 ; WX 667 ; N Scaron ; B 39 -19 629 936 ;
-C -1 ; WX 667 ; N Scommaaccent ; B 39 -228 629 737 ;
-C -1 ; WX 778 ; N Ohungarumlaut ; B 44 -19 734 936 ;
-C -1 ; WX 400 ; N degree ; B 57 426 343 712 ;
-C -1 ; WX 611 ; N ograve ; B 34 -14 578 750 ;
-C -1 ; WX 722 ; N Ccaron ; B 44 -19 684 936 ;
-C -1 ; WX 611 ; N ugrave ; B 66 -14 545 750 ;
-C -1 ; WX 549 ; N radical ; B 10 -46 512 850 ;
-C -1 ; WX 722 ; N Dcaron ; B 76 0 685 936 ;
-C -1 ; WX 389 ; N rcommaaccent ; B 64 -228 373 546 ;
-C -1 ; WX 722 ; N Ntilde ; B 69 0 654 923 ;
-C -1 ; WX 611 ; N otilde ; B 34 -14 578 737 ;
-C -1 ; WX 722 ; N Rcommaaccent ; B 76 -228 677 718 ;
-C -1 ; WX 611 ; N Lcommaaccent ; B 76 -228 583 718 ;
-C -1 ; WX 722 ; N Atilde ; B 20 0 702 923 ;
-C -1 ; WX 722 ; N Aogonek ; B 20 -224 742 718 ;
-C -1 ; WX 722 ; N Aring ; B 20 0 702 962 ;
-C -1 ; WX 778 ; N Otilde ; B 44 -19 734 923 ;
-C -1 ; WX 500 ; N zdotaccent ; B 20 0 480 729 ;
-C -1 ; WX 667 ; N Ecaron ; B 76 0 621 936 ;
-C -1 ; WX 278 ; N Iogonek ; B -11 -228 222 718 ;
-C -1 ; WX 556 ; N kcommaaccent ; B 69 -228 562 718 ;
-C -1 ; WX 584 ; N minus ; B 40 197 544 309 ;
-C -1 ; WX 278 ; N Icircumflex ; B -37 0 316 936 ;
-C -1 ; WX 611 ; N ncaron ; B 65 0 546 750 ;
-C -1 ; WX 333 ; N tcommaaccent ; B 10 -228 309 676 ;
-C -1 ; WX 584 ; N logicalnot ; B 40 108 544 419 ;
-C -1 ; WX 611 ; N odieresis ; B 34 -14 578 729 ;
-C -1 ; WX 611 ; N udieresis ; B 66 -14 545 729 ;
-C -1 ; WX 549 ; N notequal ; B 15 -49 540 570 ;
-C -1 ; WX 611 ; N gcommaaccent ; B 40 -217 553 850 ;
-C -1 ; WX 611 ; N eth ; B 34 -14 578 737 ;
-C -1 ; WX 500 ; N zcaron ; B 20 0 480 750 ;
-C -1 ; WX 611 ; N ncommaaccent ; B 65 -228 546 546 ;
-C -1 ; WX 333 ; N onesuperior ; B 26 283 237 710 ;
-C -1 ; WX 278 ; N imacron ; B -8 0 285 678 ;
-C -1 ; WX 556 ; N Euro ; B 0 0 0 0 ;
-EndCharMetrics
-StartKernData
-StartKernPairs 2481
-KPX A C -40
-KPX A Cacute -40
-KPX A Ccaron -40
-KPX A Ccedilla -40
-KPX A G -50
-KPX A Gbreve -50
-KPX A Gcommaaccent -50
-KPX A O -40
-KPX A Oacute -40
-KPX A Ocircumflex -40
-KPX A Odieresis -40
-KPX A Ograve -40
-KPX A Ohungarumlaut -40
-KPX A Omacron -40
-KPX A Oslash -40
-KPX A Otilde -40
-KPX A Q -40
-KPX A T -90
-KPX A Tcaron -90
-KPX A Tcommaaccent -90
-KPX A U -50
-KPX A Uacute -50
-KPX A Ucircumflex -50
-KPX A Udieresis -50
-KPX A Ugrave -50
-KPX A Uhungarumlaut -50
-KPX A Umacron -50
-KPX A Uogonek -50
-KPX A Uring -50
-KPX A V -80
-KPX A W -60
-KPX A Y -110
-KPX A Yacute -110
-KPX A Ydieresis -110
-KPX A u -30
-KPX A uacute -30
-KPX A ucircumflex -30
-KPX A udieresis -30
-KPX A ugrave -30
-KPX A uhungarumlaut -30
-KPX A umacron -30
-KPX A uogonek -30
-KPX A uring -30
-KPX A v -40
-KPX A w -30
-KPX A y -30
-KPX A yacute -30
-KPX A ydieresis -30
-KPX Aacute C -40
-KPX Aacute Cacute -40
-KPX Aacute Ccaron -40
-KPX Aacute Ccedilla -40
-KPX Aacute G -50
-KPX Aacute Gbreve -50
-KPX Aacute Gcommaaccent -50
-KPX Aacute O -40
-KPX Aacute Oacute -40
-KPX Aacute Ocircumflex -40
-KPX Aacute Odieresis -40
-KPX Aacute Ograve -40
-KPX Aacute Ohungarumlaut -40
-KPX Aacute Omacron -40
-KPX Aacute Oslash -40
-KPX Aacute Otilde -40
-KPX Aacute Q -40
-KPX Aacute T -90
-KPX Aacute Tcaron -90
-KPX Aacute Tcommaaccent -90
-KPX Aacute U -50
-KPX Aacute Uacute -50
-KPX Aacute Ucircumflex -50
-KPX Aacute Udieresis -50
-KPX Aacute Ugrave -50
-KPX Aacute Uhungarumlaut -50
-KPX Aacute Umacron -50
-KPX Aacute Uogonek -50
-KPX Aacute Uring -50
-KPX Aacute V -80
-KPX Aacute W -60
-KPX Aacute Y -110
-KPX Aacute Yacute -110
-KPX Aacute Ydieresis -110
-KPX Aacute u -30
-KPX Aacute uacute -30
-KPX Aacute ucircumflex -30
-KPX Aacute udieresis -30
-KPX Aacute ugrave -30
-KPX Aacute uhungarumlaut -30
-KPX Aacute umacron -30
-KPX Aacute uogonek -30
-KPX Aacute uring -30
-KPX Aacute v -40
-KPX Aacute w -30
-KPX Aacute y -30
-KPX Aacute yacute -30
-KPX Aacute ydieresis -30
-KPX Abreve C -40
-KPX Abreve Cacute -40
-KPX Abreve Ccaron -40
-KPX Abreve Ccedilla -40
-KPX Abreve G -50
-KPX Abreve Gbreve -50
-KPX Abreve Gcommaaccent -50
-KPX Abreve O -40
-KPX Abreve Oacute -40
-KPX Abreve Ocircumflex -40
-KPX Abreve Odieresis -40
-KPX Abreve Ograve -40
-KPX Abreve Ohungarumlaut -40
-KPX Abreve Omacron -40
-KPX Abreve Oslash -40
-KPX Abreve Otilde -40
-KPX Abreve Q -40
-KPX Abreve T -90
-KPX Abreve Tcaron -90
-KPX Abreve Tcommaaccent -90
-KPX Abreve U -50
-KPX Abreve Uacute -50
-KPX Abreve Ucircumflex -50
-KPX Abreve Udieresis -50
-KPX Abreve Ugrave -50
-KPX Abreve Uhungarumlaut -50
-KPX Abreve Umacron -50
-KPX Abreve Uogonek -50
-KPX Abreve Uring -50
-KPX Abreve V -80
-KPX Abreve W -60
-KPX Abreve Y -110
-KPX Abreve Yacute -110
-KPX Abreve Ydieresis -110
-KPX Abreve u -30
-KPX Abreve uacute -30
-KPX Abreve ucircumflex -30
-KPX Abreve udieresis -30
-KPX Abreve ugrave -30
-KPX Abreve uhungarumlaut -30
-KPX Abreve umacron -30
-KPX Abreve uogonek -30
-KPX Abreve uring -30
-KPX Abreve v -40
-KPX Abreve w -30
-KPX Abreve y -30
-KPX Abreve yacute -30
-KPX Abreve ydieresis -30
-KPX Acircumflex C -40
-KPX Acircumflex Cacute -40
-KPX Acircumflex Ccaron -40
-KPX Acircumflex Ccedilla -40
-KPX Acircumflex G -50
-KPX Acircumflex Gbreve -50
-KPX Acircumflex Gcommaaccent -50
-KPX Acircumflex O -40
-KPX Acircumflex Oacute -40
-KPX Acircumflex Ocircumflex -40
-KPX Acircumflex Odieresis -40
-KPX Acircumflex Ograve -40
-KPX Acircumflex Ohungarumlaut -40
-KPX Acircumflex Omacron -40
-KPX Acircumflex Oslash -40
-KPX Acircumflex Otilde -40
-KPX Acircumflex Q -40
-KPX Acircumflex T -90
-KPX Acircumflex Tcaron -90
-KPX Acircumflex Tcommaaccent -90
-KPX Acircumflex U -50
-KPX Acircumflex Uacute -50
-KPX Acircumflex Ucircumflex -50
-KPX Acircumflex Udieresis -50
-KPX Acircumflex Ugrave -50
-KPX Acircumflex Uhungarumlaut -50
-KPX Acircumflex Umacron -50
-KPX Acircumflex Uogonek -50
-KPX Acircumflex Uring -50
-KPX Acircumflex V -80
-KPX Acircumflex W -60
-KPX Acircumflex Y -110
-KPX Acircumflex Yacute -110
-KPX Acircumflex Ydieresis -110
-KPX Acircumflex u -30
-KPX Acircumflex uacute -30
-KPX Acircumflex ucircumflex -30
-KPX Acircumflex udieresis -30
-KPX Acircumflex ugrave -30
-KPX Acircumflex uhungarumlaut -30
-KPX Acircumflex umacron -30
-KPX Acircumflex uogonek -30
-KPX Acircumflex uring -30
-KPX Acircumflex v -40
-KPX Acircumflex w -30
-KPX Acircumflex y -30
-KPX Acircumflex yacute -30
-KPX Acircumflex ydieresis -30
-KPX Adieresis C -40
-KPX Adieresis Cacute -40
-KPX Adieresis Ccaron -40
-KPX Adieresis Ccedilla -40
-KPX Adieresis G -50
-KPX Adieresis Gbreve -50
-KPX Adieresis Gcommaaccent -50
-KPX Adieresis O -40
-KPX Adieresis Oacute -40
-KPX Adieresis Ocircumflex -40
-KPX Adieresis Odieresis -40
-KPX Adieresis Ograve -40
-KPX Adieresis Ohungarumlaut -40
-KPX Adieresis Omacron -40
-KPX Adieresis Oslash -40
-KPX Adieresis Otilde -40
-KPX Adieresis Q -40
-KPX Adieresis T -90
-KPX Adieresis Tcaron -90
-KPX Adieresis Tcommaaccent -90
-KPX Adieresis U -50
-KPX Adieresis Uacute -50
-KPX Adieresis Ucircumflex -50
-KPX Adieresis Udieresis -50
-KPX Adieresis Ugrave -50
-KPX Adieresis Uhungarumlaut -50
-KPX Adieresis Umacron -50
-KPX Adieresis Uogonek -50
-KPX Adieresis Uring -50
-KPX Adieresis V -80
-KPX Adieresis W -60
-KPX Adieresis Y -110
-KPX Adieresis Yacute -110
-KPX Adieresis Ydieresis -110
-KPX Adieresis u -30
-KPX Adieresis uacute -30
-KPX Adieresis ucircumflex -30
-KPX Adieresis udieresis -30
-KPX Adieresis ugrave -30
-KPX Adieresis uhungarumlaut -30
-KPX Adieresis umacron -30
-KPX Adieresis uogonek -30
-KPX Adieresis uring -30
-KPX Adieresis v -40
-KPX Adieresis w -30
-KPX Adieresis y -30
-KPX Adieresis yacute -30
-KPX Adieresis ydieresis -30
-KPX Agrave C -40
-KPX Agrave Cacute -40
-KPX Agrave Ccaron -40
-KPX Agrave Ccedilla -40
-KPX Agrave G -50
-KPX Agrave Gbreve -50
-KPX Agrave Gcommaaccent -50
-KPX Agrave O -40
-KPX Agrave Oacute -40
-KPX Agrave Ocircumflex -40
-KPX Agrave Odieresis -40
-KPX Agrave Ograve -40
-KPX Agrave Ohungarumlaut -40
-KPX Agrave Omacron -40
-KPX Agrave Oslash -40
-KPX Agrave Otilde -40
-KPX Agrave Q -40
-KPX Agrave T -90
-KPX Agrave Tcaron -90
-KPX Agrave Tcommaaccent -90
-KPX Agrave U -50
-KPX Agrave Uacute -50
-KPX Agrave Ucircumflex -50
-KPX Agrave Udieresis -50
-KPX Agrave Ugrave -50
-KPX Agrave Uhungarumlaut -50
-KPX Agrave Umacron -50
-KPX Agrave Uogonek -50
-KPX Agrave Uring -50
-KPX Agrave V -80
-KPX Agrave W -60
-KPX Agrave Y -110
-KPX Agrave Yacute -110
-KPX Agrave Ydieresis -110
-KPX Agrave u -30
-KPX Agrave uacute -30
-KPX Agrave ucircumflex -30
-KPX Agrave udieresis -30
-KPX Agrave ugrave -30
-KPX Agrave uhungarumlaut -30
-KPX Agrave umacron -30
-KPX Agrave uogonek -30
-KPX Agrave uring -30
-KPX Agrave v -40
-KPX Agrave w -30
-KPX Agrave y -30
-KPX Agrave yacute -30
-KPX Agrave ydieresis -30
-KPX Amacron C -40
-KPX Amacron Cacute -40
-KPX Amacron Ccaron -40
-KPX Amacron Ccedilla -40
-KPX Amacron G -50
-KPX Amacron Gbreve -50
-KPX Amacron Gcommaaccent -50
-KPX Amacron O -40
-KPX Amacron Oacute -40
-KPX Amacron Ocircumflex -40
-KPX Amacron Odieresis -40
-KPX Amacron Ograve -40
-KPX Amacron Ohungarumlaut -40
-KPX Amacron Omacron -40
-KPX Amacron Oslash -40
-KPX Amacron Otilde -40
-KPX Amacron Q -40
-KPX Amacron T -90
-KPX Amacron Tcaron -90
-KPX Amacron Tcommaaccent -90
-KPX Amacron U -50
-KPX Amacron Uacute -50
-KPX Amacron Ucircumflex -50
-KPX Amacron Udieresis -50
-KPX Amacron Ugrave -50
-KPX Amacron Uhungarumlaut -50
-KPX Amacron Umacron -50
-KPX Amacron Uogonek -50
-KPX Amacron Uring -50
-KPX Amacron V -80
-KPX Amacron W -60
-KPX Amacron Y -110
-KPX Amacron Yacute -110
-KPX Amacron Ydieresis -110
-KPX Amacron u -30
-KPX Amacron uacute -30
-KPX Amacron ucircumflex -30
-KPX Amacron udieresis -30
-KPX Amacron ugrave -30
-KPX Amacron uhungarumlaut -30
-KPX Amacron umacron -30
-KPX Amacron uogonek -30
-KPX Amacron uring -30
-KPX Amacron v -40
-KPX Amacron w -30
-KPX Amacron y -30
-KPX Amacron yacute -30
-KPX Amacron ydieresis -30
-KPX Aogonek C -40
-KPX Aogonek Cacute -40
-KPX Aogonek Ccaron -40
-KPX Aogonek Ccedilla -40
-KPX Aogonek G -50
-KPX Aogonek Gbreve -50
-KPX Aogonek Gcommaaccent -50
-KPX Aogonek O -40
-KPX Aogonek Oacute -40
-KPX Aogonek Ocircumflex -40
-KPX Aogonek Odieresis -40
-KPX Aogonek Ograve -40
-KPX Aogonek Ohungarumlaut -40
-KPX Aogonek Omacron -40
-KPX Aogonek Oslash -40
-KPX Aogonek Otilde -40
-KPX Aogonek Q -40
-KPX Aogonek T -90
-KPX Aogonek Tcaron -90
-KPX Aogonek Tcommaaccent -90
-KPX Aogonek U -50
-KPX Aogonek Uacute -50
-KPX Aogonek Ucircumflex -50
-KPX Aogonek Udieresis -50
-KPX Aogonek Ugrave -50
-KPX Aogonek Uhungarumlaut -50
-KPX Aogonek Umacron -50
-KPX Aogonek Uogonek -50
-KPX Aogonek Uring -50
-KPX Aogonek V -80
-KPX Aogonek W -60
-KPX Aogonek Y -110
-KPX Aogonek Yacute -110
-KPX Aogonek Ydieresis -110
-KPX Aogonek u -30
-KPX Aogonek uacute -30
-KPX Aogonek ucircumflex -30
-KPX Aogonek udieresis -30
-KPX Aogonek ugrave -30
-KPX Aogonek uhungarumlaut -30
-KPX Aogonek umacron -30
-KPX Aogonek uogonek -30
-KPX Aogonek uring -30
-KPX Aogonek v -40
-KPX Aogonek w -30
-KPX Aogonek y -30
-KPX Aogonek yacute -30
-KPX Aogonek ydieresis -30
-KPX Aring C -40
-KPX Aring Cacute -40
-KPX Aring Ccaron -40
-KPX Aring Ccedilla -40
-KPX Aring G -50
-KPX Aring Gbreve -50
-KPX Aring Gcommaaccent -50
-KPX Aring O -40
-KPX Aring Oacute -40
-KPX Aring Ocircumflex -40
-KPX Aring Odieresis -40
-KPX Aring Ograve -40
-KPX Aring Ohungarumlaut -40
-KPX Aring Omacron -40
-KPX Aring Oslash -40
-KPX Aring Otilde -40
-KPX Aring Q -40
-KPX Aring T -90
-KPX Aring Tcaron -90
-KPX Aring Tcommaaccent -90
-KPX Aring U -50
-KPX Aring Uacute -50
-KPX Aring Ucircumflex -50
-KPX Aring Udieresis -50
-KPX Aring Ugrave -50
-KPX Aring Uhungarumlaut -50
-KPX Aring Umacron -50
-KPX Aring Uogonek -50
-KPX Aring Uring -50
-KPX Aring V -80
-KPX Aring W -60
-KPX Aring Y -110
-KPX Aring Yacute -110
-KPX Aring Ydieresis -110
-KPX Aring u -30
-KPX Aring uacute -30
-KPX Aring ucircumflex -30
-KPX Aring udieresis -30
-KPX Aring ugrave -30
-KPX Aring uhungarumlaut -30
-KPX Aring umacron -30
-KPX Aring uogonek -30
-KPX Aring uring -30
-KPX Aring v -40
-KPX Aring w -30
-KPX Aring y -30
-KPX Aring yacute -30
-KPX Aring ydieresis -30
-KPX Atilde C -40
-KPX Atilde Cacute -40
-KPX Atilde Ccaron -40
-KPX Atilde Ccedilla -40
-KPX Atilde G -50
-KPX Atilde Gbreve -50
-KPX Atilde Gcommaaccent -50
-KPX Atilde O -40
-KPX Atilde Oacute -40
-KPX Atilde Ocircumflex -40
-KPX Atilde Odieresis -40
-KPX Atilde Ograve -40
-KPX Atilde Ohungarumlaut -40
-KPX Atilde Omacron -40
-KPX Atilde Oslash -40
-KPX Atilde Otilde -40
-KPX Atilde Q -40
-KPX Atilde T -90
-KPX Atilde Tcaron -90
-KPX Atilde Tcommaaccent -90
-KPX Atilde U -50
-KPX Atilde Uacute -50
-KPX Atilde Ucircumflex -50
-KPX Atilde Udieresis -50
-KPX Atilde Ugrave -50
-KPX Atilde Uhungarumlaut -50
-KPX Atilde Umacron -50
-KPX Atilde Uogonek -50
-KPX Atilde Uring -50
-KPX Atilde V -80
-KPX Atilde W -60
-KPX Atilde Y -110
-KPX Atilde Yacute -110
-KPX Atilde Ydieresis -110
-KPX Atilde u -30
-KPX Atilde uacute -30
-KPX Atilde ucircumflex -30
-KPX Atilde udieresis -30
-KPX Atilde ugrave -30
-KPX Atilde uhungarumlaut -30
-KPX Atilde umacron -30
-KPX Atilde uogonek -30
-KPX Atilde uring -30
-KPX Atilde v -40
-KPX Atilde w -30
-KPX Atilde y -30
-KPX Atilde yacute -30
-KPX Atilde ydieresis -30
-KPX B A -30
-KPX B Aacute -30
-KPX B Abreve -30
-KPX B Acircumflex -30
-KPX B Adieresis -30
-KPX B Agrave -30
-KPX B Amacron -30
-KPX B Aogonek -30
-KPX B Aring -30
-KPX B Atilde -30
-KPX B U -10
-KPX B Uacute -10
-KPX B Ucircumflex -10
-KPX B Udieresis -10
-KPX B Ugrave -10
-KPX B Uhungarumlaut -10
-KPX B Umacron -10
-KPX B Uogonek -10
-KPX B Uring -10
-KPX D A -40
-KPX D Aacute -40
-KPX D Abreve -40
-KPX D Acircumflex -40
-KPX D Adieresis -40
-KPX D Agrave -40
-KPX D Amacron -40
-KPX D Aogonek -40
-KPX D Aring -40
-KPX D Atilde -40
-KPX D V -40
-KPX D W -40
-KPX D Y -70
-KPX D Yacute -70
-KPX D Ydieresis -70
-KPX D comma -30
-KPX D period -30
-KPX Dcaron A -40
-KPX Dcaron Aacute -40
-KPX Dcaron Abreve -40
-KPX Dcaron Acircumflex -40
-KPX Dcaron Adieresis -40
-KPX Dcaron Agrave -40
-KPX Dcaron Amacron -40
-KPX Dcaron Aogonek -40
-KPX Dcaron Aring -40
-KPX Dcaron Atilde -40
-KPX Dcaron V -40
-KPX Dcaron W -40
-KPX Dcaron Y -70
-KPX Dcaron Yacute -70
-KPX Dcaron Ydieresis -70
-KPX Dcaron comma -30
-KPX Dcaron period -30
-KPX Dcroat A -40
-KPX Dcroat Aacute -40
-KPX Dcroat Abreve -40
-KPX Dcroat Acircumflex -40
-KPX Dcroat Adieresis -40
-KPX Dcroat Agrave -40
-KPX Dcroat Amacron -40
-KPX Dcroat Aogonek -40
-KPX Dcroat Aring -40
-KPX Dcroat Atilde -40
-KPX Dcroat V -40
-KPX Dcroat W -40
-KPX Dcroat Y -70
-KPX Dcroat Yacute -70
-KPX Dcroat Ydieresis -70
-KPX Dcroat comma -30
-KPX Dcroat period -30
-KPX F A -80
-KPX F Aacute -80
-KPX F Abreve -80
-KPX F Acircumflex -80
-KPX F Adieresis -80
-KPX F Agrave -80
-KPX F Amacron -80
-KPX F Aogonek -80
-KPX F Aring -80
-KPX F Atilde -80
-KPX F a -20
-KPX F aacute -20
-KPX F abreve -20
-KPX F acircumflex -20
-KPX F adieresis -20
-KPX F agrave -20
-KPX F amacron -20
-KPX F aogonek -20
-KPX F aring -20
-KPX F atilde -20
-KPX F comma -100
-KPX F period -100
-KPX J A -20
-KPX J Aacute -20
-KPX J Abreve -20
-KPX J Acircumflex -20
-KPX J Adieresis -20
-KPX J Agrave -20
-KPX J Amacron -20
-KPX J Aogonek -20
-KPX J Aring -20
-KPX J Atilde -20
-KPX J comma -20
-KPX J period -20
-KPX J u -20
-KPX J uacute -20
-KPX J ucircumflex -20
-KPX J udieresis -20
-KPX J ugrave -20
-KPX J uhungarumlaut -20
-KPX J umacron -20
-KPX J uogonek -20
-KPX J uring -20
-KPX K O -30
-KPX K Oacute -30
-KPX K Ocircumflex -30
-KPX K Odieresis -30
-KPX K Ograve -30
-KPX K Ohungarumlaut -30
-KPX K Omacron -30
-KPX K Oslash -30
-KPX K Otilde -30
-KPX K e -15
-KPX K eacute -15
-KPX K ecaron -15
-KPX K ecircumflex -15
-KPX K edieresis -15
-KPX K edotaccent -15
-KPX K egrave -15
-KPX K emacron -15
-KPX K eogonek -15
-KPX K o -35
-KPX K oacute -35
-KPX K ocircumflex -35
-KPX K odieresis -35
-KPX K ograve -35
-KPX K ohungarumlaut -35
-KPX K omacron -35
-KPX K oslash -35
-KPX K otilde -35
-KPX K u -30
-KPX K uacute -30
-KPX K ucircumflex -30
-KPX K udieresis -30
-KPX K ugrave -30
-KPX K uhungarumlaut -30
-KPX K umacron -30
-KPX K uogonek -30
-KPX K uring -30
-KPX K y -40
-KPX K yacute -40
-KPX K ydieresis -40
-KPX Kcommaaccent O -30
-KPX Kcommaaccent Oacute -30
-KPX Kcommaaccent Ocircumflex -30
-KPX Kcommaaccent Odieresis -30
-KPX Kcommaaccent Ograve -30
-KPX Kcommaaccent Ohungarumlaut -30
-KPX Kcommaaccent Omacron -30
-KPX Kcommaaccent Oslash -30
-KPX Kcommaaccent Otilde -30
-KPX Kcommaaccent e -15
-KPX Kcommaaccent eacute -15
-KPX Kcommaaccent ecaron -15
-KPX Kcommaaccent ecircumflex -15
-KPX Kcommaaccent edieresis -15
-KPX Kcommaaccent edotaccent -15
-KPX Kcommaaccent egrave -15
-KPX Kcommaaccent emacron -15
-KPX Kcommaaccent eogonek -15
-KPX Kcommaaccent o -35
-KPX Kcommaaccent oacute -35
-KPX Kcommaaccent ocircumflex -35
-KPX Kcommaaccent odieresis -35
-KPX Kcommaaccent ograve -35
-KPX Kcommaaccent ohungarumlaut -35
-KPX Kcommaaccent omacron -35
-KPX Kcommaaccent oslash -35
-KPX Kcommaaccent otilde -35
-KPX Kcommaaccent u -30
-KPX Kcommaaccent uacute -30
-KPX Kcommaaccent ucircumflex -30
-KPX Kcommaaccent udieresis -30
-KPX Kcommaaccent ugrave -30
-KPX Kcommaaccent uhungarumlaut -30
-KPX Kcommaaccent umacron -30
-KPX Kcommaaccent uogonek -30
-KPX Kcommaaccent uring -30
-KPX Kcommaaccent y -40
-KPX Kcommaaccent yacute -40
-KPX Kcommaaccent ydieresis -40
-KPX L T -90
-KPX L Tcaron -90
-KPX L Tcommaaccent -90
-KPX L V -110
-KPX L W -80
-KPX L Y -120
-KPX L Yacute -120
-KPX L Ydieresis -120
-KPX L quotedblright -140
-KPX L quoteright -140
-KPX L y -30
-KPX L yacute -30
-KPX L ydieresis -30
-KPX Lacute T -90
-KPX Lacute Tcaron -90
-KPX Lacute Tcommaaccent -90
-KPX Lacute V -110
-KPX Lacute W -80
-KPX Lacute Y -120
-KPX Lacute Yacute -120
-KPX Lacute Ydieresis -120
-KPX Lacute quotedblright -140
-KPX Lacute quoteright -140
-KPX Lacute y -30
-KPX Lacute yacute -30
-KPX Lacute ydieresis -30
-KPX Lcommaaccent T -90
-KPX Lcommaaccent Tcaron -90
-KPX Lcommaaccent Tcommaaccent -90
-KPX Lcommaaccent V -110
-KPX Lcommaaccent W -80
-KPX Lcommaaccent Y -120
-KPX Lcommaaccent Yacute -120
-KPX Lcommaaccent Ydieresis -120
-KPX Lcommaaccent quotedblright -140
-KPX Lcommaaccent quoteright -140
-KPX Lcommaaccent y -30
-KPX Lcommaaccent yacute -30
-KPX Lcommaaccent ydieresis -30
-KPX Lslash T -90
-KPX Lslash Tcaron -90
-KPX Lslash Tcommaaccent -90
-KPX Lslash V -110
-KPX Lslash W -80
-KPX Lslash Y -120
-KPX Lslash Yacute -120
-KPX Lslash Ydieresis -120
-KPX Lslash quotedblright -140
-KPX Lslash quoteright -140
-KPX Lslash y -30
-KPX Lslash yacute -30
-KPX Lslash ydieresis -30
-KPX O A -50
-KPX O Aacute -50
-KPX O Abreve -50
-KPX O Acircumflex -50
-KPX O Adieresis -50
-KPX O Agrave -50
-KPX O Amacron -50
-KPX O Aogonek -50
-KPX O Aring -50
-KPX O Atilde -50
-KPX O T -40
-KPX O Tcaron -40
-KPX O Tcommaaccent -40
-KPX O V -50
-KPX O W -50
-KPX O X -50
-KPX O Y -70
-KPX O Yacute -70
-KPX O Ydieresis -70
-KPX O comma -40
-KPX O period -40
-KPX Oacute A -50
-KPX Oacute Aacute -50
-KPX Oacute Abreve -50
-KPX Oacute Acircumflex -50
-KPX Oacute Adieresis -50
-KPX Oacute Agrave -50
-KPX Oacute Amacron -50
-KPX Oacute Aogonek -50
-KPX Oacute Aring -50
-KPX Oacute Atilde -50
-KPX Oacute T -40
-KPX Oacute Tcaron -40
-KPX Oacute Tcommaaccent -40
-KPX Oacute V -50
-KPX Oacute W -50
-KPX Oacute X -50
-KPX Oacute Y -70
-KPX Oacute Yacute -70
-KPX Oacute Ydieresis -70
-KPX Oacute comma -40
-KPX Oacute period -40
-KPX Ocircumflex A -50
-KPX Ocircumflex Aacute -50
-KPX Ocircumflex Abreve -50
-KPX Ocircumflex Acircumflex -50
-KPX Ocircumflex Adieresis -50
-KPX Ocircumflex Agrave -50
-KPX Ocircumflex Amacron -50
-KPX Ocircumflex Aogonek -50
-KPX Ocircumflex Aring -50
-KPX Ocircumflex Atilde -50
-KPX Ocircumflex T -40
-KPX Ocircumflex Tcaron -40
-KPX Ocircumflex Tcommaaccent -40
-KPX Ocircumflex V -50
-KPX Ocircumflex W -50
-KPX Ocircumflex X -50
-KPX Ocircumflex Y -70
-KPX Ocircumflex Yacute -70
-KPX Ocircumflex Ydieresis -70
-KPX Ocircumflex comma -40
-KPX Ocircumflex period -40
-KPX Odieresis A -50
-KPX Odieresis Aacute -50
-KPX Odieresis Abreve -50
-KPX Odieresis Acircumflex -50
-KPX Odieresis Adieresis -50
-KPX Odieresis Agrave -50
-KPX Odieresis Amacron -50
-KPX Odieresis Aogonek -50
-KPX Odieresis Aring -50
-KPX Odieresis Atilde -50
-KPX Odieresis T -40
-KPX Odieresis Tcaron -40
-KPX Odieresis Tcommaaccent -40
-KPX Odieresis V -50
-KPX Odieresis W -50
-KPX Odieresis X -50
-KPX Odieresis Y -70
-KPX Odieresis Yacute -70
-KPX Odieresis Ydieresis -70
-KPX Odieresis comma -40
-KPX Odieresis period -40
-KPX Ograve A -50
-KPX Ograve Aacute -50
-KPX Ograve Abreve -50
-KPX Ograve Acircumflex -50
-KPX Ograve Adieresis -50
-KPX Ograve Agrave -50
-KPX Ograve Amacron -50
-KPX Ograve Aogonek -50
-KPX Ograve Aring -50
-KPX Ograve Atilde -50
-KPX Ograve T -40
-KPX Ograve Tcaron -40
-KPX Ograve Tcommaaccent -40
-KPX Ograve V -50
-KPX Ograve W -50
-KPX Ograve X -50
-KPX Ograve Y -70
-KPX Ograve Yacute -70
-KPX Ograve Ydieresis -70
-KPX Ograve comma -40
-KPX Ograve period -40
-KPX Ohungarumlaut A -50
-KPX Ohungarumlaut Aacute -50
-KPX Ohungarumlaut Abreve -50
-KPX Ohungarumlaut Acircumflex -50
-KPX Ohungarumlaut Adieresis -50
-KPX Ohungarumlaut Agrave -50
-KPX Ohungarumlaut Amacron -50
-KPX Ohungarumlaut Aogonek -50
-KPX Ohungarumlaut Aring -50
-KPX Ohungarumlaut Atilde -50
-KPX Ohungarumlaut T -40
-KPX Ohungarumlaut Tcaron -40
-KPX Ohungarumlaut Tcommaaccent -40
-KPX Ohungarumlaut V -50
-KPX Ohungarumlaut W -50
-KPX Ohungarumlaut X -50
-KPX Ohungarumlaut Y -70
-KPX Ohungarumlaut Yacute -70
-KPX Ohungarumlaut Ydieresis -70
-KPX Ohungarumlaut comma -40
-KPX Ohungarumlaut period -40
-KPX Omacron A -50
-KPX Omacron Aacute -50
-KPX Omacron Abreve -50
-KPX Omacron Acircumflex -50
-KPX Omacron Adieresis -50
-KPX Omacron Agrave -50
-KPX Omacron Amacron -50
-KPX Omacron Aogonek -50
-KPX Omacron Aring -50
-KPX Omacron Atilde -50
-KPX Omacron T -40
-KPX Omacron Tcaron -40
-KPX Omacron Tcommaaccent -40
-KPX Omacron V -50
-KPX Omacron W -50
-KPX Omacron X -50
-KPX Omacron Y -70
-KPX Omacron Yacute -70
-KPX Omacron Ydieresis -70
-KPX Omacron comma -40
-KPX Omacron period -40
-KPX Oslash A -50
-KPX Oslash Aacute -50
-KPX Oslash Abreve -50
-KPX Oslash Acircumflex -50
-KPX Oslash Adieresis -50
-KPX Oslash Agrave -50
-KPX Oslash Amacron -50
-KPX Oslash Aogonek -50
-KPX Oslash Aring -50
-KPX Oslash Atilde -50
-KPX Oslash T -40
-KPX Oslash Tcaron -40
-KPX Oslash Tcommaaccent -40
-KPX Oslash V -50
-KPX Oslash W -50
-KPX Oslash X -50
-KPX Oslash Y -70
-KPX Oslash Yacute -70
-KPX Oslash Ydieresis -70
-KPX Oslash comma -40
-KPX Oslash period -40
-KPX Otilde A -50
-KPX Otilde Aacute -50
-KPX Otilde Abreve -50
-KPX Otilde Acircumflex -50
-KPX Otilde Adieresis -50
-KPX Otilde Agrave -50
-KPX Otilde Amacron -50
-KPX Otilde Aogonek -50
-KPX Otilde Aring -50
-KPX Otilde Atilde -50
-KPX Otilde T -40
-KPX Otilde Tcaron -40
-KPX Otilde Tcommaaccent -40
-KPX Otilde V -50
-KPX Otilde W -50
-KPX Otilde X -50
-KPX Otilde Y -70
-KPX Otilde Yacute -70
-KPX Otilde Ydieresis -70
-KPX Otilde comma -40
-KPX Otilde period -40
-KPX P A -100
-KPX P Aacute -100
-KPX P Abreve -100
-KPX P Acircumflex -100
-KPX P Adieresis -100
-KPX P Agrave -100
-KPX P Amacron -100
-KPX P Aogonek -100
-KPX P Aring -100
-KPX P Atilde -100
-KPX P a -30
-KPX P aacute -30
-KPX P abreve -30
-KPX P acircumflex -30
-KPX P adieresis -30
-KPX P agrave -30
-KPX P amacron -30
-KPX P aogonek -30
-KPX P aring -30
-KPX P atilde -30
-KPX P comma -120
-KPX P e -30
-KPX P eacute -30
-KPX P ecaron -30
-KPX P ecircumflex -30
-KPX P edieresis -30
-KPX P edotaccent -30
-KPX P egrave -30
-KPX P emacron -30
-KPX P eogonek -30
-KPX P o -40
-KPX P oacute -40
-KPX P ocircumflex -40
-KPX P odieresis -40
-KPX P ograve -40
-KPX P ohungarumlaut -40
-KPX P omacron -40
-KPX P oslash -40
-KPX P otilde -40
-KPX P period -120
-KPX Q U -10
-KPX Q Uacute -10
-KPX Q Ucircumflex -10
-KPX Q Udieresis -10
-KPX Q Ugrave -10
-KPX Q Uhungarumlaut -10
-KPX Q Umacron -10
-KPX Q Uogonek -10
-KPX Q Uring -10
-KPX Q comma 20
-KPX Q period 20
-KPX R O -20
-KPX R Oacute -20
-KPX R Ocircumflex -20
-KPX R Odieresis -20
-KPX R Ograve -20
-KPX R Ohungarumlaut -20
-KPX R Omacron -20
-KPX R Oslash -20
-KPX R Otilde -20
-KPX R T -20
-KPX R Tcaron -20
-KPX R Tcommaaccent -20
-KPX R U -20
-KPX R Uacute -20
-KPX R Ucircumflex -20
-KPX R Udieresis -20
-KPX R Ugrave -20
-KPX R Uhungarumlaut -20
-KPX R Umacron -20
-KPX R Uogonek -20
-KPX R Uring -20
-KPX R V -50
-KPX R W -40
-KPX R Y -50
-KPX R Yacute -50
-KPX R Ydieresis -50
-KPX Racute O -20
-KPX Racute Oacute -20
-KPX Racute Ocircumflex -20
-KPX Racute Odieresis -20
-KPX Racute Ograve -20
-KPX Racute Ohungarumlaut -20
-KPX Racute Omacron -20
-KPX Racute Oslash -20
-KPX Racute Otilde -20
-KPX Racute T -20
-KPX Racute Tcaron -20
-KPX Racute Tcommaaccent -20
-KPX Racute U -20
-KPX Racute Uacute -20
-KPX Racute Ucircumflex -20
-KPX Racute Udieresis -20
-KPX Racute Ugrave -20
-KPX Racute Uhungarumlaut -20
-KPX Racute Umacron -20
-KPX Racute Uogonek -20
-KPX Racute Uring -20
-KPX Racute V -50
-KPX Racute W -40
-KPX Racute Y -50
-KPX Racute Yacute -50
-KPX Racute Ydieresis -50
-KPX Rcaron O -20
-KPX Rcaron Oacute -20
-KPX Rcaron Ocircumflex -20
-KPX Rcaron Odieresis -20
-KPX Rcaron Ograve -20
-KPX Rcaron Ohungarumlaut -20
-KPX Rcaron Omacron -20
-KPX Rcaron Oslash -20
-KPX Rcaron Otilde -20
-KPX Rcaron T -20
-KPX Rcaron Tcaron -20
-KPX Rcaron Tcommaaccent -20
-KPX Rcaron U -20
-KPX Rcaron Uacute -20
-KPX Rcaron Ucircumflex -20
-KPX Rcaron Udieresis -20
-KPX Rcaron Ugrave -20
-KPX Rcaron Uhungarumlaut -20
-KPX Rcaron Umacron -20
-KPX Rcaron Uogonek -20
-KPX Rcaron Uring -20
-KPX Rcaron V -50
-KPX Rcaron W -40
-KPX Rcaron Y -50
-KPX Rcaron Yacute -50
-KPX Rcaron Ydieresis -50
-KPX Rcommaaccent O -20
-KPX Rcommaaccent Oacute -20
-KPX Rcommaaccent Ocircumflex -20
-KPX Rcommaaccent Odieresis -20
-KPX Rcommaaccent Ograve -20
-KPX Rcommaaccent Ohungarumlaut -20
-KPX Rcommaaccent Omacron -20
-KPX Rcommaaccent Oslash -20
-KPX Rcommaaccent Otilde -20
-KPX Rcommaaccent T -20
-KPX Rcommaaccent Tcaron -20
-KPX Rcommaaccent Tcommaaccent -20
-KPX Rcommaaccent U -20
-KPX Rcommaaccent Uacute -20
-KPX Rcommaaccent Ucircumflex -20
-KPX Rcommaaccent Udieresis -20
-KPX Rcommaaccent Ugrave -20
-KPX Rcommaaccent Uhungarumlaut -20
-KPX Rcommaaccent Umacron -20
-KPX Rcommaaccent Uogonek -20
-KPX Rcommaaccent Uring -20
-KPX Rcommaaccent V -50
-KPX Rcommaaccent W -40
-KPX Rcommaaccent Y -50
-KPX Rcommaaccent Yacute -50
-KPX Rcommaaccent Ydieresis -50
-KPX T A -90
-KPX T Aacute -90
-KPX T Abreve -90
-KPX T Acircumflex -90
-KPX T Adieresis -90
-KPX T Agrave -90
-KPX T Amacron -90
-KPX T Aogonek -90
-KPX T Aring -90
-KPX T Atilde -90
-KPX T O -40
-KPX T Oacute -40
-KPX T Ocircumflex -40
-KPX T Odieresis -40
-KPX T Ograve -40
-KPX T Ohungarumlaut -40
-KPX T Omacron -40
-KPX T Oslash -40
-KPX T Otilde -40
-KPX T a -80
-KPX T aacute -80
-KPX T abreve -80
-KPX T acircumflex -80
-KPX T adieresis -80
-KPX T agrave -80
-KPX T amacron -80
-KPX T aogonek -80
-KPX T aring -80
-KPX T atilde -80
-KPX T colon -40
-KPX T comma -80
-KPX T e -60
-KPX T eacute -60
-KPX T ecaron -60
-KPX T ecircumflex -60
-KPX T edieresis -60
-KPX T edotaccent -60
-KPX T egrave -60
-KPX T emacron -60
-KPX T eogonek -60
-KPX T hyphen -120
-KPX T o -80
-KPX T oacute -80
-KPX T ocircumflex -80
-KPX T odieresis -80
-KPX T ograve -80
-KPX T ohungarumlaut -80
-KPX T omacron -80
-KPX T oslash -80
-KPX T otilde -80
-KPX T period -80
-KPX T r -80
-KPX T racute -80
-KPX T rcommaaccent -80
-KPX T semicolon -40
-KPX T u -90
-KPX T uacute -90
-KPX T ucircumflex -90
-KPX T udieresis -90
-KPX T ugrave -90
-KPX T uhungarumlaut -90
-KPX T umacron -90
-KPX T uogonek -90
-KPX T uring -90
-KPX T w -60
-KPX T y -60
-KPX T yacute -60
-KPX T ydieresis -60
-KPX Tcaron A -90
-KPX Tcaron Aacute -90
-KPX Tcaron Abreve -90
-KPX Tcaron Acircumflex -90
-KPX Tcaron Adieresis -90
-KPX Tcaron Agrave -90
-KPX Tcaron Amacron -90
-KPX Tcaron Aogonek -90
-KPX Tcaron Aring -90
-KPX Tcaron Atilde -90
-KPX Tcaron O -40
-KPX Tcaron Oacute -40
-KPX Tcaron Ocircumflex -40
-KPX Tcaron Odieresis -40
-KPX Tcaron Ograve -40
-KPX Tcaron Ohungarumlaut -40
-KPX Tcaron Omacron -40
-KPX Tcaron Oslash -40
-KPX Tcaron Otilde -40
-KPX Tcaron a -80
-KPX Tcaron aacute -80
-KPX Tcaron abreve -80
-KPX Tcaron acircumflex -80
-KPX Tcaron adieresis -80
-KPX Tcaron agrave -80
-KPX Tcaron amacron -80
-KPX Tcaron aogonek -80
-KPX Tcaron aring -80
-KPX Tcaron atilde -80
-KPX Tcaron colon -40
-KPX Tcaron comma -80
-KPX Tcaron e -60
-KPX Tcaron eacute -60
-KPX Tcaron ecaron -60
-KPX Tcaron ecircumflex -60
-KPX Tcaron edieresis -60
-KPX Tcaron edotaccent -60
-KPX Tcaron egrave -60
-KPX Tcaron emacron -60
-KPX Tcaron eogonek -60
-KPX Tcaron hyphen -120
-KPX Tcaron o -80
-KPX Tcaron oacute -80
-KPX Tcaron ocircumflex -80
-KPX Tcaron odieresis -80
-KPX Tcaron ograve -80
-KPX Tcaron ohungarumlaut -80
-KPX Tcaron omacron -80
-KPX Tcaron oslash -80
-KPX Tcaron otilde -80
-KPX Tcaron period -80
-KPX Tcaron r -80
-KPX Tcaron racute -80
-KPX Tcaron rcommaaccent -80
-KPX Tcaron semicolon -40
-KPX Tcaron u -90
-KPX Tcaron uacute -90
-KPX Tcaron ucircumflex -90
-KPX Tcaron udieresis -90
-KPX Tcaron ugrave -90
-KPX Tcaron uhungarumlaut -90
-KPX Tcaron umacron -90
-KPX Tcaron uogonek -90
-KPX Tcaron uring -90
-KPX Tcaron w -60
-KPX Tcaron y -60
-KPX Tcaron yacute -60
-KPX Tcaron ydieresis -60
-KPX Tcommaaccent A -90
-KPX Tcommaaccent Aacute -90
-KPX Tcommaaccent Abreve -90
-KPX Tcommaaccent Acircumflex -90
-KPX Tcommaaccent Adieresis -90
-KPX Tcommaaccent Agrave -90
-KPX Tcommaaccent Amacron -90
-KPX Tcommaaccent Aogonek -90
-KPX Tcommaaccent Aring -90
-KPX Tcommaaccent Atilde -90
-KPX Tcommaaccent O -40
-KPX Tcommaaccent Oacute -40
-KPX Tcommaaccent Ocircumflex -40
-KPX Tcommaaccent Odieresis -40
-KPX Tcommaaccent Ograve -40
-KPX Tcommaaccent Ohungarumlaut -40
-KPX Tcommaaccent Omacron -40
-KPX Tcommaaccent Oslash -40
-KPX Tcommaaccent Otilde -40
-KPX Tcommaaccent a -80
-KPX Tcommaaccent aacute -80
-KPX Tcommaaccent abreve -80
-KPX Tcommaaccent acircumflex -80
-KPX Tcommaaccent adieresis -80
-KPX Tcommaaccent agrave -80
-KPX Tcommaaccent amacron -80
-KPX Tcommaaccent aogonek -80
-KPX Tcommaaccent aring -80
-KPX Tcommaaccent atilde -80
-KPX Tcommaaccent colon -40
-KPX Tcommaaccent comma -80
-KPX Tcommaaccent e -60
-KPX Tcommaaccent eacute -60
-KPX Tcommaaccent ecaron -60
-KPX Tcommaaccent ecircumflex -60
-KPX Tcommaaccent edieresis -60
-KPX Tcommaaccent edotaccent -60
-KPX Tcommaaccent egrave -60
-KPX Tcommaaccent emacron -60
-KPX Tcommaaccent eogonek -60
-KPX Tcommaaccent hyphen -120
-KPX Tcommaaccent o -80
-KPX Tcommaaccent oacute -80
-KPX Tcommaaccent ocircumflex -80
-KPX Tcommaaccent odieresis -80
-KPX Tcommaaccent ograve -80
-KPX Tcommaaccent ohungarumlaut -80
-KPX Tcommaaccent omacron -80
-KPX Tcommaaccent oslash -80
-KPX Tcommaaccent otilde -80
-KPX Tcommaaccent period -80
-KPX Tcommaaccent r -80
-KPX Tcommaaccent racute -80
-KPX Tcommaaccent rcommaaccent -80
-KPX Tcommaaccent semicolon -40
-KPX Tcommaaccent u -90
-KPX Tcommaaccent uacute -90
-KPX Tcommaaccent ucircumflex -90
-KPX Tcommaaccent udieresis -90
-KPX Tcommaaccent ugrave -90
-KPX Tcommaaccent uhungarumlaut -90
-KPX Tcommaaccent umacron -90
-KPX Tcommaaccent uogonek -90
-KPX Tcommaaccent uring -90
-KPX Tcommaaccent w -60
-KPX Tcommaaccent y -60
-KPX Tcommaaccent yacute -60
-KPX Tcommaaccent ydieresis -60
-KPX U A -50
-KPX U Aacute -50
-KPX U Abreve -50
-KPX U Acircumflex -50
-KPX U Adieresis -50
-KPX U Agrave -50
-KPX U Amacron -50
-KPX U Aogonek -50
-KPX U Aring -50
-KPX U Atilde -50
-KPX U comma -30
-KPX U period -30
-KPX Uacute A -50
-KPX Uacute Aacute -50
-KPX Uacute Abreve -50
-KPX Uacute Acircumflex -50
-KPX Uacute Adieresis -50
-KPX Uacute Agrave -50
-KPX Uacute Amacron -50
-KPX Uacute Aogonek -50
-KPX Uacute Aring -50
-KPX Uacute Atilde -50
-KPX Uacute comma -30
-KPX Uacute period -30
-KPX Ucircumflex A -50
-KPX Ucircumflex Aacute -50
-KPX Ucircumflex Abreve -50
-KPX Ucircumflex Acircumflex -50
-KPX Ucircumflex Adieresis -50
-KPX Ucircumflex Agrave -50
-KPX Ucircumflex Amacron -50
-KPX Ucircumflex Aogonek -50
-KPX Ucircumflex Aring -50
-KPX Ucircumflex Atilde -50
-KPX Ucircumflex comma -30
-KPX Ucircumflex period -30
-KPX Udieresis A -50
-KPX Udieresis Aacute -50
-KPX Udieresis Abreve -50
-KPX Udieresis Acircumflex -50
-KPX Udieresis Adieresis -50
-KPX Udieresis Agrave -50
-KPX Udieresis Amacron -50
-KPX Udieresis Aogonek -50
-KPX Udieresis Aring -50
-KPX Udieresis Atilde -50
-KPX Udieresis comma -30
-KPX Udieresis period -30
-KPX Ugrave A -50
-KPX Ugrave Aacute -50
-KPX Ugrave Abreve -50
-KPX Ugrave Acircumflex -50
-KPX Ugrave Adieresis -50
-KPX Ugrave Agrave -50
-KPX Ugrave Amacron -50
-KPX Ugrave Aogonek -50
-KPX Ugrave Aring -50
-KPX Ugrave Atilde -50
-KPX Ugrave comma -30
-KPX Ugrave period -30
-KPX Uhungarumlaut A -50
-KPX Uhungarumlaut Aacute -50
-KPX Uhungarumlaut Abreve -50
-KPX Uhungarumlaut Acircumflex -50
-KPX Uhungarumlaut Adieresis -50
-KPX Uhungarumlaut Agrave -50
-KPX Uhungarumlaut Amacron -50
-KPX Uhungarumlaut Aogonek -50
-KPX Uhungarumlaut Aring -50
-KPX Uhungarumlaut Atilde -50
-KPX Uhungarumlaut comma -30
-KPX Uhungarumlaut period -30
-KPX Umacron A -50
-KPX Umacron Aacute -50
-KPX Umacron Abreve -50
-KPX Umacron Acircumflex -50
-KPX Umacron Adieresis -50
-KPX Umacron Agrave -50
-KPX Umacron Amacron -50
-KPX Umacron Aogonek -50
-KPX Umacron Aring -50
-KPX Umacron Atilde -50
-KPX Umacron comma -30
-KPX Umacron period -30
-KPX Uogonek A -50
-KPX Uogonek Aacute -50
-KPX Uogonek Abreve -50
-KPX Uogonek Acircumflex -50
-KPX Uogonek Adieresis -50
-KPX Uogonek Agrave -50
-KPX Uogonek Amacron -50
-KPX Uogonek Aogonek -50
-KPX Uogonek Aring -50
-KPX Uogonek Atilde -50
-KPX Uogonek comma -30
-KPX Uogonek period -30
-KPX Uring A -50
-KPX Uring Aacute -50
-KPX Uring Abreve -50
-KPX Uring Acircumflex -50
-KPX Uring Adieresis -50
-KPX Uring Agrave -50
-KPX Uring Amacron -50
-KPX Uring Aogonek -50
-KPX Uring Aring -50
-KPX Uring Atilde -50
-KPX Uring comma -30
-KPX Uring period -30
-KPX V A -80
-KPX V Aacute -80
-KPX V Abreve -80
-KPX V Acircumflex -80
-KPX V Adieresis -80
-KPX V Agrave -80
-KPX V Amacron -80
-KPX V Aogonek -80
-KPX V Aring -80
-KPX V Atilde -80
-KPX V G -50
-KPX V Gbreve -50
-KPX V Gcommaaccent -50
-KPX V O -50
-KPX V Oacute -50
-KPX V Ocircumflex -50
-KPX V Odieresis -50
-KPX V Ograve -50
-KPX V Ohungarumlaut -50
-KPX V Omacron -50
-KPX V Oslash -50
-KPX V Otilde -50
-KPX V a -60
-KPX V aacute -60
-KPX V abreve -60
-KPX V acircumflex -60
-KPX V adieresis -60
-KPX V agrave -60
-KPX V amacron -60
-KPX V aogonek -60
-KPX V aring -60
-KPX V atilde -60
-KPX V colon -40
-KPX V comma -120
-KPX V e -50
-KPX V eacute -50
-KPX V ecaron -50
-KPX V ecircumflex -50
-KPX V edieresis -50
-KPX V edotaccent -50
-KPX V egrave -50
-KPX V emacron -50
-KPX V eogonek -50
-KPX V hyphen -80
-KPX V o -90
-KPX V oacute -90
-KPX V ocircumflex -90
-KPX V odieresis -90
-KPX V ograve -90
-KPX V ohungarumlaut -90
-KPX V omacron -90
-KPX V oslash -90
-KPX V otilde -90
-KPX V period -120
-KPX V semicolon -40
-KPX V u -60
-KPX V uacute -60
-KPX V ucircumflex -60
-KPX V udieresis -60
-KPX V ugrave -60
-KPX V uhungarumlaut -60
-KPX V umacron -60
-KPX V uogonek -60
-KPX V uring -60
-KPX W A -60
-KPX W Aacute -60
-KPX W Abreve -60
-KPX W Acircumflex -60
-KPX W Adieresis -60
-KPX W Agrave -60
-KPX W Amacron -60
-KPX W Aogonek -60
-KPX W Aring -60
-KPX W Atilde -60
-KPX W O -20
-KPX W Oacute -20
-KPX W Ocircumflex -20
-KPX W Odieresis -20
-KPX W Ograve -20
-KPX W Ohungarumlaut -20
-KPX W Omacron -20
-KPX W Oslash -20
-KPX W Otilde -20
-KPX W a -40
-KPX W aacute -40
-KPX W abreve -40
-KPX W acircumflex -40
-KPX W adieresis -40
-KPX W agrave -40
-KPX W amacron -40
-KPX W aogonek -40
-KPX W aring -40
-KPX W atilde -40
-KPX W colon -10
-KPX W comma -80
-KPX W e -35
-KPX W eacute -35
-KPX W ecaron -35
-KPX W ecircumflex -35
-KPX W edieresis -35
-KPX W edotaccent -35
-KPX W egrave -35
-KPX W emacron -35
-KPX W eogonek -35
-KPX W hyphen -40
-KPX W o -60
-KPX W oacute -60
-KPX W ocircumflex -60
-KPX W odieresis -60
-KPX W ograve -60
-KPX W ohungarumlaut -60
-KPX W omacron -60
-KPX W oslash -60
-KPX W otilde -60
-KPX W period -80
-KPX W semicolon -10
-KPX W u -45
-KPX W uacute -45
-KPX W ucircumflex -45
-KPX W udieresis -45
-KPX W ugrave -45
-KPX W uhungarumlaut -45
-KPX W umacron -45
-KPX W uogonek -45
-KPX W uring -45
-KPX W y -20
-KPX W yacute -20
-KPX W ydieresis -20
-KPX Y A -110
-KPX Y Aacute -110
-KPX Y Abreve -110
-KPX Y Acircumflex -110
-KPX Y Adieresis -110
-KPX Y Agrave -110
-KPX Y Amacron -110
-KPX Y Aogonek -110
-KPX Y Aring -110
-KPX Y Atilde -110
-KPX Y O -70
-KPX Y Oacute -70
-KPX Y Ocircumflex -70
-KPX Y Odieresis -70
-KPX Y Ograve -70
-KPX Y Ohungarumlaut -70
-KPX Y Omacron -70
-KPX Y Oslash -70
-KPX Y Otilde -70
-KPX Y a -90
-KPX Y aacute -90
-KPX Y abreve -90
-KPX Y acircumflex -90
-KPX Y adieresis -90
-KPX Y agrave -90
-KPX Y amacron -90
-KPX Y aogonek -90
-KPX Y aring -90
-KPX Y atilde -90
-KPX Y colon -50
-KPX Y comma -100
-KPX Y e -80
-KPX Y eacute -80
-KPX Y ecaron -80
-KPX Y ecircumflex -80
-KPX Y edieresis -80
-KPX Y edotaccent -80
-KPX Y egrave -80
-KPX Y emacron -80
-KPX Y eogonek -80
-KPX Y o -100
-KPX Y oacute -100
-KPX Y ocircumflex -100
-KPX Y odieresis -100
-KPX Y ograve -100
-KPX Y ohungarumlaut -100
-KPX Y omacron -100
-KPX Y oslash -100
-KPX Y otilde -100
-KPX Y period -100
-KPX Y semicolon -50
-KPX Y u -100
-KPX Y uacute -100
-KPX Y ucircumflex -100
-KPX Y udieresis -100
-KPX Y ugrave -100
-KPX Y uhungarumlaut -100
-KPX Y umacron -100
-KPX Y uogonek -100
-KPX Y uring -100
-KPX Yacute A -110
-KPX Yacute Aacute -110
-KPX Yacute Abreve -110
-KPX Yacute Acircumflex -110
-KPX Yacute Adieresis -110
-KPX Yacute Agrave -110
-KPX Yacute Amacron -110
-KPX Yacute Aogonek -110
-KPX Yacute Aring -110
-KPX Yacute Atilde -110
-KPX Yacute O -70
-KPX Yacute Oacute -70
-KPX Yacute Ocircumflex -70
-KPX Yacute Odieresis -70
-KPX Yacute Ograve -70
-KPX Yacute Ohungarumlaut -70
-KPX Yacute Omacron -70
-KPX Yacute Oslash -70
-KPX Yacute Otilde -70
-KPX Yacute a -90
-KPX Yacute aacute -90
-KPX Yacute abreve -90
-KPX Yacute acircumflex -90
-KPX Yacute adieresis -90
-KPX Yacute agrave -90
-KPX Yacute amacron -90
-KPX Yacute aogonek -90
-KPX Yacute aring -90
-KPX Yacute atilde -90
-KPX Yacute colon -50
-KPX Yacute comma -100
-KPX Yacute e -80
-KPX Yacute eacute -80
-KPX Yacute ecaron -80
-KPX Yacute ecircumflex -80
-KPX Yacute edieresis -80
-KPX Yacute edotaccent -80
-KPX Yacute egrave -80
-KPX Yacute emacron -80
-KPX Yacute eogonek -80
-KPX Yacute o -100
-KPX Yacute oacute -100
-KPX Yacute ocircumflex -100
-KPX Yacute odieresis -100
-KPX Yacute ograve -100
-KPX Yacute ohungarumlaut -100
-KPX Yacute omacron -100
-KPX Yacute oslash -100
-KPX Yacute otilde -100
-KPX Yacute period -100
-KPX Yacute semicolon -50
-KPX Yacute u -100
-KPX Yacute uacute -100
-KPX Yacute ucircumflex -100
-KPX Yacute udieresis -100
-KPX Yacute ugrave -100
-KPX Yacute uhungarumlaut -100
-KPX Yacute umacron -100
-KPX Yacute uogonek -100
-KPX Yacute uring -100
-KPX Ydieresis A -110
-KPX Ydieresis Aacute -110
-KPX Ydieresis Abreve -110
-KPX Ydieresis Acircumflex -110
-KPX Ydieresis Adieresis -110
-KPX Ydieresis Agrave -110
-KPX Ydieresis Amacron -110
-KPX Ydieresis Aogonek -110
-KPX Ydieresis Aring -110
-KPX Ydieresis Atilde -110
-KPX Ydieresis O -70
-KPX Ydieresis Oacute -70
-KPX Ydieresis Ocircumflex -70
-KPX Ydieresis Odieresis -70
-KPX Ydieresis Ograve -70
-KPX Ydieresis Ohungarumlaut -70
-KPX Ydieresis Omacron -70
-KPX Ydieresis Oslash -70
-KPX Ydieresis Otilde -70
-KPX Ydieresis a -90
-KPX Ydieresis aacute -90
-KPX Ydieresis abreve -90
-KPX Ydieresis acircumflex -90
-KPX Ydieresis adieresis -90
-KPX Ydieresis agrave -90
-KPX Ydieresis amacron -90
-KPX Ydieresis aogonek -90
-KPX Ydieresis aring -90
-KPX Ydieresis atilde -90
-KPX Ydieresis colon -50
-KPX Ydieresis comma -100
-KPX Ydieresis e -80
-KPX Ydieresis eacute -80
-KPX Ydieresis ecaron -80
-KPX Ydieresis ecircumflex -80
-KPX Ydieresis edieresis -80
-KPX Ydieresis edotaccent -80
-KPX Ydieresis egrave -80
-KPX Ydieresis emacron -80
-KPX Ydieresis eogonek -80
-KPX Ydieresis o -100
-KPX Ydieresis oacute -100
-KPX Ydieresis ocircumflex -100
-KPX Ydieresis odieresis -100
-KPX Ydieresis ograve -100
-KPX Ydieresis ohungarumlaut -100
-KPX Ydieresis omacron -100
-KPX Ydieresis oslash -100
-KPX Ydieresis otilde -100
-KPX Ydieresis period -100
-KPX Ydieresis semicolon -50
-KPX Ydieresis u -100
-KPX Ydieresis uacute -100
-KPX Ydieresis ucircumflex -100
-KPX Ydieresis udieresis -100
-KPX Ydieresis ugrave -100
-KPX Ydieresis uhungarumlaut -100
-KPX Ydieresis umacron -100
-KPX Ydieresis uogonek -100
-KPX Ydieresis uring -100
-KPX a g -10
-KPX a gbreve -10
-KPX a gcommaaccent -10
-KPX a v -15
-KPX a w -15
-KPX a y -20
-KPX a yacute -20
-KPX a ydieresis -20
-KPX aacute g -10
-KPX aacute gbreve -10
-KPX aacute gcommaaccent -10
-KPX aacute v -15
-KPX aacute w -15
-KPX aacute y -20
-KPX aacute yacute -20
-KPX aacute ydieresis -20
-KPX abreve g -10
-KPX abreve gbreve -10
-KPX abreve gcommaaccent -10
-KPX abreve v -15
-KPX abreve w -15
-KPX abreve y -20
-KPX abreve yacute -20
-KPX abreve ydieresis -20
-KPX acircumflex g -10
-KPX acircumflex gbreve -10
-KPX acircumflex gcommaaccent -10
-KPX acircumflex v -15
-KPX acircumflex w -15
-KPX acircumflex y -20
-KPX acircumflex yacute -20
-KPX acircumflex ydieresis -20
-KPX adieresis g -10
-KPX adieresis gbreve -10
-KPX adieresis gcommaaccent -10
-KPX adieresis v -15
-KPX adieresis w -15
-KPX adieresis y -20
-KPX adieresis yacute -20
-KPX adieresis ydieresis -20
-KPX agrave g -10
-KPX agrave gbreve -10
-KPX agrave gcommaaccent -10
-KPX agrave v -15
-KPX agrave w -15
-KPX agrave y -20
-KPX agrave yacute -20
-KPX agrave ydieresis -20
-KPX amacron g -10
-KPX amacron gbreve -10
-KPX amacron gcommaaccent -10
-KPX amacron v -15
-KPX amacron w -15
-KPX amacron y -20
-KPX amacron yacute -20
-KPX amacron ydieresis -20
-KPX aogonek g -10
-KPX aogonek gbreve -10
-KPX aogonek gcommaaccent -10
-KPX aogonek v -15
-KPX aogonek w -15
-KPX aogonek y -20
-KPX aogonek yacute -20
-KPX aogonek ydieresis -20
-KPX aring g -10
-KPX aring gbreve -10
-KPX aring gcommaaccent -10
-KPX aring v -15
-KPX aring w -15
-KPX aring y -20
-KPX aring yacute -20
-KPX aring ydieresis -20
-KPX atilde g -10
-KPX atilde gbreve -10
-KPX atilde gcommaaccent -10
-KPX atilde v -15
-KPX atilde w -15
-KPX atilde y -20
-KPX atilde yacute -20
-KPX atilde ydieresis -20
-KPX b l -10
-KPX b lacute -10
-KPX b lcommaaccent -10
-KPX b lslash -10
-KPX b u -20
-KPX b uacute -20
-KPX b ucircumflex -20
-KPX b udieresis -20
-KPX b ugrave -20
-KPX b uhungarumlaut -20
-KPX b umacron -20
-KPX b uogonek -20
-KPX b uring -20
-KPX b v -20
-KPX b y -20
-KPX b yacute -20
-KPX b ydieresis -20
-KPX c h -10
-KPX c k -20
-KPX c kcommaaccent -20
-KPX c l -20
-KPX c lacute -20
-KPX c lcommaaccent -20
-KPX c lslash -20
-KPX c y -10
-KPX c yacute -10
-KPX c ydieresis -10
-KPX cacute h -10
-KPX cacute k -20
-KPX cacute kcommaaccent -20
-KPX cacute l -20
-KPX cacute lacute -20
-KPX cacute lcommaaccent -20
-KPX cacute lslash -20
-KPX cacute y -10
-KPX cacute yacute -10
-KPX cacute ydieresis -10
-KPX ccaron h -10
-KPX ccaron k -20
-KPX ccaron kcommaaccent -20
-KPX ccaron l -20
-KPX ccaron lacute -20
-KPX ccaron lcommaaccent -20
-KPX ccaron lslash -20
-KPX ccaron y -10
-KPX ccaron yacute -10
-KPX ccaron ydieresis -10
-KPX ccedilla h -10
-KPX ccedilla k -20
-KPX ccedilla kcommaaccent -20
-KPX ccedilla l -20
-KPX ccedilla lacute -20
-KPX ccedilla lcommaaccent -20
-KPX ccedilla lslash -20
-KPX ccedilla y -10
-KPX ccedilla yacute -10
-KPX ccedilla ydieresis -10
-KPX colon space -40
-KPX comma quotedblright -120
-KPX comma quoteright -120
-KPX comma space -40
-KPX d d -10
-KPX d dcroat -10
-KPX d v -15
-KPX d w -15
-KPX d y -15
-KPX d yacute -15
-KPX d ydieresis -15
-KPX dcroat d -10
-KPX dcroat dcroat -10
-KPX dcroat v -15
-KPX dcroat w -15
-KPX dcroat y -15
-KPX dcroat yacute -15
-KPX dcroat ydieresis -15
-KPX e comma 10
-KPX e period 20
-KPX e v -15
-KPX e w -15
-KPX e x -15
-KPX e y -15
-KPX e yacute -15
-KPX e ydieresis -15
-KPX eacute comma 10
-KPX eacute period 20
-KPX eacute v -15
-KPX eacute w -15
-KPX eacute x -15
-KPX eacute y -15
-KPX eacute yacute -15
-KPX eacute ydieresis -15
-KPX ecaron comma 10
-KPX ecaron period 20
-KPX ecaron v -15
-KPX ecaron w -15
-KPX ecaron x -15
-KPX ecaron y -15
-KPX ecaron yacute -15
-KPX ecaron ydieresis -15
-KPX ecircumflex comma 10
-KPX ecircumflex period 20
-KPX ecircumflex v -15
-KPX ecircumflex w -15
-KPX ecircumflex x -15
-KPX ecircumflex y -15
-KPX ecircumflex yacute -15
-KPX ecircumflex ydieresis -15
-KPX edieresis comma 10
-KPX edieresis period 20
-KPX edieresis v -15
-KPX edieresis w -15
-KPX edieresis x -15
-KPX edieresis y -15
-KPX edieresis yacute -15
-KPX edieresis ydieresis -15
-KPX edotaccent comma 10
-KPX edotaccent period 20
-KPX edotaccent v -15
-KPX edotaccent w -15
-KPX edotaccent x -15
-KPX edotaccent y -15
-KPX edotaccent yacute -15
-KPX edotaccent ydieresis -15
-KPX egrave comma 10
-KPX egrave period 20
-KPX egrave v -15
-KPX egrave w -15
-KPX egrave x -15
-KPX egrave y -15
-KPX egrave yacute -15
-KPX egrave ydieresis -15
-KPX emacron comma 10
-KPX emacron period 20
-KPX emacron v -15
-KPX emacron w -15
-KPX emacron x -15
-KPX emacron y -15
-KPX emacron yacute -15
-KPX emacron ydieresis -15
-KPX eogonek comma 10
-KPX eogonek period 20
-KPX eogonek v -15
-KPX eogonek w -15
-KPX eogonek x -15
-KPX eogonek y -15
-KPX eogonek yacute -15
-KPX eogonek ydieresis -15
-KPX f comma -10
-KPX f e -10
-KPX f eacute -10
-KPX f ecaron -10
-KPX f ecircumflex -10
-KPX f edieresis -10
-KPX f edotaccent -10
-KPX f egrave -10
-KPX f emacron -10
-KPX f eogonek -10
-KPX f o -20
-KPX f oacute -20
-KPX f ocircumflex -20
-KPX f odieresis -20
-KPX f ograve -20
-KPX f ohungarumlaut -20
-KPX f omacron -20
-KPX f oslash -20
-KPX f otilde -20
-KPX f period -10
-KPX f quotedblright 30
-KPX f quoteright 30
-KPX g e 10
-KPX g eacute 10
-KPX g ecaron 10
-KPX g ecircumflex 10
-KPX g edieresis 10
-KPX g edotaccent 10
-KPX g egrave 10
-KPX g emacron 10
-KPX g eogonek 10
-KPX g g -10
-KPX g gbreve -10
-KPX g gcommaaccent -10
-KPX gbreve e 10
-KPX gbreve eacute 10
-KPX gbreve ecaron 10
-KPX gbreve ecircumflex 10
-KPX gbreve edieresis 10
-KPX gbreve edotaccent 10
-KPX gbreve egrave 10
-KPX gbreve emacron 10
-KPX gbreve eogonek 10
-KPX gbreve g -10
-KPX gbreve gbreve -10
-KPX gbreve gcommaaccent -10
-KPX gcommaaccent e 10
-KPX gcommaaccent eacute 10
-KPX gcommaaccent ecaron 10
-KPX gcommaaccent ecircumflex 10
-KPX gcommaaccent edieresis 10
-KPX gcommaaccent edotaccent 10
-KPX gcommaaccent egrave 10
-KPX gcommaaccent emacron 10
-KPX gcommaaccent eogonek 10
-KPX gcommaaccent g -10
-KPX gcommaaccent gbreve -10
-KPX gcommaaccent gcommaaccent -10
-KPX h y -20
-KPX h yacute -20
-KPX h ydieresis -20
-KPX k o -15
-KPX k oacute -15
-KPX k ocircumflex -15
-KPX k odieresis -15
-KPX k ograve -15
-KPX k ohungarumlaut -15
-KPX k omacron -15
-KPX k oslash -15
-KPX k otilde -15
-KPX kcommaaccent o -15
-KPX kcommaaccent oacute -15
-KPX kcommaaccent ocircumflex -15
-KPX kcommaaccent odieresis -15
-KPX kcommaaccent ograve -15
-KPX kcommaaccent ohungarumlaut -15
-KPX kcommaaccent omacron -15
-KPX kcommaaccent oslash -15
-KPX kcommaaccent otilde -15
-KPX l w -15
-KPX l y -15
-KPX l yacute -15
-KPX l ydieresis -15
-KPX lacute w -15
-KPX lacute y -15
-KPX lacute yacute -15
-KPX lacute ydieresis -15
-KPX lcommaaccent w -15
-KPX lcommaaccent y -15
-KPX lcommaaccent yacute -15
-KPX lcommaaccent ydieresis -15
-KPX lslash w -15
-KPX lslash y -15
-KPX lslash yacute -15
-KPX lslash ydieresis -15
-KPX m u -20
-KPX m uacute -20
-KPX m ucircumflex -20
-KPX m udieresis -20
-KPX m ugrave -20
-KPX m uhungarumlaut -20
-KPX m umacron -20
-KPX m uogonek -20
-KPX m uring -20
-KPX m y -30
-KPX m yacute -30
-KPX m ydieresis -30
-KPX n u -10
-KPX n uacute -10
-KPX n ucircumflex -10
-KPX n udieresis -10
-KPX n ugrave -10
-KPX n uhungarumlaut -10
-KPX n umacron -10
-KPX n uogonek -10
-KPX n uring -10
-KPX n v -40
-KPX n y -20
-KPX n yacute -20
-KPX n ydieresis -20
-KPX nacute u -10
-KPX nacute uacute -10
-KPX nacute ucircumflex -10
-KPX nacute udieresis -10
-KPX nacute ugrave -10
-KPX nacute uhungarumlaut -10
-KPX nacute umacron -10
-KPX nacute uogonek -10
-KPX nacute uring -10
-KPX nacute v -40
-KPX nacute y -20
-KPX nacute yacute -20
-KPX nacute ydieresis -20
-KPX ncaron u -10
-KPX ncaron uacute -10
-KPX ncaron ucircumflex -10
-KPX ncaron udieresis -10
-KPX ncaron ugrave -10
-KPX ncaron uhungarumlaut -10
-KPX ncaron umacron -10
-KPX ncaron uogonek -10
-KPX ncaron uring -10
-KPX ncaron v -40
-KPX ncaron y -20
-KPX ncaron yacute -20
-KPX ncaron ydieresis -20
-KPX ncommaaccent u -10
-KPX ncommaaccent uacute -10
-KPX ncommaaccent ucircumflex -10
-KPX ncommaaccent udieresis -10
-KPX ncommaaccent ugrave -10
-KPX ncommaaccent uhungarumlaut -10
-KPX ncommaaccent umacron -10
-KPX ncommaaccent uogonek -10
-KPX ncommaaccent uring -10
-KPX ncommaaccent v -40
-KPX ncommaaccent y -20
-KPX ncommaaccent yacute -20
-KPX ncommaaccent ydieresis -20
-KPX ntilde u -10
-KPX ntilde uacute -10
-KPX ntilde ucircumflex -10
-KPX ntilde udieresis -10
-KPX ntilde ugrave -10
-KPX ntilde uhungarumlaut -10
-KPX ntilde umacron -10
-KPX ntilde uogonek -10
-KPX ntilde uring -10
-KPX ntilde v -40
-KPX ntilde y -20
-KPX ntilde yacute -20
-KPX ntilde ydieresis -20
-KPX o v -20
-KPX o w -15
-KPX o x -30
-KPX o y -20
-KPX o yacute -20
-KPX o ydieresis -20
-KPX oacute v -20
-KPX oacute w -15
-KPX oacute x -30
-KPX oacute y -20
-KPX oacute yacute -20
-KPX oacute ydieresis -20
-KPX ocircumflex v -20
-KPX ocircumflex w -15
-KPX ocircumflex x -30
-KPX ocircumflex y -20
-KPX ocircumflex yacute -20
-KPX ocircumflex ydieresis -20
-KPX odieresis v -20
-KPX odieresis w -15
-KPX odieresis x -30
-KPX odieresis y -20
-KPX odieresis yacute -20
-KPX odieresis ydieresis -20
-KPX ograve v -20
-KPX ograve w -15
-KPX ograve x -30
-KPX ograve y -20
-KPX ograve yacute -20
-KPX ograve ydieresis -20
-KPX ohungarumlaut v -20
-KPX ohungarumlaut w -15
-KPX ohungarumlaut x -30
-KPX ohungarumlaut y -20
-KPX ohungarumlaut yacute -20
-KPX ohungarumlaut ydieresis -20
-KPX omacron v -20
-KPX omacron w -15
-KPX omacron x -30
-KPX omacron y -20
-KPX omacron yacute -20
-KPX omacron ydieresis -20
-KPX oslash v -20
-KPX oslash w -15
-KPX oslash x -30
-KPX oslash y -20
-KPX oslash yacute -20
-KPX oslash ydieresis -20
-KPX otilde v -20
-KPX otilde w -15
-KPX otilde x -30
-KPX otilde y -20
-KPX otilde yacute -20
-KPX otilde ydieresis -20
-KPX p y -15
-KPX p yacute -15
-KPX p ydieresis -15
-KPX period quotedblright -120
-KPX period quoteright -120
-KPX period space -40
-KPX quotedblright space -80
-KPX quoteleft quoteleft -46
-KPX quoteright d -80
-KPX quoteright dcroat -80
-KPX quoteright l -20
-KPX quoteright lacute -20
-KPX quoteright lcommaaccent -20
-KPX quoteright lslash -20
-KPX quoteright quoteright -46
-KPX quoteright r -40
-KPX quoteright racute -40
-KPX quoteright rcaron -40
-KPX quoteright rcommaaccent -40
-KPX quoteright s -60
-KPX quoteright sacute -60
-KPX quoteright scaron -60
-KPX quoteright scedilla -60
-KPX quoteright scommaaccent -60
-KPX quoteright space -80
-KPX quoteright v -20
-KPX r c -20
-KPX r cacute -20
-KPX r ccaron -20
-KPX r ccedilla -20
-KPX r comma -60
-KPX r d -20
-KPX r dcroat -20
-KPX r g -15
-KPX r gbreve -15
-KPX r gcommaaccent -15
-KPX r hyphen -20
-KPX r o -20
-KPX r oacute -20
-KPX r ocircumflex -20
-KPX r odieresis -20
-KPX r ograve -20
-KPX r ohungarumlaut -20
-KPX r omacron -20
-KPX r oslash -20
-KPX r otilde -20
-KPX r period -60
-KPX r q -20
-KPX r s -15
-KPX r sacute -15
-KPX r scaron -15
-KPX r scedilla -15
-KPX r scommaaccent -15
-KPX r t 20
-KPX r tcommaaccent 20
-KPX r v 10
-KPX r y 10
-KPX r yacute 10
-KPX r ydieresis 10
-KPX racute c -20
-KPX racute cacute -20
-KPX racute ccaron -20
-KPX racute ccedilla -20
-KPX racute comma -60
-KPX racute d -20
-KPX racute dcroat -20
-KPX racute g -15
-KPX racute gbreve -15
-KPX racute gcommaaccent -15
-KPX racute hyphen -20
-KPX racute o -20
-KPX racute oacute -20
-KPX racute ocircumflex -20
-KPX racute odieresis -20
-KPX racute ograve -20
-KPX racute ohungarumlaut -20
-KPX racute omacron -20
-KPX racute oslash -20
-KPX racute otilde -20
-KPX racute period -60
-KPX racute q -20
-KPX racute s -15
-KPX racute sacute -15
-KPX racute scaron -15
-KPX racute scedilla -15
-KPX racute scommaaccent -15
-KPX racute t 20
-KPX racute tcommaaccent 20
-KPX racute v 10
-KPX racute y 10
-KPX racute yacute 10
-KPX racute ydieresis 10
-KPX rcaron c -20
-KPX rcaron cacute -20
-KPX rcaron ccaron -20
-KPX rcaron ccedilla -20
-KPX rcaron comma -60
-KPX rcaron d -20
-KPX rcaron dcroat -20
-KPX rcaron g -15
-KPX rcaron gbreve -15
-KPX rcaron gcommaaccent -15
-KPX rcaron hyphen -20
-KPX rcaron o -20
-KPX rcaron oacute -20
-KPX rcaron ocircumflex -20
-KPX rcaron odieresis -20
-KPX rcaron ograve -20
-KPX rcaron ohungarumlaut -20
-KPX rcaron omacron -20
-KPX rcaron oslash -20
-KPX rcaron otilde -20
-KPX rcaron period -60
-KPX rcaron q -20
-KPX rcaron s -15
-KPX rcaron sacute -15
-KPX rcaron scaron -15
-KPX rcaron scedilla -15
-KPX rcaron scommaaccent -15
-KPX rcaron t 20
-KPX rcaron tcommaaccent 20
-KPX rcaron v 10
-KPX rcaron y 10
-KPX rcaron yacute 10
-KPX rcaron ydieresis 10
-KPX rcommaaccent c -20
-KPX rcommaaccent cacute -20
-KPX rcommaaccent ccaron -20
-KPX rcommaaccent ccedilla -20
-KPX rcommaaccent comma -60
-KPX rcommaaccent d -20
-KPX rcommaaccent dcroat -20
-KPX rcommaaccent g -15
-KPX rcommaaccent gbreve -15
-KPX rcommaaccent gcommaaccent -15
-KPX rcommaaccent hyphen -20
-KPX rcommaaccent o -20
-KPX rcommaaccent oacute -20
-KPX rcommaaccent ocircumflex -20
-KPX rcommaaccent odieresis -20
-KPX rcommaaccent ograve -20
-KPX rcommaaccent ohungarumlaut -20
-KPX rcommaaccent omacron -20
-KPX rcommaaccent oslash -20
-KPX rcommaaccent otilde -20
-KPX rcommaaccent period -60
-KPX rcommaaccent q -20
-KPX rcommaaccent s -15
-KPX rcommaaccent sacute -15
-KPX rcommaaccent scaron -15
-KPX rcommaaccent scedilla -15
-KPX rcommaaccent scommaaccent -15
-KPX rcommaaccent t 20
-KPX rcommaaccent tcommaaccent 20
-KPX rcommaaccent v 10
-KPX rcommaaccent y 10
-KPX rcommaaccent yacute 10
-KPX rcommaaccent ydieresis 10
-KPX s w -15
-KPX sacute w -15
-KPX scaron w -15
-KPX scedilla w -15
-KPX scommaaccent w -15
-KPX semicolon space -40
-KPX space T -100
-KPX space Tcaron -100
-KPX space Tcommaaccent -100
-KPX space V -80
-KPX space W -80
-KPX space Y -120
-KPX space Yacute -120
-KPX space Ydieresis -120
-KPX space quotedblleft -80
-KPX space quoteleft -60
-KPX v a -20
-KPX v aacute -20
-KPX v abreve -20
-KPX v acircumflex -20
-KPX v adieresis -20
-KPX v agrave -20
-KPX v amacron -20
-KPX v aogonek -20
-KPX v aring -20
-KPX v atilde -20
-KPX v comma -80
-KPX v o -30
-KPX v oacute -30
-KPX v ocircumflex -30
-KPX v odieresis -30
-KPX v ograve -30
-KPX v ohungarumlaut -30
-KPX v omacron -30
-KPX v oslash -30
-KPX v otilde -30
-KPX v period -80
-KPX w comma -40
-KPX w o -20
-KPX w oacute -20
-KPX w ocircumflex -20
-KPX w odieresis -20
-KPX w ograve -20
-KPX w ohungarumlaut -20
-KPX w omacron -20
-KPX w oslash -20
-KPX w otilde -20
-KPX w period -40
-KPX x e -10
-KPX x eacute -10
-KPX x ecaron -10
-KPX x ecircumflex -10
-KPX x edieresis -10
-KPX x edotaccent -10
-KPX x egrave -10
-KPX x emacron -10
-KPX x eogonek -10
-KPX y a -30
-KPX y aacute -30
-KPX y abreve -30
-KPX y acircumflex -30
-KPX y adieresis -30
-KPX y agrave -30
-KPX y amacron -30
-KPX y aogonek -30
-KPX y aring -30
-KPX y atilde -30
-KPX y comma -80
-KPX y e -10
-KPX y eacute -10
-KPX y ecaron -10
-KPX y ecircumflex -10
-KPX y edieresis -10
-KPX y edotaccent -10
-KPX y egrave -10
-KPX y emacron -10
-KPX y eogonek -10
-KPX y o -25
-KPX y oacute -25
-KPX y ocircumflex -25
-KPX y odieresis -25
-KPX y ograve -25
-KPX y ohungarumlaut -25
-KPX y omacron -25
-KPX y oslash -25
-KPX y otilde -25
-KPX y period -80
-KPX yacute a -30
-KPX yacute aacute -30
-KPX yacute abreve -30
-KPX yacute acircumflex -30
-KPX yacute adieresis -30
-KPX yacute agrave -30
-KPX yacute amacron -30
-KPX yacute aogonek -30
-KPX yacute aring -30
-KPX yacute atilde -30
-KPX yacute comma -80
-KPX yacute e -10
-KPX yacute eacute -10
-KPX yacute ecaron -10
-KPX yacute ecircumflex -10
-KPX yacute edieresis -10
-KPX yacute edotaccent -10
-KPX yacute egrave -10
-KPX yacute emacron -10
-KPX yacute eogonek -10
-KPX yacute o -25
-KPX yacute oacute -25
-KPX yacute ocircumflex -25
-KPX yacute odieresis -25
-KPX yacute ograve -25
-KPX yacute ohungarumlaut -25
-KPX yacute omacron -25
-KPX yacute oslash -25
-KPX yacute otilde -25
-KPX yacute period -80
-KPX ydieresis a -30
-KPX ydieresis aacute -30
-KPX ydieresis abreve -30
-KPX ydieresis acircumflex -30
-KPX ydieresis adieresis -30
-KPX ydieresis agrave -30
-KPX ydieresis amacron -30
-KPX ydieresis aogonek -30
-KPX ydieresis aring -30
-KPX ydieresis atilde -30
-KPX ydieresis comma -80
-KPX ydieresis e -10
-KPX ydieresis eacute -10
-KPX ydieresis ecaron -10
-KPX ydieresis ecircumflex -10
-KPX ydieresis edieresis -10
-KPX ydieresis edotaccent -10
-KPX ydieresis egrave -10
-KPX ydieresis emacron -10
-KPX ydieresis eogonek -10
-KPX ydieresis o -25
-KPX ydieresis oacute -25
-KPX ydieresis ocircumflex -25
-KPX ydieresis odieresis -25
-KPX ydieresis ograve -25
-KPX ydieresis ohungarumlaut -25
-KPX ydieresis omacron -25
-KPX ydieresis oslash -25
-KPX ydieresis otilde -25
-KPX ydieresis period -80
-KPX z e 10
-KPX z eacute 10
-KPX z ecaron 10
-KPX z ecircumflex 10
-KPX z edieresis 10
-KPX z edotaccent 10
-KPX z egrave 10
-KPX z emacron 10
-KPX z eogonek 10
-KPX zacute e 10
-KPX zacute eacute 10
-KPX zacute ecaron 10
-KPX zacute ecircumflex 10
-KPX zacute edieresis 10
-KPX zacute edotaccent 10
-KPX zacute egrave 10
-KPX zacute emacron 10
-KPX zacute eogonek 10
-KPX zcaron e 10
-KPX zcaron eacute 10
-KPX zcaron ecaron 10
-KPX zcaron ecircumflex 10
-KPX zcaron edieresis 10
-KPX zcaron edotaccent 10
-KPX zcaron egrave 10
-KPX zcaron emacron 10
-KPX zcaron eogonek 10
-KPX zdotaccent e 10
-KPX zdotaccent eacute 10
-KPX zdotaccent ecaron 10
-KPX zdotaccent ecircumflex 10
-KPX zdotaccent edieresis 10
-KPX zdotaccent edotaccent 10
-KPX zdotaccent egrave 10
-KPX zdotaccent emacron 10
-KPX zdotaccent eogonek 10
-EndKernPairs
-EndKernData
-EndFontMetrics
diff --git a/admin/survey/Fonts/Helvetica-BoldOblique.afm b/admin/survey/Fonts/Helvetica-BoldOblique.afm
deleted file mode 100644
index 16845ae..0000000
--- a/admin/survey/Fonts/Helvetica-BoldOblique.afm
+++ /dev/null
@@ -1,2827 +0,0 @@
-StartFontMetrics 4.1
-Comment Copyright (c) 1985, 1987, 1989, 1990, 1997 Adobe Systems Incorporated. All Rights Reserved.
-Comment Creation Date: Thu May 1 12:45:12 1997
-Comment UniqueID 43053
-Comment VMusage 14482 68586
-FontName Helvetica-BoldOblique
-FullName Helvetica Bold Oblique
-FamilyName Helvetica
-Weight Bold
-ItalicAngle -12
-IsFixedPitch false
-CharacterSet ExtendedRoman
-FontBBox -174 -228 1114 962
-UnderlinePosition -100
-UnderlineThickness 50
-Version 002.000
-Notice Copyright (c) 1985, 1987, 1989, 1990, 1997 Adobe Systems Incorporated. All Rights Reserved.Helvetica is a trademark of Linotype-Hell AG and/or its subsidiaries.
-EncodingScheme AdobeStandardEncoding
-CapHeight 718
-XHeight 532
-Ascender 718
-Descender -207
-StdHW 118
-StdVW 140
-StartCharMetrics 315
-C 32 ; WX 278 ; N space ; B 0 0 0 0 ;
-C 33 ; WX 333 ; N exclam ; B 94 0 397 718 ;
-C 34 ; WX 474 ; N quotedbl ; B 193 447 529 718 ;
-C 35 ; WX 556 ; N numbersign ; B 60 0 644 698 ;
-C 36 ; WX 556 ; N dollar ; B 67 -115 622 775 ;
-C 37 ; WX 889 ; N percent ; B 136 -19 901 710 ;
-C 38 ; WX 722 ; N ampersand ; B 89 -19 732 718 ;
-C 39 ; WX 278 ; N quoteright ; B 167 445 362 718 ;
-C 40 ; WX 333 ; N parenleft ; B 76 -208 470 734 ;
-C 41 ; WX 333 ; N parenright ; B -25 -208 369 734 ;
-C 42 ; WX 389 ; N asterisk ; B 146 387 481 718 ;
-C 43 ; WX 584 ; N plus ; B 82 0 610 506 ;
-C 44 ; WX 278 ; N comma ; B 28 -168 245 146 ;
-C 45 ; WX 333 ; N hyphen ; B 73 215 379 345 ;
-C 46 ; WX 278 ; N period ; B 64 0 245 146 ;
-C 47 ; WX 278 ; N slash ; B -37 -19 468 737 ;
-C 48 ; WX 556 ; N zero ; B 86 -19 617 710 ;
-C 49 ; WX 556 ; N one ; B 173 0 529 710 ;
-C 50 ; WX 556 ; N two ; B 26 0 619 710 ;
-C 51 ; WX 556 ; N three ; B 65 -19 608 710 ;
-C 52 ; WX 556 ; N four ; B 60 0 598 710 ;
-C 53 ; WX 556 ; N five ; B 64 -19 636 698 ;
-C 54 ; WX 556 ; N six ; B 85 -19 619 710 ;
-C 55 ; WX 556 ; N seven ; B 125 0 676 698 ;
-C 56 ; WX 556 ; N eight ; B 69 -19 616 710 ;
-C 57 ; WX 556 ; N nine ; B 78 -19 615 710 ;
-C 58 ; WX 333 ; N colon ; B 92 0 351 512 ;
-C 59 ; WX 333 ; N semicolon ; B 56 -168 351 512 ;
-C 60 ; WX 584 ; N less ; B 82 -8 655 514 ;
-C 61 ; WX 584 ; N equal ; B 58 87 633 419 ;
-C 62 ; WX 584 ; N greater ; B 36 -8 609 514 ;
-C 63 ; WX 611 ; N question ; B 165 0 671 727 ;
-C 64 ; WX 975 ; N at ; B 186 -19 954 737 ;
-C 65 ; WX 722 ; N A ; B 20 0 702 718 ;
-C 66 ; WX 722 ; N B ; B 76 0 764 718 ;
-C 67 ; WX 722 ; N C ; B 107 -19 789 737 ;
-C 68 ; WX 722 ; N D ; B 76 0 777 718 ;
-C 69 ; WX 667 ; N E ; B 76 0 757 718 ;
-C 70 ; WX 611 ; N F ; B 76 0 740 718 ;
-C 71 ; WX 778 ; N G ; B 108 -19 817 737 ;
-C 72 ; WX 722 ; N H ; B 71 0 804 718 ;
-C 73 ; WX 278 ; N I ; B 64 0 367 718 ;
-C 74 ; WX 556 ; N J ; B 60 -18 637 718 ;
-C 75 ; WX 722 ; N K ; B 87 0 858 718 ;
-C 76 ; WX 611 ; N L ; B 76 0 611 718 ;
-C 77 ; WX 833 ; N M ; B 69 0 918 718 ;
-C 78 ; WX 722 ; N N ; B 69 0 807 718 ;
-C 79 ; WX 778 ; N O ; B 107 -19 823 737 ;
-C 80 ; WX 667 ; N P ; B 76 0 738 718 ;
-C 81 ; WX 778 ; N Q ; B 107 -52 823 737 ;
-C 82 ; WX 722 ; N R ; B 76 0 778 718 ;
-C 83 ; WX 667 ; N S ; B 81 -19 718 737 ;
-C 84 ; WX 611 ; N T ; B 140 0 751 718 ;
-C 85 ; WX 722 ; N U ; B 116 -19 804 718 ;
-C 86 ; WX 667 ; N V ; B 172 0 801 718 ;
-C 87 ; WX 944 ; N W ; B 169 0 1082 718 ;
-C 88 ; WX 667 ; N X ; B 14 0 791 718 ;
-C 89 ; WX 667 ; N Y ; B 168 0 806 718 ;
-C 90 ; WX 611 ; N Z ; B 25 0 737 718 ;
-C 91 ; WX 333 ; N bracketleft ; B 21 -196 462 722 ;
-C 92 ; WX 278 ; N backslash ; B 124 -19 307 737 ;
-C 93 ; WX 333 ; N bracketright ; B -18 -196 423 722 ;
-C 94 ; WX 584 ; N asciicircum ; B 131 323 591 698 ;
-C 95 ; WX 556 ; N underscore ; B -27 -125 540 -75 ;
-C 96 ; WX 278 ; N quoteleft ; B 165 454 361 727 ;
-C 97 ; WX 556 ; N a ; B 55 -14 583 546 ;
-C 98 ; WX 611 ; N b ; B 61 -14 645 718 ;
-C 99 ; WX 556 ; N c ; B 79 -14 599 546 ;
-C 100 ; WX 611 ; N d ; B 82 -14 704 718 ;
-C 101 ; WX 556 ; N e ; B 70 -14 593 546 ;
-C 102 ; WX 333 ; N f ; B 87 0 469 727 ; L i fi ; L l fl ;
-C 103 ; WX 611 ; N g ; B 38 -217 666 546 ;
-C 104 ; WX 611 ; N h ; B 65 0 629 718 ;
-C 105 ; WX 278 ; N i ; B 69 0 363 725 ;
-C 106 ; WX 278 ; N j ; B -42 -214 363 725 ;
-C 107 ; WX 556 ; N k ; B 69 0 670 718 ;
-C 108 ; WX 278 ; N l ; B 69 0 362 718 ;
-C 109 ; WX 889 ; N m ; B 64 0 909 546 ;
-C 110 ; WX 611 ; N n ; B 65 0 629 546 ;
-C 111 ; WX 611 ; N o ; B 82 -14 643 546 ;
-C 112 ; WX 611 ; N p ; B 18 -207 645 546 ;
-C 113 ; WX 611 ; N q ; B 80 -207 665 546 ;
-C 114 ; WX 389 ; N r ; B 64 0 489 546 ;
-C 115 ; WX 556 ; N s ; B 63 -14 584 546 ;
-C 116 ; WX 333 ; N t ; B 100 -6 422 676 ;
-C 117 ; WX 611 ; N u ; B 98 -14 658 532 ;
-C 118 ; WX 556 ; N v ; B 126 0 656 532 ;
-C 119 ; WX 778 ; N w ; B 123 0 882 532 ;
-C 120 ; WX 556 ; N x ; B 15 0 648 532 ;
-C 121 ; WX 556 ; N y ; B 42 -214 652 532 ;
-C 122 ; WX 500 ; N z ; B 20 0 583 532 ;
-C 123 ; WX 389 ; N braceleft ; B 94 -196 518 722 ;
-C 124 ; WX 280 ; N bar ; B 36 -225 361 775 ;
-C 125 ; WX 389 ; N braceright ; B -18 -196 407 722 ;
-C 126 ; WX 584 ; N asciitilde ; B 115 163 577 343 ;
-C 161 ; WX 333 ; N exclamdown ; B 50 -186 353 532 ;
-C 162 ; WX 556 ; N cent ; B 79 -118 599 628 ;
-C 163 ; WX 556 ; N sterling ; B 50 -16 635 718 ;
-C 164 ; WX 167 ; N fraction ; B -174 -19 487 710 ;
-C 165 ; WX 556 ; N yen ; B 60 0 713 698 ;
-C 166 ; WX 556 ; N florin ; B -50 -210 669 737 ;
-C 167 ; WX 556 ; N section ; B 61 -184 598 727 ;
-C 168 ; WX 556 ; N currency ; B 27 76 680 636 ;
-C 169 ; WX 238 ; N quotesingle ; B 165 447 321 718 ;
-C 170 ; WX 500 ; N quotedblleft ; B 160 454 588 727 ;
-C 171 ; WX 556 ; N guillemotleft ; B 135 76 571 484 ;
-C 172 ; WX 333 ; N guilsinglleft ; B 130 76 353 484 ;
-C 173 ; WX 333 ; N guilsinglright ; B 99 76 322 484 ;
-C 174 ; WX 611 ; N fi ; B 87 0 696 727 ;
-C 175 ; WX 611 ; N fl ; B 87 0 695 727 ;
-C 177 ; WX 556 ; N endash ; B 48 227 627 333 ;
-C 178 ; WX 556 ; N dagger ; B 118 -171 626 718 ;
-C 179 ; WX 556 ; N daggerdbl ; B 46 -171 628 718 ;
-C 180 ; WX 278 ; N periodcentered ; B 110 172 276 334 ;
-C 182 ; WX 556 ; N paragraph ; B 98 -191 688 700 ;
-C 183 ; WX 350 ; N bullet ; B 83 194 420 524 ;
-C 184 ; WX 278 ; N quotesinglbase ; B 41 -146 236 127 ;
-C 185 ; WX 500 ; N quotedblbase ; B 36 -146 463 127 ;
-C 186 ; WX 500 ; N quotedblright ; B 162 445 589 718 ;
-C 187 ; WX 556 ; N guillemotright ; B 104 76 540 484 ;
-C 188 ; WX 1000 ; N ellipsis ; B 92 0 939 146 ;
-C 189 ; WX 1000 ; N perthousand ; B 76 -19 1038 710 ;
-C 191 ; WX 611 ; N questiondown ; B 53 -195 559 532 ;
-C 193 ; WX 333 ; N grave ; B 136 604 353 750 ;
-C 194 ; WX 333 ; N acute ; B 236 604 515 750 ;
-C 195 ; WX 333 ; N circumflex ; B 118 604 471 750 ;
-C 196 ; WX 333 ; N tilde ; B 113 610 507 737 ;
-C 197 ; WX 333 ; N macron ; B 122 604 483 678 ;
-C 198 ; WX 333 ; N breve ; B 156 604 494 750 ;
-C 199 ; WX 333 ; N dotaccent ; B 235 614 385 729 ;
-C 200 ; WX 333 ; N dieresis ; B 137 614 482 729 ;
-C 202 ; WX 333 ; N ring ; B 200 568 420 776 ;
-C 203 ; WX 333 ; N cedilla ; B -37 -228 220 0 ;
-C 205 ; WX 333 ; N hungarumlaut ; B 137 604 645 750 ;
-C 206 ; WX 333 ; N ogonek ; B 41 -228 264 0 ;
-C 207 ; WX 333 ; N caron ; B 149 604 502 750 ;
-C 208 ; WX 1000 ; N emdash ; B 48 227 1071 333 ;
-C 225 ; WX 1000 ; N AE ; B 5 0 1100 718 ;
-C 227 ; WX 370 ; N ordfeminine ; B 125 401 465 737 ;
-C 232 ; WX 611 ; N Lslash ; B 34 0 611 718 ;
-C 233 ; WX 778 ; N Oslash ; B 35 -27 894 745 ;
-C 234 ; WX 1000 ; N OE ; B 99 -19 1114 737 ;
-C 235 ; WX 365 ; N ordmasculine ; B 123 401 485 737 ;
-C 241 ; WX 889 ; N ae ; B 56 -14 923 546 ;
-C 245 ; WX 278 ; N dotlessi ; B 69 0 322 532 ;
-C 248 ; WX 278 ; N lslash ; B 40 0 407 718 ;
-C 249 ; WX 611 ; N oslash ; B 22 -29 701 560 ;
-C 250 ; WX 944 ; N oe ; B 82 -14 977 546 ;
-C 251 ; WX 611 ; N germandbls ; B 69 -14 657 731 ;
-C -1 ; WX 278 ; N Idieresis ; B 64 0 494 915 ;
-C -1 ; WX 556 ; N eacute ; B 70 -14 627 750 ;
-C -1 ; WX 556 ; N abreve ; B 55 -14 606 750 ;
-C -1 ; WX 611 ; N uhungarumlaut ; B 98 -14 784 750 ;
-C -1 ; WX 556 ; N ecaron ; B 70 -14 614 750 ;
-C -1 ; WX 667 ; N Ydieresis ; B 168 0 806 915 ;
-C -1 ; WX 584 ; N divide ; B 82 -42 610 548 ;
-C -1 ; WX 667 ; N Yacute ; B 168 0 806 936 ;
-C -1 ; WX 722 ; N Acircumflex ; B 20 0 706 936 ;
-C -1 ; WX 556 ; N aacute ; B 55 -14 627 750 ;
-C -1 ; WX 722 ; N Ucircumflex ; B 116 -19 804 936 ;
-C -1 ; WX 556 ; N yacute ; B 42 -214 652 750 ;
-C -1 ; WX 556 ; N scommaaccent ; B 63 -228 584 546 ;
-C -1 ; WX 556 ; N ecircumflex ; B 70 -14 593 750 ;
-C -1 ; WX 722 ; N Uring ; B 116 -19 804 962 ;
-C -1 ; WX 722 ; N Udieresis ; B 116 -19 804 915 ;
-C -1 ; WX 556 ; N aogonek ; B 55 -224 583 546 ;
-C -1 ; WX 722 ; N Uacute ; B 116 -19 804 936 ;
-C -1 ; WX 611 ; N uogonek ; B 98 -228 658 532 ;
-C -1 ; WX 667 ; N Edieresis ; B 76 0 757 915 ;
-C -1 ; WX 722 ; N Dcroat ; B 62 0 777 718 ;
-C -1 ; WX 250 ; N commaaccent ; B 16 -228 188 -50 ;
-C -1 ; WX 737 ; N copyright ; B 56 -19 835 737 ;
-C -1 ; WX 667 ; N Emacron ; B 76 0 757 864 ;
-C -1 ; WX 556 ; N ccaron ; B 79 -14 614 750 ;
-C -1 ; WX 556 ; N aring ; B 55 -14 583 776 ;
-C -1 ; WX 722 ; N Ncommaaccent ; B 69 -228 807 718 ;
-C -1 ; WX 278 ; N lacute ; B 69 0 528 936 ;
-C -1 ; WX 556 ; N agrave ; B 55 -14 583 750 ;
-C -1 ; WX 611 ; N Tcommaaccent ; B 140 -228 751 718 ;
-C -1 ; WX 722 ; N Cacute ; B 107 -19 789 936 ;
-C -1 ; WX 556 ; N atilde ; B 55 -14 619 737 ;
-C -1 ; WX 667 ; N Edotaccent ; B 76 0 757 915 ;
-C -1 ; WX 556 ; N scaron ; B 63 -14 614 750 ;
-C -1 ; WX 556 ; N scedilla ; B 63 -228 584 546 ;
-C -1 ; WX 278 ; N iacute ; B 69 0 488 750 ;
-C -1 ; WX 494 ; N lozenge ; B 90 0 564 745 ;
-C -1 ; WX 722 ; N Rcaron ; B 76 0 778 936 ;
-C -1 ; WX 778 ; N Gcommaaccent ; B 108 -228 817 737 ;
-C -1 ; WX 611 ; N ucircumflex ; B 98 -14 658 750 ;
-C -1 ; WX 556 ; N acircumflex ; B 55 -14 583 750 ;
-C -1 ; WX 722 ; N Amacron ; B 20 0 718 864 ;
-C -1 ; WX 389 ; N rcaron ; B 64 0 530 750 ;
-C -1 ; WX 556 ; N ccedilla ; B 79 -228 599 546 ;
-C -1 ; WX 611 ; N Zdotaccent ; B 25 0 737 915 ;
-C -1 ; WX 667 ; N Thorn ; B 76 0 716 718 ;
-C -1 ; WX 778 ; N Omacron ; B 107 -19 823 864 ;
-C -1 ; WX 722 ; N Racute ; B 76 0 778 936 ;
-C -1 ; WX 667 ; N Sacute ; B 81 -19 722 936 ;
-C -1 ; WX 743 ; N dcaron ; B 82 -14 903 718 ;
-C -1 ; WX 722 ; N Umacron ; B 116 -19 804 864 ;
-C -1 ; WX 611 ; N uring ; B 98 -14 658 776 ;
-C -1 ; WX 333 ; N threesuperior ; B 91 271 441 710 ;
-C -1 ; WX 778 ; N Ograve ; B 107 -19 823 936 ;
-C -1 ; WX 722 ; N Agrave ; B 20 0 702 936 ;
-C -1 ; WX 722 ; N Abreve ; B 20 0 729 936 ;
-C -1 ; WX 584 ; N multiply ; B 57 1 635 505 ;
-C -1 ; WX 611 ; N uacute ; B 98 -14 658 750 ;
-C -1 ; WX 611 ; N Tcaron ; B 140 0 751 936 ;
-C -1 ; WX 494 ; N partialdiff ; B 43 -21 585 750 ;
-C -1 ; WX 556 ; N ydieresis ; B 42 -214 652 729 ;
-C -1 ; WX 722 ; N Nacute ; B 69 0 807 936 ;
-C -1 ; WX 278 ; N icircumflex ; B 69 0 444 750 ;
-C -1 ; WX 667 ; N Ecircumflex ; B 76 0 757 936 ;
-C -1 ; WX 556 ; N adieresis ; B 55 -14 594 729 ;
-C -1 ; WX 556 ; N edieresis ; B 70 -14 594 729 ;
-C -1 ; WX 556 ; N cacute ; B 79 -14 627 750 ;
-C -1 ; WX 611 ; N nacute ; B 65 0 654 750 ;
-C -1 ; WX 611 ; N umacron ; B 98 -14 658 678 ;
-C -1 ; WX 722 ; N Ncaron ; B 69 0 807 936 ;
-C -1 ; WX 278 ; N Iacute ; B 64 0 528 936 ;
-C -1 ; WX 584 ; N plusminus ; B 40 0 625 506 ;
-C -1 ; WX 280 ; N brokenbar ; B 52 -150 345 700 ;
-C -1 ; WX 737 ; N registered ; B 55 -19 834 737 ;
-C -1 ; WX 778 ; N Gbreve ; B 108 -19 817 936 ;
-C -1 ; WX 278 ; N Idotaccent ; B 64 0 397 915 ;
-C -1 ; WX 600 ; N summation ; B 14 -10 670 706 ;
-C -1 ; WX 667 ; N Egrave ; B 76 0 757 936 ;
-C -1 ; WX 389 ; N racute ; B 64 0 543 750 ;
-C -1 ; WX 611 ; N omacron ; B 82 -14 643 678 ;
-C -1 ; WX 611 ; N Zacute ; B 25 0 737 936 ;
-C -1 ; WX 611 ; N Zcaron ; B 25 0 737 936 ;
-C -1 ; WX 549 ; N greaterequal ; B 26 0 629 704 ;
-C -1 ; WX 722 ; N Eth ; B 62 0 777 718 ;
-C -1 ; WX 722 ; N Ccedilla ; B 107 -228 789 737 ;
-C -1 ; WX 278 ; N lcommaaccent ; B 30 -228 362 718 ;
-C -1 ; WX 389 ; N tcaron ; B 100 -6 608 878 ;
-C -1 ; WX 556 ; N eogonek ; B 70 -228 593 546 ;
-C -1 ; WX 722 ; N Uogonek ; B 116 -228 804 718 ;
-C -1 ; WX 722 ; N Aacute ; B 20 0 750 936 ;
-C -1 ; WX 722 ; N Adieresis ; B 20 0 716 915 ;
-C -1 ; WX 556 ; N egrave ; B 70 -14 593 750 ;
-C -1 ; WX 500 ; N zacute ; B 20 0 599 750 ;
-C -1 ; WX 278 ; N iogonek ; B -14 -224 363 725 ;
-C -1 ; WX 778 ; N Oacute ; B 107 -19 823 936 ;
-C -1 ; WX 611 ; N oacute ; B 82 -14 654 750 ;
-C -1 ; WX 556 ; N amacron ; B 55 -14 595 678 ;
-C -1 ; WX 556 ; N sacute ; B 63 -14 627 750 ;
-C -1 ; WX 278 ; N idieresis ; B 69 0 455 729 ;
-C -1 ; WX 778 ; N Ocircumflex ; B 107 -19 823 936 ;
-C -1 ; WX 722 ; N Ugrave ; B 116 -19 804 936 ;
-C -1 ; WX 612 ; N Delta ; B 6 0 608 688 ;
-C -1 ; WX 611 ; N thorn ; B 18 -208 645 718 ;
-C -1 ; WX 333 ; N twosuperior ; B 69 283 449 710 ;
-C -1 ; WX 778 ; N Odieresis ; B 107 -19 823 915 ;
-C -1 ; WX 611 ; N mu ; B 22 -207 658 532 ;
-C -1 ; WX 278 ; N igrave ; B 69 0 326 750 ;
-C -1 ; WX 611 ; N ohungarumlaut ; B 82 -14 784 750 ;
-C -1 ; WX 667 ; N Eogonek ; B 76 -224 757 718 ;
-C -1 ; WX 611 ; N dcroat ; B 82 -14 789 718 ;
-C -1 ; WX 834 ; N threequarters ; B 99 -19 839 710 ;
-C -1 ; WX 667 ; N Scedilla ; B 81 -228 718 737 ;
-C -1 ; WX 400 ; N lcaron ; B 69 0 561 718 ;
-C -1 ; WX 722 ; N Kcommaaccent ; B 87 -228 858 718 ;
-C -1 ; WX 611 ; N Lacute ; B 76 0 611 936 ;
-C -1 ; WX 1000 ; N trademark ; B 179 306 1109 718 ;
-C -1 ; WX 556 ; N edotaccent ; B 70 -14 593 729 ;
-C -1 ; WX 278 ; N Igrave ; B 64 0 367 936 ;
-C -1 ; WX 278 ; N Imacron ; B 64 0 496 864 ;
-C -1 ; WX 611 ; N Lcaron ; B 76 0 643 718 ;
-C -1 ; WX 834 ; N onehalf ; B 132 -19 858 710 ;
-C -1 ; WX 549 ; N lessequal ; B 29 0 676 704 ;
-C -1 ; WX 611 ; N ocircumflex ; B 82 -14 643 750 ;
-C -1 ; WX 611 ; N ntilde ; B 65 0 646 737 ;
-C -1 ; WX 722 ; N Uhungarumlaut ; B 116 -19 880 936 ;
-C -1 ; WX 667 ; N Eacute ; B 76 0 757 936 ;
-C -1 ; WX 556 ; N emacron ; B 70 -14 595 678 ;
-C -1 ; WX 611 ; N gbreve ; B 38 -217 666 750 ;
-C -1 ; WX 834 ; N onequarter ; B 132 -19 806 710 ;
-C -1 ; WX 667 ; N Scaron ; B 81 -19 718 936 ;
-C -1 ; WX 667 ; N Scommaaccent ; B 81 -228 718 737 ;
-C -1 ; WX 778 ; N Ohungarumlaut ; B 107 -19 908 936 ;
-C -1 ; WX 400 ; N degree ; B 175 426 467 712 ;
-C -1 ; WX 611 ; N ograve ; B 82 -14 643 750 ;
-C -1 ; WX 722 ; N Ccaron ; B 107 -19 789 936 ;
-C -1 ; WX 611 ; N ugrave ; B 98 -14 658 750 ;
-C -1 ; WX 549 ; N radical ; B 112 -46 689 850 ;
-C -1 ; WX 722 ; N Dcaron ; B 76 0 777 936 ;
-C -1 ; WX 389 ; N rcommaaccent ; B 26 -228 489 546 ;
-C -1 ; WX 722 ; N Ntilde ; B 69 0 807 923 ;
-C -1 ; WX 611 ; N otilde ; B 82 -14 646 737 ;
-C -1 ; WX 722 ; N Rcommaaccent ; B 76 -228 778 718 ;
-C -1 ; WX 611 ; N Lcommaaccent ; B 76 -228 611 718 ;
-C -1 ; WX 722 ; N Atilde ; B 20 0 741 923 ;
-C -1 ; WX 722 ; N Aogonek ; B 20 -224 702 718 ;
-C -1 ; WX 722 ; N Aring ; B 20 0 702 962 ;
-C -1 ; WX 778 ; N Otilde ; B 107 -19 823 923 ;
-C -1 ; WX 500 ; N zdotaccent ; B 20 0 583 729 ;
-C -1 ; WX 667 ; N Ecaron ; B 76 0 757 936 ;
-C -1 ; WX 278 ; N Iogonek ; B -41 -228 367 718 ;
-C -1 ; WX 556 ; N kcommaaccent ; B 69 -228 670 718 ;
-C -1 ; WX 584 ; N minus ; B 82 197 610 309 ;
-C -1 ; WX 278 ; N Icircumflex ; B 64 0 484 936 ;
-C -1 ; WX 611 ; N ncaron ; B 65 0 641 750 ;
-C -1 ; WX 333 ; N tcommaaccent ; B 58 -228 422 676 ;
-C -1 ; WX 584 ; N logicalnot ; B 105 108 633 419 ;
-C -1 ; WX 611 ; N odieresis ; B 82 -14 643 729 ;
-C -1 ; WX 611 ; N udieresis ; B 98 -14 658 729 ;
-C -1 ; WX 549 ; N notequal ; B 32 -49 630 570 ;
-C -1 ; WX 611 ; N gcommaaccent ; B 38 -217 666 850 ;
-C -1 ; WX 611 ; N eth ; B 82 -14 670 737 ;
-C -1 ; WX 500 ; N zcaron ; B 20 0 586 750 ;
-C -1 ; WX 611 ; N ncommaaccent ; B 65 -228 629 546 ;
-C -1 ; WX 333 ; N onesuperior ; B 148 283 388 710 ;
-C -1 ; WX 278 ; N imacron ; B 69 0 429 678 ;
-C -1 ; WX 556 ; N Euro ; B 0 0 0 0 ;
-EndCharMetrics
-StartKernData
-StartKernPairs 2481
-KPX A C -40
-KPX A Cacute -40
-KPX A Ccaron -40
-KPX A Ccedilla -40
-KPX A G -50
-KPX A Gbreve -50
-KPX A Gcommaaccent -50
-KPX A O -40
-KPX A Oacute -40
-KPX A Ocircumflex -40
-KPX A Odieresis -40
-KPX A Ograve -40
-KPX A Ohungarumlaut -40
-KPX A Omacron -40
-KPX A Oslash -40
-KPX A Otilde -40
-KPX A Q -40
-KPX A T -90
-KPX A Tcaron -90
-KPX A Tcommaaccent -90
-KPX A U -50
-KPX A Uacute -50
-KPX A Ucircumflex -50
-KPX A Udieresis -50
-KPX A Ugrave -50
-KPX A Uhungarumlaut -50
-KPX A Umacron -50
-KPX A Uogonek -50
-KPX A Uring -50
-KPX A V -80
-KPX A W -60
-KPX A Y -110
-KPX A Yacute -110
-KPX A Ydieresis -110
-KPX A u -30
-KPX A uacute -30
-KPX A ucircumflex -30
-KPX A udieresis -30
-KPX A ugrave -30
-KPX A uhungarumlaut -30
-KPX A umacron -30
-KPX A uogonek -30
-KPX A uring -30
-KPX A v -40
-KPX A w -30
-KPX A y -30
-KPX A yacute -30
-KPX A ydieresis -30
-KPX Aacute C -40
-KPX Aacute Cacute -40
-KPX Aacute Ccaron -40
-KPX Aacute Ccedilla -40
-KPX Aacute G -50
-KPX Aacute Gbreve -50
-KPX Aacute Gcommaaccent -50
-KPX Aacute O -40
-KPX Aacute Oacute -40
-KPX Aacute Ocircumflex -40
-KPX Aacute Odieresis -40
-KPX Aacute Ograve -40
-KPX Aacute Ohungarumlaut -40
-KPX Aacute Omacron -40
-KPX Aacute Oslash -40
-KPX Aacute Otilde -40
-KPX Aacute Q -40
-KPX Aacute T -90
-KPX Aacute Tcaron -90
-KPX Aacute Tcommaaccent -90
-KPX Aacute U -50
-KPX Aacute Uacute -50
-KPX Aacute Ucircumflex -50
-KPX Aacute Udieresis -50
-KPX Aacute Ugrave -50
-KPX Aacute Uhungarumlaut -50
-KPX Aacute Umacron -50
-KPX Aacute Uogonek -50
-KPX Aacute Uring -50
-KPX Aacute V -80
-KPX Aacute W -60
-KPX Aacute Y -110
-KPX Aacute Yacute -110
-KPX Aacute Ydieresis -110
-KPX Aacute u -30
-KPX Aacute uacute -30
-KPX Aacute ucircumflex -30
-KPX Aacute udieresis -30
-KPX Aacute ugrave -30
-KPX Aacute uhungarumlaut -30
-KPX Aacute umacron -30
-KPX Aacute uogonek -30
-KPX Aacute uring -30
-KPX Aacute v -40
-KPX Aacute w -30
-KPX Aacute y -30
-KPX Aacute yacute -30
-KPX Aacute ydieresis -30
-KPX Abreve C -40
-KPX Abreve Cacute -40
-KPX Abreve Ccaron -40
-KPX Abreve Ccedilla -40
-KPX Abreve G -50
-KPX Abreve Gbreve -50
-KPX Abreve Gcommaaccent -50
-KPX Abreve O -40
-KPX Abreve Oacute -40
-KPX Abreve Ocircumflex -40
-KPX Abreve Odieresis -40
-KPX Abreve Ograve -40
-KPX Abreve Ohungarumlaut -40
-KPX Abreve Omacron -40
-KPX Abreve Oslash -40
-KPX Abreve Otilde -40
-KPX Abreve Q -40
-KPX Abreve T -90
-KPX Abreve Tcaron -90
-KPX Abreve Tcommaaccent -90
-KPX Abreve U -50
-KPX Abreve Uacute -50
-KPX Abreve Ucircumflex -50
-KPX Abreve Udieresis -50
-KPX Abreve Ugrave -50
-KPX Abreve Uhungarumlaut -50
-KPX Abreve Umacron -50
-KPX Abreve Uogonek -50
-KPX Abreve Uring -50
-KPX Abreve V -80
-KPX Abreve W -60
-KPX Abreve Y -110
-KPX Abreve Yacute -110
-KPX Abreve Ydieresis -110
-KPX Abreve u -30
-KPX Abreve uacute -30
-KPX Abreve ucircumflex -30
-KPX Abreve udieresis -30
-KPX Abreve ugrave -30
-KPX Abreve uhungarumlaut -30
-KPX Abreve umacron -30
-KPX Abreve uogonek -30
-KPX Abreve uring -30
-KPX Abreve v -40
-KPX Abreve w -30
-KPX Abreve y -30
-KPX Abreve yacute -30
-KPX Abreve ydieresis -30
-KPX Acircumflex C -40
-KPX Acircumflex Cacute -40
-KPX Acircumflex Ccaron -40
-KPX Acircumflex Ccedilla -40
-KPX Acircumflex G -50
-KPX Acircumflex Gbreve -50
-KPX Acircumflex Gcommaaccent -50
-KPX Acircumflex O -40
-KPX Acircumflex Oacute -40
-KPX Acircumflex Ocircumflex -40
-KPX Acircumflex Odieresis -40
-KPX Acircumflex Ograve -40
-KPX Acircumflex Ohungarumlaut -40
-KPX Acircumflex Omacron -40
-KPX Acircumflex Oslash -40
-KPX Acircumflex Otilde -40
-KPX Acircumflex Q -40
-KPX Acircumflex T -90
-KPX Acircumflex Tcaron -90
-KPX Acircumflex Tcommaaccent -90
-KPX Acircumflex U -50
-KPX Acircumflex Uacute -50
-KPX Acircumflex Ucircumflex -50
-KPX Acircumflex Udieresis -50
-KPX Acircumflex Ugrave -50
-KPX Acircumflex Uhungarumlaut -50
-KPX Acircumflex Umacron -50
-KPX Acircumflex Uogonek -50
-KPX Acircumflex Uring -50
-KPX Acircumflex V -80
-KPX Acircumflex W -60
-KPX Acircumflex Y -110
-KPX Acircumflex Yacute -110
-KPX Acircumflex Ydieresis -110
-KPX Acircumflex u -30
-KPX Acircumflex uacute -30
-KPX Acircumflex ucircumflex -30
-KPX Acircumflex udieresis -30
-KPX Acircumflex ugrave -30
-KPX Acircumflex uhungarumlaut -30
-KPX Acircumflex umacron -30
-KPX Acircumflex uogonek -30
-KPX Acircumflex uring -30
-KPX Acircumflex v -40
-KPX Acircumflex w -30
-KPX Acircumflex y -30
-KPX Acircumflex yacute -30
-KPX Acircumflex ydieresis -30
-KPX Adieresis C -40
-KPX Adieresis Cacute -40
-KPX Adieresis Ccaron -40
-KPX Adieresis Ccedilla -40
-KPX Adieresis G -50
-KPX Adieresis Gbreve -50
-KPX Adieresis Gcommaaccent -50
-KPX Adieresis O -40
-KPX Adieresis Oacute -40
-KPX Adieresis Ocircumflex -40
-KPX Adieresis Odieresis -40
-KPX Adieresis Ograve -40
-KPX Adieresis Ohungarumlaut -40
-KPX Adieresis Omacron -40
-KPX Adieresis Oslash -40
-KPX Adieresis Otilde -40
-KPX Adieresis Q -40
-KPX Adieresis T -90
-KPX Adieresis Tcaron -90
-KPX Adieresis Tcommaaccent -90
-KPX Adieresis U -50
-KPX Adieresis Uacute -50
-KPX Adieresis Ucircumflex -50
-KPX Adieresis Udieresis -50
-KPX Adieresis Ugrave -50
-KPX Adieresis Uhungarumlaut -50
-KPX Adieresis Umacron -50
-KPX Adieresis Uogonek -50
-KPX Adieresis Uring -50
-KPX Adieresis V -80
-KPX Adieresis W -60
-KPX Adieresis Y -110
-KPX Adieresis Yacute -110
-KPX Adieresis Ydieresis -110
-KPX Adieresis u -30
-KPX Adieresis uacute -30
-KPX Adieresis ucircumflex -30
-KPX Adieresis udieresis -30
-KPX Adieresis ugrave -30
-KPX Adieresis uhungarumlaut -30
-KPX Adieresis umacron -30
-KPX Adieresis uogonek -30
-KPX Adieresis uring -30
-KPX Adieresis v -40
-KPX Adieresis w -30
-KPX Adieresis y -30
-KPX Adieresis yacute -30
-KPX Adieresis ydieresis -30
-KPX Agrave C -40
-KPX Agrave Cacute -40
-KPX Agrave Ccaron -40
-KPX Agrave Ccedilla -40
-KPX Agrave G -50
-KPX Agrave Gbreve -50
-KPX Agrave Gcommaaccent -50
-KPX Agrave O -40
-KPX Agrave Oacute -40
-KPX Agrave Ocircumflex -40
-KPX Agrave Odieresis -40
-KPX Agrave Ograve -40
-KPX Agrave Ohungarumlaut -40
-KPX Agrave Omacron -40
-KPX Agrave Oslash -40
-KPX Agrave Otilde -40
-KPX Agrave Q -40
-KPX Agrave T -90
-KPX Agrave Tcaron -90
-KPX Agrave Tcommaaccent -90
-KPX Agrave U -50
-KPX Agrave Uacute -50
-KPX Agrave Ucircumflex -50
-KPX Agrave Udieresis -50
-KPX Agrave Ugrave -50
-KPX Agrave Uhungarumlaut -50
-KPX Agrave Umacron -50
-KPX Agrave Uogonek -50
-KPX Agrave Uring -50
-KPX Agrave V -80
-KPX Agrave W -60
-KPX Agrave Y -110
-KPX Agrave Yacute -110
-KPX Agrave Ydieresis -110
-KPX Agrave u -30
-KPX Agrave uacute -30
-KPX Agrave ucircumflex -30
-KPX Agrave udieresis -30
-KPX Agrave ugrave -30
-KPX Agrave uhungarumlaut -30
-KPX Agrave umacron -30
-KPX Agrave uogonek -30
-KPX Agrave uring -30
-KPX Agrave v -40
-KPX Agrave w -30
-KPX Agrave y -30
-KPX Agrave yacute -30
-KPX Agrave ydieresis -30
-KPX Amacron C -40
-KPX Amacron Cacute -40
-KPX Amacron Ccaron -40
-KPX Amacron Ccedilla -40
-KPX Amacron G -50
-KPX Amacron Gbreve -50
-KPX Amacron Gcommaaccent -50
-KPX Amacron O -40
-KPX Amacron Oacute -40
-KPX Amacron Ocircumflex -40
-KPX Amacron Odieresis -40
-KPX Amacron Ograve -40
-KPX Amacron Ohungarumlaut -40
-KPX Amacron Omacron -40
-KPX Amacron Oslash -40
-KPX Amacron Otilde -40
-KPX Amacron Q -40
-KPX Amacron T -90
-KPX Amacron Tcaron -90
-KPX Amacron Tcommaaccent -90
-KPX Amacron U -50
-KPX Amacron Uacute -50
-KPX Amacron Ucircumflex -50
-KPX Amacron Udieresis -50
-KPX Amacron Ugrave -50
-KPX Amacron Uhungarumlaut -50
-KPX Amacron Umacron -50
-KPX Amacron Uogonek -50
-KPX Amacron Uring -50
-KPX Amacron V -80
-KPX Amacron W -60
-KPX Amacron Y -110
-KPX Amacron Yacute -110
-KPX Amacron Ydieresis -110
-KPX Amacron u -30
-KPX Amacron uacute -30
-KPX Amacron ucircumflex -30
-KPX Amacron udieresis -30
-KPX Amacron ugrave -30
-KPX Amacron uhungarumlaut -30
-KPX Amacron umacron -30
-KPX Amacron uogonek -30
-KPX Amacron uring -30
-KPX Amacron v -40
-KPX Amacron w -30
-KPX Amacron y -30
-KPX Amacron yacute -30
-KPX Amacron ydieresis -30
-KPX Aogonek C -40
-KPX Aogonek Cacute -40
-KPX Aogonek Ccaron -40
-KPX Aogonek Ccedilla -40
-KPX Aogonek G -50
-KPX Aogonek Gbreve -50
-KPX Aogonek Gcommaaccent -50
-KPX Aogonek O -40
-KPX Aogonek Oacute -40
-KPX Aogonek Ocircumflex -40
-KPX Aogonek Odieresis -40
-KPX Aogonek Ograve -40
-KPX Aogonek Ohungarumlaut -40
-KPX Aogonek Omacron -40
-KPX Aogonek Oslash -40
-KPX Aogonek Otilde -40
-KPX Aogonek Q -40
-KPX Aogonek T -90
-KPX Aogonek Tcaron -90
-KPX Aogonek Tcommaaccent -90
-KPX Aogonek U -50
-KPX Aogonek Uacute -50
-KPX Aogonek Ucircumflex -50
-KPX Aogonek Udieresis -50
-KPX Aogonek Ugrave -50
-KPX Aogonek Uhungarumlaut -50
-KPX Aogonek Umacron -50
-KPX Aogonek Uogonek -50
-KPX Aogonek Uring -50
-KPX Aogonek V -80
-KPX Aogonek W -60
-KPX Aogonek Y -110
-KPX Aogonek Yacute -110
-KPX Aogonek Ydieresis -110
-KPX Aogonek u -30
-KPX Aogonek uacute -30
-KPX Aogonek ucircumflex -30
-KPX Aogonek udieresis -30
-KPX Aogonek ugrave -30
-KPX Aogonek uhungarumlaut -30
-KPX Aogonek umacron -30
-KPX Aogonek uogonek -30
-KPX Aogonek uring -30
-KPX Aogonek v -40
-KPX Aogonek w -30
-KPX Aogonek y -30
-KPX Aogonek yacute -30
-KPX Aogonek ydieresis -30
-KPX Aring C -40
-KPX Aring Cacute -40
-KPX Aring Ccaron -40
-KPX Aring Ccedilla -40
-KPX Aring G -50
-KPX Aring Gbreve -50
-KPX Aring Gcommaaccent -50
-KPX Aring O -40
-KPX Aring Oacute -40
-KPX Aring Ocircumflex -40
-KPX Aring Odieresis -40
-KPX Aring Ograve -40
-KPX Aring Ohungarumlaut -40
-KPX Aring Omacron -40
-KPX Aring Oslash -40
-KPX Aring Otilde -40
-KPX Aring Q -40
-KPX Aring T -90
-KPX Aring Tcaron -90
-KPX Aring Tcommaaccent -90
-KPX Aring U -50
-KPX Aring Uacute -50
-KPX Aring Ucircumflex -50
-KPX Aring Udieresis -50
-KPX Aring Ugrave -50
-KPX Aring Uhungarumlaut -50
-KPX Aring Umacron -50
-KPX Aring Uogonek -50
-KPX Aring Uring -50
-KPX Aring V -80
-KPX Aring W -60
-KPX Aring Y -110
-KPX Aring Yacute -110
-KPX Aring Ydieresis -110
-KPX Aring u -30
-KPX Aring uacute -30
-KPX Aring ucircumflex -30
-KPX Aring udieresis -30
-KPX Aring ugrave -30
-KPX Aring uhungarumlaut -30
-KPX Aring umacron -30
-KPX Aring uogonek -30
-KPX Aring uring -30
-KPX Aring v -40
-KPX Aring w -30
-KPX Aring y -30
-KPX Aring yacute -30
-KPX Aring ydieresis -30
-KPX Atilde C -40
-KPX Atilde Cacute -40
-KPX Atilde Ccaron -40
-KPX Atilde Ccedilla -40
-KPX Atilde G -50
-KPX Atilde Gbreve -50
-KPX Atilde Gcommaaccent -50
-KPX Atilde O -40
-KPX Atilde Oacute -40
-KPX Atilde Ocircumflex -40
-KPX Atilde Odieresis -40
-KPX Atilde Ograve -40
-KPX Atilde Ohungarumlaut -40
-KPX Atilde Omacron -40
-KPX Atilde Oslash -40
-KPX Atilde Otilde -40
-KPX Atilde Q -40
-KPX Atilde T -90
-KPX Atilde Tcaron -90
-KPX Atilde Tcommaaccent -90
-KPX Atilde U -50
-KPX Atilde Uacute -50
-KPX Atilde Ucircumflex -50
-KPX Atilde Udieresis -50
-KPX Atilde Ugrave -50
-KPX Atilde Uhungarumlaut -50
-KPX Atilde Umacron -50
-KPX Atilde Uogonek -50
-KPX Atilde Uring -50
-KPX Atilde V -80
-KPX Atilde W -60
-KPX Atilde Y -110
-KPX Atilde Yacute -110
-KPX Atilde Ydieresis -110
-KPX Atilde u -30
-KPX Atilde uacute -30
-KPX Atilde ucircumflex -30
-KPX Atilde udieresis -30
-KPX Atilde ugrave -30
-KPX Atilde uhungarumlaut -30
-KPX Atilde umacron -30
-KPX Atilde uogonek -30
-KPX Atilde uring -30
-KPX Atilde v -40
-KPX Atilde w -30
-KPX Atilde y -30
-KPX Atilde yacute -30
-KPX Atilde ydieresis -30
-KPX B A -30
-KPX B Aacute -30
-KPX B Abreve -30
-KPX B Acircumflex -30
-KPX B Adieresis -30
-KPX B Agrave -30
-KPX B Amacron -30
-KPX B Aogonek -30
-KPX B Aring -30
-KPX B Atilde -30
-KPX B U -10
-KPX B Uacute -10
-KPX B Ucircumflex -10
-KPX B Udieresis -10
-KPX B Ugrave -10
-KPX B Uhungarumlaut -10
-KPX B Umacron -10
-KPX B Uogonek -10
-KPX B Uring -10
-KPX D A -40
-KPX D Aacute -40
-KPX D Abreve -40
-KPX D Acircumflex -40
-KPX D Adieresis -40
-KPX D Agrave -40
-KPX D Amacron -40
-KPX D Aogonek -40
-KPX D Aring -40
-KPX D Atilde -40
-KPX D V -40
-KPX D W -40
-KPX D Y -70
-KPX D Yacute -70
-KPX D Ydieresis -70
-KPX D comma -30
-KPX D period -30
-KPX Dcaron A -40
-KPX Dcaron Aacute -40
-KPX Dcaron Abreve -40
-KPX Dcaron Acircumflex -40
-KPX Dcaron Adieresis -40
-KPX Dcaron Agrave -40
-KPX Dcaron Amacron -40
-KPX Dcaron Aogonek -40
-KPX Dcaron Aring -40
-KPX Dcaron Atilde -40
-KPX Dcaron V -40
-KPX Dcaron W -40
-KPX Dcaron Y -70
-KPX Dcaron Yacute -70
-KPX Dcaron Ydieresis -70
-KPX Dcaron comma -30
-KPX Dcaron period -30
-KPX Dcroat A -40
-KPX Dcroat Aacute -40
-KPX Dcroat Abreve -40
-KPX Dcroat Acircumflex -40
-KPX Dcroat Adieresis -40
-KPX Dcroat Agrave -40
-KPX Dcroat Amacron -40
-KPX Dcroat Aogonek -40
-KPX Dcroat Aring -40
-KPX Dcroat Atilde -40
-KPX Dcroat V -40
-KPX Dcroat W -40
-KPX Dcroat Y -70
-KPX Dcroat Yacute -70
-KPX Dcroat Ydieresis -70
-KPX Dcroat comma -30
-KPX Dcroat period -30
-KPX F A -80
-KPX F Aacute -80
-KPX F Abreve -80
-KPX F Acircumflex -80
-KPX F Adieresis -80
-KPX F Agrave -80
-KPX F Amacron -80
-KPX F Aogonek -80
-KPX F Aring -80
-KPX F Atilde -80
-KPX F a -20
-KPX F aacute -20
-KPX F abreve -20
-KPX F acircumflex -20
-KPX F adieresis -20
-KPX F agrave -20
-KPX F amacron -20
-KPX F aogonek -20
-KPX F aring -20
-KPX F atilde -20
-KPX F comma -100
-KPX F period -100
-KPX J A -20
-KPX J Aacute -20
-KPX J Abreve -20
-KPX J Acircumflex -20
-KPX J Adieresis -20
-KPX J Agrave -20
-KPX J Amacron -20
-KPX J Aogonek -20
-KPX J Aring -20
-KPX J Atilde -20
-KPX J comma -20
-KPX J period -20
-KPX J u -20
-KPX J uacute -20
-KPX J ucircumflex -20
-KPX J udieresis -20
-KPX J ugrave -20
-KPX J uhungarumlaut -20
-KPX J umacron -20
-KPX J uogonek -20
-KPX J uring -20
-KPX K O -30
-KPX K Oacute -30
-KPX K Ocircumflex -30
-KPX K Odieresis -30
-KPX K Ograve -30
-KPX K Ohungarumlaut -30
-KPX K Omacron -30
-KPX K Oslash -30
-KPX K Otilde -30
-KPX K e -15
-KPX K eacute -15
-KPX K ecaron -15
-KPX K ecircumflex -15
-KPX K edieresis -15
-KPX K edotaccent -15
-KPX K egrave -15
-KPX K emacron -15
-KPX K eogonek -15
-KPX K o -35
-KPX K oacute -35
-KPX K ocircumflex -35
-KPX K odieresis -35
-KPX K ograve -35
-KPX K ohungarumlaut -35
-KPX K omacron -35
-KPX K oslash -35
-KPX K otilde -35
-KPX K u -30
-KPX K uacute -30
-KPX K ucircumflex -30
-KPX K udieresis -30
-KPX K ugrave -30
-KPX K uhungarumlaut -30
-KPX K umacron -30
-KPX K uogonek -30
-KPX K uring -30
-KPX K y -40
-KPX K yacute -40
-KPX K ydieresis -40
-KPX Kcommaaccent O -30
-KPX Kcommaaccent Oacute -30
-KPX Kcommaaccent Ocircumflex -30
-KPX Kcommaaccent Odieresis -30
-KPX Kcommaaccent Ograve -30
-KPX Kcommaaccent Ohungarumlaut -30
-KPX Kcommaaccent Omacron -30
-KPX Kcommaaccent Oslash -30
-KPX Kcommaaccent Otilde -30
-KPX Kcommaaccent e -15
-KPX Kcommaaccent eacute -15
-KPX Kcommaaccent ecaron -15
-KPX Kcommaaccent ecircumflex -15
-KPX Kcommaaccent edieresis -15
-KPX Kcommaaccent edotaccent -15
-KPX Kcommaaccent egrave -15
-KPX Kcommaaccent emacron -15
-KPX Kcommaaccent eogonek -15
-KPX Kcommaaccent o -35
-KPX Kcommaaccent oacute -35
-KPX Kcommaaccent ocircumflex -35
-KPX Kcommaaccent odieresis -35
-KPX Kcommaaccent ograve -35
-KPX Kcommaaccent ohungarumlaut -35
-KPX Kcommaaccent omacron -35
-KPX Kcommaaccent oslash -35
-KPX Kcommaaccent otilde -35
-KPX Kcommaaccent u -30
-KPX Kcommaaccent uacute -30
-KPX Kcommaaccent ucircumflex -30
-KPX Kcommaaccent udieresis -30
-KPX Kcommaaccent ugrave -30
-KPX Kcommaaccent uhungarumlaut -30
-KPX Kcommaaccent umacron -30
-KPX Kcommaaccent uogonek -30
-KPX Kcommaaccent uring -30
-KPX Kcommaaccent y -40
-KPX Kcommaaccent yacute -40
-KPX Kcommaaccent ydieresis -40
-KPX L T -90
-KPX L Tcaron -90
-KPX L Tcommaaccent -90
-KPX L V -110
-KPX L W -80
-KPX L Y -120
-KPX L Yacute -120
-KPX L Ydieresis -120
-KPX L quotedblright -140
-KPX L quoteright -140
-KPX L y -30
-KPX L yacute -30
-KPX L ydieresis -30
-KPX Lacute T -90
-KPX Lacute Tcaron -90
-KPX Lacute Tcommaaccent -90
-KPX Lacute V -110
-KPX Lacute W -80
-KPX Lacute Y -120
-KPX Lacute Yacute -120
-KPX Lacute Ydieresis -120
-KPX Lacute quotedblright -140
-KPX Lacute quoteright -140
-KPX Lacute y -30
-KPX Lacute yacute -30
-KPX Lacute ydieresis -30
-KPX Lcommaaccent T -90
-KPX Lcommaaccent Tcaron -90
-KPX Lcommaaccent Tcommaaccent -90
-KPX Lcommaaccent V -110
-KPX Lcommaaccent W -80
-KPX Lcommaaccent Y -120
-KPX Lcommaaccent Yacute -120
-KPX Lcommaaccent Ydieresis -120
-KPX Lcommaaccent quotedblright -140
-KPX Lcommaaccent quoteright -140
-KPX Lcommaaccent y -30
-KPX Lcommaaccent yacute -30
-KPX Lcommaaccent ydieresis -30
-KPX Lslash T -90
-KPX Lslash Tcaron -90
-KPX Lslash Tcommaaccent -90
-KPX Lslash V -110
-KPX Lslash W -80
-KPX Lslash Y -120
-KPX Lslash Yacute -120
-KPX Lslash Ydieresis -120
-KPX Lslash quotedblright -140
-KPX Lslash quoteright -140
-KPX Lslash y -30
-KPX Lslash yacute -30
-KPX Lslash ydieresis -30
-KPX O A -50
-KPX O Aacute -50
-KPX O Abreve -50
-KPX O Acircumflex -50
-KPX O Adieresis -50
-KPX O Agrave -50
-KPX O Amacron -50
-KPX O Aogonek -50
-KPX O Aring -50
-KPX O Atilde -50
-KPX O T -40
-KPX O Tcaron -40
-KPX O Tcommaaccent -40
-KPX O V -50
-KPX O W -50
-KPX O X -50
-KPX O Y -70
-KPX O Yacute -70
-KPX O Ydieresis -70
-KPX O comma -40
-KPX O period -40
-KPX Oacute A -50
-KPX Oacute Aacute -50
-KPX Oacute Abreve -50
-KPX Oacute Acircumflex -50
-KPX Oacute Adieresis -50
-KPX Oacute Agrave -50
-KPX Oacute Amacron -50
-KPX Oacute Aogonek -50
-KPX Oacute Aring -50
-KPX Oacute Atilde -50
-KPX Oacute T -40
-KPX Oacute Tcaron -40
-KPX Oacute Tcommaaccent -40
-KPX Oacute V -50
-KPX Oacute W -50
-KPX Oacute X -50
-KPX Oacute Y -70
-KPX Oacute Yacute -70
-KPX Oacute Ydieresis -70
-KPX Oacute comma -40
-KPX Oacute period -40
-KPX Ocircumflex A -50
-KPX Ocircumflex Aacute -50
-KPX Ocircumflex Abreve -50
-KPX Ocircumflex Acircumflex -50
-KPX Ocircumflex Adieresis -50
-KPX Ocircumflex Agrave -50
-KPX Ocircumflex Amacron -50
-KPX Ocircumflex Aogonek -50
-KPX Ocircumflex Aring -50
-KPX Ocircumflex Atilde -50
-KPX Ocircumflex T -40
-KPX Ocircumflex Tcaron -40
-KPX Ocircumflex Tcommaaccent -40
-KPX Ocircumflex V -50
-KPX Ocircumflex W -50
-KPX Ocircumflex X -50
-KPX Ocircumflex Y -70
-KPX Ocircumflex Yacute -70
-KPX Ocircumflex Ydieresis -70
-KPX Ocircumflex comma -40
-KPX Ocircumflex period -40
-KPX Odieresis A -50
-KPX Odieresis Aacute -50
-KPX Odieresis Abreve -50
-KPX Odieresis Acircumflex -50
-KPX Odieresis Adieresis -50
-KPX Odieresis Agrave -50
-KPX Odieresis Amacron -50
-KPX Odieresis Aogonek -50
-KPX Odieresis Aring -50
-KPX Odieresis Atilde -50
-KPX Odieresis T -40
-KPX Odieresis Tcaron -40
-KPX Odieresis Tcommaaccent -40
-KPX Odieresis V -50
-KPX Odieresis W -50
-KPX Odieresis X -50
-KPX Odieresis Y -70
-KPX Odieresis Yacute -70
-KPX Odieresis Ydieresis -70
-KPX Odieresis comma -40
-KPX Odieresis period -40
-KPX Ograve A -50
-KPX Ograve Aacute -50
-KPX Ograve Abreve -50
-KPX Ograve Acircumflex -50
-KPX Ograve Adieresis -50
-KPX Ograve Agrave -50
-KPX Ograve Amacron -50
-KPX Ograve Aogonek -50
-KPX Ograve Aring -50
-KPX Ograve Atilde -50
-KPX Ograve T -40
-KPX Ograve Tcaron -40
-KPX Ograve Tcommaaccent -40
-KPX Ograve V -50
-KPX Ograve W -50
-KPX Ograve X -50
-KPX Ograve Y -70
-KPX Ograve Yacute -70
-KPX Ograve Ydieresis -70
-KPX Ograve comma -40
-KPX Ograve period -40
-KPX Ohungarumlaut A -50
-KPX Ohungarumlaut Aacute -50
-KPX Ohungarumlaut Abreve -50
-KPX Ohungarumlaut Acircumflex -50
-KPX Ohungarumlaut Adieresis -50
-KPX Ohungarumlaut Agrave -50
-KPX Ohungarumlaut Amacron -50
-KPX Ohungarumlaut Aogonek -50
-KPX Ohungarumlaut Aring -50
-KPX Ohungarumlaut Atilde -50
-KPX Ohungarumlaut T -40
-KPX Ohungarumlaut Tcaron -40
-KPX Ohungarumlaut Tcommaaccent -40
-KPX Ohungarumlaut V -50
-KPX Ohungarumlaut W -50
-KPX Ohungarumlaut X -50
-KPX Ohungarumlaut Y -70
-KPX Ohungarumlaut Yacute -70
-KPX Ohungarumlaut Ydieresis -70
-KPX Ohungarumlaut comma -40
-KPX Ohungarumlaut period -40
-KPX Omacron A -50
-KPX Omacron Aacute -50
-KPX Omacron Abreve -50
-KPX Omacron Acircumflex -50
-KPX Omacron Adieresis -50
-KPX Omacron Agrave -50
-KPX Omacron Amacron -50
-KPX Omacron Aogonek -50
-KPX Omacron Aring -50
-KPX Omacron Atilde -50
-KPX Omacron T -40
-KPX Omacron Tcaron -40
-KPX Omacron Tcommaaccent -40
-KPX Omacron V -50
-KPX Omacron W -50
-KPX Omacron X -50
-KPX Omacron Y -70
-KPX Omacron Yacute -70
-KPX Omacron Ydieresis -70
-KPX Omacron comma -40
-KPX Omacron period -40
-KPX Oslash A -50
-KPX Oslash Aacute -50
-KPX Oslash Abreve -50
-KPX Oslash Acircumflex -50
-KPX Oslash Adieresis -50
-KPX Oslash Agrave -50
-KPX Oslash Amacron -50
-KPX Oslash Aogonek -50
-KPX Oslash Aring -50
-KPX Oslash Atilde -50
-KPX Oslash T -40
-KPX Oslash Tcaron -40
-KPX Oslash Tcommaaccent -40
-KPX Oslash V -50
-KPX Oslash W -50
-KPX Oslash X -50
-KPX Oslash Y -70
-KPX Oslash Yacute -70
-KPX Oslash Ydieresis -70
-KPX Oslash comma -40
-KPX Oslash period -40
-KPX Otilde A -50
-KPX Otilde Aacute -50
-KPX Otilde Abreve -50
-KPX Otilde Acircumflex -50
-KPX Otilde Adieresis -50
-KPX Otilde Agrave -50
-KPX Otilde Amacron -50
-KPX Otilde Aogonek -50
-KPX Otilde Aring -50
-KPX Otilde Atilde -50
-KPX Otilde T -40
-KPX Otilde Tcaron -40
-KPX Otilde Tcommaaccent -40
-KPX Otilde V -50
-KPX Otilde W -50
-KPX Otilde X -50
-KPX Otilde Y -70
-KPX Otilde Yacute -70
-KPX Otilde Ydieresis -70
-KPX Otilde comma -40
-KPX Otilde period -40
-KPX P A -100
-KPX P Aacute -100
-KPX P Abreve -100
-KPX P Acircumflex -100
-KPX P Adieresis -100
-KPX P Agrave -100
-KPX P Amacron -100
-KPX P Aogonek -100
-KPX P Aring -100
-KPX P Atilde -100
-KPX P a -30
-KPX P aacute -30
-KPX P abreve -30
-KPX P acircumflex -30
-KPX P adieresis -30
-KPX P agrave -30
-KPX P amacron -30
-KPX P aogonek -30
-KPX P aring -30
-KPX P atilde -30
-KPX P comma -120
-KPX P e -30
-KPX P eacute -30
-KPX P ecaron -30
-KPX P ecircumflex -30
-KPX P edieresis -30
-KPX P edotaccent -30
-KPX P egrave -30
-KPX P emacron -30
-KPX P eogonek -30
-KPX P o -40
-KPX P oacute -40
-KPX P ocircumflex -40
-KPX P odieresis -40
-KPX P ograve -40
-KPX P ohungarumlaut -40
-KPX P omacron -40
-KPX P oslash -40
-KPX P otilde -40
-KPX P period -120
-KPX Q U -10
-KPX Q Uacute -10
-KPX Q Ucircumflex -10
-KPX Q Udieresis -10
-KPX Q Ugrave -10
-KPX Q Uhungarumlaut -10
-KPX Q Umacron -10
-KPX Q Uogonek -10
-KPX Q Uring -10
-KPX Q comma 20
-KPX Q period 20
-KPX R O -20
-KPX R Oacute -20
-KPX R Ocircumflex -20
-KPX R Odieresis -20
-KPX R Ograve -20
-KPX R Ohungarumlaut -20
-KPX R Omacron -20
-KPX R Oslash -20
-KPX R Otilde -20
-KPX R T -20
-KPX R Tcaron -20
-KPX R Tcommaaccent -20
-KPX R U -20
-KPX R Uacute -20
-KPX R Ucircumflex -20
-KPX R Udieresis -20
-KPX R Ugrave -20
-KPX R Uhungarumlaut -20
-KPX R Umacron -20
-KPX R Uogonek -20
-KPX R Uring -20
-KPX R V -50
-KPX R W -40
-KPX R Y -50
-KPX R Yacute -50
-KPX R Ydieresis -50
-KPX Racute O -20
-KPX Racute Oacute -20
-KPX Racute Ocircumflex -20
-KPX Racute Odieresis -20
-KPX Racute Ograve -20
-KPX Racute Ohungarumlaut -20
-KPX Racute Omacron -20
-KPX Racute Oslash -20
-KPX Racute Otilde -20
-KPX Racute T -20
-KPX Racute Tcaron -20
-KPX Racute Tcommaaccent -20
-KPX Racute U -20
-KPX Racute Uacute -20
-KPX Racute Ucircumflex -20
-KPX Racute Udieresis -20
-KPX Racute Ugrave -20
-KPX Racute Uhungarumlaut -20
-KPX Racute Umacron -20
-KPX Racute Uogonek -20
-KPX Racute Uring -20
-KPX Racute V -50
-KPX Racute W -40
-KPX Racute Y -50
-KPX Racute Yacute -50
-KPX Racute Ydieresis -50
-KPX Rcaron O -20
-KPX Rcaron Oacute -20
-KPX Rcaron Ocircumflex -20
-KPX Rcaron Odieresis -20
-KPX Rcaron Ograve -20
-KPX Rcaron Ohungarumlaut -20
-KPX Rcaron Omacron -20
-KPX Rcaron Oslash -20
-KPX Rcaron Otilde -20
-KPX Rcaron T -20
-KPX Rcaron Tcaron -20
-KPX Rcaron Tcommaaccent -20
-KPX Rcaron U -20
-KPX Rcaron Uacute -20
-KPX Rcaron Ucircumflex -20
-KPX Rcaron Udieresis -20
-KPX Rcaron Ugrave -20
-KPX Rcaron Uhungarumlaut -20
-KPX Rcaron Umacron -20
-KPX Rcaron Uogonek -20
-KPX Rcaron Uring -20
-KPX Rcaron V -50
-KPX Rcaron W -40
-KPX Rcaron Y -50
-KPX Rcaron Yacute -50
-KPX Rcaron Ydieresis -50
-KPX Rcommaaccent O -20
-KPX Rcommaaccent Oacute -20
-KPX Rcommaaccent Ocircumflex -20
-KPX Rcommaaccent Odieresis -20
-KPX Rcommaaccent Ograve -20
-KPX Rcommaaccent Ohungarumlaut -20
-KPX Rcommaaccent Omacron -20
-KPX Rcommaaccent Oslash -20
-KPX Rcommaaccent Otilde -20
-KPX Rcommaaccent T -20
-KPX Rcommaaccent Tcaron -20
-KPX Rcommaaccent Tcommaaccent -20
-KPX Rcommaaccent U -20
-KPX Rcommaaccent Uacute -20
-KPX Rcommaaccent Ucircumflex -20
-KPX Rcommaaccent Udieresis -20
-KPX Rcommaaccent Ugrave -20
-KPX Rcommaaccent Uhungarumlaut -20
-KPX Rcommaaccent Umacron -20
-KPX Rcommaaccent Uogonek -20
-KPX Rcommaaccent Uring -20
-KPX Rcommaaccent V -50
-KPX Rcommaaccent W -40
-KPX Rcommaaccent Y -50
-KPX Rcommaaccent Yacute -50
-KPX Rcommaaccent Ydieresis -50
-KPX T A -90
-KPX T Aacute -90
-KPX T Abreve -90
-KPX T Acircumflex -90
-KPX T Adieresis -90
-KPX T Agrave -90
-KPX T Amacron -90
-KPX T Aogonek -90
-KPX T Aring -90
-KPX T Atilde -90
-KPX T O -40
-KPX T Oacute -40
-KPX T Ocircumflex -40
-KPX T Odieresis -40
-KPX T Ograve -40
-KPX T Ohungarumlaut -40
-KPX T Omacron -40
-KPX T Oslash -40
-KPX T Otilde -40
-KPX T a -80
-KPX T aacute -80
-KPX T abreve -80
-KPX T acircumflex -80
-KPX T adieresis -80
-KPX T agrave -80
-KPX T amacron -80
-KPX T aogonek -80
-KPX T aring -80
-KPX T atilde -80
-KPX T colon -40
-KPX T comma -80
-KPX T e -60
-KPX T eacute -60
-KPX T ecaron -60
-KPX T ecircumflex -60
-KPX T edieresis -60
-KPX T edotaccent -60
-KPX T egrave -60
-KPX T emacron -60
-KPX T eogonek -60
-KPX T hyphen -120
-KPX T o -80
-KPX T oacute -80
-KPX T ocircumflex -80
-KPX T odieresis -80
-KPX T ograve -80
-KPX T ohungarumlaut -80
-KPX T omacron -80
-KPX T oslash -80
-KPX T otilde -80
-KPX T period -80
-KPX T r -80
-KPX T racute -80
-KPX T rcommaaccent -80
-KPX T semicolon -40
-KPX T u -90
-KPX T uacute -90
-KPX T ucircumflex -90
-KPX T udieresis -90
-KPX T ugrave -90
-KPX T uhungarumlaut -90
-KPX T umacron -90
-KPX T uogonek -90
-KPX T uring -90
-KPX T w -60
-KPX T y -60
-KPX T yacute -60
-KPX T ydieresis -60
-KPX Tcaron A -90
-KPX Tcaron Aacute -90
-KPX Tcaron Abreve -90
-KPX Tcaron Acircumflex -90
-KPX Tcaron Adieresis -90
-KPX Tcaron Agrave -90
-KPX Tcaron Amacron -90
-KPX Tcaron Aogonek -90
-KPX Tcaron Aring -90
-KPX Tcaron Atilde -90
-KPX Tcaron O -40
-KPX Tcaron Oacute -40
-KPX Tcaron Ocircumflex -40
-KPX Tcaron Odieresis -40
-KPX Tcaron Ograve -40
-KPX Tcaron Ohungarumlaut -40
-KPX Tcaron Omacron -40
-KPX Tcaron Oslash -40
-KPX Tcaron Otilde -40
-KPX Tcaron a -80
-KPX Tcaron aacute -80
-KPX Tcaron abreve -80
-KPX Tcaron acircumflex -80
-KPX Tcaron adieresis -80
-KPX Tcaron agrave -80
-KPX Tcaron amacron -80
-KPX Tcaron aogonek -80
-KPX Tcaron aring -80
-KPX Tcaron atilde -80
-KPX Tcaron colon -40
-KPX Tcaron comma -80
-KPX Tcaron e -60
-KPX Tcaron eacute -60
-KPX Tcaron ecaron -60
-KPX Tcaron ecircumflex -60
-KPX Tcaron edieresis -60
-KPX Tcaron edotaccent -60
-KPX Tcaron egrave -60
-KPX Tcaron emacron -60
-KPX Tcaron eogonek -60
-KPX Tcaron hyphen -120
-KPX Tcaron o -80
-KPX Tcaron oacute -80
-KPX Tcaron ocircumflex -80
-KPX Tcaron odieresis -80
-KPX Tcaron ograve -80
-KPX Tcaron ohungarumlaut -80
-KPX Tcaron omacron -80
-KPX Tcaron oslash -80
-KPX Tcaron otilde -80
-KPX Tcaron period -80
-KPX Tcaron r -80
-KPX Tcaron racute -80
-KPX Tcaron rcommaaccent -80
-KPX Tcaron semicolon -40
-KPX Tcaron u -90
-KPX Tcaron uacute -90
-KPX Tcaron ucircumflex -90
-KPX Tcaron udieresis -90
-KPX Tcaron ugrave -90
-KPX Tcaron uhungarumlaut -90
-KPX Tcaron umacron -90
-KPX Tcaron uogonek -90
-KPX Tcaron uring -90
-KPX Tcaron w -60
-KPX Tcaron y -60
-KPX Tcaron yacute -60
-KPX Tcaron ydieresis -60
-KPX Tcommaaccent A -90
-KPX Tcommaaccent Aacute -90
-KPX Tcommaaccent Abreve -90
-KPX Tcommaaccent Acircumflex -90
-KPX Tcommaaccent Adieresis -90
-KPX Tcommaaccent Agrave -90
-KPX Tcommaaccent Amacron -90
-KPX Tcommaaccent Aogonek -90
-KPX Tcommaaccent Aring -90
-KPX Tcommaaccent Atilde -90
-KPX Tcommaaccent O -40
-KPX Tcommaaccent Oacute -40
-KPX Tcommaaccent Ocircumflex -40
-KPX Tcommaaccent Odieresis -40
-KPX Tcommaaccent Ograve -40
-KPX Tcommaaccent Ohungarumlaut -40
-KPX Tcommaaccent Omacron -40
-KPX Tcommaaccent Oslash -40
-KPX Tcommaaccent Otilde -40
-KPX Tcommaaccent a -80
-KPX Tcommaaccent aacute -80
-KPX Tcommaaccent abreve -80
-KPX Tcommaaccent acircumflex -80
-KPX Tcommaaccent adieresis -80
-KPX Tcommaaccent agrave -80
-KPX Tcommaaccent amacron -80
-KPX Tcommaaccent aogonek -80
-KPX Tcommaaccent aring -80
-KPX Tcommaaccent atilde -80
-KPX Tcommaaccent colon -40
-KPX Tcommaaccent comma -80
-KPX Tcommaaccent e -60
-KPX Tcommaaccent eacute -60
-KPX Tcommaaccent ecaron -60
-KPX Tcommaaccent ecircumflex -60
-KPX Tcommaaccent edieresis -60
-KPX Tcommaaccent edotaccent -60
-KPX Tcommaaccent egrave -60
-KPX Tcommaaccent emacron -60
-KPX Tcommaaccent eogonek -60
-KPX Tcommaaccent hyphen -120
-KPX Tcommaaccent o -80
-KPX Tcommaaccent oacute -80
-KPX Tcommaaccent ocircumflex -80
-KPX Tcommaaccent odieresis -80
-KPX Tcommaaccent ograve -80
-KPX Tcommaaccent ohungarumlaut -80
-KPX Tcommaaccent omacron -80
-KPX Tcommaaccent oslash -80
-KPX Tcommaaccent otilde -80
-KPX Tcommaaccent period -80
-KPX Tcommaaccent r -80
-KPX Tcommaaccent racute -80
-KPX Tcommaaccent rcommaaccent -80
-KPX Tcommaaccent semicolon -40
-KPX Tcommaaccent u -90
-KPX Tcommaaccent uacute -90
-KPX Tcommaaccent ucircumflex -90
-KPX Tcommaaccent udieresis -90
-KPX Tcommaaccent ugrave -90
-KPX Tcommaaccent uhungarumlaut -90
-KPX Tcommaaccent umacron -90
-KPX Tcommaaccent uogonek -90
-KPX Tcommaaccent uring -90
-KPX Tcommaaccent w -60
-KPX Tcommaaccent y -60
-KPX Tcommaaccent yacute -60
-KPX Tcommaaccent ydieresis -60
-KPX U A -50
-KPX U Aacute -50
-KPX U Abreve -50
-KPX U Acircumflex -50
-KPX U Adieresis -50
-KPX U Agrave -50
-KPX U Amacron -50
-KPX U Aogonek -50
-KPX U Aring -50
-KPX U Atilde -50
-KPX U comma -30
-KPX U period -30
-KPX Uacute A -50
-KPX Uacute Aacute -50
-KPX Uacute Abreve -50
-KPX Uacute Acircumflex -50
-KPX Uacute Adieresis -50
-KPX Uacute Agrave -50
-KPX Uacute Amacron -50
-KPX Uacute Aogonek -50
-KPX Uacute Aring -50
-KPX Uacute Atilde -50
-KPX Uacute comma -30
-KPX Uacute period -30
-KPX Ucircumflex A -50
-KPX Ucircumflex Aacute -50
-KPX Ucircumflex Abreve -50
-KPX Ucircumflex Acircumflex -50
-KPX Ucircumflex Adieresis -50
-KPX Ucircumflex Agrave -50
-KPX Ucircumflex Amacron -50
-KPX Ucircumflex Aogonek -50
-KPX Ucircumflex Aring -50
-KPX Ucircumflex Atilde -50
-KPX Ucircumflex comma -30
-KPX Ucircumflex period -30
-KPX Udieresis A -50
-KPX Udieresis Aacute -50
-KPX Udieresis Abreve -50
-KPX Udieresis Acircumflex -50
-KPX Udieresis Adieresis -50
-KPX Udieresis Agrave -50
-KPX Udieresis Amacron -50
-KPX Udieresis Aogonek -50
-KPX Udieresis Aring -50
-KPX Udieresis Atilde -50
-KPX Udieresis comma -30
-KPX Udieresis period -30
-KPX Ugrave A -50
-KPX Ugrave Aacute -50
-KPX Ugrave Abreve -50
-KPX Ugrave Acircumflex -50
-KPX Ugrave Adieresis -50
-KPX Ugrave Agrave -50
-KPX Ugrave Amacron -50
-KPX Ugrave Aogonek -50
-KPX Ugrave Aring -50
-KPX Ugrave Atilde -50
-KPX Ugrave comma -30
-KPX Ugrave period -30
-KPX Uhungarumlaut A -50
-KPX Uhungarumlaut Aacute -50
-KPX Uhungarumlaut Abreve -50
-KPX Uhungarumlaut Acircumflex -50
-KPX Uhungarumlaut Adieresis -50
-KPX Uhungarumlaut Agrave -50
-KPX Uhungarumlaut Amacron -50
-KPX Uhungarumlaut Aogonek -50
-KPX Uhungarumlaut Aring -50
-KPX Uhungarumlaut Atilde -50
-KPX Uhungarumlaut comma -30
-KPX Uhungarumlaut period -30
-KPX Umacron A -50
-KPX Umacron Aacute -50
-KPX Umacron Abreve -50
-KPX Umacron Acircumflex -50
-KPX Umacron Adieresis -50
-KPX Umacron Agrave -50
-KPX Umacron Amacron -50
-KPX Umacron Aogonek -50
-KPX Umacron Aring -50
-KPX Umacron Atilde -50
-KPX Umacron comma -30
-KPX Umacron period -30
-KPX Uogonek A -50
-KPX Uogonek Aacute -50
-KPX Uogonek Abreve -50
-KPX Uogonek Acircumflex -50
-KPX Uogonek Adieresis -50
-KPX Uogonek Agrave -50
-KPX Uogonek Amacron -50
-KPX Uogonek Aogonek -50
-KPX Uogonek Aring -50
-KPX Uogonek Atilde -50
-KPX Uogonek comma -30
-KPX Uogonek period -30
-KPX Uring A -50
-KPX Uring Aacute -50
-KPX Uring Abreve -50
-KPX Uring Acircumflex -50
-KPX Uring Adieresis -50
-KPX Uring Agrave -50
-KPX Uring Amacron -50
-KPX Uring Aogonek -50
-KPX Uring Aring -50
-KPX Uring Atilde -50
-KPX Uring comma -30
-KPX Uring period -30
-KPX V A -80
-KPX V Aacute -80
-KPX V Abreve -80
-KPX V Acircumflex -80
-KPX V Adieresis -80
-KPX V Agrave -80
-KPX V Amacron -80
-KPX V Aogonek -80
-KPX V Aring -80
-KPX V Atilde -80
-KPX V G -50
-KPX V Gbreve -50
-KPX V Gcommaaccent -50
-KPX V O -50
-KPX V Oacute -50
-KPX V Ocircumflex -50
-KPX V Odieresis -50
-KPX V Ograve -50
-KPX V Ohungarumlaut -50
-KPX V Omacron -50
-KPX V Oslash -50
-KPX V Otilde -50
-KPX V a -60
-KPX V aacute -60
-KPX V abreve -60
-KPX V acircumflex -60
-KPX V adieresis -60
-KPX V agrave -60
-KPX V amacron -60
-KPX V aogonek -60
-KPX V aring -60
-KPX V atilde -60
-KPX V colon -40
-KPX V comma -120
-KPX V e -50
-KPX V eacute -50
-KPX V ecaron -50
-KPX V ecircumflex -50
-KPX V edieresis -50
-KPX V edotaccent -50
-KPX V egrave -50
-KPX V emacron -50
-KPX V eogonek -50
-KPX V hyphen -80
-KPX V o -90
-KPX V oacute -90
-KPX V ocircumflex -90
-KPX V odieresis -90
-KPX V ograve -90
-KPX V ohungarumlaut -90
-KPX V omacron -90
-KPX V oslash -90
-KPX V otilde -90
-KPX V period -120
-KPX V semicolon -40
-KPX V u -60
-KPX V uacute -60
-KPX V ucircumflex -60
-KPX V udieresis -60
-KPX V ugrave -60
-KPX V uhungarumlaut -60
-KPX V umacron -60
-KPX V uogonek -60
-KPX V uring -60
-KPX W A -60
-KPX W Aacute -60
-KPX W Abreve -60
-KPX W Acircumflex -60
-KPX W Adieresis -60
-KPX W Agrave -60
-KPX W Amacron -60
-KPX W Aogonek -60
-KPX W Aring -60
-KPX W Atilde -60
-KPX W O -20
-KPX W Oacute -20
-KPX W Ocircumflex -20
-KPX W Odieresis -20
-KPX W Ograve -20
-KPX W Ohungarumlaut -20
-KPX W Omacron -20
-KPX W Oslash -20
-KPX W Otilde -20
-KPX W a -40
-KPX W aacute -40
-KPX W abreve -40
-KPX W acircumflex -40
-KPX W adieresis -40
-KPX W agrave -40
-KPX W amacron -40
-KPX W aogonek -40
-KPX W aring -40
-KPX W atilde -40
-KPX W colon -10
-KPX W comma -80
-KPX W e -35
-KPX W eacute -35
-KPX W ecaron -35
-KPX W ecircumflex -35
-KPX W edieresis -35
-KPX W edotaccent -35
-KPX W egrave -35
-KPX W emacron -35
-KPX W eogonek -35
-KPX W hyphen -40
-KPX W o -60
-KPX W oacute -60
-KPX W ocircumflex -60
-KPX W odieresis -60
-KPX W ograve -60
-KPX W ohungarumlaut -60
-KPX W omacron -60
-KPX W oslash -60
-KPX W otilde -60
-KPX W period -80
-KPX W semicolon -10
-KPX W u -45
-KPX W uacute -45
-KPX W ucircumflex -45
-KPX W udieresis -45
-KPX W ugrave -45
-KPX W uhungarumlaut -45
-KPX W umacron -45
-KPX W uogonek -45
-KPX W uring -45
-KPX W y -20
-KPX W yacute -20
-KPX W ydieresis -20
-KPX Y A -110
-KPX Y Aacute -110
-KPX Y Abreve -110
-KPX Y Acircumflex -110
-KPX Y Adieresis -110
-KPX Y Agrave -110
-KPX Y Amacron -110
-KPX Y Aogonek -110
-KPX Y Aring -110
-KPX Y Atilde -110
-KPX Y O -70
-KPX Y Oacute -70
-KPX Y Ocircumflex -70
-KPX Y Odieresis -70
-KPX Y Ograve -70
-KPX Y Ohungarumlaut -70
-KPX Y Omacron -70
-KPX Y Oslash -70
-KPX Y Otilde -70
-KPX Y a -90
-KPX Y aacute -90
-KPX Y abreve -90
-KPX Y acircumflex -90
-KPX Y adieresis -90
-KPX Y agrave -90
-KPX Y amacron -90
-KPX Y aogonek -90
-KPX Y aring -90
-KPX Y atilde -90
-KPX Y colon -50
-KPX Y comma -100
-KPX Y e -80
-KPX Y eacute -80
-KPX Y ecaron -80
-KPX Y ecircumflex -80
-KPX Y edieresis -80
-KPX Y edotaccent -80
-KPX Y egrave -80
-KPX Y emacron -80
-KPX Y eogonek -80
-KPX Y o -100
-KPX Y oacute -100
-KPX Y ocircumflex -100
-KPX Y odieresis -100
-KPX Y ograve -100
-KPX Y ohungarumlaut -100
-KPX Y omacron -100
-KPX Y oslash -100
-KPX Y otilde -100
-KPX Y period -100
-KPX Y semicolon -50
-KPX Y u -100
-KPX Y uacute -100
-KPX Y ucircumflex -100
-KPX Y udieresis -100
-KPX Y ugrave -100
-KPX Y uhungarumlaut -100
-KPX Y umacron -100
-KPX Y uogonek -100
-KPX Y uring -100
-KPX Yacute A -110
-KPX Yacute Aacute -110
-KPX Yacute Abreve -110
-KPX Yacute Acircumflex -110
-KPX Yacute Adieresis -110
-KPX Yacute Agrave -110
-KPX Yacute Amacron -110
-KPX Yacute Aogonek -110
-KPX Yacute Aring -110
-KPX Yacute Atilde -110
-KPX Yacute O -70
-KPX Yacute Oacute -70
-KPX Yacute Ocircumflex -70
-KPX Yacute Odieresis -70
-KPX Yacute Ograve -70
-KPX Yacute Ohungarumlaut -70
-KPX Yacute Omacron -70
-KPX Yacute Oslash -70
-KPX Yacute Otilde -70
-KPX Yacute a -90
-KPX Yacute aacute -90
-KPX Yacute abreve -90
-KPX Yacute acircumflex -90
-KPX Yacute adieresis -90
-KPX Yacute agrave -90
-KPX Yacute amacron -90
-KPX Yacute aogonek -90
-KPX Yacute aring -90
-KPX Yacute atilde -90
-KPX Yacute colon -50
-KPX Yacute comma -100
-KPX Yacute e -80
-KPX Yacute eacute -80
-KPX Yacute ecaron -80
-KPX Yacute ecircumflex -80
-KPX Yacute edieresis -80
-KPX Yacute edotaccent -80
-KPX Yacute egrave -80
-KPX Yacute emacron -80
-KPX Yacute eogonek -80
-KPX Yacute o -100
-KPX Yacute oacute -100
-KPX Yacute ocircumflex -100
-KPX Yacute odieresis -100
-KPX Yacute ograve -100
-KPX Yacute ohungarumlaut -100
-KPX Yacute omacron -100
-KPX Yacute oslash -100
-KPX Yacute otilde -100
-KPX Yacute period -100
-KPX Yacute semicolon -50
-KPX Yacute u -100
-KPX Yacute uacute -100
-KPX Yacute ucircumflex -100
-KPX Yacute udieresis -100
-KPX Yacute ugrave -100
-KPX Yacute uhungarumlaut -100
-KPX Yacute umacron -100
-KPX Yacute uogonek -100
-KPX Yacute uring -100
-KPX Ydieresis A -110
-KPX Ydieresis Aacute -110
-KPX Ydieresis Abreve -110
-KPX Ydieresis Acircumflex -110
-KPX Ydieresis Adieresis -110
-KPX Ydieresis Agrave -110
-KPX Ydieresis Amacron -110
-KPX Ydieresis Aogonek -110
-KPX Ydieresis Aring -110
-KPX Ydieresis Atilde -110
-KPX Ydieresis O -70
-KPX Ydieresis Oacute -70
-KPX Ydieresis Ocircumflex -70
-KPX Ydieresis Odieresis -70
-KPX Ydieresis Ograve -70
-KPX Ydieresis Ohungarumlaut -70
-KPX Ydieresis Omacron -70
-KPX Ydieresis Oslash -70
-KPX Ydieresis Otilde -70
-KPX Ydieresis a -90
-KPX Ydieresis aacute -90
-KPX Ydieresis abreve -90
-KPX Ydieresis acircumflex -90
-KPX Ydieresis adieresis -90
-KPX Ydieresis agrave -90
-KPX Ydieresis amacron -90
-KPX Ydieresis aogonek -90
-KPX Ydieresis aring -90
-KPX Ydieresis atilde -90
-KPX Ydieresis colon -50
-KPX Ydieresis comma -100
-KPX Ydieresis e -80
-KPX Ydieresis eacute -80
-KPX Ydieresis ecaron -80
-KPX Ydieresis ecircumflex -80
-KPX Ydieresis edieresis -80
-KPX Ydieresis edotaccent -80
-KPX Ydieresis egrave -80
-KPX Ydieresis emacron -80
-KPX Ydieresis eogonek -80
-KPX Ydieresis o -100
-KPX Ydieresis oacute -100
-KPX Ydieresis ocircumflex -100
-KPX Ydieresis odieresis -100
-KPX Ydieresis ograve -100
-KPX Ydieresis ohungarumlaut -100
-KPX Ydieresis omacron -100
-KPX Ydieresis oslash -100
-KPX Ydieresis otilde -100
-KPX Ydieresis period -100
-KPX Ydieresis semicolon -50
-KPX Ydieresis u -100
-KPX Ydieresis uacute -100
-KPX Ydieresis ucircumflex -100
-KPX Ydieresis udieresis -100
-KPX Ydieresis ugrave -100
-KPX Ydieresis uhungarumlaut -100
-KPX Ydieresis umacron -100
-KPX Ydieresis uogonek -100
-KPX Ydieresis uring -100
-KPX a g -10
-KPX a gbreve -10
-KPX a gcommaaccent -10
-KPX a v -15
-KPX a w -15
-KPX a y -20
-KPX a yacute -20
-KPX a ydieresis -20
-KPX aacute g -10
-KPX aacute gbreve -10
-KPX aacute gcommaaccent -10
-KPX aacute v -15
-KPX aacute w -15
-KPX aacute y -20
-KPX aacute yacute -20
-KPX aacute ydieresis -20
-KPX abreve g -10
-KPX abreve gbreve -10
-KPX abreve gcommaaccent -10
-KPX abreve v -15
-KPX abreve w -15
-KPX abreve y -20
-KPX abreve yacute -20
-KPX abreve ydieresis -20
-KPX acircumflex g -10
-KPX acircumflex gbreve -10
-KPX acircumflex gcommaaccent -10
-KPX acircumflex v -15
-KPX acircumflex w -15
-KPX acircumflex y -20
-KPX acircumflex yacute -20
-KPX acircumflex ydieresis -20
-KPX adieresis g -10
-KPX adieresis gbreve -10
-KPX adieresis gcommaaccent -10
-KPX adieresis v -15
-KPX adieresis w -15
-KPX adieresis y -20
-KPX adieresis yacute -20
-KPX adieresis ydieresis -20
-KPX agrave g -10
-KPX agrave gbreve -10
-KPX agrave gcommaaccent -10
-KPX agrave v -15
-KPX agrave w -15
-KPX agrave y -20
-KPX agrave yacute -20
-KPX agrave ydieresis -20
-KPX amacron g -10
-KPX amacron gbreve -10
-KPX amacron gcommaaccent -10
-KPX amacron v -15
-KPX amacron w -15
-KPX amacron y -20
-KPX amacron yacute -20
-KPX amacron ydieresis -20
-KPX aogonek g -10
-KPX aogonek gbreve -10
-KPX aogonek gcommaaccent -10
-KPX aogonek v -15
-KPX aogonek w -15
-KPX aogonek y -20
-KPX aogonek yacute -20
-KPX aogonek ydieresis -20
-KPX aring g -10
-KPX aring gbreve -10
-KPX aring gcommaaccent -10
-KPX aring v -15
-KPX aring w -15
-KPX aring y -20
-KPX aring yacute -20
-KPX aring ydieresis -20
-KPX atilde g -10
-KPX atilde gbreve -10
-KPX atilde gcommaaccent -10
-KPX atilde v -15
-KPX atilde w -15
-KPX atilde y -20
-KPX atilde yacute -20
-KPX atilde ydieresis -20
-KPX b l -10
-KPX b lacute -10
-KPX b lcommaaccent -10
-KPX b lslash -10
-KPX b u -20
-KPX b uacute -20
-KPX b ucircumflex -20
-KPX b udieresis -20
-KPX b ugrave -20
-KPX b uhungarumlaut -20
-KPX b umacron -20
-KPX b uogonek -20
-KPX b uring -20
-KPX b v -20
-KPX b y -20
-KPX b yacute -20
-KPX b ydieresis -20
-KPX c h -10
-KPX c k -20
-KPX c kcommaaccent -20
-KPX c l -20
-KPX c lacute -20
-KPX c lcommaaccent -20
-KPX c lslash -20
-KPX c y -10
-KPX c yacute -10
-KPX c ydieresis -10
-KPX cacute h -10
-KPX cacute k -20
-KPX cacute kcommaaccent -20
-KPX cacute l -20
-KPX cacute lacute -20
-KPX cacute lcommaaccent -20
-KPX cacute lslash -20
-KPX cacute y -10
-KPX cacute yacute -10
-KPX cacute ydieresis -10
-KPX ccaron h -10
-KPX ccaron k -20
-KPX ccaron kcommaaccent -20
-KPX ccaron l -20
-KPX ccaron lacute -20
-KPX ccaron lcommaaccent -20
-KPX ccaron lslash -20
-KPX ccaron y -10
-KPX ccaron yacute -10
-KPX ccaron ydieresis -10
-KPX ccedilla h -10
-KPX ccedilla k -20
-KPX ccedilla kcommaaccent -20
-KPX ccedilla l -20
-KPX ccedilla lacute -20
-KPX ccedilla lcommaaccent -20
-KPX ccedilla lslash -20
-KPX ccedilla y -10
-KPX ccedilla yacute -10
-KPX ccedilla ydieresis -10
-KPX colon space -40
-KPX comma quotedblright -120
-KPX comma quoteright -120
-KPX comma space -40
-KPX d d -10
-KPX d dcroat -10
-KPX d v -15
-KPX d w -15
-KPX d y -15
-KPX d yacute -15
-KPX d ydieresis -15
-KPX dcroat d -10
-KPX dcroat dcroat -10
-KPX dcroat v -15
-KPX dcroat w -15
-KPX dcroat y -15
-KPX dcroat yacute -15
-KPX dcroat ydieresis -15
-KPX e comma 10
-KPX e period 20
-KPX e v -15
-KPX e w -15
-KPX e x -15
-KPX e y -15
-KPX e yacute -15
-KPX e ydieresis -15
-KPX eacute comma 10
-KPX eacute period 20
-KPX eacute v -15
-KPX eacute w -15
-KPX eacute x -15
-KPX eacute y -15
-KPX eacute yacute -15
-KPX eacute ydieresis -15
-KPX ecaron comma 10
-KPX ecaron period 20
-KPX ecaron v -15
-KPX ecaron w -15
-KPX ecaron x -15
-KPX ecaron y -15
-KPX ecaron yacute -15
-KPX ecaron ydieresis -15
-KPX ecircumflex comma 10
-KPX ecircumflex period 20
-KPX ecircumflex v -15
-KPX ecircumflex w -15
-KPX ecircumflex x -15
-KPX ecircumflex y -15
-KPX ecircumflex yacute -15
-KPX ecircumflex ydieresis -15
-KPX edieresis comma 10
-KPX edieresis period 20
-KPX edieresis v -15
-KPX edieresis w -15
-KPX edieresis x -15
-KPX edieresis y -15
-KPX edieresis yacute -15
-KPX edieresis ydieresis -15
-KPX edotaccent comma 10
-KPX edotaccent period 20
-KPX edotaccent v -15
-KPX edotaccent w -15
-KPX edotaccent x -15
-KPX edotaccent y -15
-KPX edotaccent yacute -15
-KPX edotaccent ydieresis -15
-KPX egrave comma 10
-KPX egrave period 20
-KPX egrave v -15
-KPX egrave w -15
-KPX egrave x -15
-KPX egrave y -15
-KPX egrave yacute -15
-KPX egrave ydieresis -15
-KPX emacron comma 10
-KPX emacron period 20
-KPX emacron v -15
-KPX emacron w -15
-KPX emacron x -15
-KPX emacron y -15
-KPX emacron yacute -15
-KPX emacron ydieresis -15
-KPX eogonek comma 10
-KPX eogonek period 20
-KPX eogonek v -15
-KPX eogonek w -15
-KPX eogonek x -15
-KPX eogonek y -15
-KPX eogonek yacute -15
-KPX eogonek ydieresis -15
-KPX f comma -10
-KPX f e -10
-KPX f eacute -10
-KPX f ecaron -10
-KPX f ecircumflex -10
-KPX f edieresis -10
-KPX f edotaccent -10
-KPX f egrave -10
-KPX f emacron -10
-KPX f eogonek -10
-KPX f o -20
-KPX f oacute -20
-KPX f ocircumflex -20
-KPX f odieresis -20
-KPX f ograve -20
-KPX f ohungarumlaut -20
-KPX f omacron -20
-KPX f oslash -20
-KPX f otilde -20
-KPX f period -10
-KPX f quotedblright 30
-KPX f quoteright 30
-KPX g e 10
-KPX g eacute 10
-KPX g ecaron 10
-KPX g ecircumflex 10
-KPX g edieresis 10
-KPX g edotaccent 10
-KPX g egrave 10
-KPX g emacron 10
-KPX g eogonek 10
-KPX g g -10
-KPX g gbreve -10
-KPX g gcommaaccent -10
-KPX gbreve e 10
-KPX gbreve eacute 10
-KPX gbreve ecaron 10
-KPX gbreve ecircumflex 10
-KPX gbreve edieresis 10
-KPX gbreve edotaccent 10
-KPX gbreve egrave 10
-KPX gbreve emacron 10
-KPX gbreve eogonek 10
-KPX gbreve g -10
-KPX gbreve gbreve -10
-KPX gbreve gcommaaccent -10
-KPX gcommaaccent e 10
-KPX gcommaaccent eacute 10
-KPX gcommaaccent ecaron 10
-KPX gcommaaccent ecircumflex 10
-KPX gcommaaccent edieresis 10
-KPX gcommaaccent edotaccent 10
-KPX gcommaaccent egrave 10
-KPX gcommaaccent emacron 10
-KPX gcommaaccent eogonek 10
-KPX gcommaaccent g -10
-KPX gcommaaccent gbreve -10
-KPX gcommaaccent gcommaaccent -10
-KPX h y -20
-KPX h yacute -20
-KPX h ydieresis -20
-KPX k o -15
-KPX k oacute -15
-KPX k ocircumflex -15
-KPX k odieresis -15
-KPX k ograve -15
-KPX k ohungarumlaut -15
-KPX k omacron -15
-KPX k oslash -15
-KPX k otilde -15
-KPX kcommaaccent o -15
-KPX kcommaaccent oacute -15
-KPX kcommaaccent ocircumflex -15
-KPX kcommaaccent odieresis -15
-KPX kcommaaccent ograve -15
-KPX kcommaaccent ohungarumlaut -15
-KPX kcommaaccent omacron -15
-KPX kcommaaccent oslash -15
-KPX kcommaaccent otilde -15
-KPX l w -15
-KPX l y -15
-KPX l yacute -15
-KPX l ydieresis -15
-KPX lacute w -15
-KPX lacute y -15
-KPX lacute yacute -15
-KPX lacute ydieresis -15
-KPX lcommaaccent w -15
-KPX lcommaaccent y -15
-KPX lcommaaccent yacute -15
-KPX lcommaaccent ydieresis -15
-KPX lslash w -15
-KPX lslash y -15
-KPX lslash yacute -15
-KPX lslash ydieresis -15
-KPX m u -20
-KPX m uacute -20
-KPX m ucircumflex -20
-KPX m udieresis -20
-KPX m ugrave -20
-KPX m uhungarumlaut -20
-KPX m umacron -20
-KPX m uogonek -20
-KPX m uring -20
-KPX m y -30
-KPX m yacute -30
-KPX m ydieresis -30
-KPX n u -10
-KPX n uacute -10
-KPX n ucircumflex -10
-KPX n udieresis -10
-KPX n ugrave -10
-KPX n uhungarumlaut -10
-KPX n umacron -10
-KPX n uogonek -10
-KPX n uring -10
-KPX n v -40
-KPX n y -20
-KPX n yacute -20
-KPX n ydieresis -20
-KPX nacute u -10
-KPX nacute uacute -10
-KPX nacute ucircumflex -10
-KPX nacute udieresis -10
-KPX nacute ugrave -10
-KPX nacute uhungarumlaut -10
-KPX nacute umacron -10
-KPX nacute uogonek -10
-KPX nacute uring -10
-KPX nacute v -40
-KPX nacute y -20
-KPX nacute yacute -20
-KPX nacute ydieresis -20
-KPX ncaron u -10
-KPX ncaron uacute -10
-KPX ncaron ucircumflex -10
-KPX ncaron udieresis -10
-KPX ncaron ugrave -10
-KPX ncaron uhungarumlaut -10
-KPX ncaron umacron -10
-KPX ncaron uogonek -10
-KPX ncaron uring -10
-KPX ncaron v -40
-KPX ncaron y -20
-KPX ncaron yacute -20
-KPX ncaron ydieresis -20
-KPX ncommaaccent u -10
-KPX ncommaaccent uacute -10
-KPX ncommaaccent ucircumflex -10
-KPX ncommaaccent udieresis -10
-KPX ncommaaccent ugrave -10
-KPX ncommaaccent uhungarumlaut -10
-KPX ncommaaccent umacron -10
-KPX ncommaaccent uogonek -10
-KPX ncommaaccent uring -10
-KPX ncommaaccent v -40
-KPX ncommaaccent y -20
-KPX ncommaaccent yacute -20
-KPX ncommaaccent ydieresis -20
-KPX ntilde u -10
-KPX ntilde uacute -10
-KPX ntilde ucircumflex -10
-KPX ntilde udieresis -10
-KPX ntilde ugrave -10
-KPX ntilde uhungarumlaut -10
-KPX ntilde umacron -10
-KPX ntilde uogonek -10
-KPX ntilde uring -10
-KPX ntilde v -40
-KPX ntilde y -20
-KPX ntilde yacute -20
-KPX ntilde ydieresis -20
-KPX o v -20
-KPX o w -15
-KPX o x -30
-KPX o y -20
-KPX o yacute -20
-KPX o ydieresis -20
-KPX oacute v -20
-KPX oacute w -15
-KPX oacute x -30
-KPX oacute y -20
-KPX oacute yacute -20
-KPX oacute ydieresis -20
-KPX ocircumflex v -20
-KPX ocircumflex w -15
-KPX ocircumflex x -30
-KPX ocircumflex y -20
-KPX ocircumflex yacute -20
-KPX ocircumflex ydieresis -20
-KPX odieresis v -20
-KPX odieresis w -15
-KPX odieresis x -30
-KPX odieresis y -20
-KPX odieresis yacute -20
-KPX odieresis ydieresis -20
-KPX ograve v -20
-KPX ograve w -15
-KPX ograve x -30
-KPX ograve y -20
-KPX ograve yacute -20
-KPX ograve ydieresis -20
-KPX ohungarumlaut v -20
-KPX ohungarumlaut w -15
-KPX ohungarumlaut x -30
-KPX ohungarumlaut y -20
-KPX ohungarumlaut yacute -20
-KPX ohungarumlaut ydieresis -20
-KPX omacron v -20
-KPX omacron w -15
-KPX omacron x -30
-KPX omacron y -20
-KPX omacron yacute -20
-KPX omacron ydieresis -20
-KPX oslash v -20
-KPX oslash w -15
-KPX oslash x -30
-KPX oslash y -20
-KPX oslash yacute -20
-KPX oslash ydieresis -20
-KPX otilde v -20
-KPX otilde w -15
-KPX otilde x -30
-KPX otilde y -20
-KPX otilde yacute -20
-KPX otilde ydieresis -20
-KPX p y -15
-KPX p yacute -15
-KPX p ydieresis -15
-KPX period quotedblright -120
-KPX period quoteright -120
-KPX period space -40
-KPX quotedblright space -80
-KPX quoteleft quoteleft -46
-KPX quoteright d -80
-KPX quoteright dcroat -80
-KPX quoteright l -20
-KPX quoteright lacute -20
-KPX quoteright lcommaaccent -20
-KPX quoteright lslash -20
-KPX quoteright quoteright -46
-KPX quoteright r -40
-KPX quoteright racute -40
-KPX quoteright rcaron -40
-KPX quoteright rcommaaccent -40
-KPX quoteright s -60
-KPX quoteright sacute -60
-KPX quoteright scaron -60
-KPX quoteright scedilla -60
-KPX quoteright scommaaccent -60
-KPX quoteright space -80
-KPX quoteright v -20
-KPX r c -20
-KPX r cacute -20
-KPX r ccaron -20
-KPX r ccedilla -20
-KPX r comma -60
-KPX r d -20
-KPX r dcroat -20
-KPX r g -15
-KPX r gbreve -15
-KPX r gcommaaccent -15
-KPX r hyphen -20
-KPX r o -20
-KPX r oacute -20
-KPX r ocircumflex -20
-KPX r odieresis -20
-KPX r ograve -20
-KPX r ohungarumlaut -20
-KPX r omacron -20
-KPX r oslash -20
-KPX r otilde -20
-KPX r period -60
-KPX r q -20
-KPX r s -15
-KPX r sacute -15
-KPX r scaron -15
-KPX r scedilla -15
-KPX r scommaaccent -15
-KPX r t 20
-KPX r tcommaaccent 20
-KPX r v 10
-KPX r y 10
-KPX r yacute 10
-KPX r ydieresis 10
-KPX racute c -20
-KPX racute cacute -20
-KPX racute ccaron -20
-KPX racute ccedilla -20
-KPX racute comma -60
-KPX racute d -20
-KPX racute dcroat -20
-KPX racute g -15
-KPX racute gbreve -15
-KPX racute gcommaaccent -15
-KPX racute hyphen -20
-KPX racute o -20
-KPX racute oacute -20
-KPX racute ocircumflex -20
-KPX racute odieresis -20
-KPX racute ograve -20
-KPX racute ohungarumlaut -20
-KPX racute omacron -20
-KPX racute oslash -20
-KPX racute otilde -20
-KPX racute period -60
-KPX racute q -20
-KPX racute s -15
-KPX racute sacute -15
-KPX racute scaron -15
-KPX racute scedilla -15
-KPX racute scommaaccent -15
-KPX racute t 20
-KPX racute tcommaaccent 20
-KPX racute v 10
-KPX racute y 10
-KPX racute yacute 10
-KPX racute ydieresis 10
-KPX rcaron c -20
-KPX rcaron cacute -20
-KPX rcaron ccaron -20
-KPX rcaron ccedilla -20
-KPX rcaron comma -60
-KPX rcaron d -20
-KPX rcaron dcroat -20
-KPX rcaron g -15
-KPX rcaron gbreve -15
-KPX rcaron gcommaaccent -15
-KPX rcaron hyphen -20
-KPX rcaron o -20
-KPX rcaron oacute -20
-KPX rcaron ocircumflex -20
-KPX rcaron odieresis -20
-KPX rcaron ograve -20
-KPX rcaron ohungarumlaut -20
-KPX rcaron omacron -20
-KPX rcaron oslash -20
-KPX rcaron otilde -20
-KPX rcaron period -60
-KPX rcaron q -20
-KPX rcaron s -15
-KPX rcaron sacute -15
-KPX rcaron scaron -15
-KPX rcaron scedilla -15
-KPX rcaron scommaaccent -15
-KPX rcaron t 20
-KPX rcaron tcommaaccent 20
-KPX rcaron v 10
-KPX rcaron y 10
-KPX rcaron yacute 10
-KPX rcaron ydieresis 10
-KPX rcommaaccent c -20
-KPX rcommaaccent cacute -20
-KPX rcommaaccent ccaron -20
-KPX rcommaaccent ccedilla -20
-KPX rcommaaccent comma -60
-KPX rcommaaccent d -20
-KPX rcommaaccent dcroat -20
-KPX rcommaaccent g -15
-KPX rcommaaccent gbreve -15
-KPX rcommaaccent gcommaaccent -15
-KPX rcommaaccent hyphen -20
-KPX rcommaaccent o -20
-KPX rcommaaccent oacute -20
-KPX rcommaaccent ocircumflex -20
-KPX rcommaaccent odieresis -20
-KPX rcommaaccent ograve -20
-KPX rcommaaccent ohungarumlaut -20
-KPX rcommaaccent omacron -20
-KPX rcommaaccent oslash -20
-KPX rcommaaccent otilde -20
-KPX rcommaaccent period -60
-KPX rcommaaccent q -20
-KPX rcommaaccent s -15
-KPX rcommaaccent sacute -15
-KPX rcommaaccent scaron -15
-KPX rcommaaccent scedilla -15
-KPX rcommaaccent scommaaccent -15
-KPX rcommaaccent t 20
-KPX rcommaaccent tcommaaccent 20
-KPX rcommaaccent v 10
-KPX rcommaaccent y 10
-KPX rcommaaccent yacute 10
-KPX rcommaaccent ydieresis 10
-KPX s w -15
-KPX sacute w -15
-KPX scaron w -15
-KPX scedilla w -15
-KPX scommaaccent w -15
-KPX semicolon space -40
-KPX space T -100
-KPX space Tcaron -100
-KPX space Tcommaaccent -100
-KPX space V -80
-KPX space W -80
-KPX space Y -120
-KPX space Yacute -120
-KPX space Ydieresis -120
-KPX space quotedblleft -80
-KPX space quoteleft -60
-KPX v a -20
-KPX v aacute -20
-KPX v abreve -20
-KPX v acircumflex -20
-KPX v adieresis -20
-KPX v agrave -20
-KPX v amacron -20
-KPX v aogonek -20
-KPX v aring -20
-KPX v atilde -20
-KPX v comma -80
-KPX v o -30
-KPX v oacute -30
-KPX v ocircumflex -30
-KPX v odieresis -30
-KPX v ograve -30
-KPX v ohungarumlaut -30
-KPX v omacron -30
-KPX v oslash -30
-KPX v otilde -30
-KPX v period -80
-KPX w comma -40
-KPX w o -20
-KPX w oacute -20
-KPX w ocircumflex -20
-KPX w odieresis -20
-KPX w ograve -20
-KPX w ohungarumlaut -20
-KPX w omacron -20
-KPX w oslash -20
-KPX w otilde -20
-KPX w period -40
-KPX x e -10
-KPX x eacute -10
-KPX x ecaron -10
-KPX x ecircumflex -10
-KPX x edieresis -10
-KPX x edotaccent -10
-KPX x egrave -10
-KPX x emacron -10
-KPX x eogonek -10
-KPX y a -30
-KPX y aacute -30
-KPX y abreve -30
-KPX y acircumflex -30
-KPX y adieresis -30
-KPX y agrave -30
-KPX y amacron -30
-KPX y aogonek -30
-KPX y aring -30
-KPX y atilde -30
-KPX y comma -80
-KPX y e -10
-KPX y eacute -10
-KPX y ecaron -10
-KPX y ecircumflex -10
-KPX y edieresis -10
-KPX y edotaccent -10
-KPX y egrave -10
-KPX y emacron -10
-KPX y eogonek -10
-KPX y o -25
-KPX y oacute -25
-KPX y ocircumflex -25
-KPX y odieresis -25
-KPX y ograve -25
-KPX y ohungarumlaut -25
-KPX y omacron -25
-KPX y oslash -25
-KPX y otilde -25
-KPX y period -80
-KPX yacute a -30
-KPX yacute aacute -30
-KPX yacute abreve -30
-KPX yacute acircumflex -30
-KPX yacute adieresis -30
-KPX yacute agrave -30
-KPX yacute amacron -30
-KPX yacute aogonek -30
-KPX yacute aring -30
-KPX yacute atilde -30
-KPX yacute comma -80
-KPX yacute e -10
-KPX yacute eacute -10
-KPX yacute ecaron -10
-KPX yacute ecircumflex -10
-KPX yacute edieresis -10
-KPX yacute edotaccent -10
-KPX yacute egrave -10
-KPX yacute emacron -10
-KPX yacute eogonek -10
-KPX yacute o -25
-KPX yacute oacute -25
-KPX yacute ocircumflex -25
-KPX yacute odieresis -25
-KPX yacute ograve -25
-KPX yacute ohungarumlaut -25
-KPX yacute omacron -25
-KPX yacute oslash -25
-KPX yacute otilde -25
-KPX yacute period -80
-KPX ydieresis a -30
-KPX ydieresis aacute -30
-KPX ydieresis abreve -30
-KPX ydieresis acircumflex -30
-KPX ydieresis adieresis -30
-KPX ydieresis agrave -30
-KPX ydieresis amacron -30
-KPX ydieresis aogonek -30
-KPX ydieresis aring -30
-KPX ydieresis atilde -30
-KPX ydieresis comma -80
-KPX ydieresis e -10
-KPX ydieresis eacute -10
-KPX ydieresis ecaron -10
-KPX ydieresis ecircumflex -10
-KPX ydieresis edieresis -10
-KPX ydieresis edotaccent -10
-KPX ydieresis egrave -10
-KPX ydieresis emacron -10
-KPX ydieresis eogonek -10
-KPX ydieresis o -25
-KPX ydieresis oacute -25
-KPX ydieresis ocircumflex -25
-KPX ydieresis odieresis -25
-KPX ydieresis ograve -25
-KPX ydieresis ohungarumlaut -25
-KPX ydieresis omacron -25
-KPX ydieresis oslash -25
-KPX ydieresis otilde -25
-KPX ydieresis period -80
-KPX z e 10
-KPX z eacute 10
-KPX z ecaron 10
-KPX z ecircumflex 10
-KPX z edieresis 10
-KPX z edotaccent 10
-KPX z egrave 10
-KPX z emacron 10
-KPX z eogonek 10
-KPX zacute e 10
-KPX zacute eacute 10
-KPX zacute ecaron 10
-KPX zacute ecircumflex 10
-KPX zacute edieresis 10
-KPX zacute edotaccent 10
-KPX zacute egrave 10
-KPX zacute emacron 10
-KPX zacute eogonek 10
-KPX zcaron e 10
-KPX zcaron eacute 10
-KPX zcaron ecaron 10
-KPX zcaron ecircumflex 10
-KPX zcaron edieresis 10
-KPX zcaron edotaccent 10
-KPX zcaron egrave 10
-KPX zcaron emacron 10
-KPX zcaron eogonek 10
-KPX zdotaccent e 10
-KPX zdotaccent eacute 10
-KPX zdotaccent ecaron 10
-KPX zdotaccent ecircumflex 10
-KPX zdotaccent edieresis 10
-KPX zdotaccent edotaccent 10
-KPX zdotaccent egrave 10
-KPX zdotaccent emacron 10
-KPX zdotaccent eogonek 10
-EndKernPairs
-EndKernData
-EndFontMetrics
diff --git a/admin/survey/Fonts/Helvetica-Oblique.afm b/admin/survey/Fonts/Helvetica-Oblique.afm
deleted file mode 100644
index 57bf472..0000000
--- a/admin/survey/Fonts/Helvetica-Oblique.afm
+++ /dev/null
@@ -1,3051 +0,0 @@
-StartFontMetrics 4.1
-Comment Copyright (c) 1985, 1987, 1989, 1990, 1997 Adobe Systems Incorporated. All Rights Reserved.
-Comment Creation Date: Thu May 1 12:44:31 1997
-Comment UniqueID 43055
-Comment VMusage 14960 69346
-FontName Helvetica-Oblique
-FullName Helvetica Oblique
-FamilyName Helvetica
-Weight Medium
-ItalicAngle -12
-IsFixedPitch false
-CharacterSet ExtendedRoman
-FontBBox -170 -225 1116 931
-UnderlinePosition -100
-UnderlineThickness 50
-Version 002.000
-Notice Copyright (c) 1985, 1987, 1989, 1990, 1997 Adobe Systems Incorporated. All Rights Reserved.Helvetica is a trademark of Linotype-Hell AG and/or its subsidiaries.
-EncodingScheme AdobeStandardEncoding
-CapHeight 718
-XHeight 523
-Ascender 718
-Descender -207
-StdHW 76
-StdVW 88
-StartCharMetrics 315
-C 32 ; WX 278 ; N space ; B 0 0 0 0 ;
-C 33 ; WX 278 ; N exclam ; B 90 0 340 718 ;
-C 34 ; WX 355 ; N quotedbl ; B 168 463 438 718 ;
-C 35 ; WX 556 ; N numbersign ; B 73 0 631 688 ;
-C 36 ; WX 556 ; N dollar ; B 69 -115 617 775 ;
-C 37 ; WX 889 ; N percent ; B 147 -19 889 703 ;
-C 38 ; WX 667 ; N ampersand ; B 77 -15 647 718 ;
-C 39 ; WX 222 ; N quoteright ; B 151 463 310 718 ;
-C 40 ; WX 333 ; N parenleft ; B 108 -207 454 733 ;
-C 41 ; WX 333 ; N parenright ; B -9 -207 337 733 ;
-C 42 ; WX 389 ; N asterisk ; B 165 431 475 718 ;
-C 43 ; WX 584 ; N plus ; B 85 0 606 505 ;
-C 44 ; WX 278 ; N comma ; B 56 -147 214 106 ;
-C 45 ; WX 333 ; N hyphen ; B 93 232 357 322 ;
-C 46 ; WX 278 ; N period ; B 87 0 214 106 ;
-C 47 ; WX 278 ; N slash ; B -21 -19 452 737 ;
-C 48 ; WX 556 ; N zero ; B 93 -19 608 703 ;
-C 49 ; WX 556 ; N one ; B 207 0 508 703 ;
-C 50 ; WX 556 ; N two ; B 26 0 617 703 ;
-C 51 ; WX 556 ; N three ; B 75 -19 610 703 ;
-C 52 ; WX 556 ; N four ; B 61 0 576 703 ;
-C 53 ; WX 556 ; N five ; B 68 -19 621 688 ;
-C 54 ; WX 556 ; N six ; B 91 -19 615 703 ;
-C 55 ; WX 556 ; N seven ; B 137 0 669 688 ;
-C 56 ; WX 556 ; N eight ; B 74 -19 607 703 ;
-C 57 ; WX 556 ; N nine ; B 82 -19 609 703 ;
-C 58 ; WX 278 ; N colon ; B 87 0 301 516 ;
-C 59 ; WX 278 ; N semicolon ; B 56 -147 301 516 ;
-C 60 ; WX 584 ; N less ; B 94 11 641 495 ;
-C 61 ; WX 584 ; N equal ; B 63 115 628 390 ;
-C 62 ; WX 584 ; N greater ; B 50 11 597 495 ;
-C 63 ; WX 556 ; N question ; B 161 0 610 727 ;
-C 64 ; WX 1015 ; N at ; B 215 -19 965 737 ;
-C 65 ; WX 667 ; N A ; B 14 0 654 718 ;
-C 66 ; WX 667 ; N B ; B 74 0 712 718 ;
-C 67 ; WX 722 ; N C ; B 108 -19 782 737 ;
-C 68 ; WX 722 ; N D ; B 81 0 764 718 ;
-C 69 ; WX 667 ; N E ; B 86 0 762 718 ;
-C 70 ; WX 611 ; N F ; B 86 0 736 718 ;
-C 71 ; WX 778 ; N G ; B 111 -19 799 737 ;
-C 72 ; WX 722 ; N H ; B 77 0 799 718 ;
-C 73 ; WX 278 ; N I ; B 91 0 341 718 ;
-C 74 ; WX 500 ; N J ; B 47 -19 581 718 ;
-C 75 ; WX 667 ; N K ; B 76 0 808 718 ;
-C 76 ; WX 556 ; N L ; B 76 0 555 718 ;
-C 77 ; WX 833 ; N M ; B 73 0 914 718 ;
-C 78 ; WX 722 ; N N ; B 76 0 799 718 ;
-C 79 ; WX 778 ; N O ; B 105 -19 826 737 ;
-C 80 ; WX 667 ; N P ; B 86 0 737 718 ;
-C 81 ; WX 778 ; N Q ; B 105 -56 826 737 ;
-C 82 ; WX 722 ; N R ; B 88 0 773 718 ;
-C 83 ; WX 667 ; N S ; B 90 -19 713 737 ;
-C 84 ; WX 611 ; N T ; B 148 0 750 718 ;
-C 85 ; WX 722 ; N U ; B 123 -19 797 718 ;
-C 86 ; WX 667 ; N V ; B 173 0 800 718 ;
-C 87 ; WX 944 ; N W ; B 169 0 1081 718 ;
-C 88 ; WX 667 ; N X ; B 19 0 790 718 ;
-C 89 ; WX 667 ; N Y ; B 167 0 806 718 ;
-C 90 ; WX 611 ; N Z ; B 23 0 741 718 ;
-C 91 ; WX 278 ; N bracketleft ; B 21 -196 403 722 ;
-C 92 ; WX 278 ; N backslash ; B 140 -19 291 737 ;
-C 93 ; WX 278 ; N bracketright ; B -14 -196 368 722 ;
-C 94 ; WX 469 ; N asciicircum ; B 42 264 539 688 ;
-C 95 ; WX 556 ; N underscore ; B -27 -125 540 -75 ;
-C 96 ; WX 222 ; N quoteleft ; B 165 470 323 725 ;
-C 97 ; WX 556 ; N a ; B 61 -15 559 538 ;
-C 98 ; WX 556 ; N b ; B 58 -15 584 718 ;
-C 99 ; WX 500 ; N c ; B 74 -15 553 538 ;
-C 100 ; WX 556 ; N d ; B 84 -15 652 718 ;
-C 101 ; WX 556 ; N e ; B 84 -15 578 538 ;
-C 102 ; WX 278 ; N f ; B 86 0 416 728 ; L i fi ; L l fl ;
-C 103 ; WX 556 ; N g ; B 42 -220 610 538 ;
-C 104 ; WX 556 ; N h ; B 65 0 573 718 ;
-C 105 ; WX 222 ; N i ; B 67 0 308 718 ;
-C 106 ; WX 222 ; N j ; B -60 -210 308 718 ;
-C 107 ; WX 500 ; N k ; B 67 0 600 718 ;
-C 108 ; WX 222 ; N l ; B 67 0 308 718 ;
-C 109 ; WX 833 ; N m ; B 65 0 852 538 ;
-C 110 ; WX 556 ; N n ; B 65 0 573 538 ;
-C 111 ; WX 556 ; N o ; B 83 -14 585 538 ;
-C 112 ; WX 556 ; N p ; B 14 -207 584 538 ;
-C 113 ; WX 556 ; N q ; B 84 -207 605 538 ;
-C 114 ; WX 333 ; N r ; B 77 0 446 538 ;
-C 115 ; WX 500 ; N s ; B 63 -15 529 538 ;
-C 116 ; WX 278 ; N t ; B 102 -7 368 669 ;
-C 117 ; WX 556 ; N u ; B 94 -15 600 523 ;
-C 118 ; WX 500 ; N v ; B 119 0 603 523 ;
-C 119 ; WX 722 ; N w ; B 125 0 820 523 ;
-C 120 ; WX 500 ; N x ; B 11 0 594 523 ;
-C 121 ; WX 500 ; N y ; B 15 -214 600 523 ;
-C 122 ; WX 500 ; N z ; B 31 0 571 523 ;
-C 123 ; WX 334 ; N braceleft ; B 92 -196 445 722 ;
-C 124 ; WX 260 ; N bar ; B 46 -225 332 775 ;
-C 125 ; WX 334 ; N braceright ; B 0 -196 354 722 ;
-C 126 ; WX 584 ; N asciitilde ; B 111 180 580 326 ;
-C 161 ; WX 333 ; N exclamdown ; B 77 -195 326 523 ;
-C 162 ; WX 556 ; N cent ; B 95 -115 584 623 ;
-C 163 ; WX 556 ; N sterling ; B 49 -16 634 718 ;
-C 164 ; WX 167 ; N fraction ; B -170 -19 482 703 ;
-C 165 ; WX 556 ; N yen ; B 81 0 699 688 ;
-C 166 ; WX 556 ; N florin ; B -52 -207 654 737 ;
-C 167 ; WX 556 ; N section ; B 76 -191 584 737 ;
-C 168 ; WX 556 ; N currency ; B 60 99 646 603 ;
-C 169 ; WX 191 ; N quotesingle ; B 157 463 285 718 ;
-C 170 ; WX 333 ; N quotedblleft ; B 138 470 461 725 ;
-C 171 ; WX 556 ; N guillemotleft ; B 146 108 554 446 ;
-C 172 ; WX 333 ; N guilsinglleft ; B 137 108 340 446 ;
-C 173 ; WX 333 ; N guilsinglright ; B 111 108 314 446 ;
-C 174 ; WX 500 ; N fi ; B 86 0 587 728 ;
-C 175 ; WX 500 ; N fl ; B 86 0 585 728 ;
-C 177 ; WX 556 ; N endash ; B 51 240 623 313 ;
-C 178 ; WX 556 ; N dagger ; B 135 -159 622 718 ;
-C 179 ; WX 556 ; N daggerdbl ; B 52 -159 623 718 ;
-C 180 ; WX 278 ; N periodcentered ; B 129 190 257 315 ;
-C 182 ; WX 537 ; N paragraph ; B 126 -173 650 718 ;
-C 183 ; WX 350 ; N bullet ; B 91 202 413 517 ;
-C 184 ; WX 222 ; N quotesinglbase ; B 21 -149 180 106 ;
-C 185 ; WX 333 ; N quotedblbase ; B -6 -149 318 106 ;
-C 186 ; WX 333 ; N quotedblright ; B 124 463 448 718 ;
-C 187 ; WX 556 ; N guillemotright ; B 120 108 528 446 ;
-C 188 ; WX 1000 ; N ellipsis ; B 115 0 908 106 ;
-C 189 ; WX 1000 ; N perthousand ; B 88 -19 1029 703 ;
-C 191 ; WX 611 ; N questiondown ; B 85 -201 534 525 ;
-C 193 ; WX 333 ; N grave ; B 170 593 337 734 ;
-C 194 ; WX 333 ; N acute ; B 248 593 475 734 ;
-C 195 ; WX 333 ; N circumflex ; B 147 593 438 734 ;
-C 196 ; WX 333 ; N tilde ; B 125 606 490 722 ;
-C 197 ; WX 333 ; N macron ; B 143 627 468 684 ;
-C 198 ; WX 333 ; N breve ; B 167 595 476 731 ;
-C 199 ; WX 333 ; N dotaccent ; B 249 604 362 706 ;
-C 200 ; WX 333 ; N dieresis ; B 168 604 443 706 ;
-C 202 ; WX 333 ; N ring ; B 214 572 402 756 ;
-C 203 ; WX 333 ; N cedilla ; B 2 -225 232 0 ;
-C 205 ; WX 333 ; N hungarumlaut ; B 157 593 565 734 ;
-C 206 ; WX 333 ; N ogonek ; B 43 -225 249 0 ;
-C 207 ; WX 333 ; N caron ; B 177 593 468 734 ;
-C 208 ; WX 1000 ; N emdash ; B 51 240 1067 313 ;
-C 225 ; WX 1000 ; N AE ; B 8 0 1097 718 ;
-C 227 ; WX 370 ; N ordfeminine ; B 127 405 449 737 ;
-C 232 ; WX 556 ; N Lslash ; B 41 0 555 718 ;
-C 233 ; WX 778 ; N Oslash ; B 43 -19 890 737 ;
-C 234 ; WX 1000 ; N OE ; B 98 -19 1116 737 ;
-C 235 ; WX 365 ; N ordmasculine ; B 141 405 468 737 ;
-C 241 ; WX 889 ; N ae ; B 61 -15 909 538 ;
-C 245 ; WX 278 ; N dotlessi ; B 95 0 294 523 ;
-C 248 ; WX 222 ; N lslash ; B 41 0 347 718 ;
-C 249 ; WX 611 ; N oslash ; B 29 -22 647 545 ;
-C 250 ; WX 944 ; N oe ; B 83 -15 964 538 ;
-C 251 ; WX 611 ; N germandbls ; B 67 -15 658 728 ;
-C -1 ; WX 278 ; N Idieresis ; B 91 0 458 901 ;
-C -1 ; WX 556 ; N eacute ; B 84 -15 587 734 ;
-C -1 ; WX 556 ; N abreve ; B 61 -15 578 731 ;
-C -1 ; WX 556 ; N uhungarumlaut ; B 94 -15 677 734 ;
-C -1 ; WX 556 ; N ecaron ; B 84 -15 580 734 ;
-C -1 ; WX 667 ; N Ydieresis ; B 167 0 806 901 ;
-C -1 ; WX 584 ; N divide ; B 85 -19 606 524 ;
-C -1 ; WX 667 ; N Yacute ; B 167 0 806 929 ;
-C -1 ; WX 667 ; N Acircumflex ; B 14 0 654 929 ;
-C -1 ; WX 556 ; N aacute ; B 61 -15 587 734 ;
-C -1 ; WX 722 ; N Ucircumflex ; B 123 -19 797 929 ;
-C -1 ; WX 500 ; N yacute ; B 15 -214 600 734 ;
-C -1 ; WX 500 ; N scommaaccent ; B 63 -225 529 538 ;
-C -1 ; WX 556 ; N ecircumflex ; B 84 -15 578 734 ;
-C -1 ; WX 722 ; N Uring ; B 123 -19 797 931 ;
-C -1 ; WX 722 ; N Udieresis ; B 123 -19 797 901 ;
-C -1 ; WX 556 ; N aogonek ; B 61 -220 559 538 ;
-C -1 ; WX 722 ; N Uacute ; B 123 -19 797 929 ;
-C -1 ; WX 556 ; N uogonek ; B 94 -225 600 523 ;
-C -1 ; WX 667 ; N Edieresis ; B 86 0 762 901 ;
-C -1 ; WX 722 ; N Dcroat ; B 69 0 764 718 ;
-C -1 ; WX 250 ; N commaaccent ; B 39 -225 172 -40 ;
-C -1 ; WX 737 ; N copyright ; B 54 -19 837 737 ;
-C -1 ; WX 667 ; N Emacron ; B 86 0 762 879 ;
-C -1 ; WX 500 ; N ccaron ; B 74 -15 553 734 ;
-C -1 ; WX 556 ; N aring ; B 61 -15 559 756 ;
-C -1 ; WX 722 ; N Ncommaaccent ; B 76 -225 799 718 ;
-C -1 ; WX 222 ; N lacute ; B 67 0 461 929 ;
-C -1 ; WX 556 ; N agrave ; B 61 -15 559 734 ;
-C -1 ; WX 611 ; N Tcommaaccent ; B 148 -225 750 718 ;
-C -1 ; WX 722 ; N Cacute ; B 108 -19 782 929 ;
-C -1 ; WX 556 ; N atilde ; B 61 -15 592 722 ;
-C -1 ; WX 667 ; N Edotaccent ; B 86 0 762 901 ;
-C -1 ; WX 500 ; N scaron ; B 63 -15 552 734 ;
-C -1 ; WX 500 ; N scedilla ; B 63 -225 529 538 ;
-C -1 ; WX 278 ; N iacute ; B 95 0 448 734 ;
-C -1 ; WX 471 ; N lozenge ; B 88 0 540 728 ;
-C -1 ; WX 722 ; N Rcaron ; B 88 0 773 929 ;
-C -1 ; WX 778 ; N Gcommaaccent ; B 111 -225 799 737 ;
-C -1 ; WX 556 ; N ucircumflex ; B 94 -15 600 734 ;
-C -1 ; WX 556 ; N acircumflex ; B 61 -15 559 734 ;
-C -1 ; WX 667 ; N Amacron ; B 14 0 677 879 ;
-C -1 ; WX 333 ; N rcaron ; B 77 0 508 734 ;
-C -1 ; WX 500 ; N ccedilla ; B 74 -225 553 538 ;
-C -1 ; WX 611 ; N Zdotaccent ; B 23 0 741 901 ;
-C -1 ; WX 667 ; N Thorn ; B 86 0 712 718 ;
-C -1 ; WX 778 ; N Omacron ; B 105 -19 826 879 ;
-C -1 ; WX 722 ; N Racute ; B 88 0 773 929 ;
-C -1 ; WX 667 ; N Sacute ; B 90 -19 713 929 ;
-C -1 ; WX 643 ; N dcaron ; B 84 -15 808 718 ;
-C -1 ; WX 722 ; N Umacron ; B 123 -19 797 879 ;
-C -1 ; WX 556 ; N uring ; B 94 -15 600 756 ;
-C -1 ; WX 333 ; N threesuperior ; B 90 270 436 703 ;
-C -1 ; WX 778 ; N Ograve ; B 105 -19 826 929 ;
-C -1 ; WX 667 ; N Agrave ; B 14 0 654 929 ;
-C -1 ; WX 667 ; N Abreve ; B 14 0 685 926 ;
-C -1 ; WX 584 ; N multiply ; B 50 0 642 506 ;
-C -1 ; WX 556 ; N uacute ; B 94 -15 600 734 ;
-C -1 ; WX 611 ; N Tcaron ; B 148 0 750 929 ;
-C -1 ; WX 476 ; N partialdiff ; B 41 -38 550 714 ;
-C -1 ; WX 500 ; N ydieresis ; B 15 -214 600 706 ;
-C -1 ; WX 722 ; N Nacute ; B 76 0 799 929 ;
-C -1 ; WX 278 ; N icircumflex ; B 95 0 411 734 ;
-C -1 ; WX 667 ; N Ecircumflex ; B 86 0 762 929 ;
-C -1 ; WX 556 ; N adieresis ; B 61 -15 559 706 ;
-C -1 ; WX 556 ; N edieresis ; B 84 -15 578 706 ;
-C -1 ; WX 500 ; N cacute ; B 74 -15 559 734 ;
-C -1 ; WX 556 ; N nacute ; B 65 0 587 734 ;
-C -1 ; WX 556 ; N umacron ; B 94 -15 600 684 ;
-C -1 ; WX 722 ; N Ncaron ; B 76 0 799 929 ;
-C -1 ; WX 278 ; N Iacute ; B 91 0 489 929 ;
-C -1 ; WX 584 ; N plusminus ; B 39 0 618 506 ;
-C -1 ; WX 260 ; N brokenbar ; B 62 -150 316 700 ;
-C -1 ; WX 737 ; N registered ; B 54 -19 837 737 ;
-C -1 ; WX 778 ; N Gbreve ; B 111 -19 799 926 ;
-C -1 ; WX 278 ; N Idotaccent ; B 91 0 377 901 ;
-C -1 ; WX 600 ; N summation ; B 15 -10 671 706 ;
-C -1 ; WX 667 ; N Egrave ; B 86 0 762 929 ;
-C -1 ; WX 333 ; N racute ; B 77 0 475 734 ;
-C -1 ; WX 556 ; N omacron ; B 83 -14 585 684 ;
-C -1 ; WX 611 ; N Zacute ; B 23 0 741 929 ;
-C -1 ; WX 611 ; N Zcaron ; B 23 0 741 929 ;
-C -1 ; WX 549 ; N greaterequal ; B 26 0 620 674 ;
-C -1 ; WX 722 ; N Eth ; B 69 0 764 718 ;
-C -1 ; WX 722 ; N Ccedilla ; B 108 -225 782 737 ;
-C -1 ; WX 222 ; N lcommaaccent ; B 25 -225 308 718 ;
-C -1 ; WX 317 ; N tcaron ; B 102 -7 501 808 ;
-C -1 ; WX 556 ; N eogonek ; B 84 -225 578 538 ;
-C -1 ; WX 722 ; N Uogonek ; B 123 -225 797 718 ;
-C -1 ; WX 667 ; N Aacute ; B 14 0 683 929 ;
-C -1 ; WX 667 ; N Adieresis ; B 14 0 654 901 ;
-C -1 ; WX 556 ; N egrave ; B 84 -15 578 734 ;
-C -1 ; WX 500 ; N zacute ; B 31 0 571 734 ;
-C -1 ; WX 222 ; N iogonek ; B -61 -225 308 718 ;
-C -1 ; WX 778 ; N Oacute ; B 105 -19 826 929 ;
-C -1 ; WX 556 ; N oacute ; B 83 -14 587 734 ;
-C -1 ; WX 556 ; N amacron ; B 61 -15 580 684 ;
-C -1 ; WX 500 ; N sacute ; B 63 -15 559 734 ;
-C -1 ; WX 278 ; N idieresis ; B 95 0 416 706 ;
-C -1 ; WX 778 ; N Ocircumflex ; B 105 -19 826 929 ;
-C -1 ; WX 722 ; N Ugrave ; B 123 -19 797 929 ;
-C -1 ; WX 612 ; N Delta ; B 6 0 608 688 ;
-C -1 ; WX 556 ; N thorn ; B 14 -207 584 718 ;
-C -1 ; WX 333 ; N twosuperior ; B 64 281 449 703 ;
-C -1 ; WX 778 ; N Odieresis ; B 105 -19 826 901 ;
-C -1 ; WX 556 ; N mu ; B 24 -207 600 523 ;
-C -1 ; WX 278 ; N igrave ; B 95 0 310 734 ;
-C -1 ; WX 556 ; N ohungarumlaut ; B 83 -14 677 734 ;
-C -1 ; WX 667 ; N Eogonek ; B 86 -220 762 718 ;
-C -1 ; WX 556 ; N dcroat ; B 84 -15 689 718 ;
-C -1 ; WX 834 ; N threequarters ; B 130 -19 861 703 ;
-C -1 ; WX 667 ; N Scedilla ; B 90 -225 713 737 ;
-C -1 ; WX 299 ; N lcaron ; B 67 0 464 718 ;
-C -1 ; WX 667 ; N Kcommaaccent ; B 76 -225 808 718 ;
-C -1 ; WX 556 ; N Lacute ; B 76 0 555 929 ;
-C -1 ; WX 1000 ; N trademark ; B 186 306 1056 718 ;
-C -1 ; WX 556 ; N edotaccent ; B 84 -15 578 706 ;
-C -1 ; WX 278 ; N Igrave ; B 91 0 351 929 ;
-C -1 ; WX 278 ; N Imacron ; B 91 0 483 879 ;
-C -1 ; WX 556 ; N Lcaron ; B 76 0 570 718 ;
-C -1 ; WX 834 ; N onehalf ; B 114 -19 839 703 ;
-C -1 ; WX 549 ; N lessequal ; B 26 0 666 674 ;
-C -1 ; WX 556 ; N ocircumflex ; B 83 -14 585 734 ;
-C -1 ; WX 556 ; N ntilde ; B 65 0 592 722 ;
-C -1 ; WX 722 ; N Uhungarumlaut ; B 123 -19 801 929 ;
-C -1 ; WX 667 ; N Eacute ; B 86 0 762 929 ;
-C -1 ; WX 556 ; N emacron ; B 84 -15 580 684 ;
-C -1 ; WX 556 ; N gbreve ; B 42 -220 610 731 ;
-C -1 ; WX 834 ; N onequarter ; B 150 -19 802 703 ;
-C -1 ; WX 667 ; N Scaron ; B 90 -19 713 929 ;
-C -1 ; WX 667 ; N Scommaaccent ; B 90 -225 713 737 ;
-C -1 ; WX 778 ; N Ohungarumlaut ; B 105 -19 829 929 ;
-C -1 ; WX 400 ; N degree ; B 169 411 468 703 ;
-C -1 ; WX 556 ; N ograve ; B 83 -14 585 734 ;
-C -1 ; WX 722 ; N Ccaron ; B 108 -19 782 929 ;
-C -1 ; WX 556 ; N ugrave ; B 94 -15 600 734 ;
-C -1 ; WX 453 ; N radical ; B 79 -80 617 762 ;
-C -1 ; WX 722 ; N Dcaron ; B 81 0 764 929 ;
-C -1 ; WX 333 ; N rcommaaccent ; B 30 -225 446 538 ;
-C -1 ; WX 722 ; N Ntilde ; B 76 0 799 917 ;
-C -1 ; WX 556 ; N otilde ; B 83 -14 602 722 ;
-C -1 ; WX 722 ; N Rcommaaccent ; B 88 -225 773 718 ;
-C -1 ; WX 556 ; N Lcommaaccent ; B 76 -225 555 718 ;
-C -1 ; WX 667 ; N Atilde ; B 14 0 699 917 ;
-C -1 ; WX 667 ; N Aogonek ; B 14 -225 654 718 ;
-C -1 ; WX 667 ; N Aring ; B 14 0 654 931 ;
-C -1 ; WX 778 ; N Otilde ; B 105 -19 826 917 ;
-C -1 ; WX 500 ; N zdotaccent ; B 31 0 571 706 ;
-C -1 ; WX 667 ; N Ecaron ; B 86 0 762 929 ;
-C -1 ; WX 278 ; N Iogonek ; B -33 -225 341 718 ;
-C -1 ; WX 500 ; N kcommaaccent ; B 67 -225 600 718 ;
-C -1 ; WX 584 ; N minus ; B 85 216 606 289 ;
-C -1 ; WX 278 ; N Icircumflex ; B 91 0 452 929 ;
-C -1 ; WX 556 ; N ncaron ; B 65 0 580 734 ;
-C -1 ; WX 278 ; N tcommaaccent ; B 63 -225 368 669 ;
-C -1 ; WX 584 ; N logicalnot ; B 106 108 628 390 ;
-C -1 ; WX 556 ; N odieresis ; B 83 -14 585 706 ;
-C -1 ; WX 556 ; N udieresis ; B 94 -15 600 706 ;
-C -1 ; WX 549 ; N notequal ; B 34 -35 623 551 ;
-C -1 ; WX 556 ; N gcommaaccent ; B 42 -220 610 822 ;
-C -1 ; WX 556 ; N eth ; B 81 -15 617 737 ;
-C -1 ; WX 500 ; N zcaron ; B 31 0 571 734 ;
-C -1 ; WX 556 ; N ncommaaccent ; B 65 -225 573 538 ;
-C -1 ; WX 333 ; N onesuperior ; B 166 281 371 703 ;
-C -1 ; WX 278 ; N imacron ; B 95 0 417 684 ;
-C -1 ; WX 556 ; N Euro ; B 0 0 0 0 ;
-EndCharMetrics
-StartKernData
-StartKernPairs 2705
-KPX A C -30
-KPX A Cacute -30
-KPX A Ccaron -30
-KPX A Ccedilla -30
-KPX A G -30
-KPX A Gbreve -30
-KPX A Gcommaaccent -30
-KPX A O -30
-KPX A Oacute -30
-KPX A Ocircumflex -30
-KPX A Odieresis -30
-KPX A Ograve -30
-KPX A Ohungarumlaut -30
-KPX A Omacron -30
-KPX A Oslash -30
-KPX A Otilde -30
-KPX A Q -30
-KPX A T -120
-KPX A Tcaron -120
-KPX A Tcommaaccent -120
-KPX A U -50
-KPX A Uacute -50
-KPX A Ucircumflex -50
-KPX A Udieresis -50
-KPX A Ugrave -50
-KPX A Uhungarumlaut -50
-KPX A Umacron -50
-KPX A Uogonek -50
-KPX A Uring -50
-KPX A V -70
-KPX A W -50
-KPX A Y -100
-KPX A Yacute -100
-KPX A Ydieresis -100
-KPX A u -30
-KPX A uacute -30
-KPX A ucircumflex -30
-KPX A udieresis -30
-KPX A ugrave -30
-KPX A uhungarumlaut -30
-KPX A umacron -30
-KPX A uogonek -30
-KPX A uring -30
-KPX A v -40
-KPX A w -40
-KPX A y -40
-KPX A yacute -40
-KPX A ydieresis -40
-KPX Aacute C -30
-KPX Aacute Cacute -30
-KPX Aacute Ccaron -30
-KPX Aacute Ccedilla -30
-KPX Aacute G -30
-KPX Aacute Gbreve -30
-KPX Aacute Gcommaaccent -30
-KPX Aacute O -30
-KPX Aacute Oacute -30
-KPX Aacute Ocircumflex -30
-KPX Aacute Odieresis -30
-KPX Aacute Ograve -30
-KPX Aacute Ohungarumlaut -30
-KPX Aacute Omacron -30
-KPX Aacute Oslash -30
-KPX Aacute Otilde -30
-KPX Aacute Q -30
-KPX Aacute T -120
-KPX Aacute Tcaron -120
-KPX Aacute Tcommaaccent -120
-KPX Aacute U -50
-KPX Aacute Uacute -50
-KPX Aacute Ucircumflex -50
-KPX Aacute Udieresis -50
-KPX Aacute Ugrave -50
-KPX Aacute Uhungarumlaut -50
-KPX Aacute Umacron -50
-KPX Aacute Uogonek -50
-KPX Aacute Uring -50
-KPX Aacute V -70
-KPX Aacute W -50
-KPX Aacute Y -100
-KPX Aacute Yacute -100
-KPX Aacute Ydieresis -100
-KPX Aacute u -30
-KPX Aacute uacute -30
-KPX Aacute ucircumflex -30
-KPX Aacute udieresis -30
-KPX Aacute ugrave -30
-KPX Aacute uhungarumlaut -30
-KPX Aacute umacron -30
-KPX Aacute uogonek -30
-KPX Aacute uring -30
-KPX Aacute v -40
-KPX Aacute w -40
-KPX Aacute y -40
-KPX Aacute yacute -40
-KPX Aacute ydieresis -40
-KPX Abreve C -30
-KPX Abreve Cacute -30
-KPX Abreve Ccaron -30
-KPX Abreve Ccedilla -30
-KPX Abreve G -30
-KPX Abreve Gbreve -30
-KPX Abreve Gcommaaccent -30
-KPX Abreve O -30
-KPX Abreve Oacute -30
-KPX Abreve Ocircumflex -30
-KPX Abreve Odieresis -30
-KPX Abreve Ograve -30
-KPX Abreve Ohungarumlaut -30
-KPX Abreve Omacron -30
-KPX Abreve Oslash -30
-KPX Abreve Otilde -30
-KPX Abreve Q -30
-KPX Abreve T -120
-KPX Abreve Tcaron -120
-KPX Abreve Tcommaaccent -120
-KPX Abreve U -50
-KPX Abreve Uacute -50
-KPX Abreve Ucircumflex -50
-KPX Abreve Udieresis -50
-KPX Abreve Ugrave -50
-KPX Abreve Uhungarumlaut -50
-KPX Abreve Umacron -50
-KPX Abreve Uogonek -50
-KPX Abreve Uring -50
-KPX Abreve V -70
-KPX Abreve W -50
-KPX Abreve Y -100
-KPX Abreve Yacute -100
-KPX Abreve Ydieresis -100
-KPX Abreve u -30
-KPX Abreve uacute -30
-KPX Abreve ucircumflex -30
-KPX Abreve udieresis -30
-KPX Abreve ugrave -30
-KPX Abreve uhungarumlaut -30
-KPX Abreve umacron -30
-KPX Abreve uogonek -30
-KPX Abreve uring -30
-KPX Abreve v -40
-KPX Abreve w -40
-KPX Abreve y -40
-KPX Abreve yacute -40
-KPX Abreve ydieresis -40
-KPX Acircumflex C -30
-KPX Acircumflex Cacute -30
-KPX Acircumflex Ccaron -30
-KPX Acircumflex Ccedilla -30
-KPX Acircumflex G -30
-KPX Acircumflex Gbreve -30
-KPX Acircumflex Gcommaaccent -30
-KPX Acircumflex O -30
-KPX Acircumflex Oacute -30
-KPX Acircumflex Ocircumflex -30
-KPX Acircumflex Odieresis -30
-KPX Acircumflex Ograve -30
-KPX Acircumflex Ohungarumlaut -30
-KPX Acircumflex Omacron -30
-KPX Acircumflex Oslash -30
-KPX Acircumflex Otilde -30
-KPX Acircumflex Q -30
-KPX Acircumflex T -120
-KPX Acircumflex Tcaron -120
-KPX Acircumflex Tcommaaccent -120
-KPX Acircumflex U -50
-KPX Acircumflex Uacute -50
-KPX Acircumflex Ucircumflex -50
-KPX Acircumflex Udieresis -50
-KPX Acircumflex Ugrave -50
-KPX Acircumflex Uhungarumlaut -50
-KPX Acircumflex Umacron -50
-KPX Acircumflex Uogonek -50
-KPX Acircumflex Uring -50
-KPX Acircumflex V -70
-KPX Acircumflex W -50
-KPX Acircumflex Y -100
-KPX Acircumflex Yacute -100
-KPX Acircumflex Ydieresis -100
-KPX Acircumflex u -30
-KPX Acircumflex uacute -30
-KPX Acircumflex ucircumflex -30
-KPX Acircumflex udieresis -30
-KPX Acircumflex ugrave -30
-KPX Acircumflex uhungarumlaut -30
-KPX Acircumflex umacron -30
-KPX Acircumflex uogonek -30
-KPX Acircumflex uring -30
-KPX Acircumflex v -40
-KPX Acircumflex w -40
-KPX Acircumflex y -40
-KPX Acircumflex yacute -40
-KPX Acircumflex ydieresis -40
-KPX Adieresis C -30
-KPX Adieresis Cacute -30
-KPX Adieresis Ccaron -30
-KPX Adieresis Ccedilla -30
-KPX Adieresis G -30
-KPX Adieresis Gbreve -30
-KPX Adieresis Gcommaaccent -30
-KPX Adieresis O -30
-KPX Adieresis Oacute -30
-KPX Adieresis Ocircumflex -30
-KPX Adieresis Odieresis -30
-KPX Adieresis Ograve -30
-KPX Adieresis Ohungarumlaut -30
-KPX Adieresis Omacron -30
-KPX Adieresis Oslash -30
-KPX Adieresis Otilde -30
-KPX Adieresis Q -30
-KPX Adieresis T -120
-KPX Adieresis Tcaron -120
-KPX Adieresis Tcommaaccent -120
-KPX Adieresis U -50
-KPX Adieresis Uacute -50
-KPX Adieresis Ucircumflex -50
-KPX Adieresis Udieresis -50
-KPX Adieresis Ugrave -50
-KPX Adieresis Uhungarumlaut -50
-KPX Adieresis Umacron -50
-KPX Adieresis Uogonek -50
-KPX Adieresis Uring -50
-KPX Adieresis V -70
-KPX Adieresis W -50
-KPX Adieresis Y -100
-KPX Adieresis Yacute -100
-KPX Adieresis Ydieresis -100
-KPX Adieresis u -30
-KPX Adieresis uacute -30
-KPX Adieresis ucircumflex -30
-KPX Adieresis udieresis -30
-KPX Adieresis ugrave -30
-KPX Adieresis uhungarumlaut -30
-KPX Adieresis umacron -30
-KPX Adieresis uogonek -30
-KPX Adieresis uring -30
-KPX Adieresis v -40
-KPX Adieresis w -40
-KPX Adieresis y -40
-KPX Adieresis yacute -40
-KPX Adieresis ydieresis -40
-KPX Agrave C -30
-KPX Agrave Cacute -30
-KPX Agrave Ccaron -30
-KPX Agrave Ccedilla -30
-KPX Agrave G -30
-KPX Agrave Gbreve -30
-KPX Agrave Gcommaaccent -30
-KPX Agrave O -30
-KPX Agrave Oacute -30
-KPX Agrave Ocircumflex -30
-KPX Agrave Odieresis -30
-KPX Agrave Ograve -30
-KPX Agrave Ohungarumlaut -30
-KPX Agrave Omacron -30
-KPX Agrave Oslash -30
-KPX Agrave Otilde -30
-KPX Agrave Q -30
-KPX Agrave T -120
-KPX Agrave Tcaron -120
-KPX Agrave Tcommaaccent -120
-KPX Agrave U -50
-KPX Agrave Uacute -50
-KPX Agrave Ucircumflex -50
-KPX Agrave Udieresis -50
-KPX Agrave Ugrave -50
-KPX Agrave Uhungarumlaut -50
-KPX Agrave Umacron -50
-KPX Agrave Uogonek -50
-KPX Agrave Uring -50
-KPX Agrave V -70
-KPX Agrave W -50
-KPX Agrave Y -100
-KPX Agrave Yacute -100
-KPX Agrave Ydieresis -100
-KPX Agrave u -30
-KPX Agrave uacute -30
-KPX Agrave ucircumflex -30
-KPX Agrave udieresis -30
-KPX Agrave ugrave -30
-KPX Agrave uhungarumlaut -30
-KPX Agrave umacron -30
-KPX Agrave uogonek -30
-KPX Agrave uring -30
-KPX Agrave v -40
-KPX Agrave w -40
-KPX Agrave y -40
-KPX Agrave yacute -40
-KPX Agrave ydieresis -40
-KPX Amacron C -30
-KPX Amacron Cacute -30
-KPX Amacron Ccaron -30
-KPX Amacron Ccedilla -30
-KPX Amacron G -30
-KPX Amacron Gbreve -30
-KPX Amacron Gcommaaccent -30
-KPX Amacron O -30
-KPX Amacron Oacute -30
-KPX Amacron Ocircumflex -30
-KPX Amacron Odieresis -30
-KPX Amacron Ograve -30
-KPX Amacron Ohungarumlaut -30
-KPX Amacron Omacron -30
-KPX Amacron Oslash -30
-KPX Amacron Otilde -30
-KPX Amacron Q -30
-KPX Amacron T -120
-KPX Amacron Tcaron -120
-KPX Amacron Tcommaaccent -120
-KPX Amacron U -50
-KPX Amacron Uacute -50
-KPX Amacron Ucircumflex -50
-KPX Amacron Udieresis -50
-KPX Amacron Ugrave -50
-KPX Amacron Uhungarumlaut -50
-KPX Amacron Umacron -50
-KPX Amacron Uogonek -50
-KPX Amacron Uring -50
-KPX Amacron V -70
-KPX Amacron W -50
-KPX Amacron Y -100
-KPX Amacron Yacute -100
-KPX Amacron Ydieresis -100
-KPX Amacron u -30
-KPX Amacron uacute -30
-KPX Amacron ucircumflex -30
-KPX Amacron udieresis -30
-KPX Amacron ugrave -30
-KPX Amacron uhungarumlaut -30
-KPX Amacron umacron -30
-KPX Amacron uogonek -30
-KPX Amacron uring -30
-KPX Amacron v -40
-KPX Amacron w -40
-KPX Amacron y -40
-KPX Amacron yacute -40
-KPX Amacron ydieresis -40
-KPX Aogonek C -30
-KPX Aogonek Cacute -30
-KPX Aogonek Ccaron -30
-KPX Aogonek Ccedilla -30
-KPX Aogonek G -30
-KPX Aogonek Gbreve -30
-KPX Aogonek Gcommaaccent -30
-KPX Aogonek O -30
-KPX Aogonek Oacute -30
-KPX Aogonek Ocircumflex -30
-KPX Aogonek Odieresis -30
-KPX Aogonek Ograve -30
-KPX Aogonek Ohungarumlaut -30
-KPX Aogonek Omacron -30
-KPX Aogonek Oslash -30
-KPX Aogonek Otilde -30
-KPX Aogonek Q -30
-KPX Aogonek T -120
-KPX Aogonek Tcaron -120
-KPX Aogonek Tcommaaccent -120
-KPX Aogonek U -50
-KPX Aogonek Uacute -50
-KPX Aogonek Ucircumflex -50
-KPX Aogonek Udieresis -50
-KPX Aogonek Ugrave -50
-KPX Aogonek Uhungarumlaut -50
-KPX Aogonek Umacron -50
-KPX Aogonek Uogonek -50
-KPX Aogonek Uring -50
-KPX Aogonek V -70
-KPX Aogonek W -50
-KPX Aogonek Y -100
-KPX Aogonek Yacute -100
-KPX Aogonek Ydieresis -100
-KPX Aogonek u -30
-KPX Aogonek uacute -30
-KPX Aogonek ucircumflex -30
-KPX Aogonek udieresis -30
-KPX Aogonek ugrave -30
-KPX Aogonek uhungarumlaut -30
-KPX Aogonek umacron -30
-KPX Aogonek uogonek -30
-KPX Aogonek uring -30
-KPX Aogonek v -40
-KPX Aogonek w -40
-KPX Aogonek y -40
-KPX Aogonek yacute -40
-KPX Aogonek ydieresis -40
-KPX Aring C -30
-KPX Aring Cacute -30
-KPX Aring Ccaron -30
-KPX Aring Ccedilla -30
-KPX Aring G -30
-KPX Aring Gbreve -30
-KPX Aring Gcommaaccent -30
-KPX Aring O -30
-KPX Aring Oacute -30
-KPX Aring Ocircumflex -30
-KPX Aring Odieresis -30
-KPX Aring Ograve -30
-KPX Aring Ohungarumlaut -30
-KPX Aring Omacron -30
-KPX Aring Oslash -30
-KPX Aring Otilde -30
-KPX Aring Q -30
-KPX Aring T -120
-KPX Aring Tcaron -120
-KPX Aring Tcommaaccent -120
-KPX Aring U -50
-KPX Aring Uacute -50
-KPX Aring Ucircumflex -50
-KPX Aring Udieresis -50
-KPX Aring Ugrave -50
-KPX Aring Uhungarumlaut -50
-KPX Aring Umacron -50
-KPX Aring Uogonek -50
-KPX Aring Uring -50
-KPX Aring V -70
-KPX Aring W -50
-KPX Aring Y -100
-KPX Aring Yacute -100
-KPX Aring Ydieresis -100
-KPX Aring u -30
-KPX Aring uacute -30
-KPX Aring ucircumflex -30
-KPX Aring udieresis -30
-KPX Aring ugrave -30
-KPX Aring uhungarumlaut -30
-KPX Aring umacron -30
-KPX Aring uogonek -30
-KPX Aring uring -30
-KPX Aring v -40
-KPX Aring w -40
-KPX Aring y -40
-KPX Aring yacute -40
-KPX Aring ydieresis -40
-KPX Atilde C -30
-KPX Atilde Cacute -30
-KPX Atilde Ccaron -30
-KPX Atilde Ccedilla -30
-KPX Atilde G -30
-KPX Atilde Gbreve -30
-KPX Atilde Gcommaaccent -30
-KPX Atilde O -30
-KPX Atilde Oacute -30
-KPX Atilde Ocircumflex -30
-KPX Atilde Odieresis -30
-KPX Atilde Ograve -30
-KPX Atilde Ohungarumlaut -30
-KPX Atilde Omacron -30
-KPX Atilde Oslash -30
-KPX Atilde Otilde -30
-KPX Atilde Q -30
-KPX Atilde T -120
-KPX Atilde Tcaron -120
-KPX Atilde Tcommaaccent -120
-KPX Atilde U -50
-KPX Atilde Uacute -50
-KPX Atilde Ucircumflex -50
-KPX Atilde Udieresis -50
-KPX Atilde Ugrave -50
-KPX Atilde Uhungarumlaut -50
-KPX Atilde Umacron -50
-KPX Atilde Uogonek -50
-KPX Atilde Uring -50
-KPX Atilde V -70
-KPX Atilde W -50
-KPX Atilde Y -100
-KPX Atilde Yacute -100
-KPX Atilde Ydieresis -100
-KPX Atilde u -30
-KPX Atilde uacute -30
-KPX Atilde ucircumflex -30
-KPX Atilde udieresis -30
-KPX Atilde ugrave -30
-KPX Atilde uhungarumlaut -30
-KPX Atilde umacron -30
-KPX Atilde uogonek -30
-KPX Atilde uring -30
-KPX Atilde v -40
-KPX Atilde w -40
-KPX Atilde y -40
-KPX Atilde yacute -40
-KPX Atilde ydieresis -40
-KPX B U -10
-KPX B Uacute -10
-KPX B Ucircumflex -10
-KPX B Udieresis -10
-KPX B Ugrave -10
-KPX B Uhungarumlaut -10
-KPX B Umacron -10
-KPX B Uogonek -10
-KPX B Uring -10
-KPX B comma -20
-KPX B period -20
-KPX C comma -30
-KPX C period -30
-KPX Cacute comma -30
-KPX Cacute period -30
-KPX Ccaron comma -30
-KPX Ccaron period -30
-KPX Ccedilla comma -30
-KPX Ccedilla period -30
-KPX D A -40
-KPX D Aacute -40
-KPX D Abreve -40
-KPX D Acircumflex -40
-KPX D Adieresis -40
-KPX D Agrave -40
-KPX D Amacron -40
-KPX D Aogonek -40
-KPX D Aring -40
-KPX D Atilde -40
-KPX D V -70
-KPX D W -40
-KPX D Y -90
-KPX D Yacute -90
-KPX D Ydieresis -90
-KPX D comma -70
-KPX D period -70
-KPX Dcaron A -40
-KPX Dcaron Aacute -40
-KPX Dcaron Abreve -40
-KPX Dcaron Acircumflex -40
-KPX Dcaron Adieresis -40
-KPX Dcaron Agrave -40
-KPX Dcaron Amacron -40
-KPX Dcaron Aogonek -40
-KPX Dcaron Aring -40
-KPX Dcaron Atilde -40
-KPX Dcaron V -70
-KPX Dcaron W -40
-KPX Dcaron Y -90
-KPX Dcaron Yacute -90
-KPX Dcaron Ydieresis -90
-KPX Dcaron comma -70
-KPX Dcaron period -70
-KPX Dcroat A -40
-KPX Dcroat Aacute -40
-KPX Dcroat Abreve -40
-KPX Dcroat Acircumflex -40
-KPX Dcroat Adieresis -40
-KPX Dcroat Agrave -40
-KPX Dcroat Amacron -40
-KPX Dcroat Aogonek -40
-KPX Dcroat Aring -40
-KPX Dcroat Atilde -40
-KPX Dcroat V -70
-KPX Dcroat W -40
-KPX Dcroat Y -90
-KPX Dcroat Yacute -90
-KPX Dcroat Ydieresis -90
-KPX Dcroat comma -70
-KPX Dcroat period -70
-KPX F A -80
-KPX F Aacute -80
-KPX F Abreve -80
-KPX F Acircumflex -80
-KPX F Adieresis -80
-KPX F Agrave -80
-KPX F Amacron -80
-KPX F Aogonek -80
-KPX F Aring -80
-KPX F Atilde -80
-KPX F a -50
-KPX F aacute -50
-KPX F abreve -50
-KPX F acircumflex -50
-KPX F adieresis -50
-KPX F agrave -50
-KPX F amacron -50
-KPX F aogonek -50
-KPX F aring -50
-KPX F atilde -50
-KPX F comma -150
-KPX F e -30
-KPX F eacute -30
-KPX F ecaron -30
-KPX F ecircumflex -30
-KPX F edieresis -30
-KPX F edotaccent -30
-KPX F egrave -30
-KPX F emacron -30
-KPX F eogonek -30
-KPX F o -30
-KPX F oacute -30
-KPX F ocircumflex -30
-KPX F odieresis -30
-KPX F ograve -30
-KPX F ohungarumlaut -30
-KPX F omacron -30
-KPX F oslash -30
-KPX F otilde -30
-KPX F period -150
-KPX F r -45
-KPX F racute -45
-KPX F rcaron -45
-KPX F rcommaaccent -45
-KPX J A -20
-KPX J Aacute -20
-KPX J Abreve -20
-KPX J Acircumflex -20
-KPX J Adieresis -20
-KPX J Agrave -20
-KPX J Amacron -20
-KPX J Aogonek -20
-KPX J Aring -20
-KPX J Atilde -20
-KPX J a -20
-KPX J aacute -20
-KPX J abreve -20
-KPX J acircumflex -20
-KPX J adieresis -20
-KPX J agrave -20
-KPX J amacron -20
-KPX J aogonek -20
-KPX J aring -20
-KPX J atilde -20
-KPX J comma -30
-KPX J period -30
-KPX J u -20
-KPX J uacute -20
-KPX J ucircumflex -20
-KPX J udieresis -20
-KPX J ugrave -20
-KPX J uhungarumlaut -20
-KPX J umacron -20
-KPX J uogonek -20
-KPX J uring -20
-KPX K O -50
-KPX K Oacute -50
-KPX K Ocircumflex -50
-KPX K Odieresis -50
-KPX K Ograve -50
-KPX K Ohungarumlaut -50
-KPX K Omacron -50
-KPX K Oslash -50
-KPX K Otilde -50
-KPX K e -40
-KPX K eacute -40
-KPX K ecaron -40
-KPX K ecircumflex -40
-KPX K edieresis -40
-KPX K edotaccent -40
-KPX K egrave -40
-KPX K emacron -40
-KPX K eogonek -40
-KPX K o -40
-KPX K oacute -40
-KPX K ocircumflex -40
-KPX K odieresis -40
-KPX K ograve -40
-KPX K ohungarumlaut -40
-KPX K omacron -40
-KPX K oslash -40
-KPX K otilde -40
-KPX K u -30
-KPX K uacute -30
-KPX K ucircumflex -30
-KPX K udieresis -30
-KPX K ugrave -30
-KPX K uhungarumlaut -30
-KPX K umacron -30
-KPX K uogonek -30
-KPX K uring -30
-KPX K y -50
-KPX K yacute -50
-KPX K ydieresis -50
-KPX Kcommaaccent O -50
-KPX Kcommaaccent Oacute -50
-KPX Kcommaaccent Ocircumflex -50
-KPX Kcommaaccent Odieresis -50
-KPX Kcommaaccent Ograve -50
-KPX Kcommaaccent Ohungarumlaut -50
-KPX Kcommaaccent Omacron -50
-KPX Kcommaaccent Oslash -50
-KPX Kcommaaccent Otilde -50
-KPX Kcommaaccent e -40
-KPX Kcommaaccent eacute -40
-KPX Kcommaaccent ecaron -40
-KPX Kcommaaccent ecircumflex -40
-KPX Kcommaaccent edieresis -40
-KPX Kcommaaccent edotaccent -40
-KPX Kcommaaccent egrave -40
-KPX Kcommaaccent emacron -40
-KPX Kcommaaccent eogonek -40
-KPX Kcommaaccent o -40
-KPX Kcommaaccent oacute -40
-KPX Kcommaaccent ocircumflex -40
-KPX Kcommaaccent odieresis -40
-KPX Kcommaaccent ograve -40
-KPX Kcommaaccent ohungarumlaut -40
-KPX Kcommaaccent omacron -40
-KPX Kcommaaccent oslash -40
-KPX Kcommaaccent otilde -40
-KPX Kcommaaccent u -30
-KPX Kcommaaccent uacute -30
-KPX Kcommaaccent ucircumflex -30
-KPX Kcommaaccent udieresis -30
-KPX Kcommaaccent ugrave -30
-KPX Kcommaaccent uhungarumlaut -30
-KPX Kcommaaccent umacron -30
-KPX Kcommaaccent uogonek -30
-KPX Kcommaaccent uring -30
-KPX Kcommaaccent y -50
-KPX Kcommaaccent yacute -50
-KPX Kcommaaccent ydieresis -50
-KPX L T -110
-KPX L Tcaron -110
-KPX L Tcommaaccent -110
-KPX L V -110
-KPX L W -70
-KPX L Y -140
-KPX L Yacute -140
-KPX L Ydieresis -140
-KPX L quotedblright -140
-KPX L quoteright -160
-KPX L y -30
-KPX L yacute -30
-KPX L ydieresis -30
-KPX Lacute T -110
-KPX Lacute Tcaron -110
-KPX Lacute Tcommaaccent -110
-KPX Lacute V -110
-KPX Lacute W -70
-KPX Lacute Y -140
-KPX Lacute Yacute -140
-KPX Lacute Ydieresis -140
-KPX Lacute quotedblright -140
-KPX Lacute quoteright -160
-KPX Lacute y -30
-KPX Lacute yacute -30
-KPX Lacute ydieresis -30
-KPX Lcaron T -110
-KPX Lcaron Tcaron -110
-KPX Lcaron Tcommaaccent -110
-KPX Lcaron V -110
-KPX Lcaron W -70
-KPX Lcaron Y -140
-KPX Lcaron Yacute -140
-KPX Lcaron Ydieresis -140
-KPX Lcaron quotedblright -140
-KPX Lcaron quoteright -160
-KPX Lcaron y -30
-KPX Lcaron yacute -30
-KPX Lcaron ydieresis -30
-KPX Lcommaaccent T -110
-KPX Lcommaaccent Tcaron -110
-KPX Lcommaaccent Tcommaaccent -110
-KPX Lcommaaccent V -110
-KPX Lcommaaccent W -70
-KPX Lcommaaccent Y -140
-KPX Lcommaaccent Yacute -140
-KPX Lcommaaccent Ydieresis -140
-KPX Lcommaaccent quotedblright -140
-KPX Lcommaaccent quoteright -160
-KPX Lcommaaccent y -30
-KPX Lcommaaccent yacute -30
-KPX Lcommaaccent ydieresis -30
-KPX Lslash T -110
-KPX Lslash Tcaron -110
-KPX Lslash Tcommaaccent -110
-KPX Lslash V -110
-KPX Lslash W -70
-KPX Lslash Y -140
-KPX Lslash Yacute -140
-KPX Lslash Ydieresis -140
-KPX Lslash quotedblright -140
-KPX Lslash quoteright -160
-KPX Lslash y -30
-KPX Lslash yacute -30
-KPX Lslash ydieresis -30
-KPX O A -20
-KPX O Aacute -20
-KPX O Abreve -20
-KPX O Acircumflex -20
-KPX O Adieresis -20
-KPX O Agrave -20
-KPX O Amacron -20
-KPX O Aogonek -20
-KPX O Aring -20
-KPX O Atilde -20
-KPX O T -40
-KPX O Tcaron -40
-KPX O Tcommaaccent -40
-KPX O V -50
-KPX O W -30
-KPX O X -60
-KPX O Y -70
-KPX O Yacute -70
-KPX O Ydieresis -70
-KPX O comma -40
-KPX O period -40
-KPX Oacute A -20
-KPX Oacute Aacute -20
-KPX Oacute Abreve -20
-KPX Oacute Acircumflex -20
-KPX Oacute Adieresis -20
-KPX Oacute Agrave -20
-KPX Oacute Amacron -20
-KPX Oacute Aogonek -20
-KPX Oacute Aring -20
-KPX Oacute Atilde -20
-KPX Oacute T -40
-KPX Oacute Tcaron -40
-KPX Oacute Tcommaaccent -40
-KPX Oacute V -50
-KPX Oacute W -30
-KPX Oacute X -60
-KPX Oacute Y -70
-KPX Oacute Yacute -70
-KPX Oacute Ydieresis -70
-KPX Oacute comma -40
-KPX Oacute period -40
-KPX Ocircumflex A -20
-KPX Ocircumflex Aacute -20
-KPX Ocircumflex Abreve -20
-KPX Ocircumflex Acircumflex -20
-KPX Ocircumflex Adieresis -20
-KPX Ocircumflex Agrave -20
-KPX Ocircumflex Amacron -20
-KPX Ocircumflex Aogonek -20
-KPX Ocircumflex Aring -20
-KPX Ocircumflex Atilde -20
-KPX Ocircumflex T -40
-KPX Ocircumflex Tcaron -40
-KPX Ocircumflex Tcommaaccent -40
-KPX Ocircumflex V -50
-KPX Ocircumflex W -30
-KPX Ocircumflex X -60
-KPX Ocircumflex Y -70
-KPX Ocircumflex Yacute -70
-KPX Ocircumflex Ydieresis -70
-KPX Ocircumflex comma -40
-KPX Ocircumflex period -40
-KPX Odieresis A -20
-KPX Odieresis Aacute -20
-KPX Odieresis Abreve -20
-KPX Odieresis Acircumflex -20
-KPX Odieresis Adieresis -20
-KPX Odieresis Agrave -20
-KPX Odieresis Amacron -20
-KPX Odieresis Aogonek -20
-KPX Odieresis Aring -20
-KPX Odieresis Atilde -20
-KPX Odieresis T -40
-KPX Odieresis Tcaron -40
-KPX Odieresis Tcommaaccent -40
-KPX Odieresis V -50
-KPX Odieresis W -30
-KPX Odieresis X -60
-KPX Odieresis Y -70
-KPX Odieresis Yacute -70
-KPX Odieresis Ydieresis -70
-KPX Odieresis comma -40
-KPX Odieresis period -40
-KPX Ograve A -20
-KPX Ograve Aacute -20
-KPX Ograve Abreve -20
-KPX Ograve Acircumflex -20
-KPX Ograve Adieresis -20
-KPX Ograve Agrave -20
-KPX Ograve Amacron -20
-KPX Ograve Aogonek -20
-KPX Ograve Aring -20
-KPX Ograve Atilde -20
-KPX Ograve T -40
-KPX Ograve Tcaron -40
-KPX Ograve Tcommaaccent -40
-KPX Ograve V -50
-KPX Ograve W -30
-KPX Ograve X -60
-KPX Ograve Y -70
-KPX Ograve Yacute -70
-KPX Ograve Ydieresis -70
-KPX Ograve comma -40
-KPX Ograve period -40
-KPX Ohungarumlaut A -20
-KPX Ohungarumlaut Aacute -20
-KPX Ohungarumlaut Abreve -20
-KPX Ohungarumlaut Acircumflex -20
-KPX Ohungarumlaut Adieresis -20
-KPX Ohungarumlaut Agrave -20
-KPX Ohungarumlaut Amacron -20
-KPX Ohungarumlaut Aogonek -20
-KPX Ohungarumlaut Aring -20
-KPX Ohungarumlaut Atilde -20
-KPX Ohungarumlaut T -40
-KPX Ohungarumlaut Tcaron -40
-KPX Ohungarumlaut Tcommaaccent -40
-KPX Ohungarumlaut V -50
-KPX Ohungarumlaut W -30
-KPX Ohungarumlaut X -60
-KPX Ohungarumlaut Y -70
-KPX Ohungarumlaut Yacute -70
-KPX Ohungarumlaut Ydieresis -70
-KPX Ohungarumlaut comma -40
-KPX Ohungarumlaut period -40
-KPX Omacron A -20
-KPX Omacron Aacute -20
-KPX Omacron Abreve -20
-KPX Omacron Acircumflex -20
-KPX Omacron Adieresis -20
-KPX Omacron Agrave -20
-KPX Omacron Amacron -20
-KPX Omacron Aogonek -20
-KPX Omacron Aring -20
-KPX Omacron Atilde -20
-KPX Omacron T -40
-KPX Omacron Tcaron -40
-KPX Omacron Tcommaaccent -40
-KPX Omacron V -50
-KPX Omacron W -30
-KPX Omacron X -60
-KPX Omacron Y -70
-KPX Omacron Yacute -70
-KPX Omacron Ydieresis -70
-KPX Omacron comma -40
-KPX Omacron period -40
-KPX Oslash A -20
-KPX Oslash Aacute -20
-KPX Oslash Abreve -20
-KPX Oslash Acircumflex -20
-KPX Oslash Adieresis -20
-KPX Oslash Agrave -20
-KPX Oslash Amacron -20
-KPX Oslash Aogonek -20
-KPX Oslash Aring -20
-KPX Oslash Atilde -20
-KPX Oslash T -40
-KPX Oslash Tcaron -40
-KPX Oslash Tcommaaccent -40
-KPX Oslash V -50
-KPX Oslash W -30
-KPX Oslash X -60
-KPX Oslash Y -70
-KPX Oslash Yacute -70
-KPX Oslash Ydieresis -70
-KPX Oslash comma -40
-KPX Oslash period -40
-KPX Otilde A -20
-KPX Otilde Aacute -20
-KPX Otilde Abreve -20
-KPX Otilde Acircumflex -20
-KPX Otilde Adieresis -20
-KPX Otilde Agrave -20
-KPX Otilde Amacron -20
-KPX Otilde Aogonek -20
-KPX Otilde Aring -20
-KPX Otilde Atilde -20
-KPX Otilde T -40
-KPX Otilde Tcaron -40
-KPX Otilde Tcommaaccent -40
-KPX Otilde V -50
-KPX Otilde W -30
-KPX Otilde X -60
-KPX Otilde Y -70
-KPX Otilde Yacute -70
-KPX Otilde Ydieresis -70
-KPX Otilde comma -40
-KPX Otilde period -40
-KPX P A -120
-KPX P Aacute -120
-KPX P Abreve -120
-KPX P Acircumflex -120
-KPX P Adieresis -120
-KPX P Agrave -120
-KPX P Amacron -120
-KPX P Aogonek -120
-KPX P Aring -120
-KPX P Atilde -120
-KPX P a -40
-KPX P aacute -40
-KPX P abreve -40
-KPX P acircumflex -40
-KPX P adieresis -40
-KPX P agrave -40
-KPX P amacron -40
-KPX P aogonek -40
-KPX P aring -40
-KPX P atilde -40
-KPX P comma -180
-KPX P e -50
-KPX P eacute -50
-KPX P ecaron -50
-KPX P ecircumflex -50
-KPX P edieresis -50
-KPX P edotaccent -50
-KPX P egrave -50
-KPX P emacron -50
-KPX P eogonek -50
-KPX P o -50
-KPX P oacute -50
-KPX P ocircumflex -50
-KPX P odieresis -50
-KPX P ograve -50
-KPX P ohungarumlaut -50
-KPX P omacron -50
-KPX P oslash -50
-KPX P otilde -50
-KPX P period -180
-KPX Q U -10
-KPX Q Uacute -10
-KPX Q Ucircumflex -10
-KPX Q Udieresis -10
-KPX Q Ugrave -10
-KPX Q Uhungarumlaut -10
-KPX Q Umacron -10
-KPX Q Uogonek -10
-KPX Q Uring -10
-KPX R O -20
-KPX R Oacute -20
-KPX R Ocircumflex -20
-KPX R Odieresis -20
-KPX R Ograve -20
-KPX R Ohungarumlaut -20
-KPX R Omacron -20
-KPX R Oslash -20
-KPX R Otilde -20
-KPX R T -30
-KPX R Tcaron -30
-KPX R Tcommaaccent -30
-KPX R U -40
-KPX R Uacute -40
-KPX R Ucircumflex -40
-KPX R Udieresis -40
-KPX R Ugrave -40
-KPX R Uhungarumlaut -40
-KPX R Umacron -40
-KPX R Uogonek -40
-KPX R Uring -40
-KPX R V -50
-KPX R W -30
-KPX R Y -50
-KPX R Yacute -50
-KPX R Ydieresis -50
-KPX Racute O -20
-KPX Racute Oacute -20
-KPX Racute Ocircumflex -20
-KPX Racute Odieresis -20
-KPX Racute Ograve -20
-KPX Racute Ohungarumlaut -20
-KPX Racute Omacron -20
-KPX Racute Oslash -20
-KPX Racute Otilde -20
-KPX Racute T -30
-KPX Racute Tcaron -30
-KPX Racute Tcommaaccent -30
-KPX Racute U -40
-KPX Racute Uacute -40
-KPX Racute Ucircumflex -40
-KPX Racute Udieresis -40
-KPX Racute Ugrave -40
-KPX Racute Uhungarumlaut -40
-KPX Racute Umacron -40
-KPX Racute Uogonek -40
-KPX Racute Uring -40
-KPX Racute V -50
-KPX Racute W -30
-KPX Racute Y -50
-KPX Racute Yacute -50
-KPX Racute Ydieresis -50
-KPX Rcaron O -20
-KPX Rcaron Oacute -20
-KPX Rcaron Ocircumflex -20
-KPX Rcaron Odieresis -20
-KPX Rcaron Ograve -20
-KPX Rcaron Ohungarumlaut -20
-KPX Rcaron Omacron -20
-KPX Rcaron Oslash -20
-KPX Rcaron Otilde -20
-KPX Rcaron T -30
-KPX Rcaron Tcaron -30
-KPX Rcaron Tcommaaccent -30
-KPX Rcaron U -40
-KPX Rcaron Uacute -40
-KPX Rcaron Ucircumflex -40
-KPX Rcaron Udieresis -40
-KPX Rcaron Ugrave -40
-KPX Rcaron Uhungarumlaut -40
-KPX Rcaron Umacron -40
-KPX Rcaron Uogonek -40
-KPX Rcaron Uring -40
-KPX Rcaron V -50
-KPX Rcaron W -30
-KPX Rcaron Y -50
-KPX Rcaron Yacute -50
-KPX Rcaron Ydieresis -50
-KPX Rcommaaccent O -20
-KPX Rcommaaccent Oacute -20
-KPX Rcommaaccent Ocircumflex -20
-KPX Rcommaaccent Odieresis -20
-KPX Rcommaaccent Ograve -20
-KPX Rcommaaccent Ohungarumlaut -20
-KPX Rcommaaccent Omacron -20
-KPX Rcommaaccent Oslash -20
-KPX Rcommaaccent Otilde -20
-KPX Rcommaaccent T -30
-KPX Rcommaaccent Tcaron -30
-KPX Rcommaaccent Tcommaaccent -30
-KPX Rcommaaccent U -40
-KPX Rcommaaccent Uacute -40
-KPX Rcommaaccent Ucircumflex -40
-KPX Rcommaaccent Udieresis -40
-KPX Rcommaaccent Ugrave -40
-KPX Rcommaaccent Uhungarumlaut -40
-KPX Rcommaaccent Umacron -40
-KPX Rcommaaccent Uogonek -40
-KPX Rcommaaccent Uring -40
-KPX Rcommaaccent V -50
-KPX Rcommaaccent W -30
-KPX Rcommaaccent Y -50
-KPX Rcommaaccent Yacute -50
-KPX Rcommaaccent Ydieresis -50
-KPX S comma -20
-KPX S period -20
-KPX Sacute comma -20
-KPX Sacute period -20
-KPX Scaron comma -20
-KPX Scaron period -20
-KPX Scedilla comma -20
-KPX Scedilla period -20
-KPX Scommaaccent comma -20
-KPX Scommaaccent period -20
-KPX T A -120
-KPX T Aacute -120
-KPX T Abreve -120
-KPX T Acircumflex -120
-KPX T Adieresis -120
-KPX T Agrave -120
-KPX T Amacron -120
-KPX T Aogonek -120
-KPX T Aring -120
-KPX T Atilde -120
-KPX T O -40
-KPX T Oacute -40
-KPX T Ocircumflex -40
-KPX T Odieresis -40
-KPX T Ograve -40
-KPX T Ohungarumlaut -40
-KPX T Omacron -40
-KPX T Oslash -40
-KPX T Otilde -40
-KPX T a -120
-KPX T aacute -120
-KPX T abreve -60
-KPX T acircumflex -120
-KPX T adieresis -120
-KPX T agrave -120
-KPX T amacron -60
-KPX T aogonek -120
-KPX T aring -120
-KPX T atilde -60
-KPX T colon -20
-KPX T comma -120
-KPX T e -120
-KPX T eacute -120
-KPX T ecaron -120
-KPX T ecircumflex -120
-KPX T edieresis -120
-KPX T edotaccent -120
-KPX T egrave -60
-KPX T emacron -60
-KPX T eogonek -120
-KPX T hyphen -140
-KPX T o -120
-KPX T oacute -120
-KPX T ocircumflex -120
-KPX T odieresis -120
-KPX T ograve -120
-KPX T ohungarumlaut -120
-KPX T omacron -60
-KPX T oslash -120
-KPX T otilde -60
-KPX T period -120
-KPX T r -120
-KPX T racute -120
-KPX T rcaron -120
-KPX T rcommaaccent -120
-KPX T semicolon -20
-KPX T u -120
-KPX T uacute -120
-KPX T ucircumflex -120
-KPX T udieresis -120
-KPX T ugrave -120
-KPX T uhungarumlaut -120
-KPX T umacron -60
-KPX T uogonek -120
-KPX T uring -120
-KPX T w -120
-KPX T y -120
-KPX T yacute -120
-KPX T ydieresis -60
-KPX Tcaron A -120
-KPX Tcaron Aacute -120
-KPX Tcaron Abreve -120
-KPX Tcaron Acircumflex -120
-KPX Tcaron Adieresis -120
-KPX Tcaron Agrave -120
-KPX Tcaron Amacron -120
-KPX Tcaron Aogonek -120
-KPX Tcaron Aring -120
-KPX Tcaron Atilde -120
-KPX Tcaron O -40
-KPX Tcaron Oacute -40
-KPX Tcaron Ocircumflex -40
-KPX Tcaron Odieresis -40
-KPX Tcaron Ograve -40
-KPX Tcaron Ohungarumlaut -40
-KPX Tcaron Omacron -40
-KPX Tcaron Oslash -40
-KPX Tcaron Otilde -40
-KPX Tcaron a -120
-KPX Tcaron aacute -120
-KPX Tcaron abreve -60
-KPX Tcaron acircumflex -120
-KPX Tcaron adieresis -120
-KPX Tcaron agrave -120
-KPX Tcaron amacron -60
-KPX Tcaron aogonek -120
-KPX Tcaron aring -120
-KPX Tcaron atilde -60
-KPX Tcaron colon -20
-KPX Tcaron comma -120
-KPX Tcaron e -120
-KPX Tcaron eacute -120
-KPX Tcaron ecaron -120
-KPX Tcaron ecircumflex -120
-KPX Tcaron edieresis -120
-KPX Tcaron edotaccent -120
-KPX Tcaron egrave -60
-KPX Tcaron emacron -60
-KPX Tcaron eogonek -120
-KPX Tcaron hyphen -140
-KPX Tcaron o -120
-KPX Tcaron oacute -120
-KPX Tcaron ocircumflex -120
-KPX Tcaron odieresis -120
-KPX Tcaron ograve -120
-KPX Tcaron ohungarumlaut -120
-KPX Tcaron omacron -60
-KPX Tcaron oslash -120
-KPX Tcaron otilde -60
-KPX Tcaron period -120
-KPX Tcaron r -120
-KPX Tcaron racute -120
-KPX Tcaron rcaron -120
-KPX Tcaron rcommaaccent -120
-KPX Tcaron semicolon -20
-KPX Tcaron u -120
-KPX Tcaron uacute -120
-KPX Tcaron ucircumflex -120
-KPX Tcaron udieresis -120
-KPX Tcaron ugrave -120
-KPX Tcaron uhungarumlaut -120
-KPX Tcaron umacron -60
-KPX Tcaron uogonek -120
-KPX Tcaron uring -120
-KPX Tcaron w -120
-KPX Tcaron y -120
-KPX Tcaron yacute -120
-KPX Tcaron ydieresis -60
-KPX Tcommaaccent A -120
-KPX Tcommaaccent Aacute -120
-KPX Tcommaaccent Abreve -120
-KPX Tcommaaccent Acircumflex -120
-KPX Tcommaaccent Adieresis -120
-KPX Tcommaaccent Agrave -120
-KPX Tcommaaccent Amacron -120
-KPX Tcommaaccent Aogonek -120
-KPX Tcommaaccent Aring -120
-KPX Tcommaaccent Atilde -120
-KPX Tcommaaccent O -40
-KPX Tcommaaccent Oacute -40
-KPX Tcommaaccent Ocircumflex -40
-KPX Tcommaaccent Odieresis -40
-KPX Tcommaaccent Ograve -40
-KPX Tcommaaccent Ohungarumlaut -40
-KPX Tcommaaccent Omacron -40
-KPX Tcommaaccent Oslash -40
-KPX Tcommaaccent Otilde -40
-KPX Tcommaaccent a -120
-KPX Tcommaaccent aacute -120
-KPX Tcommaaccent abreve -60
-KPX Tcommaaccent acircumflex -120
-KPX Tcommaaccent adieresis -120
-KPX Tcommaaccent agrave -120
-KPX Tcommaaccent amacron -60
-KPX Tcommaaccent aogonek -120
-KPX Tcommaaccent aring -120
-KPX Tcommaaccent atilde -60
-KPX Tcommaaccent colon -20
-KPX Tcommaaccent comma -120
-KPX Tcommaaccent e -120
-KPX Tcommaaccent eacute -120
-KPX Tcommaaccent ecaron -120
-KPX Tcommaaccent ecircumflex -120
-KPX Tcommaaccent edieresis -120
-KPX Tcommaaccent edotaccent -120
-KPX Tcommaaccent egrave -60
-KPX Tcommaaccent emacron -60
-KPX Tcommaaccent eogonek -120
-KPX Tcommaaccent hyphen -140
-KPX Tcommaaccent o -120
-KPX Tcommaaccent oacute -120
-KPX Tcommaaccent ocircumflex -120
-KPX Tcommaaccent odieresis -120
-KPX Tcommaaccent ograve -120
-KPX Tcommaaccent ohungarumlaut -120
-KPX Tcommaaccent omacron -60
-KPX Tcommaaccent oslash -120
-KPX Tcommaaccent otilde -60
-KPX Tcommaaccent period -120
-KPX Tcommaaccent r -120
-KPX Tcommaaccent racute -120
-KPX Tcommaaccent rcaron -120
-KPX Tcommaaccent rcommaaccent -120
-KPX Tcommaaccent semicolon -20
-KPX Tcommaaccent u -120
-KPX Tcommaaccent uacute -120
-KPX Tcommaaccent ucircumflex -120
-KPX Tcommaaccent udieresis -120
-KPX Tcommaaccent ugrave -120
-KPX Tcommaaccent uhungarumlaut -120
-KPX Tcommaaccent umacron -60
-KPX Tcommaaccent uogonek -120
-KPX Tcommaaccent uring -120
-KPX Tcommaaccent w -120
-KPX Tcommaaccent y -120
-KPX Tcommaaccent yacute -120
-KPX Tcommaaccent ydieresis -60
-KPX U A -40
-KPX U Aacute -40
-KPX U Abreve -40
-KPX U Acircumflex -40
-KPX U Adieresis -40
-KPX U Agrave -40
-KPX U Amacron -40
-KPX U Aogonek -40
-KPX U Aring -40
-KPX U Atilde -40
-KPX U comma -40
-KPX U period -40
-KPX Uacute A -40
-KPX Uacute Aacute -40
-KPX Uacute Abreve -40
-KPX Uacute Acircumflex -40
-KPX Uacute Adieresis -40
-KPX Uacute Agrave -40
-KPX Uacute Amacron -40
-KPX Uacute Aogonek -40
-KPX Uacute Aring -40
-KPX Uacute Atilde -40
-KPX Uacute comma -40
-KPX Uacute period -40
-KPX Ucircumflex A -40
-KPX Ucircumflex Aacute -40
-KPX Ucircumflex Abreve -40
-KPX Ucircumflex Acircumflex -40
-KPX Ucircumflex Adieresis -40
-KPX Ucircumflex Agrave -40
-KPX Ucircumflex Amacron -40
-KPX Ucircumflex Aogonek -40
-KPX Ucircumflex Aring -40
-KPX Ucircumflex Atilde -40
-KPX Ucircumflex comma -40
-KPX Ucircumflex period -40
-KPX Udieresis A -40
-KPX Udieresis Aacute -40
-KPX Udieresis Abreve -40
-KPX Udieresis Acircumflex -40
-KPX Udieresis Adieresis -40
-KPX Udieresis Agrave -40
-KPX Udieresis Amacron -40
-KPX Udieresis Aogonek -40
-KPX Udieresis Aring -40
-KPX Udieresis Atilde -40
-KPX Udieresis comma -40
-KPX Udieresis period -40
-KPX Ugrave A -40
-KPX Ugrave Aacute -40
-KPX Ugrave Abreve -40
-KPX Ugrave Acircumflex -40
-KPX Ugrave Adieresis -40
-KPX Ugrave Agrave -40
-KPX Ugrave Amacron -40
-KPX Ugrave Aogonek -40
-KPX Ugrave Aring -40
-KPX Ugrave Atilde -40
-KPX Ugrave comma -40
-KPX Ugrave period -40
-KPX Uhungarumlaut A -40
-KPX Uhungarumlaut Aacute -40
-KPX Uhungarumlaut Abreve -40
-KPX Uhungarumlaut Acircumflex -40
-KPX Uhungarumlaut Adieresis -40
-KPX Uhungarumlaut Agrave -40
-KPX Uhungarumlaut Amacron -40
-KPX Uhungarumlaut Aogonek -40
-KPX Uhungarumlaut Aring -40
-KPX Uhungarumlaut Atilde -40
-KPX Uhungarumlaut comma -40
-KPX Uhungarumlaut period -40
-KPX Umacron A -40
-KPX Umacron Aacute -40
-KPX Umacron Abreve -40
-KPX Umacron Acircumflex -40
-KPX Umacron Adieresis -40
-KPX Umacron Agrave -40
-KPX Umacron Amacron -40
-KPX Umacron Aogonek -40
-KPX Umacron Aring -40
-KPX Umacron Atilde -40
-KPX Umacron comma -40
-KPX Umacron period -40
-KPX Uogonek A -40
-KPX Uogonek Aacute -40
-KPX Uogonek Abreve -40
-KPX Uogonek Acircumflex -40
-KPX Uogonek Adieresis -40
-KPX Uogonek Agrave -40
-KPX Uogonek Amacron -40
-KPX Uogonek Aogonek -40
-KPX Uogonek Aring -40
-KPX Uogonek Atilde -40
-KPX Uogonek comma -40
-KPX Uogonek period -40
-KPX Uring A -40
-KPX Uring Aacute -40
-KPX Uring Abreve -40
-KPX Uring Acircumflex -40
-KPX Uring Adieresis -40
-KPX Uring Agrave -40
-KPX Uring Amacron -40
-KPX Uring Aogonek -40
-KPX Uring Aring -40
-KPX Uring Atilde -40
-KPX Uring comma -40
-KPX Uring period -40
-KPX V A -80
-KPX V Aacute -80
-KPX V Abreve -80
-KPX V Acircumflex -80
-KPX V Adieresis -80
-KPX V Agrave -80
-KPX V Amacron -80
-KPX V Aogonek -80
-KPX V Aring -80
-KPX V Atilde -80
-KPX V G -40
-KPX V Gbreve -40
-KPX V Gcommaaccent -40
-KPX V O -40
-KPX V Oacute -40
-KPX V Ocircumflex -40
-KPX V Odieresis -40
-KPX V Ograve -40
-KPX V Ohungarumlaut -40
-KPX V Omacron -40
-KPX V Oslash -40
-KPX V Otilde -40
-KPX V a -70
-KPX V aacute -70
-KPX V abreve -70
-KPX V acircumflex -70
-KPX V adieresis -70
-KPX V agrave -70
-KPX V amacron -70
-KPX V aogonek -70
-KPX V aring -70
-KPX V atilde -70
-KPX V colon -40
-KPX V comma -125
-KPX V e -80
-KPX V eacute -80
-KPX V ecaron -80
-KPX V ecircumflex -80
-KPX V edieresis -80
-KPX V edotaccent -80
-KPX V egrave -80
-KPX V emacron -80
-KPX V eogonek -80
-KPX V hyphen -80
-KPX V o -80
-KPX V oacute -80
-KPX V ocircumflex -80
-KPX V odieresis -80
-KPX V ograve -80
-KPX V ohungarumlaut -80
-KPX V omacron -80
-KPX V oslash -80
-KPX V otilde -80
-KPX V period -125
-KPX V semicolon -40
-KPX V u -70
-KPX V uacute -70
-KPX V ucircumflex -70
-KPX V udieresis -70
-KPX V ugrave -70
-KPX V uhungarumlaut -70
-KPX V umacron -70
-KPX V uogonek -70
-KPX V uring -70
-KPX W A -50
-KPX W Aacute -50
-KPX W Abreve -50
-KPX W Acircumflex -50
-KPX W Adieresis -50
-KPX W Agrave -50
-KPX W Amacron -50
-KPX W Aogonek -50
-KPX W Aring -50
-KPX W Atilde -50
-KPX W O -20
-KPX W Oacute -20
-KPX W Ocircumflex -20
-KPX W Odieresis -20
-KPX W Ograve -20
-KPX W Ohungarumlaut -20
-KPX W Omacron -20
-KPX W Oslash -20
-KPX W Otilde -20
-KPX W a -40
-KPX W aacute -40
-KPX W abreve -40
-KPX W acircumflex -40
-KPX W adieresis -40
-KPX W agrave -40
-KPX W amacron -40
-KPX W aogonek -40
-KPX W aring -40
-KPX W atilde -40
-KPX W comma -80
-KPX W e -30
-KPX W eacute -30
-KPX W ecaron -30
-KPX W ecircumflex -30
-KPX W edieresis -30
-KPX W edotaccent -30
-KPX W egrave -30
-KPX W emacron -30
-KPX W eogonek -30
-KPX W hyphen -40
-KPX W o -30
-KPX W oacute -30
-KPX W ocircumflex -30
-KPX W odieresis -30
-KPX W ograve -30
-KPX W ohungarumlaut -30
-KPX W omacron -30
-KPX W oslash -30
-KPX W otilde -30
-KPX W period -80
-KPX W u -30
-KPX W uacute -30
-KPX W ucircumflex -30
-KPX W udieresis -30
-KPX W ugrave -30
-KPX W uhungarumlaut -30
-KPX W umacron -30
-KPX W uogonek -30
-KPX W uring -30
-KPX W y -20
-KPX W yacute -20
-KPX W ydieresis -20
-KPX Y A -110
-KPX Y Aacute -110
-KPX Y Abreve -110
-KPX Y Acircumflex -110
-KPX Y Adieresis -110
-KPX Y Agrave -110
-KPX Y Amacron -110
-KPX Y Aogonek -110
-KPX Y Aring -110
-KPX Y Atilde -110
-KPX Y O -85
-KPX Y Oacute -85
-KPX Y Ocircumflex -85
-KPX Y Odieresis -85
-KPX Y Ograve -85
-KPX Y Ohungarumlaut -85
-KPX Y Omacron -85
-KPX Y Oslash -85
-KPX Y Otilde -85
-KPX Y a -140
-KPX Y aacute -140
-KPX Y abreve -70
-KPX Y acircumflex -140
-KPX Y adieresis -140
-KPX Y agrave -140
-KPX Y amacron -70
-KPX Y aogonek -140
-KPX Y aring -140
-KPX Y atilde -140
-KPX Y colon -60
-KPX Y comma -140
-KPX Y e -140
-KPX Y eacute -140
-KPX Y ecaron -140
-KPX Y ecircumflex -140
-KPX Y edieresis -140
-KPX Y edotaccent -140
-KPX Y egrave -140
-KPX Y emacron -70
-KPX Y eogonek -140
-KPX Y hyphen -140
-KPX Y i -20
-KPX Y iacute -20
-KPX Y iogonek -20
-KPX Y o -140
-KPX Y oacute -140
-KPX Y ocircumflex -140
-KPX Y odieresis -140
-KPX Y ograve -140
-KPX Y ohungarumlaut -140
-KPX Y omacron -140
-KPX Y oslash -140
-KPX Y otilde -140
-KPX Y period -140
-KPX Y semicolon -60
-KPX Y u -110
-KPX Y uacute -110
-KPX Y ucircumflex -110
-KPX Y udieresis -110
-KPX Y ugrave -110
-KPX Y uhungarumlaut -110
-KPX Y umacron -110
-KPX Y uogonek -110
-KPX Y uring -110
-KPX Yacute A -110
-KPX Yacute Aacute -110
-KPX Yacute Abreve -110
-KPX Yacute Acircumflex -110
-KPX Yacute Adieresis -110
-KPX Yacute Agrave -110
-KPX Yacute Amacron -110
-KPX Yacute Aogonek -110
-KPX Yacute Aring -110
-KPX Yacute Atilde -110
-KPX Yacute O -85
-KPX Yacute Oacute -85
-KPX Yacute Ocircumflex -85
-KPX Yacute Odieresis -85
-KPX Yacute Ograve -85
-KPX Yacute Ohungarumlaut -85
-KPX Yacute Omacron -85
-KPX Yacute Oslash -85
-KPX Yacute Otilde -85
-KPX Yacute a -140
-KPX Yacute aacute -140
-KPX Yacute abreve -70
-KPX Yacute acircumflex -140
-KPX Yacute adieresis -140
-KPX Yacute agrave -140
-KPX Yacute amacron -70
-KPX Yacute aogonek -140
-KPX Yacute aring -140
-KPX Yacute atilde -70
-KPX Yacute colon -60
-KPX Yacute comma -140
-KPX Yacute e -140
-KPX Yacute eacute -140
-KPX Yacute ecaron -140
-KPX Yacute ecircumflex -140
-KPX Yacute edieresis -140
-KPX Yacute edotaccent -140
-KPX Yacute egrave -140
-KPX Yacute emacron -70
-KPX Yacute eogonek -140
-KPX Yacute hyphen -140
-KPX Yacute i -20
-KPX Yacute iacute -20
-KPX Yacute iogonek -20
-KPX Yacute o -140
-KPX Yacute oacute -140
-KPX Yacute ocircumflex -140
-KPX Yacute odieresis -140
-KPX Yacute ograve -140
-KPX Yacute ohungarumlaut -140
-KPX Yacute omacron -70
-KPX Yacute oslash -140
-KPX Yacute otilde -140
-KPX Yacute period -140
-KPX Yacute semicolon -60
-KPX Yacute u -110
-KPX Yacute uacute -110
-KPX Yacute ucircumflex -110
-KPX Yacute udieresis -110
-KPX Yacute ugrave -110
-KPX Yacute uhungarumlaut -110
-KPX Yacute umacron -110
-KPX Yacute uogonek -110
-KPX Yacute uring -110
-KPX Ydieresis A -110
-KPX Ydieresis Aacute -110
-KPX Ydieresis Abreve -110
-KPX Ydieresis Acircumflex -110
-KPX Ydieresis Adieresis -110
-KPX Ydieresis Agrave -110
-KPX Ydieresis Amacron -110
-KPX Ydieresis Aogonek -110
-KPX Ydieresis Aring -110
-KPX Ydieresis Atilde -110
-KPX Ydieresis O -85
-KPX Ydieresis Oacute -85
-KPX Ydieresis Ocircumflex -85
-KPX Ydieresis Odieresis -85
-KPX Ydieresis Ograve -85
-KPX Ydieresis Ohungarumlaut -85
-KPX Ydieresis Omacron -85
-KPX Ydieresis Oslash -85
-KPX Ydieresis Otilde -85
-KPX Ydieresis a -140
-KPX Ydieresis aacute -140
-KPX Ydieresis abreve -70
-KPX Ydieresis acircumflex -140
-KPX Ydieresis adieresis -140
-KPX Ydieresis agrave -140
-KPX Ydieresis amacron -70
-KPX Ydieresis aogonek -140
-KPX Ydieresis aring -140
-KPX Ydieresis atilde -70
-KPX Ydieresis colon -60
-KPX Ydieresis comma -140
-KPX Ydieresis e -140
-KPX Ydieresis eacute -140
-KPX Ydieresis ecaron -140
-KPX Ydieresis ecircumflex -140
-KPX Ydieresis edieresis -140
-KPX Ydieresis edotaccent -140
-KPX Ydieresis egrave -140
-KPX Ydieresis emacron -70
-KPX Ydieresis eogonek -140
-KPX Ydieresis hyphen -140
-KPX Ydieresis i -20
-KPX Ydieresis iacute -20
-KPX Ydieresis iogonek -20
-KPX Ydieresis o -140
-KPX Ydieresis oacute -140
-KPX Ydieresis ocircumflex -140
-KPX Ydieresis odieresis -140
-KPX Ydieresis ograve -140
-KPX Ydieresis ohungarumlaut -140
-KPX Ydieresis omacron -140
-KPX Ydieresis oslash -140
-KPX Ydieresis otilde -140
-KPX Ydieresis period -140
-KPX Ydieresis semicolon -60
-KPX Ydieresis u -110
-KPX Ydieresis uacute -110
-KPX Ydieresis ucircumflex -110
-KPX Ydieresis udieresis -110
-KPX Ydieresis ugrave -110
-KPX Ydieresis uhungarumlaut -110
-KPX Ydieresis umacron -110
-KPX Ydieresis uogonek -110
-KPX Ydieresis uring -110
-KPX a v -20
-KPX a w -20
-KPX a y -30
-KPX a yacute -30
-KPX a ydieresis -30
-KPX aacute v -20
-KPX aacute w -20
-KPX aacute y -30
-KPX aacute yacute -30
-KPX aacute ydieresis -30
-KPX abreve v -20
-KPX abreve w -20
-KPX abreve y -30
-KPX abreve yacute -30
-KPX abreve ydieresis -30
-KPX acircumflex v -20
-KPX acircumflex w -20
-KPX acircumflex y -30
-KPX acircumflex yacute -30
-KPX acircumflex ydieresis -30
-KPX adieresis v -20
-KPX adieresis w -20
-KPX adieresis y -30
-KPX adieresis yacute -30
-KPX adieresis ydieresis -30
-KPX agrave v -20
-KPX agrave w -20
-KPX agrave y -30
-KPX agrave yacute -30
-KPX agrave ydieresis -30
-KPX amacron v -20
-KPX amacron w -20
-KPX amacron y -30
-KPX amacron yacute -30
-KPX amacron ydieresis -30
-KPX aogonek v -20
-KPX aogonek w -20
-KPX aogonek y -30
-KPX aogonek yacute -30
-KPX aogonek ydieresis -30
-KPX aring v -20
-KPX aring w -20
-KPX aring y -30
-KPX aring yacute -30
-KPX aring ydieresis -30
-KPX atilde v -20
-KPX atilde w -20
-KPX atilde y -30
-KPX atilde yacute -30
-KPX atilde ydieresis -30
-KPX b b -10
-KPX b comma -40
-KPX b l -20
-KPX b lacute -20
-KPX b lcommaaccent -20
-KPX b lslash -20
-KPX b period -40
-KPX b u -20
-KPX b uacute -20
-KPX b ucircumflex -20
-KPX b udieresis -20
-KPX b ugrave -20
-KPX b uhungarumlaut -20
-KPX b umacron -20
-KPX b uogonek -20
-KPX b uring -20
-KPX b v -20
-KPX b y -20
-KPX b yacute -20
-KPX b ydieresis -20
-KPX c comma -15
-KPX c k -20
-KPX c kcommaaccent -20
-KPX cacute comma -15
-KPX cacute k -20
-KPX cacute kcommaaccent -20
-KPX ccaron comma -15
-KPX ccaron k -20
-KPX ccaron kcommaaccent -20
-KPX ccedilla comma -15
-KPX ccedilla k -20
-KPX ccedilla kcommaaccent -20
-KPX colon space -50
-KPX comma quotedblright -100
-KPX comma quoteright -100
-KPX e comma -15
-KPX e period -15
-KPX e v -30
-KPX e w -20
-KPX e x -30
-KPX e y -20
-KPX e yacute -20
-KPX e ydieresis -20
-KPX eacute comma -15
-KPX eacute period -15
-KPX eacute v -30
-KPX eacute w -20
-KPX eacute x -30
-KPX eacute y -20
-KPX eacute yacute -20
-KPX eacute ydieresis -20
-KPX ecaron comma -15
-KPX ecaron period -15
-KPX ecaron v -30
-KPX ecaron w -20
-KPX ecaron x -30
-KPX ecaron y -20
-KPX ecaron yacute -20
-KPX ecaron ydieresis -20
-KPX ecircumflex comma -15
-KPX ecircumflex period -15
-KPX ecircumflex v -30
-KPX ecircumflex w -20
-KPX ecircumflex x -30
-KPX ecircumflex y -20
-KPX ecircumflex yacute -20
-KPX ecircumflex ydieresis -20
-KPX edieresis comma -15
-KPX edieresis period -15
-KPX edieresis v -30
-KPX edieresis w -20
-KPX edieresis x -30
-KPX edieresis y -20
-KPX edieresis yacute -20
-KPX edieresis ydieresis -20
-KPX edotaccent comma -15
-KPX edotaccent period -15
-KPX edotaccent v -30
-KPX edotaccent w -20
-KPX edotaccent x -30
-KPX edotaccent y -20
-KPX edotaccent yacute -20
-KPX edotaccent ydieresis -20
-KPX egrave comma -15
-KPX egrave period -15
-KPX egrave v -30
-KPX egrave w -20
-KPX egrave x -30
-KPX egrave y -20
-KPX egrave yacute -20
-KPX egrave ydieresis -20
-KPX emacron comma -15
-KPX emacron period -15
-KPX emacron v -30
-KPX emacron w -20
-KPX emacron x -30
-KPX emacron y -20
-KPX emacron yacute -20
-KPX emacron ydieresis -20
-KPX eogonek comma -15
-KPX eogonek period -15
-KPX eogonek v -30
-KPX eogonek w -20
-KPX eogonek x -30
-KPX eogonek y -20
-KPX eogonek yacute -20
-KPX eogonek ydieresis -20
-KPX f a -30
-KPX f aacute -30
-KPX f abreve -30
-KPX f acircumflex -30
-KPX f adieresis -30
-KPX f agrave -30
-KPX f amacron -30
-KPX f aogonek -30
-KPX f aring -30
-KPX f atilde -30
-KPX f comma -30
-KPX f dotlessi -28
-KPX f e -30
-KPX f eacute -30
-KPX f ecaron -30
-KPX f ecircumflex -30
-KPX f edieresis -30
-KPX f edotaccent -30
-KPX f egrave -30
-KPX f emacron -30
-KPX f eogonek -30
-KPX f o -30
-KPX f oacute -30
-KPX f ocircumflex -30
-KPX f odieresis -30
-KPX f ograve -30
-KPX f ohungarumlaut -30
-KPX f omacron -30
-KPX f oslash -30
-KPX f otilde -30
-KPX f period -30
-KPX f quotedblright 60
-KPX f quoteright 50
-KPX g r -10
-KPX g racute -10
-KPX g rcaron -10
-KPX g rcommaaccent -10
-KPX gbreve r -10
-KPX gbreve racute -10
-KPX gbreve rcaron -10
-KPX gbreve rcommaaccent -10
-KPX gcommaaccent r -10
-KPX gcommaaccent racute -10
-KPX gcommaaccent rcaron -10
-KPX gcommaaccent rcommaaccent -10
-KPX h y -30
-KPX h yacute -30
-KPX h ydieresis -30
-KPX k e -20
-KPX k eacute -20
-KPX k ecaron -20
-KPX k ecircumflex -20
-KPX k edieresis -20
-KPX k edotaccent -20
-KPX k egrave -20
-KPX k emacron -20
-KPX k eogonek -20
-KPX k o -20
-KPX k oacute -20
-KPX k ocircumflex -20
-KPX k odieresis -20
-KPX k ograve -20
-KPX k ohungarumlaut -20
-KPX k omacron -20
-KPX k oslash -20
-KPX k otilde -20
-KPX kcommaaccent e -20
-KPX kcommaaccent eacute -20
-KPX kcommaaccent ecaron -20
-KPX kcommaaccent ecircumflex -20
-KPX kcommaaccent edieresis -20
-KPX kcommaaccent edotaccent -20
-KPX kcommaaccent egrave -20
-KPX kcommaaccent emacron -20
-KPX kcommaaccent eogonek -20
-KPX kcommaaccent o -20
-KPX kcommaaccent oacute -20
-KPX kcommaaccent ocircumflex -20
-KPX kcommaaccent odieresis -20
-KPX kcommaaccent ograve -20
-KPX kcommaaccent ohungarumlaut -20
-KPX kcommaaccent omacron -20
-KPX kcommaaccent oslash -20
-KPX kcommaaccent otilde -20
-KPX m u -10
-KPX m uacute -10
-KPX m ucircumflex -10
-KPX m udieresis -10
-KPX m ugrave -10
-KPX m uhungarumlaut -10
-KPX m umacron -10
-KPX m uogonek -10
-KPX m uring -10
-KPX m y -15
-KPX m yacute -15
-KPX m ydieresis -15
-KPX n u -10
-KPX n uacute -10
-KPX n ucircumflex -10
-KPX n udieresis -10
-KPX n ugrave -10
-KPX n uhungarumlaut -10
-KPX n umacron -10
-KPX n uogonek -10
-KPX n uring -10
-KPX n v -20
-KPX n y -15
-KPX n yacute -15
-KPX n ydieresis -15
-KPX nacute u -10
-KPX nacute uacute -10
-KPX nacute ucircumflex -10
-KPX nacute udieresis -10
-KPX nacute ugrave -10
-KPX nacute uhungarumlaut -10
-KPX nacute umacron -10
-KPX nacute uogonek -10
-KPX nacute uring -10
-KPX nacute v -20
-KPX nacute y -15
-KPX nacute yacute -15
-KPX nacute ydieresis -15
-KPX ncaron u -10
-KPX ncaron uacute -10
-KPX ncaron ucircumflex -10
-KPX ncaron udieresis -10
-KPX ncaron ugrave -10
-KPX ncaron uhungarumlaut -10
-KPX ncaron umacron -10
-KPX ncaron uogonek -10
-KPX ncaron uring -10
-KPX ncaron v -20
-KPX ncaron y -15
-KPX ncaron yacute -15
-KPX ncaron ydieresis -15
-KPX ncommaaccent u -10
-KPX ncommaaccent uacute -10
-KPX ncommaaccent ucircumflex -10
-KPX ncommaaccent udieresis -10
-KPX ncommaaccent ugrave -10
-KPX ncommaaccent uhungarumlaut -10
-KPX ncommaaccent umacron -10
-KPX ncommaaccent uogonek -10
-KPX ncommaaccent uring -10
-KPX ncommaaccent v -20
-KPX ncommaaccent y -15
-KPX ncommaaccent yacute -15
-KPX ncommaaccent ydieresis -15
-KPX ntilde u -10
-KPX ntilde uacute -10
-KPX ntilde ucircumflex -10
-KPX ntilde udieresis -10
-KPX ntilde ugrave -10
-KPX ntilde uhungarumlaut -10
-KPX ntilde umacron -10
-KPX ntilde uogonek -10
-KPX ntilde uring -10
-KPX ntilde v -20
-KPX ntilde y -15
-KPX ntilde yacute -15
-KPX ntilde ydieresis -15
-KPX o comma -40
-KPX o period -40
-KPX o v -15
-KPX o w -15
-KPX o x -30
-KPX o y -30
-KPX o yacute -30
-KPX o ydieresis -30
-KPX oacute comma -40
-KPX oacute period -40
-KPX oacute v -15
-KPX oacute w -15
-KPX oacute x -30
-KPX oacute y -30
-KPX oacute yacute -30
-KPX oacute ydieresis -30
-KPX ocircumflex comma -40
-KPX ocircumflex period -40
-KPX ocircumflex v -15
-KPX ocircumflex w -15
-KPX ocircumflex x -30
-KPX ocircumflex y -30
-KPX ocircumflex yacute -30
-KPX ocircumflex ydieresis -30
-KPX odieresis comma -40
-KPX odieresis period -40
-KPX odieresis v -15
-KPX odieresis w -15
-KPX odieresis x -30
-KPX odieresis y -30
-KPX odieresis yacute -30
-KPX odieresis ydieresis -30
-KPX ograve comma -40
-KPX ograve period -40
-KPX ograve v -15
-KPX ograve w -15
-KPX ograve x -30
-KPX ograve y -30
-KPX ograve yacute -30
-KPX ograve ydieresis -30
-KPX ohungarumlaut comma -40
-KPX ohungarumlaut period -40
-KPX ohungarumlaut v -15
-KPX ohungarumlaut w -15
-KPX ohungarumlaut x -30
-KPX ohungarumlaut y -30
-KPX ohungarumlaut yacute -30
-KPX ohungarumlaut ydieresis -30
-KPX omacron comma -40
-KPX omacron period -40
-KPX omacron v -15
-KPX omacron w -15
-KPX omacron x -30
-KPX omacron y -30
-KPX omacron yacute -30
-KPX omacron ydieresis -30
-KPX oslash a -55
-KPX oslash aacute -55
-KPX oslash abreve -55
-KPX oslash acircumflex -55
-KPX oslash adieresis -55
-KPX oslash agrave -55
-KPX oslash amacron -55
-KPX oslash aogonek -55
-KPX oslash aring -55
-KPX oslash atilde -55
-KPX oslash b -55
-KPX oslash c -55
-KPX oslash cacute -55
-KPX oslash ccaron -55
-KPX oslash ccedilla -55
-KPX oslash comma -95
-KPX oslash d -55
-KPX oslash dcroat -55
-KPX oslash e -55
-KPX oslash eacute -55
-KPX oslash ecaron -55
-KPX oslash ecircumflex -55
-KPX oslash edieresis -55
-KPX oslash edotaccent -55
-KPX oslash egrave -55
-KPX oslash emacron -55
-KPX oslash eogonek -55
-KPX oslash f -55
-KPX oslash g -55
-KPX oslash gbreve -55
-KPX oslash gcommaaccent -55
-KPX oslash h -55
-KPX oslash i -55
-KPX oslash iacute -55
-KPX oslash icircumflex -55
-KPX oslash idieresis -55
-KPX oslash igrave -55
-KPX oslash imacron -55
-KPX oslash iogonek -55
-KPX oslash j -55
-KPX oslash k -55
-KPX oslash kcommaaccent -55
-KPX oslash l -55
-KPX oslash lacute -55
-KPX oslash lcommaaccent -55
-KPX oslash lslash -55
-KPX oslash m -55
-KPX oslash n -55
-KPX oslash nacute -55
-KPX oslash ncaron -55
-KPX oslash ncommaaccent -55
-KPX oslash ntilde -55
-KPX oslash o -55
-KPX oslash oacute -55
-KPX oslash ocircumflex -55
-KPX oslash odieresis -55
-KPX oslash ograve -55
-KPX oslash ohungarumlaut -55
-KPX oslash omacron -55
-KPX oslash oslash -55
-KPX oslash otilde -55
-KPX oslash p -55
-KPX oslash period -95
-KPX oslash q -55
-KPX oslash r -55
-KPX oslash racute -55
-KPX oslash rcaron -55
-KPX oslash rcommaaccent -55
-KPX oslash s -55
-KPX oslash sacute -55
-KPX oslash scaron -55
-KPX oslash scedilla -55
-KPX oslash scommaaccent -55
-KPX oslash t -55
-KPX oslash tcommaaccent -55
-KPX oslash u -55
-KPX oslash uacute -55
-KPX oslash ucircumflex -55
-KPX oslash udieresis -55
-KPX oslash ugrave -55
-KPX oslash uhungarumlaut -55
-KPX oslash umacron -55
-KPX oslash uogonek -55
-KPX oslash uring -55
-KPX oslash v -70
-KPX oslash w -70
-KPX oslash x -85
-KPX oslash y -70
-KPX oslash yacute -70
-KPX oslash ydieresis -70
-KPX oslash z -55
-KPX oslash zacute -55
-KPX oslash zcaron -55
-KPX oslash zdotaccent -55
-KPX otilde comma -40
-KPX otilde period -40
-KPX otilde v -15
-KPX otilde w -15
-KPX otilde x -30
-KPX otilde y -30
-KPX otilde yacute -30
-KPX otilde ydieresis -30
-KPX p comma -35
-KPX p period -35
-KPX p y -30
-KPX p yacute -30
-KPX p ydieresis -30
-KPX period quotedblright -100
-KPX period quoteright -100
-KPX period space -60
-KPX quotedblright space -40
-KPX quoteleft quoteleft -57
-KPX quoteright d -50
-KPX quoteright dcroat -50
-KPX quoteright quoteright -57
-KPX quoteright r -50
-KPX quoteright racute -50
-KPX quoteright rcaron -50
-KPX quoteright rcommaaccent -50
-KPX quoteright s -50
-KPX quoteright sacute -50
-KPX quoteright scaron -50
-KPX quoteright scedilla -50
-KPX quoteright scommaaccent -50
-KPX quoteright space -70
-KPX r a -10
-KPX r aacute -10
-KPX r abreve -10
-KPX r acircumflex -10
-KPX r adieresis -10
-KPX r agrave -10
-KPX r amacron -10
-KPX r aogonek -10
-KPX r aring -10
-KPX r atilde -10
-KPX r colon 30
-KPX r comma -50
-KPX r i 15
-KPX r iacute 15
-KPX r icircumflex 15
-KPX r idieresis 15
-KPX r igrave 15
-KPX r imacron 15
-KPX r iogonek 15
-KPX r k 15
-KPX r kcommaaccent 15
-KPX r l 15
-KPX r lacute 15
-KPX r lcommaaccent 15
-KPX r lslash 15
-KPX r m 25
-KPX r n 25
-KPX r nacute 25
-KPX r ncaron 25
-KPX r ncommaaccent 25
-KPX r ntilde 25
-KPX r p 30
-KPX r period -50
-KPX r semicolon 30
-KPX r t 40
-KPX r tcommaaccent 40
-KPX r u 15
-KPX r uacute 15
-KPX r ucircumflex 15
-KPX r udieresis 15
-KPX r ugrave 15
-KPX r uhungarumlaut 15
-KPX r umacron 15
-KPX r uogonek 15
-KPX r uring 15
-KPX r v 30
-KPX r y 30
-KPX r yacute 30
-KPX r ydieresis 30
-KPX racute a -10
-KPX racute aacute -10
-KPX racute abreve -10
-KPX racute acircumflex -10
-KPX racute adieresis -10
-KPX racute agrave -10
-KPX racute amacron -10
-KPX racute aogonek -10
-KPX racute aring -10
-KPX racute atilde -10
-KPX racute colon 30
-KPX racute comma -50
-KPX racute i 15
-KPX racute iacute 15
-KPX racute icircumflex 15
-KPX racute idieresis 15
-KPX racute igrave 15
-KPX racute imacron 15
-KPX racute iogonek 15
-KPX racute k 15
-KPX racute kcommaaccent 15
-KPX racute l 15
-KPX racute lacute 15
-KPX racute lcommaaccent 15
-KPX racute lslash 15
-KPX racute m 25
-KPX racute n 25
-KPX racute nacute 25
-KPX racute ncaron 25
-KPX racute ncommaaccent 25
-KPX racute ntilde 25
-KPX racute p 30
-KPX racute period -50
-KPX racute semicolon 30
-KPX racute t 40
-KPX racute tcommaaccent 40
-KPX racute u 15
-KPX racute uacute 15
-KPX racute ucircumflex 15
-KPX racute udieresis 15
-KPX racute ugrave 15
-KPX racute uhungarumlaut 15
-KPX racute umacron 15
-KPX racute uogonek 15
-KPX racute uring 15
-KPX racute v 30
-KPX racute y 30
-KPX racute yacute 30
-KPX racute ydieresis 30
-KPX rcaron a -10
-KPX rcaron aacute -10
-KPX rcaron abreve -10
-KPX rcaron acircumflex -10
-KPX rcaron adieresis -10
-KPX rcaron agrave -10
-KPX rcaron amacron -10
-KPX rcaron aogonek -10
-KPX rcaron aring -10
-KPX rcaron atilde -10
-KPX rcaron colon 30
-KPX rcaron comma -50
-KPX rcaron i 15
-KPX rcaron iacute 15
-KPX rcaron icircumflex 15
-KPX rcaron idieresis 15
-KPX rcaron igrave 15
-KPX rcaron imacron 15
-KPX rcaron iogonek 15
-KPX rcaron k 15
-KPX rcaron kcommaaccent 15
-KPX rcaron l 15
-KPX rcaron lacute 15
-KPX rcaron lcommaaccent 15
-KPX rcaron lslash 15
-KPX rcaron m 25
-KPX rcaron n 25
-KPX rcaron nacute 25
-KPX rcaron ncaron 25
-KPX rcaron ncommaaccent 25
-KPX rcaron ntilde 25
-KPX rcaron p 30
-KPX rcaron period -50
-KPX rcaron semicolon 30
-KPX rcaron t 40
-KPX rcaron tcommaaccent 40
-KPX rcaron u 15
-KPX rcaron uacute 15
-KPX rcaron ucircumflex 15
-KPX rcaron udieresis 15
-KPX rcaron ugrave 15
-KPX rcaron uhungarumlaut 15
-KPX rcaron umacron 15
-KPX rcaron uogonek 15
-KPX rcaron uring 15
-KPX rcaron v 30
-KPX rcaron y 30
-KPX rcaron yacute 30
-KPX rcaron ydieresis 30
-KPX rcommaaccent a -10
-KPX rcommaaccent aacute -10
-KPX rcommaaccent abreve -10
-KPX rcommaaccent acircumflex -10
-KPX rcommaaccent adieresis -10
-KPX rcommaaccent agrave -10
-KPX rcommaaccent amacron -10
-KPX rcommaaccent aogonek -10
-KPX rcommaaccent aring -10
-KPX rcommaaccent atilde -10
-KPX rcommaaccent colon 30
-KPX rcommaaccent comma -50
-KPX rcommaaccent i 15
-KPX rcommaaccent iacute 15
-KPX rcommaaccent icircumflex 15
-KPX rcommaaccent idieresis 15
-KPX rcommaaccent igrave 15
-KPX rcommaaccent imacron 15
-KPX rcommaaccent iogonek 15
-KPX rcommaaccent k 15
-KPX rcommaaccent kcommaaccent 15
-KPX rcommaaccent l 15
-KPX rcommaaccent lacute 15
-KPX rcommaaccent lcommaaccent 15
-KPX rcommaaccent lslash 15
-KPX rcommaaccent m 25
-KPX rcommaaccent n 25
-KPX rcommaaccent nacute 25
-KPX rcommaaccent ncaron 25
-KPX rcommaaccent ncommaaccent 25
-KPX rcommaaccent ntilde 25
-KPX rcommaaccent p 30
-KPX rcommaaccent period -50
-KPX rcommaaccent semicolon 30
-KPX rcommaaccent t 40
-KPX rcommaaccent tcommaaccent 40
-KPX rcommaaccent u 15
-KPX rcommaaccent uacute 15
-KPX rcommaaccent ucircumflex 15
-KPX rcommaaccent udieresis 15
-KPX rcommaaccent ugrave 15
-KPX rcommaaccent uhungarumlaut 15
-KPX rcommaaccent umacron 15
-KPX rcommaaccent uogonek 15
-KPX rcommaaccent uring 15
-KPX rcommaaccent v 30
-KPX rcommaaccent y 30
-KPX rcommaaccent yacute 30
-KPX rcommaaccent ydieresis 30
-KPX s comma -15
-KPX s period -15
-KPX s w -30
-KPX sacute comma -15
-KPX sacute period -15
-KPX sacute w -30
-KPX scaron comma -15
-KPX scaron period -15
-KPX scaron w -30
-KPX scedilla comma -15
-KPX scedilla period -15
-KPX scedilla w -30
-KPX scommaaccent comma -15
-KPX scommaaccent period -15
-KPX scommaaccent w -30
-KPX semicolon space -50
-KPX space T -50
-KPX space Tcaron -50
-KPX space Tcommaaccent -50
-KPX space V -50
-KPX space W -40
-KPX space Y -90
-KPX space Yacute -90
-KPX space Ydieresis -90
-KPX space quotedblleft -30
-KPX space quoteleft -60
-KPX v a -25
-KPX v aacute -25
-KPX v abreve -25
-KPX v acircumflex -25
-KPX v adieresis -25
-KPX v agrave -25
-KPX v amacron -25
-KPX v aogonek -25
-KPX v aring -25
-KPX v atilde -25
-KPX v comma -80
-KPX v e -25
-KPX v eacute -25
-KPX v ecaron -25
-KPX v ecircumflex -25
-KPX v edieresis -25
-KPX v edotaccent -25
-KPX v egrave -25
-KPX v emacron -25
-KPX v eogonek -25
-KPX v o -25
-KPX v oacute -25
-KPX v ocircumflex -25
-KPX v odieresis -25
-KPX v ograve -25
-KPX v ohungarumlaut -25
-KPX v omacron -25
-KPX v oslash -25
-KPX v otilde -25
-KPX v period -80
-KPX w a -15
-KPX w aacute -15
-KPX w abreve -15
-KPX w acircumflex -15
-KPX w adieresis -15
-KPX w agrave -15
-KPX w amacron -15
-KPX w aogonek -15
-KPX w aring -15
-KPX w atilde -15
-KPX w comma -60
-KPX w e -10
-KPX w eacute -10
-KPX w ecaron -10
-KPX w ecircumflex -10
-KPX w edieresis -10
-KPX w edotaccent -10
-KPX w egrave -10
-KPX w emacron -10
-KPX w eogonek -10
-KPX w o -10
-KPX w oacute -10
-KPX w ocircumflex -10
-KPX w odieresis -10
-KPX w ograve -10
-KPX w ohungarumlaut -10
-KPX w omacron -10
-KPX w oslash -10
-KPX w otilde -10
-KPX w period -60
-KPX x e -30
-KPX x eacute -30
-KPX x ecaron -30
-KPX x ecircumflex -30
-KPX x edieresis -30
-KPX x edotaccent -30
-KPX x egrave -30
-KPX x emacron -30
-KPX x eogonek -30
-KPX y a -20
-KPX y aacute -20
-KPX y abreve -20
-KPX y acircumflex -20
-KPX y adieresis -20
-KPX y agrave -20
-KPX y amacron -20
-KPX y aogonek -20
-KPX y aring -20
-KPX y atilde -20
-KPX y comma -100
-KPX y e -20
-KPX y eacute -20
-KPX y ecaron -20
-KPX y ecircumflex -20
-KPX y edieresis -20
-KPX y edotaccent -20
-KPX y egrave -20
-KPX y emacron -20
-KPX y eogonek -20
-KPX y o -20
-KPX y oacute -20
-KPX y ocircumflex -20
-KPX y odieresis -20
-KPX y ograve -20
-KPX y ohungarumlaut -20
-KPX y omacron -20
-KPX y oslash -20
-KPX y otilde -20
-KPX y period -100
-KPX yacute a -20
-KPX yacute aacute -20
-KPX yacute abreve -20
-KPX yacute acircumflex -20
-KPX yacute adieresis -20
-KPX yacute agrave -20
-KPX yacute amacron -20
-KPX yacute aogonek -20
-KPX yacute aring -20
-KPX yacute atilde -20
-KPX yacute comma -100
-KPX yacute e -20
-KPX yacute eacute -20
-KPX yacute ecaron -20
-KPX yacute ecircumflex -20
-KPX yacute edieresis -20
-KPX yacute edotaccent -20
-KPX yacute egrave -20
-KPX yacute emacron -20
-KPX yacute eogonek -20
-KPX yacute o -20
-KPX yacute oacute -20
-KPX yacute ocircumflex -20
-KPX yacute odieresis -20
-KPX yacute ograve -20
-KPX yacute ohungarumlaut -20
-KPX yacute omacron -20
-KPX yacute oslash -20
-KPX yacute otilde -20
-KPX yacute period -100
-KPX ydieresis a -20
-KPX ydieresis aacute -20
-KPX ydieresis abreve -20
-KPX ydieresis acircumflex -20
-KPX ydieresis adieresis -20
-KPX ydieresis agrave -20
-KPX ydieresis amacron -20
-KPX ydieresis aogonek -20
-KPX ydieresis aring -20
-KPX ydieresis atilde -20
-KPX ydieresis comma -100
-KPX ydieresis e -20
-KPX ydieresis eacute -20
-KPX ydieresis ecaron -20
-KPX ydieresis ecircumflex -20
-KPX ydieresis edieresis -20
-KPX ydieresis edotaccent -20
-KPX ydieresis egrave -20
-KPX ydieresis emacron -20
-KPX ydieresis eogonek -20
-KPX ydieresis o -20
-KPX ydieresis oacute -20
-KPX ydieresis ocircumflex -20
-KPX ydieresis odieresis -20
-KPX ydieresis ograve -20
-KPX ydieresis ohungarumlaut -20
-KPX ydieresis omacron -20
-KPX ydieresis oslash -20
-KPX ydieresis otilde -20
-KPX ydieresis period -100
-KPX z e -15
-KPX z eacute -15
-KPX z ecaron -15
-KPX z ecircumflex -15
-KPX z edieresis -15
-KPX z edotaccent -15
-KPX z egrave -15
-KPX z emacron -15
-KPX z eogonek -15
-KPX z o -15
-KPX z oacute -15
-KPX z ocircumflex -15
-KPX z odieresis -15
-KPX z ograve -15
-KPX z ohungarumlaut -15
-KPX z omacron -15
-KPX z oslash -15
-KPX z otilde -15
-KPX zacute e -15
-KPX zacute eacute -15
-KPX zacute ecaron -15
-KPX zacute ecircumflex -15
-KPX zacute edieresis -15
-KPX zacute edotaccent -15
-KPX zacute egrave -15
-KPX zacute emacron -15
-KPX zacute eogonek -15
-KPX zacute o -15
-KPX zacute oacute -15
-KPX zacute ocircumflex -15
-KPX zacute odieresis -15
-KPX zacute ograve -15
-KPX zacute ohungarumlaut -15
-KPX zacute omacron -15
-KPX zacute oslash -15
-KPX zacute otilde -15
-KPX zcaron e -15
-KPX zcaron eacute -15
-KPX zcaron ecaron -15
-KPX zcaron ecircumflex -15
-KPX zcaron edieresis -15
-KPX zcaron edotaccent -15
-KPX zcaron egrave -15
-KPX zcaron emacron -15
-KPX zcaron eogonek -15
-KPX zcaron o -15
-KPX zcaron oacute -15
-KPX zcaron ocircumflex -15
-KPX zcaron odieresis -15
-KPX zcaron ograve -15
-KPX zcaron ohungarumlaut -15
-KPX zcaron omacron -15
-KPX zcaron oslash -15
-KPX zcaron otilde -15
-KPX zdotaccent e -15
-KPX zdotaccent eacute -15
-KPX zdotaccent ecaron -15
-KPX zdotaccent ecircumflex -15
-KPX zdotaccent edieresis -15
-KPX zdotaccent edotaccent -15
-KPX zdotaccent egrave -15
-KPX zdotaccent emacron -15
-KPX zdotaccent eogonek -15
-KPX zdotaccent o -15
-KPX zdotaccent oacute -15
-KPX zdotaccent ocircumflex -15
-KPX zdotaccent odieresis -15
-KPX zdotaccent ograve -15
-KPX zdotaccent ohungarumlaut -15
-KPX zdotaccent omacron -15
-KPX zdotaccent oslash -15
-KPX zdotaccent otilde -15
-EndKernPairs
-EndKernData
-EndFontMetrics
diff --git a/admin/survey/Fonts/Helvetica.afm b/admin/survey/Fonts/Helvetica.afm
deleted file mode 100644
index 9492d8f..0000000
--- a/admin/survey/Fonts/Helvetica.afm
+++ /dev/null
@@ -1,3051 +0,0 @@
-StartFontMetrics 4.1
-Comment Copyright (c) 1985, 1987, 1989, 1990, 1997 Adobe Systems Incorporated. All Rights Reserved.
-Comment Creation Date: Thu May 1 12:38:23 1997
-Comment UniqueID 43054
-Comment VMusage 37069 48094
-FontName Helvetica
-FullName Helvetica
-FamilyName Helvetica
-Weight Medium
-ItalicAngle 0
-IsFixedPitch false
-CharacterSet ExtendedRoman
-FontBBox -166 -225 1000 931
-UnderlinePosition -100
-UnderlineThickness 50
-Version 002.000
-Notice Copyright (c) 1985, 1987, 1989, 1990, 1997 Adobe Systems Incorporated. All Rights Reserved.Helvetica is a trademark of Linotype-Hell AG and/or its subsidiaries.
-EncodingScheme AdobeStandardEncoding
-CapHeight 718
-XHeight 523
-Ascender 718
-Descender -207
-StdHW 76
-StdVW 88
-StartCharMetrics 315
-C 32 ; WX 278 ; N space ; B 0 0 0 0 ;
-C 33 ; WX 278 ; N exclam ; B 90 0 187 718 ;
-C 34 ; WX 355 ; N quotedbl ; B 70 463 285 718 ;
-C 35 ; WX 556 ; N numbersign ; B 28 0 529 688 ;
-C 36 ; WX 556 ; N dollar ; B 32 -115 520 775 ;
-C 37 ; WX 889 ; N percent ; B 39 -19 850 703 ;
-C 38 ; WX 667 ; N ampersand ; B 44 -15 645 718 ;
-C 39 ; WX 222 ; N quoteright ; B 53 463 157 718 ;
-C 40 ; WX 333 ; N parenleft ; B 68 -207 299 733 ;
-C 41 ; WX 333 ; N parenright ; B 34 -207 265 733 ;
-C 42 ; WX 389 ; N asterisk ; B 39 431 349 718 ;
-C 43 ; WX 584 ; N plus ; B 39 0 545 505 ;
-C 44 ; WX 278 ; N comma ; B 87 -147 191 106 ;
-C 45 ; WX 333 ; N hyphen ; B 44 232 289 322 ;
-C 46 ; WX 278 ; N period ; B 87 0 191 106 ;
-C 47 ; WX 278 ; N slash ; B -17 -19 295 737 ;
-C 48 ; WX 556 ; N zero ; B 37 -19 519 703 ;
-C 49 ; WX 556 ; N one ; B 101 0 359 703 ;
-C 50 ; WX 556 ; N two ; B 26 0 507 703 ;
-C 51 ; WX 556 ; N three ; B 34 -19 522 703 ;
-C 52 ; WX 556 ; N four ; B 25 0 523 703 ;
-C 53 ; WX 556 ; N five ; B 32 -19 514 688 ;
-C 54 ; WX 556 ; N six ; B 38 -19 518 703 ;
-C 55 ; WX 556 ; N seven ; B 37 0 523 688 ;
-C 56 ; WX 556 ; N eight ; B 38 -19 517 703 ;
-C 57 ; WX 556 ; N nine ; B 42 -19 514 703 ;
-C 58 ; WX 278 ; N colon ; B 87 0 191 516 ;
-C 59 ; WX 278 ; N semicolon ; B 87 -147 191 516 ;
-C 60 ; WX 584 ; N less ; B 48 11 536 495 ;
-C 61 ; WX 584 ; N equal ; B 39 115 545 390 ;
-C 62 ; WX 584 ; N greater ; B 48 11 536 495 ;
-C 63 ; WX 556 ; N question ; B 56 0 492 727 ;
-C 64 ; WX 1015 ; N at ; B 147 -19 868 737 ;
-C 65 ; WX 667 ; N A ; B 14 0 654 718 ;
-C 66 ; WX 667 ; N B ; B 74 0 627 718 ;
-C 67 ; WX 722 ; N C ; B 44 -19 681 737 ;
-C 68 ; WX 722 ; N D ; B 81 0 674 718 ;
-C 69 ; WX 667 ; N E ; B 86 0 616 718 ;
-C 70 ; WX 611 ; N F ; B 86 0 583 718 ;
-C 71 ; WX 778 ; N G ; B 48 -19 704 737 ;
-C 72 ; WX 722 ; N H ; B 77 0 646 718 ;
-C 73 ; WX 278 ; N I ; B 91 0 188 718 ;
-C 74 ; WX 500 ; N J ; B 17 -19 428 718 ;
-C 75 ; WX 667 ; N K ; B 76 0 663 718 ;
-C 76 ; WX 556 ; N L ; B 76 0 537 718 ;
-C 77 ; WX 833 ; N M ; B 73 0 761 718 ;
-C 78 ; WX 722 ; N N ; B 76 0 646 718 ;
-C 79 ; WX 778 ; N O ; B 39 -19 739 737 ;
-C 80 ; WX 667 ; N P ; B 86 0 622 718 ;
-C 81 ; WX 778 ; N Q ; B 39 -56 739 737 ;
-C 82 ; WX 722 ; N R ; B 88 0 684 718 ;
-C 83 ; WX 667 ; N S ; B 49 -19 620 737 ;
-C 84 ; WX 611 ; N T ; B 14 0 597 718 ;
-C 85 ; WX 722 ; N U ; B 79 -19 644 718 ;
-C 86 ; WX 667 ; N V ; B 20 0 647 718 ;
-C 87 ; WX 944 ; N W ; B 16 0 928 718 ;
-C 88 ; WX 667 ; N X ; B 19 0 648 718 ;
-C 89 ; WX 667 ; N Y ; B 14 0 653 718 ;
-C 90 ; WX 611 ; N Z ; B 23 0 588 718 ;
-C 91 ; WX 278 ; N bracketleft ; B 63 -196 250 722 ;
-C 92 ; WX 278 ; N backslash ; B -17 -19 295 737 ;
-C 93 ; WX 278 ; N bracketright ; B 28 -196 215 722 ;
-C 94 ; WX 469 ; N asciicircum ; B -14 264 483 688 ;
-C 95 ; WX 556 ; N underscore ; B 0 -125 556 -75 ;
-C 96 ; WX 222 ; N quoteleft ; B 65 470 169 725 ;
-C 97 ; WX 556 ; N a ; B 36 -15 530 538 ;
-C 98 ; WX 556 ; N b ; B 58 -15 517 718 ;
-C 99 ; WX 500 ; N c ; B 30 -15 477 538 ;
-C 100 ; WX 556 ; N d ; B 35 -15 499 718 ;
-C 101 ; WX 556 ; N e ; B 40 -15 516 538 ;
-C 102 ; WX 278 ; N f ; B 14 0 262 728 ; L i fi ; L l fl ;
-C 103 ; WX 556 ; N g ; B 40 -220 499 538 ;
-C 104 ; WX 556 ; N h ; B 65 0 491 718 ;
-C 105 ; WX 222 ; N i ; B 67 0 155 718 ;
-C 106 ; WX 222 ; N j ; B -16 -210 155 718 ;
-C 107 ; WX 500 ; N k ; B 67 0 501 718 ;
-C 108 ; WX 222 ; N l ; B 67 0 155 718 ;
-C 109 ; WX 833 ; N m ; B 65 0 769 538 ;
-C 110 ; WX 556 ; N n ; B 65 0 491 538 ;
-C 111 ; WX 556 ; N o ; B 35 -14 521 538 ;
-C 112 ; WX 556 ; N p ; B 58 -207 517 538 ;
-C 113 ; WX 556 ; N q ; B 35 -207 494 538 ;
-C 114 ; WX 333 ; N r ; B 77 0 332 538 ;
-C 115 ; WX 500 ; N s ; B 32 -15 464 538 ;
-C 116 ; WX 278 ; N t ; B 14 -7 257 669 ;
-C 117 ; WX 556 ; N u ; B 68 -15 489 523 ;
-C 118 ; WX 500 ; N v ; B 8 0 492 523 ;
-C 119 ; WX 722 ; N w ; B 14 0 709 523 ;
-C 120 ; WX 500 ; N x ; B 11 0 490 523 ;
-C 121 ; WX 500 ; N y ; B 11 -214 489 523 ;
-C 122 ; WX 500 ; N z ; B 31 0 469 523 ;
-C 123 ; WX 334 ; N braceleft ; B 42 -196 292 722 ;
-C 124 ; WX 260 ; N bar ; B 94 -225 167 775 ;
-C 125 ; WX 334 ; N braceright ; B 42 -196 292 722 ;
-C 126 ; WX 584 ; N asciitilde ; B 61 180 523 326 ;
-C 161 ; WX 333 ; N exclamdown ; B 118 -195 215 523 ;
-C 162 ; WX 556 ; N cent ; B 51 -115 513 623 ;
-C 163 ; WX 556 ; N sterling ; B 33 -16 539 718 ;
-C 164 ; WX 167 ; N fraction ; B -166 -19 333 703 ;
-C 165 ; WX 556 ; N yen ; B 3 0 553 688 ;
-C 166 ; WX 556 ; N florin ; B -11 -207 501 737 ;
-C 167 ; WX 556 ; N section ; B 43 -191 512 737 ;
-C 168 ; WX 556 ; N currency ; B 28 99 528 603 ;
-C 169 ; WX 191 ; N quotesingle ; B 59 463 132 718 ;
-C 170 ; WX 333 ; N quotedblleft ; B 38 470 307 725 ;
-C 171 ; WX 556 ; N guillemotleft ; B 97 108 459 446 ;
-C 172 ; WX 333 ; N guilsinglleft ; B 88 108 245 446 ;
-C 173 ; WX 333 ; N guilsinglright ; B 88 108 245 446 ;
-C 174 ; WX 500 ; N fi ; B 14 0 434 728 ;
-C 175 ; WX 500 ; N fl ; B 14 0 432 728 ;
-C 177 ; WX 556 ; N endash ; B 0 240 556 313 ;
-C 178 ; WX 556 ; N dagger ; B 43 -159 514 718 ;
-C 179 ; WX 556 ; N daggerdbl ; B 43 -159 514 718 ;
-C 180 ; WX 278 ; N periodcentered ; B 77 190 202 315 ;
-C 182 ; WX 537 ; N paragraph ; B 18 -173 497 718 ;
-C 183 ; WX 350 ; N bullet ; B 18 202 333 517 ;
-C 184 ; WX 222 ; N quotesinglbase ; B 53 -149 157 106 ;
-C 185 ; WX 333 ; N quotedblbase ; B 26 -149 295 106 ;
-C 186 ; WX 333 ; N quotedblright ; B 26 463 295 718 ;
-C 187 ; WX 556 ; N guillemotright ; B 97 108 459 446 ;
-C 188 ; WX 1000 ; N ellipsis ; B 115 0 885 106 ;
-C 189 ; WX 1000 ; N perthousand ; B 7 -19 994 703 ;
-C 191 ; WX 611 ; N questiondown ; B 91 -201 527 525 ;
-C 193 ; WX 333 ; N grave ; B 14 593 211 734 ;
-C 194 ; WX 333 ; N acute ; B 122 593 319 734 ;
-C 195 ; WX 333 ; N circumflex ; B 21 593 312 734 ;
-C 196 ; WX 333 ; N tilde ; B -4 606 337 722 ;
-C 197 ; WX 333 ; N macron ; B 10 627 323 684 ;
-C 198 ; WX 333 ; N breve ; B 13 595 321 731 ;
-C 199 ; WX 333 ; N dotaccent ; B 121 604 212 706 ;
-C 200 ; WX 333 ; N dieresis ; B 40 604 293 706 ;
-C 202 ; WX 333 ; N ring ; B 75 572 259 756 ;
-C 203 ; WX 333 ; N cedilla ; B 45 -225 259 0 ;
-C 205 ; WX 333 ; N hungarumlaut ; B 31 593 409 734 ;
-C 206 ; WX 333 ; N ogonek ; B 73 -225 287 0 ;
-C 207 ; WX 333 ; N caron ; B 21 593 312 734 ;
-C 208 ; WX 1000 ; N emdash ; B 0 240 1000 313 ;
-C 225 ; WX 1000 ; N AE ; B 8 0 951 718 ;
-C 227 ; WX 370 ; N ordfeminine ; B 24 405 346 737 ;
-C 232 ; WX 556 ; N Lslash ; B -20 0 537 718 ;
-C 233 ; WX 778 ; N Oslash ; B 39 -19 740 737 ;
-C 234 ; WX 1000 ; N OE ; B 36 -19 965 737 ;
-C 235 ; WX 365 ; N ordmasculine ; B 25 405 341 737 ;
-C 241 ; WX 889 ; N ae ; B 36 -15 847 538 ;
-C 245 ; WX 278 ; N dotlessi ; B 95 0 183 523 ;
-C 248 ; WX 222 ; N lslash ; B -20 0 242 718 ;
-C 249 ; WX 611 ; N oslash ; B 28 -22 537 545 ;
-C 250 ; WX 944 ; N oe ; B 35 -15 902 538 ;
-C 251 ; WX 611 ; N germandbls ; B 67 -15 571 728 ;
-C -1 ; WX 278 ; N Idieresis ; B 13 0 266 901 ;
-C -1 ; WX 556 ; N eacute ; B 40 -15 516 734 ;
-C -1 ; WX 556 ; N abreve ; B 36 -15 530 731 ;
-C -1 ; WX 556 ; N uhungarumlaut ; B 68 -15 521 734 ;
-C -1 ; WX 556 ; N ecaron ; B 40 -15 516 734 ;
-C -1 ; WX 667 ; N Ydieresis ; B 14 0 653 901 ;
-C -1 ; WX 584 ; N divide ; B 39 -19 545 524 ;
-C -1 ; WX 667 ; N Yacute ; B 14 0 653 929 ;
-C -1 ; WX 667 ; N Acircumflex ; B 14 0 654 929 ;
-C -1 ; WX 556 ; N aacute ; B 36 -15 530 734 ;
-C -1 ; WX 722 ; N Ucircumflex ; B 79 -19 644 929 ;
-C -1 ; WX 500 ; N yacute ; B 11 -214 489 734 ;
-C -1 ; WX 500 ; N scommaaccent ; B 32 -225 464 538 ;
-C -1 ; WX 556 ; N ecircumflex ; B 40 -15 516 734 ;
-C -1 ; WX 722 ; N Uring ; B 79 -19 644 931 ;
-C -1 ; WX 722 ; N Udieresis ; B 79 -19 644 901 ;
-C -1 ; WX 556 ; N aogonek ; B 36 -220 547 538 ;
-C -1 ; WX 722 ; N Uacute ; B 79 -19 644 929 ;
-C -1 ; WX 556 ; N uogonek ; B 68 -225 519 523 ;
-C -1 ; WX 667 ; N Edieresis ; B 86 0 616 901 ;
-C -1 ; WX 722 ; N Dcroat ; B 0 0 674 718 ;
-C -1 ; WX 250 ; N commaaccent ; B 87 -225 181 -40 ;
-C -1 ; WX 737 ; N copyright ; B -14 -19 752 737 ;
-C -1 ; WX 667 ; N Emacron ; B 86 0 616 879 ;
-C -1 ; WX 500 ; N ccaron ; B 30 -15 477 734 ;
-C -1 ; WX 556 ; N aring ; B 36 -15 530 756 ;
-C -1 ; WX 722 ; N Ncommaaccent ; B 76 -225 646 718 ;
-C -1 ; WX 222 ; N lacute ; B 67 0 264 929 ;
-C -1 ; WX 556 ; N agrave ; B 36 -15 530 734 ;
-C -1 ; WX 611 ; N Tcommaaccent ; B 14 -225 597 718 ;
-C -1 ; WX 722 ; N Cacute ; B 44 -19 681 929 ;
-C -1 ; WX 556 ; N atilde ; B 36 -15 530 722 ;
-C -1 ; WX 667 ; N Edotaccent ; B 86 0 616 901 ;
-C -1 ; WX 500 ; N scaron ; B 32 -15 464 734 ;
-C -1 ; WX 500 ; N scedilla ; B 32 -225 464 538 ;
-C -1 ; WX 278 ; N iacute ; B 95 0 292 734 ;
-C -1 ; WX 471 ; N lozenge ; B 10 0 462 728 ;
-C -1 ; WX 722 ; N Rcaron ; B 88 0 684 929 ;
-C -1 ; WX 778 ; N Gcommaaccent ; B 48 -225 704 737 ;
-C -1 ; WX 556 ; N ucircumflex ; B 68 -15 489 734 ;
-C -1 ; WX 556 ; N acircumflex ; B 36 -15 530 734 ;
-C -1 ; WX 667 ; N Amacron ; B 14 0 654 879 ;
-C -1 ; WX 333 ; N rcaron ; B 61 0 352 734 ;
-C -1 ; WX 500 ; N ccedilla ; B 30 -225 477 538 ;
-C -1 ; WX 611 ; N Zdotaccent ; B 23 0 588 901 ;
-C -1 ; WX 667 ; N Thorn ; B 86 0 622 718 ;
-C -1 ; WX 778 ; N Omacron ; B 39 -19 739 879 ;
-C -1 ; WX 722 ; N Racute ; B 88 0 684 929 ;
-C -1 ; WX 667 ; N Sacute ; B 49 -19 620 929 ;
-C -1 ; WX 643 ; N dcaron ; B 35 -15 655 718 ;
-C -1 ; WX 722 ; N Umacron ; B 79 -19 644 879 ;
-C -1 ; WX 556 ; N uring ; B 68 -15 489 756 ;
-C -1 ; WX 333 ; N threesuperior ; B 5 270 325 703 ;
-C -1 ; WX 778 ; N Ograve ; B 39 -19 739 929 ;
-C -1 ; WX 667 ; N Agrave ; B 14 0 654 929 ;
-C -1 ; WX 667 ; N Abreve ; B 14 0 654 926 ;
-C -1 ; WX 584 ; N multiply ; B 39 0 545 506 ;
-C -1 ; WX 556 ; N uacute ; B 68 -15 489 734 ;
-C -1 ; WX 611 ; N Tcaron ; B 14 0 597 929 ;
-C -1 ; WX 476 ; N partialdiff ; B 13 -38 463 714 ;
-C -1 ; WX 500 ; N ydieresis ; B 11 -214 489 706 ;
-C -1 ; WX 722 ; N Nacute ; B 76 0 646 929 ;
-C -1 ; WX 278 ; N icircumflex ; B -6 0 285 734 ;
-C -1 ; WX 667 ; N Ecircumflex ; B 86 0 616 929 ;
-C -1 ; WX 556 ; N adieresis ; B 36 -15 530 706 ;
-C -1 ; WX 556 ; N edieresis ; B 40 -15 516 706 ;
-C -1 ; WX 500 ; N cacute ; B 30 -15 477 734 ;
-C -1 ; WX 556 ; N nacute ; B 65 0 491 734 ;
-C -1 ; WX 556 ; N umacron ; B 68 -15 489 684 ;
-C -1 ; WX 722 ; N Ncaron ; B 76 0 646 929 ;
-C -1 ; WX 278 ; N Iacute ; B 91 0 292 929 ;
-C -1 ; WX 584 ; N plusminus ; B 39 0 545 506 ;
-C -1 ; WX 260 ; N brokenbar ; B 94 -150 167 700 ;
-C -1 ; WX 737 ; N registered ; B -14 -19 752 737 ;
-C -1 ; WX 778 ; N Gbreve ; B 48 -19 704 926 ;
-C -1 ; WX 278 ; N Idotaccent ; B 91 0 188 901 ;
-C -1 ; WX 600 ; N summation ; B 15 -10 586 706 ;
-C -1 ; WX 667 ; N Egrave ; B 86 0 616 929 ;
-C -1 ; WX 333 ; N racute ; B 77 0 332 734 ;
-C -1 ; WX 556 ; N omacron ; B 35 -14 521 684 ;
-C -1 ; WX 611 ; N Zacute ; B 23 0 588 929 ;
-C -1 ; WX 611 ; N Zcaron ; B 23 0 588 929 ;
-C -1 ; WX 549 ; N greaterequal ; B 26 0 523 674 ;
-C -1 ; WX 722 ; N Eth ; B 0 0 674 718 ;
-C -1 ; WX 722 ; N Ccedilla ; B 44 -225 681 737 ;
-C -1 ; WX 222 ; N lcommaaccent ; B 67 -225 167 718 ;
-C -1 ; WX 317 ; N tcaron ; B 14 -7 329 808 ;
-C -1 ; WX 556 ; N eogonek ; B 40 -225 516 538 ;
-C -1 ; WX 722 ; N Uogonek ; B 79 -225 644 718 ;
-C -1 ; WX 667 ; N Aacute ; B 14 0 654 929 ;
-C -1 ; WX 667 ; N Adieresis ; B 14 0 654 901 ;
-C -1 ; WX 556 ; N egrave ; B 40 -15 516 734 ;
-C -1 ; WX 500 ; N zacute ; B 31 0 469 734 ;
-C -1 ; WX 222 ; N iogonek ; B -31 -225 183 718 ;
-C -1 ; WX 778 ; N Oacute ; B 39 -19 739 929 ;
-C -1 ; WX 556 ; N oacute ; B 35 -14 521 734 ;
-C -1 ; WX 556 ; N amacron ; B 36 -15 530 684 ;
-C -1 ; WX 500 ; N sacute ; B 32 -15 464 734 ;
-C -1 ; WX 278 ; N idieresis ; B 13 0 266 706 ;
-C -1 ; WX 778 ; N Ocircumflex ; B 39 -19 739 929 ;
-C -1 ; WX 722 ; N Ugrave ; B 79 -19 644 929 ;
-C -1 ; WX 612 ; N Delta ; B 6 0 608 688 ;
-C -1 ; WX 556 ; N thorn ; B 58 -207 517 718 ;
-C -1 ; WX 333 ; N twosuperior ; B 4 281 323 703 ;
-C -1 ; WX 778 ; N Odieresis ; B 39 -19 739 901 ;
-C -1 ; WX 556 ; N mu ; B 68 -207 489 523 ;
-C -1 ; WX 278 ; N igrave ; B -13 0 184 734 ;
-C -1 ; WX 556 ; N ohungarumlaut ; B 35 -14 521 734 ;
-C -1 ; WX 667 ; N Eogonek ; B 86 -220 633 718 ;
-C -1 ; WX 556 ; N dcroat ; B 35 -15 550 718 ;
-C -1 ; WX 834 ; N threequarters ; B 45 -19 810 703 ;
-C -1 ; WX 667 ; N Scedilla ; B 49 -225 620 737 ;
-C -1 ; WX 299 ; N lcaron ; B 67 0 311 718 ;
-C -1 ; WX 667 ; N Kcommaaccent ; B 76 -225 663 718 ;
-C -1 ; WX 556 ; N Lacute ; B 76 0 537 929 ;
-C -1 ; WX 1000 ; N trademark ; B 46 306 903 718 ;
-C -1 ; WX 556 ; N edotaccent ; B 40 -15 516 706 ;
-C -1 ; WX 278 ; N Igrave ; B -13 0 188 929 ;
-C -1 ; WX 278 ; N Imacron ; B -17 0 296 879 ;
-C -1 ; WX 556 ; N Lcaron ; B 76 0 537 718 ;
-C -1 ; WX 834 ; N onehalf ; B 43 -19 773 703 ;
-C -1 ; WX 549 ; N lessequal ; B 26 0 523 674 ;
-C -1 ; WX 556 ; N ocircumflex ; B 35 -14 521 734 ;
-C -1 ; WX 556 ; N ntilde ; B 65 0 491 722 ;
-C -1 ; WX 722 ; N Uhungarumlaut ; B 79 -19 644 929 ;
-C -1 ; WX 667 ; N Eacute ; B 86 0 616 929 ;
-C -1 ; WX 556 ; N emacron ; B 40 -15 516 684 ;
-C -1 ; WX 556 ; N gbreve ; B 40 -220 499 731 ;
-C -1 ; WX 834 ; N onequarter ; B 73 -19 756 703 ;
-C -1 ; WX 667 ; N Scaron ; B 49 -19 620 929 ;
-C -1 ; WX 667 ; N Scommaaccent ; B 49 -225 620 737 ;
-C -1 ; WX 778 ; N Ohungarumlaut ; B 39 -19 739 929 ;
-C -1 ; WX 400 ; N degree ; B 54 411 346 703 ;
-C -1 ; WX 556 ; N ograve ; B 35 -14 521 734 ;
-C -1 ; WX 722 ; N Ccaron ; B 44 -19 681 929 ;
-C -1 ; WX 556 ; N ugrave ; B 68 -15 489 734 ;
-C -1 ; WX 453 ; N radical ; B -4 -80 458 762 ;
-C -1 ; WX 722 ; N Dcaron ; B 81 0 674 929 ;
-C -1 ; WX 333 ; N rcommaaccent ; B 77 -225 332 538 ;
-C -1 ; WX 722 ; N Ntilde ; B 76 0 646 917 ;
-C -1 ; WX 556 ; N otilde ; B 35 -14 521 722 ;
-C -1 ; WX 722 ; N Rcommaaccent ; B 88 -225 684 718 ;
-C -1 ; WX 556 ; N Lcommaaccent ; B 76 -225 537 718 ;
-C -1 ; WX 667 ; N Atilde ; B 14 0 654 917 ;
-C -1 ; WX 667 ; N Aogonek ; B 14 -225 654 718 ;
-C -1 ; WX 667 ; N Aring ; B 14 0 654 931 ;
-C -1 ; WX 778 ; N Otilde ; B 39 -19 739 917 ;
-C -1 ; WX 500 ; N zdotaccent ; B 31 0 469 706 ;
-C -1 ; WX 667 ; N Ecaron ; B 86 0 616 929 ;
-C -1 ; WX 278 ; N Iogonek ; B -3 -225 211 718 ;
-C -1 ; WX 500 ; N kcommaaccent ; B 67 -225 501 718 ;
-C -1 ; WX 584 ; N minus ; B 39 216 545 289 ;
-C -1 ; WX 278 ; N Icircumflex ; B -6 0 285 929 ;
-C -1 ; WX 556 ; N ncaron ; B 65 0 491 734 ;
-C -1 ; WX 278 ; N tcommaaccent ; B 14 -225 257 669 ;
-C -1 ; WX 584 ; N logicalnot ; B 39 108 545 390 ;
-C -1 ; WX 556 ; N odieresis ; B 35 -14 521 706 ;
-C -1 ; WX 556 ; N udieresis ; B 68 -15 489 706 ;
-C -1 ; WX 549 ; N notequal ; B 12 -35 537 551 ;
-C -1 ; WX 556 ; N gcommaaccent ; B 40 -220 499 822 ;
-C -1 ; WX 556 ; N eth ; B 35 -15 522 737 ;
-C -1 ; WX 500 ; N zcaron ; B 31 0 469 734 ;
-C -1 ; WX 556 ; N ncommaaccent ; B 65 -225 491 538 ;
-C -1 ; WX 333 ; N onesuperior ; B 43 281 222 703 ;
-C -1 ; WX 278 ; N imacron ; B 5 0 272 684 ;
-C -1 ; WX 556 ; N Euro ; B 0 0 0 0 ;
-EndCharMetrics
-StartKernData
-StartKernPairs 2705
-KPX A C -30
-KPX A Cacute -30
-KPX A Ccaron -30
-KPX A Ccedilla -30
-KPX A G -30
-KPX A Gbreve -30
-KPX A Gcommaaccent -30
-KPX A O -30
-KPX A Oacute -30
-KPX A Ocircumflex -30
-KPX A Odieresis -30
-KPX A Ograve -30
-KPX A Ohungarumlaut -30
-KPX A Omacron -30
-KPX A Oslash -30
-KPX A Otilde -30
-KPX A Q -30
-KPX A T -120
-KPX A Tcaron -120
-KPX A Tcommaaccent -120
-KPX A U -50
-KPX A Uacute -50
-KPX A Ucircumflex -50
-KPX A Udieresis -50
-KPX A Ugrave -50
-KPX A Uhungarumlaut -50
-KPX A Umacron -50
-KPX A Uogonek -50
-KPX A Uring -50
-KPX A V -70
-KPX A W -50
-KPX A Y -100
-KPX A Yacute -100
-KPX A Ydieresis -100
-KPX A u -30
-KPX A uacute -30
-KPX A ucircumflex -30
-KPX A udieresis -30
-KPX A ugrave -30
-KPX A uhungarumlaut -30
-KPX A umacron -30
-KPX A uogonek -30
-KPX A uring -30
-KPX A v -40
-KPX A w -40
-KPX A y -40
-KPX A yacute -40
-KPX A ydieresis -40
-KPX Aacute C -30
-KPX Aacute Cacute -30
-KPX Aacute Ccaron -30
-KPX Aacute Ccedilla -30
-KPX Aacute G -30
-KPX Aacute Gbreve -30
-KPX Aacute Gcommaaccent -30
-KPX Aacute O -30
-KPX Aacute Oacute -30
-KPX Aacute Ocircumflex -30
-KPX Aacute Odieresis -30
-KPX Aacute Ograve -30
-KPX Aacute Ohungarumlaut -30
-KPX Aacute Omacron -30
-KPX Aacute Oslash -30
-KPX Aacute Otilde -30
-KPX Aacute Q -30
-KPX Aacute T -120
-KPX Aacute Tcaron -120
-KPX Aacute Tcommaaccent -120
-KPX Aacute U -50
-KPX Aacute Uacute -50
-KPX Aacute Ucircumflex -50
-KPX Aacute Udieresis -50
-KPX Aacute Ugrave -50
-KPX Aacute Uhungarumlaut -50
-KPX Aacute Umacron -50
-KPX Aacute Uogonek -50
-KPX Aacute Uring -50
-KPX Aacute V -70
-KPX Aacute W -50
-KPX Aacute Y -100
-KPX Aacute Yacute -100
-KPX Aacute Ydieresis -100
-KPX Aacute u -30
-KPX Aacute uacute -30
-KPX Aacute ucircumflex -30
-KPX Aacute udieresis -30
-KPX Aacute ugrave -30
-KPX Aacute uhungarumlaut -30
-KPX Aacute umacron -30
-KPX Aacute uogonek -30
-KPX Aacute uring -30
-KPX Aacute v -40
-KPX Aacute w -40
-KPX Aacute y -40
-KPX Aacute yacute -40
-KPX Aacute ydieresis -40
-KPX Abreve C -30
-KPX Abreve Cacute -30
-KPX Abreve Ccaron -30
-KPX Abreve Ccedilla -30
-KPX Abreve G -30
-KPX Abreve Gbreve -30
-KPX Abreve Gcommaaccent -30
-KPX Abreve O -30
-KPX Abreve Oacute -30
-KPX Abreve Ocircumflex -30
-KPX Abreve Odieresis -30
-KPX Abreve Ograve -30
-KPX Abreve Ohungarumlaut -30
-KPX Abreve Omacron -30
-KPX Abreve Oslash -30
-KPX Abreve Otilde -30
-KPX Abreve Q -30
-KPX Abreve T -120
-KPX Abreve Tcaron -120
-KPX Abreve Tcommaaccent -120
-KPX Abreve U -50
-KPX Abreve Uacute -50
-KPX Abreve Ucircumflex -50
-KPX Abreve Udieresis -50
-KPX Abreve Ugrave -50
-KPX Abreve Uhungarumlaut -50
-KPX Abreve Umacron -50
-KPX Abreve Uogonek -50
-KPX Abreve Uring -50
-KPX Abreve V -70
-KPX Abreve W -50
-KPX Abreve Y -100
-KPX Abreve Yacute -100
-KPX Abreve Ydieresis -100
-KPX Abreve u -30
-KPX Abreve uacute -30
-KPX Abreve ucircumflex -30
-KPX Abreve udieresis -30
-KPX Abreve ugrave -30
-KPX Abreve uhungarumlaut -30
-KPX Abreve umacron -30
-KPX Abreve uogonek -30
-KPX Abreve uring -30
-KPX Abreve v -40
-KPX Abreve w -40
-KPX Abreve y -40
-KPX Abreve yacute -40
-KPX Abreve ydieresis -40
-KPX Acircumflex C -30
-KPX Acircumflex Cacute -30
-KPX Acircumflex Ccaron -30
-KPX Acircumflex Ccedilla -30
-KPX Acircumflex G -30
-KPX Acircumflex Gbreve -30
-KPX Acircumflex Gcommaaccent -30
-KPX Acircumflex O -30
-KPX Acircumflex Oacute -30
-KPX Acircumflex Ocircumflex -30
-KPX Acircumflex Odieresis -30
-KPX Acircumflex Ograve -30
-KPX Acircumflex Ohungarumlaut -30
-KPX Acircumflex Omacron -30
-KPX Acircumflex Oslash -30
-KPX Acircumflex Otilde -30
-KPX Acircumflex Q -30
-KPX Acircumflex T -120
-KPX Acircumflex Tcaron -120
-KPX Acircumflex Tcommaaccent -120
-KPX Acircumflex U -50
-KPX Acircumflex Uacute -50
-KPX Acircumflex Ucircumflex -50
-KPX Acircumflex Udieresis -50
-KPX Acircumflex Ugrave -50
-KPX Acircumflex Uhungarumlaut -50
-KPX Acircumflex Umacron -50
-KPX Acircumflex Uogonek -50
-KPX Acircumflex Uring -50
-KPX Acircumflex V -70
-KPX Acircumflex W -50
-KPX Acircumflex Y -100
-KPX Acircumflex Yacute -100
-KPX Acircumflex Ydieresis -100
-KPX Acircumflex u -30
-KPX Acircumflex uacute -30
-KPX Acircumflex ucircumflex -30
-KPX Acircumflex udieresis -30
-KPX Acircumflex ugrave -30
-KPX Acircumflex uhungarumlaut -30
-KPX Acircumflex umacron -30
-KPX Acircumflex uogonek -30
-KPX Acircumflex uring -30
-KPX Acircumflex v -40
-KPX Acircumflex w -40
-KPX Acircumflex y -40
-KPX Acircumflex yacute -40
-KPX Acircumflex ydieresis -40
-KPX Adieresis C -30
-KPX Adieresis Cacute -30
-KPX Adieresis Ccaron -30
-KPX Adieresis Ccedilla -30
-KPX Adieresis G -30
-KPX Adieresis Gbreve -30
-KPX Adieresis Gcommaaccent -30
-KPX Adieresis O -30
-KPX Adieresis Oacute -30
-KPX Adieresis Ocircumflex -30
-KPX Adieresis Odieresis -30
-KPX Adieresis Ograve -30
-KPX Adieresis Ohungarumlaut -30
-KPX Adieresis Omacron -30
-KPX Adieresis Oslash -30
-KPX Adieresis Otilde -30
-KPX Adieresis Q -30
-KPX Adieresis T -120
-KPX Adieresis Tcaron -120
-KPX Adieresis Tcommaaccent -120
-KPX Adieresis U -50
-KPX Adieresis Uacute -50
-KPX Adieresis Ucircumflex -50
-KPX Adieresis Udieresis -50
-KPX Adieresis Ugrave -50
-KPX Adieresis Uhungarumlaut -50
-KPX Adieresis Umacron -50
-KPX Adieresis Uogonek -50
-KPX Adieresis Uring -50
-KPX Adieresis V -70
-KPX Adieresis W -50
-KPX Adieresis Y -100
-KPX Adieresis Yacute -100
-KPX Adieresis Ydieresis -100
-KPX Adieresis u -30
-KPX Adieresis uacute -30
-KPX Adieresis ucircumflex -30
-KPX Adieresis udieresis -30
-KPX Adieresis ugrave -30
-KPX Adieresis uhungarumlaut -30
-KPX Adieresis umacron -30
-KPX Adieresis uogonek -30
-KPX Adieresis uring -30
-KPX Adieresis v -40
-KPX Adieresis w -40
-KPX Adieresis y -40
-KPX Adieresis yacute -40
-KPX Adieresis ydieresis -40
-KPX Agrave C -30
-KPX Agrave Cacute -30
-KPX Agrave Ccaron -30
-KPX Agrave Ccedilla -30
-KPX Agrave G -30
-KPX Agrave Gbreve -30
-KPX Agrave Gcommaaccent -30
-KPX Agrave O -30
-KPX Agrave Oacute -30
-KPX Agrave Ocircumflex -30
-KPX Agrave Odieresis -30
-KPX Agrave Ograve -30
-KPX Agrave Ohungarumlaut -30
-KPX Agrave Omacron -30
-KPX Agrave Oslash -30
-KPX Agrave Otilde -30
-KPX Agrave Q -30
-KPX Agrave T -120
-KPX Agrave Tcaron -120
-KPX Agrave Tcommaaccent -120
-KPX Agrave U -50
-KPX Agrave Uacute -50
-KPX Agrave Ucircumflex -50
-KPX Agrave Udieresis -50
-KPX Agrave Ugrave -50
-KPX Agrave Uhungarumlaut -50
-KPX Agrave Umacron -50
-KPX Agrave Uogonek -50
-KPX Agrave Uring -50
-KPX Agrave V -70
-KPX Agrave W -50
-KPX Agrave Y -100
-KPX Agrave Yacute -100
-KPX Agrave Ydieresis -100
-KPX Agrave u -30
-KPX Agrave uacute -30
-KPX Agrave ucircumflex -30
-KPX Agrave udieresis -30
-KPX Agrave ugrave -30
-KPX Agrave uhungarumlaut -30
-KPX Agrave umacron -30
-KPX Agrave uogonek -30
-KPX Agrave uring -30
-KPX Agrave v -40
-KPX Agrave w -40
-KPX Agrave y -40
-KPX Agrave yacute -40
-KPX Agrave ydieresis -40
-KPX Amacron C -30
-KPX Amacron Cacute -30
-KPX Amacron Ccaron -30
-KPX Amacron Ccedilla -30
-KPX Amacron G -30
-KPX Amacron Gbreve -30
-KPX Amacron Gcommaaccent -30
-KPX Amacron O -30
-KPX Amacron Oacute -30
-KPX Amacron Ocircumflex -30
-KPX Amacron Odieresis -30
-KPX Amacron Ograve -30
-KPX Amacron Ohungarumlaut -30
-KPX Amacron Omacron -30
-KPX Amacron Oslash -30
-KPX Amacron Otilde -30
-KPX Amacron Q -30
-KPX Amacron T -120
-KPX Amacron Tcaron -120
-KPX Amacron Tcommaaccent -120
-KPX Amacron U -50
-KPX Amacron Uacute -50
-KPX Amacron Ucircumflex -50
-KPX Amacron Udieresis -50
-KPX Amacron Ugrave -50
-KPX Amacron Uhungarumlaut -50
-KPX Amacron Umacron -50
-KPX Amacron Uogonek -50
-KPX Amacron Uring -50
-KPX Amacron V -70
-KPX Amacron W -50
-KPX Amacron Y -100
-KPX Amacron Yacute -100
-KPX Amacron Ydieresis -100
-KPX Amacron u -30
-KPX Amacron uacute -30
-KPX Amacron ucircumflex -30
-KPX Amacron udieresis -30
-KPX Amacron ugrave -30
-KPX Amacron uhungarumlaut -30
-KPX Amacron umacron -30
-KPX Amacron uogonek -30
-KPX Amacron uring -30
-KPX Amacron v -40
-KPX Amacron w -40
-KPX Amacron y -40
-KPX Amacron yacute -40
-KPX Amacron ydieresis -40
-KPX Aogonek C -30
-KPX Aogonek Cacute -30
-KPX Aogonek Ccaron -30
-KPX Aogonek Ccedilla -30
-KPX Aogonek G -30
-KPX Aogonek Gbreve -30
-KPX Aogonek Gcommaaccent -30
-KPX Aogonek O -30
-KPX Aogonek Oacute -30
-KPX Aogonek Ocircumflex -30
-KPX Aogonek Odieresis -30
-KPX Aogonek Ograve -30
-KPX Aogonek Ohungarumlaut -30
-KPX Aogonek Omacron -30
-KPX Aogonek Oslash -30
-KPX Aogonek Otilde -30
-KPX Aogonek Q -30
-KPX Aogonek T -120
-KPX Aogonek Tcaron -120
-KPX Aogonek Tcommaaccent -120
-KPX Aogonek U -50
-KPX Aogonek Uacute -50
-KPX Aogonek Ucircumflex -50
-KPX Aogonek Udieresis -50
-KPX Aogonek Ugrave -50
-KPX Aogonek Uhungarumlaut -50
-KPX Aogonek Umacron -50
-KPX Aogonek Uogonek -50
-KPX Aogonek Uring -50
-KPX Aogonek V -70
-KPX Aogonek W -50
-KPX Aogonek Y -100
-KPX Aogonek Yacute -100
-KPX Aogonek Ydieresis -100
-KPX Aogonek u -30
-KPX Aogonek uacute -30
-KPX Aogonek ucircumflex -30
-KPX Aogonek udieresis -30
-KPX Aogonek ugrave -30
-KPX Aogonek uhungarumlaut -30
-KPX Aogonek umacron -30
-KPX Aogonek uogonek -30
-KPX Aogonek uring -30
-KPX Aogonek v -40
-KPX Aogonek w -40
-KPX Aogonek y -40
-KPX Aogonek yacute -40
-KPX Aogonek ydieresis -40
-KPX Aring C -30
-KPX Aring Cacute -30
-KPX Aring Ccaron -30
-KPX Aring Ccedilla -30
-KPX Aring G -30
-KPX Aring Gbreve -30
-KPX Aring Gcommaaccent -30
-KPX Aring O -30
-KPX Aring Oacute -30
-KPX Aring Ocircumflex -30
-KPX Aring Odieresis -30
-KPX Aring Ograve -30
-KPX Aring Ohungarumlaut -30
-KPX Aring Omacron -30
-KPX Aring Oslash -30
-KPX Aring Otilde -30
-KPX Aring Q -30
-KPX Aring T -120
-KPX Aring Tcaron -120
-KPX Aring Tcommaaccent -120
-KPX Aring U -50
-KPX Aring Uacute -50
-KPX Aring Ucircumflex -50
-KPX Aring Udieresis -50
-KPX Aring Ugrave -50
-KPX Aring Uhungarumlaut -50
-KPX Aring Umacron -50
-KPX Aring Uogonek -50
-KPX Aring Uring -50
-KPX Aring V -70
-KPX Aring W -50
-KPX Aring Y -100
-KPX Aring Yacute -100
-KPX Aring Ydieresis -100
-KPX Aring u -30
-KPX Aring uacute -30
-KPX Aring ucircumflex -30
-KPX Aring udieresis -30
-KPX Aring ugrave -30
-KPX Aring uhungarumlaut -30
-KPX Aring umacron -30
-KPX Aring uogonek -30
-KPX Aring uring -30
-KPX Aring v -40
-KPX Aring w -40
-KPX Aring y -40
-KPX Aring yacute -40
-KPX Aring ydieresis -40
-KPX Atilde C -30
-KPX Atilde Cacute -30
-KPX Atilde Ccaron -30
-KPX Atilde Ccedilla -30
-KPX Atilde G -30
-KPX Atilde Gbreve -30
-KPX Atilde Gcommaaccent -30
-KPX Atilde O -30
-KPX Atilde Oacute -30
-KPX Atilde Ocircumflex -30
-KPX Atilde Odieresis -30
-KPX Atilde Ograve -30
-KPX Atilde Ohungarumlaut -30
-KPX Atilde Omacron -30
-KPX Atilde Oslash -30
-KPX Atilde Otilde -30
-KPX Atilde Q -30
-KPX Atilde T -120
-KPX Atilde Tcaron -120
-KPX Atilde Tcommaaccent -120
-KPX Atilde U -50
-KPX Atilde Uacute -50
-KPX Atilde Ucircumflex -50
-KPX Atilde Udieresis -50
-KPX Atilde Ugrave -50
-KPX Atilde Uhungarumlaut -50
-KPX Atilde Umacron -50
-KPX Atilde Uogonek -50
-KPX Atilde Uring -50
-KPX Atilde V -70
-KPX Atilde W -50
-KPX Atilde Y -100
-KPX Atilde Yacute -100
-KPX Atilde Ydieresis -100
-KPX Atilde u -30
-KPX Atilde uacute -30
-KPX Atilde ucircumflex -30
-KPX Atilde udieresis -30
-KPX Atilde ugrave -30
-KPX Atilde uhungarumlaut -30
-KPX Atilde umacron -30
-KPX Atilde uogonek -30
-KPX Atilde uring -30
-KPX Atilde v -40
-KPX Atilde w -40
-KPX Atilde y -40
-KPX Atilde yacute -40
-KPX Atilde ydieresis -40
-KPX B U -10
-KPX B Uacute -10
-KPX B Ucircumflex -10
-KPX B Udieresis -10
-KPX B Ugrave -10
-KPX B Uhungarumlaut -10
-KPX B Umacron -10
-KPX B Uogonek -10
-KPX B Uring -10
-KPX B comma -20
-KPX B period -20
-KPX C comma -30
-KPX C period -30
-KPX Cacute comma -30
-KPX Cacute period -30
-KPX Ccaron comma -30
-KPX Ccaron period -30
-KPX Ccedilla comma -30
-KPX Ccedilla period -30
-KPX D A -40
-KPX D Aacute -40
-KPX D Abreve -40
-KPX D Acircumflex -40
-KPX D Adieresis -40
-KPX D Agrave -40
-KPX D Amacron -40
-KPX D Aogonek -40
-KPX D Aring -40
-KPX D Atilde -40
-KPX D V -70
-KPX D W -40
-KPX D Y -90
-KPX D Yacute -90
-KPX D Ydieresis -90
-KPX D comma -70
-KPX D period -70
-KPX Dcaron A -40
-KPX Dcaron Aacute -40
-KPX Dcaron Abreve -40
-KPX Dcaron Acircumflex -40
-KPX Dcaron Adieresis -40
-KPX Dcaron Agrave -40
-KPX Dcaron Amacron -40
-KPX Dcaron Aogonek -40
-KPX Dcaron Aring -40
-KPX Dcaron Atilde -40
-KPX Dcaron V -70
-KPX Dcaron W -40
-KPX Dcaron Y -90
-KPX Dcaron Yacute -90
-KPX Dcaron Ydieresis -90
-KPX Dcaron comma -70
-KPX Dcaron period -70
-KPX Dcroat A -40
-KPX Dcroat Aacute -40
-KPX Dcroat Abreve -40
-KPX Dcroat Acircumflex -40
-KPX Dcroat Adieresis -40
-KPX Dcroat Agrave -40
-KPX Dcroat Amacron -40
-KPX Dcroat Aogonek -40
-KPX Dcroat Aring -40
-KPX Dcroat Atilde -40
-KPX Dcroat V -70
-KPX Dcroat W -40
-KPX Dcroat Y -90
-KPX Dcroat Yacute -90
-KPX Dcroat Ydieresis -90
-KPX Dcroat comma -70
-KPX Dcroat period -70
-KPX F A -80
-KPX F Aacute -80
-KPX F Abreve -80
-KPX F Acircumflex -80
-KPX F Adieresis -80
-KPX F Agrave -80
-KPX F Amacron -80
-KPX F Aogonek -80
-KPX F Aring -80
-KPX F Atilde -80
-KPX F a -50
-KPX F aacute -50
-KPX F abreve -50
-KPX F acircumflex -50
-KPX F adieresis -50
-KPX F agrave -50
-KPX F amacron -50
-KPX F aogonek -50
-KPX F aring -50
-KPX F atilde -50
-KPX F comma -150
-KPX F e -30
-KPX F eacute -30
-KPX F ecaron -30
-KPX F ecircumflex -30
-KPX F edieresis -30
-KPX F edotaccent -30
-KPX F egrave -30
-KPX F emacron -30
-KPX F eogonek -30
-KPX F o -30
-KPX F oacute -30
-KPX F ocircumflex -30
-KPX F odieresis -30
-KPX F ograve -30
-KPX F ohungarumlaut -30
-KPX F omacron -30
-KPX F oslash -30
-KPX F otilde -30
-KPX F period -150
-KPX F r -45
-KPX F racute -45
-KPX F rcaron -45
-KPX F rcommaaccent -45
-KPX J A -20
-KPX J Aacute -20
-KPX J Abreve -20
-KPX J Acircumflex -20
-KPX J Adieresis -20
-KPX J Agrave -20
-KPX J Amacron -20
-KPX J Aogonek -20
-KPX J Aring -20
-KPX J Atilde -20
-KPX J a -20
-KPX J aacute -20
-KPX J abreve -20
-KPX J acircumflex -20
-KPX J adieresis -20
-KPX J agrave -20
-KPX J amacron -20
-KPX J aogonek -20
-KPX J aring -20
-KPX J atilde -20
-KPX J comma -30
-KPX J period -30
-KPX J u -20
-KPX J uacute -20
-KPX J ucircumflex -20
-KPX J udieresis -20
-KPX J ugrave -20
-KPX J uhungarumlaut -20
-KPX J umacron -20
-KPX J uogonek -20
-KPX J uring -20
-KPX K O -50
-KPX K Oacute -50
-KPX K Ocircumflex -50
-KPX K Odieresis -50
-KPX K Ograve -50
-KPX K Ohungarumlaut -50
-KPX K Omacron -50
-KPX K Oslash -50
-KPX K Otilde -50
-KPX K e -40
-KPX K eacute -40
-KPX K ecaron -40
-KPX K ecircumflex -40
-KPX K edieresis -40
-KPX K edotaccent -40
-KPX K egrave -40
-KPX K emacron -40
-KPX K eogonek -40
-KPX K o -40
-KPX K oacute -40
-KPX K ocircumflex -40
-KPX K odieresis -40
-KPX K ograve -40
-KPX K ohungarumlaut -40
-KPX K omacron -40
-KPX K oslash -40
-KPX K otilde -40
-KPX K u -30
-KPX K uacute -30
-KPX K ucircumflex -30
-KPX K udieresis -30
-KPX K ugrave -30
-KPX K uhungarumlaut -30
-KPX K umacron -30
-KPX K uogonek -30
-KPX K uring -30
-KPX K y -50
-KPX K yacute -50
-KPX K ydieresis -50
-KPX Kcommaaccent O -50
-KPX Kcommaaccent Oacute -50
-KPX Kcommaaccent Ocircumflex -50
-KPX Kcommaaccent Odieresis -50
-KPX Kcommaaccent Ograve -50
-KPX Kcommaaccent Ohungarumlaut -50
-KPX Kcommaaccent Omacron -50
-KPX Kcommaaccent Oslash -50
-KPX Kcommaaccent Otilde -50
-KPX Kcommaaccent e -40
-KPX Kcommaaccent eacute -40
-KPX Kcommaaccent ecaron -40
-KPX Kcommaaccent ecircumflex -40
-KPX Kcommaaccent edieresis -40
-KPX Kcommaaccent edotaccent -40
-KPX Kcommaaccent egrave -40
-KPX Kcommaaccent emacron -40
-KPX Kcommaaccent eogonek -40
-KPX Kcommaaccent o -40
-KPX Kcommaaccent oacute -40
-KPX Kcommaaccent ocircumflex -40
-KPX Kcommaaccent odieresis -40
-KPX Kcommaaccent ograve -40
-KPX Kcommaaccent ohungarumlaut -40
-KPX Kcommaaccent omacron -40
-KPX Kcommaaccent oslash -40
-KPX Kcommaaccent otilde -40
-KPX Kcommaaccent u -30
-KPX Kcommaaccent uacute -30
-KPX Kcommaaccent ucircumflex -30
-KPX Kcommaaccent udieresis -30
-KPX Kcommaaccent ugrave -30
-KPX Kcommaaccent uhungarumlaut -30
-KPX Kcommaaccent umacron -30
-KPX Kcommaaccent uogonek -30
-KPX Kcommaaccent uring -30
-KPX Kcommaaccent y -50
-KPX Kcommaaccent yacute -50
-KPX Kcommaaccent ydieresis -50
-KPX L T -110
-KPX L Tcaron -110
-KPX L Tcommaaccent -110
-KPX L V -110
-KPX L W -70
-KPX L Y -140
-KPX L Yacute -140
-KPX L Ydieresis -140
-KPX L quotedblright -140
-KPX L quoteright -160
-KPX L y -30
-KPX L yacute -30
-KPX L ydieresis -30
-KPX Lacute T -110
-KPX Lacute Tcaron -110
-KPX Lacute Tcommaaccent -110
-KPX Lacute V -110
-KPX Lacute W -70
-KPX Lacute Y -140
-KPX Lacute Yacute -140
-KPX Lacute Ydieresis -140
-KPX Lacute quotedblright -140
-KPX Lacute quoteright -160
-KPX Lacute y -30
-KPX Lacute yacute -30
-KPX Lacute ydieresis -30
-KPX Lcaron T -110
-KPX Lcaron Tcaron -110
-KPX Lcaron Tcommaaccent -110
-KPX Lcaron V -110
-KPX Lcaron W -70
-KPX Lcaron Y -140
-KPX Lcaron Yacute -140
-KPX Lcaron Ydieresis -140
-KPX Lcaron quotedblright -140
-KPX Lcaron quoteright -160
-KPX Lcaron y -30
-KPX Lcaron yacute -30
-KPX Lcaron ydieresis -30
-KPX Lcommaaccent T -110
-KPX Lcommaaccent Tcaron -110
-KPX Lcommaaccent Tcommaaccent -110
-KPX Lcommaaccent V -110
-KPX Lcommaaccent W -70
-KPX Lcommaaccent Y -140
-KPX Lcommaaccent Yacute -140
-KPX Lcommaaccent Ydieresis -140
-KPX Lcommaaccent quotedblright -140
-KPX Lcommaaccent quoteright -160
-KPX Lcommaaccent y -30
-KPX Lcommaaccent yacute -30
-KPX Lcommaaccent ydieresis -30
-KPX Lslash T -110
-KPX Lslash Tcaron -110
-KPX Lslash Tcommaaccent -110
-KPX Lslash V -110
-KPX Lslash W -70
-KPX Lslash Y -140
-KPX Lslash Yacute -140
-KPX Lslash Ydieresis -140
-KPX Lslash quotedblright -140
-KPX Lslash quoteright -160
-KPX Lslash y -30
-KPX Lslash yacute -30
-KPX Lslash ydieresis -30
-KPX O A -20
-KPX O Aacute -20
-KPX O Abreve -20
-KPX O Acircumflex -20
-KPX O Adieresis -20
-KPX O Agrave -20
-KPX O Amacron -20
-KPX O Aogonek -20
-KPX O Aring -20
-KPX O Atilde -20
-KPX O T -40
-KPX O Tcaron -40
-KPX O Tcommaaccent -40
-KPX O V -50
-KPX O W -30
-KPX O X -60
-KPX O Y -70
-KPX O Yacute -70
-KPX O Ydieresis -70
-KPX O comma -40
-KPX O period -40
-KPX Oacute A -20
-KPX Oacute Aacute -20
-KPX Oacute Abreve -20
-KPX Oacute Acircumflex -20
-KPX Oacute Adieresis -20
-KPX Oacute Agrave -20
-KPX Oacute Amacron -20
-KPX Oacute Aogonek -20
-KPX Oacute Aring -20
-KPX Oacute Atilde -20
-KPX Oacute T -40
-KPX Oacute Tcaron -40
-KPX Oacute Tcommaaccent -40
-KPX Oacute V -50
-KPX Oacute W -30
-KPX Oacute X -60
-KPX Oacute Y -70
-KPX Oacute Yacute -70
-KPX Oacute Ydieresis -70
-KPX Oacute comma -40
-KPX Oacute period -40
-KPX Ocircumflex A -20
-KPX Ocircumflex Aacute -20
-KPX Ocircumflex Abreve -20
-KPX Ocircumflex Acircumflex -20
-KPX Ocircumflex Adieresis -20
-KPX Ocircumflex Agrave -20
-KPX Ocircumflex Amacron -20
-KPX Ocircumflex Aogonek -20
-KPX Ocircumflex Aring -20
-KPX Ocircumflex Atilde -20
-KPX Ocircumflex T -40
-KPX Ocircumflex Tcaron -40
-KPX Ocircumflex Tcommaaccent -40
-KPX Ocircumflex V -50
-KPX Ocircumflex W -30
-KPX Ocircumflex X -60
-KPX Ocircumflex Y -70
-KPX Ocircumflex Yacute -70
-KPX Ocircumflex Ydieresis -70
-KPX Ocircumflex comma -40
-KPX Ocircumflex period -40
-KPX Odieresis A -20
-KPX Odieresis Aacute -20
-KPX Odieresis Abreve -20
-KPX Odieresis Acircumflex -20
-KPX Odieresis Adieresis -20
-KPX Odieresis Agrave -20
-KPX Odieresis Amacron -20
-KPX Odieresis Aogonek -20
-KPX Odieresis Aring -20
-KPX Odieresis Atilde -20
-KPX Odieresis T -40
-KPX Odieresis Tcaron -40
-KPX Odieresis Tcommaaccent -40
-KPX Odieresis V -50
-KPX Odieresis W -30
-KPX Odieresis X -60
-KPX Odieresis Y -70
-KPX Odieresis Yacute -70
-KPX Odieresis Ydieresis -70
-KPX Odieresis comma -40
-KPX Odieresis period -40
-KPX Ograve A -20
-KPX Ograve Aacute -20
-KPX Ograve Abreve -20
-KPX Ograve Acircumflex -20
-KPX Ograve Adieresis -20
-KPX Ograve Agrave -20
-KPX Ograve Amacron -20
-KPX Ograve Aogonek -20
-KPX Ograve Aring -20
-KPX Ograve Atilde -20
-KPX Ograve T -40
-KPX Ograve Tcaron -40
-KPX Ograve Tcommaaccent -40
-KPX Ograve V -50
-KPX Ograve W -30
-KPX Ograve X -60
-KPX Ograve Y -70
-KPX Ograve Yacute -70
-KPX Ograve Ydieresis -70
-KPX Ograve comma -40
-KPX Ograve period -40
-KPX Ohungarumlaut A -20
-KPX Ohungarumlaut Aacute -20
-KPX Ohungarumlaut Abreve -20
-KPX Ohungarumlaut Acircumflex -20
-KPX Ohungarumlaut Adieresis -20
-KPX Ohungarumlaut Agrave -20
-KPX Ohungarumlaut Amacron -20
-KPX Ohungarumlaut Aogonek -20
-KPX Ohungarumlaut Aring -20
-KPX Ohungarumlaut Atilde -20
-KPX Ohungarumlaut T -40
-KPX Ohungarumlaut Tcaron -40
-KPX Ohungarumlaut Tcommaaccent -40
-KPX Ohungarumlaut V -50
-KPX Ohungarumlaut W -30
-KPX Ohungarumlaut X -60
-KPX Ohungarumlaut Y -70
-KPX Ohungarumlaut Yacute -70
-KPX Ohungarumlaut Ydieresis -70
-KPX Ohungarumlaut comma -40
-KPX Ohungarumlaut period -40
-KPX Omacron A -20
-KPX Omacron Aacute -20
-KPX Omacron Abreve -20
-KPX Omacron Acircumflex -20
-KPX Omacron Adieresis -20
-KPX Omacron Agrave -20
-KPX Omacron Amacron -20
-KPX Omacron Aogonek -20
-KPX Omacron Aring -20
-KPX Omacron Atilde -20
-KPX Omacron T -40
-KPX Omacron Tcaron -40
-KPX Omacron Tcommaaccent -40
-KPX Omacron V -50
-KPX Omacron W -30
-KPX Omacron X -60
-KPX Omacron Y -70
-KPX Omacron Yacute -70
-KPX Omacron Ydieresis -70
-KPX Omacron comma -40
-KPX Omacron period -40
-KPX Oslash A -20
-KPX Oslash Aacute -20
-KPX Oslash Abreve -20
-KPX Oslash Acircumflex -20
-KPX Oslash Adieresis -20
-KPX Oslash Agrave -20
-KPX Oslash Amacron -20
-KPX Oslash Aogonek -20
-KPX Oslash Aring -20
-KPX Oslash Atilde -20
-KPX Oslash T -40
-KPX Oslash Tcaron -40
-KPX Oslash Tcommaaccent -40
-KPX Oslash V -50
-KPX Oslash W -30
-KPX Oslash X -60
-KPX Oslash Y -70
-KPX Oslash Yacute -70
-KPX Oslash Ydieresis -70
-KPX Oslash comma -40
-KPX Oslash period -40
-KPX Otilde A -20
-KPX Otilde Aacute -20
-KPX Otilde Abreve -20
-KPX Otilde Acircumflex -20
-KPX Otilde Adieresis -20
-KPX Otilde Agrave -20
-KPX Otilde Amacron -20
-KPX Otilde Aogonek -20
-KPX Otilde Aring -20
-KPX Otilde Atilde -20
-KPX Otilde T -40
-KPX Otilde Tcaron -40
-KPX Otilde Tcommaaccent -40
-KPX Otilde V -50
-KPX Otilde W -30
-KPX Otilde X -60
-KPX Otilde Y -70
-KPX Otilde Yacute -70
-KPX Otilde Ydieresis -70
-KPX Otilde comma -40
-KPX Otilde period -40
-KPX P A -120
-KPX P Aacute -120
-KPX P Abreve -120
-KPX P Acircumflex -120
-KPX P Adieresis -120
-KPX P Agrave -120
-KPX P Amacron -120
-KPX P Aogonek -120
-KPX P Aring -120
-KPX P Atilde -120
-KPX P a -40
-KPX P aacute -40
-KPX P abreve -40
-KPX P acircumflex -40
-KPX P adieresis -40
-KPX P agrave -40
-KPX P amacron -40
-KPX P aogonek -40
-KPX P aring -40
-KPX P atilde -40
-KPX P comma -180
-KPX P e -50
-KPX P eacute -50
-KPX P ecaron -50
-KPX P ecircumflex -50
-KPX P edieresis -50
-KPX P edotaccent -50
-KPX P egrave -50
-KPX P emacron -50
-KPX P eogonek -50
-KPX P o -50
-KPX P oacute -50
-KPX P ocircumflex -50
-KPX P odieresis -50
-KPX P ograve -50
-KPX P ohungarumlaut -50
-KPX P omacron -50
-KPX P oslash -50
-KPX P otilde -50
-KPX P period -180
-KPX Q U -10
-KPX Q Uacute -10
-KPX Q Ucircumflex -10
-KPX Q Udieresis -10
-KPX Q Ugrave -10
-KPX Q Uhungarumlaut -10
-KPX Q Umacron -10
-KPX Q Uogonek -10
-KPX Q Uring -10
-KPX R O -20
-KPX R Oacute -20
-KPX R Ocircumflex -20
-KPX R Odieresis -20
-KPX R Ograve -20
-KPX R Ohungarumlaut -20
-KPX R Omacron -20
-KPX R Oslash -20
-KPX R Otilde -20
-KPX R T -30
-KPX R Tcaron -30
-KPX R Tcommaaccent -30
-KPX R U -40
-KPX R Uacute -40
-KPX R Ucircumflex -40
-KPX R Udieresis -40
-KPX R Ugrave -40
-KPX R Uhungarumlaut -40
-KPX R Umacron -40
-KPX R Uogonek -40
-KPX R Uring -40
-KPX R V -50
-KPX R W -30
-KPX R Y -50
-KPX R Yacute -50
-KPX R Ydieresis -50
-KPX Racute O -20
-KPX Racute Oacute -20
-KPX Racute Ocircumflex -20
-KPX Racute Odieresis -20
-KPX Racute Ograve -20
-KPX Racute Ohungarumlaut -20
-KPX Racute Omacron -20
-KPX Racute Oslash -20
-KPX Racute Otilde -20
-KPX Racute T -30
-KPX Racute Tcaron -30
-KPX Racute Tcommaaccent -30
-KPX Racute U -40
-KPX Racute Uacute -40
-KPX Racute Ucircumflex -40
-KPX Racute Udieresis -40
-KPX Racute Ugrave -40
-KPX Racute Uhungarumlaut -40
-KPX Racute Umacron -40
-KPX Racute Uogonek -40
-KPX Racute Uring -40
-KPX Racute V -50
-KPX Racute W -30
-KPX Racute Y -50
-KPX Racute Yacute -50
-KPX Racute Ydieresis -50
-KPX Rcaron O -20
-KPX Rcaron Oacute -20
-KPX Rcaron Ocircumflex -20
-KPX Rcaron Odieresis -20
-KPX Rcaron Ograve -20
-KPX Rcaron Ohungarumlaut -20
-KPX Rcaron Omacron -20
-KPX Rcaron Oslash -20
-KPX Rcaron Otilde -20
-KPX Rcaron T -30
-KPX Rcaron Tcaron -30
-KPX Rcaron Tcommaaccent -30
-KPX Rcaron U -40
-KPX Rcaron Uacute -40
-KPX Rcaron Ucircumflex -40
-KPX Rcaron Udieresis -40
-KPX Rcaron Ugrave -40
-KPX Rcaron Uhungarumlaut -40
-KPX Rcaron Umacron -40
-KPX Rcaron Uogonek -40
-KPX Rcaron Uring -40
-KPX Rcaron V -50
-KPX Rcaron W -30
-KPX Rcaron Y -50
-KPX Rcaron Yacute -50
-KPX Rcaron Ydieresis -50
-KPX Rcommaaccent O -20
-KPX Rcommaaccent Oacute -20
-KPX Rcommaaccent Ocircumflex -20
-KPX Rcommaaccent Odieresis -20
-KPX Rcommaaccent Ograve -20
-KPX Rcommaaccent Ohungarumlaut -20
-KPX Rcommaaccent Omacron -20
-KPX Rcommaaccent Oslash -20
-KPX Rcommaaccent Otilde -20
-KPX Rcommaaccent T -30
-KPX Rcommaaccent Tcaron -30
-KPX Rcommaaccent Tcommaaccent -30
-KPX Rcommaaccent U -40
-KPX Rcommaaccent Uacute -40
-KPX Rcommaaccent Ucircumflex -40
-KPX Rcommaaccent Udieresis -40
-KPX Rcommaaccent Ugrave -40
-KPX Rcommaaccent Uhungarumlaut -40
-KPX Rcommaaccent Umacron -40
-KPX Rcommaaccent Uogonek -40
-KPX Rcommaaccent Uring -40
-KPX Rcommaaccent V -50
-KPX Rcommaaccent W -30
-KPX Rcommaaccent Y -50
-KPX Rcommaaccent Yacute -50
-KPX Rcommaaccent Ydieresis -50
-KPX S comma -20
-KPX S period -20
-KPX Sacute comma -20
-KPX Sacute period -20
-KPX Scaron comma -20
-KPX Scaron period -20
-KPX Scedilla comma -20
-KPX Scedilla period -20
-KPX Scommaaccent comma -20
-KPX Scommaaccent period -20
-KPX T A -120
-KPX T Aacute -120
-KPX T Abreve -120
-KPX T Acircumflex -120
-KPX T Adieresis -120
-KPX T Agrave -120
-KPX T Amacron -120
-KPX T Aogonek -120
-KPX T Aring -120
-KPX T Atilde -120
-KPX T O -40
-KPX T Oacute -40
-KPX T Ocircumflex -40
-KPX T Odieresis -40
-KPX T Ograve -40
-KPX T Ohungarumlaut -40
-KPX T Omacron -40
-KPX T Oslash -40
-KPX T Otilde -40
-KPX T a -120
-KPX T aacute -120
-KPX T abreve -60
-KPX T acircumflex -120
-KPX T adieresis -120
-KPX T agrave -120
-KPX T amacron -60
-KPX T aogonek -120
-KPX T aring -120
-KPX T atilde -60
-KPX T colon -20
-KPX T comma -120
-KPX T e -120
-KPX T eacute -120
-KPX T ecaron -120
-KPX T ecircumflex -120
-KPX T edieresis -120
-KPX T edotaccent -120
-KPX T egrave -60
-KPX T emacron -60
-KPX T eogonek -120
-KPX T hyphen -140
-KPX T o -120
-KPX T oacute -120
-KPX T ocircumflex -120
-KPX T odieresis -120
-KPX T ograve -120
-KPX T ohungarumlaut -120
-KPX T omacron -60
-KPX T oslash -120
-KPX T otilde -60
-KPX T period -120
-KPX T r -120
-KPX T racute -120
-KPX T rcaron -120
-KPX T rcommaaccent -120
-KPX T semicolon -20
-KPX T u -120
-KPX T uacute -120
-KPX T ucircumflex -120
-KPX T udieresis -120
-KPX T ugrave -120
-KPX T uhungarumlaut -120
-KPX T umacron -60
-KPX T uogonek -120
-KPX T uring -120
-KPX T w -120
-KPX T y -120
-KPX T yacute -120
-KPX T ydieresis -60
-KPX Tcaron A -120
-KPX Tcaron Aacute -120
-KPX Tcaron Abreve -120
-KPX Tcaron Acircumflex -120
-KPX Tcaron Adieresis -120
-KPX Tcaron Agrave -120
-KPX Tcaron Amacron -120
-KPX Tcaron Aogonek -120
-KPX Tcaron Aring -120
-KPX Tcaron Atilde -120
-KPX Tcaron O -40
-KPX Tcaron Oacute -40
-KPX Tcaron Ocircumflex -40
-KPX Tcaron Odieresis -40
-KPX Tcaron Ograve -40
-KPX Tcaron Ohungarumlaut -40
-KPX Tcaron Omacron -40
-KPX Tcaron Oslash -40
-KPX Tcaron Otilde -40
-KPX Tcaron a -120
-KPX Tcaron aacute -120
-KPX Tcaron abreve -60
-KPX Tcaron acircumflex -120
-KPX Tcaron adieresis -120
-KPX Tcaron agrave -120
-KPX Tcaron amacron -60
-KPX Tcaron aogonek -120
-KPX Tcaron aring -120
-KPX Tcaron atilde -60
-KPX Tcaron colon -20
-KPX Tcaron comma -120
-KPX Tcaron e -120
-KPX Tcaron eacute -120
-KPX Tcaron ecaron -120
-KPX Tcaron ecircumflex -120
-KPX Tcaron edieresis -120
-KPX Tcaron edotaccent -120
-KPX Tcaron egrave -60
-KPX Tcaron emacron -60
-KPX Tcaron eogonek -120
-KPX Tcaron hyphen -140
-KPX Tcaron o -120
-KPX Tcaron oacute -120
-KPX Tcaron ocircumflex -120
-KPX Tcaron odieresis -120
-KPX Tcaron ograve -120
-KPX Tcaron ohungarumlaut -120
-KPX Tcaron omacron -60
-KPX Tcaron oslash -120
-KPX Tcaron otilde -60
-KPX Tcaron period -120
-KPX Tcaron r -120
-KPX Tcaron racute -120
-KPX Tcaron rcaron -120
-KPX Tcaron rcommaaccent -120
-KPX Tcaron semicolon -20
-KPX Tcaron u -120
-KPX Tcaron uacute -120
-KPX Tcaron ucircumflex -120
-KPX Tcaron udieresis -120
-KPX Tcaron ugrave -120
-KPX Tcaron uhungarumlaut -120
-KPX Tcaron umacron -60
-KPX Tcaron uogonek -120
-KPX Tcaron uring -120
-KPX Tcaron w -120
-KPX Tcaron y -120
-KPX Tcaron yacute -120
-KPX Tcaron ydieresis -60
-KPX Tcommaaccent A -120
-KPX Tcommaaccent Aacute -120
-KPX Tcommaaccent Abreve -120
-KPX Tcommaaccent Acircumflex -120
-KPX Tcommaaccent Adieresis -120
-KPX Tcommaaccent Agrave -120
-KPX Tcommaaccent Amacron -120
-KPX Tcommaaccent Aogonek -120
-KPX Tcommaaccent Aring -120
-KPX Tcommaaccent Atilde -120
-KPX Tcommaaccent O -40
-KPX Tcommaaccent Oacute -40
-KPX Tcommaaccent Ocircumflex -40
-KPX Tcommaaccent Odieresis -40
-KPX Tcommaaccent Ograve -40
-KPX Tcommaaccent Ohungarumlaut -40
-KPX Tcommaaccent Omacron -40
-KPX Tcommaaccent Oslash -40
-KPX Tcommaaccent Otilde -40
-KPX Tcommaaccent a -120
-KPX Tcommaaccent aacute -120
-KPX Tcommaaccent abreve -60
-KPX Tcommaaccent acircumflex -120
-KPX Tcommaaccent adieresis -120
-KPX Tcommaaccent agrave -120
-KPX Tcommaaccent amacron -60
-KPX Tcommaaccent aogonek -120
-KPX Tcommaaccent aring -120
-KPX Tcommaaccent atilde -60
-KPX Tcommaaccent colon -20
-KPX Tcommaaccent comma -120
-KPX Tcommaaccent e -120
-KPX Tcommaaccent eacute -120
-KPX Tcommaaccent ecaron -120
-KPX Tcommaaccent ecircumflex -120
-KPX Tcommaaccent edieresis -120
-KPX Tcommaaccent edotaccent -120
-KPX Tcommaaccent egrave -60
-KPX Tcommaaccent emacron -60
-KPX Tcommaaccent eogonek -120
-KPX Tcommaaccent hyphen -140
-KPX Tcommaaccent o -120
-KPX Tcommaaccent oacute -120
-KPX Tcommaaccent ocircumflex -120
-KPX Tcommaaccent odieresis -120
-KPX Tcommaaccent ograve -120
-KPX Tcommaaccent ohungarumlaut -120
-KPX Tcommaaccent omacron -60
-KPX Tcommaaccent oslash -120
-KPX Tcommaaccent otilde -60
-KPX Tcommaaccent period -120
-KPX Tcommaaccent r -120
-KPX Tcommaaccent racute -120
-KPX Tcommaaccent rcaron -120
-KPX Tcommaaccent rcommaaccent -120
-KPX Tcommaaccent semicolon -20
-KPX Tcommaaccent u -120
-KPX Tcommaaccent uacute -120
-KPX Tcommaaccent ucircumflex -120
-KPX Tcommaaccent udieresis -120
-KPX Tcommaaccent ugrave -120
-KPX Tcommaaccent uhungarumlaut -120
-KPX Tcommaaccent umacron -60
-KPX Tcommaaccent uogonek -120
-KPX Tcommaaccent uring -120
-KPX Tcommaaccent w -120
-KPX Tcommaaccent y -120
-KPX Tcommaaccent yacute -120
-KPX Tcommaaccent ydieresis -60
-KPX U A -40
-KPX U Aacute -40
-KPX U Abreve -40
-KPX U Acircumflex -40
-KPX U Adieresis -40
-KPX U Agrave -40
-KPX U Amacron -40
-KPX U Aogonek -40
-KPX U Aring -40
-KPX U Atilde -40
-KPX U comma -40
-KPX U period -40
-KPX Uacute A -40
-KPX Uacute Aacute -40
-KPX Uacute Abreve -40
-KPX Uacute Acircumflex -40
-KPX Uacute Adieresis -40
-KPX Uacute Agrave -40
-KPX Uacute Amacron -40
-KPX Uacute Aogonek -40
-KPX Uacute Aring -40
-KPX Uacute Atilde -40
-KPX Uacute comma -40
-KPX Uacute period -40
-KPX Ucircumflex A -40
-KPX Ucircumflex Aacute -40
-KPX Ucircumflex Abreve -40
-KPX Ucircumflex Acircumflex -40
-KPX Ucircumflex Adieresis -40
-KPX Ucircumflex Agrave -40
-KPX Ucircumflex Amacron -40
-KPX Ucircumflex Aogonek -40
-KPX Ucircumflex Aring -40
-KPX Ucircumflex Atilde -40
-KPX Ucircumflex comma -40
-KPX Ucircumflex period -40
-KPX Udieresis A -40
-KPX Udieresis Aacute -40
-KPX Udieresis Abreve -40
-KPX Udieresis Acircumflex -40
-KPX Udieresis Adieresis -40
-KPX Udieresis Agrave -40
-KPX Udieresis Amacron -40
-KPX Udieresis Aogonek -40
-KPX Udieresis Aring -40
-KPX Udieresis Atilde -40
-KPX Udieresis comma -40
-KPX Udieresis period -40
-KPX Ugrave A -40
-KPX Ugrave Aacute -40
-KPX Ugrave Abreve -40
-KPX Ugrave Acircumflex -40
-KPX Ugrave Adieresis -40
-KPX Ugrave Agrave -40
-KPX Ugrave Amacron -40
-KPX Ugrave Aogonek -40
-KPX Ugrave Aring -40
-KPX Ugrave Atilde -40
-KPX Ugrave comma -40
-KPX Ugrave period -40
-KPX Uhungarumlaut A -40
-KPX Uhungarumlaut Aacute -40
-KPX Uhungarumlaut Abreve -40
-KPX Uhungarumlaut Acircumflex -40
-KPX Uhungarumlaut Adieresis -40
-KPX Uhungarumlaut Agrave -40
-KPX Uhungarumlaut Amacron -40
-KPX Uhungarumlaut Aogonek -40
-KPX Uhungarumlaut Aring -40
-KPX Uhungarumlaut Atilde -40
-KPX Uhungarumlaut comma -40
-KPX Uhungarumlaut period -40
-KPX Umacron A -40
-KPX Umacron Aacute -40
-KPX Umacron Abreve -40
-KPX Umacron Acircumflex -40
-KPX Umacron Adieresis -40
-KPX Umacron Agrave -40
-KPX Umacron Amacron -40
-KPX Umacron Aogonek -40
-KPX Umacron Aring -40
-KPX Umacron Atilde -40
-KPX Umacron comma -40
-KPX Umacron period -40
-KPX Uogonek A -40
-KPX Uogonek Aacute -40
-KPX Uogonek Abreve -40
-KPX Uogonek Acircumflex -40
-KPX Uogonek Adieresis -40
-KPX Uogonek Agrave -40
-KPX Uogonek Amacron -40
-KPX Uogonek Aogonek -40
-KPX Uogonek Aring -40
-KPX Uogonek Atilde -40
-KPX Uogonek comma -40
-KPX Uogonek period -40
-KPX Uring A -40
-KPX Uring Aacute -40
-KPX Uring Abreve -40
-KPX Uring Acircumflex -40
-KPX Uring Adieresis -40
-KPX Uring Agrave -40
-KPX Uring Amacron -40
-KPX Uring Aogonek -40
-KPX Uring Aring -40
-KPX Uring Atilde -40
-KPX Uring comma -40
-KPX Uring period -40
-KPX V A -80
-KPX V Aacute -80
-KPX V Abreve -80
-KPX V Acircumflex -80
-KPX V Adieresis -80
-KPX V Agrave -80
-KPX V Amacron -80
-KPX V Aogonek -80
-KPX V Aring -80
-KPX V Atilde -80
-KPX V G -40
-KPX V Gbreve -40
-KPX V Gcommaaccent -40
-KPX V O -40
-KPX V Oacute -40
-KPX V Ocircumflex -40
-KPX V Odieresis -40
-KPX V Ograve -40
-KPX V Ohungarumlaut -40
-KPX V Omacron -40
-KPX V Oslash -40
-KPX V Otilde -40
-KPX V a -70
-KPX V aacute -70
-KPX V abreve -70
-KPX V acircumflex -70
-KPX V adieresis -70
-KPX V agrave -70
-KPX V amacron -70
-KPX V aogonek -70
-KPX V aring -70
-KPX V atilde -70
-KPX V colon -40
-KPX V comma -125
-KPX V e -80
-KPX V eacute -80
-KPX V ecaron -80
-KPX V ecircumflex -80
-KPX V edieresis -80
-KPX V edotaccent -80
-KPX V egrave -80
-KPX V emacron -80
-KPX V eogonek -80
-KPX V hyphen -80
-KPX V o -80
-KPX V oacute -80
-KPX V ocircumflex -80
-KPX V odieresis -80
-KPX V ograve -80
-KPX V ohungarumlaut -80
-KPX V omacron -80
-KPX V oslash -80
-KPX V otilde -80
-KPX V period -125
-KPX V semicolon -40
-KPX V u -70
-KPX V uacute -70
-KPX V ucircumflex -70
-KPX V udieresis -70
-KPX V ugrave -70
-KPX V uhungarumlaut -70
-KPX V umacron -70
-KPX V uogonek -70
-KPX V uring -70
-KPX W A -50
-KPX W Aacute -50
-KPX W Abreve -50
-KPX W Acircumflex -50
-KPX W Adieresis -50
-KPX W Agrave -50
-KPX W Amacron -50
-KPX W Aogonek -50
-KPX W Aring -50
-KPX W Atilde -50
-KPX W O -20
-KPX W Oacute -20
-KPX W Ocircumflex -20
-KPX W Odieresis -20
-KPX W Ograve -20
-KPX W Ohungarumlaut -20
-KPX W Omacron -20
-KPX W Oslash -20
-KPX W Otilde -20
-KPX W a -40
-KPX W aacute -40
-KPX W abreve -40
-KPX W acircumflex -40
-KPX W adieresis -40
-KPX W agrave -40
-KPX W amacron -40
-KPX W aogonek -40
-KPX W aring -40
-KPX W atilde -40
-KPX W comma -80
-KPX W e -30
-KPX W eacute -30
-KPX W ecaron -30
-KPX W ecircumflex -30
-KPX W edieresis -30
-KPX W edotaccent -30
-KPX W egrave -30
-KPX W emacron -30
-KPX W eogonek -30
-KPX W hyphen -40
-KPX W o -30
-KPX W oacute -30
-KPX W ocircumflex -30
-KPX W odieresis -30
-KPX W ograve -30
-KPX W ohungarumlaut -30
-KPX W omacron -30
-KPX W oslash -30
-KPX W otilde -30
-KPX W period -80
-KPX W u -30
-KPX W uacute -30
-KPX W ucircumflex -30
-KPX W udieresis -30
-KPX W ugrave -30
-KPX W uhungarumlaut -30
-KPX W umacron -30
-KPX W uogonek -30
-KPX W uring -30
-KPX W y -20
-KPX W yacute -20
-KPX W ydieresis -20
-KPX Y A -110
-KPX Y Aacute -110
-KPX Y Abreve -110
-KPX Y Acircumflex -110
-KPX Y Adieresis -110
-KPX Y Agrave -110
-KPX Y Amacron -110
-KPX Y Aogonek -110
-KPX Y Aring -110
-KPX Y Atilde -110
-KPX Y O -85
-KPX Y Oacute -85
-KPX Y Ocircumflex -85
-KPX Y Odieresis -85
-KPX Y Ograve -85
-KPX Y Ohungarumlaut -85
-KPX Y Omacron -85
-KPX Y Oslash -85
-KPX Y Otilde -85
-KPX Y a -140
-KPX Y aacute -140
-KPX Y abreve -70
-KPX Y acircumflex -140
-KPX Y adieresis -140
-KPX Y agrave -140
-KPX Y amacron -70
-KPX Y aogonek -140
-KPX Y aring -140
-KPX Y atilde -140
-KPX Y colon -60
-KPX Y comma -140
-KPX Y e -140
-KPX Y eacute -140
-KPX Y ecaron -140
-KPX Y ecircumflex -140
-KPX Y edieresis -140
-KPX Y edotaccent -140
-KPX Y egrave -140
-KPX Y emacron -70
-KPX Y eogonek -140
-KPX Y hyphen -140
-KPX Y i -20
-KPX Y iacute -20
-KPX Y iogonek -20
-KPX Y o -140
-KPX Y oacute -140
-KPX Y ocircumflex -140
-KPX Y odieresis -140
-KPX Y ograve -140
-KPX Y ohungarumlaut -140
-KPX Y omacron -140
-KPX Y oslash -140
-KPX Y otilde -140
-KPX Y period -140
-KPX Y semicolon -60
-KPX Y u -110
-KPX Y uacute -110
-KPX Y ucircumflex -110
-KPX Y udieresis -110
-KPX Y ugrave -110
-KPX Y uhungarumlaut -110
-KPX Y umacron -110
-KPX Y uogonek -110
-KPX Y uring -110
-KPX Yacute A -110
-KPX Yacute Aacute -110
-KPX Yacute Abreve -110
-KPX Yacute Acircumflex -110
-KPX Yacute Adieresis -110
-KPX Yacute Agrave -110
-KPX Yacute Amacron -110
-KPX Yacute Aogonek -110
-KPX Yacute Aring -110
-KPX Yacute Atilde -110
-KPX Yacute O -85
-KPX Yacute Oacute -85
-KPX Yacute Ocircumflex -85
-KPX Yacute Odieresis -85
-KPX Yacute Ograve -85
-KPX Yacute Ohungarumlaut -85
-KPX Yacute Omacron -85
-KPX Yacute Oslash -85
-KPX Yacute Otilde -85
-KPX Yacute a -140
-KPX Yacute aacute -140
-KPX Yacute abreve -70
-KPX Yacute acircumflex -140
-KPX Yacute adieresis -140
-KPX Yacute agrave -140
-KPX Yacute amacron -70
-KPX Yacute aogonek -140
-KPX Yacute aring -140
-KPX Yacute atilde -70
-KPX Yacute colon -60
-KPX Yacute comma -140
-KPX Yacute e -140
-KPX Yacute eacute -140
-KPX Yacute ecaron -140
-KPX Yacute ecircumflex -140
-KPX Yacute edieresis -140
-KPX Yacute edotaccent -140
-KPX Yacute egrave -140
-KPX Yacute emacron -70
-KPX Yacute eogonek -140
-KPX Yacute hyphen -140
-KPX Yacute i -20
-KPX Yacute iacute -20
-KPX Yacute iogonek -20
-KPX Yacute o -140
-KPX Yacute oacute -140
-KPX Yacute ocircumflex -140
-KPX Yacute odieresis -140
-KPX Yacute ograve -140
-KPX Yacute ohungarumlaut -140
-KPX Yacute omacron -70
-KPX Yacute oslash -140
-KPX Yacute otilde -140
-KPX Yacute period -140
-KPX Yacute semicolon -60
-KPX Yacute u -110
-KPX Yacute uacute -110
-KPX Yacute ucircumflex -110
-KPX Yacute udieresis -110
-KPX Yacute ugrave -110
-KPX Yacute uhungarumlaut -110
-KPX Yacute umacron -110
-KPX Yacute uogonek -110
-KPX Yacute uring -110
-KPX Ydieresis A -110
-KPX Ydieresis Aacute -110
-KPX Ydieresis Abreve -110
-KPX Ydieresis Acircumflex -110
-KPX Ydieresis Adieresis -110
-KPX Ydieresis Agrave -110
-KPX Ydieresis Amacron -110
-KPX Ydieresis Aogonek -110
-KPX Ydieresis Aring -110
-KPX Ydieresis Atilde -110
-KPX Ydieresis O -85
-KPX Ydieresis Oacute -85
-KPX Ydieresis Ocircumflex -85
-KPX Ydieresis Odieresis -85
-KPX Ydieresis Ograve -85
-KPX Ydieresis Ohungarumlaut -85
-KPX Ydieresis Omacron -85
-KPX Ydieresis Oslash -85
-KPX Ydieresis Otilde -85
-KPX Ydieresis a -140
-KPX Ydieresis aacute -140
-KPX Ydieresis abreve -70
-KPX Ydieresis acircumflex -140
-KPX Ydieresis adieresis -140
-KPX Ydieresis agrave -140
-KPX Ydieresis amacron -70
-KPX Ydieresis aogonek -140
-KPX Ydieresis aring -140
-KPX Ydieresis atilde -70
-KPX Ydieresis colon -60
-KPX Ydieresis comma -140
-KPX Ydieresis e -140
-KPX Ydieresis eacute -140
-KPX Ydieresis ecaron -140
-KPX Ydieresis ecircumflex -140
-KPX Ydieresis edieresis -140
-KPX Ydieresis edotaccent -140
-KPX Ydieresis egrave -140
-KPX Ydieresis emacron -70
-KPX Ydieresis eogonek -140
-KPX Ydieresis hyphen -140
-KPX Ydieresis i -20
-KPX Ydieresis iacute -20
-KPX Ydieresis iogonek -20
-KPX Ydieresis o -140
-KPX Ydieresis oacute -140
-KPX Ydieresis ocircumflex -140
-KPX Ydieresis odieresis -140
-KPX Ydieresis ograve -140
-KPX Ydieresis ohungarumlaut -140
-KPX Ydieresis omacron -140
-KPX Ydieresis oslash -140
-KPX Ydieresis otilde -140
-KPX Ydieresis period -140
-KPX Ydieresis semicolon -60
-KPX Ydieresis u -110
-KPX Ydieresis uacute -110
-KPX Ydieresis ucircumflex -110
-KPX Ydieresis udieresis -110
-KPX Ydieresis ugrave -110
-KPX Ydieresis uhungarumlaut -110
-KPX Ydieresis umacron -110
-KPX Ydieresis uogonek -110
-KPX Ydieresis uring -110
-KPX a v -20
-KPX a w -20
-KPX a y -30
-KPX a yacute -30
-KPX a ydieresis -30
-KPX aacute v -20
-KPX aacute w -20
-KPX aacute y -30
-KPX aacute yacute -30
-KPX aacute ydieresis -30
-KPX abreve v -20
-KPX abreve w -20
-KPX abreve y -30
-KPX abreve yacute -30
-KPX abreve ydieresis -30
-KPX acircumflex v -20
-KPX acircumflex w -20
-KPX acircumflex y -30
-KPX acircumflex yacute -30
-KPX acircumflex ydieresis -30
-KPX adieresis v -20
-KPX adieresis w -20
-KPX adieresis y -30
-KPX adieresis yacute -30
-KPX adieresis ydieresis -30
-KPX agrave v -20
-KPX agrave w -20
-KPX agrave y -30
-KPX agrave yacute -30
-KPX agrave ydieresis -30
-KPX amacron v -20
-KPX amacron w -20
-KPX amacron y -30
-KPX amacron yacute -30
-KPX amacron ydieresis -30
-KPX aogonek v -20
-KPX aogonek w -20
-KPX aogonek y -30
-KPX aogonek yacute -30
-KPX aogonek ydieresis -30
-KPX aring v -20
-KPX aring w -20
-KPX aring y -30
-KPX aring yacute -30
-KPX aring ydieresis -30
-KPX atilde v -20
-KPX atilde w -20
-KPX atilde y -30
-KPX atilde yacute -30
-KPX atilde ydieresis -30
-KPX b b -10
-KPX b comma -40
-KPX b l -20
-KPX b lacute -20
-KPX b lcommaaccent -20
-KPX b lslash -20
-KPX b period -40
-KPX b u -20
-KPX b uacute -20
-KPX b ucircumflex -20
-KPX b udieresis -20
-KPX b ugrave -20
-KPX b uhungarumlaut -20
-KPX b umacron -20
-KPX b uogonek -20
-KPX b uring -20
-KPX b v -20
-KPX b y -20
-KPX b yacute -20
-KPX b ydieresis -20
-KPX c comma -15
-KPX c k -20
-KPX c kcommaaccent -20
-KPX cacute comma -15
-KPX cacute k -20
-KPX cacute kcommaaccent -20
-KPX ccaron comma -15
-KPX ccaron k -20
-KPX ccaron kcommaaccent -20
-KPX ccedilla comma -15
-KPX ccedilla k -20
-KPX ccedilla kcommaaccent -20
-KPX colon space -50
-KPX comma quotedblright -100
-KPX comma quoteright -100
-KPX e comma -15
-KPX e period -15
-KPX e v -30
-KPX e w -20
-KPX e x -30
-KPX e y -20
-KPX e yacute -20
-KPX e ydieresis -20
-KPX eacute comma -15
-KPX eacute period -15
-KPX eacute v -30
-KPX eacute w -20
-KPX eacute x -30
-KPX eacute y -20
-KPX eacute yacute -20
-KPX eacute ydieresis -20
-KPX ecaron comma -15
-KPX ecaron period -15
-KPX ecaron v -30
-KPX ecaron w -20
-KPX ecaron x -30
-KPX ecaron y -20
-KPX ecaron yacute -20
-KPX ecaron ydieresis -20
-KPX ecircumflex comma -15
-KPX ecircumflex period -15
-KPX ecircumflex v -30
-KPX ecircumflex w -20
-KPX ecircumflex x -30
-KPX ecircumflex y -20
-KPX ecircumflex yacute -20
-KPX ecircumflex ydieresis -20
-KPX edieresis comma -15
-KPX edieresis period -15
-KPX edieresis v -30
-KPX edieresis w -20
-KPX edieresis x -30
-KPX edieresis y -20
-KPX edieresis yacute -20
-KPX edieresis ydieresis -20
-KPX edotaccent comma -15
-KPX edotaccent period -15
-KPX edotaccent v -30
-KPX edotaccent w -20
-KPX edotaccent x -30
-KPX edotaccent y -20
-KPX edotaccent yacute -20
-KPX edotaccent ydieresis -20
-KPX egrave comma -15
-KPX egrave period -15
-KPX egrave v -30
-KPX egrave w -20
-KPX egrave x -30
-KPX egrave y -20
-KPX egrave yacute -20
-KPX egrave ydieresis -20
-KPX emacron comma -15
-KPX emacron period -15
-KPX emacron v -30
-KPX emacron w -20
-KPX emacron x -30
-KPX emacron y -20
-KPX emacron yacute -20
-KPX emacron ydieresis -20
-KPX eogonek comma -15
-KPX eogonek period -15
-KPX eogonek v -30
-KPX eogonek w -20
-KPX eogonek x -30
-KPX eogonek y -20
-KPX eogonek yacute -20
-KPX eogonek ydieresis -20
-KPX f a -30
-KPX f aacute -30
-KPX f abreve -30
-KPX f acircumflex -30
-KPX f adieresis -30
-KPX f agrave -30
-KPX f amacron -30
-KPX f aogonek -30
-KPX f aring -30
-KPX f atilde -30
-KPX f comma -30
-KPX f dotlessi -28
-KPX f e -30
-KPX f eacute -30
-KPX f ecaron -30
-KPX f ecircumflex -30
-KPX f edieresis -30
-KPX f edotaccent -30
-KPX f egrave -30
-KPX f emacron -30
-KPX f eogonek -30
-KPX f o -30
-KPX f oacute -30
-KPX f ocircumflex -30
-KPX f odieresis -30
-KPX f ograve -30
-KPX f ohungarumlaut -30
-KPX f omacron -30
-KPX f oslash -30
-KPX f otilde -30
-KPX f period -30
-KPX f quotedblright 60
-KPX f quoteright 50
-KPX g r -10
-KPX g racute -10
-KPX g rcaron -10
-KPX g rcommaaccent -10
-KPX gbreve r -10
-KPX gbreve racute -10
-KPX gbreve rcaron -10
-KPX gbreve rcommaaccent -10
-KPX gcommaaccent r -10
-KPX gcommaaccent racute -10
-KPX gcommaaccent rcaron -10
-KPX gcommaaccent rcommaaccent -10
-KPX h y -30
-KPX h yacute -30
-KPX h ydieresis -30
-KPX k e -20
-KPX k eacute -20
-KPX k ecaron -20
-KPX k ecircumflex -20
-KPX k edieresis -20
-KPX k edotaccent -20
-KPX k egrave -20
-KPX k emacron -20
-KPX k eogonek -20
-KPX k o -20
-KPX k oacute -20
-KPX k ocircumflex -20
-KPX k odieresis -20
-KPX k ograve -20
-KPX k ohungarumlaut -20
-KPX k omacron -20
-KPX k oslash -20
-KPX k otilde -20
-KPX kcommaaccent e -20
-KPX kcommaaccent eacute -20
-KPX kcommaaccent ecaron -20
-KPX kcommaaccent ecircumflex -20
-KPX kcommaaccent edieresis -20
-KPX kcommaaccent edotaccent -20
-KPX kcommaaccent egrave -20
-KPX kcommaaccent emacron -20
-KPX kcommaaccent eogonek -20
-KPX kcommaaccent o -20
-KPX kcommaaccent oacute -20
-KPX kcommaaccent ocircumflex -20
-KPX kcommaaccent odieresis -20
-KPX kcommaaccent ograve -20
-KPX kcommaaccent ohungarumlaut -20
-KPX kcommaaccent omacron -20
-KPX kcommaaccent oslash -20
-KPX kcommaaccent otilde -20
-KPX m u -10
-KPX m uacute -10
-KPX m ucircumflex -10
-KPX m udieresis -10
-KPX m ugrave -10
-KPX m uhungarumlaut -10
-KPX m umacron -10
-KPX m uogonek -10
-KPX m uring -10
-KPX m y -15
-KPX m yacute -15
-KPX m ydieresis -15
-KPX n u -10
-KPX n uacute -10
-KPX n ucircumflex -10
-KPX n udieresis -10
-KPX n ugrave -10
-KPX n uhungarumlaut -10
-KPX n umacron -10
-KPX n uogonek -10
-KPX n uring -10
-KPX n v -20
-KPX n y -15
-KPX n yacute -15
-KPX n ydieresis -15
-KPX nacute u -10
-KPX nacute uacute -10
-KPX nacute ucircumflex -10
-KPX nacute udieresis -10
-KPX nacute ugrave -10
-KPX nacute uhungarumlaut -10
-KPX nacute umacron -10
-KPX nacute uogonek -10
-KPX nacute uring -10
-KPX nacute v -20
-KPX nacute y -15
-KPX nacute yacute -15
-KPX nacute ydieresis -15
-KPX ncaron u -10
-KPX ncaron uacute -10
-KPX ncaron ucircumflex -10
-KPX ncaron udieresis -10
-KPX ncaron ugrave -10
-KPX ncaron uhungarumlaut -10
-KPX ncaron umacron -10
-KPX ncaron uogonek -10
-KPX ncaron uring -10
-KPX ncaron v -20
-KPX ncaron y -15
-KPX ncaron yacute -15
-KPX ncaron ydieresis -15
-KPX ncommaaccent u -10
-KPX ncommaaccent uacute -10
-KPX ncommaaccent ucircumflex -10
-KPX ncommaaccent udieresis -10
-KPX ncommaaccent ugrave -10
-KPX ncommaaccent uhungarumlaut -10
-KPX ncommaaccent umacron -10
-KPX ncommaaccent uogonek -10
-KPX ncommaaccent uring -10
-KPX ncommaaccent v -20
-KPX ncommaaccent y -15
-KPX ncommaaccent yacute -15
-KPX ncommaaccent ydieresis -15
-KPX ntilde u -10
-KPX ntilde uacute -10
-KPX ntilde ucircumflex -10
-KPX ntilde udieresis -10
-KPX ntilde ugrave -10
-KPX ntilde uhungarumlaut -10
-KPX ntilde umacron -10
-KPX ntilde uogonek -10
-KPX ntilde uring -10
-KPX ntilde v -20
-KPX ntilde y -15
-KPX ntilde yacute -15
-KPX ntilde ydieresis -15
-KPX o comma -40
-KPX o period -40
-KPX o v -15
-KPX o w -15
-KPX o x -30
-KPX o y -30
-KPX o yacute -30
-KPX o ydieresis -30
-KPX oacute comma -40
-KPX oacute period -40
-KPX oacute v -15
-KPX oacute w -15
-KPX oacute x -30
-KPX oacute y -30
-KPX oacute yacute -30
-KPX oacute ydieresis -30
-KPX ocircumflex comma -40
-KPX ocircumflex period -40
-KPX ocircumflex v -15
-KPX ocircumflex w -15
-KPX ocircumflex x -30
-KPX ocircumflex y -30
-KPX ocircumflex yacute -30
-KPX ocircumflex ydieresis -30
-KPX odieresis comma -40
-KPX odieresis period -40
-KPX odieresis v -15
-KPX odieresis w -15
-KPX odieresis x -30
-KPX odieresis y -30
-KPX odieresis yacute -30
-KPX odieresis ydieresis -30
-KPX ograve comma -40
-KPX ograve period -40
-KPX ograve v -15
-KPX ograve w -15
-KPX ograve x -30
-KPX ograve y -30
-KPX ograve yacute -30
-KPX ograve ydieresis -30
-KPX ohungarumlaut comma -40
-KPX ohungarumlaut period -40
-KPX ohungarumlaut v -15
-KPX ohungarumlaut w -15
-KPX ohungarumlaut x -30
-KPX ohungarumlaut y -30
-KPX ohungarumlaut yacute -30
-KPX ohungarumlaut ydieresis -30
-KPX omacron comma -40
-KPX omacron period -40
-KPX omacron v -15
-KPX omacron w -15
-KPX omacron x -30
-KPX omacron y -30
-KPX omacron yacute -30
-KPX omacron ydieresis -30
-KPX oslash a -55
-KPX oslash aacute -55
-KPX oslash abreve -55
-KPX oslash acircumflex -55
-KPX oslash adieresis -55
-KPX oslash agrave -55
-KPX oslash amacron -55
-KPX oslash aogonek -55
-KPX oslash aring -55
-KPX oslash atilde -55
-KPX oslash b -55
-KPX oslash c -55
-KPX oslash cacute -55
-KPX oslash ccaron -55
-KPX oslash ccedilla -55
-KPX oslash comma -95
-KPX oslash d -55
-KPX oslash dcroat -55
-KPX oslash e -55
-KPX oslash eacute -55
-KPX oslash ecaron -55
-KPX oslash ecircumflex -55
-KPX oslash edieresis -55
-KPX oslash edotaccent -55
-KPX oslash egrave -55
-KPX oslash emacron -55
-KPX oslash eogonek -55
-KPX oslash f -55
-KPX oslash g -55
-KPX oslash gbreve -55
-KPX oslash gcommaaccent -55
-KPX oslash h -55
-KPX oslash i -55
-KPX oslash iacute -55
-KPX oslash icircumflex -55
-KPX oslash idieresis -55
-KPX oslash igrave -55
-KPX oslash imacron -55
-KPX oslash iogonek -55
-KPX oslash j -55
-KPX oslash k -55
-KPX oslash kcommaaccent -55
-KPX oslash l -55
-KPX oslash lacute -55
-KPX oslash lcommaaccent -55
-KPX oslash lslash -55
-KPX oslash m -55
-KPX oslash n -55
-KPX oslash nacute -55
-KPX oslash ncaron -55
-KPX oslash ncommaaccent -55
-KPX oslash ntilde -55
-KPX oslash o -55
-KPX oslash oacute -55
-KPX oslash ocircumflex -55
-KPX oslash odieresis -55
-KPX oslash ograve -55
-KPX oslash ohungarumlaut -55
-KPX oslash omacron -55
-KPX oslash oslash -55
-KPX oslash otilde -55
-KPX oslash p -55
-KPX oslash period -95
-KPX oslash q -55
-KPX oslash r -55
-KPX oslash racute -55
-KPX oslash rcaron -55
-KPX oslash rcommaaccent -55
-KPX oslash s -55
-KPX oslash sacute -55
-KPX oslash scaron -55
-KPX oslash scedilla -55
-KPX oslash scommaaccent -55
-KPX oslash t -55
-KPX oslash tcommaaccent -55
-KPX oslash u -55
-KPX oslash uacute -55
-KPX oslash ucircumflex -55
-KPX oslash udieresis -55
-KPX oslash ugrave -55
-KPX oslash uhungarumlaut -55
-KPX oslash umacron -55
-KPX oslash uogonek -55
-KPX oslash uring -55
-KPX oslash v -70
-KPX oslash w -70
-KPX oslash x -85
-KPX oslash y -70
-KPX oslash yacute -70
-KPX oslash ydieresis -70
-KPX oslash z -55
-KPX oslash zacute -55
-KPX oslash zcaron -55
-KPX oslash zdotaccent -55
-KPX otilde comma -40
-KPX otilde period -40
-KPX otilde v -15
-KPX otilde w -15
-KPX otilde x -30
-KPX otilde y -30
-KPX otilde yacute -30
-KPX otilde ydieresis -30
-KPX p comma -35
-KPX p period -35
-KPX p y -30
-KPX p yacute -30
-KPX p ydieresis -30
-KPX period quotedblright -100
-KPX period quoteright -100
-KPX period space -60
-KPX quotedblright space -40
-KPX quoteleft quoteleft -57
-KPX quoteright d -50
-KPX quoteright dcroat -50
-KPX quoteright quoteright -57
-KPX quoteright r -50
-KPX quoteright racute -50
-KPX quoteright rcaron -50
-KPX quoteright rcommaaccent -50
-KPX quoteright s -50
-KPX quoteright sacute -50
-KPX quoteright scaron -50
-KPX quoteright scedilla -50
-KPX quoteright scommaaccent -50
-KPX quoteright space -70
-KPX r a -10
-KPX r aacute -10
-KPX r abreve -10
-KPX r acircumflex -10
-KPX r adieresis -10
-KPX r agrave -10
-KPX r amacron -10
-KPX r aogonek -10
-KPX r aring -10
-KPX r atilde -10
-KPX r colon 30
-KPX r comma -50
-KPX r i 15
-KPX r iacute 15
-KPX r icircumflex 15
-KPX r idieresis 15
-KPX r igrave 15
-KPX r imacron 15
-KPX r iogonek 15
-KPX r k 15
-KPX r kcommaaccent 15
-KPX r l 15
-KPX r lacute 15
-KPX r lcommaaccent 15
-KPX r lslash 15
-KPX r m 25
-KPX r n 25
-KPX r nacute 25
-KPX r ncaron 25
-KPX r ncommaaccent 25
-KPX r ntilde 25
-KPX r p 30
-KPX r period -50
-KPX r semicolon 30
-KPX r t 40
-KPX r tcommaaccent 40
-KPX r u 15
-KPX r uacute 15
-KPX r ucircumflex 15
-KPX r udieresis 15
-KPX r ugrave 15
-KPX r uhungarumlaut 15
-KPX r umacron 15
-KPX r uogonek 15
-KPX r uring 15
-KPX r v 30
-KPX r y 30
-KPX r yacute 30
-KPX r ydieresis 30
-KPX racute a -10
-KPX racute aacute -10
-KPX racute abreve -10
-KPX racute acircumflex -10
-KPX racute adieresis -10
-KPX racute agrave -10
-KPX racute amacron -10
-KPX racute aogonek -10
-KPX racute aring -10
-KPX racute atilde -10
-KPX racute colon 30
-KPX racute comma -50
-KPX racute i 15
-KPX racute iacute 15
-KPX racute icircumflex 15
-KPX racute idieresis 15
-KPX racute igrave 15
-KPX racute imacron 15
-KPX racute iogonek 15
-KPX racute k 15
-KPX racute kcommaaccent 15
-KPX racute l 15
-KPX racute lacute 15
-KPX racute lcommaaccent 15
-KPX racute lslash 15
-KPX racute m 25
-KPX racute n 25
-KPX racute nacute 25
-KPX racute ncaron 25
-KPX racute ncommaaccent 25
-KPX racute ntilde 25
-KPX racute p 30
-KPX racute period -50
-KPX racute semicolon 30
-KPX racute t 40
-KPX racute tcommaaccent 40
-KPX racute u 15
-KPX racute uacute 15
-KPX racute ucircumflex 15
-KPX racute udieresis 15
-KPX racute ugrave 15
-KPX racute uhungarumlaut 15
-KPX racute umacron 15
-KPX racute uogonek 15
-KPX racute uring 15
-KPX racute v 30
-KPX racute y 30
-KPX racute yacute 30
-KPX racute ydieresis 30
-KPX rcaron a -10
-KPX rcaron aacute -10
-KPX rcaron abreve -10
-KPX rcaron acircumflex -10
-KPX rcaron adieresis -10
-KPX rcaron agrave -10
-KPX rcaron amacron -10
-KPX rcaron aogonek -10
-KPX rcaron aring -10
-KPX rcaron atilde -10
-KPX rcaron colon 30
-KPX rcaron comma -50
-KPX rcaron i 15
-KPX rcaron iacute 15
-KPX rcaron icircumflex 15
-KPX rcaron idieresis 15
-KPX rcaron igrave 15
-KPX rcaron imacron 15
-KPX rcaron iogonek 15
-KPX rcaron k 15
-KPX rcaron kcommaaccent 15
-KPX rcaron l 15
-KPX rcaron lacute 15
-KPX rcaron lcommaaccent 15
-KPX rcaron lslash 15
-KPX rcaron m 25
-KPX rcaron n 25
-KPX rcaron nacute 25
-KPX rcaron ncaron 25
-KPX rcaron ncommaaccent 25
-KPX rcaron ntilde 25
-KPX rcaron p 30
-KPX rcaron period -50
-KPX rcaron semicolon 30
-KPX rcaron t 40
-KPX rcaron tcommaaccent 40
-KPX rcaron u 15
-KPX rcaron uacute 15
-KPX rcaron ucircumflex 15
-KPX rcaron udieresis 15
-KPX rcaron ugrave 15
-KPX rcaron uhungarumlaut 15
-KPX rcaron umacron 15
-KPX rcaron uogonek 15
-KPX rcaron uring 15
-KPX rcaron v 30
-KPX rcaron y 30
-KPX rcaron yacute 30
-KPX rcaron ydieresis 30
-KPX rcommaaccent a -10
-KPX rcommaaccent aacute -10
-KPX rcommaaccent abreve -10
-KPX rcommaaccent acircumflex -10
-KPX rcommaaccent adieresis -10
-KPX rcommaaccent agrave -10
-KPX rcommaaccent amacron -10
-KPX rcommaaccent aogonek -10
-KPX rcommaaccent aring -10
-KPX rcommaaccent atilde -10
-KPX rcommaaccent colon 30
-KPX rcommaaccent comma -50
-KPX rcommaaccent i 15
-KPX rcommaaccent iacute 15
-KPX rcommaaccent icircumflex 15
-KPX rcommaaccent idieresis 15
-KPX rcommaaccent igrave 15
-KPX rcommaaccent imacron 15
-KPX rcommaaccent iogonek 15
-KPX rcommaaccent k 15
-KPX rcommaaccent kcommaaccent 15
-KPX rcommaaccent l 15
-KPX rcommaaccent lacute 15
-KPX rcommaaccent lcommaaccent 15
-KPX rcommaaccent lslash 15
-KPX rcommaaccent m 25
-KPX rcommaaccent n 25
-KPX rcommaaccent nacute 25
-KPX rcommaaccent ncaron 25
-KPX rcommaaccent ncommaaccent 25
-KPX rcommaaccent ntilde 25
-KPX rcommaaccent p 30
-KPX rcommaaccent period -50
-KPX rcommaaccent semicolon 30
-KPX rcommaaccent t 40
-KPX rcommaaccent tcommaaccent 40
-KPX rcommaaccent u 15
-KPX rcommaaccent uacute 15
-KPX rcommaaccent ucircumflex 15
-KPX rcommaaccent udieresis 15
-KPX rcommaaccent ugrave 15
-KPX rcommaaccent uhungarumlaut 15
-KPX rcommaaccent umacron 15
-KPX rcommaaccent uogonek 15
-KPX rcommaaccent uring 15
-KPX rcommaaccent v 30
-KPX rcommaaccent y 30
-KPX rcommaaccent yacute 30
-KPX rcommaaccent ydieresis 30
-KPX s comma -15
-KPX s period -15
-KPX s w -30
-KPX sacute comma -15
-KPX sacute period -15
-KPX sacute w -30
-KPX scaron comma -15
-KPX scaron period -15
-KPX scaron w -30
-KPX scedilla comma -15
-KPX scedilla period -15
-KPX scedilla w -30
-KPX scommaaccent comma -15
-KPX scommaaccent period -15
-KPX scommaaccent w -30
-KPX semicolon space -50
-KPX space T -50
-KPX space Tcaron -50
-KPX space Tcommaaccent -50
-KPX space V -50
-KPX space W -40
-KPX space Y -90
-KPX space Yacute -90
-KPX space Ydieresis -90
-KPX space quotedblleft -30
-KPX space quoteleft -60
-KPX v a -25
-KPX v aacute -25
-KPX v abreve -25
-KPX v acircumflex -25
-KPX v adieresis -25
-KPX v agrave -25
-KPX v amacron -25
-KPX v aogonek -25
-KPX v aring -25
-KPX v atilde -25
-KPX v comma -80
-KPX v e -25
-KPX v eacute -25
-KPX v ecaron -25
-KPX v ecircumflex -25
-KPX v edieresis -25
-KPX v edotaccent -25
-KPX v egrave -25
-KPX v emacron -25
-KPX v eogonek -25
-KPX v o -25
-KPX v oacute -25
-KPX v ocircumflex -25
-KPX v odieresis -25
-KPX v ograve -25
-KPX v ohungarumlaut -25
-KPX v omacron -25
-KPX v oslash -25
-KPX v otilde -25
-KPX v period -80
-KPX w a -15
-KPX w aacute -15
-KPX w abreve -15
-KPX w acircumflex -15
-KPX w adieresis -15
-KPX w agrave -15
-KPX w amacron -15
-KPX w aogonek -15
-KPX w aring -15
-KPX w atilde -15
-KPX w comma -60
-KPX w e -10
-KPX w eacute -10
-KPX w ecaron -10
-KPX w ecircumflex -10
-KPX w edieresis -10
-KPX w edotaccent -10
-KPX w egrave -10
-KPX w emacron -10
-KPX w eogonek -10
-KPX w o -10
-KPX w oacute -10
-KPX w ocircumflex -10
-KPX w odieresis -10
-KPX w ograve -10
-KPX w ohungarumlaut -10
-KPX w omacron -10
-KPX w oslash -10
-KPX w otilde -10
-KPX w period -60
-KPX x e -30
-KPX x eacute -30
-KPX x ecaron -30
-KPX x ecircumflex -30
-KPX x edieresis -30
-KPX x edotaccent -30
-KPX x egrave -30
-KPX x emacron -30
-KPX x eogonek -30
-KPX y a -20
-KPX y aacute -20
-KPX y abreve -20
-KPX y acircumflex -20
-KPX y adieresis -20
-KPX y agrave -20
-KPX y amacron -20
-KPX y aogonek -20
-KPX y aring -20
-KPX y atilde -20
-KPX y comma -100
-KPX y e -20
-KPX y eacute -20
-KPX y ecaron -20
-KPX y ecircumflex -20
-KPX y edieresis -20
-KPX y edotaccent -20
-KPX y egrave -20
-KPX y emacron -20
-KPX y eogonek -20
-KPX y o -20
-KPX y oacute -20
-KPX y ocircumflex -20
-KPX y odieresis -20
-KPX y ograve -20
-KPX y ohungarumlaut -20
-KPX y omacron -20
-KPX y oslash -20
-KPX y otilde -20
-KPX y period -100
-KPX yacute a -20
-KPX yacute aacute -20
-KPX yacute abreve -20
-KPX yacute acircumflex -20
-KPX yacute adieresis -20
-KPX yacute agrave -20
-KPX yacute amacron -20
-KPX yacute aogonek -20
-KPX yacute aring -20
-KPX yacute atilde -20
-KPX yacute comma -100
-KPX yacute e -20
-KPX yacute eacute -20
-KPX yacute ecaron -20
-KPX yacute ecircumflex -20
-KPX yacute edieresis -20
-KPX yacute edotaccent -20
-KPX yacute egrave -20
-KPX yacute emacron -20
-KPX yacute eogonek -20
-KPX yacute o -20
-KPX yacute oacute -20
-KPX yacute ocircumflex -20
-KPX yacute odieresis -20
-KPX yacute ograve -20
-KPX yacute ohungarumlaut -20
-KPX yacute omacron -20
-KPX yacute oslash -20
-KPX yacute otilde -20
-KPX yacute period -100
-KPX ydieresis a -20
-KPX ydieresis aacute -20
-KPX ydieresis abreve -20
-KPX ydieresis acircumflex -20
-KPX ydieresis adieresis -20
-KPX ydieresis agrave -20
-KPX ydieresis amacron -20
-KPX ydieresis aogonek -20
-KPX ydieresis aring -20
-KPX ydieresis atilde -20
-KPX ydieresis comma -100
-KPX ydieresis e -20
-KPX ydieresis eacute -20
-KPX ydieresis ecaron -20
-KPX ydieresis ecircumflex -20
-KPX ydieresis edieresis -20
-KPX ydieresis edotaccent -20
-KPX ydieresis egrave -20
-KPX ydieresis emacron -20
-KPX ydieresis eogonek -20
-KPX ydieresis o -20
-KPX ydieresis oacute -20
-KPX ydieresis ocircumflex -20
-KPX ydieresis odieresis -20
-KPX ydieresis ograve -20
-KPX ydieresis ohungarumlaut -20
-KPX ydieresis omacron -20
-KPX ydieresis oslash -20
-KPX ydieresis otilde -20
-KPX ydieresis period -100
-KPX z e -15
-KPX z eacute -15
-KPX z ecaron -15
-KPX z ecircumflex -15
-KPX z edieresis -15
-KPX z edotaccent -15
-KPX z egrave -15
-KPX z emacron -15
-KPX z eogonek -15
-KPX z o -15
-KPX z oacute -15
-KPX z ocircumflex -15
-KPX z odieresis -15
-KPX z ograve -15
-KPX z ohungarumlaut -15
-KPX z omacron -15
-KPX z oslash -15
-KPX z otilde -15
-KPX zacute e -15
-KPX zacute eacute -15
-KPX zacute ecaron -15
-KPX zacute ecircumflex -15
-KPX zacute edieresis -15
-KPX zacute edotaccent -15
-KPX zacute egrave -15
-KPX zacute emacron -15
-KPX zacute eogonek -15
-KPX zacute o -15
-KPX zacute oacute -15
-KPX zacute ocircumflex -15
-KPX zacute odieresis -15
-KPX zacute ograve -15
-KPX zacute ohungarumlaut -15
-KPX zacute omacron -15
-KPX zacute oslash -15
-KPX zacute otilde -15
-KPX zcaron e -15
-KPX zcaron eacute -15
-KPX zcaron ecaron -15
-KPX zcaron ecircumflex -15
-KPX zcaron edieresis -15
-KPX zcaron edotaccent -15
-KPX zcaron egrave -15
-KPX zcaron emacron -15
-KPX zcaron eogonek -15
-KPX zcaron o -15
-KPX zcaron oacute -15
-KPX zcaron ocircumflex -15
-KPX zcaron odieresis -15
-KPX zcaron ograve -15
-KPX zcaron ohungarumlaut -15
-KPX zcaron omacron -15
-KPX zcaron oslash -15
-KPX zcaron otilde -15
-KPX zdotaccent e -15
-KPX zdotaccent eacute -15
-KPX zdotaccent ecaron -15
-KPX zdotaccent ecircumflex -15
-KPX zdotaccent edieresis -15
-KPX zdotaccent edotaccent -15
-KPX zdotaccent egrave -15
-KPX zdotaccent emacron -15
-KPX zdotaccent eogonek -15
-KPX zdotaccent o -15
-KPX zdotaccent oacute -15
-KPX zdotaccent ocircumflex -15
-KPX zdotaccent odieresis -15
-KPX zdotaccent ograve -15
-KPX zdotaccent ohungarumlaut -15
-KPX zdotaccent omacron -15
-KPX zdotaccent oslash -15
-KPX zdotaccent otilde -15
-EndKernPairs
-EndKernData
-EndFontMetrics
diff --git a/admin/survey/Fonts/MankSans.ttf b/admin/survey/Fonts/MankSans.ttf
deleted file mode 100644
index a6146a9..0000000
--- a/admin/survey/Fonts/MankSans.ttf
+++ /dev/null
Binary files differ
diff --git a/admin/survey/Fonts/OpenSans/OpenSans-Bold-webfont.eot b/admin/survey/Fonts/OpenSans/OpenSans-Bold-webfont.eot
deleted file mode 100644
index 5d4a1c4..0000000
--- a/admin/survey/Fonts/OpenSans/OpenSans-Bold-webfont.eot
+++ /dev/null
Binary files differ
diff --git a/admin/survey/Fonts/OpenSans/OpenSans-Bold-webfont.svg b/admin/survey/Fonts/OpenSans/OpenSans-Bold-webfont.svg
deleted file mode 100644
index 7cda102..0000000
--- a/admin/survey/Fonts/OpenSans/OpenSans-Bold-webfont.svg
+++ /dev/null
@@ -1,251 +0,0 @@
-<?xml version="1.0" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
-<svg xmlns="http://www.w3.org/2000/svg">
-<metadata>
-This is a custom SVG webfont generated by Font Squirrel.
-Copyright : Digitized data copyright 20102011 Google Corporation
-Foundry : Ascender Corporation
-Foundry URL : httpwwwascendercorpcom
-</metadata>
-<defs>
-<font id="OpenSansBold" horiz-adv-x="1169" >
-<font-face units-per-em="2048" ascent="1638" descent="-410" />
-<missing-glyph horiz-adv-x="532" />
-<glyph unicode=" " horiz-adv-x="532" />
-<glyph unicode="&#x09;" horiz-adv-x="532" />
-<glyph unicode="&#xa0;" horiz-adv-x="532" />
-<glyph unicode="!" horiz-adv-x="586" d="M117 143q0 84 45 127t131 43q83 0 128.5 -44t45.5 -126q0 -79 -46 -124.5t-128 -45.5q-84 0 -130 44.5t-46 125.5zM121 1462h346l-51 -977h-244z" />
-<glyph unicode="&#x22;" horiz-adv-x="967" d="M133 1462h279l-41 -528h-197zM555 1462h279l-41 -528h-197z" />
-<glyph unicode="#" horiz-adv-x="1323" d="M45 406v206h277l47 232h-252v209h289l77 407h219l-77 -407h198l78 407h215l-78 -407h240v-209h-279l-47 -232h258v-206h-297l-77 -406h-220l78 406h-194l-76 -406h-215l74 406h-238zM539 612h196l47 232h-196z" />
-<glyph unicode="$" d="M88 1049q0 145 113.5 238.5t316.5 113.5v153h137v-149q229 -10 414 -92l-94 -234q-156 64 -320 78v-295q195 -75 277.5 -130t121 -121t38.5 -154q0 -159 -115 -255.5t-322 -115.5v-205h-137v201q-244 5 -428 86v264q87 -43 209.5 -76t218.5 -39v310l-67 26 q-198 78 -280.5 169.5t-82.5 226.5zM389 1049q0 -44 30.5 -72.5t98.5 -58.5v235q-129 -19 -129 -104zM655 324q136 23 136 118q0 42 -34 71t-102 60v-249z" />
-<glyph unicode="%" horiz-adv-x="1845" d="M63 1026q0 457 345 457q169 0 259.5 -118.5t90.5 -338.5q0 -230 -89 -345.5t-261 -115.5q-165 0 -255 118.5t-90 342.5zM315 1024q0 -127 22.5 -189.5t72.5 -62.5q96 0 96 252q0 250 -96 250q-50 0 -72.5 -61.5t-22.5 -188.5zM395 0l811 1462h240l-811 -1462h-240z M1087 442q0 457 345 457q169 0 259.5 -118.5t90.5 -338.5q0 -229 -89 -344.5t-261 -115.5q-165 0 -255 118.5t-90 341.5zM1339 440q0 -127 22.5 -189.5t72.5 -62.5q96 0 96 252q0 250 -96 250q-50 0 -72.5 -61.5t-22.5 -188.5z" />
-<glyph unicode="&#x26;" horiz-adv-x="1536" d="M82 395q0 137 60.5 233.5t207.5 180.5q-75 86 -109 164.5t-34 171.5q0 152 116.5 245t311.5 93q186 0 297.5 -86.5t111.5 -231.5q0 -119 -69 -217.5t-223 -187.5l284 -277q71 117 123 301h318q-36 -135 -99 -263.5t-143 -227.5l301 -293h-377l-115 113 q-191 -133 -432 -133q-244 0 -387 112t-143 303zM403 424q0 -86 64.5 -137t165.5 -51q126 0 227 61l-332 330q-58 -44 -91.5 -92t-33.5 -111zM489 1124q0 -88 95 -194q86 48 132 94.5t46 108.5q0 53 -36 83.5t-93 30.5q-67 0 -105.5 -32t-38.5 -91z" />
-<glyph unicode="'" horiz-adv-x="545" d="M133 1462h279l-41 -528h-197z" />
-<glyph unicode="(" horiz-adv-x="694" d="M82 561q0 265 77.5 496t223.5 405h250q-141 -193 -213 -424t-72 -475q0 -245 73.5 -473.5t209.5 -413.5h-248q-147 170 -224 397t-77 488z" />
-<glyph unicode=")" horiz-adv-x="694" d="M61 1462h250q147 -175 224 -406.5t77 -494.5t-77.5 -490t-223.5 -395h-248q135 184 209 412.5t74 474.5q0 244 -72 475t-213 424z" />
-<glyph unicode="*" horiz-adv-x="1116" d="M63 1042l39 250l365 -104l-41 368h262l-41 -368l373 104l33 -252l-340 -24l223 -297l-227 -121l-156 313l-137 -311l-236 119l221 297z" />
-<glyph unicode="+" d="M88 612v219h387v390h219v-390h387v-219h-387v-385h-219v385h-387z" />
-<glyph unicode="," horiz-adv-x="594" d="M63 -264q65 266 101 502h280l15 -23q-52 -202 -176 -479h-220z" />
-<glyph unicode="-" horiz-adv-x="659" d="M61 424v250h537v-250h-537z" />
-<glyph unicode="." horiz-adv-x="584" d="M117 143q0 84 45 127t131 43q83 0 128.5 -44t45.5 -126q0 -79 -46 -124.5t-128 -45.5q-84 0 -130 44.5t-46 125.5z" />
-<glyph unicode="/" horiz-adv-x="846" d="M14 0l545 1462h277l-545 -1462h-277z" />
-<glyph unicode="0" d="M74 731q0 387 125 570.5t385 183.5q253 0 382.5 -192t129.5 -562q0 -383 -125.5 -567t-386.5 -184q-253 0 -381.5 190t-128.5 561zM381 731q0 -269 46.5 -385.5t156.5 -116.5q108 0 156 118t48 384q0 269 -48.5 386.5t-155.5 117.5q-109 0 -156 -117.5t-47 -386.5z" />
-<glyph unicode="1" d="M121 1087l471 375h254v-1462h-309v846l3 139l5 152q-77 -77 -107 -101l-168 -135z" />
-<glyph unicode="2" d="M78 1274q108 92 179 130t155 58.5t188 20.5q137 0 242 -50t163 -140t58 -206q0 -101 -35.5 -189.5t-110 -181.5t-262.5 -265l-188 -177v-14h637v-260h-1022v215l367 371q163 167 213 231.5t72 119.5t22 114q0 88 -48.5 131t-129.5 43q-85 0 -165 -39t-167 -111z" />
-<glyph unicode="3" d="M78 59v263q85 -43 187 -70t202 -27q153 0 226 52t73 167q0 103 -84 146t-268 43h-111v237h113q170 0 248.5 44.5t78.5 152.5q0 166 -208 166q-72 0 -146.5 -24t-165.5 -83l-143 213q200 144 477 144q227 0 358.5 -92t131.5 -256q0 -137 -83 -233t-233 -132v-6 q177 -22 268 -107.5t91 -230.5q0 -211 -153 -328.5t-437 -117.5q-238 0 -422 79z" />
-<glyph unicode="4" d="M35 303v215l641 944h285v-919h176v-240h-176v-303h-302v303h-624zM307 543h352v248q0 62 5 180t8 137h-8q-37 -82 -89 -160z" />
-<glyph unicode="5" d="M100 59v267q79 -42 184 -68.5t199 -26.5q283 0 283 232q0 221 -293 221q-53 0 -117 -10.5t-104 -22.5l-123 66l55 745h793v-262h-522l-27 -287l35 7q61 14 151 14q212 0 337.5 -119t125.5 -326q0 -245 -151 -377t-432 -132q-244 0 -394 79z" />
-<glyph unicode="6" d="M72 621q0 434 183.5 646t549.5 212q125 0 196 -15v-247q-89 20 -176 20q-159 0 -259.5 -48t-150.5 -142t-59 -267h13q99 170 317 170q196 0 307 -123t111 -340q0 -234 -132 -370.5t-366 -136.5q-162 0 -282.5 75t-186 219t-65.5 347zM379 510q0 -119 62.5 -201t158.5 -82 q99 0 152 66.5t53 189.5q0 107 -49.5 168.5t-149.5 61.5q-94 0 -160.5 -61t-66.5 -142z" />
-<glyph unicode="7" d="M55 1200v260h1049v-194l-553 -1266h-324l549 1200h-721z" />
-<glyph unicode="8" d="M72 371q0 125 66.5 222t213.5 171q-125 79 -180 169t-55 197q0 157 130 254t339 97q210 0 338.5 -95.5t128.5 -257.5q0 -112 -62 -199.5t-200 -156.5q164 -88 235.5 -183.5t71.5 -209.5q0 -180 -141 -289.5t-371 -109.5q-240 0 -377 102t-137 289zM358 389q0 -86 60 -134 t164 -48q115 0 172 49.5t57 130.5q0 67 -56.5 125.5t-183.5 124.5q-213 -98 -213 -248zM408 1106q0 -60 38.5 -107.5t139.5 -97.5q98 46 137 94t39 111q0 69 -50 109t-128 40q-79 0 -127.5 -40.5t-48.5 -108.5z" />
-<glyph unicode="9" d="M66 971q0 235 133.5 371.5t363.5 136.5q162 0 283.5 -76t186.5 -220.5t65 -344.5q0 -432 -182 -645t-551 -213q-130 0 -197 14v248q84 -21 176 -21q155 0 255 45.5t153 143t61 268.5h-12q-58 -94 -134 -132t-190 -38q-191 0 -301 122.5t-110 340.5zM365 975 q0 -106 49 -168t149 -62q94 0 161 61.5t67 141.5q0 119 -62.5 201t-159.5 82q-96 0 -150 -66t-54 -190z" />
-<glyph unicode=":" horiz-adv-x="584" d="M117 143q0 84 45 127t131 43q83 0 128.5 -44t45.5 -126q0 -79 -46 -124.5t-128 -45.5q-84 0 -130 44.5t-46 125.5zM117 969q0 84 45 127t131 43q83 0 128.5 -44t45.5 -126q0 -81 -46.5 -125.5t-127.5 -44.5q-84 0 -130 44t-46 126z" />
-<glyph unicode=";" horiz-adv-x="594" d="M63 -264q65 266 101 502h280l15 -23q-52 -202 -176 -479h-220zM117 969q0 84 45 127t131 43q83 0 128.5 -44t45.5 -126q0 -81 -46.5 -125.5t-127.5 -44.5q-84 0 -130 44t-46 126z" />
-<glyph unicode="&#x3c;" d="M88 641v143l993 496v-240l-684 -317l684 -281v-239z" />
-<glyph unicode="=" d="M88 418v219h993v-219h-993zM88 805v219h993v-219h-993z" />
-<glyph unicode="&#x3e;" d="M88 203v239l684 281l-684 317v240l993 -496v-143z" />
-<glyph unicode="?" horiz-adv-x="977" d="M6 1358q223 125 473 125q206 0 327.5 -99t121.5 -264q0 -110 -50 -190t-190 -180q-96 -71 -121.5 -108t-25.5 -97v-60h-265v74q0 96 41 167t150 151q105 75 138.5 122t33.5 105q0 65 -48 99t-134 34q-150 0 -342 -98zM244 143q0 84 45 127t131 43q83 0 128.5 -44 t45.5 -126q0 -79 -46 -124.5t-128 -45.5q-84 0 -130 44.5t-46 125.5z" />
-<glyph unicode="@" horiz-adv-x="1837" d="M102 602q0 247 108.5 448.5t309 316t461.5 114.5q220 0 393 -90t267 -256t94 -383q0 -144 -46 -263.5t-130 -187.5t-195 -68q-74 0 -131 35.5t-82 93.5h-16q-108 -129 -275 -129q-177 0 -279 106.5t-102 291.5q0 211 134 340t350 129q86 0 189.5 -16.5t170.5 -39.5 l-23 -489q0 -139 76 -139q64 0 102 93.5t38 244.5q0 161 -67 284.5t-188.5 188.5t-277.5 65q-202 0 -351 -83t-228.5 -239.5t-79.5 -361.5q0 -276 147.5 -423.5t427.5 -147.5q106 0 233 23.5t250 68.5v-192q-214 -91 -475 -91q-380 0 -592.5 200t-212.5 556zM711 627 q0 -211 172 -211q90 0 137 63.5t57 206.5l13 221q-51 11 -115 11q-125 0 -194.5 -78t-69.5 -213z" />
-<glyph unicode="A" horiz-adv-x="1413" d="M0 0l516 1468h379l518 -1468h-334l-106 348h-533l-106 -348h-334zM518 608h381q-147 473 -165.5 535t-26.5 98q-33 -128 -189 -633z" />
-<glyph unicode="B" horiz-adv-x="1376" d="M184 0v1462h455q311 0 451.5 -88.5t140.5 -281.5q0 -131 -61.5 -215t-163.5 -101v-10q139 -31 200.5 -116t61.5 -226q0 -200 -144.5 -312t-392.5 -112h-547zM494 256h202q128 0 189 49t61 150q0 182 -260 182h-192v-381zM494 883h180q126 0 182.5 39t56.5 129 q0 84 -61.5 120.5t-194.5 36.5h-163v-325z" />
-<glyph unicode="C" horiz-adv-x="1305" d="M119 729q0 228 83 399.5t238.5 263t364.5 91.5q213 0 428 -103l-100 -252q-82 39 -165 68t-163 29q-175 0 -271 -131.5t-96 -366.5q0 -489 367 -489q154 0 373 77v-260q-180 -75 -402 -75q-319 0 -488 193.5t-169 555.5z" />
-<glyph unicode="D" horiz-adv-x="1516" d="M184 0v1462h459q358 0 556 -189t198 -528q0 -361 -205.5 -553t-593.5 -192h-414zM494 256h133q448 0 448 481q0 471 -416 471h-165v-952z" />
-<glyph unicode="E" horiz-adv-x="1147" d="M184 0v1462h842v-254h-532v-321h495v-254h-495v-377h532v-256h-842z" />
-<glyph unicode="F" horiz-adv-x="1124" d="M184 0v1462h838v-254h-533v-377h496v-253h-496v-578h-305z" />
-<glyph unicode="G" horiz-adv-x="1483" d="M119 733q0 354 202.5 552t561.5 198q225 0 434 -90l-103 -248q-160 80 -333 80q-201 0 -322 -135t-121 -363q0 -238 97.5 -363.5t283.5 -125.5q97 0 197 20v305h-277v258h580v-758q-141 -46 -265.5 -64.5t-254.5 -18.5q-331 0 -505.5 194.5t-174.5 558.5z" />
-<glyph unicode="H" horiz-adv-x="1567" d="M184 0v1462h310v-573h579v573h309v-1462h-309v631h-579v-631h-310z" />
-<glyph unicode="I" horiz-adv-x="678" d="M184 0v1462h310v-1462h-310z" />
-<glyph unicode="J" horiz-adv-x="678" d="M-152 -150q80 -20 146 -20q102 0 146 63.5t44 198.5v1370h310v-1368q0 -256 -117 -390t-346 -134q-105 0 -183 22v258z" />
-<glyph unicode="K" horiz-adv-x="1360" d="M184 0v1462h310v-669l122 172l396 497h344l-510 -647l514 -815h-352l-383 616l-131 -94v-522h-310z" />
-<glyph unicode="L" horiz-adv-x="1157" d="M184 0v1462h310v-1206h593v-256h-903z" />
-<glyph unicode="M" horiz-adv-x="1931" d="M184 0v1462h422l346 -1118h6l367 1118h422v-1462h-289v692q0 49 1.5 113t13.5 340h-9l-377 -1145h-284l-352 1147h-9q19 -350 19 -467v-680h-277z" />
-<glyph unicode="N" horiz-adv-x="1665" d="M184 0v1462h391l635 -1095h7q-15 285 -15 403v692h279v-1462h-394l-636 1106h-9q19 -293 19 -418v-688h-277z" />
-<glyph unicode="O" horiz-adv-x="1630" d="M119 735q0 365 180.5 557.5t517.5 192.5t515.5 -194t178.5 -558q0 -363 -180 -558t-516 -195t-516 195t-180 560zM444 733q0 -245 93 -369t278 -124q371 0 371 493q0 494 -369 494q-185 0 -279 -124.5t-94 -369.5z" />
-<glyph unicode="P" horiz-adv-x="1286" d="M184 0v1462h467q266 0 404.5 -114.5t138.5 -341.5q0 -236 -147.5 -361t-419.5 -125h-133v-520h-310zM494 774h102q143 0 214 56.5t71 164.5q0 109 -59.5 161t-186.5 52h-141v-434z" />
-<glyph unicode="Q" horiz-adv-x="1630" d="M119 735q0 365 180.5 557.5t517.5 192.5t515.5 -194t178.5 -558q0 -258 -91.5 -432.5t-268.5 -255.5l352 -393h-397l-268 328h-23q-336 0 -516 195t-180 560zM444 733q0 -245 93 -369t278 -124q371 0 371 493q0 494 -369 494q-185 0 -279 -124.5t-94 -369.5z" />
-<glyph unicode="R" horiz-adv-x="1352" d="M184 0v1462h426q298 0 441 -108.5t143 -329.5q0 -129 -71 -229.5t-201 -157.5q330 -493 430 -637h-344l-349 561h-165v-561h-310zM494 813h100q147 0 217 49t70 154q0 104 -71.5 148t-221.5 44h-94v-395z" />
-<glyph unicode="S" horiz-adv-x="1128" d="M94 68v288q148 -66 250.5 -93t187.5 -27q102 0 156.5 39t54.5 116q0 43 -24 76.5t-70.5 64.5t-189.5 99q-134 63 -201 121t-107 135t-40 180q0 194 131.5 305t363.5 111q114 0 217.5 -27t216.5 -76l-100 -241q-117 48 -193.5 67t-150.5 19q-88 0 -135 -41t-47 -107 q0 -41 19 -71.5t60.5 -59t196.5 -102.5q205 -98 281 -196.5t76 -241.5q0 -198 -142.5 -312t-396.5 -114q-234 0 -414 88z" />
-<glyph unicode="T" horiz-adv-x="1186" d="M41 1204v258h1104v-258h-397v-1204h-310v1204h-397z" />
-<glyph unicode="U" horiz-adv-x="1548" d="M174 520v942h309v-895q0 -169 68 -248t225 -79q152 0 220.5 79.5t68.5 249.5v893h309v-946q0 -162 -72.5 -284t-209.5 -187t-324 -65q-282 0 -438 144.5t-156 395.5z" />
-<glyph unicode="V" horiz-adv-x="1331" d="M0 1462h313l275 -870q23 -77 47.5 -179.5t30.5 -142.5q11 92 75 322l277 870h313l-497 -1462h-338z" />
-<glyph unicode="W" horiz-adv-x="1980" d="M0 1462h305l187 -798q49 -221 71 -383q6 57 27.5 176.5t40.5 185.5l213 819h293l213 -819q14 -55 35 -168t32 -194q10 78 32 194.5t40 188.5l186 798h305l-372 -1462h-353l-198 768q-11 41 -37.5 169.5t-30.5 172.5q-6 -54 -30 -173.5t-37 -170.5l-197 -766h-352z" />
-<glyph unicode="X" horiz-adv-x="1366" d="M0 0l485 754l-454 708h342l315 -526l309 526h334l-459 -725l494 -737h-354l-340 553l-340 -553h-332z" />
-<glyph unicode="Y" horiz-adv-x="1278" d="M0 1462h336l303 -602l305 602h334l-485 -893v-569h-308v559z" />
-<glyph unicode="Z" horiz-adv-x="1186" d="M49 0v201l701 1005h-682v256h1050v-200l-700 -1006h719v-256h-1088z" />
-<glyph unicode="[" horiz-adv-x="678" d="M143 -324v1786h484v-211h-224v-1364h224v-211h-484z" />
-<glyph unicode="\" horiz-adv-x="846" d="M12 1462h277l545 -1462h-277z" />
-<glyph unicode="]" horiz-adv-x="678" d="M51 -113h223v1364h-223v211h484v-1786h-484v211z" />
-<glyph unicode="^" horiz-adv-x="1090" d="M8 520l438 950h144l495 -950h-239l-322 643l-280 -643h-236z" />
-<glyph unicode="_" horiz-adv-x="842" d="M-4 -184h850v-140h-850v140z" />
-<glyph unicode="`" horiz-adv-x="1243" d="M332 1548v21h342q63 -101 235 -301v-27h-202q-63 44 -185 142.5t-190 164.5z" />
-<glyph unicode="a" horiz-adv-x="1237" d="M86 334q0 178 124.5 262.5t375.5 93.5l194 6v49q0 170 -174 170q-134 0 -315 -81l-101 206q193 101 428 101q225 0 345 -98t120 -298v-745h-213l-59 152h-8q-77 -97 -158.5 -134.5t-212.5 -37.5q-161 0 -253.5 92t-92.5 262zM399 332q0 -129 148 -129q106 0 169.5 61 t63.5 162v92l-118 -4q-133 -4 -198 -48t-65 -134z" />
-<glyph unicode="b" horiz-adv-x="1296" d="M160 0v1556h305v-362q0 -69 -12 -221h12q107 166 317 166q198 0 310 -154.5t112 -423.5q0 -277 -115.5 -429t-314.5 -152q-197 0 -309 143h-21l-51 -123h-233zM465 563q0 -180 53.5 -258t169.5 -78q94 0 149.5 86.5t55.5 251.5t-56 247.5t-153 82.5q-113 0 -165 -69.5 t-54 -229.5v-33z" />
-<glyph unicode="c" horiz-adv-x="1053" d="M92 553q0 285 142 435.5t407 150.5q194 0 348 -76l-90 -236q-72 29 -134 47.5t-124 18.5q-238 0 -238 -338q0 -328 238 -328q88 0 163 23.5t150 73.5v-261q-74 -47 -149.5 -65t-190.5 -18q-522 0 -522 573z" />
-<glyph unicode="d" horiz-adv-x="1296" d="M92 557q0 275 114.5 428.5t315.5 153.5q211 0 322 -164h10q-23 125 -23 223v358h306v-1556h-234l-59 145h-13q-104 -165 -317 -165q-197 0 -309.5 153t-112.5 424zM401 553q0 -165 57 -247.5t163 -82.5q117 0 171.5 68t59.5 231v33q0 180 -55.5 258t-180.5 78 q-102 0 -158.5 -86.5t-56.5 -251.5z" />
-<glyph unicode="e" horiz-adv-x="1210" d="M92 551q0 281 140.5 434.5t388.5 153.5q237 0 369 -135t132 -373v-148h-721q5 -130 77 -203t202 -73q101 0 191 21t188 67v-236q-80 -40 -171 -59.5t-222 -19.5q-270 0 -422 149t-152 422zM408 686h428q-2 113 -59 174.5t-154 61.5t-152 -61.5t-63 -174.5z" />
-<glyph unicode="f" horiz-adv-x="793" d="M41 889v147l168 82v82q0 191 94 279t301 88q158 0 281 -47l-78 -224q-92 29 -170 29q-65 0 -94 -38.5t-29 -98.5v-70h264v-229h-264v-889h-305v889h-168z" />
-<glyph unicode="g" horiz-adv-x="1157" d="M6 -182q0 101 63 169t185 97q-47 20 -82 65.5t-35 96.5q0 64 37 106.5t107 83.5q-88 38 -139.5 122t-51.5 198q0 183 119 283t340 100q47 0 111.5 -8.5t82.5 -12.5h390v-155l-175 -45q48 -75 48 -168q0 -180 -125.5 -280.5t-348.5 -100.5l-55 3l-45 5q-47 -36 -47 -80 q0 -66 168 -66h190q184 0 280.5 -79t96.5 -232q0 -196 -163.5 -304t-469.5 -108q-234 0 -357.5 81.5t-123.5 228.5zM270 -158q0 -63 60.5 -99t169.5 -36q164 0 257 45t93 123q0 63 -55 87t-170 24h-158q-84 0 -140.5 -39.5t-56.5 -104.5zM381 752q0 -91 41.5 -144t126.5 -53 q86 0 126 53t40 144q0 202 -166 202q-168 0 -168 -202z" />
-<glyph unicode="h" horiz-adv-x="1346" d="M160 0v1556h305v-317q0 -37 -7 -174l-7 -90h16q102 164 324 164q197 0 299 -106t102 -304v-729h-305v653q0 242 -180 242q-128 0 -185 -87t-57 -282v-526h-305z" />
-<glyph unicode="i" horiz-adv-x="625" d="M147 1407q0 149 166 149t166 -149q0 -71 -41.5 -110.5t-124.5 -39.5q-166 0 -166 150zM160 0v1118h305v-1118h-305z" />
-<glyph unicode="j" horiz-adv-x="625" d="M-131 -227q70 -19 143 -19q77 0 112.5 43t35.5 127v1194h305v-1239q0 -178 -103 -274.5t-292 -96.5q-117 0 -201 25v240zM147 1407q0 149 166 149t166 -149q0 -71 -41.5 -110.5t-124.5 -39.5q-166 0 -166 150z" />
-<glyph unicode="k" horiz-adv-x="1270" d="M160 0v1556h305v-694l-16 -254h4l133 170l313 340h344l-444 -485l471 -633h-352l-322 453l-131 -105v-348h-305z" />
-<glyph unicode="l" horiz-adv-x="625" d="M160 0v1556h305v-1556h-305z" />
-<glyph unicode="m" horiz-adv-x="2011" d="M160 0v1118h233l41 -143h17q45 77 130 120.5t195 43.5q251 0 340 -164h27q45 78 132.5 121t197.5 43q190 0 287.5 -97.5t97.5 -312.5v-729h-306v653q0 121 -40.5 181.5t-127.5 60.5q-112 0 -167.5 -80t-55.5 -254v-561h-305v653q0 121 -40.5 181.5t-127.5 60.5 q-117 0 -170 -86t-53 -283v-526h-305z" />
-<glyph unicode="n" horiz-adv-x="1346" d="M160 0v1118h233l41 -143h17q51 81 140.5 122.5t203.5 41.5q195 0 296 -105.5t101 -304.5v-729h-305v653q0 121 -43 181.5t-137 60.5q-128 0 -185 -85.5t-57 -283.5v-526h-305z" />
-<glyph unicode="o" horiz-adv-x="1268" d="M92 561q0 274 143 426t402 152q161 0 284 -70t189 -201t66 -307q0 -273 -144 -427t-401 -154q-161 0 -284 70.5t-189 202.5t-66 308zM403 561q0 -166 54.5 -251t177.5 -85q122 0 175.5 84.5t53.5 251.5q0 166 -54 249t-177 83q-122 0 -176 -82.5t-54 -249.5z" />
-<glyph unicode="p" horiz-adv-x="1296" d="M160 -492v1610h248l43 -145h14q107 166 317 166q198 0 310 -153t112 -425q0 -179 -52.5 -311t-149.5 -201t-228 -69q-197 0 -309 143h-16q16 -140 16 -162v-453h-305zM465 563q0 -180 53.5 -258t169.5 -78q205 0 205 338q0 165 -50.5 247.5t-158.5 82.5 q-113 0 -165 -69.5t-54 -229.5v-33z" />
-<glyph unicode="q" horiz-adv-x="1296" d="M92 557q0 274 114.5 428t313.5 154q106 0 185 -40t139 -124h8l27 143h258v-1610h-306v469q0 61 13 168h-13q-49 -81 -130 -123t-187 -42q-198 0 -310 152.5t-112 424.5zM403 553q0 -168 53.5 -251t166.5 -83q116 0 170 66.5t59 232.5v37q0 180 -55.5 258t-178.5 78 q-215 0 -215 -338z" />
-<glyph unicode="r" horiz-adv-x="930" d="M160 0v1118h231l45 -188h15q52 94 140.5 151.5t192.5 57.5q62 0 103 -9l-23 -286q-37 10 -90 10q-146 0 -227.5 -75t-81.5 -210v-569h-305z" />
-<glyph unicode="s" horiz-adv-x="1018" d="M92 827q0 149 115.5 230.5t327.5 81.5q202 0 393 -88l-92 -220q-84 36 -157 59t-149 23q-135 0 -135 -73q0 -41 43.5 -71t190.5 -89q131 -53 192 -99t90 -106t29 -143q0 -172 -119.5 -262t-357.5 -90q-122 0 -208 16.5t-161 48.5v252q85 -40 191.5 -67t187.5 -27 q166 0 166 96q0 36 -22 58.5t-76 51t-144 66.5q-129 54 -189.5 100t-88 105.5t-27.5 146.5z" />
-<glyph unicode="t" horiz-adv-x="889" d="M47 889v129l168 102l88 236h195v-238h313v-229h-313v-539q0 -65 36.5 -96t96.5 -31q80 0 192 35v-227q-114 -51 -280 -51q-183 0 -266.5 92.5t-83.5 277.5v539h-146z" />
-<glyph unicode="u" horiz-adv-x="1346" d="M154 389v729h305v-653q0 -121 43 -181.5t137 -60.5q128 0 185 85.5t57 283.5v526h305v-1118h-234l-41 143h-16q-49 -78 -139 -120.5t-205 -42.5q-197 0 -297 105.5t-100 303.5z" />
-<glyph unicode="v" horiz-adv-x="1165" d="M0 1118h319l216 -637q36 -121 45 -229h6q5 96 45 229l215 637h319l-426 -1118h-313z" />
-<glyph unicode="w" horiz-adv-x="1753" d="M20 1118h304l129 -495q31 -133 63 -367h6q4 76 35 241l16 85l138 536h336l131 -536q4 -22 12.5 -65t16.5 -91.5t14.5 -95t7.5 -74.5h6q9 72 32 197.5t33 169.5l134 495h299l-322 -1118h-332l-86 391l-116 494h-7l-204 -885h-328z" />
-<glyph unicode="x" horiz-adv-x="1184" d="M10 0l379 571l-360 547h346l217 -356l219 356h346l-364 -547l381 -571h-347l-235 383l-236 -383h-346z" />
-<glyph unicode="y" horiz-adv-x="1165" d="M0 1118h334l211 -629q27 -82 37 -194h6q11 103 43 194l207 629h327l-473 -1261q-65 -175 -185.5 -262t-281.5 -87q-79 0 -155 17v242q55 -13 120 -13q81 0 141.5 49.5t94.5 149.5l18 55z" />
-<glyph unicode="z" horiz-adv-x="999" d="M55 0v180l518 705h-487v233h834v-198l-504 -687h522v-233h-883z" />
-<glyph unicode="{" horiz-adv-x="807" d="M31 449v239q126 0 191 44t65 126v8v318q0 153 97 215.5t341 62.5v-225q-99 -3 -136.5 -38t-37.5 -103v-299q-6 -188 -234 -222v-12q234 -35 234 -212v-9v-299q0 -68 37 -103t137 -38v-226q-244 0 -341 62.5t-97 216.5v315q0 87 -65.5 133t-190.5 46z" />
-<glyph unicode="|" horiz-adv-x="1128" d="M455 -465v2015h219v-2015h-219z" />
-<glyph unicode="}" horiz-adv-x="807" d="M82 -98q99 2 136.5 36t37.5 105v299v11q0 86 59 139.5t174 70.5v12q-227 34 -233 222v299q0 70 -37 104t-137 37v225q167 0 262 -26.5t135.5 -84t40.5 -167.5v-318v-10q0 -84 61.5 -126t194.5 -42v-239q-125 0 -190.5 -41t-65.5 -138v-315q0 -112 -41 -169t-135.5 -83.5 t-261.5 -26.5v226z" />
-<glyph unicode="~" d="M88 551v231q103 109 256 109q73 0 137.5 -16t139.5 -48q129 -55 227 -55q53 0 116 32t117 89v-231q-101 -109 -256 -109q-66 0 -126 13t-150 50q-131 56 -227 56q-55 0 -117.5 -33.5t-116.5 -87.5z" />
-<glyph unicode="&#xa1;" horiz-adv-x="586" d="M117 -369l51 975h244l51 -975h-346zM117 948q0 81 46.5 125.5t127.5 44.5q84 0 130 -44t46 -126q0 -84 -45 -127t-131 -43q-83 0 -128.5 44t-45.5 126z" />
-<glyph unicode="&#xa2;" d="M143 741q0 261 104.5 403t315.5 173v166h178v-158q166 -9 299 -74l-90 -235q-72 29 -134 47t-124 18q-121 0 -179 -83.5t-58 -254.5q0 -327 237 -327q82 0 148 15.5t166 60.5v-254q-127 -61 -265 -70v-188h-178v196q-420 59 -420 565z" />
-<glyph unicode="&#xa3;" d="M82 0v248q103 44 141.5 101t38.5 157v145h-178v219h178v195q0 201 114.5 309.5t323.5 108.5q195 0 390 -82l-93 -230q-157 64 -272 64q-78 0 -120 -44.5t-42 -127.5v-193h375v-219h-375v-143q0 -170 -151 -248h718v-260h-1048z" />
-<glyph unicode="&#xa4;" d="M113 1047l147 147l127 -127q91 53 197 53q105 0 196 -55l127 129l150 -143l-129 -129q53 -89 53 -199q0 -107 -53 -199l125 -125l-146 -145l-127 125q-95 -51 -196 -51q-115 0 -199 51l-125 -123l-145 145l127 125q-54 93 -54 197q0 102 54 197zM395 723 q0 -77 54.5 -132.5t134.5 -55.5q81 0 136.5 55t55.5 133q0 80 -56.5 135t-135.5 55q-78 0 -133.5 -56t-55.5 -134z" />
-<glyph unicode="&#xa5;" d="M6 1462h316l262 -602l264 602h313l-383 -747h195v-178h-246v-138h246v-178h-246v-221h-287v221h-247v178h247v138h-247v178h190z" />
-<glyph unicode="&#xa6;" horiz-adv-x="1128" d="M455 350h219v-815h-219v815zM455 735v815h219v-815h-219z" />
-<glyph unicode="&#xa7;" horiz-adv-x="995" d="M106 59v207q81 -41 180 -69.5t169 -28.5q194 0 194 117q0 39 -18.5 63t-63.5 49.5t-125 59.5q-183 74 -252 152.5t-69 195.5q0 79 36 144.5t97 105.5q-133 84 -133 233q0 131 111.5 210t293.5 79q170 0 363 -84l-82 -190q-68 32 -138.5 57.5t-148.5 25.5q-81 0 -118 -23 t-37 -71q0 -49 49.5 -86t163.5 -82q163 -64 240 -148.5t77 -193.5q0 -177 -125 -260q62 -40 93.5 -92.5t31.5 -126.5q0 -148 -119.5 -235.5t-320.5 -87.5q-203 0 -349 79zM344 827q0 -67 65 -119t181 -98q78 57 78 146q0 68 -50.5 115t-183.5 96q-37 -14 -63.5 -53.5 t-26.5 -86.5z" />
-<glyph unicode="&#xa8;" horiz-adv-x="1243" d="M279 1405q0 65 37.5 100t101.5 35q66 0 103.5 -37t37.5 -98q0 -60 -38 -96.5t-103 -36.5q-64 0 -101.5 35t-37.5 98zM682 1405q0 70 40.5 102.5t100.5 32.5q65 0 103.5 -36t38.5 -99q0 -61 -39 -97t-103 -36q-60 0 -100.5 32.5t-40.5 100.5z" />
-<glyph unicode="&#xa9;" horiz-adv-x="1704" d="M100 731q0 200 100 375t275 276t377 101q200 0 375 -100t276 -275t101 -377q0 -197 -97 -370t-272 -277t-383 -104q-207 0 -382 103.5t-272.5 276.5t-97.5 371zM242 731q0 -164 82 -305.5t224 -223t304 -81.5q164 0 305.5 82t223 224t81.5 304q0 164 -82 305.5t-224 223 t-304 81.5q-164 0 -305.5 -82t-223 -224t-81.5 -304zM461 733q0 220 110.5 342.5t309.5 122.5q149 0 305 -78l-74 -168q-113 58 -217 58q-97 0 -150 -74t-53 -205q0 -280 203 -280q57 0 123 15t123 44v-191q-120 -57 -252 -57q-204 0 -316 125t-112 346z" />
-<glyph unicode="&#xaa;" horiz-adv-x="784" d="M47 975q0 109 82.5 163.5t267.5 63.5l99 4q0 117 -127 117q-81 0 -217 -61l-66 135q66 32 145.5 57t178.5 25q137 0 211.5 -71t74.5 -202v-442h-135l-31 110q-43 -58 -105 -90t-136 -32q-117 0 -179.5 58.5t-62.5 164.5zM252 977q0 -38 23 -56t55 -18q77 0 121.5 41.5 t44.5 106.5v36l-99 -6q-145 -10 -145 -104z" />
-<glyph unicode="&#xab;" horiz-adv-x="1260" d="M82 547v26l371 455l219 -119l-279 -348l279 -348l-219 -119zM588 547v26l370 455l220 -119l-279 -348l279 -348l-220 -119z" />
-<glyph unicode="&#xac;" d="M88 612v219h993v-583h-219v364h-774z" />
-<glyph unicode="&#xad;" horiz-adv-x="659" d="M61 424v250h537v-250h-537z" />
-<glyph unicode="&#xae;" horiz-adv-x="1704" d="M100 731q0 200 100 375t275 276t377 101q200 0 375 -100t276 -275t101 -377q0 -197 -97 -370t-272 -277t-383 -104q-207 0 -382 103.5t-272.5 276.5t-97.5 371zM242 731q0 -164 82 -305.5t224 -223t304 -81.5q164 0 305.5 82t223 224t81.5 304q0 164 -82 305.5t-224 223 t-304 81.5q-164 0 -305.5 -82t-223 -224t-81.5 -304zM543 272v916h264q181 0 265.5 -70t84.5 -213q0 -170 -143 -233l237 -400h-254l-178 338h-47v-338h-229zM772 778h31q66 0 94.5 28.5t28.5 94.5q0 65 -28 92t-97 27h-29v-242z" />
-<glyph unicode="&#xaf;" horiz-adv-x="1024" d="M-6 1556v201h1036v-201h-1036z" />
-<glyph unicode="&#xb0;" horiz-adv-x="877" d="M92 1137q0 92 46 172t126 127t174 47q92 0 172.5 -46t127 -127t46.5 -173q0 -93 -46.5 -173.5t-126.5 -125.5t-173 -45q-145 0 -245.5 99.5t-100.5 244.5zM283 1137q0 -64 44.5 -109t110.5 -45t111 46t45 108q0 63 -45.5 110t-110.5 47q-64 0 -109.5 -46t-45.5 -111z" />
-<glyph unicode="&#xb1;" d="M88 0v219h993v-219h-993zM88 674v219h387v389h219v-389h387v-219h-387v-385h-219v385h-387z" />
-<glyph unicode="&#xb2;" horiz-adv-x="776" d="M47 1354q147 129 336 129q137 0 216 -66.5t79 -183.5q0 -85 -47 -160t-176 -192l-105 -95h352v-200h-647v168l224 219q102 100 130.5 144.5t28.5 94.5q0 38 -24 58t-64 20q-81 0 -180 -88z" />
-<glyph unicode="&#xb3;" horiz-adv-x="776" d="M59 639v190q148 -90 271 -90q143 0 143 107q0 53 -44 79.5t-122 26.5h-112v160h92q83 0 123.5 26t40.5 83q0 38 -25 63t-76 25q-47 0 -89 -19t-99 -59l-101 141q62 47 137.5 78t178.5 31q127 0 208 -64t81 -168q0 -143 -170 -198v-13q94 -20 146 -75t52 -134 q0 -121 -88 -190.5t-274 -69.5q-143 0 -273 70z" />
-<glyph unicode="&#xb4;" horiz-adv-x="1243" d="M332 1241v27q172 200 235 301h342v-21q-52 -52 -177.5 -154.5t-196.5 -152.5h-203z" />
-<glyph unicode="&#xb5;" horiz-adv-x="1352" d="M160 -492v1610h305v-653q0 -121 44 -181.5t138 -60.5q126 0 183 86.5t57 282.5v526h305v-1118h-231l-43 150h-15q-42 -85 -102 -127.5t-148 -42.5q-62 0 -114 23t-84 67l5 -85l5 -157v-320h-305z" />
-<glyph unicode="&#xb6;" horiz-adv-x="1341" d="M113 1042q0 260 109 387t341 127h604v-1816h-161v1616h-166v-1616h-162v819q-62 -18 -146 -18q-216 0 -317.5 125t-101.5 376z" />
-<glyph unicode="&#xb7;" horiz-adv-x="584" d="M117 723q0 84 45 127t131 43q83 0 128.5 -44t45.5 -126q0 -81 -46.5 -125.5t-127.5 -44.5q-84 0 -130 44t-46 126z" />
-<glyph unicode="&#xb8;" horiz-adv-x="420" d="M-37 -303q27 -7 72.5 -14t70.5 -7q72 0 72 62q0 83 -166 108l78 154h193l-27 -61q74 -24 118 -74.5t44 -114.5q0 -128 -75.5 -185t-233.5 -57q-78 0 -146 21v168z" />
-<glyph unicode="&#xb9;" horiz-adv-x="776" d="M92 1227l301 235h191v-876h-238v446l3 112l5 95q-27 -36 -75 -78l-78 -61z" />
-<glyph unicode="&#xba;" horiz-adv-x="795" d="M57 1116q0 169 89.5 266t252.5 97q152 0 245 -98.5t93 -264.5q0 -171 -91.5 -267.5t-250.5 -96.5q-153 0 -245.5 98.5t-92.5 265.5zM260 1116q0 -100 32.5 -150.5t104.5 -50.5t103.5 50.5t31.5 150.5t-31.5 149.5t-103.5 49.5t-104.5 -49.5t-32.5 -149.5z" />
-<glyph unicode="&#xbb;" horiz-adv-x="1260" d="M82 213l278 348l-278 348l219 119l371 -455v-26l-371 -453zM588 213l278 348l-278 348l219 119l371 -455v-26l-371 -453z" />
-<glyph unicode="&#xbc;" horiz-adv-x="1804" d="M46 1227l301 235h191v-876h-238v446l3 112l5 95q-27 -36 -75 -78l-78 -61zM320 0l811 1462h239l-811 -1462h-239zM936 152v154l385 577h236v-563h125v-168h-125v-151h-238v151h-383zM1121 320h198v164q0 86 6 184q-9 -26 -35.5 -80t-41.5 -77z" />
-<glyph unicode="&#xbd;" horiz-adv-x="1804" d="M46 1227l301 235h191v-876h-238v446l3 112l5 95q-27 -36 -75 -78l-78 -61zM320 0l811 1462h239l-811 -1462h-239zM1061 769q147 129 336 129q137 0 216 -66.5t79 -183.5q0 -85 -47 -160t-176 -192l-105 -95h352v-200h-647v168l224 219q102 100 130.5 144.5t28.5 94.5 q0 38 -24 58t-64 20q-81 0 -180 -88z" />
-<glyph unicode="&#xbe;" horiz-adv-x="1804" d="M90 639v190q148 -90 271 -90q143 0 143 107q0 53 -44 79.5t-122 26.5h-112v160h92q83 0 123.5 26t40.5 83q0 38 -25 63t-76 25q-47 0 -89 -19t-99 -59l-101 141q62 47 137.5 78t178.5 31q127 0 208 -64t81 -168q0 -143 -170 -198v-13q94 -20 146 -75t52 -134 q0 -121 -88 -190.5t-274 -69.5q-143 0 -273 70zM391 0l811 1462h239l-811 -1462h-239zM966 152v154l385 577h236v-563h125v-168h-125v-151h-238v151h-383zM1151 320h198v164q0 86 6 184q-9 -26 -35.5 -80t-41.5 -77z" />
-<glyph unicode="&#xbf;" horiz-adv-x="977" d="M61 -29q0 108 48.5 187t191.5 184q95 70 121.5 107t26.5 98v59h264v-74q0 -98 -44.5 -169t-152.5 -148q-109 -78 -137.5 -122t-28.5 -107q0 -57 43.5 -94t132.5 -37q79 0 169 29t186 71l102 -221q-98 -56 -221.5 -90.5t-229.5 -34.5q-220 0 -345.5 96.5t-125.5 265.5z M395 948q0 81 46.5 125.5t127.5 44.5q84 0 130 -44t46 -126q0 -84 -45 -127t-131 -43q-83 0 -128.5 44t-45.5 126z" />
-<glyph unicode="&#xc0;" horiz-adv-x="1413" d="M0 0l516 1468h379l518 -1468h-334l-106 348h-533l-106 -348h-334zM518 608h381q-147 473 -165.5 535t-26.5 98q-33 -128 -189 -633zM338 1886v21h342q63 -101 235 -301v-27h-202q-63 44 -185 142.5t-190 164.5z" />
-<glyph unicode="&#xc1;" horiz-adv-x="1413" d="M0 0l516 1468h379l518 -1468h-334l-106 348h-533l-106 -348h-334zM518 608h381q-147 473 -165.5 535t-26.5 98q-33 -128 -189 -633zM541 1579v27q172 200 235 301h342v-21q-52 -52 -177.5 -154.5t-196.5 -152.5h-203z" />
-<glyph unicode="&#xc2;" horiz-adv-x="1413" d="M0 0l516 1468h379l518 -1468h-334l-106 348h-533l-106 -348h-334zM518 608h381q-147 473 -165.5 535t-26.5 98q-33 -128 -189 -633zM272 1579v27q189 189 256 301h357q31 -52 107.5 -141.5t148.5 -159.5v-27h-203q-157 93 -234 176q-78 -81 -229 -176h-203z" />
-<glyph unicode="&#xc3;" horiz-adv-x="1413" d="M0 0l516 1468h379l518 -1468h-334l-106 348h-533l-106 -348h-334zM518 608h381q-147 473 -165.5 535t-26.5 98q-33 -128 -189 -633zM293 1577q11 145 82.5 227t189.5 82q41 0 80.5 -16.5t78 -36t75.5 -35.5t73 -16q31 0 59.5 26t41.5 80h149q-11 -145 -83.5 -227 t-188.5 -82q-41 0 -80.5 16.5t-78 36t-75.5 36t-73 16.5q-31 0 -59.5 -26.5t-41.5 -80.5h-149z" />
-<glyph unicode="&#xc4;" horiz-adv-x="1413" d="M0 0l516 1468h379l518 -1468h-334l-106 348h-533l-106 -348h-334zM518 608h381q-147 473 -165.5 535t-26.5 98q-33 -128 -189 -633zM365 1743q0 65 37.5 100t101.5 35q66 0 103.5 -37t37.5 -98q0 -60 -38 -96.5t-103 -36.5q-64 0 -101.5 35t-37.5 98zM768 1743 q0 70 40.5 102.5t100.5 32.5q65 0 103.5 -36t38.5 -99q0 -61 -39 -97t-103 -36q-60 0 -100.5 32.5t-40.5 100.5z" />
-<glyph unicode="&#xc5;" horiz-adv-x="1413" d="M0 0l516 1468h379l518 -1468h-334l-106 348h-533l-106 -348h-334zM518 608h381q-147 473 -165.5 535t-26.5 98q-33 -128 -189 -633zM457 1565q0 108 67.5 172.5t180.5 64.5q110 0 182 -66t72 -169q0 -108 -71 -174t-183 -66t-180 64t-68 174zM609 1565q0 -45 24 -71 t72 -26q42 0 69 26t27 71t-27 70.5t-69 25.5t-69 -25.5t-27 -70.5z" />
-<glyph unicode="&#xc6;" horiz-adv-x="1950" d="M0 0l655 1462h1174v-254h-563v-321h526v-254h-526v-377h563v-256h-873v348h-491l-150 -348h-315zM578 608h378v590h-127z" />
-<glyph unicode="&#xc7;" horiz-adv-x="1305" d="M119 729q0 228 83 399.5t238.5 263t364.5 91.5q213 0 428 -103l-100 -252q-82 39 -165 68t-163 29q-175 0 -271 -131.5t-96 -366.5q0 -489 367 -489q154 0 373 77v-260q-180 -75 -402 -75q-319 0 -488 193.5t-169 555.5zM504 -303q27 -7 72.5 -14t70.5 -7q72 0 72 62 q0 83 -166 108l78 154h193l-27 -61q74 -24 118 -74.5t44 -114.5q0 -128 -75.5 -185t-233.5 -57q-78 0 -146 21v168z" />
-<glyph unicode="&#xc8;" horiz-adv-x="1147" d="M184 0v1462h842v-254h-532v-321h495v-254h-495v-377h532v-256h-842zM259 1886v21h342q63 -101 235 -301v-27h-202q-63 44 -185 142.5t-190 164.5z" />
-<glyph unicode="&#xc9;" horiz-adv-x="1147" d="M184 0v1462h842v-254h-532v-321h495v-254h-495v-377h532v-256h-842zM424 1579v27q172 200 235 301h342v-21q-52 -52 -177.5 -154.5t-196.5 -152.5h-203z" />
-<glyph unicode="&#xca;" horiz-adv-x="1147" d="M184 0v1462h842v-254h-532v-321h495v-254h-495v-377h532v-256h-842zM175 1579v27q189 189 256 301h357q31 -52 107.5 -141.5t148.5 -159.5v-27h-203q-157 93 -234 176q-78 -81 -229 -176h-203z" />
-<glyph unicode="&#xcb;" horiz-adv-x="1147" d="M184 0v1462h842v-254h-532v-321h495v-254h-495v-377h532v-256h-842zM272 1743q0 65 37.5 100t101.5 35q66 0 103.5 -37t37.5 -98q0 -60 -38 -96.5t-103 -36.5q-64 0 -101.5 35t-37.5 98zM675 1743q0 70 40.5 102.5t100.5 32.5q65 0 103.5 -36t38.5 -99q0 -61 -39 -97 t-103 -36q-60 0 -100.5 32.5t-40.5 100.5z" />
-<glyph unicode="&#xcc;" horiz-adv-x="678" d="M184 0v1462h310v-1462h-310zM-58 1886v21h342q63 -101 235 -301v-27h-202q-63 44 -185 142.5t-190 164.5z" />
-<glyph unicode="&#xcd;" horiz-adv-x="678" d="M184 0v1462h310v-1462h-310zM167 1579v27q172 200 235 301h342v-21q-52 -52 -177.5 -154.5t-196.5 -152.5h-203z" />
-<glyph unicode="&#xce;" horiz-adv-x="678" d="M184 0v1462h310v-1462h-310zM-96 1579v27q189 189 256 301h357q31 -52 107.5 -141.5t148.5 -159.5v-27h-203q-157 93 -234 176q-78 -81 -229 -176h-203z" />
-<glyph unicode="&#xcf;" horiz-adv-x="678" d="M184 0v1462h310v-1462h-310zM-3 1743q0 65 37.5 100t101.5 35q66 0 103.5 -37t37.5 -98q0 -60 -38 -96.5t-103 -36.5q-64 0 -101.5 35t-37.5 98zM400 1743q0 70 40.5 102.5t100.5 32.5q65 0 103.5 -36t38.5 -99q0 -61 -39 -97t-103 -36q-60 0 -100.5 32.5t-40.5 100.5z " />
-<glyph unicode="&#xd0;" horiz-adv-x="1516" d="M47 596v254h137v612h459q358 0 556 -189t198 -528q0 -361 -205.5 -553t-593.5 -192h-414v596h-137zM494 256h131q450 0 450 481q0 232 -104 351.5t-314 119.5h-163v-358h237v-254h-237v-340z" />
-<glyph unicode="&#xd1;" horiz-adv-x="1665" d="M184 0v1462h391l635 -1095h7q-15 285 -15 403v692h279v-1462h-394l-636 1106h-9q19 -293 19 -418v-688h-277zM418 1577q11 145 82.5 227t189.5 82q41 0 80.5 -16.5t78 -36t75.5 -35.5t73 -16q31 0 59.5 26t41.5 80h149q-11 -145 -83.5 -227t-188.5 -82q-41 0 -80.5 16.5 t-78 36t-75.5 36t-73 16.5q-31 0 -59.5 -26.5t-41.5 -80.5h-149z" />
-<glyph unicode="&#xd2;" horiz-adv-x="1630" d="M119 735q0 365 180.5 557.5t517.5 192.5t515.5 -194t178.5 -558q0 -363 -180 -558t-516 -195t-516 195t-180 560zM444 733q0 -245 93 -369t278 -124q371 0 371 493q0 494 -369 494q-185 0 -279 -124.5t-94 -369.5zM449 1886v21h342q63 -101 235 -301v-27h-202 q-63 44 -185 142.5t-190 164.5z" />
-<glyph unicode="&#xd3;" horiz-adv-x="1630" d="M119 735q0 365 180.5 557.5t517.5 192.5t515.5 -194t178.5 -558q0 -363 -180 -558t-516 -195t-516 195t-180 560zM444 733q0 -245 93 -369t278 -124q371 0 371 493q0 494 -369 494q-185 0 -279 -124.5t-94 -369.5zM658 1579v27q172 200 235 301h342v-21 q-52 -52 -177.5 -154.5t-196.5 -152.5h-203z" />
-<glyph unicode="&#xd4;" horiz-adv-x="1630" d="M119 735q0 365 180.5 557.5t517.5 192.5t515.5 -194t178.5 -558q0 -363 -180 -558t-516 -195t-516 195t-180 560zM444 733q0 -245 93 -369t278 -124q371 0 371 493q0 494 -369 494q-185 0 -279 -124.5t-94 -369.5zM381 1579v27q189 189 256 301h357q31 -52 107.5 -141.5 t148.5 -159.5v-27h-203q-157 93 -234 176q-78 -81 -229 -176h-203z" />
-<glyph unicode="&#xd5;" horiz-adv-x="1630" d="M119 735q0 365 180.5 557.5t517.5 192.5t515.5 -194t178.5 -558q0 -363 -180 -558t-516 -195t-516 195t-180 560zM444 733q0 -245 93 -369t278 -124q371 0 371 493q0 494 -369 494q-185 0 -279 -124.5t-94 -369.5zM402 1577q11 145 82.5 227t189.5 82q41 0 80.5 -16.5 t78 -36t75.5 -35.5t73 -16q31 0 59.5 26t41.5 80h149q-11 -145 -83.5 -227t-188.5 -82q-41 0 -80.5 16.5t-78 36t-75.5 36t-73 16.5q-31 0 -59.5 -26.5t-41.5 -80.5h-149z" />
-<glyph unicode="&#xd6;" horiz-adv-x="1630" d="M119 735q0 365 180.5 557.5t517.5 192.5t515.5 -194t178.5 -558q0 -363 -180 -558t-516 -195t-516 195t-180 560zM444 733q0 -245 93 -369t278 -124q371 0 371 493q0 494 -369 494q-185 0 -279 -124.5t-94 -369.5zM474 1743q0 65 37.5 100t101.5 35q66 0 103.5 -37 t37.5 -98q0 -60 -38 -96.5t-103 -36.5q-64 0 -101.5 35t-37.5 98zM877 1743q0 70 40.5 102.5t100.5 32.5q65 0 103.5 -36t38.5 -99q0 -61 -39 -97t-103 -36q-60 0 -100.5 32.5t-40.5 100.5z" />
-<glyph unicode="&#xd7;" d="M129 1024l152 154l301 -299l305 299l153 -150l-305 -305l301 -303l-149 -152l-305 301l-301 -299l-150 152l297 301z" />
-<glyph unicode="&#xd8;" horiz-adv-x="1630" d="M119 735q0 365 180.5 557.5t517.5 192.5q198 0 344 -70l84 125l160 -104l-88 -131q194 -194 194 -572q0 -363 -180 -558t-516 -195q-197 0 -336 65l-90 -135l-162 108l90 136q-198 194 -198 581zM444 733q0 -191 56 -307l506 756q-84 45 -189 45q-185 0 -279 -124.5 t-94 -369.5zM635 279q76 -39 180 -39q371 0 371 493q0 180 -51 297z" />
-<glyph unicode="&#xd9;" horiz-adv-x="1548" d="M174 520v942h309v-895q0 -169 68 -248t225 -79q152 0 220.5 79.5t68.5 249.5v893h309v-946q0 -162 -72.5 -284t-209.5 -187t-324 -65q-282 0 -438 144.5t-156 395.5zM375 1886v21h342q63 -101 235 -301v-27h-202q-63 44 -185 142.5t-190 164.5z" />
-<glyph unicode="&#xda;" horiz-adv-x="1548" d="M174 520v942h309v-895q0 -169 68 -248t225 -79q152 0 220.5 79.5t68.5 249.5v893h309v-946q0 -162 -72.5 -284t-209.5 -187t-324 -65q-282 0 -438 144.5t-156 395.5zM602 1579v27q172 200 235 301h342v-21q-52 -52 -177.5 -154.5t-196.5 -152.5h-203z" />
-<glyph unicode="&#xdb;" horiz-adv-x="1548" d="M174 520v942h309v-895q0 -169 68 -248t225 -79q152 0 220.5 79.5t68.5 249.5v893h309v-946q0 -162 -72.5 -284t-209.5 -187t-324 -65q-282 0 -438 144.5t-156 395.5zM340 1579v27q189 189 256 301h357q31 -52 107.5 -141.5t148.5 -159.5v-27h-203q-157 93 -234 176 q-78 -81 -229 -176h-203z" />
-<glyph unicode="&#xdc;" horiz-adv-x="1548" d="M174 520v942h309v-895q0 -169 68 -248t225 -79q152 0 220.5 79.5t68.5 249.5v893h309v-946q0 -162 -72.5 -284t-209.5 -187t-324 -65q-282 0 -438 144.5t-156 395.5zM433 1743q0 65 37.5 100t101.5 35q66 0 103.5 -37t37.5 -98q0 -60 -38 -96.5t-103 -36.5 q-64 0 -101.5 35t-37.5 98zM836 1743q0 70 40.5 102.5t100.5 32.5q65 0 103.5 -36t38.5 -99q0 -61 -39 -97t-103 -36q-60 0 -100.5 32.5t-40.5 100.5z" />
-<glyph unicode="&#xdd;" horiz-adv-x="1278" d="M0 1462h336l303 -602l305 602h334l-485 -893v-569h-308v559zM461 1579v27q172 200 235 301h342v-21q-52 -52 -177.5 -154.5t-196.5 -152.5h-203z" />
-<glyph unicode="&#xde;" horiz-adv-x="1286" d="M184 0v1462h310v-229h178q254 0 388 -119t134 -344q0 -229 -142.5 -353t-404.5 -124h-153v-293h-310zM494 543h100q145 0 216 52.5t71 174.5q0 107 -63.5 159t-199.5 52h-124v-438z" />
-<glyph unicode="&#xdf;" horiz-adv-x="1456" d="M160 0v1139q0 201 146.5 314.5t404.5 113.5q244 0 391 -88.5t147 -237.5q0 -64 -21 -112.5t-53 -86.5t-69 -67t-69 -53t-53 -45t-21 -43q0 -27 26.5 -53t92.5 -66q146 -91 198.5 -140t78 -110t25.5 -139q0 -172 -116.5 -259t-343.5 -87q-99 0 -171 14.5t-132 48.5v242 q53 -36 135.5 -61t146.5 -25q168 0 168 123q0 41 -16 66.5t-57 55.5t-115 72q-126 72 -175 131.5t-49 140.5q0 64 35 117t105 102q77 55 108 95t31 86q0 60 -63.5 100.5t-163.5 40.5q-116 0 -181 -52.5t-65 -148.5v-1128h-305z" />
-<glyph unicode="&#xe0;" horiz-adv-x="1237" d="M86 334q0 178 124.5 262.5t375.5 93.5l194 6v49q0 170 -174 170q-134 0 -315 -81l-101 206q193 101 428 101q225 0 345 -98t120 -298v-745h-213l-59 152h-8q-77 -97 -158.5 -134.5t-212.5 -37.5q-161 0 -253.5 92t-92.5 262zM399 332q0 -129 148 -129q106 0 169.5 61 t63.5 162v92l-118 -4q-133 -4 -198 -48t-65 -134zM239 1548v21h342q63 -101 235 -301v-27h-202q-63 44 -185 142.5t-190 164.5z" />
-<glyph unicode="&#xe1;" horiz-adv-x="1237" d="M86 334q0 178 124.5 262.5t375.5 93.5l194 6v49q0 170 -174 170q-134 0 -315 -81l-101 206q193 101 428 101q225 0 345 -98t120 -298v-745h-213l-59 152h-8q-77 -97 -158.5 -134.5t-212.5 -37.5q-161 0 -253.5 92t-92.5 262zM399 332q0 -129 148 -129q106 0 169.5 61 t63.5 162v92l-118 -4q-133 -4 -198 -48t-65 -134zM441 1241v27q172 200 235 301h342v-21q-52 -52 -177.5 -154.5t-196.5 -152.5h-203z" />
-<glyph unicode="&#xe2;" horiz-adv-x="1237" d="M86 334q0 178 124.5 262.5t375.5 93.5l194 6v49q0 170 -174 170q-134 0 -315 -81l-101 206q193 101 428 101q225 0 345 -98t120 -298v-745h-213l-59 152h-8q-77 -97 -158.5 -134.5t-212.5 -37.5q-161 0 -253.5 92t-92.5 262zM399 332q0 -129 148 -129q106 0 169.5 61 t63.5 162v92l-118 -4q-133 -4 -198 -48t-65 -134zM177 1240v27q189 189 256 301h357q31 -52 107.5 -141.5t148.5 -159.5v-27h-203q-157 93 -234 176q-78 -81 -229 -176h-203z" />
-<glyph unicode="&#xe3;" horiz-adv-x="1237" d="M86 334q0 178 124.5 262.5t375.5 93.5l194 6v49q0 170 -174 170q-134 0 -315 -81l-101 206q193 101 428 101q225 0 345 -98t120 -298v-745h-213l-59 152h-8q-77 -97 -158.5 -134.5t-212.5 -37.5q-161 0 -253.5 92t-92.5 262zM399 332q0 -129 148 -129q106 0 169.5 61 t63.5 162v92l-118 -4q-133 -4 -198 -48t-65 -134zM217 1239q11 145 82.5 227t189.5 82q41 0 80.5 -16.5t78 -36t75.5 -35.5t73 -16q31 0 59.5 26t41.5 80h149q-11 -145 -83.5 -227t-188.5 -82q-41 0 -80.5 16.5t-78 36t-75.5 36t-73 16.5q-31 0 -59.5 -26.5t-41.5 -80.5 h-149z" />
-<glyph unicode="&#xe4;" horiz-adv-x="1237" d="M86 334q0 178 124.5 262.5t375.5 93.5l194 6v49q0 170 -174 170q-134 0 -315 -81l-101 206q193 101 428 101q225 0 345 -98t120 -298v-745h-213l-59 152h-8q-77 -97 -158.5 -134.5t-212.5 -37.5q-161 0 -253.5 92t-92.5 262zM399 332q0 -129 148 -129q106 0 169.5 61 t63.5 162v92l-118 -4q-133 -4 -198 -48t-65 -134zM285 1405q0 65 37.5 100t101.5 35q66 0 103.5 -37t37.5 -98q0 -60 -38 -96.5t-103 -36.5q-64 0 -101.5 35t-37.5 98zM688 1405q0 70 40.5 102.5t100.5 32.5q65 0 103.5 -36t38.5 -99q0 -61 -39 -97t-103 -36 q-60 0 -100.5 32.5t-40.5 100.5z" />
-<glyph unicode="&#xe5;" horiz-adv-x="1237" d="M86 334q0 178 124.5 262.5t375.5 93.5l194 6v49q0 170 -174 170q-134 0 -315 -81l-101 206q193 101 428 101q225 0 345 -98t120 -298v-745h-213l-59 152h-8q-77 -97 -158.5 -134.5t-212.5 -37.5q-161 0 -253.5 92t-92.5 262zM399 332q0 -129 148 -129q106 0 169.5 61 t63.5 162v92l-118 -4q-133 -4 -198 -48t-65 -134zM381 1477q0 108 67.5 172.5t180.5 64.5q110 0 182 -66t72 -169q0 -108 -71 -174t-183 -66t-180 64t-68 174zM533 1477q0 -45 24 -71t72 -26q42 0 69 26t27 71t-27 70.5t-69 25.5t-69 -25.5t-27 -70.5z" />
-<glyph unicode="&#xe6;" horiz-adv-x="1878" d="M86 334q0 178 121 262.5t362 93.5l191 6v84q0 69 -44.5 102t-121.5 33q-140 0 -305 -77l-99 202q189 101 422 101q227 0 342 -131q66 64 152.5 96.5t206.5 32.5q221 0 349 -137.5t128 -370.5v-148h-723q5 -130 77 -203t202 -73q196 0 380 88v-236q-79 -39 -171 -59 t-226 -20q-137 0 -249.5 50.5t-184.5 155.5q-98 -117 -196.5 -161.5t-256.5 -44.5q-161 0 -258.5 94.5t-97.5 259.5zM399 332q0 -129 140 -129q101 0 161 61t60 162v92l-113 -4q-124 -4 -186 -47.5t-62 -134.5zM1073 686h430q-2 112 -55 174t-141 62q-217 0 -234 -236z" />
-<glyph unicode="&#xe7;" horiz-adv-x="1053" d="M92 553q0 285 142 435.5t407 150.5q194 0 348 -76l-90 -236q-72 29 -134 47.5t-124 18.5q-238 0 -238 -338q0 -328 238 -328q88 0 163 23.5t150 73.5v-261q-74 -47 -149.5 -65t-190.5 -18q-522 0 -522 573zM350 -303q27 -7 72.5 -14t70.5 -7q72 0 72 62q0 83 -166 108 l78 154h193l-27 -61q74 -24 118 -74.5t44 -114.5q0 -128 -75.5 -185t-233.5 -57q-78 0 -146 21v168z" />
-<glyph unicode="&#xe8;" horiz-adv-x="1210" d="M92 551q0 281 140.5 434.5t388.5 153.5q237 0 369 -135t132 -373v-148h-721q5 -130 77 -203t202 -73q101 0 191 21t188 67v-236q-80 -40 -171 -59.5t-222 -19.5q-270 0 -422 149t-152 422zM408 686h428q-2 113 -59 174.5t-154 61.5t-152 -61.5t-63 -174.5zM245 1548v21 h342q63 -101 235 -301v-27h-202q-63 44 -185 142.5t-190 164.5z" />
-<glyph unicode="&#xe9;" horiz-adv-x="1210" d="M92 551q0 281 140.5 434.5t388.5 153.5q237 0 369 -135t132 -373v-148h-721q5 -130 77 -203t202 -73q101 0 191 21t188 67v-236q-80 -40 -171 -59.5t-222 -19.5q-270 0 -422 149t-152 422zM408 686h428q-2 113 -59 174.5t-154 61.5t-152 -61.5t-63 -174.5zM447 1241v27 q172 200 235 301h342v-21q-52 -52 -177.5 -154.5t-196.5 -152.5h-203z" />
-<glyph unicode="&#xea;" horiz-adv-x="1210" d="M92 551q0 281 140.5 434.5t388.5 153.5q237 0 369 -135t132 -373v-148h-721q5 -130 77 -203t202 -73q101 0 191 21t188 67v-236q-80 -40 -171 -59.5t-222 -19.5q-270 0 -422 149t-152 422zM408 686h428q-2 113 -59 174.5t-154 61.5t-152 -61.5t-63 -174.5zM194 1241v27 q189 189 256 301h357q31 -52 107.5 -141.5t148.5 -159.5v-27h-203q-157 93 -234 176q-78 -81 -229 -176h-203z" />
-<glyph unicode="&#xeb;" horiz-adv-x="1210" d="M92 551q0 281 140.5 434.5t388.5 153.5q237 0 369 -135t132 -373v-148h-721q5 -130 77 -203t202 -73q101 0 191 21t188 67v-236q-80 -40 -171 -59.5t-222 -19.5q-270 0 -422 149t-152 422zM408 686h428q-2 113 -59 174.5t-154 61.5t-152 -61.5t-63 -174.5zM297 1405 q0 65 37.5 100t101.5 35q66 0 103.5 -37t37.5 -98q0 -60 -38 -96.5t-103 -36.5q-64 0 -101.5 35t-37.5 98zM700 1405q0 70 40.5 102.5t100.5 32.5q65 0 103.5 -36t38.5 -99q0 -61 -39 -97t-103 -36q-60 0 -100.5 32.5t-40.5 100.5z" />
-<glyph unicode="&#xec;" horiz-adv-x="625" d="M160 0v1118h305v-1118h-305zM-101 1548v21h342q63 -101 235 -301v-27h-202q-63 44 -185 142.5t-190 164.5z" />
-<glyph unicode="&#xed;" horiz-adv-x="625" d="M160 0v1118h305v-1118h-305zM145 1241v27q172 200 235 301h342v-21q-52 -52 -177.5 -154.5t-196.5 -152.5h-203z" />
-<glyph unicode="&#xee;" horiz-adv-x="625" d="M160 0v1118h305v-1118h-305zM-122 1241v27q189 189 256 301h357q31 -52 107.5 -141.5t148.5 -159.5v-27h-203q-157 93 -234 176q-78 -81 -229 -176h-203z" />
-<glyph unicode="&#xef;" horiz-adv-x="625" d="M160 0v1118h305v-1118h-305zM-29 1405q0 65 37.5 100t101.5 35q66 0 103.5 -37t37.5 -98q0 -60 -38 -96.5t-103 -36.5q-64 0 -101.5 35t-37.5 98zM374 1405q0 70 40.5 102.5t100.5 32.5q65 0 103.5 -36t38.5 -99q0 -61 -39 -97t-103 -36q-60 0 -100.5 32.5t-40.5 100.5z " />
-<glyph unicode="&#xf0;" horiz-adv-x="1268" d="M92 489q0 233 130 369.5t351 136.5q205 0 275 -98l8 4q-67 162 -192 281l-230 -142l-100 156l176 107q-80 53 -152 92l101 176q144 -65 258 -141l225 139l100 -154l-170 -104q156 -143 230 -324.5t74 -413.5q0 -280 -145 -436.5t-400 -156.5q-245 0 -392 137t-147 372z M403 487q0 -140 60 -211t172 -71q123 0 176 82t53 245q0 108 -61 173t-168 65q-121 0 -176.5 -68.5t-55.5 -214.5z" />
-<glyph unicode="&#xf1;" horiz-adv-x="1346" d="M160 0v1118h233l41 -143h17q51 81 140.5 122.5t203.5 41.5q195 0 296 -105.5t101 -304.5v-729h-305v653q0 121 -43 181.5t-137 60.5q-128 0 -185 -85.5t-57 -283.5v-526h-305zM258 1239q11 145 82.5 227t189.5 82q41 0 80.5 -16.5t78 -36t75.5 -35.5t73 -16q31 0 59.5 26 t41.5 80h149q-11 -145 -83.5 -227t-188.5 -82q-41 0 -80.5 16.5t-78 36t-75.5 36t-73 16.5q-31 0 -59.5 -26.5t-41.5 -80.5h-149z" />
-<glyph unicode="&#xf2;" horiz-adv-x="1268" d="M92 561q0 274 143 426t402 152q161 0 284 -70t189 -201t66 -307q0 -273 -144 -427t-401 -154q-161 0 -284 70.5t-189 202.5t-66 308zM403 561q0 -166 54.5 -251t177.5 -85q122 0 175.5 84.5t53.5 251.5q0 166 -54 249t-177 83q-122 0 -176 -82.5t-54 -249.5zM237 1548v21 h342q63 -101 235 -301v-27h-202q-63 44 -185 142.5t-190 164.5z" />
-<glyph unicode="&#xf3;" horiz-adv-x="1268" d="M92 561q0 274 143 426t402 152q161 0 284 -70t189 -201t66 -307q0 -273 -144 -427t-401 -154q-161 0 -284 70.5t-189 202.5t-66 308zM403 561q0 -166 54.5 -251t177.5 -85q122 0 175.5 84.5t53.5 251.5q0 166 -54 249t-177 83q-122 0 -176 -82.5t-54 -249.5zM467 1241v27 q172 200 235 301h342v-21q-52 -52 -177.5 -154.5t-196.5 -152.5h-203z" />
-<glyph unicode="&#xf4;" horiz-adv-x="1268" d="M92 561q0 274 143 426t402 152q161 0 284 -70t189 -201t66 -307q0 -273 -144 -427t-401 -154q-161 0 -284 70.5t-189 202.5t-66 308zM403 561q0 -166 54.5 -251t177.5 -85q122 0 175.5 84.5t53.5 251.5q0 166 -54 249t-177 83q-122 0 -176 -82.5t-54 -249.5zM198 1241v27 q189 189 256 301h357q31 -52 107.5 -141.5t148.5 -159.5v-27h-203q-157 93 -234 176q-78 -81 -229 -176h-203z" />
-<glyph unicode="&#xf5;" horiz-adv-x="1268" d="M92 561q0 274 143 426t402 152q161 0 284 -70t189 -201t66 -307q0 -273 -144 -427t-401 -154q-161 0 -284 70.5t-189 202.5t-66 308zM403 561q0 -166 54.5 -251t177.5 -85q122 0 175.5 84.5t53.5 251.5q0 166 -54 249t-177 83q-122 0 -176 -82.5t-54 -249.5zM219 1239 q11 145 82.5 227t189.5 82q41 0 80.5 -16.5t78 -36t75.5 -35.5t73 -16q31 0 59.5 26t41.5 80h149q-11 -145 -83.5 -227t-188.5 -82q-41 0 -80.5 16.5t-78 36t-75.5 36t-73 16.5q-31 0 -59.5 -26.5t-41.5 -80.5h-149z" />
-<glyph unicode="&#xf6;" horiz-adv-x="1268" d="M92 561q0 274 143 426t402 152q161 0 284 -70t189 -201t66 -307q0 -273 -144 -427t-401 -154q-161 0 -284 70.5t-189 202.5t-66 308zM403 561q0 -166 54.5 -251t177.5 -85q122 0 175.5 84.5t53.5 251.5q0 166 -54 249t-177 83q-122 0 -176 -82.5t-54 -249.5zM291 1405 q0 65 37.5 100t101.5 35q66 0 103.5 -37t37.5 -98q0 -60 -38 -96.5t-103 -36.5q-64 0 -101.5 35t-37.5 98zM694 1405q0 70 40.5 102.5t100.5 32.5q65 0 103.5 -36t38.5 -99q0 -61 -39 -97t-103 -36q-60 0 -100.5 32.5t-40.5 100.5z" />
-<glyph unicode="&#xf7;" d="M88 612v219h993v-219h-993zM444 373q0 76 37 113.5t103 37.5t102.5 -39t36.5 -112q0 -70 -37 -111t-102 -41t-102.5 39t-37.5 113zM444 1071q0 75 37 113.5t103 38.5q67 0 103 -40.5t36 -111.5q0 -70 -37 -110.5t-102 -40.5t-102.5 39t-37.5 112z" />
-<glyph unicode="&#xf8;" horiz-adv-x="1268" d="M92 561q0 274 143 426t402 152q132 0 248 -52l55 82l152 -108l-58 -84q142 -155 142 -416q0 -273 -144 -427t-401 -154q-126 0 -234 45l-67 -101l-154 105l68 100q-152 156 -152 432zM403 561q0 -94 19 -166l317 475q-43 23 -106 23q-122 0 -176 -82.5t-54 -249.5z M543 240q38 -15 92 -15q122 0 175.5 84.5t53.5 251.5q0 81 -12 141z" />
-<glyph unicode="&#xf9;" horiz-adv-x="1346" d="M154 389v729h305v-653q0 -121 43 -181.5t137 -60.5q128 0 185 85.5t57 283.5v526h305v-1118h-234l-41 143h-16q-49 -78 -139 -120.5t-205 -42.5q-197 0 -297 105.5t-100 303.5zM245 1548v21h342q63 -101 235 -301v-27h-202q-63 44 -185 142.5t-190 164.5z" />
-<glyph unicode="&#xfa;" horiz-adv-x="1346" d="M154 389v729h305v-653q0 -121 43 -181.5t137 -60.5q128 0 185 85.5t57 283.5v526h305v-1118h-234l-41 143h-16q-49 -78 -139 -120.5t-205 -42.5q-197 0 -297 105.5t-100 303.5zM498 1241v27q172 200 235 301h342v-21q-52 -52 -177.5 -154.5t-196.5 -152.5h-203z" />
-<glyph unicode="&#xfb;" horiz-adv-x="1346" d="M154 389v729h305v-653q0 -121 43 -181.5t137 -60.5q128 0 185 85.5t57 283.5v526h305v-1118h-234l-41 143h-16q-49 -78 -139 -120.5t-205 -42.5q-197 0 -297 105.5t-100 303.5zM235 1241v27q189 189 256 301h357q31 -52 107.5 -141.5t148.5 -159.5v-27h-203 q-157 93 -234 176q-78 -81 -229 -176h-203z" />
-<glyph unicode="&#xfc;" horiz-adv-x="1346" d="M154 389v729h305v-653q0 -121 43 -181.5t137 -60.5q128 0 185 85.5t57 283.5v526h305v-1118h-234l-41 143h-16q-49 -78 -139 -120.5t-205 -42.5q-197 0 -297 105.5t-100 303.5zM326 1405q0 65 37.5 100t101.5 35q66 0 103.5 -37t37.5 -98q0 -60 -38 -96.5t-103 -36.5 q-64 0 -101.5 35t-37.5 98zM729 1405q0 70 40.5 102.5t100.5 32.5q65 0 103.5 -36t38.5 -99q0 -61 -39 -97t-103 -36q-60 0 -100.5 32.5t-40.5 100.5z" />
-<glyph unicode="&#xfd;" horiz-adv-x="1165" d="M0 1118h334l211 -629q27 -82 37 -194h6q11 103 43 194l207 629h327l-473 -1261q-65 -175 -185.5 -262t-281.5 -87q-79 0 -155 17v242q55 -13 120 -13q81 0 141.5 49.5t94.5 149.5l18 55zM393 1241v27q172 200 235 301h342v-21q-52 -52 -177.5 -154.5t-196.5 -152.5h-203z " />
-<glyph unicode="&#xfe;" horiz-adv-x="1296" d="M160 -492v2048h305v-391l-7 -120l-7 -72h14q50 81 131 123.5t186 42.5q198 0 310 -154.5t112 -423.5q0 -273 -111.5 -427t-310.5 -154q-213 0 -317 137h-14l7 -62l7 -94v-453h-305zM465 563q0 -180 53.5 -258t169.5 -78q205 0 205 338q0 165 -50.5 247.5t-158.5 82.5 q-113 0 -165 -69.5t-54 -229.5v-33z" />
-<glyph unicode="&#xff;" horiz-adv-x="1165" d="M0 1118h334l211 -629q27 -82 37 -194h6q11 103 43 194l207 629h327l-473 -1261q-65 -175 -185.5 -262t-281.5 -87q-79 0 -155 17v242q55 -13 120 -13q81 0 141.5 49.5t94.5 149.5l18 55zM243 1405q0 65 37.5 100t101.5 35q66 0 103.5 -37t37.5 -98q0 -60 -38 -96.5 t-103 -36.5q-64 0 -101.5 35t-37.5 98zM646 1405q0 70 40.5 102.5t100.5 32.5q65 0 103.5 -36t38.5 -99q0 -61 -39 -97t-103 -36q-60 0 -100.5 32.5t-40.5 100.5z" />
-<glyph unicode="&#x131;" horiz-adv-x="625" d="M160 0v1118h305v-1118h-305z" />
-<glyph unicode="&#x152;" horiz-adv-x="1993" d="M119 735q0 363 169.5 556.5t487.5 193.5q61 0 127 -7t101 -16h868v-254h-563v-321h526v-254h-526v-377h563v-256h-873q-38 -9 -109 -14.5t-116 -5.5q-319 0 -487 197t-168 558zM438 733q0 -244 86 -368.5t250 -124.5q65 0 126 10.5t99 28.5v907q-35 19 -101.5 30 t-121.5 11q-166 0 -252 -125.5t-86 -368.5z" />
-<glyph unicode="&#x153;" horiz-adv-x="2003" d="M92 561q0 277 141.5 427.5t399.5 150.5q112 0 212 -39.5t171 -116.5q144 156 383 156q244 0 380 -135t136 -373v-148h-746v-8q7 -127 81.5 -197.5t207.5 -70.5q107 0 200 21t193 67v-236q-81 -39 -175.5 -59t-229.5 -20q-271 0 -420 155q-141 -155 -391 -155 q-162 0 -286 70t-190.5 202t-66.5 309zM403 561q0 -166 54.5 -251t177.5 -85q122 0 175.5 84.5t53.5 251.5q0 166 -54 249t-177 83q-122 0 -176 -82.5t-54 -249.5zM1178 686h450q-2 111 -60.5 173.5t-162.5 62.5q-94 0 -156 -57.5t-71 -178.5z" />
-<glyph unicode="&#x178;" horiz-adv-x="1278" d="M0 1462h336l303 -602l305 602h334l-485 -893v-569h-308v559zM297 1743q0 65 37.5 100t101.5 35q66 0 103.5 -37t37.5 -98q0 -60 -38 -96.5t-103 -36.5q-64 0 -101.5 35t-37.5 98zM700 1743q0 70 40.5 102.5t100.5 32.5q65 0 103.5 -36t38.5 -99q0 -61 -39 -97t-103 -36 q-60 0 -100.5 32.5t-40.5 100.5z" />
-<glyph unicode="&#x2c6;" horiz-adv-x="1243" d="M186 1241v27q189 189 256 301h357q31 -52 107.5 -141.5t148.5 -159.5v-27h-203q-157 93 -234 176q-78 -81 -229 -176h-203z" />
-<glyph unicode="&#x2da;" horiz-adv-x="1182" d="M340 1477q0 108 67.5 172.5t180.5 64.5q110 0 182 -66t72 -169q0 -108 -71 -174t-183 -66t-180 64t-68 174zM492 1477q0 -45 24 -71t72 -26q42 0 69 26t27 71t-27 70.5t-69 25.5t-69 -25.5t-27 -70.5z" />
-<glyph unicode="&#x2dc;" horiz-adv-x="1243" d="M207 1239q11 145 82.5 227t189.5 82q41 0 80.5 -16.5t78 -36t75.5 -35.5t73 -16q31 0 59.5 26t41.5 80h149q-11 -145 -83.5 -227t-188.5 -82q-41 0 -80.5 16.5t-78 36t-75.5 36t-73 16.5q-31 0 -59.5 -26.5t-41.5 -80.5h-149z" />
-<glyph unicode="&#x2000;" horiz-adv-x="953" />
-<glyph unicode="&#x2001;" horiz-adv-x="1907" />
-<glyph unicode="&#x2002;" horiz-adv-x="953" />
-<glyph unicode="&#x2003;" horiz-adv-x="1907" />
-<glyph unicode="&#x2004;" horiz-adv-x="635" />
-<glyph unicode="&#x2005;" horiz-adv-x="476" />
-<glyph unicode="&#x2006;" horiz-adv-x="317" />
-<glyph unicode="&#x2007;" horiz-adv-x="317" />
-<glyph unicode="&#x2008;" horiz-adv-x="238" />
-<glyph unicode="&#x2009;" horiz-adv-x="381" />
-<glyph unicode="&#x200a;" horiz-adv-x="105" />
-<glyph unicode="&#x2010;" horiz-adv-x="659" d="M61 424v250h537v-250h-537z" />
-<glyph unicode="&#x2011;" horiz-adv-x="659" d="M61 424v250h537v-250h-537z" />
-<glyph unicode="&#x2012;" horiz-adv-x="659" d="M61 424v250h537v-250h-537z" />
-<glyph unicode="&#x2013;" horiz-adv-x="1024" d="M82 436v230h860v-230h-860z" />
-<glyph unicode="&#x2014;" horiz-adv-x="2048" d="M82 436v230h1884v-230h-1884z" />
-<glyph unicode="&#x2018;" horiz-adv-x="444" d="M25 983q22 91 72.5 228.5t103.5 250.5h219q-66 -267 -101 -501h-280z" />
-<glyph unicode="&#x2019;" horiz-adv-x="444" d="M25 961q69 296 100 501h281l14 -22q-50 -197 -176 -479h-219z" />
-<glyph unicode="&#x201a;" horiz-adv-x="596" d="M63 -264q65 266 101 502h280l15 -23q-52 -202 -176 -479h-220z" />
-<glyph unicode="&#x201c;" horiz-adv-x="911" d="M25 983q22 91 72.5 228.5t103.5 250.5h219q-66 -267 -101 -501h-280zM492 983q22 91 72.5 228.5t103.5 250.5h219q-66 -267 -101 -501h-280z" />
-<glyph unicode="&#x201d;" horiz-adv-x="911" d="M25 961q69 296 100 501h281l14 -22q-50 -197 -176 -479h-219zM492 961q69 296 100 501h280l15 -22q-50 -197 -176 -479h-219z" />
-<glyph unicode="&#x201e;" horiz-adv-x="1061" d="M63 -264q65 266 101 502h280l15 -23q-52 -202 -176 -479h-220zM530 -264q65 266 101 502h280l15 -23q-52 -202 -176 -479h-220z" />
-<glyph unicode="&#x2022;" horiz-adv-x="770" d="M98 748q0 154 74 235.5t213 81.5q137 0 212 -82t75 -235q0 -152 -75.5 -235t-211.5 -83q-138 0 -212.5 83t-74.5 235z" />
-<glyph unicode="&#x2026;" horiz-adv-x="1751" d="M117 143q0 84 45 127t131 43q83 0 128.5 -44t45.5 -126q0 -79 -46 -124.5t-128 -45.5q-84 0 -130 44.5t-46 125.5zM700 143q0 84 45 127t132 43q83 0 128.5 -44t45.5 -126q0 -79 -46 -124.5t-128 -45.5q-85 0 -131 44.5t-46 125.5zM1284 143q0 84 45 127t131 43 q83 0 128.5 -44t45.5 -126q0 -79 -46 -124.5t-128 -45.5q-84 0 -130 44.5t-46 125.5z" />
-<glyph unicode="&#x202f;" horiz-adv-x="381" />
-<glyph unicode="&#x2039;" horiz-adv-x="754" d="M82 547v26l371 455l219 -119l-279 -348l279 -348l-219 -119z" />
-<glyph unicode="&#x203a;" horiz-adv-x="754" d="M82 213l278 348l-278 348l219 119l371 -455v-26l-371 -453z" />
-<glyph unicode="&#x2044;" horiz-adv-x="266" d="M-393 0l811 1462h239l-811 -1462h-239z" />
-<glyph unicode="&#x205f;" horiz-adv-x="476" />
-<glyph unicode="&#x2074;" horiz-adv-x="776" d="M12 737v154l385 577h236v-563h125v-168h-125v-151h-238v151h-383zM197 905h198v164q0 86 6 184q-9 -26 -35.5 -80t-41.5 -77z" />
-<glyph unicode="&#x20ac;" d="M66 481v178h118q-4 23 -4 62l2 53h-116v176h133q37 242 199 382.5t405 140.5q188 0 352 -82l-98 -232q-69 31 -129 48.5t-125 17.5q-122 0 -201 -70.5t-102 -204.5h403v-176h-418l-2 -35v-47l2 -33h355v-178h-338q51 -243 321 -243q143 0 275 57v-256q-116 -59 -293 -59 q-245 0 -403 133t-199 368h-137z" />
-<glyph unicode="&#x2122;" horiz-adv-x="1534" d="M16 1313v149h564v-149h-199v-572h-168v572h-197zM625 741v721h247l160 -510l170 510h240v-721h-168v408l4 121h-6l-174 -529h-142l-165 529h-7l4 -111v-418h-163z" />
-<glyph unicode="&#xe000;" horiz-adv-x="1120" d="M0 1120h1120v-1120h-1120v1120z" />
-<glyph unicode="&#xfb01;" horiz-adv-x="1417" d="M41 889v147l168 82v82q0 191 94 279t301 88q158 0 281 -47l-78 -224q-92 29 -170 29q-65 0 -94 -38.5t-29 -98.5v-70h264v-229h-264v-889h-305v889h-168zM940 1407q0 149 166 149t166 -149q0 -71 -41.5 -110.5t-124.5 -39.5q-166 0 -166 150zM953 0v1118h305v-1118h-305z " />
-<glyph unicode="&#xfb02;" horiz-adv-x="1417" d="M41 889v147l168 82v82q0 191 94 279t301 88q158 0 281 -47l-78 -224q-92 29 -170 29q-65 0 -94 -38.5t-29 -98.5v-70h264v-229h-264v-889h-305v889h-168zM953 0v1556h305v-1556h-305z" />
-<glyph unicode="&#xfb03;" horiz-adv-x="2208" d="M41 889v147l168 82v82q0 191 94 279t301 88q158 0 281 -47l-78 -224q-92 29 -170 29q-65 0 -94 -38.5t-29 -98.5v-70h264v-229h-264v-889h-305v889h-168zM834 889v147l168 82v82q0 191 94 279t301 88q158 0 281 -47l-78 -224q-92 29 -170 29q-65 0 -94 -38.5t-29 -98.5 v-70h264v-229h-264v-889h-305v889h-168zM1730 1407q0 149 166 149t166 -149q0 -71 -41.5 -110.5t-124.5 -39.5q-166 0 -166 150zM1743 0v1118h305v-1118h-305z" />
-<glyph unicode="&#xfb04;" horiz-adv-x="2208" d="M41 889v147l168 82v82q0 191 94 279t301 88q158 0 281 -47l-78 -224q-92 29 -170 29q-65 0 -94 -38.5t-29 -98.5v-70h264v-229h-264v-889h-305v889h-168zM834 889v147l168 82v82q0 191 94 279t301 88q158 0 281 -47l-78 -224q-92 29 -170 29q-65 0 -94 -38.5t-29 -98.5 v-70h264v-229h-264v-889h-305v889h-168zM1743 0v1556h305v-1556h-305z" />
-</font>
-</defs></svg> \ No newline at end of file
diff --git a/admin/survey/Fonts/OpenSans/OpenSans-Bold-webfont.ttf b/admin/survey/Fonts/OpenSans/OpenSans-Bold-webfont.ttf
deleted file mode 100644
index 7ab5d85..0000000
--- a/admin/survey/Fonts/OpenSans/OpenSans-Bold-webfont.ttf
+++ /dev/null
Binary files differ
diff --git a/admin/survey/Fonts/OpenSans/OpenSans-Bold-webfont.woff b/admin/survey/Fonts/OpenSans/OpenSans-Bold-webfont.woff
deleted file mode 100644
index 869a9ed..0000000
--- a/admin/survey/Fonts/OpenSans/OpenSans-Bold-webfont.woff
+++ /dev/null
Binary files differ
diff --git a/admin/survey/Fonts/OpenSans/OpenSans-BoldItalic-webfont.eot b/admin/survey/Fonts/OpenSans/OpenSans-BoldItalic-webfont.eot
deleted file mode 100644
index ad65180..0000000
--- a/admin/survey/Fonts/OpenSans/OpenSans-BoldItalic-webfont.eot
+++ /dev/null
Binary files differ
diff --git a/admin/survey/Fonts/OpenSans/OpenSans-BoldItalic-webfont.svg b/admin/survey/Fonts/OpenSans/OpenSans-BoldItalic-webfont.svg
deleted file mode 100644
index 9149120..0000000
--- a/admin/survey/Fonts/OpenSans/OpenSans-BoldItalic-webfont.svg
+++ /dev/null
@@ -1,251 +0,0 @@
-<?xml version="1.0" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
-<svg xmlns="http://www.w3.org/2000/svg">
-<metadata>
-This is a custom SVG webfont generated by Font Squirrel.
-Copyright : Digitized data copyright 20102011 Google Corporation
-Foundry : Ascender Corporation
-Foundry URL : httpwwwascendercorpcom
-</metadata>
-<defs>
-<font id="OpenSansBoldItalic" horiz-adv-x="1128" >
-<font-face units-per-em="2048" ascent="1638" descent="-410" />
-<missing-glyph horiz-adv-x="532" />
-<glyph unicode=" " horiz-adv-x="532" />
-<glyph unicode="&#x09;" horiz-adv-x="532" />
-<glyph unicode="&#xa0;" horiz-adv-x="532" />
-<glyph unicode="!" horiz-adv-x="586" d="M25 115q0 90 53.5 144t150.5 54q68 0 109 -38t41 -107q0 -87 -55 -141t-144 -54q-73 0 -114 37.5t-41 104.5zM150 485l157 977h340l-256 -977h-241z" />
-<glyph unicode="&#x22;" horiz-adv-x="928" d="M201 934l71 528h277l-152 -528h-196zM604 934l74 528h276l-151 -528h-199z" />
-<glyph unicode="#" horiz-adv-x="1323" d="M41 408l18 206h277l70 232h-252l18 209h289l119 407h217l-117 -407h199l116 407h215l-116 -407h239l-18 -209h-279l-69 -232h258l-19 -206h-297l-116 -408h-220l117 408h-194l-115 -408h-215l113 408h-238zM553 614h197l69 232h-196z" />
-<glyph unicode="$" d="M51 168v266q198 -107 404 -117l71 322q-163 61 -241 151t-78 214q0 173 127 279.5t350 121.5l35 151h139l-33 -151q166 -22 295 -90l-106 -232q-132 65 -242 74l-63 -299q131 -51 195 -99.5t97 -113t33 -149.5q0 -184 -125.5 -291.5t-367.5 -124.5l-39 -199h-140l44 201 q-209 12 -355 86zM502 1022q0 -79 80 -111l51 246q-62 -7 -96.5 -41t-34.5 -94zM594 322q63 9 102 45t39 98q0 46 -24.5 75.5t-59.5 43.5z" />
-<glyph unicode="%" horiz-adv-x="1753" d="M115 885q0 169 55.5 311.5t148.5 214.5t216 72q137 0 211.5 -80t74.5 -238q0 -166 -56 -310t-151 -217t-217 -73q-139 0 -210.5 83.5t-71.5 236.5zM231 0l1088 1462h235l-1083 -1462h-240zM360 868q0 -96 56 -96q65 0 112 131t47 275q0 96 -57 96q-63 0 -110.5 -128.5 t-47.5 -277.5zM973 283q0 177 53 322.5t148 219.5t219 74q137 0 211.5 -78.5t74.5 -230.5q0 -167 -54 -313.5t-148 -220.5t-215 -74q-144 0 -216.5 78.5t-72.5 222.5zM1219 285q0 -97 55 -97q41 0 77 55t59.5 154.5t23.5 196.5q0 96 -58 96q-39 0 -75 -56t-59 -154t-23 -195 z" />
-<glyph unicode="&#x26;" horiz-adv-x="1450" d="M68 358q0 145 78.5 248.5t273.5 200.5q-76 130 -76 258q0 195 117.5 307.5t316.5 112.5q169 0 266 -82.5t97 -224.5q0 -280 -365 -426l195 -263q44 57 80.5 121.5t78.5 173.5h300q-133 -313 -310 -497l205 -287h-350l-72 98q-175 -118 -403 -118q-209 0 -320.5 97.5 t-111.5 280.5zM383 387q0 -65 45.5 -108t116.5 -43q115 0 221 59l-225 328q-88 -51 -123 -104.5t-35 -131.5zM621 1085q0 -46 12 -92t29 -73q113 59 155.5 111t42.5 112q0 57 -30 82.5t-70 25.5q-66 0 -102.5 -46.5t-36.5 -119.5z" />
-<glyph unicode="'" horiz-adv-x="522" d="M201 934l71 528h277l-152 -528h-196z" />
-<glyph unicode="(" horiz-adv-x="694" d="M74 281q0 339 122.5 626.5t381.5 554.5h262q-255 -278 -377.5 -573.5t-122.5 -618.5q0 -308 117 -594h-234q-149 266 -149 605z" />
-<glyph unicode=")" horiz-adv-x="694" d="M-147 -324q499 545 499 1192q0 307 -116 594h233q149 -264 149 -604q0 -342 -124 -630.5t-379 -551.5h-262z" />
-<glyph unicode="*" horiz-adv-x="1116" d="M172 1141l86 237l338 -174l33 369l256 -51l-113 -353l387 29l-18 -254l-338 43l160 -336l-246 -73l-90 337l-197 -278l-207 164l275 248z" />
-<glyph unicode="+" d="M109 612v219h366v369h219v-369h367v-219h-367v-364h-219v364h-366z" />
-<glyph unicode="," horiz-adv-x="569" d="M-102 -264q74 167 194 502h285l8 -23q-118 -255 -262 -479h-225z" />
-<glyph unicode="-" horiz-adv-x="659" d="M41 424l53 250h524l-53 -250h-524z" />
-<glyph unicode="." horiz-adv-x="584" d="M25 115q0 90 53.5 144t150.5 54q68 0 109 -38t41 -107q0 -87 -55 -141t-144 -54q-73 0 -114 37.5t-41 104.5z" />
-<glyph unicode="/" horiz-adv-x="862" d="M-90 0l809 1462h295l-809 -1462h-295z" />
-<glyph unicode="0" d="M66 467q0 297 84 537t228 360.5t333 120.5q399 0 399 -473q0 -470 -168.5 -751t-472.5 -281q-198 0 -300.5 122t-102.5 365zM369 461q0 -115 27.5 -173.5t97.5 -58.5q81 0 150.5 106t116 301t46.5 386q0 111 -30.5 162t-92.5 51q-80 0 -149.5 -104t-117.5 -302t-48 -368z " />
-<glyph unicode="1" d="M182 1114l566 348h249l-309 -1462h-305l180 829q35 152 76 287q-9 -8 -61.5 -47t-262.5 -170z" />
-<glyph unicode="2" d="M-49 0l43 213l477 424q180 159 248.5 254.5t68.5 179.5q0 75 -41 114.5t-110 39.5q-66 0 -135.5 -33.5t-171.5 -118.5l-146 203q132 112 252 159.5t250 47.5q190 0 301 -98t111 -259q0 -107 -41 -201t-122.5 -188t-266.5 -245l-269 -222v-10h568l-54 -260h-962z" />
-<glyph unicode="3" d="M14 59v267q84 -50 182 -75.5t191 -25.5q158 0 243 63.5t85 176.5q0 172 -258 172h-138l46 221h73q167 0 263 62t96 172q0 67 -43 104t-121 37q-134 0 -287 -100l-127 204q124 81 232.5 113.5t246.5 32.5q190 0 298 -90.5t108 -243.5q0 -156 -94.5 -262t-261.5 -135v-4 q131 -26 198.5 -106.5t67.5 -201.5q0 -133 -74 -238t-212 -163.5t-327 -58.5q-239 0 -387 79z" />
-<glyph unicode="4" d="M-25 303l48 234l770 925h311l-195 -919h170l-51 -240h-170l-63 -303h-293l63 303h-590zM305 543h311l58 248q12 58 40 164t42 141h-6q-35 -63 -132 -181z" />
-<glyph unicode="5" d="M27 61v269q174 -99 352 -99q154 0 241 71t87 194q0 94 -57.5 141t-166.5 47q-102 0 -213 -33l-104 78l207 733h755l-55 -262h-489l-88 -293q72 15 127 15q183 0 289 -103t106 -287q0 -167 -71.5 -292t-208.5 -192.5t-330 -67.5q-117 0 -218.5 23t-162.5 58z" />
-<glyph unicode="6" d="M88 469q0 202 61 395.5t167.5 335t256.5 213.5t357 72q125 0 223 -27l-51 -246q-84 25 -191 25q-194 0 -313.5 -108t-185.5 -345h4q115 166 311 166q157 0 242.5 -97t85.5 -273q0 -169 -71 -313.5t-190.5 -215.5t-277.5 -71q-212 0 -320 127t-108 362zM383 422 q0 -91 40 -143t107 -52q99 0 161.5 94t62.5 236q0 71 -33.5 113.5t-102.5 42.5q-60 0 -114.5 -35.5t-87.5 -95.5t-33 -160z" />
-<glyph unicode="7" d="M78 0l737 1202h-629l56 260h975l-41 -194l-752 -1268h-346z" />
-<glyph unicode="8" d="M55 350q0 298 348 426q-165 132 -165 299q0 119 58 212.5t168 145.5t257 52q123 0 215.5 -42t141 -118t48.5 -174q0 -134 -80.5 -233.5t-230.5 -151.5q217 -141 217 -365q0 -122 -63.5 -218.5t-181 -149.5t-273.5 -53q-214 0 -336.5 100t-122.5 270zM352 383 q0 -81 50 -128.5t135 -47.5q93 0 147.5 53.5t54.5 138.5q0 73 -36.5 131.5t-120.5 112.5q-116 -45 -173 -107t-57 -153zM528 1094q0 -132 123 -201q185 72 185 221q0 68 -39.5 107t-102.5 39q-76 0 -121 -46.5t-45 -119.5z" />
-<glyph unicode="9" d="M86 12v256q111 -41 227 -41q121 0 207.5 49t144 138.5t99.5 257.5h-4q-111 -158 -295 -158q-163 0 -252.5 103.5t-89.5 285.5q0 166 73 305.5t196 208t286 68.5q203 0 308.5 -123t105.5 -361q0 -280 -99 -533t-264 -370.5t-403 -117.5q-128 0 -240 32zM424 928 q0 -87 37.5 -131.5t105.5 -44.5q60 0 111.5 36.5t82 100t30.5 158.5q0 84 -35.5 137t-110.5 53q-65 0 -115.5 -42t-78 -114t-27.5 -153z" />
-<glyph unicode=":" horiz-adv-x="584" d="M25 115q0 90 53.5 144t150.5 54q68 0 109 -38t41 -107q0 -87 -55 -141t-144 -54q-73 0 -114 37.5t-41 104.5zM207 940q0 92 55.5 145.5t149.5 53.5q68 0 108.5 -38.5t40.5 -107.5q0 -86 -54.5 -140t-144.5 -54q-72 0 -113.5 36.5t-41.5 104.5z" />
-<glyph unicode=";" horiz-adv-x="584" d="M-102 -264q74 167 194 502h285l8 -23q-118 -255 -262 -479h-225zM207 940q0 92 55.5 145.5t149.5 53.5q68 0 108.5 -38.5t40.5 -107.5q0 -86 -54.5 -140t-144.5 -54q-72 0 -113.5 36.5t-41.5 104.5z" />
-<glyph unicode="&#x3c;" d="M109 641v143l952 496v-240l-643 -317l643 -281v-239z" />
-<glyph unicode="=" d="M109 418v219h952v-219h-952zM109 807v217h952v-217h-952z" />
-<glyph unicode="&#x3e;" d="M109 203v239l643 281l-643 317v240l952 -496v-143z" />
-<glyph unicode="?" horiz-adv-x="940" d="M166 115q0 91 55 144.5t150 53.5q68 0 108.5 -38t40.5 -107q0 -87 -55 -141t-143 -54q-74 0 -115 38t-41 104zM178 1358q230 125 445 125q177 0 280 -87.5t103 -244.5q0 -83 -28.5 -149.5t-82.5 -123t-190 -147.5q-64 -43 -96.5 -73t-52.5 -64.5t-38 -108.5h-258l14 78 q19 103 73.5 177t172.5 155q124 84 157.5 127t33.5 96q0 119 -133 119q-50 0 -106.5 -16t-201.5 -84z" />
-<glyph unicode="@" horiz-adv-x="1753" d="M92 500q0 279 120.5 497t343 341.5t497.5 123.5q318 0 499 -163.5t181 -458.5q0 -173 -64 -321t-177.5 -231t-254.5 -83q-88 0 -144.5 38.5t-72.5 108.5h-6q-50 -77 -113 -112t-147 -35q-127 0 -198 79.5t-71 229.5q0 147 67.5 276.5t187.5 205t268 75.5q185 0 327 -55 l-106 -420q-11 -44 -19 -76.5t-8 -64.5q0 -68 58 -68q66 0 124 64t92.5 171t34.5 214q0 213 -123.5 325.5t-359.5 112.5q-203 0 -366.5 -94t-255 -266t-91.5 -392q0 -243 134 -380.5t376 -137.5q117 0 219.5 20t221.5 66v-186q-230 -90 -465 -90q-217 0 -378 85.5 t-246 241.5t-85 359zM713 526q0 -65 24.5 -102t69.5 -37q141 0 213 270l57 222q-36 10 -82 10q-82 0 -145.5 -51.5t-100 -137t-36.5 -174.5z" />
-<glyph unicode="A" horiz-adv-x="1286" d="M-123 0l766 1468h373l147 -1468h-297l-24 348h-473l-172 -348h-320zM494 608h333l-26 350q-10 131 -10 253v36q-44 -120 -109 -254z" />
-<glyph unicode="B" horiz-adv-x="1270" d="M53 0l309 1462h426q229 0 346 -81.5t117 -243.5q0 -150 -83 -247.5t-236 -129.5v-6q100 -26 159.5 -96.5t59.5 -180.5q0 -229 -153 -353t-423 -124h-522zM412 256h180q117 0 183.5 58t66.5 161q0 162 -183 162h-165zM545 883h149q121 0 181.5 48.5t60.5 139.5 q0 137 -170 137h-152z" />
-<glyph unicode="C" horiz-adv-x="1253" d="M123 553q0 262 104 482.5t278 335t400 114.5q125 0 222 -22.5t208 -82.5l-118 -250q-106 59 -175 78t-137 19q-132 0 -237.5 -81t-169.5 -238.5t-64 -338.5q0 -167 68.5 -248t218.5 -81q146 0 338 77v-260q-199 -77 -400 -77q-254 0 -395 149.5t-141 423.5z" />
-<glyph unicode="D" horiz-adv-x="1386" d="M53 0l309 1462h396q270 0 417.5 -143t147.5 -410q0 -280 -98 -486.5t-283.5 -314.5t-437.5 -108h-451zM412 256h106q148 0 258 76t172 223.5t62 337.5q0 154 -72.5 234.5t-208.5 80.5h-115z" />
-<glyph unicode="E" horiz-adv-x="1110" d="M53 0l309 1462h818l-54 -254h-512l-67 -321h477l-55 -254h-477l-80 -377h512l-54 -256h-817z" />
-<glyph unicode="F" horiz-adv-x="1087" d="M53 0l309 1462h814l-54 -254h-508l-79 -377h473l-56 -253h-473l-121 -578h-305z" />
-<glyph unicode="G" horiz-adv-x="1413" d="M123 549q0 268 107 484.5t301 334t448 117.5q218 0 410 -99l-115 -251q-74 40 -148 64t-161 24q-153 0 -273.5 -83t-189 -236.5t-68.5 -330.5q0 -172 72.5 -252.5t222.5 -80.5q76 0 170 24l66 299h-267l56 258h563l-162 -762q-134 -46 -248.5 -62.5t-242.5 -16.5 q-259 0 -400 147t-141 422z" />
-<glyph unicode="H" horiz-adv-x="1434" d="M53 0l309 1462h306l-121 -573h471l121 573h305l-309 -1462h-306l134 631h-471l-134 -631h-305z" />
-<glyph unicode="I" horiz-adv-x="659" d="M53 0l312 1462h305l-312 -1462h-305z" />
-<glyph unicode="J" horiz-adv-x="678" d="M-322 -150q88 -20 164 -20q99 0 160.5 60.5t89.5 191.5l293 1380h305l-303 -1423q-52 -245 -175.5 -357t-346.5 -112q-94 0 -187 27v253z" />
-<glyph unicode="K" horiz-adv-x="1255" d="M53 0l309 1462h306l-152 -702l158 205l409 497h361l-594 -700l291 -762h-338l-211 592l-125 -70l-109 -522h-305z" />
-<glyph unicode="L" horiz-adv-x="1061" d="M53 0l309 1462h306l-256 -1206h512l-54 -256h-817z" />
-<glyph unicode="M" horiz-adv-x="1802" d="M53 0l309 1462h404l68 -1093h4l551 1093h423l-309 -1462h-280l145 692q53 247 105 441h-5l-569 -1133h-281l-61 1133h-4q-11 -88 -38 -231t-187 -902h-275z" />
-<glyph unicode="N" horiz-adv-x="1546" d="M53 0l309 1462h357l340 -1077h4q12 76 39 217t180 860h274l-309 -1462h-342l-356 1106h-6l-4 -32q-32 -216 -66 -386l-145 -688h-275z" />
-<glyph unicode="O" horiz-adv-x="1495" d="M123 537q0 265 99 487.5t273 341.5t402 119q255 0 395 -144t140 -403q0 -283 -99 -506.5t-271 -337.5t-396 -114q-256 0 -399.5 147.5t-143.5 409.5zM434 537q0 -147 66.5 -222t187.5 -75t220.5 87t155.5 246t56 357q0 142 -65 219.5t-183 77.5q-121 0 -222 -91.5 t-158.5 -251.5t-57.5 -347z" />
-<glyph unicode="P" horiz-adv-x="1188" d="M53 0l309 1462h338q242 0 366 -106.5t124 -319.5q0 -241 -169.5 -378.5t-467.5 -137.5h-86l-109 -520h-305zM522 774h56q142 0 223.5 69t81.5 185q0 180 -195 180h-74z" />
-<glyph unicode="Q" horiz-adv-x="1495" d="M123 537q0 265 99 487.5t273 341.5t402 119q255 0 395 -144t140 -403q0 -316 -122.5 -555.5t-334.5 -337.5l254 -393h-359l-178 328h-26q-256 0 -399.5 147.5t-143.5 409.5zM434 537q0 -147 66.5 -222t187.5 -75t220.5 87t155.5 246t56 357q0 142 -65 219.5t-183 77.5 q-121 0 -222 -91.5t-158.5 -251.5t-57.5 -347z" />
-<glyph unicode="R" horiz-adv-x="1247" d="M53 0l309 1462h359q237 0 356 -102t119 -299q0 -158 -83 -271.5t-239 -168.5l261 -621h-332l-207 561h-119l-119 -561h-305zM530 813h78q131 0 204 57t73 174q0 82 -47.5 123t-149.5 41h-74z" />
-<glyph unicode="S" horiz-adv-x="1085" d="M41 70v274q193 -108 358 -108q112 0 175 42.5t63 116.5q0 43 -13.5 75.5t-38.5 60.5t-124 102q-138 99 -194 196t-56 209q0 129 62 230.5t176.5 158t263.5 56.5q217 0 397 -99l-109 -233q-156 74 -288 74q-83 0 -136 -45t-53 -119q0 -61 33 -106.5t148 -120.5 q121 -80 181 -176.5t60 -225.5q0 -209 -148 -330.5t-401 -121.5q-221 0 -356 90z" />
-<glyph unicode="T" horiz-adv-x="1087" d="M168 1204l55 258h1010l-55 -258h-353l-254 -1204h-305l254 1204h-352z" />
-<glyph unicode="U" horiz-adv-x="1415" d="M141 401q0 72 15 138l196 923h305l-194 -919q-17 -74 -17 -125q0 -178 189 -178q123 0 195 76.5t104 228.5l194 917h306l-201 -946q-57 -266 -218 -401t-419 -135q-212 0 -333.5 113.5t-121.5 307.5z" />
-<glyph unicode="V" horiz-adv-x="1208" d="M184 1462h295l51 -880q4 -45 4 -133q-2 -103 -6 -150h7q78 221 110 283l432 880h316l-748 -1462h-334z" />
-<glyph unicode="W" horiz-adv-x="1831" d="M184 1462h287l6 -798q0 -52 -4 -173t-10 -174h6q22 64 67 180.5t60 145.5l369 819h270l21 -873q0 -146 -9 -272h6q43 129 131 349l330 796h309l-647 -1462h-346l-22 721l-2 139q0 88 4 158h-4q-46 -146 -115 -299l-324 -719h-338z" />
-<glyph unicode="X" horiz-adv-x="1241" d="M-117 0l576 764l-238 698h320l153 -518l363 518h344l-545 -725l268 -737h-331l-172 543l-396 -543h-342z" />
-<glyph unicode="Y" horiz-adv-x="1155" d="M186 1462h312l129 -592l374 592h342l-618 -903l-119 -559h-303l119 559z" />
-<glyph unicode="Z" horiz-adv-x="1098" d="M-61 0l38 201l777 1005h-543l53 256h936l-41 -202l-782 -1004h596l-53 -256h-981z" />
-<glyph unicode="[" horiz-adv-x="678" d="M-37 -324l381 1786h473l-45 -211h-215l-291 -1364h215l-45 -211h-473z" />
-<glyph unicode="\" horiz-adv-x="862" d="M221 1462h260l224 -1462h-267z" />
-<glyph unicode="]" horiz-adv-x="678" d="M-137 -324l45 211h213l291 1364h-215l45 211h473l-381 -1786h-471z" />
-<glyph unicode="^" horiz-adv-x="1081" d="M20 520l619 950h147l277 -950h-223l-174 633l-402 -633h-244z" />
-<glyph unicode="_" horiz-adv-x="819" d="M-186 -324l30 140h822l-31 -140h-821z" />
-<glyph unicode="`" horiz-adv-x="1135" d="M508 1548v21h311q36 -148 115 -303v-25h-184q-71 69 -138.5 153.5t-103.5 153.5z" />
-<glyph unicode="a" horiz-adv-x="1217" d="M90 385q0 198 72 377.5t189 278t257 98.5q97 0 167.5 -42t109.5 -122h8l57 143h232l-238 -1118h-229l14 145h-4q-134 -165 -319 -165q-147 0 -231.5 106.5t-84.5 298.5zM395 399q0 -88 33.5 -132t95.5 -44q69 0 133 67t103 181.5t39 259.5q0 71 -38.5 117.5t-101.5 46.5 q-68 0 -129.5 -72t-98 -190t-36.5 -234z" />
-<glyph unicode="b" horiz-adv-x="1219" d="M37 0l330 1556h301l-62 -288q-41 -182 -84 -299h8q78 98 142.5 134t140.5 36q146 0 230.5 -108t84.5 -298t-68 -367.5t-187 -281.5t-263 -104q-194 0 -276 163h-8l-58 -143h-231zM420 399q0 -80 37 -128t102 -48q67 0 128 69t98.5 189.5t37.5 237.5q0 176 -131 176 q-68 0 -130 -65t-102 -180.5t-40 -250.5z" />
-<glyph unicode="c" horiz-adv-x="989" d="M90 391q0 212 74.5 385.5t209.5 268t308 94.5q182 0 328 -72l-92 -229q-54 23 -106 40t-118 17q-85 0 -153.5 -64t-107 -175.5t-38.5 -239.5q0 -96 45.5 -144.5t126.5 -48.5q76 0 141 23.5t134 58.5v-246q-152 -79 -336 -79q-201 0 -308.5 107.5t-107.5 303.5z" />
-<glyph unicode="d" horiz-adv-x="1217" d="M90 387q0 196 71.5 374.5t188.5 278t258 99.5q82 0 141.5 -37t112.5 -127h8l2 28q6 110 25 195l76 358h301l-330 -1556h-229l14 145h-4q-71 -87 -148.5 -126t-170.5 -39q-147 0 -231.5 107t-84.5 300zM395 399q0 -176 137 -176q66 0 128.5 68.5t100.5 182.5t38 245 q0 80 -37.5 128t-102.5 48q-68 0 -129.5 -72t-98 -190t-36.5 -234z" />
-<glyph unicode="e" horiz-adv-x="1141" d="M90 412q0 207 82.5 377.5t223.5 260t319 89.5q177 0 276 -81.5t99 -223.5q0 -187 -167 -288.5t-477 -101.5h-51l-2 -21v-20q0 -91 51.5 -143.5t147.5 -52.5q87 0 158 19t172 67v-227q-172 -86 -390 -86q-210 0 -326 113t-116 319zM428 647h45q155 0 241.5 48.5 t86.5 131.5q0 95 -105 95q-88 0 -166 -80t-102 -195z" />
-<glyph unicode="f" horiz-adv-x="764" d="M-219 -225q61 -21 115 -21q61 0 107 40t65 130l204 965h-163l30 145l183 84l18 84q41 190 138.5 277.5t273.5 87.5q131 0 235 -49l-80 -224q-69 31 -133 31q-57 0 -92 -40t-47 -105l-12 -62h219l-49 -229h-220l-215 -1010q-77 -371 -403 -371q-104 0 -174 25v242z" />
-<glyph unicode="g" horiz-adv-x="1108" d="M-115 -209q0 102 68.5 175.5t214.5 121.5q-74 47 -74 133q0 71 44.5 122.5t146.5 98.5q-65 49 -96 112t-31 153q0 199 125.5 315.5t341.5 116.5q83 0 166 -23h395l-35 -166l-174 -41q16 -52 16 -118q0 -195 -121 -308.5t-329 -113.5q-59 0 -99 10q-84 -27 -84 -78 q0 -34 30 -49t89 -23l137 -18q163 -21 237.5 -84.5t74.5 -183.5q0 -211 -156 -323t-446 -112q-208 0 -324.5 75.5t-116.5 207.5zM150 -172q0 -115 194 -115q151 0 228 45t77 127q0 39 -32.5 60t-137.5 35l-114 14q-106 -14 -160.5 -57t-54.5 -109zM442 680q0 -119 103 -119 q75 0 121.5 76.5t46.5 193.5t-99 117q-77 0 -124.5 -76.5t-47.5 -191.5z" />
-<glyph unicode="h" horiz-adv-x="1237" d="M37 0l330 1556h301q-39 -181 -60 -278t-86 -309h8q62 77 138 123.5t176 46.5q138 0 213.5 -83.5t75.5 -238.5q0 -73 -23 -180l-133 -637h-301l137 653q16 68 16 119q0 123 -108 123q-92 0 -167 -114t-118 -318l-98 -463h-301z" />
-<glyph unicode="i" horiz-adv-x="608" d="M37 0l237 1118h301l-237 -1118h-301zM322 1380q0 87 47.5 131.5t134.5 44.5q73 0 111 -31t38 -89q0 -80 -44 -129.5t-136 -49.5q-151 0 -151 123z" />
-<glyph unicode="j" horiz-adv-x="608" d="M-264 -225q61 -21 114 -21q137 0 173 170l253 1194h302l-265 -1239q-77 -371 -403 -371q-104 0 -174 25v242zM324 1380q0 87 47.5 131.5t134.5 44.5q73 0 111 -31t38 -89q0 -80 -44 -129.5t-136 -49.5q-151 0 -151 123z" />
-<glyph unicode="k" horiz-adv-x="1163" d="M37 0l330 1556h301l-148 -694q-8 -41 -29 -117l-28 -102h4l453 475h344l-498 -504l285 -614h-336l-183 420l-120 -72l-74 -348h-301z" />
-<glyph unicode="l" horiz-adv-x="608" d="M37 0l330 1556h301l-330 -1556h-301z" />
-<glyph unicode="m" horiz-adv-x="1853" d="M37 0l237 1118h230l-21 -207h6q146 228 355 228q219 0 262 -228h6q68 110 160.5 169t197.5 59q136 0 207.5 -85t71.5 -237q0 -76 -23 -180l-133 -637h-301l138 653q16 68 16 119q0 123 -98 123q-92 0 -166.5 -112t-118.5 -318l-96 -465h-301l137 653q16 68 16 119 q0 123 -98 123q-92 0 -167 -114t-118 -318l-98 -463h-301z" />
-<glyph unicode="n" horiz-adv-x="1237" d="M37 0l237 1118h230l-21 -207h6q146 228 355 228q138 0 213.5 -83.5t75.5 -238.5q0 -73 -23 -180l-133 -637h-301l137 653q16 68 16 119q0 123 -108 123q-92 0 -167 -114t-118 -318l-98 -463h-301z" />
-<glyph unicode="o" horiz-adv-x="1198" d="M90 410q0 213 71.5 379.5t206.5 258t316 91.5q196 0 310 -118t114 -325q0 -211 -70.5 -374t-203.5 -252.5t-316 -89.5q-195 0 -311.5 117.5t-116.5 312.5zM393 410q0 -185 150 -185q75 0 135 61.5t93.5 171t33.5 238.5q0 197 -143 197q-75 0 -134.5 -61t-97 -179 t-37.5 -243z" />
-<glyph unicode="p" horiz-adv-x="1219" d="M-68 -492l342 1610h230l-17 -170h9q138 191 317 191q146 0 230.5 -107.5t84.5 -300.5q0 -191 -68.5 -367.5t-187.5 -280t-262 -103.5q-83 0 -143 37t-111 126h-8q-12 -159 -43 -295l-72 -340h-301zM420 399q0 -80 37 -128t102 -48q67 0 128 69t98.5 189.5t37.5 237.5 q0 176 -131 176q-68 0 -131.5 -67.5t-102 -180t-38.5 -248.5z" />
-<glyph unicode="q" horiz-adv-x="1217" d="M90 385q0 198 72 377.5t189 278t257 98.5q86 0 152.5 -37.5t124.5 -126.5h8l57 143h232l-342 -1610h-301q47 218 73 337.5t84 304.5h-8q-72 -94 -143 -132t-154 -38q-88 0 -156 47.5t-106.5 138.5t-38.5 219zM395 399q0 -88 36.5 -132t103.5 -44q64 0 127.5 70t100 181 t36.5 245q0 80 -37.5 128t-102.5 48q-68 0 -129.5 -72t-98 -190t-36.5 -234z" />
-<glyph unicode="r" horiz-adv-x="862" d="M37 0l237 1118h230l-21 -207h6q147 228 353 228q59 0 96 -11l-66 -290q-45 16 -100 16q-116 0 -203.5 -91.5t-124.5 -262.5l-106 -500h-301z" />
-<glyph unicode="s" horiz-adv-x="969" d="M23 45v248q157 -90 319 -90q80 0 131 32.5t51 88.5q0 43 -37 77t-131 86q-121 68 -169 135.5t-48 159.5q0 170 110.5 263.5t315.5 93.5q201 0 363 -95l-99 -215q-140 84 -258 84q-57 0 -92 -25.5t-35 -68.5q0 -39 32 -68.5t120 -74.5q123 -63 178 -137t55 -170 q0 -188 -124.5 -288.5t-346.5 -100.5q-107 0 -186.5 15t-148.5 50z" />
-<glyph unicode="t" horiz-adv-x="840" d="M94 889l29 147l196 84l132 236h194l-49 -238h283l-50 -229h-282l-115 -539q-6 -30 -6 -53q0 -74 88 -74q65 0 162 35v-225q-111 -53 -266 -53q-150 0 -220.5 63t-70.5 195q0 50 12 112l115 539h-152z" />
-<glyph unicode="u" horiz-adv-x="1237" d="M111 301q0 93 24 213l127 604h301l-137 -653q-16 -68 -16 -119q0 -123 108 -123q92 0 167 114t118 318l98 463h301l-237 -1118h-230l21 207h-6q-145 -227 -355 -227q-138 0 -211 82.5t-73 238.5z" />
-<glyph unicode="v" horiz-adv-x="1049" d="M102 1118h295l45 -586q7 -133 7 -231h6q55 153 92 223l297 594h323l-604 -1118h-323z" />
-<glyph unicode="w" horiz-adv-x="1614" d="M125 1118h281l4 -495l-4 -167l-7 -171h4q6 20 14 41.5t51 136.5t46 119l231 536h328v-536q0 -142 -10 -297h6l28 80q73 208 95 258l219 495h307l-530 -1118h-330l-6 520q0 155 10 340h-6q-62 -178 -123 -319l-233 -541h-324z" />
-<glyph unicode="x" horiz-adv-x="1087" d="M-100 0l479 573l-225 545h321l115 -334l244 334h354l-467 -561l244 -557h-326l-125 342l-264 -342h-350z" />
-<glyph unicode="y" horiz-adv-x="1063" d="M-141 -233q68 -13 116 -13q84 0 147.5 48t117.5 149l26 49l-164 1118h295l56 -518q14 -122 14 -293h6q20 51 44 119.5t65 153.5l260 538h327l-680 -1278q-177 -332 -483 -332q-90 0 -147 19v240z" />
-<glyph unicode="z" horiz-adv-x="932" d="M-47 0l35 180l575 705h-397l51 233h750l-43 -200l-566 -685h439l-49 -233h-795z" />
-<glyph unicode="{" horiz-adv-x="727" d="M-8 459l45 229q122 0 192.5 41.5t92.5 138.5l61 285q38 170 131 239.5t270 69.5h84l-49 -225q-90 -2 -130.5 -34.5t-55.5 -106.5l-66 -297q-45 -207 -276 -236v-8q85 -26 126.5 -82.5t41.5 -134.5q0 -44 -15 -113l-36 -178q-7 -28 -7 -51q0 -54 33.5 -74t91.5 -20v-226 h-53q-167 0 -253.5 63.5t-86.5 184.5q0 57 14 125l39 184q15 69 15 86q0 140 -209 140z" />
-<glyph unicode="|" d="M455 -465v2015h219v-2015h-219z" />
-<glyph unicode="}" horiz-adv-x="727" d="M-100 -98q93 3 137 35.5t59 105.5l66 297q25 111 95 166t181 69v9q-168 51 -168 217q0 43 15 112l37 179q6 30 6 51q0 54 -36.5 74t-109.5 20l41 225h33q340 0 340 -248q0 -56 -14 -124l-39 -185q-15 -69 -15 -86q0 -139 209 -139l-45 -229q-122 0 -192.5 -42t-91.5 -139 l-62 -284q-37 -170 -130.5 -240t-270.5 -70h-45v226z" />
-<glyph unicode="~" d="M109 551v231q101 109 256 109q64 0 117 -14t139 -50q64 -27 111 -41t95 -14q51 0 112 30.5t122 90.5v-231q-103 -109 -256 -109q-59 0 -109 11.5t-147 51.5q-89 38 -127 47t-80 9q-54 0 -116.5 -33t-116.5 -88z" />
-<glyph unicode="&#xa1;" horiz-adv-x="586" d="M-74 -371l256 977h242l-158 -977h-340zM195 924q0 85 54 139.5t144 54.5q73 0 114.5 -37t41.5 -104q0 -92 -55.5 -145.5t-149.5 -53.5q-68 0 -108.5 38t-40.5 108z" />
-<glyph unicode="&#xa2;" d="M164 584q0 193 62.5 355t178 262.5t267.5 123.5l33 158h188l-35 -158q118 -14 225 -65l-92 -230q-53 23 -105 40t-118 17q-133 0 -216 -143t-83 -336q0 -96 45 -144t127 -48q75 0 140 23.5t134 58.5v-246q-136 -71 -299 -80l-41 -192h-188l49 210q-134 36 -203 136 t-69 258z" />
-<glyph unicode="&#xa3;" d="M-12 0l49 246q196 48 244 264l22 104h-192l45 220h192l49 247q41 197 162 300.5t313 103.5q195 0 369 -86l-113 -232q-141 68 -237 68q-75 0 -123 -39.5t-68 -132.5l-47 -229h299l-45 -220h-299l-18 -84q-42 -195 -209 -270h655l-55 -260h-993z" />
-<glyph unicode="&#xa4;" d="M115 1047l147 147l127 -127q91 53 197 53q105 0 196 -55l127 129l150 -143l-129 -129q53 -89 53 -199q0 -107 -53 -199l125 -125l-146 -145l-127 125q-95 -51 -196 -51q-115 0 -199 51l-125 -123l-145 145l127 125q-54 93 -54 197q0 102 54 197zM397 723 q0 -77 54.5 -132.5t134.5 -55.5q81 0 136.5 55t55.5 133q0 80 -56.5 135t-135.5 55q-78 0 -133.5 -56t-55.5 -134z" />
-<glyph unicode="&#xa5;" d="M88 221l37 178h252l29 138h-252l39 178h196l-192 747h297l114 -590l371 590h311l-506 -747h203l-39 -178h-252l-28 -138h252l-37 -178h-252l-47 -221h-291l47 221h-252z" />
-<glyph unicode="&#xa6;" d="M455 350h219v-815h-219v815zM455 735v815h219v-815h-219z" />
-<glyph unicode="&#xa7;" horiz-adv-x="995" d="M20 55v224q172 -105 345 -105q99 0 144.5 35t45.5 92q0 39 -33 72.5t-127 79.5q-117 57 -181 131t-64 176q0 89 47.5 163t154.5 142q-42 34 -70 84.5t-28 107.5q0 149 117 234.5t313 85.5q172 0 344 -88l-82 -193q-147 84 -282 84q-144 0 -144 -106q0 -43 40.5 -76 t127.5 -72q242 -106 242 -303q0 -188 -193 -303q38 -35 64 -85.5t26 -108.5q0 -161 -126 -253.5t-345 -92.5q-204 0 -336 75zM393 797q0 -54 43.5 -96.5t143.5 -88.5q49 31 75.5 78.5t26.5 95.5q0 109 -176 181q-51 -25 -82 -70.5t-31 -99.5z" />
-<glyph unicode="&#xa8;" horiz-adv-x="1135" d="M397 1382q0 78 42.5 118t119.5 40q133 0 133 -108q0 -73 -39 -116.5t-121 -43.5q-135 0 -135 110zM799 1382q0 78 42 118t120 40q65 0 99 -28t34 -80q0 -73 -39.5 -116.5t-120.5 -43.5q-135 0 -135 110z" />
-<glyph unicode="&#xa9;" horiz-adv-x="1704" d="M125 731q0 200 100 375t275 276t377 101q199 0 373.5 -99t276 -275.5t101.5 -377.5q0 -199 -98.5 -373t-272.5 -276t-380 -102q-207 0 -382 103.5t-272.5 276.5t-97.5 371zM266 731q0 -164 81.5 -305t224 -223t305.5 -82q167 0 308 83t221.5 223.5t80.5 303.5 t-80.5 303.5t-222 223.5t-307.5 83q-164 0 -306.5 -82.5t-223.5 -223.5t-81 -304zM485 721q0 225 117.5 351t325.5 126q142 0 284 -72l-75 -174q-114 58 -205 58q-111 0 -163 -73t-52 -214q0 -134 55.5 -203t159.5 -69q43 0 108.5 15.5t124.5 43.5v-191q-131 -57 -262 -57 q-196 0 -307 122.5t-111 336.5z" />
-<glyph unicode="&#xaa;" horiz-adv-x="772" d="M152 1020q0 117 46 228t123 171t177 60q120 0 180 -103h6l39 90h154l-158 -702h-154l8 92h-2q-80 -104 -202 -104q-103 0 -160 70t-57 198zM356 1014q0 -111 86 -111q45 0 84 41.5t65.5 120t26.5 154.5q0 106 -88 106q-73 0 -123.5 -96t-50.5 -215z" />
-<glyph unicode="&#xab;" horiz-adv-x="1151" d="M72 551v18l401 463l191 -155l-279 -334l135 -350l-246 -103zM559 551v18l402 463l190 -155l-279 -334l136 -350l-246 -103z" />
-<glyph unicode="&#xac;" d="M109 612v219h952v-583h-219v364h-733z" />
-<glyph unicode="&#xad;" horiz-adv-x="659" d="M41 424l53 250h524l-53 -250h-524z" />
-<glyph unicode="&#xae;" horiz-adv-x="1704" d="M125 731q0 200 100 375t275 276t377 101q199 0 373.5 -99t276 -275.5t101.5 -377.5q0 -199 -98.5 -373t-272.5 -276t-380 -102q-207 0 -382 103.5t-272.5 276.5t-97.5 371zM266 731q0 -164 81.5 -305t224 -223t305.5 -82q167 0 308 83t221.5 223.5t80.5 303.5 t-80.5 303.5t-222 223.5t-307.5 83q-164 0 -306.5 -82.5t-223.5 -223.5t-81 -304zM571 293v874h308q173 0 265.5 -67.5t92.5 -200.5q0 -86 -44 -149.5t-130 -96.5l197 -360h-254l-138 297h-67v-297h-230zM801 758h51q72 0 113 31t41 92q0 59 -35.5 88.5t-116.5 29.5h-53 v-241z" />
-<glyph unicode="&#xaf;" horiz-adv-x="1024" d="M-6 1556l45 201h1036l-45 -201h-1036z" />
-<glyph unicode="&#xb0;" horiz-adv-x="877" d="M164 1137q0 93 46.5 173.5t127.5 126.5t172 46q93 0 173.5 -47t126.5 -127t46 -172q0 -93 -46 -173t-126 -125.5t-174 -45.5q-93 0 -173 45t-126.5 125t-46.5 174zM354 1137q0 -63 45.5 -108.5t110.5 -45.5q66 0 111 46t45 108q0 63 -45.5 110t-110.5 47t-110.5 -47.5 t-45.5 -109.5z" />
-<glyph unicode="&#xb1;" d="M109 0v219h952v-219h-952zM109 674v219h366v369h219v-369h367v-219h-367v-365h-219v365h-366z" />
-<glyph unicode="&#xb2;" horiz-adv-x="776" d="M59 586l35 166l273 219q111 91 141 122t44.5 59t14.5 56q0 42 -25.5 62t-60.5 20q-86 0 -188 -82l-100 158q74 57 156 87t192 30q123 0 196.5 -63t73.5 -160q0 -70 -22 -123t-70 -103.5t-189 -152.5l-129 -95h347l-41 -200h-648z" />
-<glyph unicode="&#xb3;" horiz-adv-x="776" d="M92 625v192q125 -72 254 -72q76 0 125 30.5t49 88.5q0 37 -26 62.5t-88 25.5h-127l34 160h90q84 0 132.5 28t48.5 85q0 40 -26 60t-71 20q-86 0 -188 -66l-82 150q142 92 313 92q130 0 206.5 -55.5t76.5 -155.5q0 -87 -51 -145.5t-166 -88.5v-4q154 -33 154 -176 q0 -131 -107 -209t-285 -78q-75 0 -145.5 15.5t-120.5 40.5z" />
-<glyph unicode="&#xb4;" horiz-adv-x="1135" d="M483 1241v25q79 88 222 303h335v-17q-46 -56 -154 -152.5t-194 -158.5h-209z" />
-<glyph unicode="&#xb5;" horiz-adv-x="1249" d="M-68 -492l342 1610h301l-135 -645q-16 -70 -16 -125q0 -60 31.5 -92.5t79.5 -32.5q90 0 162.5 106.5t117.5 319.5l98 469h301l-237 -1118h-229l18 176h-6q-117 -196 -266 -196q-51 0 -89.5 19.5t-58.5 47.5h-6q-8 -66 -21.5 -139t-82.5 -400h-304z" />
-<glyph unicode="&#xb6;" horiz-adv-x="1341" d="M147 1042q0 256 107.5 385t343.5 129h604v-1816h-162v1616h-166v-1616h-161v819q-62 -18 -146 -18q-216 0 -318 125t-102 376z" />
-<glyph unicode="&#xb7;" horiz-adv-x="584" d="M131 695q0 90 53.5 144t150.5 54q68 0 109 -38t41 -107q0 -87 -55 -141t-144 -54q-73 0 -114 37.5t-41 104.5z" />
-<glyph unicode="&#xb8;" horiz-adv-x="420" d="M-207 -301q63 -23 125 -23q102 0 102 82q0 34 -31 56.5t-110 31.5l96 154h185l-39 -72q141 -49 141 -178q0 -116 -83 -179t-234 -63q-86 0 -152 23v168z" />
-<glyph unicode="&#xb9;" horiz-adv-x="776" d="M129 1214l399 248h207l-186 -876h-246l84 397q24 109 55 207q-16 -15 -80 -60l-131 -81z" />
-<glyph unicode="&#xba;" horiz-adv-x="754" d="M162 1038q0 197 104 319t277 122q129 0 197.5 -73.5t68.5 -211.5q0 -128 -48.5 -232.5t-132.5 -157t-196 -52.5q-134 0 -202 75t-68 211zM371 1026q0 -111 80 -111q63 0 105 85.5t42 207.5q0 107 -76 107q-64 0 -107.5 -89.5t-43.5 -199.5z" />
-<glyph unicode="&#xbb;" horiz-adv-x="1151" d="M0 227l279 334l-136 350l246 103l203 -461v-18l-402 -463zM487 227l279 334l-135 350l246 103l202 -461v-18l-401 -463z" />
-<glyph unicode="&#xbc;" horiz-adv-x="1804" d="M177 0l1087 1462h236l-1084 -1462h-239zM97 1214l399 248h207l-186 -876h-246l84 397q24 109 55 207q-16 -15 -80 -60l-131 -81zM844 152l31 174l475 557h260l-121 -563h119l-35 -168h-119l-32 -151h-238l33 151h-373zM1078 320h174l58 231l22 74q-13 -20 -43 -58 t-211 -247z" />
-<glyph unicode="&#xbd;" horiz-adv-x="1804" d="M940 1l35 166l273 219q111 91 141 122t44.5 59t14.5 56q0 42 -25.5 62t-60.5 20q-86 0 -188 -82l-100 158q74 57 156 87t192 30q123 0 196.5 -63t73.5 -160q0 -70 -22 -123t-70 -103.5t-189 -152.5l-129 -95h347l-41 -200h-648zM97 1214l399 248h207l-186 -876h-246 l84 397q24 109 55 207q-16 -15 -80 -60l-131 -81zM177 0l1087 1462h236l-1084 -1462h-239z" />
-<glyph unicode="&#xbe;" horiz-adv-x="1804" d="M310 0l1087 1462h236l-1084 -1462h-239zM905 152l31 174l475 557h260l-121 -563h119l-35 -168h-119l-32 -151h-238l33 151h-373zM1139 320h174l58 231l22 74q-13 -20 -43 -58t-211 -247zM133 625v192q125 -72 254 -72q76 0 125 30.5t49 88.5q0 37 -26 62.5t-88 25.5h-127 l34 160h90q84 0 132.5 28t48.5 85q0 40 -26 60t-71 20q-86 0 -188 -66l-82 150q142 92 313 92q130 0 206.5 -55.5t76.5 -155.5q0 -87 -51 -145.5t-166 -88.5v-4q154 -33 154 -176q0 -131 -107 -209t-285 -78q-75 0 -145.5 15.5t-120.5 40.5z" />
-<glyph unicode="&#xbf;" horiz-adv-x="940" d="M-68 -59q0 82 28.5 148.5t83.5 124t189 146.5q93 62 128 106.5t51 106.5l8 33h258l-14 -78q-19 -105 -76.5 -180t-169.5 -151q-122 -83 -156.5 -126t-34.5 -98q0 -118 133 -118q50 0 106.5 16t201.5 84l92 -221q-221 -125 -445 -125q-177 0 -280 87.5t-103 244.5z M418 924q0 86 54.5 140t143.5 54q73 0 114.5 -37t41.5 -104q0 -92 -55.5 -145.5t-149.5 -53.5q-68 0 -108.5 38t-40.5 108z" />
-<glyph unicode="&#xc0;" horiz-adv-x="1286" d="M-123 0l766 1468h373l147 -1468h-297l-24 348h-473l-172 -348h-320zM494 608h333l-26 350q-10 131 -10 253v36q-44 -120 -109 -254zM539 1886v21h311q36 -148 115 -303v-25h-184q-71 69 -138.5 153.5t-103.5 153.5z" />
-<glyph unicode="&#xc1;" horiz-adv-x="1286" d="M-123 0l766 1468h373l147 -1468h-297l-24 348h-473l-172 -348h-320zM494 608h333l-26 350q-10 131 -10 253v36q-44 -120 -109 -254zM735 1579v25q79 88 222 303h335v-17q-46 -56 -154 -152.5t-194 -158.5h-209z" />
-<glyph unicode="&#xc2;" horiz-adv-x="1286" d="M-123 0l766 1468h373l147 -1468h-297l-24 348h-473l-172 -348h-320zM494 608h333l-26 350q-10 131 -10 253v36q-44 -120 -109 -254zM426 1579v25q63 57 153 147t142 156h338q22 -54 74 -142.5t102 -160.5v-25h-198q-63 53 -162 168q-105 -88 -232 -168h-217z" />
-<glyph unicode="&#xc3;" horiz-adv-x="1286" d="M-123 0l766 1468h373l147 -1468h-297l-24 348h-473l-172 -348h-320zM494 608h333l-26 350q-10 131 -10 253v36q-44 -120 -109 -254zM448 1577q59 309 281 309q49 0 87.5 -16.5t71.5 -36t62 -35.5t60 -16q34 0 58 25.5t46 80.5h172q-66 -309 -287 -309q-49 0 -86.5 16.5 t-69.5 36t-61.5 36t-62.5 16.5q-31 0 -55.5 -28t-38.5 -79h-177z" />
-<glyph unicode="&#xc4;" horiz-adv-x="1286" d="M-123 0l766 1468h373l147 -1468h-297l-24 348h-473l-172 -348h-320zM494 608h333l-26 350q-10 131 -10 253v36q-44 -120 -109 -254zM516 1720q0 78 42.5 118t119.5 40q133 0 133 -108q0 -73 -39 -116.5t-121 -43.5q-135 0 -135 110zM918 1720q0 78 42 118t120 40 q65 0 99 -28t34 -80q0 -73 -39.5 -116.5t-120.5 -43.5q-135 0 -135 110z" />
-<glyph unicode="&#xc5;" horiz-adv-x="1286" d="M-123 0l766 1468h373l147 -1468h-297l-24 348h-473l-172 -348h-320zM494 608h333l-26 350q-10 131 -10 253v36q-44 -120 -109 -254zM585 1565q0 109 68.5 173t179.5 64q110 0 182 -65t72 -170q0 -107 -70 -173.5t-184 -66.5q-110 0 -179 63.5t-69 174.5zM737 1565 q0 -45 24 -71t72 -26q42 0 69.5 26t27.5 71t-27.5 70.5t-69.5 25.5t-69 -25.5t-27 -70.5z" />
-<glyph unicode="&#xc6;" horiz-adv-x="1833" d="M-123 0l922 1462h1104l-54 -254h-512l-67 -321h477l-55 -254h-478l-79 -377h512l-54 -256h-817l74 348h-426l-219 -348h-328zM588 608h317l127 600h-80z" />
-<glyph unicode="&#xc7;" horiz-adv-x="1253" d="M123 553q0 262 104 482.5t278 335t400 114.5q125 0 222 -22.5t208 -82.5l-118 -250q-106 59 -175 78t-137 19q-132 0 -237.5 -81t-169.5 -238.5t-64 -338.5q0 -167 68.5 -248t218.5 -81q146 0 338 77v-260q-199 -77 -400 -77q-254 0 -395 149.5t-141 423.5zM356 -301 q63 -23 125 -23q102 0 102 82q0 34 -31 56.5t-110 31.5l96 154h185l-39 -72q141 -49 141 -178q0 -116 -83 -179t-234 -63q-86 0 -152 23v168z" />
-<glyph unicode="&#xc8;" horiz-adv-x="1110" d="M53 0l309 1462h818l-54 -254h-512l-67 -321h477l-55 -254h-477l-80 -377h512l-54 -256h-817zM480 1886v21h311q36 -148 115 -303v-25h-184q-71 69 -138.5 153.5t-103.5 153.5z" />
-<glyph unicode="&#xc9;" horiz-adv-x="1110" d="M53 0l309 1462h818l-54 -254h-512l-67 -321h477l-55 -254h-477l-80 -377h512l-54 -256h-817zM608 1579v25q79 88 222 303h335v-17q-46 -56 -154 -152.5t-194 -158.5h-209z" />
-<glyph unicode="&#xca;" horiz-adv-x="1110" d="M53 0l309 1462h818l-54 -254h-512l-67 -321h477l-55 -254h-477l-80 -377h512l-54 -256h-817zM368 1579v25q63 57 153 147t142 156h338q22 -54 74 -142.5t102 -160.5v-25h-198q-63 53 -162 168q-105 -88 -232 -168h-217z" />
-<glyph unicode="&#xcb;" horiz-adv-x="1110" d="M53 0l309 1462h818l-54 -254h-512l-67 -321h477l-55 -254h-477l-80 -377h512l-54 -256h-817zM438 1720q0 78 42.5 118t119.5 40q133 0 133 -108q0 -73 -39 -116.5t-121 -43.5q-135 0 -135 110zM840 1720q0 78 42 118t120 40q65 0 99 -28t34 -80q0 -73 -39.5 -116.5 t-120.5 -43.5q-135 0 -135 110z" />
-<glyph unicode="&#xcc;" horiz-adv-x="659" d="M53 0l312 1462h305l-312 -1462h-305zM241 1886v21h311q36 -148 115 -303v-25h-184q-71 69 -138.5 153.5t-103.5 153.5z" />
-<glyph unicode="&#xcd;" horiz-adv-x="659" d="M53 0l312 1462h305l-312 -1462h-305zM414 1579v25q79 88 222 303h335v-17q-46 -56 -154 -152.5t-194 -158.5h-209z" />
-<glyph unicode="&#xce;" horiz-adv-x="659" d="M53 0l312 1462h305l-312 -1462h-305zM128 1579v25q63 57 153 147t142 156h338q22 -54 74 -142.5t102 -160.5v-25h-198q-63 53 -162 168q-105 -88 -232 -168h-217z" />
-<glyph unicode="&#xcf;" horiz-adv-x="659" d="M53 0l312 1462h305l-312 -1462h-305zM222 1720q0 78 42.5 118t119.5 40q133 0 133 -108q0 -73 -39 -116.5t-121 -43.5q-135 0 -135 110zM624 1720q0 78 42 118t120 40q65 0 99 -28t34 -80q0 -73 -39.5 -116.5t-120.5 -43.5q-135 0 -135 110z" />
-<glyph unicode="&#xd0;" horiz-adv-x="1386" d="M37 596l55 254h139l131 612h396q270 0 417.5 -143t147.5 -410q0 -280 -98 -486.5t-283.5 -314.5t-437.5 -108h-451l125 596h-141zM412 256h106q148 0 258 76t172 223.5t62 337.5q0 154 -72.5 234.5t-208.5 80.5h-115l-75 -358h237l-55 -254h-238z" />
-<glyph unicode="&#xd1;" horiz-adv-x="1546" d="M53 0l309 1462h357l340 -1077h4q12 76 39 217t180 860h274l-309 -1462h-342l-356 1106h-6l-4 -32q-32 -216 -66 -386l-145 -688h-275zM563 1577q59 309 281 309q49 0 87.5 -16.5t71.5 -36t62 -35.5t60 -16q34 0 58 25.5t46 80.5h172q-66 -309 -287 -309q-49 0 -86.5 16.5 t-69.5 36t-61.5 36t-62.5 16.5q-31 0 -55.5 -28t-38.5 -79h-177z" />
-<glyph unicode="&#xd2;" horiz-adv-x="1495" d="M123 537q0 265 99 487.5t273 341.5t402 119q255 0 395 -144t140 -403q0 -283 -99 -506.5t-271 -337.5t-396 -114q-256 0 -399.5 147.5t-143.5 409.5zM434 537q0 -147 66.5 -222t187.5 -75t220.5 87t155.5 246t56 357q0 142 -65 219.5t-183 77.5q-121 0 -222 -91.5 t-158.5 -251.5t-57.5 -347zM627 1886v21h311q36 -148 115 -303v-25h-184q-71 69 -138.5 153.5t-103.5 153.5z" />
-<glyph unicode="&#xd3;" horiz-adv-x="1495" d="M123 537q0 265 99 487.5t273 341.5t402 119q255 0 395 -144t140 -403q0 -283 -99 -506.5t-271 -337.5t-396 -114q-256 0 -399.5 147.5t-143.5 409.5zM434 537q0 -147 66.5 -222t187.5 -75t220.5 87t155.5 246t56 357q0 142 -65 219.5t-183 77.5q-121 0 -222 -91.5 t-158.5 -251.5t-57.5 -347zM753 1579v25q79 88 222 303h335v-17q-46 -56 -154 -152.5t-194 -158.5h-209z" />
-<glyph unicode="&#xd4;" horiz-adv-x="1495" d="M123 537q0 265 99 487.5t273 341.5t402 119q255 0 395 -144t140 -403q0 -283 -99 -506.5t-271 -337.5t-396 -114q-256 0 -399.5 147.5t-143.5 409.5zM434 537q0 -147 66.5 -222t187.5 -75t220.5 87t155.5 246t56 357q0 142 -65 219.5t-183 77.5q-121 0 -222 -91.5 t-158.5 -251.5t-57.5 -347zM499 1579v25q63 57 153 147t142 156h338q22 -54 74 -142.5t102 -160.5v-25h-198q-63 53 -162 168q-105 -88 -232 -168h-217z" />
-<glyph unicode="&#xd5;" horiz-adv-x="1495" d="M123 537q0 265 99 487.5t273 341.5t402 119q255 0 395 -144t140 -403q0 -283 -99 -506.5t-271 -337.5t-396 -114q-256 0 -399.5 147.5t-143.5 409.5zM434 537q0 -147 66.5 -222t187.5 -75t220.5 87t155.5 246t56 357q0 142 -65 219.5t-183 77.5q-121 0 -222 -91.5 t-158.5 -251.5t-57.5 -347zM520 1577q59 309 281 309q49 0 87.5 -16.5t71.5 -36t62 -35.5t60 -16q34 0 58 25.5t46 80.5h172q-66 -309 -287 -309q-49 0 -86.5 16.5t-69.5 36t-61.5 36t-62.5 16.5q-31 0 -55.5 -28t-38.5 -79h-177z" />
-<glyph unicode="&#xd6;" horiz-adv-x="1495" d="M123 537q0 265 99 487.5t273 341.5t402 119q255 0 395 -144t140 -403q0 -283 -99 -506.5t-271 -337.5t-396 -114q-256 0 -399.5 147.5t-143.5 409.5zM434 537q0 -147 66.5 -222t187.5 -75t220.5 87t155.5 246t56 357q0 142 -65 219.5t-183 77.5q-121 0 -222 -91.5 t-158.5 -251.5t-57.5 -347zM585 1720q0 78 42.5 118t119.5 40q133 0 133 -108q0 -73 -39 -116.5t-121 -43.5q-135 0 -135 110zM987 1720q0 78 42 118t120 40q65 0 99 -28t34 -80q0 -73 -39.5 -116.5t-120.5 -43.5q-135 0 -135 110z" />
-<glyph unicode="&#xd7;" d="M129 1024l152 154l301 -299l305 299l153 -150l-305 -305l301 -303l-149 -152l-305 301l-301 -299l-150 152l297 301z" />
-<glyph unicode="&#xd8;" horiz-adv-x="1495" d="M100 29l121 151q-98 138 -98 357q0 265 99 487.5t273 341.5t402 119q182 0 305 -76l105 131l151 -117l-117 -145q91 -134 91 -340q0 -283 -99 -506.5t-271 -337.5t-396 -114q-180 0 -304 71l-108 -137zM424 537q0 -32 8 -101l596 754q-69 43 -158 43q-126 0 -229 -91.5 t-160 -252.5t-57 -352zM539 270q59 -37 153 -37q124 0 226 89t158.5 247.5t56.5 360.5l-5 80z" />
-<glyph unicode="&#xd9;" horiz-adv-x="1415" d="M141 401q0 72 15 138l196 923h305l-194 -919q-17 -74 -17 -125q0 -178 189 -178q123 0 195 76.5t104 228.5l194 917h306l-201 -946q-57 -266 -218 -401t-419 -135q-212 0 -333.5 113.5t-121.5 307.5zM576 1886v21h311q36 -148 115 -303v-25h-184q-71 69 -138.5 153.5 t-103.5 153.5z" />
-<glyph unicode="&#xda;" horiz-adv-x="1415" d="M141 401q0 72 15 138l196 923h305l-194 -919q-17 -74 -17 -125q0 -178 189 -178q123 0 195 76.5t104 228.5l194 917h306l-201 -946q-57 -266 -218 -401t-419 -135q-212 0 -333.5 113.5t-121.5 307.5zM757 1579v25q79 88 222 303h335v-17q-46 -56 -154 -152.5t-194 -158.5 h-209z" />
-<glyph unicode="&#xdb;" horiz-adv-x="1415" d="M141 401q0 72 15 138l196 923h305l-194 -919q-17 -74 -17 -125q0 -178 189 -178q123 0 195 76.5t104 228.5l194 917h306l-201 -946q-57 -266 -218 -401t-419 -135q-212 0 -333.5 113.5t-121.5 307.5zM475 1579v25q63 57 153 147t142 156h338q22 -54 74 -142.5t102 -160.5 v-25h-198q-63 53 -162 168q-105 -88 -232 -168h-217z" />
-<glyph unicode="&#xdc;" horiz-adv-x="1415" d="M141 401q0 72 15 138l196 923h305l-194 -919q-17 -74 -17 -125q0 -178 189 -178q123 0 195 76.5t104 228.5l194 917h306l-201 -946q-57 -266 -218 -401t-419 -135q-212 0 -333.5 113.5t-121.5 307.5zM565 1720q0 78 42.5 118t119.5 40q133 0 133 -108q0 -73 -39 -116.5 t-121 -43.5q-135 0 -135 110zM967 1720q0 78 42 118t120 40q65 0 99 -28t34 -80q0 -73 -39.5 -116.5t-120.5 -43.5q-135 0 -135 110z" />
-<glyph unicode="&#xdd;" horiz-adv-x="1155" d="M186 1462h312l129 -592l374 592h342l-618 -903l-119 -559h-303l119 559zM606 1579v25q79 88 222 303h335v-17q-46 -56 -154 -152.5t-194 -158.5h-209z" />
-<glyph unicode="&#xde;" horiz-adv-x="1188" d="M53 0l309 1462h306l-50 -229h35q242 0 366 -106.5t124 -319.5q0 -243 -170.5 -378.5t-466.5 -135.5h-86l-62 -293h-305zM475 547h55q139 0 222.5 66.5t83.5 185.5q0 180 -195 180h-74z" />
-<glyph unicode="&#xdf;" horiz-adv-x="1350" d="M-260 -225q61 -21 115 -21q133 0 170 178l254 1207q47 224 182 326t385 102q208 0 331 -90t123 -240q0 -114 -49 -192t-178 -152q-73 -42 -96 -68.5t-23 -54.5q0 -23 22 -49.5t79 -69.5q107 -83 144.5 -150.5t37.5 -150.5q0 -170 -123.5 -270t-337.5 -100q-187 0 -297 61 v240q128 -78 258 -78q101 0 148 33t47 86q0 40 -26.5 75t-108.5 97q-94 72 -129 130t-35 126q0 84 45 145t162 127q66 37 104.5 76t38.5 96q0 62 -39.5 98.5t-124.5 36.5q-96 0 -156 -51.5t-85 -171.5l-254 -1219q-43 -198 -147 -288.5t-277 -90.5q-90 0 -160 25v242z" />
-<glyph unicode="&#xe0;" horiz-adv-x="1217" d="M90 385q0 198 72 377.5t189 278t257 98.5q97 0 167.5 -42t109.5 -122h8l57 143h232l-238 -1118h-229l14 145h-4q-134 -165 -319 -165q-147 0 -231.5 106.5t-84.5 298.5zM395 399q0 -88 33.5 -132t95.5 -44q69 0 133 67t103 181.5t39 259.5q0 71 -38.5 117.5t-101.5 46.5 q-68 0 -129.5 -72t-98 -190t-36.5 -234zM443 1548v21h311q36 -148 115 -303v-25h-184q-71 69 -138.5 153.5t-103.5 153.5z" />
-<glyph unicode="&#xe1;" horiz-adv-x="1217" d="M90 385q0 198 72 377.5t189 278t257 98.5q97 0 167.5 -42t109.5 -122h8l57 143h232l-238 -1118h-229l14 145h-4q-134 -165 -319 -165q-147 0 -231.5 106.5t-84.5 298.5zM395 399q0 -88 33.5 -132t95.5 -44q69 0 133 67t103 181.5t39 259.5q0 71 -38.5 117.5t-101.5 46.5 q-68 0 -129.5 -72t-98 -190t-36.5 -234zM598 1241v25q79 88 222 303h335v-17q-46 -56 -154 -152.5t-194 -158.5h-209z" />
-<glyph unicode="&#xe2;" horiz-adv-x="1217" d="M90 385q0 198 72 377.5t189 278t257 98.5q97 0 167.5 -42t109.5 -122h8l57 143h232l-238 -1118h-229l14 145h-4q-134 -165 -319 -165q-147 0 -231.5 106.5t-84.5 298.5zM395 399q0 -88 33.5 -132t95.5 -44q69 0 133 67t103 181.5t39 259.5q0 71 -38.5 117.5t-101.5 46.5 q-68 0 -129.5 -72t-98 -190t-36.5 -234zM311 1240v25q63 57 153 147t142 156h338q22 -54 74 -142.5t102 -160.5v-25h-198q-63 53 -162 168q-105 -88 -232 -168h-217z" />
-<glyph unicode="&#xe3;" horiz-adv-x="1217" d="M90 385q0 198 72 377.5t189 278t257 98.5q97 0 167.5 -42t109.5 -122h8l57 143h232l-238 -1118h-229l14 145h-4q-134 -165 -319 -165q-147 0 -231.5 106.5t-84.5 298.5zM395 399q0 -88 33.5 -132t95.5 -44q69 0 133 67t103 181.5t39 259.5q0 71 -38.5 117.5t-101.5 46.5 q-68 0 -129.5 -72t-98 -190t-36.5 -234zM333 1239q59 309 281 309q49 0 87.5 -16.5t71.5 -36t62 -35.5t60 -16q34 0 58 25.5t46 80.5h172q-66 -309 -287 -309q-49 0 -86.5 16.5t-69.5 36t-61.5 36t-62.5 16.5q-31 0 -55.5 -28t-38.5 -79h-177z" />
-<glyph unicode="&#xe4;" horiz-adv-x="1217" d="M90 385q0 198 72 377.5t189 278t257 98.5q97 0 167.5 -42t109.5 -122h8l57 143h232l-238 -1118h-229l14 145h-4q-134 -165 -319 -165q-147 0 -231.5 106.5t-84.5 298.5zM395 399q0 -88 33.5 -132t95.5 -44q69 0 133 67t103 181.5t39 259.5q0 71 -38.5 117.5t-101.5 46.5 q-68 0 -129.5 -72t-98 -190t-36.5 -234zM397 1382q0 78 42.5 118t119.5 40q133 0 133 -108q0 -73 -39 -116.5t-121 -43.5q-135 0 -135 110zM799 1382q0 78 42 118t120 40q65 0 99 -28t34 -80q0 -73 -39.5 -116.5t-120.5 -43.5q-135 0 -135 110z" />
-<glyph unicode="&#xe5;" horiz-adv-x="1217" d="M90 385q0 198 72 377.5t189 278t257 98.5q97 0 167.5 -42t109.5 -122h8l57 143h232l-238 -1118h-229l14 145h-4q-134 -165 -319 -165q-147 0 -231.5 106.5t-84.5 298.5zM395 399q0 -88 33.5 -132t95.5 -44q69 0 133 67t103 181.5t39 259.5q0 71 -38.5 117.5t-101.5 46.5 q-68 0 -129.5 -72t-98 -190t-36.5 -234zM521 1477q0 109 68.5 173t179.5 64q110 0 182 -65t72 -170q0 -107 -70 -173.5t-184 -66.5q-110 0 -179 63.5t-69 174.5zM673 1477q0 -45 24 -71t72 -26q42 0 69.5 26t27.5 71t-27.5 70.5t-69.5 25.5t-69 -25.5t-27 -70.5z" />
-<glyph unicode="&#xe6;" horiz-adv-x="1786" d="M90 385q0 200 68.5 375.5t185 277t258.5 101.5q96 0 160.5 -38.5t114.5 -125.5h6l57 143h188l-18 -90q44 49 120.5 80t168.5 31q157 0 246.5 -83.5t89.5 -221.5q0 -187 -167 -288.5t-476 -101.5h-52l-2 -19v-19q0 -96 55.5 -147.5t159.5 -51.5q66 0 152 23t162 63v-227 q-179 -86 -361 -86q-109 0 -179.5 27t-117.5 87l-16 -94h-188l14 145h-6q-71 -88 -146.5 -126.5t-167.5 -38.5q-146 0 -227.5 109t-81.5 296zM395 399q0 -84 32.5 -130t90.5 -46q72 0 134 68t99 184.5t37 243.5q0 80 -33 128t-102 48q-68 0 -128 -69t-95 -185.5t-35 -241.5z M1073 647h45q155 0 241.5 48.5t86.5 131.5q0 95 -105 95q-88 0 -166 -80t-102 -195z" />
-<glyph unicode="&#xe7;" horiz-adv-x="989" d="M90 391q0 212 74.5 385.5t209.5 268t308 94.5q182 0 328 -72l-92 -229q-54 23 -106 40t-118 17q-85 0 -153.5 -64t-107 -175.5t-38.5 -239.5q0 -96 45.5 -144.5t126.5 -48.5q76 0 141 23.5t134 58.5v-246q-152 -79 -336 -79q-201 0 -308.5 107.5t-107.5 303.5zM184 -301 q63 -23 125 -23q102 0 102 82q0 34 -31 56.5t-110 31.5l96 154h185l-39 -72q141 -49 141 -178q0 -116 -83 -179t-234 -63q-86 0 -152 23v168z" />
-<glyph unicode="&#xe8;" horiz-adv-x="1141" d="M90 412q0 207 82.5 377.5t223.5 260t319 89.5q177 0 276 -81.5t99 -223.5q0 -187 -167 -288.5t-477 -101.5h-51l-2 -21v-20q0 -91 51.5 -143.5t147.5 -52.5q87 0 158 19t172 67v-227q-172 -86 -390 -86q-210 0 -326 113t-116 319zM428 647h45q155 0 241.5 48.5 t86.5 131.5q0 95 -105 95q-88 0 -166 -80t-102 -195zM423 1548v21h311q36 -148 115 -303v-25h-184q-71 69 -138.5 153.5t-103.5 153.5z" />
-<glyph unicode="&#xe9;" horiz-adv-x="1141" d="M90 412q0 207 82.5 377.5t223.5 260t319 89.5q177 0 276 -81.5t99 -223.5q0 -187 -167 -288.5t-477 -101.5h-51l-2 -21v-20q0 -91 51.5 -143.5t147.5 -52.5q87 0 158 19t172 67v-227q-172 -86 -390 -86q-210 0 -326 113t-116 319zM428 647h45q155 0 241.5 48.5 t86.5 131.5q0 95 -105 95q-88 0 -166 -80t-102 -195zM528 1241v25q79 88 222 303h335v-17q-46 -56 -154 -152.5t-194 -158.5h-209z" />
-<glyph unicode="&#xea;" horiz-adv-x="1141" d="M90 412q0 207 82.5 377.5t223.5 260t319 89.5q177 0 276 -81.5t99 -223.5q0 -187 -167 -288.5t-477 -101.5h-51l-2 -21v-20q0 -91 51.5 -143.5t147.5 -52.5q87 0 158 19t172 67v-227q-172 -86 -390 -86q-210 0 -326 113t-116 319zM428 647h45q155 0 241.5 48.5 t86.5 131.5q0 95 -105 95q-88 0 -166 -80t-102 -195zM292 1241v25q63 57 153 147t142 156h338q22 -54 74 -142.5t102 -160.5v-25h-198q-63 53 -162 168q-105 -88 -232 -168h-217z" />
-<glyph unicode="&#xeb;" horiz-adv-x="1141" d="M90 412q0 207 82.5 377.5t223.5 260t319 89.5q177 0 276 -81.5t99 -223.5q0 -187 -167 -288.5t-477 -101.5h-51l-2 -21v-20q0 -91 51.5 -143.5t147.5 -52.5q87 0 158 19t172 67v-227q-172 -86 -390 -86q-210 0 -326 113t-116 319zM428 647h45q155 0 241.5 48.5 t86.5 131.5q0 95 -105 95q-88 0 -166 -80t-102 -195zM365 1382q0 78 42.5 118t119.5 40q133 0 133 -108q0 -73 -39 -116.5t-121 -43.5q-135 0 -135 110zM767 1382q0 78 42 118t120 40q65 0 99 -28t34 -80q0 -73 -39.5 -116.5t-120.5 -43.5q-135 0 -135 110z" />
-<glyph unicode="&#xec;" horiz-adv-x="608" d="M37 0l237 1118h301l-237 -1118h-301zM153 1548v21h311q36 -148 115 -303v-25h-184q-71 69 -138.5 153.5t-103.5 153.5z" />
-<glyph unicode="&#xed;" horiz-adv-x="608" d="M37 0l237 1118h301l-237 -1118h-301zM291 1241v25q79 88 222 303h335v-17q-46 -56 -154 -152.5t-194 -158.5h-209z" />
-<glyph unicode="&#xee;" horiz-adv-x="608" d="M37 0l237 1118h301l-237 -1118h-301zM36 1241v25q63 57 153 147t142 156h338q22 -54 74 -142.5t102 -160.5v-25h-198q-63 53 -162 168q-105 -88 -232 -168h-217z" />
-<glyph unicode="&#xef;" horiz-adv-x="608" d="M37 0l237 1118h301l-237 -1118h-301zM126 1382q0 78 42.5 118t119.5 40q133 0 133 -108q0 -73 -39 -116.5t-121 -43.5q-135 0 -135 110zM528 1382q0 78 42 118t120 40q65 0 99 -28t34 -80q0 -73 -39.5 -116.5t-120.5 -43.5q-135 0 -135 110z" />
-<glyph unicode="&#xf0;" horiz-adv-x="1182" d="M72 406q0 165 64.5 301t180.5 212t265 76q83 0 151.5 -31t114.5 -94h6q-20 213 -117 310l-231 -131l-88 147l200 113q-34 34 -124 80l118 186q134 -61 232 -139l237 131l76 -152l-192 -106q81 -107 113 -235t32 -279q0 -249 -69.5 -432.5t-203.5 -283t-323 -99.5 q-216 0 -329 110t-113 316zM375 377q0 -81 39 -126.5t114 -45.5q66 0 122.5 55.5t89 148.5t32.5 193q0 77 -38.5 122.5t-108.5 45.5q-73 0 -130 -53t-88.5 -143t-31.5 -197z" />
-<glyph unicode="&#xf1;" horiz-adv-x="1237" d="M37 0l237 1118h230l-21 -207h6q146 228 355 228q138 0 213.5 -83.5t75.5 -238.5q0 -73 -23 -180l-133 -637h-301l137 653q16 68 16 119q0 123 -108 123q-92 0 -167 -114t-118 -318l-98 -463h-301zM358 1239q59 309 281 309q49 0 87.5 -16.5t71.5 -36t62 -35.5t60 -16 q34 0 58 25.5t46 80.5h172q-66 -309 -287 -309q-49 0 -86.5 16.5t-69.5 36t-61.5 36t-62.5 16.5q-31 0 -55.5 -28t-38.5 -79h-177z" />
-<glyph unicode="&#xf2;" horiz-adv-x="1198" d="M90 410q0 213 71.5 379.5t206.5 258t316 91.5q196 0 310 -118t114 -325q0 -211 -70.5 -374t-203.5 -252.5t-316 -89.5q-195 0 -311.5 117.5t-116.5 312.5zM393 410q0 -185 150 -185q75 0 135 61.5t93.5 171t33.5 238.5q0 197 -143 197q-75 0 -134.5 -61t-97 -179 t-37.5 -243zM419 1548v21h311q36 -148 115 -303v-25h-184q-71 69 -138.5 153.5t-103.5 153.5z" />
-<glyph unicode="&#xf3;" horiz-adv-x="1198" d="M90 410q0 213 71.5 379.5t206.5 258t316 91.5q196 0 310 -118t114 -325q0 -211 -70.5 -374t-203.5 -252.5t-316 -89.5q-195 0 -311.5 117.5t-116.5 312.5zM393 410q0 -185 150 -185q75 0 135 61.5t93.5 171t33.5 238.5q0 197 -143 197q-75 0 -134.5 -61t-97 -179 t-37.5 -243zM571 1241v25q79 88 222 303h335v-17q-46 -56 -154 -152.5t-194 -158.5h-209z" />
-<glyph unicode="&#xf4;" horiz-adv-x="1198" d="M90 410q0 213 71.5 379.5t206.5 258t316 91.5q196 0 310 -118t114 -325q0 -211 -70.5 -374t-203.5 -252.5t-316 -89.5q-195 0 -311.5 117.5t-116.5 312.5zM393 410q0 -185 150 -185q75 0 135 61.5t93.5 171t33.5 238.5q0 197 -143 197q-75 0 -134.5 -61t-97 -179 t-37.5 -243zM300 1241v25q63 57 153 147t142 156h338q22 -54 74 -142.5t102 -160.5v-25h-198q-63 53 -162 168q-105 -88 -232 -168h-217z" />
-<glyph unicode="&#xf5;" horiz-adv-x="1198" d="M90 410q0 213 71.5 379.5t206.5 258t316 91.5q196 0 310 -118t114 -325q0 -211 -70.5 -374t-203.5 -252.5t-316 -89.5q-195 0 -311.5 117.5t-116.5 312.5zM393 410q0 -185 150 -185q75 0 135 61.5t93.5 171t33.5 238.5q0 197 -143 197q-75 0 -134.5 -61t-97 -179 t-37.5 -243zM314 1239q59 309 281 309q49 0 87.5 -16.5t71.5 -36t62 -35.5t60 -16q34 0 58 25.5t46 80.5h172q-66 -309 -287 -309q-49 0 -86.5 16.5t-69.5 36t-61.5 36t-62.5 16.5q-31 0 -55.5 -28t-38.5 -79h-177z" />
-<glyph unicode="&#xf6;" horiz-adv-x="1198" d="M90 410q0 213 71.5 379.5t206.5 258t316 91.5q196 0 310 -118t114 -325q0 -211 -70.5 -374t-203.5 -252.5t-316 -89.5q-195 0 -311.5 117.5t-116.5 312.5zM393 410q0 -185 150 -185q75 0 135 61.5t93.5 171t33.5 238.5q0 197 -143 197q-75 0 -134.5 -61t-97 -179 t-37.5 -243zM386 1382q0 78 42.5 118t119.5 40q133 0 133 -108q0 -73 -39 -116.5t-121 -43.5q-135 0 -135 110zM788 1382q0 78 42 118t120 40q65 0 99 -28t34 -80q0 -73 -39.5 -116.5t-120.5 -43.5q-135 0 -135 110z" />
-<glyph unicode="&#xf7;" d="M109 612v219h952v-219h-952zM444 373q0 76 37 113.5t103 37.5t102.5 -39t36.5 -112q0 -70 -37 -111t-102 -41t-102.5 39t-37.5 113zM444 1071q0 75 37 113.5t103 38.5q67 0 103 -40.5t36 -111.5q0 -70 -37 -110.5t-102 -40.5t-102.5 39t-37.5 112z" />
-<glyph unicode="&#xf8;" horiz-adv-x="1198" d="M43 6l119 148q-72 107 -72 256q0 213 71.5 379.5t206.5 258t316 91.5q131 0 227 -56l70 88l145 -110l-84 -105q66 -107 66 -260q0 -211 -70.5 -374t-203.5 -252.5t-316 -89.5q-123 0 -225 53l-109 -135zM385 426l365 453q-35 24 -88 24q-81 0 -144.5 -62.5t-98 -169.5 t-34.5 -233v-12zM457 238q11 -8 35.5 -15.5t50.5 -7.5q114 0 193 133t79 318v16z" />
-<glyph unicode="&#xf9;" horiz-adv-x="1237" d="M111 301q0 93 24 213l127 604h301l-137 -653q-16 -68 -16 -119q0 -123 108 -123q92 0 167 114t118 318l98 463h301l-237 -1118h-230l21 207h-6q-145 -227 -355 -227q-138 0 -211 82.5t-73 238.5zM419 1548v21h311q36 -148 115 -303v-25h-184q-71 69 -138.5 153.5 t-103.5 153.5z" />
-<glyph unicode="&#xfa;" horiz-adv-x="1237" d="M111 301q0 93 24 213l127 604h301l-137 -653q-16 -68 -16 -119q0 -123 108 -123q92 0 167 114t118 318l98 463h301l-237 -1118h-230l21 207h-6q-145 -227 -355 -227q-138 0 -211 82.5t-73 238.5zM610 1241v25q79 88 222 303h335v-17q-46 -56 -154 -152.5t-194 -158.5 h-209z" />
-<glyph unicode="&#xfb;" horiz-adv-x="1237" d="M111 301q0 93 24 213l127 604h301l-137 -653q-16 -68 -16 -119q0 -123 108 -123q92 0 167 114t118 318l98 463h301l-237 -1118h-230l21 207h-6q-145 -227 -355 -227q-138 0 -211 82.5t-73 238.5zM334 1241v25q63 57 153 147t142 156h338q22 -54 74 -142.5t102 -160.5v-25 h-198q-63 53 -162 168q-105 -88 -232 -168h-217z" />
-<glyph unicode="&#xfc;" horiz-adv-x="1237" d="M111 301q0 93 24 213l127 604h301l-137 -653q-16 -68 -16 -119q0 -123 108 -123q92 0 167 114t118 318l98 463h301l-237 -1118h-230l21 207h-6q-145 -227 -355 -227q-138 0 -211 82.5t-73 238.5zM411 1382q0 78 42.5 118t119.5 40q133 0 133 -108q0 -73 -39 -116.5 t-121 -43.5q-135 0 -135 110zM813 1382q0 78 42 118t120 40q65 0 99 -28t34 -80q0 -73 -39.5 -116.5t-120.5 -43.5q-135 0 -135 110z" />
-<glyph unicode="&#xfd;" horiz-adv-x="1063" d="M-141 -233q68 -13 116 -13q84 0 147.5 48t117.5 149l26 49l-164 1118h295l56 -518q14 -122 14 -293h6q20 51 44 119.5t65 153.5l260 538h327l-680 -1278q-177 -332 -483 -332q-90 0 -147 19v240zM497 1241v25q79 88 222 303h335v-17q-46 -56 -154 -152.5t-194 -158.5 h-209z" />
-<glyph unicode="&#xfe;" horiz-adv-x="1219" d="M-68 -492l435 2048h301l-66 -307q-29 -131 -80 -280h8q131 170 283 170q150 0 232.5 -106.5t82.5 -301.5q0 -199 -69 -381t-182 -276t-250 -94q-178 0 -271 163h-8q-12 -159 -43 -295l-72 -340h-301zM420 399q0 -80 33.5 -128t105.5 -48q69 0 129 65t97.5 183.5 t37.5 247.5q0 88 -37.5 132t-103.5 44q-71 0 -130 -65t-95.5 -184.5t-36.5 -246.5z" />
-<glyph unicode="&#xff;" horiz-adv-x="1063" d="M-141 -233q68 -13 116 -13q84 0 147.5 48t117.5 149l26 49l-164 1118h295l56 -518q14 -122 14 -293h6q20 51 44 119.5t65 153.5l260 538h327l-680 -1278q-177 -332 -483 -332q-90 0 -147 19v240zM310 1382q0 78 42.5 118t119.5 40q133 0 133 -108q0 -73 -39 -116.5 t-121 -43.5q-135 0 -135 110zM712 1382q0 78 42 118t120 40q65 0 99 -28t34 -80q0 -73 -39.5 -116.5t-120.5 -43.5q-135 0 -135 110z" />
-<glyph unicode="&#x131;" horiz-adv-x="608" d="M37 0l237 1118h301l-237 -1118h-301z" />
-<glyph unicode="&#x152;" horiz-adv-x="1845" d="M123 537q0 265 99 487.5t273 341.5t402 119q140 0 209 -23h809l-53 -254h-512l-68 -321h477l-55 -254h-477l-80 -377h512l-53 -256h-760q-93 -20 -180 -20q-256 0 -399.5 147.5t-143.5 409.5zM434 537q0 -147 66.5 -222t187.5 -75q88 0 158 32l194 916q-62 39 -168 39 q-121 0 -222 -91.5t-158.5 -251.5t-57.5 -347z" />
-<glyph unicode="&#x153;" horiz-adv-x="1806" d="M90 414q0 216 69 380.5t200 254.5t309 90q209 0 313 -160q154 160 399 160q177 0 276 -81.5t99 -223.5q0 -187 -167 -288.5t-476 -101.5h-51l-2 -21v-20q0 -91 51 -143.5t147 -52.5q87 0 158 19t172 67v-227q-93 -46 -185.5 -66t-203.5 -20q-116 0 -208 38.5t-138 106.5 q-63 -68 -147 -106.5t-207 -38.5q-187 0 -297.5 117t-110.5 317zM393 414q0 -91 36.5 -140t109.5 -49q109 0 179 134.5t70 336.5q0 96 -37 146.5t-106 50.5q-71 0 -127 -60.5t-90.5 -176.5t-34.5 -242zM1094 647h45q155 0 241 48.5t86 131.5q0 95 -104 95 q-88 0 -165.5 -78.5t-102.5 -196.5z" />
-<glyph unicode="&#x178;" horiz-adv-x="1155" d="M186 1462h312l129 -592l374 592h342l-618 -903l-119 -559h-303l119 559zM432 1720q0 78 42.5 118t119.5 40q133 0 133 -108q0 -73 -39 -116.5t-121 -43.5q-135 0 -135 110zM834 1720q0 78 42 118t120 40q65 0 99 -28t34 -80q0 -73 -39.5 -116.5t-120.5 -43.5 q-135 0 -135 110z" />
-<glyph unicode="&#x2c6;" horiz-adv-x="1135" d="M311 1241v25q63 57 153 147t142 156h338q22 -54 74 -142.5t102 -160.5v-25h-198q-63 53 -162 168q-105 -88 -232 -168h-217z" />
-<glyph unicode="&#x2da;" horiz-adv-x="1182" d="M532 1477q0 109 68.5 173t179.5 64q110 0 182 -65t72 -170q0 -107 -70 -173.5t-184 -66.5q-110 0 -179 63.5t-69 174.5zM684 1477q0 -45 24 -71t72 -26q42 0 69.5 26t27.5 71t-27.5 70.5t-69.5 25.5t-69 -25.5t-27 -70.5z" />
-<glyph unicode="&#x2dc;" horiz-adv-x="1135" d="M315 1239q59 309 281 309q49 0 87.5 -16.5t71.5 -36t62 -35.5t60 -16q34 0 58 25.5t46 80.5h172q-66 -309 -287 -309q-49 0 -86.5 16.5t-69.5 36t-61.5 36t-62.5 16.5q-31 0 -55.5 -28t-38.5 -79h-177z" />
-<glyph unicode="&#x2000;" horiz-adv-x="953" />
-<glyph unicode="&#x2001;" horiz-adv-x="1907" />
-<glyph unicode="&#x2002;" horiz-adv-x="953" />
-<glyph unicode="&#x2003;" horiz-adv-x="1907" />
-<glyph unicode="&#x2004;" horiz-adv-x="635" />
-<glyph unicode="&#x2005;" horiz-adv-x="476" />
-<glyph unicode="&#x2006;" horiz-adv-x="317" />
-<glyph unicode="&#x2007;" horiz-adv-x="317" />
-<glyph unicode="&#x2008;" horiz-adv-x="238" />
-<glyph unicode="&#x2009;" horiz-adv-x="381" />
-<glyph unicode="&#x200a;" horiz-adv-x="105" />
-<glyph unicode="&#x2010;" horiz-adv-x="659" d="M41 424l53 250h524l-53 -250h-524z" />
-<glyph unicode="&#x2011;" horiz-adv-x="659" d="M41 424l53 250h524l-53 -250h-524z" />
-<glyph unicode="&#x2012;" horiz-adv-x="659" d="M41 424l53 250h524l-53 -250h-524z" />
-<glyph unicode="&#x2013;" horiz-adv-x="983" d="M41 436l49 230h852l-49 -230h-852z" />
-<glyph unicode="&#x2014;" horiz-adv-x="1966" d="M41 436l49 230h1835l-49 -230h-1835z" />
-<glyph unicode="&#x2018;" horiz-adv-x="440" d="M115 983q103 227 262 479h225q-91 -213 -194 -501h-285z" />
-<glyph unicode="&#x2019;" horiz-adv-x="440" d="M106 961q89 206 195 501h285l8 -22q-103 -227 -262 -479h-226z" />
-<glyph unicode="&#x201a;" horiz-adv-x="569" d="M-102 -264q88 207 194 502h285l8 -23q-103 -227 -262 -479h-225z" />
-<glyph unicode="&#x201c;" horiz-adv-x="887" d="M115 983q103 227 262 479h225q-91 -213 -194 -501h-285zM561 983q103 227 262 479h226q-97 -227 -195 -501h-285z" />
-<glyph unicode="&#x201d;" horiz-adv-x="887" d="M106 961q89 206 195 501h285l8 -22q-103 -227 -262 -479h-226zM553 961q23 53 46.5 111t148.5 390h284l8 -22q-103 -227 -262 -479h-225z" />
-<glyph unicode="&#x201e;" horiz-adv-x="1018" d="M-102 -264q88 207 194 502h285l8 -23q-103 -227 -262 -479h-225zM346 -264q24 57 49 118.5t146 383.5h284l9 -23q-100 -221 -263 -479h-225z" />
-<glyph unicode="&#x2022;" horiz-adv-x="739" d="M104 686q0 106 42.5 194t120 136.5t182.5 48.5q120 0 182.5 -67t62.5 -191q0 -177 -91.5 -277t-248.5 -100q-117 0 -183.5 67t-66.5 189z" />
-<glyph unicode="&#x2026;" horiz-adv-x="1706" d="M25 115q0 90 53.5 144t150.5 54q68 0 109 -38t41 -107q0 -87 -55 -141t-144 -54q-73 0 -114 37.5t-41 104.5zM586 115q0 90 53.5 144t150.5 54q68 0 109 -38t41 -107q0 -87 -55 -141t-144 -54q-73 0 -114 37.5t-41 104.5zM1147 115q0 90 53.5 144t150.5 54q68 0 109 -38 t41 -107q0 -87 -55 -141t-144 -54q-73 0 -114 37.5t-41 104.5z" />
-<glyph unicode="&#x202f;" horiz-adv-x="381" />
-<glyph unicode="&#x2039;" horiz-adv-x="664" d="M72 551v18l401 463l191 -155l-279 -334l135 -350l-246 -103z" />
-<glyph unicode="&#x203a;" horiz-adv-x="664" d="M0 227l279 334l-136 350l246 103l203 -461v-18l-402 -463z" />
-<glyph unicode="&#x2044;" horiz-adv-x="256" d="M-532 0l1087 1462h236l-1084 -1462h-239z" />
-<glyph unicode="&#x205f;" horiz-adv-x="476" />
-<glyph unicode="&#x2074;" horiz-adv-x="776" d="M47 737l31 174l475 557h260l-121 -563h119l-35 -168h-119l-32 -151h-238l33 151h-373zM281 905h174l58 231l22 74q-13 -20 -43 -58t-211 -247z" />
-<glyph unicode="&#x20ac;" d="M41 481l37 178h127q9 67 22 115h-125l39 176h135q87 252 250.5 393.5t374.5 141.5q100 0 179 -23t165 -80l-125 -223q-87 49 -131 63.5t-90 14.5q-97 0 -176 -74.5t-135 -212.5h348l-39 -176h-360q-11 -34 -25 -115h299l-37 -178h-280q0 -120 44.5 -181.5t147.5 -61.5 q133 0 283 63v-258q-126 -63 -330 -63q-446 0 -446 501h-152z" />
-<glyph unicode="&#x2122;" horiz-adv-x="1534" d="M106 1313v149h564v-149h-199v-572h-168v572h-197zM715 741v721h248l159 -510l170 510h240v-721h-168v408l4 121h-6l-174 -529h-141l-166 529h-7l5 -111v-418h-164z" />
-<glyph unicode="&#xe000;" horiz-adv-x="1120" d="M0 1120h1120v-1120h-1120v1120z" />
-<glyph unicode="&#xfb01;" horiz-adv-x="1352" d="M-219 -225q61 -21 115 -21q61 0 107 40t65 130l204 965h-163l30 145l183 84l18 84q41 190 138.5 277.5t273.5 87.5q131 0 235 -49l-80 -224q-69 31 -133 31q-57 0 -92 -40t-47 -105l-12 -62h219l-49 -229h-220l-215 -1010q-77 -371 -403 -371q-104 0 -174 25v242zM780 0 l237 1118h301l-237 -1118h-301zM1065 1380q0 87 47.5 131.5t134.5 44.5q73 0 111 -31t38 -89q0 -80 -44 -129.5t-136 -49.5q-151 0 -151 123z" />
-<glyph unicode="&#xfb02;" horiz-adv-x="1352" d="M-219 -225q61 -21 115 -21q61 0 107 40t65 130l204 965h-163l30 145l183 84l18 84q41 190 138.5 277.5t273.5 87.5q131 0 235 -49l-80 -224q-69 31 -133 31q-57 0 -92 -40t-47 -105l-12 -62h219l-49 -229h-220l-215 -1010q-77 -371 -403 -371q-104 0 -174 25v242zM780 0 l330 1556h301l-330 -1556h-301z" />
-<glyph unicode="&#xfb03;" horiz-adv-x="2048" d="M-219 -225q61 -21 115 -21q61 0 107 40t65 130l204 965h-163l30 145l183 84l18 84q41 190 138.5 277.5t273.5 87.5q131 0 235 -49l-80 -224q-69 31 -133 31q-57 0 -92 -40t-47 -105l-12 -62h395l18 84q41 190 138.5 277.5t273.5 87.5q131 0 235 -49l-79 -224 q-69 31 -134 31q-57 0 -91.5 -40t-47.5 -105l-12 -62h219l-49 -229h-219l-215 -1010q-77 -371 -404 -371q-104 0 -174 25v242q61 -21 115 -21q136 0 172 170l205 965h-396l-215 -1010q-77 -371 -403 -371q-104 0 -174 25v242zM1477 0l237 1118h301l-237 -1118h-301z M1761 1380q0 87 48 131.5t135 44.5q73 0 111 -31t38 -89q0 -80 -44 -129.5t-136 -49.5q-152 0 -152 123z" />
-<glyph unicode="&#xfb04;" horiz-adv-x="2048" d="M-219 -225q61 -21 115 -21q61 0 107 40t65 130l204 965h-163l30 145l183 84l18 84q41 190 138.5 277.5t273.5 87.5q131 0 235 -49l-80 -224q-69 31 -133 31q-57 0 -92 -40t-47 -105l-12 -62h395l18 84q41 190 138.5 277.5t273.5 87.5q131 0 235 -49l-79 -224 q-69 31 -134 31q-57 0 -91.5 -40t-47.5 -105l-12 -62h219l-49 -229h-219l-215 -1010q-77 -371 -404 -371q-104 0 -174 25v242q61 -21 115 -21q136 0 172 170l205 965h-396l-215 -1010q-77 -371 -403 -371q-104 0 -174 25v242zM1477 0l329 1556h301l-329 -1556h-301z" />
-</font>
-</defs></svg> \ No newline at end of file
diff --git a/admin/survey/Fonts/OpenSans/OpenSans-BoldItalic-webfont.ttf b/admin/survey/Fonts/OpenSans/OpenSans-BoldItalic-webfont.ttf
deleted file mode 100644
index 6a30fa9..0000000
--- a/admin/survey/Fonts/OpenSans/OpenSans-BoldItalic-webfont.ttf
+++ /dev/null
Binary files differ
diff --git a/admin/survey/Fonts/OpenSans/OpenSans-BoldItalic-webfont.woff b/admin/survey/Fonts/OpenSans/OpenSans-BoldItalic-webfont.woff
deleted file mode 100644
index 46778a2..0000000
--- a/admin/survey/Fonts/OpenSans/OpenSans-BoldItalic-webfont.woff
+++ /dev/null
Binary files differ
diff --git a/admin/survey/Fonts/OpenSans/OpenSans-ExtraBold-webfont.eot b/admin/survey/Fonts/OpenSans/OpenSans-ExtraBold-webfont.eot
deleted file mode 100644
index 2f7ae28..0000000
--- a/admin/survey/Fonts/OpenSans/OpenSans-ExtraBold-webfont.eot
+++ /dev/null
Binary files differ
diff --git a/admin/survey/Fonts/OpenSans/OpenSans-ExtraBold-webfont.svg b/admin/survey/Fonts/OpenSans/OpenSans-ExtraBold-webfont.svg
deleted file mode 100644
index 009e1d7..0000000
--- a/admin/survey/Fonts/OpenSans/OpenSans-ExtraBold-webfont.svg
+++ /dev/null
@@ -1,251 +0,0 @@
-<?xml version="1.0" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
-<svg xmlns="http://www.w3.org/2000/svg">
-<metadata>
-This is a custom SVG webfont generated by Font Squirrel.
-Copyright : Digitized data copyright 2011 Google Corporation
-Foundry : Ascender Corporation
-Foundry URL : httpwwwascendercorpcom
-</metadata>
-<defs>
-<font id="OpenSansExtrabold" horiz-adv-x="1200" >
-<font-face units-per-em="2048" ascent="1638" descent="-410" />
-<missing-glyph horiz-adv-x="532" />
-<glyph unicode=" " horiz-adv-x="532" />
-<glyph unicode="&#x09;" horiz-adv-x="532" />
-<glyph unicode="&#xa0;" horiz-adv-x="532" />
-<glyph unicode="!" horiz-adv-x="594" d="M82 1462h432l-51 -946h-330zM86 166q0 91 54 141.5t157 50.5q102 0 154.5 -50.5t52.5 -141.5q0 -90 -54.5 -140.5t-152.5 -50.5q-99 0 -155 50.5t-56 140.5z" />
-<glyph unicode="&#x22;" horiz-adv-x="1073" d="M121 1462h356l-41 -528h-274zM596 1462h356l-41 -528h-274z" />
-<glyph unicode="#" horiz-adv-x="1356" d="M37 391v254h274l31 168h-238v260h287l72 389h268l-74 -389h166l72 389h268l-73 -389h229v-260h-277l-30 -168h243v-254h-290l-74 -391h-268l73 391h-168l-71 -391h-267l72 391h-225zM578 645h165l31 168h-166z" />
-<glyph unicode="$" d="M80 1044q0 165 106 258t318 115v137h207v-135q199 -11 401 -98l-119 -285q-209 94 -377 94q-80 0 -112.5 -19.5t-32.5 -57.5q0 -33 23.5 -54.5t81.5 -48t161 -61.5q209 -74 300 -168.5t91 -243.5q0 -168 -106.5 -273t-310.5 -130v-193h-207v187q-219 10 -422 98v332 q116 -59 252 -98.5t239 -39.5q85 0 124.5 20.5t39.5 68.5q0 33 -28.5 56t-95 52t-179.5 70q-127 47 -205 105.5t-113.5 131t-35.5 180.5zM613 1462z" />
-<glyph unicode="%" horiz-adv-x="1942" d="M37 1026q0 220 98 338.5t275 118.5q175 0 278 -123t103 -334q0 -220 -99 -340.5t-282 -120.5q-172 0 -272.5 124.5t-100.5 336.5zM338 1022q0 -115 19 -166t57 -51t56.5 50t18.5 167q0 115 -18.5 166t-56.5 51q-39 0 -57.5 -52t-18.5 -165zM412 0l811 1462h297 l-811 -1462h-297zM1149 444q0 220 98 338.5t275 118.5q175 0 278 -123t103 -334q0 -219 -99.5 -339.5t-281.5 -120.5q-172 0 -272.5 124.5t-100.5 335.5zM1450 440q0 -115 19 -166t57 -51q43 0 59.5 58.5t16.5 158.5t-16.5 158.5t-59.5 58.5q-39 0 -57.5 -52t-18.5 -165z " />
-<glyph unicode="&#x26;" horiz-adv-x="1636" d="M72 406q0 262 272 401q-62 70 -96.5 148.5t-34.5 177.5q0 160 123.5 254t339.5 94q211 0 328.5 -93.5t117.5 -254.5q0 -111 -63.5 -205.5t-200.5 -177.5l199 -189q75 115 104 260h406q-30 -138 -94.5 -276.5t-145.5 -237.5l320 -307h-506l-99 102q-90 -57 -147.5 -78.5 t-129 -32.5t-163.5 -11q-158 0 -279.5 54t-186 151t-64.5 221zM475 434q0 -63 45 -103t119 -40q57 0 100 15t66 34l-248 252q-82 -61 -82 -158zM565 1120q0 -75 88 -155q57 32 87 76.5t30 91.5q0 49 -28.5 70.5t-71.5 21.5q-42 0 -73.5 -25t-31.5 -80z" />
-<glyph unicode="'" horiz-adv-x="598" d="M121 1462h356l-41 -528h-274z" />
-<glyph unicode="(" horiz-adv-x="735" d="M74 582q0 290 71 523t209 398h326q-126 -175 -194 -412t-68 -507q0 -261 66 -495.5t194 -412.5h-324q-137 158 -208.5 388t-71.5 518zM493 1485z" />
-<glyph unicode=")" horiz-adv-x="735" d="M55 1503h326q139 -166 210 -402t71 -519t-71.5 -514.5t-209.5 -391.5h-324q126 172 193 408.5t67 499.5q0 265 -66 501.5t-196 417.5zM247 1485z" />
-<glyph unicode="*" horiz-adv-x="1100" d="M45 1014l45 291l348 -101l-39 352h303l-38 -352l356 101l37 -295l-314 -21l207 -278l-260 -138l-143 283l-123 -281l-272 136l206 278z" />
-<glyph unicode="+" horiz-adv-x="1159" d="M72 588v268h372v367h269v-367h372v-268h-372v-361h-269v361h-372z" />
-<glyph unicode="," horiz-adv-x="633" d="M57 -285q29 138 58.5 309.5t40.5 274.5h342l14 -23q-97 -381 -176 -561h-279z" />
-<glyph unicode="-" horiz-adv-x="651" d="M43 393v312h565v-312h-565z" />
-<glyph unicode="." horiz-adv-x="592" d="M86 166q0 92 54.5 142t158.5 50q99 0 152 -50t53 -142q0 -90 -54.5 -140.5t-150.5 -50.5q-99 0 -156 50t-57 141z" />
-<glyph unicode="/" horiz-adv-x="905" d="M10 -20l545 1503h346l-545 -1503h-346z" />
-<glyph unicode="0" d="M72 729q0 390 130 572t398 182q261 0 394.5 -189.5t133.5 -564.5q0 -388 -130 -568.5t-398 -180.5q-262 0 -395 188.5t-133 560.5zM465 729q0 -248 31 -341t104 -93q74 0 104.5 96t30.5 338q0 243 -31 340.5t-104 97.5t-104 -94t-31 -344z" />
-<glyph unicode="1" d="M84 1053l502 409h356v-1462h-401v774q0 141 6 258q-37 -45 -92 -94l-166 -137z" />
-<glyph unicode="2" d="M45 1249q113 101 190 144.5t167.5 66.5t203.5 23q142 0 253.5 -50t173 -142.5t61.5 -207.5q0 -86 -21.5 -159t-66.5 -143.5t-119.5 -148.5t-317.5 -296v-10h553v-326h-1061v260l357 361q153 160 200 218.5t65.5 100.5t18.5 88q0 57 -37 90t-104 33q-69 0 -139.5 -39.5 t-159.5 -116.5z" />
-<glyph unicode="3" d="M70 59v328q96 -49 195.5 -72.5t183.5 -23.5q130 0 189.5 36.5t59.5 114.5q0 60 -31 92.5t-100 49t-180 16.5h-90v297h92q301 0 301 154q0 58 -44.5 86t-119.5 28q-140 0 -290 -94l-164 264q116 80 237.5 114t278.5 34q227 0 356 -90t129 -248q0 -136 -83 -233.5 t-240 -141.5v-6q366 -46 366 -346q0 -204 -161.5 -321t-448.5 -117q-118 0 -218.5 17t-217.5 62z" />
-<glyph unicode="4" d="M35 283v290l608 889h365v-884h161v-295h-161v-283h-390v283h-583zM377 578h241v170q0 48 3.5 129.5t5.5 85.5h-11q-34 -77 -77 -144z" />
-<glyph unicode="5" d="M94 59v324q87 -40 196.5 -66t188.5 -26q110 0 169 46.5t59 137.5q0 84 -60 131t-182 47q-93 0 -201 -35l-145 72l55 772h834v-329h-498l-18 -193q78 15 111 16.5t61 1.5q126 0 227.5 -58.5t158 -165.5t56.5 -247q0 -245 -147.5 -376t-446.5 -131q-256 0 -418 79z" />
-<glyph unicode="6" d="M70 618q0 306 87.5 495.5t258 279.5t420.5 90q89 0 208 -17v-309q-100 19 -217 19q-198 0 -295 -87t-106 -284h12q90 170 289 170q195 0 302.5 -125.5t107.5 -349.5q0 -241 -136 -380.5t-380 -139.5q-259 0 -405 168t-146 470zM463 512q0 -96 41 -157.5t108 -61.5 q63 0 102.5 47.5t39.5 151.5q0 178 -138 178q-68 0 -110.5 -46t-42.5 -112z" />
-<glyph unicode="7" d="M78 1133v327h1055v-233l-515 -1227h-409l502 1133h-633z" />
-<glyph unicode="8" d="M68 385q0 127 61 216.5t205 162.5q-116 78 -169.5 167.5t-53.5 196.5q0 168 131 261.5t362 93.5t359.5 -93t128.5 -264q0 -116 -60.5 -203.5t-191.5 -152.5q162 -92 228.5 -183.5t66.5 -197.5q0 -195 -141 -302t-394 -107q-258 0 -395 104.5t-137 300.5zM430 401 q0 -62 44 -99.5t122 -37.5q176 0 176 129q0 49 -38.5 96.5t-137.5 106.5q-89 -47 -127.5 -94.5t-38.5 -100.5zM481 1092q0 -86 117 -152q71 41 97 75t26 77q0 48 -35 77t-84 29q-51 0 -86 -29.5t-35 -76.5z" />
-<glyph unicode="9" d="M53 958q0 243 138.5 381t379.5 138q268 0 415 -178t147 -506q0 -429 -185 -621t-592 -192q-134 0 -204 10v313q86 -16 172 -16q212 0 327 87.5t125 276.5h-12q-39 -72 -77 -104t-93 -49t-137 -17q-190 0 -297 127t-107 350zM436 963q0 -82 35 -130.5t107 -48.5 q65 0 113 47t48 113q0 89 -44.5 153t-112.5 64q-65 0 -105.5 -47t-40.5 -151z" />
-<glyph unicode=":" horiz-adv-x="592" d="M86 166q0 92 54.5 142t158.5 50q99 0 152 -50t53 -142q0 -90 -54.5 -140.5t-150.5 -50.5q-99 0 -156 50t-57 141zM86 956q0 91 55 141t158 50q99 0 152 -50t53 -141q0 -90 -54 -141t-151 -51q-102 0 -157.5 51t-55.5 141z" />
-<glyph unicode=";" horiz-adv-x="608" d="M57 -285q29 138 58.5 309.5t40.5 274.5h342l14 -23q-97 -381 -176 -561h-279zM92 956q0 91 53.5 141t157.5 50q100 0 153.5 -50.5t53.5 -140.5t-54 -141t-153 -51q-102 0 -156.5 50.5t-54.5 141.5z" />
-<glyph unicode="&#x3c;" horiz-adv-x="1159" d="M72 627v172l1011 506v-297l-620 -283l620 -252v-295z" />
-<glyph unicode="=" horiz-adv-x="1159" d="M72 358v271h1015v-271h-1015zM72 815v268h1015v-268h-1015z" />
-<glyph unicode="&#x3e;" horiz-adv-x="1159" d="M72 178v295l620 252l-620 283v297l1011 -506v-172z" />
-<glyph unicode="?" horiz-adv-x="1034" d="M0 1341q249 142 520 142q223 0 350 -98t127 -267q0 -121 -56.5 -209.5t-180.5 -167.5q-105 -68 -131.5 -99.5t-26.5 -74.5v-51h-307v86q0 98 40 165.5t142 131.5q81 51 116.5 92t35.5 94q0 42 -38 66.5t-99 24.5q-151 0 -353 -107zM252 166q0 92 53.5 142t157.5 50 q100 0 153.5 -50.5t53.5 -141.5t-55.5 -141t-151.5 -50q-99 0 -155 49.5t-56 141.5z" />
-<glyph unicode="@" horiz-adv-x="1837" d="M82 610q0 253 114.5 453.5t316 309t456.5 108.5q234 0 413.5 -89t276 -253.5t96.5 -382.5q0 -141 -48.5 -263t-134.5 -191t-196 -69q-79 0 -143 31.5t-100 87.5h-15q-107 -119 -260 -119q-183 0 -281 107t-98 299q0 141 62 249.5t179 167t271 58.5q81 0 178.5 -16.5 t178.5 -44.5l-21 -422l-2 -94q0 -86 49 -86q52 0 84.5 87t32.5 220q0 239 -135 369t-383 130q-190 0 -330.5 -79t-214.5 -226.5t-74 -345.5q0 -255 142.5 -393.5t402.5 -138.5q116 0 250.5 25t263.5 71v-229q-224 -95 -500 -95q-388 0 -609.5 202.5t-221.5 561.5zM760 641 q0 -100 36.5 -145t96.5 -45q77 0 113 62t47 220l10 156q-40 6 -68 6q-108 0 -171.5 -67t-63.5 -187z" />
-<glyph unicode="A" horiz-adv-x="1487" d="M0 0l477 1468h527l483 -1468h-432l-72 274h-475l-74 -274h-434zM590 598h311l-63 240q-22 80 -53.5 207t-41.5 182q-9 -51 -35.5 -168t-117.5 -461z" />
-<glyph unicode="B" horiz-adv-x="1380" d="M158 0v1462h510q298 0 442.5 -88.5t144.5 -275.5q0 -123 -63 -210t-166 -112v-10q136 -36 197 -120t61 -218q0 -199 -149.5 -313.5t-407.5 -114.5h-569zM553 305h139q185 0 185 156q0 73 -49.5 112t-143.5 39h-131v-307zM553 901h119q85 0 131.5 35t46.5 104 q0 123 -186 123h-111v-262z" />
-<glyph unicode="C" horiz-adv-x="1329" d="M104 727q0 227 85.5 399t246 264.5t377.5 92.5q237 0 453 -103l-121 -311q-81 38 -162 64t-174 26q-141 0 -220 -115.5t-79 -318.5q0 -422 321 -422q97 0 188 27t183 65v-334q-183 -81 -414 -81q-331 0 -507.5 192t-176.5 555z" />
-<glyph unicode="D" horiz-adv-x="1503" d="M158 0v1462h506q352 0 543.5 -180t191.5 -520q0 -366 -201.5 -564t-566.5 -198h-473zM553 324h88q180 0 264 104.5t84 319.5q0 201 -79.5 298t-241.5 97h-115v-819z" />
-<glyph unicode="E" horiz-adv-x="1124" d="M158 0v1462h868v-317h-473v-230h438v-317h-438v-276h473v-322h-868z" />
-<glyph unicode="F" horiz-adv-x="1104" d="M158 0v1462h864v-317h-475v-279h438v-317h-438v-549h-389z" />
-<glyph unicode="G" horiz-adv-x="1516" d="M104 735q0 354 202 551t566 197q138 0 260.5 -26t213.5 -66l-125 -310q-158 78 -347 78q-173 0 -267.5 -112.5t-94.5 -321.5q0 -205 85.5 -312.5t246.5 -107.5q88 0 162 17v229h-261v305h631v-788q-257 -88 -565 -88q-338 0 -522.5 196t-184.5 559z" />
-<glyph unicode="H" horiz-adv-x="1569" d="M158 0v1462h397v-542h459v542h397v-1462h-397v596h-459v-596h-397z" />
-<glyph unicode="I" horiz-adv-x="713" d="M158 0v1462h397v-1462h-397z" />
-<glyph unicode="J" horiz-adv-x="721" d="M-162 -131q32 -6 68 -13.5t78 -7.5q98 0 140 59t42 202v1353h397v-1319q0 -297 -130 -449.5t-390 -152.5q-108 0 -205 21v307z" />
-<glyph unicode="K" horiz-adv-x="1407" d="M158 0v1462h397v-635q30 59 121 187l307 448h432l-461 -655l453 -807h-446l-289 559l-117 -70v-489h-397z" />
-<glyph unicode="L" horiz-adv-x="1192" d="M158 0v1462h395v-1143h563v-319h-958z" />
-<glyph unicode="M" horiz-adv-x="1980" d="M158 0v1462h526l305 -1038h8l299 1038h527v-1462h-363v641q0 50 1.5 111t13.5 299h-9l-295 -1051h-376l-299 1053h-9q21 -269 21 -418v-635h-350z" />
-<glyph unicode="N" horiz-adv-x="1708" d="M158 0v1462h516l532 -1016h6q-14 221 -14 355v661h352v-1462h-518l-534 1030h-9q19 -243 19 -371v-659h-350z" />
-<glyph unicode="O" horiz-adv-x="1632" d="M104 735q0 365 182.5 557.5t530.5 192.5q349 0 529 -191t180 -561q0 -369 -181 -561t-530 -192q-344 0 -527.5 193t-183.5 562zM520 733q0 -424 295 -424q150 0 222.5 103t72.5 321q0 219 -73.5 323.5t-219.5 104.5q-297 0 -297 -428z" />
-<glyph unicode="P" horiz-adv-x="1294" d="M158 0v1462h506q277 0 416 -121t139 -344q0 -245 -144.5 -378.5t-410.5 -133.5h-111v-485h-395zM553 807h72q89 0 141.5 50t52.5 138q0 148 -164 148h-102v-336z" />
-<glyph unicode="Q" horiz-adv-x="1632" d="M104 735q0 365 182.5 557.5t530.5 192.5q349 0 529 -191t180 -561q0 -497 -316 -670l357 -411h-492l-258 325l-1 1v1l-1 1q-344 0 -527.5 193t-183.5 562zM520 733q0 -424 295 -424q150 0 222.5 103t72.5 321q0 219 -73.5 323.5t-219.5 104.5q-297 0 -297 -428z" />
-<glyph unicode="R" horiz-adv-x="1386" d="M158 0v1462h479q596 0 596 -432q0 -254 -248 -393l426 -637h-448l-310 532h-100v-532h-395zM553 829h74q207 0 207 183q0 151 -203 151h-78v-334z" />
-<glyph unicode="S" horiz-adv-x="1182" d="M90 72v352q113 -58 235 -90.5t224 -32.5q88 0 129 30.5t41 78.5q0 30 -16.5 52.5t-53 45.5t-194.5 94q-143 65 -214.5 126t-106 140t-34.5 187q0 202 147 315t404 113q227 0 463 -105l-121 -305q-205 94 -354 94q-77 0 -112 -27t-35 -67q0 -43 44.5 -77t241.5 -124 q189 -85 262.5 -182.5t73.5 -245.5q0 -136 -69 -241.5t-199 -164t-305 -58.5q-146 0 -245 20.5t-206 71.5z" />
-<glyph unicode="T" horiz-adv-x="1210" d="M51 1139v323h1108v-323h-356v-1139h-395v1139h-357z" />
-<glyph unicode="U" horiz-adv-x="1550" d="M150 573v889h397v-858q0 -155 58 -225t171 -70q121 0 175.5 69.5t54.5 227.5v856h395v-880q0 -287 -162.5 -444.5t-468.5 -157.5q-299 0 -459.5 153t-160.5 440z" />
-<glyph unicode="V" horiz-adv-x="1421" d="M0 1462h444l199 -741q62 -247 68 -344q7 70 28 175t37 165l203 745h442l-479 -1462h-465z" />
-<glyph unicode="W" horiz-adv-x="2128" d="M31 1462h381l159 -733q54 -243 74 -387q13 102 46.5 277t62.5 290l129 553h366l125 -553q32 -133 65 -307t44 -260q13 111 71 385l162 735h381l-360 -1462h-467l-140 637q-10 40 -31.5 159t-31.5 199q-8 -65 -26 -161.5t-35.5 -177.5t-145.5 -656h-467z" />
-<glyph unicode="X" horiz-adv-x="1481" d="M4 0l485 748l-456 714h438l264 -452l254 452h451l-463 -745l498 -717h-457l-285 457l-282 -457h-447z" />
-<glyph unicode="Y" horiz-adv-x="1360" d="M0 1462h430l250 -542l252 542h428l-481 -891v-571h-398v559z" />
-<glyph unicode="Z" horiz-adv-x="1251" d="M61 0v244l633 899h-618v319h1108v-243l-633 -900h649v-319h-1139z" />
-<glyph unicode="[" horiz-adv-x="664" d="M117 -344v1847h499v-254h-182v-1339h182v-254h-499zM355 1485z" />
-<glyph unicode="\" horiz-adv-x="905" d="M6 1483h346l545 -1503h-346z" />
-<glyph unicode="]" horiz-adv-x="664" d="M47 -90h182v1339h-182v254h500v-1847h-500v254zM317 1485z" />
-<glyph unicode="^" horiz-adv-x="1075" d="M-16 502l440 966h170l508 -966h-295l-289 577l-124 -291l-124 -286h-286z" />
-<glyph unicode="_" horiz-adv-x="1024" d="M-4 -133h1032v-246h-1032v246z" />
-<glyph unicode="`" horiz-adv-x="1225" d="M264 1548v21h430q52 -70 203 -233l59 -66v-29h-260q-69 44 -203.5 138.5t-228.5 168.5z" />
-<glyph unicode="a" horiz-adv-x="1276" d="M74 346q0 181 126 269.5t365 99.5l189 6v16q0 140 -138 140q-124 0 -315 -84l-113 258q198 102 500 102q218 0 337.5 -108t119.5 -302v-743h-271l-75 150h-8q-79 -98 -161 -134t-212 -36q-160 0 -252 96t-92 270zM473 360q0 -104 111 -104q71 0 121.5 45t50.5 117v88 l-90 -4q-193 -7 -193 -142z" />
-<glyph unicode="b" horiz-adv-x="1317" d="M135 0v1556h391v-352q0 -63 -14 -217h14q57 88 131.5 127t169.5 39q185 0 293.5 -155t108.5 -429q0 -276 -109.5 -432.5t-304.5 -156.5q-63 0 -112 13.5t-87.5 37.5t-89.5 80h-24l-62 -111h-305zM526 555q0 -139 38 -199.5t124 -60.5q69 0 106 70.5t37 207.5 q0 273 -147 273q-82 0 -120 -57t-38 -179v-55z" />
-<glyph unicode="c" horiz-adv-x="1104" d="M86 561q0 282 155 437t441 155q197 0 371 -86l-115 -289q-71 31 -131 49.5t-125 18.5q-95 0 -147 -74t-52 -209q0 -272 201 -272q172 0 330 100v-311q-151 -100 -363 -100q-278 0 -421.5 150t-143.5 431z" />
-<glyph unicode="d" horiz-adv-x="1317" d="M86 565q0 276 111 432t305 156q95 0 166.5 -38t130.5 -128h8q-19 133 -19 266v303h394v-1556h-295l-84 143h-15q-101 -163 -301 -163q-121 0 -211.5 69t-140 203t-49.5 313zM481 559q0 -132 43 -201t123 -69q94 0 132.5 59t41.5 182v31q0 150 -43 213.5t-135 63.5 q-77 0 -119.5 -72.5t-42.5 -206.5z" />
-<glyph unicode="e" horiz-adv-x="1266" d="M86 559q0 287 145 440.5t414 153.5q256 0 395.5 -133.5t139.5 -384.5v-174h-699q4 -95 69.5 -149t178.5 -54q103 0 189.5 19.5t187.5 66.5v-281q-92 -47 -190 -65t-234 -18q-283 0 -439.5 150.5t-156.5 428.5zM489 707h336q-2 82 -46.5 131t-119.5 49q-69 0 -115.5 -43.5 t-54.5 -136.5z" />
-<glyph unicode="f" horiz-adv-x="846" d="M45 840v192l158 96v19q0 224 91.5 322t293.5 98q78 0 147.5 -12t161.5 -42l-84 -253q-72 20 -141 20q-45 0 -65.5 -27.5t-20.5 -89.5v-30h241v-293h-241v-840h-391v840h-150z" />
-<glyph unicode="g" horiz-adv-x="1241" d="M20 -180q0 203 252 262q-52 22 -90.5 71t-38.5 97q0 53 29 93.5t121 96.5q-88 39 -138.5 122t-50.5 202q0 185 126 287t360 102q31 0 107 -7t112 -13h395v-189l-155 -57q32 -58 32 -135q0 -183 -128.5 -284t-383.5 -101q-63 0 -100 8q-14 -26 -14 -49q0 -29 47 -44.5 t123 -15.5h188q381 0 381 -321q0 -207 -176.5 -322t-495.5 -115q-241 0 -371.5 80.5t-130.5 231.5zM350 -141q0 -48 52 -77.5t139 -29.5q142 0 227.5 35.5t85.5 91.5q0 45 -52 63.5t-149 18.5h-153q-63 0 -106.5 -29.5t-43.5 -72.5zM473 762q0 -174 121 -174q56 0 86.5 43 t30.5 129q0 176 -117 176q-121 0 -121 -174z" />
-<glyph unicode="h" horiz-adv-x="1372" d="M135 0v1556h391v-221q0 -150 -16 -342h18q56 88 133 124t179 36q190 0 295.5 -109.5t105.5 -306.5v-737h-393v618q0 228 -135 228q-96 0 -141.5 -80.5t-45.5 -267.5v-498h-391z" />
-<glyph unicode="i" horiz-adv-x="666" d="M127 1415q0 88 49 131t158 43t159 -44t50 -130q0 -172 -209 -172q-207 0 -207 172zM137 0v1133h391v-1133h-391z" />
-<glyph unicode="j" horiz-adv-x="664" d="M-104 -162q64 -18 120 -18q119 0 119 170v1143h391v-1225q0 -187 -109.5 -293.5t-310.5 -106.5q-48 0 -110.5 7.5t-99.5 17.5v305zM125 1415q0 88 49 131t158 43t159 -44t50 -130q0 -172 -209 -172q-207 0 -207 172z" />
-<glyph unicode="k" horiz-adv-x="1350" d="M135 0v1556h393v-612q0 -157 -22 -307h8q71 113 121 176l254 320h436l-393 -482l418 -651h-447l-248 406l-127 -97v-309h-393z" />
-<glyph unicode="l" horiz-adv-x="662" d="M135 0v1556h391v-1556h-391z" />
-<glyph unicode="m" horiz-adv-x="2048" d="M135 0v1133h295l49 -140h23q45 78 130.5 119t194.5 41q245 0 344 -149h31q48 70 133.5 109.5t188.5 39.5q201 0 297 -103t96 -313v-737h-391v616q0 115 -31.5 172.5t-99.5 57.5q-90 0 -132 -77t-42 -241v-528h-392v616q0 115 -30 172.5t-97 57.5q-92 0 -134 -82t-42 -268 v-496h-391z" />
-<glyph unicode="n" horiz-adv-x="1372" d="M135 0v1133h295l49 -140h23q50 80 138.5 120t203.5 40q188 0 292.5 -109t104.5 -307v-737h-391v618q0 113 -32.5 170.5t-104.5 57.5q-99 0 -143 -79t-44 -271v-496h-391z" />
-<glyph unicode="o" horiz-adv-x="1305" d="M86 569q0 277 149.5 430.5t419.5 153.5q167 0 295 -71t197.5 -203.5t69.5 -309.5q0 -278 -149.5 -433.5t-418.5 -155.5q-258 0 -410.5 159t-152.5 430zM483 569q0 -146 39 -222.5t131 -76.5q91 0 128.5 76.5t37.5 222.5q0 145 -38 219t-130 74q-90 0 -129 -73.5 t-39 -219.5z" />
-<glyph unicode="p" horiz-adv-x="1317" d="M135 -492v1625h318l55 -144h18q109 164 301 164q188 0 295 -156t107 -428q0 -274 -111.5 -431.5t-302.5 -157.5q-86 0 -154 28.5t-135 102.5h-18q18 -119 18 -148v-455h-391zM526 571q0 -146 39 -211t123 -65q75 0 109 64.5t34 213.5q0 146 -34 209.5t-113 63.5 q-86 0 -120.5 -61.5t-37.5 -182.5v-31z" />
-<glyph unicode="q" horiz-adv-x="1317" d="M86 565q0 276 110.5 432t301.5 156q205 0 309 -160h8l29 140h338v-1625h-391v469q0 34 12 166h-12q-96 -163 -299 -163q-190 0 -298 156t-108 429zM483 559q0 -148 41 -212t127 -64q89 0 129.5 55t40.5 186v47q0 150 -41 214.5t-135 64.5q-162 0 -162 -291z" />
-<glyph unicode="r" horiz-adv-x="961" d="M135 0v1133h291l61 -181h19q49 90 136.5 145.5t176.5 55.5q51 0 97 -8l22 -4l-35 -369q-48 12 -133 12q-128 0 -186 -58.5t-58 -168.5v-557h-391z" />
-<glyph unicode="s" horiz-adv-x="1092" d="M119 819q0 158 122 246t345 88q112 0 210.5 -24.5t204.5 -71.5l-106 -252q-78 35 -165 59.5t-142 24.5q-96 0 -96 -47q0 -29 33.5 -49.5t193.5 -83.5q119 -49 177.5 -96t86 -110.5t27.5 -154.5q0 -182 -124 -275t-356 -93q-126 0 -219 13.5t-190 49.5v313 q91 -40 199.5 -66t193.5 -26q127 0 127 58q0 30 -35.5 53.5t-206.5 91.5q-156 64 -218 145.5t-62 206.5z" />
-<glyph unicode="t" horiz-adv-x="942" d="M53 840v159l174 123l101 238h256v-227h278v-293h-278v-441q0 -110 106 -110q79 0 189 39v-285q-79 -34 -150.5 -48.5t-167.5 -14.5q-197 0 -284 96.5t-87 296.5v467h-137z" />
-<glyph unicode="u" horiz-adv-x="1372" d="M133 395v738h391v-619q0 -111 31.5 -168t103.5 -57q101 0 144 79.5t43 268.5v496h391v-1133h-295l-49 141h-23q-49 -78 -136.5 -119.5t-205.5 -41.5q-187 0 -291 108.5t-104 306.5z" />
-<glyph unicode="v" horiz-adv-x="1251" d="M0 1133h408l192 -670q1 -5 4 -17t6 -28.5t5.5 -35t2.5 -34.5h7q0 52 18 113l201 672h407l-432 -1133h-387z" />
-<glyph unicode="w" horiz-adv-x="1864" d="M25 1133h385l92 -435q44 -224 51 -372h6q3 92 55 350l105 457h432l96 -463q46 -221 58 -344h6q6 76 20 189.5t31 182.5l100 435h377l-311 -1133h-418l-128 540l-30 163l-20 131h-6q-49 -280 -66 -353l-115 -481h-411z" />
-<glyph unicode="x" horiz-adv-x="1290" d="M10 0l365 578l-346 555h444l172 -318l176 318h445l-355 -555l369 -578h-444l-191 344l-190 -344h-445z" />
-<glyph unicode="y" horiz-adv-x="1249" d="M-2 1133h412l192 -650q14 -51 19 -123h8q8 69 24 121l197 652h399l-448 -1205q-86 -230 -211.5 -325t-327.5 -95q-78 0 -160 17v307q53 -12 121 -12q52 0 91 20t68 56.5t62 119.5z" />
-<glyph unicode="z" horiz-adv-x="1038" d="M49 0v223l469 611h-442v299h889v-242l-449 -592h471v-299h-938z" />
-<glyph unicode="{" horiz-adv-x="887" d="M61 418v301q115 0 180.5 44.5t65.5 125.5v254q0 139 49 208t159.5 100.5t305.5 31.5v-279q-89 -3 -120.5 -13.5t-50.5 -32.5t-19 -60v-271q0 -113 -56.5 -173.5t-183.5 -78.5v-12q128 -20 184 -79t56 -167v-276q0 -39 21 -61t56 -32.5t113 -13.5v-278q-197 0 -307 32 t-158.5 101.5t-48.5 210.5v248q0 80 -67 125t-179 45z" />
-<glyph unicode="|" horiz-adv-x="1042" d="M387 -446v2002h268v-2002h-268z" />
-<glyph unicode="}" horiz-adv-x="887" d="M66 -66q108 4 149 29.5t41 77.5v276q0 108 56 167t184 79v12q-127 18 -183.5 78.5t-56.5 173.5v271q0 39 -19.5 60.5t-50 32t-120.5 13.5v279q196 0 306 -31.5t159 -100.5t49 -208v-254q0 -81 65 -125.5t180 -44.5v-301q-111 0 -178 -45t-67 -125v-248q0 -140 -49 -210 t-159 -102t-306 -32v278z" />
-<glyph unicode="~" horiz-adv-x="1159" d="M72 526v281q104 108 264 108q69 0 130 -13.5t150 -49.5q131 -55 238 -55q50 0 112.5 32t118.5 89v-281q-105 -109 -264 -109q-71 0 -133.5 15t-146.5 49q-131 55 -236 55q-110 0 -233 -121z" />
-<glyph unicode="&#xa1;" horiz-adv-x="594" d="M82 -334l51 946h330l51 -946h-432zM92 963q0 90 54 140t153 50q101 0 156 -50.5t55 -139.5q0 -91 -53.5 -142t-157.5 -51q-102 0 -154.5 50.5t-52.5 142.5z" />
-<glyph unicode="&#xa2;" d="M129 739q0 240 113 388.5t323 189.5v166h207v-154q171 -9 324 -84l-115 -289q-71 31 -131 49.5t-125 18.5q-95 0 -147 -74t-52 -209q0 -272 201 -272q172 0 330 100v-311q-127 -82 -285 -98v-180h-207v186q-212 31 -324 176t-112 397z" />
-<glyph unicode="&#xa3;" d="M102 649v277h166v118q0 215 117 328t338 113q210 0 405 -82l-110 -289q-148 55 -252 55q-58 0 -85.5 -33t-27.5 -104v-106h344v-277h-344v-96q0 -150 -159 -227h671v-326h-1061v313q81 47 109.5 76.5t41.5 67.5t13 94v98h-166z" />
-<glyph unicode="&#xa4;" horiz-adv-x="1159" d="M96 1018l180 182l123 -123q84 41 172 41q91 0 177 -45l120 127l185 -174l-127 -125q41 -76 41 -178q0 -94 -41 -176l121 -119l-179 -178l-120 119q-89 -39 -177 -39q-100 0 -176 37l-119 -115l-178 178l123 119q-41 82 -41 174q0 89 41 176zM436 723q0 -56 40.5 -95.5 t94.5 -39.5q58 0 100 38.5t42 96.5t-42 97.5t-100 39.5q-56 0 -95.5 -40.5t-39.5 -96.5z" />
-<glyph unicode="&#xa5;" d="M8 1462h400l192 -504l193 504h399l-363 -712h195v-211h-242v-117h242v-209h-242v-213h-364v213h-246v209h246v117h-246v211h190z" />
-<glyph unicode="&#xa6;" horiz-adv-x="1042" d="M387 393h268v-839h-268v839zM387 717v839h268v-839h-268z" />
-<glyph unicode="&#xa7;" horiz-adv-x="1024" d="M106 803q0 64 43 125t121 108q-141 102 -141 246q0 137 111 216t295 79q191 0 370 -86l-98 -221q-73 40 -146.5 63t-128.5 23q-108 0 -108 -74q0 -43 45.5 -79t128.5 -70q175 -71 252.5 -152t77.5 -178q0 -77 -32 -137.5t-116 -120.5q125 -94 125 -244 q0 -149 -116.5 -237.5t-319.5 -88.5q-204 0 -352 86v244q79 -44 182 -76t172 -32q139 0 139 96q0 42 -31 72.5t-139 78.5q-141 63 -205.5 112t-96.5 108t-32 139zM397 834q0 -51 44 -91t155 -98q41 47 41 107q0 57 -42 100t-140 84q-58 -32 -58 -102z" />
-<glyph unicode="&#xa8;" horiz-adv-x="1233" d="M223 1413q0 75 46 116.5t124 41.5q79 0 125.5 -42.5t46.5 -115.5q0 -71 -46.5 -113.5t-125.5 -42.5q-78 0 -124 41t-46 115zM702 1413q0 75 46 116.5t126 41.5t126.5 -43t46.5 -115q0 -71 -46.5 -113.5t-126.5 -42.5q-81 0 -126.5 41.5t-45.5 114.5z" />
-<glyph unicode="&#xa9;" horiz-adv-x="1688" d="M92 731q0 200 100 375t275 276t377 101q197 0 370 -97t277 -272t104 -383q0 -204 -100.5 -376.5t-273 -273.5t-377.5 -101q-207 0 -382 103.5t-272.5 276.5t-97.5 371zM256 731q0 -158 79.5 -295.5t215.5 -215t293 -77.5q158 0 294 78.5t215 215t79 294.5 q0 157 -77.5 293t-214 215.5t-296.5 79.5q-158 0 -294.5 -78.5t-215 -215t-78.5 -294.5zM434 735q0 217 113 340t321 123q166 0 322 -78l-92 -205q-106 56 -211 56q-81 0 -126.5 -61t-45.5 -179q0 -128 43.5 -185t134.5 -57q138 0 258 68v-231q-126 -64 -272 -64 q-212 0 -328.5 124t-116.5 349z" />
-<glyph unicode="&#xaa;" horiz-adv-x="813" d="M49 967q0 116 77 171t267 64l88 4v6q0 41 -25.5 58.5t-76.5 17.5q-57 0 -107.5 -15t-103.5 -40l-76 166q108 51 180.5 65.5t163.5 14.5q139 0 218 -75.5t79 -213.5v-449h-162l-45 127q-48 -76 -104.5 -107.5t-138.5 -31.5q-109 0 -171.5 63.5t-62.5 174.5zM301 979 q0 -32 18 -50t52 -18q50 0 80 38.5t30 97.5v22l-84 -6q-96 -6 -96 -84z" />
-<glyph unicode="&#xab;" horiz-adv-x="1395" d="M74 561v27l389 483l280 -149l-272 -347l272 -348l-280 -147zM649 561v27l387 483l283 -149l-275 -347l275 -348l-283 -147z" />
-<glyph unicode="&#xac;" horiz-adv-x="1159" d="M72 588v268h1013v-618h-270v350h-743z" />
-<glyph unicode="&#xad;" horiz-adv-x="651" d="M43 393v312h565v-312h-565z" />
-<glyph unicode="&#xae;" horiz-adv-x="1688" d="M92 731q0 200 100 375t275 276t377 101q197 0 370 -97t277 -272t104 -383q0 -204 -100.5 -376.5t-273 -273.5t-377.5 -101q-207 0 -382 103.5t-272.5 276.5t-97.5 371zM256 731q0 -158 79.5 -295.5t215.5 -215t293 -77.5q158 0 294 78.5t215 215t79 294.5 q0 157 -77.5 293t-214 215.5t-296.5 79.5q-158 0 -294.5 -78.5t-215 -215t-78.5 -294.5zM506 313v875h291q407 0 407 -270q0 -87 -33 -146.5t-108 -95.5l194 -363h-290l-146 320h-35v-320h-280zM786 809h11q58 0 91.5 21.5t33.5 76.5q0 47 -27.5 66.5t-95.5 19.5h-13v-184z " />
-<glyph unicode="&#xaf;" horiz-adv-x="1024" d="M-6 1556v246h1036v-246h-1036z" />
-<glyph unicode="&#xb0;" horiz-adv-x="864" d="M63 1114q0 97 49 182.5t135 136t185 50.5t185 -50.5t135 -135.5t49 -183q0 -97 -48.5 -181t-134 -133.5t-186.5 -49.5q-99 0 -185 49t-135 133t-49 182zM301 1114q0 -50 38.5 -88.5t92.5 -38.5t92.5 39t38.5 88q0 52 -37.5 92.5t-93.5 40.5t-93.5 -40.5t-37.5 -92.5z" />
-<glyph unicode="&#xb1;" horiz-adv-x="1159" d="M72 0v268h1013v-268h-1013zM72 684v268h372v367h269v-367h372v-268h-372v-360h-269v360h-372z" />
-<glyph unicode="&#xb2;" horiz-adv-x="817" d="M61 1350q80 73 167.5 104t203.5 31q142 0 219.5 -63t77.5 -175q0 -46 -13 -87t-40.5 -84.5t-74.5 -91t-198 -173.5h347v-225h-674v207l215 213q84 84 116.5 129t32.5 79q0 58 -65 58q-81 0 -172 -88z" />
-<glyph unicode="&#xb3;" horiz-adv-x="817" d="M63 1366q149 115 343 115q146 0 232.5 -57.5t86.5 -157.5q0 -78 -37 -132.5t-125 -86.5v-9q97 -24 144 -76t47 -139q0 -120 -98 -187t-277 -67q-185 0 -309 70v233q117 -81 297 -81q116 0 116 67q0 41 -32.5 56.5t-102.5 15.5h-104v194h80q71 0 105 18.5t34 59.5 q0 25 -21 46.5t-71 21.5t-94 -17t-97 -57z" />
-<glyph unicode="&#xb4;" horiz-adv-x="1225" d="M264 1241v29q154 165 195.5 213t68.5 86h428v-21q-80 -64 -220 -163t-212 -144h-260z" />
-<glyph unicode="&#xb5;" horiz-adv-x="1376" d="M135 -492v1625h391v-615q0 -115 33.5 -172t112.5 -57q93 0 134.5 83t41.5 265v496h393v-1133h-293l-53 152h-16q-34 -88 -90.5 -130t-122.5 -42q-56 0 -90 20t-62 63q12 -90 12 -235v-320h-391z" />
-<glyph unicode="&#xb6;" horiz-adv-x="1317" d="M102 1042q0 256 107.5 385t343.5 129h633v-1816h-191v1587h-157v-1587h-191v819q-54 -18 -125 -18q-216 0 -318 125t-102 376z" />
-<glyph unicode="&#xb7;" horiz-adv-x="592" d="M86 723q0 92 54.5 142t158.5 50q99 0 152 -50t53 -142q0 -90 -54.5 -141.5t-150.5 -51.5q-100 0 -156.5 51t-56.5 142z" />
-<glyph unicode="&#xb8;" horiz-adv-x="383" d="M-90 -258q83 -27 147 -27q52 0 52 47q0 33 -41 58.5t-107 40.5l72 139h203l-9 -29q96 -39 133 -92.5t37 -130.5q0 -109 -75 -174.5t-199 -65.5q-136 0 -213 29v205z" />
-<glyph unicode="&#xb9;" horiz-adv-x="817" d="M57 1188l340 274h219v-876h-282v356q0 35 3.5 118t6.5 99q-9 -19 -31.5 -43t-109.5 -98z" />
-<glyph unicode="&#xba;" horiz-adv-x="803" d="M49 1104q0 177 94.5 276t259.5 99q157 0 255 -103t98 -272q0 -174 -95.5 -274.5t-261.5 -100.5q-159 0 -254.5 102.5t-95.5 272.5zM301 1104q0 -87 24 -129.5t76 -42.5q99 0 99 172q0 174 -99 174q-100 0 -100 -174z" />
-<glyph unicode="&#xbb;" horiz-adv-x="1395" d="M76 227l272 348l-272 347l282 149l387 -483v-27l-387 -481zM649 227l275 348l-275 347l285 149l387 -483v-27l-387 -481z" />
-<glyph unicode="&#xbc;" horiz-adv-x="1919" d="M1028 140v188l350 555h295v-542h125v-201h-125v-139h-275v139h-370zM1241 341h157v166q0 69 7 135q-40 -100 -62 -133zM357 0l753 1462h302l-754 -1462h-301zM-12 1188l340 274h219v-876h-282v356q0 35 3.5 118t6.5 99q-9 -19 -31.5 -43t-109.5 -98z" />
-<glyph unicode="&#xbd;" horiz-adv-x="1921" d="M1140 765q80 73 167.5 104t203.5 31q142 0 219.5 -63t77.5 -175q0 -46 -13 -87t-40.5 -84.5t-74.5 -91t-198 -173.5h347v-225h-674v207l215 213q84 84 116.5 129t32.5 79q0 58 -65 58q-81 0 -172 -88zM381 0l753 1462h302l-754 -1462h-301zM-12 1188l340 274h219v-876 h-282v356q0 35 3.5 118t6.5 99q-9 -19 -31.5 -43t-109.5 -98z" />
-<glyph unicode="&#xbe;" horiz-adv-x="1921" d="M1100 140v188l350 555h295v-542h125v-201h-125v-139h-275v139h-370zM1313 341h157v166q0 69 7 135q-40 -100 -62 -133zM83 1366q149 115 343 115q146 0 232.5 -57.5t86.5 -157.5q0 -78 -37 -132.5t-125 -86.5v-9q97 -24 144 -76t47 -139q0 -120 -98 -187t-277 -67 q-185 0 -309 70v233q117 -81 297 -81q116 0 116 67q0 41 -32.5 56.5t-102.5 15.5h-104v194h80q71 0 105 18.5t34 59.5q0 25 -21 46.5t-71 21.5t-94 -17t-97 -57zM465 0l753 1462h302l-754 -1462h-301z" />
-<glyph unicode="&#xbf;" horiz-adv-x="1034" d="M37 10q0 120 55 208t182 169q100 64 129 97t29 77v51h307v-86q0 -98 -40 -165.5t-142 -131.5q-57 -36 -90 -66t-47 -55.5t-14 -64.5q0 -42 37.5 -66t99.5 -24q148 0 352 106l139 -272q-243 -141 -520 -141q-223 0 -350 98t-127 266zM365 963q0 90 54 140t152 50 q101 0 156 -49.5t55 -140.5q0 -93 -53 -143t-158 -50q-101 0 -153.5 50t-52.5 143z" />
-<glyph unicode="&#xc0;" horiz-adv-x="1487" d="M0 0l477 1468h527l483 -1468h-432l-72 274h-475l-74 -274h-434zM590 598h311l-63 240q-22 80 -53.5 207t-41.5 182q-9 -51 -35.5 -168t-117.5 -461zM272 1886v21h430q52 -70 203 -233l59 -66v-29h-260q-69 44 -203.5 138.5t-228.5 168.5z" />
-<glyph unicode="&#xc1;" horiz-adv-x="1487" d="M0 0l477 1468h527l483 -1468h-432l-72 274h-475l-74 -274h-434zM590 598h311l-63 240q-22 80 -53.5 207t-41.5 182q-9 -51 -35.5 -168t-117.5 -461zM532 1579v29q154 165 195.5 213t68.5 86h428v-21q-80 -64 -220 -163t-212 -144h-260z" />
-<glyph unicode="&#xc2;" horiz-adv-x="1487" d="M0 0l477 1468h527l483 -1468h-432l-72 274h-475l-74 -274h-434zM590 598h311l-63 240q-22 80 -53.5 207t-41.5 182q-9 -51 -35.5 -168t-117.5 -461zM295 1579v29q69 65 144.5 153t113.5 146h393q94 -137 256 -299v-29h-254q-84 48 -201 150q-125 -107 -194 -150h-258z " />
-<glyph unicode="&#xc3;" horiz-adv-x="1487" d="M0 0l477 1468h527l483 -1468h-432l-72 274h-475l-74 -274h-434zM590 598h311l-63 240q-22 80 -53.5 207t-41.5 182q-9 -51 -35.5 -168t-117.5 -461zM330 1575q11 175 72 258.5t180 83.5q38 0 81 -15t87 -33t87 -33t81 -15q29 0 46 25t26 73h182q-11 -167 -74 -254.5 t-172 -87.5q-45 0 -90.5 15t-89.5 33t-85.5 33t-78.5 15q-54 0 -72 -98h-180z" />
-<glyph unicode="&#xc4;" horiz-adv-x="1487" d="M0 0l477 1468h527l483 -1468h-432l-72 274h-475l-74 -274h-434zM590 598h311l-63 240q-22 80 -53.5 207t-41.5 182q-9 -51 -35.5 -168t-117.5 -461zM352 1751q0 75 46 116.5t124 41.5q79 0 125.5 -42.5t46.5 -115.5q0 -71 -46.5 -113.5t-125.5 -42.5q-78 0 -124 41 t-46 115zM831 1751q0 75 46 116.5t126 41.5t126.5 -43t46.5 -115q0 -71 -46.5 -113.5t-126.5 -42.5q-81 0 -126.5 41.5t-45.5 114.5z" />
-<glyph unicode="&#xc5;" horiz-adv-x="1487" d="M0 0l477 1468h527l483 -1468h-432l-72 274h-475l-74 -274h-434zM590 598h311l-63 240q-22 80 -53.5 207t-41.5 182q-9 -51 -35.5 -168t-117.5 -461zM475 1614q0 116 71.5 185t192.5 69q118 0 195 -70t77 -182q0 -113 -76 -183.5t-196 -70.5q-121 0 -192.5 68.5 t-71.5 183.5zM655 1614q0 -37 21 -60.5t63 -23.5q35 0 59.5 23.5t24.5 60.5q0 38 -24.5 61t-59.5 23t-59.5 -23t-24.5 -61z" />
-<glyph unicode="&#xc6;" horiz-adv-x="1937" d="M-10 0l628 1462h1221v-317h-473v-230h438v-317h-438v-276h473v-322h-870v274h-437l-100 -274h-442zM653 602h316v526h-111z" />
-<glyph unicode="&#xc7;" horiz-adv-x="1329" d="M104 727q0 227 85.5 399t246 264.5t377.5 92.5q237 0 453 -103l-121 -311q-81 38 -162 64t-174 26q-141 0 -220 -115.5t-79 -318.5q0 -422 321 -422q97 0 188 27t183 65v-334q-183 -81 -414 -81q-331 0 -507.5 192t-176.5 555zM477 -258q83 -27 147 -27q52 0 52 47 q0 33 -41 58.5t-107 40.5l72 139h203l-9 -29q96 -39 133 -92.5t37 -130.5q0 -109 -75 -174.5t-199 -65.5q-136 0 -213 29v205z" />
-<glyph unicode="&#xc8;" horiz-adv-x="1124" d="M158 0v1462h868v-317h-473v-230h438v-317h-438v-276h473v-322h-868zM154 1886v21h430q52 -70 203 -233l59 -66v-29h-260q-69 44 -203.5 138.5t-228.5 168.5z" />
-<glyph unicode="&#xc9;" horiz-adv-x="1124" d="M158 0v1462h868v-317h-473v-230h438v-317h-438v-276h473v-322h-868zM362 1579v29q154 165 195.5 213t68.5 86h428v-21q-80 -64 -220 -163t-212 -144h-260z" />
-<glyph unicode="&#xca;" horiz-adv-x="1124" d="M158 0v1462h868v-317h-473v-230h438v-317h-438v-276h473v-322h-868zM151 1579v29q69 65 144.5 153t113.5 146h393q94 -137 256 -299v-29h-254q-84 48 -201 150q-125 -107 -194 -150h-258z" />
-<glyph unicode="&#xcb;" horiz-adv-x="1124" d="M158 0v1462h868v-317h-473v-230h438v-317h-438v-276h473v-322h-868zM187 1751q0 75 46 116.5t124 41.5q79 0 125.5 -42.5t46.5 -115.5q0 -71 -46.5 -113.5t-125.5 -42.5q-78 0 -124 41t-46 115zM666 1751q0 75 46 116.5t126 41.5t126.5 -43t46.5 -115q0 -71 -46.5 -113.5 t-126.5 -42.5q-81 0 -126.5 41.5t-45.5 114.5z" />
-<glyph unicode="&#xcc;" horiz-adv-x="713" d="M158 0v1462h397v-1462h-397zM-116 1886v21h430q52 -70 203 -233l59 -66v-29h-260q-69 44 -203.5 138.5t-228.5 168.5z" />
-<glyph unicode="&#xcd;" horiz-adv-x="713" d="M158 0v1462h397v-1462h-397zM156 1579v29q154 165 195.5 213t68.5 86h428v-21q-80 -64 -220 -163t-212 -144h-260z" />
-<glyph unicode="&#xce;" horiz-adv-x="713" d="M158 0v1462h397v-1462h-397zM-95 1579v29q69 65 144.5 153t113.5 146h393q94 -137 256 -299v-29h-254q-84 48 -201 150q-125 -107 -194 -150h-258z" />
-<glyph unicode="&#xcf;" horiz-adv-x="713" d="M158 0v1462h397v-1462h-397zM-55 1751q0 75 46 116.5t124 41.5q79 0 125.5 -42.5t46.5 -115.5q0 -71 -46.5 -113.5t-125.5 -42.5q-78 0 -124 41t-46 115zM424 1751q0 75 46 116.5t126 41.5t126.5 -43t46.5 -115q0 -71 -46.5 -113.5t-126.5 -42.5q-81 0 -126.5 41.5 t-45.5 114.5z" />
-<glyph unicode="&#xd0;" horiz-adv-x="1503" d="M31 563v320h127v579h506q352 0 543.5 -180t191.5 -520q0 -366 -201.5 -564t-566.5 -198h-473v563h-127zM553 324h88q180 0 264 104.5t84 319.5q0 201 -79.5 298t-241.5 97h-115v-260h211v-320h-211v-239z" />
-<glyph unicode="&#xd1;" horiz-adv-x="1708" d="M158 0v1462h516l532 -1016h6q-14 221 -14 355v661h352v-1462h-518l-534 1030h-9q19 -243 19 -371v-659h-350zM434 1575q11 175 72 258.5t180 83.5q38 0 81 -15t87 -33t87 -33t81 -15q29 0 46 25t26 73h182q-11 -167 -74 -254.5t-172 -87.5q-45 0 -90.5 15t-89.5 33 t-85.5 33t-78.5 15q-54 0 -72 -98h-180z" />
-<glyph unicode="&#xd2;" horiz-adv-x="1632" d="M104 735q0 365 182.5 557.5t530.5 192.5q349 0 529 -191t180 -561q0 -369 -181 -561t-530 -192q-344 0 -527.5 193t-183.5 562zM520 733q0 -424 295 -424q150 0 222.5 103t72.5 321q0 219 -73.5 323.5t-219.5 104.5q-297 0 -297 -428zM397 1886v21h430q52 -70 203 -233 l59 -66v-29h-260q-69 44 -203.5 138.5t-228.5 168.5z" />
-<glyph unicode="&#xd3;" horiz-adv-x="1632" d="M104 735q0 365 182.5 557.5t530.5 192.5q349 0 529 -191t180 -561q0 -369 -181 -561t-530 -192q-344 0 -527.5 193t-183.5 562zM520 733q0 -424 295 -424q150 0 222.5 103t72.5 321q0 219 -73.5 323.5t-219.5 104.5q-297 0 -297 -428zM583 1579v29q154 165 195.5 213 t68.5 86h428v-21q-80 -64 -220 -163t-212 -144h-260z" />
-<glyph unicode="&#xd4;" horiz-adv-x="1632" d="M104 735q0 365 182.5 557.5t530.5 192.5q349 0 529 -191t180 -561q0 -369 -181 -561t-530 -192q-344 0 -527.5 193t-183.5 562zM520 733q0 -424 295 -424q150 0 222.5 103t72.5 321q0 219 -73.5 323.5t-219.5 104.5q-297 0 -297 -428zM363 1579v29q69 65 144.5 153 t113.5 146h393q94 -137 256 -299v-29h-254q-84 48 -201 150q-125 -107 -194 -150h-258z" />
-<glyph unicode="&#xd5;" horiz-adv-x="1632" d="M104 735q0 365 182.5 557.5t530.5 192.5q349 0 529 -191t180 -561q0 -369 -181 -561t-530 -192q-344 0 -527.5 193t-183.5 562zM520 733q0 -424 295 -424q150 0 222.5 103t72.5 321q0 219 -73.5 323.5t-219.5 104.5q-297 0 -297 -428zM401 1575q11 175 72 258.5t180 83.5 q38 0 81 -15t87 -33t87 -33t81 -15q29 0 46 25t26 73h182q-11 -167 -74 -254.5t-172 -87.5q-45 0 -90.5 15t-89.5 33t-85.5 33t-78.5 15q-54 0 -72 -98h-180z" />
-<glyph unicode="&#xd6;" horiz-adv-x="1632" d="M104 735q0 365 182.5 557.5t530.5 192.5q349 0 529 -191t180 -561q0 -369 -181 -561t-530 -192q-344 0 -527.5 193t-183.5 562zM520 733q0 -424 295 -424q150 0 222.5 103t72.5 321q0 219 -73.5 323.5t-219.5 104.5q-297 0 -297 -428zM403 1751q0 75 46 116.5t124 41.5 q79 0 125.5 -42.5t46.5 -115.5q0 -71 -46.5 -113.5t-125.5 -42.5q-78 0 -124 41t-46 115zM882 1751q0 75 46 116.5t126 41.5t126.5 -43t46.5 -115q0 -71 -46.5 -113.5t-126.5 -42.5q-81 0 -126.5 41.5t-45.5 114.5z" />
-<glyph unicode="&#xd7;" horiz-adv-x="1159" d="M121 991l182 189l270 -267l275 267l188 -183l-274 -274l270 -272l-184 -185l-275 271l-270 -269l-180 187l264 268z" />
-<glyph unicode="&#xd8;" horiz-adv-x="1632" d="M104 735q0 365 182.5 557.5t530.5 192.5q191 0 330 -55l76 118l190 -114l-82 -125q195 -189 195 -576q0 -369 -181 -561t-530 -192q-177 0 -307 43l-84 -132l-193 125l84 125q-211 194 -211 594zM520 733q0 -155 29 -239l403 639q-68 28 -135 28q-297 0 -297 -428z M698 324q54 -15 117 -15q150 0 222.5 103t72.5 321q0 125 -18 211z" />
-<glyph unicode="&#xd9;" horiz-adv-x="1550" d="M150 573v889h397v-858q0 -155 58 -225t171 -70q121 0 175.5 69.5t54.5 227.5v856h395v-880q0 -287 -162.5 -444.5t-468.5 -157.5q-299 0 -459.5 153t-160.5 440zM280 1886v21h430q52 -70 203 -233l59 -66v-29h-260q-69 44 -203.5 138.5t-228.5 168.5z" />
-<glyph unicode="&#xda;" horiz-adv-x="1550" d="M150 573v889h397v-858q0 -155 58 -225t171 -70q121 0 175.5 69.5t54.5 227.5v856h395v-880q0 -287 -162.5 -444.5t-468.5 -157.5q-299 0 -459.5 153t-160.5 440zM561 1579v29q154 165 195.5 213t68.5 86h428v-21q-80 -64 -220 -163t-212 -144h-260z" />
-<glyph unicode="&#xdb;" horiz-adv-x="1550" d="M150 573v889h397v-858q0 -155 58 -225t171 -70q121 0 175.5 69.5t54.5 227.5v856h395v-880q0 -287 -162.5 -444.5t-468.5 -157.5q-299 0 -459.5 153t-160.5 440zM322 1579v29q69 65 144.5 153t113.5 146h393q94 -137 256 -299v-29h-254q-84 48 -201 150 q-125 -107 -194 -150h-258z" />
-<glyph unicode="&#xdc;" horiz-adv-x="1550" d="M150 573v889h397v-858q0 -155 58 -225t171 -70q121 0 175.5 69.5t54.5 227.5v856h395v-880q0 -287 -162.5 -444.5t-468.5 -157.5q-299 0 -459.5 153t-160.5 440zM362 1751q0 75 46 116.5t124 41.5q79 0 125.5 -42.5t46.5 -115.5q0 -71 -46.5 -113.5t-125.5 -42.5 q-78 0 -124 41t-46 115zM841 1751q0 75 46 116.5t126 41.5t126.5 -43t46.5 -115q0 -71 -46.5 -113.5t-126.5 -42.5q-81 0 -126.5 41.5t-45.5 114.5z" />
-<glyph unicode="&#xdd;" horiz-adv-x="1360" d="M0 1462h430l250 -542l252 542h428l-481 -891v-571h-398v559zM471 1579v29q154 165 195.5 213t68.5 86h428v-21q-80 -64 -220 -163t-212 -144h-260z" />
-<glyph unicode="&#xde;" horiz-adv-x="1284" d="M158 0v1462h395v-213h111q277 0 416 -121t139 -344q0 -245 -144.5 -378.5t-410.5 -133.5h-111v-272h-395zM553 594h72q89 0 141.5 50t52.5 138q0 148 -164 148h-102v-336z" />
-<glyph unicode="&#xdf;" horiz-adv-x="1536" d="M135 0v1100q0 215 167 341t446 126q276 0 433.5 -99.5t157.5 -277.5q0 -57 -20 -103.5t-49.5 -84t-64.5 -66.5t-64.5 -52t-49.5 -41t-20 -32q0 -23 24.5 -44t93.5 -58q169 -95 228.5 -173t59.5 -202q0 -174 -115 -264t-338 -90q-136 0 -221.5 12.5t-149.5 46.5v291 q49 -30 131.5 -55t147.5 -25q61 0 99 23.5t38 62.5q0 28 -14.5 47t-50.5 42.5t-121 68.5q-126 67 -175 124.5t-49 137.5q0 122 140 218q75 52 107 91.5t32 83.5q0 51 -49.5 85t-140.5 34q-222 0 -222 -209v-1059h-391z" />
-<glyph unicode="&#xe0;" horiz-adv-x="1276" d="M74 346q0 181 126 269.5t365 99.5l189 6v16q0 140 -138 140q-124 0 -315 -84l-113 258q198 102 500 102q218 0 337.5 -108t119.5 -302v-743h-271l-75 150h-8q-79 -98 -161 -134t-212 -36q-160 0 -252 96t-92 270zM473 360q0 -104 111 -104q71 0 121.5 45t50.5 117v88 l-90 -4q-193 -7 -193 -142zM204 1548v21h430q52 -70 203 -233l59 -66v-29h-260q-69 44 -203.5 138.5t-228.5 168.5z" />
-<glyph unicode="&#xe1;" horiz-adv-x="1276" d="M74 346q0 181 126 269.5t365 99.5l189 6v16q0 140 -138 140q-124 0 -315 -84l-113 258q198 102 500 102q218 0 337.5 -108t119.5 -302v-743h-271l-75 150h-8q-79 -98 -161 -134t-212 -36q-160 0 -252 96t-92 270zM473 360q0 -104 111 -104q71 0 121.5 45t50.5 117v88 l-90 -4q-193 -7 -193 -142zM434 1241v29q154 165 195.5 213t68.5 86h428v-21q-80 -64 -220 -163t-212 -144h-260z" />
-<glyph unicode="&#xe2;" horiz-adv-x="1276" d="M74 346q0 181 126 269.5t365 99.5l189 6v16q0 140 -138 140q-124 0 -315 -84l-113 258q198 102 500 102q218 0 337.5 -108t119.5 -302v-743h-271l-75 150h-8q-79 -98 -161 -134t-212 -36q-160 0 -252 96t-92 270zM473 360q0 -104 111 -104q71 0 121.5 45t50.5 117v88 l-90 -4q-193 -7 -193 -142zM197 1238v29q69 65 144.5 153t113.5 146h393q94 -137 256 -299v-29h-254q-84 48 -201 150q-125 -107 -194 -150h-258z" />
-<glyph unicode="&#xe3;" horiz-adv-x="1276" d="M74 346q0 181 126 269.5t365 99.5l189 6v16q0 140 -138 140q-124 0 -315 -84l-113 258q198 102 500 102q218 0 337.5 -108t119.5 -302v-743h-271l-75 150h-8q-79 -98 -161 -134t-212 -36q-160 0 -252 96t-92 270zM473 360q0 -104 111 -104q71 0 121.5 45t50.5 117v88 l-90 -4q-193 -7 -193 -142zM244 1237q11 175 72 258.5t180 83.5q38 0 81 -15t87 -33t87 -33t81 -15q29 0 46 25t26 73h182q-11 -167 -74 -254.5t-172 -87.5q-45 0 -90.5 15t-89.5 33t-85.5 33t-78.5 15q-54 0 -72 -98h-180z" />
-<glyph unicode="&#xe4;" horiz-adv-x="1276" d="M74 346q0 181 126 269.5t365 99.5l189 6v16q0 140 -138 140q-124 0 -315 -84l-113 258q198 102 500 102q218 0 337.5 -108t119.5 -302v-743h-271l-75 150h-8q-79 -98 -161 -134t-212 -36q-160 0 -252 96t-92 270zM473 360q0 -104 111 -104q71 0 121.5 45t50.5 117v88 l-90 -4q-193 -7 -193 -142zM268 1413q0 75 46 116.5t124 41.5q79 0 125.5 -42.5t46.5 -115.5q0 -71 -46.5 -113.5t-125.5 -42.5q-78 0 -124 41t-46 115zM747 1413q0 75 46 116.5t126 41.5t126.5 -43t46.5 -115q0 -71 -46.5 -113.5t-126.5 -42.5q-81 0 -126.5 41.5 t-45.5 114.5z" />
-<glyph unicode="&#xe5;" horiz-adv-x="1276" d="M74 346q0 181 126 269.5t365 99.5l189 6v16q0 140 -138 140q-124 0 -315 -84l-113 258q198 102 500 102q218 0 337.5 -108t119.5 -302v-743h-271l-75 150h-8q-79 -98 -161 -134t-212 -36q-160 0 -252 96t-92 270zM473 360q0 -104 111 -104q71 0 121.5 45t50.5 117v88 l-90 -4q-193 -7 -193 -142zM389 1489q0 116 71.5 185t192.5 69q118 0 195 -70t77 -182q0 -113 -76 -183.5t-196 -70.5q-121 0 -192.5 68.5t-71.5 183.5zM569 1489q0 -37 21 -60.5t63 -23.5q35 0 59.5 23.5t24.5 60.5q0 38 -24.5 61t-59.5 23t-59.5 -23t-24.5 -61z" />
-<glyph unicode="&#xe6;" horiz-adv-x="1915" d="M74 352q0 345 497 363l183 6v18q0 138 -136 138q-138 0 -313 -80l-110 256q190 100 454 100q201 0 336 -94q70 49 153 71.5t199 22.5q229 0 360.5 -136.5t131.5 -383.5v-172h-696q4 -90 74 -146.5t186 -56.5q194 0 364 86v-281q-94 -48 -191 -65.5t-225 -17.5 q-280 0 -430 190q-80 -83 -141.5 -120.5t-138.5 -53.5t-197 -16q-162 0 -261 101.5t-99 270.5zM473 356q0 -100 113 -100q69 0 119.5 45t50.5 117v88l-84 -4q-106 -4 -152.5 -38.5t-46.5 -107.5zM1139 707h340q-2 82 -48 131t-116 49q-162 0 -176 -180z" />
-<glyph unicode="&#xe7;" horiz-adv-x="1104" d="M86 561q0 282 155 437t441 155q197 0 371 -86l-115 -289q-71 31 -131 49.5t-125 18.5q-95 0 -147 -74t-52 -209q0 -272 201 -272q172 0 330 100v-311q-151 -100 -363 -100q-278 0 -421.5 150t-143.5 431zM361 -258q83 -27 147 -27q52 0 52 47q0 33 -41 58.5t-107 40.5 l72 139h203l-9 -29q96 -39 133 -92.5t37 -130.5q0 -109 -75 -174.5t-199 -65.5q-136 0 -213 29v205z" />
-<glyph unicode="&#xe8;" horiz-adv-x="1266" d="M86 559q0 287 145 440.5t414 153.5q256 0 395.5 -133.5t139.5 -384.5v-174h-699q4 -95 69.5 -149t178.5 -54q103 0 189.5 19.5t187.5 66.5v-281q-92 -47 -190 -65t-234 -18q-283 0 -439.5 150.5t-156.5 428.5zM489 707h336q-2 82 -46.5 131t-119.5 49q-69 0 -115.5 -43.5 t-54.5 -136.5zM189 1548v21h430q52 -70 203 -233l59 -66v-29h-260q-69 44 -203.5 138.5t-228.5 168.5z" />
-<glyph unicode="&#xe9;" horiz-adv-x="1266" d="M86 559q0 287 145 440.5t414 153.5q256 0 395.5 -133.5t139.5 -384.5v-174h-699q4 -95 69.5 -149t178.5 -54q103 0 189.5 19.5t187.5 66.5v-281q-92 -47 -190 -65t-234 -18q-283 0 -439.5 150.5t-156.5 428.5zM489 707h336q-2 82 -46.5 131t-119.5 49q-69 0 -115.5 -43.5 t-54.5 -136.5zM471 1241v29q154 165 195.5 213t68.5 86h428v-21q-80 -64 -220 -163t-212 -144h-260z" />
-<glyph unicode="&#xea;" horiz-adv-x="1266" d="M86 559q0 287 145 440.5t414 153.5q256 0 395.5 -133.5t139.5 -384.5v-174h-699q4 -95 69.5 -149t178.5 -54q103 0 189.5 19.5t187.5 66.5v-281q-92 -47 -190 -65t-234 -18q-283 0 -439.5 150.5t-156.5 428.5zM489 707h336q-2 82 -46.5 131t-119.5 49q-69 0 -115.5 -43.5 t-54.5 -136.5zM205 1241v29q69 65 144.5 153t113.5 146h393q94 -137 256 -299v-29h-254q-84 48 -201 150q-125 -107 -194 -150h-258z" />
-<glyph unicode="&#xeb;" horiz-adv-x="1266" d="M86 559q0 287 145 440.5t414 153.5q256 0 395.5 -133.5t139.5 -384.5v-174h-699q4 -95 69.5 -149t178.5 -54q103 0 189.5 19.5t187.5 66.5v-281q-92 -47 -190 -65t-234 -18q-283 0 -439.5 150.5t-156.5 428.5zM489 707h336q-2 82 -46.5 131t-119.5 49q-69 0 -115.5 -43.5 t-54.5 -136.5zM252 1413q0 75 46 116.5t124 41.5q79 0 125.5 -42.5t46.5 -115.5q0 -71 -46.5 -113.5t-125.5 -42.5q-78 0 -124 41t-46 115zM731 1413q0 75 46 116.5t126 41.5t126.5 -43t46.5 -115q0 -71 -46.5 -113.5t-126.5 -42.5q-81 0 -126.5 41.5t-45.5 114.5z" />
-<glyph unicode="&#xec;" horiz-adv-x="666" d="M137 0v1133h391v-1133h-391zM-130 1548v21h430q52 -70 203 -233l59 -66v-29h-260q-69 44 -203.5 138.5t-228.5 168.5z" />
-<glyph unicode="&#xed;" horiz-adv-x="666" d="M137 0v1133h391v-1133h-391zM107 1241v29q154 165 195.5 213t68.5 86h428v-21q-80 -64 -220 -163t-212 -144h-260z" />
-<glyph unicode="&#xee;" horiz-adv-x="666" d="M137 0v1133h391v-1133h-391zM-120 1241v29q69 65 144.5 153t113.5 146h393q94 -137 256 -299v-29h-254q-84 48 -201 150q-125 -107 -194 -150h-258z" />
-<glyph unicode="&#xef;" horiz-adv-x="666" d="M137 0v1133h391v-1133h-391zM-61 1413q0 75 46 116.5t124 41.5q79 0 125.5 -42.5t46.5 -115.5q0 -71 -46.5 -113.5t-125.5 -42.5q-78 0 -124 41t-46 115zM418 1413q0 75 46 116.5t126 41.5t126.5 -43t46.5 -115q0 -71 -46.5 -113.5t-126.5 -42.5q-81 0 -126.5 41.5 t-45.5 114.5z" />
-<glyph unicode="&#xf0;" horiz-adv-x="1313" d="M88 498q0 239 130.5 377.5t348.5 138.5q192 0 244 -84l8 4q-67 130 -143 207l-182 -119l-117 184l143 92l-149 93l108 182q174 -73 266 -135l209 137l115 -182l-145 -97q159 -157 226 -327.5t67 -388.5q0 -275 -152.5 -437.5t-415.5 -162.5q-259 0 -410 139t-151 379z M489 500q0 -242 164 -242q91 0 127.5 71t36.5 216q0 84 -45 136t-119 52q-92 0 -128 -56t-36 -177z" />
-<glyph unicode="&#xf1;" horiz-adv-x="1372" d="M135 0v1133h295l49 -140h23q50 80 138.5 120t203.5 40q188 0 292.5 -109t104.5 -307v-737h-391v618q0 113 -32.5 170.5t-104.5 57.5q-99 0 -143 -79t-44 -271v-496h-391zM274 1237q11 175 72 258.5t180 83.5q38 0 81 -15t87 -33t87 -33t81 -15q29 0 46 25t26 73h182 q-11 -167 -74 -254.5t-172 -87.5q-45 0 -90.5 15t-89.5 33t-85.5 33t-78.5 15q-54 0 -72 -98h-180z" />
-<glyph unicode="&#xf2;" horiz-adv-x="1305" d="M86 569q0 277 149.5 430.5t419.5 153.5q167 0 295 -71t197.5 -203.5t69.5 -309.5q0 -278 -149.5 -433.5t-418.5 -155.5q-258 0 -410.5 159t-152.5 430zM483 569q0 -146 39 -222.5t131 -76.5q91 0 128.5 76.5t37.5 222.5q0 145 -38 219t-130 74q-90 0 -129 -73.5 t-39 -219.5zM175 1548v21h430q52 -70 203 -233l59 -66v-29h-260q-69 44 -203.5 138.5t-228.5 168.5z" />
-<glyph unicode="&#xf3;" horiz-adv-x="1305" d="M86 569q0 277 149.5 430.5t419.5 153.5q167 0 295 -71t197.5 -203.5t69.5 -309.5q0 -278 -149.5 -433.5t-418.5 -155.5q-258 0 -410.5 159t-152.5 430zM483 569q0 -146 39 -222.5t131 -76.5q91 0 128.5 76.5t37.5 222.5q0 145 -38 219t-130 74q-90 0 -129 -73.5 t-39 -219.5zM416 1241v29q154 165 195.5 213t68.5 86h428v-21q-80 -64 -220 -163t-212 -144h-260z" />
-<glyph unicode="&#xf4;" horiz-adv-x="1305" d="M86 569q0 277 149.5 430.5t419.5 153.5q167 0 295 -71t197.5 -203.5t69.5 -309.5q0 -278 -149.5 -433.5t-418.5 -155.5q-258 0 -410.5 159t-152.5 430zM483 569q0 -146 39 -222.5t131 -76.5q91 0 128.5 76.5t37.5 222.5q0 145 -38 219t-130 74q-90 0 -129 -73.5 t-39 -219.5zM199 1241v29q69 65 144.5 153t113.5 146h393q94 -137 256 -299v-29h-254q-84 48 -201 150q-125 -107 -194 -150h-258z" />
-<glyph unicode="&#xf5;" horiz-adv-x="1305" d="M86 569q0 277 149.5 430.5t419.5 153.5q167 0 295 -71t197.5 -203.5t69.5 -309.5q0 -278 -149.5 -433.5t-418.5 -155.5q-258 0 -410.5 159t-152.5 430zM483 569q0 -146 39 -222.5t131 -76.5q91 0 128.5 76.5t37.5 222.5q0 145 -38 219t-130 74q-90 0 -129 -73.5 t-39 -219.5zM231 1237q11 175 72 258.5t180 83.5q38 0 81 -15t87 -33t87 -33t81 -15q29 0 46 25t26 73h182q-11 -167 -74 -254.5t-172 -87.5q-45 0 -90.5 15t-89.5 33t-85.5 33t-78.5 15q-54 0 -72 -98h-180z" />
-<glyph unicode="&#xf6;" horiz-adv-x="1305" d="M86 569q0 277 149.5 430.5t419.5 153.5q167 0 295 -71t197.5 -203.5t69.5 -309.5q0 -278 -149.5 -433.5t-418.5 -155.5q-258 0 -410.5 159t-152.5 430zM483 569q0 -146 39 -222.5t131 -76.5q91 0 128.5 76.5t37.5 222.5q0 145 -38 219t-130 74q-90 0 -129 -73.5 t-39 -219.5zM239 1413q0 75 46 116.5t124 41.5q79 0 125.5 -42.5t46.5 -115.5q0 -71 -46.5 -113.5t-125.5 -42.5q-78 0 -124 41t-46 115zM718 1413q0 75 46 116.5t126 41.5t126.5 -43t46.5 -115q0 -71 -46.5 -113.5t-126.5 -42.5q-81 0 -126.5 41.5t-45.5 114.5z" />
-<glyph unicode="&#xf7;" horiz-adv-x="1159" d="M72 588v268h1013v-268h-1013zM422 332q0 82 39.5 126t116.5 44q75 0 116 -43.5t41 -126.5q0 -80 -43.5 -125t-113.5 -45q-71 0 -113.5 44t-42.5 126zM422 1112q0 82 39.5 126t116.5 44q75 0 116 -43.5t41 -126.5q0 -80 -43.5 -125t-113.5 -45q-71 0 -113.5 44t-42.5 126z " />
-<glyph unicode="&#xf8;" horiz-adv-x="1362" d="M86 569q0 277 157 430.5t441 153.5q125 0 234 -39l71 111l168 -105l-67 -104q184 -158 184 -447q0 -280 -156.5 -434.5t-439.5 -154.5q-125 0 -229 34l-84 -131l-170 107l79 123q-188 158 -188 456zM461 569q0 -99 12 -147l289 448q-36 13 -82 13q-114 0 -166.5 -74 t-52.5 -240zM606 258q27 -8 76 -8q114 0 165.5 73t51.5 246q0 86 -10 131z" />
-<glyph unicode="&#xf9;" horiz-adv-x="1372" d="M133 395v738h391v-619q0 -111 31.5 -168t103.5 -57q101 0 144 79.5t43 268.5v496h391v-1133h-295l-49 141h-23q-49 -78 -136.5 -119.5t-205.5 -41.5q-187 0 -291 108.5t-104 306.5zM175 1548v21h430q52 -70 203 -233l59 -66v-29h-260q-69 44 -203.5 138.5t-228.5 168.5z " />
-<glyph unicode="&#xfa;" horiz-adv-x="1372" d="M133 395v738h391v-619q0 -111 31.5 -168t103.5 -57q101 0 144 79.5t43 268.5v496h391v-1133h-295l-49 141h-23q-49 -78 -136.5 -119.5t-205.5 -41.5q-187 0 -291 108.5t-104 306.5zM471 1241v29q154 165 195.5 213t68.5 86h428v-21q-80 -64 -220 -163t-212 -144h-260z " />
-<glyph unicode="&#xfb;" horiz-adv-x="1372" d="M133 395v738h391v-619q0 -111 31.5 -168t103.5 -57q101 0 144 79.5t43 268.5v496h391v-1133h-295l-49 141h-23q-49 -78 -136.5 -119.5t-205.5 -41.5q-187 0 -291 108.5t-104 306.5zM230 1241v29q69 65 144.5 153t113.5 146h393q94 -137 256 -299v-29h-254 q-84 48 -201 150q-125 -107 -194 -150h-258z" />
-<glyph unicode="&#xfc;" horiz-adv-x="1372" d="M133 395v738h391v-619q0 -111 31.5 -168t103.5 -57q101 0 144 79.5t43 268.5v496h391v-1133h-295l-49 141h-23q-49 -78 -136.5 -119.5t-205.5 -41.5q-187 0 -291 108.5t-104 306.5zM272 1413q0 75 46 116.5t124 41.5q79 0 125.5 -42.5t46.5 -115.5q0 -71 -46.5 -113.5 t-125.5 -42.5q-78 0 -124 41t-46 115zM751 1413q0 75 46 116.5t126 41.5t126.5 -43t46.5 -115q0 -71 -46.5 -113.5t-126.5 -42.5q-81 0 -126.5 41.5t-45.5 114.5z" />
-<glyph unicode="&#xfd;" horiz-adv-x="1249" d="M-2 1133h412l192 -650q14 -51 19 -123h8q8 69 24 121l197 652h399l-448 -1205q-86 -230 -211.5 -325t-327.5 -95q-78 0 -160 17v307q53 -12 121 -12q52 0 91 20t68 56.5t62 119.5zM401 1241v29q154 165 195.5 213t68.5 86h428v-21q-80 -64 -220 -163t-212 -144h-260z" />
-<glyph unicode="&#xfe;" horiz-adv-x="1317" d="M135 -492v2048h391v-344q0 -106 -18 -225h18q43 78 122 122t179 44q185 0 293.5 -154t108.5 -430q0 -271 -111.5 -430t-304.5 -159q-173 0 -287 129h-14l7 -60l7 -92v-449h-391zM526 571q0 -146 39 -211t123 -65q80 0 111.5 70.5t31.5 207.5q0 134 -33 203.5t-116 69.5 q-85 0 -119 -61.5t-37 -184.5v-29z" />
-<glyph unicode="&#xff;" horiz-adv-x="1249" d="M-2 1133h412l192 -650q14 -51 19 -123h8q8 69 24 121l197 652h399l-448 -1205q-86 -230 -211.5 -325t-327.5 -95q-78 0 -160 17v307q53 -12 121 -12q52 0 91 20t68 56.5t62 119.5zM216 1413q0 75 46 116.5t124 41.5q79 0 125.5 -42.5t46.5 -115.5q0 -71 -46.5 -113.5 t-125.5 -42.5q-78 0 -124 41t-46 115zM695 1413q0 75 46 116.5t126 41.5t126.5 -43t46.5 -115q0 -71 -46.5 -113.5t-126.5 -42.5q-81 0 -126.5 41.5t-45.5 114.5z" />
-<glyph unicode="&#x131;" horiz-adv-x="666" d="M137 0v1133h391v-1133h-391z" />
-<glyph unicode="&#x152;" horiz-adv-x="1960" d="M104 735q0 359 175 554.5t497 195.5q67 0 143.5 -7t106.5 -16h836v-317h-473v-230h436v-317h-436v-276h473v-322h-844q-34 -8 -110.5 -14t-133.5 -6q-319 0 -494.5 200t-175.5 555zM520 733q0 -205 64.5 -314.5t191.5 -109.5q141 0 217 43v760q-34 23 -93 36t-122 13 q-125 0 -191.5 -109.5t-66.5 -318.5z" />
-<glyph unicode="&#x153;" horiz-adv-x="2007" d="M86 569q0 277 149.5 430.5t419.5 153.5q226 0 375 -127q155 127 400 127q227 0 359 -136t132 -384v-172h-696q4 -90 74 -146.5t186 -56.5q194 0 364 86v-281q-92 -47 -187 -65t-228 -18q-238 0 -383 137q-151 -137 -402 -137q-258 0 -410.5 159t-152.5 430zM485 569 q0 -146 38 -222.5t130 -76.5q91 0 128.5 76.5t37.5 222.5q0 145 -38 219t-130 74q-89 0 -127.5 -74t-38.5 -219zM1231 707h340q-2 82 -48 131t-116 49q-162 0 -176 -180z" />
-<glyph unicode="&#x178;" horiz-adv-x="1360" d="M0 1462h430l250 -542l252 542h428l-481 -891v-571h-398v559zM268 1751q0 75 46 116.5t124 41.5q79 0 125.5 -42.5t46.5 -115.5q0 -71 -46.5 -113.5t-125.5 -42.5q-78 0 -124 41t-46 115zM747 1751q0 75 46 116.5t126 41.5t126.5 -43t46.5 -115q0 -71 -46.5 -113.5 t-126.5 -42.5q-81 0 -126.5 41.5t-45.5 114.5z" />
-<glyph unicode="&#x2c6;" horiz-adv-x="1237" d="M164 1241v29q69 65 144.5 153t113.5 146h393q94 -137 256 -299v-29h-254q-84 48 -201 150q-125 -107 -194 -150h-258z" />
-<glyph unicode="&#x2da;" horiz-adv-x="1120" d="M293 1489q0 116 71.5 185t192.5 69q118 0 195 -70t77 -182q0 -113 -76 -183.5t-196 -70.5q-121 0 -192.5 68.5t-71.5 183.5zM473 1489q0 -37 21 -60.5t63 -23.5q35 0 59.5 23.5t24.5 60.5q0 38 -24.5 61t-59.5 23t-59.5 -23t-24.5 -61z" />
-<glyph unicode="&#x2dc;" horiz-adv-x="1225" d="M176 1237q11 175 72 258.5t180 83.5q38 0 81 -15t87 -33t87 -33t81 -15q29 0 46 25t26 73h182q-11 -167 -74 -254.5t-172 -87.5q-45 0 -90.5 15t-89.5 33t-85.5 33t-78.5 15q-54 0 -72 -98h-180z" />
-<glyph unicode="&#x2000;" horiz-adv-x="959" />
-<glyph unicode="&#x2001;" horiz-adv-x="1919" />
-<glyph unicode="&#x2002;" horiz-adv-x="959" />
-<glyph unicode="&#x2003;" horiz-adv-x="1919" />
-<glyph unicode="&#x2004;" horiz-adv-x="639" />
-<glyph unicode="&#x2005;" horiz-adv-x="479" />
-<glyph unicode="&#x2006;" horiz-adv-x="319" />
-<glyph unicode="&#x2007;" horiz-adv-x="319" />
-<glyph unicode="&#x2008;" horiz-adv-x="239" />
-<glyph unicode="&#x2009;" horiz-adv-x="383" />
-<glyph unicode="&#x200a;" horiz-adv-x="106" />
-<glyph unicode="&#x2010;" horiz-adv-x="651" d="M43 393v312h565v-312h-565z" />
-<glyph unicode="&#x2011;" horiz-adv-x="651" d="M43 393v312h565v-312h-565z" />
-<glyph unicode="&#x2012;" horiz-adv-x="651" d="M43 393v312h565v-312h-565z" />
-<glyph unicode="&#x2013;" horiz-adv-x="1024" d="M74 414v276h876v-276h-876z" />
-<glyph unicode="&#x2014;" horiz-adv-x="2048" d="M74 414v276h1896v-276h-1896z" />
-<glyph unicode="&#x2018;" horiz-adv-x="512" d="M20 899q100 391 177 561h278q-67 -312 -98 -583h-342z" />
-<glyph unicode="&#x2019;" horiz-adv-x="512" d="M37 877q68 317 98 583h342l15 -22q-92 -366 -177 -561h-278z" />
-<glyph unicode="&#x201a;" horiz-adv-x="633" d="M57 -285q29 138 58.5 309.5t40.5 274.5h342l14 -23q-97 -381 -176 -561h-279z" />
-<glyph unicode="&#x201c;" horiz-adv-x="1022" d="M20 899q100 391 177 561h278q-67 -312 -98 -583h-342zM530 899q100 391 177 561h278q-67 -312 -98 -583h-342z" />
-<glyph unicode="&#x201d;" horiz-adv-x="1022" d="M37 877q68 317 98 583h342l15 -22q-92 -366 -177 -561h-278zM547 877q68 317 98 583h342l14 -22q-93 -371 -176 -561h-278z" />
-<glyph unicode="&#x201e;" horiz-adv-x="1143" d="M57 -285q29 138 58.5 309.5t40.5 274.5h342l14 -23q-97 -381 -176 -561h-279zM567 -285q29 138 58.5 309.5t40.5 274.5h342l14 -23q-97 -381 -176 -561h-279z" />
-<glyph unicode="&#x2022;" horiz-adv-x="803" d="M74 748q0 174 84.5 267t242.5 93t243 -94.5t85 -265.5q0 -172 -87 -266.5t-241 -94.5q-155 0 -241 93t-86 268zM668 1133z" />
-<glyph unicode="&#x2026;" horiz-adv-x="1776" d="M86 166q0 92 54.5 142t158.5 50q99 0 152 -50t53 -142q0 -90 -54.5 -140.5t-150.5 -50.5q-99 0 -156 50t-57 141zM678 166q0 92 54.5 142t158.5 50q99 0 152 -50t53 -142q0 -90 -54.5 -140.5t-150.5 -50.5q-99 0 -156 50t-57 141zM1270 166q0 92 54.5 142t158.5 50 q99 0 152 -50t53 -142q0 -90 -54.5 -140.5t-150.5 -50.5q-99 0 -156 50t-57 141z" />
-<glyph unicode="&#x202f;" horiz-adv-x="383" />
-<glyph unicode="&#x2039;" horiz-adv-x="819" d="M74 561v27l389 483l280 -149l-272 -347l272 -348l-280 -147z" />
-<glyph unicode="&#x203a;" horiz-adv-x="819" d="M76 227l272 348l-272 347l282 149l387 -483v-27l-387 -481z" />
-<glyph unicode="&#x2044;" horiz-adv-x="188" d="M-434 0l753 1462h302l-754 -1462h-301z" />
-<glyph unicode="&#x205f;" horiz-adv-x="479" />
-<glyph unicode="&#x2074;" horiz-adv-x="817" d="M29 725v188l350 555h295v-542h125v-201h-125v-139h-275v139h-370zM242 926h157v166q0 69 7 135q-40 -100 -62 -133z" />
-<glyph unicode="&#x20ac;" d="M55 467v205h129l-2 21v22l2 43h-129v205h148q51 255 212.5 387.5t413.5 132.5q180 0 349 -76l-119 -299q-120 51 -230 51q-112 0 -171.5 -53.5t-71.5 -142.5h338v-205h-353l-2 -29v-14l2 -44v1h287v-205h-264q33 -164 260 -164q145 0 266 55v-323q-102 -55 -291 -55 q-253 0 -412 126t-206 361h-156z" />
-<glyph unicode="&#x2122;" horiz-adv-x="1577" d="M37 1286v176h536v-176h-170v-545h-196v545h-170zM645 741v721h287l137 -479l150 479h276v-721h-195v400q0 68 7 110h-9l-151 -510h-164l-143 510h-9q7 -56 7 -110v-400h-193z" />
-<glyph unicode="&#xe000;" horiz-adv-x="1135" d="M0 1135h1135v-1135h-1135v1135z" />
-<glyph unicode="&#xfb01;" horiz-adv-x="1511" d="M973 1415q0 88 49 131t158 43t159 -44t50 -130q0 -172 -209 -172q-207 0 -207 172zM983 0v1133h391v-1133h-391zM45 840v192l158 96v19q0 224 91.5 322t293.5 98q78 0 147.5 -12t161.5 -42l-84 -253q-72 20 -141 20q-45 0 -65.5 -27.5t-20.5 -89.5v-30h241v-293h-241 v-840h-391v840h-150z" />
-<glyph unicode="&#xfb02;" horiz-adv-x="1507" d="M981 0v1556h391v-1556h-391zM45 840v192l158 96v19q0 224 91.5 322t293.5 98q78 0 147.5 -12t161.5 -42l-84 -253q-72 20 -141 20q-45 0 -65.5 -27.5t-20.5 -89.5v-30h241v-293h-241v-840h-391v840h-150z" />
-<glyph unicode="&#xfb03;" horiz-adv-x="2357" d="M45 840v192l158 96v19q0 224 91.5 322t293.5 98q78 0 147.5 -12t161.5 -42l-84 -253q-72 20 -141 20q-45 0 -65.5 -27.5t-20.5 -89.5v-30h241v-293h-241v-840h-391v840h-150zM891 840v192l158 96v19q0 224 91.5 322t293.5 98q78 0 147.5 -12t161.5 -42l-84 -253 q-72 20 -141 20q-45 0 -65.5 -27.5t-20.5 -89.5v-30h241v-293h-241v-840h-391v840h-150zM1819 1415q0 88 49 131t158 43t159 -44t50 -130q0 -172 -209 -172q-207 0 -207 172zM1829 0v1133h391v-1133h-391z" />
-<glyph unicode="&#xfb04;" horiz-adv-x="2353" d="M45 840v192l158 96v19q0 224 91.5 322t293.5 98q78 0 147.5 -12t161.5 -42l-84 -253q-72 20 -141 20q-45 0 -65.5 -27.5t-20.5 -89.5v-30h241v-293h-241v-840h-391v840h-150zM891 840v192l158 96v19q0 224 91.5 322t293.5 98q78 0 147.5 -12t161.5 -42l-84 -253 q-72 20 -141 20q-45 0 -65.5 -27.5t-20.5 -89.5v-30h241v-293h-241v-840h-391v840h-150zM1827 0v1556h391v-1556h-391z" />
-</font>
-</defs></svg> \ No newline at end of file
diff --git a/admin/survey/Fonts/OpenSans/OpenSans-ExtraBold-webfont.ttf b/admin/survey/Fonts/OpenSans/OpenSans-ExtraBold-webfont.ttf
deleted file mode 100644
index dacc5bb..0000000
--- a/admin/survey/Fonts/OpenSans/OpenSans-ExtraBold-webfont.ttf
+++ /dev/null
Binary files differ
diff --git a/admin/survey/Fonts/OpenSans/OpenSans-ExtraBold-webfont.woff b/admin/survey/Fonts/OpenSans/OpenSans-ExtraBold-webfont.woff
deleted file mode 100644
index de4f8e7..0000000
--- a/admin/survey/Fonts/OpenSans/OpenSans-ExtraBold-webfont.woff
+++ /dev/null
Binary files differ
diff --git a/admin/survey/Fonts/OpenSans/OpenSans-ExtraBoldItalic-webfont.eot b/admin/survey/Fonts/OpenSans/OpenSans-ExtraBoldItalic-webfont.eot
deleted file mode 100644
index e4f4ab0..0000000
--- a/admin/survey/Fonts/OpenSans/OpenSans-ExtraBoldItalic-webfont.eot
+++ /dev/null
Binary files differ
diff --git a/admin/survey/Fonts/OpenSans/OpenSans-ExtraBoldItalic-webfont.svg b/admin/survey/Fonts/OpenSans/OpenSans-ExtraBoldItalic-webfont.svg
deleted file mode 100644
index a061258..0000000
--- a/admin/survey/Fonts/OpenSans/OpenSans-ExtraBoldItalic-webfont.svg
+++ /dev/null
@@ -1,251 +0,0 @@
-<?xml version="1.0" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
-<svg xmlns="http://www.w3.org/2000/svg">
-<metadata>
-This is a custom SVG webfont generated by Font Squirrel.
-Copyright : Digitized data copyright 20102011 Google Corporation
-Foundry : Ascender Corporation
-Foundry URL : httpwwwascendercorpcom
-</metadata>
-<defs>
-<font id="OpenSansExtraboldItalic" horiz-adv-x="1243" >
-<font-face units-per-em="2048" ascent="1638" descent="-410" />
-<missing-glyph horiz-adv-x="532" />
-<glyph unicode=" " horiz-adv-x="532" />
-<glyph unicode="&#x09;" horiz-adv-x="532" />
-<glyph unicode="&#xa0;" horiz-adv-x="532" />
-<glyph unicode="!" horiz-adv-x="623" d="M12 127q0 107 65 170t179 63q87 0 133.5 -40.5t46.5 -114.5q0 -110 -63.5 -170t-173.5 -60q-88 0 -137.5 38.5t-49.5 113.5zM125 516l156 946h426l-254 -946h-328z" />
-<glyph unicode="&#x22;" horiz-adv-x="930" d="M182 934l72 528h342l-158 -528h-256zM623 934l73 528h342l-157 -528h-258z" />
-<glyph unicode="#" horiz-adv-x="1323" d="M14 393l21 238h266l57 200h-235l20 242h285l111 389h270l-111 -389h168l111 389h270l-110 -389h221l-21 -242h-270l-57 -200h243l-20 -238h-293l-111 -393h-270l113 393h-168l-113 -393h-270l112 393h-219zM571 631h168l58 200h-168z" />
-<glyph unicode="$" horiz-adv-x="1188" d="M61 162v311q126 -59 228 -86t203 -27q174 0 174 105q0 40 -32.5 72.5t-139.5 83.5q-139 62 -214 160t-75 227q0 176 133.5 288t357.5 127l29 133h168l-31 -137q161 -15 314 -90l-140 -270q-158 71 -295 71q-66 0 -103.5 -28t-37.5 -68q0 -53 39 -89.5t158 -94.5 q140 -68 205 -155.5t65 -213.5q0 -178 -133 -290t-361 -125l-38 -187h-168l41 191q-221 16 -347 92z" />
-<glyph unicode="%" horiz-adv-x="1878" d="M80 887q0 173 54 309.5t154.5 211.5t237.5 75q147 0 231.5 -85t84.5 -237q0 -165 -56.5 -303t-158 -215.5t-230.5 -77.5q-159 0 -238 83.5t-79 238.5zM252 0l1089 1462h289l-1081 -1462h-297zM371 891q0 -84 53 -84q52 0 89.5 110.5t37.5 239.5q0 43 -12 63.5t-41 20.5 q-50 0 -88.5 -110t-38.5 -240zM1057 301q0 173 54 309.5t154.5 211.5t237.5 75q147 0 231.5 -85t84.5 -237q0 -164 -56 -302t-158 -215.5t-231 -77.5q-159 0 -238 83t-79 238zM1348 305q0 -84 53 -84q52 0 89.5 110.5t37.5 239.5q0 44 -12 64t-41 20q-50 0 -88.5 -110 t-38.5 -240z" />
-<glyph unicode="&#x26;" horiz-adv-x="1501" d="M8 385q0 159 87.5 264.5t271.5 165.5q-37 46 -60.5 118.5t-23.5 131.5q0 197 126 308.5t355 111.5q189 0 302.5 -88t113.5 -236q0 -130 -80 -233t-262 -197l129 -186q36 36 75.5 114.5t63.5 161.5h383q-46 -161 -128.5 -305.5t-189.5 -253.5l191 -262h-442l-43 61 q-155 -81 -349 -81q-244 0 -382 106.5t-138 298.5zM399 424q0 -62 47.5 -99.5t124.5 -37.5t138 26l-193 279q-117 -52 -117 -168zM635 1092q0 -76 51 -144q72 31 106.5 79.5t34.5 107.5q0 35 -22 60.5t-60 25.5q-49 0 -79.5 -34.5t-30.5 -94.5z" />
-<glyph unicode="'" horiz-adv-x="487" d="M182 934l72 528h342l-158 -528h-256z" />
-<glyph unicode="(" horiz-adv-x="766" d="M68 326q0 330 124.5 619t387.5 558h323q-260 -281 -384 -576t-124 -618q0 -150 32.5 -326t84.5 -307h-293q-67 120 -109 299t-42 351zM720 1485z" />
-<glyph unicode=")" horiz-adv-x="766" d="M-133 -324q256 277 378 571.5t122 622.5q0 150 -32.5 322.5t-86.5 310.5h295q71 -124 111 -298t40 -351q0 -341 -123 -628t-378 -550h-326zM420 1485z" />
-<glyph unicode="*" horiz-adv-x="1110" d="M152 1108l100 278l319 -165l31 350l307 -62l-116 -331l368 30l-22 -301l-310 41l148 -311l-285 -86l-80 303l-166 -244l-249 185l254 229z" />
-<glyph unicode="+" horiz-adv-x="1159" d="M102 586v272h353v352h270v-352h352v-272h-352v-348h-270v348h-353z" />
-<glyph unicode="," horiz-adv-x="627" d="M-104 -264q53 121 147 387l41 115h348l8 -23q-116 -262 -256 -479h-288z" />
-<glyph unicode="-" horiz-adv-x="674" d="M23 393l63 312h553l-64 -312h-552z" />
-<glyph unicode="." horiz-adv-x="627" d="M0 127q0 109 65 171t179 62q84 0 132 -40t48 -115q0 -118 -60 -174t-190 -56q-78 0 -126 37t-48 115z" />
-<glyph unicode="/" horiz-adv-x="956" d="M-90 -20l838 1503h344l-838 -1503h-344z" />
-<glyph unicode="0" horiz-adv-x="1188" d="M63 465q0 295 85 533.5t235 362.5t348 124q135 0 230.5 -62.5t145.5 -174.5t50 -265q0 -298 -85 -529.5t-235 -352.5t-348 -121q-210 0 -318 126t-108 359zM453 457q0 -84 15 -123t60 -39q58 0 111.5 94.5t91 265.5t37.5 336q0 85 -18.5 131.5t-63.5 46.5 q-55 0 -110 -111t-89 -282t-34 -319z" />
-<glyph unicode="1" horiz-adv-x="1188" d="M150 1079l620 383h311l-307 -1462h-389l174 799q28 132 76 256q-78 -68 -131 -103l-203 -125z" />
-<glyph unicode="2" horiz-adv-x="1188" d="M-57 0l53 256l483 436q248 221 248 361q0 49 -26 73.5t-66 24.5q-120 0 -281 -147l-186 258q234 221 541 221q183 0 295 -99.5t112 -269.5q0 -152 -87 -285t-298 -315l-205 -176v-12h490l-68 -326h-1005z" />
-<glyph unicode="3" horiz-adv-x="1188" d="M14 59v332q167 -100 377 -100q138 0 206.5 46.5t68.5 133.5q0 54 -27 81t-86 39.5t-166 12.5h-84l53 291h78q147 0 229 46.5t82 127.5q0 46 -36 74t-99 28q-117 0 -270 -84l-158 248q126 81 243.5 114.5t258.5 33.5q201 0 321.5 -93t120.5 -253q0 -148 -89.5 -245 t-252.5 -130v-8q129 -25 202 -111.5t73 -212.5q0 -216 -178 -333t-482 -117q-116 0 -217.5 20.5t-167.5 58.5z" />
-<glyph unicode="4" horiz-adv-x="1188" d="M-10 283l51 256l762 923h360l-186 -884h149l-61 -295h-150l-59 -283h-377l60 283h-549zM391 578h209l49 194q29 107 60 211h-9q-51 -97 -114 -172z" />
-<glyph unicode="5" horiz-adv-x="1188" d="M20 63v324q79 -45 181 -70.5t184 -25.5q277 0 277 192q0 76 -50.5 123t-136.5 47q-53 0 -111 -10t-92 -22l-122 92l215 749h813l-68 -323h-471l-59 -185q35 4 75 4q181 0 293.5 -117.5t112.5 -316.5q0 -261 -161 -402.5t-466 -141.5q-129 0 -244.5 22t-169.5 61z" />
-<glyph unicode="6" horiz-adv-x="1188" d="M78 471q0 105 26 254q85 392 298.5 575t568.5 183q102 0 233 -31l-63 -303q-95 25 -183 25q-145 0 -237 -34t-151.5 -108.5t-106.5 -224.5h8q106 170 307 170q160 0 244 -103t84 -299q0 -175 -68.5 -311.5t-197 -210t-297.5 -73.5q-225 0 -345 124t-120 367zM463 420 q0 -66 26.5 -99.5t71.5 -33.5q66 0 109 76.5t43 181.5q0 129 -92 129q-68 0 -113 -73t-45 -181z" />
-<glyph unicode="7" horiz-adv-x="1188" d="M35 0l717 1135h-574l70 327h1030l-51 -231l-744 -1231h-448z" />
-<glyph unicode="8" horiz-adv-x="1188" d="M49 338q0 301 332 418q-156 121 -156 309q0 121 60.5 216.5t174 149.5t265.5 54q200 0 316 -92.5t116 -241.5q0 -128 -77.5 -228.5t-202.5 -140.5q92 -71 140 -158t48 -204q0 -206 -141 -323t-387 -117q-225 0 -356.5 99t-131.5 259zM414 385q0 -54 36.5 -88.5 t96.5 -34.5q70 0 112.5 42t42.5 110q0 115 -118 194q-170 -90 -170 -223zM588 1065q0 -38 23.5 -77t62.5 -58q58 22 92.5 71t34.5 103q0 49 -28.5 73.5t-65.5 24.5q-48 0 -83.5 -39.5t-35.5 -97.5z" />
-<glyph unicode="9" horiz-adv-x="1188" d="M106 10v314q92 -37 203 -37q187 0 291.5 87t144.5 281h-8q-59 -95 -132 -134.5t-169 -39.5q-151 0 -239 110t-88 296q0 176 65.5 310.5t190 210t297.5 75.5q230 0 352.5 -137.5t122.5 -393.5q0 -293 -103 -519.5t-285.5 -339.5t-431.5 -113q-115 0 -211 30zM502 932 q0 -144 92 -144q74 0 125 70.5t51 171.5q0 66 -27.5 106t-70.5 40q-73 0 -121.5 -71t-48.5 -173z" />
-<glyph unicode=":" horiz-adv-x="627" d="M0 127q0 109 65 171t179 62q84 0 132 -40t48 -115q0 -118 -60 -174t-190 -56q-78 0 -126 37t-48 115zM195 915q0 110 65 171t176 61q82 0 132 -37.5t50 -116.5q0 -119 -59 -175t-190 -56q-79 0 -126.5 37.5t-47.5 115.5z" />
-<glyph unicode=";" horiz-adv-x="627" d="M-117 -264q65 147 148 387l41 115h348l8 -23q-116 -262 -256 -479h-289zM195 915q0 110 65 171t176 61q82 0 132 -37.5t50 -116.5q0 -119 -59 -175t-190 -56q-79 0 -126.5 37.5t-47.5 115.5z" />
-<glyph unicode="&#x3c;" horiz-adv-x="1159" d="M88 627v172l973 508v-299l-576 -283l576 -252v-297z" />
-<glyph unicode="=" horiz-adv-x="1159" d="M102 399v271h975v-271h-975zM102 774v266h975v-266h-975z" />
-<glyph unicode="&#x3e;" horiz-adv-x="1159" d="M109 176v297l575 252l-575 283v299l972 -508v-172z" />
-<glyph unicode="?" horiz-adv-x="999" d="M162 1348q231 135 461 135q201 0 319.5 -90t118.5 -248q0 -89 -27.5 -156t-79 -120.5t-170.5 -125.5q-100 -60 -142.5 -100t-55.5 -84l-15 -43h-315l12 64q15 80 42 138t71 104t141 110q89 58 125.5 95t36.5 77q0 70 -90 70q-126 0 -313 -109zM176 127q0 107 65 170 t179 63q87 0 133.5 -40.5t46.5 -114.5q0 -110 -63.5 -170t-174.5 -60q-87 0 -136.5 39t-49.5 113z" />
-<glyph unicode="@" horiz-adv-x="1837" d="M82 500q0 288 117 511t335.5 347.5t485.5 124.5q355 0 554.5 -174t199.5 -482q0 -170 -69.5 -314t-191 -225t-266.5 -81q-170 0 -219 129h-10q-48 -65 -111.5 -97t-156.5 -32q-117 0 -191 83.5t-74 221.5q0 156 74 294.5t196.5 211t276.5 72.5q155 0 336 -70l-100 -414 q-23 -94 -23 -137q0 -41 39 -41q64 0 116 48.5t81.5 138.5t29.5 206q0 213 -133.5 322.5t-382.5 109.5q-187 0 -336.5 -91.5t-232 -258t-82.5 -379.5q0 -145 55 -254t153.5 -168t223.5 -59q103 0 234 24.5t245 69.5v-225q-90 -43 -223.5 -70.5t-251.5 -27.5 q-209 0 -367.5 83.5t-244.5 240t-86 362.5zM764 532q0 -104 78 -104q61 0 99.5 51.5t74.5 188.5l47 190q-23 10 -51 10q-73 0 -128.5 -47.5t-87.5 -127t-32 -161.5z" />
-<glyph unicode="A" horiz-adv-x="1384" d="M-121 0l744 1462h503l123 -1462h-381l-10 274h-448l-125 -274h-406zM553 586h293l-17 424l-2 86q0 75 4 131q-24 -86 -61 -166z" />
-<glyph unicode="B" horiz-adv-x="1298" d="M33 0l309 1462h487q217 0 329 -82.5t112 -236.5q0 -288 -297 -377v-8q88 -29 140 -101.5t52 -177.5q0 -229 -152.5 -354t-432.5 -125h-547zM489 305h82q86 0 143.5 48.5t57.5 121.5q0 69 -33 103t-116 34h-68zM614 901h72q88 0 133 38t45 122q0 102 -127 102h-63z" />
-<glyph unicode="C" horiz-adv-x="1290" d="M104 549q0 266 101.5 488t276 335t399.5 113q265 0 481 -131l-148 -305q-93 55 -171 82.5t-162 27.5q-108 0 -195 -78t-136.5 -215t-49.5 -297q0 -134 56 -200t161 -66q83 0 168 20.5t200 69.5v-323q-203 -90 -440 -90q-260 0 -400.5 148.5t-140.5 420.5z" />
-<glyph unicode="D" horiz-adv-x="1401" d="M33 0l309 1462h416q276 0 427.5 -144.5t151.5 -408.5q0 -280 -99 -485.5t-287.5 -314.5t-446.5 -109h-471zM494 324h69q110 0 196.5 70t134.5 199.5t48 295.5q0 125 -54 189.5t-151 64.5h-71z" />
-<glyph unicode="E" horiz-adv-x="1151" d="M33 0l309 1462h868l-65 -317h-477l-47 -230h444l-72 -317h-444l-57 -276h477l-68 -322h-868z" />
-<glyph unicode="F" horiz-adv-x="1165" d="M33 0l309 1462h862l-67 -317h-471l-58 -279h436l-69 -319h-438l-113 -547h-391z" />
-<glyph unicode="G" horiz-adv-x="1430" d="M104 563q0 267 110 482t301.5 327.5t445.5 112.5q266 0 448 -107l-147 -309q-153 90 -306 90q-132 0 -233.5 -72.5t-162 -214.5t-60.5 -303q0 -264 209 -264q63 0 133 14l51 232h-229l67 305h610l-167 -795q-250 -81 -521 -81q-261 0 -405 152t-144 431z" />
-<glyph unicode="H" horiz-adv-x="1462" d="M33 0l309 1462h391l-112 -542h348l112 542h392l-310 -1462h-391l125 596h-346l-127 -596h-391z" />
-<glyph unicode="I" horiz-adv-x="727" d="M31 0l309 1462h397l-309 -1462h-397z" />
-<glyph unicode="J" horiz-adv-x="764" d="M-328 -113q99 -24 174 -24q107 0 162 59t84 195l289 1345h391l-299 -1394q-43 -200 -113 -312.5t-182.5 -164.5t-292.5 -52q-106 0 -213 29v319z" />
-<glyph unicode="K" horiz-adv-x="1370" d="M33 0l309 1462h391l-135 -624l38 59q88 143 130 195l297 370h459l-551 -674l270 -788h-438l-174 578l-97 -56l-108 -522h-391z" />
-<glyph unicode="L" horiz-adv-x="1079" d="M33 0l309 1462h391l-241 -1143h477l-68 -319h-868z" />
-<glyph unicode="M" horiz-adv-x="1862" d="M33 0l309 1462h518v-1038h8l478 1038h526l-313 -1462h-351l117 549q50 228 108 436l15 64h-8l-482 -1049h-370v1049h-8q-67 -417 -86 -512l-113 -537h-348z" />
-<glyph unicode="N" horiz-adv-x="1618" d="M33 0l309 1462h455l286 -983h9q29 236 57 371l131 612h348l-309 -1462h-455l-289 1028h-8q-29 -291 -57 -418l-129 -610h-348z" />
-<glyph unicode="O" horiz-adv-x="1509" d="M104 543q0 265 103 487t280.5 338.5t409.5 116.5q260 0 404.5 -148.5t144.5 -414.5t-99.5 -486.5t-274.5 -338t-406 -117.5q-269 0 -415.5 149t-146.5 414zM500 545q0 -242 200 -242q95 0 176.5 83t128 224t46.5 308q0 114 -48 178.5t-139 64.5q-99 0 -182 -84 t-132.5 -231t-49.5 -301z" />
-<glyph unicode="P" horiz-adv-x="1276" d="M33 0l309 1462h373q259 0 397.5 -113.5t138.5 -324.5q0 -252 -171.5 -395.5t-469.5 -143.5h-86l-100 -485h-391zM594 805h63q91 0 147 58.5t56 148.5q0 59 -36 95t-99 36h-59z" />
-<glyph unicode="Q" horiz-adv-x="1509" d="M104 543q0 265 102.5 486t282 338.5t414.5 117.5q258 0 400.5 -149.5t142.5 -413.5q0 -280 -114 -509t-310 -339l238 -422h-439l-162 328h-12q-258 0 -400.5 149.5t-142.5 413.5zM500 539q0 -115 47.5 -172.5t134.5 -57.5q102 0 186.5 81t133.5 224.5t49 311.5 q0 114 -47 172.5t-134 58.5q-103 0 -188.5 -83t-133.5 -226t-48 -309z" />
-<glyph unicode="R" horiz-adv-x="1331" d="M33 0l309 1462h387q252 0 386 -100t134 -301q0 -156 -71 -272t-211 -177l224 -516l40 -96h-426l-195 532h-73l-113 -532h-391zM600 829h51q95 0 151 54.5t56 152.5q0 62 -34.5 94.5t-100.5 32.5h-53z" />
-<glyph unicode="S" horiz-adv-x="1122" d="M43 76v350q84 -53 192.5 -89t196.5 -36q74 0 112 31t38 88q0 27 -12 50.5t-34 47t-118 103.5q-117 94 -170 192t-53 215q0 131 65.5 235.5t185 162t267.5 57.5q239 0 430 -107l-135 -297q-171 88 -291 88q-64 0 -98.5 -28t-34.5 -82q0 -49 33.5 -91.5t127.5 -113.5 q118 -87 175 -183t57 -220q0 -222 -147 -345.5t-410 -123.5q-110 0 -208 24.5t-169 71.5z" />
-<glyph unicode="T" horiz-adv-x="1130" d="M156 1139l69 323h1028l-71 -323h-318l-237 -1139h-391l237 1139h-317z" />
-<glyph unicode="U" horiz-adv-x="1436" d="M125 410q0 64 12 129l199 923h391l-195 -913q-14 -68 -14 -115q0 -127 121 -127q94 0 147.5 64.5t81.5 197.5l191 893h391l-199 -932q-59 -281 -225 -415.5t-451 -134.5q-134 0 -236.5 55t-158 154t-55.5 221z" />
-<glyph unicode="V" horiz-adv-x="1264" d="M150 1462h382l27 -801v-51q0 -144 -16 -256h8q14 64 44.5 157.5t55.5 145.5l350 805h414l-725 -1462h-436z" />
-<glyph unicode="W" horiz-adv-x="1915" d="M152 1462h370l-10 -733q-6 -267 -25 -375l40 104l94 232l335 772h336v-792q0 -156 -26 -316q10 28 133 346l303 762h387l-635 -1462h-461v620q0 155 13 324q-33 -133 -118 -349l-253 -595h-434z" />
-<glyph unicode="X" horiz-adv-x="1358" d="M-125 0l563 776l-223 686h416l123 -469l309 469h448l-538 -725l262 -737h-432l-146 498l-338 -498h-444z" />
-<glyph unicode="Y" horiz-adv-x="1237" d="M164 1462h403l90 -542l312 542h436l-612 -895l-121 -567h-391l120 567z" />
-<glyph unicode="Z" horiz-adv-x="1104" d="M-92 0l47 242l690 901h-479l67 319h986l-52 -245l-700 -898h543l-68 -319h-1034z" />
-<glyph unicode="[" horiz-adv-x="737" d="M-53 -344l393 1847h530l-55 -254h-215l-285 -1339h215l-53 -254h-530zM182 -324zM491 1485z" />
-<glyph unicode="\" horiz-adv-x="956" d="M221 1483h309l248 -1503h-319z" />
-<glyph unicode="]" horiz-adv-x="737" d="M-133 -344l53 254h213l285 1339h-215l55 254h528l-393 -1847h-526zM65 -324zM533 1485z" />
-<glyph unicode="^" horiz-adv-x="1096" d="M-6 502l631 960h172l284 -960h-274l-156 569l-360 -569h-297z" />
-<glyph unicode="_" horiz-adv-x="922" d="M-184 -379l57 246h930l-58 -246h-929z" />
-<glyph unicode="`" horiz-adv-x="1135" d="M485 1548v21h396q29 -157 94 -303v-25h-236q-82 75 -152 159t-102 148z" />
-<glyph unicode="a" d="M84 412q0 179 73 365t184.5 281t246.5 95q84 0 148 -37.5t114 -122.5h8l53 140h310l-240 -1133h-309l10 123h-8q-56 -78 -121 -110.5t-147 -32.5q-158 0 -240 111.5t-82 320.5zM479 434q0 -143 86 -143q50 0 95.5 58.5t72.5 156.5t27 192q0 65 -20 104.5t-62 39.5 q-76 0 -137.5 -126.5t-61.5 -281.5z" />
-<glyph unicode="b" d="M23 0l329 1556h387l-49 -231q-38 -175 -90 -301h8q48 59 77.5 81.5t66.5 35t86 12.5q155 0 238 -111.5t83 -320.5q0 -178 -70.5 -362t-182.5 -281.5t-249 -97.5q-83 0 -145 32t-125 113h-8l-49 -125h-307zM485 434q0 -65 19 -104t59 -39q49 0 96 59t76 156t29 192 q0 144 -86 144q-50 0 -95 -57t-71.5 -154t-26.5 -197z" />
-<glyph unicode="c" horiz-adv-x="1032" d="M84 442q0 201 76.5 364.5t215 255t314.5 91.5q195 0 367 -80l-123 -287q-133 60 -225 60q-62 0 -115 -48t-87 -143.5t-34 -187.5q0 -91 30 -133.5t95 -42.5q72 0 139.5 23t143.5 63v-307q-80 -44 -168.5 -67t-206.5 -23q-199 0 -310.5 120.5t-111.5 341.5z" />
-<glyph unicode="d" horiz-adv-x="1237" d="M84 412q0 178 71.5 363t183.5 281.5t247 96.5q75 0 126 -30.5t111 -121.5h8l2 37q7 138 25 217l62 301h391l-330 -1556h-309l10 123h-8q-57 -79 -120 -111t-148 -32q-158 0 -240 111.5t-82 320.5zM479 434q0 -143 86 -143q50 0 95.5 58.5t72.5 156.5t27 192 q0 144 -80 144q-49 0 -96 -59t-76 -155.5t-29 -193.5z" />
-<glyph unicode="e" horiz-adv-x="1186" d="M84 428q0 211 83.5 380.5t229 257t336.5 87.5q190 0 299 -86t109 -229q0 -201 -156.5 -308.5t-452.5 -107.5h-59v-16q0 -148 164 -148q79 0 155 23.5t173 74.5v-274q-112 -57 -209 -79.5t-224 -22.5q-212 0 -330 118.5t-118 329.5zM512 664h29q109 0 171 41.5t62 109.5 q0 32 -20 54t-64 22q-61 0 -114 -69.5t-64 -157.5z" />
-<glyph unicode="f" horiz-adv-x="840" d="M-209 -162q63 -18 117 -18q74 0 112 30t52 95l190 897h-166l43 190l189 96l16 74q43 192 146.5 278.5t275.5 86.5q80 0 155 -16t128 -42l-99 -264q-64 31 -129 31q-35 0 -59.5 -18.5t-32.5 -53.5l-16 -71h211l-66 -291h-209l-205 -959q-43 -192 -153.5 -283.5 t-292.5 -91.5q-110 0 -207 27v303z" />
-<glyph unicode="g" horiz-adv-x="1145" d="M-133 -207q0 98 68 169t212 118q-37 23 -60.5 60t-23.5 79q0 71 51 126t152 101q-131 103 -131 281q0 196 136 311t368 115q51 0 107.5 -6t89.5 -14h399l-41 -207l-160 -52q10 -40 10 -94q0 -191 -130 -308.5t-339 -117.5q-76 0 -124 13q-20 -11 -34 -22t-14 -30 q0 -43 111 -59l137 -18q174 -25 250 -91.5t76 -189.5q0 -215 -168.5 -332t-478.5 -117q-212 0 -337.5 75.5t-125.5 209.5zM197 -152q0 -86 170 -86q125 0 190.5 29t65.5 82q0 36 -33 54.5t-115 27.5l-115 12q-78 -11 -120.5 -41.5t-42.5 -77.5zM500 692q0 -94 67 -94 q52 0 85.5 68.5t33.5 158.5q0 95 -61 95q-38 0 -66 -33.5t-43.5 -87.5t-15.5 -107z" />
-<glyph unicode="h" horiz-adv-x="1274" d="M23 0l329 1556h387l-53 -249q-35 -158 -88 -283h8q101 129 273 129q141 0 220 -85.5t79 -236.5q0 -106 -25 -229l-127 -602h-387l129 618q18 78 18 142q0 43 -22 64.5t-53 21.5q-125 0 -185 -293l-116 -553h-387z" />
-<glyph unicode="i" horiz-adv-x="666" d="M23 0l239 1133h389l-241 -1133h-387zM309 1382q0 103 59.5 156t166.5 53q91 0 140.5 -36.5t49.5 -104.5q0 -100 -58 -154.5t-167 -54.5q-191 0 -191 141z" />
-<glyph unicode="j" horiz-adv-x="666" d="M-264 -162q56 -18 112 -18q142 0 175 147l247 1166h387l-260 -1227q-40 -193 -157 -295.5t-297 -102.5q-110 0 -207 27v303zM317 1382q0 103 59.5 156t166.5 53q91 0 140.5 -36.5t49.5 -104.5q0 -94 -55 -151.5t-170 -57.5q-191 0 -191 141z" />
-<glyph unicode="k" horiz-adv-x="1264" d="M23 0l325 1556h387l-139 -663q-17 -77 -68 -223h9q84 127 153 200l242 263h442l-491 -512l274 -621h-438l-139 391l-101 -53l-69 -338h-387z" />
-<glyph unicode="l" horiz-adv-x="666" d="M23 0l329 1556h387l-329 -1556h-387z" />
-<glyph unicode="m" horiz-adv-x="1896" d="M23 0l239 1133h309l-16 -187h8q61 114 137 160.5t191 46.5q117 0 180.5 -53.5t89.5 -153.5h8q65 106 149 156.5t195 50.5q141 0 214 -84.5t73 -249.5q0 -97 -22 -205l-125 -614h-387l129 631q14 56 14 133q0 40 -19 61t-51 21q-74 0 -119.5 -76t-76.5 -227l-111 -543 h-387l131 631q15 90 15 121q0 94 -72 94q-68 0 -113.5 -74.5t-77.5 -220.5l-118 -551h-387z" />
-<glyph unicode="n" horiz-adv-x="1274" d="M23 0l239 1133h309l-12 -158h8q55 95 129.5 136.5t182.5 41.5q141 0 220 -85.5t79 -236.5q0 -106 -25 -229l-127 -602h-387l129 618q18 78 18 142q0 43 -22 64.5t-53 21.5q-57 0 -105.5 -71t-79.5 -222l-116 -553h-387z" />
-<glyph unicode="o" d="M84 416q0 210 79.5 379.5t223.5 263.5t336 94q209 0 322.5 -113t113.5 -323t-79.5 -379.5t-223.5 -263.5t-336 -94q-209 0 -322.5 113t-113.5 323zM479 403q0 -133 84 -133q81 0 141 139t60 320q0 66 -23 99.5t-63 33.5q-82 0 -140.5 -139.5t-58.5 -319.5z" />
-<glyph unicode="p" d="M-82 -492l344 1625h309l-12 -127h8q96 147 258 147q156 0 245 -111.5t89 -306.5q0 -203 -70 -382.5t-185.5 -276t-252.5 -96.5q-143 0 -231 145h-8q-12 -166 -56 -371l-51 -246h-387zM485 434q0 -65 23 -104t65 -39q48 0 92 57t71.5 153t27.5 197q0 144 -86 144 q-50 0 -95 -57t-71.5 -154t-26.5 -197z" />
-<glyph unicode="q" d="M84 408q0 181 71.5 366.5t183 282t247.5 96.5q89 0 145.5 -33t118.5 -127h8l53 140h310l-344 -1625h-392l68 293q25 116 90 310h-8q-55 -74 -114 -102.5t-134 -28.5q-89 0 -158 50.5t-107 148t-38 229.5zM479 434q0 -143 86 -143q50 0 95.5 58.5t72.5 156.5t27 192 q0 144 -80 144q-49 0 -96 -59t-76 -155.5t-29 -193.5z" />
-<glyph unicode="r" horiz-adv-x="895" d="M23 0l239 1133h309l-18 -189h8q65 112 141 160.5t199 48.5q56 0 80 -8l-84 -383q-54 22 -123 22q-103 0 -164.5 -70.5t-93.5 -215.5l-106 -498h-387z" />
-<glyph unicode="s" horiz-adv-x="1028" d="M31 43v311q92 -50 171 -70t160 -20q68 0 102 18.5t34 51.5q0 35 -26 60.5t-130 84.5q-106 58 -154.5 133t-48.5 183q0 172 121 265t344 93q112 0 204 -26t179 -80l-121 -252q-66 43 -136.5 68.5t-121.5 25.5q-76 0 -76 -68q0 -29 31.5 -51t102.5 -57q225 -112 225 -320 q0 -199 -130 -306t-374 -107q-222 0 -356 63z" />
-<glyph unicode="t" horiz-adv-x="936" d="M63 842l41 190l218 88l137 240h258l-49 -227h288l-63 -291h-289l-84 -383q-16 -77 -16 -105q0 -63 63 -63q66 0 183 47v-291q-136 -67 -340 -67q-148 0 -224.5 63.5t-76.5 208.5q0 76 24 188l84 402h-154z" />
-<glyph unicode="u" horiz-adv-x="1274" d="M96 301q0 106 25 229l127 603h387l-129 -617q-19 -82 -19 -141q0 -44 22.5 -65t53.5 -21q59 0 107.5 78.5t77.5 214.5l116 551h387l-239 -1133h-310l13 158h-8q-54 -93 -128.5 -135.5t-183.5 -42.5q-141 0 -220 85.5t-79 235.5z" />
-<glyph unicode="v" horiz-adv-x="1114" d="M88 1133h385l27 -603q0 -73 -8 -118h8q1 14 18 63t36 90t265 568h414l-612 -1133h-388z" />
-<glyph unicode="w" horiz-adv-x="1686" d="M102 1133h365v-512q0 -182 -8 -259h8q46 177 88 295l172 476h428l-20 -476q-9 -129 -33 -295h8q7 22 15.5 47.5t48.5 140t241 583.5h385l-538 -1133h-422l20 449q2 73 11.5 209t21.5 219h-8q-60 -233 -121 -390l-189 -487h-407z" />
-<glyph unicode="x" horiz-adv-x="1159" d="M-119 0l473 578l-207 555h422l76 -314l186 314h459l-465 -576l228 -557h-428l-80 328l-211 -328h-453z" />
-<glyph unicode="y" horiz-adv-x="1114" d="M-129 -168q46 -12 109 -12q87 0 142.5 36.5t98.5 114.5l23 41l-162 1121h389l43 -562l2 -62v-87h8q37 132 50 165.5t239 545.5h416l-670 -1276q-96 -185 -223 -267t-311 -82q-92 0 -154 17v307z" />
-<glyph unicode="z" horiz-adv-x="993" d="M-41 0l43 221l502 613h-348l67 299h811l-53 -242l-496 -592h383l-65 -299h-844z" />
-<glyph unicode="{" horiz-adv-x="735" d="M-16 434l53 287q119 0 175 38.5t77 133.5l55 246q28 124 76.5 190t130 99.5t203.5 33.5h129l-62 -280q-81 -2 -120 -29.5t-56 -99.5l-53 -258q-20 -96 -85.5 -151.5t-193.5 -70.5v-8q90 -29 130 -87t40 -146q0 -17 -10 -74l-35 -164q-6 -30 -6 -49q0 -88 113 -88v-281 h-82q-183 0 -272 68.5t-89 208.5q0 63 15 127l37 174q6 24 6 43q0 75 -42 106t-134 31z" />
-<glyph unicode="|" horiz-adv-x="1159" d="M442 -465v2013h271v-2013h-271z" />
-<glyph unicode="}" horiz-adv-x="735" d="M-123 -43q73 3 109 13.5t54 33.5t30 82l53 258q21 99 88 154t190 67v8q-170 55 -170 234q0 12 11 74l34 163q7 29 7 50q0 88 -136 88l54 280h61q168 0 259 -70.5t91 -203.5q0 -69 -14 -129l-37 -174q-6 -26 -6 -43q0 -66 44.5 -100.5t148.5 -34.5l-58 -287 q-121 0 -182.5 -40.5t-81.5 -133.5l-55 -246q-37 -171 -137.5 -247.5t-282.5 -76.5h-74v281z" />
-<glyph unicode="~" horiz-adv-x="1159" d="M96 524v285q107 109 262 109q61 0 110.5 -11.5t152.5 -52.5q67 -28 114 -41.5t99 -13.5q51 0 115.5 32t121.5 89v-285q-107 -109 -262 -109q-62 0 -113.5 12.5t-148.5 51.5q-75 31 -118.5 43t-92.5 12q-52 0 -114.5 -30t-125.5 -91z" />
-<glyph unicode="&#xa1;" horiz-adv-x="623" d="M-109 -338l254 946h328l-156 -946h-426zM107 -324zM162 924q0 109 64 169t173 60q89 0 138 -39.5t49 -112.5q0 -107 -65 -170t-179 -63q-87 0 -133.5 40.5t-46.5 115.5z" />
-<glyph unicode="&#xa2;" horiz-adv-x="1188" d="M154 586q0 306 140.5 510t371.5 239l32 148h230l-33 -150q122 -19 231 -76l-122 -286q-79 37 -128 48t-98 11q-63 0 -115 -49.5t-84 -146.5t-32 -207q0 -79 31 -113.5t90 -34.5q72 0 140 25t142 65v-311q-145 -78 -307 -90l-41 -188h-229l51 208q-270 74 -270 398z" />
-<glyph unicode="&#xa3;" horiz-adv-x="1188" d="M-18 0l63 313q76 21 120.5 49t69 69.5t41.5 123.5l21 96h-188l57 279h188l23 129q26 149 85 243t150.5 137.5t237.5 43.5q89 0 177 -19t196 -67l-144 -299q-66 31 -114 47t-99 16q-35 0 -56.5 -24.5t-35.5 -92.5l-24 -114h251l-57 -279h-252l-20 -94 q-16 -74 -69.5 -133.5t-133.5 -93.5h604l-72 -330h-1019z" />
-<glyph unicode="&#xa4;" horiz-adv-x="1188" d="M106 1032l185 185l127 -125q96 43 182 43q96 0 184 -48l125 130l189 -179l-129 -129q43 -82 43 -186q0 -94 -43 -186l123 -123l-183 -183l-125 123q-96 -41 -184 -41q-108 0 -186 39l-123 -119l-182 183l127 123q-46 90 -46 184q0 92 46 184zM451 723q0 -64 43 -108 t106 -44q65 0 110.5 44.5t45.5 107.5q0 61 -44.5 106t-111.5 45q-64 0 -106.5 -44t-42.5 -107z" />
-<glyph unicode="&#xa5;" horiz-adv-x="1188" d="M76 190l43 205h227l25 129h-226l45 205h179l-187 733h385l72 -487l293 487h393l-489 -733h184l-45 -205h-223l-27 -129h223l-43 -205h-223l-41 -190h-379l41 190h-227z" />
-<glyph unicode="&#xa6;" horiz-adv-x="1159" d="M444 395h271v-839h-271v839zM444 705v841h271v-841h-271z" />
-<glyph unicode="&#xa7;" horiz-adv-x="1036" d="M37 70v249q85 -52 173 -86t185 -34q69 0 109.5 28.5t40.5 75.5q0 38 -31 70.5t-104 72.5q-130 71 -191 152t-61 178q0 84 46 156t132 125q-38 38 -59 89.5t-21 102.5q0 160 116 244t339 84q184 0 360 -102l-100 -224q-91 58 -159.5 79.5t-133.5 21.5q-60 0 -85.5 -22.5 t-25.5 -51.5q0 -33 14 -53.5t46.5 -43t89.5 -48.5q244 -113 244 -312q0 -99 -38 -171t-130 -124q32 -38 50.5 -90.5t18.5 -109.5q0 -170 -127 -260.5t-358 -90.5q-110 0 -197 25.5t-143 69.5zM442 817q0 -43 37 -84t125 -90q74 51 74 127q0 54 -36.5 95t-117.5 75 q-37 -19 -59.5 -54t-22.5 -69z" />
-<glyph unicode="&#xa8;" horiz-adv-x="1135" d="M336 1384q0 187 201 187q170 0 170 -125q0 -189 -201 -189q-88 0 -129 31t-41 96zM823 1384q0 187 201 187q168 0 168 -125q0 -97 -49.5 -143t-149.5 -46q-88 0 -129 31t-41 96z" />
-<glyph unicode="&#xa9;" horiz-adv-x="1688" d="M113 731q0 202 101.5 378t275.5 275t374 99t375 -100t276 -275t101 -377q0 -197 -97 -370t-272 -277t-383 -104q-206 0 -380 102.5t-272.5 276.5t-98.5 372zM276 731q0 -158 78.5 -294t215 -215t294.5 -79q157 0 293 77.5t215.5 214t79.5 296.5q0 158 -78.5 294.5 t-215 215t-294.5 78.5t-295.5 -79.5t-215 -215.5t-77.5 -293zM461 735q0 220 113.5 341.5t320.5 121.5q166 0 332 -82l-92 -205q-114 60 -222 60q-80 0 -126 -61t-46 -179q0 -128 44 -185t135 -57q138 0 258 68v-231q-126 -64 -273 -64q-213 0 -328.5 125t-115.5 348z" />
-<glyph unicode="&#xaa;" horiz-adv-x="827" d="M139 1001q0 120 45 232t123 177t176 65q64 0 111.5 -20t101.5 -79h9l36 86h199l-170 -721h-195l9 86h-9q-89 -98 -223 -98q-60 0 -108 31.5t-76.5 91.5t-28.5 149zM412 1012q0 -48 19 -74.5t50 -26.5q46 0 79 38.5t51 100t18 128.5q0 53 -19.5 83.5t-52.5 30.5 q-39 0 -72.5 -40.5t-53 -107.5t-19.5 -132z" />
-<glyph unicode="&#xab;" horiz-adv-x="1276" d="M61 553v10l408 518l264 -204l-266 -334l111 -330l-334 -137zM608 582v10l424 495l260 -210l-278 -306l123 -358l-334 -137z" />
-<glyph unicode="&#xac;" horiz-adv-x="1159" d="M82 586v272h975v-620h-271v348h-704z" />
-<glyph unicode="&#xad;" horiz-adv-x="674" d="M23 393l63 312h553l-64 -312h-552z" />
-<glyph unicode="&#xae;" horiz-adv-x="1688" d="M113 731q0 202 101.5 378t275.5 275t374 99t375 -100t276 -275t101 -377q0 -197 -97 -370t-272 -277t-383 -104q-206 0 -380 102.5t-272.5 276.5t-98.5 372zM276 731q0 -158 78.5 -294t215 -215t294.5 -79q157 0 293 77.5t215.5 214t79.5 296.5q0 158 -78.5 294.5 t-215 215t-294.5 78.5t-295.5 -79.5t-215 -215.5t-77.5 -293zM535 313v875h290q214 0 317 -70.5t103 -199.5q0 -91 -44.5 -153t-139.5 -97l211 -355h-285l-160 320h-12v-320h-280zM815 809h10q78 0 108 22t30 76t-35.5 70t-104.5 16h-8v-184z" />
-<glyph unicode="&#xaf;" horiz-adv-x="922" d="M183 1554l57 246h930l-58 -246h-929z" />
-<glyph unicode="&#xb0;" horiz-adv-x="864" d="M166 1114q0 97 49 182.5t135 136t185 50.5q98 0 184 -50t135 -136.5t49 -182.5q0 -98 -49.5 -183t-135.5 -133t-183 -48q-99 0 -185 49t-135 133t-49 182zM403 1114q0 -51 39.5 -89t92.5 -38q52 0 91.5 38t39.5 89q0 53 -38.5 93t-92.5 40q-55 0 -93.5 -39.5t-38.5 -93.5 z" />
-<glyph unicode="&#xb1;" horiz-adv-x="1159" d="M102 0v270h975v-270h-975zM102 694v271h353v352h270v-352h352v-271h-352v-350h-270v350h-353z" />
-<glyph unicode="&#xb2;" horiz-adv-x="848" d="M23 584l43 204l276 211q108 83 144 124t36 75q0 51 -63 51q-35 0 -85 -18t-104 -62l-118 191q84 65 172.5 94t216.5 29q134 0 218.5 -61t84.5 -156q0 -70 -31.5 -129.5t-102 -121t-251.5 -175.5h319l-51 -256h-704z" />
-<glyph unicode="&#xb3;" horiz-adv-x="848" d="M66 639v225q63 -43 131.5 -62.5t124.5 -19.5q151 0 151 80q0 68 -113 68h-120l43 194h96q71 0 114.5 21.5t43.5 66.5q0 28 -22 43t-54 15q-79 0 -185 -66l-100 182q83 52 161 73.5t181 21.5q137 0 220 -57t83 -152q0 -91 -55.5 -146t-175.5 -84v-8q92 -23 129 -69.5 t37 -112.5q0 -127 -104 -205t-275 -78q-106 0 -177.5 16t-133.5 54z" />
-<glyph unicode="&#xb4;" horiz-adv-x="1135" d="M453 1241v23q123 102 282 305h439v-15q-45 -54 -191.5 -157t-245.5 -156h-284z" />
-<glyph unicode="&#xb5;" horiz-adv-x="1288" d="M-82 -492l344 1625h387l-129 -617q-18 -78 -18 -141q0 -44 22.5 -65t53.5 -21q52 0 82.5 26t53.5 87t48 180l117 551h387l-240 -1133h-289l6 123h-8q-68 -143 -190 -143q-102 0 -131 77h-8q-10 -134 -48 -303l-53 -246h-387z" />
-<glyph unicode="&#xb6;" horiz-adv-x="1317" d="M102 1042q0 256 107.5 385t343.5 129h633v-1816h-191v1587h-157v-1587h-191v819q-54 -18 -125 -18q-216 0 -318 125t-102 376z" />
-<glyph unicode="&#xb7;" horiz-adv-x="627" d="M115 684q0 106 65 168.5t178 62.5q82 0 131.5 -40.5t49.5 -114.5q0 -117 -65.5 -173.5t-178.5 -56.5q-86 0 -133 40t-47 114z" />
-<glyph unicode="&#xb8;" horiz-adv-x="383" d="M-221 -258q30 -9 78.5 -18t72.5 -9q68 0 68 49q0 73 -145 101l75 135h205l-24 -41q178 -37 178 -195q0 -121 -82.5 -188.5t-233.5 -67.5q-115 0 -192 29v205z" />
-<glyph unicode="&#xb9;" horiz-adv-x="848" d="M115 1202l426 260h252l-187 -878h-317l82 364q21 102 55 207l-74 -59l-119 -78z" />
-<glyph unicode="&#xba;" horiz-adv-x="817" d="M139 1004q0 213 116.5 344t317.5 131q143 0 222 -79t79 -218q0 -134 -51 -237t-149.5 -160.5t-231.5 -57.5q-144 0 -223.5 75.5t-79.5 201.5zM412 1016q0 -84 55 -84q59 0 97 70.5t38 179.5q0 45 -11.5 68.5t-43.5 23.5q-60 0 -97.5 -73t-37.5 -185z" />
-<glyph unicode="&#xbb;" horiz-adv-x="1276" d="M-14 248l276 305l-121 358l332 138l195 -506v-11l-424 -497zM543 248l266 334l-111 329l334 138l182 -478v-10l-407 -518z" />
-<glyph unicode="&#xbc;" horiz-adv-x="1991" d="M921 122l31 178l490 577h325l-119 -557h113l-41 -198h-113l-26 -123h-289l27 123h-398zM1198 320h162q62 239 73 274t15 44q-13 -18 -35 -48.5t-215 -269.5zM195 0l1089 1462h291l-1083 -1462h-297zM79 1202l426 260h252l-187 -878h-317l82 364q21 102 55 207l-74 -59 l-119 -78z" />
-<glyph unicode="&#xbd;" horiz-adv-x="1991" d="M1002 -1l43 204l276 211q108 83 144 124t36 75q0 51 -63 51q-35 0 -85 -18t-104 -62l-118 191q84 65 172.5 94t216.5 29q134 0 218.5 -61t84.5 -156q0 -70 -31.5 -129.5t-102 -121t-251.5 -175.5h319l-51 -256h-704zM104 1202l426 260h252l-187 -878h-317l82 364 q21 102 55 207l-74 -59l-119 -78zM219 0l1089 1462h291l-1083 -1462h-297z" />
-<glyph unicode="&#xbe;" horiz-adv-x="1991" d="M968 122l31 178l490 577h325l-119 -557h113l-41 -198h-113l-26 -123h-289l27 123h-398zM1245 320h162q62 239 73 274t15 44q-13 -18 -35 -48.5t-215 -269.5zM195 639v225q63 -43 131.5 -62.5t124.5 -19.5q151 0 151 80q0 68 -113 68h-120l43 194h96q71 0 114.5 21.5 t43.5 66.5q0 28 -22 43t-54 15q-79 0 -185 -66l-100 182q83 52 161 73.5t181 21.5q137 0 220 -57t83 -152q0 -91 -55.5 -146t-175.5 -84v-8q92 -23 129 -69.5t37 -112.5q0 -127 -104 -205t-275 -78q-106 0 -177.5 16t-133.5 54zM363 0l1089 1462h291l-1083 -1462h-297z" />
-<glyph unicode="&#xbf;" horiz-adv-x="999" d="M-84 -16q0 89 27.5 155.5t77.5 119t172 126.5q100 60 142.5 101t55.5 83l15 43h315l-12 -63q-15 -82 -43 -140t-72.5 -104.5t-138.5 -107.5q-89 -58 -125.5 -95t-36.5 -77q0 -37 22.5 -53.5t67.5 -16.5q124 0 313 108l119 -282q-227 -135 -461 -135q-201 0 -319.5 90 t-118.5 248zM285 -324zM377 924q0 109 64 169t173 60q89 0 138 -39.5t49 -112.5q0 -107 -65 -170t-179 -63q-87 0 -133.5 40.5t-46.5 115.5z" />
-<glyph unicode="&#xc0;" horiz-adv-x="1384" d="M-121 0l744 1462h503l123 -1462h-381l-10 274h-448l-125 -274h-406zM553 586h293l-17 424l-2 86q0 75 4 131q-24 -86 -61 -166zM551 1886v21h396q29 -157 94 -303v-25h-236q-82 75 -152 159t-102 148z" />
-<glyph unicode="&#xc1;" horiz-adv-x="1384" d="M-121 0l744 1462h503l123 -1462h-381l-10 274h-448l-125 -274h-406zM553 586h293l-17 424l-2 86q0 75 4 131q-24 -86 -61 -166zM709 1579v23q123 102 282 305h439v-15q-45 -54 -191.5 -157t-245.5 -156h-284z" />
-<glyph unicode="&#xc2;" horiz-adv-x="1384" d="M-121 0l744 1462h503l123 -1462h-381l-10 274h-448l-125 -274h-406zM553 586h293l-17 424l-2 86q0 75 4 131q-24 -86 -61 -166zM399 1579v23q79 72 170 162.5t139 142.5h447q26 -59 78 -149.5t102 -155.5v-23h-266q-46 41 -156 174q-140 -110 -240 -174h-274z" />
-<glyph unicode="&#xc3;" horiz-adv-x="1384" d="M-121 0l744 1462h503l123 -1462h-381l-10 274h-448l-125 -274h-406zM553 586h293l-17 424l-2 86q0 75 4 131q-24 -86 -61 -166zM459 1575q32 172 108.5 257t204.5 85q34 0 59.5 -6.5t94.5 -42.5q31 -17 66 -33t67 -16q78 0 115 100h190q-34 -172 -112.5 -257t-208.5 -85 q-33 0 -65 8t-61 22t-46 23q-73 45 -127 45q-31 0 -60.5 -27t-36.5 -73h-188z" />
-<glyph unicode="&#xc4;" horiz-adv-x="1384" d="M-121 0l744 1462h503l123 -1462h-381l-10 274h-448l-125 -274h-406zM553 586h293l-17 424l-2 86q0 75 4 131q-24 -86 -61 -166zM502 1722q0 187 201 187q170 0 170 -125q0 -189 -201 -189q-88 0 -129 31t-41 96zM989 1722q0 187 201 187q168 0 168 -125q0 -97 -49.5 -143 t-149.5 -46q-88 0 -129 31t-41 96z" />
-<glyph unicode="&#xc5;" horiz-adv-x="1384" d="M-121 0l744 1462h503l123 -1462h-381l-10 274h-448l-125 -274h-406zM553 586h293l-17 424l-2 86q0 75 4 131q-24 -86 -61 -166zM608 1550q0 114 73.5 184t195.5 70q118 0 193 -70.5t75 -181.5q0 -113 -74.5 -183.5t-193.5 -70.5q-121 0 -195 68.5t-74 183.5zM788 1550 q0 -37 23.5 -60.5t65.5 -23.5q39 0 63.5 25t24.5 59q0 38 -26.5 62t-61.5 24q-36 0 -62.5 -24t-26.5 -62z" />
-<glyph unicode="&#xc6;" horiz-adv-x="1937" d="M-125 0l909 1462h1213l-66 -317h-477l-47 -230h444l-71 -317h-445l-57 -276h477l-67 -322h-869l58 274h-418l-170 -274h-414zM662 602h286l113 543h-68z" />
-<glyph unicode="&#xc7;" horiz-adv-x="1290" d="M104 549q0 266 101.5 488t276 335t399.5 113q265 0 481 -131l-148 -305q-93 55 -171 82.5t-162 27.5q-108 0 -195 -78t-136.5 -215t-49.5 -297q0 -134 56 -200t161 -66q83 0 168 20.5t200 69.5v-323q-203 -90 -440 -90q-260 0 -400.5 148.5t-140.5 420.5zM305 -258 q30 -9 78.5 -18t72.5 -9q68 0 68 49q0 73 -145 101l75 135h205l-24 -41q178 -37 178 -195q0 -121 -82.5 -188.5t-233.5 -67.5q-115 0 -192 29v205z" />
-<glyph unicode="&#xc8;" horiz-adv-x="1151" d="M33 0l309 1462h868l-65 -317h-477l-47 -230h444l-72 -317h-444l-57 -276h477l-68 -322h-868zM443 1886v21h396q29 -157 94 -303v-25h-236q-82 75 -152 159t-102 148z" />
-<glyph unicode="&#xc9;" horiz-adv-x="1151" d="M33 0l309 1462h868l-65 -317h-477l-47 -230h444l-72 -317h-444l-57 -276h477l-68 -322h-868zM578 1579v23q123 102 282 305h439v-15q-45 -54 -191.5 -157t-245.5 -156h-284z" />
-<glyph unicode="&#xca;" horiz-adv-x="1151" d="M33 0l309 1462h868l-65 -317h-477l-47 -230h444l-72 -317h-444l-57 -276h477l-68 -322h-868zM303 1579v23q79 72 170 162.5t139 142.5h447q26 -59 78 -149.5t102 -155.5v-23h-266q-46 41 -156 174q-140 -110 -240 -174h-274z" />
-<glyph unicode="&#xcb;" horiz-adv-x="1151" d="M33 0l309 1462h868l-65 -317h-477l-47 -230h444l-72 -317h-444l-57 -276h477l-68 -322h-868zM383 1722q0 187 201 187q170 0 170 -125q0 -189 -201 -189q-88 0 -129 31t-41 96zM870 1722q0 187 201 187q168 0 168 -125q0 -97 -49.5 -143t-149.5 -46q-88 0 -129 31t-41 96 z" />
-<glyph unicode="&#xcc;" horiz-adv-x="727" d="M31 0l309 1462h397l-309 -1462h-397zM259 1886v21h396q29 -157 94 -303v-25h-236q-82 75 -152 159t-102 148z" />
-<glyph unicode="&#xcd;" horiz-adv-x="727" d="M31 0l309 1462h397l-309 -1462h-397zM345 1579v23q123 102 282 305h439v-15q-45 -54 -191.5 -157t-245.5 -156h-284z" />
-<glyph unicode="&#xce;" horiz-adv-x="727" d="M31 0l309 1462h397l-309 -1462h-397zM79 1579v23q79 72 170 162.5t139 142.5h447q26 -59 78 -149.5t102 -155.5v-23h-266q-46 41 -156 174q-140 -110 -240 -174h-274z" />
-<glyph unicode="&#xcf;" horiz-adv-x="727" d="M31 0l309 1462h397l-309 -1462h-397zM159 1722q0 187 201 187q170 0 170 -125q0 -189 -201 -189q-88 0 -129 31t-41 96zM646 1722q0 187 201 187q168 0 168 -125q0 -97 -49.5 -143t-149.5 -46q-88 0 -129 31t-41 96z" />
-<glyph unicode="&#xd0;" horiz-adv-x="1401" d="M10 563l70 320h139l123 579h430q271 0 418 -143.5t147 -409.5q0 -434 -213 -671.5t-598 -237.5h-493l119 563h-142zM494 324h69q111 0 198 71.5t134 204t47 301.5q0 116 -54 179t-151 63h-71l-56 -260h178l-69 -320h-176z" />
-<glyph unicode="&#xd1;" horiz-adv-x="1618" d="M33 0l309 1462h455l286 -983h9q29 236 57 371l131 612h348l-309 -1462h-455l-289 1028h-8q-29 -291 -57 -418l-129 -610h-348zM553 1575q32 172 108.5 257t204.5 85q34 0 59.5 -6.5t94.5 -42.5q31 -17 66 -33t67 -16q78 0 115 100h190q-34 -172 -112.5 -257t-208.5 -85 q-33 0 -65 8t-61 22t-46 23q-73 45 -127 45q-31 0 -60.5 -27t-36.5 -73h-188z" />
-<glyph unicode="&#xd2;" horiz-adv-x="1509" d="M104 543q0 265 103 487t280.5 338.5t409.5 116.5q260 0 404.5 -148.5t144.5 -414.5t-99.5 -486.5t-274.5 -338t-406 -117.5q-269 0 -415.5 149t-146.5 414zM500 545q0 -242 200 -242q95 0 176.5 83t128 224t46.5 308q0 114 -48 178.5t-139 64.5q-99 0 -182 -84 t-132.5 -231t-49.5 -301zM612 1886v21h396q29 -157 94 -303v-25h-236q-82 75 -152 159t-102 148z" />
-<glyph unicode="&#xd3;" horiz-adv-x="1509" d="M104 543q0 265 103 487t280.5 338.5t409.5 116.5q260 0 404.5 -148.5t144.5 -414.5t-99.5 -486.5t-274.5 -338t-406 -117.5q-269 0 -415.5 149t-146.5 414zM500 545q0 -242 200 -242q95 0 176.5 83t128 224t46.5 308q0 114 -48 178.5t-139 64.5q-99 0 -182 -84 t-132.5 -231t-49.5 -301zM717 1579v23q123 102 282 305h439v-15q-45 -54 -191.5 -157t-245.5 -156h-284z" />
-<glyph unicode="&#xd4;" horiz-adv-x="1509" d="M104 543q0 265 103 487t280.5 338.5t409.5 116.5q260 0 404.5 -148.5t144.5 -414.5t-99.5 -486.5t-274.5 -338t-406 -117.5q-269 0 -415.5 149t-146.5 414zM500 545q0 -242 200 -242q95 0 176.5 83t128 224t46.5 308q0 114 -48 178.5t-139 64.5q-99 0 -182 -84 t-132.5 -231t-49.5 -301zM432 1579v23q79 72 170 162.5t139 142.5h447q26 -59 78 -149.5t102 -155.5v-23h-266q-46 41 -156 174q-140 -110 -240 -174h-274z" />
-<glyph unicode="&#xd5;" horiz-adv-x="1509" d="M104 543q0 265 103 487t280.5 338.5t409.5 116.5q260 0 404.5 -148.5t144.5 -414.5t-99.5 -486.5t-274.5 -338t-406 -117.5q-269 0 -415.5 149t-146.5 414zM500 545q0 -242 200 -242q95 0 176.5 83t128 224t46.5 308q0 114 -48 178.5t-139 64.5q-99 0 -182 -84 t-132.5 -231t-49.5 -301zM489 1575q32 172 108.5 257t204.5 85q34 0 59.5 -6.5t94.5 -42.5q31 -17 66 -33t67 -16q78 0 115 100h190q-34 -172 -112.5 -257t-208.5 -85q-33 0 -65 8t-61 22t-46 23q-73 45 -127 45q-31 0 -60.5 -27t-36.5 -73h-188z" />
-<glyph unicode="&#xd6;" horiz-adv-x="1509" d="M104 543q0 265 103 487t280.5 338.5t409.5 116.5q260 0 404.5 -148.5t144.5 -414.5t-99.5 -486.5t-274.5 -338t-406 -117.5q-269 0 -415.5 149t-146.5 414zM500 545q0 -242 200 -242q95 0 176.5 83t128 224t46.5 308q0 114 -48 178.5t-139 64.5q-99 0 -182 -84 t-132.5 -231t-49.5 -301zM512 1722q0 187 201 187q170 0 170 -125q0 -189 -201 -189q-88 0 -129 31t-41 96zM999 1722q0 187 201 187q168 0 168 -125q0 -97 -49.5 -143t-149.5 -46q-88 0 -129 31t-41 96z" />
-<glyph unicode="&#xd7;" horiz-adv-x="1159" d="M102 1010l187 190l289 -285l292 285l191 -184l-293 -293l287 -291l-185 -188l-292 288l-289 -286l-185 188l283 289z" />
-<glyph unicode="&#xd8;" horiz-adv-x="1509" d="M94 31l117 145q-107 141 -107 367q0 262 101 484.5t275.5 340t398.5 117.5q182 0 315 -72l92 115l156 -119l-99 -125q103 -143 103 -362q0 -258 -98.5 -480.5t-271 -342t-392.5 -119.5q-192 0 -324 69l-106 -135zM500 539l467 589q-45 33 -115 33q-94 0 -175 -82 t-129 -224t-48 -306v-10zM586 332q46 -29 114 -29q95 0 176 81.5t128 222.5t47 308z" />
-<glyph unicode="&#xd9;" horiz-adv-x="1436" d="M125 410q0 64 12 129l199 923h391l-195 -913q-14 -68 -14 -115q0 -127 121 -127q94 0 147.5 64.5t81.5 197.5l191 893h391l-199 -932q-59 -281 -225 -415.5t-451 -134.5q-134 0 -236.5 55t-158 154t-55.5 221zM555 1886v21h396q29 -157 94 -303v-25h-236q-82 75 -152 159 t-102 148z" />
-<glyph unicode="&#xda;" horiz-adv-x="1436" d="M125 410q0 64 12 129l199 923h391l-195 -913q-14 -68 -14 -115q0 -127 121 -127q94 0 147.5 64.5t81.5 197.5l191 893h391l-199 -932q-59 -281 -225 -415.5t-451 -134.5q-134 0 -236.5 55t-158 154t-55.5 221zM725 1579v23q123 102 282 305h439v-15q-45 -54 -191.5 -157 t-245.5 -156h-284z" />
-<glyph unicode="&#xdb;" horiz-adv-x="1436" d="M125 410q0 64 12 129l199 923h391l-195 -913q-14 -68 -14 -115q0 -127 121 -127q94 0 147.5 64.5t81.5 197.5l191 893h391l-199 -932q-59 -281 -225 -415.5t-451 -134.5q-134 0 -236.5 55t-158 154t-55.5 221zM440 1579v23q79 72 170 162.5t139 142.5h447 q26 -59 78 -149.5t102 -155.5v-23h-266q-46 41 -156 174q-140 -110 -240 -174h-274z" />
-<glyph unicode="&#xdc;" horiz-adv-x="1436" d="M125 410q0 64 12 129l199 923h391l-195 -913q-14 -68 -14 -115q0 -127 121 -127q94 0 147.5 64.5t81.5 197.5l191 893h391l-199 -932q-59 -281 -225 -415.5t-451 -134.5q-134 0 -236.5 55t-158 154t-55.5 221zM533 1722q0 187 201 187q170 0 170 -125q0 -189 -201 -189 q-88 0 -129 31t-41 96zM1020 1722q0 187 201 187q168 0 168 -125q0 -97 -49.5 -143t-149.5 -46q-88 0 -129 31t-41 96z" />
-<glyph unicode="&#xdd;" horiz-adv-x="1237" d="M164 1462h403l90 -542l312 542h436l-612 -895l-121 -567h-391l120 567zM615 1579v23q123 102 282 305h439v-15q-45 -54 -191.5 -157t-245.5 -156h-284z" />
-<glyph unicode="&#xde;" horiz-adv-x="1276" d="M33 0l309 1462h391l-45 -211q251 0 385.5 -114t134.5 -326q0 -250 -170.5 -393.5t-470.5 -143.5h-86l-57 -274h-391zM551 594h63q94 0 148.5 49t54.5 156q0 58 -41.5 95.5t-107.5 37.5h-45z" />
-<glyph unicode="&#xdf;" horiz-adv-x="1460" d="M-260 -162q63 -18 117 -18q74 0 111.5 30t51.5 95l244 1151q53 249 201.5 360t417.5 111q243 0 379.5 -99t136.5 -274q0 -118 -51 -198t-162 -132q-117 -56 -117 -102q0 -29 20.5 -50.5t87.5 -56.5q95 -51 140 -118t45 -164q0 -117 -58.5 -205.5t-170 -138t-271.5 -49.5 q-161 0 -274 45v299q59 -29 136.5 -45.5t133.5 -16.5q59 0 87 22t28 50q0 32 -19.5 53.5t-113.5 83.5q-88 56 -127 111.5t-39 130.5q0 92 42 150.5t165 125.5q71 40 100 76t29 80q0 58 -41.5 88.5t-116.5 30.5q-78 0 -132.5 -50t-74.5 -147l-252 -1184 q-43 -192 -153.5 -283.5t-292.5 -91.5q-110 0 -207 27v303z" />
-<glyph unicode="&#xe0;" d="M84 412q0 179 73 365t184.5 281t246.5 95q84 0 148 -37.5t114 -122.5h8l53 140h310l-240 -1133h-309l10 123h-8q-56 -78 -121 -110.5t-147 -32.5q-158 0 -240 111.5t-82 320.5zM479 434q0 -143 86 -143q50 0 95.5 58.5t72.5 156.5t27 192q0 65 -20 104.5t-62 39.5 q-76 0 -137.5 -126.5t-61.5 -281.5zM400 1548v21h396q29 -157 94 -303v-25h-236q-82 75 -152 159t-102 148z" />
-<glyph unicode="&#xe1;" d="M84 412q0 179 73 365t184.5 281t246.5 95q84 0 148 -37.5t114 -122.5h8l53 140h310l-240 -1133h-309l10 123h-8q-56 -78 -121 -110.5t-147 -32.5q-158 0 -240 111.5t-82 320.5zM479 434q0 -143 86 -143q50 0 95.5 58.5t72.5 156.5t27 192q0 65 -20 104.5t-62 39.5 q-76 0 -137.5 -126.5t-61.5 -281.5zM531 1241v23q123 102 282 305h439v-15q-45 -54 -191.5 -157t-245.5 -156h-284z" />
-<glyph unicode="&#xe2;" d="M84 412q0 179 73 365t184.5 281t246.5 95q84 0 148 -37.5t114 -122.5h8l53 140h310l-240 -1133h-309l10 123h-8q-56 -78 -121 -110.5t-147 -32.5q-158 0 -240 111.5t-82 320.5zM479 434q0 -143 86 -143q50 0 95.5 58.5t72.5 156.5t27 192q0 65 -20 104.5t-62 39.5 q-76 0 -137.5 -126.5t-61.5 -281.5zM262 1238v23q79 72 170 162.5t139 142.5h447q26 -59 78 -149.5t102 -155.5v-23h-266q-46 41 -156 174q-140 -110 -240 -174h-274z" />
-<glyph unicode="&#xe3;" d="M84 412q0 179 73 365t184.5 281t246.5 95q84 0 148 -37.5t114 -122.5h8l53 140h310l-240 -1133h-309l10 123h-8q-56 -78 -121 -110.5t-147 -32.5q-158 0 -240 111.5t-82 320.5zM479 434q0 -143 86 -143q50 0 95.5 58.5t72.5 156.5t27 192q0 65 -20 104.5t-62 39.5 q-76 0 -137.5 -126.5t-61.5 -281.5zM301 1237q32 172 108.5 257t204.5 85q34 0 59.5 -6.5t94.5 -42.5q31 -17 66 -33t67 -16q78 0 115 100h190q-34 -172 -112.5 -257t-208.5 -85q-33 0 -65 8t-61 22t-46 23q-73 45 -127 45q-31 0 -60.5 -27t-36.5 -73h-188z" />
-<glyph unicode="&#xe4;" d="M84 412q0 179 73 365t184.5 281t246.5 95q84 0 148 -37.5t114 -122.5h8l53 140h310l-240 -1133h-309l10 123h-8q-56 -78 -121 -110.5t-147 -32.5q-158 0 -240 111.5t-82 320.5zM479 434q0 -143 86 -143q50 0 95.5 58.5t72.5 156.5t27 192q0 65 -20 104.5t-62 39.5 q-76 0 -137.5 -126.5t-61.5 -281.5zM331 1384q0 187 201 187q170 0 170 -125q0 -189 -201 -189q-88 0 -129 31t-41 96zM818 1384q0 187 201 187q168 0 168 -125q0 -97 -49.5 -143t-149.5 -46q-88 0 -129 31t-41 96z" />
-<glyph unicode="&#xe5;" d="M84 412q0 179 73 365t184.5 281t246.5 95q84 0 148 -37.5t114 -122.5h8l53 140h310l-240 -1133h-309l10 123h-8q-56 -78 -121 -110.5t-147 -32.5q-158 0 -240 111.5t-82 320.5zM479 434q0 -143 86 -143q50 0 95.5 58.5t72.5 156.5t27 192q0 65 -20 104.5t-62 39.5 q-76 0 -137.5 -126.5t-61.5 -281.5zM488 1489q0 114 73.5 184t195.5 70q118 0 193 -70.5t75 -181.5q0 -113 -74.5 -183.5t-193.5 -70.5q-121 0 -195 68.5t-74 183.5zM668 1489q0 -37 23.5 -60.5t65.5 -23.5q39 0 63.5 25t24.5 59q0 38 -26.5 62t-61.5 24q-36 0 -62.5 -24 t-26.5 -62z" />
-<glyph unicode="&#xe6;" horiz-adv-x="1788" d="M84 412q0 179 73 365t184.5 281t246.5 95q92 0 152 -38t110 -122h8l53 140h207v-95q58 56 132.5 85.5t146.5 29.5q157 0 251.5 -86.5t94.5 -228.5q0 -201 -157 -308.5t-451 -107.5h-60v-16q0 -148 164 -148q79 0 155 23.5t173 74.5v-274q-99 -58 -182.5 -80t-192.5 -22 q-179 0 -262 112l-31 -92h-227l10 123h-8q-56 -78 -121 -110.5t-147 -32.5q-158 0 -240 111.5t-82 320.5zM479 434q0 -143 86 -143q76 0 134.5 123t58.5 284q0 65 -23 104.5t-65 39.5q-49 0 -93 -57.5t-71 -155t-27 -195.5zM1114 664h29q109 0 171 41.5t62 109.5 q0 32 -20 54t-64 22q-61 0 -114 -69.5t-64 -157.5z" />
-<glyph unicode="&#xe7;" horiz-adv-x="1032" d="M84 442q0 201 76.5 364.5t215 255t314.5 91.5q195 0 367 -80l-123 -287q-133 60 -225 60q-62 0 -115 -48t-87 -143.5t-34 -187.5q0 -91 30 -133.5t95 -42.5q72 0 139.5 23t143.5 63v-307q-80 -44 -168.5 -67t-206.5 -23q-199 0 -310.5 120.5t-111.5 341.5zM176 -258 q30 -9 78.5 -18t72.5 -9q68 0 68 49q0 73 -145 101l75 135h205l-24 -41q178 -37 178 -195q0 -121 -82.5 -188.5t-233.5 -67.5q-115 0 -192 29v205z" />
-<glyph unicode="&#xe8;" horiz-adv-x="1186" d="M84 428q0 211 83.5 380.5t229 257t336.5 87.5q190 0 299 -86t109 -229q0 -201 -156.5 -308.5t-452.5 -107.5h-59v-16q0 -148 164 -148q79 0 155 23.5t173 74.5v-274q-112 -57 -209 -79.5t-224 -22.5q-212 0 -330 118.5t-118 329.5zM512 664h29q109 0 171 41.5t62 109.5 q0 32 -20 54t-64 22q-61 0 -114 -69.5t-64 -157.5zM429 1548v21h396q29 -157 94 -303v-25h-236q-82 75 -152 159t-102 148z" />
-<glyph unicode="&#xe9;" horiz-adv-x="1186" d="M84 428q0 211 83.5 380.5t229 257t336.5 87.5q190 0 299 -86t109 -229q0 -201 -156.5 -308.5t-452.5 -107.5h-59v-16q0 -148 164 -148q79 0 155 23.5t173 74.5v-274q-112 -57 -209 -79.5t-224 -22.5q-212 0 -330 118.5t-118 329.5zM512 664h29q109 0 171 41.5t62 109.5 q0 32 -20 54t-64 22q-61 0 -114 -69.5t-64 -157.5zM523 1241v23q123 102 282 305h439v-15q-45 -54 -191.5 -157t-245.5 -156h-284z" />
-<glyph unicode="&#xea;" horiz-adv-x="1186" d="M84 428q0 211 83.5 380.5t229 257t336.5 87.5q190 0 299 -86t109 -229q0 -201 -156.5 -308.5t-452.5 -107.5h-59v-16q0 -148 164 -148q79 0 155 23.5t173 74.5v-274q-112 -57 -209 -79.5t-224 -22.5q-212 0 -330 118.5t-118 329.5zM512 664h29q109 0 171 41.5t62 109.5 q0 32 -20 54t-64 22q-61 0 -114 -69.5t-64 -157.5zM277 1241v23q79 72 170 162.5t139 142.5h447q26 -59 78 -149.5t102 -155.5v-23h-266q-46 41 -156 174q-140 -110 -240 -174h-274z" />
-<glyph unicode="&#xeb;" horiz-adv-x="1186" d="M84 428q0 211 83.5 380.5t229 257t336.5 87.5q190 0 299 -86t109 -229q0 -201 -156.5 -308.5t-452.5 -107.5h-59v-16q0 -148 164 -148q79 0 155 23.5t173 74.5v-274q-112 -57 -209 -79.5t-224 -22.5q-212 0 -330 118.5t-118 329.5zM512 664h29q109 0 171 41.5t62 109.5 q0 32 -20 54t-64 22q-61 0 -114 -69.5t-64 -157.5zM336 1384q0 187 201 187q170 0 170 -125q0 -189 -201 -189q-88 0 -129 31t-41 96zM823 1384q0 187 201 187q168 0 168 -125q0 -97 -49.5 -143t-149.5 -46q-88 0 -129 31t-41 96z" />
-<glyph unicode="&#xec;" horiz-adv-x="666" d="M23 0l239 1133h389l-241 -1133h-387zM167 1548v21h396q29 -157 94 -303v-25h-236q-82 75 -152 159t-102 148z" />
-<glyph unicode="&#xed;" horiz-adv-x="666" d="M23 0l239 1133h389l-241 -1133h-387zM294 1241v23q123 102 282 305h439v-15q-45 -54 -191.5 -157t-245.5 -156h-284z" />
-<glyph unicode="&#xee;" horiz-adv-x="666" d="M23 0l239 1133h389l-241 -1133h-387zM-7 1241v23q79 72 170 162.5t139 142.5h447q26 -59 78 -149.5t102 -155.5v-23h-266q-46 41 -156 174q-140 -110 -240 -174h-274z" />
-<glyph unicode="&#xef;" horiz-adv-x="666" d="M23 0l239 1133h389l-241 -1133h-387zM91 1384q0 187 201 187q170 0 170 -125q0 -189 -201 -189q-88 0 -129 31t-41 96zM578 1384q0 187 201 187q168 0 168 -125q0 -97 -49.5 -143t-149.5 -46q-88 0 -129 31t-41 96z" />
-<glyph unicode="&#xf0;" horiz-adv-x="1155" d="M84 426q0 170 62.5 305t178.5 209t267 74q130 0 203 -88l10 4q-19 142 -90 246l-273 -127l-82 168l220 102q-29 25 -95 74l115 180q136 -61 231 -137l238 110l82 -166l-184 -90q71 -88 114 -249t43 -324q0 -360 -154.5 -548.5t-449.5 -188.5q-201 0 -318.5 119 t-117.5 327zM471 408q0 -148 84 -148q53 0 93 44.5t63.5 119t23.5 147.5q0 76 -18.5 119t-65.5 43q-81 0 -130.5 -101t-49.5 -224z" />
-<glyph unicode="&#xf1;" horiz-adv-x="1274" d="M23 0l239 1133h309l-12 -158h8q55 95 129.5 136.5t182.5 41.5q141 0 220 -85.5t79 -236.5q0 -106 -25 -229l-127 -602h-387l129 618q18 78 18 142q0 43 -22 64.5t-53 21.5q-57 0 -105.5 -71t-79.5 -222l-116 -553h-387zM319 1237q32 172 108.5 257t204.5 85 q34 0 59.5 -6.5t94.5 -42.5q31 -17 66 -33t67 -16q78 0 115 100h190q-34 -172 -112.5 -257t-208.5 -85q-33 0 -65 8t-61 22t-46 23q-73 45 -127 45q-31 0 -60.5 -27t-36.5 -73h-188z" />
-<glyph unicode="&#xf2;" d="M84 416q0 210 79.5 379.5t223.5 263.5t336 94q209 0 322.5 -113t113.5 -323t-79.5 -379.5t-223.5 -263.5t-336 -94q-209 0 -322.5 113t-113.5 323zM479 403q0 -133 84 -133q81 0 141 139t60 320q0 66 -23 99.5t-63 33.5q-82 0 -140.5 -139.5t-58.5 -319.5zM404 1548v21 h396q29 -157 94 -303v-25h-236q-82 75 -152 159t-102 148z" />
-<glyph unicode="&#xf3;" d="M84 416q0 210 79.5 379.5t223.5 263.5t336 94q209 0 322.5 -113t113.5 -323t-79.5 -379.5t-223.5 -263.5t-336 -94q-209 0 -322.5 113t-113.5 323zM479 403q0 -133 84 -133q81 0 141 139t60 320q0 66 -23 99.5t-63 33.5q-82 0 -140.5 -139.5t-58.5 -319.5zM533 1241v23 q123 102 282 305h439v-15q-45 -54 -191.5 -157t-245.5 -156h-284z" />
-<glyph unicode="&#xf4;" d="M84 416q0 210 79.5 379.5t223.5 263.5t336 94q209 0 322.5 -113t113.5 -323t-79.5 -379.5t-223.5 -263.5t-336 -94q-209 0 -322.5 113t-113.5 323zM479 403q0 -133 84 -133q81 0 141 139t60 320q0 66 -23 99.5t-63 33.5q-82 0 -140.5 -139.5t-58.5 -319.5zM247 1241v23 q79 72 170 162.5t139 142.5h447q26 -59 78 -149.5t102 -155.5v-23h-266q-46 41 -156 174q-140 -110 -240 -174h-274z" />
-<glyph unicode="&#xf5;" d="M84 416q0 210 79.5 379.5t223.5 263.5t336 94q209 0 322.5 -113t113.5 -323t-79.5 -379.5t-223.5 -263.5t-336 -94q-209 0 -322.5 113t-113.5 323zM479 403q0 -133 84 -133q81 0 141 139t60 320q0 66 -23 99.5t-63 33.5q-82 0 -140.5 -139.5t-58.5 -319.5zM277 1237 q32 172 108.5 257t204.5 85q34 0 59.5 -6.5t94.5 -42.5q31 -17 66 -33t67 -16q78 0 115 100h190q-34 -172 -112.5 -257t-208.5 -85q-33 0 -65 8t-61 22t-46 23q-73 45 -127 45q-31 0 -60.5 -27t-36.5 -73h-188z" />
-<glyph unicode="&#xf6;" d="M84 416q0 210 79.5 379.5t223.5 263.5t336 94q209 0 322.5 -113t113.5 -323t-79.5 -379.5t-223.5 -263.5t-336 -94q-209 0 -322.5 113t-113.5 323zM479 403q0 -133 84 -133q81 0 141 139t60 320q0 66 -23 99.5t-63 33.5q-82 0 -140.5 -139.5t-58.5 -319.5zM317 1384 q0 187 201 187q170 0 170 -125q0 -189 -201 -189q-88 0 -129 31t-41 96zM804 1384q0 187 201 187q168 0 168 -125q0 -97 -49.5 -143t-149.5 -46q-88 0 -129 31t-41 96z" />
-<glyph unicode="&#xf7;" horiz-adv-x="1159" d="M102 586v272h975v-272h-975zM432 373q0 83 41 127.5t117 44.5q74 0 114.5 -44.5t40.5 -127.5q0 -81 -41.5 -126.5t-113.5 -45.5q-74 0 -116 46t-42 126zM432 1071q0 83 41 127.5t117 44.5q74 0 114.5 -44.5t40.5 -127.5q0 -81 -41.5 -126.5t-113.5 -45.5q-74 0 -116 46 t-42 126z" />
-<glyph unicode="&#xf8;" horiz-adv-x="1286" d="M66 -2l112 131q-94 117 -94 287q0 207 81.5 377.5t230.5 265t347 94.5q136 0 250 -57l105 121l127 -109l-105 -123q82 -114 82 -268q0 -208 -81 -377.5t-229 -264.5t-343 -95q-127 0 -238 49l-118 -140zM449 451l335 397q-35 29 -82 29q-67 0 -125 -55t-92 -153t-36 -218 zM518 274q29 -14 72 -14q107 0 172 101.5t74 287.5z" />
-<glyph unicode="&#xf9;" horiz-adv-x="1274" d="M96 301q0 106 25 229l127 603h387l-129 -617q-19 -82 -19 -141q0 -44 22.5 -65t53.5 -21q59 0 107.5 78.5t77.5 214.5l116 551h387l-239 -1133h-310l13 158h-8q-54 -93 -128.5 -135.5t-183.5 -42.5q-141 0 -220 85.5t-79 235.5zM412 1548v21h396q29 -157 94 -303v-25 h-236q-82 75 -152 159t-102 148z" />
-<glyph unicode="&#xfa;" horiz-adv-x="1274" d="M96 301q0 106 25 229l127 603h387l-129 -617q-19 -82 -19 -141q0 -44 22.5 -65t53.5 -21q59 0 107.5 78.5t77.5 214.5l116 551h387l-239 -1133h-310l13 158h-8q-54 -93 -128.5 -135.5t-183.5 -42.5q-141 0 -220 85.5t-79 235.5zM584 1241v23q123 102 282 305h439v-15 q-45 -54 -191.5 -157t-245.5 -156h-284z" />
-<glyph unicode="&#xfb;" horiz-adv-x="1274" d="M96 301q0 106 25 229l127 603h387l-129 -617q-19 -82 -19 -141q0 -44 22.5 -65t53.5 -21q59 0 107.5 78.5t77.5 214.5l116 551h387l-239 -1133h-310l13 158h-8q-54 -93 -128.5 -135.5t-183.5 -42.5q-141 0 -220 85.5t-79 235.5zM285 1241v23q79 72 170 162.5t139 142.5 h447q26 -59 78 -149.5t102 -155.5v-23h-266q-46 41 -156 174q-140 -110 -240 -174h-274z" />
-<glyph unicode="&#xfc;" horiz-adv-x="1274" d="M96 301q0 106 25 229l127 603h387l-129 -617q-19 -82 -19 -141q0 -44 22.5 -65t53.5 -21q59 0 107.5 78.5t77.5 214.5l116 551h387l-239 -1133h-310l13 158h-8q-54 -93 -128.5 -135.5t-183.5 -42.5q-141 0 -220 85.5t-79 235.5zM371 1384q0 187 201 187q170 0 170 -125 q0 -189 -201 -189q-88 0 -129 31t-41 96zM858 1384q0 187 201 187q168 0 168 -125q0 -97 -49.5 -143t-149.5 -46q-88 0 -129 31t-41 96z" />
-<glyph unicode="&#xfd;" horiz-adv-x="1114" d="M-129 -168q46 -12 109 -12q87 0 142.5 36.5t98.5 114.5l23 41l-162 1121h389l43 -562l2 -62v-87h8q37 132 50 165.5t239 545.5h416l-670 -1276q-96 -185 -223 -267t-311 -82q-92 0 -154 17v307zM492 1241v23q123 102 282 305h439v-15q-45 -54 -191.5 -157t-245.5 -156 h-284z" />
-<glyph unicode="&#xfe;" d="M-82 -492l434 2048h387l-49 -231q-38 -175 -90 -301h8q44 59 96.5 94t131.5 35q151 0 237 -112t86 -306q0 -203 -70 -382.5t-185.5 -276t-252.5 -96.5q-143 0 -231 145h-8q-12 -166 -56 -371l-51 -246h-387zM485 434q0 -65 23 -104t65 -39q48 0 92 57t71.5 153t27.5 197 q0 144 -86 144q-50 0 -95 -57t-71.5 -154t-26.5 -197z" />
-<glyph unicode="&#xff;" horiz-adv-x="1114" d="M-129 -168q46 -12 109 -12q87 0 142.5 36.5t98.5 114.5l23 41l-162 1121h389l43 -562l2 -62v-87h8q37 132 50 165.5t239 545.5h416l-670 -1276q-96 -185 -223 -267t-311 -82q-92 0 -154 17v307zM259 1384q0 187 201 187q170 0 170 -125q0 -189 -201 -189q-88 0 -129 31 t-41 96zM746 1384q0 187 201 187q168 0 168 -125q0 -97 -49.5 -143t-149.5 -46q-88 0 -129 31t-41 96z" />
-<glyph unicode="&#x131;" horiz-adv-x="666" d="M23 0l239 1133h389l-241 -1133h-387z" />
-<glyph unicode="&#x152;" horiz-adv-x="1909" d="M104 528q0 196 58.5 379t164.5 313t252.5 197.5t323.5 67.5q94 0 191 -23h874l-67 -319h-478l-47 -225h445l-72 -322h-444l-58 -272h477l-65 -324h-815q-104 -20 -197 -20q-256 0 -399.5 146.5t-143.5 401.5zM500 526q0 -217 182 -217q96 0 180 41l162 762 q-53 49 -154 49q-96 0 -182.5 -88t-137 -235t-50.5 -312z" />
-<glyph unicode="&#x153;" horiz-adv-x="1802" d="M84 416q0 209 79 380t217.5 264t319.5 93q187 0 277 -125q144 125 373 125q188 0 297.5 -86t109.5 -229q0 -203 -157 -309.5t-451 -106.5h-59v-16q0 -148 163 -148q79 0 155 23.5t173 74.5v-274q-114 -58 -210.5 -80t-221.5 -22q-203 0 -295 112q-124 -112 -334 -112 q-209 0 -322.5 113t-113.5 323zM479 403q0 -133 84 -133q81 0 141 139t60 320q0 66 -23 99.5t-63 33.5q-82 0 -140.5 -139.5t-58.5 -319.5zM1128 664h29q110 0 172 41t62 110q0 32 -20.5 54t-63.5 22q-60 0 -112.5 -68t-66.5 -159z" />
-<glyph unicode="&#x178;" horiz-adv-x="1237" d="M164 1462h403l90 -542l312 542h436l-612 -895l-121 -567h-391l120 567zM397 1722q0 187 201 187q170 0 170 -125q0 -189 -201 -189q-88 0 -129 31t-41 96zM884 1722q0 187 201 187q168 0 168 -125q0 -97 -49.5 -143t-149.5 -46q-88 0 -129 31t-41 96z" />
-<glyph unicode="&#x2c6;" horiz-adv-x="1135" d="M254 1241v23q79 72 170 162.5t139 142.5h447q26 -59 78 -149.5t102 -155.5v-23h-266q-46 41 -156 174q-140 -110 -240 -174h-274z" />
-<glyph unicode="&#x2da;" horiz-adv-x="1182" d="M522 1489q0 114 73.5 184t195.5 70q118 0 193 -70.5t75 -181.5q0 -113 -74.5 -183.5t-193.5 -70.5q-121 0 -195 68.5t-74 183.5zM702 1489q0 -37 23.5 -60.5t65.5 -23.5q39 0 63.5 25t24.5 59q0 38 -26.5 62t-61.5 24q-36 0 -62.5 -24t-26.5 -62z" />
-<glyph unicode="&#x2dc;" horiz-adv-x="1135" d="M301 1237q32 172 108.5 257t204.5 85q34 0 59.5 -6.5t94.5 -42.5q31 -17 66 -33t67 -16q78 0 115 100h190q-34 -172 -112.5 -257t-208.5 -85q-33 0 -65 8t-61 22t-46 23q-73 45 -127 45q-31 0 -60.5 -27t-36.5 -73h-188z" />
-<glyph unicode="&#x2000;" horiz-adv-x="959" />
-<glyph unicode="&#x2001;" horiz-adv-x="1919" />
-<glyph unicode="&#x2002;" horiz-adv-x="959" />
-<glyph unicode="&#x2003;" horiz-adv-x="1919" />
-<glyph unicode="&#x2004;" horiz-adv-x="639" />
-<glyph unicode="&#x2005;" horiz-adv-x="479" />
-<glyph unicode="&#x2006;" horiz-adv-x="319" />
-<glyph unicode="&#x2007;" horiz-adv-x="319" />
-<glyph unicode="&#x2008;" horiz-adv-x="239" />
-<glyph unicode="&#x2009;" horiz-adv-x="383" />
-<glyph unicode="&#x200a;" horiz-adv-x="106" />
-<glyph unicode="&#x2010;" horiz-adv-x="674" d="M23 393l63 312h553l-64 -312h-552z" />
-<glyph unicode="&#x2011;" horiz-adv-x="674" d="M23 393l63 312h553l-64 -312h-552z" />
-<glyph unicode="&#x2012;" horiz-adv-x="674" d="M23 393l63 312h553l-64 -312h-552z" />
-<glyph unicode="&#x2013;" horiz-adv-x="983" d="M33 416l57 274h871l-60 -274h-868z" />
-<glyph unicode="&#x2014;" horiz-adv-x="1966" d="M33 416l57 274h1854l-60 -274h-1851z" />
-<glyph unicode="&#x2018;" horiz-adv-x="500" d="M109 983q104 235 258 479h288q-26 -62 -53 -131t-135 -370h-348z" />
-<glyph unicode="&#x2019;" horiz-adv-x="500" d="M94 961q34 81 67.5 167.5t121.5 333.5h348l8 -22q-92 -212 -256 -479h-289z" />
-<glyph unicode="&#x201a;" horiz-adv-x="621" d="M-104 -264q25 59 50 123t138 379h348l8 -23q-94 -223 -256 -479h-288z" />
-<glyph unicode="&#x201c;" horiz-adv-x="997" d="M109 983q104 235 258 479h288q-26 -62 -53 -131t-135 -370h-348zM606 983q109 246 256 479h289q-49 -115 -100 -258l-88 -243h-349z" />
-<glyph unicode="&#x201d;" horiz-adv-x="997" d="M94 961q49 117 100 258l89 243h348l8 -22q-92 -212 -256 -479h-289zM592 961q41 98 99 258l89 243h348l7 -22q-39 -91 -110 -226t-144 -253h-289z" />
-<glyph unicode="&#x201e;" horiz-adv-x="1122" d="M-104 -264q25 59 50 123t138 379h348l8 -23q-94 -223 -256 -479h-288zM397 -264q61 148 147 387l42 115h348l8 -23q-51 -116 -124.5 -251t-133.5 -228h-287z" />
-<glyph unicode="&#x2022;" horiz-adv-x="803" d="M86 688q0 118 47 214t133.5 150t200.5 54q148 0 221.5 -77.5t73.5 -223.5q0 -194 -101.5 -305t-281.5 -111q-137 0 -215 80t-78 219zM594 1133z" />
-<glyph unicode="&#x2026;" horiz-adv-x="1800" d="M12 127q0 109 65 171t179 62q84 0 132 -40t48 -115q0 -118 -60 -174t-190 -56q-78 0 -126 37t-48 115zM600 127q0 109 65 171t179 62q84 0 132 -40t48 -115q0 -118 -60 -174t-190 -56q-78 0 -126 37t-48 115zM1186 127q0 109 65 171t179 62q84 0 132 -40t48 -115 q0 -118 -60 -174t-190 -56q-78 0 -126 37t-48 115z" />
-<glyph unicode="&#x202f;" horiz-adv-x="383" />
-<glyph unicode="&#x2039;" horiz-adv-x="719" d="M61 553v10l408 518l264 -204l-266 -334l111 -330l-334 -137z" />
-<glyph unicode="&#x203a;" horiz-adv-x="719" d="M-14 248l266 334l-111 329l332 138l184 -478v-10l-407 -518z" />
-<glyph unicode="&#x2044;" horiz-adv-x="248" d="M-563 0l1089 1462h291l-1083 -1462h-297z" />
-<glyph unicode="&#x205f;" horiz-adv-x="479" />
-<glyph unicode="&#x2074;" horiz-adv-x="848" d="M16 707l31 178l490 577h325l-119 -557h113l-41 -198h-113l-26 -123h-289l27 123h-398zM293 905h162q62 239 73 274t15 44q-13 -18 -35 -48.5t-215 -269.5z" />
-<glyph unicode="&#x20ac;" horiz-adv-x="1188" d="M53 451l43 204h109l22 123h-106l47 205h117q84 243 243 373.5t377 130.5q115 0 202 -25t173 -80l-154 -282q-120 78 -221 78q-142 0 -219 -195h297l-45 -205h-309q-18 -59 -25 -123h246l-43 -204h-227q0 -82 27.5 -113t105.5 -31q75 0 145 18.5t148 49.5v-330 q-126 -65 -355 -65q-231 0 -341.5 114t-116.5 357h-140z" />
-<glyph unicode="&#x2122;" horiz-adv-x="1577" d="M102 1286v176h537v-176h-170v-545h-197v545h-170zM711 741v721h286l138 -479l149 479h277v-721h-195v400q0 74 6 110h-8l-152 -510h-163l-144 510h-8q6 -64 6 -110v-400h-192z" />
-<glyph unicode="&#xe000;" horiz-adv-x="1135" d="M0 1135h1135v-1135h-1135v1135z" />
-<glyph unicode="&#xfb01;" horiz-adv-x="1505" d="M-209 -162q63 -18 117 -18q74 0 112 30t52 95l190 897h-166l43 190l189 96l16 74q43 192 146.5 278.5t275.5 86.5q80 0 155 -16t128 -42l-99 -264q-64 31 -129 31q-35 0 -59.5 -18.5t-32.5 -53.5l-16 -71h211l-66 -291h-209l-205 -959q-43 -192 -153.5 -283.5 t-292.5 -91.5q-110 0 -207 27v303zM863 0l239 1133h389l-241 -1133h-387zM1149 1382q0 103 59.5 156t166.5 53q91 0 140.5 -36.5t49.5 -104.5q0 -100 -58 -154.5t-167 -54.5q-191 0 -191 141z" />
-<glyph unicode="&#xfb02;" horiz-adv-x="1505" d="M-209 -162q63 -18 117 -18q74 0 112 30t52 95l190 897h-166l43 190l189 96l16 74q43 192 146.5 278.5t275.5 86.5q80 0 155 -16t128 -42l-99 -264q-64 31 -129 31q-35 0 -59.5 -18.5t-32.5 -53.5l-16 -71h211l-66 -291h-209l-205 -959q-43 -192 -153.5 -283.5 t-292.5 -91.5q-110 0 -207 27v303zM863 0l329 1556h387l-329 -1556h-387z" />
-<glyph unicode="&#xfb03;" horiz-adv-x="2163" d="M-209 -162q63 -18 117 -18q74 0 112 30t52 95l190 897h-166l43 190l189 96l16 74q43 192 146.5 278.5t275.5 86.5q80 0 155 -16t128 -42l-99 -264q-64 31 -129 31q-35 0 -59.5 -18.5t-32.5 -53.5l-16 -71h331l17 69q41 185 142.5 275t279.5 90q80 0 155 -16t127 -42 l-98 -264q-64 31 -129 31q-35 0 -59.5 -18.5t-32.5 -53.5l-16 -71h210l-65 -291h-209l-205 -959q-43 -192 -153.5 -283.5t-292.5 -91.5q-110 0 -207 27v303q63 -18 117 -18q74 0 111.5 30t51.5 95l191 897h-330l-205 -959q-43 -192 -153.5 -283.5t-292.5 -91.5 q-110 0 -207 27v303zM1520 0l239 1133h389l-241 -1133h-387zM1806 1382q0 103 59.5 156t166.5 53q91 0 140.5 -36.5t49.5 -104.5q0 -100 -58 -154.5t-167 -54.5q-191 0 -191 141z" />
-<glyph unicode="&#xfb04;" horiz-adv-x="2159" d="M-209 -162q63 -18 117 -18q74 0 112 30t52 95l190 897h-166l43 190l189 96l16 74q43 192 146.5 278.5t275.5 86.5q80 0 155 -16t128 -42l-99 -264q-64 31 -129 31q-35 0 -59.5 -18.5t-32.5 -53.5l-16 -71h331l17 69q41 185 142.5 275t279.5 90q80 0 155 -16t127 -42 l-98 -264q-64 31 -129 31q-35 0 -59.5 -18.5t-32.5 -53.5l-16 -71h210l-65 -291h-209l-205 -959q-43 -192 -153.5 -283.5t-292.5 -91.5q-110 0 -207 27v303q63 -18 117 -18q74 0 111.5 30t51.5 95l191 897h-330l-205 -959q-43 -192 -153.5 -283.5t-292.5 -91.5 q-110 0 -207 27v303zM1516 0l329 1556h387l-329 -1556h-387z" />
-</font>
-</defs></svg> \ No newline at end of file
diff --git a/admin/survey/Fonts/OpenSans/OpenSans-ExtraBoldItalic-webfont.ttf b/admin/survey/Fonts/OpenSans/OpenSans-ExtraBoldItalic-webfont.ttf
deleted file mode 100644
index 7e636eb..0000000
--- a/admin/survey/Fonts/OpenSans/OpenSans-ExtraBoldItalic-webfont.ttf
+++ /dev/null
Binary files differ
diff --git a/admin/survey/Fonts/OpenSans/OpenSans-ExtraBoldItalic-webfont.woff b/admin/survey/Fonts/OpenSans/OpenSans-ExtraBoldItalic-webfont.woff
deleted file mode 100644
index f81b216..0000000
--- a/admin/survey/Fonts/OpenSans/OpenSans-ExtraBoldItalic-webfont.woff
+++ /dev/null
Binary files differ
diff --git a/admin/survey/Fonts/OpenSans/OpenSans-Italic-webfont.eot b/admin/survey/Fonts/OpenSans/OpenSans-Italic-webfont.eot
deleted file mode 100644
index c315952..0000000
--- a/admin/survey/Fonts/OpenSans/OpenSans-Italic-webfont.eot
+++ /dev/null
Binary files differ
diff --git a/admin/survey/Fonts/OpenSans/OpenSans-Italic-webfont.svg b/admin/survey/Fonts/OpenSans/OpenSans-Italic-webfont.svg
deleted file mode 100644
index be50857..0000000
--- a/admin/survey/Fonts/OpenSans/OpenSans-Italic-webfont.svg
+++ /dev/null
@@ -1,251 +0,0 @@
-<?xml version="1.0" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
-<svg xmlns="http://www.w3.org/2000/svg">
-<metadata>
-This is a custom SVG webfont generated by Font Squirrel.
-Copyright : Digitized data copyright 20102011 Google Corporation
-Foundry : Ascender Corporation
-Foundry URL : httpwwwascendercorpcom
-</metadata>
-<defs>
-<font id="OpenSansItalic" horiz-adv-x="1128" >
-<font-face units-per-em="2048" ascent="1638" descent="-410" />
-<missing-glyph horiz-adv-x="532" />
-<glyph unicode=" " horiz-adv-x="532" />
-<glyph unicode="&#x09;" horiz-adv-x="532" />
-<glyph unicode="&#xa0;" horiz-adv-x="532" />
-<glyph unicode="!" horiz-adv-x="530" d="M43 78q0 76 39.5 120t107.5 44q45 0 73 -27.5t28 -81.5q0 -68 -39 -115t-105 -47q-49 0 -76.5 28t-27.5 79zM172 403q49 307 176 1059h207l-274 -1059h-109z" />
-<glyph unicode="&#x22;" horiz-adv-x="791" d="M225 934l72 528h188l-153 -528h-107zM573 934l72 528h189l-154 -528h-107z" />
-<glyph unicode="#" horiz-adv-x="1323" d="M63 430l13 129h284l101 340h-277l13 127h301l123 436h139l-125 -436h305l127 436h133l-125 -436h264l-12 -127h-291l-98 -340h285l-13 -129h-309l-125 -430h-139l129 430h-303l-127 -430h-133l121 430h-261zM500 559h303l96 340h-303z" />
-<glyph unicode="$" d="M72 176v154q82 -41 175.5 -63.5t166.5 -22.5l98 452q-139 49 -201.5 123.5t-62.5 188.5q0 159 108 255t299 113l39 176h133l-39 -178q159 -12 283 -76l-63 -135q-121 63 -248 72l-94 -440q149 -55 212.5 -125t63.5 -178q0 -162 -112.5 -263t-309.5 -123l-49 -225h-133 l49 223q-195 14 -315 72zM401 1010q0 -53 34.5 -97.5t107.5 -70.5l84 393q-108 -11 -167 -69t-59 -156zM549 250q107 13 170 75t63 154q0 54 -33 96t-114 74z" />
-<glyph unicode="%" horiz-adv-x="1624" d="M168 860q0 166 50.5 318.5t136.5 228.5t200 76q116 0 176 -72t60 -205q0 -108 -32 -237.5t-82.5 -217.5t-120.5 -137t-157 -49q-109 0 -170 75t-61 220zM231 0l1086 1462h151l-1085 -1462h-152zM307 864q0 -172 107 -172q52 0 94 39.5t73.5 114t50.5 175t19 171.5 q0 166 -108 166q-66 0 -119 -63t-85 -187.5t-32 -243.5zM909 274q0 166 50.5 318.5t136.5 228.5t200 76q116 0 176 -71.5t60 -204.5q0 -107 -31.5 -236t-82 -217.5t-121 -138t-156.5 -49.5q-110 0 -171 74.5t-61 219.5zM1049 279q0 -173 106 -173q65 0 117 65t86.5 198.5 t34.5 236.5q0 166 -109 166q-67 0 -119.5 -64.5t-84 -188.5t-31.5 -240z" />
-<glyph unicode="&#x26;" horiz-adv-x="1372" d="M66 342q0 148 90 257.5t303 211.5q-103 165 -103 309q0 164 106 264.5t281 100.5q149 0 236.5 -79t87.5 -212q0 -78 -32.5 -137t-87.5 -108t-127.5 -90t-153.5 -83l278 -389q127 110 199 295h168q-101 -236 -283 -412l203 -270h-201l-117 166q-120 -100 -230 -143 t-247 -43q-168 0 -269 96t-101 266zM229 354q0 -106 66.5 -170.5t175.5 -64.5q87 0 168 33t195 124l-306 433q-128 -67 -184 -116t-85.5 -107.5t-29.5 -131.5zM516 1118q0 -120 82 -235q139 71 191 110t83 85t31 104q0 77 -42.5 121.5t-123.5 44.5q-105 0 -163 -60t-58 -170 z" />
-<glyph unicode="'" horiz-adv-x="444" d="M225 934l72 528h188l-153 -528h-107z" />
-<glyph unicode="(" horiz-adv-x="584" d="M82 272q0 339 120 627t384 563h157q-246 -270 -371.5 -570t-125.5 -618q0 -339 114 -598h-131q-147 266 -147 596z" />
-<glyph unicode=")" horiz-adv-x="584" d="M-160 -324q496 551 496 1188q0 341 -113 598h131q146 -269 146 -598q0 -341 -121.5 -629.5t-382.5 -558.5h-156z" />
-<glyph unicode="*" horiz-adv-x="1130" d="M215 1194l55 154l371 -185l41 400l172 -35l-123 -383l422 18l-8 -157l-393 47l180 -383l-166 -52l-113 406l-258 -344l-116 121l309 284z" />
-<glyph unicode="+" d="M127 651v142h389v391h141v-391h390v-142h-390v-387h-141v387h-389z" />
-<glyph unicode="," horiz-adv-x="492" d="M-100 -264q126 286 204 502h187l8 -23q-113 -235 -270 -479h-129z" />
-<glyph unicode="-" horiz-adv-x="639" d="M55 469l35 158h479l-34 -158h-480z" />
-<glyph unicode="." horiz-adv-x="518" d="M43 74q0 77 40.5 122.5t111.5 45.5q43 0 69.5 -26t26.5 -79q0 -71 -40 -118.5t-108 -47.5q-46 0 -73 26t-27 77z" />
-<glyph unicode="/" horiz-adv-x="717" d="M-94 0l813 1462h174l-813 -1462h-174z" />
-<glyph unicode="0" d="M121 477q0 270 82 514.5t216.5 369t307.5 124.5q365 0 365 -471q0 -295 -78.5 -539t-214 -369.5t-314.5 -125.5q-176 0 -270 127.5t-94 369.5zM293 479q0 -172 50 -264t161 -92q115 0 209 114t150.5 328t56.5 453q0 323 -203 323q-113 0 -209 -115.5t-155.5 -323 t-59.5 -423.5z" />
-<glyph unicode="1" d="M303 1178l449 284h149l-313 -1462h-172l196 913q59 261 88 359q-50 -53 -139 -111l-178 -110z" />
-<glyph unicode="2" d="M12 0l31 147l465 420q102 93 176.5 163.5t123 133t72 124t23.5 136.5q0 99 -60 157t-163 58q-77 0 -150.5 -28.5t-162.5 -96.5l-82 115q191 154 413 154q176 0 278.5 -88.5t102.5 -243.5q0 -111 -39.5 -204t-131 -197t-294.5 -281l-352 -307v-8h678l-29 -154h-899z" />
-<glyph unicode="3" d="M47 59v164q94 -49 199 -75.5t190 -26.5q162 0 252 79.5t90 217.5q0 131 -79 198.5t-220 67.5h-131l31 143h139q165 0 274 87t109 227q0 92 -58 146t-157 54q-80 0 -157 -27t-175 -93l-80 118q195 144 424 144q179 0 277 -87t98 -237q0 -156 -101 -264.5t-280 -140.5v-9 q124 -23 195 -106.5t71 -208.5q0 -133 -62 -234.5t-181 -158.5t-283 -57q-210 0 -385 79z" />
-<glyph unicode="4" d="M16 334l29 158l834 978h196l-207 -983h232l-33 -153h-233l-72 -334h-164l74 334h-656zM219 487h486q46 220 78 373t116 445h-8q-17 -29 -66.5 -96.5t-72.5 -96.5z" />
-<glyph unicode="5" d="M80 59v164q164 -102 334 -102q191 0 298 96t107 268q0 126 -73.5 199.5t-204.5 73.5q-48 0 -97 -6.5t-139 -30.5l-74 57l197 684h668l-33 -153h-522l-127 -439q87 23 184 23q182 0 289.5 -104.5t107.5 -282.5q0 -161 -73 -283t-204 -182.5t-308 -60.5q-193 0 -330 79z " />
-<glyph unicode="6" d="M133 424q0 209 60.5 415t163.5 351.5t246 219t327 73.5q111 0 184 -23l-35 -145q-68 22 -170 22q-212 0 -356.5 -149t-212.5 -443h8q59 79 146.5 126t193.5 47q154 0 244 -98.5t90 -270.5q0 -161 -66.5 -294.5t-180.5 -204t-261 -70.5q-182 0 -281.5 115t-99.5 329z M299 416q0 -137 60.5 -216t172.5 -79q94 0 167.5 54t114 149t40.5 208q0 248 -221 248q-66 0 -128 -28.5t-110 -76t-72 -104.5t-24 -155z" />
-<glyph unicode="7" d="M174 0l768 1313h-719l31 149h891l-27 -139l-764 -1323h-180z" />
-<glyph unicode="8" d="M96 346q0 148 95 256t296 184q-95 69 -135.5 144.5t-40.5 171.5q0 111 54.5 198.5t153.5 136t222 48.5q174 0 271.5 -86.5t97.5 -235.5q0 -129 -78 -225t-266 -176q127 -78 180 -165t53 -202q0 -122 -60 -217.5t-172.5 -146.5t-264.5 -51q-190 0 -298 98.5t-108 267.5z M270 354q0 -107 69 -170t181 -63q139 0 222 74t83 196q0 99 -52 174t-165 135q-185 -60 -261.5 -143.5t-76.5 -202.5zM479 1100q0 -82 39 -144t127 -116q161 60 228 131.5t67 173.5q0 90 -57.5 143t-153.5 53q-114 0 -182 -65.5t-68 -175.5z" />
-<glyph unicode="9" d="M98 14v158q134 -47 246 -47q202 0 327 141t189 441h-10q-51 -75 -132.5 -118.5t-180.5 -43.5q-169 0 -261 98.5t-92 288.5q0 153 64.5 280.5t180 199t259.5 71.5q180 0 279.5 -114.5t99.5 -334.5q0 -194 -56 -406.5t-147.5 -360t-221.5 -217.5t-302 -70q-136 0 -242 34z M350 938q0 -124 54.5 -190t162.5 -66q76 0 140 28.5t108.5 81.5t65 114t20.5 151q0 131 -59 207.5t-160 76.5q-150 0 -241 -113t-91 -290z" />
-<glyph unicode=":" horiz-adv-x="518" d="M43 74q0 77 40.5 122.5t111.5 45.5q43 0 69.5 -26t26.5 -79q0 -71 -40 -118.5t-108 -47.5q-46 0 -73 26t-27 77zM203 956q0 77 40 122.5t111 45.5q97 0 97 -104q0 -73 -41.5 -119.5t-106.5 -46.5q-46 0 -73 26.5t-27 75.5z" />
-<glyph unicode=";" horiz-adv-x="518" d="M-100 -264q126 286 204 502h187l8 -23q-113 -235 -270 -479h-129zM203 956q0 77 40 122.5t111 45.5q97 0 97 -104q0 -73 -41.5 -119.5t-106.5 -46.5q-46 0 -73 26.5t-27 75.5z" />
-<glyph unicode="&#x3c;" d="M121 664v98l919 479v-149l-747 -371l747 -328v-151z" />
-<glyph unicode="=" d="M127 444v142h920v-142h-920zM127 858v139h920v-139h-920z" />
-<glyph unicode="&#x3e;" d="M121 242v151l745 328l-745 371v149l919 -479v-98z" />
-<glyph unicode="?" horiz-adv-x="874" d="M158 74q0 77 40 122.5t111 45.5q44 0 70.5 -26t26.5 -79q0 -73 -41.5 -119.5t-106.5 -46.5q-46 0 -73 26t-27 77zM197 1382q92 51 192 76t182 25q167 0 259 -84t92 -238q0 -123 -65.5 -226.5t-225.5 -223.5q-125 -91 -169 -147.5t-67 -160.5h-135q22 130 72.5 213.5 t165.5 174.5q128 100 168 144t63 94t23 112q0 93 -51.5 143.5t-147.5 50.5q-81 0 -155 -25.5t-140 -56.5z" />
-<glyph unicode="@" horiz-adv-x="1735" d="M111 504q0 261 126.5 485.5t343.5 347.5t486 123q191 0 329 -75.5t210.5 -213.5t72.5 -319q0 -179 -55 -324t-155 -227t-222 -82q-197 0 -213 184h-8q-111 -184 -291 -184q-115 0 -180.5 75.5t-65.5 209.5q0 157 68 284t188.5 199t260.5 72q65 0 127.5 -12t150.5 -48 q-64 -242 -98 -368t-31 -172q0 -117 102 -117q78 0 141.5 67t100.5 183.5t37 243.5q0 239 -128 367t-370 128q-228 0 -406.5 -107t-277 -295.5t-98.5 -416.5q0 -270 143.5 -418.5t409.5 -148.5q197 0 420 86v-127q-219 -90 -443 -90q-314 0 -494.5 184.5t-180.5 505.5z M639 518q0 -93 33 -134.5t98 -41.5q187 0 272 315l70 258q-63 23 -127 23q-94 0 -174 -55t-126 -153t-46 -212z" />
-<glyph unicode="A" horiz-adv-x="1137" d="M-117 0l799 1462h174l184 -1462h-170l-57 465h-496l-245 -465h-189zM401 621h394l-35 299q-24 179 -29 350q-37 -88 -80.5 -175t-249.5 -474z" />
-<glyph unicode="B" horiz-adv-x="1225" d="M86 0l309 1462h375q432 0 432 -336q0 -141 -87 -238t-245 -126v-10q115 -32 176.5 -110.5t61.5 -188.5q0 -212 -152 -332.5t-407 -120.5h-463zM287 145h266q181 0 278 80.5t97 227.5q0 116 -74.5 177.5t-214.5 61.5h-236zM434 836h248q156 0 249 73t93 199 q0 104 -66.5 155.5t-209.5 51.5h-211z" />
-<glyph unicode="C" horiz-adv-x="1198" d="M150 537q0 261 105.5 485.5t283.5 342.5t403 118q197 0 348 -80l-69 -141q-138 69 -279 69q-174 0 -311.5 -97t-218 -284.5t-80.5 -408.5q0 -187 97.5 -298.5t268.5 -111.5q139 0 322 57v-149q-86 -31 -164 -45t-188 -14q-242 0 -380 149.5t-138 407.5z" />
-<glyph unicode="D" horiz-adv-x="1364" d="M86 0l309 1462h342q276 0 419.5 -149.5t143.5 -435.5q0 -261 -105 -461t-300 -308t-457 -108h-352zM287 147h162q202 0 355 91.5t234.5 258.5t81.5 382t-103 325.5t-302 110.5h-178z" />
-<glyph unicode="E" horiz-adv-x="1047" d="M86 0l309 1462h735l-32 -153h-566l-98 -469h527l-29 -152h-529l-114 -536h565l-33 -152h-735z" />
-<glyph unicode="F" horiz-adv-x="967" d="M86 0l309 1462h735l-30 -153h-568l-110 -533h528l-32 -153h-529l-131 -623h-172z" />
-<glyph unicode="G" horiz-adv-x="1386" d="M150 528q0 269 101.5 489.5t281.5 343t399 122.5q117 0 219.5 -20t206.5 -64l-66 -152q-77 34 -165.5 59t-194.5 25q-169 0 -307.5 -101.5t-215.5 -283.5t-77 -407q0 -190 102.5 -299t286.5 -109q154 0 260 39l96 444h-289l33 152h459l-154 -711q-216 -75 -419 -75 q-264 0 -410.5 144.5t-146.5 403.5z" />
-<glyph unicode="H" horiz-adv-x="1389" d="M86 0l309 1462h170l-131 -622h660l133 622h168l-310 -1462h-167l143 688h-660l-145 -688h-170z" />
-<glyph unicode="I" horiz-adv-x="559" d="M86 0l311 1462h168l-311 -1462h-168z" />
-<glyph unicode="J" horiz-adv-x="547" d="M-319 -360l6 147q69 -20 145 -20q100 0 165.5 62.5t90.5 182.5l307 1450h170l-309 -1468q-79 -379 -422 -379q-105 0 -153 25z" />
-<glyph unicode="K" horiz-adv-x="1141" d="M86 0l309 1462h170l-151 -710l700 710h209l-639 -637l350 -825h-186q-72 181 -146.5 359.5t-146.5 361.5l-174 -131l-125 -590h-170z" />
-<glyph unicode="L" horiz-adv-x="971" d="M86 0l309 1462h170l-276 -1308h565l-33 -154h-735z" />
-<glyph unicode="M" horiz-adv-x="1714" d="M84 0l309 1462h244l149 -1204h9l659 1204h266l-303 -1462h-174q126 590 193 905.5t94 392.5h-6l-717 -1298h-131l-166 1296h-8q-7 -72 -28.5 -197.5t-37.5 -199.5l-190 -899h-162z" />
-<glyph unicode="N" horiz-adv-x="1438" d="M84 0l309 1462h180l459 -1220h6q30 224 72 405l174 815h164l-309 -1462h-181l-460 1223h-6q-32 -221 -74 -418l-172 -805h-162z" />
-<glyph unicode="O" horiz-adv-x="1475" d="M150 549q0 264 96 482t263.5 336t377.5 118q244 0 384 -154t140 -424q0 -269 -88 -481.5t-252 -329t-379 -116.5q-256 0 -399 149.5t-143 419.5zM332 553q0 -199 98 -310.5t266 -111.5q152 0 272.5 97.5t190.5 279.5t70 403q0 199 -94 310.5t-261 111.5q-157 0 -281 -101 t-192.5 -281t-68.5 -398z" />
-<glyph unicode="P" horiz-adv-x="1159" d="M86 0l309 1462h330q214 0 324 -94.5t110 -282.5q0 -248 -164 -379t-481 -131h-135l-123 -575h-170zM410 721h133q216 0 328 91t112 267q0 125 -69.5 180.5t-213.5 55.5h-163z" />
-<glyph unicode="Q" horiz-adv-x="1475" d="M150 549q0 264 96 482t263.5 336t377.5 118q244 0 384 -154t140 -424q0 -333 -139 -576t-375 -321l274 -358h-219l-227 330l-17 -2h-16q-256 0 -399 149.5t-143 419.5zM332 553q0 -199 98 -310.5t266 -111.5q158 0 279 100t187.5 280.5t66.5 399.5q0 199 -94 310.5 t-261 111.5q-157 0 -281 -101t-192.5 -281t-68.5 -398z" />
-<glyph unicode="R" horiz-adv-x="1165" d="M86 0l309 1462h320q446 0 446 -366q0 -348 -368 -449l239 -647h-186l-209 608h-252l-129 -608h-170zM416 754h168q193 0 297 85t104 244q0 121 -67.5 175.5t-219.5 54.5h-166q-102 -494 -116 -559z" />
-<glyph unicode="S" horiz-adv-x="1028" d="M39 43v170q162 -84 340 -84q162 0 257 75.5t95 207.5q0 78 -52.5 137.5t-195.5 140.5q-151 85 -209.5 170t-58.5 201q0 187 132 304.5t347 117.5q99 0 184.5 -19t180.5 -65l-66 -150q-66 38 -148 60t-151 22q-134 0 -215.5 -69.5t-81.5 -188.5q0 -54 17 -92.5t54 -72.5 t142 -95q147 -88 198.5 -138t78 -110.5t26.5 -140.5q0 -211 -140.5 -327.5t-395.5 -116.5q-106 0 -186.5 14.5t-151.5 48.5z" />
-<glyph unicode="T" horiz-adv-x="1020" d="M186 1311l33 151h985l-30 -151h-408l-279 -1311h-172l277 1311h-406z" />
-<glyph unicode="U" horiz-adv-x="1384" d="M164 383q0 81 24 201l189 878h170l-191 -891q-22 -106 -22 -188q0 -117 73 -184.5t218 -67.5q172 0 267.5 87.5t139.5 289.5l205 954h170l-205 -966q-55 -263 -197.5 -389.5t-388.5 -126.5q-230 0 -341 104t-111 299z" />
-<glyph unicode="V" horiz-adv-x="1122" d="M188 1462h170l97 -930q20 -196 20 -335h4q61 144 162 338l479 927h191l-781 -1462h-180z" />
-<glyph unicode="W" horiz-adv-x="1745" d="M223 1462h170l31 -901l2 -88q0 -98 -10 -258h6q89 243 156 383l405 864h178l43 -860q9 -153 9 -304l-1 -83h9q75 224 131 354l387 893h182l-664 -1462h-170l-49 965q-8 136 -8 282h-6q-25 -72 -61 -154.5t-504 -1092.5h-174z" />
-<glyph unicode="X" horiz-adv-x="1063" d="M-104 0l596 776l-263 686h172l203 -563l443 563h186l-555 -694l278 -768h-180l-213 641l-481 -641h-186z" />
-<glyph unicode="Y" horiz-adv-x="1030" d="M188 1462h170l179 -747l489 747h193l-627 -921l-113 -541h-172l119 549z" />
-<glyph unicode="Z" horiz-adv-x="1087" d="M-16 0l28 137l924 1170h-655l32 155h858l-26 -139l-924 -1169h697l-33 -154h-901z" />
-<glyph unicode="[" horiz-adv-x="586" d="M-16 -324l381 1786h387l-31 -141h-227l-318 -1503h227l-32 -142h-387z" />
-<glyph unicode="\" horiz-adv-x="717" d="M221 1462h154l217 -1462h-154z" />
-<glyph unicode="]" horiz-adv-x="586" d="M-150 -324l31 142h225l320 1503h-227l30 141h389l-380 -1786h-388z" />
-<glyph unicode="^" horiz-adv-x="1059" d="M53 553l598 920h109l266 -920h-145l-201 747l-467 -747h-160z" />
-<glyph unicode="_" horiz-adv-x="807" d="M-188 -324l30 140h811l-30 -140h-811z" />
-<glyph unicode="`" horiz-adv-x="1135" d="M575 1548v21h181q43 -136 147 -303v-25h-104q-61 61 -128.5 154t-95.5 153z" />
-<glyph unicode="a" horiz-adv-x="1157" d="M98 350q0 208 71 386t196 279t274 101q92 0 164 -49.5t112 -142.5h11l67 172h127l-233 -1096h-133l26 209h-8q-179 -229 -377 -229q-139 0 -218 99t-79 271zM270 346q0 -114 47 -170.5t132 -56.5q97 0 193 92.5t156 241t60 297.5q0 103 -56 164t-147 61 q-104 0 -193.5 -86t-140.5 -233t-51 -310z" />
-<glyph unicode="b" horiz-adv-x="1182" d="M59 0l330 1556h168q-51 -242 -78.5 -370.5t-75.5 -300.5h9q93 118 183.5 173.5t186.5 55.5q141 0 220 -99t79 -272q0 -209 -68.5 -386.5t-191 -277t-276.5 -99.5q-97 0 -170.5 51t-110.5 139h-10l-70 -170h-125zM319 346q0 -110 55.5 -168.5t160.5 -58.5q99 0 184.5 81 t137.5 230.5t52 317.5q0 227 -178 227q-96 0 -195.5 -95t-158 -239t-58.5 -295z" />
-<glyph unicode="c" horiz-adv-x="922" d="M98 389q0 200 74 369t204.5 263.5t293.5 94.5q137 0 268 -51l-47 -141q-120 51 -219 51q-112 0 -204.5 -76.5t-145 -213t-52.5 -296.5q0 -128 66.5 -199t183.5 -71q72 0 136 20t126 47v-143q-124 -63 -276 -63q-194 0 -301 107t-107 302z" />
-<glyph unicode="d" horiz-adv-x="1182" d="M98 350q0 214 72 392t194.5 275t274.5 97q194 0 281 -190h10q17 155 45 274l78 358h166l-330 -1556h-139l22 209h-8q-101 -125 -189 -177t-182 -52q-139 0 -217 98t-78 272zM270 346q0 -227 179 -227q94 0 194 93.5t158.5 239t58.5 296.5q0 111 -54 169t-157 58 q-101 0 -187.5 -82.5t-139 -232t-52.5 -314.5z" />
-<glyph unicode="e" horiz-adv-x="1010" d="M98 391q0 188 74.5 360.5t197.5 268.5t271 96q153 0 230 -66.5t77 -185.5q0 -180 -166 -282.5t-475 -102.5h-33l-4 -80q0 -131 61.5 -204.5t190.5 -73.5q63 0 129.5 18t165.5 66v-146q-94 -44 -166 -61.5t-159 -17.5q-184 0 -289 109t-105 302zM299 618h12 q228 0 349.5 59.5t121.5 172.5q0 53 -36.5 88t-114.5 35q-103 0 -193.5 -94t-138.5 -261z" />
-<glyph unicode="f" horiz-adv-x="641" d="M-229 -330q64 -22 112 -22q76 0 117 62t66 177l227 1082h-193l13 67l206 66l23 100q46 200 127.5 282.5t241.5 82.5q40 0 98 -11.5t90 -25.5l-43 -129q-76 29 -137 29q-87 0 -133.5 -48.5t-75.5 -177.5l-25 -108h238l-25 -127h-237l-232 -1098q-39 -189 -120 -276 t-213 -87q-69 0 -125 21v141z" />
-<glyph unicode="g" horiz-adv-x="1026" d="M-127 -211q0 105 72 182t233 131q-78 41 -78 121q0 69 51 118.5t142 92.5q-63 32 -103 94.5t-40 145.5q0 194 119.5 318t305.5 124q78 0 154 -20h371l-25 -107l-211 -24q41 -62 41 -158q0 -191 -116.5 -304.5t-311.5 -113.5q-55 0 -84 8q-139 -53 -139 -131 q0 -41 33 -54.5t96 -21.5l117 -14q181 -22 262.5 -88t81.5 -194q0 -184 -146 -285t-411 -101q-194 0 -304 73.5t-110 207.5zM35 -195q0 -77 65 -122t193 -45q182 0 284.5 63.5t102.5 179.5q0 62 -54 98t-184 50l-159 16q-120 -25 -184 -88t-64 -152zM313 680 q0 -85 45 -129.5t125 -44.5q79 0 138 42t90.5 115.5t31.5 159.5q0 82 -44 125t-126 43q-78 0 -136.5 -40.5t-91 -113t-32.5 -157.5z" />
-<glyph unicode="h" horiz-adv-x="1182" d="M59 0l330 1556h168q-18 -82 -34.5 -159t-34 -156.5t-38 -166.5t-47.5 -189h11q94 123 185.5 176t191.5 53q131 0 202.5 -72t71.5 -204q0 -62 -23 -166q-39 -193 -145 -672h-168l148 692q18 94 18 135q0 148 -147 148q-89 0 -173.5 -59t-149 -171.5t-97.5 -271.5 l-101 -473h-168z" />
-<glyph unicode="i" horiz-adv-x="520" d="M59 0l234 1096h168l-234 -1096h-168zM340 1376q0 56 32 91.5t83 35.5q88 0 88 -90q0 -55 -33.5 -93t-77.5 -38q-40 0 -66 24.5t-26 69.5z" />
-<glyph unicode="j" horiz-adv-x="520" d="M-258 -330q61 -22 119 -22q125 0 168 205l264 1243h166l-266 -1258q-36 -171 -114.5 -250.5t-213.5 -79.5q-69 0 -123 21v141zM340 1376q0 56 32 91.5t83 35.5q86 0 86 -90q0 -55 -33.5 -93t-77.5 -38q-38 0 -64 24.5t-26 69.5z" />
-<glyph unicode="k" horiz-adv-x="999" d="M57 0l330 1556h170l-129 -602q-57 -266 -102 -395h4l526 537h201l-469 -467l295 -629h-187l-235 524l-152 -123l-82 -401h-170z" />
-<glyph unicode="l" horiz-adv-x="520" d="M57 0l332 1556h168l-332 -1556h-168z" />
-<glyph unicode="m" horiz-adv-x="1786" d="M59 0l234 1096h139l-22 -203h10q87 119 173.5 171t178.5 52q113 0 174 -65t72 -181h8q86 125 183 185.5t196 60.5q127 0 196.5 -68t69.5 -198q0 -68 -22 -178l-144 -672h-170l148 692q20 104 20 146q0 62 -34.5 99.5t-108.5 37.5q-81 0 -160 -58t-138.5 -164.5 t-90.5 -252.5l-107 -500h-168l148 692q18 94 18 135q0 70 -31 109t-106 39q-84 0 -163.5 -60t-140 -171.5t-93.5 -268.5l-101 -475h-168z" />
-<glyph unicode="n" horiz-adv-x="1182" d="M59 0l234 1096h139l-22 -203h10q96 122 185.5 172.5t185.5 50.5q127 0 200.5 -69.5t73.5 -194.5q0 -79 -23 -180l-143 -672h-170l148 692q20 104 20 144q0 63 -35.5 101t-113.5 38q-89 0 -173.5 -60t-149 -171t-97.5 -269l-101 -475h-168z" />
-<glyph unicode="o" horiz-adv-x="1149" d="M98 406q0 190 73 357.5t197 257t275 89.5q190 0 300 -112.5t110 -309.5q0 -188 -72 -355t-195 -258t-278 -91q-192 0 -301 113t-109 309zM270 397q0 -131 63.5 -202.5t182.5 -71.5q104 0 187 73t129.5 207.5t46.5 307.5q0 115 -62.5 186.5t-169.5 71.5q-109 0 -195.5 -74 t-134 -205.5t-47.5 -292.5z" />
-<glyph unicode="p" horiz-adv-x="1182" d="M-43 -492l336 1588h139l-26 -209h8q179 227 372 227q137 0 216 -97.5t79 -273.5q0 -212 -69 -389t-191 -275.5t-276 -98.5q-97 0 -170 50t-113 140h-10l-4 -38q-3 -25 -10.5 -70t-114.5 -554h-166zM319 346q0 -110 55.5 -168.5t160.5 -58.5q99 0 184.5 81t137.5 230.5 t52 317.5q0 227 -178 227q-96 0 -195.5 -95t-158 -239t-58.5 -295z" />
-<glyph unicode="q" horiz-adv-x="1182" d="M98 350q0 212 72.5 392t196 277t274.5 97q94 0 165.5 -50.5t108.5 -141.5h13l67 172h125l-336 -1588h-166l101 480q9 45 57 221h-8q-95 -121 -185 -175t-186 -54q-140 0 -219.5 97.5t-79.5 272.5zM270 346q0 -227 179 -227q92 0 190 92t158.5 237t60.5 300 q0 105 -54.5 166t-152.5 61q-101 0 -189 -84.5t-140 -233t-52 -311.5z" />
-<glyph unicode="r" horiz-adv-x="811" d="M59 0l234 1096h139l-22 -203h10q72 95 119 136.5t98.5 64t114.5 22.5q69 0 120 -14l-36 -150q-53 13 -105 13q-91 0 -170.5 -60t-139 -166.5t-87.5 -236.5l-107 -502h-168z" />
-<glyph unicode="s" horiz-adv-x="877" d="M8 49v158q70 -42 151 -65t150 -23q126 0 190 50t64 128q0 57 -35 96t-151 107q-130 73 -184 143t-54 166q0 138 101 222.5t266 84.5q171 0 330 -74l-54 -137l-56 25q-101 43 -220 43q-93 0 -146 -43.5t-53 -112.5q0 -56 35.5 -96t146.5 -103q107 -60 153.5 -103 t69.5 -92.5t23 -111.5q0 -156 -110.5 -243.5t-311.5 -87.5q-169 0 -305 69z" />
-<glyph unicode="t" horiz-adv-x="664" d="M90 969l14 73l185 78l125 228h98l-55 -252h274l-26 -127h-273l-129 -604q-18 -87 -18 -132q0 -56 29 -86t81 -30q55 0 144 26v-129q-34 -14 -84 -24t-80 -10q-125 0 -191.5 59.5t-66.5 177.5q0 66 18 150l127 602h-172z" />
-<glyph unicode="u" horiz-adv-x="1182" d="M113 248q0 62 22 172l146 676h170l-150 -695q-18 -89 -18 -139q0 -143 147 -143q88 0 173 60t150 172t99 270l100 475h166l-231 -1096h-139l22 203h-12q-98 -125 -187 -174t-184 -49q-128 0 -201 69.5t-73 198.5z" />
-<glyph unicode="v" horiz-adv-x="946" d="M98 1096h168l64 -613q24 -258 24 -362h6q127 275 179 371l325 604h178l-591 -1096h-228z" />
-<glyph unicode="w" horiz-adv-x="1468" d="M117 1096h164l18 -594v-88q0 -147 -8 -269h6q47 124 137 322l295 629h182l37 -594q6 -168 6 -262v-53l-2 -42h6q28 86 83 218.5t323 732.5h178l-506 -1096h-205l-32 602q-4 94 -4 172v156h-9l-50 -118l-83 -189l-291 -623h-202z" />
-<glyph unicode="x" horiz-adv-x="979" d="M-74 0l475 565l-239 531h170l174 -412l330 412h194l-455 -539l252 -557h-168l-192 434l-346 -434h-195z" />
-<glyph unicode="y" horiz-adv-x="946" d="M-197 -336q63 -18 131 -18q82 0 140.5 50.5t113.5 149.5l76 136l-166 1114h168l74 -545q10 -69 19.5 -203.5t9.5 -216.5h6q35 87 87 200t77 156l325 609h178l-696 -1282q-93 -172 -184 -239t-219 -67q-72 0 -140 21v135z" />
-<glyph unicode="z" horiz-adv-x="909" d="M-29 0l23 117l694 854h-479l27 125h657l-29 -140l-680 -831h531l-25 -125h-719z" />
-<glyph unicode="{" horiz-adv-x="715" d="M27 514l32 143q118 0 189.5 43.5t93.5 147.5l68 326q34 160 117.5 224t254.5 64h33l-31 -141q-105 0 -151 -36.5t-66 -123.5l-71 -321q-28 -123 -91 -184t-167 -78v-5q151 -41 151 -213q0 -59 -18 -131l-47 -211q-15 -58 -15 -98q0 -53 36.5 -77.5t119.5 -24.5v-142h-23 q-141 0 -216.5 52.5t-75.5 171.5q0 52 20 141q33 146 51.5 227.5t14.5 102.5q0 143 -209 143z" />
-<glyph unicode="|" d="M541 -496v2052h139v-2052h-139z" />
-<glyph unicode="}" horiz-adv-x="715" d="M-74 -182q115 0 167 36t71 123l72 322q25 117 88 179.5t170 80.5v6q-150 42 -150 211q0 59 18 131l50 213q14 65 14 99q0 53 -40.5 77.5t-139.5 24.5l28 141h11q144 0 220.5 -52.5t76.5 -170.5q0 -48 -21 -141l-49 -219q-16 -68 -16 -111q0 -143 209 -143l-33 -144 q-119 0 -190 -43t-93 -147l-67 -326q-36 -164 -119 -226.5t-264 -62.5h-13v142z" />
-<glyph unicode="~" d="M115 592v151q98 109 243 109q69 0 127 -14.5t144 -51.5q64 -27 112.5 -41t98.5 -14q55 0 119.5 33t115.5 88v-150q-100 -110 -244 -110q-72 0 -135 16.5t-135 48.5q-75 32 -120 44t-93 12q-54 0 -118.5 -34.5t-114.5 -86.5z" />
-<glyph unicode="&#xa1;" horiz-adv-x="530" d="M-14 -373l274 1057h109l-176 -1057h-207zM250 950q0 76 40.5 122t110.5 46q44 0 70.5 -26t26.5 -80q0 -71 -40.5 -117.5t-105.5 -46.5q-48 0 -75 25.5t-27 76.5z" />
-<glyph unicode="&#xa2;" d="M225 590q0 185 63.5 344t178.5 258.5t260 120.5l35 170h123l-37 -168q119 -9 217 -49l-47 -142q-109 52 -219 52q-112 0 -204.5 -76.5t-145 -213t-52.5 -296.5q0 -125 66 -198t184 -73q72 0 136 20t126 48v-143q-123 -62 -286 -66l-41 -198h-125l43 215 q-132 34 -203.5 137.5t-71.5 257.5z" />
-<glyph unicode="&#xa3;" d="M-23 0l27 141q205 46 258 289l47 221h-200l26 127h201l76 350q75 353 430 353q184 0 336 -86l-66 -133q-146 79 -278 79q-213 0 -263 -237l-69 -326h370l-26 -127h-371l-47 -219q-22 -98 -66 -166.5t-124 -111.5h725l-33 -154h-953z" />
-<glyph unicode="&#xa4;" d="M168 1067l92 92l127 -129q103 70 217 70t215 -70l129 129l92 -90l-129 -129q70 -104 70 -217q0 -119 -70 -217l127 -127l-90 -90l-129 127q-98 -68 -215 -68q-119 0 -217 70l-127 -127l-90 90l127 127q-68 96 -68 215q0 117 68 215zM358 723q0 -103 71.5 -174.5 t174.5 -71.5q104 0 177 71.5t73 174.5q0 104 -73 177t-177 73q-102 0 -174 -72.5t-72 -177.5z" />
-<glyph unicode="&#xa5;" d="M127 266l29 133h290l33 160h-291l29 133h225l-202 770h163l179 -747l491 747h187l-533 -770h231l-28 -133h-297l-33 -160h297l-29 -133h-295l-57 -266h-154l56 266h-291z" />
-<glyph unicode="&#xa6;" d="M541 281h139v-777h-139v777zM541 780v776h139v-776h-139z" />
-<glyph unicode="&#xa7;" horiz-adv-x="995" d="M59 53v148q56 -34 136.5 -56t156.5 -22q133 0 204 44.5t71 129.5q0 48 -50.5 89t-152.5 87q-138 61 -194 130.5t-56 166.5q0 201 238 307q-119 70 -119 203q0 127 103.5 206t279.5 79q189 0 321 -68l-53 -123q-148 60 -266 60q-102 0 -162.5 -40.5t-60.5 -109.5 q0 -49 38 -83.5t162 -90.5q100 -44 149 -83.5t75 -89.5t26 -114q0 -97 -61 -180t-172 -139q114 -71 114 -189q0 -152 -114 -237.5t-318 -85.5q-176 0 -295 61zM326 791q0 -70 50.5 -117t198.5 -111q80 44 127.5 107t47.5 131q0 60 -49.5 105.5t-186.5 103.5 q-82 -26 -135 -87.5t-53 -131.5z" />
-<glyph unicode="&#xa8;" horiz-adv-x="1135" d="M457 1378q0 46 28 79.5t74 33.5q78 0 78 -80q0 -49 -29.5 -83t-68.5 -34q-35 0 -58.5 22t-23.5 62zM821 1378q0 46 28 79.5t75 33.5q77 0 77 -80q0 -49 -29.5 -83t-68.5 -34q-35 0 -58.5 22t-23.5 62z" />
-<glyph unicode="&#xa9;" horiz-adv-x="1704" d="M139 731q0 200 100 375t275 276t377 101q197 0 370 -97t277 -272t104 -383q0 -204 -100.5 -376.5t-273 -273.5t-377.5 -101q-207 0 -382 103.5t-272.5 276.5t-97.5 371zM244 731q0 -173 87 -323.5t237.5 -237t322.5 -86.5q174 0 323 87t236.5 235.5t87.5 324.5 q0 174 -87 323t-235.5 236.5t-324.5 87.5q-174 0 -323 -87t-236.5 -235.5t-87.5 -324.5zM520 733q0 208 110 330.5t300 122.5q130 0 248 -60l-60 -120q-106 53 -190 53q-125 0 -191.5 -87t-66.5 -241q0 -169 65 -249.5t193 -80.5q82 0 211 43v-122q-66 -28 -113 -38 t-104 -10q-192 0 -297 119.5t-105 339.5z" />
-<glyph unicode="&#xaa;" horiz-adv-x="686" d="M170 1014q0 127 41.5 234.5t116.5 169t170 61.5q114 0 153 -103h6l37 90h86l-139 -665h-92l14 117h-4q-40 -56 -90 -93t-123 -37q-77 0 -126.5 60t-49.5 166zM283 1030q0 -139 98 -139q61 0 112.5 49t86 137.5t34.5 167.5q0 62 -28.5 96.5t-85.5 34.5q-92 0 -154.5 -103 t-62.5 -243z" />
-<glyph unicode="&#xab;" horiz-adv-x="958" d="M88 555v29l391 374l78 -81l-297 -328l172 -387l-113 -49zM483 510v31l367 405l86 -69l-283 -365l158 -350l-113 -49z" />
-<glyph unicode="&#xac;" d="M127 651v142h920v-529h-140v387h-780z" />
-<glyph unicode="&#xad;" horiz-adv-x="639" d="M55 469l35 158h479l-34 -158h-480z" />
-<glyph unicode="&#xae;" horiz-adv-x="1704" d="M139 731q0 200 100 375t275 276t377 101q197 0 370 -97t277 -272t104 -383q0 -204 -100.5 -376.5t-273 -273.5t-377.5 -101q-207 0 -382 103.5t-272.5 276.5t-97.5 371zM244 731q0 -173 87 -323.5t237.5 -237t322.5 -86.5q174 0 323 87t236.5 235.5t87.5 324.5 q0 174 -87 323t-235.5 236.5t-324.5 87.5q-174 0 -323 -87t-236.5 -235.5t-87.5 -324.5zM645 291v880h229q163 0 241.5 -63t78.5 -193q0 -78 -47.5 -141t-132.5 -98l227 -385h-149l-207 352h-113v-352h-127zM772 762h92q195 0 195 149q0 76 -47.5 107t-149.5 31h-90v-287z " />
-<glyph unicode="&#xaf;" horiz-adv-x="782" d="M227 1556l33 132h787l-35 -132h-785z" />
-<glyph unicode="&#xb0;" horiz-adv-x="877" d="M215 1171q0 128 90.5 220t220.5 92q83 0 155.5 -41.5t114.5 -114t42 -156.5q0 -128 -90.5 -218.5t-221.5 -90.5t-221 90.5t-90 218.5zM328 1171q0 -80 58 -138t140 -58q83 0 140 58.5t57 137.5q0 82 -57.5 140.5t-139.5 58.5q-80 0 -139 -58.5t-59 -140.5z" />
-<glyph unicode="&#xb1;" d="M127 0v141h920v-141h-920zM127 643v141h389v392h141v-392h390v-141h-390v-387h-141v387h-389z" />
-<glyph unicode="&#xb2;" horiz-adv-x="717" d="M96 586l23 106l264 228q115 100 158.5 149.5t63.5 93t20 90.5q0 53 -31 85t-90 32q-90 0 -195 -80l-59 90q125 101 274 101q109 0 171.5 -56.5t62.5 -150.5q0 -99 -52.5 -179.5t-197.5 -205.5l-221 -187h395l-25 -116h-561z" />
-<glyph unicode="&#xb3;" horiz-adv-x="717" d="M119 625v127q125 -72 239 -72q205 0 205 170q0 137 -178 137h-90l22 107h95q97 0 155 41t58 112q0 60 -34.5 90.5t-93.5 30.5q-102 0 -196 -68l-55 93q109 88 268 88q114 0 178 -56t64 -151q0 -180 -207 -234v-4q69 -17 108 -68t39 -120q0 -132 -91 -205.5t-253 -73.5 q-125 0 -233 56z" />
-<glyph unicode="&#xb4;" horiz-adv-x="1135" d="M532 1241v27q56 60 125.5 151.5t106.5 149.5h190v-21q-38 -49 -140 -151t-177 -156h-105z" />
-<glyph unicode="&#xb5;" horiz-adv-x="1194" d="M-43 -492l336 1588h168l-148 -695q-18 -92 -18 -135q0 -147 147 -147q89 0 172 59t148.5 171t99.5 269l105 478h163l-233 -1096h-139l24 205h-12q-93 -121 -183 -173t-188 -52q-112 0 -163 96h-9q-11 -78 -22.5 -148t-83.5 -420h-164z" />
-<glyph unicode="&#xb6;" horiz-adv-x="1341" d="M199 1042q0 260 109 387t341 127h557v-1816h-114v1661h-213v-1661h-115v819q-62 -18 -146 -18q-216 0 -317.5 125t-101.5 376z" />
-<glyph unicode="&#xb7;" horiz-adv-x="518" d="M170 690q0 77 40.5 122.5t111.5 45.5q43 0 69.5 -26t26.5 -79q0 -71 -40 -118.5t-108 -47.5q-46 0 -73 26t-27 77z" />
-<glyph unicode="&#xb8;" horiz-adv-x="420" d="M-170 -383q38 -6 68 -6q174 0 174 110q0 46 -39 67.5t-99 29.5l101 182h106l-61 -121q131 -38 131 -155q0 -98 -81 -157t-214 -59q-41 0 -86 9v100z" />
-<glyph unicode="&#xb9;" horiz-adv-x="717" d="M258 1280l279 182h118l-186 -876h-135l112 526q25 103 58 225q-25 -25 -50 -46.5t-145 -100.5z" />
-<glyph unicode="&#xba;" horiz-adv-x="688" d="M168 1055q0 117 42 215.5t117.5 153.5t174.5 55q117 0 180 -67t63 -193q0 -191 -88.5 -311t-240.5 -120q-113 0 -180.5 71t-67.5 196zM281 1059q0 -85 38 -127.5t107 -42.5q94 0 152.5 88.5t58.5 232.5q0 166 -137 166q-102 0 -160.5 -87.5t-58.5 -229.5z" />
-<glyph unicode="&#xbb;" horiz-adv-x="958" d="M23 197l282 360l-158 354l113 50l217 -402v-31l-368 -401zM401 197l297 323l-172 391l113 50l233 -447v-29l-393 -370z" />
-<glyph unicode="&#xbc;" horiz-adv-x="1518" d="M123 0l1085 1462h154l-1086 -1462h-153zM204 1280l279 182h118l-186 -876h-135l112 526q25 103 58 225q-25 -25 -50 -46.5t-145 -100.5zM706 203l23 101l481 579h133l-121 -563h127l-22 -117h-129l-43 -202h-127l43 202h-365zM870 320h225q69 322 90 395 q-20 -36 -110 -149z" />
-<glyph unicode="&#xbd;" horiz-adv-x="1518" d="M148 1280l279 182h118l-186 -876h-135l112 526q25 103 58 225q-25 -25 -50 -46.5t-145 -100.5zM66 0l1085 1462h154l-1086 -1462h-153zM782 1l23 106l264 228q115 100 158.5 149.5t63.5 93t20 90.5q0 53 -31 85t-90 32q-90 0 -195 -80l-59 90q125 101 274 101 q109 0 171.5 -56.5t62.5 -150.5q0 -99 -52.5 -179.5t-197.5 -205.5l-221 -187h395l-25 -116h-561z" />
-<glyph unicode="&#xbe;" horiz-adv-x="1565" d="M87 625v127q125 -72 239 -72q205 0 205 170q0 137 -178 137h-90l22 107h95q97 0 155 41t58 112q0 60 -34.5 90.5t-93.5 30.5q-102 0 -196 -68l-55 93q109 88 268 88q114 0 178 -56t64 -151q0 -180 -207 -234v-4q69 -17 108 -68t39 -120q0 -132 -91 -205.5t-253 -73.5 q-125 0 -233 56zM273 0l1085 1462h154l-1086 -1462h-153zM856 203l23 101l481 579h133l-121 -563h127l-22 -117h-129l-43 -202h-127l43 202h-365zM1020 320h225q69 322 90 395q-20 -36 -110 -149z" />
-<glyph unicode="&#xbf;" horiz-adv-x="874" d="M-4 -78q0 124 66 228t225 223q132 98 172.5 152.5t62.5 154.5h135q-22 -130 -72 -212t-165 -175l-95 -75q-159 -127 -159 -275q0 -93 51.5 -144t147.5 -51q80 0 154 25.5t140 56.5l62 -129q-90 -48 -189 -74t-186 -26q-168 0 -259 83.5t-91 237.5zM512 946q0 71 40 118.5 t107 47.5q47 0 74 -25.5t27 -76.5q0 -77 -40.5 -122.5t-111.5 -45.5q-43 0 -69.5 26t-26.5 78z" />
-<glyph unicode="&#xc0;" horiz-adv-x="1137" d="M-117 0l799 1462h174l184 -1462h-170l-57 465h-496l-245 -465h-189zM401 621h394l-35 299q-24 179 -29 350q-37 -88 -80.5 -175t-249.5 -474zM535 1886v21h181q43 -136 147 -303v-25h-104q-61 61 -128.5 154t-95.5 153z" />
-<glyph unicode="&#xc1;" horiz-adv-x="1137" d="M-117 0l799 1462h174l184 -1462h-170l-57 465h-496l-245 -465h-189zM401 621h394l-35 299q-24 179 -29 350q-37 -88 -80.5 -175t-249.5 -474zM679 1579v27q56 60 125.5 151.5t106.5 149.5h190v-21q-38 -49 -140 -151t-177 -156h-105z" />
-<glyph unicode="&#xc2;" horiz-adv-x="1137" d="M-117 0l799 1462h174l184 -1462h-170l-57 465h-496l-245 -465h-189zM401 621h394l-35 299q-24 179 -29 350q-37 -88 -80.5 -175t-249.5 -474zM465 1579v27q145 133 204.5 197.5t82.5 103.5h158q37 -99 128 -235l42 -66v-27h-103q-57 48 -161 189q-134 -119 -242 -189 h-109z" />
-<glyph unicode="&#xc3;" horiz-adv-x="1137" d="M-117 0l799 1462h174l184 -1462h-170l-57 465h-496l-245 -465h-189zM401 621h394l-35 299q-24 179 -29 350q-37 -88 -80.5 -175t-249.5 -474zM432 1579q58 258 231 258q44 0 83.5 -18t75 -39.5t66.5 -39.5t58 -18q44 0 69.5 27t51.5 90h100q-66 -258 -233 -258 q-40 0 -77.5 17.5t-73 39t-69 39t-65.5 17.5q-44 0 -69.5 -28.5t-47.5 -86.5h-100z" />
-<glyph unicode="&#xc4;" horiz-adv-x="1137" d="M-117 0l799 1462h174l184 -1462h-170l-57 465h-496l-245 -465h-189zM401 621h394l-35 299q-24 179 -29 350q-37 -88 -80.5 -175t-249.5 -474zM523 1716q0 46 28 79.5t74 33.5q78 0 78 -80q0 -49 -29.5 -83t-68.5 -34q-35 0 -58.5 22t-23.5 62zM887 1716q0 46 28 79.5 t75 33.5q77 0 77 -80q0 -49 -29.5 -83t-68.5 -34q-35 0 -58.5 22t-23.5 62z" />
-<glyph unicode="&#xc5;" horiz-adv-x="1137" d="M-117 0l799 1462h174l184 -1462h-170l-57 465h-496l-245 -465h-189zM401 621h394l-35 299q-24 179 -29 350q-37 -88 -80.5 -175t-249.5 -474zM553 1583q0 94 62 152.5t157 58.5q101 0 160 -57t59 -152q0 -99 -60 -157t-159 -58q-101 0 -160 57.5t-59 155.5zM657 1583 q0 -54 29.5 -84.5t85.5 -30.5q51 0 83 30.5t32 84.5q0 53 -32 84t-83 31q-49 0 -82 -31t-33 -84z" />
-<glyph unicode="&#xc6;" horiz-adv-x="1673" d="M-119 0l938 1462h938l-33 -153h-565l-100 -469h528l-28 -150h-529l-115 -538h566l-33 -152h-737l98 465h-438l-293 -465h-197zM469 621h371l147 688h-84z" />
-<glyph unicode="&#xc7;" horiz-adv-x="1198" d="M150 537q0 261 105.5 485.5t283.5 342.5t403 118q197 0 348 -80l-69 -141q-138 69 -279 69q-174 0 -311.5 -97t-218 -284.5t-80.5 -408.5q0 -187 97.5 -298.5t268.5 -111.5q139 0 322 57v-149q-86 -31 -164 -45t-188 -14q-242 0 -380 149.5t-138 407.5zM377 -383 q38 -6 68 -6q174 0 174 110q0 46 -39 67.5t-99 29.5l101 182h106l-61 -121q131 -38 131 -155q0 -98 -81 -157t-214 -59q-41 0 -86 9v100z" />
-<glyph unicode="&#xc8;" horiz-adv-x="1047" d="M86 0l309 1462h735l-32 -153h-566l-98 -469h527l-29 -152h-529l-114 -536h565l-33 -152h-735zM570 1886v21h181q43 -136 147 -303v-25h-104q-61 61 -128.5 154t-95.5 153z" />
-<glyph unicode="&#xc9;" horiz-adv-x="1047" d="M86 0l309 1462h735l-32 -153h-566l-98 -469h527l-29 -152h-529l-114 -536h565l-33 -152h-735zM657 1579v27q56 60 125.5 151.5t106.5 149.5h190v-21q-38 -49 -140 -151t-177 -156h-105z" />
-<glyph unicode="&#xca;" horiz-adv-x="1047" d="M86 0l309 1462h735l-32 -153h-566l-98 -469h527l-29 -152h-529l-114 -536h565l-33 -152h-735zM469 1579v27q145 133 204.5 197.5t82.5 103.5h158q37 -99 128 -235l42 -66v-27h-103q-57 48 -161 189q-134 -119 -242 -189h-109z" />
-<glyph unicode="&#xcb;" horiz-adv-x="1047" d="M86 0l309 1462h735l-32 -153h-566l-98 -469h527l-29 -152h-529l-114 -536h565l-33 -152h-735zM523 1716q0 46 28 79.5t74 33.5q78 0 78 -80q0 -49 -29.5 -83t-68.5 -34q-35 0 -58.5 22t-23.5 62zM887 1716q0 46 28 79.5t75 33.5q77 0 77 -80q0 -49 -29.5 -83t-68.5 -34 q-35 0 -58.5 22t-23.5 62z" />
-<glyph unicode="&#xcc;" horiz-adv-x="559" d="M86 0l311 1462h168l-311 -1462h-168zM265 1886v21h181q43 -136 147 -303v-25h-104q-61 61 -128.5 154t-95.5 153z" />
-<glyph unicode="&#xcd;" horiz-adv-x="559" d="M86 0l311 1462h168l-311 -1462h-168zM412 1579v27q56 60 125.5 151.5t106.5 149.5h190v-21q-38 -49 -140 -151t-177 -156h-105z" />
-<glyph unicode="&#xce;" horiz-adv-x="559" d="M86 0l311 1462h168l-311 -1462h-168zM193 1579v27q145 133 204.5 197.5t82.5 103.5h158q37 -99 128 -235l42 -66v-27h-103q-57 48 -161 189q-134 -119 -242 -189h-109z" />
-<glyph unicode="&#xcf;" horiz-adv-x="559" d="M86 0l311 1462h168l-311 -1462h-168zM265 1716q0 46 28 79.5t74 33.5q78 0 78 -80q0 -49 -29.5 -83t-68.5 -34q-35 0 -58.5 22t-23.5 62zM629 1716q0 46 28 79.5t75 33.5q77 0 77 -80q0 -49 -29.5 -83t-68.5 -34q-35 0 -58.5 22t-23.5 62z" />
-<glyph unicode="&#xd0;" horiz-adv-x="1364" d="M72 649l32 150h150l141 663h342q276 0 419.5 -149.5t143.5 -435.5q0 -261 -105 -461t-300 -308t-457 -108h-352l135 649h-149zM287 147h162q202 0 355 91.5t234.5 258.5t81.5 382t-103 325.5t-302 110.5h-178l-111 -516h330l-33 -150h-330z" />
-<glyph unicode="&#xd1;" horiz-adv-x="1438" d="M84 0l309 1462h180l459 -1220h6q30 224 72 405l174 815h164l-309 -1462h-181l-460 1223h-6q-32 -221 -74 -418l-172 -805h-162zM600 1579q58 258 231 258q44 0 83.5 -18t75 -39.5t66.5 -39.5t58 -18q44 0 69.5 27t51.5 90h100q-66 -258 -233 -258q-40 0 -77.5 17.5 t-73 39t-69 39t-65.5 17.5q-44 0 -69.5 -28.5t-47.5 -86.5h-100z" />
-<glyph unicode="&#xd2;" horiz-adv-x="1475" d="M150 549q0 264 96 482t263.5 336t377.5 118q244 0 384 -154t140 -424q0 -269 -88 -481.5t-252 -329t-379 -116.5q-256 0 -399 149.5t-143 419.5zM332 553q0 -199 98 -310.5t266 -111.5q152 0 272.5 97.5t190.5 279.5t70 403q0 199 -94 310.5t-261 111.5q-157 0 -281 -101 t-192.5 -281t-68.5 -398zM679 1886v21h181q43 -136 147 -303v-25h-104q-61 61 -128.5 154t-95.5 153z" />
-<glyph unicode="&#xd3;" horiz-adv-x="1475" d="M150 549q0 264 96 482t263.5 336t377.5 118q244 0 384 -154t140 -424q0 -269 -88 -481.5t-252 -329t-379 -116.5q-256 0 -399 149.5t-143 419.5zM332 553q0 -199 98 -310.5t266 -111.5q152 0 272.5 97.5t190.5 279.5t70 403q0 199 -94 310.5t-261 111.5q-157 0 -281 -101 t-192.5 -281t-68.5 -398zM821 1579v27q56 60 125.5 151.5t106.5 149.5h190v-21q-38 -49 -140 -151t-177 -156h-105z" />
-<glyph unicode="&#xd4;" horiz-adv-x="1475" d="M150 549q0 264 96 482t263.5 336t377.5 118q244 0 384 -154t140 -424q0 -269 -88 -481.5t-252 -329t-379 -116.5q-256 0 -399 149.5t-143 419.5zM332 553q0 -199 98 -310.5t266 -111.5q152 0 272.5 97.5t190.5 279.5t70 403q0 199 -94 310.5t-261 111.5q-157 0 -281 -101 t-192.5 -281t-68.5 -398zM612 1579v27q145 133 204.5 197.5t82.5 103.5h158q37 -99 128 -235l42 -66v-27h-103q-57 48 -161 189q-134 -119 -242 -189h-109z" />
-<glyph unicode="&#xd5;" horiz-adv-x="1475" d="M150 549q0 264 96 482t263.5 336t377.5 118q244 0 384 -154t140 -424q0 -269 -88 -481.5t-252 -329t-379 -116.5q-256 0 -399 149.5t-143 419.5zM332 553q0 -199 98 -310.5t266 -111.5q152 0 272.5 97.5t190.5 279.5t70 403q0 199 -94 310.5t-261 111.5q-157 0 -281 -101 t-192.5 -281t-68.5 -398zM565 1579q58 258 231 258q44 0 83.5 -18t75 -39.5t66.5 -39.5t58 -18q44 0 69.5 27t51.5 90h100q-66 -258 -233 -258q-40 0 -77.5 17.5t-73 39t-69 39t-65.5 17.5q-44 0 -69.5 -28.5t-47.5 -86.5h-100z" />
-<glyph unicode="&#xd6;" horiz-adv-x="1475" d="M150 549q0 264 96 482t263.5 336t377.5 118q244 0 384 -154t140 -424q0 -269 -88 -481.5t-252 -329t-379 -116.5q-256 0 -399 149.5t-143 419.5zM332 553q0 -199 98 -310.5t266 -111.5q152 0 272.5 97.5t190.5 279.5t70 403q0 199 -94 310.5t-261 111.5q-157 0 -281 -101 t-192.5 -281t-68.5 -398zM664 1716q0 46 28 79.5t74 33.5q78 0 78 -80q0 -49 -29.5 -83t-68.5 -34q-35 0 -58.5 22t-23.5 62zM1028 1716q0 46 28 79.5t75 33.5q77 0 77 -80q0 -49 -29.5 -83t-68.5 -34q-35 0 -58.5 22t-23.5 62z" />
-<glyph unicode="&#xd7;" d="M168 1044l98 99l320 -320l323 320l99 -96l-324 -324l322 -322l-97 -96l-323 320l-320 -318l-96 96l317 320z" />
-<glyph unicode="&#xd8;" horiz-adv-x="1475" d="M119 8l137 170q-106 136 -106 371q0 264 96 482t263.5 336t377.5 118q99 0 178.5 -27t151.5 -84l131 166l114 -92l-149 -184q48 -62 73 -156t25 -201q0 -269 -88 -481.5t-252 -329t-379 -116.5q-200 0 -332 96l-129 -160zM332 553q0 -135 41 -227l737 919q-90 88 -236 88 q-157 0 -281 -101t-192.5 -281t-68.5 -398zM463 205q91 -74 233 -74q152 0 272.5 97.5t190.5 279.5t70 403q0 118 -33 205z" />
-<glyph unicode="&#xd9;" horiz-adv-x="1384" d="M164 383q0 81 24 201l189 878h170l-191 -891q-22 -106 -22 -188q0 -117 73 -184.5t218 -67.5q172 0 267.5 87.5t139.5 289.5l205 954h170l-205 -966q-55 -263 -197.5 -389.5t-388.5 -126.5q-230 0 -341 104t-111 299zM663 1886v21h181q43 -136 147 -303v-25h-104 q-61 61 -128.5 154t-95.5 153z" />
-<glyph unicode="&#xda;" horiz-adv-x="1384" d="M164 383q0 81 24 201l189 878h170l-191 -891q-22 -106 -22 -188q0 -117 73 -184.5t218 -67.5q172 0 267.5 87.5t139.5 289.5l205 954h170l-205 -966q-55 -263 -197.5 -389.5t-388.5 -126.5q-230 0 -341 104t-111 299zM823 1579v27q56 60 125.5 151.5t106.5 149.5h190v-21 q-38 -49 -140 -151t-177 -156h-105z" />
-<glyph unicode="&#xdb;" horiz-adv-x="1384" d="M164 383q0 81 24 201l189 878h170l-191 -891q-22 -106 -22 -188q0 -117 73 -184.5t218 -67.5q172 0 267.5 87.5t139.5 289.5l205 954h170l-205 -966q-55 -263 -197.5 -389.5t-388.5 -126.5q-230 0 -341 104t-111 299zM602 1579v27q145 133 204.5 197.5t82.5 103.5h158 q37 -99 128 -235l42 -66v-27h-103q-57 48 -161 189q-134 -119 -242 -189h-109z" />
-<glyph unicode="&#xdc;" horiz-adv-x="1384" d="M164 383q0 81 24 201l189 878h170l-191 -891q-22 -106 -22 -188q0 -117 73 -184.5t218 -67.5q172 0 267.5 87.5t139.5 289.5l205 954h170l-205 -966q-55 -263 -197.5 -389.5t-388.5 -126.5q-230 0 -341 104t-111 299zM643 1716q0 46 28 79.5t74 33.5q78 0 78 -80 q0 -49 -29.5 -83t-68.5 -34q-35 0 -58.5 22t-23.5 62zM1007 1716q0 46 28 79.5t75 33.5q77 0 77 -80q0 -49 -29.5 -83t-68.5 -34q-35 0 -58.5 22t-23.5 62z" />
-<glyph unicode="&#xdd;" horiz-adv-x="1030" d="M188 1462h170l179 -747l489 747h193l-627 -921l-113 -541h-172l119 549zM616 1579v27q56 60 125.5 151.5t106.5 149.5h190v-21q-38 -49 -140 -151t-177 -156h-105z" />
-<glyph unicode="&#xde;" horiz-adv-x="1159" d="M86 0l309 1462h170l-53 -256h160q213 0 323.5 -95t110.5 -282q0 -248 -164 -379t-483 -131h-133l-70 -319h-170zM354 465h135q215 0 328 91t113 267q0 126 -70 181t-215 55h-166z" />
-<glyph unicode="&#xdf;" horiz-adv-x="1182" d="M-256 -328q61 -22 111 -22q65 0 107 47.5t65 157.5l280 1314q43 200 156 299t307 99q162 0 252 -71t90 -196q0 -57 -21 -106.5t-61.5 -95t-178.5 -150.5q-110 -83 -110 -151q0 -56 95 -122q47 -34 101 -87.5t79.5 -110t25.5 -123.5q0 -175 -108.5 -274.5t-292.5 -99.5 q-175 0 -268 71v160q51 -41 118.5 -66.5t129.5 -25.5q113 0 181 58t68 159q0 40 -10.5 71t-33.5 59t-89 83q-88 69 -122.5 124t-34.5 115q0 53 18.5 96t49.5 78.5t124 104.5q80 56 111 87.5t48 65t17 70.5q0 64 -52.5 100.5t-141.5 36.5q-119 0 -186 -62.5t-95 -190.5 l-274 -1303q-40 -189 -121 -276t-211 -87q-69 0 -123 21v143z" />
-<glyph unicode="&#xe0;" horiz-adv-x="1157" d="M98 350q0 208 71 386t196 279t274 101q92 0 164 -49.5t112 -142.5h11l67 172h127l-233 -1096h-133l26 209h-8q-179 -229 -377 -229q-139 0 -218 99t-79 271zM270 346q0 -114 47 -170.5t132 -56.5q97 0 193 92.5t156 241t60 297.5q0 103 -56 164t-147 61 q-104 0 -193.5 -86t-140.5 -233t-51 -310zM496 1548v21h181q43 -136 147 -303v-25h-104q-61 61 -128.5 154t-95.5 153z" />
-<glyph unicode="&#xe1;" horiz-adv-x="1157" d="M98 350q0 208 71 386t196 279t274 101q92 0 164 -49.5t112 -142.5h11l67 172h127l-233 -1096h-133l26 209h-8q-179 -229 -377 -229q-139 0 -218 99t-79 271zM270 346q0 -114 47 -170.5t132 -56.5q97 0 193 92.5t156 241t60 297.5q0 103 -56 164t-147 61 q-104 0 -193.5 -86t-140.5 -233t-51 -310zM600 1241v27q56 60 125.5 151.5t106.5 149.5h190v-21q-38 -49 -140 -151t-177 -156h-105z" />
-<glyph unicode="&#xe2;" horiz-adv-x="1157" d="M98 350q0 208 71 386t196 279t274 101q92 0 164 -49.5t112 -142.5h11l67 172h127l-233 -1096h-133l26 209h-8q-179 -229 -377 -229q-139 0 -218 99t-79 271zM270 346q0 -114 47 -170.5t132 -56.5q97 0 193 92.5t156 241t60 297.5q0 103 -56 164t-147 61 q-104 0 -193.5 -86t-140.5 -233t-51 -310zM390 1241v27q145 133 204.5 197.5t82.5 103.5h158q37 -99 128 -235l42 -66v-27h-103q-57 48 -161 189q-134 -119 -242 -189h-109z" />
-<glyph unicode="&#xe3;" horiz-adv-x="1157" d="M98 350q0 208 71 386t196 279t274 101q92 0 164 -49.5t112 -142.5h11l67 172h127l-233 -1096h-133l26 209h-8q-179 -229 -377 -229q-139 0 -218 99t-79 271zM270 346q0 -114 47 -170.5t132 -56.5q97 0 193 92.5t156 241t60 297.5q0 103 -56 164t-147 61 q-104 0 -193.5 -86t-140.5 -233t-51 -310zM354 1241q58 258 231 258q44 0 83.5 -18t75 -39.5t66.5 -39.5t58 -18q44 0 69.5 27t51.5 90h100q-66 -258 -233 -258q-40 0 -77.5 17.5t-73 39t-69 39t-65.5 17.5q-44 0 -69.5 -28.5t-47.5 -86.5h-100z" />
-<glyph unicode="&#xe4;" horiz-adv-x="1157" d="M98 350q0 208 71 386t196 279t274 101q92 0 164 -49.5t112 -142.5h11l67 172h127l-233 -1096h-133l26 209h-8q-179 -229 -377 -229q-139 0 -218 99t-79 271zM270 346q0 -114 47 -170.5t132 -56.5q97 0 193 92.5t156 241t60 297.5q0 103 -56 164t-147 61 q-104 0 -193.5 -86t-140.5 -233t-51 -310zM454 1378q0 46 28 79.5t74 33.5q78 0 78 -80q0 -49 -29.5 -83t-68.5 -34q-35 0 -58.5 22t-23.5 62zM818 1378q0 46 28 79.5t75 33.5q77 0 77 -80q0 -49 -29.5 -83t-68.5 -34q-35 0 -58.5 22t-23.5 62z" />
-<glyph unicode="&#xe5;" horiz-adv-x="1157" d="M98 350q0 208 71 386t196 279t274 101q92 0 164 -49.5t112 -142.5h11l67 172h127l-233 -1096h-133l26 209h-8q-179 -229 -377 -229q-139 0 -218 99t-79 271zM270 346q0 -114 47 -170.5t132 -56.5q97 0 193 92.5t156 241t60 297.5q0 103 -56 164t-147 61 q-104 0 -193.5 -86t-140.5 -233t-51 -310zM513 1454q0 94 62 152.5t157 58.5q101 0 160 -57t59 -152q0 -99 -60 -157t-159 -58q-101 0 -160 57.5t-59 155.5zM617 1454q0 -54 29.5 -84.5t85.5 -30.5q51 0 83 30.5t32 84.5q0 53 -32 84t-83 31q-49 0 -82 -31t-33 -84z" />
-<glyph unicode="&#xe6;" horiz-adv-x="1669" d="M98 348q0 206 70.5 385t191.5 281t263 102q82 0 145 -48.5t102 -143.5h11l67 172h109l-31 -146q123 166 332 166q119 0 192.5 -68t73.5 -184q0 -182 -166.5 -283.5t-472.5 -101.5h-39l-4 -80q0 -131 62.5 -204.5t193.5 -73.5q55 0 116.5 16.5t178.5 67.5v-150 q-164 -75 -328 -75q-108 0 -189.5 39.5t-121.5 119.5l-31 -139h-114l26 209h-8q-109 -132 -191.5 -180.5t-177.5 -48.5q-122 0 -191 99t-69 269zM270 348q0 -114 37 -171.5t105 -57.5q95 0 188.5 91.5t153 240.5t59.5 299q0 103 -45.5 164t-122.5 61q-99 0 -187 -86.5 t-138 -231.5t-50 -309zM973 618h14q226 0 348.5 58.5t122.5 169.5q0 61 -35 94t-98 33q-117 0 -211 -94.5t-141 -260.5z" />
-<glyph unicode="&#xe7;" horiz-adv-x="922" d="M98 389q0 200 74 369t204.5 263.5t293.5 94.5q137 0 268 -51l-47 -141q-120 51 -219 51q-112 0 -204.5 -76.5t-145 -213t-52.5 -296.5q0 -128 66.5 -199t183.5 -71q72 0 136 20t126 47v-143q-124 -63 -276 -63q-194 0 -301 107t-107 302zM211 -383q38 -6 68 -6 q174 0 174 110q0 46 -39 67.5t-99 29.5l101 182h106l-61 -121q131 -38 131 -155q0 -98 -81 -157t-214 -59q-41 0 -86 9v100z" />
-<glyph unicode="&#xe8;" horiz-adv-x="1010" d="M98 391q0 188 74.5 360.5t197.5 268.5t271 96q153 0 230 -66.5t77 -185.5q0 -180 -166 -282.5t-475 -102.5h-33l-4 -80q0 -131 61.5 -204.5t190.5 -73.5q63 0 129.5 18t165.5 66v-146q-94 -44 -166 -61.5t-159 -17.5q-184 0 -289 109t-105 302zM299 618h12 q228 0 349.5 59.5t121.5 172.5q0 53 -36.5 88t-114.5 35q-103 0 -193.5 -94t-138.5 -261zM449 1548v21h181q43 -136 147 -303v-25h-104q-61 61 -128.5 154t-95.5 153z" />
-<glyph unicode="&#xe9;" horiz-adv-x="1010" d="M98 391q0 188 74.5 360.5t197.5 268.5t271 96q153 0 230 -66.5t77 -185.5q0 -180 -166 -282.5t-475 -102.5h-33l-4 -80q0 -131 61.5 -204.5t190.5 -73.5q63 0 129.5 18t165.5 66v-146q-94 -44 -166 -61.5t-159 -17.5q-184 0 -289 109t-105 302zM299 618h12 q228 0 349.5 59.5t121.5 172.5q0 53 -36.5 88t-114.5 35q-103 0 -193.5 -94t-138.5 -261zM585 1241v27q56 60 125.5 151.5t106.5 149.5h190v-21q-38 -49 -140 -151t-177 -156h-105z" />
-<glyph unicode="&#xea;" horiz-adv-x="1010" d="M98 391q0 188 74.5 360.5t197.5 268.5t271 96q153 0 230 -66.5t77 -185.5q0 -180 -166 -282.5t-475 -102.5h-33l-4 -80q0 -131 61.5 -204.5t190.5 -73.5q63 0 129.5 18t165.5 66v-146q-94 -44 -166 -61.5t-159 -17.5q-184 0 -289 109t-105 302zM299 618h12 q228 0 349.5 59.5t121.5 172.5q0 53 -36.5 88t-114.5 35q-103 0 -193.5 -94t-138.5 -261zM351 1241v27q145 133 204.5 197.5t82.5 103.5h158q37 -99 128 -235l42 -66v-27h-103q-57 48 -161 189q-134 -119 -242 -189h-109z" />
-<glyph unicode="&#xeb;" horiz-adv-x="1010" d="M98 391q0 188 74.5 360.5t197.5 268.5t271 96q153 0 230 -66.5t77 -185.5q0 -180 -166 -282.5t-475 -102.5h-33l-4 -80q0 -131 61.5 -204.5t190.5 -73.5q63 0 129.5 18t165.5 66v-146q-94 -44 -166 -61.5t-159 -17.5q-184 0 -289 109t-105 302zM299 618h12 q228 0 349.5 59.5t121.5 172.5q0 53 -36.5 88t-114.5 35q-103 0 -193.5 -94t-138.5 -261zM413 1378q0 46 28 79.5t74 33.5q78 0 78 -80q0 -49 -29.5 -83t-68.5 -34q-35 0 -58.5 22t-23.5 62zM777 1378q0 46 28 79.5t75 33.5q77 0 77 -80q0 -49 -29.5 -83t-68.5 -34 q-35 0 -58.5 22t-23.5 62z" />
-<glyph unicode="&#xec;" horiz-adv-x="520" d="M59 0l234 1096h168l-234 -1096h-168zM164 1548v21h181q43 -136 147 -303v-25h-104q-61 61 -128.5 154t-95.5 153z" />
-<glyph unicode="&#xed;" horiz-adv-x="520" d="M59 0l234 1096h168l-234 -1096h-168zM324 1241v27q56 60 125.5 151.5t106.5 149.5h190v-21q-38 -49 -140 -151t-177 -156h-105z" />
-<glyph unicode="&#xee;" horiz-adv-x="520" d="M59 0l234 1096h168l-234 -1096h-168zM93 1241v27q145 133 204.5 197.5t82.5 103.5h158q37 -99 128 -235l42 -66v-27h-103q-57 48 -161 189q-134 -119 -242 -189h-109z" />
-<glyph unicode="&#xef;" horiz-adv-x="520" d="M59 0l234 1096h168l-234 -1096h-168zM161 1378q0 46 28 79.5t74 33.5q78 0 78 -80q0 -49 -29.5 -83t-68.5 -34q-35 0 -58.5 22t-23.5 62zM525 1378q0 46 28 79.5t75 33.5q77 0 77 -80q0 -49 -29.5 -83t-68.5 -34q-35 0 -58.5 22t-23.5 62z" />
-<glyph unicode="&#xf0;" horiz-adv-x="1165" d="M90 373q0 160 67.5 298t187 217t267.5 79q105 0 181.5 -45.5t111.5 -124.5l6 2v17q0 136 -36.5 240t-110.5 197l-270 -149l-56 108l238 131q-66 58 -146 113l95 117q118 -84 188 -154l260 146l64 -105l-240 -133q87 -115 126.5 -240.5t39.5 -269.5q0 -253 -71.5 -447 t-203 -292t-311.5 -98q-182 0 -284.5 104t-102.5 289zM262 377q0 -126 57.5 -191t167.5 -65q107 0 190 56t134 168t51 226q0 118 -65.5 187t-178.5 69q-109 0 -189 -57.5t-123.5 -161t-43.5 -231.5z" />
-<glyph unicode="&#xf1;" horiz-adv-x="1182" d="M59 0l234 1096h139l-22 -203h10q96 122 185.5 172.5t185.5 50.5q127 0 200.5 -69.5t73.5 -194.5q0 -79 -23 -180l-143 -672h-170l148 692q20 104 20 144q0 63 -35.5 101t-113.5 38q-89 0 -173.5 -60t-149 -171t-97.5 -269l-101 -475h-168zM369 1241q58 258 231 258 q44 0 83.5 -18t75 -39.5t66.5 -39.5t58 -18q44 0 69.5 27t51.5 90h100q-66 -258 -233 -258q-40 0 -77.5 17.5t-73 39t-69 39t-65.5 17.5q-44 0 -69.5 -28.5t-47.5 -86.5h-100z" />
-<glyph unicode="&#xf2;" horiz-adv-x="1149" d="M98 406q0 190 73 357.5t197 257t275 89.5q190 0 300 -112.5t110 -309.5q0 -188 -72 -355t-195 -258t-278 -91q-192 0 -301 113t-109 309zM270 397q0 -131 63.5 -202.5t182.5 -71.5q104 0 187 73t129.5 207.5t46.5 307.5q0 115 -62.5 186.5t-169.5 71.5q-109 0 -195.5 -74 t-134 -205.5t-47.5 -292.5zM470 1548v21h181q43 -136 147 -303v-25h-104q-61 61 -128.5 154t-95.5 153z" />
-<glyph unicode="&#xf3;" horiz-adv-x="1149" d="M98 406q0 190 73 357.5t197 257t275 89.5q190 0 300 -112.5t110 -309.5q0 -188 -72 -355t-195 -258t-278 -91q-192 0 -301 113t-109 309zM270 397q0 -131 63.5 -202.5t182.5 -71.5q104 0 187 73t129.5 207.5t46.5 307.5q0 115 -62.5 186.5t-169.5 71.5q-109 0 -195.5 -74 t-134 -205.5t-47.5 -292.5zM589 1241v27q56 60 125.5 151.5t106.5 149.5h190v-21q-38 -49 -140 -151t-177 -156h-105z" />
-<glyph unicode="&#xf4;" horiz-adv-x="1149" d="M98 406q0 190 73 357.5t197 257t275 89.5q190 0 300 -112.5t110 -309.5q0 -188 -72 -355t-195 -258t-278 -91q-192 0 -301 113t-109 309zM270 397q0 -131 63.5 -202.5t182.5 -71.5q104 0 187 73t129.5 207.5t46.5 307.5q0 115 -62.5 186.5t-169.5 71.5q-109 0 -195.5 -74 t-134 -205.5t-47.5 -292.5zM382 1241v27q145 133 204.5 197.5t82.5 103.5h158q37 -99 128 -235l42 -66v-27h-103q-57 48 -161 189q-134 -119 -242 -189h-109z" />
-<glyph unicode="&#xf5;" horiz-adv-x="1149" d="M98 406q0 190 73 357.5t197 257t275 89.5q190 0 300 -112.5t110 -309.5q0 -188 -72 -355t-195 -258t-278 -91q-192 0 -301 113t-109 309zM270 397q0 -131 63.5 -202.5t182.5 -71.5q104 0 187 73t129.5 207.5t46.5 307.5q0 115 -62.5 186.5t-169.5 71.5q-109 0 -195.5 -74 t-134 -205.5t-47.5 -292.5zM342 1241q58 258 231 258q44 0 83.5 -18t75 -39.5t66.5 -39.5t58 -18q44 0 69.5 27t51.5 90h100q-66 -258 -233 -258q-40 0 -77.5 17.5t-73 39t-69 39t-65.5 17.5q-44 0 -69.5 -28.5t-47.5 -86.5h-100z" />
-<glyph unicode="&#xf6;" horiz-adv-x="1149" d="M98 406q0 190 73 357.5t197 257t275 89.5q190 0 300 -112.5t110 -309.5q0 -188 -72 -355t-195 -258t-278 -91q-192 0 -301 113t-109 309zM270 397q0 -131 63.5 -202.5t182.5 -71.5q104 0 187 73t129.5 207.5t46.5 307.5q0 115 -62.5 186.5t-169.5 71.5q-109 0 -195.5 -74 t-134 -205.5t-47.5 -292.5zM433 1378q0 46 28 79.5t74 33.5q78 0 78 -80q0 -49 -29.5 -83t-68.5 -34q-35 0 -58.5 22t-23.5 62zM797 1378q0 46 28 79.5t75 33.5q77 0 77 -80q0 -49 -29.5 -83t-68.5 -34q-35 0 -58.5 22t-23.5 62z" />
-<glyph unicode="&#xf7;" d="M127 651v142h920v-142h-920zM475 373q0 121 111 121q53 0 82.5 -30.5t29.5 -90.5q0 -58 -30 -89.5t-82 -31.5t-81.5 31t-29.5 90zM475 1071q0 121 111 121q53 0 82.5 -30.5t29.5 -90.5q0 -58 -30 -89.5t-82 -31.5t-81.5 31t-29.5 90z" />
-<glyph unicode="&#xf8;" horiz-adv-x="1149" d="M61 6l109 135q-68 103 -68 265q0 194 73.5 361t195.5 255t272 88q146 0 252 -68l104 129l105 -79l-119 -129q62 -97 62 -258q0 -189 -69.5 -360t-191.5 -266t-276 -95q-146 0 -246 65l-98 -125zM264 416q0 -92 17 -137l518 645q-54 47 -152 47q-108 0 -195.5 -73 t-137.5 -202t-50 -280zM358 166q57 -45 158 -45q103 0 188.5 71.5t133 200.5t47.5 295q0 84 -13 119z" />
-<glyph unicode="&#xf9;" horiz-adv-x="1182" d="M113 248q0 62 22 172l146 676h170l-150 -695q-18 -89 -18 -139q0 -143 147 -143q88 0 173 60t150 172t99 270l100 475h166l-231 -1096h-139l22 203h-12q-98 -125 -187 -174t-184 -49q-128 0 -201 69.5t-73 198.5zM472 1548v21h181q43 -136 147 -303v-25h-104 q-61 61 -128.5 154t-95.5 153z" />
-<glyph unicode="&#xfa;" horiz-adv-x="1182" d="M113 248q0 62 22 172l146 676h170l-150 -695q-18 -89 -18 -139q0 -143 147 -143q88 0 173 60t150 172t99 270l100 475h166l-231 -1096h-139l22 203h-12q-98 -125 -187 -174t-184 -49q-128 0 -201 69.5t-73 198.5zM636 1241v27q56 60 125.5 151.5t106.5 149.5h190v-21 q-38 -49 -140 -151t-177 -156h-105z" />
-<glyph unicode="&#xfb;" horiz-adv-x="1182" d="M113 248q0 62 22 172l146 676h170l-150 -695q-18 -89 -18 -139q0 -143 147 -143q88 0 173 60t150 172t99 270l100 475h166l-231 -1096h-139l22 203h-12q-98 -125 -187 -174t-184 -49q-128 0 -201 69.5t-73 198.5zM409 1241v27q145 133 204.5 197.5t82.5 103.5h158 q37 -99 128 -235l42 -66v-27h-103q-57 48 -161 189q-134 -119 -242 -189h-109z" />
-<glyph unicode="&#xfc;" horiz-adv-x="1182" d="M113 248q0 62 22 172l146 676h170l-150 -695q-18 -89 -18 -139q0 -143 147 -143q88 0 173 60t150 172t99 270l100 475h166l-231 -1096h-139l22 203h-12q-98 -125 -187 -174t-184 -49q-128 0 -201 69.5t-73 198.5zM457 1378q0 46 28 79.5t74 33.5q78 0 78 -80 q0 -49 -29.5 -83t-68.5 -34q-35 0 -58.5 22t-23.5 62zM821 1378q0 46 28 79.5t75 33.5q77 0 77 -80q0 -49 -29.5 -83t-68.5 -34q-35 0 -58.5 22t-23.5 62z" />
-<glyph unicode="&#xfd;" horiz-adv-x="946" d="M-197 -336q63 -18 131 -18q82 0 140.5 50.5t113.5 149.5l76 136l-166 1114h168l74 -545q10 -69 19.5 -203.5t9.5 -216.5h6q35 87 87 200t77 156l325 609h178l-696 -1282q-93 -172 -184 -239t-219 -67q-72 0 -140 21v135zM500 1241v27q56 60 125.5 151.5t106.5 149.5h190 v-21q-38 -49 -140 -151t-177 -156h-105z" />
-<glyph unicode="&#xfe;" horiz-adv-x="1182" d="M-43 -492l432 2048h168q-95 -441 -115 -522t-39 -149h9q101 125 189 177t183 52q139 0 218 -97.5t79 -273.5q0 -212 -69 -389t-191 -275.5t-276 -98.5q-98 0 -172 51t-113 139h-10q-8 -104 -25 -176l-102 -486h-166zM319 346q0 -110 55.5 -168.5t160.5 -58.5 q99 0 184.5 81t137.5 230.5t52 317.5q0 227 -178 227q-96 0 -195.5 -95t-158 -239t-58.5 -295z" />
-<glyph unicode="&#xff;" horiz-adv-x="946" d="M-197 -336q63 -18 131 -18q82 0 140.5 50.5t113.5 149.5l76 136l-166 1114h168l74 -545q10 -69 19.5 -203.5t9.5 -216.5h6q35 87 87 200t77 156l325 609h178l-696 -1282q-93 -172 -184 -239t-219 -67q-72 0 -140 21v135zM335 1378q0 46 28 79.5t74 33.5q78 0 78 -80 q0 -49 -29.5 -83t-68.5 -34q-35 0 -58.5 22t-23.5 62zM699 1378q0 46 28 79.5t75 33.5q77 0 77 -80q0 -49 -29.5 -83t-68.5 -34q-35 0 -58.5 22t-23.5 62z" />
-<glyph unicode="&#x131;" horiz-adv-x="520" d="M59 0l234 1096h168l-234 -1096h-168z" />
-<glyph unicode="&#x152;" horiz-adv-x="1751" d="M150 549q0 264 96 482t263.5 336t377.5 118q152 0 237 -23h709l-31 -153h-565l-100 -469h528l-31 -150h-528l-115 -538h565l-32 -152h-674q-78 -20 -158 -20q-256 0 -399 149.5t-143 419.5zM332 553q0 -199 98 -310.5t266 -111.5q69 0 123 19l246 1161q-76 22 -191 22 q-157 0 -281 -101t-192.5 -281t-68.5 -398z" />
-<glyph unicode="&#x153;" horiz-adv-x="1769" d="M98 406q0 193 75 360t201 255.5t281 88.5q270 0 359 -225q75 109 177.5 170t221.5 61q139 0 217 -65.5t78 -186.5q0 -183 -164.5 -284t-468.5 -101h-41l-4 -80q0 -131 61.5 -204.5t190.5 -73.5q75 0 145 24.5t150 59.5v-150q-162 -75 -326 -75q-270 0 -356 225 q-69 -107 -171.5 -164t-225.5 -57q-184 0 -292 114t-108 308zM270 410q0 -141 62 -214t172 -73q177 0 278 160.5t101 427.5q0 124 -59.5 191t-174.5 67q-109 0 -196 -73t-135 -202t-48 -284zM1053 618h18q231 0 351 61t120 177q0 48 -32 82.5t-97 34.5q-125 0 -220.5 -94.5 t-139.5 -260.5z" />
-<glyph unicode="&#x178;" horiz-adv-x="1030" d="M188 1462h170l179 -747l489 747h193l-627 -921l-113 -541h-172l119 549zM452 1716q0 46 28 79.5t74 33.5q78 0 78 -80q0 -49 -29.5 -83t-68.5 -34q-35 0 -58.5 22t-23.5 62zM816 1716q0 46 28 79.5t75 33.5q77 0 77 -80q0 -49 -29.5 -83t-68.5 -34q-35 0 -58.5 22 t-23.5 62z" />
-<glyph unicode="&#x2c6;" horiz-adv-x="1135" d="M399 1241v27q145 133 204.5 197.5t82.5 103.5h158q37 -99 128 -235l42 -66v-27h-103q-57 48 -161 189q-134 -119 -242 -189h-109z" />
-<glyph unicode="&#x2da;" horiz-adv-x="1182" d="M551 1454q0 94 62 152.5t157 58.5q101 0 160 -57t59 -152q0 -99 -60 -157t-159 -58q-101 0 -160 57.5t-59 155.5zM655 1454q0 -54 29.5 -84.5t85.5 -30.5q51 0 83 30.5t32 84.5q0 53 -32 84t-83 31q-49 0 -82 -31t-33 -84z" />
-<glyph unicode="&#x2dc;" horiz-adv-x="1135" d="M336 1241q58 258 231 258q44 0 83.5 -18t75 -39.5t66.5 -39.5t58 -18q44 0 69.5 27t51.5 90h100q-66 -258 -233 -258q-40 0 -77.5 17.5t-73 39t-69 39t-65.5 17.5q-44 0 -69.5 -28.5t-47.5 -86.5h-100z" />
-<glyph unicode="&#x2000;" horiz-adv-x="953" />
-<glyph unicode="&#x2001;" horiz-adv-x="1907" />
-<glyph unicode="&#x2002;" horiz-adv-x="953" />
-<glyph unicode="&#x2003;" horiz-adv-x="1907" />
-<glyph unicode="&#x2004;" horiz-adv-x="635" />
-<glyph unicode="&#x2005;" horiz-adv-x="476" />
-<glyph unicode="&#x2006;" horiz-adv-x="317" />
-<glyph unicode="&#x2007;" horiz-adv-x="317" />
-<glyph unicode="&#x2008;" horiz-adv-x="238" />
-<glyph unicode="&#x2009;" horiz-adv-x="381" />
-<glyph unicode="&#x200a;" horiz-adv-x="105" />
-<glyph unicode="&#x2010;" horiz-adv-x="639" d="M55 469l35 158h479l-34 -158h-480z" />
-<glyph unicode="&#x2011;" horiz-adv-x="639" d="M55 469l35 158h479l-34 -158h-480z" />
-<glyph unicode="&#x2012;" horiz-adv-x="639" d="M55 469l35 158h479l-34 -158h-480z" />
-<glyph unicode="&#x2013;" horiz-adv-x="983" d="M55 469l35 160h823l-34 -160h-824z" />
-<glyph unicode="&#x2014;" horiz-adv-x="1966" d="M55 469l35 160h1806l-34 -160h-1807z" />
-<glyph unicode="&#x2018;" horiz-adv-x="348" d="M123 983q98 211 270 479h127q-147 -345 -203 -501h-188z" />
-<glyph unicode="&#x2019;" horiz-adv-x="348" d="M125 961q134 298 203 501h188l8 -22q-40 -91 -111 -218.5t-159 -260.5h-129z" />
-<glyph unicode="&#x201a;" horiz-adv-x="492" d="M-100 -264q126 286 204 502h187l8 -23q-113 -235 -270 -479h-129z" />
-<glyph unicode="&#x201c;" horiz-adv-x="719" d="M123 983q98 211 270 479h127q-147 -345 -203 -501h-188zM492 983q80 181 272 479h127q-162 -379 -203 -501h-188z" />
-<glyph unicode="&#x201d;" horiz-adv-x="719" d="M125 961q134 298 203 501h188l8 -22q-40 -91 -111 -218.5t-159 -260.5h-129zM494 961q57 126 115.5 272.5t86.5 228.5h189l10 -22q-94 -206 -274 -479h-127z" />
-<glyph unicode="&#x201e;" horiz-adv-x="858" d="M-100 -264q126 286 204 502h187l8 -23q-113 -235 -270 -479h-129zM268 -264q140 316 203 502h188l9 -23q-95 -205 -271 -479h-129z" />
-<glyph unicode="&#x2022;" horiz-adv-x="774" d="M199 684q0 145 73.5 231t198.5 86q92 0 139 -49t47 -141q0 -141 -74 -230t-202 -89q-89 0 -135.5 49.5t-46.5 142.5z" />
-<glyph unicode="&#x2026;" horiz-adv-x="1563" d="M563 74q0 77 40.5 122.5t111.5 45.5q43 0 69.5 -26t26.5 -79q0 -71 -40 -118.5t-108 -47.5q-46 0 -73 26t-27 77zM1085 74q0 77 40.5 122.5t111.5 45.5q43 0 69.5 -26t26.5 -79q0 -71 -40 -118.5t-108 -47.5q-46 0 -73 26t-27 77zM43 74q0 77 40.5 122.5t111.5 45.5 q43 0 69.5 -26t26.5 -79q0 -71 -40 -118.5t-108 -47.5q-46 0 -73 26t-27 77z" />
-<glyph unicode="&#x202f;" horiz-adv-x="381" />
-<glyph unicode="&#x2039;" horiz-adv-x="580" d="M88 549v29l391 380l78 -81l-297 -334l172 -381l-113 -49z" />
-<glyph unicode="&#x203a;" horiz-adv-x="580" d="M23 197l296 333l-172 381l113 50l232 -437v-28l-392 -381z" />
-<glyph unicode="&#x2044;" horiz-adv-x="268" d="M-487 0l1085 1462h154l-1086 -1462h-153z" />
-<glyph unicode="&#x205f;" horiz-adv-x="476" />
-<glyph unicode="&#x2074;" horiz-adv-x="717" d="M92 788l23 101l481 579h133l-121 -563h127l-22 -117h-129l-43 -202h-127l43 202h-365zM256 905h225q69 322 90 395q-20 -36 -110 -149z" />
-<glyph unicode="&#x20ac;" d="M63 504l27 131h154q8 80 30 164h-151l27 133h159q97 267 259.5 408t369.5 141q89 0 160 -21.5t141 -70.5l-80 -138q-113 78 -231 78q-140 0 -254 -99t-189 -298h426l-26 -133h-441q-21 -65 -32 -164h381l-29 -131h-361q0 -373 297 -373q123 0 256 55v-147 q-127 -59 -278 -59q-212 0 -328.5 133.5t-116.5 378.5v12h-170z" />
-<glyph unicode="&#x2122;" horiz-adv-x="1534" d="M121 1358v104h516v-104h-199v-617h-121v617h-196zM705 741v721h180l182 -557l193 557h170v-721h-121v430q0 73 4 121h-6l-197 -551h-96l-189 551h-6q4 -52 4 -121v-430h-118z" />
-<glyph unicode="&#xe000;" horiz-adv-x="1095" d="M0 1095h1095v-1095h-1095v1095z" />
-<glyph unicode="&#xfb01;" horiz-adv-x="1165" d="M-229 -330q64 -22 112 -22q76 0 117 62t66 177l227 1082h-193l13 67l206 66l23 100q46 200 127.5 282.5t241.5 82.5q40 0 98 -11.5t90 -25.5l-43 -129q-76 29 -137 29q-87 0 -133.5 -48.5t-75.5 -177.5l-25 -108h238l-25 -127h-237l-232 -1098q-39 -189 -120 -276 t-213 -87q-69 0 -125 21v141zM702 0l234 1096h168l-234 -1096h-168zM983 1376q0 56 32 91.5t83 35.5q88 0 88 -90q0 -55 -33.5 -93t-77.5 -38q-40 0 -66 24.5t-26 69.5z" />
-<glyph unicode="&#xfb02;" horiz-adv-x="1165" d="M-229 -330q64 -22 112 -22q76 0 117 62t66 177l227 1082h-193l13 67l206 66l23 100q46 200 127.5 282.5t241.5 82.5q40 0 98 -11.5t90 -25.5l-43 -129q-76 29 -137 29q-87 0 -133.5 -48.5t-75.5 -177.5l-25 -108h238l-25 -127h-237l-232 -1098q-39 -189 -120 -276 t-213 -87q-69 0 -125 21v141zM700 0l332 1556h168l-332 -1556h-168z" />
-<glyph unicode="&#xfb03;" horiz-adv-x="1815" d="M-229 -330q64 -22 112 -22q70 0 114 58t69 181l227 1082h-193l13 67l206 66l23 100q46 200 127.5 282.5t241.5 82.5q40 0 98 -11.5t90 -25.5l-43 -129q-76 29 -137 29q-87 0 -133.5 -48.5t-75.5 -177.5l-25 -108h482l24 108q45 197 126 280t243 83q41 0 97.5 -11 t92.5 -26l-45 -129q-76 29 -137 29q-89 0 -135 -51t-74 -175l-24 -108h239l-26 -127h-238l-231 -1098q-43 -195 -123.5 -279t-210.5 -84q-71 0 -125 21v141q61 -22 115 -22q68 0 111 57.5t69 181.5l227 1082h-481l-232 -1098q-39 -189 -120 -276t-213 -87q-69 0 -125 21v141 zM1354 0l233 1096h168l-233 -1096h-168zM1634 1376q0 54 32 90.5t83 36.5q88 0 88 -90q0 -55 -33.5 -93t-77.5 -38q-38 0 -65 24.5t-27 69.5z" />
-<glyph unicode="&#xfb04;" horiz-adv-x="1815" d="M-229 -330q64 -22 112 -22q70 0 114 58t69 181l227 1082h-193l13 67l206 66l23 100q46 200 127.5 282.5t241.5 82.5q40 0 98 -11.5t90 -25.5l-43 -129q-76 29 -137 29q-87 0 -133.5 -48.5t-75.5 -177.5l-25 -108h482l24 108q45 197 126 280t243 83q41 0 97.5 -11 t92.5 -26l-45 -129q-76 29 -137 29q-89 0 -135 -51t-74 -175l-24 -108h239l-26 -127h-238l-231 -1098q-43 -195 -123.5 -279t-210.5 -84q-71 0 -125 21v141q61 -22 115 -22q68 0 111 57.5t69 181.5l227 1082h-481l-232 -1098q-39 -189 -120 -276t-213 -87q-69 0 -125 21v141 zM1352 0l331 1556h168l-331 -1556h-168z" />
-</font>
-</defs></svg> \ No newline at end of file
diff --git a/admin/survey/Fonts/OpenSans/OpenSans-Italic-webfont.ttf b/admin/survey/Fonts/OpenSans/OpenSans-Italic-webfont.ttf
deleted file mode 100644
index cb3fda6..0000000
--- a/admin/survey/Fonts/OpenSans/OpenSans-Italic-webfont.ttf
+++ /dev/null
Binary files differ
diff --git a/admin/survey/Fonts/OpenSans/OpenSans-Italic-webfont.woff b/admin/survey/Fonts/OpenSans/OpenSans-Italic-webfont.woff
deleted file mode 100644
index 03eaf58..0000000
--- a/admin/survey/Fonts/OpenSans/OpenSans-Italic-webfont.woff
+++ /dev/null
Binary files differ
diff --git a/admin/survey/Fonts/OpenSans/OpenSans-Light-webfont.eot b/admin/survey/Fonts/OpenSans/OpenSans-Light-webfont.eot
deleted file mode 100644
index f17617e..0000000
--- a/admin/survey/Fonts/OpenSans/OpenSans-Light-webfont.eot
+++ /dev/null
Binary files differ
diff --git a/admin/survey/Fonts/OpenSans/OpenSans-Light-webfont.svg b/admin/survey/Fonts/OpenSans/OpenSans-Light-webfont.svg
deleted file mode 100644
index deadc3e..0000000
--- a/admin/survey/Fonts/OpenSans/OpenSans-Light-webfont.svg
+++ /dev/null
@@ -1,252 +0,0 @@
-<?xml version="1.0" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
-<svg xmlns="http://www.w3.org/2000/svg">
-<metadata>
-This is a custom SVG webfont generated by Font Squirrel.
-Copyright : Digitized data copyright 20102011 Google Corporation
-Foundry : Ascender Corporation
-Foundry URL : httpwwwascendercorpcom
-</metadata>
-<defs>
-<font id="OpenSansLight" horiz-adv-x="1169" >
-<font-face units-per-em="2048" ascent="1638" descent="-410" />
-<missing-glyph horiz-adv-x="532" />
-<glyph unicode=" " horiz-adv-x="532" />
-<glyph unicode="&#x09;" horiz-adv-x="532" />
-<glyph unicode="&#xa0;" horiz-adv-x="532" />
-<glyph unicode="!" horiz-adv-x="492" d="M164 78q0 98 80 98q82 0 82 -98t-82 -98q-80 0 -80 98zM186 1462h119l-29 -1085h-61z" />
-<glyph unicode="&#x22;" horiz-adv-x="723" d="M133 1462h127l-33 -528h-61zM463 1462h127l-33 -528h-61z" />
-<glyph unicode="#" horiz-adv-x="1323" d="M55 451v79h299l76 398h-297v80h311l86 454h91l-89 -454h365l88 454h86l-88 -454h285v-80h-301l-76 -398h303v-79h-320l-86 -451h-90l88 451h-360l-86 -451h-88l86 451h-283zM440 530h363l78 398h-363z" />
-<glyph unicode="$" d="M164 186v103q75 -36 179.5 -61t193.5 -25v508q-145 44 -215 88t-102 104t-32 146q0 124 94.5 208.5t254.5 104.5v192h81v-190q197 -9 351 -72l-33 -90q-141 62 -318 72v-486q213 -66 293 -144t80 -204q0 -133 -99 -217t-274 -106v-236h-81v232q-92 2 -200.5 22.5 t-172.5 50.5zM297 1049q0 -86 57 -141t183 -93v453q-119 -16 -179.5 -76t-60.5 -143zM618 209q122 13 192.5 75t70.5 160q0 85 -63 140.5t-200 95.5v-471z" />
-<glyph unicode="%" horiz-adv-x="1653" d="M113 1026q0 223 72 340t212 117q139 0 215 -120.5t76 -336.5q0 -226 -75 -343.5t-216 -117.5q-133 0 -208.5 120.5t-75.5 340.5zM211 1026q0 -186 45 -279.5t141 -93.5q193 0 193 373q0 184 -49.5 276.5t-143.5 92.5q-96 0 -141 -92.5t-45 -276.5zM373 0l811 1462h96 l-811 -1462h-96zM965 438q0 225 73.5 341t212.5 116q137 0 213 -120t76 -337q0 -226 -74 -343.5t-215 -117.5q-136 0 -211 121.5t-75 339.5zM1063 438q0 -185 45 -277.5t141 -92.5q193 0 193 370q0 369 -193 369q-96 0 -141 -91.5t-45 -277.5z" />
-<glyph unicode="&#x26;" horiz-adv-x="1460" d="M123 371q0 138 73.5 235t274.5 205l-75 82q-66 71 -98 139t-32 142q0 143 95.5 227t256.5 84q155 0 245.5 -81t90.5 -224q0 -105 -70 -192.5t-253 -194.5l452 -457q61 72 104 157t75 201h96q-63 -246 -209 -426l266 -268h-135l-193 197q-92 -90 -164 -131.5t-157.5 -63.5 t-194.5 -22q-209 0 -328.5 103t-119.5 288zM227 375q0 -143 93 -224t258 -81q128 0 234.5 43.5t209.5 146.5l-483 485q-136 -72 -196.5 -122.5t-88 -109.5t-27.5 -138zM373 1176q0 -79 40 -146t152 -174q159 85 221 159t62 169q0 94 -62 152.5t-168 58.5q-114 0 -179.5 -58 t-65.5 -161z" />
-<glyph unicode="'" horiz-adv-x="393" d="M133 1462h127l-33 -528h-61z" />
-<glyph unicode="(" horiz-adv-x="557" d="M82 561q0 265 77.5 496t223.5 405h113q-148 -182 -227 -412.5t-79 -486.5q0 -483 304 -887h-111q-147 170 -224 397t-77 488z" />
-<glyph unicode=")" horiz-adv-x="557" d="M61 1462h113q147 -175 224 -406.5t77 -494.5t-77.5 -490t-223.5 -395h-111q304 404 304 887q0 257 -79 487.5t-227 411.5z" />
-<glyph unicode="*" horiz-adv-x="1128" d="M104 1124l19 131l401 -104l-39 405h146l-37 -405l405 104l21 -131l-395 -39l247 -340l-124 -71l-191 379l-180 -379l-125 71l242 340z" />
-<glyph unicode="+" d="M111 682v82h432v434h82v-434h434v-82h-434v-432h-82v432h-432z" />
-<glyph unicode="," horiz-adv-x="440" d="M68 -264q77 275 110 502h117l12 -21q-75 -265 -174 -481h-65z" />
-<glyph unicode="-" horiz-adv-x="659" d="M92 512v82h475v-82h-475z" />
-<glyph unicode="." horiz-adv-x="487" d="M162 78q0 98 80 98q82 0 82 -98t-82 -98q-80 0 -80 98z" />
-<glyph unicode="/" horiz-adv-x="698" d="M25 0l544 1462h105l-545 -1462h-104z" />
-<glyph unicode="0" d="M115 735q0 382 115.5 566t351.5 184q231 0 352 -190.5t121 -559.5q0 -385 -117.5 -570t-355.5 -185q-229 0 -348 190.5t-119 564.5zM223 735q0 -340 89 -502.5t270 -162.5q189 0 275.5 168t86.5 497q0 324 -86.5 492t-275.5 168t-274 -168t-85 -492z" />
-<glyph unicode="1" d="M199 1165l397 297h86v-1462h-98v1065q0 145 12 301q-15 -15 -31 -29t-309 -243z" />
-<glyph unicode="2" d="M113 0v88l389 406q164 170 230 260t97 172t31 172q0 131 -86 213t-223 82q-183 0 -350 -133l-54 69q183 154 406 154q191 0 300.5 -102t109.5 -281q0 -145 -73.5 -280.5t-268.5 -334.5l-375 -385v-4h782v-96h-915z" />
-<glyph unicode="3" d="M94 63v99q84 -44 188.5 -69t196.5 -25q221 0 332 89.5t111 252.5q0 145 -113.5 223t-333.5 78h-158v96h160q182 0 288.5 86.5t106.5 234.5q0 122 -86.5 195.5t-226.5 73.5q-109 0 -199 -30.5t-202 -104.5l-49 67q85 71 205 112.5t243 41.5q202 0 312 -95.5t110 -269.5 q0 -136 -85.5 -229t-229.5 -119v-6q176 -22 268 -112t92 -242q0 -205 -139.5 -317.5t-401.5 -112.5q-223 0 -389 83z" />
-<glyph unicode="4" d="M43 373v67l725 1030h121v-1011h252v-86h-252v-373h-94v373h-752zM162 459h633v418q0 302 14 507h-8q-20 -37 -123 -188z" />
-<glyph unicode="5" d="M143 63v103q108 -55 192 -76.5t179 -21.5q192 0 308 101.5t116 274.5q0 163 -113 256t-307 93q-130 0 -272 -39l-60 39l58 669h704v-96h-610l-45 -516q156 29 244 29q234 0 368.5 -113t134.5 -311q0 -225 -140 -350t-386 -125q-109 0 -207 21.5t-164 61.5z" />
-<glyph unicode="6" d="M131 623q0 285 77.5 479.5t220 288.5t343.5 94q94 0 172 -23v-88q-73 27 -176 27q-247 0 -384.5 -178t-154.5 -518h13q76 98 174 148t207 50q205 0 320.5 -117t115.5 -323q0 -224 -121.5 -353.5t-327.5 -129.5q-222 0 -350.5 169.5t-128.5 473.5zM240 504 q0 -111 49.5 -213.5t134 -162.5t186.5 -60q164 0 255 103t91 294q0 168 -90 262t-245 94q-102 0 -189.5 -45t-139.5 -119.5t-52 -152.5z" />
-<glyph unicode="7" d="M109 1366v96h946v-73l-604 -1389h-117l602 1366h-827z" />
-<glyph unicode="8" d="M121 375q0 131 83 230t257 169q-161 76 -227 160.5t-66 202.5q0 105 53 184.5t148.5 122.5t212.5 43q186 0 299.5 -95t113.5 -257q0 -112 -70.5 -198t-228.5 -159q192 -79 270 -173t78 -228q0 -181 -126.5 -289t-339.5 -108q-221 0 -339 101t-118 294zM223 360 q0 -138 93.5 -214t261.5 -76q164 0 264 80.5t100 218.5q0 124 -78.5 201.5t-302.5 162.5q-184 -71 -261 -157t-77 -216zM268 1137q0 -70 31.5 -123.5t91 -97t199.5 -101.5q163 63 234 139t71 183q0 120 -84.5 190t-230.5 70q-141 0 -226.5 -69.5t-85.5 -190.5z" />
-<glyph unicode="9" d="M111 993q0 220 124.5 356t323.5 136q144 0 252 -75.5t166.5 -221.5t58.5 -346q0 -288 -75.5 -482t-220 -287t-349.5 -93q-104 0 -192 26v86q43 -14 103.5 -21.5t92.5 -7.5q247 0 387 178.5t156 520.5h-12q-73 -96 -174 -147.5t-211 -51.5q-203 0 -316.5 112t-113.5 318z M213 999q0 -174 87 -264t249 -90q101 0 188.5 45t139 119.5t51.5 151.5q0 117 -46.5 219t-130 159.5t-192.5 57.5q-158 0 -252 -106.5t-94 -291.5z" />
-<glyph unicode=":" horiz-adv-x="487" d="M162 78q0 98 80 98q82 0 82 -98t-82 -98q-80 0 -80 98zM162 971q0 98 80 98q82 0 82 -98q0 -53 -23.5 -76t-58.5 -23q-34 0 -57 23t-23 76z" />
-<glyph unicode=";" horiz-adv-x="487" d="M76 -264q29 97 62 245.5t48 256.5h117l12 -21q-75 -265 -174 -481h-65zM162 971q0 98 80 98q82 0 82 -98q0 -53 -23.5 -76t-58.5 -23q-34 0 -57 23t-23 76z" />
-<glyph unicode="&#x3c;" d="M111 682v61l948 474v-95l-823 -405l823 -355v-96z" />
-<glyph unicode="=" d="M111 477v82h948v-82h-948zM111 885v82h948v-82h-948z" />
-<glyph unicode="&#x3e;" d="M111 266v96l823 355l-823 405v95l948 -474v-61z" />
-<glyph unicode="?" horiz-adv-x="862" d="M57 1403q110 48 184.5 64t153.5 16q183 0 288 -98.5t105 -270.5q0 -68 -18 -119t-50.5 -94.5t-78.5 -84t-102 -87.5q-64 -54 -98.5 -98.5t-50 -93.5t-15.5 -146v-14h-82v37q0 123 37.5 201t138.5 167l91 79q72 61 103 121t31 138q0 127 -83.5 202t-219.5 75 q-79 0 -148 -17.5t-149 -56.5zM260 78q0 98 80 98q82 0 82 -98t-82 -98q-80 0 -80 98z" />
-<glyph unicode="@" horiz-adv-x="1815" d="M113 561q0 256 108.5 460.5t307 317.5t448.5 113q215 0 380.5 -89t255 -254.5t89.5 -383.5q0 -228 -90.5 -366t-245.5 -138q-89 0 -144.5 54t-64.5 147h-4q-43 -100 -124 -150.5t-189 -50.5q-148 0 -229 96.5t-81 270.5q0 202 120.5 330.5t314.5 128.5q138 0 286 -41 l-22 -464v-30q0 -104 35 -156.5t116 -52.5q103 0 168.5 116.5t65.5 303.5q0 194 -79 340t-225.5 224.5t-334.5 78.5q-230 0 -405.5 -99.5t-270 -281.5t-94.5 -418q0 -322 167 -497.5t474 -175.5q93 0 188.5 18t231.5 70v-99q-203 -80 -414 -80q-349 0 -544 200.5t-195 557.5 zM633 590q0 -143 55 -215t174 -72q255 0 273 346l16 291q-79 27 -193 27q-149 0 -237 -102.5t-88 -274.5z" />
-<glyph unicode="A" horiz-adv-x="1229" d="M0 0l588 1468h65l576 -1468h-115l-203 516h-594l-204 -516h-113zM354 608h523l-199 527q-25 62 -60 172q-27 -96 -59 -174z" />
-<glyph unicode="B" horiz-adv-x="1284" d="M207 0v1462h401q271 0 398 -92t127 -278q0 -127 -77.5 -211.5t-226.5 -108.5v-6q175 -26 257.5 -110.5t82.5 -235.5q0 -202 -134 -311t-380 -109h-448zM309 90h344q406 0 406 330q0 301 -428 301h-322v-631zM309 811h322q206 0 299.5 68.5t93.5 214.5t-105.5 212 t-314.5 66h-295v-561z" />
-<glyph unicode="C" horiz-adv-x="1272" d="M129 735q0 223 84.5 393t243 262.5t368.5 92.5q214 0 383 -80l-41 -92q-160 80 -336 80q-275 0 -433 -176t-158 -482q0 -313 149 -486t426 -173q184 0 338 47v-90q-145 -51 -362 -51q-308 0 -485 199t-177 556z" />
-<glyph unicode="D" horiz-adv-x="1446" d="M207 0v1462h395q350 0 532.5 -183t182.5 -534q0 -368 -193 -556.5t-567 -188.5h-350zM309 90h242q655 0 655 651q0 314 -159.5 472.5t-468.5 158.5h-269v-1282z" />
-<glyph unicode="E" horiz-adv-x="1130" d="M207 0v1462h799v-94h-697v-553h658v-94h-658v-627h697v-94h-799z" />
-<glyph unicode="F" horiz-adv-x="1028" d="M207 0v1462h801v-94h-699v-620h660v-95h-660v-653h-102z" />
-<glyph unicode="G" horiz-adv-x="1481" d="M129 729q0 223 91.5 395.5t262 266.5t391.5 94q239 0 429 -88l-41 -92q-190 88 -394 88q-289 0 -458.5 -178.5t-169.5 -481.5q0 -330 161 -496.5t473 -166.5q202 0 343 57v514h-435v96h539v-667q-212 -90 -477 -90q-346 0 -530.5 195.5t-184.5 553.5z" />
-<glyph unicode="H" horiz-adv-x="1473" d="M207 0v1462h102v-649h854v649h103v-1462h-103v719h-854v-719h-102z" />
-<glyph unicode="I" horiz-adv-x="516" d="M207 0v1462h102v-1462h-102z" />
-<glyph unicode="J" horiz-adv-x="506" d="M-184 -254q78 -20 149 -20q242 0 242 264v1472h102v-1462q0 -369 -342 -369q-92 0 -151 27v88z" />
-<glyph unicode="K" horiz-adv-x="1190" d="M207 0v1462h102v-760l162 162l573 598h130l-599 -618l615 -844h-125l-561 772l-195 -172v-600h-102z" />
-<glyph unicode="L" horiz-adv-x="1051" d="M207 0v1462h102v-1366h697v-96h-799z" />
-<glyph unicode="M" horiz-adv-x="1767" d="M207 0v1462h158l518 -1286h6l518 1286h154v-1462h-103v1108q0 116 12 240h-8l-547 -1348h-65l-545 1350h-8q8 -124 8 -254v-1096h-98z" />
-<glyph unicode="N" horiz-adv-x="1477" d="M207 0v1462h102l865 -1296h6q-9 180 -9 342v954h99v-1462h-103l-866 1298h-8q12 -232 12 -350v-948h-98z" />
-<glyph unicode="O" horiz-adv-x="1565" d="M129 735q0 349 175.5 549.5t479.5 200.5q306 0 479 -201.5t173 -550.5q0 -348 -174 -550.5t-480 -202.5q-305 0 -479 202.5t-174 552.5zM240 733q0 -314 140 -485.5t402 -171.5q264 0 403.5 170t139.5 487q0 316 -139.5 484.5t-401.5 168.5q-261 0 -402.5 -170 t-141.5 -483z" />
-<glyph unicode="P" horiz-adv-x="1198" d="M207 0v1462h358q522 0 522 -420q0 -212 -144 -325t-408 -113h-226v-604h-102zM309 692h201q247 0 357 81.5t110 264.5q0 169 -104 250.5t-322 81.5h-242v-678z" />
-<glyph unicode="Q" horiz-adv-x="1565" d="M129 735q0 349 175.5 549.5t479.5 200.5q306 0 479 -201.5t173 -550.5q0 -294 -126 -486.5t-349 -246.5l333 -348h-166l-282 330l-33 -2h-31q-305 0 -479 202.5t-174 552.5zM240 733q0 -314 140 -485.5t402 -171.5q264 0 403.5 170t139.5 487q0 316 -139.5 484.5 t-401.5 168.5q-261 0 -402.5 -170t-141.5 -483z" />
-<glyph unicode="R" horiz-adv-x="1217" d="M207 0v1462h348q272 0 402 -100.5t130 -302.5q0 -147 -77.5 -248t-235.5 -145l397 -666h-122l-377 637h-363v-637h-102zM309 725h279q185 0 287 82.5t102 243.5q0 167 -100 243t-326 76h-242v-645z" />
-<glyph unicode="S" horiz-adv-x="1116" d="M111 39v102q158 -67 403 -67q180 0 285.5 82.5t105.5 216.5q0 83 -35 137.5t-114 99.5t-232 97q-224 77 -309.5 166.5t-85.5 238.5q0 164 128.5 267.5t330.5 103.5q206 0 387 -78l-37 -88q-182 76 -348 76q-162 0 -258 -75t-96 -204q0 -81 29.5 -133t96.5 -93.5 t230 -99.5q171 -59 257 -114.5t125.5 -126t39.5 -170.5q0 -183 -134.5 -290t-357.5 -107q-268 0 -411 59z" />
-<glyph unicode="T" horiz-adv-x="1073" d="M10 1366v96h1053v-96h-475v-1366h-103v1366h-475z" />
-<glyph unicode="U" horiz-adv-x="1473" d="M190 520v942h103v-946q0 -211 117 -328.5t331 -117.5q209 0 324 115.5t115 320.5v956h102v-946q0 -252 -146 -394t-407 -142q-254 0 -396.5 142.5t-142.5 397.5z" />
-<glyph unicode="V" horiz-adv-x="1182" d="M0 1462h109l368 -995q84 -225 113 -338q20 75 79 233l402 1100h111l-547 -1462h-90z" />
-<glyph unicode="W" horiz-adv-x="1827" d="M51 1462h107l256 -942q15 -57 28 -105.5t23.5 -91t19 -82t15.5 -79.5q24 136 102 413l250 887h113l293 -1018q51 -176 73 -284q13 72 33.5 153t308.5 1149h103l-404 -1462h-84l-321 1128q-40 139 -60 228q-16 -87 -45.5 -200t-322.5 -1156h-86z" />
-<glyph unicode="X" horiz-adv-x="1102" d="M0 0l492 762l-447 700h115l395 -626l401 626h109l-453 -698l490 -764h-117l-432 682l-440 -682h-113z" />
-<glyph unicode="Y" horiz-adv-x="1081" d="M0 1462h117l426 -800l428 800h110l-487 -897v-565h-105v557z" />
-<glyph unicode="Z" horiz-adv-x="1180" d="M82 0v76l856 1290h-817v96h954v-76l-858 -1290h881v-96h-1016z" />
-<glyph unicode="[" horiz-adv-x="653" d="M174 -324v1786h428v-94h-330v-1597h330v-95h-428z" />
-<glyph unicode="\" horiz-adv-x="698" d="M25 1462h102l547 -1462h-103z" />
-<glyph unicode="]" horiz-adv-x="653" d="M51 -229h330v1597h-330v94h428v-1786h-428v95z" />
-<glyph unicode="^" d="M88 561l465 912h68l460 -912h-100l-395 791l-398 -791h-100z" />
-<glyph unicode="_" horiz-adv-x="842" d="M-4 -184h850v-82h-850v82z" />
-<glyph unicode="`" horiz-adv-x="1182" d="M393 1552v17h142q26 -48 98.5 -142t142.5 -170v-16h-69q-96 79 -188.5 171.5t-125.5 139.5z" />
-<glyph unicode="a" horiz-adv-x="1085" d="M98 289q0 159 132.5 247t383.5 93l207 6v72q0 155 -63 234t-203 79q-151 0 -313 -84l-37 86q179 84 354 84q179 0 267.5 -93t88.5 -290v-723h-73l-25 172h-8q-82 -105 -168.5 -148.5t-204.5 -43.5q-160 0 -249 82t-89 227zM203 285q0 -102 62.5 -158.5t176.5 -56.5 q174 0 274.5 99.5t100.5 276.5v107l-190 -8q-229 -11 -326.5 -71.5t-97.5 -188.5z" />
-<glyph unicode="b" horiz-adv-x="1219" d="M182 0v1556h99v-391q0 -88 -4 -162l-3 -85h7q62 98 149.5 144t210.5 46q228 0 343.5 -143.5t115.5 -419.5q0 -271 -121.5 -418t-341.5 -147q-116 0 -209 48t-147 136h-9l-28 -164h-62zM281 528q0 -246 86.5 -353t269.5 -107q178 0 268 124.5t90 354.5q0 471 -356 471 q-192 0 -275 -110t-83 -363v-17z" />
-<glyph unicode="c" horiz-adv-x="973" d="M119 537q0 270 137 420.5t375 150.5q141 0 270 -49l-27 -88q-141 47 -245 47q-200 0 -303 -123.5t-103 -355.5q0 -220 103 -344.5t288 -124.5q148 0 275 53v-92q-104 -51 -273 -51q-233 0 -365 147t-132 410z" />
-<glyph unicode="d" horiz-adv-x="1219" d="M119 528q0 282 118 431t343 149q118 0 204 -43t154 -147h6q-6 126 -6 247v391h98v-1556h-65l-25 166h-8q-124 -186 -356 -186q-225 0 -344 140t-119 408zM223 530q0 -462 359 -462q184 0 270 107t86 353v17q0 252 -84.5 362.5t-273.5 110.5q-178 0 -267.5 -125 t-89.5 -363z" />
-<glyph unicode="e" horiz-adv-x="1124" d="M119 535q0 260 128 416.5t345 156.5q192 0 303 -134t111 -364v-80h-783q2 -224 104.5 -342t293.5 -118q93 0 163.5 13t178.5 56v-90q-92 -40 -170 -54.5t-172 -14.5q-237 0 -369.5 146t-132.5 409zM229 618h672q0 189 -82 295.5t-227 106.5q-157 0 -252 -103.5 t-111 -298.5z" />
-<glyph unicode="f" horiz-adv-x="614" d="M29 1001v58l202 37v84q0 200 73.5 293.5t240.5 93.5q90 0 180 -27l-23 -86q-80 25 -159 25q-116 0 -164.5 -68.5t-48.5 -222.5v-101h256v-86h-256v-1001h-99v1001h-202z" />
-<glyph unicode="g" horiz-adv-x="1071" d="M45 -193q0 112 69.5 186t188.5 101q-49 21 -78.5 59.5t-29.5 88.5q0 109 139 192q-95 39 -148 122.5t-53 191.5q0 163 103.5 261.5t279.5 98.5q107 0 166 -21h348v-69l-225 -14q90 -112 90 -246q0 -157 -104.5 -254.5t-280.5 -97.5q-74 0 -104 6q-59 -31 -90 -73t-31 -89 q0 -52 39.5 -76t132.5 -24h190q177 0 271 -71.5t94 -211.5q0 -172 -139.5 -265.5t-397.5 -93.5q-205 0 -317.5 79t-112.5 220zM150 -184q0 -224 333 -224q428 0 428 273q0 98 -67 142t-217 44h-178q-299 0 -299 -235zM233 748q0 -126 76.5 -195.5t204.5 -69.5 q136 0 208.5 69t72.5 200q0 139 -74.5 208.5t-208.5 69.5q-130 0 -204.5 -74.5t-74.5 -207.5z" />
-<glyph unicode="h" horiz-adv-x="1208" d="M182 0v1556h99v-495l-5 -139h7q61 98 154 142t231 44q370 0 370 -397v-711h-98v705q0 164 -69 238.5t-214 74.5q-195 0 -285.5 -98.5t-90.5 -319.5v-600h-99z" />
-<glyph unicode="i" horiz-adv-x="463" d="M168 1389q0 96 63 96q31 0 48.5 -25t17.5 -71q0 -45 -17.5 -71t-48.5 -26q-63 0 -63 97zM182 0v1087h99v-1087h-99z" />
-<glyph unicode="j" horiz-adv-x="463" d="M-98 -381q69 -20 129 -20q151 0 151 176v1312h99v-1298q0 -135 -63.5 -208t-180.5 -73q-80 0 -135 25v86zM168 1389q0 96 63 96q31 0 48.5 -25t17.5 -71q0 -45 -17.5 -71t-48.5 -26q-63 0 -63 97z" />
-<glyph unicode="k" horiz-adv-x="991" d="M182 0v1556h99v-780l-7 -299h5l555 610h120l-428 -464l465 -623h-119l-413 549l-178 -162v-387h-99z" />
-<glyph unicode="l" horiz-adv-x="463" d="M182 0v1556h99v-1556h-99z" />
-<glyph unicode="m" horiz-adv-x="1808" d="M182 0v1087h82l21 -149h6q45 81 128 125.5t183 44.5q257 0 330 -193h4q53 93 142.5 143t203.5 50q178 0 267 -95t89 -302v-711h-98v713q0 159 -62 232t-190 73q-167 0 -247 -92t-80 -289v-637h-101v743q0 275 -252 275q-171 0 -249 -99.5t-78 -318.5v-600h-99z" />
-<glyph unicode="n" horiz-adv-x="1208" d="M182 0v1087h84l19 -149h6q106 170 377 170q370 0 370 -397v-711h-98v705q0 164 -69 238.5t-214 74.5q-195 0 -285.5 -98.5t-90.5 -319.5v-600h-99z" />
-<glyph unicode="o" horiz-adv-x="1200" d="M119 545q0 266 129 414.5t354 148.5q224 0 351.5 -150.5t127.5 -412.5q0 -266 -129 -415.5t-356 -149.5q-143 0 -252 69t-167 198t-58 298zM223 545q0 -224 98.5 -349.5t278.5 -125.5t278.5 125.5t98.5 349.5q0 225 -99.5 349t-279.5 124t-277.5 -123.5t-97.5 -349.5z " />
-<glyph unicode="p" horiz-adv-x="1219" d="M182 -492v1579h84l19 -155h6q112 176 358 176q220 0 335.5 -144.5t115.5 -420.5q0 -268 -121.5 -415.5t-331.5 -147.5q-251 0 -366 188h-7l3 -84q4 -74 4 -162v-414h-99zM281 541q0 -255 85.5 -364t278.5 -109q167 0 258.5 124t91.5 347q0 479 -346 479 q-190 0 -279 -104.5t-89 -340.5v-32z" />
-<glyph unicode="q" horiz-adv-x="1219" d="M119 532q0 275 118 425.5t338 150.5q236 0 353 -174h6l18 153h84v-1579h-98v414q0 122 6 248h-6q-118 -190 -369 -190q-214 0 -332 142t-118 410zM223 530q0 -229 89.5 -345.5t258.5 -116.5q198 0 282.5 109t84.5 366v12q0 245 -85 354t-271 109q-176 0 -267.5 -124 t-91.5 -364z" />
-<glyph unicode="r" horiz-adv-x="797" d="M182 0v1087h84l10 -196h7q67 120 143 168.5t184 48.5q69 0 148 -14l-19 -95q-68 17 -141 17q-139 0 -228 -118t-89 -298v-600h-99z" />
-<glyph unicode="s" horiz-adv-x="954" d="M84 47v107q164 -82 346 -82q161 0 244.5 53.5t83.5 142.5q0 82 -66.5 138t-218.5 110q-163 59 -229 101.5t-99.5 96t-33.5 130.5q0 122 102.5 193t286.5 71q176 0 334 -66l-37 -90q-160 66 -297 66q-133 0 -211 -44t-78 -122q0 -85 60.5 -136t236.5 -114 q147 -53 214 -95.5t100.5 -96.5t33.5 -127q0 -146 -111 -224.5t-315 -78.5q-218 0 -346 67z" />
-<glyph unicode="t" horiz-adv-x="686" d="M25 1001v58l161 45l50 246h51v-263h319v-86h-319v-688q0 -125 44 -185t138 -60t164 16v-80q-72 -24 -166 -24q-144 0 -212.5 77t-68.5 242v702h-161z" />
-<glyph unicode="u" horiz-adv-x="1208" d="M170 377v710h98v-704q0 -164 69 -238.5t214 -74.5q194 0 285.5 98t91.5 319v600h98v-1087h-84l-18 150h-6q-106 -170 -377 -170q-371 0 -371 397z" />
-<glyph unicode="v" horiz-adv-x="940" d="M0 1087h102l281 -739q56 -142 84 -248h6q41 136 84 250l281 737h102l-420 -1087h-100z" />
-<glyph unicode="w" horiz-adv-x="1481" d="M31 1087h106l174 -630q61 -234 80 -344h6q59 234 86 311l224 663h90l213 -661q72 -235 88 -311h6q8 65 80 348l166 624h100l-295 -1087h-104l-238 727q-23 74 -59 217h-6l-21 -74l-45 -145l-242 -725h-98z" />
-<glyph unicode="x" horiz-adv-x="1020" d="M55 0l394 559l-379 528h114l324 -458l321 458h109l-373 -528l400 -559h-115l-342 485l-344 -485h-109z" />
-<glyph unicode="y" horiz-adv-x="940" d="M0 1087h102l230 -610q105 -281 133 -379h6q42 129 137 385l230 604h102l-487 -1263q-59 -154 -99 -208t-93.5 -81t-129.5 -27q-57 0 -127 21v86q58 -16 125 -16q51 0 90 24t70.5 74.5t73 160t53.5 142.5z" />
-<glyph unicode="z" horiz-adv-x="944" d="M82 0v63l645 936h-598v88h727v-63l-649 -936h651v-88h-776z" />
-<glyph unicode="{" horiz-adv-x="723" d="M61 528v80q122 2 176 51t54 148v350q0 299 360 305v-90q-138 -5 -200 -58t-62 -157v-305q0 -130 -44 -194t-142 -85v-8q97 -20 141.5 -83.5t44.5 -186.5v-322q0 -102 59.5 -152.5t202.5 -53.5v-91q-195 0 -277.5 75t-82.5 231v337q0 205 -230 209z" />
-<glyph unicode="|" horiz-adv-x="1108" d="M508 -506v2067h92v-2067h-92z" />
-<glyph unicode="}" horiz-adv-x="723" d="M72 -233q141 2 201.5 52.5t60.5 153.5v322q0 123 44.5 186.5t141.5 83.5v8q-97 20 -141.5 84t-44.5 195v305q0 103 -61.5 156.5t-200.5 58.5v90q174 0 267 -77.5t93 -227.5v-350q0 -100 54.5 -148.5t175.5 -50.5v-80q-230 -4 -230 -209v-337q0 -155 -82.5 -230.5 t-277.5 -75.5v91z" />
-<glyph unicode="~" d="M111 625v94q108 110 233 110q61 0 115 -13.5t155 -57.5q126 -58 220 -58q56 0 109.5 30.5t115.5 94.5v-96q-48 -49 -104.5 -81t-129.5 -32q-116 0 -270 72q-124 57 -221 57q-49 0 -108 -30.5t-115 -89.5z" />
-<glyph unicode="&#xa1;" horiz-adv-x="492" d="M166 1010q0 98 80 98q82 0 82 -98q0 -53 -23.5 -76t-58.5 -23q-34 0 -57 23t-23 76zM186 -375l29 1086h61l29 -1086h-119z" />
-<glyph unicode="&#xa2;" d="M211 745q0 232 102.5 381.5t288.5 182.5v174h82v-166h14q131 0 275 -55l-31 -84q-134 51 -237 51q-187 0 -288.5 -122.5t-101.5 -358.5q0 -225 100.5 -349.5t280.5 -124.5q131 0 267 58v-92q-110 -56 -267 -56h-12v-204h-82v210q-186 30 -288.5 175t-102.5 380z" />
-<glyph unicode="&#xa3;" d="M78 0v84q110 21 171.5 110t61.5 224v258h-211v82h211v297q0 204 98 315t281 111q175 0 330 -68l-35 -86q-157 66 -295 66q-141 0 -209.5 -81t-68.5 -253v-301h411v-82h-411v-256q0 -116 -35 -196t-113 -128h809v-96h-995z" />
-<glyph unicode="&#xa4;" d="M127 326l139 141q-90 106 -90 256q0 147 90 258l-139 141l59 60l138 -142q103 93 260 93q155 0 260 -93l137 142l59 -60l-139 -141q90 -111 90 -258q0 -151 -90 -256l139 -141l-59 -60l-137 142q-110 -93 -260 -93q-153 0 -260 93l-138 -142zM260 723q0 -136 94.5 -232 t229.5 -96q134 0 228.5 95.5t94.5 232.5q0 136 -95 233t-228 97q-134 0 -229 -97t-95 -233z" />
-<glyph unicode="&#xa5;" d="M43 1462h117l426 -796l428 796h110l-432 -788h283v-82h-338v-205h338v-82h-338v-305h-105v305h-337v82h337v205h-337v82h278z" />
-<glyph unicode="&#xa6;" horiz-adv-x="1108" d="M508 258h92v-764h-92v764zM508 797v764h92v-764h-92z" />
-<glyph unicode="&#xa7;" horiz-adv-x="1057" d="M129 63v95q182 -78 332 -78q162 0 247 49.5t85 140.5q0 55 -25 87.5t-88.5 65.5t-190.5 79q-200 73 -272 141.5t-72 169.5q0 83 50.5 152.5t138.5 107.5q-86 47 -125 102t-39 136q0 117 101.5 183.5t275.5 66.5q175 0 336 -64l-35 -80q-91 34 -158.5 47t-144.5 13 q-134 0 -205.5 -44.5t-71.5 -119.5q0 -54 25.5 -88.5t85.5 -65.5t188 -74q192 -64 264 -132.5t72 -170.5q0 -173 -186 -274q86 -42 129 -96t43 -136q0 -135 -113 -207.5t-311 -72.5q-92 0 -171 15t-165 52zM246 825q0 -65 31.5 -104t105.5 -75t250 -99q82 41 126 98t44 121 q0 62 -32 102t-108.5 77t-236.5 87q-81 -23 -130.5 -79t-49.5 -128z" />
-<glyph unicode="&#xa8;" horiz-adv-x="1182" d="M336 1389q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86zM717 1389q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86z" />
-<glyph unicode="&#xa9;" horiz-adv-x="1704" d="M100 731q0 200 100 375t275 276t377 101q200 0 375 -100t276 -275t101 -377q0 -197 -97 -370t-272 -277t-383 -104q-207 0 -382 103.5t-272.5 276.5t-97.5 371zM193 731q0 -178 88.5 -329.5t240.5 -240.5t330 -89t329.5 88.5t240.5 240.5t89 330q0 174 -85.5 325 t-239 243t-334.5 92q-176 0 -328.5 -88.5t-241.5 -242.5t-89 -329zM489 725q0 208 111 332.5t297 124.5q119 0 227 -52l-37 -83q-98 45 -190 45q-142 0 -222.5 -94.5t-80.5 -264.5q0 -186 74.5 -275t220.5 -89q84 0 198 43v-88q-102 -45 -208 -45q-187 0 -288.5 115 t-101.5 331z" />
-<glyph unicode="&#xaa;" horiz-adv-x="686" d="M78 989q0 100 80 151.5t241 59.5l95 4v43q0 77 -38 114.5t-106 37.5q-87 0 -196 -49l-33 73q117 56 231 56q228 0 228 -215v-451h-68l-25 72q-84 -84 -202 -84q-95 0 -151 49t-56 139zM168 993q0 -54 35 -85t96 -31q90 0 142.5 50t52.5 142v64l-88 -5q-116 -6 -177 -36.5 t-61 -98.5z" />
-<glyph unicode="&#xab;" horiz-adv-x="885" d="M82 516v27l309 393l62 -43l-254 -363l254 -362l-62 -43zM442 516v27l310 393l61 -43l-254 -363l254 -362l-61 -43z" />
-<glyph unicode="&#xac;" d="M111 682v82h927v-494h-82v412h-845z" />
-<glyph unicode="&#xad;" horiz-adv-x="659" d="M92 512v82h475v-82h-475z" />
-<glyph unicode="&#xae;" horiz-adv-x="1704" d="M100 731q0 200 100 375t275 276t377 101q200 0 375 -100t276 -275t101 -377q0 -197 -97 -370t-272 -277t-383 -104q-207 0 -382 103.5t-272.5 276.5t-97.5 371zM193 731q0 -178 88.5 -329.5t240.5 -240.5t330 -89t329.5 88.5t240.5 240.5t89 330q0 174 -85.5 325 t-239 243t-334.5 92q-176 0 -328.5 -88.5t-241.5 -242.5t-89 -329zM608 291v880h211q143 0 222 -62t79 -191q0 -79 -38.5 -139.5t-110.5 -94.5l237 -393h-121l-210 360h-168v-360h-101zM709 731h112q91 0 143 46.5t52 135.5q0 172 -197 172h-110v-354z" />
-<glyph unicode="&#xaf;" horiz-adv-x="1024" d="M-6 1556v82h1036v-82h-1036z" />
-<glyph unicode="&#xb0;" horiz-adv-x="877" d="M139 1184q0 132 86.5 215.5t212.5 83.5t212.5 -83.5t86.5 -215.5t-86.5 -215.5t-212.5 -83.5q-130 0 -214.5 83t-84.5 216zM229 1184q0 -91 61 -154t148 -63q86 0 147.5 62t61.5 155q0 92 -60 154.5t-149 62.5q-90 0 -149.5 -64t-59.5 -153z" />
-<glyph unicode="&#xb1;" d="M111 1v82h948v-82h-948zM111 682v82h432v434h82v-434h434v-82h-434v-432h-82v432h-432z" />
-<glyph unicode="&#xb2;" horiz-adv-x="688" d="M53 586v78l242 237q125 121 172 193t47 149q0 71 -46.5 112.5t-123.5 41.5q-108 0 -217 -82l-49 65q119 103 270 103q124 0 194 -63.5t70 -174.5q0 -47 -13 -89t-40 -85.5t-68.5 -90t-308.5 -306.5h447v-88h-576z" />
-<glyph unicode="&#xb3;" horiz-adv-x="688" d="M41 629v88q136 -62 266 -62q115 0 174.5 49t59.5 136q0 83 -59.5 122t-178.5 39h-131v84h135q105 0 158 43.5t53 120.5q0 67 -47 107.5t-127 40.5q-128 0 -246 -78l-47 70q130 94 293 94q127 0 199.5 -60t72.5 -163q0 -78 -44 -131.5t-117 -75.5q186 -45 186 -211 q0 -130 -88.5 -201.5t-247.5 -71.5q-144 0 -264 60z" />
-<glyph unicode="&#xb4;" horiz-adv-x="1182" d="M393 1241v16q73 79 144.5 171.5t97.5 140.5h141v-17q-36 -52 -122.5 -138t-190.5 -173h-70z" />
-<glyph unicode="&#xb5;" horiz-adv-x="1221" d="M182 -492v1579h99v-704q0 -164 69 -238.5t213 -74.5q194 0 285.5 98t91.5 319v600h98v-1087h-84l-18 150h-6q-50 -77 -150 -123.5t-217 -46.5q-99 0 -167.5 27.5t-119.5 84.5q5 -92 5 -170v-414h-99z" />
-<glyph unicode="&#xb6;" horiz-adv-x="1341" d="M113 1042q0 260 109 387t341 127h543v-1816h-100v1722h-228v-1722h-100v819q-64 -18 -146 -18q-216 0 -317.5 125t-101.5 376z" />
-<glyph unicode="&#xb7;" horiz-adv-x="487" d="M162 721q0 98 80 98q82 0 82 -98t-82 -98q-80 0 -80 98z" />
-<glyph unicode="&#xb8;" horiz-adv-x="420" d="M43 -393q30 -10 92 -10q78 0 119 28t41 80q0 94 -193 121l93 174h96l-66 -117q168 -37 168 -174q0 -100 -67.5 -150.5t-188.5 -50.5q-68 0 -94 11v88z" />
-<glyph unicode="&#xb9;" horiz-adv-x="688" d="M76 1298l274 164h92v-876h-98v547q0 99 12 233q-26 -23 -233 -145z" />
-<glyph unicode="&#xba;" horiz-adv-x="739" d="M70 1141q0 162 78 250t223 88q142 0 220.5 -87t78.5 -251q0 -161 -80 -250.5t-223 -89.5t-220 86t-77 254zM160 1141q0 -264 209 -264t209 264q0 131 -50 194.5t-159 63.5t-159 -63.5t-50 -194.5z" />
-<glyph unicode="&#xbb;" horiz-adv-x="885" d="M72 168l254 362l-254 363l61 43l309 -391v-27l-309 -393zM432 168l254 362l-254 363l62 43l309 -391v-27l-309 -393z" />
-<glyph unicode="&#xbc;" horiz-adv-x="1516" d="M59 1298l274 164h92v-876h-98v547q0 99 12 233q-26 -23 -233 -145zM243 0l811 1462h94l-811 -1462h-94zM760 242v60l407 581h96v-563h129v-78h-129v-241h-90v241h-413zM864 320h309v221q0 132 8 232q-6 -12 -21.5 -35.5t-295.5 -417.5z" />
-<glyph unicode="&#xbd;" horiz-adv-x="1516" d="M11 1298l274 164h92v-876h-98v547q0 99 12 233q-26 -23 -233 -145zM168 0l811 1462h94l-811 -1462h-94zM827 1v78l242 237q125 121 172 193t47 149q0 71 -46.5 112.5t-123.5 41.5q-108 0 -217 -82l-49 65q119 103 270 103q124 0 194 -63.5t70 -174.5q0 -47 -13 -89 t-40 -85.5t-68.5 -90t-308.5 -306.5h447v-88h-576z" />
-<glyph unicode="&#xbe;" horiz-adv-x="1516" d="M41 629v88q136 -62 266 -62q115 0 174.5 49t59.5 136q0 83 -59.5 122t-178.5 39h-131v84h135q105 0 158 43.5t53 120.5q0 67 -47 107.5t-127 40.5q-128 0 -246 -78l-47 70q130 94 293 94q127 0 199.5 -60t72.5 -163q0 -78 -44 -131.5t-117 -75.5q186 -45 186 -211 q0 -130 -88.5 -201.5t-247.5 -71.5q-144 0 -264 60zM395 0l811 1462h94l-811 -1462h-94zM863 242v60l407 581h96v-563h129v-78h-129v-241h-90v241h-413zM967 320h309v221q0 132 8 232q-6 -12 -21.5 -35.5t-295.5 -417.5z" />
-<glyph unicode="&#xbf;" horiz-adv-x="862" d="M74 -27q0 70 20 124t58.5 102t171.5 159q64 53 98.5 98.5t49.5 94t15 145.5v15h82v-37q0 -125 -39.5 -204.5t-136.5 -164.5l-90 -79q-73 -61 -104 -120.5t-31 -138.5q0 -124 82 -200t221 -76q125 0 233 46l64 27l37 -79q-111 -48 -185.5 -64t-152.5 -16q-184 0 -288.5 99 t-104.5 269zM440 1010q0 98 80 98q82 0 82 -98q0 -53 -23.5 -76t-58.5 -23q-34 0 -57 23t-23 76z" />
-<glyph unicode="&#xc0;" horiz-adv-x="1229" d="M0 0l588 1468h65l576 -1468h-115l-203 516h-594l-204 -516h-113zM354 608h523l-199 527q-25 62 -60 172q-27 -96 -59 -174zM337 1890v17h142q26 -48 98.5 -142t142.5 -170v-16h-69q-96 79 -188.5 171.5t-125.5 139.5z" />
-<glyph unicode="&#xc1;" horiz-adv-x="1229" d="M0 0l588 1468h65l576 -1468h-115l-203 516h-594l-204 -516h-113zM354 608h523l-199 527q-25 62 -60 172q-27 -96 -59 -174zM504 1579v16q73 79 144.5 171.5t97.5 140.5h141v-17q-36 -52 -122.5 -138t-190.5 -173h-70z" />
-<glyph unicode="&#xc2;" horiz-adv-x="1229" d="M0 0l588 1468h65l576 -1468h-115l-203 516h-594l-204 -516h-113zM354 608h523l-199 527q-25 62 -60 172q-27 -96 -59 -174zM328 1579v16q62 67 131.5 156t110.5 156h98q68 -120 242 -312v-16h-70q-122 101 -221 207q-108 -114 -221 -207h-70z" />
-<glyph unicode="&#xc3;" horiz-adv-x="1229" d="M0 0l588 1468h65l576 -1468h-115l-203 516h-594l-204 -516h-113zM354 608h523l-199 527q-25 62 -60 172q-27 -96 -59 -174zM287 1581q10 111 63 174.5t137 63.5q48 0 88 -25t82 -59q34 -28 66 -50t61 -22q46 0 77 36.5t48 119.5h76q-16 -116 -69 -177t-132 -61 q-36 0 -75 18.5t-101 71.5q-32 26 -62.5 46t-62.5 20q-45 0 -75 -34.5t-48 -121.5h-73z" />
-<glyph unicode="&#xc4;" horiz-adv-x="1229" d="M0 0l588 1468h65l576 -1468h-115l-203 516h-594l-204 -516h-113zM354 608h523l-199 527q-25 62 -60 172q-27 -96 -59 -174zM367 1727q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86zM748 1727q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86z" />
-<glyph unicode="&#xc5;" horiz-adv-x="1229" d="M0 0l588 1468h65l576 -1468h-115l-203 516h-594l-204 -516h-113zM354 608h523l-199 527q-25 62 -60 172q-27 -96 -59 -174zM402 1610q0 94 60 152.5t157 58.5t157 -59t60 -152q0 -97 -60 -155t-157 -58t-157 58t-60 155zM482 1610q0 -66 37.5 -103.5t99.5 -37.5 t99.5 37.5t37.5 103.5q0 64 -39 101.5t-98 37.5q-62 0 -99.5 -38t-37.5 -101z" />
-<glyph unicode="&#xc6;" horiz-adv-x="1653" d="M-2 0l653 1462h877v-94h-615v-553h576v-94h-576v-627h615v-94h-717v516h-475l-227 -516h-111zM377 608h434v760h-100z" />
-<glyph unicode="&#xc7;" horiz-adv-x="1272" d="M129 735q0 223 84.5 393t243 262.5t368.5 92.5q214 0 383 -80l-41 -92q-160 80 -336 80q-275 0 -433 -176t-158 -482q0 -313 149 -486t426 -173q184 0 338 47v-90q-145 -51 -362 -51q-308 0 -485 199t-177 556zM561 -393q30 -10 92 -10q78 0 119 28t41 80q0 94 -193 121 l93 174h96l-66 -117q168 -37 168 -174q0 -100 -67.5 -150.5t-188.5 -50.5q-68 0 -94 11v88z" />
-<glyph unicode="&#xc8;" horiz-adv-x="1130" d="M207 0v1462h799v-94h-697v-553h658v-94h-658v-627h697v-94h-799zM314 1890v17h142q26 -48 98.5 -142t142.5 -170v-16h-69q-96 79 -188.5 171.5t-125.5 139.5z" />
-<glyph unicode="&#xc9;" horiz-adv-x="1130" d="M207 0v1462h799v-94h-697v-553h658v-94h-658v-627h697v-94h-799zM463 1579v16q73 79 144.5 171.5t97.5 140.5h141v-17q-36 -52 -122.5 -138t-190.5 -173h-70z" />
-<glyph unicode="&#xca;" horiz-adv-x="1130" d="M207 0v1462h799v-94h-697v-553h658v-94h-658v-627h697v-94h-799zM315 1579v16q62 67 131.5 156t110.5 156h98q68 -120 242 -312v-16h-70q-122 101 -221 207q-108 -114 -221 -207h-70z" />
-<glyph unicode="&#xcb;" horiz-adv-x="1130" d="M207 0v1462h799v-94h-697v-553h658v-94h-658v-627h697v-94h-799zM354 1727q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86zM735 1727q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86z" />
-<glyph unicode="&#xcc;" horiz-adv-x="516" d="M207 0v1462h102v-1462h-102zM-63 1890v17h142q26 -48 98.5 -142t142.5 -170v-16h-69q-96 79 -188.5 171.5t-125.5 139.5z" />
-<glyph unicode="&#xcd;" horiz-adv-x="516" d="M207 0v1462h102v-1462h-102zM191 1579v16q73 79 144.5 171.5t97.5 140.5h141v-17q-36 -52 -122.5 -138t-190.5 -173h-70z" />
-<glyph unicode="&#xce;" horiz-adv-x="516" d="M207 0v1462h102v-1462h-102zM-32 1579v16q62 67 131.5 156t110.5 156h98q68 -120 242 -312v-16h-70q-122 101 -221 207q-108 -114 -221 -207h-70z" />
-<glyph unicode="&#xcf;" horiz-adv-x="516" d="M207 0v1462h102v-1462h-102zM5 1727q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86zM386 1727q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86z" />
-<glyph unicode="&#xd0;" horiz-adv-x="1466" d="M47 678v94h160v690h395q350 0 532.5 -183t182.5 -534q0 -368 -193 -556.5t-567 -188.5h-350v678h-160zM309 90h242q655 0 655 651q0 314 -159.5 472.5t-468.5 158.5h-269v-600h406v-94h-406v-588z" />
-<glyph unicode="&#xd1;" horiz-adv-x="1477" d="M207 0v1462h102l865 -1296h6q-9 180 -9 342v954h99v-1462h-103l-866 1298h-8q12 -232 12 -350v-948h-98zM400 1581q10 111 63 174.5t137 63.5q48 0 88 -25t82 -59q34 -28 66 -50t61 -22q46 0 77 36.5t48 119.5h76q-16 -116 -69 -177t-132 -61q-36 0 -75 18.5t-101 71.5 q-32 26 -62.5 46t-62.5 20q-45 0 -75 -34.5t-48 -121.5h-73z" />
-<glyph unicode="&#xd2;" horiz-adv-x="1565" d="M129 735q0 349 175.5 549.5t479.5 200.5q306 0 479 -201.5t173 -550.5q0 -348 -174 -550.5t-480 -202.5q-305 0 -479 202.5t-174 552.5zM240 733q0 -314 140 -485.5t402 -171.5q264 0 403.5 170t139.5 487q0 316 -139.5 484.5t-401.5 168.5q-261 0 -402.5 -170 t-141.5 -483zM502 1890v17h142q26 -48 98.5 -142t142.5 -170v-16h-69q-96 79 -188.5 171.5t-125.5 139.5z" />
-<glyph unicode="&#xd3;" horiz-adv-x="1565" d="M129 735q0 349 175.5 549.5t479.5 200.5q306 0 479 -201.5t173 -550.5q0 -348 -174 -550.5t-480 -202.5q-305 0 -479 202.5t-174 552.5zM240 733q0 -314 140 -485.5t402 -171.5q264 0 403.5 170t139.5 487q0 316 -139.5 484.5t-401.5 168.5q-261 0 -402.5 -170 t-141.5 -483zM686 1579v16q73 79 144.5 171.5t97.5 140.5h141v-17q-36 -52 -122.5 -138t-190.5 -173h-70z" />
-<glyph unicode="&#xd4;" horiz-adv-x="1565" d="M129 735q0 349 175.5 549.5t479.5 200.5q306 0 479 -201.5t173 -550.5q0 -348 -174 -550.5t-480 -202.5q-305 0 -479 202.5t-174 552.5zM240 733q0 -314 140 -485.5t402 -171.5q264 0 403.5 170t139.5 487q0 316 -139.5 484.5t-401.5 168.5q-261 0 -402.5 -170 t-141.5 -483zM492 1579v16q62 67 131.5 156t110.5 156h98q68 -120 242 -312v-16h-70q-122 101 -221 207q-108 -114 -221 -207h-70z" />
-<glyph unicode="&#xd5;" horiz-adv-x="1565" d="M129 735q0 349 175.5 549.5t479.5 200.5q306 0 479 -201.5t173 -550.5q0 -348 -174 -550.5t-480 -202.5q-305 0 -479 202.5t-174 552.5zM240 733q0 -314 140 -485.5t402 -171.5q264 0 403.5 170t139.5 487q0 316 -139.5 484.5t-401.5 168.5q-261 0 -402.5 -170 t-141.5 -483zM443 1581q10 111 63 174.5t137 63.5q48 0 88 -25t82 -59q34 -28 66 -50t61 -22q46 0 77 36.5t48 119.5h76q-16 -116 -69 -177t-132 -61q-36 0 -75 18.5t-101 71.5q-32 26 -62.5 46t-62.5 20q-45 0 -75 -34.5t-48 -121.5h-73z" />
-<glyph unicode="&#xd6;" horiz-adv-x="1565" d="M129 735q0 349 175.5 549.5t479.5 200.5q306 0 479 -201.5t173 -550.5q0 -348 -174 -550.5t-480 -202.5q-305 0 -479 202.5t-174 552.5zM240 733q0 -314 140 -485.5t402 -171.5q264 0 403.5 170t139.5 487q0 316 -139.5 484.5t-401.5 168.5q-261 0 -402.5 -170 t-141.5 -483zM529 1727q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86zM910 1727q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86z" />
-<glyph unicode="&#xd7;" d="M119 1130l57 58l408 -408l409 408l58 -58l-408 -407l406 -408l-58 -57l-407 408l-406 -408l-57 57l405 408z" />
-<glyph unicode="&#xd8;" horiz-adv-x="1565" d="M129 735q0 349 175.5 549.5t479.5 200.5q232 0 392 -121l108 152l72 -60l-111 -153q191 -207 191 -570q0 -348 -174 -550.5t-480 -202.5q-236 0 -395 120l-86 -120l-74 59l90 127q-188 200 -188 569zM240 733q0 -312 139 -483l739 1034q-133 102 -334 102 q-261 0 -402.5 -170t-141.5 -483zM444 182q133 -106 338 -106q264 0 403.5 170t139.5 487q0 315 -139 486z" />
-<glyph unicode="&#xd9;" horiz-adv-x="1473" d="M190 520v942h103v-946q0 -211 117 -328.5t331 -117.5q209 0 324 115.5t115 320.5v956h102v-946q0 -252 -146 -394t-407 -142q-254 0 -396.5 142.5t-142.5 397.5zM450 1890v17h142q26 -48 98.5 -142t142.5 -170v-16h-69q-96 79 -188.5 171.5t-125.5 139.5z" />
-<glyph unicode="&#xda;" horiz-adv-x="1473" d="M190 520v942h103v-946q0 -211 117 -328.5t331 -117.5q209 0 324 115.5t115 320.5v956h102v-946q0 -252 -146 -394t-407 -142q-254 0 -396.5 142.5t-142.5 397.5zM633 1579v16q73 79 144.5 171.5t97.5 140.5h141v-17q-36 -52 -122.5 -138t-190.5 -173h-70z" />
-<glyph unicode="&#xdb;" horiz-adv-x="1473" d="M190 520v942h103v-946q0 -211 117 -328.5t331 -117.5q209 0 324 115.5t115 320.5v956h102v-946q0 -252 -146 -394t-407 -142q-254 0 -396.5 142.5t-142.5 397.5zM444 1579v16q62 67 131.5 156t110.5 156h98q68 -120 242 -312v-16h-70q-122 101 -221 207 q-108 -114 -221 -207h-70z" />
-<glyph unicode="&#xdc;" horiz-adv-x="1473" d="M190 520v942h103v-946q0 -211 117 -328.5t331 -117.5q209 0 324 115.5t115 320.5v956h102v-946q0 -252 -146 -394t-407 -142q-254 0 -396.5 142.5t-142.5 397.5zM481 1727q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86zM862 1727q0 46 15.5 66t47.5 20 q64 0 64 -86t-64 -86q-63 0 -63 86z" />
-<glyph unicode="&#xdd;" horiz-adv-x="1081" d="M0 1462h117l426 -800l428 800h110l-487 -897v-565h-105v557zM434 1579v16q73 79 144.5 171.5t97.5 140.5h141v-17q-36 -52 -122.5 -138t-190.5 -173h-70z" />
-<glyph unicode="&#xde;" horiz-adv-x="1198" d="M207 0v1462h102v-264h256q522 0 522 -420q0 -212 -144 -325t-408 -113h-226v-340h-102zM309 428h201q247 0 357 81.5t110 264.5q0 169 -104 250.5t-322 81.5h-242v-678z" />
-<glyph unicode="&#xdf;" horiz-adv-x="1194" d="M182 0v1206q0 173 103.5 267t292.5 94q188 0 285.5 -72.5t97.5 -210.5q0 -139 -139 -250q-81 -64 -110.5 -100.5t-29.5 -75.5q0 -44 14.5 -68t51.5 -57t102 -78q106 -75 151.5 -124.5t68 -103t22.5 -120.5q0 -156 -88 -241.5t-246 -85.5q-95 0 -174.5 18.5t-126.5 48.5 v107q65 -38 148.5 -62t152.5 -24q114 0 174.5 54.5t60.5 160.5q0 83 -39 144t-149 136q-127 87 -175 147t-48 146q0 60 32.5 110t106.5 108q74 57 106.5 105.5t32.5 106.5q0 93 -70 143t-202 50q-145 0 -226 -69t-81 -196v-1214h-99z" />
-<glyph unicode="&#xe0;" horiz-adv-x="1085" d="M98 289q0 159 132.5 247t383.5 93l207 6v72q0 155 -63 234t-203 79q-151 0 -313 -84l-37 86q179 84 354 84q179 0 267.5 -93t88.5 -290v-723h-73l-25 172h-8q-82 -105 -168.5 -148.5t-204.5 -43.5q-160 0 -249 82t-89 227zM203 285q0 -102 62.5 -158.5t176.5 -56.5 q174 0 274.5 99.5t100.5 276.5v107l-190 -8q-229 -11 -326.5 -71.5t-97.5 -188.5zM255 1552v17h142q26 -48 98.5 -142t142.5 -170v-16h-69q-96 79 -188.5 171.5t-125.5 139.5z" />
-<glyph unicode="&#xe1;" horiz-adv-x="1085" d="M98 289q0 159 132.5 247t383.5 93l207 6v72q0 155 -63 234t-203 79q-151 0 -313 -84l-37 86q179 84 354 84q179 0 267.5 -93t88.5 -290v-723h-73l-25 172h-8q-82 -105 -168.5 -148.5t-204.5 -43.5q-160 0 -249 82t-89 227zM203 285q0 -102 62.5 -158.5t176.5 -56.5 q174 0 274.5 99.5t100.5 276.5v107l-190 -8q-229 -11 -326.5 -71.5t-97.5 -188.5zM422 1241v16q73 79 144.5 171.5t97.5 140.5h141v-17q-36 -52 -122.5 -138t-190.5 -173h-70z" />
-<glyph unicode="&#xe2;" horiz-adv-x="1085" d="M98 289q0 159 132.5 247t383.5 93l207 6v72q0 155 -63 234t-203 79q-151 0 -313 -84l-37 86q179 84 354 84q179 0 267.5 -93t88.5 -290v-723h-73l-25 172h-8q-82 -105 -168.5 -148.5t-204.5 -43.5q-160 0 -249 82t-89 227zM203 285q0 -102 62.5 -158.5t176.5 -56.5 q174 0 274.5 99.5t100.5 276.5v107l-190 -8q-229 -11 -326.5 -71.5t-97.5 -188.5zM251 1241v16q62 67 131.5 156t110.5 156h98q68 -120 242 -312v-16h-70q-122 101 -221 207q-108 -114 -221 -207h-70z" />
-<glyph unicode="&#xe3;" horiz-adv-x="1085" d="M98 289q0 159 132.5 247t383.5 93l207 6v72q0 155 -63 234t-203 79q-151 0 -313 -84l-37 86q179 84 354 84q179 0 267.5 -93t88.5 -290v-723h-73l-25 172h-8q-82 -105 -168.5 -148.5t-204.5 -43.5q-160 0 -249 82t-89 227zM203 285q0 -102 62.5 -158.5t176.5 -56.5 q174 0 274.5 99.5t100.5 276.5v107l-190 -8q-229 -11 -326.5 -71.5t-97.5 -188.5zM200 1243q10 111 63 174.5t137 63.5q48 0 88 -25t82 -59q34 -28 66 -50t61 -22q46 0 77 36.5t48 119.5h76q-16 -116 -69 -177t-132 -61q-36 0 -75 18.5t-101 71.5q-32 26 -62.5 46t-62.5 20 q-45 0 -75 -34.5t-48 -121.5h-73z" />
-<glyph unicode="&#xe4;" horiz-adv-x="1085" d="M98 289q0 159 132.5 247t383.5 93l207 6v72q0 155 -63 234t-203 79q-151 0 -313 -84l-37 86q179 84 354 84q179 0 267.5 -93t88.5 -290v-723h-73l-25 172h-8q-82 -105 -168.5 -148.5t-204.5 -43.5q-160 0 -249 82t-89 227zM203 285q0 -102 62.5 -158.5t176.5 -56.5 q174 0 274.5 99.5t100.5 276.5v107l-190 -8q-229 -11 -326.5 -71.5t-97.5 -188.5zM282 1389q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86zM663 1389q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86z" />
-<glyph unicode="&#xe5;" horiz-adv-x="1085" d="M98 289q0 159 132.5 247t383.5 93l207 6v72q0 155 -63 234t-203 79q-151 0 -313 -84l-37 86q179 84 354 84q179 0 267.5 -93t88.5 -290v-723h-73l-25 172h-8q-82 -105 -168.5 -148.5t-204.5 -43.5q-160 0 -249 82t-89 227zM203 285q0 -102 62.5 -158.5t176.5 -56.5 q174 0 274.5 99.5t100.5 276.5v107l-190 -8q-229 -11 -326.5 -71.5t-97.5 -188.5zM325 1456q0 94 60 152.5t157 58.5t157 -59t60 -152q0 -97 -60 -155t-157 -58t-157 58t-60 155zM405 1456q0 -66 37.5 -103.5t99.5 -37.5t99.5 37.5t37.5 103.5q0 64 -39 101.5t-98 37.5 q-62 0 -99.5 -38t-37.5 -101z" />
-<glyph unicode="&#xe6;" horiz-adv-x="1731" d="M98 289q0 154 125 243t377 97l201 6v72q0 155 -61.5 234t-198.5 79q-148 0 -305 -84l-37 86q173 84 346 84q261 0 325 -211q111 213 347 213q184 0 289.5 -134.5t105.5 -363.5v-80h-715q0 -460 348 -460q85 0 150 12t174 57v-90q-92 -41 -165 -55t-161 -14 q-295 0 -397 256q-68 -133 -168 -194.5t-252 -61.5q-156 0 -242 82.5t-86 226.5zM203 285q0 -102 61 -158.5t170 -56.5q169 0 266 99.5t97 276.5v107l-187 -8q-219 -11 -313 -71.5t-94 -188.5zM903 618h604q0 188 -77.5 295t-212.5 107q-284 0 -314 -402z" />
-<glyph unicode="&#xe7;" horiz-adv-x="973" d="M119 537q0 270 137 420.5t375 150.5q141 0 270 -49l-27 -88q-141 47 -245 47q-200 0 -303 -123.5t-103 -355.5q0 -220 103 -344.5t288 -124.5q148 0 275 53v-92q-104 -51 -273 -51q-233 0 -365 147t-132 410zM373 -393q30 -10 92 -10q78 0 119 28t41 80q0 94 -193 121 l93 174h96l-66 -117q168 -37 168 -174q0 -100 -67.5 -150.5t-188.5 -50.5q-68 0 -94 11v88z" />
-<glyph unicode="&#xe8;" horiz-adv-x="1124" d="M119 535q0 260 128 416.5t345 156.5q192 0 303 -134t111 -364v-80h-783q2 -224 104.5 -342t293.5 -118q93 0 163.5 13t178.5 56v-90q-92 -40 -170 -54.5t-172 -14.5q-237 0 -369.5 146t-132.5 409zM229 618h672q0 189 -82 295.5t-227 106.5q-157 0 -252 -103.5 t-111 -298.5zM302 1552v17h142q26 -48 98.5 -142t142.5 -170v-16h-69q-96 79 -188.5 171.5t-125.5 139.5z" />
-<glyph unicode="&#xe9;" horiz-adv-x="1124" d="M119 535q0 260 128 416.5t345 156.5q192 0 303 -134t111 -364v-80h-783q2 -224 104.5 -342t293.5 -118q93 0 163.5 13t178.5 56v-90q-92 -40 -170 -54.5t-172 -14.5q-237 0 -369.5 146t-132.5 409zM229 618h672q0 189 -82 295.5t-227 106.5q-157 0 -252 -103.5 t-111 -298.5zM452 1241v16q73 79 144.5 171.5t97.5 140.5h141v-17q-36 -52 -122.5 -138t-190.5 -173h-70z" />
-<glyph unicode="&#xea;" horiz-adv-x="1124" d="M119 535q0 260 128 416.5t345 156.5q192 0 303 -134t111 -364v-80h-783q2 -224 104.5 -342t293.5 -118q93 0 163.5 13t178.5 56v-90q-92 -40 -170 -54.5t-172 -14.5q-237 0 -369.5 146t-132.5 409zM229 618h672q0 189 -82 295.5t-227 106.5q-157 0 -252 -103.5 t-111 -298.5zM290 1241v16q62 67 131.5 156t110.5 156h98q68 -120 242 -312v-16h-70q-122 101 -221 207q-108 -114 -221 -207h-70z" />
-<glyph unicode="&#xeb;" horiz-adv-x="1124" d="M119 535q0 260 128 416.5t345 156.5q192 0 303 -134t111 -364v-80h-783q2 -224 104.5 -342t293.5 -118q93 0 163.5 13t178.5 56v-90q-92 -40 -170 -54.5t-172 -14.5q-237 0 -369.5 146t-132.5 409zM229 618h672q0 189 -82 295.5t-227 106.5q-157 0 -252 -103.5 t-111 -298.5zM331 1389q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86zM712 1389q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86z" />
-<glyph unicode="&#xec;" horiz-adv-x="463" d="M182 0v1087h99v-1087h-99zM-34 1552v17h142q26 -48 98.5 -142t142.5 -170v-16h-69q-96 79 -188.5 171.5t-125.5 139.5z" />
-<glyph unicode="&#xed;" horiz-adv-x="463" d="M182 0v1087h99v-1087h-99zM107 1241v16q73 79 144.5 171.5t97.5 140.5h141v-17q-36 -52 -122.5 -138t-190.5 -173h-70z" />
-<glyph unicode="&#xee;" horiz-adv-x="463" d="M182 0v1087h99v-1087h-99zM-58 1241v16q62 67 131.5 156t110.5 156h98q68 -120 242 -312v-16h-70q-122 101 -221 207q-108 -114 -221 -207h-70z" />
-<glyph unicode="&#xef;" horiz-adv-x="463" d="M182 0v1087h99v-1087h-99zM-21 1389q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86zM360 1389q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86z" />
-<glyph unicode="&#xf0;" horiz-adv-x="1174" d="M117 471q0 228 126.5 357.5t342.5 129.5q108 0 187.5 -33t148.5 -96l4 2q-64 270 -269 459l-270 -157l-49 77l244 146q-86 62 -199 119l45 81q147 -69 248 -145l225 137l49 -84l-202 -121q154 -151 230.5 -353t76.5 -431q0 -276 -124 -427.5t-349 -151.5 q-214 0 -339.5 130t-125.5 361zM221 463q0 -186 94.5 -289.5t268.5 -103.5q179 0 272.5 123t93.5 364q0 146 -97 228.5t-267 82.5q-185 0 -275 -100.5t-90 -304.5z" />
-<glyph unicode="&#xf1;" horiz-adv-x="1208" d="M182 0v1087h84l19 -149h6q106 170 377 170q370 0 370 -397v-711h-98v705q0 164 -69 238.5t-214 74.5q-195 0 -285.5 -98.5t-90.5 -319.5v-600h-99zM282 1243q10 111 63 174.5t137 63.5q48 0 88 -25t82 -59q34 -28 66 -50t61 -22q46 0 77 36.5t48 119.5h76 q-16 -116 -69 -177t-132 -61q-36 0 -75 18.5t-101 71.5q-32 26 -62.5 46t-62.5 20q-45 0 -75 -34.5t-48 -121.5h-73z" />
-<glyph unicode="&#xf2;" horiz-adv-x="1200" d="M119 545q0 266 129 414.5t354 148.5q224 0 351.5 -150.5t127.5 -412.5q0 -266 -129 -415.5t-356 -149.5q-143 0 -252 69t-167 198t-58 298zM223 545q0 -224 98.5 -349.5t278.5 -125.5t278.5 125.5t98.5 349.5q0 225 -99.5 349t-279.5 124t-277.5 -123.5t-97.5 -349.5z M335 1552v17h142q26 -48 98.5 -142t142.5 -170v-16h-69q-96 79 -188.5 171.5t-125.5 139.5z" />
-<glyph unicode="&#xf3;" horiz-adv-x="1200" d="M119 545q0 266 129 414.5t354 148.5q224 0 351.5 -150.5t127.5 -412.5q0 -266 -129 -415.5t-356 -149.5q-143 0 -252 69t-167 198t-58 298zM223 545q0 -224 98.5 -349.5t278.5 -125.5t278.5 125.5t98.5 349.5q0 225 -99.5 349t-279.5 124t-277.5 -123.5t-97.5 -349.5z M499 1241v16q73 79 144.5 171.5t97.5 140.5h141v-17q-36 -52 -122.5 -138t-190.5 -173h-70z" />
-<glyph unicode="&#xf4;" horiz-adv-x="1200" d="M119 545q0 266 129 414.5t354 148.5q224 0 351.5 -150.5t127.5 -412.5q0 -266 -129 -415.5t-356 -149.5q-143 0 -252 69t-167 198t-58 298zM223 545q0 -224 98.5 -349.5t278.5 -125.5t278.5 125.5t98.5 349.5q0 225 -99.5 349t-279.5 124t-277.5 -123.5t-97.5 -349.5z M309 1241v16q62 67 131.5 156t110.5 156h98q68 -120 242 -312v-16h-70q-122 101 -221 207q-108 -114 -221 -207h-70z" />
-<glyph unicode="&#xf5;" horiz-adv-x="1200" d="M119 545q0 266 129 414.5t354 148.5q224 0 351.5 -150.5t127.5 -412.5q0 -266 -129 -415.5t-356 -149.5q-143 0 -252 69t-167 198t-58 298zM223 545q0 -224 98.5 -349.5t278.5 -125.5t278.5 125.5t98.5 349.5q0 225 -99.5 349t-279.5 124t-277.5 -123.5t-97.5 -349.5z M264 1243q10 111 63 174.5t137 63.5q48 0 88 -25t82 -59q34 -28 66 -50t61 -22q46 0 77 36.5t48 119.5h76q-16 -116 -69 -177t-132 -61q-36 0 -75 18.5t-101 71.5q-32 26 -62.5 46t-62.5 20q-45 0 -75 -34.5t-48 -121.5h-73z" />
-<glyph unicode="&#xf6;" horiz-adv-x="1200" d="M119 545q0 266 129 414.5t354 148.5q224 0 351.5 -150.5t127.5 -412.5q0 -266 -129 -415.5t-356 -149.5q-143 0 -252 69t-167 198t-58 298zM223 545q0 -224 98.5 -349.5t278.5 -125.5t278.5 125.5t98.5 349.5q0 225 -99.5 349t-279.5 124t-277.5 -123.5t-97.5 -349.5z M346 1389q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86zM727 1389q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86z" />
-<glyph unicode="&#xf7;" d="M111 682v82h948v-82h-948zM504 371q0 98 80 98q82 0 82 -98q0 -53 -23.5 -76t-58.5 -23q-34 0 -57 23t-23 76zM504 1075q0 99 80 99q82 0 82 -99q0 -52 -23.5 -75t-58.5 -23q-34 0 -57 23t-23 75z" />
-<glyph unicode="&#xf8;" horiz-adv-x="1200" d="M119 545q0 266 129 414.5t354 148.5q179 0 301 -104l96 124l74 -55l-104 -137q112 -147 112 -391q0 -266 -129 -415.5t-356 -149.5q-173 0 -291 98l-86 -113l-72 58l93 120q-121 153 -121 402zM223 545q0 -200 78 -322l543 705q-98 90 -246 90q-180 0 -277.5 -123.5 t-97.5 -349.5zM362 152q94 -82 238 -82q180 0 278.5 125.5t98.5 349.5q0 190 -72 309z" />
-<glyph unicode="&#xf9;" horiz-adv-x="1208" d="M170 377v710h98v-704q0 -164 69 -238.5t214 -74.5q194 0 285.5 98t91.5 319v600h98v-1087h-84l-18 150h-6q-106 -170 -377 -170q-371 0 -371 397zM304 1552v17h142q26 -48 98.5 -142t142.5 -170v-16h-69q-96 79 -188.5 171.5t-125.5 139.5z" />
-<glyph unicode="&#xfa;" horiz-adv-x="1208" d="M170 377v710h98v-704q0 -164 69 -238.5t214 -74.5q194 0 285.5 98t91.5 319v600h98v-1087h-84l-18 150h-6q-106 -170 -377 -170q-371 0 -371 397zM495 1241v16q73 79 144.5 171.5t97.5 140.5h141v-17q-36 -52 -122.5 -138t-190.5 -173h-70z" />
-<glyph unicode="&#xfb;" horiz-adv-x="1208" d="M170 377v710h98v-704q0 -164 69 -238.5t214 -74.5q194 0 285.5 98t91.5 319v600h98v-1087h-84l-18 150h-6q-106 -170 -377 -170q-371 0 -371 397zM313 1241v16q62 67 131.5 156t110.5 156h98q68 -120 242 -312v-16h-70q-122 101 -221 207q-108 -114 -221 -207h-70z" />
-<glyph unicode="&#xfc;" horiz-adv-x="1208" d="M170 377v710h98v-704q0 -164 69 -238.5t214 -74.5q194 0 285.5 98t91.5 319v600h98v-1087h-84l-18 150h-6q-106 -170 -377 -170q-371 0 -371 397zM350 1389q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86zM731 1389q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86 q-63 0 -63 86z" />
-<glyph unicode="&#xfd;" horiz-adv-x="940" d="M0 1087h102l230 -610q105 -281 133 -379h6q42 129 137 385l230 604h102l-487 -1263q-59 -154 -99 -208t-93.5 -81t-129.5 -27q-57 0 -127 21v86q58 -16 125 -16q51 0 90 24t70.5 74.5t73 160t53.5 142.5zM361 1241v16q73 79 144.5 171.5t97.5 140.5h141v-17 q-36 -52 -122.5 -138t-190.5 -173h-70z" />
-<glyph unicode="&#xfe;" horiz-adv-x="1219" d="M182 -492v2048h99v-391l-7 -247h7q114 190 368 190q220 0 335.5 -144.5t115.5 -420.5q0 -268 -121.5 -415.5t-331.5 -147.5q-251 0 -366 188h-7l3 -84q4 -74 4 -162v-414h-99zM281 541q0 -255 85.5 -364t278.5 -109q167 0 258.5 124t91.5 347q0 479 -348 479 q-193 0 -279.5 -105t-86.5 -354v-18z" />
-<glyph unicode="&#xff;" horiz-adv-x="940" d="M0 1087h102l230 -610q105 -281 133 -379h6q42 129 137 385l230 604h102l-487 -1263q-59 -154 -99 -208t-93.5 -81t-129.5 -27q-57 0 -127 21v86q58 -16 125 -16q51 0 90 24t70.5 74.5t73 160t53.5 142.5zM214 1389q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86 q-63 0 -63 86zM595 1389q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86z" />
-<glyph unicode="&#x131;" horiz-adv-x="463" d="M182 0v1087h99v-1087h-99z" />
-<glyph unicode="&#x152;" horiz-adv-x="1839" d="M129 735q0 347 174.5 545.5t480.5 198.5q78 0 183 -17h747v-94h-655v-553h616v-94h-616v-627h655v-94h-756q-76 -16 -176 -16q-305 0 -479 200t-174 551zM240 733q0 -315 140.5 -484t401.5 -169q109 0 174 18v1266q-62 16 -172 16q-262 0 -403 -167.5t-141 -479.5z" />
-<glyph unicode="&#x153;" horiz-adv-x="1942" d="M119 545q0 266 129 414.5t354 148.5q151 0 251 -70t157 -209q110 279 399 279q192 0 303 -134t111 -364v-80h-762q2 -230 100.5 -345t276.5 -115q93 0 163.5 13t178.5 56v-90q-92 -40 -170 -54.5t-172 -14.5q-156 0 -266.5 67.5t-165.5 198.5q-59 -128 -158 -197 t-252 -69q-143 0 -252 69t-167 198t-58 298zM223 545q0 -224 98.5 -349.5t278.5 -125.5q174 0 265 122.5t91 352.5q0 224 -93 348.5t-265 124.5q-180 0 -277.5 -123.5t-97.5 -349.5zM1065 618h653q0 189 -82 295.5t-227 106.5q-155 0 -242 -104t-102 -298z" />
-<glyph unicode="&#x178;" horiz-adv-x="1081" d="M0 1462h117l426 -800l428 800h110l-487 -897v-565h-105v557zM288 1727q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86zM669 1727q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86z" />
-<glyph unicode="&#x2c6;" horiz-adv-x="1182" d="M299 1241v16q62 67 131.5 156t110.5 156h98q68 -120 242 -312v-16h-70q-122 101 -221 207q-108 -114 -221 -207h-70z" />
-<glyph unicode="&#x2da;" horiz-adv-x="1182" d="M371 1456q0 94 60 152.5t157 58.5t157 -59t60 -152q0 -97 -60 -155t-157 -58t-157 58t-60 155zM451 1456q0 -66 37.5 -103.5t99.5 -37.5t99.5 37.5t37.5 103.5q0 64 -39 101.5t-98 37.5q-62 0 -99.5 -38t-37.5 -101z" />
-<glyph unicode="&#x2dc;" horiz-adv-x="1182" d="M283 1243q10 111 63 174.5t137 63.5q48 0 88 -25t82 -59q34 -28 66 -50t61 -22q46 0 77 36.5t48 119.5h76q-16 -116 -69 -177t-132 -61q-36 0 -75 18.5t-101 71.5q-32 26 -62.5 46t-62.5 20q-45 0 -75 -34.5t-48 -121.5h-73z" />
-<glyph unicode="&#x2000;" horiz-adv-x="953" />
-<glyph unicode="&#x2001;" horiz-adv-x="1907" />
-<glyph unicode="&#x2002;" horiz-adv-x="953" />
-<glyph unicode="&#x2003;" horiz-adv-x="1907" />
-<glyph unicode="&#x2004;" horiz-adv-x="635" />
-<glyph unicode="&#x2005;" horiz-adv-x="476" />
-<glyph unicode="&#x2006;" horiz-adv-x="317" />
-<glyph unicode="&#x2007;" horiz-adv-x="317" />
-<glyph unicode="&#x2008;" horiz-adv-x="238" />
-<glyph unicode="&#x2009;" horiz-adv-x="381" />
-<glyph unicode="&#x200a;" horiz-adv-x="105" />
-<glyph unicode="&#x2010;" horiz-adv-x="659" d="M92 512v82h475v-82h-475z" />
-<glyph unicode="&#x2011;" horiz-adv-x="659" d="M92 512v82h475v-82h-475z" />
-<glyph unicode="&#x2012;" horiz-adv-x="659" d="M92 512v82h475v-82h-475z" />
-<glyph unicode="&#x2013;" horiz-adv-x="1024" d="M82 512v82h860v-82h-860z" />
-<glyph unicode="&#x2014;" horiz-adv-x="2048" d="M82 512v82h1884v-82h-1884z" />
-<glyph unicode="&#x2018;" horiz-adv-x="297" d="M29 981q32 112 81.5 251t92.5 230h65q-30 -101 -64.5 -257t-45.5 -244h-117z" />
-<glyph unicode="&#x2019;" horiz-adv-x="297" d="M29 961q29 96 61 241.5t49 259.5h117l12 -20q-75 -265 -174 -481h-65z" />
-<glyph unicode="&#x201a;" horiz-adv-x="451" d="M68 -263q29 96 61 241.5t49 259.5h117l12 -20q-75 -265 -174 -481h-65z" />
-<glyph unicode="&#x201c;" horiz-adv-x="614" d="M29 981q32 112 81.5 251t92.5 230h65q-30 -101 -64.5 -257t-45.5 -244h-117zM346 981q34 120 83 255t91 226h66q-30 -98 -63 -248.5t-48 -252.5h-117z" />
-<glyph unicode="&#x201d;" horiz-adv-x="614" d="M29 961q29 96 61 241.5t49 259.5h117l12 -20q-75 -265 -174 -481h-65zM346 961q30 98 63 248.5t48 252.5h116l13 -20q-36 -128 -85 -261t-89 -220h-66z" />
-<glyph unicode="&#x201e;" horiz-adv-x="768" d="M68 -263q29 96 61 241.5t49 259.5h117l12 -20q-75 -265 -174 -481h-65zM385 -263q30 98 63 248.5t48 252.5h116l13 -20q-36 -128 -85 -261t-89 -220h-66z" />
-<glyph unicode="&#x2022;" horiz-adv-x="770" d="M231 748q0 89 40.5 134.5t113.5 45.5t113.5 -47t40.5 -133q0 -85 -41 -133t-113 -48t-113 47t-41 134z" />
-<glyph unicode="&#x2026;" horiz-adv-x="1466" d="M162 78q0 98 80 98q82 0 82 -98t-82 -98q-80 0 -80 98zM651 78q0 98 80 98q82 0 82 -98t-82 -98q-80 0 -80 98zM1141 78q0 98 80 98q82 0 82 -98t-82 -98q-80 0 -80 98z" />
-<glyph unicode="&#x202f;" horiz-adv-x="381" />
-<glyph unicode="&#x2039;" horiz-adv-x="524" d="M82 516v27l309 393l62 -43l-254 -363l254 -362l-62 -43z" />
-<glyph unicode="&#x203a;" horiz-adv-x="524" d="M72 168l254 362l-254 363l61 43l309 -391v-27l-309 -393z" />
-<glyph unicode="&#x2044;" horiz-adv-x="246" d="M-332 0l811 1462h94l-811 -1462h-94z" />
-<glyph unicode="&#x205f;" horiz-adv-x="476" />
-<glyph unicode="&#x2074;" horiz-adv-x="688" d="M25 827v60l407 581h96v-563h129v-78h-129v-241h-90v241h-413zM129 905h309v221q0 132 8 232q-6 -12 -21.5 -35.5t-295.5 -417.5z" />
-<glyph unicode="&#x20ac;" d="M74 528v82h172q-4 38 -4 113l4 102h-172v82h184q39 272 183 425t362 153q88 0 161 -17t148 -57l-39 -86q-132 72 -270 72q-174 0 -288 -125.5t-155 -364.5h502v-82h-510l-4 -104v-24q0 -65 4 -87h449v-82h-443q30 -217 147.5 -338.5t301.5 -121.5q148 0 287 65v-94 q-81 -34 -150.5 -46.5t-140.5 -12.5q-228 0 -367.5 140t-181.5 408h-180z" />
-<glyph unicode="&#x2122;" horiz-adv-x="1485" d="M10 1384v78h522v-78h-219v-643h-86v643h-217zM608 741v721h125l221 -606l224 606h125v-721h-86v398l4 207h-7l-227 -605h-74l-221 609h-6l4 -201v-408h-82z" />
-<glyph unicode="&#x2212;" d="M111 682v82h948v-82h-948z" />
-<glyph unicode="&#xe000;" horiz-adv-x="1085" d="M0 1085h1085v-1085h-1085v1085z" />
-<glyph unicode="&#xfb01;" horiz-adv-x="1077" d="M29 1001v58l202 37v84q0 200 73.5 293.5t240.5 93.5q90 0 180 -27l-23 -86q-80 25 -159 25q-116 0 -164.5 -68.5t-48.5 -222.5v-101h256v-86h-256v-1001h-99v1001h-202zM782 1389q0 96 63 96q31 0 48.5 -25t17.5 -71q0 -45 -17.5 -71t-48.5 -26q-63 0 -63 97zM796 0v1087 h99v-1087h-99z" />
-<glyph unicode="&#xfb02;" horiz-adv-x="1077" d="M29 1001v58l202 37v84q0 200 73.5 293.5t240.5 93.5q90 0 180 -27l-23 -86q-80 25 -159 25q-116 0 -164.5 -68.5t-48.5 -222.5v-101h256v-86h-256v-1001h-99v1001h-202zM796 0v1556h99v-1556h-99z" />
-<glyph unicode="&#xfb03;" horiz-adv-x="1692" d="M29 1001v58l202 37v84q0 200 73.5 293.5t240.5 93.5q90 0 180 -27l-23 -86q-80 25 -159 25q-116 0 -164.5 -68.5t-48.5 -222.5v-101h256v-86h-256v-1001h-99v1001h-202zM643 1001v58l202 37v84q0 200 73.5 293.5t240.5 93.5q90 0 180 -27l-23 -86q-80 25 -159 25 q-116 0 -164.5 -68.5t-48.5 -222.5v-101h256v-86h-256v-1001h-99v1001h-202zM1397 1389q0 96 63 96q31 0 48.5 -25t17.5 -71q0 -45 -17.5 -71t-48.5 -26q-63 0 -63 97zM1411 0v1087h99v-1087h-99z" />
-<glyph unicode="&#xfb04;" horiz-adv-x="1692" d="M29 1001v58l202 37v84q0 200 73.5 293.5t240.5 93.5q90 0 180 -27l-23 -86q-80 25 -159 25q-116 0 -164.5 -68.5t-48.5 -222.5v-101h256v-86h-256v-1001h-99v1001h-202zM643 1001v58l202 37v84q0 200 73.5 293.5t240.5 93.5q90 0 180 -27l-23 -86q-80 25 -159 25 q-116 0 -164.5 -68.5t-48.5 -222.5v-101h256v-86h-256v-1001h-99v1001h-202zM1411 0v1556h99v-1556h-99z" />
-</font>
-</defs></svg> \ No newline at end of file
diff --git a/admin/survey/Fonts/OpenSans/OpenSans-Light-webfont.ttf b/admin/survey/Fonts/OpenSans/OpenSans-Light-webfont.ttf
deleted file mode 100644
index b83078a..0000000
--- a/admin/survey/Fonts/OpenSans/OpenSans-Light-webfont.ttf
+++ /dev/null
Binary files differ
diff --git a/admin/survey/Fonts/OpenSans/OpenSans-Light-webfont.woff b/admin/survey/Fonts/OpenSans/OpenSans-Light-webfont.woff
deleted file mode 100644
index ff882b6..0000000
--- a/admin/survey/Fonts/OpenSans/OpenSans-Light-webfont.woff
+++ /dev/null
Binary files differ
diff --git a/admin/survey/Fonts/OpenSans/OpenSans-LightItalic-webfont.eot b/admin/survey/Fonts/OpenSans/OpenSans-LightItalic-webfont.eot
deleted file mode 100644
index 95c6c61..0000000
--- a/admin/survey/Fonts/OpenSans/OpenSans-LightItalic-webfont.eot
+++ /dev/null
Binary files differ
diff --git a/admin/survey/Fonts/OpenSans/OpenSans-LightItalic-webfont.svg b/admin/survey/Fonts/OpenSans/OpenSans-LightItalic-webfont.svg
deleted file mode 100644
index 1ac169c..0000000
--- a/admin/survey/Fonts/OpenSans/OpenSans-LightItalic-webfont.svg
+++ /dev/null
@@ -1,252 +0,0 @@
-<?xml version="1.0" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
-<svg xmlns="http://www.w3.org/2000/svg">
-<metadata>
-This is a custom SVG webfont generated by Font Squirrel.
-Copyright : Digitized data copyright 20102011 Google Corporation
-Foundry : Ascender Corporation
-Foundry URL : httpwwwascendercorpcom
-</metadata>
-<defs>
-<font id="OpenSansLightItalic" horiz-adv-x="1128" >
-<font-face units-per-em="2048" ascent="1638" descent="-410" />
-<missing-glyph horiz-adv-x="532" />
-<glyph unicode=" " horiz-adv-x="532" />
-<glyph unicode="&#x09;" horiz-adv-x="532" />
-<glyph unicode="&#xa0;" horiz-adv-x="532" />
-<glyph unicode="!" horiz-adv-x="502" d="M80 57q0 56 25 88.5t69 32.5q66 0 66 -72q0 -53 -25 -87.5t-68 -34.5q-67 0 -67 73zM186 377l203 1085h119l-260 -1085h-62z" />
-<glyph unicode="&#x22;" horiz-adv-x="721" d="M248 934l80 528h127l-146 -528h-61zM578 934l79 528h127l-145 -528h-61z" />
-<glyph unicode="#" horiz-adv-x="1323" d="M82 451l8 79h299l119 398h-297l8 80h311l134 454h90l-136 -454h365l135 454h86l-135 -454h285l-8 -80h-302l-118 -398h303l-8 -79h-320l-133 -451h-90l135 451h-360l-134 -451h-88l134 451h-283zM475 530h363l120 398h-362z" />
-<glyph unicode="$" d="M141 182v94q65 -34 153.5 -53.5t160.5 -19.5l110 512q-110 53 -153 91t-66.5 87.5t-23.5 116.5q0 155 105.5 250.5t272.5 99.5l41 192h80l-41 -192q149 -5 277 -68l-35 -78q-110 61 -256 70l-109 -514q124 -60 172.5 -99.5t73.5 -88.5t25 -115q0 -151 -110.5 -243 t-297.5 -103l-53 -240h-82l51 240q-79 2 -158 18t-137 43zM410 1018q0 -78 37 -128.5t137 -96.5l102 491q-134 -9 -205 -80t-71 -186zM537 203q142 7 223.5 74.5t81.5 183.5q0 76 -48 129.5t-157 97.5z" />
-<glyph unicode="%" horiz-adv-x="1556" d="M145 862q0 160 52 312t138 229.5t193 77.5q232 0 232 -283q0 -175 -50 -327t-136 -230t-197 -78q-112 0 -172 75.5t-60 223.5zM213 0l1135 1462h110l-1139 -1462h-106zM231 868q0 -115 41 -173t113 -58q84 0 148.5 72t102.5 204t38 277q0 109 -36 163t-114 54 q-79 0 -145 -71.5t-107 -203t-41 -264.5zM905 276q0 160 52 312t138 229.5t193 77.5q121 0 176.5 -71.5t55.5 -211.5q0 -175 -50 -327t-136 -230t-197 -78q-112 0 -172 75.5t-60 223.5zM991 283q0 -116 41 -174t113 -58q130 0 209.5 166.5t79.5 386.5q0 109 -36 163t-114 54 q-80 0 -146.5 -72.5t-106.5 -202.5t-40 -263z" />
-<glyph unicode="&#x26;" horiz-adv-x="1331" d="M78 324q0 162 99 277.5t325 215.5l-41 67q-78 128 -78 251q0 157 101 253.5t264 96.5q145 0 227 -76.5t82 -206.5q0 -85 -41 -154t-121 -128t-256 -138l330 -463q73 75 135.5 176.5t91.5 186.5h111q-102 -247 -285 -436l184 -246h-123l-131 184q-121 -108 -242 -156 t-266 -48q-167 0 -266.5 94t-99.5 250zM176 328q0 -119 78 -192t211 -73q108 0 211.5 42.5t222.5 146.5l-352 493q-164 -79 -232 -134.5t-103.5 -124t-35.5 -158.5zM485 1135q0 -132 109 -281q203 89 279.5 163.5t76.5 182.5q0 91 -56.5 143t-145.5 52q-125 0 -194 -68 t-69 -192z" />
-<glyph unicode="'" horiz-adv-x="403" d="M254 934l80 528h127l-146 -528h-61z" />
-<glyph unicode="(" horiz-adv-x="526" d="M104 270q0 343 122 633t382 559h105q-259 -276 -384.5 -568t-125.5 -618q0 -317 127 -600h-80q-146 262 -146 594z" />
-<glyph unicode=")" horiz-adv-x="526" d="M-156 -324q257 274 383.5 566.5t126.5 619.5q0 148 -28.5 294t-98.5 306h80q146 -262 146 -594q0 -345 -123.5 -636t-380.5 -556h-105z" />
-<glyph unicode="*" horiz-adv-x="1137" d="M233 1217l39 102l394 -168l47 408l121 -19l-109 -405l438 8l-8 -107l-416 29l181 -401l-115 -37l-135 417l-285 -348l-78 78l318 318z" />
-<glyph unicode="+" d="M162 672v100h401v404h101v-404h401v-100h-401v-400h-101v400h-401z" />
-<glyph unicode="," horiz-adv-x="451" d="M-90 -264q79 132 141 271t88 231h111l8 -23q-34 -92 -114 -233.5t-160 -245.5h-74z" />
-<glyph unicode="-" horiz-adv-x="629" d="M82 502l18 90h457l-16 -90h-459z" />
-<glyph unicode="." horiz-adv-x="485" d="M82 55q0 56 25 88.5t69 32.5q66 0 66 -72q0 -53 -25 -87.5t-67 -34.5q-68 0 -68 73z" />
-<glyph unicode="/" horiz-adv-x="641" d="M-100 0l815 1462h112l-817 -1462h-110z" />
-<glyph unicode="0" d="M139 494q0 186 44.5 381.5t124 334t187 207t240.5 68.5q340 0 340 -469q0 -201 -41 -405t-116.5 -346t-183.5 -213.5t-242 -71.5q-176 0 -264.5 126.5t-88.5 387.5zM242 504q0 -222 62.5 -329t197.5 -107q139 0 244 112t166 337t61 489q0 199 -59.5 295t-190.5 96 q-134 0 -241.5 -113t-173.5 -329t-66 -451z" />
-<glyph unicode="1" d="M354 1204l406 258h90l-313 -1462h-105l225 1055q19 92 74 293q-42 -36 -75.5 -61t-249.5 -161z" />
-<glyph unicode="2" d="M39 0l22 104l449 402q198 177 284 276.5t126.5 186.5t40.5 180q0 112 -66 178t-197 66q-176 0 -333 -129l-54 73q180 146 394 146q173 0 268.5 -85t95.5 -237q0 -110 -43.5 -208.5t-141.5 -211.5t-311 -303l-383 -338v-4h736l-17 -96h-870z" />
-<glyph unicode="3" d="M55 53v101q172 -86 344 -86q197 0 303.5 89.5t106.5 252.5q0 145 -89 223t-247 78h-117l21 96h110q209 0 333 95.5t124 258.5q0 114 -63.5 175t-188.5 61q-167 0 -344 -131l-49 75q84 67 188 104.5t218 37.5q161 0 252.5 -82.5t91.5 -226.5q0 -162 -106 -275t-286 -143 v-4q117 -24 185.5 -115.5t68.5 -226.5q0 -134 -64 -233t-179.5 -148t-274.5 -49q-96 0 -184.5 20.5t-153.5 52.5z" />
-<glyph unicode="4" d="M23 371l20 96l881 1010h118l-215 -1018h265l-21 -88h-264l-80 -371h-96l80 371h-688zM150 459h579q79 369 119 558.5t86 354.5h-4q-66 -91 -129 -166z" />
-<glyph unicode="5" d="M88 51v107q170 -90 340 -90q208 0 328.5 114.5t120.5 313.5q0 140 -85 219.5t-225 79.5q-133 0 -243 -41l-66 49l193 659h624l-18 -96h-541l-149 -516q98 29 215 29q188 0 292.5 -102t104.5 -279q0 -237 -148 -377.5t-407 -140.5q-84 0 -177.5 20t-158.5 51z" />
-<glyph unicode="6" d="M170 428q0 283 105 544.5t269.5 385t383.5 123.5q123 0 182 -21l-18 -90q-86 23 -170 23q-233 0 -393.5 -174t-233.5 -502h8q68 94 164 143t211 49q161 0 250.5 -100.5t89.5 -282.5q0 -156 -60 -281t-171 -195t-257 -70q-171 0 -265.5 119t-94.5 329zM270 414 q0 -164 72.5 -255t200.5 -91q112 0 196.5 58.5t130 162t45.5 229.5q0 146 -67 224.5t-195 78.5q-81 0 -154 -31.5t-129 -87t-78 -115t-22 -173.5z" />
-<glyph unicode="7" d="M244 0l796 1366h-766l23 96h858l-20 -110l-779 -1352h-112z" />
-<glyph unicode="8" d="M98 326q0 159 100.5 268.5t321.5 187.5q-100 72 -144 152t-44 180q0 159 114 265t291 106q163 0 258 -85t95 -229q0 -138 -84 -234.5t-285 -172.5q130 -78 190 -170.5t60 -208.5t-58 -208t-165.5 -144.5t-260.5 -52.5q-178 0 -283.5 92.5t-105.5 253.5zM201 340 q0 -136 77.5 -206.5t219.5 -70.5q168 0 270 91t102 233q0 104 -62 189t-198 157q-218 -73 -313.5 -167.5t-95.5 -225.5zM428 1114q0 -91 41.5 -159t157.5 -142q192 62 279 144t87 206q0 109 -70.5 172.5t-195.5 63.5q-130 0 -214.5 -82t-84.5 -203z" />
-<glyph unicode="9" d="M115 2v90q87 -29 192 -29q474 0 627 674h-8q-140 -192 -367 -192q-162 0 -255 105t-93 284q0 155 59.5 281t170.5 196t257 70q174 0 267.5 -115.5t93.5 -333.5q0 -288 -101.5 -548t-263.5 -382t-393 -122q-114 0 -186 22zM313 942q0 -145 67.5 -225t192.5 -80 q83 0 157.5 32.5t129 87.5t76.5 114t22 176q0 166 -71 256t-201 90q-112 0 -197.5 -58.5t-130.5 -162.5t-45 -230z" />
-<glyph unicode=":" horiz-adv-x="485" d="M102 55q0 56 25.5 88.5t69.5 32.5q65 0 65 -72q0 -55 -25.5 -88.5t-66.5 -33.5q-68 0 -68 73zM260 989q0 57 25.5 89t68.5 32q66 0 66 -72q0 -55 -25 -89t-67 -34q-68 0 -68 74z" />
-<glyph unicode=";" horiz-adv-x="485" d="M-53 -264q79 132 141 271t88 231h111l8 -23q-35 -96 -118.5 -242t-156.5 -237h-73zM266 989q0 57 25.5 89t68.5 32q66 0 66 -72q0 -55 -25 -89t-67 -34q-68 0 -68 74z" />
-<glyph unicode="&#x3c;" d="M137 676v74l914 471v-103l-801 -399l801 -350v-107z" />
-<glyph unicode="=" d="M168 461v98h903v-98h-903zM168 885v100h903v-100h-903z" />
-<glyph unicode="&#x3e;" d="M170 262v107l801 350l-801 399v103l915 -471v-74z" />
-<glyph unicode="?" horiz-adv-x="799" d="M170 59q0 56 25 88.5t69 32.5q66 0 66 -71q0 -54 -24.5 -88.5t-67.5 -34.5q-68 0 -68 73zM182 1376q85 49 171.5 78t187.5 29q159 0 250.5 -84.5t91.5 -229.5q0 -127 -66 -234t-231 -226q-85 -61 -132.5 -108.5t-73 -95t-46.5 -143.5h-92l6 29q29 132 82 206.5t157 147.5 q118 84 175 145.5t86.5 127.5t29.5 141q0 108 -67.5 170t-182.5 62q-139 0 -307 -101z" />
-<glyph unicode="@" horiz-adv-x="1724" d="M125 508q0 276 121.5 493.5t337 337t473.5 119.5q189 0 330.5 -72.5t221 -213t79.5 -314.5q0 -179 -56 -323.5t-154.5 -227t-211.5 -82.5q-98 0 -154.5 55t-56.5 144h-4q-54 -97 -132.5 -148t-168.5 -51q-112 0 -178 73t-66 202q0 156 63 283t178 198.5t261 71.5 q122 0 252 -52l-84 -315q-39 -140 -39 -221q0 -71 34.5 -111.5t100.5 -40.5q86 0 160 73.5t117.5 198t43.5 251.5q0 156 -65 277t-187 188t-292 67q-235 0 -424.5 -108.5t-295.5 -304t-106 -439.5q0 -288 155 -449t435 -161q207 0 420 82v-90q-210 -82 -428 -82 q-203 0 -357.5 82.5t-238.5 239t-84 370.5zM610 506q0 -92 40.5 -142.5t113.5 -50.5q101 0 180.5 89t124.5 255l78 289q-66 23 -139 23q-113 0 -204.5 -59t-142.5 -165.5t-51 -238.5z" />
-<glyph unicode="A" horiz-adv-x="1059" d="M-111 0l822 1468h67l201 -1468h-105l-69 520h-512l-287 -520h-117zM344 612h449l-39 291q-31 242 -39 402q-30 -63 -64.5 -130t-306.5 -563z" />
-<glyph unicode="B" horiz-adv-x="1202" d="M102 0l310 1462h379q190 0 290.5 -84t100.5 -241q0 -153 -90 -249t-254 -124v-4q125 -31 188.5 -113.5t63.5 -204.5q0 -205 -140.5 -323.5t-390.5 -118.5h-457zM223 90h342q201 0 309.5 87.5t108.5 256.5q0 145 -90 216t-275 71h-260zM377 811h278q206 0 313 81t107 238 q0 119 -78 180.5t-229 61.5h-272z" />
-<glyph unicode="C" horiz-adv-x="1169" d="M170 535q0 266 104.5 488t284.5 341t402 119q177 0 307 -68l-45 -90q-55 30 -124.5 47t-137.5 17q-197 0 -351.5 -104.5t-245 -304.5t-90.5 -441q0 -225 110.5 -346t317.5 -121q140 0 304 51v-94q-156 -49 -316 -49q-252 0 -386 145t-134 410z" />
-<glyph unicode="D" horiz-adv-x="1350" d="M102 0l310 1462h305q282 0 426.5 -147.5t144.5 -435.5q0 -253 -109.5 -461.5t-300.5 -313t-446 -104.5h-330zM221 90h209q226 0 394.5 94.5t261 275.5t92.5 412q0 498 -476 498h-206z" />
-<glyph unicode="E" horiz-adv-x="1067" d="M102 0l310 1462h727l-21 -94h-624l-117 -553h590l-21 -94h-588l-135 -627h627l-21 -94h-727z" />
-<glyph unicode="F" horiz-adv-x="981" d="M102 0l310 1462h708l-20 -94h-604l-134 -620h570l-21 -95h-569l-137 -653h-103z" />
-<glyph unicode="G" horiz-adv-x="1374" d="M170 547q0 265 105 483.5t283.5 335.5t395.5 117q113 0 203 -19t184 -59l-38 -94q-110 46 -189.5 62t-167.5 16q-184 0 -339 -107.5t-244 -301.5t-89 -433q0 -229 114.5 -352t326.5 -123q155 0 309 47l117 526h-303l18 90h406l-150 -682q-211 -73 -405 -73 q-257 0 -397 146t-140 421z" />
-<glyph unicode="H" horiz-adv-x="1366" d="M102 0l310 1462h102l-139 -649h760l137 649h100l-309 -1462h-100l151 719h-760l-149 -719h-103z" />
-<glyph unicode="I" horiz-adv-x="504" d="M102 0l310 1462h98l-309 -1462h-99z" />
-<glyph unicode="J" horiz-adv-x="477" d="M-324 -336l11 92q57 -20 137 -20q213 0 262 241l309 1485h105l-314 -1491q-35 -170 -125 -250.5t-241 -80.5q-48 0 -88 8t-56 16z" />
-<glyph unicode="K" horiz-adv-x="1122" d="M102 0l310 1462h102l-158 -723l133 121l680 602h138l-699 -610l371 -852h-111l-342 788l-190 -153l-131 -635h-103z" />
-<glyph unicode="L" horiz-adv-x="938" d="M102 0l310 1462h102l-289 -1366h621l-23 -96h-721z" />
-<glyph unicode="M" horiz-adv-x="1669" d="M109 0l309 1462h143l205 -1257h6l733 1257h150l-301 -1462h-101l191 901q79 369 100 447h-6l-780 -1348h-51l-222 1348h-6q-20 -154 -78 -426l-196 -922h-96z" />
-<glyph unicode="N" horiz-adv-x="1372" d="M102 0l310 1462h80l522 -1294h8q23 176 74 416l188 878h94l-309 -1462h-86l-516 1284h-8q-23 -149 -48 -273t-214 -1011h-95z" />
-<glyph unicode="O" horiz-adv-x="1464" d="M172 559q0 262 93 477.5t255 331t373 115.5q247 0 378.5 -148.5t131.5 -423.5q0 -255 -94 -481.5t-252 -338t-365 -111.5q-250 0 -385 149t-135 430zM276 573q0 -245 109.5 -373t319.5 -128q169 0 300 98.5t210 300t79 430.5q0 240 -104.5 364t-310.5 124 q-174 0 -308.5 -101t-214.5 -298t-80 -417z" />
-<glyph unicode="P" horiz-adv-x="1145" d="M102 0l310 1462h315q202 0 310 -92.5t108 -267.5q0 -500 -610 -500h-201l-129 -602h-103zM350 694h191q252 0 373.5 96.5t121.5 305.5q0 274 -329 274h-211z" />
-<glyph unicode="Q" horiz-adv-x="1464" d="M172 559q0 262 93 477.5t255 331t373 115.5q247 0 378.5 -148.5t131.5 -423.5q0 -216 -70 -418t-186.5 -324t-274.5 -167l267 -350h-142l-231 332l-74 -4q-250 0 -385 149t-135 430zM276 573q0 -245 109.5 -373t319.5 -128q169 0 300 98.5t210 300t79 430.5 q0 240 -104.5 364t-310.5 124q-174 0 -308.5 -101t-214.5 -298t-80 -417z" />
-<glyph unicode="R" horiz-adv-x="1145" d="M102 0l310 1462h303q430 0 430 -360q0 -182 -103.5 -303t-281.5 -152q201 -591 221 -647h-111l-211 633h-323l-131 -633h-103zM358 725h252q208 0 317 95.5t109 281.5q0 268 -329 268h-211z" />
-<glyph unicode="S" horiz-adv-x="1020" d="M37 55v109q163 -92 348 -92q188 0 295.5 86.5t107.5 232.5q0 61 -17 104.5t-52.5 78.5t-91 68t-131.5 75q-150 76 -209.5 164t-59.5 206t59 207.5t165 139t237 49.5q99 0 180 -17.5t168 -60.5l-32 -94q-66 40 -151.5 63t-164.5 23q-163 0 -259.5 -82.5t-96.5 -218.5 q0 -103 49 -170t182 -133q154 -79 213.5 -130t89 -113t29.5 -147q0 -126 -65.5 -224.5t-179.5 -148.5t-269 -50q-88 0 -172.5 17t-171.5 58z" />
-<glyph unicode="T" horiz-adv-x="985" d="M193 1368l20 94h973l-19 -94h-440l-289 -1368h-102l289 1368h-432z" />
-<glyph unicode="U" horiz-adv-x="1370" d="M176 381q0 83 27 201l186 880h103l-193 -899q-20 -89 -20 -184q0 -309 342 -309q195 0 307.5 96.5t158.5 318.5l207 977h101l-207 -977q-58 -270 -197 -387.5t-375 -117.5q-440 0 -440 401z" />
-<glyph unicode="V" horiz-adv-x="1079" d="M201 1462h100l117 -950q26 -217 35 -365h4q51 111 124 247l572 1068h117l-799 -1462h-88z" />
-<glyph unicode="W" horiz-adv-x="1702" d="M238 1462h100l47 -1031l4 -165l-2 -86h6q85 226 170 398l434 884h105l61 -878q19 -266 19 -410h6q30 86 61.5 163t493.5 1125h108q-169 -365 -330.5 -731t-328.5 -731h-78l-78 1075q-11 142 -11 219l1 47h-8q-27 -76 -62 -153.5t-563 -1187.5h-82z" />
-<glyph unicode="X" horiz-adv-x="971" d="M-135 0l608 766l-272 696h106l240 -626l483 626h119l-555 -719l285 -743h-107l-254 678l-526 -678h-127z" />
-<glyph unicode="Y" horiz-adv-x="965" d="M193 1462h100l201 -817l544 817h117l-631 -932l-108 -530h-105l119 545z" />
-<glyph unicode="Z" d="M-12 0l22 92l1069 1276h-764l23 94h887l-19 -88l-1069 -1280h799l-23 -94h-925z" />
-<glyph unicode="[" horiz-adv-x="537" d="M-57 -324l376 1786h429l-19 -90h-330l-340 -1605h330l-20 -91h-426z" />
-<glyph unicode="\" horiz-adv-x="641" d="M209 1462h86l242 -1462h-82z" />
-<glyph unicode="]" horiz-adv-x="537" d="M-176 -324l18 91h330l340 1605h-330l21 90h426l-377 -1786h-428z" />
-<glyph unicode="^" horiz-adv-x="1047" d="M70 569l587 906h91l260 -906h-105l-217 809l-500 -809h-116z" />
-<glyph unicode="_" horiz-adv-x="801" d="M-182 -291l18 86h807l-18 -86h-807z" />
-<glyph unicode="`" horiz-adv-x="1135" d="M487 1548v21h115q46 -129 164 -303v-25h-66q-50 52 -114 144.5t-99 162.5z" />
-<glyph unicode="a" horiz-adv-x="1133" d="M102 354q0 197 75 376t200.5 276.5t277.5 97.5q232 0 279 -219h6l59 202h80l-229 -1087h-82l45 274h-6q-84 -142 -187 -218t-237 -76q-281 0 -281 374zM205 365q0 -152 50 -223.5t151 -71.5q89 0 177.5 62t159 166t107.5 230t37 213q0 79 -26 141.5t-77 99t-127 36.5 q-124 0 -224 -82t-164 -245.5t-64 -325.5z" />
-<glyph unicode="b" horiz-adv-x="1151" d="M76 0l327 1556h95q-131 -628 -162 -751h6q93 156 199 229.5t231 73.5q281 0 281 -375q0 -203 -76 -380t-201 -273t-276 -96q-113 0 -186 59t-97 166h-6l-55 -209h-80zM268 346q0 -129 64 -202.5t166 -73.5q124 0 224 83t164 245t64 325q0 152 -49 223.5t-151 71.5 q-91 0 -180 -61.5t-160.5 -169.5t-106.5 -235t-35 -206z" />
-<glyph unicode="c" horiz-adv-x="887" d="M102 397q0 193 73.5 361.5t198.5 257t290 88.5q134 0 241 -43l-28 -90q-107 47 -218 47q-129 0 -232.5 -77t-162.5 -222t-59 -320q0 -158 73.5 -243.5t208.5 -85.5q71 0 131.5 13t131.5 46v-92q-116 -57 -273 -57q-174 0 -274.5 110.5t-100.5 306.5z" />
-<glyph unicode="d" horiz-adv-x="1133" d="M102 354q0 193 71.5 370t197.5 278.5t284 101.5q230 0 279 -219h4q12 66 143 671h99l-330 -1556h-82l45 274h-6q-173 -294 -424 -294q-281 0 -281 374zM205 365q0 -295 201 -295q89 0 178.5 62.5t160 168t106.5 231t36 209.5q0 126 -61.5 201.5t-168.5 75.5 q-124 0 -224 -83t-164 -242.5t-64 -327.5z" />
-<glyph unicode="e" horiz-adv-x="928" d="M102 395q0 181 71 347t195.5 264t274.5 98q114 0 182 -61t68 -166q0 -181 -163.5 -276t-485.5 -95h-33q-6 -44 -6 -98q0 -165 74 -251.5t213 -86.5q132 0 276 73v-94q-140 -69 -299 -69q-173 0 -270 109.5t-97 305.5zM225 594h49q517 0 517 270q0 67 -43.5 110.5 t-116.5 43.5q-131 0 -243.5 -115.5t-162.5 -308.5z" />
-<glyph unicode="f" horiz-adv-x="578" d="M-233 -383q53 -16 100 -16q88 0 134 53t75 186l246 1166h-205l14 67l205 14l35 160q35 168 116.5 244t227.5 76q73 0 166 -31l-25 -80q-87 27 -147 27q-96 0 -153.5 -53.5t-84.5 -178.5l-35 -164h248l-16 -81h-248l-252 -1190q-33 -161 -104 -234.5t-195 -73.5 q-48 0 -102 19v90z" />
-<glyph unicode="g" horiz-adv-x="1040" d="M-88 -217q0 236 309 334q-78 42 -78 123q0 123 191 202q-71 36 -110.5 105.5t-39.5 157.5q0 111 53.5 204t148 146t206.5 53q69 0 147 -21h361l-17 -79l-243 -11q26 -28 43.5 -84t17.5 -114q0 -109 -54.5 -206.5t-148 -145.5t-213.5 -48q-63 0 -77 9q-80 -33 -124 -73 t-44 -81t31.5 -64.5t113.5 -31.5l121 -11q346 -31 346 -264q0 -112 -65 -197.5t-187 -131.5t-291 -46q-186 0 -291.5 72t-105.5 203zM14 -207q0 -101 81 -150t224 -49q203 0 317 74.5t114 204.5q0 85 -62.5 130.5t-218.5 57.5l-160 15q-157 -45 -226 -114.5t-69 -168.5z M285 711q0 -112 58.5 -170t164.5 -58q88 0 154 37t102.5 114t36.5 169q0 104 -56 161.5t-157 57.5q-93 0 -161 -43t-105 -116t-37 -152z" />
-<glyph unicode="h" horiz-adv-x="1143" d="M76 0l332 1556h96l-86 -411q-44 -200 -66 -279h6q78 113 186.5 175.5t229.5 62.5q124 0 192 -65t68 -183q0 -70 -24 -182l-148 -674h-98l149 692q21 92 21 156q0 80 -43.5 125t-134.5 45q-112 0 -210.5 -67t-166 -188t-103.5 -286l-102 -477h-98z" />
-<glyph unicode="i" horiz-adv-x="475" d="M76 0l231 1087h96l-229 -1087h-98zM350 1366q0 55 22 88t60 33q57 0 57 -72q0 -57 -22 -90t-57 -33q-29 0 -44.5 19.5t-15.5 54.5z" />
-<glyph unicode="j" horiz-adv-x="475" d="M-279 -381q47 -22 113 -22q82 0 128.5 51.5t72.5 177.5l266 1261h96l-268 -1271q-35 -165 -106.5 -236.5t-188.5 -71.5q-62 0 -113 19v92zM350 1366q0 55 22 88t60 33q57 0 57 -72q0 -57 -22 -90t-57 -33q-29 0 -44.5 19.5t-15.5 54.5z" />
-<glyph unicode="k" horiz-adv-x="944" d="M76 0l330 1556h96l-166 -780l-70 -299h4l609 610h125l-474 -469l297 -618h-106l-264 559l-205 -188l-80 -371h-96z" />
-<glyph unicode="l" horiz-adv-x="475" d="M76 0l334 1556h94l-334 -1556h-94z" />
-<glyph unicode="m" horiz-adv-x="1751" d="M72 0l231 1087h80l-33 -210h6q80 113 181.5 170t212.5 57q106 0 163 -67t60 -195h6q77 129 181 195.5t222 66.5q117 0 182.5 -61.5t65.5 -176.5q0 -29 -2.5 -56.5t-19.5 -119.5l-152 -690h-100l149 680q25 120 25 176q0 77 -43 119.5t-119 42.5q-157 0 -277.5 -137.5 t-168.5 -362.5l-109 -518h-102l147 674q25 125 25 162q0 182 -154 182q-106 0 -200 -67.5t-159 -188.5t-100 -287l-100 -475h-98z" />
-<glyph unicode="n" horiz-adv-x="1143" d="M76 0l231 1087h82l-37 -221h6q164 238 416 238q130 0 195 -64t65 -184q0 -70 -24 -182l-148 -674h-98l149 692q21 92 21 156q0 80 -43.5 125t-134.5 45q-112 0 -210.5 -67t-166 -187.5t-103.5 -286.5l-102 -477h-98z" />
-<glyph unicode="o" horiz-adv-x="1124" d="M98 403q0 191 73 358t197 257t281 90q180 0 278.5 -108.5t98.5 -299.5q0 -197 -71.5 -368.5t-195.5 -261.5t-286 -90q-184 0 -279.5 109.5t-95.5 313.5zM201 408q0 -342 282 -342q127 0 225.5 77.5t157 228t58.5 330.5q0 154 -73 237t-210 83q-124 0 -223 -78.5 t-158 -225t-59 -310.5z" />
-<glyph unicode="p" horiz-adv-x="1149" d="M-33 -492l336 1579h82l-45 -274h6q91 153 195.5 224t228.5 71q135 0 208 -92.5t73 -282.5q0 -195 -72 -371t-197.5 -277t-283.5 -101q-230 0 -279 219h-4q-13 -72 -149 -695h-99zM266 346q0 -125 61.5 -200.5t168.5 -75.5q124 0 225 84t164 243.5t63 325.5 q0 295 -200 295q-87 0 -174 -58.5t-161.5 -167.5t-110.5 -237.5t-36 -208.5z" />
-<glyph unicode="q" horiz-adv-x="1157" d="M98 354q0 201 75.5 379t200.5 274.5t277 96.5q109 0 183.5 -58t99.5 -167h6l55 208h80l-327 -1556h-95l98 470l64 282h-6q-93 -156 -199 -229.5t-231 -73.5q-281 0 -281 374zM201 365q0 -143 45.5 -219t154.5 -76q92 0 182 62.5t160.5 171.5t105 236.5t34.5 200.5 q0 130 -63.5 203.5t-166.5 73.5q-124 0 -224 -83t-164 -245t-64 -325z" />
-<glyph unicode="r" horiz-adv-x="752" d="M72 0l231 1087h80l-29 -204h6q73 94 123 135.5t106.5 64.5t123.5 23q69 0 123 -14l-21 -93q-47 15 -113 15q-94 0 -179 -64t-153 -192t-100 -277l-100 -481h-98z" />
-<glyph unicode="s" horiz-adv-x="827" d="M25 55v107q74 -46 153 -71t148 -25q138 0 211 57.5t73 163.5q0 42 -15.5 74t-50 61.5t-132.5 85.5q-148 80 -200 145.5t-52 159.5q0 128 98.5 209.5t259.5 81.5q75 0 158.5 -17.5t140.5 -46.5l-35 -88q-136 64 -264 64q-116 0 -186 -53t-70 -138q0 -55 17 -88t60.5 -68.5 t119.5 -76.5q114 -63 161.5 -103.5t70 -86.5t22.5 -107q0 -144 -103 -229.5t-280 -85.5q-173 0 -305 75z" />
-<glyph unicode="t" horiz-adv-x="616" d="M113 1006l14 67l184 17l97 253h55l-55 -256h286l-18 -81h-283l-135 -635q-22 -99 -22 -164q0 -139 126 -139q68 0 152 26v-86q-101 -28 -170 -28q-99 0 -153 54.5t-54 158.5q0 73 29 206l129 607h-182z" />
-<glyph unicode="u" horiz-adv-x="1143" d="M109 227q0 60 22 170l150 690h100l-152 -698q-22 -106 -22 -158q0 -74 47.5 -117.5t138.5 -43.5q110 0 207.5 65.5t164 187t99.5 279.5l105 485h98l-231 -1087h-80l28 205h-6q-167 -221 -403 -221q-131 0 -198.5 62t-67.5 181z" />
-<glyph unicode="v" horiz-adv-x="895" d="M104 1087h101l108 -735q26 -165 33 -254h6q51 115 129 256l406 733h102l-600 -1087h-113z" />
-<glyph unicode="w" horiz-adv-x="1393" d="M121 1087h92l13 -821l-3 -157h6q61 134 150 297l373 681h77l64 -681q14 -147 14 -297h6l24 61l101 236l320 681h96l-508 -1087h-108l-60 686q-14 224 -14 266h-6q-34 -92 -144 -290l-356 -662h-117z" />
-<glyph unicode="x" horiz-adv-x="922" d="M-72 0l471 559l-245 528h100l207 -462l373 462h120l-448 -534l258 -553h-98l-224 483l-393 -483h-121z" />
-<glyph unicode="y" horiz-adv-x="920" d="M-217 -379q71 -27 137 -27q80 0 147 49.5t130 164.5t100 184l-174 1095h100l82 -548q51 -351 55 -449h11q43 105 186 367l348 630h103l-713 -1290q-72 -127 -122.5 -178t-114 -81t-146.5 -30q-68 0 -129 21v92z" />
-<glyph unicode="z" horiz-adv-x="887" d="M-29 0l15 72l776 932h-543l17 83h659l-18 -83l-762 -920h602l-17 -84h-729z" />
-<glyph unicode="{" horiz-adv-x="709" d="M59 528l21 78q126 0 191 49t89 158l89 393q30 135 106 195.5t215 60.5h29l-17 -86q-86 -2 -129 -20.5t-69.5 -61.5t-44.5 -120l-74 -338q-30 -134 -91.5 -194.5t-164.5 -78.5v-4q68 -18 105.5 -68.5t37.5 -121.5q0 -52 -24 -164l-47 -225q-13 -58 -13 -101 q0 -61 37.5 -89t138.5 -28v-86h-20q-256 0 -256 199q0 45 16 115l56 252q18 90 18 127q0 159 -199 159z" />
-<glyph unicode="|" d="M584 -510v2071h100v-2071h-100z" />
-<glyph unicode="}" horiz-adv-x="709" d="M-41 -238q96 2 138 21t68.5 61t43.5 121l74 338q27 126 87.5 189.5t168.5 82.5v5q-75 20 -109.5 72.5t-34.5 117.5q0 55 18 131l54 258q12 61 12 101q0 44 -18 69t-54 36t-116 11l20 86h21q131 0 189.5 -51t58.5 -147q0 -41 -17 -115l-55 -252q-19 -95 -19 -127 q0 -77 49.5 -118.5t149.5 -41.5l-20 -78q-125 0 -191 -48.5t-90 -157.5l-88 -394q-32 -139 -108.5 -197.5t-213.5 -58.5h-18v86z" />
-<glyph unicode="~" d="M127 625v94q108 110 233 110q61 0 115 -13.5t156 -57.5q126 -58 219 -58q54 0 107.5 29t117.5 96v-96q-111 -113 -233 -113q-117 0 -271 72q-62 29 -112.5 43t-108.5 14q-49 0 -108 -30.5t-115 -89.5z" />
-<glyph unicode="&#xa1;" horiz-adv-x="502" d="M4 -375l260 1086h62l-203 -1086h-119zM272 981q0 55 25 89t68 34q67 0 67 -74q0 -56 -25 -88.5t-69 -32.5q-66 0 -66 72z" />
-<glyph unicode="&#xa2;" d="M250 600q0 184 63.5 341t178 253t256.5 111l36 178h90l-38 -176q116 -4 217 -43l-29 -90q-107 47 -217 47q-130 0 -233 -76t-162.5 -221t-59.5 -322q0 -164 74.5 -247t208.5 -83q127 0 264 60v-92q-118 -58 -281 -58l-40 -202h-93l45 215q-132 25 -206 132.5t-74 272.5z " />
-<glyph unicode="&#xa3;" d="M-4 0l16 84q93 11 165.5 95.5t107.5 236.5l57 260h-199l17 82h198l76 350q41 187 155 279t290 92q170 0 313 -78l-39 -84l-54 26q-108 50 -231 50q-134 0 -220.5 -74.5t-117.5 -220.5l-73 -340h409l-18 -82h-408l-57 -268q-50 -225 -188 -314h759l-20 -94h-938z" />
-<glyph unicode="&#xa4;" d="M207 1077l63 64l127 -129q105 78 230 78q118 0 223 -78l131 129l61 -62l-129 -129q78 -106 78 -227q0 -135 -78 -227l129 -127l-61 -62l-131 127q-104 -76 -223 -76q-126 0 -228 80l-129 -129l-61 62l127 127q-74 98 -74 225q0 118 74 225zM350 723q0 -116 80 -196.5 t197 -80.5t198.5 81t81.5 196q0 75 -36.5 140t-102.5 104t-141 39q-114 0 -195.5 -82t-81.5 -201z" />
-<glyph unicode="&#xa5;" d="M166 289l18 84h299l41 190h-301l17 76h258l-215 823h100l201 -817l544 817h117l-559 -823h266l-16 -76h-315l-39 -190h317l-18 -84h-316l-59 -289h-105l64 289h-299z" />
-<glyph unicode="&#xa6;" d="M578 246h100v-756h-100v756zM578 805v756h100v-756h-100z" />
-<glyph unicode="&#xa7;" horiz-adv-x="995" d="M102 51v99q47 -27 126 -46.5t153 -19.5q149 0 228 52.5t79 150.5q0 62 -42.5 106t-166.5 96q-155 65 -211.5 130t-56.5 159q0 101 69.5 182t198.5 130q-64 31 -103.5 85.5t-39.5 120.5q0 74 46 134.5t132.5 94.5t202.5 34q163 0 289 -58l-31 -80q-138 54 -264 54 q-124 0 -202.5 -46.5t-78.5 -123.5q0 -59 46 -104.5t183 -106.5q112 -52 158.5 -89.5t71 -85t24.5 -110.5q0 -197 -249 -317q122 -64 122 -197q0 -86 -48 -153.5t-139.5 -105.5t-221.5 -38q-157 0 -275 53zM303 786q0 -57 24.5 -96.5t81 -73t187.5 -81.5q103 49 162 113.5 t59 156.5q0 72 -57.5 126t-200.5 107q-119 -30 -187.5 -97.5t-68.5 -154.5z" />
-<glyph unicode="&#xa8;" horiz-adv-x="1135" d="M492 1366q0 49 20.5 78t56.5 29q54 0 54 -64q0 -48 -21 -77t-55 -29q-55 0 -55 63zM836 1366q0 49 20.5 78t56.5 29q54 0 54 -64q0 -48 -21 -77t-55 -29q-55 0 -55 63z" />
-<glyph unicode="&#xa9;" horiz-adv-x="1704" d="M147 731q0 200 100 375t275 276t377 101q200 0 375 -100t276 -275t101 -377q0 -197 -97 -370t-272 -277t-383 -104q-207 0 -382 103.5t-272.5 276.5t-97.5 371zM240 731q0 -178 88.5 -329.5t240.5 -240.5t330 -89q174 0 325 85.5t243 239t92 334.5q0 178 -89 330 t-240.5 241t-330.5 89q-182 0 -335 -92t-238.5 -243t-85.5 -325zM537 725q0 207 110 332t297 125q119 0 227 -52l-36 -83q-99 45 -191 45q-142 0 -222.5 -94.5t-80.5 -264.5q0 -186 74.5 -275t220.5 -89q85 0 199 43v-88q-104 -45 -209 -45q-187 0 -288 116t-101 330z" />
-<glyph unicode="&#xaa;" horiz-adv-x="643" d="M170 1032q0 189 90.5 321t226.5 132q55 0 97.5 -29t66.5 -86h6l35 103h66l-137 -650h-72l22 125h-4q-96 -137 -223 -137q-80 0 -127 56.5t-47 164.5zM258 1028q0 -143 111 -143q66 0 133.5 75.5t97.5 184.5q16 51 16 123q0 58 -36 100.5t-93 42.5q-94 0 -161.5 -111.5 t-67.5 -271.5z" />
-<glyph unicode="&#xab;" horiz-adv-x="860" d="M61 541l2 26l363 365l57 -49l-317 -336l213 -385l-64 -39zM422 541l2 26l362 365l58 -49l-314 -336l209 -385l-63 -39z" />
-<glyph unicode="&#xac;" d="M125 672v100h903v-500h-100v400h-803z" />
-<glyph unicode="&#xad;" horiz-adv-x="629" d="M77 502l18 90h457l-16 -90h-459z" />
-<glyph unicode="&#xae;" horiz-adv-x="1704" d="M150 731q0 207 103.5 382t276.5 272.5t371 97.5q200 0 375 -100t276 -275t101 -377q0 -197 -97 -370t-272 -277t-383 -104q-204 0 -376.5 100.5t-273.5 273t-101 377.5zM242 731q0 -178 88.5 -329.5t240.5 -240.5t330 -89q174 0 325 85.5t243 239t92 334.5q0 178 -89 330 t-240.5 241t-330.5 89q-182 0 -335 -92t-238.5 -243t-85.5 -325zM657 291v880h211q143 0 222 -62t79 -191q0 -80 -39.5 -141t-109.5 -93l237 -393h-120l-211 360h-168v-360h-101zM758 731h112q93 0 144 46.5t51 135.5q0 172 -197 172h-110v-354z" />
-<glyph unicode="&#xaf;" horiz-adv-x="655" d="M348 1556l53 97h654l-54 -97h-653z" />
-<glyph unicode="&#xb0;" horiz-adv-x="877" d="M242 1190q0 120 85 206.5t208 86.5q122 0 207 -86.5t85 -206.5q0 -122 -85.5 -207.5t-206.5 -85.5q-122 0 -207.5 85.5t-85.5 207.5zM315 1190q0 -89 64.5 -153t155.5 -64q92 0 155.5 64t63.5 153q0 90 -64 155.5t-155 65.5q-90 0 -155 -65.5t-65 -155.5z" />
-<glyph unicode="&#xb1;" d="M127 0v100h903v-100h-903zM127 629v98h401v406h101v-406h401v-98h-401v-400h-101v400h-401z" />
-<glyph unicode="&#xb2;" horiz-adv-x="643" d="M82 586l16 80l297 258q137 118 182.5 190.5t45.5 153.5q0 59 -38.5 97t-105.5 38q-95 0 -194 -76l-41 62q108 90 239 90q73 0 125 -27t78.5 -72t26.5 -100q0 -106 -59 -198.5t-183 -194.5l-266 -223h416l-17 -78h-522z" />
-<glyph unicode="&#xb3;" horiz-adv-x="643" d="M109 625v90q46 -28 108 -48t125 -20q99 0 159 52.5t60 142.5q0 162 -196 162h-84l16 79h86q102 0 168.5 49.5t66.5 129.5q0 68 -37.5 102.5t-105.5 34.5q-100 0 -199 -68l-40 64q109 86 251 86q100 0 159 -56.5t59 -148.5q0 -85 -48.5 -148t-154.5 -88v-4 q66 -16 105.5 -68t39.5 -124q0 -77 -39 -141t-109 -99t-161 -35q-59 0 -123.5 15.5t-105.5 40.5z" />
-<glyph unicode="&#xb4;" horiz-adv-x="1135" d="M580 1241v21q66 51 150.5 142t129.5 165h137v-23q-51 -66 -157.5 -158.5t-192.5 -146.5h-67z" />
-<glyph unicode="&#xb5;" horiz-adv-x="1171" d="M-29 -492l338 1579h101l-152 -698q-20 -96 -20 -147q0 -82 48.5 -127t135.5 -45q110 0 207 64.5t162.5 182.5t101.5 285l104 485h99l-234 -1087h-78l29 205h-6q-164 -221 -404 -221q-85 0 -139 32.5t-76 89.5h-6q-18 -132 -51 -284l-63 -314h-97z" />
-<glyph unicode="&#xb6;" horiz-adv-x="1341" d="M215 1042q0 260 109 387t342 127h542v-1816h-100v1722h-227v-1722h-101v819q-64 -18 -145 -18q-216 0 -318 125t-102 376z" />
-<glyph unicode="&#xb7;" horiz-adv-x="485" d="M207 698q0 56 25 88.5t69 32.5q66 0 66 -72q0 -53 -25 -87.5t-67 -34.5q-68 0 -68 73z" />
-<glyph unicode="&#xb8;" horiz-adv-x="420" d="M-174 -406q30 -6 72 -6q198 0 198 115q0 97 -151 107l110 190h80l-78 -137q140 -30 140 -152q0 -94 -75.5 -148.5t-217.5 -54.5q-46 0 -78 7v79z" />
-<glyph unicode="&#xb9;" horiz-adv-x="643" d="M254 1288l258 174h80l-186 -876h-84l118 569q5 21 11.5 50.5t14 60t15.5 59t15 49.5q-34 -31 -60 -51.5t-143 -93.5z" />
-<glyph unicode="&#xba;" horiz-adv-x="655" d="M190 1059q0 112 41.5 209.5t116 154t170.5 56.5q105 0 165 -64t60 -180q0 -115 -40 -214t-114 -156.5t-175 -57.5q-114 0 -169 67.5t-55 184.5zM270 1067q0 -186 156 -186q73 0 125.5 46.5t81.5 127.5t29 176q0 83 -39 128.5t-115 45.5q-70 0 -124 -46.5t-84 -124.5 t-30 -167z" />
-<glyph unicode="&#xbb;" horiz-adv-x="860" d="M33 172l313 336l-209 385l64 39l254 -418l-2 -27l-363 -364zM393 172l314 336l-209 385l63 39l254 -418l-2 -27l-362 -364z" />
-<glyph unicode="&#xbc;" horiz-adv-x="1481" d="M715 230l21 76l506 577h86l-125 -581h133l-17 -72h-131l-49 -229h-82l49 229h-391zM830 302h291q61 294 79 365.5t29 105.5q-10 -16 -61 -79t-338 -392zM129 0l1086 1462h108l-1087 -1462h-107zM251 1288l258 174h80l-186 -876h-84l118 569q5 21 11.5 50.5t14 60t15.5 59 t15 49.5q-34 -31 -60 -51.5t-143 -93.5z" />
-<glyph unicode="&#xbd;" horiz-adv-x="1458" d="M756 1l16 80l297 258q137 118 182.5 190.5t45.5 153.5q0 59 -38.5 97t-105.5 38q-95 0 -194 -76l-41 62q108 90 239 90q73 0 125 -27t78.5 -72t26.5 -100q0 -106 -59 -198.5t-183 -194.5l-266 -223h416l-17 -78h-522zM173 1288l258 174h80l-186 -876h-84l118 569 q5 21 11.5 50.5t14 60t15.5 59t15 49.5q-34 -31 -60 -51.5t-143 -93.5zM53 0l1086 1462h108l-1087 -1462h-107z" />
-<glyph unicode="&#xbe;" horiz-adv-x="1458" d="M776 230l21 76l506 577h86l-125 -581h133l-17 -72h-131l-49 -229h-82l49 229h-391zM891 302h291q61 294 79 365.5t29 105.5q-10 -16 -61 -79t-338 -392zM71 625v90q46 -28 108 -48t125 -20q99 0 159 52.5t60 142.5q0 162 -196 162h-84l16 79h86q102 0 168.5 49.5 t66.5 129.5q0 68 -37.5 102.5t-105.5 34.5q-100 0 -199 -68l-40 64q109 86 251 86q100 0 159 -56.5t59 -148.5q0 -85 -48.5 -148t-154.5 -88v-4q66 -16 105.5 -68t39.5 -124q0 -77 -39 -141t-109 -99t-161 -35q-59 0 -123.5 15.5t-105.5 40.5zM213 0l1086 1462h108 l-1087 -1462h-107z" />
-<glyph unicode="&#xbf;" horiz-adv-x="799" d="M0 -90q0 133 70 240.5t227 220.5q85 61 133.5 109t73 95t45.5 142h92l-6 -29q-28 -127 -79 -200t-161 -154q-118 -84 -175 -145.5t-86.5 -127.5t-29.5 -141q0 -106 65.5 -168.5t184.5 -62.5q141 0 308 100l38 -86q-85 -49 -170.5 -77.5t-187.5 -28.5q-159 0 -250.5 84.5 t-91.5 228.5zM553 971q0 56 25 89.5t67 33.5q68 0 68 -74q0 -56 -25.5 -88.5t-69.5 -32.5q-65 0 -65 72z" />
-<glyph unicode="&#xc0;" horiz-adv-x="1059" d="M-111 0l822 1468h67l201 -1468h-105l-69 520h-512l-287 -520h-117zM344 612h449l-39 291q-31 242 -39 402q-30 -63 -64.5 -130t-306.5 -563zM536 1886v21h115q46 -129 164 -303v-25h-66q-50 52 -114 144.5t-99 162.5z" />
-<glyph unicode="&#xc1;" horiz-adv-x="1059" d="M-111 0l822 1468h67l201 -1468h-105l-69 520h-512l-287 -520h-117zM344 612h449l-39 291q-31 242 -39 402q-30 -63 -64.5 -130t-306.5 -563zM668 1579v21q66 51 150.5 142t129.5 165h137v-23q-51 -66 -157.5 -158.5t-192.5 -146.5h-67z" />
-<glyph unicode="&#xc2;" horiz-adv-x="1059" d="M-111 0l822 1468h67l201 -1468h-105l-69 520h-512l-287 -520h-117zM344 612h449l-39 291q-31 242 -39 402q-30 -63 -64.5 -130t-306.5 -563zM493 1579v29q68 56 157.5 148.5t127.5 150.5h64q23 -64 72.5 -152.5t92.5 -146.5v-29h-49q-70 60 -161 207q-55 -57 -125 -114.5 t-125 -92.5h-54z" />
-<glyph unicode="&#xc3;" horiz-adv-x="1059" d="M-111 0l822 1468h67l201 -1468h-105l-69 520h-512l-287 -520h-117zM344 612h449l-39 291q-31 242 -39 402q-30 -63 -64.5 -130t-306.5 -563zM426 1581q19 108 71 166.5t134 58.5q41 0 73.5 -14t117.5 -72q52 -36 94 -36q43 0 71.5 30.5t46.5 100.5h76 q-26 -118 -74.5 -173t-124.5 -55q-40 0 -77.5 19t-75.5 45q-34 23 -64.5 41t-68.5 18q-45 0 -74 -28.5t-51 -100.5h-74z" />
-<glyph unicode="&#xc4;" horiz-adv-x="1059" d="M-111 0l822 1468h67l201 -1468h-105l-69 520h-512l-287 -520h-117zM344 612h449l-39 291q-31 242 -39 402q-30 -63 -64.5 -130t-306.5 -563zM535 1704q0 49 20.5 78t56.5 29q54 0 54 -64q0 -48 -21 -77t-55 -29q-55 0 -55 63zM879 1704q0 49 20.5 78t56.5 29q54 0 54 -64 q0 -48 -21 -77t-55 -29q-55 0 -55 63z" />
-<glyph unicode="&#xc5;" horiz-adv-x="1059" d="M-111 0l822 1468h67l201 -1468h-105l-69 520h-512l-287 -520h-117zM344 612h449l-39 291q-31 242 -39 402q-30 -63 -64.5 -130t-306.5 -563zM539 1592q0 88 59.5 144t149.5 56q88 0 142.5 -50t54.5 -142t-57.5 -148.5t-145.5 -56.5q-93 0 -148 52t-55 145zM619 1592 q0 -57 33 -90t90 -33q56 0 90.5 36t34.5 93t-33.5 90t-87.5 33q-60 0 -93.5 -36t-33.5 -93z" />
-<glyph unicode="&#xc6;" horiz-adv-x="1640" d="M-117 0l946 1462h883l-20 -94h-625l-117 -553h590l-20 -94h-588l-135 -627h626l-20 -94h-727l110 522h-444l-328 -522h-131zM408 627h401l156 741h-88z" />
-<glyph unicode="&#xc7;" horiz-adv-x="1169" d="M170 535q0 266 104.5 488t284.5 341t402 119q177 0 307 -68l-45 -90q-55 30 -124.5 47t-137.5 17q-197 0 -351.5 -104.5t-245 -304.5t-90.5 -441q0 -225 110.5 -346t317.5 -121q140 0 304 51v-94q-156 -49 -316 -49q-252 0 -386 145t-134 410zM381 -406q30 -6 72 -6 q198 0 198 115q0 97 -151 107l110 190h80l-78 -137q140 -30 140 -152q0 -94 -75.5 -148.5t-217.5 -54.5q-46 0 -78 7v79z" />
-<glyph unicode="&#xc8;" horiz-adv-x="1067" d="M102 0l310 1462h727l-21 -94h-624l-117 -553h590l-21 -94h-588l-135 -627h627l-21 -94h-727zM612 1886v21h115q46 -129 164 -303v-25h-66q-50 52 -114 144.5t-99 162.5z" />
-<glyph unicode="&#xc9;" horiz-adv-x="1067" d="M102 0l310 1462h727l-21 -94h-624l-117 -553h590l-21 -94h-588l-135 -627h627l-21 -94h-727zM654 1579v21q66 51 150.5 142t129.5 165h137v-23q-51 -66 -157.5 -158.5t-192.5 -146.5h-67z" />
-<glyph unicode="&#xca;" horiz-adv-x="1067" d="M102 0l310 1462h727l-21 -94h-624l-117 -553h590l-21 -94h-588l-135 -627h627l-21 -94h-727zM522 1579v29q68 56 157.5 148.5t127.5 150.5h64q23 -64 72.5 -152.5t92.5 -146.5v-29h-49q-70 60 -161 207q-55 -57 -125 -114.5t-125 -92.5h-54z" />
-<glyph unicode="&#xcb;" horiz-adv-x="1067" d="M102 0l310 1462h727l-21 -94h-624l-117 -553h590l-21 -94h-588l-135 -627h627l-21 -94h-727zM558 1704q0 49 20.5 78t56.5 29q54 0 54 -64q0 -48 -21 -77t-55 -29q-55 0 -55 63zM902 1704q0 49 20.5 78t56.5 29q54 0 54 -64q0 -48 -21 -77t-55 -29q-55 0 -55 63z" />
-<glyph unicode="&#xcc;" horiz-adv-x="504" d="M102 0l310 1462h98l-309 -1462h-99zM246 1886v21h115q46 -129 164 -303v-25h-66q-50 52 -114 144.5t-99 162.5z" />
-<glyph unicode="&#xcd;" horiz-adv-x="504" d="M102 0l310 1462h98l-309 -1462h-99zM419 1579v21q66 51 150.5 142t129.5 165h137v-23q-51 -66 -157.5 -158.5t-192.5 -146.5h-67z" />
-<glyph unicode="&#xce;" horiz-adv-x="504" d="M102 0l310 1462h98l-309 -1462h-99zM224 1579v29q68 56 157.5 148.5t127.5 150.5h64q23 -64 72.5 -152.5t92.5 -146.5v-29h-49q-70 60 -161 207q-55 -57 -125 -114.5t-125 -92.5h-54z" />
-<glyph unicode="&#xcf;" horiz-adv-x="504" d="M102 0l310 1462h98l-309 -1462h-99zM260 1704q0 49 20.5 78t56.5 29q54 0 54 -64q0 -48 -21 -77t-55 -29q-55 0 -55 63zM604 1704q0 49 20.5 78t56.5 29q54 0 54 -64q0 -48 -21 -77t-55 -29q-55 0 -55 63z" />
-<glyph unicode="&#xd0;" horiz-adv-x="1352" d="M90 676l21 96h155l146 690h305q282 0 426.5 -147.5t144.5 -435.5q0 -253 -109.5 -461.5t-300.5 -313t-446 -104.5h-330l144 676h-156zM221 90h209q226 0 394.5 94.5t261 275.5t92.5 412q0 498 -476 498h-206l-129 -598h378l-20 -96h-379z" />
-<glyph unicode="&#xd1;" horiz-adv-x="1372" d="M102 0l310 1462h80l522 -1294h8q23 176 74 416l188 878h94l-309 -1462h-86l-516 1284h-8q-23 -149 -48 -273t-214 -1011h-95zM577 1581q19 108 71 166.5t134 58.5q41 0 73.5 -14t117.5 -72q52 -36 94 -36q43 0 71.5 30.5t46.5 100.5h76q-26 -118 -74.5 -173t-124.5 -55 q-40 0 -77.5 19t-75.5 45q-34 23 -64.5 41t-68.5 18q-45 0 -74 -28.5t-51 -100.5h-74z" />
-<glyph unicode="&#xd2;" horiz-adv-x="1464" d="M172 559q0 262 93 477.5t255 331t373 115.5q247 0 378.5 -148.5t131.5 -423.5q0 -255 -94 -481.5t-252 -338t-365 -111.5q-250 0 -385 149t-135 430zM276 573q0 -245 109.5 -373t319.5 -128q169 0 300 98.5t210 300t79 430.5q0 240 -104.5 364t-310.5 124 q-174 0 -308.5 -101t-214.5 -298t-80 -417zM710 1886v21h115q46 -129 164 -303v-25h-66q-50 52 -114 144.5t-99 162.5z" />
-<glyph unicode="&#xd3;" horiz-adv-x="1464" d="M172 559q0 262 93 477.5t255 331t373 115.5q247 0 378.5 -148.5t131.5 -423.5q0 -255 -94 -481.5t-252 -338t-365 -111.5q-250 0 -385 149t-135 430zM276 573q0 -245 109.5 -373t319.5 -128q169 0 300 98.5t210 300t79 430.5q0 240 -104.5 364t-310.5 124 q-174 0 -308.5 -101t-214.5 -298t-80 -417zM844 1579v21q66 51 150.5 142t129.5 165h137v-23q-51 -66 -157.5 -158.5t-192.5 -146.5h-67z" />
-<glyph unicode="&#xd4;" horiz-adv-x="1464" d="M172 559q0 262 93 477.5t255 331t373 115.5q247 0 378.5 -148.5t131.5 -423.5q0 -255 -94 -481.5t-252 -338t-365 -111.5q-250 0 -385 149t-135 430zM276 573q0 -245 109.5 -373t319.5 -128q169 0 300 98.5t210 300t79 430.5q0 240 -104.5 364t-310.5 124 q-174 0 -308.5 -101t-214.5 -298t-80 -417zM657 1579v29q68 56 157.5 148.5t127.5 150.5h64q23 -64 72.5 -152.5t92.5 -146.5v-29h-49q-70 60 -161 207q-55 -57 -125 -114.5t-125 -92.5h-54z" />
-<glyph unicode="&#xd5;" horiz-adv-x="1464" d="M172 559q0 262 93 477.5t255 331t373 115.5q247 0 378.5 -148.5t131.5 -423.5q0 -255 -94 -481.5t-252 -338t-365 -111.5q-250 0 -385 149t-135 430zM276 573q0 -245 109.5 -373t319.5 -128q169 0 300 98.5t210 300t79 430.5q0 240 -104.5 364t-310.5 124 q-174 0 -308.5 -101t-214.5 -298t-80 -417zM592 1581q19 108 71 166.5t134 58.5q41 0 73.5 -14t117.5 -72q52 -36 94 -36q43 0 71.5 30.5t46.5 100.5h76q-26 -118 -74.5 -173t-124.5 -55q-40 0 -77.5 19t-75.5 45q-34 23 -64.5 41t-68.5 18q-45 0 -74 -28.5t-51 -100.5h-74z " />
-<glyph unicode="&#xd6;" horiz-adv-x="1464" d="M172 559q0 262 93 477.5t255 331t373 115.5q247 0 378.5 -148.5t131.5 -423.5q0 -255 -94 -481.5t-252 -338t-365 -111.5q-250 0 -385 149t-135 430zM276 573q0 -245 109.5 -373t319.5 -128q169 0 300 98.5t210 300t79 430.5q0 240 -104.5 364t-310.5 124 q-174 0 -308.5 -101t-214.5 -298t-80 -417zM687 1704q0 49 20.5 78t56.5 29q54 0 54 -64q0 -48 -21 -77t-55 -29q-55 0 -55 63zM1031 1704q0 49 20.5 78t56.5 29q54 0 54 -64q0 -48 -21 -77t-55 -29q-55 0 -55 63z" />
-<glyph unicode="&#xd7;" d="M221 1055l70 69l330 -329l333 329l68 -67l-332 -334l332 -332l-68 -67l-333 329l-330 -327l-68 67l328 330z" />
-<glyph unicode="&#xd8;" horiz-adv-x="1464" d="M139 -14l146 172q-113 149 -113 401q0 263 94 479.5t256.5 330.5t370.5 114q219 0 352 -121l133 168l70 -53l-145 -183q45 -51 72.5 -161t27.5 -222q0 -187 -52 -365.5t-144.5 -304.5t-223 -193.5t-291.5 -67.5q-215 0 -348 112l-139 -170zM276 573q0 -105 21.5 -191 t56.5 -138l826 1032q-107 113 -301 113q-134 0 -244 -59.5t-188.5 -170t-124.5 -267.5t-46 -319zM412 172q107 -100 293 -100q170 0 301 100t209.5 296.5t78.5 432.5q0 85 -17.5 172t-43.5 129z" />
-<glyph unicode="&#xd9;" horiz-adv-x="1370" d="M176 381q0 83 27 201l186 880h103l-193 -899q-20 -89 -20 -184q0 -309 342 -309q195 0 307.5 96.5t158.5 318.5l207 977h101l-207 -977q-58 -270 -197 -387.5t-375 -117.5q-440 0 -440 401zM667 1886v21h115q46 -129 164 -303v-25h-66q-50 52 -114 144.5t-99 162.5z" />
-<glyph unicode="&#xda;" horiz-adv-x="1370" d="M176 381q0 83 27 201l186 880h103l-193 -899q-20 -89 -20 -184q0 -309 342 -309q195 0 307.5 96.5t158.5 318.5l207 977h101l-207 -977q-58 -270 -197 -387.5t-375 -117.5q-440 0 -440 401zM838 1579v21q66 51 150.5 142t129.5 165h137v-23q-51 -66 -157.5 -158.5 t-192.5 -146.5h-67z" />
-<glyph unicode="&#xdb;" horiz-adv-x="1370" d="M176 381q0 83 27 201l186 880h103l-193 -899q-20 -89 -20 -184q0 -309 342 -309q195 0 307.5 96.5t158.5 318.5l207 977h101l-207 -977q-58 -270 -197 -387.5t-375 -117.5q-440 0 -440 401zM634 1579v29q68 56 157.5 148.5t127.5 150.5h64q23 -64 72.5 -152.5 t92.5 -146.5v-29h-49q-70 60 -161 207q-55 -57 -125 -114.5t-125 -92.5h-54z" />
-<glyph unicode="&#xdc;" horiz-adv-x="1370" d="M176 381q0 83 27 201l186 880h103l-193 -899q-20 -89 -20 -184q0 -309 342 -309q195 0 307.5 96.5t158.5 318.5l207 977h101l-207 -977q-58 -270 -197 -387.5t-375 -117.5q-440 0 -440 401zM678 1704q0 49 20.5 78t56.5 29q54 0 54 -64q0 -48 -21 -77t-55 -29 q-55 0 -55 63zM1022 1704q0 49 20.5 78t56.5 29q54 0 54 -64q0 -48 -21 -77t-55 -29q-55 0 -55 63z" />
-<glyph unicode="&#xdd;" horiz-adv-x="965" d="M193 1462h100l201 -817l544 817h117l-631 -932l-108 -530h-105l119 545zM563 1579v21q66 51 150.5 142t129.5 165h137v-23q-51 -66 -157.5 -158.5t-192.5 -146.5h-67z" />
-<glyph unicode="&#xde;" horiz-adv-x="1145" d="M102 0l310 1462h102l-57 -266h213q200 0 308.5 -92.5t108.5 -267.5q0 -247 -153 -373.5t-457 -126.5h-201l-71 -336h-103zM293 428h190q256 0 376 98.5t120 302.5q0 275 -330 275h-211z" />
-<glyph unicode="&#xdf;" horiz-adv-x="1094" d="M-281 -379q53 -24 115 -24q79 0 123 50.5t66 153.5l305 1409q80 357 405 357q137 0 215 -61.5t78 -174.5q0 -75 -44.5 -140.5t-166.5 -148.5q-107 -76 -141.5 -124.5t-34.5 -106.5q0 -51 34 -88.5t93 -75.5q96 -63 138 -133.5t42 -165.5q0 -170 -106.5 -269t-286.5 -99 q-143 0 -234 65v109q45 -36 112.5 -59t129.5 -23q132 0 208.5 71t76.5 195q0 75 -31.5 129t-109.5 108q-82 58 -119 110.5t-37 121.5q0 57 21 103t60.5 88.5t137.5 113.5q101 70 131.5 116t30.5 101q0 70 -55 110t-150 40q-129 0 -205 -76t-108 -229l-291 -1377 q-33 -152 -103.5 -220.5t-179.5 -68.5q-73 0 -119 23v90z" />
-<glyph unicode="&#xe0;" horiz-adv-x="1133" d="M102 354q0 197 75 376t200.5 276.5t277.5 97.5q232 0 279 -219h6l59 202h80l-229 -1087h-82l45 274h-6q-84 -142 -187 -218t-237 -76q-281 0 -281 374zM205 365q0 -152 50 -223.5t151 -71.5q89 0 177.5 62t159 166t107.5 230t37 213q0 79 -26 141.5t-77 99t-127 36.5 q-124 0 -224 -82t-164 -245.5t-64 -325.5zM530 1548v21h115q46 -129 164 -303v-25h-66q-50 52 -114 144.5t-99 162.5z" />
-<glyph unicode="&#xe1;" horiz-adv-x="1133" d="M102 354q0 197 75 376t200.5 276.5t277.5 97.5q232 0 279 -219h6l59 202h80l-229 -1087h-82l45 274h-6q-84 -142 -187 -218t-237 -76q-281 0 -281 374zM205 365q0 -152 50 -223.5t151 -71.5q89 0 177.5 62t159 166t107.5 230t37 213q0 79 -26 141.5t-77 99t-127 36.5 q-124 0 -224 -82t-164 -245.5t-64 -325.5zM586 1241v21q66 51 150.5 142t129.5 165h137v-23q-51 -66 -157.5 -158.5t-192.5 -146.5h-67z" />
-<glyph unicode="&#xe2;" horiz-adv-x="1133" d="M102 354q0 197 75 376t200.5 276.5t277.5 97.5q232 0 279 -219h6l59 202h80l-229 -1087h-82l45 274h-6q-84 -142 -187 -218t-237 -76q-281 0 -281 374zM205 365q0 -152 50 -223.5t151 -71.5q89 0 177.5 62t159 166t107.5 230t37 213q0 79 -26 141.5t-77 99t-127 36.5 q-124 0 -224 -82t-164 -245.5t-64 -325.5zM441 1243v29q68 56 157.5 148.5t127.5 150.5h64q23 -64 72.5 -152.5t92.5 -146.5v-29h-49q-70 60 -161 207q-55 -57 -125 -114.5t-125 -92.5h-54z" />
-<glyph unicode="&#xe3;" horiz-adv-x="1133" d="M102 354q0 197 75 376t200.5 276.5t277.5 97.5q232 0 279 -219h6l59 202h80l-229 -1087h-82l45 274h-6q-84 -142 -187 -218t-237 -76q-281 0 -281 374zM205 365q0 -152 50 -223.5t151 -71.5q89 0 177.5 62t159 166t107.5 230t37 213q0 79 -26 141.5t-77 99t-127 36.5 q-124 0 -224 -82t-164 -245.5t-64 -325.5zM373 1243q19 108 71 166.5t134 58.5q41 0 73.5 -14t117.5 -72q52 -36 94 -36q43 0 71.5 30.5t46.5 100.5h76q-26 -118 -74.5 -173t-124.5 -55q-40 0 -77.5 19t-75.5 45q-34 23 -64.5 41t-68.5 18q-45 0 -74 -28.5t-51 -100.5h-74z " />
-<glyph unicode="&#xe4;" horiz-adv-x="1133" d="M102 354q0 197 75 376t200.5 276.5t277.5 97.5q232 0 279 -219h6l59 202h80l-229 -1087h-82l45 274h-6q-84 -142 -187 -218t-237 -76q-281 0 -281 374zM205 365q0 -152 50 -223.5t151 -71.5q89 0 177.5 62t159 166t107.5 230t37 213q0 79 -26 141.5t-77 99t-127 36.5 q-124 0 -224 -82t-164 -245.5t-64 -325.5zM491 1366q0 49 20.5 78t56.5 29q54 0 54 -64q0 -48 -21 -77t-55 -29q-55 0 -55 63zM835 1366q0 49 20.5 78t56.5 29q54 0 54 -64q0 -48 -21 -77t-55 -29q-55 0 -55 63z" />
-<glyph unicode="&#xe5;" horiz-adv-x="1133" d="M102 354q0 197 75 376t200.5 276.5t277.5 97.5q232 0 279 -219h6l59 202h80l-229 -1087h-82l45 274h-6q-84 -142 -187 -218t-237 -76q-281 0 -281 374zM205 365q0 -152 50 -223.5t151 -71.5q89 0 177.5 62t159 166t107.5 230t37 213q0 79 -26 141.5t-77 99t-127 36.5 q-124 0 -224 -82t-164 -245.5t-64 -325.5zM521 1440q0 88 59.5 144t149.5 56q88 0 142.5 -50t54.5 -142t-57.5 -148.5t-145.5 -56.5q-93 0 -148 52t-55 145zM601 1440q0 -57 33 -90t90 -33q56 0 90.5 36t34.5 93t-33.5 90t-87.5 33q-60 0 -93.5 -36t-33.5 -93z" />
-<glyph unicode="&#xe6;" horiz-adv-x="1602" d="M102 344q0 206 70.5 384.5t192.5 277t274 98.5q106 0 166 -56.5t74 -156.5h10l59 192h66l-35 -186q139 207 350 207q112 0 175 -61.5t63 -172.5q0 -179 -158.5 -271.5t-470.5 -92.5h-39q-8 -51 -8 -96q0 -161 69.5 -250.5t217.5 -89.5q69 0 133.5 21t130.5 52v-94 q-80 -37 -147 -53t-140 -16q-123 0 -211 60t-117 165l-39 -205h-77l41 254h-9q-94 -142 -189 -208t-208 -66q-120 0 -182 94t-62 270zM205 352q0 -150 42.5 -216t121.5 -66q67 0 138.5 42t134 117.5t106 170.5t63.5 199t20 165q0 118 -49 186t-141 68q-123 0 -223 -86 t-156.5 -240t-56.5 -340zM913 594h48q263 0 383 67t120 203q0 71 -38.5 112.5t-108.5 41.5q-119 0 -232 -115.5t-172 -308.5z" />
-<glyph unicode="&#xe7;" horiz-adv-x="887" d="M102 397q0 193 73.5 361.5t198.5 257t290 88.5q134 0 241 -43l-28 -90q-107 47 -218 47q-129 0 -232.5 -77t-162.5 -222t-59 -320q0 -158 73.5 -243.5t208.5 -85.5q71 0 131.5 13t131.5 46v-92q-116 -57 -273 -57q-174 0 -274.5 110.5t-100.5 306.5zM203 -406 q30 -6 72 -6q198 0 198 115q0 97 -151 107l110 190h80l-78 -137q140 -30 140 -152q0 -94 -75.5 -148.5t-217.5 -54.5q-46 0 -78 7v79z" />
-<glyph unicode="&#xe8;" horiz-adv-x="928" d="M102 395q0 181 71 347t195.5 264t274.5 98q114 0 182 -61t68 -166q0 -181 -163.5 -276t-485.5 -95h-33q-6 -44 -6 -98q0 -165 74 -251.5t213 -86.5q132 0 276 73v-94q-140 -69 -299 -69q-173 0 -270 109.5t-97 305.5zM225 594h49q517 0 517 270q0 67 -43.5 110.5 t-116.5 43.5q-131 0 -243.5 -115.5t-162.5 -308.5zM472 1548v21h115q46 -129 164 -303v-25h-66q-50 52 -114 144.5t-99 162.5z" />
-<glyph unicode="&#xe9;" horiz-adv-x="928" d="M102 395q0 181 71 347t195.5 264t274.5 98q114 0 182 -61t68 -166q0 -181 -163.5 -276t-485.5 -95h-33q-6 -44 -6 -98q0 -165 74 -251.5t213 -86.5q132 0 276 73v-94q-140 -69 -299 -69q-173 0 -270 109.5t-97 305.5zM225 594h49q517 0 517 270q0 67 -43.5 110.5 t-116.5 43.5q-131 0 -243.5 -115.5t-162.5 -308.5zM532 1241v21q66 51 150.5 142t129.5 165h137v-23q-51 -66 -157.5 -158.5t-192.5 -146.5h-67z" />
-<glyph unicode="&#xea;" horiz-adv-x="928" d="M102 395q0 181 71 347t195.5 264t274.5 98q114 0 182 -61t68 -166q0 -181 -163.5 -276t-485.5 -95h-33q-6 -44 -6 -98q0 -165 74 -251.5t213 -86.5q132 0 276 73v-94q-140 -69 -299 -69q-173 0 -270 109.5t-97 305.5zM225 594h49q517 0 517 270q0 67 -43.5 110.5 t-116.5 43.5q-131 0 -243.5 -115.5t-162.5 -308.5zM390 1241v29q68 56 157.5 148.5t127.5 150.5h64q23 -64 72.5 -152.5t92.5 -146.5v-29h-49q-70 60 -161 207q-55 -57 -125 -114.5t-125 -92.5h-54z" />
-<glyph unicode="&#xeb;" horiz-adv-x="928" d="M102 395q0 181 71 347t195.5 264t274.5 98q114 0 182 -61t68 -166q0 -181 -163.5 -276t-485.5 -95h-33q-6 -44 -6 -98q0 -165 74 -251.5t213 -86.5q132 0 276 73v-94q-140 -69 -299 -69q-173 0 -270 109.5t-97 305.5zM225 594h49q517 0 517 270q0 67 -43.5 110.5 t-116.5 43.5q-131 0 -243.5 -115.5t-162.5 -308.5zM436 1366q0 49 20.5 78t56.5 29q54 0 54 -64q0 -48 -21 -77t-55 -29q-55 0 -55 63zM780 1366q0 49 20.5 78t56.5 29q54 0 54 -64q0 -48 -21 -77t-55 -29q-55 0 -55 63z" />
-<glyph unicode="&#xec;" horiz-adv-x="475" d="M76 0l231 1087h96l-229 -1087h-98zM175 1548v21h115q46 -129 164 -303v-25h-66q-50 52 -114 144.5t-99 162.5z" />
-<glyph unicode="&#xed;" horiz-adv-x="475" d="M76 0l231 1087h96l-229 -1087h-98zM284 1241v21q66 51 150.5 142t129.5 165h137v-23q-51 -66 -157.5 -158.5t-192.5 -146.5h-67z" />
-<glyph unicode="&#xee;" horiz-adv-x="475" d="M76 0l231 1087h96l-229 -1087h-98zM128 1241v29q68 56 157.5 148.5t127.5 150.5h64q23 -64 72.5 -152.5t92.5 -146.5v-29h-49q-70 60 -161 207q-55 -57 -125 -114.5t-125 -92.5h-54z" />
-<glyph unicode="&#xef;" horiz-adv-x="475" d="M76 0l231 1087h96l-229 -1087h-98zM171 1366q0 49 20.5 78t56.5 29q54 0 54 -64q0 -48 -21 -77t-55 -29q-55 0 -55 63zM515 1366q0 49 20.5 78t56.5 29q54 0 54 -64q0 -48 -21 -77t-55 -29q-55 0 -55 63z" />
-<glyph unicode="&#xf0;" horiz-adv-x="1124" d="M102 381q0 170 63 301.5t178.5 203.5t262.5 72q107 0 188 -49.5t121 -142.5h5q0 139 -43 289t-115 243l-295 -163l-39 73l285 156q-54 60 -158 139l59 68q32 -26 81 -66t100 -94l266 150l39 -74l-256 -141q87 -116 131.5 -276t44.5 -335q0 -355 -141.5 -555t-399.5 -200 q-177 0 -277 106.5t-100 294.5zM205 389q0 -153 73.5 -236t210.5 -83q118 0 208.5 61t144 186.5t53.5 270.5q0 77 -35 142t-100 101.5t-156 36.5q-124 0 -213.5 -61.5t-137.5 -169.5t-48 -248z" />
-<glyph unicode="&#xf1;" horiz-adv-x="1143" d="M76 0l231 1087h82l-37 -221h6q164 238 416 238q130 0 195 -64t65 -184q0 -70 -24 -182l-148 -674h-98l149 692q21 92 21 156q0 80 -43.5 125t-134.5 45q-112 0 -210.5 -67t-166 -187.5t-103.5 -286.5l-102 -477h-98zM389 1243q19 108 71 166.5t134 58.5q41 0 73.5 -14 t117.5 -72q52 -36 94 -36q43 0 71.5 30.5t46.5 100.5h76q-26 -118 -74.5 -173t-124.5 -55q-40 0 -77.5 19t-75.5 45q-34 23 -64.5 41t-68.5 18q-45 0 -74 -28.5t-51 -100.5h-74z" />
-<glyph unicode="&#xf2;" horiz-adv-x="1124" d="M98 403q0 191 73 358t197 257t281 90q180 0 278.5 -108.5t98.5 -299.5q0 -197 -71.5 -368.5t-195.5 -261.5t-286 -90q-184 0 -279.5 109.5t-95.5 313.5zM201 408q0 -342 282 -342q127 0 225.5 77.5t157 228t58.5 330.5q0 154 -73 237t-210 83q-124 0 -223 -78.5 t-158 -225t-59 -310.5zM465 1548v21h115q46 -129 164 -303v-25h-66q-50 52 -114 144.5t-99 162.5z" />
-<glyph unicode="&#xf3;" horiz-adv-x="1124" d="M98 403q0 191 73 358t197 257t281 90q180 0 278.5 -108.5t98.5 -299.5q0 -197 -71.5 -368.5t-195.5 -261.5t-286 -90q-184 0 -279.5 109.5t-95.5 313.5zM201 408q0 -342 282 -342q127 0 225.5 77.5t157 228t58.5 330.5q0 154 -73 237t-210 83q-124 0 -223 -78.5 t-158 -225t-59 -310.5zM573 1241v21q66 51 150.5 142t129.5 165h137v-23q-51 -66 -157.5 -158.5t-192.5 -146.5h-67z" />
-<glyph unicode="&#xf4;" horiz-adv-x="1124" d="M98 403q0 191 73 358t197 257t281 90q180 0 278.5 -108.5t98.5 -299.5q0 -197 -71.5 -368.5t-195.5 -261.5t-286 -90q-184 0 -279.5 109.5t-95.5 313.5zM201 408q0 -342 282 -342q127 0 225.5 77.5t157 228t58.5 330.5q0 154 -73 237t-210 83q-124 0 -223 -78.5 t-158 -225t-59 -310.5zM427 1241v29q68 56 157.5 148.5t127.5 150.5h64q23 -64 72.5 -152.5t92.5 -146.5v-29h-49q-70 60 -161 207q-55 -57 -125 -114.5t-125 -92.5h-54z" />
-<glyph unicode="&#xf5;" horiz-adv-x="1124" d="M98 403q0 191 73 358t197 257t281 90q180 0 278.5 -108.5t98.5 -299.5q0 -197 -71.5 -368.5t-195.5 -261.5t-286 -90q-184 0 -279.5 109.5t-95.5 313.5zM201 408q0 -342 282 -342q127 0 225.5 77.5t157 228t58.5 330.5q0 154 -73 237t-210 83q-124 0 -223 -78.5 t-158 -225t-59 -310.5zM354 1243q19 108 71 166.5t134 58.5q41 0 73.5 -14t117.5 -72q52 -36 94 -36q43 0 71.5 30.5t46.5 100.5h76q-26 -118 -74.5 -173t-124.5 -55q-40 0 -77.5 19t-75.5 45q-34 23 -64.5 41t-68.5 18q-45 0 -74 -28.5t-51 -100.5h-74z" />
-<glyph unicode="&#xf6;" horiz-adv-x="1124" d="M98 403q0 191 73 358t197 257t281 90q180 0 278.5 -108.5t98.5 -299.5q0 -197 -71.5 -368.5t-195.5 -261.5t-286 -90q-184 0 -279.5 109.5t-95.5 313.5zM201 408q0 -342 282 -342q127 0 225.5 77.5t157 228t58.5 330.5q0 154 -73 237t-210 83q-124 0 -223 -78.5 t-158 -225t-59 -310.5zM468 1366q0 49 20.5 78t56.5 29q54 0 54 -64q0 -48 -21 -77t-55 -29q-55 0 -55 63zM812 1366q0 49 20.5 78t56.5 29q54 0 54 -64q0 -48 -21 -77t-55 -29q-55 0 -55 63z" />
-<glyph unicode="&#xf7;" d="M168 672v100h903v-100h-903zM522 373q0 106 96 106q48 0 73.5 -27.5t25.5 -78.5q0 -57 -29 -82t-70 -25q-96 0 -96 107zM522 1071q0 107 96 107q46 0 72.5 -27.5t26.5 -79.5q0 -57 -29 -81.5t-70 -24.5q-96 0 -96 106z" />
-<glyph unicode="&#xf8;" horiz-adv-x="1124" d="M45 -18l119 145q-66 106 -66 276q0 191 73 358t197 257t281 90q150 0 250 -82l109 133l65 -53l-117 -143q70 -105 70 -263q0 -197 -71.5 -368.5t-195.5 -261.5t-286 -90q-163 0 -254 83l-110 -135zM201 408q0 -125 32 -197l605 739q-74 72 -197 72q-124 0 -223 -78.5 t-158 -225t-59 -310.5zM281 139q67 -73 202 -73q127 0 225.5 77.5t157 228t58.5 330.5q0 101 -35 179z" />
-<glyph unicode="&#xf9;" horiz-adv-x="1143" d="M109 227q0 60 22 170l150 690h100l-152 -698q-22 -106 -22 -158q0 -74 47.5 -117.5t138.5 -43.5q110 0 207.5 65.5t164 187t99.5 279.5l105 485h98l-231 -1087h-80l28 205h-6q-167 -221 -403 -221q-131 0 -198.5 62t-67.5 181zM495 1548v21h115q46 -129 164 -303v-25h-66 q-50 52 -114 144.5t-99 162.5z" />
-<glyph unicode="&#xfa;" horiz-adv-x="1143" d="M109 227q0 60 22 170l150 690h100l-152 -698q-22 -106 -22 -158q0 -74 47.5 -117.5t138.5 -43.5q110 0 207.5 65.5t164 187t99.5 279.5l105 485h98l-231 -1087h-80l28 205h-6q-167 -221 -403 -221q-131 0 -198.5 62t-67.5 181zM627 1241v21q66 51 150.5 142t129.5 165 h137v-23q-51 -66 -157.5 -158.5t-192.5 -146.5h-67z" />
-<glyph unicode="&#xfb;" horiz-adv-x="1143" d="M109 227q0 60 22 170l150 690h100l-152 -698q-22 -106 -22 -158q0 -74 47.5 -117.5t138.5 -43.5q110 0 207.5 65.5t164 187t99.5 279.5l105 485h98l-231 -1087h-80l28 205h-6q-167 -221 -403 -221q-131 0 -198.5 62t-67.5 181zM443 1241v29q68 56 157.5 148.5 t127.5 150.5h64q23 -64 72.5 -152.5t92.5 -146.5v-29h-49q-70 60 -161 207q-55 -57 -125 -114.5t-125 -92.5h-54z" />
-<glyph unicode="&#xfc;" horiz-adv-x="1143" d="M109 227q0 60 22 170l150 690h100l-152 -698q-22 -106 -22 -158q0 -74 47.5 -117.5t138.5 -43.5q110 0 207.5 65.5t164 187t99.5 279.5l105 485h98l-231 -1087h-80l28 205h-6q-167 -221 -403 -221q-131 0 -198.5 62t-67.5 181zM483 1366q0 49 20.5 78t56.5 29 q54 0 54 -64q0 -48 -21 -77t-55 -29q-55 0 -55 63zM827 1366q0 49 20.5 78t56.5 29q54 0 54 -64q0 -48 -21 -77t-55 -29q-55 0 -55 63z" />
-<glyph unicode="&#xfd;" horiz-adv-x="920" d="M-217 -379q71 -27 137 -27q80 0 147 49.5t130 164.5t100 184l-174 1095h100l82 -548q51 -351 55 -449h11q43 105 186 367l348 630h103l-713 -1290q-72 -127 -122.5 -178t-114 -81t-146.5 -30q-68 0 -129 21v92zM505 1241v21q66 51 150.5 142t129.5 165h137v-23 q-51 -66 -157.5 -158.5t-192.5 -146.5h-67z" />
-<glyph unicode="&#xfe;" horiz-adv-x="1163" d="M-33 -492l434 2048h99q-114 -535 -164 -751h6q93 156 199 229.5t231 73.5q133 0 206 -92.5t73 -282.5q0 -195 -72 -371t-197.5 -277t-283.5 -101q-230 0 -279 219h-4q-13 -72 -149 -695h-99zM266 346q0 -125 61.5 -200.5t168.5 -75.5q124 0 225 84t164 243.5t63 325.5 q0 295 -200 295q-86 0 -172.5 -57.5t-162.5 -169.5t-111.5 -238t-35.5 -207z" />
-<glyph unicode="&#xff;" horiz-adv-x="920" d="M-217 -379q71 -27 137 -27q80 0 147 49.5t130 164.5t100 184l-174 1095h100l82 -548q51 -351 55 -449h11q43 105 186 367l348 630h103l-713 -1290q-72 -127 -122.5 -178t-114 -81t-146.5 -30q-68 0 -129 21v92zM354 1366q0 49 20.5 78t56.5 29q54 0 54 -64q0 -48 -21 -77 t-55 -29q-55 0 -55 63zM698 1366q0 49 20.5 78t56.5 29q54 0 54 -64q0 -48 -21 -77t-55 -29q-55 0 -55 63z" />
-<glyph unicode="&#x131;" horiz-adv-x="475" d="M76 0l231 1087h96l-229 -1087h-98z" />
-<glyph unicode="&#x152;" horiz-adv-x="1767" d="M172 559q0 263 96 482t262 330.5t381 111.5q130 0 240 -21h688l-20 -94h-625l-117 -553h590l-20 -94h-588l-135 -627h626l-20 -94h-666q-25 -6 -77.5 -13t-94.5 -7q-251 0 -385.5 149.5t-134.5 429.5zM276 573q0 -245 109 -373t320 -128q68 0 116 12l271 1290 q-110 15 -189 15q-182 0 -321.5 -98.5t-222.5 -293.5t-83 -424z" />
-<glyph unicode="&#x153;" horiz-adv-x="1720" d="M98 403q0 191 73 358t197 257t281 90q141 0 237 -74.5t126 -212.5q70 132 182.5 207.5t241.5 75.5q114 0 182 -61t68 -166q0 -181 -163.5 -276t-486.5 -95h-32q-7 -38 -7 -98q0 -165 74 -251.5t213 -86.5q133 0 277 73v-94q-140 -69 -299 -69q-135 0 -228 69t-125 201 q-65 -127 -179 -198.5t-257 -71.5q-184 0 -279.5 109.5t-95.5 313.5zM201 408q0 -342 282 -342q127 0 225.5 77.5t157 228t58.5 330.5q0 154 -73 237t-210 83q-124 0 -223 -78.5t-158 -225t-59 -310.5zM1018 594h49q516 0 516 270q0 70 -44.5 112t-115.5 42 q-131 0 -243 -115t-162 -309z" />
-<glyph unicode="&#x178;" horiz-adv-x="965" d="M193 1462h100l201 -817l544 817h117l-631 -932l-108 -530h-105l119 545zM454 1704q0 49 20.5 78t56.5 29q54 0 54 -64q0 -48 -21 -77t-55 -29q-55 0 -55 63zM798 1704q0 49 20.5 78t56.5 29q54 0 54 -64q0 -48 -21 -77t-55 -29q-55 0 -55 63z" />
-<glyph unicode="&#x2c6;" horiz-adv-x="1135" d="M444 1241v29q68 56 157.5 148.5t127.5 150.5h64q23 -64 72.5 -152.5t92.5 -146.5v-29h-49q-70 60 -161 207q-55 -57 -125 -114.5t-125 -92.5h-54z" />
-<glyph unicode="&#x2da;" horiz-adv-x="1182" d="M561 1440q0 88 59.5 144t149.5 56q88 0 142.5 -50t54.5 -142t-57.5 -148.5t-145.5 -56.5q-93 0 -148 52t-55 145zM641 1440q0 -57 33 -90t90 -33q56 0 90.5 36t34.5 93t-33.5 90t-87.5 33q-60 0 -93.5 -36t-33.5 -93z" />
-<glyph unicode="&#x2dc;" horiz-adv-x="1135" d="M346 1243q19 108 71 166.5t134 58.5q41 0 73.5 -14t117.5 -72q52 -36 94 -36q43 0 71.5 30.5t46.5 100.5h76q-26 -118 -74.5 -173t-124.5 -55q-40 0 -77.5 19t-75.5 45q-34 23 -64.5 41t-68.5 18q-45 0 -74 -28.5t-51 -100.5h-74z" />
-<glyph unicode="&#x2000;" horiz-adv-x="953" />
-<glyph unicode="&#x2001;" horiz-adv-x="1907" />
-<glyph unicode="&#x2002;" horiz-adv-x="953" />
-<glyph unicode="&#x2003;" horiz-adv-x="1907" />
-<glyph unicode="&#x2004;" horiz-adv-x="635" />
-<glyph unicode="&#x2005;" horiz-adv-x="476" />
-<glyph unicode="&#x2006;" horiz-adv-x="317" />
-<glyph unicode="&#x2007;" horiz-adv-x="317" />
-<glyph unicode="&#x2008;" horiz-adv-x="238" />
-<glyph unicode="&#x2009;" horiz-adv-x="381" />
-<glyph unicode="&#x200a;" horiz-adv-x="105" />
-<glyph unicode="&#x2010;" horiz-adv-x="629" d="M82 502l18 90h457l-16 -90h-459z" />
-<glyph unicode="&#x2011;" horiz-adv-x="629" d="M82 502l18 90h457l-16 -90h-459z" />
-<glyph unicode="&#x2012;" horiz-adv-x="629" d="M82 502l18 90h457l-16 -90h-459z" />
-<glyph unicode="&#x2013;" horiz-adv-x="983" d="M66 502l18 90h807l-17 -90h-808z" />
-<glyph unicode="&#x2014;" horiz-adv-x="1966" d="M68 502l18 90h1788l-16 -90h-1790z" />
-<glyph unicode="&#x2018;" horiz-adv-x="299" d="M129 983q41 100 116 231t161 248h73q-66 -106 -129.5 -242.5t-103.5 -258.5h-113z" />
-<glyph unicode="&#x2019;" horiz-adv-x="299" d="M129 961q66 106 129.5 242.5t103.5 258.5h113l4 -22q-43 -105 -117.5 -235.5t-158.5 -243.5h-74z" />
-<glyph unicode="&#x201a;" horiz-adv-x="451" d="M-100 -264q68 110 131.5 248t101.5 254h113l4 -23q-40 -97 -115.5 -230t-161.5 -249h-73z" />
-<glyph unicode="&#x201c;" horiz-adv-x="631" d="M129 983q41 100 116 231t161 248h73q-66 -106 -129.5 -242.5t-103.5 -258.5h-113zM463 983q43 104 120 238.5t156 240.5h74q-66 -106 -129.5 -242.5t-103.5 -258.5h-113z" />
-<glyph unicode="&#x201d;" horiz-adv-x="631" d="M129 961q66 106 129.5 242.5t103.5 258.5h113l4 -22q-43 -105 -117.5 -235.5t-158.5 -243.5h-74zM463 961q66 106 129.5 242.5t103.5 258.5h113l4 -22q-43 -105 -117.5 -235.5t-158.5 -243.5h-74z" />
-<glyph unicode="&#x201e;" horiz-adv-x="776" d="M-119 -264q73 119 135.5 254.5t98.5 247.5h112l4 -23q-43 -105 -117.5 -235.5t-158.5 -243.5h-74zM215 -264q66 108 129 242.5t105 259.5h112l4 -23q-43 -105 -117.5 -235.5t-158.5 -243.5h-74z" />
-<glyph unicode="&#x2022;" horiz-adv-x="793" d="M248 682q0 137 63 213t172 76q76 0 116 -39.5t40 -118.5q0 -125 -66 -207t-176 -82q-149 0 -149 158z" />
-<glyph unicode="&#x2026;" horiz-adv-x="1489" d="M69 55q0 56 25 88.5t69 32.5q66 0 66 -72q0 -53 -25 -87.5t-67 -34.5q-68 0 -68 73zM569 55q0 56 25 88.5t69 32.5q66 0 66 -72q0 -53 -25 -87.5t-67 -34.5q-68 0 -68 73zM1071 55q0 56 25 88.5t69 32.5q66 0 66 -72q0 -53 -25 -87.5t-67 -34.5q-68 0 -68 73z" />
-<glyph unicode="&#x202f;" horiz-adv-x="381" />
-<glyph unicode="&#x2039;" horiz-adv-x="537" d="M86 541l2 26l363 365l57 -49l-318 -336l213 -385l-63 -39z" />
-<glyph unicode="&#x203a;" horiz-adv-x="537" d="M37 172l317 336l-213 385l64 39l254 -418l-2 -27l-363 -364z" />
-<glyph unicode="&#x2044;" horiz-adv-x="274" d="M-463 0l1086 1462h108l-1087 -1462h-107z" />
-<glyph unicode="&#x205f;" horiz-adv-x="476" />
-<glyph unicode="&#x2074;" horiz-adv-x="643" d="M53 815l21 76l506 577h86l-125 -581h133l-17 -72h-131l-49 -229h-82l49 229h-391zM168 887h291q61 294 79 365.5t29 105.5q-10 -16 -61 -79t-338 -392z" />
-<glyph unicode="&#x20ac;" d="M80 541l16 82h172q5 101 35 217h-170l19 82h174q95 273 270 417t399 144q166 0 287 -90l-53 -82q-102 78 -238 78q-186 0 -330.5 -120.5t-226.5 -346.5h457l-21 -82h-460q-30 -98 -39 -217h442l-20 -82h-424q0 -243 89 -356t265 -113q115 0 252 57v-94q-129 -55 -270 -55 q-209 0 -325 139.5t-116 394.5v27h-184z" />
-<glyph unicode="&#x2122;" horiz-adv-x="1534" d="M174 1384v78h522v-78h-219v-643h-86v643h-217zM772 741v721h125l221 -606l223 606h125v-721h-86v398l4 207h-6l-227 -605h-74l-221 609h-6l4 -201v-408h-82z" />
-<glyph unicode="&#xe000;" horiz-adv-x="1085" d="M0 1085h1085v-1085h-1085v1085z" />
-<glyph unicode="&#xfb00;" horiz-adv-x="1155" d="M-233 -383q53 -16 100 -16q88 0 134 53t75 186l246 1166h-205l14 67l205 14l35 160q35 168 116.5 244t227.5 76q73 0 166 -31l-25 -80q-87 27 -147 27q-96 0 -153.5 -53.5t-84.5 -178.5l-35 -164h477l35 160q35 168 116.5 244t227.5 76q73 0 166 -31l-24 -80 q-87 27 -148 27q-97 0 -154.5 -54.5t-82.5 -177.5l-35 -164h248l-17 -81h-248l-252 -1190q-34 -165 -105.5 -236.5t-193.5 -71.5q-48 0 -102 19v90q53 -16 100 -16q88 0 134 53t75 186l244 1166h-477l-252 -1190q-33 -161 -104 -234.5t-195 -73.5q-48 0 -102 19v90z" />
-<glyph unicode="&#xfb01;" horiz-adv-x="1040" d="M641 0l231 1087h96l-229 -1087h-98zM915 1366q0 55 22 88t60 33q57 0 57 -72q0 -57 -22 -90t-57 -33q-29 0 -44.5 19.5t-15.5 54.5zM-250 -383q53 -16 100 -16q88 0 134 53t75 186l246 1166h-205l14 67l205 14l35 160q35 168 116.5 244t227.5 76q73 0 166 -31l-25 -80 q-87 27 -147 27q-96 0 -153.5 -53.5t-84.5 -178.5l-35 -164h248l-16 -81h-248l-252 -1190q-33 -161 -104 -234.5t-195 -73.5q-48 0 -102 19v90z" />
-<glyph unicode="&#xfb02;" horiz-adv-x="1042" d="M643 0l334 1556h94l-334 -1556h-94zM-250 -383q53 -16 100 -16q88 0 134 53t75 186l246 1166h-205l14 67l205 14l35 160q35 168 116.5 244t227.5 76q73 0 166 -31l-25 -80q-87 27 -147 27q-96 0 -153.5 -53.5t-84.5 -178.5l-35 -164h248l-16 -81h-248l-252 -1190 q-33 -161 -104 -234.5t-195 -73.5q-48 0 -102 19v90z" />
-<glyph unicode="&#xfb03;" horiz-adv-x="1616" d="M-250 -383q53 -16 100 -16q88 0 134 53t75 186l246 1166h-205l14 67l205 14l35 160q35 168 116.5 244t227.5 76q73 0 166 -31l-25 -80q-87 27 -147 27q-96 0 -153.5 -53.5t-84.5 -178.5l-35 -164h477l35 160q35 168 116.5 244t227.5 76q73 0 166 -31l-24 -80 q-87 27 -148 27q-97 0 -154.5 -54.5t-82.5 -177.5l-35 -164h248l-17 -81h-248l-252 -1190q-34 -165 -105.5 -236.5t-193.5 -71.5q-48 0 -102 19v90q53 -16 100 -16q88 0 134 53t75 186l244 1166h-477l-252 -1190q-33 -161 -104 -234.5t-195 -73.5q-48 0 -102 19v90zM1217 0 l231 1087h96l-229 -1087h-98zM1491 1366q0 55 22 88t60 33q57 0 57 -72q0 -57 -22 -90t-57 -33q-29 0 -44.5 19.5t-15.5 54.5z" />
-<glyph unicode="&#xfb04;" horiz-adv-x="1626" d="M-250 -383q53 -16 100 -16q88 0 134 53t75 186l246 1166h-205l14 67l205 14l35 160q35 168 116.5 244t227.5 76q73 0 166 -31l-25 -80q-87 27 -147 27q-96 0 -153.5 -53.5t-84.5 -178.5l-35 -164h477l35 160q35 168 116.5 244t227.5 76q73 0 166 -31l-24 -80 q-87 27 -148 27q-97 0 -154.5 -54.5t-82.5 -177.5l-35 -164h248l-17 -81h-248l-252 -1190q-34 -165 -105.5 -236.5t-193.5 -71.5q-48 0 -102 19v90q53 -16 100 -16q88 0 134 53t75 186l244 1166h-477l-252 -1190q-33 -161 -104 -234.5t-195 -73.5q-48 0 -102 19v90zM1227 0 l334 1556h94l-334 -1556h-94z" />
-</font>
-</defs></svg> \ No newline at end of file
diff --git a/admin/survey/Fonts/OpenSans/OpenSans-LightItalic-webfont.ttf b/admin/survey/Fonts/OpenSans/OpenSans-LightItalic-webfont.ttf
deleted file mode 100644
index 3162ff8..0000000
--- a/admin/survey/Fonts/OpenSans/OpenSans-LightItalic-webfont.ttf
+++ /dev/null
Binary files differ
diff --git a/admin/survey/Fonts/OpenSans/OpenSans-LightItalic-webfont.woff b/admin/survey/Fonts/OpenSans/OpenSans-LightItalic-webfont.woff
deleted file mode 100644
index f6e97d5..0000000
--- a/admin/survey/Fonts/OpenSans/OpenSans-LightItalic-webfont.woff
+++ /dev/null
Binary files differ
diff --git a/admin/survey/Fonts/OpenSans/OpenSans-Regular-webfont.eot b/admin/survey/Fonts/OpenSans/OpenSans-Regular-webfont.eot
deleted file mode 100644
index 545b7c1..0000000
--- a/admin/survey/Fonts/OpenSans/OpenSans-Regular-webfont.eot
+++ /dev/null
Binary files differ
diff --git a/admin/survey/Fonts/OpenSans/OpenSans-Regular-webfont.svg b/admin/survey/Fonts/OpenSans/OpenSans-Regular-webfont.svg
deleted file mode 100644
index 46a8f4c..0000000
--- a/admin/survey/Fonts/OpenSans/OpenSans-Regular-webfont.svg
+++ /dev/null
@@ -1,252 +0,0 @@
-<?xml version="1.0" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
-<svg xmlns="http://www.w3.org/2000/svg">
-<metadata>
-This is a custom SVG webfont generated by Font Squirrel.
-Copyright : Digitized data copyright 20102011 Google Corporation
-Foundry : Ascender Corporation
-Foundry URL : httpwwwascendercorpcom
-</metadata>
-<defs>
-<font id="OpenSansRegular" horiz-adv-x="1171" >
-<font-face units-per-em="2048" ascent="1638" descent="-410" />
-<missing-glyph horiz-adv-x="532" />
-<glyph unicode=" " horiz-adv-x="532" />
-<glyph unicode="&#x09;" horiz-adv-x="532" />
-<glyph unicode="&#xa0;" horiz-adv-x="532" />
-<glyph unicode="!" horiz-adv-x="547" d="M152 106q0 136 120 136q58 0 89.5 -35t31.5 -101q0 -64 -32 -99.5t-89 -35.5q-52 0 -86 31.5t-34 103.5zM170 1462h207l-51 -1059h-105z" />
-<glyph unicode="&#x22;" horiz-adv-x="821" d="M133 1462h186l-40 -528h-105zM502 1462h186l-41 -528h-104z" />
-<glyph unicode="#" horiz-adv-x="1323" d="M51 430v129h287l68 340h-277v127h299l82 436h139l-82 -436h305l84 436h134l-84 -436h264v-127h-289l-66 -340h283v-129h-307l-84 -430h-137l84 430h-303l-82 -430h-136l80 430h-262zM475 559h303l66 340h-303z" />
-<glyph unicode="$" d="M131 170v156q83 -37 191.5 -60.5t197.5 -23.5v440q-205 65 -287.5 151t-82.5 222q0 131 101.5 215t268.5 102v182h129v-180q184 -5 355 -74l-52 -131q-149 59 -303 70v-434q157 -50 235 -97.5t115 -109t37 -149.5q0 -136 -102 -224.5t-285 -111.5v-232h-129v223 q-112 0 -217 17.5t-172 48.5zM319 1057q0 -76 45 -122t156 -87v387q-99 -16 -150 -62.5t-51 -115.5zM649 252q217 30 217 184q0 72 -44.5 116.5t-172.5 88.5v-389z" />
-<glyph unicode="%" horiz-adv-x="1686" d="M104 1026q0 227 74.5 342t220.5 115q145 0 223 -119t78 -338q0 -228 -76.5 -344.5t-224.5 -116.5q-140 0 -217.5 119t-77.5 342zM242 1026q0 -170 37 -255t120 -85q164 0 164 340q0 338 -164 338q-83 0 -120 -84t-37 -254zM365 0l811 1462h147l-811 -1462h-147zM985 440 q0 227 74.5 342t220.5 115q142 0 221.5 -117.5t79.5 -339.5q0 -227 -76.5 -343.5t-224.5 -116.5q-142 0 -218.5 119t-76.5 341zM1122 440q0 -171 37 -255.5t121 -84.5t124 83.5t40 256.5q0 171 -40 253.5t-124 82.5t-121 -82.5t-37 -253.5z" />
-<glyph unicode="&#x26;" horiz-adv-x="1495" d="M113 379q0 130 69.5 230t249.5 202q-85 95 -115.5 144t-48.5 102t-18 110q0 150 98 234t273 84q162 0 255 -83.5t93 -232.5q0 -107 -68 -197.5t-225 -183.5l407 -391q56 62 89.5 145.5t56.5 182.5h168q-68 -286 -205 -434l299 -291h-229l-185 178q-118 -106 -240 -152 t-272 -46q-215 0 -333.5 106t-118.5 293zM285 383q0 -117 77.5 -185.5t206.5 -68.5q241 0 400 154l-437 424q-111 -68 -157 -112.5t-68 -95.5t-22 -116zM414 1171q0 -69 36 -131.5t123 -150.5q129 75 179.5 138.5t50.5 146.5q0 77 -51.5 125.5t-137.5 48.5q-89 0 -144.5 -48 t-55.5 -129z" />
-<glyph unicode="'" horiz-adv-x="453" d="M133 1462h186l-40 -528h-105z" />
-<glyph unicode="(" horiz-adv-x="606" d="M82 561q0 265 77.5 496t223.5 405h162q-144 -193 -216.5 -424t-72.5 -475q0 -240 74 -469t213 -418h-160q-147 170 -224 397t-77 488z" />
-<glyph unicode=")" horiz-adv-x="606" d="M61 1462h162q147 -175 224 -406.5t77 -494.5t-77.5 -490t-223.5 -395h-160q139 188 213 417.5t74 469.5q0 244 -72.5 475t-216.5 424z" />
-<glyph unicode="*" horiz-adv-x="1130" d="M86 1090l29 182l391 -111l-43 395h194l-43 -395l398 111l26 -182l-381 -31l248 -326l-172 -94l-176 362l-160 -362l-176 94l242 326z" />
-<glyph unicode="+" d="M104 653v138h410v428h139v-428h412v-138h-412v-426h-139v426h-410z" />
-<glyph unicode="," horiz-adv-x="502" d="M63 -264q27 104 59.5 257t45.5 245h182l15 -23q-26 -100 -75 -232.5t-102 -246.5h-125z" />
-<glyph unicode="-" horiz-adv-x="659" d="M84 473v152h491v-152h-491z" />
-<glyph unicode="." horiz-adv-x="545" d="M152 106q0 67 30.5 101.5t87.5 34.5q58 0 90.5 -34.5t32.5 -101.5q0 -65 -33 -100t-90 -35q-51 0 -84.5 31.5t-33.5 103.5z" />
-<glyph unicode="/" horiz-adv-x="752" d="M20 0l545 1462h166l-545 -1462h-166z" />
-<glyph unicode="0" d="M102 733q0 382 119 567t363 185q238 0 361.5 -193t123.5 -559q0 -379 -119.5 -566t-365.5 -187q-236 0 -359 191.5t-123 561.5zM270 733q0 -319 75 -464.5t239 -145.5q166 0 240.5 147.5t74.5 462.5t-74.5 461.5t-240.5 146.5q-164 0 -239 -144.5t-75 -463.5z" />
-<glyph unicode="1" d="M188 1163l387 299h140v-1462h-162v1042q0 130 8 246q-21 -21 -47 -44t-238 -195z" />
-<glyph unicode="2" d="M100 0v143l385 387q176 178 232 254t84 148t28 155q0 117 -71 185.5t-197 68.5q-91 0 -172.5 -30t-181.5 -109l-88 113q202 168 440 168q206 0 323 -105.5t117 -283.5q0 -139 -78 -275t-292 -344l-320 -313v-8h752v-154h-961z" />
-<glyph unicode="3" d="M94 59v158q95 -47 202.5 -71.5t203.5 -24.5q379 0 379 297q0 266 -418 266h-144v143h146q171 0 271 75.5t100 209.5q0 107 -73.5 168t-199.5 61q-96 0 -181 -26t-194 -96l-84 112q90 71 207.5 111.5t247.5 40.5q213 0 331 -97.5t118 -267.5q0 -140 -78.5 -229 t-222.5 -119v-8q176 -22 261 -112t85 -236q0 -209 -145 -321.5t-412 -112.5q-116 0 -212.5 17.5t-187.5 61.5z" />
-<glyph unicode="4" d="M43 336v145l694 989h176v-983h217v-151h-217v-336h-159v336h-711zM209 487h545v486q0 143 10 323h-8q-48 -96 -90 -159z" />
-<glyph unicode="5" d="M133 59v160q70 -45 174 -70.5t205 -25.5q176 0 273.5 83t97.5 240q0 306 -375 306q-95 0 -254 -29l-86 55l55 684h727v-153h-585l-37 -439q115 23 229 23q231 0 363.5 -114.5t132.5 -313.5q0 -227 -144.5 -356t-398.5 -129q-247 0 -377 79z" />
-<glyph unicode="6" d="M117 625q0 431 167.5 644.5t495.5 213.5q113 0 178 -19v-143q-77 25 -176 25q-235 0 -359 -146.5t-136 -460.5h12q110 172 348 172q197 0 310.5 -119t113.5 -323q0 -228 -124.5 -358.5t-336.5 -130.5q-227 0 -360 170.5t-133 474.5zM287 506q0 -103 40 -192t113.5 -141 t167.5 -52q142 0 220.5 89.5t78.5 258.5q0 145 -73 228t-218 83q-90 0 -165 -37t-119.5 -102t-44.5 -135z" />
-<glyph unicode="7" d="M94 1309v153h973v-133l-598 -1329h-184l606 1309h-797z" />
-<glyph unicode="8" d="M104 373q0 251 306 391q-138 78 -198 168.5t-60 202.5q0 159 117.5 253.5t314.5 94.5q200 0 317 -93t117 -257q0 -108 -67 -197t-214 -162q178 -85 253 -178.5t75 -216.5q0 -182 -127 -290.5t-348 -108.5q-234 0 -360 102.5t-126 290.5zM268 369q0 -120 83.5 -187 t234.5 -67q149 0 232 70t83 192q0 97 -78 172.5t-272 146.5q-149 -64 -216 -141.5t-67 -185.5zM315 1128q0 -92 59 -158t218 -132q143 60 202.5 129t59.5 161q0 101 -72.5 160.5t-199.5 59.5q-125 0 -196 -60t-71 -160z" />
-<glyph unicode="9" d="M106 991q0 228 127.5 360t335.5 132q149 0 260.5 -76.5t171.5 -223t60 -345.5q0 -858 -664 -858q-116 0 -184 20v143q80 -26 182 -26q240 0 362.5 148.5t133.5 455.5h-12q-55 -83 -146 -126.5t-205 -43.5q-194 0 -308 116t-114 324zM270 993q0 -144 72 -226.5t219 -82.5 q91 0 167.5 37t120.5 101t44 134q0 105 -41 194t-114.5 140t-168.5 51q-143 0 -221 -92t-78 -256z" />
-<glyph unicode=":" horiz-adv-x="545" d="M152 106q0 67 30.5 101.5t87.5 34.5q58 0 90.5 -34.5t32.5 -101.5q0 -65 -33 -100t-90 -35q-51 0 -84.5 31.5t-33.5 103.5zM152 989q0 135 118 135q123 0 123 -135q0 -65 -33 -100t-90 -35q-51 0 -84.5 31.5t-33.5 103.5z" />
-<glyph unicode=";" horiz-adv-x="545" d="M63 -264q27 104 59.5 257t45.5 245h182l15 -23q-26 -100 -75 -232.5t-102 -246.5h-125zM147 989q0 135 119 135q123 0 123 -135q0 -65 -33 -100t-90 -35q-58 0 -88.5 35t-30.5 100z" />
-<glyph unicode="&#x3c;" d="M104 664v98l961 479v-149l-782 -371l782 -328v-151z" />
-<glyph unicode="=" d="M119 449v137h930v-137h-930zM119 858v137h930v-137h-930z" />
-<glyph unicode="&#x3e;" d="M104 242v151l783 326l-783 373v149l961 -479v-98z" />
-<glyph unicode="?" horiz-adv-x="879" d="M27 1384q189 99 395 99q191 0 297 -94t106 -265q0 -73 -19.5 -128.5t-57.5 -105t-164 -159.5q-101 -86 -133.5 -143t-32.5 -152v-33h-129v54q0 117 36 192.5t134 159.5q136 115 171.5 173t35.5 140q0 102 -65.5 157.5t-188.5 55.5q-79 0 -154 -18.5t-172 -67.5zM240 106 q0 136 120 136q58 0 89.5 -35t31.5 -101q0 -64 -32 -99.5t-89 -35.5q-52 0 -86 31.5t-34 103.5z" />
-<glyph unicode="@" horiz-adv-x="1841" d="M121 571q0 260 107 463t305 314.5t454 111.5q215 0 382.5 -90.5t259 -257t91.5 -383.5q0 -142 -44 -260t-124 -183t-184 -65q-86 0 -145 52t-70 133h-8q-40 -87 -114.5 -136t-176.5 -49q-150 0 -234.5 102.5t-84.5 278.5q0 204 118 331.5t310 127.5q68 0 154 -12.5 t155 -34.5l-25 -470v-22q0 -178 133 -178q91 0 148 107.5t57 279.5q0 181 -74 317t-210.5 209.5t-313.5 73.5q-223 0 -388 -92.5t-252 -264t-87 -396.5q0 -305 161 -469t464 -164q210 0 436 86v-133q-192 -84 -436 -84q-363 0 -563.5 199.5t-200.5 557.5zM686 598 q0 -254 195 -254q207 0 225 313l14 261q-72 20 -157 20q-130 0 -203.5 -90t-73.5 -250z" />
-<glyph unicode="A" horiz-adv-x="1296" d="M0 0l578 1468h143l575 -1468h-176l-182 465h-586l-180 -465h-172zM412 618h473l-170 453q-33 86 -68 211q-22 -96 -63 -211z" />
-<glyph unicode="B" horiz-adv-x="1327" d="M201 0v1462h413q291 0 421 -87t130 -275q0 -130 -72.5 -214.5t-211.5 -109.5v-10q333 -57 333 -350q0 -196 -132.5 -306t-370.5 -110h-510zM371 145h305q177 0 266.5 68.5t89.5 214.5q0 136 -91.5 200t-278.5 64h-291v-547zM371 836h280q180 0 259 56.5t79 190.5 q0 123 -88 177.5t-280 54.5h-250v-479z" />
-<glyph unicode="C" horiz-adv-x="1292" d="M125 733q0 226 84.5 396t244 262t375.5 92q230 0 402 -84l-72 -146q-166 78 -332 78q-241 0 -380.5 -160.5t-139.5 -439.5q0 -287 134.5 -443.5t383.5 -156.5q153 0 349 55v-149q-152 -57 -375 -57q-323 0 -498.5 196t-175.5 557z" />
-<glyph unicode="D" horiz-adv-x="1493" d="M201 0v1462h448q341 0 530 -189t189 -528q0 -362 -196.5 -553.5t-565.5 -191.5h-405zM371 147h207q304 0 457 149.5t153 442.5q0 286 -143.5 431t-426.5 145h-247v-1168z" />
-<glyph unicode="E" horiz-adv-x="1139" d="M201 0v1462h815v-151h-645v-471h606v-150h-606v-538h645v-152h-815z" />
-<glyph unicode="F" horiz-adv-x="1057" d="M201 0v1462h815v-151h-645v-535h606v-151h-606v-625h-170z" />
-<glyph unicode="G" horiz-adv-x="1491" d="M125 731q0 228 91.5 399.5t263.5 262t403 90.5q234 0 436 -86l-66 -150q-198 84 -381 84q-267 0 -417 -159t-150 -441q0 -296 144.5 -449t424.5 -153q152 0 297 35v450h-327v152h497v-711q-116 -37 -236 -56t-278 -19q-332 0 -517 197.5t-185 553.5z" />
-<glyph unicode="H" horiz-adv-x="1511" d="M201 0v1462h170v-622h770v622h170v-1462h-170v688h-770v-688h-170z" />
-<glyph unicode="I" horiz-adv-x="571" d="M201 0v1462h170v-1462h-170z" />
-<glyph unicode="J" horiz-adv-x="547" d="M-160 -213q71 -20 148 -20q99 0 150.5 60t51.5 173v1462h170v-1448q0 -190 -96 -294.5t-276 -104.5q-94 0 -148 27v145z" />
-<glyph unicode="K" horiz-adv-x="1257" d="M201 0v1462h170v-725l663 725h201l-588 -635l610 -827h-200l-533 709l-153 -136v-573h-170z" />
-<glyph unicode="L" horiz-adv-x="1063" d="M201 0v1462h170v-1308h645v-154h-815z" />
-<glyph unicode="M" horiz-adv-x="1849" d="M201 0v1462h256l463 -1206h8l467 1206h254v-1462h-170v942q0 162 14 352h-8l-500 -1294h-137l-496 1296h-8q14 -154 14 -366v-930h-157z" />
-<glyph unicode="N" horiz-adv-x="1544" d="M201 0v1462h192l797 -1222h8q-2 28 -9 174q-5 114 -5 177v32v839h159v-1462h-194l-799 1227h-8q16 -216 16 -396v-831h-157z" />
-<glyph unicode="O" horiz-adv-x="1595" d="M125 735q0 357 176 553.5t500 196.5q315 0 492 -200t177 -552q0 -351 -177.5 -552t-493.5 -201q-323 0 -498.5 197.5t-175.5 557.5zM305 733q0 -297 126.5 -450.5t367.5 -153.5q243 0 367 153t124 451q0 295 -123.5 447.5t-365.5 152.5q-243 0 -369.5 -153.5 t-126.5 -446.5z" />
-<glyph unicode="P" horiz-adv-x="1233" d="M201 0v1462h379q548 0 548 -426q0 -222 -151.5 -341.5t-433.5 -119.5h-172v-575h-170zM371 721h153q226 0 327 73t101 234q0 145 -95 216t-296 71h-190v-594z" />
-<glyph unicode="Q" horiz-adv-x="1595" d="M125 735q0 357 176 553.5t500 196.5q315 0 492 -200t177 -552q0 -281 -113 -467t-319 -252l348 -362h-247l-285 330l-55 -2q-323 0 -498.5 197.5t-175.5 557.5zM305 733q0 -297 126.5 -450.5t367.5 -153.5q243 0 367 153t124 451q0 295 -123.5 447.5t-365.5 152.5 q-243 0 -369.5 -153.5t-126.5 -446.5z" />
-<glyph unicode="R" horiz-adv-x="1266" d="M201 0v1462h401q269 0 397.5 -103t128.5 -310q0 -290 -294 -392l397 -657h-201l-354 608h-305v-608h-170zM371 754h233q180 0 264 71.5t84 214.5q0 145 -85.5 209t-274.5 64h-221v-559z" />
-<glyph unicode="S" horiz-adv-x="1124" d="M106 47v164q90 -38 196 -60t210 -22q170 0 256 64.5t86 179.5q0 76 -30.5 124.5t-102 89.5t-217.5 93q-204 73 -291.5 173t-87.5 261q0 169 127 269t336 100q218 0 401 -80l-53 -148q-181 76 -352 76q-135 0 -211 -58t-76 -161q0 -76 28 -124.5t94.5 -89t203.5 -89.5 q230 -82 316.5 -176t86.5 -244q0 -193 -140 -301t-380 -108q-260 0 -400 67z" />
-<glyph unicode="T" horiz-adv-x="1133" d="M18 1311v151h1096v-151h-463v-1311h-170v1311h-463z" />
-<glyph unicode="U" horiz-adv-x="1491" d="M186 520v942h170v-954q0 -183 100 -281t294 -98q185 0 285 98.5t100 282.5v952h170v-946q0 -250 -151 -393t-415 -143t-408.5 144t-144.5 396z" />
-<glyph unicode="V" horiz-adv-x="1219" d="M0 1462h180l336 -946q58 -163 92 -317q36 162 94 323l334 940h183l-527 -1462h-168z" />
-<glyph unicode="W" horiz-adv-x="1896" d="M27 1462h180l231 -903q48 -190 70 -344q27 183 80 358l262 889h180l275 -897q48 -155 81 -350q19 142 72 346l230 901h180l-391 -1462h-168l-295 979q-21 65 -47 164t-27 119q-22 -132 -70 -289l-286 -973h-168z" />
-<glyph unicode="X" horiz-adv-x="1182" d="M8 0l486 764l-453 698h188l363 -579l366 579h181l-453 -692l488 -770h-193l-393 643l-400 -643h-180z" />
-<glyph unicode="Y" horiz-adv-x="1147" d="M0 1462h186l387 -731l390 731h184l-488 -895v-567h-172v559z" />
-<glyph unicode="Z" horiz-adv-x="1169" d="M82 0v133l776 1176h-752v153h959v-133l-776 -1175h798v-154h-1005z" />
-<glyph unicode="[" horiz-adv-x="674" d="M166 -324v1786h457v-141h-289v-1503h289v-142h-457z" />
-<glyph unicode="\" horiz-adv-x="752" d="M23 1462h163l547 -1462h-166z" />
-<glyph unicode="]" horiz-adv-x="674" d="M51 -182h289v1503h-289v141h457v-1786h-457v142z" />
-<glyph unicode="^" horiz-adv-x="1110" d="M49 551l434 922h99l477 -922h-152l-372 745l-334 -745h-152z" />
-<glyph unicode="_" horiz-adv-x="918" d="M-4 -184h926v-131h-926v131z" />
-<glyph unicode="`" horiz-adv-x="1182" d="M393 1548v21h203q32 -69 89 -159.5t101 -143.5v-25h-110q-65 52 -154 148t-129 159z" />
-<glyph unicode="a" horiz-adv-x="1139" d="M94 303q0 332 531 348l186 6v68q0 129 -55.5 190.5t-177.5 61.5q-137 0 -310 -84l-51 127q81 44 177.5 69t193.5 25q196 0 290.5 -87t94.5 -279v-748h-123l-33 156h-8q-82 -103 -163.5 -139.5t-203.5 -36.5q-163 0 -255.5 84t-92.5 239zM268 301q0 -90 54.5 -137 t152.5 -47q155 0 243.5 85t88.5 238v99l-166 -7q-198 -7 -285.5 -61.5t-87.5 -169.5z" />
-<glyph unicode="b" horiz-adv-x="1255" d="M176 0v1556h166v-378q0 -127 -8 -228h8q116 164 344 164q216 0 335.5 -147.5t119.5 -417.5t-120.5 -419.5t-334.5 -149.5q-107 0 -195.5 39.5t-148.5 121.5h-12l-35 -141h-119zM342 549q0 -231 77 -330.5t247 -99.5q153 0 228 111.5t75 320.5q0 214 -75 319t-232 105 q-170 0 -245 -97.5t-75 -328.5z" />
-<glyph unicode="c" horiz-adv-x="975" d="M115 541q0 275 132.5 425t377.5 150q79 0 158 -17t124 -40l-51 -141q-55 22 -120 36.5t-115 14.5q-334 0 -334 -426q0 -202 81.5 -310t241.5 -108q137 0 281 59v-147q-110 -57 -277 -57q-238 0 -368.5 146.5t-130.5 414.5z" />
-<glyph unicode="d" horiz-adv-x="1255" d="M115 545q0 271 120 421t334 150q223 0 342 -162h13l-7 79l-4 77v446h166v-1556h-135l-22 147h-9q-115 -167 -344 -167q-215 0 -334.5 147t-119.5 418zM287 543q0 -210 77 -317t226 -107q170 0 246.5 92.5t76.5 298.5v35q0 233 -77.5 332.5t-247.5 99.5 q-146 0 -223.5 -113.5t-77.5 -320.5z" />
-<glyph unicode="e" horiz-adv-x="1149" d="M115 539q0 265 130.5 421t350.5 156q206 0 326 -135.5t120 -357.5v-105h-755q5 -193 97.5 -293t260.5 -100q177 0 350 74v-148q-88 -38 -166.5 -54.5t-189.5 -16.5q-243 0 -383.5 148t-140.5 411zM291 653h573q0 157 -70 240.5t-200 83.5q-132 0 -210.5 -86t-92.5 -238z " />
-<glyph unicode="f" horiz-adv-x="694" d="M29 967v75l196 60v61q0 404 353 404q87 0 204 -35l-43 -133q-96 31 -164 31q-94 0 -139 -62.5t-45 -200.5v-71h279v-129h-279v-967h-166v967h-196z" />
-<glyph unicode="g" horiz-adv-x="1122" d="M39 -186q0 100 64 173t180 99q-42 19 -70.5 59t-28.5 93q0 60 32 105t101 87q-85 35 -138.5 119t-53.5 192q0 180 108 277.5t306 97.5q86 0 155 -20h379v-105l-203 -24q28 -35 50 -91.5t22 -127.5q0 -161 -110 -257t-302 -96q-49 0 -92 8q-106 -56 -106 -141 q0 -45 37 -66.5t127 -21.5h194q178 0 273.5 -75t95.5 -218q0 -182 -146 -277.5t-426 -95.5q-215 0 -331.5 80t-116.5 226zM199 -184q0 -89 75 -135t215 -46q209 0 309.5 62.5t100.5 169.5q0 89 -55 123.5t-207 34.5h-199q-113 0 -176 -54t-63 -155zM289 745q0 -115 65 -174 t181 -59q243 0 243 236q0 247 -246 247q-117 0 -180 -63t-63 -187z" />
-<glyph unicode="h" horiz-adv-x="1257" d="M176 0v1556h166v-471q0 -85 -8 -141h10q49 79 139.5 124.5t206.5 45.5q201 0 301.5 -95.5t100.5 -303.5v-715h-166v709q0 134 -61 200t-191 66q-173 0 -252.5 -94t-79.5 -308v-573h-166z" />
-<glyph unicode="i" horiz-adv-x="518" d="M162 1393q0 57 28 83.5t70 26.5q40 0 69 -27t29 -83t-29 -83.5t-69 -27.5q-42 0 -70 27.5t-28 83.5zM176 0v1096h166v-1096h-166z" />
-<glyph unicode="j" horiz-adv-x="518" d="M-111 -332q69 -20 136 -20q78 0 114.5 42.5t36.5 129.5v1276h166v-1264q0 -324 -299 -324q-95 0 -154 25v135zM162 1393q0 57 28 83.5t70 26.5q40 0 69 -27t29 -83t-29 -83.5t-69 -27.5q-42 0 -70 27.5t-28 83.5z" />
-<glyph unicode="k" horiz-adv-x="1075" d="M176 0v1556h164v-825q0 -55 -8 -170h8q43 61 131 160l354 375h197l-444 -467l475 -629h-201l-387 518l-125 -108v-410h-164z" />
-<glyph unicode="l" horiz-adv-x="518" d="M176 0v1556h166v-1556h-166z" />
-<glyph unicode="m" horiz-adv-x="1905" d="M176 0v1096h135l27 -150h8q47 80 132.5 125t191.5 45q257 0 336 -186h8q49 86 142 136t212 50q186 0 278.5 -95.5t92.5 -305.5v-715h-166v713q0 131 -56 196.5t-174 65.5q-155 0 -229 -89t-74 -274v-612h-166v713q0 131 -56 196.5t-175 65.5q-156 0 -228.5 -93.5 t-72.5 -306.5v-575h-166z" />
-<glyph unicode="n" horiz-adv-x="1257" d="M176 0v1096h135l27 -150h8q51 81 143 125.5t205 44.5q198 0 298 -95.5t100 -305.5v-715h-166v709q0 134 -61 200t-191 66q-172 0 -252 -93t-80 -307v-575h-166z" />
-<glyph unicode="o" horiz-adv-x="1237" d="M115 549q0 268 134 417.5t372 149.5q230 0 365.5 -153t135.5 -414q0 -268 -135 -418.5t-373 -150.5q-147 0 -261 69t-176 198t-62 302zM287 549q0 -210 84 -320t247 -110t247.5 109.5t84.5 320.5q0 209 -84.5 317.5t-249.5 108.5q-163 0 -246 -107t-83 -319z" />
-<glyph unicode="p" horiz-adv-x="1255" d="M176 -492v1588h135l23 -150h8q64 90 149 130t195 40q218 0 336.5 -149t118.5 -418q0 -270 -120.5 -419.5t-334.5 -149.5q-107 0 -195.5 39.5t-148.5 121.5h-12q12 -96 12 -182v-451h-166zM342 549q0 -231 77 -330.5t247 -99.5q142 0 222.5 115t80.5 317 q0 205 -80.5 314.5t-226.5 109.5q-168 0 -243 -93t-77 -296v-37z" />
-<glyph unicode="q" horiz-adv-x="1255" d="M115 545q0 269 120 420t334 151q225 0 346 -170h9l24 150h131v-1588h-166v469q0 100 11 170h-13q-115 -167 -346 -167q-212 0 -331 149t-119 416zM287 543q0 -207 76.5 -315.5t226.5 -108.5q166 0 242 89t81 300v37q0 230 -78 331t-247 101q-146 0 -223.5 -113.5 t-77.5 -320.5z" />
-<glyph unicode="r" horiz-adv-x="836" d="M176 0v1096h137l19 -203h8q61 107 147 165t189 58q73 0 131 -12l-23 -154q-68 15 -120 15q-133 0 -227.5 -108t-94.5 -269v-588h-166z" />
-<glyph unicode="s" horiz-adv-x="977" d="M106 827q0 134 109 211.5t299 77.5q177 0 346 -72l-59 -135q-165 68 -299 68q-118 0 -178 -37t-60 -102q0 -44 22.5 -75t72.5 -59t192 -81q195 -71 263.5 -143t68.5 -181q0 -153 -114 -236t-320 -83q-218 0 -340 69v154q79 -40 169.5 -63t174.5 -23q130 0 200 41.5 t70 126.5q0 64 -55.5 109.5t-216.5 107.5q-153 57 -217.5 99.5t-96 96.5t-31.5 129z" />
-<glyph unicode="t" horiz-adv-x="723" d="M31 967v80l157 69l70 234h96v-254h318v-129h-318v-645q0 -99 47 -152t129 -53q44 0 85 6.5t65 13.5v-127q-27 -13 -79.5 -21.5t-94.5 -8.5q-318 0 -318 335v652h-157z" />
-<glyph unicode="u" horiz-adv-x="1257" d="M164 379v717h168v-711q0 -134 61 -200t191 -66q172 0 251.5 94t79.5 307v576h166v-1096h-137l-24 147h-9q-51 -81 -141.5 -124t-206.5 -43q-200 0 -299.5 95t-99.5 304z" />
-<glyph unicode="v" horiz-adv-x="1026" d="M0 1096h178l236 -650q80 -228 94 -296h8q11 53 69.5 219.5t262.5 726.5h178l-416 -1096h-194z" />
-<glyph unicode="w" horiz-adv-x="1593" d="M23 1096h174q106 -413 161.5 -629t63.5 -291h8q11 57 35.5 147.5t42.5 143.5l201 629h180l196 -629q56 -172 76 -289h8q4 36 21.5 111t208.5 807h172l-303 -1096h-197l-201 643q-19 59 -71 268h-8q-40 -175 -70 -270l-207 -641h-192z" />
-<glyph unicode="x" horiz-adv-x="1073" d="M39 0l401 561l-381 535h189l289 -420l288 420h187l-381 -535l401 -561h-188l-307 444l-310 -444h-188z" />
-<glyph unicode="y" horiz-adv-x="1032" d="M2 1096h178l240 -625q79 -214 98 -309h8q13 51 54.5 174.5t271.5 759.5h178l-471 -1248q-70 -185 -163.5 -262.5t-229.5 -77.5q-76 0 -150 17v133q55 -12 123 -12q171 0 244 192l61 156z" />
-<glyph unicode="z" horiz-adv-x="958" d="M82 0v113l598 854h-561v129h743v-129l-590 -838h605v-129h-795z" />
-<glyph unicode="{" horiz-adv-x="776" d="M61 498v141q130 2 188 48t58 142v306q0 155 108 241t290 86v-139q-230 -6 -230 -199v-295q0 -215 -223 -254v-12q223 -39 223 -254v-297q0 -102 58.5 -148t171.5 -48v-140q-190 2 -294 87t-104 239v303q0 104 -63 148.5t-183 44.5z" />
-<glyph unicode="|" horiz-adv-x="1128" d="M494 -496v2052h141v-2052h-141z" />
-<glyph unicode="}" horiz-adv-x="776" d="M72 -184q111 2 169 48t58 148v297q0 114 55 174t168 80v12q-223 39 -223 254v295q0 193 -227 199v139q184 0 289.5 -87t105.5 -240v-306q0 -97 59 -142.5t189 -47.5v-141q-122 0 -185 -44.5t-63 -148.5v-303q0 -153 -102.5 -238.5t-292.5 -87.5v140z" />
-<glyph unicode="~" d="M104 592v151q100 109 244 109q68 0 124.5 -14t145.5 -52q66 -28 115 -41.5t96 -13.5q54 0 118 32t118 89v-150q-102 -110 -244 -110q-72 0 -135 16.5t-135 48.5q-75 32 -120 44t-93 12q-53 0 -116.5 -33.5t-117.5 -87.5z" />
-<glyph unicode="&#xa1;" horiz-adv-x="547" d="M152 983q0 63 31.5 99t88.5 36q51 0 86 -32t35 -103q0 -135 -121 -135q-60 0 -90 35.5t-30 99.5zM168 -373l51 1057h105l51 -1057h-207z" />
-<glyph unicode="&#xa2;" d="M190 741q0 508 396 570v172h135v-164q75 -3 146 -19.5t120 -39.5l-49 -140q-133 51 -242 51q-172 0 -253 -105.5t-81 -322.5q0 -212 79.5 -313.5t246.5 -101.5q141 0 283 59v-147q-105 -54 -252 -60v-200h-133v206q-203 32 -299.5 168.5t-96.5 386.5z" />
-<glyph unicode="&#xa3;" d="M63 0v141q205 47 205 291v223h-198v127h198v316q0 178 112 280.5t302 102.5t360 -84l-61 -133q-154 77 -297 77q-123 0 -185.5 -62t-62.5 -202v-295h422v-127h-422v-221q0 -100 -32.5 -168t-106.5 -112h795v-154h-1029z" />
-<glyph unicode="&#xa4;" d="M123 1092l94 92l135 -133q104 73 234 73q127 0 229 -73l137 133l95 -92l-134 -138q74 -113 74 -231q0 -131 -74 -234l131 -135l-92 -92l-137 133q-102 -71 -229 -71q-134 0 -234 73l-135 -133l-92 92l133 136q-74 107 -74 231q0 122 74 229zM313 723q0 -112 78.5 -192 t194.5 -80t195 79.5t79 192.5q0 114 -80 195t-194 81q-116 0 -194.5 -82t-78.5 -194z" />
-<glyph unicode="&#xa5;" d="M31 1462h178l375 -727l379 727h174l-416 -770h262v-127h-317v-170h317v-127h-317v-268h-164v268h-316v127h316v170h-316v127h256z" />
-<glyph unicode="&#xa6;" horiz-adv-x="1128" d="M494 281h141v-777h-141v777zM494 780v776h141v-776h-141z" />
-<glyph unicode="&#xa7;" horiz-adv-x="1057" d="M123 57v148q78 -37 175 -59.5t179 -22.5q134 0 204.5 38t70.5 109q0 46 -24 75t-78 58t-169 72q-142 52 -209 97t-100 102t-33 135q0 86 43 154.5t121 105.5q-74 40 -116 95.5t-42 140.5q0 121 103.5 190.5t300.5 69.5q94 0 173.5 -14.5t176.5 -53.5l-53 -131 q-98 39 -165.5 52.5t-143.5 13.5q-116 0 -174 -29.5t-58 -93.5q0 -60 61.5 -102t215.5 -97q186 -68 261 -143.5t75 -182.5q0 -90 -41 -160.5t-115 -111.5q153 -81 153 -227q0 -140 -117 -216.5t-329 -76.5q-218 0 -346 65zM285 829q0 -77 66 -129.5t233 -113.5l49 -19 q137 80 137 191q0 83 -73.5 139t-258.5 113q-68 -19 -110.5 -69t-42.5 -112z" />
-<glyph unicode="&#xa8;" horiz-adv-x="1182" d="M309 1393q0 52 26.5 75t63.5 23q38 0 65.5 -23t27.5 -75q0 -50 -27.5 -74.5t-65.5 -24.5q-37 0 -63.5 24.5t-26.5 74.5zM690 1393q0 52 26.5 75t63.5 23t64.5 -23t27.5 -75q0 -50 -27.5 -74.5t-64.5 -24.5t-63.5 24.5t-26.5 74.5z" />
-<glyph unicode="&#xa9;" horiz-adv-x="1704" d="M100 731q0 200 100 375t275 276t377 101q200 0 375 -100t276 -275t101 -377q0 -197 -97 -370t-272 -277t-383 -104q-207 0 -382 103.5t-272.5 276.5t-97.5 371zM205 731q0 -173 87 -323.5t237.5 -237t322.5 -86.5q174 0 323 87t236.5 235.5t87.5 324.5q0 174 -87 323 t-235.5 236.5t-324.5 87.5q-174 0 -323 -87t-236.5 -235.5t-87.5 -324.5zM481 731q0 209 110.5 332t301.5 123q128 0 246 -60l-58 -118q-108 51 -188 51q-125 0 -192.5 -87t-67.5 -241q0 -168 63.5 -249t194.5 -81q86 0 211 45v-124q-48 -20 -98.5 -34t-120.5 -14 q-194 0 -298 120.5t-104 336.5z" />
-<glyph unicode="&#xaa;" horiz-adv-x="725" d="M70 989q0 102 77 154.5t242 58.5l117 4v39q0 133 -148 133q-100 0 -204 -51l-43 96q114 56 247 56q130 0 198.5 -52.5t68.5 -173.5v-452h-93l-24 84q-92 -97 -232 -97q-95 0 -150.5 49.5t-55.5 151.5zM193 989q0 -100 112 -100q201 0 201 180v49l-98 -4 q-112 -4 -163.5 -32.5t-51.5 -92.5z" />
-<glyph unicode="&#xab;" horiz-adv-x="1018" d="M82 524v27l342 407l119 -69l-289 -350l289 -351l-119 -71zM477 524v27l344 407l117 -69l-287 -350l287 -351l-117 -71z" />
-<glyph unicode="&#xac;" d="M104 653v138h961v-527h-137v389h-824z" />
-<glyph unicode="&#xad;" horiz-adv-x="659" d="M84 473v152h491v-152h-491z" />
-<glyph unicode="&#xae;" horiz-adv-x="1704" d="M100 731q0 200 100 375t275 276t377 101q200 0 375 -100t276 -275t101 -377q0 -197 -97 -370t-272 -277t-383 -104q-207 0 -382 103.5t-272.5 276.5t-97.5 371zM205 731q0 -173 87 -323.5t237.5 -237t322.5 -86.5q174 0 323 87t236.5 235.5t87.5 324.5q0 174 -87 323 t-235.5 236.5t-324.5 87.5q-174 0 -323 -87t-236.5 -235.5t-87.5 -324.5zM575 285v891h261q166 0 243.5 -65t77.5 -198q0 -80 -42.5 -141.5t-119.5 -91.5l238 -395h-168l-207 354h-135v-354h-148zM723 762h108q80 0 128.5 41.5t48.5 105.5q0 75 -43 107.5t-136 32.5h-106 v-287z" />
-<glyph unicode="&#xaf;" horiz-adv-x="1024" d="M-6 1556v127h1036v-127h-1036z" />
-<glyph unicode="&#xb0;" horiz-adv-x="877" d="M127 1171q0 130 90.5 221t220.5 91t221 -90.5t91 -221.5q0 -84 -41 -155.5t-114 -113.5t-157 -42q-130 0 -220.5 90t-90.5 221zM242 1171q0 -82 58.5 -139t139.5 -57q80 0 137.5 56.5t57.5 139.5q0 84 -56.5 140.5t-138.5 56.5q-83 0 -140.5 -57t-57.5 -140z" />
-<glyph unicode="&#xb1;" d="M104 653v138h410v428h139v-428h412v-138h-412v-426h-139v426h-410zM104 1v138h961v-138h-961z" />
-<glyph unicode="&#xb2;" horiz-adv-x="711" d="M49 586v104l236 230q89 86 130 134.5t57.5 86.5t16.5 92q0 68 -40 102.5t-103 34.5q-52 0 -101 -19t-118 -69l-66 88q131 111 283 111q132 0 205.5 -65t73.5 -177q0 -80 -44.5 -155.5t-191.5 -213.5l-174 -165h440v-119h-604z" />
-<glyph unicode="&#xb3;" horiz-adv-x="711" d="M33 625v123q147 -68 270 -68q211 0 211 162q0 145 -231 145h-117v107h119q103 0 152.5 39.5t49.5 107.5q0 61 -40 95t-107 34q-66 0 -122 -21.5t-112 -56.5l-69 90q63 45 133 72t164 27q136 0 214.5 -59.5t78.5 -166.5q0 -80 -41 -131.5t-109 -74.5q176 -47 176 -209 q0 -128 -92 -199.5t-260 -71.5q-152 0 -268 56z" />
-<glyph unicode="&#xb4;" horiz-adv-x="1182" d="M393 1241v25q48 62 103.5 150t87.5 153h202v-21q-44 -65 -131 -160t-151 -147h-111z" />
-<glyph unicode="&#xb5;" horiz-adv-x="1268" d="M176 -492v1588h166v-715q0 -262 254 -262q171 0 250.5 94.5t79.5 306.5v576h166v-1096h-136l-26 147h-10q-111 -167 -340 -167q-150 0 -238 92h-10q10 -84 10 -244v-320h-166z" />
-<glyph unicode="&#xb6;" horiz-adv-x="1341" d="M113 1042q0 260 109 387t341 127h557v-1816h-114v1712h-213v-1712h-115v819q-62 -18 -146 -18q-216 0 -317.5 125t-101.5 376z" />
-<glyph unicode="&#xb7;" horiz-adv-x="545" d="M152 723q0 66 31 100.5t87 34.5q58 0 90.5 -34.5t32.5 -100.5q0 -65 -33 -100t-90 -35q-51 0 -84.5 31.5t-33.5 103.5z" />
-<glyph unicode="&#xb8;" horiz-adv-x="465" d="M37 -377q45 -8 104 -8q79 0 119.5 20t40.5 74q0 43 -39.5 69.5t-148.5 43.5l88 178h110l-55 -115q180 -39 180 -174q0 -97 -76.5 -150t-226.5 -53q-51 0 -96 9v106z" />
-<glyph unicode="&#xb9;" horiz-adv-x="711" d="M76 1280l262 182h143v-876h-133v579q0 91 6 181q-22 -22 -49 -44.5t-162 -117.5z" />
-<glyph unicode="&#xba;" horiz-adv-x="768" d="M66 1135q0 163 84 253.5t235 90.5q152 0 234.5 -91t82.5 -253q0 -164 -85.5 -255.5t-235.5 -91.5q-146 0 -230.5 93t-84.5 254zM188 1135q0 -122 45.5 -183t149.5 -61q105 0 151 61t46 183q0 123 -46 182t-151 59q-103 0 -149 -59t-46 -182z" />
-<glyph unicode="&#xbb;" horiz-adv-x="1018" d="M80 188l287 351l-287 350l117 69l344 -407v-27l-344 -407zM475 188l287 351l-287 350l117 69l344 -407v-27l-344 -407z" />
-<glyph unicode="&#xbc;" horiz-adv-x="1597" d="M252 0l903 1462h143l-903 -1462h-143zM75 1280l262 182h143v-876h-133v579q0 91 6 181q-22 -22 -49 -44.5t-162 -117.5zM817 203v101l408 579h139v-563h125v-117h-125v-202h-145v202h-402zM957 320h262v195q0 134 6 209q-5 -12 -17 -31.5t-27 -41.5l-30 -46 q-15 -22 -26 -39z" />
-<glyph unicode="&#xbd;" horiz-adv-x="1597" d="M184 0l903 1462h143l-903 -1462h-143zM46 1280l262 182h143v-876h-133v579q0 91 6 181q-22 -22 -49 -44.5t-162 -117.5zM895 1v104l236 230q89 86 130 134.5t57.5 86.5t16.5 92q0 68 -40 102.5t-103 34.5q-52 0 -101 -19t-118 -69l-66 88q131 111 283 111 q132 0 205.5 -65t73.5 -177q0 -80 -44.5 -155.5t-191.5 -213.5l-174 -165h440v-119h-604z" />
-<glyph unicode="&#xbe;" horiz-adv-x="1597" d="M26 625v123q147 -68 270 -68q211 0 211 162q0 145 -231 145h-117v107h119q103 0 152.5 39.5t49.5 107.5q0 61 -40 95t-107 34q-66 0 -122 -21.5t-112 -56.5l-69 90q63 45 133 72t164 27q136 0 214.5 -59.5t78.5 -166.5q0 -80 -41 -131.5t-109 -74.5q176 -47 176 -209 q0 -128 -92 -199.5t-260 -71.5q-152 0 -268 56zM344 0l903 1462h143l-903 -1462h-143zM897 203v101l408 579h139v-563h125v-117h-125v-202h-145v202h-402zM1037 320h262v195q0 134 6 209q-5 -12 -17 -31.5t-27 -41.5l-30 -46q-15 -22 -26 -39z" />
-<glyph unicode="&#xbf;" horiz-adv-x="879" d="M51 -37q0 70 17.5 122.5t49.5 97t76.5 85.5t98.5 88q101 88 133.5 146t32.5 151v31h131v-51q0 -122 -37.5 -196t-134.5 -158q-121 -106 -151.5 -143.5t-43 -76t-12.5 -94.5q0 -100 66 -156.5t188 -56.5q80 0 155 19t173 67l59 -135q-197 -96 -395 -96q-190 0 -298 93 t-108 263zM397 983q0 64 33 99.5t88 35.5q51 0 86 -32t35 -103q0 -135 -121 -135q-59 0 -90 34.5t-31 100.5z" />
-<glyph unicode="&#xc0;" horiz-adv-x="1296" d="M0 0l578 1468h143l575 -1468h-176l-182 465h-586l-180 -465h-172zM412 618h473l-170 453q-33 86 -68 211q-22 -96 -63 -211zM331 1886v21h203q32 -69 89 -159.5t101 -143.5v-25h-110q-65 52 -154 148t-129 159z" />
-<glyph unicode="&#xc1;" horiz-adv-x="1296" d="M0 0l578 1468h143l575 -1468h-176l-182 465h-586l-180 -465h-172zM412 618h473l-170 453q-33 86 -68 211q-22 -96 -63 -211zM526 1579v25q48 62 103.5 150t87.5 153h202v-21q-44 -65 -131 -160t-151 -147h-111z" />
-<glyph unicode="&#xc2;" horiz-adv-x="1296" d="M0 0l578 1468h143l575 -1468h-176l-182 465h-586l-180 -465h-172zM412 618h473l-170 453q-33 86 -68 211q-22 -96 -63 -211zM303 1579v23q127 136 178 200t74 105h166q22 -42 76.5 -108.5t179.5 -196.5v-23h-119q-88 55 -221 186q-136 -134 -219 -186h-115z" />
-<glyph unicode="&#xc3;" horiz-adv-x="1296" d="M0 0l578 1468h143l575 -1468h-176l-182 465h-586l-180 -465h-172zM412 618h473l-170 453q-33 86 -68 211q-22 -96 -63 -211zM268 1579q13 121 70.5 189.5t148.5 68.5q46 0 89 -18.5t82 -41t75 -41t68 -18.5q49 0 73 29.5t39 91.5h99q-13 -121 -69.5 -189.5t-150.5 -68.5 q-43 0 -84 18.5t-80.5 41t-76 41t-70.5 18.5q-50 0 -75.5 -30t-39.5 -91h-98z" />
-<glyph unicode="&#xc4;" horiz-adv-x="1296" d="M0 0l578 1468h143l575 -1468h-176l-182 465h-586l-180 -465h-172zM412 618h473l-170 453q-33 86 -68 211q-22 -96 -63 -211zM364 1731q0 52 26.5 75t63.5 23q38 0 65.5 -23t27.5 -75q0 -50 -27.5 -74.5t-65.5 -24.5q-37 0 -63.5 24.5t-26.5 74.5zM745 1731q0 52 26.5 75 t63.5 23t64.5 -23t27.5 -75q0 -50 -27.5 -74.5t-64.5 -24.5t-63.5 24.5t-26.5 74.5z" />
-<glyph unicode="&#xc5;" horiz-adv-x="1296" d="M0 0l578 1468h143l575 -1468h-176l-182 465h-586l-180 -465h-172zM412 618h473l-170 453q-33 86 -68 211q-22 -96 -63 -211zM424 1585q0 98 60.5 155.5t160.5 57.5q101 0 163 -59.5t62 -151.5q0 -98 -61.5 -157.5t-163.5 -59.5q-101 0 -161 58.5t-60 156.5zM528 1585 q0 -56 30 -86.5t87 -30.5q52 0 84.5 30.5t32.5 86.5t-33 86.5t-84 30.5t-84 -30.5t-33 -86.5z" />
-<glyph unicode="&#xc6;" horiz-adv-x="1788" d="M-2 0l698 1462h969v-151h-580v-471h541v-150h-541v-538h580v-152h-750v465h-514l-227 -465h-176zM469 618h446v693h-118z" />
-<glyph unicode="&#xc7;" horiz-adv-x="1292" d="M125 733q0 226 84.5 396t244 262t375.5 92q230 0 402 -84l-72 -146q-166 78 -332 78q-241 0 -380.5 -160.5t-139.5 -439.5q0 -287 134.5 -443.5t383.5 -156.5q153 0 349 55v-149q-152 -57 -375 -57q-323 0 -498.5 196t-175.5 557zM551 -377q45 -8 104 -8q79 0 119.5 20 t40.5 74q0 43 -39.5 69.5t-148.5 43.5l88 178h110l-55 -115q180 -39 180 -174q0 -97 -76.5 -150t-226.5 -53q-51 0 -96 9v106z" />
-<glyph unicode="&#xc8;" horiz-adv-x="1139" d="M201 0v1462h815v-151h-645v-471h606v-150h-606v-538h645v-152h-815zM320 1886v21h203q32 -69 89 -159.5t101 -143.5v-25h-110q-65 52 -154 148t-129 159z" />
-<glyph unicode="&#xc9;" horiz-adv-x="1139" d="M201 0v1462h815v-151h-645v-471h606v-150h-606v-538h645v-152h-815zM456 1579v25q48 62 103.5 150t87.5 153h202v-21q-44 -65 -131 -160t-151 -147h-111z" />
-<glyph unicode="&#xca;" horiz-adv-x="1139" d="M201 0v1462h815v-151h-645v-471h606v-150h-606v-538h645v-152h-815zM263 1579v23q127 136 178 200t74 105h166q22 -42 76.5 -108.5t179.5 -196.5v-23h-119q-88 55 -221 186q-136 -134 -219 -186h-115z" />
-<glyph unicode="&#xcb;" horiz-adv-x="1139" d="M201 0v1462h815v-151h-645v-471h606v-150h-606v-538h645v-152h-815zM327 1731q0 52 26.5 75t63.5 23q38 0 65.5 -23t27.5 -75q0 -50 -27.5 -74.5t-65.5 -24.5q-37 0 -63.5 24.5t-26.5 74.5zM708 1731q0 52 26.5 75t63.5 23t64.5 -23t27.5 -75q0 -50 -27.5 -74.5 t-64.5 -24.5t-63.5 24.5t-26.5 74.5z" />
-<glyph unicode="&#xcc;" horiz-adv-x="571" d="M201 0v1462h170v-1462h-170zM5 1886v21h203q32 -69 89 -159.5t101 -143.5v-25h-110q-65 52 -154 148t-129 159z" />
-<glyph unicode="&#xcd;" horiz-adv-x="571" d="M201 0v1462h170v-1462h-170zM179 1579v25q48 62 103.5 150t87.5 153h202v-21q-44 -65 -131 -160t-151 -147h-111z" />
-<glyph unicode="&#xce;" horiz-adv-x="571" d="M201 0v1462h170v-1462h-170zM-57 1579v23q127 136 178 200t74 105h166q22 -42 76.5 -108.5t179.5 -196.5v-23h-119q-88 55 -221 186q-136 -134 -219 -186h-115z" />
-<glyph unicode="&#xcf;" horiz-adv-x="571" d="M201 0v1462h170v-1462h-170zM5 1731q0 52 26.5 75t63.5 23q38 0 65.5 -23t27.5 -75q0 -50 -27.5 -74.5t-65.5 -24.5q-37 0 -63.5 24.5t-26.5 74.5zM386 1731q0 52 26.5 75t63.5 23t64.5 -23t27.5 -75q0 -50 -27.5 -74.5t-64.5 -24.5t-63.5 24.5t-26.5 74.5z" />
-<glyph unicode="&#xd0;" horiz-adv-x="1479" d="M47 649v150h154v663h434q337 0 527 -187.5t190 -529.5q0 -362 -196.5 -553.5t-565.5 -191.5h-389v649h-154zM371 147h190q610 0 610 592q0 576 -569 576h-231v-516h379v-150h-379v-502z" />
-<glyph unicode="&#xd1;" horiz-adv-x="1544" d="M201 0v1462h192l797 -1222h8q-2 28 -9 174q-5 114 -5 177v32v839h159v-1462h-194l-799 1227h-8q16 -216 16 -396v-831h-157zM411 1579q13 121 70.5 189.5t148.5 68.5q46 0 89 -18.5t82 -41t75 -41t68 -18.5q49 0 73 29.5t39 91.5h99q-13 -121 -69.5 -189.5t-150.5 -68.5 q-43 0 -84 18.5t-80.5 41t-76 41t-70.5 18.5q-50 0 -75.5 -30t-39.5 -91h-98z" />
-<glyph unicode="&#xd2;" horiz-adv-x="1595" d="M125 735q0 357 176 553.5t500 196.5q315 0 492 -200t177 -552q0 -351 -177.5 -552t-493.5 -201q-323 0 -498.5 197.5t-175.5 557.5zM305 733q0 -297 126.5 -450.5t367.5 -153.5q243 0 367 153t124 451q0 295 -123.5 447.5t-365.5 152.5q-243 0 -369.5 -153.5 t-126.5 -446.5zM514 1886v21h203q32 -69 89 -159.5t101 -143.5v-25h-110q-65 52 -154 148t-129 159z" />
-<glyph unicode="&#xd3;" horiz-adv-x="1595" d="M125 735q0 357 176 553.5t500 196.5q315 0 492 -200t177 -552q0 -351 -177.5 -552t-493.5 -201q-323 0 -498.5 197.5t-175.5 557.5zM305 733q0 -297 126.5 -450.5t367.5 -153.5q243 0 367 153t124 451q0 295 -123.5 447.5t-365.5 152.5q-243 0 -369.5 -153.5 t-126.5 -446.5zM659 1579v25q48 62 103.5 150t87.5 153h202v-21q-44 -65 -131 -160t-151 -147h-111z" />
-<glyph unicode="&#xd4;" horiz-adv-x="1595" d="M125 735q0 357 176 553.5t500 196.5q315 0 492 -200t177 -552q0 -351 -177.5 -552t-493.5 -201q-323 0 -498.5 197.5t-175.5 557.5zM305 733q0 -297 126.5 -450.5t367.5 -153.5q243 0 367 153t124 451q0 295 -123.5 447.5t-365.5 152.5q-243 0 -369.5 -153.5 t-126.5 -446.5zM448 1579v23q127 136 178 200t74 105h166q22 -42 76.5 -108.5t179.5 -196.5v-23h-119q-88 55 -221 186q-136 -134 -219 -186h-115z" />
-<glyph unicode="&#xd5;" horiz-adv-x="1595" d="M125 735q0 357 176 553.5t500 196.5q315 0 492 -200t177 -552q0 -351 -177.5 -552t-493.5 -201q-323 0 -498.5 197.5t-175.5 557.5zM305 733q0 -297 126.5 -450.5t367.5 -153.5q243 0 367 153t124 451q0 295 -123.5 447.5t-365.5 152.5q-243 0 -369.5 -153.5 t-126.5 -446.5zM418 1579q13 121 70.5 189.5t148.5 68.5q46 0 89 -18.5t82 -41t75 -41t68 -18.5q49 0 73 29.5t39 91.5h99q-13 -121 -69.5 -189.5t-150.5 -68.5q-43 0 -84 18.5t-80.5 41t-76 41t-70.5 18.5q-50 0 -75.5 -30t-39.5 -91h-98z" />
-<glyph unicode="&#xd6;" horiz-adv-x="1595" d="M125 735q0 357 176 553.5t500 196.5q315 0 492 -200t177 -552q0 -351 -177.5 -552t-493.5 -201q-323 0 -498.5 197.5t-175.5 557.5zM305 733q0 -297 126.5 -450.5t367.5 -153.5q243 0 367 153t124 451q0 295 -123.5 447.5t-365.5 152.5q-243 0 -369.5 -153.5 t-126.5 -446.5zM522 1731q0 52 26.5 75t63.5 23q38 0 65.5 -23t27.5 -75q0 -50 -27.5 -74.5t-65.5 -24.5q-37 0 -63.5 24.5t-26.5 74.5zM903 1731q0 52 26.5 75t63.5 23t64.5 -23t27.5 -75q0 -50 -27.5 -74.5t-64.5 -24.5t-63.5 24.5t-26.5 74.5z" />
-<glyph unicode="&#xd7;" d="M133 1075l100 101l353 -355l354 355l96 -99l-352 -354l350 -352l-96 -99l-354 351l-348 -351l-101 99l350 352z" />
-<glyph unicode="&#xd8;" horiz-adv-x="1595" d="M125 735q0 357 176 553.5t500 196.5q209 0 366 -94l97 135l120 -80l-106 -148q192 -202 192 -565q0 -351 -177.5 -552t-493.5 -201q-235 0 -383 100l-101 -141l-120 79l108 154q-178 198 -178 563zM305 733q0 -262 101 -416l669 943q-106 73 -274 73 q-243 0 -369.5 -153.5t-126.5 -446.5zM508 211q115 -82 291 -82q243 0 367 153t124 451q0 272 -110 426z" />
-<glyph unicode="&#xd9;" horiz-adv-x="1491" d="M186 520v942h170v-954q0 -183 100 -281t294 -98q185 0 285 98.5t100 282.5v952h170v-946q0 -250 -151 -393t-415 -143t-408.5 144t-144.5 396zM463 1886v21h203q32 -69 89 -159.5t101 -143.5v-25h-110q-65 52 -154 148t-129 159z" />
-<glyph unicode="&#xda;" horiz-adv-x="1491" d="M186 520v942h170v-954q0 -183 100 -281t294 -98q185 0 285 98.5t100 282.5v952h170v-946q0 -250 -151 -393t-415 -143t-408.5 144t-144.5 396zM600 1579v25q48 62 103.5 150t87.5 153h202v-21q-44 -65 -131 -160t-151 -147h-111z" />
-<glyph unicode="&#xdb;" horiz-adv-x="1491" d="M186 520v942h170v-954q0 -183 100 -281t294 -98q185 0 285 98.5t100 282.5v952h170v-946q0 -250 -151 -393t-415 -143t-408.5 144t-144.5 396zM393 1579v23q127 136 178 200t74 105h166q22 -42 76.5 -108.5t179.5 -196.5v-23h-119q-88 55 -221 186q-136 -134 -219 -186 h-115z" />
-<glyph unicode="&#xdc;" horiz-adv-x="1491" d="M186 520v942h170v-954q0 -183 100 -281t294 -98q185 0 285 98.5t100 282.5v952h170v-946q0 -250 -151 -393t-415 -143t-408.5 144t-144.5 396zM461 1731q0 52 26.5 75t63.5 23q38 0 65.5 -23t27.5 -75q0 -50 -27.5 -74.5t-65.5 -24.5q-37 0 -63.5 24.5t-26.5 74.5z M842 1731q0 52 26.5 75t63.5 23t64.5 -23t27.5 -75q0 -50 -27.5 -74.5t-64.5 -24.5t-63.5 24.5t-26.5 74.5z" />
-<glyph unicode="&#xdd;" horiz-adv-x="1147" d="M0 1462h186l387 -731l390 731h184l-488 -895v-567h-172v559zM442 1579v25q48 62 103.5 150t87.5 153h202v-21q-44 -65 -131 -160t-151 -147h-111z" />
-<glyph unicode="&#xde;" horiz-adv-x="1251" d="M201 0v1462h170v-256h215q281 0 420 -103.5t139 -318.5q0 -227 -151.5 -346t-438.5 -119h-184v-319h-170zM371 465h168q226 0 327 71.5t101 235.5q0 149 -95 218t-297 69h-204v-594z" />
-<glyph unicode="&#xdf;" horiz-adv-x="1274" d="M176 0v1202q0 178 110 271.5t332 93.5q206 0 318.5 -78.5t112.5 -222.5q0 -135 -143 -250q-88 -70 -116 -103.5t-28 -66.5q0 -32 13.5 -53t49 -49.5t113.5 -79.5q140 -95 191 -173.5t51 -179.5q0 -160 -97 -245.5t-276 -85.5q-188 0 -295 69v154q63 -39 141 -62.5 t150 -23.5q215 0 215 182q0 75 -41.5 128.5t-151.5 123.5q-127 82 -175 143.5t-48 145.5q0 63 34.5 116t105.5 106q75 57 107 102t32 98q0 80 -68 122.5t-195 42.5q-276 0 -276 -223v-1204h-166z" />
-<glyph unicode="&#xe0;" horiz-adv-x="1139" d="M94 303q0 332 531 348l186 6v68q0 129 -55.5 190.5t-177.5 61.5q-137 0 -310 -84l-51 127q81 44 177.5 69t193.5 25q196 0 290.5 -87t94.5 -279v-748h-123l-33 156h-8q-82 -103 -163.5 -139.5t-203.5 -36.5q-163 0 -255.5 84t-92.5 239zM268 301q0 -90 54.5 -137 t152.5 -47q155 0 243.5 85t88.5 238v99l-166 -7q-198 -7 -285.5 -61.5t-87.5 -169.5zM279 1548v21h203q32 -69 89 -159.5t101 -143.5v-25h-110q-65 52 -154 148t-129 159z" />
-<glyph unicode="&#xe1;" horiz-adv-x="1139" d="M94 303q0 332 531 348l186 6v68q0 129 -55.5 190.5t-177.5 61.5q-137 0 -310 -84l-51 127q81 44 177.5 69t193.5 25q196 0 290.5 -87t94.5 -279v-748h-123l-33 156h-8q-82 -103 -163.5 -139.5t-203.5 -36.5q-163 0 -255.5 84t-92.5 239zM268 301q0 -90 54.5 -137 t152.5 -47q155 0 243.5 85t88.5 238v99l-166 -7q-198 -7 -285.5 -61.5t-87.5 -169.5zM436 1241v25q48 62 103.5 150t87.5 153h202v-21q-44 -65 -131 -160t-151 -147h-111z" />
-<glyph unicode="&#xe2;" horiz-adv-x="1139" d="M94 303q0 332 531 348l186 6v68q0 129 -55.5 190.5t-177.5 61.5q-137 0 -310 -84l-51 127q81 44 177.5 69t193.5 25q196 0 290.5 -87t94.5 -279v-748h-123l-33 156h-8q-82 -103 -163.5 -139.5t-203.5 -36.5q-163 0 -255.5 84t-92.5 239zM268 301q0 -90 54.5 -137 t152.5 -47q155 0 243.5 85t88.5 238v99l-166 -7q-198 -7 -285.5 -61.5t-87.5 -169.5zM228 1241v23q127 136 178 200t74 105h166q22 -42 76.5 -108.5t179.5 -196.5v-23h-119q-88 55 -221 186q-136 -134 -219 -186h-115z" />
-<glyph unicode="&#xe3;" horiz-adv-x="1139" d="M94 303q0 332 531 348l186 6v68q0 129 -55.5 190.5t-177.5 61.5q-137 0 -310 -84l-51 127q81 44 177.5 69t193.5 25q196 0 290.5 -87t94.5 -279v-748h-123l-33 156h-8q-82 -103 -163.5 -139.5t-203.5 -36.5q-163 0 -255.5 84t-92.5 239zM268 301q0 -90 54.5 -137 t152.5 -47q155 0 243.5 85t88.5 238v99l-166 -7q-198 -7 -285.5 -61.5t-87.5 -169.5zM197 1241q13 121 70.5 189.5t148.5 68.5q46 0 89 -18.5t82 -41t75 -41t68 -18.5q49 0 73 29.5t39 91.5h99q-13 -121 -69.5 -189.5t-150.5 -68.5q-43 0 -84 18.5t-80.5 41t-76 41 t-70.5 18.5q-50 0 -75.5 -30t-39.5 -91h-98z" />
-<glyph unicode="&#xe4;" horiz-adv-x="1139" d="M94 303q0 332 531 348l186 6v68q0 129 -55.5 190.5t-177.5 61.5q-137 0 -310 -84l-51 127q81 44 177.5 69t193.5 25q196 0 290.5 -87t94.5 -279v-748h-123l-33 156h-8q-82 -103 -163.5 -139.5t-203.5 -36.5q-163 0 -255.5 84t-92.5 239zM268 301q0 -90 54.5 -137 t152.5 -47q155 0 243.5 85t88.5 238v99l-166 -7q-198 -7 -285.5 -61.5t-87.5 -169.5zM279 1393q0 52 26.5 75t63.5 23q38 0 65.5 -23t27.5 -75q0 -50 -27.5 -74.5t-65.5 -24.5q-37 0 -63.5 24.5t-26.5 74.5zM660 1393q0 52 26.5 75t63.5 23t64.5 -23t27.5 -75 q0 -50 -27.5 -74.5t-64.5 -24.5t-63.5 24.5t-26.5 74.5z" />
-<glyph unicode="&#xe5;" horiz-adv-x="1139" d="M94 303q0 332 531 348l186 6v68q0 129 -55.5 190.5t-177.5 61.5q-137 0 -310 -84l-51 127q81 44 177.5 69t193.5 25q196 0 290.5 -87t94.5 -279v-748h-123l-33 156h-8q-82 -103 -163.5 -139.5t-203.5 -36.5q-163 0 -255.5 84t-92.5 239zM268 301q0 -90 54.5 -137 t152.5 -47q155 0 243.5 85t88.5 238v99l-166 -7q-198 -7 -285.5 -61.5t-87.5 -169.5zM358 1456q0 98 60.5 155.5t160.5 57.5q101 0 163 -59.5t62 -151.5q0 -98 -61.5 -157.5t-163.5 -59.5q-101 0 -161 58.5t-60 156.5zM462 1456q0 -56 30 -86.5t87 -30.5q52 0 84.5 30.5 t32.5 86.5t-33 86.5t-84 30.5t-84 -30.5t-33 -86.5z" />
-<glyph unicode="&#xe6;" horiz-adv-x="1757" d="M94 303q0 161 124 250.5t378 97.5l184 6v68q0 129 -58 190.5t-177 61.5q-144 0 -307 -84l-52 127q74 41 173.5 67.5t197.5 26.5q130 0 212.5 -43.5t123.5 -138.5q53 88 138.5 136t195.5 48q192 0 308 -133.5t116 -355.5v-107h-701q8 -395 322 -395q91 0 169.5 17.5 t162.5 56.5v-148q-86 -38 -160.5 -54.5t-175.5 -16.5q-289 0 -414 233q-81 -127 -179.5 -180t-232.5 -53q-163 0 -255.5 85t-92.5 238zM268 301q0 -95 53.5 -139.5t141.5 -44.5q145 0 229 84.5t84 238.5v99l-158 -7q-186 -8 -268 -62.5t-82 -168.5zM954 653h519 q0 156 -64 240t-184 84q-121 0 -190.5 -83t-80.5 -241z" />
-<glyph unicode="&#xe7;" horiz-adv-x="975" d="M115 541q0 275 132.5 425t377.5 150q79 0 158 -17t124 -40l-51 -141q-55 22 -120 36.5t-115 14.5q-334 0 -334 -426q0 -202 81.5 -310t241.5 -108q137 0 281 59v-147q-110 -57 -277 -57q-238 0 -368.5 146.5t-130.5 414.5zM363 -377q45 -8 104 -8q79 0 119.5 20t40.5 74 q0 43 -39.5 69.5t-148.5 43.5l88 178h110l-55 -115q180 -39 180 -174q0 -97 -76.5 -150t-226.5 -53q-51 0 -96 9v106z" />
-<glyph unicode="&#xe8;" horiz-adv-x="1149" d="M115 539q0 265 130.5 421t350.5 156q206 0 326 -135.5t120 -357.5v-105h-755q5 -193 97.5 -293t260.5 -100q177 0 350 74v-148q-88 -38 -166.5 -54.5t-189.5 -16.5q-243 0 -383.5 148t-140.5 411zM291 653h573q0 157 -70 240.5t-200 83.5q-132 0 -210.5 -86t-92.5 -238z M318 1548v21h203q32 -69 89 -159.5t101 -143.5v-25h-110q-65 52 -154 148t-129 159z" />
-<glyph unicode="&#xe9;" horiz-adv-x="1149" d="M115 539q0 265 130.5 421t350.5 156q206 0 326 -135.5t120 -357.5v-105h-755q5 -193 97.5 -293t260.5 -100q177 0 350 74v-148q-88 -38 -166.5 -54.5t-189.5 -16.5q-243 0 -383.5 148t-140.5 411zM291 653h573q0 157 -70 240.5t-200 83.5q-132 0 -210.5 -86t-92.5 -238z M471 1241v25q48 62 103.5 150t87.5 153h202v-21q-44 -65 -131 -160t-151 -147h-111z" />
-<glyph unicode="&#xea;" horiz-adv-x="1149" d="M115 539q0 265 130.5 421t350.5 156q206 0 326 -135.5t120 -357.5v-105h-755q5 -193 97.5 -293t260.5 -100q177 0 350 74v-148q-88 -38 -166.5 -54.5t-189.5 -16.5q-243 0 -383.5 148t-140.5 411zM291 653h573q0 157 -70 240.5t-200 83.5q-132 0 -210.5 -86t-92.5 -238z M259 1241v23q127 136 178 200t74 105h166q22 -42 76.5 -108.5t179.5 -196.5v-23h-119q-88 55 -221 186q-136 -134 -219 -186h-115z" />
-<glyph unicode="&#xeb;" horiz-adv-x="1149" d="M115 539q0 265 130.5 421t350.5 156q206 0 326 -135.5t120 -357.5v-105h-755q5 -193 97.5 -293t260.5 -100q177 0 350 74v-148q-88 -38 -166.5 -54.5t-189.5 -16.5q-243 0 -383.5 148t-140.5 411zM291 653h573q0 157 -70 240.5t-200 83.5q-132 0 -210.5 -86t-92.5 -238z M319 1393q0 52 26.5 75t63.5 23q38 0 65.5 -23t27.5 -75q0 -50 -27.5 -74.5t-65.5 -24.5q-37 0 -63.5 24.5t-26.5 74.5zM700 1393q0 52 26.5 75t63.5 23t64.5 -23t27.5 -75q0 -50 -27.5 -74.5t-64.5 -24.5t-63.5 24.5t-26.5 74.5z" />
-<glyph unicode="&#xec;" horiz-adv-x="518" d="M176 0v1096h166v-1096h-166zM-38 1548v21h203q32 -69 89 -159.5t101 -143.5v-25h-110q-65 52 -154 148t-129 159z" />
-<glyph unicode="&#xed;" horiz-adv-x="518" d="M176 0v1096h166v-1096h-166zM169 1241v25q48 62 103.5 150t87.5 153h202v-21q-44 -65 -131 -160t-151 -147h-111z" />
-<glyph unicode="&#xee;" horiz-adv-x="518" d="M176 0v1096h166v-1096h-166zM-77 1241v23q127 136 178 200t74 105h166q22 -42 76.5 -108.5t179.5 -196.5v-23h-119q-88 55 -221 186q-136 -134 -219 -186h-115z" />
-<glyph unicode="&#xef;" horiz-adv-x="518" d="M176 0v1096h166v-1096h-166zM-20 1393q0 52 26.5 75t63.5 23q38 0 65.5 -23t27.5 -75q0 -50 -27.5 -74.5t-65.5 -24.5q-37 0 -63.5 24.5t-26.5 74.5zM361 1393q0 52 26.5 75t63.5 23t64.5 -23t27.5 -75q0 -50 -27.5 -74.5t-64.5 -24.5t-63.5 24.5t-26.5 74.5z" />
-<glyph unicode="&#xf0;" horiz-adv-x="1221" d="M113 475q0 230 131.5 361t351.5 131q226 0 326 -121l8 4q-57 214 -262 405l-271 -155l-73 108l233 133q-92 62 -186 111l69 117q156 -73 258 -148l238 138l76 -107l-207 -119q152 -143 234.5 -342t82.5 -428q0 -281 -130.5 -432t-377.5 -151q-222 0 -361.5 134.5 t-139.5 360.5zM281 469q0 -167 87.5 -258.5t249.5 -91.5q175 0 255.5 100.5t80.5 292.5q0 147 -90 232t-246 85q-337 0 -337 -360z" />
-<glyph unicode="&#xf1;" horiz-adv-x="1257" d="M176 0v1096h135l27 -150h8q51 81 143 125.5t205 44.5q198 0 298 -95.5t100 -305.5v-715h-166v709q0 134 -61 200t-191 66q-172 0 -252 -93t-80 -307v-575h-166zM278 1241q13 121 70.5 189.5t148.5 68.5q46 0 89 -18.5t82 -41t75 -41t68 -18.5q49 0 73 29.5t39 91.5h99 q-13 -121 -69.5 -189.5t-150.5 -68.5q-43 0 -84 18.5t-80.5 41t-76 41t-70.5 18.5q-50 0 -75.5 -30t-39.5 -91h-98z" />
-<glyph unicode="&#xf2;" horiz-adv-x="1237" d="M115 549q0 268 134 417.5t372 149.5q230 0 365.5 -153t135.5 -414q0 -268 -135 -418.5t-373 -150.5q-147 0 -261 69t-176 198t-62 302zM287 549q0 -210 84 -320t247 -110t247.5 109.5t84.5 320.5q0 209 -84.5 317.5t-249.5 108.5q-163 0 -246 -107t-83 -319zM349 1548v21 h203q32 -69 89 -159.5t101 -143.5v-25h-110q-65 52 -154 148t-129 159z" />
-<glyph unicode="&#xf3;" horiz-adv-x="1237" d="M115 549q0 268 134 417.5t372 149.5q230 0 365.5 -153t135.5 -414q0 -268 -135 -418.5t-373 -150.5q-147 0 -261 69t-176 198t-62 302zM287 549q0 -210 84 -320t247 -110t247.5 109.5t84.5 320.5q0 209 -84.5 317.5t-249.5 108.5q-163 0 -246 -107t-83 -319zM479 1241v25 q48 62 103.5 150t87.5 153h202v-21q-44 -65 -131 -160t-151 -147h-111z" />
-<glyph unicode="&#xf4;" horiz-adv-x="1237" d="M115 549q0 268 134 417.5t372 149.5q230 0 365.5 -153t135.5 -414q0 -268 -135 -418.5t-373 -150.5q-147 0 -261 69t-176 198t-62 302zM287 549q0 -210 84 -320t247 -110t247.5 109.5t84.5 320.5q0 209 -84.5 317.5t-249.5 108.5q-163 0 -246 -107t-83 -319zM282 1241v23 q127 136 178 200t74 105h166q22 -42 76.5 -108.5t179.5 -196.5v-23h-119q-88 55 -221 186q-136 -134 -219 -186h-115z" />
-<glyph unicode="&#xf5;" horiz-adv-x="1237" d="M115 549q0 268 134 417.5t372 149.5q230 0 365.5 -153t135.5 -414q0 -268 -135 -418.5t-373 -150.5q-147 0 -261 69t-176 198t-62 302zM287 549q0 -210 84 -320t247 -110t247.5 109.5t84.5 320.5q0 209 -84.5 317.5t-249.5 108.5q-163 0 -246 -107t-83 -319zM249 1241 q13 121 70.5 189.5t148.5 68.5q46 0 89 -18.5t82 -41t75 -41t68 -18.5q49 0 73 29.5t39 91.5h99q-13 -121 -69.5 -189.5t-150.5 -68.5q-43 0 -84 18.5t-80.5 41t-76 41t-70.5 18.5q-50 0 -75.5 -30t-39.5 -91h-98z" />
-<glyph unicode="&#xf6;" horiz-adv-x="1237" d="M115 549q0 268 134 417.5t372 149.5q230 0 365.5 -153t135.5 -414q0 -268 -135 -418.5t-373 -150.5q-147 0 -261 69t-176 198t-62 302zM287 549q0 -210 84 -320t247 -110t247.5 109.5t84.5 320.5q0 209 -84.5 317.5t-249.5 108.5q-163 0 -246 -107t-83 -319zM336 1393 q0 52 26.5 75t63.5 23q38 0 65.5 -23t27.5 -75q0 -50 -27.5 -74.5t-65.5 -24.5q-37 0 -63.5 24.5t-26.5 74.5zM717 1393q0 52 26.5 75t63.5 23t64.5 -23t27.5 -75q0 -50 -27.5 -74.5t-64.5 -24.5t-63.5 24.5t-26.5 74.5z" />
-<glyph unicode="&#xf7;" d="M104 653v138h961v-138h-961zM471 373q0 60 29.5 90.5t83.5 30.5q52 0 81 -31.5t29 -89.5q0 -57 -29.5 -89t-80.5 -32q-52 0 -82.5 31.5t-30.5 89.5zM471 1071q0 60 29.5 90.5t83.5 30.5q52 0 81 -31.5t29 -89.5q0 -57 -29.5 -89t-80.5 -32q-52 0 -82.5 31.5t-30.5 89.5z " />
-<glyph unicode="&#xf8;" horiz-adv-x="1237" d="M115 549q0 268 134 417.5t372 149.5q154 0 270 -76l84 119l117 -76l-97 -133q127 -152 127 -401q0 -268 -135 -418.5t-373 -150.5q-154 0 -266 69l-84 -117l-114 78l94 131q-129 152 -129 408zM287 549q0 -171 53 -273l465 646q-75 53 -189 53q-163 0 -246 -107t-83 -319 zM434 170q71 -51 184 -51q163 0 247.5 109.5t84.5 320.5q0 164 -51 264z" />
-<glyph unicode="&#xf9;" horiz-adv-x="1257" d="M164 379v717h168v-711q0 -134 61 -200t191 -66q172 0 251.5 94t79.5 307v576h166v-1096h-137l-24 147h-9q-51 -81 -141.5 -124t-206.5 -43q-200 0 -299.5 95t-99.5 304zM333 1548v21h203q32 -69 89 -159.5t101 -143.5v-25h-110q-65 52 -154 148t-129 159z" />
-<glyph unicode="&#xfa;" horiz-adv-x="1257" d="M164 379v717h168v-711q0 -134 61 -200t191 -66q172 0 251.5 94t79.5 307v576h166v-1096h-137l-24 147h-9q-51 -81 -141.5 -124t-206.5 -43q-200 0 -299.5 95t-99.5 304zM506 1241v25q48 62 103.5 150t87.5 153h202v-21q-44 -65 -131 -160t-151 -147h-111z" />
-<glyph unicode="&#xfb;" horiz-adv-x="1257" d="M164 379v717h168v-711q0 -134 61 -200t191 -66q172 0 251.5 94t79.5 307v576h166v-1096h-137l-24 147h-9q-51 -81 -141.5 -124t-206.5 -43q-200 0 -299.5 95t-99.5 304zM286 1241v23q127 136 178 200t74 105h166q22 -42 76.5 -108.5t179.5 -196.5v-23h-119 q-88 55 -221 186q-136 -134 -219 -186h-115z" />
-<glyph unicode="&#xfc;" horiz-adv-x="1257" d="M164 379v717h168v-711q0 -134 61 -200t191 -66q172 0 251.5 94t79.5 307v576h166v-1096h-137l-24 147h-9q-51 -81 -141.5 -124t-206.5 -43q-200 0 -299.5 95t-99.5 304zM342 1393q0 52 26.5 75t63.5 23q38 0 65.5 -23t27.5 -75q0 -50 -27.5 -74.5t-65.5 -24.5 q-37 0 -63.5 24.5t-26.5 74.5zM723 1393q0 52 26.5 75t63.5 23t64.5 -23t27.5 -75q0 -50 -27.5 -74.5t-64.5 -24.5t-63.5 24.5t-26.5 74.5z" />
-<glyph unicode="&#xfd;" horiz-adv-x="1032" d="M2 1096h178l240 -625q79 -214 98 -309h8q13 51 54.5 174.5t271.5 759.5h178l-471 -1248q-70 -185 -163.5 -262.5t-229.5 -77.5q-76 0 -150 17v133q55 -12 123 -12q171 0 244 192l61 156zM411 1241v25q48 62 103.5 150t87.5 153h202v-21q-44 -65 -131 -160t-151 -147h-111 z" />
-<glyph unicode="&#xfe;" horiz-adv-x="1255" d="M176 -492v2048h166v-466q0 -52 -6 -142h8q66 89 151 128.5t191 39.5q215 0 335 -150t120 -417q0 -268 -120.5 -418.5t-334.5 -150.5q-222 0 -344 161h-12l4 -34q8 -77 8 -140v-459h-166zM342 549q0 -231 77 -330.5t247 -99.5q303 0 303 432q0 215 -74 319.5t-231 104.5 q-168 0 -244 -92t-78 -293v-41z" />
-<glyph unicode="&#xff;" horiz-adv-x="1032" d="M2 1096h178l240 -625q79 -214 98 -309h8q13 51 54.5 174.5t271.5 759.5h178l-471 -1248q-70 -185 -163.5 -262.5t-229.5 -77.5q-76 0 -150 17v133q55 -12 123 -12q171 0 244 192l61 156zM234 1393q0 52 26.5 75t63.5 23q38 0 65.5 -23t27.5 -75q0 -50 -27.5 -74.5 t-65.5 -24.5q-37 0 -63.5 24.5t-26.5 74.5zM615 1393q0 52 26.5 75t63.5 23t64.5 -23t27.5 -75q0 -50 -27.5 -74.5t-64.5 -24.5t-63.5 24.5t-26.5 74.5z" />
-<glyph unicode="&#x131;" horiz-adv-x="518" d="M176 0v1096h166v-1096h-166z" />
-<glyph unicode="&#x152;" horiz-adv-x="1890" d="M125 735q0 360 174 555t494 195q102 0 192 -23h782v-151h-589v-471h551v-150h-551v-538h589v-152h-768q-102 -20 -194 -20q-327 0 -503.5 196.5t-176.5 558.5zM305 733q0 -297 128.5 -450.5t375.5 -153.5q112 0 199 33v1141q-87 30 -197 30q-249 0 -377.5 -152.5 t-128.5 -447.5z" />
-<glyph unicode="&#x153;" horiz-adv-x="1929" d="M113 549q0 265 131 415t366 150q131 0 233.5 -59.5t164.5 -173.5q58 112 154 172.5t222 60.5q201 0 320 -132.5t119 -358.5v-105h-729q8 -393 338 -393q94 0 174.5 17.5t167.5 56.5v-148q-88 -39 -164 -55t-180 -16q-293 0 -418 235q-62 -116 -166.5 -175.5t-241.5 -59.5 q-223 0 -357 152.5t-134 416.5zM287 549q0 -211 76 -320.5t243 -109.5q163 0 239.5 106.5t76.5 315.5q0 221 -77.5 327.5t-242.5 106.5q-166 0 -240.5 -108t-74.5 -318zM1098 653h544q0 158 -66 240t-194 82q-127 0 -199.5 -82t-84.5 -240z" />
-<glyph unicode="&#x178;" horiz-adv-x="1147" d="M0 1462h186l387 -731l390 731h184l-488 -895v-567h-172v559zM294 1731q0 52 26.5 75t63.5 23q38 0 65.5 -23t27.5 -75q0 -50 -27.5 -74.5t-65.5 -24.5q-37 0 -63.5 24.5t-26.5 74.5zM675 1731q0 52 26.5 75t63.5 23t64.5 -23t27.5 -75q0 -50 -27.5 -74.5t-64.5 -24.5 t-63.5 24.5t-26.5 74.5z" />
-<glyph unicode="&#x2c6;" horiz-adv-x="1212" d="M268 1241v23q127 136 178 200t74 105h166q22 -42 76.5 -108.5t179.5 -196.5v-23h-119q-88 55 -221 186q-136 -134 -219 -186h-115z" />
-<glyph unicode="&#x2da;" horiz-adv-x="1182" d="M367 1456q0 98 60.5 155.5t160.5 57.5q101 0 163 -59.5t62 -151.5q0 -98 -61.5 -157.5t-163.5 -59.5q-101 0 -161 58.5t-60 156.5zM471 1456q0 -56 30 -86.5t87 -30.5q52 0 84.5 30.5t32.5 86.5t-33 86.5t-84 30.5t-84 -30.5t-33 -86.5z" />
-<glyph unicode="&#x2dc;" horiz-adv-x="1212" d="M264 1241q13 121 70.5 189.5t148.5 68.5q46 0 89 -18.5t82 -41t75 -41t68 -18.5q49 0 73 29.5t39 91.5h99q-13 -121 -69.5 -189.5t-150.5 -68.5q-43 0 -84 18.5t-80.5 41t-76 41t-70.5 18.5q-50 0 -75.5 -30t-39.5 -91h-98z" />
-<glyph unicode="&#x2000;" horiz-adv-x="953" />
-<glyph unicode="&#x2001;" horiz-adv-x="1907" />
-<glyph unicode="&#x2002;" horiz-adv-x="953" />
-<glyph unicode="&#x2003;" horiz-adv-x="1907" />
-<glyph unicode="&#x2004;" horiz-adv-x="635" />
-<glyph unicode="&#x2005;" horiz-adv-x="476" />
-<glyph unicode="&#x2006;" horiz-adv-x="317" />
-<glyph unicode="&#x2007;" horiz-adv-x="317" />
-<glyph unicode="&#x2008;" horiz-adv-x="238" />
-<glyph unicode="&#x2009;" horiz-adv-x="381" />
-<glyph unicode="&#x200a;" horiz-adv-x="105" />
-<glyph unicode="&#x2010;" horiz-adv-x="659" d="M84 473v152h491v-152h-491z" />
-<glyph unicode="&#x2011;" horiz-adv-x="659" d="M84 473v152h491v-152h-491z" />
-<glyph unicode="&#x2012;" horiz-adv-x="659" d="M84 473v152h491v-152h-491z" />
-<glyph unicode="&#x2013;" horiz-adv-x="1024" d="M82 473v152h860v-152h-860z" />
-<glyph unicode="&#x2014;" horiz-adv-x="2048" d="M82 473v152h1884v-152h-1884z" />
-<glyph unicode="&#x2018;" horiz-adv-x="348" d="M25 983q22 90 71 224t105 255h123q-66 -254 -103 -501h-184z" />
-<glyph unicode="&#x2019;" horiz-adv-x="348" d="M25 961q70 285 102 501h182l15 -22q-26 -100 -75 -232.5t-102 -246.5h-122z" />
-<glyph unicode="&#x201a;" horiz-adv-x="502" d="M63 -264q27 104 59.5 257t45.5 245h182l15 -23q-26 -100 -75 -232.5t-102 -246.5h-125z" />
-<glyph unicode="&#x201c;" horiz-adv-x="717" d="M25 983q22 90 71 224t105 255h123q-66 -254 -103 -501h-184zM391 983q56 215 178 479h123q-30 -115 -59.5 -259.5t-42.5 -241.5h-184z" />
-<glyph unicode="&#x201d;" horiz-adv-x="717" d="M25 961q70 285 102 501h182l15 -22q-26 -100 -75 -232.5t-102 -246.5h-122zM391 961q26 100 59 254t46 247h182l14 -22q-24 -91 -72 -224t-104 -255h-125z" />
-<glyph unicode="&#x201e;" horiz-adv-x="829" d="M25 -263q70 285 102 501h182l15 -22q-26 -100 -75 -232.5t-102 -246.5h-122zM391 -263q26 100 59 254t46 247h182l14 -22q-24 -91 -72 -224t-104 -255h-125z" />
-<glyph unicode="&#x2022;" horiz-adv-x="770" d="M164 748q0 121 56.5 184t164.5 63q105 0 163 -62t58 -185q0 -119 -57.5 -183.5t-163.5 -64.5q-107 0 -164 65.5t-57 182.5z" />
-<glyph unicode="&#x2026;" horiz-adv-x="1606" d="M152 106q0 67 30.5 101.5t87.5 34.5q58 0 90.5 -34.5t32.5 -101.5q0 -65 -33 -100t-90 -35q-51 0 -84.5 31.5t-33.5 103.5zM682 106q0 67 30.5 101.5t87.5 34.5q58 0 90.5 -34.5t32.5 -101.5q0 -65 -33 -100t-90 -35q-51 0 -84.5 31.5t-33.5 103.5zM1213 106 q0 67 30.5 101.5t87.5 34.5q58 0 90.5 -34.5t32.5 -101.5q0 -65 -33 -100t-90 -35q-51 0 -84.5 31.5t-33.5 103.5z" />
-<glyph unicode="&#x202f;" horiz-adv-x="381" />
-<glyph unicode="&#x2039;" horiz-adv-x="623" d="M82 524v27l342 407l119 -69l-289 -350l289 -351l-119 -71z" />
-<glyph unicode="&#x203a;" horiz-adv-x="623" d="M80 188l287 351l-287 350l117 69l344 -407v-27l-344 -407z" />
-<glyph unicode="&#x2044;" horiz-adv-x="266" d="M-391 0l903 1462h143l-903 -1462h-143z" />
-<glyph unicode="&#x205f;" horiz-adv-x="476" />
-<glyph unicode="&#x2074;" horiz-adv-x="711" d="M20 788v101l408 579h139v-563h125v-117h-125v-202h-145v202h-402zM160 905h262v195q0 134 6 209q-5 -12 -17 -31.5t-27 -41.5l-30 -46q-15 -22 -26 -39z" />
-<glyph unicode="&#x20ac;" horiz-adv-x="1208" d="M63 506v129h152l-2 42v44l2 80h-152v129h164q39 261 185 407t383 146q201 0 366 -97l-71 -139q-166 86 -295 86q-319 0 -398 -403h510v-129h-524l-2 -57v-64l2 -45h463v-129h-447q37 -180 138.5 -278.5t271.5 -98.5q156 0 309 66v-150q-146 -65 -317 -65 q-237 0 -381.5 134.5t-190.5 391.5h-166z" />
-<glyph unicode="&#x2122;" horiz-adv-x="1589" d="M37 1356v106h543v-106h-211v-615h-123v615h-209zM647 741v721h187l196 -559l203 559h180v-721h-127v420l6 137h-8l-211 -557h-104l-201 559h-8l6 -129v-430h-119z" />
-<glyph unicode="&#x2212;" d="M104 653v138h961v-138h-961z" />
-<glyph unicode="&#xe000;" horiz-adv-x="1095" d="M0 1095h1095v-1095h-1095v1095z" />
-<glyph unicode="&#xfb01;" horiz-adv-x="1212" d="M29 967v75l196 60v61q0 404 353 404q87 0 204 -35l-43 -133q-96 31 -164 31q-94 0 -139 -62.5t-45 -200.5v-71h279v-129h-279v-967h-166v967h-196zM856 1393q0 57 28 83.5t70 26.5q40 0 69 -27t29 -83t-29 -83.5t-69 -27.5q-42 0 -70 27.5t-28 83.5zM870 0v1096h166 v-1096h-166z" />
-<glyph unicode="&#xfb02;" horiz-adv-x="1212" d="M29 967v75l196 60v61q0 404 353 404q87 0 204 -35l-43 -133q-96 31 -164 31q-94 0 -139 -62.5t-45 -200.5v-71h279v-129h-279v-967h-166v967h-196zM870 0v1556h166v-1556h-166z" />
-<glyph unicode="&#xfb03;" horiz-adv-x="1909" d="M717 967v75l196 60v61q0 404 353 404q87 0 204 -35l-43 -133q-96 31 -164 31q-94 0 -139 -62.5t-45 -200.5v-71h279v-129h-279v-967h-166v967h-196zM29 967v75l196 60v61q0 404 353 404q87 0 204 -35l-43 -133q-96 31 -164 31q-94 0 -139 -62.5t-45 -200.5v-71h279v-129 h-279v-967h-166v967h-196zM1551 1393q0 57 28 83.5t70 26.5q40 0 69 -27t29 -83t-29 -83.5t-69 -27.5q-42 0 -70 27.5t-28 83.5zM1565 0v1096h166v-1096h-166z" />
-<glyph unicode="&#xfb04;" horiz-adv-x="1909" d="M717 967v75l196 60v61q0 404 353 404q87 0 204 -35l-43 -133q-96 31 -164 31q-94 0 -139 -62.5t-45 -200.5v-71h279v-129h-279v-967h-166v967h-196zM29 967v75l196 60v61q0 404 353 404q87 0 204 -35l-43 -133q-96 31 -164 31q-94 0 -139 -62.5t-45 -200.5v-71h279v-129 h-279v-967h-166v967h-196zM1565 0v1556h166v-1556h-166z" />
-</font>
-</defs></svg> \ No newline at end of file
diff --git a/admin/survey/Fonts/OpenSans/OpenSans-Regular-webfont.ttf b/admin/survey/Fonts/OpenSans/OpenSans-Regular-webfont.ttf
deleted file mode 100644
index a5b2378..0000000
--- a/admin/survey/Fonts/OpenSans/OpenSans-Regular-webfont.ttf
+++ /dev/null
Binary files differ
diff --git a/admin/survey/Fonts/OpenSans/OpenSans-Regular-webfont.woff b/admin/survey/Fonts/OpenSans/OpenSans-Regular-webfont.woff
deleted file mode 100644
index 11698af..0000000
--- a/admin/survey/Fonts/OpenSans/OpenSans-Regular-webfont.woff
+++ /dev/null
Binary files differ
diff --git a/admin/survey/Fonts/OpenSans/OpenSans-Semibold-webfont.eot b/admin/survey/Fonts/OpenSans/OpenSans-Semibold-webfont.eot
deleted file mode 100644
index acc32c4..0000000
--- a/admin/survey/Fonts/OpenSans/OpenSans-Semibold-webfont.eot
+++ /dev/null
Binary files differ
diff --git a/admin/survey/Fonts/OpenSans/OpenSans-Semibold-webfont.svg b/admin/survey/Fonts/OpenSans/OpenSans-Semibold-webfont.svg
deleted file mode 100644
index ef8b7a2..0000000
--- a/admin/survey/Fonts/OpenSans/OpenSans-Semibold-webfont.svg
+++ /dev/null
@@ -1,251 +0,0 @@
-<?xml version="1.0" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
-<svg xmlns="http://www.w3.org/2000/svg">
-<metadata>
-This is a custom SVG webfont generated by Font Squirrel.
-Copyright : Digitized data copyright 2011 Google Corporation
-Foundry : Ascender Corporation
-Foundry URL : httpwwwascendercorpcom
-</metadata>
-<defs>
-<font id="OpenSansSemibold" horiz-adv-x="1169" >
-<font-face units-per-em="2048" ascent="1638" descent="-410" />
-<missing-glyph horiz-adv-x="532" />
-<glyph unicode=" " horiz-adv-x="532" />
-<glyph unicode="&#x09;" horiz-adv-x="532" />
-<glyph unicode="&#xa0;" horiz-adv-x="532" />
-<glyph unicode="!" horiz-adv-x="565" d="M133 125q0 74 39 112.5t111 38.5q71 0 109 -40t38 -111t-38.5 -112.5t-108.5 -41.5q-71 0 -110.5 40t-39.5 114zM145 1462h277l-51 -1018h-174z" />
-<glyph unicode="&#x22;" horiz-adv-x="893" d="M133 1462h232l-41 -528h-150zM528 1462h232l-41 -528h-150z" />
-<glyph unicode="#" horiz-adv-x="1323" d="M47 418v168h283l57 284h-264v168h293l80 422h180l-80 -422h252l80 422h174l-80 -422h252v-168h-285l-55 -284h270v-168h-303l-80 -418h-178l80 418h-248l-80 -418h-174l76 418h-250zM506 586h250l57 284h-250z" />
-<glyph unicode="$" d="M111 168v211q86 -42 201 -70.5t206 -29.5v374l-84 31q-164 63 -239.5 150.5t-75.5 216.5q0 138 107.5 227t291.5 108v168h133v-165q203 -7 385 -82l-73 -183q-157 62 -312 74v-364l76 -29q190 -73 263 -154t73 -198q0 -145 -106 -239t-306 -116v-217h-133v211 q-248 4 -407 76zM354 1053q0 -57 35.5 -95t128.5 -75v311q-80 -12 -122 -49t-42 -92zM651 287q176 27 176 151q0 58 -40.5 95.5t-135.5 72.5v-319z" />
-<glyph unicode="%" horiz-adv-x="1765" d="M84 1026q0 457 319 457q157 0 241.5 -118.5t84.5 -338.5q0 -230 -82.5 -345.5t-243.5 -115.5q-152 0 -235.5 119.5t-83.5 341.5zM279 1024q0 -149 29 -222t95 -73q132 0 132 295t-132 295q-66 0 -95 -73t-29 -222zM379 0l811 1462h194l-811 -1462h-194zM1036 440 q0 457 320 457q154 0 239.5 -118t85.5 -339q0 -230 -83 -345t-242 -115q-152 0 -236 118.5t-84 341.5zM1231 440q0 -149 29.5 -223t95.5 -74q131 0 131 297q0 293 -131 293q-66 0 -95.5 -72t-29.5 -221z" />
-<glyph unicode="&#x26;" horiz-adv-x="1516" d="M96 387q0 131 64 228.5t231 193.5q-95 111 -129.5 187.5t-34.5 158.5q0 152 108.5 240t291.5 88q177 0 278 -85.5t101 -230.5q0 -114 -67.5 -207t-225.5 -186l346 -334q81 107 135 314h242q-70 -284 -224 -463l301 -291h-303l-149 145q-102 -82 -217.5 -123.5 t-255.5 -41.5q-230 0 -361 109t-131 298zM344 403q0 -98 69.5 -159.5t186.5 -61.5q183 0 313 107l-383 377q-106 -68 -146 -127.5t-40 -135.5zM451 1147q0 -63 33.5 -119t93.5 -119q113 64 158.5 119.5t45.5 124.5q0 65 -43.5 104t-115.5 39q-79 0 -125.5 -40.5 t-46.5 -108.5z" />
-<glyph unicode="'" horiz-adv-x="498" d="M133 1462h232l-41 -528h-150z" />
-<glyph unicode="(" horiz-adv-x="649" d="M82 561q0 265 77.5 496t223.5 405h205q-139 -188 -213 -421.5t-74 -477.5t74 -473t211 -414h-203q-147 170 -224 397t-77 488z" />
-<glyph unicode=")" horiz-adv-x="649" d="M61 1462h205q147 -175 224 -406.5t77 -494.5t-77.5 -490t-223.5 -395h-203q138 187 211.5 415t73.5 472q0 245 -74 477.5t-213 421.5z" />
-<glyph unicode="*" horiz-adv-x="1122" d="M74 1065l35 217l376 -108l-41 382h228l-41 -382l385 108l28 -217l-360 -29l236 -311l-199 -107l-166 338l-149 -338l-205 107l231 311z" />
-<glyph unicode="+" d="M96 633v178h398v408h180v-408h399v-178h-399v-406h-180v406h-398z" />
-<glyph unicode="," horiz-adv-x="547" d="M63 -264q69 270 103 502h231l15 -23q-48 -186 -176 -479h-173z" />
-<glyph unicode="-" horiz-adv-x="659" d="M72 449v200h514v-200h-514z" />
-<glyph unicode="." horiz-adv-x="563" d="M133 125q0 73 38 112t110 39q73 0 111 -40.5t38 -110.5q0 -71 -38.5 -112.5t-110.5 -41.5t-110 41t-38 113z" />
-<glyph unicode="/" horiz-adv-x="799" d="M16 0l545 1462h221l-544 -1462h-222z" />
-<glyph unicode="0" d="M88 731q0 387 122.5 570.5t373.5 183.5q245 0 371 -192t126 -562q0 -381 -122.5 -566t-374.5 -185q-244 0 -370 191t-126 560zM326 731q0 -299 61.5 -427t196.5 -128t197.5 130t62.5 425q0 294 -62.5 425.5t-197.5 131.5t-196.5 -129t-61.5 -428z" />
-<glyph unicode="1" d="M154 1124l430 338h196v-1462h-235v944q0 169 8 268q-23 -24 -56.5 -53t-224.5 -184z" />
-<glyph unicode="2" d="M90 0v178l377 379q167 171 221.5 242.5t79.5 134.5t25 135q0 99 -59.5 156t-164.5 57q-84 0 -162.5 -31t-181.5 -112l-127 155q122 103 237 146t245 43q204 0 327 -106.5t123 -286.5q0 -99 -35.5 -188t-109 -183.5t-244.5 -255.5l-254 -246v-10h694v-207h-991z" />
-<glyph unicode="3" d="M86 59v209q93 -46 197 -71t200 -25q170 0 254 63t84 195q0 117 -93 172t-292 55h-127v191h129q350 0 350 242q0 94 -61 145t-180 51q-83 0 -160 -23.5t-182 -91.5l-115 164q201 148 467 148q221 0 345 -95t124 -262q0 -139 -81 -231.5t-228 -124.5v-8q176 -22 264 -109.5 t88 -232.5q0 -211 -149 -325.5t-424 -114.5q-243 0 -410 79z" />
-<glyph unicode="4" d="M39 319v181l668 966h229v-952h197v-195h-197v-319h-229v319h-668zM258 514h449v367q0 196 10 321h-8q-28 -66 -88 -160z" />
-<glyph unicode="5" d="M117 59v213q81 -46 186 -71t195 -25q159 0 242 71t83 208q0 262 -334 262q-47 0 -116 -9.5t-121 -21.5l-105 62l56 714h760v-209h-553l-33 -362q35 6 85.5 14t123.5 8q221 0 350 -117t129 -319q0 -234 -146.5 -365.5t-416.5 -131.5q-245 0 -385 79z" />
-<glyph unicode="6" d="M94 623q0 858 699 858q110 0 186 -17v-196q-76 22 -176 22q-235 0 -353 -126t-128 -404h12q47 81 132 125.5t200 44.5q199 0 310 -122t111 -331q0 -230 -128.5 -363.5t-350.5 -133.5q-157 0 -273 75.5t-178.5 220t-62.5 347.5zM332 508q0 -141 76.5 -237.5t195.5 -96.5 q121 0 186.5 78t65.5 223q0 126 -61.5 198t-184.5 72q-76 0 -140 -32.5t-101 -89t-37 -115.5z" />
-<glyph unicode="7" d="M74 1253v207h1011v-164l-575 -1296h-254l578 1253h-760z" />
-<glyph unicode="8" d="M88 371q0 122 68.5 219.5t224.5 173.5q-134 80 -191 169t-57 200q0 159 125 253.5t326 94.5q208 0 329 -95.5t121 -255.5q0 -225 -270 -358q172 -86 244.5 -181t72.5 -212q0 -181 -133 -290t-360 -109q-238 0 -369 102t-131 289zM313 379q0 -104 73 -161.5t198 -57.5 q129 0 200.5 59.5t71.5 161.5q0 81 -66 148t-200 124l-29 13q-132 -58 -190 -127.5t-58 -159.5zM360 1116q0 -52 22 -93t64 -74.5t142 -80.5q120 53 169.5 111.5t49.5 136.5q0 85 -61.5 134.5t-163.5 49.5q-100 0 -161 -49.5t-61 -134.5z" />
-<glyph unicode="9" d="M86 981q0 229 128.5 364.5t350.5 135.5q156 0 272 -76t179 -220.5t63 -346.5q0 -432 -174 -645t-524 -213q-133 0 -191 16v197q89 -25 179 -25q238 0 355 128t128 402h-12q-59 -90 -142.5 -130t-195.5 -40q-194 0 -305 121t-111 332zM317 983q0 -125 60.5 -196.5 t183.5 -71.5q119 0 200 71t81 166q0 89 -34.5 166.5t-96.5 122.5t-142 45q-122 0 -187 -79.5t-65 -223.5z" />
-<glyph unicode=":" horiz-adv-x="563" d="M133 125q0 73 38 112t110 39q73 0 111 -40.5t38 -110.5q0 -71 -38.5 -112.5t-110.5 -41.5t-110 41t-38 113zM133 979q0 151 148 151q75 0 112 -40t37 -111t-38.5 -112.5t-110.5 -41.5t-110 41t-38 113z" />
-<glyph unicode=";" horiz-adv-x="569" d="M63 -264q69 270 103 502h231l15 -23q-48 -186 -176 -479h-173zM131 979q0 151 148 151q75 0 112 -40t37 -111t-38.5 -112.5t-110.5 -41.5t-110 41t-38 113z" />
-<glyph unicode="&#x3c;" d="M96 651v121l977 488v-195l-733 -344l733 -303v-197z" />
-<glyph unicode="=" d="M102 432v178h963v-178h-963zM102 831v179h963v-179h-963z" />
-<glyph unicode="&#x3e;" d="M96 221v197l733 303l-733 344v195l977 -488v-121z" />
-<glyph unicode="?" horiz-adv-x="928" d="M16 1370q203 113 435 113q196 0 311 -96t115 -265q0 -75 -22 -133.5t-66.5 -111.5t-153.5 -138q-93 -73 -124.5 -121t-31.5 -129v-45h-196v64q0 110 40 183t140 151q119 94 153.5 146t34.5 124q0 84 -56 129t-161 45q-95 0 -176 -27t-158 -65zM242 125q0 151 147 151 q72 0 110 -39.5t38 -111.5q0 -71 -38.5 -112.5t-109.5 -41.5t-109 40.5t-38 113.5z" />
-<glyph unicode="@" horiz-adv-x="1839" d="M111 586q0 261 112 464.5t310.5 311.5t449.5 108q217 0 386.5 -90t263 -256.5t93.5 -384.5q0 -143 -45 -261.5t-126.5 -184.5t-188.5 -66q-79 0 -137 42t-78 114h-12q-49 -78 -121 -117t-162 -39q-163 0 -256.5 105t-93.5 284q0 206 124 334.5t333 128.5 q76 0 168.5 -13.5t164.5 -37.5l-22 -465v-24q0 -160 104 -160q79 0 125.5 102t46.5 260q0 171 -70 300.5t-199 199.5t-296 70q-213 0 -370.5 -88t-240.5 -251.5t-83 -379.5q0 -290 155 -446t445 -156q221 0 461 90v-164q-210 -86 -457 -86q-370 0 -577 199.5t-207 556.5z M698 612q0 -233 183 -233q193 0 211 293l12 239q-63 17 -135 17q-128 0 -199.5 -85t-71.5 -231z" />
-<glyph unicode="A" horiz-adv-x="1354" d="M0 0l547 1468h260l547 -1468h-254l-146 406h-559l-143 -406h-252zM465 612h426l-137 398q-15 40 -41.5 126t-36.5 126q-27 -123 -79 -269z" />
-<glyph unicode="B" horiz-adv-x="1352" d="M193 0v1462h434q302 0 436.5 -88t134.5 -278q0 -128 -66 -213t-190 -107v-10q154 -29 226.5 -114.5t72.5 -231.5q0 -197 -137.5 -308.5t-382.5 -111.5h-528zM432 201h254q150 0 226.5 57.5t76.5 181.5q0 114 -78 169t-237 55h-242v-463zM432 858h230q150 0 219 47.5 t69 161.5q0 103 -74.5 149t-236.5 46h-207v-404z" />
-<glyph unicode="C" horiz-adv-x="1298" d="M121 731q0 228 83.5 399t241.5 262t371 91q224 0 414 -94l-86 -199q-74 35 -156.5 61.5t-173.5 26.5q-206 0 -324 -146t-118 -403q0 -269 113.5 -407t328.5 -138q93 0 180 18.5t181 47.5v-205q-172 -65 -390 -65q-321 0 -493 194.5t-172 556.5z" />
-<glyph unicode="D" horiz-adv-x="1503" d="M193 0v1462h452q349 0 543 -188t194 -529q0 -362 -201 -553.5t-579 -191.5h-409zM432 201h170q528 0 528 536q0 525 -491 525h-207v-1061z" />
-<glyph unicode="E" horiz-adv-x="1143" d="M193 0v1462h827v-202h-588v-398h551v-200h-551v-459h588v-203h-827z" />
-<glyph unicode="F" horiz-adv-x="1090" d="M193 0v1462h825v-202h-588v-457h551v-203h-551v-600h-237z" />
-<glyph unicode="G" horiz-adv-x="1487" d="M121 731q0 353 203 552.5t559 199.5q229 0 434 -88l-84 -199q-178 82 -356 82q-234 0 -370 -147t-136 -402q0 -268 122.5 -407.5t352.5 -139.5q116 0 248 29v377h-303v205h538v-734q-132 -43 -253.5 -61t-262.5 -18q-332 0 -512 196.5t-180 554.5z" />
-<glyph unicode="H" horiz-adv-x="1538" d="M193 0v1462h239v-598h674v598h240v-1462h-240v659h-674v-659h-239z" />
-<glyph unicode="I" horiz-adv-x="625" d="M193 0v1462h239v-1462h-239z" />
-<glyph unicode="J" horiz-adv-x="612" d="M-156 -182q84 -21 146 -21q196 0 196 248v1417h240v-1409q0 -224 -106.5 -342.5t-311.5 -118.5q-98 0 -164 25v201z" />
-<glyph unicode="K" horiz-adv-x="1309" d="M193 0v1462h239v-698q98 120 195 231l395 467h272q-383 -450 -549 -641l564 -821h-277l-459 662l-141 -115v-547h-239z" />
-<glyph unicode="L" horiz-adv-x="1110" d="M193 0v1462h239v-1257h619v-205h-858z" />
-<glyph unicode="M" horiz-adv-x="1890" d="M193 0v1462h337l406 -1163h6l418 1163h338v-1462h-230v723q0 109 5.5 284t9.5 212h-8l-439 -1219h-211l-424 1221h-8q17 -272 17 -510v-711h-217z" />
-<glyph unicode="N" horiz-adv-x="1604" d="M193 0v1462h290l717 -1159h6q-2 23 -8 167.5t-6 225.5v766h219v-1462h-293l-719 1165h-8l5 -65q14 -186 14 -340v-760h-217z" />
-<glyph unicode="O" horiz-adv-x="1612" d="M121 735q0 362 178.5 556t509.5 194q326 0 504 -197t178 -555q0 -357 -178.5 -555t-505.5 -198q-331 0 -508.5 196.5t-177.5 558.5zM375 733q0 -270 109 -409.5t323 -139.5q213 0 321.5 138t108.5 411q0 269 -107.5 408t-320.5 139q-215 0 -324.5 -139t-109.5 -408z" />
-<glyph unicode="P" horiz-adv-x="1260" d="M193 0v1462h421q274 0 410.5 -112t136.5 -330q0 -229 -150 -351t-427 -122h-152v-547h-239zM432 748h127q184 0 270 64t86 200q0 126 -77 188t-240 62h-166v-514z" />
-<glyph unicode="Q" horiz-adv-x="1612" d="M121 735q0 362 178.5 556t509.5 194q326 0 504 -197t178 -555q0 -266 -101.5 -448t-295.5 -256l350 -377h-322l-276 328h-39q-331 0 -508.5 196.5t-177.5 558.5zM375 733q0 -270 109 -409.5t323 -139.5q213 0 321.5 138t108.5 411q0 269 -107.5 408t-320.5 139 q-215 0 -324.5 -139t-109.5 -408z" />
-<glyph unicode="R" horiz-adv-x="1309" d="M193 0v1462h413q283 0 419 -106t136 -320q0 -273 -284 -389l413 -647h-272l-350 584h-236v-584h-239zM432 782h166q167 0 242 62t75 184q0 124 -81 178t-244 54h-158v-478z" />
-<glyph unicode="S" horiz-adv-x="1126" d="M100 57v226q100 -47 212.5 -74t209.5 -27q142 0 209.5 54t67.5 145q0 82 -62 139t-256 135q-200 81 -282 185t-82 250q0 183 130 288t349 105q210 0 418 -92l-76 -195q-195 82 -348 82q-116 0 -176 -50.5t-60 -133.5q0 -57 24 -97.5t79 -76.5t198 -95q161 -67 236 -125 t110 -131t35 -172q0 -195 -141 -306t-389 -111t-406 77z" />
-<glyph unicode="T" horiz-adv-x="1159" d="M29 1257v205h1099v-205h-430v-1257h-239v1257h-430z" />
-<glyph unicode="U" horiz-adv-x="1520" d="M180 520v942h240v-925q0 -181 84 -267t258 -86q338 0 338 355v923h239v-946q0 -162 -69.5 -283.5t-201 -187t-314.5 -65.5q-272 0 -423 144t-151 396z" />
-<glyph unicode="V" horiz-adv-x="1274" d="M0 1462h246l305 -909q24 -65 51 -167.5t35 -152.5q13 76 40 176t44 148l305 905h248l-512 -1462h-252z" />
-<glyph unicode="W" horiz-adv-x="1937" d="M12 1462h244l209 -852q49 -205 70 -362q11 85 33 190t40 170l238 854h237l244 -858q35 -119 74 -356q15 143 72 364l208 850h242l-381 -1462h-260l-248 872q-16 57 -40 164.5t-29 149.5q-10 -64 -32.5 -166t-37.5 -152l-242 -868h-260l-189 732z" />
-<glyph unicode="X" horiz-adv-x="1274" d="M4 0l485 758l-454 704h266l338 -553l338 553h258l-457 -708l492 -754h-275l-366 598l-369 -598h-256z" />
-<glyph unicode="Y" horiz-adv-x="1212" d="M0 1462h260l346 -667l346 667h260l-487 -895v-567h-240v559z" />
-<glyph unicode="Z" horiz-adv-x="1178" d="M66 0v166l737 1091h-717v205h1006v-168l-740 -1089h760v-205h-1046z" />
-<glyph unicode="[" horiz-adv-x="676" d="M154 -324v1786h471v-176h-256v-1433h256v-177h-471z" />
-<glyph unicode="\" horiz-adv-x="799" d="M16 1462h222l544 -1462h-221z" />
-<glyph unicode="]" horiz-adv-x="676" d="M51 -147h256v1433h-256v176h469v-1786h-469v177z" />
-<glyph unicode="^" horiz-adv-x="1100" d="M29 535l436 935h121l485 -935h-194l-349 694l-307 -694h-192z" />
-<glyph unicode="_" horiz-adv-x="879" d="M-4 -184h887v-135h-887v135z" />
-<glyph unicode="`" horiz-adv-x="1212" d="M362 1548v21h273q38 -70 103.5 -161t109.5 -142v-25h-158q-69 52 -174.5 150.5t-153.5 156.5z" />
-<glyph unicode="a" horiz-adv-x="1188" d="M90 317q0 171 127 258t387 95l191 6v59q0 106 -49.5 158.5t-153.5 52.5q-85 0 -163 -25t-150 -59l-76 168q90 47 197 71.5t202 24.5q211 0 318.5 -92t107.5 -289v-745h-168l-47 154h-8q-80 -101 -161 -137.5t-208 -36.5q-163 0 -254.5 88t-91.5 249zM334 315 q0 -74 44 -114.5t132 -40.5q128 0 205.5 71.5t77.5 200.5v96l-142 -6q-166 -6 -241.5 -55.5t-75.5 -151.5z" />
-<glyph unicode="b" horiz-adv-x="1276" d="M168 0v1556h235v-370q0 -41 -4 -122t-6 -103h10q112 165 330 165q207 0 322.5 -150t115.5 -421q0 -272 -117 -423.5t-325 -151.5q-210 0 -326 151h-16l-43 -131h-176zM403 555q0 -202 64 -292.5t209 -90.5q125 0 189.5 99t64.5 286q0 377 -258 377q-142 0 -204.5 -83.5 t-64.5 -279.5v-16z" />
-<glyph unicode="c" horiz-adv-x="1014" d="M102 547q0 279 136.5 429t394.5 150q175 0 315 -65l-71 -189q-149 58 -246 58q-287 0 -287 -381q0 -186 71.5 -279.5t209.5 -93.5q157 0 297 78v-205q-63 -37 -134.5 -53t-173.5 -16q-251 0 -381.5 146.5t-130.5 420.5z" />
-<glyph unicode="d" horiz-adv-x="1276" d="M102 551q0 272 117.5 423.5t325.5 151.5q218 0 332 -161h12q-17 119 -17 188v403h236v-1556h-184l-41 145h-11q-113 -165 -331 -165q-207 0 -323 150t-116 421zM344 547q0 -184 65 -280.5t195 -96.5q145 0 211 81.5t68 264.5v33q0 209 -68 297t-213 88 q-124 0 -191 -100.5t-67 -286.5z" />
-<glyph unicode="e" horiz-adv-x="1180" d="M102 545q0 271 135 426t371 155q219 0 346 -133t127 -366v-127h-737q5 -161 87 -247.5t231 -86.5q98 0 182.5 18.5t181.5 61.5v-191q-86 -41 -174 -58t-201 -17q-258 0 -403.5 150.5t-145.5 414.5zM348 670h502q-2 137 -66 207.5t-176 70.5t-179.5 -71t-80.5 -207z" />
-<glyph unicode="f" horiz-adv-x="743" d="M35 928v110l182 72v72q0 196 92 290.5t281 94.5q124 0 244 -41l-62 -178q-87 28 -166 28q-80 0 -116.5 -49.5t-36.5 -148.5v-72h270v-178h-270v-928h-236v928h-182z" />
-<glyph unicode="g" horiz-adv-x="1139" d="M23 -184q0 102 64.5 171.5t180.5 96.5q-47 20 -77.5 64.5t-30.5 93.5q0 62 35 105t104 85q-86 37 -139.5 120.5t-53.5 195.5q0 180 113.5 279t323.5 99q47 0 98.5 -6.5t77.5 -13.5h383v-129l-189 -35q26 -35 43 -86t17 -108q0 -171 -118 -269t-325 -98q-53 0 -96 8 q-76 -47 -76 -110q0 -38 35.5 -57t130.5 -19h193q183 0 278 -78t95 -225q0 -188 -155 -290t-448 -102q-226 0 -345 80t-119 228zM233 -172q0 -76 68.5 -117t192.5 -41q192 0 286 55t94 146q0 72 -51.5 102.5t-191.5 30.5h-178q-101 0 -160.5 -47.5t-59.5 -128.5zM334 748 q0 -104 53.5 -160t153.5 -56q204 0 204 218q0 108 -50.5 166.5t-153.5 58.5q-102 0 -154.5 -58t-52.5 -169z" />
-<glyph unicode="h" horiz-adv-x="1300" d="M168 0v1556h235v-395q0 -95 -12 -203h15q48 80 133.5 124t199.5 44q402 0 402 -405v-721h-236v680q0 128 -51.5 191t-163.5 63q-148 0 -217.5 -88.5t-69.5 -296.5v-549h-235z" />
-<glyph unicode="i" horiz-adv-x="571" d="M154 1399q0 63 34.5 97t98.5 34q62 0 96.5 -34t34.5 -97q0 -60 -34.5 -94.5t-96.5 -34.5q-64 0 -98.5 34.5t-34.5 94.5zM168 0v1106h235v-1106h-235z" />
-<glyph unicode="j" horiz-adv-x="571" d="M-121 -281q68 -18 139 -18q150 0 150 170v1235h235v-1251q0 -171 -89.5 -259t-258.5 -88q-106 0 -176 25v186zM154 1399q0 63 34.5 97t98.5 34q62 0 96.5 -34t34.5 -97q0 -60 -34.5 -94.5t-96.5 -34.5q-64 0 -98.5 34.5t-34.5 94.5z" />
-<glyph unicode="k" horiz-adv-x="1171" d="M168 0v1556h233v-759l-12 -213h6l133 166l334 356h271l-445 -475l473 -631h-276l-355 485l-129 -106v-379h-233z" />
-<glyph unicode="l" horiz-adv-x="571" d="M168 0v1556h235v-1556h-235z" />
-<glyph unicode="m" horiz-adv-x="1958" d="M168 0v1106h184l33 -145h12q46 79 133.5 122t192.5 43q255 0 338 -174h16q49 82 138 128t204 46q198 0 288.5 -100t90.5 -305v-721h-235v682q0 127 -48.5 189.5t-150.5 62.5q-137 0 -200.5 -85.5t-63.5 -262.5v-586h-236v682q0 127 -48 189.5t-150 62.5 q-136 0 -199.5 -88.5t-63.5 -294.5v-551h-235z" />
-<glyph unicode="n" horiz-adv-x="1300" d="M168 0v1106h184l33 -145h12q50 79 142 122t204 43q398 0 398 -405v-721h-236v680q0 128 -51.5 191t-163.5 63q-149 0 -218 -88t-69 -295v-551h-235z" />
-<glyph unicode="o" horiz-adv-x="1251" d="M102 555q0 269 138 420t389 151q240 0 380 -154.5t140 -416.5q0 -271 -139 -423t-387 -152q-155 0 -274 70t-183 201t-64 304zM344 555q0 -383 283 -383q280 0 280 383q0 379 -282 379q-148 0 -214.5 -98t-66.5 -281z" />
-<glyph unicode="p" horiz-adv-x="1276" d="M168 -492v1598h190q8 -31 33 -148h12q110 168 330 168q207 0 322.5 -150t115.5 -421t-117.5 -423t-324.5 -152q-210 0 -326 151h-14q14 -140 14 -170v-453h-235zM403 555q0 -202 64 -292.5t209 -90.5q122 0 188 100t66 285q0 186 -65.5 281.5t-192.5 95.5 q-140 0 -204.5 -82t-64.5 -262v-35z" />
-<glyph unicode="q" horiz-adv-x="1276" d="M102 551q0 270 118 422.5t325 152.5q104 0 186.5 -38.5t147.5 -126.5h8l26 145h195v-1598h-236v469q0 44 4 93t7 75h-13q-104 -165 -331 -165q-205 0 -321 150.5t-116 420.5zM344 547q0 -379 262 -379q148 0 212.5 85.5t64.5 258.5v37q0 205 -66.5 295t-214.5 90 q-126 0 -192 -100t-66 -287z" />
-<glyph unicode="r" horiz-adv-x="883" d="M168 0v1106h184l31 -195h12q55 99 143.5 157t190.5 58q71 0 117 -10l-23 -219q-50 12 -104 12q-141 0 -228.5 -92t-87.5 -239v-578h-235z" />
-<glyph unicode="s" horiz-adv-x="997" d="M98 827q0 142 114.5 220.5t311.5 78.5q195 0 369 -79l-76 -177q-179 74 -301 74q-186 0 -186 -106q0 -52 48.5 -88t211.5 -99q137 -53 199 -97t92 -101.5t30 -137.5q0 -162 -118 -248.5t-338 -86.5q-221 0 -355 67v203q195 -90 363 -90q217 0 217 131q0 42 -24 70t-79 58 t-153 68q-191 74 -258.5 148t-67.5 192z" />
-<glyph unicode="t" horiz-adv-x="805" d="M39 928v104l162 86l80 234h145v-246h315v-178h-315v-592q0 -85 42.5 -125.5t111.5 -40.5q86 0 172 27v-177q-39 -17 -100.5 -28.5t-127.5 -11.5q-334 0 -334 352v596h-151z" />
-<glyph unicode="u" horiz-adv-x="1300" d="M158 383v723h237v-682q0 -127 52 -190.5t163 -63.5q148 0 217.5 88.5t69.5 296.5v551h236v-1106h-185l-33 145h-12q-49 -77 -139.5 -121t-206.5 -44q-201 0 -300 100t-99 303z" />
-<glyph unicode="v" horiz-adv-x="1096" d="M0 1106h248l225 -643q58 -162 70 -262h8q9 72 70 262l225 643h250l-422 -1106h-254z" />
-<glyph unicode="w" horiz-adv-x="1673" d="M20 1106h240l141 -545q48 -202 68 -346h6q10 73 30.5 167.5t35.5 141.5l168 582h258l163 -582q15 -49 37.5 -150t26.5 -157h8q15 123 70 344l143 545h236l-312 -1106h-264l-143 516q-26 82 -94 381h-9q-58 -270 -92 -383l-147 -514h-260z" />
-<glyph unicode="x" horiz-adv-x="1128" d="M25 0l389 565l-371 541h268l252 -387l254 387h266l-372 -541l391 -565h-266l-273 414l-272 -414h-266z" />
-<glyph unicode="y" horiz-adv-x="1098" d="M0 1106h256l225 -627q51 -134 68 -252h8q9 55 33 133.5t254 745.5h254l-473 -1253q-129 -345 -430 -345q-78 0 -152 17v186q53 -12 121 -12q170 0 239 197l41 104z" />
-<glyph unicode="z" horiz-adv-x="979" d="M68 0v145l559 781h-525v180h789v-164l-547 -762h563v-180h-839z" />
-<glyph unicode="{" horiz-adv-x="791" d="M45 473v191q135 0 200.5 45.5t65.5 138.5v311q0 156 108.5 229.5t325.5 73.5v-182q-114 -5 -165.5 -46.5t-51.5 -123.5v-297q0 -199 -229 -238v-12q229 -36 229 -237v-299q0 -82 51 -124t166 -44v-183q-231 2 -332.5 78.5t-101.5 247.5v285q0 186 -266 186z" />
-<glyph unicode="|" horiz-adv-x="1128" d="M473 -481v2033h180v-2033h-180z" />
-<glyph unicode="}" horiz-adv-x="760" d="M45 -141q95 1 148 38.5t53 129.5v262q0 121 53 187t176 87v12q-229 39 -229 238v297q0 82 -45.5 123.5t-155.5 46.5v182q223 0 320.5 -76.5t97.5 -250.5v-287q0 -100 63.5 -142t188.5 -42v-191q-123 0 -187.5 -42.5t-64.5 -143.5v-307q0 -156 -99.5 -229t-318.5 -75v183z " />
-<glyph unicode="~" d="M96 571v191q99 108 250 108q66 0 125 -13t147 -50q131 -55 220 -55q52 0 114.5 31t120.5 89v-190q-105 -111 -250 -111q-65 0 -127.5 15.5t-146.5 50.5q-127 55 -219 55q-50 0 -111.5 -30t-122.5 -91z" />
-<glyph unicode="&#xa1;" horiz-adv-x="565" d="M133 965q0 69 38 111t110 42t110.5 -40.5t38.5 -112.5q0 -74 -37.5 -113t-111.5 -39q-72 0 -110 39.5t-38 112.5zM141 -371l52 1016h174l51 -1016h-277z" />
-<glyph unicode="&#xa2;" d="M166 741q0 254 100.5 397t306.5 175v170h158v-162q152 -5 283 -66l-70 -188q-146 59 -250 59q-146 0 -216 -95t-70 -288q0 -194 72 -283t210 -89q75 0 142.5 15t154.5 52v-200q-119 -59 -258 -64v-194h-156v200q-207 31 -307 171t-100 390z" />
-<glyph unicode="&#xa3;" d="M72 0v195q98 30 145 96t47 178v184h-188v172h188v256q0 188 113.5 294t312.5 106q194 0 375 -82l-76 -182q-162 71 -284 71q-205 0 -205 -219v-244h397v-172h-397v-182q0 -91 -33 -155t-113 -109h756v-207h-1038z" />
-<glyph unicode="&#xa4;" d="M117 1069l121 119l131 -129q100 63 215 63t213 -65l133 131l121 -117l-131 -133q63 -100 63 -215q0 -119 -63 -217l129 -129l-119 -119l-133 129q-99 -61 -213 -61q-126 0 -215 61l-131 -127l-119 119l131 129q-64 99 -64 215q0 109 64 213zM354 723q0 -98 68 -164.5 t162 -66.5q97 0 165 66.5t68 164.5q0 97 -68 165t-165 68q-93 0 -161.5 -68t-68.5 -165z" />
-<glyph unicode="&#xa5;" d="M18 1462h246l320 -665l321 665h244l-399 -760h227v-151h-281v-154h281v-153h-281v-244h-225v244h-283v153h283v154h-283v151h224z" />
-<glyph unicode="&#xa6;" horiz-adv-x="1128" d="M473 315h180v-796h-180v796zM473 758v794h180v-794h-180z" />
-<glyph unicode="&#xa7;" horiz-adv-x="1026" d="M115 57v179q77 -40 173 -65.5t177 -25.5q235 0 235 131q0 43 -21 70t-71 54t-147 65q-141 55 -206 101.5t-95.5 105t-30.5 135.5q0 80 38.5 145.5t111.5 108.5q-146 83 -146 235q0 129 109.5 202t294.5 73q91 0 174 -17t182 -59l-68 -162q-116 50 -176 63t-121 13 q-194 0 -194 -109q0 -54 55 -93.5t191 -90.5q175 -68 250 -146.5t75 -187.5q0 -177 -139 -266q139 -80 139 -223q0 -142 -118 -224.5t-326 -82.5q-212 0 -346 71zM313 827q0 -45 24 -80t78.5 -69t194.5 -90q109 65 109 168q0 75 -62 126.5t-221 104.5q-54 -16 -88.5 -61.5 t-34.5 -98.5z" />
-<glyph unicode="&#xa8;" horiz-adv-x="1212" d="M293 1399q0 62 33.5 89.5t81.5 27.5q53 0 84.5 -31t31.5 -86q0 -53 -32 -85t-84 -32q-48 0 -81.5 29t-33.5 88zM686 1399q0 62 33.5 89.5t81.5 27.5q53 0 85 -31t32 -86q0 -54 -33 -85.5t-84 -31.5q-48 0 -81.5 29t-33.5 88z" />
-<glyph unicode="&#xa9;" horiz-adv-x="1704" d="M100 731q0 200 100 375t275 276t377 101q200 0 375 -100t276 -275t101 -377q0 -197 -97 -370t-272 -277t-383 -104q-207 0 -382 103.5t-272.5 276.5t-97.5 371zM223 731q0 -170 84.5 -315.5t230.5 -229.5t314 -84q170 0 316 85.5t229.5 230t83.5 313.5q0 168 -84.5 314.5 t-231 230.5t-313.5 84q-168 0 -312.5 -83t-230.5 -229t-86 -317zM471 731q0 214 110 337.5t306 123.5q138 0 274 -70l-65 -143q-106 55 -203 55q-111 0 -171 -80.5t-60 -222.5q0 -147 54 -226t177 -79q55 0 118 15t109 36v-158q-115 -51 -235 -51q-197 0 -305.5 120.5 t-108.5 342.5z" />
-<glyph unicode="&#xaa;" horiz-adv-x="754" d="M57 981q0 104 84 159.5t252 61.5l107 4q0 72 -34.5 108t-103.5 36q-90 0 -210 -56l-54 115q144 70 285 70q138 0 207 -62.5t69 -187.5v-447h-112l-29 97q-46 -55 -105 -82t-130 -27q-113 0 -169.5 52.5t-56.5 158.5zM221 983q0 -88 96 -88q91 0 137 41t46 123v43l-99 -4 q-71 -2 -125.5 -34t-54.5 -81z" />
-<glyph unicode="&#xab;" horiz-adv-x="1139" d="M82 535v26l356 432l168 -94l-282 -350l282 -348l-168 -97zM532 535v26l357 432l168 -94l-283 -350l283 -348l-168 -97z" />
-<glyph unicode="&#xac;" d="M96 633v178h977v-555h-178v377h-799z" />
-<glyph unicode="&#xad;" horiz-adv-x="659" d="M72 449v200h514v-200h-514z" />
-<glyph unicode="&#xae;" horiz-adv-x="1704" d="M100 731q0 200 100 375t275 276t377 101q200 0 375 -100t276 -275t101 -377q0 -197 -97 -370t-272 -277t-383 -104q-207 0 -382 103.5t-272.5 276.5t-97.5 371zM223 731q0 -170 84.5 -315.5t230.5 -229.5t314 -84q170 0 316 85.5t229.5 230t83.5 313.5q0 168 -84.5 314.5 t-231 230.5t-313.5 84q-168 0 -312.5 -83t-230.5 -229t-86 -317zM559 279v903h262q174 0 255 -68t81 -205q0 -171 -153 -233l237 -397h-211l-192 346h-90v-346h-189zM748 770h69q74 0 112 35t38 100q0 72 -36.5 100.5t-115.5 28.5h-67v-264z" />
-<glyph unicode="&#xaf;" horiz-adv-x="1024" d="M-6 1556v164h1036v-164h-1036z" />
-<glyph unicode="&#xb0;" horiz-adv-x="877" d="M109 1153q0 135 95 232.5t234 97.5q138 0 233 -96t95 -234q0 -139 -96 -233.5t-232 -94.5q-88 0 -164.5 43.5t-120.5 119.5t-44 165zM262 1153q0 -70 51 -122t125 -52t125 51.5t51 122.5q0 76 -52 127t-124 51t-124 -52t-52 -126z" />
-<glyph unicode="&#xb1;" d="M96 0v178h977v-178h-977zM96 664v178h398v407h180v-407h399v-178h-399v-406h-180v406h-398z" />
-<glyph unicode="&#xb2;" horiz-adv-x="743" d="M51 586v135l230 225q117 112 149.5 165t32.5 112q0 52 -32 79t-83 27q-93 0 -201 -88l-94 121q139 119 309 119q136 0 211.5 -66t75.5 -180q0 -83 -46 -158.5t-183 -202.5l-139 -129h397v-159h-627z" />
-<glyph unicode="&#xb3;" horiz-adv-x="743" d="M45 631v157q145 -79 270 -79q179 0 179 135q0 125 -199 125h-115v133h105q184 0 184 129q0 52 -34.5 80t-90.5 28q-57 0 -105.5 -20t-105.5 -57l-84 114q61 46 134 75.5t171 29.5q134 0 212.5 -61.5t78.5 -168.5q0 -75 -40.5 -122.5t-119.5 -86.5q94 -21 141.5 -76 t47.5 -132q0 -127 -93 -196t-266 -69q-148 0 -270 62z" />
-<glyph unicode="&#xb4;" horiz-adv-x="1212" d="M362 1241v25q57 70 117.5 156t95.5 147h273v-21q-52 -61 -155.5 -157.5t-174.5 -149.5h-156z" />
-<glyph unicode="&#xb5;" horiz-adv-x="1309" d="M168 -492v1598h235v-684q0 -252 218 -252q146 0 215 88.5t69 296.5v551h236v-1106h-183l-34 147h-13q-48 -83 -119.5 -125t-175.5 -42q-140 0 -219 90h-4q3 -28 6.5 -117t3.5 -125v-320h-235z" />
-<glyph unicode="&#xb6;" horiz-adv-x="1341" d="M113 1042q0 260 109 387t341 127h580v-1816h-137v1663h-191v-1663h-137v819q-62 -18 -146 -18q-216 0 -317.5 125t-101.5 376z" />
-<glyph unicode="&#xb7;" horiz-adv-x="563" d="M133 723q0 73 38 112t110 39q73 0 111 -40.5t38 -110.5q0 -71 -38.5 -112.5t-110.5 -41.5t-110 41t-38 113z" />
-<glyph unicode="&#xb8;" horiz-adv-x="442" d="M0 -340q54 -14 123 -14q54 0 85.5 16.5t31.5 61.5q0 85 -179 110l84 166h152l-41 -88q80 -21 125 -68.5t45 -113.5q0 -222 -305 -222q-66 0 -121 15v137z" />
-<glyph unicode="&#xb9;" horiz-adv-x="743" d="M84 1253l281 209h167v-876h-186v512l3 103l5 91q-17 -18 -40.5 -40t-141.5 -111z" />
-<glyph unicode="&#xba;" horiz-adv-x="780" d="M61 1124q0 169 88.5 262t241.5 93q152 0 240 -94.5t88 -260.5q0 -164 -87.5 -259t-244.5 -95q-150 0 -238 95.5t-88 258.5zM223 1124q0 -111 39 -166t127 -55t127 55t39 166q0 113 -39 167.5t-127 54.5t-127 -54.5t-39 -167.5z" />
-<glyph unicode="&#xbb;" horiz-adv-x="1139" d="M80 201l282 348l-282 350l168 94l358 -432v-26l-358 -431zM530 201l283 348l-283 350l168 94l359 -432v-26l-359 -431z" />
-<glyph unicode="&#xbc;" horiz-adv-x="1700" d="M285 0l858 1462h190l-856 -1462h-192zM60 1253l281 209h167v-876h-186v512l3 103l5 91q-17 -18 -40.5 -40t-141.5 -111zM876 177v127l396 579h188v-563h125v-143h-125v-176h-192v176h-392zM1038 320h230v178q0 97 6 197q-52 -104 -88 -158z" />
-<glyph unicode="&#xbd;" horiz-adv-x="1700" d="M250 0l858 1462h190l-856 -1462h-192zM46 1253l281 209h167v-876h-186v512l3 103l5 91q-17 -18 -40.5 -40t-141.5 -111zM981 1v135l230 225q117 112 149.5 165t32.5 112q0 52 -32 79t-83 27q-93 0 -201 -88l-94 121q139 119 309 119q136 0 211.5 -66t75.5 -180 q0 -83 -46 -158.5t-183 -202.5l-139 -129h397v-159h-627z" />
-<glyph unicode="&#xbe;" horiz-adv-x="1700" d="M367 0l858 1462h190l-856 -1462h-192zM931 177v127l396 579h188v-563h125v-143h-125v-176h-192v176h-392zM1093 320h230v178q0 97 6 197q-52 -104 -88 -158zM55 631v157q145 -79 270 -79q179 0 179 135q0 125 -199 125h-115v133h105q184 0 184 129q0 52 -34.5 80 t-90.5 28q-57 0 -105.5 -20t-105.5 -57l-84 114q61 46 134 75.5t171 29.5q134 0 212.5 -61.5t78.5 -168.5q0 -75 -40.5 -122.5t-119.5 -86.5q94 -21 141.5 -76t47.5 -132q0 -127 -93 -196t-266 -69q-148 0 -270 62z" />
-<glyph unicode="&#xbf;" horiz-adv-x="928" d="M55 -33q0 73 21 130t64 109t157 142q94 76 125 124.5t31 127.5v45h198v-63q0 -106 -41 -181t-143 -155q-124 -98 -155 -147t-31 -124q0 -78 54 -125t161 -47q90 0 174 27.5t166 65.5l82 -179q-220 -110 -424 -110q-207 0 -323 95.5t-116 264.5zM395 965q0 69 38 111 t110 42t110.5 -40.5t38.5 -112.5q0 -74 -37.5 -113t-111.5 -39q-72 0 -110 39.5t-38 112.5z" />
-<glyph unicode="&#xc0;" horiz-adv-x="1354" d="M0 0l547 1468h260l547 -1468h-254l-146 406h-559l-143 -406h-252zM465 612h426l-137 398q-15 40 -41.5 126t-36.5 126q-27 -123 -79 -269zM334 1886v21h273q38 -70 103.5 -161t109.5 -142v-25h-158q-69 52 -174.5 150.5t-153.5 156.5z" />
-<glyph unicode="&#xc1;" horiz-adv-x="1354" d="M0 0l547 1468h260l547 -1468h-254l-146 406h-559l-143 -406h-252zM465 612h426l-137 398q-15 40 -41.5 126t-36.5 126q-27 -123 -79 -269zM532 1579v25q57 70 117.5 156t95.5 147h273v-21q-52 -61 -155.5 -157.5t-174.5 -149.5h-156z" />
-<glyph unicode="&#xc2;" horiz-adv-x="1354" d="M0 0l547 1468h260l547 -1468h-254l-146 406h-559l-143 -406h-252zM465 612h426l-137 398q-15 40 -41.5 126t-36.5 126q-27 -123 -79 -269zM286 1579v25q191 198 254 303h260q63 -110 256 -303v-25h-159q-123 73 -228 180q-103 -103 -225 -180h-158z" />
-<glyph unicode="&#xc3;" horiz-adv-x="1354" d="M0 0l547 1468h260l547 -1468h-254l-146 406h-559l-143 -406h-252zM465 612h426l-137 398q-15 40 -41.5 126t-36.5 126q-27 -123 -79 -269zM281 1577q12 139 77.5 212t167.5 73q43 0 84 -17.5t80 -39t75.5 -39t70.5 -17.5q79 0 106 115h125q-12 -134 -77 -209.5 t-169 -75.5q-42 0 -82.5 17.5t-79.5 39t-76 39t-71 17.5q-81 0 -109 -115h-122z" />
-<glyph unicode="&#xc4;" horiz-adv-x="1354" d="M0 0l547 1468h260l547 -1468h-254l-146 406h-559l-143 -406h-252zM465 612h426l-137 398q-15 40 -41.5 126t-36.5 126q-27 -123 -79 -269zM363 1737q0 62 33.5 89.5t81.5 27.5q53 0 84.5 -31t31.5 -86q0 -53 -32 -85t-84 -32q-48 0 -81.5 29t-33.5 88zM756 1737 q0 62 33.5 89.5t81.5 27.5q53 0 85 -31t32 -86q0 -54 -33 -85.5t-84 -31.5q-48 0 -81.5 29t-33.5 88z" />
-<glyph unicode="&#xc5;" horiz-adv-x="1354" d="M0 0l547 1468h260l547 -1468h-254l-146 406h-559l-143 -406h-252zM465 612h426l-137 398q-15 40 -41.5 126t-36.5 126q-27 -123 -79 -269zM438 1575q0 101 63.5 163.5t172.5 62.5q104 0 171.5 -62t67.5 -162q0 -102 -65.5 -165.5t-173.5 -63.5t-172 62.5t-64 164.5z M567 1575q0 -106 107 -106q46 0 76 27.5t30 78.5q0 50 -30 78.5t-76 28.5q-47 0 -77 -28.5t-30 -78.5z" />
-<glyph unicode="&#xc6;" horiz-adv-x="1868" d="M-2 0l678 1462h1071v-202h-571v-398h532v-200h-532v-459h571v-203h-811v406h-504l-188 -406h-246zM522 612h414v641h-123z" />
-<glyph unicode="&#xc7;" horiz-adv-x="1298" d="M121 731q0 228 83.5 399t241.5 262t371 91q224 0 414 -94l-86 -199q-74 35 -156.5 61.5t-173.5 26.5q-206 0 -324 -146t-118 -403q0 -269 113.5 -407t328.5 -138q93 0 180 18.5t181 47.5v-205q-172 -65 -390 -65q-321 0 -493 194.5t-172 556.5zM526 -340q54 -14 123 -14 q54 0 85.5 16.5t31.5 61.5q0 85 -179 110l84 166h152l-41 -88q80 -21 125 -68.5t45 -113.5q0 -222 -305 -222q-66 0 -121 15v137z" />
-<glyph unicode="&#xc8;" horiz-adv-x="1143" d="M193 0v1462h827v-202h-588v-398h551v-200h-551v-459h588v-203h-827zM289 1886v21h273q38 -70 103.5 -161t109.5 -142v-25h-158q-69 52 -174.5 150.5t-153.5 156.5z" />
-<glyph unicode="&#xc9;" horiz-adv-x="1143" d="M193 0v1462h827v-202h-588v-398h551v-200h-551v-459h588v-203h-827zM440 1579v25q57 70 117.5 156t95.5 147h273v-21q-52 -61 -155.5 -157.5t-174.5 -149.5h-156z" />
-<glyph unicode="&#xca;" horiz-adv-x="1143" d="M193 0v1462h827v-202h-588v-398h551v-200h-551v-459h588v-203h-827zM220 1579v25q191 198 254 303h260q63 -110 256 -303v-25h-159q-123 73 -228 180q-103 -103 -225 -180h-158z" />
-<glyph unicode="&#xcb;" horiz-adv-x="1143" d="M193 0v1462h827v-202h-588v-398h551v-200h-551v-459h588v-203h-827zM297 1737q0 62 33.5 89.5t81.5 27.5q53 0 84.5 -31t31.5 -86q0 -53 -32 -85t-84 -32q-48 0 -81.5 29t-33.5 88zM690 1737q0 62 33.5 89.5t81.5 27.5q53 0 85 -31t32 -86q0 -54 -33 -85.5t-84 -31.5 q-48 0 -81.5 29t-33.5 88z" />
-<glyph unicode="&#xcc;" horiz-adv-x="625" d="M193 0v1462h239v-1462h-239zM-6 1886v21h273q38 -70 103.5 -161t109.5 -142v-25h-158q-69 52 -174.5 150.5t-153.5 156.5z" />
-<glyph unicode="&#xcd;" horiz-adv-x="625" d="M193 0v1462h239v-1462h-239zM179 1579v25q57 70 117.5 156t95.5 147h273v-21q-52 -61 -155.5 -157.5t-174.5 -149.5h-156z" />
-<glyph unicode="&#xce;" horiz-adv-x="625" d="M193 0v1462h239v-1462h-239zM-75 1579v25q191 198 254 303h260q63 -110 256 -303v-25h-159q-123 73 -228 180q-103 -103 -225 -180h-158z" />
-<glyph unicode="&#xcf;" horiz-adv-x="625" d="M193 0v1462h239v-1462h-239zM1 1737q0 62 33.5 89.5t81.5 27.5q53 0 84.5 -31t31.5 -86q0 -53 -32 -85t-84 -32q-48 0 -81.5 29t-33.5 88zM394 1737q0 62 33.5 89.5t81.5 27.5q53 0 85 -31t32 -86q0 -54 -33 -85.5t-84 -31.5q-48 0 -81.5 29t-33.5 88z" />
-<glyph unicode="&#xd0;" horiz-adv-x="1497" d="M47 623v200h146v639h446q347 0 541 -188.5t194 -528.5q0 -360 -201 -552.5t-579 -192.5h-401v623h-146zM432 201h160q530 0 530 536q0 260 -124.5 392.5t-368.5 132.5h-197v-439h307v-200h-307v-422z" />
-<glyph unicode="&#xd1;" horiz-adv-x="1604" d="M193 0v1462h290l717 -1159h6q-2 23 -8 167.5t-6 225.5v766h219v-1462h-293l-719 1165h-8l5 -65q14 -186 14 -340v-760h-217zM414 1577q12 139 77.5 212t167.5 73q43 0 84 -17.5t80 -39t75.5 -39t70.5 -17.5q79 0 106 115h125q-12 -134 -77 -209.5t-169 -75.5 q-42 0 -82.5 17.5t-79.5 39t-76 39t-71 17.5q-81 0 -109 -115h-122z" />
-<glyph unicode="&#xd2;" horiz-adv-x="1612" d="M121 735q0 362 178.5 556t509.5 194q326 0 504 -197t178 -555q0 -357 -178.5 -555t-505.5 -198q-331 0 -508.5 196.5t-177.5 558.5zM375 733q0 -270 109 -409.5t323 -139.5q213 0 321.5 138t108.5 411q0 269 -107.5 408t-320.5 139q-215 0 -324.5 -139t-109.5 -408z M481 1886v21h273q38 -70 103.5 -161t109.5 -142v-25h-158q-69 52 -174.5 150.5t-153.5 156.5z" />
-<glyph unicode="&#xd3;" horiz-adv-x="1612" d="M121 735q0 362 178.5 556t509.5 194q326 0 504 -197t178 -555q0 -357 -178.5 -555t-505.5 -198q-331 0 -508.5 196.5t-177.5 558.5zM375 733q0 -270 109 -409.5t323 -139.5q213 0 321.5 138t108.5 411q0 269 -107.5 408t-320.5 139q-215 0 -324.5 -139t-109.5 -408z M657 1579v25q57 70 117.5 156t95.5 147h273v-21q-52 -61 -155.5 -157.5t-174.5 -149.5h-156z" />
-<glyph unicode="&#xd4;" horiz-adv-x="1612" d="M121 735q0 362 178.5 556t509.5 194q326 0 504 -197t178 -555q0 -357 -178.5 -555t-505.5 -198q-331 0 -508.5 196.5t-177.5 558.5zM375 733q0 -270 109 -409.5t323 -139.5q213 0 321.5 138t108.5 411q0 269 -107.5 408t-320.5 139q-215 0 -324.5 -139t-109.5 -408z M413 1579v25q191 198 254 303h260q63 -110 256 -303v-25h-159q-123 73 -228 180q-103 -103 -225 -180h-158z" />
-<glyph unicode="&#xd5;" horiz-adv-x="1612" d="M121 735q0 362 178.5 556t509.5 194q326 0 504 -197t178 -555q0 -357 -178.5 -555t-505.5 -198q-331 0 -508.5 196.5t-177.5 558.5zM375 733q0 -270 109 -409.5t323 -139.5q213 0 321.5 138t108.5 411q0 269 -107.5 408t-320.5 139q-215 0 -324.5 -139t-109.5 -408z M410 1577q12 139 77.5 212t167.5 73q43 0 84 -17.5t80 -39t75.5 -39t70.5 -17.5q79 0 106 115h125q-12 -134 -77 -209.5t-169 -75.5q-42 0 -82.5 17.5t-79.5 39t-76 39t-71 17.5q-81 0 -109 -115h-122z" />
-<glyph unicode="&#xd6;" horiz-adv-x="1612" d="M121 735q0 362 178.5 556t509.5 194q326 0 504 -197t178 -555q0 -357 -178.5 -555t-505.5 -198q-331 0 -508.5 196.5t-177.5 558.5zM375 733q0 -270 109 -409.5t323 -139.5q213 0 321.5 138t108.5 411q0 269 -107.5 408t-320.5 139q-215 0 -324.5 -139t-109.5 -408z M496 1737q0 62 33.5 89.5t81.5 27.5q53 0 84.5 -31t31.5 -86q0 -53 -32 -85t-84 -32q-48 0 -81.5 29t-33.5 88zM889 1737q0 62 33.5 89.5t81.5 27.5q53 0 85 -31t32 -86q0 -54 -33 -85.5t-84 -31.5q-48 0 -81.5 29t-33.5 88z" />
-<glyph unicode="&#xd7;" d="M131 1049l125 127l328 -326l329 326l125 -123l-329 -330l325 -328l-123 -125l-329 326l-324 -326l-125 125l324 328z" />
-<glyph unicode="&#xd8;" horiz-adv-x="1612" d="M121 735q0 362 178.5 556t509.5 194q199 0 354 -82l90 129l142 -92l-99 -140q195 -199 195 -567q0 -357 -178.5 -555t-505.5 -198q-213 0 -361 81l-94 -137l-141 94l98 144q-188 196 -188 573zM375 733q0 -231 78 -362l587 850q-92 59 -231 59q-215 0 -324.5 -139 t-109.5 -408zM571 244q97 -60 236 -60q213 0 321.5 138t108.5 411q0 225 -80 361z" />
-<glyph unicode="&#xd9;" horiz-adv-x="1520" d="M180 520v942h240v-925q0 -181 84 -267t258 -86q338 0 338 355v923h239v-946q0 -162 -69.5 -283.5t-201 -187t-314.5 -65.5q-272 0 -423 144t-151 396zM417 1886v21h273q38 -70 103.5 -161t109.5 -142v-25h-158q-69 52 -174.5 150.5t-153.5 156.5z" />
-<glyph unicode="&#xda;" horiz-adv-x="1520" d="M180 520v942h240v-925q0 -181 84 -267t258 -86q338 0 338 355v923h239v-946q0 -162 -69.5 -283.5t-201 -187t-314.5 -65.5q-272 0 -423 144t-151 396zM600 1579v25q57 70 117.5 156t95.5 147h273v-21q-52 -61 -155.5 -157.5t-174.5 -149.5h-156z" />
-<glyph unicode="&#xdb;" horiz-adv-x="1520" d="M180 520v942h240v-925q0 -181 84 -267t258 -86q338 0 338 355v923h239v-946q0 -162 -69.5 -283.5t-201 -187t-314.5 -65.5q-272 0 -423 144t-151 396zM366 1579v25q191 198 254 303h260q63 -110 256 -303v-25h-159q-123 73 -228 180q-103 -103 -225 -180h-158z" />
-<glyph unicode="&#xdc;" horiz-adv-x="1520" d="M180 520v942h240v-925q0 -181 84 -267t258 -86q338 0 338 355v923h239v-946q0 -162 -69.5 -283.5t-201 -187t-314.5 -65.5q-272 0 -423 144t-151 396zM445 1737q0 62 33.5 89.5t81.5 27.5q53 0 84.5 -31t31.5 -86q0 -53 -32 -85t-84 -32q-48 0 -81.5 29t-33.5 88z M838 1737q0 62 33.5 89.5t81.5 27.5q53 0 85 -31t32 -86q0 -54 -33 -85.5t-84 -31.5q-48 0 -81.5 29t-33.5 88z" />
-<glyph unicode="&#xdd;" horiz-adv-x="1212" d="M0 1462h260l346 -667l346 667h260l-487 -895v-567h-240v559zM450 1579v25q57 70 117.5 156t95.5 147h273v-21q-52 -61 -155.5 -157.5t-174.5 -149.5h-156z" />
-<glyph unicode="&#xde;" horiz-adv-x="1268" d="M193 0v1462h239v-243h197q268 0 404 -112t136 -331q0 -227 -146 -349t-423 -122h-168v-305h-239zM432 504h133q187 0 273 63t86 203q0 127 -78 188.5t-250 61.5h-164v-516z" />
-<glyph unicode="&#xdf;" horiz-adv-x="1364" d="M168 0v1169q0 193 128.5 295.5t367.5 102.5q225 0 355 -84t130 -230q0 -74 -38.5 -140.5t-104.5 -117.5q-90 -69 -117 -98t-27 -57q0 -30 22.5 -55.5t79.5 -63.5l95 -64q92 -62 135.5 -109.5t65.5 -103.5t22 -127q0 -165 -107 -251t-311 -86q-190 0 -299 65v199 q58 -37 139 -61.5t148 -24.5q192 0 192 151q0 61 -34.5 105t-155.5 118q-119 73 -171 135t-52 146q0 63 34 115.5t105 105.5q75 55 107 97.5t32 93.5q0 72 -67 112.5t-178 40.5q-127 0 -194 -54t-67 -159v-1165h-235z" />
-<glyph unicode="&#xe0;" horiz-adv-x="1188" d="M90 317q0 171 127 258t387 95l191 6v59q0 106 -49.5 158.5t-153.5 52.5q-85 0 -163 -25t-150 -59l-76 168q90 47 197 71.5t202 24.5q211 0 318.5 -92t107.5 -289v-745h-168l-47 154h-8q-80 -101 -161 -137.5t-208 -36.5q-163 0 -254.5 88t-91.5 249zM334 315 q0 -74 44 -114.5t132 -40.5q128 0 205.5 71.5t77.5 200.5v96l-142 -6q-166 -6 -241.5 -55.5t-75.5 -151.5zM259 1548v21h273q38 -70 103.5 -161t109.5 -142v-25h-158q-69 52 -174.5 150.5t-153.5 156.5z" />
-<glyph unicode="&#xe1;" horiz-adv-x="1188" d="M90 317q0 171 127 258t387 95l191 6v59q0 106 -49.5 158.5t-153.5 52.5q-85 0 -163 -25t-150 -59l-76 168q90 47 197 71.5t202 24.5q211 0 318.5 -92t107.5 -289v-745h-168l-47 154h-8q-80 -101 -161 -137.5t-208 -36.5q-163 0 -254.5 88t-91.5 249zM334 315 q0 -74 44 -114.5t132 -40.5q128 0 205.5 71.5t77.5 200.5v96l-142 -6q-166 -6 -241.5 -55.5t-75.5 -151.5zM438 1241v25q57 70 117.5 156t95.5 147h273v-21q-52 -61 -155.5 -157.5t-174.5 -149.5h-156z" />
-<glyph unicode="&#xe2;" horiz-adv-x="1188" d="M90 317q0 171 127 258t387 95l191 6v59q0 106 -49.5 158.5t-153.5 52.5q-85 0 -163 -25t-150 -59l-76 168q90 47 197 71.5t202 24.5q211 0 318.5 -92t107.5 -289v-745h-168l-47 154h-8q-80 -101 -161 -137.5t-208 -36.5q-163 0 -254.5 88t-91.5 249zM334 315 q0 -74 44 -114.5t132 -40.5q128 0 205.5 71.5t77.5 200.5v96l-142 -6q-166 -6 -241.5 -55.5t-75.5 -151.5zM203 1241v25q191 198 254 303h260q63 -110 256 -303v-25h-159q-123 73 -228 180q-103 -103 -225 -180h-158z" />
-<glyph unicode="&#xe3;" horiz-adv-x="1188" d="M90 317q0 171 127 258t387 95l191 6v59q0 106 -49.5 158.5t-153.5 52.5q-85 0 -163 -25t-150 -59l-76 168q90 47 197 71.5t202 24.5q211 0 318.5 -92t107.5 -289v-745h-168l-47 154h-8q-80 -101 -161 -137.5t-208 -36.5q-163 0 -254.5 88t-91.5 249zM334 315 q0 -74 44 -114.5t132 -40.5q128 0 205.5 71.5t77.5 200.5v96l-142 -6q-166 -6 -241.5 -55.5t-75.5 -151.5zM208 1239q12 139 77.5 212t167.5 73q43 0 84 -17.5t80 -39t75.5 -39t70.5 -17.5q79 0 106 115h125q-12 -134 -77 -209.5t-169 -75.5q-42 0 -82.5 17.5t-79.5 39 t-76 39t-71 17.5q-81 0 -109 -115h-122z" />
-<glyph unicode="&#xe4;" horiz-adv-x="1188" d="M90 317q0 171 127 258t387 95l191 6v59q0 106 -49.5 158.5t-153.5 52.5q-85 0 -163 -25t-150 -59l-76 168q90 47 197 71.5t202 24.5q211 0 318.5 -92t107.5 -289v-745h-168l-47 154h-8q-80 -101 -161 -137.5t-208 -36.5q-163 0 -254.5 88t-91.5 249zM334 315 q0 -74 44 -114.5t132 -40.5q128 0 205.5 71.5t77.5 200.5v96l-142 -6q-166 -6 -241.5 -55.5t-75.5 -151.5zM282 1399q0 62 33.5 89.5t81.5 27.5q53 0 84.5 -31t31.5 -86q0 -53 -32 -85t-84 -32q-48 0 -81.5 29t-33.5 88zM675 1399q0 62 33.5 89.5t81.5 27.5q53 0 85 -31 t32 -86q0 -54 -33 -85.5t-84 -31.5q-48 0 -81.5 29t-33.5 88z" />
-<glyph unicode="&#xe5;" horiz-adv-x="1188" d="M90 317q0 171 127 258t387 95l191 6v59q0 106 -49.5 158.5t-153.5 52.5q-85 0 -163 -25t-150 -59l-76 168q90 47 197 71.5t202 24.5q211 0 318.5 -92t107.5 -289v-745h-168l-47 154h-8q-80 -101 -161 -137.5t-208 -36.5q-163 0 -254.5 88t-91.5 249zM334 315 q0 -74 44 -114.5t132 -40.5q128 0 205.5 71.5t77.5 200.5v96l-142 -6q-166 -6 -241.5 -55.5t-75.5 -151.5zM366 1466q0 101 63.5 163.5t172.5 62.5q104 0 171.5 -62t67.5 -162q0 -102 -65.5 -165.5t-173.5 -63.5t-172 62.5t-64 164.5zM495 1466q0 -106 107 -106 q46 0 76 27.5t30 78.5q0 50 -30 78.5t-76 28.5q-47 0 -77 -28.5t-30 -78.5z" />
-<glyph unicode="&#xe6;" horiz-adv-x="1817" d="M90 317q0 172 121.5 258.5t370.5 94.5l188 6v76q0 194 -201 194q-141 0 -307 -82l-74 166q88 47 192.5 71.5t203.5 24.5q241 0 340 -155q120 155 346 155q206 0 328 -134.5t122 -362.5v-127h-712q10 -336 301 -336q184 0 356 80v-191q-86 -41 -171.5 -58t-195.5 -17 q-140 0 -248.5 54.5t-175.5 164.5q-94 -125 -190.5 -172t-241.5 -47q-165 0 -258.5 90t-93.5 247zM334 315q0 -155 166 -155q124 0 196 72.5t72 199.5v96l-135 -6q-155 -6 -227 -54.5t-72 -152.5zM1014 670h473q0 130 -58.5 204t-162.5 74q-112 0 -177.5 -69.5t-74.5 -208.5 z" />
-<glyph unicode="&#xe7;" horiz-adv-x="1014" d="M102 547q0 279 136.5 429t394.5 150q175 0 315 -65l-71 -189q-149 58 -246 58q-287 0 -287 -381q0 -186 71.5 -279.5t209.5 -93.5q157 0 297 78v-205q-63 -37 -134.5 -53t-173.5 -16q-251 0 -381.5 146.5t-130.5 420.5zM356 -340q54 -14 123 -14q54 0 85.5 16.5 t31.5 61.5q0 85 -179 110l84 166h152l-41 -88q80 -21 125 -68.5t45 -113.5q0 -222 -305 -222q-66 0 -121 15v137z" />
-<glyph unicode="&#xe8;" horiz-adv-x="1180" d="M102 545q0 271 135 426t371 155q219 0 346 -133t127 -366v-127h-737q5 -161 87 -247.5t231 -86.5q98 0 182.5 18.5t181.5 61.5v-191q-86 -41 -174 -58t-201 -17q-258 0 -403.5 150.5t-145.5 414.5zM348 670h502q-2 137 -66 207.5t-176 70.5t-179.5 -71t-80.5 -207z M281 1548v21h273q38 -70 103.5 -161t109.5 -142v-25h-158q-69 52 -174.5 150.5t-153.5 156.5z" />
-<glyph unicode="&#xe9;" horiz-adv-x="1180" d="M102 545q0 271 135 426t371 155q219 0 346 -133t127 -366v-127h-737q5 -161 87 -247.5t231 -86.5q98 0 182.5 18.5t181.5 61.5v-191q-86 -41 -174 -58t-201 -17q-258 0 -403.5 150.5t-145.5 414.5zM348 670h502q-2 137 -66 207.5t-176 70.5t-179.5 -71t-80.5 -207z M458 1241v25q57 70 117.5 156t95.5 147h273v-21q-52 -61 -155.5 -157.5t-174.5 -149.5h-156z" />
-<glyph unicode="&#xea;" horiz-adv-x="1180" d="M102 545q0 271 135 426t371 155q219 0 346 -133t127 -366v-127h-737q5 -161 87 -247.5t231 -86.5q98 0 182.5 18.5t181.5 61.5v-191q-86 -41 -174 -58t-201 -17q-258 0 -403.5 150.5t-145.5 414.5zM348 670h502q-2 137 -66 207.5t-176 70.5t-179.5 -71t-80.5 -207z M227 1241v25q191 198 254 303h260q63 -110 256 -303v-25h-159q-123 73 -228 180q-103 -103 -225 -180h-158z" />
-<glyph unicode="&#xeb;" horiz-adv-x="1180" d="M102 545q0 271 135 426t371 155q219 0 346 -133t127 -366v-127h-737q5 -161 87 -247.5t231 -86.5q98 0 182.5 18.5t181.5 61.5v-191q-86 -41 -174 -58t-201 -17q-258 0 -403.5 150.5t-145.5 414.5zM348 670h502q-2 137 -66 207.5t-176 70.5t-179.5 -71t-80.5 -207z M307 1399q0 62 33.5 89.5t81.5 27.5q53 0 84.5 -31t31.5 -86q0 -53 -32 -85t-84 -32q-48 0 -81.5 29t-33.5 88zM700 1399q0 62 33.5 89.5t81.5 27.5q53 0 85 -31t32 -86q0 -54 -33 -85.5t-84 -31.5q-48 0 -81.5 29t-33.5 88z" />
-<glyph unicode="&#xec;" horiz-adv-x="571" d="M168 0v1106h235v-1106h-235zM-69 1548v21h273q38 -70 103.5 -161t109.5 -142v-25h-158q-69 52 -174.5 150.5t-153.5 156.5z" />
-<glyph unicode="&#xed;" horiz-adv-x="571" d="M168 0v1106h235v-1106h-235zM156 1241v25q57 70 117.5 156t95.5 147h273v-21q-52 -61 -155.5 -157.5t-174.5 -149.5h-156z" />
-<glyph unicode="&#xee;" horiz-adv-x="571" d="M168 0v1106h235v-1106h-235zM-100 1241v25q191 198 254 303h260q63 -110 256 -303v-25h-159q-123 73 -228 180q-103 -103 -225 -180h-158z" />
-<glyph unicode="&#xef;" horiz-adv-x="571" d="M168 0v1106h235v-1106h-235zM-25 1399q0 62 33.5 89.5t81.5 27.5q53 0 84.5 -31t31.5 -86q0 -53 -32 -85t-84 -32q-48 0 -81.5 29t-33.5 88zM368 1399q0 62 33.5 89.5t81.5 27.5q53 0 85 -31t32 -86q0 -54 -33 -85.5t-84 -31.5q-48 0 -81.5 29t-33.5 88z" />
-<glyph unicode="&#xf0;" horiz-adv-x="1243" d="M102 481q0 231 131 365.5t351 134.5q214 0 301 -111l8 4q-62 189 -227 345l-250 -150l-88 133l204 119q-86 59 -167 102l84 146q140 -63 258 -144l231 138l88 -129l-188 -113q152 -140 231.5 -330t79.5 -424q0 -279 -137.5 -433t-388.5 -154q-235 0 -378 136t-143 365z M342 477q0 -153 74 -234t211 -81q148 0 215 91t67 269q0 127 -75.5 202t-206.5 75q-151 0 -218 -82t-67 -240z" />
-<glyph unicode="&#xf1;" horiz-adv-x="1300" d="M168 0v1106h184l33 -145h12q50 79 142 122t204 43q398 0 398 -405v-721h-236v680q0 128 -51.5 191t-163.5 63q-149 0 -218 -88t-69 -295v-551h-235zM269 1239q12 139 77.5 212t167.5 73q43 0 84 -17.5t80 -39t75.5 -39t70.5 -17.5q79 0 106 115h125q-12 -134 -77 -209.5 t-169 -75.5q-42 0 -82.5 17.5t-79.5 39t-76 39t-71 17.5q-81 0 -109 -115h-122z" />
-<glyph unicode="&#xf2;" horiz-adv-x="1251" d="M102 555q0 269 138 420t389 151q240 0 380 -154.5t140 -416.5q0 -271 -139 -423t-387 -152q-155 0 -274 70t-183 201t-64 304zM344 555q0 -383 283 -383q280 0 280 383q0 379 -282 379q-148 0 -214.5 -98t-66.5 -281zM293 1548v21h273q38 -70 103.5 -161t109.5 -142v-25 h-158q-69 52 -174.5 150.5t-153.5 156.5z" />
-<glyph unicode="&#xf3;" horiz-adv-x="1251" d="M102 555q0 269 138 420t389 151q240 0 380 -154.5t140 -416.5q0 -271 -139 -423t-387 -152q-155 0 -274 70t-183 201t-64 304zM344 555q0 -383 283 -383q280 0 280 383q0 379 -282 379q-148 0 -214.5 -98t-66.5 -281zM473 1241v25q57 70 117.5 156t95.5 147h273v-21 q-52 -61 -155.5 -157.5t-174.5 -149.5h-156z" />
-<glyph unicode="&#xf4;" horiz-adv-x="1251" d="M102 555q0 269 138 420t389 151q240 0 380 -154.5t140 -416.5q0 -271 -139 -423t-387 -152q-155 0 -274 70t-183 201t-64 304zM344 555q0 -383 283 -383q280 0 280 383q0 379 -282 379q-148 0 -214.5 -98t-66.5 -281zM239 1241v25q191 198 254 303h260q63 -110 256 -303 v-25h-159q-123 73 -228 180q-103 -103 -225 -180h-158z" />
-<glyph unicode="&#xf5;" horiz-adv-x="1251" d="M102 555q0 269 138 420t389 151q240 0 380 -154.5t140 -416.5q0 -271 -139 -423t-387 -152q-155 0 -274 70t-183 201t-64 304zM344 555q0 -383 283 -383q280 0 280 383q0 379 -282 379q-148 0 -214.5 -98t-66.5 -281zM235 1239q12 139 77.5 212t167.5 73q43 0 84 -17.5 t80 -39t75.5 -39t70.5 -17.5q79 0 106 115h125q-12 -134 -77 -209.5t-169 -75.5q-42 0 -82.5 17.5t-79.5 39t-76 39t-71 17.5q-81 0 -109 -115h-122z" />
-<glyph unicode="&#xf6;" horiz-adv-x="1251" d="M102 555q0 269 138 420t389 151q240 0 380 -154.5t140 -416.5q0 -271 -139 -423t-387 -152q-155 0 -274 70t-183 201t-64 304zM344 555q0 -383 283 -383q280 0 280 383q0 379 -282 379q-148 0 -214.5 -98t-66.5 -281zM311 1399q0 62 33.5 89.5t81.5 27.5q53 0 84.5 -31 t31.5 -86q0 -53 -32 -85t-84 -32q-48 0 -81.5 29t-33.5 88zM704 1399q0 62 33.5 89.5t81.5 27.5q53 0 85 -31t32 -86q0 -54 -33 -85.5t-84 -31.5q-48 0 -81.5 29t-33.5 88z" />
-<glyph unicode="&#xf7;" d="M96 633v178h977v-178h-977zM457 373q0 64 31.5 99.5t95.5 35.5q61 0 93 -36t32 -99t-34 -100t-91 -37q-60 0 -93.5 35.5t-33.5 101.5zM457 1071q0 64 31.5 99.5t95.5 35.5q61 0 93 -36t32 -99t-34 -100t-91 -37q-60 0 -93.5 35.5t-33.5 101.5z" />
-<glyph unicode="&#xf8;" horiz-adv-x="1251" d="M102 555q0 269 138 420t389 151q144 0 258 -63l69 100l136 -92l-78 -108q135 -152 135 -408q0 -271 -139 -423t-387 -152q-144 0 -250 57l-76 -109l-135 90l82 117q-142 155 -142 420zM344 555q0 -135 37 -219l391 559q-60 39 -147 39q-148 0 -214.5 -98t-66.5 -281z M487 205q54 -33 140 -33q280 0 280 383q0 121 -33 203z" />
-<glyph unicode="&#xf9;" horiz-adv-x="1300" d="M158 383v723h237v-682q0 -127 52 -190.5t163 -63.5q148 0 217.5 88.5t69.5 296.5v551h236v-1106h-185l-33 145h-12q-49 -77 -139.5 -121t-206.5 -44q-201 0 -300 100t-99 303zM289 1548v21h273q38 -70 103.5 -161t109.5 -142v-25h-158q-69 52 -174.5 150.5t-153.5 156.5z " />
-<glyph unicode="&#xfa;" horiz-adv-x="1300" d="M158 383v723h237v-682q0 -127 52 -190.5t163 -63.5q148 0 217.5 88.5t69.5 296.5v551h236v-1106h-185l-33 145h-12q-49 -77 -139.5 -121t-206.5 -44q-201 0 -300 100t-99 303zM501 1241v25q57 70 117.5 156t95.5 147h273v-21q-52 -61 -155.5 -157.5t-174.5 -149.5h-156z " />
-<glyph unicode="&#xfb;" horiz-adv-x="1300" d="M158 383v723h237v-682q0 -127 52 -190.5t163 -63.5q148 0 217.5 88.5t69.5 296.5v551h236v-1106h-185l-33 145h-12q-49 -77 -139.5 -121t-206.5 -44q-201 0 -300 100t-99 303zM260 1241v25q191 198 254 303h260q63 -110 256 -303v-25h-159q-123 73 -228 180 q-103 -103 -225 -180h-158z" />
-<glyph unicode="&#xfc;" horiz-adv-x="1300" d="M158 383v723h237v-682q0 -127 52 -190.5t163 -63.5q148 0 217.5 88.5t69.5 296.5v551h236v-1106h-185l-33 145h-12q-49 -77 -139.5 -121t-206.5 -44q-201 0 -300 100t-99 303zM332 1399q0 62 33.5 89.5t81.5 27.5q53 0 84.5 -31t31.5 -86q0 -53 -32 -85t-84 -32 q-48 0 -81.5 29t-33.5 88zM725 1399q0 62 33.5 89.5t81.5 27.5q53 0 85 -31t32 -86q0 -54 -33 -85.5t-84 -31.5q-48 0 -81.5 29t-33.5 88z" />
-<glyph unicode="&#xfd;" horiz-adv-x="1098" d="M0 1106h256l225 -627q51 -134 68 -252h8q9 55 33 133.5t254 745.5h254l-473 -1253q-129 -345 -430 -345q-78 0 -152 17v186q53 -12 121 -12q170 0 239 197l41 104zM401 1241v25q57 70 117.5 156t95.5 147h273v-21q-52 -61 -155.5 -157.5t-174.5 -149.5h-156z" />
-<glyph unicode="&#xfe;" horiz-adv-x="1276" d="M168 -492v2048h235v-430l-7 -138l-3 -27h10q61 86 142.5 125.5t187.5 39.5q206 0 322 -151t116 -420q0 -272 -116.5 -423.5t-321.5 -151.5q-219 0 -330 149h-14l8 -72l6 -92v-457h-235zM403 555q0 -202 64 -292.5t209 -90.5q254 0 254 385q0 190 -61.5 283.5t-194.5 93.5 q-142 0 -206.5 -82t-64.5 -260v-37z" />
-<glyph unicode="&#xff;" horiz-adv-x="1098" d="M0 1106h256l225 -627q51 -134 68 -252h8q9 55 33 133.5t254 745.5h254l-473 -1253q-129 -345 -430 -345q-78 0 -152 17v186q53 -12 121 -12q170 0 239 197l41 104zM239 1399q0 62 33.5 89.5t81.5 27.5q53 0 84.5 -31t31.5 -86q0 -53 -32 -85t-84 -32q-48 0 -81.5 29 t-33.5 88zM632 1399q0 62 33.5 89.5t81.5 27.5q53 0 85 -31t32 -86q0 -54 -33 -85.5t-84 -31.5q-48 0 -81.5 29t-33.5 88z" />
-<glyph unicode="&#x131;" horiz-adv-x="571" d="M168 0v1106h235v-1106h-235z" />
-<glyph unicode="&#x152;" horiz-adv-x="1942" d="M121 735q0 360 172 555t491 195q115 0 209 -23h826v-202h-576v-398h539v-200h-539v-459h576v-203h-820q-102 -20 -211 -20q-320 0 -493.5 196.5t-173.5 558.5zM371 733q0 -269 106 -409t314 -140q129 0 213 35v1024q-80 37 -211 37q-208 0 -315 -139t-107 -408z" />
-<glyph unicode="&#x153;" horiz-adv-x="1966" d="M102 555q0 272 137 421.5t382 149.5q121 0 223 -49t168 -145q131 194 379 194q221 0 349 -133.5t128 -365.5v-127h-738q11 -164 85.5 -249t228.5 -85q102 0 187 18.5t181 61.5v-191q-84 -40 -171.5 -57.5t-202.5 -17.5q-281 0 -420 194q-132 -194 -400 -194 q-236 0 -376 155t-140 420zM344 555q0 -189 65.5 -286t211.5 -97q141 0 206.5 95.5t65.5 283.5q0 192 -66 287.5t-211 95.5q-143 0 -207.5 -95t-64.5 -284zM1137 670h497q0 134 -63 206t-178 72q-110 0 -177.5 -69.5t-78.5 -208.5z" />
-<glyph unicode="&#x178;" horiz-adv-x="1212" d="M0 1462h260l346 -667l346 667h260l-487 -895v-567h-240v559zM293 1737q0 62 33.5 89.5t81.5 27.5q53 0 84.5 -31t31.5 -86q0 -53 -32 -85t-84 -32q-48 0 -81.5 29t-33.5 88zM686 1737q0 62 33.5 89.5t81.5 27.5q53 0 85 -31t32 -86q0 -54 -33 -85.5t-84 -31.5 q-48 0 -81.5 29t-33.5 88z" />
-<glyph unicode="&#x2c6;" horiz-adv-x="1227" d="M227 1241v25q191 198 254 303h260q63 -110 256 -303v-25h-159q-123 73 -228 180q-103 -103 -225 -180h-158z" />
-<glyph unicode="&#x2da;" horiz-adv-x="1182" d="M352 1466q0 101 63.5 163.5t172.5 62.5q104 0 171.5 -62t67.5 -162q0 -102 -65.5 -165.5t-173.5 -63.5t-172 62.5t-64 164.5zM481 1466q0 -106 107 -106q46 0 76 27.5t30 78.5q0 50 -30 78.5t-76 28.5q-47 0 -77 -28.5t-30 -78.5z" />
-<glyph unicode="&#x2dc;" horiz-adv-x="1227" d="M236 1239q12 139 77.5 212t167.5 73q43 0 84 -17.5t80 -39t75.5 -39t70.5 -17.5q79 0 106 115h125q-12 -134 -77 -209.5t-169 -75.5q-42 0 -82.5 17.5t-79.5 39t-76 39t-71 17.5q-81 0 -109 -115h-122z" />
-<glyph unicode="&#x2000;" horiz-adv-x="953" />
-<glyph unicode="&#x2001;" horiz-adv-x="1907" />
-<glyph unicode="&#x2002;" horiz-adv-x="953" />
-<glyph unicode="&#x2003;" horiz-adv-x="1907" />
-<glyph unicode="&#x2004;" horiz-adv-x="635" />
-<glyph unicode="&#x2005;" horiz-adv-x="476" />
-<glyph unicode="&#x2006;" horiz-adv-x="317" />
-<glyph unicode="&#x2007;" horiz-adv-x="317" />
-<glyph unicode="&#x2008;" horiz-adv-x="238" />
-<glyph unicode="&#x2009;" horiz-adv-x="381" />
-<glyph unicode="&#x200a;" horiz-adv-x="105" />
-<glyph unicode="&#x2010;" horiz-adv-x="659" d="M72 449v200h514v-200h-514z" />
-<glyph unicode="&#x2011;" horiz-adv-x="659" d="M72 449v200h514v-200h-514z" />
-<glyph unicode="&#x2012;" horiz-adv-x="659" d="M72 449v200h514v-200h-514z" />
-<glyph unicode="&#x2013;" horiz-adv-x="1024" d="M82 455v190h860v-190h-860z" />
-<glyph unicode="&#x2014;" horiz-adv-x="2048" d="M82 455v190h1884v-190h-1884z" />
-<glyph unicode="&#x2018;" horiz-adv-x="395" d="M25 983q20 83 71 224t105 255h170q-64 -256 -101 -501h-233z" />
-<glyph unicode="&#x2019;" horiz-adv-x="395" d="M25 961q69 289 100 501h231l15 -22q-53 -209 -176 -479h-170z" />
-<glyph unicode="&#x201a;" horiz-adv-x="549" d="M63 -264q69 270 103 502h231l15 -23q-48 -186 -176 -479h-173z" />
-<glyph unicode="&#x201c;" horiz-adv-x="813" d="M25 983q20 83 71 224t105 255h170q-64 -256 -101 -501h-233zM440 983q53 203 178 479h170q-69 -296 -100 -501h-233z" />
-<glyph unicode="&#x201d;" horiz-adv-x="813" d="M25 961q69 289 100 501h231l15 -22q-53 -209 -176 -479h-170zM440 961q69 271 103 501h231l14 -22q-53 -209 -176 -479h-172z" />
-<glyph unicode="&#x201e;" horiz-adv-x="944" d="M43 -264q66 260 102 502h232l14 -23q-55 -214 -176 -479h-172zM461 -264q66 260 102 502h232l14 -23q-48 -186 -176 -479h-172z" />
-<glyph unicode="&#x2022;" horiz-adv-x="770" d="M131 748q0 138 66 210t188 72q121 0 187.5 -72.5t66.5 -209.5q0 -135 -67 -209t-187 -74t-187 72.5t-67 210.5z" />
-<glyph unicode="&#x2026;" horiz-adv-x="1677" d="M133 125q0 73 38 112t110 39q73 0 111 -40.5t38 -110.5q0 -71 -38.5 -112.5t-110.5 -41.5t-110 41t-38 113zM690 125q0 73 38 112t110 39q73 0 111 -40.5t38 -110.5q0 -71 -38.5 -112.5t-110.5 -41.5t-110 41t-38 113zM1247 125q0 73 38 112t110 39q73 0 111 -40.5 t38 -110.5q0 -71 -38.5 -112.5t-110.5 -41.5t-110 41t-38 113z" />
-<glyph unicode="&#x202f;" horiz-adv-x="381" />
-<glyph unicode="&#x2039;" horiz-adv-x="688" d="M82 535v26l356 432l168 -94l-282 -350l282 -348l-168 -97z" />
-<glyph unicode="&#x203a;" horiz-adv-x="688" d="M80 201l282 348l-282 350l168 94l358 -432v-26l-358 -431z" />
-<glyph unicode="&#x2044;" horiz-adv-x="266" d="M-393 0l858 1462h190l-856 -1462h-192z" />
-<glyph unicode="&#x205f;" horiz-adv-x="476" />
-<glyph unicode="&#x2074;" horiz-adv-x="743" d="M16 762v127l396 579h188v-563h125v-143h-125v-176h-192v176h-392zM178 905h230v178q0 97 6 197q-52 -104 -88 -158z" />
-<glyph unicode="&#x20ac;" horiz-adv-x="1188" d="M63 494v153h136l-2 37v37l2 65h-136v154h150q38 251 191 394t395 143q200 0 358 -88l-84 -187q-154 76 -274 76q-141 0 -230.5 -84t-119.5 -254h456v-154h-471l-2 -45v-55l2 -39h408v-153h-391q64 -312 364 -312q143 0 293 62v-203q-131 -61 -305 -61q-241 0 -391.5 132 t-196.5 382h-152z" />
-<glyph unicode="&#x2122;" horiz-adv-x="1561" d="M27 1333v129h553v-129h-205v-592h-146v592h-202zM635 741v721h217l178 -534l187 534h210v-721h-147v414l4 129h-6l-193 -543h-122l-185 543h-6l4 -119v-424h-141z" />
-<glyph unicode="&#xe000;" horiz-adv-x="1105" d="M0 1105h1105v-1105h-1105v1105z" />
-<glyph unicode="&#xfb01;" horiz-adv-x="1315" d="M35 928v110l182 72v72q0 196 92 290.5t281 94.5q124 0 244 -41l-62 -178q-87 28 -166 28q-80 0 -116.5 -49.5t-36.5 -148.5v-72h270v-178h-270v-928h-236v928h-182zM897 1399q0 63 34.5 97t98.5 34q62 0 96.5 -34t34.5 -97q0 -60 -34.5 -94.5t-96.5 -34.5 q-64 0 -98.5 34.5t-34.5 94.5zM911 0v1106h235v-1106h-235z" />
-<glyph unicode="&#xfb02;" horiz-adv-x="1315" d="M35 928v110l182 72v72q0 196 92 290.5t281 94.5q124 0 244 -41l-62 -178q-87 28 -166 28q-80 0 -116.5 -49.5t-36.5 -148.5v-72h270v-178h-270v-928h-236v928h-182zM911 0v1556h235v-1556h-235z" />
-<glyph unicode="&#xfb03;" horiz-adv-x="2058" d="M35 928v110l182 72v72q0 196 92 290.5t281 94.5q124 0 244 -41l-62 -178q-87 28 -166 28q-80 0 -116.5 -49.5t-36.5 -148.5v-72h270v-178h-270v-928h-236v928h-182zM778 928v110l182 72v72q0 196 92 290.5t281 94.5q124 0 244 -41l-62 -178q-87 28 -166 28 q-80 0 -116.5 -49.5t-36.5 -148.5v-72h270v-178h-270v-928h-236v928h-182zM1641 1399q0 63 34.5 97t98.5 34q62 0 96.5 -34t34.5 -97q0 -60 -34.5 -94.5t-96.5 -34.5q-64 0 -98.5 34.5t-34.5 94.5zM1655 0v1106h235v-1106h-235z" />
-<glyph unicode="&#xfb04;" horiz-adv-x="2058" d="M35 928v110l182 72v72q0 196 92 290.5t281 94.5q124 0 244 -41l-62 -178q-87 28 -166 28q-80 0 -116.5 -49.5t-36.5 -148.5v-72h270v-178h-270v-928h-236v928h-182zM778 928v110l182 72v72q0 196 92 290.5t281 94.5q124 0 244 -41l-62 -178q-87 28 -166 28 q-80 0 -116.5 -49.5t-36.5 -148.5v-72h270v-178h-270v-928h-236v928h-182zM1655 0v1556h235v-1556h-235z" />
-</font>
-</defs></svg> \ No newline at end of file
diff --git a/admin/survey/Fonts/OpenSans/OpenSans-Semibold-webfont.ttf b/admin/survey/Fonts/OpenSans/OpenSans-Semibold-webfont.ttf
deleted file mode 100644
index a5b9691..0000000
--- a/admin/survey/Fonts/OpenSans/OpenSans-Semibold-webfont.ttf
+++ /dev/null
Binary files differ
diff --git a/admin/survey/Fonts/OpenSans/OpenSans-Semibold-webfont.woff b/admin/survey/Fonts/OpenSans/OpenSans-Semibold-webfont.woff
deleted file mode 100644
index 17fb5dc..0000000
--- a/admin/survey/Fonts/OpenSans/OpenSans-Semibold-webfont.woff
+++ /dev/null
Binary files differ
diff --git a/admin/survey/Fonts/OpenSans/OpenSans-SemiboldItalic-webfont.eot b/admin/survey/Fonts/OpenSans/OpenSans-SemiboldItalic-webfont.eot
deleted file mode 100644
index 0048da0..0000000
--- a/admin/survey/Fonts/OpenSans/OpenSans-SemiboldItalic-webfont.eot
+++ /dev/null
Binary files differ
diff --git a/admin/survey/Fonts/OpenSans/OpenSans-SemiboldItalic-webfont.svg b/admin/survey/Fonts/OpenSans/OpenSans-SemiboldItalic-webfont.svg
deleted file mode 100644
index 46cfd5c..0000000
--- a/admin/survey/Fonts/OpenSans/OpenSans-SemiboldItalic-webfont.svg
+++ /dev/null
@@ -1,251 +0,0 @@
-<?xml version="1.0" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
-<svg xmlns="http://www.w3.org/2000/svg">
-<metadata>
-This is a custom SVG webfont generated by Font Squirrel.
-Copyright : Digitized data copyright 20102011 Google Corporation
-Foundry : Ascender Corporation
-Foundry URL : httpwwwascendercorpcom
-</metadata>
-<defs>
-<font id="OpenSansSemiboldItalic" horiz-adv-x="1128" >
-<font-face units-per-em="2048" ascent="1638" descent="-410" />
-<missing-glyph horiz-adv-x="532" />
-<glyph unicode=" " horiz-adv-x="532" />
-<glyph unicode="&#x09;" horiz-adv-x="532" />
-<glyph unicode="&#xa0;" horiz-adv-x="532" />
-<glyph unicode="!" horiz-adv-x="557" d="M33 96q0 80 45.5 130t130.5 50q57 0 91 -32.5t34 -93.5q0 -79 -47 -128t-123 -49q-62 0 -96.5 33.5t-34.5 89.5zM160 444l168 1018h272l-264 -1018h-176z" />
-<glyph unicode="&#x22;" horiz-adv-x="858" d="M213 934l72 528h231l-151 -528h-152zM588 934l74 528h231l-152 -528h-153z" />
-<glyph unicode="#" horiz-adv-x="1323" d="M51 418l17 168h280l84 286h-264l16 168h295l121 422h178l-121 -422h252l121 422h174l-121 -422h252l-14 -168h-285l-84 -286h271l-15 -168h-303l-121 -418h-180l123 418h-248l-121 -418h-174l117 418h-250zM526 586h250l82 286h-250z" />
-<glyph unicode="$" d="M61 172v209q78 -42 179.5 -70t193.5 -30l84 387q-156 56 -223.5 138.5t-67.5 199.5q0 167 118.5 267.5t324.5 117.5l37 163h135l-35 -165q161 -16 289 -82l-86 -185q-134 66 -244 74l-80 -371q128 -51 186.5 -95t86.5 -101t28 -135q0 -172 -119.5 -277t-337.5 -125 l-45 -211h-135l45 211q-197 13 -334 80zM451 1016q0 -98 110 -139l68 319q-89 -11 -133.5 -57.5t-44.5 -122.5zM571 285q86 11 136.5 60t50.5 126q0 101 -115 145z" />
-<glyph unicode="%" horiz-adv-x="1688" d="M141 872q0 166 53 313.5t142.5 222.5t208.5 75q127 0 193.5 -76t66.5 -221q0 -160 -55.5 -313.5t-146.5 -230.5t-206 -77q-124 0 -190 79t-66 228zM231 0l1086 1462h194l-1085 -1462h-195zM334 866q0 -135 80 -135q52 0 95.5 58t73 175.5t29.5 219.5q0 131 -82 131 q-55 0 -99 -61t-70.5 -173t-26.5 -215zM940 279q0 171 53 320t142.5 223.5t207.5 74.5q127 0 195 -75t68 -218q0 -161 -55.5 -315.5t-146.5 -231.5t-204 -77q-127 0 -193.5 76.5t-66.5 222.5zM1133 281q0 -134 81 -134q52 0 96 58.5t73.5 174.5t29.5 220q0 131 -84 131 q-52 0 -95.5 -57.5t-72 -171t-28.5 -221.5z" />
-<glyph unicode="&#x26;" horiz-adv-x="1411" d="M66 350q0 147 85.5 254t286.5 205q-88 151 -88 283q0 180 112.5 286.5t297.5 106.5q160 0 252 -81t92 -218q0 -129 -89.5 -230t-293.5 -192l235 -326q109 112 181 295h233q-113 -270 -297 -454l205 -279h-277l-94 131q-106 -80 -211 -115.5t-229 -35.5 q-190 0 -295.5 97.5t-105.5 272.5zM305 371q0 -86 56 -140.5t147 -54.5q77 0 147 27t144 82l-264 381q-133 -74 -181.5 -141.5t-48.5 -153.5zM567 1102q0 -109 62 -201q147 75 199.5 133.5t52.5 126.5q0 66 -36 101.5t-97 35.5q-87 0 -134 -54t-47 -142z" />
-<glyph unicode="'" horiz-adv-x="483" d="M213 934l72 528h231l-151 -528h-152z" />
-<glyph unicode="(" horiz-adv-x="639" d="M78 276q0 343 124.5 632.5t379.5 553.5h209q-498 -548 -498 -1190q0 -329 115 -596h-183q-147 261 -147 600z" />
-<glyph unicode=")" horiz-adv-x="639" d="M-154 -324q498 548 498 1190q0 327 -115 596h183q147 -265 147 -602q0 -342 -123 -629.5t-381 -554.5h-209z" />
-<glyph unicode="*" horiz-adv-x="1122" d="M193 1167l71 195l354 -178l37 383l213 -43l-116 -367l403 23l-12 -205l-367 45l170 -361l-205 -61l-102 371l-227 -312l-162 144l293 266z" />
-<glyph unicode="+" d="M117 631v180h379v381h180v-381h377v-180h-377v-375h-180v375h-379z" />
-<glyph unicode="," horiz-adv-x="530" d="M-102 -264q105 238 200 502h236l8 -23q-125 -260 -266 -479h-178z" />
-<glyph unicode="-" horiz-adv-x="649" d="M47 446l45 203h502l-45 -203h-502z" />
-<glyph unicode="." horiz-adv-x="551" d="M33 94q0 83 47 132.5t131 49.5q56 0 89.5 -31.5t33.5 -92.5q0 -78 -47.5 -129.5t-124.5 -51.5q-66 0 -97.5 35.5t-31.5 87.5z" />
-<glyph unicode="/" horiz-adv-x="788" d="M-92 0l811 1462h233l-811 -1462h-233z" />
-<glyph unicode="0" d="M92 471q0 284 83 526t222.5 365t321.5 123q187 0 284 -118.5t97 -354.5q0 -306 -79 -546.5t-219 -363t-325 -122.5q-194 0 -289.5 127.5t-95.5 363.5zM330 469q0 -143 39 -218t129 -75q100 0 182.5 113.5t132 316.5t49.5 414q0 268 -162 268q-97 0 -180 -112 t-136.5 -312.5t-53.5 -394.5z" />
-<glyph unicode="1" d="M242 1145l508 317h198l-311 -1462h-238l189 870q28 150 82 324q-57 -55 -135 -102l-187 -117z" />
-<glyph unicode="2" d="M-18 0l36 180l471 422q176 159 238.5 231t90.5 133.5t28 131.5q0 85 -49.5 134.5t-139.5 49.5q-70 0 -139 -30t-170 -109l-115 160q120 97 231 138.5t228 41.5q181 0 288 -93t107 -251q0 -108 -39 -201t-123 -190.5t-284 -268.5l-311 -264v-8h622l-41 -207h-929z" />
-<glyph unicode="3" d="M31 59v215q84 -49 185.5 -75.5t195.5 -26.5q157 0 245 71.5t88 196.5q0 219 -278 219h-133l37 183h106q164 0 267.5 74.5t103.5 199.5q0 79 -49.5 124.5t-139.5 45.5q-72 0 -146.5 -25.5t-162.5 -84.5l-104 161q120 81 225.5 113.5t226.5 32.5q183 0 286 -88.5 t103 -241.5q0 -158 -99 -264t-269 -137v-7q127 -24 196.5 -106t69.5 -205q0 -133 -68 -236.5t-196.5 -160.5t-304.5 -57q-225 0 -385 79z" />
-<glyph unicode="4" d="M-4 317l37 197l803 952h254l-201 -952h201l-43 -197h-201l-68 -317h-229l69 317h-622zM262 514h397l68 309q31 136 100 377h-8q-51 -86 -135 -186z" />
-<glyph unicode="5" d="M53 59v217q167 -100 342 -100q173 0 270 83t97 230q0 105 -62 168.5t-188 63.5q-95 0 -225 -35l-88 68l200 708h713l-45 -209h-506l-106 -364q93 18 155 18q181 0 288.5 -103.5t107.5 -285.5q0 -161 -70 -283t-204 -188.5t-324 -66.5q-214 0 -355 79z" />
-<glyph unicode="6" d="M111 446q0 205 60.5 406t165 343t251 215t342.5 73q117 0 203 -25l-43 -194q-72 22 -181 22q-205 0 -337 -129.5t-197 -392.5h6q125 170 326 170q156 0 243.5 -99t87.5 -272q0 -162 -68.5 -301t-185.5 -210.5t-270 -71.5q-194 0 -298.5 120t-104.5 346zM340 418 q0 -110 49.5 -177t140.5 -67q81 0 143 48.5t96 134.5t34 188q0 200 -178 200q-51 0 -95.5 -19t-79 -48t-58.5 -64.5t-39 -82t-13 -113.5z" />
-<glyph unicode="7" d="M125 0l754 1257h-674l43 205h932l-33 -168l-758 -1294h-264z" />
-<glyph unicode="8" d="M76 348q0 297 368 432q-91 70 -130.5 145t-39.5 162q0 179 127 288.5t330 109.5q179 0 283 -89t104 -239q0 -132 -79 -229.5t-248 -163.5q120 -78 172.5 -165.5t52.5 -201.5q0 -121 -61.5 -216.5t-175.5 -148t-271 -52.5q-203 0 -317.5 100t-114.5 268zM311 369 q0 -93 59 -149t158 -56q115 0 184.5 64t69.5 167q0 91 -48.5 157.5t-139.5 119.5q-149 -54 -216 -126.5t-67 -176.5zM504 1096q0 -83 39 -137t104 -93q115 43 177.5 105t62.5 157q0 81 -48 126.5t-128 45.5q-93 0 -150 -56t-57 -148z" />
-<glyph unicode="9" d="M92 12v207q121 -43 236 -43q188 0 306 123t177 389h-6q-113 -160 -305 -160q-165 0 -255.5 102t-90.5 288q0 156 67 289t186.5 204.5t274.5 71.5q192 0 294.5 -119.5t102.5 -345.5q0 -205 -58 -414.5t-152.5 -349t-226 -207t-310.5 -67.5q-133 0 -240 32zM387 932 q0 -105 46 -160t134 -55q117 0 198 94t81 240q0 108 -48 172.5t-134 64.5q-82 0 -145.5 -47t-97.5 -130t-34 -179z" />
-<glyph unicode=":" horiz-adv-x="551" d="M33 94q0 83 47 132.5t131 49.5q56 0 89.5 -31.5t33.5 -92.5q0 -78 -47.5 -129.5t-124.5 -51.5q-66 0 -97.5 35.5t-31.5 87.5zM205 948q0 83 47 132.5t131 49.5q56 0 89.5 -31.5t33.5 -92.5q0 -79 -48.5 -130t-125.5 -51q-66 0 -96.5 35.5t-30.5 87.5z" />
-<glyph unicode=";" horiz-adv-x="551" d="M-100 -264q95 214 198 502h236l8 -23q-125 -260 -266 -479h-176zM205 948q0 83 47 132.5t131 49.5q56 0 89.5 -31.5t33.5 -92.5q0 -79 -48.5 -130t-125.5 -51q-66 0 -96.5 35.5t-30.5 87.5z" />
-<glyph unicode="&#x3c;" d="M115 651v121l936 488v-195l-697 -344l697 -303v-197z" />
-<glyph unicode="=" d="M117 430v180h936v-180h-936zM117 831v179h936v-179h-936z" />
-<glyph unicode="&#x3e;" d="M115 221v197l694 303l-694 344v195l936 -488v-121z" />
-<glyph unicode="?" horiz-adv-x="907" d="M162 94q0 83 47 132.5t131 49.5q56 0 89.5 -31.5t33.5 -92.5q0 -79 -49 -129t-125 -50q-66 0 -96.5 34.5t-30.5 86.5zM186 1370q207 113 410 113q171 0 269 -85.5t98 -242.5q0 -120 -63.5 -217.5t-231.5 -216.5q-104 -74 -150 -133t-61 -144h-197q18 133 71.5 220.5 t176.5 177.5q107 77 146.5 117t58 80.5t18.5 88.5q0 70 -42.5 114t-123.5 44q-77 0 -150 -27.5t-151 -64.5z" />
-<glyph unicode="@" horiz-adv-x="1743" d="M100 502q0 270 122.5 489t343 344t493.5 125q200 0 346 -74.5t223.5 -214.5t77.5 -325q0 -176 -59.5 -322.5t-166.5 -229.5t-239 -83q-98 0 -150.5 46t-64.5 120h-6q-101 -166 -277 -166q-123 0 -189.5 78.5t-66.5 218.5q0 151 67.5 279.5t188 203t263.5 74.5 q52 0 94.5 -5t79.5 -13t129 -39l-101 -392q-30 -114 -30 -159q0 -92 79 -92q72 0 134 66.5t97.5 174.5t35.5 230q0 228 -128.5 347.5t-363.5 119.5q-214 0 -385 -99.5t-266.5 -281.5t-95.5 -406q0 -259 140.5 -401t391.5 -142q200 0 430 86v-155q-219 -90 -454 -90 q-210 0 -367 83.5t-241.5 239.5t-84.5 365zM676 522q0 -157 112 -157q82 0 141.5 72t100.5 220l64 240q-53 16 -105 16q-86 0 -158.5 -53.5t-113.5 -144t-41 -193.5z" />
-<glyph unicode="A" horiz-adv-x="1210" d="M-121 0l783 1464h274l166 -1464h-234l-41 406h-485l-209 -406h-254zM446 614h365q-40 416 -45.5 503.5t-5.5 139.5q-55 -139 -142 -307z" />
-<glyph unicode="B" horiz-adv-x="1247" d="M70 0l309 1462h399q222 0 335.5 -84t113.5 -248q0 -146 -86.5 -243t-239.5 -127v-8q108 -28 167.5 -103.5t59.5 -183.5q0 -217 -150 -341t-417 -124h-491zM348 201h223q147 0 230.5 68t83.5 194q0 98 -60 149.5t-176 51.5h-200zM489 858h199q139 0 215 60.5t76 171.5 q0 172 -223 172h-181z" />
-<glyph unicode="C" horiz-adv-x="1225" d="M135 545q0 260 105.5 483t281.5 339t402 116q217 0 389 -92l-94 -195q-63 34 -134 58t-161 24q-154 0 -275 -89t-193.5 -259.5t-72.5 -374.5q0 -180 82.5 -275.5t243.5 -95.5q141 0 329 68v-205q-180 -67 -374 -67q-248 0 -388.5 148.5t-140.5 416.5z" />
-<glyph unicode="D" horiz-adv-x="1374" d="M70 0l309 1462h369q271 0 417 -145t146 -424q0 -271 -100 -473t-291 -311t-449 -109h-401zM348 201h135q177 0 309 86t202.5 242t70.5 356q0 184 -88 280.5t-256 96.5h-146z" />
-<glyph unicode="E" horiz-adv-x="1077" d="M70 0l309 1462h776l-43 -205h-539l-84 -395h502l-41 -203h-504l-96 -456h539l-43 -203h-776z" />
-<glyph unicode="F" horiz-adv-x="1026" d="M70 0l309 1462h774l-43 -205h-537l-96 -454h502l-45 -203h-500l-127 -600h-237z" />
-<glyph unicode="G" horiz-adv-x="1399" d="M135 539q0 264 102.5 483t290 340t426.5 121q111 0 213 -20.5t205 -69.5l-90 -203q-174 86 -334 86q-158 0 -287 -90.5t-203.5 -258t-74.5 -372.5q0 -183 89 -277t253 -94q109 0 215 33l80 371h-277l43 205h512l-157 -736q-112 -40 -218.5 -58.5t-238.5 -18.5 q-261 0 -405 146t-144 413z" />
-<glyph unicode="H" horiz-adv-x="1411" d="M70 0l309 1462h237l-127 -598h566l127 598h237l-309 -1462h-238l140 659h-566l-139 -659h-237z" />
-<glyph unicode="I" horiz-adv-x="608" d="M70 0l311 1462h235l-311 -1462h-235z" />
-<glyph unicode="J" horiz-adv-x="612" d="M-322 -383l5 201q84 -21 153 -21q201 0 254 250l299 1415h238l-305 -1446q-46 -217 -161.5 -320.5t-312.5 -103.5q-104 0 -170 25z" />
-<glyph unicode="K" horiz-adv-x="1198" d="M70 0l309 1462h237l-151 -706l141 166l492 540h284l-616 -669l321 -793h-262l-252 655l-149 -100l-117 -555h-237z" />
-<glyph unicode="L" horiz-adv-x="1016" d="M70 0l309 1462h237l-266 -1257h539l-43 -205h-776z" />
-<glyph unicode="M" horiz-adv-x="1757" d="M68 0l309 1462h323l109 -1149h6l606 1149h344l-305 -1462h-227l182 872q39 186 86 342h-6l-643 -1214h-205l-115 1214h-6q-9 -118 -55 -340l-184 -874h-219z" />
-<glyph unicode="N" horiz-adv-x="1491" d="M68 0l309 1462h268l399 -1149h7q6 54 31 192.5t40 203.5l160 753h219l-309 -1462h-260l-410 1163h-6l-10 -69q-24 -149 -35.5 -212.5t-183.5 -881.5h-219z" />
-<glyph unicode="O" horiz-adv-x="1485" d="M135 543q0 267 98.5 487.5t269.5 337.5t388 117q251 0 390.5 -149t139.5 -414q0 -279 -95 -497t-261.5 -331.5t-386.5 -113.5q-259 0 -401 149.5t-142 413.5zM383 545q0 -173 81.5 -267t227.5 -94q138 0 248.5 95.5t172 265t61.5 375.5q0 170 -79 265t-223 95 q-138 0 -250 -96t-175.5 -266.5t-63.5 -372.5z" />
-<glyph unicode="P" horiz-adv-x="1174" d="M70 0l309 1462h334q229 0 345 -100.5t116 -300.5q0 -248 -169.5 -381t-472.5 -133h-110l-115 -547h-237zM465 748h94q178 0 275.5 79.5t97.5 225.5q0 109 -58.5 159t-179.5 50h-119z" />
-<glyph unicode="Q" horiz-adv-x="1485" d="M135 543q0 267 98.5 487.5t269.5 337.5t388 117q251 0 390.5 -149t139.5 -414q0 -322 -130 -563t-355 -332l264 -375h-289l-202 328h-31q-259 0 -401 149.5t-142 413.5zM383 545q0 -173 81.5 -267t227.5 -94q138 0 248.5 94t172 263.5t61.5 378.5q0 170 -79 265t-223 95 q-138 0 -250 -96t-175.5 -266.5t-63.5 -372.5z" />
-<glyph unicode="R" horiz-adv-x="1206" d="M70 0l309 1462h338q223 0 342 -94.5t119 -290.5q0 -165 -86.5 -278.5t-257.5 -165.5l249 -633h-260l-207 584h-186l-123 -584h-237zM473 782h123q170 0 254 75t84 206q0 105 -59 151t-183 46h-119z" />
-<glyph unicode="S" horiz-adv-x="1057" d="M39 55v224q173 -97 350 -97q137 0 216 58.5t79 162.5q0 69 -41 122.5t-172 136.5q-105 67 -155 122t-76.5 120.5t-26.5 144.5q0 128 61.5 227t174 153t253.5 54q205 0 381 -92l-86 -191q-161 78 -295 78q-109 0 -175 -58.5t-66 -152.5q0 -47 15 -82.5t46.5 -66 t134.5 -95.5q155 -97 214 -187.5t59 -207.5q0 -210 -144.5 -329t-398.5 -119q-210 0 -348 75z" />
-<glyph unicode="T" horiz-adv-x="1053" d="M176 1257l45 205h998l-43 -205h-381l-267 -1257h-237l264 1257h-379z" />
-<glyph unicode="U" horiz-adv-x="1399" d="M152 391q0 83 20 170l193 901h237l-192 -905q-21 -88 -21 -158q0 -102 59.5 -158.5t180.5 -56.5q145 0 230 80.5t124 261.5l199 936h237l-202 -956q-56 -267 -208 -396.5t-403 -129.5q-217 0 -335.5 106t-118.5 305z" />
-<glyph unicode="V" horiz-adv-x="1165" d="M186 1462h232l74 -905q9 -103 11 -233l-1 -76h4q70 178 137 309l455 905h254l-764 -1462h-258z" />
-<glyph unicode="W" horiz-adv-x="1788" d="M203 1462h229l19 -850q0 -136 -13 -346h6q83 221 142 355l387 841h225l31 -839l3 -169l-3 -188h8q28 88 70 197.5t61 152.5l358 846h246l-655 -1462h-258l-37 842l-6 185l4 106h-6q-47 -144 -117 -291l-385 -842h-256z" />
-<glyph unicode="X" horiz-adv-x="1151" d="M-111 0l586 770l-250 692h246l178 -540l402 540h266l-551 -710l274 -752h-256l-192 592l-438 -592h-265z" />
-<glyph unicode="Y" horiz-adv-x="1092" d="M186 1462h242l154 -669l432 669h266l-623 -913l-114 -549h-238l119 553z" />
-<glyph unicode="Z" horiz-adv-x="1092" d="M-39 0l33 168l850 1087h-598l43 207h897l-35 -172l-852 -1085h645l-43 -205h-940z" />
-<glyph unicode="[" horiz-adv-x="631" d="M-27 -324l381 1786h430l-39 -176h-221l-303 -1433h221l-39 -177h-430z" />
-<glyph unicode="\" horiz-adv-x="788" d="M221 1462h207l219 -1462h-209z" />
-<glyph unicode="]" horiz-adv-x="631" d="M-143 -324l37 177h219l305 1433h-221l39 176h430l-381 -1786h-428z" />
-<glyph unicode="^" horiz-adv-x="1069" d="M37 537l608 933h127l272 -933h-184l-188 690l-434 -690h-201z" />
-<glyph unicode="_" horiz-adv-x="813" d="M-188 -324l30 140h817l-30 -140h-817z" />
-<glyph unicode="`" horiz-adv-x="1135" d="M541 1548v21h245q47 -154 132 -303v-25h-144q-65 63 -132 151.5t-101 155.5z" />
-<glyph unicode="a" horiz-adv-x="1186" d="M94 367q0 202 69.5 378t191.5 278.5t268 102.5q97 0 167 -45.5t109 -132.5h10l62 158h180l-236 -1106h-182l21 176h-6q-158 -196 -349 -196q-141 0 -223 101.5t-82 285.5zM332 373q0 -102 40.5 -152.5t112.5 -50.5q82 0 161 77.5t130 207.5t51 284q0 88 -47 141.5 t-123 53.5q-85 0 -160 -77t-120 -209.5t-45 -274.5z" />
-<glyph unicode="b" horiz-adv-x="1200" d="M47 0l330 1556h235l-71 -333q-13 -63 -38 -156.5t-40 -140.5h8q90 113 165 156.5t161 43.5q145 0 226 -103.5t81 -285.5q0 -202 -69.5 -379.5t-190.5 -277.5t-266 -100q-98 0 -168.5 45t-110.5 131h-10l-64 -156h-178zM369 373q0 -96 46.5 -149.5t131.5 -53.5t159 78.5 t117 210t43 274.5q0 201 -155 201q-81 0 -162 -80t-130.5 -210.5t-49.5 -270.5z" />
-<glyph unicode="c" horiz-adv-x="954" d="M94 389q0 207 73.5 376.5t206.5 265t302 95.5q164 0 297 -61l-70 -184q-122 53 -221 53q-150 0 -250 -153.5t-100 -379.5q0 -111 56 -171t155 -60q74 0 138.5 22t129.5 54v-195q-140 -71 -305 -71q-196 0 -304 106t-108 303z" />
-<glyph unicode="d" horiz-adv-x="1198" d="M94 369q0 205 71.5 383t191.5 276t266 98q179 0 268 -178h8q13 146 37 250l76 358h233l-330 -1556h-184l19 176h-7q-88 -106 -170 -151t-174 -45q-143 0 -224 101.5t-81 287.5zM332 373q0 -203 157 -203q82 0 162.5 82t129 214t48.5 267q0 91 -43.5 146t-132.5 55 q-85 0 -159 -77t-118 -211t-44 -273z" />
-<glyph unicode="e" horiz-adv-x="1075" d="M94 401q0 198 77.5 368.5t210 263.5t296.5 93q161 0 250.5 -72.5t89.5 -205.5q0 -182 -166.5 -284.5t-474.5 -102.5h-43l-2 -31v-29q0 -111 56.5 -174t168.5 -63q72 0 143 19t168 65v-187q-96 -44 -176.5 -62.5t-179.5 -18.5q-197 0 -307.5 111t-110.5 310zM362 633h29 q188 0 294 53.5t106 151.5q0 51 -32 79.5t-95 28.5q-96 0 -180.5 -86t-121.5 -227z" />
-<glyph unicode="f" horiz-adv-x="702" d="M-225 -279q64 -20 114 -20q134 0 177 205l217 1022h-179l21 106l194 76l21 92q44 198 134.5 281.5t256.5 83.5q115 0 211 -43l-61 -176q-74 28 -136 28q-69 0 -110.5 -43t-63.5 -141l-18 -86h229l-37 -178h-229l-223 -1053q-40 -189 -131 -278t-238 -89q-90 0 -149 23 v190z" />
-<glyph unicode="g" horiz-adv-x="1067" d="M-121 -211q0 103 69.5 178t223.5 127q-76 45 -76 127q0 69 46.5 119.5t146.5 97.5q-135 81 -135 252q0 196 122.5 316t323.5 120q80 0 160 -20h383l-31 -137l-192 -33q28 -58 28 -137q0 -193 -119 -306.5t-319 -113.5q-52 0 -92 8q-111 -40 -111 -104q0 -38 31.5 -52 t91.5 -22l127 -16q176 -22 252 -87.5t76 -187.5q0 -196 -151 -303t-429 -107q-203 0 -314.5 75t-111.5 206zM92 -184q0 -65 55.5 -103.5t169.5 -38.5q163 0 255 54t92 155q0 51 -45 80t-158 41l-137 14q-112 -18 -172 -71t-60 -131zM377 680q0 -71 35.5 -109.5t101.5 -38.5 q65 0 112.5 39t74 107t26.5 149q0 142 -133 142q-65 0 -114 -38.5t-76 -105t-27 -145.5z" />
-<glyph unicode="h" horiz-adv-x="1208" d="M47 0l330 1556h235l-57 -262q-27 -126 -73 -293l-19 -75h8q84 106 168.5 153t177.5 47q136 0 208.5 -77.5t72.5 -221.5q0 -76 -23 -174l-139 -653h-234l142 672q18 90 18 127q0 135 -129 135q-112 0 -209.5 -125t-142.5 -342l-98 -467h-236z" />
-<glyph unicode="i" horiz-adv-x="563" d="M47 0l236 1106h235l-235 -1106h-236zM330 1378q0 68 39 110t110 42q53 0 86 -26.5t33 -80.5q0 -71 -40 -112t-105 -41q-53 0 -88 26t-35 82z" />
-<glyph unicode="j" horiz-adv-x="563" d="M-262 -279q64 -20 117 -20q131 0 170 186l260 1219h233l-266 -1247q-38 -181 -127.5 -266t-237.5 -85q-90 0 -149 23v190zM332 1378q0 68 38 110t109 42q54 0 86.5 -26.5t32.5 -80.5q0 -71 -40 -112t-105 -41q-53 0 -87 25.5t-34 82.5z" />
-<glyph unicode="k" horiz-adv-x="1081" d="M47 0l330 1556h235q-135 -627 -159.5 -729.5t-59.5 -226.5h4l490 506h272l-483 -485l291 -621h-262l-209 471l-136 -96l-77 -375h-236z" />
-<glyph unicode="l" horiz-adv-x="563" d="M47 0l330 1556h235l-331 -1556h-234z" />
-<glyph unicode="m" horiz-adv-x="1819" d="M47 0l236 1106h184l-21 -205h9q148 225 352 225q220 0 254 -235h8q75 116 170.5 175.5t198.5 59.5q133 0 202.5 -76.5t69.5 -215.5q0 -64 -22 -181l-140 -653h-235l143 672q19 95 19 133q0 129 -121 129q-108 0 -201.5 -124t-136.5 -329l-101 -481h-235l143 672 q17 82 17 127q0 135 -117 135q-110 0 -203.5 -127t-138.5 -338l-98 -469h-236z" />
-<glyph unicode="n" horiz-adv-x="1208" d="M47 0l236 1106h184l-21 -205h9q83 118 171 171.5t191 53.5q134 0 207.5 -76t73.5 -216q0 -69 -23 -181l-137 -653h-236l142 672q18 90 18 131q0 131 -129 131q-72 0 -142 -57t-126 -164.5t-84 -243.5l-98 -469h-236z" />
-<glyph unicode="o" horiz-adv-x="1174" d="M94 408q0 199 71.5 365t200.5 258.5t298 92.5q195 0 305 -116t110 -316q0 -202 -73 -367.5t-200.5 -254t-293.5 -88.5q-192 0 -305 114.5t-113 311.5zM332 403q0 -111 49.5 -170t146.5 -59q90 0 162 68t112 190.5t40 269.5q0 107 -49 167.5t-140 60.5q-93 0 -166.5 -71.5 t-114 -194t-40.5 -261.5z" />
-<glyph unicode="p" horiz-adv-x="1200" d="M-55 -492l338 1598h184l-21 -188h9q157 208 344 208q143 0 224 -103t81 -286q0 -204 -70 -381.5t-190.5 -276.5t-265.5 -99q-181 0 -269 176h-10q-7 -97 -25 -185l-96 -463h-233zM369 373q0 -96 46.5 -149.5t131.5 -53.5t159 78.5t117 210t43 274.5q0 201 -155 201 q-81 0 -161 -79.5t-130.5 -210.5t-50.5 -271z" />
-<glyph unicode="q" horiz-adv-x="1198" d="M94 367q0 208 73 387t192.5 275.5t265.5 96.5q183 0 274 -178h10l64 158h178l-340 -1598h-233l75 349q12 56 43.5 180t38.5 141h-8q-84 -108 -164 -153t-170 -45q-139 0 -219 102.5t-80 284.5zM332 373q0 -203 160 -203q80 0 159 81t127.5 213t48.5 269q0 94 -45.5 147.5 t-126.5 53.5q-86 0 -160 -77.5t-118.5 -209.5t-44.5 -274z" />
-<glyph unicode="r" horiz-adv-x="836" d="M47 0l236 1106h184l-21 -205h9q83 120 166 172.5t176 52.5q62 0 108 -12l-51 -219q-54 14 -102 14q-126 0 -225 -113t-138 -296l-106 -500h-236z" />
-<glyph unicode="s" horiz-adv-x="922" d="M14 47v203q153 -90 312 -90q97 0 157 40t60 109q0 51 -34.5 87.5t-141.5 97.5q-125 67 -176.5 136.5t-51.5 164.5q0 155 107 243t289 88q196 0 346 -84l-76 -176q-140 76 -266 76q-73 0 -118.5 -33t-45.5 -92q0 -45 33 -80t135 -90q105 -59 149 -101t67 -91.5t23 -114.5 q0 -173 -118 -266.5t-328 -93.5q-190 0 -322 67z" />
-<glyph unicode="t" horiz-adv-x="752" d="M92 928l21 110l190 82l129 232h146l-52 -246h279l-39 -178h-277l-122 -572q-13 -55 -13 -92q0 -43 25 -68.5t76 -25.5q68 0 151 31v-178q-35 -17 -95 -30t-120 -13q-274 0 -274 247q0 57 16 131l121 570h-162z" />
-<glyph unicode="u" horiz-adv-x="1208" d="M111 274q0 63 12 124.5t24 123.5l123 584h236l-129 -610q-31 -141 -31 -193q0 -133 127 -133q72 0 143 57t126 162.5t85 247.5l99 469h233l-233 -1106h-185l21 205h-8q-82 -116 -171 -170.5t-192 -54.5q-134 0 -207 76t-73 218z" />
-<glyph unicode="v" horiz-adv-x="997" d="M100 1106h232l55 -598q14 -159 14 -297h7q28 74 70 165t65 132l311 598h250l-598 -1106h-275z" />
-<glyph unicode="w" horiz-adv-x="1540" d="M121 1106h221l13 -646q-2 -87 -11 -245h6q66 176 109 272l278 619h254l19 -604l1 -53l-3 -234h6q17 50 57 158.5t63.5 163.5t251.5 569h244l-518 -1106h-268l-19 627l-1 70l3 200q-25 -62 -51.5 -125t-345.5 -772h-262z" />
-<glyph unicode="x" horiz-adv-x="1032" d="M-86 0l475 569l-231 537h245l144 -373l287 373h274l-461 -549l248 -557h-246l-160 387l-305 -387h-270z" />
-<glyph unicode="y" horiz-adv-x="1004" d="M-170 -285q75 -16 125 -16q74 0 134 43.5t124 155.5l51 92l-164 1116h232l63 -531q9 -62 16 -174.5t7 -181.5h6q86 215 135 313l293 574h254l-688 -1280q-90 -165 -196 -241.5t-249 -76.5q-76 0 -143 19v188z" />
-<glyph unicode="z" horiz-adv-x="920" d="M-39 0l29 147l635 781h-439l39 178h705l-37 -170l-623 -758h486l-37 -178h-758z" />
-<glyph unicode="{" horiz-adv-x="721" d="M8 485l39 187q120 0 191.5 42.5t93.5 143.5l59 275q28 134 73 201.5t120 97.5t198 30h60l-41 -184q-96 0 -139.5 -34t-61.5 -116l-70 -309q-24 -108 -87 -170.5t-179 -79.5v-6q160 -45 160 -215q0 -38 -16 -121l-43 -194q-11 -48 -11 -74q0 -51 32.5 -74.5t109.5 -23.5 v-185h-39q-316 0 -316 236q0 61 17 133l45 201q14 65 14 98q0 141 -209 141z" />
-<glyph unicode="|" d="M498 -481v2033h178v-2033h-178z" />
-<glyph unicode="}" horiz-adv-x="721" d="M-88 -141q106 2 152.5 36.5t64.5 114.5l70 309q24 109 87 170t179 78v6q-158 48 -158 215q0 55 17 121l43 197q10 44 10 74q0 58 -43 78t-121 20l35 184h22q318 0 318 -235q0 -61 -17 -133l-45 -203q-14 -65 -14 -98q0 -142 209 -142l-39 -186q-121 0 -192 -42t-93 -142 l-63 -306q-34 -165 -123.5 -232t-269.5 -67h-29v183z" />
-<glyph unicode="~" d="M111 571v191q100 108 249 108q64 0 118.5 -12t146.5 -51q70 -30 115 -42.5t94 -12.5q50 0 112.5 31t120.5 89v-190q-103 -111 -250 -111q-63 0 -124 16.5t-138 49.5q-76 32 -119.5 43.5t-91.5 11.5q-51 0 -112 -31t-121 -90z" />
-<glyph unicode="&#xa1;" horiz-adv-x="557" d="M-45 -373l266 1018h174l-166 -1018h-274zM221 936q0 82 49 132t127 50q65 0 95 -35.5t30 -89.5q0 -80 -47 -130t-127 -50q-59 0 -93 31.5t-34 91.5z" />
-<glyph unicode="&#xa2;" d="M195 586q0 190 63.5 351t178 260.5t261.5 121.5l35 164h156l-37 -164q124 -12 221 -57l-69 -185q-125 53 -222 53q-99 0 -180 -71.5t-125.5 -194.5t-44.5 -266q0 -111 56 -171t155 -60q74 0 138.5 21.5t129.5 53.5v-194q-133 -69 -293 -74l-40 -194h-156l45 213 q-132 34 -202 134.5t-70 258.5z" />
-<glyph unicode="&#xa3;" d="M-18 0l38 193q200 45 250 276l35 164h-196l36 172h197l61 299q38 185 153 282t300 97q188 0 352 -86l-88 -183q-143 74 -258 74q-185 0 -227 -205l-57 -278h333l-34 -172h-336l-33 -152q-21 -98 -68.5 -165t-130.5 -109h690l-45 -207h-972z" />
-<glyph unicode="&#xa4;" d="M141 1057l119 119l127 -127q102 61 207 61q108 0 207 -63l127 129l121 -117l-129 -129q61 -99 61 -207q0 -114 -61 -209l127 -125l-119 -119l-127 127q-95 -59 -207 -59q-120 0 -207 59l-127 -125l-117 119l127 125q-61 95 -61 207q0 110 61 205zM377 723 q0 -91 62.5 -154t154.5 -63q91 0 156 62t65 155t-65 156t-156 63q-92 0 -154.5 -64t-62.5 -155z" />
-<glyph unicode="&#xa5;" d="M106 244l33 155h273l30 148h-272l35 155h211l-199 760h232l145 -669l432 669h248l-518 -760h217l-35 -155h-274l-31 -148h274l-33 -155h-272l-53 -244h-221l51 244h-273z" />
-<glyph unicode="&#xa6;" d="M498 315h178v-796h-178v796zM498 758v794h178v-794h-178z" />
-<glyph unicode="&#xa7;" horiz-adv-x="995" d="M39 53v187q152 -93 319 -93q116 0 174 40.5t58 111.5q0 43 -39 79.5t-141 84.5q-130 60 -189 131.5t-59 169.5q0 188 219 307q-47 32 -78 82t-31 115q0 138 111.5 220.5t296.5 82.5q178 0 332 -78l-68 -158q-62 29 -129.5 50.5t-144.5 21.5q-86 0 -134.5 -34.5 t-48.5 -94.5q0 -43 36.5 -76.5t148.5 -83.5q127 -56 186.5 -127.5t59.5 -167.5q0 -92 -52.5 -171t-160.5 -140q102 -76 102 -193q0 -157 -123 -245t-330 -88q-188 0 -315 67zM358 793q0 -61 46.5 -104.5t173.5 -100.5q62 36 99.5 90.5t37.5 114.5t-49.5 104.5t-155.5 89.5 q-69 -26 -110.5 -79t-41.5 -115z" />
-<glyph unicode="&#xa8;" horiz-adv-x="1135" d="M426 1380q0 60 35 98t98 38q48 0 76.5 -23.5t28.5 -71.5q0 -65 -35.5 -102t-93.5 -37q-47 0 -78 23.5t-31 74.5zM809 1380q0 60 35 98t98 38q48 0 76.5 -23.5t28.5 -71.5q0 -65 -35.5 -102t-93.5 -37q-47 0 -78 23.5t-31 74.5z" />
-<glyph unicode="&#xa9;" horiz-adv-x="1704" d="M131 731q0 200 100 375t275 276t377 101q199 0 373.5 -99t276 -275.5t101.5 -377.5q0 -199 -98.5 -373t-272.5 -276t-380 -102q-207 0 -382 103.5t-272.5 276.5t-97.5 371zM254 731q0 -168 83 -312.5t229 -230.5t317 -86q173 0 319.5 87t227.5 231.5t81 310.5 q0 165 -82 310.5t-227.5 232t-318.5 86.5q-168 0 -314.5 -84.5t-230.5 -231t-84 -313.5zM502 727q0 216 113.5 340.5t312.5 124.5q138 0 266 -66l-68 -147q-106 55 -196 55q-113 0 -175.5 -76t-62.5 -231q0 -301 238 -301q47 0 112 16t109 35v-158q-117 -51 -240 -51 q-197 0 -303 123.5t-106 335.5z" />
-<glyph unicode="&#xaa;" horiz-adv-x="729" d="M160 1016q0 128 47 238.5t122.5 167.5t168.5 57q113 0 166 -103h6l39 90h118l-147 -684h-123l10 105h-4q-50 -62 -98 -89.5t-109 -27.5q-91 0 -143.5 66t-52.5 180zM319 1022q0 -125 93 -125q50 0 97.5 48t77 127.5t29.5 158.5q0 119 -102 119q-82 0 -138.5 -97.5 t-56.5 -230.5z" />
-<glyph unicode="&#xab;" horiz-adv-x="1055" d="M80 553v22l395 420l135 -118l-288 -332l153 -369l-178 -76zM520 530v25l385 434l137 -112l-280 -351l147 -350l-180 -76z" />
-<glyph unicode="&#xac;" d="M117 631v180h936v-555h-179v375h-757z" />
-<glyph unicode="&#xad;" horiz-adv-x="649" d="M47 446l45 203h502l-45 -203h-502z" />
-<glyph unicode="&#xae;" horiz-adv-x="1704" d="M131 731q0 200 100 375t275 276t377 101q199 0 373.5 -99t276 -275.5t101.5 -377.5q0 -199 -98.5 -373t-272.5 -276t-380 -102q-207 0 -382 103.5t-272.5 276.5t-97.5 371zM254 731q0 -168 83 -312.5t229 -230.5t317 -86q173 0 319.5 87t227.5 231.5t81 310.5 q0 165 -82 310.5t-227.5 232t-318.5 86.5q-168 0 -314.5 -84.5t-230.5 -231t-84 -313.5zM608 291v878h269q337 0 337 -262q0 -83 -45.5 -145t-130.5 -98l211 -373h-200l-172 325h-91v-325h-178zM786 760h72q84 0 129 36t45 99q0 73 -45.5 101t-128.5 28h-72v-264z" />
-<glyph unicode="&#xaf;" horiz-adv-x="903" d="M111 1556l39 166h911l-41 -166h-909z" />
-<glyph unicode="&#xb0;" horiz-adv-x="877" d="M188 1153q0 136 97 233t233 97t232 -97t96 -233q0 -137 -96 -231.5t-232 -94.5q-88 0 -165 44t-121 119t-44 163zM340 1153q0 -70 52 -122t126 -52q72 0 124 52t52 122q0 74 -51.5 126t-124.5 52q-74 0 -126 -51.5t-52 -126.5z" />
-<glyph unicode="&#xb1;" d="M117 0v180h936v-180h-936zM117 657v181h379v381h180v-381h377v-181h-377v-374h-180v374h-379z" />
-<glyph unicode="&#xb2;" horiz-adv-x="745" d="M78 586l28 135l269 223q111 95 148.5 136t55 77t17.5 74q0 46 -28 72t-76 26q-91 0 -191 -80l-80 123q68 54 142.5 81.5t168.5 27.5q115 0 183.5 -60t68.5 -155q0 -69 -23.5 -124.5t-74 -110.5t-168.5 -146l-174 -142h371l-33 -157h-604z" />
-<glyph unicode="&#xb3;" horiz-adv-x="745" d="M104 625v159q126 -71 248 -71q90 0 139.5 37t49.5 106q0 113 -146 113h-108l28 133h93q89 0 142.5 34t53.5 99q0 100 -117 100q-92 0 -188 -65l-68 121q126 90 291 90q124 0 193 -55.5t69 -153.5q0 -90 -54.5 -149t-158.5 -85v-4q78 -18 115 -67t37 -115 q0 -129 -99.5 -206t-269.5 -77q-138 0 -250 56z" />
-<glyph unicode="&#xb4;" horiz-adv-x="1135" d="M508 1241v25q97 108 225 303h264v-19q-54 -66 -158 -161.5t-175 -147.5h-156z" />
-<glyph unicode="&#xb5;" horiz-adv-x="1221" d="M-55 -492l338 1598h235l-141 -670q-19 -84 -19 -129q0 -65 33 -101t96 -36q113 0 209.5 125.5t141.5 337.5l102 473h231l-235 -1106h-184l22 190h-10q-75 -111 -153 -160.5t-165 -49.5q-108 0 -155 81h-8q-9 -73 -39 -235l-66 -318h-233z" />
-<glyph unicode="&#xb6;" horiz-adv-x="1341" d="M172 1042q0 260 109 387t342 127h581v-1816h-139v1638h-188v-1638h-140v819q-62 -18 -145 -18q-216 0 -318 125t-102 376z" />
-<glyph unicode="&#xb7;" horiz-adv-x="551" d="M150 692q0 83 47 132.5t131 49.5q56 0 89.5 -31.5t33.5 -92.5q0 -78 -47.5 -129.5t-124.5 -51.5q-66 0 -97.5 35.5t-31.5 87.5z" />
-<glyph unicode="&#xb8;" horiz-adv-x="420" d="M-188 -342q47 -14 96 -14q137 0 137 96q0 40 -35 61.5t-104 30.5l98 168h146l-50 -96q72 -25 104 -67t32 -101q0 -106 -82 -167t-224 -61q-64 0 -118 15v135z" />
-<glyph unicode="&#xb9;" horiz-adv-x="745" d="M193 1247l339 215h162l-186 -876h-191l99 461q17 79 57 217q-21 -20 -49.5 -43t-153.5 -103z" />
-<glyph unicode="&#xba;" horiz-adv-x="721" d="M164 1047q0 122 44 221.5t125.5 155t188.5 55.5q124 0 189 -71.5t65 -201.5q0 -126 -42 -225t-121 -155t-189 -56q-122 0 -191 73t-69 204zM326 1042q0 -141 112 -141q77 0 127.5 87.5t50.5 219.5q0 138 -106 138q-81 0 -132.5 -87.5t-51.5 -216.5z" />
-<glyph unicode="&#xbb;" horiz-adv-x="1055" d="M10 211l281 348l-146 352l179 76l211 -432v-25l-385 -432zM444 211l287 330l-153 370l180 76l217 -455v-22l-397 -418z" />
-<glyph unicode="&#xbc;" horiz-adv-x="1661" d="M149 0l1085 1462h195l-1083 -1462h-197zM151 1247l339 215h162l-186 -876h-191l99 461q17 79 57 217q-21 -20 -49.5 -43t-153.5 -103zM775 177l26 137l477 569h197l-121 -563h123l-29 -143h-122l-39 -176h-183l39 176h-368zM973 320h199l52 221l34 129q-32 -51 -98 -131z " />
-<glyph unicode="&#xbd;" horiz-adv-x="1661" d="M121 0l1085 1462h195l-1083 -1462h-197zM122 1247l339 215h162l-186 -876h-191l99 461q17 79 57 217q-21 -20 -49.5 -43t-153.5 -103zM860 1l28 135l269 223q111 95 148.5 136t55 77t17.5 74q0 46 -28 72t-76 26q-91 0 -191 -80l-80 123q68 54 142.5 81.5t168.5 27.5 q115 0 183.5 -60t68.5 -155q0 -69 -23.5 -124.5t-74 -110.5t-168.5 -146l-174 -142h371l-33 -157h-604z" />
-<glyph unicode="&#xbe;" horiz-adv-x="1683" d="M291 0l1085 1462h195l-1083 -1462h-197zM881 177l26 137l477 569h197l-121 -563h123l-29 -143h-122l-39 -176h-183l39 176h-368zM1079 320h199l52 221l34 129q-32 -51 -98 -131zM108 625v159q126 -71 248 -71q90 0 139.5 37t49.5 106q0 113 -146 113h-108l28 133h93 q89 0 142.5 34t53.5 99q0 100 -117 100q-92 0 -188 -65l-68 121q126 90 291 90q124 0 193 -55.5t69 -153.5q0 -90 -54.5 -149t-158.5 -85v-4q78 -18 115 -67t37 -115q0 -129 -99.5 -206t-269.5 -77q-138 0 -250 56z" />
-<glyph unicode="&#xbf;" horiz-adv-x="907" d="M-35 -68q0 120 64 219t231 216q93 64 141 122.5t70 153.5h197q-25 -146 -79.5 -231t-170.5 -168q-107 -79 -145.5 -118t-57 -79t-18.5 -88q0 -71 42 -114.5t123 -43.5q76 0 149.5 27.5t152.5 65.5l75 -177q-205 -112 -409 -112q-174 0 -269.5 85.5t-95.5 241.5zM465 934 q0 78 46.5 129t125.5 51q66 0 97.5 -34t31.5 -87q0 -85 -48 -134.5t-130 -49.5q-56 0 -89.5 32.5t-33.5 92.5z" />
-<glyph unicode="&#xc0;" horiz-adv-x="1210" d="M-121 0l783 1464h274l166 -1464h-234l-41 406h-485l-209 -406h-254zM446 614h365q-40 416 -45.5 503.5t-5.5 139.5q-55 -139 -142 -307zM538 1886v21h245q47 -154 132 -303v-25h-144q-65 63 -132 151.5t-101 155.5z" />
-<glyph unicode="&#xc1;" horiz-adv-x="1210" d="M-121 0l783 1464h274l166 -1464h-234l-41 406h-485l-209 -406h-254zM446 614h365q-40 416 -45.5 503.5t-5.5 139.5q-55 -139 -142 -307zM707 1579v25q97 108 225 303h264v-19q-54 -66 -158 -161.5t-175 -147.5h-156z" />
-<glyph unicode="&#xc2;" horiz-adv-x="1210" d="M-121 0l783 1464h274l166 -1464h-234l-41 406h-485l-209 -406h-254zM446 614h365q-40 416 -45.5 503.5t-5.5 139.5q-55 -139 -142 -307zM444 1579v25q138 128 201 195.5t90 107.5h248q38 -99 174 -303v-25h-152q-76 63 -161 178q-131 -110 -236 -178h-164z" />
-<glyph unicode="&#xc3;" horiz-adv-x="1210" d="M-121 0l783 1464h274l166 -1464h-234l-41 406h-485l-209 -406h-254zM446 614h365q-40 416 -45.5 503.5t-5.5 139.5q-55 -139 -142 -307zM441 1577q57 285 256 285q46 0 85 -17.5t72.5 -38t63.5 -38t59 -17.5q40 0 65 26.5t48 86.5h137q-66 -285 -260 -285q-45 0 -82.5 17 t-71.5 37.5t-65.5 37.5t-63.5 17q-38 0 -63 -27.5t-43 -83.5h-137z" />
-<glyph unicode="&#xc4;" horiz-adv-x="1210" d="M-121 0l783 1464h274l166 -1464h-234l-41 406h-485l-209 -406h-254zM446 614h365q-40 416 -45.5 503.5t-5.5 139.5q-55 -139 -142 -307zM518 1718q0 60 35 98t98 38q48 0 76.5 -23.5t28.5 -71.5q0 -65 -35.5 -102t-93.5 -37q-47 0 -78 23.5t-31 74.5zM901 1718 q0 60 35 98t98 38q48 0 76.5 -23.5t28.5 -71.5q0 -65 -35.5 -102t-93.5 -37q-47 0 -78 23.5t-31 74.5z" />
-<glyph unicode="&#xc5;" horiz-adv-x="1210" d="M-121 0l783 1464h274l166 -1464h-234l-41 406h-485l-209 -406h-254zM446 614h365q-40 416 -45.5 503.5t-5.5 139.5q-55 -139 -142 -307zM568 1573q0 103 65 164.5t168 61.5q104 0 171 -60.5t67 -163.5q0 -104 -66 -165.5t-172 -61.5t-169.5 61t-63.5 164zM697 1573 q0 -49 26.5 -76.5t77.5 -27.5q47 0 77 27.5t30 76.5q0 50 -30 78.5t-77 28.5q-45 0 -74.5 -28.5t-29.5 -78.5z" />
-<glyph unicode="&#xc6;" horiz-adv-x="1753" d="M-121 0l930 1462h1020l-43 -205h-539l-84 -395h504l-43 -200h-502l-98 -459h539l-43 -203h-777l86 406h-432l-256 -406h-262zM528 614h344l138 643h-82z" />
-<glyph unicode="&#xc7;" horiz-adv-x="1225" d="M135 545q0 260 105.5 483t281.5 339t402 116q217 0 389 -92l-94 -195q-63 34 -134 58t-161 24q-154 0 -275 -89t-193.5 -259.5t-72.5 -374.5q0 -180 82.5 -275.5t243.5 -95.5q141 0 329 68v-205q-180 -67 -374 -67q-248 0 -388.5 148.5t-140.5 416.5zM367 -342 q47 -14 96 -14q137 0 137 96q0 40 -35 61.5t-104 30.5l98 168h146l-50 -96q72 -25 104 -67t32 -101q0 -106 -82 -167t-224 -61q-64 0 -118 15v135z" />
-<glyph unicode="&#xc8;" horiz-adv-x="1077" d="M70 0l309 1462h776l-43 -205h-539l-84 -395h502l-41 -203h-504l-96 -456h539l-43 -203h-776zM526 1886v21h245q47 -154 132 -303v-25h-144q-65 63 -132 151.5t-101 155.5z" />
-<glyph unicode="&#xc9;" horiz-adv-x="1077" d="M70 0l309 1462h776l-43 -205h-539l-84 -395h502l-41 -203h-504l-96 -456h539l-43 -203h-776zM633 1579v25q97 108 225 303h264v-19q-54 -66 -158 -161.5t-175 -147.5h-156z" />
-<glyph unicode="&#xca;" horiz-adv-x="1077" d="M70 0l309 1462h776l-43 -205h-539l-84 -395h502l-41 -203h-504l-96 -456h539l-43 -203h-776zM417 1579v25q138 128 201 195.5t90 107.5h248q38 -99 174 -303v-25h-152q-76 63 -161 178q-131 -110 -236 -178h-164z" />
-<glyph unicode="&#xcb;" horiz-adv-x="1077" d="M70 0l309 1462h776l-43 -205h-539l-84 -395h502l-41 -203h-504l-96 -456h539l-43 -203h-776zM479 1718q0 60 35 98t98 38q48 0 76.5 -23.5t28.5 -71.5q0 -65 -35.5 -102t-93.5 -37q-47 0 -78 23.5t-31 74.5zM862 1718q0 60 35 98t98 38q48 0 76.5 -23.5t28.5 -71.5 q0 -65 -35.5 -102t-93.5 -37q-47 0 -78 23.5t-31 74.5z" />
-<glyph unicode="&#xcc;" horiz-adv-x="608" d="M70 0l311 1462h235l-311 -1462h-235zM253 1886v21h245q47 -154 132 -303v-25h-144q-65 63 -132 151.5t-101 155.5z" />
-<glyph unicode="&#xcd;" horiz-adv-x="608" d="M70 0l311 1462h235l-311 -1462h-235zM415 1579v25q97 108 225 303h264v-19q-54 -66 -158 -161.5t-175 -147.5h-156z" />
-<glyph unicode="&#xce;" horiz-adv-x="608" d="M70 0l311 1462h235l-311 -1462h-235zM160 1579v25q138 128 201 195.5t90 107.5h248q38 -99 174 -303v-25h-152q-76 63 -161 178q-131 -110 -236 -178h-164z" />
-<glyph unicode="&#xcf;" horiz-adv-x="608" d="M70 0l311 1462h235l-311 -1462h-235zM243 1718q0 60 35 98t98 38q48 0 76.5 -23.5t28.5 -71.5q0 -65 -35.5 -102t-93.5 -37q-47 0 -78 23.5t-31 74.5zM626 1718q0 60 35 98t98 38q48 0 76.5 -23.5t28.5 -71.5q0 -65 -35.5 -102t-93.5 -37q-47 0 -78 23.5t-31 74.5z" />
-<glyph unicode="&#xd0;" horiz-adv-x="1374" d="M53 623l45 200h144l137 639h369q271 0 417 -145t146 -424q0 -271 -100 -473t-291 -311t-449 -109h-401l129 623h-146zM348 201h135q177 0 309 86t202.5 242t70.5 356q0 184 -88 280.5t-256 96.5h-146l-94 -439h285l-45 -200h-283z" />
-<glyph unicode="&#xd1;" horiz-adv-x="1491" d="M68 0l309 1462h268l399 -1149h7q6 54 31 192.5t40 203.5l160 753h219l-309 -1462h-260l-410 1163h-6l-10 -69q-24 -149 -35.5 -212.5t-183.5 -881.5h-219zM582 1577q57 285 256 285q46 0 85 -17.5t72.5 -38t63.5 -38t59 -17.5q40 0 65 26.5t48 86.5h137 q-66 -285 -260 -285q-45 0 -82.5 17t-71.5 37.5t-65.5 37.5t-63.5 17q-38 0 -63 -27.5t-43 -83.5h-137z" />
-<glyph unicode="&#xd2;" horiz-adv-x="1485" d="M135 543q0 267 98.5 487.5t269.5 337.5t388 117q251 0 390.5 -149t139.5 -414q0 -279 -95 -497t-261.5 -331.5t-386.5 -113.5q-259 0 -401 149.5t-142 413.5zM383 545q0 -173 81.5 -267t227.5 -94q138 0 248.5 95.5t172 265t61.5 375.5q0 170 -79 265t-223 95 q-138 0 -250 -96t-175.5 -266.5t-63.5 -372.5zM652 1886v21h245q47 -154 132 -303v-25h-144q-65 63 -132 151.5t-101 155.5z" />
-<glyph unicode="&#xd3;" horiz-adv-x="1485" d="M135 543q0 267 98.5 487.5t269.5 337.5t388 117q251 0 390.5 -149t139.5 -414q0 -279 -95 -497t-261.5 -331.5t-386.5 -113.5q-259 0 -401 149.5t-142 413.5zM383 545q0 -173 81.5 -267t227.5 -94q138 0 248.5 95.5t172 265t61.5 375.5q0 170 -79 265t-223 95 q-138 0 -250 -96t-175.5 -266.5t-63.5 -372.5zM787 1579v25q97 108 225 303h264v-19q-54 -66 -158 -161.5t-175 -147.5h-156z" />
-<glyph unicode="&#xd4;" horiz-adv-x="1485" d="M135 543q0 267 98.5 487.5t269.5 337.5t388 117q251 0 390.5 -149t139.5 -414q0 -279 -95 -497t-261.5 -331.5t-386.5 -113.5q-259 0 -401 149.5t-142 413.5zM383 545q0 -173 81.5 -267t227.5 -94q138 0 248.5 95.5t172 265t61.5 375.5q0 170 -79 265t-223 95 q-138 0 -250 -96t-175.5 -266.5t-63.5 -372.5zM555 1579v25q138 128 201 195.5t90 107.5h248q38 -99 174 -303v-25h-152q-76 63 -161 178q-131 -110 -236 -178h-164z" />
-<glyph unicode="&#xd5;" horiz-adv-x="1485" d="M135 543q0 267 98.5 487.5t269.5 337.5t388 117q251 0 390.5 -149t139.5 -414q0 -279 -95 -497t-261.5 -331.5t-386.5 -113.5q-259 0 -401 149.5t-142 413.5zM383 545q0 -173 81.5 -267t227.5 -94q138 0 248.5 95.5t172 265t61.5 375.5q0 170 -79 265t-223 95 q-138 0 -250 -96t-175.5 -266.5t-63.5 -372.5zM543 1577q57 285 256 285q46 0 85 -17.5t72.5 -38t63.5 -38t59 -17.5q40 0 65 26.5t48 86.5h137q-66 -285 -260 -285q-45 0 -82.5 17t-71.5 37.5t-65.5 37.5t-63.5 17q-38 0 -63 -27.5t-43 -83.5h-137z" />
-<glyph unicode="&#xd6;" horiz-adv-x="1485" d="M135 543q0 267 98.5 487.5t269.5 337.5t388 117q251 0 390.5 -149t139.5 -414q0 -279 -95 -497t-261.5 -331.5t-386.5 -113.5q-259 0 -401 149.5t-142 413.5zM383 545q0 -173 81.5 -267t227.5 -94q138 0 248.5 95.5t172 265t61.5 375.5q0 170 -79 265t-223 95 q-138 0 -250 -96t-175.5 -266.5t-63.5 -372.5zM623 1718q0 60 35 98t98 38q48 0 76.5 -23.5t28.5 -71.5q0 -65 -35.5 -102t-93.5 -37q-47 0 -78 23.5t-31 74.5zM1006 1718q0 60 35 98t98 38q48 0 76.5 -23.5t28.5 -71.5q0 -65 -35.5 -102t-93.5 -37q-47 0 -78 23.5t-31 74.5 z" />
-<glyph unicode="&#xd7;" d="M147 1034l125 125l312 -309l313 309l127 -123l-315 -313l311 -313l-123 -123l-313 309l-312 -307l-122 123l307 311z" />
-<glyph unicode="&#xd8;" horiz-adv-x="1485" d="M109 18l129 160q-103 138 -103 365q0 267 98.5 487.5t269.5 337.5t388 117q189 0 317 -94l119 149l133 -104l-133 -166q94 -130 94 -348q0 -279 -95 -497t-261.5 -331.5t-386.5 -113.5q-193 0 -318 83l-118 -149zM377 545q0 -88 24 -164l668 836q-80 65 -197 65 q-141 0 -253 -93t-177 -265t-65 -379zM500 238q75 -56 194 -56q139 0 250.5 95.5t173.5 264.5t62 378q0 88 -19 143z" />
-<glyph unicode="&#xd9;" horiz-adv-x="1399" d="M152 391q0 83 20 170l193 901h237l-192 -905q-21 -88 -21 -158q0 -102 59.5 -158.5t180.5 -56.5q145 0 230 80.5t124 261.5l199 936h237l-202 -956q-56 -267 -208 -396.5t-403 -129.5q-217 0 -335.5 106t-118.5 305zM619 1886v21h245q47 -154 132 -303v-25h-144 q-65 63 -132 151.5t-101 155.5z" />
-<glyph unicode="&#xda;" horiz-adv-x="1399" d="M152 391q0 83 20 170l193 901h237l-192 -905q-21 -88 -21 -158q0 -102 59.5 -158.5t180.5 -56.5q145 0 230 80.5t124 261.5l199 936h237l-202 -956q-56 -267 -208 -396.5t-403 -129.5q-217 0 -335.5 106t-118.5 305zM791 1579v25q97 108 225 303h264v-19 q-54 -66 -158 -161.5t-175 -147.5h-156z" />
-<glyph unicode="&#xdb;" horiz-adv-x="1399" d="M152 391q0 83 20 170l193 901h237l-192 -905q-21 -88 -21 -158q0 -102 59.5 -158.5t180.5 -56.5q145 0 230 80.5t124 261.5l199 936h237l-202 -956q-56 -267 -208 -396.5t-403 -129.5q-217 0 -335.5 106t-118.5 305zM536 1579v25q138 128 201 195.5t90 107.5h248 q38 -99 174 -303v-25h-152q-76 63 -161 178q-131 -110 -236 -178h-164z" />
-<glyph unicode="&#xdc;" horiz-adv-x="1399" d="M152 391q0 83 20 170l193 901h237l-192 -905q-21 -88 -21 -158q0 -102 59.5 -158.5t180.5 -56.5q145 0 230 80.5t124 261.5l199 936h237l-202 -956q-56 -267 -208 -396.5t-403 -129.5q-217 0 -335.5 106t-118.5 305zM602 1718q0 60 35 98t98 38q48 0 76.5 -23.5 t28.5 -71.5q0 -65 -35.5 -102t-93.5 -37q-47 0 -78 23.5t-31 74.5zM985 1718q0 60 35 98t98 38q48 0 76.5 -23.5t28.5 -71.5q0 -65 -35.5 -102t-93.5 -37q-47 0 -78 23.5t-31 74.5z" />
-<glyph unicode="&#xdd;" horiz-adv-x="1092" d="M186 1462h242l154 -669l432 669h266l-623 -913l-114 -549h-238l119 553zM610 1579v25q97 108 225 303h264v-19q-54 -66 -158 -161.5t-175 -147.5h-156z" />
-<glyph unicode="&#xde;" horiz-adv-x="1174" d="M70 0l309 1462h237l-51 -243h97q227 0 344.5 -101t117.5 -301q0 -243 -166.5 -377.5t-476.5 -134.5h-108l-66 -305h-237zM414 506h96q176 0 274.5 78.5t98.5 226.5q0 109 -59.5 158t-180.5 49h-121z" />
-<glyph unicode="&#xdf;" horiz-adv-x="1266" d="M-258 -276q61 -21 113 -21q65 0 106.5 43.5t63.5 147.5l262 1234q48 231 173 333t349 102q188 0 292.5 -80t104.5 -215q0 -169 -179 -299q-118 -87 -148.5 -119.5t-30.5 -67.5q0 -44 74 -101q107 -84 143 -127t55 -92.5t19 -109.5q0 -172 -116 -272t-314 -100 q-182 0 -283 65v201q126 -86 252 -86q105 0 164 44t59 124q0 48 -23.5 85t-111.5 107q-82 64 -121 121.5t-39 126.5q0 75 44.5 139t135.5 124q98 66 138.5 112t40.5 98q0 65 -47 101t-132 36q-210 0 -262 -239l-264 -1260q-42 -197 -134.5 -284t-242.5 -87q-69 0 -141 23 v193z" />
-<glyph unicode="&#xe0;" horiz-adv-x="1186" d="M94 367q0 202 69.5 378t191.5 278.5t268 102.5q97 0 167 -45.5t109 -132.5h10l62 158h180l-236 -1106h-182l21 176h-6q-158 -196 -349 -196q-141 0 -223 101.5t-82 285.5zM332 373q0 -102 40.5 -152.5t112.5 -50.5q82 0 161 77.5t130 207.5t51 284q0 88 -47 141.5 t-123 53.5q-85 0 -160 -77t-120 -209.5t-45 -274.5zM470 1548v21h245q47 -154 132 -303v-25h-144q-65 63 -132 151.5t-101 155.5z" />
-<glyph unicode="&#xe1;" horiz-adv-x="1186" d="M94 367q0 202 69.5 378t191.5 278.5t268 102.5q97 0 167 -45.5t109 -132.5h10l62 158h180l-236 -1106h-182l21 176h-6q-158 -196 -349 -196q-141 0 -223 101.5t-82 285.5zM332 373q0 -102 40.5 -152.5t112.5 -50.5q82 0 161 77.5t130 207.5t51 284q0 88 -47 141.5 t-123 53.5q-85 0 -160 -77t-120 -209.5t-45 -274.5zM598 1241v25q97 108 225 303h264v-19q-54 -66 -158 -161.5t-175 -147.5h-156z" />
-<glyph unicode="&#xe2;" horiz-adv-x="1186" d="M94 367q0 202 69.5 378t191.5 278.5t268 102.5q97 0 167 -45.5t109 -132.5h10l62 158h180l-236 -1106h-182l21 176h-6q-158 -196 -349 -196q-141 0 -223 101.5t-82 285.5zM332 373q0 -102 40.5 -152.5t112.5 -50.5q82 0 161 77.5t130 207.5t51 284q0 88 -47 141.5 t-123 53.5q-85 0 -160 -77t-120 -209.5t-45 -274.5zM351 1241v25q138 128 201 195.5t90 107.5h248q38 -99 174 -303v-25h-152q-76 63 -161 178q-131 -110 -236 -178h-164z" />
-<glyph unicode="&#xe3;" horiz-adv-x="1186" d="M94 367q0 202 69.5 378t191.5 278.5t268 102.5q97 0 167 -45.5t109 -132.5h10l62 158h180l-236 -1106h-182l21 176h-6q-158 -196 -349 -196q-141 0 -223 101.5t-82 285.5zM332 373q0 -102 40.5 -152.5t112.5 -50.5q82 0 161 77.5t130 207.5t51 284q0 88 -47 141.5 t-123 53.5q-85 0 -160 -77t-120 -209.5t-45 -274.5zM344 1239q57 285 256 285q46 0 85 -17.5t72.5 -38t63.5 -38t59 -17.5q40 0 65 26.5t48 86.5h137q-66 -285 -260 -285q-45 0 -82.5 17t-71.5 37.5t-65.5 37.5t-63.5 17q-38 0 -63 -27.5t-43 -83.5h-137z" />
-<glyph unicode="&#xe4;" horiz-adv-x="1186" d="M94 367q0 202 69.5 378t191.5 278.5t268 102.5q97 0 167 -45.5t109 -132.5h10l62 158h180l-236 -1106h-182l21 176h-6q-158 -196 -349 -196q-141 0 -223 101.5t-82 285.5zM332 373q0 -102 40.5 -152.5t112.5 -50.5q82 0 161 77.5t130 207.5t51 284q0 88 -47 141.5 t-123 53.5q-85 0 -160 -77t-120 -209.5t-45 -274.5zM425 1380q0 60 35 98t98 38q48 0 76.5 -23.5t28.5 -71.5q0 -65 -35.5 -102t-93.5 -37q-47 0 -78 23.5t-31 74.5zM808 1380q0 60 35 98t98 38q48 0 76.5 -23.5t28.5 -71.5q0 -65 -35.5 -102t-93.5 -37q-47 0 -78 23.5 t-31 74.5z" />
-<glyph unicode="&#xe5;" horiz-adv-x="1186" d="M94 367q0 202 69.5 378t191.5 278.5t268 102.5q97 0 167 -45.5t109 -132.5h10l62 158h180l-236 -1106h-182l21 176h-6q-158 -196 -349 -196q-141 0 -223 101.5t-82 285.5zM332 373q0 -102 40.5 -152.5t112.5 -50.5q82 0 161 77.5t130 207.5t51 284q0 88 -47 141.5 t-123 53.5q-85 0 -160 -77t-120 -209.5t-45 -274.5zM517 1464q0 103 65 164.5t168 61.5q104 0 171 -60.5t67 -163.5q0 -104 -66 -165.5t-172 -61.5t-169.5 61t-63.5 164zM646 1464q0 -49 26.5 -76.5t77.5 -27.5q47 0 77 27.5t30 76.5q0 50 -30 78.5t-77 28.5 q-45 0 -74.5 -28.5t-29.5 -78.5z" />
-<glyph unicode="&#xe6;" horiz-adv-x="1726" d="M94 367q0 201 69 378t188.5 279t260.5 102q88 0 152 -43.5t108 -134.5h9l63 158h148l-25 -117q51 63 131 100t180 37q140 0 220.5 -76.5t80.5 -201.5q0 -182 -166.5 -284.5t-474.5 -102.5h-45l-4 -60q0 -117 60.5 -177t175.5 -60q125 0 305 84v-189q-175 -79 -344 -79 q-222 0 -305 137l-23 -117h-151l20 176h-8q-85 -106 -165.5 -151t-174.5 -45q-134 0 -209.5 103t-75.5 284zM332 373q0 -105 37 -154t96 -49q85 0 162.5 80.5t125.5 215.5t48 267q0 91 -38.5 146t-113.5 55q-85 0 -159.5 -80t-116 -211t-41.5 -270zM1022 633h31 q187 0 293 53.5t106 149.5q0 58 -34 84t-85 26q-103 0 -188.5 -86t-122.5 -227z" />
-<glyph unicode="&#xe7;" horiz-adv-x="954" d="M94 389q0 207 73.5 376.5t206.5 265t302 95.5q164 0 297 -61l-70 -184q-122 53 -221 53q-150 0 -250 -153.5t-100 -379.5q0 -111 56 -171t155 -60q74 0 138.5 22t129.5 54v-195q-140 -71 -305 -71q-196 0 -304 106t-108 303zM197 -342q47 -14 96 -14q137 0 137 96 q0 40 -35 61.5t-104 30.5l98 168h146l-50 -96q72 -25 104 -67t32 -101q0 -106 -82 -167t-224 -61q-64 0 -118 15v135z" />
-<glyph unicode="&#xe8;" horiz-adv-x="1075" d="M94 401q0 198 77.5 368.5t210 263.5t296.5 93q161 0 250.5 -72.5t89.5 -205.5q0 -182 -166.5 -284.5t-474.5 -102.5h-43l-2 -31v-29q0 -111 56.5 -174t168.5 -63q72 0 143 19t168 65v-187q-96 -44 -176.5 -62.5t-179.5 -18.5q-197 0 -307.5 111t-110.5 310zM362 633h29 q188 0 294 53.5t106 151.5q0 51 -32 79.5t-95 28.5q-96 0 -180.5 -86t-121.5 -227zM436 1548v21h245q47 -154 132 -303v-25h-144q-65 63 -132 151.5t-101 155.5z" />
-<glyph unicode="&#xe9;" horiz-adv-x="1075" d="M94 401q0 198 77.5 368.5t210 263.5t296.5 93q161 0 250.5 -72.5t89.5 -205.5q0 -182 -166.5 -284.5t-474.5 -102.5h-43l-2 -31v-29q0 -111 56.5 -174t168.5 -63q72 0 143 19t168 65v-187q-96 -44 -176.5 -62.5t-179.5 -18.5q-197 0 -307.5 111t-110.5 310zM362 633h29 q188 0 294 53.5t106 151.5q0 51 -32 79.5t-95 28.5q-96 0 -180.5 -86t-121.5 -227zM557 1241v25q97 108 225 303h264v-19q-54 -66 -158 -161.5t-175 -147.5h-156z" />
-<glyph unicode="&#xea;" horiz-adv-x="1075" d="M94 401q0 198 77.5 368.5t210 263.5t296.5 93q161 0 250.5 -72.5t89.5 -205.5q0 -182 -166.5 -284.5t-474.5 -102.5h-43l-2 -31v-29q0 -111 56.5 -174t168.5 -63q72 0 143 19t168 65v-187q-96 -44 -176.5 -62.5t-179.5 -18.5q-197 0 -307.5 111t-110.5 310zM362 633h29 q188 0 294 53.5t106 151.5q0 51 -32 79.5t-95 28.5q-96 0 -180.5 -86t-121.5 -227zM320 1241v25q138 128 201 195.5t90 107.5h248q38 -99 174 -303v-25h-152q-76 63 -161 178q-131 -110 -236 -178h-164z" />
-<glyph unicode="&#xeb;" horiz-adv-x="1075" d="M94 401q0 198 77.5 368.5t210 263.5t296.5 93q161 0 250.5 -72.5t89.5 -205.5q0 -182 -166.5 -284.5t-474.5 -102.5h-43l-2 -31v-29q0 -111 56.5 -174t168.5 -63q72 0 143 19t168 65v-187q-96 -44 -176.5 -62.5t-179.5 -18.5q-197 0 -307.5 111t-110.5 310zM362 633h29 q188 0 294 53.5t106 151.5q0 51 -32 79.5t-95 28.5q-96 0 -180.5 -86t-121.5 -227zM388 1380q0 60 35 98t98 38q48 0 76.5 -23.5t28.5 -71.5q0 -65 -35.5 -102t-93.5 -37q-47 0 -78 23.5t-31 74.5zM771 1380q0 60 35 98t98 38q48 0 76.5 -23.5t28.5 -71.5q0 -65 -35.5 -102 t-93.5 -37q-47 0 -78 23.5t-31 74.5z" />
-<glyph unicode="&#xec;" horiz-adv-x="563" d="M47 0l236 1106h235l-235 -1106h-236zM159 1548v21h245q47 -154 132 -303v-25h-144q-65 63 -132 151.5t-101 155.5z" />
-<glyph unicode="&#xed;" horiz-adv-x="563" d="M47 0l236 1106h235l-235 -1106h-236zM308 1241v25q97 108 225 303h264v-19q-54 -66 -158 -161.5t-175 -147.5h-156z" />
-<glyph unicode="&#xee;" horiz-adv-x="563" d="M47 0l236 1106h235l-235 -1106h-236zM64 1241v25q138 128 201 195.5t90 107.5h248q38 -99 174 -303v-25h-152q-76 63 -161 178q-131 -110 -236 -178h-164z" />
-<glyph unicode="&#xef;" horiz-adv-x="563" d="M47 0l236 1106h235l-235 -1106h-236zM142 1380q0 60 35 98t98 38q48 0 76.5 -23.5t28.5 -71.5q0 -65 -35.5 -102t-93.5 -37q-47 0 -78 23.5t-31 74.5zM525 1380q0 60 35 98t98 38q48 0 76.5 -23.5t28.5 -71.5q0 -65 -35.5 -102t-93.5 -37q-47 0 -78 23.5t-31 74.5z" />
-<glyph unicode="&#xf0;" horiz-adv-x="1174" d="M80 389q0 162 65.5 299t184.5 215t266 78q96 0 168 -38.5t113 -108.5h6q-10 243 -133 383l-250 -142l-72 129l219 121q-44 41 -135 96l106 152q129 -72 209 -146l250 138l70 -127l-217 -121q155 -205 155 -512q0 -255 -73 -444.5t-204 -285t-312 -95.5q-197 0 -306.5 107 t-109.5 302zM317 377q0 -104 49 -159.5t142 -55.5q92 0 161.5 59.5t108.5 159t39 205.5q0 97 -52 155t-144 58q-91 0 -160.5 -56t-106.5 -153.5t-37 -212.5z" />
-<glyph unicode="&#xf1;" horiz-adv-x="1208" d="M47 0l236 1106h184l-21 -205h9q83 118 171 171.5t191 53.5q134 0 207.5 -76t73.5 -216q0 -69 -23 -181l-137 -653h-236l142 672q18 90 18 131q0 131 -129 131q-72 0 -142 -57t-126 -164.5t-84 -243.5l-98 -469h-236zM363 1239q57 285 256 285q46 0 85 -17.5t72.5 -38 t63.5 -38t59 -17.5q40 0 65 26.5t48 86.5h137q-66 -285 -260 -285q-45 0 -82.5 17t-71.5 37.5t-65.5 37.5t-63.5 17q-38 0 -63 -27.5t-43 -83.5h-137z" />
-<glyph unicode="&#xf2;" horiz-adv-x="1174" d="M94 408q0 199 71.5 365t200.5 258.5t298 92.5q195 0 305 -116t110 -316q0 -202 -73 -367.5t-200.5 -254t-293.5 -88.5q-192 0 -305 114.5t-113 311.5zM332 403q0 -111 49.5 -170t146.5 -59q90 0 162 68t112 190.5t40 269.5q0 107 -49 167.5t-140 60.5q-93 0 -166.5 -71.5 t-114 -194t-40.5 -261.5zM444 1548v21h245q47 -154 132 -303v-25h-144q-65 63 -132 151.5t-101 155.5z" />
-<glyph unicode="&#xf3;" horiz-adv-x="1174" d="M94 408q0 199 71.5 365t200.5 258.5t298 92.5q195 0 305 -116t110 -316q0 -202 -73 -367.5t-200.5 -254t-293.5 -88.5q-192 0 -305 114.5t-113 311.5zM332 403q0 -111 49.5 -170t146.5 -59q90 0 162 68t112 190.5t40 269.5q0 107 -49 167.5t-140 60.5q-93 0 -166.5 -71.5 t-114 -194t-40.5 -261.5zM580 1241v25q97 108 225 303h264v-19q-54 -66 -158 -161.5t-175 -147.5h-156z" />
-<glyph unicode="&#xf4;" horiz-adv-x="1174" d="M94 408q0 199 71.5 365t200.5 258.5t298 92.5q195 0 305 -116t110 -316q0 -202 -73 -367.5t-200.5 -254t-293.5 -88.5q-192 0 -305 114.5t-113 311.5zM332 403q0 -111 49.5 -170t146.5 -59q90 0 162 68t112 190.5t40 269.5q0 107 -49 167.5t-140 60.5q-93 0 -166.5 -71.5 t-114 -194t-40.5 -261.5zM341 1241v25q138 128 201 195.5t90 107.5h248q38 -99 174 -303v-25h-152q-76 63 -161 178q-131 -110 -236 -178h-164z" />
-<glyph unicode="&#xf5;" horiz-adv-x="1174" d="M94 408q0 199 71.5 365t200.5 258.5t298 92.5q195 0 305 -116t110 -316q0 -202 -73 -367.5t-200.5 -254t-293.5 -88.5q-192 0 -305 114.5t-113 311.5zM332 403q0 -111 49.5 -170t146.5 -59q90 0 162 68t112 190.5t40 269.5q0 107 -49 167.5t-140 60.5q-93 0 -166.5 -71.5 t-114 -194t-40.5 -261.5zM328 1239q57 285 256 285q46 0 85 -17.5t72.5 -38t63.5 -38t59 -17.5q40 0 65 26.5t48 86.5h137q-66 -285 -260 -285q-45 0 -82.5 17t-71.5 37.5t-65.5 37.5t-63.5 17q-38 0 -63 -27.5t-43 -83.5h-137z" />
-<glyph unicode="&#xf6;" horiz-adv-x="1174" d="M94 408q0 199 71.5 365t200.5 258.5t298 92.5q195 0 305 -116t110 -316q0 -202 -73 -367.5t-200.5 -254t-293.5 -88.5q-192 0 -305 114.5t-113 311.5zM332 403q0 -111 49.5 -170t146.5 -59q90 0 162 68t112 190.5t40 269.5q0 107 -49 167.5t-140 60.5q-93 0 -166.5 -71.5 t-114 -194t-40.5 -261.5zM409 1380q0 60 35 98t98 38q48 0 76.5 -23.5t28.5 -71.5q0 -65 -35.5 -102t-93.5 -37q-47 0 -78 23.5t-31 74.5zM792 1380q0 60 35 98t98 38q48 0 76.5 -23.5t28.5 -71.5q0 -65 -35.5 -102t-93.5 -37q-47 0 -78 23.5t-31 74.5z" />
-<glyph unicode="&#xf7;" d="M117 631v180h936v-180h-936zM459 373q0 64 31.5 99.5t93.5 35.5t94.5 -36t32.5 -99q0 -64 -34.5 -100.5t-92.5 -36.5t-91.5 35.5t-33.5 101.5zM459 1071q0 64 31.5 99.5t93.5 35.5t94.5 -36t32.5 -99q0 -64 -34.5 -100.5t-92.5 -36.5t-91.5 35.5t-33.5 101.5z" />
-<glyph unicode="&#xf8;" horiz-adv-x="1174" d="M51 6l115 141q-70 104 -70 261q0 200 70.5 365t199.5 258t298 93q136 0 239 -61l86 108l125 -96l-100 -117q63 -100 63 -258q0 -208 -74 -376t-200.5 -255t-288.5 -87q-137 0 -235 59l-105 -131zM324 426q0 -39 8 -74l442 549q-45 35 -121 35q-141 0 -235 -145.5 t-94 -364.5zM408 201q41 -33 120 -33q89 0 163 66.5t116.5 184t42.5 257.5q0 45 -6 67z" />
-<glyph unicode="&#xf9;" horiz-adv-x="1208" d="M111 274q0 63 12 124.5t24 123.5l123 584h236l-129 -610q-31 -141 -31 -193q0 -133 127 -133q72 0 143 57t126 162.5t85 247.5l99 469h233l-233 -1106h-185l21 205h-8q-82 -116 -171 -170.5t-192 -54.5q-134 0 -207 76t-73 218zM446 1548v21h245q47 -154 132 -303v-25 h-144q-65 63 -132 151.5t-101 155.5z" />
-<glyph unicode="&#xfa;" horiz-adv-x="1208" d="M111 274q0 63 12 124.5t24 123.5l123 584h236l-129 -610q-31 -141 -31 -193q0 -133 127 -133q72 0 143 57t126 162.5t85 247.5l99 469h233l-233 -1106h-185l21 205h-8q-82 -116 -171 -170.5t-192 -54.5q-134 0 -207 76t-73 218zM623 1241v25q97 108 225 303h264v-19 q-54 -66 -158 -161.5t-175 -147.5h-156z" />
-<glyph unicode="&#xfb;" horiz-adv-x="1208" d="M111 274q0 63 12 124.5t24 123.5l123 584h236l-129 -610q-31 -141 -31 -193q0 -133 127 -133q72 0 143 57t126 162.5t85 247.5l99 469h233l-233 -1106h-185l21 205h-8q-82 -116 -171 -170.5t-192 -54.5q-134 0 -207 76t-73 218zM370 1241v25q138 128 201 195.5t90 107.5 h248q38 -99 174 -303v-25h-152q-76 63 -161 178q-131 -110 -236 -178h-164z" />
-<glyph unicode="&#xfc;" horiz-adv-x="1208" d="M111 274q0 63 12 124.5t24 123.5l123 584h236l-129 -610q-31 -141 -31 -193q0 -133 127 -133q72 0 143 57t126 162.5t85 247.5l99 469h233l-233 -1106h-185l21 205h-8q-82 -116 -171 -170.5t-192 -54.5q-134 0 -207 76t-73 218zM432 1380q0 60 35 98t98 38 q48 0 76.5 -23.5t28.5 -71.5q0 -65 -35.5 -102t-93.5 -37q-47 0 -78 23.5t-31 74.5zM815 1380q0 60 35 98t98 38q48 0 76.5 -23.5t28.5 -71.5q0 -65 -35.5 -102t-93.5 -37q-47 0 -78 23.5t-31 74.5z" />
-<glyph unicode="&#xfd;" horiz-adv-x="1004" d="M-170 -285q75 -16 125 -16q74 0 134 43.5t124 155.5l51 92l-164 1116h232l63 -531q9 -62 16 -174.5t7 -181.5h6q86 215 135 313l293 574h254l-688 -1280q-90 -165 -196 -241.5t-249 -76.5q-76 0 -143 19v188zM501 1241v25q97 108 225 303h264v-19q-54 -66 -158 -161.5 t-175 -147.5h-156z" />
-<glyph unicode="&#xfe;" horiz-adv-x="1200" d="M-55 -492l432 2048h235q-48 -223 -73 -339t-76 -291h8q155 200 328 200q144 0 224.5 -102t80.5 -287q0 -204 -68 -381.5t-184.5 -276.5t-265.5 -99q-94 0 -165 45.5t-114 130.5h-8q-7 -91 -25 -185l-96 -463h-233zM369 373q0 -98 46 -150.5t132 -52.5t159.5 77t116.5 209 t43 277q0 100 -41 150.5t-118 50.5q-84 0 -163 -81t-127 -213.5t-48 -266.5z" />
-<glyph unicode="&#xff;" horiz-adv-x="1004" d="M-170 -285q75 -16 125 -16q74 0 134 43.5t124 155.5l51 92l-164 1116h232l63 -531q9 -62 16 -174.5t7 -181.5h6q86 215 135 313l293 574h254l-688 -1280q-90 -165 -196 -241.5t-249 -76.5q-76 0 -143 19v188zM323 1380q0 60 35 98t98 38q48 0 76.5 -23.5t28.5 -71.5 q0 -65 -35.5 -102t-93.5 -37q-47 0 -78 23.5t-31 74.5zM706 1380q0 60 35 98t98 38q48 0 76.5 -23.5t28.5 -71.5q0 -65 -35.5 -102t-93.5 -37q-47 0 -78 23.5t-31 74.5z" />
-<glyph unicode="&#x131;" horiz-adv-x="563" d="M47 0l236 1106h235l-235 -1106h-236z" />
-<glyph unicode="&#x152;" horiz-adv-x="1798" d="M135 543q0 267 98.5 487.5t269.5 337.5t388 117q145 0 223 -23h760l-43 -205h-539l-84 -395h504l-43 -200h-504l-96 -459h539l-43 -203h-717q-84 -20 -170 -20q-259 0 -401 149.5t-142 413.5zM383 545q0 -173 81.5 -267t227.5 -94q74 0 139 27l222 1038q-68 31 -181 31 q-138 0 -250 -96t-175.5 -266.5t-63.5 -372.5z" />
-<glyph unicode="&#x153;" horiz-adv-x="1788" d="M94 410q0 206 73.5 372.5t201 254t293.5 87.5q237 0 335 -192q73 91 174 142.5t226 51.5q159 0 246.5 -74.5t87.5 -203.5q0 -183 -165.5 -285t-471.5 -102h-47l-3 -60q0 -111 56.5 -174t169.5 -63q69 0 134.5 17.5t176.5 66.5v-189q-91 -43 -175 -61t-181 -18 q-120 0 -212.5 46t-140.5 138q-137 -182 -374 -182q-186 0 -295 115.5t-109 312.5zM332 412q0 -116 48.5 -177t139.5 -61q143 0 229.5 146.5t86.5 381.5q0 111 -49.5 169.5t-139.5 58.5q-87 0 -157.5 -64t-114 -186.5t-43.5 -267.5zM1073 633h31q189 0 294 54t105 155 q0 48 -30 76t-87 28q-105 0 -192 -85.5t-121 -227.5z" />
-<glyph unicode="&#x178;" horiz-adv-x="1092" d="M186 1462h242l154 -669l432 669h266l-623 -913l-114 -549h-238l119 553zM440 1718q0 60 35 98t98 38q48 0 76.5 -23.5t28.5 -71.5q0 -65 -35.5 -102t-93.5 -37q-47 0 -78 23.5t-31 74.5zM823 1718q0 60 35 98t98 38q48 0 76.5 -23.5t28.5 -71.5q0 -65 -35.5 -102 t-93.5 -37q-47 0 -78 23.5t-31 74.5z" />
-<glyph unicode="&#x2c6;" horiz-adv-x="1135" d="M354 1241v25q138 128 201 195.5t90 107.5h248q38 -99 174 -303v-25h-152q-76 63 -161 178q-131 -110 -236 -178h-164z" />
-<glyph unicode="&#x2da;" horiz-adv-x="1182" d="M541 1464q0 103 65 164.5t168 61.5q104 0 171 -60.5t67 -163.5q0 -104 -66 -165.5t-172 -61.5t-169.5 61t-63.5 164zM670 1464q0 -49 26.5 -76.5t77.5 -27.5q47 0 77 27.5t30 76.5q0 50 -30 78.5t-77 28.5q-45 0 -74.5 -28.5t-29.5 -78.5z" />
-<glyph unicode="&#x2dc;" horiz-adv-x="1135" d="M326 1239q57 285 256 285q46 0 85 -17.5t72.5 -38t63.5 -38t59 -17.5q40 0 65 26.5t48 86.5h137q-66 -285 -260 -285q-45 0 -82.5 17t-71.5 37.5t-65.5 37.5t-63.5 17q-38 0 -63 -27.5t-43 -83.5h-137z" />
-<glyph unicode="&#x2000;" horiz-adv-x="953" />
-<glyph unicode="&#x2001;" horiz-adv-x="1907" />
-<glyph unicode="&#x2002;" horiz-adv-x="953" />
-<glyph unicode="&#x2003;" horiz-adv-x="1907" />
-<glyph unicode="&#x2004;" horiz-adv-x="635" />
-<glyph unicode="&#x2005;" horiz-adv-x="476" />
-<glyph unicode="&#x2006;" horiz-adv-x="317" />
-<glyph unicode="&#x2007;" horiz-adv-x="317" />
-<glyph unicode="&#x2008;" horiz-adv-x="238" />
-<glyph unicode="&#x2009;" horiz-adv-x="381" />
-<glyph unicode="&#x200a;" horiz-adv-x="105" />
-<glyph unicode="&#x2010;" horiz-adv-x="649" d="M47 446l45 203h502l-45 -203h-502z" />
-<glyph unicode="&#x2011;" horiz-adv-x="649" d="M47 446l45 203h502l-45 -203h-502z" />
-<glyph unicode="&#x2012;" horiz-adv-x="649" d="M47 446l45 203h502l-45 -203h-502z" />
-<glyph unicode="&#x2013;" horiz-adv-x="983" d="M47 453l43 194h838l-43 -194h-838z" />
-<glyph unicode="&#x2014;" horiz-adv-x="1966" d="M47 453l43 194h1821l-43 -194h-1821z" />
-<glyph unicode="&#x2018;" horiz-adv-x="393" d="M119 983q34 76 106.5 209t159.5 270h176q-122 -286 -199 -501h-237z" />
-<glyph unicode="&#x2019;" horiz-adv-x="393" d="M115 961q43 95 106 255t92 246h238l8 -22q-37 -83 -110.5 -217.5t-155.5 -261.5h-178z" />
-<glyph unicode="&#x201a;" horiz-adv-x="530" d="M-102 -264q105 238 200 502h236l8 -23q-108 -233 -266 -479h-178z" />
-<glyph unicode="&#x201c;" horiz-adv-x="803" d="M119 983q34 76 106.5 209t159.5 270h176q-122 -286 -199 -501h-237zM526 983q84 190 267 479h176q-122 -286 -199 -501h-235z" />
-<glyph unicode="&#x201d;" horiz-adv-x="803" d="M115 961q43 95 106 255t92 246h238l8 -22q-37 -83 -110.5 -217.5t-155.5 -261.5h-178zM522 961q51 114 109 261t90 240h237l9 -22q-98 -220 -269 -479h-176z" />
-<glyph unicode="&#x201e;" horiz-adv-x="938" d="M-102 -264q105 238 200 502h236l8 -23q-108 -233 -266 -479h-178zM307 -264q120 281 199 502h235l9 -23q-92 -206 -267 -479h-176z" />
-<glyph unicode="&#x2022;" horiz-adv-x="756" d="M152 684q0 156 83.5 252t223.5 96q100 0 158.5 -54.5t58.5 -168.5q0 -156 -82 -252t-227 -96q-102 0 -158.5 57.5t-56.5 165.5z" />
-<glyph unicode="&#x2026;" horiz-adv-x="1634" d="M834 94q0 83 47 132.5t131 49.5q56 0 89.5 -31.5t33.5 -92.5q0 -78 -47.5 -129.5t-124.5 -51.5q-66 0 -97.5 35.5t-31.5 87.5zM594 94q0 83 47 132.5t131 49.5q56 0 89.5 -31.5t33.5 -92.5q0 -78 -47.5 -129.5t-124.5 -51.5q-66 0 -97.5 35.5t-31.5 87.5zM293 94 q0 83 47 132.5t131 49.5q56 0 89.5 -31.5t33.5 -92.5q0 -78 -47.5 -129.5t-124.5 -51.5q-66 0 -97.5 35.5t-31.5 87.5z" />
-<glyph unicode="&#x202f;" horiz-adv-x="381" />
-<glyph unicode="&#x2039;" horiz-adv-x="621" d="M80 549v24l395 422l135 -118l-288 -334l153 -367l-178 -76z" />
-<glyph unicode="&#x203a;" horiz-adv-x="621" d="M10 211l289 334l-154 366l179 76l217 -448v-25l-396 -422z" />
-<glyph unicode="&#x2044;" horiz-adv-x="262" d="M-510 0l1085 1462h195l-1083 -1462h-197z" />
-<glyph unicode="&#x205f;" horiz-adv-x="476" />
-<glyph unicode="&#x2074;" horiz-adv-x="745" d="M70 762l26 137l477 569h197l-121 -563h123l-29 -143h-122l-39 -176h-183l39 176h-368zM268 905h199l52 221l34 129q-32 -51 -98 -131z" />
-<glyph unicode="&#x20ac;" d="M51 492l33 155h139q15 95 27 139h-137l32 154h148q92 260 255.5 401.5t371.5 141.5q88 0 164.5 -22t156.5 -77l-102 -180q-54 34 -107 56t-119 22q-118 0 -214.5 -87t-161.5 -255h387l-33 -154h-402q-18 -67 -28 -139h340l-33 -155h-319q0 -161 60.5 -234.5t195.5 -73.5 q120 0 258 60v-203q-129 -61 -306 -61q-216 0 -330 130t-114 382h-162z" />
-<glyph unicode="&#x2122;" horiz-adv-x="1534" d="M113 1335v127h540v-127h-198v-594h-146v594h-196zM709 741v721h215l170 -534l182 534h205v-721h-146v418l4 121h-6l-184 -539h-119l-178 539h-6l4 -115v-424h-141z" />
-<glyph unicode="&#xe000;" horiz-adv-x="1105" d="M0 1105h1105v-1105h-1105v1105z" />
-<glyph unicode="&#xfb01;" horiz-adv-x="1257" d="M-225 -279q64 -20 114 -20q134 0 177 205l217 1022h-179l21 106l194 76l21 92q44 198 134.5 281.5t256.5 83.5q115 0 211 -43l-61 -176q-74 28 -136 28q-69 0 -110.5 -43t-63.5 -141l-18 -86h229l-37 -178h-229l-223 -1053q-40 -189 -131 -278t-238 -89q-90 0 -149 23 v190zM739 0l236 1106h235l-235 -1106h-236zM1022 1378q0 68 39 110t110 42q53 0 86 -26.5t33 -80.5q0 -71 -40 -112t-105 -41q-53 0 -88 26t-35 82z" />
-<glyph unicode="&#xfb02;" horiz-adv-x="1257" d="M-225 -279q64 -20 114 -20q134 0 177 205l217 1022h-179l21 106l194 76l21 92q44 198 134.5 281.5t256.5 83.5q115 0 211 -43l-61 -176q-74 28 -136 28q-69 0 -110.5 -43t-63.5 -141l-18 -86h229l-37 -178h-229l-223 -1053q-40 -189 -131 -278t-238 -89q-90 0 -149 23 v190zM739 0l330 1556h235l-331 -1556h-234z" />
-<glyph unicode="&#xfb03;" horiz-adv-x="1931" d="M-225 -279q64 -20 114 -20q133 0 177 205l217 1022h-179l21 106l194 76l21 92q44 198 134.5 281.5t256.5 83.5q115 0 211 -43l-61 -176q-74 28 -136 28q-69 0 -110.5 -43t-63.5 -141l-18 -86h438l23 96q44 197 133 281t256 84q117 0 213 -43l-62 -176q-74 28 -135 28 q-71 0 -111.5 -43t-62.5 -141l-18 -86h229l-39 -178h-227l-223 -1053q-43 -192 -133.5 -279.5t-235.5 -87.5q-95 0 -149 23v190q60 -20 114 -20q136 0 176 205l215 1022h-438l-223 -1053q-40 -189 -131 -278t-238 -89q-90 0 -149 23v190zM1415 0l236 1106h233l-235 -1106 h-234zM1698 1378q0 68 39 110t108 42q54 0 86.5 -26.5t32.5 -80.5q0 -71 -39.5 -112t-105.5 -41q-51 0 -86 26t-35 82z" />
-<glyph unicode="&#xfb04;" horiz-adv-x="1931" d="M-225 -279q64 -20 114 -20q133 0 177 205l217 1022h-179l21 106l194 76l21 92q44 198 134.5 281.5t256.5 83.5q115 0 211 -43l-61 -176q-74 28 -136 28q-69 0 -110.5 -43t-63.5 -141l-18 -86h438l23 96q44 197 133 281t256 84q117 0 213 -43l-62 -176q-74 28 -135 28 q-71 0 -111.5 -43t-62.5 -141l-18 -86h229l-39 -178h-227l-223 -1053q-43 -192 -133.5 -279.5t-235.5 -87.5q-95 0 -149 23v190q60 -20 114 -20q136 0 176 205l215 1022h-438l-223 -1053q-40 -189 -131 -278t-238 -89q-90 0 -149 23v190zM1413 0l332 1556h233l-329 -1556 h-236z" />
-</font>
-</defs></svg> \ No newline at end of file
diff --git a/admin/survey/Fonts/OpenSans/OpenSans-SemiboldItalic-webfont.ttf b/admin/survey/Fonts/OpenSans/OpenSans-SemiboldItalic-webfont.ttf
deleted file mode 100644
index 61d58bf..0000000
--- a/admin/survey/Fonts/OpenSans/OpenSans-SemiboldItalic-webfont.ttf
+++ /dev/null
Binary files differ
diff --git a/admin/survey/Fonts/OpenSans/OpenSans-SemiboldItalic-webfont.woff b/admin/survey/Fonts/OpenSans/OpenSans-SemiboldItalic-webfont.woff
deleted file mode 100644
index 611b390..0000000
--- a/admin/survey/Fonts/OpenSans/OpenSans-SemiboldItalic-webfont.woff
+++ /dev/null
Binary files differ
diff --git a/admin/survey/Fonts/PTSans/PTC55F_W.eot b/admin/survey/Fonts/PTSans/PTC55F_W.eot
deleted file mode 100644
index 968d6e4..0000000
--- a/admin/survey/Fonts/PTSans/PTC55F_W.eot
+++ /dev/null
Binary files differ
diff --git a/admin/survey/Fonts/PTSans/PTC55F_W.svg b/admin/survey/Fonts/PTSans/PTC55F_W.svg
deleted file mode 100644
index c22a83d..0000000
--- a/admin/survey/Fonts/PTSans/PTC55F_W.svg
+++ /dev/null
@@ -1,728 +0,0 @@
-<?xml version="1.0" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
-<svg xmlns="http://www.w3.org/2000/svg">
-<metadata>
-Generated by SVGconv.
-Copyright : Copyright 2009 ParaType Ltd. All rights reserved.
-Designer : A.Korolkova, O.Umpeleva, V.Yefimov
-Foundry : ParaType Ltd
-Foundry URL : http://www.paratype.com
-</metadata>
-<defs>
-<font id="PTSans-Caption" horiz-adv-x="591" >
-<font-face units-per-em="1000" ascent="1018" descent="276" />
-<missing-glyph horiz-adv-x="750" />
-<glyph unicode="&#32;" horiz-adv-x="291" />
-<glyph unicode="&#33;" horiz-adv-x="331" d="M133 700h100v-343l-20 -173h-60l-20 173zM115 51q0 29 18.5 46q18.5 17 48.5 17q30 0 48.5 -17q18.5 -17 18.5 -46q0 -27 -18.5 -45q-18.5 -18 -48.5 -18q-30 0 -48.5 18t-18.5 45z" />
-<glyph unicode="&#34;" horiz-adv-x="375" d="M98 700h92l-35 -198h-57zM228 700h92l-35 -198l-57 0z" />
-<glyph unicode="&#35;" horiz-adv-x="594" d="M305 221h-113l-42 -164h-81l42 164h-85l17 72h87l32 124h-81l17 72h83l40 154h81l-40 -154h113l40 154h81l-40 -154h83l-19 -72h-83l-32 -124h79l-19 -72h-79l-43 -164h-80zM211 293h113l32 124l-113 0z" />
-<glyph unicode="&#36;" horiz-adv-x="594" d="M263 -13q-61 2 -108 11.5q-47 9.5 -75 23.5l31 84q23 -12 60.5 -22.5q37.5 -10.5 91.5 -12.5l0 250q-33 14 -65.5 30.5q-32.5 16.5 -58 40q-25.5 23.5 -41 56q-15.5 32.5 -15.5 78.5q0 78 45 125.5q45 47.5 135 58.5l0 90h79v-88q55 -2 91 -10q36 -8 65 -21v-82q-49 10 -80 18q-31 8 -76 11l0 -229q34 -15 68 -32.5q34 -17.5 61 -41.5q27 -24 43.5 -56q16.5 -32 16.5 -77q0 -83 -48.5 -134.5q-48.5 -51.5 -140.5 -65.5l0 -92h-79zM320 73q51 6 82 32.5q31 26.5 31 76.5q0 22 -9 39q-9 17 -24.5 30.5q-15.5 13.5 -36 24.5q-20.5 11 -43.5 21zM285 628q-58 -5 -81 -31.5q-23 -26.5 -23 -63.5q0 -40 30 -64.5q30 -24.5 74 -44.5z" />
-<glyph unicode="&#37;" horiz-adv-x="854" d="M74 542q0 44 13 76q13 32 36 53q23 21 54.5 31q31.5 10 68.5 10q37 0 68.5 -9.5q31.5 -9.5 55 -29.5q23.5 -20 36.5 -52.5q13 -32.5 13 -78.5q0 -46 -13 -78.5q-13 -32.5 -36.5 -52.5q-23.5 -20 -55 -29.5q-31.5 -9.5 -68.5 -9.5q-37 0 -68.5 9.5q-31.5 9.5 -54.5 29.5q-23 20 -36 52.5q-13 32.5 -13 78.5zt0 0zM162 542q0 -54 21.5 -79.5q21.5 -25.5 62.5 -25.5q40 0 62.5 23q22.5 23 22.5 82q0 60 -22 82.5q-22 22.5 -63 22.5q-40 0 -62 -22.5q-22 -22.5 -22 -82.5zt0 0zM473 170q0 44 13 76q13 32 36 53q23 21 54.5 31q31.5 10 68.5 10q37 0 68.5 -9.5q31.5 -9.5 55 -29.5q23.5 -20 36.5 -52.5q13 -32.5 13 -78.5q0 -46 -13 -78.5q-13 -32.5 -36.5 -52.5q-23.5 -20 -55 -29.5q-31.5 -9.5 -68.5 -9.5q-37 0 -68.5 9.5q-31.5 9.5 -54.5 29.5q-23 20 -36 52.5q-13 32.5 -13 78.5zt0 0zM561 170q0 -54 21.5 -79.5q21.5 -25.5 62.5 -25.5q40 0 62.5 23q22.5 23 22.5 82q0 60 -22 82.5q-22 22.5 -63 22.5q-40 0 -62 -22.5q-22 -22.5 -22 -82.5zt0 0zM704 713l58 -48l-572 -678l-57 49z" />
-<glyph unicode="&#38;" horiz-adv-x="891" d="M125 189q0 40 15 75.5q15 35.5 40.5 67q25.5 31.5 59 57.5q33.5 26 70.5 46q-26 35 -44.5 70.5q-18.5 35.5 -18.5 76.5q0 24 9 47.5q9 23.5 28.5 42q19.5 18.5 50.5 30q31 11.5 75 11.5q46 0 77.5 -11q31.5 -11 50.5 -28.5q19 -17.5 27 -39.5q8 -22 8 -44q0 -41 -34.5 -86q-34.5 -45 -111.5 -84q38 -58 89 -116q51 -58 104 -108q12 12 24.5 30q12.5 18 23.5 39q11 21 21 42.5q10 21.5 17 41.5l72 -37q-6 -17 -18 -40q-12 -23 -26.5 -46.5q-14.5 -23.5 -29.5 -45q-15 -21.5 -28 -36.5q22 -19 39.5 -32.5q17.5 -13.5 33 -23.5q15.5 -10 29.5 -18q14 -8 29 -15l-56 -68q-28 14 -61.5 37q-33.5 23 -68.5 55q-20 -18 -43.5 -34.5q-23.5 -16.5 -53 -29q-29.5 -12.5 -65.5 -20.5q-36 -8 -79 -8q-52 0 -98 13.5q-46 13.5 -81 39.5q-35 26 -55.5 63.5q-20.5 37.5 -20.5 85.5zt0 0zM563 136q-30 28 -60.5 61q-30.5 33 -57.5 65.5q-27 32.5 -50.5 62.5q-23.5 30 -40.5 53q-59 -40 -96.5 -83.5q-37.5 -43.5 -37.5 -101.5q0 -29 14 -52.5q14 -23.5 37.5 -40q23.5 -16.5 55 -25q31.5 -8.5 66.5 -8.5q26 0 51.5 6q25.5 6 48 15.5q22.5 9.5 40.5 22q18 12.5 30 25.5zt0 0zM342 580q0 -28 12.5 -55.5q12.5 -27.5 33.5 -56.5q56 32 78.5 58q22.5 26 22.5 46q0 32 -16.5 50.5q-16.5 18.5 -58.5 18.5q-38 0 -55 -16.5t-17 -44.5z" />
-<glyph unicode="&#39;" horiz-adv-x="244" d="M98 700h92l-35 -198l-57 0z" />
-<glyph unicode="&#40;" horiz-adv-x="314" d="M249 -220q-51 48 -85.5 105.5q-34.5 57.5 -56.5 118q-22 60.5 -31.5 122q-9.5 61.5 -9.5 117.5q0 55 9.5 116q9.5 61 31.5 122.5q22 61.5 57.5 120.5q35.5 59 87.5 110l58 -43q-43 -50 -72 -103.5q-29 -53.5 -46 -108q-17 -54.5 -24.5 -109q-7.5 -54.5 -7.5 -105.5q0 -48 8.5 -103q8.5 -55 27 -110.5q18.5 -55.5 47 -108.5q28.5 -53 68.5 -96z" />
-<glyph unicode="&#41;" horiz-adv-x="314" d="M3 -175q40 43 68.5 96q28.5 53 47 108.5q18.5 55.5 27 110.5q8.5 55 8.5 103q0 51 -7.5 105.5q-7.5 54.5 -24.5 109q-17 54.5 -46 108q-29 53.5 -72 103.5l58 43q52 -51 87.5 -110q35.5 -59 57.5 -120.5q22 -61.5 31.5 -122.5q9.5 -61 9.5 -116q0 -56 -9.5 -117.5q-9.5 -61.5 -31.5 -122q-22 -60.5 -56.5 -118q-34.5 -57.5 -85.5 -105.5z" />
-<glyph unicode="&#42;" horiz-adv-x="387" d="M144 724l28 -44l19 -59l21 58l27 45l54 -30l-29 -47l-50 -49l74 14h53v-63h-51l-69 14l50 -50l25 -41l-53 -31l-28 45l-25 63l-19 -60l-27 -45l-57 31l30 45l46 43l-63 -14h-55v63h55l68 -14l-50 47l-29 48z" />
-<glyph unicode="&#43;" horiz-adv-x="554" d="M43 379h191v190h86v-190h191v-84h-191v-191h-86v191l-191 0z" />
-<glyph unicode="&#44;" horiz-adv-x="225" d="M59 47q0 26 19 42.5q19 16.5 46 16.5q35 0 57 -23.5q22 -23.5 22 -65.5q0 -39 -11.5 -67.5q-11.5 -28.5 -29.5 -49q-18 -20.5 -39.5 -32.5q-21.5 -12 -42.5 -18l-28 46q38 13 57.5 41.5q19.5 28.5 18.5 57.5q-27 -8 -48 6t-21 46z" />
-<glyph unicode="&#45;" horiz-adv-x="394" d="M64 332h266v-86l-266 0z" />
-<glyph unicode="&#46;" horiz-adv-x="238" d="M52 51q0 29 18.5 46q18.5 17 48.5 17q30 0 48.5 -17q18.5 -17 18.5 -46q0 -27 -18.5 -45q-18.5 -18 -48.5 -18q-30 0 -48.5 18t-18.5 45z" />
-<glyph unicode="&#47;" horiz-adv-x="396" d="M360 712l74 -34l-399 -818l-73 36z" />
-<glyph unicode="&#48;" horiz-adv-x="594" d="M44 350q0 175 64 269q64 94 189 94q132 0 193 -93q61 -93 61 -270q0 -174 -65 -268.5q-65 -94.5 -190 -94.5q-66 0 -113.5 26q-47.5 26 -78 73.5q-30.5 47.5 -45.5 114.5q-15 67 -15 149zt0 0zM142 350q0 -61 9 -112.5q9 -51.5 27.5 -89.5q18.5 -38 48 -59.5q29.5 -21.5 70.5 -21.5q81 0 118.5 70q37.5 70 37.5 213q0 61 -8 112.5q-8 51.5 -26.5 89.5q-18.5 38 -48.5 59.5q-30 21.5 -73 21.5q-81 0 -118 -71t-37 -212z" />
-<glyph unicode="&#49;" horiz-adv-x="594" d="M113 84h152v465l12 61l-44 -50l-119 -80l-42 59l241 173h44v-628h150v-84l-394 0z" />
-<glyph unicode="&#50;" horiz-adv-x="594" d="M489 536q0 -51 -21 -104.5q-21 -53.5 -54.5 -106.5q-33.5 -53 -75 -105q-41.5 -52 -83.5 -100l-54 -43v-4l72 11h233v-84h-441v36q24 23 57.5 56.5q33.5 33.5 70 74q36.5 40.5 72 85.5q35.5 45 63.5 91.5q28 46.5 45.5 91.5q17.5 45 17.5 85q0 47 -29 78q-29 31 -89 31q-42 0 -81 -16q-39 -16 -67 -39l-41 67q41 33 93 52.5q52 19.5 115 19.5q93 0 145 -48.5t52 -128.5z" />
-<glyph unicode="&#51;" horiz-adv-x="594" d="M255 69q37 0 68 10q31 10 53 28q22 18 34.5 43q12.5 25 12.5 55q0 66 -44 98q-44 32 -125 32h-81v38l153 208l52 44l-74 -9h-210v84h395v-39l-169 -227l-40 -29v-3l38 7q43 -1 79.5 -15q36.5 -14 63.5 -39.5q27 -25.5 42 -61q15 -35.5 15 -79.5q0 -56 -21 -98q-21 -42 -57 -71q-36 -29 -84 -43.5q-48 -14.5 -103 -14.5q-49 0 -90 7.5q-41 7.5 -71 20.5l25 82q26 -12 60.5 -20t77.5 -8z" />
-<glyph unicode="&#52;" horiz-adv-x="594" d="M576 211h-128v-211h-92v211h-337v42l362 457h67v-421h128zM356 492l9 80h-3l-37 -65l-148 -179l-53 -47l75 8l157 0z" />
-<glyph unicode="&#53;" horiz-adv-x="594" d="M106 90q25 -9 53.5 -14q28.5 -5 72.5 -5q75 0 123 36.5q48 36.5 48 107.5q0 69 -48.5 103.5q-48.5 34.5 -134.5 34.5l-91 -4v351h347v-88h-259v-181l47 2q54 0 97 -15q43 -15 73.5 -42q30.5 -27 47 -66.5q16.5 -39.5 16.5 -89.5q0 -57 -21 -100.5q-21 -43.5 -57.5 -73q-36.5 -29.5 -85.5 -44.5q-49 -15 -105 -15q-48 0 -83.5 6q-35.5 6 -65.5 17l26 80z" />
-<glyph unicode="&#54;" horiz-adv-x="594" d="M540 212q0 -44 -16 -84.5q-16 -40.5 -46 -72q-30 -31.5 -74 -50q-44 -18.5 -100 -18.5q-54 0 -98.5 17q-44.5 17 -76.5 49q-32 32 -49.5 79q-17.5 47 -17.5 107q0 96 28 178.5q28 82.5 77.5 145.5q49.5 63 117 102q67.5 39 147.5 48l19 -76q-60 -8 -109.5 -35.5q-49.5 -27.5 -87 -67q-37.5 -39.5 -61.5 -88q-24 -48.5 -32 -98.5q9 13 23.5 26q14.5 13 34.5 23q20 10 45 16q25 6 54 6q51 0 92.5 -14.5q41.5 -14.5 70 -41.5q28.5 -27 44 -65q15.5 -38 15.5 -86zt0 0zM445 205q0 66 -36.5 100q-36.5 34 -109.5 34q-53 0 -90.5 -23q-37.5 -23 -52.5 -52q-2 -13 -2 -20.5q0 -7.5 0 -17.5q0 -29 9 -57.5q9 -28.5 28 -51q19 -22.5 47.5 -36.5q28.5 -14 66.5 -14q31 0 56.5 11q25.5 11 44 30q18.5 19 29 44t10.5 53z" />
-<glyph unicode="&#55;" horiz-adv-x="594" d="M115 0l270 573l48 49l-65 -10h-306v88h464v-29l-315 -671z" />
-<glyph unicode="&#56;" horiz-adv-x="594" d="M217 360q-27 15 -50.5 31.5q-23.5 16.5 -41 37.5q-17.5 21 -27.5 47q-10 26 -10 59q0 38 15 70.5q15 32.5 43 56.5q28 24 68 37.5q40 13.5 90 13.5q46 0 83.5 -12q37.5 -12 64 -34q26.5 -22 41 -51.5q14.5 -29.5 14.5 -64.5q0 -57 -28 -100q-28 -43 -93 -83q29 -16 54.5 -33.5q25.5 -17.5 44 -39.5q18.5 -22 29 -49q10.5 -27 10.5 -61q0 -43 -15.5 -79q-15.5 -36 -45.5 -62.5q-30 -26.5 -73.5 -41.5q-43.5 -15 -98.5 -15q-53 0 -93.5 14.5q-40.5 14.5 -69 39q-28.5 24.5 -43 58q-14.5 33.5 -14.5 71.5q0 63 36 108q36 45 110 82zt0 0zM279 329q-64 -32 -91 -71.5q-27 -39.5 -27 -74.5q0 -23 9 -44q9 -21 26 -37q17 -16 42 -25.5q25 -9.5 58 -9.5q27 0 52 7.5q25 7.5 43.5 21.5q18.5 14 29.5 35.5q11 21.5 11 49.5q0 27 -13 48.5q-13 21.5 -34.5 39q-21.5 17.5 -49 32q-27.5 14.5 -56.5 28.5zt0 0zM324 395q46 33 69 66q23 33 23 71q0 24 -9.5 42.5q-9.5 18.5 -25 31.5q-15.5 13 -36.5 20q-21 7 -44 7q-29 0 -51 -8.5q-22 -8.5 -37.5 -22q-15.5 -13.5 -23.5 -30.5q-8 -17 -8 -35q0 -27 12 -48q12 -21 31.5 -37.5q19.5 -16.5 45.5 -30t54 -26.5z" />
-<glyph unicode="&#57;" horiz-adv-x="594" d="M53 487q0 47 15.5 88.5q15.5 41.5 45.5 72q30 30.5 75 48q45 17.5 104 17.5q56 0 100.5 -18q44.5 -18 75.5 -51q31 -33 47.5 -80q16.5 -47 16.5 -106q0 -113 -28.5 -198q-28.5 -85 -79 -143.5q-50.5 -58.5 -118 -90.5q-67.5 -32 -145.5 -39l-20 75q63 7 113 30.5q50 23.5 86 60q36 36.5 59 83q23 46.5 32 100.5q-15 -16 -30.5 -27q-15.5 -11 -34 -17.5q-18.5 -6.5 -41 -9q-22.5 -2.5 -51.5 -2.5q-44 0 -84.5 14q-40.5 14 -71 40q-30.5 26 -48.5 64.5q-18 38.5 -18 88.5zt0 0zM149 494q0 -67 41 -101.5q41 -34.5 106 -34.5q53 0 89.5 17q36.5 17 53.5 41q2 12 2 21q0 9 0 20q0 33 -9 65q-9 32 -27.5 57q-18.5 25 -47.5 40.5q-29 15.5 -69 15.5q-66 0 -102.5 -37.5t-36.5 -103.5z" />
-<glyph unicode="&#58;" horiz-adv-x="273" d="M99 445q0 29 18.5 46q18.5 17 48.5 17q30 0 48.5 -17q18.5 -17 18.5 -46q0 -27 -18.5 -45q-18.5 -18 -48.5 -18q-30 0 -48.5 18q-18.5 18 -18.5 45zt0 0zM99 51q0 29 18.5 46q18.5 17 48.5 17q30 0 48.5 -17q18.5 -17 18.5 -46q0 -27 -18.5 -45q-18.5 -18 -48.5 -18q-30 0 -48.5 18t-18.5 45z" />
-<glyph unicode="&#59;" horiz-adv-x="277" d="M93 47q0 26 19 42.5q19 16.5 46 16.5q35 0 57 -23.5q22 -23.5 22 -65.5q0 -39 -11.5 -67.5q-11.5 -28.5 -29.5 -49q-18 -20.5 -39.5 -32.5q-21.5 -12 -42.5 -18l-28 46q38 13 57.5 41.5q19.5 28.5 18.5 57.5q-27 -8 -48 6q-21 14 -21 46zt0 0zM98 445q0 29 18.5 46q18.5 17 48.5 17q30 0 48.5 -17q18.5 -17 18.5 -46q0 -27 -18.5 -45q-18.5 -18 -48.5 -18q-30 0 -48.5 18t-18.5 45z" />
-<glyph unicode="&#60;" horiz-adv-x="554" d="M44 300v38l419 236l42 -72l-256 -144l-100 -37l99 -32l262 -143l-41 -70z" />
-<glyph unicode="&#61;" horiz-adv-x="554" d="M43 465h468v-84h-468zM43 293h468v-84l-468 0z" />
-<glyph unicode="&#62;" horiz-adv-x="554" d="M510 348v-38l-420 -235l-41 72l256 144l100 37l-99 32l-262 143l40 71z" />
-<glyph unicode="&#63;" horiz-adv-x="479" d="M160 184q-4 50 7.5 86q11.5 36 31.5 64q20 28 44.5 50q24.5 22 46 44q21.5 22 36 47q14.5 25 14.5 58q0 44 -26.5 72q-26.5 28 -92.5 28q-40 0 -81.5 -15q-41.5 -15 -70.5 -32l-32 72q42 26 89 40.5q47 14.5 116 14.5q49 0 86 -13q37 -13 62 -35.5q25 -22.5 37.5 -53q12.5 -30.5 12.5 -65.5q0 -47 -15 -80.5q-15 -33.5 -37 -59.5q-22 -26 -48 -48q-26 -22 -48 -46.5q-22 -24.5 -37 -54.5q-15 -30 -15 -73zM138 51q0 29 18.5 46q18.5 17 48.5 17q30 0 48.5 -17q18.5 -17 18.5 -46q0 -27 -18.5 -45q-18.5 -18 -48.5 -18q-30 0 -48.5 18t-18.5 45z" />
-<glyph unicode="&#64;" horiz-adv-x="1163" d="M770 490h42l-56 -282q-12 -63 -8 -93q4 -30 40 -30q36 0 71.5 17q35.5 17 63 48.5q27.5 31.5 45 76q17.5 44.5 17.5 99.5q0 79 -29 139.5q-29 60.5 -80 101.5q-51 41 -121.5 62q-70.5 21 -152.5 21q-89 0 -166 -31q-77 -31 -134 -85.5q-57 -54.5 -90 -129q-33 -74.5 -33 -162.5q0 -87 29 -157.5q29 -70.5 83.5 -120q54.5 -49.5 132 -76q77.5 -26.5 173.5 -26.5q32 0 71.5 7.5q39.5 7.5 72.5 21.5l23 -75q-48 -20 -90 -27q-42 -7 -92 -7q-104 0 -193 30.5q-89 30.5 -155 88.5q-66 58 -103.5 142.5q-37.5 84.5 -37.5 192.5q0 112 41 203q41 91 111.5 155.5q70.5 64.5 163.5 100q93 35.5 198 35.5q98 0 182.5 -28.5q84.5 -28.5 147 -81q62.5 -52.5 98 -127q35.5 -74.5 35.5 -167.5q0 -62 -24 -119.5q-24 -57.5 -65.5 -102q-41.5 -44.5 -96.5 -71q-55 -26.5 -117 -26.5q-28 0 -49.5 6.5q-21.5 6.5 -35 22q-13.5 15.5 -17.5 41.5q-4 26 3 65l-4 0q-16 -24 -37 -48q-21 -24 -46 -43.5q-25 -19.5 -54.5 -31.5q-29.5 -12 -62.5 -12q-26 0 -49 11q-23 11 -40.5 31.5q-17.5 20.5 -27.5 48.5q-10 28 -10 62q0 60 22.5 120q22.5 60 61.5 108q39 48 90.5 78q51.5 30 108.5 30q40 0 65 -11.5q25 -11.5 48 -27.5zM706 383q-18 19 -36 27q-18 8 -46 8q-42 0 -77.5 -23q-35.5 -23 -61.5 -58.5q-26 -35.5 -41 -78q-15 -42.5 -15 -82.5q0 -36 16.5 -63.5q16.5 -27.5 61.5 -27.5q21 0 44 14q23 14 45.5 37q22.5 23 43 52q20.5 29 36.5 59z" />
-<glyph unicode="&#65;" horiz-adv-x="645" d="M457 183h-277l-74 -183h-98l288 710h52l289 -710h-104zM210 267h218l-81 199l-27 107h-2l-27 -109z" />
-<glyph unicode="&#66;" horiz-adv-x="641" d="M559 538q0 -26 -8.5 -51.5q-8.5 -25.5 -26 -48q-17.5 -22.5 -44.5 -39.5q-27 -17 -64 -25l0 -4q32 -4 62 -16q30 -12 53 -33q23 -21 37 -51q14 -30 14 -71q0 -54 -25 -93.5q-25 -39.5 -66 -65q-41 -25.5 -92.5 -37.5q-51.5 -12 -103.5 -12q-18 0 -44 0.5q-26 0.5 -54.5 2q-28.5 1.5 -57 4q-28.5 2.5 -50.5 7.5l0 689q41 7 96 11q55 4 118 4q43 0 88.5 -7.5q45.5 -7.5 82.5 -26.5q37 -19 61 -52q24 -33 24 -85zt0 0zM187 82q7 -2 21 -3q14 -1 30.5 -2q16.5 -1 33 -1.5q16.5 -0.5 30.5 -0.5q34 0 65.5 7q31.5 7 55.5 22q24 15 38.5 38q14.5 23 14.5 55q0 40 -17.5 63.5q-17.5 23.5 -45.5 36q-28 12.5 -63 16q-35 3.5 -69 3.5h-94zM242 394q19 0 44 1.5q25 1.5 42 3.5q25 7 47.5 17.5q22.5 10.5 39.5 25q17 14.5 27 34q10 19.5 10 44.5q0 34 -13.5 54.5q-13.5 20.5 -35.5 31.5q-22 11 -50 15q-28 4 -57 4q-35 0 -64.5 -1.5q-29.5 -1.5 -44.5 -3.5l0 -226z" />
-<glyph unicode="&#67;" horiz-adv-x="624" d="M584 30q-33 -24 -84 -33.5q-51 -9.5 -108 -9.5q-67 0 -127.5 21.5q-60.5 21.5 -106.5 66q-46 44.5 -73 113q-27 68.5 -27 162.5q0 98 30 167q30 69 78 112.5q48 43.5 108 63.5q60 20 119 20q66 0 108 -7q42 -7 71 -18l-22 -86q-49 23 -149 23q-45 0 -87.5 -14.5q-42.5 -14.5 -76 -47q-33.5 -32.5 -53.5 -85q-20 -52.5 -20 -128.5q0 -68 19 -119.5q19 -51.5 52.5 -86q33.5 -34.5 79 -52q45.5 -17.5 99.5 -17.5q49 0 85 9q36 9 61 23z" />
-<glyph unicode="&#68;" horiz-adv-x="715" d="M89 700q20 3 46.5 4.5q26.5 1.5 55 2.5q28.5 1 56 1.5q27.5 0.5 50.5 0.5q92 0 159.5 -26.5q67.5 -26.5 112 -73.5q44.5 -47 66.5 -112q22 -65 22 -142q0 -70 -20.5 -135.5q-20.5 -65.5 -65.5 -116.5q-45 -51 -115.5 -82q-70.5 -31 -170.5 -31q-17 0 -45.5 1q-28.5 1 -58.5 2q-30 1 -55.5 2.5q-25.5 1.5 -36.5 3.5zM300 621q-14 0 -30 0q-16 0 -32 -1q-16 -1 -29 -2q-13 -1 -20 -2l0 -534q5 -1 19.5 -1.5q14.5 -0.5 30.5 -1q16 -0.5 30 -1q14 -0.5 20 -0.5q75 0 125.5 23.5q50.5 23.5 81 62.5q30.5 39 43 88.5q12.5 49.5 12.5 102.5q0 45 -12 92q-12 47 -41 85.5q-29 38.5 -77 63.5t-121 25z" />
-<glyph unicode="&#69;" horiz-adv-x="585" d="M89 700h423v-86h-323v-213h295v-86h-295v-229h328v-86l-428 0z" />
-<glyph unicode="&#70;" horiz-adv-x="565" d="M89 700h423v-86h-323v-223h300v-86h-300v-305l-100 0z" />
-<glyph unicode="&#71;" horiz-adv-x="668" d="M348 353h262v-309q-18 -14 -43 -24.5q-25 -10.5 -53.5 -17.5q-28.5 -7 -58.5 -11q-30 -4 -59 -4q-72 0 -133.5 21.5q-61.5 21.5 -107 66.5q-45.5 45 -71.5 113.5q-26 68.5 -26 161.5q0 97 31.5 166q31.5 69 81.5 113q50 44 111.5 64q61.5 20 122.5 20q66 0 109.5 -7.5q43.5 -7.5 72.5 -18.5l-24 -85q-52 23 -150 23q-45 0 -89.5 -14q-44.5 -14 -80 -46.5q-35.5 -32.5 -57.5 -85q-22 -52.5 -22 -129.5q0 -71 18.5 -123q18.5 -52 51.5 -86q33 -34 78 -50q45 -16 98 -16q33 0 63.5 6.5q30.5 6.5 53.5 18.5l0 177l-179 18z" />
-<glyph unicode="&#72;" horiz-adv-x="733" d="M544 313h-355v-313h-100v700h100v-299h355v299h100v-700l-100 0z" />
-<glyph unicode="&#73;" horiz-adv-x="398" d="M149 634h-80v66h260v-66h-80v-568h80v-66h-260v66l80 0z" />
-<glyph unicode="&#74;" horiz-adv-x="325" d="M125 700h100v-540q0 -78 -40.5 -124q-40.5 -46 -119.5 -46q-10 0 -23.5 1q-13.5 1 -27.5 3.5q-14 2.5 -27 5.5q-13 3 -22 7l19 83q28 -12 67 -12q45 0 59.5 29q14.5 29 14.5 80z" />
-<glyph unicode="&#75;" horiz-adv-x="669" d="M238 318h-49v-318h-100v700h100v-322l46 14l252 308h114l-252 -300l-47 -34l55 -40l278 -326l-126 0z" />
-<glyph unicode="&#76;" horiz-adv-x="566" d="M547 0h-458v700h100v-612l358 0z" />
-<glyph unicode="&#77;" horiz-adv-x="868" d="M679 451l11 112h-4l-43 -97l-195 -310h-30l-205 311l-41 95h-5l16 -110v-452h-94v700h75l237 -357l37 -76h2l35 78l225 355h79v-700l-100 0z" />
-<glyph unicode="&#78;" horiz-adv-x="735" d="M235 445l-60 98h-4l12 -98v-445h-94v710h56l357 -454l57 -93h5l-12 93v444h94v-710l-56 0z" />
-<glyph unicode="&#79;" horiz-adv-x="747" d="M58 350q0 86 21.5 153.5q21.5 67.5 62 114q40.5 46.5 99 71q58.5 24.5 132.5 24.5q79 0 138.5 -26.5q59.5 -26.5 99 -74q39.5 -47.5 59 -114.5q19.5 -67 19.5 -148q0 -86 -21.5 -153.5q-21.5 -67.5 -62.5 -114q-41 -46.5 -99.5 -71q-58.5 -24.5 -132.5 -24.5q-80 0 -139 26.5q-59 26.5 -98 74q-39 47.5 -58.5 114.5q-19.5 67 -19.5 148zt0 0zM164 350q0 -57 12.5 -107q12.5 -50 38 -88q25.5 -38 65 -60q39.5 -22 93.5 -22q97 0 153.5 67q56.5 67 56.5 210q0 56 -12.5 106q-12.5 50 -38 88q-25.5 38 -65 60.5q-39.5 22.5 -94.5 22.5q-96 0 -152.5 -68t-56.5 -209z" />
-<glyph unicode="&#80;" horiz-adv-x="614" d="M89 693q42 9 91.5 12.5q49.5 3.5 97.5 3.5q51 0 103.5 -9q52.5 -9 95.5 -33q43 -24 70.5 -66.5q27.5 -42.5 27.5 -109.5q0 -63 -25 -107.5q-25 -44.5 -66.5 -72.5q-41.5 -28 -95 -41q-53.5 -13 -110.5 -13q-6 0 -18.5 0.5q-12.5 0.5 -26 1q-13.5 0.5 -26 1.5q-12.5 1 -18.5 2l0 -262h-100zM281 623q-27 0 -52.5 -1q-25.5 -1 -39.5 -5l0 -269q5 -2 16.5 -2.5q11.5 -0.5 24 -1.5q12.5 -1 24 -1q11.5 0 17.5 0q36 0 71 5.5q35 5.5 63.5 21.5q28.5 16 46 45q17.5 29 17.5 75q0 40 -17 66q-17 26 -44 41q-27 15 -60.5 20.5t-66.5 5.5z" />
-<glyph unicode="&#81;" horiz-adv-x="747" d="M771 -181q-26 -7 -52 -9.5q-26 -2.5 -52 -2.5q-55 0 -107.5 10.5q-52.5 10.5 -101 23q-48.5 12.5 -93.5 23q-45 10.5 -85 10.5q-25 0 -49 -6l0 86q30 6 60 6q45 0 90.5 -10.5q45.5 -10.5 92 -22.5q46.5 -12 96 -22.5q49.5 -10.5 103.5 -10.5q23 0 47.5 2.5q24.5 2.5 50.5 8.5zM58 350q0 86 21.5 153.5q21.5 67.5 62 114q40.5 46.5 99 71q58.5 24.5 132.5 24.5q79 0 138.5 -26.5q59.5 -26.5 99 -74q39.5 -47.5 59 -114.5q19.5 -67 19.5 -148q0 -86 -21.5 -153.5q-21.5 -67.5 -62.5 -114q-41 -46.5 -99.5 -71q-58.5 -24.5 -132.5 -24.5q-80 0 -139 26.5q-59 26.5 -98 74q-39 47.5 -58.5 114.5q-19.5 67 -19.5 148zt0 0zM164 350q0 -57 12.5 -107q12.5 -50 38 -88q25.5 -38 65 -60q39.5 -22 93.5 -22q97 0 153.5 67q56.5 67 56.5 210q0 56 -12.5 106q-12.5 50 -38 88q-25.5 38 -65 60.5q-39.5 22.5 -94.5 22.5q-96 0 -152.5 -68t-56.5 -209z" />
-<glyph unicode="&#82;" horiz-adv-x="653" d="M89 693q21 4 46.5 7q25.5 3 51.5 5q26 2 52 3q26 1 49 1q50 0 96.5 -10q46.5 -10 82 -33q35.5 -23 57 -60q21.5 -37 21.5 -91q0 -42 -13 -76q-13 -34 -36 -60q-23 -26 -54.5 -43.5q-31.5 -17.5 -68.5 -26.5l52 -35l188 -274h-115l-208 295l-101 14v-309h-100zM291 623q-14 0 -28.5 0q-14.5 0 -28.5 -1q-14 -1 -26 -2q-12 -1 -19 -3l0 -242h82q36 0 66.5 7.5q30.5 7.5 53 23q22.5 15.5 35.5 40.5q13 25 13 61q0 54 -38 85t-110 31z" />
-<glyph unicode="&#83;" horiz-adv-x="581" d="M433 184q0 41 -27 65q-27 24 -68 41.5q-41 17.5 -88 33q-47 15.5 -88 39.5q-41 24 -68 62q-27 38 -27 99q0 85 62.5 137q62.5 52 178.5 52q67 0 123 -10q56 -10 88 -26l-31 -84q-25 13 -75 23.5q-50 10.5 -110 10.5q-68 0 -102 -29q-34 -29 -34 -67q0 -39 27 -63q27 -24 68 -42.5q41 -18.5 88 -35.5q47 -17 88 -42q41 -25 68 -61.5q27 -36.5 27 -93.5q0 -47 -18 -85q-18 -38 -52 -65q-34 -27 -82 -41.5q-48 -14.5 -109 -14.5q-82 0 -138.5 12.5q-56.5 12.5 -85.5 26.5l33 87q25 -13 75.5 -26.5q50.5 -13.5 111.5 -13.5q35 0 65 6.5q30 6.5 52.5 20q22.5 13.5 35 34.5t12.5 50z" />
-<glyph unicode="&#84;" horiz-adv-x="610" d="M591 612h-236v-612h-100v612h-236v88l572 0z" />
-<glyph unicode="&#85;" horiz-adv-x="710" d="M527 700h94v-457q0 -65 -18.5 -112q-18.5 -47 -52.5 -78.5q-34 -31.5 -80.5 -46.5q-46.5 -15 -103.5 -15q-135 0 -206 58.5q-71 58.5 -71 173.5v477h100v-439q0 -102 44.5 -142q44.5 -40 131.5 -40q84 0 123 44q39 44 39 141z" />
-<glyph unicode="&#86;" horiz-adv-x="628" d="M296 234l26 -109h2l27 111l180 464h100l-290 -710h-50l-294 710l110 0z" />
-<glyph unicode="&#87;" horiz-adv-x="913" d="M247 246l16 -117h2l18 119l155 452h50l156 -454l18 -117h2l19 119l124 452h98l-213 -710h-57l-153 455l-21 106h-5l-20 -107l-153 -454h-58l-217 710l105 0z" />
-<glyph unicode="&#88;" horiz-adv-x="678" d="M280 356l-231 344h119l151 -230l27 -58l26 58l158 230h110l-238 -337l249 -363h-117l-167 244l-31 61l-28 -61l-171 -244l-110 0z" />
-<glyph unicode="&#89;" horiz-adv-x="617" d="M261 274l-254 426h117l175 -297l17 -64h2l19 66l167 295h106l-249 -425v-275l-100 0z" />
-<glyph unicode="&#90;" horiz-adv-x="596" d="M39 88l377 484l49 40h-426v88h518v-88l-380 -487l-47 -37h427v-88l-518 0z" />
-<glyph unicode="&#91;" horiz-adv-x="336" d="M89 700h206v-80h-114v-770h114v-80l-206 0z" />
-<glyph unicode="&#92;" horiz-adv-x="421" d="M442 -103l-76 -37l-402 816l76 36z" />
-<glyph unicode="&#93;" horiz-adv-x="336" d="M247 -230h-206v80h114v770h-114v80l206 0z" />
-<glyph unicode="&#94;" horiz-adv-x="554" d="M266 710h38l188 -280h-98l-85 132l-26 69l-32 -70l-100 -131l-90 0z" />
-<glyph unicode="&#95;" horiz-adv-x="452" d="M0 -131h452v-78l-452 0z" />
-<glyph unicode="&#96;" horiz-adv-x="301" d="M241 570h-54l-127 127v23l110 0z" />
-<glyph unicode="&#97;" horiz-adv-x="582" d="M82 492q90 43 223 43q60 0 96.5 -15.5q36.5 -15.5 56.5 -39.5q20 -24 26.5 -53.5q6.5 -29.5 6.5 -58.5q0 -55 -4 -110.5q-4 -55.5 -4 -120.5q0 -38 3.5 -73.5q3.5 -35.5 11.5 -65.5l-67 0l-25 80h-10q-11 -15 -27 -30.5q-16 -15.5 -38 -27.5q-22 -12 -50.5 -20q-28.5 -8 -65.5 -8q-37 0 -68 10.5q-31 10.5 -53.5 29.5q-22.5 19 -35.5 46.5q-13 27.5 -13 61.5q0 45 19.5 78q19.5 33 50.5 54q31 21 70.5 31q39.5 10 78.5 10q31 0 52.5 -1q21.5 -1 36 -2.5q14.5 -1.5 24.5 -3q10 -1.5 18 -2.5q2 15 3 26q1 11 1 28q0 28 -6 47q-6 19 -19.5 30.5q-13.5 11.5 -36.5 16.5q-23 5 -56 5q-19 0 -42 -3q-23 -3 -46 -8.5q-23 -5.5 -45.5 -13.5q-22.5 -8 -40.5 -17zM395 238q-8 1 -17 3q-9 2 -22.5 3q-13.5 1 -32 2q-18.5 1 -45.5 1q-62 0 -98.5 -22q-36.5 -22 -36.5 -75q0 -40 28.5 -60q28.5 -20 73.5 -20q33 0 58.5 8.5q25.5 8.5 44 21q18.5 12.5 30 28q11.5 15.5 17.5 30.5z" />
-<glyph unicode="&#98;" horiz-adv-x="629" d="M88 700h92v-240h10q23 40 66 59.5q43 19.5 91 19.5q109 0 165.5 -66.5q56.5 -66.5 56.5 -200.5q0 -137 -74 -209q-74 -72 -208 -72q-66 0 -119.5 11q-53.5 11 -79.5 26zM334 461q-32 0 -56.5 -10q-24.5 -10 -43.5 -27.5q-19 -17.5 -32.5 -40q-13.5 -22.5 -21.5 -46.5l0 -249q49 -19 119 -19q79 0 125.5 48.5q46.5 48.5 46.5 155.5q0 40 -8 74.5q-8 34.5 -25 59.5q-17 25 -42.5 39.5t-61.5 14.5z" />
-<glyph unicode="&#99;" horiz-adv-x="529" d="M484 36q-35 -25 -82 -37.5q-47 -12.5 -99 -12.5q-66 0 -112.5 20q-46.5 20 -75.5 56q-29 36 -42 87q-13 51 -13 113q0 133 64.5 205.5q64.5 72.5 185.5 72.5q53 0 92 -9.5q39 -9.5 70 -23.5l-24 -75q-27 14 -58.5 22q-31.5 8 -68.5 8q-163 0 -163 -200q0 -38 9 -73.5q9 -35.5 29 -63q20 -27.5 52.5 -44.5q32.5 -17 79.5 -17q42 0 73.5 11.5q31.5 11.5 52.5 27.5z" />
-<glyph unicode="&#100;" horiz-adv-x="629" d="M538 181q0 -51 1.5 -95.5q1.5 -44.5 9.5 -87.5l-61 0l-23 80h-10q-23 -40 -67.5 -66q-44.5 -26 -103.5 -26q-113 0 -168.5 67q-55.5 67 -55.5 206q0 134 68.5 205.5q68.5 71.5 192.5 71.5q21 0 37.5 -1.5q16.5 -1.5 31 -3.5q14.5 -2 28 -6q13.5 -4 28.5 -8l0 183h92zM446 428q-23 17 -49.5 23.5q-26.5 6.5 -70.5 6.5q-81 0 -125.5 -47q-44.5 -47 -44.5 -153q0 -42 8 -77.5q8 -35.5 25 -61.5q17 -26 45 -40.5q28 -14.5 69 -14.5q61 0 95 30.5q34 30.5 48 90.5z" />
-<glyph unicode="&#101;" horiz-adv-x="598" d="M515 43q-35 -26 -87 -41.5q-52 -15.5 -113 -15.5q-66 0 -114.5 19.5q-48.5 19.5 -79.5 55.5q-31 36 -46 87q-15 51 -15 114q0 135 66.5 206.5q66.5 71.5 189.5 71.5q39 0 78 -8.5q39 -8.5 70 -32q31 -23.5 50.5 -64.5q19.5 -41 19.5 -107q0 -16 -1 -37q-1 -21 -4 -41l-375 0q2 -92 44 -139q42 -47 143 -47q42 0 80 14.5q38 14.5 59 34.5zM446 316q2 80 -32.5 113q-34.5 33 -96.5 33q-70 0 -111 -33q-41 -33 -48 -113z" />
-<glyph unicode="&#102;" horiz-adv-x="364" d="M24 525h89v14q0 49 9 82.5q9 33.5 28.5 54q19.5 20.5 51 29.5q31.5 9 76.5 9q38 0 66.5 -4.5q28.5 -4.5 59.5 -15.5l-20 -75q-26 11 -48.5 14q-22.5 3 -43.5 3q-28 0 -45 -5q-17 -5 -26.5 -17.5q-9.5 -12.5 -12.5 -34q-3 -21.5 -3 -54.5l154 0v-78h-154v-447h-92v447l-89 0z" />
-<glyph unicode="&#103;" horiz-adv-x="627" d="M537 -3q0 -103 -60.5 -153.5q-60.5 -50.5 -177.5 -50.5q-68 0 -110 8q-42 8 -72 22l22 83q13 -6 30 -12.5q17 -6.5 36 -11.5q19 -5 38.5 -8q19.5 -3 37.5 -3q49 0 81 8.5q32 8.5 51 26.5q19 18 26 46q7 28 7 67v37h-11q-16 -26 -56 -42q-40 -16 -97 -16q-114 0 -168 61.5q-54 61.5 -54 198.5q0 135 70 208q70 73 208 73q66 0 113.5 -8q47.5 -8 85.5 -21zM302 76q61 0 95.5 31q34.5 31 47.5 81l0 258q-23 7 -53 11q-30 4 -68 4q-78 0 -122 -49.5q-44 -49.5 -44 -151.5q0 -88 32.5 -136t111.5 -48z" />
-<glyph unicode="&#104;" horiz-adv-x="641" d="M461 0v290q0 43 -5.5 74.5q-5.5 31.5 -20 52.5q-14.5 21 -39 31q-24.5 10 -61.5 10q-26 0 -51 -9q-25 -9 -46 -25q-21 -16 -36 -38.5q-15 -22.5 -22 -50.5l0 -335h-92v700h92v-240h11q30 36 72 58q42 22 104 22q48 0 83 -10.5q35 -10.5 58 -37q23 -26.5 34 -71q11 -44.5 11 -111.5l0 -310z" />
-<glyph unicode="&#105;" horiz-adv-x="317" d="M114 525h92v-525h-92zM95 650q0 23 18 41.5q18 18.5 47 18.5q29 0 48 -18.5q19 -18.5 19 -41.5q0 -23 -19 -40.5q-19 -17.5 -48 -17.5q-29 0 -47 17.5t-18 40.5z" />
-<glyph unicode="&#106;" horiz-adv-x="312" d="M112 525h92v-543q0 -97 -36.5 -144.5q-36.5 -47.5 -117.5 -47.5q-8 0 -17.5 0q-9.5 0 -20.5 2l0 76q33 -1 52.5 8q19.5 9 30 27.5q10.5 18.5 14 46q3.5 27.5 3.5 65.5zM91 650q0 23 18 41.5q18 18.5 47 18.5q29 0 48 -18.5q19 -18.5 19 -41.5q0 -23 -19 -40.5q-19 -17.5 -48 -17.5q-29 0 -47 17.5t-18 40.5z" />
-<glyph unicode="&#107;" horiz-adv-x="557" d="M237 236h-57v-236h-92v700h92v-414l52 17l174 222h108l-167 -203h1l-55 -40l63 -45l185 -237l-116 0z" />
-<glyph unicode="&#108;" horiz-adv-x="336" d="M192 139q0 -41 15.5 -58q15.5 -17 41.5 -17q16 0 31 2q15 2 36 8l12 -68q-10 -4 -24 -7.5q-14 -3.5 -29 -6.5q-15 -3 -30 -4.5q-15 -1.5 -27 -1.5q-54 0 -86 27.5q-32 27.5 -32 91.5v595l92 0z" />
-<glyph unicode="&#109;" horiz-adv-x="948" d="M428 0v288q0 42 -4 74q-4 32 -16 53.5q-12 21.5 -33.5 32q-21.5 10.5 -55.5 10.5q-53 0 -88.5 -29.5q-35.5 -29.5 -50.5 -75.5l0 -353h-92v525h63l18 -70h10q32 36 73.5 60.5q41.5 24.5 105.5 24.5q54 0 90.5 -23q36.5 -23 55.5 -77q30 46 76 73q46 27 103 27q48 0 81.5 -11q33.5 -11 54.5 -38q21 -27 31 -73q10 -46 10 -116v-302h-92v302q0 40 -4.5 69q-4.5 29 -16.5 48.5q-12 19.5 -33.5 29q-21.5 9.5 -56.5 9.5q-57 0 -90 -30q-33 -30 -47 -90l0 -338z" />
-<glyph unicode="&#110;" horiz-adv-x="641" d="M461 0v290q0 84 -27 126q-27 42 -96 42q-61 0 -101.5 -31.5q-40.5 -31.5 -56.5 -80.5l0 -346h-92v525h64l18 -70h9q29 36 75.5 60.5q46.5 24.5 111.5 24.5q46 0 81 -10.5q35 -10.5 58.5 -37q23.5 -26.5 35.5 -71q12 -44.5 12 -112.5l0 -309z" />
-<glyph unicode="&#111;" horiz-adv-x="631" d="M60 262q0 65 17 116.5q17 51.5 50 87.5q33 36 80.5 55q47.5 19 108.5 19q64 0 112 -21q48 -21 80 -58.5q32 -37.5 47.5 -88q15.5 -50.5 15.5 -110.5q0 -64 -17.5 -115q-17.5 -51 -50 -87q-32.5 -36 -80 -55q-47.5 -19 -107.5 -19q-66 0 -114 21q-48 21 -79.5 58q-31.5 37 -47 87.5q-15.5 50.5 -15.5 109.5zt0 0zM158 262q0 -37 8.5 -72.5q8.5 -35.5 27.5 -63.5q19 -28 49 -45q30 -17 74 -17q156 0 156 198q0 39 -8.5 75q-8.5 36 -27 63.5q-18.5 27.5 -48.5 44.5q-30 17 -72 17q-78 0 -118.5 -49.5t-40.5 -150.5z" />
-<glyph unicode="&#112;" horiz-adv-x="630" d="M88 525h62l18 -67h9q27 39 70 60.5q43 21.5 97 21.5q114 0 170 -63.5q56 -63.5 56 -202.5q0 -66 -18.5 -119.5q-18.5 -53.5 -53 -91q-34.5 -37.5 -84 -57.5q-49.5 -20 -110.5 -20q-20 0 -36.5 1.5q-16.5 1.5 -30.5 5q-14 3.5 -28 8q-14 4.5 -29 10.5l0 -211h-92zM323 462q-60 0 -94 -30q-34 -30 -49 -92l0 -242q23 -16 50 -25q27 -9 69 -9q81 0 127 53q46 53 46 158q0 85 -34 136t-115 51z" />
-<glyph unicode="&#113;" horiz-adv-x="625" d="M537 -200h-91l-1 257h-11q-23 -34 -58.5 -52.5q-35.5 -18.5 -92.5 -18.5q-223 0 -223 272q0 137 71.5 207.5q71.5 70.5 210.5 70.5q30 0 59 -3q29 -3 55 -7.5q26 -4.5 46.5 -10q20.5 -5.5 34.5 -11.5zM445 438q-46 20 -120 20q-81 0 -124 -49q-43 -49 -43 -149q0 -44 7.5 -80q7.5 -36 25 -61.5q17.5 -25.5 45 -40q27.5 -14.5 67.5 -14.5q60 0 93.5 30q33.5 30 48.5 90z" />
-<glyph unicode="&#114;" horiz-adv-x="380" d="M362 438q-17 5 -33 9q-16 4 -30 4q-53 0 -82.5 -27q-29.5 -27 -36.5 -68l0 -356h-92v525h64l18 -70h9q23 39 53.5 60.5q30.5 21.5 76.5 21.5q14 0 33 -2.5q19 -2.5 38 -8.5z" />
-<glyph unicode="&#115;" horiz-adv-x="499" d="M353 147q0 20 -9.5 33.5q-9.5 13.5 -25.5 23q-16 9.5 -37 16.5q-21 7 -44 14q-29 8 -58.5 17.5q-29.5 9.5 -53 26q-23.5 16.5 -38.5 42.5q-15 26 -15 66q0 78 46.5 116q46.5 38 130.5 38q63 0 106 -12q43 -12 75 -26l-22 -78q-27 13 -64.5 25.5q-37.5 12.5 -82.5 12.5q-49 0 -73 -16q-24 -16 -24 -58q0 -17 9 -28.5q9 -11.5 24 -20q15 -8.5 35 -15q20 -6.5 42 -12.5q30 -8 60 -18.5q30 -10.5 55 -28q25 -17.5 40.5 -44.5q15.5 -27 15.5 -68q0 -74 -50 -120.5q-50 -46.5 -150 -46.5q-64 0 -111.5 13q-47.5 13 -79.5 30l26 80q28 -15 72 -30q44 -15 89 -15q49 0 80.5 17.5t31.5 65.5z" />
-<glyph unicode="&#116;" horiz-adv-x="405" d="M24 525h89v106l92 24v-130h158v-78h-158v-268q0 -63 16 -89q16 -26 55 -26q25 0 45.5 5.5q20.5 5.5 46.5 14.5l21 -65q-32 -14 -68.5 -23.5q-36.5 -9.5 -78.5 -9.5q-70 0 -99.5 38q-29.5 38 -29.5 124v299l-89 0z" />
-<glyph unicode="&#117;" horiz-adv-x="644" d="M180 525v-289q0 -42 5 -74q5 -32 18 -53.5q13 -21.5 35.5 -33q22.5 -11.5 57.5 -11.5q60 0 98 34q38 34 58 84l0 343h92v-376q0 -38 3 -77.5q3 -39.5 9 -71.5l-62 0l-24 87h-10q-26 -45 -72 -73q-46 -28 -115 -28q-46 0 -80.5 11q-34.5 11 -58 37.5q-23.5 26.5 -35 70.5q-11.5 44 -11.5 110l0 310z" />
-<glyph unicode="&#118;" horiz-adv-x="535" d="M242 223l35 -108l33 110l125 300h100l-245 -536h-40l-250 536l108 0z" />
-<glyph unicode="&#119;" horiz-adv-x="840" d="M468 525l86 -199l43 -101l27 -101h7l23 104l98 297h88l-191 -536h-50l-147 339v-1l-26 97l-30 -98v1l-141 -338h-48l-199 536h101l111 -297l19 -105h9l28 107l121 295z" />
-<glyph unicode="&#120;" horiz-adv-x="592" d="M233 269l-189 256h117l102 -134l35 -71l41 71l106 134h104l-191 -252q50 -67 102 -136q52 -69 102 -137l-114 0l-115 149l-40 75l-41 -75l-116 -149l-106 0z" />
-<glyph unicode="&#121;" horiz-adv-x="531" d="M251 193l31 -101h13l25 102l109 331h94l-172 -475q-19 -49 -38.5 -95q-19.5 -46 -43 -81.5q-23.5 -35.5 -52 -57q-28.5 -21.5 -65.5 -21.5q-40 0 -68 9l15 78q15 -5 30 -5q20 0 36.5 5q16.5 5 30.5 18q14 13 25.5 36.5q11.5 23.5 21.5 60.5l-235 528l109 0z" />
-<glyph unicode="&#122;" horiz-adv-x="515" d="M48 79l259 316l70 52h-329v78h413v-79l-262 -319l-70 -49h332v-78l-413 0z" />
-<glyph unicode="&#123;" horiz-adv-x="383" d="M146 108q0 51 -22.5 70q-22.5 19 -64.5 19l0 76q42 0 64.5 20.5q22.5 20.5 22.5 64.5v233q0 48 26 79q26 31 79 31h100v-80h-56q-57 0 -57 -62v-224q0 -44 -23.5 -66.5q-23.5 -22.5 -53.5 -27.5l0 -8q29 -4 53 -30q24 -26 24 -68v-223q0 -31 13.5 -46.5q13.5 -15.5 44.5 -15.5h55v-80h-100q-49 0 -77 28q-28 28 -28 81z" />
-<glyph unicode="&#124;" horiz-adv-x="258" d="M89 700h80v-830l-80 0z" />
-<glyph unicode="&#125;" horiz-adv-x="383" d="M263 363q0 -51 23 -70q23 -19 65 -19l0 -76q-42 0 -65 -20.5q-23 -20.5 -23 -64.5v-233q0 -48 -26.5 -79q-26.5 -31 -80.5 -31h-97v80h55q57 0 57 62v224q0 44 23.5 66.5q23.5 22.5 52.5 27.5l0 8q-29 4 -52.5 30q-23.5 26 -23.5 68v223q0 62 -58 62h-54v80h98q49 0 77.5 -28q28.5 -28 28.5 -81z" />
-<glyph unicode="&#126;" horiz-adv-x="554" d="M34 365q48 34 86 47q38 13 70 13q31 0 57 -8.5q26 -8.5 50.5 -18.5q24.5 -10 47.5 -18.5q23 -8.5 48 -8.5q20 0 42 7.5q22 7.5 48 27.5l37 -71q-41 -26 -73 -36.5q-32 -10.5 -59 -10.5q-29 0 -53.5 8.5q-24.5 8.5 -48 19q-23.5 10.5 -46.5 19.5q-23 9 -50 9q-25 0 -54 -11q-29 -11 -66 -38z" />
-<glyph unicode="&#160;" horiz-adv-x="291" />
-<glyph unicode="&#161;" horiz-adv-x="329" d="M195 -200h-100v343l20 173h60l20 -173zM76 463q0 29 18.5 46q18.5 17 48.5 17q30 0 48.5 -17q18.5 -17 18.5 -46q0 -27 -18.5 -45q-18.5 -18 -48.5 -18q-30 0 -48.5 18t-18.5 45z" />
-<glyph unicode="&#162;" horiz-adv-x="594" d="M517 34q-27 -16 -62 -27.5q-35 -11.5 -73 -16.5l0 -97h-79v95q-58 4 -99 26q-41 22 -66.5 57.5q-25.5 35.5 -37.5 83.5q-12 48 -12 106q0 122 55 192.5q55 70.5 160 82.5l0 94h79v-93q38 -2 68.5 -9.5q30.5 -7.5 56.5 -18.5l-27 -76q-24 12 -51.5 18q-27.5 6 -54.5 8l0 -396q34 2 64 13q30 11 53 24zM314 457q-136 -18 -136 -196q0 -33 7 -65q7 -32 23.5 -58q16.5 -26 42 -45.5q25.5 -19.5 63.5 -26.5z" />
-<glyph unicode="&#163;" horiz-adv-x="594" d="M44 385h72q-13 26 -22 55.5q-9 29.5 -9 70.5q0 49 16.5 86.5q16.5 37.5 46.5 63q30 25.5 72.5 39q42.5 13.5 95.5 13.5q67 0 117.5 -11q50.5 -11 82.5 -25l-30 -85q-23 12 -65.5 23.5q-42.5 11.5 -103.5 11.5q-63 0 -97.5 -31.5q-34.5 -31.5 -34.5 -81.5q0 -39 12 -69.5q12 -30.5 27 -59.5l171 0v-80h-133q6 -19 10 -40q4 -21 4 -45q0 -30 -10.5 -61q-10.5 -31 -30.5 -52l-40 -32v-5l64 14h277v-84h-492v84h2q34 1 59 12q25 11 41 28.5q16 17.5 23.5 40q7.5 22.5 7.5 46.5q0 28 -6 51q-6 23 -14 43l-113 0z" />
-<glyph unicode="&#164;" horiz-adv-x="594" d="M94 602l78 -77l21 -35q21 16 47.5 23.5q26.5 7.5 56.5 7.5q61 0 103 -31l22 35l78 77l54 -56l-77 -78l-35 -21q31 -43 31 -102q0 -30 -7.5 -56q-7.5 -26 -23.5 -46l35 -20l77 -78l-54 -56l-78 77l-21 34q-20 -14 -47.5 -22.5q-27.5 -8.5 -56.5 -8.5q-61 0 -104 31l-21 -34l-78 -77l-54 56l77 78l34 20q-30 44 -30 102q0 29 8 54.5q8 25.5 22 48.5l-34 20l-77 78zM199 345q0 -44 27 -73q27 -29 71 -29q43 0 70.5 29q27.5 29 27.5 73q0 43 -27.5 72.5q-27.5 29.5 -70.5 29.5q-44 0 -71 -29.5t-27 -72.5z" />
-<glyph unicode="&#165;" horiz-adv-x="594" d="M114 331h102l-220 369h117l175 -297l17 -64h2l19 66l167 295h106l-216 -369h103v-66h-136v-73h136v-66h-136v-126h-100v126h-136v66h136v73l-136 0z" />
-<glyph unicode="&#166;" horiz-adv-x="258" d="M89 208h80v-338h-80zM169 362h-80v338l80 0z" />
-<glyph unicode="&#167;" horiz-adv-x="554" d="M64 353q0 31 16.5 60q16.5 29 43.5 52l44 14q-28 15 -45.5 40q-17.5 25 -17.5 65q0 57 45 93q45 36 127 36q62 0 105 -10q43 -10 73 -24l-24 -77q-24 11 -61.5 21q-37.5 10 -78.5 10q-48 0 -70 -15q-22 -15 -22 -41q0 -24 21.5 -37q21.5 -13 54 -23q32.5 -10 70 -20q37.5 -10 70 -27.5q32.5 -17.5 54 -46.5q21.5 -29 21.5 -76q0 -31 -16 -59q-16 -28 -43 -51l-50 -14q30 -16 49 -41q19 -25 19 -66q0 -32 -13 -56q-13 -24 -36.5 -40.5q-23.5 -16.5 -55 -24.5q-31.5 -8 -67.5 -8q-66 0 -107.5 12q-41.5 12 -71.5 26l24 75q26 -11 61 -22q35 -11 80 -11q43 0 67.5 12.5q24.5 12.5 24.5 43.5q0 25 -21.5 38.5q-21.5 13.5 -54 23.5q-32.5 10 -70 20q-37.5 10 -70 27.5q-32.5 17.5 -54 45.5q-21.5 28 -21.5 75zt0 0zM395 345q0 24 -14 39.5q-14 15.5 -36.5 26q-22.5 10.5 -51.5 18.5q-29 8 -60 18q-30 -13 -52 -36q-22 -23 -22 -56q0 -24 13 -39.5q13 -15.5 35 -25.5q22 -10 50.5 -18q28.5 -8 58.5 -17q14 6 28 15q14 9 25.5 21q11.5 12 18.5 25.5t7 28.5z" />
-<glyph unicode="&#168;" horiz-adv-x="449" d="M60 653q0 24 16 40q16 16 42 16q25 0 40.5 -16q15.5 -16 15.5 -40q0 -23 -15.5 -39q-15.5 -16 -40.5 -16q-26 0 -42 16q-16 16 -16 39zt0 0zM275 653q0 24 15.5 40q15.5 16 41.5 16q26 0 41.5 -16q15.5 -16 15.5 -40q0 -23 -15.5 -39q-15.5 -16 -41.5 -16q-26 0 -41.5 16t-15.5 39z" />
-<glyph unicode="&#169;" horiz-adv-x="868" d="M53 288q0 89 30 160q30 71 81.5 120q51.5 49 121 75q69.5 26 148.5 26q79 0 148 -26q69 -26 121 -75q52 -49 82 -120q30 -71 30 -160q0 -89 -30 -160q-30 -71 -82 -120q-52 -49 -121 -75q-69 -26 -148 -26q-87 0 -157 26q-70 26 -120 75q-50 49 -77 120q-27 71 -27 160zt0 0zM135 288q0 -73 23 -129.5q23 -56.5 63.5 -95q40.5 -38.5 95 -58.5q54.5 -20 117.5 -20q63 0 117.5 20q54.5 20 95 58.5q40.5 38.5 63.5 95q23 56.5 23 129.5q0 73 -23 129.5q-23 56.5 -63.5 95q-40.5 38.5 -95 58.5q-54.5 20 -117.5 20q-63 0 -117.5 -20q-54.5 -20 -95 -58.5q-40.5 -38.5 -63.5 -95q-23 -56.5 -23 -129.5zt0 0zM560 114q-24 -14 -56 -22q-32 -8 -73 -8q-87 0 -132.5 55q-45.5 55 -45.5 149q0 98 48.5 151q48.5 53 129.5 53q20 0 35.5 -2q15.5 -2 29.5 -6q14 -4 27.5 -9.5q13.5 -5.5 29.5 -12.5l-29 -69q-23 11 -43 16q-20 5 -36 5q-42 0 -69.5 -27q-27.5 -27 -27.5 -99q0 -59 26.5 -92.5q26.5 -33.5 78.5 -33.5q26 0 46 5q20 5 37 14z" />
-<glyph unicode="&#170;" horiz-adv-x="437" d="M78 675q27 14 73.5 23.5q46.5 9.5 102.5 9.5q70 0 96 -26.5q26 -26.5 26 -77.5q0 -38 -1.5 -72.5q-1.5 -34.5 -1.5 -66.5q0 -23 1.5 -44.5q1.5 -21.5 6.5 -40.5l-69 0l-14 48h-4q-7 -8 -17 -17.5q-10 -9.5 -23.5 -17q-13.5 -7.5 -31.5 -12.5q-18 -5 -42 -5q-56 0 -90 26q-34 26 -34 70q0 31 16 52q16 21 44.5 34q28.5 13 66 19q37.5 6 81.5 6q8 0 15 -0.5q7 -0.5 15 -0.5q4 36 -7.5 50.5q-11.5 14.5 -54.5 14.5q-45 0 -81.5 -8.5q-36.5 -8.5 -56.5 -18.5zM294 527q-12 1 -24 1.5q-12 0.5 -24 0.5q-21 0 -40.5 -2q-19.5 -2 -34 -8q-14.5 -6 -23 -15.5q-8.5 -9.5 -8.5 -24.5q0 -19 15 -29.5q15 -10.5 41 -10.5q23 0 40 5q17 5 28.5 13q11.5 8 18.5 17.5q7 9.5 11 18.5z" />
-<glyph unicode="&#171;" horiz-adv-x="524" d="M242 260l174 225l58 -51l-101 -134l-52 -40l52 -36l107 -132l-58 -50zM40 259l176 230l60 -52l-102 -136l-53 -41l53 -36l109 -133l-61 -53z" />
-<glyph unicode="&#172;" horiz-adv-x="554" d="M45 398h467v-201h-86v117l-381 0z" />
-<glyph unicode="&#173;" horiz-adv-x="394" d="M64 332h266v-86l-266 0z" />
-<glyph unicode="&#174;" horiz-adv-x="751" d="M86 432q0 70 23 124q23 54 62.5 90.5q39.5 36.5 92 55.5q52.5 19 111.5 19q61 0 113.5 -19q52.5 -19 91.5 -55.5q39 -36.5 61.5 -90.5q22.5 -54 22.5 -124q0 -70 -23 -123.5q-23 -53.5 -62.5 -90q-39.5 -36.5 -92 -55.5q-52.5 -19 -111.5 -19q-60 0 -113 19q-53 19 -92 55.5q-39 36.5 -61.5 90q-22.5 53.5 -22.5 123.5zt0 0zM160 432q0 -55 17.5 -96q17.5 -41 46.5 -68q29 -27 68 -40.5q39 -13.5 83 -13.5q46 0 85.5 13q39.5 13 68 40q28.5 27 45 68q16.5 41 16.5 97q0 55 -17 96q-17 41 -46.5 68.5q-29.5 27.5 -68.5 41q-39 13.5 -83 13.5q-47 0 -86.5 -14q-39.5 -14 -68 -41.5q-28.5 -27.5 -44.5 -68.5q-16 -41 -16 -95zt0 0zM265 572q17 5 48.5 8q31.5 3 58.5 3q22 0 42 -4.5q20 -4.5 35 -14.5q15 -10 24 -26q9 -16 9 -39q0 -34 -22.5 -52.5q-22.5 -18.5 -54.5 -20.5l31 -15l77 -117h-66l-75 112l-52 16v-128h-55zM360 535q-11 0 -22 -0.5q-11 -0.5 -18 -4.5l0 -76h37q32 0 49 10q17 10 17 33q0 18 -16.5 28t-46.5 10z" />
-<glyph unicode="&#175;" horiz-adv-x="448" d="M60 666h328v-69l-328 0z" />
-<glyph unicode="&#176;" horiz-adv-x="467" d="M90 566q0 32 13 59q13 27 34.5 46.5q21.5 19.5 50 30.5q28.5 11 60.5 11q32 0 61 -10q29 -10 50.5 -29q21.5 -19 34.5 -46.5q13 -27.5 13 -61.5q0 -34 -13 -61q-13 -27 -34.5 -46q-21.5 -19 -50.5 -29q-29 -10 -61 -10q-32 0 -60.5 10q-28.5 10 -50 29q-21.5 19 -34.5 46q-13 27 -13 61zt0 0zM165 566q0 -36 25.5 -55.5q25.5 -19.5 57.5 -19.5q16 0 31 5q15 5 27 14.5q12 9.5 19 23.5q7 14 7 32q0 18 -7 32q-7 14 -19 24q-12 10 -27 15q-15 5 -31 5q-32 0 -57.5 -20t-25.5 -56z" />
-<glyph unicode="&#177;" horiz-adv-x="554" d="M43 512h191v187h86v-187h191v-84h-191v-125h-86v125h-191zM43 252h468v-84l-468 0z" />
-<glyph unicode="&#178;" horiz-adv-x="436" d="M355 685q0 -30 -10.5 -57q-10.5 -27 -29 -53q-18.5 -26 -43.5 -51.5q-25 -25.5 -53 -51.5l-50 -30v-2l63 13h144v-73h-321v42q25 18 62 48q37 30 71 65q34 35 58.5 71q24.5 36 24.5 67q0 30 -20.5 44.5q-20.5 14.5 -52.5 14.5q-30 0 -57.5 -10.5q-27.5 -10.5 -47.5 -22.5l-27 66q30 20 68.5 31q38.5 11 78.5 11q69 0 105.5 -32.5t36.5 -89.5z" />
-<glyph unicode="&#179;" horiz-adv-x="436" d="M185 442q107 0 107 69q0 30 -24.5 48.5q-24.5 18.5 -81.5 18.5h-57v26l101 107l38 26l-55 -6h-139v69h285v-40l-110 -115l-29 -18v-3l26 3q61 -1 95 -32.5q34 -31.5 34 -85.5q0 -64 -50 -100q-50 -36 -131 -36q-40 0 -69.5 6.5q-29.5 6.5 -52.5 14.5l18 68q19 -8 42.5 -14t52.5 -6z" />
-<glyph unicode="&#180;" horiz-adv-x="288" d="M124 720h104v-23l-112 -127l-56 0z" />
-<glyph unicode="&#181;" horiz-adv-x="636" d="M171 525v-286q0 -88 28.5 -132.5q28.5 -44.5 100.5 -44.5q66 0 111 38.5q45 38.5 62 100.5l0 324h92v-356q0 -42 2.5 -85.5q2.5 -43.5 12.5 -83.5l-60 0l-33 86h-12q-12 -19 -30 -37q-18 -18 -41 -31.5q-23 -13.5 -52 -22q-29 -8.5 -62 -8.5q-53 0 -82 15.5q-29 15.5 -50 40.5l-14 0l27 -120v-124h-92l0 726z" />
-<glyph unicode="&#182;" horiz-adv-x="546" d="M376 700h80v-830h-80zM202 307q-35 0 -64.5 17q-29.5 17 -51.5 45q-22 28 -34 63.5q-12 35.5 -12 71.5q0 36 13 71.5q13 35.5 37.5 63q24.5 27.5 59.5 44.5q35 17 79 17h53v-830l-80 0z" />
-<glyph unicode="&#183;" horiz-adv-x="290" d="M78 301q0 29 18.5 46q18.5 17 48.5 17q30 0 48.5 -17q18.5 -17 18.5 -46q0 -27 -18.5 -45q-18.5 -18 -48.5 -18q-30 0 -48.5 18t-18.5 45z" />
-<glyph unicode="&#184;" horiz-adv-x="325" d="M197 0l-32 -53q49 -8 72.5 -26q23.5 -18 23.5 -51q0 -42 -37 -67.5q-37 -25.5 -103 -25.5q-13 0 -26.5 1q-13.5 1 -27.5 4l9 36q35 -2 55 1q20 3 30 10q10 7 12.5 15.5q2.5 8.5 2.5 16.5q0 17 -25.5 26.5q-25.5 9.5 -73.5 14.5l59 98z" />
-<glyph unicode="&#185;" horiz-adv-x="436" d="M80 452h115v232l8 38l-30 -29l-83 -48l-32 59l168 103h53v-355h102v-72l-301 0z" />
-<glyph unicode="&#186;" horiz-adv-x="445" d="M50 542q0 44 13 76q13 32 36 53q23 21 54.5 31q31.5 10 68.5 10q37 0 68.5 -9.5q31.5 -9.5 55 -29.5q23.5 -20 36.5 -52.5q13 -32.5 13 -78.5q0 -46 -13 -78.5q-13 -32.5 -36.5 -52.5q-23.5 -20 -55 -29.5q-31.5 -9.5 -68.5 -9.5q-37 0 -68.5 9.5q-31.5 9.5 -54.5 29.5q-23 20 -36 52.5q-13 32.5 -13 78.5zt0 0zM138 542q0 -54 21.5 -79.5q21.5 -25.5 62.5 -25.5q40 0 62.5 23q22.5 23 22.5 82q0 60 -22 82.5q-22 22.5 -63 22.5q-40 0 -62 -22.5t-22 -82.5z" />
-<glyph unicode="&#187;" horiz-adv-x="524" d="M281 267l-173 -225l-58 51l100 134l52 40l-52 36l-106 131l57 51zM483 268l-175 -230l-61 53l103 135l52 41l-52 36l-109 133l60 53z" />
-<glyph unicode="&#188;" horiz-adv-x="922" d="M685 714l60 -43l-524 -684l-60 45zM861 92h-90v-92h-78v92h-224v45l247 299h55v-277h90zM693 279l7 48h-3l-24 -45l-80 -97l-37 -32l56 6h81zM176 583l8 39l-30 -28l-83 -49l-33 58l169 104h52v-427l-83 0z" />
-<glyph unicode="&#189;" horiz-adv-x="935" d="M685 714l60 -43l-524 -684l-60 45zM853 305q0 -30 -10.5 -57q-10.5 -27 -29 -53q-18.5 -26 -43.5 -51.5q-25 -25.5 -53 -51.5l-50 -30v-2l63 13h144v-73h-321v42q25 18 62 48q37 30 71 65q34 35 58.5 71q24.5 36 24.5 67q0 30 -20.5 44.5q-20.5 14.5 -52.5 14.5q-30 0 -57.5 -10.5q-27.5 -10.5 -47.5 -22.5l-27 66q30 20 68.5 31q38.5 11 78.5 11q69 0 105.5 -32.5q36.5 -32.5 36.5 -89.5zt0 0zM176 583l8 39l-30 -28l-83 -49l-33 58l169 104h52v-427l-83 0z" />
-<glyph unicode="&#190;" horiz-adv-x="962" d="M725 714l60 -43l-524 -684l-60 45zM901 92h-90v-92h-78v92h-224v45l247 299h55v-277h90zM733 279l7 48h-3l-24 -45l-80 -97l-37 -32l56 6h81zM173 342q107 0 107 69q0 30 -24.5 48.5q-24.5 18.5 -81.5 18.5h-57v26l101 107l38 26l-55 -6h-139v69h285v-40l-110 -115l-29 -18v-3l26 3q61 -1 95 -32.5q34 -31.5 34 -85.5q0 -64 -50 -100q-50 -36 -131 -36q-40 0 -69.5 6.5q-29.5 6.5 -52.5 14.5l18 68q19 -8 42.5 -14t52.5 -6z" />
-<glyph unicode="&#191;" horiz-adv-x="478" d="M318 317q4 -49 -7.5 -84q-11.5 -35 -31.5 -62.5q-20 -27.5 -44.5 -50q-24.5 -22.5 -46 -45q-21.5 -22.5 -36 -47.5q-14.5 -25 -14.5 -59q0 -45 26.5 -72q26.5 -27 92.5 -27q19 0 40 4q21 4 40.5 11q19.5 7 37.5 15q18 8 33 17l34 -71q-42 -26 -89.5 -41q-47.5 -15 -117.5 -15q-48 0 -85 12.5q-37 12.5 -62 34.5q-25 22 -37.5 52q-12.5 30 -12.5 66q0 47 15 81q15 34 37 60q22 26 48.5 48q26.5 22 48.5 46.5q22 24.5 37 54.5q15 30 15 72zM206 463q0 29 18.5 46q18.5 17 48.5 17q30 0 48.5 -17q18.5 -17 18.5 -46q0 -27 -18.5 -45q-18.5 -18 -48.5 -18q-30 0 -48.5 18t-18.5 45z" />
-<glyph unicode="&#192;" horiz-adv-x="645" d="M457 183h-277l-74 -183h-98l288 710h52l289 -710h-104zM210 267h218l-81 199l-27 107h-2l-27 -109zM379 752h-86l-173 95v23l132 0z" />
-<glyph unicode="&#193;" horiz-adv-x="645" d="M457 183h-277l-74 -183h-98l288 710h52l289 -710h-104zM210 267h218l-81 199l-27 107h-2l-27 -109zM392 870h132v-23l-178 -95l-81 0z" />
-<glyph unicode="&#194;" horiz-adv-x="645" d="M457 183h-277l-74 -183h-98l288 710h52l289 -710h-104zM210 267h218l-81 199l-27 107h-2l-27 -109zM289 870h73l139 -100v-25h-92l-65 47l-20 35l-21 -34l-70 -48h-90l0 26z" />
-<glyph unicode="&#195;" horiz-adv-x="645" d="M457 183h-277l-74 -183h-98l288 710h52l289 -710h-104zM210 267h218l-81 199l-27 107h-2l-27 -109zM147 791q32 32 61 43.5q29 11.5 55 11.5q21 0 41.5 -5.5q20.5 -5.5 39.5 -12q19 -6.5 37 -12q18 -5.5 36 -5.5q14 0 28.5 5q14.5 5 28.5 17l25 -51q-29 -24 -54.5 -33q-25.5 -9 -49.5 -9q-21 0 -41 5q-20 5 -39 11.5q-19 6.5 -37 11.5q-18 5 -36 5q-17 0 -35 -6.5q-18 -6.5 -36 -24.5z" />
-<glyph unicode="&#196;" horiz-adv-x="645" d="M457 183h-277l-74 -183h-98l288 710h52l289 -710h-104zM210 267h218l-81 199l-27 107h-2l-27 -109zM153 795q0 23 16.5 36q16.5 13 45.5 13q28 0 45 -13q17 -13 17 -36q0 -22 -17 -35.5q-17 -13.5 -45 -13.5q-29 0 -45.5 13.5q-16.5 13.5 -16.5 35.5zt0 0zM367 795q0 23 16.5 36q16.5 13 44.5 13q29 0 46 -13q17 -13 17 -36q0 -22 -17 -35.5q-17 -13.5 -46 -13.5q-28 0 -44.5 13.5t-16.5 35.5z" />
-<glyph unicode="&#197;" horiz-adv-x="645" d="M205 769q0 37 27 61.5q27 24.5 91 24.5q58 0 88.5 -22q30.5 -22 30.5 -64q0 -31 -15 -47q-15 -16 -29 -22q-17 -9 -41 -13l280 -687h-104l-76 183h-277l-74 -183h-98l279 687q-22 4 -43 13q-10 5 -24.5 21q-14.5 16 -14.5 48zt0 0zM210 267h218l-81 199l-27 107h-2l-27 -109zM275 769q0 -15 11 -26q11 -11 37 -11q49 0 49 37q0 18 -12 28.5q-12 10.5 -37 10.5q-25 0 -36.5 -10.5t-11.5 -28.5z" />
-<glyph unicode="&#198;" horiz-adv-x="929" d="M429 591l-38 -106l-136 -212h178v318zM433 189h-230l-120 -189h-108l456 700h425v-86h-323v-213h295v-86h-295v-229h328v-86l-428 0z" />
-<glyph unicode="&#199;" horiz-adv-x="624" d="M584 30q-28 -20 -67.5 -29.5q-39.5 -9.5 -85.5 -12.5l-24 -41q49 -8 72.5 -26q23.5 -18 23.5 -51q0 -42 -37 -67.5q-37 -25.5 -103 -25.5q-13 0 -26.5 1q-13.5 1 -27.5 4l9 36q35 -2 55 1q20 3 30 10q10 7 12.5 15.5q2.5 8.5 2.5 16.5q0 17 -25.5 26.5q-25.5 9.5 -73.5 14.5l51 86q-64 3 -120.5 26q-56.5 23 -99 68q-42.5 45 -67.5 111.5q-25 66.5 -25 156.5q0 98 30 167q30 69 78 112.5q48 43.5 108 63.5q60 20 119 20q66 0 108 -7q42 -7 71 -18l-22 -86q-49 23 -149 23q-45 0 -87.5 -14.5q-42.5 -14.5 -76 -47q-33.5 -32.5 -53.5 -85q-20 -52.5 -20 -128.5q0 -68 19 -119q19 -51 52.5 -85.5q33.5 -34.5 79 -52q45.5 -17.5 99.5 -17.5q49 0 85 8.5q36 8.5 61 22.5z" />
-<glyph unicode="&#200;" horiz-adv-x="585" d="M89 700h423v-86h-323v-213h295v-86h-295v-229h328v-86h-428zM361 752h-86l-173 95v23l132 0z" />
-<glyph unicode="&#201;" horiz-adv-x="585" d="M89 700h423v-86h-323v-213h295v-86h-295v-229h328v-86h-428zM356 870h132v-23l-178 -95l-81 0z" />
-<glyph unicode="&#202;" horiz-adv-x="585" d="M89 700h423v-86h-323v-213h295v-86h-295v-229h328v-86h-428zM261 870h73l139 -100v-25h-92l-65 47l-20 35l-21 -34l-70 -48h-90l0 26z" />
-<glyph unicode="&#203;" horiz-adv-x="585" d="M89 700h423v-86h-323v-213h295v-86h-295v-229h328v-86h-428zM125 795q0 23 16.5 36q16.5 13 45.5 13q28 0 45 -13q17 -13 17 -36q0 -22 -17 -35.5q-17 -13.5 -45 -13.5q-29 0 -45.5 13.5q-16.5 13.5 -16.5 35.5zt0 0zM339 795q0 23 16.5 36q16.5 13 44.5 13q29 0 46 -13q17 -13 17 -36q0 -22 -17 -35.5q-17 -13.5 -46 -13.5q-28 0 -44.5 13.5t-16.5 35.5z" />
-<glyph unicode="&#204;" horiz-adv-x="398" d="M149 634h-80v66h260v-66h-80v-568h80v-66h-260v66h80zM285 752h-86l-173 95v23l132 0z" />
-<glyph unicode="&#205;" horiz-adv-x="398" d="M149 634h-80v66h260v-66h-80v-568h80v-66h-260v66h80zM253 870h132v-23l-178 -95l-81 0z" />
-<glyph unicode="&#206;" horiz-adv-x="398" d="M149 634h-80v66h260v-66h-80v-568h80v-66h-260v66h80zM166 870h73l139 -100v-25h-92l-65 47l-20 35l-21 -34l-70 -48h-90l0 26z" />
-<glyph unicode="&#207;" horiz-adv-x="398" d="M149 634h-80v66h260v-66h-80v-568h80v-66h-260v66h80zM30 795q0 23 16.5 36q16.5 13 45.5 13q28 0 45 -13q17 -13 17 -36q0 -22 -17 -35.5q-17 -13.5 -45 -13.5q-29 0 -45.5 13.5q-16.5 13.5 -16.5 35.5zt0 0zM244 795q0 23 16.5 36q16.5 13 44.5 13q29 0 46 -13q17 -13 17 -36q0 -22 -17 -35.5q-17 -13.5 -46 -13.5q-28 0 -44.5 13.5t-16.5 35.5z" />
-<glyph unicode="&#208;" horiz-adv-x="723" d="M0 394h97v306q20 3 46.5 4.5q26.5 1.5 55 2.5q28.5 1 56 1.5q27.5 0.5 50.5 0.5q92 0 159.5 -26.5q67.5 -26.5 112 -73.5q44.5 -47 66.5 -112q22 -65 22 -142q0 -70 -20.5 -135.5q-20.5 -65.5 -65.5 -116.5q-45 -51 -115.5 -82q-70.5 -31 -170.5 -31q-17 0 -45.5 1q-28.5 1 -58.5 2q-30 1 -55.5 2.5q-25.5 1.5 -36.5 3.5l0 329h-97zM197 394h160v-66h-160v-246q5 -1 19.5 -1.5q14.5 -0.5 30.5 -1q16 -0.5 30 -1q14 -0.5 20 -0.5q75 0 125.5 23.5q50.5 23.5 81 62.5q30.5 39 43 88.5q12.5 49.5 12.5 102.5q0 45 -12 92q-12 47 -41 85.5q-29 38.5 -77 63.5q-48 25 -121 25q-14 0 -30 0q-16 0 -32 -1q-16 -1 -29 -2q-13 -1 -20 -2z" />
-<glyph unicode="&#209;" horiz-adv-x="735" d="M235 445l-60 98h-4l12 -98v-445h-94v710h56l357 -454l57 -93h5l-12 93v444h94v-710h-56zM190 791q32 32 61 43.5q29 11.5 55 11.5q21 0 41.5 -5.5q20.5 -5.5 39.5 -12q19 -6.5 37 -12q18 -5.5 36 -5.5q14 0 28.5 5q14.5 5 28.5 17l25 -51q-29 -24 -54.5 -33q-25.5 -9 -49.5 -9q-21 0 -41 5q-20 5 -39 11.5q-19 6.5 -37 11.5q-18 5 -36 5q-17 0 -35 -6.5q-18 -6.5 -36 -24.5z" />
-<glyph unicode="&#210;" horiz-adv-x="747" d="M58 350q0 86 21.5 153.5q21.5 67.5 62 114q40.5 46.5 99 71q58.5 24.5 132.5 24.5q79 0 138.5 -26.5q59.5 -26.5 99 -74q39.5 -47.5 59 -114.5q19.5 -67 19.5 -148q0 -86 -21.5 -153.5q-21.5 -67.5 -62.5 -114q-41 -46.5 -99.5 -71q-58.5 -24.5 -132.5 -24.5q-80 0 -139 26.5q-59 26.5 -98 74q-39 47.5 -58.5 114.5q-19.5 67 -19.5 148zt0 0zM164 350q0 -57 12.5 -107q12.5 -50 38 -88q25.5 -38 65 -60q39.5 -22 93.5 -22q97 0 153.5 67q56.5 67 56.5 210q0 56 -12.5 106q-12.5 50 -38 88q-25.5 38 -65 60.5q-39.5 22.5 -94.5 22.5q-96 0 -152.5 -68q-56.5 -68 -56.5 -209zt0 0zM449 752h-86l-173 95v23l132 0z" />
-<glyph unicode="&#211;" horiz-adv-x="747" d="M58 350q0 86 21.5 153.5q21.5 67.5 62 114q40.5 46.5 99 71q58.5 24.5 132.5 24.5q79 0 138.5 -26.5q59.5 -26.5 99 -74q39.5 -47.5 59 -114.5q19.5 -67 19.5 -148q0 -86 -21.5 -153.5q-21.5 -67.5 -62.5 -114q-41 -46.5 -99.5 -71q-58.5 -24.5 -132.5 -24.5q-80 0 -139 26.5q-59 26.5 -98 74q-39 47.5 -58.5 114.5q-19.5 67 -19.5 148zt0 0zM164 350q0 -57 12.5 -107q12.5 -50 38 -88q25.5 -38 65 -60q39.5 -22 93.5 -22q97 0 153.5 67q56.5 67 56.5 210q0 56 -12.5 106q-12.5 50 -38 88q-25.5 38 -65 60.5q-39.5 22.5 -94.5 22.5q-96 0 -152.5 -68q-56.5 -68 -56.5 -209zt0 0zM444 870h132v-23l-178 -95l-81 0z" />
-<glyph unicode="&#212;" horiz-adv-x="747" d="M58 350q0 86 21.5 153.5q21.5 67.5 62 114q40.5 46.5 99 71q58.5 24.5 132.5 24.5q79 0 138.5 -26.5q59.5 -26.5 99 -74q39.5 -47.5 59 -114.5q19.5 -67 19.5 -148q0 -86 -21.5 -153.5q-21.5 -67.5 -62.5 -114q-41 -46.5 -99.5 -71q-58.5 -24.5 -132.5 -24.5q-80 0 -139 26.5q-59 26.5 -98 74q-39 47.5 -58.5 114.5q-19.5 67 -19.5 148zt0 0zM164 350q0 -57 12.5 -107q12.5 -50 38 -88q25.5 -38 65 -60q39.5 -22 93.5 -22q97 0 153.5 67q56.5 67 56.5 210q0 56 -12.5 106q-12.5 50 -38 88q-25.5 38 -65 60.5q-39.5 22.5 -94.5 22.5q-96 0 -152.5 -68q-56.5 -68 -56.5 -209zt0 0zM338 870h73l139 -100v-25h-92l-65 47l-20 35l-21 -34l-70 -48h-90l0 26z" />
-<glyph unicode="&#213;" horiz-adv-x="747" d="M58 350q0 86 21.5 153.5q21.5 67.5 62 114q40.5 46.5 99 71q58.5 24.5 132.5 24.5q79 0 138.5 -26.5q59.5 -26.5 99 -74q39.5 -47.5 59 -114.5q19.5 -67 19.5 -148q0 -86 -21.5 -153.5q-21.5 -67.5 -62.5 -114q-41 -46.5 -99.5 -71q-58.5 -24.5 -132.5 -24.5q-80 0 -139 26.5q-59 26.5 -98 74q-39 47.5 -58.5 114.5q-19.5 67 -19.5 148zt0 0zM164 350q0 -57 12.5 -107q12.5 -50 38 -88q25.5 -38 65 -60q39.5 -22 93.5 -22q97 0 153.5 67q56.5 67 56.5 210q0 56 -12.5 106q-12.5 50 -38 88q-25.5 38 -65 60.5q-39.5 22.5 -94.5 22.5q-96 0 -152.5 -68q-56.5 -68 -56.5 -209zt0 0zM195 791q32 32 61 43.5q29 11.5 55 11.5q21 0 41.5 -5.5q20.5 -5.5 39.5 -12q19 -6.5 37 -12q18 -5.5 36 -5.5q14 0 28.5 5q14.5 5 28.5 17l25 -51q-29 -24 -54.5 -33q-25.5 -9 -49.5 -9q-21 0 -41 5q-20 5 -39 11.5q-19 6.5 -37 11.5q-18 5 -36 5q-17 0 -35 -6.5q-18 -6.5 -36 -24.5z" />
-<glyph unicode="&#214;" horiz-adv-x="747" d="M58 350q0 86 21.5 153.5q21.5 67.5 62 114q40.5 46.5 99 71q58.5 24.5 132.5 24.5q79 0 138.5 -26.5q59.5 -26.5 99 -74q39.5 -47.5 59 -114.5q19.5 -67 19.5 -148q0 -86 -21.5 -153.5q-21.5 -67.5 -62.5 -114q-41 -46.5 -99.5 -71q-58.5 -24.5 -132.5 -24.5q-80 0 -139 26.5q-59 26.5 -98 74q-39 47.5 -58.5 114.5q-19.5 67 -19.5 148zt0 0zM164 350q0 -57 12.5 -107q12.5 -50 38 -88q25.5 -38 65 -60q39.5 -22 93.5 -22q97 0 153.5 67q56.5 67 56.5 210q0 56 -12.5 106q-12.5 50 -38 88q-25.5 38 -65 60.5q-39.5 22.5 -94.5 22.5q-96 0 -152.5 -68q-56.5 -68 -56.5 -209zt0 0zM204 795q0 23 16.5 36q16.5 13 45.5 13q28 0 45 -13q17 -13 17 -36q0 -22 -17 -35.5q-17 -13.5 -45 -13.5q-29 0 -45.5 13.5q-16.5 13.5 -16.5 35.5zt0 0zM418 795q0 23 16.5 36q16.5 13 44.5 13q29 0 46 -13q17 -13 17 -36q0 -22 -17 -35.5q-17 -13.5 -46 -13.5q-28 0 -44.5 13.5t-16.5 35.5z" />
-<glyph unicode="&#215;" horiz-adv-x="554" d="M140 526l138 -130l139 130l58 -63l-136 -124l136 -126l-58 -62l-139 130l-139 -131l-59 61l137 128l-135 124z" />
-<glyph unicode="&#216;" horiz-adv-x="747" d="M132 92q-38 48 -56 113.5q-18 65.5 -18 144.5q0 86 21.5 153.5q21.5 67.5 62 114q40.5 46.5 99 71q58.5 24.5 132.5 24.5q59 0 106 -14.5q47 -14.5 84 -41.5l44 57l61 -43l-51 -67q36 -48 54 -112q18 -64 18 -142q0 -86 -21.5 -153.5q-21.5 -67.5 -62.5 -114q-41 -46.5 -99.5 -71q-58.5 -24.5 -132.5 -24.5q-113 0 -186 52h-40l-61 -7zM503 578q-24 23 -56.5 36q-32.5 13 -73.5 13q-96 0 -152.5 -68q-56.5 -68 -56.5 -209q0 -48 8.5 -91q8.5 -43 26.5 -78zM247 118q24 -21 55.5 -33q31.5 -12 70.5 -12q97 0 153.5 67q56.5 67 56.5 210q0 46 -8.5 88q-8.5 42 -25.5 77z" />
-<glyph unicode="&#217;" horiz-adv-x="710" d="M527 700h94v-457q0 -65 -18.5 -112q-18.5 -47 -52.5 -78.5q-34 -31.5 -80.5 -46.5q-46.5 -15 -103.5 -15q-135 0 -206 58.5q-71 58.5 -71 173.5v477h100v-439q0 -102 44.5 -142q44.5 -40 131.5 -40q84 0 123 44q39 44 39 141zM446 752h-86l-173 95v23l132 0z" />
-<glyph unicode="&#218;" horiz-adv-x="710" d="M527 700h94v-457q0 -65 -18.5 -112q-18.5 -47 -52.5 -78.5q-34 -31.5 -80.5 -46.5q-46.5 -15 -103.5 -15q-135 0 -206 58.5q-71 58.5 -71 173.5v477h100v-439q0 -102 44.5 -142q44.5 -40 131.5 -40q84 0 123 44q39 44 39 141zM424 870h132v-23l-178 -95l-81 0z" />
-<glyph unicode="&#219;" horiz-adv-x="710" d="M527 700h94v-457q0 -65 -18.5 -112q-18.5 -47 -52.5 -78.5q-34 -31.5 -80.5 -46.5q-46.5 -15 -103.5 -15q-135 0 -206 58.5q-71 58.5 -71 173.5v477h100v-439q0 -102 44.5 -142q44.5 -40 131.5 -40q84 0 123 44q39 44 39 141zM326 870h73l139 -100v-25h-92l-65 47l-20 35l-21 -34l-70 -48h-90l0 26z" />
-<glyph unicode="&#220;" horiz-adv-x="710" d="M527 700h94v-457q0 -65 -18.5 -112q-18.5 -47 -52.5 -78.5q-34 -31.5 -80.5 -46.5q-46.5 -15 -103.5 -15q-135 0 -206 58.5q-71 58.5 -71 173.5v477h100v-439q0 -102 44.5 -142q44.5 -40 131.5 -40q84 0 123 44q39 44 39 141zM189 795q0 23 16.5 36q16.5 13 45.5 13q28 0 45 -13q17 -13 17 -36q0 -22 -17 -35.5q-17 -13.5 -45 -13.5q-29 0 -45.5 13.5q-16.5 13.5 -16.5 35.5zt0 0zM403 795q0 23 16.5 36q16.5 13 44.5 13q29 0 46 -13q17 -13 17 -36q0 -22 -17 -35.5q-17 -13.5 -46 -13.5q-28 0 -44.5 13.5t-16.5 35.5z" />
-<glyph unicode="&#221;" horiz-adv-x="617" d="M261 274l-254 426h117l175 -297l17 -64h2l19 66l167 295h106l-249 -425v-275h-100zM384 870h132v-23l-178 -95l-81 0z" />
-<glyph unicode="&#222;" horiz-adv-x="614" d="M89 700h100v-74q43 3 89 3q51 0 103.5 -9q52.5 -9 95.5 -33q43 -24 70.5 -66.5q27.5 -42.5 27.5 -109.5q0 -63 -25 -107.5q-25 -44.5 -66.5 -72.5q-41.5 -28 -95 -41q-53.5 -13 -110.5 -13q-6 0 -18.5 0.5q-12.5 0.5 -26 1q-13.5 0.5 -26 1.5q-12.5 1 -18.5 2l0 -182h-100zM189 268q5 -2 16.5 -2.5q11.5 -0.5 24 -1.5q12.5 -1 24 -1q11.5 0 17.5 0q36 0 71 5.5q35 5.5 63.5 21.5q28.5 16 46 45q17.5 29 17.5 75q0 40 -17 66q-17 26 -44 41q-27 15 -60.5 20.5q-33.5 5.5 -66.5 5.5q-27 0 -52.5 -1q-25.5 -1 -39.5 -5z" />
-<glyph unicode="&#223;" horiz-adv-x="677" d="M114 549q0 77 55 120q55 43 151 43q57 0 97.5 -12q40.5 -12 66 -32q25.5 -20 37 -46.5q11.5 -26.5 11.5 -55.5q0 -31 -10 -53.5q-10 -22.5 -25 -39q-15 -16.5 -32.5 -29q-17.5 -12.5 -32.5 -24.5q-15 -12 -25 -25q-10 -13 -10 -30q0 -22 17 -34.5q17 -12.5 43 -21.5q26 -9 56 -18q30 -9 56 -25q26 -16 43 -42.5q17 -26.5 17 -69.5q0 -31 -13.5 -61q-13.5 -30 -39.5 -54q-26 -24 -64.5 -38.5q-38.5 -14.5 -88.5 -14.5q-26 0 -46.5 2q-20.5 2 -37 6.5q-16.5 4.5 -31.5 10.5q-15 6 -30 15l26 73q13 -7 26 -12.5q13 -5.5 27 -9q14 -3.5 31 -5.5q17 -2 39 -2q19 0 38.5 5.5q19.5 5.5 35 16q15.5 10.5 25 25q9.5 14.5 9.5 32.5q0 30 -17 47q-17 17 -43 27.5q-26 10.5 -56 18.5q-30 8 -56 22q-26 14 -43 36.5q-17 22.5 -17 62.5q0 30 10 50.5q10 20.5 25 36.5q15 16 33 28.5q18 12.5 33 25q15 12.5 25 27.5q10 15 10 36q0 14 -5.5 27q-5.5 13 -19 23q-13.5 10 -36 16q-22.5 6 -55.5 6q-64 0 -90 -24.5q-26 -24.5 -26 -87.5v-521h-93v445h-90v80l90 0z" />
-<glyph unicode="&#224;" horiz-adv-x="582" d="M82 492q90 43 223 43q60 0 96.5 -15.5q36.5 -15.5 56.5 -39.5q20 -24 26.5 -53.5q6.5 -29.5 6.5 -58.5q0 -55 -4 -110.5q-4 -55.5 -4 -120.5q0 -38 3.5 -73.5q3.5 -35.5 11.5 -65.5l-67 0l-25 80h-10q-11 -15 -27 -30.5q-16 -15.5 -38 -27.5q-22 -12 -50.5 -20q-28.5 -8 -65.5 -8q-37 0 -68 10.5q-31 10.5 -53.5 29.5q-22.5 19 -35.5 46.5q-13 27.5 -13 61.5q0 45 19.5 78q19.5 33 50.5 54q31 21 70.5 31q39.5 10 78.5 10q31 0 52.5 -1q21.5 -1 36 -2.5q14.5 -1.5 24.5 -3q10 -1.5 18 -2.5q2 15 3 26q1 11 1 28q0 28 -6 47q-6 19 -19.5 30.5q-13.5 11.5 -36.5 16.5q-23 5 -56 5q-19 0 -42 -3q-23 -3 -46 -8.5q-23 -5.5 -45.5 -13.5q-22.5 -8 -40.5 -17zM395 238q-8 1 -17 3q-9 2 -22.5 3q-13.5 1 -32 2q-18.5 1 -45.5 1q-62 0 -98.5 -22q-36.5 -22 -36.5 -75q0 -40 28.5 -60q28.5 -20 73.5 -20q33 0 58.5 8.5q25.5 8.5 44 21q18.5 12.5 30 28q11.5 15.5 17.5 30.5zM342 570h-54l-127 127v23l110 0z" />
-<glyph unicode="&#225;" horiz-adv-x="582" d="M82 492q90 43 223 43q60 0 96.5 -15.5q36.5 -15.5 56.5 -39.5q20 -24 26.5 -53.5q6.5 -29.5 6.5 -58.5q0 -55 -4 -110.5q-4 -55.5 -4 -120.5q0 -38 3.5 -73.5q3.5 -35.5 11.5 -65.5l-67 0l-25 80h-10q-11 -15 -27 -30.5q-16 -15.5 -38 -27.5q-22 -12 -50.5 -20q-28.5 -8 -65.5 -8q-37 0 -68 10.5q-31 10.5 -53.5 29.5q-22.5 19 -35.5 46.5q-13 27.5 -13 61.5q0 45 19.5 78q19.5 33 50.5 54q31 21 70.5 31q39.5 10 78.5 10q31 0 52.5 -1q21.5 -1 36 -2.5q14.5 -1.5 24.5 -3q10 -1.5 18 -2.5q2 15 3 26q1 11 1 28q0 28 -6 47q-6 19 -19.5 30.5q-13.5 11.5 -36.5 16.5q-23 5 -56 5q-19 0 -42 -3q-23 -3 -46 -8.5q-23 -5.5 -45.5 -13.5q-22.5 -8 -40.5 -17zM395 238q-8 1 -17 3q-9 2 -22.5 3q-13.5 1 -32 2q-18.5 1 -45.5 1q-62 0 -98.5 -22q-36.5 -22 -36.5 -75q0 -40 28.5 -60q28.5 -20 73.5 -20q33 0 58.5 8.5q25.5 8.5 44 21q18.5 12.5 30 28q11.5 15.5 17.5 30.5zM267 720h104v-23l-112 -127l-56 0z" />
-<glyph unicode="&#226;" horiz-adv-x="582" d="M82 492q90 43 223 43q60 0 96.5 -15.5q36.5 -15.5 56.5 -39.5q20 -24 26.5 -53.5q6.5 -29.5 6.5 -58.5q0 -55 -4 -110.5q-4 -55.5 -4 -120.5q0 -38 3.5 -73.5q3.5 -35.5 11.5 -65.5l-67 0l-25 80h-10q-11 -15 -27 -30.5q-16 -15.5 -38 -27.5q-22 -12 -50.5 -20q-28.5 -8 -65.5 -8q-37 0 -68 10.5q-31 10.5 -53.5 29.5q-22.5 19 -35.5 46.5q-13 27.5 -13 61.5q0 45 19.5 78q19.5 33 50.5 54q31 21 70.5 31q39.5 10 78.5 10q31 0 52.5 -1q21.5 -1 36 -2.5q14.5 -1.5 24.5 -3q10 -1.5 18 -2.5q2 15 3 26q1 11 1 28q0 28 -6 47q-6 19 -19.5 30.5q-13.5 11.5 -36.5 16.5q-23 5 -56 5q-19 0 -42 -3q-23 -3 -46 -8.5q-23 -5.5 -45.5 -13.5q-22.5 -8 -40.5 -17zM395 238q-8 1 -17 3q-9 2 -22.5 3q-13.5 1 -32 2q-18.5 1 -45.5 1q-62 0 -98.5 -22q-36.5 -22 -36.5 -75q0 -40 28.5 -60q28.5 -20 73.5 -20q33 0 58.5 8.5q25.5 8.5 44 21q18.5 12.5 30 28q11.5 15.5 17.5 30.5zM275 773h41q31 -48 63 -94q32 -46 62 -93l-80 0l-45 69l-26 71l-31 -71l-48 -69l-76 0z" />
-<glyph unicode="&#227;" horiz-adv-x="582" d="M82 492q90 43 223 43q60 0 96.5 -15.5q36.5 -15.5 56.5 -39.5q20 -24 26.5 -53.5q6.5 -29.5 6.5 -58.5q0 -55 -4 -110.5q-4 -55.5 -4 -120.5q0 -38 3.5 -73.5q3.5 -35.5 11.5 -65.5l-67 0l-25 80h-10q-11 -15 -27 -30.5q-16 -15.5 -38 -27.5q-22 -12 -50.5 -20q-28.5 -8 -65.5 -8q-37 0 -68 10.5q-31 10.5 -53.5 29.5q-22.5 19 -35.5 46.5q-13 27.5 -13 61.5q0 45 19.5 78q19.5 33 50.5 54q31 21 70.5 31q39.5 10 78.5 10q31 0 52.5 -1q21.5 -1 36 -2.5q14.5 -1.5 24.5 -3q10 -1.5 18 -2.5q2 15 3 26q1 11 1 28q0 28 -6 47q-6 19 -19.5 30.5q-13.5 11.5 -36.5 16.5q-23 5 -56 5q-19 0 -42 -3q-23 -3 -46 -8.5q-23 -5.5 -45.5 -13.5q-22.5 -8 -40.5 -17zM395 238q-8 1 -17 3q-9 2 -22.5 3q-13.5 1 -32 2q-18.5 1 -45.5 1q-62 0 -98.5 -22q-36.5 -22 -36.5 -75q0 -40 28.5 -60q28.5 -20 73.5 -20q33 0 58.5 8.5q25.5 8.5 44 21q18.5 12.5 30 28q11.5 15.5 17.5 30.5zM129 696q32 35 58 47.5q26 12.5 49 12.5q18 0 34.5 -6.5q16.5 -6.5 33 -15q16.5 -8.5 33 -15q16.5 -6.5 35.5 -6.5q25 0 54 24l22 -48q-27 -28 -50.5 -39.5q-23.5 -11.5 -43.5 -11.5q-19 0 -36 7q-17 7 -33.5 15q-16.5 8 -33.5 15q-17 7 -36 7q-16 0 -31.5 -6q-15.5 -6 -34.5 -24z" />
-<glyph unicode="&#228;" horiz-adv-x="582" d="M82 492q90 43 223 43q60 0 96.5 -15.5q36.5 -15.5 56.5 -39.5q20 -24 26.5 -53.5q6.5 -29.5 6.5 -58.5q0 -55 -4 -110.5q-4 -55.5 -4 -120.5q0 -38 3.5 -73.5q3.5 -35.5 11.5 -65.5l-67 0l-25 80h-10q-11 -15 -27 -30.5q-16 -15.5 -38 -27.5q-22 -12 -50.5 -20q-28.5 -8 -65.5 -8q-37 0 -68 10.5q-31 10.5 -53.5 29.5q-22.5 19 -35.5 46.5q-13 27.5 -13 61.5q0 45 19.5 78q19.5 33 50.5 54q31 21 70.5 31q39.5 10 78.5 10q31 0 52.5 -1q21.5 -1 36 -2.5q14.5 -1.5 24.5 -3q10 -1.5 18 -2.5q2 15 3 26q1 11 1 28q0 28 -6 47q-6 19 -19.5 30.5q-13.5 11.5 -36.5 16.5q-23 5 -56 5q-19 0 -42 -3q-23 -3 -46 -8.5q-23 -5.5 -45.5 -13.5q-22.5 -8 -40.5 -17zM395 238q-8 1 -17 3q-9 2 -22.5 3q-13.5 1 -32 2q-18.5 1 -45.5 1q-62 0 -98.5 -22q-36.5 -22 -36.5 -75q0 -40 28.5 -60q28.5 -20 73.5 -20q33 0 58.5 8.5q25.5 8.5 44 21q18.5 12.5 30 28q11.5 15.5 17.5 30.5zM111 653q0 24 16 40q16 16 42 16q25 0 40.5 -16q15.5 -16 15.5 -40q0 -23 -15.5 -39q-15.5 -16 -40.5 -16q-26 0 -42 16q-16 16 -16 39zt0 0zM326 653q0 24 15.5 40q15.5 16 41.5 16q26 0 41.5 -16q15.5 -16 15.5 -40q0 -23 -15.5 -39q-15.5 -16 -41.5 -16q-26 0 -41.5 16t-15.5 39z" />
-<glyph unicode="&#229;" horiz-adv-x="582" d="M82 492q90 43 223 43q60 0 96.5 -15.5q36.5 -15.5 56.5 -39.5q20 -24 26.5 -53.5q6.5 -29.5 6.5 -58.5q0 -55 -4 -110.5q-4 -55.5 -4 -120.5q0 -38 3.5 -73.5q3.5 -35.5 11.5 -65.5l-67 0l-25 80h-10q-11 -15 -27 -30.5q-16 -15.5 -38 -27.5q-22 -12 -50.5 -20q-28.5 -8 -65.5 -8q-37 0 -68 10.5q-31 10.5 -53.5 29.5q-22.5 19 -35.5 46.5q-13 27.5 -13 61.5q0 45 19.5 78q19.5 33 50.5 54q31 21 70.5 31q39.5 10 78.5 10q31 0 52.5 -1q21.5 -1 36 -2.5q14.5 -1.5 24.5 -3q10 -1.5 18 -2.5q2 15 3 26q1 11 1 28q0 28 -6 47q-6 19 -19.5 30.5q-13.5 11.5 -36.5 16.5q-23 5 -56 5q-19 0 -42 -3q-23 -3 -46 -8.5q-23 -5.5 -45.5 -13.5q-22.5 -8 -40.5 -17zM395 238q-8 1 -17 3q-9 2 -22.5 3q-13.5 1 -32 2q-18.5 1 -45.5 1q-62 0 -98.5 -22q-36.5 -22 -36.5 -75q0 -40 28.5 -60q28.5 -20 73.5 -20q33 0 58.5 8.5q25.5 8.5 44 21q18.5 12.5 30 28q11.5 15.5 17.5 30.5zM179 683q0 42 29 68.5q29 26.5 80 26.5q48 0 80.5 -23.5q32.5 -23.5 32.5 -71.5q0 -20 -8.5 -37q-8.5 -17 -23.5 -29.5q-15 -12.5 -36 -20q-21 -7.5 -45 -7.5q-48 0 -78.5 24.5q-30.5 24.5 -30.5 69.5zt0 0zM236 683q0 -20 16.5 -32.5q16.5 -12.5 35.5 -12.5q23 0 39.5 11q16.5 11 16.5 34q0 23 -17 34.5q-17 11.5 -39 11.5q-20 0 -36 -11t-16 -35z" />
-<glyph unicode="&#230;" horiz-adv-x="930" d="M397 236q-17 2 -35.5 1.5q-18.5 -0.5 -35.5 -0.5q-36 0 -69 -4q-33 -4 -58.5 -14q-25.5 -10 -40.5 -27q-15 -17 -15 -43q0 -36 28.5 -58.5q28.5 -22.5 73.5 -22.5q33 0 58 8q25 8 43.5 20q18.5 12 31 26.5q12.5 14.5 19.5 28.5zM421 92q-15 -18 -35 -36q-20 -18 -45 -32q-25 -14 -56.5 -23q-31.5 -9 -69.5 -9q-37 0 -68 10q-31 10 -53.5 29q-22.5 19 -35.5 46.5q-13 27.5 -13 61.5q0 45 20.5 76q20.5 31 58 49.5q37.5 18.5 90 27q52.5 8.5 115.5 8.5q15 0 33.5 -0.5q18.5 -0.5 35.5 1.5l0 3q3 24 3 53q0 56 -27 78q-27 22 -93 22q-18 0 -40.5 -2.5q-22.5 -2.5 -46 -7q-23.5 -4.5 -46 -11q-22.5 -6.5 -40.5 -13.5l-25 66q42 21 100 33.5q58 12.5 123 12.5q57 0 97 -19q40 -19 62 -51q16 19 37.5 33q21.5 14 45.5 23.5q24 9.5 50 14q26 4.5 50 4.5q40 0 79 -8.5q39 -8.5 70 -31.5q31 -23 50 -65q19 -42 19 -108q0 -14 -0.5 -31.5q-0.5 -17.5 -3.5 -43.5l-376 0q1 -45 11.5 -80.5q10.5 -35.5 33 -60q22.5 -24.5 58 -37.5q35.5 -13 85.5 -13q38 0 76 12q38 12 63 31l33 -61q-34 -25 -88 -41q-54 -16 -110 -16q-70 0 -128.5 28q-58.5 28 -87.5 78zM777 318q1 40 -7.5 67.5q-8.5 27.5 -25.5 44.5q-17 17 -41 24.5q-24 7.5 -54 7.5q-69 0 -109 -33q-40 -33 -50 -111z" />
-<glyph unicode="&#231;" horiz-adv-x="529" d="M484 36q-32 -23 -74 -35q-42 -12 -89 -14l-23 -40q49 -8 72.5 -26q23.5 -18 23.5 -51q0 -42 -37 -67.5q-37 -25.5 -103 -25.5q-13 0 -26.5 1q-13.5 1 -27.5 4l9 36q35 -2 55 1q20 3 30 10q10 7 12.5 15.5q2.5 8.5 2.5 16.5q0 17 -25.5 26.5q-25.5 9.5 -73.5 14.5l52 87q-55 6 -93.5 28q-38.5 22 -62.5 57.5q-24 35.5 -35 83q-11 47.5 -11 104.5q0 133 64.5 205.5q64.5 72.5 185.5 72.5q53 0 92 -9.5q39 -9.5 70 -23.5l-24 -75q-27 14 -58.5 22q-31.5 8 -68.5 8q-163 0 -163 -200q0 -38 9 -73q9 -35 29 -63q20 -28 52.5 -44.5q32.5 -16.5 79.5 -16.5q42 0 73.5 11.5q31.5 11.5 52.5 27.5z" />
-<glyph unicode="&#232;" horiz-adv-x="598" d="M515 43q-35 -26 -87 -41.5q-52 -15.5 -113 -15.5q-66 0 -114.5 19.5q-48.5 19.5 -79.5 55.5q-31 36 -46 87q-15 51 -15 114q0 135 66.5 206.5q66.5 71.5 189.5 71.5q39 0 78 -8.5q39 -8.5 70 -32q31 -23.5 50.5 -64.5q19.5 -41 19.5 -107q0 -16 -1 -37q-1 -21 -4 -41l-375 0q2 -92 44 -139q42 -47 143 -47q42 0 80 14.5q38 14.5 59 34.5zM446 316q2 80 -32.5 113q-34.5 33 -96.5 33q-70 0 -111 -33q-41 -33 -48 -113zM373 570h-54l-127 127v23l110 0z" />
-<glyph unicode="&#233;" horiz-adv-x="598" d="M515 43q-35 -26 -87 -41.5q-52 -15.5 -113 -15.5q-66 0 -114.5 19.5q-48.5 19.5 -79.5 55.5q-31 36 -46 87q-15 51 -15 114q0 135 66.5 206.5q66.5 71.5 189.5 71.5q39 0 78 -8.5q39 -8.5 70 -32q31 -23.5 50.5 -64.5q19.5 -41 19.5 -107q0 -16 -1 -37q-1 -21 -4 -41l-375 0q2 -92 44 -139q42 -47 143 -47q42 0 80 14.5q38 14.5 59 34.5zM446 316q2 80 -32.5 113q-34.5 33 -96.5 33q-70 0 -111 -33q-41 -33 -48 -113zM329 720h104v-23l-112 -127l-56 0z" />
-<glyph unicode="&#234;" horiz-adv-x="598" d="M515 43q-35 -26 -87 -41.5q-52 -15.5 -113 -15.5q-66 0 -114.5 19.5q-48.5 19.5 -79.5 55.5q-31 36 -46 87q-15 51 -15 114q0 135 66.5 206.5q66.5 71.5 189.5 71.5q39 0 78 -8.5q39 -8.5 70 -32q31 -23.5 50.5 -64.5q19.5 -41 19.5 -107q0 -16 -1 -37q-1 -21 -4 -41l-375 0q2 -92 44 -139q42 -47 143 -47q42 0 80 14.5q38 14.5 59 34.5zM446 316q2 80 -32.5 113q-34.5 33 -96.5 33q-70 0 -111 -33q-41 -33 -48 -113zM284 773h41q31 -48 63 -94q32 -46 62 -93l-80 0l-45 69l-26 71l-31 -71l-48 -69l-76 0z" />
-<glyph unicode="&#235;" horiz-adv-x="598" d="M515 43q-35 -26 -87 -41.5q-52 -15.5 -113 -15.5q-66 0 -114.5 19.5q-48.5 19.5 -79.5 55.5q-31 36 -46 87q-15 51 -15 114q0 135 66.5 206.5q66.5 71.5 189.5 71.5q39 0 78 -8.5q39 -8.5 70 -32q31 -23.5 50.5 -64.5q19.5 -41 19.5 -107q0 -16 -1 -37q-1 -21 -4 -41l-375 0q2 -92 44 -139q42 -47 143 -47q42 0 80 14.5q38 14.5 59 34.5zM446 316q2 80 -32.5 113q-34.5 33 -96.5 33q-70 0 -111 -33q-41 -33 -48 -113zM158 653q0 24 16 40q16 16 42 16q25 0 40.5 -16q15.5 -16 15.5 -40q0 -23 -15.5 -39q-15.5 -16 -40.5 -16q-26 0 -42 16q-16 16 -16 39zt0 0zM373 653q0 24 15.5 40q15.5 16 41.5 16q26 0 41.5 -16q15.5 -16 15.5 -40q0 -23 -15.5 -39q-15.5 -16 -41.5 -16q-26 0 -41.5 16t-15.5 39z" />
-<glyph unicode="&#236;" horiz-adv-x="317" d="M114 525h92v-525h-92zM190 570h-54l-127 127v23l110 0z" />
-<glyph unicode="&#237;" horiz-adv-x="317" d="M114 525h92v-525h-92zM175 720h104v-23l-112 -127l-56 0z" />
-<glyph unicode="&#238;" horiz-adv-x="317" d="M114 525h92v-525h-92zM138 773h41q31 -48 63 -94q32 -46 62 -93l-80 0l-45 69l-26 71l-31 -71l-48 -69l-76 0z" />
-<glyph unicode="&#239;" horiz-adv-x="317" d="M114 525h92v-525h-92zM-5 653q0 24 16 40q16 16 42 16q25 0 40.5 -16q15.5 -16 15.5 -40q0 -23 -15.5 -39q-15.5 -16 -40.5 -16q-26 0 -42 16q-16 16 -16 39zt0 0zM210 653q0 24 15.5 40q15.5 16 41.5 16q26 0 41.5 -16q15.5 -16 15.5 -40q0 -23 -15.5 -39q-15.5 -16 -41.5 -16q-26 0 -41.5 16t-15.5 39z" />
-<glyph unicode="&#240;" horiz-adv-x="645" d="M434 669q69 -60 110 -149q41 -89 41 -203q0 -86 -20.5 -148q-20.5 -62 -56 -103q-35.5 -41 -83.5 -60.5q-48 -19.5 -102 -19.5q-69 0 -118.5 23q-49.5 23 -82 61q-32.5 38 -47.5 87.5q-15 49.5 -15 103.5q0 52 17.5 100.5q17.5 48.5 50.5 86.5q33 38 81.5 61q48.5 23 110.5 23q50 0 83.5 -12.5q33.5 -12.5 53.5 -31.5l7 3q-20 40 -43.5 72q-23.5 32 -52.5 58l-66 -49l-38 40l60 44q-29 20 -59 33.5q-30 13.5 -62 23.5l82 38q54 -17 103 -47l64 48l35 -44zM158 259q0 -95 47.5 -145q47.5 -50 123.5 -50q35 0 65 14q30 14 52 43q22 29 34.5 74q12.5 45 12.5 107q0 20 -1 44.5q-1 24.5 -6 38.5q-10 18 -27 31q-17 13 -38 21.5q-21 8.5 -44.5 12.5q-23.5 4 -44.5 4q-46 0 -79 -15.5q-33 -15.5 -54 -42.5q-21 -27 -31 -62.5t-10 -74.5z" />
-<glyph unicode="&#241;" horiz-adv-x="641" d="M461 0v290q0 84 -27 126q-27 42 -96 42q-61 0 -101.5 -31.5q-40.5 -31.5 -56.5 -80.5l0 -346h-92v525h64l18 -70h9q29 36 75.5 60.5q46.5 24.5 111.5 24.5q46 0 81 -10.5q35 -10.5 58.5 -37q23.5 -26.5 35.5 -71q12 -44.5 12 -112.5v-309zM155 696q32 35 58 47.5q26 12.5 49 12.5q18 0 34.5 -6.5q16.5 -6.5 33 -15q16.5 -8.5 33 -15q16.5 -6.5 35.5 -6.5q25 0 54 24l22 -48q-27 -28 -50.5 -39.5q-23.5 -11.5 -43.5 -11.5q-19 0 -36 7q-17 7 -33.5 15q-16.5 8 -33.5 15q-17 7 -36 7q-16 0 -31.5 -6q-15.5 -6 -34.5 -24z" />
-<glyph unicode="&#242;" horiz-adv-x="631" d="M60 262q0 65 17 116.5q17 51.5 50 87.5q33 36 80.5 55q47.5 19 108.5 19q64 0 112 -21q48 -21 80 -58.5q32 -37.5 47.5 -88q15.5 -50.5 15.5 -110.5q0 -64 -17.5 -115q-17.5 -51 -50 -87q-32.5 -36 -80 -55q-47.5 -19 -107.5 -19q-66 0 -114 21q-48 21 -79.5 58q-31.5 37 -47 87.5q-15.5 50.5 -15.5 109.5zt0 0zM158 262q0 -37 8.5 -72.5q8.5 -35.5 27.5 -63.5q19 -28 49 -45q30 -17 74 -17q156 0 156 198q0 39 -8.5 75q-8.5 36 -27 63.5q-18.5 27.5 -48.5 44.5q-30 17 -72 17q-78 0 -118.5 -49.5q-40.5 -49.5 -40.5 -150.5zt0 0zM360 570h-54l-127 127v23l110 0z" />
-<glyph unicode="&#243;" horiz-adv-x="631" d="M60 262q0 65 17 116.5q17 51.5 50 87.5q33 36 80.5 55q47.5 19 108.5 19q64 0 112 -21q48 -21 80 -58.5q32 -37.5 47.5 -88q15.5 -50.5 15.5 -110.5q0 -64 -17.5 -115q-17.5 -51 -50 -87q-32.5 -36 -80 -55q-47.5 -19 -107.5 -19q-66 0 -114 21q-48 21 -79.5 58q-31.5 37 -47 87.5q-15.5 50.5 -15.5 109.5zt0 0zM158 262q0 -37 8.5 -72.5q8.5 -35.5 27.5 -63.5q19 -28 49 -45q30 -17 74 -17q156 0 156 198q0 39 -8.5 75q-8.5 36 -27 63.5q-18.5 27.5 -48.5 44.5q-30 17 -72 17q-78 0 -118.5 -49.5q-40.5 -49.5 -40.5 -150.5zt0 0zM325 720h104v-23l-112 -127l-56 0z" />
-<glyph unicode="&#244;" horiz-adv-x="631" d="M60 262q0 65 17 116.5q17 51.5 50 87.5q33 36 80.5 55q47.5 19 108.5 19q64 0 112 -21q48 -21 80 -58.5q32 -37.5 47.5 -88q15.5 -50.5 15.5 -110.5q0 -64 -17.5 -115q-17.5 -51 -50 -87q-32.5 -36 -80 -55q-47.5 -19 -107.5 -19q-66 0 -114 21q-48 21 -79.5 58q-31.5 37 -47 87.5q-15.5 50.5 -15.5 109.5zt0 0zM158 262q0 -37 8.5 -72.5q8.5 -35.5 27.5 -63.5q19 -28 49 -45q30 -17 74 -17q156 0 156 198q0 39 -8.5 75q-8.5 36 -27 63.5q-18.5 27.5 -48.5 44.5q-30 17 -72 17q-78 0 -118.5 -49.5q-40.5 -49.5 -40.5 -150.5zt0 0zM299 773h41q31 -48 63 -94q32 -46 62 -93l-80 0l-45 69l-26 71l-31 -71l-48 -69l-76 0z" />
-<glyph unicode="&#245;" horiz-adv-x="631" d="M60 262q0 65 17 116.5q17 51.5 50 87.5q33 36 80.5 55q47.5 19 108.5 19q64 0 112 -21q48 -21 80 -58.5q32 -37.5 47.5 -88q15.5 -50.5 15.5 -110.5q0 -64 -17.5 -115q-17.5 -51 -50 -87q-32.5 -36 -80 -55q-47.5 -19 -107.5 -19q-66 0 -114 21q-48 21 -79.5 58q-31.5 37 -47 87.5q-15.5 50.5 -15.5 109.5zt0 0zM158 262q0 -37 8.5 -72.5q8.5 -35.5 27.5 -63.5q19 -28 49 -45q30 -17 74 -17q156 0 156 198q0 39 -8.5 75q-8.5 36 -27 63.5q-18.5 27.5 -48.5 44.5q-30 17 -72 17q-78 0 -118.5 -49.5q-40.5 -49.5 -40.5 -150.5zt0 0zM155 696q32 35 58 47.5q26 12.5 49 12.5q18 0 34.5 -6.5q16.5 -6.5 33 -15q16.5 -8.5 33 -15q16.5 -6.5 35.5 -6.5q25 0 54 24l22 -48q-27 -28 -50.5 -39.5q-23.5 -11.5 -43.5 -11.5q-19 0 -36 7q-17 7 -33.5 15q-16.5 8 -33.5 15q-17 7 -36 7q-16 0 -31.5 -6q-15.5 -6 -34.5 -24z" />
-<glyph unicode="&#246;" horiz-adv-x="631" d="M60 262q0 65 17 116.5q17 51.5 50 87.5q33 36 80.5 55q47.5 19 108.5 19q64 0 112 -21q48 -21 80 -58.5q32 -37.5 47.5 -88q15.5 -50.5 15.5 -110.5q0 -64 -17.5 -115q-17.5 -51 -50 -87q-32.5 -36 -80 -55q-47.5 -19 -107.5 -19q-66 0 -114 21q-48 21 -79.5 58q-31.5 37 -47 87.5q-15.5 50.5 -15.5 109.5zt0 0zM158 262q0 -37 8.5 -72.5q8.5 -35.5 27.5 -63.5q19 -28 49 -45q30 -17 74 -17q156 0 156 198q0 39 -8.5 75q-8.5 36 -27 63.5q-18.5 27.5 -48.5 44.5q-30 17 -72 17q-78 0 -118.5 -49.5q-40.5 -49.5 -40.5 -150.5zt0 0zM151 653q0 24 16 40q16 16 42 16q25 0 40.5 -16q15.5 -16 15.5 -40q0 -23 -15.5 -39q-15.5 -16 -40.5 -16q-26 0 -42 16q-16 16 -16 39zt0 0zM366 653q0 24 15.5 40q15.5 16 41.5 16q26 0 41.5 -16q15.5 -16 15.5 -40q0 -23 -15.5 -39q-15.5 -16 -41.5 -16q-26 0 -41.5 16t-15.5 39z" />
-<glyph unicode="&#247;" horiz-adv-x="554" d="M43 379h468v-84h-468zM210 525q0 29 18.5 46q18.5 17 48.5 17q30 0 48.5 -17q18.5 -17 18.5 -46q0 -27 -18.5 -45q-18.5 -18 -48.5 -18q-30 0 -48.5 18q-18.5 18 -18.5 45zt0 0zM210 149q0 29 18.5 46q18.5 17 48.5 17q30 0 48.5 -17q18.5 -17 18.5 -46q0 -27 -18.5 -45q-18.5 -18 -48.5 -18q-30 0 -48.5 18t-18.5 45z" />
-<glyph unicode="&#248;" horiz-adv-x="613" d="M108 73q-28 36 -41.5 83.5q-13.5 47.5 -13.5 104.5q0 131 66.5 204.5q66.5 73.5 189.5 73.5q43 0 78 -9q35 -9 63 -26l30 37l54 -44l-31 -39q30 -37 45 -87q15 -50 15 -110q0 -131 -66.5 -203q-66.5 -72 -187.5 -72q-46 0 -83 10q-37 10 -66 29l-31 -41l-57 44zM213 95q37 -31 96 -31q156 0 156 197q0 33 -6 64.5q-6 31.5 -20 57.5zM399 432q-17 14 -39.5 21.5q-22.5 7.5 -50.5 7.5q-158 0 -158 -200q0 -30 5.5 -59q5.5 -29 17.5 -54z" />
-<glyph unicode="&#249;" horiz-adv-x="644" d="M180 525v-289q0 -42 5 -74q5 -32 18 -53.5q13 -21.5 35.5 -33q22.5 -11.5 57.5 -11.5q60 0 98 34q38 34 58 84l0 343h92v-376q0 -38 3 -77.5q3 -39.5 9 -71.5l-62 0l-24 87h-10q-26 -45 -72 -73q-46 -28 -115 -28q-46 0 -80.5 11q-34.5 11 -58 37.5q-23.5 26.5 -35 70.5q-11.5 44 -11.5 110v310zM353 570h-54l-127 127v23l110 0z" />
-<glyph unicode="&#250;" horiz-adv-x="644" d="M180 525v-289q0 -42 5 -74q5 -32 18 -53.5q13 -21.5 35.5 -33q22.5 -11.5 57.5 -11.5q60 0 98 34q38 34 58 84l0 343h92v-376q0 -38 3 -77.5q3 -39.5 9 -71.5l-62 0l-24 87h-10q-26 -45 -72 -73q-46 -28 -115 -28q-46 0 -80.5 11q-34.5 11 -58 37.5q-23.5 26.5 -35 70.5q-11.5 44 -11.5 110v310zM326 720h104v-23l-112 -127l-56 0z" />
-<glyph unicode="&#251;" horiz-adv-x="644" d="M180 525v-289q0 -42 5 -74q5 -32 18 -53.5q13 -21.5 35.5 -33q22.5 -11.5 57.5 -11.5q60 0 98 34q38 34 58 84l0 343h92v-376q0 -38 3 -77.5q3 -39.5 9 -71.5l-62 0l-24 87h-10q-26 -45 -72 -73q-46 -28 -115 -28q-46 0 -80.5 11q-34.5 11 -58 37.5q-23.5 26.5 -35 70.5q-11.5 44 -11.5 110v310zM308 773h41q31 -48 63 -94q32 -46 62 -93l-80 0l-45 69l-26 71l-31 -71l-48 -69l-76 0z" />
-<glyph unicode="&#252;" horiz-adv-x="644" d="M180 525v-289q0 -42 5 -74q5 -32 18 -53.5q13 -21.5 35.5 -33q22.5 -11.5 57.5 -11.5q60 0 98 34q38 34 58 84l0 343h92v-376q0 -38 3 -77.5q3 -39.5 9 -71.5l-62 0l-24 87h-10q-26 -45 -72 -73q-46 -28 -115 -28q-46 0 -80.5 11q-34.5 11 -58 37.5q-23.5 26.5 -35 70.5q-11.5 44 -11.5 110v310zM144 653q0 24 16 40q16 16 42 16q25 0 40.5 -16q15.5 -16 15.5 -40q0 -23 -15.5 -39q-15.5 -16 -40.5 -16q-26 0 -42 16q-16 16 -16 39zt0 0zM359 653q0 24 15.5 40q15.5 16 41.5 16q26 0 41.5 -16q15.5 -16 15.5 -40q0 -23 -15.5 -39q-15.5 -16 -41.5 -16q-26 0 -41.5 16t-15.5 39z" />
-<glyph unicode="&#253;" horiz-adv-x="531" d="M251 193l31 -101h13l25 102l109 331h94l-172 -475q-19 -49 -38.5 -95q-19.5 -46 -43 -81.5q-23.5 -35.5 -52 -57q-28.5 -21.5 -65.5 -21.5q-40 0 -68 9l15 78q15 -5 30 -5q20 0 36.5 5q16.5 5 30.5 18q14 13 25.5 36.5q11.5 23.5 21.5 60.5l-235 528h109zM303 720h104v-23l-112 -127l-56 0z" />
-<glyph unicode="&#254;" horiz-adv-x="630" d="M88 701h92v-235h8q26 34 63.5 53.5q37.5 19.5 91.5 19.5q114 0 170.5 -63q56.5 -63 56.5 -202q0 -66 -19 -119.5q-19 -53.5 -53.5 -91q-34.5 -37.5 -83.5 -57.5q-49 -20 -110 -20q-20 0 -35 1.5q-15 1.5 -29.5 4.5q-14.5 3 -28.5 8q-14 5 -31 11l0 -211h-92zM322 461q-111 0 -142 -124l0 -237q21 -16 50 -26q29 -10 68 -10q81 0 127.5 53q46.5 53 46.5 158q0 42 -8 76.5q-8 34.5 -26 58.5q-18 24 -46.5 37.5t-69.5 13.5z" />
-<glyph unicode="&#255;" horiz-adv-x="531" d="M251 193l31 -101h13l25 102l109 331h94l-172 -475q-19 -49 -38.5 -95q-19.5 -46 -43 -81.5q-23.5 -35.5 -52 -57q-28.5 -21.5 -65.5 -21.5q-40 0 -68 9l15 78q15 -5 30 -5q20 0 36.5 5q16.5 5 30.5 18q14 13 25.5 36.5q11.5 23.5 21.5 60.5l-235 528h109zM89 653q0 24 16 40q16 16 42 16q25 0 40.5 -16q15.5 -16 15.5 -40q0 -23 -15.5 -39q-15.5 -16 -40.5 -16q-26 0 -42 16q-16 16 -16 39zt0 0zM304 653q0 24 15.5 40q15.5 16 41.5 16q26 0 41.5 -16q15.5 -16 15.5 -40q0 -23 -15.5 -39q-15.5 -16 -41.5 -16q-26 0 -41.5 16t-15.5 39z" />
-<glyph unicode="&#256;" horiz-adv-x="645" d="M457 183h-277l-74 -183h-98l288 710h52l289 -710h-104zM210 267h218l-81 199l-27 107h-2l-27 -109zM145 836h350v-68l-350 0z" />
-<glyph unicode="&#257;" horiz-adv-x="582" d="M82 492q90 43 223 43q60 0 96.5 -15.5q36.5 -15.5 56.5 -39.5q20 -24 26.5 -53.5q6.5 -29.5 6.5 -58.5q0 -55 -4 -110.5q-4 -55.5 -4 -120.5q0 -38 3.5 -73.5q3.5 -35.5 11.5 -65.5l-67 0l-25 80h-10q-11 -15 -27 -30.5q-16 -15.5 -38 -27.5q-22 -12 -50.5 -20q-28.5 -8 -65.5 -8q-37 0 -68 10.5q-31 10.5 -53.5 29.5q-22.5 19 -35.5 46.5q-13 27.5 -13 61.5q0 45 19.5 78q19.5 33 50.5 54q31 21 70.5 31q39.5 10 78.5 10q31 0 52.5 -1q21.5 -1 36 -2.5q14.5 -1.5 24.5 -3q10 -1.5 18 -2.5q2 15 3 26q1 11 1 28q0 28 -6 47q-6 19 -19.5 30.5q-13.5 11.5 -36.5 16.5q-23 5 -56 5q-19 0 -42 -3q-23 -3 -46 -8.5q-23 -5.5 -45.5 -13.5q-22.5 -8 -40.5 -17zM395 238q-8 1 -17 3q-9 2 -22.5 3q-13.5 1 -32 2q-18.5 1 -45.5 1q-62 0 -98.5 -22q-36.5 -22 -36.5 -75q0 -40 28.5 -60q28.5 -20 73.5 -20q33 0 58.5 8.5q25.5 8.5 44 21q18.5 12.5 30 28q11.5 15.5 17.5 30.5zM114 666h328v-69l-328 0z" />
-<glyph unicode="&#258;" horiz-adv-x="645" d="M457 183h-277l-74 -183h-98l288 710h52l289 -710h-104zM210 267h218l-81 199l-27 107h-2l-27 -109zM180 872q19 -32 58 -49q39 -17 90 -17q53 0 89.5 19.5q36.5 19.5 53.5 46.5l44 -23q-10 -28 -28.5 -50q-18.5 -22 -43.5 -37.5q-25 -15.5 -55 -23.5q-30 -8 -61 -8q-29 0 -58 6.5q-29 6.5 -55 20.5q-26 14 -47.5 35q-21.5 21 -34.5 51z" />
-<glyph unicode="&#259;" horiz-adv-x="582" d="M82 492q90 43 223 43q60 0 96.5 -15.5q36.5 -15.5 56.5 -39.5q20 -24 26.5 -53.5q6.5 -29.5 6.5 -58.5q0 -55 -4 -110.5q-4 -55.5 -4 -120.5q0 -38 3.5 -73.5q3.5 -35.5 11.5 -65.5l-67 0l-25 80h-10q-11 -15 -27 -30.5q-16 -15.5 -38 -27.5q-22 -12 -50.5 -20q-28.5 -8 -65.5 -8q-37 0 -68 10.5q-31 10.5 -53.5 29.5q-22.5 19 -35.5 46.5q-13 27.5 -13 61.5q0 45 19.5 78q19.5 33 50.5 54q31 21 70.5 31q39.5 10 78.5 10q31 0 52.5 -1q21.5 -1 36 -2.5q14.5 -1.5 24.5 -3q10 -1.5 18 -2.5q2 15 3 26q1 11 1 28q0 28 -6 47q-6 19 -19.5 30.5q-13.5 11.5 -36.5 16.5q-23 5 -56 5q-19 0 -42 -3q-23 -3 -46 -8.5q-23 -5.5 -45.5 -13.5q-22.5 -8 -40.5 -17zM395 238q-8 1 -17 3q-9 2 -22.5 3q-13.5 1 -32 2q-18.5 1 -45.5 1q-62 0 -98.5 -22q-36.5 -22 -36.5 -75q0 -40 28.5 -60q28.5 -20 73.5 -20q33 0 58.5 8.5q25.5 8.5 44 21q18.5 12.5 30 28q11.5 15.5 17.5 30.5zM162 759q21 -37 56.5 -56q35.5 -19 75.5 -19q39 0 72.5 18.5q33.5 18.5 53.5 56.5l45 -19q-4 -24 -18.5 -47.5q-14.5 -23.5 -37.5 -41.5q-23 -18 -53 -29.5q-30 -11.5 -63 -11.5q-65 0 -114.5 34q-49.5 34 -66.5 91z" />
-<glyph unicode="&#260;" horiz-adv-x="645" d="M457 183h-277l-74 -183h-98l288 710h52l289 -710h-7q-34 -17 -54 -39.5q-20 -22.5 -19 -52.5q1 -23 16 -39q15 -16 44 -16q10 0 22 2.5q12 2.5 25 7.5l12 -46q-17 -12 -47 -18.5q-30 -6.5 -57 -6.5q-51 0 -80.5 24.5q-29.5 24.5 -29.5 67.5q0 40 31.5 69.5q31.5 29.5 84.5 46.5l-45 0zM210 267h218l-81 199l-27 107h-2l-27 -109z" />
-<glyph unicode="&#261;" horiz-adv-x="582" d="M82 492q90 43 223 43q60 0 96.5 -15.5q36.5 -15.5 56.5 -39.5q20 -24 26.5 -53.5q6.5 -29.5 6.5 -58.5q0 -55 -4 -110.5q-4 -55.5 -4 -120.5q0 -38 3.5 -73.5q3.5 -35.5 11.5 -65.5l-11 0q-31 -16 -49 -38q-18 -22 -17 -51q1 -23 16 -39q15 -16 44 -16q10 0 22 2.5q12 2.5 25 7.5l12 -46q-17 -12 -47 -18.5q-30 -6.5 -57 -6.5q-51 0 -80.5 24.5q-29.5 24.5 -29.5 67.5q0 38 29 67q29 29 78 46l-2 0l-25 80h-10q-11 -15 -27 -30.5q-16 -15.5 -38 -27.5q-22 -12 -50.5 -20q-28.5 -8 -65.5 -8q-37 0 -68 10.5q-31 10.5 -53.5 29.5q-22.5 19 -35.5 46.5q-13 27.5 -13 61.5q0 45 19.5 78q19.5 33 50.5 54q31 21 70.5 31q39.5 10 78.5 10q31 0 52.5 -1q21.5 -1 36 -2.5q14.5 -1.5 24.5 -3q10 -1.5 18 -2.5q2 15 3 26q1 11 1 28q0 28 -6 47q-6 19 -19.5 30.5q-13.5 11.5 -36.5 16.5q-23 5 -56 5q-19 0 -42 -3q-23 -3 -46 -8.5q-23 -5.5 -45.5 -13.5q-22.5 -8 -40.5 -17zM395 238q-8 1 -17 3q-9 2 -22.5 3q-13.5 1 -32 2q-18.5 1 -45.5 1q-62 0 -98.5 -22q-36.5 -22 -36.5 -75q0 -40 28.5 -60q28.5 -20 73.5 -20q33 0 58.5 8.5q25.5 8.5 44 21q18.5 12.5 30 28q11.5 15.5 17.5 30.5z" />
-<glyph unicode="&#262;" horiz-adv-x="624" d="M584 30q-33 -24 -84 -33.5q-51 -9.5 -108 -9.5q-67 0 -127.5 21.5q-60.5 21.5 -106.5 66q-46 44.5 -73 113q-27 68.5 -27 162.5q0 98 30 167q30 69 78 112.5q48 43.5 108 63.5q60 20 119 20q66 0 108 -7q42 -7 71 -18l-22 -86q-49 23 -149 23q-45 0 -87.5 -14.5q-42.5 -14.5 -76 -47q-33.5 -32.5 -53.5 -85q-20 -52.5 -20 -128.5q0 -68 19 -119.5q19 -51.5 52.5 -86q33.5 -34.5 79 -52q45.5 -17.5 99.5 -17.5q49 0 85 9q36 9 61 23zM449 870h132v-23l-178 -95l-81 0z" />
-<glyph unicode="&#263;" horiz-adv-x="529" d="M484 36q-35 -25 -82 -37.5q-47 -12.5 -99 -12.5q-66 0 -112.5 20q-46.5 20 -75.5 56q-29 36 -42 87q-13 51 -13 113q0 133 64.5 205.5q64.5 72.5 185.5 72.5q53 0 92 -9.5q39 -9.5 70 -23.5l-24 -75q-27 14 -58.5 22q-31.5 8 -68.5 8q-163 0 -163 -200q0 -38 9 -73.5q9 -35.5 29 -63q20 -27.5 52.5 -44.5q32.5 -17 79.5 -17q42 0 73.5 11.5q31.5 11.5 52.5 27.5zM321 720h104v-23l-112 -127l-56 0z" />
-<glyph unicode="&#264;" horiz-adv-x="624" d="M584 30q-33 -24 -84 -33.5q-51 -9.5 -108 -9.5q-67 0 -127.5 21.5q-60.5 21.5 -106.5 66q-46 44.5 -73 113q-27 68.5 -27 162.5q0 98 30 167q30 69 78 112.5q48 43.5 108 63.5q60 20 119 20q66 0 108 -7q42 -7 71 -18l-22 -86q-49 23 -149 23q-45 0 -87.5 -14.5q-42.5 -14.5 -76 -47q-33.5 -32.5 -53.5 -85q-20 -52.5 -20 -128.5q0 -68 19 -119.5q19 -51.5 52.5 -86q33.5 -34.5 79 -52q45.5 -17.5 99.5 -17.5q49 0 85 9q36 9 61 23zM345 870h73l139 -100v-25h-92l-65 47l-20 35l-21 -34l-70 -48h-90l0 26z" />
-<glyph unicode="&#265;" horiz-adv-x="529" d="M484 36q-35 -25 -82 -37.5q-47 -12.5 -99 -12.5q-66 0 -112.5 20q-46.5 20 -75.5 56q-29 36 -42 87q-13 51 -13 113q0 133 64.5 205.5q64.5 72.5 185.5 72.5q53 0 92 -9.5q39 -9.5 70 -23.5l-24 -75q-27 14 -58.5 22q-31.5 8 -68.5 8q-163 0 -163 -200q0 -38 9 -73.5q9 -35.5 29 -63q20 -27.5 52.5 -44.5q32.5 -17 79.5 -17q42 0 73.5 11.5q31.5 11.5 52.5 27.5zM275 773h41q31 -48 63 -94q32 -46 62 -93l-80 0l-45 69l-26 71l-31 -71l-48 -69l-76 0z" />
-<glyph unicode="&#268;" horiz-adv-x="624" d="M584 30q-33 -24 -84 -33.5q-51 -9.5 -108 -9.5q-67 0 -127.5 21.5q-60.5 21.5 -106.5 66q-46 44.5 -73 113q-27 68.5 -27 162.5q0 98 30 167q30 69 78 112.5q48 43.5 108 63.5q60 20 119 20q66 0 108 -7q42 -7 71 -18l-22 -86q-49 23 -149 23q-45 0 -87.5 -14.5q-42.5 -14.5 -76 -47q-33.5 -32.5 -53.5 -85q-20 -52.5 -20 -128.5q0 -68 19 -119.5q19 -51.5 52.5 -86q33.5 -34.5 79 -52q45.5 -17.5 99.5 -17.5q49 0 85 9q36 9 61 23zM419 744h-69l-139 101v25h93l64 -49l19 -33l21 32l68 50h89l0 -26z" />
-<glyph unicode="&#269;" horiz-adv-x="529" d="M484 36q-35 -25 -82 -37.5q-47 -12.5 -99 -12.5q-66 0 -112.5 20q-46.5 20 -75.5 56q-29 36 -42 87q-13 51 -13 113q0 133 64.5 205.5q64.5 72.5 185.5 72.5q53 0 92 -9.5q39 -9.5 70 -23.5l-24 -75q-27 14 -58.5 22q-31.5 8 -68.5 8q-163 0 -163 -200q0 -38 9 -73.5q9 -35.5 29 -63q20 -27.5 52.5 -44.5q32.5 -17 79.5 -17q42 0 73.5 11.5q31.5 11.5 52.5 27.5zM315 586h-49l-129 187h87l44 -68l28 -71l29 70l49 69l78 0z" />
-<glyph unicode="&#270;" horiz-adv-x="715" d="M89 700q20 3 46.5 4.5q26.5 1.5 55 2.5q28.5 1 56 1.5q27.5 0.5 50.5 0.5q92 0 159.5 -26.5q67.5 -26.5 112 -73.5q44.5 -47 66.5 -112q22 -65 22 -142q0 -70 -20.5 -135.5q-20.5 -65.5 -65.5 -116.5q-45 -51 -115.5 -82q-70.5 -31 -170.5 -31q-17 0 -45.5 1q-28.5 1 -58.5 2q-30 1 -55.5 2.5q-25.5 1.5 -36.5 3.5zM300 621q-14 0 -30 0q-16 0 -32 -1q-16 -1 -29 -2q-13 -1 -20 -2l0 -534q5 -1 19.5 -1.5q14.5 -0.5 30.5 -1q16 -0.5 30 -1q14 -0.5 20 -0.5q75 0 125.5 23.5q50.5 23.5 81 62.5q30.5 39 43 88.5q12.5 49.5 12.5 102.5q0 45 -12 92q-12 47 -41 85.5q-29 38.5 -77 63.5q-48 25 -121 25zt0 0zM341 744h-69l-139 101v25h93l64 -49l19 -33l21 32l68 50h89l0 -26z" />
-<glyph unicode="&#271;" horiz-adv-x="629" d="M538 181q0 -51 1.5 -95.5q1.5 -44.5 9.5 -87.5l-61 0l-23 80h-10q-23 -40 -67.5 -66q-44.5 -26 -103.5 -26q-113 0 -168.5 67q-55.5 67 -55.5 206q0 134 68.5 205.5q68.5 71.5 192.5 71.5q21 0 37.5 -1.5q16.5 -1.5 31 -3.5q14.5 -2 28 -6q13.5 -4 28.5 -8l0 183h92zM446 428q-23 17 -49.5 23.5q-26.5 6.5 -70.5 6.5q-81 0 -125.5 -47q-44.5 -47 -44.5 -153q0 -42 8 -77.5q8 -35.5 25 -61.5q17 -26 45 -40.5q28 -14.5 69 -14.5q61 0 95 30.5q34 30.5 48 90.5zM696 700q-2 -29 -12.5 -59.5q-10.5 -30.5 -24.5 -57.5q-14 -27 -28.5 -48q-14.5 -21 -24.5 -30l-40 23q19 36 28.5 81q9.5 45 9.5 91z" />
-<glyph unicode="&#272;" horiz-adv-x="723" d="M0 394h97v306q20 3 46.5 4.5q26.5 1.5 55 2.5q28.5 1 56 1.5q27.5 0.5 50.5 0.5q92 0 159.5 -26.5q67.5 -26.5 112 -73.5q44.5 -47 66.5 -112q22 -65 22 -142q0 -70 -20.5 -135.5q-20.5 -65.5 -65.5 -116.5q-45 -51 -115.5 -82q-70.5 -31 -170.5 -31q-17 0 -45.5 1q-28.5 1 -58.5 2q-30 1 -55.5 2.5q-25.5 1.5 -36.5 3.5l0 329h-97zM197 394h160v-66h-160v-246q5 -1 19.5 -1.5q14.5 -0.5 30.5 -1q16 -0.5 30 -1q14 -0.5 20 -0.5q75 0 125.5 23.5q50.5 23.5 81 62.5q30.5 39 43 88.5q12.5 49.5 12.5 102.5q0 45 -12 92q-12 47 -41 85.5q-29 38.5 -77 63.5q-48 25 -121 25q-14 0 -30 0q-16 0 -32 -1q-16 -1 -29 -2q-13 -1 -20 -2z" />
-<glyph unicode="&#273;" horiz-adv-x="630" d="M538 649h92v-61h-92v-406q0 -51 1.5 -95.5q1.5 -44.5 9.5 -87.5l-61 0l-23 80h-10q-23 -40 -67.5 -66q-44.5 -26 -103.5 -26q-113 0 -168.5 67q-55.5 67 -55.5 206q0 134 68.5 205.5q68.5 71.5 192.5 71.5q21 0 37.5 -1.5q16.5 -1.5 31 -3.5q14.5 -2 28 -6q13.5 -4 28.5 -8l0 70h-185v61h185v52h92zM446 429q-23 17 -49.5 23.5q-26.5 6.5 -70.5 6.5q-81 0 -125.5 -47q-44.5 -47 -44.5 -153q0 -42 8 -77.5q8 -35.5 25 -61.5q17 -26 45 -40.5q28 -14.5 69 -14.5q61 0 95 30.5q34 30.5 48 90.5z" />
-<glyph unicode="&#274;" horiz-adv-x="585" d="M89 700h423v-86h-323v-213h295v-86h-295v-229h328v-86h-428zM118 836h350v-68l-350 0z" />
-<glyph unicode="&#275;" horiz-adv-x="598" d="M515 43q-35 -26 -87 -41.5q-52 -15.5 -113 -15.5q-66 0 -114.5 19.5q-48.5 19.5 -79.5 55.5q-31 36 -46 87q-15 51 -15 114q0 135 66.5 206.5q66.5 71.5 189.5 71.5q39 0 78 -8.5q39 -8.5 70 -32q31 -23.5 50.5 -64.5q19.5 -41 19.5 -107q0 -16 -1 -37q-1 -21 -4 -41l-375 0q2 -92 44 -139q42 -47 143 -47q42 0 80 14.5q38 14.5 59 34.5zM446 316q2 80 -32.5 113q-34.5 33 -96.5 33q-70 0 -111 -33q-41 -33 -48 -113zM141 666h328v-69l-328 0z" />
-<glyph unicode="&#278;" horiz-adv-x="585" d="M89 700h423v-86h-323v-213h295v-86h-295v-229h328v-86h-428zM229 798q0 22 19 38q19 16 53 16q34 0 53.5 -16q19.5 -16 19.5 -38q0 -24 -19.5 -39.5q-19.5 -15.5 -53.5 -15.5q-34 0 -53 15.5t-19 39.5z" />
-<glyph unicode="&#279;" horiz-adv-x="598" d="M515 43q-35 -26 -87 -41.5q-52 -15.5 -113 -15.5q-66 0 -114.5 19.5q-48.5 19.5 -79.5 55.5q-31 36 -46 87q-15 51 -15 114q0 135 66.5 206.5q66.5 71.5 189.5 71.5q39 0 78 -8.5q39 -8.5 70 -32q31 -23.5 50.5 -64.5q19.5 -41 19.5 -107q0 -16 -1 -37q-1 -21 -4 -41l-375 0q2 -92 44 -139q42 -47 143 -47q42 0 80 14.5q38 14.5 59 34.5zM446 316q2 80 -32.5 113q-34.5 33 -96.5 33q-70 0 -111 -33q-41 -33 -48 -113zM244 650q0 23 18 41.5q18 18.5 47 18.5q29 0 48 -18.5q19 -18.5 19 -41.5q0 -23 -19 -40.5q-19 -17.5 -48 -17.5q-29 0 -47 17.5t-18 40.5z" />
-<glyph unicode="&#280;" horiz-adv-x="585" d="M89 700h423v-86h-323v-213h295v-86h-295v-229h328v-86h-21q-34 -17 -54 -39.5q-20 -22.5 -19 -52.5q1 -23 16 -39q15 -16 44 -16q10 0 22 2.5q12 2.5 25 7.5l12 -46q-17 -12 -47 -18.5q-30 -6.5 -57 -6.5q-51 0 -80.5 24.5q-29.5 24.5 -29.5 67.5q0 40 31.5 69.5q31.5 29.5 84.5 46.5l-355 0z" />
-<glyph unicode="&#281;" horiz-adv-x="598" d="M515 43q-33 -25 -76 -38l1 0q-33 -17 -51.5 -42.5q-18.5 -25.5 -17.5 -56.5q1 -23 17 -40q16 -17 45 -17q20 0 44 9l12 -41q-18 -12 -46.5 -18.5q-28.5 -6.5 -53.5 -6.5q-52 0 -82.5 24q-30.5 24 -30.5 66q0 32 20.5 59.5q20.5 27.5 55.5 46.5q-9 -1 -18.5 -1.5q-9.5 -0.5 -18.5 -0.5q-66 0 -114.5 19.5q-48.5 19.5 -79.5 55.5q-31 36 -46 87q-15 51 -15 114q0 135 66.5 206.5q66.5 71.5 189.5 71.5q39 0 78 -8.5q39 -8.5 70 -32q31 -23.5 50.5 -64.5q19.5 -41 19.5 -107q0 -16 -1 -37q-1 -21 -4 -41l-375 0q2 -92 44 -139q42 -47 143 -47q42 0 80 14.5q38 14.5 59 34.5zM446 316q2 80 -32.5 113q-34.5 33 -96.5 33q-70 0 -111 -33q-41 -33 -48 -113z" />
-<glyph unicode="&#282;" horiz-adv-x="585" d="M89 700h423v-86h-323v-213h295v-86h-295v-229h328v-86h-428zM323 744h-69l-139 101v25h93l64 -49l19 -33l21 32l68 50h89l0 -26z" />
-<glyph unicode="&#283;" horiz-adv-x="598" d="M515 43q-35 -26 -87 -41.5q-52 -15.5 -113 -15.5q-66 0 -114.5 19.5q-48.5 19.5 -79.5 55.5q-31 36 -46 87q-15 51 -15 114q0 135 66.5 206.5q66.5 71.5 189.5 71.5q39 0 78 -8.5q39 -8.5 70 -32q31 -23.5 50.5 -64.5q19.5 -41 19.5 -107q0 -16 -1 -37q-1 -21 -4 -41l-375 0q2 -92 44 -139q42 -47 143 -47q42 0 80 14.5q38 14.5 59 34.5zM446 316q2 80 -32.5 113q-34.5 33 -96.5 33q-70 0 -111 -33q-41 -33 -48 -113zM328 586h-49l-129 187h87l44 -68l28 -71l29 70l49 69l78 0z" />
-<glyph unicode="&#284;" horiz-adv-x="668" d="M348 353h262v-309q-18 -14 -43 -24.5q-25 -10.5 -53.5 -17.5q-28.5 -7 -58.5 -11q-30 -4 -59 -4q-72 0 -133.5 21.5q-61.5 21.5 -107 66.5q-45.5 45 -71.5 113.5q-26 68.5 -26 161.5q0 97 31.5 166q31.5 69 81.5 113q50 44 111.5 64q61.5 20 122.5 20q66 0 109.5 -7.5q43.5 -7.5 72.5 -18.5l-24 -85q-52 23 -150 23q-45 0 -89.5 -14q-44.5 -14 -80 -46.5q-35.5 -32.5 -57.5 -85q-22 -52.5 -22 -129.5q0 -71 18.5 -123q18.5 -52 51.5 -86q33 -34 78 -50q45 -16 98 -16q33 0 63.5 6.5q30.5 6.5 53.5 18.5l0 177l-179 18zM356 870h73l139 -100v-25h-92l-65 47l-20 35l-21 -34l-70 -48h-90l0 26z" />
-<glyph unicode="&#285;" horiz-adv-x="627" d="M537 -3q0 -103 -60.5 -153.5q-60.5 -50.5 -177.5 -50.5q-68 0 -110 8q-42 8 -72 22l22 83q13 -6 30 -12.5q17 -6.5 36 -11.5q19 -5 38.5 -8q19.5 -3 37.5 -3q49 0 81 8.5q32 8.5 51 26.5q19 18 26 46q7 28 7 67v37h-11q-16 -26 -56 -42q-40 -16 -97 -16q-114 0 -168 61.5q-54 61.5 -54 198.5q0 135 70 208q70 73 208 73q66 0 113.5 -8q47.5 -8 85.5 -21zM302 76q61 0 95.5 31q34.5 31 47.5 81l0 258q-23 7 -53 11q-30 4 -68 4q-78 0 -122 -49.5q-44 -49.5 -44 -151.5q0 -88 32.5 -136q32.5 -48 111.5 -48zt0 0zM302 773h41q31 -48 63 -94q32 -46 62 -93l-80 0l-45 69l-26 71l-31 -71l-48 -69l-76 0z" />
-<glyph unicode="&#286;" horiz-adv-x="668" d="M348 353h262v-309q-18 -14 -43 -24.5q-25 -10.5 -53.5 -17.5q-28.5 -7 -58.5 -11q-30 -4 -59 -4q-72 0 -133.5 21.5q-61.5 21.5 -107 66.5q-45.5 45 -71.5 113.5q-26 68.5 -26 161.5q0 97 31.5 166q31.5 69 81.5 113q50 44 111.5 64q61.5 20 122.5 20q66 0 109.5 -7.5q43.5 -7.5 72.5 -18.5l-24 -85q-52 23 -150 23q-45 0 -89.5 -14q-44.5 -14 -80 -46.5q-35.5 -32.5 -57.5 -85q-22 -52.5 -22 -129.5q0 -71 18.5 -123q18.5 -52 51.5 -86q33 -34 78 -50q45 -16 98 -16q33 0 63.5 6.5q30.5 6.5 53.5 18.5l0 177l-179 18zM239 872q19 -32 58 -49q39 -17 90 -17q53 0 89.5 19.5q36.5 19.5 53.5 46.5l44 -23q-10 -28 -28.5 -50q-18.5 -22 -43.5 -37.5q-25 -15.5 -55 -23.5q-30 -8 -61 -8q-29 0 -58 6.5q-29 6.5 -55 20.5q-26 14 -47.5 35q-21.5 21 -34.5 51z" />
-<glyph unicode="&#287;" horiz-adv-x="627" d="M537 -3q0 -103 -60.5 -153.5q-60.5 -50.5 -177.5 -50.5q-68 0 -110 8q-42 8 -72 22l22 83q13 -6 30 -12.5q17 -6.5 36 -11.5q19 -5 38.5 -8q19.5 -3 37.5 -3q49 0 81 8.5q32 8.5 51 26.5q19 18 26 46q7 28 7 67v37h-11q-16 -26 -56 -42q-40 -16 -97 -16q-114 0 -168 61.5q-54 61.5 -54 198.5q0 135 70 208q70 73 208 73q66 0 113.5 -8q47.5 -8 85.5 -21zM302 76q61 0 95.5 31q34.5 31 47.5 81l0 258q-23 7 -53 11q-30 4 -68 4q-78 0 -122 -49.5q-44 -49.5 -44 -151.5q0 -88 32.5 -136q32.5 -48 111.5 -48zt0 0zM185 759q21 -37 56.5 -56q35.5 -19 75.5 -19q39 0 72.5 18.5q33.5 18.5 53.5 56.5l45 -19q-4 -24 -18.5 -47.5q-14.5 -23.5 -37.5 -41.5q-23 -18 -53 -29.5q-30 -11.5 -63 -11.5q-65 0 -114.5 34q-49.5 34 -66.5 91z" />
-<glyph unicode="&#290;" horiz-adv-x="668" d="M348 353h262v-309q-18 -14 -43 -24.5q-25 -10.5 -53.5 -17.5q-28.5 -7 -58.5 -11q-30 -4 -59 -4q-72 0 -133.5 21.5q-61.5 21.5 -107 66.5q-45.5 45 -71.5 113.5q-26 68.5 -26 161.5q0 97 31.5 166q31.5 69 81.5 113q50 44 111.5 64q61.5 20 122.5 20q66 0 109.5 -7.5q43.5 -7.5 72.5 -18.5l-24 -85q-52 23 -150 23q-45 0 -89.5 -14q-44.5 -14 -80 -46.5q-35.5 -32.5 -57.5 -85q-22 -52.5 -22 -129.5q0 -71 18.5 -123q18.5 -52 51.5 -86q33 -34 78 -50q45 -16 98 -16q33 0 63.5 6.5q30.5 6.5 53.5 18.5l0 177l-179 18zM317 -102q0 22 17.5 36q17.5 14 40.5 14q29 0 50.5 -19q21.5 -19 21.5 -59q0 -27 -10 -48q-10 -21 -24 -36q-14 -15 -29.5 -24q-15.5 -9 -27.5 -13l-29 40q19 8 32.5 23.5q13.5 15.5 13.5 38.5q-23 -5 -39.5 9t-16.5 38z" />
-<glyph unicode="&#291;" horiz-adv-x="627" d="M537 -3q0 -103 -60.5 -153.5q-60.5 -50.5 -177.5 -50.5q-68 0 -110 8q-42 8 -72 22l22 83q13 -6 30 -12.5q17 -6.5 36 -11.5q19 -5 38.5 -8q19.5 -3 37.5 -3q49 0 81 8.5q32 8.5 51 26.5q19 18 26 46q7 28 7 67v37h-11q-16 -26 -56 -42q-40 -16 -97 -16q-114 0 -168 61.5q-54 61.5 -54 198.5q0 135 70 208q70 73 208 73q66 0 113.5 -8q47.5 -8 85.5 -21zM302 76q61 0 95.5 31q34.5 31 47.5 81l0 258q-23 7 -53 11q-30 4 -68 4q-78 0 -122 -49.5q-44 -49.5 -44 -151.5q0 -88 32.5 -136q32.5 -48 111.5 -48zt0 0zM389 648q0 -22 -17.5 -36q-17.5 -14 -40.5 -14q-29 0 -50.5 19q-21.5 19 -21.5 59q0 27 10 48q10 21 24 36q14 15 29.5 24q15.5 9 27.5 13l29 -40q-19 -8 -32.5 -23.5q-13.5 -15.5 -13.5 -38.5q23 5 39.5 -9t16.5 -38z" />
-<glyph unicode="&#292;" horiz-adv-x="733" d="M544 313h-355v-313h-100v700h100v-299h355v299h100v-700h-100zM331 870h73l139 -100v-25h-92l-65 47l-20 35l-21 -34l-70 -48h-90l0 26z" />
-<glyph unicode="&#293;" horiz-adv-x="641" d="M461 0v290q0 43 -5.5 74.5q-5.5 31.5 -20 52.5q-14.5 21 -39 31q-24.5 10 -61.5 10q-26 0 -51 -9q-25 -9 -46 -25q-21 -16 -36 -38.5q-15 -22.5 -22 -50.5l0 -335h-92v700h92v-240h11q30 36 72 58q42 22 104 22q48 0 83 -10.5q35 -10.5 58 -37q23 -26.5 34 -71q11 -44.5 11 -111.5v-310zM112 870h73l139 -100v-25h-92l-65 47l-20 35l-21 -34l-70 -48h-90l0 26z" />
-<glyph unicode="&#294;" horiz-adv-x="741" d="M7 590h87v110h100v-110h355v110h100v-110h85v-70h-85v-520h-100v313h-355v-313h-100v520h-87zM549 401v119h-355l0 -119z" />
-<glyph unicode="&#295;" horiz-adv-x="647" d="M0 634h94v66h92v-66h171v-66h-171v-108h11q30 36 72 58q42 22 104 22q48 0 83 -10.5q35 -10.5 58 -37q23 -26.5 34 -71q11 -44.5 11 -111.5v-310h-92v290q0 43 -5.5 74.5q-5.5 31.5 -20 52.5q-14.5 21 -39 31q-24.5 10 -61.5 10q-26 0 -51 -9q-25 -9 -46 -25q-21 -16 -36 -38.5q-15 -22.5 -22 -50.5l0 -335h-92v568l-94 0z" />
-<glyph unicode="&#298;" horiz-adv-x="398" d="M149 634h-80v66h260v-66h-80v-568h80v-66h-260v66h80zM24 836h350v-68l-350 0z" />
-<glyph unicode="&#299;" horiz-adv-x="317" d="M114 525h92v-525h-92zM-6 666h328v-69l-328 0z" />
-<glyph unicode="&#302;" horiz-adv-x="398" d="M149 634h-80v66h260v-66h-80v-568h80v-66h-76q-32 -17 -50.5 -40q-18.5 -23 -17.5 -52q1 -23 16 -39q15 -16 44 -16q10 0 22 2.5q12 2.5 25 7.5l12 -46q-17 -12 -47 -18.5q-30 -6.5 -57 -6.5q-51 0 -80.5 24.5q-29.5 24.5 -29.5 67.5q0 39 29.5 69q29.5 30 79.5 47l-130 0v66l80 0z" />
-<glyph unicode="&#303;" horiz-adv-x="310" d="M113 525h92v-525h-12q-35 -19 -44.5 -40.5q-9.5 -21.5 -8.5 -50.5q1 -23 16.5 -40.5q15.5 -17.5 45.5 -17.5q20 0 44 9l11 -42q-17 -11 -45.5 -18q-28.5 -7 -54.5 -7q-51 0 -81.5 25q-30.5 25 -30.5 67q0 44 28 70q28 26 83 45l-43 0zM93 645q0 23 18 41.5q18 18.5 47 18.5q29 0 48 -18.5q19 -18.5 19 -41.5q0 -23 -19 -40.5q-19 -17.5 -48 -17.5q-29 0 -47 17.5t-18 40.5z" />
-<glyph unicode="&#304;" horiz-adv-x="398" d="M149 634h-80v66h260v-66h-80v-568h80v-66h-260v66h80zM127 798q0 22 19 38q19 16 53 16q34 0 53.5 -16q19.5 -16 19.5 -38q0 -24 -19.5 -39.5q-19.5 -15.5 -53.5 -15.5q-34 0 -53 15.5t-19 39.5z" />
-<glyph unicode="&#305;" horiz-adv-x="317" d="M114 525h92v-525l-92 0z" />
-<glyph unicode="&#308;" horiz-adv-x="325" d="M125 700h100v-540q0 -78 -40.5 -124q-40.5 -46 -119.5 -46q-10 0 -23.5 1q-13.5 1 -27.5 3.5q-14 2.5 -27 5.5q-13 3 -22 7l19 83q28 -12 67 -12q45 0 59.5 29q14.5 29 14.5 80zM139 870h73l139 -100v-25h-92l-65 47l-20 35l-21 -34l-70 -48h-90l0 26z" />
-<glyph unicode="&#309;" horiz-adv-x="312" d="M112 525h92v-543q0 -97 -36.5 -144.5q-36.5 -47.5 -117.5 -47.5q-8 0 -17.5 0q-9.5 0 -20.5 2l0 76q33 -1 52.5 8q19.5 9 30 27.5q10.5 18.5 14 46q3.5 27.5 3.5 65.5zM143 773h41q31 -48 63 -94q32 -46 62 -93l-80 0l-45 69l-26 71l-31 -71l-48 -69l-76 0z" />
-<glyph unicode="&#310;" horiz-adv-x="669" d="M238 318h-49v-318h-100v700h100v-322l46 14l252 308h114l-252 -300l-47 -34l55 -40l278 -326h-126zM250 -102q0 22 17.5 36q17.5 14 40.5 14q29 0 50.5 -19q21.5 -19 21.5 -59q0 -27 -10 -48q-10 -21 -24 -36q-14 -15 -29.5 -24q-15.5 -9 -27.5 -13l-29 40q19 8 32.5 23.5q13.5 15.5 13.5 38.5q-23 -5 -39.5 9t-16.5 38z" />
-<glyph unicode="&#311;" horiz-adv-x="557" d="M237 236h-57v-236h-92v700h92v-414l52 17l174 222h108l-167 -203h1l-55 -40l63 -45l185 -237h-116zM206 -102q0 22 17.5 36q17.5 14 40.5 14q29 0 50.5 -19q21.5 -19 21.5 -59q0 -27 -10 -48q-10 -21 -24 -36q-14 -15 -29.5 -24q-15.5 -9 -27.5 -13l-29 40q19 8 32.5 23.5q13.5 15.5 13.5 38.5q-23 -5 -39.5 9t-16.5 38z" />
-<glyph unicode="&#313;" horiz-adv-x="566" d="M547 0h-458v700h100v-612h358zM254 870h132v-23l-178 -95l-81 0z" />
-<glyph unicode="&#314;" horiz-adv-x="336" d="M192 139q0 -41 15.5 -58q15.5 -17 41.5 -17q16 0 31 2q15 2 36 8l12 -68q-10 -4 -24 -7.5q-14 -3.5 -29 -6.5q-15 -3 -30 -4.5q-15 -1.5 -27 -1.5q-54 0 -86 27.5q-32 27.5 -32 91.5v595h92zM224 870h132v-23l-178 -95l-81 0z" />
-<glyph unicode="&#315;" horiz-adv-x="566" d="M547 0h-458v700h100v-612h358zM207 -102q0 22 17.5 36q17.5 14 40.5 14q29 0 50.5 -19q21.5 -19 21.5 -59q0 -27 -10 -48q-10 -21 -24 -36q-14 -15 -29.5 -24q-15.5 -9 -27.5 -13l-29 40q19 8 32.5 23.5q13.5 15.5 13.5 38.5q-23 -5 -39.5 9t-16.5 38z" />
-<glyph unicode="&#316;" horiz-adv-x="336" d="M192 139q0 -41 15.5 -58q15.5 -17 41.5 -17q16 0 31 2q15 2 36 8l12 -68q-10 -4 -24 -7.5q-14 -3.5 -29 -6.5q-15 -3 -30 -4.5q-15 -1.5 -27 -1.5q-54 0 -86 27.5q-32 27.5 -32 91.5v595h92zM133 -102q0 22 17.5 36q17.5 14 40.5 14q29 0 50.5 -19q21.5 -19 21.5 -59q0 -27 -10 -48q-10 -21 -24 -36q-14 -15 -29.5 -24q-15.5 -9 -27.5 -13l-29 40q19 8 32.5 23.5q13.5 15.5 13.5 38.5q-23 -5 -39.5 9t-16.5 38z" />
-<glyph unicode="&#317;" horiz-adv-x="566" d="M547 0h-458v700h100v-612h358zM473 700q-2 -29 -12.5 -59.5q-10.5 -30.5 -24.5 -57.5q-14 -27 -28.5 -48q-14.5 -21 -24.5 -30l-40 23q19 36 28.5 81q9.5 45 9.5 91z" />
-<glyph unicode="&#318;" horiz-adv-x="336" d="M192 139q0 -41 15.5 -58q15.5 -17 41.5 -17q16 0 31 2q15 2 36 8l12 -68q-10 -4 -24 -7.5q-14 -3.5 -29 -6.5q-15 -3 -30 -4.5q-15 -1.5 -27 -1.5q-54 0 -86 27.5q-32 27.5 -32 91.5v595h92zM358 700q-2 -29 -12.5 -59.5q-10.5 -30.5 -24.5 -57.5q-14 -27 -28.5 -48q-14.5 -21 -24.5 -30l-40 23q19 36 28.5 81q9.5 45 9.5 91z" />
-<glyph unicode="&#321;" horiz-adv-x="570" d="M15 293l78 55v352h100v-282l114 80v-89l-114 -79v-242h358v-88h-458v261l-78 -53z" />
-<glyph unicode="&#322;" horiz-adv-x="336" d="M7 289l93 65v346h92v-281l107 75v-89l-107 -74v-192q0 -41 15.5 -58q15.5 -17 41.5 -17q16 0 31 2q15 2 36 8l12 -68q-10 -4 -24 -7.5q-14 -3.5 -29 -6.5q-15 -3 -30 -4.5q-15 -1.5 -27 -1.5q-54 0 -86 27.5q-32 27.5 -32 91.5v163l-93 -64z" />
-<glyph unicode="&#323;" horiz-adv-x="735" d="M235 445l-60 98h-4l12 -98v-445h-94v710h56l357 -454l57 -93h5l-12 93v444h94v-710h-56zM435 870h132v-23l-178 -95l-81 0z" />
-<glyph unicode="&#324;" horiz-adv-x="641" d="M461 0v290q0 84 -27 126q-27 42 -96 42q-61 0 -101.5 -31.5q-40.5 -31.5 -56.5 -80.5l0 -346h-92v525h64l18 -70h9q29 36 75.5 60.5q46.5 24.5 111.5 24.5q46 0 81 -10.5q35 -10.5 58.5 -37q23.5 -26.5 35.5 -71q12 -44.5 12 -112.5v-309zM332 720h104v-23l-112 -127l-56 0z" />
-<glyph unicode="&#325;" horiz-adv-x="735" d="M235 445l-60 98h-4l12 -98v-445h-94v710h56l357 -454l57 -93h5l-12 93v444h94v-710h-56zM299 -102q0 22 17.5 36q17.5 14 40.5 14q29 0 50.5 -19q21.5 -19 21.5 -59q0 -27 -10 -48q-10 -21 -24 -36q-14 -15 -29.5 -24q-15.5 -9 -27.5 -13l-29 40q19 8 32.5 23.5q13.5 15.5 13.5 38.5q-23 -5 -39.5 9t-16.5 38z" />
-<glyph unicode="&#326;" horiz-adv-x="641" d="M461 0v290q0 84 -27 126q-27 42 -96 42q-61 0 -101.5 -31.5q-40.5 -31.5 -56.5 -80.5l0 -346h-92v525h64l18 -70h9q29 36 75.5 60.5q46.5 24.5 111.5 24.5q46 0 81 -10.5q35 -10.5 58.5 -37q23.5 -26.5 35.5 -71q12 -44.5 12 -112.5v-309zM241 -102q0 22 17.5 36q17.5 14 40.5 14q29 0 50.5 -19q21.5 -19 21.5 -59q0 -27 -10 -48q-10 -21 -24 -36q-14 -15 -29.5 -24q-15.5 -9 -27.5 -13l-29 40q19 8 32.5 23.5q13.5 15.5 13.5 38.5q-23 -5 -39.5 9t-16.5 38z" />
-<glyph unicode="&#327;" horiz-adv-x="735" d="M235 445l-60 98h-4l12 -98v-445h-94v710h56l357 -454l57 -93h5l-12 93v444h94v-710h-56zM400 744h-69l-139 101v25h93l64 -49l19 -33l21 32l68 50h89l0 -26z" />
-<glyph unicode="&#328;" horiz-adv-x="641" d="M461 0v290q0 84 -27 126q-27 42 -96 42q-61 0 -101.5 -31.5q-40.5 -31.5 -56.5 -80.5l0 -346h-92v525h64l18 -70h9q29 36 75.5 60.5q46.5 24.5 111.5 24.5q46 0 81 -10.5q35 -10.5 58.5 -37q23.5 -26.5 35.5 -71q12 -44.5 12 -112.5v-309zM336 586h-49l-129 187h87l44 -68l28 -71l29 70l49 69l78 0z" />
-<glyph unicode="&#332;" horiz-adv-x="747" d="M58 350q0 86 21.5 153.5q21.5 67.5 62 114q40.5 46.5 99 71q58.5 24.5 132.5 24.5q79 0 138.5 -26.5q59.5 -26.5 99 -74q39.5 -47.5 59 -114.5q19.5 -67 19.5 -148q0 -86 -21.5 -153.5q-21.5 -67.5 -62.5 -114q-41 -46.5 -99.5 -71q-58.5 -24.5 -132.5 -24.5q-80 0 -139 26.5q-59 26.5 -98 74q-39 47.5 -58.5 114.5q-19.5 67 -19.5 148zt0 0zM164 350q0 -57 12.5 -107q12.5 -50 38 -88q25.5 -38 65 -60q39.5 -22 93.5 -22q97 0 153.5 67q56.5 67 56.5 210q0 56 -12.5 106q-12.5 50 -38 88q-25.5 38 -65 60.5q-39.5 22.5 -94.5 22.5q-96 0 -152.5 -68q-56.5 -68 -56.5 -209zt0 0zM205 836h350v-68l-350 0z" />
-<glyph unicode="&#333;" horiz-adv-x="631" d="M60 262q0 65 17 116.5q17 51.5 50 87.5q33 36 80.5 55q47.5 19 108.5 19q64 0 112 -21q48 -21 80 -58.5q32 -37.5 47.5 -88q15.5 -50.5 15.5 -110.5q0 -64 -17.5 -115q-17.5 -51 -50 -87q-32.5 -36 -80 -55q-47.5 -19 -107.5 -19q-66 0 -114 21q-48 21 -79.5 58q-31.5 37 -47 87.5q-15.5 50.5 -15.5 109.5zt0 0zM158 262q0 -37 8.5 -72.5q8.5 -35.5 27.5 -63.5q19 -28 49 -45q30 -17 74 -17q156 0 156 198q0 39 -8.5 75q-8.5 36 -27 63.5q-18.5 27.5 -48.5 44.5q-30 17 -72 17q-78 0 -118.5 -49.5q-40.5 -49.5 -40.5 -150.5zt0 0zM146 666h328v-69l-328 0z" />
-<glyph unicode="&#336;" horiz-adv-x="747" d="M58 350q0 86 21.5 153.5q21.5 67.5 62 114q40.5 46.5 99 71q58.5 24.5 132.5 24.5q79 0 138.5 -26.5q59.5 -26.5 99 -74q39.5 -47.5 59 -114.5q19.5 -67 19.5 -148q0 -86 -21.5 -153.5q-21.5 -67.5 -62.5 -114q-41 -46.5 -99.5 -71q-58.5 -24.5 -132.5 -24.5q-80 0 -139 26.5q-59 26.5 -98 74q-39 47.5 -58.5 114.5q-19.5 67 -19.5 148zt0 0zM164 350q0 -57 12.5 -107q12.5 -50 38 -88q25.5 -38 65 -60q39.5 -22 93.5 -22q97 0 153.5 67q56.5 67 56.5 210q0 56 -12.5 106q-12.5 50 -38 88q-25.5 38 -65 60.5q-39.5 22.5 -94.5 22.5q-96 0 -152.5 -68q-56.5 -68 -56.5 -209zt0 0zM326 850h108v-16l-109 -93h-68zM509 850h115v-16l-157 -93l-69 0z" />
-<glyph unicode="&#337;" horiz-adv-x="631" d="M60 262q0 65 17 116.5q17 51.5 50 87.5q33 36 80.5 55q47.5 19 108.5 19q64 0 112 -21q48 -21 80 -58.5q32 -37.5 47.5 -88q15.5 -50.5 15.5 -110.5q0 -64 -17.5 -115q-17.5 -51 -50 -87q-32.5 -36 -80 -55q-47.5 -19 -107.5 -19q-66 0 -114 21q-48 21 -79.5 58q-31.5 37 -47 87.5q-15.5 50.5 -15.5 109.5zt0 0zM158 262q0 -37 8.5 -72.5q8.5 -35.5 27.5 -63.5q19 -28 49 -45q30 -17 74 -17q156 0 156 198q0 39 -8.5 75q-8.5 36 -27 63.5q-18.5 27.5 -48.5 44.5q-30 17 -72 17q-78 0 -118.5 -49.5q-40.5 -49.5 -40.5 -150.5zt0 0zM244 739h90v-12l-80 -117h-49zM419 739h101v-11l-132 -118l-51 0z" />
-<glyph unicode="&#338;" horiz-adv-x="1019" d="M522 605q-29 11 -68 16.5q-39 5.5 -81 5.5q-97 0 -153 -68q-56 -68 -56 -209q0 -57 12.5 -107q12.5 -50 38.5 -88q26 -38 67.5 -60q41.5 -22 98.5 -22q32 0 65 2.5q33 2.5 76 15.5zM522 0q-26 -6 -64 -9.5q-38 -3.5 -84 -3.5q-81 0 -140.5 26q-59.5 26 -98.5 74q-39 48 -58 115q-19 67 -19 148q0 174 83 268.5q83 94.5 233 94.5q49 0 82.5 -4q33.5 -4 65.5 -9l423 0v-86h-323v-213h296v-86h-296v-229h329l0 -86z" />
-<glyph unicode="&#339;" horiz-adv-x="1004" d="M156 261q0 -39 8.5 -74.5q8.5 -35.5 27.5 -62.5q19 -27 49 -43.5q30 -16.5 73 -16.5q78 0 118 47q40 47 40 150q0 40 -8.5 76.5q-8.5 36.5 -27.5 64q-19 27.5 -49 43.5q-30 16 -73 16q-78 0 -118 -48.5q-40 -48.5 -40 -151.5zt0 0zM510 82q-30 -44 -80 -70q-50 -26 -116 -26q-65 0 -113 20.5q-48 20.5 -79.5 57.5q-31.5 37 -46.5 87q-15 50 -15 110q0 133 65.5 205.5q65.5 72.5 188.5 72.5q40 0 70.5 -5.5q30.5 -5.5 54.5 -17.5q24 -12 42.5 -31q18.5 -19 35.5 -45q34 44 85 71.5q51 27.5 120 27.5q39 0 78 -8.5q39 -8.5 70 -32q31 -23.5 50.5 -64.5q19.5 -41 19.5 -106q0 -15 -0.5 -35q-0.5 -20 -5.5 -43l-374 0q1 -46 11.5 -81q10.5 -35 32.5 -59q22 -24 57 -36q35 -12 85 -12q39 0 76 11.5q37 11.5 63 30.5l33 -62q-35 -26 -86.5 -41q-51.5 -15 -109.5 -15q-70 0 -121.5 25q-51.5 25 -83.5 71zM850 316q2 79 -32.5 113q-34.5 34 -94.5 34q-69 0 -109.5 -34q-40.5 -34 -48.5 -113z" />
-<glyph unicode="&#340;" horiz-adv-x="653" d="M89 693q21 4 46.5 7q25.5 3 51.5 5q26 2 52 3q26 1 49 1q50 0 96.5 -10q46.5 -10 82 -33q35.5 -23 57 -60q21.5 -37 21.5 -91q0 -42 -13 -76q-13 -34 -36 -60q-23 -26 -54.5 -43.5q-31.5 -17.5 -68.5 -26.5l52 -35l188 -274h-115l-208 295l-101 14v-309h-100zM291 623q-14 0 -28.5 0q-14.5 0 -28.5 -1q-14 -1 -26 -2q-12 -1 -19 -3l0 -242h82q36 0 66.5 7.5q30.5 7.5 53 23q22.5 15.5 35.5 40.5q13 25 13 61q0 54 -38 85q-38 31 -110 31zt0 0zM345 870h132v-23l-178 -95l-81 0z" />
-<glyph unicode="&#341;" horiz-adv-x="380" d="M362 438q-17 5 -33 9q-16 4 -30 4q-53 0 -82.5 -27q-29.5 -27 -36.5 -68l0 -356h-92v525h64l18 -70h9q23 39 53.5 60.5q30.5 21.5 76.5 21.5q14 0 33 -2.5q19 -2.5 38 -8.5zM210 720h104v-23l-112 -127l-56 0z" />
-<glyph unicode="&#342;" horiz-adv-x="653" d="M89 693q21 4 46.5 7q25.5 3 51.5 5q26 2 52 3q26 1 49 1q50 0 96.5 -10q46.5 -10 82 -33q35.5 -23 57 -60q21.5 -37 21.5 -91q0 -42 -13 -76q-13 -34 -36 -60q-23 -26 -54.5 -43.5q-31.5 -17.5 -68.5 -26.5l52 -35l188 -274h-115l-208 295l-101 14v-309h-100zM291 623q-14 0 -28.5 0q-14.5 0 -28.5 -1q-14 -1 -26 -2q-12 -1 -19 -3l0 -242h82q36 0 66.5 7.5q30.5 7.5 53 23q22.5 15.5 35.5 40.5q13 25 13 61q0 54 -38 85q-38 31 -110 31zt0 0zM258 -102q0 22 17.5 36q17.5 14 40.5 14q29 0 50.5 -19q21.5 -19 21.5 -59q0 -27 -10 -48q-10 -21 -24 -36q-14 -15 -29.5 -24q-15.5 -9 -27.5 -13l-29 40q19 8 32.5 23.5q13.5 15.5 13.5 38.5q-23 -5 -39.5 9t-16.5 38z" />
-<glyph unicode="&#343;" horiz-adv-x="380" d="M362 438q-17 5 -33 9q-16 4 -30 4q-53 0 -82.5 -27q-29.5 -27 -36.5 -68l0 -356h-92v525h64l18 -70h9q23 39 53.5 60.5q30.5 21.5 76.5 21.5q14 0 33 -2.5q19 -2.5 38 -8.5zM96 -102q0 22 17.5 36q17.5 14 40.5 14q29 0 50.5 -19q21.5 -19 21.5 -59q0 -27 -10 -48q-10 -21 -24 -36q-14 -15 -29.5 -24q-15.5 -9 -27.5 -13l-29 40q19 8 32.5 23.5q13.5 15.5 13.5 38.5q-23 -5 -39.5 9t-16.5 38z" />
-<glyph unicode="&#344;" horiz-adv-x="653" d="M89 693q21 4 46.5 7q25.5 3 51.5 5q26 2 52 3q26 1 49 1q50 0 96.5 -10q46.5 -10 82 -33q35.5 -23 57 -60q21.5 -37 21.5 -91q0 -42 -13 -76q-13 -34 -36 -60q-23 -26 -54.5 -43.5q-31.5 -17.5 -68.5 -26.5l52 -35l188 -274h-115l-208 295l-101 14v-309h-100zM291 623q-14 0 -28.5 0q-14.5 0 -28.5 -1q-14 -1 -26 -2q-12 -1 -19 -3l0 -242h82q36 0 66.5 7.5q30.5 7.5 53 23q22.5 15.5 35.5 40.5q13 25 13 61q0 54 -38 85q-38 31 -110 31zt0 0zM307 744h-69l-139 101v25h93l64 -49l19 -33l21 32l68 50h89l0 -26z" />
-<glyph unicode="&#345;" horiz-adv-x="380" d="M362 438q-17 5 -33 9q-16 4 -30 4q-53 0 -82.5 -27q-29.5 -27 -36.5 -68l0 -356h-92v525h64l18 -70h9q23 39 53.5 60.5q30.5 21.5 76.5 21.5q14 0 33 -2.5q19 -2.5 38 -8.5zM240 586h-49l-129 187h87l44 -68l28 -71l29 70l49 69l78 0z" />
-<glyph unicode="&#346;" horiz-adv-x="581" d="M433 184q0 41 -27 65q-27 24 -68 41.5q-41 17.5 -88 33q-47 15.5 -88 39.5q-41 24 -68 62q-27 38 -27 99q0 85 62.5 137q62.5 52 178.5 52q67 0 123 -10q56 -10 88 -26l-31 -84q-25 13 -75 23.5q-50 10.5 -110 10.5q-68 0 -102 -29q-34 -29 -34 -67q0 -39 27 -63q27 -24 68 -42.5q41 -18.5 88 -35.5q47 -17 88 -42q41 -25 68 -61.5q27 -36.5 27 -93.5q0 -47 -18 -85q-18 -38 -52 -65q-34 -27 -82 -41.5q-48 -14.5 -109 -14.5q-82 0 -138.5 12.5q-56.5 12.5 -85.5 26.5l33 87q25 -13 75.5 -26.5q50.5 -13.5 111.5 -13.5q35 0 65 6.5q30 6.5 52.5 20q22.5 13.5 35 34.5q12.5 21 12.5 50zt0 0zM369 870h132v-23l-178 -95l-81 0z" />
-<glyph unicode="&#347;" horiz-adv-x="499" d="M353 147q0 20 -9.5 33.5q-9.5 13.5 -25.5 23q-16 9.5 -37 16.5q-21 7 -44 14q-29 8 -58.5 17.5q-29.5 9.5 -53 26q-23.5 16.5 -38.5 42.5q-15 26 -15 66q0 78 46.5 116q46.5 38 130.5 38q63 0 106 -12q43 -12 75 -26l-22 -78q-27 13 -64.5 25.5q-37.5 12.5 -82.5 12.5q-49 0 -73 -16q-24 -16 -24 -58q0 -17 9 -28.5q9 -11.5 24 -20q15 -8.5 35 -15q20 -6.5 42 -12.5q30 -8 60 -18.5q30 -10.5 55 -28q25 -17.5 40.5 -44.5q15.5 -27 15.5 -68q0 -74 -50 -120.5q-50 -46.5 -150 -46.5q-64 0 -111.5 13q-47.5 13 -79.5 30l26 80q28 -15 72 -30q44 -15 89 -15q49 0 80.5 17.5q31.5 17.5 31.5 65.5zt0 0zM265 720h104v-23l-112 -127l-56 0z" />
-<glyph unicode="&#348;" horiz-adv-x="581" d="M433 184q0 41 -27 65q-27 24 -68 41.5q-41 17.5 -88 33q-47 15.5 -88 39.5q-41 24 -68 62q-27 38 -27 99q0 85 62.5 137q62.5 52 178.5 52q67 0 123 -10q56 -10 88 -26l-31 -84q-25 13 -75 23.5q-50 10.5 -110 10.5q-68 0 -102 -29q-34 -29 -34 -67q0 -39 27 -63q27 -24 68 -42.5q41 -18.5 88 -35.5q47 -17 88 -42q41 -25 68 -61.5q27 -36.5 27 -93.5q0 -47 -18 -85q-18 -38 -52 -65q-34 -27 -82 -41.5q-48 -14.5 -109 -14.5q-82 0 -138.5 12.5q-56.5 12.5 -85.5 26.5l33 87q25 -13 75.5 -26.5q50.5 -13.5 111.5 -13.5q35 0 65 6.5q30 6.5 52.5 20q22.5 13.5 35 34.5q12.5 21 12.5 50zt0 0zM271 870h73l139 -100v-25h-92l-65 47l-20 35l-21 -34l-70 -48h-90l0 26z" />
-<glyph unicode="&#349;" horiz-adv-x="499" d="M353 147q0 20 -9.5 33.5q-9.5 13.5 -25.5 23q-16 9.5 -37 16.5q-21 7 -44 14q-29 8 -58.5 17.5q-29.5 9.5 -53 26q-23.5 16.5 -38.5 42.5q-15 26 -15 66q0 78 46.5 116q46.5 38 130.5 38q63 0 106 -12q43 -12 75 -26l-22 -78q-27 13 -64.5 25.5q-37.5 12.5 -82.5 12.5q-49 0 -73 -16q-24 -16 -24 -58q0 -17 9 -28.5q9 -11.5 24 -20q15 -8.5 35 -15q20 -6.5 42 -12.5q30 -8 60 -18.5q30 -10.5 55 -28q25 -17.5 40.5 -44.5q15.5 -27 15.5 -68q0 -74 -50 -120.5q-50 -46.5 -150 -46.5q-64 0 -111.5 13q-47.5 13 -79.5 30l26 80q28 -15 72 -30q44 -15 89 -15q49 0 80.5 17.5q31.5 17.5 31.5 65.5zt0 0zM239 773h41q31 -48 63 -94q32 -46 62 -93l-80 0l-45 69l-26 71l-31 -71l-48 -69l-76 0z" />
-<glyph unicode="&#350;" horiz-adv-x="581" d="M81 113q25 -13 75.5 -26.5q50.5 -13.5 111.5 -13.5q35 0 65 6.5q30 6.5 52.5 20q22.5 13.5 35 34.5q12.5 21 12.5 50q0 41 -27 65q-27 24 -68 41.5q-41 17.5 -88 33q-47 15.5 -88 39.5q-41 24 -68 62q-27 38 -27 99q0 85 62.5 137q62.5 52 178.5 52q67 0 123 -10q56 -10 88 -26l-31 -84q-25 13 -75 23.5q-50 10.5 -110 10.5q-68 0 -102 -29q-34 -29 -34 -67q0 -39 27 -63q27 -24 68 -42.5q41 -18.5 88 -35.5q47 -17 88 -42q41 -25 68 -61.5q27 -36.5 27 -93.5q0 -86 -57 -139.5q-57 -53.5 -159 -63.5l-25 -43q49 -8 72.5 -26q23.5 -18 23.5 -51q0 -42 -37 -67.5q-37 -25.5 -103 -25.5q-13 0 -26.5 1q-13.5 1 -27.5 4l9 36q35 -2 55 1q20 3 30 10q10 7 12.5 15.5q2.5 8.5 2.5 16.5q0 17 -25.5 26.5q-25.5 9.5 -73.5 14.5l51 85q-75 2 -127 14q-52 12 -80 25z" />
-<glyph unicode="&#351;" horiz-adv-x="499" d="M80 110q28 -15 72 -30q44 -15 89 -15q49 0 80.5 17q31.5 17 31.5 65q0 20 -9.5 33.5q-9.5 13.5 -25.5 23q-16 9.5 -37 16.5q-21 7 -44 14q-29 8 -58.5 17.5q-29.5 9.5 -53 26q-23.5 16.5 -38.5 42.5q-15 26 -15 66q0 78 46.5 116q46.5 38 130.5 38q63 0 106 -12q43 -12 75 -26l-22 -78q-27 13 -64.5 25.5q-37.5 12.5 -82.5 12.5q-49 0 -73 -16q-24 -16 -24 -58q0 -17 9 -28.5q9 -11.5 24 -20q15 -8.5 35 -15q20 -6.5 42 -12.5q30 -8 60 -18.5q30 -10.5 55 -28q25 -17.5 40.5 -44.5q15.5 -27 15.5 -68q0 -67 -40.5 -111.5q-40.5 -44.5 -123.5 -53.5l-24 -41q49 -8 72.5 -26q23.5 -18 23.5 -51q0 -42 -37 -67.5q-37 -25.5 -103 -25.5q-13 0 -26.5 1q-13.5 1 -27.5 4l9 36q35 -2 55 1q20 3 30 10q10 7 12.5 15.5q2.5 8.5 2.5 16.5q0 17 -25.5 26.5q-25.5 9.5 -73.5 14.5l50 85q-54 2 -95 14q-41 12 -70 28z" />
-<glyph unicode="&#352;" horiz-adv-x="581" d="M433 184q0 41 -27 65q-27 24 -68 41.5q-41 17.5 -88 33q-47 15.5 -88 39.5q-41 24 -68 62q-27 38 -27 99q0 85 62.5 137q62.5 52 178.5 52q67 0 123 -10q56 -10 88 -26l-31 -84q-25 13 -75 23.5q-50 10.5 -110 10.5q-68 0 -102 -29q-34 -29 -34 -67q0 -39 27 -63q27 -24 68 -42.5q41 -18.5 88 -35.5q47 -17 88 -42q41 -25 68 -61.5q27 -36.5 27 -93.5q0 -47 -18 -85q-18 -38 -52 -65q-34 -27 -82 -41.5q-48 -14.5 -109 -14.5q-82 0 -138.5 12.5q-56.5 12.5 -85.5 26.5l33 87q25 -13 75.5 -26.5q50.5 -13.5 111.5 -13.5q35 0 65 6.5q30 6.5 52.5 20q22.5 13.5 35 34.5q12.5 21 12.5 50zt0 0zM354 744h-69l-139 101v25h93l64 -49l19 -33l21 32l68 50h89l0 -26z" />
-<glyph unicode="&#353;" horiz-adv-x="499" d="M353 147q0 20 -9.5 33.5q-9.5 13.5 -25.5 23q-16 9.5 -37 16.5q-21 7 -44 14q-29 8 -58.5 17.5q-29.5 9.5 -53 26q-23.5 16.5 -38.5 42.5q-15 26 -15 66q0 78 46.5 116q46.5 38 130.5 38q63 0 106 -12q43 -12 75 -26l-22 -78q-27 13 -64.5 25.5q-37.5 12.5 -82.5 12.5q-49 0 -73 -16q-24 -16 -24 -58q0 -17 9 -28.5q9 -11.5 24 -20q15 -8.5 35 -15q20 -6.5 42 -12.5q30 -8 60 -18.5q30 -10.5 55 -28q25 -17.5 40.5 -44.5q15.5 -27 15.5 -68q0 -74 -50 -120.5q-50 -46.5 -150 -46.5q-64 0 -111.5 13q-47.5 13 -79.5 30l26 80q28 -15 72 -30q44 -15 89 -15q49 0 80.5 17.5q31.5 17.5 31.5 65.5zt0 0zM272 586h-49l-129 187h87l44 -68l28 -71l29 70l49 69l78 0z" />
-<glyph unicode="&#354;" horiz-adv-x="610" d="M255 0v612h-236v88h572v-88h-236v-612h-18l-32 -53q49 -8 72.5 -26q23.5 -18 23.5 -51q0 -42 -37 -67.5q-37 -25.5 -103 -25.5q-13 0 -26.5 1q-13.5 1 -27.5 4l9 36q35 -2 55 1q20 3 30 10q10 7 12.5 15.5q2.5 8.5 2.5 16.5q0 17 -25.5 26.5q-25.5 9.5 -73.5 14.5l59 98z" />
-<glyph unicode="&#355;" horiz-adv-x="405" d="M24 525h89v106l92 24v-130h158v-78h-158v-268q0 -63 16 -89q16 -26 55 -26q25 0 45.5 5.5q20.5 5.5 46.5 14.5l21 -65q-26 -12 -56 -20.5q-30 -8.5 -64 -11.5l-24 -40q49 -8 72.5 -26q23.5 -18 23.5 -51q0 -42 -37 -67.5q-37 -25.5 -103 -25.5q-13 0 -26.5 1q-13.5 1 -27.5 4l9 36q35 -2 55 1q20 3 30 10q10 7 12.5 15.5q2.5 8.5 2.5 16.5q0 17 -25.5 26.5q-25.5 9.5 -73.5 14.5l52 87q-51 8 -73.5 46q-22.5 38 -22.5 113v299l-89 0z" />
-<glyph unicode="&#356;" horiz-adv-x="610" d="M591 612h-236v-612h-100v612h-236v88h572zM336 744h-69l-139 101v25h93l64 -49l19 -33l21 32l68 50h89l0 -26z" />
-<glyph unicode="&#357;" horiz-adv-x="405" d="M24 525h89v106l92 24v-130h158v-78h-158v-268q0 -63 16 -89q16 -26 55 -26q25 0 45.5 5.5q20.5 5.5 46.5 14.5l21 -65q-32 -14 -68.5 -23.5q-36.5 -9.5 -78.5 -9.5q-70 0 -99.5 38q-29.5 38 -29.5 124v299h-89zM366 747q-2 -29 -12.5 -59.5q-10.5 -30.5 -24.5 -57.5q-14 -27 -28.5 -48q-14.5 -21 -24.5 -30l-40 23q19 36 28.5 81q9.5 45 9.5 91z" />
-<glyph unicode="&#362;" horiz-adv-x="710" d="M527 700h94v-457q0 -65 -18.5 -112q-18.5 -47 -52.5 -78.5q-34 -31.5 -80.5 -46.5q-46.5 -15 -103.5 -15q-135 0 -206 58.5q-71 58.5 -71 173.5v477h100v-439q0 -102 44.5 -142q44.5 -40 131.5 -40q84 0 123 44q39 44 39 141zM184 836h350v-68l-350 0z" />
-<glyph unicode="&#363;" horiz-adv-x="644" d="M180 525v-289q0 -42 5 -74q5 -32 18 -53.5q13 -21.5 35.5 -33q22.5 -11.5 57.5 -11.5q60 0 98 34q38 34 58 84l0 343h92v-376q0 -38 3 -77.5q3 -39.5 9 -71.5l-62 0l-24 87h-10q-26 -45 -72 -73q-46 -28 -115 -28q-46 0 -80.5 11q-34.5 11 -58 37.5q-23.5 26.5 -35 70.5q-11.5 44 -11.5 110v310zM144 666h328v-69l-328 0z" />
-<glyph unicode="&#364;" horiz-adv-x="710" d="M527 700h94v-457q0 -65 -18.5 -112q-18.5 -47 -52.5 -78.5q-34 -31.5 -80.5 -46.5q-46.5 -15 -103.5 -15q-135 0 -206 58.5q-71 58.5 -71 173.5v477h100v-439q0 -102 44.5 -142q44.5 -40 131.5 -40q84 0 123 44q39 44 39 141zM213 872q19 -32 58 -49q39 -17 90 -17q53 0 89.5 19.5q36.5 19.5 53.5 46.5l44 -23q-10 -28 -28.5 -50q-18.5 -22 -43.5 -37.5q-25 -15.5 -55 -23.5q-30 -8 -61 -8q-29 0 -58 6.5q-29 6.5 -55 20.5q-26 14 -47.5 35q-21.5 21 -34.5 51z" />
-<glyph unicode="&#365;" horiz-adv-x="644" d="M180 525v-289q0 -42 5 -74q5 -32 18 -53.5q13 -21.5 35.5 -33q22.5 -11.5 57.5 -11.5q60 0 98 34q38 34 58 84l0 343h92v-376q0 -38 3 -77.5q3 -39.5 9 -71.5l-62 0l-24 87h-10q-26 -45 -72 -73q-46 -28 -115 -28q-46 0 -80.5 11q-34.5 11 -58 37.5q-23.5 26.5 -35 70.5q-11.5 44 -11.5 110v310zM195 759q21 -37 56.5 -56q35.5 -19 75.5 -19q39 0 72.5 18.5q33.5 18.5 53.5 56.5l45 -19q-4 -24 -18.5 -47.5q-14.5 -23.5 -37.5 -41.5q-23 -18 -53 -29.5q-30 -11.5 -63 -11.5q-65 0 -114.5 34q-49.5 34 -66.5 91z" />
-<glyph unicode="&#366;" horiz-adv-x="710" d="M527 700h94v-457q0 -65 -18.5 -112q-18.5 -47 -52.5 -78.5q-34 -31.5 -80.5 -46.5q-46.5 -15 -103.5 -15q-135 0 -206 58.5q-71 58.5 -71 173.5v477h100v-439q0 -102 44.5 -142q44.5 -40 131.5 -40q84 0 123 44q39 44 39 141zM243 769q0 37 27 61.5q27 24.5 91 24.5q58 0 88.5 -22q30.5 -22 30.5 -64q0 -36 -29 -60q-29 -24 -90 -24q-60 0 -89 23q-29 23 -29 61zt0 0zM313 769q0 -15 11 -26q11 -11 37 -11q49 0 49 37q0 18 -12 28.5q-12 10.5 -37 10.5q-25 0 -36.5 -10.5t-11.5 -28.5z" />
-<glyph unicode="&#367;" horiz-adv-x="644" d="M180 525v-289q0 -42 5 -74q5 -32 18 -53.5q13 -21.5 35.5 -33q22.5 -11.5 57.5 -11.5q60 0 98 34q38 34 58 84l0 343h92v-376q0 -38 3 -77.5q3 -39.5 9 -71.5l-62 0l-24 87h-10q-26 -45 -72 -73q-46 -28 -115 -28q-46 0 -80.5 11q-34.5 11 -58 37.5q-23.5 26.5 -35 70.5q-11.5 44 -11.5 110v310zM209 683q0 42 29 68.5q29 26.5 80 26.5q48 0 80.5 -23.5q32.5 -23.5 32.5 -71.5q0 -20 -8.5 -37q-8.5 -17 -23.5 -29.5q-15 -12.5 -36 -20q-21 -7.5 -45 -7.5q-48 0 -78.5 24.5q-30.5 24.5 -30.5 69.5zt0 0zM266 683q0 -20 16.5 -32.5q16.5 -12.5 35.5 -12.5q23 0 39.5 11q16.5 11 16.5 34q0 23 -17 34.5q-17 11.5 -39 11.5q-20 0 -36 -11t-16 -35z" />
-<glyph unicode="&#368;" horiz-adv-x="710" d="M527 700h94v-457q0 -65 -18.5 -112q-18.5 -47 -52.5 -78.5q-34 -31.5 -80.5 -46.5q-46.5 -15 -103.5 -15q-135 0 -206 58.5q-71 58.5 -71 173.5v477h100v-439q0 -102 44.5 -142q44.5 -40 131.5 -40q84 0 123 44q39 44 39 141zM296 850h108v-16l-109 -93h-68zM479 850h115v-16l-157 -93l-69 0z" />
-<glyph unicode="&#369;" horiz-adv-x="644" d="M180 525v-289q0 -42 5 -74q5 -32 18 -53.5q13 -21.5 35.5 -33q22.5 -11.5 57.5 -11.5q60 0 98 34q38 34 58 84l0 343h92v-376q0 -38 3 -77.5q3 -39.5 9 -71.5l-62 0l-24 87h-10q-26 -45 -72 -73q-46 -28 -115 -28q-46 0 -80.5 11q-34.5 11 -58 37.5q-23.5 26.5 -35 70.5q-11.5 44 -11.5 110v310zM244 739h90v-12l-80 -117h-49zM419 739h101v-11l-132 -118l-51 0z" />
-<glyph unicode="&#370;" horiz-adv-x="708" d="M526 700h94v-457q0 -93 -37 -149.5q-37 -56.5 -101 -82.5q-32 -16 -55 -39q-23 -23 -22 -64q1 -23 16 -39q15 -16 44 -16q10 0 22 2.5q12 2.5 25 7.5l12 -46q-17 -12 -47 -18.5q-30 -6.5 -57 -6.5q-51 0 -80.5 25.5q-29.5 25.5 -29.5 68.5q0 36 16.5 62q16.5 26 45.5 43l-7 0q-135 0 -206 58.5q-71 58.5 -71 173.5v477h100v-439q0 -102 44.5 -142q44.5 -40 131.5 -40q84 0 123 44q39 44 39 141z" />
-<glyph unicode="&#371;" horiz-adv-x="644" d="M180 525v-289q0 -42 5 -74q5 -32 18 -53.5q13 -21.5 35.5 -33q22.5 -11.5 57.5 -11.5q60 0 98 34q38 34 58 84l0 343h92v-376q0 -38 3 -77.5q3 -39.5 9 -71.5l-23 0q-32 -17 -47.5 -39q-15.5 -22 -14.5 -54q1 -23 16 -40q15 -17 45 -17q10 0 21.5 1.5q11.5 1.5 23.5 6.5l11 -42q-18 -11 -45.5 -17.5q-27.5 -6.5 -52.5 -6.5q-53 0 -83.5 24.5q-30.5 24.5 -30.5 65.5q0 40 33 70.5q33 30.5 84 48.5l-23 86h-10q-26 -45 -72 -73q-46 -28 -115 -28q-46 0 -80.5 11q-34.5 11 -58 37.5q-23.5 26.5 -35 70.5q-11.5 44 -11.5 110l0 310z" />
-<glyph unicode="&#376;" horiz-adv-x="617" d="M261 274l-254 426h117l175 -297l17 -64h2l19 66l167 295h106l-249 -425v-275h-100zM142 795q0 23 16.5 36q16.5 13 45.5 13q28 0 45 -13q17 -13 17 -36q0 -22 -17 -35.5q-17 -13.5 -45 -13.5q-29 0 -45.5 13.5q-16.5 13.5 -16.5 35.5zt0 0zM356 795q0 23 16.5 36q16.5 13 44.5 13q29 0 46 -13q17 -13 17 -36q0 -22 -17 -35.5q-17 -13.5 -46 -13.5q-28 0 -44.5 13.5t-16.5 35.5z" />
-<glyph unicode="&#377;" horiz-adv-x="596" d="M39 88l377 484l49 40h-426v88h518v-88l-380 -487l-47 -37h427v-88h-518zM353 870h132v-23l-178 -95l-81 0z" />
-<glyph unicode="&#378;" horiz-adv-x="515" d="M48 79l259 316l70 52h-329v78h413v-79l-262 -319l-70 -49h332v-78h-413zM260 720h104v-23l-112 -127l-56 0z" />
-<glyph unicode="&#379;" horiz-adv-x="596" d="M39 88l377 484l49 40h-426v88h518v-88l-380 -487l-47 -37h427v-88h-518zM227 798q0 22 19 38q19 16 53 16q34 0 53.5 -16q19.5 -16 19.5 -38q0 -24 -19.5 -39.5q-19.5 -15.5 -53.5 -15.5q-34 0 -53 15.5t-19 39.5z" />
-<glyph unicode="&#380;" horiz-adv-x="515" d="M48 79l259 316l70 52h-329v78h413v-79l-262 -319l-70 -49h332v-78h-413zM191 650q0 23 18 41.5q18 18.5 47 18.5q29 0 48 -18.5q19 -18.5 19 -41.5q0 -23 -19 -40.5q-19 -17.5 -48 -17.5q-29 0 -47 17.5t-18 40.5z" />
-<glyph unicode="&#381;" horiz-adv-x="596" d="M39 88l377 484l49 40h-426v88h518v-88l-380 -487l-47 -37h427v-88h-518zM316 744h-69l-139 101v25h93l64 -49l19 -33l21 32l68 50h89l0 -26z" />
-<glyph unicode="&#382;" horiz-adv-x="515" d="M48 79l259 316l70 52h-329v78h413v-79l-262 -319l-70 -49h332v-78h-413zM274 586h-49l-129 187h87l44 -68l28 -71l29 70l49 69l78 0z" />
-<glyph unicode="&#383;" horiz-adv-x="331" d="M26 525h90v33q0 34 9 62.5q9 28.5 28.5 48.5q19.5 20 51.5 31.5q32 11.5 77 11.5q19 0 34.5 -1q15.5 -1 29.5 -3.5q14 -2.5 28.5 -6.5q14.5 -4 31.5 -10l-22 -75q-26 11 -49 14.5q-23 3.5 -42 3.5q-23 0 -39 -4.5q-16 -4.5 -26.5 -15.5q-10.5 -11 -15 -31.5q-4.5 -20.5 -4.5 -53.5v-529h-92v447l-90 0z" />
-<glyph unicode="&#402;" horiz-adv-x="594" d="M351 445l-88 -479q-7 -37 -19 -68.5q-12 -31.5 -32.5 -55q-20.5 -23.5 -50.5 -37q-30 -13.5 -72 -13.5q-30 0 -66.5 8q-36.5 8 -62.5 17l21 76q26 -10 48 -15.5q22 -5.5 50 -5.5q41 0 62.5 31q21.5 31 34.5 105l76 437h-91v80h105l9 42q6 37 17.5 64.5q11.5 27.5 30.5 45.5q19 18 47 27q28 9 69 9q36 0 72.5 -9q36.5 -9 64.5 -20l-26 -73q-26 10 -51.5 16q-25.5 6 -51.5 6q-39 0 -54 -21q-15 -21 -24 -73l-4 -14h131l0 -80z" />
-<glyph unicode="&#500;" horiz-adv-x="668" d="M348 353h262v-309q-18 -14 -43 -24.5q-25 -10.5 -53.5 -17.5q-28.5 -7 -58.5 -11q-30 -4 -59 -4q-72 0 -133.5 21.5q-61.5 21.5 -107 66.5q-45.5 45 -71.5 113.5q-26 68.5 -26 161.5q0 97 31.5 166q31.5 69 81.5 113q50 44 111.5 64q61.5 20 122.5 20q66 0 109.5 -7.5q43.5 -7.5 72.5 -18.5l-24 -85q-52 23 -150 23q-45 0 -89.5 -14q-44.5 -14 -80 -46.5q-35.5 -32.5 -57.5 -85q-22 -52.5 -22 -129.5q0 -71 18.5 -123q18.5 -52 51.5 -86q33 -34 78 -50q45 -16 98 -16q33 0 63.5 6.5q30.5 6.5 53.5 18.5l0 177l-179 18zM462 870h132v-23l-178 -95l-81 0z" />
-<glyph unicode="&#501;" horiz-adv-x="627" d="M537 -3q0 -103 -60.5 -153.5q-60.5 -50.5 -177.5 -50.5q-68 0 -110 8q-42 8 -72 22l22 83q13 -6 30 -12.5q17 -6.5 36 -11.5q19 -5 38.5 -8q19.5 -3 37.5 -3q49 0 81 8.5q32 8.5 51 26.5q19 18 26 46q7 28 7 67v37h-11q-16 -26 -56 -42q-40 -16 -97 -16q-114 0 -168 61.5q-54 61.5 -54 198.5q0 135 70 208q70 73 208 73q66 0 113.5 -8q47.5 -8 85.5 -21zM302 76q61 0 95.5 31q34.5 31 47.5 81l0 258q-23 7 -53 11q-30 4 -68 4q-78 0 -122 -49.5q-44 -49.5 -44 -151.5q0 -88 32.5 -136q32.5 -48 111.5 -48zt0 0zM339 720h104v-23l-112 -127l-56 0z" />
-<glyph unicode="&#536;" horiz-adv-x="581" d="M433 184q0 41 -27 65q-27 24 -68 41.5q-41 17.5 -88 33q-47 15.5 -88 39.5q-41 24 -68 62q-27 38 -27 99q0 85 62.5 137q62.5 52 178.5 52q67 0 123 -10q56 -10 88 -26l-31 -84q-25 13 -75 23.5q-50 10.5 -110 10.5q-68 0 -102 -29q-34 -29 -34 -67q0 -39 27 -63q27 -24 68 -42.5q41 -18.5 88 -35.5q47 -17 88 -42q41 -25 68 -61.5q27 -36.5 27 -93.5q0 -47 -18 -85q-18 -38 -52 -65q-34 -27 -82 -41.5q-48 -14.5 -109 -14.5q-82 0 -138.5 12.5q-56.5 12.5 -85.5 26.5l33 87q25 -13 75.5 -26.5q50.5 -13.5 111.5 -13.5q35 0 65 6.5q30 6.5 52.5 20q22.5 13.5 35 34.5q12.5 21 12.5 50zt0 0zM221 -102q0 22 17.5 36q17.5 14 40.5 14q29 0 50.5 -19q21.5 -19 21.5 -59q0 -27 -10 -48q-10 -21 -24 -36q-14 -15 -29.5 -24q-15.5 -9 -27.5 -13l-29 40q19 8 32.5 23.5q13.5 15.5 13.5 38.5q-23 -5 -39.5 9t-16.5 38z" />
-<glyph unicode="&#537;" horiz-adv-x="499" d="M353 147q0 20 -9.5 33.5q-9.5 13.5 -25.5 23q-16 9.5 -37 16.5q-21 7 -44 14q-29 8 -58.5 17.5q-29.5 9.5 -53 26q-23.5 16.5 -38.5 42.5q-15 26 -15 66q0 78 46.5 116q46.5 38 130.5 38q63 0 106 -12q43 -12 75 -26l-22 -78q-27 13 -64.5 25.5q-37.5 12.5 -82.5 12.5q-49 0 -73 -16q-24 -16 -24 -58q0 -17 9 -28.5q9 -11.5 24 -20q15 -8.5 35 -15q20 -6.5 42 -12.5q30 -8 60 -18.5q30 -10.5 55 -28q25 -17.5 40.5 -44.5q15.5 -27 15.5 -68q0 -74 -50 -120.5q-50 -46.5 -150 -46.5q-64 0 -111.5 13q-47.5 13 -79.5 30l26 80q28 -15 72 -30q44 -15 89 -15q49 0 80.5 17.5q31.5 17.5 31.5 65.5zt0 0zM181 -102q0 22 17.5 36q17.5 14 40.5 14q29 0 50.5 -19q21.5 -19 21.5 -59q0 -27 -10 -48q-10 -21 -24 -36q-14 -15 -29.5 -24q-15.5 -9 -27.5 -13l-29 40q19 8 32.5 23.5q13.5 15.5 13.5 38.5q-23 -5 -39.5 9t-16.5 38z" />
-<glyph unicode="&#538;" horiz-adv-x="610" d="M591 612h-236v-612h-100v612h-236v88h572zM236 -102q0 22 17.5 36q17.5 14 40.5 14q29 0 50.5 -19q21.5 -19 21.5 -59q0 -27 -10 -48q-10 -21 -24 -36q-14 -15 -29.5 -24q-15.5 -9 -27.5 -13l-29 40q19 8 32.5 23.5q13.5 15.5 13.5 38.5q-23 -5 -39.5 9t-16.5 38z" />
-<glyph unicode="&#539;" horiz-adv-x="405" d="M24 525h89v106l92 24v-130h158v-78h-158v-268q0 -63 16 -89q16 -26 55 -26q25 0 45.5 5.5q20.5 5.5 46.5 14.5l21 -65q-32 -14 -68.5 -23.5q-36.5 -9.5 -78.5 -9.5q-70 0 -99.5 38q-29.5 38 -29.5 124v299h-89zM150 -102q0 22 17.5 36q17.5 14 40.5 14q29 0 50.5 -19q21.5 -19 21.5 -59q0 -27 -10 -48q-10 -21 -24 -36q-14 -15 -29.5 -24q-15.5 -9 -27.5 -13l-29 40q19 8 32.5 23.5q13.5 15.5 13.5 38.5q-23 -5 -39.5 9t-16.5 38z" />
-<glyph unicode="&#567;" horiz-adv-x="312" d="M112 525h92v-543q0 -97 -36.5 -144.5q-36.5 -47.5 -117.5 -47.5q-8 0 -17.5 0q-9.5 0 -20.5 2l0 76q33 -1 52.5 8q19.5 9 30 27.5q10.5 18.5 14 46q3.5 27.5 3.5 65.5z" />
-<glyph unicode="&#700;" horiz-adv-x="217" d="M44 655q0 24 16.5 38.5q16.5 14.5 42.5 14.5q32 0 51.5 -19q19.5 -19 19.5 -56q0 -35 -11 -60q-11 -25 -26.5 -42q-15.5 -17 -32.5 -26.5q-17 -9.5 -29 -13.5l-28 41q24 11 39.5 28.5q15.5 17.5 14.5 43.5q-26 -5 -41.5 10t-15.5 41z" />
-<glyph unicode="&#710;" horiz-adv-x="441" d="M209 773h41q31 -48 63 -94q32 -46 62 -93l-80 0l-45 69l-26 71l-31 -71l-48 -69l-76 0z" />
-<glyph unicode="&#711;" horiz-adv-x="450" d="M247 586h-49l-129 187h87l44 -68l28 -71l29 70l49 69l78 0z" />
-<glyph unicode="&#728;" horiz-adv-x="483" d="M117 759q21 -37 56.5 -56q35.5 -19 75.5 -19q39 0 72.5 18.5q33.5 18.5 53.5 56.5l45 -19q-4 -24 -18.5 -47.5q-14.5 -23.5 -37.5 -41.5q-23 -18 -53 -29.5q-30 -11.5 -63 -11.5q-65 0 -114.5 34q-49.5 34 -66.5 91z" />
-<glyph unicode="&#729;" horiz-adv-x="252" d="M60 650q0 23 18 41.5q18 18.5 47 18.5q29 0 48 -18.5q19 -18.5 19 -41.5q0 -23 -19 -40.5q-19 -17.5 -48 -17.5q-29 0 -47 17.5t-18 40.5z" />
-<glyph unicode="&#730;" horiz-adv-x="353" d="M67 683q0 42 29 68.5q29 26.5 80 26.5q48 0 80.5 -23.5q32.5 -23.5 32.5 -71.5q0 -20 -8.5 -37q-8.5 -17 -23.5 -29.5q-15 -12.5 -36 -20q-21 -7.5 -45 -7.5q-48 0 -78.5 24.5q-30.5 24.5 -30.5 69.5zt0 0zM124 683q0 -20 16.5 -32.5q16.5 -12.5 35.5 -12.5q23 0 39.5 11q16.5 11 16.5 34q0 23 -17 34.5q-17 11.5 -39 11.5q-20 0 -36 -11t-16 -35z" />
-<glyph unicode="&#731;" horiz-adv-x="345" d="M235 0q-34 -17 -54 -39.5q-20 -22.5 -19 -52.5q1 -23 16 -39q15 -16 44 -16q10 0 22 2.5q12 2.5 25 7.5l12 -46q-17 -12 -47 -18.5q-30 -6.5 -57 -6.5q-51 0 -80.5 24.5q-29.5 24.5 -29.5 67.5q0 40 31.5 69.5q31.5 29.5 84.5 46.5z" />
-<glyph unicode="&#732;" horiz-adv-x="450" d="M67 696q32 35 58 47.5q26 12.5 49 12.5q18 0 34.5 -6.5q16.5 -6.5 33 -15q16.5 -8.5 33 -15q16.5 -6.5 35.5 -6.5q25 0 54 24l22 -48q-27 -28 -50.5 -39.5q-23.5 -11.5 -43.5 -11.5q-19 0 -36 7q-17 7 -33.5 15q-16.5 8 -33.5 15q-17 7 -36 7q-16 0 -31.5 -6q-15.5 -6 -34.5 -24z" />
-<glyph unicode="&#733;" horiz-adv-x="445" d="M106 739h90v-12l-80 -117h-49zM281 739h101v-11l-132 -118l-51 0z" />
-<glyph unicode="&#769;" horiz-adv-x="2" d="M-208 720h104v-23l-112 -127l-56 0z" />
-<glyph unicode="&#916;" horiz-adv-x="625" d="M16 0v45l276 665h43l279 -665v-45zM126 86h373l-161 379l-27 100h-2l-30 -101z" />
-<glyph unicode="&#937;" horiz-adv-x="875" d="M81 82h125l101 -11v27l-57 9q-35 15 -65.5 40.5q-30.5 25.5 -53.5 60q-23 34.5 -36.5 78q-13.5 43.5 -13.5 94.5q0 76 25 137.5q25 61.5 71.5 105q46.5 43.5 112.5 67q66 23.5 147 23.5q85 0 151.5 -25q66.5 -25 112.5 -70q46 -45 69.5 -106.5q23.5 -61.5 23.5 -134.5q0 -53 -15 -96.5q-15 -43.5 -39 -77q-24 -33.5 -53.5 -57q-29.5 -23.5 -58.5 -38.5l-62 -10v-27l103 11h126v-82h-317v148q32 5 68.5 19.5q36.5 14.5 68 41.5q31.5 27 52.5 69q21 42 21 103q0 45 -14 88.5q-14 43.5 -44.5 78q-30.5 34.5 -78.5 56q-48 21.5 -115 21.5q-121 0 -185 -62.5q-64 -62.5 -64 -184.5q0 -59 19.5 -101q19.5 -42 50 -69q30.5 -27 67.5 -41.5q37 -14.5 72 -18.5l0 -148l-315 0z" />
-<glyph unicode="&#960;" horiz-adv-x="770" d="M601 131q0 -32 11 -44.5q11 -12.5 31 -12.5q11 0 24 1q13 1 27 4l7 -65q-17 -7 -42.5 -12.5q-25.5 -5.5 -56.5 -5.5q-53 0 -73 29.5q-20 29.5 -20 81.5v340h-223v-447h-92v447h-22q-23 0 -38 -12.5q-15 -12.5 -32 -35.5l-58 31q22 45 54 70q32 25 91 25h509v-78l-97 0z" />
-<glyph unicode="&#1025;" horiz-adv-x="585" d="M89 700h423v-86h-323v-213h295v-86h-295v-229h328v-86h-428zM125 795q0 23 16.5 36q16.5 13 45.5 13q28 0 45 -13q17 -13 17 -36q0 -22 -17 -35.5q-17 -13.5 -45 -13.5q-29 0 -45.5 13.5q-16.5 13.5 -16.5 35.5zt0 0zM339 795q0 23 16.5 36q16.5 13 44.5 13q29 0 46 -13q17 -13 17 -36q0 -22 -17 -35.5q-17 -13.5 -46 -13.5q-28 0 -44.5 13.5t-16.5 35.5z" />
-<glyph unicode="&#1026;" horiz-adv-x="799" d="M355 0h-100v612h-236v88h572v-88h-236v-192q14 4 52 12.5q38 8.5 99 8.5q43 0 85 -10q42 -10 75.5 -34q33.5 -24 54 -65q20.5 -41 20.5 -104q0 -120 -66.5 -178q-66.5 -58 -190.5 -58q-36 0 -52 1q-16 1 -24 3l0 87q13 -2 30.5 -2.5q17.5 -0.5 47.5 -0.5q72 0 110.5 34.5q38.5 34.5 38.5 106.5q0 40 -12.5 66q-12.5 26 -34.5 41q-22 15 -51.5 21q-29.5 6 -63.5 6q-18 0 -36.5 -2.5q-18.5 -2.5 -34.5 -5.5q-16 -3 -28.5 -6.5q-12.5 -3.5 -18.5 -5.5z" />
-<glyph unicode="&#1027;" horiz-adv-x="486" d="M504 612h-315v-612h-100v700h415zM341 870h132v-23l-178 -95l-81 0z" />
-<glyph unicode="&#1028;" horiz-adv-x="637" d="M582 30q-33 -24 -83 -33.5q-50 -9.5 -107 -9.5q-67 0 -127.5 21.5q-60.5 21.5 -106.5 66q-46 44.5 -73 113q-27 68.5 -27 162.5q0 98 30 167q30 69 78 112.5q48 43.5 108 63.5q60 20 119 20q66 0 107.5 -7q41.5 -7 70.5 -18l-23 -84q-49 23 -147 23q-41 0 -80 -12q-39 -12 -71 -39q-32 -27 -54.5 -69.5q-22.5 -42.5 -29.5 -102.5l329 0v-86h-331q4 -60 24.5 -106q20.5 -46 53.5 -77q33 -31 76.5 -46.5q43.5 -15.5 94.5 -15.5q49 0 85 9q36 9 61 23z" />
-<glyph unicode="&#1029;" horiz-adv-x="581" d="M433 184q0 41 -27 65q-27 24 -68 41.5q-41 17.5 -88 33q-47 15.5 -88 39.5q-41 24 -68 62q-27 38 -27 99q0 85 62.5 137q62.5 52 178.5 52q67 0 123 -10q56 -10 88 -26l-31 -84q-25 13 -75 23.5q-50 10.5 -110 10.5q-68 0 -102 -29q-34 -29 -34 -67q0 -39 27 -63q27 -24 68 -42.5q41 -18.5 88 -35.5q47 -17 88 -42q41 -25 68 -61.5q27 -36.5 27 -93.5q0 -47 -18 -85q-18 -38 -52 -65q-34 -27 -82 -41.5q-48 -14.5 -109 -14.5q-82 0 -138.5 12.5q-56.5 12.5 -85.5 26.5l33 87q25 -13 75.5 -26.5q50.5 -13.5 111.5 -13.5q35 0 65 6.5q30 6.5 52.5 20q22.5 13.5 35 34.5t12.5 50z" />
-<glyph unicode="&#1030;" horiz-adv-x="398" d="M149 634h-80v66h260v-66h-80v-568h80v-66h-260v66l80 0z" />
-<glyph unicode="&#1031;" horiz-adv-x="398" d="M74 793q0 24 16 37.5q16 13.5 40 13.5q23 0 39 -13.5q16 -13.5 16 -37.5q0 -23 -16 -37q-16 -14 -39 -14q-24 0 -40 14q-16 14 -16 37zt0 0zM214 793q0 24 16 37.5q16 13.5 40 13.5q24 0 40 -13.5q16 -13.5 16 -37.5q0 -23 -16 -37q-16 -14 -40 -14q-24 0 -40 14q-16 14 -16 37zt0 0zM149 634h-80v66h260v-66h-80v-568h80v-66h-260v66l80 0z" />
-<glyph unicode="&#1032;" horiz-adv-x="325" d="M125 700h100v-540q0 -78 -40.5 -124q-40.5 -46 -119.5 -46q-10 0 -23.5 1q-13.5 1 -27.5 3.5q-14 2.5 -27 5.5q-13 3 -22 7l19 83q28 -12 67 -12q45 0 59.5 29q14.5 29 14.5 80z" />
-<glyph unicode="&#1033;" horiz-adv-x="1014" d="M594 700v-267q5 1 17.5 2.5q12.5 1.5 28 2.5q15.5 1 31.5 2q16 1 29 1q52 0 102 -10q50 -10 89.5 -34q39.5 -24 64 -65.5q24.5 -41.5 24.5 -104.5q0 -60 -23.5 -104.5q-23.5 -44.5 -64 -73.5q-40.5 -29 -95.5 -43.5q-55 -14.5 -119 -14.5q-15 0 -37.5 0.5q-22.5 0.5 -48 2.5q-25.5 2 -51 5q-25.5 3 -47.5 8l0 605h-220q-5 -99 -11.5 -180q-6.5 -81 -16.5 -146.5q-10 -65.5 -23.5 -115.5q-13.5 -50 -33.5 -87q-26 -48 -60 -68q-34 -20 -71 -20q-21 0 -34.5 2.5q-13.5 2.5 -27.5 7.5l13 84q12 -3 24 -3q12 0 24.5 4.5q12.5 4.5 24.5 15q12 10.5 23 29.5q15 26 28 70q13 44 23 112q10 68 16.5 162.5q6.5 94.5 9.5 220.5zM594 83q14 -4 41 -5q27 -1 54 -1q37 0 70.5 8.5q33.5 8.5 59 26.5q25.5 18 40.5 45q15 27 15 65q0 40 -16 66q-16 26 -42.5 41q-26.5 15 -60.5 20.5q-34 5.5 -69 5.5q-9 0 -23 -1q-14 -1 -27.5 -2q-13.5 -1 -25 -3q-11.5 -2 -16.5 -3z" />
-<glyph unicode="&#1034;" horiz-adv-x="1064" d="M189 700v-285h355v285h100v-284q6 1 18.5 2.5q12.5 1.5 28 2.5q15.5 1 31.5 2q16 1 29 1q52 0 102 -8.5q50 -8.5 89.5 -31q39.5 -22.5 63.5 -62.5q24 -40 24 -103q0 -60 -23 -103q-23 -43 -63.5 -71q-40.5 -28 -96 -41q-55.5 -13 -119.5 -13q-15 0 -37.5 1q-22.5 1 -48 2.5q-25.5 1.5 -51 4.5q-25.5 3 -47.5 7l0 321h-355v-327h-100v700zM644 83q14 -3 41.5 -4.5q27.5 -1.5 53.5 -1.5q39 0 72.5 7q33.5 7 58.5 23q25 16 39.5 42q14.5 26 14.5 63q0 40 -15.5 65q-15.5 25 -41.5 38.5q-26 13.5 -60 18q-34 4.5 -71 4.5q-9 0 -23 -1q-14 -1 -27.5 -2q-13.5 -1 -25 -3q-11.5 -2 -16.5 -3z" />
-<glyph unicode="&#1035;" horiz-adv-x="821" d="M355 0h-100v612h-236v88h572v-88h-236v-216q29 15 77.5 30q48.5 15 110.5 15q46 0 84.5 -10q38.5 -10 66.5 -33q28 -23 43.5 -61q15.5 -38 15.5 -93v-244h-100v222q0 133 -133 133q-51 0 -94.5 -12q-43.5 -12 -70.5 -33z" />
-<glyph unicode="&#1036;" horiz-adv-x="669" d="M238 318h-49v-318h-100v700h100v-322l46 14l252 308h114l-252 -300l-47 -34l55 -40l278 -326h-126zM367 870h132v-23l-178 -95l-81 0z" />
-<glyph unicode="&#1038;" horiz-adv-x="608" d="M311 340l27 -89h6l21 92l142 357h102l-196 -462q-29 -67 -51 -113.5q-22 -46.5 -45.5 -75.5q-23.5 -29 -50.5 -42q-27 -13 -66 -13q-36 0 -57.5 5.5q-21.5 5.5 -41.5 17.5l29 82q21 -12 39.5 -14.5q18.5 -2.5 34.5 -2.5q29 0 49.5 25.5q20.5 25.5 36.5 76.5l-285 516h115zM222 871q5 -36 30.5 -54.5q25.5 -18.5 67.5 -18.5q42 0 67.5 18.5q25.5 18.5 30.5 53.5l84 -18q-13 -55 -57 -86q-44 -31 -126 -31q-79 0 -129.5 27q-50.5 27 -60.5 88z" />
-<glyph unicode="&#1039;" horiz-adv-x="719" d="M189 700v-612h341v612h100v-700h-220l-16 -178h-63l-22 178h-220l0 700z" />
-<glyph unicode="&#1040;" horiz-adv-x="645" d="M457 183h-277l-74 -183h-98l288 710h52l289 -710h-104zM210 267h218l-81 199l-27 107h-2l-27 -109z" />
-<glyph unicode="&#1041;" horiz-adv-x="606" d="M89 700h424v-88h-324v-190q18 3 44.5 6q26.5 3 52.5 3q56 0 106.5 -10q50.5 -10 89 -34q38.5 -24 61.5 -64q23 -40 23 -100q0 -60 -23.5 -103.5q-23.5 -43.5 -62.5 -72q-39 -28.5 -91 -42.5q-52 -14 -109 -14q-18 0 -42.5 0.5q-24.5 0.5 -50.5 2.5q-26 2 -51.5 5q-25.5 3 -46.5 8zM292 77q34 0 64.5 8q30.5 8 53.5 24.5q23 16.5 36.5 41.5q13.5 25 13.5 59q0 44 -15 70.5q-15 26.5 -40.5 41q-25.5 14.5 -59 19q-33.5 4.5 -69.5 4.5q-10 0 -22.5 -1q-12.5 -1 -25.5 -2q-13 -1 -23.5 -3q-10.5 -2 -15.5 -3l0 -253q7 -2 19 -3q12 -1 26 -2q14 -1 29 -1t29 0z" />
-<glyph unicode="&#1042;" horiz-adv-x="641" d="M559 538q0 -26 -8.5 -51.5q-8.5 -25.5 -26 -48q-17.5 -22.5 -44.5 -39.5q-27 -17 -64 -25l0 -4q32 -4 62 -16q30 -12 53 -33q23 -21 37 -51q14 -30 14 -71q0 -54 -25 -93.5q-25 -39.5 -66 -65q-41 -25.5 -92.5 -37.5q-51.5 -12 -103.5 -12q-18 0 -44 0.5q-26 0.5 -54.5 2q-28.5 1.5 -57 4q-28.5 2.5 -50.5 7.5l0 689q41 7 96 11q55 4 118 4q43 0 88.5 -7.5q45.5 -7.5 82.5 -26.5q37 -19 61 -52q24 -33 24 -85zt0 0zM187 82q7 -2 21 -3q14 -1 30.5 -2q16.5 -1 33 -1.5q16.5 -0.5 30.5 -0.5q34 0 65.5 7q31.5 7 55.5 22q24 15 38.5 38q14.5 23 14.5 55q0 40 -17.5 63.5q-17.5 23.5 -45.5 36q-28 12.5 -63 16q-35 3.5 -69 3.5h-94zM242 394q19 0 44 1.5q25 1.5 42 3.5q25 7 47.5 17.5q22.5 10.5 39.5 25q17 14.5 27 34q10 19.5 10 44.5q0 34 -13.5 54.5q-13.5 20.5 -35.5 31.5q-22 11 -50 15q-28 4 -57 4q-35 0 -64.5 -1.5q-29.5 -1.5 -44.5 -3.5l0 -226z" />
-<glyph unicode="&#1043;" horiz-adv-x="486" d="M504 612h-315v-612h-100v700l415 0z" />
-<glyph unicode="&#1044;" horiz-adv-x="736" d="M708 -128h-69l-17 128h-532l-16 -128h-69v216h78q9 11 27.5 50.5q18.5 39.5 37 113q18.5 73.5 31.5 184.5q13 111 12 264l417 0v-612h100zM508 88v524h-225q-4 -106 -12.5 -189.5q-8.5 -83.5 -21 -147.5q-12.5 -64 -28 -110q-15.5 -46 -32.5 -77z" />
-<glyph unicode="&#1045;" horiz-adv-x="585" d="M89 700h423v-86h-323v-213h295v-86h-295v-229h328v-86l-428 0z" />
-<glyph unicode="&#1046;" horiz-adv-x="888" d="M392 700h94v-322l46 14l213 308h111l-216 -304l-45 -33l56 -41l239 -322h-121l-234 320h-49v-320h-94v332l-46 -14l-233 -318h-115l236 312l53 38l-51 36l-223 314h116l214 -310l49 0z" />
-<glyph unicode="&#1047;" horiz-adv-x="589" d="M149 327v78h17q9 0 23.5 0q14.5 0 30 1q15.5 1 30 1.5q14.5 0.5 23.5 2.5q54 7 92 34.5q38 27.5 38 73.5q0 31 -11.5 51.5q-11.5 20.5 -32 33q-20.5 12.5 -47.5 18q-27 5.5 -57 5.5q-58 0 -101 -9q-43 -9 -66 -20l-27 80q10 6 31 12q21 6 48.5 11q27.5 5 61 8.5q33.5 3.5 68.5 3.5q44 0 87 -8.5q43 -8.5 76.5 -28.5q33.5 -20 54.5 -53q21 -33 21 -83q0 -50 -35.5 -95q-35.5 -45 -107.5 -65l0 -4q77 -11 121.5 -53.5q44.5 -42.5 44.5 -114.5q0 -57 -25 -98.5q-25 -41.5 -65.5 -68.5q-40.5 -27 -92 -40q-51.5 -13 -105.5 -13q-72 0 -121 8.5q-49 8.5 -79 20.5l25 86q26 -11 71.5 -20q45.5 -9 111.5 -9q31 0 62 8q31 8 56 24q25 16 40.5 40.5q15.5 24.5 15.5 58.5q0 60 -46.5 88q-46.5 28 -129.5 33q-13 1 -23 1.5q-10 0.5 -24 0.5z" />
-<glyph unicode="&#1048;" horiz-adv-x="744" d="M555 463l6 77h-4l-48 -79l-359 -461h-61v700h100v-466l-9 -76h5l50 79l358 463h62v-700l-100 0z" />
-<glyph unicode="&#1049;" horiz-adv-x="744" d="M555 463l6 77h-4l-48 -79l-359 -461h-61v700h100v-466l-9 -76h5l50 79l358 463h62v-700h-100zM283 871q5 -36 30.5 -54.5q25.5 -18.5 67.5 -18.5q42 0 67.5 18.5q25.5 18.5 30.5 53.5l84 -18q-13 -55 -57 -86q-44 -31 -126 -31q-79 0 -129.5 27q-50.5 27 -60.5 88z" />
-<glyph unicode="&#1050;" horiz-adv-x="669" d="M238 318h-49v-318h-100v700h100v-322l46 14l252 308h114l-252 -300l-47 -34l55 -40l278 -326l-126 0z" />
-<glyph unicode="&#1051;" horiz-adv-x="683" d="M494 612h-220q-5 -99 -11.5 -180q-6.5 -81 -16.5 -146.5q-10 -65.5 -23.5 -115.5q-13.5 -50 -33.5 -87q-26 -48 -60 -68q-34 -20 -71 -20q-21 0 -34.5 2.5q-13.5 2.5 -27.5 7.5l13 84q12 -3 24 -3q12 0 24.5 4.5q12.5 4.5 24.5 15q12 10.5 23 29.5q15 26 28 70q13 44 23 112q10 68 16.5 162.5q6.5 94.5 9.5 220.5l412 0v-700l-100 0z" />
-<glyph unicode="&#1052;" horiz-adv-x="868" d="M679 451l11 112h-4l-43 -97l-195 -310h-30l-205 311l-41 95h-5l16 -110v-452h-94v700h75l237 -357l37 -76h2l35 78l225 355h79v-700l-100 0z" />
-<glyph unicode="&#1053;" horiz-adv-x="733" d="M544 313h-355v-313h-100v700h100v-299h355v299h100v-700l-100 0z" />
-<glyph unicode="&#1054;" horiz-adv-x="747" d="M58 350q0 86 21.5 153.5q21.5 67.5 62 114q40.5 46.5 99 71q58.5 24.5 132.5 24.5q79 0 138.5 -26.5q59.5 -26.5 99 -74q39.5 -47.5 59 -114.5q19.5 -67 19.5 -148q0 -86 -21.5 -153.5q-21.5 -67.5 -62.5 -114q-41 -46.5 -99.5 -71q-58.5 -24.5 -132.5 -24.5q-80 0 -139 26.5q-59 26.5 -98 74q-39 47.5 -58.5 114.5q-19.5 67 -19.5 148zt0 0zM164 350q0 -57 12.5 -107q12.5 -50 38 -88q25.5 -38 65 -60q39.5 -22 93.5 -22q97 0 153.5 67q56.5 67 56.5 210q0 56 -12.5 106q-12.5 50 -38 88q-25.5 38 -65 60.5q-39.5 22.5 -94.5 22.5q-96 0 -152.5 -68t-56.5 -209z" />
-<glyph unicode="&#1055;" horiz-adv-x="719" d="M530 612h-341v-612h-100v700h541v-700l-100 0z" />
-<glyph unicode="&#1056;" horiz-adv-x="614" d="M89 693q42 9 91.5 12.5q49.5 3.5 97.5 3.5q51 0 103.5 -9q52.5 -9 95.5 -33q43 -24 70.5 -66.5q27.5 -42.5 27.5 -109.5q0 -63 -25 -107.5q-25 -44.5 -66.5 -72.5q-41.5 -28 -95 -41q-53.5 -13 -110.5 -13q-6 0 -18.5 0.5q-12.5 0.5 -26 1q-13.5 0.5 -26 1.5q-12.5 1 -18.5 2l0 -262h-100zM281 623q-27 0 -52.5 -1q-25.5 -1 -39.5 -5l0 -269q5 -2 16.5 -2.5q11.5 -0.5 24 -1.5q12.5 -1 24 -1q11.5 0 17.5 0q36 0 71 5.5q35 5.5 63.5 21.5q28.5 16 46 45q17.5 29 17.5 75q0 40 -17 66q-17 26 -44 41q-27 15 -60.5 20.5t-66.5 5.5z" />
-<glyph unicode="&#1057;" horiz-adv-x="624" d="M584 30q-33 -24 -84 -33.5q-51 -9.5 -108 -9.5q-67 0 -127.5 21.5q-60.5 21.5 -106.5 66q-46 44.5 -73 113q-27 68.5 -27 162.5q0 98 30 167q30 69 78 112.5q48 43.5 108 63.5q60 20 119 20q66 0 108 -7q42 -7 71 -18l-22 -86q-49 23 -149 23q-45 0 -87.5 -14.5q-42.5 -14.5 -76 -47q-33.5 -32.5 -53.5 -85q-20 -52.5 -20 -128.5q0 -68 19 -119.5q19 -51.5 52.5 -86q33.5 -34.5 79 -52q45.5 -17.5 99.5 -17.5q49 0 85 9q36 9 61 23z" />
-<glyph unicode="&#1058;" horiz-adv-x="610" d="M591 612h-236v-612h-100v612h-236v88l572 0z" />
-<glyph unicode="&#1059;" horiz-adv-x="608" d="M311 340l27 -89h6l21 92l142 357h102l-196 -462q-29 -67 -51 -113.5q-22 -46.5 -45.5 -75.5q-23.5 -29 -50.5 -42q-27 -13 -66 -13q-36 0 -57.5 5.5q-21.5 5.5 -41.5 17.5l29 82q21 -12 39.5 -14.5q18.5 -2.5 34.5 -2.5q29 0 49.5 25.5q20.5 25.5 36.5 76.5l-285 516l115 0z" />
-<glyph unicode="&#1060;" horiz-adv-x="857" d="M380 77q-20 -3 -43.5 -4q-23.5 -1 -45.5 -1q-52 0 -97 17q-45 17 -78.5 51.5q-33.5 34.5 -53 86.5q-19.5 52 -19.5 123q0 67 19.5 120.5q19.5 53.5 55 91q35.5 37.5 85 57.5q49.5 20 109.5 20q14 0 35 -1q21 -1 33 -4l0 86h96v-89q20 5 46 6.5q26 1.5 43 1.5q52 0 97.5 -18q45.5 -18 79 -53.5q33.5 -35.5 52.5 -87.5q19 -52 19 -120q0 -70 -21.5 -124q-21.5 -54 -58 -90.5q-36.5 -36.5 -85 -55q-48.5 -18.5 -102.5 -18.5q-12 0 -34.5 1.5q-22.5 1.5 -35.5 5.5l0 -99h-96zM550 559q-15 0 -38.5 -1q-23.5 -1 -37.5 -5l0 -398q11 -2 28 -2.5q17 -0.5 33 -0.5q36 0 68 13q32 13 56 38.5q24 25.5 38 64.5q14 39 14 92q0 44 -11.5 80.5q-11.5 36.5 -32.5 63q-21 26.5 -51 41q-30 14.5 -66 14.5zt0 0zM310 152q11 0 34 0.5q23 0.5 38 5.5l0 397q-13 2 -31 3q-18 1 -34 1q-36 0 -67 -13q-31 -13 -54.5 -39.5q-23.5 -26.5 -37 -65.5q-13.5 -39 -13.5 -91q0 -45 12 -81.5q12 -36.5 34 -62.5q22 -26 52.5 -40t66.5 -14z" />
-<glyph unicode="&#1061;" horiz-adv-x="678" d="M280 356l-231 344h119l151 -230l27 -58l26 58l158 230h110l-238 -337l249 -363h-117l-167 244l-31 61l-28 -61l-171 -244l-110 0z" />
-<glyph unicode="&#1062;" horiz-adv-x="752" d="M723 -128h-69l-16 128h-549v700h100v-612h333v612h100v-612l101 0z" />
-<glyph unicode="&#1063;" horiz-adv-x="663" d="M176 700v-221q0 -67 32 -103.5q32 -36.5 101 -36.5q51 0 94.5 12q43.5 12 70.5 32l0 317h100v-700h-100v298q-29 -16 -77.5 -30.5q-48.5 -14.5 -111.5 -14.5q-47 0 -85.5 11q-38.5 11 -66 36q-27.5 25 -42.5 63.5q-15 38.5 -15 94.5l0 242z" />
-<glyph unicode="&#1064;" horiz-adv-x="959" d="M89 0v700h100v-612h241v612h100v-612h240v612h100l0 -700z" />
-<glyph unicode="&#1065;" horiz-adv-x="1000" d="M89 0v700h100v-612h240v612h100v-612h240v612h100v-612h102v-216h-69l-16 128z" />
-<glyph unicode="&#1066;" horiz-adv-x="694" d="M174 612h-176v88h276v-267q5 1 17.5 2.5q12.5 1.5 28.5 2.5q16 1 32 2q16 1 29 1q51 0 101 -10q50 -10 89.5 -34q39.5 -24 64 -65.5q24.5 -41.5 24.5 -104.5q0 -59 -23 -103.5q-23 -44.5 -63.5 -74q-40.5 -29.5 -96 -44q-55.5 -14.5 -119.5 -14.5q-15 0 -37.5 0.5q-22.5 0.5 -48 2.5q-25.5 2 -51.5 5q-26 3 -47 8zM369 77q37 0 70.5 9q33.5 9 59 27q25.5 18 40.5 45q15 27 15 64q0 40 -16 66q-16 26 -42.5 41q-26.5 15 -60 20.5q-33.5 5.5 -69.5 5.5q-9 0 -23 -1q-14 -1 -27.5 -2q-13.5 -1 -25 -3q-11.5 -2 -16.5 -3l0 -263q15 -4 42 -5t53 -1z" />
-<glyph unicode="&#1067;" horiz-adv-x="846" d="M657 700h100v-700h-100zM89 700h100v-267q6 1 16 2.5q10 1.5 22.5 2.5q12.5 1 26 2q13.5 1 26.5 1q52 0 101 -10q49 -10 87 -34.5q38 -24.5 60.5 -65.5q22.5 -41 22.5 -103q0 -60 -21.5 -105q-21.5 -45 -59.5 -74q-38 -29 -91 -43.5q-53 -14.5 -117 -14.5q-15 0 -36 0.5q-21 0.5 -44.5 2.5q-23.5 2 -47.5 5q-24 3 -45 8zM270 77q37 0 69 9q32 9 55.5 27q23.5 18 37 45q13.5 27 13.5 63q0 40 -15 66q-15 26 -39.5 41q-24.5 15 -57 21q-32.5 6 -68.5 6q-19 0 -42 -3q-23 -3 -34 -6l0 -263q14 -4 34.5 -5t46.5 -1z" />
-<glyph unicode="&#1068;" horiz-adv-x="609" d="M89 700h100v-267q5 1 17.5 2.5q12.5 1.5 28 2.5q15.5 1 31.5 2q16 1 29 1q52 0 102 -10q50 -10 89.5 -34q39.5 -24 64 -65.5q24.5 -41.5 24.5 -104.5q0 -60 -23.5 -104.5q-23.5 -44.5 -64 -73.5q-40.5 -29 -95.5 -43.5q-55 -14.5 -119 -14.5q-15 0 -37.5 0.5q-22.5 0.5 -48 2.5q-25.5 2 -51 5q-25.5 3 -47.5 8zM284 77q37 0 70.5 8.5q33.5 8.5 59 26.5q25.5 18 40.5 45q15 27 15 65q0 40 -16 66q-16 26 -42.5 41q-26.5 15 -60.5 20.5q-34 5.5 -69 5.5q-9 0 -23 -1q-14 -1 -27.5 -2q-13.5 -1 -25 -3q-11.5 -2 -16.5 -3l0 -263q14 -4 41 -5t54 -1z" />
-<glyph unicode="&#1069;" horiz-adv-x="631" d="M161 399h305q-10 116 -73 171.5q-63 55.5 -163 56.5q-53 1 -94 -10q-41 -11 -65 -25l-24 80q33 19 84.5 30q51.5 11 108.5 11q70 0 130.5 -20q60.5 -20 105.5 -63.5q45 -43.5 71 -112.5q26 -69 26 -167q0 -99 -30 -168q-30 -69 -79.5 -112.5q-49.5 -43.5 -114 -63q-64.5 -19.5 -133.5 -19.5q-55 0 -98.5 8.5q-43.5 8.5 -72.5 19.5l26 86q25 -12 65.5 -20q40.5 -8 86.5 -8q43 0 85 12.5q42 12.5 75.5 41q33.5 28.5 56 74.5q22.5 46 27.5 112l-306 0z" />
-<glyph unicode="&#1070;" horiz-adv-x="978" d="M189 401h130q11 150 88 231q77 81 214 81q79 0 136 -26q57 -26 93 -74q36 -48 53 -115q17 -67 17 -148q0 -173 -75.5 -268q-75.5 -95 -223.5 -95q-74 0 -129 23.5q-55 23.5 -92.5 66q-37.5 42.5 -57.5 102.5q-20 60 -24 134l-129 0v-313h-100v700h100zM425 350q0 -56 10.5 -106.5q10.5 -50.5 33.5 -88.5q23 -38 60.5 -60q37.5 -22 91.5 -22q97 0 145 67q48 67 48 210q0 55 -9.5 105.5q-9.5 50.5 -32 88.5q-22.5 38 -59.5 60.5q-37 22.5 -92 22.5q-97 0 -146.5 -68t-49.5 -209z" />
-<glyph unicode="&#1071;" horiz-adv-x="624" d="M535 0h-100v298l-107 -22l-187 -276h-116l169 244l66 44q-39 7 -72 22.5q-33 15.5 -57.5 40.5q-24.5 25 -38 59q-13.5 34 -13.5 79q0 61 23 103q23 42 62 68q39 26 92 37.5q53 11.5 113 11.5q37 0 81.5 -3.5q44.5 -3.5 84.5 -12.5zM363 623q-35 0 -67 -6q-32 -6 -56.5 -21q-24.5 -15 -39.5 -40.5q-15 -25.5 -15 -65.5q0 -37 14 -62.5q14 -25.5 38.5 -41q24.5 -15.5 57 -22.5q32.5 -7 69.5 -7h71v260q-14 4 -30 5t-42 1z" />
-<glyph unicode="&#1072;" horiz-adv-x="582" d="M82 492q90 43 223 43q60 0 96.5 -15.5q36.5 -15.5 56.5 -39.5q20 -24 26.5 -53.5q6.5 -29.5 6.5 -58.5q0 -55 -4 -110.5q-4 -55.5 -4 -120.5q0 -38 3.5 -73.5q3.5 -35.5 11.5 -65.5l-67 0l-25 80h-10q-11 -15 -27 -30.5q-16 -15.5 -38 -27.5q-22 -12 -50.5 -20q-28.5 -8 -65.5 -8q-37 0 -68 10.5q-31 10.5 -53.5 29.5q-22.5 19 -35.5 46.5q-13 27.5 -13 61.5q0 45 19.5 78q19.5 33 50.5 54q31 21 70.5 31q39.5 10 78.5 10q31 0 52.5 -1q21.5 -1 36 -2.5q14.5 -1.5 24.5 -3q10 -1.5 18 -2.5q2 15 3 26q1 11 1 28q0 28 -6 47q-6 19 -19.5 30.5q-13.5 11.5 -36.5 16.5q-23 5 -56 5q-19 0 -42 -3q-23 -3 -46 -8.5q-23 -5.5 -45.5 -13.5q-22.5 -8 -40.5 -17zM395 238q-8 1 -17 3q-9 2 -22.5 3q-13.5 1 -32 2q-18.5 1 -45.5 1q-62 0 -98.5 -22q-36.5 -22 -36.5 -75q0 -40 28.5 -60q28.5 -20 73.5 -20q33 0 58.5 8.5q25.5 8.5 44 21q18.5 12.5 30 28q11.5 15.5 17.5 30.5z" />
-<glyph unicode="&#1073;" horiz-adv-x="635" d="M155 419q37 50 83.5 71q46.5 21 114.5 21q105 0 163.5 -63q58.5 -63 58.5 -184q0 -69 -17.5 -121.5q-17.5 -52.5 -50.5 -87q-33 -34.5 -80 -52q-47 -17.5 -106 -17.5q-128 0 -192.5 78q-64.5 78 -64.5 245q0 90 10 153q10 63 29.5 105q19.5 42 47 66.5q27.5 24.5 61.5 37.5q34 13 74.5 18q40.5 5 86.5 9q58 5 93 11q35 6 57 21l10 -81q-23 -15 -61.5 -21.5q-38.5 -6.5 -107.5 -11.5q-48 -3 -85.5 -11q-37.5 -8 -65.5 -28q-28 -20 -45 -57.5q-17 -37.5 -23 -98.5zM162 250q0 -38 9 -71.5q9 -33.5 28.5 -59q19.5 -25.5 49.5 -40.5q30 -15 71 -15q157 0 157 191q0 38 -8.5 70.5q-8.5 32.5 -26 56.5q-17.5 24 -45 37.5q-27.5 13.5 -64.5 13.5q-90 0 -130.5 -47.5t-40.5 -135.5z" />
-<glyph unicode="&#1074;" horiz-adv-x="582" d="M88 525l38 2q32 2 70 4.5q38 2.5 88 2.5q116 0 166.5 -32.5q50.5 -32.5 50.5 -96.5q0 -35 -24.5 -70.5q-24.5 -35.5 -77.5 -51.5l0 -11q66 -13 94.5 -44q28.5 -31 28.5 -82q0 -79 -65 -116.5q-65 -37.5 -196 -37.5q-44 0 -83 2.5q-39 2.5 -76 5.5q-4 0 -7 0.5q-3 0.5 -7 0.5zM180 72q22 -3 43 -4.5q21 -1.5 52 -1.5q79 0 114 20.5q35 20.5 35 67.5q0 19 -7 35q-7 16 -23 27q-16 11 -43.5 17.5q-27.5 6.5 -67.5 6.5h-103zM294 303q22 0 42 6q20 6 36 17q16 11 25.5 25.5q9.5 14.5 9.5 31.5q0 42 -28.5 58.5q-28.5 16.5 -97.5 16.5q-23 0 -46.5 -1.5q-23.5 -1.5 -54.5 -2.5l0 -151z" />
-<glyph unicode="&#1075;" horiz-adv-x="426" d="M426 447h-246v-447h-92v525l338 0z" />
-<glyph unicode="&#1076;" horiz-adv-x="624" d="M600 -132h-63l-16 132h-442l-18 -132h-61v210h67q10 12 25.5 42q15.5 30 30.5 83.5q15 53.5 26.5 132.5q11.5 79 12.5 189l353 0v-447h85zM423 78v369h-178q-3 -45 -9 -96q-6 -51 -16.5 -100.5q-10.5 -49.5 -24.5 -94.5q-14 -45 -33 -78z" />
-<glyph unicode="&#1077;" horiz-adv-x="598" d="M515 43q-35 -26 -87 -41.5q-52 -15.5 -113 -15.5q-66 0 -114.5 19.5q-48.5 19.5 -79.5 55.5q-31 36 -46 87q-15 51 -15 114q0 135 66.5 206.5q66.5 71.5 189.5 71.5q39 0 78 -8.5q39 -8.5 70 -32q31 -23.5 50.5 -64.5q19.5 -41 19.5 -107q0 -16 -1 -37q-1 -21 -4 -41l-375 0q2 -92 44 -139q42 -47 143 -47q42 0 80 14.5q38 14.5 59 34.5zM446 316q2 80 -32.5 113q-34.5 33 -96.5 33q-70 0 -111 -33q-41 -33 -48 -113z" />
-<glyph unicode="&#1078;" horiz-adv-x="774" d="M278 232l-164 -232h-108l175 237l45 35l-63 43l-144 210h100l153 -227h66v227h90v-238l60 16l154 222h99l-151 -209l-48 -38l62 -44l164 -234h-111l-164 236h-65v-236h-90l0 248z" />
-<glyph unicode="&#1079;" horiz-adv-x="516" d="M148 233v70h77q22 0 42.5 6q20.5 6 36.5 16.5q16 10.5 25.5 25q9.5 14.5 9.5 31.5q0 42 -31 58q-31 16 -94 16q-44 0 -80.5 -9.5q-36.5 -9.5 -59.5 -19.5l-25 70q65 37 195 37q94 0 142 -33q48 -33 48 -96q0 -17 -6.5 -35q-6.5 -18 -19.5 -34.5q-13 -16.5 -31.5 -30q-18.5 -13.5 -42.5 -20.5l0 -11q68 -12 95 -44.5q27 -32.5 27 -84.5q0 -33 -15 -61.5q-15 -28.5 -45 -49.5q-30 -21 -75.5 -33q-45.5 -12 -105.5 -12q-59 0 -97.5 8q-38.5 8 -69.5 23l24 73q27 -14 65 -20q38 -6 83 -6q138 0 138 87q0 39 -33 59q-33 20 -115 20z" />
-<glyph unicode="&#1080;" horiz-adv-x="631" d="M451 300l14 104h-11l-49 -98l-246 -306h-71v525h92v-310l-7 -92h11l46 89l241 313h72v-525l-92 0z" />
-<glyph unicode="&#1081;" horiz-adv-x="631" d="M451 300l14 104h-11l-49 -98l-246 -306h-71v525h92v-310l-7 -92h11l46 89l241 313h72v-525h-92zM230 712q5 -22 14 -35q9 -13 21 -19.5q12 -6.5 27.5 -8q15.5 -1.5 32.5 -1.5q17 0 32.5 2q15.5 2 27.5 9q12 7 21 19q9 12 14 33h72q-11 -80 -57.5 -104q-46.5 -24 -111.5 -24q-31 0 -60 5q-29 5 -52.5 17q-23.5 12 -40 31.5q-16.5 19.5 -22.5 49.5z" />
-<glyph unicode="&#1082;" horiz-adv-x="547" d="M237 236h-57v-236h-92v525h92v-239l55 18l179 221h101l-171 -204h1l-54 -39l65 -45l185 -237l-116 0z" />
-<glyph unicode="&#1083;" horiz-adv-x="584" d="M404 447h-170l-2 -30q-7 -99 -16.5 -177.5q-9.5 -78.5 -27.5 -133q-18 -54.5 -48 -83q-30 -28.5 -78 -28.5q-22 0 -39 2.5q-17 2.5 -29 7.5l14 84q13 -4 29 -4q24 0 43 17.5q19 17.5 33 65.5q14 48 23 134q9 86 13 223l347 0v-525l-92 0z" />
-<glyph unicode="&#1084;" horiz-adv-x="752" d="M574 297l6 107h-12l-45 -82l-135 -199h-31l-142 199l-40 82h-11l9 -106v-298h-85v525h96l157 -231l38 -73l42 75l147 229h96v-525l-90 0z" />
-<glyph unicode="&#1085;" horiz-adv-x="624" d="M444 229h-264v-229h-92v525h92v-214h264v214h92v-525l-92 0z" />
-<glyph unicode="&#1086;" horiz-adv-x="631" d="M60 262q0 65 17 116.5q17 51.5 50 87.5q33 36 80.5 55q47.5 19 108.5 19q64 0 112 -21q48 -21 80 -58.5q32 -37.5 47.5 -88q15.5 -50.5 15.5 -110.5q0 -64 -17.5 -115q-17.5 -51 -50 -87q-32.5 -36 -80 -55q-47.5 -19 -107.5 -19q-66 0 -114 21q-48 21 -79.5 58q-31.5 37 -47 87.5q-15.5 50.5 -15.5 109.5zt0 0zM158 262q0 -37 8.5 -72.5q8.5 -35.5 27.5 -63.5q19 -28 49 -45q30 -17 74 -17q156 0 156 198q0 39 -8.5 75q-8.5 36 -27 63.5q-18.5 27.5 -48.5 44.5q-30 17 -72 17q-78 0 -118.5 -49.5t-40.5 -150.5z" />
-<glyph unicode="&#1087;" horiz-adv-x="618" d="M438 447h-258v-447h-92v525h442v-525l-92 0z" />
-<glyph unicode="&#1088;" horiz-adv-x="630" d="M88 525h62l18 -67h9q27 39 70 60.5q43 21.5 97 21.5q114 0 170 -63.5q56 -63.5 56 -202.5q0 -66 -18.5 -119.5q-18.5 -53.5 -53 -91q-34.5 -37.5 -84 -57.5q-49.5 -20 -110.5 -20q-20 0 -36.5 1.5q-16.5 1.5 -30.5 5q-14 3.5 -28 8q-14 4.5 -29 10.5l0 -211h-92zM323 462q-60 0 -94 -30q-34 -30 -49 -92l0 -242q23 -16 50 -25q27 -9 69 -9q81 0 127 53q46 53 46 158q0 85 -34 136t-115 51z" />
-<glyph unicode="&#1089;" horiz-adv-x="529" d="M484 36q-35 -25 -82 -37.5q-47 -12.5 -99 -12.5q-66 0 -112.5 20q-46.5 20 -75.5 56q-29 36 -42 87q-13 51 -13 113q0 133 64.5 205.5q64.5 72.5 185.5 72.5q53 0 92 -9.5q39 -9.5 70 -23.5l-24 -75q-27 14 -58.5 22q-31.5 8 -68.5 8q-163 0 -163 -200q0 -38 9 -73.5q9 -35.5 29 -63q20 -27.5 52.5 -44.5q32.5 -17 79.5 -17q42 0 73.5 11.5q31.5 11.5 52.5 27.5z" />
-<glyph unicode="&#1090;" horiz-adv-x="456" d="M456 447h-182v-447h-92v447h-182v78l456 0z" />
-<glyph unicode="&#1091;" horiz-adv-x="531" d="M251 193l31 -101h13l25 102l109 331h94l-172 -475q-19 -49 -38.5 -95q-19.5 -46 -43 -81.5q-23.5 -35.5 -52 -57q-28.5 -21.5 -65.5 -21.5q-40 0 -68 9l15 78q15 -5 30 -5q20 0 36.5 5q16.5 5 30.5 18q14 13 25.5 36.5q11.5 23.5 21.5 60.5l-235 528l109 0z" />
-<glyph unicode="&#1092;" horiz-adv-x="800" d="M355 -3q-24 -8 -45.5 -9.5q-21.5 -1.5 -38.5 -1.5q-104 0 -160.5 68.5q-56.5 68.5 -56.5 207.5q0 131 62 202q62 71 180 71q14 0 28.5 -1q14.5 -1 30.5 -5l0 171h90v-172q26 5 43 6q17 1 30 1q113 0 170.5 -62q57.5 -62 57.5 -200q0 -64 -15.5 -117q-15.5 -53 -45 -90.5q-29.5 -37.5 -73 -58.5q-43.5 -21 -98.5 -21q-11 0 -32 2.5q-21 2.5 -37 7.5l0 -196h-90zM498 461q-16 0 -27 -1q-11 -1 -28 -6l0 -390q15 -3 29.5 -3.5q14.5 -0.5 31.5 -0.5q74 0 111 55q37 55 37 158q0 43 -8 78q-8 35 -26 59.5q-18 24.5 -47.5 37.5q-29.5 13 -72.5 13zt0 0zM297 60q13 0 26.5 1q13.5 1 33.5 5l0 388q-18 4 -30 5.5q-12 1.5 -28 1.5q-72 0 -111.5 -48.5q-39.5 -48.5 -39.5 -150.5q0 -43 8.5 -80q8.5 -37 27 -64q18.5 -27 46.5 -42.5t67 -15.5z" />
-<glyph unicode="&#1093;" horiz-adv-x="592" d="M233 269l-189 256h117l102 -134l35 -71l41 71l106 134h104l-191 -252q50 -67 102 -136q52 -69 102 -137l-114 0l-115 149l-40 75l-41 -75l-116 -149l-106 0z" />
-<glyph unicode="&#1094;" horiz-adv-x="630" d="M610 -132h-62l-17 132h-443v525h92v-447h253v447h92v-447l85 0z" />
-<glyph unicode="&#1095;" horiz-adv-x="574" d="M152 525v-129q0 -32 3.5 -57q3.5 -25 15 -43q11.5 -18 32 -27.5q20.5 -9.5 53.5 -9.5q51 0 85.5 11.5q34.5 11.5 52.5 25.5l0 229h92v-525h-92v223q-19 -12 -58 -27q-39 -15 -104 -15q-42 0 -74.5 9q-32.5 9 -54 31q-21.5 22 -32.5 58.5q-11 36.5 -11 91.5l0 154z" />
-<glyph unicode="&#1096;" horiz-adv-x="856" d="M88 0v525h92v-447h202v447h92v-447h202v447h92l0 -525z" />
-<glyph unicode="&#1097;" horiz-adv-x="872" d="M852 -132h-61l-17 132h-686v525h92v-447h202v447h92v-447h202v447h92v-447l84 0z" />
-<glyph unicode="&#1098;" horiz-adv-x="583" d="M227 78q43 -6 86 -6q73 0 107.5 25.5q34.5 25.5 34.5 70.5q0 40 -33.5 67q-33.5 27 -105.5 27q-20 0 -43 -1.5q-23 -1.5 -46 -6.5zM227 324q32 5 60 6.5q28 1.5 49 1.5q59 0 100.5 -12q41.5 -12 67.5 -33q26 -21 37.5 -49.5q11.5 -28.5 11.5 -61.5q0 -95 -63 -138.5q-63 -43.5 -196 -43.5q-42 0 -81 1q-39 1 -78 4l0 448h-129v78l221 0z" />
-<glyph unicode="&#1099;" horiz-adv-x="771" d="M180 78q42 -6 86 -6q72 0 101 25q29 25 29 71q0 40 -28.5 67q-28.5 27 -98.5 27q-19 0 -42.5 -1.5q-23.5 -1.5 -46.5 -6.5zM180 324q32 5 59.5 6.5q27.5 1.5 49.5 1.5q58 0 97.5 -12q39.5 -12 63.5 -33q24 -21 34 -49.5q10 -28.5 10 -61.5q0 -95 -58 -138.5q-58 -43.5 -189 -43.5q-42 0 -81 1q-39 1 -78 4l0 526h92zM591 525h92v-525l-92 0z" />
-<glyph unicode="&#1100;" horiz-adv-x="535" d="M180 78q42 -6 85 -6q73 0 107.5 25.5q34.5 25.5 34.5 70.5q0 40 -33.5 67q-33.5 27 -105.5 27q-19 0 -42 -1.5q-23 -1.5 -46 -6.5zM180 324q32 5 59 6.5q27 1.5 48 1.5q60 0 101.5 -12q41.5 -12 67.5 -33q26 -21 37.5 -49.5q11.5 -28.5 11.5 -61.5q0 -95 -63 -138.5q-63 -43.5 -197 -43.5q-42 0 -80 1q-38 1 -77 4l0 526l92 0z" />
-<glyph unicode="&#1101;" horiz-adv-x="543" d="M143 304h241q-6 72 -47.5 115q-41.5 43 -119.5 43q-47 0 -81.5 -12.5q-34.5 -12.5 -57.5 -26.5l-30 68q35 23 81 36q46 13 108 13q63 0 109.5 -19q46.5 -19 77 -55q30.5 -36 45 -87.5q14.5 -51.5 14.5 -116.5q0 -134 -68 -205q-68 -71 -187 -71q-54 0 -102 8.5q-48 8.5 -78 25.5l25 76q27 -14 65 -23q38 -9 76 -9q81 0 122.5 38.5q41.5 38.5 48.5 123.5l-242 0z" />
-<glyph unicode="&#1102;" horiz-adv-x="841" d="M543 -14q-62 0 -106 18q-44 18 -73 50q-29 32 -43.5 77.5q-14.5 45.5 -18.5 100.5l-122 0v-232h-92v525h92v-215h123q10 109 68.5 169.5q58.5 60.5 173.5 60.5q63 0 107.5 -20.5q44.5 -20.5 73 -57.5q28.5 -37 42 -88q13.5 -51 13.5 -112q0 -130 -59 -203q-59 -73 -179 -73zt0 0zM394 262q0 -41 7 -77q7 -36 24 -63q17 -27 46 -42.5q29 -15.5 73 -15.5q75 0 107 48q32 48 32 150q0 40 -6.5 76.5q-6.5 36.5 -22.5 64q-16 27.5 -43 43.5q-27 16 -68 16q-79 0 -114 -48.5t-35 -151.5z" />
-<glyph unicode="&#1103;" horiz-adv-x="578" d="M398 207l-95 -13l-149 -194h-114l132 172v-1l56 38q-70 8 -110.5 49.5q-40.5 41.5 -40.5 101.5q0 47 18 81q18 34 51.5 56q33.5 22 81 32q47.5 10 106.5 10q38 0 79.5 -5q41.5 -5 76.5 -13l0 -521h-92zM398 264v189q-16 5 -36.5 6.5q-20.5 1.5 -35.5 1.5q-75 0 -113 -24q-38 -24 -38 -76q0 -50 44.5 -75q44.5 -25 116.5 -23z" />
-<glyph unicode="&#1105;" horiz-adv-x="598" d="M515 43q-35 -26 -87 -41.5q-52 -15.5 -113 -15.5q-66 0 -114.5 19.5q-48.5 19.5 -79.5 55.5q-31 36 -46 87q-15 51 -15 114q0 135 66.5 206.5q66.5 71.5 189.5 71.5q39 0 78 -8.5q39 -8.5 70 -32q31 -23.5 50.5 -64.5q19.5 -41 19.5 -107q0 -16 -1 -37q-1 -21 -4 -41l-375 0q2 -92 44 -139q42 -47 143 -47q42 0 80 14.5q38 14.5 59 34.5zM446 316q2 80 -32.5 113q-34.5 33 -96.5 33q-70 0 -111 -33q-41 -33 -48 -113zM141 633q0 24 16 40q16 16 42 16q25 0 40.5 -16q15.5 -16 15.5 -40q0 -23 -15.5 -39q-15.5 -16 -40.5 -16q-26 0 -42 16q-16 16 -16 39zt0 0zM356 633q0 24 15.5 40q15.5 16 41.5 16q26 0 41.5 -16q15.5 -16 15.5 -40q0 -23 -15.5 -39q-15.5 -16 -41.5 -16q-26 0 -41.5 16t-15.5 39z" />
-<glyph unicode="&#1106;" horiz-adv-x="636" d="M0 600h97v100h92v-100h168v-66h-168v-162h11q31 36 73 57q42 21 104 21q48 0 83.5 -10.5q35.5 -10.5 58.5 -37q23 -26.5 34 -71q11 -44.5 11 -113.5v-242q0 -93 -33.5 -137.5q-33.5 -44.5 -109.5 -44.5q-20 0 -42 3l0 75q31 -1 49 6.5q18 7.5 28 23.5q10 16 13 41q3 25 3 58v200q0 42 -5.5 73.5q-5.5 31.5 -20 53.5q-14.5 22 -39 33q-24.5 11 -62.5 11q-27 0 -52.5 -9.5q-25.5 -9.5 -46.5 -26.5q-21 -17 -36 -40.5q-15 -23.5 -21 -51.5l0 -244h-92v534l-97 0z" />
-<glyph unicode="&#1107;" horiz-adv-x="426" d="M426 447h-246v-447h-92v525h338zM266 720h104v-23l-112 -127l-56 0z" />
-<glyph unicode="&#1108;" horiz-adv-x="566" d="M506 35q-35 -23 -84 -36q-49 -13 -101 -13q-66 0 -115 20q-49 20 -81.5 56q-32.5 36 -48.5 87q-16 51 -16 113q0 66 19.5 118q19.5 52 54.5 87q35 35 84.5 53.5q49.5 18.5 108.5 18.5q56 0 97 -8.5q41 -8.5 72 -22.5l-25 -78q-28 14 -61 22.5q-33 8.5 -70 8.5q-78 0 -124.5 -37.5q-46.5 -37.5 -57.5 -118.5l265 0v-78h-265q4 -34 16.5 -64q12.5 -30 35.5 -52q23 -22 57 -34.5q34 -12.5 82 -12.5q40 0 74 12q34 12 57 27z" />
-<glyph unicode="&#1109;" horiz-adv-x="499" d="M353 147q0 20 -9.5 33.5q-9.5 13.5 -25.5 23q-16 9.5 -37 16.5q-21 7 -44 14q-29 8 -58.5 17.5q-29.5 9.5 -53 26q-23.5 16.5 -38.5 42.5q-15 26 -15 66q0 78 46.5 116q46.5 38 130.5 38q63 0 106 -12q43 -12 75 -26l-22 -78q-27 13 -64.5 25.5q-37.5 12.5 -82.5 12.5q-49 0 -73 -16q-24 -16 -24 -58q0 -17 9 -28.5q9 -11.5 24 -20q15 -8.5 35 -15q20 -6.5 42 -12.5q30 -8 60 -18.5q30 -10.5 55 -28q25 -17.5 40.5 -44.5q15.5 -27 15.5 -68q0 -74 -50 -120.5q-50 -46.5 -150 -46.5q-64 0 -111.5 13q-47.5 13 -79.5 30l26 80q28 -15 72 -30q44 -15 89 -15q49 0 80.5 17.5t31.5 65.5z" />
-<glyph unicode="&#1110;" horiz-adv-x="317" d="M114 525h92v-525h-92zM92 650q0 23 18 41.5q18 18.5 47 18.5q29 0 48 -18.5q19 -18.5 19 -41.5q0 -23 -19 -40.5q-19 -17.5 -48 -17.5q-29 0 -47 17.5t-18 40.5z" />
-<glyph unicode="&#1111;" horiz-adv-x="337" d="M40 649q0 24 14 39.5q14 15.5 39 15.5q26 0 39.5 -15.5q13.5 -15.5 13.5 -39.5q0 -22 -13.5 -37q-13.5 -15 -39.5 -15q-25 0 -39 15q-14 15 -14 37zt0 0zM191 649q0 24 13.5 39.5q13.5 15.5 38.5 15.5q26 0 40 -15.5q14 -15.5 14 -39.5q0 -22 -14 -37q-14 -15 -40 -15q-25 0 -38.5 15q-13.5 15 -13.5 37zt0 0zM125 525h92v-525l-92 0z" />
-<glyph unicode="&#1112;" horiz-adv-x="312" d="M112 525h92v-543q0 -97 -36.5 -144.5q-36.5 -47.5 -117.5 -47.5q-8 0 -17.5 0q-9.5 0 -20.5 2l0 76q33 -1 52.5 8q19.5 9 30 27.5q10.5 18.5 14 46q3.5 27.5 3.5 65.5zM90 650q0 23 18 41.5q18 18.5 47 18.5q29 0 48 -18.5q19 -18.5 19 -41.5q0 -23 -19 -40.5q-19 -17.5 -48 -17.5q-29 0 -47 17.5t-18 40.5z" />
-<glyph unicode="&#1113;" horiz-adv-x="851" d="M496 324q32 5 59 6.5q27 1.5 48 1.5q60 0 101.5 -12q41.5 -12 67.5 -33q26 -21 37.5 -49.5q11.5 -28.5 11.5 -61.5q0 -95 -63 -138.5q-63 -43.5 -197 -43.5q-42 0 -80 1q-38 1 -77 4l0 448h-170l-2 -30q-7 -99 -16.5 -177.5q-9.5 -78.5 -27.5 -133q-18 -54.5 -48 -83q-30 -28.5 -78 -28.5q-22 0 -39 2.5q-17 2.5 -29 7.5l14 84q13 -4 29 -4q24 0 43 17.5q19 17.5 33 65.5q14 48 23 134q9 86 13 223l347 0zM496 78q42 -6 85 -6q73 0 107.5 25.5q34.5 25.5 34.5 70.5q0 40 -33.5 67q-33.5 27 -105.5 27q-19 0 -42 -1.5q-23 -1.5 -46 -6.5z" />
-<glyph unicode="&#1114;" horiz-adv-x="916" d="M547 79q28 -4 52 -5.5q24 -1.5 44 -1.5q82 0 113.5 25.5q31.5 25.5 31.5 77.5q0 22 -7 39.5q-7 17.5 -23.5 30q-16.5 12.5 -43.5 19q-27 6.5 -67 6.5q-20 0 -45.5 -2q-25.5 -2 -54.5 -8zM547 336q37 7 68.5 9.5q31.5 2.5 52.5 2.5q62 0 103.5 -13q41.5 -13 67 -35.5q25.5 -22.5 36.5 -52.5q11 -30 11 -64q0 -99 -61.5 -144q-61.5 -45 -202.5 -45q-42 0 -84 3q-42 3 -83 6l0 227h-275v-230h-92v525h92v-213h275v213l92 0z" />
-<glyph unicode="&#1115;" horiz-adv-x="633" d="M0 600h94v101h92v-101h171v-66h-171v-162h12q32 36 73.5 56.5q41.5 20.5 103.5 20.5q48 0 83 -10q35 -10 58 -36q23 -26 34 -70.5q11 -44.5 11 -112.5v-220h-92v199q0 43 -5.5 75q-5.5 32 -20 53.5q-14.5 21.5 -39 32.5q-24.5 11 -62.5 11q-27 0 -52 -9.5q-25 -9.5 -46 -26.5q-21 -17 -36 -39.5q-15 -22.5 -22 -49.5l0 -246h-92v534l-94 0z" />
-<glyph unicode="&#1116;" horiz-adv-x="547" d="M237 236h-57v-236h-92v525h92v-239l55 18l179 221h101l-171 -204h1l-54 -39l65 -45l185 -237h-116zM305 720h104v-23l-112 -127l-56 0z" />
-<glyph unicode="&#1118;" horiz-adv-x="531" d="M251 193l31 -101h13l25 102l109 331h94l-172 -475q-19 -49 -38.5 -95q-19.5 -46 -43 -81.5q-23.5 -35.5 -52 -57q-28.5 -21.5 -65.5 -21.5q-40 0 -68 9l15 78q15 -5 30 -5q20 0 36.5 5q16.5 5 30.5 18q14 13 25.5 36.5q11.5 23.5 21.5 60.5l-235 528h109zM193 712q5 -22 14 -35q9 -13 21 -19.5q12 -6.5 27.5 -8q15.5 -1.5 32.5 -1.5q17 0 32.5 2q15.5 2 27.5 9q12 7 21 19q9 12 14 33h72q-11 -80 -57.5 -104q-46.5 -24 -111.5 -24q-31 0 -60 5q-29 5 -52.5 17q-23.5 12 -40 31.5q-16.5 19.5 -22.5 49.5z" />
-<glyph unicode="&#1119;" horiz-adv-x="618" d="M180 525v-447h258v447h92v-525h-169l-16 -178h-63l-22 178h-172l0 525z" />
-<glyph unicode="&#1122;" horiz-adv-x="682" d="M0 627h162v93h100v-93h225v-82h-225v-114q6 1 18.5 2.5q12.5 1.5 28 3q15.5 1.5 31.5 2.5q16 1 29 1q52 0 102 -10q50 -10 89.5 -34q39.5 -24 63.5 -65q24 -41 24 -103q0 -60 -23.5 -105q-23.5 -45 -64 -74q-40.5 -29 -95.5 -43.5q-55 -14.5 -119 -14.5q-15 0 -37.5 0.5q-22.5 0.5 -48 2.5q-25.5 2 -51 5q-25.5 3 -47.5 8l0 538h-162zM358 77q37 0 70.5 8.5q33.5 8.5 58.5 26.5q25 18 40 45q15 27 15 64q0 40 -16 66q-16 26 -42.5 41q-26.5 15 -60 20.5q-33.5 5.5 -69.5 5.5q-9 0 -23 -1q-14 -1 -27.5 -2q-13.5 -1 -25 -3q-11.5 -2 -16.5 -3l0 -262q14 -4 41.5 -5t54.5 -1z" />
-<glyph unicode="&#1123;" horiz-adv-x="576" d="M0 525h129v175h92v-175h185v-72h-185v-129q34 4 61.5 6q27.5 2 47.5 2q59 0 100 -12q41 -12 67 -33q26 -21 37.5 -50q11.5 -29 11.5 -62q0 -94 -63 -137.5q-63 -43.5 -197 -43.5q-39 0 -79 0.5q-40 0.5 -78 3.5l0 455h-129zM221 77q25 -3 46 -4q21 -1 39 -1q75 0 108.5 24q33.5 24 33.5 72q0 43 -33 68.5q-33 25.5 -104 25.5q-20 0 -43 -1.5q-23 -1.5 -47 -6.5z" />
-<glyph unicode="&#1138;" horiz-adv-x="747" d="M58 350q0 86 21.5 153.5q21.5 67.5 62 114q40.5 46.5 99 71q58.5 24.5 132.5 24.5q79 0 138.5 -26.5q59.5 -26.5 99 -74q39.5 -47.5 59 -114.5q19.5 -67 19.5 -148q0 -86 -21.5 -153.5q-21.5 -67.5 -62.5 -114q-41 -46.5 -99.5 -71q-58.5 -24.5 -132.5 -24.5q-80 0 -139 26.5q-59 26.5 -98 74q-39 47.5 -58.5 114.5q-19.5 67 -19.5 148zt0 0zM164 312q4 -50 18.5 -94q14.5 -44 40.5 -76q26 -32 63 -50.5q37 -18.5 87 -18.5q90 0 146 58q56 58 64 181zM583 396q-5 48 -20 90q-15 42 -41 73.5q-26 31.5 -63 49.5q-37 18 -86 18q-88 0 -143.5 -56.5q-55.5 -56.5 -64.5 -174.5z" />
-<glyph unicode="&#1139;" horiz-adv-x="631" d="M60 262q0 132 66 205q66 73 190 73q64 0 112 -20.5q48 -20.5 79.5 -57.5q31.5 -37 47 -88q15.5 -51 16.5 -112q-1 -131 -67.5 -203.5q-66.5 -72.5 -187.5 -72.5q-66 0 -114.5 20.5q-48.5 20.5 -80 57q-31.5 36.5 -46.5 87.5q-15 51 -15 111zt0 0zM473 295q-13 83 -53 125q-40 42 -104 42q-30 0 -57 -8.5q-27 -8.5 -49 -28.5q-22 -20 -36 -52q-14 -32 -16 -78zM159 229q7 -78 50.5 -121.5q43.5 -43.5 106.5 -43.5q28 0 54 9q26 9 47 28.5q21 19.5 35 51q14 31.5 18 76.5z" />
-<glyph unicode="&#1140;" horiz-adv-x="659" d="M340 -10h-51l-294 710h110l189 -466l27 -109h2l18 111l82 251q22 66 41.5 109q19.5 43 41.5 68q22 25 49 34.5q27 9.5 65 9.5q38 0 60.5 -6.5q22.5 -6.5 42.5 -17.5l-27 -82q-22 12 -40.5 15q-18.5 3 -35.5 3q-29 0 -49 -21.5q-20 -21.5 -40 -80.5z" />
-<glyph unicode="&#1141;" horiz-adv-x="582" d="M298 -11h-40l-250 536h106l135 -301l32 -121l8 1l30 121l47 109q18 43 35.5 79.5q17.5 36.5 38 63.5q20.5 27 45 42q24.5 15 56.5 15q20 0 37 -3.5q17 -3.5 32 -8.5v-78q-26 4 -34.5 6q-8.5 2 -17.5 2q-21 0 -41.5 -17.5q-20.5 -17.5 -42.5 -62.5z" />
-<glyph unicode="&#1162;" horiz-adv-x="760" d="M555 463l6 77h-4l-48 -79l-359 -461h-61v700h100v-466l-9 -76h5l50 79l358 463h62v-612h117v-24l-100 -194h-66l50 130h-101zM280 871q5 -36 30.5 -54.5q25.5 -18.5 67.5 -18.5q42 0 67.5 18.5q25.5 18.5 30.5 53.5l84 -18q-13 -55 -57 -86q-44 -31 -126 -31q-79 0 -129.5 27q-50.5 27 -60.5 88z" />
-<glyph unicode="&#1163;" horiz-adv-x="655" d="M451 300l14 104h-11l-49 -98l-246 -306h-71v525h92v-310l-7 -92h11l46 89l241 313h72v-447h100v-24l-100 -186h-66l50 132h-76zM223 712q5 -22 14 -35q9 -13 21 -19.5q12 -6.5 27.5 -8q15.5 -1.5 32.5 -1.5q17 0 32.5 2q15.5 2 27.5 9q12 7 21 19q9 12 14 33h72q-11 -80 -57.5 -104q-46.5 -24 -111.5 -24q-31 0 -60 5q-29 5 -52.5 17q-23.5 12 -40 31.5q-16.5 19.5 -22.5 49.5z" />
-<glyph unicode="&#1164;" horiz-adv-x="682" d="M0 627h162v93h100v-93h225v-82h-225v-114q6 1 18.5 2.5q12.5 1.5 28 3q15.5 1.5 31.5 2.5q16 1 29 1q52 0 102 -10q50 -10 89.5 -34q39.5 -24 63.5 -65q24 -41 24 -103q0 -60 -23.5 -105q-23.5 -45 -64 -74q-40.5 -29 -95.5 -43.5q-55 -14.5 -119 -14.5q-15 0 -37.5 0.5q-22.5 0.5 -48 2.5q-25.5 2 -51 5q-25.5 3 -47.5 8l0 538h-162zM358 77q37 0 70.5 8.5q33.5 8.5 58.5 26.5q25 18 40 45q15 27 15 64q0 40 -16 66q-16 26 -42.5 41q-26.5 15 -60 20.5q-33.5 5.5 -69.5 5.5q-9 0 -23 -1q-14 -1 -27.5 -2q-13.5 -1 -25 -3q-11.5 -2 -16.5 -3l0 -262q14 -4 41.5 -5t54.5 -1z" />
-<glyph unicode="&#1165;" horiz-adv-x="576" d="M0 525h129v175h92v-175h185v-72h-185v-129q34 4 61.5 6q27.5 2 47.5 2q59 0 100 -12q41 -12 67 -33q26 -21 37.5 -50q11.5 -29 11.5 -62q0 -94 -63 -137.5q-63 -43.5 -197 -43.5q-39 0 -79 0.5q-40 0.5 -78 3.5l0 455h-129zM221 77q25 -3 46 -4q21 -1 39 -1q75 0 108.5 24q33.5 24 33.5 72q0 43 -33 68.5q-33 25.5 -104 25.5q-20 0 -43 -1.5q-23 -1.5 -47 -6.5z" />
-<glyph unicode="&#1166;" horiz-adv-x="614" d="M89 693q42 9 91.5 12.5q49.5 3.5 97.5 3.5q51 0 103.5 -9q52.5 -9 95.5 -33q43 -24 70.5 -66.5q27.5 -42.5 27.5 -109.5q0 -75 -34 -123.5q-34 -48.5 -88 -74.5l73 -102l-55 -39l-83 118q-26 -7 -54 -10q-28 -3 -56 -3q-6 0 -18.5 0.5q-12.5 0.5 -26 1q-13.5 0.5 -26 1.5q-12.5 1 -18.5 2l0 -262h-100zM322 471l73 -106q32 15 53 44.5q21 29.5 21 80.5q0 40 -17 66q-17 26 -44 41q-27 15 -60.5 20.5q-33.5 5.5 -66.5 5.5q-27 0 -52.5 -1q-25.5 -1 -39.5 -5l0 -269q5 -2 16.5 -2.5q11.5 -0.5 24 -1.5q12.5 -1 24 -1q11.5 0 17.5 0q17 0 34 1q17 1 34 4l-65 90z" />
-<glyph unicode="&#1167;" horiz-adv-x="630" d="M88 525h62l18 -67h9q27 39 70 60.5q43 21.5 97 21.5q114 0 170 -63.5q56 -63.5 56 -202.5q0 -66 -18.5 -118.5q-18.5 -52.5 -52.5 -90.5l67 -74l-58 -54l-72 79q-29 -14 -61.5 -22q-32.5 -8 -70.5 -8q-20 0 -36.5 1.5q-16.5 1.5 -30.5 5q-14 3.5 -28 8q-14 4.5 -29 10.5l0 -211h-92zM372 194l60 -68q19 26 29.5 63.5q10.5 37.5 10.5 85.5q0 85 -34 136q-34 51 -115 51q-60 0 -94 -30q-34 -30 -49 -92l0 -242q23 -16 50 -25q27 -9 69 -9q50 0 85 19l-64 68z" />
-<glyph unicode="&#1168;" horiz-adv-x="486" d="M420 700l18 138h66v-226h-315v-612h-100l0 700z" />
-<glyph unicode="&#1169;" horiz-adv-x="426" d="M342 525l18 138h66v-216h-246v-447h-92l0 525z" />
-<glyph unicode="&#1170;" horiz-adv-x="532" d="M529 612h-315v-226h237v-74h-237v-312h-100v312h-105v74h105v314l415 0z" />
-<glyph unicode="&#1171;" horiz-adv-x="448" d="M424 447h-246v-159h219v-70h-219v-218h-92v218h-86v70h86v237l338 0z" />
-<glyph unicode="&#1172;" horiz-adv-x="632" d="M189 0h-100v700h415v-88h-315v-252q14 4 51.5 12.5q37.5 8.5 97.5 8.5q43 0 85.5 -11q42.5 -11 76.5 -39q34 -28 54.5 -75q20.5 -47 20.5 -119q0 -135 -66.5 -200q-66.5 -65 -191.5 -65q-35 0 -51 1q-16 1 -24 3l0 87q13 -2 30 -2.5q17 -0.5 47 -0.5q73 0 111.5 41.5q38.5 41.5 38.5 128.5q0 48 -13 80q-13 32 -35 51q-22 19 -51.5 26.5q-29.5 7.5 -62.5 7.5q-18 0 -37 -2.5q-19 -2.5 -35 -6q-16 -3.5 -28.5 -7q-12.5 -3.5 -17.5 -5.5z" />
-<glyph unicode="&#1173;" horiz-adv-x="616" d="M180 0h-92v525h335v-78h-243v-185q29 8 65 16q36 8 88 8q45 0 85 -12.5q40 -12.5 71 -41q31 -28.5 49 -75q18 -46.5 18 -114.5q0 -135 -60 -201.5q-60 -66.5 -192 -66.5q-27 0 -46.5 2q-19.5 2 -29.5 3l0 78q10 -1 34 -3q24 -2 45 -2q81 0 118 48.5q37 48.5 37 130.5q0 88 -42.5 131q-42.5 43 -118.5 43q-40 0 -72.5 -10q-32.5 -10 -48.5 -16z" />
-<glyph unicode="&#1174;" horiz-adv-x="897" d="M392 700h94v-322l46 14l213 308h111l-216 -304l-45 -33l56 -41l173 -234h67v-216h-69l-16 128h-37l-234 320h-49v-320h-94v332l-46 -14l-233 -318h-115l236 312l53 38l-51 36l-223 314h116l214 -310l49 0z" />
-<glyph unicode="&#1175;" horiz-adv-x="800" d="M493 236h-65v-236h-90v248l-60 -16l-164 -232h-108l175 237l45 35l-63 43l-144 210h100l153 -227h66v227h90v-238l60 16l154 222h99l-151 -209l-48 -38l62 -44l106 -156h78v-210h-65l-16 132l-50 0z" />
-<glyph unicode="&#1176;" horiz-adv-x="589" d="M149 327v78h17q9 0 23.5 0q14.5 0 30 1q15.5 1 30 1.5q14.5 0.5 23.5 2.5q54 7 92 34.5q38 27.5 38 73.5q0 31 -11.5 51.5q-11.5 20.5 -32 33q-20.5 12.5 -47.5 18q-27 5.5 -57 5.5q-58 0 -101 -9q-43 -9 -66 -20l-27 80q10 6 31 12q21 6 48.5 11q27.5 5 61 8.5q33.5 3.5 68.5 3.5q44 0 87 -8.5q43 -8.5 76.5 -28.5q33.5 -20 54.5 -53q21 -33 21 -83q0 -50 -35.5 -95q-35.5 -45 -107.5 -65l0 -4q77 -11 121.5 -53.5q44.5 -42.5 44.5 -114.5q0 -51 -20 -90q-20 -39 -54 -66q-34 -27 -77.5 -42.5q-43.5 -15.5 -91.5 -19.5l-15 -167h-63l-21 167q-50 3 -86 10q-36 7 -60 17l25 88q26 -11 71.5 -20q45.5 -9 111.5 -9q31 0 62 7.5q31 7.5 56 23q25 15.5 40.5 40q15.5 24.5 15.5 58.5q0 60 -46.5 88q-46.5 28 -129.5 33q-13 1 -23 1.5q-10 0.5 -24 0.5z" />
-<glyph unicode="&#1177;" horiz-adv-x="516" d="M148 233v70h77q22 0 42.5 6q20.5 6 36.5 16.5q16 10.5 25.5 25q9.5 14.5 9.5 31.5q0 42 -31 58q-31 16 -94 16q-44 0 -80.5 -9.5q-36.5 -9.5 -59.5 -19.5l-25 70q65 37 195 37q94 0 142 -33q48 -33 48 -96q0 -17 -6.5 -35q-6.5 -18 -19.5 -34.5q-13 -16.5 -31.5 -30q-18.5 -13.5 -42.5 -20.5l0 -11q68 -12 95 -44.5q27 -32.5 27 -84.5q0 -57 -46 -99.5q-46 -42.5 -139 -53.5l-15 -170h-63l-21 168q-41 3 -70 10.5q-29 7.5 -54 19.5l24 74q27 -14 65 -20q38 -6 83 -6q138 0 138 86q0 39 -33 59q-33 20 -115 20z" />
-<glyph unicode="&#1178;" horiz-adv-x="673" d="M238 318h-49v-318h-100v700h100v-322l46 14l252 308h114l-252 -300l-47 -34l55 -40l203 -238h104v-216h-69l-16 128l-70 0z" />
-<glyph unicode="&#1179;" horiz-adv-x="564" d="M180 525v-239l55 18l179 221h101l-171 -204h1l-54 -39l65 -45l121 -159h72v-210h-65l-16 132h-43l-188 236h-57v-236h-92l0 525z" />
-<glyph unicode="&#1180;" horiz-adv-x="753" d="M247 318h-58v-318h-100v700h100v-322l58 4v128h76v-121l25 3l226 308h112l-229 -300l-48 -34l56 -39l254 -327h-122l-247 318h-27v-128l-76 0z" />
-<glyph unicode="&#1181;" horiz-adv-x="650" d="M252 233h-72v-233h-92v526h92v-249l72 6v139h63v-133l43 5l137 231h90l-118 -202l-66 -46l74 -52l159 -225h-105l-166 233h-48v-123l-63 0z" />
-<glyph unicode="&#1182;" horiz-adv-x="732" d="M0 638h151v62h100v-62h128v-78h-128v-182l55 14l246 308h112l-246 -300l-52 -34l58 -39l274 -327h-126l-268 318h-53v-318h-100v556l-151 0z" />
-<glyph unicode="&#1183;" horiz-adv-x="566" d="M0 615h97v85h92v-85h168v-66h-168v-263l52 17l174 222h108l-167 -203h1l-55 -40l63 -45l185 -237h-116l-188 236h-57v-236h-92v549l-97 0z" />
-<glyph unicode="&#1184;" horiz-adv-x="756" d="M275 700v-322l46 14l252 308h114l-251 -300l-48 -34l56 -40l277 -326h-126l-271 318h-49v-318h-100v612h-175l0 88z" />
-<glyph unicode="&#1185;" horiz-adv-x="587" d="M221 287l55 17l179 221h101l-171 -203l-54 -42l67 -44l183 -236h-115l-188 236h-57v-236h-92v447h-129v78l221 0z" />
-<glyph unicode="&#1186;" horiz-adv-x="770" d="M544 313h-355v-313h-100v700h100v-299h355v299h100v-612h97v-216h-69l-16 128l-112 0z" />
-<glyph unicode="&#1187;" horiz-adv-x="629" d="M444 229h-264v-229h-92v525h92v-214h264v214h92v-447h73v-210h-65l-16 132l-84 0z" />
-<glyph unicode="&#1188;" horiz-adv-x="941" d="M959 612h-315v-612h-100v313h-355v-313h-100v700h100v-299h355v299l415 0z" />
-<glyph unicode="&#1189;" horiz-adv-x="777" d="M444 229h-264v-229h-92v525h92v-214h264v214h333v-78h-241v-447l-92 0z" />
-<glyph unicode="&#1190;" horiz-adv-x="1073" d="M630 225v-225h-100v612h-341v-612h-100v700h541v-340q14 4 52 12.5q38 8.5 98 8.5q43 0 85.5 -11q42.5 -11 76 -39q33.5 -28 54.5 -75q21 -47 21 -119q0 -135 -67.5 -200q-67.5 -65 -190.5 -65q-35 0 -51 1q-16 1 -24 3l0 85q13 -2 30 -2.5q17 -0.5 47 -0.5q73 0 111.5 42q38.5 42 38.5 130q0 49 -13 80.5q-13 31.5 -35 50.5q-22 19 -51.5 26.5q-29.5 7.5 -62.5 7.5q-18 0 -37 -2.5q-19 -2.5 -35 -6q-16 -3.5 -28.5 -7q-12.5 -3.5 -18.5 -5.5z" />
-<glyph unicode="&#1191;" horiz-adv-x="960" d="M530 0h-92v447h-256v-447h-94v525h442v-265q30 9 66 17q36 8 85 8q44 0 84.5 -12.5q40.5 -12.5 72 -41q31.5 -28.5 50 -74.5q18.5 -46 18.5 -114q0 -136 -60 -201.5q-60 -65.5 -189 -65.5q-29 0 -49 4q-20 4 -29 5l0 77q9 0 31 -4q22 -4 48 -4q81 0 117.5 47q36.5 47 36.5 132q0 44 -12 77q-12 33 -33 54.5q-21 21.5 -50.5 32q-29.5 10.5 -64.5 10.5q-35 0 -66.5 -8q-31.5 -8 -55.5 -15z" />
-<glyph unicode="&#1192;" horiz-adv-x="899" d="M387 627q-50 0 -91 -17q-41 -17 -70 -51.5q-29 -34.5 -45.5 -86q-16.5 -51.5 -16.5 -119.5q0 -60 19 -111q19 -51 52.5 -88.5q33.5 -37.5 78.5 -59q45 -21.5 97 -21.5q11 0 25.5 1q14.5 1 25.5 5q-34 19 -61 48.5q-27 29.5 -45.5 67q-18.5 37.5 -28.5 80.5q-10 43 -10 88q0 76 20 135.5q20 59.5 54.5 99.5q34.5 40 82 61q47.5 21 101.5 21q61 0 107.5 -20q46.5 -20 78 -56.5q31.5 -36.5 48 -89q16.5 -52.5 16.5 -116.5q0 -60 -14 -111.5q-14 -51.5 -37.5 -93q-23.5 -41.5 -54.5 -71.5q-31 -30 -64 -47q5 -1 10.5 -1.5q5.5 -0.5 11.5 -0.5q41 0 72.5 9q31.5 9 52.5 23l30 -79q-20 -17 -52 -28q-32 -11 -90 -11q-36 0 -73 10q-37 10 -61 24q-62 -34 -145 -34q-82 0 -147.5 26q-65.5 26 -111 73.5q-45.5 47.5 -70 114.5q-24.5 67 -24.5 149q0 85 22.5 152.5q22.5 67.5 65.5 114.5q43 47 103.5 71.5q60.5 24.5 137.5 24.5zM423 358q0 -33 8.5 -69.5q8.5 -36.5 26.5 -70.5q18 -34 44.5 -63q26.5 -29 62.5 -48q29 15 56.5 41.5q27.5 26.5 49.5 63q22 36.5 35 82q13 45.5 13 98.5q0 41 -7.5 78q-7.5 37 -24.5 64.5q-17 27.5 -44 43.5q-27 16 -65 16q-31 0 -59 -13.5q-28 -13.5 -49.5 -42.5q-21.5 -29 -34 -73.5t-12.5 -106.5z" />
-<glyph unicode="&#1193;" horiz-adv-x="782" d="M312 463q-154 -9 -154 -199q0 -39 11.5 -75.5q11.5 -36.5 34.5 -64q23 -27.5 57.5 -44q34.5 -16.5 80.5 -16.5q12 0 29.5 2.5q17.5 2.5 36.5 13.5q-44 27 -73 79q-29 52 -29 127q0 36 9.5 78q9.5 42 33.5 77.5q24 35.5 64.5 59.5q40.5 24 102.5 24q54 0 92.5 -17.5q38.5 -17.5 62.5 -48q24 -30.5 35 -71.5q11 -41 11 -87q0 -38 -12.5 -73.5q-12.5 -35.5 -32.5 -65.5q-20 -30 -46 -54q-26 -24 -53 -39q16 -5 30 -7q14 -2 25 -2q21 0 44 6q23 6 46 25q8 -19 13 -32q5 -13 9 -26l2 -8q-21 -17 -54.5 -28q-33.5 -11 -74.5 -11q-33 0 -66 12q-33 12 -57 30q-37 -24 -79.5 -33q-42.5 -9 -80.5 -9q-64 0 -114.5 20.5q-50.5 20.5 -85 57q-34.5 36.5 -52.5 87q-18 50.5 -18 110.5q0 128 62.5 201q62.5 73 189.5 79zM400 272q0 -59 27.5 -108q27.5 -49 72.5 -77q24 13 45.5 33.5q21.5 20.5 38 48q16.5 27.5 26 60.5q9.5 33 9.5 70q0 27 -6.5 53.5q-6.5 26.5 -19.5 47.5q-13 21 -32.5 34q-19.5 13 -46.5 13q-35 0 -57 -16q-22 -16 -34.5 -41q-12.5 -25 -17.5 -56.5t-5 -61.5z" />
-<glyph unicode="&#1194;" horiz-adv-x="624" d="M584 30q-28 -20 -68.5 -30q-40.5 -10 -87.5 -12l-15 -166h-63l-21 170q-57 9 -106 35q-49 26 -86 70.5q-37 44.5 -58 107q-21 62.5 -21 145.5q0 98 30 167q30 69 78 112.5q48 43.5 108 63.5q60 20 119 20q66 0 108 -7q42 -7 71 -18l-22 -84q-49 23 -149 23q-45 0 -87.5 -15q-42.5 -15 -76 -48q-33.5 -33 -53.5 -85.5q-20 -52.5 -20 -128.5q0 -68 19 -119.5q19 -51.5 52.5 -86.5q33.5 -35 79 -52.5q45.5 -17.5 99.5 -17.5q49 0 85 9q36 9 61 23z" />
-<glyph unicode="&#1195;" horiz-adv-x="529" d="M484 36q-29 -20 -65 -32q-36 -12 -77 -16l-15 -166h-63l-21 169q-50 9 -85 32q-35 23 -56.5 58q-21.5 35 -31.5 81q-10 46 -10 100q0 133 64.5 205.5q64.5 72.5 185.5 72.5q53 0 92 -9.5q39 -9.5 70 -23.5l-24 -75q-27 14 -58.5 22q-31.5 8 -68.5 8q-163 0 -163 -200q0 -38 9 -73q9 -35 29 -62.5q20 -27.5 52.5 -44q32.5 -16.5 79.5 -16.5q42 0 73.5 11.5q31.5 11.5 52.5 27.5z" />
-<glyph unicode="&#1196;" horiz-adv-x="610" d="M255 612h-236v88h572v-88h-236v-524h97v-216h-69l-16 128l-112 0z" />
-<glyph unicode="&#1197;" horiz-adv-x="456" d="M182 447h-182v78h456v-78h-182v-369h77v-210h-65l-16 132l-88 0z" />
-<glyph unicode="&#1198;" horiz-adv-x="617" d="M261 274l-254 426h117l175 -297l17 -64h2l19 66l167 295h106l-249 -425v-275l-100 0z" />
-<glyph unicode="&#1199;" horiz-adv-x="551" d="M8 525h107l136 -336l31 -125h8l31 126l122 335h100l-216 -527v-199h-92l0 199z" />
-<glyph unicode="&#1200;" horiz-adv-x="617" d="M95 287h158l-246 413h117l175 -297l17 -64h2l19 66l167 295h106l-242 -413h159v-70h-166v-217h-100v217l-166 0z" />
-<glyph unicode="&#1201;" horiz-adv-x="551" d="M100 1h133l-225 524h107l136 -336l31 -125h8l31 126l122 335h100l-215 -524h134v-66h-135v-136h-92v136l-135 0z" />
-<glyph unicode="&#1202;" horiz-adv-x="710" d="M279 356l-231 344h119l151 -230l27 -58l26 58l158 230h110l-238 -337l188 -275h112v-216h-69l-16 128h-83l-167 244l-31 61l-28 -61l-171 -244l-110 0z" />
-<glyph unicode="&#1203;" horiz-adv-x="591" d="M333 149l-40 75l-41 -75l-116 -149h-106l203 269l-189 256h117l102 -134l35 -71l41 71l106 134h104l-191 -252q35 -48 71 -97.5q36 -49.5 72 -97.5l74 0v-210h-65l-16 132l-46 0z" />
-<glyph unicode="&#1204;" horiz-adv-x="918" d="M889 -128h-69l-16 128h-549v612h-236v88h529v-88h-193v-524h333v612h100v-612l101 0z" />
-<glyph unicode="&#1205;" horiz-adv-x="720" d="M700 -132h-61l-19 132h-440v447h-180v78h441v-78h-169v-369h251v447h92v-447l85 0z" />
-<glyph unicode="&#1206;" horiz-adv-x="700" d="M176 700v-221q0 -67 32 -103.5q32 -36.5 101 -36.5q51 0 94.5 12q43.5 12 70.5 32l0 317h100v-612h97v-216h-69l-16 128h-112v298q-29 -16 -77.5 -30.5q-48.5 -14.5 -111.5 -14.5q-47 0 -85.5 11q-38.5 11 -66 36q-27.5 25 -42.5 63.5q-15 38.5 -15 94.5l0 242z" />
-<glyph unicode="&#1207;" horiz-adv-x="577" d="M152 525v-129q0 -32 3.5 -57q3.5 -25 15 -43q11.5 -18 32 -27.5q20.5 -9.5 53.5 -9.5q51 0 85.5 11.5q34.5 11.5 52.5 25.5l0 229h92v-447h71v-210h-65l-16 132h-82v223q-19 -12 -58 -27q-39 -15 -104 -15q-42 0 -74.5 9q-32.5 9 -54 31q-21.5 22 -32.5 58.5q-11 36.5 -11 91.5l0 154z" />
-<glyph unicode="&#1208;" horiz-adv-x="675" d="M296 253h-11q-46 0 -84.5 10q-38.5 10 -66 33.5q-27.5 23.5 -43 62q-15.5 38.5 -15.5 95.5v246h100v-225q0 -130 120 -136l0 121h76v-117q35 5 64.5 15.5q29.5 10.5 49.5 24.5l0 317h100v-700h-100v298q-19 -10 -48.5 -20q-29.5 -10 -65.5 -17l0 -121l-76 0z" />
-<glyph unicode="&#1209;" horiz-adv-x="605" d="M259 197h-23q-42 0 -75 9q-33 9 -55.5 30.5q-22.5 21.5 -34 57q-11.5 35.5 -11.5 89.5v142h92v-109q0 -34 3.5 -61q3.5 -27 14.5 -45.5q11 -18.5 32.5 -29q21.5 -10.5 56.5 -11.5l0 142h64v-138q35 6 61 16.5q26 10.5 41 22.5l0 213h92v-525h-92v243q-14 -10 -39 -20.5q-25 -10.5 -63 -17.5l0 -131l-64 0z" />
-<glyph unicode="&#1210;" horiz-adv-x="662" d="M486 0v228q0 133 -132 133q-51 0 -94.5 -12q-43.5 -12 -70.5 -33l0 -316h-100v700h100v-298q29 16 77 30.5q48 14.5 111 14.5q46 0 84 -10.5q38 -10.5 66 -33.5q28 -23 43.5 -60.5q15.5 -37.5 15.5 -92.5l0 -250z" />
-<glyph unicode="&#1211;" horiz-adv-x="641" d="M461 0v290q0 43 -5.5 74.5q-5.5 31.5 -20 52.5q-14.5 21 -39 31q-24.5 10 -61.5 10q-26 0 -51 -9q-25 -9 -46 -25q-21 -16 -36 -38.5q-15 -22.5 -22 -50.5l0 -335h-92v700h92v-240h11q30 36 72 58q42 22 104 22q48 0 83 -10.5q35 -10.5 58 -37q23 -26.5 34 -71q11 -44.5 11 -111.5l0 -310z" />
-<glyph unicode="&#1212;" horiz-adv-x="862" d="M310 310q18 -237 248 -237q49 0 91 14q42 14 71 31l25 -79q-38 -21 -88.5 -36.5q-50.5 -15.5 -117.5 -15.5q-72 0 -131 19q-59 19 -101.5 58.5q-42.5 39.5 -67.5 100.5q-25 61 -29 145l-39 0q-47 0 -79.5 11q-32.5 11 -53 29q-20.5 18 -29 42.5q-8.5 24.5 -7.5 51.5q1 29 7.5 45.5q6.5 16.5 20.5 28.5l91 0q-17 -12 -23 -31q-6 -19 -6 -33q0 -10 3 -20.5q3 -10.5 12 -19.5q9 -9 26 -15q17 -6 45 -6q8 0 15.5 0.5q7.5 0.5 16.5 1.5q8 152 85.5 235q77.5 83 217.5 83q138 0 209 -77q71 -77 71 -217q0 -26 -2.5 -53q-2.5 -27 -7.5 -56zM690 396q2 12 2.5 24q0.5 12 0.5 23q0 37 -10 70.5q-10 33.5 -32 58.5q-22 25 -55.5 40q-33.5 15 -80.5 15q-98 0 -149.5 -58.5q-51.5 -58.5 -56.5 -172.5z" />
-<glyph unicode="&#1213;" horiz-adv-x="711" d="M628 43q-35 -26 -87 -41.5q-52 -15.5 -113 -15.5q-65 0 -112.5 18.5q-47.5 18.5 -79 53q-31.5 34.5 -47 83q-15.5 48.5 -16.5 109.5l-3 0q-78 0 -124 33q-46 33 -45 107q2 29 14 50q12 21 26 36l75 0q-14 -15 -24 -36q-10 -21 -10 -47q0 -16 4 -30q4 -14 14.5 -24q10.5 -10 29 -15.5q18.5 -5.5 46.5 -5.5q14 109 78.5 165.5q64.5 56.5 174.5 56.5q39 0 78 -8.5q39 -8.5 70 -32q31 -23.5 50.5 -64.5q19.5 -41 19.5 -107q0 -16 -1 -37q-1 -21 -4 -41l-375 0q2 -92 44 -139q42 -47 143 -47q42 0 80 14.5q38 14.5 59 34.5zM559 316q2 80 -32.5 113q-34.5 33 -96.5 33q-70 0 -111 -33q-41 -33 -48 -113z" />
-<glyph unicode="&#1214;" horiz-adv-x="862" d="M310 310q18 -236 248 -236q49 0 91 13.5q42 13.5 71 30.5l25 -79q-34 -20 -79 -34q-45 -14 -102 -17l-15 -166h-63l-21 171q-114 17 -181 94q-67 77 -74 223l-39 0q-47 0 -79.5 11q-32.5 11 -53 29q-20.5 18 -29 42.5q-8.5 24.5 -7.5 51.5q1 29 7.5 45.5q6.5 16.5 20.5 28.5l91 0q-17 -12 -23 -31q-6 -19 -6 -33q0 -10 3 -20.5q3 -10.5 12 -19.5q9 -9 26 -15q17 -6 45 -6q8 0 15.5 0.5q7.5 0.5 16.5 1.5q8 152 85.5 235q77.5 83 217.5 83q138 0 209 -77q71 -77 71 -217q0 -26 -2.5 -53q-2.5 -27 -7.5 -56zM690 396q2 12 2.5 24q0.5 12 0.5 23q0 37 -10 70.5q-10 33.5 -32 58.5q-22 25 -55.5 40q-33.5 15 -80.5 15q-98 0 -149.5 -58.5q-51.5 -58.5 -56.5 -172.5z" />
-<glyph unicode="&#1215;" horiz-adv-x="711" d="M267 250q2 -92 44 -138q42 -46 143 -46q42 0 80 14.5q38 14.5 59 34.5l35 -72q-29 -23 -71.5 -37q-42.5 -14 -93.5 -18l-15 -175h-63l-22 178q-96 17 -142 85q-46 68 -48 175l-3 0q-78 0 -124 32.5q-46 32.5 -45 106.5q2 29 14 50q12 21 26 36l75 0q-14 -15 -24 -36q-10 -21 -10 -47q0 -16 4 -30q4 -14 14.5 -24.5q10.5 -10.5 29 -16q18.5 -5.5 46.5 -5.5q14 109 78.5 166q64.5 57 174.5 57q39 0 78 -8.5q39 -8.5 70 -32q31 -23.5 50.5 -64.5q19.5 -41 19.5 -107q0 -16 -1 -37q-1 -21 -4 -41zM559 316q2 80 -32.5 113q-34.5 33 -96.5 33q-70 0 -111 -33q-41 -33 -48 -113z" />
-<glyph unicode="&#1216;" horiz-adv-x="398" d="M149 634h-80v66h260v-66h-80v-568h80v-66h-260v66l80 0z" />
-<glyph unicode="&#1219;" horiz-adv-x="658" d="M480 72q0 126 -58 186q-58 60 -185 60h-48v-318h-100v700h100v-322l46 14l252 308h114l-242 -284l-63 -39h68q57 -13 98 -35.5q41 -22.5 67.5 -58q26.5 -35.5 38.5 -86q12 -50.5 12 -119.5v-19q0 -72 -15.5 -123q-15.5 -51 -43.5 -83.5q-28 -32.5 -68 -47.5q-40 -15 -88 -15q-9 0 -18.5 0.5q-9.5 0.5 -19.5 1.5l0 86q42 -1 71.5 8.5q29.5 9.5 47.5 32.5q18 23 26 60.5t8 92.5z" />
-<glyph unicode="&#1220;" horiz-adv-x="559" d="M419 34q0 55 -12 90q-12 35 -35 55q-23 20 -57 28q-34 8 -79 9l-56 0v-216h-92v525h92v-250l55 19l178 231h101l-171 -213l-52 -37q20 -2 31 -3q11 -1 17 -2q6 -1 8.5 -1q2.5 0 4.5 0q47 -12 78 -35q31 -23 49 -52q18 -29 25 -62.5q7 -33.5 7 -64.5v-19q0 -64 -15 -110q-15 -46 -41.5 -75.5q-26.5 -29.5 -63 -43.5q-36.5 -14 -79.5 -14q-16 0 -43 3l0 75q71 -5 110.5 36.5t39.5 126.5z" />
-<glyph unicode="&#1221;" horiz-adv-x="684" d="M494 612h-220q-5 -99 -11.5 -180q-6.5 -81 -16.5 -146.5q-10 -65.5 -23.5 -115.5q-13.5 -50 -33.5 -87q-26 -48 -60 -68q-34 -20 -71 -20q-21 0 -34.5 2.5q-13.5 2.5 -27.5 7.5l13 84q12 -3 24 -3q12 0 24.5 4.5q12.5 4.5 24.5 15q12 10.5 23 29.5q15 26 28 70q13 44 23 112q10 68 16.5 162.5q6.5 94.5 9.5 220.5l412 0v-612h102v-24l-100 -194h-66l50 130l-86 0z" />
-<glyph unicode="&#1222;" horiz-adv-x="596" d="M404 447h-170l-2 -30q-7 -99 -16.5 -177.5q-9.5 -78.5 -27.5 -133q-18 -54.5 -48 -83q-30 -28.5 -78 -28.5q-22 0 -39 2.5q-17 2.5 -29 7.5l14 84q13 -4 29 -4q24 0 43 17.5q19 17.5 33 65.5q14 48 23 134q9 86 13 223l347 0v-447h88v-24l-100 -186h-66l50 132l-64 0z" />
-<glyph unicode="&#1223;" horiz-adv-x="733" d="M644 0v-24q0 -93 -35 -139.5q-35 -46.5 -112 -46.5q-10 0 -19.5 1q-9.5 1 -20.5 3l0 84q31 -1 48.5 5.5q17.5 6.5 26 21q8.5 14.5 10.5 38.5q2 24 2 57v313h-355v-313h-100v700h100v-299h355v299l100 0z" />
-<glyph unicode="&#1224;" horiz-adv-x="624" d="M180 525v-214h264v214h92v-549q0 -93 -33.5 -137.5q-33.5 -44.5 -109.5 -44.5q-20 0 -42 3l0 75q31 -1 49 6.5q18 7.5 28 23q10 15.5 13 40.5q3 25 3 58v229h-264v-229h-92l0 525z" />
-<glyph unicode="&#1225;" horiz-adv-x="745" d="M544 313h-355v-313h-100v700h100v-299h355v299h100v-612h113v-24l-100 -194h-66l50 130l-97 0z" />
-<glyph unicode="&#1226;" horiz-adv-x="638" d="M444 229h-264v-229h-92v525h92v-214h264v214h92v-447h90v-24l-100 -186h-66l50 132l-66 0z" />
-<glyph unicode="&#1227;" horiz-adv-x="663" d="M176 700v-221q0 -67 32 -103.5q32 -36.5 101 -36.5q51 0 94.5 12q43.5 12 70.5 32l0 317h100v-700h-113l-16 -128h-69v216h98v210q-29 -16 -77.5 -30.5q-48.5 -14.5 -111.5 -14.5q-47 0 -85.5 11q-38.5 11 -66 36q-27.5 25 -42.5 63.5q-15 38.5 -15 94.5l0 242z" />
-<glyph unicode="&#1228;" horiz-adv-x="572" d="M392 226q-25 -11 -65.5 -24q-40.5 -13 -95.5 -13q-85 0 -128 39q-43 39 -43 138v159h92v-128q0 -30 3.5 -54q3.5 -24 14 -41q10.5 -17 30.5 -26q20 -9 53 -9q51 0 85 11q34 11 54 25l0 222h92v-525h-109l-20 -132h-58v210l95 0z" />
-<glyph unicode="&#1229;" horiz-adv-x="884" d="M679 451l11 112h-4l-43 -97l-195 -310h-30l-205 311l-41 95h-5l16 -110v-452h-94v700h75l237 -357l37 -76h2l35 78l225 355h79v-612h117v-24l-100 -194h-66l50 130l-101 0z" />
-<glyph unicode="&#1230;" horiz-adv-x="768" d="M574 297l6 107h-12l-45 -82l-135 -199h-31l-142 199l-40 82h-11l9 -106v-298h-85v525h96l157 -231l38 -73l42 75l147 229h96v-447h92v-24l-100 -186h-66l50 132l-66 0z" />
-<glyph unicode="&#1231;" horiz-adv-x="279" d="M92 700h95v-700l-95 0z" />
-<glyph unicode="&#1232;" horiz-adv-x="645" d="M457 183h-277l-74 -183h-98l288 710h52l289 -710h-104zM210 267h218l-81 199l-27 107h-2l-27 -109zM229 871q5 -36 30.5 -54.5q25.5 -18.5 67.5 -18.5q42 0 67.5 18.5q25.5 18.5 30.5 53.5l84 -18q-13 -55 -57 -86q-44 -31 -126 -31q-79 0 -129.5 27q-50.5 27 -60.5 88z" />
-<glyph unicode="&#1233;" horiz-adv-x="582" d="M82 492q90 43 223 43q60 0 96.5 -15.5q36.5 -15.5 56.5 -39.5q20 -24 26.5 -53.5q6.5 -29.5 6.5 -58.5q0 -55 -4 -110.5q-4 -55.5 -4 -120.5q0 -38 3.5 -73.5q3.5 -35.5 11.5 -65.5l-67 0l-25 80h-10q-11 -15 -27 -30.5q-16 -15.5 -38 -27.5q-22 -12 -50.5 -20q-28.5 -8 -65.5 -8q-37 0 -68 10.5q-31 10.5 -53.5 29.5q-22.5 19 -35.5 46.5q-13 27.5 -13 61.5q0 45 19.5 78q19.5 33 50.5 54q31 21 70.5 31q39.5 10 78.5 10q31 0 52.5 -1q21.5 -1 36 -2.5q14.5 -1.5 24.5 -3q10 -1.5 18 -2.5q2 15 3 26q1 11 1 28q0 28 -6 47q-6 19 -19.5 30.5q-13.5 11.5 -36.5 16.5q-23 5 -56 5q-19 0 -42 -3q-23 -3 -46 -8.5q-23 -5.5 -45.5 -13.5q-22.5 -8 -40.5 -17zM395 238q-8 1 -17 3q-9 2 -22.5 3q-13.5 1 -32 2q-18.5 1 -45.5 1q-62 0 -98.5 -22q-36.5 -22 -36.5 -75q0 -40 28.5 -60q28.5 -20 73.5 -20q33 0 58.5 8.5q25.5 8.5 44 21q18.5 12.5 30 28q11.5 15.5 17.5 30.5zM186 712q5 -22 14 -35q9 -13 21 -19.5q12 -6.5 27.5 -8q15.5 -1.5 32.5 -1.5q17 0 32.5 2q15.5 2 27.5 9q12 7 21 19q9 12 14 33h72q-11 -80 -57.5 -104q-46.5 -24 -111.5 -24q-31 0 -60 5q-29 5 -52.5 17q-23.5 12 -40 31.5q-16.5 19.5 -22.5 49.5z" />
-<glyph unicode="&#1234;" horiz-adv-x="645" d="M457 183h-277l-74 -183h-98l288 710h52l289 -710h-104zM210 267h218l-81 199l-27 107h-2l-27 -109zM153 795q0 23 16.5 36q16.5 13 45.5 13q28 0 45 -13q17 -13 17 -36q0 -22 -17 -35.5q-17 -13.5 -45 -13.5q-29 0 -45.5 13.5q-16.5 13.5 -16.5 35.5zt0 0zM367 795q0 23 16.5 36q16.5 13 44.5 13q29 0 46 -13q17 -13 17 -36q0 -22 -17 -35.5q-17 -13.5 -46 -13.5q-28 0 -44.5 13.5t-16.5 35.5z" />
-<glyph unicode="&#1235;" horiz-adv-x="582" d="M82 492q90 43 223 43q60 0 96.5 -15.5q36.5 -15.5 56.5 -39.5q20 -24 26.5 -53.5q6.5 -29.5 6.5 -58.5q0 -55 -4 -110.5q-4 -55.5 -4 -120.5q0 -38 3.5 -73.5q3.5 -35.5 11.5 -65.5l-67 0l-25 80h-10q-11 -15 -27 -30.5q-16 -15.5 -38 -27.5q-22 -12 -50.5 -20q-28.5 -8 -65.5 -8q-37 0 -68 10.5q-31 10.5 -53.5 29.5q-22.5 19 -35.5 46.5q-13 27.5 -13 61.5q0 45 19.5 78q19.5 33 50.5 54q31 21 70.5 31q39.5 10 78.5 10q31 0 52.5 -1q21.5 -1 36 -2.5q14.5 -1.5 24.5 -3q10 -1.5 18 -2.5q2 15 3 26q1 11 1 28q0 28 -6 47q-6 19 -19.5 30.5q-13.5 11.5 -36.5 16.5q-23 5 -56 5q-19 0 -42 -3q-23 -3 -46 -8.5q-23 -5.5 -45.5 -13.5q-22.5 -8 -40.5 -17zM395 238q-8 1 -17 3q-9 2 -22.5 3q-13.5 1 -32 2q-18.5 1 -45.5 1q-62 0 -98.5 -22q-36.5 -22 -36.5 -75q0 -40 28.5 -60q28.5 -20 73.5 -20q33 0 58.5 8.5q25.5 8.5 44 21q18.5 12.5 30 28q11.5 15.5 17.5 30.5zM119 633q0 24 16 40q16 16 42 16q25 0 40.5 -16q15.5 -16 15.5 -40q0 -23 -15.5 -39q-15.5 -16 -40.5 -16q-26 0 -42 16q-16 16 -16 39zt0 0zM334 633q0 24 15.5 40q15.5 16 41.5 16q26 0 41.5 -16q15.5 -16 15.5 -40q0 -23 -15.5 -39q-15.5 -16 -41.5 -16q-26 0 -41.5 16t-15.5 39z" />
-<glyph unicode="&#1236;" horiz-adv-x="929" d="M429 591l-38 -106l-136 -212h178v318zM433 189h-230l-120 -189h-108l456 700h425v-86h-323v-213h295v-86h-295v-229h328v-86l-428 0z" />
-<glyph unicode="&#1237;" horiz-adv-x="930" d="M397 236q-17 2 -35.5 1.5q-18.5 -0.5 -35.5 -0.5q-36 0 -69 -4q-33 -4 -58.5 -14q-25.5 -10 -40.5 -27q-15 -17 -15 -43q0 -36 28.5 -58.5q28.5 -22.5 73.5 -22.5q33 0 58 8q25 8 43.5 20q18.5 12 31 26.5q12.5 14.5 19.5 28.5zM421 92q-15 -18 -35 -36q-20 -18 -45 -32q-25 -14 -56.5 -23q-31.5 -9 -69.5 -9q-37 0 -68 10q-31 10 -53.5 29q-22.5 19 -35.5 46.5q-13 27.5 -13 61.5q0 45 20.5 76q20.5 31 58 49.5q37.5 18.5 90 27q52.5 8.5 115.5 8.5q15 0 33.5 -0.5q18.5 -0.5 35.5 1.5l0 3q3 24 3 53q0 56 -27 78q-27 22 -93 22q-18 0 -40.5 -2.5q-22.5 -2.5 -46 -7q-23.5 -4.5 -46 -11q-22.5 -6.5 -40.5 -13.5l-25 66q42 21 100 33.5q58 12.5 123 12.5q57 0 97 -19q40 -19 62 -51q16 19 37.5 33q21.5 14 45.5 23.5q24 9.5 50 14q26 4.5 50 4.5q40 0 79 -8.5q39 -8.5 70 -31.5q31 -23 50 -65q19 -42 19 -108q0 -14 -0.5 -31.5q-0.5 -17.5 -3.5 -43.5l-376 0q1 -45 11.5 -80.5q10.5 -35.5 33 -60q22.5 -24.5 58 -37.5q35.5 -13 85.5 -13q38 0 76 12q38 12 63 31l33 -61q-34 -25 -88 -41q-54 -16 -110 -16q-70 0 -128.5 28q-58.5 28 -87.5 78zM777 318q1 40 -7.5 67.5q-8.5 27.5 -25.5 44.5q-17 17 -41 24.5q-24 7.5 -54 7.5q-69 0 -109 -33q-40 -33 -50 -111z" />
-<glyph unicode="&#1238;" horiz-adv-x="585" d="M89 700h423v-86h-323v-213h295v-86h-295v-229h328v-86h-428zM204 871q5 -36 30.5 -54.5q25.5 -18.5 67.5 -18.5q42 0 67.5 18.5q25.5 18.5 30.5 53.5l84 -18q-13 -55 -57 -86q-44 -31 -126 -31q-79 0 -129.5 27q-50.5 27 -60.5 88z" />
-<glyph unicode="&#1239;" horiz-adv-x="598" d="M515 43q-35 -26 -87 -41.5q-52 -15.5 -113 -15.5q-66 0 -114.5 19.5q-48.5 19.5 -79.5 55.5q-31 36 -46 87q-15 51 -15 114q0 135 66.5 206.5q66.5 71.5 189.5 71.5q39 0 78 -8.5q39 -8.5 70 -32q31 -23.5 50.5 -64.5q19.5 -41 19.5 -107q0 -16 -1 -37q-1 -21 -4 -41l-375 0q2 -92 44 -139q42 -47 143 -47q42 0 80 14.5q38 14.5 59 34.5zM446 316q2 80 -32.5 113q-34.5 33 -96.5 33q-70 0 -111 -33q-41 -33 -48 -113zM223 712q5 -22 14 -35q9 -13 21 -19.5q12 -6.5 27.5 -8q15.5 -1.5 32.5 -1.5q17 0 32.5 2q15.5 2 27.5 9q12 7 21 19q9 12 14 33h72q-11 -80 -57.5 -104q-46.5 -24 -111.5 -24q-31 0 -60 5q-29 5 -52.5 17q-23.5 12 -40 31.5q-16.5 19.5 -22.5 49.5z" />
-<glyph unicode="&#1240;" horiz-adv-x="698" d="M163 313q-2 -12 -3 -24q-1 -12 -1 -24q0 -37 10.5 -71.5q10.5 -34.5 32.5 -61.5q22 -27 55.5 -43q33.5 -16 79.5 -16q97 0 149.5 59.5q52.5 59.5 53.5 180.5zM540 397q-9 118 -64.5 174q-55.5 56 -165.5 56q-26 0 -51 -4.5q-25 -4.5 -47.5 -11q-22.5 -6.5 -41 -14q-18.5 -7.5 -30.5 -14.5l-23 80q32 19 88 34.5q56 15.5 124 15.5q73 0 131 -20.5q58 -20.5 98 -64.5q40 -44 61 -113q21 -69 21 -165q0 -173 -76 -268q-76 -95 -229 -95q-69 0 -121.5 21q-52.5 21 -87.5 59.5q-35 38.5 -53 93.5q-18 55 -18 123q0 26 3 54.5q3 28.5 8 58.5z" />
-<glyph unicode="&#1241;" horiz-adv-x="599" d="M84 481q36 26 87.5 42q51.5 16 110.5 16q67 0 115.5 -20.5q48.5 -20.5 80 -57q31.5 -36.5 46.5 -87.5q15 -51 15 -112q0 -65 -17 -116q-17 -51 -48.5 -86.5q-31.5 -35.5 -77.5 -54.5q-46 -19 -104 -19q-43 0 -84 11q-41 11 -73 37.5q-32 26.5 -51.5 71q-19.5 44.5 -19.5 112.5q0 14 1 33.5q1 19.5 4 40.5l375 0q-5 45 -15.5 77.5q-10.5 32.5 -32 52.5q-21.5 20 -55.5 29.5q-34 9.5 -84 9.5q-39 0 -78 -14q-39 -14 -63 -32zM293 64q65 0 106 42q41 42 42 120l-283 0q-3 -84 34.5 -123t100.5 -39z" />
-<glyph unicode="&#1242;" horiz-adv-x="698" d="M163 313q-2 -12 -3 -24q-1 -12 -1 -24q0 -37 10.5 -71.5q10.5 -34.5 32.5 -61.5q22 -27 55.5 -43q33.5 -16 79.5 -16q97 0 149.5 59.5q52.5 59.5 53.5 180.5zM540 397q-9 118 -64.5 174q-55.5 56 -165.5 56q-26 0 -51 -4.5q-25 -4.5 -47.5 -11q-22.5 -6.5 -41 -14q-18.5 -7.5 -30.5 -14.5l-23 80q32 19 88 34.5q56 15.5 124 15.5q73 0 131 -20.5q58 -20.5 98 -64.5q40 -44 61 -113q21 -69 21 -165q0 -173 -76 -268q-76 -95 -229 -95q-69 0 -121.5 21q-52.5 21 -87.5 59.5q-35 38.5 -53 93.5q-18 55 -18 123q0 26 3 54.5q3 28.5 8 58.5zM172 795q0 23 16.5 36q16.5 13 45.5 13q28 0 45 -13q17 -13 17 -36q0 -22 -17 -35.5q-17 -13.5 -45 -13.5q-29 0 -45.5 13.5q-16.5 13.5 -16.5 35.5zt0 0zM386 795q0 23 16.5 36q16.5 13 44.5 13q29 0 46 -13q17 -13 17 -36q0 -22 -17 -35.5q-17 -13.5 -46 -13.5q-28 0 -44.5 13.5t-16.5 35.5z" />
-<glyph unicode="&#1243;" horiz-adv-x="599" d="M84 481q36 26 87.5 42q51.5 16 110.5 16q67 0 115.5 -20.5q48.5 -20.5 80 -57q31.5 -36.5 46.5 -87.5q15 -51 15 -112q0 -65 -17 -116q-17 -51 -48.5 -86.5q-31.5 -35.5 -77.5 -54.5q-46 -19 -104 -19q-43 0 -84 11q-41 11 -73 37.5q-32 26.5 -51.5 71q-19.5 44.5 -19.5 112.5q0 14 1 33.5q1 19.5 4 40.5l375 0q-5 45 -15.5 77.5q-10.5 32.5 -32 52.5q-21.5 20 -55.5 29.5q-34 9.5 -84 9.5q-39 0 -78 -14q-39 -14 -63 -32zM293 64q65 0 106 42q41 42 42 120l-283 0q-3 -84 34.5 -123q37.5 -39 100.5 -39zt0 0zM131 633q0 24 16 40q16 16 42 16q25 0 40.5 -16q15.5 -16 15.5 -40q0 -23 -15.5 -39q-15.5 -16 -40.5 -16q-26 0 -42 16q-16 16 -16 39zt0 0zM346 633q0 24 15.5 40q15.5 16 41.5 16q26 0 41.5 -16q15.5 -16 15.5 -40q0 -23 -15.5 -39q-15.5 -16 -41.5 -16q-26 0 -41.5 16t-15.5 39z" />
-<glyph unicode="&#1244;" horiz-adv-x="888" d="M392 700h94v-322l46 14l213 308h111l-216 -304l-45 -33l56 -41l239 -322h-121l-234 320h-49v-320h-94v332l-46 -14l-233 -318h-115l236 312l53 38l-51 36l-223 314h116l214 -310h49zM271 795q0 23 16.5 36q16.5 13 45.5 13q28 0 45 -13q17 -13 17 -36q0 -22 -17 -35.5q-17 -13.5 -45 -13.5q-29 0 -45.5 13.5q-16.5 13.5 -16.5 35.5zt0 0zM485 795q0 23 16.5 36q16.5 13 44.5 13q29 0 46 -13q17 -13 17 -36q0 -22 -17 -35.5q-17 -13.5 -46 -13.5q-28 0 -44.5 13.5t-16.5 35.5z" />
-<glyph unicode="&#1245;" horiz-adv-x="774" d="M278 232l-164 -232h-108l175 237l45 35l-63 43l-144 210h100l153 -227h66v227h90v-238l60 16l154 222h99l-151 -209l-48 -38l62 -44l164 -234h-111l-164 236h-65v-236h-90v248zM223 633q0 24 16 40q16 16 42 16q25 0 40.5 -16q15.5 -16 15.5 -40q0 -23 -15.5 -39q-15.5 -16 -40.5 -16q-26 0 -42 16q-16 16 -16 39zt0 0zM438 633q0 24 15.5 40q15.5 16 41.5 16q26 0 41.5 -16q15.5 -16 15.5 -40q0 -23 -15.5 -39q-15.5 -16 -41.5 -16q-26 0 -41.5 16t-15.5 39z" />
-<glyph unicode="&#1246;" horiz-adv-x="589" d="M149 327v78h17q9 0 23.5 0q14.5 0 30 1q15.5 1 30 1.5q14.5 0.5 23.5 2.5q54 7 92 34.5q38 27.5 38 73.5q0 31 -11.5 51.5q-11.5 20.5 -32 33q-20.5 12.5 -47.5 18q-27 5.5 -57 5.5q-58 0 -101 -9q-43 -9 -66 -20l-27 80q10 6 31 12q21 6 48.5 11q27.5 5 61 8.5q33.5 3.5 68.5 3.5q44 0 87 -8.5q43 -8.5 76.5 -28.5q33.5 -20 54.5 -53q21 -33 21 -83q0 -50 -35.5 -95q-35.5 -45 -107.5 -65l0 -4q77 -11 121.5 -53.5q44.5 -42.5 44.5 -114.5q0 -57 -25 -98.5q-25 -41.5 -65.5 -68.5q-40.5 -27 -92 -40q-51.5 -13 -105.5 -13q-72 0 -121 8.5q-49 8.5 -79 20.5l25 86q26 -11 71.5 -20q45.5 -9 111.5 -9q31 0 62 8q31 8 56 24q25 16 40.5 40.5q15.5 24.5 15.5 58.5q0 60 -46.5 88q-46.5 28 -129.5 33q-13 1 -23 1.5q-10 0.5 -24 0.5zM95 795q0 23 16.5 36q16.5 13 45.5 13q28 0 45 -13q17 -13 17 -36q0 -22 -17 -35.5q-17 -13.5 -45 -13.5q-29 0 -45.5 13.5q-16.5 13.5 -16.5 35.5zt0 0zM309 795q0 23 16.5 36q16.5 13 44.5 13q29 0 46 -13q17 -13 17 -36q0 -22 -17 -35.5q-17 -13.5 -46 -13.5q-28 0 -44.5 13.5t-16.5 35.5z" />
-<glyph unicode="&#1247;" horiz-adv-x="516" d="M148 233v70h77q22 0 42.5 6q20.5 6 36.5 16.5q16 10.5 25.5 25q9.5 14.5 9.5 31.5q0 42 -31 58q-31 16 -94 16q-44 0 -80.5 -9.5q-36.5 -9.5 -59.5 -19.5l-25 70q65 37 195 37q94 0 142 -33q48 -33 48 -96q0 -17 -6.5 -35q-6.5 -18 -19.5 -34.5q-13 -16.5 -31.5 -30q-18.5 -13.5 -42.5 -20.5l0 -11q68 -12 95 -44.5q27 -32.5 27 -84.5q0 -33 -15 -61.5q-15 -28.5 -45 -49.5q-30 -21 -75.5 -33q-45.5 -12 -105.5 -12q-59 0 -97.5 8q-38.5 8 -69.5 23l24 73q27 -14 65 -20q38 -6 83 -6q138 0 138 87q0 39 -33 59q-33 20 -115 20zM68 633q0 24 16 40q16 16 42 16q25 0 40.5 -16q15.5 -16 15.5 -40q0 -23 -15.5 -39q-15.5 -16 -40.5 -16q-26 0 -42 16q-16 16 -16 39zt0 0zM283 633q0 24 15.5 40q15.5 16 41.5 16q26 0 41.5 -16q15.5 -16 15.5 -40q0 -23 -15.5 -39q-15.5 -16 -41.5 -16q-26 0 -41.5 16t-15.5 39z" />
-<glyph unicode="&#1248;" horiz-adv-x="614" d="M251 73q40 0 75 8.5q35 8.5 61 26q26 17.5 41 42.5q15 25 15 58q0 69 -55 98.5q-55 29.5 -155 29.5h-95v34l197 209l48 43l-67 -10h-255v88h457v-41l-213 -225l-40 -30v-3l40 9q54 0 98.5 -13.5q44.5 -13.5 76 -39q31.5 -25.5 49 -61.5q17.5 -36 17.5 -82q0 -54 -22.5 -96q-22.5 -42 -62 -71.5q-39.5 -29.5 -93.5 -44.5q-54 -15 -117 -15q-23 0 -51 3q-28 3 -55 8q-27 5 -50 12q-23 7 -38 15l24 86q12 -7 32.5 -13.5q20.5 -6.5 44 -12q23.5 -5.5 48 -9t45.5 -3.5z" />
-<glyph unicode="&#1249;" horiz-adv-x="525" d="M198 -149q39 0 73.5 10.5q34.5 10.5 59.5 30q25 19.5 39.5 47q14.5 27.5 14.5 61.5q0 73 -51 107.5q-51 34.5 -141 34.5h-80v30l161 227l63 55l-89 -7h-220v78h417v-37l-181 -238l-50 -42l49 7q43 0 82 -15q39 -15 68.5 -41.5q29.5 -26.5 46.5 -63.5q17 -37 17 -82q0 -57 -22 -101.5q-22 -44.5 -60 -75q-38 -30.5 -90 -47q-52 -16.5 -112 -16.5q-49 0 -91 8.5q-42 8.5 -78 24.5l25 74q30 -13 66.5 -21t82.5 -8z" />
-<glyph unicode="&#1250;" horiz-adv-x="744" d="M555 463l6 77h-4l-48 -79l-359 -461h-61v700h100v-466l-9 -76h5l50 79l358 463h62v-700h-100zM204 836h350v-68l-350 0z" />
-<glyph unicode="&#1251;" horiz-adv-x="631" d="M451 300l14 104h-11l-49 -98l-246 -306h-71v525h92v-310l-7 -92h11l46 89l241 313h72v-525h-92zM143 666h328v-69l-328 0z" />
-<glyph unicode="&#1252;" horiz-adv-x="744" d="M555 463l6 77h-4l-48 -79l-359 -461h-61v700h100v-466l-9 -76h5l50 79l358 463h62v-700h-100zM203 795q0 23 16.5 36q16.5 13 45.5 13q28 0 45 -13q17 -13 17 -36q0 -22 -17 -35.5q-17 -13.5 -45 -13.5q-29 0 -45.5 13.5q-16.5 13.5 -16.5 35.5zt0 0zM417 795q0 23 16.5 36q16.5 13 44.5 13q29 0 46 -13q17 -13 17 -36q0 -22 -17 -35.5q-17 -13.5 -46 -13.5q-28 0 -44.5 13.5t-16.5 35.5z" />
-<glyph unicode="&#1253;" horiz-adv-x="631" d="M451 300l14 104h-11l-49 -98l-246 -306h-71v525h92v-310l-7 -92h11l46 89l241 313h72v-525h-92zM143 633q0 24 16 40q16 16 42 16q25 0 40.5 -16q15.5 -16 15.5 -40q0 -23 -15.5 -39q-15.5 -16 -40.5 -16q-26 0 -42 16q-16 16 -16 39zt0 0zM358 633q0 24 15.5 40q15.5 16 41.5 16q26 0 41.5 -16q15.5 -16 15.5 -40q0 -23 -15.5 -39q-15.5 -16 -41.5 -16q-26 0 -41.5 16t-15.5 39z" />
-<glyph unicode="&#1254;" horiz-adv-x="747" d="M58 350q0 86 21.5 153.5q21.5 67.5 62 114q40.5 46.5 99 71q58.5 24.5 132.5 24.5q79 0 138.5 -26.5q59.5 -26.5 99 -74q39.5 -47.5 59 -114.5q19.5 -67 19.5 -148q0 -86 -21.5 -153.5q-21.5 -67.5 -62.5 -114q-41 -46.5 -99.5 -71q-58.5 -24.5 -132.5 -24.5q-80 0 -139 26.5q-59 26.5 -98 74q-39 47.5 -58.5 114.5q-19.5 67 -19.5 148zt0 0zM164 350q0 -57 12.5 -107q12.5 -50 38 -88q25.5 -38 65 -60q39.5 -22 93.5 -22q97 0 153.5 67q56.5 67 56.5 210q0 56 -12.5 106q-12.5 50 -38 88q-25.5 38 -65 60.5q-39.5 22.5 -94.5 22.5q-96 0 -152.5 -68q-56.5 -68 -56.5 -209zt0 0zM204 795q0 23 16.5 36q16.5 13 45.5 13q28 0 45 -13q17 -13 17 -36q0 -22 -17 -35.5q-17 -13.5 -45 -13.5q-29 0 -45.5 13.5q-16.5 13.5 -16.5 35.5zt0 0zM418 795q0 23 16.5 36q16.5 13 44.5 13q29 0 46 -13q17 -13 17 -36q0 -22 -17 -35.5q-17 -13.5 -46 -13.5q-28 0 -44.5 13.5t-16.5 35.5z" />
-<glyph unicode="&#1255;" horiz-adv-x="631" d="M60 262q0 65 17 116.5q17 51.5 50 87.5q33 36 80.5 55q47.5 19 108.5 19q64 0 112 -21q48 -21 80 -58.5q32 -37.5 47.5 -88q15.5 -50.5 15.5 -110.5q0 -64 -17.5 -115q-17.5 -51 -50 -87q-32.5 -36 -80 -55q-47.5 -19 -107.5 -19q-66 0 -114 21q-48 21 -79.5 58q-31.5 37 -47 87.5q-15.5 50.5 -15.5 109.5zt0 0zM158 262q0 -37 8.5 -72.5q8.5 -35.5 27.5 -63.5q19 -28 49 -45q30 -17 74 -17q156 0 156 198q0 39 -8.5 75q-8.5 36 -27 63.5q-18.5 27.5 -48.5 44.5q-30 17 -72 17q-78 0 -118.5 -49.5q-40.5 -49.5 -40.5 -150.5zt0 0zM151 633q0 24 16 40q16 16 42 16q25 0 40.5 -16q15.5 -16 15.5 -40q0 -23 -15.5 -39q-15.5 -16 -40.5 -16q-26 0 -42 16q-16 16 -16 39zt0 0zM366 633q0 24 15.5 40q15.5 16 41.5 16q26 0 41.5 -16q15.5 -16 15.5 -40q0 -23 -15.5 -39q-15.5 -16 -41.5 -16q-26 0 -41.5 16t-15.5 39z" />
-<glyph unicode="&#1256;" horiz-adv-x="747" d="M58 350q0 86 21.5 153.5q21.5 67.5 62 114q40.5 46.5 99 71q58.5 24.5 132.5 24.5q79 0 138.5 -26.5q59.5 -26.5 99 -74q39.5 -47.5 59 -114.5q19.5 -67 19.5 -148q0 -86 -21.5 -153.5q-21.5 -67.5 -62.5 -114q-41 -46.5 -99.5 -71q-58.5 -24.5 -132.5 -24.5q-80 0 -139 26.5q-59 26.5 -98 74q-39 47.5 -58.5 114.5q-19.5 67 -19.5 148zt0 0zM164 312q4 -50 18.5 -94q14.5 -44 40.5 -76q26 -32 63 -50.5q37 -18.5 87 -18.5q90 0 146 58q56 58 64 181zM583 396q-5 48 -20 90q-15 42 -41 73.5q-26 31.5 -63 49.5q-37 18 -86 18q-88 0 -143.5 -56.5q-55.5 -56.5 -64.5 -174.5z" />
-<glyph unicode="&#1257;" horiz-adv-x="631" d="M60 262q0 132 66 205q66 73 190 73q64 0 112 -20.5q48 -20.5 79.5 -57.5q31.5 -37 47 -88q15.5 -51 16.5 -112q-1 -131 -67.5 -203.5q-66.5 -72.5 -187.5 -72.5q-66 0 -114.5 20.5q-48.5 20.5 -80 57q-31.5 36.5 -46.5 87.5q-15 51 -15 111zt0 0zM473 295q-13 83 -53 125q-40 42 -104 42q-30 0 -57 -8.5q-27 -8.5 -49 -28.5q-22 -20 -36 -52q-14 -32 -16 -78zM159 229q7 -78 50.5 -121.5q43.5 -43.5 106.5 -43.5q28 0 54 9q26 9 47 28.5q21 19.5 35 51q14 31.5 18 76.5z" />
-<glyph unicode="&#1258;" horiz-adv-x="747" d="M58 350q0 86 21.5 153.5q21.5 67.5 62 114q40.5 46.5 99 71q58.5 24.5 132.5 24.5q79 0 138.5 -26.5q59.5 -26.5 99 -74q39.5 -47.5 59 -114.5q19.5 -67 19.5 -148q0 -86 -21.5 -153.5q-21.5 -67.5 -62.5 -114q-41 -46.5 -99.5 -71q-58.5 -24.5 -132.5 -24.5q-80 0 -139 26.5q-59 26.5 -98 74q-39 47.5 -58.5 114.5q-19.5 67 -19.5 148zt0 0zM164 312q4 -50 18.5 -94q14.5 -44 40.5 -76q26 -32 63 -50.5q37 -18.5 87 -18.5q90 0 146 58q56 58 64 181zM583 396q-5 48 -20 90q-15 42 -41 73.5q-26 31.5 -63 49.5q-37 18 -86 18q-88 0 -143.5 -56.5q-55.5 -56.5 -64.5 -174.5zM204 795q0 23 16.5 36q16.5 13 45.5 13q28 0 45 -13q17 -13 17 -36q0 -22 -17 -35.5q-17 -13.5 -45 -13.5q-29 0 -45.5 13.5q-16.5 13.5 -16.5 35.5zt0 0zM418 795q0 23 16.5 36q16.5 13 44.5 13q29 0 46 -13q17 -13 17 -36q0 -22 -17 -35.5q-17 -13.5 -46 -13.5q-28 0 -44.5 13.5t-16.5 35.5z" />
-<glyph unicode="&#1259;" horiz-adv-x="631" d="M60 262q0 132 66 205q66 73 190 73q64 0 112 -20.5q48 -20.5 79.5 -57.5q31.5 -37 47 -88q15.5 -51 16.5 -112q-1 -131 -67.5 -203.5q-66.5 -72.5 -187.5 -72.5q-66 0 -114.5 20.5q-48.5 20.5 -80 57q-31.5 36.5 -46.5 87.5q-15 51 -15 111zt0 0zM473 295q-13 83 -53 125q-40 42 -104 42q-30 0 -57 -8.5q-27 -8.5 -49 -28.5q-22 -20 -36 -52q-14 -32 -16 -78zM159 229q7 -78 50.5 -121.5q43.5 -43.5 106.5 -43.5q28 0 54 9q26 9 47 28.5q21 19.5 35 51q14 31.5 18 76.5zM151 633q0 24 16 40q16 16 42 16q25 0 40.5 -16q15.5 -16 15.5 -40q0 -23 -15.5 -39q-15.5 -16 -40.5 -16q-26 0 -42 16q-16 16 -16 39zt0 0zM366 633q0 24 15.5 40q15.5 16 41.5 16q26 0 41.5 -16q15.5 -16 15.5 -40q0 -23 -15.5 -39q-15.5 -16 -41.5 -16q-26 0 -41.5 16t-15.5 39z" />
-<glyph unicode="&#1260;" horiz-adv-x="631" d="M161 399h305q-10 116 -73 171.5q-63 55.5 -163 56.5q-53 1 -94 -10q-41 -11 -65 -25l-24 80q33 19 84.5 30q51.5 11 108.5 11q70 0 130.5 -20q60.5 -20 105.5 -63.5q45 -43.5 71 -112.5q26 -69 26 -167q0 -99 -30 -168q-30 -69 -79.5 -112.5q-49.5 -43.5 -114 -63q-64.5 -19.5 -133.5 -19.5q-55 0 -98.5 8.5q-43.5 8.5 -72.5 19.5l26 86q25 -12 65.5 -20q40.5 -8 86.5 -8q43 0 85 12.5q42 12.5 75.5 41q33.5 28.5 56 74.5q22.5 46 27.5 112l-306 0zM79 795q0 23 16.5 36q16.5 13 45.5 13q28 0 45 -13q17 -13 17 -36q0 -22 -17 -35.5q-17 -13.5 -45 -13.5q-29 0 -45.5 13.5q-16.5 13.5 -16.5 35.5zt0 0zM293 795q0 23 16.5 36q16.5 13 44.5 13q29 0 46 -13q17 -13 17 -36q0 -22 -17 -35.5q-17 -13.5 -46 -13.5q-28 0 -44.5 13.5t-16.5 35.5z" />
-<glyph unicode="&#1261;" horiz-adv-x="543" d="M143 304h241q-6 72 -47.5 115q-41.5 43 -119.5 43q-47 0 -81.5 -12.5q-34.5 -12.5 -57.5 -26.5l-30 68q35 23 81 36q46 13 108 13q63 0 109.5 -19q46.5 -19 77 -55q30.5 -36 45 -87.5q14.5 -51.5 14.5 -116.5q0 -134 -68 -205q-68 -71 -187 -71q-54 0 -102 8.5q-48 8.5 -78 25.5l25 76q27 -14 65 -23q38 -9 76 -9q81 0 122.5 38.5q41.5 38.5 48.5 123.5l-242 0zM61 633q0 24 16 40q16 16 42 16q25 0 40.5 -16q15.5 -16 15.5 -40q0 -23 -15.5 -39q-15.5 -16 -40.5 -16q-26 0 -42 16q-16 16 -16 39zt0 0zM276 633q0 24 15.5 40q15.5 16 41.5 16q26 0 41.5 -16q15.5 -16 15.5 -40q0 -23 -15.5 -39q-15.5 -16 -41.5 -16q-26 0 -41.5 16t-15.5 39z" />
-<glyph unicode="&#1262;" horiz-adv-x="608" d="M311 340l27 -89h6l21 92l142 357h102l-196 -462q-29 -67 -51 -113.5q-22 -46.5 -45.5 -75.5q-23.5 -29 -50.5 -42q-27 -13 -66 -13q-36 0 -57.5 5.5q-21.5 5.5 -41.5 17.5l29 82q21 -12 39.5 -14.5q18.5 -2.5 34.5 -2.5q29 0 49.5 25.5q20.5 25.5 36.5 76.5l-285 516h115zM149 836h350v-68l-350 0z" />
-<glyph unicode="&#1263;" horiz-adv-x="531" d="M251 193l31 -101h13l25 102l109 331h94l-172 -475q-19 -49 -38.5 -95q-19.5 -46 -43 -81.5q-23.5 -35.5 -52 -57q-28.5 -21.5 -65.5 -21.5q-40 0 -68 9l15 78q15 -5 30 -5q20 0 36.5 5q16.5 5 30.5 18q14 13 25.5 36.5q11.5 23.5 21.5 60.5l-235 528h109zM102 666h328v-69l-328 0z" />
-<glyph unicode="&#1264;" horiz-adv-x="608" d="M311 340l27 -89h6l21 92l142 357h102l-196 -462q-29 -67 -51 -113.5q-22 -46.5 -45.5 -75.5q-23.5 -29 -50.5 -42q-27 -13 -66 -13q-36 0 -57.5 5.5q-21.5 5.5 -41.5 17.5l29 82q21 -12 39.5 -14.5q18.5 -2.5 34.5 -2.5q29 0 49.5 25.5q20.5 25.5 36.5 76.5l-285 516h115zM155 795q0 23 16.5 36q16.5 13 45.5 13q28 0 45 -13q17 -13 17 -36q0 -22 -17 -35.5q-17 -13.5 -45 -13.5q-29 0 -45.5 13.5q-16.5 13.5 -16.5 35.5zt0 0zM369 795q0 23 16.5 36q16.5 13 44.5 13q29 0 46 -13q17 -13 17 -36q0 -22 -17 -35.5q-17 -13.5 -46 -13.5q-28 0 -44.5 13.5t-16.5 35.5z" />
-<glyph unicode="&#1265;" horiz-adv-x="531" d="M251 193l31 -101h13l25 102l109 331h94l-172 -475q-19 -49 -38.5 -95q-19.5 -46 -43 -81.5q-23.5 -35.5 -52 -57q-28.5 -21.5 -65.5 -21.5q-40 0 -68 9l15 78q15 -5 30 -5q20 0 36.5 5q16.5 5 30.5 18q14 13 25.5 36.5q11.5 23.5 21.5 60.5l-235 528h109zM114 633q0 24 16 40q16 16 42 16q25 0 40.5 -16q15.5 -16 15.5 -40q0 -23 -15.5 -39q-15.5 -16 -40.5 -16q-26 0 -42 16q-16 16 -16 39zt0 0zM329 633q0 24 15.5 40q15.5 16 41.5 16q26 0 41.5 -16q15.5 -16 15.5 -40q0 -23 -15.5 -39q-15.5 -16 -41.5 -16q-26 0 -41.5 16t-15.5 39z" />
-<glyph unicode="&#1266;" horiz-adv-x="608" d="M311 340l27 -89h6l21 92l142 357h102l-196 -462q-29 -67 -51 -113.5q-22 -46.5 -45.5 -75.5q-23.5 -29 -50.5 -42q-27 -13 -66 -13q-36 0 -57.5 5.5q-21.5 5.5 -41.5 17.5l29 82q21 -12 39.5 -14.5q18.5 -2.5 34.5 -2.5q29 0 49.5 25.5q20.5 25.5 36.5 76.5l-285 516h115zM256 850h108v-16l-109 -93h-68zM439 850h115v-16l-157 -93l-69 0z" />
-<glyph unicode="&#1267;" horiz-adv-x="531" d="M251 193l31 -101h13l25 102l109 331h94l-172 -475q-19 -49 -38.5 -95q-19.5 -46 -43 -81.5q-23.5 -35.5 -52 -57q-28.5 -21.5 -65.5 -21.5q-40 0 -68 9l15 78q15 -5 30 -5q20 0 36.5 5q16.5 5 30.5 18q14 13 25.5 36.5q11.5 23.5 21.5 60.5l-235 528h109zM208 739h90v-12l-80 -117h-49zM383 739h101v-11l-132 -118l-51 0z" />
-<glyph unicode="&#1268;" horiz-adv-x="663" d="M176 700v-221q0 -67 32 -103.5q32 -36.5 101 -36.5q51 0 94.5 12q43.5 12 70.5 32l0 317h100v-700h-100v298q-29 -16 -77.5 -30.5q-48.5 -14.5 -111.5 -14.5q-47 0 -85.5 11q-38.5 11 -66 36q-27.5 25 -42.5 63.5q-15 38.5 -15 94.5v242zM167 795q0 23 16.5 36q16.5 13 45.5 13q28 0 45 -13q17 -13 17 -36q0 -22 -17 -35.5q-17 -13.5 -45 -13.5q-29 0 -45.5 13.5q-16.5 13.5 -16.5 35.5zt0 0zM381 795q0 23 16.5 36q16.5 13 44.5 13q29 0 46 -13q17 -13 17 -36q0 -22 -17 -35.5q-17 -13.5 -46 -13.5q-28 0 -44.5 13.5t-16.5 35.5z" />
-<glyph unicode="&#1269;" horiz-adv-x="574" d="M152 525v-129q0 -32 3.5 -57q3.5 -25 15 -43q11.5 -18 32 -27.5q20.5 -9.5 53.5 -9.5q51 0 85.5 11.5q34.5 11.5 52.5 25.5l0 229h92v-525h-92v223q-19 -12 -58 -27q-39 -15 -104 -15q-42 0 -74.5 9q-32.5 9 -54 31q-21.5 22 -32.5 58.5q-11 36.5 -11 91.5v154zM107 633q0 24 16 40q16 16 42 16q25 0 40.5 -16q15.5 -16 15.5 -40q0 -23 -15.5 -39q-15.5 -16 -40.5 -16q-26 0 -42 16q-16 16 -16 39zt0 0zM322 633q0 24 15.5 40q15.5 16 41.5 16q26 0 41.5 -16q15.5 -16 15.5 -40q0 -23 -15.5 -39q-15.5 -16 -41.5 -16q-26 0 -41.5 16t-15.5 39z" />
-<glyph unicode="&#1270;" horiz-adv-x="486" d="M89 700h415v-88h-315v-524h96v-216h-69l-16 128l-111 0z" />
-<glyph unicode="&#1271;" horiz-adv-x="426" d="M88 525h338v-78h-246v-369h81v-210h-65l-16 132l-92 0z" />
-<glyph unicode="&#1272;" horiz-adv-x="846" d="M657 700h100v-700h-100zM89 700h100v-267q6 1 16 2.5q10 1.5 22.5 2.5q12.5 1 26 2q13.5 1 26.5 1q52 0 101 -10q49 -10 87 -34.5q38 -24.5 60.5 -65.5q22.5 -41 22.5 -103q0 -60 -21.5 -105q-21.5 -45 -59.5 -74q-38 -29 -91 -43.5q-53 -14.5 -117 -14.5q-15 0 -36 0.5q-21 0.5 -44.5 2.5q-23.5 2 -47.5 5q-24 3 -45 8zM270 77q37 0 69 9q32 9 55.5 27q23.5 18 37 45q13.5 27 13.5 63q0 40 -15 66q-15 26 -39.5 41q-24.5 15 -57 21q-32.5 6 -68.5 6q-19 0 -42 -3q-23 -3 -34 -6l0 -263q14 -4 34.5 -5q20.5 -1 46.5 -1zt0 0zM254 795q0 23 16.5 36q16.5 13 45.5 13q28 0 45 -13q17 -13 17 -36q0 -22 -17 -35.5q-17 -13.5 -45 -13.5q-29 0 -45.5 13.5q-16.5 13.5 -16.5 35.5zt0 0zM468 795q0 23 16.5 36q16.5 13 44.5 13q29 0 46 -13q17 -13 17 -36q0 -22 -17 -35.5q-17 -13.5 -46 -13.5q-28 0 -44.5 13.5t-16.5 35.5z" />
-<glyph unicode="&#1273;" horiz-adv-x="771" d="M180 78q42 -6 86 -6q72 0 101 25q29 25 29 71q0 40 -28.5 67q-28.5 27 -98.5 27q-19 0 -42.5 -1.5q-23.5 -1.5 -46.5 -6.5zM180 324q32 5 59.5 6.5q27.5 1.5 49.5 1.5q58 0 97.5 -12q39.5 -12 63.5 -33q24 -21 34 -49.5q10 -28.5 10 -61.5q0 -95 -58 -138.5q-58 -43.5 -189 -43.5q-42 0 -81 1q-39 1 -78 4l0 526h92zM591 525h92v-525h-92zM213 633q0 24 16 40q16 16 42 16q25 0 40.5 -16q15.5 -16 15.5 -40q0 -23 -15.5 -39q-15.5 -16 -40.5 -16q-26 0 -42 16q-16 16 -16 39zt0 0zM428 633q0 24 15.5 40q15.5 16 41.5 16q26 0 41.5 -16q15.5 -16 15.5 -40q0 -23 -15.5 -39q-15.5 -16 -41.5 -16q-26 0 -41.5 16t-15.5 39z" />
-<glyph unicode="&#1276;" horiz-adv-x="681" d="M521 -37q0 46 -18 81.5q-18 35.5 -38 64.5l-96 135l-33 61l-28 -61l-171 -244h-110l253 356l-231 344h119l151 -230l27 -58l26 58l158 230h110l-238 -337l151 -215q34 -47 50 -87q16 -40 16 -82q0 -93 -38 -141q-38 -48 -116 -48q-19 0 -40 3l0 85q31 -1 49.5 5.5q18.5 6.5 29 18q10.5 11.5 14 27.5t3.5 34z" />
-<glyph unicode="&#1277;" horiz-adv-x="592" d="M468 127q32 -40 50.5 -75q18.5 -35 18.5 -75q0 -91 -42 -139q-42 -48 -124 -48h-7q-8 0 -15 0.5q-7 0.5 -15 1.5l0 76q63 0 87 24q24 24 24 70q0 40 -19.5 68q-19.5 28 -42.5 57l-51 65l-43 69l-39 -71l-115 -150h-105l203 268l-190 257h116l101 -136l39 -68l39 68l104 136h105l-193 -252z" />
-<glyph unicode="&#1296;" horiz-adv-x="582" d="M395 325q-14 0 -24 0q-10 0 -23 -1q-81 -5 -128 -34q-47 -29 -47 -86q0 -33 13.5 -58q13.5 -25 38 -41q24.5 -16 58 -24q33.5 -8 74.5 -8q48 0 91 11.5q43 11.5 67 25.5l29 -75q-27 -17 -78.5 -32.5q-51.5 -15.5 -123.5 -15.5q-61 0 -111.5 12.5q-50.5 12.5 -87 38.5q-36.5 26 -56.5 65q-20 39 -20 93q0 72 42 119q42 47 120 57l0 4q-35 10 -61 27.5q-26 17.5 -43 39.5q-17 22 -25.5 46.5q-8.5 24.5 -8.5 49.5q0 45 20 78q20 33 54.5 54q34.5 21 80 31q45.5 10 97.5 10q30 0 59.5 -3.5q29.5 -3.5 55 -9.5q25.5 -6 46 -13q20.5 -7 31.5 -14l-28 -78q-15 6 -33.5 11.5q-18.5 5.5 -39 10q-20.5 4.5 -42 7.5q-21.5 3 -41.5 3q-71 0 -113 -22.5q-42 -22.5 -42 -75.5q0 -26 12.5 -46q12.5 -20 33 -35q20.5 -15 46.5 -24.5q26 -9.5 53 -13.5q18 -3 44 -3.5q26 -0.5 46 -0.5h19l0 -80z" />
-<glyph unicode="&#1297;" horiz-adv-x="530" d="M303 233q-81 0 -116 -20.5q-35 -20.5 -35 -58.5q0 -39 36.5 -62q36.5 -23 107.5 -23q85 0 146 35l24 -72q-29 -16 -70 -28.5q-41 -12.5 -96 -12.5q-121 0 -180.5 41.5q-59.5 41.5 -59.5 111.5q0 52 28.5 82.5q28.5 30.5 92.5 47.5l0 10q-49 15 -74 47q-25 32 -25 71q0 64 51 98.5q51 34.5 138 34.5q64 0 111 -14q47 -14 82 -34l-25 -67q-25 11 -61.5 24q-36.5 13 -77.5 13q-63 0 -93.5 -17q-30.5 -17 -30.5 -59q0 -17 9.5 -31.5q9.5 -14.5 25.5 -25q16 -10.5 36.5 -16.5q20.5 -6 42.5 -6h76l0 -69z" />
-<glyph unicode="&#1298;" horiz-adv-x="683" d="M594 -24q0 -92 -35 -139q-35 -47 -112 -47q-19 0 -40 3l0 85q31 -1 48.5 4.5q17.5 5.5 26 19.5q8.5 14 10.5 38q2 24 2 60v612h-220q-11 -197 -29 -326.5q-18 -129.5 -57 -202.5q-26 -48 -59.5 -68q-33.5 -20 -70.5 -20q-21 0 -34.5 2.5q-13.5 2.5 -27.5 7.5l12 85q23 -7 48 0q25 7 48 45q15 25 28 69.5q13 44.5 23 112.5q10 68 17 162.5q7 94.5 10 220.5l412 0z" />
-<glyph unicode="&#1299;" horiz-adv-x="584" d="M496 525v-549q0 -93 -33.5 -137.5q-33.5 -44.5 -109.5 -44.5q-20 0 -42 3l0 75q31 -1 49 6.5q18 7.5 28 23q10 15.5 13 40.5q3 25 3 58v447h-170l-2 -30q-7 -99 -16.5 -177.5q-9.5 -78.5 -27.5 -133q-18 -54.5 -48 -83q-30 -28.5 -78 -28.5q-22 0 -39 2.5q-17 2.5 -29 7.5l14 84q13 -4 29 -4q24 0 43 17.5q19 17.5 33 65.5q14 48 23 134q9 86 13 223z" />
-<glyph unicode="&#1308;" horiz-adv-x="913" d="M247 246l16 -117h2l18 119l155 452h50l156 -454l18 -117h2l19 119l124 452h98l-213 -710h-57l-153 455l-21 106h-5l-20 -107l-153 -454h-58l-217 710l105 0z" />
-<glyph unicode="&#1309;" horiz-adv-x="840" d="M468 525l86 -199l43 -101l27 -101h7l23 104l98 297h88l-191 -536h-50l-147 339v-1l-26 97l-30 -98v1l-141 -338h-48l-199 536h101l111 -297l19 -105h9l28 107l121 295z" />
-<glyph unicode="&#1316;" horiz-adv-x="757" d="M530 612h-341v-612h-100v700h541v-612h98v-216h-69l-16 128l-113 0z" />
-<glyph unicode="&#1317;" horiz-adv-x="620" d="M438 447h-258v-447h-92v525h442v-447h70v-210h-65l-16 132l-81 0z" />
-<glyph unicode="&#1318;" horiz-adv-x="702" d="M486 0v228q0 133 -132 133q-51 0 -94.5 -12q-43.5 -12 -70.5 -33l0 -316h-100v700h100v-298q29 16 77 30.5q48 14.5 111 14.5q46 0 84 -10.5q38 -10.5 66 -33.5q28 -23 43.5 -60.5q15.5 -37.5 15.5 -92.5v-162h96v-216h-69l-16 128z" />
-<glyph unicode="&#1319;" horiz-adv-x="638" d="M553 78h69v-210h-65l-16 132h-80v290q0 43 -5.5 74.5q-5.5 31.5 -20 52.5q-14.5 21 -39 31q-24.5 10 -61.5 10q-26 0 -51 -9q-25 -9 -46 -25q-21 -16 -36 -38.5q-15 -22.5 -22 -50.5l0 -335h-92v700h92v-240h11q30 36 72 58q42 22 104 22q48 0 83 -10.5q35 -10.5 58 -37q23 -26.5 34 -71q11 -44.5 11 -111.5z" />
-<glyph unicode="&#7728;" horiz-adv-x="669" d="M238 318h-49v-318h-100v700h100v-322l46 14l252 308h114l-252 -300l-47 -34l55 -40l278 -326h-126zM340 870h132v-23l-178 -95l-81 0z" />
-<glyph unicode="&#7729;" horiz-adv-x="557" d="M237 236h-57v-236h-92v700h92v-414l52 17l174 222h108l-167 -203h1l-55 -40l63 -45l185 -237h-116zM327 720h104v-23l-112 -127l-56 0z" />
-<glyph unicode="&#7742;" horiz-adv-x="868" d="M679 451l11 112h-4l-43 -97l-195 -310h-30l-205 311l-41 95h-5l16 -110v-452h-94v700h75l237 -357l37 -76h2l35 78l225 355h79v-700h-100zM486 870h132v-23l-178 -95l-81 0z" />
-<glyph unicode="&#7743;" horiz-adv-x="948" d="M428 0v288q0 42 -4 74q-4 32 -16 53.5q-12 21.5 -33.5 32q-21.5 10.5 -55.5 10.5q-53 0 -88.5 -29.5q-35.5 -29.5 -50.5 -75.5l0 -353h-92v525h63l18 -70h10q32 36 73.5 60.5q41.5 24.5 105.5 24.5q54 0 90.5 -23q36.5 -23 55.5 -77q30 46 76 73q46 27 103 27q48 0 81.5 -11q33.5 -11 54.5 -38q21 -27 31 -73q10 -46 10 -116v-302h-92v302q0 40 -4.5 69q-4.5 29 -16.5 48.5q-12 19.5 -33.5 29q-21.5 9.5 -56.5 9.5q-57 0 -90 -30q-33 -30 -47 -90l0 -338zM496 720h104v-23l-112 -127l-56 0z" />
-<glyph unicode="&#7764;" horiz-adv-x="614" d="M89 693q42 9 91.5 12.5q49.5 3.5 97.5 3.5q51 0 103.5 -9q52.5 -9 95.5 -33q43 -24 70.5 -66.5q27.5 -42.5 27.5 -109.5q0 -63 -25 -107.5q-25 -44.5 -66.5 -72.5q-41.5 -28 -95 -41q-53.5 -13 -110.5 -13q-6 0 -18.5 0.5q-12.5 0.5 -26 1q-13.5 0.5 -26 1.5q-12.5 1 -18.5 2l0 -262h-100zM281 623q-27 0 -52.5 -1q-25.5 -1 -39.5 -5l0 -269q5 -2 16.5 -2.5q11.5 -0.5 24 -1.5q12.5 -1 24 -1q11.5 0 17.5 0q36 0 71 5.5q35 5.5 63.5 21.5q28.5 16 46 45q17.5 29 17.5 75q0 40 -17 66q-17 26 -44 41q-27 15 -60.5 20.5q-33.5 5.5 -66.5 5.5zt0 0zM344 870h132v-23l-178 -95l-81 0z" />
-<glyph unicode="&#7765;" horiz-adv-x="630" d="M88 525h62l18 -67h9q27 39 70 60.5q43 21.5 97 21.5q114 0 170 -63.5q56 -63.5 56 -202.5q0 -66 -18.5 -119.5q-18.5 -53.5 -53 -91q-34.5 -37.5 -84 -57.5q-49.5 -20 -110.5 -20q-20 0 -36.5 1.5q-16.5 1.5 -30.5 5q-14 3.5 -28 8q-14 4.5 -29 10.5l0 -211h-92zM323 462q-60 0 -94 -30q-34 -30 -49 -92l0 -242q23 -16 50 -25q27 -9 69 -9q81 0 127 53q46 53 46 158q0 85 -34 136q-34 51 -115 51zt0 0zM327 720h104v-23l-112 -127l-56 0z" />
-<glyph unicode="&#7838;" horiz-adv-x="716" d="M469 593q-19 17 -62 27q-43 10 -91 10q-47 0 -73 -16.5q-26 -16.5 -38 -44.5q-12 -28 -14 -64q-2 -36 -2 -75v-430h-100v467q0 51 10 95.5q10 44.5 35.5 77.5q25.5 33 70.5 52.5q45 19.5 116 19.5q48 0 85.5 -5.5q37.5 -5.5 70 -16.5q32.5 -11 61 -28q28.5 -17 58.5 -40l-172 -190l-37 -28v-3l37 7q45 0 84.5 -12q39.5 -12 68 -36.5q28.5 -24.5 45 -61q16.5 -36.5 16.5 -84.5q0 -54 -17.5 -96q-17.5 -42 -49.5 -71q-32 -29 -77.5 -44.5q-45.5 -15.5 -101.5 -15.5q-11 0 -29 1.5q-18 1.5 -38 4q-20 2.5 -39 6.5q-19 4 -31 9l17 86q10 -5 26 -9q16 -4 33 -6q17 -2 33 -3q16 -1 28 -1q64 0 102 34.5q38 34.5 38 97.5q0 33 -9 57q-9 24 -29.5 39.5q-20.5 15.5 -54.5 23q-34 7.5 -84 7.5h-66l0 65z" />
-<glyph unicode="&#8209;" horiz-adv-x="394" d="M64 332h266v-86l-266 0z" />
-<glyph unicode="&#8211;" horiz-adv-x="724" d="M128 331h468v-86l-468 0z" />
-<glyph unicode="&#8212;" horiz-adv-x="899" d="M128 331h643v-86l-643 0z" />
-<glyph unicode="&#8216;" horiz-adv-x="217" d="M174 619q0 -24 -17 -38q-17 -14 -43 -14q-32 0 -51 19q-19 19 -19 56q0 34 10.5 59q10.5 25 25.5 41.5q15 16.5 32 26.5q17 10 30 14l27 -40q-24 -11 -39 -29q-15 -18 -13 -44q26 5 41.5 -10t15.5 -41z" />
-<glyph unicode="&#8217;" horiz-adv-x="217" d="M44 655q0 24 16.5 38.5q16.5 14.5 42.5 14.5q32 0 51.5 -19q19.5 -19 19.5 -56q0 -35 -11 -60q-11 -25 -26.5 -42q-15.5 -17 -32.5 -26.5q-17 -9.5 -29 -13.5l-28 41q24 11 39.5 28.5q15.5 17.5 14.5 43.5q-26 -5 -41.5 10t-15.5 41z" />
-<glyph unicode="&#8218;" horiz-adv-x="217" d="M44 51q0 24 16.5 38.5q16.5 14.5 42.5 14.5q32 0 51.5 -19q19.5 -19 19.5 -56q0 -35 -11 -60q-11 -25 -26.5 -42q-15.5 -17 -32.5 -26.5q-17 -9.5 -29 -13.5l-28 41q24 11 39.5 28.5q15.5 17.5 14.5 43.5q-26 -5 -41.5 10t-15.5 41z" />
-<glyph unicode="&#8220;" horiz-adv-x="379" d="M336 619q0 -24 -17 -38q-17 -14 -43 -14q-32 0 -51 19q-19 19 -19 56q0 34 10.5 59q10.5 25 25.5 41.5q15 16.5 32 26.5q17 10 30 14l27 -40q-24 -11 -39 -29q-15 -18 -13 -44q26 5 41.5 -10q15.5 -15 15.5 -41zt0 0zM174 619q0 -24 -17 -38q-17 -14 -43 -14q-32 0 -51 19q-19 19 -19 56q0 34 10.5 59q10.5 25 25.5 41.5q15 16.5 32 26.5q17 10 30 14l27 -40q-24 -11 -39 -29q-15 -18 -13 -44q26 5 41.5 -10t15.5 -41z" />
-<glyph unicode="&#8221;" horiz-adv-x="379" d="M206 654q0 24 16.5 38.5q16.5 14.5 42.5 14.5q32 0 51.5 -19q19.5 -19 19.5 -56q0 -35 -11 -60q-11 -25 -26.5 -42q-15.5 -17 -32.5 -26.5q-17 -9.5 -29 -13.5l-28 41q24 11 39.5 28.5q15.5 17.5 14.5 43.5q-26 -5 -41.5 10q-15.5 15 -15.5 41zt0 0zM44 654q0 24 16.5 38.5q16.5 14.5 42.5 14.5q32 0 51.5 -19q19.5 -19 19.5 -56q0 -35 -11 -60q-11 -25 -26.5 -42q-15.5 -17 -32.5 -26.5q-17 -9.5 -29 -13.5l-28 41q24 11 39.5 28.5q15.5 17.5 14.5 43.5q-26 -5 -41.5 10t-15.5 41z" />
-<glyph unicode="&#8222;" horiz-adv-x="379" d="M44 51q0 24 16.5 38.5q16.5 14.5 42.5 14.5q32 0 51.5 -19q19.5 -19 19.5 -56q0 -35 -11 -60q-11 -25 -26.5 -42q-15.5 -17 -32.5 -26.5q-17 -9.5 -29 -13.5l-28 41q24 11 39.5 28.5q15.5 17.5 14.5 43.5q-26 -5 -41.5 10q-15.5 15 -15.5 41zt0 0zM206 51q0 24 16.5 38.5q16.5 14.5 42.5 14.5q32 0 51.5 -19q19.5 -19 19.5 -56q0 -35 -11 -60q-11 -25 -26.5 -42q-15.5 -17 -32.5 -26.5q-17 -9.5 -29 -13.5l-28 41q24 11 39.5 28.5q15.5 17.5 14.5 43.5q-26 -5 -41.5 10t-15.5 41z" />
-<glyph unicode="&#8224;" horiz-adv-x="535" d="M44 506h141l49 -12l-12 48v158h92v-158l-13 -48l49 12h141v-84h-143l-47 12l13 -44v-390l-16 -200h-60l-16 201v389l12 44l-49 -12l-141 0z" />
-<glyph unicode="&#8225;" horiz-adv-x="535" d="M222 392l12 42l-49 -12h-141v84h141l49 -12l-12 47v159h92v-159l-13 -47l49 12h141v-84h-143l-47 12l13 -42v-112l-13 -42l47 12h143v-84h-141l-49 12l13 -47v-131l-17 -200h-58l-17 201v130l12 47l-49 -12h-141v84h141l49 -12l-12 42z" />
-<glyph unicode="&#8226;" horiz-adv-x="495" d="M93 311q0 31 12.5 57q12.5 26 33.5 45q21 19 49 29.5q28 10.5 59 10.5q31 0 59.5 -10q28.5 -10 49.5 -28q21 -18 33.5 -44.5q12.5 -26.5 12.5 -59.5q0 -33 -12.5 -59.5q-12.5 -26.5 -33.5 -44.5q-21 -18 -49 -28q-28 -10 -59 -10q-32 0 -60 10q-28 10 -49 28q-21 18 -33.5 44.5t-12.5 59.5z" />
-<glyph unicode="&#8230;" horiz-adv-x="820" d="M618 51q0 29 18.5 46q18.5 17 48.5 17q30 0 48.5 -17q18.5 -17 18.5 -46q0 -27 -18.5 -45q-18.5 -18 -48.5 -18q-30 0 -48.5 18q-18.5 18 -18.5 45zt0 0zM345 51q0 29 18.5 46q18.5 17 48.5 17q30 0 48.5 -17q18.5 -17 18.5 -46q0 -27 -18.5 -45q-18.5 -18 -48.5 -18q-30 0 -48.5 18q-18.5 18 -18.5 45zt0 0zM72 51q0 29 18.5 46q18.5 17 48.5 17q30 0 48.5 -17q18.5 -17 18.5 -46q0 -27 -18.5 -45q-18.5 -18 -48.5 -18q-30 0 -48.5 18t-18.5 45z" />
-<glyph unicode="&#8240;" horiz-adv-x="1263" d="M74 542q0 44 13 76q13 32 36 53q23 21 54.5 31q31.5 10 68.5 10q37 0 68.5 -9.5q31.5 -9.5 55 -29.5q23.5 -20 36.5 -52.5q13 -32.5 13 -78.5q0 -46 -13 -78.5q-13 -32.5 -36.5 -52.5q-23.5 -20 -55 -29.5q-31.5 -9.5 -68.5 -9.5q-37 0 -68.5 9.5q-31.5 9.5 -54.5 29.5q-23 20 -36 52.5q-13 32.5 -13 78.5zt0 0zM162 542q0 -54 21.5 -79.5q21.5 -25.5 62.5 -25.5q40 0 62.5 23q22.5 23 22.5 82q0 60 -22 82.5q-22 22.5 -63 22.5q-40 0 -62 -22.5q-22 -22.5 -22 -82.5zt0 0zM469 170q0 44 13 76q13 32 36 53q23 21 54.5 31q31.5 10 68.5 10q37 0 68.5 -9.5q31.5 -9.5 55 -29.5q23.5 -20 36.5 -52.5q13 -32.5 13 -78.5q0 -46 -13 -78.5q-13 -32.5 -36.5 -52.5q-23.5 -20 -55 -29.5q-31.5 -9.5 -68.5 -9.5q-37 0 -68.5 9.5q-31.5 9.5 -54.5 29.5q-23 20 -36 52.5q-13 32.5 -13 78.5zt0 0zM557 170q0 -54 21.5 -79.5q21.5 -25.5 62.5 -25.5q40 0 62.5 23q22.5 23 22.5 82q0 60 -22 82.5q-22 22.5 -63 22.5q-40 0 -62 -22.5q-22 -22.5 -22 -82.5zt0 0zM863 170q0 44 13 76q13 32 36 53q23 21 54.5 31q31.5 10 68.5 10q37 0 68.5 -9.5q31.5 -9.5 55 -29.5q23.5 -20 36.5 -52.5q13 -32.5 13 -78.5q0 -46 -13 -78.5q-13 -32.5 -36.5 -52.5q-23.5 -20 -55 -29.5q-31.5 -9.5 -68.5 -9.5q-37 0 -68.5 9.5q-31.5 9.5 -54.5 29.5q-23 20 -36 52.5q-13 32.5 -13 78.5zt0 0zM951 170q0 -54 21.5 -79.5q21.5 -25.5 62.5 -25.5q40 0 62.5 23q22.5 23 22.5 82q0 60 -22 82.5q-22 22.5 -63 22.5q-40 0 -62 -22.5q-22 -22.5 -22 -82.5zt0 0zM702 713l58 -48l-572 -678l-57 49z" />
-<glyph unicode="&#8249;" horiz-adv-x="326" d="M40 259l176 230l59 -53l-101 -135l-53 -41l53 -36l108 -132l-60 -54z" />
-<glyph unicode="&#8250;" horiz-adv-x="326" d="M286 268l-176 -230l-60 52l102 136l53 41l-53 36l-108 133l60 53z" />
-<glyph unicode="&#8260;" horiz-adv-x="201" d="M333 714l60 -43l-524 -684l-60 45z" />
-<glyph unicode="&#8321;" horiz-adv-x="436" d="M80 -28h115v232l8 38l-30 -29l-83 -48l-32 59l168 103h53v-355h102v-72l-301 0z" />
-<glyph unicode="&#8322;" horiz-adv-x="436" d="M355 205q0 -30 -10.5 -57q-10.5 -27 -29 -53q-18.5 -26 -43.5 -51.5q-25 -25.5 -53 -51.5l-50 -30v-2l63 13h144v-73h-321v42q25 18 62 48q37 30 71 65q34 35 58.5 71q24.5 36 24.5 67q0 30 -20.5 44.5q-20.5 14.5 -52.5 14.5q-30 0 -57.5 -10.5q-27.5 -10.5 -47.5 -22.5l-27 66q30 20 68.5 31q38.5 11 78.5 11q69 0 105.5 -32.5t36.5 -89.5z" />
-<glyph unicode="&#8323;" horiz-adv-x="436" d="M185 -38q107 0 107 69q0 30 -24.5 48.5q-24.5 18.5 -81.5 18.5h-57v26l101 107l38 26l-55 -6h-139v69h285v-40l-110 -115l-29 -18v-3l26 3q61 -1 95 -32.5q34 -31.5 34 -85.5q0 -64 -50 -100q-50 -36 -131 -36q-40 0 -69.5 6.5q-29.5 6.5 -52.5 14.5l18 68q19 -8 42.5 -14t52.5 -6z" />
-<glyph unicode="&#8324;" horiz-adv-x="436" d="M419 -8h-90v-92h-78v92h-224v45l247 299h55v-277h90zM251 179l7 48h-3l-24 -45l-80 -97l-37 -32l56 6l81 0z" />
-<glyph unicode="&#8364;" horiz-adv-x="594" d="M28 462h69q13 66 42 113.5q29 47.5 69 78q40 30.5 89.5 45q49.5 14.5 104.5 14.5q57 0 98 -8q41 -8 71 -19l-27 -80q-25 11 -58.5 17q-33.5 6 -81.5 6q-36 0 -69 -9q-33 -9 -60 -29.5q-27 -20.5 -47.5 -52q-20.5 -31.5 -31.5 -76.5l305 0l-20 -74h-295q-1 -10 -1 -19.5q0 -9.5 0 -19.5q0 -9 0 -17.5q0 -8.5 1 -16.5l273 0l-20 -75h-244q42 -169 224 -169q44 0 78.5 10q34.5 10 60.5 24l23 -74q-33 -25 -83 -34.5q-50 -9.5 -98 -9.5q-122 0 -201.5 61.5q-79.5 61.5 -102.5 191.5l-89 0l21 75h60q-1 8 -1 17q0 9 0 18q0 10 0 19.5q0 9.5 1 19.5l-81 0z" />
-<glyph unicode="&#8372;" horiz-adv-x="594" d="M496 316v-74h-257q-22 -17 -41 -47.5q-19 -30.5 -19 -58.5q0 -34 30.5 -51.5q30.5 -17.5 100.5 -17.5q52 0 86.5 10q34.5 10 59.5 23l26 -75q-25 -14 -69 -26q-44 -12 -122 -12q-104 0 -156 36.5q-52 36.5 -52 103.5q0 17 6 35q6 18 14.5 34q8.5 16 33.5 46l-96 0v74zM41 389v74h263q26 19 40.5 48.5q14.5 29.5 14.5 58.5q0 34 -25 48.5q-25 14.5 -85 14.5q-45 0 -74.5 -10q-29.5 -10 -55.5 -21l-29 77q16 7 32.5 13.5q16.5 6.5 36.5 11q20 4.5 46 7q26 2.5 61 2.5q94 0 141.5 -31.5q47.5 -31.5 47.5 -95.5q0 -37 -15 -70.5q-15 -33.5 -38 -52.5l94 0l0 -74z" />
-<glyph unicode="&#8374;" horiz-adv-x="594" d="M32 344h79v349q42 9 89.5 12.5q47.5 3.5 95.5 3.5q52 0 101 -9.5q49 -9.5 87 -33.5q38 -24 61 -65.5q23 -41.5 23 -105.5q0 -62 -24 -104q-24 -42 -63 -68q-39 -26 -88.5 -37.5q-49.5 -11.5 -100.5 -11.5h-85v-73h182v-70h-182v-131h-96v131h-79v70h79v73h-79zM300 627q-27 0 -52.5 -2q-25.5 -2 -40.5 -4l0 -277h80q32 0 64 6.5q32 6.5 57.5 23.5q25.5 17 41.5 46q16 29 16 73q0 39 -13 64.5q-13 25.5 -35.5 41q-22.5 15.5 -53 22t-64.5 6.5z" />
-<glyph unicode="&#8375;" horiz-adv-x="594" d="M32 344h79v349q42 9 89.5 12.5q47.5 3.5 95.5 3.5q52 0 101 -9.5q49 -9.5 87 -33.5q38 -24 61 -65.5q23 -41.5 23 -105.5q0 -62 -24 -104q-24 -42 -63 -68q-39 -26 -88.5 -37.5q-49.5 -11.5 -100.5 -11.5h-85v-73h182v-70h-182v-131h-96v131h-79v70h79v73h-79zM300 627q-27 0 -52.5 -2q-25.5 -2 -40.5 -4l0 -277h80q32 0 64 6.5q32 6.5 57.5 23.5q25.5 17 41.5 46q16 29 16 73q0 39 -13 64.5q-13 25.5 -35.5 41q-22.5 15.5 -53 22t-64.5 6.5z" />
-<glyph unicode="&#8377;" horiz-adv-x="594" d="M32 344h79v349q42 9 89.5 12.5q47.5 3.5 95.5 3.5q52 0 101 -9.5q49 -9.5 87 -33.5q38 -24 61 -65.5q23 -41.5 23 -105.5q0 -62 -24 -104q-24 -42 -63 -68q-39 -26 -88.5 -37.5q-49.5 -11.5 -100.5 -11.5h-85v-73h182v-70h-182v-131h-96v131h-79v70h79v73h-79zM300 627q-27 0 -52.5 -2q-25.5 -2 -40.5 -4l0 -277h80q32 0 64 6.5q32 6.5 57.5 23.5q25.5 17 41.5 46q16 29 16 73q0 39 -13 64.5q-13 25.5 -35.5 41q-22.5 15.5 -53 22t-64.5 6.5z" />
-<glyph unicode="&#8378;" horiz-adv-x="594" d="M32 344h79v349q42 9 89.5 12.5q47.5 3.5 95.5 3.5q52 0 101 -9.5q49 -9.5 87 -33.5q38 -24 61 -65.5q23 -41.5 23 -105.5q0 -62 -24 -104q-24 -42 -63 -68q-39 -26 -88.5 -37.5q-49.5 -11.5 -100.5 -11.5h-85v-73h182v-70h-182v-131h-96v131h-79v70h79v73h-79zM300 627q-27 0 -52.5 -2q-25.5 -2 -40.5 -4l0 -277h80q32 0 64 6.5q32 6.5 57.5 23.5q25.5 17 41.5 46q16 29 16 73q0 39 -13 64.5q-13 25.5 -35.5 41q-22.5 15.5 -53 22t-64.5 6.5z" />
-<glyph unicode="&#8379;" horiz-adv-x="594" d="M32 344h79v349q42 9 89.5 12.5q47.5 3.5 95.5 3.5q52 0 101 -9.5q49 -9.5 87 -33.5q38 -24 61 -65.5q23 -41.5 23 -105.5q0 -62 -24 -104q-24 -42 -63 -68q-39 -26 -88.5 -37.5q-49.5 -11.5 -100.5 -11.5h-85v-73h182v-70h-182v-131h-96v131h-79v70h79v73h-79zM300 627q-27 0 -52.5 -2q-25.5 -2 -40.5 -4l0 -277h80q32 0 64 6.5q32 6.5 57.5 23.5q25.5 17 41.5 46q16 29 16 73q0 39 -13 64.5q-13 25.5 -35.5 41q-22.5 15.5 -53 22t-64.5 6.5z" />
-<glyph unicode="&#8380;" horiz-adv-x="594" d="M32 344h79v349q42 9 89.5 12.5q47.5 3.5 95.5 3.5q52 0 101 -9.5q49 -9.5 87 -33.5q38 -24 61 -65.5q23 -41.5 23 -105.5q0 -62 -24 -104q-24 -42 -63 -68q-39 -26 -88.5 -37.5q-49.5 -11.5 -100.5 -11.5h-85v-73h182v-70h-182v-131h-96v131h-79v70h79v73h-79zM300 627q-27 0 -52.5 -2q-25.5 -2 -40.5 -4l0 -277h80q32 0 64 6.5q32 6.5 57.5 23.5q25.5 17 41.5 46q16 29 16 73q0 39 -13 64.5q-13 25.5 -35.5 41q-22.5 15.5 -53 22t-64.5 6.5z" />
-<glyph unicode="&#8381;" horiz-adv-x="594" d="M32 344h79v349q42 9 89.5 12.5q47.5 3.5 95.5 3.5q52 0 101 -9.5q49 -9.5 87 -33.5q38 -24 61 -65.5q23 -41.5 23 -105.5q0 -62 -24 -104q-24 -42 -63 -68q-39 -26 -88.5 -37.5q-49.5 -11.5 -100.5 -11.5h-85v-73h182v-70h-182v-131h-96v131h-79v70h79v73h-79zM300 627q-27 0 -52.5 -2q-25.5 -2 -40.5 -4l0 -277h80q32 0 64 6.5q32 6.5 57.5 23.5q25.5 17 41.5 46q16 29 16 73q0 39 -13 64.5q-13 25.5 -35.5 41q-22.5 15.5 -53 22t-64.5 6.5z" />
-<glyph unicode="&#8382;" horiz-adv-x="594" d="M32 344h79v349q42 9 89.5 12.5q47.5 3.5 95.5 3.5q52 0 101 -9.5q49 -9.5 87 -33.5q38 -24 61 -65.5q23 -41.5 23 -105.5q0 -62 -24 -104q-24 -42 -63 -68q-39 -26 -88.5 -37.5q-49.5 -11.5 -100.5 -11.5h-85v-73h182v-70h-182v-131h-96v131h-79v70h79v73h-79zM300 627q-27 0 -52.5 -2q-25.5 -2 -40.5 -4l0 -277h80q32 0 64 6.5q32 6.5 57.5 23.5q25.5 17 41.5 46q16 29 16 73q0 39 -13 64.5q-13 25.5 -35.5 41q-22.5 15.5 -53 22t-64.5 6.5z" />
-<glyph unicode="&#8383;" horiz-adv-x="594" d="M32 344h79v349q42 9 89.5 12.5q47.5 3.5 95.5 3.5q52 0 101 -9.5q49 -9.5 87 -33.5q38 -24 61 -65.5q23 -41.5 23 -105.5q0 -62 -24 -104q-24 -42 -63 -68q-39 -26 -88.5 -37.5q-49.5 -11.5 -100.5 -11.5h-85v-73h182v-70h-182v-131h-96v131h-79v70h79v73h-79zM300 627q-27 0 -52.5 -2q-25.5 -2 -40.5 -4l0 -277h80q32 0 64 6.5q32 6.5 57.5 23.5q25.5 17 41.5 46q16 29 16 73q0 39 -13 64.5q-13 25.5 -35.5 41q-22.5 15.5 -53 22t-64.5 6.5z" />
-<glyph unicode="&#8384;" horiz-adv-x="594" d="M32 344h79v349q42 9 89.5 12.5q47.5 3.5 95.5 3.5q52 0 101 -9.5q49 -9.5 87 -33.5q38 -24 61 -65.5q23 -41.5 23 -105.5q0 -62 -24 -104q-24 -42 -63 -68q-39 -26 -88.5 -37.5q-49.5 -11.5 -100.5 -11.5h-85v-73h182v-70h-182v-131h-96v131h-79v70h79v73h-79zM300 627q-27 0 -52.5 -2q-25.5 -2 -40.5 -4l0 -277h80q32 0 64 6.5q32 6.5 57.5 23.5q25.5 17 41.5 46q16 29 16 73q0 39 -13 64.5q-13 25.5 -35.5 41q-22.5 15.5 -53 22t-64.5 6.5z" />
-<glyph unicode="&#8385;" horiz-adv-x="594" d="M32 344h79v349q42 9 89.5 12.5q47.5 3.5 95.5 3.5q52 0 101 -9.5q49 -9.5 87 -33.5q38 -24 61 -65.5q23 -41.5 23 -105.5q0 -62 -24 -104q-24 -42 -63 -68q-39 -26 -88.5 -37.5q-49.5 -11.5 -100.5 -11.5h-85v-73h182v-70h-182v-131h-96v131h-79v70h79v73h-79zM300 627q-27 0 -52.5 -2q-25.5 -2 -40.5 -4l0 -277h80q32 0 64 6.5q32 6.5 57.5 23.5q25.5 17 41.5 46q16 29 16 73q0 39 -13 64.5q-13 25.5 -35.5 41q-22.5 15.5 -53 22t-64.5 6.5z" />
-<glyph unicode="&#8386;" horiz-adv-x="594" d="M32 344h79v349q42 9 89.5 12.5q47.5 3.5 95.5 3.5q52 0 101 -9.5q49 -9.5 87 -33.5q38 -24 61 -65.5q23 -41.5 23 -105.5q0 -62 -24 -104q-24 -42 -63 -68q-39 -26 -88.5 -37.5q-49.5 -11.5 -100.5 -11.5h-85v-73h182v-70h-182v-131h-96v131h-79v70h79v73h-79zM300 627q-27 0 -52.5 -2q-25.5 -2 -40.5 -4l0 -277h80q32 0 64 6.5q32 6.5 57.5 23.5q25.5 17 41.5 46q16 29 16 73q0 39 -13 64.5q-13 25.5 -35.5 41q-22.5 15.5 -53 22t-64.5 6.5z" />
-<glyph unicode="&#8387;" horiz-adv-x="594" d="M32 344h79v349q42 9 89.5 12.5q47.5 3.5 95.5 3.5q52 0 101 -9.5q49 -9.5 87 -33.5q38 -24 61 -65.5q23 -41.5 23 -105.5q0 -62 -24 -104q-24 -42 -63 -68q-39 -26 -88.5 -37.5q-49.5 -11.5 -100.5 -11.5h-85v-73h182v-70h-182v-131h-96v131h-79v70h79v73h-79zM300 627q-27 0 -52.5 -2q-25.5 -2 -40.5 -4l0 -277h80q32 0 64 6.5q32 6.5 57.5 23.5q25.5 17 41.5 46q16 29 16 73q0 39 -13 64.5q-13 25.5 -35.5 41q-22.5 15.5 -53 22t-64.5 6.5z" />
-<glyph unicode="&#8388;" horiz-adv-x="594" d="M32 344h79v349q42 9 89.5 12.5q47.5 3.5 95.5 3.5q52 0 101 -9.5q49 -9.5 87 -33.5q38 -24 61 -65.5q23 -41.5 23 -105.5q0 -62 -24 -104q-24 -42 -63 -68q-39 -26 -88.5 -37.5q-49.5 -11.5 -100.5 -11.5h-85v-73h182v-70h-182v-131h-96v131h-79v70h79v73h-79zM300 627q-27 0 -52.5 -2q-25.5 -2 -40.5 -4l0 -277h80q32 0 64 6.5q32 6.5 57.5 23.5q25.5 17 41.5 46q16 29 16 73q0 39 -13 64.5q-13 25.5 -35.5 41q-22.5 15.5 -53 22t-64.5 6.5z" />
-<glyph unicode="&#8389;" horiz-adv-x="594" d="M32 344h79v349q42 9 89.5 12.5q47.5 3.5 95.5 3.5q52 0 101 -9.5q49 -9.5 87 -33.5q38 -24 61 -65.5q23 -41.5 23 -105.5q0 -62 -24 -104q-24 -42 -63 -68q-39 -26 -88.5 -37.5q-49.5 -11.5 -100.5 -11.5h-85v-73h182v-70h-182v-131h-96v131h-79v70h79v73h-79zM300 627q-27 0 -52.5 -2q-25.5 -2 -40.5 -4l0 -277h80q32 0 64 6.5q32 6.5 57.5 23.5q25.5 17 41.5 46q16 29 16 73q0 39 -13 64.5q-13 25.5 -35.5 41q-22.5 15.5 -53 22t-64.5 6.5z" />
-<glyph unicode="&#8390;" horiz-adv-x="594" d="M32 344h79v349q42 9 89.5 12.5q47.5 3.5 95.5 3.5q52 0 101 -9.5q49 -9.5 87 -33.5q38 -24 61 -65.5q23 -41.5 23 -105.5q0 -62 -24 -104q-24 -42 -63 -68q-39 -26 -88.5 -37.5q-49.5 -11.5 -100.5 -11.5h-85v-73h182v-70h-182v-131h-96v131h-79v70h79v73h-79zM300 627q-27 0 -52.5 -2q-25.5 -2 -40.5 -4l0 -277h80q32 0 64 6.5q32 6.5 57.5 23.5q25.5 17 41.5 46q16 29 16 73q0 39 -13 64.5q-13 25.5 -35.5 41q-22.5 15.5 -53 22t-64.5 6.5z" />
-<glyph unicode="&#8391;" horiz-adv-x="594" d="M32 344h79v349q42 9 89.5 12.5q47.5 3.5 95.5 3.5q52 0 101 -9.5q49 -9.5 87 -33.5q38 -24 61 -65.5q23 -41.5 23 -105.5q0 -62 -24 -104q-24 -42 -63 -68q-39 -26 -88.5 -37.5q-49.5 -11.5 -100.5 -11.5h-85v-73h182v-70h-182v-131h-96v131h-79v70h79v73h-79zM300 627q-27 0 -52.5 -2q-25.5 -2 -40.5 -4l0 -277h80q32 0 64 6.5q32 6.5 57.5 23.5q25.5 17 41.5 46q16 29 16 73q0 39 -13 64.5q-13 25.5 -35.5 41q-22.5 15.5 -53 22t-64.5 6.5z" />
-<glyph unicode="&#8392;" horiz-adv-x="594" d="M32 344h79v349q42 9 89.5 12.5q47.5 3.5 95.5 3.5q52 0 101 -9.5q49 -9.5 87 -33.5q38 -24 61 -65.5q23 -41.5 23 -105.5q0 -62 -24 -104q-24 -42 -63 -68q-39 -26 -88.5 -37.5q-49.5 -11.5 -100.5 -11.5h-85v-73h182v-70h-182v-131h-96v131h-79v70h79v73h-79zM300 627q-27 0 -52.5 -2q-25.5 -2 -40.5 -4l0 -277h80q32 0 64 6.5q32 6.5 57.5 23.5q25.5 17 41.5 46q16 29 16 73q0 39 -13 64.5q-13 25.5 -35.5 41q-22.5 15.5 -53 22t-64.5 6.5z" />
-<glyph unicode="&#8393;" horiz-adv-x="594" d="M32 344h79v349q42 9 89.5 12.5q47.5 3.5 95.5 3.5q52 0 101 -9.5q49 -9.5 87 -33.5q38 -24 61 -65.5q23 -41.5 23 -105.5q0 -62 -24 -104q-24 -42 -63 -68q-39 -26 -88.5 -37.5q-49.5 -11.5 -100.5 -11.5h-85v-73h182v-70h-182v-131h-96v131h-79v70h79v73h-79zM300 627q-27 0 -52.5 -2q-25.5 -2 -40.5 -4l0 -277h80q32 0 64 6.5q32 6.5 57.5 23.5q25.5 17 41.5 46q16 29 16 73q0 39 -13 64.5q-13 25.5 -35.5 41q-22.5 15.5 -53 22t-64.5 6.5z" />
-<glyph unicode="&#8394;" horiz-adv-x="594" d="M32 344h79v349q42 9 89.5 12.5q47.5 3.5 95.5 3.5q52 0 101 -9.5q49 -9.5 87 -33.5q38 -24 61 -65.5q23 -41.5 23 -105.5q0 -62 -24 -104q-24 -42 -63 -68q-39 -26 -88.5 -37.5q-49.5 -11.5 -100.5 -11.5h-85v-73h182v-70h-182v-131h-96v131h-79v70h79v73h-79zM300 627q-27 0 -52.5 -2q-25.5 -2 -40.5 -4l0 -277h80q32 0 64 6.5q32 6.5 57.5 23.5q25.5 17 41.5 46q16 29 16 73q0 39 -13 64.5q-13 25.5 -35.5 41q-22.5 15.5 -53 22t-64.5 6.5z" />
-<glyph unicode="&#8395;" horiz-adv-x="594" d="M32 344h79v349q42 9 89.5 12.5q47.5 3.5 95.5 3.5q52 0 101 -9.5q49 -9.5 87 -33.5q38 -24 61 -65.5q23 -41.5 23 -105.5q0 -62 -24 -104q-24 -42 -63 -68q-39 -26 -88.5 -37.5q-49.5 -11.5 -100.5 -11.5h-85v-73h182v-70h-182v-131h-96v131h-79v70h79v73h-79zM300 627q-27 0 -52.5 -2q-25.5 -2 -40.5 -4l0 -277h80q32 0 64 6.5q32 6.5 57.5 23.5q25.5 17 41.5 46q16 29 16 73q0 39 -13 64.5q-13 25.5 -35.5 41q-22.5 15.5 -53 22t-64.5 6.5z" />
-<glyph unicode="&#8396;" horiz-adv-x="594" d="M32 344h79v349q42 9 89.5 12.5q47.5 3.5 95.5 3.5q52 0 101 -9.5q49 -9.5 87 -33.5q38 -24 61 -65.5q23 -41.5 23 -105.5q0 -62 -24 -104q-24 -42 -63 -68q-39 -26 -88.5 -37.5q-49.5 -11.5 -100.5 -11.5h-85v-73h182v-70h-182v-131h-96v131h-79v70h79v73h-79zM300 627q-27 0 -52.5 -2q-25.5 -2 -40.5 -4l0 -277h80q32 0 64 6.5q32 6.5 57.5 23.5q25.5 17 41.5 46q16 29 16 73q0 39 -13 64.5q-13 25.5 -35.5 41q-22.5 15.5 -53 22t-64.5 6.5z" />
-<glyph unicode="&#8397;" horiz-adv-x="594" d="M32 344h79v349q42 9 89.5 12.5q47.5 3.5 95.5 3.5q52 0 101 -9.5q49 -9.5 87 -33.5q38 -24 61 -65.5q23 -41.5 23 -105.5q0 -62 -24 -104q-24 -42 -63 -68q-39 -26 -88.5 -37.5q-49.5 -11.5 -100.5 -11.5h-85v-73h182v-70h-182v-131h-96v131h-79v70h79v73h-79zM300 627q-27 0 -52.5 -2q-25.5 -2 -40.5 -4l0 -277h80q32 0 64 6.5q32 6.5 57.5 23.5q25.5 17 41.5 46q16 29 16 73q0 39 -13 64.5q-13 25.5 -35.5 41q-22.5 15.5 -53 22t-64.5 6.5z" />
-<glyph unicode="&#8398;" horiz-adv-x="594" d="M32 344h79v349q42 9 89.5 12.5q47.5 3.5 95.5 3.5q52 0 101 -9.5q49 -9.5 87 -33.5q38 -24 61 -65.5q23 -41.5 23 -105.5q0 -62 -24 -104q-24 -42 -63 -68q-39 -26 -88.5 -37.5q-49.5 -11.5 -100.5 -11.5h-85v-73h182v-70h-182v-131h-96v131h-79v70h79v73h-79zM300 627q-27 0 -52.5 -2q-25.5 -2 -40.5 -4l0 -277h80q32 0 64 6.5q32 6.5 57.5 23.5q25.5 17 41.5 46q16 29 16 73q0 39 -13 64.5q-13 25.5 -35.5 41q-22.5 15.5 -53 22t-64.5 6.5z" />
-<glyph unicode="&#8399;" horiz-adv-x="594" d="M32 344h79v349q42 9 89.5 12.5q47.5 3.5 95.5 3.5q52 0 101 -9.5q49 -9.5 87 -33.5q38 -24 61 -65.5q23 -41.5 23 -105.5q0 -62 -24 -104q-24 -42 -63 -68q-39 -26 -88.5 -37.5q-49.5 -11.5 -100.5 -11.5h-85v-73h182v-70h-182v-131h-96v131h-79v70h79v73h-79zM300 627q-27 0 -52.5 -2q-25.5 -2 -40.5 -4l0 -277h80q32 0 64 6.5q32 6.5 57.5 23.5q25.5 17 41.5 46q16 29 16 73q0 39 -13 64.5q-13 25.5 -35.5 41q-22.5 15.5 -53 22t-64.5 6.5z" />
-<glyph unicode="&#8467;" horiz-adv-x="500" d="M406 30q-22 -14 -57.5 -28q-35.5 -14 -70.5 -14q-63 0 -91.5 30.5q-28.5 30.5 -28.5 95.5v104l-50 -44l-35 44l85 74v254q0 44 10 75.5q10 31.5 27.5 51.5q17.5 20 41 29.5q23.5 9.5 50.5 9.5q48 0 79 -29.5q31 -29.5 31 -89.5q0 -74 -40 -157q-40 -83 -131 -171l0 -140q0 -44 17 -60.5q17 -16.5 41 -16.5q25 0 55 10.5q30 10.5 50 21.5zM333 588q0 34 -14 49q-14 15 -32 15q-12 0 -23 -3.5q-11 -3.5 -19.5 -14q-8.5 -10.5 -13.5 -29q-5 -18.5 -5 -48.5v-212q56 65 81.5 125.5t25.5 117.5z" />
-<glyph unicode="&#8470;" horiz-adv-x="1120" d="M731 314h309v-84h-309zM237 438l-61 100h-4l12 -96v-442h-95v710h57l336 -446l57 -97h5l-12 93v440h95v-710h-57zM710 542q0 44 13 76q13 32 36 53q23 21 54.5 31q31.5 10 68.5 10q37 0 68.5 -9.5q31.5 -9.5 55 -29.5q23.5 -20 36.5 -52.5q13 -32.5 13 -78.5q0 -46 -13 -78.5q-13 -32.5 -36.5 -52.5q-23.5 -20 -55 -29.5q-31.5 -9.5 -68.5 -9.5q-37 0 -68.5 9.5q-31.5 9.5 -54.5 29.5q-23 20 -36 52.5q-13 32.5 -13 78.5zt0 0zM798 542q0 -54 21.5 -79.5q21.5 -25.5 62.5 -25.5q40 0 62.5 23q22.5 23 22.5 82q0 60 -22 82.5q-22 22.5 -63 22.5q-40 0 -62 -22.5t-22 -82.5z" />
-<glyph unicode="&#8482;" horiz-adv-x="975" d="M425 620h-146v-280h-95v280h-146v80h387zM846 502l12 103h-5l-42 -85l-93 -135h-43l-94 134l-40 86h-5l16 -102v-163h-85v360h93l113 -165l30 -59h1l32 61l105 163h94v-360l-89 0z" />
-<glyph unicode="&#8494;" horiz-adv-x="600" d="M157 263v-181q62 -59 145 -59q124 0 193 120l35 -21q-43 -66 -99 -100.5q-56 -34.5 -129 -34.5q-59 0 -107 21.5q-48 21.5 -81.5 58.5q-33.5 37 -51.5 87.5q-18 50.5 -18 108.5q0 59 18.5 109.5q18.5 50.5 52.5 87.5q34 37 81.5 58q47.5 21 105.5 21q62 0 109.5 -22q47.5 -22 80.5 -59.5q33 -37.5 50 -87.5q17 -50 19 -107zM448 299v145q-63 60 -147 60q-86 0 -144 -60l0 -145z" />
-<glyph unicode="&#8706;" horiz-adv-x="586" d="M455 503q-6 51 -32 85.5q-26 34.5 -62.5 56q-36.5 21.5 -80.5 30q-44 8.5 -86 6.5q0 2 1 5q1 3 2.5 10q1.5 7 4.5 20q3 13 9 36q77 0 140 -15.5q63 -15.5 107.5 -52.5q44.5 -37 68.5 -98q24 -61 24 -151q0 -115 -23 -199.5q-23 -84.5 -63.5 -140q-40.5 -55.5 -96.5 -82.5q-56 -27 -122 -27q-110 0 -166 53.5q-56 53.5 -56 149.5q0 60 19 121q19 61 57 110.5q38 49.5 95 80.5q57 31 134 31q47 0 70.5 -7.5q23.5 -7.5 43.5 -21.5zM456 403q-23 24 -53.5 39q-30.5 15 -79.5 15q-42 0 -79 -21q-37 -21 -64 -57q-27 -36 -42.5 -85.5q-15.5 -49.5 -15.5 -106.5q0 -25 7 -48q7 -23 22.5 -40.5q15.5 -17.5 40.5 -28q25 -10.5 61 -10.5q59 0 98 32q39 32 62.5 81.5q23.5 49.5 33 110.5t9.5 119z" />
-<glyph unicode="&#8719;" horiz-adv-x="739" d="M551 612h-363v-812h-100v900h563v-900l-100 0z" />
-<glyph unicode="&#8721;" horiz-adv-x="554" d="M145 -74l-44 -38h414v-88h-500v88l237 331l40 31l-41 33l-236 329v88h500v-88h-408l47 -38l228 -318z" />
-<glyph unicode="&#8722;" horiz-adv-x="554" d="M43 379h468v-84l-468 0z" />
-<glyph unicode="&#8725;" horiz-adv-x="554" d="M509 714l60 -43l-524 -684l-60 45z" />
-<glyph unicode="&#8730;" horiz-adv-x="554" d="M187 453l99 -226l24 -106h2l22 108l156 471h91l-248 -710h-40l-170 377h-132l0 86z" />
-<glyph unicode="&#8734;" horiz-adv-x="934" d="M460 281q-39 -59 -95.5 -90q-56.5 -31 -120.5 -31q-38 0 -71.5 13q-33.5 13 -59.5 37q-26 24 -41 58.5q-15 34.5 -15 77.5q0 45 14.5 81.5q14.5 36.5 41 62q26.5 25.5 62 39q35.5 13.5 77.5 13.5q77 0 132 -31q55 -31 90 -79q48 60 105.5 85q57.5 25 120.5 25q38 0 70.5 -13q32.5 -13 56.5 -37q24 -24 37.5 -58.5q13.5 -34.5 13.5 -76.5q0 -45 -15 -81.5q-15 -36.5 -41.5 -62q-26.5 -25.5 -62.5 -39.5q-36 -14 -79 -14q-38 0 -71 10q-33 10 -60.5 26.5q-27.5 16.5 -49.5 38.5q-22 22 -39 46zt0 0zM682 246q21 0 40 7.5q19 7.5 33 21.5q14 14 22.5 34q8.5 20 8.5 45q0 20 -6.5 38.5q-6.5 18.5 -20 32.5q-13.5 14 -33.5 22.5q-20 8.5 -47 8.5q-42 0 -87.5 -20.5q-45.5 -20.5 -82.5 -65.5q13 -26 31.5 -48.5q18.5 -22.5 40.5 -39q22 -16.5 47.5 -26.5q25.5 -10 53.5 -10zt0 0zM253 456q-21 0 -40 -8q-19 -8 -33 -22.5q-14 -14.5 -22.5 -34q-8.5 -19.5 -8.5 -42.5q0 -45 31.5 -74q31.5 -29 83.5 -29q46 0 89 27q43 27 72 67q-29 54 -72 85t-100 31z" />
-<glyph unicode="&#8747;" horiz-adv-x="386" d="M240 -52q0 -83 -37 -119.5q-37 -36.5 -116 -36.5q-41 0 -76.5 7.5q-35.5 7.5 -61.5 18.5v74q52 -10 75.5 -15q23.5 -5 48.5 -5q42 0 57 24q15 24 15 82v579q0 82 36.5 119q36.5 37 115.5 37q37 0 73.5 -8q36.5 -8 63.5 -18l-22 -76q-26 10 -50.5 16q-24.5 6 -51.5 6q-41 0 -55.5 -23.5q-14.5 -23.5 -14.5 -80.5z" />
-<glyph unicode="&#8776;" horiz-adv-x="554" d="M34 451q48 34 86 47q38 13 70 13q31 0 57 -8.5q26 -8.5 50.5 -18.5q24.5 -10 47.5 -18.5q23 -8.5 48 -8.5q20 0 42 7.5q22 7.5 48 27.5l37 -71q-41 -26 -73 -36.5q-32 -10.5 -59 -10.5q-29 0 -53.5 8.5q-24.5 8.5 -48 19q-23.5 10.5 -46.5 19.5q-23 9 -50 9q-25 0 -54 -11q-29 -11 -66 -38zM34 278q48 34 86 47q38 13 70 13q31 0 57 -8.5q26 -8.5 50.5 -18.5q24.5 -10 47.5 -18.5q23 -8.5 48 -8.5q20 0 42 7.5q22 7.5 48 27.5l37 -71q-41 -26 -73 -36.5q-32 -10.5 -59 -10.5q-29 0 -53.5 8.5q-24.5 8.5 -48 19q-23.5 10.5 -46.5 19.5q-23 9 -50 9q-25 0 -54 -11q-29 -11 -66 -38z" />
-<glyph unicode="&#8800;" horiz-adv-x="554" d="M43 465h253l63 131h87l-64 -131h129v-84h-170l-42 -88h212v-84h-253l-70 -145h-85l70 145h-130v84h170l43 88l-213 0z" />
-<glyph unicode="&#8804;" horiz-adv-x="554" d="M506 82l-38 -75l-410 214l39 76zM37 423v38l419 236l42 -72l-256 -144l-100 -37l99 -32l262 -143l-41 -70z" />
-<glyph unicode="&#8805;" horiz-adv-x="554" d="M506 227l-406 -220l-41 73l407 222zM506 472v-38l-419 -236l-42 72l256 144l100 37l-99 32l-262 143l41 70z" />
-<glyph unicode="&#9674;" horiz-adv-x="554" d="M296 -10h-43l-218 352l218 368h43l223 -363zM314 169l108 168l-117 186l-31 86h-2l-32 -88l-107 -168l116 -186l32 -86l2 0z" />
-<glyph unicode="&#11367;" horiz-adv-x="770" d="M544 313h-355v-313h-100v700h100v-299h355v299h100v-612h97v-216h-69l-16 128l-112 0z" />
-<glyph unicode="&#11368;" horiz-adv-x="638" d="M553 78h69v-210h-65l-16 132h-80v290q0 43 -5.5 74.5q-5.5 31.5 -20 52.5q-14.5 21 -39 31q-24.5 10 -61.5 10q-26 0 -51 -9q-25 -9 -46 -25q-21 -16 -36 -38.5q-15 -22.5 -22 -50.5l0 -335h-92v700h92v-240h11q30 36 72 58q42 22 104 22q48 0 83 -10.5q35 -10.5 58 -37q23 -26.5 34 -71q11 -44.5 11 -111.5z" />
-<glyph unicode="&#62465;" horiz-adv-x="2" d="M-217 870h132v-23l-178 -95l-81 0z" />
-<glyph unicode="&#62470;" horiz-adv-x="503" d="M108 872q19 -32 58 -49q39 -17 90 -17q53 0 89.5 19.5q36.5 19.5 53.5 46.5l44 -23q-10 -28 -28.5 -50q-18.5 -22 -43.5 -37.5q-25 -15.5 -55 -23.5q-30 -8 -61 -8q-29 0 -58 6.5q-29 6.5 -55 20.5q-26 14 -47.5 35q-21.5 21 -34.5 51z" />
-<glyph unicode="&#62471;" horiz-adv-x="325" d="M197 0l-32 -53q49 -8 72.5 -26q23.5 -18 23.5 -51q0 -42 -37 -67.5q-37 -25.5 -103 -25.5q-13 0 -26.5 1q-13.5 1 -27.5 4l9 36q35 -2 55 1q20 3 30 10q10 7 12.5 15.5q2.5 8.5 2.5 16.5q0 17 -25.5 26.5q-25.5 9.5 -73.5 14.5l59 98z" />
-<glyph unicode="&#62472;" horiz-adv-x="478" d="M206 870h73l139 -100v-25h-92l-65 47l-20 35l-21 -34l-70 -48h-90l0 26z" />
-<glyph unicode="&#62473;" horiz-adv-x="249" d="M59 -102q0 22 17.5 36q17.5 14 40.5 14q29 0 50.5 -19q21.5 -19 21.5 -59q0 -27 -10 -48q-10 -21 -24 -36q-14 -15 -29.5 -24q-15.5 -9 -27.5 -13l-29 40q19 8 32.5 23.5q13.5 15.5 13.5 38.5q-23 -5 -39.5 9t-16.5 38z" />
-<glyph unicode="&#62474;" horiz-adv-x="217" d="M44 655q0 24 16.5 38.5q16.5 14.5 42.5 14.5q32 0 51.5 -19q19.5 -19 19.5 -56q0 -35 -11 -60q-11 -25 -26.5 -42q-15.5 -17 -32.5 -26.5q-17 -9.5 -29 -13.5l-28 41q24 11 39.5 28.5q15.5 17.5 14.5 43.5q-26 -5 -41.5 10t-15.5 41z" />
-<glyph unicode="&#62475;" horiz-adv-x="265" d="M60 798q0 22 19 38q19 16 53 16q34 0 53.5 -16q19.5 -16 19.5 -38q0 -24 -19.5 -39.5q-19.5 -15.5 -53.5 -15.5q-34 0 -53 15.5t-19 39.5z" />
-<glyph unicode="&#62476;" horiz-adv-x="357" d="M60 769q0 37 27 61.5q27 24.5 91 24.5q58 0 88.5 -22q30.5 -22 30.5 -64q0 -36 -29 -60q-29 -24 -90 -24q-60 0 -89 23q-29 23 -29 61zt0 0zM130 769q0 -15 11 -26q11 -11 37 -11q49 0 49 37q0 18 -12 28.5q-12 10.5 -37 10.5q-25 0 -36.5 -10.5t-11.5 -28.5z" />
-<glyph unicode="&#62477;" horiz-adv-x="472" d="M60 791q32 32 61 43.5q29 11.5 55 11.5q21 0 41.5 -5.5q20.5 -5.5 39.5 -12q19 -6.5 37 -12q18 -5.5 36 -5.5q14 0 28.5 5q14.5 5 28.5 17l25 -51q-29 -24 -54.5 -33q-25.5 -9 -49.5 -9q-21 0 -41 5q-20 5 -39 11.5q-19 6.5 -37 11.5q-18 5 -36 5q-17 0 -35 -6.5q-18 -6.5 -36 -24.5z" />
-<glyph unicode="&#62478;" horiz-adv-x="345" d="M235 0q-34 -17 -54 -39.5q-20 -22.5 -19 -52.5q1 -23 16 -39q15 -16 44 -16q10 0 22 2.5q12 2.5 25 7.5l12 -46q-17 -12 -47 -18.5q-30 -6.5 -57 -6.5q-51 0 -80.5 24.5q-29.5 24.5 -29.5 67.5q0 40 31.5 69.5q31.5 29.5 84.5 46.5z" />
-<glyph unicode="&#62598;" horiz-adv-x="641" d="M559 538q0 -26 -8.5 -51.5q-8.5 -25.5 -26 -48q-17.5 -22.5 -44.5 -39.5q-27 -17 -64 -25l0 -4q32 -4 62 -16q30 -12 53 -33q23 -21 37 -51q14 -30 14 -71q0 -54 -25 -93.5q-25 -39.5 -66 -65q-41 -25.5 -92.5 -37.5q-51.5 -12 -103.5 -12q-18 0 -44 0.5q-26 0.5 -54.5 2q-28.5 1.5 -57 4q-28.5 2.5 -50.5 7.5l0 689q41 7 96 11q55 4 118 4q43 0 88.5 -7.5q45.5 -7.5 82.5 -26.5q37 -19 61 -52q24 -33 24 -85zt0 0zM187 82q7 -2 21 -3q14 -1 30.5 -2q16.5 -1 33 -1.5q16.5 -0.5 30.5 -0.5q34 0 65.5 7q31.5 7 55.5 22q24 15 38.5 38q14.5 23 14.5 55q0 40 -17.5 63.5q-17.5 23.5 -45.5 36q-28 12.5 -63 16q-35 3.5 -69 3.5h-94zM242 394q19 0 44 1.5q25 1.5 42 3.5q25 7 47.5 17.5q22.5 10.5 39.5 25q17 14.5 27 34q10 19.5 10 44.5q0 34 -13.5 54.5q-13.5 20.5 -35.5 31.5q-22 11 -50 15q-28 4 -57 4q-35 0 -64.5 -1.5q-29.5 -1.5 -44.5 -3.5l0 -226zM337 870h132v-23l-178 -95l-81 0z" />
-<glyph unicode="&#62599;" horiz-adv-x="629" d="M88 700h92v-240h10q23 40 66 59.5q43 19.5 91 19.5q109 0 165.5 -66.5q56.5 -66.5 56.5 -200.5q0 -137 -74 -209q-74 -72 -208 -72q-66 0 -119.5 11q-53.5 11 -79.5 26zM334 461q-32 0 -56.5 -10q-24.5 -10 -43.5 -27.5q-19 -17.5 -32.5 -40q-13.5 -22.5 -21.5 -46.5l0 -249q49 -19 119 -19q79 0 125.5 48.5q46.5 48.5 46.5 155.5q0 40 -8 74.5q-8 34.5 -25 59.5q-17 25 -42.5 39.5q-25.5 14.5 -61.5 14.5zt0 0zM354 720h104v-23l-112 -127l-56 0z" />
-<glyph unicode="&#62600;" horiz-adv-x="565" d="M89 700h423v-86h-323v-223h300v-86h-300v-305h-100zM338 870h132v-23l-178 -95l-81 0z" />
-<glyph unicode="&#62601;" horiz-adv-x="364" d="M24 525h89v14q0 49 9 82.5q9 33.5 28.5 54q19.5 20.5 51 29.5q31.5 9 76.5 9q38 0 66.5 -4.5q28.5 -4.5 59.5 -15.5l-20 -75q-26 11 -48.5 14q-22.5 3 -43.5 3q-28 0 -45 -5q-17 -5 -26.5 -17.5q-9.5 -12.5 -12.5 -34q-3 -21.5 -3 -54.5l154 0v-78h-154v-447h-92v447h-89zM330 870h132v-23l-178 -95l-81 0z" />
-<glyph unicode="&#62622;" horiz-adv-x="662" d="M-7 594h96v106h100v-106h238v-74h-238v-118q29 16 77 30.5q48 14.5 111 14.5q46 0 84 -10.5q38 -10.5 66 -33.5q28 -23 43.5 -60.5q15.5 -37.5 15.5 -92.5v-250h-100v228q0 133 -132 133q-51 0 -94.5 -12q-43.5 -12 -70.5 -33l0 -316h-100v520l-96 0z" />
-<glyph unicode="&#62623;" horiz-adv-x="647" d="M0 634h94v66h92v-66h171v-66h-171v-108h11q30 36 72 58q42 22 104 22q48 0 83 -10.5q35 -10.5 58 -37q23 -26.5 34 -71q11 -44.5 11 -111.5v-310h-92v290q0 43 -5.5 74.5q-5.5 31.5 -20 52.5q-14.5 21 -39 31q-24.5 10 -61.5 10q-26 0 -51 -9q-25 -9 -46 -25q-21 -16 -36 -38.5q-15 -22.5 -22 -50.5l0 -335h-92v568l-94 0z" />
-<glyph unicode="&#62662;" horiz-adv-x="663" d="M176 700v-221q0 -67 32 -103.5q32 -36.5 101 -36.5q51 0 94.5 12q43.5 12 70.5 32l0 317h100v-724q0 -92 -37.5 -139q-37.5 -47 -115.5 -47q-20 0 -41 3l0 85q31 -1 49.5 5.5q18.5 6.5 28.5 21q10 14.5 13 38.5q3 24 3 57v298q-29 -16 -77.5 -30.5q-48.5 -14.5 -111.5 -14.5q-47 0 -85.5 11q-38.5 11 -66 36q-27.5 25 -42.5 63.5q-15 38.5 -15 94.5l0 242z" />
-<glyph unicode="&#62663;" horiz-adv-x="574" d="M152 525v-129q0 -32 3.5 -57q3.5 -25 15 -43q11.5 -18 32 -27.5q20.5 -9.5 53.5 -9.5q51 0 85.5 11.5q34.5 11.5 52.5 25.5l0 229h92v-549q0 -93 -33.5 -137.5q-33.5 -44.5 -109.5 -44.5q-20 0 -42 3l0 75q31 -1 49 6.5q18 7.5 28 23q10 15.5 13 40.5q3 25 3 58v223q-19 -12 -58 -27q-39 -15 -104 -15q-42 0 -74.5 9q-32.5 9 -54 31q-21.5 22 -32.5 58.5q-11 36.5 -11 91.5l0 154z" />
-<glyph unicode="&#62668;" horiz-adv-x="608" d="M311 340l27 -89h6l21 92l142 357h102l-196 -462q-29 -67 -51 -113.5q-22 -46.5 -45.5 -75.5q-23.5 -29 -50.5 -42q-27 -13 -66 -13q-36 0 -57.5 5.5q-21.5 5.5 -41.5 17.5l29 82q21 -12 39.5 -14.5q18.5 -2.5 34.5 -2.5q29 0 49.5 25.5q20.5 25.5 36.5 76.5l-285 516h115zM348 870h132v-23l-178 -95l-81 0z" />
-<glyph unicode="&#62669;" horiz-adv-x="531" d="M251 193l31 -101h13l25 102l109 331h94l-172 -475q-19 -49 -38.5 -95q-19.5 -46 -43 -81.5q-23.5 -35.5 -52 -57q-28.5 -21.5 -65.5 -21.5q-40 0 -68 9l15 78q15 -5 30 -5q20 0 36.5 5q16.5 5 30.5 18q14 13 25.5 36.5q11.5 23.5 21.5 60.5l-235 528h109zM292 720h104v-23l-112 -127l-56 0z" />
-<glyph unicode="&#62678;" horiz-adv-x="631" d="M161 399h305q-10 116 -73 171.5q-63 55.5 -163 56.5q-53 1 -94 -10q-41 -11 -65 -25l-24 80q33 19 84.5 30q51.5 11 108.5 11q70 0 130.5 -20q60.5 -20 105.5 -63.5q45 -43.5 71 -112.5q26 -69 26 -167q0 -99 -30 -168q-30 -69 -79.5 -112.5q-49.5 -43.5 -114 -63q-64.5 -19.5 -133.5 -19.5q-55 0 -98.5 8.5q-43.5 8.5 -72.5 19.5l26 86q25 -12 65.5 -20q40.5 -8 86.5 -8q43 0 85 12.5q42 12.5 75.5 41q33.5 28.5 56 74.5q22.5 46 27.5 112l-306 0zM176 798q0 22 19 38q19 16 53 16q34 0 53.5 -16q19.5 -16 19.5 -38q0 -24 -19.5 -39.5q-19.5 -15.5 -53.5 -15.5q-34 0 -53 15.5t-19 39.5z" />
-<glyph unicode="&#62679;" horiz-adv-x="543" d="M143 304h241q-6 72 -47.5 115q-41.5 43 -119.5 43q-47 0 -81.5 -12.5q-34.5 -12.5 -57.5 -26.5l-30 68q35 23 81 36q46 13 108 13q63 0 109.5 -19q46.5 -19 77 -55q30.5 -36 45 -87.5q14.5 -51.5 14.5 -116.5q0 -134 -68 -205q-68 -71 -187 -71q-54 0 -102 8.5q-48 8.5 -78 25.5l25 76q27 -14 65 -23q38 -9 76 -9q81 0 122.5 38.5q41.5 38.5 48.5 123.5l-242 0zM170 650q0 23 18 41.5q18 18.5 47 18.5q29 0 48 -18.5q19 -18.5 19 -41.5q0 -23 -19 -40.5q-19 -17.5 -48 -17.5q-29 0 -47 17.5t-18 40.5z" />
-<glyph unicode="&#62730;" horiz-adv-x="589" d="M149 327v78h17q9 0 23.5 0q14.5 0 30 1q15.5 1 30 1.5q14.5 0.5 23.5 2.5q54 7 92 34.5q38 27.5 38 73.5q0 31 -11.5 51.5q-11.5 20.5 -32 33q-20.5 12.5 -47.5 18q-27 5.5 -57 5.5q-58 0 -101 -9q-43 -9 -66 -20l-27 80q10 6 31 12q21 6 48.5 11q27.5 5 61 8.5q33.5 3.5 68.5 3.5q44 0 87 -8.5q43 -8.5 76.5 -28.5q33.5 -20 54.5 -53q21 -33 21 -83q0 -50 -35.5 -95q-35.5 -45 -107.5 -65l0 -4q77 -11 121.5 -53.5q44.5 -42.5 44.5 -114.5q0 -51 -20 -90q-20 -39 -54 -66q-34 -27 -77.5 -42.5q-43.5 -15.5 -91.5 -19.5l-15 -167h-63l-21 167q-50 3 -86 10q-36 7 -60 17l25 88q26 -11 71.5 -20q45.5 -9 111.5 -9q31 0 62 7.5q31 7.5 56 23q25 15.5 40.5 40q15.5 24.5 15.5 58.5q0 60 -46.5 88q-46.5 28 -129.5 33q-13 1 -23 1.5q-10 0.5 -24 0.5z" />
-<glyph unicode="&#62731;" horiz-adv-x="516" d="M148 233v70h77q22 0 42.5 6q20.5 6 36.5 16.5q16 10.5 25.5 25q9.5 14.5 9.5 31.5q0 42 -31 58q-31 16 -94 16q-44 0 -80.5 -9.5q-36.5 -9.5 -59.5 -19.5l-25 70q65 37 195 37q94 0 142 -33q48 -33 48 -96q0 -17 -6.5 -35q-6.5 -18 -19.5 -34.5q-13 -16.5 -31.5 -30q-18.5 -13.5 -42.5 -20.5l0 -11q68 -12 95 -44.5q27 -32.5 27 -84.5q0 -57 -46 -99.5q-46 -42.5 -139 -53.5l-15 -170h-63l-21 168q-41 3 -70 10.5q-29 7.5 -54 19.5l24 74q27 -14 65 -20q38 -6 83 -6q138 0 138 86q0 39 -33 59q-33 20 -115 20z" />
-<glyph unicode="&#62732;" horiz-adv-x="624" d="M584 30q-28 -20 -67.5 -29.5q-39.5 -9.5 -85.5 -12.5l-24 -41q49 -8 72.5 -26q23.5 -18 23.5 -51q0 -42 -37 -67.5q-37 -25.5 -103 -25.5q-13 0 -26.5 1q-13.5 1 -27.5 4l9 36q35 -2 55 1q20 3 30 10q10 7 12.5 15.5q2.5 8.5 2.5 16.5q0 17 -25.5 26.5q-25.5 9.5 -73.5 14.5l51 86q-64 3 -120.5 26q-56.5 23 -99 68q-42.5 45 -67.5 111.5q-25 66.5 -25 156.5q0 98 30 167q30 69 78 112.5q48 43.5 108 63.5q60 20 119 20q66 0 108 -7q42 -7 71 -18l-22 -86q-49 23 -149 23q-45 0 -87.5 -14.5q-42.5 -14.5 -76 -47q-33.5 -32.5 -53.5 -85q-20 -52.5 -20 -128.5q0 -68 19 -119q19 -51 52.5 -85.5q33.5 -34.5 79 -52q45.5 -17.5 99.5 -17.5q49 0 85 8.5q36 8.5 61 22.5z" />
-<glyph unicode="&#62733;" horiz-adv-x="529" d="M484 36q-32 -23 -74 -35q-42 -12 -89 -14l-23 -40q49 -8 72.5 -26q23.5 -18 23.5 -51q0 -42 -37 -67.5q-37 -25.5 -103 -25.5q-13 0 -26.5 1q-13.5 1 -27.5 4l9 36q35 -2 55 1q20 3 30 10q10 7 12.5 15.5q2.5 8.5 2.5 16.5q0 17 -25.5 26.5q-25.5 9.5 -73.5 14.5l52 87q-55 6 -93.5 28q-38.5 22 -62.5 57.5q-24 35.5 -35 83q-11 47.5 -11 104.5q0 133 64.5 205.5q64.5 72.5 185.5 72.5q53 0 92 -9.5q39 -9.5 70 -23.5l-24 -75q-27 14 -58.5 22q-31.5 8 -68.5 8q-163 0 -163 -200q0 -38 9 -73q9 -35 29 -63q20 -28 52.5 -44.5q32.5 -16.5 79.5 -16.5q42 0 73.5 11.5q31.5 11.5 52.5 27.5z" />
-<glyph unicode="&#62734;" horiz-adv-x="645" d="M457 183h-277l-74 -183h-98l288 710h52l289 -710h-104zM210 267h218l-81 199l-27 107h-2l-27 -109zM151 836h350v-68l-350 0z" />
-<glyph unicode="&#62735;" horiz-adv-x="582" d="M82 492q90 43 223 43q60 0 96.5 -15.5q36.5 -15.5 56.5 -39.5q20 -24 26.5 -53.5q6.5 -29.5 6.5 -58.5q0 -55 -4 -110.5q-4 -55.5 -4 -120.5q0 -38 3.5 -73.5q3.5 -35.5 11.5 -65.5l-67 0l-25 80h-10q-11 -15 -27 -30.5q-16 -15.5 -38 -27.5q-22 -12 -50.5 -20q-28.5 -8 -65.5 -8q-37 0 -68 10.5q-31 10.5 -53.5 29.5q-22.5 19 -35.5 46.5q-13 27.5 -13 61.5q0 45 19.5 78q19.5 33 50.5 54q31 21 70.5 31q39.5 10 78.5 10q31 0 52.5 -1q21.5 -1 36 -2.5q14.5 -1.5 24.5 -3q10 -1.5 18 -2.5q2 15 3 26q1 11 1 28q0 28 -6 47q-6 19 -19.5 30.5q-13.5 11.5 -36.5 16.5q-23 5 -56 5q-19 0 -42 -3q-23 -3 -46 -8.5q-23 -5.5 -45.5 -13.5q-22.5 -8 -40.5 -17zM395 238q-8 1 -17 3q-9 2 -22.5 3q-13.5 1 -32 2q-18.5 1 -45.5 1q-62 0 -98.5 -22q-36.5 -22 -36.5 -75q0 -40 28.5 -60q28.5 -20 73.5 -20q33 0 58.5 8.5q25.5 8.5 44 21q18.5 12.5 30 28q11.5 15.5 17.5 30.5zM122 666h328v-69l-328 0z" />
-<glyph unicode="&#62736;" horiz-adv-x="585" d="M89 700h423v-86h-323v-213h295v-86h-295v-229h328v-86h-428zM122 836h350v-68l-350 0z" />
-<glyph unicode="&#62737;" horiz-adv-x="598" d="M515 43q-35 -26 -87 -41.5q-52 -15.5 -113 -15.5q-66 0 -114.5 19.5q-48.5 19.5 -79.5 55.5q-31 36 -46 87q-15 51 -15 114q0 135 66.5 206.5q66.5 71.5 189.5 71.5q39 0 78 -8.5q39 -8.5 70 -32q31 -23.5 50.5 -64.5q19.5 -41 19.5 -107q0 -16 -1 -37q-1 -21 -4 -41l-375 0q2 -92 44 -139q42 -47 143 -47q42 0 80 14.5q38 14.5 59 34.5zM446 316q2 80 -32.5 113q-34.5 33 -96.5 33q-70 0 -111 -33q-41 -33 -48 -113zM141 666h328v-69l-328 0z" />
-<glyph unicode="&#62738;" horiz-adv-x="585" d="M89 700h423v-86h-323v-213h295v-86h-295v-229h328v-86h-428zM126 795q0 23 16.5 36q16.5 13 45.5 13q28 0 45 -13q17 -13 17 -36q0 -22 -17 -35.5q-17 -13.5 -45 -13.5q-29 0 -45.5 13.5q-16.5 13.5 -16.5 35.5zt0 0zM340 795q0 23 16.5 36q16.5 13 44.5 13q29 0 46 -13q17 -13 17 -36q0 -22 -17 -35.5q-17 -13.5 -46 -13.5q-28 0 -44.5 13.5q-16.5 13.5 -16.5 35.5zt0 0zM118 936h350v-68l-350 0z" />
-<glyph unicode="&#62739;" horiz-adv-x="598" d="M515 43q-35 -26 -87 -41.5q-52 -15.5 -113 -15.5q-66 0 -114.5 19.5q-48.5 19.5 -79.5 55.5q-31 36 -46 87q-15 51 -15 114q0 135 66.5 206.5q66.5 71.5 189.5 71.5q39 0 78 -8.5q39 -8.5 70 -32q31 -23.5 50.5 -64.5q19.5 -41 19.5 -107q0 -16 -1 -37q-1 -21 -4 -41l-375 0q2 -92 44 -139q42 -47 143 -47q42 0 80 14.5q38 14.5 59 34.5zM446 316q2 80 -32.5 113q-34.5 33 -96.5 33q-70 0 -111 -33q-41 -33 -48 -113zM139 643q0 24 16 40q16 16 42 16q25 0 40.5 -16q15.5 -16 15.5 -40q0 -23 -15.5 -39q-15.5 -16 -40.5 -16q-26 0 -42 16q-16 16 -16 39zt0 0zM354 643q0 24 15.5 40q15.5 16 41.5 16q26 0 41.5 -16q15.5 -16 15.5 -40q0 -23 -15.5 -39q-15.5 -16 -41.5 -16q-26 0 -41.5 16q-15.5 16 -15.5 39zt0 0zM130 836h350v-68l-350 0z" />
-<glyph unicode="&#62740;" horiz-adv-x="585" d="M89 700h423v-86h-323v-213h295v-86h-295v-229h328v-86h-428zM125 795q0 23 16.5 36q16.5 13 45.5 13q28 0 45 -13q17 -13 17 -36q0 -22 -17 -35.5q-17 -13.5 -45 -13.5q-29 0 -45.5 13.5q-16.5 13.5 -16.5 35.5zt0 0zM339 795q0 23 16.5 36q16.5 13 44.5 13q29 0 46 -13q17 -13 17 -36q0 -22 -17 -35.5q-17 -13.5 -46 -13.5q-28 0 -44.5 13.5q-16.5 13.5 -16.5 35.5zt0 0zM200 999q5 -36 30.5 -54.5q25.5 -18.5 67.5 -18.5q42 0 67.5 18.5q25.5 18.5 30.5 53.5l84 -18q-13 -55 -57 -86q-44 -31 -126 -31q-79 0 -129.5 27q-50.5 27 -60.5 88z" />
-<glyph unicode="&#62741;" horiz-adv-x="598" d="M515 43q-35 -26 -87 -41.5q-52 -15.5 -113 -15.5q-66 0 -114.5 19.5q-48.5 19.5 -79.5 55.5q-31 36 -46 87q-15 51 -15 114q0 135 66.5 206.5q66.5 71.5 189.5 71.5q39 0 78 -8.5q39 -8.5 70 -32q31 -23.5 50.5 -64.5q19.5 -41 19.5 -107q0 -16 -1 -37q-1 -21 -4 -41l-375 0q2 -92 44 -139q42 -47 143 -47q42 0 80 14.5q38 14.5 59 34.5zM446 316q2 80 -32.5 113q-34.5 33 -96.5 33q-70 0 -111 -33q-41 -33 -48 -113zM149 626q0 24 16 40q16 16 42 16q25 0 40.5 -16q15.5 -16 15.5 -40q0 -23 -15.5 -39q-15.5 -16 -40.5 -16q-26 0 -42 16q-16 16 -16 39zt0 0zM364 626q0 24 15.5 40q15.5 16 41.5 16q26 0 41.5 -16q15.5 -16 15.5 -40q0 -23 -15.5 -39q-15.5 -16 -41.5 -16q-26 0 -41.5 16q-15.5 16 -15.5 39zt0 0zM221 837q5 -36 30.5 -54.5q25.5 -18.5 67.5 -18.5q42 0 67.5 18.5q25.5 18.5 30.5 53.5l84 -18q-13 -55 -57 -86q-44 -31 -126 -31q-79 0 -129.5 27q-50.5 27 -60.5 88z" />
-<glyph unicode="&#62742;" horiz-adv-x="589" d="M149 327v78h17q9 0 23.5 0q14.5 0 30 1q15.5 1 30 1.5q14.5 0.5 23.5 2.5q54 7 92 34.5q38 27.5 38 73.5q0 31 -11.5 51.5q-11.5 20.5 -32 33q-20.5 12.5 -47.5 18q-27 5.5 -57 5.5q-58 0 -101 -9q-43 -9 -66 -20l-27 80q10 6 31 12q21 6 48.5 11q27.5 5 61 8.5q33.5 3.5 68.5 3.5q44 0 87 -8.5q43 -8.5 76.5 -28.5q33.5 -20 54.5 -53q21 -33 21 -83q0 -50 -35.5 -95q-35.5 -45 -107.5 -65l0 -4q77 -11 121.5 -53.5q44.5 -42.5 44.5 -114.5q0 -57 -25 -98.5q-25 -41.5 -65.5 -68.5q-40.5 -27 -92 -40q-51.5 -13 -105.5 -13q-72 0 -121 8.5q-49 8.5 -79 20.5l25 86q26 -11 71.5 -20q45.5 -9 111.5 -9q31 0 62 8q31 8 56 24q25 16 40.5 40.5q15.5 24.5 15.5 58.5q0 60 -46.5 88q-46.5 28 -129.5 33q-13 1 -23 1.5q-10 0.5 -24 0.5zM306 744h-69l-139 101v25h93l64 -49l19 -33l21 32l68 50h89l0 -26z" />
-<glyph unicode="&#62743;" horiz-adv-x="516" d="M148 233v70h77q22 0 42.5 6q20.5 6 36.5 16.5q16 10.5 25.5 25q9.5 14.5 9.5 31.5q0 42 -31 58q-31 16 -94 16q-44 0 -80.5 -9.5q-36.5 -9.5 -59.5 -19.5l-25 70q65 37 195 37q94 0 142 -33q48 -33 48 -96q0 -17 -6.5 -35q-6.5 -18 -19.5 -34.5q-13 -16.5 -31.5 -30q-18.5 -13.5 -42.5 -20.5l0 -11q68 -12 95 -44.5q27 -32.5 27 -84.5q0 -33 -15 -61.5q-15 -28.5 -45 -49.5q-30 -21 -75.5 -33q-45.5 -12 -105.5 -12q-59 0 -97.5 8q-38.5 8 -69.5 23l24 73q27 -14 65 -20q38 -6 83 -6q138 0 138 87q0 39 -33 59q-33 20 -115 20zM261 586h-49l-129 187h87l44 -68l28 -71l29 70l49 69l78 0z" />
-<glyph unicode="&#62744;" horiz-adv-x="747" d="M58 350q0 86 21.5 153.5q21.5 67.5 62 114q40.5 46.5 99 71q58.5 24.5 132.5 24.5q79 0 138.5 -26.5q59.5 -26.5 99 -74q39.5 -47.5 59 -114.5q19.5 -67 19.5 -148q0 -86 -21.5 -153.5q-21.5 -67.5 -62.5 -114q-41 -46.5 -99.5 -71q-58.5 -24.5 -132.5 -24.5q-80 0 -139 26.5q-59 26.5 -98 74q-39 47.5 -58.5 114.5q-19.5 67 -19.5 148zt0 0zM164 350q0 -57 12.5 -107q12.5 -50 38 -88q25.5 -38 65 -60q39.5 -22 93.5 -22q97 0 153.5 67q56.5 67 56.5 210q0 56 -12.5 106q-12.5 50 -38 88q-25.5 38 -65 60.5q-39.5 22.5 -94.5 22.5q-96 0 -152.5 -68q-56.5 -68 -56.5 -209zt0 0zM205 836h350v-68l-350 0z" />
-<glyph unicode="&#62745;" horiz-adv-x="631" d="M60 262q0 65 17 116.5q17 51.5 50 87.5q33 36 80.5 55q47.5 19 108.5 19q64 0 112 -21q48 -21 80 -58.5q32 -37.5 47.5 -88q15.5 -50.5 15.5 -110.5q0 -64 -17.5 -115q-17.5 -51 -50 -87q-32.5 -36 -80 -55q-47.5 -19 -107.5 -19q-66 0 -114 21q-48 21 -79.5 58q-31.5 37 -47 87.5q-15.5 50.5 -15.5 109.5zt0 0zM158 262q0 -37 8.5 -72.5q8.5 -35.5 27.5 -63.5q19 -28 49 -45q30 -17 74 -17q156 0 156 198q0 39 -8.5 75q-8.5 36 -27 63.5q-18.5 27.5 -48.5 44.5q-30 17 -72 17q-78 0 -118.5 -49.5q-40.5 -49.5 -40.5 -150.5zt0 0zM146 666h328v-69l-328 0z" />
-<glyph unicode="&#62746;" horiz-adv-x="747" d="M58 350q0 86 21.5 153.5q21.5 67.5 62 114q40.5 46.5 99 71q58.5 24.5 132.5 24.5q79 0 138.5 -26.5q59.5 -26.5 99 -74q39.5 -47.5 59 -114.5q19.5 -67 19.5 -148q0 -86 -21.5 -153.5q-21.5 -67.5 -62.5 -114q-41 -46.5 -99.5 -71q-58.5 -24.5 -132.5 -24.5q-80 0 -139 26.5q-59 26.5 -98 74q-39 47.5 -58.5 114.5q-19.5 67 -19.5 148zt0 0zM164 350q0 -57 12.5 -107q12.5 -50 38 -88q25.5 -38 65 -60q39.5 -22 93.5 -22q97 0 153.5 67q56.5 67 56.5 210q0 56 -12.5 106q-12.5 50 -38 88q-25.5 38 -65 60.5q-39.5 22.5 -94.5 22.5q-96 0 -152.5 -68q-56.5 -68 -56.5 -209zt0 0zM276 871q5 -36 30.5 -54.5q25.5 -18.5 67.5 -18.5q42 0 67.5 18.5q25.5 18.5 30.5 53.5l84 -18q-13 -55 -57 -86q-44 -31 -126 -31q-79 0 -129.5 27q-50.5 27 -60.5 88z" />
-<glyph unicode="&#62747;" horiz-adv-x="631" d="M60 262q0 65 17 116.5q17 51.5 50 87.5q33 36 80.5 55q47.5 19 108.5 19q64 0 112 -21q48 -21 80 -58.5q32 -37.5 47.5 -88q15.5 -50.5 15.5 -110.5q0 -64 -17.5 -115q-17.5 -51 -50 -87q-32.5 -36 -80 -55q-47.5 -19 -107.5 -19q-66 0 -114 21q-48 21 -79.5 58q-31.5 37 -47 87.5q-15.5 50.5 -15.5 109.5zt0 0zM158 262q0 -37 8.5 -72.5q8.5 -35.5 27.5 -63.5q19 -28 49 -45q30 -17 74 -17q156 0 156 198q0 39 -8.5 75q-8.5 36 -27 63.5q-18.5 27.5 -48.5 44.5q-30 17 -72 17q-78 0 -118.5 -49.5q-40.5 -49.5 -40.5 -150.5zt0 0zM231 712q5 -22 14 -35q9 -13 21 -19.5q12 -6.5 27.5 -8q15.5 -1.5 32.5 -1.5q17 0 32.5 2q15.5 2 27.5 9q12 7 21 19q9 12 14 33h72q-11 -80 -57.5 -104q-46.5 -24 -111.5 -24q-31 0 -60 5q-29 5 -52.5 17q-23.5 12 -40 31.5q-16.5 19.5 -22.5 49.5z" />
-<glyph unicode="&#62748;" horiz-adv-x="747" d="M58 350q0 86 21.5 153.5q21.5 67.5 62 114q40.5 46.5 99 71q58.5 24.5 132.5 24.5q79 0 138.5 -26.5q59.5 -26.5 99 -74q39.5 -47.5 59 -114.5q19.5 -67 19.5 -148q0 -86 -21.5 -153.5q-21.5 -67.5 -62.5 -114q-41 -46.5 -99.5 -71q-58.5 -24.5 -132.5 -24.5q-80 0 -139 26.5q-59 26.5 -98 74q-39 47.5 -58.5 114.5q-19.5 67 -19.5 148zt0 0zM164 312q4 -50 18.5 -94q14.5 -44 40.5 -76q26 -32 63 -50.5q37 -18.5 87 -18.5q90 0 146 58q56 58 64 181zM583 396q-5 48 -20 90q-15 42 -41 73.5q-26 31.5 -63 49.5q-37 18 -86 18q-88 0 -143.5 -56.5q-55.5 -56.5 -64.5 -174.5zM280 871q5 -36 30.5 -54.5q25.5 -18.5 67.5 -18.5q42 0 67.5 18.5q25.5 18.5 30.5 53.5l84 -18q-13 -55 -57 -86q-44 -31 -126 -31q-79 0 -129.5 27q-50.5 27 -60.5 88z" />
-<glyph unicode="&#62749;" horiz-adv-x="631" d="M60 262q0 132 66 205q66 73 190 73q64 0 112 -20.5q48 -20.5 79.5 -57.5q31.5 -37 47 -88q15.5 -51 16.5 -112q-1 -131 -67.5 -203.5q-66.5 -72.5 -187.5 -72.5q-66 0 -114.5 20.5q-48.5 20.5 -80 57q-31.5 36.5 -46.5 87.5q-15 51 -15 111zt0 0zM473 295q-13 83 -53 125q-40 42 -104 42q-30 0 -57 -8.5q-27 -8.5 -49 -28.5q-22 -20 -36 -52q-14 -32 -16 -78zM159 229q7 -78 50.5 -121.5q43.5 -43.5 106.5 -43.5q28 0 54 9q26 9 47 28.5q21 19.5 35 51q14 31.5 18 76.5zM221 712q5 -22 14 -35q9 -13 21 -19.5q12 -6.5 27.5 -8q15.5 -1.5 32.5 -1.5q17 0 32.5 2q15.5 2 27.5 9q12 7 21 19q9 12 14 33h72q-11 -80 -57.5 -104q-46.5 -24 -111.5 -24q-31 0 -60 5q-29 5 -52.5 17q-23.5 12 -40 31.5q-16.5 19.5 -22.5 49.5z" />
-<glyph unicode="&#62750;" horiz-adv-x="747" d="M58 350q0 86 21.5 153.5q21.5 67.5 62 114q40.5 46.5 99 71q58.5 24.5 132.5 24.5q79 0 138.5 -26.5q59.5 -26.5 99 -74q39.5 -47.5 59 -114.5q19.5 -67 19.5 -148q0 -86 -21.5 -153.5q-21.5 -67.5 -62.5 -114q-41 -46.5 -99.5 -71q-58.5 -24.5 -132.5 -24.5q-80 0 -139 26.5q-59 26.5 -98 74q-39 47.5 -58.5 114.5q-19.5 67 -19.5 148zt0 0zM164 312q4 -50 18.5 -94q14.5 -44 40.5 -76q26 -32 63 -50.5q37 -18.5 87 -18.5q90 0 146 58q56 58 64 181zM583 396q-5 48 -20 90q-15 42 -41 73.5q-26 31.5 -63 49.5q-37 18 -86 18q-88 0 -143.5 -56.5q-55.5 -56.5 -64.5 -174.5zM204 795q0 23 16.5 36q16.5 13 45.5 13q28 0 45 -13q17 -13 17 -36q0 -22 -17 -35.5q-17 -13.5 -45 -13.5q-29 0 -45.5 13.5q-16.5 13.5 -16.5 35.5zt0 0zM418 795q0 23 16.5 36q16.5 13 44.5 13q29 0 46 -13q17 -13 17 -36q0 -22 -17 -35.5q-17 -13.5 -46 -13.5q-28 0 -44.5 13.5q-16.5 13.5 -16.5 35.5zt0 0zM280 999q5 -36 30.5 -54.5q25.5 -18.5 67.5 -18.5q42 0 67.5 18.5q25.5 18.5 30.5 53.5l84 -18q-13 -55 -57 -86q-44 -31 -126 -31q-79 0 -129.5 27q-50.5 27 -60.5 88z" />
-<glyph unicode="&#62751;" horiz-adv-x="631" d="M60 262q0 132 66 205q66 73 190 73q64 0 112 -20.5q48 -20.5 79.5 -57.5q31.5 -37 47 -88q15.5 -51 16.5 -112q-1 -131 -67.5 -203.5q-66.5 -72.5 -187.5 -72.5q-66 0 -114.5 20.5q-48.5 20.5 -80 57q-31.5 36.5 -46.5 87.5q-15 51 -15 111zt0 0zM473 295q-13 83 -53 125q-40 42 -104 42q-30 0 -57 -8.5q-27 -8.5 -49 -28.5q-22 -20 -36 -52q-14 -32 -16 -78zM159 229q7 -78 50.5 -121.5q43.5 -43.5 106.5 -43.5q28 0 54 9q26 9 47 28.5q21 19.5 35 51q14 31.5 18 76.5zM151 625q0 24 16 40q16 16 42 16q25 0 40.5 -16q15.5 -16 15.5 -40q0 -23 -15.5 -39q-15.5 -16 -40.5 -16q-26 0 -42 16q-16 16 -16 39zt0 0zM366 625q0 24 15.5 40q15.5 16 41.5 16q26 0 41.5 -16q15.5 -16 15.5 -40q0 -23 -15.5 -39q-15.5 -16 -41.5 -16q-26 0 -41.5 16q-15.5 16 -15.5 39zt0 0zM222 837q5 -36 30.5 -54.5q25.5 -18.5 67.5 -18.5q42 0 67.5 18.5q25.5 18.5 30.5 53.5l84 -18q-13 -55 -57 -86q-44 -31 -126 -31q-79 0 -129.5 27q-50.5 27 -60.5 88z" />
-<glyph unicode="&#62752;" horiz-adv-x="846" d="M657 700h100v-700h-100zM89 700h100v-267q6 1 16 2.5q10 1.5 22.5 2.5q12.5 1 26 2q13.5 1 26.5 1q52 0 101 -10q49 -10 87 -34.5q38 -24.5 60.5 -65.5q22.5 -41 22.5 -103q0 -60 -21.5 -105q-21.5 -45 -59.5 -74q-38 -29 -91 -43.5q-53 -14.5 -117 -14.5q-15 0 -36 0.5q-21 0.5 -44.5 2.5q-23.5 2 -47.5 5q-24 3 -45 8zM270 77q37 0 69 9q32 9 55.5 27q23.5 18 37 45q13.5 27 13.5 63q0 40 -15 66q-15 26 -39.5 41q-24.5 15 -57 21q-32.5 6 -68.5 6q-19 0 -42 -3q-23 -3 -34 -6l0 -263q14 -4 34.5 -5q20.5 -1 46.5 -1zt0 0zM248 836h350v-68l-350 0z" />
-<glyph unicode="&#62753;" horiz-adv-x="771" d="M180 78q42 -6 86 -6q72 0 101 25q29 25 29 71q0 40 -28.5 67q-28.5 27 -98.5 27q-19 0 -42.5 -1.5q-23.5 -1.5 -46.5 -6.5zM180 324q32 5 59.5 6.5q27.5 1.5 49.5 1.5q58 0 97.5 -12q39.5 -12 63.5 -33q24 -21 34 -49.5q10 -28.5 10 -61.5q0 -95 -58 -138.5q-58 -43.5 -189 -43.5q-42 0 -81 1q-39 1 -78 4l0 526h92zM591 525h92v-525h-92zM201 666h328v-69l-328 0z" />
-<glyph unicode="&#62754;" horiz-adv-x="631" d="M161 399h305q-10 116 -73 171.5q-63 55.5 -163 56.5q-53 1 -94 -10q-41 -11 -65 -25l-24 80q33 19 84.5 30q51.5 11 108.5 11q70 0 130.5 -20q60.5 -20 105.5 -63.5q45 -43.5 71 -112.5q26 -69 26 -167q0 -99 -30 -168q-30 -69 -79.5 -112.5q-49.5 -43.5 -114 -63q-64.5 -19.5 -133.5 -19.5q-55 0 -98.5 8.5q-43.5 8.5 -72.5 19.5l26 86q25 -12 65.5 -20q40.5 -8 86.5 -8q43 0 85 12.5q42 12.5 75.5 41q33.5 28.5 56 74.5q22.5 46 27.5 112l-306 0zM92 836h350v-68l-350 0z" />
-<glyph unicode="&#62755;" horiz-adv-x="543" d="M143 304h241q-6 72 -47.5 115q-41.5 43 -119.5 43q-47 0 -81.5 -12.5q-34.5 -12.5 -57.5 -26.5l-30 68q35 23 81 36q46 13 108 13q63 0 109.5 -19q46.5 -19 77 -55q30.5 -36 45 -87.5q14.5 -51.5 14.5 -116.5q0 -134 -68 -205q-68 -71 -187 -71q-54 0 -102 8.5q-48 8.5 -78 25.5l25 76q27 -14 65 -23q38 -9 76 -9q81 0 122.5 38.5q41.5 38.5 48.5 123.5l-242 0zM75 666h328v-69l-328 0z" />
-<glyph unicode="&#62756;" horiz-adv-x="631" d="M161 399h305q-10 116 -73 171.5q-63 55.5 -163 56.5q-53 1 -94 -10q-41 -11 -65 -25l-24 80q33 19 84.5 30q51.5 11 108.5 11q70 0 130.5 -20q60.5 -20 105.5 -63.5q45 -43.5 71 -112.5q26 -69 26 -167q0 -99 -30 -168q-30 -69 -79.5 -112.5q-49.5 -43.5 -114 -63q-64.5 -19.5 -133.5 -19.5q-55 0 -98.5 8.5q-43.5 8.5 -72.5 19.5l26 86q25 -12 65.5 -20q40.5 -8 86.5 -8q43 0 85 12.5q42 12.5 75.5 41q33.5 28.5 56 74.5q22.5 46 27.5 112l-306 0zM166 871q5 -36 30.5 -54.5q25.5 -18.5 67.5 -18.5q42 0 67.5 18.5q25.5 18.5 30.5 53.5l84 -18q-13 -55 -57 -86q-44 -31 -126 -31q-79 0 -129.5 27q-50.5 27 -60.5 88z" />
-<glyph unicode="&#62757;" horiz-adv-x="543" d="M143 304h241q-6 72 -47.5 115q-41.5 43 -119.5 43q-47 0 -81.5 -12.5q-34.5 -12.5 -57.5 -26.5l-30 68q35 23 81 36q46 13 108 13q63 0 109.5 -19q46.5 -19 77 -55q30.5 -36 45 -87.5q14.5 -51.5 14.5 -116.5q0 -134 -68 -205q-68 -71 -187 -71q-54 0 -102 8.5q-48 8.5 -78 25.5l25 76q27 -14 65 -23q38 -9 76 -9q81 0 122.5 38.5q41.5 38.5 48.5 123.5l-242 0zM143 712q5 -22 14 -35q9 -13 21 -19.5q12 -6.5 27.5 -8q15.5 -1.5 32.5 -1.5q17 0 32.5 2q15.5 2 27.5 9q12 7 21 19q9 12 14 33h72q-11 -80 -57.5 -104q-46.5 -24 -111.5 -24q-31 0 -60 5q-29 5 -52.5 17q-23.5 12 -40 31.5q-16.5 19.5 -22.5 49.5z" />
-<glyph unicode="&#62758;" horiz-adv-x="637" d="M582 30q-33 -24 -83 -33.5q-50 -9.5 -107 -9.5q-67 0 -127.5 21.5q-60.5 21.5 -106.5 66q-46 44.5 -73 113q-27 68.5 -27 162.5q0 98 30 167q30 69 78 112.5q48 43.5 108 63.5q60 20 119 20q66 0 107.5 -7q41.5 -7 70.5 -18l-23 -84q-49 23 -147 23q-41 0 -80 -12q-39 -12 -71 -39q-32 -27 -54.5 -69.5q-22.5 -42.5 -29.5 -102.5l329 0v-86h-331q4 -60 24.5 -106q20.5 -46 53.5 -77q33 -31 76.5 -46.5q43.5 -15.5 94.5 -15.5q49 0 85 9q36 9 61 23zM196 795q0 23 16.5 36q16.5 13 45.5 13q28 0 45 -13q17 -13 17 -36q0 -22 -17 -35.5q-17 -13.5 -45 -13.5q-29 0 -45.5 13.5q-16.5 13.5 -16.5 35.5zt0 0zM410 795q0 23 16.5 36q16.5 13 44.5 13q29 0 46 -13q17 -13 17 -36q0 -22 -17 -35.5q-17 -13.5 -46 -13.5q-28 0 -44.5 13.5t-16.5 35.5z" />
-<glyph unicode="&#62759;" horiz-adv-x="566" d="M506 35q-35 -23 -84 -36q-49 -13 -101 -13q-66 0 -115 20q-49 20 -81.5 56q-32.5 36 -48.5 87q-16 51 -16 113q0 66 19.5 118q19.5 52 54.5 87q35 35 84.5 53.5q49.5 18.5 108.5 18.5q56 0 97 -8.5q41 -8.5 72 -22.5l-25 -78q-28 14 -61 22.5q-33 8.5 -70 8.5q-78 0 -124.5 -37.5q-46.5 -37.5 -57.5 -118.5l265 0v-78h-265q4 -34 16.5 -64q12.5 -30 35.5 -52q23 -22 57 -34.5q34 -12.5 82 -12.5q40 0 74 12q34 12 57 27zM146 633q0 24 16 40q16 16 42 16q25 0 40.5 -16q15.5 -16 15.5 -40q0 -23 -15.5 -39q-15.5 -16 -40.5 -16q-26 0 -42 16q-16 16 -16 39zt0 0zM361 633q0 24 15.5 40q15.5 16 41.5 16q26 0 41.5 -16q15.5 -16 15.5 -40q0 -23 -15.5 -39q-15.5 -16 -41.5 -16q-26 0 -41.5 16t-15.5 39z" />
-<glyph unicode="&#62760;" horiz-adv-x="624" d="M535 0h-100v298l-107 -22l-187 -276h-116l169 244l66 44q-39 7 -72 22.5q-33 15.5 -57.5 40.5q-24.5 25 -38 59q-13.5 34 -13.5 79q0 61 23 103q23 42 62 68q39 26 92 37.5q53 11.5 113 11.5q37 0 81.5 -3.5q44.5 -3.5 84.5 -12.5zM363 623q-35 0 -67 -6q-32 -6 -56.5 -21q-24.5 -15 -39.5 -40.5q-15 -25.5 -15 -65.5q0 -37 14 -62.5q14 -25.5 38.5 -41q24.5 -15.5 57 -22.5q32.5 -7 69.5 -7h71v260q-14 4 -30 5q-16 1 -42 1zt0 0zM171 836h350v-68l-350 0z" />
-<glyph unicode="&#62761;" horiz-adv-x="578" d="M398 207l-95 -13l-149 -194h-114l132 172v-1l56 38q-70 8 -110.5 49.5q-40.5 41.5 -40.5 101.5q0 47 18 81q18 34 51.5 56q33.5 22 81 32q47.5 10 106.5 10q38 0 79.5 -5q41.5 -5 76.5 -13l0 -521h-92zM398 264v189q-16 5 -36.5 6.5q-20.5 1.5 -35.5 1.5q-75 0 -113 -24q-38 -24 -38 -76q0 -50 44.5 -75q44.5 -25 116.5 -23zM145 666h328v-69l-328 0z" />
-<glyph unicode="&#62762;" horiz-adv-x="624" d="M535 0h-100v298l-107 -22l-187 -276h-116l169 244l66 44q-39 7 -72 22.5q-33 15.5 -57.5 40.5q-24.5 25 -38 59q-13.5 34 -13.5 79q0 61 23 103q23 42 62 68q39 26 92 37.5q53 11.5 113 11.5q37 0 81.5 -3.5q44.5 -3.5 84.5 -12.5zM363 623q-35 0 -67 -6q-32 -6 -56.5 -21q-24.5 -15 -39.5 -40.5q-15 -25.5 -15 -65.5q0 -37 14 -62.5q14 -25.5 38.5 -41q24.5 -15.5 57 -22.5q32.5 -7 69.5 -7h71v260q-14 4 -30 5q-16 1 -42 1zt0 0zM239 871q5 -36 30.5 -54.5q25.5 -18.5 67.5 -18.5q42 0 67.5 18.5q25.5 18.5 30.5 53.5l84 -18q-13 -55 -57 -86q-44 -31 -126 -31q-79 0 -129.5 27q-50.5 27 -60.5 88z" />
-<glyph unicode="&#62763;" horiz-adv-x="578" d="M398 207l-95 -13l-149 -194h-114l132 172v-1l56 38q-70 8 -110.5 49.5q-40.5 41.5 -40.5 101.5q0 47 18 81q18 34 51.5 56q33.5 22 81 32q47.5 10 106.5 10q38 0 79.5 -5q41.5 -5 76.5 -13l0 -521h-92zM398 264v189q-16 5 -36.5 6.5q-20.5 1.5 -35.5 1.5q-75 0 -113 -24q-38 -24 -38 -76q0 -50 44.5 -75q44.5 -25 116.5 -23zM223 712q5 -22 14 -35q9 -13 21 -19.5q12 -6.5 27.5 -8q15.5 -1.5 32.5 -1.5q17 0 32.5 2q15.5 2 27.5 9q12 7 21 19q9 12 14 33h72q-11 -80 -57.5 -104q-46.5 -24 -111.5 -24q-31 0 -60 5q-29 5 -52.5 17q-23.5 12 -40 31.5q-16.5 19.5 -22.5 49.5z" />
-<glyph unicode="&#62764;" horiz-adv-x="978" d="M189 401h130q11 150 88 231q77 81 214 81q79 0 136 -26q57 -26 93 -74q36 -48 53 -115q17 -67 17 -148q0 -173 -75.5 -268q-75.5 -95 -223.5 -95q-74 0 -129 23.5q-55 23.5 -92.5 66q-37.5 42.5 -57.5 102.5q-20 60 -24 134l-129 0v-313h-100v700h100zM425 350q0 -56 10.5 -106.5q10.5 -50.5 33.5 -88.5q23 -38 60.5 -60q37.5 -22 91.5 -22q97 0 145 67q48 67 48 210q0 55 -9.5 105.5q-9.5 50.5 -32 88.5q-22.5 38 -59.5 60.5q-37 22.5 -92 22.5q-97 0 -146.5 -68q-49.5 -68 -49.5 -209zt0 0zM317 836h350v-68l-350 0z" />
-<glyph unicode="&#62765;" horiz-adv-x="841" d="M543 -14q-62 0 -106 18q-44 18 -73 50q-29 32 -43.5 77.5q-14.5 45.5 -18.5 100.5l-122 0v-232h-92v525h92v-215h123q10 109 68.5 169.5q58.5 60.5 173.5 60.5q63 0 107.5 -20.5q44.5 -20.5 73 -57.5q28.5 -37 42 -88q13.5 -51 13.5 -112q0 -130 -59 -203q-59 -73 -179 -73zt0 0zM394 262q0 -41 7 -77q7 -36 24 -63q17 -27 46 -42.5q29 -15.5 73 -15.5q75 0 107 48q32 48 32 150q0 40 -6.5 76.5q-6.5 36.5 -22.5 64q-16 27.5 -43 43.5q-27 16 -68 16q-79 0 -114 -48.5q-35 -48.5 -35 -151.5zt0 0zM234 666h328v-69l-328 0z" />
-<glyph unicode="&#62766;" horiz-adv-x="978" d="M189 401h130q11 150 88 231q77 81 214 81q79 0 136 -26q57 -26 93 -74q36 -48 53 -115q17 -67 17 -148q0 -173 -75.5 -268q-75.5 -95 -223.5 -95q-74 0 -129 23.5q-55 23.5 -92.5 66q-37.5 42.5 -57.5 102.5q-20 60 -24 134l-129 0v-313h-100v700h100zM425 350q0 -56 10.5 -106.5q10.5 -50.5 33.5 -88.5q23 -38 60.5 -60q37.5 -22 91.5 -22q97 0 145 67q48 67 48 210q0 55 -9.5 105.5q-9.5 50.5 -32 88.5q-22.5 38 -59.5 60.5q-37 22.5 -92 22.5q-97 0 -146.5 -68q-49.5 -68 -49.5 -209zt0 0zM368 871q5 -36 30.5 -54.5q25.5 -18.5 67.5 -18.5q42 0 67.5 18.5q25.5 18.5 30.5 53.5l84 -18q-13 -55 -57 -86q-44 -31 -126 -31q-79 0 -129.5 27q-50.5 27 -60.5 88z" />
-<glyph unicode="&#62767;" horiz-adv-x="841" d="M543 -14q-62 0 -106 18q-44 18 -73 50q-29 32 -43.5 77.5q-14.5 45.5 -18.5 100.5l-122 0v-232h-92v525h92v-215h123q10 109 68.5 169.5q58.5 60.5 173.5 60.5q63 0 107.5 -20.5q44.5 -20.5 73 -57.5q28.5 -37 42 -88q13.5 -51 13.5 -112q0 -130 -59 -203q-59 -73 -179 -73zt0 0zM394 262q0 -41 7 -77q7 -36 24 -63q17 -27 46 -42.5q29 -15.5 73 -15.5q75 0 107 48q32 48 32 150q0 40 -6.5 76.5q-6.5 36.5 -22.5 64q-16 27.5 -43 43.5q-27 16 -68 16q-79 0 -114 -48.5q-35 -48.5 -35 -151.5zt0 0zM344 712q5 -22 14 -35q9 -13 21 -19.5q12 -6.5 27.5 -8q15.5 -1.5 32.5 -1.5q17 0 32.5 2q15.5 2 27.5 9q12 7 21 19q9 12 14 33h72q-11 -80 -57.5 -104q-46.5 -24 -111.5 -24q-31 0 -60 5q-29 5 -52.5 17q-23.5 12 -40 31.5q-16.5 19.5 -22.5 49.5z" />
-<glyph unicode="&#62768;" horiz-adv-x="720" d="M494 612h-220q-5 -99 -11.5 -180q-6.5 -81 -16.5 -146.5q-10 -65.5 -23.5 -115.5q-13.5 -50 -33.5 -87q-26 -48 -60 -68q-34 -20 -71 -20q-21 0 -34.5 2.5q-13.5 2.5 -27.5 7.5l13 84q12 -3 24 -3q12 0 24.5 4.5q12.5 4.5 24.5 15q12 10.5 23 29.5q15 26 28 70q13 44 23 112q10 68 16.5 162.5q6.5 94.5 9.5 220.5l412 0v-612h97v-216h-69l-16 128l-112 0z" />
-<glyph unicode="&#62769;" horiz-adv-x="588" d="M404 447h-170l-2 -30q-7 -99 -16.5 -177.5q-9.5 -78.5 -27.5 -133q-18 -54.5 -48 -83q-30 -28.5 -78 -28.5q-22 0 -39 2.5q-17 2.5 -29 7.5l14 84q13 -4 29 -4q24 0 43 17.5q19 17.5 33 65.5q14 48 23 134q9 86 13 223l347 0v-447h72v-210h-65l-16 132l-83 0z" />
-<glyph unicode="&#62770;" horiz-adv-x="744" d="M189 700v-466l-9 -76h5l50 79l358 463h62v-724q0 -93 -36 -139.5q-36 -46.5 -114 -46.5q-20 0 -44 3l0 85q31 -1 49.5 5.5q18.5 6.5 28.5 21q10 14.5 13 38.5q3 24 3 57v463l6 77h-4l-48 -79l-359 -461h-61v700zM285 871q5 -36 30.5 -54.5q25.5 -18.5 67.5 -18.5q42 0 67.5 18.5q25.5 18.5 30.5 53.5l84 -18q-13 -55 -57 -86q-44 -31 -126 -31q-79 0 -129.5 27q-50.5 27 -60.5 88z" />
-<glyph unicode="&#62771;" horiz-adv-x="631" d="M180 525v-310l-7 -92h11l46 89l241 313h72v-549q0 -93 -33.5 -137.5q-33.5 -44.5 -109.5 -44.5q-20 0 -42 3l0 75q31 -1 49 6.5q18 7.5 28 23q10 15.5 13 40.5q3 25 3 58v300l14 104h-11l-49 -98l-246 -306h-71v525zM223 712q5 -22 14 -35q9 -13 21 -19.5q12 -6.5 27.5 -8q15.5 -1.5 32.5 -1.5q17 0 32.5 2q15.5 2 27.5 9q12 7 21 19q9 12 14 33h72q-11 -80 -57.5 -104q-46.5 -24 -111.5 -24q-31 0 -60 5q-29 5 -52.5 17q-23.5 12 -40 31.5q-16.5 19.5 -22.5 49.5z" />
-<glyph unicode="&#62772;" horiz-adv-x="747" d="M58 350q0 86 21.5 153.5q21.5 67.5 62 114q40.5 46.5 99 71q58.5 24.5 132.5 24.5q79 0 138.5 -26.5q59.5 -26.5 99 -74q39.5 -47.5 59 -114.5q19.5 -67 19.5 -148q0 -86 -21.5 -153.5q-21.5 -67.5 -62.5 -114q-41 -46.5 -99.5 -71q-58.5 -24.5 -132.5 -24.5q-80 0 -139 26.5q-59 26.5 -98 74q-39 47.5 -58.5 114.5q-19.5 67 -19.5 148zt0 0zM164 350q0 -57 12.5 -107q12.5 -50 38 -88q25.5 -38 65 -60q39.5 -22 93.5 -22q97 0 153.5 67q56.5 67 56.5 210q0 56 -12.5 106q-12.5 50 -38 88q-25.5 38 -65 60.5q-39.5 22.5 -94.5 22.5q-96 0 -152.5 -68q-56.5 -68 -56.5 -209zt0 0zM301 798q0 22 19 38q19 16 53 16q34 0 53.5 -16q19.5 -16 19.5 -38q0 -24 -19.5 -39.5q-19.5 -15.5 -53.5 -15.5q-34 0 -53 15.5t-19 39.5z" />
-<glyph unicode="&#62773;" horiz-adv-x="631" d="M60 262q0 65 17 116.5q17 51.5 50 87.5q33 36 80.5 55q47.5 19 108.5 19q64 0 112 -21q48 -21 80 -58.5q32 -37.5 47.5 -88q15.5 -50.5 15.5 -110.5q0 -64 -17.5 -115q-17.5 -51 -50 -87q-32.5 -36 -80 -55q-47.5 -19 -107.5 -19q-66 0 -114 21q-48 21 -79.5 58q-31.5 37 -47 87.5q-15.5 50.5 -15.5 109.5zt0 0zM158 262q0 -37 8.5 -72.5q8.5 -35.5 27.5 -63.5q19 -28 49 -45q30 -17 74 -17q156 0 156 198q0 39 -8.5 75q-8.5 36 -27 63.5q-18.5 27.5 -48.5 44.5q-30 17 -72 17q-78 0 -118.5 -49.5q-40.5 -49.5 -40.5 -150.5zt0 0zM249 650q0 23 18 41.5q18 18.5 47 18.5q29 0 48 -18.5q19 -18.5 19 -41.5q0 -23 -19 -40.5q-19 -17.5 -48 -17.5q-29 0 -47 17.5t-18 40.5z" />
-<glyph unicode="&#62774;" horiz-adv-x="846" d="M657 700h100v-700h-100zM89 700h100v-267q6 1 16 2.5q10 1.5 22.5 2.5q12.5 1 26 2q13.5 1 26.5 1q52 0 101 -10q49 -10 87 -34.5q38 -24.5 60.5 -65.5q22.5 -41 22.5 -103q0 -60 -21.5 -105q-21.5 -45 -59.5 -74q-38 -29 -91 -43.5q-53 -14.5 -117 -14.5q-15 0 -36 0.5q-21 0.5 -44.5 2.5q-23.5 2 -47.5 5q-24 3 -45 8zM270 77q37 0 69 9q32 9 55.5 27q23.5 18 37 45q13.5 27 13.5 63q0 40 -15 66q-15 26 -39.5 41q-24.5 15 -57 21q-32.5 6 -68.5 6q-19 0 -42 -3q-23 -3 -34 -6l0 -263q14 -4 34.5 -5q20.5 -1 46.5 -1zt0 0zM331 871q5 -36 30.5 -54.5q25.5 -18.5 67.5 -18.5q42 0 67.5 18.5q25.5 18.5 30.5 53.5l84 -18q-13 -55 -57 -86q-44 -31 -126 -31q-79 0 -129.5 27q-50.5 27 -60.5 88z" />
-<glyph unicode="&#62775;" horiz-adv-x="771" d="M180 78q42 -6 86 -6q72 0 101 25q29 25 29 71q0 40 -28.5 67q-28.5 27 -98.5 27q-19 0 -42.5 -1.5q-23.5 -1.5 -46.5 -6.5zM180 324q32 5 59.5 6.5q27.5 1.5 49.5 1.5q58 0 97.5 -12q39.5 -12 63.5 -33q24 -21 34 -49.5q10 -28.5 10 -61.5q0 -95 -58 -138.5q-58 -43.5 -189 -43.5q-42 0 -81 1q-39 1 -78 4l0 526h92zM591 525h92v-525h-92zM277 712q5 -22 14 -35q9 -13 21 -19.5q12 -6.5 27.5 -8q15.5 -1.5 32.5 -1.5q17 0 32.5 2q15.5 2 27.5 9q12 7 21 19q9 12 14 33h72q-11 -80 -57.5 -104q-46.5 -24 -111.5 -24q-31 0 -60 5q-29 5 -52.5 17q-23.5 12 -40 31.5q-16.5 19.5 -22.5 49.5z" />
-<glyph unicode="&#62776;" horiz-adv-x="582" d="M395 325q-14 0 -24 0q-10 0 -23 -1q-81 -5 -128 -34q-47 -29 -47 -86q0 -33 13.5 -58q13.5 -25 38 -41q24.5 -16 58 -24q33.5 -8 74.5 -8q48 0 91 11.5q43 11.5 67 25.5l29 -75q-27 -17 -78.5 -32.5q-51.5 -15.5 -123.5 -15.5q-61 0 -111.5 12.5q-50.5 12.5 -87 38.5q-36.5 26 -56.5 65q-20 39 -20 93q0 72 42 119q42 47 120 57l0 4q-35 10 -61 27.5q-26 17.5 -43 39.5q-17 22 -25.5 46.5q-8.5 24.5 -8.5 49.5q0 45 20 78q20 33 54.5 54q34.5 21 80 31q45.5 10 97.5 10q30 0 59.5 -3.5q29.5 -3.5 55 -9.5q25.5 -6 46 -13q20.5 -7 31.5 -14l-28 -78q-15 6 -33.5 11.5q-18.5 5.5 -39 10q-20.5 4.5 -42 7.5q-21.5 3 -41.5 3q-71 0 -113 -22.5q-42 -22.5 -42 -75.5q0 -26 12.5 -46q12.5 -20 33 -35q20.5 -15 46.5 -24.5q26 -9.5 53 -13.5q18 -3 44 -3.5q26 -0.5 46 -0.5h19v-80zM154 795q0 23 16.5 36q16.5 13 45.5 13q28 0 45 -13q17 -13 17 -36q0 -22 -17 -35.5q-17 -13.5 -45 -13.5q-29 0 -45.5 13.5q-16.5 13.5 -16.5 35.5zt0 0zM368 795q0 23 16.5 36q16.5 13 44.5 13q29 0 46 -13q17 -13 17 -36q0 -22 -17 -35.5q-17 -13.5 -46 -13.5q-28 0 -44.5 13.5t-16.5 35.5z" />
-<glyph unicode="&#62777;" horiz-adv-x="530" d="M303 233q-81 0 -116 -20.5q-35 -20.5 -35 -58.5q0 -39 36.5 -62q36.5 -23 107.5 -23q85 0 146 35l24 -72q-29 -16 -70 -28.5q-41 -12.5 -96 -12.5q-121 0 -180.5 41.5q-59.5 41.5 -59.5 111.5q0 52 28.5 82.5q28.5 30.5 92.5 47.5l0 10q-49 15 -74 47q-25 32 -25 71q0 64 51 98.5q51 34.5 138 34.5q64 0 111 -14q47 -14 82 -34l-25 -67q-25 11 -61.5 24q-36.5 13 -77.5 13q-63 0 -93.5 -17q-30.5 -17 -30.5 -59q0 -17 9.5 -31.5q9.5 -14.5 25.5 -25q16 -10.5 36.5 -16.5q20.5 -6 42.5 -6h76v-69zM110 633q0 24 16 40q16 16 42 16q25 0 40.5 -16q15.5 -16 15.5 -40q0 -23 -15.5 -39q-15.5 -16 -40.5 -16q-26 0 -42 16q-16 16 -16 39zt0 0zM325 633q0 24 15.5 40q15.5 16 41.5 16q26 0 41.5 -16q15.5 -16 15.5 -40q0 -23 -15.5 -39q-15.5 -16 -41.5 -16q-26 0 -41.5 16t-15.5 39z" />
-<glyph unicode="&#62778;" horiz-adv-x="398" d="M149 634h-80v66h260v-66h-80v-568h80v-66h-260v66h80zM127 798q0 22 19 38q19 16 53 16q34 0 53.5 -16q19.5 -16 19.5 -38q0 -24 -19.5 -39.5q-19.5 -15.5 -53.5 -15.5q-34 0 -53 15.5t-19 39.5z" />
-<glyph unicode="&#62779;" horiz-adv-x="317" d="M114 525h92v-525l-92 0z" />
-<glyph unicode="&#62780;" horiz-adv-x="565" d="M89 700h423v-86h-323v-223h300v-86h-300v-305l-100 0z" />
-<glyph unicode="&#62781;" horiz-adv-x="450" d="M426 447h-246v-139h239v-70h-239v-238h-92v525l338 0z" />
-<glyph unicode="&#62782;" horiz-adv-x="624" d="M584 30q-28 -20 -68.5 -30q-40.5 -10 -87.5 -12l-15 -166h-63l-21 170q-57 9 -106 35q-49 26 -86 70.5q-37 44.5 -58 107q-21 62.5 -21 145.5q0 98 30 167q30 69 78 112.5q48 43.5 108 63.5q60 20 119 20q66 0 108 -7q42 -7 71 -18l-22 -84q-49 23 -149 23q-45 0 -87.5 -15q-42.5 -15 -76 -48q-33.5 -33 -53.5 -85.5q-20 -52.5 -20 -128.5q0 -68 19 -119.5q19 -51.5 52.5 -86.5q33.5 -35 79 -52.5q45.5 -17.5 99.5 -17.5q49 0 85 9q36 9 61 23z" />
-<glyph unicode="&#62783;" horiz-adv-x="529" d="M484 36q-29 -20 -65 -32q-36 -12 -77 -16l-15 -166h-63l-21 169q-50 9 -85 32q-35 23 -56.5 58q-21.5 35 -31.5 81q-10 46 -10 100q0 133 64.5 205.5q64.5 72.5 185.5 72.5q53 0 92 -9.5q39 -9.5 70 -23.5l-24 -75q-27 14 -58.5 22q-31.5 8 -68.5 8q-163 0 -163 -200q0 -38 9 -73q9 -35 29 -62.5q20 -27.5 52.5 -44q32.5 -16.5 79.5 -16.5q42 0 73.5 11.5q31.5 11.5 52.5 27.5z" />
-<glyph unicode="&#62784;" horiz-adv-x="715" d="M89 700q20 3 46.5 4.5q26.5 1.5 55 2.5q28.5 1 56 1.5q27.5 0.5 50.5 0.5q92 0 159.5 -26.5q67.5 -26.5 112 -73.5q44.5 -47 66.5 -112q22 -65 22 -142q0 -70 -20.5 -135.5q-20.5 -65.5 -65.5 -116.5q-45 -51 -115.5 -82q-70.5 -31 -170.5 -31q-17 0 -45.5 1q-28.5 1 -58.5 2q-30 1 -55.5 2.5q-25.5 1.5 -36.5 3.5zM300 621q-14 0 -30 0q-16 0 -32 -1q-16 -1 -29 -2q-13 -1 -20 -2l0 -534q5 -1 19.5 -1.5q14.5 -0.5 30.5 -1q16 -0.5 30 -1q14 -0.5 20 -0.5q75 0 125.5 23.5q50.5 23.5 81 62.5q30.5 39 43 88.5q12.5 49.5 12.5 102.5q0 45 -12 92q-12 47 -41 85.5q-29 38.5 -77 63.5q-48 25 -121 25zt0 0zM355 870h132v-23l-178 -95l-81 0z" />
-<glyph unicode="&#62785;" horiz-adv-x="649" d="M538 181q0 -51 1.5 -95.5q1.5 -44.5 9.5 -87.5l-61 0l-23 80h-10q-23 -40 -67.5 -66q-44.5 -26 -103.5 -26q-113 0 -168.5 67q-55.5 67 -55.5 206q0 134 68.5 205.5q68.5 71.5 192.5 71.5q21 0 37.5 -1.5q16.5 -1.5 31 -3.5q14.5 -2 28 -6q13.5 -4 28.5 -8l0 183h92zM446 428q-23 17 -49.5 23.5q-26.5 6.5 -70.5 6.5q-81 0 -125.5 -47q-44.5 -47 -44.5 -153q0 -42 8 -77.5q8 -35.5 25 -61.5q17 -26 45 -40.5q28 -14.5 69 -14.5q61 0 95 30.5q34 30.5 48 90.5zM625 699h104v-23l-112 -127l-56 0z" />
-<glyph unicode="&#62786;" horiz-adv-x="733" d="M544 313h-355v-313h-100v700h100v-299h355v299h100v-700h-100zM407 870h132v-23l-178 -95l-81 0z" />
-<glyph unicode="&#62787;" horiz-adv-x="641" d="M461 0v290q0 43 -5.5 74.5q-5.5 31.5 -20 52.5q-14.5 21 -39 31q-24.5 10 -61.5 10q-26 0 -51 -9q-25 -9 -46 -25q-21 -16 -36 -38.5q-15 -22.5 -22 -50.5l0 -335h-92v700h92v-240h11q30 36 72 58q42 22 104 22q48 0 83 -10.5q35 -10.5 58 -37q23 -26.5 34 -71q11 -44.5 11 -111.5v-310zM363 720h104v-23l-112 -127l-56 0z" />
-<glyph unicode="&#62788;" horiz-adv-x="566" d="M547 0h-458v700h100v-612h358zM328 700h104v-23l-112 -127l-56 0z" />
-<glyph unicode="&#62789;" horiz-adv-x="336" d="M192 139q0 -41 15.5 -58q15.5 -17 41.5 -17q16 0 31 2q15 2 36 8l12 -68q-10 -4 -24 -7.5q-14 -3.5 -29 -6.5q-15 -3 -30 -4.5q-15 -1.5 -27 -1.5q-54 0 -86 27.5q-32 27.5 -32 91.5v595h92zM287 700h104v-23l-112 -127l-56 0z" />
-<glyph unicode="&#62790;" horiz-adv-x="610" d="M591 612h-236v-612h-100v612h-236v88h572zM378 870h132v-23l-178 -95l-81 0z" />
-<glyph unicode="&#62791;" horiz-adv-x="405" d="M24 525h89v106l92 24v-130h158v-78h-158v-268q0 -63 16 -89q16 -26 55 -26q25 0 45.5 5.5q20.5 5.5 46.5 14.5l21 -65q-32 -14 -68.5 -23.5q-36.5 -9.5 -78.5 -9.5q-70 0 -99.5 38q-29.5 38 -29.5 124v299h-89zM294 699h104v-23l-112 -127l-56 0z" />
-<glyph unicode="&#62792;" horiz-adv-x="628" d="M296 234l26 -109h2l27 111l180 464h100l-290 -710h-50l-294 710h110zM378 870h132v-23l-178 -95l-81 0z" />
-<glyph unicode="&#62793;" horiz-adv-x="535" d="M242 223l35 -108l33 110l125 300h100l-245 -536h-40l-250 536h108zM284 720h104v-23l-112 -127l-56 0z" />
-<glyph unicode="&#62794;" horiz-adv-x="589" d="M149 327v78h17q9 0 23.5 0q14.5 0 30 1q15.5 1 30 1.5q14.5 0.5 23.5 2.5q54 7 92 34.5q38 27.5 38 73.5q0 31 -11.5 51.5q-11.5 20.5 -32 33q-20.5 12.5 -47.5 18q-27 5.5 -57 5.5q-58 0 -101 -9q-43 -9 -66 -20l-27 80q10 6 31 12q21 6 48.5 11q27.5 5 61 8.5q33.5 3.5 68.5 3.5q44 0 87 -8.5q43 -8.5 76.5 -28.5q33.5 -20 54.5 -53q21 -33 21 -83q0 -50 -35.5 -95q-35.5 -45 -107.5 -65l0 -4q77 -11 121.5 -53.5q44.5 -42.5 44.5 -114.5q0 -57 -25 -98.5q-25 -41.5 -65.5 -68.5q-40.5 -27 -92 -40q-51.5 -13 -105.5 -13q-72 0 -121 8.5q-49 8.5 -79 20.5l25 86q26 -11 71.5 -20q45.5 -9 111.5 -9q31 0 62 8q31 8 56 24q25 16 40.5 40.5q15.5 24.5 15.5 58.5q0 60 -46.5 88q-46.5 28 -129.5 33q-13 1 -23 1.5q-10 0.5 -24 0.5z" />
-<glyph unicode="&#62795;" horiz-adv-x="518" d="M137 158v69h76q22 0 44 9.5q22 9.5 39.5 27q17.5 17.5 28.5 40.5q11 23 11 50q0 56 -31.5 81q-31.5 25 -103.5 25q-38 0 -75 -13q-37 -13 -63 -24l-12 31l-12 37q35 21 82 34q47 13 110 13q47 0 84 -11.5q37 -11.5 63 -32.5q26 -21 40 -50.5q14 -29.5 14 -65.5q0 -66 -32 -108q-32 -42 -79 -59l0 -11q32 -5 60 -17.5q28 -12.5 48.5 -34q20.5 -21.5 32.5 -52.5q12 -31 12 -74q0 -63 -22.5 -107.5q-22.5 -44.5 -60 -72q-37.5 -27.5 -87 -40q-49.5 -12.5 -103.5 -12.5q-54 0 -93.5 10.5q-39.5 10.5 -71.5 24.5l12 30q4 8 8 19q4 11 7 20q30 -12 62.5 -19q32.5 -7 58.5 -7q102 0 147 40q45 40 45 115q0 73 -48 104q-48 31 -129 31z" />
-<glyph unicode="&#62796;" horiz-adv-x="589" d="M149 327v78h17q9 0 23.5 0q14.5 0 30 1q15.5 1 30 1.5q14.5 0.5 23.5 2.5q54 7 92 34.5q38 27.5 38 73.5q0 31 -11.5 51.5q-11.5 20.5 -32 33q-20.5 12.5 -47.5 18q-27 5.5 -57 5.5q-58 0 -101 -9q-43 -9 -66 -20l-27 80q10 6 31 12q21 6 48.5 11q27.5 5 61 8.5q33.5 3.5 68.5 3.5q44 0 87 -8.5q43 -8.5 76.5 -28.5q33.5 -20 54.5 -53q21 -33 21 -83q0 -50 -35.5 -95q-35.5 -45 -107.5 -65l0 -4q77 -11 121.5 -53.5q44.5 -42.5 44.5 -114.5q0 -57 -25 -98.5q-25 -41.5 -65.5 -68.5q-40.5 -27 -92 -40q-51.5 -13 -105.5 -13q-72 0 -121 8.5q-49 8.5 -79 20.5l25 86q26 -11 71.5 -20q45.5 -9 111.5 -9q31 0 62 8q31 8 56 24q25 16 40.5 40.5q15.5 24.5 15.5 58.5q0 60 -46.5 88q-46.5 28 -129.5 33q-13 1 -23 1.5q-10 0.5 -24 0.5zM293 744h-69l-139 101v25h93l64 -49l19 -33l21 32l68 50h89l0 -26z" />
-<glyph unicode="&#62797;" horiz-adv-x="518" d="M137 158v69h76q22 0 44 9.5q22 9.5 39.5 27q17.5 17.5 28.5 40.5q11 23 11 50q0 56 -31.5 81q-31.5 25 -103.5 25q-38 0 -75 -13q-37 -13 -63 -24l-12 31l-12 37q35 21 82 34q47 13 110 13q47 0 84 -11.5q37 -11.5 63 -32.5q26 -21 40 -50.5q14 -29.5 14 -65.5q0 -66 -32 -108q-32 -42 -79 -59l0 -11q32 -5 60 -17.5q28 -12.5 48.5 -34q20.5 -21.5 32.5 -52.5q12 -31 12 -74q0 -63 -22.5 -107.5q-22.5 -44.5 -60 -72q-37.5 -27.5 -87 -40q-49.5 -12.5 -103.5 -12.5q-54 0 -93.5 10.5q-39.5 10.5 -71.5 24.5l12 30q4 8 8 19q4 11 7 20q30 -12 62.5 -19q32.5 -7 58.5 -7q102 0 147 40q45 40 45 115q0 73 -48 104q-48 31 -129 31zM252 586h-49l-129 187h87l44 -68l28 -71l29 70l49 69l78 0z" />
-<glyph unicode="&#63020;" horiz-adv-x="217" d="M174 444q0 -24 -17 -38q-17 -14 -43 -14q-32 0 -51 19q-19 19 -19 56q0 34 10.5 59q10.5 25 25.5 41.5q15 16.5 32 26.5q17 10 30 14l27 -40q-24 -11 -39 -29q-15 -18 -13 -44q26 5 41.5 -10t15.5 -41z" />
-<glyph unicode="&#63021;" horiz-adv-x="217" d="M44 480q0 24 16.5 38.5q16.5 14.5 42.5 14.5q32 0 51.5 -19q19.5 -19 19.5 -56q0 -35 -11 -60q-11 -25 -26.5 -42q-15.5 -17 -32.5 -26.5q-17 -9.5 -29 -13.5l-28 41q24 11 39.5 28.5q15.5 17.5 14.5 43.5q-26 -5 -41.5 10t-15.5 41z" />
-<glyph unicode="&#63022;" horiz-adv-x="379" d="M174 444q0 -24 -17 -38q-17 -14 -43 -14q-32 0 -51 19q-19 19 -19 56q0 34 10.5 59q10.5 25 25.5 41.5q15 16.5 32 26.5q17 10 30 14l27 -40q-24 -11 -39 -29q-15 -18 -13 -44q26 5 41.5 -10q15.5 -15 15.5 -41zt0 0zM336 444q0 -24 -17 -38q-17 -14 -43 -14q-32 0 -51 19q-19 19 -19 56q0 34 10.5 59q10.5 25 25.5 41.5q15 16.5 32 26.5q17 10 30 14l27 -40q-24 -11 -39 -29q-15 -18 -13 -44q26 5 41.5 -10t15.5 -41z" />
-<glyph unicode="&#63023;" horiz-adv-x="379" d="M44 480q0 24 16.5 38.5q16.5 14.5 42.5 14.5q32 0 51.5 -19q19.5 -19 19.5 -56q0 -35 -11 -60q-11 -25 -26.5 -42q-15.5 -17 -32.5 -26.5q-17 -9.5 -29 -13.5l-28 41q24 11 39.5 28.5q15.5 17.5 14.5 43.5q-26 -5 -41.5 10q-15.5 15 -15.5 41zt0 0zM206 480q0 24 16.5 38.5q16.5 14.5 42.5 14.5q32 0 51.5 -19q19.5 -19 19.5 -56q0 -35 -11 -60q-11 -25 -26.5 -42q-15.5 -17 -32.5 -26.5q-17 -9.5 -29 -13.5l-28 41q24 11 39.5 28.5q15.5 17.5 14.5 43.5q-26 -5 -41.5 10t-15.5 41z" />
-<glyph unicode="&#63028;" horiz-adv-x="244" d="M98 525h92l-35 -198l-57 0z" />
-<glyph unicode="&#63029;" horiz-adv-x="375" d="M98 525h92l-35 -198h-57zM228 525h92l-35 -198l-57 0z" />
-<glyph unicode="&#63074;" horiz-adv-x="436" d="M194 583l8 39l-30 -28l-83 -49l-33 58l169 104h52v-427l-83 0z" />
-<glyph unicode="&#63171;" horiz-adv-x="249" d="M59 -102q0 22 17.5 36q17.5 14 40.5 14q29 0 50.5 -19q21.5 -19 21.5 -59q0 -27 -10 -48q-10 -21 -24 -36q-14 -15 -29.5 -24q-15.5 -9 -27.5 -13l-29 40q19 8 32.5 23.5q13.5 15.5 13.5 38.5q-23 -5 -39.5 9t-16.5 38z" />
-<glyph unicode="&#63177;" horiz-adv-x="379" d="M187 870h132v-23l-178 -95l-81 0z" />
-<glyph unicode="&#63178;" horiz-adv-x="474" d="M268 744h-69l-139 101v25h93l64 -49l19 -33l21 32l68 50h89l0 -26z" />
-<glyph unicode="&#63179;" horiz-adv-x="458" d="M60 795q0 23 16.5 36q16.5 13 45.5 13q28 0 45 -13q17 -13 17 -36q0 -22 -17 -35.5q-17 -13.5 -45 -13.5q-29 0 -45.5 13.5q-16.5 13.5 -16.5 35.5zt0 0zM274 795q0 23 16.5 36q16.5 13 44.5 13q29 0 46 -13q17 -13 17 -36q0 -22 -17 -35.5q-17 -13.5 -46 -13.5q-28 0 -44.5 13.5t-16.5 35.5z" />
-<glyph unicode="&#63182;" horiz-adv-x="379" d="M319 752h-86l-173 95v23l132 0z" />
-<glyph unicode="&#63183;" horiz-adv-x="487" d="M129 850h108v-16l-109 -93h-68zM312 850h115v-16l-157 -93l-69 0z" />
-<glyph unicode="&#63184;" horiz-adv-x="470" d="M60 836h350v-68l-350 0z" />
-<glyph unicode="&#63185;" horiz-adv-x="493" d="M153 871q5 -36 30.5 -54.5q25.5 -18.5 67.5 -18.5q42 0 67.5 18.5q25.5 18.5 30.5 53.5l84 -18q-13 -55 -57 -86q-44 -31 -126 -31q-79 0 -129.5 27q-50.5 27 -60.5 88z" />
-<glyph unicode="&#63188;" horiz-adv-x="464" d="M142 712q5 -22 14 -35q9 -13 21 -19.5q12 -6.5 27.5 -8q15.5 -1.5 32.5 -1.5q17 0 32.5 2q15.5 2 27.5 9q12 7 21 19q9 12 14 33h72q-11 -80 -57.5 -104q-46.5 -24 -111.5 -24q-31 0 -60 5q-29 5 -52.5 17q-23.5 12 -40 31.5q-16.5 19.5 -22.5 49.5z" />
-<glyph unicode="&#64257;" horiz-adv-x="643" d="M535 525v-525h-92v447h-235v-447h-92v447h-92v78h92v33q0 81 52.5 118q52.5 37 154.5 37q66 0 120 -12.5q54 -12.5 88 -31.5l-28 -72q-32 17 -75.5 27.5q-43.5 10.5 -90.5 10.5q-42 0 -67.5 -6q-25.5 -6 -39 -19.5q-13.5 -13.5 -18 -34q-4.5 -20.5 -4.5 -50.5z" />
-<glyph unicode="&#64258;" horiz-adv-x="673" d="M438 625q-27 5 -60 7.5q-33 2.5 -59 2.5q-38 0 -60.5 -7q-22.5 -7 -34 -21q-11.5 -14 -15 -34.5q-3.5 -20.5 -3.5 -47.5l115 0v-78h-115v-447h-92v447h-90v78h90v33q0 82 47.5 118.5q47.5 36.5 157.5 36.5q19 0 47 -1.5q28 -1.5 57.5 -4q29.5 -2.5 57.5 -6q28 -3.5 49 -6.5l0 -553q0 -42 15 -60q15 -18 41 -18q14 0 31 1.5q17 1.5 37 7.5l11 -68q-21 -9 -52.5 -14q-31.5 -5 -56.5 -5q-54 0 -86 27.5q-32 27.5 -32 91.5z" />
diff --git a/admin/survey/Fonts/PTSans/PTC55F_W.ttf b/admin/survey/Fonts/PTSans/PTC55F_W.ttf
deleted file mode 100644
index 6680273..0000000
--- a/admin/survey/Fonts/PTSans/PTC55F_W.ttf
+++ /dev/null
Binary files differ
diff --git a/admin/survey/Fonts/PTSans/PTC55F_W.woff b/admin/survey/Fonts/PTSans/PTC55F_W.woff
deleted file mode 100644
index 1c7d62e..0000000
--- a/admin/survey/Fonts/PTSans/PTC55F_W.woff
+++ /dev/null
Binary files differ
diff --git a/admin/survey/Fonts/PTSans/PTC75F_W.eot b/admin/survey/Fonts/PTSans/PTC75F_W.eot
deleted file mode 100644
index 8ea7c61..0000000
--- a/admin/survey/Fonts/PTSans/PTC75F_W.eot
+++ /dev/null
Binary files differ
diff --git a/admin/survey/Fonts/PTSans/PTC75F_W.svg b/admin/survey/Fonts/PTSans/PTC75F_W.svg
deleted file mode 100644
index 639bcbc..0000000
--- a/admin/survey/Fonts/PTSans/PTC75F_W.svg
+++ /dev/null
@@ -1,728 +0,0 @@
-<?xml version="1.0" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
-<svg xmlns="http://www.w3.org/2000/svg">
-<metadata>
-Generated by SVGconv.
-Copyright : Copyright 2009 ParaType Ltd. All rights reserved.
-Designer : A.Korolkova, O.Umpeleva, V.Yefimov
-Foundry : ParaType Ltd
-Foundry URL : http://www.paratype.com
-</metadata>
-<defs>
-<font id="PTSans-CaptionBold" horiz-adv-x="593" >
-<font-face units-per-em="1000" ascent="1018" descent="276" />
-<missing-glyph horiz-adv-x="750" />
-<glyph unicode="&#32;" horiz-adv-x="276" />
-<glyph unicode="&#33;" horiz-adv-x="314" d="M105 700h146v-327l-28 -161h-90l-28 161zM90 68q0 37 24 58q24 21 63 21q40 0 64 -21q24 -21 24 -58q0 -35 -24 -57q-24 -22 -64 -22q-39 0 -63 22t-24 57z" />
-<glyph unicode="&#34;" horiz-adv-x="436" d="M99 700h124l-38 -218h-86zM258 700h124l-38 -218l-86 0z" />
-<glyph unicode="&#35;" horiz-adv-x="591" d="M302 203h-97l-39 -153h-116l39 153h-80l24 101h82l26 102h-78l24 101h80l37 143h116l-37 -143h97l37 143h116l-37 -143h77l-26 -101h-77l-27 -102h75l-26 -101h-75l-38 -153h-116zM231 304h97l26 102l-97 0z" />
-<glyph unicode="&#36;" horiz-adv-x="591" d="M247 -13q-62 2 -108.5 12.5q-46.5 10.5 -72.5 23.5l42 121q20 -11 55 -21q35 -10 84 -14l0 188q-34 13 -67 29.5q-33 16.5 -59 41q-26 24.5 -42 58q-16 33.5 -16 81.5q0 91 49.5 140q49.5 49 134.5 62l0 91h113v-88q48 -3 84 -12q36 -9 66 -23l-38 -118q-17 8 -46.5 16.5q-29.5 8.5 -65.5 13.5l0 -174q34 -13 68 -29.5q34 -16.5 61 -40.5q27 -24 43.5 -57q16.5 -33 16.5 -79q0 -96 -50.5 -148.5q-50.5 -52.5 -138.5 -67.5l0 -93h-113zM313 108q49 5 70.5 26.5q21.5 21.5 21.5 56.5q0 30 -26 48q-26 18 -66 34zM294 593q-26 -1 -43 -6.5q-17 -5.5 -27 -15q-10 -9.5 -13.5 -22.5q-3.5 -13 -3.5 -29q0 -29 24.5 -46.5q24.5 -17.5 62.5 -33.5z" />
-<glyph unicode="&#37;" horiz-adv-x="907" d="M53 542q0 45 14 77q14 32 39.5 52.5q25.5 20.5 60 30.5q34.5 10 76.5 10q41 0 76 -9q35 -9 60.5 -29.5q25.5 -20.5 39.5 -53q14 -32.5 14 -78.5q0 -47 -14 -79q-14 -32 -39.5 -52.5q-25.5 -20.5 -60.5 -29.5q-35 -9 -76 -9q-42 0 -76.5 9q-34.5 9 -60 29.5q-25.5 20.5 -39.5 52.5q-14 32 -14 79zt0 0zM180 542q0 -39 14 -61q14 -22 49 -22q34 0 48 19q14 19 14 64q0 45 -14 64q-14 19 -48 19q-34 0 -48.5 -19q-14.5 -19 -14.5 -64zt0 0zM494 170q0 45 14 77q14 32 39.5 52.5q25.5 20.5 60 30.5q34.5 10 76.5 10q41 0 76 -9q35 -9 60.5 -29.5q25.5 -20.5 39.5 -53q14 -32.5 14 -78.5q0 -47 -14 -79q-14 -32 -39.5 -52.5q-25.5 -20.5 -60.5 -29.5q-35 -9 -76 -9q-42 0 -76.5 9q-34.5 9 -60 29.5q-25.5 20.5 -39.5 52.5q-14 32 -14 79zt0 0zM621 170q0 -39 14 -61q14 -22 49 -22q34 0 48 19q14 19 14 64q0 45 -14 64q-14 19 -48 19q-34 0 -48.5 -19q-14.5 -19 -14.5 -64zt0 0zM732 718l79 -77l-625 -655l-76 77z" />
-<glyph unicode="&#38;" horiz-adv-x="885" d="M100 195q0 37 13.5 71.5q13.5 34.5 37.5 65q24 30.5 57.5 56q33.5 25.5 74.5 46.5q-27 32 -44.5 65.5q-17.5 33.5 -17.5 71.5q0 25 10 51q10 26 32.5 46q22.5 20 58 33q35.5 13 87.5 13q50 0 85 -11q35 -11 56.5 -29q21.5 -18 31 -41.5q9.5 -23.5 9.5 -48.5q0 -40 -30.5 -84.5q-30.5 -44.5 -106.5 -84.5q20 -28 38.5 -52q18.5 -24 38 -46q19.5 -22 40 -43q20.5 -21 43.5 -42q24 25 45 63q21 38 36 78l102 -58q-8 -17 -19 -38q-11 -21 -24 -42q-13 -21 -26.5 -40q-13.5 -19 -25.5 -33q33 -28 58.5 -44q25.5 -16 52.5 -30l-76 -102q-28 12 -60 34q-32 22 -62 49q-40 -33 -99.5 -58q-59.5 -25 -145.5 -25q-55 0 -104 14.5q-49 14.5 -86 41.5q-37 27 -58.5 65.5q-21.5 38.5 -21.5 87.5zt0 0zM528 151q-55 53 -100.5 104.5q-45.5 51.5 -80.5 97.5q-53 -37 -80 -71.5q-27 -34.5 -27 -74.5q0 -49 41 -76.5q41 -27.5 109 -27.5q43 0 80.5 14.5q37.5 14.5 57.5 33.5zt0 0zM361 564q0 -41 40 -87q42 24 61 45q19 21 19 40q0 25 -14.5 38q-14.5 13 -47.5 13q-29 0 -43.5 -13.5t-14.5 -35.5z" />
-<glyph unicode="&#39;" horiz-adv-x="277" d="M99 700h124l-38 -218l-86 0z" />
-<glyph unicode="&#40;" horiz-adv-x="356" d="M247 -220q-50 48 -84.5 105.5q-34.5 57.5 -56 118q-21.5 60.5 -31 122q-9.5 61.5 -9.5 117.5q0 55 9.5 116q9.5 61 31.5 122.5q22 61.5 57.5 120.5q35.5 59 86.5 110l90 -61q-38 -46 -64 -96.5q-26 -50.5 -41.5 -102.5q-15.5 -52 -22.5 -105q-7 -53 -7 -104q0 -48 8 -101q8 -53 24.5 -105.5q16.5 -52.5 42.5 -102.5q26 -50 62 -92z" />
-<glyph unicode="&#41;" horiz-adv-x="356" d="M13 -158q36 42 62 92q26 50 42.5 102.5q16.5 52.5 24.5 105.5q8 53 8 101q0 51 -7 104q-7 53 -22.5 105q-15.5 52 -41.5 102.5q-26 50.5 -64 96.5l90 61q51 -51 86.5 -110q35.5 -59 57.5 -120.5q22 -61.5 31.5 -122.5q9.5 -61 9.5 -116q0 -56 -9.5 -117.5q-9.5 -61.5 -31 -122q-21.5 -60.5 -56 -118q-34.5 -57.5 -84.5 -105.5z" />
-<glyph unicode="&#42;" horiz-adv-x="408" d="M156 735l30 -47l16 -61l16 57l30 51l67 -37l-32 -54l-51 -44l70 17h60v-77h-58l-65 18l53 -48l27 -45l-68 -38l-29 48l-21 65l-14 -59l-31 -52l-68 39l32 52l48 37l-60 -17h-62v78h63l63 -18l-54 45l-30 51z" />
-<glyph unicode="&#43;" horiz-adv-x="571" d="M47 397h176v180h124v-180h176v-120h-176v-181h-124v181l-176 0z" />
-<glyph unicode="&#44;" horiz-adv-x="252" d="M51 67q0 34 24 54.5q24 20.5 60 20.5q45 0 71 -29q26 -29 26 -74q0 -47 -15 -80q-15 -33 -37.5 -54.5q-22.5 -21.5 -47.5 -34q-25 -12.5 -46 -18.5l-40 58q28 9 48.5 33.5q20.5 24.5 24.5 52.5q-24 -3 -46 14.5t-22 56.5z" />
-<glyph unicode="&#45;" horiz-adv-x="391" d="M59 350h273v-124l-273 0z" />
-<glyph unicode="&#46;" horiz-adv-x="267" d="M46 68q0 37 24 58q24 21 63 21q40 0 64 -21q24 -21 24 -58q0 -35 -24 -57q-24 -22 -64 -22q-39 0 -63 22t-24 57z" />
-<glyph unicode="&#47;" horiz-adv-x="443" d="M362 712l106 -50l-388 -802l-104 54z" />
-<glyph unicode="&#48;" horiz-adv-x="591" d="M30 351q0 179 68.5 271q68.5 92 196.5 92q137 0 201.5 -90.5q64.5 -90.5 64.5 -272.5q0 -178 -69 -271.5q-69 -93.5 -197 -93.5q-68 0 -118 25.5q-50 25.5 -82.5 73q-32.5 47.5 -48.5 115q-16 67.5 -16 151.5zt0 0zM174 351q0 -115 28 -181.5q28 -66.5 93 -66.5q66 0 94 60q28 60 28 188q0 57 -6.5 102.5q-6.5 45.5 -20.5 77.5q-14 32 -37.5 49q-23.5 17 -57.5 17q-65 0 -93 -62.5t-28 -183.5z" />
-<glyph unicode="&#49;" horiz-adv-x="591" d="M96 117h150v385l17 69l-52 -60l-98 -64l-56 82l245 183h79v-595h147v-117l-432 0z" />
-<glyph unicode="&#50;" horiz-adv-x="591" d="M504 527q0 -50 -20 -101q-20 -51 -50.5 -99.5q-30.5 -48.5 -68 -94.5q-37.5 -46 -73.5 -85l-57 -41v-5l77 16h207v-117h-457v70q26 26 58.5 58.5q32.5 32.5 65.5 69.5q33 37 64.5 76.5q31.5 39.5 55.5 78.5q24 39 39 76.5q15 37.5 15 69.5q0 38 -23 64.5q-23 26.5 -79 26.5q-35 0 -71 -14.5q-36 -14.5 -62 -37.5l-58 100q43 32 96 54q53 22 127 22q46 0 85.5 -12q39.5 -12 68 -35q28.5 -23 44.5 -58.5t16 -81.5z" />
-<glyph unicode="&#51;" horiz-adv-x="591" d="M251 103q34 0 59.5 8.5q25.5 8.5 42.5 23.5q17 15 26 34.5q9 19.5 9 40.5q0 54 -36.5 80q-36.5 26 -117.5 26h-79v74l129 158l63 46l-86 -11h-181v117h416v-75l-150 -184l-49 -27v-5l46 6q37 -3 70.5 -17q33.5 -14 59 -38q25.5 -24 40.5 -59.5q15 -35.5 15 -82.5q0 -59 -21.5 -102.5q-21.5 -43.5 -58.5 -72.5q-37 -29 -87 -43q-50 -14 -108 -14q-24 0 -49 2q-25 2 -49 6.5q-24 4.5 -45.5 10q-21.5 5.5 -37.5 13.5l38 116q28 -13 63 -22t78 -9z" />
-<glyph unicode="&#52;" horiz-adv-x="591" d="M588 193h-119v-193h-131v193h-329v78l344 434h116v-403h119zM338 446l8 81h-4l-36 -68l-111 -129l-56 -37l70 9l129 0z" />
-<glyph unicode="&#53;" horiz-adv-x="591" d="M227 110q72 0 110.5 28.5q38.5 28.5 38.5 82.5q0 58 -45 85q-45 27 -128 27l-87 -4v371h374v-130h-252v-124l45 4q53 -2 96 -18.5q43 -16.5 73.5 -45.5q30.5 -29 47 -70q16.5 -41 16.5 -91q0 -59 -22 -104q-22 -45 -60.5 -75q-38.5 -30 -91 -45q-52.5 -15 -113.5 -15q-49 0 -93.5 8q-44.5 8 -74.5 21l38 116q25 -9 54.5 -15t73.5 -6z" />
-<glyph unicode="&#54;" horiz-adv-x="591" d="M551 217q0 -47 -18 -88.5q-18 -41.5 -50.5 -73.5q-32.5 -32 -78 -50.5q-45.5 -18.5 -101.5 -18.5q-56 0 -103 17q-47 17 -82 50.5q-35 33.5 -54.5 83q-19.5 49.5 -19.5 115.5q0 97 31 177.5q31 80.5 83.5 140q52.5 59.5 122.5 96.5q70 37 149 48l29 -109q-54 -8 -99.5 -30.5q-45.5 -22.5 -81 -54q-35.5 -31.5 -59.5 -70q-24 -38.5 -34 -78.5q23 25 56 43.5q33 18.5 86 18.5q50 0 91.5 -15q41.5 -15 71 -43q29.5 -28 45.5 -68q16 -40 16 -91zt0 0zM415 211q0 106 -119 106q-44 0 -74 -17.5q-30 -17.5 -42 -41.5q-2 -11 -2 -16.5q0 -5.5 0 -12.5q0 -23 7.5 -45.5q7.5 -22.5 22.5 -40.5q15 -18 38 -29q23 -11 54 -11q25 0 46 8.5q21 8.5 36.5 23.5q15.5 15 24 34.5t8.5 41.5z" />
-<glyph unicode="&#55;" horiz-adv-x="591" d="M101 0l246 529l48 49l-66 -10h-277v132h491v-39l-304 -661z" />
-<glyph unicode="&#56;" horiz-adv-x="591" d="M53 173q0 35 10 62.5q10 27.5 28 49.5q18 22 42 39.5q24 17.5 53 32.5q-54 31 -83.5 71q-29.5 40 -29.5 100q0 38 15.5 72q15.5 34 45 59.5q29.5 25.5 72 40q42.5 14.5 96.5 14.5q49 0 89 -12.5q40 -12.5 68.5 -35q28.5 -22.5 44 -54q15.5 -31.5 15.5 -68.5q0 -59 -27.5 -99.5q-27.5 -40.5 -84.5 -74.5q64 -35 98 -76q34 -41 34 -106q0 -45 -18 -82q-18 -37 -50.5 -63.5q-32.5 -26.5 -78 -41.5q-45.5 -15 -100.5 -15q-54 0 -98.5 13.5q-44.5 13.5 -75.5 38.5q-31 25 -48 59.5q-17 34.5 -17 75.5zt0 0zM405 187q0 22 -12.5 40q-12.5 18 -32 33q-19.5 15 -43.5 28q-24 13 -48 24q-50 -26 -68.5 -57q-18.5 -31 -18.5 -59q0 -39 29.5 -66q29.5 -27 83.5 -27q50 0 80 21.5q30 21.5 30 62.5zt0 0zM207 526q0 -24 10.5 -42q10.5 -18 27.5 -31.5q17 -13.5 38.5 -24.5q21.5 -11 44.5 -21q63 50 63 109q0 40 -27 60.5q-27 20.5 -65 20.5q-48 0 -70 -21t-22 -50z" />
-<glyph unicode="&#57;" horiz-adv-x="591" d="M34 480q0 51 17 93.5q17 42.5 49 74q32 31.5 78 49q46 17.5 105 17.5q124 0 194 -68.5q70 -68.5 70 -196.5q0 -116 -32 -201q-32 -85 -86 -141.5q-54 -56.5 -124.5 -86q-70.5 -29.5 -148.5 -34.5l-30 107q60 7 106.5 26q46.5 19 80 48q33.5 29 55 65.5q21.5 36.5 30.5 77.5q-26 -26 -56.5 -36q-30.5 -10 -80.5 -10q-42 0 -82.5 13q-40.5 13 -72.5 40q-32 27 -52 67.5q-20 40.5 -20 95.5zt0 0zM170 487q0 -55 35.5 -83q35.5 -28 87.5 -28q45 0 73 13.5q28 13.5 44 31.5q1 11 2 20q1 9 1 17q0 26 -7.5 52q-7.5 26 -23.5 46.5q-16 20.5 -41 33q-25 12.5 -59 12.5q-53 0 -82.5 -30.5t-29.5 -84.5z" />
-<glyph unicode="&#58;" horiz-adv-x="317" d="M102 426q0 37 24 58q24 21 63 21q40 0 64 -21q24 -21 24 -58q0 -35 -24 -57q-24 -22 -64 -22q-39 0 -63 22q-24 22 -24 57zt0 0zM102 68q0 37 24 58q24 21 63 21q40 0 64 -21q24 -21 24 -58q0 -35 -24 -57q-24 -22 -64 -22q-39 0 -63 22t-24 57z" />
-<glyph unicode="&#59;" horiz-adv-x="308" d="M87 67q0 34 24 54.5q24 20.5 60 20.5q45 0 71 -29q26 -29 26 -74q0 -47 -15 -80q-15 -33 -37.5 -54.5q-22.5 -21.5 -47.5 -34q-25 -12.5 -46 -18.5l-40 58q28 9 48.5 33.5q20.5 24.5 24.5 52.5q-24 -3 -46 14.5q-22 17.5 -22 56.5zt0 0zM86 426q0 37 24 58q24 21 63 21q40 0 64 -21q24 -21 24 -58q0 -35 -24 -57q-24 -22 -64 -22q-39 0 -63 22t-24 57z" />
-<glyph unicode="&#60;" horiz-adv-x="571" d="M42 283v74l424 236l58 -98l-241 -138l-99 -35l98 -31l247 -136l-57 -98z" />
-<glyph unicode="&#61;" horiz-adv-x="571" d="M47 494h477v-120h-477zM47 300h477v-120l-477 0z" />
-<glyph unicode="&#62;" horiz-adv-x="571" d="M529 367v-74l-426 -237l-56 100l241 137l99 36l-98 30l-247 137l56 98z" />
-<glyph unicode="&#63;" horiz-adv-x="491" d="M146 212q-6 56 5 94q11 38 30.5 64q19.5 26 43.5 43.5q24 17.5 45.5 33.5q21.5 16 36 33.5q14.5 17.5 14.5 42.5q0 35 -20.5 54.5q-20.5 19.5 -74.5 19.5q-17 0 -37.5 -4q-20.5 -4 -40.5 -11q-20 -7 -38.5 -16q-18.5 -9 -31.5 -19l-54 104q41 27 94.5 45q53.5 18 130.5 18q101 0 159.5 -46q58.5 -46 58.5 -124q0 -54 -14.5 -87.5q-14.5 -33.5 -37 -56q-22.5 -22.5 -48 -39q-25.5 -16.5 -48 -35q-22.5 -18.5 -37 -45q-14.5 -26.5 -14.5 -69.5zM125 68q0 37 24 58q24 21 63 21q40 0 64 -21q24 -21 24 -58q0 -35 -24 -57q-24 -22 -64 -22q-39 0 -63 22t-24 57z" />
-<glyph unicode="&#64;" horiz-adv-x="1147" d="M736 483h76l-53 -268q-2 -11 -3.5 -20.5q-1.5 -9.5 -1.5 -17.5q0 -24 10.5 -34.5q10.5 -10.5 30.5 -10.5q28 0 55 11.5q27 11.5 48.5 35q21.5 23.5 34.5 60q13 36.5 13 87.5q0 77 -27.5 131.5q-27.5 54.5 -75 89.5q-47.5 35 -111 51q-63.5 16 -135.5 16q-84 0 -156.5 -29q-72.5 -29 -126 -79q-53.5 -50 -83.5 -118q-30 -68 -30 -147q0 -78 25 -141q25 -63 73.5 -108q48.5 -45 121 -69.5q72.5 -24.5 167.5 -24.5q30 0 69.5 7.5q39.5 7.5 72.5 21.5l33 -105q-45 -20 -90.5 -28.5q-45.5 -8.5 -105.5 -8.5q-107 0 -196.5 30q-89.5 30 -154 88q-64.5 58 -100.5 141.5q-36 83.5 -36 191.5q0 111 41.5 201.5q41.5 90.5 113 155q71.5 64.5 166 99.5q94.5 35 199.5 35q100 0 185 -28q85 -28 147.5 -80.5q62.5 -52.5 98 -126.5q35.5 -74 35.5 -166q0 -63 -24.5 -118.5q-24.5 -55.5 -66.5 -96.5q-42 -41 -99 -65q-57 -24 -122 -24q-28 0 -51 5.5q-23 5.5 -39 19q-16 13.5 -23.5 36q-7.5 22.5 -3.5 55.5v0q-21 -23 -40 -44q-19 -21 -41.5 -37q-22.5 -16 -50 -25.5q-27.5 -9.5 -60.5 -9.5q-26 0 -49.5 10.5q-23.5 10.5 -40.5 30q-17 19.5 -27 46.5q-10 27 -10 60q0 59 21.5 116.5q21.5 57.5 58.5 102.5q37 45 86 73q49 28 105 28q38 0 64 -10.5q26 -10.5 49 -28.5zM667 356q-14 12 -29.5 17.5q-15.5 5.5 -38.5 5.5q-33 0 -60.5 -16.5q-27.5 -16.5 -47.5 -42q-20 -25.5 -31 -56q-11 -30.5 -11 -58.5q0 -32 14.5 -53q14.5 -21 51.5 -21q16 0 33 8.5q17 8.5 33.5 23q16.5 14.5 31.5 34q15 19.5 27 40.5z" />
-<glyph unicode="&#65;" horiz-adv-x="658" d="M441 149h-236l-57 -149h-148l274 705h109l275 -705h-157zM246 266h160l-54 146l-24 111h-5l-24 -112z" />
-<glyph unicode="&#66;" horiz-adv-x="641" d="M577 535q0 -26 -7.5 -51.5q-7.5 -25.5 -23.5 -47.5q-16 -22 -42 -38q-26 -16 -63 -23l0 -6q33 -3 62 -15q29 -12 50.5 -33.5q21.5 -21.5 34 -52q12.5 -30.5 12.5 -71.5q0 -55 -25.5 -94q-25.5 -39 -66.5 -64q-41 -25 -94 -37q-53 -12 -108 -12q-18 0 -47.5 0q-29.5 0 -63 1.5q-33.5 1.5 -68 4.5q-34.5 3 -62.5 9l0 690q21 3 47.5 6q26.5 3 57 5q30.5 2 62.5 3q32 1 64 1q52 0 102 -7.5q50 -7.5 90 -27q40 -19.5 64.5 -53.5q24.5 -34 24.5 -87zt0 0zM304 110q28 0 53.5 5q25.5 5 45 16.5q19.5 11.5 31 29q11.5 17.5 11.5 43.5q0 32 -14 51q-14 19 -36.5 28.5q-22.5 9.5 -50 12q-27.5 2.5 -55.5 2.5h-82v-182q6 -2 17.5 -3q11.5 -1 25.5 -1.5q14 -0.5 28.5 -1q14.5 -0.5 25.5 -0.5zt0 0zM257 408q15 0 35.5 0.5q20.5 0.5 34.5 2.5q42 13 71 35.5q29 22.5 29 61.5q0 26 -11 42q-11 16 -29.5 25q-18.5 9 -41.5 12q-23 3 -47 3q-29 0 -53 -1q-24 -1 -38 -3l0 -178z" />
-<glyph unicode="&#67;" horiz-adv-x="607" d="M579 30q-33 -23 -87 -33.5q-54 -10.5 -111 -10.5q-67 0 -128.5 20q-61.5 20 -109 64q-47.5 44 -75.5 113q-28 69 -28 167q0 102 32 171.5q32 69.5 82 112q50 42.5 111 61.5q61 19 120 19q65 0 109.5 -8q44.5 -8 73.5 -19v-124q-54 11 -87.5 16q-33.5 5 -84.5 5q-45 0 -81.5 -14.5q-36.5 -14.5 -62.5 -43.5q-26 -29 -40.5 -73q-14.5 -44 -14.5 -103q0 -52 13 -95q13 -43 39 -74q26 -31 66 -48q40 -17 93 -17q49 0 82.5 9q33.5 9 59.5 23z" />
-<glyph unicode="&#68;" horiz-adv-x="702" d="M65 700q22 3 50.5 5q28.5 2 59 3q30.5 1 59.5 1.5q29 0.5 52 0.5q100 0 171.5 -26.5q71.5 -26.5 117 -73.5q45.5 -47 66.5 -112q21 -65 21 -142q0 -70 -20.5 -136q-20.5 -66 -66.5 -117.5q-46 -51.5 -120 -82.5q-74 -31 -182 -31q-17 0 -46.5 1q-29.5 1 -61 2.5q-31.5 1.5 -59 3q-27.5 1.5 -41.5 3.5zM297 580q-23 0 -47 -0.5q-24 -0.5 -37 -2.5l0 -454q5 -1 15.5 -1.5q10.5 -0.5 22 -1q11.5 -0.5 22 -1q10.5 -0.5 15.5 -0.5q64 0 106 20q42 20 66.5 53q24.5 33 34.5 75q10 42 10 87q0 37 -9 77q-9 40 -32.5 73q-23.5 33 -63.5 54.5t-103 21.5z" />
-<glyph unicode="&#69;" horiz-adv-x="566" d="M65 700h451v-130h-303v-152h275v-130h-275v-158h308v-130l-456 0z" />
-<glyph unicode="&#70;" horiz-adv-x="551" d="M65 700h451v-130h-303v-163h279v-130h-279v-277l-148 0z" />
-<glyph unicode="&#71;" horiz-adv-x="661" d="M331 368h286v-314q-23 -18 -50.5 -30.5q-27.5 -12.5 -58 -21q-30.5 -8.5 -62.5 -12.5q-32 -4 -63 -4q-72 0 -134.5 21q-62.5 21 -109 65.5q-46.5 44.5 -73 113.5q-26.5 69 -26.5 164q0 99 32 168.5q32 69.5 83.5 113q51.5 43.5 115 63q63.5 19.5 126.5 19.5q65 0 114.5 -9.5q49.5 -9.5 77.5 -18.5l-31 -123q-27 9 -61 15q-34 6 -85 6q-47 0 -86 -12.5q-39 -12.5 -68 -40.5q-29 -28 -45 -73q-16 -45 -16 -109q0 -62 16 -106q16 -44 43.5 -72.5q27.5 -28.5 63.5 -41.5q36 -13 76 -13q27 0 54.5 6q27.5 6 46.5 19l0 121l-166 16z" />
-<glyph unicode="&#72;" horiz-adv-x="706" d="M493 289h-280v-289h-148v700h148v-281h280v281h148v-700l-148 0z" />
-<glyph unicode="&#73;" horiz-adv-x="388" d="M120 620h-80v80h308v-80h-80v-540h80v-80h-308v80l80 0z" />
-<glyph unicode="&#74;" horiz-adv-x="362" d="M143 700h148v-510q0 -37 -10 -73q-10 -36 -31.5 -65q-21.5 -29 -56.5 -47q-35 -18 -85 -18q-32 0 -68.5 6.5q-36.5 6.5 -64.5 18.5l32 118q29 -13 64 -13q23 0 37 8.5q14 8.5 22 24q8 15.5 10.5 36.5q2.5 21 2.5 45z" />
-<glyph unicode="&#75;" horiz-adv-x="671" d="M252 296h-39v-296h-148v700h148v-308l35 15l210 293h169l-222 -293l-58 -38l60 -40l254 -329l-183 0z" />
-<glyph unicode="&#76;" horiz-adv-x="557" d="M547 0h-482v700h148v-570l334 0z" />
-<glyph unicode="&#77;" horiz-adv-x="868" d="M655 351l16 145h-6l-48 -110l-162 -261h-46l-172 262l-47 108h-6l21 -143v-352h-140v700h134l202 -323l38 -77h5l33 79l193 321h133v-700l-148 0z" />
-<glyph unicode="&#78;" horiz-adv-x="713" d="M254 365l-60 105h-5l16 -106v-364h-140v705h107l289 -373l57 -102h6l-16 103v367h140v-705l-107 0z" />
-<glyph unicode="&#79;" horiz-adv-x="727" d="M40 350q0 86 22 154q22 68 63.5 114.5q41.5 46.5 101.5 71q60 24.5 136 24.5q81 0 141.5 -26.5q60.5 -26.5 101 -74.5q40.5 -48 61 -115q20.5 -67 20.5 -148q0 -86 -22.5 -154q-22.5 -68 -64.5 -114.5q-42 -46.5 -102 -71q-60 -24.5 -135 -24.5q-81 0 -141.5 26.5q-60.5 26.5 -101 74.5q-40.5 48 -60.5 115q-20 67 -20 148zt0 0zM197 350q0 -52 10 -95q10 -43 30 -74q20 -31 51.5 -48q31.5 -17 74.5 -17q79 0 123 54q44 54 44 180q0 50 -9 93q-9 43 -29.5 74.5q-20.5 31.5 -52 49q-31.5 17.5 -76.5 17.5q-78 0 -122 -56t-44 -178z" />
-<glyph unicode="&#80;" horiz-adv-x="620" d="M65 693q45 8 100 12.5q55 4.5 110 4.5q56 0 113 -8.5q57 -8.5 102.5 -34q45.5 -25.5 74.5 -71q29 -45.5 29 -120.5q0 -66 -25 -112.5q-25 -46.5 -66.5 -75.5q-41.5 -29 -94.5 -42.5q-53 -13.5 -109 -13.5q-5 0 -17 0q-12 0 -25.5 0.5q-13.5 0.5 -25.5 1.5q-12 1 -18 2l0 -236h-148zM285 580q-21 0 -40.5 -1q-19.5 -1 -31.5 -4l0 -208q4 -1 13 -2q9 -1 19 -1.5q10 -0.5 18.5 -1q8.5 -0.5 13.5 -0.5q29 0 58 4q29 4 51.5 17q22.5 13 36.5 35.5q14 22.5 14 60.5q0 32 -13 51.5q-13 19.5 -34.5 30.5q-21.5 11 -49 15t-55.5 4z" />
-<glyph unicode="&#81;" horiz-adv-x="727" d="M762 -212q-27 -7 -53 -9.5q-26 -2.5 -52 -2.5q-55 0 -107.5 10q-52.5 10 -101 22.5q-48.5 12.5 -94 22.5q-45.5 10 -85.5 10q-27 0 -51 -6l0 130q31 6 62 6q45 0 90.5 -10q45.5 -10 92.5 -21.5q47 -11.5 96.5 -21.5q49.5 -10 103.5 -10q50 0 99 10zM40 350q0 86 22 154q22 68 63.5 114.5q41.5 46.5 101.5 71q60 24.5 136 24.5q81 0 141.5 -26.5q60.5 -26.5 101 -74.5q40.5 -48 61 -115q20.5 -67 20.5 -148q0 -86 -22.5 -154q-22.5 -68 -64.5 -114.5q-42 -46.5 -102 -71q-60 -24.5 -135 -24.5q-81 0 -141.5 26.5q-60.5 26.5 -101 74.5q-40.5 48 -60.5 115q-20 67 -20 148zt0 0zM197 350q0 -52 10 -95q10 -43 30 -74q20 -31 51.5 -48q31.5 -17 74.5 -17q79 0 123 54q44 54 44 180q0 50 -9 93q-9 43 -29.5 74.5q-20.5 31.5 -52 49q-31.5 17.5 -76.5 17.5q-78 0 -122 -56t-44 -178z" />
-<glyph unicode="&#82;" horiz-adv-x="652" d="M65 693q24 4 52.5 7.5q28.5 3.5 57.5 5.5q29 2 56.5 3q27.5 1 50.5 1q53 0 104.5 -9q51.5 -9 92 -31q40.5 -22 65.5 -60.5q25 -38.5 25 -96.5q0 -86 -42.5 -141.5q-42.5 -55.5 -117.5 -75.5l53 -31l175 -265h-172l-174 271l-78 12v-283h-148zM292 580q-23 0 -44.5 -0.5q-21.5 -0.5 -34.5 -3.5l0 -193h63q63 0 99.5 24q36.5 24 36.5 83q0 44 -31 67t-89 23z" />
-<glyph unicode="&#83;" horiz-adv-x="575" d="M393 192q0 31 -26 49q-26 18 -64.5 33q-38.5 15 -83.5 30q-45 15 -83.5 40q-38.5 25 -64.5 63q-26 38 -26 99q0 52 18.5 91.5q18.5 39.5 52 65q33.5 25.5 81 38.5q47.5 13 104.5 13q66 0 125.5 -11.5q59.5 -11.5 97.5 -32.5l-47 -124q-12 7 -30.5 14.5q-18.5 7.5 -42.5 13q-24 5.5 -51 9q-27 3.5 -55 3.5q-50 0 -77.5 -17.5q-27.5 -17.5 -27.5 -48.5q0 -31 26 -49.5q26 -18.5 64.5 -34q38.5 -15.5 83.5 -31q45 -15.5 83.5 -40q38.5 -24.5 64.5 -61.5q26 -37 26 -95q0 -58 -20 -100q-20 -42 -56.5 -69.5q-36.5 -27.5 -87.5 -40.5q-51 -13 -112 -13q-41 0 -77.5 4.5q-36.5 4.5 -67.5 11q-31 6.5 -54.5 14q-23.5 7.5 -37.5 14.5l49 125q11 -6 30.5 -13q19.5 -7 43.5 -13.5q24 -6.5 51.5 -10.5q27.5 -4 55.5 -4q66 0 100.5 19t34.5 59z" />
-<glyph unicode="&#84;" horiz-adv-x="616" d="M604 570h-222v-570h-148v570h-222v130l592 0z" />
-<glyph unicode="&#85;" horiz-adv-x="679" d="M478 700h140v-449q0 -68 -19.5 -118q-19.5 -50 -55 -82q-35.5 -32 -85 -47.5q-49.5 -15.5 -108.5 -15.5q-141 0 -215 61.5q-74 61.5 -74 184.5v466h148v-439q0 -80 35 -111.5q35 -31.5 104 -31.5q66 0 98 33.5q32 33.5 32 109.5z" />
-<glyph unicode="&#86;" horiz-adv-x="654" d="M315 296l20 -119h5l22 120l146 403h156l-283 -705h-106l-285 705l172 0z" />
-<glyph unicode="&#87;" horiz-adv-x="938" d="M263 315l14 -124h4l16 126l133 383h96l131 -385l16 -124h5l15 126l93 383h152l-210 -705h-100l-136 381l-18 108h-7l-18 -109l-135 -380h-105l-209 705l162 0z" />
-<glyph unicode="&#88;" horiz-adv-x="685" d="M244 356l-212 344h179l117 -199l27 -69l26 69l122 199h161l-220 -337l231 -363h-177l-134 213l-30 72l-29 -72l-134 -213l-161 0z" />
-<glyph unicode="&#89;" horiz-adv-x="644" d="M248 258l-250 442h176l140 -257l16 -75h5l17 77l135 255h159l-250 -441v-259l-148 0z" />
-<glyph unicode="&#90;" horiz-adv-x="584" d="M28 130l321 399l58 41h-379v130h528v-130l-323 -402l-56 -38h379v-130l-528 0z" />
-<glyph unicode="&#91;" horiz-adv-x="350" d="M65 700h254v-117h-120v-696h120v-117l-254 0z" />
-<glyph unicode="&#92;" horiz-adv-x="460" d="M478 -88l-110 -52l-392 800l108 51z" />
-<glyph unicode="&#93;" horiz-adv-x="350" d="M285 -230h-254v117h120v696h-120v117l254 0z" />
-<glyph unicode="&#94;" horiz-adv-x="535" d="M236 705h75l201 -294h-142l-78 119l-23 70l-27 -71l-84 -118l-135 0z" />
-<glyph unicode="&#95;" horiz-adv-x="483" d="M0 -113h483v-113l-483 0z" />
-<glyph unicode="&#96;" horiz-adv-x="350" d="M282 571h-74l-140 128v30l147 0z" />
-<glyph unicode="&#97;" horiz-adv-x="579" d="M67 489q45 20 110.5 33q65.5 13 135.5 13q55 0 92.5 -13q37.5 -13 59.5 -37.5q22 -24.5 31.5 -59q9.5 -34.5 9.5 -76.5q0 -51 -4 -101q-4 -50 -4 -106q0 -38 5 -74q5 -36 16 -69l-114 0l-23 78h-12q-26 -35 -66 -60q-40 -25 -103 -25q-38 0 -69.5 11q-31.5 11 -54 31.5q-22.5 20.5 -35 48.5q-12.5 28 -12.5 61q0 89 59.5 134.5q59.5 45.5 180.5 45.5q28 0 56 -4.5q28 -4.5 39 -6.5q3 21 3 36q0 38 -19 56q-19 18 -71 18q-48 0 -93.5 -11.5q-45.5 -11.5 -80.5 -28.5zM250 104q47 0 75 22q28 22 41 46l0 60q-5 2 -15.5 4q-10.5 2 -23 4q-12.5 2 -25 3q-12.5 1 -22.5 1q-54 0 -80 -19.5q-26 -19.5 -26 -48.5q0 -36 20.5 -54t55.5 -18z" />
-<glyph unicode="&#98;" horiz-adv-x="619" d="M72 700h140v-220h12q24 27 61.5 42.5q37.5 15.5 82.5 15.5q102 0 155.5 -66.5q53.5 -66.5 53.5 -194.5q0 -69 -19.5 -123q-19.5 -54 -55.5 -91q-36 -37 -88 -56.5q-52 -19.5 -117 -19.5q-75 0 -134 10.5q-59 10.5 -91 23.5zM212 119q20 -10 42.5 -12.5q22.5 -2.5 48.5 -2.5q130 0 130 170q0 72 -27 109.5q-27 37.5 -80 37.5q-45 0 -72.5 -21q-27.5 -21 -41.5 -62z" />
-<glyph unicode="&#99;" horiz-adv-x="500" d="M468 32q-34 -23 -81.5 -35q-47.5 -12 -98.5 -12q-68 0 -114.5 20q-46.5 20 -76 57q-29.5 37 -42.5 87.5q-13 50.5 -13 112.5q0 131 64.5 204.5q64.5 73.5 187.5 73.5q60 0 98.5 -9.5q38.5 -9.5 68.5 -24.5l-34 -112q-26 11 -51.5 16.5q-25.5 5.5 -59.5 5.5q-63 0 -96.5 -36.5q-33.5 -36.5 -33.5 -117.5q0 -32 8 -59.5q8 -27.5 25 -48.5q17 -21 43 -33q26 -12 61 -12q42 0 66.5 7.5q24.5 7.5 46.5 20.5z" />
-<glyph unicode="&#100;" horiz-adv-x="628" d="M550 184q0 -42 1 -87q1 -45 9 -98l-97 0l-20 73h-13q-23 -40 -65.5 -63.5q-42.5 -23.5 -101.5 -23.5q-105 0 -163 65.5q-58 65.5 -58 202.5q0 66 16.5 119q16.5 53 49 90q32.5 37 80.5 57q48 20 111 20q35 0 60.5 -5.5q25.5 -5.5 50.5 -13.5l0 180h140zM299 102q47 0 73 21.5q26 21.5 38 61.5l0 210q-18 14 -38.5 20.5q-20.5 6.5 -53.5 6.5q-67 0 -99.5 -39q-32.5 -39 -32.5 -134q0 -66 27.5 -106.5t85.5 -40.5z" />
-<glyph unicode="&#101;" horiz-adv-x="594" d="M521 48q-34 -26 -92.5 -44.5q-58.5 -18.5 -125.5 -18.5q-135 0 -198 74q-63 74 -63 203q0 137 71 207.5q71 70.5 200 70.5q42 0 83 -10.5q41 -10.5 73 -35q32 -24.5 51.5 -66q19.5 -41.5 19.5 -102.5q0 -21 -2.5 -46q-2.5 -25 -8.5 -52l-350 0q5 -68 39.5 -100.5q34.5 -32.5 112.5 -32.5q47 0 84.5 13.5q37.5 13.5 57.5 27.5zM311 430q-62 0 -92 -33.5q-30 -33.5 -35 -85.5l226 0q4 55 -20 87t-79 32z" />
-<glyph unicode="&#102;" horiz-adv-x="370" d="M16 525h79v33q0 46 14 75.5q14 29.5 38 47q24 17.5 55.5 24.5q31.5 7 65.5 7q48 0 83.5 -4.5q35.5 -4.5 66.5 -14.5l-26 -109q-25 8 -45 11q-20 3 -43 3q-43 0 -56 -16q-13 -16 -13 -57l128 0v-117h-128v-408h-140v408l-79 0z" />
-<glyph unicode="&#103;" horiz-adv-x="619" d="M547 20q0 -116 -66 -171q-66 -55 -187 -55q-78 0 -125.5 10.5q-47.5 10.5 -73.5 23.5q13 40 19.5 63.5q6.5 23.5 9.5 35.5q3 12 4 15q1 3 1 3q24 -12 58 -24.5q34 -12.5 83 -12.5q41 0 68 8q27 8 43 23.5q16 15.5 22.5 37.5q6.5 22 6.5 49v39h-12q-20 -29 -55 -41q-35 -12 -87 -12q-107 0 -160.5 59q-53.5 59 -53.5 190q0 138 70.5 208q70.5 70 209.5 70q73 0 130.5 -9.5q57.5 -9.5 94.5 -21.5zM289 121q46 0 75.5 17q29.5 17 42.5 42l0 226q-37 16 -94 16q-61 0 -94 -36q-33 -36 -33 -119q0 -76 28 -111t75 -35z" />
-<glyph unicode="&#104;" horiz-adv-x="638" d="M426 0v289q0 68 -20.5 97.5q-20.5 29.5 -75.5 29.5q-40 0 -73.5 -25.5q-33.5 -25.5 -44.5 -67.5l0 -323h-140v700h140v-239h12q27 35 67.5 57q40.5 22 102.5 22q43 0 75 -10.5q32 -10.5 53.5 -36q21.5 -25.5 32.5 -68q11 -42.5 11 -105.5l0 -320z" />
-<glyph unicode="&#105;" horiz-adv-x="317" d="M89 525h140v-525h-140zM68 656q0 32 23 53.5q23 21.5 65 21.5q43 0 68 -22q25 -22 25 -53q0 -29 -25 -50q-25 -21 -68 -21q-42 0 -65 21t-23 50z" />
-<glyph unicode="&#106;" horiz-adv-x="317" d="M91 525h140v-549q0 -95 -39 -146q-39 -51 -126 -51q-34 0 -72 7l0 117q31 -3 50 4q19 7 29.5 22q10.5 15 14 37q3.5 22 3.5 51zM69 656q0 32 23 53.5q23 21.5 65 21.5q43 0 68 -22q25 -22 25 -53q0 -29 -25 -50q-25 -21 -68 -21q-42 0 -65 21t-23 50z" />
-<glyph unicode="&#107;" horiz-adv-x="564" d="M260 218h-48v-218h-140v700h140v-402l44 19l131 208h154l-134 -191h1l-64 -46l67 -44h-1l154 -244l-162 0z" />
-<glyph unicode="&#108;" horiz-adv-x="337" d="M215 184q0 -76 49 -76q14 0 26.5 2.5q12.5 2.5 29.5 8.5l17 -109q-20 -9 -56.5 -17.5q-36.5 -8.5 -75.5 -8.5q-63 0 -96.5 28q-33.5 28 -33.5 92v596l140 0z" />
-<glyph unicode="&#109;" horiz-adv-x="940" d="M400 0v274q0 76 -16 109q-16 33 -66 33q-42 0 -67 -20.5q-25 -20.5 -39 -53.5l0 -342h-140v525h108l16 -73h13q13 17 30 33q17 16 37.5 28q20.5 12 46 19.5q25.5 7.5 57.5 7.5q53 0 88.5 -23.5q35.5 -23.5 56.5 -78.5q29 48 70.5 75q41.5 27 96.5 27q48 0 81.5 -11q33.5 -11 54.5 -38q21 -27 30.5 -73q9.5 -46 9.5 -115v-303h-140v281q0 33 -3 58q-3 25 -12 42.5q-9 17.5 -25.5 26q-16.5 8.5 -43.5 8.5q-42 0 -67.5 -21.5q-25.5 -21.5 -36.5 -59.5l0 -335z" />
-<glyph unicode="&#110;" horiz-adv-x="638" d="M426 0v288q0 68 -21 98q-21 30 -74 30q-45 0 -76.5 -24.5q-31.5 -24.5 -43.5 -62.5q0 -82 0.5 -164.5q0.5 -82.5 0.5 -164.5l-140 0v525h110l15 -75h15q26 37 69 63.5q43 26.5 112 26.5q42 0 74.5 -10.5q32.5 -10.5 54 -36q21.5 -25.5 33 -68.5q11.5 -43 11.5 -108l0 -317z" />
-<glyph unicode="&#111;" horiz-adv-x="616" d="M42 262q0 130 69 204q69 74 197 74q67 0 117 -21q50 -21 83 -58.5q33 -37.5 49.5 -88q16.5 -50.5 16.5 -110.5q0 -64 -18 -115.5q-18 -51.5 -52 -87.5q-34 -36 -83.5 -55q-49.5 -19 -112.5 -19q-68 0 -118 21q-50 21 -83 58.5q-33 37.5 -49 88q-16 50.5 -16 109.5zt0 0zM186 262q0 -33 7 -62q7 -29 21.5 -50.5q14.5 -21.5 37.5 -34.5q23 -13 56 -13q122 0 122 160q0 35 -6.5 64.5q-6.5 29.5 -21 51q-14.5 21.5 -38 33.5q-23.5 12 -56.5 12q-57 0 -89.5 -38t-32.5 -123z" />
-<glyph unicode="&#112;" horiz-adv-x="623" d="M72 525h100l17 -65h12q31 40 72 60q41 20 96 20q106 0 159 -63.5q53 -63.5 53 -201.5q0 -66 -17 -119.5q-17 -53.5 -50 -92q-33 -38.5 -81.5 -59q-48.5 -20.5 -111.5 -20.5q-34 0 -59 6.5q-25 6.5 -50 17.5l0 -207h-140zM326 423q-48 0 -74 -21.5q-26 -21.5 -40 -66.5l0 -204q17 -14 38 -22q21 -8 53 -8q68 0 101 42.5q33 42.5 33 135.5q0 67 -25.5 105.5t-85.5 38.5z" />
-<glyph unicode="&#113;" horiz-adv-x="619" d="M547 -199h-140v249h-12q-20 -31 -52.5 -48q-32.5 -17 -85.5 -17q-105 0 -160 66.5q-55 66.5 -55 199.5q0 141 76 214.5q76 73.5 219 73.5q30 0 60.5 -3q30.5 -3 58 -7.5q27.5 -4.5 51 -10q23.5 -5.5 40.5 -11.5zM298 102q47 0 72 20q25 20 37 59l0 226q-18 8 -41 11.5q-23 3.5 -52 3.5q-66 0 -97 -45q-31 -45 -31 -120q0 -75 29 -115t83 -40z" />
-<glyph unicode="&#114;" horiz-adv-x="406" d="M382 397q-30 10 -60 10q-44 0 -72.5 -21q-28.5 -21 -37.5 -53l0 -333h-140v525h110l15 -73h13q20 41 53.5 63q33.5 22 76.5 22q27 0 62 -11z" />
-<glyph unicode="&#115;" horiz-adv-x="483" d="M71 136q14 -7 32.5 -14q18.5 -7 40 -13q21.5 -6 44 -10q22.5 -4 45.5 -4q35 0 54.5 11q19.5 11 19.5 41q0 24 -26 35.5q-26 11.5 -64 22.5q-28 8 -58.5 19q-30.5 11 -56 29.5q-25.5 18.5 -42 48.5q-16.5 30 -16.5 76q0 79 49 120.5q49 41.5 141 41.5q60 0 112.5 -10.5q52.5 -10.5 84.5 -24.5l-29 -106q-26 10 -66.5 20.5q-40.5 10.5 -82.5 10.5q-35 0 -52 -10.5q-17 -10.5 -17 -36.5q0 -23 26.5 -34.5q26.5 -11.5 64.5 -22.5q28 -8 58.5 -18.5q30.5 -10.5 55.5 -28.5q25 -18 41.5 -46.5q16.5 -28.5 16.5 -71.5q0 -84 -54.5 -130q-54.5 -46 -163.5 -46q-59 0 -110 10.5q-51 10.5 -83 30.5z" />
-<glyph unicode="&#116;" horiz-adv-x="404" d="M8 525h80v72l140 37v-109h141v-117h-141v-182q0 -63 12.5 -90.5q12.5 -27.5 49.5 -27.5q23 0 39 3.5q16 3.5 34 11.5l29 -105q-32 -14 -73.5 -24q-41.5 -10 -80.5 -10q-78 0 -114 38.5q-36 38.5 -36 123.5v262l-80 0z" />
-<glyph unicode="&#117;" horiz-adv-x="642" d="M212 525v-291q0 -65 18 -95q18 -30 69 -30q44 0 74 23q30 23 44 58l0 335h140v-365q0 -42 4.5 -84q4.5 -42 12.5 -76l-103 0l-27 82h-11q-26 -42 -74 -69.5q-48 -27.5 -110 -27.5q-43 0 -76 11q-33 11 -55.5 36.5q-22.5 25.5 -34 67.5q-11.5 42 -11.5 104l0 321z" />
-<glyph unicode="&#118;" horiz-adv-x="546" d="M257 253l21 -81h16l15 83l98 270h151l-240 -530h-80l-250 530l163 0z" />
-<glyph unicode="&#119;" horiz-adv-x="825" d="M477 525q27 -66 53 -133q26 -67 53 -133l20 -88h15l15 89q18 67 37 132.5q19 65.5 37 132.5l128 0l-179 -530h-101q-27 69 -58 144.5q-31 75.5 -58 144.5l-14 68h-18q-3 -17 -7 -34.5q-4 -17.5 -7 -34.5l-109 -288h-106l-184 530h152l84 -259l14 -97h15l20 98l95 258z" />
-<glyph unicode="&#120;" horiz-adv-x="587" d="M192 269l-172 256h170l71 -102l-1 1l41 -93l40 93l-1 -1l76 102h154l-173 -252l184 -273h-166l-85 118l1 -1l-42 92l-44 -92l1 1l-86 -118l-154 0z" />
-<glyph unicode="&#121;" horiz-adv-x="541" d="M264 234l22 -84h10l19 84l89 291h143l-174 -475q-22 -59 -41.5 -106q-19.5 -47 -42.5 -80q-23 -33 -51.5 -50.5q-28.5 -17.5 -67.5 -17.5q-26 0 -49.5 4.5q-23.5 4.5 -40.5 13.5l29 108q15 -5 31 -5q14 0 27 3q13 3 24 11.5q11 8.5 20.5 24q9.5 15.5 16.5 41.5l-240 528l169 0z" />
-<glyph unicode="&#122;" horiz-adv-x="526" d="M42 119l221 238h-1l65 51h-285v117h442v-119l-219 -241h1l-66 -48h284v-117l-442 0z" />
-<glyph unicode="&#123;" horiz-adv-x="403" d="M135 93q0 51 -22.5 70q-22.5 19 -64.5 19l0 106q42 0 64.5 20.5q22.5 20.5 22.5 64.5v203q0 54 27.5 89.5q27.5 35.5 87.5 35.5h130v-117h-55q-29 0 -42.5 -14.5q-13.5 -14.5 -13.5 -46.5v-187q0 -44 -23.5 -66.5q-23.5 -22.5 -52.5 -27.5l0 -10q29 -4 52.5 -30q23.5 -26 23.5 -68v-186q0 -31 13.5 -46q13.5 -15 43.5 -15h54v-117h-130q-56 0 -85.5 32.5q-29.5 32.5 -29.5 91.5z" />
-<glyph unicode="&#124;" horiz-adv-x="246" d="M65 700h116v-830l-116 0z" />
-<glyph unicode="&#125;" horiz-adv-x="403" d="M268 378q0 -51 22.5 -70q22.5 -19 64.5 -19l0 -106q-42 0 -64.5 -20.5q-22.5 -20.5 -22.5 -64.5v-202q0 -54 -29.5 -90q-29.5 -36 -89.5 -36h-126v117h54q29 0 43 14.5q14 14.5 14 46.5v187q0 44 23 66.5q23 22.5 53 27.5l0 10q-29 4 -52.5 30q-23.5 26 -23.5 68v186q0 31 -13.5 46q-13.5 15 -44.5 15h-53v117h129q57 0 86.5 -33q29.5 -33 29.5 -92z" />
-<glyph unicode="&#126;" horiz-adv-x="571" d="M30 380q51 38 91.5 53q40.5 15 75.5 15q31 0 58 -8.5q27 -8.5 52 -18.5q25 -10 49 -18.5q24 -8.5 50 -8.5q20 0 40.5 6.5q20.5 6.5 43.5 23.5l51 -108q-39 -28 -71 -38.5q-32 -10.5 -60 -10.5q-30 0 -56 9q-26 9 -51 20.5q-25 11.5 -50 20.5q-25 9 -53 9q-26 0 -56.5 -11q-30.5 -11 -66.5 -40z" />
-<glyph unicode="&#160;" horiz-adv-x="276" />
-<glyph unicode="&#161;" horiz-adv-x="313" d="M205 -200h-146v327l28 161h89l29 -161zM47 432q0 37 24 58q24 21 63 21q40 0 64 -21q24 -21 24 -58q0 -35 -24 -57q-24 -22 -64 -22q-39 0 -63 22t-24 57z" />
-<glyph unicode="&#162;" horiz-adv-x="591" d="M406 113q25 4 44 11q19 7 34 15l34 -107q-20 -13 -47.5 -22.5q-27.5 -9.5 -59.5 -15.5l0 -94h-130v89q-56 7 -94.5 28.5q-38.5 21.5 -62.5 55q-24 33.5 -35 78.5q-11 45 -11 99q0 112 51.5 178.5q51.5 66.5 151.5 81.5l0 90h130v-90q31 -4 55 -11q24 -7 44 -16l-34 -115q-16 6 -33.5 11q-17.5 5 -36.5 7zM305 384q-44 -10 -65.5 -42q-21.5 -32 -21.5 -92q0 -45 20 -81.5q20 -36.5 67 -50.5z" />
-<glyph unicode="&#163;" horiz-adv-x="591" d="M44 396h74q-14 23 -24 51q-10 28 -10 70q0 49 18 86q18 37 50 62q32 25 76.5 37q44.5 12 97.5 12q66 0 120.5 -12.5q54.5 -12.5 94.5 -29.5l-46 -127q-20 11 -59 24q-39 13 -93 13q-52 0 -81.5 -21q-29.5 -21 -29.5 -64q0 -32 14 -55q14 -23 31 -46l150 0v-114h-101q0 -5 0.5 -11q0.5 -6 0.5 -12q0 -31 -11 -63.5q-11 -32.5 -35 -54.5l-41 -28v-5l67 16h250v-124h-513v124h2q69 2 103 35q34 33 34 81q0 20 -5 42l-134 0z" />
-<glyph unicode="&#164;" horiz-adv-x="591" d="M94 625l78 -77l18 -37q20 15 47.5 22q27.5 7 57.5 7q29 0 57.5 -7.5q28.5 -7.5 48.5 -21.5l19 37l78 77l80 -84l-77 -78l-37 -15q14 -21 20 -47.5q6 -26.5 6 -55.5q0 -30 -6.5 -56.5q-6.5 -26.5 -19.5 -44.5l37 -16l77 -78l-80 -82l-78 77l-17 36q-19 -14 -49 -21.5q-30 -7.5 -59 -7.5q-30 0 -57.5 7.5q-27.5 7.5 -47.5 21.5l-18 -36l-78 -77l-80 82l77 78l36 18q-11 20 -18 44.5q-7 24.5 -7 54.5q0 29 7.5 54q7.5 25 19.5 48l-38 17l-77 78zM216 346q0 -36 22.5 -60q22.5 -24 57.5 -24q36 0 58 24q22 24 22 60q0 35 -22 59.5q-22 24.5 -58 24.5q-35 0 -57.5 -24.5t-22.5 -59.5z" />
-<glyph unicode="&#165;" horiz-adv-x="591" d="M80 338h97l-205 362h176l140 -257l16 -75h5l17 77l135 255h159l-205 -362h97v-94h-142v-58h142v-94h-142v-92h-148v92h-142v94h142v58l-142 0z" />
-<glyph unicode="&#166;" horiz-adv-x="246" d="M65 213h116v-343h-116zM181 357h-116v343l116 0z" />
-<glyph unicode="&#167;" horiz-adv-x="576" d="M53 353q0 31 16.5 60.5q16.5 29.5 43.5 52.5l45 13q-29 16 -46.5 41q-17.5 25 -17.5 65q0 57 47 93q47 36 142 36q65 0 120 -10q55 -10 85 -24l-35 -113q-24 12 -65.5 21q-41.5 9 -81.5 9q-40 0 -56 -10q-16 -10 -16 -26q0 -18 21.5 -27q21.5 -9 53.5 -16.5q32 -7.5 69 -16.5q37 -9 69 -27q32 -18 53.5 -48q21.5 -30 21.5 -79q0 -31 -15.5 -59.5q-15.5 -28.5 -43.5 -51.5l-49 -14q29 -16 48.5 -41q19.5 -25 19.5 -66q0 -63 -52 -96q-52 -33 -140 -33q-75 0 -125 15q-50 15 -81 32l38 106q25 -12 60.5 -24q35.5 -12 84.5 -12q40 0 57.5 8.5q17.5 8.5 17.5 28.5q0 19 -21.5 28.5q-21.5 9.5 -53.5 17q-32 7.5 -69.5 16.5q-37.5 9 -69.5 26.5q-32 17.5 -53.5 46.5q-21.5 29 -21.5 78zt0 0zM382 345q0 18 -9 30q-9 12 -26.5 21q-17.5 9 -43 16.5q-25.5 7.5 -57.5 16.5q-21 -12 -37 -31.5q-16 -19.5 -16 -42.5q0 -17 9 -29q9 -12 26 -21q17 -9 41.5 -16.5q24.5 -7.5 56.5 -15.5q24 12 40 31.5t16 40.5z" />
-<glyph unicode="&#168;" horiz-adv-x="535" d="M67 657q0 35 21.5 56q21.5 21 55.5 21q34 0 54.5 -21q20.5 -21 20.5 -56q0 -30 -20.5 -51q-20.5 -21 -54.5 -21q-34 0 -55.5 21q-21.5 21 -21.5 51zt0 0zM320 657q0 35 20.5 56q20.5 21 54.5 21q35 0 55.5 -21q20.5 -21 20.5 -56q0 -30 -20.5 -51q-20.5 -21 -55.5 -21q-34 0 -54.5 21t-20.5 51z" />
-<glyph unicode="&#169;" horiz-adv-x="890" d="M58 286q0 88 30 159.5q30 71.5 82 122q52 50.5 123 77.5q71 27 152 27q81 0 151.5 -27q70.5 -27 122.5 -77.5q52 -50.5 82 -122q30 -71.5 30 -159.5q0 -89 -30 -160.5q-30 -71.5 -82 -121.5q-52 -50 -122.5 -77.5q-70.5 -27.5 -151.5 -27.5q-89 0 -161 27.5q-72 27.5 -122 77.5q-50 50 -77 121.5q-27 71.5 -27 160.5zt0 0zM165 286q0 -66 21 -119q21 -53 58.5 -89.5q37.5 -36.5 88.5 -56.5q51 -20 112 -20q61 0 112 20q51 20 88.5 56.5q37.5 36.5 58.5 89.5q21 53 21 119q0 66 -21 118.5q-21 52.5 -58.5 89q-37.5 36.5 -88.5 56.5q-51 20 -112 20q-61 0 -112 -20q-51 -20 -88.5 -56.5q-37.5 -36.5 -58.5 -89q-21 -52.5 -21 -118.5zt0 0zM579 117q-23 -16 -59.5 -25q-36.5 -9 -77.5 -9q-86 0 -131.5 54.5q-45.5 54.5 -45.5 148.5q0 97 48.5 150q48.5 53 128.5 53q40 0 70.5 -9.5q30.5 -9.5 59.5 -24.5l-36 -96q-18 9 -33.5 12q-15.5 3 -29.5 3q-29 0 -46.5 -19q-17.5 -19 -17.5 -69q0 -89 72 -89q19 0 34 3.5q15 3.5 32 12.5z" />
-<glyph unicode="&#170;" horiz-adv-x="479" d="M78 672q29 15 80 25.5q51 10.5 116 10.5q41 0 68.5 -7q27.5 -7 44 -21q16.5 -14 23.5 -35q7 -21 7 -50q0 -34 -1.5 -67q-1.5 -33 -1.5 -64q0 -23 1.5 -44q1.5 -21 6.5 -40l-113 0l-13 47h-4q-14 -17 -40 -34q-26 -17 -73 -17q-55 0 -88.5 28q-33.5 28 -33.5 72q0 31 16 52q16 21 44 34q28 13 65.5 19q37.5 6 80.5 6q8 0 14.5 -0.5q6.5 -0.5 14.5 -0.5q2 23 -7.5 34q-9.5 11 -47.5 11q-45 0 -80 -8.5q-35 -8.5 -56 -16.5zM222 457q18 0 29.5 3.5q11.5 3.5 19.5 8.5q8 5 12.5 11q4.5 6 8.5 12l0 32q-9 1 -18 1.5q-9 0.5 -17 0.5q-33 0 -53.5 -8.5q-20.5 -8.5 -20.5 -28.5q0 -15 11.5 -23.5t27.5 -8.5z" />
-<glyph unicode="&#171;" horiz-adv-x="530" d="M242 261l168 215l74 -63l-85 -114l-50 -39l50 -35l91 -113l-74 -63zM31 259l174 230l83 -70l-91 -118l-52 -41l52 -36l98 -116l-84 -70z" />
-<glyph unicode="&#172;" horiz-adv-x="571" d="M49 416h481v-233h-125v113l-356 0z" />
-<glyph unicode="&#173;" horiz-adv-x="391" d="M59 350h273v-124l-273 0z" />
-<glyph unicode="&#174;" horiz-adv-x="735" d="M64 435q0 72 24.5 128.5q24.5 56.5 66 95.5q41.5 39 96.5 59q55 20 117 20q63 0 118 -20q55 -20 96.5 -59q41.5 -39 65 -95.5q23.5 -56.5 23.5 -128.5q0 -72 -24.5 -128.5q-24.5 -56.5 -65.5 -95.5q-41 -39 -96.5 -59q-55.5 -20 -116.5 -20q-63 0 -118.5 20q-55.5 20 -97 59q-41.5 39 -65 95.5q-23.5 56.5 -23.5 128.5zt0 0zM167 435q0 -51 16.5 -89.5q16.5 -38.5 44 -64q27.5 -25.5 64 -38q36.5 -12.5 76.5 -12.5q42 0 78.5 12.5q36.5 12.5 63.5 37.5q27 25 42.5 63.5q15.5 38.5 15.5 90.5q0 51 -16 89.5q-16 38.5 -43.5 64q-27.5 25.5 -64 38q-36.5 12.5 -76.5 12.5q-45 0 -82 -14q-37 -14 -63.5 -40.5q-26.5 -26.5 -41 -64.5q-14.5 -38 -14.5 -85zt0 0zM258 574q17 5 48 8q31 3 58 3q45 0 77.5 -19q32.5 -19 32.5 -65q0 -33 -22 -51.5q-22 -18.5 -54 -20.5l29 -15l69 -116h-65l-67 111l-51 16v-127h-55zM353 537q-11 0 -22 -0.5q-11 -0.5 -18 -3.5l0 -76h37q31 0 48 9.5q17 9.5 17 32.5q0 18 -16.5 28t-45.5 10z" />
-<glyph unicode="&#175;" horiz-adv-x="471" d="M60 679h351v-95l-351 0z" />
-<glyph unicode="&#176;" horiz-adv-x="475" d="M58 545q0 37 14.5 68q14.5 31 39 53.5q24.5 22.5 57 35q32.5 12.5 67.5 12.5q37 0 69.5 -11.5q32.5 -11.5 57.5 -33.5q25 -22 39.5 -53q14.5 -31 14.5 -71q0 -39 -14.5 -69.5q-14.5 -30.5 -39.5 -52q-25 -21.5 -57.5 -33q-32.5 -11.5 -69.5 -11.5q-35 0 -67.5 11.5q-32.5 11.5 -57 33q-24.5 21.5 -39 52q-14.5 30.5 -14.5 69.5zt0 0zM166 546q0 -31 21 -47.5q21 -16.5 50 -16.5q29 0 50.5 16.5q21.5 16.5 21.5 47.5q0 31 -21.5 48q-21.5 17 -50.5 17q-29 0 -50 -17.5t-21 -47.5z" />
-<glyph unicode="&#177;" horiz-adv-x="571" d="M47 528h176v174h125v-174h176v-120h-176v-110h-125v110h-176zM47 253h477v-120l-477 0z" />
-<glyph unicode="&#178;" horiz-adv-x="442" d="M376 677q0 -29 -8.5 -53q-8.5 -24 -22.5 -44q-14 -20 -33.5 -38q-19.5 -18 -41.5 -36l-52 -24v-5l64 12h111v-109h-339v78q28 17 62 40.5q34 23.5 64 49q30 25.5 50 52.5q20 27 20 52q0 26 -15.5 35.5q-15.5 9.5 -45.5 9.5q-29 0 -55 -9.5q-26 -9.5 -46 -20.5l-38 98q38 21 81.5 31.5q43.5 10.5 82.5 10.5q77 0 119.5 -33.5t42.5 -96.5z" />
-<glyph unicode="&#179;" horiz-adv-x="442" d="M181 474q49 0 68.5 12.5q19.5 12.5 19.5 34.5q0 21 -20.5 33.5q-20.5 12.5 -76.5 12.5h-43v40l77 74l47 24l-63 -6h-125v101h308v-67l-94 -86l-37 -18v-5l32 3q57 -2 89 -31.5q32 -29.5 32 -83.5q0 -36 -15.5 -62.5q-15.5 -26.5 -42.5 -43.5q-27 -17 -62.5 -25q-35.5 -8 -75.5 -8q-42 0 -78 7q-36 7 -62 18l25 95q45 -19 97 -19z" />
-<glyph unicode="&#180;" horiz-adv-x="337" d="M139 729h142v-29l-126 -129l-76 0z" />
-<glyph unicode="&#181;" horiz-adv-x="617" d="M196 500v-266q0 -63 23 -96q23 -33 78 -33q51 0 81 24.5q30 24.5 44 69.5l0 301h140v-337q0 -41 3 -82.5q3 -41.5 14 -80.5l-104 0l-35 79h-4q-19 -36 -55 -63.5q-36 -27.5 -94 -27.5q-42 0 -64.5 14.5q-22.5 14.5 -43.5 37.5l-5 0l23 -107v-133h-141l0 700z" />
-<glyph unicode="&#182;" horiz-adv-x="573" d="M393 700h116v-830h-116zM192 292q-36 0 -66 17.5q-30 17.5 -52 46q-22 28.5 -34 65.5q-12 37 -12 76q0 39 14 75.5q14 36.5 40.5 65q26.5 28.5 63 45.5q36.5 17 81.5 17h81v-830l-116 0z" />
-<glyph unicode="&#183;" horiz-adv-x="271" d="M48 318q0 37 24 58q24 21 63 21q40 0 64 -21q24 -21 24 -58q0 -35 -24 -57q-24 -22 -64 -22q-39 0 -63 22t-24 57z" />
-<glyph unicode="&#184;" horiz-adv-x="367" d="M199 -52q48 -3 75.5 -21q27.5 -18 27.5 -56q0 -24 -12.5 -41.5q-12.5 -17.5 -34.5 -29.5q-22 -12 -51 -18q-29 -6 -63 -6q-18 0 -36 1q-18 1 -37 5l10 47q31 -2 50 0.5q19 2.5 29.5 7q10.5 4.5 14 11q3.5 6.5 3.5 14.5q0 17 -23 26q-23 9 -74 11l62 95l87 0z" />
-<glyph unicode="&#185;" horiz-adv-x="442" d="M75 488h107v150l10 48l-33 -33l-62 -41l-55 83l171 112h93v-319h96v-108l-327 0z" />
-<glyph unicode="&#186;" horiz-adv-x="476" d="M48 542q0 45 14 77q14 32 39.5 52.5q25.5 20.5 60 30.5q34.5 10 76.5 10q41 0 76 -9q35 -9 60.5 -29.5q25.5 -20.5 39.5 -53q14 -32.5 14 -78.5q0 -47 -14 -79q-14 -32 -39.5 -52.5q-25.5 -20.5 -60.5 -29.5q-35 -9 -76 -9q-42 0 -76.5 9q-34.5 9 -60 29.5q-25.5 20.5 -39.5 52.5q-14 32 -14 79zt0 0zM175 542q0 -39 14 -61q14 -22 49 -22q34 0 48 19q14 19 14 64q0 45 -14 64q-14 19 -48 19q-34 0 -48.5 -19t-14.5 -64z" />
-<glyph unicode="&#187;" horiz-adv-x="530" d="M288 266l-168 -215l-75 64l85 113l50 39l-50 35l-90 113l73 63zM499 268l-174 -230l-83 71l91 117l52 41l-52 36l-98 116l83 70z" />
-<glyph unicode="&#188;" horiz-adv-x="949" d="M658 715l91 -57l-468 -672l-90 61zM889 75h-83v-75h-108v75h-226v72l238 281h96v-259h83zM698 250l5 54h-5l-23 -48l-51 -63l-39 -33l58 9h55zM169 538l10 47l-33 -32l-63 -41l-54 83l171 112h93v-427l-124 0z" />
-<glyph unicode="&#189;" horiz-adv-x="975" d="M658 715l91 -57l-468 -672l-90 61zM908 297q0 -29 -8.5 -53q-8.5 -24 -22.5 -44q-14 -20 -33.5 -38q-19.5 -18 -41.5 -36l-52 -24v-5l64 12h111v-109h-339v78q28 17 62 40.5q34 23.5 64 49q30 25.5 50 52.5q20 27 20 52q0 26 -15.5 35.5q-15.5 9.5 -45.5 9.5q-29 0 -55 -9.5q-26 -9.5 -46 -20.5l-38 98q38 21 81.5 31.5q43.5 10.5 82.5 10.5q77 0 119.5 -33.5q42.5 -33.5 42.5 -96.5zt0 0zM169 538l10 47l-33 -32l-63 -41l-54 83l171 112h93v-427l-124 0z" />
-<glyph unicode="&#190;" horiz-adv-x="977" d="M686 715l91 -57l-468 -672l-90 61zM917 75h-83v-75h-108v75h-226v72l238 281h96v-259h83zM726 250l5 54h-5l-23 -48l-51 -63l-39 -33l58 9h55zM163 374q49 0 68.5 12.5q19.5 12.5 19.5 34.5q0 21 -20.5 33.5q-20.5 12.5 -76.5 12.5h-43v40l77 74l47 24l-63 -6h-125v101h308v-67l-94 -86l-37 -18v-5l32 3q57 -2 89 -31.5q32 -29.5 32 -83.5q0 -36 -15.5 -62.5q-15.5 -26.5 -42.5 -43.5q-27 -17 -62.5 -25q-35.5 -8 -75.5 -8q-42 0 -78 7q-36 7 -62 18l25 95q45 -19 97 -19z" />
-<glyph unicode="&#191;" horiz-adv-x="491" d="M344 290q6 -54 -5 -91q-11 -37 -30.5 -62.5q-19.5 -25.5 -43.5 -44q-24 -18.5 -45.5 -35q-21.5 -16.5 -36 -34.5q-14.5 -18 -14.5 -44q0 -35 21.5 -54.5q21.5 -19.5 74.5 -19.5q17 0 37 4q20 4 40 11q20 7 38.5 16q18.5 9 32.5 19l54 -103q-41 -27 -94.5 -45.5q-53.5 -18.5 -130.5 -18.5q-102 0 -159.5 45.5q-57.5 45.5 -57.5 123.5q0 54 14.5 87.5q14.5 33.5 36.5 56.5q22 23 48 39.5q26 16.5 48 35.5q22 19 37 45.5q15 26.5 15 68.5zM193 433q0 37 24 58q24 21 63 21q40 0 64 -21q24 -21 24 -58q0 -35 -24 -57q-24 -22 -64 -22q-39 0 -63 22t-24 57z" />
-<glyph unicode="&#192;" horiz-adv-x="658" d="M441 149h-236l-57 -149h-148l274 705h109l275 -705h-157zM246 266h160l-54 146l-24 111h-5l-24 -112zM414 752h-114l-172 87v31l173 0z" />
-<glyph unicode="&#193;" horiz-adv-x="658" d="M441 149h-236l-57 -149h-148l274 705h109l275 -705h-157zM246 266h160l-54 146l-24 111h-5l-24 -112zM361 870h172v-31l-174 -87l-112 0z" />
-<glyph unicode="&#194;" horiz-adv-x="658" d="M441 149h-236l-57 -149h-148l274 705h109l275 -705h-157zM246 266h160l-54 146l-24 111h-5l-24 -112zM279 870h105l138 -92v-41h-108l-62 40l-22 34l-24 -33l-66 -41h-106l0 42z" />
-<glyph unicode="&#195;" horiz-adv-x="658" d="M441 149h-236l-57 -149h-148l274 705h109l275 -705h-157zM246 266h160l-54 146l-24 111h-5l-24 -112zM125 804q33 35 64.5 48q31.5 13 62.5 13q24 0 48 -5.5q24 -5.5 46.5 -12.5q22.5 -7 44 -12.5q21.5 -5.5 41.5 -5.5q17 0 33 5q16 5 31 19l25 -72q-29 -26 -57 -36q-28 -10 -55 -10q-24 0 -47.5 5.5q-23.5 5.5 -46 12.5q-22.5 7 -44 12.5q-21.5 5.5 -42.5 5.5q-21 0 -41 -7.5q-20 -7.5 -40 -27.5z" />
-<glyph unicode="&#196;" horiz-adv-x="658" d="M441 149h-236l-57 -149h-148l274 705h109l275 -705h-157zM246 266h160l-54 146l-24 111h-5l-24 -112zM131 798q0 27 19.5 43.5q19.5 16.5 63.5 16.5q42 0 61.5 -16.5q19.5 -16.5 19.5 -43.5q0 -26 -19.5 -41.5q-19.5 -15.5 -61.5 -15.5q-44 0 -63.5 15.5q-19.5 15.5 -19.5 41.5zt0 0zM364 798q0 27 19.5 43.5q19.5 16.5 61.5 16.5q44 0 63.5 -16.5q19.5 -16.5 19.5 -43.5q0 -26 -19.5 -41.5q-19.5 -15.5 -63.5 -15.5q-42 0 -61.5 15.5t-19.5 41.5z" />
-<glyph unicode="&#197;" horiz-adv-x="658" d="M191 772q0 18 6 34.5q6 16.5 21.5 29q15.5 12.5 42.5 19.5q27 7 68 7q77 0 108 -24q31 -24 31 -66q0 -29 -17 -51q-17 -22 -62 -32l269 -689h-157l-60 149h-236l-57 -149h-148l268 689q-43 9 -60 31q-17 22 -17 52zt0 0zM246 266h160l-54 146l-24 111h-5l-24 -112zM281 772q0 -14 11 -22q11 -8 37 -8q28 0 38.5 7.5q10.5 7.5 10.5 22.5q0 16 -11.5 24q-11.5 8 -37.5 8q-48 0 -48 -32z" />
-<glyph unicode="&#198;" horiz-adv-x="935" d="M427 530l-39 -106l-87 -139h133v245zM434 165h-202l-106 -165h-158l461 700h456v-130h-303v-152h276v-130h-276v-158h308v-130l-456 0z" />
-<glyph unicode="&#199;" horiz-adv-x="607" d="M579 30q-27 -19 -68 -29q-41 -10 -87 -13l-24 -40q48 -3 75.5 -21q27.5 -18 27.5 -56q0 -24 -12.5 -41.5q-12.5 -17.5 -34.5 -29.5q-22 -12 -51 -18q-29 -6 -63 -6q-18 0 -36 1q-18 1 -37 5l10 47q31 -2 50 0.5q19 2.5 29.5 7q10.5 4.5 14 11q3.5 6.5 3.5 14.5q0 17 -23 26q-23 9 -74 11l58 90q-60 6 -114 29q-54 23 -94.5 67q-40.5 44 -64.5 109.5q-24 65.5 -24 155.5q0 102 32 171.5q32 69.5 82 112q50 42.5 111 61.5q61 19 120 19q65 0 109.5 -8q44.5 -8 73.5 -19v-124q-54 11 -87.5 16q-33.5 5 -84.5 5q-45 0 -81.5 -14.5q-36.5 -14.5 -62.5 -43.5q-26 -29 -40.5 -73q-14.5 -44 -14.5 -103q0 -52 13 -95q13 -43 39 -74q26 -31 66 -48q40 -17 93 -17q49 0 82.5 9q33.5 9 59.5 23z" />
-<glyph unicode="&#200;" horiz-adv-x="566" d="M65 700h451v-130h-303v-152h275v-130h-275v-158h308v-130h-456zM383 752h-114l-172 87v31l173 0z" />
-<glyph unicode="&#201;" horiz-adv-x="566" d="M65 700h451v-130h-303v-152h275v-130h-275v-158h308v-130h-456zM319 870h172v-31l-174 -87l-112 0z" />
-<glyph unicode="&#202;" horiz-adv-x="566" d="M65 700h451v-130h-303v-152h275v-130h-275v-158h308v-130h-456zM238 870h105l138 -92v-41h-108l-62 40l-22 34l-24 -33l-66 -41h-106l0 42z" />
-<glyph unicode="&#203;" horiz-adv-x="566" d="M65 700h451v-130h-303v-152h275v-130h-275v-158h308v-130h-456zM91 798q0 27 19.5 43.5q19.5 16.5 63.5 16.5q42 0 61.5 -16.5q19.5 -16.5 19.5 -43.5q0 -26 -19.5 -41.5q-19.5 -15.5 -61.5 -15.5q-44 0 -63.5 15.5q-19.5 15.5 -19.5 41.5zt0 0zM324 798q0 27 19.5 43.5q19.5 16.5 61.5 16.5q44 0 63.5 -16.5q19.5 -16.5 19.5 -43.5q0 -26 -19.5 -41.5q-19.5 -15.5 -63.5 -15.5q-42 0 -61.5 15.5t-19.5 41.5z" />
-<glyph unicode="&#204;" horiz-adv-x="388" d="M120 620h-80v80h308v-80h-80v-540h80v-80h-308v80h80zM298 752h-114l-172 87v31l173 0z" />
-<glyph unicode="&#205;" horiz-adv-x="388" d="M120 620h-80v80h308v-80h-80v-540h80v-80h-308v80h80zM209 870h172v-31l-174 -87l-112 0z" />
-<glyph unicode="&#206;" horiz-adv-x="388" d="M120 620h-80v80h308v-80h-80v-540h80v-80h-308v80h80zM145 870h105l138 -92v-41h-108l-62 40l-22 34l-24 -33l-66 -41h-106l0 42z" />
-<glyph unicode="&#207;" horiz-adv-x="388" d="M120 620h-80v80h308v-80h-80v-540h80v-80h-308v80h80zM-4 798q0 27 19.5 43.5q19.5 16.5 63.5 16.5q42 0 61.5 -16.5q19.5 -16.5 19.5 -43.5q0 -26 -19.5 -41.5q-19.5 -15.5 -61.5 -15.5q-44 0 -63.5 15.5q-19.5 15.5 -19.5 41.5zt0 0zM229 798q0 27 19.5 43.5q19.5 16.5 61.5 16.5q44 0 63.5 -16.5q19.5 -16.5 19.5 -43.5q0 -26 -19.5 -41.5q-19.5 -15.5 -63.5 -15.5q-42 0 -61.5 15.5t-19.5 41.5z" />
-<glyph unicode="&#208;" horiz-adv-x="714" d="M-7 412h84v288q22 3 50.5 5q28.5 2 59 3q30.5 1 59.5 1.5q29 0.5 52 0.5q100 0 171.5 -26.5q71.5 -26.5 117 -73.5q45.5 -47 66.5 -112q21 -65 21 -142q0 -70 -20.5 -136q-20.5 -66 -66.5 -117.5q-46 -51.5 -120 -82.5q-74 -31 -182 -31q-17 0 -46.5 1q-29.5 1 -61 2.5q-31.5 1.5 -59 3q-27.5 1.5 -41.5 3.5l0 296h-84zM225 412h135v-117h-135v-172q5 -1 15.5 -1.5q10.5 -0.5 22 -1q11.5 -0.5 22 -1q10.5 -0.5 15.5 -0.5q64 0 106 20q42 20 66.5 53q24.5 33 34.5 75q10 42 10 87q0 37 -9 77q-9 40 -32.5 73q-23.5 33 -63.5 54.5q-40 21.5 -103 21.5q-23 0 -47 -0.5q-24 -0.5 -37 -2.5z" />
-<glyph unicode="&#209;" horiz-adv-x="713" d="M254 365l-60 105h-5l16 -106v-364h-140v705h107l289 -373l57 -102h6l-16 103v367h140v-705h-107zM150 804q33 35 64.5 48q31.5 13 62.5 13q24 0 48 -5.5q24 -5.5 46.5 -12.5q22.5 -7 44 -12.5q21.5 -5.5 41.5 -5.5q17 0 33 5q16 5 31 19l25 -72q-29 -26 -57 -36q-28 -10 -55 -10q-24 0 -47.5 5.5q-23.5 5.5 -46 12.5q-22.5 7 -44 12.5q-21.5 5.5 -42.5 5.5q-21 0 -41 -7.5q-20 -7.5 -40 -27.5z" />
-<glyph unicode="&#210;" horiz-adv-x="727" d="M40 350q0 86 22 154q22 68 63.5 114.5q41.5 46.5 101.5 71q60 24.5 136 24.5q81 0 141.5 -26.5q60.5 -26.5 101 -74.5q40.5 -48 61 -115q20.5 -67 20.5 -148q0 -86 -22.5 -154q-22.5 -68 -64.5 -114.5q-42 -46.5 -102 -71q-60 -24.5 -135 -24.5q-81 0 -141.5 26.5q-60.5 26.5 -101 74.5q-40.5 48 -60.5 115q-20 67 -20 148zt0 0zM197 350q0 -52 10 -95q10 -43 30 -74q20 -31 51.5 -48q31.5 -17 74.5 -17q79 0 123 54q44 54 44 180q0 50 -9 93q-9 43 -29.5 74.5q-20.5 31.5 -52 49q-31.5 17.5 -76.5 17.5q-78 0 -122 -56q-44 -56 -44 -178zt0 0zM446 752h-114l-172 87v31l173 0z" />
-<glyph unicode="&#211;" horiz-adv-x="727" d="M40 350q0 86 22 154q22 68 63.5 114.5q41.5 46.5 101.5 71q60 24.5 136 24.5q81 0 141.5 -26.5q60.5 -26.5 101 -74.5q40.5 -48 61 -115q20.5 -67 20.5 -148q0 -86 -22.5 -154q-22.5 -68 -64.5 -114.5q-42 -46.5 -102 -71q-60 -24.5 -135 -24.5q-81 0 -141.5 26.5q-60.5 26.5 -101 74.5q-40.5 48 -60.5 115q-20 67 -20 148zt0 0zM197 350q0 -52 10 -95q10 -43 30 -74q20 -31 51.5 -48q31.5 -17 74.5 -17q79 0 123 54q44 54 44 180q0 50 -9 93q-9 43 -29.5 74.5q-20.5 31.5 -52 49q-31.5 17.5 -76.5 17.5q-78 0 -122 -56q-44 -56 -44 -178zt0 0zM396 870h172v-31l-174 -87l-112 0z" />
-<glyph unicode="&#212;" horiz-adv-x="727" d="M40 350q0 86 22 154q22 68 63.5 114.5q41.5 46.5 101.5 71q60 24.5 136 24.5q81 0 141.5 -26.5q60.5 -26.5 101 -74.5q40.5 -48 61 -115q20.5 -67 20.5 -148q0 -86 -22.5 -154q-22.5 -68 -64.5 -114.5q-42 -46.5 -102 -71q-60 -24.5 -135 -24.5q-81 0 -141.5 26.5q-60.5 26.5 -101 74.5q-40.5 48 -60.5 115q-20 67 -20 148zt0 0zM197 350q0 -52 10 -95q10 -43 30 -74q20 -31 51.5 -48q31.5 -17 74.5 -17q79 0 123 54q44 54 44 180q0 50 -9 93q-9 43 -29.5 74.5q-20.5 31.5 -52 49q-31.5 17.5 -76.5 17.5q-78 0 -122 -56q-44 -56 -44 -178zt0 0zM314 870h105l138 -92v-41h-108l-62 40l-22 34l-24 -33l-66 -41h-106l0 42z" />
-<glyph unicode="&#213;" horiz-adv-x="727" d="M40 350q0 86 22 154q22 68 63.5 114.5q41.5 46.5 101.5 71q60 24.5 136 24.5q81 0 141.5 -26.5q60.5 -26.5 101 -74.5q40.5 -48 61 -115q20.5 -67 20.5 -148q0 -86 -22.5 -154q-22.5 -68 -64.5 -114.5q-42 -46.5 -102 -71q-60 -24.5 -135 -24.5q-81 0 -141.5 26.5q-60.5 26.5 -101 74.5q-40.5 48 -60.5 115q-20 67 -20 148zt0 0zM197 350q0 -52 10 -95q10 -43 30 -74q20 -31 51.5 -48q31.5 -17 74.5 -17q79 0 123 54q44 54 44 180q0 50 -9 93q-9 43 -29.5 74.5q-20.5 31.5 -52 49q-31.5 17.5 -76.5 17.5q-78 0 -122 -56q-44 -56 -44 -178zt0 0zM165 804q33 35 64.5 48q31.5 13 62.5 13q24 0 48 -5.5q24 -5.5 46.5 -12.5q22.5 -7 44 -12.5q21.5 -5.5 41.5 -5.5q17 0 33 5q16 5 31 19l25 -72q-29 -26 -57 -36q-28 -10 -55 -10q-24 0 -47.5 5.5q-23.5 5.5 -46 12.5q-22.5 7 -44 12.5q-21.5 5.5 -42.5 5.5q-21 0 -41 -7.5q-20 -7.5 -40 -27.5z" />
-<glyph unicode="&#214;" horiz-adv-x="727" d="M40 350q0 86 22 154q22 68 63.5 114.5q41.5 46.5 101.5 71q60 24.5 136 24.5q81 0 141.5 -26.5q60.5 -26.5 101 -74.5q40.5 -48 61 -115q20.5 -67 20.5 -148q0 -86 -22.5 -154q-22.5 -68 -64.5 -114.5q-42 -46.5 -102 -71q-60 -24.5 -135 -24.5q-81 0 -141.5 26.5q-60.5 26.5 -101 74.5q-40.5 48 -60.5 115q-20 67 -20 148zt0 0zM197 350q0 -52 10 -95q10 -43 30 -74q20 -31 51.5 -48q31.5 -17 74.5 -17q79 0 123 54q44 54 44 180q0 50 -9 93q-9 43 -29.5 74.5q-20.5 31.5 -52 49q-31.5 17.5 -76.5 17.5q-78 0 -122 -56q-44 -56 -44 -178zt0 0zM165 798q0 27 19.5 43.5q19.5 16.5 63.5 16.5q42 0 61.5 -16.5q19.5 -16.5 19.5 -43.5q0 -26 -19.5 -41.5q-19.5 -15.5 -61.5 -15.5q-44 0 -63.5 15.5q-19.5 15.5 -19.5 41.5zt0 0zM398 798q0 27 19.5 43.5q19.5 16.5 61.5 16.5q44 0 63.5 -16.5q19.5 -16.5 19.5 -43.5q0 -26 -19.5 -41.5q-19.5 -15.5 -63.5 -15.5q-42 0 -61.5 15.5t-19.5 41.5z" />
-<glyph unicode="&#215;" horiz-adv-x="571" d="M145 554l141 -134l140 134l83 -89l-136 -126l136 -129l-83 -88l-140 134l-142 -135l-82 88l137 130l-136 126z" />
-<glyph unicode="&#216;" horiz-adv-x="727" d="M40 350q0 86 22 154q22 68 63.5 114.5q41.5 46.5 101.5 71q60 24.5 136 24.5q93 0 162 -37l26 38l95 -61l-34 -49q38 -48 56.5 -112.5q18.5 -64.5 18.5 -142.5q0 -86 -22.5 -154q-22.5 -68 -64.5 -114.5q-42 -46.5 -102 -71q-60 -24.5 -135 -24.5q-46 0 -84.5 8.5q-38.5 8.5 -71.5 24.5l-22 -33l-93 60l28 41q-41 48 -60.5 115q-19.5 67 -19.5 148zt0 0zM446 562q-35 22 -83 22q-78 0 -122 -56q-44 -56 -44 -178q0 -73 18 -125zM287 134q31 -18 76 -18q79 0 123 54q44 54 44 180q0 64 -15 114z" />
-<glyph unicode="&#217;" horiz-adv-x="679" d="M478 700h140v-449q0 -68 -19.5 -118q-19.5 -50 -55 -82q-35.5 -32 -85 -47.5q-49.5 -15.5 -108.5 -15.5q-141 0 -215 61.5q-74 61.5 -74 184.5v466h148v-439q0 -80 35 -111.5q35 -31.5 104 -31.5q66 0 98 33.5q32 33.5 32 109.5zM428 752h-114l-172 87v31l173 0z" />
-<glyph unicode="&#218;" horiz-adv-x="679" d="M478 700h140v-449q0 -68 -19.5 -118q-19.5 -50 -55 -82q-35.5 -32 -85 -47.5q-49.5 -15.5 -108.5 -15.5q-141 0 -215 61.5q-74 61.5 -74 184.5v466h148v-439q0 -80 35 -111.5q35 -31.5 104 -31.5q66 0 98 33.5q32 33.5 32 109.5zM396 870h172v-31l-174 -87l-112 0z" />
-<glyph unicode="&#219;" horiz-adv-x="679" d="M478 700h140v-449q0 -68 -19.5 -118q-19.5 -50 -55 -82q-35.5 -32 -85 -47.5q-49.5 -15.5 -108.5 -15.5q-141 0 -215 61.5q-74 61.5 -74 184.5v466h148v-439q0 -80 35 -111.5q35 -31.5 104 -31.5q66 0 98 33.5q32 33.5 32 109.5zM297 870h105l138 -92v-41h-108l-62 40l-22 34l-24 -33l-66 -41h-106l0 42z" />
-<glyph unicode="&#220;" horiz-adv-x="679" d="M478 700h140v-449q0 -68 -19.5 -118q-19.5 -50 -55 -82q-35.5 -32 -85 -47.5q-49.5 -15.5 -108.5 -15.5q-141 0 -215 61.5q-74 61.5 -74 184.5v466h148v-439q0 -80 35 -111.5q35 -31.5 104 -31.5q66 0 98 33.5q32 33.5 32 109.5zM144 798q0 27 19.5 43.5q19.5 16.5 63.5 16.5q42 0 61.5 -16.5q19.5 -16.5 19.5 -43.5q0 -26 -19.5 -41.5q-19.5 -15.5 -61.5 -15.5q-44 0 -63.5 15.5q-19.5 15.5 -19.5 41.5zt0 0zM377 798q0 27 19.5 43.5q19.5 16.5 61.5 16.5q44 0 63.5 -16.5q19.5 -16.5 19.5 -43.5q0 -26 -19.5 -41.5q-19.5 -15.5 -63.5 -15.5q-42 0 -61.5 15.5t-19.5 41.5z" />
-<glyph unicode="&#221;" horiz-adv-x="644" d="M248 258l-250 442h176l140 -257l16 -75h5l17 77l135 255h159l-250 -441v-259h-148zM354 870h172v-31l-174 -87l-112 0z" />
-<glyph unicode="&#222;" horiz-adv-x="620" d="M65 700h148v-72q15 1 30.5 1.5q15.5 0.5 31.5 0.5q69 0 127 -8.5q58 -8.5 101 -34q43 -25.5 67 -71q24 -45.5 24 -120.5q0 -66 -22.5 -112.5q-22.5 -46.5 -62.5 -75.5q-40 -29 -93.5 -42.5q-53.5 -13.5 -116.5 -13.5q-5 0 -17 0q-12 0 -25.5 0.5q-13.5 0.5 -25.5 1.5q-12 1 -18 2l0 -156h-148zM213 287q4 -1 13 -2q9 -1 19 -1.5q10 -0.5 18.5 -1q8.5 -0.5 13.5 -0.5q35 0 64.5 4q29.5 4 50.5 17q21 13 33 35.5q12 22.5 12 60.5q0 32 -10.5 51.5q-10.5 19.5 -30 30.5q-19.5 11 -48 15q-28.5 4 -63.5 4q-21 0 -40.5 -1q-19.5 -1 -31.5 -4z" />
-<glyph unicode="&#223;" horiz-adv-x="693" d="M420 547q0 10 -3 19q-3 9 -13 15.5q-10 6.5 -27.5 10q-17.5 3.5 -46.5 3.5q-53 0 -73.5 -33.5q-20.5 -33.5 -20.5 -86.5v-475h-140v408h-79v117h79q0 97 64.5 138.5q64.5 41.5 181.5 41.5q59 0 100.5 -10.5q41.5 -10.5 68 -29q26.5 -18.5 38.5 -45q12 -26.5 12 -58.5q0 -45 -16.5 -69.5q-16.5 -24.5 -37 -41.5q-20.5 -17 -37 -33q-16.5 -16 -16.5 -44q0 -19 15.5 -30.5q15.5 -11.5 38.5 -21.5q23 -10 49.5 -21q26.5 -11 49.5 -28.5q23 -17.5 38.5 -44q15.5 -26.5 15.5 -67.5q0 -32 -10 -63.5q-10 -31.5 -32.5 -56.5q-22.5 -25 -59.5 -40.5q-37 -15.5 -91 -15.5q-55 0 -101 13q-46 13 -78 33l41 99q13 -7 25.5 -13.5q12.5 -6.5 27 -11q14.5 -4.5 32.5 -7.5q18 -3 42 -3q32 0 48 15.5q16 15.5 16 41.5q0 25 -15.5 39q-15.5 14 -38.5 24q-23 10 -49.5 18.5q-26.5 8.5 -49.5 23q-23 14.5 -38.5 38q-15.5 23.5 -15.5 63.5q0 43 16.5 70q16.5 27 36.5 46q20 19 36.5 35t16.5 38z" />
-<glyph unicode="&#224;" horiz-adv-x="579" d="M67 489q45 20 110.5 33q65.5 13 135.5 13q55 0 92.5 -13q37.5 -13 59.5 -37.5q22 -24.5 31.5 -59q9.5 -34.5 9.5 -76.5q0 -51 -4 -101q-4 -50 -4 -106q0 -38 5 -74q5 -36 16 -69l-114 0l-23 78h-12q-26 -35 -66 -60q-40 -25 -103 -25q-38 0 -69.5 11q-31.5 11 -54 31.5q-22.5 20.5 -35 48.5q-12.5 28 -12.5 61q0 89 59.5 134.5q59.5 45.5 180.5 45.5q28 0 56 -4.5q28 -4.5 39 -6.5q3 21 3 36q0 38 -19 56q-19 18 -71 18q-48 0 -93.5 -11.5q-45.5 -11.5 -80.5 -28.5zM250 104q47 0 75 22q28 22 41 46l0 60q-5 2 -15.5 4q-10.5 2 -23 4q-12.5 2 -25 3q-12.5 1 -22.5 1q-54 0 -80 -19.5q-26 -19.5 -26 -48.5q0 -36 20.5 -54q20.5 -18 55.5 -18zt0 0zM350 571h-74l-140 128v30l147 0z" />
-<glyph unicode="&#225;" horiz-adv-x="579" d="M67 489q45 20 110.5 33q65.5 13 135.5 13q55 0 92.5 -13q37.5 -13 59.5 -37.5q22 -24.5 31.5 -59q9.5 -34.5 9.5 -76.5q0 -51 -4 -101q-4 -50 -4 -106q0 -38 5 -74q5 -36 16 -69l-114 0l-23 78h-12q-26 -35 -66 -60q-40 -25 -103 -25q-38 0 -69.5 11q-31.5 11 -54 31.5q-22.5 20.5 -35 48.5q-12.5 28 -12.5 61q0 89 59.5 134.5q59.5 45.5 180.5 45.5q28 0 56 -4.5q28 -4.5 39 -6.5q3 21 3 36q0 38 -19 56q-19 18 -71 18q-48 0 -93.5 -11.5q-45.5 -11.5 -80.5 -28.5zM250 104q47 0 75 22q28 22 41 46l0 60q-5 2 -15.5 4q-10.5 2 -23 4q-12.5 2 -25 3q-12.5 1 -22.5 1q-54 0 -80 -19.5q-26 -19.5 -26 -48.5q0 -36 20.5 -54q20.5 -18 55.5 -18zt0 0zM287 729h142v-29l-126 -129l-76 0z" />
-<glyph unicode="&#226;" horiz-adv-x="579" d="M67 489q45 20 110.5 33q65.5 13 135.5 13q55 0 92.5 -13q37.5 -13 59.5 -37.5q22 -24.5 31.5 -59q9.5 -34.5 9.5 -76.5q0 -51 -4 -101q-4 -50 -4 -106q0 -38 5 -74q5 -36 16 -69l-114 0l-23 78h-12q-26 -35 -66 -60q-40 -25 -103 -25q-38 0 -69.5 11q-31.5 11 -54 31.5q-22.5 20.5 -35 48.5q-12.5 28 -12.5 61q0 89 59.5 134.5q59.5 45.5 180.5 45.5q28 0 56 -4.5q28 -4.5 39 -6.5q3 21 3 36q0 38 -19 56q-19 18 -71 18q-48 0 -93.5 -11.5q-45.5 -11.5 -80.5 -28.5zM250 104q47 0 75 22q28 22 41 46l0 60q-5 2 -15.5 4q-10.5 2 -23 4q-12.5 2 -25 3q-12.5 1 -22.5 1q-54 0 -80 -19.5q-26 -19.5 -26 -48.5q0 -36 20.5 -54q20.5 -18 55.5 -18zt0 0zM252 752h92l125 -188h-110l-42 69l-24 64l-25 -63l-52 -70l-102 0z" />
-<glyph unicode="&#227;" horiz-adv-x="579" d="M67 489q45 20 110.5 33q65.5 13 135.5 13q55 0 92.5 -13q37.5 -13 59.5 -37.5q22 -24.5 31.5 -59q9.5 -34.5 9.5 -76.5q0 -51 -4 -101q-4 -50 -4 -106q0 -38 5 -74q5 -36 16 -69l-114 0l-23 78h-12q-26 -35 -66 -60q-40 -25 -103 -25q-38 0 -69.5 11q-31.5 11 -54 31.5q-22.5 20.5 -35 48.5q-12.5 28 -12.5 61q0 89 59.5 134.5q59.5 45.5 180.5 45.5q28 0 56 -4.5q28 -4.5 39 -6.5q3 21 3 36q0 38 -19 56q-19 18 -71 18q-48 0 -93.5 -11.5q-45.5 -11.5 -80.5 -28.5zM250 104q47 0 75 22q28 22 41 46l0 60q-5 2 -15.5 4q-10.5 2 -23 4q-12.5 2 -25 3q-12.5 1 -22.5 1q-54 0 -80 -19.5q-26 -19.5 -26 -48.5q0 -36 20.5 -54q20.5 -18 55.5 -18zt0 0zM107 677q33 38 61.5 53q28.5 15 54.5 15q22 0 42.5 -7q20.5 -7 40.5 -16q20 -9 40.5 -16q20.5 -7 43.5 -7q33 0 68 26l17 -75q-30 -33 -57 -46.5q-27 -13.5 -52 -13.5q-23 0 -43.5 7.5q-20.5 7.5 -41.5 16q-21 8.5 -42.5 16q-21.5 7.5 -45.5 7.5q-17 0 -34 -5.5q-17 -5.5 -37 -21.5z" />
-<glyph unicode="&#228;" horiz-adv-x="579" d="M67 489q45 20 110.5 33q65.5 13 135.5 13q55 0 92.5 -13q37.5 -13 59.5 -37.5q22 -24.5 31.5 -59q9.5 -34.5 9.5 -76.5q0 -51 -4 -101q-4 -50 -4 -106q0 -38 5 -74q5 -36 16 -69l-114 0l-23 78h-12q-26 -35 -66 -60q-40 -25 -103 -25q-38 0 -69.5 11q-31.5 11 -54 31.5q-22.5 20.5 -35 48.5q-12.5 28 -12.5 61q0 89 59.5 134.5q59.5 45.5 180.5 45.5q28 0 56 -4.5q28 -4.5 39 -6.5q3 21 3 36q0 38 -19 56q-19 18 -71 18q-48 0 -93.5 -11.5q-45.5 -11.5 -80.5 -28.5zM250 104q47 0 75 22q28 22 41 46l0 60q-5 2 -15.5 4q-10.5 2 -23 4q-12.5 2 -25 3q-12.5 1 -22.5 1q-54 0 -80 -19.5q-26 -19.5 -26 -48.5q0 -36 20.5 -54q20.5 -18 55.5 -18zt0 0zM80 657q0 35 21.5 56q21.5 21 55.5 21q34 0 54.5 -21q20.5 -21 20.5 -56q0 -30 -20.5 -51q-20.5 -21 -54.5 -21q-34 0 -55.5 21q-21.5 21 -21.5 51zt0 0zM333 657q0 35 20.5 56q20.5 21 54.5 21q35 0 55.5 -21q20.5 -21 20.5 -56q0 -30 -20.5 -51q-20.5 -21 -55.5 -21q-34 0 -54.5 21t-20.5 51z" />
-<glyph unicode="&#229;" horiz-adv-x="579" d="M67 489q45 20 110.5 33q65.5 13 135.5 13q55 0 92.5 -13q37.5 -13 59.5 -37.5q22 -24.5 31.5 -59q9.5 -34.5 9.5 -76.5q0 -51 -4 -101q-4 -50 -4 -106q0 -38 5 -74q5 -36 16 -69l-114 0l-23 78h-12q-26 -35 -66 -60q-40 -25 -103 -25q-38 0 -69.5 11q-31.5 11 -54 31.5q-22.5 20.5 -35 48.5q-12.5 28 -12.5 61q0 89 59.5 134.5q59.5 45.5 180.5 45.5q28 0 56 -4.5q28 -4.5 39 -6.5q3 21 3 36q0 38 -19 56q-19 18 -71 18q-48 0 -93.5 -11.5q-45.5 -11.5 -80.5 -28.5zM250 104q47 0 75 22q28 22 41 46l0 60q-5 2 -15.5 4q-10.5 2 -23 4q-12.5 2 -25 3q-12.5 1 -22.5 1q-54 0 -80 -19.5q-26 -19.5 -26 -48.5q0 -36 20.5 -54q20.5 -18 55.5 -18zt0 0zM173 665q0 42 30.5 70.5q30.5 28.5 90.5 28.5q57 0 89.5 -25.5q32.5 -25.5 32.5 -73.5q0 -19 -8.5 -36.5q-8.5 -17.5 -24 -31q-15.5 -13.5 -38.5 -21.5q-23 -8 -51 -8q-58 0 -89.5 27q-31.5 27 -31.5 70zt0 0zM245 665q0 -17 14.5 -26q14.5 -9 34.5 -9q22 0 36.5 8.5q14.5 8.5 14.5 26.5q0 19 -15.5 28.5q-15.5 9.5 -35.5 9.5q-20 0 -34.5 -9t-14.5 -29z" />
-<glyph unicode="&#230;" horiz-adv-x="915" d="M250 104q47 0 74.5 21q27.5 21 41.5 44l0 63q-11 3 -27.5 7q-16.5 4 -50.5 4q-57 0 -85.5 -20.5q-28.5 -20.5 -28.5 -55.5q0 -30 21 -46.5q21 -16.5 55 -16.5zt0 0zM406 83q-30 -38 -79 -64.5q-49 -26.5 -126 -26.5q-38 0 -69.5 11q-31.5 11 -54 31.5q-22.5 20.5 -35 48.5q-12.5 28 -12.5 61q0 89 62 134q62 45 176 45q32 0 60 -4q28 -4 37 -6q2 14 2.5 21q0.5 7 0.5 14q0 32 -19.5 53q-19.5 21 -71.5 21q-46 0 -92 -10.5q-46 -10.5 -81 -26.5l-37 98q44 22 106 37q62 15 131 15q59 0 94.5 -14q35.5 -14 61.5 -44q29 30 75 46.5q46 16.5 100 16.5q42 0 83 -10.5q41 -10.5 72.5 -35q31.5 -24.5 51 -66q19.5 -41.5 19.5 -103.5q0 -21 -2 -45.5q-2 -24.5 -8 -51.5l-351 0q5 -66 40.5 -99.5q35.5 -33.5 112.5 -33.5q46 0 84 13.5q38 13.5 59 27.5l46 -89q-17 -13 -40.5 -24.5q-23.5 -11.5 -52 -19.5q-28.5 -8 -60 -13q-31.5 -5 -64.5 -5q-71 0 -128 22.5q-57 22.5 -86 75.5zM633 429q-63 0 -92.5 -33.5q-29.5 -33.5 -34.5 -84.5l225 0q5 57 -19.5 87.5t-78.5 30.5z" />
-<glyph unicode="&#231;" horiz-adv-x="500" d="M468 32q-26 -17 -61 -28q-35 -11 -73 -16l-24 -40q48 -3 75.5 -21q27.5 -18 27.5 -56q0 -24 -12.5 -41.5q-12.5 -17.5 -34.5 -29.5q-22 -12 -51 -18q-29 -6 -63 -6q-18 0 -36 1q-18 1 -37 5l10 47q31 -2 50 0.5q19 2.5 29.5 7q10.5 4.5 14 11q3.5 6.5 3.5 14.5q0 17 -23 26q-23 9 -74 11l57 89q-56 6 -94.5 28.5q-38.5 22.5 -63 58q-24.5 35.5 -35.5 83q-11 47.5 -11 104.5q0 131 64.5 204.5q64.5 73.5 187.5 73.5q60 0 98.5 -9.5q38.5 -9.5 68.5 -24.5l-34 -112q-26 11 -51.5 16.5q-25.5 5.5 -59.5 5.5q-63 0 -96.5 -36.5q-33.5 -36.5 -33.5 -117.5q0 -32 8 -59.5q8 -27.5 25 -48.5q17 -21 43 -33q26 -12 61 -12q42 0 66.5 7.5q24.5 7.5 46.5 20.5z" />
-<glyph unicode="&#232;" horiz-adv-x="594" d="M521 48q-34 -26 -92.5 -44.5q-58.5 -18.5 -125.5 -18.5q-135 0 -198 74q-63 74 -63 203q0 137 71 207.5q71 70.5 200 70.5q42 0 83 -10.5q41 -10.5 73 -35q32 -24.5 51.5 -66q19.5 -41.5 19.5 -102.5q0 -21 -2.5 -46q-2.5 -25 -8.5 -52l-350 0q5 -68 39.5 -100.5q34.5 -32.5 112.5 -32.5q47 0 84.5 13.5q37.5 13.5 57.5 27.5zM311 430q-62 0 -92 -33.5q-30 -33.5 -35 -85.5l226 0q4 55 -20 87q-24 32 -79 32zt0 0zM371 571h-74l-140 128v30l147 0z" />
-<glyph unicode="&#233;" horiz-adv-x="594" d="M521 48q-34 -26 -92.5 -44.5q-58.5 -18.5 -125.5 -18.5q-135 0 -198 74q-63 74 -63 203q0 137 71 207.5q71 70.5 200 70.5q42 0 83 -10.5q41 -10.5 73 -35q32 -24.5 51.5 -66q19.5 -41.5 19.5 -102.5q0 -21 -2.5 -46q-2.5 -25 -8.5 -52l-350 0q5 -68 39.5 -100.5q34.5 -32.5 112.5 -32.5q47 0 84.5 13.5q37.5 13.5 57.5 27.5zM311 430q-62 0 -92 -33.5q-30 -33.5 -35 -85.5l226 0q4 55 -20 87q-24 32 -79 32zt0 0zM328 729h142v-29l-126 -129l-76 0z" />
-<glyph unicode="&#234;" horiz-adv-x="594" d="M521 48q-34 -26 -92.5 -44.5q-58.5 -18.5 -125.5 -18.5q-135 0 -198 74q-63 74 -63 203q0 137 71 207.5q71 70.5 200 70.5q42 0 83 -10.5q41 -10.5 73 -35q32 -24.5 51.5 -66q19.5 -41.5 19.5 -102.5q0 -21 -2.5 -46q-2.5 -25 -8.5 -52l-350 0q5 -68 39.5 -100.5q34.5 -32.5 112.5 -32.5q47 0 84.5 13.5q37.5 13.5 57.5 27.5zM311 430q-62 0 -92 -33.5q-30 -33.5 -35 -85.5l226 0q4 55 -20 87q-24 32 -79 32zt0 0zM256 752h92l125 -188h-110l-42 69l-24 64l-25 -63l-52 -70l-102 0z" />
-<glyph unicode="&#235;" horiz-adv-x="594" d="M521 48q-34 -26 -92.5 -44.5q-58.5 -18.5 -125.5 -18.5q-135 0 -198 74q-63 74 -63 203q0 137 71 207.5q71 70.5 200 70.5q42 0 83 -10.5q41 -10.5 73 -35q32 -24.5 51.5 -66q19.5 -41.5 19.5 -102.5q0 -21 -2.5 -46q-2.5 -25 -8.5 -52l-350 0q5 -68 39.5 -100.5q34.5 -32.5 112.5 -32.5q47 0 84.5 13.5q37.5 13.5 57.5 27.5zM311 430q-62 0 -92 -33.5q-30 -33.5 -35 -85.5l226 0q4 55 -20 87q-24 32 -79 32zt0 0zM94 657q0 35 21.5 56q21.5 21 55.5 21q34 0 54.5 -21q20.5 -21 20.5 -56q0 -30 -20.5 -51q-20.5 -21 -54.5 -21q-34 0 -55.5 21q-21.5 21 -21.5 51zt0 0zM347 657q0 35 20.5 56q20.5 21 54.5 21q35 0 55.5 -21q20.5 -21 20.5 -56q0 -30 -20.5 -51q-20.5 -21 -55.5 -21q-34 0 -54.5 21t-20.5 51z" />
-<glyph unicode="&#236;" horiz-adv-x="317" d="M89 525h140v-525h-140zM206 571h-74l-140 128v30l147 0z" />
-<glyph unicode="&#237;" horiz-adv-x="317" d="M89 525h140v-525h-140zM144 729h142v-29l-126 -129l-76 0z" />
-<glyph unicode="&#238;" horiz-adv-x="317" d="M89 525h140v-525h-140zM119 752h92l125 -188h-110l-42 69l-24 64l-25 -63l-52 -70l-102 0z" />
-<glyph unicode="&#239;" horiz-adv-x="317" d="M89 525h140v-525h-140zM-44 657q0 35 21.5 56q21.5 21 55.5 21q34 0 54.5 -21q20.5 -21 20.5 -56q0 -30 -20.5 -51q-20.5 -21 -54.5 -21q-34 0 -55.5 21q-21.5 21 -21.5 51zt0 0zM209 657q0 35 20.5 56q20.5 21 54.5 21q35 0 55.5 -21q20.5 -21 20.5 -56q0 -30 -20.5 -51q-20.5 -21 -55.5 -21q-34 0 -54.5 21t-20.5 51z" />
-<glyph unicode="&#240;" horiz-adv-x="643" d="M394 670q55 -27 94.5 -65.5q39.5 -38.5 64.5 -84.5q25 -46 36.5 -95.5q11.5 -49.5 11.5 -98.5q0 -83 -21 -146.5q-21 -63.5 -58.5 -106.5q-37.5 -43 -90 -65.5q-52.5 -22.5 -115.5 -22.5q-68 0 -119 19.5q-51 19.5 -85.5 54q-34.5 34.5 -52 83q-17.5 48.5 -17.5 105.5q0 58 19.5 105.5q19.5 47.5 55 81q35.5 33.5 84.5 51.5q49 18 108 18q42 0 78.5 -12q36.5 -12 65.5 -35q-17 48 -48.5 81.5q-31.5 33.5 -71.5 54.5l-51 -66l-56 41l40 51q-23 6 -45 9q-22 3 -44 5l54 82q50 -6 96 -18l35 45l53 -43zM462 347q-27 20 -63.5 29.5q-36.5 9.5 -72.5 9.5q-72 0 -110.5 -40q-38.5 -40 -38.5 -103q0 -70 40 -105.5q40 -35.5 107 -35.5q32 0 58.5 13q26.5 13 46 37q19.5 24 30 57.5q10.5 33.5 10.5 74.5q0 13 -1.5 31.5t-5.5 31.5z" />
-<glyph unicode="&#241;" horiz-adv-x="638" d="M426 0v288q0 68 -21 98q-21 30 -74 30q-45 0 -76.5 -24.5q-31.5 -24.5 -43.5 -62.5q0 -82 0.5 -164.5q0.5 -82.5 0.5 -164.5l-140 0v525h110l15 -75h15q26 37 69 63.5q43 26.5 112 26.5q42 0 74.5 -10.5q32.5 -10.5 54 -36q21.5 -25.5 33 -68.5q11.5 -43 11.5 -108v-317zM134 677q33 38 61.5 53q28.5 15 54.5 15q22 0 42.5 -7q20.5 -7 40.5 -16q20 -9 40.5 -16q20.5 -7 43.5 -7q33 0 68 26l17 -75q-30 -33 -57 -46.5q-27 -13.5 -52 -13.5q-23 0 -43.5 7.5q-20.5 7.5 -41.5 16q-21 8.5 -42.5 16q-21.5 7.5 -45.5 7.5q-17 0 -34 -5.5q-17 -5.5 -37 -21.5z" />
-<glyph unicode="&#242;" horiz-adv-x="616" d="M42 262q0 130 69 204q69 74 197 74q67 0 117 -21q50 -21 83 -58.5q33 -37.5 49.5 -88q16.5 -50.5 16.5 -110.5q0 -64 -18 -115.5q-18 -51.5 -52 -87.5q-34 -36 -83.5 -55q-49.5 -19 -112.5 -19q-68 0 -118 21q-50 21 -83 58.5q-33 37.5 -49 88q-16 50.5 -16 109.5zt0 0zM186 262q0 -33 7 -62q7 -29 21.5 -50.5q14.5 -21.5 37.5 -34.5q23 -13 56 -13q122 0 122 160q0 35 -6.5 64.5q-6.5 29.5 -21 51q-14.5 21.5 -38 33.5q-23.5 12 -56.5 12q-57 0 -89.5 -38q-32.5 -38 -32.5 -123zt0 0zM375 571h-74l-140 128v30l147 0z" />
-<glyph unicode="&#243;" horiz-adv-x="616" d="M42 262q0 130 69 204q69 74 197 74q67 0 117 -21q50 -21 83 -58.5q33 -37.5 49.5 -88q16.5 -50.5 16.5 -110.5q0 -64 -18 -115.5q-18 -51.5 -52 -87.5q-34 -36 -83.5 -55q-49.5 -19 -112.5 -19q-68 0 -118 21q-50 21 -83 58.5q-33 37.5 -49 88q-16 50.5 -16 109.5zt0 0zM186 262q0 -33 7 -62q7 -29 21.5 -50.5q14.5 -21.5 37.5 -34.5q23 -13 56 -13q122 0 122 160q0 35 -6.5 64.5q-6.5 29.5 -21 51q-14.5 21.5 -38 33.5q-23.5 12 -56.5 12q-57 0 -89.5 -38q-32.5 -38 -32.5 -123zt0 0zM329 729h142v-29l-126 -129l-76 0z" />
-<glyph unicode="&#244;" horiz-adv-x="616" d="M42 262q0 130 69 204q69 74 197 74q67 0 117 -21q50 -21 83 -58.5q33 -37.5 49.5 -88q16.5 -50.5 16.5 -110.5q0 -64 -18 -115.5q-18 -51.5 -52 -87.5q-34 -36 -83.5 -55q-49.5 -19 -112.5 -19q-68 0 -118 21q-50 21 -83 58.5q-33 37.5 -49 88q-16 50.5 -16 109.5zt0 0zM186 262q0 -33 7 -62q7 -29 21.5 -50.5q14.5 -21.5 37.5 -34.5q23 -13 56 -13q122 0 122 160q0 35 -6.5 64.5q-6.5 29.5 -21 51q-14.5 21.5 -38 33.5q-23.5 12 -56.5 12q-57 0 -89.5 -38q-32.5 -38 -32.5 -123zt0 0zM269 752h92l125 -188h-110l-42 69l-24 64l-25 -63l-52 -70l-102 0z" />
-<glyph unicode="&#245;" horiz-adv-x="616" d="M42 262q0 130 69 204q69 74 197 74q67 0 117 -21q50 -21 83 -58.5q33 -37.5 49.5 -88q16.5 -50.5 16.5 -110.5q0 -64 -18 -115.5q-18 -51.5 -52 -87.5q-34 -36 -83.5 -55q-49.5 -19 -112.5 -19q-68 0 -118 21q-50 21 -83 58.5q-33 37.5 -49 88q-16 50.5 -16 109.5zt0 0zM186 262q0 -33 7 -62q7 -29 21.5 -50.5q14.5 -21.5 37.5 -34.5q23 -13 56 -13q122 0 122 160q0 35 -6.5 64.5q-6.5 29.5 -21 51q-14.5 21.5 -38 33.5q-23.5 12 -56.5 12q-57 0 -89.5 -38q-32.5 -38 -32.5 -123zt0 0zM124 677q33 38 61.5 53q28.5 15 54.5 15q22 0 42.5 -7q20.5 -7 40.5 -16q20 -9 40.5 -16q20.5 -7 43.5 -7q33 0 68 26l17 -75q-30 -33 -57 -46.5q-27 -13.5 -52 -13.5q-23 0 -43.5 7.5q-20.5 7.5 -41.5 16q-21 8.5 -42.5 16q-21.5 7.5 -45.5 7.5q-17 0 -34 -5.5q-17 -5.5 -37 -21.5z" />
-<glyph unicode="&#246;" horiz-adv-x="616" d="M42 262q0 130 69 204q69 74 197 74q67 0 117 -21q50 -21 83 -58.5q33 -37.5 49.5 -88q16.5 -50.5 16.5 -110.5q0 -64 -18 -115.5q-18 -51.5 -52 -87.5q-34 -36 -83.5 -55q-49.5 -19 -112.5 -19q-68 0 -118 21q-50 21 -83 58.5q-33 37.5 -49 88q-16 50.5 -16 109.5zt0 0zM186 262q0 -33 7 -62q7 -29 21.5 -50.5q14.5 -21.5 37.5 -34.5q23 -13 56 -13q122 0 122 160q0 35 -6.5 64.5q-6.5 29.5 -21 51q-14.5 21.5 -38 33.5q-23.5 12 -56.5 12q-57 0 -89.5 -38q-32.5 -38 -32.5 -123zt0 0zM106 657q0 35 21.5 56q21.5 21 55.5 21q34 0 54.5 -21q20.5 -21 20.5 -56q0 -30 -20.5 -51q-20.5 -21 -54.5 -21q-34 0 -55.5 21q-21.5 21 -21.5 51zt0 0zM359 657q0 35 20.5 56q20.5 21 54.5 21q35 0 55.5 -21q20.5 -21 20.5 -56q0 -30 -20.5 -51q-20.5 -21 -55.5 -21q-34 0 -54.5 21t-20.5 51z" />
-<glyph unicode="&#247;" horiz-adv-x="571" d="M47 397h477v-120h-477zM198 538q0 37 24 58q24 21 63 21q40 0 64 -21q24 -21 24 -58q0 -35 -24 -57q-24 -22 -64 -22q-39 0 -63 22q-24 22 -24 57zt0 0zM198 136q0 37 24 58q24 21 63 21q40 0 64 -21q24 -21 24 -58q0 -35 -24 -57q-24 -22 -64 -22q-39 0 -63 22t-24 57z" />
-<glyph unicode="&#248;" horiz-adv-x="617" d="M42 262q0 64 18 115.5q18 51.5 52 87.5q34 36 83.5 55.5q49.5 19.5 112.5 19.5q37 0 68.5 -6.5q31.5 -6.5 57.5 -17.5l29 37l84 -67l-30 -35q29 -37 43.5 -84.5q14.5 -47.5 14.5 -104.5q0 -64 -18 -115.5q-18 -51.5 -52 -87.5q-34 -36 -83.5 -55q-49.5 -19 -113.5 -19q-78 0 -134 28l-29 -37l-87 67l34 40q-26 35 -38 80.5q-12 45.5 -12 98.5zt0 0zM243 120q25 -18 65 -18q123 0 123 160q0 23 -4 44q-4 21 -10 38zM370 407q-27 16 -62 16q-56 0 -89 -38.5q-33 -38.5 -33 -122.5q0 -39 11 -74z" />
-<glyph unicode="&#249;" horiz-adv-x="642" d="M212 525v-291q0 -65 18 -95q18 -30 69 -30q44 0 74 23q30 23 44 58l0 335h140v-365q0 -42 4.5 -84q4.5 -42 12.5 -76l-103 0l-27 82h-11q-26 -42 -74 -69.5q-48 -27.5 -110 -27.5q-43 0 -76 11q-33 11 -55.5 36.5q-22.5 25.5 -34 67.5q-11.5 42 -11.5 104v321zM368 571h-74l-140 128v30l147 0z" />
-<glyph unicode="&#250;" horiz-adv-x="642" d="M212 525v-291q0 -65 18 -95q18 -30 69 -30q44 0 74 23q30 23 44 58l0 335h140v-365q0 -42 4.5 -84q4.5 -42 12.5 -76l-103 0l-27 82h-11q-26 -42 -74 -69.5q-48 -27.5 -110 -27.5q-43 0 -76 11q-33 11 -55.5 36.5q-22.5 25.5 -34 67.5q-11.5 42 -11.5 104v321zM321 729h142v-29l-126 -129l-76 0z" />
-<glyph unicode="&#251;" horiz-adv-x="642" d="M212 525v-291q0 -65 18 -95q18 -30 69 -30q44 0 74 23q30 23 44 58l0 335h140v-365q0 -42 4.5 -84q4.5 -42 12.5 -76l-103 0l-27 82h-11q-26 -42 -74 -69.5q-48 -27.5 -110 -27.5q-43 0 -76 11q-33 11 -55.5 36.5q-22.5 25.5 -34 67.5q-11.5 42 -11.5 104v321zM278 752h92l125 -188h-110l-42 69l-24 64l-25 -63l-52 -70l-102 0z" />
-<glyph unicode="&#252;" horiz-adv-x="642" d="M212 525v-291q0 -65 18 -95q18 -30 69 -30q44 0 74 23q30 23 44 58l0 335h140v-365q0 -42 4.5 -84q4.5 -42 12.5 -76l-103 0l-27 82h-11q-26 -42 -74 -69.5q-48 -27.5 -110 -27.5q-43 0 -76 11q-33 11 -55.5 36.5q-22.5 25.5 -34 67.5q-11.5 42 -11.5 104v321zM114 657q0 35 21.5 56q21.5 21 55.5 21q34 0 54.5 -21q20.5 -21 20.5 -56q0 -30 -20.5 -51q-20.5 -21 -54.5 -21q-34 0 -55.5 21q-21.5 21 -21.5 51zt0 0zM367 657q0 35 20.5 56q20.5 21 54.5 21q35 0 55.5 -21q20.5 -21 20.5 -56q0 -30 -20.5 -51q-20.5 -21 -55.5 -21q-34 0 -54.5 21t-20.5 51z" />
-<glyph unicode="&#253;" horiz-adv-x="541" d="M264 234l22 -84h10l19 84l89 291h143l-174 -475q-22 -59 -41.5 -106q-19.5 -47 -42.5 -80q-23 -33 -51.5 -50.5q-28.5 -17.5 -67.5 -17.5q-26 0 -49.5 4.5q-23.5 4.5 -40.5 13.5l29 108q15 -5 31 -5q14 0 27 3q13 3 24 11.5q11 8.5 20.5 24q9.5 15.5 16.5 41.5l-240 528h169zM300 729h142v-29l-126 -129l-76 0z" />
-<glyph unicode="&#254;" horiz-adv-x="623" d="M72 700h140v-223h12q25 27 58 45q33 18 87 18q106 0 159 -62.5q53 -62.5 53 -201.5q0 -67 -17 -121q-17 -54 -49.5 -91.5q-32.5 -37.5 -81 -58q-48.5 -20.5 -111.5 -20.5q-35 0 -59 6q-24 6 -51 18l0 -209h-140zM326 423q-86 0 -114 -89l0 -201q17 -15 38 -23q21 -8 53 -8q68 0 101 42.5q33 42.5 33 135.5q0 67 -25.5 105t-85.5 38z" />
-<glyph unicode="&#255;" horiz-adv-x="541" d="M264 234l22 -84h10l19 84l89 291h143l-174 -475q-22 -59 -41.5 -106q-19.5 -47 -42.5 -80q-23 -33 -51.5 -50.5q-28.5 -17.5 -67.5 -17.5q-26 0 -49.5 4.5q-23.5 4.5 -40.5 13.5l29 108q15 -5 31 -5q14 0 27 3q13 3 24 11.5q11 8.5 20.5 24q9.5 15.5 16.5 41.5l-240 528h169zM76 657q0 35 21.5 56q21.5 21 55.5 21q34 0 54.5 -21q20.5 -21 20.5 -56q0 -30 -20.5 -51q-20.5 -21 -54.5 -21q-34 0 -55.5 21q-21.5 21 -21.5 51zt0 0zM329 657q0 35 20.5 56q20.5 21 54.5 21q35 0 55.5 -21q20.5 -21 20.5 -56q0 -30 -20.5 -51q-20.5 -21 -55.5 -21q-34 0 -54.5 21t-20.5 51z" />
-<glyph unicode="&#256;" horiz-adv-x="658" d="M441 149h-236l-57 -149h-148l274 705h109l275 -705h-157zM246 266h160l-54 146l-24 111h-5l-24 -112zM140 848h373v-92l-373 0z" />
-<glyph unicode="&#257;" horiz-adv-x="579" d="M67 489q45 20 110.5 33q65.5 13 135.5 13q55 0 92.5 -13q37.5 -13 59.5 -37.5q22 -24.5 31.5 -59q9.5 -34.5 9.5 -76.5q0 -51 -4 -101q-4 -50 -4 -106q0 -38 5 -74q5 -36 16 -69l-114 0l-23 78h-12q-26 -35 -66 -60q-40 -25 -103 -25q-38 0 -69.5 11q-31.5 11 -54 31.5q-22.5 20.5 -35 48.5q-12.5 28 -12.5 61q0 89 59.5 134.5q59.5 45.5 180.5 45.5q28 0 56 -4.5q28 -4.5 39 -6.5q3 21 3 36q0 38 -19 56q-19 18 -71 18q-48 0 -93.5 -11.5q-45.5 -11.5 -80.5 -28.5zM250 104q47 0 75 22q28 22 41 46l0 60q-5 2 -15.5 4q-10.5 2 -23 4q-12.5 2 -25 3q-12.5 1 -22.5 1q-54 0 -80 -19.5q-26 -19.5 -26 -48.5q0 -36 20.5 -54q20.5 -18 55.5 -18zt0 0zM104 679h351v-95l-351 0z" />
-<glyph unicode="&#258;" horiz-adv-x="658" d="M441 149h-236l-57 -149h-148l274 705h109l275 -705h-157zM246 266h160l-54 146l-24 111h-5l-24 -112zM177 876q23 -26 64 -38.5q41 -12.5 92 -12.5q52 0 90 14q38 14 59 37l53 -35q-13 -28 -34.5 -49q-21.5 -21 -49 -34.5q-27.5 -13.5 -58 -20.5q-30.5 -7 -61.5 -7q-29 0 -60 5.5q-31 5.5 -59.5 18q-28.5 12.5 -52.5 33q-24 20.5 -39 49.5z" />
-<glyph unicode="&#259;" horiz-adv-x="579" d="M67 489q45 20 110.5 33q65.5 13 135.5 13q55 0 92.5 -13q37.5 -13 59.5 -37.5q22 -24.5 31.5 -59q9.5 -34.5 9.5 -76.5q0 -51 -4 -101q-4 -50 -4 -106q0 -38 5 -74q5 -36 16 -69l-114 0l-23 78h-12q-26 -35 -66 -60q-40 -25 -103 -25q-38 0 -69.5 11q-31.5 11 -54 31.5q-22.5 20.5 -35 48.5q-12.5 28 -12.5 61q0 89 59.5 134.5q59.5 45.5 180.5 45.5q28 0 56 -4.5q28 -4.5 39 -6.5q3 21 3 36q0 38 -19 56q-19 18 -71 18q-48 0 -93.5 -11.5q-45.5 -11.5 -80.5 -28.5zM250 104q47 0 75 22q28 22 41 46l0 60q-5 2 -15.5 4q-10.5 2 -23 4q-12.5 2 -25 3q-12.5 1 -22.5 1q-54 0 -80 -19.5q-26 -19.5 -26 -48.5q0 -36 20.5 -54q20.5 -18 55.5 -18zt0 0zM160 728q23 -28 58.5 -43.5q35.5 -15.5 73.5 -15.5q38 0 71.5 15q33.5 15 52.5 44l64 -26q-5 -24 -21 -48q-16 -24 -41 -43q-25 -19 -57.5 -31q-32.5 -12 -69.5 -12q-73 0 -125 34.5q-52 34.5 -70 93.5z" />
-<glyph unicode="&#260;" horiz-adv-x="658" d="M441 149h-236l-57 -149h-148l274 705h109l275 -705h-19q-62 -27 -61 -74q0 -20 14 -33.5q14 -13.5 38 -13.5q11 0 21 2q10 2 23 9l22 -64q-18 -13 -53 -25q-35 -12 -76 -12q-61 0 -93 27q-32 27 -32 70q0 38 27.5 67.5q27.5 29.5 73.5 46.5l-42 0zM246 266h160l-54 146l-24 111h-5l-24 -112z" />
-<glyph unicode="&#261;" horiz-adv-x="579" d="M67 489q45 20 110.5 33q65.5 13 135.5 13q55 0 92.5 -13q37.5 -13 59.5 -37.5q22 -24.5 31.5 -59q9.5 -34.5 9.5 -76.5q0 -51 -4 -101q-4 -50 -4 -106q0 -38 5 -74q5 -36 16 -69l-21 0q-32 -13 -49.5 -30q-17.5 -17 -16.5 -43q0 -20 14 -33.5q14 -13.5 38 -13.5q11 0 21 2q10 2 23 9l22 -64q-18 -13 -53 -25q-35 -12 -76 -12q-61 0 -93 27q-32 27 -32 70q0 39 30 68q30 29 79 46l-23 77h-12q-26 -35 -66 -60q-40 -25 -103 -25q-38 0 -69.5 11q-31.5 11 -54 31.5q-22.5 20.5 -35 48.5q-12.5 28 -12.5 61q0 89 59.5 134.5q59.5 45.5 180.5 45.5q28 0 56 -4.5q28 -4.5 39 -6.5q3 21 3 36q0 38 -19 56q-19 18 -71 18q-48 0 -93.5 -11.5q-45.5 -11.5 -80.5 -28.5zM250 104q47 0 75 22q28 22 41 46l0 60q-5 2 -15.5 4q-10.5 2 -23 4q-12.5 2 -25 3q-12.5 1 -22.5 1q-54 0 -80 -19.5q-26 -19.5 -26 -48.5q0 -36 20.5 -54t55.5 -18z" />
-<glyph unicode="&#262;" horiz-adv-x="607" d="M579 30q-33 -23 -87 -33.5q-54 -10.5 -111 -10.5q-67 0 -128.5 20q-61.5 20 -109 64q-47.5 44 -75.5 113q-28 69 -28 167q0 102 32 171.5q32 69.5 82 112q50 42.5 111 61.5q61 19 120 19q65 0 109.5 -8q44.5 -8 73.5 -19v-124q-54 11 -87.5 16q-33.5 5 -84.5 5q-45 0 -81.5 -14.5q-36.5 -14.5 -62.5 -43.5q-26 -29 -40.5 -73q-14.5 -44 -14.5 -103q0 -52 13 -95q13 -43 39 -74q26 -31 66 -48q40 -17 93 -17q49 0 82.5 9q33.5 9 59.5 23zM407 870h172v-31l-174 -87l-112 0z" />
-<glyph unicode="&#263;" horiz-adv-x="500" d="M468 32q-34 -23 -81.5 -35q-47.5 -12 -98.5 -12q-68 0 -114.5 20q-46.5 20 -76 57q-29.5 37 -42.5 87.5q-13 50.5 -13 112.5q0 131 64.5 204.5q64.5 73.5 187.5 73.5q60 0 98.5 -9.5q38.5 -9.5 68.5 -24.5l-34 -112q-26 11 -51.5 16.5q-25.5 5.5 -59.5 5.5q-63 0 -96.5 -36.5q-33.5 -36.5 -33.5 -117.5q0 -32 8 -59.5q8 -27.5 25 -48.5q17 -21 43 -33q26 -12 61 -12q42 0 66.5 7.5q24.5 7.5 46.5 20.5zM298 729h142v-29l-126 -129l-76 0z" />
-<glyph unicode="&#264;" horiz-adv-x="607" d="M579 30q-33 -23 -87 -33.5q-54 -10.5 -111 -10.5q-67 0 -128.5 20q-61.5 20 -109 64q-47.5 44 -75.5 113q-28 69 -28 167q0 102 32 171.5q32 69.5 82 112q50 42.5 111 61.5q61 19 120 19q65 0 109.5 -8q44.5 -8 73.5 -19v-124q-54 11 -87.5 16q-33.5 5 -84.5 5q-45 0 -81.5 -14.5q-36.5 -14.5 -62.5 -43.5q-26 -29 -40.5 -73q-14.5 -44 -14.5 -103q0 -52 13 -95q13 -43 39 -74q26 -31 66 -48q40 -17 93 -17q49 0 82.5 9q33.5 9 59.5 23zM312 870h105l138 -92v-41h-108l-62 40l-22 34l-24 -33l-66 -41h-106l0 42z" />
-<glyph unicode="&#265;" horiz-adv-x="500" d="M468 32q-34 -23 -81.5 -35q-47.5 -12 -98.5 -12q-68 0 -114.5 20q-46.5 20 -76 57q-29.5 37 -42.5 87.5q-13 50.5 -13 112.5q0 131 64.5 204.5q64.5 73.5 187.5 73.5q60 0 98.5 -9.5q38.5 -9.5 68.5 -24.5l-34 -112q-26 11 -51.5 16.5q-25.5 5.5 -59.5 5.5q-63 0 -96.5 -36.5q-33.5 -36.5 -33.5 -117.5q0 -32 8 -59.5q8 -27.5 25 -48.5q17 -21 43 -33q26 -12 61 -12q42 0 66.5 7.5q24.5 7.5 46.5 20.5zM238 752h92l125 -188h-110l-42 69l-24 64l-25 -63l-52 -70l-102 0z" />
-<glyph unicode="&#268;" horiz-adv-x="607" d="M579 30q-33 -23 -87 -33.5q-54 -10.5 -111 -10.5q-67 0 -128.5 20q-61.5 20 -109 64q-47.5 44 -75.5 113q-28 69 -28 167q0 102 32 171.5q32 69.5 82 112q50 42.5 111 61.5q61 19 120 19q65 0 109.5 -8q44.5 -8 73.5 -19v-124q-54 11 -87.5 16q-33.5 5 -84.5 5q-45 0 -81.5 -14.5q-36.5 -14.5 -62.5 -43.5q-26 -29 -40.5 -73q-14.5 -44 -14.5 -103q0 -52 13 -95q13 -43 39 -74q26 -31 66 -48q40 -17 93 -17q49 0 82.5 9q33.5 9 59.5 23zM419 736h-102l-138 93v41h114l57 -44l21 -30l22 29l62 45h109l0 -42z" />
-<glyph unicode="&#269;" horiz-adv-x="500" d="M468 32q-34 -23 -81.5 -35q-47.5 -12 -98.5 -12q-68 0 -114.5 20q-46.5 20 -76 57q-29.5 37 -42.5 87.5q-13 50.5 -13 112.5q0 131 64.5 204.5q64.5 73.5 187.5 73.5q60 0 98.5 -9.5q38.5 -9.5 68.5 -24.5l-34 -112q-26 11 -51.5 16.5q-25.5 5.5 -59.5 5.5q-63 0 -96.5 -36.5q-33.5 -36.5 -33.5 -117.5q0 -32 8 -59.5q8 -27.5 25 -48.5q17 -21 43 -33q26 -12 61 -12q42 0 66.5 7.5q24.5 7.5 46.5 20.5zM325 584h-99l-129 188h116l43 -69l25 -63l24 62l50 70l108 0z" />
-<glyph unicode="&#270;" horiz-adv-x="702" d="M65 700q22 3 50.5 5q28.5 2 59 3q30.5 1 59.5 1.5q29 0.5 52 0.5q100 0 171.5 -26.5q71.5 -26.5 117 -73.5q45.5 -47 66.5 -112q21 -65 21 -142q0 -70 -20.5 -136q-20.5 -66 -66.5 -117.5q-46 -51.5 -120 -82.5q-74 -31 -182 -31q-17 0 -46.5 1q-29.5 1 -61 2.5q-31.5 1.5 -59 3q-27.5 1.5 -41.5 3.5zM297 580q-23 0 -47 -0.5q-24 -0.5 -37 -2.5l0 -454q5 -1 15.5 -1.5q10.5 -0.5 22 -1q11.5 -0.5 22 -1q10.5 -0.5 15.5 -0.5q64 0 106 20q42 20 66.5 53q24.5 33 34.5 75q10 42 10 87q0 37 -9 77q-9 40 -32.5 73q-23.5 33 -63.5 54.5q-40 21.5 -103 21.5zt0 0zM360 736h-102l-138 93v41h114l57 -44l21 -30l22 29l62 45h109l0 -42z" />
-<glyph unicode="&#271;" horiz-adv-x="628" d="M550 184q0 -42 1 -87q1 -45 9 -98l-97 0l-20 73h-13q-23 -40 -65.5 -63.5q-42.5 -23.5 -101.5 -23.5q-105 0 -163 65.5q-58 65.5 -58 202.5q0 66 16.5 119q16.5 53 49 90q32.5 37 80.5 57q48 20 111 20q35 0 60.5 -5.5q25.5 -5.5 50.5 -13.5l0 180h140zM299 102q47 0 73 21.5q26 21.5 38 61.5l0 210q-18 14 -38.5 20.5q-20.5 6.5 -53.5 6.5q-67 0 -99.5 -39q-32.5 -39 -32.5 -134q0 -66 27.5 -106.5q27.5 -40.5 85.5 -40.5zt0 0zM725 700q-2 -29 -13 -61q-11 -32 -26 -60.5q-15 -28.5 -31 -51.5q-16 -23 -28 -33l-63 35q19 36 28.5 80.5q9.5 44.5 9.5 90.5z" />
-<glyph unicode="&#272;" horiz-adv-x="714" d="M-7 412h84v288q22 3 50.5 5q28.5 2 59 3q30.5 1 59.5 1.5q29 0.5 52 0.5q100 0 171.5 -26.5q71.5 -26.5 117 -73.5q45.5 -47 66.5 -112q21 -65 21 -142q0 -70 -20.5 -136q-20.5 -66 -66.5 -117.5q-46 -51.5 -120 -82.5q-74 -31 -182 -31q-17 0 -46.5 1q-29.5 1 -61 2.5q-31.5 1.5 -59 3q-27.5 1.5 -41.5 3.5l0 296h-84zM225 412h135v-117h-135v-172q5 -1 15.5 -1.5q10.5 -0.5 22 -1q11.5 -0.5 22 -1q10.5 -0.5 15.5 -0.5q64 0 106 20q42 20 66.5 53q24.5 33 34.5 75q10 42 10 87q0 37 -9 77q-9 40 -32.5 73q-23.5 33 -63.5 54.5q-40 21.5 -103 21.5q-23 0 -47 -0.5q-24 -0.5 -37 -2.5z" />
-<glyph unicode="&#273;" horiz-adv-x="638" d="M550 656h88v-82h-88v-390q0 -42 1 -87q1 -45 9 -98l-97 0l-20 73h-13q-23 -40 -65.5 -63.5q-42.5 -23.5 -101.5 -23.5q-105 0 -163 65.5q-58 65.5 -58 202.5q0 66 16.5 119q16.5 53 49 90q32.5 37 80.5 57q48 20 111 20q35 0 60.5 -5.5q25.5 -5.5 50.5 -13.5l0 54h-170v82h170v44h140zM410 395q-18 14 -38.5 20.5q-20.5 6.5 -53.5 6.5q-67 0 -99.5 -39q-32.5 -39 -32.5 -134q0 -66 27.5 -106.5q27.5 -40.5 85.5 -40.5q47 0 73 21.5q26 21.5 38 61.5z" />
-<glyph unicode="&#274;" horiz-adv-x="566" d="M65 700h451v-130h-303v-152h275v-130h-275v-158h308v-130h-456zM105 848h373v-92l-373 0z" />
-<glyph unicode="&#275;" horiz-adv-x="594" d="M521 48q-34 -26 -92.5 -44.5q-58.5 -18.5 -125.5 -18.5q-135 0 -198 74q-63 74 -63 203q0 137 71 207.5q71 70.5 200 70.5q42 0 83 -10.5q41 -10.5 73 -35q32 -24.5 51.5 -66q19.5 -41.5 19.5 -102.5q0 -21 -2.5 -46q-2.5 -25 -8.5 -52l-350 0q5 -68 39.5 -100.5q34.5 -32.5 112.5 -32.5q47 0 84.5 13.5q37.5 13.5 57.5 27.5zM311 430q-62 0 -92 -33.5q-30 -33.5 -35 -85.5l226 0q4 55 -20 87q-24 32 -79 32zt0 0zM128 679h351v-95l-351 0z" />
-<glyph unicode="&#278;" horiz-adv-x="566" d="M65 700h451v-130h-303v-152h275v-130h-275v-158h308v-130h-456zM209 799q0 25 23.5 43q23.5 18 70.5 18q47 0 71.5 -18q24.5 -18 24.5 -43q0 -27 -24.5 -45q-24.5 -18 -71.5 -18q-47 0 -70.5 18t-23.5 45z" />
-<glyph unicode="&#279;" horiz-adv-x="594" d="M521 48q-34 -26 -92.5 -44.5q-58.5 -18.5 -125.5 -18.5q-135 0 -198 74q-63 74 -63 203q0 137 71 207.5q71 70.5 200 70.5q42 0 83 -10.5q41 -10.5 73 -35q32 -24.5 51.5 -66q19.5 -41.5 19.5 -102.5q0 -21 -2.5 -46q-2.5 -25 -8.5 -52l-350 0q5 -68 39.5 -100.5q34.5 -32.5 112.5 -32.5q47 0 84.5 13.5q37.5 13.5 57.5 27.5zM311 430q-62 0 -92 -33.5q-30 -33.5 -35 -85.5l226 0q4 55 -20 87q-24 32 -79 32zt0 0zM217 656q0 32 23 53.5q23 21.5 65 21.5q43 0 68 -22q25 -22 25 -53q0 -29 -25 -50q-25 -21 -68 -21q-42 0 -65 21t-23 50z" />
-<glyph unicode="&#280;" horiz-adv-x="566" d="M65 700h451v-130h-303v-152h275v-130h-275v-158h308v-130h-24q-62 -27 -61 -74q0 -20 14 -33.5q14 -13.5 38 -13.5q11 0 21 2q10 2 23 9l22 -64q-18 -13 -53 -25q-35 -12 -76 -12q-61 0 -93 27q-32 27 -32 70q0 38 27.5 67.5q27.5 29.5 73.5 46.5l-336 0z" />
-<glyph unicode="&#281;" horiz-adv-x="594" d="M521 48q-13 -10 -30 -19q-17 -9 -37 -17q-30 -15 -46 -35q-16 -20 -16 -52q0 -20 13 -33.5q13 -13.5 39 -13.5q19 0 42 10l21 -62q-9 -6 -22.5 -13q-13.5 -7 -30.5 -12q-17 -5 -35.5 -8.5q-18.5 -3.5 -37.5 -3.5q-64 0 -96.5 27q-32.5 27 -32.5 70q0 31 20 56q20 25 52 44q-5 -1 -10.5 -1q-5.5 0 -10.5 0q-135 0 -198 74q-63 74 -63 203q0 137 71 207.5q71 70.5 200 70.5q42 0 83 -10.5q41 -10.5 73 -35q32 -24.5 51.5 -66q19.5 -41.5 19.5 -102.5q0 -21 -2.5 -46q-2.5 -25 -8.5 -52l-350 0q5 -68 39.5 -100.5q34.5 -32.5 112.5 -32.5q47 0 84.5 13.5q37.5 13.5 57.5 27.5zM311 430q-62 0 -92 -33.5q-30 -33.5 -35 -85.5l226 0q4 55 -20 87t-79 32z" />
-<glyph unicode="&#282;" horiz-adv-x="566" d="M65 700h451v-130h-303v-152h275v-130h-275v-158h308v-130h-456zM334 736h-102l-138 93v41h114l57 -44l21 -30l22 29l62 45h109l0 -42z" />
-<glyph unicode="&#283;" horiz-adv-x="594" d="M521 48q-34 -26 -92.5 -44.5q-58.5 -18.5 -125.5 -18.5q-135 0 -198 74q-63 74 -63 203q0 137 71 207.5q71 70.5 200 70.5q42 0 83 -10.5q41 -10.5 73 -35q32 -24.5 51.5 -66q19.5 -41.5 19.5 -102.5q0 -21 -2.5 -46q-2.5 -25 -8.5 -52l-350 0q5 -68 39.5 -100.5q34.5 -32.5 112.5 -32.5q47 0 84.5 13.5q37.5 13.5 57.5 27.5zM311 430q-62 0 -92 -33.5q-30 -33.5 -35 -85.5l226 0q4 55 -20 87q-24 32 -79 32zt0 0zM346 584h-99l-129 188h116l43 -69l25 -63l24 62l50 70l108 0z" />
-<glyph unicode="&#284;" horiz-adv-x="661" d="M331 368h286v-314q-23 -18 -50.5 -30.5q-27.5 -12.5 -58 -21q-30.5 -8.5 -62.5 -12.5q-32 -4 -63 -4q-72 0 -134.5 21q-62.5 21 -109 65.5q-46.5 44.5 -73 113.5q-26.5 69 -26.5 164q0 99 32 168.5q32 69.5 83.5 113q51.5 43.5 115 63q63.5 19.5 126.5 19.5q65 0 114.5 -9.5q49.5 -9.5 77.5 -18.5l-31 -123q-27 9 -61 15q-34 6 -85 6q-47 0 -86 -12.5q-39 -12.5 -68 -40.5q-29 -28 -45 -73q-16 -45 -16 -109q0 -62 16 -106q16 -44 43.5 -72.5q27.5 -28.5 63.5 -41.5q36 -13 76 -13q27 0 54.5 6q27.5 6 46.5 19l0 121l-166 16zM328 870h105l138 -92v-41h-108l-62 40l-22 34l-24 -33l-66 -41h-106l0 42z" />
-<glyph unicode="&#285;" horiz-adv-x="619" d="M547 20q0 -116 -66 -171q-66 -55 -187 -55q-78 0 -125.5 10.5q-47.5 10.5 -73.5 23.5q13 40 19.5 63.5q6.5 23.5 9.5 35.5q3 12 4 15q1 3 1 3q24 -12 58 -24.5q34 -12.5 83 -12.5q41 0 68 8q27 8 43 23.5q16 15.5 22.5 37.5q6.5 22 6.5 49v39h-12q-20 -29 -55 -41q-35 -12 -87 -12q-107 0 -160.5 59q-53.5 59 -53.5 190q0 138 70.5 208q70.5 70 209.5 70q73 0 130.5 -9.5q57.5 -9.5 94.5 -21.5zM289 121q46 0 75.5 17q29.5 17 42.5 42l0 226q-37 16 -94 16q-61 0 -94 -36q-33 -36 -33 -119q0 -76 28 -111q28 -35 75 -35zt0 0zM273 752h92l125 -188h-110l-42 69l-24 64l-25 -63l-52 -70l-102 0z" />
-<glyph unicode="&#286;" horiz-adv-x="661" d="M331 368h286v-314q-23 -18 -50.5 -30.5q-27.5 -12.5 -58 -21q-30.5 -8.5 -62.5 -12.5q-32 -4 -63 -4q-72 0 -134.5 21q-62.5 21 -109 65.5q-46.5 44.5 -73 113.5q-26.5 69 -26.5 164q0 99 32 168.5q32 69.5 83.5 113q51.5 43.5 115 63q63.5 19.5 126.5 19.5q65 0 114.5 -9.5q49.5 -9.5 77.5 -18.5l-31 -123q-27 9 -61 15q-34 6 -85 6q-47 0 -86 -12.5q-39 -12.5 -68 -40.5q-29 -28 -45 -73q-16 -45 -16 -109q0 -62 16 -106q16 -44 43.5 -72.5q27.5 -28.5 63.5 -41.5q36 -13 76 -13q27 0 54.5 6q27.5 6 46.5 19l0 121l-166 16zM210 876q23 -26 64 -38.5q41 -12.5 92 -12.5q52 0 90 14q38 14 59 37l53 -35q-13 -28 -34.5 -49q-21.5 -21 -49 -34.5q-27.5 -13.5 -58 -20.5q-30.5 -7 -61.5 -7q-29 0 -60 5.5q-31 5.5 -59.5 18q-28.5 12.5 -52.5 33q-24 20.5 -39 49.5z" />
-<glyph unicode="&#287;" horiz-adv-x="619" d="M547 20q0 -116 -66 -171q-66 -55 -187 -55q-78 0 -125.5 10.5q-47.5 10.5 -73.5 23.5q13 40 19.5 63.5q6.5 23.5 9.5 35.5q3 12 4 15q1 3 1 3q24 -12 58 -24.5q34 -12.5 83 -12.5q41 0 68 8q27 8 43 23.5q16 15.5 22.5 37.5q6.5 22 6.5 49v39h-12q-20 -29 -55 -41q-35 -12 -87 -12q-107 0 -160.5 59q-53.5 59 -53.5 190q0 138 70.5 208q70.5 70 209.5 70q73 0 130.5 -9.5q57.5 -9.5 94.5 -21.5zM289 121q46 0 75.5 17q29.5 17 42.5 42l0 226q-37 16 -94 16q-61 0 -94 -36q-33 -36 -33 -119q0 -76 28 -111q28 -35 75 -35zt0 0zM184 728q23 -28 58.5 -43.5q35.5 -15.5 73.5 -15.5q38 0 71.5 15q33.5 15 52.5 44l64 -26q-5 -24 -21 -48q-16 -24 -41 -43q-25 -19 -57.5 -31q-32.5 -12 -69.5 -12q-73 0 -125 34.5q-52 34.5 -70 93.5z" />
-<glyph unicode="&#290;" horiz-adv-x="661" d="M331 368h286v-314q-23 -18 -50.5 -30.5q-27.5 -12.5 -58 -21q-30.5 -8.5 -62.5 -12.5q-32 -4 -63 -4q-72 0 -134.5 21q-62.5 21 -109 65.5q-46.5 44.5 -73 113.5q-26.5 69 -26.5 164q0 99 32 168.5q32 69.5 83.5 113q51.5 43.5 115 63q63.5 19.5 126.5 19.5q65 0 114.5 -9.5q49.5 -9.5 77.5 -18.5l-31 -123q-27 9 -61 15q-34 6 -85 6q-47 0 -86 -12.5q-39 -12.5 -68 -40.5q-29 -28 -45 -73q-16 -45 -16 -109q0 -62 16 -106q16 -44 43.5 -72.5q27.5 -28.5 63.5 -41.5q36 -13 76 -13q27 0 54.5 6q27.5 6 46.5 19l0 121l-166 16zM297 -105q0 29 20 47q20 18 51 18q38 0 62 -24.5q24 -24.5 24 -65.5q0 -34 -12 -59.5q-12 -25.5 -29.5 -43q-17.5 -17.5 -36.5 -28.5q-19 -11 -33 -15l-36 60q15 6 29.5 16.5q14.5 10.5 16.5 31.5q-20 -1 -38 15t-18 48z" />
-<glyph unicode="&#291;" horiz-adv-x="619" d="M547 20q0 -116 -66 -171q-66 -55 -187 -55q-78 0 -125.5 10.5q-47.5 10.5 -73.5 23.5q13 40 19.5 63.5q6.5 23.5 9.5 35.5q3 12 4 15q1 3 1 3q24 -12 58 -24.5q34 -12.5 83 -12.5q41 0 68 8q27 8 43 23.5q16 15.5 22.5 37.5q6.5 22 6.5 49v39h-12q-20 -29 -55 -41q-35 -12 -87 -12q-107 0 -160.5 59q-53.5 59 -53.5 190q0 138 70.5 208q70.5 70 209.5 70q73 0 130.5 -9.5q57.5 -9.5 94.5 -21.5zM289 121q46 0 75.5 17q29.5 17 42.5 42l0 226q-37 16 -94 16q-61 0 -94 -36q-33 -36 -33 -119q0 -76 28 -111q28 -35 75 -35zt0 0zM407 649q0 -29 -20 -47q-20 -18 -51 -18q-38 0 -62 24.5q-24 24.5 -24 65.5q0 34 12 59.5q12 25.5 29.5 43q17.5 17.5 36.5 28.5q19 11 33 15l36 -60q-15 -6 -29.5 -16.5q-14.5 -10.5 -16.5 -31.5q20 1 38 -15t18 -48z" />
-<glyph unicode="&#292;" horiz-adv-x="706" d="M493 289h-280v-289h-148v700h148v-281h280v281h148v-700h-148zM302 870h105l138 -92v-41h-108l-62 40l-22 34l-24 -33l-66 -41h-106l0 42z" />
-<glyph unicode="&#293;" horiz-adv-x="638" d="M426 0v289q0 68 -20.5 97.5q-20.5 29.5 -75.5 29.5q-40 0 -73.5 -25.5q-33.5 -25.5 -44.5 -67.5l0 -323h-140v700h140v-239h12q27 35 67.5 57q40.5 22 102.5 22q43 0 75 -10.5q32 -10.5 53.5 -36q21.5 -25.5 32.5 -68q11 -42.5 11 -105.5v-320zM103 870h105l138 -92v-41h-108l-62 40l-22 34l-24 -33l-66 -41h-106l0 42z" />
-<glyph unicode="&#294;" horiz-adv-x="742" d="M2 601h82v99h148v-99h280v99h148v-99h80v-86h-80v-515h-148v289h-280v-289h-148v515h-82zM512 419v96h-280l0 -96z" />
-<glyph unicode="&#295;" horiz-adv-x="652" d="M0 642h86v58h140v-58h171v-83h-171v-98h12q27 35 67.5 57q40.5 22 102.5 22q43 0 75 -10.5q32 -10.5 53.5 -36q21.5 -25.5 32.5 -68q11 -42.5 11 -105.5v-320h-140v289q0 68 -20.5 97.5q-20.5 29.5 -75.5 29.5q-40 0 -73.5 -25.5q-33.5 -25.5 -44.5 -67.5l0 -323h-140v559l-86 0z" />
-<glyph unicode="&#298;" horiz-adv-x="388" d="M120 620h-80v80h308v-80h-80v-540h80v-80h-308v80h80zM8 848h373v-92l-373 0z" />
-<glyph unicode="&#299;" horiz-adv-x="317" d="M89 525h140v-525h-140zM-17 679h351v-95l-351 0z" />
-<glyph unicode="&#302;" horiz-adv-x="388" d="M120 620h-80v80h308v-80h-80v-540h80v-80h-51q-62 -27 -61 -74q0 -20 14 -33.5q14 -13.5 38 -13.5q11 0 21 2q10 2 23 9l22 -64q-18 -13 -53 -25q-35 -12 -76 -12q-61 0 -93 27q-32 27 -32 70q0 38 27.5 67.5q27.5 29.5 73.5 46.5l-161 0v80l80 0z" />
-<glyph unicode="&#303;" horiz-adv-x="317" d="M89 525h140v-525h-10q-62 -27 -61 -74q0 -20 14 -33.5q14 -13.5 38 -13.5q11 0 21 2q10 2 23 9l22 -64q-18 -13 -53 -25q-35 -12 -76 -12q-61 0 -93 27q-32 27 -32 70q0 38 27.5 67.5q27.5 29.5 73.5 46.5l-34 0zM68 636q0 32 23 53.5q23 21.5 65 21.5q43 0 68 -22q25 -22 25 -53q0 -29 -25 -50q-25 -21 -68 -21q-42 0 -65 21t-23 50z" />
-<glyph unicode="&#304;" horiz-adv-x="388" d="M120 620h-80v80h308v-80h-80v-540h80v-80h-308v80h80zM99 799q0 25 23.5 43q23.5 18 70.5 18q47 0 71.5 -18q24.5 -18 24.5 -43q0 -27 -24.5 -45q-24.5 -18 -71.5 -18q-47 0 -70.5 18t-23.5 45z" />
-<glyph unicode="&#305;" horiz-adv-x="317" d="M89 525h140v-525l-140 0z" />
-<glyph unicode="&#308;" horiz-adv-x="362" d="M143 700h148v-510q0 -37 -10 -73q-10 -36 -31.5 -65q-21.5 -29 -56.5 -47q-35 -18 -85 -18q-32 0 -68.5 6.5q-36.5 6.5 -64.5 18.5l32 118q29 -13 64 -13q23 0 37 8.5q14 8.5 22 24q8 15.5 10.5 36.5q2.5 21 2.5 45zM166 870h105l138 -92v-41h-108l-62 40l-22 34l-24 -33l-66 -41h-106l0 42z" />
-<glyph unicode="&#309;" horiz-adv-x="317" d="M91 525h140v-549q0 -95 -39 -146q-39 -51 -126 -51q-34 0 -72 7l0 117q31 -3 50 4q19 7 29.5 22q10.5 15 14 37q3.5 22 3.5 51zM119 752h92l125 -188h-110l-42 69l-24 64l-25 -63l-52 -70l-102 0z" />
-<glyph unicode="&#310;" horiz-adv-x="671" d="M252 296h-39v-296h-148v700h148v-308l35 15l210 293h169l-222 -293l-58 -38l60 -40l254 -329h-183zM238 -105q0 29 20 47q20 18 51 18q38 0 62 -24.5q24 -24.5 24 -65.5q0 -34 -12 -59.5q-12 -25.5 -29.5 -43q-17.5 -17.5 -36.5 -28.5q-19 -11 -33 -15l-36 60q15 6 29.5 16.5q14.5 10.5 16.5 31.5q-20 -1 -38 15t-18 48z" />
-<glyph unicode="&#311;" horiz-adv-x="564" d="M260 218h-48v-218h-140v700h140v-402l44 19l131 208h154l-134 -191h1l-64 -46l67 -44h-1l154 -244h-162zM207 -105q0 29 20 47q20 18 51 18q38 0 62 -24.5q24 -24.5 24 -65.5q0 -34 -12 -59.5q-12 -25.5 -29.5 -43q-17.5 -17.5 -36.5 -28.5q-19 -11 -33 -15l-36 60q15 6 29.5 16.5q14.5 10.5 16.5 31.5q-20 -1 -38 15t-18 48z" />
-<glyph unicode="&#313;" horiz-adv-x="557" d="M547 0h-482v700h148v-570h334zM231 870h172v-31l-174 -87l-112 0z" />
-<glyph unicode="&#314;" horiz-adv-x="337" d="M215 184q0 -76 49 -76q14 0 26.5 2.5q12.5 2.5 29.5 8.5l17 -109q-20 -9 -56.5 -17.5q-36.5 -8.5 -75.5 -8.5q-63 0 -96.5 28q-33.5 28 -33.5 92v596h140zM191 870h172v-31l-174 -87l-112 0z" />
-<glyph unicode="&#315;" horiz-adv-x="557" d="M547 0h-482v700h148v-570h334zM196 -105q0 29 20 47q20 18 51 18q38 0 62 -24.5q24 -24.5 24 -65.5q0 -34 -12 -59.5q-12 -25.5 -29.5 -43q-17.5 -17.5 -36.5 -28.5q-19 -11 -33 -15l-36 60q15 6 29.5 16.5q14.5 10.5 16.5 31.5q-20 -1 -38 15t-18 48z" />
-<glyph unicode="&#316;" horiz-adv-x="337" d="M215 184q0 -76 49 -76q14 0 26.5 2.5q12.5 2.5 29.5 8.5l17 -109q-20 -9 -56.5 -17.5q-36.5 -8.5 -75.5 -8.5q-63 0 -96.5 28q-33.5 28 -33.5 92v596h140zM105 -105q0 29 20 47q20 18 51 18q38 0 62 -24.5q24 -24.5 24 -65.5q0 -34 -12 -59.5q-12 -25.5 -29.5 -43q-17.5 -17.5 -36.5 -28.5q-19 -11 -33 -15l-36 60q15 6 29.5 16.5q14.5 10.5 16.5 31.5q-20 -1 -38 15t-18 48z" />
-<glyph unicode="&#317;" horiz-adv-x="557" d="M547 0h-482v700h148v-570h334zM499 700q-2 -29 -13 -61q-11 -32 -26 -60.5q-15 -28.5 -31 -51.5q-16 -23 -28 -33l-63 35q19 36 28.5 80.5q9.5 44.5 9.5 90.5z" />
-<glyph unicode="&#318;" horiz-adv-x="337" d="M215 184q0 -76 49 -76q14 0 26.5 2.5q12.5 2.5 29.5 8.5l17 -109q-20 -9 -56.5 -17.5q-36.5 -8.5 -75.5 -8.5q-63 0 -96.5 28q-33.5 28 -33.5 92v596h140zM396 700q-2 -29 -13 -61q-11 -32 -26 -60.5q-15 -28.5 -31 -51.5q-16 -23 -28 -33l-63 35q19 36 28.5 80.5q9.5 44.5 9.5 90.5z" />
-<glyph unicode="&#321;" horiz-adv-x="569" d="M2 321l75 46v333h148v-241l108 67v-129l-108 -66v-201h334v-130h-482v241l-75 -45z" />
-<glyph unicode="&#322;" horiz-adv-x="359" d="M0 309l97 60v331h140v-245l94 59v-129l-94 -58v-143q0 -76 48 -76q25 0 57 11l17 -109q-20 -9 -56.5 -17.5q-36.5 -8.5 -75.5 -8.5q-63 0 -96.5 28q-33.5 28 -33.5 92v139l-97 -59z" />
-<glyph unicode="&#323;" horiz-adv-x="713" d="M254 365l-60 105h-5l16 -106v-364h-140v705h107l289 -373l57 -102h6l-16 103v367h140v-705h-107zM393 870h172v-31l-174 -87l-112 0z" />
-<glyph unicode="&#324;" horiz-adv-x="638" d="M426 0v288q0 68 -21 98q-21 30 -74 30q-45 0 -76.5 -24.5q-31.5 -24.5 -43.5 -62.5q0 -82 0.5 -164.5q0.5 -82.5 0.5 -164.5l-140 0v525h110l15 -75h15q26 37 69 63.5q43 26.5 112 26.5q42 0 74.5 -10.5q32.5 -10.5 54 -36q21.5 -25.5 33 -68.5q11.5 -43 11.5 -108v-317zM334 729h142v-29l-126 -129l-76 0z" />
-<glyph unicode="&#325;" horiz-adv-x="713" d="M254 365l-60 105h-5l16 -106v-364h-140v705h107l289 -373l57 -102h6l-16 103v367h140v-705h-107zM272 -105q0 29 20 47q20 18 51 18q38 0 62 -24.5q24 -24.5 24 -65.5q0 -34 -12 -59.5q-12 -25.5 -29.5 -43q-17.5 -17.5 -36.5 -28.5q-19 -11 -33 -15l-36 60q15 6 29.5 16.5q14.5 10.5 16.5 31.5q-20 -1 -38 15t-18 48z" />
-<glyph unicode="&#326;" horiz-adv-x="638" d="M426 0v288q0 68 -21 98q-21 30 -74 30q-45 0 -76.5 -24.5q-31.5 -24.5 -43.5 -62.5q0 -82 0.5 -164.5q0.5 -82.5 0.5 -164.5l-140 0v525h110l15 -75h15q26 37 69 63.5q43 26.5 112 26.5q42 0 74.5 -10.5q32.5 -10.5 54 -36q21.5 -25.5 33 -68.5q11.5 -43 11.5 -108v-317zM229 -105q0 29 20 47q20 18 51 18q38 0 62 -24.5q24 -24.5 24 -65.5q0 -34 -12 -59.5q-12 -25.5 -29.5 -43q-17.5 -17.5 -36.5 -28.5q-19 -11 -33 -15l-36 60q15 6 29.5 16.5q14.5 10.5 16.5 31.5q-20 -1 -38 15t-18 48z" />
-<glyph unicode="&#327;" horiz-adv-x="713" d="M254 365l-60 105h-5l16 -106v-364h-140v705h107l289 -373l57 -102h6l-16 103v367h140v-705h-107zM410 736h-102l-138 93v41h114l57 -44l21 -30l22 29l62 45h109l0 -42z" />
-<glyph unicode="&#328;" horiz-adv-x="638" d="M426 0v288q0 68 -21 98q-21 30 -74 30q-45 0 -76.5 -24.5q-31.5 -24.5 -43.5 -62.5q0 -82 0.5 -164.5q0.5 -82.5 0.5 -164.5l-140 0v525h110l15 -75h15q26 37 69 63.5q43 26.5 112 26.5q42 0 74.5 -10.5q32.5 -10.5 54 -36q21.5 -25.5 33 -68.5q11.5 -43 11.5 -108v-317zM367 584h-99l-129 188h116l43 -69l25 -63l24 62l50 70l108 0z" />
-<glyph unicode="&#332;" horiz-adv-x="727" d="M40 350q0 86 22 154q22 68 63.5 114.5q41.5 46.5 101.5 71q60 24.5 136 24.5q81 0 141.5 -26.5q60.5 -26.5 101 -74.5q40.5 -48 61 -115q20.5 -67 20.5 -148q0 -86 -22.5 -154q-22.5 -68 -64.5 -114.5q-42 -46.5 -102 -71q-60 -24.5 -135 -24.5q-81 0 -141.5 26.5q-60.5 26.5 -101 74.5q-40.5 48 -60.5 115q-20 67 -20 148zt0 0zM197 350q0 -52 10 -95q10 -43 30 -74q20 -31 51.5 -48q31.5 -17 74.5 -17q79 0 123 54q44 54 44 180q0 50 -9 93q-9 43 -29.5 74.5q-20.5 31.5 -52 49q-31.5 17.5 -76.5 17.5q-78 0 -122 -56q-44 -56 -44 -178zt0 0zM177 848h373v-92l-373 0z" />
-<glyph unicode="&#333;" horiz-adv-x="616" d="M42 262q0 130 69 204q69 74 197 74q67 0 117 -21q50 -21 83 -58.5q33 -37.5 49.5 -88q16.5 -50.5 16.5 -110.5q0 -64 -18 -115.5q-18 -51.5 -52 -87.5q-34 -36 -83.5 -55q-49.5 -19 -112.5 -19q-68 0 -118 21q-50 21 -83 58.5q-33 37.5 -49 88q-16 50.5 -16 109.5zt0 0zM186 262q0 -33 7 -62q7 -29 21.5 -50.5q14.5 -21.5 37.5 -34.5q23 -13 56 -13q122 0 122 160q0 35 -6.5 64.5q-6.5 29.5 -21 51q-14.5 21.5 -38 33.5q-23.5 12 -56.5 12q-57 0 -89.5 -38q-32.5 -38 -32.5 -123zt0 0zM133 679h351v-95l-351 0z" />
-<glyph unicode="&#336;" horiz-adv-x="727" d="M40 350q0 86 22 154q22 68 63.5 114.5q41.5 46.5 101.5 71q60 24.5 136 24.5q81 0 141.5 -26.5q60.5 -26.5 101 -74.5q40.5 -48 61 -115q20.5 -67 20.5 -148q0 -86 -22.5 -154q-22.5 -68 -64.5 -114.5q-42 -46.5 -102 -71q-60 -24.5 -135 -24.5q-81 0 -141.5 26.5q-60.5 26.5 -101 74.5q-40.5 48 -60.5 115q-20 67 -20 148zt0 0zM197 350q0 -52 10 -95q10 -43 30 -74q20 -31 51.5 -48q31.5 -17 74.5 -17q79 0 123 54q44 54 44 180q0 50 -9 93q-9 43 -29.5 74.5q-20.5 31.5 -52 49q-31.5 17.5 -76.5 17.5q-78 0 -122 -56q-44 -56 -44 -178zt0 0zM270 850h145v-16l-109 -93h-101zM485 850h151v-16l-155 -93l-102 0z" />
-<glyph unicode="&#337;" horiz-adv-x="616" d="M42 262q0 130 69 204q69 74 197 74q67 0 117 -21q50 -21 83 -58.5q33 -37.5 49.5 -88q16.5 -50.5 16.5 -110.5q0 -64 -18 -115.5q-18 -51.5 -52 -87.5q-34 -36 -83.5 -55q-49.5 -19 -112.5 -19q-68 0 -118 21q-50 21 -83 58.5q-33 37.5 -49 88q-16 50.5 -16 109.5zt0 0zM186 262q0 -33 7 -62q7 -29 21.5 -50.5q14.5 -21.5 37.5 -34.5q23 -13 56 -13q122 0 122 160q0 35 -6.5 64.5q-6.5 29.5 -21 51q-14.5 21.5 -38 33.5q-23.5 12 -56.5 12q-57 0 -89.5 -38q-32.5 -38 -32.5 -123zt0 0zM210 738h127v-14l-85 -117h-81zM414 738h137v-14l-134 -117l-84 0z" />
-<glyph unicode="&#338;" horiz-adv-x="993" d="M492 558q-23 11 -56 18.5q-33 7.5 -74 7.5q-78 0 -121.5 -56.5q-43.5 -56.5 -43.5 -177.5q0 -52 9.5 -95q9.5 -43 30.5 -74q21 -31 54 -48q33 -17 80 -17q32 0 60.5 3.5q28.5 3.5 60.5 16.5zM492 0q-10 -3 -25 -6q-15 -3 -32 -4.5q-17 -1.5 -35 -2.5q-18 -1 -35 -1q-82 0 -143 26.5q-61 26.5 -101.5 74.5q-40.5 48 -60.5 115q-20 67 -20 148q0 86 22 154q22 68 63.5 114.5q41.5 46.5 102 71q60.5 24.5 137.5 24.5q44 0 74 -4.5q30 -4.5 53 -9.5l451 0v-130h-303v-152h275v-130h-275v-158h308l0 -130z" />
-<glyph unicode="&#339;" horiz-adv-x="978" d="M186 262q0 -33 7 -62.5q7 -29.5 21.5 -51q14.5 -21.5 37.5 -34q23 -12.5 56 -12.5q61 0 91.5 39q30.5 39 30.5 121q0 36 -6.5 65.5q-6.5 29.5 -21 50.5q-14.5 21 -38 33q-23.5 12 -56.5 12q-57 0 -89.5 -38q-32.5 -38 -32.5 -123zt0 0zM491 63q-28 -34 -72 -56q-44 -22 -109 -22q-69 0 -119.5 21q-50.5 21 -83.5 57.5q-33 36.5 -49 87.5q-16 51 -16 111q0 132 69 205q69 73 197 73q37 0 67.5 -7q30.5 -7 54.5 -18q24 -11 42.5 -25q18.5 -14 32.5 -27q28 31 74.5 54q46.5 23 118.5 23q42 0 83 -10.5q41 -10.5 72.5 -35q31.5 -24.5 51 -66q19.5 -41.5 19.5 -102.5q0 -22 -2.5 -46.5q-2.5 -24.5 -8.5 -51.5l-348 0q4 -66 39.5 -99q35.5 -33 113.5 -33q44 0 81.5 12.5q37.5 12.5 58.5 25.5l47 -87q-34 -25 -91.5 -43.5q-57.5 -18.5 -123.5 -18.5q-125 0 -191 78zM696 429q-63 0 -92.5 -31.5q-29.5 -31.5 -34.5 -86.5l226 0q4 57 -21 87.5t-78 30.5z" />
-<glyph unicode="&#340;" horiz-adv-x="652" d="M65 693q24 4 52.5 7.5q28.5 3.5 57.5 5.5q29 2 56.5 3q27.5 1 50.5 1q53 0 104.5 -9q51.5 -9 92 -31q40.5 -22 65.5 -60.5q25 -38.5 25 -96.5q0 -86 -42.5 -141.5q-42.5 -55.5 -117.5 -75.5l53 -31l175 -265h-172l-174 271l-78 12v-283h-148zM292 580q-23 0 -44.5 -0.5q-21.5 -0.5 -34.5 -3.5l0 -193h63q63 0 99.5 24q36.5 24 36.5 83q0 44 -31 67q-31 23 -89 23zt0 0zM317 870h172v-31l-174 -87l-112 0z" />
-<glyph unicode="&#341;" horiz-adv-x="406" d="M382 397q-30 10 -60 10q-44 0 -72.5 -21q-28.5 -21 -37.5 -53l0 -333h-140v525h110l15 -73h13q20 41 53.5 63q33.5 22 76.5 22q27 0 62 -11zM211 729h142v-29l-126 -129l-76 0z" />
-<glyph unicode="&#342;" horiz-adv-x="652" d="M65 693q24 4 52.5 7.5q28.5 3.5 57.5 5.5q29 2 56.5 3q27.5 1 50.5 1q53 0 104.5 -9q51.5 -9 92 -31q40.5 -22 65.5 -60.5q25 -38.5 25 -96.5q0 -86 -42.5 -141.5q-42.5 -55.5 -117.5 -75.5l53 -31l175 -265h-172l-174 271l-78 12v-283h-148zM292 580q-23 0 -44.5 -0.5q-21.5 -0.5 -34.5 -3.5l0 -193h63q63 0 99.5 24q36.5 24 36.5 83q0 44 -31 67q-31 23 -89 23zt0 0zM245 -105q0 29 20 47q20 18 51 18q38 0 62 -24.5q24 -24.5 24 -65.5q0 -34 -12 -59.5q-12 -25.5 -29.5 -43q-17.5 -17.5 -36.5 -28.5q-19 -11 -33 -15l-36 60q15 6 29.5 16.5q14.5 10.5 16.5 31.5q-20 -1 -38 15t-18 48z" />
-<glyph unicode="&#343;" horiz-adv-x="406" d="M382 397q-30 10 -60 10q-44 0 -72.5 -21q-28.5 -21 -37.5 -53l0 -333h-140v525h110l15 -73h13q20 41 53.5 63q33.5 22 76.5 22q27 0 62 -11zM105 -105q0 29 20 47q20 18 51 18q38 0 62 -24.5q24 -24.5 24 -65.5q0 -34 -12 -59.5q-12 -25.5 -29.5 -43q-17.5 -17.5 -36.5 -28.5q-19 -11 -33 -15l-36 60q15 6 29.5 16.5q14.5 10.5 16.5 31.5q-20 -1 -38 15t-18 48z" />
-<glyph unicode="&#344;" horiz-adv-x="652" d="M65 693q24 4 52.5 7.5q28.5 3.5 57.5 5.5q29 2 56.5 3q27.5 1 50.5 1q53 0 104.5 -9q51.5 -9 92 -31q40.5 -22 65.5 -60.5q25 -38.5 25 -96.5q0 -86 -42.5 -141.5q-42.5 -55.5 -117.5 -75.5l53 -31l175 -265h-172l-174 271l-78 12v-283h-148zM292 580q-23 0 -44.5 -0.5q-21.5 -0.5 -34.5 -3.5l0 -193h63q63 0 99.5 24q36.5 24 36.5 83q0 44 -31 67q-31 23 -89 23zt0 0zM330 736h-102l-138 93v41h114l57 -44l21 -30l22 29l62 45h109l0 -42z" />
-<glyph unicode="&#345;" horiz-adv-x="406" d="M382 397q-30 10 -60 10q-44 0 -72.5 -21q-28.5 -21 -37.5 -53l0 -333h-140v525h110l15 -73h13q20 41 53.5 63q33.5 22 76.5 22q27 0 62 -11zM277 584h-99l-129 188h116l43 -69l25 -63l24 62l50 70l108 0z" />
-<glyph unicode="&#346;" horiz-adv-x="575" d="M393 192q0 31 -26 49q-26 18 -64.5 33q-38.5 15 -83.5 30q-45 15 -83.5 40q-38.5 25 -64.5 63q-26 38 -26 99q0 52 18.5 91.5q18.5 39.5 52 65q33.5 25.5 81 38.5q47.5 13 104.5 13q66 0 125.5 -11.5q59.5 -11.5 97.5 -32.5l-47 -124q-12 7 -30.5 14.5q-18.5 7.5 -42.5 13q-24 5.5 -51 9q-27 3.5 -55 3.5q-50 0 -77.5 -17.5q-27.5 -17.5 -27.5 -48.5q0 -31 26 -49.5q26 -18.5 64.5 -34q38.5 -15.5 83.5 -31q45 -15.5 83.5 -40q38.5 -24.5 64.5 -61.5q26 -37 26 -95q0 -58 -20 -100q-20 -42 -56.5 -69.5q-36.5 -27.5 -87.5 -40.5q-51 -13 -112 -13q-41 0 -77.5 4.5q-36.5 4.5 -67.5 11q-31 6.5 -54.5 14q-23.5 7.5 -37.5 14.5l49 125q11 -6 30.5 -13q19.5 -7 43.5 -13.5q24 -6.5 51.5 -10.5q27.5 -4 55.5 -4q66 0 100.5 19q34.5 19 34.5 59zt0 0zM324 870h172v-31l-174 -87l-112 0z" />
-<glyph unicode="&#347;" horiz-adv-x="483" d="M71 136q14 -7 32.5 -14q18.5 -7 40 -13q21.5 -6 44 -10q22.5 -4 45.5 -4q35 0 54.5 11q19.5 11 19.5 41q0 24 -26 35.5q-26 11.5 -64 22.5q-28 8 -58.5 19q-30.5 11 -56 29.5q-25.5 18.5 -42 48.5q-16.5 30 -16.5 76q0 79 49 120.5q49 41.5 141 41.5q60 0 112.5 -10.5q52.5 -10.5 84.5 -24.5l-29 -106q-26 10 -66.5 20.5q-40.5 10.5 -82.5 10.5q-35 0 -52 -10.5q-17 -10.5 -17 -36.5q0 -23 26.5 -34.5q26.5 -11.5 64.5 -22.5q28 -8 58.5 -18.5q30.5 -10.5 55.5 -28.5q25 -18 41.5 -46.5q16.5 -28.5 16.5 -71.5q0 -84 -54.5 -130q-54.5 -46 -163.5 -46q-59 0 -110 10.5q-51 10.5 -83 30.5zM248 729h142v-29l-126 -129l-76 0z" />
-<glyph unicode="&#348;" horiz-adv-x="575" d="M393 192q0 31 -26 49q-26 18 -64.5 33q-38.5 15 -83.5 30q-45 15 -83.5 40q-38.5 25 -64.5 63q-26 38 -26 99q0 52 18.5 91.5q18.5 39.5 52 65q33.5 25.5 81 38.5q47.5 13 104.5 13q66 0 125.5 -11.5q59.5 -11.5 97.5 -32.5l-47 -124q-12 7 -30.5 14.5q-18.5 7.5 -42.5 13q-24 5.5 -51 9q-27 3.5 -55 3.5q-50 0 -77.5 -17.5q-27.5 -17.5 -27.5 -48.5q0 -31 26 -49.5q26 -18.5 64.5 -34q38.5 -15.5 83.5 -31q45 -15.5 83.5 -40q38.5 -24.5 64.5 -61.5q26 -37 26 -95q0 -58 -20 -100q-20 -42 -56.5 -69.5q-36.5 -27.5 -87.5 -40.5q-51 -13 -112 -13q-41 0 -77.5 4.5q-36.5 4.5 -67.5 11q-31 6.5 -54.5 14q-23.5 7.5 -37.5 14.5l49 125q11 -6 30.5 -13q19.5 -7 43.5 -13.5q24 -6.5 51.5 -10.5q27.5 -4 55.5 -4q66 0 100.5 19q34.5 19 34.5 59zt0 0zM249 870h105l138 -92v-41h-108l-62 40l-22 34l-24 -33l-66 -41h-106l0 42z" />
-<glyph unicode="&#349;" horiz-adv-x="483" d="M71 136q14 -7 32.5 -14q18.5 -7 40 -13q21.5 -6 44 -10q22.5 -4 45.5 -4q35 0 54.5 11q19.5 11 19.5 41q0 24 -26 35.5q-26 11.5 -64 22.5q-28 8 -58.5 19q-30.5 11 -56 29.5q-25.5 18.5 -42 48.5q-16.5 30 -16.5 76q0 79 49 120.5q49 41.5 141 41.5q60 0 112.5 -10.5q52.5 -10.5 84.5 -24.5l-29 -106q-26 10 -66.5 20.5q-40.5 10.5 -82.5 10.5q-35 0 -52 -10.5q-17 -10.5 -17 -36.5q0 -23 26.5 -34.5q26.5 -11.5 64.5 -22.5q28 -8 58.5 -18.5q30.5 -10.5 55.5 -28.5q25 -18 41.5 -46.5q16.5 -28.5 16.5 -71.5q0 -84 -54.5 -130q-54.5 -46 -163.5 -46q-59 0 -110 10.5q-51 10.5 -83 30.5zM204 752h92l125 -188h-110l-42 69l-24 64l-25 -63l-52 -70l-102 0z" />
-<glyph unicode="&#350;" horiz-adv-x="575" d="M393 192q0 31 -26 49q-26 18 -64.5 33q-38.5 15 -83.5 30q-45 15 -83.5 40q-38.5 25 -64.5 63q-26 38 -26 99q0 52 18.5 91.5q18.5 39.5 52 65q33.5 25.5 81 38.5q47.5 13 104.5 13q66 0 125.5 -11.5q59.5 -11.5 97.5 -32.5l-47 -124q-12 7 -30.5 14.5q-18.5 7.5 -42.5 13q-24 5.5 -51 9q-27 3.5 -55 3.5q-50 0 -77.5 -17.5q-27.5 -17.5 -27.5 -48.5q0 -31 26 -49.5q26 -18.5 64.5 -34q38.5 -15.5 83.5 -31q45 -15.5 83.5 -40q38.5 -24.5 64.5 -61.5q26 -37 26 -95q0 -100 -58 -153.5q-58 -53.5 -155 -65.5l-25 -42q48 -3 75.5 -21q27.5 -18 27.5 -56q0 -24 -12.5 -41.5q-12.5 -17.5 -34.5 -29.5q-22 -12 -51 -18q-29 -6 -63 -6q-18 0 -36 1q-18 1 -37 5l10 47q31 -2 50 0.5q19 2.5 29.5 7q10.5 4.5 14 11q3.5 6.5 3.5 14.5q0 17 -23 26q-23 9 -74 11l57 88q-73 2 -129 16q-56 14 -82 27l49 125q11 -6 30.5 -13q19.5 -7 43.5 -13.5q24 -6.5 51.5 -10.5q27.5 -4 55.5 -4q66 0 100.5 19t34.5 59z" />
-<glyph unicode="&#351;" horiz-adv-x="483" d="M71 136q14 -7 32.5 -14q18.5 -7 40 -13q21.5 -6 44 -10q22.5 -4 45.5 -4q35 0 54.5 11q19.5 11 19.5 41q0 24 -26 35.5q-26 11.5 -64 22.5q-28 8 -58.5 19q-30.5 11 -56 29.5q-25.5 18.5 -42 48.5q-16.5 30 -16.5 76q0 79 49 120.5q49 41.5 141 41.5q60 0 112.5 -10.5q52.5 -10.5 84.5 -24.5l-29 -106q-26 10 -66.5 20.5q-40.5 10.5 -82.5 10.5q-35 0 -52 -10.5q-17 -10.5 -17 -36.5q0 -23 26.5 -34.5q26.5 -11.5 64.5 -22.5q28 -8 58.5 -18.5q30.5 -10.5 55.5 -28.5q25 -18 41.5 -46.5q16.5 -28.5 16.5 -71.5q0 -70 -38.5 -114q-38.5 -44 -115.5 -57l-25 -42q48 -3 75.5 -21q27.5 -18 27.5 -56q0 -24 -12.5 -41.5q-12.5 -17.5 -34.5 -29.5q-22 -12 -51 -18q-29 -6 -63 -6q-18 0 -36 1q-18 1 -37 5l10 47q31 -2 50 0.5q19 2.5 29.5 7q10.5 4.5 14 11q3.5 6.5 3.5 14.5q0 17 -23 26q-23 9 -74 11l56 87q-51 2 -95 12q-44 10 -72 28z" />
-<glyph unicode="&#352;" horiz-adv-x="575" d="M393 192q0 31 -26 49q-26 18 -64.5 33q-38.5 15 -83.5 30q-45 15 -83.5 40q-38.5 25 -64.5 63q-26 38 -26 99q0 52 18.5 91.5q18.5 39.5 52 65q33.5 25.5 81 38.5q47.5 13 104.5 13q66 0 125.5 -11.5q59.5 -11.5 97.5 -32.5l-47 -124q-12 7 -30.5 14.5q-18.5 7.5 -42.5 13q-24 5.5 -51 9q-27 3.5 -55 3.5q-50 0 -77.5 -17.5q-27.5 -17.5 -27.5 -48.5q0 -31 26 -49.5q26 -18.5 64.5 -34q38.5 -15.5 83.5 -31q45 -15.5 83.5 -40q38.5 -24.5 64.5 -61.5q26 -37 26 -95q0 -58 -20 -100q-20 -42 -56.5 -69.5q-36.5 -27.5 -87.5 -40.5q-51 -13 -112 -13q-41 0 -77.5 4.5q-36.5 4.5 -67.5 11q-31 6.5 -54.5 14q-23.5 7.5 -37.5 14.5l49 125q11 -6 30.5 -13q19.5 -7 43.5 -13.5q24 -6.5 51.5 -10.5q27.5 -4 55.5 -4q66 0 100.5 19q34.5 19 34.5 59zt0 0zM355 736h-102l-138 93v41h114l57 -44l21 -30l22 29l62 45h109l0 -42z" />
-<glyph unicode="&#353;" horiz-adv-x="483" d="M71 136q14 -7 32.5 -14q18.5 -7 40 -13q21.5 -6 44 -10q22.5 -4 45.5 -4q35 0 54.5 11q19.5 11 19.5 41q0 24 -26 35.5q-26 11.5 -64 22.5q-28 8 -58.5 19q-30.5 11 -56 29.5q-25.5 18.5 -42 48.5q-16.5 30 -16.5 76q0 79 49 120.5q49 41.5 141 41.5q60 0 112.5 -10.5q52.5 -10.5 84.5 -24.5l-29 -106q-26 10 -66.5 20.5q-40.5 10.5 -82.5 10.5q-35 0 -52 -10.5q-17 -10.5 -17 -36.5q0 -23 26.5 -34.5q26.5 -11.5 64.5 -22.5q28 -8 58.5 -18.5q30.5 -10.5 55.5 -28.5q25 -18 41.5 -46.5q16.5 -28.5 16.5 -71.5q0 -84 -54.5 -130q-54.5 -46 -163.5 -46q-59 0 -110 10.5q-51 10.5 -83 30.5zM285 584h-99l-129 188h116l43 -69l25 -63l24 62l50 70l108 0z" />
-<glyph unicode="&#354;" horiz-adv-x="616" d="M234 0v570h-222v130h592v-130h-222v-570h-25l-32 -52q48 -3 75.5 -21q27.5 -18 27.5 -56q0 -24 -12.5 -41.5q-12.5 -17.5 -34.5 -29.5q-22 -12 -51 -18q-29 -6 -63 -6q-18 0 -36 1q-18 1 -37 5l10 47q31 -2 50 0.5q19 2.5 29.5 7q10.5 4.5 14 11q3.5 6.5 3.5 14.5q0 17 -23 26q-23 9 -74 11l66 101z" />
-<glyph unicode="&#355;" horiz-adv-x="404" d="M8 525h80v72l140 37v-109h141v-117h-141v-182q0 -63 12.5 -90.5q12.5 -27.5 49.5 -27.5q23 0 39 3.5q16 3.5 34 11.5l29 -105q-24 -11 -53.5 -19q-29.5 -8 -59.5 -12l-24 -39q48 -3 75.5 -21q27.5 -18 27.5 -56q0 -24 -12.5 -41.5q-12.5 -17.5 -34.5 -29.5q-22 -12 -51 -18q-29 -6 -63 -6q-18 0 -36 1q-18 1 -37 5l10 47q31 -2 50 0.5q19 2.5 29.5 7q10.5 4.5 14 11q3.5 6.5 3.5 14.5q0 17 -23 26q-23 9 -74 11l58 89q-55 10 -79.5 48q-24.5 38 -24.5 110v262l-80 0z" />
-<glyph unicode="&#356;" horiz-adv-x="616" d="M604 570h-222v-570h-148v570h-222v130h592zM354 736h-102l-138 93v41h114l57 -44l21 -30l22 29l62 45h109l0 -42z" />
-<glyph unicode="&#357;" horiz-adv-x="404" d="M8 525h80v72l140 37v-109h141v-117h-141v-182q0 -63 12.5 -90.5q12.5 -27.5 49.5 -27.5q23 0 39 3.5q16 3.5 34 11.5l29 -105q-32 -14 -73.5 -24q-41.5 -10 -80.5 -10q-78 0 -114 38.5q-36 38.5 -36 123.5v262h-80zM403 745q-2 -29 -13 -61q-11 -32 -26 -60.5q-15 -28.5 -31 -51.5q-16 -23 -28 -33l-63 35q19 36 28.5 80.5q9.5 44.5 9.5 90.5z" />
-<glyph unicode="&#362;" horiz-adv-x="679" d="M478 700h140v-449q0 -68 -19.5 -118q-19.5 -50 -55 -82q-35.5 -32 -85 -47.5q-49.5 -15.5 -108.5 -15.5q-141 0 -215 61.5q-74 61.5 -74 184.5v466h148v-439q0 -80 35 -111.5q35 -31.5 104 -31.5q66 0 98 33.5q32 33.5 32 109.5zM157 848h373v-92l-373 0z" />
-<glyph unicode="&#363;" horiz-adv-x="642" d="M212 525v-291q0 -65 18 -95q18 -30 69 -30q44 0 74 23q30 23 44 58l0 335h140v-365q0 -42 4.5 -84q4.5 -42 12.5 -76l-103 0l-27 82h-11q-26 -42 -74 -69.5q-48 -27.5 -110 -27.5q-43 0 -76 11q-33 11 -55.5 36.5q-22.5 25.5 -34 67.5q-11.5 42 -11.5 104v321zM145 679h351v-95l-351 0z" />
-<glyph unicode="&#364;" horiz-adv-x="679" d="M478 700h140v-449q0 -68 -19.5 -118q-19.5 -50 -55 -82q-35.5 -32 -85 -47.5q-49.5 -15.5 -108.5 -15.5q-141 0 -215 61.5q-74 61.5 -74 184.5v466h148v-439q0 -80 35 -111.5q35 -31.5 104 -31.5q66 0 98 33.5q32 33.5 32 109.5zM185 876q23 -26 64 -38.5q41 -12.5 92 -12.5q52 0 90 14q38 14 59 37l53 -35q-13 -28 -34.5 -49q-21.5 -21 -49 -34.5q-27.5 -13.5 -58 -20.5q-30.5 -7 -61.5 -7q-29 0 -60 5.5q-31 5.5 -59.5 18q-28.5 12.5 -52.5 33q-24 20.5 -39 49.5z" />
-<glyph unicode="&#365;" horiz-adv-x="642" d="M212 525v-291q0 -65 18 -95q18 -30 69 -30q44 0 74 23q30 23 44 58l0 335h140v-365q0 -42 4.5 -84q4.5 -42 12.5 -76l-103 0l-27 82h-11q-26 -42 -74 -69.5q-48 -27.5 -110 -27.5q-43 0 -76 11q-33 11 -55.5 36.5q-22.5 25.5 -34 67.5q-11.5 42 -11.5 104v321zM185 728q23 -28 58.5 -43.5q35.5 -15.5 73.5 -15.5q38 0 71.5 15q33.5 15 52.5 44l64 -26q-5 -24 -21 -48q-16 -24 -41 -43q-25 -19 -57.5 -31q-32.5 -12 -69.5 -12q-73 0 -125 34.5q-52 34.5 -70 93.5z" />
-<glyph unicode="&#366;" horiz-adv-x="679" d="M478 700h140v-449q0 -68 -19.5 -118q-19.5 -50 -55 -82q-35.5 -32 -85 -47.5q-49.5 -15.5 -108.5 -15.5q-141 0 -215 61.5q-74 61.5 -74 184.5v466h148v-439q0 -80 35 -111.5q35 -31.5 104 -31.5q66 0 98 33.5q32 33.5 32 109.5zM209 773q0 18 6 34.5q6 16.5 21.5 29q15.5 12.5 42.5 19.5q27 7 68 7q77 0 108 -24q31 -24 31 -66q0 -18 -6.5 -34q-6.5 -16 -22.5 -28q-16 -12 -43 -19q-27 -7 -67 -7q-39 0 -65.5 6.5q-26.5 6.5 -42.5 18.5q-16 12 -23 28q-7 16 -7 35zt0 0zM299 773q0 -14 11 -22q11 -8 37 -8q28 0 38.5 7.5q10.5 7.5 10.5 22.5q0 16 -11.5 24q-11.5 8 -37.5 8q-48 0 -48 -32z" />
-<glyph unicode="&#367;" horiz-adv-x="642" d="M212 525v-291q0 -65 18 -95q18 -30 69 -30q44 0 74 23q30 23 44 58l0 335h140v-365q0 -42 4.5 -84q4.5 -42 12.5 -76l-103 0l-27 82h-11q-26 -42 -74 -69.5q-48 -27.5 -110 -27.5q-43 0 -76 11q-33 11 -55.5 36.5q-22.5 25.5 -34 67.5q-11.5 42 -11.5 104v321zM193 665q0 42 30.5 70.5q30.5 28.5 90.5 28.5q57 0 89.5 -25.5q32.5 -25.5 32.5 -73.5q0 -19 -8.5 -36.5q-8.5 -17.5 -24 -31q-15.5 -13.5 -38.5 -21.5q-23 -8 -51 -8q-58 0 -89.5 27q-31.5 27 -31.5 70zt0 0zM265 665q0 -17 14.5 -26q14.5 -9 34.5 -9q22 0 36.5 8.5q14.5 8.5 14.5 26.5q0 19 -15.5 28.5q-15.5 9.5 -35.5 9.5q-20 0 -34.5 -9t-14.5 -29z" />
-<glyph unicode="&#368;" horiz-adv-x="679" d="M478 700h140v-449q0 -68 -19.5 -118q-19.5 -50 -55 -82q-35.5 -32 -85 -47.5q-49.5 -15.5 -108.5 -15.5q-141 0 -215 61.5q-74 61.5 -74 184.5v466h148v-439q0 -80 35 -111.5q35 -31.5 104 -31.5q66 0 98 33.5q32 33.5 32 109.5zM243 850h145v-16l-109 -93h-101zM458 850h151v-16l-155 -93l-102 0z" />
-<glyph unicode="&#369;" horiz-adv-x="642" d="M212 525v-291q0 -65 18 -95q18 -30 69 -30q44 0 74 23q30 23 44 58l0 335h140v-365q0 -42 4.5 -84q4.5 -42 12.5 -76l-103 0l-27 82h-11q-26 -42 -74 -69.5q-48 -27.5 -110 -27.5q-43 0 -76 11q-33 11 -55.5 36.5q-22.5 25.5 -34 67.5q-11.5 42 -11.5 104v321zM208 738h127v-14l-85 -117h-81zM412 738h137v-14l-134 -117l-84 0z" />
-<glyph unicode="&#370;" horiz-adv-x="679" d="M478 700h140v-449q0 -100 -41 -160q-41 -60 -112 -85q-26 -14 -39.5 -35.5q-13.5 -21.5 -12.5 -44.5q0 -20 14 -33.5q14 -13.5 38 -13.5q11 0 21 2q10 2 23 9l22 -64q-18 -13 -53 -25q-35 -12 -76 -12q-61 0 -93 27q-32 27 -32 70q0 32 15.5 57.5q15.5 25.5 42.5 44.5q-134 3 -204 64.5q-70 61.5 -70 181.5v466h148v-439q0 -80 35 -111.5q35 -31.5 104 -31.5q66 0 98 33.5q32 33.5 32 109.5z" />
-<glyph unicode="&#371;" horiz-adv-x="642" d="M212 525v-291q0 -65 18 -95q18 -30 69 -30q44 0 74 23q30 23 44 58l0 335h140v-365q0 -42 4.5 -84q4.5 -42 12.5 -76l-20 0q-62 -27 -61 -74q0 -20 14 -33.5q14 -13.5 38 -13.5q11 0 21 2q10 2 23 9l22 -64q-18 -13 -53 -25q-35 -12 -76 -12q-61 0 -93 27q-32 27 -32 70q0 40 30.5 70.5q30.5 30.5 81.5 47.5l-25 78h-11q-26 -42 -74 -69.5q-48 -27.5 -110 -27.5q-43 0 -76 11q-33 11 -55.5 36.5q-22.5 25.5 -34 67.5q-11.5 42 -11.5 104l0 321z" />
-<glyph unicode="&#376;" horiz-adv-x="644" d="M248 258l-250 442h176l140 -257l16 -75h5l17 77l135 255h159l-250 -441v-259h-148zM126 798q0 27 19.5 43.5q19.5 16.5 63.5 16.5q42 0 61.5 -16.5q19.5 -16.5 19.5 -43.5q0 -26 -19.5 -41.5q-19.5 -15.5 -61.5 -15.5q-44 0 -63.5 15.5q-19.5 15.5 -19.5 41.5zt0 0zM359 798q0 27 19.5 43.5q19.5 16.5 61.5 16.5q44 0 63.5 -16.5q19.5 -16.5 19.5 -43.5q0 -26 -19.5 -41.5q-19.5 -15.5 -63.5 -15.5q-42 0 -61.5 15.5t-19.5 41.5z" />
-<glyph unicode="&#377;" horiz-adv-x="584" d="M28 130l321 399l58 41h-379v130h528v-130l-323 -402l-56 -38h379v-130h-528zM322 870h172v-31l-174 -87l-112 0z" />
-<glyph unicode="&#378;" horiz-adv-x="526" d="M42 119l221 238h-1l65 51h-285v117h442v-119l-219 -241h1l-66 -48h284v-117h-442zM269 729h142v-29l-126 -129l-76 0z" />
-<glyph unicode="&#379;" horiz-adv-x="584" d="M28 130l321 399l58 41h-379v130h528v-130l-323 -402l-56 -38h379v-130h-528zM201 799q0 25 23.5 43q23.5 18 70.5 18q47 0 71.5 -18q24.5 -18 24.5 -43q0 -27 -24.5 -45q-24.5 -18 -71.5 -18q-47 0 -70.5 18t-23.5 45z" />
-<glyph unicode="&#380;" horiz-adv-x="526" d="M42 119l221 238h-1l65 51h-285v117h442v-119l-219 -241h1l-66 -48h284v-117h-442zM180 656q0 32 23 53.5q23 21.5 65 21.5q43 0 68 -22q25 -22 25 -53q0 -29 -25 -50q-25 -21 -68 -21q-42 0 -65 21t-23 50z" />
-<glyph unicode="&#381;" horiz-adv-x="584" d="M28 130l321 399l58 41h-379v130h528v-130l-323 -402l-56 -38h379v-130h-528zM335 736h-102l-138 93v41h114l57 -44l21 -30l22 29l62 45h109l0 -42z" />
-<glyph unicode="&#382;" horiz-adv-x="526" d="M42 119l221 238h-1l65 51h-285v117h442v-119l-219 -241h1l-66 -48h284v-117h-442zM307 584h-99l-129 188h116l43 -69l25 -63l24 62l50 70l108 0z" />
-<glyph unicode="&#383;" horiz-adv-x="301" d="M16 525h80v23q0 88 44.5 123q44.5 35 131.5 35q50 0 83.5 -6q33.5 -6 65.5 -18l-29 -107q-25 8 -45 11q-20 3 -43 3q-41 0 -54.5 -14q-13.5 -14 -13.5 -48v-527h-140v408l-80 0z" />
-<glyph unicode="&#402;" horiz-adv-x="591" d="M359 383l-78 -417q-6 -37 -18.5 -68.5q-12.5 -31.5 -34.5 -55q-22 -23.5 -55 -37q-33 -13.5 -81 -13.5q-14 0 -36 2q-22 2 -45 5.5q-23 3.5 -44 8q-21 4.5 -34 9.5l21 112q26 -10 48 -15q22 -5 54 -5q39 0 61 22.5q22 22.5 31 76.5l66 375h-84v117h104l12 67q7 37 18.5 64.5q11.5 27.5 32 46q20.5 18.5 51.5 27.5q31 9 78 9q18 0 40 -2.5q22 -2.5 45 -7q23 -4.5 44 -11q21 -6.5 37 -13.5l-34 -103q-26 9 -52.5 14.5q-26.5 5.5 -51.5 5.5q-34 0 -48 -13.5q-14 -13.5 -21 -51.5l-6 -32h131l0 -117z" />
-<glyph unicode="&#500;" horiz-adv-x="661" d="M331 368h286v-314q-23 -18 -50.5 -30.5q-27.5 -12.5 -58 -21q-30.5 -8.5 -62.5 -12.5q-32 -4 -63 -4q-72 0 -134.5 21q-62.5 21 -109 65.5q-46.5 44.5 -73 113.5q-26.5 69 -26.5 164q0 99 32 168.5q32 69.5 83.5 113q51.5 43.5 115 63q63.5 19.5 126.5 19.5q65 0 114.5 -9.5q49.5 -9.5 77.5 -18.5l-31 -123q-27 9 -61 15q-34 6 -85 6q-47 0 -86 -12.5q-39 -12.5 -68 -40.5q-29 -28 -45 -73q-16 -45 -16 -109q0 -62 16 -106q16 -44 43.5 -72.5q27.5 -28.5 63.5 -41.5q36 -13 76 -13q27 0 54.5 6q27.5 6 46.5 19l0 121l-166 16zM424 870h172v-31l-174 -87l-112 0z" />
-<glyph unicode="&#501;" horiz-adv-x="619" d="M547 20q0 -116 -66 -171q-66 -55 -187 -55q-78 0 -125.5 10.5q-47.5 10.5 -73.5 23.5q13 40 19.5 63.5q6.5 23.5 9.5 35.5q3 12 4 15q1 3 1 3q24 -12 58 -24.5q34 -12.5 83 -12.5q41 0 68 8q27 8 43 23.5q16 15.5 22.5 37.5q6.5 22 6.5 49v39h-12q-20 -29 -55 -41q-35 -12 -87 -12q-107 0 -160.5 59q-53.5 59 -53.5 190q0 138 70.5 208q70.5 70 209.5 70q73 0 130.5 -9.5q57.5 -9.5 94.5 -21.5zM289 121q46 0 75.5 17q29.5 17 42.5 42l0 226q-37 16 -94 16q-61 0 -94 -36q-33 -36 -33 -119q0 -76 28 -111q28 -35 75 -35zt0 0zM337 729h142v-29l-126 -129l-76 0z" />
-<glyph unicode="&#536;" horiz-adv-x="575" d="M393 192q0 31 -26 49q-26 18 -64.5 33q-38.5 15 -83.5 30q-45 15 -83.5 40q-38.5 25 -64.5 63q-26 38 -26 99q0 52 18.5 91.5q18.5 39.5 52 65q33.5 25.5 81 38.5q47.5 13 104.5 13q66 0 125.5 -11.5q59.5 -11.5 97.5 -32.5l-47 -124q-12 7 -30.5 14.5q-18.5 7.5 -42.5 13q-24 5.5 -51 9q-27 3.5 -55 3.5q-50 0 -77.5 -17.5q-27.5 -17.5 -27.5 -48.5q0 -31 26 -49.5q26 -18.5 64.5 -34q38.5 -15.5 83.5 -31q45 -15.5 83.5 -40q38.5 -24.5 64.5 -61.5q26 -37 26 -95q0 -58 -20 -100q-20 -42 -56.5 -69.5q-36.5 -27.5 -87.5 -40.5q-51 -13 -112 -13q-41 0 -77.5 4.5q-36.5 4.5 -67.5 11q-31 6.5 -54.5 14q-23.5 7.5 -37.5 14.5l49 125q11 -6 30.5 -13q19.5 -7 43.5 -13.5q24 -6.5 51.5 -10.5q27.5 -4 55.5 -4q66 0 100.5 19q34.5 19 34.5 59zt0 0zM201 -105q0 29 20 47q20 18 51 18q38 0 62 -24.5q24 -24.5 24 -65.5q0 -34 -12 -59.5q-12 -25.5 -29.5 -43q-17.5 -17.5 -36.5 -28.5q-19 -11 -33 -15l-36 60q15 6 29.5 16.5q14.5 10.5 16.5 31.5q-20 -1 -38 15t-18 48z" />
-<glyph unicode="&#537;" horiz-adv-x="483" d="M71 136q14 -7 32.5 -14q18.5 -7 40 -13q21.5 -6 44 -10q22.5 -4 45.5 -4q35 0 54.5 11q19.5 11 19.5 41q0 24 -26 35.5q-26 11.5 -64 22.5q-28 8 -58.5 19q-30.5 11 -56 29.5q-25.5 18.5 -42 48.5q-16.5 30 -16.5 76q0 79 49 120.5q49 41.5 141 41.5q60 0 112.5 -10.5q52.5 -10.5 84.5 -24.5l-29 -106q-26 10 -66.5 20.5q-40.5 10.5 -82.5 10.5q-35 0 -52 -10.5q-17 -10.5 -17 -36.5q0 -23 26.5 -34.5q26.5 -11.5 64.5 -22.5q28 -8 58.5 -18.5q30.5 -10.5 55.5 -28.5q25 -18 41.5 -46.5q16.5 -28.5 16.5 -71.5q0 -84 -54.5 -130q-54.5 -46 -163.5 -46q-59 0 -110 10.5q-51 10.5 -83 30.5zM151 -105q0 29 20 47q20 18 51 18q38 0 62 -24.5q24 -24.5 24 -65.5q0 -34 -12 -59.5q-12 -25.5 -29.5 -43q-17.5 -17.5 -36.5 -28.5q-19 -11 -33 -15l-36 60q15 6 29.5 16.5q14.5 10.5 16.5 31.5q-20 -1 -38 15t-18 48z" />
-<glyph unicode="&#538;" horiz-adv-x="616" d="M604 570h-222v-570h-148v570h-222v130h592zM221 -105q0 29 20 47q20 18 51 18q38 0 62 -24.5q24 -24.5 24 -65.5q0 -34 -12 -59.5q-12 -25.5 -29.5 -43q-17.5 -17.5 -36.5 -28.5q-19 -11 -33 -15l-36 60q15 6 29.5 16.5q14.5 10.5 16.5 31.5q-20 -1 -38 15t-18 48z" />
-<glyph unicode="&#539;" horiz-adv-x="404" d="M8 525h80v72l140 37v-109h141v-117h-141v-182q0 -63 12.5 -90.5q12.5 -27.5 49.5 -27.5q23 0 39 3.5q16 3.5 34 11.5l29 -105q-32 -14 -73.5 -24q-41.5 -10 -80.5 -10q-78 0 -114 38.5q-36 38.5 -36 123.5v262h-80zM119 -105q0 29 20 47q20 18 51 18q38 0 62 -24.5q24 -24.5 24 -65.5q0 -34 -12 -59.5q-12 -25.5 -29.5 -43q-17.5 -17.5 -36.5 -28.5q-19 -11 -33 -15l-36 60q15 6 29.5 16.5q14.5 10.5 16.5 31.5q-20 -1 -38 15t-18 48z" />
-<glyph unicode="&#567;" horiz-adv-x="317" d="M91 525h140v-549q0 -95 -39 -146q-39 -51 -126 -51q-34 0 -72 7l0 117q31 -3 50 4q19 7 29.5 22q10.5 15 14 37q3.5 22 3.5 51z" />
-<glyph unicode="&#700;" horiz-adv-x="243" d="M41 642q0 30 21 48.5q21 18.5 53 18.5q40 0 63 -25q23 -25 23 -64q0 -42 -13.5 -70.5q-13.5 -28.5 -33 -47.5q-19.5 -19 -40 -29.5q-20.5 -10.5 -35.5 -14.5l-35 59q22 8 38 22.5q16 14.5 18 37.5q-21 -2 -40 15t-19 50z" />
-<glyph unicode="&#710;" horiz-adv-x="491" d="M208 752h92l125 -188h-110l-42 69l-24 64l-25 -63l-52 -70l-102 0z" />
-<glyph unicode="&#711;" horiz-adv-x="501" d="M297 584h-99l-129 188h116l43 -69l25 -63l24 62l50 70l108 0z" />
-<glyph unicode="&#728;" horiz-adv-x="516" d="M132 728q23 -28 58.5 -43.5q35.5 -15.5 73.5 -15.5q38 0 71.5 15q33.5 15 52.5 44l64 -26q-5 -24 -21 -48q-16 -24 -41 -43q-25 -19 -57.5 -31q-32.5 -12 -69.5 -12q-73 0 -125 34.5q-52 34.5 -70 93.5z" />
-<glyph unicode="&#729;" horiz-adv-x="315" d="M68 656q0 32 23 53.5q23 21.5 65 21.5q43 0 68 -22q25 -22 25 -53q0 -29 -25 -50q-25 -21 -68 -21q-42 0 -65 21t-23 50z" />
-<glyph unicode="&#730;" horiz-adv-x="376" d="M68 665q0 42 30.5 70.5q30.5 28.5 90.5 28.5q57 0 89.5 -25.5q32.5 -25.5 32.5 -73.5q0 -19 -8.5 -36.5q-8.5 -17.5 -24 -31q-15.5 -13.5 -38.5 -21.5q-23 -8 -51 -8q-58 0 -89.5 27q-31.5 27 -31.5 70zt0 0zM140 665q0 -17 14.5 -26q14.5 -9 34.5 -9q22 0 36.5 8.5q14.5 8.5 14.5 26.5q0 19 -15.5 28.5q-15.5 9.5 -35.5 9.5q-20 0 -34.5 -9t-14.5 -29z" />
-<glyph unicode="&#731;" horiz-adv-x="387" d="M275 4q-35 -13 -53.5 -32.5q-18.5 -19.5 -17.5 -45.5q0 -20 14 -33.5q14 -13.5 38 -13.5q11 0 21 2q10 2 23 9l22 -64q-18 -13 -53 -25q-35 -12 -76 -12q-61 0 -93 27q-32 27 -32 70q0 40 31 70.5q31 30.5 82 47.5z" />
-<glyph unicode="&#732;" horiz-adv-x="499" d="M67 677q33 38 61.5 53q28.5 15 54.5 15q22 0 42.5 -7q20.5 -7 40.5 -16q20 -9 40.5 -16q20.5 -7 43.5 -7q33 0 68 26l17 -75q-30 -33 -57 -46.5q-27 -13.5 -52 -13.5q-23 0 -43.5 7.5q-20.5 7.5 -41.5 16q-21 8.5 -42.5 16q-21.5 7.5 -45.5 7.5q-17 0 -34 -5.5q-17 -5.5 -37 -21.5z" />
-<glyph unicode="&#733;" horiz-adv-x="512" d="M107 738h127v-14l-85 -117h-81zM311 738h137v-14l-134 -117l-84 0z" />
-<glyph unicode="&#769;" horiz-adv-x="2" d="M-208 729h142v-29l-126 -129l-76 0z" />
-<glyph unicode="&#916;" horiz-adv-x="637" d="M13 0v75l263 630h85l265 -630v-75zM173 124h291l-119 288l-27 92h-4l-28 -93z" />
-<glyph unicode="&#937;" horiz-adv-x="847" d="M63 117h115l91 -13v29l-49 9q-32 13 -60.5 35.5q-28.5 22.5 -49.5 54.5q-21 32 -33 73.5q-12 41.5 -12 93.5q0 70 25.5 128q25.5 58 72.5 99.5q47 41.5 113 64.5q66 23 147 23q85 0 151.5 -24q66.5 -24 112.5 -66q46 -42 70.5 -100.5q24.5 -58.5 24.5 -127.5q0 -52 -13 -92.5q-13 -40.5 -34.5 -71.5q-21.5 -31 -49 -53q-27.5 -22 -56.5 -36l-53 -10v-29l93 13h114v-117h-326v219q28 4 58 15.5q30 11.5 54.5 31.5q24.5 20 40 51.5q15.5 31.5 15.5 76.5q0 34 -10.5 67.5q-10.5 33.5 -34.5 60.5q-24 27 -62.5 43.5q-38.5 16.5 -95.5 16.5q-97 0 -148.5 -48.5q-51.5 -48.5 -51.5 -142.5q0 -44 14.5 -75q14.5 -31 38.5 -51.5q24 -20.5 54 -31.5q30 -11 60 -14l0 -219l-326 0z" />
-<glyph unicode="&#960;" horiz-adv-x="758" d="M617 163q0 -28 9.5 -40q9.5 -12 25.5 -12q11 0 24.5 2q13.5 2 23.5 4l22 -93q-22 -9 -56 -19.5q-34 -10.5 -85 -10.5q-59 0 -81.5 30q-22.5 30 -22.5 82v277h-154v-383h-140v383h-15q-20 0 -33.5 -10q-13.5 -10 -27.5 -37l-86 44q20 57 61 88.5q41 31.5 97 31.5h528v-117l-90 0z" />
-<glyph unicode="&#1025;" horiz-adv-x="566" d="M65 700h451v-130h-303v-152h275v-130h-275v-158h308v-130h-456zM89 798q0 27 19.5 43.5q19.5 16.5 63.5 16.5q42 0 61.5 -16.5q19.5 -16.5 19.5 -43.5q0 -26 -19.5 -41.5q-19.5 -15.5 -61.5 -15.5q-44 0 -63.5 15.5q-19.5 15.5 -19.5 41.5zt0 0zM322 798q0 27 19.5 43.5q19.5 16.5 61.5 16.5q44 0 63.5 -16.5q19.5 -16.5 19.5 -43.5q0 -26 -19.5 -41.5q-19.5 -15.5 -63.5 -15.5q-42 0 -61.5 15.5t-19.5 41.5z" />
-<glyph unicode="&#1026;" horiz-adv-x="803" d="M382 0h-148v570h-222v130h594v-130h-224v-132q17 6 54 13.5q37 7.5 96 7.5q42 0 83.5 -10q41.5 -10 74.5 -35.5q33 -25.5 53 -69.5q20 -44 20 -111q0 -116 -63 -178q-63 -62 -201 -62q-29 0 -44 1q-15 1 -23 3l0 128q7 -1 26 -1.5q19 -0.5 36 -0.5q54 0 83 26q29 26 29 79q0 33 -10 52.5q-10 19.5 -28 30.5q-18 11 -42 14.5q-24 3.5 -52 3.5q-24 0 -51.5 -5.5q-27.5 -5.5 -40.5 -12.5z" />
-<glyph unicode="&#1027;" horiz-adv-x="498" d="M507 570h-294v-570h-148v700h442zM317 870h172v-31l-174 -87l-112 0z" />
-<glyph unicode="&#1028;" horiz-adv-x="627" d="M577 30q-33 -23 -86 -33.5q-53 -10.5 -110 -10.5q-67 0 -128.5 20q-61.5 20 -109 64q-47.5 44 -75.5 113q-28 69 -28 167q0 102 32 171.5q32 69.5 82 112q50 42.5 111 61.5q61 19 120 19q65 0 108.5 -8q43.5 -8 72.5 -19v-124q-54 11 -86.5 16q-32.5 5 -83.5 5q-76 0 -127.5 -41q-51.5 -41 -66.5 -126l296 0v-117h-298q11 -83 63 -133.5q52 -50.5 144 -50.5q50 0 82.5 9q32.5 9 58.5 23z" />
-<glyph unicode="&#1029;" horiz-adv-x="575" d="M393 192q0 31 -26 49q-26 18 -64.5 33q-38.5 15 -83.5 30q-45 15 -83.5 40q-38.5 25 -64.5 63q-26 38 -26 99q0 52 18.5 91.5q18.5 39.5 52 65q33.5 25.5 81 38.5q47.5 13 104.5 13q66 0 125.5 -11.5q59.5 -11.5 97.5 -32.5l-47 -124q-12 7 -30.5 14.5q-18.5 7.5 -42.5 13q-24 5.5 -51 9q-27 3.5 -55 3.5q-50 0 -77.5 -17.5q-27.5 -17.5 -27.5 -48.5q0 -31 26 -49.5q26 -18.5 64.5 -34q38.5 -15.5 83.5 -31q45 -15.5 83.5 -40q38.5 -24.5 64.5 -61.5q26 -37 26 -95q0 -58 -20 -100q-20 -42 -56.5 -69.5q-36.5 -27.5 -87.5 -40.5q-51 -13 -112 -13q-41 0 -77.5 4.5q-36.5 4.5 -67.5 11q-31 6.5 -54.5 14q-23.5 7.5 -37.5 14.5l49 125q11 -6 30.5 -13q19.5 -7 43.5 -13.5q24 -6.5 51.5 -10.5q27.5 -4 55.5 -4q66 0 100.5 19t34.5 59z" />
-<glyph unicode="&#1030;" horiz-adv-x="388" d="M120 620h-80v80h308v-80h-80v-540h80v-80h-308v80l80 0z" />
-<glyph unicode="&#1031;" horiz-adv-x="388" d="M56 792q0 32 17 48.5q17 16.5 47 16.5q30 0 47 -16.5q17 -16.5 17 -48.5q0 -31 -17 -47q-17 -16 -47 -16q-30 0 -47 16q-17 16 -17 47zt0 0zM205 792q0 32 16.5 48.5q16.5 16.5 46.5 16.5q64 0 64 -65q0 -63 -64 -63q-30 0 -46.5 16q-16.5 16 -16.5 47zt0 0zM120 620h-80v80h308v-80h-80v-540h80v-80h-308v80l80 0z" />
-<glyph unicode="&#1032;" horiz-adv-x="362" d="M143 700h148v-510q0 -37 -10 -73q-10 -36 -31.5 -65q-21.5 -29 -56.5 -47q-35 -18 -85 -18q-32 0 -68.5 6.5q-36.5 6.5 -64.5 18.5l32 118q29 -13 64 -13q23 0 37 8.5q14 8.5 22 24q8 15.5 10.5 36.5q2.5 21 2.5 45z" />
-<glyph unicode="&#1033;" horiz-adv-x="1015" d="M463 570h-161q-5 -95 -10.5 -171.5q-5.5 -76.5 -15 -137.5q-9.5 -61 -25.5 -108.5q-16 -47.5 -40 -83.5q-16 -23 -35.5 -38q-19.5 -15 -40.5 -23.5q-21 -8.5 -41 -12q-20 -3.5 -37 -3.5q-26 0 -40.5 4q-14.5 4 -31.5 12l16 124q6 -2 12 -3q6 -1 13 -1q17 0 34.5 7.5q17.5 7.5 30.5 26.5q16 22 28.5 63q12.5 41 21 106.5q8.5 65.5 14 156.5q5.5 91 7.5 212l449 0v-249q5 1 17 2.5q12 1.5 26.5 2.5q14.5 1 30 2q15.5 1 27.5 1q54 0 104.5 -10q50.5 -10 89 -36q38.5 -26 62 -70q23.5 -44 23.5 -111q0 -120 -82.5 -181q-82.5 -61 -231.5 -61q-15 0 -40.5 0.5q-25.5 0.5 -55.5 2.5q-30 2 -61 5q-31 3 -57 9zM611 125q12 -2 31.5 -3.5q19.5 -1.5 41.5 -1.5q30 0 57.5 5q27.5 5 48 17.5q20.5 12.5 32.5 33q12 20.5 12 51.5q0 33 -12.5 53q-12.5 20 -33.5 31q-21 11 -48 14.5q-27 3.5 -56 3.5q-8 0 -18.5 -1q-10.5 -1 -21.5 -2q-11 -1 -20 -2.5q-9 -1.5 -13 -2.5z" />
-<glyph unicode="&#1034;" horiz-adv-x="1045" d="M493 301h-280v-301h-148v700h148v-269h280v269h148v-260q6 1 17.5 2.5q11.5 1.5 26 2.5q14.5 1 30 2q15.5 1 28.5 1q54 0 104 -9.5q50 -9.5 89 -34q39 -24.5 62 -68q23 -43.5 23 -110.5q0 -120 -81.5 -178q-81.5 -58 -232.5 -58q-15 0 -41 1q-26 1 -56 2.5q-30 1.5 -61 4q-31 2.5 -56 5.5zM641 125q12 -2 31.5 -3.5q19.5 -1.5 41.5 -1.5q34 0 62 4.5q28 4.5 47.5 15.5q19.5 11 30 30.5q10.5 19.5 10.5 49.5q0 31 -11 50q-11 19 -30.5 29.5q-19.5 10.5 -47.5 14.5q-28 4 -61 4q-8 0 -18.5 -1q-10.5 -1 -21.5 -2q-11 -1 -20 -3q-9 -2 -13 -3z" />
-<glyph unicode="&#1035;" horiz-adv-x="822" d="M382 0h-148v570h-222v130h594v-130h-224v-169q27 16 75 28.5q48 12.5 113 12.5q45 0 83 -11q38 -11 65.5 -34q27.5 -23 43.5 -60q16 -37 16 -88v-249h-148v200q0 58 -26 88q-26 30 -84 30q-42 0 -79.5 -8.5q-37.5 -8.5 -58.5 -25.5z" />
-<glyph unicode="&#1036;" horiz-adv-x="671" d="M252 296h-39v-296h-148v700h148v-308l35 15l210 293h169l-222 -293l-58 -38l60 -40l254 -329h-183zM343 870h172v-31l-174 -87l-112 0z" />
-<glyph unicode="&#1038;" horiz-adv-x="616" d="M318 395l22 -89h7l17 93l114 301h155l-203 -487q-23 -56 -46 -97q-23 -41 -49 -68.5q-26 -27.5 -58 -41q-32 -13.5 -74 -13.5q-36 0 -57 4q-21 4 -47 20l37 119q19 -9 34.5 -11q15.5 -2 32.5 -2q52 0 72 70l-285 507h174zM244 875q5 -31 26 -44q21 -13 55 -13q72 0 81 56l121 -17q-12 -65 -63 -93.5q-51 -28.5 -140 -28.5q-44 0 -81 5.5q-37 5.5 -65 19.5q-28 14 -45.5 36.5q-17.5 22.5 -22.5 57.5z" />
-<glyph unicode="&#1039;" horiz-adv-x="694" d="M213 700v-570h268v570h148v-700h-215l-16 -174h-95l-22 174h-216l0 700z" />
-<glyph unicode="&#1040;" horiz-adv-x="658" d="M441 149h-236l-57 -149h-148l274 705h109l275 -705h-157zM246 266h160l-54 146l-24 111h-5l-24 -112z" />
-<glyph unicode="&#1041;" horiz-adv-x="618" d="M65 700h468v-130h-320v-135q19 3 45 5.5q26 2.5 52 2.5q61 0 112 -11q51 -11 88 -36.5q37 -25.5 57.5 -67q20.5 -41.5 20.5 -102.5q0 -59 -21.5 -103q-21.5 -44 -61.5 -73.5q-40 -29.5 -96 -44.5q-56 -15 -125 -15q-18 0 -46 1q-28 1 -58.5 3q-30.5 2 -60.5 5q-30 3 -54 8zM296 110q28 0 52.5 6q24.5 6 43 18.5q18.5 12.5 29 32.5q10.5 20 10.5 48q0 34 -12 55.5q-12 21.5 -32.5 33q-20.5 11.5 -48 15.5q-27.5 4 -57.5 4q-15 0 -37 -2.5q-22 -2.5 -31 -4.5l0 -201q12 -3 36 -4t47 -1z" />
-<glyph unicode="&#1042;" horiz-adv-x="641" d="M577 535q0 -26 -7.5 -51.5q-7.5 -25.5 -23.5 -47.5q-16 -22 -42 -38q-26 -16 -63 -23l0 -6q33 -3 62 -15q29 -12 50.5 -33.5q21.5 -21.5 34 -52q12.5 -30.5 12.5 -71.5q0 -55 -25.5 -94q-25.5 -39 -66.5 -64q-41 -25 -94 -37q-53 -12 -108 -12q-18 0 -47.5 0q-29.5 0 -63 1.5q-33.5 1.5 -68 4.5q-34.5 3 -62.5 9l0 690q21 3 47.5 6q26.5 3 57 5q30.5 2 62.5 3q32 1 64 1q52 0 102 -7.5q50 -7.5 90 -27q40 -19.5 64.5 -53.5q24.5 -34 24.5 -87zt0 0zM304 110q28 0 53.5 5q25.5 5 45 16.5q19.5 11.5 31 29q11.5 17.5 11.5 43.5q0 32 -14 51q-14 19 -36.5 28.5q-22.5 9.5 -50 12q-27.5 2.5 -55.5 2.5h-82v-182q6 -2 17.5 -3q11.5 -1 25.5 -1.5q14 -0.5 28.5 -1q14.5 -0.5 25.5 -0.5zt0 0zM257 408q15 0 35.5 0.5q20.5 0.5 34.5 2.5q42 13 71 35.5q29 22.5 29 61.5q0 26 -11 42q-11 16 -29.5 25q-18.5 9 -41.5 12q-23 3 -47 3q-29 0 -53 -1q-24 -1 -38 -3l0 -178z" />
-<glyph unicode="&#1043;" horiz-adv-x="498" d="M507 570h-294v-570h-148v700l442 0z" />
-<glyph unicode="&#1044;" horiz-adv-x="751" d="M732 -124h-105l-16 124h-490l-16 -124h-105v254h81q8 11 25 48q17 37 34 106q17 69 29.5 171.5q12.5 102.5 10.5 244.5l456 0v-570h96zM488 130v440h-170q-6 -172 -30.5 -282q-24.5 -110 -49.5 -158z" />
-<glyph unicode="&#1045;" horiz-adv-x="566" d="M65 700h451v-130h-303v-152h275v-130h-275v-158h308v-130l-456 0z" />
-<glyph unicode="&#1046;" horiz-adv-x="910" d="M380 700h140v-309l39 14l158 295h168l-178 -307l-52 -35l63 -43l200 -315h-179l-176 301h-43v-301h-140v313l-38 -14l-176 -299h-174l199 305l59 40l-57 38l-186 317h173l157 -297l43 0z" />
-<glyph unicode="&#1047;" horiz-adv-x="570" d="M128 307v113h26q10 0 24.5 0q14.5 0 30 0.5q15.5 0.5 30 2q14.5 1.5 23.5 3.5q38 7 63.5 25.5q25.5 18.5 25.5 53.5q0 45 -32.5 61q-32.5 16 -86.5 16q-24 0 -47.5 -3.5q-23.5 -3.5 -44 -9.5q-20.5 -6 -37.5 -12.5q-17 -6.5 -28 -12.5l-37 126q11 5 32.5 12.5q21.5 7.5 50.5 14q29 6.5 63 11q34 4.5 69 4.5q48 0 93.5 -8q45.5 -8 81.5 -28q36 -20 58 -54q22 -34 22 -86q0 -51 -30 -95q-30 -44 -96 -64l0 -6q70 -11 109.5 -55q39.5 -44 39.5 -116q0 -56 -25 -96.5q-25 -40.5 -65.5 -66.5q-40.5 -26 -93 -38.5q-52.5 -12.5 -107.5 -12.5q-36 0 -69.5 3.5q-33.5 3.5 -62.5 8.5q-29 5 -52 12q-23 7 -38 15l38 128q25 -11 72.5 -24q47.5 -13 113.5 -13q23 0 46.5 5q23.5 5 42.5 16.5q19 11.5 31 29.5q12 18 12 45q0 23 -8.5 40q-8.5 17 -29 28.5q-20.5 11.5 -55 18q-34.5 6.5 -85.5 7.5q-13 0 -19.5 0.5q-6.5 0.5 -22.5 0.5z" />
-<glyph unicode="&#1048;" horiz-adv-x="723" d="M510 386l8 89h-5l-51 -90l-287 -385h-110v700h148v-377l-10 -93h6l54 93l284 377h111v-700l-148 0z" />
-<glyph unicode="&#1049;" horiz-adv-x="723" d="M510 386l8 89h-5l-51 -90l-287 -385h-110v700h148v-377l-10 -93h6l54 93l284 377h111v-700h-148zM294 875q5 -31 26 -44q21 -13 55 -13q72 0 81 56l121 -17q-12 -65 -63 -93.5q-51 -28.5 -140 -28.5q-44 0 -81 5.5q-37 5.5 -65 19.5q-28 14 -45.5 36.5q-17.5 22.5 -22.5 57.5z" />
-<glyph unicode="&#1050;" horiz-adv-x="671" d="M252 296h-39v-296h-148v700h148v-308l35 15l210 293h169l-222 -293l-58 -38l60 -40l254 -329l-183 0z" />
-<glyph unicode="&#1051;" horiz-adv-x="676" d="M463 570h-161q-5 -95 -10.5 -171.5q-5.5 -76.5 -15 -137.5q-9.5 -61 -25.5 -108.5q-16 -47.5 -40 -83.5q-16 -23 -35.5 -38q-19.5 -15 -40.5 -23.5q-21 -8.5 -41 -12q-20 -3.5 -37 -3.5q-26 0 -40.5 4q-14.5 4 -31.5 12l16 124q11 -4 26 -4q17 0 34 8q17 8 30 26q16 22 28.5 63q12.5 41 21 106.5q8.5 65.5 14 156.5q5.5 91 7.5 212l449 0v-700l-148 0z" />
-<glyph unicode="&#1052;" horiz-adv-x="868" d="M655 351l16 145h-6l-48 -110l-162 -261h-46l-172 262l-47 108h-6l21 -143v-352h-140v700h134l202 -323l38 -77h5l33 79l193 321h133v-700l-148 0z" />
-<glyph unicode="&#1053;" horiz-adv-x="706" d="M493 289h-280v-289h-148v700h148v-281h280v281h148v-700l-148 0z" />
-<glyph unicode="&#1054;" horiz-adv-x="727" d="M40 350q0 86 22 154q22 68 63.5 114.5q41.5 46.5 101.5 71q60 24.5 136 24.5q81 0 141.5 -26.5q60.5 -26.5 101 -74.5q40.5 -48 61 -115q20.5 -67 20.5 -148q0 -86 -22.5 -154q-22.5 -68 -64.5 -114.5q-42 -46.5 -102 -71q-60 -24.5 -135 -24.5q-81 0 -141.5 26.5q-60.5 26.5 -101 74.5q-40.5 48 -60.5 115q-20 67 -20 148zt0 0zM197 350q0 -52 10 -95q10 -43 30 -74q20 -31 51.5 -48q31.5 -17 74.5 -17q79 0 123 54q44 54 44 180q0 50 -9 93q-9 43 -29.5 74.5q-20.5 31.5 -52 49q-31.5 17.5 -76.5 17.5q-78 0 -122 -56t-44 -178z" />
-<glyph unicode="&#1055;" horiz-adv-x="694" d="M481 570h-268v-570h-148v700h564v-700l-148 0z" />
-<glyph unicode="&#1056;" horiz-adv-x="620" d="M65 693q45 8 100 12.5q55 4.5 110 4.5q56 0 113 -8.5q57 -8.5 102.5 -34q45.5 -25.5 74.5 -71q29 -45.5 29 -120.5q0 -66 -25 -112.5q-25 -46.5 -66.5 -75.5q-41.5 -29 -94.5 -42.5q-53 -13.5 -109 -13.5q-5 0 -17 0q-12 0 -25.5 0.5q-13.5 0.5 -25.5 1.5q-12 1 -18 2l0 -236h-148zM285 580q-21 0 -40.5 -1q-19.5 -1 -31.5 -4l0 -208q4 -1 13 -2q9 -1 19 -1.5q10 -0.5 18.5 -1q8.5 -0.5 13.5 -0.5q29 0 58 4q29 4 51.5 17q22.5 13 36.5 35.5q14 22.5 14 60.5q0 32 -13 51.5q-13 19.5 -34.5 30.5q-21.5 11 -49 15t-55.5 4z" />
-<glyph unicode="&#1057;" horiz-adv-x="607" d="M579 30q-33 -23 -87 -33.5q-54 -10.5 -111 -10.5q-67 0 -128.5 20q-61.5 20 -109 64q-47.5 44 -75.5 113q-28 69 -28 167q0 102 32 171.5q32 69.5 82 112q50 42.5 111 61.5q61 19 120 19q65 0 109.5 -8q44.5 -8 73.5 -19v-124q-54 11 -87.5 16q-33.5 5 -84.5 5q-45 0 -81.5 -14.5q-36.5 -14.5 -62.5 -43.5q-26 -29 -40.5 -73q-14.5 -44 -14.5 -103q0 -52 13 -95q13 -43 39 -74q26 -31 66 -48q40 -17 93 -17q49 0 82.5 9q33.5 9 59.5 23z" />
-<glyph unicode="&#1058;" horiz-adv-x="616" d="M604 570h-222v-570h-148v570h-222v130l592 0z" />
-<glyph unicode="&#1059;" horiz-adv-x="616" d="M318 395l22 -89h7l17 93l114 301h155l-203 -487q-23 -56 -46 -97q-23 -41 -49 -68.5q-26 -27.5 -58 -41q-32 -13.5 -74 -13.5q-36 0 -57 4q-21 4 -47 20l37 119q19 -9 34.5 -11q15.5 -2 32.5 -2q52 0 72 70l-285 507l174 0z" />
-<glyph unicode="&#1060;" horiz-adv-x="871" d="M362 76q-21 -3 -42 -4q-21 -1 -46 -1q-51 0 -96 17q-45 17 -78.5 52q-33.5 35 -53 87q-19.5 52 -19.5 123q0 67 19.5 121q19.5 54 54.5 91.5q35 37.5 84.5 57.5q49.5 20 108.5 20q14 0 34.5 -1q20.5 -1 33.5 -4l0 85h147v-88q20 5 46 6.5q26 1.5 43 1.5q52 0 97 -18q45 -18 78 -53.5q33 -35.5 52 -87.5q19 -52 19 -121q0 -70 -21 -124q-21 -54 -57 -90.5q-36 -36.5 -83.5 -55.5q-47.5 -19 -100.5 -19q-18 0 -38.5 1.5q-20.5 1.5 -34.5 5.5l0 -98h-147zM563 523q-11 0 -29.5 -1q-18.5 -1 -30.5 -4l0 -328q9 -2 22 -2q13 0 27 0q29 0 55 10q26 10 45.5 30.5q19.5 20.5 30.5 53q11 32.5 11 77.5q0 78 -35.5 121q-35.5 43 -95.5 43zt0 0zM312 188q9 0 26 0.5q17 0.5 30 4.5l0 327q-23 3 -51 3q-29 0 -54.5 -10q-25.5 -10 -44.5 -31q-19 -21 -30 -53.5q-11 -32.5 -11 -77.5q0 -79 37.5 -121t97.5 -42z" />
-<glyph unicode="&#1061;" horiz-adv-x="685" d="M244 356l-212 344h179l117 -199l27 -69l26 69l122 199h161l-220 -337l231 -363h-177l-134 213l-30 72l-29 -72l-134 -213l-161 0z" />
-<glyph unicode="&#1062;" horiz-adv-x="741" d="M722 -124h-105l-16 124h-536v700h148v-570h264v570h148v-570l97 0z" />
-<glyph unicode="&#1063;" horiz-adv-x="657" d="M196 700v-216q0 -58 26 -89q26 -31 85 -31q42 0 79 8.5q37 8.5 58 25.5l0 302h148v-700h-148v280q-27 -15 -75.5 -27.5q-48.5 -12.5 -114.5 -12.5q-46 0 -84 11.5q-38 11.5 -65 35.5q-27 24 -42 61q-15 37 -15 88l0 264z" />
-<glyph unicode="&#1064;" horiz-adv-x="934" d="M65 0v700h148v-570h180v570h148v-570h180v570h148l0 -700z" />
-<glyph unicode="&#1065;" horiz-adv-x="990" d="M65 0v700h148v-570h180v570h148v-570h180v570h148v-570h102v-254h-105l-16 124z" />
-<glyph unicode="&#1066;" horiz-adv-x="721" d="M169 570h-174v130h322v-249q5 1 17 2.5q12 1.5 27 2.5q15 1 30.5 2q15.5 1 28.5 1q53 0 103 -10q50 -10 88.5 -36q38.5 -26 62 -70q23.5 -44 23.5 -111q0 -119 -82 -180.5q-82 -61.5 -231 -61.5q-15 0 -41.5 0.5q-26.5 0.5 -56.5 2.5q-30 2 -61 5q-31 3 -56 9zM390 120q30 0 57.5 5q27.5 5 48 17.5q20.5 12.5 32.5 33q12 20.5 12 51.5q0 33 -12.5 53q-12.5 20 -33.5 31q-21 11 -48 14.5q-27 3.5 -56 3.5q-8 0 -18.5 -1q-10.5 -1 -21.5 -2q-11 -1 -20 -2.5q-9 -1.5 -13 -2.5l0 -196q12 -2 32 -3.5t41 -1.5z" />
-<glyph unicode="&#1067;" horiz-adv-x="865" d="M652 700h148v-700h-148zM65 700h148v-249q11 2 36.5 5q25.5 3 51.5 3q54 0 103.5 -10.5q49.5 -10.5 87 -36q37.5 -25.5 59.5 -69.5q22 -44 22 -110q0 -121 -78 -182q-78 -61 -228 -61q-15 0 -39 0.5q-24 0.5 -52 2.5q-28 2 -57 5q-29 3 -54 9zM277 120q61 0 100 25q39 25 39 83q0 31 -11 50.5q-11 19.5 -29.5 31q-18.5 11.5 -44 15.5q-25.5 4 -53.5 4q-7 0 -16.5 -1q-9.5 -1 -19 -2q-9.5 -1 -17.5 -2.5q-8 -1.5 -12 -2.5l0 -196q25 -5 64 -5z" />
-<glyph unicode="&#1068;" horiz-adv-x="617" d="M65 700h148v-249q5 1 17 2.5q12 1.5 26.5 2.5q14.5 1 30 2q15.5 1 27.5 1q54 0 104.5 -10q50.5 -10 89 -36q38.5 -26 62 -70q23.5 -44 23.5 -111q0 -120 -82.5 -181q-82.5 -61 -231.5 -61q-15 0 -40.5 0.5q-25.5 0.5 -55.5 2.5q-30 2 -61 5q-31 3 -57 9zM286 120q30 0 57.5 5q27.5 5 48 17.5q20.5 12.5 32.5 33q12 20.5 12 51.5q0 33 -12.5 53q-12.5 20 -33.5 31q-21 11 -48 14.5q-27 3.5 -56 3.5q-8 0 -18.5 -1q-10.5 -1 -21.5 -2q-11 -1 -20 -2.5q-9 -1.5 -13 -2.5l0 -196q12 -2 31.5 -3.5t41.5 -1.5z" />
-<glyph unicode="&#1069;" horiz-adv-x="621" d="M140 414h292q-3 36 -17.5 67.5q-14.5 31.5 -39.5 54q-25 22.5 -61 35.5q-36 13 -83 13q-61 0 -105 -12.5q-44 -12.5 -69 -26.5l-32 125q18 9 42.5 17q24.5 8 52 14q27.5 6 56.5 9.5q29 3.5 57 3.5q75 0 138.5 -19q63.5 -19 110 -62q46.5 -43 73 -112.5q26.5 -69.5 26.5 -170.5q0 -105 -31.5 -175q-31.5 -70 -83 -112q-51.5 -42 -118 -59.5q-66.5 -17.5 -136.5 -17.5q-62 0 -112 10.5q-50 10.5 -80 23.5l39 127q25 -12 67.5 -21.5q42.5 -9.5 98.5 -9.5q42 0 78 10.5q36 10.5 63.5 32.5q27.5 22 44.5 56q17 34 22 82l-293 0z" />
-<glyph unicode="&#1070;" horiz-adv-x="974" d="M213 419h103q14 141 92 218q78 77 214 77q81 0 140 -26.5q59 -26.5 97 -74.5q38 -48 56.5 -115q18.5 -67 18.5 -148q0 -174 -79.5 -269q-79.5 -95 -231.5 -95q-71 0 -125 22q-54 22 -92.5 61.5q-38.5 39.5 -61 95.5q-22.5 56 -28.5 124l-103 0v-289h-148v700h148zM466 350q0 -52 8 -95q8 -43 27 -74q19 -31 48.5 -48q29.5 -17 73.5 -17q79 0 116.5 54.5q37.5 54.5 37.5 179.5q0 50 -7 92.5q-7 42.5 -25 74q-18 31.5 -47.5 49.5q-29.5 18 -74.5 18q-79 0 -118 -56.5t-39 -177.5z" />
-<glyph unicode="&#1071;" horiz-adv-x="626" d="M562 0h-148v274l-78 -19l-160 -255h-173l156 229l66 45q-35 8 -65.5 24.5q-30.5 16.5 -53.5 42.5q-23 26 -36 61.5q-13 35.5 -13 80.5q0 63 24 106.5q24 43.5 66.5 70q42.5 26.5 101 38.5q58.5 12 126.5 12q18 0 42 -1q24 -1 49.5 -3q25.5 -2 50.5 -5q25 -3 45 -8zM358 580q-29 0 -55 -4.5q-26 -4.5 -46 -15.5q-20 -11 -31.5 -31.5q-11.5 -20.5 -11.5 -51.5q0 -30 11 -50.5q11 -20.5 30.5 -33q19.5 -12.5 46 -18q26.5 -5.5 56.5 -5.5h56v206q-12 2 -24 3t-32 1z" />
-<glyph unicode="&#1072;" horiz-adv-x="579" d="M67 489q45 20 110.5 33q65.5 13 135.5 13q55 0 92.5 -13q37.5 -13 59.5 -37.5q22 -24.5 31.5 -59q9.5 -34.5 9.5 -76.5q0 -51 -4 -101q-4 -50 -4 -106q0 -38 5 -74q5 -36 16 -69l-114 0l-23 78h-12q-26 -35 -66 -60q-40 -25 -103 -25q-38 0 -69.5 11q-31.5 11 -54 31.5q-22.5 20.5 -35 48.5q-12.5 28 -12.5 61q0 89 59.5 134.5q59.5 45.5 180.5 45.5q28 0 56 -4.5q28 -4.5 39 -6.5q3 21 3 36q0 38 -19 56q-19 18 -71 18q-48 0 -93.5 -11.5q-45.5 -11.5 -80.5 -28.5zM250 104q47 0 75 22q28 22 41 46l0 60q-5 2 -15.5 4q-10.5 2 -23 4q-12.5 2 -25 3q-12.5 1 -22.5 1q-54 0 -80 -19.5q-26 -19.5 -26 -48.5q0 -36 20.5 -54t55.5 -18z" />
-<glyph unicode="&#1073;" horiz-adv-x="616" d="M165 414q34 45 78.5 66q44.5 21 107.5 21q103 0 163 -56q60 -56 60 -176q0 -140 -68.5 -212q-68.5 -72 -194.5 -72q-132 0 -200.5 80q-68.5 80 -68.5 249q0 90 11.5 152.5q11.5 62.5 32 104q20.5 41.5 49.5 65q29 23.5 64.5 36q35.5 12.5 76.5 17q41 4.5 86 8.5q57 5 98.5 11.5q41.5 6.5 63.5 22.5l5 -121q-23 -17 -64 -22.5q-41 -5.5 -114 -10.5q-44 -3 -78 -7q-34 -4 -59 -19.5q-25 -15.5 -40 -47.5q-15 -32 -22 -90l9 0zM186 251q0 -32 7.5 -59q7.5 -27 22.5 -47q15 -20 38 -31.5q23 -11.5 54 -11.5q66 0 94 39q28 39 28 109q0 66 -26.5 100q-26.5 34 -88.5 34q-66 0 -97.5 -35.5t-31.5 -97.5z" />
-<glyph unicode="&#1074;" horiz-adv-x="577" d="M72 525q41 3 96 6q55 3 121 3q124 0 176 -33q52 -33 52 -98q0 -37 -23 -71q-23 -34 -72 -51l0 -8q62 -13 90.5 -44.5q28.5 -31.5 28.5 -81.5q0 -78 -66 -117q-66 -39 -210 -39q-47 0 -99.5 2.5q-52.5 2.5 -93.5 6.5zM209 107q20 -4 34.5 -5q14.5 -1 34.5 -1q68 0 94.5 16.5q26.5 16.5 26.5 47.5q0 28 -23 45.5q-23 17.5 -84 17.5h-83zM294 311q40 0 65 15.5q25 15.5 25 40.5q0 27 -21.5 42q-21.5 15 -77.5 15q-20 0 -33 -1q-13 -1 -24 -2q-4 0 -10 -0.5q-6 -0.5 -9 -0.5l0 -109z" />
-<glyph unicode="&#1075;" horiz-adv-x="438" d="M438 401h-218v-401h-148v525l366 0z" />
-<glyph unicode="&#1076;" horiz-adv-x="651" d="M631 -119h-98l-18 119h-398l-19 -119h-98v243h66q9 12 24.5 40q15.5 28 30 76q14.5 48 25 118.5q10.5 70.5 11.5 166.5l390 0v-401h84zM407 117v291h-131q-2 -39 -8 -81q-6 -42 -15 -81q-9 -39 -21 -73q-12 -34 -26 -56z" />
-<glyph unicode="&#1077;" horiz-adv-x="594" d="M521 48q-34 -26 -92.5 -44.5q-58.5 -18.5 -125.5 -18.5q-135 0 -198 74q-63 74 -63 203q0 137 71 207.5q71 70.5 200 70.5q42 0 83 -10.5q41 -10.5 73 -35q32 -24.5 51.5 -66q19.5 -41.5 19.5 -102.5q0 -21 -2.5 -46q-2.5 -25 -8.5 -52l-350 0q5 -68 39.5 -100.5q34.5 -32.5 112.5 -32.5q47 0 84.5 13.5q37.5 13.5 57.5 27.5zM311 430q-62 0 -92 -33.5q-30 -33.5 -35 -85.5l226 0q4 55 -20 87t-79 32z" />
-<glyph unicode="&#1078;" horiz-adv-x="810" d="M282 214l-117 -214h-159l148 238h-1l42 34l-61 43l-118 210h153l107 -213h58v213h132v-227l52 18q26 53 54 104.5q28 51.5 54 104.5l151 0q-32 -54 -62 -105q-30 -51 -62 -105l1 0l-47 -37l61 -44h-1l137 -234h-162l-118 218h-58v-218h-132l0 231z" />
-<glyph unicode="&#1079;" horiz-adv-x="486" d="M125 218v94h65q45 0 71 14.5q26 14.5 26 39.5q0 29 -23 40.5q-23 11.5 -72 11.5q-43 0 -78.5 -10.5q-35.5 -10.5 -58.5 -21.5q-8 27 -13.5 51.5q-5.5 24.5 -13.5 51.5q33 20 89 33q56 13 119 13q97 0 144.5 -33.5q47.5 -33.5 47.5 -96.5q0 -18 -5.5 -36q-5.5 -18 -16.5 -34.5q-11 -16.5 -28 -30q-17 -13.5 -40 -21.5l0 -8q62 -13 87 -44.5q25 -31.5 25 -84.5q0 -33 -14.5 -61.5q-14.5 -28.5 -44.5 -50.5q-30 -22 -75.5 -34.5q-45.5 -12.5 -107.5 -12.5q-60 0 -107 13q-47 13 -77 29q7 27 15 54q8 27 16 54q27 -14 65.5 -23.5q38.5 -9.5 83.5 -9.5q106 0 106 61q0 14 -6.5 24q-6.5 10 -21.5 16.5q-15 6.5 -40.5 9.5q-25.5 3 -64.5 3z" />
-<glyph unicode="&#1080;" horiz-adv-x="632" d="M420 237l6 89l-63 -88l-207 -238h-84v525h140v-247l-5 -72h12q12 17 24.5 36q12.5 19 24.5 36l208 247h84v-525l-140 0z" />
-<glyph unicode="&#1081;" horiz-adv-x="632" d="M420 237l6 89l-63 -88l-207 -238h-84v525h140v-247l-5 -72h12q12 17 24.5 36q12.5 19 24.5 36l208 247h84v-525h-140zM252 742q8 -42 28 -57q20 -15 52 -15q33 0 52.5 15.5q19.5 15.5 27.5 55.5l104 -27q-13 -66 -65 -99q-52 -33 -124 -33q-35 0 -66.5 7q-31.5 7 -57.5 23q-26 16 -44.5 41q-18.5 25 -25.5 61z" />
-<glyph unicode="&#1082;" horiz-adv-x="564" d="M261 218h-49v-218h-140v525h140v-227l45 19l134 208h151q-35 -48 -68.5 -96.5q-33.5 -48.5 -67.5 -96.5l-66 -44l70 -43q38 -62 77 -122.5q39 -60.5 77 -122.5l-162 0z" />
-<glyph unicode="&#1083;" horiz-adv-x="599" d="M387 401h-123q-3 -84 -12.5 -158q-9.5 -74 -30.5 -129.5q-21 -55.5 -55.5 -87.5q-34.5 -32 -88.5 -32q-63 0 -89 14l20 124q17 -5 31 -5q24 0 42 17q18 17 30 61.5q12 44.5 19.5 121.5q7.5 77 11.5 198l385 0v-525l-140 0z" />
-<glyph unicode="&#1084;" horiz-adv-x="772" d="M567 233l10 114h-16l-47 -90v1l-106 -163h-49l-117 163v-1l-47 90h-14l15 -113v-234h-124v525h147l131 -196v1l35 -67h11l35 69v-1l122 194h147v-525l-133 0z" />
-<glyph unicode="&#1085;" horiz-adv-x="623" d="M411 203h-199v-203h-140v525h140v-195h199v195h140v-525l-140 0z" />
-<glyph unicode="&#1086;" horiz-adv-x="616" d="M42 262q0 130 69 204q69 74 197 74q67 0 117 -21q50 -21 83 -58.5q33 -37.5 49.5 -88q16.5 -50.5 16.5 -110.5q0 -64 -18 -115.5q-18 -51.5 -52 -87.5q-34 -36 -83.5 -55q-49.5 -19 -112.5 -19q-68 0 -118 21q-50 21 -83 58.5q-33 37.5 -49 88q-16 50.5 -16 109.5zt0 0zM186 262q0 -33 7 -62q7 -29 21.5 -50.5q14.5 -21.5 37.5 -34.5q23 -13 56 -13q122 0 122 160q0 35 -6.5 64.5q-6.5 29.5 -21 51q-14.5 21.5 -38 33.5q-23.5 12 -56.5 12q-57 0 -89.5 -38t-32.5 -123z" />
-<glyph unicode="&#1087;" horiz-adv-x="617" d="M405 401h-193v-401h-140v525h473v-525l-140 0z" />
-<glyph unicode="&#1088;" horiz-adv-x="623" d="M72 525h100l17 -65h12q31 40 72 60q41 20 96 20q106 0 159 -63.5q53 -63.5 53 -201.5q0 -66 -17 -119.5q-17 -53.5 -50 -92q-33 -38.5 -81.5 -59q-48.5 -20.5 -111.5 -20.5q-34 0 -59 6.5q-25 6.5 -50 17.5l0 -207h-140zM326 423q-48 0 -74 -21.5q-26 -21.5 -40 -66.5l0 -204q17 -14 38 -22q21 -8 53 -8q68 0 101 42.5q33 42.5 33 135.5q0 67 -25.5 105.5t-85.5 38.5z" />
-<glyph unicode="&#1089;" horiz-adv-x="500" d="M468 32q-34 -23 -81.5 -35q-47.5 -12 -98.5 -12q-68 0 -114.5 20q-46.5 20 -76 57q-29.5 37 -42.5 87.5q-13 50.5 -13 112.5q0 131 64.5 204.5q64.5 73.5 187.5 73.5q60 0 98.5 -9.5q38.5 -9.5 68.5 -24.5l-34 -112q-26 11 -51.5 16.5q-25.5 5.5 -59.5 5.5q-63 0 -96.5 -36.5q-33.5 -36.5 -33.5 -117.5q0 -32 8 -59.5q8 -27.5 25 -48.5q17 -21 43 -33q26 -12 61 -12q42 0 66.5 7.5q24.5 7.5 46.5 20.5z" />
-<glyph unicode="&#1090;" horiz-adv-x="488" d="M480 401h-163v-401h-146v401h-163v124l472 0z" />
-<glyph unicode="&#1091;" horiz-adv-x="541" d="M264 234l22 -84h10l19 84l89 291h143l-174 -475q-22 -59 -41.5 -106q-19.5 -47 -42.5 -80q-23 -33 -51.5 -50.5q-28.5 -17.5 -67.5 -17.5q-26 0 -49.5 4.5q-23.5 4.5 -40.5 13.5l29 108q15 -5 31 -5q14 0 27 3q13 3 24 11.5q11 8.5 20.5 24q9.5 15.5 16.5 41.5l-240 528l169 0z" />
-<glyph unicode="&#1092;" horiz-adv-x="805" d="M335 -4q-26 -8 -47 -9.5q-21 -1.5 -38 -1.5q-104 0 -159 68.5q-55 68.5 -55 208.5q0 133 61 203q61 70 176 70q14 0 29 -1q15 -1 33 -4l0 170h135v-171q26 4 43.5 5q17.5 1 31.5 1q112 0 168 -61q56 -61 56 -201q0 -65 -15 -118.5q-15 -53.5 -44 -91q-29 -37.5 -72 -58q-43 -20.5 -99 -20.5q-10 0 -31.5 2.5q-21.5 2.5 -37.5 7.5l0 -195h-135zM464 99q13 -3 25.5 -3.5q12.5 -0.5 28.5 -0.5q57 0 84 41.5q27 41.5 27 136.5q0 81 -26 117q-26 36 -91 36q-13 0 -23.5 -1.5q-10.5 -1.5 -24.5 -5.5zM341 420q-17 4 -27 5q-10 1 -24 1q-56 0 -85 -37.5q-29 -37.5 -29 -126.5q0 -78 27 -122.5q27 -44.5 84 -44.5q25 0 54 7z" />
-<glyph unicode="&#1093;" horiz-adv-x="587" d="M192 269l-172 256h170l71 -102l-1 1l41 -93l40 93l-1 -1l76 102h154l-173 -252l184 -273h-166l-85 118l1 -1l-42 92l-44 -92l1 1l-86 -118l-154 0z" />
-<glyph unicode="&#1094;" horiz-adv-x="645" d="M625 -119h-99l-17 119h-437v525h140v-401h189v401h140v-401l84 0z" />
-<glyph unicode="&#1095;" horiz-adv-x="582" d="M182 525v-103q0 -38 3.5 -64.5q3.5 -26.5 12.5 -43.5q9 -17 26 -24.5q17 -7.5 44 -7.5q33 0 59 8.5q26 8.5 43 20.5l0 214h140v-525h-140v214q-11 -7 -25 -15.5q-14 -8.5 -33 -16q-19 -7.5 -43 -12.5q-24 -5 -53 -5q-41 0 -73.5 8.5q-32.5 8.5 -55 30q-22.5 21.5 -34 57q-11.5 35.5 -11.5 89.5l0 175z" />
-<glyph unicode="&#1096;" horiz-adv-x="876" d="M72 0v525h140v-401h156v401h140v-401h156v401h140l0 -525z" />
-<glyph unicode="&#1097;" horiz-adv-x="906" d="M886 -119h-98l-19 119h-697v525h140v-401h156v401h140v-401h156v401h140v-401l82 0z" />
-<glyph unicode="&#1098;" horiz-adv-x="618" d="M266 117q20 -4 38.5 -5.5q18.5 -1.5 34.5 -1.5q111 0 111 72q0 67 -108 67q-37 0 -76 -9zM266 337q31 5 62.5 7q31.5 2 53.5 2q58 0 98.5 -12.5q40.5 -12.5 65.5 -34.5q25 -22 36.5 -52q11.5 -30 11.5 -64q0 -95 -61.5 -142.5q-61.5 -47.5 -204.5 -47.5q-66 0 -114 1.5q-48 1.5 -86 4.5l0 402h-128v124l266 0z" />
-<glyph unicode="&#1099;" horiz-adv-x="815" d="M212 117q19 -4 37.5 -5.5q18.5 -1.5 34.5 -1.5q54 0 77 17q23 17 23 55q0 32 -23 49.5q-23 17.5 -73 17.5q-42 0 -76 -9zM212 337q31 5 61.5 7q30.5 2 51.5 2q57 0 95.5 -12.5q38.5 -12.5 62.5 -34.5q24 -22 34.5 -52q10.5 -30 10.5 -64q0 -47 -13.5 -82.5q-13.5 -35.5 -44 -59.5q-30.5 -24 -79 -36q-48.5 -12 -118.5 -12q-66 0 -113.5 1.5q-47.5 1.5 -87.5 4.5l0 526h140zM603 525h140v-525l-140 0z" />
-<glyph unicode="&#1100;" horiz-adv-x="563" d="M212 117q19 -4 37 -5.5q18 -1.5 34 -1.5q112 0 112 72q0 67 -108 67q-41 0 -75 -9zM212 337q30 5 61 7q31 2 52 2q58 0 99 -12.5q41 -12.5 66.5 -34.5q25.5 -22 37 -52q11.5 -30 11.5 -64q0 -47 -15 -82.5q-15 -35.5 -47 -59.5q-32 -24 -83.5 -36q-51.5 -12 -124.5 -12q-63 0 -110 1.5q-47 1.5 -87 4.5l0 526l140 0z" />
-<glyph unicode="&#1101;" horiz-adv-x="527" d="M129 315h215q-7 52 -39.5 80q-32.5 28 -98.5 28q-43 0 -76 -10q-33 -10 -59 -22l-38 100q73 49 201 49q127 0 189 -70.5q62 -70.5 62 -207.5q0 -138 -70 -207.5q-70 -69.5 -191 -69.5q-53 0 -107.5 10q-54.5 10 -86.5 30l34 108q27 -14 62.5 -22.5q35.5 -8.5 71.5 -8.5q39 0 66 7q27 7 44.5 21.5q17.5 14.5 26 36q8.5 21.5 10.5 51.5l-216 0z" />
-<glyph unicode="&#1102;" horiz-adv-x="847" d="M556 -15q-63 0 -107.5 16q-44.5 16 -74 45.5q-29.5 29.5 -44.5 71.5q-15 42 -20 94l-98 0v-212h-140v525h140v-196h100q12 101 70 156q58 55 176 55q65 0 111.5 -20.5q46.5 -20.5 76.5 -57.5q30 -37 44.5 -88q14.5 -51 14.5 -112q0 -130 -61.5 -203.5q-61.5 -73.5 -187.5 -73.5zt0 0zM444 262q0 -75 24.5 -117.5q24.5 -42.5 88.5 -42.5q27 0 46.5 8.5q19.5 8.5 32.5 27.5q13 19 19 49.5q6 30.5 6 74.5q0 80 -23 120.5q-23 40.5 -86 40.5q-54 0 -81 -37t-27 -124z" />
-<glyph unicode="&#1103;" horiz-adv-x="589" d="M377 179l-79 -13l-109 -166h-171l113 161l59 24q-39 4 -65 20q-26 16 -42 39.5q-16 23.5 -22.5 52q-6.5 28.5 -6.5 58.5q0 95 68.5 140q68.5 45 211.5 45q51 0 99 -5q48 -5 84 -11l0 -524h-140zM377 267v145q-13 5 -30 8q-17 3 -33 3q-56 0 -85 -19.5q-29 -19.5 -29 -61.5q0 -41 32.5 -59q32.5 -18 97.5 -18z" />
-<glyph unicode="&#1105;" horiz-adv-x="594" d="M521 48q-34 -26 -92.5 -44.5q-58.5 -18.5 -125.5 -18.5q-135 0 -198 74q-63 74 -63 203q0 137 71 207.5q71 70.5 200 70.5q42 0 83 -10.5q41 -10.5 73 -35q32 -24.5 51.5 -66q19.5 -41.5 19.5 -102.5q0 -21 -2.5 -46q-2.5 -25 -8.5 -52l-350 0q5 -68 39.5 -100.5q34.5 -32.5 112.5 -32.5q47 0 84.5 13.5q37.5 13.5 57.5 27.5zM311 430q-62 0 -92 -33.5q-30 -33.5 -35 -85.5l226 0q4 55 -20 87q-24 32 -79 32zt0 0zM101 646q0 35 21.5 56q21.5 21 55.5 21q34 0 54.5 -21q20.5 -21 20.5 -56q0 -30 -20.5 -51q-20.5 -21 -54.5 -21q-34 0 -55.5 21q-21.5 21 -21.5 51zt0 0zM354 646q0 35 20.5 56q20.5 21 54.5 21q35 0 55.5 -21q20.5 -21 20.5 -56q0 -30 -20.5 -51q-20.5 -21 -55.5 -21q-34 0 -54.5 21t-20.5 51z" />
-<glyph unicode="&#1106;" horiz-adv-x="633" d="M0 600h79v138h140v-138h178v-83h-178v-143h13q26 34 67 56q41 22 102 22q43 0 75 -10.5q32 -10.5 53.5 -36.5q21.5 -26 32.5 -69.5q11 -43.5 11 -109.5v-240q0 -94 -38.5 -143.5q-38.5 -49.5 -123.5 -49.5q-16 0 -33.5 1.5q-17.5 1.5 -37.5 5.5l0 117q29 -3 47 2q18 5 28.5 16.5q10.5 11.5 14 28.5q3.5 17 3.5 39v195q0 68 -20.5 99q-20.5 31 -75.5 31q-40 0 -73.5 -27q-33.5 -27 -44.5 -69l0 -232h-140v517l-79 0z" />
-<glyph unicode="&#1107;" horiz-adv-x="438" d="M438 401h-218v-401h-148v525h366zM268 729h142v-29l-126 -129l-76 0z" />
-<glyph unicode="&#1108;" horiz-adv-x="524" d="M494 29q-35 -23 -86 -33.5q-51 -10.5 -102 -10.5q-68 0 -118 20q-50 20 -82.5 56.5q-32.5 36.5 -48 87.5q-15.5 51 -15.5 113q0 66 19 118q19 52 54.5 87.5q35.5 35.5 85 54q49.5 18.5 110.5 18.5q59 0 101 -10q42 -10 72 -24q-8 -29 -16.5 -57q-8.5 -28 -16.5 -57q-25 11 -54.5 17.5q-29.5 6.5 -61.5 6.5q-55 0 -93.5 -25q-38.5 -25 -51.5 -79l223 0v-92h-223q10 -48 46.5 -79.5q36.5 -31.5 106.5 -31.5q40 0 68 8.5q28 8.5 48 22.5z" />
-<glyph unicode="&#1109;" horiz-adv-x="483" d="M71 136q14 -7 32.5 -14q18.5 -7 40 -13q21.5 -6 44 -10q22.5 -4 45.5 -4q35 0 54.5 11q19.5 11 19.5 41q0 24 -26 35.5q-26 11.5 -64 22.5q-28 8 -58.5 19q-30.5 11 -56 29.5q-25.5 18.5 -42 48.5q-16.5 30 -16.5 76q0 79 49 120.5q49 41.5 141 41.5q60 0 112.5 -10.5q52.5 -10.5 84.5 -24.5l-29 -106q-26 10 -66.5 20.5q-40.5 10.5 -82.5 10.5q-35 0 -52 -10.5q-17 -10.5 -17 -36.5q0 -23 26.5 -34.5q26.5 -11.5 64.5 -22.5q28 -8 58.5 -18.5q30.5 -10.5 55.5 -28.5q25 -18 41.5 -46.5q16.5 -28.5 16.5 -71.5q0 -84 -54.5 -130q-54.5 -46 -163.5 -46q-59 0 -110 10.5q-51 10.5 -83 30.5z" />
-<glyph unicode="&#1110;" horiz-adv-x="317" d="M89 525h140v-525h-140zM68 616q0 32 23 53.5q23 21.5 65 21.5q43 0 68 -22q25 -22 25 -53q0 -29 -25 -50q-25 -21 -68 -21q-42 0 -65 21t-23 50z" />
-<glyph unicode="&#1111;" horiz-adv-x="371" d="M30 648q0 32 16.5 52.5q16.5 20.5 53.5 20.5q35 0 51 -20.5q16 -20.5 16 -52.5q0 -31 -16 -52.5q-16 -21.5 -51 -21.5q-37 0 -53.5 21.5q-16.5 21.5 -16.5 52.5zt0 0zM205 648q0 32 16.5 52.5q16.5 20.5 51.5 20.5q35 0 51.5 -20.5q16.5 -20.5 16.5 -52.5q0 -31 -16.5 -52.5q-16.5 -21.5 -51.5 -21.5q-35 0 -51.5 21.5q-16.5 21.5 -16.5 52.5zt0 0zM113 525h140v-525l-140 0z" />
-<glyph unicode="&#1112;" horiz-adv-x="317" d="M91 525h140v-549q0 -95 -39 -146q-39 -51 -126 -51q-34 0 -72 7l0 117q31 -3 50 4q19 7 29.5 22q10.5 15 14 37q3.5 22 3.5 51zM68 616q0 32 23 53.5q23 21.5 65 21.5q43 0 68 -22q25 -22 25 -53q0 -29 -25 -50q-25 -21 -68 -21q-42 0 -65 21t-23 50z" />
-<glyph unicode="&#1113;" horiz-adv-x="878" d="M527 337q30 5 61 7q31 2 52 2q58 0 99 -12.5q41 -12.5 66.5 -34.5q25.5 -22 37 -52q11.5 -30 11.5 -64q0 -47 -15 -82.5q-15 -35.5 -47 -59.5q-32 -24 -83.5 -36q-51.5 -12 -124.5 -12q-63 0 -110 1.5q-47 1.5 -87 4.5l0 402h-123q-3 -84 -12.5 -158q-9.5 -74 -30.5 -129.5q-21 -55.5 -55.5 -87.5q-34.5 -32 -88.5 -32q-63 0 -89 14l20 124q17 -5 31 -5q24 0 42 17q18 17 30 61.5q12 44.5 19.5 121.5q7.5 77 11.5 198l385 0zM527 117q19 -4 37 -5.5q18 -1.5 34 -1.5q112 0 112 72q0 67 -108 67q-41 0 -75 -9z" />
-<glyph unicode="&#1114;" horiz-adv-x="902" d="M551 117q19 -4 37 -5.5q18 -1.5 34 -1.5q58 0 85 17q27 17 27 54q0 32 -26 50q-26 18 -82 18q-41 0 -75 -10zM551 337q32 5 62.5 7q30.5 2 50.5 2q58 0 99 -12.5q41 -12.5 66.5 -34.5q25.5 -22 37 -52q11.5 -30 11.5 -65q0 -47 -15 -82.5q-15 -35.5 -47 -59q-32 -23.5 -83 -35.5q-51 -12 -124 -12q-64 0 -111.5 2q-47.5 2 -86.5 5l0 206h-199v-206h-140v525h140v-193h199v193l140 0z" />
-<glyph unicode="&#1115;" horiz-adv-x="643" d="M0 600h89v138h140v-138h168v-83h-168v-144h13q26 36 67 57.5q41 21.5 102 21.5q43 0 75 -10.5q32 -10.5 53.5 -36.5q21.5 -26 32.5 -69q11 -43 11 -109v-227h-140v197q0 69 -20.5 100q-20.5 31 -75.5 31q-41 0 -74 -27q-33 -27 -44 -69l0 -232h-140v517l-89 0z" />
-<glyph unicode="&#1116;" horiz-adv-x="564" d="M261 218h-49v-218h-140v525h140v-227l45 19l134 208h151q-35 -48 -68.5 -96.5q-33.5 -48.5 -67.5 -96.5l-66 -44l70 -43q38 -62 77 -122.5q39 -60.5 77 -122.5l-162 0zM296 729h142v-29l-126 -129l-76 0z" />
-<glyph unicode="&#1118;" horiz-adv-x="541" d="M264 234l22 -84h10l19 84l89 291h143l-174 -475q-22 -59 -41.5 -106q-19.5 -47 -42.5 -80q-23 -33 -51.5 -50.5q-28.5 -17.5 -67.5 -17.5q-26 0 -49.5 4.5q-23.5 4.5 -40.5 13.5l29 108q15 -5 31 -5q14 0 27 3q13 3 24 11.5q11 8.5 20.5 24q9.5 15.5 16.5 41.5l-240 528h169zM203 742q8 -42 28 -57q20 -15 52 -15q33 0 52.5 15.5q19.5 15.5 27.5 55.5l104 -27q-13 -66 -65 -99q-52 -33 -124 -33q-35 0 -66.5 7q-31.5 7 -57.5 23q-26 16 -44.5 41q-18.5 25 -25.5 61z" />
-<glyph unicode="&#1119;" horiz-adv-x="610" d="M208 525v-404h194v404h140v-525h-171l-16 -174h-95l-22 174h-170l0 525z" />
-<glyph unicode="&#1122;" horiz-adv-x="707" d="M0 652h155v74h148v-74h218v-124h-218v-80q6 1 18 2.5q12 1.5 26.5 2.5q14.5 1 30 2q15.5 1 28.5 1q54 0 104 -10q50 -10 88.5 -35.5q38.5 -25.5 61.5 -68.5q23 -43 23 -109q0 -120 -82 -181.5q-82 -61.5 -232 -61.5q-15 0 -40.5 0.5q-25.5 0.5 -55.5 2.5q-30 2 -61 5q-31 3 -57 9l0 521h-155zM303 125q12 -2 32 -3.5q20 -1.5 41 -1.5q31 0 58 5q27 5 47.5 17q20.5 12 32.5 32.5q12 20.5 12 52.5q0 33 -12.5 52.5q-12.5 19.5 -33.5 30q-21 10.5 -48 13.5q-27 3 -56 3q-8 0 -18.5 -1q-10.5 -1 -21.5 -2.5q-11 -1.5 -20 -3q-9 -1.5 -13 -2.5z" />
-<glyph unicode="&#1123;" horiz-adv-x="618" d="M0 525h128v175h140v-175h184v-97h-184v-91q31 5 60.5 7q29.5 2 52.5 2q58 0 98.5 -12.5q40.5 -12.5 66 -34.5q25.5 -22 37 -52q11.5 -30 11.5 -64q0 -95 -61.5 -142.5q-61.5 -47.5 -204.5 -47.5q-66 0 -120 3.5q-54 3.5 -80 8.5l0 423h-128zM268 114q20 -4 37.5 -4q17.5 0 33.5 0q57 0 84 16.5q27 16.5 27 54.5q0 68 -108 68q-20 0 -37 -2q-17 -2 -37 -7z" />
-<glyph unicode="&#1138;" horiz-adv-x="727" d="M40 350q0 86 22 154q22 68 63.5 114.5q41.5 46.5 101.5 71q60 24.5 136 24.5q81 0 141.5 -26.5q60.5 -26.5 101 -74.5q40.5 -48 61 -115q20.5 -67 20.5 -148q0 -86 -22.5 -154q-22.5 -68 -64.5 -114.5q-42 -46.5 -102 -71q-60 -24.5 -135 -24.5q-81 0 -141.5 26.5q-60.5 26.5 -101 74.5q-40.5 48 -60.5 115q-20 67 -20 148zt0 0zM363 116q69 0 111.5 41q42.5 41 52.5 136l-327 0q10 -81 49.5 -129q39.5 -48 113.5 -48zt0 0zM363 584q-68 0 -110 -41.5q-42 -41.5 -53 -132.5l326 0q-5 39 -17 71q-12 32 -31.5 55q-19.5 23 -48 35.5t-66.5 12.5z" />
-<glyph unicode="&#1139;" horiz-adv-x="616" d="M42 262q0 133 69 205.5q69 72.5 197 72.5q67 0 117 -20.5q50 -20.5 83 -57q33 -36.5 49.5 -88q16.5 -51.5 16.5 -112.5q0 -131 -69 -204q-69 -73 -197 -73q-68 0 -118 20.5q-50 20.5 -83 57q-33 36.5 -49 87.5q-16 51 -16 112zt0 0zM430 304q-18 119 -122 119q-45 0 -80 -27.5q-35 -27.5 -42 -91.5zM186 219q7 -55 40.5 -86q33.5 -31 81.5 -31q47 0 80.5 26.5q33.5 26.5 41.5 90.5z" />
-<glyph unicode="&#1140;" horiz-adv-x="688" d="M381 -5h-106l-285 705h173l152 -404l20 -119h5l17 120l75 227q17 52 35.5 87q18.5 35 42 57q23.5 22 53 31.5q29.5 9.5 68.5 9.5q42 0 67.5 -6q25.5 -6 48.5 -17l-32 -124q-20 10 -36 13.5q-16 3.5 -34 3.5q-24 0 -40 -15.5q-16 -15.5 -30 -53.5z" />
-<glyph unicode="&#1141;" horiz-adv-x="580" d="M318 -5h-83l-247 530h162q26 -68 53.5 -137.5q27.5 -69.5 53.5 -137.5l21 -79h14q4 20 8.5 40.5q4.5 20.5 8.5 40.5l26 73q21 60 38.5 100q17.5 40 38.5 64q21 24 47 34.5q26 10.5 63 10.5q26 0 48.5 -4q22.5 -4 39.5 -12q-5 -29 -10 -56q-5 -27 -10 -55q-9 4 -17 6q-8 2 -18 2q-20 0 -40.5 -17q-20.5 -17 -37.5 -54z" />
-<glyph unicode="&#1162;" horiz-adv-x="776" d="M510 386l8 89h-5l-51 -90l-287 -385h-110v700h148v-377l-10 -93h6l54 93l284 377h111v-576h130v-32l-103 -222h-103l49 130h-121zM280 875q5 -31 26 -44q21 -13 55 -13q72 0 81 56l121 -17q-12 -65 -63 -93.5q-51 -28.5 -140 -28.5q-44 0 -81 5.5q-37 5.5 -65 19.5q-28 14 -45.5 36.5q-17.5 22.5 -22.5 57.5z" />
-<glyph unicode="&#1163;" horiz-adv-x="657" d="M420 237l6 89l-63 -88l-207 -238h-84v525h140v-247l-5 -72h12q12 17 24.5 36q12.5 19 24.5 36l208 247h84v-401h97v-32l-103 -211h-103l49 119h-80zM251 742q8 -42 28 -57q20 -15 52 -15q33 0 52.5 15.5q19.5 15.5 27.5 55.5l104 -27q-13 -66 -65 -99q-52 -33 -124 -33q-35 0 -66.5 7q-31.5 7 -57.5 23q-26 16 -44.5 41q-18.5 25 -25.5 61z" />
-<glyph unicode="&#1164;" horiz-adv-x="707" d="M0 652h155v74h148v-74h218v-124h-218v-80q6 1 18 2.5q12 1.5 26.5 2.5q14.5 1 30 2q15.5 1 28.5 1q54 0 104 -10q50 -10 88.5 -35.5q38.5 -25.5 61.5 -68.5q23 -43 23 -109q0 -120 -82 -181.5q-82 -61.5 -232 -61.5q-15 0 -40.5 0.5q-25.5 0.5 -55.5 2.5q-30 2 -61 5q-31 3 -57 9l0 521h-155zM303 125q12 -2 32 -3.5q20 -1.5 41 -1.5q31 0 58 5q27 5 47.5 17q20.5 12 32.5 32.5q12 20.5 12 52.5q0 33 -12.5 52.5q-12.5 19.5 -33.5 30q-21 10.5 -48 13.5q-27 3 -56 3q-8 0 -18.5 -1q-10.5 -1 -21.5 -2.5q-11 -1.5 -20 -3q-9 -1.5 -13 -2.5z" />
-<glyph unicode="&#1165;" horiz-adv-x="618" d="M0 525h128v175h140v-175h184v-97h-184v-91q31 5 60.5 7q29.5 2 52.5 2q58 0 98.5 -12.5q40.5 -12.5 66 -34.5q25.5 -22 37 -52q11.5 -30 11.5 -64q0 -95 -61.5 -142.5q-61.5 -47.5 -204.5 -47.5q-66 0 -120 3.5q-54 3.5 -80 8.5l0 423h-128zM268 114q20 -4 37.5 -4q17.5 0 33.5 0q57 0 84 16.5q27 16.5 27 54.5q0 68 -108 68q-20 0 -37 -2q-17 -2 -37 -7z" />
-<glyph unicode="&#1166;" horiz-adv-x="620" d="M65 693q45 8 100 12.5q55 4.5 110 4.5q56 0 113 -8.5q57 -8.5 102.5 -34q45.5 -25.5 74.5 -71q29 -45.5 29 -120.5q0 -72 -28.5 -119.5q-28.5 -47.5 -75.5 -76.5l71 -99l-85 -57l-82 118q-23 -5 -47 -7.5q-24 -2.5 -48 -2.5q-5 0 -17 0q-12 0 -25.5 0.5q-13.5 0.5 -25.5 1.5q-12 1 -18 2l0 -236h-148zM213 367q4 -1 13 -2q9 -1 19 -1.5q10 -0.5 18.5 -1q8.5 -0.5 13.5 -0.5q14 0 28.5 1q14.5 1 28.5 3l-58 84l55 35l65 -96q19 13 30 34.5q11 21.5 11 55.5q0 32 -13 51.5q-13 19.5 -34.5 30.5q-21.5 11 -49 15q-27.5 4 -55.5 4q-21 0 -40.5 -1q-19.5 -1 -31.5 -4z" />
-<glyph unicode="&#1167;" horiz-adv-x="623" d="M72 525h100l17 -65h12q31 40 72 60q41 20 96 20q106 0 159 -63.5q53 -63.5 53 -201.5q0 -142 -74 -219l50 -58l-95 -83l-63 79q-18 -5 -37.5 -7.5q-19.5 -2.5 -40.5 -2.5q-34 0 -59 6.5q-25 6.5 -50 17.5l0 -207h-140zM212 131q17 -14 38 -22q21 -8 53 -8q8 0 15 0q7 0 14 2l-50 60l62 55l60 -73q33 43 33 134q0 67 -25.5 105.5q-25.5 38.5 -85.5 38.5q-48 0 -74 -21.5q-26 -21.5 -40 -66.5z" />
-<glyph unicode="&#1168;" horiz-adv-x="498" d="M507 570h-294v-570h-148v700h325l22 154l95 0z" />
-<glyph unicode="&#1169;" horiz-adv-x="438" d="M438 401h-218v-401h-148v525h249l22 154l95 0z" />
-<glyph unicode="&#1170;" horiz-adv-x="552" d="M545 570h-294v-181h247v-99h-247v-290h-148v290h-105v99h105v311l442 0z" />
-<glyph unicode="&#1171;" horiz-adv-x="486" d="M446 401h-218v-111h216v-97h-216v-196h-148v196h-68v97h68v235l366 0z" />
-<glyph unicode="&#1172;" horiz-adv-x="631" d="M213 0h-148v700h442v-130h-294v-193q17 7 52.5 14.5q35.5 7.5 88.5 7.5q45 0 88 -11.5q43 -11.5 76.5 -40.5q33.5 -29 54 -78.5q20.5 -49.5 20.5 -126.5q0 -126 -63 -197.5q-63 -71.5 -200 -71.5q-30 0 -44.5 1q-14.5 1 -22.5 3l0 128q7 -1 26 -1.5q19 -0.5 36 -0.5q54 0 82.5 32q28.5 32 28.5 101q0 39 -10 64.5q-10 25.5 -27.5 40.5q-17.5 15 -41.5 21.5q-24 6.5 -52 6.5q-25 0 -52 -6.5q-27 -6.5 -40 -13.5z" />
-<glyph unicode="&#1173;" horiz-adv-x="614" d="M212 0h-140v525h357v-124h-217v-135q20 8 58 17.5q38 9.5 91 9.5q43 0 81.5 -12q38.5 -12 68 -41q29.5 -29 46.5 -78q17 -49 17 -122q0 -66 -13.5 -116.5q-13.5 -50.5 -43.5 -84q-30 -33.5 -79.5 -51q-49.5 -17.5 -121.5 -17.5q-29 0 -43.5 1q-14.5 1 -23.5 3l0 122q10 -2 28 -2q18 0 33 0q60 0 90 35.5q30 35.5 30 97.5q0 72 -32 106.5q-32 34.5 -88 34.5q-28 0 -55.5 -8q-27.5 -8 -42.5 -15z" />
-<glyph unicode="&#1174;" horiz-adv-x="926" d="M380 700h140v-309l39 14l158 295h168l-178 -307l-52 -35l63 -43l117 -185h86v-254h-106l-15 124h-61l-176 301h-43v-301h-140v313l-38 -14l-176 -299h-174l199 305l59 40l-57 38l-186 317h173l157 -297l43 0z" />
-<glyph unicode="&#1175;" horiz-adv-x="814" d="M282 214l-117 -214h-159l148 238h-1l42 34l-61 43l-118 210h153l107 -213h58v213h132v-227l52 18q26 53 54 104.5q28 51.5 54 104.5l151 0q-32 -54 -62 -105q-30 -51 -62 -105l1 0l-47 -37l61 -44h-1l65 -110h76v-243h-103l-16 119h-47l-118 218h-58v-218h-132l0 231z" />
-<glyph unicode="&#1176;" horiz-adv-x="570" d="M128 307v113h26q10 0 24.5 0q14.5 0 30 0.5q15.5 0.5 30 2q14.5 1.5 23.5 3.5q38 7 63.5 25.5q25.5 18.5 25.5 53.5q0 45 -32.5 61q-32.5 16 -86.5 16q-24 0 -47.5 -3.5q-23.5 -3.5 -44 -9.5q-20.5 -6 -37.5 -12.5q-17 -6.5 -28 -12.5l-37 126q11 5 32.5 12.5q21.5 7.5 50.5 14q29 6.5 63 11q34 4.5 69 4.5q48 0 93.5 -8q45.5 -8 81.5 -28q36 -20 58 -54q22 -34 22 -86q0 -51 -30 -95q-30 -44 -96 -64l0 -6q70 -11 109.5 -55q39.5 -44 39.5 -116q0 -48 -18.5 -84.5q-18.5 -36.5 -50 -62.5q-31.5 -26 -73 -41.5q-41.5 -15.5 -87.5 -21.5l-15 -164h-95l-21 163q-50 5 -90 15q-40 10 -63 21l38 128q25 -11 72.5 -24q47.5 -13 113.5 -13q23 0 46.5 5q23.5 5 42.5 16.5q19 11.5 31 29.5q12 18 12 45q0 23 -8.5 40q-8.5 17 -29 28.5q-20.5 11.5 -55 18q-34.5 6.5 -85.5 7.5q-13 0 -19.5 0.5q-6.5 0.5 -22.5 0.5z" />
-<glyph unicode="&#1177;" horiz-adv-x="486" d="M125 218v94h65q45 0 71 14.5q26 14.5 26 39.5q0 29 -23 40.5q-23 11.5 -72 11.5q-43 0 -78.5 -10.5q-35.5 -10.5 -58.5 -21.5q-8 27 -13.5 51.5q-5.5 24.5 -13.5 51.5q33 20 89 33q56 13 119 13q97 0 144.5 -33.5q47.5 -33.5 47.5 -96.5q0 -18 -5.5 -36q-5.5 -18 -16.5 -34.5q-11 -16.5 -28 -30q-17 -13.5 -40 -21.5l0 -8q62 -13 87 -44.5q25 -31.5 25 -84.5q0 -56 -43.5 -99.5q-43.5 -43.5 -133.5 -55.5l-15 -165h-95l-21 166q-38 6 -67.5 16q-29.5 10 -50.5 21q7 27 15 54q8 27 16 54q27 -14 65.5 -23.5q38.5 -9.5 83.5 -9.5q106 0 106 61q0 14 -6.5 24q-6.5 10 -21.5 16.5q-15 6.5 -40.5 9.5q-25.5 3 -64.5 3z" />
-<glyph unicode="&#1178;" horiz-adv-x="687" d="M252 296h-39v-296h-148v700h148v-308l35 15l210 293h169l-222 -293l-58 -38l60 -40l153 -199h119v-254h-106l-15 124l-80 0z" />
-<glyph unicode="&#1179;" horiz-adv-x="575" d="M261 218h-49v-218h-140v525h140v-227l45 19l134 208h151q-35 -48 -68.5 -96.5q-33.5 -48.5 -67.5 -96.5l-66 -44l70 -43q19 -31 38 -61q19 -30 38 -60l83 0v-243h-103l-16 119l-48 0z" />
-<glyph unicode="&#1180;" horiz-adv-x="777" d="M275 297h-62v-297h-148v700h148v-309l62 3v136h100v-127l23 2l176 295h161l-187 -293l-58 -38l61 -39l216 -330h-173l-192 297h-27v-127l-100 0z" />
-<glyph unicode="&#1181;" horiz-adv-x="652" d="M269 218h-57v-218h-140v525h140v-225l57 4v128h79v-119l29 3l107 209h147l-108 -193l-66 -45l70 -43l125 -244h-158l-113 218h-33v-125l-79 0z" />
-<glyph unicode="&#1182;" horiz-adv-x="751" d="M0 645h145v55h148v-55h99v-88h-99v-165l60 14l192 294h162l-204 -293l-70 -38l66 -39l242 -330h-183l-214 296h-51v-296h-148v545l-145 0z" />
-<glyph unicode="&#1183;" horiz-adv-x="588" d="M0 637h96v63h140v-63h161v-83h-161v-256l44 19l131 208h154l-134 -191h1l-64 -46l67 -44h-1l154 -244h-162l-142 218h-48v-218h-140v554l-96 0z" />
-<glyph unicode="&#1184;" horiz-adv-x="779" d="M173 570h-173v130h321v-308l35 15l210 293h169l-222 -293l-57 -38l59 -40l254 -329h-183l-226 296h-39v-296h-148l0 554z" />
-<glyph unicode="&#1185;" horiz-adv-x="619" d="M266 298l45 20l136 207h149l-134 -195l-64 -45l68 -42l153 -243h-162l-141 218h-50v-218h-138v401h-128v124l266 0z" />
-<glyph unicode="&#1186;" horiz-adv-x="754" d="M493 289h-280v-289h-148v700h148v-281h280v281h148v-570h94v-254h-105l-16 124l-121 0z" />
-<glyph unicode="&#1187;" horiz-adv-x="642" d="M411 203h-199v-203h-140v525h140v-195h199v195h140v-401h71v-243h-103l-16 119l-92 0z" />
-<glyph unicode="&#1188;" horiz-adv-x="926" d="M935 570h-294v-570h-148v289h-280v-289h-148v700h148v-281h280v281l442 0z" />
-<glyph unicode="&#1189;" horiz-adv-x="762" d="M411 203h-199v-203h-140v525h140v-195h199v195h351v-124h-211v-401l-140 0z" />
-<glyph unicode="&#1190;" horiz-adv-x="1044" d="M629 226v-226h-148v570h-268v-570h-148v700h564v-323q17 6 52.5 14q35.5 8 88.5 8q45 0 88 -11.5q43 -11.5 76.5 -40.5q33.5 -29 54 -78.5q20.5 -49.5 20.5 -126.5q0 -128 -63.5 -198.5q-63.5 -70.5 -199.5 -70.5q-30 0 -44.5 1q-14.5 1 -22.5 3l0 128q7 -1 25.5 -1.5q18.5 -0.5 35.5 -0.5q54 0 83 32q29 32 29 101q0 40 -10 65.5q-10 25.5 -28 40.5q-18 15 -42 21q-24 6 -52 6q-25 0 -51 -6q-26 -6 -40 -13z" />
-<glyph unicode="&#1191;" horiz-adv-x="943" d="M545 0h-140v401h-193v-401h-140v525h473v-258q20 7 57.5 16.5q37.5 9.5 91.5 9.5q40 0 78 -12q38 -12 68 -41q30 -29 48.5 -78q18.5 -49 18.5 -124q0 -65 -13.5 -115q-13.5 -50 -44 -84q-30.5 -34 -80 -51q-49.5 -17 -120.5 -17q-29 0 -43.5 1q-14.5 1 -23.5 3l0 122q7 -2 25 -2q18 0 36 0q60 0 88 35q28 35 28 100q0 71 -31 105q-31 34 -85 34q-29 0 -56.5 -8q-27.5 -8 -42.5 -15z" />
-<glyph unicode="&#1192;" horiz-adv-x="949" d="M385 584q-87 0 -137.5 -56q-50.5 -56 -50.5 -168q0 -57 19.5 -102q19.5 -45 50.5 -76.5q31 -31.5 69.5 -48.5q38.5 -17 76.5 -17q11 0 24 1.5q13 1.5 21 4.5q-24 14 -46 38q-22 24 -38 55.5q-16 31.5 -25.5 70q-9.5 38.5 -9.5 81.5q0 75 20 133.5q20 58.5 57 98q37 39.5 88 60.5q51 21 114 21q68 0 118 -22q50 -22 83 -60q33 -38 49 -89.5q16 -51.5 16 -110.5q0 -55 -14.5 -101.5q-14.5 -46.5 -37 -82.5q-22.5 -36 -49.5 -60.5q-27 -24.5 -52 -35.5q6 -1 12.5 -1.5q6.5 -0.5 13.5 -0.5q32 0 62 9.5q30 9.5 50 23.5l47 -116q-23 -23 -61 -35q-38 -12 -97 -12q-21 0 -44.5 3.5q-23.5 3.5 -45.5 9.5q-22 6 -41.5 15.5q-19.5 9.5 -32.5 21.5q-36 -25 -79.5 -37.5q-43.5 -12.5 -103.5 -12.5q-87 0 -156 25.5q-69 25.5 -116.5 72.5q-47.5 47 -73 114q-25.5 67 -25.5 151q0 86 22.5 153.5q22.5 67.5 66 114.5q43.5 47 108 72q64.5 25 148.5 25zM496 373q0 -59 29 -116.5q29 -57.5 85 -92.5q51 33 84 92.5q33 59.5 33 135.5q0 32 -5.5 60.5q-5.5 28.5 -18 50.5q-12.5 22 -34 34.5q-21.5 12.5 -53.5 12.5q-55 0 -87.5 -44.5t-32.5 -132.5z" />
-<glyph unicode="&#1193;" horiz-adv-x="818" d="M309 423q-65 -5 -94 -42q-29 -37 -29 -112q0 -38 12 -69q12 -31 33 -53q21 -22 49.5 -33.5q28.5 -11.5 61.5 -11.5q10 0 25 2.5q15 2.5 24 10.5q-31 21 -54.5 65q-23.5 44 -23.5 101q0 39 11.5 82q11.5 43 38 79q26.5 36 70.5 59.5q44 23.5 109 23.5q62 0 104 -17.5q42 -17.5 68 -47.5q26 -30 37.5 -69q11.5 -39 11.5 -82q0 -36 -11 -68.5q-11 -32.5 -28 -59.5q-17 -27 -38 -47.5q-21 -20.5 -42 -32.5q21 -8 42 -8q20 0 39.5 6q19.5 6 36.5 18l32 -92q-22 -18 -55 -29q-33 -11 -81 -11q-45 0 -81 12.5q-36 12.5 -61 33.5q-38 -25 -85 -35.5q-47 -10.5 -98 -10.5q-69 0 -123 20.5q-54 20.5 -91.5 57q-37.5 36.5 -57 87.5q-19.5 51 -19.5 112q0 60 14.5 109q14.5 49 47 85q32.5 36 83 57.5q50.5 21.5 122.5 26.5zM449 283q0 -45 21.5 -82.5q21.5 -37.5 59.5 -63.5q40 23 64.5 65q24.5 42 24.5 98q0 44 -21 76q-21 32 -61 32q-27 0 -44 -10.5q-17 -10.5 -26.5 -28q-9.5 -17.5 -13.5 -40t-4 -46.5z" />
-<glyph unicode="&#1194;" horiz-adv-x="607" d="M579 30q-26 -18 -63.5 -27.5q-37.5 -9.5 -79.5 -13.5l-15 -163h-95l-21 167q-55 10 -103 35.5q-48 25.5 -84 69q-36 43.5 -57 106q-21 62.5 -21 146.5q0 102 32 171.5q32 69.5 82 112q50 42.5 111 61.5q61 19 120 19q65 0 109.5 -8q44.5 -8 73.5 -19v-124q-54 11 -87.5 16q-33.5 5 -84.5 5q-45 0 -81.5 -14.5q-36.5 -14.5 -62.5 -43.5q-26 -29 -40.5 -73q-14.5 -44 -14.5 -103q0 -52 13 -95q13 -43 39 -74q26 -31 66 -48q40 -17 93 -17q49 0 82.5 9q33.5 9 59.5 23z" />
-<glyph unicode="&#1195;" horiz-adv-x="500" d="M468 32q-25 -17 -57 -27.5q-32 -10.5 -67 -15.5l-15 -163h-95l-21 167q-47 10 -79.5 34q-32.5 24 -52.5 59q-20 35 -29.5 79.5q-9.5 44.5 -9.5 96.5q0 131 64.5 204.5q64.5 73.5 187.5 73.5q60 0 98.5 -9.5q38.5 -9.5 68.5 -24.5l-34 -112q-26 11 -51.5 16.5q-25.5 5.5 -59.5 5.5q-63 0 -96.5 -36.5q-33.5 -36.5 -33.5 -117.5q0 -32 8 -59.5q8 -27.5 25 -48.5q17 -21 43 -33q26 -12 61 -12q42 0 66.5 7.5q24.5 7.5 46.5 20.5z" />
-<glyph unicode="&#1196;" horiz-adv-x="616" d="M234 570h-222v130h592v-130h-222v-440h95v-254h-105l-16 124l-122 0z" />
-<glyph unicode="&#1197;" horiz-adv-x="488" d="M171 401h-163v124h472v-124h-163v-277h76v-243h-103l-16 119l-103 0z" />
-<glyph unicode="&#1198;" horiz-adv-x="644" d="M248 258l-250 442h176l140 -257l16 -75h5l17 77l135 255h159l-250 -441v-259l-148 0z" />
-<glyph unicode="&#1199;" horiz-adv-x="544" d="M-12 525h162l109 -313l22 -96h9l19 98l96 311h151l-207 -528v-197h-140l0 197z" />
-<glyph unicode="&#1200;" horiz-adv-x="644" d="M88 296h138l-228 404h176l140 -257l16 -75h5l17 77l135 255h159l-229 -404h139v-97h-160v-199h-148v199l-160 0z" />
-<glyph unicode="&#1201;" horiz-adv-x="544" d="M81 0h126l-219 525h162l109 -313l22 -96h9l19 98l96 311h151l-206 -525h127v-83h-128v-117h-140v117l-128 0z" />
-<glyph unicode="&#1202;" horiz-adv-x="721" d="M244 356l-212 344h179l117 -199l27 -69l26 69l122 199h161l-220 -337l148 -233h121v-254h-105l-16 124h-94l-134 213l-30 72l-29 -72l-134 -213l-161 0z" />
-<glyph unicode="&#1203;" horiz-adv-x="590" d="M330 118l1 -1l-42 92l-44 -92l1 1l-86 -118h-154l186 269l-172 256h170l71 -102l-1 1l41 -93l40 93l-1 -1l76 102h154l-173 -252l101 -149h86v-243h-103l-16 119l-50 0z" />
-<glyph unicode="&#1204;" horiz-adv-x="911" d="M892 -124h-105l-16 124h-536v570h-223v130h525v-130h-154v-440h264v570h148v-570l97 0z" />
-<glyph unicode="&#1205;" horiz-adv-x="745" d="M725 -119h-99l-17 119h-435v401h-166v124h427v-124h-121v-277h187v401h140v-401l84 0z" />
-<glyph unicode="&#1206;" horiz-adv-x="704" d="M444 280q-27 -15 -75.5 -27.5q-48.5 -12.5 -114.5 -12.5q-46 0 -84 11.5q-38 11.5 -65 35.5q-27 24 -42 61q-15 37 -15 88v264h148v-216q0 -58 26 -89q26 -31 85 -31q42 0 79 8.5q37 8.5 58 25.5l0 302h148v-570h93v-254h-105l-16 124l-120 0z" />
-<glyph unicode="&#1207;" horiz-adv-x="603" d="M370 214q-11 -7 -25 -15.5q-14 -8.5 -33 -16q-19 -7.5 -43 -12.5q-24 -5 -53 -5q-41 0 -73.5 8.5q-32.5 8.5 -55 30q-22.5 21.5 -34 57q-11.5 35.5 -11.5 89.5v175h140v-103q0 -38 3.5 -64.5q3.5 -26.5 12.5 -43.5q9 -17 26 -24.5q17 -7.5 44 -7.5q33 0 59 8.5q26 8.5 43 20.5l0 214h140v-401h73v-243h-103l-16 119l-94 0z" />
-<glyph unicode="&#1208;" horiz-adv-x="698" d="M294 241q-9 -1 -17.5 -1q-8.5 0 -16.5 0q-47 0 -86 11q-39 11 -67 34.5q-28 23.5 -43.5 60.5q-15.5 37 -15.5 89v265h148v-216q0 -56 23.5 -86.5q23.5 -30.5 74.5 -33.5l0 116h100v-109q28 4 51.5 10.5q23.5 6.5 39.5 16.5l0 302h148v-700h-148v280q-14 -8 -37.5 -15q-23.5 -7 -53.5 -13l0 -132l-100 0z" />
-<glyph unicode="&#1209;" horiz-adv-x="618" d="M260 168q-11 -1 -23 -1.5q-12 -0.5 -24 -0.5q-40 0 -72 8.5q-32 8.5 -54 29q-22 20.5 -33.5 55q-11.5 34.5 -11.5 86.5v180h140v-108q0 -67 15.5 -98.5q15.5 -31.5 62.5 -35.5l0 123h79v-118q22 4 40 9.5q18 5.5 27 11.5l0 216h140v-525h-140v213q-9 -7 -26 -14.5q-17 -7.5 -41 -14.5l0 -122l-79 0z" />
-<glyph unicode="&#1210;" horiz-adv-x="656" d="M460 0v218q0 59 -26.5 88.5q-26.5 29.5 -84.5 29.5q-42 0 -78.5 -8.5q-36.5 -8.5 -57.5 -25.5l0 -302h-148v700h148v-281q28 16 75.5 28.5q47.5 12.5 112.5 12.5q45 0 82.5 -11q37.5 -11 65.5 -34.5q28 -23.5 43.5 -60q15.5 -36.5 15.5 -87.5l0 -267z" />
-<glyph unicode="&#1211;" horiz-adv-x="638" d="M426 0v289q0 68 -20.5 97.5q-20.5 29.5 -75.5 29.5q-40 0 -73.5 -25.5q-33.5 -25.5 -44.5 -67.5l0 -323h-140v700h140v-239h12q27 35 67.5 57q40.5 22 102.5 22q43 0 75 -10.5q32 -10.5 53.5 -36q21.5 -25.5 32.5 -68q11 -42.5 11 -105.5l0 -320z" />
-<glyph unicode="&#1212;" horiz-adv-x="875" d="M373 290q3 -36 16.5 -67.5q13.5 -31.5 38.5 -55.5q25 -24 62.5 -37.5q37.5 -13.5 89.5 -13.5q48 0 89 13.5q41 13.5 77 36.5l37 -124q-48 -27 -106 -41.5q-58 -14.5 -125 -14.5q-147 0 -233.5 77.5q-86.5 77.5 -94.5 226.5l-35 0q-54 0 -90.5 13.5q-36.5 13.5 -58.5 36q-22 22.5 -31 51q-9 28.5 -9 58.5q1 46 25 73l125 0q-13 -13 -17.5 -29.5q-4.5 -16.5 -2.5 -30.5q0 -6 2.5 -16q2.5 -10 12.5 -19q10 -9 28.5 -14q18.5 -5 50.5 -2q5 68 27 124q22 56 60.5 95.5q38.5 39.5 93.5 61.5q55 22 126 22q145 0 218 -78q73 -78 73 -225q0 -28 -3 -58q-3 -30 -8 -63zM677 412q3 18 3 37q0 30 -8.5 56q-8.5 26 -26 45.5q-17.5 19.5 -45 30.5q-27.5 11 -64.5 11q-157 0 -164 -180z" />
-<glyph unicode="&#1213;" horiz-adv-x="748" d="M675 48q-34 -26 -92.5 -44.5q-58.5 -18.5 -125.5 -18.5q-124 0 -187 60.5q-63 60.5 -72 176.5l-11 0q-89 0 -136 37.5q-47 37.5 -44 112.5q1 21 8 38q7 17 21 34l114 0q-14 -12 -21.5 -27.5q-7.5 -15.5 -7.5 -37.5q0 -27 16.5 -42.5q16.5 -15.5 62.5 -14.5q17 105 85.5 161.5q68.5 56.5 181.5 56.5q42 0 83 -10.5q41 -10.5 73 -35q32 -24.5 51.5 -66q19.5 -41.5 19.5 -102.5q0 -21 -2.5 -46q-2.5 -25 -8.5 -52l-350 0q5 -68 39.5 -100.5q34.5 -32.5 112.5 -32.5q47 0 84.5 13.5q37.5 13.5 57.5 27.5zM465 430q-62 0 -92 -33.5q-30 -33.5 -35 -85.5l226 0q4 55 -20 87t-79 32z" />
-<glyph unicode="&#1214;" horiz-adv-x="875" d="M373 290q3 -36 16.5 -67.5q13.5 -31.5 38.5 -55.5q25 -24 62.5 -37.5q37.5 -13.5 89.5 -13.5q48 0 89 13.5q41 13.5 77 36.5l37 -124q-77 -44 -178 -53l-15 -163h-95l-21 166q-113 19 -178 94q-65 75 -72 204l-35 0q-54 0 -90.5 13.5q-36.5 13.5 -58.5 36q-22 22.5 -31 51q-9 28.5 -9 58.5q1 46 25 73l125 0q-13 -13 -17.5 -29.5q-4.5 -16.5 -2.5 -30.5q0 -6 2.5 -16q2.5 -10 12.5 -19q10 -9 28.5 -14q18.5 -5 50.5 -2q5 68 27 124q22 56 60.5 95.5q38.5 39.5 93.5 61.5q55 22 126 22q145 0 218 -78q73 -78 73 -225q0 -28 -3 -58q-3 -30 -8 -63zM677 412q3 18 3 37q0 30 -8.5 56q-8.5 26 -26 45.5q-17.5 19.5 -45 30.5q-27.5 11 -64.5 11q-157 0 -164 -180z" />
-<glyph unicode="&#1215;" horiz-adv-x="748" d="M675 48q-26 -20 -66 -35q-40 -15 -88 -23l-15 -167h-95l-21 168q-91 15 -138 74q-47 59 -54 157l-11 0q-89 0 -136 37.5q-47 37.5 -44 112.5q1 27 8 41q7 14 21 31l114 0q-14 -13 -21.5 -27q-7.5 -14 -7.5 -35q0 -11 3 -22q3 -11 11.5 -19.5q8.5 -8.5 24 -13.5q15.5 -5 40.5 -5q17 105 85.5 161.5q68.5 56.5 181.5 56.5q42 0 83 -10.5q41 -10.5 73 -35q32 -24.5 51.5 -66q19.5 -41.5 19.5 -102.5q0 -21 -2.5 -46q-2.5 -25 -8.5 -52l-350 0q5 -68 39.5 -100.5q34.5 -32.5 112.5 -32.5q47 0 84.5 13.5q37.5 13.5 57.5 27.5zM465 430q-62 0 -92 -33.5q-30 -33.5 -35 -85.5l226 0q4 55 -20 87t-79 32z" />
-<glyph unicode="&#1216;" horiz-adv-x="388" d="M120 620h-80v80h308v-80h-80v-540h80v-80h-308v80l80 0z" />
-<glyph unicode="&#1219;" horiz-adv-x="662" d="M458 76q0 45 -10.5 85q-10.5 40 -35 70q-24.5 30 -64 47.5q-39.5 17.5 -97.5 17.5h-38v-296h-148v700h148v-308l34 15l211 293h169l-214 -279l-66 -41h56q104 -24 151.5 -91q47.5 -67 47.5 -194v-27q0 -70 -16.5 -121.5q-16.5 -51.5 -46 -85.5q-29.5 -34 -71.5 -50.5q-42 -16.5 -93 -16.5q-32 0 -66 6l0 118q75 -5 112 31.5t37 126.5z" />
-<glyph unicode="&#1220;" horiz-adv-x="578" d="M397 39q0 46 -8.5 77.5q-8.5 31.5 -25.5 51.5q-17 20 -43 30.5q-26 10.5 -62 14.5l-46 0v-213h-140v525h140v-231l45 20l134 211h151l-138 -200l-61 -41l58 -2q42 -12 68.5 -34.5q26.5 -22.5 41.5 -51.5q15 -29 20.5 -63.5q5.5 -34.5 5.5 -70.5v-20q0 -129 -52.5 -189.5q-52.5 -60.5 -147.5 -60.5q-33 0 -71 7l0 117q131 -15 131 123z" />
-<glyph unicode="&#1221;" horiz-adv-x="706" d="M463 570h-161q-5 -95 -10.5 -171.5q-5.5 -76.5 -15 -137.5q-9.5 -61 -25.5 -108.5q-16 -47.5 -40 -83.5q-16 -23 -35.5 -38q-19.5 -15 -40.5 -23.5q-21 -8.5 -41 -12q-20 -3.5 -37 -3.5q-26 0 -40.5 4q-14.5 4 -31.5 12l16 124q11 -4 26 -4q17 0 34 8q17 8 30 26q16 22 28.5 63q12.5 41 21 106.5q8.5 65.5 14 156.5q5.5 91 7.5 212l449 0v-576h107v-32l-103 -222h-103l49 130l-98 0z" />
-<glyph unicode="&#1222;" horiz-adv-x="618" d="M387 401h-123q-3 -84 -12.5 -158q-9.5 -74 -30.5 -129.5q-21 -55.5 -55.5 -87.5q-34.5 -32 -88.5 -32q-63 0 -89 14l20 124q17 -5 31 -5q24 0 42 17q18 17 30 61.5q12 44.5 19.5 121.5q7.5 77 11.5 198l385 0v-401h91v-32l-103 -211h-103l49 119l-74 0z" />
-<glyph unicode="&#1223;" horiz-adv-x="706" d="M641 0v-15q0 -91 -37.5 -142q-37.5 -51 -123.5 -51q-17 0 -34.5 2q-17.5 2 -37.5 6l0 116q29 -3 46 1.5q17 4.5 25.5 15.5q8.5 11 11 27.5q2.5 16.5 2.5 39.5v289h-280v-289h-148v700h148v-281h280v281l148 0z" />
-<glyph unicode="&#1224;" horiz-adv-x="623" d="M212 525v-195h199v195h140v-540q0 -94 -38.5 -143.5q-38.5 -49.5 -123.5 -49.5q-16 0 -33.5 1.5q-17.5 1.5 -37.5 5.5l0 117q29 -3 47 2q18 5 28.5 16q10.5 11 14 27.5q3.5 16.5 3.5 38.5v203h-199v-203h-140l0 525z" />
-<glyph unicode="&#1225;" horiz-adv-x="741" d="M493 289h-280v-289h-148v700h148v-281h280v281h148v-576h112v-32l-103 -222h-103l49 130l-103 0z" />
-<glyph unicode="&#1226;" horiz-adv-x="639" d="M411 203h-199v-203h-140v525h140v-195h199v195h140v-401h88v-32l-103 -211h-103l49 119l-71 0z" />
-<glyph unicode="&#1227;" horiz-adv-x="657" d="M196 700v-216q0 -58 26 -89q26 -31 85 -31q42 0 79 8.5q37 8.5 58 25.5l0 302h148v-700h-119l-15 -124h-106v254h92v150q-27 -15 -75.5 -27.5q-48.5 -12.5 -114.5 -12.5q-46 0 -84 11.5q-38 11.5 -65 35.5q-27 24 -42 61q-15 37 -15 88l0 264z" />
-<glyph unicode="&#1228;" horiz-adv-x="582" d="M370 225q-20 -14 -57 -27.5q-37 -13.5 -97 -13.5q-82 0 -128 40.5q-46 40.5 -46 133.5v167h140v-98q0 -31 3 -54.5q3 -23.5 12.5 -39.5q9.5 -16 26 -24q16.5 -8 43.5 -8q34 0 60 8.5q26 8.5 43 22.5l0 193h140v-525h-141l-18 -119h-99v223l118 0z" />
-<glyph unicode="&#1229;" horiz-adv-x="921" d="M655 351l16 145h-6l-48 -110l-162 -261h-46l-172 262l-47 108h-6l21 -143v-352h-140v700h134l202 -323l38 -77h5l33 79l193 321h133v-576h130v-32l-103 -222h-103l49 130l-121 0z" />
-<glyph unicode="&#1230;" horiz-adv-x="795" d="M567 233l10 114h-16l-47 -90v1l-106 -163h-49l-117 163v-1l-47 90h-14l15 -113v-234h-124v525h147l131 -196v1l35 -67h11l35 69v-1l122 194h147v-401h95v-32l-103 -211h-103l49 119l-71 0z" />
-<glyph unicode="&#1231;" horiz-adv-x="284" d="M72 700h140v-700l-140 0z" />
-<glyph unicode="&#1232;" horiz-adv-x="658" d="M441 149h-236l-57 -149h-148l274 705h109l275 -705h-157zM246 266h160l-54 146l-24 111h-5l-24 -112zM255 875q5 -31 26 -44q21 -13 55 -13q72 0 81 56l121 -17q-12 -65 -63 -93.5q-51 -28.5 -140 -28.5q-44 0 -81 5.5q-37 5.5 -65 19.5q-28 14 -45.5 36.5q-17.5 22.5 -22.5 57.5z" />
-<glyph unicode="&#1233;" horiz-adv-x="579" d="M67 489q45 20 110.5 33q65.5 13 135.5 13q55 0 92.5 -13q37.5 -13 59.5 -37.5q22 -24.5 31.5 -59q9.5 -34.5 9.5 -76.5q0 -51 -4 -101q-4 -50 -4 -106q0 -38 5 -74q5 -36 16 -69l-114 0l-23 78h-12q-26 -35 -66 -60q-40 -25 -103 -25q-38 0 -69.5 11q-31.5 11 -54 31.5q-22.5 20.5 -35 48.5q-12.5 28 -12.5 61q0 89 59.5 134.5q59.5 45.5 180.5 45.5q28 0 56 -4.5q28 -4.5 39 -6.5q3 21 3 36q0 38 -19 56q-19 18 -71 18q-48 0 -93.5 -11.5q-45.5 -11.5 -80.5 -28.5zM250 104q47 0 75 22q28 22 41 46l0 60q-5 2 -15.5 4q-10.5 2 -23 4q-12.5 2 -25 3q-12.5 1 -22.5 1q-54 0 -80 -19.5q-26 -19.5 -26 -48.5q0 -36 20.5 -54q20.5 -18 55.5 -18zt0 0zM212 742q8 -42 28 -57q20 -15 52 -15q33 0 52.5 15.5q19.5 15.5 27.5 55.5l104 -27q-13 -66 -65 -99q-52 -33 -124 -33q-35 0 -66.5 7q-31.5 7 -57.5 23q-26 16 -44.5 41q-18.5 25 -25.5 61z" />
-<glyph unicode="&#1234;" horiz-adv-x="658" d="M441 149h-236l-57 -149h-148l274 705h109l275 -705h-157zM246 266h160l-54 146l-24 111h-5l-24 -112zM131 798q0 27 19.5 43.5q19.5 16.5 63.5 16.5q42 0 61.5 -16.5q19.5 -16.5 19.5 -43.5q0 -26 -19.5 -41.5q-19.5 -15.5 -61.5 -15.5q-44 0 -63.5 15.5q-19.5 15.5 -19.5 41.5zt0 0zM364 798q0 27 19.5 43.5q19.5 16.5 61.5 16.5q44 0 63.5 -16.5q19.5 -16.5 19.5 -43.5q0 -26 -19.5 -41.5q-19.5 -15.5 -63.5 -15.5q-42 0 -61.5 15.5t-19.5 41.5z" />
-<glyph unicode="&#1235;" horiz-adv-x="579" d="M67 489q45 20 110.5 33q65.5 13 135.5 13q55 0 92.5 -13q37.5 -13 59.5 -37.5q22 -24.5 31.5 -59q9.5 -34.5 9.5 -76.5q0 -51 -4 -101q-4 -50 -4 -106q0 -38 5 -74q5 -36 16 -69l-114 0l-23 78h-12q-26 -35 -66 -60q-40 -25 -103 -25q-38 0 -69.5 11q-31.5 11 -54 31.5q-22.5 20.5 -35 48.5q-12.5 28 -12.5 61q0 89 59.5 134.5q59.5 45.5 180.5 45.5q28 0 56 -4.5q28 -4.5 39 -6.5q3 21 3 36q0 38 -19 56q-19 18 -71 18q-48 0 -93.5 -11.5q-45.5 -11.5 -80.5 -28.5zM250 104q47 0 75 22q28 22 41 46l0 60q-5 2 -15.5 4q-10.5 2 -23 4q-12.5 2 -25 3q-12.5 1 -22.5 1q-54 0 -80 -19.5q-26 -19.5 -26 -48.5q0 -36 20.5 -54q20.5 -18 55.5 -18zt0 0zM81 647q0 35 21.5 56q21.5 21 55.5 21q34 0 54.5 -21q20.5 -21 20.5 -56q0 -30 -20.5 -51q-20.5 -21 -54.5 -21q-34 0 -55.5 21q-21.5 21 -21.5 51zt0 0zM334 647q0 35 20.5 56q20.5 21 54.5 21q35 0 55.5 -21q20.5 -21 20.5 -56q0 -30 -20.5 -51q-20.5 -21 -55.5 -21q-34 0 -54.5 21t-20.5 51z" />
-<glyph unicode="&#1236;" horiz-adv-x="935" d="M427 530l-39 -106l-87 -139h133v245zM434 165h-202l-106 -165h-158l461 700h456v-130h-303v-152h276v-130h-276v-158h308v-130l-456 0z" />
-<glyph unicode="&#1237;" horiz-adv-x="915" d="M250 104q47 0 74.5 21q27.5 21 41.5 44l0 63q-11 3 -27.5 7q-16.5 4 -50.5 4q-57 0 -85.5 -20.5q-28.5 -20.5 -28.5 -55.5q0 -30 21 -46.5q21 -16.5 55 -16.5zt0 0zM406 83q-30 -38 -79 -64.5q-49 -26.5 -126 -26.5q-38 0 -69.5 11q-31.5 11 -54 31.5q-22.5 20.5 -35 48.5q-12.5 28 -12.5 61q0 89 62 134q62 45 176 45q32 0 60 -4q28 -4 37 -6q2 14 2.5 21q0.5 7 0.5 14q0 32 -19.5 53q-19.5 21 -71.5 21q-46 0 -92 -10.5q-46 -10.5 -81 -26.5l-37 98q44 22 106 37q62 15 131 15q59 0 94.5 -14q35.5 -14 61.5 -44q29 30 75 46.5q46 16.5 100 16.5q42 0 83 -10.5q41 -10.5 72.5 -35q31.5 -24.5 51 -66q19.5 -41.5 19.5 -103.5q0 -21 -2 -45.5q-2 -24.5 -8 -51.5l-351 0q5 -66 40.5 -99.5q35.5 -33.5 112.5 -33.5q46 0 84 13.5q38 13.5 59 27.5l46 -89q-17 -13 -40.5 -24.5q-23.5 -11.5 -52 -19.5q-28.5 -8 -60 -13q-31.5 -5 -64.5 -5q-71 0 -128 22.5q-57 22.5 -86 75.5zM633 429q-63 0 -92.5 -33.5q-29.5 -33.5 -34.5 -84.5l225 0q5 57 -19.5 87.5t-78.5 30.5z" />
-<glyph unicode="&#1238;" horiz-adv-x="566" d="M65 700h451v-130h-303v-152h275v-130h-275v-158h308v-130h-456zM215 875q5 -31 26 -44q21 -13 55 -13q72 0 81 56l121 -17q-12 -65 -63 -93.5q-51 -28.5 -140 -28.5q-44 0 -81 5.5q-37 5.5 -65 19.5q-28 14 -45.5 36.5q-17.5 22.5 -22.5 57.5z" />
-<glyph unicode="&#1239;" horiz-adv-x="594" d="M521 48q-34 -26 -92.5 -44.5q-58.5 -18.5 -125.5 -18.5q-135 0 -198 74q-63 74 -63 203q0 137 71 207.5q71 70.5 200 70.5q42 0 83 -10.5q41 -10.5 73 -35q32 -24.5 51.5 -66q19.5 -41.5 19.5 -102.5q0 -21 -2.5 -46q-2.5 -25 -8.5 -52l-350 0q5 -68 39.5 -100.5q34.5 -32.5 112.5 -32.5q47 0 84.5 13.5q37.5 13.5 57.5 27.5zM311 430q-62 0 -92 -33.5q-30 -33.5 -35 -85.5l226 0q4 55 -20 87q-24 32 -79 32zt0 0zM225 742q8 -42 28 -57q20 -15 52 -15q33 0 52.5 15.5q19.5 15.5 27.5 55.5l104 -27q-13 -66 -65 -99q-52 -33 -124 -33q-35 0 -66.5 7q-31.5 7 -57.5 23q-26 16 -44.5 41q-18.5 25 -25.5 61z" />
-<glyph unicode="&#1240;" horiz-adv-x="683" d="M199 291q-3 -17 -3 -34q0 -28 8 -55q8 -27 25.5 -48q17.5 -21 43.5 -33.5q26 -12.5 62 -12.5q76 0 118 46q42 46 42 137zM495 413q-7 80 -55 125.5q-48 45.5 -144 45.5q-58 0 -101.5 -16.5q-43.5 -16.5 -67.5 -30.5l-29 126q15 9 39.5 18q24.5 9 54 16.5q29.5 7.5 63 12q33.5 4.5 66.5 4.5q74 0 133.5 -20.5q59.5 -20.5 101.5 -65q42 -44.5 64.5 -113.5q22.5 -69 22.5 -165q0 -84 -18.5 -151.5q-18.5 -67.5 -57 -115q-38.5 -47.5 -98 -72.5q-59.5 -25 -141.5 -25q-74 0 -128.5 22q-54.5 22 -90 62.5q-35.5 40.5 -53 97.5q-17.5 57 -17.5 126q0 28 3 57.5q3 29.5 8 61.5z" />
-<glyph unicode="&#1241;" horiz-adv-x="594" d="M72 478q34 25 92 43.5q58 18.5 124 18.5q69 0 118.5 -20.5q49.5 -20.5 82 -57.5q32.5 -37 48 -88q15.5 -51 15.5 -112q0 -64 -18.5 -115.5q-18.5 -51.5 -52.5 -87.5q-34 -36 -82.5 -55q-48.5 -19 -108.5 -19q-45 0 -87.5 11.5q-42.5 11.5 -75.5 38.5q-33 27 -53 70.5q-20 43.5 -20 106.5q0 21 2 44.5q2 23.5 8 50.5l352 0q-8 66 -42.5 94.5q-34.5 28.5 -112.5 28.5q-46 0 -82.5 -15q-36.5 -15 -56.5 -29zM288 95q30 0 53 10.5q23 10.5 38.5 28q15.5 17.5 23.5 40.5q8 23 9 49l-230 0q-5 -58 23 -93t83 -35z" />
-<glyph unicode="&#1242;" horiz-adv-x="683" d="M199 291q-3 -17 -3 -34q0 -28 8 -55q8 -27 25.5 -48q17.5 -21 43.5 -33.5q26 -12.5 62 -12.5q76 0 118 46q42 46 42 137zM495 413q-7 80 -55 125.5q-48 45.5 -144 45.5q-58 0 -101.5 -16.5q-43.5 -16.5 -67.5 -30.5l-29 126q15 9 39.5 18q24.5 9 54 16.5q29.5 7.5 63 12q33.5 4.5 66.5 4.5q74 0 133.5 -20.5q59.5 -20.5 101.5 -65q42 -44.5 64.5 -113.5q22.5 -69 22.5 -165q0 -84 -18.5 -151.5q-18.5 -67.5 -57 -115q-38.5 -47.5 -98 -72.5q-59.5 -25 -141.5 -25q-74 0 -128.5 22q-54.5 22 -90 62.5q-35.5 40.5 -53 97.5q-17.5 57 -17.5 126q0 28 3 57.5q3 29.5 8 61.5zM140 798q0 27 19.5 43.5q19.5 16.5 63.5 16.5q42 0 61.5 -16.5q19.5 -16.5 19.5 -43.5q0 -26 -19.5 -41.5q-19.5 -15.5 -61.5 -15.5q-44 0 -63.5 15.5q-19.5 15.5 -19.5 41.5zt0 0zM373 798q0 27 19.5 43.5q19.5 16.5 61.5 16.5q44 0 63.5 -16.5q19.5 -16.5 19.5 -43.5q0 -26 -19.5 -41.5q-19.5 -15.5 -63.5 -15.5q-42 0 -61.5 15.5t-19.5 41.5z" />
-<glyph unicode="&#1243;" horiz-adv-x="594" d="M72 478q34 25 92 43.5q58 18.5 124 18.5q69 0 118.5 -20.5q49.5 -20.5 82 -57.5q32.5 -37 48 -88q15.5 -51 15.5 -112q0 -64 -18.5 -115.5q-18.5 -51.5 -52.5 -87.5q-34 -36 -82.5 -55q-48.5 -19 -108.5 -19q-45 0 -87.5 11.5q-42.5 11.5 -75.5 38.5q-33 27 -53 70.5q-20 43.5 -20 106.5q0 21 2 44.5q2 23.5 8 50.5l352 0q-8 66 -42.5 94.5q-34.5 28.5 -112.5 28.5q-46 0 -82.5 -15q-36.5 -15 -56.5 -29zM288 95q30 0 53 10.5q23 10.5 38.5 28q15.5 17.5 23.5 40.5q8 23 9 49l-230 0q-5 -58 23 -93q28 -35 83 -35zt0 0zM90 646q0 35 21.5 56q21.5 21 55.5 21q34 0 54.5 -21q20.5 -21 20.5 -56q0 -30 -20.5 -51q-20.5 -21 -54.5 -21q-34 0 -55.5 21q-21.5 21 -21.5 51zt0 0zM343 646q0 35 20.5 56q20.5 21 54.5 21q35 0 55.5 -21q20.5 -21 20.5 -56q0 -30 -20.5 -51q-20.5 -21 -55.5 -21q-34 0 -54.5 21t-20.5 51z" />
-<glyph unicode="&#1244;" horiz-adv-x="910" d="M380 700h140v-309l39 14l158 295h168l-178 -307l-52 -35l63 -43l200 -315h-179l-176 301h-43v-301h-140v313l-38 -14l-176 -299h-174l199 305l59 40l-57 38l-186 317h173l157 -297h43zM257 798q0 27 19.5 43.5q19.5 16.5 63.5 16.5q42 0 61.5 -16.5q19.5 -16.5 19.5 -43.5q0 -26 -19.5 -41.5q-19.5 -15.5 -61.5 -15.5q-44 0 -63.5 15.5q-19.5 15.5 -19.5 41.5zt0 0zM490 798q0 27 19.5 43.5q19.5 16.5 61.5 16.5q44 0 63.5 -16.5q19.5 -16.5 19.5 -43.5q0 -26 -19.5 -41.5q-19.5 -15.5 -63.5 -15.5q-42 0 -61.5 15.5t-19.5 41.5z" />
-<glyph unicode="&#1245;" horiz-adv-x="810" d="M282 214l-117 -214h-159l148 238h-1l42 34l-61 43l-118 210h153l107 -213h58v213h132v-227l52 18q26 53 54 104.5q28 51.5 54 104.5l151 0q-32 -54 -62 -105q-30 -51 -62 -105l1 0l-47 -37l61 -44h-1l137 -234h-162l-118 218h-58v-218h-132v231zM203 647q0 35 21.5 56q21.5 21 55.5 21q34 0 54.5 -21q20.5 -21 20.5 -56q0 -30 -20.5 -51q-20.5 -21 -54.5 -21q-34 0 -55.5 21q-21.5 21 -21.5 51zt0 0zM456 647q0 35 20.5 56q20.5 21 54.5 21q35 0 55.5 -21q20.5 -21 20.5 -56q0 -30 -20.5 -51q-20.5 -21 -55.5 -21q-34 0 -54.5 21t-20.5 51z" />
-<glyph unicode="&#1246;" horiz-adv-x="570" d="M128 307v113h26q10 0 24.5 0q14.5 0 30 0.5q15.5 0.5 30 2q14.5 1.5 23.5 3.5q38 7 63.5 25.5q25.5 18.5 25.5 53.5q0 45 -32.5 61q-32.5 16 -86.5 16q-24 0 -47.5 -3.5q-23.5 -3.5 -44 -9.5q-20.5 -6 -37.5 -12.5q-17 -6.5 -28 -12.5l-37 126q11 5 32.5 12.5q21.5 7.5 50.5 14q29 6.5 63 11q34 4.5 69 4.5q48 0 93.5 -8q45.5 -8 81.5 -28q36 -20 58 -54q22 -34 22 -86q0 -51 -30 -95q-30 -44 -96 -64l0 -6q70 -11 109.5 -55q39.5 -44 39.5 -116q0 -56 -25 -96.5q-25 -40.5 -65.5 -66.5q-40.5 -26 -93 -38.5q-52.5 -12.5 -107.5 -12.5q-36 0 -69.5 3.5q-33.5 3.5 -62.5 8.5q-29 5 -52 12q-23 7 -38 15l38 128q25 -11 72.5 -24q47.5 -13 113.5 -13q23 0 46.5 5q23.5 5 42.5 16.5q19 11.5 31 29.5q12 18 12 45q0 23 -8.5 40q-8.5 17 -29 28.5q-20.5 11.5 -55 18q-34.5 6.5 -85.5 7.5q-13 0 -19.5 0.5q-6.5 0.5 -22.5 0.5zM61 798q0 27 19.5 43.5q19.5 16.5 63.5 16.5q42 0 61.5 -16.5q19.5 -16.5 19.5 -43.5q0 -26 -19.5 -41.5q-19.5 -15.5 -61.5 -15.5q-44 0 -63.5 15.5q-19.5 15.5 -19.5 41.5zt0 0zM294 798q0 27 19.5 43.5q19.5 16.5 61.5 16.5q44 0 63.5 -16.5q19.5 -16.5 19.5 -43.5q0 -26 -19.5 -41.5q-19.5 -15.5 -63.5 -15.5q-42 0 -61.5 15.5t-19.5 41.5z" />
-<glyph unicode="&#1247;" horiz-adv-x="486" d="M125 218v94h65q45 0 71 14.5q26 14.5 26 39.5q0 29 -23 40.5q-23 11.5 -72 11.5q-43 0 -78.5 -10.5q-35.5 -10.5 -58.5 -21.5q-8 27 -13.5 51.5q-5.5 24.5 -13.5 51.5q33 20 89 33q56 13 119 13q97 0 144.5 -33.5q47.5 -33.5 47.5 -96.5q0 -18 -5.5 -36q-5.5 -18 -16.5 -34.5q-11 -16.5 -28 -30q-17 -13.5 -40 -21.5l0 -8q62 -13 87 -44.5q25 -31.5 25 -84.5q0 -33 -14.5 -61.5q-14.5 -28.5 -44.5 -50.5q-30 -22 -75.5 -34.5q-45.5 -12.5 -107.5 -12.5q-60 0 -107 13q-47 13 -77 29q7 27 15 54q8 27 16 54q27 -14 65.5 -23.5q38.5 -9.5 83.5 -9.5q106 0 106 61q0 14 -6.5 24q-6.5 10 -21.5 16.5q-15 6.5 -40.5 9.5q-25.5 3 -64.5 3zM20 647q0 35 21.5 56q21.5 21 55.5 21q34 0 54.5 -21q20.5 -21 20.5 -56q0 -30 -20.5 -51q-20.5 -21 -54.5 -21q-34 0 -55.5 21q-21.5 21 -21.5 51zt0 0zM273 647q0 35 20.5 56q20.5 21 54.5 21q35 0 55.5 -21q20.5 -21 20.5 -56q0 -30 -20.5 -51q-20.5 -21 -55.5 -21q-34 0 -54.5 21t-20.5 51z" />
-<glyph unicode="&#1248;" horiz-adv-x="594" d="M242 116q31 0 58.5 6.5q27.5 6.5 48 19q20.5 12.5 32.5 32q12 19.5 12 45.5q0 55 -46.5 76q-46.5 21 -138.5 21h-89v64l166 161l49 43l-64 -12h-221v128h468v-82l-182 -179l-49 -31v-5l50 10q97 -1 155.5 -49q58.5 -48 58.5 -146q0 -53 -21.5 -96q-21.5 -43 -61 -73q-39.5 -30 -95 -46.5q-55.5 -16.5 -122.5 -16.5q-24 0 -53.5 2.5q-29.5 2.5 -59 7.5q-29.5 5 -56.5 12.5q-27 7.5 -46 18.5l36 128q15 -8 35.5 -15q20.5 -7 44 -12.5q23.5 -5.5 47 -8.5t44.5 -3z" />
-<glyph unicode="&#1249;" horiz-adv-x="549" d="M220 -109q69 0 113 29.5q44 29.5 44 83.5q0 117 -190 117h-69v57l131 179h-1l70 60l-94 -9h-191v117h448v-76l-161 -189h1l-50 -35l44 1q38 1 74.5 -13.5q36.5 -14.5 65 -41q28.5 -26.5 45.5 -64.5q17 -38 17 -85q0 -58 -22.5 -104q-22.5 -46 -63 -78q-40.5 -32 -97 -49q-56.5 -17 -125.5 -17q-49 0 -101 11q-52 11 -96 37l52 108q31 -16 68 -27.5t88 -11.5z" />
-<glyph unicode="&#1250;" horiz-adv-x="723" d="M510 386l8 89h-5l-51 -90l-287 -385h-110v700h148v-377l-10 -93h6l54 93l284 377h111v-700h-148zM180 848h373v-92l-373 0z" />
-<glyph unicode="&#1251;" horiz-adv-x="632" d="M420 237l6 89l-63 -88l-207 -238h-84v525h140v-247l-5 -72h12q12 17 24.5 36q12.5 19 24.5 36l208 247h84v-525h-140zM131 679h351v-95l-351 0z" />
-<glyph unicode="&#1252;" horiz-adv-x="723" d="M510 386l8 89h-5l-51 -90l-287 -385h-110v700h148v-377l-10 -93h6l54 93l284 377h111v-700h-148zM162 798q0 27 19.5 43.5q19.5 16.5 63.5 16.5q42 0 61.5 -16.5q19.5 -16.5 19.5 -43.5q0 -26 -19.5 -41.5q-19.5 -15.5 -61.5 -15.5q-44 0 -63.5 15.5q-19.5 15.5 -19.5 41.5zt0 0zM395 798q0 27 19.5 43.5q19.5 16.5 61.5 16.5q44 0 63.5 -16.5q19.5 -16.5 19.5 -43.5q0 -26 -19.5 -41.5q-19.5 -15.5 -63.5 -15.5q-42 0 -61.5 15.5t-19.5 41.5z" />
-<glyph unicode="&#1253;" horiz-adv-x="632" d="M420 237l6 89l-63 -88l-207 -238h-84v525h140v-247l-5 -72h12q12 17 24.5 36q12.5 19 24.5 36l208 247h84v-525h-140zM114 647q0 35 21.5 56q21.5 21 55.5 21q34 0 54.5 -21q20.5 -21 20.5 -56q0 -30 -20.5 -51q-20.5 -21 -54.5 -21q-34 0 -55.5 21q-21.5 21 -21.5 51zt0 0zM367 647q0 35 20.5 56q20.5 21 54.5 21q35 0 55.5 -21q20.5 -21 20.5 -56q0 -30 -20.5 -51q-20.5 -21 -55.5 -21q-34 0 -54.5 21t-20.5 51z" />
-<glyph unicode="&#1254;" horiz-adv-x="727" d="M40 350q0 86 22 154q22 68 63.5 114.5q41.5 46.5 101.5 71q60 24.5 136 24.5q81 0 141.5 -26.5q60.5 -26.5 101 -74.5q40.5 -48 61 -115q20.5 -67 20.5 -148q0 -86 -22.5 -154q-22.5 -68 -64.5 -114.5q-42 -46.5 -102 -71q-60 -24.5 -135 -24.5q-81 0 -141.5 26.5q-60.5 26.5 -101 74.5q-40.5 48 -60.5 115q-20 67 -20 148zt0 0zM197 350q0 -52 10 -95q10 -43 30 -74q20 -31 51.5 -48q31.5 -17 74.5 -17q79 0 123 54q44 54 44 180q0 50 -9 93q-9 43 -29.5 74.5q-20.5 31.5 -52 49q-31.5 17.5 -76.5 17.5q-78 0 -122 -56q-44 -56 -44 -178zt0 0zM165 798q0 27 19.5 43.5q19.5 16.5 63.5 16.5q42 0 61.5 -16.5q19.5 -16.5 19.5 -43.5q0 -26 -19.5 -41.5q-19.5 -15.5 -61.5 -15.5q-44 0 -63.5 15.5q-19.5 15.5 -19.5 41.5zt0 0zM398 798q0 27 19.5 43.5q19.5 16.5 61.5 16.5q44 0 63.5 -16.5q19.5 -16.5 19.5 -43.5q0 -26 -19.5 -41.5q-19.5 -15.5 -63.5 -15.5q-42 0 -61.5 15.5t-19.5 41.5z" />
-<glyph unicode="&#1255;" horiz-adv-x="616" d="M42 262q0 130 69 204q69 74 197 74q67 0 117 -21q50 -21 83 -58.5q33 -37.5 49.5 -88q16.5 -50.5 16.5 -110.5q0 -64 -18 -115.5q-18 -51.5 -52 -87.5q-34 -36 -83.5 -55q-49.5 -19 -112.5 -19q-68 0 -118 21q-50 21 -83 58.5q-33 37.5 -49 88q-16 50.5 -16 109.5zt0 0zM186 262q0 -33 7 -62q7 -29 21.5 -50.5q14.5 -21.5 37.5 -34.5q23 -13 56 -13q122 0 122 160q0 35 -6.5 64.5q-6.5 29.5 -21 51q-14.5 21.5 -38 33.5q-23.5 12 -56.5 12q-57 0 -89.5 -38q-32.5 -38 -32.5 -123zt0 0zM106 647q0 35 21.5 56q21.5 21 55.5 21q34 0 54.5 -21q20.5 -21 20.5 -56q0 -30 -20.5 -51q-20.5 -21 -54.5 -21q-34 0 -55.5 21q-21.5 21 -21.5 51zt0 0zM359 647q0 35 20.5 56q20.5 21 54.5 21q35 0 55.5 -21q20.5 -21 20.5 -56q0 -30 -20.5 -51q-20.5 -21 -55.5 -21q-34 0 -54.5 21t-20.5 51z" />
-<glyph unicode="&#1256;" horiz-adv-x="727" d="M40 350q0 86 22 154q22 68 63.5 114.5q41.5 46.5 101.5 71q60 24.5 136 24.5q81 0 141.5 -26.5q60.5 -26.5 101 -74.5q40.5 -48 61 -115q20.5 -67 20.5 -148q0 -86 -22.5 -154q-22.5 -68 -64.5 -114.5q-42 -46.5 -102 -71q-60 -24.5 -135 -24.5q-81 0 -141.5 26.5q-60.5 26.5 -101 74.5q-40.5 48 -60.5 115q-20 67 -20 148zt0 0zM363 116q69 0 111.5 41q42.5 41 52.5 136l-327 0q10 -81 49.5 -129q39.5 -48 113.5 -48zt0 0zM363 584q-68 0 -110 -41.5q-42 -41.5 -53 -132.5l326 0q-5 39 -17 71q-12 32 -31.5 55q-19.5 23 -48 35.5t-66.5 12.5z" />
-<glyph unicode="&#1257;" horiz-adv-x="616" d="M42 262q0 133 69 205.5q69 72.5 197 72.5q67 0 117 -20.5q50 -20.5 83 -57q33 -36.5 49.5 -88q16.5 -51.5 16.5 -112.5q0 -131 -69 -204q-69 -73 -197 -73q-68 0 -118 20.5q-50 20.5 -83 57q-33 36.5 -49 87.5q-16 51 -16 112zt0 0zM430 304q-18 119 -122 119q-45 0 -80 -27.5q-35 -27.5 -42 -91.5zM186 219q7 -55 40.5 -86q33.5 -31 81.5 -31q47 0 80.5 26.5q33.5 26.5 41.5 90.5z" />
-<glyph unicode="&#1258;" horiz-adv-x="727" d="M40 350q0 86 22 154q22 68 63.5 114.5q41.5 46.5 101.5 71q60 24.5 136 24.5q81 0 141.5 -26.5q60.5 -26.5 101 -74.5q40.5 -48 61 -115q20.5 -67 20.5 -148q0 -86 -22.5 -154q-22.5 -68 -64.5 -114.5q-42 -46.5 -102 -71q-60 -24.5 -135 -24.5q-81 0 -141.5 26.5q-60.5 26.5 -101 74.5q-40.5 48 -60.5 115q-20 67 -20 148zt0 0zM363 116q69 0 111.5 41q42.5 41 52.5 136l-327 0q10 -81 49.5 -129q39.5 -48 113.5 -48zt0 0zM363 584q-68 0 -110 -41.5q-42 -41.5 -53 -132.5l326 0q-5 39 -17 71q-12 32 -31.5 55q-19.5 23 -48 35.5q-28.5 12.5 -66.5 12.5zt0 0zM165 798q0 27 19.5 43.5q19.5 16.5 63.5 16.5q42 0 61.5 -16.5q19.5 -16.5 19.5 -43.5q0 -26 -19.5 -41.5q-19.5 -15.5 -61.5 -15.5q-44 0 -63.5 15.5q-19.5 15.5 -19.5 41.5zt0 0zM398 798q0 27 19.5 43.5q19.5 16.5 61.5 16.5q44 0 63.5 -16.5q19.5 -16.5 19.5 -43.5q0 -26 -19.5 -41.5q-19.5 -15.5 -63.5 -15.5q-42 0 -61.5 15.5t-19.5 41.5z" />
-<glyph unicode="&#1259;" horiz-adv-x="616" d="M42 262q0 133 69 205.5q69 72.5 197 72.5q67 0 117 -20.5q50 -20.5 83 -57q33 -36.5 49.5 -88q16.5 -51.5 16.5 -112.5q0 -131 -69 -204q-69 -73 -197 -73q-68 0 -118 20.5q-50 20.5 -83 57q-33 36.5 -49 87.5q-16 51 -16 112zt0 0zM430 304q-18 119 -122 119q-45 0 -80 -27.5q-35 -27.5 -42 -91.5zM186 219q7 -55 40.5 -86q33.5 -31 81.5 -31q47 0 80.5 26.5q33.5 26.5 41.5 90.5zM106 647q0 35 21.5 56q21.5 21 55.5 21q34 0 54.5 -21q20.5 -21 20.5 -56q0 -30 -20.5 -51q-20.5 -21 -54.5 -21q-34 0 -55.5 21q-21.5 21 -21.5 51zt0 0zM359 647q0 35 20.5 56q20.5 21 54.5 21q35 0 55.5 -21q20.5 -21 20.5 -56q0 -30 -20.5 -51q-20.5 -21 -55.5 -21q-34 0 -54.5 21t-20.5 51z" />
-<glyph unicode="&#1260;" horiz-adv-x="621" d="M140 414h292q-3 36 -17.5 67.5q-14.5 31.5 -39.5 54q-25 22.5 -61 35.5q-36 13 -83 13q-61 0 -105 -12.5q-44 -12.5 -69 -26.5l-32 125q18 9 42.5 17q24.5 8 52 14q27.5 6 56.5 9.5q29 3.5 57 3.5q75 0 138.5 -19q63.5 -19 110 -62q46.5 -43 73 -112.5q26.5 -69.5 26.5 -170.5q0 -105 -31.5 -175q-31.5 -70 -83 -112q-51.5 -42 -118 -59.5q-66.5 -17.5 -136.5 -17.5q-62 0 -112 10.5q-50 10.5 -80 23.5l39 127q25 -12 67.5 -21.5q42.5 -9.5 98.5 -9.5q42 0 78 10.5q36 10.5 63.5 32.5q27.5 22 44.5 56q17 34 22 82l-293 0zM48 798q0 27 19.5 43.5q19.5 16.5 63.5 16.5q42 0 61.5 -16.5q19.5 -16.5 19.5 -43.5q0 -26 -19.5 -41.5q-19.5 -15.5 -61.5 -15.5q-44 0 -63.5 15.5q-19.5 15.5 -19.5 41.5zt0 0zM281 798q0 27 19.5 43.5q19.5 16.5 61.5 16.5q44 0 63.5 -16.5q19.5 -16.5 19.5 -43.5q0 -26 -19.5 -41.5q-19.5 -15.5 -63.5 -15.5q-42 0 -61.5 15.5t-19.5 41.5z" />
-<glyph unicode="&#1261;" horiz-adv-x="527" d="M129 315h215q-7 52 -39.5 80q-32.5 28 -98.5 28q-43 0 -76 -10q-33 -10 -59 -22l-38 100q73 49 201 49q127 0 189 -70.5q62 -70.5 62 -207.5q0 -138 -70 -207.5q-70 -69.5 -191 -69.5q-53 0 -107.5 10q-54.5 10 -86.5 30l34 108q27 -14 62.5 -22.5q35.5 -8.5 71.5 -8.5q39 0 66 7q27 7 44.5 21.5q17.5 14.5 26 36q8.5 21.5 10.5 51.5l-216 0zM31 647q0 35 21.5 56q21.5 21 55.5 21q34 0 54.5 -21q20.5 -21 20.5 -56q0 -30 -20.5 -51q-20.5 -21 -54.5 -21q-34 0 -55.5 21q-21.5 21 -21.5 51zt0 0zM284 647q0 35 20.5 56q20.5 21 54.5 21q35 0 55.5 -21q20.5 -21 20.5 -56q0 -30 -20.5 -51q-20.5 -21 -55.5 -21q-34 0 -54.5 21t-20.5 51z" />
-<glyph unicode="&#1262;" horiz-adv-x="616" d="M318 395l22 -89h7l17 93l114 301h155l-203 -487q-23 -56 -46 -97q-23 -41 -49 -68.5q-26 -27.5 -58 -41q-32 -13.5 -74 -13.5q-36 0 -57 4q-21 4 -47 20l37 119q19 -9 34.5 -11q15.5 -2 32.5 -2q52 0 72 70l-285 507h174zM136 848h373v-92l-373 0z" />
-<glyph unicode="&#1263;" horiz-adv-x="541" d="M264 234l22 -84h10l19 84l89 291h143l-174 -475q-22 -59 -41.5 -106q-19.5 -47 -42.5 -80q-23 -33 -51.5 -50.5q-28.5 -17.5 -67.5 -17.5q-26 0 -49.5 4.5q-23.5 4.5 -40.5 13.5l29 108q15 -5 31 -5q14 0 27 3q13 3 24 11.5q11 8.5 20.5 24q9.5 15.5 16.5 41.5l-240 528h169zM91 679h351v-95l-351 0z" />
-<glyph unicode="&#1264;" horiz-adv-x="616" d="M318 395l22 -89h7l17 93l114 301h155l-203 -487q-23 -56 -46 -97q-23 -41 -49 -68.5q-26 -27.5 -58 -41q-32 -13.5 -74 -13.5q-36 0 -57 4q-21 4 -47 20l37 119q19 -9 34.5 -11q15.5 -2 32.5 -2q52 0 72 70l-285 507h174zM133 798q0 27 19.5 43.5q19.5 16.5 63.5 16.5q42 0 61.5 -16.5q19.5 -16.5 19.5 -43.5q0 -26 -19.5 -41.5q-19.5 -15.5 -61.5 -15.5q-44 0 -63.5 15.5q-19.5 15.5 -19.5 41.5zt0 0zM366 798q0 27 19.5 43.5q19.5 16.5 61.5 16.5q44 0 63.5 -16.5q19.5 -16.5 19.5 -43.5q0 -26 -19.5 -41.5q-19.5 -15.5 -63.5 -15.5q-42 0 -61.5 15.5t-19.5 41.5z" />
-<glyph unicode="&#1265;" horiz-adv-x="541" d="M264 234l22 -84h10l19 84l89 291h143l-174 -475q-22 -59 -41.5 -106q-19.5 -47 -42.5 -80q-23 -33 -51.5 -50.5q-28.5 -17.5 -67.5 -17.5q-26 0 -49.5 4.5q-23.5 4.5 -40.5 13.5l29 108q15 -5 31 -5q14 0 27 3q13 3 24 11.5q11 8.5 20.5 24q9.5 15.5 16.5 41.5l-240 528h169zM71 647q0 35 21.5 56q21.5 21 55.5 21q34 0 54.5 -21q20.5 -21 20.5 -56q0 -30 -20.5 -51q-20.5 -21 -54.5 -21q-34 0 -55.5 21q-21.5 21 -21.5 51zt0 0zM324 647q0 35 20.5 56q20.5 21 54.5 21q35 0 55.5 -21q20.5 -21 20.5 -56q0 -30 -20.5 -51q-20.5 -21 -55.5 -21q-34 0 -54.5 21t-20.5 51z" />
-<glyph unicode="&#1266;" horiz-adv-x="616" d="M318 395l22 -89h7l17 93l114 301h155l-203 -487q-23 -56 -46 -97q-23 -41 -49 -68.5q-26 -27.5 -58 -41q-32 -13.5 -74 -13.5q-36 0 -57 4q-21 4 -47 20l37 119q19 -9 34.5 -11q15.5 -2 32.5 -2q52 0 72 70l-285 507h174zM219 850h145v-16l-109 -93h-101zM434 850h151v-16l-155 -93l-102 0z" />
-<glyph unicode="&#1267;" horiz-adv-x="541" d="M264 234l22 -84h10l19 84l89 291h143l-174 -475q-22 -59 -41.5 -106q-19.5 -47 -42.5 -80q-23 -33 -51.5 -50.5q-28.5 -17.5 -67.5 -17.5q-26 0 -49.5 4.5q-23.5 4.5 -40.5 13.5l29 108q15 -5 31 -5q14 0 27 3q13 3 24 11.5q11 8.5 20.5 24q9.5 15.5 16.5 41.5l-240 528h169zM181 738h127v-14l-85 -117h-81zM385 738h137v-14l-134 -117l-84 0z" />
-<glyph unicode="&#1268;" horiz-adv-x="657" d="M196 700v-216q0 -58 26 -89q26 -31 85 -31q42 0 79 8.5q37 8.5 58 25.5l0 302h148v-700h-148v280q-27 -15 -75.5 -27.5q-48.5 -12.5 -114.5 -12.5q-46 0 -84 11.5q-38 11.5 -65 35.5q-27 24 -42 61q-15 37 -15 88v264zM130 798q0 27 19.5 43.5q19.5 16.5 63.5 16.5q42 0 61.5 -16.5q19.5 -16.5 19.5 -43.5q0 -26 -19.5 -41.5q-19.5 -15.5 -61.5 -15.5q-44 0 -63.5 15.5q-19.5 15.5 -19.5 41.5zt0 0zM363 798q0 27 19.5 43.5q19.5 16.5 61.5 16.5q44 0 63.5 -16.5q19.5 -16.5 19.5 -43.5q0 -26 -19.5 -41.5q-19.5 -15.5 -63.5 -15.5q-42 0 -61.5 15.5t-19.5 41.5z" />
-<glyph unicode="&#1269;" horiz-adv-x="582" d="M182 525v-103q0 -38 3.5 -64.5q3.5 -26.5 12.5 -43.5q9 -17 26 -24.5q17 -7.5 44 -7.5q33 0 59 8.5q26 8.5 43 20.5l0 214h140v-525h-140v214q-11 -7 -25 -15.5q-14 -8.5 -33 -16q-19 -7.5 -43 -12.5q-24 -5 -53 -5q-41 0 -73.5 8.5q-32.5 8.5 -55 30q-22.5 21.5 -34 57q-11.5 35.5 -11.5 89.5v175zM71 647q0 35 21.5 56q21.5 21 55.5 21q34 0 54.5 -21q20.5 -21 20.5 -56q0 -30 -20.5 -51q-20.5 -21 -54.5 -21q-34 0 -55.5 21q-21.5 21 -21.5 51zt0 0zM324 647q0 35 20.5 56q20.5 21 54.5 21q35 0 55.5 -21q20.5 -21 20.5 -56q0 -30 -20.5 -51q-20.5 -21 -55.5 -21q-34 0 -54.5 21t-20.5 51z" />
-<glyph unicode="&#1270;" horiz-adv-x="498" d="M507 570h-294v-440h94v-254h-105l-16 124h-121v700l442 0z" />
-<glyph unicode="&#1271;" horiz-adv-x="438" d="M72 525h366v-124h-218v-277h81v-236h-103l-16 112l-110 0z" />
-<glyph unicode="&#1272;" horiz-adv-x="865" d="M652 700h148v-700h-148zM65 700h148v-249q11 2 36.5 5q25.5 3 51.5 3q54 0 103.5 -10.5q49.5 -10.5 87 -36q37.5 -25.5 59.5 -69.5q22 -44 22 -110q0 -121 -78 -182q-78 -61 -228 -61q-15 0 -39 0.5q-24 0.5 -52 2.5q-28 2 -57 5q-29 3 -54 9zM277 120q61 0 100 25q39 25 39 83q0 31 -11 50.5q-11 19.5 -29.5 31q-18.5 11.5 -44 15.5q-25.5 4 -53.5 4q-7 0 -16.5 -1q-9.5 -1 -19 -2q-9.5 -1 -17.5 -2.5q-8 -1.5 -12 -2.5l0 -196q25 -5 64 -5zt0 0zM233 798q0 27 19.5 43.5q19.5 16.5 63.5 16.5q42 0 61.5 -16.5q19.5 -16.5 19.5 -43.5q0 -26 -19.5 -41.5q-19.5 -15.5 -61.5 -15.5q-44 0 -63.5 15.5q-19.5 15.5 -19.5 41.5zt0 0zM466 798q0 27 19.5 43.5q19.5 16.5 61.5 16.5q44 0 63.5 -16.5q19.5 -16.5 19.5 -43.5q0 -26 -19.5 -41.5q-19.5 -15.5 -63.5 -15.5q-42 0 -61.5 15.5t-19.5 41.5z" />
-<glyph unicode="&#1273;" horiz-adv-x="815" d="M212 117q19 -4 37.5 -5.5q18.5 -1.5 34.5 -1.5q54 0 77 17q23 17 23 55q0 32 -23 49.5q-23 17.5 -73 17.5q-42 0 -76 -9zM212 337q31 5 61.5 7q30.5 2 51.5 2q57 0 95.5 -12.5q38.5 -12.5 62.5 -34.5q24 -22 34.5 -52q10.5 -30 10.5 -64q0 -47 -13.5 -82.5q-13.5 -35.5 -44 -59.5q-30.5 -24 -79 -36q-48.5 -12 -118.5 -12q-66 0 -113.5 1.5q-47.5 1.5 -87.5 4.5l0 526h140zM603 525h140v-525h-140zM196 647q0 35 21.5 56q21.5 21 55.5 21q34 0 54.5 -21q20.5 -21 20.5 -56q0 -30 -20.5 -51q-20.5 -21 -54.5 -21q-34 0 -55.5 21q-21.5 21 -21.5 51zt0 0zM449 647q0 35 20.5 56q20.5 21 54.5 21q35 0 55.5 -21q20.5 -21 20.5 -56q0 -30 -20.5 -51q-20.5 -21 -55.5 -21q-34 0 -54.5 21t-20.5 51z" />
-<glyph unicode="&#1276;" horiz-adv-x="686" d="M490 -18q0 32 -16.5 63.5q-16.5 31.5 -31.5 53.5l-77 114l-31 72l-29 -72l-134 -213h-161l234 356l-212 344h179l117 -199l27 -69l26 69l122 199h161l-220 -337l143 -212q27 -39 41.5 -82q14.5 -43 14.5 -87q0 -91 -43.5 -140q-43.5 -49 -130.5 -49q-17 0 -34.5 2q-17.5 2 -37.5 6l0 116q28 -2 46.5 2.5q18.5 4.5 28.5 13.5q10 9 14 21.5t4 27.5z" />
-<glyph unicode="&#1277;" horiz-adv-x="580" d="M497 131q23 -32 41 -69.5q18 -37.5 18 -75.5q0 -93 -42 -143.5q-42 -50.5 -131 -50.5q-16 0 -33.5 1.5q-17.5 1.5 -37.5 5.5l0 110q31 -2 51.5 2q20.5 4 32 13.5q11.5 9.5 16 24q4.5 14.5 4.5 32.5q0 26 -14.5 46.5q-14.5 20.5 -29.5 41.5l-40 54v-1l-45 85l-42 -85l1 1l-87 -123h-153l186 269l-172 256h168l73 -108l-1 1l38 -82l41 82v-1l76 108h153l-172 -252z" />
-<glyph unicode="&#1296;" horiz-adv-x="566" d="M420 306h-42q-50 -2 -84 -9q-34 -7 -55 -19q-21 -12 -30 -29q-9 -17 -9 -38q0 -25 11.5 -43q11.5 -18 30 -29.5q18.5 -11.5 43.5 -17q25 -5.5 52 -5.5q57 0 103 13.5q46 13.5 71 25.5l40 -116q-15 -9 -38.5 -18.5q-23.5 -9.5 -52.5 -17q-29 -7.5 -62.5 -12.5q-33.5 -5 -68.5 -5q-65 0 -117.5 12q-52.5 12 -90 37.5q-37.5 25.5 -58 65q-20.5 39.5 -20.5 94.5q0 72 38.5 117.5q38.5 45.5 108.5 57.5l0 6q-62 21 -93 65q-31 44 -31 95q0 48 21.5 81.5q21.5 33.5 58 54.5q36.5 21 84 30.5q47.5 9.5 98.5 9.5q32 0 64 -4.5q32 -4.5 60 -11.5q28 -7 49.5 -15q21.5 -8 33.5 -14l-37 -118q-28 12 -70.5 22.5q-42.5 10.5 -81.5 10.5q-60 0 -91.5 -17.5q-31.5 -17.5 -31.5 -55.5q0 -19 8 -33q8 -14 21.5 -24.5q13.5 -10.5 31 -17q17.5 -6.5 36.5 -10.5q9 -2 22 -3q13 -1 27 -1q14 0 27 0q13 0 23 0h27l0 -114z" />
-<glyph unicode="&#1297;" horiz-adv-x="491" d="M314 217q-39 0 -64.5 -3q-25.5 -3 -40.5 -9q-15 -6 -21 -16q-6 -10 -6 -24q0 -28 26.5 -44.5q26.5 -16.5 79.5 -16.5q46 0 84 10.5q38 10.5 66 25.5l29 -106q-29 -17 -75.5 -32q-46.5 -15 -108.5 -15q-62 0 -107.5 12q-45.5 12 -75 33.5q-29.5 21.5 -44 50.5q-14.5 29 -14.5 63q0 53 26.5 83.5q26.5 30.5 83.5 45.5l0 8q-46 16 -67.5 49q-21.5 33 -21.5 68q0 67 51 101q51 34 141 34q66 0 119.5 -14.5q53.5 -14.5 88.5 -32.5q-8 -27 -13.5 -52q-5.5 -25 -13.5 -51q-21 11 -56.5 22q-35.5 11 -80.5 11q-50 0 -72.5 -11q-22.5 -11 -22.5 -40q0 -25 26 -40q26 -15 70 -15h65l0 -95z" />
-<glyph unicode="&#1298;" horiz-adv-x="676" d="M611 -15q0 -90 -38 -141.5q-38 -51.5 -123 -51.5q-17 0 -34.5 2q-17.5 2 -37.5 6l0 116q29 -3 46 1q17 4 25.5 14.5q8.5 10.5 11 27.5q2.5 17 2.5 41v570h-163q-5 -95 -10 -171.5q-5 -76.5 -14.5 -138q-9.5 -61.5 -25 -109q-15.5 -47.5 -39.5 -82.5q-16 -23 -35.5 -38q-19.5 -15 -40.5 -23.5q-21 -8.5 -41 -12q-20 -3.5 -37 -3.5q-26 0 -40.5 4.5q-14.5 4.5 -31.5 11.5l16 125q15 -5 30 -5q15 0 30 7q15 7 29 27q16 21 28.5 62.5q12.5 41.5 21.5 106.5q9 65 14.5 156.5q5.5 91.5 7.5 212.5l449 0z" />
-<glyph unicode="&#1299;" horiz-adv-x="599" d="M527 525v-540q0 -94 -38.5 -143.5q-38.5 -49.5 -123.5 -49.5q-16 0 -33.5 1.5q-17.5 1.5 -37.5 5.5l0 117q29 -3 47 2q18 5 28.5 16q10.5 11 14 27.5q3.5 16.5 3.5 38.5v401h-123q-3 -84 -12.5 -158q-9.5 -74 -30.5 -129.5q-21 -55.5 -55.5 -87.5q-34.5 -32 -88.5 -32q-63 0 -89 14l20 124q17 -5 31 -5q24 0 42 17q18 17 30 61.5q12 44.5 19.5 121.5q7.5 77 11.5 198z" />
-<glyph unicode="&#1308;" horiz-adv-x="938" d="M263 315l14 -124h4l16 126l133 383h96l131 -385l16 -124h5l15 126l93 383h152l-210 -705h-100l-136 381l-18 108h-7l-18 -109l-135 -380h-105l-209 705l162 0z" />
-<glyph unicode="&#1309;" horiz-adv-x="825" d="M477 525q27 -66 53 -133q26 -67 53 -133l20 -88h15l15 89q18 67 37 132.5q19 65.5 37 132.5l128 0l-179 -530h-101q-27 69 -58 144.5q-31 75.5 -58 144.5l-14 68h-18q-3 -17 -7 -34.5q-4 -17.5 -7 -34.5l-109 -288h-106l-184 530h152l84 -259l14 -97h15l20 98l95 258z" />
-<glyph unicode="&#1316;" horiz-adv-x="741" d="M481 570h-268v-570h-148v700h564v-570h93v-254h-105l-16 124l-120 0z" />
-<glyph unicode="&#1317;" horiz-adv-x="634" d="M405 401h-193v-401h-140v525h473v-401h69v-243h-103l-16 119l-90 0z" />
-<glyph unicode="&#1318;" horiz-adv-x="717" d="M460 218q0 59 -26.5 88.5q-26.5 29.5 -84.5 29.5q-42 0 -78.5 -8.5q-36.5 -8.5 -57.5 -25.5l0 -302h-148v700h148v-281q28 16 75.5 28.5q47.5 12.5 112.5 12.5q45 0 82.5 -11q37.5 -11 65.5 -34.5q28 -23.5 43.5 -60q15.5 -36.5 15.5 -87.5v-137h95v-254h-105l-16 124l-122 0z" />
-<glyph unicode="&#1319;" horiz-adv-x="652" d="M566 124h66v-243h-103l-16 119h-87v289q0 68 -20.5 97.5q-20.5 29.5 -75.5 29.5q-40 0 -73.5 -25.5q-33.5 -25.5 -44.5 -67.5l0 -323h-140v700h140v-239h12q27 35 67.5 57q40.5 22 102.5 22q43 0 75 -10.5q32 -10.5 53.5 -36q21.5 -25.5 32.5 -68q11 -42.5 11 -105.5z" />
-<glyph unicode="&#7728;" horiz-adv-x="671" d="M252 296h-39v-296h-148v700h148v-308l35 15l210 293h169l-222 -293l-58 -38l60 -40l254 -329h-183zM335 870h172v-31l-174 -87l-112 0z" />
-<glyph unicode="&#7729;" horiz-adv-x="564" d="M260 218h-48v-218h-140v700h140v-402l44 19l131 208h154l-134 -191h1l-64 -46l67 -44h-1l154 -244h-162zM339 729h142v-29l-126 -129l-76 0z" />
-<glyph unicode="&#7742;" horiz-adv-x="868" d="M655 351l16 145h-6l-48 -110l-162 -261h-46l-172 262l-47 108h-6l21 -143v-352h-140v700h134l202 -323l38 -77h5l33 79l193 321h133v-700h-148zM457 870h172v-31l-174 -87l-112 0z" />
-<glyph unicode="&#7743;" horiz-adv-x="940" d="M400 0v274q0 76 -16 109q-16 33 -66 33q-42 0 -67 -20.5q-25 -20.5 -39 -53.5l0 -342h-140v525h108l16 -73h13q13 17 30 33q17 16 37.5 28q20.5 12 46 19.5q25.5 7.5 57.5 7.5q53 0 88.5 -23.5q35.5 -23.5 56.5 -78.5q29 48 70.5 75q41.5 27 96.5 27q48 0 81.5 -11q33.5 -11 54.5 -38q21 -27 30.5 -73q9.5 -46 9.5 -115v-303h-140v281q0 33 -3 58q-3 25 -12 42.5q-9 17.5 -25.5 26q-16.5 8.5 -43.5 8.5q-42 0 -67.5 -21.5q-25.5 -21.5 -36.5 -59.5l0 -335zM474 729h142v-29l-126 -129l-76 0z" />
-<glyph unicode="&#7764;" horiz-adv-x="620" d="M65 693q45 8 100 12.5q55 4.5 110 4.5q56 0 113 -8.5q57 -8.5 102.5 -34q45.5 -25.5 74.5 -71q29 -45.5 29 -120.5q0 -66 -25 -112.5q-25 -46.5 -66.5 -75.5q-41.5 -29 -94.5 -42.5q-53 -13.5 -109 -13.5q-5 0 -17 0q-12 0 -25.5 0.5q-13.5 0.5 -25.5 1.5q-12 1 -18 2l0 -236h-148zM285 580q-21 0 -40.5 -1q-19.5 -1 -31.5 -4l0 -208q4 -1 13 -2q9 -1 19 -1.5q10 -0.5 18.5 -1q8.5 -0.5 13.5 -0.5q29 0 58 4q29 4 51.5 17q22.5 13 36.5 35.5q14 22.5 14 60.5q0 32 -13 51.5q-13 19.5 -34.5 30.5q-21.5 11 -49 15q-27.5 4 -55.5 4zt0 0zM317 870h172v-31l-174 -87l-112 0z" />
-<glyph unicode="&#7765;" horiz-adv-x="623" d="M72 525h100l17 -65h12q31 40 72 60q41 20 96 20q106 0 159 -63.5q53 -63.5 53 -201.5q0 -66 -17 -119.5q-17 -53.5 -50 -92q-33 -38.5 -81.5 -59q-48.5 -20.5 -111.5 -20.5q-34 0 -59 6.5q-25 6.5 -50 17.5l0 -207h-140zM326 423q-48 0 -74 -21.5q-26 -21.5 -40 -66.5l0 -204q17 -14 38 -22q21 -8 53 -8q68 0 101 42.5q33 42.5 33 135.5q0 67 -25.5 105.5q-25.5 38.5 -85.5 38.5zt0 0zM320 729h142v-29l-126 -129l-76 0z" />
-<glyph unicode="&#7838;" horiz-adv-x="750" d="M454 562q-20 16 -52.5 26q-32.5 10 -73.5 10q-38 0 -60.5 -13q-22.5 -13 -34.5 -36.5q-12 -23.5 -16 -56.5q-4 -33 -4 -73v-419h-148v469q0 58 14 103.5q14 45.5 45.5 77q31.5 31.5 82 47.5q50.5 16 122.5 16q57 0 101.5 -8q44.5 -8 80 -22q35.5 -14 65.5 -32.5q30 -18.5 59 -39.5l-146 -174l-38 -28v-5l39 9q100 -8 157.5 -54.5q57.5 -46.5 57.5 -140.5q0 -108 -73 -170q-73 -62 -211 -62q-15 0 -36.5 2q-21.5 2 -44 6q-22.5 4 -42.5 9q-20 5 -30 10l31 123q11 -5 26 -8.5q15 -3.5 31 -6q16 -2.5 31.5 -4q15.5 -1.5 26.5 -1.5q64 0 99 26q35 26 35 76q0 52 -45.5 75q-45.5 23 -138.5 23h-77l0 62z" />
-<glyph unicode="&#8209;" horiz-adv-x="391" d="M59 350h273v-124l-273 0z" />
-<glyph unicode="&#8211;" horiz-adv-x="718" d="M119 351h480v-126l-480 0z" />
-<glyph unicode="&#8212;" horiz-adv-x="891" d="M118 351h655v-126l-655 0z" />
-<glyph unicode="&#8216;" horiz-adv-x="243" d="M202 618q0 -30 -21.5 -48q-21.5 -18 -53.5 -18q-39 0 -62 24q-23 24 -23 64q0 42 13.5 70.5q13.5 28.5 32.5 47q19 18.5 40 28.5q21 10 36 15l33 -57q-22 -8 -36.5 -24.5q-14.5 -16.5 -16.5 -36.5q21 1 39.5 -17t18.5 -48z" />
-<glyph unicode="&#8217;" horiz-adv-x="244" d="M42 642q0 30 21 48.5q21 18.5 53 18.5q40 0 63 -25q23 -25 23 -64q0 -42 -13.5 -70.5q-13.5 -28.5 -33 -47.5q-19.5 -19 -40 -29.5q-20.5 -10.5 -35.5 -14.5l-35 59q22 8 38 22.5q16 14.5 18 37.5q-21 -2 -40 15t-19 50z" />
-<glyph unicode="&#8218;" horiz-adv-x="244" d="M42 62q0 30 21 48.5q21 18.5 53 18.5q40 0 63 -25q23 -25 23 -64q0 -42 -13.5 -70.5q-13.5 -28.5 -33 -47.5q-19.5 -19 -40 -29.5q-20.5 -10.5 -35.5 -14.5l-35 59q22 8 38 22.5q16 14.5 18 37.5q-21 -2 -40 15t-19 50z" />
-<glyph unicode="&#8220;" horiz-adv-x="429" d="M388 618q0 -30 -21.5 -48q-21.5 -18 -53.5 -18q-39 0 -62 24q-23 24 -23 64q0 42 13.5 70.5q13.5 28.5 32.5 47q19 18.5 40 28.5q21 10 36 15l33 -57q-22 -8 -36.5 -24.5q-14.5 -16.5 -16.5 -36.5q21 1 39.5 -17q18.5 -18 18.5 -48zt0 0zM202 618q0 -30 -21.5 -48q-21.5 -18 -53.5 -18q-39 0 -62 24q-23 24 -23 64q0 42 13.5 70.5q13.5 28.5 32.5 47q19 18.5 40 28.5q21 10 36 15l33 -57q-22 -8 -36.5 -24.5q-14.5 -16.5 -16.5 -36.5q21 1 39.5 -17t18.5 -48z" />
-<glyph unicode="&#8221;" horiz-adv-x="430" d="M228 641q0 30 21 48.5q21 18.5 53 18.5q40 0 63 -25q23 -25 23 -64q0 -42 -13.5 -70.5q-13.5 -28.5 -33 -47.5q-19.5 -19 -40 -29.5q-20.5 -10.5 -35.5 -14.5l-35 59q22 8 38 22.5q16 14.5 18 37.5q-21 -2 -40 15q-19 17 -19 50zt0 0zM42 641q0 30 21 48.5q21 18.5 53 18.5q40 0 63 -25q23 -25 23 -64q0 -42 -13.5 -70.5q-13.5 -28.5 -33 -47.5q-19.5 -19 -40 -29.5q-20.5 -10.5 -35.5 -14.5l-35 59q22 8 38 22.5q16 14.5 18 37.5q-21 -2 -40 15t-19 50z" />
-<glyph unicode="&#8222;" horiz-adv-x="430" d="M228 62q0 30 21 48.5q21 18.5 53 18.5q40 0 63 -25q23 -25 23 -64q0 -42 -13.5 -70.5q-13.5 -28.5 -33 -47.5q-19.5 -19 -40 -29.5q-20.5 -10.5 -35.5 -14.5l-35 59q22 8 38 22.5q16 14.5 18 37.5q-21 -2 -40 15q-19 17 -19 50zt0 0zM42 62q0 30 21 48.5q21 18.5 53 18.5q40 0 63 -25q23 -25 23 -64q0 -42 -13.5 -70.5q-13.5 -28.5 -33 -47.5q-19.5 -19 -40 -29.5q-20.5 -10.5 -35.5 -14.5l-35 59q22 8 38 22.5q16 14.5 18 37.5q-21 -2 -40 15t-19 50z" />
-<glyph unicode="&#8224;" horiz-adv-x="554" d="M44 516h126l56 -16l-17 54v146h135v-146l-17 -54l56 16h127v-120h-130l-53 16l17 -50v-362l-18 -200h-99l-18 201v361l17 50l-56 -16l-126 0z" />
-<glyph unicode="&#8225;" horiz-adv-x="554" d="M209 366l17 46l-56 -16h-126v120h126l56 -16l-17 51v149h135v-149l-17 -51l56 16h127v-120h-130l-53 16l17 -46v-76l-17 -46l53 16h130v-120h-127l-56 16l17 -51v-105l-19 -200h-97l-19 201v104l17 51l-56 -16h-126v120h126l56 -16l-17 46z" />
-<glyph unicode="&#8226;" horiz-adv-x="492" d="M80 311q0 34 13.5 62.5q13.5 28.5 36 49q22.5 20.5 52.5 32q30 11.5 63 11.5q34 0 64.5 -10.5q30.5 -10.5 53 -31q22.5 -20.5 36 -49q13.5 -28.5 13.5 -64.5q0 -36 -13.5 -64q-13.5 -28 -36 -48q-22.5 -20 -53 -30.5q-30.5 -10.5 -64.5 -10.5q-33 0 -63 10.5q-30 10.5 -52.5 30.5q-22.5 20 -36 48t-13.5 64z" />
-<glyph unicode="&#8230;" horiz-adv-x="858" d="M629 68q0 37 24 58q24 21 63 21q40 0 64 -21q24 -21 24 -58q0 -35 -24 -57q-24 -22 -64 -22q-39 0 -63 22q-24 22 -24 57zt0 0zM342 68q0 37 24 58q24 21 63 21q40 0 64 -21q24 -21 24 -58q0 -35 -24 -57q-24 -22 -64 -22q-39 0 -63 22q-24 22 -24 57zt0 0zM56 68q0 37 24 58q24 21 63 21q40 0 64 -21q24 -21 24 -58q0 -35 -24 -57q-24 -22 -64 -22q-39 0 -63 22t-24 57z" />
-<glyph unicode="&#8240;" horiz-adv-x="1330" d="M53 542q0 45 14 77q14 32 39.5 52.5q25.5 20.5 60 30.5q34.5 10 76.5 10q41 0 76 -9q35 -9 60.5 -29.5q25.5 -20.5 39.5 -53q14 -32.5 14 -78.5q0 -47 -14 -79q-14 -32 -39.5 -52.5q-25.5 -20.5 -60.5 -29.5q-35 -9 -76 -9q-42 0 -76.5 9q-34.5 9 -60 29.5q-25.5 20.5 -39.5 52.5q-14 32 -14 79zt0 0zM180 542q0 -39 14 -61q14 -22 49 -22q34 0 48 19q14 19 14 64q0 45 -14 64q-14 19 -48 19q-34 0 -48.5 -19q-14.5 -19 -14.5 -64zt0 0zM486 170q0 45 14 77q14 32 39.5 52.5q25.5 20.5 60 30.5q34.5 10 76.5 10q41 0 76 -9q35 -9 60.5 -29.5q25.5 -20.5 39.5 -53q14 -32.5 14 -78.5q0 -47 -14 -79q-14 -32 -39.5 -52.5q-25.5 -20.5 -60.5 -29.5q-35 -9 -76 -9q-42 0 -76.5 9q-34.5 9 -60 29.5q-25.5 20.5 -39.5 52.5q-14 32 -14 79zt0 0zM613 170q0 -39 14 -61q14 -22 49 -22q34 0 48 19q14 19 14 64q0 45 -14 64q-14 19 -48 19q-34 0 -48.5 -19q-14.5 -19 -14.5 -64zt0 0zM907 170q0 45 14 77q14 32 39.5 52.5q25.5 20.5 60 30.5q34.5 10 76.5 10q41 0 76 -9q35 -9 60.5 -29.5q25.5 -20.5 39.5 -53q14 -32.5 14 -78.5q0 -47 -14 -79q-14 -32 -39.5 -52.5q-25.5 -20.5 -60.5 -29.5q-35 -9 -76 -9q-42 0 -76.5 9q-34.5 9 -60 29.5q-25.5 20.5 -39.5 52.5q-14 32 -14 79zt0 0zM1034 170q0 -39 14 -61q14 -22 49 -22q34 0 48 19q14 19 14 64q0 45 -14 64q-14 19 -48 19q-34 0 -48.5 -19q-14.5 -19 -14.5 -64zt0 0zM732 718l79 -77l-625 -655l-76 77z" />
-<glyph unicode="&#8249;" horiz-adv-x="333" d="M32 259l174 230l79 -71l-87 -117l-52 -41l52 -36l95 -114l-81 -72z" />
-<glyph unicode="&#8250;" horiz-adv-x="333" d="M302 268l-174 -230l-81 70l89 118l52 41l-52 36l-96 115l81 71z" />
-<glyph unicode="&#8260;" horiz-adv-x="199" d="M289 715l91 -57l-468 -672l-90 61z" />
-<glyph unicode="&#8321;" horiz-adv-x="442" d="M75 8h107v150l10 48l-33 -33l-62 -41l-55 83l171 112h93v-319h96v-108l-327 0z" />
-<glyph unicode="&#8322;" horiz-adv-x="442" d="M376 197q0 -29 -8.5 -53q-8.5 -24 -22.5 -44q-14 -20 -33.5 -38q-19.5 -18 -41.5 -36l-52 -24v-5l64 12h111v-109h-339v78q28 17 62 40.5q34 23.5 64 49q30 25.5 50 52.5q20 27 20 52q0 26 -15.5 35.5q-15.5 9.5 -45.5 9.5q-29 0 -55 -9.5q-26 -9.5 -46 -20.5l-38 98q38 21 81.5 31.5q43.5 10.5 82.5 10.5q77 0 119.5 -33.5t42.5 -96.5z" />
-<glyph unicode="&#8323;" horiz-adv-x="442" d="M181 -6q49 0 68.5 12.5q19.5 12.5 19.5 34.5q0 21 -20.5 33.5q-20.5 12.5 -76.5 12.5h-43v40l77 74l47 24l-63 -6h-125v101h308v-67l-94 -86l-37 -18v-5l32 3q57 -2 89 -31.5q32 -29.5 32 -83.5q0 -36 -15.5 -62.5q-15.5 -26.5 -42.5 -43.5q-27 -17 -62.5 -25q-35.5 -8 -75.5 -8q-42 0 -78 7q-36 7 -62 18l25 95q45 -19 97 -19z" />
-<glyph unicode="&#8324;" horiz-adv-x="442" d="M433 -25h-83v-75h-108v75h-226v72l238 281h96v-259h83zM242 150l5 54h-5l-23 -48l-51 -63l-39 -33l58 9l55 0z" />
-<glyph unicode="&#8364;" horiz-adv-x="591" d="M23 475h69q16 67 47 111.5q31 44.5 72.5 73q41.5 28.5 90.5 41.5q49 13 101 13q58 0 102.5 -8.5q44.5 -8.5 73.5 -19.5l-39 -110q-23 10 -55 15.5q-32 5.5 -74 5.5q-63 0 -110 -29q-47 -29 -71 -93l279 0l-28 -94h-272q-1 -7 -1 -15q0 -8 0 -16v-27h251l-28 -94h-204q23 -62 70.5 -94q47.5 -32 124.5 -32q47 0 79.5 10.5q32.5 10.5 58.5 25.5l29 -108q-17 -12 -39 -20.5q-22 -8.5 -47.5 -14q-25.5 -5.5 -51.5 -8q-26 -2.5 -50 -2.5q-59 0 -109.5 14.5q-50.5 14.5 -91 44q-40.5 29.5 -69 74.5q-28.5 45 -42.5 110l-100 0l34 94h54v27q0 8 0 16q0 8 1 15l-89 0z" />
-<glyph unicode="&#8372;" horiz-adv-x="591" d="M526 321v-94h-274q-16 -15 -25.5 -36.5q-9.5 -21.5 -9.5 -40.5q0 -26 24 -39.5q24 -13.5 82 -13.5q57 0 92.5 10q35.5 10 58.5 23l31 -106q-27 -14 -76.5 -26q-49.5 -12 -138.5 -12q-101 0 -155.5 36.5q-54.5 36.5 -54.5 108.5q0 31 12 58q12 27 20 38l-75 0v94zM37 379v94h273q16 13 27 35q11 22 11 42q0 29 -21 41q-21 12 -64 12q-45 0 -76 -9q-31 -9 -57 -21l-41 105q18 8 35.5 14.5q17.5 6.5 39.5 11.5q22 5 52 7.5q30 2.5 73 2.5q95 0 145.5 -33q50.5 -33 50.5 -102q0 -32 -13.5 -61.5q-13.5 -29.5 -28.5 -44.5l83 0l0 -94z" />
-<glyph unicode="&#8374;" horiz-adv-x="591" d="M13 367h85v326q46 8 95 12.5q49 4.5 103 4.5q57 0 109 -9q52 -9 91 -33q39 -24 62.5 -66q23.5 -42 23.5 -108q0 -60 -23.5 -102.5q-23.5 -42.5 -62 -68.5q-38.5 -26 -88 -38q-49.5 -12 -100.5 -12h-73v-58h174v-94h-174v-121h-137v121h-85v94h85v58h-85zM235 373h55q30 0 57 6q27 6 47.5 20q20.5 14 32 35.5q11.5 21.5 11.5 53.5q0 59 -37 82q-37 23 -94 23q-21 0 -40.5 -1q-19.5 -1 -31.5 -3z" />
-<glyph unicode="&#8375;" horiz-adv-x="591" d="M13 367h85v326q46 8 95 12.5q49 4.5 103 4.5q57 0 109 -9q52 -9 91 -33q39 -24 62.5 -66q23.5 -42 23.5 -108q0 -60 -23.5 -102.5q-23.5 -42.5 -62 -68.5q-38.5 -26 -88 -38q-49.5 -12 -100.5 -12h-73v-58h174v-94h-174v-121h-137v121h-85v94h85v58h-85zM235 373h55q30 0 57 6q27 6 47.5 20q20.5 14 32 35.5q11.5 21.5 11.5 53.5q0 59 -37 82q-37 23 -94 23q-21 0 -40.5 -1q-19.5 -1 -31.5 -3z" />
-<glyph unicode="&#8377;" horiz-adv-x="591" d="M13 367h85v326q46 8 95 12.5q49 4.5 103 4.5q57 0 109 -9q52 -9 91 -33q39 -24 62.5 -66q23.5 -42 23.5 -108q0 -60 -23.5 -102.5q-23.5 -42.5 -62 -68.5q-38.5 -26 -88 -38q-49.5 -12 -100.5 -12h-73v-58h174v-94h-174v-121h-137v121h-85v94h85v58h-85zM235 373h55q30 0 57 6q27 6 47.5 20q20.5 14 32 35.5q11.5 21.5 11.5 53.5q0 59 -37 82q-37 23 -94 23q-21 0 -40.5 -1q-19.5 -1 -31.5 -3z" />
-<glyph unicode="&#8378;" horiz-adv-x="591" d="M13 367h85v326q46 8 95 12.5q49 4.5 103 4.5q57 0 109 -9q52 -9 91 -33q39 -24 62.5 -66q23.5 -42 23.5 -108q0 -60 -23.5 -102.5q-23.5 -42.5 -62 -68.5q-38.5 -26 -88 -38q-49.5 -12 -100.5 -12h-73v-58h174v-94h-174v-121h-137v121h-85v94h85v58h-85zM235 373h55q30 0 57 6q27 6 47.5 20q20.5 14 32 35.5q11.5 21.5 11.5 53.5q0 59 -37 82q-37 23 -94 23q-21 0 -40.5 -1q-19.5 -1 -31.5 -3z" />
-<glyph unicode="&#8379;" horiz-adv-x="591" d="M13 367h85v326q46 8 95 12.5q49 4.5 103 4.5q57 0 109 -9q52 -9 91 -33q39 -24 62.5 -66q23.5 -42 23.5 -108q0 -60 -23.5 -102.5q-23.5 -42.5 -62 -68.5q-38.5 -26 -88 -38q-49.5 -12 -100.5 -12h-73v-58h174v-94h-174v-121h-137v121h-85v94h85v58h-85zM235 373h55q30 0 57 6q27 6 47.5 20q20.5 14 32 35.5q11.5 21.5 11.5 53.5q0 59 -37 82q-37 23 -94 23q-21 0 -40.5 -1q-19.5 -1 -31.5 -3z" />
-<glyph unicode="&#8380;" horiz-adv-x="591" d="M13 367h85v326q46 8 95 12.5q49 4.5 103 4.5q57 0 109 -9q52 -9 91 -33q39 -24 62.5 -66q23.5 -42 23.5 -108q0 -60 -23.5 -102.5q-23.5 -42.5 -62 -68.5q-38.5 -26 -88 -38q-49.5 -12 -100.5 -12h-73v-58h174v-94h-174v-121h-137v121h-85v94h85v58h-85zM235 373h55q30 0 57 6q27 6 47.5 20q20.5 14 32 35.5q11.5 21.5 11.5 53.5q0 59 -37 82q-37 23 -94 23q-21 0 -40.5 -1q-19.5 -1 -31.5 -3z" />
-<glyph unicode="&#8381;" horiz-adv-x="591" d="M13 367h85v326q46 8 95 12.5q49 4.5 103 4.5q57 0 109 -9q52 -9 91 -33q39 -24 62.5 -66q23.5 -42 23.5 -108q0 -60 -23.5 -102.5q-23.5 -42.5 -62 -68.5q-38.5 -26 -88 -38q-49.5 -12 -100.5 -12h-73v-58h174v-94h-174v-121h-137v121h-85v94h85v58h-85zM235 373h55q30 0 57 6q27 6 47.5 20q20.5 14 32 35.5q11.5 21.5 11.5 53.5q0 59 -37 82q-37 23 -94 23q-21 0 -40.5 -1q-19.5 -1 -31.5 -3z" />
-<glyph unicode="&#8382;" horiz-adv-x="591" d="M13 367h85v326q46 8 95 12.5q49 4.5 103 4.5q57 0 109 -9q52 -9 91 -33q39 -24 62.5 -66q23.5 -42 23.5 -108q0 -60 -23.5 -102.5q-23.5 -42.5 -62 -68.5q-38.5 -26 -88 -38q-49.5 -12 -100.5 -12h-73v-58h174v-94h-174v-121h-137v121h-85v94h85v58h-85zM235 373h55q30 0 57 6q27 6 47.5 20q20.5 14 32 35.5q11.5 21.5 11.5 53.5q0 59 -37 82q-37 23 -94 23q-21 0 -40.5 -1q-19.5 -1 -31.5 -3z" />
-<glyph unicode="&#8383;" horiz-adv-x="591" d="M13 367h85v326q46 8 95 12.5q49 4.5 103 4.5q57 0 109 -9q52 -9 91 -33q39 -24 62.5 -66q23.5 -42 23.5 -108q0 -60 -23.5 -102.5q-23.5 -42.5 -62 -68.5q-38.5 -26 -88 -38q-49.5 -12 -100.5 -12h-73v-58h174v-94h-174v-121h-137v121h-85v94h85v58h-85zM235 373h55q30 0 57 6q27 6 47.5 20q20.5 14 32 35.5q11.5 21.5 11.5 53.5q0 59 -37 82q-37 23 -94 23q-21 0 -40.5 -1q-19.5 -1 -31.5 -3z" />
-<glyph unicode="&#8384;" horiz-adv-x="591" d="M13 367h85v326q46 8 95 12.5q49 4.5 103 4.5q57 0 109 -9q52 -9 91 -33q39 -24 62.5 -66q23.5 -42 23.5 -108q0 -60 -23.5 -102.5q-23.5 -42.5 -62 -68.5q-38.5 -26 -88 -38q-49.5 -12 -100.5 -12h-73v-58h174v-94h-174v-121h-137v121h-85v94h85v58h-85zM235 373h55q30 0 57 6q27 6 47.5 20q20.5 14 32 35.5q11.5 21.5 11.5 53.5q0 59 -37 82q-37 23 -94 23q-21 0 -40.5 -1q-19.5 -1 -31.5 -3z" />
-<glyph unicode="&#8385;" horiz-adv-x="591" d="M13 367h85v326q46 8 95 12.5q49 4.5 103 4.5q57 0 109 -9q52 -9 91 -33q39 -24 62.5 -66q23.5 -42 23.5 -108q0 -60 -23.5 -102.5q-23.5 -42.5 -62 -68.5q-38.5 -26 -88 -38q-49.5 -12 -100.5 -12h-73v-58h174v-94h-174v-121h-137v121h-85v94h85v58h-85zM235 373h55q30 0 57 6q27 6 47.5 20q20.5 14 32 35.5q11.5 21.5 11.5 53.5q0 59 -37 82q-37 23 -94 23q-21 0 -40.5 -1q-19.5 -1 -31.5 -3z" />
-<glyph unicode="&#8386;" horiz-adv-x="591" d="M13 367h85v326q46 8 95 12.5q49 4.5 103 4.5q57 0 109 -9q52 -9 91 -33q39 -24 62.5 -66q23.5 -42 23.5 -108q0 -60 -23.5 -102.5q-23.5 -42.5 -62 -68.5q-38.5 -26 -88 -38q-49.5 -12 -100.5 -12h-73v-58h174v-94h-174v-121h-137v121h-85v94h85v58h-85zM235 373h55q30 0 57 6q27 6 47.5 20q20.5 14 32 35.5q11.5 21.5 11.5 53.5q0 59 -37 82q-37 23 -94 23q-21 0 -40.5 -1q-19.5 -1 -31.5 -3z" />
-<glyph unicode="&#8387;" horiz-adv-x="591" d="M13 367h85v326q46 8 95 12.5q49 4.5 103 4.5q57 0 109 -9q52 -9 91 -33q39 -24 62.5 -66q23.5 -42 23.5 -108q0 -60 -23.5 -102.5q-23.5 -42.5 -62 -68.5q-38.5 -26 -88 -38q-49.5 -12 -100.5 -12h-73v-58h174v-94h-174v-121h-137v121h-85v94h85v58h-85zM235 373h55q30 0 57 6q27 6 47.5 20q20.5 14 32 35.5q11.5 21.5 11.5 53.5q0 59 -37 82q-37 23 -94 23q-21 0 -40.5 -1q-19.5 -1 -31.5 -3z" />
-<glyph unicode="&#8388;" horiz-adv-x="591" d="M13 367h85v326q46 8 95 12.5q49 4.5 103 4.5q57 0 109 -9q52 -9 91 -33q39 -24 62.5 -66q23.5 -42 23.5 -108q0 -60 -23.5 -102.5q-23.5 -42.5 -62 -68.5q-38.5 -26 -88 -38q-49.5 -12 -100.5 -12h-73v-58h174v-94h-174v-121h-137v121h-85v94h85v58h-85zM235 373h55q30 0 57 6q27 6 47.5 20q20.5 14 32 35.5q11.5 21.5 11.5 53.5q0 59 -37 82q-37 23 -94 23q-21 0 -40.5 -1q-19.5 -1 -31.5 -3z" />
-<glyph unicode="&#8389;" horiz-adv-x="591" d="M13 367h85v326q46 8 95 12.5q49 4.5 103 4.5q57 0 109 -9q52 -9 91 -33q39 -24 62.5 -66q23.5 -42 23.5 -108q0 -60 -23.5 -102.5q-23.5 -42.5 -62 -68.5q-38.5 -26 -88 -38q-49.5 -12 -100.5 -12h-73v-58h174v-94h-174v-121h-137v121h-85v94h85v58h-85zM235 373h55q30 0 57 6q27 6 47.5 20q20.5 14 32 35.5q11.5 21.5 11.5 53.5q0 59 -37 82q-37 23 -94 23q-21 0 -40.5 -1q-19.5 -1 -31.5 -3z" />
-<glyph unicode="&#8390;" horiz-adv-x="591" d="M13 367h85v326q46 8 95 12.5q49 4.5 103 4.5q57 0 109 -9q52 -9 91 -33q39 -24 62.5 -66q23.5 -42 23.5 -108q0 -60 -23.5 -102.5q-23.5 -42.5 -62 -68.5q-38.5 -26 -88 -38q-49.5 -12 -100.5 -12h-73v-58h174v-94h-174v-121h-137v121h-85v94h85v58h-85zM235 373h55q30 0 57 6q27 6 47.5 20q20.5 14 32 35.5q11.5 21.5 11.5 53.5q0 59 -37 82q-37 23 -94 23q-21 0 -40.5 -1q-19.5 -1 -31.5 -3z" />
-<glyph unicode="&#8391;" horiz-adv-x="591" d="M13 367h85v326q46 8 95 12.5q49 4.5 103 4.5q57 0 109 -9q52 -9 91 -33q39 -24 62.5 -66q23.5 -42 23.5 -108q0 -60 -23.5 -102.5q-23.5 -42.5 -62 -68.5q-38.5 -26 -88 -38q-49.5 -12 -100.5 -12h-73v-58h174v-94h-174v-121h-137v121h-85v94h85v58h-85zM235 373h55q30 0 57 6q27 6 47.5 20q20.5 14 32 35.5q11.5 21.5 11.5 53.5q0 59 -37 82q-37 23 -94 23q-21 0 -40.5 -1q-19.5 -1 -31.5 -3z" />
-<glyph unicode="&#8392;" horiz-adv-x="591" d="M13 367h85v326q46 8 95 12.5q49 4.5 103 4.5q57 0 109 -9q52 -9 91 -33q39 -24 62.5 -66q23.5 -42 23.5 -108q0 -60 -23.5 -102.5q-23.5 -42.5 -62 -68.5q-38.5 -26 -88 -38q-49.5 -12 -100.5 -12h-73v-58h174v-94h-174v-121h-137v121h-85v94h85v58h-85zM235 373h55q30 0 57 6q27 6 47.5 20q20.5 14 32 35.5q11.5 21.5 11.5 53.5q0 59 -37 82q-37 23 -94 23q-21 0 -40.5 -1q-19.5 -1 -31.5 -3z" />
-<glyph unicode="&#8393;" horiz-adv-x="591" d="M13 367h85v326q46 8 95 12.5q49 4.5 103 4.5q57 0 109 -9q52 -9 91 -33q39 -24 62.5 -66q23.5 -42 23.5 -108q0 -60 -23.5 -102.5q-23.5 -42.5 -62 -68.5q-38.5 -26 -88 -38q-49.5 -12 -100.5 -12h-73v-58h174v-94h-174v-121h-137v121h-85v94h85v58h-85zM235 373h55q30 0 57 6q27 6 47.5 20q20.5 14 32 35.5q11.5 21.5 11.5 53.5q0 59 -37 82q-37 23 -94 23q-21 0 -40.5 -1q-19.5 -1 -31.5 -3z" />
-<glyph unicode="&#8394;" horiz-adv-x="591" d="M13 367h85v326q46 8 95 12.5q49 4.5 103 4.5q57 0 109 -9q52 -9 91 -33q39 -24 62.5 -66q23.5 -42 23.5 -108q0 -60 -23.5 -102.5q-23.5 -42.5 -62 -68.5q-38.5 -26 -88 -38q-49.5 -12 -100.5 -12h-73v-58h174v-94h-174v-121h-137v121h-85v94h85v58h-85zM235 373h55q30 0 57 6q27 6 47.5 20q20.5 14 32 35.5q11.5 21.5 11.5 53.5q0 59 -37 82q-37 23 -94 23q-21 0 -40.5 -1q-19.5 -1 -31.5 -3z" />
-<glyph unicode="&#8395;" horiz-adv-x="591" d="M13 367h85v326q46 8 95 12.5q49 4.5 103 4.5q57 0 109 -9q52 -9 91 -33q39 -24 62.5 -66q23.5 -42 23.5 -108q0 -60 -23.5 -102.5q-23.5 -42.5 -62 -68.5q-38.5 -26 -88 -38q-49.5 -12 -100.5 -12h-73v-58h174v-94h-174v-121h-137v121h-85v94h85v58h-85zM235 373h55q30 0 57 6q27 6 47.5 20q20.5 14 32 35.5q11.5 21.5 11.5 53.5q0 59 -37 82q-37 23 -94 23q-21 0 -40.5 -1q-19.5 -1 -31.5 -3z" />
-<glyph unicode="&#8396;" horiz-adv-x="591" d="M13 367h85v326q46 8 95 12.5q49 4.5 103 4.5q57 0 109 -9q52 -9 91 -33q39 -24 62.5 -66q23.5 -42 23.5 -108q0 -60 -23.5 -102.5q-23.5 -42.5 -62 -68.5q-38.5 -26 -88 -38q-49.5 -12 -100.5 -12h-73v-58h174v-94h-174v-121h-137v121h-85v94h85v58h-85zM235 373h55q30 0 57 6q27 6 47.5 20q20.5 14 32 35.5q11.5 21.5 11.5 53.5q0 59 -37 82q-37 23 -94 23q-21 0 -40.5 -1q-19.5 -1 -31.5 -3z" />
-<glyph unicode="&#8397;" horiz-adv-x="591" d="M13 367h85v326q46 8 95 12.5q49 4.5 103 4.5q57 0 109 -9q52 -9 91 -33q39 -24 62.5 -66q23.5 -42 23.5 -108q0 -60 -23.5 -102.5q-23.5 -42.5 -62 -68.5q-38.5 -26 -88 -38q-49.5 -12 -100.5 -12h-73v-58h174v-94h-174v-121h-137v121h-85v94h85v58h-85zM235 373h55q30 0 57 6q27 6 47.5 20q20.5 14 32 35.5q11.5 21.5 11.5 53.5q0 59 -37 82q-37 23 -94 23q-21 0 -40.5 -1q-19.5 -1 -31.5 -3z" />
-<glyph unicode="&#8398;" horiz-adv-x="591" d="M13 367h85v326q46 8 95 12.5q49 4.5 103 4.5q57 0 109 -9q52 -9 91 -33q39 -24 62.5 -66q23.5 -42 23.5 -108q0 -60 -23.5 -102.5q-23.5 -42.5 -62 -68.5q-38.5 -26 -88 -38q-49.5 -12 -100.5 -12h-73v-58h174v-94h-174v-121h-137v121h-85v94h85v58h-85zM235 373h55q30 0 57 6q27 6 47.5 20q20.5 14 32 35.5q11.5 21.5 11.5 53.5q0 59 -37 82q-37 23 -94 23q-21 0 -40.5 -1q-19.5 -1 -31.5 -3z" />
-<glyph unicode="&#8399;" horiz-adv-x="591" d="M13 367h85v326q46 8 95 12.5q49 4.5 103 4.5q57 0 109 -9q52 -9 91 -33q39 -24 62.5 -66q23.5 -42 23.5 -108q0 -60 -23.5 -102.5q-23.5 -42.5 -62 -68.5q-38.5 -26 -88 -38q-49.5 -12 -100.5 -12h-73v-58h174v-94h-174v-121h-137v121h-85v94h85v58h-85zM235 373h55q30 0 57 6q27 6 47.5 20q20.5 14 32 35.5q11.5 21.5 11.5 53.5q0 59 -37 82q-37 23 -94 23q-21 0 -40.5 -1q-19.5 -1 -31.5 -3z" />
-<glyph unicode="&#8467;" horiz-adv-x="500" d="M406 30q-22 -14 -57.5 -28q-35.5 -14 -70.5 -14q-63 0 -91.5 30.5q-28.5 30.5 -28.5 95.5v104l-50 -44l-35 44l85 74v254q0 44 10 75.5q10 31.5 27.5 51.5q17.5 20 41 29.5q23.5 9.5 50.5 9.5q48 0 79 -29.5q31 -29.5 31 -89.5q0 -74 -40 -157q-40 -83 -131 -171l0 -140q0 -44 17 -60.5q17 -16.5 41 -16.5q25 0 55 10.5q30 10.5 50 21.5zM333 588q0 34 -14 49q-14 15 -32 15q-12 0 -23 -3.5q-11 -3.5 -19.5 -14q-8.5 -10.5 -13.5 -29q-5 -18.5 -5 -48.5v-212q56 65 81.5 125.5t25.5 117.5z" />
-<glyph unicode="&#8470;" horiz-adv-x="1112" d="M711 321h339v-117h-339zM254 361l-60 104h-5l16 -102v-363h-140v705h107l274 -368l57 -103h6l-16 101v365h140v-705h-107zM688 542q0 45 14 77q14 32 39.5 52.5q25.5 20.5 60 30.5q34.5 10 76.5 10q41 0 76 -9q35 -9 60.5 -29.5q25.5 -20.5 39.5 -53q14 -32.5 14 -78.5q0 -47 -14 -79q-14 -32 -39.5 -52.5q-25.5 -20.5 -60.5 -29.5q-35 -9 -76 -9q-42 0 -76.5 9q-34.5 9 -60 29.5q-25.5 20.5 -39.5 52.5q-14 32 -14 79zt0 0zM816 542q0 -39 13.5 -61q13.5 -22 48.5 -22q34 0 48 19q14 19 14 64q0 45 -14 64q-14 19 -48 19q-34 0 -48 -19t-14 -64z" />
-<glyph unicode="&#8482;" horiz-adv-x="1028" d="M426 583h-128v-243h-140v243h-128v117h396zM869 482l17 103h-6l-39 -85l-74 -115h-84l-75 111l-42 89h-6l27 -102v-143h-122v360h141l99 -152l26 -63h1l28 65l91 150h140v-360l-122 0z" />
-<glyph unicode="&#8494;" horiz-adv-x="600" d="M157 259v-180q62 -59 145 -59q124 0 193 120l35 -21q-43 -66 -99 -100.5q-56 -34.5 -129 -34.5q-59 0 -107 21q-48 21 -81.5 58q-33.5 37 -51.5 87.5q-18 50.5 -18 108.5q0 59 18.5 109.5q18.5 50.5 52.5 87.5q34 37 81.5 58q47.5 21 105.5 21q62 0 109.5 -22q47.5 -22 80.5 -59.5q33 -37.5 50 -87.5q17 -50 19 -107zM448 295v145q-63 60 -147 60q-86 0 -144 -60l0 -145z" />
-<glyph unicode="&#8706;" horiz-adv-x="586" d="M299 502q23 0 39.5 -2q16.5 -2 29 -5.5q12.5 -3.5 22 -8q9.5 -4.5 18.5 -9.5l5 0q-6 38 -27.5 63q-21.5 25 -52.5 40q-31 15 -68 21.5q-37 6.5 -73 6.5q-8 0 -15.5 0q-7.5 0 -15.5 -1l24 106q10 1 19.5 1q9.5 0 19.5 0q70 0 131 -14.5q61 -14.5 106.5 -49q45.5 -34.5 71.5 -92q26 -57.5 26 -142.5q0 -114 -24 -195q-24 -81 -66 -133.5q-42 -52.5 -99.5 -77q-57.5 -24.5 -123.5 -24.5q-53 0 -95 14q-42 14 -71 40q-29 26 -45 62.5q-16 36.5 -16 81.5q0 56 16.5 112.5q16.5 56.5 51 102.5q34.5 46 87.5 74.5q53 28.5 125 28.5zt0 0zM307 385q-62 0 -102 -51.5q-40 -51.5 -40 -142.5q0 -34 23.5 -61q23.5 -27 69.5 -27q45 0 75 22q30 22 47.5 57.5q17.5 35.5 25 79q7.5 43.5 7.5 86.5q-20 19 -44 28t-62 9z" />
-<glyph unicode="&#8719;" horiz-adv-x="711" d="M496 568h-281v-768h-150v900h581v-900l-150 0z" />
-<glyph unicode="&#8721;" horiz-adv-x="571" d="M201 -28l-47 -40h390v-132h-524v132l201 282l48 33l-52 38l-197 283v132h524v-132h-376l50 -41l185 -271z" />
-<glyph unicode="&#8722;" horiz-adv-x="571" d="M47 397h477v-120l-477 0z" />
-<glyph unicode="&#8725;" horiz-adv-x="571" d="M473 715l91 -57l-468 -672l-90 61z" />
-<glyph unicode="&#8730;" horiz-adv-x="571" d="M204 478l86 -189l23 -107h5l21 109l127 409h137l-250 -705h-72l-164 366h-122l0 117z" />
-<glyph unicode="&#8734;" horiz-adv-x="927" d="M451 264q-39 -58 -94.5 -86.5q-55.5 -28.5 -122.5 -28.5q-39 0 -75 14q-36 14 -63 39.5q-27 25.5 -43.5 62.5q-16.5 37 -16.5 84q0 48 16 86q16 38 44.5 64q28.5 26 66.5 40q38 14 82 14q80 0 134 -28.5q54 -28.5 95 -73.5q48 55 103.5 78.5q55.5 23.5 121.5 23.5q40 0 75 -13.5q35 -13.5 61 -39q26 -25.5 41 -62q15 -36.5 15 -82.5q0 -49 -17 -87.5q-17 -38.5 -46 -65q-29 -26.5 -69 -40.5q-40 -14 -86 -14q-39 0 -71.5 9q-32.5 9 -59.5 25q-27 16 -49.5 37q-22.5 21 -41.5 44zt0 0zM672 268q37 0 63 23.5q26 23.5 26 61.5q0 30 -23 55.5q-23 25.5 -69 25.5q-32 0 -67.5 -16q-35.5 -16 -67.5 -52q24 -40 60 -69q36 -29 78 -29zt0 0zM255 434q-18 0 -34 -6.5q-16 -6.5 -28 -17.5q-12 -11 -19.5 -26.5q-7.5 -15.5 -7.5 -34.5q0 -37 28.5 -59q28.5 -22 67.5 -22q33 0 69 20q36 20 62 52q-26 43 -59.5 68.5t-78.5 25.5z" />
-<glyph unicode="&#8747;" horiz-adv-x="400" d="M267 -31q0 -98 -40.5 -137.5q-40.5 -39.5 -125.5 -39.5q-51 0 -96.5 7.5q-45.5 7.5 -71.5 17.5l31 108q26 -10 47.5 -13q21.5 -3 44.5 -3q42 0 56.5 22.5q14.5 22.5 14.5 77.5v527q0 97 40 137.5q40 40.5 126 40.5q19 0 41.5 -2.5q22.5 -2.5 45 -6q22.5 -3.5 42.5 -8.5q20 -5 34 -9l-23 -109q-26 8 -47 13q-21 5 -51 5q-38 0 -53 -20q-15 -20 -15 -73z" />
-<glyph unicode="&#8776;" horiz-adv-x="571" d="M30 477q51 38 91.5 53q40.5 15 75.5 15q31 0 58 -8.5q27 -8.5 52 -18.5q25 -10 49 -18.5q24 -8.5 50 -8.5q20 0 40.5 6.5q20.5 6.5 43.5 23.5l51 -108q-39 -28 -71 -38.5q-32 -10.5 -60 -10.5q-30 0 -56 9q-26 9 -51 20.5q-25 11.5 -50 20.5q-25 9 -53 9q-26 0 -56.5 -11q-30.5 -11 -66.5 -40zM30 279q51 38 91.5 53q40.5 15 75.5 15q31 0 58 -8.5q27 -8.5 52 -18.5q25 -10 49 -18.5q24 -8.5 50 -8.5q20 0 40.5 6.5q20.5 6.5 43.5 23.5l51 -108q-39 -28 -71 -38.5q-32 -10.5 -60 -10.5q-30 0 -56 9q-26 9 -51 20.5q-25 11.5 -50 20.5q-25 9 -53 9q-26 0 -56.5 -11q-30.5 -11 -66.5 -40z" />
-<glyph unicode="&#8800;" horiz-adv-x="571" d="M47 494h252l53 110h122l-53 -110h103v-120h-160l-35 -74h195v-120h-253l-59 -124h-122l59 124h-102v120h160l35 74l-195 0z" />
-<glyph unicode="&#8804;" horiz-adv-x="571" d="M524 79l-55 -105l-421 219l57 107zM36 412v74l424 236l58 -98l-241 -138l-99 -35l98 -31l247 -136l-57 -98z" />
-<glyph unicode="&#8805;" horiz-adv-x="571" d="M535 202l-420 -228l-55 105l418 228zM534 497v-74l-424 -236l-58 98l241 138l99 35l-98 31l-247 136l57 98z" />
-<glyph unicode="&#9674;" horiz-adv-x="571" d="M324 -5h-82l-214 347l214 363h82l218 -358zM325 204l85 130l-98 153l-31 83h-5l-32 -85l-83 -129l97 -153l31 -83l4 0z" />
-<glyph unicode="&#11367;" horiz-adv-x="754" d="M493 289h-280v-289h-148v700h148v-281h280v281h148v-570h94v-254h-105l-16 124l-121 0z" />
-<glyph unicode="&#11368;" horiz-adv-x="652" d="M566 124h66v-243h-103l-16 119h-87v289q0 68 -20.5 97.5q-20.5 29.5 -75.5 29.5q-40 0 -73.5 -25.5q-33.5 -25.5 -44.5 -67.5l0 -323h-140v700h140v-239h12q27 35 67.5 57q40.5 22 102.5 22q43 0 75 -10.5q32 -10.5 53.5 -36q21.5 -25.5 32.5 -68q11 -42.5 11 -105.5z" />
-<glyph unicode="&#62465;" horiz-adv-x="2" d="M-260 870h172v-31l-174 -87l-112 0z" />
-<glyph unicode="&#62470;" horiz-adv-x="534" d="M116 876q23 -26 64 -38.5q41 -12.5 92 -12.5q52 0 90 14q38 14 59 37l53 -35q-13 -28 -34.5 -49q-21.5 -21 -49 -34.5q-27.5 -13.5 -58 -20.5q-30.5 -7 -61.5 -7q-29 0 -60 5.5q-31 5.5 -59.5 18q-28.5 12.5 -52.5 33q-24 20.5 -39 49.5z" />
-<glyph unicode="&#62471;" horiz-adv-x="367" d="M199 -52q48 -3 75.5 -21q27.5 -18 27.5 -56q0 -24 -12.5 -41.5q-12.5 -17.5 -34.5 -29.5q-22 -12 -51 -18q-29 -6 -63 -6q-18 0 -36 1q-18 1 -37 5l10 47q31 -2 50 0.5q19 2.5 29.5 7q10.5 4.5 14 11q3.5 6.5 3.5 14.5q0 17 -23 26q-23 9 -74 11l62 95l87 0z" />
-<glyph unicode="&#62472;" horiz-adv-x="508" d="M205 870h105l138 -92v-41h-108l-62 40l-22 34l-24 -33l-66 -41h-106l0 42z" />
-<glyph unicode="&#62473;" horiz-adv-x="278" d="M61 -105q0 29 20 47q20 18 51 18q38 0 62 -24.5q24 -24.5 24 -65.5q0 -34 -12 -59.5q-12 -25.5 -29.5 -43q-17.5 -17.5 -36.5 -28.5q-19 -11 -33 -15l-36 60q15 6 29.5 16.5q14.5 10.5 16.5 31.5q-20 -1 -38 15t-18 48z" />
-<glyph unicode="&#62474;" horiz-adv-x="243" d="M41 642q0 30 21 48.5q21 18.5 53 18.5q40 0 63 -25q23 -25 23 -64q0 -42 -13.5 -70.5q-13.5 -28.5 -33 -47.5q-19.5 -19 -40 -29.5q-20.5 -10.5 -35.5 -14.5l-35 59q22 8 38 22.5q16 14.5 18 37.5q-21 -2 -40 15t-19 50z" />
-<glyph unicode="&#62475;" horiz-adv-x="310" d="M60 799q0 25 23.5 43q23.5 18 70.5 18q47 0 71.5 -18q24.5 -18 24.5 -43q0 -27 -24.5 -45q-24.5 -18 -71.5 -18q-47 0 -70.5 18t-23.5 45z" />
-<glyph unicode="&#62476;" horiz-adv-x="397" d="M60 773q0 18 6 34.5q6 16.5 21.5 29q15.5 12.5 42.5 19.5q27 7 68 7q77 0 108 -24q31 -24 31 -66q0 -18 -6.5 -34q-6.5 -16 -22.5 -28q-16 -12 -43 -19q-27 -7 -67 -7q-39 0 -65.5 6.5q-26.5 6.5 -42.5 18.5q-16 12 -23 28q-7 16 -7 35zt0 0zM150 773q0 -14 11 -22q11 -8 37 -8q28 0 38.5 7.5q10.5 7.5 10.5 22.5q0 16 -11.5 24q-11.5 8 -37.5 8q-48 0 -48 -32z" />
-<glyph unicode="&#62477;" horiz-adv-x="516" d="M60 804q33 35 64.5 48q31.5 13 62.5 13q24 0 48 -5.5q24 -5.5 46.5 -12.5q22.5 -7 44 -12.5q21.5 -5.5 41.5 -5.5q17 0 33 5q16 5 31 19l25 -72q-29 -26 -57 -36q-28 -10 -55 -10q-24 0 -47.5 5.5q-23.5 5.5 -46 12.5q-22.5 7 -44 12.5q-21.5 5.5 -42.5 5.5q-21 0 -41 -7.5q-20 -7.5 -40 -27.5z" />
-<glyph unicode="&#62478;" horiz-adv-x="387" d="M275 4q-35 -13 -53.5 -32.5q-18.5 -19.5 -17.5 -45.5q0 -20 14 -33.5q14 -13.5 38 -13.5q11 0 21 2q10 2 23 9l22 -64q-18 -13 -53 -25q-35 -12 -76 -12q-61 0 -93 27q-32 27 -32 70q0 40 31 70.5q31 30.5 82 47.5z" />
-<glyph unicode="&#62598;" horiz-adv-x="641" d="M577 535q0 -26 -7.5 -51.5q-7.5 -25.5 -23.5 -47.5q-16 -22 -42 -38q-26 -16 -63 -23l0 -6q33 -3 62 -15q29 -12 50.5 -33.5q21.5 -21.5 34 -52q12.5 -30.5 12.5 -71.5q0 -55 -25.5 -94q-25.5 -39 -66.5 -64q-41 -25 -94 -37q-53 -12 -108 -12q-18 0 -47.5 0q-29.5 0 -63 1.5q-33.5 1.5 -68 4.5q-34.5 3 -62.5 9l0 690q21 3 47.5 6q26.5 3 57 5q30.5 2 62.5 3q32 1 64 1q52 0 102 -7.5q50 -7.5 90 -27q40 -19.5 64.5 -53.5q24.5 -34 24.5 -87zt0 0zM304 110q28 0 53.5 5q25.5 5 45 16.5q19.5 11.5 31 29q11.5 17.5 11.5 43.5q0 32 -14 51q-14 19 -36.5 28.5q-22.5 9.5 -50 12q-27.5 2.5 -55.5 2.5h-82v-182q6 -2 17.5 -3q11.5 -1 25.5 -1.5q14 -0.5 28.5 -1q14.5 -0.5 25.5 -0.5zt0 0zM257 408q15 0 35.5 0.5q20.5 0.5 34.5 2.5q42 13 71 35.5q29 22.5 29 61.5q0 26 -11 42q-11 16 -29.5 25q-18.5 9 -41.5 12q-23 3 -47 3q-29 0 -53 -1q-24 -1 -38 -3l0 -178zM313 870h172v-31l-174 -87l-112 0z" />
-<glyph unicode="&#62599;" horiz-adv-x="619" d="M72 700h140v-220h12q24 27 61.5 42.5q37.5 15.5 82.5 15.5q102 0 155.5 -66.5q53.5 -66.5 53.5 -194.5q0 -69 -19.5 -123q-19.5 -54 -55.5 -91q-36 -37 -88 -56.5q-52 -19.5 -117 -19.5q-75 0 -134 10.5q-59 10.5 -91 23.5zM212 119q20 -10 42.5 -12.5q22.5 -2.5 48.5 -2.5q130 0 130 170q0 72 -27 109.5q-27 37.5 -80 37.5q-45 0 -72.5 -21q-27.5 -21 -41.5 -62zM377 729h142v-29l-126 -129l-76 0z" />
-<glyph unicode="&#62600;" horiz-adv-x="551" d="M65 700h451v-130h-303v-163h279v-130h-279v-277h-148zM315 870h172v-31l-174 -87l-112 0z" />
-<glyph unicode="&#62601;" horiz-adv-x="370" d="M16 525h79v33q0 46 14 75.5q14 29.5 38 47q24 17.5 55.5 24.5q31.5 7 65.5 7q48 0 83.5 -4.5q35.5 -4.5 66.5 -14.5l-26 -109q-25 8 -45 11q-20 3 -43 3q-43 0 -56 -16q-13 -16 -13 -57l128 0v-117h-128v-408h-140v408h-79zM303 870h172v-31l-174 -87l-112 0z" />
-<glyph unicode="&#62622;" horiz-adv-x="654" d="M-21 609h84v91h148v-91h241v-96h-241v-94q28 16 75.5 28.5q47.5 12.5 112.5 12.5q45 0 82.5 -11q37.5 -11 65.5 -34.5q28 -23.5 43.5 -60q15.5 -36.5 15.5 -87.5v-267h-148v218q0 59 -26.5 88.5q-26.5 29.5 -84.5 29.5q-42 0 -78.5 -8.5q-36.5 -8.5 -57.5 -25.5l0 -302h-148v513l-84 0z" />
-<glyph unicode="&#62623;" horiz-adv-x="652" d="M0 642h86v58h140v-58h171v-83h-171v-98h12q27 35 67.5 57q40.5 22 102.5 22q43 0 75 -10.5q32 -10.5 53.5 -36q21.5 -25.5 32.5 -68q11 -42.5 11 -105.5v-320h-140v289q0 68 -20.5 97.5q-20.5 29.5 -75.5 29.5q-40 0 -73.5 -25.5q-33.5 -25.5 -44.5 -67.5l0 -323h-140v559l-86 0z" />
-<glyph unicode="&#62662;" horiz-adv-x="657" d="M196 700v-216q0 -58 26 -89q26 -31 85 -31q42 0 79 8.5q37 8.5 58 25.5l0 302h148v-711q0 -91 -38 -144q-38 -53 -125 -53q-16 0 -33 2q-17 2 -37 6l0 116q28 -3 44.5 2q16.5 5 25.5 16q9 11 12 28q3 17 3 38v280q-27 -15 -75.5 -27.5q-48.5 -12.5 -114.5 -12.5q-46 0 -84 11.5q-38 11.5 -65 35.5q-27 24 -42 61q-15 37 -15 88l0 264z" />
-<glyph unicode="&#62663;" horiz-adv-x="582" d="M182 525v-103q0 -38 3.5 -64.5q3.5 -26.5 12.5 -43.5q9 -17 26 -24.5q17 -7.5 44 -7.5q33 0 59 8.5q26 8.5 43 20.5l0 214h140v-540q0 -94 -38.5 -143.5q-38.5 -49.5 -123.5 -49.5q-16 0 -33.5 1.5q-17.5 1.5 -37.5 5.5l0 117q29 -3 47 2q18 5 28.5 16q10.5 11 14 27.5q3.5 16.5 3.5 38.5v214q-11 -7 -25 -15.5q-14 -8.5 -33 -16q-19 -7.5 -43 -12.5q-24 -5 -53 -5q-41 0 -73.5 8.5q-32.5 8.5 -55 30q-22.5 21.5 -34 57q-11.5 35.5 -11.5 89.5l0 175z" />
-<glyph unicode="&#62668;" horiz-adv-x="616" d="M318 395l22 -89h7l17 93l114 301h155l-203 -487q-23 -56 -46 -97q-23 -41 -49 -68.5q-26 -27.5 -58 -41q-32 -13.5 -74 -13.5q-36 0 -57 4q-21 4 -47 20l37 119q19 -9 34.5 -11q15.5 -2 32.5 -2q52 0 72 70l-285 507h174zM327 870h172v-31l-174 -87l-112 0z" />
-<glyph unicode="&#62669;" horiz-adv-x="541" d="M264 234l22 -84h10l19 84l89 291h143l-174 -475q-22 -59 -41.5 -106q-19.5 -47 -42.5 -80q-23 -33 -51.5 -50.5q-28.5 -17.5 -67.5 -17.5q-26 0 -49.5 4.5q-23.5 4.5 -40.5 13.5l29 108q15 -5 31 -5q14 0 27 3q13 3 24 11.5q11 8.5 20.5 24q9.5 15.5 16.5 41.5l-240 528h169zM299 729h142v-29l-126 -129l-76 0z" />
-<glyph unicode="&#62678;" horiz-adv-x="621" d="M140 414h292q-3 36 -17.5 67.5q-14.5 31.5 -39.5 54q-25 22.5 -61 35.5q-36 13 -83 13q-61 0 -105 -12.5q-44 -12.5 -69 -26.5l-32 125q18 9 42.5 17q24.5 8 52 14q27.5 6 56.5 9.5q29 3.5 57 3.5q75 0 138.5 -19q63.5 -19 110 -62q46.5 -43 73 -112.5q26.5 -69.5 26.5 -170.5q0 -105 -31.5 -175q-31.5 -70 -83 -112q-51.5 -42 -118 -59.5q-66.5 -17.5 -136.5 -17.5q-62 0 -112 10.5q-50 10.5 -80 23.5l39 127q25 -12 67.5 -21.5q42.5 -9.5 98.5 -9.5q42 0 78 10.5q36 10.5 63.5 32.5q27.5 22 44.5 56q17 34 22 82l-293 0zM159 799q0 25 23.5 43q23.5 18 70.5 18q47 0 71.5 -18q24.5 -18 24.5 -43q0 -27 -24.5 -45q-24.5 -18 -71.5 -18q-47 0 -70.5 18t-23.5 45z" />
-<glyph unicode="&#62679;" horiz-adv-x="527" d="M129 315h215q-7 52 -39.5 80q-32.5 28 -98.5 28q-43 0 -76 -10q-33 -10 -59 -22l-38 100q73 49 201 49q127 0 189 -70.5q62 -70.5 62 -207.5q0 -138 -70 -207.5q-70 -69.5 -191 -69.5q-53 0 -107.5 10q-54.5 10 -86.5 30l34 108q27 -14 62.5 -22.5q35.5 -8.5 71.5 -8.5q39 0 66 7q27 7 44.5 21.5q17.5 14.5 26 36q8.5 21.5 10.5 51.5l-216 0zM130 656q0 32 23 53.5q23 21.5 65 21.5q43 0 68 -22q25 -22 25 -53q0 -29 -25 -50q-25 -21 -68 -21q-42 0 -65 21t-23 50z" />
-<glyph unicode="&#62730;" horiz-adv-x="570" d="M128 307v113h26q10 0 24.5 0q14.5 0 30 0.5q15.5 0.5 30 2q14.5 1.5 23.5 3.5q38 7 63.5 25.5q25.5 18.5 25.5 53.5q0 45 -32.5 61q-32.5 16 -86.5 16q-24 0 -47.5 -3.5q-23.5 -3.5 -44 -9.5q-20.5 -6 -37.5 -12.5q-17 -6.5 -28 -12.5l-37 126q11 5 32.5 12.5q21.5 7.5 50.5 14q29 6.5 63 11q34 4.5 69 4.5q48 0 93.5 -8q45.5 -8 81.5 -28q36 -20 58 -54q22 -34 22 -86q0 -51 -30 -95q-30 -44 -96 -64l0 -6q70 -11 109.5 -55q39.5 -44 39.5 -116q0 -48 -18.5 -84.5q-18.5 -36.5 -50 -62.5q-31.5 -26 -73 -41.5q-41.5 -15.5 -87.5 -21.5l-15 -164h-95l-21 163q-50 5 -90 15q-40 10 -63 21l38 128q25 -11 72.5 -24q47.5 -13 113.5 -13q23 0 46.5 5q23.5 5 42.5 16.5q19 11.5 31 29.5q12 18 12 45q0 23 -8.5 40q-8.5 17 -29 28.5q-20.5 11.5 -55 18q-34.5 6.5 -85.5 7.5q-13 0 -19.5 0.5q-6.5 0.5 -22.5 0.5z" />
-<glyph unicode="&#62731;" horiz-adv-x="486" d="M125 218v94h65q45 0 71 14.5q26 14.5 26 39.5q0 29 -23 40.5q-23 11.5 -72 11.5q-43 0 -78.5 -10.5q-35.5 -10.5 -58.5 -21.5q-8 27 -13.5 51.5q-5.5 24.5 -13.5 51.5q33 20 89 33q56 13 119 13q97 0 144.5 -33.5q47.5 -33.5 47.5 -96.5q0 -18 -5.5 -36q-5.5 -18 -16.5 -34.5q-11 -16.5 -28 -30q-17 -13.5 -40 -21.5l0 -8q62 -13 87 -44.5q25 -31.5 25 -84.5q0 -56 -43.5 -99.5q-43.5 -43.5 -133.5 -55.5l-15 -165h-95l-21 166q-38 6 -67.5 16q-29.5 10 -50.5 21q7 27 15 54q8 27 16 54q27 -14 65.5 -23.5q38.5 -9.5 83.5 -9.5q106 0 106 61q0 14 -6.5 24q-6.5 10 -21.5 16.5q-15 6.5 -40.5 9.5q-25.5 3 -64.5 3z" />
-<glyph unicode="&#62732;" horiz-adv-x="607" d="M579 30q-27 -19 -68 -29q-41 -10 -87 -13l-24 -40q48 -3 75.5 -21q27.5 -18 27.5 -56q0 -24 -12.5 -41.5q-12.5 -17.5 -34.5 -29.5q-22 -12 -51 -18q-29 -6 -63 -6q-18 0 -36 1q-18 1 -37 5l10 47q31 -2 50 0.5q19 2.5 29.5 7q10.5 4.5 14 11q3.5 6.5 3.5 14.5q0 17 -23 26q-23 9 -74 11l58 90q-60 6 -114 29q-54 23 -94.5 67q-40.5 44 -64.5 109.5q-24 65.5 -24 155.5q0 102 32 171.5q32 69.5 82 112q50 42.5 111 61.5q61 19 120 19q65 0 109.5 -8q44.5 -8 73.5 -19v-124q-54 11 -87.5 16q-33.5 5 -84.5 5q-45 0 -81.5 -14.5q-36.5 -14.5 -62.5 -43.5q-26 -29 -40.5 -73q-14.5 -44 -14.5 -103q0 -52 13 -95q13 -43 39 -74q26 -31 66 -48q40 -17 93 -17q49 0 82.5 9q33.5 9 59.5 23z" />
-<glyph unicode="&#62733;" horiz-adv-x="500" d="M468 32q-26 -17 -61 -28q-35 -11 -73 -16l-24 -40q48 -3 75.5 -21q27.5 -18 27.5 -56q0 -24 -12.5 -41.5q-12.5 -17.5 -34.5 -29.5q-22 -12 -51 -18q-29 -6 -63 -6q-18 0 -36 1q-18 1 -37 5l10 47q31 -2 50 0.5q19 2.5 29.5 7q10.5 4.5 14 11q3.5 6.5 3.5 14.5q0 17 -23 26q-23 9 -74 11l57 89q-56 6 -94.5 28.5q-38.5 22.5 -63 58q-24.5 35.5 -35.5 83q-11 47.5 -11 104.5q0 131 64.5 204.5q64.5 73.5 187.5 73.5q60 0 98.5 -9.5q38.5 -9.5 68.5 -24.5l-34 -112q-26 11 -51.5 16.5q-25.5 5.5 -59.5 5.5q-63 0 -96.5 -36.5q-33.5 -36.5 -33.5 -117.5q0 -32 8 -59.5q8 -27.5 25 -48.5q17 -21 43 -33q26 -12 61 -12q42 0 66.5 7.5q24.5 7.5 46.5 20.5z" />
-<glyph unicode="&#62734;" horiz-adv-x="658" d="M441 149h-236l-57 -149h-148l274 705h109l275 -705h-157zM246 266h160l-54 146l-24 111h-5l-24 -112zM143 848h373v-92l-373 0z" />
-<glyph unicode="&#62735;" horiz-adv-x="579" d="M67 489q45 20 110.5 33q65.5 13 135.5 13q55 0 92.5 -13q37.5 -13 59.5 -37.5q22 -24.5 31.5 -59q9.5 -34.5 9.5 -76.5q0 -51 -4 -101q-4 -50 -4 -106q0 -38 5 -74q5 -36 16 -69l-114 0l-23 78h-12q-26 -35 -66 -60q-40 -25 -103 -25q-38 0 -69.5 11q-31.5 11 -54 31.5q-22.5 20.5 -35 48.5q-12.5 28 -12.5 61q0 89 59.5 134.5q59.5 45.5 180.5 45.5q28 0 56 -4.5q28 -4.5 39 -6.5q3 21 3 36q0 38 -19 56q-19 18 -71 18q-48 0 -93.5 -11.5q-45.5 -11.5 -80.5 -28.5zM250 104q47 0 75 22q28 22 41 46l0 60q-5 2 -15.5 4q-10.5 2 -23 4q-12.5 2 -25 3q-12.5 1 -22.5 1q-54 0 -80 -19.5q-26 -19.5 -26 -48.5q0 -36 20.5 -54q20.5 -18 55.5 -18zt0 0zM106 679h351v-95l-351 0z" />
-<glyph unicode="&#62736;" horiz-adv-x="566" d="M65 700h451v-130h-303v-152h275v-130h-275v-158h308v-130h-456zM107 848h373v-92l-373 0z" />
-<glyph unicode="&#62737;" horiz-adv-x="594" d="M521 48q-34 -26 -92.5 -44.5q-58.5 -18.5 -125.5 -18.5q-135 0 -198 74q-63 74 -63 203q0 137 71 207.5q71 70.5 200 70.5q42 0 83 -10.5q41 -10.5 73 -35q32 -24.5 51.5 -66q19.5 -41.5 19.5 -102.5q0 -21 -2.5 -46q-2.5 -25 -8.5 -52l-350 0q5 -68 39.5 -100.5q34.5 -32.5 112.5 -32.5q47 0 84.5 13.5q37.5 13.5 57.5 27.5zM311 430q-62 0 -92 -33.5q-30 -33.5 -35 -85.5l226 0q4 55 -20 87q-24 32 -79 32zt0 0zM117 679h351v-95l-351 0z" />
-<glyph unicode="&#62738;" horiz-adv-x="566" d="M65 700h451v-130h-303v-152h275v-130h-275v-158h308v-130h-456zM89 788q0 27 19.5 43.5q19.5 16.5 63.5 16.5q42 0 61.5 -16.5q19.5 -16.5 19.5 -43.5q0 -26 -19.5 -41.5q-19.5 -15.5 -61.5 -15.5q-44 0 -63.5 15.5q-19.5 15.5 -19.5 41.5zt0 0zM322 788q0 27 19.5 43.5q19.5 16.5 61.5 16.5q44 0 63.5 -16.5q19.5 -16.5 19.5 -43.5q0 -26 -19.5 -41.5q-19.5 -15.5 -63.5 -15.5q-42 0 -61.5 15.5q-19.5 15.5 -19.5 41.5zt0 0zM100 968h373v-92l-373 0z" />
-<glyph unicode="&#62739;" horiz-adv-x="594" d="M521 48q-34 -26 -92.5 -44.5q-58.5 -18.5 -125.5 -18.5q-135 0 -198 74q-63 74 -63 203q0 137 71 207.5q71 70.5 200 70.5q42 0 83 -10.5q41 -10.5 73 -35q32 -24.5 51.5 -66q19.5 -41.5 19.5 -102.5q0 -21 -2.5 -46q-2.5 -25 -8.5 -52l-350 0q5 -68 39.5 -100.5q34.5 -32.5 112.5 -32.5q47 0 84.5 13.5q37.5 13.5 57.5 27.5zM311 430q-62 0 -92 -33.5q-30 -33.5 -35 -85.5l226 0q4 55 -20 87q-24 32 -79 32zt0 0zM96 647q0 35 21.5 56q21.5 21 55.5 21q34 0 54.5 -21q20.5 -21 20.5 -56q0 -30 -20.5 -51q-20.5 -21 -54.5 -21q-34 0 -55.5 21q-21.5 21 -21.5 51zt0 0zM349 647q0 35 20.5 56q20.5 21 54.5 21q35 0 55.5 -21q20.5 -21 20.5 -56q0 -30 -20.5 -51q-20.5 -21 -55.5 -21q-34 0 -54.5 21q-20.5 21 -20.5 51zt0 0zM108 848h373v-92l-373 0z" />
-<glyph unicode="&#62740;" horiz-adv-x="566" d="M65 700h451v-130h-303v-152h275v-130h-275v-158h308v-130h-456zM89 798q0 27 19.5 43.5q19.5 16.5 63.5 16.5q42 0 61.5 -16.5q19.5 -16.5 19.5 -43.5q0 -26 -19.5 -41.5q-19.5 -15.5 -61.5 -15.5q-44 0 -63.5 15.5q-19.5 15.5 -19.5 41.5zt0 0zM322 798q0 27 19.5 43.5q19.5 16.5 61.5 16.5q44 0 63.5 -16.5q19.5 -16.5 19.5 -43.5q0 -26 -19.5 -41.5q-19.5 -15.5 -63.5 -15.5q-42 0 -61.5 15.5q-19.5 15.5 -19.5 41.5zt0 0zM213 1015q5 -31 26 -44q21 -13 55 -13q72 0 81 56l121 -17q-12 -65 -63 -93.5q-51 -28.5 -140 -28.5q-44 0 -81 5.5q-37 5.5 -65 19.5q-28 14 -45.5 36.5q-17.5 22.5 -22.5 57.5z" />
-<glyph unicode="&#62741;" horiz-adv-x="594" d="M521 48q-34 -26 -92.5 -44.5q-58.5 -18.5 -125.5 -18.5q-135 0 -198 74q-63 74 -63 203q0 137 71 207.5q71 70.5 200 70.5q42 0 83 -10.5q41 -10.5 73 -35q32 -24.5 51.5 -66q19.5 -41.5 19.5 -102.5q0 -21 -2.5 -46q-2.5 -25 -8.5 -52l-350 0q5 -68 39.5 -100.5q34.5 -32.5 112.5 -32.5q47 0 84.5 13.5q37.5 13.5 57.5 27.5zM311 430q-62 0 -92 -33.5q-30 -33.5 -35 -85.5l226 0q4 55 -20 87q-24 32 -79 32zt0 0zM96 647q0 35 21.5 56q21.5 21 55.5 21q34 0 54.5 -21q20.5 -21 20.5 -56q0 -30 -20.5 -51q-20.5 -21 -54.5 -21q-34 0 -55.5 21q-21.5 21 -21.5 51zt0 0zM349 647q0 35 20.5 56q20.5 21 54.5 21q35 0 55.5 -21q20.5 -21 20.5 -56q0 -30 -20.5 -51q-20.5 -21 -55.5 -21q-34 0 -54.5 21q-20.5 21 -20.5 51zt0 0zM222 875q5 -31 26 -44q21 -13 55 -13q72 0 81 56l121 -17q-12 -65 -63 -93.5q-51 -28.5 -140 -28.5q-44 0 -81 5.5q-37 5.5 -65 19.5q-28 14 -45.5 36.5q-17.5 22.5 -22.5 57.5z" />
-<glyph unicode="&#62742;" horiz-adv-x="570" d="M128 307v113h26q10 0 24.5 0q14.5 0 30 0.5q15.5 0.5 30 2q14.5 1.5 23.5 3.5q38 7 63.5 25.5q25.5 18.5 25.5 53.5q0 45 -32.5 61q-32.5 16 -86.5 16q-24 0 -47.5 -3.5q-23.5 -3.5 -44 -9.5q-20.5 -6 -37.5 -12.5q-17 -6.5 -28 -12.5l-37 126q11 5 32.5 12.5q21.5 7.5 50.5 14q29 6.5 63 11q34 4.5 69 4.5q48 0 93.5 -8q45.5 -8 81.5 -28q36 -20 58 -54q22 -34 22 -86q0 -51 -30 -95q-30 -44 -96 -64l0 -6q70 -11 109.5 -55q39.5 -44 39.5 -116q0 -56 -25 -96.5q-25 -40.5 -65.5 -66.5q-40.5 -26 -93 -38.5q-52.5 -12.5 -107.5 -12.5q-36 0 -69.5 3.5q-33.5 3.5 -62.5 8.5q-29 5 -52 12q-23 7 -38 15l38 128q25 -11 72.5 -24q47.5 -13 113.5 -13q23 0 46.5 5q23.5 5 42.5 16.5q19 11.5 31 29.5q12 18 12 45q0 23 -8.5 40q-8.5 17 -29 28.5q-20.5 11.5 -55 18q-34.5 6.5 -85.5 7.5q-13 0 -19.5 0.5q-6.5 0.5 -22.5 0.5zM310 736h-102l-138 93v41h114l57 -44l21 -30l22 29l62 45h109l0 -42z" />
-<glyph unicode="&#62743;" horiz-adv-x="486" d="M125 218v94h65q45 0 71 14.5q26 14.5 26 39.5q0 29 -23 40.5q-23 11.5 -72 11.5q-43 0 -78.5 -10.5q-35.5 -10.5 -58.5 -21.5q-8 27 -13.5 51.5q-5.5 24.5 -13.5 51.5q33 20 89 33q56 13 119 13q97 0 144.5 -33.5q47.5 -33.5 47.5 -96.5q0 -18 -5.5 -36q-5.5 -18 -16.5 -34.5q-11 -16.5 -28 -30q-17 -13.5 -40 -21.5l0 -8q62 -13 87 -44.5q25 -31.5 25 -84.5q0 -33 -14.5 -61.5q-14.5 -28.5 -44.5 -50.5q-30 -22 -75.5 -34.5q-45.5 -12.5 -107.5 -12.5q-60 0 -107 13q-47 13 -77 29q7 27 15 54q8 27 16 54q27 -14 65.5 -23.5q38.5 -9.5 83.5 -9.5q106 0 106 61q0 14 -6.5 24q-6.5 10 -21.5 16.5q-15 6.5 -40.5 9.5q-25.5 3 -64.5 3zM272 584h-99l-129 188h116l43 -69l25 -63l24 62l50 70l108 0z" />
-<glyph unicode="&#62744;" horiz-adv-x="727" d="M40 350q0 86 22 154q22 68 63.5 114.5q41.5 46.5 101.5 71q60 24.5 136 24.5q81 0 141.5 -26.5q60.5 -26.5 101 -74.5q40.5 -48 61 -115q20.5 -67 20.5 -148q0 -86 -22.5 -154q-22.5 -68 -64.5 -114.5q-42 -46.5 -102 -71q-60 -24.5 -135 -24.5q-81 0 -141.5 26.5q-60.5 26.5 -101 74.5q-40.5 48 -60.5 115q-20 67 -20 148zt0 0zM197 350q0 -52 10 -95q10 -43 30 -74q20 -31 51.5 -48q31.5 -17 74.5 -17q79 0 123 54q44 54 44 180q0 50 -9 93q-9 43 -29.5 74.5q-20.5 31.5 -52 49q-31.5 17.5 -76.5 17.5q-78 0 -122 -56q-44 -56 -44 -178zt0 0zM181 848h373v-92l-373 0z" />
-<glyph unicode="&#62745;" horiz-adv-x="616" d="M42 262q0 130 69 204q69 74 197 74q67 0 117 -21q50 -21 83 -58.5q33 -37.5 49.5 -88q16.5 -50.5 16.5 -110.5q0 -64 -18 -115.5q-18 -51.5 -52 -87.5q-34 -36 -83.5 -55q-49.5 -19 -112.5 -19q-68 0 -118 21q-50 21 -83 58.5q-33 37.5 -49 88q-16 50.5 -16 109.5zt0 0zM186 262q0 -33 7 -62q7 -29 21.5 -50.5q14.5 -21.5 37.5 -34.5q23 -13 56 -13q122 0 122 160q0 35 -6.5 64.5q-6.5 29.5 -21 51q-14.5 21.5 -38 33.5q-23.5 12 -56.5 12q-57 0 -89.5 -38q-32.5 -38 -32.5 -123zt0 0zM133 679h351v-95l-351 0z" />
-<glyph unicode="&#62746;" horiz-adv-x="727" d="M40 350q0 86 22 154q22 68 63.5 114.5q41.5 46.5 101.5 71q60 24.5 136 24.5q81 0 141.5 -26.5q60.5 -26.5 101 -74.5q40.5 -48 61 -115q20.5 -67 20.5 -148q0 -86 -22.5 -154q-22.5 -68 -64.5 -114.5q-42 -46.5 -102 -71q-60 -24.5 -135 -24.5q-81 0 -141.5 26.5q-60.5 26.5 -101 74.5q-40.5 48 -60.5 115q-20 67 -20 148zt0 0zM197 350q0 -52 10 -95q10 -43 30 -74q20 -31 51.5 -48q31.5 -17 74.5 -17q79 0 123 54q44 54 44 180q0 50 -9 93q-9 43 -29.5 74.5q-20.5 31.5 -52 49q-31.5 17.5 -76.5 17.5q-78 0 -122 -56q-44 -56 -44 -178zt0 0zM289 875q5 -31 26 -44q21 -13 55 -13q72 0 81 56l121 -17q-12 -65 -63 -93.5q-51 -28.5 -140 -28.5q-44 0 -81 5.5q-37 5.5 -65 19.5q-28 14 -45.5 36.5q-17.5 22.5 -22.5 57.5z" />
-<glyph unicode="&#62747;" horiz-adv-x="616" d="M42 262q0 130 69 204q69 74 197 74q67 0 117 -21q50 -21 83 -58.5q33 -37.5 49.5 -88q16.5 -50.5 16.5 -110.5q0 -64 -18 -115.5q-18 -51.5 -52 -87.5q-34 -36 -83.5 -55q-49.5 -19 -112.5 -19q-68 0 -118 21q-50 21 -83 58.5q-33 37.5 -49 88q-16 50.5 -16 109.5zt0 0zM186 262q0 -33 7 -62q7 -29 21.5 -50.5q14.5 -21.5 37.5 -34.5q23 -13 56 -13q122 0 122 160q0 35 -6.5 64.5q-6.5 29.5 -21 51q-14.5 21.5 -38 33.5q-23.5 12 -56.5 12q-57 0 -89.5 -38q-32.5 -38 -32.5 -123zt0 0zM236 742q8 -42 28 -57q20 -15 52 -15q33 0 52.5 15.5q19.5 15.5 27.5 55.5l104 -27q-13 -66 -65 -99q-52 -33 -124 -33q-35 0 -66.5 7q-31.5 7 -57.5 23q-26 16 -44.5 41q-18.5 25 -25.5 61z" />
-<glyph unicode="&#62748;" horiz-adv-x="727" d="M40 350q0 86 22 154q22 68 63.5 114.5q41.5 46.5 101.5 71q60 24.5 136 24.5q81 0 141.5 -26.5q60.5 -26.5 101 -74.5q40.5 -48 61 -115q20.5 -67 20.5 -148q0 -86 -22.5 -154q-22.5 -68 -64.5 -114.5q-42 -46.5 -102 -71q-60 -24.5 -135 -24.5q-81 0 -141.5 26.5q-60.5 26.5 -101 74.5q-40.5 48 -60.5 115q-20 67 -20 148zt0 0zM363 116q69 0 111.5 41q42.5 41 52.5 136l-327 0q10 -81 49.5 -129q39.5 -48 113.5 -48zt0 0zM363 584q-68 0 -110 -41.5q-42 -41.5 -53 -132.5l326 0q-5 39 -17 71q-12 32 -31.5 55q-19.5 23 -48 35.5q-28.5 12.5 -66.5 12.5zt0 0zM289 875q5 -31 26 -44q21 -13 55 -13q72 0 81 56l121 -17q-12 -65 -63 -93.5q-51 -28.5 -140 -28.5q-44 0 -81 5.5q-37 5.5 -65 19.5q-28 14 -45.5 36.5q-17.5 22.5 -22.5 57.5z" />
-<glyph unicode="&#62749;" horiz-adv-x="616" d="M42 262q0 133 69 205.5q69 72.5 197 72.5q67 0 117 -20.5q50 -20.5 83 -57q33 -36.5 49.5 -88q16.5 -51.5 16.5 -112.5q0 -131 -69 -204q-69 -73 -197 -73q-68 0 -118 20.5q-50 20.5 -83 57q-33 36.5 -49 87.5q-16 51 -16 112zt0 0zM430 304q-18 119 -122 119q-45 0 -80 -27.5q-35 -27.5 -42 -91.5zM186 219q7 -55 40.5 -86q33.5 -31 81.5 -31q47 0 80.5 26.5q33.5 26.5 41.5 90.5zM236 742q8 -42 28 -57q20 -15 52 -15q33 0 52.5 15.5q19.5 15.5 27.5 55.5l104 -27q-13 -66 -65 -99q-52 -33 -124 -33q-35 0 -66.5 7q-31.5 7 -57.5 23q-26 16 -44.5 41q-18.5 25 -25.5 61z" />
-<glyph unicode="&#62750;" horiz-adv-x="727" d="M40 350q0 86 22 154q22 68 63.5 114.5q41.5 46.5 101.5 71q60 24.5 136 24.5q81 0 141.5 -26.5q60.5 -26.5 101 -74.5q40.5 -48 61 -115q20.5 -67 20.5 -148q0 -86 -22.5 -154q-22.5 -68 -64.5 -114.5q-42 -46.5 -102 -71q-60 -24.5 -135 -24.5q-81 0 -141.5 26.5q-60.5 26.5 -101 74.5q-40.5 48 -60.5 115q-20 67 -20 148zt0 0zM363 116q69 0 111.5 41q42.5 41 52.5 136l-327 0q10 -81 49.5 -129q39.5 -48 113.5 -48zt0 0zM363 584q-68 0 -110 -41.5q-42 -41.5 -53 -132.5l326 0q-5 39 -17 71q-12 32 -31.5 55q-19.5 23 -48 35.5q-28.5 12.5 -66.5 12.5zt0 0zM166 798q0 27 19.5 43.5q19.5 16.5 63.5 16.5q42 0 61.5 -16.5q19.5 -16.5 19.5 -43.5q0 -26 -19.5 -41.5q-19.5 -15.5 -61.5 -15.5q-44 0 -63.5 15.5q-19.5 15.5 -19.5 41.5zt0 0zM399 798q0 27 19.5 43.5q19.5 16.5 61.5 16.5q44 0 63.5 -16.5q19.5 -16.5 19.5 -43.5q0 -26 -19.5 -41.5q-19.5 -15.5 -63.5 -15.5q-42 0 -61.5 15.5q-19.5 15.5 -19.5 41.5zt0 0zM289 1015q5 -31 26 -44q21 -13 55 -13q72 0 81 56l121 -17q-12 -65 -63 -93.5q-51 -28.5 -140 -28.5q-44 0 -81 5.5q-37 5.5 -65 19.5q-28 14 -45.5 36.5q-17.5 22.5 -22.5 57.5z" />
-<glyph unicode="&#62751;" horiz-adv-x="616" d="M42 262q0 133 69 205.5q69 72.5 197 72.5q67 0 117 -20.5q50 -20.5 83 -57q33 -36.5 49.5 -88q16.5 -51.5 16.5 -112.5q0 -131 -69 -204q-69 -73 -197 -73q-68 0 -118 20.5q-50 20.5 -83 57q-33 36.5 -49 87.5q-16 51 -16 112zt0 0zM430 304q-18 119 -122 119q-45 0 -80 -27.5q-35 -27.5 -42 -91.5zM186 219q7 -55 40.5 -86q33.5 -31 81.5 -31q47 0 80.5 26.5q33.5 26.5 41.5 90.5zM106 621q0 35 21.5 56q21.5 21 55.5 21q34 0 54.5 -21q20.5 -21 20.5 -56q0 -30 -20.5 -51q-20.5 -21 -54.5 -21q-34 0 -55.5 21q-21.5 21 -21.5 51zt0 0zM359 621q0 35 20.5 56q20.5 21 54.5 21q35 0 55.5 -21q20.5 -21 20.5 -56q0 -30 -20.5 -51q-20.5 -21 -55.5 -21q-34 0 -54.5 21q-20.5 21 -20.5 51zt0 0zM234 858q5 -31 26 -44q21 -13 55 -13q72 0 81 56l121 -17q-12 -65 -63 -93.5q-51 -28.5 -140 -28.5q-44 0 -81 5.5q-37 5.5 -65 19.5q-28 14 -45.5 36.5q-17.5 22.5 -22.5 57.5z" />
-<glyph unicode="&#62752;" horiz-adv-x="865" d="M652 700h148v-700h-148zM65 700h148v-249q11 2 36.5 5q25.5 3 51.5 3q54 0 103.5 -10.5q49.5 -10.5 87 -36q37.5 -25.5 59.5 -69.5q22 -44 22 -110q0 -121 -78 -182q-78 -61 -228 -61q-15 0 -39 0.5q-24 0.5 -52 2.5q-28 2 -57 5q-29 3 -54 9zM277 120q61 0 100 25q39 25 39 83q0 31 -11 50.5q-11 19.5 -29.5 31q-18.5 11.5 -44 15.5q-25.5 4 -53.5 4q-7 0 -16.5 -1q-9.5 -1 -19 -2q-9.5 -1 -17.5 -2.5q-8 -1.5 -12 -2.5l0 -196q25 -5 64 -5zt0 0zM247 848h373v-92l-373 0z" />
-<glyph unicode="&#62753;" horiz-adv-x="815" d="M212 117q19 -4 37.5 -5.5q18.5 -1.5 34.5 -1.5q54 0 77 17q23 17 23 55q0 32 -23 49.5q-23 17.5 -73 17.5q-42 0 -76 -9zM212 337q31 5 61.5 7q30.5 2 51.5 2q57 0 95.5 -12.5q38.5 -12.5 62.5 -34.5q24 -22 34.5 -52q10.5 -30 10.5 -64q0 -47 -13.5 -82.5q-13.5 -35.5 -44 -59.5q-30.5 -24 -79 -36q-48.5 -12 -118.5 -12q-66 0 -113.5 1.5q-47.5 1.5 -87.5 4.5l0 526h140zM603 525h140v-525h-140zM213 679h351v-95l-351 0z" />
-<glyph unicode="&#62754;" horiz-adv-x="621" d="M140 414h292q-3 36 -17.5 67.5q-14.5 31.5 -39.5 54q-25 22.5 -61 35.5q-36 13 -83 13q-61 0 -105 -12.5q-44 -12.5 -69 -26.5l-32 125q18 9 42.5 17q24.5 8 52 14q27.5 6 56.5 9.5q29 3.5 57 3.5q75 0 138.5 -19q63.5 -19 110 -62q46.5 -43 73 -112.5q26.5 -69.5 26.5 -170.5q0 -105 -31.5 -175q-31.5 -70 -83 -112q-51.5 -42 -118 -59.5q-66.5 -17.5 -136.5 -17.5q-62 0 -112 10.5q-50 10.5 -80 23.5l39 127q25 -12 67.5 -21.5q42.5 -9.5 98.5 -9.5q42 0 78 10.5q36 10.5 63.5 32.5q27.5 22 44.5 56q17 34 22 82l-293 0zM74 848h373v-92l-373 0z" />
-<glyph unicode="&#62755;" horiz-adv-x="527" d="M129 315h215q-7 52 -39.5 80q-32.5 28 -98.5 28q-43 0 -76 -10q-33 -10 -59 -22l-38 100q73 49 201 49q127 0 189 -70.5q62 -70.5 62 -207.5q0 -138 -70 -207.5q-70 -69.5 -191 -69.5q-53 0 -107.5 10q-54.5 10 -86.5 30l34 108q27 -14 62.5 -22.5q35.5 -8.5 71.5 -8.5q39 0 66 7q27 7 44.5 21.5q17.5 14.5 26 36q8.5 21.5 10.5 51.5l-216 0zM55 679h351v-95l-351 0z" />
-<glyph unicode="&#62756;" horiz-adv-x="621" d="M140 414h292q-3 36 -17.5 67.5q-14.5 31.5 -39.5 54q-25 22.5 -61 35.5q-36 13 -83 13q-61 0 -105 -12.5q-44 -12.5 -69 -26.5l-32 125q18 9 42.5 17q24.5 8 52 14q27.5 6 56.5 9.5q29 3.5 57 3.5q75 0 138.5 -19q63.5 -19 110 -62q46.5 -43 73 -112.5q26.5 -69.5 26.5 -170.5q0 -105 -31.5 -175q-31.5 -70 -83 -112q-51.5 -42 -118 -59.5q-66.5 -17.5 -136.5 -17.5q-62 0 -112 10.5q-50 10.5 -80 23.5l39 127q25 -12 67.5 -21.5q42.5 -9.5 98.5 -9.5q42 0 78 10.5q36 10.5 63.5 32.5q27.5 22 44.5 56q17 34 22 82l-293 0zM180 875q5 -31 26 -44q21 -13 55 -13q72 0 81 56l121 -17q-12 -65 -63 -93.5q-51 -28.5 -140 -28.5q-44 0 -81 5.5q-37 5.5 -65 19.5q-28 14 -45.5 36.5q-17.5 22.5 -22.5 57.5z" />
-<glyph unicode="&#62757;" horiz-adv-x="527" d="M129 315h215q-7 52 -39.5 80q-32.5 28 -98.5 28q-43 0 -76 -10q-33 -10 -59 -22l-38 100q73 49 201 49q127 0 189 -70.5q62 -70.5 62 -207.5q0 -138 -70 -207.5q-70 -69.5 -191 -69.5q-53 0 -107.5 10q-54.5 10 -86.5 30l34 108q27 -14 62.5 -22.5q35.5 -8.5 71.5 -8.5q39 0 66 7q27 7 44.5 21.5q17.5 14.5 26 36q8.5 21.5 10.5 51.5l-216 0zM165 742q8 -42 28 -57q20 -15 52 -15q33 0 52.5 15.5q19.5 15.5 27.5 55.5l104 -27q-13 -66 -65 -99q-52 -33 -124 -33q-35 0 -66.5 7q-31.5 7 -57.5 23q-26 16 -44.5 41q-18.5 25 -25.5 61z" />
-<glyph unicode="&#62758;" horiz-adv-x="627" d="M577 30q-33 -23 -86 -33.5q-53 -10.5 -110 -10.5q-67 0 -128.5 20q-61.5 20 -109 64q-47.5 44 -75.5 113q-28 69 -28 167q0 102 32 171.5q32 69.5 82 112q50 42.5 111 61.5q61 19 120 19q65 0 108.5 -8q43.5 -8 72.5 -19v-124q-54 11 -86.5 16q-32.5 5 -83.5 5q-76 0 -127.5 -41q-51.5 -41 -66.5 -126l296 0v-117h-298q11 -83 63 -133.5q52 -50.5 144 -50.5q50 0 82.5 9q32.5 9 58.5 23zM173 798q0 27 19.5 43.5q19.5 16.5 63.5 16.5q42 0 61.5 -16.5q19.5 -16.5 19.5 -43.5q0 -26 -19.5 -41.5q-19.5 -15.5 -61.5 -15.5q-44 0 -63.5 15.5q-19.5 15.5 -19.5 41.5zt0 0zM406 798q0 27 19.5 43.5q19.5 16.5 61.5 16.5q44 0 63.5 -16.5q19.5 -16.5 19.5 -43.5q0 -26 -19.5 -41.5q-19.5 -15.5 -63.5 -15.5q-42 0 -61.5 15.5t-19.5 41.5z" />
-<glyph unicode="&#62759;" horiz-adv-x="524" d="M494 29q-35 -23 -86 -33.5q-51 -10.5 -102 -10.5q-68 0 -118 20q-50 20 -82.5 56.5q-32.5 36.5 -48 87.5q-15.5 51 -15.5 113q0 66 19 118q19 52 54.5 87.5q35.5 35.5 85 54q49.5 18.5 110.5 18.5q59 0 101 -10q42 -10 72 -24q-8 -29 -16.5 -57q-8.5 -28 -16.5 -57q-25 11 -54.5 17.5q-29.5 6.5 -61.5 6.5q-55 0 -93.5 -25q-38.5 -25 -51.5 -79l223 0v-92h-223q10 -48 46.5 -79.5q36.5 -31.5 106.5 -31.5q40 0 68 8.5q28 8.5 48 22.5zM96 647q0 35 21.5 56q21.5 21 55.5 21q34 0 54.5 -21q20.5 -21 20.5 -56q0 -30 -20.5 -51q-20.5 -21 -54.5 -21q-34 0 -55.5 21q-21.5 21 -21.5 51zt0 0zM349 647q0 35 20.5 56q20.5 21 54.5 21q35 0 55.5 -21q20.5 -21 20.5 -56q0 -30 -20.5 -51q-20.5 -21 -55.5 -21q-34 0 -54.5 21t-20.5 51z" />
-<glyph unicode="&#62760;" horiz-adv-x="626" d="M562 0h-148v274l-78 -19l-160 -255h-173l156 229l66 45q-35 8 -65.5 24.5q-30.5 16.5 -53.5 42.5q-23 26 -36 61.5q-13 35.5 -13 80.5q0 63 24 106.5q24 43.5 66.5 70q42.5 26.5 101 38.5q58.5 12 126.5 12q18 0 42 -1q24 -1 49.5 -3q25.5 -2 50.5 -5q25 -3 45 -8zM358 580q-29 0 -55 -4.5q-26 -4.5 -46 -15.5q-20 -11 -31.5 -31.5q-11.5 -20.5 -11.5 -51.5q0 -30 11 -50.5q11 -20.5 30.5 -33q19.5 -12.5 46 -18q26.5 -5.5 56.5 -5.5h56v206q-12 2 -24 3q-12 1 -32 1zt0 0zM159 848h373v-92l-373 0z" />
-<glyph unicode="&#62761;" horiz-adv-x="589" d="M377 179l-79 -13l-109 -166h-171l113 161l59 24q-39 4 -65 20q-26 16 -42 39.5q-16 23.5 -22.5 52q-6.5 28.5 -6.5 58.5q0 95 68.5 140q68.5 45 211.5 45q51 0 99 -5q48 -5 84 -11l0 -524h-140zM377 267v145q-13 5 -30 8q-17 3 -33 3q-56 0 -85 -19.5q-29 -19.5 -29 -61.5q0 -41 32.5 -59q32.5 -18 97.5 -18zM127 679h351v-95l-351 0z" />
-<glyph unicode="&#62762;" horiz-adv-x="626" d="M562 0h-148v274l-78 -19l-160 -255h-173l156 229l66 45q-35 8 -65.5 24.5q-30.5 16.5 -53.5 42.5q-23 26 -36 61.5q-13 35.5 -13 80.5q0 63 24 106.5q24 43.5 66.5 70q42.5 26.5 101 38.5q58.5 12 126.5 12q18 0 42 -1q24 -1 49.5 -3q25.5 -2 50.5 -5q25 -3 45 -8zM358 580q-29 0 -55 -4.5q-26 -4.5 -46 -15.5q-20 -11 -31.5 -31.5q-11.5 -20.5 -11.5 -51.5q0 -30 11 -50.5q11 -20.5 30.5 -33q19.5 -12.5 46 -18q26.5 -5.5 56.5 -5.5h56v206q-12 2 -24 3q-12 1 -32 1zt0 0zM263 875q5 -31 26 -44q21 -13 55 -13q72 0 81 56l121 -17q-12 -65 -63 -93.5q-51 -28.5 -140 -28.5q-44 0 -81 5.5q-37 5.5 -65 19.5q-28 14 -45.5 36.5q-17.5 22.5 -22.5 57.5z" />
-<glyph unicode="&#62763;" horiz-adv-x="589" d="M377 179l-79 -13l-109 -166h-171l113 161l59 24q-39 4 -65 20q-26 16 -42 39.5q-16 23.5 -22.5 52q-6.5 28.5 -6.5 58.5q0 95 68.5 140q68.5 45 211.5 45q51 0 99 -5q48 -5 84 -11l0 -524h-140zM377 267v145q-13 5 -30 8q-17 3 -33 3q-56 0 -85 -19.5q-29 -19.5 -29 -61.5q0 -41 32.5 -59q32.5 -18 97.5 -18zM229 742q8 -42 28 -57q20 -15 52 -15q33 0 52.5 15.5q19.5 15.5 27.5 55.5l104 -27q-13 -66 -65 -99q-52 -33 -124 -33q-35 0 -66.5 7q-31.5 7 -57.5 23q-26 16 -44.5 41q-18.5 25 -25.5 61z" />
-<glyph unicode="&#62764;" horiz-adv-x="974" d="M213 419h103q14 141 92 218q78 77 214 77q81 0 140 -26.5q59 -26.5 97 -74.5q38 -48 56.5 -115q18.5 -67 18.5 -148q0 -174 -79.5 -269q-79.5 -95 -231.5 -95q-71 0 -125 22q-54 22 -92.5 61.5q-38.5 39.5 -61 95.5q-22.5 56 -28.5 124l-103 0v-289h-148v700h148zM466 350q0 -52 8 -95q8 -43 27 -74q19 -31 48.5 -48q29.5 -17 73.5 -17q79 0 116.5 54.5q37.5 54.5 37.5 179.5q0 50 -7 92.5q-7 42.5 -25 74q-18 31.5 -47.5 49.5q-29.5 18 -74.5 18q-79 0 -118 -56.5q-39 -56.5 -39 -177.5zt0 0zM301 848h373v-92l-373 0z" />
-<glyph unicode="&#62765;" horiz-adv-x="847" d="M556 -15q-63 0 -107.5 16q-44.5 16 -74 45.5q-29.5 29.5 -44.5 71.5q-15 42 -20 94l-98 0v-212h-140v525h140v-196h100q12 101 70 156q58 55 176 55q65 0 111.5 -20.5q46.5 -20.5 76.5 -57.5q30 -37 44.5 -88q14.5 -51 14.5 -112q0 -130 -61.5 -203.5q-61.5 -73.5 -187.5 -73.5zt0 0zM444 262q0 -75 24.5 -117.5q24.5 -42.5 88.5 -42.5q27 0 46.5 8.5q19.5 8.5 32.5 27.5q13 19 19 49.5q6 30.5 6 74.5q0 80 -23 120.5q-23 40.5 -86 40.5q-54 0 -81 -37q-27 -37 -27 -124zt0 0zM226 679h351v-95l-351 0z" />
-<glyph unicode="&#62766;" horiz-adv-x="974" d="M213 419h103q14 141 92 218q78 77 214 77q81 0 140 -26.5q59 -26.5 97 -74.5q38 -48 56.5 -115q18.5 -67 18.5 -148q0 -174 -79.5 -269q-79.5 -95 -231.5 -95q-71 0 -125 22q-54 22 -92.5 61.5q-38.5 39.5 -61 95.5q-22.5 56 -28.5 124l-103 0v-289h-148v700h148zM466 350q0 -52 8 -95q8 -43 27 -74q19 -31 48.5 -48q29.5 -17 73.5 -17q79 0 116.5 54.5q37.5 54.5 37.5 179.5q0 50 -7 92.5q-7 42.5 -25 74q-18 31.5 -47.5 49.5q-29.5 18 -74.5 18q-79 0 -118 -56.5q-39 -56.5 -39 -177.5zt0 0zM379 875q5 -31 26 -44q21 -13 55 -13q72 0 81 56l121 -17q-12 -65 -63 -93.5q-51 -28.5 -140 -28.5q-44 0 -81 5.5q-37 5.5 -65 19.5q-28 14 -45.5 36.5q-17.5 22.5 -22.5 57.5z" />
-<glyph unicode="&#62767;" horiz-adv-x="847" d="M556 -15q-63 0 -107.5 16q-44.5 16 -74 45.5q-29.5 29.5 -44.5 71.5q-15 42 -20 94l-98 0v-212h-140v525h140v-196h100q12 101 70 156q58 55 176 55q65 0 111.5 -20.5q46.5 -20.5 76.5 -57.5q30 -37 44.5 -88q14.5 -51 14.5 -112q0 -130 -61.5 -203.5q-61.5 -73.5 -187.5 -73.5zt0 0zM444 262q0 -75 24.5 -117.5q24.5 -42.5 88.5 -42.5q27 0 46.5 8.5q19.5 8.5 32.5 27.5q13 19 19 49.5q6 30.5 6 74.5q0 80 -23 120.5q-23 40.5 -86 40.5q-54 0 -81 -37q-27 -37 -27 -124zt0 0zM356 742q8 -42 28 -57q20 -15 52 -15q33 0 52.5 15.5q19.5 15.5 27.5 55.5l104 -27q-13 -66 -65 -99q-52 -33 -124 -33q-35 0 -66.5 7q-31.5 7 -57.5 23q-26 16 -44.5 41q-18.5 25 -25.5 61z" />
-<glyph unicode="&#62768;" horiz-adv-x="725" d="M463 570h-161q-5 -95 -10.5 -171.5q-5.5 -76.5 -15 -137.5q-9.5 -61 -25.5 -108.5q-16 -47.5 -40 -83.5q-16 -23 -35.5 -38q-19.5 -15 -40.5 -23.5q-21 -8.5 -41 -12q-20 -3.5 -37 -3.5q-26 0 -40.5 4q-14.5 4 -31.5 12l16 124q11 -4 26 -4q17 0 34 8q17 8 30 26q16 22 28.5 63q12.5 41 21 106.5q8.5 65.5 14 156.5q5.5 91 7.5 212l449 0v-570h95v-254h-105l-16 124l-122 0z" />
-<glyph unicode="&#62769;" horiz-adv-x="624" d="M387 401h-123q-3 -84 -12.5 -158q-9.5 -74 -30.5 -129.5q-21 -55.5 -55.5 -87.5q-34.5 -32 -88.5 -32q-63 0 -89 14l20 124q17 -5 31 -5q24 0 42 17q18 17 30 61.5q12 44.5 19.5 121.5q7.5 77 11.5 198l385 0v-401h77v-243h-103l-16 119l-98 0z" />
-<glyph unicode="&#62770;" horiz-adv-x="723" d="M213 700v-377l-10 -93h6l54 93l284 377h111v-715q0 -90 -38 -141.5q-38 -51.5 -123 -51.5q-17 0 -34.5 2q-17.5 2 -37.5 6l0 116q29 -3 46 1.5q17 4.5 25.5 15.5q8.5 11 11 27.5q2.5 16.5 2.5 39.5v386l8 89h-5l-51 -90l-287 -385h-110v700zM295 875q5 -31 26 -44q21 -13 55 -13q72 0 81 56l121 -17q-12 -65 -63 -93.5q-51 -28.5 -140 -28.5q-44 0 -81 5.5q-37 5.5 -65 19.5q-28 14 -45.5 36.5q-17.5 22.5 -22.5 57.5z" />
-<glyph unicode="&#62771;" horiz-adv-x="632" d="M212 525v-247l-5 -72h12q12 17 24.5 36q12.5 19 24.5 36l208 247h84v-528q0 -96 -40 -150.5q-40 -54.5 -129 -54.5q-15 0 -31 2q-16 2 -33 5l0 117q29 -3 47 3.5q18 6.5 28.5 20q10.5 13.5 14 32q3.5 18.5 3.5 40.5v225l6 89l-63 -88l-207 -238h-84v525zM251 712q8 -42 28 -57q20 -15 52 -15q33 0 52.5 15.5q19.5 15.5 27.5 55.5l104 -27q-13 -66 -65 -99q-52 -33 -124 -33q-35 0 -66.5 7q-31.5 7 -57.5 23q-26 16 -44.5 41q-18.5 25 -25.5 61z" />
-<glyph unicode="&#62772;" horiz-adv-x="727" d="M40 350q0 86 22 154q22 68 63.5 114.5q41.5 46.5 101.5 71q60 24.5 136 24.5q81 0 141.5 -26.5q60.5 -26.5 101 -74.5q40.5 -48 61 -115q20.5 -67 20.5 -148q0 -86 -22.5 -154q-22.5 -68 -64.5 -114.5q-42 -46.5 -102 -71q-60 -24.5 -135 -24.5q-81 0 -141.5 26.5q-60.5 26.5 -101 74.5q-40.5 48 -60.5 115q-20 67 -20 148zt0 0zM197 350q0 -52 10 -95q10 -43 30 -74q20 -31 51.5 -48q31.5 -17 74.5 -17q79 0 123 54q44 54 44 180q0 50 -9 93q-9 43 -29.5 74.5q-20.5 31.5 -52 49q-31.5 17.5 -76.5 17.5q-78 0 -122 -56q-44 -56 -44 -178zt0 0zM268 799q0 25 23.5 43q23.5 18 70.5 18q47 0 71.5 -18q24.5 -18 24.5 -43q0 -27 -24.5 -45q-24.5 -18 -71.5 -18q-47 0 -70.5 18t-23.5 45z" />
-<glyph unicode="&#62773;" horiz-adv-x="616" d="M42 262q0 130 69 204q69 74 197 74q67 0 117 -21q50 -21 83 -58.5q33 -37.5 49.5 -88q16.5 -50.5 16.5 -110.5q0 -64 -18 -115.5q-18 -51.5 -52 -87.5q-34 -36 -83.5 -55q-49.5 -19 -112.5 -19q-68 0 -118 21q-50 21 -83 58.5q-33 37.5 -49 88q-16 50.5 -16 109.5zt0 0zM186 262q0 -33 7 -62q7 -29 21.5 -50.5q14.5 -21.5 37.5 -34.5q23 -13 56 -13q122 0 122 160q0 35 -6.5 64.5q-6.5 29.5 -21 51q-14.5 21.5 -38 33.5q-23.5 12 -56.5 12q-57 0 -89.5 -38q-32.5 -38 -32.5 -123zt0 0zM218 656q0 32 23 53.5q23 21.5 65 21.5q43 0 68 -22q25 -22 25 -53q0 -29 -25 -50q-25 -21 -68 -21q-42 0 -65 21t-23 50z" />
-<glyph unicode="&#62774;" horiz-adv-x="865" d="M652 700h148v-700h-148zM65 700h148v-249q11 2 36.5 5q25.5 3 51.5 3q54 0 103.5 -10.5q49.5 -10.5 87 -36q37.5 -25.5 59.5 -69.5q22 -44 22 -110q0 -121 -78 -182q-78 -61 -228 -61q-15 0 -39 0.5q-24 0.5 -52 2.5q-28 2 -57 5q-29 3 -54 9zM277 120q61 0 100 25q39 25 39 83q0 31 -11 50.5q-11 19.5 -29.5 31q-18.5 11.5 -44 15.5q-25.5 4 -53.5 4q-7 0 -16.5 -1q-9.5 -1 -19 -2q-9.5 -1 -17.5 -2.5q-8 -1.5 -12 -2.5l0 -196q25 -5 64 -5zt0 0zM359 875q5 -31 26 -44q21 -13 55 -13q72 0 81 56l121 -17q-12 -65 -63 -93.5q-51 -28.5 -140 -28.5q-44 0 -81 5.5q-37 5.5 -65 19.5q-28 14 -45.5 36.5q-17.5 22.5 -22.5 57.5z" />
-<glyph unicode="&#62775;" horiz-adv-x="815" d="M212 117q19 -4 37.5 -5.5q18.5 -1.5 34.5 -1.5q54 0 77 17q23 17 23 55q0 32 -23 49.5q-23 17.5 -73 17.5q-42 0 -76 -9zM212 337q31 5 61.5 7q30.5 2 51.5 2q57 0 95.5 -12.5q38.5 -12.5 62.5 -34.5q24 -22 34.5 -52q10.5 -30 10.5 -64q0 -47 -13.5 -82.5q-13.5 -35.5 -44 -59.5q-30.5 -24 -79 -36q-48.5 -12 -118.5 -12q-66 0 -113.5 1.5q-47.5 1.5 -87.5 4.5l0 526h140zM603 525h140v-525h-140zM330 742q8 -42 28 -57q20 -15 52 -15q33 0 52.5 15.5q19.5 15.5 27.5 55.5l104 -27q-13 -66 -65 -99q-52 -33 -124 -33q-35 0 -66.5 7q-31.5 7 -57.5 23q-26 16 -44.5 41q-18.5 25 -25.5 61z" />
-<glyph unicode="&#62776;" horiz-adv-x="566" d="M420 306h-42q-50 -2 -84 -9q-34 -7 -55 -19q-21 -12 -30 -29q-9 -17 -9 -38q0 -25 11.5 -43q11.5 -18 30 -29.5q18.5 -11.5 43.5 -17q25 -5.5 52 -5.5q57 0 103 13.5q46 13.5 71 25.5l40 -116q-15 -9 -38.5 -18.5q-23.5 -9.5 -52.5 -17q-29 -7.5 -62.5 -12.5q-33.5 -5 -68.5 -5q-65 0 -117.5 12q-52.5 12 -90 37.5q-37.5 25.5 -58 65q-20.5 39.5 -20.5 94.5q0 72 38.5 117.5q38.5 45.5 108.5 57.5l0 6q-62 21 -93 65q-31 44 -31 95q0 48 21.5 81.5q21.5 33.5 58 54.5q36.5 21 84 30.5q47.5 9.5 98.5 9.5q32 0 64 -4.5q32 -4.5 60 -11.5q28 -7 49.5 -15q21.5 -8 33.5 -14l-37 -118q-28 12 -70.5 22.5q-42.5 10.5 -81.5 10.5q-60 0 -91.5 -17.5q-31.5 -17.5 -31.5 -55.5q0 -19 8 -33q8 -14 21.5 -24.5q13.5 -10.5 31 -17q17.5 -6.5 36.5 -10.5q9 -2 22 -3q13 -1 27 -1q14 0 27 0q13 0 23 0h27v-114zM112 798q0 27 19.5 43.5q19.5 16.5 63.5 16.5q42 0 61.5 -16.5q19.5 -16.5 19.5 -43.5q0 -26 -19.5 -41.5q-19.5 -15.5 -61.5 -15.5q-44 0 -63.5 15.5q-19.5 15.5 -19.5 41.5zt0 0zM345 798q0 27 19.5 43.5q19.5 16.5 61.5 16.5q44 0 63.5 -16.5q19.5 -16.5 19.5 -43.5q0 -26 -19.5 -41.5q-19.5 -15.5 -63.5 -15.5q-42 0 -61.5 15.5t-19.5 41.5z" />
-<glyph unicode="&#62777;" horiz-adv-x="491" d="M314 217q-39 0 -64.5 -3q-25.5 -3 -40.5 -9q-15 -6 -21 -16q-6 -10 -6 -24q0 -28 26.5 -44.5q26.5 -16.5 79.5 -16.5q46 0 84 10.5q38 10.5 66 25.5l29 -106q-29 -17 -75.5 -32q-46.5 -15 -108.5 -15q-62 0 -107.5 12q-45.5 12 -75 33.5q-29.5 21.5 -44 50.5q-14.5 29 -14.5 63q0 53 26.5 83.5q26.5 30.5 83.5 45.5l0 8q-46 16 -67.5 49q-21.5 33 -21.5 68q0 67 51 101q51 34 141 34q66 0 119.5 -14.5q53.5 -14.5 88.5 -32.5q-8 -27 -13.5 -52q-5.5 -25 -13.5 -51q-21 11 -56.5 22q-35.5 11 -80.5 11q-50 0 -72.5 -11q-22.5 -11 -22.5 -40q0 -25 26 -40q26 -15 70 -15h65v-95zM65 647q0 35 21.5 56q21.5 21 55.5 21q34 0 54.5 -21q20.5 -21 20.5 -56q0 -30 -20.5 -51q-20.5 -21 -54.5 -21q-34 0 -55.5 21q-21.5 21 -21.5 51zt0 0zM318 647q0 35 20.5 56q20.5 21 54.5 21q35 0 55.5 -21q20.5 -21 20.5 -56q0 -30 -20.5 -51q-20.5 -21 -55.5 -21q-34 0 -54.5 21t-20.5 51z" />
-<glyph unicode="&#62778;" horiz-adv-x="388" d="M120 620h-80v80h308v-80h-80v-540h80v-80h-308v80h80zM99 799q0 25 23.5 43q23.5 18 70.5 18q47 0 71.5 -18q24.5 -18 24.5 -43q0 -27 -24.5 -45q-24.5 -18 -71.5 -18q-47 0 -70.5 18t-23.5 45z" />
-<glyph unicode="&#62779;" horiz-adv-x="317" d="M89 525h140v-525l-140 0z" />
-<glyph unicode="&#62780;" horiz-adv-x="551" d="M65 700h451v-130h-303v-163h279v-130h-279v-277l-148 0z" />
-<glyph unicode="&#62781;" horiz-adv-x="478" d="M438 400h-218v-109h189v-112h-189v-180h-148v525l366 0z" />
-<glyph unicode="&#62782;" horiz-adv-x="607" d="M579 30q-26 -18 -63.5 -27.5q-37.5 -9.5 -79.5 -13.5l-15 -163h-95l-21 167q-55 10 -103 35.5q-48 25.5 -84 69q-36 43.5 -57 106q-21 62.5 -21 146.5q0 102 32 171.5q32 69.5 82 112q50 42.5 111 61.5q61 19 120 19q65 0 109.5 -8q44.5 -8 73.5 -19v-124q-54 11 -87.5 16q-33.5 5 -84.5 5q-45 0 -81.5 -14.5q-36.5 -14.5 -62.5 -43.5q-26 -29 -40.5 -73q-14.5 -44 -14.5 -103q0 -52 13 -95q13 -43 39 -74q26 -31 66 -48q40 -17 93 -17q49 0 82.5 9q33.5 9 59.5 23z" />
-<glyph unicode="&#62783;" horiz-adv-x="500" d="M468 32q-25 -17 -57 -27.5q-32 -10.5 -67 -15.5l-15 -163h-95l-21 167q-47 10 -79.5 34q-32.5 24 -52.5 59q-20 35 -29.5 79.5q-9.5 44.5 -9.5 96.5q0 131 64.5 204.5q64.5 73.5 187.5 73.5q60 0 98.5 -9.5q38.5 -9.5 68.5 -24.5l-34 -112q-26 11 -51.5 16.5q-25.5 5.5 -59.5 5.5q-63 0 -96.5 -36.5q-33.5 -36.5 -33.5 -117.5q0 -32 8 -59.5q8 -27.5 25 -48.5q17 -21 43 -33q26 -12 61 -12q42 0 66.5 7.5q24.5 7.5 46.5 20.5z" />
-<glyph unicode="&#62784;" horiz-adv-x="702" d="M65 700q22 3 50.5 5q28.5 2 59 3q30.5 1 59.5 1.5q29 0.5 52 0.5q100 0 171.5 -26.5q71.5 -26.5 117 -73.5q45.5 -47 66.5 -112q21 -65 21 -142q0 -70 -20.5 -136q-20.5 -66 -66.5 -117.5q-46 -51.5 -120 -82.5q-74 -31 -182 -31q-17 0 -46.5 1q-29.5 1 -61 2.5q-31.5 1.5 -59 3q-27.5 1.5 -41.5 3.5zM297 580q-23 0 -47 -0.5q-24 -0.5 -37 -2.5l0 -454q5 -1 15.5 -1.5q10.5 -0.5 22 -1q11.5 -0.5 22 -1q10.5 -0.5 15.5 -0.5q64 0 106 20q42 20 66.5 53q24.5 33 34.5 75q10 42 10 87q0 37 -9 77q-9 40 -32.5 73q-23.5 33 -63.5 54.5q-40 21.5 -103 21.5zt0 0zM327 870h172v-31l-174 -87l-112 0z" />
-<glyph unicode="&#62785;" horiz-adv-x="628" d="M550 184q0 -42 1 -87q1 -45 9 -98l-97 0l-20 73h-13q-23 -40 -65.5 -63.5q-42.5 -23.5 -101.5 -23.5q-105 0 -163 65.5q-58 65.5 -58 202.5q0 66 16.5 119q16.5 53 49 90q32.5 37 80.5 57q48 20 111 20q35 0 60.5 -5.5q25.5 -5.5 50.5 -13.5l0 180h140zM299 102q47 0 73 21.5q26 21.5 38 61.5l0 210q-18 14 -38.5 20.5q-20.5 6.5 -53.5 6.5q-67 0 -99.5 -39q-32.5 -39 -32.5 -134q0 -66 27.5 -106.5q27.5 -40.5 85.5 -40.5zt0 0zM635 701h142v-29l-126 -129l-76 0z" />
-<glyph unicode="&#62786;" horiz-adv-x="706" d="M493 289h-280v-289h-148v700h148v-281h280v281h148v-700h-148zM374 870h172v-31l-174 -87l-112 0z" />
-<glyph unicode="&#62787;" horiz-adv-x="638" d="M426 0v289q0 68 -20.5 97.5q-20.5 29.5 -75.5 29.5q-40 0 -73.5 -25.5q-33.5 -25.5 -44.5 -67.5l0 -323h-140v700h140v-239h12q27 35 67.5 57q40.5 22 102.5 22q43 0 75 -10.5q32 -10.5 53.5 -36q21.5 -25.5 32.5 -68q11 -42.5 11 -105.5v-320zM379 729h142v-29l-126 -129l-76 0z" />
-<glyph unicode="&#62788;" horiz-adv-x="557" d="M547 0h-482v700h148v-570h334zM347 709h142v-29l-126 -129l-76 0z" />
-<glyph unicode="&#62789;" horiz-adv-x="337" d="M215 184q0 -76 49 -76q14 0 26.5 2.5q12.5 2.5 29.5 8.5l17 -109q-20 -9 -56.5 -17.5q-36.5 -8.5 -75.5 -8.5q-63 0 -96.5 28q-33.5 28 -33.5 92v596h140zM312 700h142v-29l-126 -129l-76 0z" />
-<glyph unicode="&#62790;" horiz-adv-x="616" d="M604 570h-222v-570h-148v570h-222v130h592zM349 870h172v-31l-174 -87l-112 0z" />
-<glyph unicode="&#62791;" horiz-adv-x="404" d="M8 525h80v72l140 37v-109h141v-117h-141v-182q0 -63 12.5 -90.5q12.5 -27.5 49.5 -27.5q23 0 39 3.5q16 3.5 34 11.5l29 -105q-32 -14 -73.5 -24q-41.5 -10 -80.5 -10q-78 0 -114 38.5q-36 38.5 -36 123.5v262h-80zM312 700h142v-29l-126 -129l-76 0z" />
-<glyph unicode="&#62792;" horiz-adv-x="654" d="M315 296l20 -119h5l22 120l146 403h156l-283 -705h-106l-285 705h172zM370 870h172v-31l-174 -87l-112 0z" />
-<glyph unicode="&#62793;" horiz-adv-x="546" d="M257 253l21 -81h16l15 83l98 270h151l-240 -530h-80l-250 530h163zM288 729h142v-29l-126 -129l-76 0z" />
-<glyph unicode="&#62794;" horiz-adv-x="570" d="M128 307v113h26q10 0 24.5 0q14.5 0 30 0.5q15.5 0.5 30 2q14.5 1.5 23.5 3.5q38 7 63.5 25.5q25.5 18.5 25.5 53.5q0 45 -32.5 61q-32.5 16 -86.5 16q-24 0 -47.5 -3.5q-23.5 -3.5 -44 -9.5q-20.5 -6 -37.5 -12.5q-17 -6.5 -28 -12.5l-37 126q11 5 32.5 12.5q21.5 7.5 50.5 14q29 6.5 63 11q34 4.5 69 4.5q48 0 93.5 -8q45.5 -8 81.5 -28q36 -20 58 -54q22 -34 22 -86q0 -51 -30 -95q-30 -44 -96 -64l0 -6q70 -11 109.5 -55q39.5 -44 39.5 -116q0 -56 -25 -96.5q-25 -40.5 -65.5 -66.5q-40.5 -26 -93 -38.5q-52.5 -12.5 -107.5 -12.5q-36 0 -69.5 3.5q-33.5 3.5 -62.5 8.5q-29 5 -52 12q-23 7 -38 15l38 128q25 -11 72.5 -24q47.5 -13 113.5 -13q23 0 46.5 5q23.5 5 42.5 16.5q19 11.5 31 29.5q12 18 12 45q0 23 -8.5 40q-8.5 17 -29 28.5q-20.5 11.5 -55 18q-34.5 6.5 -85.5 7.5q-13 0 -19.5 0.5q-6.5 0.5 -22.5 0.5z" />
-<glyph unicode="&#62795;" horiz-adv-x="507" d="M120 119v95h67q21 0 42 7.5q21 7.5 37 21q16 13.5 26 33q10 19.5 10 43.5q0 48 -25 73.5q-25 25.5 -83 25.5q-46 0 -78.5 -11q-32.5 -11 -54.5 -23l-27 105q16 9 39 17q23 8 50 14.5q27 6.5 57 10.5q30 4 61 4q48 0 85.5 -13.5q37.5 -13.5 63.5 -37.5q26 -24 39.5 -56.5q13.5 -32.5 13.5 -69.5q0 -38 -9 -65.5q-9 -27.5 -24.5 -47q-15.5 -19.5 -35 -32.5q-19.5 -13 -40.5 -22l0 -9q24 -4 49 -15.5q25 -11.5 45.5 -32q20.5 -20.5 33.5 -50.5q13 -30 13 -72q0 -65 -23 -110q-23 -45 -61.5 -73.5q-38.5 -28.5 -88.5 -41.5q-50 -13 -105 -13q-55 0 -100 14q-45 14 -75 29l36 107q27 -14 59 -23.5q32 -9.5 75 -9.5q25 0 51 6q26 6 46 20q20 14 33 37.5q13 23.5 13 58.5q0 31 -11 51.5q-11 20.5 -32 32.5q-21 12 -51 17q-30 5 -69 5z" />
-<glyph unicode="&#62796;" horiz-adv-x="570" d="M128 307v113h26q10 0 24.5 0q14.5 0 30 0.5q15.5 0.5 30 2q14.5 1.5 23.5 3.5q38 7 63.5 25.5q25.5 18.5 25.5 53.5q0 45 -32.5 61q-32.5 16 -86.5 16q-24 0 -47.5 -3.5q-23.5 -3.5 -44 -9.5q-20.5 -6 -37.5 -12.5q-17 -6.5 -28 -12.5l-37 126q11 5 32.5 12.5q21.5 7.5 50.5 14q29 6.5 63 11q34 4.5 69 4.5q48 0 93.5 -8q45.5 -8 81.5 -28q36 -20 58 -54q22 -34 22 -86q0 -51 -30 -95q-30 -44 -96 -64l0 -6q70 -11 109.5 -55q39.5 -44 39.5 -116q0 -56 -25 -96.5q-25 -40.5 -65.5 -66.5q-40.5 -26 -93 -38.5q-52.5 -12.5 -107.5 -12.5q-36 0 -69.5 3.5q-33.5 3.5 -62.5 8.5q-29 5 -52 12q-23 7 -38 15l38 128q25 -11 72.5 -24q47.5 -13 113.5 -13q23 0 46.5 5q23.5 5 42.5 16.5q19 11.5 31 29.5q12 18 12 45q0 23 -8.5 40q-8.5 17 -29 28.5q-20.5 11.5 -55 18q-34.5 6.5 -85.5 7.5q-13 0 -19.5 0.5q-6.5 0.5 -22.5 0.5zM305 736h-102l-138 93v41h114l57 -44l21 -30l22 29l62 45h109l0 -42z" />
-<glyph unicode="&#62797;" horiz-adv-x="507" d="M120 119v95h67q21 0 42 7.5q21 7.5 37 21q16 13.5 26 33q10 19.5 10 43.5q0 48 -25 73.5q-25 25.5 -83 25.5q-46 0 -78.5 -11q-32.5 -11 -54.5 -23l-27 105q16 9 39 17q23 8 50 14.5q27 6.5 57 10.5q30 4 61 4q48 0 85.5 -13.5q37.5 -13.5 63.5 -37.5q26 -24 39.5 -56.5q13.5 -32.5 13.5 -69.5q0 -38 -9 -65.5q-9 -27.5 -24.5 -47q-15.5 -19.5 -35 -32.5q-19.5 -13 -40.5 -22l0 -9q24 -4 49 -15.5q25 -11.5 45.5 -32q20.5 -20.5 33.5 -50.5q13 -30 13 -72q0 -65 -23 -110q-23 -45 -61.5 -73.5q-38.5 -28.5 -88.5 -41.5q-50 -13 -105 -13q-55 0 -100 14q-45 14 -75 29l36 107q27 -14 59 -23.5q32 -9.5 75 -9.5q25 0 51 6q26 6 46 20q20 14 33 37.5q13 23.5 13 58.5q0 31 -11 51.5q-11 20.5 -32 32.5q-21 12 -51 17q-30 5 -69 5zM262 584h-99l-129 188h116l43 -69l25 -63l24 62l50 70l108 0z" />
-<glyph unicode="&#63020;" horiz-adv-x="217" d="M202 443q0 -30 -21.5 -48q-21.5 -18 -53.5 -18q-39 0 -62 24q-23 24 -23 64q0 42 13.5 70.5q13.5 28.5 32.5 47q19 18.5 40 28.5q21 10 36 15l33 -57q-22 -8 -36.5 -24.5q-14.5 -16.5 -16.5 -36.5q21 1 39.5 -17t18.5 -48z" />
-<glyph unicode="&#63021;" horiz-adv-x="217" d="M42 467q0 30 21 48.5q21 18.5 53 18.5q40 0 63 -25q23 -25 23 -64q0 -42 -13.5 -70.5q-13.5 -28.5 -33 -47.5q-19.5 -19 -40 -29.5q-20.5 -10.5 -35.5 -14.5l-35 59q22 8 38 22.5q16 14.5 18 37.5q-21 -2 -40 15t-19 50z" />
-<glyph unicode="&#63022;" horiz-adv-x="385" d="M202 443q0 -30 -21.5 -48q-21.5 -18 -53.5 -18q-39 0 -62 24q-23 24 -23 64q0 42 13.5 70.5q13.5 28.5 32.5 47q19 18.5 40 28.5q21 10 36 15l33 -57q-22 -8 -36.5 -24.5q-14.5 -16.5 -16.5 -36.5q21 1 39.5 -17q18.5 -18 18.5 -48zt0 0zM369 443q0 -30 -21.5 -48q-21.5 -18 -53.5 -18q-39 0 -62 24q-23 24 -23 64q0 42 13.5 70.5q13.5 28.5 32.5 47q19 18.5 40 28.5q21 10 36 15l33 -57q-22 -8 -36.5 -24.5q-14.5 -16.5 -16.5 -36.5q21 1 39.5 -17t18.5 -48z" />
-<glyph unicode="&#63023;" horiz-adv-x="385" d="M42 467q0 30 21 48.5q21 18.5 53 18.5q40 0 63 -25q23 -25 23 -64q0 -42 -13.5 -70.5q-13.5 -28.5 -33 -47.5q-19.5 -19 -40 -29.5q-20.5 -10.5 -35.5 -14.5l-35 59q22 8 38 22.5q16 14.5 18 37.5q-21 -2 -40 15q-19 17 -19 50zt0 0zM209 467q0 30 21 48.5q21 18.5 53 18.5q40 0 63 -25q23 -25 23 -64q0 -42 -13.5 -70.5q-13.5 -28.5 -33 -47.5q-19.5 -19 -40 -29.5q-20.5 -10.5 -35.5 -14.5l-35 59q22 8 38 22.5q16 14.5 18 37.5q-21 -2 -40 15t-19 50z" />
-<glyph unicode="&#63028;" horiz-adv-x="277" d="M99 525h124l-38 -218l-86 0z" />
-<glyph unicode="&#63029;" horiz-adv-x="376" d="M99 525h124l-38 -218h-86zM231 525h124l-38 -218l-86 0z" />
-<glyph unicode="&#63074;" horiz-adv-x="442" d="M180 538l10 47l-33 -32l-63 -41l-54 83l171 112h93v-427l-124 0z" />
-<glyph unicode="&#63171;" horiz-adv-x="278" d="M61 -105q0 29 20 47q20 18 51 18q38 0 62 -24.5q24 -24.5 24 -65.5q0 -34 -12 -59.5q-12 -25.5 -29.5 -43q-17.5 -17.5 -36.5 -28.5q-19 -11 -33 -15l-36 60q15 6 29.5 16.5q14.5 10.5 16.5 31.5q-20 -1 -38 15t-18 48z" />
-<glyph unicode="&#63177;" horiz-adv-x="406" d="M174 870h172v-31l-174 -87l-112 0z" />
-<glyph unicode="&#63178;" horiz-adv-x="505" d="M300 736h-102l-138 93v41h114l57 -44l21 -30l22 29l62 45h109l0 -42z" />
-<glyph unicode="&#63179;" horiz-adv-x="517" d="M60 798q0 27 19.5 43.5q19.5 16.5 63.5 16.5q42 0 61.5 -16.5q19.5 -16.5 19.5 -43.5q0 -26 -19.5 -41.5q-19.5 -15.5 -61.5 -15.5q-44 0 -63.5 15.5q-19.5 15.5 -19.5 41.5zt0 0zM293 798q0 27 19.5 43.5q19.5 16.5 61.5 16.5q44 0 63.5 -16.5q19.5 -16.5 19.5 -43.5q0 -26 -19.5 -41.5q-19.5 -15.5 -63.5 -15.5q-42 0 -61.5 15.5t-19.5 41.5z" />
-<glyph unicode="&#63182;" horiz-adv-x="406" d="M346 752h-114l-172 87v31l173 0z" />
-<glyph unicode="&#63183;" horiz-adv-x="551" d="M125 850h145v-16l-109 -93h-101zM340 850h151v-16l-155 -93l-102 0z" />
-<glyph unicode="&#63184;" horiz-adv-x="493" d="M60 848h373v-92l-373 0z" />
-<glyph unicode="&#63185;" horiz-adv-x="537" d="M194 875q5 -31 26 -44q21 -13 55 -13q72 0 81 56l121 -17q-12 -65 -63 -93.5q-51 -28.5 -140 -28.5q-44 0 -81 5.5q-37 5.5 -65 19.5q-28 14 -45.5 36.5q-17.5 22.5 -22.5 57.5z" />
-<glyph unicode="&#63188;" horiz-adv-x="514" d="M186 742q8 -42 28 -57q20 -15 52 -15q33 0 52.5 15.5q19.5 15.5 27.5 55.5l104 -27q-13 -66 -65 -99q-52 -33 -124 -33q-35 0 -66.5 7q-31.5 7 -57.5 23q-26 16 -44.5 41q-18.5 25 -25.5 61z" />
-<glyph unicode="&#64257;" horiz-adv-x="645" d="M561 525v-525h-140v408h-185v-408h-140v408h-80v117h80v13q0 94 55.5 133q55.5 39 158.5 39q77 0 139.5 -9.5q62.5 -9.5 107.5 -26.5l-28 -110q-16 5 -38 10.5q-22 5.5 -46.5 9.5q-24.5 4 -50 6.5q-25.5 2.5 -49.5 2.5q-35 0 -56.5 -2.5q-21.5 -2.5 -33 -10q-11.5 -7.5 -15.5 -21q-4 -13.5 -4 -34.5z" />
-<glyph unicode="&#64258;" horiz-adv-x="678" d="M418 582q-16 5 -43.5 8q-27.5 3 -53.5 3q-28 0 -44.5 -4.5q-16.5 -4.5 -25.5 -13q-9 -8.5 -12 -21.5q-3 -13 -3 -29l115 0v-117h-115v-408h-140v408h-80v117h80v13q0 42 11.5 74q11.5 32 38.5 54q27 22 70.5 33q43.5 11 107.5 11q25 0 57.5 -2q32.5 -2 65.5 -4.5q33 -2.5 62.5 -5.5q29.5 -3 48.5 -6l0 -508q0 -40 12 -57.5q12 -17.5 37 -17.5q12 0 26 2q14 2 29 7l16 -108q-19 -9 -56 -17q-37 -8 -73 -8q-63 0 -97 27.5q-34 27.5 -34 91.5z" />
diff --git a/admin/survey/Fonts/PTSans/PTC75F_W.ttf b/admin/survey/Fonts/PTSans/PTC75F_W.ttf
deleted file mode 100644
index 0b83dc6..0000000
--- a/admin/survey/Fonts/PTSans/PTC75F_W.ttf
+++ /dev/null
Binary files differ
diff --git a/admin/survey/Fonts/PTSans/PTC75F_W.woff b/admin/survey/Fonts/PTSans/PTC75F_W.woff
deleted file mode 100644
index fb6770b..0000000
--- a/admin/survey/Fonts/PTSans/PTC75F_W.woff
+++ /dev/null
Binary files differ
diff --git a/admin/survey/Fonts/PTSans/PTN57F_W.eot b/admin/survey/Fonts/PTSans/PTN57F_W.eot
deleted file mode 100644
index 0bb06fa..0000000
--- a/admin/survey/Fonts/PTSans/PTN57F_W.eot
+++ /dev/null
Binary files differ
diff --git a/admin/survey/Fonts/PTSans/PTN57F_W.svg b/admin/survey/Fonts/PTSans/PTN57F_W.svg
deleted file mode 100644
index e7d2088..0000000
--- a/admin/survey/Fonts/PTSans/PTN57F_W.svg
+++ /dev/null
@@ -1,728 +0,0 @@
-<?xml version="1.0" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
-<svg xmlns="http://www.w3.org/2000/svg">
-<metadata>
-Generated by SVGconv.
-Copyright : Copyright 2009 ParaType Ltd. All rights reserved.
-Designer : A.Korolkova, O.Umpeleva, V.Yefimov
-Foundry : ParaType Ltd
-Foundry URL : http://www.paratype.com
-</metadata>
-<defs>
-<font id="PTSans-Narrow" horiz-adv-x="428" >
-<font-face units-per-em="1000" ascent="1018" descent="276" />
-<missing-glyph horiz-adv-x="750" />
-<glyph unicode="&#32;" horiz-adv-x="212" />
-<glyph unicode="&#33;" horiz-adv-x="247" d="M101 700h75v-347l-15 -176h-45l-15 176zM88 45q0 28 13.5 42q13.5 14 36.5 14q23 0 36.5 -14q13.5 -14 13.5 -42q0 -29 -13.5 -43q-13.5 -14 -36.5 -14q-23 0 -36.5 14t-13.5 43z" />
-<glyph unicode="&#34;" horiz-adv-x="286" d="M177 700h69l-26 -193h-43zM72 700h69l-26 -193l-43 0z" />
-<glyph unicode="&#35;" horiz-adv-x="450" d="M230 225h-82l-32 -167h-61l32 167h-63l13 60h61l27 140h-61l13 60h60l30 157h61l-30 -157h82l31 157h61l-30 -157h61l-14 -60h-59l-27 -140h60l-14 -60h-57l-32 -167h-62zM159 285h83l27 140l-83 0z" />
-<glyph unicode="&#36;" horiz-adv-x="450" d="M196 -12q-44 2 -77.5 9q-33.5 7 -55.5 21l23 68q16 -11 44 -21q28 -10 66 -12l0 284q-25 16 -48.5 34q-23.5 18 -42 42q-18.5 24 -30 55.5q-11.5 31.5 -11.5 74.5q0 66 33.5 110.5q33.5 44.5 98.5 55.5l0 91h61v-89q39 -2 65 -7.5q26 -5.5 49 -16.5v-65q-40 9 -61 15.5q-21 6.5 -53 8.5l0 -258q25 -17 50 -36q25 -19 44.5 -43.5q19.5 -24.5 31.5 -56q12 -31.5 12 -73.5q0 -72 -35.5 -122q-35.5 -50 -102.5 -64l0 -93h-61zM241 57q36 8 57.5 37.5q21.5 29.5 21.5 79.5q0 48 -23 78q-23 30 -56 54zM212 644q-41 -8 -57 -37q-16 -29 -16 -61q0 -44 20.5 -73q20.5 -29 52.5 -53z" />
-<glyph unicode="&#37;" horiz-adv-x="637" d="M55 542q0 46 9.5 78.5q9.5 32.5 27 53q17.5 20.5 41 29.5q23.5 9 50.5 9q27 0 50.5 -8.5q23.5 -8.5 41 -28q17.5 -19.5 27 -52.5q9.5 -33 9.5 -81q0 -48 -9.5 -81q-9.5 -33 -27 -52.5q-17.5 -19.5 -41 -28q-23.5 -8.5 -50.5 -8.5q-27 0 -50.5 8.5q-23.5 8.5 -41 28q-17.5 19.5 -27 52.5q-9.5 33 -9.5 81zt0 0zM120 542q0 -65 17.5 -90q17.5 -25 45.5 -25q14 0 25.5 5q11.5 5 19.5 17.5q8 12.5 12.5 35q4.5 22.5 4.5 57.5q0 34 -4.5 56.5q-4.5 22.5 -12.5 35.5q-8 13 -19.5 18q-11.5 5 -25.5 5q-15 0 -26.5 -5q-11.5 -5 -19.5 -18q-8 -13 -12.5 -35.5q-4.5 -22.5 -4.5 -56.5zt0 0zM349 170q0 46 9.5 78.5q9.5 32.5 27 53q17.5 20.5 41 29.5q23.5 9 50.5 9q27 0 50.5 -8.5q23.5 -8.5 41 -28q17.5 -19.5 27 -52.5q9.5 -33 9.5 -81q0 -48 -9.5 -81q-9.5 -33 -27 -52.5q-17.5 -19.5 -41 -28q-23.5 -8.5 -50.5 -8.5q-27 0 -50.5 8.5q-23.5 8.5 -41 28q-17.5 19.5 -27 52.5q-9.5 33 -9.5 81zt0 0zM414 170q0 -65 17.5 -90q17.5 -25 45.5 -25q14 0 25.5 5q11.5 5 19.5 17.5q8 12.5 12.5 35q4.5 22.5 4.5 57.5q0 34 -4.5 56.5q-4.5 22.5 -12.5 35.5q-8 13 -19.5 18q-11.5 5 -25.5 5q-15 0 -26.5 -5q-11.5 -5 -19.5 -18q-8 -13 -12.5 -35.5q-4.5 -22.5 -4.5 -56.5zt0 0zM518 713l47 -30l-426 -695l-47 30z" />
-<glyph unicode="&#38;" horiz-adv-x="656" d="M91 188q0 40 12 75.5q12 35.5 31.5 66q19.5 30.5 44.5 55.5q25 25 51 45q-20 36 -35 74q-15 38 -15 80q0 24 6.5 47q6.5 23 21.5 41q15 18 38 29q23 11 56 11q34 0 57.5 -10q23.5 -10 37.5 -26q14 -16 20.5 -36.5q6.5 -20.5 6.5 -42.5q0 -43 -27 -88q-27 -45 -82 -88q13 -28 29.5 -58.5q16.5 -30.5 35 -61q18.5 -30.5 38 -60q19.5 -29.5 38.5 -54.5q18 25 34 67q16 42 26 81l58 -23q-5 -17 -14 -41q-9 -24 -19.5 -48.5q-10.5 -24.5 -22 -47q-11.5 -22.5 -21.5 -37.5q33 -39 55.5 -60.5q22.5 -21.5 45.5 -37.5l-45 -52q-45 26 -98 93q-14 -18 -31.5 -34.5q-17.5 -16.5 -39 -29.5q-21.5 -13 -48 -21q-26.5 -8 -57.5 -8q-39 0 -73.5 12.5q-34.5 12.5 -60 37.5q-25.5 25 -40 62.5q-14.5 37.5 -14.5 87.5zt0 0zM413 130q-23 29 -45 62q-22 33 -42 66q-20 33 -36.5 64q-16.5 31 -27.5 57q-21 -20 -39 -40q-18 -20 -31.5 -42.5q-13.5 -22.5 -21 -49q-7.5 -26.5 -7.5 -58.5q0 -33 10 -58.5q10 -25.5 27.5 -42.5q17.5 -17 40 -26q22.5 -9 47.5 -9q19 0 38 7q19 7 35.5 18q16.5 11 29.5 24.5q13 13.5 22 27.5zt0 0zM252 584q0 -30 9.5 -59q9.5 -29 24.5 -59q41 35 56.5 64q15.5 29 15.5 52q0 28 -11.5 48.5q-11.5 20.5 -41.5 20.5q-28 0 -40.5 -19t-12.5 -48z" />
-<glyph unicode="&#39;" horiz-adv-x="181" d="M72 700h69l-26 -193l-43 0z" />
-<glyph unicode="&#40;" horiz-adv-x="233" d="M183 -220q-38 48 -63.5 105.5q-25.5 57.5 -41.5 118q-16 60.5 -23 122q-7 61.5 -7 117.5q0 55 7 116q7 61 23 122.5q16 61.5 42.5 120.5q26.5 59 64.5 110l45 -27q-32 -51 -53 -107q-21 -56 -33.5 -113.5q-12.5 -57.5 -18 -114q-5.5 -56.5 -5.5 -107.5q0 -48 6 -105.5q6 -57.5 19.5 -115.5q13.5 -58 34.5 -113q21 -55 50 -99z" />
-<glyph unicode="&#41;" horiz-adv-x="233" d="M48 -190q29 44 50 99q21 55 34.5 113q13.5 58 19.5 115.5q6 57.5 6 105.5q0 51 -5.5 107.5q-5.5 56.5 -18 114q-12.5 57.5 -34 113.5q-21.5 56 -52.5 107l45 27q38 -51 64.5 -110q26.5 -59 42.5 -120.5q16 -61.5 23 -122.5q7 -61 7 -116q0 -56 -7 -117.5q-7 -61.5 -23 -122q-16 -60.5 -42 -118q-26 -57.5 -63 -105.5z" />
-<glyph unicode="&#42;" horiz-adv-x="291" d="M108 703l20 -38l15 -52l16 52l21 37l44 -24l-23 -40l-38 -43l55 11h42v-51h-39l-54 11l39 -44l20 -35l-43 -25l-21 38l-19 55l-15 -53l-21 -37l-44 25l23 38l35 38l-47 -11h-44v51h44l50 -11l-38 41l-22 41z" />
-<glyph unicode="&#43;" horiz-adv-x="415" d="M35 373h138v156h68v-156h138v-67h-138v-156h-68v156l-138 0z" />
-<glyph unicode="&#44;" horiz-adv-x="186" d="M36 43q0 25 14.5 40q14.5 15 37.5 15q26 0 42.5 -21q16.5 -21 16.5 -66q0 -33 -8.5 -59.5q-8.5 -26.5 -22 -46.5q-13.5 -20 -29.5 -33q-16 -13 -31 -19l-25 34q13 7 24.5 18.5q11.5 11.5 19 25.5q7.5 14 11.5 29.5q4 15.5 4 30.5q-20 -6 -37 8t-17 44z" />
-<glyph unicode="&#45;" horiz-adv-x="291" d="M47 320h197v-69l-197 0z" />
-<glyph unicode="&#46;" horiz-adv-x="178" d="M39 45q0 28 13.5 42q13.5 14 36.5 14q23 0 36.5 -14q13.5 -14 13.5 -42q0 -29 -13.5 -43q-13.5 -14 -36.5 -14q-23 0 -36.5 14t-13.5 43z" />
-<glyph unicode="&#47;" horiz-adv-x="295" d="M266 712l56 -22l-292 -830l-58 21z" />
-<glyph unicode="&#48;" horiz-adv-x="450" d="M38 350q0 96 12 165q12 69 36 112.5q24 43.5 59 64q35 20.5 80 20.5q48 0 83.5 -20.5q35.5 -20.5 58.5 -64q23 -43.5 34 -112.5q11 -69 11 -165q0 -97 -12 -165.5q-12 -68.5 -36 -112q-24 -43.5 -58.5 -64q-34.5 -20.5 -79.5 -20.5q-49 0 -84.5 21q-35.5 21 -58.5 65q-23 44 -34 112.5q-11 68.5 -11 163.5zt0 0zM113 350q0 -143 27 -220q27 -77 87 -77q58 0 84.5 70.5q26.5 70.5 26.5 226.5q0 142 -25.5 219.5q-25.5 77.5 -87.5 77.5q-58 0 -85 -70t-27 -227z" />
-<glyph unicode="&#49;" horiz-adv-x="450" d="M94 67h113v487l9 59l-34 -48l-84 -68l-38 45l182 170h37v-645h109v-67l-294 0z" />
-<glyph unicode="&#50;" horiz-adv-x="450" d="M368 547q0 -55 -16.5 -115q-16.5 -60 -42 -118.5q-25.5 -58.5 -57 -112.5q-31.5 -54 -61.5 -96l-40 -44v-3l53 9h175v-67h-324v32q19 23 44 58q25 35 51.5 76.5q26.5 41.5 52 88q25.5 46.5 45.5 94.5q20 48 32.5 95q12.5 47 12.5 90q0 51 -23.5 81q-23.5 30 -68.5 30q-29 0 -56.5 -10.5q-27.5 -10.5 -47.5 -26.5l-28 53q27 24 66 37.5q39 13.5 82 13.5q74 0 112.5 -45.5t38.5 -119.5z" />
-<glyph unicode="&#51;" horiz-adv-x="450" d="M93 76q19 -11 43.5 -17q24.5 -6 56.5 -6q27 0 49.5 11q22.5 11 39 31q16.5 20 25.5 47.5q9 27.5 9 60.5q0 74 -32.5 108q-32.5 34 -90.5 34h-60v29l116 224l39 42l-55 -7h-157v67h290v-29l-128 -239l-30 -29v-2l29 6q31 0 59 -12.5q28 -12.5 48 -37q20 -24.5 32 -60.5q12 -36 12 -84q0 -54 -15.5 -96q-15.5 -42 -42 -70.5q-26.5 -28.5 -62 -43.5q-35.5 -15 -75.5 -15q-35 0 -66 6q-31 6 -54 17z" />
-<glyph unicode="&#52;" horiz-adv-x="450" d="M431 215h-93v-215h-72v215h-246v34l265 462h53v-431h93zM266 504l12 86h-3l-30 -77l-110 -191l-38 -49l55 7l114 0z" />
-<glyph unicode="&#53;" horiz-adv-x="450" d="M357 700v-70h-190v-204l34 3q80 -1 126 -55q46 -54 47 -155q-1 -56 -16.5 -99q-15.5 -43 -42.5 -72.5q-27 -29.5 -63 -44.5q-36 -15 -77 -15q-69 0 -111 19l18 64q18 -9 40 -12.5q22 -3.5 51 -3.5q57 0 92.5 41.5q35.5 41.5 36.5 116.5q-1 77 -36.5 114q-35.5 37 -98.5 37l-66 -5l0 341z" />
-<glyph unicode="&#54;" horiz-adv-x="450" d="M405 211q-1 -50 -12.5 -91.5q-11.5 -41.5 -34 -70.5q-22.5 -29 -55 -45q-32.5 -16 -73.5 -16q-84 0 -131.5 61q-47.5 61 -47.5 186q0 106 21.5 189q21.5 83 58.5 143q37 60 87 96.5q50 36.5 107 48.5l20 -58q-45 -12 -82 -40q-37 -28 -65 -68q-28 -40 -46.5 -90q-18.5 -50 -25.5 -107q13 27 43.5 47q30.5 20 75.5 20q72 0 115.5 -51q43.5 -51 44.5 -154zt0 0zM332 204q0 147 -106 147q-38 0 -65 -24q-27 -24 -38 -54q-2 -13 -2 -25.5q0 -12.5 1 -23.5q-1 -33 5.5 -63.5q6.5 -30.5 20 -54.5q13.5 -24 34 -38.5q20.5 -14.5 48.5 -14.5q45 0 73.5 40t28.5 111z" />
-<glyph unicode="&#55;" horiz-adv-x="450" d="M95 0l202 591l36 49l-48 -9h-229v69h341v-27l-230 -673z" />
-<glyph unicode="&#56;" horiz-adv-x="450" d="M58 162q0 67 27.5 114q27.5 47 81.5 85q-20 15 -37.5 31.5q-17.5 16.5 -30.5 37.5q-13 21 -20.5 47q-7.5 26 -7.5 60q0 81 42.5 128q42.5 47 116.5 47q69 0 109.5 -42.5q40.5 -42.5 40.5 -116.5q0 -57 -22 -101q-22 -44 -69 -86q21 -15 40 -33q19 -18 33.5 -40.5q14.5 -22.5 22.5 -51q8 -28.5 8 -65.5q0 -85 -45.5 -136.5q-45.5 -51.5 -126.5 -51.5q-39 0 -69 13q-30 13 -51 36q-21 23 -32 55q-11 32 -11 70zt0 0zM214 333q-46 -34 -66.5 -76q-20.5 -42 -20.5 -84q0 -51 25 -85.5q25 -34.5 73 -34.5q39 0 67.5 28.5q28.5 28.5 28.5 90.5q0 31 -9 55q-9 24 -24 42.5q-15 18.5 -34 34q-19 15.5 -40 29.5zt0 0zM241 392q34 34 52 68.5q18 34.5 18 76.5q0 55 -24.5 82.5q-24.5 27.5 -57.5 27.5q-21 0 -37.5 -8.5q-16.5 -8.5 -27.5 -23.5q-11 -15 -17 -34.5q-6 -19.5 -6 -41.5q0 -27 8 -48.5q8 -21.5 22 -39q14 -17.5 32 -32t38 -27.5z" />
-<glyph unicode="&#57;" horiz-adv-x="450" d="M46 488q0 104 44.5 164q44.5 60 132.5 60q84 0 130.5 -62q46.5 -62 46.5 -190q0 -113 -21 -196.5q-21 -83.5 -58 -141q-37 -57.5 -87 -90.5q-50 -33 -108 -44l-19 59q96 25 149 100.5q53 75.5 67 189.5q-21 -29 -46.5 -41q-25.5 -12 -67.5 -12q-32 0 -61.5 12.5q-29.5 12.5 -52 38q-22.5 25.5 -36 64q-13.5 38.5 -13.5 89.5zt0 0zM119 496q0 -71 29 -109q29 -38 77 -38q38 0 64.5 16.5q26.5 16.5 38.5 42.5q2 13 2 25q0 12 0 23q0 38 -6.5 72.5q-6.5 34.5 -20 61q-13.5 26.5 -34.5 42q-21 15.5 -50 15.5q-47 0 -73.5 -41t-26.5 -110z" />
-<glyph unicode="&#58;" horiz-adv-x="206" d="M76 448q0 28 13.5 42q13.5 14 36.5 14q23 0 36.5 -14q13.5 -14 13.5 -42q0 -29 -13.5 -43q-13.5 -14 -36.5 -14q-23 0 -36.5 14q-13.5 14 -13.5 43zt0 0zM76 45q0 28 13.5 42q13.5 14 36.5 14q23 0 36.5 -14q13.5 -14 13.5 -42q0 -29 -13.5 -43q-13.5 -14 -36.5 -14q-23 0 -36.5 14t-13.5 43z" />
-<glyph unicode="&#59;" horiz-adv-x="216" d="M75 43q0 25 14.5 40q14.5 15 37.5 15q26 0 42.5 -21q16.5 -21 16.5 -66q0 -33 -8.5 -59.5q-8.5 -26.5 -22 -46.5q-13.5 -20 -29.5 -33q-16 -13 -31 -19l-25 34q13 7 24.5 18.5q11.5 11.5 19 25.5q7.5 14 11.5 29.5q4 15.5 4 30.5q-20 -6 -37 8q-17 14 -17 44zt0 0zM85 448q0 28 13.5 42q13.5 14 36.5 14q23 0 36.5 -14q13.5 -14 13.5 -42q0 -29 -13.5 -43q-13.5 -14 -36.5 -14q-23 0 -36.5 14t-13.5 43z" />
-<glyph unicode="&#60;" horiz-adv-x="415" d="M36 305v29l300 223l39 -54l-191 -145l-74 -38l73 -32l196 -144l-38 -54z" />
-<glyph unicode="&#61;" horiz-adv-x="415" d="M35 456h344v-67h-344zM35 290h344v-67l-344 0z" />
-<glyph unicode="&#62;" horiz-adv-x="415" d="M379 344v-29l-298 -223l-41 53l192 145l73 38l-72 32l-197 144l40 53z" />
-<glyph unicode="&#63;" horiz-adv-x="358" d="M123 177q-3 44 5.5 78q8.5 34 23.5 62.5q15 28.5 32.5 53.5q17.5 25 33.5 51.5q16 26.5 26.5 56q10.5 29.5 10.5 66.5q0 46 -20 74q-20 28 -68 28q-29 0 -57 -10.5q-28 -10.5 -50 -26.5l-28 56q30 20 65.5 33q35.5 13 86.5 13q72 0 109 -42q37 -42 37 -115q0 -43 -11 -77q-11 -34 -27 -62.5q-16 -28.5 -35 -54.5q-19 -26 -35.5 -53.5q-16.5 -27.5 -27.5 -59q-11 -31.5 -11 -71.5zM108 45q0 28 13.5 42q13.5 14 36.5 14q23 0 36.5 -14q13.5 -14 13.5 -42q0 -29 -13.5 -43q-13.5 -14 -36.5 -14q-23 0 -36.5 14t-13.5 43z" />
-<glyph unicode="&#64;" horiz-adv-x="857" d="M565 491h33l-41 -291q-9 -67 -5.5 -99.5q3.5 -32.5 29.5 -32.5q26 0 52 17q26 17 46.5 50q20.5 33 33 81q12.5 48 12.5 110q0 71 -20.5 124.5q-20.5 53.5 -57 89.5q-36.5 36 -88.5 54.5q-52 18.5 -115 18.5q-65 0 -122 -26.5q-57 -26.5 -99 -75.5q-42 -49 -66.5 -117q-24.5 -68 -24.5 -152q0 -87 22.5 -151q22.5 -64 63.5 -107q41 -43 97 -64q56 -21 124 -21q24 0 55.5 6q31.5 6 54.5 18l18 -56q-34 -16 -67.5 -22.5q-33.5 -6.5 -70.5 -6.5q-73 0 -138.5 23q-65.5 23 -115 71.5q-49.5 48.5 -78.5 124q-29 75.5 -29 179.5q0 103 30.5 184.5q30.5 81.5 82 137.5q51.5 56 120.5 86q69 30 146 30q74 0 136.5 -22q62.5 -22 108.5 -66q46 -44 71.5 -109q25.5 -65 25.5 -151q0 -69 -18 -128q-18 -59 -48.5 -102q-30.5 -43 -71 -67.5q-40.5 -24.5 -86.5 -24.5q-19 0 -34.5 5q-15.5 5 -25 17q-9.5 12 -13.5 32q-4 20 0 49v0q-15 -20 -30 -38.5q-15 -18.5 -32.5 -33q-17.5 -14.5 -38 -23q-20.5 -8.5 -42.5 -8.5q-42 0 -71.5 37.5q-29.5 37.5 -29.5 108.5q0 74 16.5 138q16.5 64 45 111q28.5 47 66.5 73.5q38 26.5 81 26.5q29 0 47.5 -10q18.5 -10 35.5 -27zM519 400q-13 18 -26.5 26q-13.5 8 -33.5 8q-30 0 -56 -22.5q-26 -22.5 -45 -60q-19 -37.5 -30 -85.5q-11 -48 -11 -99q0 -45 13.5 -71.5q13.5 -26.5 45.5 -26.5q15 0 31 11q16 11 31.5 28.5q15.5 17.5 29.5 39.5q14 22 24 44z" />
-<glyph unicode="&#65;" horiz-adv-x="473" d="M333 196h-198l-56 -196h-74l211 711h41l211 -711h-78zM155 263h160l-61 216l-19 105h-2l-19 -107z" />
-<glyph unicode="&#66;" horiz-adv-x="471" d="M411 541q0 -26 -6 -52q-6 -26 -19 -49q-13 -23 -32.5 -41q-19.5 -18 -47.5 -27l0 -4q24 -5 46 -16.5q22 -11.5 39 -32q17 -20.5 27 -50q10 -29.5 10 -70.5q0 -54 -17 -93.5q-17 -39.5 -46.5 -64.5q-29.5 -25 -68 -37q-38.5 -12 -81.5 -12q-14 0 -32.5 0q-18.5 0 -39.5 1.5q-21 1.5 -41.5 4q-20.5 2.5 -37.5 7.5l0 689q30 6 70.5 10q40.5 4 87.5 4q34 0 68 -6.5q34 -6.5 61 -24.5q27 -18 43.5 -50.5q16.5 -32.5 16.5 -85.5zt0 0zM221 61q27 0 50 8.5q23 8.5 40.5 25.5q17.5 17 27.5 41.5q10 24.5 10 57.5q0 41 -12.5 66.5q-12.5 25.5 -32.5 39.5q-20 14 -45.5 19q-25.5 5 -52.5 5h-67v-256q6 -2 15.5 -3q9.5 -1 21 -2q11.5 -1 23.5 -1.5q12 -0.5 22 -0.5zt0 0zM180 389q14 0 32 1q18 1 30 3q37 15 63.5 48.5q26.5 33.5 26.5 82.5q0 33 -9 55.5q-9 22.5 -24.5 35.5q-15.5 13 -36.5 18.5q-21 5.5 -44 5.5q-26 0 -47 -1.5q-21 -1.5 -32 -3.5l0 -245z" />
-<glyph unicode="&#67;" horiz-adv-x="458" d="M430 27q-25 -21 -63 -30q-38 -9 -80 -9q-53 0 -98 20q-45 20 -77.5 63.5q-32.5 43.5 -50.5 112.5q-18 69 -18 166q0 100 20.5 169q20.5 69 54.5 112q34 43 78.5 62q44.5 19 91.5 19q48 0 79.5 -7q31.5 -7 54.5 -17l-18 -68q-20 11 -47 17q-27 6 -62 6q-35 0 -66 -15.5q-31 -15.5 -55 -50q-24 -34.5 -38 -90.5q-14 -56 -14 -137q0 -146 50 -219.5q50 -73.5 133 -73.5q34 0 61 9.5q27 9.5 46 22.5z" />
-<glyph unicode="&#68;" horiz-adv-x="525" d="M64 700q16 3 35.5 4.5q19.5 1.5 39.5 2q20 0.5 39.5 1q19.5 0.5 36.5 0.5q73 0 124 -25q51 -25 83 -71.5q32 -46.5 46 -111.5q14 -65 14 -145q0 -72 -13.5 -138q-13.5 -66 -45.5 -116q-32 -50 -84.5 -80q-52.5 -30 -131.5 -30q-13 0 -33 0.5q-20 0.5 -41.5 2q-21.5 1.5 -40 2.5q-18.5 1 -28.5 3zM219 639q-10 0 -21.5 0q-11.5 0 -22.5 -1q-11 -1 -20.5 -2q-9.5 -1 -15.5 -2l0 -570q4 -1 14.5 -1.5q10.5 -0.5 22 -1q11.5 -0.5 22 -1q10.5 -0.5 15.5 -0.5q55 0 92 24q37 24 58.5 64.5q21.5 40.5 30.5 94q9 53.5 9 113.5q0 53 -8 104q-8 51 -28.5 90.5q-20.5 39.5 -56 64t-91.5 24.5z" />
-<glyph unicode="&#69;" horiz-adv-x="429" d="M64 700h311v-69h-236v-237h217v-69h-217v-256h241v-69l-316 0z" />
-<glyph unicode="&#70;" horiz-adv-x="413" d="M64 700h311v-69h-236v-247h220v-69h-220v-315l-75 0z" />
-<glyph unicode="&#71;" horiz-adv-x="492" d="M257 349h193v-308q-28 -26 -72 -39.5q-44 -13.5 -89 -13.5q-56 0 -101.5 21q-45.5 21 -77.5 65.5q-32 44.5 -49.5 112.5q-17.5 68 -17.5 163q0 98 21 166.5q21 68.5 56.5 112q35.5 43.5 81 63.5q45.5 20 93.5 20q48 0 80.5 -6.5q32.5 -6.5 55.5 -17.5l-18 -68q-20 11 -47.5 17q-27.5 6 -63.5 6q-35 0 -67 -15q-32 -15 -57.5 -49.5q-25.5 -34.5 -40.5 -90.5q-15 -56 -15 -138q0 -150 47.5 -221.5q47.5 -71.5 130.5 -71.5q52 0 86 25l0 204l-129 19z" />
-<glyph unicode="&#72;" horiz-adv-x="536" d="M397 323h-258v-323h-75v700h75v-308h258v308h75v-700l-75 0z" />
-<glyph unicode="&#73;" horiz-adv-x="233" d="M79 700h75v-700l-75 0z" />
-<glyph unicode="&#74;" horiz-adv-x="241" d="M93 700h75v-543q0 -82 -26.5 -124.5q-26.5 -42.5 -92.5 -42.5q-16 0 -38.5 4q-22.5 4 -36.5 12l16 65q10 -6 22.5 -9q12.5 -3 25.5 -3q18 0 29 8q11 8 17 22.5q6 14.5 7.5 35q1.5 20.5 1.5 46.5z" />
-<glyph unicode="&#75;" horiz-adv-x="493" d="M175 324h-36v-324h-75v700h75v-326l35 14l182 312h86l-183 -302l-35 -32l41 -40l203 -326l-95 0z" />
-<glyph unicode="&#76;" horiz-adv-x="415" d="M401 0h-337v700h75v-631l262 0z" />
-<glyph unicode="&#77;" horiz-adv-x="637" d="M498 460l9 106h-4l-32 -99l-141 -304h-25l-148 304l-31 99h-4l14 -106v-460h-72v700h63l169 -344l25 -82h2l24 83l160 343h66v-700l-75 0z" />
-<glyph unicode="&#78;" horiz-adv-x="538" d="M171 444l-43 110h-3l11 -110v-444h-72v711h45l259 -454l41 -105h4l-11 105v443h72v-711l-46 0z" />
-<glyph unicode="&#79;" horiz-adv-x="549" d="M43 350q0 178 57 270q57 92 174 92q63 0 107 -25.5q44 -25.5 71.5 -72.5q27.5 -47 40.5 -114q13 -67 13 -150q0 -178 -57.5 -270q-57.5 -92 -174.5 -92q-62 0 -106 25.5q-44 25.5 -72 72.5q-28 47 -40.5 114q-12.5 67 -12.5 150zt0 0zM122 350q0 -59 8.5 -112q8.5 -53 26.5 -93q18 -40 47 -64q29 -24 70 -24q75 0 114 72q39 72 39 221q0 58 -8.5 111q-8.5 53 -26.5 93.5q-18 40.5 -47 64.5q-29 24 -71 24q-74 0 -113 -72t-39 -221z" />
-<glyph unicode="&#80;" horiz-adv-x="451" d="M64 693q32 9 68 12q36 3 71 3q40 0 79 -9q39 -9 70.5 -33q31.5 -24 51 -66q19.5 -42 19.5 -107q0 -63 -18.5 -107q-18.5 -44 -49 -71.5q-30.5 -27.5 -70 -40q-39.5 -12.5 -81.5 -12.5q-4 0 -13 0q-9 0 -19 0.5q-10 0.5 -19.5 1.5q-9.5 1 -13.5 2l0 -266h-75zM207 639q-20 0 -38.5 -1.5q-18.5 -1.5 -29.5 -4.5l0 -298q4 -2 12.5 -2.5q8.5 -0.5 17.5 -1q9 -0.5 17.5 -0.5q8.5 0 12.5 0q28 0 54 7q26 7 46 25.5q20 18.5 32.5 50q12.5 31.5 12.5 79.5q0 42 -11.5 70q-11.5 28 -30 45q-18.5 17 -43.5 24t-52 7z" />
-<glyph unicode="&#81;" horiz-adv-x="549" d="M566 -166q-20 -7 -38.5 -9.5q-18.5 -2.5 -37.5 -2.5q-40 0 -78.5 10.5q-38.5 10.5 -74 22.5q-35.5 12 -68.5 22.5q-33 10.5 -63 10.5q-18 0 -36 -6l0 68q22 6 44 6q33 0 66.5 -10q33.5 -10 67.5 -22q34 -12 70.5 -22q36.5 -10 75.5 -10q36 0 72 10zM43 350q0 178 57 270q57 92 174 92q63 0 107 -25.5q44 -25.5 71.5 -72.5q27.5 -47 40.5 -114q13 -67 13 -150q0 -178 -57.5 -270q-57.5 -92 -174.5 -92q-62 0 -106 25.5q-44 25.5 -72 72.5q-28 47 -40.5 114q-12.5 67 -12.5 150zt0 0zM122 350q0 -59 8.5 -112q8.5 -53 26.5 -93q18 -40 47 -64q29 -24 70 -24q75 0 114 72q39 72 39 221q0 58 -8.5 111q-8.5 53 -26.5 93.5q-18 40.5 -47 64.5q-29 24 -71 24q-74 0 -113 -72t-39 -221z" />
-<glyph unicode="&#82;" horiz-adv-x="480" d="M64 693q33 8 72.5 11.5q39.5 3.5 72.5 3.5q39 0 74 -9.5q35 -9.5 61 -32q26 -22.5 41.5 -59q15.5 -36.5 15.5 -91.5q0 -83 -34.5 -133q-34.5 -50 -91.5 -67l38 -37l138 -279h-87l-150 305l-75 15v-320h-75zM139 370h60q57 0 90 35q33 35 33 107q0 55 -27.5 91q-27.5 36 -81.5 36q-20 0 -41.5 -1.5q-21.5 -1.5 -32.5 -4.5z" />
-<glyph unicode="&#83;" horiz-adv-x="428" d="M59 93q19 -13 53.5 -24.5q34.5 -11.5 78.5 -11.5q56 0 91 27.5q35 27.5 35 86.5q0 39 -20 68q-20 29 -50 53.5q-30 24.5 -64.5 48q-34.5 23.5 -64.5 52q-30 28.5 -50 65.5q-20 37 -20 89q0 84 50.5 124.5q50.5 40.5 131.5 40.5q50 0 89 -9q39 -9 63 -23v-66q-42 11 -75.5 20q-33.5 9 -77.5 9q-54 0 -80 -26.5q-26 -26.5 -26 -66.5q0 -35 20 -62q20 -27 50 -51q30 -24 64.5 -48.5q34.5 -24.5 64.5 -54.5q30 -30 50 -68q20 -38 20 -90q0 -88 -52 -138q-52 -50 -147 -50q-60 0 -98.5 11q-38.5 11 -61.5 25z" />
-<glyph unicode="&#84;" horiz-adv-x="447" d="M433 631h-172v-631h-75v631h-172v69l419 0z" />
-<glyph unicode="&#85;" horiz-adv-x="521" d="M385 700h72v-469q0 -127 -49.5 -183.5q-49.5 -56.5 -140.5 -56.5q-106 0 -154.5 55q-48.5 55 -48.5 169v485h75v-446q0 -54 7 -91q7 -37 23 -60q16 -23 40 -33q24 -10 59 -10q66 0 91.5 46q25.5 46 25.5 148z" />
-<glyph unicode="&#86;" horiz-adv-x="463" d="M218 221l18 -107h2l20 109l130 477h77l-212 -711h-40l-215 711l83 0z" />
-<glyph unicode="&#87;" horiz-adv-x="672" d="M182 237l12 -117h2l12 119l112 461h43l112 -462l12 -118h1l14 119l89 461h75l-156 -711h-46l-111 461l-14 107h-3l-14 -108l-111 -460h-47l-159 711l81 0z" />
-<glyph unicode="&#88;" horiz-adv-x="500" d="M203 356l-168 344h90l109 -237l20 -59l20 59l115 237h83l-174 -337l182 -363h-88l-121 251l-23 62l-21 -62l-124 -251l-84 0z" />
-<glyph unicode="&#89;" horiz-adv-x="455" d="M191 278l-186 422h88l126 -305l13 -61h2l13 63l122 303h81l-184 -421v-279l-75 0z" />
-<glyph unicode="&#90;" horiz-adv-x="439" d="M29 69l278 522l33 40h-311v69h381v-69l-279 -525l-32 -37h311v-69l-381 0z" />
-<glyph unicode="&#91;" horiz-adv-x="248" d="M64 700h156v-65h-84v-800h84v-65l-156 0z" />
-<glyph unicode="&#92;" horiz-adv-x="316" d="M330 -117l-60 -23l-298 829l61 23z" />
-<glyph unicode="&#93;" horiz-adv-x="248" d="M184 -230h-155v65h83v800h-83v65l155 0z" />
-<glyph unicode="&#94;" horiz-adv-x="412" d="M191 711h30l139 -276h-75l-62 135l-18 69l-24 -70l-72 -134l-69 0z" />
-<glyph unicode="&#95;" horiz-adv-x="334" d="M0 -140h334v-65l-334 0z" />
-<glyph unicode="&#96;" horiz-adv-x="255" d="M195 571h-41l-94 128v21l83 0z" />
-<glyph unicode="&#97;" horiz-adv-x="400" d="M54 470q29 18 70.5 28q41.5 10 87.5 10q42 0 67.5 -12.5q25.5 -12.5 40 -34q14.5 -21.5 19 -49q4.5 -27.5 4.5 -57.5q0 -60 -2.5 -117q-2.5 -57 -2.5 -108q0 -38 2.5 -70.5q2.5 -32.5 9.5 -61.5l-55 0l-17 59h-4q-15 -26 -44 -45q-29 -19 -78 -19q-54 0 -88.5 37.5q-34.5 37.5 -34.5 103.5q0 43 14.5 72q14.5 29 41 47q26.5 18 63 25.5q36.5 7.5 81.5 7.5q10 0 20 0q10 0 21 -1q3 31 3 55q0 57 -17 80q-17 23 -62 23q-28 0 -61 -8.5q-33 -8.5 -55 -21.5zM271 228q-10 1 -20 1.5q-10 0.5 -20 0.5q-24 0 -47 -4q-23 -4 -41 -14q-18 -10 -28.5 -27q-10.5 -17 -10.5 -43q0 -40 19.5 -62q19.5 -22 50.5 -22q42 0 65 20q23 20 32 44z" />
-<glyph unicode="&#98;" horiz-adv-x="434" d="M59 700h72v-238h3q41 50 109 50q77 0 115.5 -61q38.5 -61 38.5 -193q0 -135 -51.5 -201q-51.5 -66 -145.5 -66q-46 0 -84 10.5q-38 10.5 -57 24.5zM131 73q14 -8 34.5 -12.5q20.5 -4.5 43.5 -4.5q52 0 82.5 49.5q30.5 49.5 30.5 152.5q0 43 -5.5 77.5q-5.5 34.5 -17 59.5q-11.5 25 -30 38.5q-18.5 13.5 -44.5 13.5q-36 0 -59.5 -21.5q-23.5 -21.5 -34.5 -58.5z" />
-<glyph unicode="&#99;" horiz-adv-x="356" d="M335 25q-25 -19 -57 -28q-32 -9 -67 -9q-48 0 -81 18.5q-33 18.5 -53.5 53q-20.5 34.5 -30 83q-9.5 48.5 -9.5 107.5q0 128 45.5 195q45.5 67 130.5 67q39 0 67 -7q28 -7 48 -18v-63q-60 23 -107 23q-54 0 -81.5 -47.5q-27.5 -47.5 -27.5 -149.5q0 -41 6 -77q6 -36 20 -62.5q14 -26.5 36 -42q22 -15.5 55 -15.5q26 0 48.5 9q22.5 9 36.5 21z" />
-<glyph unicode="&#100;" horiz-adv-x="433" d="M374 172q0 -51 1 -92.5q1 -41.5 7 -81.5l-49 0l-16 60h-4q-14 -30 -44 -50q-30 -20 -72 -20q-81 0 -120.5 63q-39.5 63 -39.5 198q0 128 48.5 194q48.5 66 133.5 66q29 0 46 -3.5q17 -3.5 37 -11.5l0 206h72zM302 421q-14 12 -31.5 17.5q-17.5 5.5 -46.5 5.5q-53 0 -82.5 -48q-29.5 -48 -29.5 -148q0 -44 5.5 -79.5q5.5 -35.5 17 -61.5q11.5 -26 30 -40q18.5 -14 45.5 -14q72 0 92 85z" />
-<glyph unicode="&#101;" horiz-adv-x="413" d="M358 34q-24 -22 -61 -34q-37 -12 -78 -12q-47 0 -81.5 18.5q-34.5 18.5 -57 53q-22.5 34.5 -33 82.5q-10.5 48 -10.5 108q0 128 47 195q47 67 133 67q28 0 55.5 -7q27.5 -7 49.5 -28q22 -21 35.5 -59q13.5 -38 13.5 -99q0 -17 -1.5 -36.5q-1.5 -19.5 -3.5 -40.5l-254 0q0 -43 7 -78q7 -35 22 -59.5q15 -24.5 38.5 -38q23.5 -13.5 58.5 -13.5q27 0 53.5 10q26.5 10 40.5 24zM302 302q2 75 -21 110q-23 35 -63 35q-46 0 -73 -35q-27 -35 -32 -110z" />
-<glyph unicode="&#102;" horiz-adv-x="257" d="M16 500h61v28q0 94 27 136q27 42 92 42q26 0 47 -3q21 -3 43 -13l-18 -62q-18 8 -33.5 10.5q-15.5 2.5 -29.5 2.5q-20 0 -31 -8q-11 -8 -16.5 -25q-5.5 -17 -7 -43.5q-1.5 -26.5 -1.5 -64.5l104 0v-65h-104v-435h-72v435l-61 0z" />
-<glyph unicode="&#103;" horiz-adv-x="432" d="M374 -23q0 -97 -43 -143q-43 -46 -125 -46q-50 0 -82 8.5q-32 8.5 -52 19.5l21 62q20 -9 44 -17q24 -8 59 -8q61 0 83.5 34q22.5 34 22.5 114v37h-3q-16 -23 -41 -36q-25 -13 -64 -13q-81 0 -119 62.5q-38 62.5 -38 196.5q0 129 49.5 195q49.5 66 146.5 66q47 0 81 -9q34 -9 60 -21zM302 428q-30 16 -77 16q-51 0 -82 -46.5q-31 -46.5 -31 -148.5q0 -42 5 -77.5q5 -35.5 17 -62q12 -26.5 30.5 -41q18.5 -14.5 45.5 -14.5q38 0 60 20q22 20 32 60z" />
-<glyph unicode="&#104;" horiz-adv-x="440" d="M315 0v304q0 70 -16.5 106.5q-16.5 36.5 -65.5 36.5q-35 0 -63.5 -25q-28.5 -25 -38.5 -63l0 -359h-72v700h72v-247h3q20 26 49.5 42.5q29.5 16.5 73.5 16.5q33 0 57.5 -9q24.5 -9 40.5 -31q16 -22 24 -58.5q8 -36.5 8 -90.5l0 -323z" />
-<glyph unicode="&#105;" horiz-adv-x="217" d="M71 500h72v-500h-72zM58 652q0 24 13.5 39q13.5 15 35.5 15q22 0 36.5 -14.5q14.5 -14.5 14.5 -39.5q0 -24 -14.5 -37.5q-14.5 -13.5 -36.5 -13.5q-22 0 -35.5 14t-13.5 37z" />
-<glyph unicode="&#106;" horiz-adv-x="215" d="M72 500h72v-527q0 -103 -33 -148.5q-33 -45.5 -107 -34.5l0 65q22 0 35.5 9q13.5 9 21 27.5q7.5 18.5 9.5 46q2 27.5 2 64.5zM58 652q0 24 13.5 39q13.5 15 35.5 15q22 0 36.5 -14.5q14.5 -14.5 14.5 -39.5q0 -24 -14.5 -37.5q-14.5 -13.5 -36.5 -13.5q-22 0 -35.5 14t-13.5 37z" />
-<glyph unicode="&#107;" horiz-adv-x="388" d="M168 225h-37v-225h-72v700h72v-426l33 14l117 212h83l-118 -202l-35 -32l41 -39l129 -227l-87 0z" />
-<glyph unicode="&#108;" horiz-adv-x="233" d="M136 119q0 -35 9.5 -50q9.5 -15 26.5 -15q21 0 49 11l7 -58q-13 -8 -36.5 -13q-23.5 -5 -42.5 -5q-38 0 -61.5 23.5q-23.5 23.5 -23.5 82.5v605l72 0z" />
-<glyph unicode="&#109;" horiz-adv-x="651" d="M293 0v297q0 40 -2.5 68.5q-2.5 28.5 -10.5 46.5q-8 18 -22 26.5q-14 8.5 -37 8.5q-34 0 -57.5 -26.5q-23.5 -26.5 -32.5 -60.5l0 -360h-72v500h51l13 -53h3q21 29 50 47q29 18 74 18q38 0 62.5 -16.5q24.5 -16.5 38.5 -58.5q18 35 51.5 55q33.5 20 73.5 20q33 0 56.5 -8.5q23.5 -8.5 38 -30q14.5 -21.5 21.5 -57q7 -35.5 7 -89.5v-327h-72v318q0 65 -12.5 97q-12.5 32 -57.5 32q-38 0 -60.5 -23.5q-22.5 -23.5 -31.5 -63.5l0 -360z" />
-<glyph unicode="&#110;" horiz-adv-x="439" d="M315 0v305q0 75 -17.5 108.5q-17.5 33.5 -62.5 33.5q-40 0 -66 -24q-26 -24 -38 -59l0 -364h-72v500h52l13 -53h3q19 27 51.5 46q32.5 19 77.5 19q32 0 56.5 -9q24.5 -9 41 -30.5q16.5 -21.5 25 -57.5q8.5 -36 8.5 -91l0 -324z" />
-<glyph unicode="&#111;" horiz-adv-x="432" d="M37 250q0 135 46.5 198.5q46.5 63.5 132.5 63.5q92 0 135.5 -65q43.5 -65 43.5 -197q0 -136 -47 -199q-47 -63 -132 -63q-92 0 -135.5 65q-43.5 65 -43.5 197zt0 0zM112 250q0 -44 5.5 -80q5.5 -36 18 -62q12.5 -26 32.5 -40.5q20 -14.5 48 -14.5q52 0 78 46.5q26 46.5 26 150.5q0 43 -5.5 79.5q-5.5 36.5 -18 62.5q-12.5 26 -32.5 40.5q-20 14.5 -48 14.5q-51 0 -77.5 -47t-26.5 -150z" />
-<glyph unicode="&#112;" horiz-adv-x="435" d="M59 500h51l11 -54h4q37 66 116 66q79 0 118.5 -59q39.5 -59 39.5 -193q0 -63 -13 -113.5q-13 -50.5 -37 -86q-24 -35.5 -58.5 -54q-34.5 -18.5 -76.5 -18.5q-29 0 -46 3.5q-17 3.5 -37 14.5l0 -206h-72zM131 79q14 -12 31.5 -19q17.5 -7 46.5 -7q53 0 84 54q31 54 31 154q0 42 -5.5 76q-5.5 34 -17.5 58.5q-12 24.5 -30.5 38q-18.5 13.5 -45.5 13.5q-73 0 -94 -89z" />
-<glyph unicode="&#113;" horiz-adv-x="432" d="M374 -200h-72v241h-4q-16 -25 -40.5 -39q-24.5 -14 -63.5 -14q-79 0 -118 63.5q-39 63.5 -39 196.5q0 129 51 195q51 66 148 66q42 0 80 -10q38 -10 58 -21zM302 427q-28 17 -79 17q-52 0 -81.5 -48q-29.5 -48 -29.5 -147q0 -42 5 -78q5 -36 16.5 -62.5q11.5 -26.5 30 -41q18.5 -14.5 45.5 -14.5q38 0 60 22q22 22 33 64z" />
-<glyph unicode="&#114;" horiz-adv-x="274" d="M59 500h51l13 -53h3q14 29 36.5 45.5q22.5 16.5 54.5 16.5q23 0 52 -9l-14 -73q-26 9 -46 9q-32 0 -52 -18.5q-20 -18.5 -26 -49.5l0 -368l-72 0z" />
-<glyph unicode="&#115;" horiz-adv-x="338" d="M51 82q20 -12 47.5 -20.5q27.5 -8.5 56.5 -8.5q33 0 56 16.5q23 16.5 23 53.5q0 31 -14 51q-14 20 -35.5 36q-21.5 16 -46.5 29.5q-25 13.5 -46.5 32.5q-21.5 19 -35.5 45q-14 26 -14 66q0 64 34.5 96.5q34.5 32.5 97.5 32.5q41 0 71 -7.5q30 -7.5 52 -20.5l-19 -60q-19 10 -44 16.5q-25 6.5 -51 6.5q-36 0 -52.5 -15q-16.5 -15 -16.5 -47q0 -25 14 -42.5q14 -17.5 35.5 -32q21.5 -14.5 46.5 -29.5q25 -15 46.5 -35.5q21.5 -20.5 35.5 -49q14 -28.5 14 -71.5q0 -28 -9 -53q-9 -25 -27.5 -43.5q-18.5 -18.5 -46 -29.5q-27.5 -11 -64.5 -11q-44 0 -76 8.5q-32 8.5 -54 22.5z" />
-<glyph unicode="&#116;" horiz-adv-x="275" d="M9 500h61v99l72 23v-122h108v-65h-108v-298q0 -44 10.5 -63.5q10.5 -19.5 34.5 -19.5q20 0 34.5 4.5q14.5 4.5 31.5 11.5l14 -57q-22 -11 -48.5 -17.5q-26.5 -6.5 -55.5 -6.5q-50 0 -71.5 32.5q-21.5 32.5 -21.5 105.5v308l-61 0z" />
-<glyph unicode="&#117;" horiz-adv-x="434" d="M124 500v-306q0 -76 15.5 -108.5q15.5 -32.5 56.5 -32.5q21 0 37.5 8.5q16.5 8.5 29.5 22.5q13 14 23 32q10 18 16 37l0 347h72v-358q0 -36 2.5 -74.5q2.5 -38.5 7.5 -67.5l-51 0l-18 70h-3q-17 -33 -49 -57.5q-32 -24.5 -80 -24.5q-32 0 -56 8q-24 8 -41 29q-17 21 -25.5 57.5q-8.5 36.5 -8.5 93.5l0 324z" />
-<glyph unicode="&#118;" horiz-adv-x="388" d="M180 207l20 -99h2l18 101l88 291h76l-171 -511h-35l-174 511l82 0z" />
-<glyph unicode="&#119;" horiz-adv-x="590" d="M326 500l89 -292l18 -96h2l15 98l68 290h68l-133 -511h-41l-101 328l-14 84h-2l-14 -85l-98 -327h-41l-137 511h77l77 -291l12 -97h2l18 99l82 289z" />
-<glyph unicode="&#120;" horiz-adv-x="412" d="M161 256l-132 244h86l74 -143l20 -56l21 56l76 143h79l-133 -240l141 -260h-82l-84 157l-22 60l-23 -60l-84 -157l-79 0z" />
-<glyph unicode="&#121;" horiz-adv-x="376" d="M183 177l21 -97h5l15 97l76 323h73l-119 -449q-14 -54 -28 -101q-14 -47 -30.5 -81.5q-16.5 -34.5 -37 -54q-20.5 -19.5 -48.5 -19.5q-28 0 -49 9l12 68q14 -5 28 -2q14 3 26.5 17q12.5 14 23 41.5q10.5 27.5 18.5 71.5l-162 500l82 0z" />
-<glyph unicode="&#122;" horiz-adv-x="360" d="M32 65l186 327l35 43h-221v65h292v-65l-187 -330l-34 -40h221v-65l-292 0z" />
-<glyph unicode="&#123;" horiz-adv-x="282" d="M107 114q0 51 -16.5 70q-16.5 19 -47.5 19l0 65q31 0 47.5 20q16.5 20 16.5 64v247q0 47 18.5 74.5q18.5 27.5 60.5 27.5h74v-65h-39q-23 0 -32.5 -12.5q-9.5 -12.5 -9.5 -44.5v-244q0 -44 -16.5 -67q-16.5 -23 -39.5 -28l0 -6q23 -4 39.5 -30.5q16.5 -26.5 16.5 -68.5v-243q0 -31 9.5 -44q9.5 -13 33.5 -13h38v-65h-74q-79 0 -79 101z" />
-<glyph unicode="&#124;" horiz-adv-x="190" d="M65 700h61v-830l-61 0z" />
-<glyph unicode="&#125;" horiz-adv-x="282" d="M175 -129q0 -101 -79 -101h-74v65h38q24 0 33.5 13q9.5 13 9.5 44v243q0 42 16.5 68.5q16.5 26.5 39.5 30.5l0 6q-23 5 -39.5 28q-16.5 23 -16.5 67v244q0 32 -9.5 44.5q-9.5 12.5 -32.5 12.5h-39v65h74q42 0 60.5 -27.5q18.5 -27.5 18.5 -74.5v-247q0 -44 16.5 -64q16.5 -20 47.5 -20l0 -65q-31 0 -47.5 -19q-16.5 -19 -16.5 -70z" />
-<glyph unicode="&#126;" horiz-adv-x="415" d="M23 361q36 33 65 46q29 13 54 13q23 0 43 -8.5q20 -8.5 38 -18q18 -9.5 35.5 -18q17.5 -8.5 35.5 -8.5q14 0 30 7q16 7 33 26l34 -60q-32 -27 -57 -37.5q-25 -10.5 -46 -10.5q-22 0 -40.5 8.5q-18.5 8.5 -36 19q-17.5 10.5 -35 19q-17.5 8.5 -36.5 8.5q-18 0 -38.5 -10q-20.5 -10 -45.5 -35z" />
-<glyph unicode="&#160;" horiz-adv-x="212" />
-<glyph unicode="&#161;" horiz-adv-x="247" d="M147 -200h-75v347l15 176h45l15 -176zM160 455q0 -28 -13.5 -42q-13.5 -14 -36.5 -14q-23 0 -36.5 14q-13.5 14 -13.5 42q0 29 13.5 43q13.5 14 36.5 14q23 0 36.5 -14t13.5 -43z" />
-<glyph unicode="&#162;" horiz-adv-x="450" d="M382 27q-18 -15 -42.5 -24q-24.5 -9 -50.5 -12l0 -91h-65v90q-41 6 -69 27q-28 21 -45.5 54.5q-17.5 33.5 -25.5 79q-8 45.5 -8 99.5q0 114 38 180q38 66 110 79l0 91h65v-89q27 -2 48 -8q21 -6 38 -16l-20 -63q-15 9 -33.5 14.5q-18.5 5.5 -38.5 7.5l0 -393q25 2 45 11q20 9 33 20zM148 250q3 -36 7.5 -67.5q4.5 -31.5 14.5 -56.5q10 -25 26 -43q16 -18 39 -25l0 385q-43 -11 -63.5 -58t-23.5 -135z" />
-<glyph unicode="&#163;" horiz-adv-x="450" d="M42 382h54q-10 29 -17 62q-7 33 -7 78q0 97 46 143.5q46 46.5 124 46.5q49 0 85 -8q36 -8 61 -20l-24 -64q-19 10 -48.5 17.5q-29.5 7.5 -71.5 7.5q-46 0 -71.5 -32q-25.5 -32 -25.5 -94q0 -42 9 -74q9 -32 20 -63l127 0v-65h-104q7 -23 11.5 -49q4.5 -26 4.5 -58q0 -29 -8.5 -63q-8.5 -34 -23.5 -55l-39 -35v-4l59 14h201v-67h-362v67q25 1 43.5 13q18.5 12 30.5 31.5q12 19.5 18 44q6 24.5 6 48.5q0 34 -6 61q-6 27 -14 52l-78 0z" />
-<glyph unicode="&#164;" horiz-adv-x="450" d="M46 579l69 -67l19 -31q37 29 91 29q26 0 49.5 -7.5q23.5 -7.5 41.5 -21.5l19 31l70 67l42 -43l-67 -69l-31 -19q28 -39 28 -90q0 -56 -28 -91l31 -19l67 -69l-42 -43l-70 68l-18 30q-39 -28 -92 -28q-54 0 -91 28l-19 -30l-69 -68l-43 43l68 69l30 19q-28 37 -28 91q0 26 7.5 48.5q7.5 22.5 20.5 41.5l-30 19l-68 69zM135 358q0 -41 25 -67.5q25 -26.5 65 -26.5q40 0 65.5 26.5q25.5 26.5 25.5 67.5q0 39 -25.5 66q-25.5 27 -65.5 27q-40 0 -65 -27t-25 -66z" />
-<glyph unicode="&#165;" horiz-adv-x="450" d="M89 326h79l-165 374h88l126 -305l13 -61h2l13 63l122 303h81l-164 -374h80v-58h-100v-71h100v-58h-100v-139h-75v139h-100v58h100v71l-100 0z" />
-<glyph unicode="&#166;" horiz-adv-x="189" d="M64 206h61v-336h-61zM125 364h-61v336l61 0z" />
-<glyph unicode="&#167;" horiz-adv-x="405" d="M45 353q0 31 13 61.5q13 30.5 36 53.5l34 15q-22 17 -37.5 41q-15.5 24 -15.5 66q0 53 33.5 87.5q33.5 34.5 99.5 34.5q42 0 73 -8q31 -8 53 -19l-18 -62q-21 10 -46.5 17q-25.5 7 -53.5 7q-36 0 -52.5 -17q-16.5 -17 -16.5 -42q0 -26 16 -42q16 -16 39.5 -28.5q23.5 -12.5 51 -24.5q27.5 -12 51 -30q23.5 -18 39.5 -45.5q16 -27.5 16 -70.5q0 -31 -12 -62.5q-12 -31.5 -35 -54.5l-36 -14q21 -16 37 -40.5q16 -24.5 16 -65.5q0 -60 -37.5 -91q-37.5 -31 -98.5 -31q-42 0 -72 7.5q-30 7.5 -52 21.5l19 61q19 -11 44 -18q25 -7 53 -7q72 0 72 61q0 24 -16 39.5q-16 15.5 -39.5 28q-23.5 12.5 -51 24.5q-27.5 12 -51 30.5q-23.5 18.5 -39.5 46q-16 27.5 -16 70.5zt0 0zM288 345q0 24 -9.5 40q-9.5 16 -25.5 27.5q-16 11.5 -36.5 21q-20.5 9.5 -42.5 19.5q-24 -14 -40.5 -38q-16.5 -24 -16.5 -60q0 -23 9.5 -39.5q9.5 -16.5 25.5 -29q16 -12.5 36.5 -22q20.5 -9.5 42.5 -19.5q22 14 39.5 41t17.5 59z" />
-<glyph unicode="&#168;" horiz-adv-x="365" d="M60 653q0 23 11.5 36q11.5 13 31.5 13q20 0 31.5 -13q11.5 -13 11.5 -36q0 -21 -11.5 -34q-11.5 -13 -31.5 -13q-20 0 -31.5 13q-11.5 13 -11.5 34zt0 0zM219 653q0 23 11.5 36q11.5 13 31.5 13q20 0 31.5 -13q11.5 -13 11.5 -36q0 -21 -11.5 -34q-11.5 -13 -31.5 -13q-20 0 -31.5 13t-11.5 34z" />
-<glyph unicode="&#169;" horiz-adv-x="693" d="M50 293q0 70 23.5 125q23.5 55 64 93q40.5 38 94.5 58.5q54 20.5 115 20.5q61 0 115 -20.5q54 -20.5 94.5 -58.5q40.5 -38 64 -93q23.5 -55 23.5 -125q0 -70 -23.5 -125q-23.5 -55 -64 -93.5q-40.5 -38.5 -94.5 -58.5q-54 -20 -115 -20q-68 0 -122.5 20q-54.5 20 -93.5 58.5q-39 38.5 -60 93.5q-21 55 -21 125zt0 0zM110 293q0 -58 18.5 -103q18.5 -45 50.5 -75.5q32 -30.5 75 -46.5q43 -16 93 -16q49 0 92.5 16q43.5 16 75.5 46.5q32 30.5 50.5 75.5q18.5 45 18.5 103q0 58 -18.5 103q-18.5 45 -50.5 75.5q-32 30.5 -75.5 46.5q-43.5 16 -92.5 16q-50 0 -93 -16q-43 -16 -75 -46.5q-32 -30.5 -50.5 -75.5q-18.5 -45 -18.5 -103zt0 0zM446 155q-20 -11 -44 -17q-24 -6 -56 -6q-68 0 -104 43.5q-36 43.5 -36 117.5q0 77 38.5 118.5q38.5 41.5 101.5 41.5q31 0 50 -6q19 -6 44 -17l-22 -55q-19 9 -35.5 13q-16.5 4 -28.5 4q-35 0 -55.5 -22.5q-20.5 -22.5 -20.5 -76.5q0 -99 83 -99q38 0 67 16z" />
-<glyph unicode="&#170;" horiz-adv-x="316" d="M52 681q21 11 54.5 19q33.5 8 75.5 8q53 0 72 -26q19 -26 20 -75q-1 -69 -4 -126q-3 -57 8 -101l-50 0l-12 42h-3q-10 -17 -29.5 -31.5q-19.5 -14.5 -52.5 -14.5q-45 0 -70 25.5q-25 25.5 -25 69.5q0 33 14 55q14 22 38 35q24 13 55.5 17.5q31.5 4.5 68.5 2.5q2 40 -6.5 57q-8.5 17 -40.5 17q-29 0 -54.5 -6.5q-25.5 -6.5 -42.5 -14.5zM143 430q30 0 45.5 14.5q15.5 14.5 23.5 29.5l0 57q-21 1 -41 0.5q-20 -0.5 -36 -5.5q-16 -5 -26 -16.5q-10 -11.5 -10 -32.5q0 -20 11 -33.5t33 -13.5z" />
-<glyph unicode="&#171;" horiz-adv-x="386" d="M178 259l127 228l48 -33l-80 -153l-38 -41l38 -36l85 -150l-48 -34zM29 259l129 230l50 -34l-82 -154l-38 -41l38 -36l88 -151l-51 -35z" />
-<glyph unicode="&#172;" horiz-adv-x="415" d="M36 391h343v-191h-65v122l-278 0z" />
-<glyph unicode="&#173;" horiz-adv-x="291" d="M47 320h197v-69l-197 0z" />
-<glyph unicode="&#174;" horiz-adv-x="591" d="M72 490q0 54 18 95.5q18 41.5 48.5 70q30.5 28.5 71 43q40.5 14.5 85.5 14.5q47 0 88 -14.5q41 -14.5 71 -43q30 -28.5 47.5 -70q17.5 -41.5 17.5 -95.5q0 -54 -18 -96q-18 -42 -48.5 -70.5q-30.5 -28.5 -71 -43q-40.5 -14.5 -86.5 -14.5q-47 0 -87.5 14.5q-40.5 14.5 -70.5 43q-30 28.5 -47.5 70.5q-17.5 42 -17.5 96zt0 0zM126 490q0 -44 13.5 -76.5q13.5 -32.5 36.5 -54.5q23 -22 53.5 -32.5q30.5 -10.5 65.5 -10.5q37 0 68 10.5q31 10.5 53.5 32q22.5 21.5 35.5 54q13 32.5 13 77.5q0 43 -13.5 75.5q-13.5 32.5 -36.5 54.5q-23 22 -54 32.5q-31 10.5 -66 10.5q-37 0 -68 -10.5q-31 -10.5 -53.5 -32.5q-22.5 -22 -35 -54.5q-12.5 -32.5 -12.5 -75.5zt0 0zM208 599q14 4 38.5 6.5q24.5 2.5 46.5 2.5q35 0 60.5 -15q25.5 -15 25.5 -51q0 -27 -17 -41.5q-17 -14.5 -43 -16.5l24 -11l62 -93h-52l-60 88l-41 13v-101h-44zM283 570q-8 0 -17 -0.5q-9 -0.5 -14 -3.5l0 -60h29q51 0 51 34q0 30 -49 30z" />
-<glyph unicode="&#175;" horiz-adv-x="363" d="M60 643h243v-59l-243 0z" />
-<glyph unicode="&#176;" horiz-adv-x="342" d="M62 571q0 63 32 102q32 39 85 39q52 0 85 -36.5q33 -36.5 33 -104.5q0 -68 -33 -104.5q-33 -36.5 -85 -36.5q-53 0 -85 36.5q-32 36.5 -32 104.5zt0 0zM119 571q0 -39 16.5 -63.5q16.5 -24.5 43.5 -24.5q27 0 44 24.5q17 24.5 17 63.5q0 39 -17 63.5q-17 24.5 -44 24.5q-27 0 -43.5 -24.5t-16.5 -63.5z" />
-<glyph unicode="&#177;" horiz-adv-x="415" d="M35 469h139v155h67v-155h139v-67h-139v-105h-67v105h-139zM35 247h345v-67l-345 0z" />
-<glyph unicode="&#178;" horiz-adv-x="330" d="M267 695q0 -32 -8.5 -62.5q-8.5 -30.5 -23 -60q-14.5 -29.5 -34 -58q-19.5 -28.5 -40.5 -56.5l-37 -32v-2l46 15h112v-59h-238v32q21 21 48.5 53.5q27.5 32.5 52.5 69.5q25 37 42 76q17 39 17 74q0 30 -15.5 46q-15.5 16 -38.5 16q-22 0 -42.5 -7q-20.5 -7 -34.5 -17l-20 52q20 16 49.5 24q29.5 8 58.5 8q51 0 78.5 -29t27.5 -83z" />
-<glyph unicode="&#179;" horiz-adv-x="330" d="M141 430q38 0 57.5 20.5q19.5 20.5 18.5 57.5q1 32 -16.5 52q-17.5 20 -58.5 20h-44v23l77 119l29 27l-41 -6h-105v57h211v-32l-82 -126l-21 -17v-3l20 3q45 0 70.5 -31.5q25.5 -31.5 24.5 -85.5q1 -61 -36.5 -98q-37.5 -37 -97.5 -37q-29 0 -51 5q-22 5 -39 13l13 56q15 -8 32.5 -12.5t38.5 -4.5z" />
-<glyph unicode="&#180;" horiz-adv-x="245" d="M107 720h78v-21l-82 -128l-43 0z" />
-<glyph unicode="&#181;" horiz-adv-x="450" d="M125 500v-302q0 -72 20.5 -108.5q20.5 -36.5 67.5 -36.5q42 0 70 25q28 25 41 67l0 355h72v-337q0 -41 2 -82.5q2 -41.5 10 -80.5l-51 0l-23 62h-3q-16 -32 -48 -53q-32 -21 -78 -21q-37 0 -57.5 13q-20.5 13 -34.5 33l-5 0l18 -101v-133h-73l0 700z" />
-<glyph unicode="&#182;" horiz-adv-x="403" d="M278 700h61v-830h-61zM148 310q-27 0 -48.5 15.5q-21.5 15.5 -37.5 42.5q-16 27 -24.5 62.5q-8.5 35.5 -8.5 75.5q0 39 9.5 74.5q9.5 35.5 27.5 62q18 26.5 43.5 42q25.5 15.5 58.5 15.5h41v-830l-61 0z" />
-<glyph unicode="&#183;" horiz-adv-x="213" d="M57 295q0 28 13.5 42q13.5 14 36.5 14q23 0 36.5 -14q13.5 -14 13.5 -42q0 -29 -13.5 -43q-13.5 -14 -36.5 -14q-23 0 -36.5 14t-13.5 43z" />
-<glyph unicode="&#184;" horiz-adv-x="262" d="M156 0l-19 -43q65 -15 65 -75q0 -39 -28.5 -64.5q-28.5 -25.5 -76.5 -25.5q-20 0 -37 4l7 39q23 -2 36.5 1q13.5 3 20.5 9q7 6 9 13.5q2 7.5 2 14.5q0 28 -69 37l40 90z" />
-<glyph unicode="&#185;" horiz-adv-x="330" d="M63 437h84v257l6 36l-22 -28l-60 -40l-26 42l125 103h41v-370h75v-57l-223 0z" />
-<glyph unicode="&#186;" horiz-adv-x="323" d="M34 542q0 46 9.5 78.5q9.5 32.5 27 53q17.5 20.5 41 29.5q23.5 9 50.5 9q27 0 50.5 -8.5q23.5 -8.5 41 -28q17.5 -19.5 27 -52.5q9.5 -33 9.5 -81q0 -48 -9.5 -81q-9.5 -33 -27 -52.5q-17.5 -19.5 -41 -28q-23.5 -8.5 -50.5 -8.5q-27 0 -50.5 8.5q-23.5 8.5 -41 28q-17.5 19.5 -27 52.5q-9.5 33 -9.5 81zt0 0zM99 542q0 -65 17.5 -90q17.5 -25 45.5 -25q14 0 25.5 5q11.5 5 19.5 17.5q8 12.5 12.5 35q4.5 22.5 4.5 57.5q0 34 -4.5 56.5q-4.5 22.5 -12.5 35.5q-8 13 -19.5 18q-11.5 5 -25.5 5q-15 0 -26.5 -5q-11.5 -5 -19.5 -18q-8 -13 -12.5 -35.5t-4.5 -56.5z" />
-<glyph unicode="&#187;" horiz-adv-x="386" d="M208 268l-127 -228l-49 32l81 154l38 41l-38 36l-85 151l48 33zM357 268l-129 -230l-51 33l83 155l38 41l-38 36l-88 152l51 34z" />
-<glyph unicode="&#188;" horiz-adv-x="683" d="M505 713l49 -27l-384 -698l-50 28zM636 94h-65v-96h-61v96h-165v34l181 300h45v-278h65zM510 275l7 53h-4l-18 -50l-59 -102l-27 -30l41 4h60zM134 595l6 36l-22 -29l-59 -41l-26 44l124 102h41v-427l-64 0z" />
-<glyph unicode="&#189;" horiz-adv-x="701" d="M505 713l49 -27l-384 -698l-50 28zM640 315q0 -32 -8.5 -62.5q-8.5 -30.5 -23 -60q-14.5 -29.5 -34 -58q-19.5 -28.5 -40.5 -56.5l-37 -32v-2l46 15h112v-59h-238v32q21 21 48.5 53.5q27.5 32.5 52.5 69.5q25 37 42 76q17 39 17 74q0 30 -15.5 46q-15.5 16 -38.5 16q-22 0 -42.5 -7q-20.5 -7 -34.5 -17l-20 52q20 16 49.5 24q29.5 8 58.5 8q51 0 78.5 -29q27.5 -29 27.5 -83zt0 0zM134 595l6 36l-22 -29l-59 -41l-26 44l124 102h41v-427l-64 0z" />
-<glyph unicode="&#190;" horiz-adv-x="710" d="M533 713l49 -27l-384 -698l-50 28zM664 94h-65v-96h-61v96h-165v34l181 300h45v-278h65zM538 275l7 53h-4l-18 -50l-59 -102l-27 -30l41 4h60zM130 330q38 0 57.5 20.5q19.5 20.5 18.5 57.5q1 32 -16.5 52q-17.5 20 -58.5 20h-44v23l77 119l29 27l-41 -6h-105v57h211v-32l-82 -126l-21 -17v-3l20 3q45 0 70.5 -31.5q25.5 -31.5 24.5 -85.5q1 -61 -36.5 -98q-37.5 -37 -97.5 -37q-29 0 -51 5q-22 5 -39 13l13 56q15 -8 32.5 -12.5t38.5 -4.5z" />
-<glyph unicode="&#191;" horiz-adv-x="358" d="M239 323q3 -44 -5.5 -78q-8.5 -34 -23.5 -62.5q-15 -28.5 -32.5 -53.5q-17.5 -25 -33.5 -51.5q-16 -26.5 -26.5 -56q-10.5 -29.5 -10.5 -66.5q0 -46 20 -74q20 -28 68 -28q29 0 57 10.5q28 10.5 50 26.5l28 -56q-30 -20 -65.5 -33q-35.5 -13 -86.5 -13q-72 0 -109 42q-37 42 -37 115q0 43 11 77q11 34 27 62.5q16 28.5 35 54.5q19 26 35.5 53.5q16.5 27.5 27.5 59q11 31.5 11 71.5zM254 455q0 -28 -13.5 -42q-13.5 -14 -36.5 -14q-23 0 -36.5 14q-13.5 14 -13.5 42q0 29 13.5 43q13.5 14 36.5 14q23 0 36.5 -14t13.5 -43z" />
-<glyph unicode="&#192;" horiz-adv-x="473" d="M333 196h-198l-56 -196h-74l211 711h41l211 -711h-78zM155 263h160l-61 216l-19 105h-2l-19 -107zM302 752h-65l-127 97v21l99 0z" />
-<glyph unicode="&#193;" horiz-adv-x="473" d="M333 196h-198l-56 -196h-74l211 711h41l211 -711h-78zM155 263h160l-61 216l-19 105h-2l-19 -107zM262 870h99v-21l-131 -97l-61 0z" />
-<glyph unicode="&#194;" horiz-adv-x="473" d="M333 196h-198l-56 -196h-74l211 711h41l211 -711h-78zM155 263h160l-61 216l-19 105h-2l-19 -107zM213 870h50l102 -102v-21h-66l-47 49l-15 35l-15 -34l-52 -50h-64l0 22z" />
-<glyph unicode="&#195;" horiz-adv-x="473" d="M333 196h-198l-56 -196h-74l211 711h41l211 -711h-78zM155 263h160l-61 216l-19 105h-2l-19 -107zM100 780q28 34 51.5 46.5q23.5 12.5 44.5 12.5q16 0 30.5 -5q14.5 -5 28 -10.5q13.5 -5.5 26 -10.5q12.5 -5 25.5 -5q11 0 21.5 4q10.5 4 21.5 16l26 -37q-24 -28 -45 -38q-21 -10 -39 -10q-15 0 -29 5q-14 5 -27.5 10.5q-13.5 5.5 -26.5 10.5q-13 5 -27 5q-14 0 -27.5 -6q-13.5 -6 -29.5 -23z" />
-<glyph unicode="&#196;" horiz-adv-x="473" d="M333 196h-198l-56 -196h-74l211 711h41l211 -711h-78zM155 263h160l-61 216l-19 105h-2l-19 -107zM111 794q0 21 12.5 34q12.5 13 34.5 13q21 0 33.5 -13q12.5 -13 12.5 -34q0 -21 -12.5 -33.5q-12.5 -12.5 -33.5 -12.5q-22 0 -34.5 12.5q-12.5 12.5 -12.5 33.5zt0 0zM269 794q0 21 12.5 34q12.5 13 33.5 13q22 0 34.5 -13q12.5 -13 12.5 -34q0 -21 -12.5 -33.5q-12.5 -12.5 -34.5 -12.5q-21 0 -33.5 12.5t-12.5 33.5z" />
-<glyph unicode="&#197;" horiz-adv-x="473" d="M148 768q0 37 21 61q21 24 69 23q43 1 66.5 -20.5q23.5 -21.5 23.5 -63.5q0 -31 -16 -52.5q-16 -21.5 -48 -28.5l204 -687h-78l-57 196h-198l-56 -196h-74l204 687q-30 8 -45.5 28.5q-15.5 20.5 -15.5 52.5zt0 0zM155 263h160l-61 216l-19 105h-2l-19 -107zM202 768q0 -18 8.5 -29.5q8.5 -11.5 27.5 -11.5q36 0 36 41q0 43 -36 44q-36 -1 -36 -44z" />
-<glyph unicode="&#198;" horiz-adv-x="683" d="M315 589l-26 -98l-103 -225h132v323zM318 199h-165l-90 -199h-81l335 700h313v-69h-237v-237h217v-69h-217v-256h241v-69l-316 0z" />
-<glyph unicode="&#199;" horiz-adv-x="458" d="M430 27q-21 -18 -52 -27q-31 -9 -66 -11l-14 -32q65 -15 65 -75q0 -39 -28.5 -64.5q-28.5 -25.5 -76.5 -25.5q-20 0 -37 4l7 39q23 -2 36.5 1q13.5 3 20.5 9q7 6 9 13.5q2 7.5 2 14.5q0 28 -69 37l35 80q-48 4 -88.5 26.5q-40.5 22.5 -69.5 66q-29 43.5 -45 109.5q-16 66 -16 158q0 100 20.5 169q20.5 69 54.5 112q34 43 78.5 62q44.5 19 91.5 19q48 0 79.5 -7q31.5 -7 54.5 -17l-18 -68q-20 11 -47 17q-27 6 -62 6q-35 0 -66 -15.5q-31 -15.5 -55 -50q-24 -34.5 -38 -90.5q-14 -56 -14 -137q0 -146 50 -219q50 -73 133 -73q34 0 61 9.5q27 9.5 46 22.5z" />
-<glyph unicode="&#200;" horiz-adv-x="429" d="M64 700h311v-69h-236v-237h217v-69h-217v-256h241v-69h-316zM267 752h-65l-127 97v21l99 0z" />
-<glyph unicode="&#201;" horiz-adv-x="429" d="M64 700h311v-69h-236v-237h217v-69h-217v-256h241v-69h-316zM258 870h99v-21l-131 -97l-61 0z" />
-<glyph unicode="&#202;" horiz-adv-x="429" d="M64 700h311v-69h-236v-237h217v-69h-217v-256h241v-69h-316zM192 870h50l102 -102v-21h-66l-47 49l-15 35l-15 -34l-52 -50h-64l0 22z" />
-<glyph unicode="&#203;" horiz-adv-x="429" d="M64 700h311v-69h-236v-237h217v-69h-217v-256h241v-69h-316zM90 794q0 21 12.5 34q12.5 13 34.5 13q21 0 33.5 -13q12.5 -13 12.5 -34q0 -21 -12.5 -33.5q-12.5 -12.5 -33.5 -12.5q-22 0 -34.5 12.5q-12.5 12.5 -12.5 33.5zt0 0zM248 794q0 21 12.5 34q12.5 13 33.5 13q22 0 34.5 -13q12.5 -13 12.5 -34q0 -21 -12.5 -33.5q-12.5 -12.5 -34.5 -12.5q-21 0 -33.5 12.5t-12.5 33.5z" />
-<glyph unicode="&#204;" horiz-adv-x="233" d="M79 700h75v-700h-75zM190 752h-65l-127 97v21l99 0z" />
-<glyph unicode="&#205;" horiz-adv-x="233" d="M79 700h75v-700h-75zM140 870h99v-21l-131 -97l-61 0z" />
-<glyph unicode="&#206;" horiz-adv-x="233" d="M79 700h75v-700h-75zM93 870h50l102 -102v-21h-66l-47 49l-15 35l-15 -34l-52 -50h-64l0 22z" />
-<glyph unicode="&#207;" horiz-adv-x="233" d="M79 700h75v-700h-75zM-9 794q0 21 12.5 34q12.5 13 34.5 13q21 0 33.5 -13q12.5 -13 12.5 -34q0 -21 -12.5 -33.5q-12.5 -12.5 -33.5 -12.5q-22 0 -34.5 12.5q-12.5 12.5 -12.5 33.5zt0 0zM149 794q0 21 12.5 34q12.5 13 33.5 13q22 0 34.5 -13q12.5 -13 12.5 -34q0 -21 -12.5 -33.5q-12.5 -12.5 -34.5 -12.5q-21 0 -33.5 12.5t-12.5 33.5z" />
-<glyph unicode="&#208;" horiz-adv-x="531" d="M-1 393h71v307q16 3 35.5 4.5q19.5 1.5 39.5 2q20 0.5 39.5 1q19.5 0.5 36.5 0.5q73 0 124 -25q51 -25 83 -71.5q32 -46.5 46 -111.5q14 -65 14 -145q0 -72 -13.5 -138q-13.5 -66 -45.5 -116q-32 -50 -84.5 -80q-52.5 -30 -131.5 -30q-13 0 -33 0.5q-20 0.5 -41.5 2q-21.5 1.5 -40 2.5q-18.5 1 -28.5 3l0 335h-71zM225 639q-10 0 -21.5 0q-11.5 0 -22.5 -1q-11 -1 -20.5 -2q-9.5 -1 -15.5 -2l0 -241h117v-59h-117v-270q4 -1 14.5 -1.5q10.5 -0.5 22 -1q11.5 -0.5 22 -1q10.5 -0.5 15.5 -0.5q55 0 92 24q37 24 58.5 64.5q21.5 40.5 30.5 94q9 53.5 9 113.5q0 53 -8 104q-8 51 -28.5 90.5q-20.5 39.5 -56 64t-91.5 24.5z" />
-<glyph unicode="&#209;" horiz-adv-x="538" d="M171 444l-43 110h-3l11 -110v-444h-72v711h45l259 -454l41 -105h4l-11 105v443h72v-711h-46zM135 780q28 34 51.5 46.5q23.5 12.5 44.5 12.5q16 0 30.5 -5q14.5 -5 28 -10.5q13.5 -5.5 26 -10.5q12.5 -5 25.5 -5q11 0 21.5 4q10.5 4 21.5 16l26 -37q-24 -28 -45 -38q-21 -10 -39 -10q-15 0 -29 5q-14 5 -27.5 10.5q-13.5 5.5 -26.5 10.5q-13 5 -27 5q-14 0 -27.5 -6q-13.5 -6 -29.5 -23z" />
-<glyph unicode="&#210;" horiz-adv-x="549" d="M43 350q0 178 57 270q57 92 174 92q63 0 107 -25.5q44 -25.5 71.5 -72.5q27.5 -47 40.5 -114q13 -67 13 -150q0 -178 -57.5 -270q-57.5 -92 -174.5 -92q-62 0 -106 25.5q-44 25.5 -72 72.5q-28 47 -40.5 114q-12.5 67 -12.5 150zt0 0zM122 350q0 -59 8.5 -112q8.5 -53 26.5 -93q18 -40 47 -64q29 -24 70 -24q75 0 114 72q39 72 39 221q0 58 -8.5 111q-8.5 53 -26.5 93.5q-18 40.5 -47 64.5q-29 24 -71 24q-74 0 -113 -72q-39 -72 -39 -221zt0 0zM333 752h-65l-127 97v21l99 0z" />
-<glyph unicode="&#211;" horiz-adv-x="549" d="M43 350q0 178 57 270q57 92 174 92q63 0 107 -25.5q44 -25.5 71.5 -72.5q27.5 -47 40.5 -114q13 -67 13 -150q0 -178 -57.5 -270q-57.5 -92 -174.5 -92q-62 0 -106 25.5q-44 25.5 -72 72.5q-28 47 -40.5 114q-12.5 67 -12.5 150zt0 0zM122 350q0 -59 8.5 -112q8.5 -53 26.5 -93q18 -40 47 -64q29 -24 70 -24q75 0 114 72q39 72 39 221q0 58 -8.5 111q-8.5 53 -26.5 93.5q-18 40.5 -47 64.5q-29 24 -71 24q-74 0 -113 -72q-39 -72 -39 -221zt0 0zM335 870h99v-21l-131 -97l-61 0z" />
-<glyph unicode="&#212;" horiz-adv-x="549" d="M43 350q0 178 57 270q57 92 174 92q63 0 107 -25.5q44 -25.5 71.5 -72.5q27.5 -47 40.5 -114q13 -67 13 -150q0 -178 -57.5 -270q-57.5 -92 -174.5 -92q-62 0 -106 25.5q-44 25.5 -72 72.5q-28 47 -40.5 114q-12.5 67 -12.5 150zt0 0zM122 350q0 -59 8.5 -112q8.5 -53 26.5 -93q18 -40 47 -64q29 -24 70 -24q75 0 114 72q39 72 39 221q0 58 -8.5 111q-8.5 53 -26.5 93.5q-18 40.5 -47 64.5q-29 24 -71 24q-74 0 -113 -72q-39 -72 -39 -221zt0 0zM250 870h50l102 -102v-21h-66l-47 49l-15 35l-15 -34l-52 -50h-64l0 22z" />
-<glyph unicode="&#213;" horiz-adv-x="549" d="M43 350q0 178 57 270q57 92 174 92q63 0 107 -25.5q44 -25.5 71.5 -72.5q27.5 -47 40.5 -114q13 -67 13 -150q0 -178 -57.5 -270q-57.5 -92 -174.5 -92q-62 0 -106 25.5q-44 25.5 -72 72.5q-28 47 -40.5 114q-12.5 67 -12.5 150zt0 0zM122 350q0 -59 8.5 -112q8.5 -53 26.5 -93q18 -40 47 -64q29 -24 70 -24q75 0 114 72q39 72 39 221q0 58 -8.5 111q-8.5 53 -26.5 93.5q-18 40.5 -47 64.5q-29 24 -71 24q-74 0 -113 -72q-39 -72 -39 -221zt0 0zM139 780q28 34 51.5 46.5q23.5 12.5 44.5 12.5q16 0 30.5 -5q14.5 -5 28 -10.5q13.5 -5.5 26 -10.5q12.5 -5 25.5 -5q11 0 21.5 4q10.5 4 21.5 16l26 -37q-24 -28 -45 -38q-21 -10 -39 -10q-15 0 -29 5q-14 5 -27.5 10.5q-13.5 5.5 -26.5 10.5q-13 5 -27 5q-14 0 -27.5 -6q-13.5 -6 -29.5 -23z" />
-<glyph unicode="&#214;" horiz-adv-x="549" d="M43 350q0 178 57 270q57 92 174 92q63 0 107 -25.5q44 -25.5 71.5 -72.5q27.5 -47 40.5 -114q13 -67 13 -150q0 -178 -57.5 -270q-57.5 -92 -174.5 -92q-62 0 -106 25.5q-44 25.5 -72 72.5q-28 47 -40.5 114q-12.5 67 -12.5 150zt0 0zM122 350q0 -59 8.5 -112q8.5 -53 26.5 -93q18 -40 47 -64q29 -24 70 -24q75 0 114 72q39 72 39 221q0 58 -8.5 111q-8.5 53 -26.5 93.5q-18 40.5 -47 64.5q-29 24 -71 24q-74 0 -113 -72q-39 -72 -39 -221zt0 0zM149 794q0 21 12.5 34q12.5 13 34.5 13q21 0 33.5 -13q12.5 -13 12.5 -34q0 -21 -12.5 -33.5q-12.5 -12.5 -33.5 -12.5q-22 0 -34.5 12.5q-12.5 12.5 -12.5 33.5zt0 0zM307 794q0 21 12.5 34q12.5 13 33.5 13q22 0 34.5 -13q12.5 -13 12.5 -34q0 -21 -12.5 -33.5q-12.5 -12.5 -34.5 -12.5q-21 0 -33.5 12.5t-12.5 33.5z" />
-<glyph unicode="&#215;" horiz-adv-x="415" d="M104 513l104 -122l105 122l49 -46l-109 -128l109 -130l-49 -45l-105 122l-105 -123l-50 45l111 131l-110 128z" />
-<glyph unicode="&#216;" horiz-adv-x="549" d="M43 350q0 178 57 270q57 92 174 92q45 0 80.5 -13.5q35.5 -13.5 61.5 -38.5l30 53l48 -27l-41 -73q28 -48 40.5 -114q12.5 -66 12.5 -149q0 -178 -57.5 -270q-57.5 -92 -174.5 -92q-87 0 -140 50h-27l-49 -22l38 69q-28 48 -40.5 114.5q-12.5 66.5 -12.5 150.5zt0 0zM122 350q0 -49 5.5 -93.5q5.5 -44.5 17.5 -82.5l230 412q-18 27 -43 42q-25 15 -58 15q-74 0 -113 -72q-39 -72 -39 -221zt0 0zM427 350q0 48 -5.5 92q-5.5 44 -17.5 81l-229 -412q18 -26 42.5 -40q24.5 -14 56.5 -14q75 0 114 72t39 221z" />
-<glyph unicode="&#217;" horiz-adv-x="521" d="M385 700h72v-469q0 -127 -49.5 -183.5q-49.5 -56.5 -140.5 -56.5q-106 0 -154.5 55q-48.5 55 -48.5 169v485h75v-446q0 -54 7 -91q7 -37 23 -60q16 -23 40 -33q24 -10 59 -10q66 0 91.5 46q25.5 46 25.5 148zM326 752h-65l-127 97v21l99 0z" />
-<glyph unicode="&#218;" horiz-adv-x="521" d="M385 700h72v-469q0 -127 -49.5 -183.5q-49.5 -56.5 -140.5 -56.5q-106 0 -154.5 55q-48.5 55 -48.5 169v485h75v-446q0 -54 7 -91q7 -37 23 -60q16 -23 40 -33q24 -10 59 -10q66 0 91.5 46q25.5 46 25.5 148zM311 870h99v-21l-131 -97l-61 0z" />
-<glyph unicode="&#219;" horiz-adv-x="521" d="M385 700h72v-469q0 -127 -49.5 -183.5q-49.5 -56.5 -140.5 -56.5q-106 0 -154.5 55q-48.5 55 -48.5 169v485h75v-446q0 -54 7 -91q7 -37 23 -60q16 -23 40 -33q24 -10 59 -10q66 0 91.5 46q25.5 46 25.5 148zM240 870h50l102 -102v-21h-66l-47 49l-15 35l-15 -34l-52 -50h-64l0 22z" />
-<glyph unicode="&#220;" horiz-adv-x="521" d="M385 700h72v-469q0 -127 -49.5 -183.5q-49.5 -56.5 -140.5 -56.5q-106 0 -154.5 55q-48.5 55 -48.5 169v485h75v-446q0 -54 7 -91q7 -37 23 -60q16 -23 40 -33q24 -10 59 -10q66 0 91.5 46q25.5 46 25.5 148zM135 794q0 21 12.5 34q12.5 13 34.5 13q21 0 33.5 -13q12.5 -13 12.5 -34q0 -21 -12.5 -33.5q-12.5 -12.5 -33.5 -12.5q-22 0 -34.5 12.5q-12.5 12.5 -12.5 33.5zt0 0zM293 794q0 21 12.5 34q12.5 13 33.5 13q22 0 34.5 -13q12.5 -13 12.5 -34q0 -21 -12.5 -33.5q-12.5 -12.5 -34.5 -12.5q-21 0 -33.5 12.5t-12.5 33.5z" />
-<glyph unicode="&#221;" horiz-adv-x="455" d="M191 278l-186 422h88l126 -305l13 -61h2l13 63l122 303h81l-184 -421v-279h-75zM282 870h99v-21l-131 -97l-61 0z" />
-<glyph unicode="&#222;" horiz-adv-x="452" d="M65 700h75v-78q31 3 64 3q40 0 79 -9.5q39 -9.5 70.5 -33.5q31.5 -24 51 -66q19.5 -42 19.5 -107q0 -63 -18.5 -107q-18.5 -44 -49 -71q-30.5 -27 -70 -39.5q-39.5 -12.5 -81.5 -12.5q-4 0 -13 0q-9 0 -19 0.5q-10 0.5 -19.5 1.5q-9.5 1 -13.5 2l0 -183h-75zM140 252q4 -2 12.5 -2.5q8.5 -0.5 17.5 -1.5q9 -1 17.5 -1q8.5 0 12.5 0q28 0 54 7q26 7 46 25.5q20 18.5 32.5 50q12.5 31.5 12.5 80.5q0 41 -11.5 69q-11.5 28 -30 45.5q-18.5 17.5 -43.5 25q-25 7.5 -52 7.5q-20 0 -38.5 -1q-18.5 -1 -29.5 -4z" />
-<glyph unicode="&#223;" horiz-adv-x="488" d="M77 500v25q0 99 41.5 140q41.5 41 112.5 41q33 0 61.5 -9q28.5 -9 50 -26.5q21.5 -17.5 33.5 -43q12 -25.5 12 -58.5q0 -33 -16 -56.5q-16 -23.5 -34.5 -42.5q-18.5 -19 -34.5 -38q-16 -19 -16 -43q0 -23 12.5 -39q12.5 -16 31 -30q18.5 -14 40.5 -28.5q22 -14.5 40.5 -34.5q18.5 -20 31 -48.5q12.5 -28.5 12.5 -70.5q0 -28 -10 -55q-10 -27 -29 -48q-19 -21 -47 -34q-28 -13 -65 -13q-37 0 -60.5 6q-23.5 6 -45.5 20l20 61q21 -12 36.5 -17.5q15.5 -5.5 43.5 -5.5q34 0 59.5 23q25.5 23 25.5 61q0 31 -12.5 51.5q-12.5 20.5 -31.5 36q-19 15.5 -40.5 29q-21.5 13.5 -40.5 31q-19 17.5 -31.5 41.5q-12.5 24 -12.5 61q0 33 16 56q16 23 35 42.5q19 19.5 35 38.5q16 19 16 43q0 17 -7.5 31q-7.5 14 -19.5 23.5q-12 9.5 -26.5 15q-14.5 5.5 -29.5 5.5q-22 0 -38 -6.5q-16 -6.5 -26 -22.5q-10 -16 -15 -43.5q-5 -27.5 -5 -69.5v-499h-72v435h-61l0 65z" />
-<glyph unicode="&#224;" horiz-adv-x="400" d="M54 470q29 18 70.5 28q41.5 10 87.5 10q42 0 67.5 -12.5q25.5 -12.5 40 -34q14.5 -21.5 19 -49q4.5 -27.5 4.5 -57.5q0 -60 -2.5 -117q-2.5 -57 -2.5 -108q0 -38 2.5 -70.5q2.5 -32.5 9.5 -61.5l-55 0l-17 59h-4q-15 -26 -44 -45q-29 -19 -78 -19q-54 0 -88.5 37.5q-34.5 37.5 -34.5 103.5q0 43 14.5 72q14.5 29 41 47q26.5 18 63 25.5q36.5 7.5 81.5 7.5q10 0 20 0q10 0 21 -1q3 31 3 55q0 57 -17 80q-17 23 -62 23q-28 0 -61 -8.5q-33 -8.5 -55 -21.5zM271 228q-10 1 -20 1.5q-10 0.5 -20 0.5q-24 0 -47 -4q-23 -4 -41 -14q-18 -10 -28.5 -27q-10.5 -17 -10.5 -43q0 -40 19.5 -62q19.5 -22 50.5 -22q42 0 65 20q23 20 32 44zM244 571h-41l-94 128v21l83 0z" />
-<glyph unicode="&#225;" horiz-adv-x="400" d="M54 470q29 18 70.5 28q41.5 10 87.5 10q42 0 67.5 -12.5q25.5 -12.5 40 -34q14.5 -21.5 19 -49q4.5 -27.5 4.5 -57.5q0 -60 -2.5 -117q-2.5 -57 -2.5 -108q0 -38 2.5 -70.5q2.5 -32.5 9.5 -61.5l-55 0l-17 59h-4q-15 -26 -44 -45q-29 -19 -78 -19q-54 0 -88.5 37.5q-34.5 37.5 -34.5 103.5q0 43 14.5 72q14.5 29 41 47q26.5 18 63 25.5q36.5 7.5 81.5 7.5q10 0 20 0q10 0 21 -1q3 31 3 55q0 57 -17 80q-17 23 -62 23q-28 0 -61 -8.5q-33 -8.5 -55 -21.5zM271 228q-10 1 -20 1.5q-10 0.5 -20 0.5q-24 0 -47 -4q-23 -4 -41 -14q-18 -10 -28.5 -27q-10.5 -17 -10.5 -43q0 -40 19.5 -62q19.5 -22 50.5 -22q42 0 65 20q23 20 32 44zM194 720h78v-21l-82 -128l-43 0z" />
-<glyph unicode="&#226;" horiz-adv-x="400" d="M54 470q29 18 70.5 28q41.5 10 87.5 10q42 0 67.5 -12.5q25.5 -12.5 40 -34q14.5 -21.5 19 -49q4.5 -27.5 4.5 -57.5q0 -60 -2.5 -117q-2.5 -57 -2.5 -108q0 -38 2.5 -70.5q2.5 -32.5 9.5 -61.5l-55 0l-17 59h-4q-15 -26 -44 -45q-29 -19 -78 -19q-54 0 -88.5 37.5q-34.5 37.5 -34.5 103.5q0 43 14.5 72q14.5 29 41 47q26.5 18 63 25.5q36.5 7.5 81.5 7.5q10 0 20 0q10 0 21 -1q3 31 3 55q0 57 -17 80q-17 23 -62 23q-28 0 -61 -8.5q-33 -8.5 -55 -21.5zM271 228q-10 1 -20 1.5q-10 0.5 -20 0.5q-24 0 -47 -4q-23 -4 -41 -14q-18 -10 -28.5 -27q-10.5 -17 -10.5 -43q0 -40 19.5 -62q19.5 -22 50.5 -22q42 0 65 20q23 20 32 44zM190 732h35l89 -182h-63l-32 66l-16 58l-17 -58l-36 -66l-59 0z" />
-<glyph unicode="&#227;" horiz-adv-x="400" d="M54 470q29 18 70.5 28q41.5 10 87.5 10q42 0 67.5 -12.5q25.5 -12.5 40 -34q14.5 -21.5 19 -49q4.5 -27.5 4.5 -57.5q0 -60 -2.5 -117q-2.5 -57 -2.5 -108q0 -38 2.5 -70.5q2.5 -32.5 9.5 -61.5l-55 0l-17 59h-4q-15 -26 -44 -45q-29 -19 -78 -19q-54 0 -88.5 37.5q-34.5 37.5 -34.5 103.5q0 43 14.5 72q14.5 29 41 47q26.5 18 63 25.5q36.5 7.5 81.5 7.5q10 0 20 0q10 0 21 -1q3 31 3 55q0 57 -17 80q-17 23 -62 23q-28 0 -61 -8.5q-33 -8.5 -55 -21.5zM271 228q-10 1 -20 1.5q-10 0.5 -20 0.5q-24 0 -47 -4q-23 -4 -41 -14q-18 -10 -28.5 -27q-10.5 -17 -10.5 -43q0 -40 19.5 -62q19.5 -22 50.5 -22q42 0 65 20q23 20 32 44zM80 653q27 34 48 46.5q21 12.5 38 12.5q14 0 26 -6q12 -6 23.5 -12.5q11.5 -6.5 22 -12.5q10.5 -6 22.5 -6q9 0 18.5 4.5q9.5 4.5 20.5 16.5l23 -38q-24 -29 -42.5 -40q-18.5 -11 -34.5 -11q-14 0 -26 5.5q-12 5.5 -23.5 12.5q-11.5 7 -22.5 12.5q-11 5.5 -23 5.5q-11 0 -22 -5.5q-11 -5.5 -24 -19.5z" />
-<glyph unicode="&#228;" horiz-adv-x="400" d="M54 470q29 18 70.5 28q41.5 10 87.5 10q42 0 67.5 -12.5q25.5 -12.5 40 -34q14.5 -21.5 19 -49q4.5 -27.5 4.5 -57.5q0 -60 -2.5 -117q-2.5 -57 -2.5 -108q0 -38 2.5 -70.5q2.5 -32.5 9.5 -61.5l-55 0l-17 59h-4q-15 -26 -44 -45q-29 -19 -78 -19q-54 0 -88.5 37.5q-34.5 37.5 -34.5 103.5q0 43 14.5 72q14.5 29 41 47q26.5 18 63 25.5q36.5 7.5 81.5 7.5q10 0 20 0q10 0 21 -1q3 31 3 55q0 57 -17 80q-17 23 -62 23q-28 0 -61 -8.5q-33 -8.5 -55 -21.5zM271 228q-10 1 -20 1.5q-10 0.5 -20 0.5q-24 0 -47 -4q-23 -4 -41 -14q-18 -10 -28.5 -27q-10.5 -17 -10.5 -43q0 -40 19.5 -62q19.5 -22 50.5 -22q42 0 65 20q23 20 32 44zM78 653q0 23 11.5 36q11.5 13 31.5 13q20 0 31.5 -13q11.5 -13 11.5 -36q0 -21 -11.5 -34q-11.5 -13 -31.5 -13q-20 0 -31.5 13q-11.5 13 -11.5 34zt0 0zM237 653q0 23 11.5 36q11.5 13 31.5 13q20 0 31.5 -13q11.5 -13 11.5 -36q0 -21 -11.5 -34q-11.5 -13 -31.5 -13q-20 0 -31.5 13t-11.5 34z" />
-<glyph unicode="&#229;" horiz-adv-x="400" d="M54 470q29 18 70.5 28q41.5 10 87.5 10q42 0 67.5 -12.5q25.5 -12.5 40 -34q14.5 -21.5 19 -49q4.5 -27.5 4.5 -57.5q0 -60 -2.5 -117q-2.5 -57 -2.5 -108q0 -38 2.5 -70.5q2.5 -32.5 9.5 -61.5l-55 0l-17 59h-4q-15 -26 -44 -45q-29 -19 -78 -19q-54 0 -88.5 37.5q-34.5 37.5 -34.5 103.5q0 43 14.5 72q14.5 29 41 47q26.5 18 63 25.5q36.5 7.5 81.5 7.5q10 0 20 0q10 0 21 -1q3 31 3 55q0 57 -17 80q-17 23 -62 23q-28 0 -61 -8.5q-33 -8.5 -55 -21.5zM271 228q-10 1 -20 1.5q-10 0.5 -20 0.5q-24 0 -47 -4q-23 -4 -41 -14q-18 -10 -28.5 -27q-10.5 -17 -10.5 -43q0 -40 19.5 -62q19.5 -22 50.5 -22q42 0 65 20q23 20 32 44zM118 643q0 42 22 65.5q22 23.5 60 23.5q36 0 59.5 -21q23.5 -21 23.5 -68q0 -40 -22.5 -64q-22.5 -24 -60.5 -24q-38 0 -60 22.5q-22 22.5 -22 65.5zt0 0zM166 643q0 -23 10 -34.5q10 -11.5 24 -11.5q16 0 25.5 11q9.5 11 9.5 35q0 24 -10.5 35.5q-10.5 11.5 -24.5 11.5q-14 0 -24 -11t-10 -36z" />
-<glyph unicode="&#230;" horiz-adv-x="642" d="M173 57q21 0 37.5 6.5q16.5 6.5 28.5 17q12 10.5 20 23q8 12.5 12 25.5l0 101q-10 1 -20 1.5q-10 0.5 -20 0.5q-24 0 -47 -4q-23 -4 -41 -14q-18 -10 -28.5 -27q-10.5 -17 -10.5 -43q0 -35 19 -61q19 -26 50 -26zt0 0zM294 73q-20 -35 -54.5 -58q-34.5 -23 -85.5 -23q-56 0 -90.5 39q-34.5 39 -34.5 105q0 44 14.5 73.5q14.5 29.5 40.5 47q26 17.5 62 25q36 7.5 80 7.5q11 0 22 -0.5q11 -0.5 22 -1.5q3 31 3 55q0 57 -17 79.5q-17 22.5 -62 22.5q-28 0 -62 -10q-34 -10 -57 -26l-22 56q31 23 72.5 33.5q41.5 10.5 86.5 10.5q84 0 109 -64q20 36 55.5 52q35.5 16 70.5 16q28 0 55.5 -7.5q27.5 -7.5 49.5 -29q22 -21.5 35.5 -60q13.5 -38.5 13.5 -99.5q0 -17 -1.5 -36q-1.5 -19 -3.5 -40l-253 0q1 -92 28 -139.5q27 -47.5 95 -47.5q28 0 55 10q27 10 41 22l26 -53q-25 -20 -61 -32q-36 -12 -80 -12q-50 0 -89 21.5q-39 21.5 -58 63.5zM447 447q-45 0 -72 -36q-27 -36 -32 -112l188 0q2 75 -20.5 111.5t-63.5 36.5z" />
-<glyph unicode="&#231;" horiz-adv-x="356" d="M335 25q-20 -15 -44 -23.5q-24 -8.5 -50 -11.5l-14 -33q65 -15 65 -75q0 -39 -28.5 -64.5q-28.5 -25.5 -76.5 -25.5q-20 0 -37 4l7 39q23 -2 36.5 1q13.5 3 20.5 9q7 6 9 13.5q2 7.5 2 14.5q0 28 -69 37l35 79q-42 4 -71.5 24.5q-29.5 20.5 -47.5 54q-18 33.5 -26.5 80q-8.5 46.5 -8.5 102.5q0 128 45.5 195q45.5 67 130.5 67q39 0 67 -7q28 -7 48 -18v-62q-58 22 -107 22q-54 0 -81.5 -47.5q-27.5 -47.5 -27.5 -149.5q0 -41 6 -76.5q6 -35.5 20 -62q14 -26.5 36 -41.5q22 -15 55 -15q26 0 48.5 8.5q22.5 8.5 36.5 20.5z" />
-<glyph unicode="&#232;" horiz-adv-x="413" d="M358 34q-24 -22 -61 -34q-37 -12 -78 -12q-47 0 -81.5 18.5q-34.5 18.5 -57 53q-22.5 34.5 -33 82.5q-10.5 48 -10.5 108q0 128 47 195q47 67 133 67q28 0 55.5 -7q27.5 -7 49.5 -28q22 -21 35.5 -59q13.5 -38 13.5 -99q0 -17 -1.5 -36.5q-1.5 -19.5 -3.5 -40.5l-254 0q0 -43 7 -78q7 -35 22 -59.5q15 -24.5 38.5 -38q23.5 -13.5 58.5 -13.5q27 0 53.5 10q26.5 10 40.5 24zM302 302q2 75 -21 110q-23 35 -63 35q-46 0 -73 -35q-27 -35 -32 -110zM261 571h-41l-94 128v21l83 0z" />
-<glyph unicode="&#233;" horiz-adv-x="413" d="M358 34q-24 -22 -61 -34q-37 -12 -78 -12q-47 0 -81.5 18.5q-34.5 18.5 -57 53q-22.5 34.5 -33 82.5q-10.5 48 -10.5 108q0 128 47 195q47 67 133 67q28 0 55.5 -7q27.5 -7 49.5 -28q22 -21 35.5 -59q13.5 -38 13.5 -99q0 -17 -1.5 -36.5q-1.5 -19.5 -3.5 -40.5l-254 0q0 -43 7 -78q7 -35 22 -59.5q15 -24.5 38.5 -38q23.5 -13.5 58.5 -13.5q27 0 53.5 10q26.5 10 40.5 24zM302 302q2 75 -21 110q-23 35 -63 35q-46 0 -73 -35q-27 -35 -32 -110zM232 720h78v-21l-82 -128l-43 0z" />
-<glyph unicode="&#234;" horiz-adv-x="413" d="M358 34q-24 -22 -61 -34q-37 -12 -78 -12q-47 0 -81.5 18.5q-34.5 18.5 -57 53q-22.5 34.5 -33 82.5q-10.5 48 -10.5 108q0 128 47 195q47 67 133 67q28 0 55.5 -7q27.5 -7 49.5 -28q22 -21 35.5 -59q13.5 -38 13.5 -99q0 -17 -1.5 -36.5q-1.5 -19.5 -3.5 -40.5l-254 0q0 -43 7 -78q7 -35 22 -59.5q15 -24.5 38.5 -38q23.5 -13.5 58.5 -13.5q27 0 53.5 10q26.5 10 40.5 24zM302 302q2 75 -21 110q-23 35 -63 35q-46 0 -73 -35q-27 -35 -32 -110zM197 732h35l89 -182h-63l-32 66l-16 58l-17 -58l-36 -66l-59 0z" />
-<glyph unicode="&#235;" horiz-adv-x="413" d="M358 34q-24 -22 -61 -34q-37 -12 -78 -12q-47 0 -81.5 18.5q-34.5 18.5 -57 53q-22.5 34.5 -33 82.5q-10.5 48 -10.5 108q0 128 47 195q47 67 133 67q28 0 55.5 -7q27.5 -7 49.5 -28q22 -21 35.5 -59q13.5 -38 13.5 -99q0 -17 -1.5 -36.5q-1.5 -19.5 -3.5 -40.5l-254 0q0 -43 7 -78q7 -35 22 -59.5q15 -24.5 38.5 -38q23.5 -13.5 58.5 -13.5q27 0 53.5 10q26.5 10 40.5 24zM302 302q2 75 -21 110q-23 35 -63 35q-46 0 -73 -35q-27 -35 -32 -110zM93 653q0 23 11.5 36q11.5 13 31.5 13q20 0 31.5 -13q11.5 -13 11.5 -36q0 -21 -11.5 -34q-11.5 -13 -31.5 -13q-20 0 -31.5 13q-11.5 13 -11.5 34zt0 0zM252 653q0 23 11.5 36q11.5 13 31.5 13q20 0 31.5 -13q11.5 -13 11.5 -36q0 -21 -11.5 -34q-11.5 -13 -31.5 -13q-20 0 -31.5 13t-11.5 34z" />
-<glyph unicode="&#236;" horiz-adv-x="217" d="M71 500h72v-500h-72zM139 571h-41l-94 128v21l83 0z" />
-<glyph unicode="&#237;" horiz-adv-x="217" d="M71 500h72v-500h-72zM123 720h78v-21l-82 -128l-43 0z" />
-<glyph unicode="&#238;" horiz-adv-x="217" d="M71 500h72v-500h-72zM93 732h35l89 -182h-63l-32 66l-16 58l-17 -58l-36 -66l-59 0z" />
-<glyph unicode="&#239;" horiz-adv-x="217" d="M71 500h72v-500h-72zM-14 653q0 23 11.5 36q11.5 13 31.5 13q20 0 31.5 -13q11.5 -13 11.5 -36q0 -21 -11.5 -34q-11.5 -13 -31.5 -13q-20 0 -31.5 13q-11.5 13 -11.5 34zt0 0zM145 653q0 23 11.5 36q11.5 13 31.5 13q20 0 31.5 -13q11.5 -13 11.5 -36q0 -21 -11.5 -34q-11.5 -13 -31.5 -13q-20 0 -31.5 13t-11.5 34z" />
-<glyph unicode="&#240;" horiz-adv-x="450" d="M169 589l57 38q-32 26 -67 41l32 44q16 -8 38 -20q22 -12 46 -33l60 40l24 -39l-50 -33q20 -23 38 -54q18 -31 32 -71.5q14 -40.5 22 -91.5q8 -51 8 -114q0 -86 -14.5 -144.5q-14.5 -58.5 -39.5 -95q-25 -36.5 -58.5 -52.5q-33.5 -16 -72.5 -16q-48 0 -83 19q-35 19 -57 53.5q-22 34.5 -32.5 83q-10.5 48.5 -10.5 107.5q0 57 12 104.5q12 47.5 35.5 82q23.5 34.5 57 53.5q33.5 19 76.5 19q35 0 62 -12q27 -12 41 -30q-11 38 -27.5 69.5q-16.5 31.5 -37.5 56.5l-66 -43zM115 251q0 -105 32 -151q32 -46 82 -46q23 0 43 13q20 13 34.5 41q14.5 28 23 73q8.5 45 8.5 109q0 10 -0.5 24.5q-0.5 14.5 -1.5 29q-1 14.5 -2.5 27.5q-1.5 13 -2.5 21q-14 26 -43 39q-29 13 -58 13q-30 0 -51.5 -14q-21.5 -14 -36 -39.5q-14.5 -25.5 -21 -61t-6.5 -78.5z" />
-<glyph unicode="&#241;" horiz-adv-x="439" d="M315 0v305q0 75 -17.5 108.5q-17.5 33.5 -62.5 33.5q-40 0 -66 -24q-26 -24 -38 -59l0 -364h-72v500h52l13 -53h3q19 27 51.5 46q32.5 19 77.5 19q32 0 56.5 -9q24.5 -9 41 -30.5q16.5 -21.5 25 -57.5q8.5 -36 8.5 -91v-324zM100 653q27 34 48 46.5q21 12.5 38 12.5q14 0 26 -6q12 -6 23.5 -12.5q11.5 -6.5 22 -12.5q10.5 -6 22.5 -6q9 0 18.5 4.5q9.5 4.5 20.5 16.5l23 -38q-24 -29 -42.5 -40q-18.5 -11 -34.5 -11q-14 0 -26 5.5q-12 5.5 -23.5 12.5q-11.5 7 -22.5 12.5q-11 5.5 -23 5.5q-11 0 -22 -5.5q-11 -5.5 -24 -19.5z" />
-<glyph unicode="&#242;" horiz-adv-x="432" d="M37 250q0 135 46.5 198.5q46.5 63.5 132.5 63.5q92 0 135.5 -65q43.5 -65 43.5 -197q0 -136 -47 -199q-47 -63 -132 -63q-92 0 -135.5 65q-43.5 65 -43.5 197zt0 0zM112 250q0 -44 5.5 -80q5.5 -36 18 -62q12.5 -26 32.5 -40.5q20 -14.5 48 -14.5q52 0 78 46.5q26 46.5 26 150.5q0 43 -5.5 79.5q-5.5 36.5 -18 62.5q-12.5 26 -32.5 40.5q-20 14.5 -48 14.5q-51 0 -77.5 -47q-26.5 -47 -26.5 -150zt0 0zM254 571h-41l-94 128v21l83 0z" />
-<glyph unicode="&#243;" horiz-adv-x="432" d="M37 250q0 135 46.5 198.5q46.5 63.5 132.5 63.5q92 0 135.5 -65q43.5 -65 43.5 -197q0 -136 -47 -199q-47 -63 -132 -63q-92 0 -135.5 65q-43.5 65 -43.5 197zt0 0zM112 250q0 -44 5.5 -80q5.5 -36 18 -62q12.5 -26 32.5 -40.5q20 -14.5 48 -14.5q52 0 78 46.5q26 46.5 26 150.5q0 43 -5.5 79.5q-5.5 36.5 -18 62.5q-12.5 26 -32.5 40.5q-20 14.5 -48 14.5q-51 0 -77.5 -47q-26.5 -47 -26.5 -150zt0 0zM227 720h78v-21l-82 -128l-43 0z" />
-<glyph unicode="&#244;" horiz-adv-x="432" d="M37 250q0 135 46.5 198.5q46.5 63.5 132.5 63.5q92 0 135.5 -65q43.5 -65 43.5 -197q0 -136 -47 -199q-47 -63 -132 -63q-92 0 -135.5 65q-43.5 65 -43.5 197zt0 0zM112 250q0 -44 5.5 -80q5.5 -36 18 -62q12.5 -26 32.5 -40.5q20 -14.5 48 -14.5q52 0 78 46.5q26 46.5 26 150.5q0 43 -5.5 79.5q-5.5 36.5 -18 62.5q-12.5 26 -32.5 40.5q-20 14.5 -48 14.5q-51 0 -77.5 -47q-26.5 -47 -26.5 -150zt0 0zM206 732h35l89 -182h-63l-32 66l-16 58l-17 -58l-36 -66l-59 0z" />
-<glyph unicode="&#245;" horiz-adv-x="432" d="M37 250q0 135 46.5 198.5q46.5 63.5 132.5 63.5q92 0 135.5 -65q43.5 -65 43.5 -197q0 -136 -47 -199q-47 -63 -132 -63q-92 0 -135.5 65q-43.5 65 -43.5 197zt0 0zM112 250q0 -44 5.5 -80q5.5 -36 18 -62q12.5 -26 32.5 -40.5q20 -14.5 48 -14.5q52 0 78 46.5q26 46.5 26 150.5q0 43 -5.5 79.5q-5.5 36.5 -18 62.5q-12.5 26 -32.5 40.5q-20 14.5 -48 14.5q-51 0 -77.5 -47q-26.5 -47 -26.5 -150zt0 0zM96 653q27 34 48 46.5q21 12.5 38 12.5q14 0 26 -6q12 -6 23.5 -12.5q11.5 -6.5 22 -12.5q10.5 -6 22.5 -6q9 0 18.5 4.5q9.5 4.5 20.5 16.5l23 -38q-24 -29 -42.5 -40q-18.5 -11 -34.5 -11q-14 0 -26 5.5q-12 5.5 -23.5 12.5q-11.5 7 -22.5 12.5q-11 5.5 -23 5.5q-11 0 -22 -5.5q-11 -5.5 -24 -19.5z" />
-<glyph unicode="&#246;" horiz-adv-x="432" d="M37 250q0 135 46.5 198.5q46.5 63.5 132.5 63.5q92 0 135.5 -65q43.5 -65 43.5 -197q0 -136 -47 -199q-47 -63 -132 -63q-92 0 -135.5 65q-43.5 65 -43.5 197zt0 0zM112 250q0 -44 5.5 -80q5.5 -36 18 -62q12.5 -26 32.5 -40.5q20 -14.5 48 -14.5q52 0 78 46.5q26 46.5 26 150.5q0 43 -5.5 79.5q-5.5 36.5 -18 62.5q-12.5 26 -32.5 40.5q-20 14.5 -48 14.5q-51 0 -77.5 -47q-26.5 -47 -26.5 -150zt0 0zM94 653q0 23 11.5 36q11.5 13 31.5 13q20 0 31.5 -13q11.5 -13 11.5 -36q0 -21 -11.5 -34q-11.5 -13 -31.5 -13q-20 0 -31.5 13q-11.5 13 -11.5 34zt0 0zM253 653q0 23 11.5 36q11.5 13 31.5 13q20 0 31.5 -13q11.5 -13 11.5 -36q0 -21 -11.5 -34q-11.5 -13 -31.5 -13q-20 0 -31.5 13t-11.5 34z" />
-<glyph unicode="&#247;" horiz-adv-x="415" d="M35 373h344v-67h-344zM157 508q0 28 13.5 42q13.5 14 36.5 14q23 0 36.5 -14q13.5 -14 13.5 -42q0 -29 -13.5 -43q-13.5 -14 -36.5 -14q-23 0 -36.5 14q-13.5 14 -13.5 43zt0 0zM157 171q0 28 13.5 42q13.5 14 36.5 14q23 0 36.5 -14q13.5 -14 13.5 -42q0 -29 -13.5 -43q-13.5 -14 -36.5 -14q-23 0 -36.5 14t-13.5 43z" />
-<glyph unicode="&#248;" horiz-adv-x="436" d="M40 250q0 131 46.5 196.5q46.5 65.5 132.5 65.5q58 0 98 -29l19 32l49 -30l-27 -48q20 -33 30 -80q10 -47 10 -107q0 -133 -46.5 -197.5q-46.5 -64.5 -132.5 -64.5q-62 0 -103 32l-21 -34l-49 32l30 51q-36 66 -36 181zt0 0zM323 250q0 32 -2.5 60.5q-2.5 28.5 -9.5 51.5l-160 -275q26 -34 68 -34q52 0 78 47q26 47 26 150zt0 0zM115 250q0 -30 2 -57q2 -27 8 -50l157 275q-12 14 -27.5 21.5q-15.5 7.5 -35.5 7.5q-51 0 -77.5 -47t-26.5 -150z" />
-<glyph unicode="&#249;" horiz-adv-x="434" d="M124 500v-306q0 -76 15.5 -108.5q15.5 -32.5 56.5 -32.5q21 0 37.5 8.5q16.5 8.5 29.5 22.5q13 14 23 32q10 18 16 37l0 347h72v-358q0 -36 2.5 -74.5q2.5 -38.5 7.5 -67.5l-51 0l-18 70h-3q-17 -33 -49 -57.5q-32 -24.5 -80 -24.5q-32 0 -56 8q-24 8 -41 29q-17 21 -25.5 57.5q-8.5 36.5 -8.5 93.5v324zM249 571h-41l-94 128v21l83 0z" />
-<glyph unicode="&#250;" horiz-adv-x="434" d="M124 500v-306q0 -76 15.5 -108.5q15.5 -32.5 56.5 -32.5q21 0 37.5 8.5q16.5 8.5 29.5 22.5q13 14 23 32q10 18 16 37l0 347h72v-358q0 -36 2.5 -74.5q2.5 -38.5 7.5 -67.5l-51 0l-18 70h-3q-17 -33 -49 -57.5q-32 -24.5 -80 -24.5q-32 0 -56 8q-24 8 -41 29q-17 21 -25.5 57.5q-8.5 36.5 -8.5 93.5v324zM226 720h78v-21l-82 -128l-43 0z" />
-<glyph unicode="&#251;" horiz-adv-x="434" d="M124 500v-306q0 -76 15.5 -108.5q15.5 -32.5 56.5 -32.5q21 0 37.5 8.5q16.5 8.5 29.5 22.5q13 14 23 32q10 18 16 37l0 347h72v-358q0 -36 2.5 -74.5q2.5 -38.5 7.5 -67.5l-51 0l-18 70h-3q-17 -33 -49 -57.5q-32 -24.5 -80 -24.5q-32 0 -56 8q-24 8 -41 29q-17 21 -25.5 57.5q-8.5 36.5 -8.5 93.5v324zM203 732h35l89 -182h-63l-32 66l-16 58l-17 -58l-36 -66l-59 0z" />
-<glyph unicode="&#252;" horiz-adv-x="434" d="M124 500v-306q0 -76 15.5 -108.5q15.5 -32.5 56.5 -32.5q21 0 37.5 8.5q16.5 8.5 29.5 22.5q13 14 23 32q10 18 16 37l0 347h72v-358q0 -36 2.5 -74.5q2.5 -38.5 7.5 -67.5l-51 0l-18 70h-3q-17 -33 -49 -57.5q-32 -24.5 -80 -24.5q-32 0 -56 8q-24 8 -41 29q-17 21 -25.5 57.5q-8.5 36.5 -8.5 93.5v324zM95 653q0 23 11.5 36q11.5 13 31.5 13q20 0 31.5 -13q11.5 -13 11.5 -36q0 -21 -11.5 -34q-11.5 -13 -31.5 -13q-20 0 -31.5 13q-11.5 13 -11.5 34zt0 0zM254 653q0 23 11.5 36q11.5 13 31.5 13q20 0 31.5 -13q11.5 -13 11.5 -36q0 -21 -11.5 -34q-11.5 -13 -31.5 -13q-20 0 -31.5 13t-11.5 34z" />
-<glyph unicode="&#253;" horiz-adv-x="376" d="M183 177l21 -97h5l15 97l76 323h73l-119 -449q-14 -54 -28 -101q-14 -47 -30.5 -81.5q-16.5 -34.5 -37 -54q-20.5 -19.5 -48.5 -19.5q-28 0 -49 9l12 68q14 -5 28 -2q14 3 26.5 17q12.5 14 23 41.5q10.5 27.5 18.5 71.5l-162 500h82zM219 720h78v-21l-82 -128l-43 0z" />
-<glyph unicode="&#254;" horiz-adv-x="435" d="M59 700h72v-240h3q16 24 42.5 38q26.5 14 64.5 14q79 0 118 -59q39 -59 39 -193q0 -63 -13 -113.5q-13 -50.5 -37 -85.5q-24 -35 -58 -54q-34 -19 -76 -19q-29 0 -47.5 4q-18.5 4 -35.5 13l0 -205h-72zM224 447q-35 0 -59 -22.5q-24 -22.5 -34 -62.5l0 -284q14 -12 31.5 -18.5q17.5 -6.5 46.5 -6.5q53 0 83.5 54q30.5 54 30.5 154q0 42 -5.5 76q-5.5 34 -17 58.5q-11.5 24.5 -30.5 38t-46 13.5z" />
-<glyph unicode="&#255;" horiz-adv-x="376" d="M183 177l21 -97h5l15 97l76 323h73l-119 -449q-14 -54 -28 -101q-14 -47 -30.5 -81.5q-16.5 -34.5 -37 -54q-20.5 -19.5 -48.5 -19.5q-28 0 -49 9l12 68q14 -5 28 -2q14 3 26.5 17q12.5 14 23 41.5q10.5 27.5 18.5 71.5l-162 500h82zM66 653q0 23 11.5 36q11.5 13 31.5 13q20 0 31.5 -13q11.5 -13 11.5 -36q0 -21 -11.5 -34q-11.5 -13 -31.5 -13q-20 0 -31.5 13q-11.5 13 -11.5 34zt0 0zM225 653q0 23 11.5 36q11.5 13 31.5 13q20 0 31.5 -13q11.5 -13 11.5 -36q0 -21 -11.5 -34q-11.5 -13 -31.5 -13q-20 0 -31.5 13t-11.5 34z" />
-<glyph unicode="&#256;" horiz-adv-x="473" d="M333 196h-198l-56 -196h-74l211 711h41l211 -711h-78zM155 263h160l-61 216l-19 105h-2l-19 -107zM107 843h259v-62l-259 0z" />
-<glyph unicode="&#257;" horiz-adv-x="400" d="M54 470q29 18 70.5 28q41.5 10 87.5 10q42 0 67.5 -12.5q25.5 -12.5 40 -34q14.5 -21.5 19 -49q4.5 -27.5 4.5 -57.5q0 -60 -2.5 -117q-2.5 -57 -2.5 -108q0 -38 2.5 -70.5q2.5 -32.5 9.5 -61.5l-55 0l-17 59h-4q-15 -26 -44 -45q-29 -19 -78 -19q-54 0 -88.5 37.5q-34.5 37.5 -34.5 103.5q0 43 14.5 72q14.5 29 41 47q26.5 18 63 25.5q36.5 7.5 81.5 7.5q10 0 20 0q10 0 21 -1q3 31 3 55q0 57 -17 80q-17 23 -62 23q-28 0 -61 -8.5q-33 -8.5 -55 -21.5zM271 228q-10 1 -20 1.5q-10 0.5 -20 0.5q-24 0 -47 -4q-23 -4 -41 -14q-18 -10 -28.5 -27q-10.5 -17 -10.5 -43q0 -40 19.5 -62q19.5 -22 50.5 -22q42 0 65 20q23 20 32 44zM76 643h243v-59l-243 0z" />
-<glyph unicode="&#258;" horiz-adv-x="473" d="M333 196h-198l-56 -196h-74l211 711h41l211 -711h-78zM155 263h160l-61 216l-19 105h-2l-19 -107zM133 871q14 -34 42 -55q28 -21 66 -21q39 0 64.5 22.5q25.5 22.5 38.5 53.5l36 -16q-15 -63 -54.5 -94q-39.5 -31 -85.5 -31q-43 0 -84.5 29q-41.5 29 -60.5 92z" />
-<glyph unicode="&#259;" horiz-adv-x="400" d="M54 470q29 18 70.5 28q41.5 10 87.5 10q42 0 67.5 -12.5q25.5 -12.5 40 -34q14.5 -21.5 19 -49q4.5 -27.5 4.5 -57.5q0 -60 -2.5 -117q-2.5 -57 -2.5 -108q0 -38 2.5 -70.5q2.5 -32.5 9.5 -61.5l-55 0l-17 59h-4q-15 -26 -44 -45q-29 -19 -78 -19q-54 0 -88.5 37.5q-34.5 37.5 -34.5 103.5q0 43 14.5 72q14.5 29 41 47q26.5 18 63 25.5q36.5 7.5 81.5 7.5q10 0 20 0q10 0 21 -1q3 31 3 55q0 57 -17 80q-17 23 -62 23q-28 0 -61 -8.5q-33 -8.5 -55 -21.5zM271 228q-10 1 -20 1.5q-10 0.5 -20 0.5q-24 0 -47 -4q-23 -4 -41 -14q-18 -10 -28.5 -27q-10.5 -17 -10.5 -43q0 -40 19.5 -62q19.5 -22 50.5 -22q42 0 65 20q23 20 32 44zM114 717q14 -36 38 -57.5q24 -21.5 53 -21.5q28 0 49.5 21q21.5 21 34.5 58l37 -15q-2 -26 -12.5 -49.5q-10.5 -23.5 -26.5 -41q-16 -17.5 -37.5 -28q-21.5 -10.5 -45.5 -10.5q-47 0 -82.5 33q-35.5 33 -46.5 93z" />
-<glyph unicode="&#260;" horiz-adv-x="473" d="M333 196h-198l-56 -196h-74l211 711h41l211 -711h-21q-22 -16 -34.5 -38q-12.5 -22 -12.5 -50q1 -29 19.5 -44.5q18.5 -15.5 55.5 -0.5l10 -40q-11 -11 -31.5 -17q-20.5 -6 -39.5 -6q-40 0 -63 24q-23 24 -24 62q1 38 19 65.5q18 27.5 49 44.5l-5 0zM155 263h160l-61 216l-19 105h-2l-19 -107z" />
-<glyph unicode="&#261;" horiz-adv-x="400" d="M54 470q29 18 70.5 28q41.5 10 87.5 10q42 0 67.5 -12.5q25.5 -12.5 40 -34q14.5 -21.5 19 -49q4.5 -27.5 4.5 -57.5q0 -60 -2.5 -117q-2.5 -57 -2.5 -108q0 -38 2.5 -70.5q2.5 -32.5 9.5 -61.5l-19 0q-21 -16 -33 -37.5q-12 -21.5 -12 -48.5q1 -29 19.5 -44.5q18.5 -15.5 55.5 -0.5l10 -40q-11 -11 -31.5 -17q-20.5 -6 -39.5 -6q-40 0 -63.5 24q-23.5 24 -23.5 62q0 42 22 70.5q22 28.5 57 45.5l-14 51h-4q-15 -26 -44 -45q-29 -19 -78 -19q-54 0 -88.5 37.5q-34.5 37.5 -34.5 103.5q0 43 14.5 72q14.5 29 41 47q26.5 18 63 25.5q36.5 7.5 81.5 7.5q10 0 20 0q10 0 21 -1q3 31 3 56q0 57 -17 79.5q-17 22.5 -62 22.5q-28 0 -61 -8.5q-33 -8.5 -55 -21.5zM271 228q-10 1 -20.5 1.5q-10.5 0.5 -20.5 0.5q-24 0 -47 -4q-23 -4 -40.5 -14q-17.5 -10 -28 -27q-10.5 -17 -10.5 -43q0 -40 19 -62q19 -22 50 -22q42 0 65.5 20q23.5 20 32.5 44z" />
-<glyph unicode="&#262;" horiz-adv-x="458" d="M430 27q-25 -21 -63 -30q-38 -9 -80 -9q-53 0 -98 20q-45 20 -77.5 63.5q-32.5 43.5 -50.5 112.5q-18 69 -18 166q0 100 20.5 169q20.5 69 54.5 112q34 43 78.5 62q44.5 19 91.5 19q48 0 79.5 -7q31.5 -7 54.5 -17l-18 -68q-20 11 -47 17q-27 6 -62 6q-35 0 -66 -15.5q-31 -15.5 -55 -50q-24 -34.5 -38 -90.5q-14 -56 -14 -137q0 -146 50 -219.5q50 -73.5 133 -73.5q34 0 61 9.5q27 9.5 46 22.5zM331 870h99v-21l-131 -97l-61 0z" />
-<glyph unicode="&#263;" horiz-adv-x="356" d="M335 25q-25 -19 -57 -28q-32 -9 -67 -9q-48 0 -81 18.5q-33 18.5 -53.5 53q-20.5 34.5 -30 83q-9.5 48.5 -9.5 107.5q0 128 45.5 195q45.5 67 130.5 67q39 0 67 -7q28 -7 48 -18v-63q-60 23 -107 23q-54 0 -81.5 -47.5q-27.5 -47.5 -27.5 -149.5q0 -41 6 -77q6 -36 20 -62.5q14 -26.5 36 -42q22 -15.5 55 -15.5q26 0 48.5 9q22.5 9 36.5 21zM232 720h78v-21l-82 -128l-43 0z" />
-<glyph unicode="&#264;" horiz-adv-x="458" d="M430 27q-25 -21 -63 -30q-38 -9 -80 -9q-53 0 -98 20q-45 20 -77.5 63.5q-32.5 43.5 -50.5 112.5q-18 69 -18 166q0 100 20.5 169q20.5 69 54.5 112q34 43 78.5 62q44.5 19 91.5 19q48 0 79.5 -7q31.5 -7 54.5 -17l-18 -68q-20 11 -47 17q-27 6 -62 6q-35 0 -66 -15.5q-31 -15.5 -55 -50q-24 -34.5 -38 -90.5q-14 -56 -14 -137q0 -146 50 -219.5q50 -73.5 133 -73.5q34 0 61 9.5q27 9.5 46 22.5zM255 870h50l102 -102v-21h-66l-47 49l-15 35l-15 -34l-52 -50h-64l0 22z" />
-<glyph unicode="&#265;" horiz-adv-x="356" d="M335 25q-25 -19 -57 -28q-32 -9 -67 -9q-48 0 -81 18.5q-33 18.5 -53.5 53q-20.5 34.5 -30 83q-9.5 48.5 -9.5 107.5q0 128 45.5 195q45.5 67 130.5 67q39 0 67 -7q28 -7 48 -18v-63q-60 23 -107 23q-54 0 -81.5 -47.5q-27.5 -47.5 -27.5 -149.5q0 -41 6 -77q6 -36 20 -62.5q14 -26.5 36 -42q22 -15.5 55 -15.5q26 0 48.5 9q22.5 9 36.5 21zM187 732h35l89 -182h-63l-32 66l-16 58l-17 -58l-36 -66l-59 0z" />
-<glyph unicode="&#268;" horiz-adv-x="458" d="M430 27q-25 -21 -63 -30q-38 -9 -80 -9q-53 0 -98 20q-45 20 -77.5 63.5q-32.5 43.5 -50.5 112.5q-18 69 -18 166q0 100 20.5 169q20.5 69 54.5 112q34 43 78.5 62q44.5 19 91.5 19q48 0 79.5 -7q31.5 -7 54.5 -17l-18 -68q-20 11 -47 17q-27 6 -62 6q-35 0 -66 -15.5q-31 -15.5 -55 -50q-24 -34.5 -38 -90.5q-14 -56 -14 -137q0 -146 50 -219.5q50 -73.5 133 -73.5q34 0 61 9.5q27 9.5 46 22.5zM308 746h-53l-102 103v21h69l47 -50l14 -34l15 33l50 51h66l0 -22z" />
-<glyph unicode="&#269;" horiz-adv-x="356" d="M335 25q-25 -19 -57 -28q-32 -9 -67 -9q-48 0 -81 18.5q-33 18.5 -53.5 53q-20.5 34.5 -30 83q-9.5 48.5 -9.5 107.5q0 128 45.5 195q45.5 67 130.5 67q39 0 67 -7q28 -7 48 -18v-63q-60 23 -107 23q-54 0 -81.5 -47.5q-27.5 -47.5 -27.5 -149.5q0 -41 6 -77q6 -36 20 -62.5q14 -26.5 36 -42q22 -15.5 55 -15.5q26 0 48.5 9q22.5 9 36.5 21zM222 550h-38l-93 182h68l31 -66l17 -58l17 58l36 66l61 0z" />
-<glyph unicode="&#270;" horiz-adv-x="525" d="M64 700q16 3 35.5 4.5q19.5 1.5 39.5 2q20 0.5 39.5 1q19.5 0.5 36.5 0.5q73 0 124 -25q51 -25 83 -71.5q32 -46.5 46 -111.5q14 -65 14 -145q0 -72 -13.5 -138q-13.5 -66 -45.5 -116q-32 -50 -84.5 -80q-52.5 -30 -131.5 -30q-13 0 -33 0.5q-20 0.5 -41.5 2q-21.5 1.5 -40 2.5q-18.5 1 -28.5 3zM219 639q-10 0 -21.5 0q-11.5 0 -22.5 -1q-11 -1 -20.5 -2q-9.5 -1 -15.5 -2l0 -570q4 -1 14.5 -1.5q10.5 -0.5 22 -1q11.5 -0.5 22 -1q10.5 -0.5 15.5 -0.5q55 0 92 24q37 24 58.5 64.5q21.5 40.5 30.5 94q9 53.5 9 113.5q0 53 -8 104q-8 51 -28.5 90.5q-20.5 39.5 -56 64q-35.5 24.5 -91.5 24.5zt0 0zM244 746h-53l-102 103v21h69l47 -50l14 -34l15 33l50 51h66l0 -22z" />
-<glyph unicode="&#271;" horiz-adv-x="433" d="M374 172q0 -51 1 -92.5q1 -41.5 7 -81.5l-49 0l-16 60h-4q-14 -30 -44 -50q-30 -20 -72 -20q-81 0 -120.5 63q-39.5 63 -39.5 198q0 128 48.5 194q48.5 66 133.5 66q29 0 46 -3.5q17 -3.5 37 -11.5l0 206h72zM302 421q-14 12 -31.5 17.5q-17.5 5.5 -46.5 5.5q-53 0 -82.5 -48q-29.5 -48 -29.5 -148q0 -44 5.5 -79.5q5.5 -35.5 17 -61.5q11.5 -26 30 -40q18.5 -14 45.5 -14q72 0 92 85zM504 700q-2 -29 -10 -59q-8 -30 -19 -56q-11 -26 -22.5 -45.5q-11.5 -19.5 -18.5 -28.5l-30 15q14 36 21 82q7 46 7 92z" />
-<glyph unicode="&#272;" horiz-adv-x="531" d="M-1 393h71v307q16 3 35.5 4.5q19.5 1.5 39.5 2q20 0.5 39.5 1q19.5 0.5 36.5 0.5q73 0 124 -25q51 -25 83 -71.5q32 -46.5 46 -111.5q14 -65 14 -145q0 -72 -13.5 -138q-13.5 -66 -45.5 -116q-32 -50 -84.5 -80q-52.5 -30 -131.5 -30q-13 0 -33 0.5q-20 0.5 -41.5 2q-21.5 1.5 -40 2.5q-18.5 1 -28.5 3l0 335h-71zM225 639q-10 0 -21.5 0q-11.5 0 -22.5 -1q-11 -1 -20.5 -2q-9.5 -1 -15.5 -2l0 -241h117v-59h-117v-270q4 -1 14.5 -1.5q10.5 -0.5 22 -1q11.5 -0.5 22 -1q10.5 -0.5 15.5 -0.5q55 0 92 24q37 24 58.5 64.5q21.5 40.5 30.5 94q9 53.5 9 113.5q0 53 -8 104q-8 51 -28.5 90.5q-20.5 39.5 -56 64t-91.5 24.5z" />
-<glyph unicode="&#273;" horiz-adv-x="434" d="M374 633h64v-59h-64v-402q0 -51 1 -92.5q1 -41.5 7 -81.5l-49 0l-16 60h-4q-14 -30 -44 -50q-30 -20 -72 -20q-81 0 -120.5 63q-39.5 63 -39.5 198q0 128 48.5 194q48.5 66 133.5 66q29 0 46 -3.5q17 -3.5 37 -11.5l0 80h-125v59h125v67h72zM302 421q-14 12 -31.5 17.5q-17.5 5.5 -46.5 5.5q-53 0 -82.5 -48q-29.5 -48 -29.5 -148q0 -44 5.5 -79.5q5.5 -35.5 17 -61.5q11.5 -26 30 -40q18.5 -14 45.5 -14q72 0 92 85z" />
-<glyph unicode="&#274;" horiz-adv-x="429" d="M64 700h311v-69h-236v-237h217v-69h-217v-256h241v-69h-316zM84 843h259v-62l-259 0z" />
-<glyph unicode="&#275;" horiz-adv-x="413" d="M358 34q-24 -22 -61 -34q-37 -12 -78 -12q-47 0 -81.5 18.5q-34.5 18.5 -57 53q-22.5 34.5 -33 82.5q-10.5 48 -10.5 108q0 128 47 195q47 67 133 67q28 0 55.5 -7q27.5 -7 49.5 -28q22 -21 35.5 -59q13.5 -38 13.5 -99q0 -17 -1.5 -36.5q-1.5 -19.5 -3.5 -40.5l-254 0q0 -43 7 -78q7 -35 22 -59.5q15 -24.5 38.5 -38q23.5 -13.5 58.5 -13.5q27 0 53.5 10q26.5 10 40.5 24zM302 302q2 75 -21 110q-23 35 -63 35q-46 0 -73 -35q-27 -35 -32 -110zM85 643h243v-59l-243 0z" />
-<glyph unicode="&#278;" horiz-adv-x="429" d="M64 700h311v-69h-236v-237h217v-69h-217v-256h241v-69h-316zM166 797q0 21 14 36.5q14 15.5 40 15.5q26 0 40.5 -15.5q14.5 -15.5 14.5 -36.5q0 -23 -14.5 -38q-14.5 -15 -40.5 -15q-26 0 -40 15t-14 38z" />
-<glyph unicode="&#279;" horiz-adv-x="413" d="M358 34q-24 -22 -61 -34q-37 -12 -78 -12q-47 0 -81.5 18.5q-34.5 18.5 -57 53q-22.5 34.5 -33 82.5q-10.5 48 -10.5 108q0 128 47 195q47 67 133 67q28 0 55.5 -7q27.5 -7 49.5 -28q22 -21 35.5 -59q13.5 -38 13.5 -99q0 -17 -1.5 -36.5q-1.5 -19.5 -3.5 -40.5l-254 0q0 -43 7 -78q7 -35 22 -59.5q15 -24.5 38.5 -38q23.5 -13.5 58.5 -13.5q27 0 53.5 10q26.5 10 40.5 24zM302 302q2 75 -21 110q-23 35 -63 35q-46 0 -73 -35q-27 -35 -32 -110zM167 652q0 24 13.5 39q13.5 15 35.5 15q22 0 36.5 -14.5q14.5 -14.5 14.5 -39.5q0 -24 -14.5 -37.5q-14.5 -13.5 -36.5 -13.5q-22 0 -35.5 14t-13.5 37z" />
-<glyph unicode="&#280;" horiz-adv-x="429" d="M64 700h311v-69h-236v-237h217v-69h-217v-256h241v-69h-31q-22 -16 -34.5 -38q-12.5 -22 -12.5 -50q1 -29 19.5 -44.5q18.5 -15.5 55.5 -0.5l10 -40q-11 -11 -31.5 -17q-20.5 -6 -39.5 -6q-40 0 -63.5 24q-23.5 24 -23.5 62q0 38 18.5 65.5q18.5 27.5 49.5 44.5l-233 0z" />
-<glyph unicode="&#281;" horiz-adv-x="409" d="M358 34q-19 -18 -47 -29q-22 -15 -36 -35q-18 -25 -17 -58q0 -28 18.5 -43.5q18.5 -15.5 56.5 1.5l10 -43q-12 -12 -33 -17.5q-21 -5.5 -41 -5.5q-38 0 -60 24q-22 24 -22 65q0 43 25 73q10 12 24 23q-9 -1 -17 -1q-47 0 -81.5 18.5q-34.5 18.5 -57 53q-22.5 34.5 -33 82.5q-10.5 48 -10.5 108q0 128 47 195q47 67 133 67q32 0 63 -9.5q31 -9.5 53.5 -38.5q22.5 -29 32.5 -82q10 -53 0 -140l-255 0q0 -43 7 -78q7 -35 22 -60q15 -25 39 -38.5q24 -13.5 59 -13.5q27 0 53.5 10.5q26.5 10.5 40.5 24.5zM218 448q-46 0 -73 -35.5q-27 -35.5 -32 -110.5l189 0q2 75 -21 110.5t-63 35.5z" />
-<glyph unicode="&#282;" horiz-adv-x="429" d="M64 700h311v-69h-236v-237h217v-69h-217v-256h241v-69h-316zM242 746h-53l-102 103v21h69l47 -50l14 -34l15 33l50 51h66l0 -22z" />
-<glyph unicode="&#283;" horiz-adv-x="413" d="M358 34q-24 -22 -61 -34q-37 -12 -78 -12q-47 0 -81.5 18.5q-34.5 18.5 -57 53q-22.5 34.5 -33 82.5q-10.5 48 -10.5 108q0 128 47 195q47 67 133 67q28 0 55.5 -7q27.5 -7 49.5 -28q22 -21 35.5 -59q13.5 -38 13.5 -99q0 -17 -1.5 -36.5q-1.5 -19.5 -3.5 -40.5l-254 0q0 -43 7 -78q7 -35 22 -59.5q15 -24.5 38.5 -38q23.5 -13.5 58.5 -13.5q27 0 53.5 10q26.5 10 40.5 24zM302 302q2 75 -21 110q-23 35 -63 35q-46 0 -73 -35q-27 -35 -32 -110zM229 550h-38l-93 182h68l31 -66l17 -58l17 58l36 66l61 0z" />
-<glyph unicode="&#284;" horiz-adv-x="492" d="M257 349h193v-308q-28 -26 -72 -39.5q-44 -13.5 -89 -13.5q-56 0 -101.5 21q-45.5 21 -77.5 65.5q-32 44.5 -49.5 112.5q-17.5 68 -17.5 163q0 98 21 166.5q21 68.5 56.5 112q35.5 43.5 81 63.5q45.5 20 93.5 20q48 0 80.5 -6.5q32.5 -6.5 55.5 -17.5l-18 -68q-20 11 -47.5 17q-27.5 6 -63.5 6q-35 0 -67 -15q-32 -15 -57.5 -49.5q-25.5 -34.5 -40.5 -90.5q-15 -56 -15 -138q0 -150 47.5 -221.5q47.5 -71.5 130.5 -71.5q52 0 86 25l0 204l-129 19zM267 870h50l102 -102v-21h-66l-47 49l-15 35l-15 -34l-52 -50h-64l0 22z" />
-<glyph unicode="&#285;" horiz-adv-x="432" d="M374 -23q0 -97 -43 -143q-43 -46 -125 -46q-50 0 -82 8.5q-32 8.5 -52 19.5l21 62q20 -9 44 -17q24 -8 59 -8q61 0 83.5 34q22.5 34 22.5 114v37h-3q-16 -23 -41 -36q-25 -13 -64 -13q-81 0 -119 62.5q-38 62.5 -38 196.5q0 129 49.5 195q49.5 66 146.5 66q47 0 81 -9q34 -9 60 -21zM302 428q-30 16 -77 16q-51 0 -82 -46.5q-31 -46.5 -31 -148.5q0 -42 5 -77.5q5 -35.5 17 -62q12 -26.5 30.5 -41q18.5 -14.5 45.5 -14.5q38 0 60 20q22 20 32 60zM208 732h35l89 -182h-63l-32 66l-16 58l-17 -58l-36 -66l-59 0z" />
-<glyph unicode="&#286;" horiz-adv-x="492" d="M257 349h193v-308q-28 -26 -72 -39.5q-44 -13.5 -89 -13.5q-56 0 -101.5 21q-45.5 21 -77.5 65.5q-32 44.5 -49.5 112.5q-17.5 68 -17.5 163q0 98 21 166.5q21 68.5 56.5 112q35.5 43.5 81 63.5q45.5 20 93.5 20q48 0 80.5 -6.5q32.5 -6.5 55.5 -17.5l-18 -68q-20 11 -47.5 17q-27.5 6 -63.5 6q-35 0 -67 -15q-32 -15 -57.5 -49.5q-25.5 -34.5 -40.5 -90.5q-15 -56 -15 -138q0 -150 47.5 -221.5q47.5 -71.5 130.5 -71.5q52 0 86 25l0 204l-129 19zM178 871q14 -34 42 -55q28 -21 66 -21q39 0 64.5 22.5q25.5 22.5 38.5 53.5l36 -16q-15 -63 -54.5 -94q-39.5 -31 -85.5 -31q-43 0 -84.5 29q-41.5 29 -60.5 92z" />
-<glyph unicode="&#287;" horiz-adv-x="432" d="M374 -23q0 -97 -43 -143q-43 -46 -125 -46q-50 0 -82 8.5q-32 8.5 -52 19.5l21 62q20 -9 44 -17q24 -8 59 -8q61 0 83.5 34q22.5 34 22.5 114v37h-3q-16 -23 -41 -36q-25 -13 -64 -13q-81 0 -119 62.5q-38 62.5 -38 196.5q0 129 49.5 195q49.5 66 146.5 66q47 0 81 -9q34 -9 60 -21zM302 428q-30 16 -77 16q-51 0 -82 -46.5q-31 -46.5 -31 -148.5q0 -42 5 -77.5q5 -35.5 17 -62q12 -26.5 30.5 -41q18.5 -14.5 45.5 -14.5q38 0 60 20q22 20 32 60zM133 717q14 -36 38 -57.5q24 -21.5 53 -21.5q28 0 49.5 21q21.5 21 34.5 58l37 -15q-2 -26 -12.5 -49.5q-10.5 -23.5 -26.5 -41q-16 -17.5 -37.5 -28q-21.5 -10.5 -45.5 -10.5q-47 0 -82.5 33q-35.5 33 -46.5 93z" />
-<glyph unicode="&#290;" horiz-adv-x="492" d="M257 349h193v-308q-28 -26 -72 -39.5q-44 -13.5 -89 -13.5q-56 0 -101.5 21q-45.5 21 -77.5 65.5q-32 44.5 -49.5 112.5q-17.5 68 -17.5 163q0 98 21 166.5q21 68.5 56.5 112q35.5 43.5 81 63.5q45.5 20 93.5 20q48 0 80.5 -6.5q32.5 -6.5 55.5 -17.5l-18 -68q-20 11 -47.5 17q-27.5 6 -63.5 6q-35 0 -67 -15q-32 -15 -57.5 -49.5q-25.5 -34.5 -40.5 -90.5q-15 -56 -15 -138q0 -150 47.5 -221.5q47.5 -71.5 130.5 -71.5q52 0 86 25l0 204l-129 19zM238 -102q0 21 13 34q13 13 31 13q22 0 38 -17q16 -17 16 -58q0 -26 -7.5 -45.5q-7.5 -19.5 -18 -34q-10.5 -14.5 -22 -23q-11.5 -8.5 -20.5 -12.5l-27 27q17 13 28.5 31.5q11.5 18.5 10.5 42.5q-17 -2 -29.5 9t-12.5 33z" />
-<glyph unicode="&#291;" horiz-adv-x="432" d="M374 -23q0 -97 -43 -143q-43 -46 -125 -46q-50 0 -82 8.5q-32 8.5 -52 19.5l21 62q20 -9 44 -17q24 -8 59 -8q61 0 83.5 34q22.5 34 22.5 114v37h-3q-16 -23 -41 -36q-25 -13 -64 -13q-81 0 -119 62.5q-38 62.5 -38 196.5q0 129 49.5 195q49.5 66 146.5 66q47 0 81 -9q34 -9 60 -21zM302 428q-30 16 -77 16q-51 0 -82 -46.5q-31 -46.5 -31 -148.5q0 -42 5 -77.5q5 -35.5 17 -62q12 -26.5 30.5 -41q18.5 -14.5 45.5 -14.5q38 0 60 20q22 20 32 60zM280 609q0 -21 -12.5 -34q-12.5 -13 -30.5 -13q-22 0 -38 17q-16 17 -16 58q0 24 7.5 43.5q7.5 19.5 18 34q10.5 14.5 22 24q11.5 9.5 20.5 13.5l26 -30q-16 -9 -27.5 -28.5q-11.5 -19.5 -11.5 -43.5q17 5 29.5 -7t12.5 -34z" />
-<glyph unicode="&#292;" horiz-adv-x="536" d="M397 323h-258v-323h-75v700h75v-308h258v308h75v-700h-75zM244 870h50l102 -102v-21h-66l-47 49l-15 35l-15 -34l-52 -50h-64l0 22z" />
-<glyph unicode="&#293;" horiz-adv-x="440" d="M315 0v304q0 70 -16.5 106.5q-16.5 36.5 -65.5 36.5q-35 0 -63.5 -25q-28.5 -25 -38.5 -63l0 -359h-72v700h72v-247h3q20 26 49.5 42.5q29.5 16.5 73.5 16.5q33 0 57.5 -9q24.5 -9 40.5 -31q16 -22 24 -58.5q8 -36.5 8 -90.5v-323zM75 870h50l102 -102v-21h-66l-47 49l-15 35l-15 -34l-52 -50h-64l0 22z" />
-<glyph unicode="&#294;" horiz-adv-x="549" d="M8 585h63v115h75v-115h258v115h75v-115h63v-59h-63v-526h-75v323h-258v-323h-75v526h-63zM404 392v134h-258l0 -134z" />
-<glyph unicode="&#295;" horiz-adv-x="441" d="M-4 633h64v67h72v-67h129v-59h-129v-121h3q20 26 49.5 42.5q29.5 16.5 73.5 16.5q33 0 57.5 -9q24.5 -9 40.5 -31q16 -22 24 -58.5q8 -36.5 8 -90.5v-323h-72v304q0 70 -16.5 106.5q-16.5 36.5 -65.5 36.5q-35 0 -63.5 -25q-28.5 -25 -38.5 -63l0 -359h-72v574l-64 0z" />
-<glyph unicode="&#298;" horiz-adv-x="233" d="M79 700h75v-700h-75zM-13 843h259v-62l-259 0z" />
-<glyph unicode="&#299;" horiz-adv-x="217" d="M72 500h72v-500h-72zM-13 643h243v-59l-243 0z" />
-<glyph unicode="&#302;" horiz-adv-x="234" d="M79 700h75v-700h-13q-20 -15 -32.5 -36.5q-12.5 -21.5 -11.5 -52.5q0 -28 18 -44q18 -16 56 -1l10 -39q-12 -12 -32.5 -17.5q-20.5 -5.5 -39.5 -5.5q-38 0 -62 23q-24 23 -24 64q0 35 18.5 63.5q18.5 28.5 49.5 45.5l-12 0z" />
-<glyph unicode="&#303;" horiz-adv-x="217" d="M72 500h72v-500h-14q-20 -16 -33 -38.5q-13 -22.5 -12 -50.5q0 -14 5.5 -25.5q5.5 -11.5 15 -18.5q9.5 -7 23.5 -7q14 0 32 10l9 -43q-12 -12 -33 -17.5q-21 -5.5 -41 -5.5q-38 0 -60 23.5q-22 23.5 -22 64.5q0 35 17.5 63q17.5 28 47.5 45l-7 0zM58 652q0 24 13.5 39q13.5 15 35.5 15q22 0 36.5 -14.5q14.5 -14.5 14.5 -39.5q0 -24 -14.5 -37.5q-14.5 -13.5 -36.5 -13.5q-22 0 -35.5 14t-13.5 37z" />
-<glyph unicode="&#304;" horiz-adv-x="233" d="M79 700h75v-700h-75zM62 797q0 21 14 36.5q14 15.5 40 15.5q26 0 40.5 -15.5q14.5 -15.5 14.5 -36.5q0 -23 -14.5 -38q-14.5 -15 -40.5 -15q-26 0 -40 15t-14 38z" />
-<glyph unicode="&#305;" horiz-adv-x="217" d="M72 500h72v-500l-72 0z" />
-<glyph unicode="&#308;" horiz-adv-x="241" d="M93 700h75v-543q0 -82 -26.5 -124.5q-26.5 -42.5 -92.5 -42.5q-16 0 -38.5 4q-22.5 4 -36.5 12l16 65q10 -6 22.5 -9q12.5 -3 25.5 -3q18 0 29 8q11 8 17 22.5q6 14.5 7.5 35q1.5 20.5 1.5 46.5zM106 870h50l102 -102v-21h-66l-47 49l-15 35l-15 -34l-52 -50h-64l0 22z" />
-<glyph unicode="&#309;" horiz-adv-x="215" d="M72 500h72v-527q0 -103 -33 -148.5q-33 -45.5 -107 -34.5l0 65q22 0 35.5 9q13.5 9 21 27.5q7.5 18.5 9.5 46q2 27.5 2 64.5zM99 732h35l89 -182h-63l-32 66l-16 58l-17 -58l-36 -66l-59 0z" />
-<glyph unicode="&#310;" horiz-adv-x="493" d="M175 324h-36v-324h-75v700h75v-326l35 14l182 312h86l-183 -302l-35 -32l41 -40l203 -326h-95zM188 -102q0 21 13 34q13 13 31 13q22 0 38 -17q16 -17 16 -58q0 -26 -7.5 -45.5q-7.5 -19.5 -18 -34q-10.5 -14.5 -22 -23q-11.5 -8.5 -20.5 -12.5l-27 27q17 13 28.5 31.5q11.5 18.5 10.5 42.5q-17 -2 -29.5 9t-12.5 33z" />
-<glyph unicode="&#311;" horiz-adv-x="388" d="M168 225h-37v-225h-72v700h72v-426l33 14l117 212h83l-118 -202l-35 -32l41 -39l129 -227h-87zM146 -102q0 21 13 34q13 13 31 13q22 0 38 -17q16 -17 16 -58q0 -26 -7.5 -45.5q-7.5 -19.5 -18 -34q-10.5 -14.5 -22 -23q-11.5 -8.5 -20.5 -12.5l-27 27q17 13 28.5 31.5q11.5 18.5 10.5 42.5q-17 -2 -29.5 9t-12.5 33z" />
-<glyph unicode="&#313;" horiz-adv-x="415" d="M401 0h-337v700h75v-631h262zM173 870h99v-21l-131 -97l-61 0z" />
-<glyph unicode="&#314;" horiz-adv-x="233" d="M136 119q0 -35 9.5 -50q9.5 -15 26.5 -15q21 0 49 11l7 -58q-13 -8 -36.5 -13q-23.5 -5 -42.5 -5q-38 0 -61.5 23.5q-23.5 23.5 -23.5 82.5v605h72zM162 870h99v-21l-131 -97l-61 0z" />
-<glyph unicode="&#315;" horiz-adv-x="415" d="M401 0h-337v700h75v-631h262zM154 -102q0 21 13 34q13 13 31 13q22 0 38 -17q16 -17 16 -58q0 -26 -7.5 -45.5q-7.5 -19.5 -18 -34q-10.5 -14.5 -22 -23q-11.5 -8.5 -20.5 -12.5l-27 27q17 13 28.5 31.5q11.5 18.5 10.5 42.5q-17 -2 -29.5 9t-12.5 33z" />
-<glyph unicode="&#316;" horiz-adv-x="233" d="M136 119q0 -35 9.5 -50q9.5 -15 26.5 -15q21 0 49 11l7 -58q-13 -8 -36.5 -13q-23.5 -5 -42.5 -5q-38 0 -61.5 23.5q-23.5 23.5 -23.5 82.5v605h72zM92 -102q0 21 13 34q13 13 31 13q22 0 38 -17q16 -17 16 -58q0 -26 -7.5 -45.5q-7.5 -19.5 -18 -34q-10.5 -14.5 -22 -23q-11.5 -8.5 -20.5 -12.5l-27 27q17 13 28.5 31.5q11.5 18.5 10.5 42.5q-17 -2 -29.5 9t-12.5 33z" />
-<glyph unicode="&#317;" horiz-adv-x="415" d="M401 0h-337v700h75v-631h262zM355 700q-2 -29 -10 -59q-8 -30 -19 -56q-11 -26 -22.5 -45.5q-11.5 -19.5 -18.5 -28.5l-30 15q14 36 21 82q7 46 7 92z" />
-<glyph unicode="&#318;" horiz-adv-x="233" d="M136 119q0 -35 9.5 -50q9.5 -15 26.5 -15q21 0 49 11l7 -58q-13 -8 -36.5 -13q-23.5 -5 -42.5 -5q-38 0 -61.5 23.5q-23.5 23.5 -23.5 82.5v605h72zM266 700q-2 -29 -10 -59q-8 -30 -19 -56q-11 -26 -22.5 -45.5q-11.5 -19.5 -18.5 -28.5l-30 15q14 36 21 82q7 46 7 92z" />
-<glyph unicode="&#321;" horiz-adv-x="418" d="M15 290l52 48v362h75v-293l90 84v-83l-90 -82v-257h262v-69h-337v258l-52 -47z" />
-<glyph unicode="&#322;" horiz-adv-x="234" d="M8 288l60 55v357h72v-290l85 79v-83l-85 -77v-210q0 -35 9.5 -50q9.5 -15 26.5 -15q21 0 49 11l7 -58q-13 -8 -36.5 -13q-23.5 -5 -42.5 -5q-38 0 -61.5 23.5q-23.5 23.5 -23.5 82.5v168l-60 -54z" />
-<glyph unicode="&#323;" horiz-adv-x="538" d="M171 444l-43 110h-3l11 -110v-444h-72v711h45l259 -454l41 -105h4l-11 105v443h72v-711h-46zM327 870h99v-21l-131 -97l-61 0z" />
-<glyph unicode="&#324;" horiz-adv-x="439" d="M315 0v305q0 75 -17.5 108.5q-17.5 33.5 -62.5 33.5q-40 0 -66 -24q-26 -24 -38 -59l0 -364h-72v500h52l13 -53h3q19 27 51.5 46q32.5 19 77.5 19q32 0 56.5 -9q24.5 -9 41 -30.5q16.5 -21.5 25 -57.5q8.5 -36 8.5 -91v-324zM241 720h78v-21l-82 -128l-43 0z" />
-<glyph unicode="&#325;" horiz-adv-x="538" d="M171 444l-43 110h-3l11 -110v-444h-72v711h45l259 -454l41 -105h4l-11 105v443h72v-711h-46zM223 -102q0 21 13 34q13 13 31 13q22 0 38 -17q16 -17 16 -58q0 -26 -7.5 -45.5q-7.5 -19.5 -18 -34q-10.5 -14.5 -22 -23q-11.5 -8.5 -20.5 -12.5l-27 27q17 13 28.5 31.5q11.5 18.5 10.5 42.5q-17 -2 -29.5 9t-12.5 33z" />
-<glyph unicode="&#326;" horiz-adv-x="439" d="M315 0v305q0 75 -17.5 108.5q-17.5 33.5 -62.5 33.5q-40 0 -66 -24q-26 -24 -38 -59l0 -364h-72v500h52l13 -53h3q19 27 51.5 46q32.5 19 77.5 19q32 0 56.5 -9q24.5 -9 41 -30.5q16.5 -21.5 25 -57.5q8.5 -36 8.5 -91v-324zM171 -102q0 21 13 34q13 13 31 13q22 0 38 -17q16 -17 16 -58q0 -26 -7.5 -45.5q-7.5 -19.5 -18 -34q-10.5 -14.5 -22 -23q-11.5 -8.5 -20.5 -12.5l-27 27q17 13 28.5 31.5q11.5 18.5 10.5 42.5q-17 -2 -29.5 9t-12.5 33z" />
-<glyph unicode="&#327;" horiz-adv-x="538" d="M171 444l-43 110h-3l11 -110v-444h-72v711h45l259 -454l41 -105h4l-11 105v443h72v-711h-46zM295 746h-53l-102 103v21h69l47 -50l14 -34l15 33l50 51h66l0 -22z" />
-<glyph unicode="&#328;" horiz-adv-x="439" d="M315 0v305q0 75 -17.5 108.5q-17.5 33.5 -62.5 33.5q-40 0 -66 -24q-26 -24 -38 -59l0 -364h-72v500h52l13 -53h3q19 27 51.5 46q32.5 19 77.5 19q32 0 56.5 -9q24.5 -9 41 -30.5q16.5 -21.5 25 -57.5q8.5 -36 8.5 -91v-324zM237 550h-38l-93 182h68l31 -66l17 -58l17 58l36 66l61 0z" />
-<glyph unicode="&#332;" horiz-adv-x="549" d="M43 350q0 178 57 270q57 92 174 92q63 0 107 -25.5q44 -25.5 71.5 -72.5q27.5 -47 40.5 -114q13 -67 13 -150q0 -178 -57.5 -270q-57.5 -92 -174.5 -92q-62 0 -106 25.5q-44 25.5 -72 72.5q-28 47 -40.5 114q-12.5 67 -12.5 150zt0 0zM122 350q0 -59 8.5 -112q8.5 -53 26.5 -93q18 -40 47 -64q29 -24 70 -24q75 0 114 72q39 72 39 221q0 58 -8.5 111q-8.5 53 -26.5 93.5q-18 40.5 -47 64.5q-29 24 -71 24q-74 0 -113 -72q-39 -72 -39 -221zt0 0zM149 843h259v-62l-259 0z" />
-<glyph unicode="&#333;" horiz-adv-x="432" d="M37 250q0 135 46.5 198.5q46.5 63.5 132.5 63.5q92 0 135.5 -65q43.5 -65 43.5 -197q0 -136 -47 -199q-47 -63 -132 -63q-92 0 -135.5 65q-43.5 65 -43.5 197zt0 0zM112 250q0 -44 5.5 -80q5.5 -36 18 -62q12.5 -26 32.5 -40.5q20 -14.5 48 -14.5q52 0 78 46.5q26 46.5 26 150.5q0 43 -5.5 79.5q-5.5 36.5 -18 62.5q-12.5 26 -32.5 40.5q-20 14.5 -48 14.5q-51 0 -77.5 -47q-26.5 -47 -26.5 -150zt0 0zM94 643h243v-59l-243 0z" />
-<glyph unicode="&#336;" horiz-adv-x="549" d="M43 350q0 178 57 270q57 92 174 92q63 0 107 -25.5q44 -25.5 71.5 -72.5q27.5 -47 40.5 -114q13 -67 13 -150q0 -178 -57.5 -270q-57.5 -92 -174.5 -92q-62 0 -106 25.5q-44 25.5 -72 72.5q-28 47 -40.5 114q-12.5 67 -12.5 150zt0 0zM122 350q0 -59 8.5 -112q8.5 -53 26.5 -93q18 -40 47 -64q29 -24 70 -24q75 0 114 72q39 72 39 221q0 58 -8.5 111q-8.5 53 -26.5 93.5q-18 40.5 -47 64.5q-29 24 -71 24q-74 0 -113 -72q-39 -72 -39 -221zt0 0zM239 850h81v-16l-80 -93h-52zM375 850h86v-16l-115 -93l-52 0z" />
-<glyph unicode="&#337;" horiz-adv-x="432" d="M37 250q0 135 46.5 198.5q46.5 63.5 132.5 63.5q92 0 135.5 -65q43.5 -65 43.5 -197q0 -136 -47 -199q-47 -63 -132 -63q-92 0 -135.5 65q-43.5 65 -43.5 197zt0 0zM112 250q0 -44 5.5 -80q5.5 -36 18 -62q12.5 -26 32.5 -40.5q20 -14.5 48 -14.5q52 0 78 46.5q26 46.5 26 150.5q0 43 -5.5 79.5q-5.5 36.5 -18 62.5q-12.5 26 -32.5 40.5q-20 14.5 -48 14.5q-51 0 -77.5 -47q-26.5 -47 -26.5 -150zt0 0zM164 700h69v-16l-58 -113h-39zM287 700h75v-16l-92 -113l-42 0z" />
-<glyph unicode="&#338;" horiz-adv-x="748" d="M383 623q-22 11 -50 15.5q-28 4.5 -58 4.5q-73 0 -113 -72q-40 -72 -40 -221q0 -59 8.5 -112q8.5 -53 27.5 -93q19 -40 49 -64q30 -24 73 -24q23 0 47 2q24 2 56 14zM383 0q-20 -5 -48 -8.5q-28 -3.5 -62 -3.5q-60 0 -103.5 25.5q-43.5 25.5 -71.5 73q-28 47.5 -41.5 114q-13.5 66.5 -13.5 149.5q0 177 58.5 269.5q58.5 92.5 171.5 92.5q36 0 60.5 -3.5q24.5 -3.5 49.5 -8.5l311 0v-69h-236v-237h216v-69h-216v-256h241l0 -69z" />
-<glyph unicode="&#339;" horiz-adv-x="692" d="M112 250q0 -39 5.5 -74.5q5.5 -35.5 18 -62.5q12.5 -27 32.5 -43.5q20 -16.5 48 -16.5q103 0 103 197q0 39 -5.5 74.5q-5.5 35.5 -17.5 63q-12 27.5 -32 43.5q-20 16 -48 16q-104 0 -104 -197zt0 0zM355 75q-43 -87 -140 -87q-91 0 -134.5 68q-43.5 68 -43.5 194q0 128 46.5 195q46.5 67 132.5 67q51 0 85.5 -22.5q34.5 -22.5 54.5 -63.5q20 38 55.5 62q35.5 24 84.5 24q28 0 55.5 -7.5q27.5 -7.5 49.5 -28.5q22 -21 35.5 -59q13.5 -38 13.5 -99q0 -17 -1.5 -36q-1.5 -19 -3.5 -40l-256 0q1 -87 30.5 -138.5q29.5 -51.5 97.5 -51.5q27 0 55 11q28 11 42 25l26 -53q-24 -23 -62.5 -35q-38.5 -12 -80.5 -12q-50 0 -86 24q-36 24 -56 63zt0 0zM496 448q-45 0 -72.5 -36q-27.5 -36 -32.5 -111l190 0q2 75 -21 111t-64 36z" />
-<glyph unicode="&#340;" horiz-adv-x="480" d="M64 693q33 8 72.5 11.5q39.5 3.5 72.5 3.5q39 0 74 -9.5q35 -9.5 61 -32q26 -22.5 41.5 -59q15.5 -36.5 15.5 -91.5q0 -83 -34.5 -133q-34.5 -50 -91.5 -67l38 -37l138 -279h-87l-150 305l-75 15v-320h-75zM139 370h60q57 0 90 35q33 35 33 107q0 55 -27.5 91q-27.5 36 -81.5 36q-20 0 -41.5 -1.5q-21.5 -1.5 -32.5 -4.5zM255 870h99v-21l-131 -97l-61 0z" />
-<glyph unicode="&#341;" horiz-adv-x="274" d="M59 500h51l13 -53h3q14 29 36.5 45.5q22.5 16.5 54.5 16.5q23 0 52 -9l-14 -73q-26 9 -46 9q-32 0 -52 -18.5q-20 -18.5 -26 -49.5l0 -368h-72zM157 720h78v-21l-82 -128l-43 0z" />
-<glyph unicode="&#342;" horiz-adv-x="480" d="M64 693q33 8 72.5 11.5q39.5 3.5 72.5 3.5q39 0 74 -9.5q35 -9.5 61 -32q26 -22.5 41.5 -59q15.5 -36.5 15.5 -91.5q0 -83 -34.5 -133q-34.5 -50 -91.5 -67l38 -37l138 -279h-87l-150 305l-75 15v-320h-75zM139 370h60q57 0 90 35q33 35 33 107q0 55 -27.5 91q-27.5 36 -81.5 36q-20 0 -41.5 -1.5q-21.5 -1.5 -32.5 -4.5zM192 -102q0 21 13 34q13 13 31 13q22 0 38 -17q16 -17 16 -58q0 -26 -7.5 -45.5q-7.5 -19.5 -18 -34q-10.5 -14.5 -22 -23q-11.5 -8.5 -20.5 -12.5l-27 27q17 13 28.5 31.5q11.5 18.5 10.5 42.5q-17 -2 -29.5 9t-12.5 33z" />
-<glyph unicode="&#343;" horiz-adv-x="274" d="M59 500h51l13 -53h3q14 29 36.5 45.5q22.5 16.5 54.5 16.5q23 0 52 -9l-14 -73q-26 9 -46 9q-32 0 -52 -18.5q-20 -18.5 -26 -49.5l0 -368h-72zM63 -102q0 21 13 34q13 13 31 13q22 0 38 -17q16 -17 16 -58q0 -26 -7.5 -45.5q-7.5 -19.5 -18 -34q-10.5 -14.5 -22 -23q-11.5 -8.5 -20.5 -12.5l-27 27q17 13 28.5 31.5q11.5 18.5 10.5 42.5q-17 -2 -29.5 9t-12.5 33z" />
-<glyph unicode="&#344;" horiz-adv-x="480" d="M64 693q33 8 72.5 11.5q39.5 3.5 72.5 3.5q39 0 74 -9.5q35 -9.5 61 -32q26 -22.5 41.5 -59q15.5 -36.5 15.5 -91.5q0 -83 -34.5 -133q-34.5 -50 -91.5 -67l38 -37l138 -279h-87l-150 305l-75 15v-320h-75zM139 370h60q57 0 90 35q33 35 33 107q0 55 -27.5 91q-27.5 36 -81.5 36q-20 0 -41.5 -1.5q-21.5 -1.5 -32.5 -4.5zM228 746h-53l-102 103v21h69l47 -50l14 -34l15 33l50 51h66l0 -22z" />
-<glyph unicode="&#345;" horiz-adv-x="274" d="M59 500h51l13 -53h3q14 29 36.5 45.5q22.5 16.5 54.5 16.5q23 0 52 -9l-14 -73q-26 9 -46 9q-32 0 -52 -18.5q-20 -18.5 -26 -49.5l0 -368h-72zM169 550h-38l-93 182h68l31 -66l17 -58l17 58l36 66l61 0z" />
-<glyph unicode="&#346;" horiz-adv-x="428" d="M59 93q19 -13 53.5 -24.5q34.5 -11.5 78.5 -11.5q56 0 91 27.5q35 27.5 35 86.5q0 39 -20 68q-20 29 -50 53.5q-30 24.5 -64.5 48q-34.5 23.5 -64.5 52q-30 28.5 -50 65.5q-20 37 -20 89q0 84 50.5 124.5q50.5 40.5 131.5 40.5q50 0 89 -9q39 -9 63 -23v-66q-42 11 -75.5 20q-33.5 9 -77.5 9q-54 0 -80 -26.5q-26 -26.5 -26 -66.5q0 -35 20 -62q20 -27 50 -51q30 -24 64.5 -48.5q34.5 -24.5 64.5 -54.5q30 -30 50 -68q20 -38 20 -90q0 -88 -52 -138q-52 -50 -147 -50q-60 0 -98.5 11q-38.5 11 -61.5 25zM279 870h99v-21l-131 -97l-61 0z" />
-<glyph unicode="&#347;" horiz-adv-x="338" d="M51 82q20 -12 47.5 -20.5q27.5 -8.5 56.5 -8.5q33 0 56 16.5q23 16.5 23 53.5q0 31 -14 51q-14 20 -35.5 36q-21.5 16 -46.5 29.5q-25 13.5 -46.5 32.5q-21.5 19 -35.5 45q-14 26 -14 66q0 64 34.5 96.5q34.5 32.5 97.5 32.5q41 0 71 -7.5q30 -7.5 52 -20.5l-19 -60q-19 10 -44 16.5q-25 6.5 -51 6.5q-36 0 -52.5 -15q-16.5 -15 -16.5 -47q0 -25 14 -42.5q14 -17.5 35.5 -32q21.5 -14.5 46.5 -29.5q25 -15 46.5 -35.5q21.5 -20.5 35.5 -49q14 -28.5 14 -71.5q0 -28 -9 -53q-9 -25 -27.5 -43.5q-18.5 -18.5 -46 -29.5q-27.5 -11 -64.5 -11q-44 0 -76 8.5q-32 8.5 -54 22.5zM190 720h78v-21l-82 -128l-43 0z" />
-<glyph unicode="&#348;" horiz-adv-x="428" d="M59 93q19 -13 53.5 -24.5q34.5 -11.5 78.5 -11.5q56 0 91 27.5q35 27.5 35 86.5q0 39 -20 68q-20 29 -50 53.5q-30 24.5 -64.5 48q-34.5 23.5 -64.5 52q-30 28.5 -50 65.5q-20 37 -20 89q0 84 50.5 124.5q50.5 40.5 131.5 40.5q50 0 89 -9q39 -9 63 -23v-66q-42 11 -75.5 20q-33.5 9 -77.5 9q-54 0 -80 -26.5q-26 -26.5 -26 -66.5q0 -35 20 -62q20 -27 50 -51q30 -24 64.5 -48.5q34.5 -24.5 64.5 -54.5q30 -30 50 -68q20 -38 20 -90q0 -88 -52 -138q-52 -50 -147 -50q-60 0 -98.5 11q-38.5 11 -61.5 25zM205 870h50l102 -102v-21h-66l-47 49l-15 35l-15 -34l-52 -50h-64l0 22z" />
-<glyph unicode="&#349;" horiz-adv-x="338" d="M51 82q20 -12 47.5 -20.5q27.5 -8.5 56.5 -8.5q33 0 56 16.5q23 16.5 23 53.5q0 31 -14 51q-14 20 -35.5 36q-21.5 16 -46.5 29.5q-25 13.5 -46.5 32.5q-21.5 19 -35.5 45q-14 26 -14 66q0 64 34.5 96.5q34.5 32.5 97.5 32.5q41 0 71 -7.5q30 -7.5 52 -20.5l-19 -60q-19 10 -44 16.5q-25 6.5 -51 6.5q-36 0 -52.5 -15q-16.5 -15 -16.5 -47q0 -25 14 -42.5q14 -17.5 35.5 -32q21.5 -14.5 46.5 -29.5q25 -15 46.5 -35.5q21.5 -20.5 35.5 -49q14 -28.5 14 -71.5q0 -28 -9 -53q-9 -25 -27.5 -43.5q-18.5 -18.5 -46 -29.5q-27.5 -11 -64.5 -11q-44 0 -76 8.5q-32 8.5 -54 22.5zM161 732h35l89 -182h-63l-32 66l-16 58l-17 -58l-36 -66l-59 0z" />
-<glyph unicode="&#350;" horiz-adv-x="428" d="M59 93q19 -13 53.5 -24.5q34.5 -11.5 78.5 -11.5q56 0 91 27.5q35 27.5 35 86.5q0 39 -20 68q-20 29 -50 53.5q-30 24.5 -64.5 48q-34.5 23.5 -64.5 52q-30 28.5 -50 65.5q-20 37 -20 89q0 84 50.5 124.5q50.5 40.5 131.5 40.5q50 0 89 -9q39 -9 63 -23v-66q-42 11 -75.5 20q-33.5 9 -77.5 9q-54 0 -80 -26.5q-26 -26.5 -26 -66.5q0 -35 20 -62q20 -27 50 -51q30 -24 64.5 -48.5q34.5 -24.5 64.5 -54.5q30 -30 50 -68q20 -38 20 -90q0 -78 -41.5 -126q-41.5 -48 -116.5 -59l-15 -34q65 -15 65 -75q0 -39 -28.5 -64.5q-28.5 -25.5 -76.5 -25.5q-20 0 -37 4l7 39q23 -2 36.5 1q13.5 3 20.5 9q7 6 9 13.5q2 7.5 2 14.5q0 28 -69 37l34 78q-56 2 -92 12q-36 10 -57 24z" />
-<glyph unicode="&#351;" horiz-adv-x="338" d="M51 82q20 -12 47.5 -20q27.5 -8 56.5 -8q33 0 56 16q23 16 23 53q0 31 -14 51q-14 20 -35.5 36q-21.5 16 -46.5 29.5q-25 13.5 -46.5 32.5q-21.5 19 -35.5 45q-14 26 -14 66q0 64 34.5 96.5q34.5 32.5 97.5 32.5q41 0 71 -7.5q30 -7.5 52 -20.5l-19 -60q-19 10 -44 16.5q-25 6.5 -51 6.5q-36 0 -52.5 -15q-16.5 -15 -16.5 -47q0 -25 14 -42.5q14 -17.5 35.5 -32q21.5 -14.5 46.5 -29.5q25 -15 46.5 -35.5q21.5 -20.5 35.5 -49q14 -28.5 14 -71.5q0 -50 -29 -88q-29 -38 -87 -46l-15 -34q65 -15 65 -75q0 -39 -28.5 -64.5q-28.5 -25.5 -76.5 -25.5q-20 0 -37 4l7 39q23 -2 36.5 1q13.5 3 20.5 9q7 6 9 13.5q2 7.5 2 14.5q0 28 -69 37l35 79q-36 2 -63.5 10q-27.5 8 -46.5 20z" />
-<glyph unicode="&#352;" horiz-adv-x="428" d="M59 93q19 -13 53.5 -24.5q34.5 -11.5 78.5 -11.5q56 0 91 27.5q35 27.5 35 86.5q0 39 -20 68q-20 29 -50 53.5q-30 24.5 -64.5 48q-34.5 23.5 -64.5 52q-30 28.5 -50 65.5q-20 37 -20 89q0 84 50.5 124.5q50.5 40.5 131.5 40.5q50 0 89 -9q39 -9 63 -23v-66q-42 11 -75.5 20q-33.5 9 -77.5 9q-54 0 -80 -26.5q-26 -26.5 -26 -66.5q0 -35 20 -62q20 -27 50 -51q30 -24 64.5 -48.5q34.5 -24.5 64.5 -54.5q30 -30 50 -68q20 -38 20 -90q0 -88 -52 -138q-52 -50 -147 -50q-60 0 -98.5 11q-38.5 11 -61.5 25zM259 746h-53l-102 103v21h69l47 -50l14 -34l15 33l50 51h66l0 -22z" />
-<glyph unicode="&#353;" horiz-adv-x="338" d="M51 82q20 -12 47.5 -20.5q27.5 -8.5 56.5 -8.5q33 0 56 16.5q23 16.5 23 53.5q0 31 -14 51q-14 20 -35.5 36q-21.5 16 -46.5 29.5q-25 13.5 -46.5 32.5q-21.5 19 -35.5 45q-14 26 -14 66q0 64 34.5 96.5q34.5 32.5 97.5 32.5q41 0 71 -7.5q30 -7.5 52 -20.5l-19 -60q-19 10 -44 16.5q-25 6.5 -51 6.5q-36 0 -52.5 -15q-16.5 -15 -16.5 -47q0 -25 14 -42.5q14 -17.5 35.5 -32q21.5 -14.5 46.5 -29.5q25 -15 46.5 -35.5q21.5 -20.5 35.5 -49q14 -28.5 14 -71.5q0 -28 -9 -53q-9 -25 -27.5 -43.5q-18.5 -18.5 -46 -29.5q-27.5 -11 -64.5 -11q-44 0 -76 8.5q-32 8.5 -54 22.5zM185 550h-38l-93 182h68l31 -66l17 -58l17 58l36 66l61 0z" />
-<glyph unicode="&#354;" horiz-adv-x="447" d="M186 0v631h-172v69h419v-69h-172v-631h-12l-19 -43q65 -15 65 -75q0 -39 -28.5 -64.5q-28.5 -25.5 -76.5 -25.5q-20 0 -37 4l7 39q23 -2 36.5 1q13.5 3 20.5 9q7 6 9 13.5q2 7.5 2 14.5q0 28 -69 37l40 90z" />
-<glyph unicode="&#355;" horiz-adv-x="275" d="M9 500h61v99l72 23v-122h108v-65h-108v-298q0 -44 10.5 -63q10.5 -19 34.5 -19q20 0 34.5 4.5q14.5 4.5 31.5 11.5l14 -58q-30 -14 -63 -20l-1 0l-16 -36q65 -15 65 -75q0 -39 -28.5 -64.5q-28.5 -25.5 -76.5 -25.5q-20 0 -37 4l7 39q23 -2 36.5 1q13.5 3 20.5 9q7 6 9 13.5q2 7.5 2 14.5q0 28 -69 37l35 80q-43 3 -62 35.5q-19 32.5 -19 101.5v308l-61 0z" />
-<glyph unicode="&#356;" horiz-adv-x="447" d="M433 631h-172v-631h-75v631h-172v69h419zM249 746h-53l-102 103v21h69l47 -50l14 -34l15 33l50 51h66l0 -22z" />
-<glyph unicode="&#357;" horiz-adv-x="275" d="M9 500h61v99l72 23v-122h108v-65h-108v-298q0 -44 10.5 -63.5q10.5 -19.5 34.5 -19.5q20 0 34.5 4.5q14.5 4.5 31.5 11.5l14 -57q-22 -11 -48.5 -17.5q-26.5 -6.5 -55.5 -6.5q-50 0 -71.5 32.5q-21.5 32.5 -21.5 105.5v308h-61zM268 714q-2 -29 -10 -59q-8 -30 -19 -56q-11 -26 -22.5 -45.5q-11.5 -19.5 -18.5 -28.5l-30 15q14 36 21 82q7 46 7 92z" />
-<glyph unicode="&#362;" horiz-adv-x="521" d="M385 700h72v-469q0 -127 -49.5 -183.5q-49.5 -56.5 -140.5 -56.5q-106 0 -154.5 55q-48.5 55 -48.5 169v485h75v-446q0 -54 7 -91q7 -37 23 -60q16 -23 40 -33q24 -10 59 -10q66 0 91.5 46q25.5 46 25.5 148zM133 843h259v-62l-259 0z" />
-<glyph unicode="&#363;" horiz-adv-x="434" d="M124 500v-306q0 -76 15.5 -108.5q15.5 -32.5 56.5 -32.5q21 0 37.5 8.5q16.5 8.5 29.5 22.5q13 14 23 32q10 18 16 37l0 347h72v-358q0 -36 2.5 -74.5q2.5 -38.5 7.5 -67.5l-51 0l-18 70h-3q-17 -33 -49 -57.5q-32 -24.5 -80 -24.5q-32 0 -56 8q-24 8 -41 29q-17 21 -25.5 57.5q-8.5 36.5 -8.5 93.5v324zM94 643h243v-59l-243 0z" />
-<glyph unicode="&#364;" horiz-adv-x="521" d="M385 700h72v-469q0 -127 -49.5 -183.5q-49.5 -56.5 -140.5 -56.5q-106 0 -154.5 55q-48.5 55 -48.5 169v485h75v-446q0 -54 7 -91q7 -37 23 -60q16 -23 40 -33q24 -10 59 -10q66 0 91.5 46q25.5 46 25.5 148zM157 871q14 -34 42 -55q28 -21 66 -21q39 0 64.5 22.5q25.5 22.5 38.5 53.5l36 -16q-15 -63 -54.5 -94q-39.5 -31 -85.5 -31q-43 0 -84.5 29q-41.5 29 -60.5 92z" />
-<glyph unicode="&#365;" horiz-adv-x="434" d="M124 500v-306q0 -76 15.5 -108.5q15.5 -32.5 56.5 -32.5q21 0 37.5 8.5q16.5 8.5 29.5 22.5q13 14 23 32q10 18 16 37l0 347h72v-358q0 -36 2.5 -74.5q2.5 -38.5 7.5 -67.5l-51 0l-18 70h-3q-17 -33 -49 -57.5q-32 -24.5 -80 -24.5q-32 0 -56 8q-24 8 -41 29q-17 21 -25.5 57.5q-8.5 36.5 -8.5 93.5v324zM126 717q14 -36 38 -57.5q24 -21.5 53 -21.5q28 0 49.5 21q21.5 21 34.5 58l37 -15q-2 -26 -12.5 -49.5q-10.5 -23.5 -26.5 -41q-16 -17.5 -37.5 -28q-21.5 -10.5 -45.5 -10.5q-47 0 -82.5 33q-35.5 33 -46.5 93z" />
-<glyph unicode="&#366;" horiz-adv-x="521" d="M385 700h72v-469q0 -127 -49.5 -183.5q-49.5 -56.5 -140.5 -56.5q-106 0 -154.5 55q-48.5 55 -48.5 169v485h75v-446q0 -54 7 -91q7 -37 23 -60q16 -23 40 -33q24 -10 59 -10q66 0 91.5 46q25.5 46 25.5 148zM174 768q0 37 21 61q21 24 69 24q43 0 66.5 -21.5q23.5 -21.5 23.5 -63.5q0 -36 -22.5 -59.5q-22.5 -23.5 -67.5 -23.5q-45 0 -67.5 22.5q-22.5 22.5 -22.5 60.5zt0 0zM228 768q0 -18 8.5 -29.5q8.5 -11.5 27.5 -11.5q36 0 36 41q0 43 -36 43q-36 0 -36 -43z" />
-<glyph unicode="&#367;" horiz-adv-x="434" d="M124 500v-306q0 -76 15.5 -108.5q15.5 -32.5 56.5 -32.5q21 0 37.5 8.5q16.5 8.5 29.5 22.5q13 14 23 32q10 18 16 37l0 347h72v-358q0 -36 2.5 -74.5q2.5 -38.5 7.5 -67.5l-51 0l-18 70h-3q-17 -33 -49 -57.5q-32 -24.5 -80 -24.5q-32 0 -56 8q-24 8 -41 29q-17 21 -25.5 57.5q-8.5 36.5 -8.5 93.5v324zM131 643q0 42 22 65.5q22 23.5 60 23.5q36 0 59.5 -21q23.5 -21 23.5 -68q0 -40 -22.5 -64q-22.5 -24 -60.5 -24q-38 0 -60 22.5q-22 22.5 -22 65.5zt0 0zM179 643q0 -23 10 -34.5q10 -11.5 24 -11.5q16 0 25.5 11q9.5 11 9.5 35q0 24 -10.5 35.5q-10.5 11.5 -24.5 11.5q-14 0 -24 -11t-10 -36z" />
-<glyph unicode="&#368;" horiz-adv-x="521" d="M385 700h72v-469q0 -127 -49.5 -183.5q-49.5 -56.5 -140.5 -56.5q-106 0 -154.5 55q-48.5 55 -48.5 169v485h75v-446q0 -54 7 -91q7 -37 23 -60q16 -23 40 -33q24 -10 59 -10q66 0 91.5 46q25.5 46 25.5 148zM217 850h81v-16l-80 -93h-52zM353 850h86v-16l-115 -93l-52 0z" />
-<glyph unicode="&#369;" horiz-adv-x="434" d="M124 500v-306q0 -76 15.5 -108.5q15.5 -32.5 56.5 -32.5q21 0 37.5 8.5q16.5 8.5 29.5 22.5q13 14 23 32q10 18 16 37l0 347h72v-358q0 -36 2.5 -74.5q2.5 -38.5 7.5 -67.5l-51 0l-18 70h-3q-17 -33 -49 -57.5q-32 -24.5 -80 -24.5q-32 0 -56 8q-24 8 -41 29q-17 21 -25.5 57.5q-8.5 36.5 -8.5 93.5v324zM163 700h69v-16l-58 -113h-39zM286 700h75v-16l-92 -113l-42 0z" />
-<glyph unicode="&#370;" horiz-adv-x="521" d="M385 700h72v-469q0 -97 -29.5 -152.5q-29.5 -55.5 -83.5 -75.5q-23 -17 -35.5 -39q-12.5 -22 -12.5 -52q0 -14 5 -25.5q5 -11.5 14 -18.5q9 -7 22.5 -8q13.5 -1 31.5 6l11 -40q-11 -10 -32.5 -16q-21.5 -6 -39.5 -6q-39 0 -62 24.5q-23 24.5 -24 63.5q1 30 14.5 55.5q13.5 25.5 38.5 43.5l-8 0q-106 0 -154.5 55q-48.5 55 -48.5 169v485h75v-446q0 -54 7 -91q7 -37 23 -60q16 -23 40 -33q24 -10 59 -10q66 0 91.5 46q25.5 46 25.5 148z" />
-<glyph unicode="&#371;" horiz-adv-x="434" d="M124 500v-306q0 -76 15.5 -108.5q15.5 -32.5 56.5 -32.5q21 0 37.5 8.5q16.5 8.5 29.5 22.5q13 14 23 32q10 18 16 37l0 347h72v-358q0 -36 2.5 -74.5q2.5 -38.5 7.5 -67.5l-13 0q-23 -16 -38 -37q-15 -21 -14 -51q0 -14 5 -25.5q5 -11.5 15 -18.5q10 -7 24 -7q14 0 31 10l11 -43q-12 -12 -33.5 -18q-21.5 -6 -40.5 -6q-38 0 -60.5 24q-22.5 24 -22.5 65q0 42 22.5 69q22.5 27 60.5 44l-16 64h-3q-17 -33 -49 -57.5q-32 -24.5 -80 -24.5q-32 0 -56 8q-24 8 -41 29q-17 21 -25.5 57.5q-8.5 36.5 -8.5 93.5l0 324z" />
-<glyph unicode="&#376;" horiz-adv-x="455" d="M191 278l-186 422h88l126 -305l13 -61h2l13 63l122 303h81l-184 -421v-279h-75zM105 794q0 21 12.5 34q12.5 13 34.5 13q21 0 33.5 -13q12.5 -13 12.5 -34q0 -21 -12.5 -33.5q-12.5 -12.5 -33.5 -12.5q-22 0 -34.5 12.5q-12.5 12.5 -12.5 33.5zt0 0zM263 794q0 21 12.5 34q12.5 13 33.5 13q22 0 34.5 -13q12.5 -13 12.5 -34q0 -21 -12.5 -33.5q-12.5 -12.5 -34.5 -12.5q-21 0 -33.5 12.5t-12.5 33.5z" />
-<glyph unicode="&#377;" horiz-adv-x="439" d="M29 69l278 522l33 40h-311v69h381v-69l-279 -525l-32 -37h311v-69h-381zM266 870h99v-21l-131 -97l-61 0z" />
-<glyph unicode="&#378;" horiz-adv-x="360" d="M32 65l186 327l35 43h-221v65h292v-65l-187 -330l-34 -40h221v-65h-292zM193 720h78v-21l-82 -128l-43 0z" />
-<glyph unicode="&#379;" horiz-adv-x="439" d="M29 69l278 522l33 40h-311v69h381v-69l-279 -525l-32 -37h311v-69h-381zM167 797q0 21 14 36.5q14 15.5 40 15.5q26 0 40.5 -15.5q14.5 -15.5 14.5 -36.5q0 -23 -14.5 -38q-14.5 -15 -40.5 -15q-26 0 -40 15t-14 38z" />
-<glyph unicode="&#380;" horiz-adv-x="360" d="M32 65l186 327l35 43h-221v65h292v-65l-187 -330l-34 -40h221v-65h-292zM134 652q0 24 13.5 39q13.5 15 35.5 15q22 0 36.5 -14.5q14.5 -14.5 14.5 -39.5q0 -24 -14.5 -37.5q-14.5 -13.5 -36.5 -13.5q-22 0 -35.5 14t-13.5 37z" />
-<glyph unicode="&#381;" horiz-adv-x="439" d="M29 69l278 522l33 40h-311v69h381v-69l-279 -525l-32 -37h311v-69h-381zM237 746h-53l-102 103v21h69l47 -50l14 -34l15 33l50 51h66l0 -22z" />
-<glyph unicode="&#382;" horiz-adv-x="360" d="M32 65l186 327l35 43h-221v65h292v-65l-187 -330l-34 -40h221v-65h-292zM195 550h-38l-93 182h68l31 -66l17 -58l17 58l36 66l61 0z" />
-<glyph unicode="&#383;" horiz-adv-x="206" d="M16 500h61v28q0 94 27 136q27 42 91 42q28 0 49 -3.5q21 -3.5 43 -13.5l-18 -60q-19 8 -33.5 10q-14.5 2 -28.5 2q-20 0 -31.5 -8q-11.5 -8 -17.5 -25q-6 -17 -7.5 -43.5q-1.5 -26.5 -1.5 -64.5v-500h-72v435l-61 0z" />
-<glyph unicode="&#402;" horiz-adv-x="450" d="M259 435l-62 -469q-5 -37 -14 -68.5q-9 -31.5 -24 -55q-15 -23.5 -37 -37q-22 -13.5 -53 -13.5q-24 0 -52.5 5.5q-28.5 5.5 -48.5 15.5v61q38 -8 54.5 -12.5q16.5 -4.5 36.5 -4.5q30 0 46 36q16 36 26 115l53 427h-67v65h77l9 67q10 73 35.5 109q25.5 36 85.5 36q27 0 54.5 -5.5q27.5 -5.5 48.5 -15.5l-20 -60q-36 16 -72 16q-30 0 -42 -25.5q-12 -25.5 -19 -80.5l-5 -41h97l0 -65z" />
-<glyph unicode="&#500;" horiz-adv-x="492" d="M257 349h193v-308q-28 -26 -72 -39.5q-44 -13.5 -89 -13.5q-56 0 -101.5 21q-45.5 21 -77.5 65.5q-32 44.5 -49.5 112.5q-17.5 68 -17.5 163q0 98 21 166.5q21 68.5 56.5 112q35.5 43.5 81 63.5q45.5 20 93.5 20q48 0 80.5 -6.5q32.5 -6.5 55.5 -17.5l-18 -68q-20 11 -47.5 17q-27.5 6 -63.5 6q-35 0 -67 -15q-32 -15 -57.5 -49.5q-25.5 -34.5 -40.5 -90.5q-15 -56 -15 -138q0 -150 47.5 -221.5q47.5 -71.5 130.5 -71.5q52 0 86 25l0 204l-129 19zM341 870h99v-21l-131 -97l-61 0z" />
-<glyph unicode="&#501;" horiz-adv-x="432" d="M374 -23q0 -97 -43 -143q-43 -46 -125 -46q-50 0 -82 8.5q-32 8.5 -52 19.5l21 62q20 -9 44 -17q24 -8 59 -8q61 0 83.5 34q22.5 34 22.5 114v37h-3q-16 -23 -41 -36q-25 -13 -64 -13q-81 0 -119 62.5q-38 62.5 -38 196.5q0 129 49.5 195q49.5 66 146.5 66q47 0 81 -9q34 -9 60 -21zM302 428q-30 16 -77 16q-51 0 -82 -46.5q-31 -46.5 -31 -148.5q0 -42 5 -77.5q5 -35.5 17 -62q12 -26.5 30.5 -41q18.5 -14.5 45.5 -14.5q38 0 60 20q22 20 32 60zM246 720h78v-21l-82 -128l-43 0z" />
-<glyph unicode="&#536;" horiz-adv-x="428" d="M59 93q19 -13 53.5 -24.5q34.5 -11.5 78.5 -11.5q56 0 91 27.5q35 27.5 35 86.5q0 39 -20 68q-20 29 -50 53.5q-30 24.5 -64.5 48q-34.5 23.5 -64.5 52q-30 28.5 -50 65.5q-20 37 -20 89q0 84 50.5 124.5q50.5 40.5 131.5 40.5q50 0 89 -9q39 -9 63 -23v-66q-42 11 -75.5 20q-33.5 9 -77.5 9q-54 0 -80 -26.5q-26 -26.5 -26 -66.5q0 -35 20 -62q20 -27 50 -51q30 -24 64.5 -48.5q34.5 -24.5 64.5 -54.5q30 -30 50 -68q20 -38 20 -90q0 -88 -52 -138q-52 -50 -147 -50q-60 0 -98.5 11q-38.5 11 -61.5 25zM157 -102q0 21 13 34q13 13 31 13q22 0 38 -17q16 -17 16 -58q0 -26 -7.5 -45.5q-7.5 -19.5 -18 -34q-10.5 -14.5 -22 -23q-11.5 -8.5 -20.5 -12.5l-27 27q17 13 28.5 31.5q11.5 18.5 10.5 42.5q-17 -2 -29.5 9t-12.5 33z" />
-<glyph unicode="&#537;" horiz-adv-x="338" d="M51 82q20 -12 47.5 -20.5q27.5 -8.5 56.5 -8.5q33 0 56 16.5q23 16.5 23 53.5q0 31 -14 51q-14 20 -35.5 36q-21.5 16 -46.5 29.5q-25 13.5 -46.5 32.5q-21.5 19 -35.5 45q-14 26 -14 66q0 64 34.5 96.5q34.5 32.5 97.5 32.5q41 0 71 -7.5q30 -7.5 52 -20.5l-19 -60q-19 10 -44 16.5q-25 6.5 -51 6.5q-36 0 -52.5 -15q-16.5 -15 -16.5 -47q0 -25 14 -42.5q14 -17.5 35.5 -32q21.5 -14.5 46.5 -29.5q25 -15 46.5 -35.5q21.5 -20.5 35.5 -49q14 -28.5 14 -71.5q0 -28 -9 -53q-9 -25 -27.5 -43.5q-18.5 -18.5 -46 -29.5q-27.5 -11 -64.5 -11q-44 0 -76 8.5q-32 8.5 -54 22.5zM117 -102q0 21 13 34q13 13 31 13q22 0 38 -17q16 -17 16 -58q0 -26 -7.5 -45.5q-7.5 -19.5 -18 -34q-10.5 -14.5 -22 -23q-11.5 -8.5 -20.5 -12.5l-27 27q17 13 28.5 31.5q11.5 18.5 10.5 42.5q-17 -2 -29.5 9t-12.5 33z" />
-<glyph unicode="&#538;" horiz-adv-x="447" d="M433 631h-172v-631h-75v631h-172v69h419zM175 -102q0 21 13 34q13 13 31 13q22 0 38 -17q16 -17 16 -58q0 -26 -7.5 -45.5q-7.5 -19.5 -18 -34q-10.5 -14.5 -22 -23q-11.5 -8.5 -20.5 -12.5l-27 27q17 13 28.5 31.5q11.5 18.5 10.5 42.5q-17 -2 -29.5 9t-12.5 33z" />
-<glyph unicode="&#539;" horiz-adv-x="275" d="M9 500h61v99l72 23v-122h108v-65h-108v-298q0 -44 10.5 -63.5q10.5 -19.5 34.5 -19.5q20 0 34.5 4.5q14.5 4.5 31.5 11.5l14 -57q-22 -11 -48.5 -17.5q-26.5 -6.5 -55.5 -6.5q-50 0 -71.5 32.5q-21.5 32.5 -21.5 105.5v308h-61zM104 -102q0 21 13 34q13 13 31 13q22 0 38 -17q16 -17 16 -58q0 -26 -7.5 -45.5q-7.5 -19.5 -18 -34q-10.5 -14.5 -22 -23q-11.5 -8.5 -20.5 -12.5l-27 27q17 13 28.5 31.5q11.5 18.5 10.5 42.5q-17 -2 -29.5 9t-12.5 33z" />
-<glyph unicode="&#567;" horiz-adv-x="215" d="M72 500h72v-527q0 -103 -33 -148.5q-33 -45.5 -107 -34.5l0 65q22 0 35.5 9q13.5 9 21 27.5q7.5 18.5 9.5 46q2 27.5 2 64.5z" />
-<glyph unicode="&#700;" horiz-adv-x="162" d="M31 659q0 23 13 36q13 13 33 13q24 0 39 -16.5q15 -16.5 15 -50.5q0 -32 -8 -56q-8 -24 -19.5 -40.5q-11.5 -16.5 -24.5 -27q-13 -10.5 -22 -15.5l-23 30q17 11 29.5 31.5q12.5 20.5 11.5 47.5q-18 -3 -31 10t-13 38z" />
-<glyph unicode="&#710;" horiz-adv-x="343" d="M159 732h35l89 -182h-63l-32 66l-16 58l-17 -58l-36 -66l-59 0z" />
-<glyph unicode="&#711;" horiz-adv-x="350" d="M191 550h-38l-93 182h68l31 -66l17 -58l17 58l36 66l61 0z" />
-<glyph unicode="&#728;" horiz-adv-x="371" d="M99 717q14 -36 38 -57.5q24 -21.5 53 -21.5q28 0 49.5 21q21.5 21 34.5 58l37 -15q-2 -26 -12.5 -49.5q-10.5 -23.5 -26.5 -41q-16 -17.5 -37.5 -28q-21.5 -10.5 -45.5 -10.5q-47 0 -82.5 33q-35.5 33 -46.5 93z" />
-<glyph unicode="&#729;" horiz-adv-x="220" d="M60 652q0 24 13.5 39q13.5 15 35.5 15q22 0 36.5 -14.5q14.5 -14.5 14.5 -39.5q0 -24 -14.5 -37.5q-14.5 -13.5 -36.5 -13.5q-22 0 -35.5 14t-13.5 37z" />
-<glyph unicode="&#730;" horiz-adv-x="285" d="M60 643q0 42 22 65.5q22 23.5 60 23.5q36 0 59.5 -21q23.5 -21 23.5 -68q0 -40 -22.5 -64q-22.5 -24 -60.5 -24q-38 0 -60 22.5q-22 22.5 -22 65.5zt0 0zM108 643q0 -23 10 -34.5q10 -11.5 24 -11.5q16 0 25.5 11q9.5 11 9.5 35q0 24 -10.5 35.5q-10.5 11.5 -24.5 11.5q-14 0 -24 -11t-10 -36z" />
-<glyph unicode="&#731;" horiz-adv-x="278" d="M195 10q-29 -16 -46 -40.5q-17 -24.5 -17 -56.5q1 -29 20 -44.5q19 -15.5 56 -0.5l10 -40q-11 -11 -31.5 -17q-20.5 -6 -39.5 -6q-40 0 -63.5 24q-23.5 24 -23.5 62q0 43 24.5 72.5q24.5 29.5 62.5 46.5z" />
-<glyph unicode="&#732;" horiz-adv-x="362" d="M60 653q27 34 48 46.5q21 12.5 38 12.5q14 0 26 -6q12 -6 23.5 -12.5q11.5 -6.5 22 -12.5q10.5 -6 22.5 -6q9 0 18.5 4.5q9.5 4.5 20.5 16.5l23 -38q-24 -29 -42.5 -40q-18.5 -11 -34.5 -11q-14 0 -26 5.5q-12 5.5 -23.5 12.5q-11.5 7 -22.5 12.5q-11 5.5 -23 5.5q-11 0 -22 -5.5q-11 -5.5 -24 -19.5z" />
-<glyph unicode="&#733;" horiz-adv-x="346" d="M88 700h69v-16l-58 -113h-39zM211 700h75v-16l-92 -113l-42 0z" />
-<glyph unicode="&#769;" horiz-adv-x="2" d="M-291 720h78v-21l-82 -128l-43 0z" />
-<glyph unicode="&#916;" horiz-adv-x="459" d="M11 0v37l201 674h35l204 -674v-37zM91 65h277l-121 402l-18 114h-3l-21 -116z" />
-<glyph unicode="&#937;" horiz-adv-x="640" d="M58 65h91l75 -10v27l-43 10q-25 15 -47.5 42q-22.5 27 -39 63.5q-16.5 36.5 -26.5 81.5q-10 45 -10 97q0 79 18.5 141q18.5 62 52.5 105.5q34 43.5 82 66.5q48 23 108 23q63 0 112 -25q49 -25 82.5 -70q33.5 -45 51 -107.5q17.5 -62.5 17.5 -137.5q0 -54 -11 -98.5q-11 -44.5 -28.5 -80q-17.5 -35.5 -39.5 -60.5q-22 -25 -43 -40l-45 -11v-27l76 10h91v-65h-233v116q23 6 50 23q27 17 50 48.5q23 31.5 38.5 78.5q15.5 47 15.5 111q0 48 -10.5 96q-10.5 48 -33 85.5q-22.5 37.5 -57 61q-34.5 23.5 -83.5 23.5q-88 0 -135 -68.5q-47 -68.5 -47 -200.5q0 -63 14.5 -109q14.5 -46 36.5 -77.5q22 -31.5 49 -49q27 -17.5 53 -22.5l0 -116l-232 0z" />
-<glyph unicode="&#960;" horiz-adv-x="535" d="M421 112q0 -28 7.5 -39.5q7.5 -11.5 18.5 -11.5q8 0 18 2.5q10 2.5 17 4.5l16 -53q-14 -6 -34 -12.5q-20 -6.5 -46 -6.5q-41 0 -55 29q-14 29 -14 81v329h-145v-435h-72v435h-13q-30 0 -52 -41l-43 34q16 36 41 54q25 18 68 18h355v-65l-67 0z" />
-<glyph unicode="&#1025;" horiz-adv-x="429" d="M64 700h311v-69h-236v-237h217v-69h-217v-256h241v-69h-316zM90 794q0 21 12.5 34q12.5 13 34.5 13q21 0 33.5 -13q12.5 -13 12.5 -34q0 -21 -12.5 -33.5q-12.5 -12.5 -33.5 -12.5q-22 0 -34.5 12.5q-12.5 12.5 -12.5 33.5zt0 0zM248 794q0 21 12.5 34q12.5 13 33.5 13q22 0 34.5 -13q12.5 -13 12.5 -34q0 -21 -12.5 -33.5q-12.5 -12.5 -34.5 -12.5q-21 0 -33.5 12.5t-12.5 33.5z" />
-<glyph unicode="&#1026;" horiz-adv-x="588" d="M262 0h-75v631h-173v69h421v-69h-173v-216q10 4 39 13q29 9 74 9q33 0 63.5 -9.5q30.5 -9.5 54.5 -33.5q24 -24 38.5 -64.5q14.5 -40.5 14.5 -103.5q0 -120 -46.5 -177q-46.5 -57 -141.5 -57q-26 0 -38.5 0.5q-12.5 0.5 -18.5 2.5l0 69q11 -2 23 -2.5q12 -0.5 34 -0.5q109 0 109 158q0 43 -8.5 72q-8.5 29 -24.5 46q-16 17 -37.5 24q-21.5 7 -46.5 7q-14 0 -28 -2.5q-14 -2.5 -26 -6.5q-12 -4 -21 -7.5q-9 -3.5 -13 -5.5z" />
-<glyph unicode="&#1027;" horiz-adv-x="357" d="M370 631h-231v-631h-75v700h306zM250 870h99v-21l-131 -97l-61 0z" />
-<glyph unicode="&#1028;" horiz-adv-x="469" d="M432 27q-25 -21 -64 -30q-39 -9 -81 -9q-53 0 -98 20q-45 20 -77.5 63.5q-32.5 43.5 -50.5 112.5q-18 69 -18 166q0 100 20.5 169q20.5 69 54.5 112q34 43 78.5 62q44.5 19 91.5 19q48 0 81 -7q33 -7 56 -17l-19 -68q-19 11 -47.5 17q-28.5 6 -63.5 6q-32 0 -61.5 -13q-29.5 -13 -52.5 -42.5q-23 -29.5 -38.5 -76.5q-15.5 -47 -19.5 -115l242 0v-69h-243q5 -135 55 -202.5q50 -67.5 130 -67.5q35 0 62 9.5q27 9.5 45 22.5z" />
-<glyph unicode="&#1029;" horiz-adv-x="428" d="M59 93q19 -13 53.5 -24.5q34.5 -11.5 78.5 -11.5q56 0 91 27.5q35 27.5 35 86.5q0 39 -20 68q-20 29 -50 53.5q-30 24.5 -64.5 48q-34.5 23.5 -64.5 52q-30 28.5 -50 65.5q-20 37 -20 89q0 84 50.5 124.5q50.5 40.5 131.5 40.5q50 0 89 -9q39 -9 63 -23v-66q-42 11 -75.5 20q-33.5 9 -77.5 9q-54 0 -80 -26.5q-26 -26.5 -26 -66.5q0 -35 20 -62q20 -27 50 -51q30 -24 64.5 -48.5q34.5 -24.5 64.5 -54.5q30 -30 50 -68q20 -38 20 -90q0 -88 -52 -138q-52 -50 -147 -50q-60 0 -98.5 11q-38.5 11 -61.5 25z" />
-<glyph unicode="&#1030;" horiz-adv-x="233" d="M79 700h75v-700l-75 0z" />
-<glyph unicode="&#1031;" horiz-adv-x="236" d="M19 793q0 22 12 35q12 13 32 13q20 0 31.5 -13q11.5 -13 11.5 -35q0 -22 -11.5 -34.5q-11.5 -12.5 -31.5 -12.5q-20 0 -32 12.5q-12 12.5 -12 34.5zt0 0zM130 793q0 22 11.5 35q11.5 13 31.5 13q20 0 32 -13q12 -13 12 -35q0 -22 -12 -34.5q-12 -12.5 -32 -12.5q-20 0 -31.5 12.5q-11.5 12.5 -11.5 34.5zt0 0zM80 700h75v-700l-75 0z" />
-<glyph unicode="&#1032;" horiz-adv-x="241" d="M93 700h75v-543q0 -82 -26.5 -124.5q-26.5 -42.5 -92.5 -42.5q-16 0 -38.5 4q-22.5 4 -36.5 12l16 65q10 -6 22.5 -9q12.5 -3 25.5 -3q18 0 29 8q11 8 17 22.5q6 14.5 7.5 35q1.5 20.5 1.5 46.5z" />
-<glyph unicode="&#1033;" horiz-adv-x="747" d="M363 631h-158q-8 -201 -21 -336q-13 -135 -40 -208q-17 -48 -42 -70q-25 -22 -57 -22q-29 0 -49 10l11 68q20 -6 37 2.5q17 8.5 32 46.5q11 27 20.5 72.5q9.5 45.5 17 115.5q7.5 70 12.5 166q5 96 7 224l305 0v-272q13 3 37.5 6q24.5 3 43.5 3q40 0 76.5 -9.5q36.5 -9.5 64.5 -33.5q28 -24 44.5 -64.5q16.5 -40.5 16.5 -102.5q0 -61 -15.5 -105q-15.5 -44 -44.5 -73q-29 -29 -70 -43q-41 -14 -92 -14q-11 0 -27.5 0.5q-16.5 0.5 -35 2q-18.5 1.5 -38 4q-19.5 2.5 -35.5 7.5zM438 66q12 -3 31 -4q19 -1 38 -1q61 0 98 39q37 39 37 120q0 43 -10.5 71.5q-10.5 28.5 -29 45.5q-18.5 17 -43.5 24q-25 7 -53 7q-7 0 -17 -1q-10 -1 -19.5 -2q-9.5 -1 -18.5 -3q-9 -2 -13 -3z" />
-<glyph unicode="&#1034;" horiz-adv-x="781" d="M397 338h-258v-338h-75v700h75v-293h258v293h75v-293q4 1 13.5 2.5q9.5 1.5 21.5 2.5q12 1 24.5 2q12.5 1 21.5 1q39 0 75.5 -8q36.5 -8 64.5 -30q28 -22 45 -61q17 -39 17 -100q0 -60 -16 -102.5q-16 -42.5 -45 -69.5q-29 -27 -69.5 -39.5q-40.5 -12.5 -90.5 -12.5q-11 0 -28 0.5q-17 0.5 -35.5 2q-18.5 1.5 -38 4.5q-19.5 3 -35.5 7zM472 67q11 -4 31 -5q20 -1 40 -1q60 0 96.5 35.5q36.5 35.5 36.5 113.5q0 42 -10.5 68.5q-10.5 26.5 -29 41.5q-18.5 15 -43 20.5q-24.5 5.5 -51.5 5.5q-7 0 -17.5 -1q-10.5 -1 -21 -2q-10.5 -1 -19 -3q-8.5 -2 -12.5 -3z" />
-<glyph unicode="&#1035;" horiz-adv-x="605" d="M261 0h-75v631h-172v69h419v-69h-172v-234q21 15 57 29q36 14 82 14q35 0 63.5 -9.5q28.5 -9.5 48.5 -32q20 -22.5 31 -60q11 -37.5 11 -93.5v-245h-75v233q0 75 -23 106.5q-23 31.5 -73 31.5q-36 0 -69 -12.5q-33 -12.5 -53 -32.5z" />
-<glyph unicode="&#1036;" horiz-adv-x="493" d="M175 324h-36v-324h-75v700h75v-326l35 14l182 312h86l-183 -302l-35 -32l41 -40l203 -326h-95zM276 870h99v-21l-131 -97l-61 0z" />
-<glyph unicode="&#1038;" horiz-adv-x="448" d="M228 341l19 -89h5l16 92l104 356h77l-143 -455q-22 -70 -38.5 -118q-16.5 -48 -33 -77q-16.5 -29 -36.5 -42q-20 -13 -49 -13q-26 0 -43 5q-17 5 -32 16l22 64q16 -11 29 -13.5q13 -2.5 24 -2.5q22 0 37 30.5q15 30.5 26 86.5l-209 519h88zM170 870q2 -37 20.5 -59q18.5 -22 50.5 -22q32 0 49.5 22q17.5 22 20.5 58l64 -15q-8 -57 -41 -88q-33 -31 -94 -31q-59 0 -97.5 28q-38.5 28 -44.5 90z" />
-<glyph unicode="&#1039;" horiz-adv-x="526" d="M64 0v700h75v-631h248v631h75v-700h-162l-13 -179h-47l-16 179z" />
-<glyph unicode="&#1040;" horiz-adv-x="473" d="M333 196h-198l-56 -196h-74l211 711h41l211 -711h-78zM155 263h160l-61 216l-19 105h-2l-19 -107z" />
-<glyph unicode="&#1041;" horiz-adv-x="445" d="M64 700h313v-69h-238v-215q14 3 34.5 6q20.5 3 39.5 3q42 0 79 -9.5q37 -9.5 64.5 -32.5q27.5 -23 43.5 -62.5q16 -39.5 16 -99.5q0 -60 -15.5 -103.5q-15.5 -43.5 -43 -71q-27.5 -27.5 -65.5 -41q-38 -13.5 -84 -13.5q-14 0 -32.5 0.5q-18.5 0.5 -38 2q-19.5 1.5 -39 4.5q-19.5 3 -34.5 7zM139 67q11 -4 33.5 -5q22.5 -1 42.5 -1q54 0 88 35q34 35 34 111q0 48 -10.5 77.5q-10.5 29.5 -28.5 45.5q-18 16 -42.5 21q-24.5 5 -52.5 5q-7 0 -16 -1q-9 -1 -18.5 -2q-9.5 -1 -17.5 -3q-8 -2 -12 -3z" />
-<glyph unicode="&#1042;" horiz-adv-x="471" d="M411 541q0 -26 -6 -52q-6 -26 -19 -49q-13 -23 -32.5 -41q-19.5 -18 -47.5 -27l0 -4q24 -5 46 -16.5q22 -11.5 39 -32q17 -20.5 27 -50q10 -29.5 10 -70.5q0 -54 -17 -93.5q-17 -39.5 -46.5 -64.5q-29.5 -25 -68 -37q-38.5 -12 -81.5 -12q-14 0 -32.5 0q-18.5 0 -39.5 1.5q-21 1.5 -41.5 4q-20.5 2.5 -37.5 7.5l0 689q30 6 70.5 10q40.5 4 87.5 4q34 0 68 -6.5q34 -6.5 61 -24.5q27 -18 43.5 -50.5q16.5 -32.5 16.5 -85.5zt0 0zM221 61q27 0 50 8.5q23 8.5 40.5 25.5q17.5 17 27.5 41.5q10 24.5 10 57.5q0 41 -12.5 66.5q-12.5 25.5 -32.5 39.5q-20 14 -45.5 19q-25.5 5 -52.5 5h-67v-256q6 -2 15.5 -3q9.5 -1 21 -2q11.5 -1 23.5 -1.5q12 -0.5 22 -0.5zt0 0zM180 389q14 0 32 1q18 1 30 3q37 15 63.5 48.5q26.5 33.5 26.5 82.5q0 33 -9 55.5q-9 22.5 -24.5 35.5q-15.5 13 -36.5 18.5q-21 5.5 -44 5.5q-26 0 -47 -1.5q-21 -1.5 -32 -3.5l0 -245z" />
-<glyph unicode="&#1043;" horiz-adv-x="357" d="M370 631h-231v-631h-75v700l306 0z" />
-<glyph unicode="&#1044;" horiz-adv-x="542" d="M521 -129h-53l-12 129h-388l-12 -129h-53v198h58q6 11 19.5 52q13.5 41 27 117.5q13.5 76.5 23.5 191q10 114.5 9 270.5l308 0v-631h73zM373 69v562h-161q-5 -221 -26 -358q-21 -137 -46 -204z" />
-<glyph unicode="&#1045;" horiz-adv-x="429" d="M64 700h311v-69h-236v-237h217v-69h-217v-256h241v-69l-316 0z" />
-<glyph unicode="&#1046;" horiz-adv-x="654" d="M287 700h72v-326l34 14l154 312h84l-157 -304l-33 -32l41 -40l174 -324h-93l-168 325h-36v-325h-72v337l-33 -14l-168 -323h-88l172 314l39 37l-37 35l-162 314h88l154 -314l35 0z" />
-<glyph unicode="&#1047;" horiz-adv-x="434" d="M109 333v65h18q15 0 37 1q22 1 35 4q40 10 68.5 41.5q28.5 31.5 28.5 79.5q0 66 -32 92.5q-32 26.5 -81 26.5q-39 0 -69 -7q-30 -7 -49 -18l-20 61q18 11 59.5 22q41.5 11 93.5 11q34 0 66 -8q32 -8 56.5 -27.5q24.5 -19.5 39.5 -53q15 -33.5 15 -83.5q0 -51 -25.5 -95.5q-25.5 -44.5 -78.5 -66.5l0 -4q56 -11 88.5 -53.5q32.5 -42.5 32.5 -114.5q0 -58 -17.5 -99q-17.5 -41 -47 -67.5q-29.5 -26.5 -68.5 -39q-39 -12.5 -81 -12.5q-53 0 -88.5 7q-35.5 7 -58.5 19l20 68q20 -11 52 -18q32 -7 78 -7q27 0 51 9.5q24 9.5 42 27.5q18 18 28.5 45.5q10.5 27.5 10.5 63.5q0 65 -34.5 94.5q-34.5 29.5 -92.5 34.5q-10 1 -17.5 1q-7.5 0 -18.5 0z" />
-<glyph unicode="&#1048;" horiz-adv-x="544" d="M405 458l6 92h-3l-35 -94l-259 -456h-50v700h75v-465l-7 -90h4l35 94l260 461h49v-700l-75 0z" />
-<glyph unicode="&#1049;" horiz-adv-x="544" d="M405 458l6 92h-3l-35 -94l-259 -456h-50v700h75v-465l-7 -90h4l35 94l260 461h49v-700h-75zM209 870q2 -37 20.5 -59q18.5 -22 50.5 -22q32 0 49.5 22q17.5 22 20.5 58l64 -15q-8 -57 -41 -88q-33 -31 -94 -31q-59 0 -97.5 28q-38.5 28 -44.5 90z" />
-<glyph unicode="&#1050;" horiz-adv-x="493" d="M175 324h-36v-324h-75v700h75v-326l35 14l182 312h86l-183 -302l-35 -32l41 -40l203 -326l-95 0z" />
-<glyph unicode="&#1051;" horiz-adv-x="502" d="M363 631h-158q-8 -201 -21 -336q-13 -135 -40 -208q-17 -48 -42 -70q-25 -22 -57 -22q-29 0 -49 10l11 69q20 -6 37 2q17 8 32 46q11 27 20.5 72.5q9.5 45.5 17 115.5q7.5 70 12.5 166q5 96 7 224l305 0v-700l-75 0z" />
-<glyph unicode="&#1052;" horiz-adv-x="637" d="M498 460l9 106h-4l-32 -99l-141 -304h-25l-148 304l-31 99h-4l14 -106v-460h-72v700h63l169 -344l25 -82h2l24 83l160 343h66v-700l-75 0z" />
-<glyph unicode="&#1053;" horiz-adv-x="536" d="M397 323h-258v-323h-75v700h75v-308h258v308h75v-700l-75 0z" />
-<glyph unicode="&#1054;" horiz-adv-x="549" d="M43 350q0 178 57 270q57 92 174 92q63 0 107 -25.5q44 -25.5 71.5 -72.5q27.5 -47 40.5 -114q13 -67 13 -150q0 -178 -57.5 -270q-57.5 -92 -174.5 -92q-62 0 -106 25.5q-44 25.5 -72 72.5q-28 47 -40.5 114q-12.5 67 -12.5 150zt0 0zM122 350q0 -59 8.5 -112q8.5 -53 26.5 -93q18 -40 47 -64q29 -24 70 -24q75 0 114 72q39 72 39 221q0 58 -8.5 111q-8.5 53 -26.5 93.5q-18 40.5 -47 64.5q-29 24 -71 24q-74 0 -113 -72t-39 -221z" />
-<glyph unicode="&#1055;" horiz-adv-x="526" d="M387 631h-248v-631h-75v700h398v-700l-75 0z" />
-<glyph unicode="&#1056;" horiz-adv-x="451" d="M64 693q32 9 68 12q36 3 71 3q40 0 79 -9q39 -9 70.5 -33q31.5 -24 51 -66q19.5 -42 19.5 -107q0 -63 -18.5 -107q-18.5 -44 -49 -71.5q-30.5 -27.5 -70 -40q-39.5 -12.5 -81.5 -12.5q-4 0 -13 0q-9 0 -19 0.5q-10 0.5 -19.5 1.5q-9.5 1 -13.5 2l0 -266h-75zM207 639q-20 0 -38.5 -1.5q-18.5 -1.5 -29.5 -4.5l0 -298q4 -2 12.5 -2.5q8.5 -0.5 17.5 -1q9 -0.5 17.5 -0.5q8.5 0 12.5 0q28 0 54 7q26 7 46 25.5q20 18.5 32.5 50q12.5 31.5 12.5 79.5q0 42 -11.5 70q-11.5 28 -30 45q-18.5 17 -43.5 24t-52 7z" />
-<glyph unicode="&#1057;" horiz-adv-x="458" d="M430 27q-25 -21 -63 -30q-38 -9 -80 -9q-53 0 -98 20q-45 20 -77.5 63.5q-32.5 43.5 -50.5 112.5q-18 69 -18 166q0 100 20.5 169q20.5 69 54.5 112q34 43 78.5 62q44.5 19 91.5 19q48 0 79.5 -7q31.5 -7 54.5 -17l-18 -68q-20 11 -47 17q-27 6 -62 6q-35 0 -66 -15.5q-31 -15.5 -55 -50q-24 -34.5 -38 -90.5q-14 -56 -14 -137q0 -146 50 -219.5q50 -73.5 133 -73.5q34 0 61 9.5q27 9.5 46 22.5z" />
-<glyph unicode="&#1058;" horiz-adv-x="447" d="M433 631h-172v-631h-75v631h-172v69l419 0z" />
-<glyph unicode="&#1059;" horiz-adv-x="448" d="M228 341l19 -89h5l16 92l104 356h77l-143 -455q-22 -70 -38.5 -118q-16.5 -48 -33 -77q-16.5 -29 -36.5 -42q-20 -13 -49 -13q-26 0 -43 5q-17 5 -32 16l22 64q16 -11 29 -13.5q13 -2.5 24 -2.5q22 0 37 30.5q15 30.5 26 86.5l-209 519l88 0z" />
-<glyph unicode="&#1060;" horiz-adv-x="633" d="M279 78q-14 -3 -33 -4q-19 -1 -36 -1q-39 0 -71.5 15q-32.5 15 -56.5 48.5q-24 33.5 -37.5 86q-13.5 52.5 -13.5 127.5q0 141 52.5 214.5q52.5 73.5 142.5 73.5q11 0 27.5 -1q16.5 -1 25.5 -3l0 86h75v-89q14 5 35 6q21 1 34 1q39 0 72 -16.5q33 -16.5 57 -50.5q24 -34 37 -86.5q13 -52.5 13 -124.5q0 -74 -15 -128q-15 -54 -41 -89q-26 -35 -61.5 -52.5q-35.5 -17.5 -75.5 -17.5q-9 0 -27 1.5q-18 1.5 -28 5.5l0 -100h-75zM410 573q-11 0 -29 -1q-18 -1 -29 -6l0 -425q8 -2 22 -2.5q14 -0.5 25 -0.5q56 0 91 54.5q35 54.5 35 167.5q0 48 -7.5 87q-7.5 39 -22 67q-14.5 28 -36 43.5q-21.5 15.5 -49.5 15.5zt0 0zM226 138q9 0 26.5 0.5q17.5 0.5 28.5 5.5l0 425q-10 2 -24 3q-14 1 -25 1q-55 0 -89.5 -55q-34.5 -55 -34.5 -168q0 -99 30.5 -155.5t87.5 -56.5z" />
-<glyph unicode="&#1061;" horiz-adv-x="500" d="M203 356l-168 344h90l109 -237l20 -59l20 59l115 237h83l-174 -337l182 -363h-88l-121 251l-23 62l-21 -62l-124 -251l-84 0z" />
-<glyph unicode="&#1062;" horiz-adv-x="551" d="M530 -129h-52l-13 129h-401v700h75v-631h242v631h75v-631l74 0z" />
-<glyph unicode="&#1063;" horiz-adv-x="487" d="M130 700v-244q0 -73 25 -101.5q25 -28.5 73 -28.5q35 0 67.5 13q32.5 13 52.5 34l0 327h75v-700h-75v300q-20 -15 -56 -29q-36 -14 -80 -14q-32 0 -60.5 8q-28.5 8 -50 28.5q-21.5 20.5 -34 55.5q-12.5 35 -12.5 90l0 261z" />
-<glyph unicode="&#1064;" horiz-adv-x="699" d="M64 0v700h75v-631h173v631h75v-631h173v631h75l0 -700z" />
-<glyph unicode="&#1065;" horiz-adv-x="731" d="M64 0v700h75v-631h173v631h75v-631h173v631h75v-631h75v-198h-53l-12 129z" />
-<glyph unicode="&#1066;" horiz-adv-x="513" d="M128 631h-129v69h204v-272q6 1 16 3q10 2 21.5 3q11.5 1 23.5 2q12 1 21 1q39 0 75.5 -9.5q36.5 -9.5 64.5 -33.5q28 -24 45 -64.5q17 -40.5 17 -103.5q0 -62 -16 -106q-16 -44 -45 -72.5q-29 -28.5 -70 -42q-41 -13.5 -91 -13.5q-11 0 -28 0.5q-17 0.5 -35.5 2q-18.5 1.5 -38 4q-19.5 2.5 -35.5 7.5zM273 61q60 0 97.5 38q37.5 38 37.5 121q0 44 -11 73q-11 29 -29.5 45.5q-18.5 16.5 -43.5 23q-25 6.5 -52 6.5q-7 0 -17.5 -1q-10.5 -1 -20.5 -2q-10 -1 -18.5 -3q-8.5 -2 -12.5 -3l0 -292q11 -3 31 -4.5t39 -1.5z" />
-<glyph unicode="&#1067;" horiz-adv-x="622" d="M483 700h75v-700h-75zM64 700h75v-272q9 2 30 5.5q21 3.5 41 3.5q39 0 74.5 -9q35.5 -9 62.5 -32.5q27 -23.5 43 -64.5q16 -41 16 -104q0 -122 -56.5 -178.5q-56.5 -56.5 -157.5 -56.5q-23 0 -59.5 2.5q-36.5 2.5 -68.5 11.5zM199 61q60 0 94 39q34 39 34 120q0 44 -10 72.5q-10 28.5 -27.5 45.5q-17.5 17 -41.5 23.5q-24 6.5 -52 6.5q-14 0 -31.5 -3q-17.5 -3 -25.5 -6l0 -291q20 -7 60 -7z" />
-<glyph unicode="&#1068;" horiz-adv-x="449" d="M64 700h75v-272q12 3 37.5 6q25.5 3 44.5 3q40 0 76.5 -9.5q36.5 -9.5 64.5 -33.5q28 -24 44.5 -64.5q16.5 -40.5 16.5 -102.5q0 -61 -15.5 -105q-15.5 -44 -44.5 -73q-29 -29 -70 -43q-41 -14 -92 -14q-11 0 -28 0.5q-17 0.5 -35.5 2q-18.5 1.5 -38 4q-19.5 2.5 -35.5 7.5zM209 61q61 0 98 39q37 39 37 120q0 43 -10.5 71.5q-10.5 28.5 -29 45.5q-18.5 17 -43.5 24q-25 7 -53 7q-7 0 -17 -1q-10 -1 -20.5 -2q-10.5 -1 -19 -3q-8.5 -2 -12.5 -3l0 -292q12 -3 31.5 -4.5t38.5 -1.5z" />
-<glyph unicode="&#1069;" horiz-adv-x="465" d="M118 390h229q-5 127 -53.5 190q-48.5 63 -124.5 63q-38 0 -67 -9q-29 -9 -50 -22l-22 62q28 18 66.5 28q38.5 10 80.5 10q55 0 100 -19.5q45 -19.5 77 -62.5q32 -43 50 -112q18 -69 18 -167q0 -99 -20 -168.5q-20 -69.5 -55 -112.5q-35 -43 -82 -62.5q-47 -19.5 -102 -19.5q-41 0 -74.5 7q-33.5 7 -56.5 18l21 68q19 -10 50 -17q31 -7 64 -7q34 0 65.5 14.5q31.5 14.5 56.5 46q25 31.5 40.5 82q15.5 50.5 17.5 123.5l-229 0z" />
-<glyph unicode="&#1070;" horiz-adv-x="719" d="M139 392h95q5 155 59 237.5q54 82.5 163 82.5q61 0 103.5 -25.5q42.5 -25.5 68 -72.5q25.5 -47 37 -114q11.5 -67 11.5 -150q0 -177 -52.5 -269.5q-52.5 -92.5 -168.5 -92.5q-59 0 -100 23.5q-41 23.5 -68 67.5q-27 44 -40 105.5q-13 61.5 -14 138.5l-94 0v-323h-75v700h75zM310 350q0 -59 7.5 -112q7.5 -53 24.5 -93.5q17 -40.5 45 -64q28 -23.5 69 -23.5q75 0 108 71.5q33 71.5 33 221.5q0 58 -6.5 111.5q-6.5 53.5 -22.5 93.5q-16 40 -43 64q-27 24 -69 24q-75 0 -110.5 -72t-35.5 -221z" />
-<glyph unicode="&#1071;" horiz-adv-x="461" d="M397 0h-75v307l-80 -21l-136 -286h-87l123 253l48 42q-58 15 -94.5 64.5q-36.5 49.5 -36.5 136.5q0 62 17 103q17 41 46 65.5q29 24.5 68 34q39 9.5 83 9.5q27 0 60.5 -3q33.5 -3 63.5 -12zM267 639q-26 0 -49 -6.5q-23 -6.5 -41 -23q-18 -16.5 -28.5 -44q-10.5 -27.5 -10.5 -69.5q0 -77 37 -111q37 -34 93 -34h54v282q-11 4 -24 5t-31 1z" />
-<glyph unicode="&#1072;" horiz-adv-x="400" d="M54 470q29 18 70.5 28q41.5 10 87.5 10q42 0 67.5 -12.5q25.5 -12.5 40 -34q14.5 -21.5 19 -49q4.5 -27.5 4.5 -57.5q0 -60 -2.5 -117q-2.5 -57 -2.5 -108q0 -38 2.5 -70.5q2.5 -32.5 9.5 -61.5l-55 0l-17 59h-4q-15 -26 -44 -45q-29 -19 -78 -19q-54 0 -88.5 37.5q-34.5 37.5 -34.5 103.5q0 43 14.5 72q14.5 29 41 47q26.5 18 63 25.5q36.5 7.5 81.5 7.5q10 0 20 0q10 0 21 -1q3 31 3 55q0 57 -17 80q-17 23 -62 23q-28 0 -61 -8.5q-33 -8.5 -55 -21.5zM271 228q-10 1 -20 1.5q-10 0.5 -20 0.5q-24 0 -47 -4q-23 -4 -41 -14q-18 -10 -28.5 -27q-10.5 -17 -10.5 -43q0 -40 19.5 -62q19.5 -22 50.5 -22q42 0 65 20q23 20 32 44z" />
-<glyph unicode="&#1073;" horiz-adv-x="432" d="M102 415q26 47 58 65q32 18 80 18q74 0 114.5 -58q40.5 -58 40.5 -179q0 -139 -47 -206q-47 -67 -131 -67q-45 0 -78.5 17.5q-33.5 17.5 -56 55q-22.5 37.5 -34 97.5q-11.5 60 -11.5 145q0 86 7.5 147q7.5 61 21 103q13.5 42 32.5 67q19 25 43 39.5q24 14.5 52.5 20.5q28.5 6 60.5 10q42 5 67 12q25 7 40 24l5 -71q-8 -8 -18 -13.5q-10 -5.5 -24 -9.5q-14 -4 -32.5 -6.5q-18.5 -2.5 -43.5 -4.5q-34 -3 -59.5 -13q-25.5 -10 -44 -32.5q-18.5 -22.5 -29.5 -61.5q-11 -39 -15 -99zM112 249q0 -41 6 -76.5q6 -35.5 19 -62q13 -26.5 32.5 -42q19.5 -15.5 46.5 -15.5q52 0 78 49q26 49 26 152q0 82 -22 130.5q-22 48.5 -72 48.5q-59 0 -86.5 -48t-27.5 -136z" />
-<glyph unicode="&#1074;" horiz-adv-x="403" d="M59 499q28 2 61 5q33 3 79 3q81 0 116 -30.5q35 -30.5 35 -92.5q0 -35 -16.5 -68q-16.5 -33 -55.5 -50l0 -4q48 -11 68 -40.5q20 -29.5 20 -80.5q0 -78 -46 -113q-46 -35 -137 -35q-34 0 -65 2.5q-31 2.5 -59 5.5zM131 62q15 -2 28.5 -3q13.5 -1 33.5 -1q51 0 74.5 21q23.5 21 23.5 68q0 36 -20 59.5q-20 23.5 -73 23.5h-67zM205 287q14 0 27 6.5q13 6.5 23.5 17.5q10.5 11 16.5 25.5q6 14.5 6 30.5q0 39 -18.5 57q-18.5 18 -63.5 18q-24 0 -38 -1q-14 -1 -27 -2l0 -152z" />
-<glyph unicode="&#1075;" horiz-adv-x="296" d="M297 435h-166v-435h-72v500l238 0z" />
-<glyph unicode="&#1076;" horiz-adv-x="439" d="M423 -127h-50l-12 127h-296l-13 -127h-49v192h47q6 11 16.5 40.5q10.5 29.5 20.5 82q10 52.5 17.5 129.5q7.5 77 8.5 183l251 0v-435h59zM292 65v370h-113q-2 -43 -5.5 -94q-3.5 -51 -10.5 -101.5q-7 -50.5 -17 -96.5q-10 -46 -23 -78z" />
-<glyph unicode="&#1077;" horiz-adv-x="413" d="M358 34q-24 -22 -61 -34q-37 -12 -78 -12q-47 0 -81.5 18.5q-34.5 18.5 -57 53q-22.5 34.5 -33 82.5q-10.5 48 -10.5 108q0 128 47 195q47 67 133 67q28 0 55.5 -7q27.5 -7 49.5 -28q22 -21 35.5 -59q13.5 -38 13.5 -99q0 -17 -1.5 -36.5q-1.5 -19.5 -3.5 -40.5l-254 0q0 -43 7 -78q7 -35 22 -59.5q15 -24.5 38.5 -38q23.5 -13.5 58.5 -13.5q27 0 53.5 10q26.5 10 40.5 24zM302 302q2 75 -21 110q-23 35 -63 35q-46 0 -73 -35q-27 -35 -32 -110z" />
-<glyph unicode="&#1078;" horiz-adv-x="537" d="M193 221l-112 -221h-81l123 229l27 30l-41 38l-100 203h76l104 -216h41v216h72v-226l37 14l104 212h75l-105 -203l-32 -32l41 -40l115 -225h-83l-112 225h-40v-225h-72l0 235z" />
-<glyph unicode="&#1079;" horiz-adv-x="351" d="M97 224v62h55q14 0 27.5 6.5q13.5 6.5 24 17.5q10.5 11 17 25.5q6.5 14.5 6.5 30.5q0 39 -20.5 57q-20.5 18 -62.5 18q-31 0 -56.5 -9q-25.5 -9 -39.5 -19l-21 57q25 16 58.5 26q33.5 10 76.5 10q66 0 101.5 -30.5q35.5 -30.5 35.5 -91.5q0 -38 -19 -70q-19 -32 -52 -46l0 -4q46 -11 66 -42q20 -31 20 -82q0 -63 -42 -105.5q-42 -42.5 -129 -42.5q-40 0 -67.5 7.5q-27.5 7.5 -49.5 19.5l19 62q19 -12 45 -18q26 -6 54 -6q49 0 73.5 23q24.5 23 24.5 66q0 36 -23 57q-23 21 -77 21z" />
-<glyph unicode="&#1080;" horiz-adv-x="439" d="M308 288l6 76h-4l-35 -84l-169 -280h-47v500h72v-297l-6 -73h4l33 82l171 288h47v-500l-72 0z" />
-<glyph unicode="&#1081;" horiz-adv-x="439" d="M308 288l6 76h-4l-35 -84l-169 -280h-47v500h72v-297l-6 -73h4l33 82l171 288h47v-500h-72zM157 702q5 -46 24.5 -65.5q19.5 -19.5 45.5 -19.5q26 0 45.5 21q19.5 21 24.5 63l55 -16q-8 -60 -43.5 -91.5q-35.5 -31.5 -83.5 -31.5q-23 0 -44.5 6.5q-21.5 6.5 -39 21q-17.5 14.5 -29.5 37.5q-12 23 -16 56z" />
-<glyph unicode="&#1082;" horiz-adv-x="387" d="M168 225h-37v-225h-72v500h72v-226l34 14l122 212h77l-119 -201l-35 -33l43 -40l128 -226l-86 0z" />
-<glyph unicode="&#1083;" horiz-adv-x="407" d="M276 435h-109q-3 -85 -8 -164.5q-5 -79.5 -17.5 -140.5q-12.5 -61 -35.5 -97.5q-23 -36.5 -61 -36.5q-17 0 -29 2q-12 2 -22 7l11 63q21 -6 37.5 2.5q16.5 8.5 28.5 52q12 43.5 19.5 133q7.5 89.5 10.5 244.5l247 0v-500l-72 0z" />
-<glyph unicode="&#1084;" horiz-adv-x="522" d="M391 297l7 95h-4l-30 -85l-93 -192h-26l-97 192l-27 85h-5l8 -94v-298h-65v500h72l109 -217l22 -65h2l24 67l101 215h74v-500l-72 0z" />
-<glyph unicode="&#1085;" horiz-adv-x="434" d="M304 223h-173v-223h-72v500h72v-212h173v212h72v-500l-72 0z" />
-<glyph unicode="&#1086;" horiz-adv-x="432" d="M37 250q0 135 46.5 198.5q46.5 63.5 132.5 63.5q92 0 135.5 -65q43.5 -65 43.5 -197q0 -136 -47 -199q-47 -63 -132 -63q-92 0 -135.5 65q-43.5 65 -43.5 197zt0 0zM112 250q0 -44 5.5 -80q5.5 -36 18 -62q12.5 -26 32.5 -40.5q20 -14.5 48 -14.5q52 0 78 46.5q26 46.5 26 150.5q0 43 -5.5 79.5q-5.5 36.5 -18 62.5q-12.5 26 -32.5 40.5q-20 14.5 -48 14.5q-51 0 -77.5 -47t-26.5 -150z" />
-<glyph unicode="&#1087;" horiz-adv-x="430" d="M299 435h-168v-435h-72v500h312v-500l-72 0z" />
-<glyph unicode="&#1088;" horiz-adv-x="435" d="M59 500h51l11 -54h4q37 66 116 66q79 0 118.5 -59q39.5 -59 39.5 -193q0 -63 -13 -113.5q-13 -50.5 -37 -86q-24 -35.5 -58.5 -54q-34.5 -18.5 -76.5 -18.5q-29 0 -46 3.5q-17 3.5 -37 14.5l0 -206h-72zM131 79q14 -12 31.5 -19q17.5 -7 46.5 -7q53 0 84 54q31 54 31 154q0 42 -5.5 76q-5.5 34 -17.5 58.5q-12 24.5 -30.5 38q-18.5 13.5 -45.5 13.5q-73 0 -94 -89z" />
-<glyph unicode="&#1089;" horiz-adv-x="356" d="M335 25q-25 -19 -57 -28q-32 -9 -67 -9q-48 0 -81 18.5q-33 18.5 -53.5 53q-20.5 34.5 -30 83q-9.5 48.5 -9.5 107.5q0 128 45.5 195q45.5 67 130.5 67q39 0 67 -7q28 -7 48 -18v-63q-60 23 -107 23q-54 0 -81.5 -47.5q-27.5 -47.5 -27.5 -149.5q0 -41 6 -77q6 -36 20 -62.5q14 -26.5 36 -42q22 -15.5 55 -15.5q26 0 48.5 9q22.5 9 36.5 21z" />
-<glyph unicode="&#1090;" horiz-adv-x="320" d="M319 435h-123v-435h-72v435h-123v65l318 0z" />
-<glyph unicode="&#1091;" horiz-adv-x="376" d="M183 177l21 -97h5l15 97l76 323h73l-119 -449q-14 -54 -28 -101q-14 -47 -30.5 -81.5q-16.5 -34.5 -37 -54q-20.5 -19.5 -48.5 -19.5q-28 0 -49 9l12 68q14 -5 28 -2q14 3 26.5 17q12.5 14 23 41.5q10.5 27.5 18.5 71.5l-162 500l82 0z" />
-<glyph unicode="&#1092;" horiz-adv-x="550" d="M240 -4q-14 -6 -28.5 -7q-14.5 -1 -26.5 -1q-74 0 -113 62.5q-39 62.5 -39 199.5q0 133 43.5 195.5q43.5 62.5 124.5 62.5q23 0 39 -4l0 196h70v-197q14 3 25.5 4q11.5 1 21.5 1q40 0 70 -13q30 -13 50 -42q20 -29 30 -76.5q10 -47.5 10 -116.5q0 -135 -42.5 -203.5q-42.5 -68.5 -120.5 -68.5q-8 0 -22 1.5q-14 1.5 -22 5.5l0 -195h-70zM343 446q-10 0 -17 -0.5q-7 -0.5 -18 -4.5l0 -388q8 -2 17.5 -2.5q9.5 -0.5 21.5 -0.5q98 0 98 210q0 92 -22.5 139q-22.5 47 -79.5 47zt0 0zM203 50q10 0 19 1q9 1 20 4l0 387q-17 4 -37 4q-47 0 -73.5 -45.5q-26.5 -45.5 -26.5 -150.5q0 -92 23.5 -146t74.5 -54z" />
-<glyph unicode="&#1093;" horiz-adv-x="412" d="M161 256l-132 244h86l74 -143l20 -56l21 56l76 143h79l-133 -240l141 -260h-82l-84 157l-22 60l-23 -60l-84 -157l-79 0z" />
-<glyph unicode="&#1094;" horiz-adv-x="442" d="M426 -127h-50l-12 127h-305v500h72v-435h165v435h72v-435l58 0z" />
-<glyph unicode="&#1095;" horiz-adv-x="396" d="M108 500v-146q0 -25 2.5 -45q2.5 -20 9.5 -34.5q7 -14.5 20 -22q13 -7.5 34 -7.5q35 0 57 9q22 9 34 20l0 226h72v-500h-72v210q-12 -9 -37.5 -19.5q-25.5 -10.5 -68.5 -10.5q-29 0 -52 7.5q-23 7.5 -38.5 24.5q-15.5 17 -24 46q-8.5 29 -8.5 73l0 169z" />
-<glyph unicode="&#1096;" horiz-adv-x="594" d="M59 0v500h72v-435h130v435h72v-435h130v435h72l0 -500z" />
-<glyph unicode="&#1097;" horiz-adv-x="609" d="M593 -127h-50l-12 127h-472v500h72v-435h130v435h72v-435h130v435h72v-435l58 0z" />
-<glyph unicode="&#1098;" horiz-adv-x="407" d="M160 65q14 -3 28.5 -4.5q14.5 -1.5 26.5 -1.5q49 0 71.5 24.5q22.5 24.5 22.5 74.5q0 45 -22 70.5q-22 25.5 -70 25.5q-13 0 -28 -1.5q-15 -1.5 -29 -5.5zM160 309q19 4 37.5 5.5q18.5 1.5 34.5 1.5q42 0 71 -11.5q29 -11.5 47 -31.5q18 -20 26 -47.5q8 -27.5 8 -58.5q0 -91 -43.5 -132q-43.5 -41 -140.5 -41q-57 0 -112 6l0 435h-88v65l160 0z" />
-<glyph unicode="&#1099;" horiz-adv-x="538" d="M131 65q30 -6 55 -6q48 0 67 25.5q19 25.5 19 73.5q0 45 -18.5 70.5q-18.5 25.5 -65.5 25.5q-13 0 -28 -1.5q-15 -1.5 -29 -5.5zM131 309q20 4 38 5.5q18 1.5 34 1.5q41 0 69 -11.5q28 -11.5 44.5 -31.5q16.5 -20 23.5 -47.5q7 -27.5 7 -58.5q0 -91 -40.5 -132q-40.5 -41 -134.5 -41q-58 0 -113 6l0 500h72zM407 500h72v-500l-72 0z" />
-<glyph unicode="&#1100;" horiz-adv-x="377" d="M131 65q30 -6 55 -6q94 0 94 99q0 45 -22 70.5q-22 25.5 -70 25.5q-13 0 -28 -1.5q-15 -1.5 -29 -5.5zM131 309q20 4 38 5.5q18 1.5 34 1.5q42 0 71 -11.5q29 -11.5 47 -31.5q18 -20 26 -47.5q8 -27.5 8 -58.5q0 -91 -44 -132q-44 -41 -138 -41q-59 0 -114 6l0 500l72 0z" />
-<glyph unicode="&#1101;" horiz-adv-x="372" d="M94 283h166q-3 78 -31.5 121q-28.5 43 -80.5 43q-32 0 -56 -9q-24 -9 -39 -20l-25 57q23 17 56 27q33 10 76 10q90 0 132.5 -65q42.5 -65 42.5 -197q0 -131 -48.5 -196.5q-48.5 -65.5 -136.5 -65.5q-77 0 -122 24l20 64q19 -11 45 -17q26 -6 50 -6q111 0 117 168l-166 0z" />
-<glyph unicode="&#1102;" horiz-adv-x="581" d="M377 -11q-88 0 -126 61q-38 61 -43 175l-77 0v-225h-72v500h72v-210h78q7 111 47.5 166q40.5 55 121.5 55q89 0 127.5 -68.5q38.5 -68.5 38.5 -192.5q0 -133 -41 -197q-41 -64 -126 -64zt0 0zM279 250q0 -40 4.5 -75.5q4.5 -35.5 16 -62.5q11.5 -27 30.5 -42.5q19 -15.5 48 -15.5q49 0 70 45.5q21 45.5 21 150.5q0 43 -4.5 79q-4.5 36 -15 62q-10.5 26 -28 40.5q-17.5 14.5 -44.5 14.5q-52 0 -75 -48.5t-23 -147.5z" />
-<glyph unicode="&#1103;" horiz-adv-x="387" d="M262 207l-61 -12l-101 -195h-85l93 172l32 36q-41 8 -69.5 42q-28.5 34 -28.5 92q0 90 48.5 130q48.5 40 132.5 40q31 0 58.5 -4.5q27.5 -4.5 52.5 -10.5l0 -497h-72zM262 253v185q-10 5 -23 7q-13 2 -23 2q-48 0 -73.5 -25q-25.5 -25 -25.5 -76q0 -46 29 -71.5q29 -25.5 77 -23.5z" />
-<glyph unicode="&#1105;" horiz-adv-x="413" d="M358 34q-24 -22 -61 -34q-37 -12 -78 -12q-47 0 -81.5 18.5q-34.5 18.5 -57 53q-22.5 34.5 -33 82.5q-10.5 48 -10.5 108q0 128 47 195q47 67 133 67q28 0 55.5 -7q27.5 -7 49.5 -28q22 -21 35.5 -59q13.5 -38 13.5 -99q0 -17 -1.5 -36.5q-1.5 -19.5 -3.5 -40.5l-254 0q0 -43 7 -78q7 -35 22 -59.5q15 -24.5 38.5 -38q23.5 -13.5 58.5 -13.5q27 0 53.5 10q26.5 10 40.5 24zM302 302q2 75 -21 110q-23 35 -63 35q-46 0 -73 -35q-27 -35 -32 -110zM90 633q0 23 11.5 36q11.5 13 31.5 13q20 0 31.5 -13q11.5 -13 11.5 -36q0 -21 -11.5 -34q-11.5 -13 -31.5 -13q-20 0 -31.5 13q-11.5 13 -11.5 34zt0 0zM249 633q0 23 11.5 36q11.5 13 31.5 13q20 0 31.5 -13q11.5 -13 11.5 -36q0 -21 -11.5 -34q-11.5 -13 -31.5 -13q-20 0 -31.5 13t-11.5 34z" />
-<glyph unicode="&#1106;" horiz-adv-x="443" d="M-2 600h65v100h72v-100h128v-59h-128v-140h3q20 27 49.5 43q29.5 16 73.5 16q33 0 57.5 -9q24.5 -9 40.5 -30q16 -21 24 -56q8 -35 8 -87v-307q0 -101 -33 -144.5q-33 -43.5 -107 -32.5l0 65q22 0 35.5 8q13.5 8 21 25.5q7.5 17.5 9.5 44.5q2 27 2 63v250q0 78 -16.5 111.5q-16.5 33.5 -66.5 33.5q-35 0 -62.5 -23q-27.5 -23 -38.5 -60l0 -312h-72v541l-65 0z" />
-<glyph unicode="&#1107;" horiz-adv-x="296" d="M297 435h-166v-435h-72v500h238zM188 720h78v-21l-82 -128l-43 0z" />
-<glyph unicode="&#1108;" horiz-adv-x="376" d="M351 24q-23 -17 -57.5 -26q-34.5 -9 -68.5 -9q-48 0 -83.5 18.5q-35.5 18.5 -59 52.5q-23.5 34 -34.5 82.5q-11 48.5 -11 107.5q0 127 52.5 194q52.5 67 140.5 67q38 0 65.5 -6q27.5 -6 48.5 -18l-19 -63q-20 11 -43 16.5q-23 5.5 -47 5.5q-54 0 -85.5 -40q-31.5 -40 -37.5 -121l182 0v-62h-182q2 -34 10.5 -64.5q8.5 -30.5 24 -54q15.5 -23.5 38.5 -37q23 -13.5 56 -13.5q27 0 51 8.5q24 8.5 38 19.5z" />
-<glyph unicode="&#1109;" horiz-adv-x="338" d="M51 82q20 -12 47.5 -20.5q27.5 -8.5 56.5 -8.5q33 0 56 16.5q23 16.5 23 53.5q0 31 -14 51q-14 20 -35.5 36q-21.5 16 -46.5 29.5q-25 13.5 -46.5 32.5q-21.5 19 -35.5 45q-14 26 -14 66q0 64 34.5 96.5q34.5 32.5 97.5 32.5q41 0 71 -7.5q30 -7.5 52 -20.5l-19 -60q-19 10 -44 16.5q-25 6.5 -51 6.5q-36 0 -52.5 -15q-16.5 -15 -16.5 -47q0 -25 14 -42.5q14 -17.5 35.5 -32q21.5 -14.5 46.5 -29.5q25 -15 46.5 -35.5q21.5 -20.5 35.5 -49q14 -28.5 14 -71.5q0 -28 -9 -53q-9 -25 -27.5 -43.5q-18.5 -18.5 -46 -29.5q-27.5 -11 -64.5 -11q-44 0 -76 8.5q-32 8.5 -54 22.5z" />
-<glyph unicode="&#1110;" horiz-adv-x="217" d="M71 500h72v-500h-72zM58 652q0 24 13.5 39q13.5 15 35.5 15q22 0 36.5 -14.5q14.5 -14.5 14.5 -39.5q0 -24 -14.5 -37.5q-14.5 -13.5 -36.5 -13.5q-22 0 -35.5 14t-13.5 37z" />
-<glyph unicode="&#1111;" horiz-adv-x="231" d="M22 653q0 23 10.5 35.5q10.5 12.5 30.5 12.5q20 0 30.5 -12.5q10.5 -12.5 10.5 -35.5q0 -21 -10.5 -34q-10.5 -13 -30.5 -13q-20 0 -30.5 13q-10.5 13 -10.5 34zt0 0zM127 653q0 23 10.5 35.5q10.5 12.5 30.5 12.5q20 0 30.5 -12.5q10.5 -12.5 10.5 -35.5q0 -21 -10.5 -34q-10.5 -13 -30.5 -13q-20 0 -30.5 13q-10.5 13 -10.5 34zt0 0zM76 500h72v-500l-72 0z" />
-<glyph unicode="&#1112;" horiz-adv-x="215" d="M72 500h72v-527q0 -103 -33 -148.5q-33 -45.5 -107 -34.5l0 65q22 0 35.5 9q13.5 9 21 27.5q7.5 18.5 9.5 46q2 27.5 2 64.5zM58 652q0 24 13.5 39q13.5 15 35.5 15q22 0 36.5 -14.5q14.5 -14.5 14.5 -39.5q0 -24 -14.5 -37.5q-14.5 -13.5 -36.5 -13.5q-22 0 -35.5 14t-13.5 37z" />
-<glyph unicode="&#1113;" horiz-adv-x="594" d="M348 309q20 4 38 5.5q18 1.5 34 1.5q42 0 71 -11.5q29 -11.5 47 -31.5q18 -20 26 -47.5q8 -27.5 8 -58.5q0 -91 -44 -132q-44 -41 -138 -41q-59 0 -114 6l0 435h-109q-3 -85 -8 -164.5q-5 -79.5 -17.5 -140.5q-12.5 -61 -35.5 -97.5q-23 -36.5 -61 -36.5q-17 0 -29 2q-12 2 -22 7l11 63q21 -6 37.5 2.5q16.5 8.5 28.5 52q12 43.5 19.5 133q7.5 89.5 10.5 244.5l247 0zM348 65q30 -6 55 -6q94 0 94 99q0 45 -22 70.5q-22 25.5 -70 25.5q-13 0 -28 -1.5q-15 -1.5 -29 -5.5z" />
-<glyph unicode="&#1114;" horiz-adv-x="621" d="M375 64q15 -3 29 -4q14 -1 26 -1q94 0 94 97q0 93 -92 93q-13 0 -28 -1q-15 -1 -29 -5zM375 305q20 4 38 5q18 1 34 1q42 0 71 -10.5q29 -10.5 47 -30q18 -19.5 26 -46q8 -26.5 8 -57.5q0 -91 -43.5 -132q-43.5 -41 -138.5 -41q-59 0 -114 6l0 226h-172v-226h-72v500h72v-209h172v209l72 0z" />
-<glyph unicode="&#1115;" horiz-adv-x="443" d="M-2 600h65v100h72v-100h128v-59h-128v-140h3q20 27 49.5 43q29.5 16 73.5 16q33 0 57.5 -9.5q24.5 -9.5 40.5 -31.5q16 -22 24 -58.5q8 -36.5 8 -90.5v-270h-72v256q0 70 -16.5 104.5q-16.5 34.5 -66.5 34.5q-35 0 -63 -23.5q-28 -23.5 -38 -61.5l0 -310h-72v541l-65 0z" />
-<glyph unicode="&#1116;" horiz-adv-x="387" d="M168 225h-37v-225h-72v500h72v-226l34 14l122 212h77l-119 -201l-35 -33l43 -40l128 -226h-86zM205 720h78v-21l-82 -128l-43 0z" />
-<glyph unicode="&#1118;" horiz-adv-x="376" d="M183 177l21 -97h5l15 97l76 323h73l-119 -449q-14 -54 -28 -101q-14 -47 -30.5 -81.5q-16.5 -34.5 -37 -54q-20.5 -19.5 -48.5 -19.5q-28 0 -49 9l12 68q14 -5 28 -2q14 3 26.5 17q12.5 14 23 41.5q10.5 27.5 18.5 71.5l-162 500h82zM129 702q5 -46 24.5 -65.5q19.5 -19.5 45.5 -19.5q26 0 45.5 21q19.5 21 24.5 63l55 -16q-8 -60 -43.5 -91.5q-35.5 -31.5 -83.5 -31.5q-23 0 -44.5 6.5q-21.5 6.5 -39 21q-17.5 14.5 -29.5 37.5q-12 23 -16 56z" />
-<glyph unicode="&#1119;" horiz-adv-x="430" d="M59 0v500h72v-431h168v431h72v-500h-118l-13 -179h-47l-16 179z" />
-<glyph unicode="&#1122;" horiz-adv-x="504" d="M0 617h119v104h75v-104h166v-65h-166v-125q4 1 14 2.5q10 1.5 21.5 2.5q11.5 1 23.5 2q12 1 22 1q40 0 76.5 -9.5q36.5 -9.5 64.5 -33q28 -23.5 45 -64q17 -40.5 17 -102.5q0 -120 -60 -177q-60 -57 -162 -57q-11 0 -28 0.5q-17 0.5 -35.5 2q-18.5 1.5 -38 4q-19.5 2.5 -35.5 7.5l0 546h-119zM264 61q59 0 97 38q38 38 38 121q0 44 -11 72.5q-11 28.5 -29.5 45q-18.5 16.5 -43.5 22.5q-25 6 -52 6q-7 0 -17 -1q-10 -1 -20.5 -2q-10.5 -1 -19 -3q-8.5 -2 -12.5 -3l0 -290q11 -3 30.5 -4.5t39.5 -1.5z" />
-<glyph unicode="&#1123;" horiz-adv-x="407" d="M0 500h88v200h72v-200h129v-62h-129v-129q19 4 37.5 5.5q18.5 1.5 34.5 1.5q42 0 71 -11.5q29 -11.5 47 -31.5q18 -20 26 -47.5q8 -27.5 8 -58.5q0 -91 -43.5 -132q-43.5 -41 -139.5 -41q-58 0 -113 6l0 438h-88zM160 64q14 -3 28 -4q14 -1 27 -1q49 0 71.5 27q22.5 27 22.5 72q0 40 -22 68q-22 28 -70 28q-13 0 -28 -1.5q-15 -1.5 -29 -5.5z" />
-<glyph unicode="&#1138;" horiz-adv-x="549" d="M43 350q0 178 57 270q57 92 174 92q63 0 107 -25.5q44 -25.5 71.5 -72.5q27.5 -47 40.5 -114q13 -67 13 -150q0 -178 -57.5 -270q-57.5 -92 -174.5 -92q-62 0 -106 25.5q-44 25.5 -72 72.5q-28 47 -40.5 114q-12.5 67 -12.5 150zt0 0zM274 57q71 0 110 65q39 65 43 200l-305 0q2 -54 11.5 -102q9.5 -48 28 -84.5q18.5 -36.5 46 -57.5q27.5 -21 66.5 -21zt0 0zM274 643q-69 0 -108 -63q-39 -63 -44 -191l305 0q-3 52 -13 98q-10 46 -28.5 80.5q-18.5 34.5 -46 55t-65.5 20.5z" />
-<glyph unicode="&#1139;" horiz-adv-x="432" d="M37 250q0 131 46.5 196.5q46.5 65.5 132.5 65.5q92 0 135.5 -68.5q43.5 -68.5 43.5 -193.5q0 -133 -46.5 -197.5q-46.5 -64.5 -132.5 -64.5q-92 0 -135.5 68.5q-43.5 68.5 -43.5 193.5zt0 0zM320 279q-5 91 -33 129.5q-28 38.5 -71 38.5q-20 0 -38 -8.5q-18 -8.5 -32 -28q-14 -19.5 -23 -51.5q-9 -32 -11 -80zM112 220q3 -86 32.5 -126.5q29.5 -40.5 71.5 -40.5q19 0 37.5 8q18.5 8 32.5 27.5q14 19.5 23 51q9 31.5 11 80.5z" />
-<glyph unicode="&#1140;" horiz-adv-x="487" d="M252 -11h-39l-216 711h84l136 -479l19 -107h1l13 109l60 253q17 74 32 119.5q15 45.5 31.5 70q16.5 24.5 37 33q20.5 8.5 48.5 8.5q27 0 44 -5.5q17 -5.5 31 -14.5l-21 -65q-15 9 -27.5 12.5q-12.5 3.5 -23.5 3.5q-23 0 -38.5 -31.5q-15.5 -31.5 -30.5 -86.5z" />
-<glyph unicode="&#1141;" horiz-adv-x="410" d="M88 500l93 -289l20 -99h2l18 101l25 87q14 49 26.5 87.5q12.5 38.5 27 65q14.5 26.5 33 40.5q18.5 14 44.5 14q16 0 28.5 -2q12.5 -2 22.5 -7v-67q-21 4 -31 6.5q-10 2.5 -20 -4q-10 -6.5 -20.5 -24.5q-10.5 -18 -22.5 -53l-120 -367h-34l-175 511z" />
-<glyph unicode="&#1162;" horiz-adv-x="558" d="M405 458l6 92h-3l-35 -94l-259 -456h-50v700h75v-465l-7 -90h4l35 94l260 461h49v-635h83v-21l-74 -174h-50l36 130h-70zM207 870q2 -37 20.5 -59q18.5 -22 50.5 -22q32 0 49.5 22q17.5 22 20.5 58l64 -15q-8 -57 -41 -88q-33 -31 -94 -31q-59 0 -97.5 28q-38.5 28 -44.5 90z" />
-<glyph unicode="&#1163;" horiz-adv-x="456" d="M308 288l6 76h-4l-35 -84l-169 -280h-47v500h72v-297l-6 -73h4l33 82l171 288h47v-435h80v-21l-74 -171h-50l36 127h-64zM158 702q5 -46 24.5 -65.5q19.5 -19.5 45.5 -19.5q26 0 45.5 21q19.5 21 24.5 63l55 -16q-8 -60 -43.5 -91.5q-35.5 -31.5 -83.5 -31.5q-23 0 -44.5 6.5q-21.5 6.5 -39 21q-17.5 14.5 -29.5 37.5q-12 23 -16 56z" />
-<glyph unicode="&#1164;" horiz-adv-x="504" d="M0 617h119v104h75v-104h166v-65h-166v-125q4 1 14 2.5q10 1.5 21.5 2.5q11.5 1 23.5 2q12 1 22 1q40 0 76.5 -9.5q36.5 -9.5 64.5 -33q28 -23.5 45 -64q17 -40.5 17 -102.5q0 -120 -60 -177q-60 -57 -162 -57q-11 0 -28 0.5q-17 0.5 -35.5 2q-18.5 1.5 -38 4q-19.5 2.5 -35.5 7.5l0 546h-119zM264 61q59 0 97 38q38 38 38 121q0 44 -11 72.5q-11 28.5 -29.5 45q-18.5 16.5 -43.5 22.5q-25 6 -52 6q-7 0 -17 -1q-10 -1 -20.5 -2q-10.5 -1 -19 -3q-8.5 -2 -12.5 -3l0 -290q11 -3 30.5 -4.5t39.5 -1.5z" />
-<glyph unicode="&#1165;" horiz-adv-x="407" d="M0 500h88v200h72v-200h129v-62h-129v-129q19 4 37.5 5.5q18.5 1.5 34.5 1.5q42 0 71 -11.5q29 -11.5 47 -31.5q18 -20 26 -47.5q8 -27.5 8 -58.5q0 -91 -43.5 -132q-43.5 -41 -139.5 -41q-58 0 -113 6l0 438h-88zM160 64q14 -3 28 -4q14 -1 27 -1q49 0 71.5 27q22.5 27 22.5 72q0 40 -22 68q-22 28 -70 28q-13 0 -28 -1.5q-15 -1.5 -29 -5.5z" />
-<glyph unicode="&#1166;" horiz-adv-x="451" d="M64 693q32 9 68 12q36 3 71 3q40 0 79 -9q39 -9 70.5 -33q31.5 -24 51 -66q19.5 -42 19.5 -107q0 -72 -24 -119.5q-24 -47.5 -62 -73.5l59 -93l-47 -32l-64 99q-38 -12 -81 -12q-4 0 -13 0q-9 0 -19 0.5q-10 0.5 -19.5 1.5q-9.5 1 -13.5 2l0 -266h-75zM231 462l63 -103q23 18 36.5 50q13.5 32 13.5 84q0 42 -11.5 70q-11.5 28 -30 45q-18.5 17 -43.5 24q-25 7 -52 7q-20 0 -38.5 -1.5q-18.5 -1.5 -29.5 -4.5l0 -297q4 -2 12.5 -2.5q8.5 -0.5 17.5 -1.5q9 -1 17.5 -1q8.5 0 12.5 0q14 0 28 1q14 1 27 6l-59 96z" />
-<glyph unicode="&#1167;" horiz-adv-x="435" d="M59 500h51l11 -54h4q37 66 116 66q79 0 118.5 -59q39.5 -59 39.5 -193q0 -75 -18.5 -131.5q-18.5 -56.5 -51.5 -91.5l46 -63l-44 -35l-47 64q-32 -15 -70 -15q-29 0 -46 3.5q-17 3.5 -37 14.5l0 -206h-72zM234 160l49 -68q20 26 30.5 68.5q10.5 42.5 10.5 100.5q0 42 -5.5 76q-5.5 34 -17.5 58.5q-12 24.5 -30.5 38q-18.5 13.5 -45.5 13.5q-73 0 -94 -89l0 -279q14 -12 31.5 -19q17.5 -7 46.5 -7q22 0 40 9l-49 70z" />
-<glyph unicode="&#1168;" horiz-adv-x="357" d="M306 700l14 134h50v-203h-231v-631h-75l0 700z" />
-<glyph unicode="&#1169;" horiz-adv-x="296" d="M297 435h-166v-435h-72v500h174l14 134l50 0z" />
-<glyph unicode="&#1170;" horiz-adv-x="390" d="M392 631h-231v-248h172v-63h-172v-320h-75v320h-79v63h79v317l306 0z" />
-<glyph unicode="&#1171;" horiz-adv-x="306" d="M306 435h-166v-155h138v-59h-138v-221h-72v221h-68v59h68v220l238 0z" />
-<glyph unicode="&#1172;" horiz-adv-x="465" d="M139 0h-75v700h306v-69h-231v-276q10 4 39.5 12.5q29.5 8.5 71.5 8.5q34 0 65 -10.5q31 -10.5 55 -37.5q24 -27 38.5 -73q14.5 -46 14.5 -117q0 -138 -47 -202q-47 -64 -142 -64q-26 0 -38 1q-12 1 -18 2l0 69q11 -2 23.5 -2.5q12.5 -0.5 34.5 -0.5q56 0 82 48q26 48 26 142q0 51 -8.5 85q-8.5 34 -23.5 54q-15 20 -36.5 28.5q-21.5 8.5 -47.5 8.5q-27 0 -52.5 -7.5q-25.5 -7.5 -36.5 -12.5z" />
-<glyph unicode="&#1173;" horiz-adv-x="430" d="M131 0h-72v500h238v-65h-166v-183q10 4 34.5 12.5q24.5 8.5 66.5 8.5q31 0 59.5 -10q28.5 -10 50.5 -35.5q22 -25.5 34.5 -70q12.5 -44.5 12.5 -112.5q0 -131 -41.5 -192.5q-41.5 -61.5 -133.5 -61.5q-26 0 -38 1q-12 1 -18 3l0 65q10 -2 21 -3q11 -1 33 -1q54 0 78 45.5q24 45.5 24 134.5q0 49 -7.5 82.5q-7.5 33.5 -21.5 53q-14 19.5 -33.5 28q-19.5 8.5 -43.5 8.5q-27 0 -48 -7.5q-21 -7.5 -29 -11.5z" />
-<glyph unicode="&#1174;" horiz-adv-x="678" d="M287 700h72v-326l34 14l154 312h84l-157 -304l-33 -32l41 -40l137 -255h54v-198h-53l-12 129h-45l-168 325h-36v-325h-72v337l-33 -14l-168 -323h-88l172 314l39 37l-37 35l-162 314h88l154 -314l35 0z" />
-<glyph unicode="&#1175;" horiz-adv-x="567" d="M342 225h-40v-225h-72v235l-37 -14l-112 -221h-81l123 229l27 30l-41 38l-100 203h76l104 -216h41v216h72v-226l36 14l105 212h75l-105 -203l-32 -32l41 -40l81 -160h61v-192h-49l-13 127l-48 0z" />
-<glyph unicode="&#1176;" horiz-adv-x="434" d="M109 333v65h18q15 0 37 1q22 1 35 4q40 10 68.5 41.5q28.5 31.5 28.5 79.5q0 66 -32 92.5q-32 26.5 -81 26.5q-39 0 -69 -7.5q-30 -7.5 -49 -18.5l-20 62q18 11 59.5 22q41.5 11 93.5 11q34 0 66 -8q32 -8 56.5 -27.5q24.5 -19.5 39.5 -53q15 -33.5 15 -83.5q0 -51 -25.5 -95.5q-25.5 -44.5 -78.5 -66.5l0 -4q56 -11 88.5 -53.5q32.5 -42.5 32.5 -114.5q0 -51 -14 -90q-14 -39 -38 -65.5q-24 -26.5 -56.5 -42q-32.5 -15.5 -69.5 -19.5l-12 -168h-47l-15 167q-37 2 -63.5 9q-26.5 7 -45.5 17l20 68q20 -11 52 -18q32 -7 78 -7q27 0 51 9.5q24 9.5 42 27.5q18 18 28.5 45.5q10.5 27.5 10.5 63.5q0 65 -34.5 94.5q-34.5 29.5 -92.5 34.5q-10 1 -17.5 1q-7.5 0 -18.5 0z" />
-<glyph unicode="&#1177;" horiz-adv-x="351" d="M96 224v62h53q14 0 27.5 6.5q13.5 6.5 24 17.5q10.5 11 17 25.5q6.5 14.5 6.5 30.5q0 39 -20.5 57q-20.5 18 -62.5 18q-31 0 -55 -9q-24 -9 -38 -19l-21 57q25 16 58.5 26q33.5 10 76.5 10q66 0 101.5 -30.5q35.5 -30.5 35.5 -91.5q0 -38 -19 -70q-19 -32 -52 -46l0 -4q46 -11 66 -42q20 -31 20 -82q0 -54 -30 -93.5q-30 -39.5 -93 -50.5l-12 -175h-47l-16 172q-29 2 -50.5 9q-21.5 7 -39.5 17l19 62q19 -12 43.5 -17.5q24.5 -5.5 52.5 -5.5q98 0 98 88q0 36 -23 57q-23 21 -77 21z" />
-<glyph unicode="&#1178;" horiz-adv-x="505" d="M175 324h-36v-324h-75v700h75v-326l35 14l182 312h86l-183 -302l-35 -32l41 -40l160 -257h72v-198h-53l-12 129l-59 0z" />
-<glyph unicode="&#1179;" horiz-adv-x="410" d="M168 225h-37v-225h-72v500h72v-226l34 14l122 212h77l-119 -201l-35 -33l43 -40l90 -161h59v-192h-49l-13 127l-45 0z" />
-<glyph unicode="&#1180;" horiz-adv-x="558" d="M184 324h-44v-324h-75v700h75v-326l44 4v127h58v-120l18 3l163 312h85l-166 -301l-35 -33l41 -40l185 -326h-93l-178 324h-20v-129l-58 0z" />
-<glyph unicode="&#1181;" horiz-adv-x="441" d="M170 225h-39v-225h-72v500h72v-226l39 3v125h52v-117l20 3l99 212h76l-97 -201l-36 -33l42 -40l106 -226h-83l-105 225h-22v-127l-52 0z" />
-<glyph unicode="&#1182;" horiz-adv-x="539" d="M0 633h110v67h75v-67h95v-61h-95v-198l39 14l179 312h86l-180 -301l-37 -33l42 -40l200 -326h-94l-196 324h-39v-324h-75v570l-110 0z" />
-<glyph unicode="&#1183;" horiz-adv-x="388" d="M-5 614h65v86h72v-86h128v-59h-128v-281l33 14l117 212h83l-118 -202l-35 -32l41 -39l129 -227h-87l-126 225h-37v-225h-72v555l-65 0z" />
-<glyph unicode="&#1184;" horiz-adv-x="558" d="M129 631h-129v69h204v-326l35 14l182 312h86l-183 -302l-35 -32l41 -40l203 -326h-95l-198 324h-36v-324h-75l0 627z" />
-<glyph unicode="&#1185;" horiz-adv-x="416" d="M160 274l35 14l121 212h77l-119 -201l-35 -33l43 -39l129 -227h-86l-127 225h-38v-225h-72v435h-88v65l160 0z" />
-<glyph unicode="&#1186;" horiz-adv-x="568" d="M397 323h-258v-323h-75v700h75v-308h258v308h75v-631h74v-198h-52l-12 129l-85 0z" />
-<glyph unicode="&#1187;" horiz-adv-x="444" d="M304 223h-173v-223h-72v500h72v-212h173v212h72v-435h60v-192h-49l-13 127l-70 0z" />
-<glyph unicode="&#1188;" horiz-adv-x="690" d="M703 631h-231v-631h-75v323h-258v-323h-75v700h75v-308h258v308l306 0z" />
-<glyph unicode="&#1189;" horiz-adv-x="541" d="M542 435h-166v-435h-72v223h-173v-223h-72v500h72v-212h173v212l238 0z" />
-<glyph unicode="&#1190;" horiz-adv-x="787" d="M462 0h-75v631h-248v-631h-75v700h398v-345q10 5 39 13q29 8 71 8q34 0 65.5 -10.5q31.5 -10.5 55.5 -37.5q24 -27 38 -73q14 -46 14 -117q0 -137 -46.5 -201.5q-46.5 -64.5 -141.5 -64.5q-26 0 -38 0.5q-12 0.5 -18 2.5l0 69q10 -2 22.5 -2.5q12.5 -0.5 35.5 -0.5q55 0 81 48q26 48 26 141q0 51 -8.5 85q-8.5 34 -23.5 54.5q-15 20.5 -36.5 29q-21.5 8.5 -46.5 8.5q-27 0 -53.5 -7.5q-26.5 -7.5 -35.5 -12.5z" />
-<glyph unicode="&#1191;" horiz-adv-x="668" d="M371 0h-72v435h-168v-435h-72v500h312v-246q10 4 34.5 11.5q24.5 7.5 66.5 7.5q31 0 59.5 -10.5q28.5 -10.5 50 -36.5q21.5 -26 34.5 -69.5q13 -43.5 13 -110.5q0 -132 -41.5 -193.5q-41.5 -61.5 -134.5 -61.5q-26 0 -37.5 1q-11.5 1 -17.5 3l0 65q10 -2 22 -3q12 -1 34 -1q54 0 78.5 47.5q24.5 47.5 24.5 132.5q0 48 -8 81q-8 33 -22 53q-14 20 -33.5 29q-19.5 9 -43.5 9q-27 0 -49 -7.5q-22 -7.5 -30 -11.5z" />
-<glyph unicode="&#1192;" horiz-adv-x="662" d="M284 643q-74 0 -118 -70.5q-44 -70.5 -44 -221.5q0 -62 13 -116q13 -54 36.5 -93.5q23.5 -39.5 56.5 -62q33 -22.5 74 -22.5q8 0 19.5 0.5q11.5 0.5 19.5 3.5q-25 20 -44.5 51.5q-19.5 31.5 -33 71q-13.5 39.5 -21 85q-7.5 45.5 -7.5 93.5q0 158 53 238q53 80 137 80q94 0 139 -74q45 -74 45 -208q0 -62 -10 -115.5q-10 -53.5 -27 -97.5q-17 -44 -40 -76.5q-23 -32.5 -49 -51.5q6 -2 11.5 -1q5.5 1 10.5 1q27 0 49.5 7.5q22.5 7.5 37.5 19.5l23 -61q-16 -15 -40.5 -25q-24.5 -10 -66.5 -10q-26 0 -53 8q-27 8 -47 22q-45 -30 -107 -30q-62 0 -110 25q-48 25 -81 72q-33 47 -50 114q-17 67 -17 151q0 181 62 271.5q62 90.5 179 90.5zM314 354q0 -36 6 -75.5q6 -39.5 19 -76q13 -36.5 32.5 -67.5q19.5 -31 45.5 -50q21 15 41.5 42.5q20.5 27.5 36 66.5q15.5 39 25.5 89q10 50 10 109q0 46 -5.5 86q-5.5 40 -17.5 69.5q-12 29.5 -31.5 46.5q-19.5 17 -48.5 17q-47 0 -80 -62t-33 -195z" />
-<glyph unicode="&#1193;" horiz-adv-x="540" d="M217 447q-105 -2 -105 -196q0 -42 7.5 -78.5q7.5 -36.5 23 -63q15.5 -26.5 39 -41.5q23.5 -15 54.5 -15q9 0 20 2.5q11 2.5 18 8.5q-27 22 -47 74.5q-20 52.5 -20 120.5q0 47 7.5 90.5q7.5 43.5 24.5 77q17 33.5 46 53.5q29 20 72 20q39 0 65.5 -17q26.5 -17 43.5 -46q17 -29 24.5 -68q7.5 -39 7.5 -83q0 -40 -8 -77q-8 -37 -21 -67q-13 -30 -29.5 -52q-16.5 -22 -33.5 -33q20 -11 45.5 -4.5q25.5 6.5 43.5 26.5l23 -54q-14 -17 -39 -27q-25 -10 -54 -10q-25 0 -48 8.5q-23 8.5 -39 26.5q-24 -21 -53.5 -28q-29.5 -7 -57.5 -7q-92 0 -141 68.5q-49 68.5 -49 193.5q0 125 44.5 193q44.5 68 135.5 69zM282 256q0 -57 17 -107q17 -50 46 -75q32 21 55 78q23 57 23 133q0 30 -4 57q-4 27 -12.5 48q-8.5 21 -21 33q-12.5 12 -29.5 12q-23 0 -37.5 -14q-14.5 -14 -22.5 -38q-8 -24 -11 -57t-3 -70z" />
-<glyph unicode="&#1194;" horiz-adv-x="458" d="M430 27q-20 -17 -49 -26q-29 -9 -62 -12l-12 -168h-47l-15 170q-45 7 -82 31.5q-37 24.5 -64 68q-27 43.5 -41.5 108q-14.5 64.5 -14.5 151.5q0 100 20.5 169q20.5 69 54.5 112q34 43 78.5 62q44.5 19 91.5 19q48 0 79.5 -7q31.5 -7 54.5 -17l-18 -68q-20 11 -47 17q-27 6 -62 6q-35 0 -66 -15.5q-31 -15.5 -55 -50q-24 -34.5 -38 -90.5q-14 -56 -14 -137q0 -146 50 -218q50 -72 133 -72q34 0 61 8q27 8 46 21z" />
-<glyph unicode="&#1195;" horiz-adv-x="356" d="M335 25q-17 -14 -38.5 -22q-21.5 -8 -44.5 -12l-12 -170h-47l-15 170q-38 6 -65 27q-27 21 -44 54.5q-17 33.5 -24.5 78.5q-7.5 45 -7.5 99q0 128 45.5 195q45.5 67 130.5 67q39 0 67 -7q28 -7 48 -18v-62q-58 22 -107 22q-54 0 -81.5 -47.5q-27.5 -47.5 -27.5 -149.5q0 -41 6 -76.5q6 -35.5 20 -62q14 -26.5 36 -42q22 -15.5 55 -15.5q26 0 48.5 8.5q22.5 8.5 36.5 20.5z" />
-<glyph unicode="&#1196;" horiz-adv-x="447" d="M186 631h-172v69h419v-69h-172v-562h76v-198h-52l-12 129l-87 0z" />
-<glyph unicode="&#1197;" horiz-adv-x="320" d="M124 435h-123v65h318v-65h-123v-370h60v-192h-49l-13 127l-70 0z" />
-<glyph unicode="&#1198;" horiz-adv-x="455" d="M191 278l-186 422h88l126 -305l13 -61h2l13 63l122 303h81l-184 -421v-279l-75 0z" />
-<glyph unicode="&#1199;" horiz-adv-x="391" d="M5 500h84l93 -320l21 -110h2l18 112l84 318h78l-150 -500v-200h-72l0 200z" />
-<glyph unicode="&#1200;" horiz-adv-x="455" d="M69 285h119l-183 415h88l126 -305l13 -61h2l13 63l122 303h81l-182 -415h120v-59h-122v-226h-75v226l-122 0z" />
-<glyph unicode="&#1201;" horiz-adv-x="391" d="M65 0h98l-158 500h84l93 -320l21 -110h2l18 112l84 318h78l-150 -500h95v-59h-95v-141h-72v141l-98 0z" />
-<glyph unicode="&#1202;" horiz-adv-x="530" d="M203 356l-168 344h90l109 -237l20 -59l20 59l115 237h83l-174 -337l147 -294h77v-198h-53l-12 129h-65l-121 251l-23 62l-21 -62l-124 -251l-84 0z" />
-<glyph unicode="&#1203;" horiz-adv-x="426" d="M227 157l-22 60l-23 -60l-84 -157h-79l142 256l-132 244h86l74 -143l20 -56l21 56l76 143h79l-133 -240l105 -195h62v-192h-49l-13 127l-46 0z" />
-<glyph unicode="&#1204;" horiz-adv-x="673" d="M652 -129h-52l-13 129h-401v631h-172v69h387v-69h-140v-562h242v631h75v-631l74 0z" />
-<glyph unicode="&#1205;" horiz-adv-x="508" d="M492 -127h-50l-12 127h-306v435h-123v65h305v-65h-110v-370h165v435h72v-435l59 0z" />
-<glyph unicode="&#1206;" horiz-adv-x="518" d="M130 700v-244q0 -73 25 -101.5q25 -28.5 73 -28.5q35 0 67.5 13q32.5 13 52.5 34l0 327h75v-631h74v-198h-52l-12 129h-85v300q-20 -15 -56 -29q-36 -14 -80 -14q-32 0 -60.5 8q-28.5 8 -50 28.5q-21.5 20.5 -34 55.5q-12.5 35 -12.5 90l0 261z" />
-<glyph unicode="&#1207;" horiz-adv-x="414" d="M265 210q-12 -9 -37.5 -19.5q-25.5 -10.5 -68.5 -10.5q-29 0 -52 7.5q-23 7.5 -38.5 24.5q-15.5 17 -24 46q-8.5 29 -8.5 73v169h72v-146q0 -25 2.5 -45q2.5 -20 9.5 -34.5q7 -14.5 20 -22q13 -7.5 34 -7.5q35 0 57 9q22 9 34 20l0 226h72v-435h61v-192h-49l-13 127l-71 0z" />
-<glyph unicode="&#1208;" horiz-adv-x="498" d="M219 257h-4q-36 0 -65.5 9q-29.5 9 -50.5 30.5q-21 21.5 -32.5 57q-11.5 35.5 -11.5 88.5v258h75v-242q0 -66 21.5 -97.5q21.5 -31.5 67.5 -34.5l0 129h57v-124q25 5 47 16.5q22 11.5 36 25.5l0 327h75v-700h-75v300q-14 -10 -35.5 -19.5q-21.5 -9.5 -47.5 -16.5l0 -119l-57 0z" />
-<glyph unicode="&#1209;" horiz-adv-x="405" d="M167 176h-5q-31 0 -54.5 8q-23.5 8 -39.5 28q-16 20 -24 53q-8 33 -8 83v152h72v-141q0 -25 2 -45.5q2 -20.5 8.5 -36q6.5 -15.5 18 -25q11.5 -9.5 30.5 -11.5l0 132h52v-129q19 4 33.5 12q14.5 8 22.5 16l0 228h72v-500h-72v210q-8 -7 -22 -14.5q-14 -7.5 -34 -12.5l0 -115l-52 0z" />
-<glyph unicode="&#1210;" horiz-adv-x="487" d="M357 0v236q0 71 -23 104.5q-23 33.5 -74 33.5q-36 0 -68.5 -12.5q-32.5 -12.5 -52.5 -32.5l0 -329h-75v700h75v-300q21 14 57 28.5q36 14.5 82 14.5q35 0 63.5 -9q28.5 -9 48.5 -31.5q20 -22.5 31 -59.5q11 -37 11 -94l0 -249z" />
-<glyph unicode="&#1211;" horiz-adv-x="440" d="M315 0v304q0 70 -16.5 106.5q-16.5 36.5 -65.5 36.5q-35 0 -63.5 -25q-28.5 -25 -38.5 -63l0 -359h-72v700h72v-247h3q20 26 49.5 42.5q29.5 16.5 73.5 16.5q33 0 57.5 -9q24.5 -9 40.5 -31q16 -22 24 -58.5q8 -36.5 8 -90.5l0 -323z" />
-<glyph unicode="&#1212;" horiz-adv-x="632" d="M234 319q6 -133 48 -197.5q42 -64.5 128 -64.5q36 0 67 13.5q31 13.5 52 27.5l22 -63q-28 -20 -66 -33.5q-38 -13.5 -89 -13.5q-108 0 -172 79q-64 79 -69 252l-28 0q-69 0 -98.5 30.5q-29.5 30.5 -27.5 86.5q0 29 7 49q7 20 18 34l69 0q-14 -14 -20 -35q-6 -21 -6 -39q0 -14 3 -25.5q3 -11.5 12 -19.5q9 -8 26 -12q17 -4 45 -2q5 156 61.5 241q56.5 85 162.5 85q103 0 153.5 -73.5q50.5 -73.5 50.5 -208.5q0 -26 -1.5 -53.5q-1.5 -27.5 -5.5 -57.5zM506 386q2 14 2 27.5q0 13.5 0 27.5q0 40 -7 76.5q-7 36.5 -22.5 64.5q-15.5 28 -40 44.5q-24.5 16.5 -58.5 16.5q-74 0 -109 -68.5q-35 -68.5 -38 -188.5z" />
-<glyph unicode="&#1213;" horiz-adv-x="502" d="M450 34q-24 -22 -61 -34q-37 -12 -78 -12q-47 0 -80.5 18q-33.5 18 -56 51q-22.5 33 -33.5 79.5q-11 46.5 -12 104.5l-9 0q-60 0 -88 31q-28 31 -27 85q1 37 12.5 59.5q11.5 22.5 26.5 37.5l69 0q-18 -14 -31 -37q-13 -23 -13 -57q0 -24 12.5 -42q12.5 -18 49.5 -15q10 103 55.5 156q45.5 53 122.5 53q28 0 55.5 -7q27.5 -7 49.5 -28q22 -21 35.5 -59q13.5 -38 13.5 -99q0 -17 -1.5 -36.5q-1.5 -19.5 -3.5 -40.5l-254 0q0 -43 7 -78q7 -35 22 -59.5q15 -24.5 38.5 -38q23.5 -13.5 58.5 -13.5q27 0 53.5 10q26.5 10 40.5 24zM394 302q2 75 -21 110q-23 35 -63 35q-46 0 -73 -35q-27 -35 -32 -110z" />
-<glyph unicode="&#1214;" horiz-adv-x="632" d="M234 319q6 -133 48 -197q42 -64 128 -64q36 0 67 13q31 13 52 27l22 -63q-24 -17 -55 -29.5q-31 -12.5 -71 -16.5l-12 -168h-47l-15 168q-89 14 -140 94.5q-51 80.5 -56 235.5l-28 0q-69 0 -98 30q-29 30 -28 87q0 29 7 49q7 20 18 34l69 0q-14 -14 -20 -35q-6 -21 -6 -39q0 -14 3 -25.5q3 -11.5 12 -19.5q9 -8 26 -12q17 -4 45 -2q5 156 61.5 241q56.5 85 162.5 85q103 0 153.5 -73.5q50.5 -73.5 50.5 -208.5q0 -26 -1.5 -53.5q-1.5 -27.5 -5.5 -57.5zM506 386q2 14 2 27.5q0 13.5 0 27.5q0 40 -7 76.5q-7 36.5 -22.5 64.5q-15.5 28 -40 44.5q-24.5 16.5 -58.5 16.5q-74 0 -109 -68.5q-35 -68.5 -38 -188.5z" />
-<glyph unicode="&#1215;" horiz-adv-x="502" d="M451 34q-19 -17 -45.5 -28.5q-26.5 -11.5 -56.5 -16.5l-12 -168h-47l-15 169q-74 14 -108.5 81q-34.5 67 -36.5 171l-9 0q-60 0 -88 30.5q-28 30.5 -27 84.5q1 37 12.5 59.5q11.5 22.5 26.5 37.5l69 0q-18 -14 -31 -37q-13 -23 -13 -57q0 -12 3 -23q3 -11 10 -19.5q7 -8.5 19 -12.5q12 -4 30 -2q10 103 55.5 156q45.5 53 122.5 53q28 0 55.5 -7q27.5 -7 49.5 -28q22 -21 35.5 -59q13.5 -38 13.5 -99q0 -17 -1.5 -36.5q-1.5 -19.5 -3.5 -40.5l-254 0q1 -87 29 -137.5q28 -50.5 97 -50.5q27 0 53.5 9.5q26.5 9.5 40.5 23.5zM395 302q2 75 -21 110q-23 35 -63 35q-46 0 -73 -35q-27 -35 -32 -110z" />
-<glyph unicode="&#1216;" horiz-adv-x="233" d="M79 700h75v-700l-75 0z" />
-<glyph unicode="&#1219;" horiz-adv-x="484" d="M351 71q0 70 -10 118.5q-10 48.5 -31.5 78.5q-21.5 30 -54.5 43q-33 13 -79 13h-37v-324h-75v700h75v-326l35 14l182 312h86l-176 -286l-46 -38h48q42 -12 72 -33q30 -21 49 -56q19 -35 28 -86.5q9 -51.5 9 -125.5v-19q0 -78 -13 -131q-13 -53 -37 -84.5q-24 -31.5 -59 -43.5q-35 -12 -78 -7l0 69q32 0 53.5 11q21.5 11 34.5 36.5q13 25.5 18.5 66t5.5 98.5z" />
-<glyph unicode="&#1220;" horiz-adv-x="390" d="M131 500v-235l34 14l121 221h78l-120 -210l-30 -27l34 -5q35 -10 56.5 -33q21.5 -23 33.5 -53.5q12 -30.5 16.5 -66.5q4.5 -36 4.5 -72v-17q0 -68 -13 -114q-13 -46 -36.5 -72.5q-23.5 -26.5 -55.5 -35q-32 -8.5 -70 -2.5l0 65q49 -8 76 33.5q27 41.5 27 125.5q0 108 -31 155q-31 47 -89 49l-36 0v-220h-72l0 500z" />
-<glyph unicode="&#1221;" horiz-adv-x="509" d="M363 631h-158q-8 -201 -21 -336q-13 -135 -40 -208q-17 -48 -42 -70q-25 -22 -57 -22q-29 0 -49 10l11 68q20 -6 37 2.5q17 8.5 32 46.5q11 27 20.5 72.5q9.5 45.5 17 115.5q7.5 70 12.5 166q5 96 7 224l305 0v-635h76v-21l-74 -174h-50l36 130l-63 0z" />
-<glyph unicode="&#1222;" horiz-adv-x="423" d="M276 435h-109q-3 -85 -8 -164.5q-5 -79.5 -17.5 -140.5q-12.5 -61 -35.5 -97.5q-23 -36.5 -61 -36.5q-17 0 -29 2q-12 2 -22 7l11 63q21 -6 37.5 2.5q16.5 8.5 28.5 52q12 43.5 19.5 133q7.5 89.5 10.5 244.5l247 0v-435h79v-21l-74 -171h-50l36 127l-63 0z" />
-<glyph unicode="&#1223;" horiz-adv-x="536" d="M472 0v-28q0 -103 -32.5 -147.5q-32.5 -44.5 -107.5 -34.5l0 65q23 0 36 9q13 9 19.5 27q6.5 18 8 45.5q1.5 27.5 1.5 63.5v323h-258v-323h-75v700h75v-308h258v308l75 0z" />
-<glyph unicode="&#1224;" horiz-adv-x="434" d="M304 223h-173v-223h-72v500h72v-212h173v212h72v-529q0 -92 -27.5 -136q-27.5 -44 -87.5 -43q-6 0 -12 0.5q-6 0.5 -13 1.5l0 63q45 -1 56.5 34.5q11.5 35.5 11.5 108.5z" />
-<glyph unicode="&#1225;" horiz-adv-x="550" d="M397 323h-258v-323h-75v700h75v-308h258v308h75v-635h82v-21l-74 -174h-50l36 130l-69 0z" />
-<glyph unicode="&#1226;" horiz-adv-x="451" d="M304 223h-173v-223h-72v500h72v-212h173v212h72v-435h79v-21l-74 -171h-50l36 127l-63 0z" />
-<glyph unicode="&#1227;" horiz-adv-x="487" d="M130 700v-244q0 -73 25 -101.5q25 -28.5 73 -28.5q35 0 67.5 13q32.5 13 52.5 34l0 327h75v-700h-86l-13 -129h-52v198h76v231q-20 -15 -56 -29q-36 -14 -80 -14q-32 0 -60.5 8q-28.5 8 -50 28.5q-21.5 20.5 -34 55.5q-12.5 35 -12.5 90l0 261z" />
-<glyph unicode="&#1228;" horiz-adv-x="396" d="M265 213q-13 -9 -38 -19.5q-25 -10.5 -70 -10.5q-30 0 -52.5 7.5q-22.5 7.5 -37.5 26.5q-15 19 -23 51.5q-8 32.5 -8 81.5v150h72v-135q0 -26 2.5 -47.5q2.5 -21.5 9.5 -37q7 -15.5 20 -24q13 -8.5 34 -8.5q35 0 57.5 8.5q22.5 8.5 33.5 19.5l0 224h72v-500h-75l-12 -127h-50v192l65 0z" />
-<glyph unicode="&#1229;" horiz-adv-x="651" d="M498 460l9 106h-4l-32 -99l-141 -304h-25l-148 304l-31 99h-4l14 -106v-460h-72v700h63l169 -344l25 -82h2l24 83l160 343h66v-635h83v-21l-74 -174h-50l36 130l-70 0z" />
-<glyph unicode="&#1230;" horiz-adv-x="538" d="M391 297l7 95h-4l-30 -85l-93 -192h-26l-97 192l-27 85h-5l8 -94v-298h-65v500h72l109 -217l22 -65h2l24 67l101 215h74v-435h79v-21l-74 -171h-50l36 127l-63 0z" />
-<glyph unicode="&#1231;" horiz-adv-x="205" d="M66 700h72v-700l-72 0z" />
-<glyph unicode="&#1232;" horiz-adv-x="473" d="M333 196h-198l-56 -196h-74l211 711h41l211 -711h-78zM155 263h160l-61 216l-19 105h-2l-19 -107zM168 870q2 -37 20.5 -59q18.5 -22 50.5 -22q32 0 49.5 22q17.5 22 20.5 58l64 -15q-8 -57 -41 -88q-33 -31 -94 -31q-59 0 -97.5 28q-38.5 28 -44.5 90z" />
-<glyph unicode="&#1233;" horiz-adv-x="400" d="M54 470q29 18 70.5 28q41.5 10 87.5 10q42 0 67.5 -12.5q25.5 -12.5 40 -34q14.5 -21.5 19 -49q4.5 -27.5 4.5 -57.5q0 -60 -2.5 -117q-2.5 -57 -2.5 -108q0 -38 2.5 -70.5q2.5 -32.5 9.5 -61.5l-55 0l-17 59h-4q-15 -26 -44 -45q-29 -19 -78 -19q-54 0 -88.5 37.5q-34.5 37.5 -34.5 103.5q0 43 14.5 72q14.5 29 41 47q26.5 18 63 25.5q36.5 7.5 81.5 7.5q10 0 20 0q10 0 21 -1q3 31 3 55q0 57 -17 80q-17 23 -62 23q-28 0 -61 -8.5q-33 -8.5 -55 -21.5zM271 228q-10 1 -20 1.5q-10 0.5 -20 0.5q-24 0 -47 -4q-23 -4 -41 -14q-18 -10 -28.5 -27q-10.5 -17 -10.5 -43q0 -40 19.5 -62q19.5 -22 50.5 -22q42 0 65 20q23 20 32 44zM131 702q5 -46 24.5 -65.5q19.5 -19.5 45.5 -19.5q26 0 45.5 21q19.5 21 24.5 63l55 -16q-8 -60 -43.5 -91.5q-35.5 -31.5 -83.5 -31.5q-23 0 -44.5 6.5q-21.5 6.5 -39 21q-17.5 14.5 -29.5 37.5q-12 23 -16 56z" />
-<glyph unicode="&#1234;" horiz-adv-x="473" d="M333 196h-198l-56 -196h-74l211 711h41l211 -711h-78zM155 263h160l-61 216l-19 105h-2l-19 -107zM111 794q0 21 12.5 34q12.5 13 34.5 13q21 0 33.5 -13q12.5 -13 12.5 -34q0 -21 -12.5 -33.5q-12.5 -12.5 -33.5 -12.5q-22 0 -34.5 12.5q-12.5 12.5 -12.5 33.5zt0 0zM269 794q0 21 12.5 34q12.5 13 33.5 13q22 0 34.5 -13q12.5 -13 12.5 -34q0 -21 -12.5 -33.5q-12.5 -12.5 -34.5 -12.5q-21 0 -33.5 12.5t-12.5 33.5z" />
-<glyph unicode="&#1235;" horiz-adv-x="400" d="M54 470q29 18 70.5 28q41.5 10 87.5 10q42 0 67.5 -12.5q25.5 -12.5 40 -34q14.5 -21.5 19 -49q4.5 -27.5 4.5 -57.5q0 -60 -2.5 -117q-2.5 -57 -2.5 -108q0 -38 2.5 -70.5q2.5 -32.5 9.5 -61.5l-55 0l-17 59h-4q-15 -26 -44 -45q-29 -19 -78 -19q-54 0 -88.5 37.5q-34.5 37.5 -34.5 103.5q0 43 14.5 72q14.5 29 41 47q26.5 18 63 25.5q36.5 7.5 81.5 7.5q10 0 20 0q10 0 21 -1q3 31 3 55q0 57 -17 80q-17 23 -62 23q-28 0 -61 -8.5q-33 -8.5 -55 -21.5zM271 228q-10 1 -20 1.5q-10 0.5 -20 0.5q-24 0 -47 -4q-23 -4 -41 -14q-18 -10 -28.5 -27q-10.5 -17 -10.5 -43q0 -40 19.5 -62q19.5 -22 50.5 -22q42 0 65 20q23 20 32 44zM75 633q0 23 11.5 36q11.5 13 31.5 13q20 0 31.5 -13q11.5 -13 11.5 -36q0 -21 -11.5 -34q-11.5 -13 -31.5 -13q-20 0 -31.5 13q-11.5 13 -11.5 34zt0 0zM234 633q0 23 11.5 36q11.5 13 31.5 13q20 0 31.5 -13q11.5 -13 11.5 -36q0 -21 -11.5 -34q-11.5 -13 -31.5 -13q-20 0 -31.5 13t-11.5 34z" />
-<glyph unicode="&#1236;" horiz-adv-x="683" d="M315 589l-26 -98l-103 -225h132v323zM318 199h-165l-90 -199h-81l335 700h313v-69h-237v-237h217v-69h-217v-256h241v-69l-316 0z" />
-<glyph unicode="&#1237;" horiz-adv-x="642" d="M173 57q21 0 37.5 6.5q16.5 6.5 28.5 17q12 10.5 20 23q8 12.5 12 25.5l0 101q-10 1 -20 1.5q-10 0.5 -20 0.5q-24 0 -47 -4q-23 -4 -41 -14q-18 -10 -28.5 -27q-10.5 -17 -10.5 -43q0 -35 19 -61q19 -26 50 -26zt0 0zM294 73q-20 -35 -54.5 -58q-34.5 -23 -85.5 -23q-56 0 -90.5 39q-34.5 39 -34.5 105q0 44 14.5 73.5q14.5 29.5 40.5 47q26 17.5 62 25q36 7.5 80 7.5q11 0 22 -0.5q11 -0.5 22 -1.5q3 31 3 55q0 57 -17 79.5q-17 22.5 -62 22.5q-28 0 -62 -10q-34 -10 -57 -26l-22 56q31 23 72.5 33.5q41.5 10.5 86.5 10.5q84 0 109 -64q20 36 55.5 52q35.5 16 70.5 16q28 0 55.5 -7.5q27.5 -7.5 49.5 -29q22 -21.5 35.5 -60q13.5 -38.5 13.5 -99.5q0 -17 -1.5 -36q-1.5 -19 -3.5 -40l-253 0q1 -92 28 -139.5q27 -47.5 95 -47.5q28 0 55 10q27 10 41 22l26 -53q-25 -20 -61 -32q-36 -12 -80 -12q-50 0 -89 21.5q-39 21.5 -58 63.5zM447 447q-45 0 -72 -36q-27 -36 -32 -112l188 0q2 75 -20.5 111.5t-63.5 36.5z" />
-<glyph unicode="&#1238;" horiz-adv-x="429" d="M64 700h311v-69h-236v-237h217v-69h-217v-256h241v-69h-316zM151 870q2 -37 20.5 -59q18.5 -22 50.5 -22q32 0 49.5 22q17.5 22 20.5 58l64 -15q-8 -57 -41 -88q-33 -31 -94 -31q-59 0 -97.5 28q-38.5 28 -44.5 90z" />
-<glyph unicode="&#1239;" horiz-adv-x="413" d="M358 34q-24 -22 -61 -34q-37 -12 -78 -12q-47 0 -81.5 18.5q-34.5 18.5 -57 53q-22.5 34.5 -33 82.5q-10.5 48 -10.5 108q0 128 47 195q47 67 133 67q28 0 55.5 -7q27.5 -7 49.5 -28q22 -21 35.5 -59q13.5 -38 13.5 -99q0 -17 -1.5 -36.5q-1.5 -19.5 -3.5 -40.5l-254 0q0 -43 7 -78q7 -35 22 -59.5q15 -24.5 38.5 -38q23.5 -13.5 58.5 -13.5q27 0 53.5 10q26.5 10 40.5 24zM302 302q2 75 -21 110q-23 35 -63 35q-46 0 -73 -35q-27 -35 -32 -110zM145 702q5 -46 24.5 -65.5q19.5 -19.5 45.5 -19.5q26 0 45.5 21q19.5 21 24.5 63l55 -16q-8 -60 -43.5 -91.5q-35.5 -31.5 -83.5 -31.5q-23 0 -44.5 6.5q-21.5 6.5 -39 21q-17.5 14.5 -29.5 37.5q-12 23 -16 56z" />
-<glyph unicode="&#1240;" horiz-adv-x="514" d="M120 323q-2 -15 -3 -30.5q-1 -15.5 -1 -30.5q0 -41 7.5 -78.5q7.5 -37.5 24 -65.5q16.5 -28 41 -44.5q24.5 -16.5 59.5 -16.5q73 0 110 67.5q37 67.5 38 198.5zM396 390q-7 128 -46 190.5q-39 62.5 -121 62.5q-37 0 -71.5 -13.5q-34.5 -13.5 -53.5 -26.5l-22 63q26 17 67 31.5q41 14.5 92 14.5q57 0 100 -20.5q43 -20.5 72 -64q29 -43.5 43.5 -112.5q14.5 -69 14.5 -165q0 -173 -54.5 -267.5q-54.5 -94.5 -170.5 -94.5q-51 0 -89.5 20q-38.5 20 -64 57q-25.5 37 -38.5 90.5q-13 53.5 -13 119.5q0 27 1.5 55.5q1.5 28.5 6.5 59.5z" />
-<glyph unicode="&#1241;" horiz-adv-x="408" d="M50 468q25 20 62.5 32q37.5 12 79.5 12q93 0 136 -69.5q43 -69.5 43 -192.5q0 -133 -46 -197.5q-46 -64.5 -127 -64.5q-28 0 -56.5 9.5q-28.5 9.5 -52 34q-23.5 24.5 -38 66q-14.5 41.5 -14.5 105.5q0 17 1.5 35q1.5 18 3.5 38l256 0q-3 88 -30.5 129.5q-27.5 41.5 -95.5 41.5q-28 0 -54.5 -9.5q-26.5 -9.5 -40.5 -23.5zM199 53q45 0 72 41.5q27 41.5 25 121.5l-189 0q-4 -78 22.5 -120.5t69.5 -42.5z" />
-<glyph unicode="&#1242;" horiz-adv-x="514" d="M120 323q-2 -15 -3 -30.5q-1 -15.5 -1 -30.5q0 -41 7.5 -78.5q7.5 -37.5 24 -65.5q16.5 -28 41 -44.5q24.5 -16.5 59.5 -16.5q73 0 110 67.5q37 67.5 38 198.5zM396 390q-7 128 -46 190.5q-39 62.5 -121 62.5q-37 0 -71.5 -13.5q-34.5 -13.5 -53.5 -26.5l-22 63q26 17 67 31.5q41 14.5 92 14.5q57 0 100 -20.5q43 -20.5 72 -64q29 -43.5 43.5 -112.5q14.5 -69 14.5 -165q0 -173 -54.5 -267.5q-54.5 -94.5 -170.5 -94.5q-51 0 -89.5 20q-38.5 20 -64 57q-25.5 37 -38.5 90.5q-13 53.5 -13 119.5q0 27 1.5 55.5q1.5 28.5 6.5 59.5zM123 794q0 21 12.5 34q12.5 13 34.5 13q21 0 33.5 -13q12.5 -13 12.5 -34q0 -21 -12.5 -33.5q-12.5 -12.5 -33.5 -12.5q-22 0 -34.5 12.5q-12.5 12.5 -12.5 33.5zt0 0zM281 794q0 21 12.5 34q12.5 13 33.5 13q22 0 34.5 -13q12.5 -13 12.5 -34q0 -21 -12.5 -33.5q-12.5 -12.5 -34.5 -12.5q-21 0 -33.5 12.5t-12.5 33.5z" />
-<glyph unicode="&#1243;" horiz-adv-x="408" d="M50 468q25 20 62.5 32q37.5 12 79.5 12q93 0 136 -69.5q43 -69.5 43 -192.5q0 -133 -46 -197.5q-46 -64.5 -127 -64.5q-28 0 -56.5 9.5q-28.5 9.5 -52 34q-23.5 24.5 -38 66q-14.5 41.5 -14.5 105.5q0 17 1.5 35q1.5 18 3.5 38l256 0q-3 88 -30.5 129.5q-27.5 41.5 -95.5 41.5q-28 0 -54.5 -9.5q-26.5 -9.5 -40.5 -23.5zM199 53q45 0 72 41.5q27 41.5 25 121.5l-189 0q-4 -78 22.5 -120.5q26.5 -42.5 69.5 -42.5zt0 0zM75 633q0 23 11.5 36q11.5 13 31.5 13q20 0 31.5 -13q11.5 -13 11.5 -36q0 -21 -11.5 -34q-11.5 -13 -31.5 -13q-20 0 -31.5 13q-11.5 13 -11.5 34zt0 0zM234 633q0 23 11.5 36q11.5 13 31.5 13q20 0 31.5 -13q11.5 -13 11.5 -36q0 -21 -11.5 -34q-11.5 -13 -31.5 -13q-20 0 -31.5 13t-11.5 34z" />
-<glyph unicode="&#1244;" horiz-adv-x="654" d="M287 700h72v-326l34 14l154 312h84l-157 -304l-33 -32l41 -40l174 -324h-93l-168 325h-36v-325h-72v337l-33 -14l-168 -323h-88l172 314l39 37l-37 35l-162 314h88l154 -314h35zM199 794q0 21 12.5 34q12.5 13 34.5 13q21 0 33.5 -13q12.5 -13 12.5 -34q0 -21 -12.5 -33.5q-12.5 -12.5 -33.5 -12.5q-22 0 -34.5 12.5q-12.5 12.5 -12.5 33.5zt0 0zM357 794q0 21 12.5 34q12.5 13 33.5 13q22 0 34.5 -13q12.5 -13 12.5 -34q0 -21 -12.5 -33.5q-12.5 -12.5 -34.5 -12.5q-21 0 -33.5 12.5t-12.5 33.5z" />
-<glyph unicode="&#1245;" horiz-adv-x="537" d="M193 221l-112 -221h-81l123 229l27 30l-41 38l-100 203h76l104 -216h41v216h72v-226l37 14l104 212h75l-105 -203l-32 -32l41 -40l115 -225h-83l-112 225h-40v-225h-72v235zM145 633q0 23 11.5 36q11.5 13 31.5 13q20 0 31.5 -13q11.5 -13 11.5 -36q0 -21 -11.5 -34q-11.5 -13 -31.5 -13q-20 0 -31.5 13q-11.5 13 -11.5 34zt0 0zM304 633q0 23 11.5 36q11.5 13 31.5 13q20 0 31.5 -13q11.5 -13 11.5 -36q0 -21 -11.5 -34q-11.5 -13 -31.5 -13q-20 0 -31.5 13t-11.5 34z" />
-<glyph unicode="&#1246;" horiz-adv-x="434" d="M109 333v65h18q15 0 37 1q22 1 35 4q40 10 68.5 41.5q28.5 31.5 28.5 79.5q0 66 -32 92.5q-32 26.5 -81 26.5q-39 0 -69 -7q-30 -7 -49 -18l-20 61q18 11 59.5 22q41.5 11 93.5 11q34 0 66 -8q32 -8 56.5 -27.5q24.5 -19.5 39.5 -53q15 -33.5 15 -83.5q0 -51 -25.5 -95.5q-25.5 -44.5 -78.5 -66.5l0 -4q56 -11 88.5 -53.5q32.5 -42.5 32.5 -114.5q0 -58 -17.5 -99q-17.5 -41 -47 -67.5q-29.5 -26.5 -68.5 -39q-39 -12.5 -81 -12.5q-53 0 -88.5 7q-35.5 7 -58.5 19l20 68q20 -11 52 -18q32 -7 78 -7q27 0 51 9.5q24 9.5 42 27.5q18 18 28.5 45.5q10.5 27.5 10.5 63.5q0 65 -34.5 94.5q-34.5 29.5 -92.5 34.5q-10 1 -17.5 1q-7.5 0 -18.5 0zM70 794q0 21 12.5 34q12.5 13 34.5 13q21 0 33.5 -13q12.5 -13 12.5 -34q0 -21 -12.5 -33.5q-12.5 -12.5 -33.5 -12.5q-22 0 -34.5 12.5q-12.5 12.5 -12.5 33.5zt0 0zM228 794q0 21 12.5 34q12.5 13 33.5 13q22 0 34.5 -13q12.5 -13 12.5 -34q0 -21 -12.5 -33.5q-12.5 -12.5 -34.5 -12.5q-21 0 -33.5 12.5t-12.5 33.5z" />
-<glyph unicode="&#1247;" horiz-adv-x="351" d="M97 224v62h55q14 0 27.5 6.5q13.5 6.5 24 17.5q10.5 11 17 25.5q6.5 14.5 6.5 30.5q0 39 -20.5 57q-20.5 18 -62.5 18q-31 0 -56.5 -9q-25.5 -9 -39.5 -19l-21 57q25 16 58.5 26q33.5 10 76.5 10q66 0 101.5 -30.5q35.5 -30.5 35.5 -91.5q0 -38 -19 -70q-19 -32 -52 -46l0 -4q46 -11 66 -42q20 -31 20 -82q0 -63 -42 -105.5q-42 -42.5 -129 -42.5q-40 0 -67.5 7.5q-27.5 7.5 -49.5 19.5l19 62q19 -12 45 -18q26 -6 54 -6q49 0 73.5 23q24.5 23 24.5 66q0 36 -23 57q-23 21 -77 21zM37 633q0 23 11.5 36q11.5 13 31.5 13q20 0 31.5 -13q11.5 -13 11.5 -36q0 -21 -11.5 -34q-11.5 -13 -31.5 -13q-20 0 -31.5 13q-11.5 13 -11.5 34zt0 0zM196 633q0 23 11.5 36q11.5 13 31.5 13q20 0 31.5 -13q11.5 -13 11.5 -36q0 -21 -11.5 -34q-11.5 -13 -31.5 -13q-20 0 -31.5 13t-11.5 34z" />
-<glyph unicode="&#1248;" horiz-adv-x="451" d="M184 57q67 0 105 41q38 41 38 107q0 69 -39.5 103q-39.5 34 -115.5 34h-70v27l147 228l35 43l-49 -9h-190v69h336v-29l-159 -242l-30 -30v-3l29 8q39 0 72.5 -13q33.5 -13 57.5 -37q24 -24 37.5 -59.5q13.5 -35.5 13.5 -81.5q0 -54 -15.5 -95.5q-15.5 -41.5 -43.5 -70.5q-28 -29 -68.5 -44q-40.5 -15 -89.5 -15q-40 0 -80.5 9q-40.5 9 -63.5 23l19 69q20 -13 54.5 -22.5t69.5 -9.5z" />
-<glyph unicode="&#1249;" horiz-adv-x="384" d="M147 -145q28 0 51.5 10.5q23.5 10.5 41 30q17.5 19.5 27 47q9.5 27.5 9.5 60.5q0 72 -34 107q-34 35 -95 35h-57v26l116 226l37 44l-52 -6h-160v65h295v-29l-126 -238l-29 -29v-2l27 6q31 -2 58.5 -15.5q27.5 -13.5 47.5 -38q20 -24.5 32 -59.5q12 -35 12 -81q0 -54 -15.5 -96q-15.5 -42 -42.5 -70.5q-27 -28.5 -64 -43q-37 -14.5 -80 -14.5q-35 0 -65 6.5q-30 6.5 -53 17.5l21 64q19 -11 44 -17t54 -6z" />
-<glyph unicode="&#1250;" horiz-adv-x="544" d="M405 458l6 92h-3l-35 -94l-259 -456h-50v700h75v-465l-7 -90h4l35 94l260 461h49v-700h-75zM147 843h259v-62l-259 0z" />
-<glyph unicode="&#1251;" horiz-adv-x="439" d="M308 288l6 76h-4l-35 -84l-169 -280h-47v500h72v-297l-6 -73h4l33 82l171 288h47v-500h-72zM100 643h243v-59l-243 0z" />
-<glyph unicode="&#1252;" horiz-adv-x="544" d="M405 458l6 92h-3l-35 -94l-259 -456h-50v700h75v-465l-7 -90h4l35 94l260 461h49v-700h-75zM149 794q0 21 12.5 34q12.5 13 34.5 13q21 0 33.5 -13q12.5 -13 12.5 -34q0 -21 -12.5 -33.5q-12.5 -12.5 -33.5 -12.5q-22 0 -34.5 12.5q-12.5 12.5 -12.5 33.5zt0 0zM307 794q0 21 12.5 34q12.5 13 33.5 13q22 0 34.5 -13q12.5 -13 12.5 -34q0 -21 -12.5 -33.5q-12.5 -12.5 -34.5 -12.5q-21 0 -33.5 12.5t-12.5 33.5z" />
-<glyph unicode="&#1253;" horiz-adv-x="439" d="M308 288l6 76h-4l-35 -84l-169 -280h-47v500h72v-297l-6 -73h4l33 82l171 288h47v-500h-72zM101 633q0 23 11.5 36q11.5 13 31.5 13q20 0 31.5 -13q11.5 -13 11.5 -36q0 -21 -11.5 -34q-11.5 -13 -31.5 -13q-20 0 -31.5 13q-11.5 13 -11.5 34zt0 0zM260 633q0 23 11.5 36q11.5 13 31.5 13q20 0 31.5 -13q11.5 -13 11.5 -36q0 -21 -11.5 -34q-11.5 -13 -31.5 -13q-20 0 -31.5 13t-11.5 34z" />
-<glyph unicode="&#1254;" horiz-adv-x="549" d="M43 350q0 178 57 270q57 92 174 92q63 0 107 -25.5q44 -25.5 71.5 -72.5q27.5 -47 40.5 -114q13 -67 13 -150q0 -178 -57.5 -270q-57.5 -92 -174.5 -92q-62 0 -106 25.5q-44 25.5 -72 72.5q-28 47 -40.5 114q-12.5 67 -12.5 150zt0 0zM122 350q0 -59 8.5 -112q8.5 -53 26.5 -93q18 -40 47 -64q29 -24 70 -24q75 0 114 72q39 72 39 221q0 58 -8.5 111q-8.5 53 -26.5 93.5q-18 40.5 -47 64.5q-29 24 -71 24q-74 0 -113 -72q-39 -72 -39 -221zt0 0zM149 794q0 21 12.5 34q12.5 13 34.5 13q21 0 33.5 -13q12.5 -13 12.5 -34q0 -21 -12.5 -33.5q-12.5 -12.5 -33.5 -12.5q-22 0 -34.5 12.5q-12.5 12.5 -12.5 33.5zt0 0zM307 794q0 21 12.5 34q12.5 13 33.5 13q22 0 34.5 -13q12.5 -13 12.5 -34q0 -21 -12.5 -33.5q-12.5 -12.5 -34.5 -12.5q-21 0 -33.5 12.5t-12.5 33.5z" />
-<glyph unicode="&#1255;" horiz-adv-x="432" d="M37 250q0 135 46.5 198.5q46.5 63.5 132.5 63.5q92 0 135.5 -65q43.5 -65 43.5 -197q0 -136 -47 -199q-47 -63 -132 -63q-92 0 -135.5 65q-43.5 65 -43.5 197zt0 0zM112 250q0 -44 5.5 -80q5.5 -36 18 -62q12.5 -26 32.5 -40.5q20 -14.5 48 -14.5q52 0 78 46.5q26 46.5 26 150.5q0 43 -5.5 79.5q-5.5 36.5 -18 62.5q-12.5 26 -32.5 40.5q-20 14.5 -48 14.5q-51 0 -77.5 -47q-26.5 -47 -26.5 -150zt0 0zM94 633q0 23 11.5 36q11.5 13 31.5 13q20 0 31.5 -13q11.5 -13 11.5 -36q0 -21 -11.5 -34q-11.5 -13 -31.5 -13q-20 0 -31.5 13q-11.5 13 -11.5 34zt0 0zM253 633q0 23 11.5 36q11.5 13 31.5 13q20 0 31.5 -13q11.5 -13 11.5 -36q0 -21 -11.5 -34q-11.5 -13 -31.5 -13q-20 0 -31.5 13t-11.5 34z" />
-<glyph unicode="&#1256;" horiz-adv-x="549" d="M43 350q0 178 57 270q57 92 174 92q63 0 107 -25.5q44 -25.5 71.5 -72.5q27.5 -47 40.5 -114q13 -67 13 -150q0 -178 -57.5 -270q-57.5 -92 -174.5 -92q-62 0 -106 25.5q-44 25.5 -72 72.5q-28 47 -40.5 114q-12.5 67 -12.5 150zt0 0zM274 57q71 0 110 65q39 65 43 200l-305 0q2 -54 11.5 -102q9.5 -48 28 -84.5q18.5 -36.5 46 -57.5q27.5 -21 66.5 -21zt0 0zM274 643q-69 0 -108 -63q-39 -63 -44 -191l305 0q-3 52 -13 98q-10 46 -28.5 80.5q-18.5 34.5 -46 55t-65.5 20.5z" />
-<glyph unicode="&#1257;" horiz-adv-x="432" d="M37 250q0 131 46.5 196.5q46.5 65.5 132.5 65.5q92 0 135.5 -68.5q43.5 -68.5 43.5 -193.5q0 -133 -46.5 -197.5q-46.5 -64.5 -132.5 -64.5q-92 0 -135.5 68.5q-43.5 68.5 -43.5 193.5zt0 0zM320 279q-5 91 -33 129.5q-28 38.5 -71 38.5q-20 0 -38 -8.5q-18 -8.5 -32 -28q-14 -19.5 -23 -51.5q-9 -32 -11 -80zM112 220q3 -86 32.5 -126.5q29.5 -40.5 71.5 -40.5q19 0 37.5 8q18.5 8 32.5 27.5q14 19.5 23 51q9 31.5 11 80.5z" />
-<glyph unicode="&#1258;" horiz-adv-x="549" d="M43 350q0 178 57 270q57 92 174 92q63 0 107 -25.5q44 -25.5 71.5 -72.5q27.5 -47 40.5 -114q13 -67 13 -150q0 -178 -57.5 -270q-57.5 -92 -174.5 -92q-62 0 -106 25.5q-44 25.5 -72 72.5q-28 47 -40.5 114q-12.5 67 -12.5 150zt0 0zM274 57q71 0 110 65q39 65 43 200l-305 0q2 -54 11.5 -102q9.5 -48 28 -84.5q18.5 -36.5 46 -57.5q27.5 -21 66.5 -21zt0 0zM274 643q-69 0 -108 -63q-39 -63 -44 -191l305 0q-3 52 -13 98q-10 46 -28.5 80.5q-18.5 34.5 -46 55q-27.5 20.5 -65.5 20.5zt0 0zM149 794q0 21 12.5 34q12.5 13 34.5 13q21 0 33.5 -13q12.5 -13 12.5 -34q0 -21 -12.5 -33.5q-12.5 -12.5 -33.5 -12.5q-22 0 -34.5 12.5q-12.5 12.5 -12.5 33.5zt0 0zM307 794q0 21 12.5 34q12.5 13 33.5 13q22 0 34.5 -13q12.5 -13 12.5 -34q0 -21 -12.5 -33.5q-12.5 -12.5 -34.5 -12.5q-21 0 -33.5 12.5t-12.5 33.5z" />
-<glyph unicode="&#1259;" horiz-adv-x="432" d="M37 250q0 131 46.5 196.5q46.5 65.5 132.5 65.5q92 0 135.5 -68.5q43.5 -68.5 43.5 -193.5q0 -133 -46.5 -197.5q-46.5 -64.5 -132.5 -64.5q-92 0 -135.5 68.5q-43.5 68.5 -43.5 193.5zt0 0zM320 279q-5 91 -33 129.5q-28 38.5 -71 38.5q-20 0 -38 -8.5q-18 -8.5 -32 -28q-14 -19.5 -23 -51.5q-9 -32 -11 -80zM112 220q3 -86 32.5 -126.5q29.5 -40.5 71.5 -40.5q19 0 37.5 8q18.5 8 32.5 27.5q14 19.5 23 51q9 31.5 11 80.5zM94 633q0 23 11.5 36q11.5 13 31.5 13q20 0 31.5 -13q11.5 -13 11.5 -36q0 -21 -11.5 -34q-11.5 -13 -31.5 -13q-20 0 -31.5 13q-11.5 13 -11.5 34zt0 0zM253 633q0 23 11.5 36q11.5 13 31.5 13q20 0 31.5 -13q11.5 -13 11.5 -36q0 -21 -11.5 -34q-11.5 -13 -31.5 -13q-20 0 -31.5 13t-11.5 34z" />
-<glyph unicode="&#1260;" horiz-adv-x="465" d="M118 390h229q-5 127 -53.5 190q-48.5 63 -124.5 63q-38 0 -67 -9q-29 -9 -50 -22l-22 62q28 18 66.5 28q38.5 10 80.5 10q55 0 100 -19.5q45 -19.5 77 -62.5q32 -43 50 -112q18 -69 18 -167q0 -99 -20 -168.5q-20 -69.5 -55 -112.5q-35 -43 -82 -62.5q-47 -19.5 -102 -19.5q-41 0 -74.5 7q-33.5 7 -56.5 18l21 68q19 -10 50 -17q31 -7 64 -7q34 0 65.5 14.5q31.5 14.5 56.5 46q25 31.5 40.5 82q15.5 50.5 17.5 123.5l-229 0zM60 794q0 21 12.5 34q12.5 13 34.5 13q21 0 33.5 -13q12.5 -13 12.5 -34q0 -21 -12.5 -33.5q-12.5 -12.5 -33.5 -12.5q-22 0 -34.5 12.5q-12.5 12.5 -12.5 33.5zt0 0zM218 794q0 21 12.5 34q12.5 13 33.5 13q22 0 34.5 -13q12.5 -13 12.5 -34q0 -21 -12.5 -33.5q-12.5 -12.5 -34.5 -12.5q-21 0 -33.5 12.5t-12.5 33.5z" />
-<glyph unicode="&#1261;" horiz-adv-x="372" d="M94 283h166q-3 78 -31.5 121q-28.5 43 -80.5 43q-32 0 -56 -9q-24 -9 -39 -20l-25 57q23 17 56 27q33 10 76 10q90 0 132.5 -65q42.5 -65 42.5 -197q0 -131 -48.5 -196.5q-48.5 -65.5 -136.5 -65.5q-77 0 -122 24l20 64q19 -11 45 -17q26 -6 50 -6q111 0 117 168l-166 0zM37 633q0 23 11.5 36q11.5 13 31.5 13q20 0 31.5 -13q11.5 -13 11.5 -36q0 -21 -11.5 -34q-11.5 -13 -31.5 -13q-20 0 -31.5 13q-11.5 13 -11.5 34zt0 0zM196 633q0 23 11.5 36q11.5 13 31.5 13q20 0 31.5 -13q11.5 -13 11.5 -36q0 -21 -11.5 -34q-11.5 -13 -31.5 -13q-20 0 -31.5 13t-11.5 34z" />
-<glyph unicode="&#1262;" horiz-adv-x="448" d="M228 341l19 -89h5l16 92l104 356h77l-143 -455q-22 -70 -38.5 -118q-16.5 -48 -33 -77q-16.5 -29 -36.5 -42q-20 -13 -49 -13q-26 0 -43 5q-17 5 -32 16l22 64q16 -11 29 -13.5q13 -2.5 24 -2.5q22 0 37 30.5q15 30.5 26 86.5l-209 519h88zM109 843h259v-62l-259 0z" />
-<glyph unicode="&#1263;" horiz-adv-x="376" d="M183 177l21 -97h5l15 97l76 323h73l-119 -449q-14 -54 -28 -101q-14 -47 -30.5 -81.5q-16.5 -34.5 -37 -54q-20.5 -19.5 -48.5 -19.5q-28 0 -49 9l12 68q14 -5 28 -2q14 3 26.5 17q12.5 14 23 41.5q10.5 27.5 18.5 71.5l-162 500h82zM74 643h243v-59l-243 0z" />
-<glyph unicode="&#1264;" horiz-adv-x="448" d="M228 341l19 -89h5l16 92l104 356h77l-143 -455q-22 -70 -38.5 -118q-16.5 -48 -33 -77q-16.5 -29 -36.5 -42q-20 -13 -49 -13q-26 0 -43 5q-17 5 -32 16l22 64q16 -11 29 -13.5q13 -2.5 24 -2.5q22 0 37 30.5q15 30.5 26 86.5l-209 519h88zM111 794q0 21 12.5 34q12.5 13 34.5 13q21 0 33.5 -13q12.5 -13 12.5 -34q0 -21 -12.5 -33.5q-12.5 -12.5 -33.5 -12.5q-22 0 -34.5 12.5q-12.5 12.5 -12.5 33.5zt0 0zM269 794q0 21 12.5 34q12.5 13 33.5 13q22 0 34.5 -13q12.5 -13 12.5 -34q0 -21 -12.5 -33.5q-12.5 -12.5 -34.5 -12.5q-21 0 -33.5 12.5t-12.5 33.5z" />
-<glyph unicode="&#1265;" horiz-adv-x="376" d="M183 177l21 -97h5l15 97l76 323h73l-119 -449q-14 -54 -28 -101q-14 -47 -30.5 -81.5q-16.5 -34.5 -37 -54q-20.5 -19.5 -48.5 -19.5q-28 0 -49 9l12 68q14 -5 28 -2q14 3 26.5 17q12.5 14 23 41.5q10.5 27.5 18.5 71.5l-162 500h82zM75 633q0 23 11.5 36q11.5 13 31.5 13q20 0 31.5 -13q11.5 -13 11.5 -36q0 -21 -11.5 -34q-11.5 -13 -31.5 -13q-20 0 -31.5 13q-11.5 13 -11.5 34zt0 0zM234 633q0 23 11.5 36q11.5 13 31.5 13q20 0 31.5 -13q11.5 -13 11.5 -36q0 -21 -11.5 -34q-11.5 -13 -31.5 -13q-20 0 -31.5 13t-11.5 34z" />
-<glyph unicode="&#1266;" horiz-adv-x="448" d="M228 341l19 -89h5l16 92l104 356h77l-143 -455q-22 -70 -38.5 -118q-16.5 -48 -33 -77q-16.5 -29 -36.5 -42q-20 -13 -49 -13q-26 0 -43 5q-17 5 -32 16l22 64q16 -11 29 -13.5q13 -2.5 24 -2.5q22 0 37 30.5q15 30.5 26 86.5l-209 519h88zM190 850h81v-16l-80 -93h-52zM326 850h86v-16l-115 -93l-52 0z" />
-<glyph unicode="&#1267;" horiz-adv-x="376" d="M183 177l21 -97h5l15 97l76 323h73l-119 -449q-14 -54 -28 -101q-14 -47 -30.5 -81.5q-16.5 -34.5 -37 -54q-20.5 -19.5 -48.5 -19.5q-28 0 -49 9l12 68q14 -5 28 -2q14 3 26.5 17q12.5 14 23 41.5q10.5 27.5 18.5 71.5l-162 500h82zM152 700h69v-16l-58 -113h-39zM275 700h75v-16l-92 -113l-42 0z" />
-<glyph unicode="&#1268;" horiz-adv-x="487" d="M130 700v-244q0 -73 25 -101.5q25 -28.5 73 -28.5q35 0 67.5 13q32.5 13 52.5 34l0 327h75v-700h-75v300q-20 -15 -56 -29q-36 -14 -80 -14q-32 0 -60.5 8q-28.5 8 -50 28.5q-21.5 20.5 -34 55.5q-12.5 35 -12.5 90v261zM119 794q0 21 12.5 34q12.5 13 34.5 13q21 0 33.5 -13q12.5 -13 12.5 -34q0 -21 -12.5 -33.5q-12.5 -12.5 -33.5 -12.5q-22 0 -34.5 12.5q-12.5 12.5 -12.5 33.5zt0 0zM277 794q0 21 12.5 34q12.5 13 33.5 13q22 0 34.5 -13q12.5 -13 12.5 -34q0 -21 -12.5 -33.5q-12.5 -12.5 -34.5 -12.5q-21 0 -33.5 12.5t-12.5 33.5z" />
-<glyph unicode="&#1269;" horiz-adv-x="396" d="M108 500v-146q0 -25 2.5 -45q2.5 -20 9.5 -34.5q7 -14.5 20 -22q13 -7.5 34 -7.5q35 0 57 9q22 9 34 20l0 226h72v-500h-72v210q-12 -9 -37.5 -19.5q-25.5 -10.5 -68.5 -10.5q-29 0 -52 7.5q-23 7.5 -38.5 24.5q-15.5 17 -24 46q-8.5 29 -8.5 73v169zM64 633q0 23 11.5 36q11.5 13 31.5 13q20 0 31.5 -13q11.5 -13 11.5 -36q0 -21 -11.5 -34q-11.5 -13 -31.5 -13q-20 0 -31.5 13q-11.5 13 -11.5 34zt0 0zM223 633q0 23 11.5 36q11.5 13 31.5 13q20 0 31.5 -13q11.5 -13 11.5 -36q0 -21 -11.5 -34q-11.5 -13 -31.5 -13q-20 0 -31.5 13t-11.5 34z" />
-<glyph unicode="&#1270;" horiz-adv-x="357" d="M370 631h-231v-562h76v-198h-52l-12 129h-87v700l306 0z" />
-<glyph unicode="&#1271;" horiz-adv-x="296" d="M59 500h238v-65h-166v-370h62v-192h-49l-13 127l-72 0z" />
-<glyph unicode="&#1272;" horiz-adv-x="622" d="M483 700h75v-700h-75zM64 700h75v-272q9 2 30 5.5q21 3.5 41 3.5q39 0 74.5 -9q35.5 -9 62.5 -32.5q27 -23.5 43 -64.5q16 -41 16 -104q0 -122 -56.5 -178.5q-56.5 -56.5 -157.5 -56.5q-23 0 -59.5 2.5q-36.5 2.5 -68.5 11.5zM199 61q60 0 94 39q34 39 34 120q0 44 -10 72.5q-10 28.5 -27.5 45.5q-17.5 17 -41.5 23.5q-24 6.5 -52 6.5q-14 0 -31.5 -3q-17.5 -3 -25.5 -6l0 -291q20 -7 60 -7zt0 0zM186 794q0 21 12.5 34q12.5 13 34.5 13q21 0 33.5 -13q12.5 -13 12.5 -34q0 -21 -12.5 -33.5q-12.5 -12.5 -33.5 -12.5q-22 0 -34.5 12.5q-12.5 12.5 -12.5 33.5zt0 0zM344 794q0 21 12.5 34q12.5 13 33.5 13q22 0 34.5 -13q12.5 -13 12.5 -34q0 -21 -12.5 -33.5q-12.5 -12.5 -34.5 -12.5q-21 0 -33.5 12.5t-12.5 33.5z" />
-<glyph unicode="&#1273;" horiz-adv-x="538" d="M131 65q30 -6 55 -6q48 0 67 25.5q19 25.5 19 73.5q0 45 -18.5 70.5q-18.5 25.5 -65.5 25.5q-13 0 -28 -1.5q-15 -1.5 -29 -5.5zM131 309q20 4 38 5.5q18 1.5 34 1.5q41 0 69 -11.5q28 -11.5 44.5 -31.5q16.5 -20 23.5 -47.5q7 -27.5 7 -58.5q0 -91 -40.5 -132q-40.5 -41 -134.5 -41q-58 0 -113 6l0 500h72zM407 500h72v-500h-72zM147 633q0 23 11.5 36q11.5 13 31.5 13q20 0 31.5 -13q11.5 -13 11.5 -36q0 -21 -11.5 -34q-11.5 -13 -31.5 -13q-20 0 -31.5 13q-11.5 13 -11.5 34zt0 0zM306 633q0 23 11.5 36q11.5 13 31.5 13q20 0 31.5 -13q11.5 -13 11.5 -36q0 -21 -11.5 -34q-11.5 -13 -31.5 -13q-20 0 -31.5 13t-11.5 34z" />
-<glyph unicode="&#1276;" horiz-adv-x="498" d="M382 -45q0 50 -12.5 87.5q-12.5 37.5 -28.5 69.5l-69 139l-24 62l-21 -62l-124 -251h-84l184 356l-168 344h90l109 -237l20 -59l20 59l115 237h83l-174 -337l109 -215q50 -98 50 -179q0 -102 -35.5 -144q-35.5 -42 -110.5 -33l0 65q24 0 38 8q14 8 21.5 21.5q7.5 13.5 9.5 31.5t2 37z" />
-<glyph unicode="&#1277;" horiz-adv-x="414" d="M331 126q23 -42 36.5 -83q13.5 -41 13.5 -79q0 -96 -38 -138.5q-38 -42.5 -112 -31.5l0 65q45 -1 61.5 21q16.5 22 16.5 67q0 41 -13 77q-13 36 -29 65l-36 63l-25 59l-24 -59l-82 -152h-81l142 256l-132 244h88l72 -138l22 -62l23 62l74 138h81l-134 -240z" />
-<glyph unicode="&#1296;" horiz-adv-x="447" d="M290 333q-10 0 -17.5 0q-7.5 0 -16.5 -1q-59 -5 -93.5 -34q-34.5 -29 -34.5 -97q0 -71 36.5 -107.5q36.5 -36.5 98.5 -36.5q34 0 66.5 10.5q32.5 10.5 49.5 21.5l23 -61q-21 -14 -59.5 -27q-38.5 -13 -91.5 -13q-92 0 -147 51q-55 51 -55 158q0 75 31.5 118q31.5 43 86.5 55l0 4q-26 10 -45 28q-19 18 -31.5 40.5q-12.5 22.5 -18.5 47.5q-6 25 -6 50q0 46 14.5 78.5q14.5 32.5 40 53.5q25.5 21 59.5 30.5q34 9.5 72 9.5q45 0 84 -10.5q39 -10.5 58 -24.5l-21 -64q-22 12 -53 21q-31 9 -60 9q-54 0 -84.5 -25q-30.5 -25 -30.5 -85q0 -29 9 -51q9 -22 24 -38.5q15 -16.5 34.5 -27q19.5 -10.5 39.5 -14.5q13 -2 32 -3q19 -1 33 -1h14l0 -65z" />
-<glyph unicode="&#1297;" horiz-adv-x="353" d="M210 225q-54 0 -77.5 -21.5q-23.5 -21.5 -23.5 -57.5q0 -38 25 -64q25 -26 74 -26q30 0 55.5 7.5q25.5 7.5 42.5 18.5l19 -60q-19 -12 -48.5 -21.5q-29.5 -9.5 -71.5 -9.5q-85 0 -126.5 40q-41.5 40 -41.5 109q0 51 19.5 80q19.5 29 64.5 44l0 4q-33 14 -51 44q-18 30 -18 71q0 62 36.5 93q36.5 31 98.5 31q47 0 79.5 -9.5q32.5 -9.5 57.5 -25.5l-22 -58q-17 11 -40.5 19.5q-23.5 8.5 -53.5 8.5q-84 0 -84 -76q0 -16 6.5 -30.5q6.5 -14.5 17.5 -25.5q11 -11 24.5 -17.5q13.5 -6.5 27.5 -6.5h55l0 -61z" />
-<glyph unicode="&#1298;" horiz-adv-x="503" d="M439 -28q0 -103 -32.5 -147.5q-32.5 -44.5 -107.5 -34.5l0 65q22 0 35 8q13 8 20 25.5q7 17.5 8.5 45q1.5 27.5 1.5 66.5v631h-158q-8 -201 -21 -336q-13 -135 -40 -208q-18 -48 -42.5 -70q-24.5 -22 -56.5 -22q-30 0 -50 10l12 68q9 -3 18 -3q9 0 18 5q9 5 17.5 16q8.5 11 16.5 31q11 27 20.5 72.5q9.5 45.5 17 115.5q7.5 70 12 166q4.5 96 6.5 224l305 0z" />
-<glyph unicode="&#1299;" horiz-adv-x="407" d="M348 500v-529q0 -92 -27.5 -136q-27.5 -44 -87.5 -43q-6 0 -12 0.5q-6 0.5 -13 1.5l0 63q45 -1 56.5 34.5q11.5 35.5 11.5 107.5v436h-109q-3 -85 -8 -164.5q-5 -79.5 -17.5 -140.5q-12.5 -61 -35.5 -97.5q-23 -36.5 -61 -36.5q-17 0 -29 2q-12 2 -22 7l11 63q21 -6 37.5 2.5q16.5 8.5 28.5 52q12 43.5 19.5 133q7.5 89.5 10.5 244.5z" />
-<glyph unicode="&#1308;" horiz-adv-x="672" d="M182 237l12 -117h2l12 119l112 461h43l112 -462l12 -118h1l14 119l89 461h75l-156 -711h-46l-111 461l-14 107h-3l-14 -108l-111 -460h-47l-159 711l81 0z" />
-<glyph unicode="&#1309;" horiz-adv-x="590" d="M326 500l89 -292l18 -96h2l15 98l68 290h68l-133 -511h-41l-101 328l-14 84h-2l-14 -85l-98 -327h-41l-137 511h77l77 -291l12 -97h2l18 99l82 289z" />
-<glyph unicode="&#1316;" horiz-adv-x="558" d="M387 631h-248v-631h-75v700h398v-631h75v-198h-52l-12 129l-86 0z" />
-<glyph unicode="&#1317;" horiz-adv-x="448" d="M299 435h-168v-435h-72v500h312v-435h61v-192h-49l-13 127l-71 0z" />
-<glyph unicode="&#1318;" horiz-adv-x="521" d="M357 236q0 71 -23 104.5q-23 33.5 -74 33.5q-36 0 -68.5 -12.5q-32.5 -12.5 -52.5 -32.5l0 -329h-75v700h75v-300q21 14 57 28.5q36 14.5 82 14.5q35 0 63.5 -9q28.5 -9 48.5 -31.5q20 -22.5 31 -59.5q11 -37 11 -94v-180h73v-198h-52l-12 129l-84 0z" />
-<glyph unicode="&#1319;" horiz-adv-x="467" d="M387 65h60v-192h-49l-13 127h-70v304q0 70 -16.5 106.5q-16.5 36.5 -65.5 36.5q-35 0 -63.5 -25q-28.5 -25 -38.5 -63l0 -359h-72v700h72v-247h3q20 26 49.5 42.5q29.5 16.5 73.5 16.5q33 0 57.5 -9q24.5 -9 40.5 -31q16 -22 24 -58.5q8 -36.5 8 -90.5z" />
-<glyph unicode="&#7728;" horiz-adv-x="493" d="M175 324h-36v-324h-75v700h75v-326l35 14l182 312h86l-183 -302l-35 -32l41 -40l203 -326h-95zM260 870h99v-21l-131 -97l-61 0z" />
-<glyph unicode="&#7729;" horiz-adv-x="388" d="M168 225h-37v-225h-72v700h72v-426l33 14l117 212h83l-118 -202l-35 -32l41 -39l129 -227h-87zM239 720h78v-21l-82 -128l-43 0z" />
-<glyph unicode="&#7742;" horiz-adv-x="637" d="M498 460l9 106h-4l-32 -99l-141 -304h-25l-148 304l-31 99h-4l14 -106v-460h-72v700h63l169 -344l25 -82h2l24 83l160 343h66v-700h-75zM362 870h99v-21l-131 -97l-61 0z" />
-<glyph unicode="&#7743;" horiz-adv-x="651" d="M293 0v297q0 40 -2.5 68.5q-2.5 28.5 -10.5 46.5q-8 18 -22 26.5q-14 8.5 -37 8.5q-34 0 -57.5 -26.5q-23.5 -26.5 -32.5 -60.5l0 -360h-72v500h51l13 -53h3q21 29 50 47q29 18 74 18q38 0 62.5 -16.5q24.5 -16.5 38.5 -58.5q18 35 51.5 55q33.5 20 73.5 20q33 0 56.5 -8.5q23.5 -8.5 38 -30q14.5 -21.5 21.5 -57q7 -35.5 7 -89.5v-327h-72v318q0 65 -12.5 97q-12.5 32 -57.5 32q-38 0 -60.5 -23.5q-22.5 -23.5 -31.5 -63.5l0 -360zM343 720h78v-21l-82 -128l-43 0z" />
-<glyph unicode="&#7764;" horiz-adv-x="451" d="M64 693q32 9 68 12q36 3 71 3q40 0 79 -9q39 -9 70.5 -33q31.5 -24 51 -66q19.5 -42 19.5 -107q0 -63 -18.5 -107q-18.5 -44 -49 -71.5q-30.5 -27.5 -70 -40q-39.5 -12.5 -81.5 -12.5q-4 0 -13 0q-9 0 -19 0.5q-10 0.5 -19.5 1.5q-9.5 1 -13.5 2l0 -266h-75zM207 639q-20 0 -38.5 -1.5q-18.5 -1.5 -29.5 -4.5l0 -298q4 -2 12.5 -2.5q8.5 -0.5 17.5 -1q9 -0.5 17.5 -0.5q8.5 0 12.5 0q28 0 54 7q26 7 46 25.5q20 18.5 32.5 50q12.5 31.5 12.5 79.5q0 42 -11.5 70q-11.5 28 -30 45q-18.5 17 -43.5 24q-25 7 -52 7zt0 0zM257 870h99v-21l-131 -97l-61 0z" />
-<glyph unicode="&#7765;" horiz-adv-x="435" d="M59 500h51l11 -54h4q37 66 116 66q79 0 118.5 -59q39.5 -59 39.5 -193q0 -63 -13 -113.5q-13 -50.5 -37 -86q-24 -35.5 -58.5 -54q-34.5 -18.5 -76.5 -18.5q-29 0 -46 3.5q-17 3.5 -37 14.5l0 -206h-72zM131 79q14 -12 31.5 -19q17.5 -7 46.5 -7q53 0 84 54q31 54 31 154q0 42 -5.5 76q-5.5 34 -17.5 58.5q-12 24.5 -30.5 38q-18.5 13.5 -45.5 13.5q-73 0 -94 -89zM232 720h78v-21l-82 -128l-43 0z" />
-<glyph unicode="&#7838;" horiz-adv-x="522" d="M345 613q-16 16 -47 24.5q-31 8.5 -63 8.5q-34 0 -53 -13.5q-19 -13.5 -28.5 -36.5q-9.5 -23 -12 -54q-2.5 -31 -2.5 -66v-476h-76v502q0 47 8 86q8 39 28 66.5q20 27.5 54 42.5q34 15 86 15q66 0 115.5 -21q49.5 -21 84.5 -53l-125 -207l-27 -29v-2l26 7q78 -2 120 -53q42 -51 42 -141q0 -108 -48 -166.5q-48 -58.5 -138 -58.5q-8 0 -22 1q-14 1 -29 3q-15 2 -28.5 5.5q-13.5 3.5 -22.5 9.5l12 67q7 -5 18.5 -9q11.5 -4 24 -6q12.5 -2 24.5 -3q12 -1 21 -1q53 0 81 41.5q28 41.5 28 107.5q0 70 -33.5 106.5q-33.5 36.5 -102.5 36.5h-45l0 54z" />
-<glyph unicode="&#8209;" horiz-adv-x="291" d="M47 320h197v-69l-197 0z" />
-<glyph unicode="&#8211;" horiz-adv-x="530" d="M93 322h344v-69l-344 0z" />
-<glyph unicode="&#8212;" horiz-adv-x="662" d="M95 322h472v-69l-472 0z" />
-<glyph unicode="&#8216;" horiz-adv-x="162" d="M130 620q0 -23 -12.5 -36.5q-12.5 -13.5 -32.5 -13.5q-23 0 -38.5 17q-15.5 17 -15.5 52q0 33 8.5 57q8.5 24 20.5 41q12 17 24.5 27q12.5 10 21.5 15l23 -33q-17 -12 -29.5 -32q-12.5 -20 -11.5 -47q19 3 30.5 -10.5t11.5 -36.5z" />
-<glyph unicode="&#8217;" horiz-adv-x="162" d="M31 659q0 23 13 36q13 13 33 13q24 0 39 -16.5q15 -16.5 15 -50.5q0 -32 -8 -56q-8 -24 -19.5 -40.5q-11.5 -16.5 -24.5 -27q-13 -10.5 -22 -15.5l-23 30q17 11 29.5 31.5q12.5 20.5 11.5 47.5q-18 -3 -31 10t-13 38z" />
-<glyph unicode="&#8218;" horiz-adv-x="162" d="M31 49q0 23 13 36q13 13 33 13q24 0 39 -16.5q15 -16.5 15 -50.5q0 -32 -8 -56q-8 -24 -19.5 -40.5q-11.5 -16.5 -24.5 -27q-13 -10.5 -22 -15.5l-23 30q17 11 29.5 31.5q12.5 20.5 11.5 47.5q-18 -3 -31 10t-13 38z" />
-<glyph unicode="&#8220;" horiz-adv-x="288" d="M256 620q0 -23 -12.5 -36.5q-12.5 -13.5 -32.5 -13.5q-23 0 -38.5 17q-15.5 17 -15.5 52q0 33 8.5 57q8.5 24 20.5 41q12 17 24.5 27q12.5 10 21.5 15l23 -33q-17 -12 -29.5 -32q-12.5 -20 -11.5 -47q19 3 30.5 -10.5q11.5 -13.5 11.5 -36.5zt0 0zM130 620q0 -23 -12.5 -36.5q-12.5 -13.5 -32.5 -13.5q-23 0 -38.5 17q-15.5 17 -15.5 52q0 33 8.5 57q8.5 24 20.5 41q12 17 24.5 27q12.5 10 21.5 15l23 -33q-17 -12 -29.5 -32q-12.5 -20 -11.5 -47q19 3 30.5 -10.5t11.5 -36.5z" />
-<glyph unicode="&#8221;" horiz-adv-x="288" d="M157 658q0 23 13 36q13 13 33 13q24 0 39 -16.5q15 -16.5 15 -50.5q0 -32 -8 -56q-8 -24 -19.5 -40.5q-11.5 -16.5 -24.5 -27q-13 -10.5 -22 -15.5l-23 30q17 11 29.5 31.5q12.5 20.5 11.5 47.5q-18 -3 -31 10q-13 13 -13 38zt0 0zM31 658q0 23 13 36q13 13 33 13q24 0 39 -16.5q15 -16.5 15 -50.5q0 -32 -8 -56q-8 -24 -19.5 -40.5q-11.5 -16.5 -24.5 -27q-13 -10.5 -22 -15.5l-23 30q17 11 29.5 31.5q12.5 20.5 11.5 47.5q-18 -3 -31 10t-13 38z" />
-<glyph unicode="&#8222;" horiz-adv-x="288" d="M157 49q0 23 13 36q13 13 33 13q24 0 39 -16.5q15 -16.5 15 -50.5q0 -32 -8 -56q-8 -24 -19.5 -40.5q-11.5 -16.5 -24.5 -27q-13 -10.5 -22 -15.5l-23 30q17 11 29.5 31.5q12.5 20.5 11.5 47.5q-18 -3 -31 10q-13 13 -13 38zt0 0zM31 49q0 23 13 36q13 13 33 13q24 0 39 -16.5q15 -16.5 15 -50.5q0 -32 -8 -56q-8 -24 -19.5 -40.5q-11.5 -16.5 -24.5 -27q-13 -10.5 -22 -15.5l-23 30q17 11 29.5 31.5q12.5 20.5 11.5 47.5q-18 -3 -31 10t-13 38z" />
-<glyph unicode="&#8224;" horiz-adv-x="394" d="M32 499h103l36 -11l-10 47v165h72v-165l-10 -47l36 11h103v-65h-104l-35 11l10 -43v-402l-13 -200h-47l-12 201v401l10 43l-36 -11l-103 0z" />
-<glyph unicode="&#8225;" horiz-adv-x="394" d="M161 403l10 42l-36 -11h-103v65h103l36 -11l-10 46v166h72v-166l-10 -46l36 11h103v-65h-104l-35 11l10 -42v-130l-10 -42l35 11h104v-65h-103l-36 11l10 -46v-142l-13 -200h-46l-13 201v141l10 46l-36 -11h-103v65h103l36 -11l-10 42z" />
-<glyph unicode="&#8226;" horiz-adv-x="363" d="M68 311q0 63 31.5 101q31.5 38 82.5 38q50 0 82 -36.5q32 -36.5 32 -102.5q0 -66 -32 -102.5q-32 -36.5 -82 -36.5q-51 0 -82.5 36.5t-31.5 102.5z" />
-<glyph unicode="&#8230;" horiz-adv-x="657" d="M508 45q0 28 13.5 42q13.5 14 36.5 14q23 0 36.5 -14q13.5 -14 13.5 -42q0 -29 -13.5 -43q-13.5 -14 -36.5 -14q-23 0 -36.5 14q-13.5 14 -13.5 43zt0 0zM284 45q0 28 13.5 42q13.5 14 36.5 14q23 0 36.5 -14q13.5 -14 13.5 -42q0 -29 -13.5 -43q-13.5 -14 -36.5 -14q-23 0 -36.5 14q-13.5 14 -13.5 43zt0 0zM61 45q0 28 13.5 42q13.5 14 36.5 14q23 0 36.5 -14q13.5 -14 13.5 -42q0 -29 -13.5 -43q-13.5 -14 -36.5 -14q-23 0 -36.5 14t-13.5 43z" />
-<glyph unicode="&#8240;" horiz-adv-x="948" d="M55 542q0 46 9.5 78.5q9.5 32.5 27 53q17.5 20.5 41 29.5q23.5 9 50.5 9q27 0 50.5 -8.5q23.5 -8.5 41 -28q17.5 -19.5 27 -52.5q9.5 -33 9.5 -81q0 -48 -9.5 -81q-9.5 -33 -27 -52.5q-17.5 -19.5 -41 -28q-23.5 -8.5 -50.5 -8.5q-27 0 -50.5 8.5q-23.5 8.5 -41 28q-17.5 19.5 -27 52.5q-9.5 33 -9.5 81zt0 0zM120 542q0 -65 17.5 -90q17.5 -25 45.5 -25q14 0 25.5 5q11.5 5 19.5 17.5q8 12.5 12.5 35q4.5 22.5 4.5 57.5q0 34 -4.5 56.5q-4.5 22.5 -12.5 35.5q-8 13 -19.5 18q-11.5 5 -25.5 5q-15 0 -26.5 -5q-11.5 -5 -19.5 -18q-8 -13 -12.5 -35.5q-4.5 -22.5 -4.5 -56.5zt0 0zM353 170q0 46 9.5 78.5q9.5 32.5 27 53q17.5 20.5 41 29.5q23.5 9 50.5 9q27 0 50.5 -8.5q23.5 -8.5 41 -28q17.5 -19.5 27 -52.5q9.5 -33 9.5 -81q0 -48 -9.5 -81q-9.5 -33 -27 -52.5q-17.5 -19.5 -41 -28q-23.5 -8.5 -50.5 -8.5q-27 0 -50.5 8.5q-23.5 8.5 -41 28q-17.5 19.5 -27 52.5q-9.5 33 -9.5 81zt0 0zM418 170q0 -65 17.5 -90q17.5 -25 45.5 -25q14 0 25.5 5q11.5 5 19.5 17.5q8 12.5 12.5 35q4.5 22.5 4.5 57.5q0 34 -4.5 56.5q-4.5 22.5 -12.5 35.5q-8 13 -19.5 18q-11.5 5 -25.5 5q-15 0 -26.5 -5q-11.5 -5 -19.5 -18q-8 -13 -12.5 -35.5q-4.5 -22.5 -4.5 -56.5zt0 0zM649 170q0 46 9.5 78.5q9.5 32.5 27 53q17.5 20.5 41 29.5q23.5 9 50.5 9q27 0 50.5 -8.5q23.5 -8.5 41 -28q17.5 -19.5 27 -52.5q9.5 -33 9.5 -81q0 -48 -9.5 -81q-9.5 -33 -27 -52.5q-17.5 -19.5 -41 -28q-23.5 -8.5 -50.5 -8.5q-27 0 -50.5 8.5q-23.5 8.5 -41 28q-17.5 19.5 -27 52.5q-9.5 33 -9.5 81zt0 0zM714 170q0 -65 17.5 -90q17.5 -25 45.5 -25q14 0 25.5 5q11.5 5 19.5 17.5q8 12.5 12.5 35q4.5 22.5 4.5 57.5q0 34 -4.5 56.5q-4.5 22.5 -12.5 35.5q-8 13 -19.5 18q-11.5 5 -25.5 5q-15 0 -26.5 -5q-11.5 -5 -19.5 -18q-8 -13 -12.5 -35.5q-4.5 -22.5 -4.5 -56.5zt0 0zM521 713l47 -30l-426 -695l-47 30z" />
-<glyph unicode="&#8249;" horiz-adv-x="242" d="M30 259l129 230l50 -33l-82 -155l-38 -41l38 -36l87 -152l-50 -34z" />
-<glyph unicode="&#8250;" horiz-adv-x="242" d="M212 268l-128 -230l-50 33l81 155l39 41l-39 36l-87 151l51 35z" />
-<glyph unicode="&#8260;" horiz-adv-x="149" d="M243 713l49 -27l-384 -698l-50 28z" />
-<glyph unicode="&#8321;" horiz-adv-x="330" d="M63 -43h84v257l6 36l-22 -28l-60 -40l-26 42l125 103h41v-370h75v-57l-223 0z" />
-<glyph unicode="&#8322;" horiz-adv-x="330" d="M267 215q0 -32 -8.5 -62.5q-8.5 -30.5 -23 -60q-14.5 -29.5 -34 -58q-19.5 -28.5 -40.5 -56.5l-37 -32v-2l46 15h112v-59h-238v32q21 21 48.5 53.5q27.5 32.5 52.5 69.5q25 37 42 76q17 39 17 74q0 30 -15.5 46q-15.5 16 -38.5 16q-22 0 -42.5 -7q-20.5 -7 -34.5 -17l-20 52q20 16 49.5 24q29.5 8 58.5 8q51 0 78.5 -29t27.5 -83z" />
-<glyph unicode="&#8323;" horiz-adv-x="330" d="M141 -50q38 0 57.5 20.5q19.5 20.5 18.5 57.5q1 32 -16.5 52q-17.5 20 -58.5 20h-44v23l77 119l29 27l-41 -6h-105v57h211v-32l-82 -126l-21 -17v-3l20 3q45 0 70.5 -31.5q25.5 -31.5 24.5 -85.5q1 -61 -36.5 -98q-37.5 -37 -97.5 -37q-29 0 -51 5q-22 5 -39 13l13 56q15 -8 32.5 -12.5t38.5 -4.5z" />
-<glyph unicode="&#8324;" horiz-adv-x="330" d="M315 -6h-65v-96h-61v96h-165v34l181 300h45v-278h65zM189 175l7 53h-4l-18 -50l-59 -102l-27 -30l41 4l60 0z" />
-<glyph unicode="&#8364;" horiz-adv-x="450" d="M28 453h50q10 73 31 121q21 48 51 78.5q30 30.5 66.5 45q36.5 14.5 77.5 14.5q41 0 70.5 -5.5q29.5 -5.5 52.5 -16.5l-20 -66q-19 9 -43 14q-24 5 -58 5q-27 0 -51 -10q-24 -10 -44 -31.5q-20 -21.5 -35 -56.5q-15 -35 -23 -92l223 0l-15 -63h-214q-1 -8 -1 -20q0 -12 0 -20q0 -10 0 -16q0 -6 1 -15l198 0l-15 -62h-178q14 -105 56 -152.5q42 -47.5 108 -47.5q63 0 102 28l17 -60q-24 -20 -60 -28.5q-36 -8.5 -73 -8.5q-92 0 -151 63q-59 63 -75 206l-64 0l16 62h43v31q0 8 0 20q0 12 1 20l-60 0z" />
-<glyph unicode="&#8372;" horiz-adv-x="450" d="M376 317v-62h-183q-17 -21 -32 -56.5q-15 -35.5 -15 -67.5q0 -35 21 -56.5q21 -21.5 72 -21.5q38 0 62.5 7.5q24.5 7.5 42.5 20.5l23 -59q-18 -14 -51.5 -24q-33.5 -10 -90.5 -10q-77 0 -115.5 35q-38.5 35 -38.5 98q0 19 5 39.5q5 20.5 12 39q7 18.5 15 33q8 14.5 13 22.5l-75 0v62zM41 388v62h188q20 26 32.5 60q12.5 34 12.5 65q0 35 -18.5 53.5q-18.5 18.5 -62.5 18.5q-32 0 -53.5 -8q-21.5 -8 -40.5 -19l-24 62q24 14 52.5 22q28.5 8 79.5 8q139 0 139 -125q0 -38 -13 -74.5q-13 -36.5 -30 -62.5l73 0l0 -62z" />
-<glyph unicode="&#8374;" horiz-adv-x="450" d="M29 334h59v359q31 9 66.5 12q35.5 3 70.5 3q38 0 74.5 -9q36.5 -9 64.5 -33q28 -24 45 -65q17 -41 17 -105q0 -63 -17.5 -105.5q-17.5 -42.5 -46.5 -68.5q-29 -26 -66.5 -37q-37.5 -11 -77.5 -11l-57 -1v-71h133v-60h-133v-142h-73v142h-59v60h59v72h-59zM161 337h57q24 0 47.5 6.5q23.5 6.5 42 24.5q18.5 18 30 48.5q11.5 30.5 11.5 78.5q0 41 -9.5 69q-9.5 28 -26 45.5q-16.5 17.5 -38.5 25q-22 7.5 -47 7.5q-20 0 -38 -1q-18 -1 -29 -4z" />
-<glyph unicode="&#8375;" horiz-adv-x="450" d="M29 334h59v359q31 9 66.5 12q35.5 3 70.5 3q38 0 74.5 -9q36.5 -9 64.5 -33q28 -24 45 -65q17 -41 17 -105q0 -63 -17.5 -105.5q-17.5 -42.5 -46.5 -68.5q-29 -26 -66.5 -37q-37.5 -11 -77.5 -11l-57 -1v-71h133v-60h-133v-142h-73v142h-59v60h59v72h-59zM161 337h57q24 0 47.5 6.5q23.5 6.5 42 24.5q18.5 18 30 48.5q11.5 30.5 11.5 78.5q0 41 -9.5 69q-9.5 28 -26 45.5q-16.5 17.5 -38.5 25q-22 7.5 -47 7.5q-20 0 -38 -1q-18 -1 -29 -4z" />
-<glyph unicode="&#8377;" horiz-adv-x="450" d="M29 334h59v359q31 9 66.5 12q35.5 3 70.5 3q38 0 74.5 -9q36.5 -9 64.5 -33q28 -24 45 -65q17 -41 17 -105q0 -63 -17.5 -105.5q-17.5 -42.5 -46.5 -68.5q-29 -26 -66.5 -37q-37.5 -11 -77.5 -11l-57 -1v-71h133v-60h-133v-142h-73v142h-59v60h59v72h-59zM161 337h57q24 0 47.5 6.5q23.5 6.5 42 24.5q18.5 18 30 48.5q11.5 30.5 11.5 78.5q0 41 -9.5 69q-9.5 28 -26 45.5q-16.5 17.5 -38.5 25q-22 7.5 -47 7.5q-20 0 -38 -1q-18 -1 -29 -4z" />
-<glyph unicode="&#8378;" horiz-adv-x="450" d="M29 334h59v359q31 9 66.5 12q35.5 3 70.5 3q38 0 74.5 -9q36.5 -9 64.5 -33q28 -24 45 -65q17 -41 17 -105q0 -63 -17.5 -105.5q-17.5 -42.5 -46.5 -68.5q-29 -26 -66.5 -37q-37.5 -11 -77.5 -11l-57 -1v-71h133v-60h-133v-142h-73v142h-59v60h59v72h-59zM161 337h57q24 0 47.5 6.5q23.5 6.5 42 24.5q18.5 18 30 48.5q11.5 30.5 11.5 78.5q0 41 -9.5 69q-9.5 28 -26 45.5q-16.5 17.5 -38.5 25q-22 7.5 -47 7.5q-20 0 -38 -1q-18 -1 -29 -4z" />
-<glyph unicode="&#8379;" horiz-adv-x="450" d="M29 334h59v359q31 9 66.5 12q35.5 3 70.5 3q38 0 74.5 -9q36.5 -9 64.5 -33q28 -24 45 -65q17 -41 17 -105q0 -63 -17.5 -105.5q-17.5 -42.5 -46.5 -68.5q-29 -26 -66.5 -37q-37.5 -11 -77.5 -11l-57 -1v-71h133v-60h-133v-142h-73v142h-59v60h59v72h-59zM161 337h57q24 0 47.5 6.5q23.5 6.5 42 24.5q18.5 18 30 48.5q11.5 30.5 11.5 78.5q0 41 -9.5 69q-9.5 28 -26 45.5q-16.5 17.5 -38.5 25q-22 7.5 -47 7.5q-20 0 -38 -1q-18 -1 -29 -4z" />
-<glyph unicode="&#8380;" horiz-adv-x="450" d="M29 334h59v359q31 9 66.5 12q35.5 3 70.5 3q38 0 74.5 -9q36.5 -9 64.5 -33q28 -24 45 -65q17 -41 17 -105q0 -63 -17.5 -105.5q-17.5 -42.5 -46.5 -68.5q-29 -26 -66.5 -37q-37.5 -11 -77.5 -11l-57 -1v-71h133v-60h-133v-142h-73v142h-59v60h59v72h-59zM161 337h57q24 0 47.5 6.5q23.5 6.5 42 24.5q18.5 18 30 48.5q11.5 30.5 11.5 78.5q0 41 -9.5 69q-9.5 28 -26 45.5q-16.5 17.5 -38.5 25q-22 7.5 -47 7.5q-20 0 -38 -1q-18 -1 -29 -4z" />
-<glyph unicode="&#8381;" horiz-adv-x="450" d="M29 334h59v359q31 9 66.5 12q35.5 3 70.5 3q38 0 74.5 -9q36.5 -9 64.5 -33q28 -24 45 -65q17 -41 17 -105q0 -63 -17.5 -105.5q-17.5 -42.5 -46.5 -68.5q-29 -26 -66.5 -37q-37.5 -11 -77.5 -11l-57 -1v-71h133v-60h-133v-142h-73v142h-59v60h59v72h-59zM161 337h57q24 0 47.5 6.5q23.5 6.5 42 24.5q18.5 18 30 48.5q11.5 30.5 11.5 78.5q0 41 -9.5 69q-9.5 28 -26 45.5q-16.5 17.5 -38.5 25q-22 7.5 -47 7.5q-20 0 -38 -1q-18 -1 -29 -4z" />
-<glyph unicode="&#8382;" horiz-adv-x="450" d="M29 334h59v359q31 9 66.5 12q35.5 3 70.5 3q38 0 74.5 -9q36.5 -9 64.5 -33q28 -24 45 -65q17 -41 17 -105q0 -63 -17.5 -105.5q-17.5 -42.5 -46.5 -68.5q-29 -26 -66.5 -37q-37.5 -11 -77.5 -11l-57 -1v-71h133v-60h-133v-142h-73v142h-59v60h59v72h-59zM161 337h57q24 0 47.5 6.5q23.5 6.5 42 24.5q18.5 18 30 48.5q11.5 30.5 11.5 78.5q0 41 -9.5 69q-9.5 28 -26 45.5q-16.5 17.5 -38.5 25q-22 7.5 -47 7.5q-20 0 -38 -1q-18 -1 -29 -4z" />
-<glyph unicode="&#8383;" horiz-adv-x="450" d="M29 334h59v359q31 9 66.5 12q35.5 3 70.5 3q38 0 74.5 -9q36.5 -9 64.5 -33q28 -24 45 -65q17 -41 17 -105q0 -63 -17.5 -105.5q-17.5 -42.5 -46.5 -68.5q-29 -26 -66.5 -37q-37.5 -11 -77.5 -11l-57 -1v-71h133v-60h-133v-142h-73v142h-59v60h59v72h-59zM161 337h57q24 0 47.5 6.5q23.5 6.5 42 24.5q18.5 18 30 48.5q11.5 30.5 11.5 78.5q0 41 -9.5 69q-9.5 28 -26 45.5q-16.5 17.5 -38.5 25q-22 7.5 -47 7.5q-20 0 -38 -1q-18 -1 -29 -4z" />
-<glyph unicode="&#8384;" horiz-adv-x="450" d="M29 334h59v359q31 9 66.5 12q35.5 3 70.5 3q38 0 74.5 -9q36.5 -9 64.5 -33q28 -24 45 -65q17 -41 17 -105q0 -63 -17.5 -105.5q-17.5 -42.5 -46.5 -68.5q-29 -26 -66.5 -37q-37.5 -11 -77.5 -11l-57 -1v-71h133v-60h-133v-142h-73v142h-59v60h59v72h-59zM161 337h57q24 0 47.5 6.5q23.5 6.5 42 24.5q18.5 18 30 48.5q11.5 30.5 11.5 78.5q0 41 -9.5 69q-9.5 28 -26 45.5q-16.5 17.5 -38.5 25q-22 7.5 -47 7.5q-20 0 -38 -1q-18 -1 -29 -4z" />
-<glyph unicode="&#8385;" horiz-adv-x="450" d="M29 334h59v359q31 9 66.5 12q35.5 3 70.5 3q38 0 74.5 -9q36.5 -9 64.5 -33q28 -24 45 -65q17 -41 17 -105q0 -63 -17.5 -105.5q-17.5 -42.5 -46.5 -68.5q-29 -26 -66.5 -37q-37.5 -11 -77.5 -11l-57 -1v-71h133v-60h-133v-142h-73v142h-59v60h59v72h-59zM161 337h57q24 0 47.5 6.5q23.5 6.5 42 24.5q18.5 18 30 48.5q11.5 30.5 11.5 78.5q0 41 -9.5 69q-9.5 28 -26 45.5q-16.5 17.5 -38.5 25q-22 7.5 -47 7.5q-20 0 -38 -1q-18 -1 -29 -4z" />
-<glyph unicode="&#8386;" horiz-adv-x="450" d="M29 334h59v359q31 9 66.5 12q35.5 3 70.5 3q38 0 74.5 -9q36.5 -9 64.5 -33q28 -24 45 -65q17 -41 17 -105q0 -63 -17.5 -105.5q-17.5 -42.5 -46.5 -68.5q-29 -26 -66.5 -37q-37.5 -11 -77.5 -11l-57 -1v-71h133v-60h-133v-142h-73v142h-59v60h59v72h-59zM161 337h57q24 0 47.5 6.5q23.5 6.5 42 24.5q18.5 18 30 48.5q11.5 30.5 11.5 78.5q0 41 -9.5 69q-9.5 28 -26 45.5q-16.5 17.5 -38.5 25q-22 7.5 -47 7.5q-20 0 -38 -1q-18 -1 -29 -4z" />
-<glyph unicode="&#8387;" horiz-adv-x="450" d="M29 334h59v359q31 9 66.5 12q35.5 3 70.5 3q38 0 74.5 -9q36.5 -9 64.5 -33q28 -24 45 -65q17 -41 17 -105q0 -63 -17.5 -105.5q-17.5 -42.5 -46.5 -68.5q-29 -26 -66.5 -37q-37.5 -11 -77.5 -11l-57 -1v-71h133v-60h-133v-142h-73v142h-59v60h59v72h-59zM161 337h57q24 0 47.5 6.5q23.5 6.5 42 24.5q18.5 18 30 48.5q11.5 30.5 11.5 78.5q0 41 -9.5 69q-9.5 28 -26 45.5q-16.5 17.5 -38.5 25q-22 7.5 -47 7.5q-20 0 -38 -1q-18 -1 -29 -4z" />
-<glyph unicode="&#8388;" horiz-adv-x="450" d="M29 334h59v359q31 9 66.5 12q35.5 3 70.5 3q38 0 74.5 -9q36.5 -9 64.5 -33q28 -24 45 -65q17 -41 17 -105q0 -63 -17.5 -105.5q-17.5 -42.5 -46.5 -68.5q-29 -26 -66.5 -37q-37.5 -11 -77.5 -11l-57 -1v-71h133v-60h-133v-142h-73v142h-59v60h59v72h-59zM161 337h57q24 0 47.5 6.5q23.5 6.5 42 24.5q18.5 18 30 48.5q11.5 30.5 11.5 78.5q0 41 -9.5 69q-9.5 28 -26 45.5q-16.5 17.5 -38.5 25q-22 7.5 -47 7.5q-20 0 -38 -1q-18 -1 -29 -4z" />
-<glyph unicode="&#8389;" horiz-adv-x="450" d="M29 334h59v359q31 9 66.5 12q35.5 3 70.5 3q38 0 74.5 -9q36.5 -9 64.5 -33q28 -24 45 -65q17 -41 17 -105q0 -63 -17.5 -105.5q-17.5 -42.5 -46.5 -68.5q-29 -26 -66.5 -37q-37.5 -11 -77.5 -11l-57 -1v-71h133v-60h-133v-142h-73v142h-59v60h59v72h-59zM161 337h57q24 0 47.5 6.5q23.5 6.5 42 24.5q18.5 18 30 48.5q11.5 30.5 11.5 78.5q0 41 -9.5 69q-9.5 28 -26 45.5q-16.5 17.5 -38.5 25q-22 7.5 -47 7.5q-20 0 -38 -1q-18 -1 -29 -4z" />
-<glyph unicode="&#8390;" horiz-adv-x="450" d="M29 334h59v359q31 9 66.5 12q35.5 3 70.5 3q38 0 74.5 -9q36.5 -9 64.5 -33q28 -24 45 -65q17 -41 17 -105q0 -63 -17.5 -105.5q-17.5 -42.5 -46.5 -68.5q-29 -26 -66.5 -37q-37.5 -11 -77.5 -11l-57 -1v-71h133v-60h-133v-142h-73v142h-59v60h59v72h-59zM161 337h57q24 0 47.5 6.5q23.5 6.5 42 24.5q18.5 18 30 48.5q11.5 30.5 11.5 78.5q0 41 -9.5 69q-9.5 28 -26 45.5q-16.5 17.5 -38.5 25q-22 7.5 -47 7.5q-20 0 -38 -1q-18 -1 -29 -4z" />
-<glyph unicode="&#8391;" horiz-adv-x="450" d="M29 334h59v359q31 9 66.5 12q35.5 3 70.5 3q38 0 74.5 -9q36.5 -9 64.5 -33q28 -24 45 -65q17 -41 17 -105q0 -63 -17.5 -105.5q-17.5 -42.5 -46.5 -68.5q-29 -26 -66.5 -37q-37.5 -11 -77.5 -11l-57 -1v-71h133v-60h-133v-142h-73v142h-59v60h59v72h-59zM161 337h57q24 0 47.5 6.5q23.5 6.5 42 24.5q18.5 18 30 48.5q11.5 30.5 11.5 78.5q0 41 -9.5 69q-9.5 28 -26 45.5q-16.5 17.5 -38.5 25q-22 7.5 -47 7.5q-20 0 -38 -1q-18 -1 -29 -4z" />
-<glyph unicode="&#8392;" horiz-adv-x="450" d="M29 334h59v359q31 9 66.5 12q35.5 3 70.5 3q38 0 74.5 -9q36.5 -9 64.5 -33q28 -24 45 -65q17 -41 17 -105q0 -63 -17.5 -105.5q-17.5 -42.5 -46.5 -68.5q-29 -26 -66.5 -37q-37.5 -11 -77.5 -11l-57 -1v-71h133v-60h-133v-142h-73v142h-59v60h59v72h-59zM161 337h57q24 0 47.5 6.5q23.5 6.5 42 24.5q18.5 18 30 48.5q11.5 30.5 11.5 78.5q0 41 -9.5 69q-9.5 28 -26 45.5q-16.5 17.5 -38.5 25q-22 7.5 -47 7.5q-20 0 -38 -1q-18 -1 -29 -4z" />
-<glyph unicode="&#8393;" horiz-adv-x="450" d="M29 334h59v359q31 9 66.5 12q35.5 3 70.5 3q38 0 74.5 -9q36.5 -9 64.5 -33q28 -24 45 -65q17 -41 17 -105q0 -63 -17.5 -105.5q-17.5 -42.5 -46.5 -68.5q-29 -26 -66.5 -37q-37.5 -11 -77.5 -11l-57 -1v-71h133v-60h-133v-142h-73v142h-59v60h59v72h-59zM161 337h57q24 0 47.5 6.5q23.5 6.5 42 24.5q18.5 18 30 48.5q11.5 30.5 11.5 78.5q0 41 -9.5 69q-9.5 28 -26 45.5q-16.5 17.5 -38.5 25q-22 7.5 -47 7.5q-20 0 -38 -1q-18 -1 -29 -4z" />
-<glyph unicode="&#8394;" horiz-adv-x="450" d="M29 334h59v359q31 9 66.5 12q35.5 3 70.5 3q38 0 74.5 -9q36.5 -9 64.5 -33q28 -24 45 -65q17 -41 17 -105q0 -63 -17.5 -105.5q-17.5 -42.5 -46.5 -68.5q-29 -26 -66.5 -37q-37.5 -11 -77.5 -11l-57 -1v-71h133v-60h-133v-142h-73v142h-59v60h59v72h-59zM161 337h57q24 0 47.5 6.5q23.5 6.5 42 24.5q18.5 18 30 48.5q11.5 30.5 11.5 78.5q0 41 -9.5 69q-9.5 28 -26 45.5q-16.5 17.5 -38.5 25q-22 7.5 -47 7.5q-20 0 -38 -1q-18 -1 -29 -4z" />
-<glyph unicode="&#8395;" horiz-adv-x="450" d="M29 334h59v359q31 9 66.5 12q35.5 3 70.5 3q38 0 74.5 -9q36.5 -9 64.5 -33q28 -24 45 -65q17 -41 17 -105q0 -63 -17.5 -105.5q-17.5 -42.5 -46.5 -68.5q-29 -26 -66.5 -37q-37.5 -11 -77.5 -11l-57 -1v-71h133v-60h-133v-142h-73v142h-59v60h59v72h-59zM161 337h57q24 0 47.5 6.5q23.5 6.5 42 24.5q18.5 18 30 48.5q11.5 30.5 11.5 78.5q0 41 -9.5 69q-9.5 28 -26 45.5q-16.5 17.5 -38.5 25q-22 7.5 -47 7.5q-20 0 -38 -1q-18 -1 -29 -4z" />
-<glyph unicode="&#8396;" horiz-adv-x="450" d="M29 334h59v359q31 9 66.5 12q35.5 3 70.5 3q38 0 74.5 -9q36.5 -9 64.5 -33q28 -24 45 -65q17 -41 17 -105q0 -63 -17.5 -105.5q-17.5 -42.5 -46.5 -68.5q-29 -26 -66.5 -37q-37.5 -11 -77.5 -11l-57 -1v-71h133v-60h-133v-142h-73v142h-59v60h59v72h-59zM161 337h57q24 0 47.5 6.5q23.5 6.5 42 24.5q18.5 18 30 48.5q11.5 30.5 11.5 78.5q0 41 -9.5 69q-9.5 28 -26 45.5q-16.5 17.5 -38.5 25q-22 7.5 -47 7.5q-20 0 -38 -1q-18 -1 -29 -4z" />
-<glyph unicode="&#8397;" horiz-adv-x="450" d="M29 334h59v359q31 9 66.5 12q35.5 3 70.5 3q38 0 74.5 -9q36.5 -9 64.5 -33q28 -24 45 -65q17 -41 17 -105q0 -63 -17.5 -105.5q-17.5 -42.5 -46.5 -68.5q-29 -26 -66.5 -37q-37.5 -11 -77.5 -11l-57 -1v-71h133v-60h-133v-142h-73v142h-59v60h59v72h-59zM161 337h57q24 0 47.5 6.5q23.5 6.5 42 24.5q18.5 18 30 48.5q11.5 30.5 11.5 78.5q0 41 -9.5 69q-9.5 28 -26 45.5q-16.5 17.5 -38.5 25q-22 7.5 -47 7.5q-20 0 -38 -1q-18 -1 -29 -4z" />
-<glyph unicode="&#8398;" horiz-adv-x="450" d="M29 334h59v359q31 9 66.5 12q35.5 3 70.5 3q38 0 74.5 -9q36.5 -9 64.5 -33q28 -24 45 -65q17 -41 17 -105q0 -63 -17.5 -105.5q-17.5 -42.5 -46.5 -68.5q-29 -26 -66.5 -37q-37.5 -11 -77.5 -11l-57 -1v-71h133v-60h-133v-142h-73v142h-59v60h59v72h-59zM161 337h57q24 0 47.5 6.5q23.5 6.5 42 24.5q18.5 18 30 48.5q11.5 30.5 11.5 78.5q0 41 -9.5 69q-9.5 28 -26 45.5q-16.5 17.5 -38.5 25q-22 7.5 -47 7.5q-20 0 -38 -1q-18 -1 -29 -4z" />
-<glyph unicode="&#8399;" horiz-adv-x="450" d="M29 334h59v359q31 9 66.5 12q35.5 3 70.5 3q38 0 74.5 -9q36.5 -9 64.5 -33q28 -24 45 -65q17 -41 17 -105q0 -63 -17.5 -105.5q-17.5 -42.5 -46.5 -68.5q-29 -26 -66.5 -37q-37.5 -11 -77.5 -11l-57 -1v-71h133v-60h-133v-142h-73v142h-59v60h59v72h-59zM161 337h57q24 0 47.5 6.5q23.5 6.5 42 24.5q18.5 18 30 48.5q11.5 30.5 11.5 78.5q0 41 -9.5 69q-9.5 28 -26 45.5q-16.5 17.5 -38.5 25q-22 7.5 -47 7.5q-20 0 -38 -1q-18 -1 -29 -4z" />
-<glyph unicode="&#8467;" horiz-adv-x="500" d="M406 30q-22 -14 -57.5 -28q-35.5 -14 -70.5 -14q-63 0 -91.5 30.5q-28.5 30.5 -28.5 95.5v104l-50 -44l-35 44l85 74v254q0 44 10 75.5q10 31.5 27.5 51.5q17.5 20 41 29.5q23.5 9.5 50.5 9.5q48 0 79 -29.5q31 -29.5 31 -89.5q0 -74 -40 -157q-40 -83 -131 -171l0 -140q0 -44 17 -60.5q17 -16.5 41 -16.5q25 0 55 10.5q30 10.5 50 21.5zM333 588q0 34 -14 49q-14 15 -32 15q-12 0 -23 -3.5q-11 -3.5 -19.5 -14q-8.5 -10.5 -13.5 -29q-5 -18.5 -5 -48.5v-212q56 65 81.5 125.5t25.5 117.5z" />
-<glyph unicode="&#8470;" horiz-adv-x="825" d="M535 312h230v-67h-230zM169 447l-42 115h-4l12 -110v-452h-72v711h45l247 -457l42 -110h4l-13 105v451h72v-711h-45zM520 542q0 46 9.5 78.5q9.5 32.5 27 53q17.5 20.5 41 29.5q23.5 9 49.5 9q27 0 50.5 -8.5q23.5 -8.5 41 -28q17.5 -19.5 27 -52.5q9.5 -33 9.5 -81q0 -48 -9.5 -81q-9.5 -33 -27 -52.5q-17.5 -19.5 -41 -28q-23.5 -8.5 -50.5 -8.5q-26 0 -49.5 8.5q-23.5 8.5 -41 28q-17.5 19.5 -27 52.5q-9.5 33 -9.5 81zt0 0zM585 542q0 -65 17.5 -90q17.5 -25 44.5 -25q14 0 25.5 5q11.5 5 20 17.5q8.5 12.5 13 35q4.5 22.5 4.5 57.5q0 34 -4.5 56.5q-4.5 22.5 -13 35.5q-8.5 13 -20 18q-11.5 5 -25.5 5q-14 0 -25.5 -5q-11.5 -5 -19.5 -18q-8 -13 -12.5 -35.5t-4.5 -56.5z" />
-<glyph unicode="&#8482;" horiz-adv-x="731" d="M319 635h-106v-295h-72v295h-107v65h285zM629 507l10 103h-4l-31 -85l-67 -140h-34l-68 139l-29 86h-4l13 -102v-168h-65v360h71l82 -167l22 -58l24 60l75 165h72v-360l-67 0z" />
-<glyph unicode="&#8494;" horiz-adv-x="600" d="M157 259v-181q62 -59 145 -59q124 0 193 120l35 -21q-43 -66 -99 -100.5q-56 -34.5 -129 -34.5q-59 0 -107 21.5q-48 21.5 -81.5 58.5q-33.5 37 -51.5 87.5q-18 50.5 -18 108.5q0 59 18.5 109.5q18.5 50.5 52.5 87.5q34 37 81.5 58q47.5 21 105.5 21q62 0 109.5 -22q47.5 -22 80.5 -59.5q33 -37.5 50 -87.5q17 -50 19 -107zM448 295v145q-63 60 -147 60q-86 0 -144 -60l0 -145z" />
-<glyph unicode="&#8706;" horiz-adv-x="416" d="M233 510q32 0 49 -7q17 -7 31 -20l4 0q-3 49 -20.5 82q-17.5 33 -43.5 52.5q-26 19.5 -57 26.5q-31 7 -61 5l13 63q56 1 101 -13.5q45 -14.5 77 -50q32 -35.5 49 -94q17 -58.5 17 -146.5q0 -111 -16 -190.5q-16 -79.5 -44.5 -130.5q-28.5 -51 -67.5 -75q-39 -24 -86 -24q-78 0 -118.5 51q-40.5 51 -40.5 145q0 65 13.5 124q13.5 59 40.5 104q27 45 67 71.5q40 26.5 93 26.5zt0 0zM231 445q-28 0 -53 -18q-25 -18 -43.5 -52.5q-18.5 -34.5 -29.5 -84q-11 -49.5 -11 -112.5q0 -24 5 -46.5q5 -22.5 16 -40q11 -17.5 28 -28q17 -10.5 41 -10.5q39 0 64.5 32q25.5 32 40.5 83q15 51 21.5 113.5q6.5 62.5 6.5 123.5q-15 19 -34.5 29.5t-51.5 10.5z" />
-<glyph unicode="&#8719;" horiz-adv-x="541" d="M402 631h-263v-831h-75v900h413v-900l-75 0z" />
-<glyph unicode="&#8721;" horiz-adv-x="415" d="M112 -95l-32 -36h306v-69h-370v69l177 351l28 30l-29 32l-176 349v69h370v-69h-302l35 -36l168 -339z" />
-<glyph unicode="&#8722;" horiz-adv-x="415" d="M35 373h344v-67l-344 0z" />
-<glyph unicode="&#8725;" horiz-adv-x="415" d="M376 713l49 -27l-384 -698l-50 28z" />
-<glyph unicode="&#8730;" horiz-adv-x="415" d="M138 446l70 -210l20 -131h2l15 133l116 462h67l-182 -711h-32l-128 392h-92l0 65z" />
-<glyph unicode="&#8734;" horiz-adv-x="695" d="M343 286q-29 -59 -71 -91q-42 -32 -90 -32q-29 0 -54.5 12.5q-25.5 12.5 -44.5 36.5q-19 24 -30 58q-11 34 -11 76q0 90 40 141.5q40 51.5 106 51.5q58 0 98.5 -32q40.5 -32 65.5 -81q35 61 77.5 87q42.5 26 91.5 26q59 0 95.5 -48q36.5 -48 36.5 -134q0 -92 -40.5 -143q-40.5 -51 -106.5 -51q-29 0 -53.5 10q-24.5 10 -44.5 27q-20 17 -36.5 39q-16.5 22 -28.5 47zt0 0zM507 228q33 0 54.5 35.5q21.5 35.5 21.5 91.5q0 22 -4.5 43.5q-4.5 21.5 -13.5 38q-9 16.5 -24 27q-15 10.5 -36 10.5q-33 0 -65.5 -27.5q-32.5 -27.5 -60.5 -75.5q10 -27 23 -52.5q13 -25.5 29.5 -46q16.5 -20.5 35.5 -32.5q19 -12 40 -12zt0 0zM189 474q-17 0 -31 -10q-14 -10 -24.5 -27.5q-10.5 -17.5 -16 -40q-5.5 -22.5 -5.5 -47.5q0 -25 5.5 -47q5.5 -22 16.5 -38.5q11 -16.5 27 -26q16 -9.5 36 -9.5q18 0 34.5 10q16.5 10 32 25.5q15.5 15.5 29 35.5q13.5 20 24.5 41q-11 28 -24.5 52.5q-13.5 24.5 -29 42.5q-15.5 18 -34.5 28.5t-40 10.5z" />
-<glyph unicode="&#8747;" horiz-adv-x="284" d="M178 -58q0 -78 -28 -114q-28 -36 -86 -36q-30 0 -56.5 5.5q-26.5 5.5 -45.5 14.5v61q55 -16 90 -16q32 0 43 24q11 24 11 84v597q0 78 26.5 114q26.5 36 86.5 36q28 0 54 -5.5q26 -5.5 46 -14.5l-19 -60q-17 8 -34 11.5q-17 3.5 -37 3.5q-30 0 -40.5 -23.5q-10.5 -23.5 -10.5 -82.5z" />
-<glyph unicode="&#8776;" horiz-adv-x="415" d="M23 444q36 33 65 46q29 13 54 13q23 0 43 -8.5q20 -8.5 38 -18q18 -9.5 35.5 -18q17.5 -8.5 35.5 -8.5q14 0 30 7q16 7 33 26l34 -60q-32 -27 -57 -37.5q-25 -10.5 -46 -10.5q-22 0 -40.5 8.5q-18.5 8.5 -36 19q-17.5 10.5 -35 19q-17.5 8.5 -36.5 8.5q-18 0 -38.5 -10q-20.5 -10 -45.5 -35zM23 277q36 33 65 46q29 13 54 13q23 0 43 -8.5q20 -8.5 38 -18q18 -9.5 35.5 -18q17.5 -8.5 35.5 -8.5q14 0 30 7q16 7 33 26l34 -60q-32 -27 -57 -37.5q-25 -10.5 -46 -10.5q-22 0 -40.5 8.5q-18.5 8.5 -36 19q-17.5 10.5 -35 19q-17.5 8.5 -36.5 8.5q-18 0 -38.5 -10q-20.5 -10 -45.5 -35z" />
-<glyph unicode="&#8800;" horiz-adv-x="415" d="M35 456h181l49 138h66l-50 -138h98v-67h-122l-36 -99h158v-67h-182l-56 -157h-64l56 157h-98v67h122l35 99l-157 0z" />
-<glyph unicode="&#8804;" horiz-adv-x="415" d="M375 82l-38 -55l-291 204l38 55zM32 426v29l300 223l39 -54l-191 -145l-74 -38l73 -32l196 -144l-38 -54z" />
-<glyph unicode="&#8805;" horiz-adv-x="415" d="M372 234l-290 -207l-40 54l291 207zM376 463v-29l-300 -223l-39 54l191 145l74 38l-73 32l-196 144l38 54z" />
-<glyph unicode="&#9674;" horiz-adv-x="415" d="M222 -11h-33l-160 353l160 369h33l163 -364zM233 164l79 173l-85 192l-22 90h-2l-22 -92l-79 -174l85 -191l23 -91l1 0z" />
-<glyph unicode="&#11367;" horiz-adv-x="568" d="M397 323h-258v-323h-75v700h75v-308h258v308h75v-631h74v-198h-52l-12 129l-85 0z" />
-<glyph unicode="&#11368;" horiz-adv-x="467" d="M387 65h60v-192h-49l-13 127h-70v304q0 70 -16.5 106.5q-16.5 36.5 -65.5 36.5q-35 0 -63.5 -25q-28.5 -25 -38.5 -63l0 -359h-72v700h72v-247h3q20 26 49.5 42.5q29.5 16.5 73.5 16.5q33 0 57.5 -9q24.5 -9 40.5 -31q16 -22 24 -58.5q8 -36.5 8 -90.5z" />
-<glyph unicode="&#62465;" horiz-adv-x="2" d="M-302 870h99v-21l-131 -97l-61 0z" />
-<glyph unicode="&#62470;" horiz-adv-x="405" d="M98 871q14 -34 42 -55q28 -21 66 -21q39 0 64.5 22.5q25.5 22.5 38.5 53.5l36 -16q-15 -63 -54.5 -94q-39.5 -31 -85.5 -31q-43 0 -84.5 29q-41.5 29 -60.5 92z" />
-<glyph unicode="&#62471;" horiz-adv-x="262" d="M156 0l-19 -43q65 -15 65 -75q0 -39 -28.5 -64.5q-28.5 -25.5 -76.5 -25.5q-20 0 -37 4l7 39q23 -2 36.5 1q13.5 3 20.5 9q7 6 9 13.5q2 7.5 2 14.5q0 28 -69 37l40 90z" />
-<glyph unicode="&#62472;" horiz-adv-x="379" d="M167 870h50l102 -102v-21h-66l-47 49l-15 35l-15 -34l-52 -50h-64l0 22z" />
-<glyph unicode="&#62473;" horiz-adv-x="219" d="M61 -102q0 21 13 34q13 13 31 13q22 0 38 -17q16 -17 16 -58q0 -26 -7.5 -45.5q-7.5 -19.5 -18 -34q-10.5 -14.5 -22 -23q-11.5 -8.5 -20.5 -12.5l-27 27q17 13 28.5 31.5q11.5 18.5 10.5 42.5q-17 -2 -29.5 9t-12.5 33z" />
-<glyph unicode="&#62474;" horiz-adv-x="162" d="M31 659q0 23 13 36q13 13 33 13q24 0 39 -16.5q15 -16.5 15 -50.5q0 -32 -8 -56q-8 -24 -19.5 -40.5q-11.5 -16.5 -24.5 -27q-13 -10.5 -22 -15.5l-23 30q17 11 29.5 31.5q12.5 20.5 11.5 47.5q-18 -3 -31 10t-13 38z" />
-<glyph unicode="&#62475;" horiz-adv-x="229" d="M60 797q0 21 14 36.5q14 15.5 40 15.5q26 0 40.5 -15.5q14.5 -15.5 14.5 -36.5q0 -23 -14.5 -38q-14.5 -15 -40.5 -15q-26 0 -40 15t-14 38z" />
-<glyph unicode="&#62476;" horiz-adv-x="300" d="M60 768q0 37 21 61q21 24 69 24q43 0 66.5 -21.5q23.5 -21.5 23.5 -63.5q0 -36 -22.5 -59.5q-22.5 -23.5 -67.5 -23.5q-45 0 -67.5 22.5q-22.5 22.5 -22.5 60.5zt0 0zM114 768q0 -18 8.5 -29.5q8.5 -11.5 27.5 -11.5q36 0 36 41q0 43 -36 43q-36 0 -36 -43z" />
-<glyph unicode="&#62477;" horiz-adv-x="395" d="M60 780q28 34 51.5 46.5q23.5 12.5 44.5 12.5q16 0 30.5 -5q14.5 -5 28 -10.5q13.5 -5.5 26 -10.5q12.5 -5 25.5 -5q11 0 21.5 4q10.5 4 21.5 16l26 -37q-24 -28 -45 -38q-21 -10 -39 -10q-15 0 -29 5q-14 5 -27.5 10.5q-13.5 5.5 -26.5 10.5q-13 5 -27 5q-14 0 -27.5 -6q-13.5 -6 -29.5 -23z" />
-<glyph unicode="&#62478;" horiz-adv-x="278" d="M195 10q-29 -16 -46 -40.5q-17 -24.5 -17 -56.5q1 -29 20 -44.5q19 -15.5 56 -0.5l10 -40q-11 -11 -31.5 -17q-20.5 -6 -39.5 -6q-40 0 -63.5 24q-23.5 24 -23.5 62q0 43 24.5 72.5q24.5 29.5 62.5 46.5z" />
-<glyph unicode="&#62598;" horiz-adv-x="471" d="M411 541q0 -26 -6 -52q-6 -26 -19 -49q-13 -23 -32.5 -41q-19.5 -18 -47.5 -27l0 -4q24 -5 46 -16.5q22 -11.5 39 -32q17 -20.5 27 -50q10 -29.5 10 -70.5q0 -54 -17 -93.5q-17 -39.5 -46.5 -64.5q-29.5 -25 -68 -37q-38.5 -12 -81.5 -12q-14 0 -32.5 0q-18.5 0 -39.5 1.5q-21 1.5 -41.5 4q-20.5 2.5 -37.5 7.5l0 689q30 6 70.5 10q40.5 4 87.5 4q34 0 68 -6.5q34 -6.5 61 -24.5q27 -18 43.5 -50.5q16.5 -32.5 16.5 -85.5zt0 0zM221 61q27 0 50 8.5q23 8.5 40.5 25.5q17.5 17 27.5 41.5q10 24.5 10 57.5q0 41 -12.5 66.5q-12.5 25.5 -32.5 39.5q-20 14 -45.5 19q-25.5 5 -52.5 5h-67v-256q6 -2 15.5 -3q9.5 -1 21 -2q11.5 -1 23.5 -1.5q12 -0.5 22 -0.5zt0 0zM180 389q14 0 32 1q18 1 30 3q37 15 63.5 48.5q26.5 33.5 26.5 82.5q0 33 -9 55.5q-9 22.5 -24.5 35.5q-15.5 13 -36.5 18.5q-21 5.5 -44 5.5q-26 0 -47 -1.5q-21 -1.5 -32 -3.5l0 -245zM246 870h99v-21l-131 -97l-61 0z" />
-<glyph unicode="&#62599;" horiz-adv-x="434" d="M59 700h72v-238h3q41 50 109 50q77 0 115.5 -61q38.5 -61 38.5 -193q0 -135 -51.5 -201q-51.5 -66 -145.5 -66q-46 0 -84 10.5q-38 10.5 -57 24.5zM131 73q14 -8 34.5 -12.5q20.5 -4.5 43.5 -4.5q52 0 82.5 49.5q30.5 49.5 30.5 152.5q0 43 -5.5 77.5q-5.5 34.5 -17 59.5q-11.5 25 -30 38.5q-18.5 13.5 -44.5 13.5q-36 0 -59.5 -21.5q-23.5 -21.5 -34.5 -58.5zM250 720h78v-21l-82 -128l-43 0z" />
-<glyph unicode="&#62600;" horiz-adv-x="413" d="M64 700h311v-69h-236v-247h220v-69h-220v-315h-75zM245 870h99v-21l-131 -97l-61 0z" />
-<glyph unicode="&#62601;" horiz-adv-x="257" d="M16 500h61v28q0 94 27 136q27 42 92 42q26 0 47 -3q21 -3 43 -13l-18 -62q-18 8 -33.5 10.5q-15.5 2.5 -29.5 2.5q-20 0 -31 -8q-11 -8 -16.5 -25q-5.5 -17 -7 -43.5q-1.5 -26.5 -1.5 -64.5l104 0v-65h-104v-435h-72v435h-61zM233 870h99v-21l-131 -97l-61 0z" />
-<glyph unicode="&#62622;" horiz-adv-x="490" d="M-2 587h69v113h75v-113h177v-62h-177v-125q21 14 57 28.5q36 14.5 82 14.5q35 0 63.5 -9q28.5 -9 48.5 -31.5q20 -22.5 31 -59.5q11 -37 11 -94v-249h-75v236q0 71 -23 104.5q-23 33.5 -74 33.5q-36 0 -68.5 -12.5q-32.5 -12.5 -52.5 -32.5l0 -329h-75v525l-69 0z" />
-<glyph unicode="&#62623;" horiz-adv-x="441" d="M-4 633h64v67h72v-67h129v-59h-129v-121h3q20 26 49.5 42.5q29.5 16.5 73.5 16.5q33 0 57.5 -9q24.5 -9 40.5 -31q16 -22 24 -58.5q8 -36.5 8 -90.5v-323h-72v304q0 70 -16.5 106.5q-16.5 36.5 -65.5 36.5q-35 0 -63.5 -25q-28.5 -25 -38.5 -63l0 -359h-72v574l-64 0z" />
-<glyph unicode="&#62662;" horiz-adv-x="487" d="M130 700v-244q0 -73 25 -101.5q25 -28.5 73 -28.5q35 0 67.5 13q32.5 13 52.5 34l0 327h75v-728q0 -103 -34 -147.5q-34 -44.5 -109 -34.5l0 65q23 0 36.5 9q13.5 9 20.5 27q7 18 9 45.5q2 27.5 2 63.5v300q-20 -15 -56 -29q-36 -14 -80 -14q-32 0 -60.5 8q-28.5 8 -50 28.5q-21.5 20.5 -34 55.5q-12.5 35 -12.5 90l0 261z" />
-<glyph unicode="&#62663;" horiz-adv-x="396" d="M108 500v-146q0 -25 2.5 -45q2.5 -20 9.5 -34.5q7 -14.5 20 -22q13 -7.5 34 -7.5q35 0 57 9q22 9 34 20l0 226h72v-529q0 -92 -27.5 -136q-27.5 -44 -87.5 -43q-6 0 -12 0.5q-6 0.5 -13 1.5l0 63q45 -1 56.5 34.5q11.5 35.5 11.5 108.5v210q-12 -9 -37.5 -19.5q-25.5 -10.5 -68.5 -10.5q-29 0 -52 7.5q-23 7.5 -38.5 24.5q-15.5 17 -24 46q-8.5 29 -8.5 73l0 169z" />
-<glyph unicode="&#62668;" horiz-adv-x="448" d="M228 341l19 -89h5l16 92l104 356h77l-143 -455q-22 -70 -38.5 -118q-16.5 -48 -33 -77q-16.5 -29 -36.5 -42q-20 -13 -49 -13q-26 0 -43 5q-17 5 -32 16l22 64q16 -11 29 -13.5q13 -2.5 24 -2.5q22 0 37 30.5q15 30.5 26 86.5l-209 519h88zM257 870h99v-21l-131 -97l-61 0z" />
-<glyph unicode="&#62669;" horiz-adv-x="376" d="M183 177l21 -97h5l15 97l76 323h73l-119 -449q-14 -54 -28 -101q-14 -47 -30.5 -81.5q-16.5 -34.5 -37 -54q-20.5 -19.5 -48.5 -19.5q-28 0 -49 9l12 68q14 -5 28 -2q14 3 26.5 17q12.5 14 23 41.5q10.5 27.5 18.5 71.5l-162 500h82zM212 720h78v-21l-82 -128l-43 0z" />
-<glyph unicode="&#62678;" horiz-adv-x="465" d="M118 390h229q-5 127 -53.5 190q-48.5 63 -124.5 63q-38 0 -67 -9q-29 -9 -50 -22l-22 62q28 18 66.5 28q38.5 10 80.5 10q55 0 100 -19.5q45 -19.5 77 -62.5q32 -43 50 -112q18 -69 18 -167q0 -99 -20 -168.5q-20 -69.5 -55 -112.5q-35 -43 -82 -62.5q-47 -19.5 -102 -19.5q-41 0 -74.5 7q-33.5 7 -56.5 18l21 68q19 -10 50 -17q31 -7 64 -7q34 0 65.5 14.5q31.5 14.5 56.5 46q25 31.5 40.5 82q15.5 50.5 17.5 123.5l-229 0zM130 797q0 21 14 36.5q14 15.5 40 15.5q26 0 40.5 -15.5q14.5 -15.5 14.5 -36.5q0 -23 -14.5 -38q-14.5 -15 -40.5 -15q-26 0 -40 15t-14 38z" />
-<glyph unicode="&#62679;" horiz-adv-x="372" d="M94 283h166q-3 78 -31.5 121q-28.5 43 -80.5 43q-32 0 -56 -9q-24 -9 -39 -20l-25 57q23 17 56 27q33 10 76 10q90 0 132.5 -65q42.5 -65 42.5 -197q0 -131 -48.5 -196.5q-48.5 -65.5 -136.5 -65.5q-77 0 -122 24l20 64q19 -11 45 -17q26 -6 50 -6q111 0 117 168l-166 0zM105 652q0 24 13.5 39q13.5 15 35.5 15q22 0 36.5 -14.5q14.5 -14.5 14.5 -39.5q0 -24 -14.5 -37.5q-14.5 -13.5 -36.5 -13.5q-22 0 -35.5 14t-13.5 37z" />
-<glyph unicode="&#62730;" horiz-adv-x="434" d="M109 333v65h18q15 0 37 1q22 1 35 4q40 10 68.5 41.5q28.5 31.5 28.5 79.5q0 66 -32 92.5q-32 26.5 -81 26.5q-39 0 -69 -7.5q-30 -7.5 -49 -18.5l-20 62q18 11 59.5 22q41.5 11 93.5 11q34 0 66 -8q32 -8 56.5 -27.5q24.5 -19.5 39.5 -53q15 -33.5 15 -83.5q0 -51 -25.5 -95.5q-25.5 -44.5 -78.5 -66.5l0 -4q56 -11 88.5 -53.5q32.5 -42.5 32.5 -114.5q0 -51 -14 -90q-14 -39 -38 -65.5q-24 -26.5 -56.5 -42q-32.5 -15.5 -69.5 -19.5l-12 -168h-47l-15 167q-37 2 -63.5 9q-26.5 7 -45.5 17l20 68q20 -11 52 -18q32 -7 78 -7q27 0 51 9.5q24 9.5 42 27.5q18 18 28.5 45.5q10.5 27.5 10.5 63.5q0 65 -34.5 94.5q-34.5 29.5 -92.5 34.5q-10 1 -17.5 1q-7.5 0 -18.5 0z" />
-<glyph unicode="&#62731;" horiz-adv-x="351" d="M96 224v62h53q14 0 27.5 6.5q13.5 6.5 24 17.5q10.5 11 17 25.5q6.5 14.5 6.5 30.5q0 39 -20.5 57q-20.5 18 -62.5 18q-31 0 -55 -9q-24 -9 -38 -19l-21 57q25 16 58.5 26q33.5 10 76.5 10q66 0 101.5 -30.5q35.5 -30.5 35.5 -91.5q0 -38 -19 -70q-19 -32 -52 -46l0 -4q46 -11 66 -42q20 -31 20 -82q0 -54 -30 -93.5q-30 -39.5 -93 -50.5l-12 -175h-47l-16 172q-29 2 -50.5 9q-21.5 7 -39.5 17l19 62q19 -12 43.5 -17.5q24.5 -5.5 52.5 -5.5q98 0 98 88q0 36 -23 57q-23 21 -77 21z" />
-<glyph unicode="&#62732;" horiz-adv-x="458" d="M430 27q-21 -18 -52 -27q-31 -9 -66 -11l-14 -32q65 -15 65 -75q0 -39 -28.5 -64.5q-28.5 -25.5 -76.5 -25.5q-20 0 -37 4l7 39q23 -2 36.5 1q13.5 3 20.5 9q7 6 9 13.5q2 7.5 2 14.5q0 28 -69 37l35 80q-48 4 -88.5 26.5q-40.5 22.5 -69.5 66q-29 43.5 -45 109.5q-16 66 -16 158q0 100 20.5 169q20.5 69 54.5 112q34 43 78.5 62q44.5 19 91.5 19q48 0 79.5 -7q31.5 -7 54.5 -17l-18 -68q-20 11 -47 17q-27 6 -62 6q-35 0 -66 -15.5q-31 -15.5 -55 -50q-24 -34.5 -38 -90.5q-14 -56 -14 -137q0 -146 50 -219q50 -73 133 -73q34 0 61 9.5q27 9.5 46 22.5z" />
-<glyph unicode="&#62733;" horiz-adv-x="356" d="M335 25q-20 -15 -44 -23.5q-24 -8.5 -50 -11.5l-14 -33q65 -15 65 -75q0 -39 -28.5 -64.5q-28.5 -25.5 -76.5 -25.5q-20 0 -37 4l7 39q23 -2 36.5 1q13.5 3 20.5 9q7 6 9 13.5q2 7.5 2 14.5q0 28 -69 37l35 79q-42 4 -71.5 24.5q-29.5 20.5 -47.5 54q-18 33.5 -26.5 80q-8.5 46.5 -8.5 102.5q0 128 45.5 195q45.5 67 130.5 67q39 0 67 -7q28 -7 48 -18v-62q-58 22 -107 22q-54 0 -81.5 -47.5q-27.5 -47.5 -27.5 -149.5q0 -41 6 -76.5q6 -35.5 20 -62q14 -26.5 36 -41.5q22 -15 55 -15q26 0 48.5 8.5q22.5 8.5 36.5 20.5z" />
-<glyph unicode="&#62734;" horiz-adv-x="473" d="M333 196h-198l-56 -196h-74l211 711h41l211 -711h-78zM155 263h160l-61 216l-19 105h-2l-19 -107zM109 843h259v-62l-259 0z" />
-<glyph unicode="&#62735;" horiz-adv-x="400" d="M54 470q29 18 70.5 28q41.5 10 87.5 10q42 0 67.5 -12.5q25.5 -12.5 40 -34q14.5 -21.5 19 -49q4.5 -27.5 4.5 -57.5q0 -60 -2.5 -117q-2.5 -57 -2.5 -108q0 -38 2.5 -70.5q2.5 -32.5 9.5 -61.5l-55 0l-17 59h-4q-15 -26 -44 -45q-29 -19 -78 -19q-54 0 -88.5 37.5q-34.5 37.5 -34.5 103.5q0 43 14.5 72q14.5 29 41 47q26.5 18 63 25.5q36.5 7.5 81.5 7.5q10 0 20 0q10 0 21 -1q3 31 3 55q0 57 -17 80q-17 23 -62 23q-28 0 -61 -8.5q-33 -8.5 -55 -21.5zM271 228q-10 1 -20 1.5q-10 0.5 -20 0.5q-24 0 -47 -4q-23 -4 -41 -14q-18 -10 -28.5 -27q-10.5 -17 -10.5 -43q0 -40 19.5 -62q19.5 -22 50.5 -22q42 0 65 20q23 20 32 44zM77 643h243v-59l-243 0z" />
-<glyph unicode="&#62736;" horiz-adv-x="429" d="M64 700h311v-69h-236v-237h217v-69h-217v-256h241v-69h-316zM87 843h259v-62l-259 0z" />
-<glyph unicode="&#62737;" horiz-adv-x="413" d="M358 34q-24 -22 -61 -34q-37 -12 -78 -12q-47 0 -81.5 18.5q-34.5 18.5 -57 53q-22.5 34.5 -33 82.5q-10.5 48 -10.5 108q0 128 47 195q47 67 133 67q28 0 55.5 -7q27.5 -7 49.5 -28q22 -21 35.5 -59q13.5 -38 13.5 -99q0 -17 -1.5 -36.5q-1.5 -19.5 -3.5 -40.5l-254 0q0 -43 7 -78q7 -35 22 -59.5q15 -24.5 38.5 -38q23.5 -13.5 58.5 -13.5q27 0 53.5 10q26.5 10 40.5 24zM302 302q2 75 -21 110q-23 35 -63 35q-46 0 -73 -35q-27 -35 -32 -110zM86 643h243v-59l-243 0z" />
-<glyph unicode="&#62738;" horiz-adv-x="429" d="M64 700h311v-69h-236v-237h217v-69h-217v-256h241v-69h-316zM88 794q0 21 12.5 34q12.5 13 34.5 13q21 0 33.5 -13q12.5 -13 12.5 -34q0 -21 -12.5 -33.5q-12.5 -12.5 -33.5 -12.5q-22 0 -34.5 12.5q-12.5 12.5 -12.5 33.5zt0 0zM246 794q0 21 12.5 34q12.5 13 33.5 13q22 0 34.5 -13q12.5 -13 12.5 -34q0 -21 -12.5 -33.5q-12.5 -12.5 -34.5 -12.5q-21 0 -33.5 12.5q-12.5 12.5 -12.5 33.5zt0 0zM84 948h259v-62l-259 0z" />
-<glyph unicode="&#62739;" horiz-adv-x="413" d="M358 34q-24 -22 -61 -34q-37 -12 -78 -12q-47 0 -81.5 18.5q-34.5 18.5 -57 53q-22.5 34.5 -33 82.5q-10.5 48 -10.5 108q0 128 47 195q47 67 133 67q28 0 55.5 -7q27.5 -7 49.5 -28q22 -21 35.5 -59q13.5 -38 13.5 -99q0 -17 -1.5 -36.5q-1.5 -19.5 -3.5 -40.5l-254 0q0 -43 7 -78q7 -35 22 -59.5q15 -24.5 38.5 -38q23.5 -13.5 58.5 -13.5q27 0 53.5 10q26.5 10 40.5 24zM302 302q2 75 -21 110q-23 35 -63 35q-46 0 -73 -35q-27 -35 -32 -110zM91 633q0 23 11.5 36q11.5 13 31.5 13q20 0 31.5 -13q11.5 -13 11.5 -36q0 -21 -11.5 -34q-11.5 -13 -31.5 -13q-20 0 -31.5 13q-11.5 13 -11.5 34zt0 0zM250 633q0 23 11.5 36q11.5 13 31.5 13q20 0 31.5 -13q11.5 -13 11.5 -36q0 -21 -11.5 -34q-11.5 -13 -31.5 -13q-20 0 -31.5 13q-11.5 13 -11.5 34zt0 0zM83 824h259v-62l-259 0z" />
-<glyph unicode="&#62740;" horiz-adv-x="429" d="M64 700h311v-69h-236v-237h217v-69h-217v-256h241v-69h-316zM90 794q0 21 12.5 34q12.5 13 34.5 13q21 0 33.5 -13q12.5 -13 12.5 -34q0 -21 -12.5 -33.5q-12.5 -12.5 -33.5 -12.5q-22 0 -34.5 12.5q-12.5 12.5 -12.5 33.5zt0 0zM248 794q0 21 12.5 34q12.5 13 33.5 13q22 0 34.5 -13q12.5 -13 12.5 -34q0 -21 -12.5 -33.5q-12.5 -12.5 -34.5 -12.5q-21 0 -33.5 12.5q-12.5 12.5 -12.5 33.5zt0 0zM150 993q2 -37 20.5 -59q18.5 -22 50.5 -22q32 0 49.5 22q17.5 22 20.5 58l64 -15q-8 -57 -41 -88q-33 -31 -94 -31q-59 0 -97.5 28q-38.5 28 -44.5 90z" />
-<glyph unicode="&#62741;" horiz-adv-x="413" d="M358 34q-24 -22 -61 -34q-37 -12 -78 -12q-47 0 -81.5 18.5q-34.5 18.5 -57 53q-22.5 34.5 -33 82.5q-10.5 48 -10.5 108q0 128 47 195q47 67 133 67q28 0 55.5 -7q27.5 -7 49.5 -28q22 -21 35.5 -59q13.5 -38 13.5 -99q0 -17 -1.5 -36.5q-1.5 -19.5 -3.5 -40.5l-254 0q0 -43 7 -78q7 -35 22 -59.5q15 -24.5 38.5 -38q23.5 -13.5 58.5 -13.5q27 0 53.5 10q26.5 10 40.5 24zM302 302q2 75 -21 110q-23 35 -63 35q-46 0 -73 -35q-27 -35 -32 -110zM90 633q0 23 11.5 36q11.5 13 31.5 13q20 0 31.5 -13q11.5 -13 11.5 -36q0 -21 -11.5 -34q-11.5 -13 -31.5 -13q-20 0 -31.5 13q-11.5 13 -11.5 34zt0 0zM249 633q0 23 11.5 36q11.5 13 31.5 13q20 0 31.5 -13q11.5 -13 11.5 -36q0 -21 -11.5 -34q-11.5 -13 -31.5 -13q-20 0 -31.5 13q-11.5 13 -11.5 34zt0 0zM145 851q2 -37 20.5 -59q18.5 -22 50.5 -22q32 0 49.5 22q17.5 22 20.5 58l64 -15q-8 -57 -41 -88q-33 -31 -94 -31q-59 0 -97.5 28q-38.5 28 -44.5 90z" />
-<glyph unicode="&#62742;" horiz-adv-x="434" d="M109 333v65h18q15 0 37 1q22 1 35 4q40 10 68.5 41.5q28.5 31.5 28.5 79.5q0 66 -32 92.5q-32 26.5 -81 26.5q-39 0 -69 -7q-30 -7 -49 -18l-20 61q18 11 59.5 22q41.5 11 93.5 11q34 0 66 -8q32 -8 56.5 -27.5q24.5 -19.5 39.5 -53q15 -33.5 15 -83.5q0 -51 -25.5 -95.5q-25.5 -44.5 -78.5 -66.5l0 -4q56 -11 88.5 -53.5q32.5 -42.5 32.5 -114.5q0 -58 -17.5 -99q-17.5 -41 -47 -67.5q-29.5 -26.5 -68.5 -39q-39 -12.5 -81 -12.5q-53 0 -88.5 7q-35.5 7 -58.5 19l20 68q20 -11 52 -18q32 -7 78 -7q27 0 51 9.5q24 9.5 42 27.5q18 18 28.5 45.5q10.5 27.5 10.5 63.5q0 65 -34.5 94.5q-34.5 29.5 -92.5 34.5q-10 1 -17.5 1q-7.5 0 -18.5 0zM227 746h-53l-102 103v21h69l47 -50l14 -34l15 33l50 51h66l0 -22z" />
-<glyph unicode="&#62743;" horiz-adv-x="351" d="M97 224v62h55q14 0 27.5 6.5q13.5 6.5 24 17.5q10.5 11 17 25.5q6.5 14.5 6.5 30.5q0 39 -20.5 57q-20.5 18 -62.5 18q-31 0 -56.5 -9q-25.5 -9 -39.5 -19l-21 57q25 16 58.5 26q33.5 10 76.5 10q66 0 101.5 -30.5q35.5 -30.5 35.5 -91.5q0 -38 -19 -70q-19 -32 -52 -46l0 -4q46 -11 66 -42q20 -31 20 -82q0 -63 -42 -105.5q-42 -42.5 -129 -42.5q-40 0 -67.5 7.5q-27.5 7.5 -49.5 19.5l19 62q19 -12 45 -18q26 -6 54 -6q49 0 73.5 23q24.5 23 24.5 66q0 36 -23 57q-23 21 -77 21zM188 550h-38l-93 182h68l31 -66l17 -58l17 58l36 66l61 0z" />
-<glyph unicode="&#62744;" horiz-adv-x="549" d="M43 350q0 178 57 270q57 92 174 92q63 0 107 -25.5q44 -25.5 71.5 -72.5q27.5 -47 40.5 -114q13 -67 13 -150q0 -178 -57.5 -270q-57.5 -92 -174.5 -92q-62 0 -106 25.5q-44 25.5 -72 72.5q-28 47 -40.5 114q-12.5 67 -12.5 150zt0 0zM122 350q0 -59 8.5 -112q8.5 -53 26.5 -93q18 -40 47 -64q29 -24 70 -24q75 0 114 72q39 72 39 221q0 58 -8.5 111q-8.5 53 -26.5 93.5q-18 40.5 -47 64.5q-29 24 -71 24q-74 0 -113 -72q-39 -72 -39 -221zt0 0zM149 843h259v-62l-259 0z" />
-<glyph unicode="&#62745;" horiz-adv-x="432" d="M37 250q0 135 46.5 198.5q46.5 63.5 132.5 63.5q92 0 135.5 -65q43.5 -65 43.5 -197q0 -136 -47 -199q-47 -63 -132 -63q-92 0 -135.5 65q-43.5 65 -43.5 197zt0 0zM112 250q0 -44 5.5 -80q5.5 -36 18 -62q12.5 -26 32.5 -40.5q20 -14.5 48 -14.5q52 0 78 46.5q26 46.5 26 150.5q0 43 -5.5 79.5q-5.5 36.5 -18 62.5q-12.5 26 -32.5 40.5q-20 14.5 -48 14.5q-51 0 -77.5 -47q-26.5 -47 -26.5 -150zt0 0zM95 643h243v-59l-243 0z" />
-<glyph unicode="&#62746;" horiz-adv-x="549" d="M43 350q0 178 57 270q57 92 174 92q63 0 107 -25.5q44 -25.5 71.5 -72.5q27.5 -47 40.5 -114q13 -67 13 -150q0 -178 -57.5 -270q-57.5 -92 -174.5 -92q-62 0 -106 25.5q-44 25.5 -72 72.5q-28 47 -40.5 114q-12.5 67 -12.5 150zt0 0zM122 350q0 -59 8.5 -112q8.5 -53 26.5 -93q18 -40 47 -64q29 -24 70 -24q75 0 114 72q39 72 39 221q0 58 -8.5 111q-8.5 53 -26.5 93.5q-18 40.5 -47 64.5q-29 24 -71 24q-74 0 -113 -72q-39 -72 -39 -221zt0 0zM205 870q2 -37 20.5 -59q18.5 -22 50.5 -22q32 0 49.5 22q17.5 22 20.5 58l64 -15q-8 -57 -41 -88q-33 -31 -94 -31q-59 0 -97.5 28q-38.5 28 -44.5 90z" />
-<glyph unicode="&#62747;" horiz-adv-x="432" d="M37 250q0 135 46.5 198.5q46.5 63.5 132.5 63.5q92 0 135.5 -65q43.5 -65 43.5 -197q0 -136 -47 -199q-47 -63 -132 -63q-92 0 -135.5 65q-43.5 65 -43.5 197zt0 0zM112 250q0 -44 5.5 -80q5.5 -36 18 -62q12.5 -26 32.5 -40.5q20 -14.5 48 -14.5q52 0 78 46.5q26 46.5 26 150.5q0 43 -5.5 79.5q-5.5 36.5 -18 62.5q-12.5 26 -32.5 40.5q-20 14.5 -48 14.5q-51 0 -77.5 -47q-26.5 -47 -26.5 -150zt0 0zM148 702q5 -46 24.5 -65.5q19.5 -19.5 45.5 -19.5q26 0 45.5 21q19.5 21 24.5 63l55 -16q-8 -60 -43.5 -91.5q-35.5 -31.5 -83.5 -31.5q-23 0 -44.5 6.5q-21.5 6.5 -39 21q-17.5 14.5 -29.5 37.5q-12 23 -16 56z" />
-<glyph unicode="&#62748;" horiz-adv-x="549" d="M43 350q0 178 57 270q57 92 174 92q63 0 107 -25.5q44 -25.5 71.5 -72.5q27.5 -47 40.5 -114q13 -67 13 -150q0 -178 -57.5 -270q-57.5 -92 -174.5 -92q-62 0 -106 25.5q-44 25.5 -72 72.5q-28 47 -40.5 114q-12.5 67 -12.5 150zt0 0zM274 57q71 0 110 65q39 65 43 200l-305 0q2 -54 11.5 -102q9.5 -48 28 -84.5q18.5 -36.5 46 -57.5q27.5 -21 66.5 -21zt0 0zM274 643q-69 0 -108 -63q-39 -63 -44 -191l305 0q-3 52 -13 98q-10 46 -28.5 80.5q-18.5 34.5 -46 55q-27.5 20.5 -65.5 20.5zt0 0zM205 870q2 -37 20.5 -59q18.5 -22 50.5 -22q32 0 49.5 22q17.5 22 20.5 58l64 -15q-8 -57 -41 -88q-33 -31 -94 -31q-59 0 -97.5 28q-38.5 28 -44.5 90z" />
-<glyph unicode="&#62749;" horiz-adv-x="432" d="M37 250q0 131 46.5 196.5q46.5 65.5 132.5 65.5q92 0 135.5 -68.5q43.5 -68.5 43.5 -193.5q0 -133 -46.5 -197.5q-46.5 -64.5 -132.5 -64.5q-92 0 -135.5 68.5q-43.5 68.5 -43.5 193.5zt0 0zM320 279q-5 91 -33 129.5q-28 38.5 -71 38.5q-20 0 -38 -8.5q-18 -8.5 -32 -28q-14 -19.5 -23 -51.5q-9 -32 -11 -80zM112 220q3 -86 32.5 -126.5q29.5 -40.5 71.5 -40.5q19 0 37.5 8q18.5 8 32.5 27.5q14 19.5 23 51q9 31.5 11 80.5zM147 702q5 -46 24.5 -65.5q19.5 -19.5 45.5 -19.5q26 0 45.5 21q19.5 21 24.5 63l55 -16q-8 -60 -43.5 -91.5q-35.5 -31.5 -83.5 -31.5q-23 0 -44.5 6.5q-21.5 6.5 -39 21q-17.5 14.5 -29.5 37.5q-12 23 -16 56z" />
-<glyph unicode="&#62750;" horiz-adv-x="549" d="M43 350q0 178 57 270q57 92 174 92q63 0 107 -25.5q44 -25.5 71.5 -72.5q27.5 -47 40.5 -114q13 -67 13 -150q0 -178 -57.5 -270q-57.5 -92 -174.5 -92q-62 0 -106 25.5q-44 25.5 -72 72.5q-28 47 -40.5 114q-12.5 67 -12.5 150zt0 0zM274 57q71 0 110 65q39 65 43 200l-305 0q2 -54 11.5 -102q9.5 -48 28 -84.5q18.5 -36.5 46 -57.5q27.5 -21 66.5 -21zt0 0zM274 643q-69 0 -108 -63q-39 -63 -44 -191l305 0q-3 52 -13 98q-10 46 -28.5 80.5q-18.5 34.5 -46 55q-27.5 20.5 -65.5 20.5zt0 0zM149 794q0 21 12.5 34q12.5 13 34.5 13q21 0 33.5 -13q12.5 -13 12.5 -34q0 -21 -12.5 -33.5q-12.5 -12.5 -33.5 -12.5q-22 0 -34.5 12.5q-12.5 12.5 -12.5 33.5zt0 0zM307 794q0 21 12.5 34q12.5 13 33.5 13q22 0 34.5 -13q12.5 -13 12.5 -34q0 -21 -12.5 -33.5q-12.5 -12.5 -34.5 -12.5q-21 0 -33.5 12.5q-12.5 12.5 -12.5 33.5zt0 0zM208 993q2 -37 20.5 -59q18.5 -22 50.5 -22q32 0 49.5 22q17.5 22 20.5 58l64 -15q-8 -57 -41 -88q-33 -31 -94 -31q-59 0 -97.5 28q-38.5 28 -44.5 90z" />
-<glyph unicode="&#62751;" horiz-adv-x="432" d="M37 250q0 131 46.5 196.5q46.5 65.5 132.5 65.5q92 0 135.5 -68.5q43.5 -68.5 43.5 -193.5q0 -133 -46.5 -197.5q-46.5 -64.5 -132.5 -64.5q-92 0 -135.5 68.5q-43.5 68.5 -43.5 193.5zt0 0zM320 279q-5 91 -33 129.5q-28 38.5 -71 38.5q-20 0 -38 -8.5q-18 -8.5 -32 -28q-14 -19.5 -23 -51.5q-9 -32 -11 -80zM112 220q3 -86 32.5 -126.5q29.5 -40.5 71.5 -40.5q19 0 37.5 8q18.5 8 32.5 27.5q14 19.5 23 51q9 31.5 11 80.5zM94 633q0 23 11.5 36q11.5 13 31.5 13q20 0 31.5 -13q11.5 -13 11.5 -36q0 -21 -11.5 -34q-11.5 -13 -31.5 -13q-20 0 -31.5 13q-11.5 13 -11.5 34zt0 0zM253 633q0 23 11.5 36q11.5 13 31.5 13q20 0 31.5 -13q11.5 -13 11.5 -36q0 -21 -11.5 -34q-11.5 -13 -31.5 -13q-20 0 -31.5 13q-11.5 13 -11.5 34zt0 0zM150 851q2 -37 20.5 -59q18.5 -22 50.5 -22q32 0 49.5 22q17.5 22 20.5 58l64 -15q-8 -57 -41 -88q-33 -31 -94 -31q-59 0 -97.5 28q-38.5 28 -44.5 90z" />
-<glyph unicode="&#62752;" horiz-adv-x="622" d="M483 700h75v-700h-75zM64 700h75v-272q9 2 30 5.5q21 3.5 41 3.5q39 0 74.5 -9q35.5 -9 62.5 -32.5q27 -23.5 43 -64.5q16 -41 16 -104q0 -122 -56.5 -178.5q-56.5 -56.5 -157.5 -56.5q-23 0 -59.5 2.5q-36.5 2.5 -68.5 11.5zM199 61q60 0 94 39q34 39 34 120q0 44 -10 72.5q-10 28.5 -27.5 45.5q-17.5 17 -41.5 23.5q-24 6.5 -52 6.5q-14 0 -31.5 -3q-17.5 -3 -25.5 -6l0 -291q20 -7 60 -7zt0 0zM174 843h259v-62l-259 0z" />
-<glyph unicode="&#62753;" horiz-adv-x="538" d="M131 65q30 -6 55 -6q48 0 67 25.5q19 25.5 19 73.5q0 45 -18.5 70.5q-18.5 25.5 -65.5 25.5q-13 0 -28 -1.5q-15 -1.5 -29 -5.5zM131 309q20 4 38 5.5q18 1.5 34 1.5q41 0 69 -11.5q28 -11.5 44.5 -31.5q16.5 -20 23.5 -47.5q7 -27.5 7 -58.5q0 -91 -40.5 -132q-40.5 -41 -134.5 -41q-58 0 -113 6l0 500h72zM407 500h72v-500h-72zM141 643h243v-59l-243 0z" />
-<glyph unicode="&#62754;" horiz-adv-x="465" d="M118 390h229q-5 127 -53.5 190q-48.5 63 -124.5 63q-38 0 -67 -9q-29 -9 -50 -22l-22 62q28 18 66.5 28q38.5 10 80.5 10q55 0 100 -19.5q45 -19.5 77 -62.5q32 -43 50 -112q18 -69 18 -167q0 -99 -20 -168.5q-20 -69.5 -55 -112.5q-35 -43 -82 -62.5q-47 -19.5 -102 -19.5q-41 0 -74.5 7q-33.5 7 -56.5 18l21 68q19 -10 50 -17q31 -7 64 -7q34 0 65.5 14.5q31.5 14.5 56.5 46q25 31.5 40.5 82q15.5 50.5 17.5 123.5l-229 0zM64 843h259v-62l-259 0z" />
-<glyph unicode="&#62755;" horiz-adv-x="372" d="M94 283h166q-3 78 -31.5 121q-28.5 43 -80.5 43q-32 0 -56 -9q-24 -9 -39 -20l-25 57q23 17 56 27q33 10 76 10q90 0 132.5 -65q42.5 -65 42.5 -197q0 -131 -48.5 -196.5q-48.5 -65.5 -136.5 -65.5q-77 0 -122 24l20 64q19 -11 45 -17q26 -6 50 -6q111 0 117 168l-166 0zM39 643h243v-59l-243 0z" />
-<glyph unicode="&#62756;" horiz-adv-x="465" d="M118 390h229q-5 127 -53.5 190q-48.5 63 -124.5 63q-38 0 -67 -9q-29 -9 -50 -22l-22 62q28 18 66.5 28q38.5 10 80.5 10q55 0 100 -19.5q45 -19.5 77 -62.5q32 -43 50 -112q18 -69 18 -167q0 -99 -20 -168.5q-20 -69.5 -55 -112.5q-35 -43 -82 -62.5q-47 -19.5 -102 -19.5q-41 0 -74.5 7q-33.5 7 -56.5 18l21 68q19 -10 50 -17q31 -7 64 -7q34 0 65.5 14.5q31.5 14.5 56.5 46q25 31.5 40.5 82q15.5 50.5 17.5 123.5l-229 0zM122 870q2 -37 20.5 -59q18.5 -22 50.5 -22q32 0 49.5 22q17.5 22 20.5 58l64 -15q-8 -57 -41 -88q-33 -31 -94 -31q-59 0 -97.5 28q-38.5 28 -44.5 90z" />
-<glyph unicode="&#62757;" horiz-adv-x="372" d="M94 283h166q-3 78 -31.5 121q-28.5 43 -80.5 43q-32 0 -56 -9q-24 -9 -39 -20l-25 57q23 17 56 27q33 10 76 10q90 0 132.5 -65q42.5 -65 42.5 -197q0 -131 -48.5 -196.5q-48.5 -65.5 -136.5 -65.5q-77 0 -122 24l20 64q19 -11 45 -17q26 -6 50 -6q111 0 117 168l-166 0zM96 702q5 -46 24.5 -65.5q19.5 -19.5 45.5 -19.5q26 0 45.5 21q19.5 21 24.5 63l55 -16q-8 -60 -43.5 -91.5q-35.5 -31.5 -83.5 -31.5q-23 0 -44.5 6.5q-21.5 6.5 -39 21q-17.5 14.5 -29.5 37.5q-12 23 -16 56z" />
-<glyph unicode="&#62758;" horiz-adv-x="469" d="M432 27q-25 -21 -64 -30q-39 -9 -81 -9q-53 0 -98 20q-45 20 -77.5 63.5q-32.5 43.5 -50.5 112.5q-18 69 -18 166q0 100 20.5 169q20.5 69 54.5 112q34 43 78.5 62q44.5 19 91.5 19q48 0 81 -7q33 -7 56 -17l-19 -68q-19 11 -47.5 17q-28.5 6 -63.5 6q-32 0 -61.5 -13q-29.5 -13 -52.5 -42.5q-23 -29.5 -38.5 -76.5q-15.5 -47 -19.5 -115l242 0v-69h-243q5 -135 55 -202.5q50 -67.5 130 -67.5q35 0 62 9.5q27 9.5 45 22.5zM144 794q0 21 12.5 34q12.5 13 34.5 13q21 0 33.5 -13q12.5 -13 12.5 -34q0 -21 -12.5 -33.5q-12.5 -12.5 -33.5 -12.5q-22 0 -34.5 12.5q-12.5 12.5 -12.5 33.5zt0 0zM302 794q0 21 12.5 34q12.5 13 33.5 13q22 0 34.5 -13q12.5 -13 12.5 -34q0 -21 -12.5 -33.5q-12.5 -12.5 -34.5 -12.5q-21 0 -33.5 12.5t-12.5 33.5z" />
-<glyph unicode="&#62759;" horiz-adv-x="376" d="M351 24q-23 -17 -57.5 -26q-34.5 -9 -68.5 -9q-48 0 -83.5 18.5q-35.5 18.5 -59 52.5q-23.5 34 -34.5 82.5q-11 48.5 -11 107.5q0 127 52.5 194q52.5 67 140.5 67q38 0 65.5 -6q27.5 -6 48.5 -18l-19 -63q-20 11 -43 16.5q-23 5.5 -47 5.5q-54 0 -85.5 -40q-31.5 -40 -37.5 -121l182 0v-62h-182q2 -34 10.5 -64.5q8.5 -30.5 24 -54q15.5 -23.5 38.5 -37q23 -13.5 56 -13.5q27 0 51 8.5q24 8.5 38 19.5zM88 633q0 23 11.5 36q11.5 13 31.5 13q20 0 31.5 -13q11.5 -13 11.5 -36q0 -21 -11.5 -34q-11.5 -13 -31.5 -13q-20 0 -31.5 13q-11.5 13 -11.5 34zt0 0zM247 633q0 23 11.5 36q11.5 13 31.5 13q20 0 31.5 -13q11.5 -13 11.5 -36q0 -21 -11.5 -34q-11.5 -13 -31.5 -13q-20 0 -31.5 13t-11.5 34z" />
-<glyph unicode="&#62760;" horiz-adv-x="461" d="M397 0h-75v307l-80 -21l-136 -286h-87l123 253l48 42q-58 15 -94.5 64.5q-36.5 49.5 -36.5 136.5q0 62 17 103q17 41 46 65.5q29 24.5 68 34q39 9.5 83 9.5q27 0 60.5 -3q33.5 -3 63.5 -12zM267 639q-26 0 -49 -6.5q-23 -6.5 -41 -23q-18 -16.5 -28.5 -44q-10.5 -27.5 -10.5 -69.5q0 -77 37 -111q37 -34 93 -34h54v282q-11 4 -24 5q-13 1 -31 1zt0 0zM125 843h259v-62l-259 0z" />
-<glyph unicode="&#62761;" horiz-adv-x="387" d="M262 207l-61 -12l-101 -195h-85l93 172l32 36q-41 8 -69.5 42q-28.5 34 -28.5 92q0 90 48.5 130q48.5 40 132.5 40q31 0 58.5 -4.5q27.5 -4.5 52.5 -10.5l0 -497h-72zM262 253v185q-10 5 -23 7q-13 2 -23 2q-48 0 -73.5 -25q-25.5 -25 -25.5 -76q0 -46 29 -71.5q29 -25.5 77 -23.5zM76 643h243v-59l-243 0z" />
-<glyph unicode="&#62762;" horiz-adv-x="461" d="M397 0h-75v307l-80 -21l-136 -286h-87l123 253l48 42q-58 15 -94.5 64.5q-36.5 49.5 -36.5 136.5q0 62 17 103q17 41 46 65.5q29 24.5 68 34q39 9.5 83 9.5q27 0 60.5 -3q33.5 -3 63.5 -12zM267 639q-26 0 -49 -6.5q-23 -6.5 -41 -23q-18 -16.5 -28.5 -44q-10.5 -27.5 -10.5 -69.5q0 -77 37 -111q37 -34 93 -34h54v282q-11 4 -24 5q-13 1 -31 1zt0 0zM181 870q2 -37 20.5 -59q18.5 -22 50.5 -22q32 0 49.5 22q17.5 22 20.5 58l64 -15q-8 -57 -41 -88q-33 -31 -94 -31q-59 0 -97.5 28q-38.5 28 -44.5 90z" />
-<glyph unicode="&#62763;" horiz-adv-x="387" d="M262 207l-61 -12l-101 -195h-85l93 172l32 36q-41 8 -69.5 42q-28.5 34 -28.5 92q0 90 48.5 130q48.5 40 132.5 40q31 0 58.5 -4.5q27.5 -4.5 52.5 -10.5l0 -497h-72zM262 253v185q-10 5 -23 7q-13 2 -23 2q-48 0 -73.5 -25q-25.5 -25 -25.5 -76q0 -46 29 -71.5q29 -25.5 77 -23.5zM133 702q5 -46 24.5 -65.5q19.5 -19.5 45.5 -19.5q26 0 45.5 21q19.5 21 24.5 63l55 -16q-8 -60 -43.5 -91.5q-35.5 -31.5 -83.5 -31.5q-23 0 -44.5 6.5q-21.5 6.5 -39 21q-17.5 14.5 -29.5 37.5q-12 23 -16 56z" />
-<glyph unicode="&#62764;" horiz-adv-x="719" d="M139 392h95q5 155 59 237.5q54 82.5 163 82.5q61 0 103.5 -25.5q42.5 -25.5 68 -72.5q25.5 -47 37 -114q11.5 -67 11.5 -150q0 -177 -52.5 -269.5q-52.5 -92.5 -168.5 -92.5q-59 0 -100 23.5q-41 23.5 -68 67.5q-27 44 -40 105.5q-13 61.5 -14 138.5l-94 0v-323h-75v700h75zM310 350q0 -59 7.5 -112q7.5 -53 24.5 -93.5q17 -40.5 45 -64q28 -23.5 69 -23.5q75 0 108 71.5q33 71.5 33 221.5q0 58 -6.5 111.5q-6.5 53.5 -22.5 93.5q-16 40 -43 64q-27 24 -69 24q-75 0 -110.5 -72q-35.5 -72 -35.5 -221zt0 0zM249 843h259v-62l-259 0z" />
-<glyph unicode="&#62765;" horiz-adv-x="581" d="M377 -11q-88 0 -126 61q-38 61 -43 175l-77 0v-225h-72v500h72v-210h78q7 111 47.5 166q40.5 55 121.5 55q89 0 127.5 -68.5q38.5 -68.5 38.5 -192.5q0 -133 -41 -197q-41 -64 -126 -64zt0 0zM279 250q0 -40 4.5 -75.5q4.5 -35.5 16 -62.5q11.5 -27 30.5 -42.5q19 -15.5 48 -15.5q49 0 70 45.5q21 45.5 21 150.5q0 43 -4.5 79q-4.5 36 -15 62q-10.5 26 -28 40.5q-17.5 14.5 -44.5 14.5q-52 0 -75 -48.5q-23 -48.5 -23 -147.5zt0 0zM163 643h243v-59l-243 0z" />
-<glyph unicode="&#62766;" horiz-adv-x="719" d="M139 392h95q5 155 59 237.5q54 82.5 163 82.5q61 0 103.5 -25.5q42.5 -25.5 68 -72.5q25.5 -47 37 -114q11.5 -67 11.5 -150q0 -177 -52.5 -269.5q-52.5 -92.5 -168.5 -92.5q-59 0 -100 23.5q-41 23.5 -68 67.5q-27 44 -40 105.5q-13 61.5 -14 138.5l-94 0v-323h-75v700h75zM310 350q0 -59 7.5 -112q7.5 -53 24.5 -93.5q17 -40.5 45 -64q28 -23.5 69 -23.5q75 0 108 71.5q33 71.5 33 221.5q0 58 -6.5 111.5q-6.5 53.5 -22.5 93.5q-16 40 -43 64q-27 24 -69 24q-75 0 -110.5 -72q-35.5 -72 -35.5 -221zt0 0zM285 870q2 -37 20.5 -59q18.5 -22 50.5 -22q32 0 49.5 22q17.5 22 20.5 58l64 -15q-8 -57 -41 -88q-33 -31 -94 -31q-59 0 -97.5 28q-38.5 28 -44.5 90z" />
-<glyph unicode="&#62767;" horiz-adv-x="581" d="M377 -11q-88 0 -126 61q-38 61 -43 175l-77 0v-225h-72v500h72v-210h78q7 111 47.5 166q40.5 55 121.5 55q89 0 127.5 -68.5q38.5 -68.5 38.5 -192.5q0 -133 -41 -197q-41 -64 -126 -64zt0 0zM279 250q0 -40 4.5 -75.5q4.5 -35.5 16 -62.5q11.5 -27 30.5 -42.5q19 -15.5 48 -15.5q49 0 70 45.5q21 45.5 21 150.5q0 43 -4.5 79q-4.5 36 -15 62q-10.5 26 -28 40.5q-17.5 14.5 -44.5 14.5q-52 0 -75 -48.5q-23 -48.5 -23 -147.5zt0 0zM216 702q5 -46 24.5 -65.5q19.5 -19.5 45.5 -19.5q26 0 45.5 21q19.5 21 24.5 63l55 -16q-8 -60 -43.5 -91.5q-35.5 -31.5 -83.5 -31.5q-23 0 -44.5 6.5q-21.5 6.5 -39 21q-17.5 14.5 -29.5 37.5q-12 23 -16 56z" />
-<glyph unicode="&#62768;" horiz-adv-x="533" d="M363 631h-158q-8 -201 -21 -336q-13 -135 -40 -208q-17 -48 -42 -70q-25 -22 -57 -22q-29 0 -49 10l11 68q20 -6 37 2.5q17 8.5 32 46.5q11 27 20.5 72.5q9.5 45.5 17 115.5q7.5 70 12.5 166q5 96 7 224l305 0v-631h73v-198h-52l-12 129l-84 0z" />
-<glyph unicode="&#62769;" horiz-adv-x="426" d="M276 435h-109q-3 -85 -8 -164.5q-5 -79.5 -17.5 -140.5q-12.5 -61 -35.5 -97.5q-23 -36.5 -61 -36.5q-17 0 -29 2q-12 2 -22 7l11 63q21 -6 37.5 2.5q16.5 8.5 28.5 52q12 43.5 19.5 133q7.5 89.5 10.5 244.5l247 0v-435h61v-192h-49l-13 127l-71 0z" />
-<glyph unicode="&#62770;" horiz-adv-x="544" d="M139 700v-465l-7 -90h4l35 94l260 461h49v-728q0 -102 -32.5 -147.5q-32.5 -45.5 -110.5 -34.5l0 65q23 0 36.5 9q13.5 9 20.5 27q7 18 9 45.5q2 27.5 2 63.5v458l6 92h-3l-35 -94l-259 -456h-50v700zM210 870q2 -37 20.5 -59q18.5 -22 50.5 -22q32 0 49.5 22q17.5 22 20.5 58l64 -15q-8 -57 -41 -88q-33 -31 -94 -31q-59 0 -97.5 28q-38.5 28 -44.5 90z" />
-<glyph unicode="&#62771;" horiz-adv-x="439" d="M131 500v-297l-6 -73h4l33 82l171 288h47v-529q0 -92 -27.5 -136q-27.5 -44 -87.5 -43q-6 0 -12 0.5q-6 0.5 -13 1.5l0 63q45 -1 56.5 34.5q11.5 35.5 11.5 108.5v288l6 76h-4l-35 -84l-169 -280h-47v500zM159 702q5 -46 24.5 -65.5q19.5 -19.5 45.5 -19.5q26 0 45.5 21q19.5 21 24.5 63l55 -16q-8 -60 -43.5 -91.5q-35.5 -31.5 -83.5 -31.5q-23 0 -44.5 6.5q-21.5 6.5 -39 21q-17.5 14.5 -29.5 37.5q-12 23 -16 56z" />
-<glyph unicode="&#62772;" horiz-adv-x="549" d="M43 350q0 178 57 270q57 92 174 92q63 0 107 -25.5q44 -25.5 71.5 -72.5q27.5 -47 40.5 -114q13 -67 13 -150q0 -178 -57.5 -270q-57.5 -92 -174.5 -92q-62 0 -106 25.5q-44 25.5 -72 72.5q-28 47 -40.5 114q-12.5 67 -12.5 150zt0 0zM122 350q0 -59 8.5 -112q8.5 -53 26.5 -93q18 -40 47 -64q29 -24 70 -24q75 0 114 72q39 72 39 221q0 58 -8.5 111q-8.5 53 -26.5 93.5q-18 40.5 -47 64.5q-29 24 -71 24q-74 0 -113 -72q-39 -72 -39 -221zt0 0zM219 797q0 21 14 36.5q14 15.5 40 15.5q26 0 40.5 -15.5q14.5 -15.5 14.5 -36.5q0 -23 -14.5 -38q-14.5 -15 -40.5 -15q-26 0 -40 15t-14 38z" />
-<glyph unicode="&#62773;" horiz-adv-x="432" d="M37 250q0 135 46.5 198.5q46.5 63.5 132.5 63.5q92 0 135.5 -65q43.5 -65 43.5 -197q0 -136 -47 -199q-47 -63 -132 -63q-92 0 -135.5 65q-43.5 65 -43.5 197zt0 0zM112 250q0 -44 5.5 -80q5.5 -36 18 -62q12.5 -26 32.5 -40.5q20 -14.5 48 -14.5q52 0 78 46.5q26 46.5 26 150.5q0 43 -5.5 79.5q-5.5 36.5 -18 62.5q-12.5 26 -32.5 40.5q-20 14.5 -48 14.5q-51 0 -77.5 -47q-26.5 -47 -26.5 -150zt0 0zM167 652q0 24 13.5 39q13.5 15 35.5 15q22 0 36.5 -14.5q14.5 -14.5 14.5 -39.5q0 -24 -14.5 -37.5q-14.5 -13.5 -36.5 -13.5q-22 0 -35.5 14t-13.5 37z" />
-<glyph unicode="&#62774;" horiz-adv-x="622" d="M483 700h75v-700h-75zM64 700h75v-272q9 2 30 5.5q21 3.5 41 3.5q39 0 74.5 -9q35.5 -9 62.5 -32.5q27 -23.5 43 -64.5q16 -41 16 -104q0 -122 -56.5 -178.5q-56.5 -56.5 -157.5 -56.5q-23 0 -59.5 2.5q-36.5 2.5 -68.5 11.5zM199 61q60 0 94 39q34 39 34 120q0 44 -10 72.5q-10 28.5 -27.5 45.5q-17.5 17 -41.5 23.5q-24 6.5 -52 6.5q-14 0 -31.5 -3q-17.5 -3 -25.5 -6l0 -291q20 -7 60 -7zt0 0zM246 870q2 -37 20.5 -59q18.5 -22 50.5 -22q32 0 49.5 22q17.5 22 20.5 58l64 -15q-8 -57 -41 -88q-33 -31 -94 -31q-59 0 -97.5 28q-38.5 28 -44.5 90z" />
-<glyph unicode="&#62775;" horiz-adv-x="538" d="M131 65q30 -6 55 -6q48 0 67 25.5q19 25.5 19 73.5q0 45 -18.5 70.5q-18.5 25.5 -65.5 25.5q-13 0 -28 -1.5q-15 -1.5 -29 -5.5zM131 309q20 4 38 5.5q18 1.5 34 1.5q41 0 69 -11.5q28 -11.5 44.5 -31.5q16.5 -20 23.5 -47.5q7 -27.5 7 -58.5q0 -91 -40.5 -132q-40.5 -41 -134.5 -41q-58 0 -113 6l0 500h72zM407 500h72v-500h-72zM197 702q5 -46 24.5 -65.5q19.5 -19.5 45.5 -19.5q26 0 45.5 21q19.5 21 24.5 63l55 -16q-8 -60 -43.5 -91.5q-35.5 -31.5 -83.5 -31.5q-23 0 -44.5 6.5q-21.5 6.5 -39 21q-17.5 14.5 -29.5 37.5q-12 23 -16 56z" />
-<glyph unicode="&#62776;" horiz-adv-x="447" d="M290 333q-10 0 -17.5 0q-7.5 0 -16.5 -1q-59 -5 -93.5 -34q-34.5 -29 -34.5 -97q0 -71 36.5 -107.5q36.5 -36.5 98.5 -36.5q34 0 66.5 10.5q32.5 10.5 49.5 21.5l23 -61q-21 -14 -59.5 -27q-38.5 -13 -91.5 -13q-92 0 -147 51q-55 51 -55 158q0 75 31.5 118q31.5 43 86.5 55l0 4q-26 10 -45 28q-19 18 -31.5 40.5q-12.5 22.5 -18.5 47.5q-6 25 -6 50q0 46 14.5 78.5q14.5 32.5 40 53.5q25.5 21 59.5 30.5q34 9.5 72 9.5q45 0 84 -10.5q39 -10.5 58 -24.5l-21 -64q-22 12 -53 21q-31 9 -60 9q-54 0 -84.5 -25q-30.5 -25 -30.5 -85q0 -29 9 -51q9 -22 24 -38.5q15 -16.5 34.5 -27q19.5 -10.5 39.5 -14.5q13 -2 32 -3q19 -1 33 -1h14v-65zM117 794q0 21 12.5 34q12.5 13 34.5 13q21 0 33.5 -13q12.5 -13 12.5 -34q0 -21 -12.5 -33.5q-12.5 -12.5 -33.5 -12.5q-22 0 -34.5 12.5q-12.5 12.5 -12.5 33.5zt0 0zM275 794q0 21 12.5 34q12.5 13 33.5 13q22 0 34.5 -13q12.5 -13 12.5 -34q0 -21 -12.5 -33.5q-12.5 -12.5 -34.5 -12.5q-21 0 -33.5 12.5t-12.5 33.5z" />
-<glyph unicode="&#62777;" horiz-adv-x="353" d="M210 225q-54 0 -77.5 -21.5q-23.5 -21.5 -23.5 -57.5q0 -38 25 -64q25 -26 74 -26q30 0 55.5 7.5q25.5 7.5 42.5 18.5l19 -60q-19 -12 -48.5 -21.5q-29.5 -9.5 -71.5 -9.5q-85 0 -126.5 40q-41.5 40 -41.5 109q0 51 19.5 80q19.5 29 64.5 44l0 4q-33 14 -51 44q-18 30 -18 71q0 62 36.5 93q36.5 31 98.5 31q47 0 79.5 -9.5q32.5 -9.5 57.5 -25.5l-22 -58q-17 11 -40.5 19.5q-23.5 8.5 -53.5 8.5q-84 0 -84 -76q0 -16 6.5 -30.5q6.5 -14.5 17.5 -25.5q11 -11 24.5 -17.5q13.5 -6.5 27.5 -6.5h55v-61zM69 633q0 23 11.5 36q11.5 13 31.5 13q20 0 31.5 -13q11.5 -13 11.5 -36q0 -21 -11.5 -34q-11.5 -13 -31.5 -13q-20 0 -31.5 13q-11.5 13 -11.5 34zt0 0zM228 633q0 23 11.5 36q11.5 13 31.5 13q20 0 31.5 -13q11.5 -13 11.5 -36q0 -21 -11.5 -34q-11.5 -13 -31.5 -13q-20 0 -31.5 13t-11.5 34z" />
-<glyph unicode="&#62778;" horiz-adv-x="233" d="M79 700h75v-700h-75zM62 797q0 21 14 36.5q14 15.5 40 15.5q26 0 40.5 -15.5q14.5 -15.5 14.5 -36.5q0 -23 -14.5 -38q-14.5 -15 -40.5 -15q-26 0 -40 15t-14 38z" />
-<glyph unicode="&#62779;" horiz-adv-x="217" d="M72 500h72v-500l-72 0z" />
-<glyph unicode="&#62780;" horiz-adv-x="413" d="M64 700h311v-69h-236v-247h220v-69h-220v-315l-75 0z" />
-<glyph unicode="&#62781;" horiz-adv-x="326" d="M297 435h-166v-161h148v-65h-148v-209h-72v500l238 0z" />
-<glyph unicode="&#62782;" horiz-adv-x="458" d="M430 27q-20 -17 -49 -26q-29 -9 -62 -12l-12 -168h-47l-15 170q-45 7 -82 31.5q-37 24.5 -64 68q-27 43.5 -41.5 108q-14.5 64.5 -14.5 151.5q0 100 20.5 169q20.5 69 54.5 112q34 43 78.5 62q44.5 19 91.5 19q48 0 79.5 -7q31.5 -7 54.5 -17l-18 -68q-20 11 -47 17q-27 6 -62 6q-35 0 -66 -15.5q-31 -15.5 -55 -50q-24 -34.5 -38 -90.5q-14 -56 -14 -137q0 -146 50 -218q50 -72 133 -72q34 0 61 8q27 8 46 21z" />
-<glyph unicode="&#62783;" horiz-adv-x="356" d="M335 25q-17 -14 -38.5 -22q-21.5 -8 -44.5 -12l-12 -170h-47l-15 170q-38 6 -65 27q-27 21 -44 54.5q-17 33.5 -24.5 78.5q-7.5 45 -7.5 99q0 128 45.5 195q45.5 67 130.5 67q39 0 67 -7q28 -7 48 -18v-62q-58 22 -107 22q-54 0 -81.5 -47.5q-27.5 -47.5 -27.5 -149.5q0 -41 6 -76.5q6 -35.5 20 -62q14 -26.5 36 -42q22 -15.5 55 -15.5q26 0 48.5 8.5q22.5 8.5 36.5 20.5z" />
-<glyph unicode="&#62784;" horiz-adv-x="525" d="M64 700q16 3 35.5 4.5q19.5 1.5 39.5 2q20 0.5 39.5 1q19.5 0.5 36.5 0.5q73 0 124 -25q51 -25 83 -71.5q32 -46.5 46 -111.5q14 -65 14 -145q0 -72 -13.5 -138q-13.5 -66 -45.5 -116q-32 -50 -84.5 -80q-52.5 -30 -131.5 -30q-13 0 -33 0.5q-20 0.5 -41.5 2q-21.5 1.5 -40 2.5q-18.5 1 -28.5 3zM219 639q-10 0 -21.5 0q-11.5 0 -22.5 -1q-11 -1 -20.5 -2q-9.5 -1 -15.5 -2l0 -570q4 -1 14.5 -1.5q10.5 -0.5 22 -1q11.5 -0.5 22 -1q10.5 -0.5 15.5 -0.5q55 0 92 24q37 24 58.5 64.5q21.5 40.5 30.5 94q9 53.5 9 113.5q0 53 -8 104q-8 51 -28.5 90.5q-20.5 39.5 -56 64q-35.5 24.5 -91.5 24.5zt0 0zM265 870h99v-21l-131 -97l-61 0z" />
-<glyph unicode="&#62785;" horiz-adv-x="433" d="M374 172q0 -51 1 -92.5q1 -41.5 7 -81.5l-49 0l-16 60h-4q-14 -30 -44 -50q-30 -20 -72 -20q-81 0 -120.5 63q-39.5 63 -39.5 198q0 128 48.5 194q48.5 66 133.5 66q29 0 46 -3.5q17 -3.5 37 -11.5l0 206h72zM302 421q-14 12 -31.5 17.5q-17.5 5.5 -46.5 5.5q-53 0 -82.5 -48q-29.5 -48 -29.5 -148q0 -44 5.5 -79.5q5.5 -35.5 17 -61.5q11.5 -26 30 -40q18.5 -14 45.5 -14q72 0 92 85zM441 700h78v-21l-82 -128l-43 0z" />
-<glyph unicode="&#62786;" horiz-adv-x="536" d="M397 323h-258v-323h-75v700h75v-308h258v308h75v-700h-75zM306 870h99v-21l-131 -97l-61 0z" />
-<glyph unicode="&#62787;" horiz-adv-x="440" d="M315 0v304q0 70 -16.5 106.5q-16.5 36.5 -65.5 36.5q-35 0 -63.5 -25q-28.5 -25 -38.5 -63l0 -359h-72v700h72v-247h3q20 26 49.5 42.5q29.5 16.5 73.5 16.5q33 0 57.5 -9q24.5 -9 40.5 -31q16 -22 24 -58.5q8 -36.5 8 -90.5v-323zM258 720h78v-21l-82 -128l-43 0z" />
-<glyph unicode="&#62788;" horiz-adv-x="415" d="M401 0h-337v700h75v-631h262zM246 700h78v-21l-82 -128l-43 0z" />
-<glyph unicode="&#62789;" horiz-adv-x="233" d="M136 119q0 -35 9.5 -50q9.5 -15 26.5 -15q21 0 49 11l7 -58q-13 -8 -36.5 -13q-23.5 -5 -42.5 -5q-38 0 -61.5 23.5q-23.5 23.5 -23.5 82.5v605h72zM209 700h78v-21l-82 -128l-43 0z" />
-<glyph unicode="&#62790;" horiz-adv-x="447" d="M433 631h-172v-631h-75v631h-172v69h419zM280 870h99v-21l-131 -97l-61 0z" />
-<glyph unicode="&#62791;" horiz-adv-x="275" d="M9 500h61v99l72 23v-122h108v-65h-108v-298q0 -44 10.5 -63.5q10.5 -19.5 34.5 -19.5q20 0 34.5 4.5q14.5 4.5 31.5 11.5l14 -57q-22 -11 -48.5 -17.5q-26.5 -6.5 -55.5 -6.5q-50 0 -71.5 32.5q-21.5 32.5 -21.5 105.5v308h-61zM234 700h78v-21l-82 -128l-43 0z" />
-<glyph unicode="&#62792;" horiz-adv-x="463" d="M218 221l18 -107h2l20 109l130 477h77l-212 -711h-40l-215 711h83zM275 870h99v-21l-131 -97l-61 0z" />
-<glyph unicode="&#62793;" horiz-adv-x="388" d="M180 207l20 -99h2l18 101l88 291h76l-171 -511h-35l-174 511h82zM207 720h78v-21l-82 -128l-43 0z" />
-<glyph unicode="&#62794;" horiz-adv-x="434" d="M109 333v65h18q15 0 37 1q22 1 35 4q40 10 68.5 41.5q28.5 31.5 28.5 79.5q0 66 -32 92.5q-32 26.5 -81 26.5q-39 0 -69 -7q-30 -7 -49 -18l-20 61q18 11 59.5 22q41.5 11 93.5 11q34 0 66 -8q32 -8 56.5 -27.5q24.5 -19.5 39.5 -53q15 -33.5 15 -83.5q0 -51 -25.5 -95.5q-25.5 -44.5 -78.5 -66.5l0 -4q56 -11 88.5 -53.5q32.5 -42.5 32.5 -114.5q0 -58 -17.5 -99q-17.5 -41 -47 -67.5q-29.5 -26.5 -68.5 -39q-39 -12.5 -81 -12.5q-53 0 -88.5 7q-35.5 7 -58.5 19l20 68q20 -11 52 -18q32 -7 78 -7q27 0 51 9.5q24 9.5 42 27.5q18 18 28.5 45.5q10.5 27.5 10.5 63.5q0 65 -34.5 94.5q-34.5 29.5 -92.5 34.5q-10 1 -17.5 1q-7.5 0 -18.5 0z" />
-<glyph unicode="&#62795;" horiz-adv-x="349" d="M91 157v62h51q14 0 28.5 9.5q14.5 9.5 26 26.5q11.5 17 19 39q7.5 22 7.5 48q0 53 -22 76.5q-22 23.5 -66 23.5q-29 0 -52.5 -8.5q-23.5 -8.5 -39.5 -18.5l-20 58q24 15 57 24.5q33 9.5 75 9.5q68 0 104.5 -38q36.5 -38 36.5 -108q0 -27 -6.5 -52.5q-6.5 -25.5 -17.5 -47q-11 -21.5 -25 -37.5q-14 -16 -29 -23l0 -4q22 -8 40 -21.5q18 -13.5 31.5 -35q13.5 -21.5 21 -52.5q7.5 -31 7.5 -74q0 -57 -14 -99q-14 -42 -38.5 -69.5q-24.5 -27.5 -58 -41q-33.5 -13.5 -72.5 -13.5q-38 0 -66 8q-28 8 -50 19l23 61q18 -11 41.5 -17q23.5 -6 42.5 -6q25 0 46.5 8.5q21.5 8.5 37.5 27.5q16 19 25 49.5q9 30.5 9 74.5q0 72 -32.5 106.5q-32.5 34.5 -87.5 34.5z" />
-<glyph unicode="&#62796;" horiz-adv-x="434" d="M109 333v65h18q15 0 37 1q22 1 35 4q40 10 68.5 41.5q28.5 31.5 28.5 79.5q0 66 -32 92.5q-32 26.5 -81 26.5q-39 0 -69 -7q-30 -7 -49 -18l-20 61q18 11 59.5 22q41.5 11 93.5 11q34 0 66 -8q32 -8 56.5 -27.5q24.5 -19.5 39.5 -53q15 -33.5 15 -83.5q0 -51 -25.5 -95.5q-25.5 -44.5 -78.5 -66.5l0 -4q56 -11 88.5 -53.5q32.5 -42.5 32.5 -114.5q0 -58 -17.5 -99q-17.5 -41 -47 -67.5q-29.5 -26.5 -68.5 -39q-39 -12.5 -81 -12.5q-53 0 -88.5 7q-35.5 7 -58.5 19l20 68q20 -11 52 -18q32 -7 78 -7q27 0 51 9.5q24 9.5 42 27.5q18 18 28.5 45.5q10.5 27.5 10.5 63.5q0 65 -34.5 94.5q-34.5 29.5 -92.5 34.5q-10 1 -17.5 1q-7.5 0 -18.5 0zM223 746h-53l-102 103v21h69l47 -50l14 -34l15 33l50 51h66l0 -22z" />
-<glyph unicode="&#62797;" horiz-adv-x="349" d="M91 157v62h51q14 0 28.5 9.5q14.5 9.5 26 26.5q11.5 17 19 39q7.5 22 7.5 48q0 53 -22 76.5q-22 23.5 -66 23.5q-29 0 -52.5 -8.5q-23.5 -8.5 -39.5 -18.5l-20 58q24 15 57 24.5q33 9.5 75 9.5q68 0 104.5 -38q36.5 -38 36.5 -108q0 -27 -6.5 -52.5q-6.5 -25.5 -17.5 -47q-11 -21.5 -25 -37.5q-14 -16 -29 -23l0 -4q22 -8 40 -21.5q18 -13.5 31.5 -35q13.5 -21.5 21 -52.5q7.5 -31 7.5 -74q0 -57 -14 -99q-14 -42 -38.5 -69.5q-24.5 -27.5 -58 -41q-33.5 -13.5 -72.5 -13.5q-38 0 -66 8q-28 8 -50 19l23 61q18 -11 41.5 -17q23.5 -6 42.5 -6q25 0 46.5 8.5q21.5 8.5 37.5 27.5q16 19 25 49.5q9 30.5 9 74.5q0 72 -32.5 106.5q-32.5 34.5 -87.5 34.5zM174 550h-38l-93 182h68l31 -66l17 -58l17 58l36 66l61 0z" />
-<glyph unicode="&#63020;" horiz-adv-x="162" d="M130 445q0 -23 -12.5 -36.5q-12.5 -13.5 -32.5 -13.5q-23 0 -38.5 17q-15.5 17 -15.5 52q0 33 8.5 57q8.5 24 20.5 41q12 17 24.5 27q12.5 10 21.5 15l23 -33q-17 -12 -29.5 -32q-12.5 -20 -11.5 -47q19 3 30.5 -10.5t11.5 -36.5z" />
-<glyph unicode="&#63021;" horiz-adv-x="162" d="M31 484q0 23 13 36q13 13 33 13q24 0 39 -16.5q15 -16.5 15 -50.5q0 -32 -8 -56q-8 -24 -19.5 -40.5q-11.5 -16.5 -24.5 -27q-13 -10.5 -22 -15.5l-23 30q17 11 29.5 31.5q12.5 20.5 11.5 47.5q-18 -3 -31 10t-13 38z" />
-<glyph unicode="&#63022;" horiz-adv-x="288" d="M130 445q0 -23 -12.5 -36.5q-12.5 -13.5 -32.5 -13.5q-23 0 -38.5 17q-15.5 17 -15.5 52q0 33 8.5 57q8.5 24 20.5 41q12 17 24.5 27q12.5 10 21.5 15l23 -33q-17 -12 -29.5 -32q-12.5 -20 -11.5 -47q19 3 30.5 -10.5q11.5 -13.5 11.5 -36.5zt0 0zM256 445q0 -23 -12.5 -36.5q-12.5 -13.5 -32.5 -13.5q-23 0 -38.5 17q-15.5 17 -15.5 52q0 33 8.5 57q8.5 24 20.5 41q12 17 24.5 27q12.5 10 21.5 15l23 -33q-17 -12 -29.5 -32q-12.5 -20 -11.5 -47q19 3 30.5 -10.5t11.5 -36.5z" />
-<glyph unicode="&#63023;" horiz-adv-x="288" d="M31 484q0 23 13 36q13 13 33 13q24 0 39 -16.5q15 -16.5 15 -50.5q0 -32 -8 -56q-8 -24 -19.5 -40.5q-11.5 -16.5 -24.5 -27q-13 -10.5 -22 -15.5l-23 30q17 11 29.5 31.5q12.5 20.5 11.5 47.5q-18 -3 -31 10q-13 13 -13 38zt0 0zM157 484q0 23 13 36q13 13 33 13q24 0 39 -16.5q15 -16.5 15 -50.5q0 -32 -8 -56q-8 -24 -19.5 -40.5q-11.5 -16.5 -24.5 -27q-13 -10.5 -22 -15.5l-23 30q17 11 29.5 31.5q12.5 20.5 11.5 47.5q-18 -3 -31 10t-13 38z" />
-<glyph unicode="&#63028;" horiz-adv-x="181" d="M72 525h69l-26 -193l-43 0z" />
-<glyph unicode="&#63029;" horiz-adv-x="286" d="M72 525h69l-26 -193h-43zM177 525h69l-26 -193l-43 0z" />
-<glyph unicode="&#63074;" horiz-adv-x="330" d="M149 595l6 36l-22 -29l-59 -41l-26 44l124 102h41v-427l-64 0z" />
-<glyph unicode="&#63171;" horiz-adv-x="219" d="M61 -102q0 21 13 34q13 13 31 13q22 0 38 -17q16 -17 16 -58q0 -26 -7.5 -45.5q-7.5 -19.5 -18 -34q-10.5 -14.5 -22 -23q-11.5 -8.5 -20.5 -12.5l-27 27q17 13 28.5 31.5q11.5 18.5 10.5 42.5q-17 -2 -29.5 9t-12.5 33z" />
-<glyph unicode="&#63177;" horiz-adv-x="312" d="M153 870h99v-21l-131 -97l-61 0z" />
-<glyph unicode="&#63178;" horiz-adv-x="381" d="M215 746h-53l-102 103v21h69l47 -50l14 -34l15 33l50 51h66l0 -22z" />
-<glyph unicode="&#63179;" horiz-adv-x="371" d="M60 794q0 21 12.5 34q12.5 13 34.5 13q21 0 33.5 -13q12.5 -13 12.5 -34q0 -21 -12.5 -33.5q-12.5 -12.5 -33.5 -12.5q-22 0 -34.5 12.5q-12.5 12.5 -12.5 33.5zt0 0zM218 794q0 21 12.5 34q12.5 13 33.5 13q22 0 34.5 -13q12.5 -13 12.5 -34q0 -21 -12.5 -33.5q-12.5 -12.5 -34.5 -12.5q-21 0 -33.5 12.5t-12.5 33.5z" />
-<glyph unicode="&#63182;" horiz-adv-x="312" d="M252 752h-65l-127 97v21l99 0z" />
-<glyph unicode="&#63183;" horiz-adv-x="393" d="M111 850h81v-16l-80 -93h-52zM247 850h86v-16l-115 -93l-52 0z" />
-<glyph unicode="&#63184;" horiz-adv-x="379" d="M60 843h259v-62l-259 0z" />
-<glyph unicode="&#63185;" horiz-adv-x="397" d="M132 870q2 -37 20.5 -59q18.5 -22 50.5 -22q32 0 49.5 22q17.5 22 20.5 58l64 -15q-8 -57 -41 -88q-33 -31 -94 -31q-59 0 -97.5 28q-38.5 28 -44.5 90z" />
-<glyph unicode="&#63188;" horiz-adv-x="376" d="M121 702q5 -46 24.5 -65.5q19.5 -19.5 45.5 -19.5q26 0 45.5 21q19.5 21 24.5 63l55 -16q-8 -60 -43.5 -91.5q-35.5 -31.5 -83.5 -31.5q-23 0 -44.5 6.5q-21.5 6.5 -39 21q-17.5 14.5 -29.5 37.5q-12 23 -16 56z" />
-<glyph unicode="&#64257;" horiz-adv-x="437" d="M376 500v-500h-72v435h-155v-435h-72v435h-61v65h61v28q0 94 38 136.5q38 42.5 111 42.5q49 0 85.5 -9.5q36.5 -9.5 59.5 -21.5v-60q-47 14 -76.5 20q-29.5 6 -61.5 6q-28 0 -44.5 -9.5q-16.5 -9.5 -25.5 -28q-9 -18.5 -11.5 -45q-2.5 -26.5 -2.5 -59.5z" />
-<glyph unicode="&#64258;" horiz-adv-x="469" d="M300 639q-11 2 -32.5 5q-21.5 3 -42.5 3q-26 0 -41 -10q-15 -10 -23 -28.5q-8 -18.5 -10 -46q-2 -27.5 -2 -62.5l79 0v-65h-79v-435h-72v435h-61v65h61v28q0 94 33.5 139q33.5 45 112.5 45q16 0 37.5 -1.5q21.5 -1.5 42.5 -4q21 -2.5 39.5 -5.5q18.5 -3 29.5 -7l0 -580q0 -33 9.5 -47q9.5 -14 26.5 -14q22 0 50 11l5 -58q-13 -8 -35.5 -13q-22.5 -5 -43.5 -5q-38 0 -61 24q-23 24 -23 82z" />
diff --git a/admin/survey/Fonts/PTSans/PTN57F_W.ttf b/admin/survey/Fonts/PTSans/PTN57F_W.ttf
deleted file mode 100644
index c48b4a6..0000000
--- a/admin/survey/Fonts/PTSans/PTN57F_W.ttf
+++ /dev/null
Binary files differ
diff --git a/admin/survey/Fonts/PTSans/PTN57F_W.woff b/admin/survey/Fonts/PTSans/PTN57F_W.woff
deleted file mode 100644
index 4267d7a..0000000
--- a/admin/survey/Fonts/PTSans/PTN57F_W.woff
+++ /dev/null
Binary files differ
diff --git a/admin/survey/Fonts/PTSans/PTN77F_W.eot b/admin/survey/Fonts/PTSans/PTN77F_W.eot
deleted file mode 100644
index 4a5d1f9..0000000
--- a/admin/survey/Fonts/PTSans/PTN77F_W.eot
+++ /dev/null
Binary files differ
diff --git a/admin/survey/Fonts/PTSans/PTN77F_W.svg b/admin/survey/Fonts/PTSans/PTN77F_W.svg
deleted file mode 100644
index 5558347..0000000
--- a/admin/survey/Fonts/PTSans/PTN77F_W.svg
+++ /dev/null
@@ -1,728 +0,0 @@
-<?xml version="1.0" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
-<svg xmlns="http://www.w3.org/2000/svg">
-<metadata>
-Generated by SVGconv.
-Copyright : Copyright 2009 ParaType Ltd. All rights reserved.
-Designer : A.Korolkova, O.Umpeleva, V.Yefimov
-Foundry : ParaType Ltd
-Foundry URL : http://www.paratype.com
-</metadata>
-<defs>
-<font id="PTSans-NarrowBold" horiz-adv-x="448" >
-<font-face units-per-em="1000" ascent="1018" descent="276" />
-<missing-glyph horiz-adv-x="750" />
-<glyph unicode="&#32;" horiz-adv-x="205" />
-<glyph unicode="&#33;" horiz-adv-x="251" d="M83 700h123v-329l-24 -163h-75l-24 163zM72 65q0 37 19.5 56q19.5 19 51.5 19q35 0 54 -19q19 -19 19 -56q0 -36 -19.5 -56q-19.5 -20 -53.5 -20q-33 0 -52 20t-19 56z" />
-<glyph unicode="&#34;" horiz-adv-x="351" d="M73 700h103l-31 -216h-72zM207 700h103l-31 -216l-72 0z" />
-<glyph unicode="&#35;" horiz-adv-x="478" d="M242 205h-69l-30 -154h-97l30 154h-61l21 95h58l22 110h-60l21 95h57l29 144h98l-29 -144h69l29 144h97l-29 -144h59l-22 -95h-55l-22 -110h58l-22 -95h-54l-30 -154h-98zM192 300h69l21 110l-69 0z" />
-<glyph unicode="&#36;" horiz-adv-x="478" d="M194 -13q-48 2 -82 11.5q-34 9.5 -54 22.5l33 107q15 -11 41.5 -20q26.5 -9 61.5 -13l0 220q-26 15 -51 33q-25 18 -44.5 42.5q-19.5 24.5 -32 57q-12.5 32.5 -12.5 77.5q0 78 38 123.5q38 45.5 102 59.5l0 92h95v-88q35 -2 62 -9.5q27 -7.5 51 -19.5l-33 -104q-15 8 -35 14.5q-20 6.5 -45 9.5l0 -197q26 -16 51.5 -34.5q25.5 -18.5 46 -43.5q20.5 -25 33.5 -57q13 -32 13 -75q0 -86 -39 -136q-39 -50 -105 -66l0 -94h-95zM248 96q32 6 48 29.5q16 23.5 16 57.5q0 34 -18 56.5q-18 22.5 -46 41.5zM236 605q-36 -4 -49.5 -25.5q-13.5 -21.5 -13.5 -46.5q0 -31 18 -52.5q18 -21.5 45 -40.5z" />
-<glyph unicode="&#37;" horiz-adv-x="720" d="M41 542q0 46 11 78q11 32 31 52.5q20 20.5 47.5 30q27.5 9.5 60.5 9.5q33 0 60.5 -8.5q27.5 -8.5 47.5 -28.5q20 -20 31.5 -52.5q11.5 -32.5 11.5 -80.5q0 -48 -11.5 -80.5q-11.5 -32.5 -31.5 -52.5q-20 -20 -47.5 -28.5q-27.5 -8.5 -60.5 -8.5q-33 0 -60.5 8.5q-27.5 8.5 -47.5 28.5q-20 20 -31 52.5q-11 32.5 -11 80.5zt0 0zM147 542q0 -48 10.5 -67.5q10.5 -19.5 33.5 -19.5q12 0 20.5 3.5q8.5 3.5 14 13.5q5.5 10 8 27q2.5 17 2.5 43q0 51 -11 69q-11 18 -34 18q-23 0 -33.5 -18q-10.5 -18 -10.5 -69zt0 0zM389 170q0 46 11 78q11 32 31 52.5q20 20.5 47.5 30q27.5 9.5 60.5 9.5q33 0 60.5 -8.5q27.5 -8.5 47.5 -28.5q20 -20 31.5 -52.5q11.5 -32.5 11.5 -80.5q0 -48 -11.5 -80.5q-11.5 -32.5 -31.5 -52.5q-20 -20 -47.5 -28.5q-27.5 -8.5 -60.5 -8.5q-33 0 -60.5 8.5q-27.5 8.5 -47.5 28.5q-20 20 -31 52.5q-11 32.5 -11 80.5zt0 0zM495 170q0 -48 10.5 -67.5q10.5 -19.5 33.5 -19.5q12 0 20.5 3.5q8.5 3.5 14 13.5q5.5 10 8 27q2.5 17 2.5 43q0 51 -11 69q-11 18 -34 18q-23 0 -33.5 -18q-10.5 -18 -10.5 -69zt0 0zM575 714l70 -58l-494 -670l-71 59z" />
-<glyph unicode="&#38;" horiz-adv-x="671" d="M70 194q0 38 10.5 72q10.5 34 29.5 64q19 30 44.5 55.5q25.5 25.5 54.5 45.5q-21 33 -34.5 68q-13.5 35 -13.5 73q0 25 8 50.5q8 25.5 26 46q18 20.5 46.5 33q28.5 12.5 69.5 12.5q39 0 67 -10.5q28 -10.5 45.5 -28q17.5 -17.5 25.5 -40.5q8 -23 8 -48q0 -42 -25 -86.5q-25 -44.5 -82 -86.5q25 -47 53.5 -94.5q28.5 -47.5 63.5 -91.5q19 25 32 59.5q13 34.5 24 71.5l89 -41q-5 -18 -14 -41q-9 -23 -20 -45.5q-11 -22.5 -22 -43q-11 -20.5 -21 -34.5q25 -29 46.5 -46.5q21.5 -17.5 42.5 -30.5l-61 -91q-27 13 -52.5 34q-25.5 21 -49.5 49q-30 -34 -73.5 -58.5q-43.5 -24.5 -108.5 -24.5q-45 0 -83.5 13.5q-38.5 13.5 -66.5 40q-28 26.5 -43.5 65.5q-15.5 39 -15.5 89zt0 0zM392 148q-40 53 -72.5 103.5q-32.5 50.5 -55.5 98.5q-35 -35 -55 -68.5q-20 -33.5 -20 -78.5q0 -51 28.5 -79.5q28.5 -28.5 74.5 -28.5q32 0 59 16.5q27 16.5 41 36.5zt0 0zM280 566q0 -44 29 -90q29 25 42 47.5q13 22.5 13 42.5q0 23 -10.5 37.5q-10.5 14.5 -32.5 14.5q-20 0 -30.5 -14.5t-10.5 -37.5z" />
-<glyph unicode="&#39;" horiz-adv-x="217" d="M73 700h103l-31 -216l-72 0z" />
-<glyph unicode="&#40;" horiz-adv-x="278" d="M186 -220q-38 48 -64 105.5q-26 57.5 -42.5 118q-16.5 60.5 -24 122q-7.5 61.5 -7.5 117.5q0 55 7.5 116q7.5 61 24 122.5q16.5 61.5 43 120.5q26.5 59 65.5 110l80 -45q-27 -47 -46 -99.5q-19 -52.5 -31.5 -107.5q-12.5 -55 -18 -110.5q-5.5 -55.5 -5.5 -106.5q0 -48 6 -103q6 -55 18 -110.5q12 -55.5 31.5 -107.5q19.5 -52 46.5 -94z" />
-<glyph unicode="&#41;" horiz-adv-x="278" d="M92 712q38 -48 64 -105.5q26 -57.5 42.5 -118q16.5 -60.5 24 -122q7.5 -61.5 7.5 -117.5q0 -55 -7.5 -116q-7.5 -61 -24 -122.5q-16.5 -61.5 -43 -120.5q-26.5 -59 -65.5 -110l-81 46q30 50 49.5 103q19.5 53 31 107q11.5 54 16.5 108q5 54 5 105q0 48 -6 103.5q-6 55.5 -19 111q-13 55.5 -32 107.5q-19 52 -45 95z" />
-<glyph unicode="&#42;" horiz-adv-x="323" d="M123 724l24 -43l13 -56l11 52l26 47l59 -34l-27 -49l-42 -40l55 15h52v-70h-50l-52 16l45 -45l22 -40l-60 -35l-24 43l-16 61l-10 -55l-26 -47l-60 35l27 48l39 34l-47 -15h-53v71h54l50 -16l-45 41l-25 47z" />
-<glyph unicode="&#43;" horiz-adv-x="444" d="M38 393h129v146h110v-146h129v-106h-129v-147h-110v147l-129 0z" />
-<glyph unicode="&#44;" horiz-adv-x="216" d="M33 65q0 34 20 53.5q20 19.5 50 19.5q38 0 58.5 -27q20.5 -27 20.5 -75q0 -44 -12.5 -76q-12.5 -32 -30.5 -53.5q-18 -21.5 -38.5 -34.5q-20.5 -13 -35.5 -19l-37 48q23 12 41 38.5q18 26.5 20 53.5q-21 -1 -38.5 16.5t-17.5 55.5z" />
-<glyph unicode="&#45;" horiz-adv-x="298" d="M45 344h208v-114l-208 0z" />
-<glyph unicode="&#46;" horiz-adv-x="212" d="M34 65q0 37 19.5 56q19.5 19 51.5 19q35 0 54 -19q19 -19 19 -56q0 -36 -19.5 -56q-19.5 -20 -53.5 -20q-33 0 -52 20t-19 56z" />
-<glyph unicode="&#47;" horiz-adv-x="349" d="M276 712l91 -35l-293 -817l-92 35z" />
-<glyph unicode="&#48;" horiz-adv-x="478" d="M35 351q0 98 13.5 167q13.5 69 39.5 112.5q26 43.5 64 63.5q38 20 87 20q52 0 90.5 -20q38.5 -20 64 -63.5q25.5 -43.5 38 -112.5q12.5 -69 12.5 -167q0 -99 -14 -168.5q-14 -69.5 -40 -113q-26 -43.5 -64 -63.5q-38 -20 -87 -20q-52 0 -90.5 20.5q-38.5 20.5 -63.5 65q-25 44.5 -37.5 113.5q-12.5 69 -12.5 166zt0 0zM154 351q0 -134 20 -196.5q20 -62.5 66 -62.5q22 0 38.5 14q16.5 14 26.5 45q10 31 15 80q5 49 5 120q0 133 -19.5 195q-19.5 62 -66.5 62q-23 0 -39 -14q-16 -14 -26 -45q-10 -31 -15 -80t-5 -118z" />
-<glyph unicode="&#49;" horiz-adv-x="478" d="M87 106h114v393l13 68l-41 -59l-66 -51l-55 67l193 188h70v-606h112v-106l-340 0z" />
-<glyph unicode="&#50;" horiz-adv-x="478" d="M402 532q0 -52 -15 -106.5q-15 -54.5 -38.5 -106.5q-23.5 -52 -51.5 -99q-28 -47 -55 -83l-44 -41v-5l60 15h155v-106h-351v69q21 26 45.5 59.5q24.5 33.5 49 71q24.5 37.5 47.5 78q23 40.5 40.5 81q17.5 40.5 28 79.5q10.5 39 8.5 73q2 42 -18 68q-20 26 -63 26q-25 0 -51 -11.5q-26 -11.5 -44 -27.5l-46 87q33 28 75 44.5q42 16.5 99 16.5q36 0 67 -11.5q31 -11.5 53.5 -34.5q22.5 -23 35.5 -57t13 -79z" />
-<glyph unicode="&#51;" horiz-adv-x="478" d="M200 92q49 0 74.5 33q25.5 33 25.5 84q0 113 -112 113h-59v68l99 168l48 45l-66 -9h-137v106h320v-71l-116 -189l-37 -27v-5l37 6q28 -2 54 -15q26 -13 45.5 -37q19.5 -24 31 -60q11.5 -36 11.5 -85q0 -59 -16.5 -102q-16.5 -43 -45 -72q-28.5 -29 -67 -43q-38.5 -14 -82.5 -14q-37 0 -78 8q-41 8 -65 23l32 100q21 -11 46 -18t57 -7z" />
-<glyph unicode="&#52;" horiz-adv-x="478" d="M465 195h-88v-195h-113v195h-247v74l256 436h104v-408h88zM264 452l11 90h-4l-30 -81l-79 -134l-40 -38l51 8l91 0z" />
-<glyph unicode="&#53;" horiz-adv-x="478" d="M183 95q54 0 82 35q28 35 28 90q0 63 -33 91q-33 28 -95 28l-65 -4v365h291v-116h-189v-143l33 4q81 -3 129 -60q48 -57 48 -160q0 -59 -17 -104q-17 -45 -46.5 -75q-29.5 -30 -70.5 -45q-41 -15 -89 -15q-36 0 -72.5 7.5q-36.5 7.5 -59.5 19.5l31 101q37 -19 95 -19z" />
-<glyph unicode="&#54;" horiz-adv-x="478" d="M438 217q0 -53 -14.5 -96q-14.5 -43 -40 -73q-25.5 -30 -61 -46q-35.5 -16 -77.5 -16q-44 0 -81 15.5q-37 15.5 -64 47.5q-27 32 -42 82.5q-15 50.5 -15 119.5q0 102 24.5 182.5q24.5 80.5 66 138.5q41.5 58 95 93.5q53.5 35.5 112.5 48.5l30 -97q-39 -10 -73 -32q-34 -22 -61 -53q-27 -31 -45.5 -70.5q-18.5 -39.5 -27.5 -83.5q17 24 43 39q26 15 64 15q36 0 66.5 -13q30.5 -13 53 -40q22.5 -27 35 -67.5q12.5 -40.5 12.5 -94.5zt0 0zM323 210q0 61 -20.5 88.5q-20.5 27.5 -62.5 27.5q-30 0 -51 -17q-21 -17 -30 -40q-1 -11 -1 -22.5q0 -11.5 0 -22.5q0 -26 5 -49.5q5 -23.5 15.5 -42q10.5 -18.5 26 -29.5q15.5 -11 37.5 -11q36 0 58.5 30.5t22.5 87.5z" />
-<glyph unicode="&#55;" horiz-adv-x="478" d="M88 0l189 547l36 49l-50 -10h-211v114h379v-38l-227 -662z" />
-<glyph unicode="&#56;" horiz-adv-x="478" d="M50 168q0 36 8 64.5q8 28.5 22 51q14 22.5 31.5 40.5q17.5 18 37.5 33q-39 31 -61.5 71.5q-22.5 40.5 -22.5 100.5q0 85 47.5 135q47.5 50 130.5 50q76 0 123 -44q47 -44 47 -125q0 -59 -22 -100q-22 -41 -63 -76q50 -35 75 -79q25 -44 25 -111q0 -45 -14.5 -81q-14.5 -36 -40 -61q-25.5 -25 -60.5 -38q-35 -13 -76 -13q-42 0 -76 12.5q-34 12.5 -59 35.5q-25 23 -38.5 57q-13.5 34 -13.5 77zt0 0zM313 179q0 25 -8 45q-8 20 -21.5 35.5q-13.5 15.5 -30 28.5q-16.5 13 -32.5 25q-35 -27 -48.5 -58.5q-13.5 -31.5 -13.5 -63.5q0 -42 21 -70.5q21 -28.5 59 -28.5q34 0 54 21.5q20 21.5 20 65.5zt0 0zM179 527q0 -23 6.5 -40.5q6.5 -17.5 17.5 -31.5q11 -14 25.5 -25.5q14.5 -11.5 30.5 -21.5q23 27 34.5 53.5q11.5 26.5 11.5 60.5q0 41 -18.5 63.5q-18.5 22.5 -44.5 22.5q-33 0 -48 -24.5t-15 -56.5z" />
-<glyph unicode="&#57;" horiz-adv-x="478" d="M37 481q0 106 50.5 169.5q50.5 63.5 145.5 63.5q93 0 148.5 -66q55.5 -66 55.5 -198q0 -116 -25 -200.5q-25 -84.5 -67 -140.5q-42 -56 -97 -86q-55 -30 -114 -37l-28 100q90 18 140 78.5q50 60.5 64 146.5q-19 -25 -41 -35q-22 -10 -57 -10q-31 0 -62.5 12.5q-31.5 12.5 -56.5 39q-25 26.5 -40.5 67q-15.5 40.5 -15.5 96.5zt0 0zM152 488q0 -57 24.5 -86.5q24.5 -29.5 62.5 -29.5q29 0 49 10.5q20 10.5 31 29.5q2 11 2.5 23q0.5 12 0.5 23q0 31 -5 58.5q-5 27.5 -16 47.5q-11 20 -28 32q-17 12 -41 12q-38 0 -59 -32t-21 -88z" />
-<glyph unicode="&#58;" horiz-adv-x="251" d="M77 427q0 37 19.5 56q19.5 19 51.5 19q35 0 54 -19q19 -19 19 -56q0 -36 -19.5 -56q-19.5 -20 -53.5 -20q-33 0 -52 20q-19 20 -19 56zt0 0zM77 65q0 37 19.5 56q19.5 19 51.5 19q35 0 54 -19q19 -19 19 -56q0 -36 -19.5 -56q-19.5 -20 -53.5 -20q-33 0 -52 20t-19 56z" />
-<glyph unicode="&#59;" horiz-adv-x="251" d="M72 65q0 34 20 53.5q20 19.5 50 19.5q38 0 58.5 -27q20.5 -27 20.5 -75q0 -44 -12.5 -76q-12.5 -32 -30.5 -53.5q-18 -21.5 -38.5 -34.5q-20.5 -13 -35.5 -19l-37 48q23 12 41 38.5q18 26.5 20 53.5q-21 -1 -38.5 16.5q-17.5 17.5 -17.5 55.5zt0 0zM73 427q0 37 19.5 56q19.5 19 51.5 19q35 0 54 -19q19 -19 19 -56q0 -36 -19.5 -56q-19.5 -20 -53.5 -20q-33 0 -52 20t-19 56z" />
-<glyph unicode="&#60;" horiz-adv-x="444" d="M35 285v70l311 222l60 -81l-186 -139l-75 -35l74 -31l191 -137l-60 -81z" />
-<glyph unicode="&#61;" horiz-adv-x="444" d="M38 489h368v-106h-368zM38 297h368v-106l-368 0z" />
-<glyph unicode="&#62;" horiz-adv-x="444" d="M409 365v-70l-309 -220l-62 80l187 138l74 36l-74 30l-191 138l62 79z" />
-<glyph unicode="&#63;" horiz-adv-x="382" d="M113 208q-4 46 4 80.5q8 34.5 22 61q14 26.5 32 47.5q18 21 34 41.5q16 20.5 26.5 43q10.5 22.5 10.5 50.5q0 35 -16.5 55.5q-16.5 20.5 -54.5 20.5q-26 0 -55 -10.5q-29 -10.5 -50 -28.5l-47 90q31 23 73 39q42 16 102 16q80 0 125.5 -43.5q45.5 -43.5 45.5 -122.5q0 -47 -11 -79.5q-11 -32.5 -28 -57q-17 -24.5 -36.5 -44.5q-19.5 -20 -36 -42q-16.5 -22 -28 -50q-11.5 -28 -11.5 -67zM97 65q0 37 19.5 56q19.5 19 51.5 19q35 0 54 -19q19 -19 19 -56q0 -36 -19.5 -56q-19.5 -20 -53.5 -20q-33 0 -52 20t-19 56z" />
-<glyph unicode="&#64;" horiz-adv-x="881" d="M558 484h66l-39 -273q-12 -91 29 -91q20 0 39.5 12q19.5 12 35 37q15.5 25 25 64q9.5 39 9.5 93q0 69 -19.5 118.5q-19.5 49.5 -54.5 81q-35 31.5 -83 46.5q-48 15 -105 15q-64 0 -119.5 -25.5q-55.5 -25.5 -96 -71.5q-40.5 -46 -64 -110q-23.5 -64 -23.5 -142q0 -153 76 -233q76 -80 213 -80q26 0 57.5 7q31.5 7 56.5 20l29 -87q-32 -17 -70 -25.5q-38 -8.5 -86 -8.5q-79 0 -147.5 24q-68.5 24 -119.5 73.5q-51 49.5 -80.5 126q-29.5 76.5 -29.5 181.5q0 105 33.5 188q33.5 83 89.5 140q56 57 129 87q73 30 153 30q76 0 142.5 -22.5q66.5 -22.5 115 -67q48.5 -44.5 76.5 -111q28 -66.5 28 -154.5q0 -66 -19.5 -122.5q-19.5 -56.5 -52.5 -97q-33 -40.5 -77.5 -63.5q-44.5 -23 -94.5 -23q-41 0 -69.5 21q-28.5 21 -26.5 73l-3 0q-23 -38 -55.5 -66q-32.5 -28 -79.5 -28q-43 0 -73 38q-30 38 -30 106q0 67 16.5 126q16.5 59 44.5 103.5q28 44.5 65 70.5q37 26 79 26q28 0 48 -10q20 -10 37 -27zM505 369q-18 21 -47 21q-23 0 -42 -16.5q-19 -16.5 -33 -44q-14 -27.5 -22 -63q-8 -35.5 -8 -73.5q0 -35 11.5 -54q11.5 -19 35.5 -19q22 0 44.5 24.5q22.5 24.5 37.5 54.5z" />
-<glyph unicode="&#65;" horiz-adv-x="501" d="M328 158h-165l-41 -158h-125l203 705h99l204 -705h-132zM190 262h116l-40 163l-16 110h-4l-17 -111z" />
-<glyph unicode="&#66;" horiz-adv-x="490" d="M445 538q0 -26 -5.5 -51.5q-5.5 -25.5 -17.5 -48q-12 -22.5 -31.5 -39.5q-19.5 -17 -46.5 -26l0 -6q24 -6 45.5 -18q21.5 -12 37.5 -32.5q16 -20.5 25.5 -50q9.5 -29.5 9.5 -69.5q0 -54 -18.5 -93.5q-18.5 -39.5 -50 -64.5q-31.5 -25 -73.5 -37q-42 -12 -89 -12q-14 0 -36 0q-22 0 -47.5 1.5q-25.5 1.5 -52.5 4.5q-27 3 -50 9l0 690q33 6 81.5 10.5q48.5 4.5 96.5 4.5q44 0 84.5 -7q40.5 -7 71 -26q30.5 -19 48.5 -52.5q18 -33.5 18 -86.5zt0 0zM234 99q42 0 69 27q27 27 27 79q0 33 -9 52.5q-9 19.5 -24 30q-15 10.5 -34.5 13.5q-19.5 3 -40.5 3h-51v-199q8 -3 27.5 -4.5q19.5 -1.5 35.5 -1.5zt0 0zM200 403q11 0 25.5 1.5q14.5 1.5 23.5 3.5q29 11 49.5 36q20.5 25 20.5 65q0 26 -7 44q-7 18 -19 28.5q-12 10.5 -28.5 15q-16.5 4.5 -35.5 4.5q-41 0 -58 -4l0 -194z" />
-<glyph unicode="&#67;" horiz-adv-x="457" d="M442 28q-26 -22 -69.5 -32q-43.5 -10 -86.5 -10q-54 0 -100.5 18.5q-46.5 18.5 -81.5 61.5q-35 43 -55 113q-20 70 -20 172q0 106 22.5 176q22.5 70 59 111.5q36.5 41.5 83.5 58.5q47 17 95 17q49 0 85.5 -8q36.5 -8 59.5 -18l-25 -111q-19 10 -44.5 15.5q-25.5 5.5 -60.5 5.5q-69 0 -106 -60q-37 -60 -37 -188q0 -55 8.5 -100.5q8.5 -45.5 27 -78.5q18.5 -33 47 -51q28.5 -18 68.5 -18q35 0 60 9.5q25 9.5 45 22.5z" />
-<glyph unicode="&#68;" horiz-adv-x="535" d="M45 700q18 3 40.5 4.5q22.5 1.5 46 3q23.5 1.5 45.5 2q22 0.5 39 0.5q83 0 138.5 -25.5q55.5 -25.5 89 -72q33.5 -46.5 47.5 -111.5q14 -65 14 -145q0 -73 -13.5 -139.5q-13.5 -66.5 -47.5 -117q-34 -50.5 -92 -80.5q-58 -30 -146 -30q-13 0 -35 1q-22 1 -46 2.5q-24 1.5 -46 3q-22 1.5 -34 3.5zM229 594q-16 0 -32.5 -0.5q-16.5 -0.5 -25.5 -2.5l0 -482q3 -1 10.5 -1.5q7.5 -0.5 16 -1q8.5 -0.5 16 -1q7.5 -0.5 10.5 -0.5q45 0 74 21q29 21 45.5 56q16.5 35 23 80.5q6.5 45.5 6.5 95.5q0 46 -5.5 89q-5.5 43 -21 75.5q-15.5 32.5 -44 52t-73.5 19.5z" />
-<glyph unicode="&#69;" horiz-adv-x="430" d="M45 700h350v-116h-224v-172h203v-116h-203v-180h228v-116l-354 0z" />
-<glyph unicode="&#70;" horiz-adv-x="419" d="M45 700h350v-116h-224v-182h206v-116h-206v-286l-126 0z" />
-<glyph unicode="&#71;" horiz-adv-x="502" d="M257 362h216v-310q-37 -35 -86.5 -50.5q-49.5 -15.5 -98.5 -15.5q-59 0 -107 21q-48 21 -81.5 65.5q-33.5 44.5 -52 113q-18.5 68.5 -18.5 164.5q0 100 22 169q22 69 58.5 112.5q36.5 43.5 85 63q48.5 19.5 102.5 19.5q48 0 87.5 -8.5q39.5 -8.5 65.5 -19.5v-109q-46 9 -72.5 15q-26.5 6 -64.5 6q-35 0 -63.5 -14q-28.5 -14 -48 -44q-19.5 -30 -30 -77.5q-10.5 -47.5 -10.5 -113.5q0 -127 38.5 -187q38.5 -60 101.5 -60q20 0 38.5 6q18.5 6 32.5 19l0 143l-115 16z" />
-<glyph unicode="&#72;" horiz-adv-x="533" d="M362 296h-191v-296h-126v700h126v-288h191v288h126v-700l-126 0z" />
-<glyph unicode="&#73;" horiz-adv-x="238" d="M56 700h126v-700l-126 0z" />
-<glyph unicode="&#74;" horiz-adv-x="289" d="M113 700h126v-509q0 -46 -7.5 -83.5q-7.5 -37.5 -24.5 -64q-17 -26.5 -45 -41q-28 -14.5 -70 -14.5q-29 0 -57.5 6q-28.5 6 -51.5 17l29 106q21 -13 49 -13q35 0 43.5 29.5q8.5 29.5 8.5 84.5z" />
-<glyph unicode="&#75;" horiz-adv-x="519" d="M198 300h-27v-300h-126v700h126v-311l25 12l147 299h142l-160 -295l-47 -37l48 -38l185 -330l-154 0z" />
-<glyph unicode="&#76;" horiz-adv-x="424" d="M417 0h-372v700h126v-584l246 0z" />
-<glyph unicode="&#77;" horiz-adv-x="664" d="M493 361l14 134h-5l-37 -120l-114 -246h-42l-121 247l-37 121h-6l19 -135v-362h-119v700h121l146 -303l24 -87h4l23 89l137 301h119v-700l-126 0z" />
-<glyph unicode="&#78;" horiz-adv-x="540" d="M199 344l-46 123h-5l16 -121v-346h-119v705h97l201 -352l43 -121h6l-16 119v349h119v-705l-97 0z" />
-<glyph unicode="&#79;" horiz-adv-x="553" d="M29 350q0 178 61 271q61 93 186 93q65 0 112 -25.5q47 -25.5 77 -73q30 -47.5 44.5 -115q14.5 -67.5 14.5 -150.5q0 -178 -62.5 -271q-62.5 -93 -185.5 -93q-66 0 -112.5 25.5q-46.5 25.5 -76.5 73q-30 47.5 -44 115q-14 67.5 -14 150.5zt0 0zM161 350q0 -53 6 -98.5q6 -45.5 20 -78.5q14 -33 35.5 -52q21.5 -19 53.5 -19q58 0 87 59q29 59 29 189q0 51 -6 96.5q-6 45.5 -19.5 79q-13.5 33.5 -35.5 53q-22 19.5 -55 19.5q-115 0 -115 -248z" />
-<glyph unicode="&#80;" horiz-adv-x="477" d="M45 693q36 8 79 12.5q43 4.5 86 4.5q46 0 90.5 -8.5q44.5 -8.5 79.5 -33.5q35 -25 57 -70.5q22 -45.5 22 -118.5q0 -66 -18.5 -112q-18.5 -46 -49.5 -75q-31 -29 -71.5 -42q-40.5 -13 -83.5 -13q-4 0 -13 0q-9 0 -19 0.5q-10 0.5 -19.5 1.5q-9.5 1 -13.5 2l0 -241h-126zM171 354q6 -2 22.5 -3.5q16.5 -1.5 22.5 -1.5q22 0 42 6q20 6 35.5 20.5q15.5 14.5 24.5 40q9 25.5 9 64.5q0 33 -8.5 56q-8.5 23 -23 36.5q-14.5 13.5 -33.5 19.5q-19 6 -40 6q-31 0 -51 -5z" />
-<glyph unicode="&#81;" horiz-adv-x="553" d="M579 -196q-20 -7 -40.5 -10q-20.5 -3 -40.5 -3q-42 0 -81.5 10q-39.5 10 -76.5 22.5q-37 12.5 -71.5 22.5q-34.5 10 -65.5 10q-10 0 -19.5 -1q-9.5 -1 -18.5 -4l0 112q24 6 48 6q34 0 68.5 -10q34.5 -10 70 -21.5q35.5 -11.5 73 -21.5q37.5 -10 78.5 -10q18 0 37 2.5q19 2.5 39 8.5zM29 350q0 178 61 271q61 93 186 93q65 0 112 -25.5q47 -25.5 77 -73q30 -47.5 44.5 -115q14.5 -67.5 14.5 -150.5q0 -178 -62.5 -271q-62.5 -93 -185.5 -93q-66 0 -112.5 25.5q-46.5 25.5 -76.5 73q-30 47.5 -44 115q-14 67.5 -14 150.5zt0 0zM161 350q0 -53 6 -98.5q6 -45.5 20 -78.5q14 -33 35.5 -52q21.5 -19 53.5 -19q58 0 87 59q29 59 29 189q0 51 -6 96.5q-6 45.5 -19.5 79q-13.5 33.5 -35.5 53q-22 19.5 -55 19.5q-115 0 -115 -248z" />
-<glyph unicode="&#82;" horiz-adv-x="503" d="M45 693q41 9 88 13q47 4 81 4q43 0 84 -8.5q41 -8.5 72.5 -31q31.5 -22.5 51 -61q19.5 -38.5 19.5 -97.5q0 -85 -31.5 -138.5q-31.5 -53.5 -86.5 -73.5l40 -32l129 -268h-145l-122 276l-54 13v-289h-126zM171 375h43q47 0 71 28.5q24 28.5 24 88.5q0 45 -20 73.5q-20 28.5 -63 28.5q-16 0 -31 -1q-15 -1 -24 -4z" />
-<glyph unicode="&#83;" horiz-adv-x="439" d="M290 180q0 32 -19 54.5q-19 22.5 -47.5 42.5q-28.5 20 -62 41q-33.5 21 -62 49q-28.5 28 -47.5 66q-19 38 -19 93q0 51 15.5 86.5q15.5 35.5 42.5 58q27 22.5 64 33q37 10.5 79 10.5q51 0 95 -10q44 -10 73 -27l-39 -111q-17 12 -50.5 22q-33.5 10 -72.5 10q-39 0 -60 -16q-21 -16 -21 -47q0 -28 19 -49.5q19 -21.5 47.5 -41.5q28.5 -20 62 -41.5q33.5 -21.5 62 -50q28.5 -28.5 47.5 -67q19 -38.5 19 -91.5q0 -53 -15.5 -92q-15.5 -39 -44 -64.5q-28.5 -25.5 -68.5 -38.5q-40 -13 -89 -13q-62 0 -108.5 12q-46.5 12 -71.5 27l41 113q20 -12 55 -24q35 -12 75 -12q100 0 100 78z" />
-<glyph unicode="&#84;" horiz-adv-x="474" d="M466 584h-166v-584h-126v584h-166v116l458 0z" />
-<glyph unicode="&#85;" horiz-adv-x="515" d="M354 700h119v-454q0 -136 -55.5 -197q-55.5 -61 -153.5 -61q-115 0 -168.5 59.5q-53.5 59.5 -53.5 181.5v471h126v-449q0 -82 22 -114.5q22 -32.5 73 -32.5q49 0 70 34.5q21 34.5 21 112.5z" />
-<glyph unicode="&#86;" horiz-adv-x="503" d="M243 289l14 -120h4l16 121l102 410h133l-212 -705h-96l-214 705l149 0z" />
-<glyph unicode="&#87;" horiz-adv-x="717" d="M205 315l10 -126h4l11 128l94 383h88l91 -385l11 -126h4l11 128l62 383h128l-157 -705h-89l-98 386l-13 109h-5l-12 -110l-98 -385h-93l-156 705l139 0z" />
-<glyph unicode="&#88;" horiz-adv-x="528" d="M177 356l-155 344h152l81 -200l19 -76l18 76l85 200h136l-160 -337l168 -363h-147l-94 215l-21 78l-20 -78l-94 -215l-139 0z" />
-<glyph unicode="&#89;" horiz-adv-x="495" d="M184 260l-188 440h150l97 -265l10 -76h5l11 78l95 263h135l-189 -439v-261l-126 0z" />
-<glyph unicode="&#90;" horiz-adv-x="445" d="M21 116l234 427l42 41h-276v116h403v-116l-235 -430l-41 -38h276v-116l-403 0z" />
-<glyph unicode="&#91;" horiz-adv-x="276" d="M45 700h208v-103h-93v-724h93v-103l-208 0z" />
-<glyph unicode="&#92;" horiz-adv-x="362" d="M373 -103l-93 -37l-298 816l94 35z" />
-<glyph unicode="&#93;" horiz-adv-x="276" d="M231 -230h-208v103h93v724h-93v103l208 0z" />
-<glyph unicode="&#94;" horiz-adv-x="428" d="M181 705h68l155 -292h-119l-56 122l-17 73l-21 -74l-59 -121l-114 0z" />
-<glyph unicode="&#95;" horiz-adv-x="374" d="M0 -122h374v-102l-374 0z" />
-<glyph unicode="&#96;" horiz-adv-x="290" d="M230 566h-66l-104 124v30l121 0z" />
-<glyph unicode="&#97;" horiz-adv-x="413" d="M44 470q30 18 75 29q45 11 102 11q85 0 118.5 -44q33.5 -44 33.5 -125q0 -47 -2.5 -92.5q-2.5 -45.5 -3.5 -89q-1 -43.5 1.5 -84q2.5 -40.5 13.5 -76.5l-97 0l-19 61h-4q-16 -29 -45 -48q-29 -19 -73 -19q-59 0 -93 39.5q-34 39.5 -34 105.5q0 90 64 128q64 38 173 32q5 58 -7.5 84q-12.5 26 -53.5 26q-30 0 -62 -7q-32 -7 -57 -20zM187 95q27 0 44 13.5q17 13.5 25 29.5l0 83q-23 3 -44 1q-21 -2 -37 -9q-16 -7 -25.5 -20.5q-9.5 -13.5 -9.5 -34.5q0 -31 12.5 -47t34.5 -16z" />
-<glyph unicode="&#98;" horiz-adv-x="443" d="M43 700h119v-232h3q36 44 103 44q71 0 110.5 -59q39.5 -59 39.5 -190q0 -142 -56 -208.5q-56 -66.5 -153 -66.5q-53 0 -97.5 10q-44.5 10 -68.5 22zM162 108q21 -11 55 -11q38 0 58 36.5q20 36.5 20 122.5q0 76 -16 111.5q-16 35.5 -50 35.5q-50 0 -67 -52z" />
-<glyph unicode="&#99;" horiz-adv-x="350" d="M338 27q-25 -20 -60 -30q-35 -10 -70 -10q-51 0 -85.5 18.5q-34.5 18.5 -56.5 53q-22 34.5 -31.5 83q-9.5 48.5 -9.5 108.5q0 131 47 197q47 66 138 66q45 0 73.5 -8q28.5 -8 50.5 -20l-28 -99q-18 9 -34.5 13.5q-16.5 4.5 -39.5 4.5q-42 0 -63 -36.5q-21 -36.5 -21 -117.5q0 -68 21.5 -111q21.5 -43 68.5 -43q25 0 42.5 6.5q17.5 6.5 32.5 16.5z" />
-<glyph unicode="&#100;" horiz-adv-x="445" d="M402 176q0 -42 1 -84q1 -42 8 -93l-84 0l-16 58h-4q-34 -70 -119 -70q-76 0 -119.5 60q-43.5 60 -43.5 195q0 132 47 200.5q47 68.5 140 68.5q24 0 40 -3q16 -3 31 -10l0 202h119zM216 96q27 0 43 13.5q16 13.5 24 39.5l0 236q-10 9 -22.5 13q-12.5 4 -32.5 4q-40 0 -60 -36q-20 -36 -20 -128q0 -69 16.5 -105.5t51.5 -36.5z" />
-<glyph unicode="&#101;" horiz-adv-x="428" d="M381 37q-25 -22 -68 -36q-43 -14 -90 -14q-52 0 -89.5 18q-37.5 18 -61.5 52q-24 34 -35.5 82.5q-11.5 48.5 -11.5 110.5q0 135 53.5 199.5q53.5 64.5 148.5 64.5q32 0 62 -9.5q30 -9.5 53.5 -32q23.5 -22.5 38 -60q14.5 -37.5 14.5 -94.5q0 -22 -2.5 -47q-2.5 -25 -7.5 -54l-243 0q2 -62 26 -95q24 -33 77 -33q32 0 58.5 10q26.5 10 40.5 21zM225 412q-38 0 -57 -30.5q-19 -30.5 -22 -85.5l138 0q3 57 -12 86.5t-47 29.5z" />
-<glyph unicode="&#102;" horiz-adv-x="267" d="M8 500h54v28q0 95 35.5 137.5q35.5 42.5 101.5 42.5q66 0 110 -18l-22 -101q-18 7 -32 8.5q-14 1.5 -29 1.5q-29 0 -37 -22.5q-8 -22.5 -8 -76.5l85 0v-106h-85v-394h-119v394l-54 0z" />
-<glyph unicode="&#103;" horiz-adv-x="443" d="M401 0q0 -109 -50 -160.5q-50 -51.5 -139 -51.5q-62 0 -97 9.5q-35 9.5 -54 20.5l25 101q22 -9 47.5 -17q25.5 -8 60.5 -8q51 0 70.5 27.5q19.5 27.5 19.5 83.5v27h-3q-14 -20 -37.5 -30q-23.5 -10 -60.5 -10q-79 0 -118.5 59.5q-39.5 59.5 -39.5 188.5q0 139 54.5 205q54.5 66 155.5 66q54 0 97 -8.5q43 -8.5 69 -20.5zM216 94q27 0 42.5 13q15.5 13 23.5 37l0 250q-11 5 -24.5 8q-13.5 3 -31.5 3q-37 0 -57.5 -36q-20.5 -36 -20.5 -124q0 -151 68 -151z" />
-<glyph unicode="&#104;" horiz-adv-x="449" d="M291 0v302q0 54 -12.5 78q-12.5 24 -45.5 24q-24 0 -44 -17q-20 -17 -27 -43l0 -344h-119v700h119v-245h3q20 26 48.5 42q28.5 16 71.5 16q31 0 54 -9q23 -9 39 -30q16 -21 24 -56.5q8 -35.5 8 -89.5l0 -328z" />
-<glyph unicode="&#105;" horiz-adv-x="225" d="M53 500h119v-500h-119zM38 641q0 30 19 49.5q19 19.5 54 19.5q35 0 56 -19q21 -19 21 -50q0 -31 -21 -49q-21 -18 -56 -18q-35 0 -54 18.5t-19 48.5z" />
-<glyph unicode="&#106;" horiz-adv-x="225" d="M54 500h119v-521q0 -91 -31.5 -139q-31.5 -48 -100.5 -48q-28 0 -57 7l0 106q43 -4 56.5 24.5q13.5 28.5 13.5 84.5zM38 641q0 30 19 49.5q19 19.5 54 19.5q35 0 56 -19q21 -19 21 -50q0 -31 -21 -49q-21 -18 -56 -18q-35 0 -54 18.5t-19 48.5z" />
-<glyph unicode="&#107;" horiz-adv-x="412" d="M190 207h-28v-207h-119v700h119v-413l24 14l83 199h129l-92 -198l-43 -34l47 -34l102 -234l-134 0z" />
-<glyph unicode="&#108;" horiz-adv-x="243" d="M164 162q0 -35 7 -50q7 -15 23 -15q9 0 18.5 2q9.5 2 21.5 7l11 -96q-12 -8 -41 -15q-29 -7 -59 -7q-50 0 -75 25q-25 25 -25 85v602l119 0z" />
-<glyph unicode="&#109;" horiz-adv-x="663" d="M274 0v291q0 63 -10 87.5q-10 24.5 -39 24.5q-24 0 -39.5 -15.5q-15.5 -15.5 -23.5 -37.5l0 -350h-119v500h92l15 -60h3q19 31 47.5 51.5q28.5 20.5 75.5 20.5q39 0 63.5 -17q24.5 -17 38.5 -60q19 36 50 56.5q31 20.5 73 20.5q33 0 56.5 -8.5q23.5 -8.5 38 -29.5q14.5 -21 21.5 -57.5q7 -36.5 7 -92.5v-324h-119v304q0 51 -9 75q-9 24 -40 24q-25 0 -40.5 -14.5q-15.5 -14.5 -22.5 -39.5l0 -349z" />
-<glyph unicode="&#110;" horiz-adv-x="449" d="M291 0v304q0 55 -13 77q-13 22 -44 22q-26 0 -45 -16q-19 -16 -27 -40l0 -347h-119v500h95l14 -58h3q18 29 49 49.5q31 20.5 81 20.5q30 0 53.5 -9q23.5 -9 39.5 -29.5q16 -20.5 24 -55q8 -34.5 8 -85.5l0 -333z" />
-<glyph unicode="&#111;" horiz-adv-x="445" d="M25 250q0 133 52 198q52 65 145 65q100 0 149 -66q49 -66 49 -197q0 -134 -52 -198.5q-52 -64.5 -146 -64.5q-197 0 -197 263zt0 0zM148 250q0 -75 17 -116q17 -41 57 -41q38 0 56.5 35.5q18.5 35.5 18.5 121.5q0 77 -17 117q-17 40 -58 40q-35 0 -54.5 -35.5t-19.5 -121.5z" />
-<glyph unicode="&#112;" horiz-adv-x="447" d="M43 500h89l12 -57h3q23 36 51.5 52.5q28.5 16.5 70.5 16.5q76 0 114.5 -57.5q38.5 -57.5 38.5 -191.5q0 -134 -48 -205.5q-48 -71.5 -139 -71.5q-24 0 -41 4q-17 4 -32 13l0 -203h-119zM162 112q10 -10 22.5 -15q12.5 -5 32.5 -5q40 0 61 39.5q21 39.5 21 134.5q0 71 -16 105.5q-16 34.5 -53 34.5q-50 0 -68 -59z" />
-<glyph unicode="&#113;" horiz-adv-x="443" d="M401 -200h-119v235h-4q-14 -22 -36.5 -35.5q-22.5 -13.5 -60.5 -13.5q-74 0 -115 63q-41 63 -41 191q0 134 57 202.5q57 68.5 162 68.5q45 0 88.5 -9q43.5 -9 68.5 -20zM282 393q-21 12 -56 12q-39 0 -58.5 -37.5q-19.5 -37.5 -19.5 -122.5q0 -153 68 -153q27 0 42.5 13.5q15.5 13.5 23.5 38.5z" />
-<glyph unicode="&#114;" horiz-adv-x="293" d="M279 382q-24 9 -44 9q-27 0 -46.5 -15q-19.5 -15 -26.5 -42l0 -334h-119v500h91l14 -60h4q13 33 37.5 51.5q24.5 18.5 56.5 18.5q24 0 47 -10z" />
-<glyph unicode="&#115;" horiz-adv-x="350" d="M211 133q0 21 -13.5 35.5q-13.5 14.5 -34.5 27q-21 12.5 -44.5 25.5q-23.5 13 -44.5 32q-21 19 -34.5 46q-13.5 27 -13.5 68q0 70 38 108q38 38 112 38q44 0 83 -9.5q39 -9.5 62 -23.5l-28 -92q-19 8 -46 15.5q-27 7.5 -53 7.5q-49 0 -49 -41q0 -19 13.5 -31.5q13.5 -12.5 34.5 -24.5q21 -12 44.5 -25q23.5 -13 44.5 -32.5q21 -19.5 34.5 -47.5q13.5 -28 13.5 -69q0 -69 -42 -111q-42 -42 -125 -42q-41 0 -80.5 10q-39.5 10 -63.5 26l33 96q21 -12 48.5 -21q27.5 -9 57.5 -9q23 0 38 10.5t15 33.5z" />
-<glyph unicode="&#116;" horiz-adv-x="291" d="M4 500h55v94l119 37v-131h97v-106h-97v-218q0 -43 8.5 -61q8.5 -18 30.5 -18q15 0 27 3q12 3 26 9l15 -95q-22 -11 -51 -18.5q-29 -7.5 -61 -7.5q-57 0 -85.5 33q-28.5 33 -28.5 111v262l-55 0z" />
-<glyph unicode="&#117;" horiz-adv-x="446" d="M158 500v-299q0 -59 11 -82q11 -23 40 -23q28 0 47 20.5q19 20.5 27 49.5l0 334h119v-348q0 -41 3 -80.5q3 -39.5 11 -71.5l-90 0l-21 68h-3q-19 -35 -51.5 -58q-32.5 -23 -80.5 -23q-31 0 -55 8.5q-24 8.5 -41 29.5q-17 21 -26 57.5q-9 36.5 -9 92.5l0 325z" />
-<glyph unicode="&#118;" horiz-adv-x="399" d="M195 239l12 -79h4l11 80l62 260h128l-168 -505h-80l-177 505l139 0z" />
-<glyph unicode="&#119;" horiz-adv-x="596" d="M352 500l70 -256l12 -83h4l10 84l47 255h108l-123 -505h-94l-75 279l-8 64h-6l-7 -66l-72 -277h-97l-128 505h129l54 -251l9 -89h4l13 90l61 250z" />
-<glyph unicode="&#120;" horiz-adv-x="439" d="M133 256l-119 244h140l51 -118l19 -64l21 64l52 118h129l-120 -240l128 -260h-135l-61 130l-22 71l-23 -71l-61 -130l-128 0z" />
-<glyph unicode="&#121;" horiz-adv-x="400" d="M203 219l13 -78h5l9 79l58 280h122l-125 -451q-17 -59 -32 -106q-15 -47 -32 -80q-17 -33 -38.5 -50.5q-21.5 -17.5 -51.5 -17.5q-21 0 -40.5 3.5q-19.5 3.5 -33.5 11.5l20 102q13 -5 26.5 -4.5q13.5 0.5 25 10q11.5 9.5 20.5 29.5q9 20 15 53l-174 500l143 0z" />
-<glyph unicode="&#122;" horiz-adv-x="381" d="M24 106l162 245l44 43h-206v106h331v-106l-160 -249l-43 -39h203v-106l-331 0z" />
-<glyph unicode="&#123;" horiz-adv-x="313" d="M98 98q0 51 -17 70q-17 19 -49 19l0 96q32 0 49 20.5q17 20.5 17 64.5v214q0 53 20.5 86q20.5 33 70.5 33h107v-102h-41q-23 0 -33 -14q-10 -14 -10 -46v-203q0 -44 -17 -66.5q-17 -22.5 -40 -27.5l0 -10q23 -4 40 -30q17 -26 17 -68v-202q0 -31 9.5 -45.5q9.5 -14.5 34.5 -14.5h40v-102h-107q-91 0 -91 118z" />
-<glyph unicode="&#124;" horiz-adv-x="188" d="M45 700h98v-830l-98 0z" />
-<glyph unicode="&#125;" horiz-adv-x="313" d="M223 373q0 -51 17 -70q17 -19 49 -19l0 -96q-32 0 -49 -20.5q-17 -20.5 -17 -64.5v-215q0 -54 -21.5 -86q-21.5 -32 -72.5 -32h-104v102h41q23 0 33 14q10 14 10 46v203q0 44 17 66.5q17 22.5 40 27.5l0 10q-23 4 -40 30q-17 26 -17 68v202q0 31 -9.5 45.5q-9.5 14.5 -34.5 14.5h-40v102h107q91 0 91 -117z" />
-<glyph unicode="&#126;" horiz-adv-x="444" d="M23 378q39 38 71 52.5q32 14.5 59 14.5q24 0 45 -8q21 -8 40 -18q19 -10 37.5 -18q18.5 -8 38.5 -8q15 0 30.5 6.5q15.5 6.5 32.5 21.5l44 -103q-30 -27 -55 -37.5q-25 -10.5 -47 -10.5q-23 0 -43.5 8.5q-20.5 8.5 -40 19q-19.5 10.5 -39 19.5q-19.5 9 -40.5 9q-20 0 -42.5 -10.5q-22.5 -10.5 -49.5 -37.5z" />
-<glyph unicode="&#160;" horiz-adv-x="205" />
-<glyph unicode="&#161;" horiz-adv-x="251" d="M169 -202h-123v329l23 163h76l24 -163zM35 433q0 38 19.5 57q19.5 19 51.5 19q35 0 54 -19q19 -19 19 -57q0 -35 -19.5 -55q-19.5 -20 -53.5 -20q-33 0 -52 20t-19 55z" />
-<glyph unicode="&#162;" horiz-adv-x="478" d="M414 28q-14 -11 -33.5 -19.5q-19.5 -8.5 -41.5 -13.5l0 -95h-112v90q-43 7 -73 28.5q-30 21.5 -48.5 55.5q-18.5 34 -27 78.5q-8.5 44.5 -8.5 97.5q0 110 40.5 176.5q40.5 66.5 116.5 82.5l0 91h112v-91q43 -7 70 -24l-25 -96q-12 5 -26.5 8.5q-14.5 3.5 -28.5 5.5l0 -307q20 3 35 9q15 6 26 13zM252 401q-32 -11 -48.5 -47.5q-16.5 -36.5 -16.5 -103.5q0 -58 15.5 -97q15.5 -39 49.5 -53z" />
-<glyph unicode="&#163;" horiz-adv-x="478" d="M44 392h60q-12 26 -21 58q-9 32 -9 78q0 48 14 83q14 35 38.5 58q24.5 23 58.5 34q34 11 75 11q51 0 92.5 -10q41.5 -10 73.5 -27l-38 -103q-17 10 -44.5 18.5q-27.5 8.5 -65.5 8.5q-38 0 -59.5 -23q-21.5 -23 -21.5 -71q0 -35 10.5 -61.5q10.5 -26.5 24.5 -53.5l117 0v-100h-83q2 -10 3 -19.5q1 -9.5 1 -20.5q0 -29 -9 -63q-9 -34 -26 -55l-45 -35v-6l66 16h183v-109h-395v109h2q25 1 45 12q20 11 33 29q13 18 20 41q7 23 7 48q0 29 -6 53l-101 0z" />
-<glyph unicode="&#164;" horiz-adv-x="478" d="M56 607l71 -70l17 -33q18 14 42.5 20.5q24.5 6.5 51.5 6.5q26 0 52 -7q26 -7 44 -19l17 32l70 70l70 -73l-69 -70l-34 -15q25 -37 25 -93q0 -27 -6.5 -50.5q-6.5 -23.5 -18.5 -40.5l34 -14l69 -71l-70 -72l-70 69l-16 33q-17 -12 -44 -19q-27 -7 -53 -7q-27 0 -51.5 6.5q-24.5 6.5 -42.5 19.5l-17 -33l-71 -69l-69 72l69 71l33 16q-11 18 -17 40q-6 22 -6 49q0 27 6.5 50q6.5 23 18.5 43l-35 15l-69 70zM165 357q0 -33 20.5 -55q20.5 -22 53.5 -22q33 0 53.5 22q20.5 22 20.5 55q0 32 -20.5 55q-20.5 23 -53.5 23q-33 0 -53.5 -23t-20.5 -55z" />
-<glyph unicode="&#165;" horiz-adv-x="478" d="M66 336h77l-155 364h150l97 -265l10 -76h5l11 78l95 263h135l-157 -364h78v-79h-110v-58h110v-79h-110v-120h-126v120h-110v79h110v58l-110 0z" />
-<glyph unicode="&#166;" horiz-adv-x="188" d="M45 213h98v-343h-98zM143 357h-98v343l98 0z" />
-<glyph unicode="&#167;" horiz-adv-x="444" d="M121 481q-23 17 -38 41q-15 24 -15 66q0 54 36.5 90q36.5 36 114.5 36q48 0 93 -9.5q45 -9.5 67 -21.5l-30 -99q-21 10 -51 17q-30 7 -56 7q-30 0 -42.5 -11.5q-12.5 -11.5 -12.5 -26.5q0 -19 16 -30q16 -11 40.5 -20q24.5 -9 53 -19.5q28.5 -10.5 53 -29q24.5 -18.5 40.5 -48q16 -29.5 16 -76.5q0 -31 -12.5 -61.5q-12.5 -30.5 -34.5 -53.5l-37 -14q23 -16 38 -40.5q15 -24.5 15 -65.5q0 -61 -41 -93.5q-41 -32.5 -114 -32.5q-56 0 -95.5 11q-39.5 11 -65.5 27l31 96q20 -11 47.5 -19.5q27.5 -8.5 61.5 -8.5q30 0 43.5 10q13.5 10 13.5 31q0 19 -16 29.5q-16 10.5 -40.5 20q-24.5 9.5 -52.5 20.5q-28 11 -52.5 29.5q-24.5 18.5 -40.5 47q-16 28.5 -16 73.5q0 31 12.5 61q12.5 30 35.5 53zM248 269q17 12 28 32.5q11 20.5 11 43.5q0 34 -24.5 50.5q-24.5 16.5 -67.5 33.5q-17 -12 -27.5 -30.5q-10.5 -18.5 -10.5 -43.5q0 -33 24.5 -51.5t66.5 -34.5z" />
-<glyph unicode="&#168;" horiz-adv-x="432" d="M60 651q0 32 17.5 50q17.5 18 46.5 18q28 0 45 -18q17 -18 17 -50q0 -30 -17 -47.5q-17 -17.5 -45 -17.5q-29 0 -46.5 17.5q-17.5 17.5 -17.5 47.5zt0 0zM246 651q0 32 17 50q17 18 46 18q29 0 46 -18q17 -18 17 -50q0 -30 -17 -47.5q-17 -17.5 -46 -17.5q-29 0 -46 17.5t-17 47.5z" />
-<glyph unicode="&#169;" horiz-adv-x="725" d="M51 298q0 72 24 129.5q24 57.5 66 98q42 40.5 99 62q57 21.5 123 21.5q65 0 122 -21.5q57 -21.5 99 -62q42 -40.5 66 -98q24 -57.5 24 -129.5q0 -72 -24 -129.5q-24 -57.5 -66 -98q-42 -40.5 -99 -62q-57 -21.5 -122 -21.5q-72 0 -130 21.5q-58 21.5 -98.5 62q-40.5 40.5 -62 98q-21.5 57.5 -21.5 129.5zt0 0zM137 298q0 -54 16.5 -96.5q16.5 -42.5 46.5 -72.5q30 -30 71.5 -46q41.5 -16 91.5 -16q49 0 90.5 16q41.5 16 71.5 46q30 30 46.5 72.5q16.5 42.5 16.5 96.5q0 54 -16.5 96.5q-16.5 42.5 -46.5 72.5q-30 30 -71.5 46q-41.5 16 -90.5 16q-50 0 -91.5 -16q-41.5 -16 -71.5 -46q-30 -30 -46.5 -72.5q-16.5 -42.5 -16.5 -96.5zt0 0zM471 161q-19 -12 -48 -19.5q-29 -7.5 -62 -7.5q-69 0 -106 44.5q-37 44.5 -37 119.5q0 78 39 121q39 43 104 43q32 0 56.5 -7.5q24.5 -7.5 47.5 -20.5l-28 -77q-15 8 -28 10.5q-13 2.5 -24 2.5q-25 0 -38.5 -17q-13.5 -17 -13.5 -55q0 -72 58 -72q29 0 54 13z" />
-<glyph unicode="&#170;" horiz-adv-x="347" d="M45 675q22 14 62 23.5q40 9.5 91 9.5q66 0 90.5 -27.5q24.5 -27.5 24.5 -84.5q0 -34 -1 -66.5q-1 -32.5 -1 -62.5q0 -24 1 -45.5q1 -21.5 5 -41.5l-88 0l-13 44h-3q-10 -17 -30.5 -32.5q-20.5 -15.5 -55.5 -15.5q-46 0 -72 27.5q-26 27.5 -26 71.5q0 33 14.5 55q14.5 22 39.5 35q25 13 58 17.5q33 4.5 69 2.5q2 26 -5.5 38q-7.5 12 -35.5 12q-32 0 -58 -7q-26 -7 -44 -15zM210 526q-33 4 -55.5 -3.5q-22.5 -7.5 -22.5 -34.5q0 -16 8.5 -25.5q8.5 -9.5 21.5 -9.5q23 0 33 9q10 9 15 19z" />
-<glyph unicode="&#171;" horiz-adv-x="405" d="M184 261l125 216l68 -45l-69 -133l-38 -39l38 -35l74 -131l-68 -46zM22 259l131 230l76 -51l-76 -137l-39 -41l39 -36l80 -135l-75 -51z" />
-<glyph unicode="&#172;" horiz-adv-x="444" d="M40 409h368v-223h-112v117l-256 0z" />
-<glyph unicode="&#173;" horiz-adv-x="298" d="M45 344h208v-114l-208 0z" />
-<glyph unicode="&#174;" horiz-adv-x="595" d="M54 483q0 58 19.5 103.5q19.5 45.5 53 76.5q33.5 31 77.5 47q44 16 94 16q51 0 95 -16q44 -16 77 -47q33 -31 52 -76.5q19 -45.5 19 -103.5q0 -58 -19.5 -103.5q-19.5 -45.5 -52.5 -76.5q-33 -31 -77.5 -47q-44.5 -16 -93.5 -16q-51 0 -95.5 16q-44.5 16 -77.5 47q-33 31 -52 76.5q-19 45.5 -19 103.5zt0 0zM136 483q0 -42 13 -73q13 -31 35.5 -51.5q22.5 -20.5 51.5 -30.5q29 -10 62 -10q34 0 63.5 10q29.5 10 51.5 30q22 20 34 51.5q12 31.5 12 73.5q0 42 -13 73q-13 31 -35 51.5q-22 20.5 -51 31q-29 10.5 -62 10.5q-73 0 -117.5 -44q-44.5 -44 -44.5 -122zt0 0zM209 595q14 4 39 6.5q25 2.5 47 2.5q36 0 62 -15q26 -15 26 -52q0 -27 -17.5 -42q-17.5 -15 -43.5 -17l24 -12l56 -94h-53l-54 90l-41 13v-103h-45zM286 565q-10 0 -18.5 -0.5q-8.5 -0.5 -13.5 -3.5l0 -60h29q26 0 39 7.5q13 7.5 13 26.5q0 30 -49 30z" />
-<glyph unicode="&#175;" horiz-adv-x="392" d="M60 658h272v-91l-272 0z" />
-<glyph unicode="&#176;" horiz-adv-x="364" d="M44 548q0 37 10.5 68q10.5 31 29 52.5q18.5 21.5 44.5 33.5q26 12 57 12q64 0 103.5 -43q39.5 -43 39.5 -123q0 -78 -39.5 -121q-39.5 -43 -103.5 -43q-63 0 -102 43q-39 43 -39 121zt0 0zM134 548q0 -33 14 -55.5q14 -22.5 38 -22.5q23 0 37.5 22.5q14.5 22.5 14.5 55.5q0 34 -14.5 57q-14.5 23 -37.5 23q-24 0 -38 -22.5t-14 -57.5z" />
-<glyph unicode="&#177;" horiz-adv-x="444" d="M38 500h129v143h110v-143h129v-106h-129v-94h-110v94h-129zM38 252h368v-106l-368 0z" />
-<glyph unicode="&#178;" horiz-adv-x="353" d="M299 684q0 -30 -7.5 -56.5q-7.5 -26.5 -19.5 -50q-12 -23.5 -28 -44.5q-16 -21 -33 -40l-39 -25v0l48 7h90v-95h-265v67q23 18 49.5 43.5q26.5 25.5 49 54q22.5 28.5 37 58q14.5 29.5 14.5 57.5q0 51 -46 51q-22 0 -41 -6.5q-19 -6.5 -34 -15.5l-29 83q29 20 63 27.5q34 7.5 63 7.5q60 0 94 -31.5t34 -91.5z" />
-<glyph unicode="&#179;" horiz-adv-x="353" d="M144 464q36 0 50.5 15q14.5 15 14.5 39q0 23 -15.5 36.5q-15.5 13.5 -55.5 13.5h-39v38l60 81l38 28l-50 -6h-93v91h240v-60l-70 -94l-30 -19v0l26 -1q43 -2 67.5 -31.5q24.5 -29.5 24.5 -83.5q0 -36 -12.5 -62q-12.5 -26 -33.5 -43q-21 -17 -48 -25q-27 -8 -58 -8q-32 0 -61 6.5q-29 6.5 -50 17.5v86q58 -19 95 -19z" />
-<glyph unicode="&#180;" horiz-adv-x="281" d="M102 720h119v-30l-94 -124l-67 0z" />
-<glyph unicode="&#181;" horiz-adv-x="476" d="M159 500v-287q0 -60 17 -89.5q17 -29.5 55 -29.5q35 0 55 17.5q20 17.5 30 47.5l0 341h119v-337q0 -41 2.5 -82.5q2.5 -41.5 10.5 -80.5l-89 0l-28 64h-4q-12 -32 -37 -54q-25 -22 -66 -22q-30 0 -47 13q-17 13 -31 33l-4 0l17 -101v-133h-119l0 700z" />
-<glyph unicode="&#182;" horiz-adv-x="448" d="M306 700h97v-830h-97zM147 294q-28 0 -51.5 15.5q-23.5 15.5 -40 42.5q-16.5 27 -25.5 64q-9 37 -9 81q0 44 11 81q11 37 31.5 64q20.5 27 49.5 42.5q29 15.5 64 15.5h67v-830l-97 0z" />
-<glyph unicode="&#183;" horiz-adv-x="212" d="M34 315q0 37 19.5 56q19.5 19 51.5 19q35 0 54 -19q19 -19 19 -56q0 -36 -19.5 -56q-19.5 -20 -53.5 -20q-33 0 -52 20t-19 56z" />
-<glyph unicode="&#184;" horiz-adv-x="305" d="M191 0l-20 -43q34 -4 54 -21.5q20 -17.5 20 -53.5q0 -23 -10.5 -40q-10.5 -17 -28.5 -28.5q-18 -11.5 -42 -17.5q-24 -6 -50 -6q-27 0 -54 6l7 48q42 -4 55.5 5.5q13.5 9.5 13.5 23.5q0 28 -70 32l49 95z" />
-<glyph unicode="&#185;" horiz-adv-x="353" d="M62 475h78v168l9 46l-26 -32l-46 -31l-44 69l131 112h82v-332h70v-95l-254 0z" />
-<glyph unicode="&#186;" horiz-adv-x="350" d="M25 542q0 46 11 78q11 32 31 52.5q20 20.5 47.5 30q27.5 9.5 60.5 9.5q33 0 60.5 -8.5q27.5 -8.5 47.5 -28.5q20 -20 31.5 -52.5q11.5 -32.5 11.5 -80.5q0 -48 -11.5 -80.5q-11.5 -32.5 -31.5 -52.5q-20 -20 -47.5 -28.5q-27.5 -8.5 -60.5 -8.5q-33 0 -60.5 8.5q-27.5 8.5 -47.5 28.5q-20 20 -31 52.5q-11 32.5 -11 80.5zt0 0zM131 542q0 -48 10.5 -67.5q10.5 -19.5 33.5 -19.5q12 0 20.5 3.5q8.5 3.5 14 13.5q5.5 10 8 27q2.5 17 2.5 43q0 51 -11 69q-11 18 -34 18q-23 0 -33.5 -18t-10.5 -69z" />
-<glyph unicode="&#187;" horiz-adv-x="405" d="M220 266l-125 -216l-68 43l70 135l37 39l-37 35l-74 132l67 45zM383 268l-131 -230l-76 49l74 139l40 41l-40 36l-79 135l75 51z" />
-<glyph unicode="&#188;" horiz-adv-x="749" d="M713 80h-61v-80h-95v80h-172v64l178 281h89v-259h61zM557 250l7 55h-5l-19 -51l-38 -65l-30 -30l43 7h42zM503 715l81 -39l-342 -690l-83 41zM138 544l8 46l-26 -33l-44 -31l-45 70l131 111h81v-427l-105 0z" />
-<glyph unicode="&#189;" horiz-adv-x="770" d="M503 715l81 -39l-342 -690l-83 41zM721 304q0 -30 -7.5 -56.5q-7.5 -26.5 -19.5 -50q-12 -23.5 -28 -44.5q-16 -21 -33 -40l-39 -25v0l48 7h90v-95h-265v67q23 18 49.5 43.5q26.5 25.5 49 54q22.5 28.5 37 58q14.5 29.5 14.5 57.5q0 51 -46 51q-22 0 -41 -6.5q-19 -6.5 -34 -15.5l-29 83q29 20 63 27.5q34 7.5 63 7.5q60 0 94 -31.5q34 -31.5 34 -91.5zt0 0zM137 544l8 46l-26 -33l-44 -31l-45 70l131 111h81v-427l-105 0z" />
-<glyph unicode="&#190;" horiz-adv-x="766" d="M521 715l81 -39l-342 -690l-83 41zM132 364q36 0 50.5 15q14.5 15 14.5 39q0 23 -15.5 36.5q-15.5 13.5 -55.5 13.5h-39v38l60 81l38 28l-50 -6h-93v91h240v-60l-70 -94l-30 -19v0l26 -1q43 -2 67.5 -31.5q24.5 -29.5 24.5 -83.5q0 -36 -12.5 -62q-12.5 -26 -33.5 -43q-21 -17 -48 -25q-27 -8 -58 -8q-32 0 -61 6.5q-29 6.5 -50 17.5v86q58 -19 95 -19zt0 0zM730 80h-61v-80h-95v80h-172v64l178 281h89v-259h61zM574 250l7 55h-5l-19 -51l-38 -65l-30 -30l43 7l42 0z" />
-<glyph unicode="&#191;" horiz-adv-x="382" d="M271 290q4 -46 -4 -80.5q-8 -34.5 -22 -61q-14 -26.5 -32 -47.5q-18 -21 -34 -41.5q-16 -20.5 -26.5 -43q-10.5 -22.5 -10.5 -50.5q0 -35 16.5 -55.5q16.5 -20.5 54.5 -20.5q26 0 55 10.5q29 10.5 50 28.5l47 -90q-31 -23 -73 -39q-42 -16 -102 -16q-80 0 -125.5 43.5q-45.5 43.5 -45.5 122.5q0 47 11 79.5q11 32.5 28 57q17 24.5 36.5 44.5q19.5 20 36 42q16.5 22 28 49.5q11.5 27.5 11.5 67.5zM287 433q0 -37 -19.5 -56q-19.5 -19 -51.5 -19q-35 0 -54 19q-19 19 -19 56q0 36 19.5 56q19.5 20 53.5 20q33 0 52 -20t19 -56z" />
-<glyph unicode="&#192;" horiz-adv-x="501" d="M328 158h-165l-41 -158h-125l203 705h99l204 -705h-132zM190 262h116l-40 163l-16 110h-4l-17 -111zM334 752h-94l-130 88v30l142 0z" />
-<glyph unicode="&#193;" horiz-adv-x="501" d="M328 158h-165l-41 -158h-125l203 705h99l204 -705h-132zM190 262h116l-40 163l-16 110h-4l-17 -111zM249 870h143v-30l-132 -88l-93 0z" />
-<glyph unicode="&#194;" horiz-adv-x="501" d="M328 158h-165l-41 -158h-125l203 705h99l204 -705h-132zM190 262h116l-40 163l-16 110h-4l-17 -111zM209 870h87l104 -93v-39h-85l-47 41l-17 34l-18 -33l-50 -42h-83l0 40z" />
-<glyph unicode="&#195;" horiz-adv-x="501" d="M328 158h-165l-41 -158h-125l203 705h99l204 -705h-132zM190 262h116l-40 163l-16 110h-4l-17 -111zM82 796q29 37 56 50.5q27 13.5 53 13.5q19 0 38 -5.5q19 -5.5 37 -11.5q18 -6 34.5 -11.5q16.5 -5.5 32.5 -5.5q14 0 27 5.5q13 5.5 25 19.5l27 -63q-26 -29 -49.5 -39.5q-23.5 -10.5 -46.5 -10.5q-19 0 -37.5 5.5q-18.5 5.5 -36 11.5q-17.5 6 -34.5 11.5q-17 5.5 -34 5.5q-17 0 -33 -7q-16 -7 -33 -27z" />
-<glyph unicode="&#196;" horiz-adv-x="501" d="M328 158h-165l-41 -158h-125l203 705h99l204 -705h-132zM190 262h116l-40 163l-16 110h-4l-17 -111zM92 798q0 26 15.5 42q15.5 16 53.5 16q35 0 50.5 -16q15.5 -16 15.5 -42q0 -26 -15.5 -41.5q-15.5 -15.5 -50.5 -15.5q-38 0 -53.5 15.5q-15.5 15.5 -15.5 41.5zt0 0zM274 798q0 26 15.5 42q15.5 16 51.5 16q37 0 52.5 -16q15.5 -16 15.5 -42q0 -26 -15.5 -41.5q-15.5 -15.5 -52.5 -15.5q-36 0 -51.5 15.5t-15.5 41.5z" />
-<glyph unicode="&#197;" horiz-adv-x="501" d="M-3 0l199 691q-31 10 -44 30.5q-13 20.5 -13 49.5q0 18 5 34.5q5 16.5 18 29q13 12.5 34 19.5q21 7 54 7q61 0 86.5 -24q25.5 -24 25.5 -66q0 -27 -13.5 -49q-13.5 -22 -45.5 -32l200 -690h-132l-43 158h-165l-41 -158zM190 262h116l-40 163l-16 110h-4l-17 -111zM214 771q0 -31 36 -31q21 0 29 7.5q8 7.5 8 23.5q0 17 -8.5 25.5q-8.5 8.5 -28.5 8.5q-36 0 -36 -34z" />
-<glyph unicode="&#198;" horiz-adv-x="717" d="M326 522l-26 -97l-65 -148h96v245zM331 173h-144l-79 -173h-132l350 700h355v-116h-224v-172h203v-116h-203v-180h228v-116l-354 0z" />
-<glyph unicode="&#199;" horiz-adv-x="457" d="M442 28q-22 -18 -55 -27.5q-33 -9.5 -68 -12.5l-14 -31q34 -4 54 -21.5q20 -17.5 20 -53.5q0 -23 -10.5 -40q-10.5 -17 -28.5 -28.5q-18 -11.5 -42 -17.5q-24 -6 -50 -6q-27 0 -54 6l7 48q42 -4 55.5 5.5q13.5 9.5 13.5 23.5q0 28 -70 32l43 84q-46 6 -85 29q-39 23 -67.5 66q-28.5 43 -45 109q-16.5 66 -16.5 158q0 106 22.5 176q22.5 70 59 111.5q36.5 41.5 83.5 58.5q47 17 95 17q49 0 85.5 -8q36.5 -8 59.5 -18l-25 -111q-19 10 -44.5 15.5q-25.5 5.5 -60.5 5.5q-69 0 -106 -60q-37 -60 -37 -188q0 -55 8.5 -100.5q8.5 -45.5 27 -78.5q18.5 -33 47 -51q28.5 -18 68.5 -18q35 0 60 9.5q25 9.5 45 22.5z" />
-<glyph unicode="&#200;" horiz-adv-x="430" d="M45 700h350v-116h-224v-172h203v-116h-203v-180h228v-116h-354zM297 752h-94l-130 88v30l142 0z" />
-<glyph unicode="&#201;" horiz-adv-x="430" d="M45 700h350v-116h-224v-172h203v-116h-203v-180h228v-116h-354zM234 870h143v-30l-132 -88l-93 0z" />
-<glyph unicode="&#202;" horiz-adv-x="430" d="M45 700h350v-116h-224v-172h203v-116h-203v-180h228v-116h-354zM176 870h87l104 -93v-39h-85l-47 41l-17 34l-18 -33l-50 -42h-83l0 40z" />
-<glyph unicode="&#203;" horiz-adv-x="430" d="M45 700h350v-116h-224v-172h203v-116h-203v-180h228v-116h-354zM60 798q0 26 15.5 42q15.5 16 53.5 16q35 0 50.5 -16q15.5 -16 15.5 -42q0 -26 -15.5 -41.5q-15.5 -15.5 -50.5 -15.5q-38 0 -53.5 15.5q-15.5 15.5 -15.5 41.5zt0 0zM242 798q0 26 15.5 42q15.5 16 51.5 16q37 0 52.5 -16q15.5 -16 15.5 -42q0 -26 -15.5 -41.5q-15.5 -15.5 -52.5 -15.5q-36 0 -51.5 15.5t-15.5 41.5z" />
-<glyph unicode="&#204;" horiz-adv-x="238" d="M56 700h126v-700h-126zM202 752h-94l-130 88v30l142 0z" />
-<glyph unicode="&#205;" horiz-adv-x="238" d="M56 700h126v-700h-126zM118 870h143v-30l-132 -88l-93 0z" />
-<glyph unicode="&#206;" horiz-adv-x="238" d="M56 700h126v-700h-126zM78 870h87l104 -93v-39h-85l-47 41l-17 34l-18 -33l-50 -42h-83l0 40z" />
-<glyph unicode="&#207;" horiz-adv-x="238" d="M56 700h126v-700h-126zM-39 798q0 26 15.5 42q15.5 16 53.5 16q35 0 50.5 -16q15.5 -16 15.5 -42q0 -26 -15.5 -41.5q-15.5 -15.5 -50.5 -15.5q-38 0 -53.5 15.5q-15.5 15.5 -15.5 41.5zt0 0zM143 798q0 26 15.5 42q15.5 16 51.5 16q37 0 52.5 -16q15.5 -16 15.5 -42q0 -26 -15.5 -41.5q-15.5 -15.5 -52.5 -15.5q-36 0 -51.5 15.5t-15.5 41.5z" />
-<glyph unicode="&#208;" horiz-adv-x="555" d="M-3 401h68v299q18 3 40.5 4.5q22.5 1.5 46 3q23.5 1.5 45.5 2q22 0.5 39 0.5q83 0 138.5 -25.5q55.5 -25.5 89 -72q33.5 -46.5 47.5 -111.5q14 -65 14 -145q0 -73 -13.5 -139.5q-13.5 -66.5 -47.5 -117q-34 -50.5 -92 -80.5q-58 -30 -146 -30q-13 0 -35 1q-22 1 -46 2.5q-24 1.5 -46 3q-22 1.5 -34 3.5l0 323h-68zM191 401h108v-79h-108v-213q3 -1 10.5 -1.5q7.5 -0.5 16 -1q8.5 -0.5 16 -1q7.5 -0.5 10.5 -0.5q45 0 74 21q29 21 45.5 56q16.5 35 23 80.5q6.5 45.5 6.5 95.5q0 46 -5.5 89q-5.5 43 -21 75.5q-15.5 32.5 -44 52q-28.5 19.5 -73.5 19.5q-16 0 -32.5 -0.5q-16.5 -0.5 -25.5 -2.5z" />
-<glyph unicode="&#209;" horiz-adv-x="540" d="M199 344l-46 123h-5l16 -121v-346h-119v705h97l201 -352l43 -121h6l-16 119v349h119v-705h-97zM104 796q29 37 56 50.5q27 13.5 53 13.5q19 0 38 -5.5q19 -5.5 37 -11.5q18 -6 34.5 -11.5q16.5 -5.5 32.5 -5.5q14 0 27 5.5q13 5.5 25 19.5l27 -63q-26 -29 -49.5 -39.5q-23.5 -10.5 -46.5 -10.5q-19 0 -37.5 5.5q-18.5 5.5 -36 11.5q-17.5 6 -34.5 11.5q-17 5.5 -34 5.5q-17 0 -33 -7q-16 -7 -33 -27z" />
-<glyph unicode="&#210;" horiz-adv-x="553" d="M29 350q0 178 61 271q61 93 186 93q65 0 112 -25.5q47 -25.5 77 -73q30 -47.5 44.5 -115q14.5 -67.5 14.5 -150.5q0 -178 -62.5 -271q-62.5 -93 -185.5 -93q-66 0 -112.5 25.5q-46.5 25.5 -76.5 73q-30 47.5 -44 115q-14 67.5 -14 150.5zt0 0zM161 350q0 -53 6 -98.5q6 -45.5 20 -78.5q14 -33 35.5 -52q21.5 -19 53.5 -19q58 0 87 59q29 59 29 189q0 51 -6 96.5q-6 45.5 -19.5 79q-13.5 33.5 -35.5 53q-22 19.5 -55 19.5q-115 0 -115 -248zt0 0zM344 752h-94l-130 88v30l142 0z" />
-<glyph unicode="&#211;" horiz-adv-x="553" d="M29 350q0 178 61 271q61 93 186 93q65 0 112 -25.5q47 -25.5 77 -73q30 -47.5 44.5 -115q14.5 -67.5 14.5 -150.5q0 -178 -62.5 -271q-62.5 -93 -185.5 -93q-66 0 -112.5 25.5q-46.5 25.5 -76.5 73q-30 47.5 -44 115q-14 67.5 -14 150.5zt0 0zM161 350q0 -53 6 -98.5q6 -45.5 20 -78.5q14 -33 35.5 -52q21.5 -19 53.5 -19q58 0 87 59q29 59 29 189q0 51 -6 96.5q-6 45.5 -19.5 79q-13.5 33.5 -35.5 53q-22 19.5 -55 19.5q-115 0 -115 -248zt0 0zM301 870h143v-30l-132 -88l-93 0z" />
-<glyph unicode="&#212;" horiz-adv-x="553" d="M29 350q0 178 61 271q61 93 186 93q65 0 112 -25.5q47 -25.5 77 -73q30 -47.5 44.5 -115q14.5 -67.5 14.5 -150.5q0 -178 -62.5 -271q-62.5 -93 -185.5 -93q-66 0 -112.5 25.5q-46.5 25.5 -76.5 73q-30 47.5 -44 115q-14 67.5 -14 150.5zt0 0zM161 350q0 -53 6 -98.5q6 -45.5 20 -78.5q14 -33 35.5 -52q21.5 -19 53.5 -19q58 0 87 59q29 59 29 189q0 51 -6 96.5q-6 45.5 -19.5 79q-13.5 33.5 -35.5 53q-22 19.5 -55 19.5q-115 0 -115 -248zt0 0zM234 870h87l104 -93v-39h-85l-47 41l-17 34l-18 -33l-50 -42h-83l0 40z" />
-<glyph unicode="&#213;" horiz-adv-x="553" d="M29 350q0 178 61 271q61 93 186 93q65 0 112 -25.5q47 -25.5 77 -73q30 -47.5 44.5 -115q14.5 -67.5 14.5 -150.5q0 -178 -62.5 -271q-62.5 -93 -185.5 -93q-66 0 -112.5 25.5q-46.5 25.5 -76.5 73q-30 47.5 -44 115q-14 67.5 -14 150.5zt0 0zM161 350q0 -53 6 -98.5q6 -45.5 20 -78.5q14 -33 35.5 -52q21.5 -19 53.5 -19q58 0 87 59q29 59 29 189q0 51 -6 96.5q-6 45.5 -19.5 79q-13.5 33.5 -35.5 53q-22 19.5 -55 19.5q-115 0 -115 -248zt0 0zM110 796q29 37 56 50.5q27 13.5 53 13.5q19 0 38 -5.5q19 -5.5 37 -11.5q18 -6 34.5 -11.5q16.5 -5.5 32.5 -5.5q14 0 27 5.5q13 5.5 25 19.5l27 -63q-26 -29 -49.5 -39.5q-23.5 -10.5 -46.5 -10.5q-19 0 -37.5 5.5q-18.5 5.5 -36 11.5q-17.5 6 -34.5 11.5q-17 5.5 -34 5.5q-17 0 -33 -7q-16 -7 -33 -27z" />
-<glyph unicode="&#214;" horiz-adv-x="553" d="M29 350q0 178 61 271q61 93 186 93q65 0 112 -25.5q47 -25.5 77 -73q30 -47.5 44.5 -115q14.5 -67.5 14.5 -150.5q0 -178 -62.5 -271q-62.5 -93 -185.5 -93q-66 0 -112.5 25.5q-46.5 25.5 -76.5 73q-30 47.5 -44 115q-14 67.5 -14 150.5zt0 0zM161 350q0 -53 6 -98.5q6 -45.5 20 -78.5q14 -33 35.5 -52q21.5 -19 53.5 -19q58 0 87 59q29 59 29 189q0 51 -6 96.5q-6 45.5 -19.5 79q-13.5 33.5 -35.5 53q-22 19.5 -55 19.5q-115 0 -115 -248zt0 0zM118 798q0 26 15.5 42q15.5 16 53.5 16q35 0 50.5 -16q15.5 -16 15.5 -42q0 -26 -15.5 -41.5q-15.5 -15.5 -50.5 -15.5q-38 0 -53.5 15.5q-15.5 15.5 -15.5 41.5zt0 0zM300 798q0 26 15.5 42q15.5 16 51.5 16q37 0 52.5 -16q15.5 -16 15.5 -42q0 -26 -15.5 -41.5q-15.5 -15.5 -52.5 -15.5q-36 0 -51.5 15.5t-15.5 41.5z" />
-<glyph unicode="&#215;" horiz-adv-x="444" d="M112 541l111 -124l111 124l76 -73l-115 -129l115 -131l-76 -73l-111 124l-112 -125l-77 72l118 133l-116 129z" />
-<glyph unicode="&#216;" horiz-adv-x="553" d="M88 83q-31 48 -45 115q-14 67 -14 152q0 178 61 271q61 93 186 93q72 0 125 -33l18 34l79 -41l-32 -61q30 -48 44 -114q14 -66 14 -149q0 -178 -62.5 -271q-62.5 -93 -185.5 -93q-36 0 -66 8q-30 8 -55 22l-16 -30l-79 43zM342 567q-26 31 -66 31q-115 0 -115 -248q0 -31 2 -59q2 -28 6 -54zM213 129q25 -27 63 -27q58 0 87 59q29 59 29 189q0 29 -2 55.5q-2 26.5 -6 51.5z" />
-<glyph unicode="&#217;" horiz-adv-x="515" d="M354 700h119v-454q0 -136 -55.5 -197q-55.5 -61 -153.5 -61q-115 0 -168.5 59.5q-53.5 59.5 -53.5 181.5v471h126v-449q0 -82 22 -114.5q22 -32.5 73 -32.5q49 0 70 34.5q21 34.5 21 112.5zM326 752h-94l-130 88v30l142 0z" />
-<glyph unicode="&#218;" horiz-adv-x="515" d="M354 700h119v-454q0 -136 -55.5 -197q-55.5 -61 -153.5 -61q-115 0 -168.5 59.5q-53.5 59.5 -53.5 181.5v471h126v-449q0 -82 22 -114.5q22 -32.5 73 -32.5q49 0 70 34.5q21 34.5 21 112.5zM296 870h143v-30l-132 -88l-93 0z" />
-<glyph unicode="&#219;" horiz-adv-x="515" d="M354 700h119v-454q0 -136 -55.5 -197q-55.5 -61 -153.5 -61q-115 0 -168.5 59.5q-53.5 59.5 -53.5 181.5v471h126v-449q0 -82 22 -114.5q22 -32.5 73 -32.5q49 0 70 34.5q21 34.5 21 112.5zM220 870h87l104 -93v-39h-85l-47 41l-17 34l-18 -33l-50 -42h-83l0 40z" />
-<glyph unicode="&#220;" horiz-adv-x="515" d="M354 700h119v-454q0 -136 -55.5 -197q-55.5 -61 -153.5 -61q-115 0 -168.5 59.5q-53.5 59.5 -53.5 181.5v471h126v-449q0 -82 22 -114.5q22 -32.5 73 -32.5q49 0 70 34.5q21 34.5 21 112.5zM101 798q0 26 15.5 42q15.5 16 53.5 16q35 0 50.5 -16q15.5 -16 15.5 -42q0 -26 -15.5 -41.5q-15.5 -15.5 -50.5 -15.5q-38 0 -53.5 15.5q-15.5 15.5 -15.5 41.5zt0 0zM283 798q0 26 15.5 42q15.5 16 51.5 16q37 0 52.5 -16q15.5 -16 15.5 -42q0 -26 -15.5 -41.5q-15.5 -15.5 -52.5 -15.5q-36 0 -51.5 15.5t-15.5 41.5z" />
-<glyph unicode="&#221;" horiz-adv-x="495" d="M184 260l-188 440h150l97 -265l10 -76h5l11 78l95 263h135l-189 -439v-261h-126zM265 870h143v-30l-132 -88l-93 0z" />
-<glyph unicode="&#222;" horiz-adv-x="477" d="M45 700h126v-73q19 1 39 1q46 0 90.5 -8.5q44.5 -8.5 79.5 -33.5q35 -25 57 -70.5q22 -45.5 22 -118.5q0 -65 -18.5 -111q-18.5 -46 -49.5 -75q-31 -29 -71.5 -42.5q-40.5 -13.5 -83.5 -13.5h-13q-9 0 -19 0.5q-10 0.5 -19.5 1.5q-9.5 1 -13.5 2l0 -159h-126zM222 516q-31 0 -51 -5l0 -238q6 -2 22.5 -3.5q16.5 -1.5 22.5 -1.5q22 0 42 5.5q20 5.5 35 20.5q15 15 24 40q9 25 9 64q0 34 -8.5 56.5q-8.5 22.5 -22.5 36q-14 13.5 -33 19.5t-40 6z" />
-<glyph unicode="&#223;" horiz-adv-x="535" d="M63 394h-54v106h54v11q0 54 14 92q14 38 39 61q25 23 59 33.5q34 10.5 75 10.5q42 0 78 -9.5q36 -9.5 62.5 -29q26.5 -19.5 41.5 -48q15 -28.5 15 -66.5q0 -35 -15 -58.5q-15 -23.5 -33.5 -42.5q-18.5 -19 -33.5 -36q-15 -17 -15 -38q0 -19 12 -32q12 -13 30.5 -25q18.5 -12 40 -25q21.5 -13 40 -32q18.5 -19 30.5 -45.5q12 -26.5 12 -65.5q0 -33 -10 -63.5q-10 -30.5 -30.5 -53.5q-20.5 -23 -51 -37q-30.5 -14 -71.5 -14q-38 0 -73 9.5q-35 9.5 -59 24.5l31 94q20 -11 39.5 -18.5q19.5 -7.5 47.5 -7.5q26 0 42 18q16 18 16 44q0 23 -12 38q-12 15 -30.5 28q-18.5 13 -40 25.5q-21.5 12.5 -40 29q-18.5 16.5 -30.5 40.5q-12 24 -12 59q0 36 15 59q15 23 33 41q18 18 33 34.5q15 16.5 15 38.5q0 26 -22 42.5q-22 16.5 -48 16.5q-36 0 -55.5 -22.5q-19.5 -22.5 -19.5 -85.5v-495l-119 0z" />
-<glyph unicode="&#224;" horiz-adv-x="413" d="M44 470q30 18 75 29q45 11 102 11q85 0 118.5 -44q33.5 -44 33.5 -125q0 -47 -2.5 -92.5q-2.5 -45.5 -3.5 -89q-1 -43.5 1.5 -84q2.5 -40.5 13.5 -76.5l-97 0l-19 61h-4q-16 -29 -45 -48q-29 -19 -73 -19q-59 0 -93 39.5q-34 39.5 -34 105.5q0 90 64 128q64 38 173 32q5 58 -7.5 84q-12.5 26 -53.5 26q-30 0 -62 -7q-32 -7 -57 -20zM187 95q27 0 44 13.5q17 13.5 25 29.5l0 83q-23 3 -44 1q-21 -2 -37 -9q-16 -7 -25.5 -20.5q-9.5 -13.5 -9.5 -34.5q0 -31 12.5 -47q12.5 -16 34.5 -16zt0 0zM259 566h-66l-104 124v30l121 0z" />
-<glyph unicode="&#225;" horiz-adv-x="413" d="M44 470q30 18 75 29q45 11 102 11q85 0 118.5 -44q33.5 -44 33.5 -125q0 -47 -2.5 -92.5q-2.5 -45.5 -3.5 -89q-1 -43.5 1.5 -84q2.5 -40.5 13.5 -76.5l-97 0l-19 61h-4q-16 -29 -45 -48q-29 -19 -73 -19q-59 0 -93 39.5q-34 39.5 -34 105.5q0 90 64 128q64 38 173 32q5 58 -7.5 84q-12.5 26 -53.5 26q-30 0 -62 -7q-32 -7 -57 -20zM187 95q27 0 44 13.5q17 13.5 25 29.5l0 83q-23 3 -44 1q-21 -2 -37 -9q-16 -7 -25.5 -20.5q-9.5 -13.5 -9.5 -34.5q0 -31 12.5 -47q12.5 -16 34.5 -16zt0 0zM196 720h119v-30l-94 -124l-67 0z" />
-<glyph unicode="&#226;" horiz-adv-x="413" d="M44 470q30 18 75 29q45 11 102 11q85 0 118.5 -44q33.5 -44 33.5 -125q0 -47 -2.5 -92.5q-2.5 -45.5 -3.5 -89q-1 -43.5 1.5 -84q2.5 -40.5 13.5 -76.5l-97 0l-19 61h-4q-16 -29 -45 -48q-29 -19 -73 -19q-59 0 -93 39.5q-34 39.5 -34 105.5q0 90 64 128q64 38 173 32q5 58 -7.5 84q-12.5 26 -53.5 26q-30 0 -62 -7q-32 -7 -57 -20zM187 95q27 0 44 13.5q17 13.5 25 29.5l0 83q-23 3 -44 1q-21 -2 -37 -9q-16 -7 -25.5 -20.5q-9.5 -13.5 -9.5 -34.5q0 -31 12.5 -47q12.5 -16 34.5 -16zt0 0zM174 732h85l91 -182h-93l-32 66l-13 49l-13 -49l-37 -66l-89 0z" />
-<glyph unicode="&#227;" horiz-adv-x="413" d="M44 470q30 18 75 29q45 11 102 11q85 0 118.5 -44q33.5 -44 33.5 -125q0 -47 -2.5 -92.5q-2.5 -45.5 -3.5 -89q-1 -43.5 1.5 -84q2.5 -40.5 13.5 -76.5l-97 0l-19 61h-4q-16 -29 -45 -48q-29 -19 -73 -19q-59 0 -93 39.5q-34 39.5 -34 105.5q0 90 64 128q64 38 173 32q5 58 -7.5 84q-12.5 26 -53.5 26q-30 0 -62 -7q-32 -7 -57 -20zM187 95q27 0 44 13.5q17 13.5 25 29.5l0 83q-23 3 -44 1q-21 -2 -37 -9q-16 -7 -25.5 -20.5q-9.5 -13.5 -9.5 -34.5q0 -31 12.5 -47q12.5 -16 34.5 -16zt0 0zM60 656q29 37 54 50.5q25 13.5 46 13.5q18 0 33.5 -6.5q15.5 -6.5 30.5 -15q15 -8.5 30 -15q15 -6.5 30 -6.5q11 0 23 5q12 5 26 18l22 -61q-27 -32 -50.5 -44q-23.5 -12 -43.5 -12q-18 0 -33.5 6q-15.5 6 -30.5 13.5q-15 7.5 -30 14q-15 6.5 -30 6.5q-13 0 -26 -5.5q-13 -5.5 -27 -19.5z" />
-<glyph unicode="&#228;" horiz-adv-x="413" d="M44 470q30 18 75 29q45 11 102 11q85 0 118.5 -44q33.5 -44 33.5 -125q0 -47 -2.5 -92.5q-2.5 -45.5 -3.5 -89q-1 -43.5 1.5 -84q2.5 -40.5 13.5 -76.5l-97 0l-19 61h-4q-16 -29 -45 -48q-29 -19 -73 -19q-59 0 -93 39.5q-34 39.5 -34 105.5q0 90 64 128q64 38 173 32q5 58 -7.5 84q-12.5 26 -53.5 26q-30 0 -62 -7q-32 -7 -57 -20zM187 95q27 0 44 13.5q17 13.5 25 29.5l0 83q-23 3 -44 1q-21 -2 -37 -9q-16 -7 -25.5 -20.5q-9.5 -13.5 -9.5 -34.5q0 -31 12.5 -47q12.5 -16 34.5 -16zt0 0zM55 651q0 32 17.5 50q17.5 18 46.5 18q28 0 45 -18q17 -18 17 -50q0 -30 -17 -47.5q-17 -17.5 -45 -17.5q-29 0 -46.5 17.5q-17.5 17.5 -17.5 47.5zt0 0zM241 651q0 32 17 50q17 18 46 18q29 0 46 -18q17 -18 17 -50q0 -30 -17 -47.5q-17 -17.5 -46 -17.5q-29 0 -46 17.5t-17 47.5z" />
-<glyph unicode="&#229;" horiz-adv-x="413" d="M44 470q30 18 75 29q45 11 102 11q85 0 118.5 -44q33.5 -44 33.5 -125q0 -47 -2.5 -92.5q-2.5 -45.5 -3.5 -89q-1 -43.5 1.5 -84q2.5 -40.5 13.5 -76.5l-97 0l-19 61h-4q-16 -29 -45 -48q-29 -19 -73 -19q-59 0 -93 39.5q-34 39.5 -34 105.5q0 90 64 128q64 38 173 32q5 58 -7.5 84q-12.5 26 -53.5 26q-30 0 -62 -7q-32 -7 -57 -20zM187 95q27 0 44 13.5q17 13.5 25 29.5l0 83q-23 3 -44 1q-21 -2 -37 -9q-16 -7 -25.5 -20.5q-9.5 -13.5 -9.5 -34.5q0 -31 12.5 -47q12.5 -16 34.5 -16zt0 0zM114 647q0 45 24.5 70q24.5 25 72.5 25q46 0 72 -23.5q26 -23.5 26 -71.5q0 -42 -25.5 -67.5q-25.5 -25.5 -72.5 -25.5q-47 0 -72 25q-25 25 -25 68zt0 0zM181 647q0 -17 8.5 -25.5q8.5 -8.5 21.5 -8.5q31 0 31 34q0 19 -8.5 27.5q-8.5 8.5 -22.5 8.5q-13 0 -21.5 -8t-8.5 -28z" />
-<glyph unicode="&#230;" horiz-adv-x="653" d="M257 223q-23 2 -44 0.5q-21 -1.5 -37.5 -9q-16.5 -7.5 -26 -21q-9.5 -13.5 -9.5 -35.5q0 -28 12 -44q12 -16 35 -16q28 0 45 13.5q17 13.5 25 31.5zM287 68q-21 -34 -53.5 -55q-32.5 -21 -87.5 -21q-60 0 -94.5 41q-34.5 41 -34.5 106q0 46 16.5 77.5q16.5 31.5 47 51q30.5 19.5 74.5 27.5q44 8 98 5q1 9 1 16.5q0 7.5 0 15.5q0 39 -13 56.5q-13 17.5 -47 17.5q-31 0 -63 -9q-32 -9 -57 -23l-31 90q32 21 78 33.5q46 12.5 96 12.5q42 0 68.5 -13q26.5 -13 43.5 -41q20 29 52 43.5q32 14.5 72 14.5q32 0 62.5 -9.5q30.5 -9.5 54 -32.5q23.5 -23 37.5 -61q14 -38 14 -95q0 -22 -2.5 -47q-2.5 -25 -7.5 -53l-241 0q2 -66 25 -96.5q23 -30.5 75 -30.5q31 0 57.5 9.5q26.5 9.5 40.5 20.5l39 -83q-25 -20 -67 -34.5q-42 -14.5 -93 -14.5q-109 0 -155 81zM510 295q3 54 -12 85.5q-15 31.5 -48 31.5q-38 0 -56 -30q-18 -30 -21 -87z" />
-<glyph unicode="&#231;" horiz-adv-x="350" d="M338 27q-18 -15 -41 -23.5q-23 -8.5 -49 -13.5l-15 -33q34 -4 54 -21.5q20 -17.5 20 -53.5q0 -23 -10.5 -40q-10.5 -17 -28.5 -28.5q-18 -11.5 -42 -17.5q-24 -6 -50 -6q-27 0 -54 6l7 48q42 -4 55.5 5.5q13.5 9.5 13.5 23.5q0 28 -70 32l43 85q-80 13 -113 82q-33 69 -33 178q0 131 47 197q47 66 138 66q45 0 73.5 -8q28.5 -8 50.5 -20l-28 -99q-18 9 -34.5 13.5q-16.5 4.5 -39.5 4.5q-42 0 -63 -36.5q-21 -36.5 -21 -117.5q0 -68 21.5 -111q21.5 -43 68.5 -43q25 0 42.5 6.5q17.5 6.5 32.5 16.5z" />
-<glyph unicode="&#232;" horiz-adv-x="428" d="M381 37q-25 -22 -68 -36q-43 -14 -90 -14q-52 0 -89.5 18q-37.5 18 -61.5 52q-24 34 -35.5 82.5q-11.5 48.5 -11.5 110.5q0 135 53.5 199.5q53.5 64.5 148.5 64.5q32 0 62 -9.5q30 -9.5 53.5 -32q23.5 -22.5 38 -60q14.5 -37.5 14.5 -94.5q0 -22 -2.5 -47q-2.5 -25 -7.5 -54l-243 0q2 -62 26 -95q24 -33 77 -33q32 0 58.5 10q26.5 10 40.5 21zM225 412q-38 0 -57 -30.5q-19 -30.5 -22 -85.5l138 0q3 57 -12 86.5q-15 29.5 -47 29.5zt0 0zM271 566h-66l-104 124v30l121 0z" />
-<glyph unicode="&#233;" horiz-adv-x="428" d="M381 37q-25 -22 -68 -36q-43 -14 -90 -14q-52 0 -89.5 18q-37.5 18 -61.5 52q-24 34 -35.5 82.5q-11.5 48.5 -11.5 110.5q0 135 53.5 199.5q53.5 64.5 148.5 64.5q32 0 62 -9.5q30 -9.5 53.5 -32q23.5 -22.5 38 -60q14.5 -37.5 14.5 -94.5q0 -22 -2.5 -47q-2.5 -25 -7.5 -54l-243 0q2 -62 26 -95q24 -33 77 -33q32 0 58.5 10q26.5 10 40.5 21zM225 412q-38 0 -57 -30.5q-19 -30.5 -22 -85.5l138 0q3 57 -12 86.5q-15 29.5 -47 29.5zt0 0zM223 720h119v-30l-94 -124l-67 0z" />
-<glyph unicode="&#234;" horiz-adv-x="428" d="M381 37q-25 -22 -68 -36q-43 -14 -90 -14q-52 0 -89.5 18q-37.5 18 -61.5 52q-24 34 -35.5 82.5q-11.5 48.5 -11.5 110.5q0 135 53.5 199.5q53.5 64.5 148.5 64.5q32 0 62 -9.5q30 -9.5 53.5 -32q23.5 -22.5 38 -60q14.5 -37.5 14.5 -94.5q0 -22 -2.5 -47q-2.5 -25 -7.5 -54l-243 0q2 -62 26 -95q24 -33 77 -33q32 0 58.5 10q26.5 10 40.5 21zM225 412q-38 0 -57 -30.5q-19 -30.5 -22 -85.5l138 0q3 57 -12 86.5q-15 29.5 -47 29.5zt0 0zM179 732h85l91 -182h-93l-32 66l-13 49l-13 -49l-37 -66l-89 0z" />
-<glyph unicode="&#235;" horiz-adv-x="428" d="M381 37q-25 -22 -68 -36q-43 -14 -90 -14q-52 0 -89.5 18q-37.5 18 -61.5 52q-24 34 -35.5 82.5q-11.5 48.5 -11.5 110.5q0 135 53.5 199.5q53.5 64.5 148.5 64.5q32 0 62 -9.5q30 -9.5 53.5 -32q23.5 -22.5 38 -60q14.5 -37.5 14.5 -94.5q0 -22 -2.5 -47q-2.5 -25 -7.5 -54l-243 0q2 -62 26 -95q24 -33 77 -33q32 0 58.5 10q26.5 10 40.5 21zM225 412q-38 0 -57 -30.5q-19 -30.5 -22 -85.5l138 0q3 57 -12 86.5q-15 29.5 -47 29.5zt0 0zM65 651q0 32 17.5 50q17.5 18 46.5 18q28 0 45 -18q17 -18 17 -50q0 -30 -17 -47.5q-17 -17.5 -45 -17.5q-29 0 -46.5 17.5q-17.5 17.5 -17.5 47.5zt0 0zM251 651q0 32 17 50q17 18 46 18q29 0 46 -18q17 -18 17 -50q0 -30 -17 -47.5q-17 -17.5 -46 -17.5q-29 0 -46 17.5t-17 47.5z" />
-<glyph unicode="&#236;" horiz-adv-x="225" d="M53 500h119v-500h-119zM164 566h-66l-104 124v30l121 0z" />
-<glyph unicode="&#237;" horiz-adv-x="225" d="M53 500h119v-500h-119zM100 720h119v-30l-94 -124l-67 0z" />
-<glyph unicode="&#238;" horiz-adv-x="225" d="M53 500h119v-500h-119zM73 732h85l91 -182h-93l-32 66l-13 49l-13 -49l-37 -66l-89 0z" />
-<glyph unicode="&#239;" horiz-adv-x="225" d="M53 500h119v-500h-119zM-44 651q0 32 17.5 50q17.5 18 46.5 18q28 0 45 -18q17 -18 17 -50q0 -30 -17 -47.5q-17 -17.5 -45 -17.5q-29 0 -46.5 17.5q-17.5 17.5 -17.5 47.5zt0 0zM142 651q0 32 17 50q17 18 46 18q29 0 46 -18q17 -18 17 -50q0 -30 -17 -47.5q-17 -17.5 -46 -17.5q-29 0 -46 17.5t-17 47.5z" />
-<glyph unicode="&#240;" horiz-adv-x="458" d="M142 244q0 -81 24.5 -116.5q24.5 -35.5 64.5 -35.5q19 0 34.5 10q15.5 10 27 32.5q11.5 22.5 18 58q6.5 35.5 6.5 87.5q0 6 -0.5 17q-0.5 11 -1 22q-0.5 11 -1.5 22q-1 11 -2 17q-13 18 -35.5 26.5q-22.5 8.5 -45.5 8.5q-44 0 -66.5 -39q-22.5 -39 -22.5 -110zt0 0zM149 580l48 37q-30 18 -62 29l48 68q21 -7 47 -19q20 -9 40 -22l47 36l40 -50l-37 -29q9 -9 18 -20q27 -30 47.5 -73q20.5 -43 33 -99.5q12.5 -56.5 12.5 -129.5q0 -86 -14.5 -147q-14.5 -61 -41.5 -100q-27 -39 -65.5 -57q-38.5 -18 -86.5 -18q-97 0 -146.5 67.5q-49.5 67.5 -49.5 191.5q0 61 14 108q14 47 39 79.5q25 32.5 59.5 49.5q34.5 17 75.5 17q29 0 54.5 -9q25.5 -9 41.5 -28q-18 70 -63 114l-58 -45z" />
-<glyph unicode="&#241;" horiz-adv-x="449" d="M291 0v304q0 55 -13 77q-13 22 -44 22q-26 0 -45 -16q-19 -16 -27 -40l0 -347h-119v500h95l14 -58h3q18 29 49 49.5q31 20.5 81 20.5q30 0 53.5 -9q23.5 -9 39.5 -29.5q16 -20.5 24 -55q8 -34.5 8 -85.5v-333zM77 656q29 37 54 50.5q25 13.5 46 13.5q18 0 33.5 -6.5q15.5 -6.5 30.5 -15q15 -8.5 30 -15q15 -6.5 30 -6.5q11 0 23 5q12 5 26 18l22 -61q-27 -32 -50.5 -44q-23.5 -12 -43.5 -12q-18 0 -33.5 6q-15.5 6 -30.5 13.5q-15 7.5 -30 14q-15 6.5 -30 6.5q-13 0 -26 -5.5q-13 -5.5 -27 -19.5z" />
-<glyph unicode="&#242;" horiz-adv-x="445" d="M25 250q0 133 52 198q52 65 145 65q100 0 149 -66q49 -66 49 -197q0 -134 -52 -198.5q-52 -64.5 -146 -64.5q-197 0 -197 263zt0 0zM148 250q0 -75 17 -116q17 -41 57 -41q38 0 56.5 35.5q18.5 35.5 18.5 121.5q0 77 -17 117q-17 40 -58 40q-35 0 -54.5 -35.5q-19.5 -35.5 -19.5 -121.5zt0 0zM271 566h-66l-104 124v30l121 0z" />
-<glyph unicode="&#243;" horiz-adv-x="445" d="M25 250q0 133 52 198q52 65 145 65q100 0 149 -66q49 -66 49 -197q0 -134 -52 -198.5q-52 -64.5 -146 -64.5q-197 0 -197 263zt0 0zM148 250q0 -75 17 -116q17 -41 57 -41q38 0 56.5 35.5q18.5 35.5 18.5 121.5q0 77 -17 117q-17 40 -58 40q-35 0 -54.5 -35.5q-19.5 -35.5 -19.5 -121.5zt0 0zM224 720h119v-30l-94 -124l-67 0z" />
-<glyph unicode="&#244;" horiz-adv-x="445" d="M25 250q0 133 52 198q52 65 145 65q100 0 149 -66q49 -66 49 -197q0 -134 -52 -198.5q-52 -64.5 -146 -64.5q-197 0 -197 263zt0 0zM148 250q0 -75 17 -116q17 -41 57 -41q38 0 56.5 35.5q18.5 35.5 18.5 121.5q0 77 -17 117q-17 40 -58 40q-35 0 -54.5 -35.5q-19.5 -35.5 -19.5 -121.5zt0 0zM186 732h85l91 -182h-93l-32 66l-13 49l-13 -49l-37 -66l-89 0z" />
-<glyph unicode="&#245;" horiz-adv-x="445" d="M25 250q0 133 52 198q52 65 145 65q100 0 149 -66q49 -66 49 -197q0 -134 -52 -198.5q-52 -64.5 -146 -64.5q-197 0 -197 263zt0 0zM148 250q0 -75 17 -116q17 -41 57 -41q38 0 56.5 35.5q18.5 35.5 18.5 121.5q0 77 -17 117q-17 40 -58 40q-35 0 -54.5 -35.5q-19.5 -35.5 -19.5 -121.5zt0 0zM73 656q29 37 54 50.5q25 13.5 46 13.5q18 0 33.5 -6.5q15.5 -6.5 30.5 -15q15 -8.5 30 -15q15 -6.5 30 -6.5q11 0 23 5q12 5 26 18l22 -61q-27 -32 -50.5 -44q-23.5 -12 -43.5 -12q-18 0 -33.5 6q-15.5 6 -30.5 13.5q-15 7.5 -30 14q-15 6.5 -30 6.5q-13 0 -26 -5.5q-13 -5.5 -27 -19.5z" />
-<glyph unicode="&#246;" horiz-adv-x="445" d="M25 250q0 133 52 198q52 65 145 65q100 0 149 -66q49 -66 49 -197q0 -134 -52 -198.5q-52 -64.5 -146 -64.5q-197 0 -197 263zt0 0zM148 250q0 -75 17 -116q17 -41 57 -41q38 0 56.5 35.5q18.5 35.5 18.5 121.5q0 77 -17 117q-17 40 -58 40q-35 0 -54.5 -35.5q-19.5 -35.5 -19.5 -121.5zt0 0zM66 651q0 32 17.5 50q17.5 18 46.5 18q28 0 45 -18q17 -18 17 -50q0 -30 -17 -47.5q-17 -17.5 -45 -17.5q-29 0 -46.5 17.5q-17.5 17.5 -17.5 47.5zt0 0zM252 651q0 32 17 50q17 18 46 18q29 0 46 -18q17 -18 17 -50q0 -30 -17 -47.5q-17 -17.5 -46 -17.5q-29 0 -46 17.5t-17 47.5z" />
-<glyph unicode="&#247;" horiz-adv-x="444" d="M38 393h368v-106h-368zM151 158q0 37 19.5 56q19.5 19 51.5 19q35 0 54 -19q19 -19 19 -56q0 -36 -19.5 -56q-19.5 -20 -53.5 -20q-33 0 -52 20q-19 20 -19 56zt0 0zM151 523q0 37 19.5 56q19.5 19 51.5 19q35 0 54 -19q19 -19 19 -56q0 -36 -19.5 -56q-19.5 -20 -53.5 -20q-33 0 -52 20t-19 56z" />
-<glyph unicode="&#248;" horiz-adv-x="448" d="M62 78q-34 64 -34 172q0 134 52 199q52 65 146 65q49 0 87 -18l18 30l79 -49l-27 -46q40 -65 40 -181q0 -134 -51.5 -199q-51.5 -65 -145.5 -65q-28 0 -51 5.5q-23 5.5 -43 15.5l-19 -31l-81 51zM179 114q18 -22 47 -22q38 0 57 35q19 35 19 123q0 19 -1 35.5q-1 16.5 -3 31.5zM269 390q-17 18 -43 18q-37 0 -57 -36q-20 -36 -20 -122q0 -33 3 -60z" />
-<glyph unicode="&#249;" horiz-adv-x="446" d="M158 500v-299q0 -59 11 -82q11 -23 40 -23q28 0 47 20.5q19 20.5 27 49.5l0 334h119v-348q0 -41 3 -80.5q3 -39.5 11 -71.5l-90 0l-21 68h-3q-19 -35 -51.5 -58q-32.5 -23 -80.5 -23q-31 0 -55 8.5q-24 8.5 -41 29.5q-17 21 -26 57.5q-9 36.5 -9 92.5v325zM265 566h-66l-104 124v30l121 0z" />
-<glyph unicode="&#250;" horiz-adv-x="446" d="M158 500v-299q0 -59 11 -82q11 -23 40 -23q28 0 47 20.5q19 20.5 27 49.5l0 334h119v-348q0 -41 3 -80.5q3 -39.5 11 -71.5l-90 0l-21 68h-3q-19 -35 -51.5 -58q-32.5 -23 -80.5 -23q-31 0 -55 8.5q-24 8.5 -41 29.5q-17 21 -26 57.5q-9 36.5 -9 92.5v325zM212 720h119v-30l-94 -124l-67 0z" />
-<glyph unicode="&#251;" horiz-adv-x="446" d="M158 500v-299q0 -59 11 -82q11 -23 40 -23q28 0 47 20.5q19 20.5 27 49.5l0 334h119v-348q0 -41 3 -80.5q3 -39.5 11 -71.5l-90 0l-21 68h-3q-19 -35 -51.5 -58q-32.5 -23 -80.5 -23q-31 0 -55 8.5q-24 8.5 -41 29.5q-17 21 -26 57.5q-9 36.5 -9 92.5v325zM184 732h85l91 -182h-93l-32 66l-13 49l-13 -49l-37 -66l-89 0z" />
-<glyph unicode="&#252;" horiz-adv-x="446" d="M158 500v-299q0 -59 11 -82q11 -23 40 -23q28 0 47 20.5q19 20.5 27 49.5l0 334h119v-348q0 -41 3 -80.5q3 -39.5 11 -71.5l-90 0l-21 68h-3q-19 -35 -51.5 -58q-32.5 -23 -80.5 -23q-31 0 -55 8.5q-24 8.5 -41 29.5q-17 21 -26 57.5q-9 36.5 -9 92.5v325zM63 651q0 32 17.5 50q17.5 18 46.5 18q28 0 45 -18q17 -18 17 -50q0 -30 -17 -47.5q-17 -17.5 -45 -17.5q-29 0 -46.5 17.5q-17.5 17.5 -17.5 47.5zt0 0zM249 651q0 32 17 50q17 18 46 18q29 0 46 -18q17 -18 17 -50q0 -30 -17 -47.5q-17 -17.5 -46 -17.5q-29 0 -46 17.5t-17 47.5z" />
-<glyph unicode="&#253;" horiz-adv-x="400" d="M203 219l13 -78h5l9 79l58 280h122l-125 -451q-17 -59 -32 -106q-15 -47 -32 -80q-17 -33 -38.5 -50.5q-21.5 -17.5 -51.5 -17.5q-21 0 -40.5 3.5q-19.5 3.5 -33.5 11.5l20 102q13 -5 26.5 -4.5q13.5 0.5 25 10q11.5 9.5 20.5 29.5q9 20 15 53l-174 500h143zM205 720h119v-30l-94 -124l-67 0z" />
-<glyph unicode="&#254;" horiz-adv-x="446" d="M43 700h119v-237h3q17 23 41.5 37q24.5 14 62.5 14q76 0 114 -59.5q38 -59.5 38 -191.5q0 -64 -12 -115.5q-12 -51.5 -35.5 -87.5q-23.5 -36 -58.5 -55q-35 -19 -81 -19q-24 0 -41 4q-17 4 -31 12l0 -202h-119zM230 408q-26 0 -42.5 -15q-16.5 -15 -25.5 -42l0 -240q10 -9 22.5 -14q12.5 -5 33.5 -5q40 0 60 39.5q20 39.5 20 134.5q0 70 -15.5 106t-52.5 36z" />
-<glyph unicode="&#255;" horiz-adv-x="400" d="M203 219l13 -78h5l9 79l58 280h122l-125 -451q-17 -59 -32 -106q-15 -47 -32 -80q-17 -33 -38.5 -50.5q-21.5 -17.5 -51.5 -17.5q-21 0 -40.5 3.5q-19.5 3.5 -33.5 11.5l20 102q13 -5 26.5 -4.5q13.5 0.5 25 10q11.5 9.5 20.5 29.5q9 20 15 53l-174 500h143zM47 651q0 32 17.5 50q17.5 18 46.5 18q28 0 45 -18q17 -18 17 -50q0 -30 -17 -47.5q-17 -17.5 -45 -17.5q-29 0 -46.5 17.5q-17.5 17.5 -17.5 47.5zt0 0zM233 651q0 32 17 50q17 18 46 18q29 0 46 -18q17 -18 17 -50q0 -30 -17 -47.5q-17 -17.5 -46 -17.5q-29 0 -46 17.5t-17 47.5z" />
-<glyph unicode="&#256;" horiz-adv-x="501" d="M328 158h-165l-41 -158h-125l203 705h99l204 -705h-132zM190 262h116l-40 163l-16 110h-4l-17 -111zM105 856h289v-89l-289 0z" />
-<glyph unicode="&#257;" horiz-adv-x="413" d="M44 470q30 18 75 29q45 11 102 11q85 0 118.5 -44q33.5 -44 33.5 -125q0 -47 -2.5 -92.5q-2.5 -45.5 -3.5 -89q-1 -43.5 1.5 -84q2.5 -40.5 13.5 -76.5l-97 0l-19 61h-4q-16 -29 -45 -48q-29 -19 -73 -19q-59 0 -93 39.5q-34 39.5 -34 105.5q0 90 64 128q64 38 173 32q5 58 -7.5 84q-12.5 26 -53.5 26q-30 0 -62 -7q-32 -7 -57 -20zM187 95q27 0 44 13.5q17 13.5 25 29.5l0 83q-23 3 -44 1q-21 -2 -37 -9q-16 -7 -25.5 -20.5q-9.5 -13.5 -9.5 -34.5q0 -31 12.5 -47q12.5 -16 34.5 -16zt0 0zM72 658h272v-91l-272 0z" />
-<glyph unicode="&#258;" horiz-adv-x="501" d="M328 158h-165l-41 -158h-125l203 705h99l204 -705h-132zM190 262h116l-40 163l-16 110h-4l-17 -111zM135 875q17 -26 49 -40.5q32 -14.5 70 -14.5q40 0 68.5 15q28.5 15 45.5 40l44 -31q-11 -30 -28 -51.5q-17 -21.5 -38.5 -35.5q-21.5 -14 -45 -20.5q-23.5 -6.5 -47.5 -6.5q-22 0 -45.5 6q-23.5 6 -46 19q-22.5 13 -41.5 34q-19 21 -31 51z" />
-<glyph unicode="&#259;" horiz-adv-x="413" d="M44 470q30 18 75 29q45 11 102 11q85 0 118.5 -44q33.5 -44 33.5 -125q0 -47 -2.5 -92.5q-2.5 -45.5 -3.5 -89q-1 -43.5 1.5 -84q2.5 -40.5 13.5 -76.5l-97 0l-19 61h-4q-16 -29 -45 -48q-29 -19 -73 -19q-59 0 -93 39.5q-34 39.5 -34 105.5q0 90 64 128q64 38 173 32q5 58 -7.5 84q-12.5 26 -53.5 26q-30 0 -62 -7q-32 -7 -57 -20zM187 95q27 0 44 13.5q17 13.5 25 29.5l0 83q-23 3 -44 1q-21 -2 -37 -9q-16 -7 -25.5 -20.5q-9.5 -13.5 -9.5 -34.5q0 -31 12.5 -47q12.5 -16 34.5 -16zt0 0zM118 719q14 -30 39 -45q25 -15 54 -15q29 0 52 15q23 15 34 45l55 -26q-2 -26 -13.5 -49q-11.5 -23 -30 -41q-18.5 -18 -43.5 -28.5q-25 -10.5 -55 -10.5q-57 0 -97 33q-40 33 -51 92z" />
-<glyph unicode="&#260;" horiz-adv-x="501" d="M190 262h116l-40 163l-16 110h-4l-17 -111zM328 158h-165l-41 -158h-125l203 705h99l204 -705h-19q-47 -23 -47 -73q0 -25 17.5 -37.5q17.5 -12.5 49.5 2.5l18 -58q-6 -6 -16 -12q-10 -6 -23 -11q-13 -5 -28.5 -8.5q-15.5 -3.5 -30.5 -3.5q-51 0 -77 25q-26 25 -26 65q0 42 25 71q20 24 51 40l-26 0z" />
-<glyph unicode="&#261;" horiz-adv-x="413" d="M44 470q30 18 75 29q45 11 102 11q85 0 118.5 -44q33.5 -44 33.5 -125q0 -47 -2.5 -92.5q-2.5 -45.5 -3.5 -89q-1 -43.5 1.5 -84q2.5 -40.5 13.5 -76.5l-20 0q-45 -24 -45 -72q0 -25 17.5 -37.5q17.5 -12.5 49.5 2.5l18 -58q-6 -6 -16 -12q-10 -6 -23 -11q-13 -5 -28.5 -8.5q-15.5 -3.5 -30.5 -3.5q-51 0 -77 25q-26 25 -26 65q0 40 23 68.5q23 28.5 59 45.5l-17 57h-4q-16 -29 -45 -48q-29 -19 -73 -19q-59 0 -93 39.5q-34 39.5 -34 105.5q0 90 64 128q64 38 173 32q5 58 -7.5 84q-12.5 26 -53.5 26q-30 0 -62 -7q-32 -7 -57 -20zM187 95q27 0 44 13.5q17 13.5 25 29.5l0 83q-23 3 -44 1q-21 -2 -37 -9q-16 -7 -25.5 -20.5q-9.5 -13.5 -9.5 -34.5q0 -31 12.5 -47t34.5 -16z" />
-<glyph unicode="&#262;" horiz-adv-x="457" d="M442 28q-26 -22 -69.5 -32q-43.5 -10 -86.5 -10q-54 0 -100.5 18.5q-46.5 18.5 -81.5 61.5q-35 43 -55 113q-20 70 -20 172q0 106 22.5 176q22.5 70 59 111.5q36.5 41.5 83.5 58.5q47 17 95 17q49 0 85.5 -8q36.5 -8 59.5 -18l-25 -111q-19 10 -44.5 15.5q-25.5 5.5 -60.5 5.5q-69 0 -106 -60q-37 -60 -37 -188q0 -55 8.5 -100.5q8.5 -45.5 27 -78.5q18.5 -33 47 -51q28.5 -18 68.5 -18q35 0 60 9.5q25 9.5 45 22.5zM305 870h143v-30l-132 -88l-93 0z" />
-<glyph unicode="&#263;" horiz-adv-x="350" d="M338 27q-25 -20 -60 -30q-35 -10 -70 -10q-51 0 -85.5 18.5q-34.5 18.5 -56.5 53q-22 34.5 -31.5 83q-9.5 48.5 -9.5 108.5q0 131 47 197q47 66 138 66q45 0 73.5 -8q28.5 -8 50.5 -20l-28 -99q-18 9 -34.5 13.5q-16.5 4.5 -39.5 4.5q-42 0 -63 -36.5q-21 -36.5 -21 -117.5q0 -68 21.5 -111q21.5 -43 68.5 -43q25 0 42.5 6.5q17.5 6.5 32.5 16.5zM204 720h119v-30l-94 -124l-67 0z" />
-<glyph unicode="&#264;" horiz-adv-x="457" d="M442 28q-26 -22 -69.5 -32q-43.5 -10 -86.5 -10q-54 0 -100.5 18.5q-46.5 18.5 -81.5 61.5q-35 43 -55 113q-20 70 -20 172q0 106 22.5 176q22.5 70 59 111.5q36.5 41.5 83.5 58.5q47 17 95 17q49 0 85.5 -8q36.5 -8 59.5 -18l-25 -111q-19 10 -44.5 15.5q-25.5 5.5 -60.5 5.5q-69 0 -106 -60q-37 -60 -37 -188q0 -55 8.5 -100.5q8.5 -45.5 27 -78.5q18.5 -33 47 -51q28.5 -18 68.5 -18q35 0 60 9.5q25 9.5 45 22.5zM240 870h87l104 -93v-39h-85l-47 41l-17 34l-18 -33l-50 -42h-83l0 40z" />
-<glyph unicode="&#265;" horiz-adv-x="350" d="M338 27q-25 -20 -60 -30q-35 -10 -70 -10q-51 0 -85.5 18.5q-34.5 18.5 -56.5 53q-22 34.5 -31.5 83q-9.5 48.5 -9.5 108.5q0 131 47 197q47 66 138 66q45 0 73.5 -8q28.5 -8 50.5 -20l-28 -99q-18 9 -34.5 13.5q-16.5 4.5 -39.5 4.5q-42 0 -63 -36.5q-21 -36.5 -21 -117.5q0 -68 21.5 -111q21.5 -43 68.5 -43q25 0 42.5 6.5q17.5 6.5 32.5 16.5zM138 732h85l91 -182h-93l-32 66l-13 49l-13 -49l-37 -66l-89 0z" />
-<glyph unicode="&#268;" horiz-adv-x="457" d="M442 28q-26 -22 -69.5 -32q-43.5 -10 -86.5 -10q-54 0 -100.5 18.5q-46.5 18.5 -81.5 61.5q-35 43 -55 113q-20 70 -20 172q0 106 22.5 176q22.5 70 59 111.5q36.5 41.5 83.5 58.5q47 17 95 17q49 0 85.5 -8q36.5 -8 59.5 -18l-25 -111q-19 10 -44.5 15.5q-25.5 5.5 -60.5 5.5q-69 0 -106 -60q-37 -60 -37 -188q0 -55 8.5 -100.5q8.5 -45.5 27 -78.5q18.5 -33 47 -51q28.5 -18 68.5 -18q35 0 60 9.5q25 9.5 45 22.5zM322 737h-87l-104 94v39h91l42 -45l17 -30l17 29l45 46h88l0 -40z" />
-<glyph unicode="&#269;" horiz-adv-x="350" d="M338 27q-25 -20 -60 -30q-35 -10 -70 -10q-51 0 -85.5 18.5q-34.5 18.5 -56.5 53q-22 34.5 -31.5 83q-9.5 48.5 -9.5 108.5q0 131 47 197q47 66 138 66q45 0 73.5 -8q28.5 -8 50.5 -20l-28 -99q-18 9 -34.5 13.5q-16.5 4.5 -39.5 4.5q-42 0 -63 -36.5q-21 -36.5 -21 -117.5q0 -68 21.5 -111q21.5 -43 68.5 -43q25 0 42.5 6.5q17.5 6.5 32.5 16.5zM243 550h-88l-95 182h98l32 -66l13 -49l13 49l37 66l91 0z" />
-<glyph unicode="&#270;" horiz-adv-x="535" d="M45 700q18 3 40.5 4.5q22.5 1.5 46 3q23.5 1.5 45.5 2q22 0.5 39 0.5q83 0 138.5 -25.5q55.5 -25.5 89 -72q33.5 -46.5 47.5 -111.5q14 -65 14 -145q0 -73 -13.5 -139.5q-13.5 -66.5 -47.5 -117q-34 -50.5 -92 -80.5q-58 -30 -146 -30q-13 0 -35 1q-22 1 -46 2.5q-24 1.5 -46 3q-22 1.5 -34 3.5zM229 594q-16 0 -32.5 -0.5q-16.5 -0.5 -25.5 -2.5l0 -482q3 -1 10.5 -1.5q7.5 -0.5 16 -1q8.5 -0.5 16 -1q7.5 -0.5 10.5 -0.5q45 0 74 21q29 21 45.5 56q16.5 35 23 80.5q6.5 45.5 6.5 95.5q0 46 -5.5 89q-5.5 43 -21 75.5q-15.5 32.5 -44 52q-28.5 19.5 -73.5 19.5zt0 0zM270 737h-87l-104 94v39h91l42 -45l17 -30l17 29l45 46h88l0 -40z" />
-<glyph unicode="&#271;" horiz-adv-x="445" d="M402 176q0 -42 1 -84q1 -42 8 -93l-84 0l-16 58h-4q-34 -70 -119 -70q-76 0 -119.5 60q-43.5 60 -43.5 195q0 132 47 200.5q47 68.5 140 68.5q24 0 40 -3q16 -3 31 -10l0 202h119zM216 96q27 0 43 13.5q16 13.5 24 39.5l0 236q-10 9 -22.5 13q-12.5 4 -32.5 4q-40 0 -60 -36q-20 -36 -20 -128q0 -69 16.5 -105.5q16.5 -36.5 51.5 -36.5zt0 0zM556 700q-2 -29 -10.5 -60.5q-8.5 -31.5 -20.5 -59.5q-12 -28 -25.5 -50q-13.5 -22 -23.5 -32l-53 26q14 36 21.5 83q7.5 47 7.5 93z" />
-<glyph unicode="&#272;" horiz-adv-x="555" d="M-3 401h68v299q18 3 40.5 4.5q22.5 1.5 46 3q23.5 1.5 45.5 2q22 0.5 39 0.5q83 0 138.5 -25.5q55.5 -25.5 89 -72q33.5 -46.5 47.5 -111.5q14 -65 14 -145q0 -73 -13.5 -139.5q-13.5 -66.5 -47.5 -117q-34 -50.5 -92 -80.5q-58 -30 -146 -30q-13 0 -35 1q-22 1 -46 2.5q-24 1.5 -46 3q-22 1.5 -34 3.5l0 323h-68zM191 401h108v-79h-108v-213q3 -1 10.5 -1.5q7.5 -0.5 16 -1q8.5 -0.5 16 -1q7.5 -0.5 10.5 -0.5q45 0 74 21q29 21 45.5 56q16.5 35 23 80.5q6.5 45.5 6.5 95.5q0 46 -5.5 89q-5.5 43 -21 75.5q-15.5 32.5 -44 52q-28.5 19.5 -73.5 19.5q-16 0 -32.5 -0.5q-16.5 -0.5 -25.5 -2.5z" />
-<glyph unicode="&#273;" horiz-adv-x="452" d="M402 641h61v-79h-61v-386q0 -42 1 -84q1 -42 8 -93l-84 0l-16 58h-4q-34 -70 -119 -70q-76 0 -119.5 60q-43.5 60 -43.5 195q0 132 47 200.5q47 68.5 140 68.5q24 0 40 -3q16 -3 31 -10l0 64h-120v79h120v59h119zM216 96q27 0 43 13.5q16 13.5 24 39.5l0 236q-10 9 -22.5 13q-12.5 4 -32.5 4q-40 0 -60 -36q-20 -36 -20 -128q0 -69 16.5 -105.5t51.5 -36.5z" />
-<glyph unicode="&#274;" horiz-adv-x="430" d="M45 700h350v-116h-224v-172h203v-116h-203v-180h228v-116h-354zM74 856h289v-89l-289 0z" />
-<glyph unicode="&#275;" horiz-adv-x="428" d="M381 37q-25 -22 -68 -36q-43 -14 -90 -14q-52 0 -89.5 18q-37.5 18 -61.5 52q-24 34 -35.5 82.5q-11.5 48.5 -11.5 110.5q0 135 53.5 199.5q53.5 64.5 148.5 64.5q32 0 62 -9.5q30 -9.5 53.5 -32q23.5 -22.5 38 -60q14.5 -37.5 14.5 -94.5q0 -22 -2.5 -47q-2.5 -25 -7.5 -54l-243 0q2 -62 26 -95q24 -33 77 -33q32 0 58.5 10q26.5 10 40.5 21zM225 412q-38 0 -57 -30.5q-19 -30.5 -22 -85.5l138 0q3 57 -12 86.5q-15 29.5 -47 29.5zt0 0zM79 658h272v-91l-272 0z" />
-<glyph unicode="&#278;" horiz-adv-x="430" d="M45 700h350v-116h-224v-172h203v-116h-203v-180h228v-116h-354zM149 799q0 25 19.5 43q19.5 18 57.5 18q39 0 59 -18q20 -18 20 -43q0 -26 -20 -44q-20 -18 -59 -18q-38 0 -57.5 18t-19.5 44z" />
-<glyph unicode="&#279;" horiz-adv-x="428" d="M381 37q-25 -22 -68 -36q-43 -14 -90 -14q-52 0 -89.5 18q-37.5 18 -61.5 52q-24 34 -35.5 82.5q-11.5 48.5 -11.5 110.5q0 135 53.5 199.5q53.5 64.5 148.5 64.5q32 0 62 -9.5q30 -9.5 53.5 -32q23.5 -22.5 38 -60q14.5 -37.5 14.5 -94.5q0 -22 -2.5 -47q-2.5 -25 -7.5 -54l-243 0q2 -62 26 -95q24 -33 77 -33q32 0 58.5 10q26.5 10 40.5 21zM225 412q-38 0 -57 -30.5q-19 -30.5 -22 -85.5l138 0q3 57 -12 86.5q-15 29.5 -47 29.5zt0 0zM146 641q0 30 19 49.5q19 19.5 54 19.5q35 0 56 -19q21 -19 21 -50q0 -31 -21 -49q-21 -18 -56 -18q-35 0 -54 18.5t-19 48.5z" />
-<glyph unicode="&#280;" horiz-adv-x="430" d="M45 700h350v-116h-224v-172h203v-116h-203v-180h228v-116h-24q-47 -22 -47 -73q0 -25 17.5 -37.5q17.5 -12.5 49.5 2.5l18 -58q-6 -6 -16 -12q-10 -6 -23 -11q-13 -5 -28.5 -8.5q-15.5 -3.5 -30.5 -3.5q-51 0 -77 25q-26 25 -26 65q0 38 21 66q21 28 55 45l-243 0z" />
-<glyph unicode="&#281;" horiz-adv-x="421" d="M225 412q-38 0 -57 -30.5q-19 -30.5 -22 -85.5l138 0q3 57 -12 86.5q-15 29.5 -47 29.5zt0 0zM381 37q-21 -19 -54 -31q-14 -10 -24 -24q-18 -24 -17 -51q0 -13 5 -23.5q5 -10.5 14.5 -16.5q9.5 -6 22.5 -5q13 1 29 10l18 -62q-12 -12 -40.5 -24q-28.5 -12 -60.5 -12q-48 0 -73.5 27.5q-25.5 27.5 -25.5 66.5q0 47 29 80q7 8 15 15q-50 1 -86 18q-37 18 -61 52q-24 34 -35.5 82.5q-11.5 48.5 -11.5 110.5q0 135 53.5 199.5q53.5 64.5 148.5 64.5q32 0 62 -9.5q30 -9.5 53.5 -32q23.5 -22.5 38 -60q14.5 -37.5 14.5 -94.5q0 -22 -2.5 -47q-2.5 -25 -7.5 -54l-243 0q2 -62 26 -95q24 -33 77 -33q32 0 58.5 10q26.5 10 40.5 21z" />
-<glyph unicode="&#282;" horiz-adv-x="430" d="M45 700h350v-116h-224v-172h203v-116h-203v-180h228v-116h-354zM260 737h-87l-104 94v39h91l42 -45l17 -30l17 29l45 46h88l0 -40z" />
-<glyph unicode="&#283;" horiz-adv-x="428" d="M381 37q-25 -22 -68 -36q-43 -14 -90 -14q-52 0 -89.5 18q-37.5 18 -61.5 52q-24 34 -35.5 82.5q-11.5 48.5 -11.5 110.5q0 135 53.5 199.5q53.5 64.5 148.5 64.5q32 0 62 -9.5q30 -9.5 53.5 -32q23.5 -22.5 38 -60q14.5 -37.5 14.5 -94.5q0 -22 -2.5 -47q-2.5 -25 -7.5 -54l-243 0q2 -62 26 -95q24 -33 77 -33q32 0 58.5 10q26.5 10 40.5 21zM225 412q-38 0 -57 -30.5q-19 -30.5 -22 -85.5l138 0q3 57 -12 86.5q-15 29.5 -47 29.5zt0 0zM260 550h-88l-95 182h98l32 -66l13 -49l13 49l37 66l91 0z" />
-<glyph unicode="&#284;" horiz-adv-x="502" d="M257 362h216v-310q-37 -35 -86.5 -50.5q-49.5 -15.5 -98.5 -15.5q-59 0 -107 21q-48 21 -81.5 65.5q-33.5 44.5 -52 113q-18.5 68.5 -18.5 164.5q0 100 22 169q22 69 58.5 112.5q36.5 43.5 85 63q48.5 19.5 102.5 19.5q48 0 87.5 -8.5q39.5 -8.5 65.5 -19.5v-109q-46 9 -72.5 15q-26.5 6 -64.5 6q-35 0 -63.5 -14q-28.5 -14 -48 -44q-19.5 -30 -30 -77.5q-10.5 -47.5 -10.5 -113.5q0 -127 38.5 -187q38.5 -60 101.5 -60q20 0 38.5 6q18.5 6 32.5 19l0 143l-115 16zM224 870h87l104 -93v-39h-85l-47 41l-17 34l-18 -33l-50 -42h-83l0 40z" />
-<glyph unicode="&#285;" horiz-adv-x="443" d="M401 0q0 -109 -50 -160.5q-50 -51.5 -139 -51.5q-62 0 -97 9.5q-35 9.5 -54 20.5l25 101q22 -9 47.5 -17q25.5 -8 60.5 -8q51 0 70.5 27.5q19.5 27.5 19.5 83.5v27h-3q-14 -20 -37.5 -30q-23.5 -10 -60.5 -10q-79 0 -118.5 59.5q-39.5 59.5 -39.5 188.5q0 139 54.5 205q54.5 66 155.5 66q54 0 97 -8.5q43 -8.5 69 -20.5zM216 94q27 0 42.5 13q15.5 13 23.5 37l0 250q-11 5 -24.5 8q-13.5 3 -31.5 3q-37 0 -57.5 -36q-20.5 -36 -20.5 -124q0 -151 68 -151zt0 0zM184 732h85l91 -182h-93l-32 66l-13 49l-13 -49l-37 -66l-89 0z" />
-<glyph unicode="&#286;" horiz-adv-x="502" d="M257 362h216v-310q-37 -35 -86.5 -50.5q-49.5 -15.5 -98.5 -15.5q-59 0 -107 21q-48 21 -81.5 65.5q-33.5 44.5 -52 113q-18.5 68.5 -18.5 164.5q0 100 22 169q22 69 58.5 112.5q36.5 43.5 85 63q48.5 19.5 102.5 19.5q48 0 87.5 -8.5q39.5 -8.5 65.5 -19.5v-109q-46 9 -72.5 15q-26.5 6 -64.5 6q-35 0 -63.5 -14q-28.5 -14 -48 -44q-19.5 -30 -30 -77.5q-10.5 -47.5 -10.5 -113.5q0 -127 38.5 -187q38.5 -60 101.5 -60q20 0 38.5 6q18.5 6 32.5 19l0 143l-115 16zM161 875q17 -26 49 -40.5q32 -14.5 70 -14.5q40 0 68.5 15q28.5 15 45.5 40l44 -31q-11 -30 -28 -51.5q-17 -21.5 -38.5 -35.5q-21.5 -14 -45 -20.5q-23.5 -6.5 -47.5 -6.5q-22 0 -45.5 6q-23.5 6 -46 19q-22.5 13 -41.5 34q-19 21 -31 51z" />
-<glyph unicode="&#287;" horiz-adv-x="443" d="M401 0q0 -109 -50 -160.5q-50 -51.5 -139 -51.5q-62 0 -97 9.5q-35 9.5 -54 20.5l25 101q22 -9 47.5 -17q25.5 -8 60.5 -8q51 0 70.5 27.5q19.5 27.5 19.5 83.5v27h-3q-14 -20 -37.5 -30q-23.5 -10 -60.5 -10q-79 0 -118.5 59.5q-39.5 59.5 -39.5 188.5q0 139 54.5 205q54.5 66 155.5 66q54 0 97 -8.5q43 -8.5 69 -20.5zM216 94q27 0 42.5 13q15.5 13 23.5 37l0 250q-11 5 -24.5 8q-13.5 3 -31.5 3q-37 0 -57.5 -36q-20.5 -36 -20.5 -124q0 -151 68 -151zt0 0zM134 719q14 -30 39 -45q25 -15 54 -15q29 0 52 15q23 15 34 45l55 -26q-2 -26 -13.5 -49q-11.5 -23 -30 -41q-18.5 -18 -43.5 -28.5q-25 -10.5 -55 -10.5q-57 0 -97 33q-40 33 -51 92z" />
-<glyph unicode="&#290;" horiz-adv-x="502" d="M257 362h216v-310q-37 -35 -86.5 -50.5q-49.5 -15.5 -98.5 -15.5q-59 0 -107 21q-48 21 -81.5 65.5q-33.5 44.5 -52 113q-18.5 68.5 -18.5 164.5q0 100 22 169q22 69 58.5 112.5q36.5 43.5 85 63q48.5 19.5 102.5 19.5q48 0 87.5 -8.5q39.5 -8.5 65.5 -19.5v-109q-46 9 -72.5 15q-26.5 6 -64.5 6q-35 0 -63.5 -14q-28.5 -14 -48 -44q-19.5 -30 -30 -77.5q-10.5 -47.5 -10.5 -113.5q0 -127 38.5 -187q38.5 -60 101.5 -60q20 0 38.5 6q18.5 6 32.5 19l0 143l-115 16zM237 -106q0 29 18 46.5q18 17.5 44 17.5q31 0 50.5 -22q19.5 -22 19.5 -67q0 -33 -10 -58q-10 -25 -24.5 -42q-14.5 -17 -30 -27.5q-15.5 -10.5 -27.5 -14.5l-33 46q13 8 25 23.5q12 15.5 14 37.5q-15 1 -30.5 15t-15.5 45z" />
-<glyph unicode="&#291;" horiz-adv-x="443" d="M401 0q0 -109 -50 -160.5q-50 -51.5 -139 -51.5q-62 0 -97 9.5q-35 9.5 -54 20.5l25 101q22 -9 47.5 -17q25.5 -8 60.5 -8q51 0 70.5 27.5q19.5 27.5 19.5 83.5v27h-3q-14 -20 -37.5 -30q-23.5 -10 -60.5 -10q-79 0 -118.5 59.5q-39.5 59.5 -39.5 188.5q0 139 54.5 205q54.5 66 155.5 66q54 0 97 -8.5q43 -8.5 69 -20.5zM216 94q27 0 42.5 13q15.5 13 23.5 37l0 250q-11 5 -24.5 8q-13.5 3 -31.5 3q-37 0 -57.5 -36q-20.5 -36 -20.5 -124q0 -151 68 -151zt0 0zM303 615q0 -29 -18 -46.5q-18 -17.5 -44 -17.5q-31 0 -50.5 22q-19.5 22 -19.5 67q0 33 10 58q10 25 24.5 42q14.5 17 30 27.5q15.5 10.5 27.5 14.5l33 -46q-13 -8 -25 -23.5q-12 -15.5 -14 -37.5q15 -1 30.5 -15t15.5 -45z" />
-<glyph unicode="&#292;" horiz-adv-x="533" d="M362 296h-191v-296h-126v700h126v-288h191v288h126v-700h-126zM232 870h87l104 -93v-39h-85l-47 41l-17 34l-18 -33l-50 -42h-83l0 40z" />
-<glyph unicode="&#293;" horiz-adv-x="449" d="M291 0v302q0 54 -12.5 78q-12.5 24 -45.5 24q-24 0 -44 -17q-20 -17 -27 -43l0 -344h-119v700h119v-245h3q20 26 48.5 42q28.5 16 71.5 16q31 0 54 -9q23 -9 39 -30q16 -21 24 -56.5q8 -35.5 8 -89.5v-328zM69 870h87l104 -93v-39h-85l-47 41l-17 34l-18 -33l-50 -42h-83l0 40z" />
-<glyph unicode="&#294;" horiz-adv-x="567" d="M2 596h61v104h126v-104h191v104h126v-104h59v-78h-59v-518h-126v296h-191v-296h-126v518h-61zM380 412v106h-191l0 -106z" />
-<glyph unicode="&#295;" horiz-adv-x="456" d="M-9 641h59v59h119v-59h133v-79h-133v-107h3q20 26 48.5 42q28.5 16 71.5 16q31 0 54 -9q23 -9 39 -30q16 -21 24 -56.5q8 -35.5 8 -89.5v-328h-119v302q0 54 -12.5 78q-12.5 24 -45.5 24q-24 0 -44 -17q-20 -17 -27 -43l0 -344h-119v562l-59 0z" />
-<glyph unicode="&#298;" horiz-adv-x="238" d="M56 700h126v-700h-126zM-23 856h289v-89l-289 0z" />
-<glyph unicode="&#299;" horiz-adv-x="225" d="M53 500h119v-500h-119zM-25 658h272v-91l-272 0z" />
-<glyph unicode="&#302;" horiz-adv-x="238" d="M56 700h126v-700h-12q-17 -12 -27.5 -29.5q-10.5 -17.5 -10.5 -43.5q0 -26 17.5 -38.5q17.5 -12.5 49.5 3.5l18 -59q-12 -11 -40 -23q-28 -12 -60 -12q-49 0 -75 25q-26 25 -26 66q0 38 19.5 66q19.5 28 53.5 45l-33 0z" />
-<glyph unicode="&#303;" horiz-adv-x="223" d="M53 500h119v-500h-11q-18 -14 -29 -32q-11 -18 -10 -41q0 -26 20 -38.5q20 -12.5 51 7.5l18 -62q-12 -12 -40.5 -24q-28.5 -12 -60.5 -12q-49 0 -74 25.5q-25 25.5 -25 66.5q0 38 19 65.5q19 27.5 53 44.5l-30 0zM37 641q0 30 19 49.5q19 19.5 54 19.5q35 0 56 -19q21 -19 21 -50q0 -31 -21 -49q-21 -18 -56 -18q-35 0 -54 18.5t-19 48.5z" />
-<glyph unicode="&#304;" horiz-adv-x="238" d="M56 700h126v-700h-126zM41 799q0 25 19.5 43q19.5 18 57.5 18q39 0 59 -18q20 -18 20 -43q0 -26 -20 -44q-20 -18 -59 -18q-38 0 -57.5 18t-19.5 44z" />
-<glyph unicode="&#305;" horiz-adv-x="225" d="M53 500h119v-500l-119 0z" />
-<glyph unicode="&#308;" horiz-adv-x="289" d="M113 700h126v-509q0 -46 -7.5 -83.5q-7.5 -37.5 -24.5 -64q-17 -26.5 -45 -41q-28 -14.5 -70 -14.5q-29 0 -57.5 6q-28.5 6 -51.5 17l29 106q21 -13 49 -13q35 0 43.5 29.5q8.5 29.5 8.5 84.5zM130 870h87l104 -93v-39h-85l-47 41l-17 34l-18 -33l-50 -42h-83l0 40z" />
-<glyph unicode="&#309;" horiz-adv-x="225" d="M54 500h119v-521q0 -91 -31.5 -139q-31.5 -48 -100.5 -48q-28 0 -57 7l0 106q43 -4 56.5 24.5q13.5 28.5 13.5 84.5zM75 732h85l91 -182h-93l-32 66l-13 49l-13 -49l-37 -66l-89 0z" />
-<glyph unicode="&#310;" horiz-adv-x="519" d="M198 300h-27v-300h-126v700h126v-311l25 12l147 299h142l-160 -295l-47 -37l48 -38l185 -330h-154zM186 -106q0 29 18 46.5q18 17.5 44 17.5q31 0 50.5 -22q19.5 -22 19.5 -67q0 -33 -10 -58q-10 -25 -24.5 -42q-14.5 -17 -30 -27.5q-15.5 -10.5 -27.5 -14.5l-33 46q13 8 25 23.5q12 15.5 14 37.5q-15 1 -30.5 15t-15.5 45z" />
-<glyph unicode="&#311;" horiz-adv-x="412" d="M190 207h-28v-207h-119v700h119v-413l24 14l83 199h129l-92 -198l-43 -34l47 -34l102 -234h-134zM144 -106q0 29 18 46.5q18 17.5 44 17.5q31 0 50.5 -22q19.5 -22 19.5 -67q0 -33 -10 -58q-10 -25 -24.5 -42q-14.5 -17 -30 -27.5q-15.5 -10.5 -27.5 -14.5l-33 46q13 8 25 23.5q12 15.5 14 37.5q-15 1 -30.5 15t-15.5 45z" />
-<glyph unicode="&#313;" horiz-adv-x="424" d="M417 0h-372v700h126v-584h246zM157 870h143v-30l-132 -88l-93 0z" />
-<glyph unicode="&#314;" horiz-adv-x="243" d="M164 162q0 -35 7 -50q7 -15 23 -15q9 0 18.5 2q9.5 2 21.5 7l11 -96q-12 -8 -41 -15q-29 -7 -59 -7q-50 0 -75 25q-25 25 -25 85v602h119zM136 870h143v-30l-132 -88l-93 0z" />
-<glyph unicode="&#315;" horiz-adv-x="424" d="M417 0h-372v700h126v-584h246zM150 -106q0 29 18 46.5q18 17.5 44 17.5q31 0 50.5 -22q19.5 -22 19.5 -67q0 -33 -10 -58q-10 -25 -24.5 -42q-14.5 -17 -30 -27.5q-15.5 -10.5 -27.5 -14.5l-33 46q13 8 25 23.5q12 15.5 14 37.5q-15 1 -30.5 15t-15.5 45z" />
-<glyph unicode="&#316;" horiz-adv-x="243" d="M164 162q0 -35 7 -50q7 -15 23 -15q9 0 18.5 2q9.5 2 21.5 7l11 -96q-12 -8 -41 -15q-29 -7 -59 -7q-50 0 -75 25q-25 25 -25 85v602h119zM76 -106q0 29 18 46.5q18 17.5 44 17.5q31 0 50.5 -22q19.5 -22 19.5 -67q0 -33 -10 -58q-10 -25 -24.5 -42q-14.5 -17 -30 -27.5q-15.5 -10.5 -27.5 -14.5l-33 46q13 8 25 23.5q12 15.5 14 37.5q-15 1 -30.5 15t-15.5 45z" />
-<glyph unicode="&#317;" horiz-adv-x="424" d="M417 0h-372v700h126v-584h246zM397 700q-2 -29 -10.5 -60.5q-8.5 -31.5 -20.5 -59.5q-12 -28 -25.5 -50q-13.5 -22 -23.5 -32l-53 26q14 36 21.5 83q7.5 47 7.5 93z" />
-<glyph unicode="&#318;" horiz-adv-x="243" d="M164 162q0 -35 7 -50q7 -15 23 -15q9 0 18.5 2q9.5 2 21.5 7l11 -96q-12 -8 -41 -15q-29 -7 -59 -7q-50 0 -75 25q-25 25 -25 85v602h119zM319 700q-2 -29 -10.5 -60.5q-8.5 -31.5 -20.5 -59.5q-12 -28 -25.5 -50q-13.5 -22 -23.5 -32l-53 26q14 36 21.5 83q7.5 47 7.5 93z" />
-<glyph unicode="&#321;" horiz-adv-x="434" d="M3 320l52 40v340h126v-243l84 65v-126l-84 -64v-216h246v-116h-372v236l-52 -39z" />
-<glyph unicode="&#322;" horiz-adv-x="267" d="M1 309l63 48v343h119v-251l80 62v-126l-80 -61v-162q0 -35 7 -50q7 -15 23 -15q9 0 18.5 2q9.5 2 21.5 7l11 -96q-12 -8 -41 -15q-29 -7 -59 -7q-50 0 -75 25q-25 25 -25 85v136l-63 -48z" />
-<glyph unicode="&#323;" horiz-adv-x="540" d="M199 344l-46 123h-5l16 -121v-346h-119v705h97l201 -352l43 -121h6l-16 119v349h119v-705h-97zM303 870h143v-30l-132 -88l-93 0z" />
-<glyph unicode="&#324;" horiz-adv-x="449" d="M291 0v304q0 55 -13 77q-13 22 -44 22q-26 0 -45 -16q-19 -16 -27 -40l0 -347h-119v500h95l14 -58h3q18 29 49 49.5q31 20.5 81 20.5q30 0 53.5 -9q23.5 -9 39.5 -29.5q16 -20.5 24 -55q8 -34.5 8 -85.5v-333zM226 720h119v-30l-94 -124l-67 0z" />
-<glyph unicode="&#325;" horiz-adv-x="540" d="M199 344l-46 123h-5l16 -121v-346h-119v705h97l201 -352l43 -121h6l-16 119v349h119v-705h-97zM214 -106q0 29 18 46.5q18 17.5 44 17.5q31 0 50.5 -22q19.5 -22 19.5 -67q0 -33 -10 -58q-10 -25 -24.5 -42q-14.5 -17 -30 -27.5q-15.5 -10.5 -27.5 -14.5l-33 46q13 8 25 23.5q12 15.5 14 37.5q-15 1 -30.5 15t-15.5 45z" />
-<glyph unicode="&#326;" horiz-adv-x="449" d="M291 0v304q0 55 -13 77q-13 22 -44 22q-26 0 -45 -16q-19 -16 -27 -40l0 -347h-119v500h95l14 -58h3q18 29 49 49.5q31 20.5 81 20.5q30 0 53.5 -9q23.5 -9 39.5 -29.5q16 -20.5 24 -55q8 -34.5 8 -85.5v-333zM159 -106q0 29 18 46.5q18 17.5 44 17.5q31 0 50.5 -22q19.5 -22 19.5 -67q0 -33 -10 -58q-10 -25 -24.5 -42q-14.5 -17 -30 -27.5q-15.5 -10.5 -27.5 -14.5l-33 46q13 8 25 23.5q12 15.5 14 37.5q-15 1 -30.5 15t-15.5 45z" />
-<glyph unicode="&#327;" horiz-adv-x="540" d="M199 344l-46 123h-5l16 -121v-346h-119v705h97l201 -352l43 -121h6l-16 119v349h119v-705h-97zM316 737h-87l-104 94v39h91l42 -45l17 -30l17 29l45 46h88l0 -40z" />
-<glyph unicode="&#328;" horiz-adv-x="449" d="M291 0v304q0 55 -13 77q-13 22 -44 22q-26 0 -45 -16q-19 -16 -27 -40l0 -347h-119v500h95l14 -58h3q18 29 49 49.5q31 20.5 81 20.5q30 0 53.5 -9q23.5 -9 39.5 -29.5q16 -20.5 24 -55q8 -34.5 8 -85.5v-333zM268 550h-88l-95 182h98l32 -66l13 -49l13 49l37 66l91 0z" />
-<glyph unicode="&#332;" horiz-adv-x="553" d="M29 350q0 178 61 271q61 93 186 93q65 0 112 -25.5q47 -25.5 77 -73q30 -47.5 44.5 -115q14.5 -67.5 14.5 -150.5q0 -178 -62.5 -271q-62.5 -93 -185.5 -93q-66 0 -112.5 25.5q-46.5 25.5 -76.5 73q-30 47.5 -44 115q-14 67.5 -14 150.5zt0 0zM161 350q0 -53 6 -98.5q6 -45.5 20 -78.5q14 -33 35.5 -52q21.5 -19 53.5 -19q58 0 87 59q29 59 29 189q0 51 -6 96.5q-6 45.5 -19.5 79q-13.5 33.5 -35.5 53q-22 19.5 -55 19.5q-115 0 -115 -248zt0 0zM134 856h289v-89l-289 0z" />
-<glyph unicode="&#333;" horiz-adv-x="445" d="M25 250q0 133 52 198q52 65 145 65q100 0 149 -66q49 -66 49 -197q0 -134 -52 -198.5q-52 -64.5 -146 -64.5q-197 0 -197 263zt0 0zM148 250q0 -75 17 -116q17 -41 57 -41q38 0 56.5 35.5q18.5 35.5 18.5 121.5q0 77 -17 117q-17 40 -58 40q-35 0 -54.5 -35.5q-19.5 -35.5 -19.5 -121.5zt0 0zM85 658h272v-91l-272 0z" />
-<glyph unicode="&#336;" horiz-adv-x="553" d="M29 350q0 178 61 271q61 93 186 93q65 0 112 -25.5q47 -25.5 77 -73q30 -47.5 44.5 -115q14.5 -67.5 14.5 -150.5q0 -178 -62.5 -271q-62.5 -93 -185.5 -93q-66 0 -112.5 25.5q-46.5 25.5 -76.5 73q-30 47.5 -44 115q-14 67.5 -14 150.5zt0 0zM161 350q0 -53 6 -98.5q6 -45.5 20 -78.5q14 -33 35.5 -52q21.5 -19 53.5 -19q58 0 87 59q29 59 29 189q0 51 -6 96.5q-6 45.5 -19.5 79q-13.5 33.5 -35.5 53q-22 19.5 -55 19.5q-115 0 -115 -248zt0 0zM197 850h120v-16l-82 -93h-86zM369 850h125v-16l-118 -93l-86 0z" />
-<glyph unicode="&#337;" horiz-adv-x="445" d="M25 250q0 133 52 198q52 65 145 65q100 0 149 -66q49 -66 49 -197q0 -134 -52 -198.5q-52 -64.5 -146 -64.5q-197 0 -197 263zt0 0zM148 250q0 -75 17 -116q17 -41 57 -41q38 0 56.5 35.5q18.5 35.5 18.5 121.5q0 77 -17 117q-17 40 -58 40q-35 0 -54.5 -35.5q-19.5 -35.5 -19.5 -121.5zt0 0zM141 700h108v-16l-64 -113h-73zM295 700h114v-16l-99 -113l-75 0z" />
-<glyph unicode="&#338;" horiz-adv-x="753" d="M368 573q-16 11 -39 18q-23 7 -52 7q-57 0 -86.5 -60.5q-29.5 -60.5 -29.5 -187.5q0 -53 6.5 -98.5q6.5 -45.5 21 -78.5q14.5 -33 37.5 -52q23 -19 57 -19q23 0 43 4q20 4 42 15zM368 0q-16 -6 -43.5 -10q-27.5 -4 -52.5 -4q-64 0 -110 26q-46 26 -75.5 73.5q-29.5 47.5 -43.5 114.5q-14 67 -14 150q0 177 61 270.5q61 93.5 182 93.5q30 0 54.5 -4.5q24.5 -4.5 41.5 -9.5l349 0v-116h-223v-172h202v-116h-202v-180h227l0 -116z" />
-<glyph unicode="&#339;" horiz-adv-x="697" d="M148 250q0 -72 17.5 -115q17.5 -43 56.5 -43q38 0 56 37q18 37 18 121q0 75 -16.5 116.5q-16.5 41.5 -57.5 41.5q-35 0 -54.5 -36q-19.5 -36 -19.5 -122zt0 0zM355 55q-20 -32 -52.5 -50.5q-32.5 -18.5 -82.5 -18.5q-99 0 -147 68q-48 68 -48 196q0 130 51.5 197q51.5 67 145.5 67q56 0 88 -21q32 -21 50 -47q19 26 50.5 47q31.5 21 85.5 21q32 0 62.5 -9.5q30.5 -9.5 54 -32q23.5 -22.5 37.5 -60.5q14 -38 14 -94q0 -23 -2.5 -47.5q-2.5 -24.5 -7.5 -53.5l-242 0q2 -64 25.5 -97.5q23.5 -33.5 74.5 -33.5q34 0 60.5 12q26.5 12 40.5 24l39 -83q-25 -23 -69.5 -38q-44.5 -15 -92.5 -15q-45 0 -80 18.5q-35 18.5 -55 50.5zt0 0zM494 414q-40 0 -58 -33.5q-18 -33.5 -21 -84.5l138 0q4 54 -10.5 86t-48.5 32z" />
-<glyph unicode="&#340;" horiz-adv-x="503" d="M45 693q41 9 88 13q47 4 81 4q43 0 84 -8.5q41 -8.5 72.5 -31q31.5 -22.5 51 -61q19.5 -38.5 19.5 -97.5q0 -85 -31.5 -138.5q-31.5 -53.5 -86.5 -73.5l40 -32l129 -268h-145l-122 276l-54 13v-289h-126zM171 375h43q47 0 71 28.5q24 28.5 24 88.5q0 45 -20 73.5q-20 28.5 -63 28.5q-16 0 -31 -1q-15 -1 -24 -4zM237 870h143v-30l-132 -88l-93 0z" />
-<glyph unicode="&#341;" horiz-adv-x="293" d="M279 382q-24 9 -44 9q-27 0 -46.5 -15q-19.5 -15 -26.5 -42l0 -334h-119v500h91l14 -60h4q13 33 37.5 51.5q24.5 18.5 56.5 18.5q24 0 47 -10zM146 720h119v-30l-94 -124l-67 0z" />
-<glyph unicode="&#342;" horiz-adv-x="503" d="M45 693q41 9 88 13q47 4 81 4q43 0 84 -8.5q41 -8.5 72.5 -31q31.5 -22.5 51 -61q19.5 -38.5 19.5 -97.5q0 -85 -31.5 -138.5q-31.5 -53.5 -86.5 -73.5l40 -32l129 -268h-145l-122 276l-54 13v-289h-126zM171 375h43q47 0 71 28.5q24 28.5 24 88.5q0 45 -20 73.5q-20 28.5 -63 28.5q-16 0 -31 -1q-15 -1 -24 -4zM192 -106q0 29 18 46.5q18 17.5 44 17.5q31 0 50.5 -22q19.5 -22 19.5 -67q0 -33 -10 -58q-10 -25 -24.5 -42q-14.5 -17 -30 -27.5q-15.5 -10.5 -27.5 -14.5l-33 46q13 8 25 23.5q12 15.5 14 37.5q-15 1 -30.5 15t-15.5 45z" />
-<glyph unicode="&#343;" horiz-adv-x="293" d="M279 382q-24 9 -44 9q-27 0 -46.5 -15q-19.5 -15 -26.5 -42l0 -334h-119v500h91l14 -60h4q13 33 37.5 51.5q24.5 18.5 56.5 18.5q24 0 47 -10zM60 -106q0 29 18 46.5q18 17.5 44 17.5q31 0 50.5 -22q19.5 -22 19.5 -67q0 -33 -10 -58q-10 -25 -24.5 -42q-14.5 -17 -30 -27.5q-15.5 -10.5 -27.5 -14.5l-33 46q13 8 25 23.5q12 15.5 14 37.5q-15 1 -30.5 15t-15.5 45z" />
-<glyph unicode="&#344;" horiz-adv-x="503" d="M46 693q41 9 88 13q47 4 81 4q43 0 84 -8.5q41 -8.5 72.5 -31q31.5 -22.5 51 -61q19.5 -38.5 19.5 -97.5q0 -85 -31.5 -138.5q-31.5 -53.5 -86.5 -73.5l40 -32l129 -268h-145l-122 276l-54 13v-289h-126zM172 375h43q47 0 71 28.5q24 28.5 24 88.5q0 45 -20 73.5q-20 28.5 -63 28.5q-16 0 -31 -1q-15 -1 -24 -4zM258 737h-87l-104 94v39h91l42 -45l17 -30l17 29l45 46h88l0 -40z" />
-<glyph unicode="&#345;" horiz-adv-x="293" d="M279 382q-24 9 -44 9q-27 0 -46.5 -15q-19.5 -15 -26.5 -42l0 -334h-119v500h91l14 -60h4q13 33 37.5 51.5q24.5 18.5 56.5 18.5q24 0 47 -10zM202 550h-88l-95 182h98l32 -66l13 -49l13 49l37 66l91 0z" />
-<glyph unicode="&#346;" horiz-adv-x="439" d="M290 180q0 32 -19 54.5q-19 22.5 -47.5 42.5q-28.5 20 -62 41q-33.5 21 -62 49q-28.5 28 -47.5 66q-19 38 -19 93q0 51 15.5 86.5q15.5 35.5 42.5 58q27 22.5 64 33q37 10.5 79 10.5q51 0 95 -10q44 -10 73 -27l-39 -111q-17 12 -50.5 22q-33.5 10 -72.5 10q-39 0 -60 -16q-21 -16 -21 -47q0 -28 19 -49.5q19 -21.5 47.5 -41.5q28.5 -20 62 -41.5q33.5 -21.5 62 -50q28.5 -28.5 47.5 -67q19 -38.5 19 -91.5q0 -53 -15.5 -92q-15.5 -39 -44 -64.5q-28.5 -25.5 -68.5 -38.5q-40 -13 -89 -13q-62 0 -108.5 12q-46.5 12 -71.5 27l41 113q20 -12 55 -24q35 -12 75 -12q100 0 100 78zt0 0zM248 870h143v-30l-132 -88l-93 0z" />
-<glyph unicode="&#347;" horiz-adv-x="350" d="M211 133q0 21 -13.5 35.5q-13.5 14.5 -34.5 27q-21 12.5 -44.5 25.5q-23.5 13 -44.5 32q-21 19 -34.5 46q-13.5 27 -13.5 68q0 70 38 108q38 38 112 38q44 0 83 -9.5q39 -9.5 62 -23.5l-28 -92q-19 8 -46 15.5q-27 7.5 -53 7.5q-49 0 -49 -41q0 -19 13.5 -31.5q13.5 -12.5 34.5 -24.5q21 -12 44.5 -25q23.5 -13 44.5 -32.5q21 -19.5 34.5 -47.5q13.5 -28 13.5 -69q0 -69 -42 -111q-42 -42 -125 -42q-41 0 -80.5 10q-39.5 10 -63.5 26l33 96q21 -12 48.5 -21q27.5 -9 57.5 -9q23 0 38 10.5q15 10.5 15 33.5zt0 0zM174 720h119v-30l-94 -124l-67 0z" />
-<glyph unicode="&#348;" horiz-adv-x="439" d="M290 180q0 32 -19 54.5q-19 22.5 -47.5 42.5q-28.5 20 -62 41q-33.5 21 -62 49q-28.5 28 -47.5 66q-19 38 -19 93q0 51 15.5 86.5q15.5 35.5 42.5 58q27 22.5 64 33q37 10.5 79 10.5q51 0 95 -10q44 -10 73 -27l-39 -111q-17 12 -50.5 22q-33.5 10 -72.5 10q-39 0 -60 -16q-21 -16 -21 -47q0 -28 19 -49.5q19 -21.5 47.5 -41.5q28.5 -20 62 -41.5q33.5 -21.5 62 -50q28.5 -28.5 47.5 -67q19 -38.5 19 -91.5q0 -53 -15.5 -92q-15.5 -39 -44 -64.5q-28.5 -25.5 -68.5 -38.5q-40 -13 -89 -13q-62 0 -108.5 12q-46.5 12 -71.5 27l41 113q20 -12 55 -24q35 -12 75 -12q100 0 100 78zt0 0zM193 870h87l104 -93v-39h-85l-47 41l-17 34l-18 -33l-50 -42h-83l0 40z" />
-<glyph unicode="&#349;" horiz-adv-x="350" d="M211 133q0 21 -13.5 35.5q-13.5 14.5 -34.5 27q-21 12.5 -44.5 25.5q-23.5 13 -44.5 32q-21 19 -34.5 46q-13.5 27 -13.5 68q0 70 38 108q38 38 112 38q44 0 83 -9.5q39 -9.5 62 -23.5l-28 -92q-19 8 -46 15.5q-27 7.5 -53 7.5q-49 0 -49 -41q0 -19 13.5 -31.5q13.5 -12.5 34.5 -24.5q21 -12 44.5 -25q23.5 -13 44.5 -32.5q21 -19.5 34.5 -47.5q13.5 -28 13.5 -69q0 -69 -42 -111q-42 -42 -125 -42q-41 0 -80.5 10q-39.5 10 -63.5 26l33 96q21 -12 48.5 -21q27.5 -9 57.5 -9q23 0 38 10.5q15 10.5 15 33.5zt0 0zM138 732h85l91 -182h-93l-32 66l-13 49l-13 -49l-37 -66l-89 0z" />
-<glyph unicode="&#350;" horiz-adv-x="439" d="M290 180q0 32 -19 54.5q-19 22.5 -47.5 42.5q-28.5 20 -62 41q-33.5 21 -62 49q-28.5 28 -47.5 66q-19 38 -19 93q0 51 15.5 86.5q15.5 35.5 42.5 58q27 22.5 64 33q37 10.5 79 10.5q51 0 95 -10q44 -10 73 -27l-39 -111q-17 12 -50.5 22q-33.5 10 -72.5 10q-39 0 -60 -16q-21 -16 -21 -47q0 -28 19 -49.5q19 -21.5 47.5 -41.5q28.5 -20 62 -41.5q33.5 -21.5 62 -50q28.5 -28.5 47.5 -67q19 -38.5 19 -91.5q0 -92 -45 -142.5q-45 -50.5 -122 -61.5l-15 -33q34 -4 54 -21.5q20 -17.5 20 -53.5q0 -23 -10.5 -40q-10.5 -17 -28.5 -28.5q-18 -11.5 -42 -17.5q-24 -6 -50 -6q-27 0 -54 6l7 48q42 -4 55.5 5.5q13.5 9.5 13.5 23.5q0 28 -70 32l42 82q-52 2 -91 13q-39 11 -61 25l41 114q20 -12 55 -24q35 -12 75 -12q100 0 100 77z" />
-<glyph unicode="&#351;" horiz-adv-x="350" d="M52 119q21 -12 48.5 -21q27.5 -9 57.5 -9q23 0 38 10.5q15 10.5 15 33.5q0 21 -13.5 35.5q-13.5 14.5 -34.5 27q-21 12.5 -44.5 25.5q-23.5 13 -44.5 32q-21 19 -34.5 46q-13.5 27 -13.5 68q0 70 38 108q38 38 112 38q44 0 83 -9.5q39 -9.5 62 -23.5l-28 -92q-19 8 -46 15.5q-27 7.5 -53 7.5q-49 0 -49 -41q0 -19 13.5 -31.5q13.5 -12.5 34.5 -24.5q21 -12 44.5 -25q23.5 -13 44.5 -32.5q21 -19.5 34.5 -47.5q13.5 -28 13.5 -69q0 -59 -30 -98q-30 -39 -89 -50l-16 -35q34 -4 54 -21.5q20 -17.5 20 -53.5q0 -23 -10.5 -40q-10.5 -17 -28.5 -28.5q-18 -11.5 -42 -17.5q-24 -6 -50 -6q-27 0 -54 6l7 48q42 -4 55.5 5.5q13.5 9.5 13.5 23.5q0 28 -70 32l43 84q-34 3 -64 12q-30 9 -50 22z" />
-<glyph unicode="&#352;" horiz-adv-x="439" d="M290 180q0 32 -19 54.5q-19 22.5 -47.5 42.5q-28.5 20 -62 41q-33.5 21 -62 49q-28.5 28 -47.5 66q-19 38 -19 93q0 51 15.5 86.5q15.5 35.5 42.5 58q27 22.5 64 33q37 10.5 79 10.5q51 0 95 -10q44 -10 73 -27l-39 -111q-17 12 -50.5 22q-33.5 10 -72.5 10q-39 0 -60 -16q-21 -16 -21 -47q0 -28 19 -49.5q19 -21.5 47.5 -41.5q28.5 -20 62 -41.5q33.5 -21.5 62 -50q28.5 -28.5 47.5 -67q19 -38.5 19 -91.5q0 -53 -15.5 -92q-15.5 -39 -44 -64.5q-28.5 -25.5 -68.5 -38.5q-40 -13 -89 -13q-62 0 -108.5 12q-46.5 12 -71.5 27l41 113q20 -12 55 -24q35 -12 75 -12q100 0 100 78zt0 0zM275 737h-87l-104 94v39h91l42 -45l17 -30l17 29l45 46h88l0 -40z" />
-<glyph unicode="&#353;" horiz-adv-x="350" d="M211 133q0 21 -13.5 35.5q-13.5 14.5 -34.5 27q-21 12.5 -44.5 25.5q-23.5 13 -44.5 32q-21 19 -34.5 46q-13.5 27 -13.5 68q0 70 38 108q38 38 112 38q44 0 83 -9.5q39 -9.5 62 -23.5l-28 -92q-19 8 -46 15.5q-27 7.5 -53 7.5q-49 0 -49 -41q0 -19 13.5 -31.5q13.5 -12.5 34.5 -24.5q21 -12 44.5 -25q23.5 -13 44.5 -32.5q21 -19.5 34.5 -47.5q13.5 -28 13.5 -69q0 -69 -42 -111q-42 -42 -125 -42q-41 0 -80.5 10q-39.5 10 -63.5 26l33 96q21 -12 48.5 -21q27.5 -9 57.5 -9q23 0 38 10.5q15 10.5 15 33.5zt0 0zM217 550h-88l-95 182h98l32 -66l13 -49l13 49l37 66l91 0z" />
-<glyph unicode="&#354;" horiz-adv-x="474" d="M274 0l-20 -43q34 -4 54 -21.5q20 -17.5 20 -53.5q0 -23 -10.5 -40q-10.5 -17 -28.5 -28.5q-18 -11.5 -42 -17.5q-24 -6 -50 -6q-27 0 -54 6l7 48q42 -4 55.5 5.5q13.5 9.5 13.5 23.5q0 28 -70 32l49 95h-24v584h-166v116h458v-116h-166l0 -584z" />
-<glyph unicode="&#355;" horiz-adv-x="291" d="M195 -43q34 -4 54 -21.5q20 -17.5 20 -53.5q0 -23 -10.5 -40q-10.5 -17 -28.5 -28.5q-18 -11.5 -42 -17.5q-24 -6 -50 -6q-27 0 -54 6l7 48q42 -4 55.5 5.5q13.5 9.5 13.5 23.5q0 28 -70 32l45 88q-30 7 -48 28q-28 33 -28 111v262h-55v106h55v94l119 37v-131h97v-106h-97v-218q0 -43 8.5 -61q8.5 -18 30.5 -18q15 0 27 3q12 3 26 9l15 -95q-22 -11 -51 -18q-12 -3 -24 -5z" />
-<glyph unicode="&#356;" horiz-adv-x="474" d="M466 584h-166v-584h-126v584h-166v116h458zM277 737h-87l-104 94v39h91l42 -45l17 -30l17 29l45 46h88l0 -40z" />
-<glyph unicode="&#357;" horiz-adv-x="291" d="M4 500h55v94l119 37v-131h97v-106h-97v-218q0 -43 8.5 -61q8.5 -18 30.5 -18q15 0 27 3q12 3 26 9l15 -95q-22 -11 -51 -18.5q-29 -7.5 -61 -7.5q-57 0 -85.5 33q-28.5 33 -28.5 111v262h-55zM333 723q-2 -29 -10.5 -60.5q-8.5 -31.5 -20.5 -59.5q-12 -28 -25.5 -50q-13.5 -22 -23.5 -32l-53 26q14 36 21.5 83q7.5 47 7.5 93z" />
-<glyph unicode="&#362;" horiz-adv-x="515" d="M354 700h119v-454q0 -136 -55.5 -197q-55.5 -61 -153.5 -61q-115 0 -168.5 59.5q-53.5 59.5 -53.5 181.5v471h126v-449q0 -82 22 -114.5q22 -32.5 73 -32.5q49 0 70 34.5q21 34.5 21 112.5zM115 856h289v-89l-289 0z" />
-<glyph unicode="&#363;" horiz-adv-x="446" d="M158 500v-299q0 -59 11 -82q11 -23 40 -23q28 0 47 20.5q19 20.5 27 49.5l0 334h119v-348q0 -41 3 -80.5q3 -39.5 11 -71.5l-90 0l-21 68h-3q-19 -35 -51.5 -58q-32.5 -23 -80.5 -23q-31 0 -55 8.5q-24 8.5 -41 29.5q-17 21 -26 57.5q-9 36.5 -9 92.5v325zM86 658h272v-91l-272 0z" />
-<glyph unicode="&#364;" horiz-adv-x="515" d="M354 700h119v-454q0 -136 -55.5 -197q-55.5 -61 -153.5 -61q-115 0 -168.5 59.5q-53.5 59.5 -53.5 181.5v471h126v-449q0 -82 22 -114.5q22 -32.5 73 -32.5q49 0 70 34.5q21 34.5 21 112.5zM142 875q17 -26 49 -40.5q32 -14.5 70 -14.5q40 0 68.5 15q28.5 15 45.5 40l44 -31q-11 -30 -28 -51.5q-17 -21.5 -38.5 -35.5q-21.5 -14 -45 -20.5q-23.5 -6.5 -47.5 -6.5q-22 0 -45.5 6q-23.5 6 -46 19q-22.5 13 -41.5 34q-19 21 -31 51z" />
-<glyph unicode="&#365;" horiz-adv-x="446" d="M158 500v-299q0 -59 11 -82q11 -23 40 -23q28 0 47 20.5q19 20.5 27 49.5l0 334h119v-348q0 -41 3 -80.5q3 -39.5 11 -71.5l-90 0l-21 68h-3q-19 -35 -51.5 -58q-32.5 -23 -80.5 -23q-31 0 -55 8.5q-24 8.5 -41 29.5q-17 21 -26 57.5q-9 36.5 -9 92.5v325zM134 719q14 -30 39 -45q25 -15 54 -15q29 0 52 15q23 15 34 45l55 -26q-2 -26 -13.5 -49q-11.5 -23 -30 -41q-18.5 -18 -43.5 -28.5q-25 -10.5 -55 -10.5q-57 0 -97 33q-40 33 -51 92z" />
-<glyph unicode="&#366;" horiz-adv-x="515" d="M354 700h119v-454q0 -136 -55.5 -197q-55.5 -61 -153.5 -61q-115 0 -168.5 59.5q-53.5 59.5 -53.5 181.5v471h126v-449q0 -82 22 -114.5q22 -32.5 73 -32.5q49 0 70 34.5q21 34.5 21 112.5zM151 772q0 18 5 34.5q5 16.5 18 29q13 12.5 34 19.5q21 7 54 7q61 0 86.5 -24q25.5 -24 25.5 -66q0 -18 -5.5 -34q-5.5 -16 -18.5 -27.5q-13 -11.5 -34.5 -18.5q-21.5 -7 -53.5 -7q-62 0 -86.5 24.5q-24.5 24.5 -24.5 62.5zt0 0zM226 772q0 -31 36 -31q21 0 29 7.5q8 7.5 8 23.5q0 17 -8.5 25.5q-8.5 8.5 -28.5 8.5q-36 0 -36 -34z" />
-<glyph unicode="&#367;" horiz-adv-x="446" d="M158 500v-299q0 -59 11 -82q11 -23 40 -23q28 0 47 20.5q19 20.5 27 49.5l0 334h119v-348q0 -41 3 -80.5q3 -39.5 11 -71.5l-90 0l-21 68h-3q-19 -35 -51.5 -58q-32.5 -23 -80.5 -23q-31 0 -55 8.5q-24 8.5 -41 29.5q-17 21 -26 57.5q-9 36.5 -9 92.5v325zM122 647q0 45 24.5 70q24.5 25 72.5 25q46 0 72 -23.5q26 -23.5 26 -71.5q0 -42 -25.5 -67.5q-25.5 -25.5 -72.5 -25.5q-47 0 -72 25q-25 25 -25 68zt0 0zM189 647q0 -17 8.5 -25.5q8.5 -8.5 21.5 -8.5q31 0 31 34q0 19 -8.5 27.5q-8.5 8.5 -22.5 8.5q-13 0 -21.5 -8t-8.5 -28z" />
-<glyph unicode="&#368;" horiz-adv-x="515" d="M354 700h119v-454q0 -136 -55.5 -197q-55.5 -61 -153.5 -61q-115 0 -168.5 59.5q-53.5 59.5 -53.5 181.5v471h126v-449q0 -82 22 -114.5q22 -32.5 73 -32.5q49 0 70 34.5q21 34.5 21 112.5zM177 850h120v-16l-82 -93h-86zM349 850h125v-16l-118 -93l-86 0z" />
-<glyph unicode="&#369;" horiz-adv-x="446" d="M158 500v-299q0 -59 11 -82q11 -23 40 -23q28 0 47 20.5q19 20.5 27 49.5l0 334h119v-348q0 -41 3 -80.5q3 -39.5 11 -71.5l-90 0l-21 68h-3q-19 -35 -51.5 -58q-32.5 -23 -80.5 -23q-31 0 -55 8.5q-24 8.5 -41 29.5q-17 21 -26 57.5q-9 36.5 -9 92.5v325zM135 700h108v-16l-64 -113h-73zM289 700h114v-16l-99 -113l-75 0z" />
-<glyph unicode="&#370;" horiz-adv-x="515" d="M354 700h119v-454q0 -136 -56 -197q-23 -26 -55 -41q-42 -32 -42 -77q0 -12 5 -23q5 -11 13.5 -17q8.5 -6 21 -6.5q12.5 -0.5 28.5 7.5l18 -59q-13 -11 -41 -23q-28 -12 -60 -12q-50 0 -75.5 27.5q-25.5 27.5 -25.5 67.5q0 41 26 74q10 11 21 21q-105 3 -156 59q-53 60 -53 182v471h126v-449q0 -82 22 -114.5q22 -32.5 73 -32.5q49 0 70 34.5q21 34.5 21 112.5z" />
-<glyph unicode="&#371;" horiz-adv-x="446" d="M158 500v-299q0 -59 11 -82q11 -23 40 -23q28 0 47 20.5q19 20.5 27 49.5l0 334h119v-348q0 -41 3 -80.5q3 -39.5 11 -71.5l-16 0q-50 -21 -50 -74q0 -13 5 -23q5 -10 14.5 -15q9.5 -5 23 -3.5q13.5 1.5 29.5 10.5l18 -62q-13 -12 -41 -24q-28 -12 -60 -12q-49 0 -74.5 25.5q-25.5 25.5 -25.5 66.5q0 41 23 70q23 29 62 46l-19 63h-3q-19 -35 -51.5 -58q-32.5 -23 -80.5 -23q-31 0 -55 8.5q-24 8.5 -41 29.5q-17 21 -26 57.5q-9 36.5 -9 92.5l0 325z" />
-<glyph unicode="&#376;" horiz-adv-x="495" d="M184 260l-188 440h150l97 -265l10 -76h5l11 78l95 263h135l-189 -439v-261h-126zM93 798q0 26 15.5 42q15.5 16 53.5 16q35 0 50.5 -16q15.5 -16 15.5 -42q0 -26 -15.5 -41.5q-15.5 -15.5 -50.5 -15.5q-38 0 -53.5 15.5q-15.5 15.5 -15.5 41.5zt0 0zM275 798q0 26 15.5 42q15.5 16 51.5 16q37 0 52.5 -16q15.5 -16 15.5 -42q0 -26 -15.5 -41.5q-15.5 -15.5 -52.5 -15.5q-36 0 -51.5 15.5t-15.5 41.5z" />
-<glyph unicode="&#377;" horiz-adv-x="445" d="M21 116l234 427l42 41h-276v116h403v-116l-235 -430l-41 -38h276v-116h-403zM242 870h143v-30l-132 -88l-93 0z" />
-<glyph unicode="&#378;" horiz-adv-x="381" d="M24 106l162 245l44 43h-206v106h331v-106l-160 -249l-43 -39h203v-106h-331zM185 720h119v-30l-94 -124l-67 0z" />
-<glyph unicode="&#379;" horiz-adv-x="445" d="M21 116l234 427l42 41h-276v116h403v-116l-235 -430l-41 -38h276v-116h-403zM148 799q0 25 19.5 43q19.5 18 57.5 18q39 0 59 -18q20 -18 20 -43q0 -26 -20 -44q-20 -18 -59 -18q-38 0 -57.5 18t-19.5 44z" />
-<glyph unicode="&#380;" horiz-adv-x="381" d="M24 106l162 245l44 43h-206v106h331v-106l-160 -249l-43 -39h203v-106h-331zM118 641q0 30 19 49.5q19 19.5 54 19.5q35 0 56 -19q21 -19 21 -50q0 -31 -21 -49q-21 -18 -56 -18q-35 0 -54 18.5t-19 48.5z" />
-<glyph unicode="&#381;" horiz-adv-x="445" d="M21 116l234 427l42 41h-276v116h403v-116l-235 -430l-41 -38h276v-116h-403zM261 737h-87l-104 94v39h91l42 -45l17 -30l17 29l45 46h88l0 -40z" />
-<glyph unicode="&#382;" horiz-adv-x="381" d="M24 106l162 245l44 43h-206v106h331v-106l-160 -249l-43 -39h203v-106h-331zM232 550h-88l-95 182h98l32 -66l13 -49l13 49l37 66l91 0z" />
-<glyph unicode="&#383;" horiz-adv-x="219" d="M9 500h54v28q0 95 35 137.5q35 42.5 97 42.5q40 0 67 -6q27 -6 50 -17l-24 -95q-18 7 -31 9.5q-13 2.5 -29 2.5q-30 0 -38 -23q-8 -23 -8 -77v-502h-119v394l-54 0z" />
-<glyph unicode="&#402;" horiz-adv-x="478" d="M288 394l-58 -428q-5 -37 -14.5 -68.5q-9.5 -31.5 -26 -55q-16.5 -23.5 -42.5 -37q-26 -13.5 -64 -13.5q-14 0 -32.5 1.5q-18.5 1.5 -37.5 4.5q-19 3 -36 7.5q-17 4.5 -27 9.5l22 100q35 -17 76 -17q56 0 69 110l48 386h-62v106h79l9 67q5 37 13.5 64.5q8.5 27.5 24.5 46q16 18.5 40.5 27.5q24.5 9 61.5 9q13 0 31 -2q18 -2 37 -5.5q19 -3.5 36.5 -9q17.5 -5.5 29.5 -11.5l-29 -94q-36 16 -76 16q-25 0 -36 -17.5q-11 -17.5 -16 -57.5l-4 -33h99l0 -106z" />
-<glyph unicode="&#500;" horiz-adv-x="502" d="M257 362h216v-310q-37 -35 -86.5 -50.5q-49.5 -15.5 -98.5 -15.5q-59 0 -107 21q-48 21 -81.5 65.5q-33.5 44.5 -52 113q-18.5 68.5 -18.5 164.5q0 100 22 169q22 69 58.5 112.5q36.5 43.5 85 63q48.5 19.5 102.5 19.5q48 0 87.5 -8.5q39.5 -8.5 65.5 -19.5v-109q-46 9 -72.5 15q-26.5 6 -64.5 6q-35 0 -63.5 -14q-28.5 -14 -48 -44q-19.5 -30 -30 -77.5q-10.5 -47.5 -10.5 -113.5q0 -127 38.5 -187q38.5 -60 101.5 -60q20 0 38.5 6q18.5 6 32.5 19l0 143l-115 16zM318 870h143v-30l-132 -88l-93 0z" />
-<glyph unicode="&#501;" horiz-adv-x="443" d="M401 0q0 -109 -50 -160.5q-50 -51.5 -139 -51.5q-62 0 -97 9.5q-35 9.5 -54 20.5l25 101q22 -9 47.5 -17q25.5 -8 60.5 -8q51 0 70.5 27.5q19.5 27.5 19.5 83.5v27h-3q-14 -20 -37.5 -30q-23.5 -10 -60.5 -10q-79 0 -118.5 59.5q-39.5 59.5 -39.5 188.5q0 139 54.5 205q54.5 66 155.5 66q54 0 97 -8.5q43 -8.5 69 -20.5zM216 94q27 0 42.5 13q15.5 13 23.5 37l0 250q-11 5 -24.5 8q-13.5 3 -31.5 3q-37 0 -57.5 -36q-20.5 -36 -20.5 -124q0 -151 68 -151zt0 0zM234 720h119v-30l-94 -124l-67 0z" />
-<glyph unicode="&#536;" horiz-adv-x="439" d="M290 180q0 32 -19 54.5q-19 22.5 -47.5 42.5q-28.5 20 -62 41q-33.5 21 -62 49q-28.5 28 -47.5 66q-19 38 -19 93q0 51 15.5 86.5q15.5 35.5 42.5 58q27 22.5 64 33q37 10.5 79 10.5q51 0 95 -10q44 -10 73 -27l-39 -111q-17 12 -50.5 22q-33.5 10 -72.5 10q-39 0 -60 -16q-21 -16 -21 -47q0 -28 19 -49.5q19 -21.5 47.5 -41.5q28.5 -20 62 -41.5q33.5 -21.5 62 -50q28.5 -28.5 47.5 -67q19 -38.5 19 -91.5q0 -53 -15.5 -92q-15.5 -39 -44 -64.5q-28.5 -25.5 -68.5 -38.5q-40 -13 -89 -13q-62 0 -108.5 12q-46.5 12 -71.5 27l41 113q20 -12 55 -24q35 -12 75 -12q100 0 100 78zt0 0zM149 -106q0 29 18 46.5q18 17.5 44 17.5q31 0 50.5 -22q19.5 -22 19.5 -67q0 -33 -10 -58q-10 -25 -24.5 -42q-14.5 -17 -30 -27.5q-15.5 -10.5 -27.5 -14.5l-33 46q13 8 25 23.5q12 15.5 14 37.5q-15 1 -30.5 15t-15.5 45z" />
-<glyph unicode="&#537;" horiz-adv-x="350" d="M211 133q0 21 -13.5 35.5q-13.5 14.5 -34.5 27q-21 12.5 -44.5 25.5q-23.5 13 -44.5 32q-21 19 -34.5 46q-13.5 27 -13.5 68q0 70 38 108q38 38 112 38q44 0 83 -9.5q39 -9.5 62 -23.5l-28 -92q-19 8 -46 15.5q-27 7.5 -53 7.5q-49 0 -49 -41q0 -19 13.5 -31.5q13.5 -12.5 34.5 -24.5q21 -12 44.5 -25q23.5 -13 44.5 -32.5q21 -19.5 34.5 -47.5q13.5 -28 13.5 -69q0 -69 -42 -111q-42 -42 -125 -42q-41 0 -80.5 10q-39.5 10 -63.5 26l33 96q21 -12 48.5 -21q27.5 -9 57.5 -9q23 0 38 10.5q15 10.5 15 33.5zt0 0zM109 -106q0 29 18 46.5q18 17.5 44 17.5q31 0 50.5 -22q19.5 -22 19.5 -67q0 -33 -10 -58q-10 -25 -24.5 -42q-14.5 -17 -30 -27.5q-15.5 -10.5 -27.5 -14.5l-33 46q13 8 25 23.5q12 15.5 14 37.5q-15 1 -30.5 15t-15.5 45z" />
-<glyph unicode="&#538;" horiz-adv-x="473" d="M466 584h-166v-584h-126v584h-166v116h458zM169 -106q0 29 18 46.5q18 17.5 44 17.5q31 0 50.5 -22q19.5 -22 19.5 -67q0 -33 -10 -58q-10 -25 -24.5 -42q-14.5 -17 -30 -27.5q-15.5 -10.5 -27.5 -14.5l-33 46q13 8 25 23.5q12 15.5 14 37.5q-15 1 -30.5 15t-15.5 45z" />
-<glyph unicode="&#539;" horiz-adv-x="291" d="M4 500h55v94l119 37v-131h97v-106h-97v-218q0 -43 8.5 -61q8.5 -18 30.5 -18q15 0 27 3q12 3 26 9l15 -95q-22 -11 -51 -18.5q-29 -7.5 -61 -7.5q-57 0 -85.5 33q-28.5 33 -28.5 111v262h-55zM89 -106q0 29 18 46.5q18 17.5 44 17.5q31 0 50.5 -22q19.5 -22 19.5 -67q0 -33 -10 -58q-10 -25 -24.5 -42q-14.5 -17 -30 -27.5q-15.5 -10.5 -27.5 -14.5l-33 46q13 8 25 23.5q12 15.5 14 37.5q-15 1 -30.5 15t-15.5 45z" />
-<glyph unicode="&#567;" horiz-adv-x="225" d="M54 500h119v-521q0 -91 -31.5 -139q-31.5 -48 -100.5 -48q-28 0 -57 7l0 106q43 -4 56.5 24.5q13.5 28.5 13.5 84.5z" />
-<glyph unicode="&#700;" horiz-adv-x="188" d="M29 644q0 29 17.5 47q17.5 18 43.5 18q32 0 50.5 -22.5q18.5 -22.5 18.5 -62.5q0 -39 -11 -66q-11 -27 -26.5 -45.5q-15.5 -18.5 -32.5 -29.5q-17 -11 -29 -16l-30 50q17 8 30 24q13 16 15 39q-17 1 -31.5 16.5t-14.5 47.5z" />
-<glyph unicode="&#710;" horiz-adv-x="397" d="M161 732h85l91 -182h-93l-32 66l-13 49l-13 -49l-37 -66l-89 0z" />
-<glyph unicode="&#711;" horiz-adv-x="404" d="M243 550h-88l-95 182h98l32 -66l13 -49l13 49l37 66l91 0z" />
-<glyph unicode="&#728;" horiz-adv-x="410" d="M116 719q14 -30 39 -45q25 -15 54 -15q29 0 52 15q23 15 34 45l55 -26q-2 -26 -13.5 -49q-11.5 -23 -30 -41q-18.5 -18 -43.5 -28.5q-25 -10.5 -55 -10.5q-57 0 -97 33q-40 33 -51 92z" />
-<glyph unicode="&#729;" horiz-adv-x="270" d="M60 641q0 30 19 49.5q19 19.5 54 19.5q35 0 56 -19q21 -19 21 -50q0 -31 -21 -49q-21 -18 -56 -18q-35 0 -54 18.5t-19 48.5z" />
-<glyph unicode="&#730;" horiz-adv-x="315" d="M60 647q0 45 24.5 70q24.5 25 72.5 25q46 0 72 -23.5q26 -23.5 26 -71.5q0 -42 -25.5 -67.5q-25.5 -25.5 -72.5 -25.5q-47 0 -72 25q-25 25 -25 68zt0 0zM127 647q0 -17 8.5 -25.5q8.5 -8.5 21.5 -8.5q31 0 31 34q0 19 -8.5 27.5q-8.5 8.5 -22.5 8.5q-13 0 -21.5 -8t-8.5 -28z" />
-<glyph unicode="&#731;" horiz-adv-x="321" d="M238 10q-62 -22 -62 -79q0 -25 17.5 -37.5q17.5 -12.5 49.5 2.5l18 -58q-6 -6 -16 -12q-10 -6 -23 -11q-13 -5 -28.5 -8.5q-15.5 -3.5 -30.5 -3.5q-51 0 -77 25q-26 25 -26 65q0 42 25 71q25 29 64 46z" />
-<glyph unicode="&#732;" horiz-adv-x="415" d="M60 656q29 37 54 50.5q25 13.5 46 13.5q18 0 33.5 -6.5q15.5 -6.5 30.5 -15q15 -8.5 30 -15q15 -6.5 30 -6.5q11 0 23 5q12 5 26 18l22 -61q-27 -32 -50.5 -44q-23.5 -12 -43.5 -12q-18 0 -33.5 6q-15.5 6 -30.5 13.5q-15 7.5 -30 14q-15 6.5 -30 6.5q-13 0 -26 -5.5q-13 -5.5 -27 -19.5z" />
-<glyph unicode="&#733;" horiz-adv-x="417" d="M89 700h108v-16l-64 -113h-73zM243 700h114v-16l-99 -113l-75 0z" />
-<glyph unicode="&#769;" horiz-adv-x="2" d="M-305 720h119v-30l-94 -124l-67 0z" />
-<glyph unicode="&#916;" horiz-adv-x="486" d="M10 0v71l195 634h76l197 -634v-71zM140 108h207l-86 298l-17 112h-5l-18 -113z" />
-<glyph unicode="&#937;" horiz-adv-x="633" d="M43 106h84l70 -12v23l-39 11q-47 28 -80.5 96.5q-33.5 68.5 -33.5 172.5q0 77 19.5 136.5q19.5 59.5 55.5 99.5q36 40 86 60.5q50 20.5 111 20.5q64 0 114.5 -22q50.5 -22 86 -63.5q35.5 -41.5 54 -101q18.5 -59.5 18.5 -134.5q0 -52 -9 -94.5q-9 -42.5 -24.5 -75.5q-15.5 -33 -36 -56.5q-20.5 -23.5 -42.5 -37.5l-41 -12v-23l70 12h84v-106h-250v188q20 5 40.5 20q20.5 15 37.5 40.5q17 25.5 28 61q11 35.5 11 82.5q0 41 -7.5 79q-7.5 38 -24 67q-16.5 29 -43.5 46q-27 17 -66 17q-67 0 -103.5 -51.5q-36.5 -51.5 -36.5 -160.5q0 -45 10 -80.5q10 -35.5 26.5 -61q16.5 -25.5 37.5 -40.5q21 -15 42 -19l0 -188l-249 0z" />
-<glyph unicode="&#960;" horiz-adv-x="578" d="M475 152q0 -28 7 -40q7 -12 19 -12q8 0 18 2q10 2 18 4l18 -88q-18 -8 -45 -16q-27 -8 -66 -8q-50 0 -69 30q-19 30 -19 82v288h-104v-394h-119v394h-11q-33 0 -50 -37l-61 59q17 42 50.5 63q33.5 21 78.5 21h403v-106l-68 0z" />
-<glyph unicode="&#1025;" horiz-adv-x="430" d="M45 700h350v-116h-224v-172h203v-116h-203v-180h228v-116h-354zM59 798q0 26 15.5 42q15.5 16 53.5 16q35 0 50.5 -16q15.5 -16 15.5 -42q0 -26 -15.5 -41.5q-15.5 -15.5 -50.5 -15.5q-38 0 -53.5 15.5q-15.5 15.5 -15.5 41.5zt0 0zM241 798q0 26 15.5 42q15.5 16 51.5 16q37 0 52.5 -16q15.5 -16 15.5 -42q0 -26 -15.5 -41.5q-15.5 -15.5 -52.5 -15.5q-36 0 -51.5 15.5t-15.5 41.5z" />
-<glyph unicode="&#1026;" horiz-adv-x="615" d="M299 0h-126v584h-165v116h456v-116h-165v-150q14 7 43 15q29 8 72 8q32 0 63 -10q31 -10 55 -35q24 -25 38.5 -69q14.5 -44 14.5 -111q0 -58 -10.5 -102.5q-10.5 -44.5 -33.5 -75q-23 -30.5 -60.5 -46q-37.5 -15.5 -92.5 -15.5q-41 0 -52 4l0 110q7 -1 18.5 -1.5q11.5 -0.5 23.5 -0.5q38 0 56.5 28.5q18.5 28.5 18.5 91.5q0 36 -6.5 58.5q-6.5 22.5 -17.5 35q-11 12.5 -27.5 17.5q-16.5 5 -35.5 5q-19 0 -38 -7q-19 -7 -29 -13z" />
-<glyph unicode="&#1027;" horiz-adv-x="381" d="M388 584h-217v-584h-126v700h343zM237 870h143v-30l-132 -88l-93 0z" />
-<glyph unicode="&#1028;" horiz-adv-x="475" d="M446 28q-13 -11 -31.5 -19q-18.5 -8 -40 -13q-21.5 -5 -44.5 -7.5q-23 -2.5 -44 -2.5q-54 0 -100.5 18.5q-46.5 18.5 -81.5 61.5q-35 43 -55 113q-20 70 -20 172q0 106 22.5 176q22.5 70 59 111.5q36.5 41.5 83.5 58.5q47 17 95 17q49 0 87.5 -8q38.5 -8 61.5 -18l-25 -111q-19 10 -46.5 15.5q-27.5 5.5 -62.5 5.5q-60 0 -96.5 -45q-36.5 -45 -45.5 -141l223 0v-104h-224q3 -46 14 -84q11 -38 29.5 -65q18.5 -27 45.5 -42q27 -15 63 -15q35 0 61.5 9.5q26.5 9.5 46.5 22.5z" />
-<glyph unicode="&#1029;" horiz-adv-x="439" d="M290 180q0 32 -19 54.5q-19 22.5 -47.5 42.5q-28.5 20 -62 41q-33.5 21 -62 49q-28.5 28 -47.5 66q-19 38 -19 93q0 51 15.5 86.5q15.5 35.5 42.5 58q27 22.5 64 33q37 10.5 79 10.5q51 0 95 -10q44 -10 73 -27l-39 -111q-17 12 -50.5 22q-33.5 10 -72.5 10q-39 0 -60 -16q-21 -16 -21 -47q0 -28 19 -49.5q19 -21.5 47.5 -41.5q28.5 -20 62 -41.5q33.5 -21.5 62 -50q28.5 -28.5 47.5 -67q19 -38.5 19 -91.5q0 -53 -15.5 -92q-15.5 -39 -44 -64.5q-28.5 -25.5 -68.5 -38.5q-40 -13 -89 -13q-62 0 -108.5 12q-46.5 12 -71.5 27l41 113q20 -12 55 -24q35 -12 75 -12q100 0 100 78z" />
-<glyph unicode="&#1030;" horiz-adv-x="238" d="M56 700h126v-700l-126 0z" />
-<glyph unicode="&#1031;" horiz-adv-x="245" d="M8 792q0 64 53 64q53 0 53 -64q0 -62 -53 -62q-53 0 -53 62zt0 0zM132 792q0 64 52 64q53 0 53 -64q0 -62 -53 -62q-52 0 -52 62zt0 0zM59 700h126v-700l-126 0z" />
-<glyph unicode="&#1032;" horiz-adv-x="289" d="M113 700h126v-509q0 -46 -7.5 -83.5q-7.5 -37.5 -24.5 -64q-17 -26.5 -45 -41q-28 -14.5 -70 -14.5q-29 0 -57.5 6q-28.5 6 -51.5 17l29 106q21 -13 49 -13q35 0 43.5 29.5q8.5 29.5 8.5 84.5z" />
-<glyph unicode="&#1033;" horiz-adv-x="775" d="M345 584h-106q-7 -190 -19 -317.5q-12 -127.5 -46 -194.5q-12 -24 -27.5 -39.5q-15.5 -15.5 -31 -24q-15.5 -8.5 -31.5 -12q-16 -3.5 -29 -3.5q-21 0 -37 3.5q-16 3.5 -30 10.5v114q32 -7 50 -0.5q18 6.5 30 32.5q12 22 21 64.5q9 42.5 15.5 109.5q6.5 67 10 159q3.5 92 5.5 214l351 0v-252q6 1 15.5 3q9.5 2 20.5 3q11 1 23 2q12 1 21 1q42 0 79.5 -10q37.5 -10 65.5 -35q28 -25 44.5 -68.5q16.5 -43.5 16.5 -110.5q0 -120 -58 -181.5q-58 -61.5 -183 -61.5q-11 0 -31.5 0.5q-20.5 0.5 -44.5 2q-24 1.5 -49 5q-25 3.5 -46 8.5zM471 112q9 -3 23.5 -4.5q14.5 -1.5 28.5 -1.5q47 0 74.5 27q27.5 27 27.5 94q0 35 -8 57.5q-8 22.5 -21.5 35q-13.5 12.5 -32 17q-18.5 4.5 -40.5 4.5q-11 0 -28.5 -3q-17.5 -3 -23.5 -6z" />
-<glyph unicode="&#1034;" horiz-adv-x="792" d="M171 700v-276h191v276h126v-269q4 1 13 2.5q9 1.5 20.5 2.5q11.5 1 23.5 2q12 1 21 1q42 0 79.5 -8.5q37.5 -8.5 66 -32q28.5 -23.5 45.5 -65.5q17 -42 17 -108q0 -121 -59.5 -178q-59.5 -57 -181.5 -57q-11 0 -31.5 0.5q-20.5 0.5 -45 2q-24.5 1.5 -49.5 4q-25 2.5 -45 6.5l0 305h-191v-308h-126v700zM488 111q8 -2 23 -3.5q15 -1.5 29 -1.5q49 0 75.5 25.5q26.5 25.5 26.5 87.5q0 32 -7 52q-7 20 -20.5 31.5q-13.5 11.5 -32 16q-18.5 4.5 -41.5 4.5q-12 0 -30 -3q-18 -3 -23 -5z" />
-<glyph unicode="&#1035;" horiz-adv-x="631" d="M299 0h-126v584h-165v116h456v-116h-165v-182q21 14 57 27q36 13 86 13q36 0 64.5 -10.5q28.5 -10.5 49 -34q20.5 -23.5 31.5 -60q11 -36.5 11 -88.5v-249h-126v211q0 62 -18 90q-18 28 -60 28q-29 0 -54.5 -9q-25.5 -9 -40.5 -24z" />
-<glyph unicode="&#1036;" horiz-adv-x="519" d="M198 300h-27v-300h-126v700h126v-311l25 12l147 299h142l-160 -295l-47 -37l48 -38l185 -330h-154zM263 870h143v-30l-132 -88l-93 0z" />
-<glyph unicode="&#1038;" horiz-adv-x="475" d="M246 395l15 -93h5l13 96l79 302h130l-156 -484q-18 -57 -34 -98.5q-16 -41.5 -35 -69.5q-19 -28 -42.5 -41.5q-23.5 -13.5 -57.5 -13.5q-27 0 -46.5 5q-19.5 5 -40.5 19l31 106q14 -8 25 -10.5q11 -2.5 23 -3.5q37 0 51 76l-216 515h149zM200 874q6 -61 56 -61q50 0 56 60l102 -15q-8 -65 -49 -94q-41 -29 -110 -29q-35 0 -64 6q-29 6 -51 20q-22 14 -36 37q-14 23 -18 58z" />
-<glyph unicode="&#1039;" horiz-adv-x="524" d="M45 0v700h126v-584h182v584h126v-700h-163l-12 -175h-82l-16 175z" />
-<glyph unicode="&#1040;" horiz-adv-x="501" d="M328 158h-165l-41 -158h-125l203 705h99l204 -705h-132zM190 262h116l-40 163l-16 110h-4l-17 -111z" />
-<glyph unicode="&#1041;" horiz-adv-x="476" d="M45 700h367v-116h-241v-152q15 3 36 6q21 3 41 3q48 0 86 -11.5q38 -11.5 65 -37q27 -25.5 41.5 -66.5q14.5 -41 14.5 -100q0 -118 -59 -177q-59 -59 -175 -59q-14 0 -36 1q-22 1 -47 2.5q-25 1.5 -49.5 4.5q-24.5 3 -43.5 8zM230 102q42 0 67.5 26q25.5 26 25.5 88q0 37 -8 59q-8 22 -21.5 34q-13.5 12 -32 16q-18.5 4 -40.5 4q-11 0 -27.5 -2.5q-16.5 -2.5 -22.5 -4.5l0 -215q9 -2 26 -3.5t33 -1.5z" />
-<glyph unicode="&#1042;" horiz-adv-x="490" d="M445 538q0 -26 -5.5 -51.5q-5.5 -25.5 -17.5 -48q-12 -22.5 -31.5 -39.5q-19.5 -17 -46.5 -26l0 -6q24 -6 45.5 -18q21.5 -12 37.5 -32.5q16 -20.5 25.5 -50q9.5 -29.5 9.5 -69.5q0 -54 -18.5 -93.5q-18.5 -39.5 -50 -64.5q-31.5 -25 -73.5 -37q-42 -12 -89 -12q-14 0 -36 0q-22 0 -47.5 1.5q-25.5 1.5 -52.5 4.5q-27 3 -50 9l0 690q33 6 81.5 10.5q48.5 4.5 96.5 4.5q44 0 84.5 -7q40.5 -7 71 -26q30.5 -19 48.5 -52.5q18 -33.5 18 -86.5zt0 0zM234 99q42 0 69 27q27 27 27 79q0 33 -9 52.5q-9 19.5 -24 30q-15 10.5 -34.5 13.5q-19.5 3 -40.5 3h-51v-199q8 -3 27.5 -4.5q19.5 -1.5 35.5 -1.5zt0 0zM200 403q11 0 25.5 1.5q14.5 1.5 23.5 3.5q29 11 49.5 36q20.5 25 20.5 65q0 26 -7 44q-7 18 -19 28.5q-12 10.5 -28.5 15q-16.5 4.5 -35.5 4.5q-41 0 -58 -4l0 -194z" />
-<glyph unicode="&#1043;" horiz-adv-x="381" d="M388 584h-217v-584h-126v700l343 0z" />
-<glyph unicode="&#1044;" horiz-adv-x="576" d="M562 -125h-89l-12 125h-360l-12 -125h-89v241h61q6 11 18.5 50q12.5 39 25.5 110q13 71 21.5 176q8.5 105 7.5 248l356 0v-584h72zM364 116v468h-111q-5 -177 -23.5 -297q-18.5 -120 -37.5 -171z" />
-<glyph unicode="&#1045;" horiz-adv-x="430" d="M45 700h350v-116h-224v-172h203v-116h-203v-180h228v-116l-354 0z" />
-<glyph unicode="&#1046;" horiz-adv-x="701" d="M287 700h119v-313l29 14l105 299h141l-125 -308l-40 -33l49 -41l141 -318h-152l-117 305h-31v-305h-119v317l-28 -14l-118 -303h-146l140 308l46 38l-45 36l-130 318h146l104 -301l31 0z" />
-<glyph unicode="&#1047;" horiz-adv-x="435" d="M98 313v102h24q15 0 37 1q22 1 35 6q27 8 46 30q19 22 19 57q0 49 -23.5 68q-23.5 19 -65.5 19q-34 0 -63.5 -10.5q-29.5 -10.5 -46.5 -21.5l-32 109q10 6 28 13q18 7 40.5 13q22.5 6 48 9.5q25.5 3.5 51.5 3.5q38 0 73.5 -7.5q35.5 -7.5 62.5 -27q27 -19.5 43 -53.5q16 -34 16 -87q0 -51 -21.5 -95q-21.5 -44 -69.5 -65l0 -6q52 -14 80.5 -56q28.5 -42 28.5 -114q0 -57 -18.5 -98q-18.5 -41 -50 -67q-31.5 -26 -72.5 -38q-41 -12 -85 -12q-54 0 -99 9.5q-45 9.5 -72 25.5l33 112q19 -11 52.5 -21q33.5 -10 78.5 -10q41 0 71 26.5q30 26.5 30 83.5q0 49 -27.5 73.5q-27.5 24.5 -96.5 26.5q-11 0 -15 0.5q-4 0.5 -17 0.5z" />
-<glyph unicode="&#1048;" horiz-adv-x="547" d="M376 373l10 99h-5l-38 -106l-199 -366h-99v700h126v-366l-11 -102h5l40 109l199 359h98v-700l-126 0z" />
-<glyph unicode="&#1049;" horiz-adv-x="547" d="M376 373l10 99h-5l-38 -106l-199 -366h-99v700h126v-366l-11 -102h5l40 109l199 359h98v-700h-126zM232 874q6 -61 56 -61q50 0 56 60l102 -15q-8 -65 -49 -94q-41 -29 -110 -29q-35 0 -64 6q-29 6 -51 20q-22 14 -36 37q-14 23 -18 58z" />
-<glyph unicode="&#1050;" horiz-adv-x="519" d="M198 300h-27v-300h-126v700h126v-311l25 12l147 299h142l-160 -295l-47 -37l48 -38l185 -330l-154 0z" />
-<glyph unicode="&#1051;" horiz-adv-x="517" d="M345 584h-106q-7 -190 -19 -317.5q-12 -127.5 -46 -194.5q-12 -24 -27.5 -39.5q-15.5 -15.5 -31 -24q-15.5 -8.5 -31.5 -12q-16 -3.5 -29 -3.5q-21 0 -37 3.5q-16 3.5 -30 10.5v114q32 -7 50 -0.5q18 6.5 30 32.5q12 22 21 64.5q9 42.5 15.5 109.5q6.5 67 10 159q3.5 92 5.5 214l351 0v-700l-126 0z" />
-<glyph unicode="&#1052;" horiz-adv-x="664" d="M493 361l14 134h-5l-37 -120l-114 -246h-42l-121 247l-37 121h-6l19 -135v-362h-119v700h121l146 -303l24 -87h4l23 89l137 301h119v-700l-126 0z" />
-<glyph unicode="&#1053;" horiz-adv-x="533" d="M362 296h-191v-296h-126v700h126v-288h191v288h126v-700l-126 0z" />
-<glyph unicode="&#1054;" horiz-adv-x="553" d="M29 350q0 178 61 271q61 93 186 93q65 0 112 -25.5q47 -25.5 77 -73q30 -47.5 44.5 -115q14.5 -67.5 14.5 -150.5q0 -178 -62.5 -271q-62.5 -93 -185.5 -93q-66 0 -112.5 25.5q-46.5 25.5 -76.5 73q-30 47.5 -44 115q-14 67.5 -14 150.5zt0 0zM161 350q0 -53 6 -98.5q6 -45.5 20 -78.5q14 -33 35.5 -52q21.5 -19 53.5 -19q58 0 87 59q29 59 29 189q0 51 -6 96.5q-6 45.5 -19.5 79q-13.5 33.5 -35.5 53q-22 19.5 -55 19.5q-115 0 -115 -248z" />
-<glyph unicode="&#1055;" horiz-adv-x="524" d="M353 584h-182v-584h-126v700h434v-700l-126 0z" />
-<glyph unicode="&#1056;" horiz-adv-x="477" d="M45 693q36 8 79 12.5q43 4.5 86 4.5q46 0 90.5 -8.5q44.5 -8.5 79.5 -33.5q35 -25 57 -70.5q22 -45.5 22 -118.5q0 -66 -18.5 -112q-18.5 -46 -49.5 -75q-31 -29 -71.5 -42q-40.5 -13 -83.5 -13q-4 0 -13 0q-9 0 -19 0.5q-10 0.5 -19.5 1.5q-9.5 1 -13.5 2l0 -241h-126zM171 354q6 -2 22.5 -3.5q16.5 -1.5 22.5 -1.5q22 0 42 6q20 6 35.5 20.5q15.5 14.5 24.5 40q9 25.5 9 64.5q0 33 -8.5 56q-8.5 23 -23 36.5q-14.5 13.5 -33.5 19.5q-19 6 -40 6q-31 0 -51 -5z" />
-<glyph unicode="&#1057;" horiz-adv-x="457" d="M442 28q-26 -22 -69.5 -32q-43.5 -10 -86.5 -10q-54 0 -100.5 18.5q-46.5 18.5 -81.5 61.5q-35 43 -55 113q-20 70 -20 172q0 106 22.5 176q22.5 70 59 111.5q36.5 41.5 83.5 58.5q47 17 95 17q49 0 85.5 -8q36.5 -8 59.5 -18l-25 -111q-19 10 -44.5 15.5q-25.5 5.5 -60.5 5.5q-69 0 -106 -60q-37 -60 -37 -188q0 -55 8.5 -100.5q8.5 -45.5 27 -78.5q18.5 -33 47 -51q28.5 -18 68.5 -18q35 0 60 9.5q25 9.5 45 22.5z" />
-<glyph unicode="&#1058;" horiz-adv-x="474" d="M466 584h-166v-584h-126v584h-166v116l458 0z" />
-<glyph unicode="&#1059;" horiz-adv-x="475" d="M246 395l15 -93h5l13 96l79 302h130l-156 -484q-18 -57 -34 -98.5q-16 -41.5 -35 -69.5q-19 -28 -42.5 -41.5q-23.5 -13.5 -57.5 -13.5q-27 0 -46.5 5q-19.5 5 -40.5 19l31 106q14 -8 25 -10.5q11 -2.5 23 -3.5q37 0 51 76l-216 515l149 0z" />
-<glyph unicode="&#1060;" horiz-adv-x="670" d="M272 76q-16 -3 -32.5 -4q-16.5 -1 -36.5 -1q-40 0 -73.5 16q-33.5 16 -58 50q-24.5 34 -38.5 86.5q-14 52.5 -14 126.5q0 140 54 215q54 75 146 75q10 0 26.5 -1q16.5 -1 26.5 -4l0 85h126v-88q15 5 36 6.5q21 1.5 34 1.5q40 0 73.5 -17q33.5 -17 58 -51.5q24.5 -34.5 38 -87.5q13.5 -53 13.5 -124q0 -73 -15.5 -127q-15.5 -54 -41.5 -90q-26 -36 -62 -54q-36 -18 -76 -18q-15 0 -30.5 1.5q-15.5 1.5 -27.5 5.5l0 -98h-126zM436 531q-8 0 -22 -1q-14 -1 -22 -4l0 -344q6 -2 16 -2q10 0 20 0q43 0 70 42.5q27 42.5 27 136.5q0 81 -22.5 126.5q-22.5 45.5 -66.5 45.5zt0 0zM237 180q7 0 19.5 0.5q12.5 0.5 21.5 3.5l0 345q-8 1 -18 1.5q-10 0.5 -19 0.5q-43 0 -69.5 -42.5q-26.5 -42.5 -26.5 -137.5q0 -83 24 -127t68 -44z" />
-<glyph unicode="&#1061;" horiz-adv-x="528" d="M177 356l-155 344h152l81 -200l19 -76l18 76l85 200h136l-160 -337l168 -363h-147l-94 215l-21 78l-20 -78l-94 -215l-139 0z" />
-<glyph unicode="&#1062;" horiz-adv-x="563" d="M550 -125h-89l-13 125h-403v700h126v-584h180v584h126v-584l73 0z" />
-<glyph unicode="&#1063;" horiz-adv-x="503" d="M160 700v-230q0 -62 18 -88.5q18 -26.5 59 -26.5q29 0 54.5 9q25.5 9 40.5 26l0 310h126v-700h-126v282q-20 -14 -55.5 -26.5q-35.5 -12.5 -83.5 -12.5q-33 0 -62 9.5q-29 9.5 -50.5 31q-21.5 21.5 -34 57q-12.5 35.5 -12.5 88.5l0 271z" />
-<glyph unicode="&#1064;" horiz-adv-x="706" d="M45 0v700h126v-584h119v584h126v-584h119v584h126l0 -700z" />
-<glyph unicode="&#1065;" horiz-adv-x="752" d="M45 0v700h126v-584h120v584h126v-584h120v584h126v-584h76v-241h-89l-13 125z" />
-<glyph unicode="&#1066;" horiz-adv-x="556" d="M127 584h-131v116h257v-252q11 3 35.5 6q24.5 3 44.5 3q42 0 79 -10q37 -10 65.5 -35q28.5 -25 45 -68.5q16.5 -43.5 16.5 -110.5q0 -121 -58.5 -182q-58.5 -61 -182.5 -61q-12 0 -32.5 0.5q-20.5 0.5 -44.5 2q-24 1.5 -48.5 5q-24.5 3.5 -45.5 8.5zM253 112q8 -3 22.5 -4.5q14.5 -1.5 28.5 -1.5q46 0 74.5 26.5q28.5 26.5 28.5 94.5q0 35 -8 57.5q-8 22.5 -22 35q-14 12.5 -32.5 17q-18.5 4.5 -39.5 4.5q-11 0 -28.5 -3q-17.5 -3 -23.5 -6z" />
-<glyph unicode="&#1067;" horiz-adv-x="668" d="M497 700h126v-700h-126zM45 700h126v-251q9 2 30 5q21 3 41 3q42 0 78.5 -9.5q36.5 -9.5 63.5 -34.5q27 -25 43 -68.5q16 -43.5 16 -110.5q0 -123 -56 -183.5q-56 -60.5 -180 -60.5q-12 0 -31 0.5q-19 0.5 -41.5 2q-22.5 1.5 -46 5q-23.5 3.5 -43.5 8.5zM171 112q8 -3 20 -4.5q12 -1.5 25 -1.5q45 0 70 27.5q25 27.5 25 94.5q0 34 -7 56q-7 22 -19 35q-12 13 -29.5 17.5q-17.5 4.5 -38.5 4.5q-10 0 -25 -3q-15 -3 -21 -6z" />
-<glyph unicode="&#1068;" horiz-adv-x="475" d="M45 700h126v-252q6 1 15.5 3q9.5 2 20.5 3q11 1 23 2q12 1 21 1q42 0 79.5 -10q37.5 -10 65.5 -35q28 -25 44.5 -68.5q16.5 -43.5 16.5 -110.5q0 -120 -58 -181.5q-58 -61.5 -183 -61.5q-11 0 -31.5 0.5q-20.5 0.5 -44.5 2q-24 1.5 -49 5q-25 3.5 -46 8.5zM171 112q9 -3 23.5 -4.5q14.5 -1.5 28.5 -1.5q47 0 74.5 27q27.5 27 27.5 94q0 35 -8 57.5q-8 22.5 -21.5 35q-13.5 12.5 -32 17q-18.5 4.5 -40.5 4.5q-11 0 -28.5 -3q-17.5 -3 -23.5 -6z" />
-<glyph unicode="&#1069;" horiz-adv-x="477" d="M105 407h211q-2 42 -10.5 77q-8.5 35 -26 60.5q-17.5 25.5 -43 39.5q-25.5 14 -61.5 14q-43 0 -75.5 -10.5q-32.5 -10.5 -55.5 -24.5l-29 109q32 19 78 30.5q46 11.5 89 11.5q60 0 109.5 -19.5q49.5 -19.5 84 -62.5q34.5 -43 53.5 -112.5q19 -69.5 19 -168.5q0 -106 -22 -176.5q-22 -70.5 -60.5 -112.5q-38.5 -42 -89 -59q-50.5 -17 -107.5 -17q-49 0 -90.5 10q-41.5 10 -64.5 22l33 112q20 -10 53 -19q33 -9 74 -9q66 0 102 48.5q36 48.5 41 152.5l-212 0z" />
-<glyph unicode="&#1070;" horiz-adv-x="743" d="M171 412h71q8 143 64.5 222.5q56.5 79.5 169.5 79.5q65 0 110.5 -26q45.5 -26 74 -74q28.5 -48 41 -115q12.5 -67 12.5 -149q0 -175 -58 -269.5q-58 -94.5 -181 -94.5q-57 0 -99 21.5q-42 21.5 -70.5 62q-28.5 40.5 -44 98q-15.5 57.5 -19.5 128.5l-71 0v-296h-126v700h126zM368 350q0 -54 5 -99.5q5 -45.5 17.5 -78.5q12.5 -33 33 -51.5q20.5 -18.5 51.5 -18.5q58 0 82.5 58.5q24.5 58.5 24.5 189.5q0 52 -4.5 97.5q-4.5 45.5 -16.5 79q-12 33.5 -32.5 52.5q-20.5 19 -53.5 19q-57 0 -82 -60.5t-25 -187.5z" />
-<glyph unicode="&#1071;" horiz-adv-x="486" d="M441 0h-126v279l-54 -19l-111 -260h-145l114 238l50 40q-53 15 -88 65.5q-35 50.5 -35 141.5q0 64 18 107q18 43 51 69q33 26 79 37.5q46 11.5 101 11.5q13 0 32.5 -1q19.5 -1 39.5 -3q20 -2 39.5 -5.5q19.5 -3.5 34.5 -7.5zM315 589q-9 3 -18 4q-9 1 -22 1q-20 0 -38 -5.5q-18 -5.5 -31 -19q-13 -13.5 -20.5 -35.5q-7.5 -22 -7.5 -55q0 -63 27.5 -90.5q27.5 -27.5 71.5 -27.5l38 0z" />
-<glyph unicode="&#1072;" horiz-adv-x="413" d="M44 470q30 18 75 29q45 11 102 11q85 0 118.5 -44q33.5 -44 33.5 -125q0 -47 -2.5 -92.5q-2.5 -45.5 -3.5 -89q-1 -43.5 1.5 -84q2.5 -40.5 13.5 -76.5l-97 0l-19 61h-4q-16 -29 -45 -48q-29 -19 -73 -19q-59 0 -93 39.5q-34 39.5 -34 105.5q0 90 64 128q64 38 173 32q5 58 -7.5 84q-12.5 26 -53.5 26q-30 0 -62 -7q-32 -7 -57 -20zM187 95q27 0 44 13.5q17 13.5 25 29.5l0 83q-23 3 -44 1q-21 -2 -37 -9q-16 -7 -25.5 -20.5q-9.5 -13.5 -9.5 -34.5q0 -31 12.5 -47t34.5 -16z" />
-<glyph unicode="&#1073;" horiz-adv-x="445" d="M123 410q23 43 55.5 62q32.5 19 77.5 19q74 0 119 -54.5q45 -54.5 45 -175.5q0 -140 -50.5 -207.5q-50.5 -67.5 -144.5 -67.5q-48 0 -85.5 18q-37.5 18 -63 56q-25.5 38 -38.5 98.5q-13 60.5 -13 144.5q0 86 8.5 147q8.5 61 24 103q15.5 42 37 67q21.5 25 47.5 39.5q26 14.5 56 20.5q30 6 63 10q43 5 76 12.5q33 7.5 48 24.5l2 -112q-16 -17 -47.5 -24.5q-31.5 -7.5 -82.5 -11.5q-31 -3 -54.5 -11.5q-23.5 -8.5 -40 -27q-16.5 -18.5 -27 -50q-10.5 -31.5 -15.5 -80.5zM148 244q0 -72 18 -112q18 -40 56 -40q40 0 57.5 36q17.5 36 17.5 116q0 69 -16 105q-16 36 -54 36q-41 0 -60 -36t-19 -105z" />
-<glyph unicode="&#1074;" horiz-adv-x="418" d="M43 499q28 3 71.5 5.5q43.5 2.5 90.5 2.5q94 0 133 -31q39 -31 39 -94q0 -36 -17 -68.5q-17 -32.5 -52 -47.5l0 -4q85 -23 85 -120q0 -75 -48 -112q-48 -37 -156 -37q-35 0 -76.5 2q-41.5 2 -69.5 6zM159 96q10 -2 19 -2.5q9 -0.5 22 -0.5q39 0 56.5 15.5q17.5 15.5 17.5 48.5q0 27 -15 43.5q-15 16.5 -51 16.5h-49zM208 296q24 0 39.5 15q15.5 15 15.5 40q0 29 -12.5 42.5q-12.5 13.5 -46.5 13.5q-17 0 -27 -0.5q-10 -0.5 -18 -1.5l0 -109z" />
-<glyph unicode="&#1075;" horiz-adv-x="309" d="M314 391h-152v-391h-119v500l271 0z" />
-<glyph unicode="&#1076;" horiz-adv-x="476" d="M466 -114h-88l-13 114h-267l-13 -114h-87v223h48q6 11 16 38.5q10 27.5 19.5 74.5q9.5 47 16.5 116q7 69 7 162l301 0v-391h60zM287 103v291h-76q-2 -36 -5.5 -78q-3.5 -42 -9.5 -81.5q-6 -39.5 -13.5 -74.5q-7.5 -35 -17.5 -57z" />
-<glyph unicode="&#1077;" horiz-adv-x="428" d="M381 37q-25 -22 -68 -36q-43 -14 -90 -14q-52 0 -89.5 18q-37.5 18 -61.5 52q-24 34 -35.5 82.5q-11.5 48.5 -11.5 110.5q0 135 53.5 199.5q53.5 64.5 148.5 64.5q32 0 62 -9.5q30 -9.5 53.5 -32q23.5 -22.5 38 -60q14.5 -37.5 14.5 -94.5q0 -22 -2.5 -47q-2.5 -25 -7.5 -54l-243 0q2 -62 26 -95q24 -33 77 -33q32 0 58.5 10q26.5 10 40.5 21zM225 412q-38 0 -57 -30.5q-19 -30.5 -22 -85.5l138 0q3 57 -12 86.5t-47 29.5z" />
-<glyph unicode="&#1078;" horiz-adv-x="582" d="M201 203l-73 -203h-132l100 229l29 30l-42 38l-78 203h126l67 -203h34v203h113v-213l30 14l67 199h126l-83 -203l-33 -32l42 -40l92 -225h-135l-73 207h-33v-207h-113l0 217z" />
-<glyph unicode="&#1079;" horiz-adv-x="354" d="M85 208v89h48q27 0 44 16q17 16 17 39q0 50 -62 50q-30 0 -53 -8q-23 -8 -37 -17l-27 95q26 15 68 25.5q42 10.5 87 10.5q143 0 143 -124q0 -37 -16 -69.5q-16 -32.5 -48 -46.5l0 -4q42 -12 61 -42q19 -30 19 -81q0 -32 -10.5 -59.5q-10.5 -27.5 -32.5 -47.5q-22 -20 -55.5 -32q-33.5 -12 -79.5 -12q-45 0 -79.5 9.5q-34.5 9.5 -57.5 23.5l24 97q19 -11 44.5 -17.5q25.5 -6.5 54.5 -6.5q73 0 73 59q0 25 -18.5 39q-18.5 14 -68.5 14z" />
-<glyph unicode="&#1080;" horiz-adv-x="450" d="M288 218l9 81h-3l-37 -85l-134 -214h-80v500h119v-227l-9 -78h3l36 83l135 222h80v-500l-119 0z" />
-<glyph unicode="&#1081;" horiz-adv-x="450" d="M288 218l9 81h-3l-37 -85l-134 -214h-80v500h119v-227l-9 -78h3l36 83l135 222h80v-500h-119zM186 704q3 -38 16 -55q13 -17 33 -17q21 0 33.5 16.5q12.5 16.5 17.5 54.5l90 -22q-11 -68 -50.5 -99.5q-39.5 -31.5 -93.5 -31.5q-26 0 -51 7q-25 7 -45 22.5q-20 15.5 -33.5 40.5q-13.5 25 -17.5 62z" />
-<glyph unicode="&#1082;" horiz-adv-x="409" d="M189 207h-27v-207h-119v500h119v-213l24 14l84 199h128l-91 -192l-44 -39l48 -39l101 -230l-134 0z" />
-<glyph unicode="&#1083;" horiz-adv-x="433" d="M271 391h-72q-4 -87 -11 -160q-7 -73 -22 -125.5q-15 -52.5 -40.5 -82q-25.5 -29.5 -66.5 -29.5q-25 0 -43 3.5q-18 3.5 -31 11.5l14 104q24 -8 40.5 1q16.5 9 27.5 49.5q11 40.5 17.5 120.5q6.5 80 9.5 216l296 0v-500l-119 0z" />
-<glyph unicode="&#1084;" horiz-adv-x="555" d="M399 230l7 103h-5l-30 -93l-73 -150h-45l-80 150l-31 93h-6l13 -103v-230h-106v500h125l91 -184l20 -67h4l21 69l84 182h124v-500l-113 0z" />
-<glyph unicode="&#1085;" horiz-adv-x="444" d="M282 199h-120v-199h-119v500h119v-192h120v192h119v-500l-119 0z" />
-<glyph unicode="&#1086;" horiz-adv-x="445" d="M25 250q0 133 52 198q52 65 145 65q100 0 149 -66q49 -66 49 -197q0 -134 -52 -198.5q-52 -64.5 -146 -64.5q-197 0 -197 263zt0 0zM148 250q0 -75 17 -116q17 -41 57 -41q38 0 56.5 35.5q18.5 35.5 18.5 121.5q0 77 -17 117q-17 40 -58 40q-35 0 -54.5 -35.5t-19.5 -121.5z" />
-<glyph unicode="&#1087;" horiz-adv-x="440" d="M278 391h-116v-391h-119v500h354v-500l-119 0z" />
-<glyph unicode="&#1088;" horiz-adv-x="447" d="M43 500h89l12 -57h3q23 36 51.5 52.5q28.5 16.5 70.5 16.5q76 0 114.5 -57.5q38.5 -57.5 38.5 -191.5q0 -134 -48 -205.5q-48 -71.5 -139 -71.5q-24 0 -41 4q-17 4 -32 13l0 -203h-119zM162 112q10 -10 22.5 -15q12.5 -5 32.5 -5q40 0 61 39.5q21 39.5 21 134.5q0 71 -16 105.5q-16 34.5 -53 34.5q-50 0 -68 -59z" />
-<glyph unicode="&#1089;" horiz-adv-x="350" d="M338 27q-25 -20 -60 -30q-35 -10 -70 -10q-51 0 -85.5 18.5q-34.5 18.5 -56.5 53q-22 34.5 -31.5 83q-9.5 48.5 -9.5 108.5q0 131 47 197q47 66 138 66q45 0 73.5 -8q28.5 -8 50.5 -20l-28 -99q-18 9 -34.5 13.5q-16.5 4.5 -39.5 4.5q-42 0 -63 -36.5q-21 -36.5 -21 -117.5q0 -68 21.5 -111q21.5 -43 68.5 -43q25 0 42.5 6.5q17.5 6.5 32.5 16.5z" />
-<glyph unicode="&#1090;" horiz-adv-x="345" d="M344 391h-110v-391h-119v391h-114v109l343 0z" />
-<glyph unicode="&#1091;" horiz-adv-x="400" d="M203 219l13 -78h5l9 79l58 280h122l-125 -451q-17 -59 -32 -106q-15 -47 -32 -80q-17 -33 -38.5 -50.5q-21.5 -17.5 -51.5 -17.5q-21 0 -40.5 3.5q-19.5 3.5 -33.5 11.5l20 102q13 -5 26.5 -4.5q13.5 0.5 25 10q11.5 9.5 20.5 29.5q9 20 15 53l-174 500l143 0z" />
-<glyph unicode="&#1092;" horiz-adv-x="585" d="M233 -6q-14 -6 -29.5 -7q-15.5 -1 -27.5 -1q-75 0 -115 64q-40 64 -40 200q0 131 44 195.5q44 64.5 128 64.5q11 0 21 -1q10 -1 19 -3l0 194h119v-195q15 3 26 4q11 1 22 1q41 0 71.5 -13.5q30.5 -13.5 51 -43.5q20.5 -30 31 -77.5q10.5 -47.5 10.5 -115.5q0 -131 -43 -202.5q-43 -71.5 -124 -71.5q-8 0 -22.5 1.5q-14.5 1.5 -22.5 5.5l0 -193h-119zM373 410q-8 0 -13.5 -1.5q-5.5 -1.5 -13.5 -3.5l0 -316q12 -3 31 -3q17 0 30 8.5q13 8.5 21.5 29q8.5 20.5 12.5 53.5q4 33 4 83q0 42 -4 71q-4 29 -13 46.5q-9 17.5 -22.5 25q-13.5 7.5 -32.5 7.5zt0 0zM208 86q8 0 15 1.5q7 1.5 15 3.5l0 315q-13 4 -28 4q-17 0 -30 -7.5q-13 -7.5 -22 -26q-9 -18.5 -13.5 -49.5q-4.5 -31 -4.5 -77q0 -85 16.5 -124.5t51.5 -39.5z" />
-<glyph unicode="&#1093;" horiz-adv-x="439" d="M133 256l-119 244h140l51 -118l19 -64l21 64l52 118h129l-120 -240l128 -260h-135l-61 130l-22 71l-23 -71l-61 -130l-128 0z" />
-<glyph unicode="&#1094;" horiz-adv-x="464" d="M454 -114h-87l-13 114h-311v500h119v-391h113v391h119v-391l60 0z" />
-<glyph unicode="&#1095;" horiz-adv-x="419" d="M143 500v-134q0 -53 9.5 -76.5q9.5 -23.5 41.5 -23.5q22 0 37.5 6.5q15.5 6.5 25.5 14.5l0 213h119v-500h-119v194q-12 -10 -37 -22q-25 -12 -67 -12q-30 0 -54 7.5q-24 7.5 -40.5 26.5q-16.5 19 -25.5 50q-9 31 -9 78l0 178z" />
-<glyph unicode="&#1096;" horiz-adv-x="627" d="M43 0v500h119v-391h92v391h119v-391h92v391h119l0 -500z" />
-<glyph unicode="&#1097;" horiz-adv-x="653" d="M643 -114h-88l-12 114h-500v500h119v-391h92v391h119v-391h92v391h119v-391l59 0z" />
-<glyph unicode="&#1098;" horiz-adv-x="454" d="M204 105q21 -6 43 -6q36 0 52 16q16 16 16 54q0 70 -66 70q-24 0 -45 -6zM204 322q20 4 40 5.5q20 1.5 37 1.5q42 0 72 -11.5q30 -11.5 49 -32q19 -20.5 27.5 -49q8.5 -28.5 8.5 -62.5q0 -45 -10.5 -79q-10.5 -34 -34.5 -56.5q-24 -22.5 -63.5 -34q-39.5 -11.5 -97.5 -11.5q-47 0 -82.5 2q-35.5 2 -64.5 5l0 391h-90v109l209 0z" />
-<glyph unicode="&#1099;" horiz-adv-x="591" d="M162 105q21 -6 43 -6q32 0 45.5 16.5q13.5 16.5 13.5 54.5q0 35 -13 52q-13 17 -45 17q-23 0 -44 -6zM162 322q20 4 41 5.5q21 1.5 38 1.5q41 0 69 -11.5q28 -11.5 45 -32.5q17 -21 24.5 -49.5q7.5 -28.5 7.5 -61.5q0 -45 -10 -79q-10 -34 -33 -56.5q-23 -22.5 -60 -34q-37 -11.5 -92 -11.5q-48 0 -84.5 2q-36.5 2 -64.5 5l0 500h119zM430 500h119v-500l-119 0z" />
-<glyph unicode="&#1100;" horiz-adv-x="411" d="M162 105q21 -6 44 -6q35 0 50.5 16q15.5 16 15.5 54q0 34 -15 52q-15 18 -49 18q-26 0 -46 -7zM162 322q20 4 41 5.5q21 1.5 38 1.5q42 0 71.5 -11.5q29.5 -11.5 48 -32.5q18.5 -21 26.5 -49.5q8 -28.5 8 -61.5q0 -45 -10.5 -79q-10.5 -34 -33.5 -56.5q-23 -22.5 -61 -34q-38 -11.5 -93 -11.5q-52 0 -89 2q-37 2 -65 5l0 500l119 0z" />
-<glyph unicode="&#1101;" horiz-adv-x="377" d="M85 298h144q-3 54 -22.5 82q-19.5 28 -63.5 28q-31 0 -54 -6.5q-23 -6.5 -40 -17.5l-32 90q54 40 149 40q92 0 139 -65q47 -65 47 -199q0 -134 -51.5 -198.5q-51.5 -64.5 -145.5 -64.5q-37 0 -76.5 7.5q-39.5 7.5 -63.5 21.5l28 99q41 -22 94 -22q49 0 69.5 27.5q20.5 27.5 22.5 87.5l-144 0z" />
-<glyph unicode="&#1102;" horiz-adv-x="611" d="M400 -12q-93 0 -133.5 56q-40.5 56 -47.5 160l-57 0v-204h-119v500h119v-190h58q9 100 51.5 151q42.5 51 130.5 51q96 0 140 -68.5q44 -68.5 44 -193.5q0 -262 -186 -262zt0 0zM332 250q0 -77 15 -116.5q15 -39.5 53 -39.5q16 0 28 7q12 7 20 25q8 18 11.5 48q3.5 30 3.5 76q0 82 -14 119q-14 37 -51 37q-34 0 -50 -34.5t-16 -121.5z" />
-<glyph unicode="&#1103;" horiz-adv-x="421" d="M262 189l-45 -12l-71 -177h-139l76 161l39 32q-40 10 -65 48q-25 38 -25 96q0 91 50 134q50 43 159 42q42 0 78.5 -4q36.5 -4 61.5 -10l0 -499h-119zM262 256v144q-15 7 -37 7q-70 0 -70 -77q0 -74 79 -76z" />
-<glyph unicode="&#1105;" horiz-adv-x="428" d="M381 37q-25 -22 -68 -36q-43 -14 -90 -14q-52 0 -89.5 18q-37.5 18 -61.5 52q-24 34 -35.5 82.5q-11.5 48.5 -11.5 110.5q0 135 53.5 199.5q53.5 64.5 148.5 64.5q32 0 62 -9.5q30 -9.5 53.5 -32q23.5 -22.5 38 -60q14.5 -37.5 14.5 -94.5q0 -22 -2.5 -47q-2.5 -25 -7.5 -54l-243 0q2 -62 26 -95q24 -33 77 -33q32 0 58.5 10q26.5 10 40.5 21zM225 412q-38 0 -57 -30.5q-19 -30.5 -22 -85.5l138 0q3 57 -12 86.5q-15 29.5 -47 29.5zt0 0zM64 631q0 32 17.5 50q17.5 18 46.5 18q28 0 45 -18q17 -18 17 -50q0 -30 -17 -47.5q-17 -17.5 -45 -17.5q-29 0 -46.5 17.5q-17.5 17.5 -17.5 47.5zt0 0zM250 631q0 32 17 50q17 18 46 18q29 0 46 -18q17 -18 17 -50q0 -30 -17 -47.5q-17 -17.5 -46 -17.5q-29 0 -46 17.5t-17 47.5z" />
-<glyph unicode="&#1106;" horiz-adv-x="457" d="M51 700h119v-100h133v-79h-133v-124h4q18 29 47 46q29 17 74 17q30 0 53 -9q23 -9 38.5 -29.5q15.5 -20.5 23.5 -54.5q8 -34 8 -84v-314q0 -84 -31 -129.5q-31 -45.5 -100 -45.5q-13 0 -27.5 1.5q-14.5 1.5 -30.5 5.5l0 102q43 -4 56.5 22.5q13.5 26.5 13.5 77.5v250q0 55 -12.5 76.5q-12.5 21.5 -44.5 21.5q-24 0 -44 -15.5q-20 -15.5 -28 -40.5l0 -295h-119v521h-59v79l59 0z" />
-<glyph unicode="&#1107;" horiz-adv-x="309" d="M314 391h-152v-391h-119v500h271zM172 720h119v-30l-94 -124l-67 0z" />
-<glyph unicode="&#1108;" horiz-adv-x="371" d="M356 25q-23 -18 -61 -27.5q-38 -9.5 -74 -9.5q-50 0 -86.5 18.5q-36.5 18.5 -60.5 53q-24 34.5 -35.5 83q-11.5 48.5 -11.5 107.5q0 127 53.5 194.5q53.5 67.5 145.5 67.5q45 0 74.5 -7q29.5 -7 51.5 -19l-29 -101q-19 10 -38 14q-19 4 -41 4q-35 0 -60 -25.5q-25 -25.5 -33 -81.5l151 0v-86h-152q6 -51 30.5 -82q24.5 -31 69.5 -31q25 0 45 6q20 6 36 16z" />
-<glyph unicode="&#1109;" horiz-adv-x="350" d="M211 133q0 21 -13.5 35.5q-13.5 14.5 -34.5 27q-21 12.5 -44.5 25.5q-23.5 13 -44.5 32q-21 19 -34.5 46q-13.5 27 -13.5 68q0 70 38 108q38 38 112 38q44 0 83 -9.5q39 -9.5 62 -23.5l-28 -92q-19 8 -46 15.5q-27 7.5 -53 7.5q-49 0 -49 -41q0 -19 13.5 -31.5q13.5 -12.5 34.5 -24.5q21 -12 44.5 -25q23.5 -13 44.5 -32.5q21 -19.5 34.5 -47.5q13.5 -28 13.5 -69q0 -69 -42 -111q-42 -42 -125 -42q-41 0 -80.5 10q-39.5 10 -63.5 26l33 96q21 -12 48.5 -21q27.5 -9 57.5 -9q23 0 38 10.5t15 33.5z" />
-<glyph unicode="&#1110;" horiz-adv-x="225" d="M53 500h119v-500h-119zM37 641q0 30 19 49.5q19 19.5 54 19.5q35 0 56 -19q21 -19 21 -50q0 -31 -21 -49q-21 -18 -56 -18q-35 0 -54 18.5t-19 48.5z" />
-<glyph unicode="&#1111;" horiz-adv-x="274" d="M16 641q0 32 13.5 50q13.5 18 42.5 18q29 0 42 -18q13 -18 13 -50q0 -29 -13 -47.5q-13 -18.5 -42 -18.5q-29 0 -42.5 18.5q-13.5 18.5 -13.5 47.5zt0 0zM147 641q0 32 13 50q13 18 42 18q30 0 43.5 -18q13.5 -18 13.5 -50q0 -29 -13.5 -47.5q-13.5 -18.5 -43.5 -18.5q-29 0 -42 18.5q-13 18.5 -13 47.5zt0 0zM75 500h119v-500l-119 0z" />
-<glyph unicode="&#1112;" horiz-adv-x="225" d="M54 500h119v-521q0 -91 -31.5 -139q-31.5 -48 -100.5 -48q-28 0 -57 7l0 106q43 -4 56.5 24.5q13.5 28.5 13.5 84.5zM37 641q0 30 19 49.5q19 19.5 54 19.5q35 0 56 -19q21 -19 21 -50q0 -31 -21 -49q-21 -18 -56 -18q-35 0 -54 18.5t-19 48.5z" />
-<glyph unicode="&#1113;" horiz-adv-x="639" d="M390 500v-178q20 4 41 5.5q21 1.5 38 1.5q42 0 71.5 -11.5q29.5 -11.5 48 -32.5q18.5 -21 26.5 -49.5q8 -28.5 8 -61.5q0 -45 -10.5 -79q-10.5 -34 -33.5 -56.5q-23 -22.5 -61 -34q-38 -11.5 -93 -11.5q-52 0 -89 2q-37 2 -65 5l0 391h-71q-4 -87 -11 -160q-7 -73 -22.5 -125.5q-15.5 -52.5 -41 -82q-25.5 -29.5 -66.5 -29.5q-25 0 -43 3.5q-18 3.5 -31 11.5l14 104q24 -8 40.5 1q16.5 9 27.5 49.5q11 40.5 17.5 120.5q6.5 80 9.5 216zM390 105q21 -6 44 -6q35 0 50.5 16q15.5 16 15.5 54q0 34 -15 52q-15 18 -49 18q-26 0 -46 -7z" />
-<glyph unicode="&#1114;" horiz-adv-x="651" d="M401 105q21 -6 44 -6q35 0 51 16.5q16 16.5 16 54.5q0 35 -15.5 50q-15.5 15 -49.5 15q-25 0 -46 -6zM401 320q20 3 41 4.5q21 1.5 38 1.5q42 0 71.5 -11.5q29.5 -11.5 48 -31.5q18.5 -20 27 -48q8.5 -28 8.5 -61q0 -45 -10.5 -79q-10.5 -34 -34 -56.5q-23.5 -22.5 -61.5 -34q-38 -11.5 -93 -11.5q-52 0 -89 2q-37 2 -65 5l0 203h-120v-203h-119v500h119v-188h120v188l119 0z" />
-<glyph unicode="&#1115;" horiz-adv-x="457" d="M-8 600h59v100h119v-100h133v-79h-133v-122h4q18 27 47 44q29 17 74 17q30 0 53 -9q23 -9 38.5 -30q15.5 -21 23.5 -55q8 -34 8 -84v-282h-119v255q0 51 -12.5 73.5q-12.5 22.5 -44.5 22.5q-24 0 -44 -16q-20 -16 -28 -42l0 -293h-119v521l-59 0z" />
-<glyph unicode="&#1116;" horiz-adv-x="409" d="M189 207h-27v-207h-119v500h119v-213l24 14l84 199h128l-91 -192l-44 -39l48 -39l101 -230h-134zM201 720h119v-30l-94 -124l-67 0z" />
-<glyph unicode="&#1118;" horiz-adv-x="400" d="M203 219l13 -78h5l9 79l58 280h122l-125 -451q-17 -59 -32 -106q-15 -47 -32 -80q-17 -33 -38.5 -50.5q-21.5 -17.5 -51.5 -17.5q-21 0 -40.5 3.5q-19.5 3.5 -33.5 11.5l20 102q13 -5 26.5 -4.5q13.5 0.5 25 10q11.5 9.5 20.5 29.5q9 20 15 53l-174 500h143zM163 704q3 -38 16 -55q13 -17 33 -17q21 0 33.5 16.5q12.5 16.5 17.5 54.5l90 -22q-11 -68 -50.5 -99.5q-39.5 -31.5 -93.5 -31.5q-26 0 -51 7q-25 7 -45 22.5q-20 15.5 -33.5 40.5q-13.5 25 -17.5 62z" />
-<glyph unicode="&#1119;" horiz-adv-x="438" d="M43 0v500h119v-391h115v391h119v-500h-122l-12 -175h-82l-16 175z" />
-<glyph unicode="&#1122;" horiz-adv-x="545" d="M0 645h115v80h126v-80h163v-109h-163v-95q4 1 13.5 2.5q9.5 1.5 20.5 2.5q11 1 22.5 2q11.5 1 21.5 1q42 0 80 -9.5q38 -9.5 66.5 -33.5q28.5 -24 45 -66q16.5 -42 16.5 -108q0 -120 -58 -181q-58 -61 -183 -61q-11 0 -31.5 0.5q-20.5 0.5 -44.5 2q-24 1.5 -49 5q-25 3.5 -46 8.5l0 530h-115zM241 112q9 -3 23.5 -4.5q14.5 -1.5 28.5 -1.5q46 0 74 27q28 27 28 94q0 35 -8 57q-8 22 -21.5 34.5q-13.5 12.5 -32 17q-18.5 4.5 -39.5 4.5q-11 0 -28.5 -2.5q-17.5 -2.5 -24.5 -5.5z" />
-<glyph unicode="&#1123;" horiz-adv-x="454" d="M-5 500h90v200h119v-200h132v-91h-132v-87q20 4 41 5.5q21 1.5 38 1.5q42 0 71.5 -11.5q29.5 -11.5 48 -32.5q18.5 -21 27 -49.5q8.5 -28.5 8.5 -61.5q0 -45 -10.5 -79q-10.5 -34 -34.5 -56.5q-24 -22.5 -63.5 -34q-39.5 -11.5 -96.5 -11.5q-48 0 -83.5 2q-35.5 2 -64.5 5l0 409h-90zM204 105q21 -6 43 -6q36 0 52 18q16 18 16 54q0 32 -15.5 49.5q-15.5 17.5 -49.5 17.5q-25 0 -46 -6z" />
-<glyph unicode="&#1138;" horiz-adv-x="552" d="M29 350q0 178 61 271q61 93 186 93q65 0 112 -25.5q47 -25.5 77 -73q30 -47.5 44 -115q14 -67.5 14 -150.5q0 -178 -62 -271q-62 -93 -185 -93q-66 0 -112.5 25.5q-46.5 25.5 -76.5 73q-30 47.5 -44 115q-14 67.5 -14 150.5zt0 0zM276 102q52 0 81.5 47q29.5 47 34.5 150l-231 0q3 -44 10.5 -80q7.5 -36 21.5 -62q14 -26 34.5 -40.5q20.5 -14.5 48.5 -14.5zt0 0zM391 405q-3 42 -10.5 77q-7.5 35 -21.5 61q-14 26 -34.5 40.5q-20.5 14.5 -48.5 14.5q-103 0 -115 -193z" />
-<glyph unicode="&#1139;" horiz-adv-x="445" d="M25 250q0 129 51.5 196.5q51.5 67.5 145.5 67.5q50 0 87 -18.5q37 -18.5 62 -53q25 -34.5 37 -83q12 -48.5 12 -109.5q0 -130 -52 -197q-52 -67 -146 -67q-50 0 -87 18.5q-37 18.5 -61.5 53q-24.5 34.5 -36.5 83q-12 48.5 -12 109.5zt0 0zM297 289q-5 66 -24 92.5q-19 26.5 -50 26.5q-29 0 -50 -25.5q-21 -25.5 -25 -93.5zM148 208q3 -61 24 -88.5q21 -27.5 50 -27.5q29 0 50 24.5q21 24.5 25 91.5z" />
-<glyph unicode="&#1140;" horiz-adv-x="528" d="M297 -5h-96l-213 705h148l104 -411l14 -120h4l13 121l55 229q13 55 27 92q14 37 31.5 58.5q17.5 21.5 40.5 30.5q23 9 53 9q32 0 53 -6q21 -6 39 -16l-26 -112q-14 8 -24.5 10.5q-10.5 2.5 -21.5 2.5q-20 0 -32 -21q-12 -21 -22 -59z" />
-<glyph unicode="&#1141;" horiz-adv-x="436" d="M130 500l68 -255l13 -84h4l10 85l18 71q12 52 24.5 88.5q12.5 36.5 28 59.5q15.5 23 35.5 33.5q20 10.5 47 10.5q21 0 40.5 -4.5q19.5 -4.5 33.5 -12.5l-17 -103q-16 7 -26 7q-14 0 -27 -14q-13 -14 -26 -53l-110 -334h-76l-179 505z" />
-<glyph unicode="&#1162;" horiz-adv-x="589" d="M376 373l10 99h-5l-38 -106l-199 -366h-99v700h126v-366l-11 -102h5l40 109l199 359h98v-591h92v-31l-80 -208h-88l37 130h-87zM221 874q6 -61 56 -61q50 0 56 60l102 -15q-8 -65 -49 -94q-41 -29 -110 -29q-35 0 -64 6q-29 6 -51 20q-22 14 -36 37q-14 23 -18 58z" />
-<glyph unicode="&#1163;" horiz-adv-x="491" d="M288 218l9 81h-3l-37 -85l-134 -214h-80v500h119v-227l-9 -78h3l36 83l135 222h80v-391h86v-31l-80 -192h-88l37 114h-74zM188 704q3 -38 16 -55q13 -17 33 -17q21 0 33.5 16.5q12.5 16.5 17.5 54.5l90 -22q-11 -68 -50.5 -99.5q-39.5 -31.5 -93.5 -31.5q-26 0 -51 7q-25 7 -45 22.5q-20 15.5 -33.5 40.5q-13.5 25 -17.5 62z" />
-<glyph unicode="&#1164;" horiz-adv-x="545" d="M0 645h115v80h126v-80h163v-109h-163v-95q4 1 13.5 2.5q9.5 1.5 20.5 2.5q11 1 22.5 2q11.5 1 21.5 1q42 0 80 -9.5q38 -9.5 66.5 -33.5q28.5 -24 45 -66q16.5 -42 16.5 -108q0 -120 -58 -181q-58 -61 -183 -61q-11 0 -31.5 0.5q-20.5 0.5 -44.5 2q-24 1.5 -49 5q-25 3.5 -46 8.5l0 530h-115zM241 112q9 -3 23.5 -4.5q14.5 -1.5 28.5 -1.5q46 0 74 27q28 27 28 94q0 35 -8 57q-8 22 -21.5 34.5q-13.5 12.5 -32 17q-18.5 4.5 -39.5 4.5q-11 0 -28.5 -2.5q-17.5 -2.5 -24.5 -5.5z" />
-<glyph unicode="&#1165;" horiz-adv-x="454" d="M-5 500h90v200h119v-200h132v-91h-132v-87q20 4 41 5.5q21 1.5 38 1.5q42 0 71.5 -11.5q29.5 -11.5 48 -32.5q18.5 -21 27 -49.5q8.5 -28.5 8.5 -61.5q0 -45 -10.5 -79q-10.5 -34 -34.5 -56.5q-24 -22.5 -63.5 -34q-39.5 -11.5 -96.5 -11.5q-48 0 -83.5 2q-35.5 2 -64.5 5l0 409h-90zM204 105q21 -6 43 -6q36 0 52 18q16 18 16 54q0 32 -15.5 49.5q-15.5 17.5 -49.5 17.5q-25 0 -46 -6z" />
-<glyph unicode="&#1166;" horiz-adv-x="477" d="M45 693q36 8 79 12.5q43 4.5 86 4.5q46 0 90.5 -8.5q44.5 -8.5 79.5 -33.5q35 -25 57 -70.5q22 -45.5 22 -118.5q0 -65 -18 -110q-18 -45 -48 -74l51 -75l-75 -63l-65 89q-33 -9 -68 -9q-4 0 -13 0q-9 0 -19 0.5q-10 0.5 -19.5 1.5q-9.5 1 -13.5 2l0 -241h-126zM247 481l60 -88q9 15 14.5 36.5q5.5 21.5 5.5 50.5q0 33 -8.5 56q-8.5 23 -23 36.5q-14.5 13.5 -33.5 19.5q-19 6 -40 6q-31 0 -51 -5l0 -239q6 -2 22.5 -3.5q16.5 -1.5 22.5 -1.5q23 0 44 6l-49 72z" />
-<glyph unicode="&#1167;" horiz-adv-x="447" d="M43 500h89l12 -57h3q23 36 51.5 52.5q28.5 16.5 70.5 16.5q76 0 114.5 -57.5q38.5 -57.5 38.5 -191.5q0 -137 -50 -208l39 -52l-71 -65l-47 57q-26 -9 -58 -9q-24 0 -41 4q-17 4 -32 13l0 -203h-119zM238 193l44 -54q8 21 12.5 52q4.5 31 4.5 75q0 71 -16 105.5q-16 34.5 -53 34.5q-50 0 -68 -59l0 -235q10 -10 22.5 -15q12.5 -5 32.5 -5q17 0 31 6l-42 54z" />
-<glyph unicode="&#1168;" horiz-adv-x="381" d="M388 584h-217v-584h-126v700h245l17 152l81 0z" />
-<glyph unicode="&#1169;" horiz-adv-x="309" d="M314 391h-152v-391h-119v500h173l17 152l81 0z" />
-<glyph unicode="&#1170;" horiz-adv-x="424" d="M423 584h-217v-200h181v-87h-181v-297h-126v297h-79v87h79v316l343 0z" />
-<glyph unicode="&#1171;" horiz-adv-x="338" d="M334 391h-152v-117h134v-79h-134v-195h-119v195h-63v79h63v226l271 0z" />
-<glyph unicode="&#1172;" horiz-adv-x="485" d="M171 0h-126v700h343v-116h-217v-209q14 6 42.5 14q28.5 8 65.5 8q36 0 68 -11q32 -11 56.5 -39.5q24.5 -28.5 39 -78q14.5 -49.5 14.5 -125.5q0 -67 -10.5 -117.5q-10.5 -50.5 -33.5 -84.5q-23 -34 -61 -51q-38 -17 -93 -17q-40 0 -51 4l0 111q6 -2 18 -2q12 0 25 0q38 0 56 35.5q18 35.5 18 116.5q0 43 -6 70.5q-6 27.5 -17.5 43.5q-11.5 16 -27.5 22.5q-16 6.5 -36 6.5q-18 0 -37 -6.5q-19 -6.5 -30 -12.5z" />
-<glyph unicode="&#1173;" horiz-adv-x="443" d="M162 0h-119v500h268v-109h-149v-132q14 6 39 13.5q25 7.5 63 7.5q31 0 59 -10q28 -10 49 -36.5q21 -26.5 33.5 -72.5q12.5 -46 12.5 -119q0 -63 -9.5 -110.5q-9.5 -47.5 -31 -79q-21.5 -31.5 -57.5 -47.5q-36 -16 -89 -16q-22 0 -34 1.5q-12 1.5 -18 3.5l0 106q5 -1 17 -1.5q12 -0.5 25 -0.5q37 0 54 32.5q17 32.5 17 110.5q0 38 -5 63q-5 25 -14 40q-9 15 -22.5 21q-13.5 6 -29.5 6q-18 0 -34.5 -5q-16.5 -5 -24.5 -10z" />
-<glyph unicode="&#1174;" horiz-adv-x="726" d="M287 700h119v-313l29 14l105 299h141l-125 -308l-40 -33l49 -41l89 -202h69v-241h-89l-13 125h-67l-117 305h-31v-305h-119v317l-28 -14l-118 -303h-146l140 308l46 38l-45 36l-130 318h146l104 -301l31 0z" />
-<glyph unicode="&#1175;" horiz-adv-x="612" d="M378 207h-33v-207h-113v217l-31 -14l-73 -203h-132l100 229l29 30l-42 38l-78 203h126l67 -203h34v203h113v-213l30 14l67 199h126l-83 -203l-33 -32l42 -40l47 -116h68v-223h-88l-13 114l-57 0z" />
-<glyph unicode="&#1176;" horiz-adv-x="435" d="M98 313v102h24q15 0 37 1q22 1 35 6q27 8 46 30q19 22 19 57q0 49 -23.5 68q-23.5 19 -65.5 19q-34 0 -63.5 -10.5q-29.5 -10.5 -46.5 -21.5l-32 109q10 6 28 13q18 7 40.5 13q22.5 6 48 9.5q25.5 3.5 51.5 3.5q38 0 73.5 -7.5q35.5 -7.5 62.5 -27q27 -19.5 43 -53.5q16 -34 16 -87q0 -51 -21.5 -95q-21.5 -44 -69.5 -65l0 -6q52 -14 80.5 -56q28.5 -42 28.5 -114q0 -49 -14 -86q-14 -37 -38 -62.5q-24 -25.5 -56 -41q-32 -15.5 -68 -21.5l-11 -165h-82l-15 164q-35 5 -64 13q-29 8 -49 19l33 112q19 -11 52.5 -21q33.5 -10 78.5 -10q41 0 71 26.5q30 26.5 30 83.5q0 49 -27.5 73.5q-27.5 24.5 -96.5 26.5q-11 0 -15 0.5q-4 0.5 -17 0.5z" />
-<glyph unicode="&#1177;" horiz-adv-x="354" d="M85 208v89h48q27 0 44 16q17 16 17 39q0 50 -62 50q-30 0 -53 -8q-23 -8 -37 -17l-27 95q26 15 68 25.5q42 10.5 87 10.5q143 0 143 -124q0 -37 -16 -69.5q-16 -32.5 -48 -46.5l0 -4q42 -12 61 -42q19 -30 19 -81q0 -51 -27.5 -90.5q-27.5 -39.5 -87.5 -53.5l-12 -172h-82l-16 168q-29 4 -51 11.5q-22 7.5 -39 18.5l24 97q19 -11 44.5 -17.5q25.5 -6.5 54.5 -6.5q73 0 73 59q0 25 -18.5 39q-18.5 14 -68.5 14z" />
-<glyph unicode="&#1178;" horiz-adv-x="534" d="M198 300h-27v-300h-126v700h126v-311l25 12l147 299h142l-160 -295l-47 -37l48 -38l120 -214h83v-241h-89l-12 125l-71 0z" />
-<glyph unicode="&#1179;" horiz-adv-x="440" d="M189 207h-27v-207h-119v500h119v-213l24 14l84 199h128l-91 -192l-44 -39l48 -39l53 -121h70v-223h-88l-13 114l-55 0z" />
-<glyph unicode="&#1180;" horiz-adv-x="604" d="M216 527h83v-125l19 2l120 296h135l-130 -294l-47 -38l47 -39l153 -329h-145l-130 299h-22v-127h-83v127h-45v-299h-126v700h126v-310l45 4z" />
-<glyph unicode="&#1181;" horiz-adv-x="491" d="M195 411h65v-112l18 2l65 199h125l-72 -193l-45 -38l47 -38l83 -231h-130l-69 207h-22v-118h-65v118h-33v-207h-119v500h119v-213l33 4z" />
-<glyph unicode="&#1182;" horiz-adv-x="579" d="M1 640h105v60h126v-60h73v-85h-73v-166l44 14l132 297h138l-144 -294l-58 -38l53 -39l174 -329h-153l-148 300h-38v-300h-126v544l-105 0z" />
-<glyph unicode="&#1183;" horiz-adv-x="419" d="M-15 626h66v74h119v-74h126v-79h-126v-260l24 14l83 199h129l-92 -198l-43 -34l47 -34l102 -234h-134l-88 207h-28v-207h-119v547l-66 0z" />
-<glyph unicode="&#1184;" horiz-adv-x="604" d="M131 584h-131v116h257v-311l25 12l147 299h142l-160 -295l-47 -37l47 -38l185 -330h-153l-159 300h-27v-300h-126l0 563z" />
-<glyph unicode="&#1185;" horiz-adv-x="453" d="M204 287l25 13l84 200h127l-90 -190l-45 -38l47 -39l102 -233h-134l-88 207h-28v-207h-119v391h-90v109l209 0z" />
-<glyph unicode="&#1186;" horiz-adv-x="575" d="M362 296h-191v-296h-126v700h126v-288h191v288h126v-584h73v-241h-89l-12 125l-98 0z" />
-<glyph unicode="&#1187;" horiz-adv-x="472" d="M282 199h-120v-199h-119v500h119v-192h120v192h119v-391h64v-223h-88l-13 114l-82 0z" />
-<glyph unicode="&#1188;" horiz-adv-x="697" d="M705 584h-217v-584h-126v296h-191v-296h-126v700h126v-288h191v288l343 0z" />
-<glyph unicode="&#1189;" horiz-adv-x="546" d="M551 391h-150v-391h-119v199h-120v-199h-119v500h119v-192h120v192l269 0z" />
-<glyph unicode="&#1190;" horiz-adv-x="791" d="M479 233v-233h-126v584h-182v-584h-126v700h434v-325q14 6 42 14q28 8 65 8q36 0 68 -11q32 -11 57 -39.5q25 -28.5 39.5 -78q14.5 -49.5 14.5 -125.5q0 -65 -10 -115q-10 -50 -33 -84.5q-23 -34.5 -61 -52.5q-38 -18 -94 -18q-41 0 -52 4l0 111q6 -2 18 -2q12 0 25 0q38 0 56.5 36.5q18.5 36.5 18.5 115.5q0 41 -6 68.5q-6 27.5 -17.5 44q-11.5 16.5 -28 23.5q-16.5 7 -36.5 7q-17 0 -37 -6.5q-20 -6.5 -29 -12.5z" />
-<glyph unicode="&#1191;" horiz-adv-x="677" d="M397 0h-119v391h-116v-391h-119v500h354v-240q14 6 39 13q25 7 63 7q30 0 57.5 -10q27.5 -10 49 -36.5q21.5 -26.5 34 -72q12.5 -45.5 12.5 -116.5q0 -65 -9.5 -113q-9.5 -48 -31.5 -79.5q-22 -31.5 -58 -47.5q-36 -16 -90 -16q-21 0 -32 1.5q-11 1.5 -18 3.5l0 106q6 -1 18 -1.5q12 -0.5 25 -0.5q37 0 55 33.5q18 33.5 18 108.5q0 38 -5 63q-5 25 -15 40q-10 15 -23.5 21.5q-13.5 6.5 -29.5 6.5q-17 0 -33.5 -5q-16.5 -5 -25.5 -10z" />
-<glyph unicode="&#1192;" horiz-adv-x="742" d="M295 598q-64 0 -99 -58.5q-35 -58.5 -35 -183.5q0 -61 13 -108.5q13 -47.5 34.5 -79.5q21.5 -32 49.5 -49q28 -17 57 -17q10 0 21 1q11 1 17 4q-35 31 -60.5 99q-25.5 68 -25.5 161q0 156 57 234.5q57 78.5 159 78.5q55 0 94 -21q39 -21 64 -58.5q25 -37.5 36.5 -89.5q11.5 -52 11.5 -113q0 -57 -10.5 -105q-10.5 -48 -27 -86q-16.5 -38 -36 -64.5q-19.5 -26.5 -37.5 -39.5q5 -1 11 -1q6 0 11 0q22 0 44 7.5q22 7.5 37 20.5l39 -101q-43 -43 -126 -43q-34 0 -71 11.5q-37 11.5 -60 36.5q-29 -23 -64 -35.5q-35 -12.5 -84 -12.5q-140 0 -213 95.5q-73 95.5 -73 269.5q0 181 65 272q65 91 201 91zM399 371q0 -31 5 -63.5q5 -32.5 14.5 -62q9.5 -29.5 24 -55q14.5 -25.5 34.5 -43.5q17 16 31.5 41q14.5 25 25.5 56.5q11 31.5 17 69q6 37.5 6 78.5q0 36 -3.5 67.5q-3.5 31.5 -12 55q-8.5 23.5 -23.5 36.5q-15 13 -37 13q-38 0 -60 -47.5t-22 -145.5z" />
-<glyph unicode="&#1193;" horiz-adv-x="598" d="M226 408q-42 -4 -60.5 -42q-18.5 -38 -18.5 -113q0 -75 27.5 -117.5q27.5 -42.5 72.5 -42.5q8 0 17 1.5q9 1.5 14 6.5q-20 20 -36 65.5q-16 45.5 -16 103.5q0 42 8.5 83q8.5 41 28.5 74q20 33 53 53q33 20 82 20q47 0 79 -17q32 -17 51.5 -45.5q19.5 -28.5 27.5 -66q8 -37.5 8 -79.5q0 -34 -7 -65.5q-7 -31.5 -18 -58q-11 -26.5 -25 -46.5q-14 -20 -28 -31q17 -8 39 -3q22 5 36 19l25 -86q-16 -16 -41 -25q-25 -9 -60 -9q-36 0 -62.5 11q-26.5 11 -43.5 30q-27 -23 -61.5 -32q-34.5 -9 -72.5 -9q-55 0 -96.5 18.5q-41.5 18.5 -69 52.5q-27.5 34 -41.5 83q-14 49 -14 109q0 58 10.5 105.5q10.5 47.5 34.5 82q24 34.5 62.5 54.5q38.5 20 94.5 22zM341 268q0 -45 12.5 -83.5q12.5 -38.5 35.5 -62.5q24 21 38 65q14 44 14 98q0 51 -11.5 80q-11.5 29 -35.5 29q-32 0 -42.5 -34t-10.5 -92z" />
-<glyph unicode="&#1194;" horiz-adv-x="457" d="M442 28q-18 -15 -45.5 -24.5q-27.5 -9.5 -57.5 -13.5l-11 -165h-82l-15 166q-44 8 -81 32q-37 24 -64 67.5q-27 43.5 -42 107.5q-15 64 -15 153q0 106 22.5 176q22.5 70 59 111.5q36.5 41.5 83.5 58.5q47 17 95 17q49 0 85.5 -8q36.5 -8 59.5 -18l-25 -111q-19 10 -44.5 15.5q-25.5 5.5 -60.5 5.5q-69 0 -106 -60q-37 -60 -37 -188q0 -55 8.5 -100.5q8.5 -45.5 27 -78.5q18.5 -33 47 -51q28.5 -18 68.5 -18q35 0 60 9.5q25 9.5 45 22.5z" />
-<glyph unicode="&#1195;" horiz-adv-x="350" d="M338 27q-30 -24 -73 -33l-11 -169h-82l-16 168q-71 18 -101 85.5q-30 67.5 -30 171.5q0 131 47 197q47 66 138 66q45 0 73.5 -8q28.5 -8 50.5 -20l-28 -99q-18 9 -34.5 13.5q-16.5 4.5 -39.5 4.5q-42 0 -63 -36.5q-21 -36.5 -21 -117.5q0 -68 21.5 -111q21.5 -43 68.5 -43q25 0 42.5 6.5q17.5 6.5 32.5 16.5z" />
-<glyph unicode="&#1196;" horiz-adv-x="474" d="M174 584h-166v116h458v-116h-166v-468h73v-241h-89l-12 125l-98 0z" />
-<glyph unicode="&#1197;" horiz-adv-x="345" d="M113 391h-112v109h343v-109h-112v-282h70v-223h-88l-13 114l-88 0z" />
-<glyph unicode="&#1198;" horiz-adv-x="495" d="M184 260l-188 440h150l97 -265l10 -76h5l11 78l95 263h135l-189 -439v-261l-126 0z" />
-<glyph unicode="&#1199;" horiz-adv-x="408" d="M-9 500h139l69 -290l13 -100h4l10 101l62 289h129l-148 -501v-199h-119l0 199z" />
-<glyph unicode="&#1200;" horiz-adv-x="495" d="M56 292h114l-174 408h150l97 -265l10 -76h5l11 78l95 263h135l-176 -408h115v-86h-128v-206h-126v206l-128 0z" />
-<glyph unicode="&#1201;" horiz-adv-x="408" d="M53 0h96l-158 500h139l69 -290l13 -100h4l10 101l62 289h129l-148 -500h95v-79h-95v-121h-119v121l-97 0z" />
-<glyph unicode="&#1202;" horiz-adv-x="558" d="M177 356l-155 344h152l81 -200l19 -76l18 76l85 200h136l-160 -337l114 -247h86v-241h-89l-12 125h-78l-94 215l-21 78l-20 -78l-94 -215l-139 0z" />
-<glyph unicode="&#1203;" horiz-adv-x="455" d="M133 256l-119 244h140l51 -118l19 -64l21 64l52 118h129l-120 -240l74 -151h70v-223h-88l-13 114h-50l-61 130l-22 71l-23 -71l-61 -130l-128 0z" />
-<glyph unicode="&#1204;" horiz-adv-x="692" d="M679 -125h-89l-13 125h-403v584h-166v116h399v-116h-107v-468h180v584h126v-584l73 0z" />
-<glyph unicode="&#1205;" horiz-adv-x="538" d="M527 -114h-88l-12 114h-314v391h-112v109h306v-109h-75v-282h116v391h119v-391l60 0z" />
-<glyph unicode="&#1206;" horiz-adv-x="545" d="M160 700v-230q0 -62 18 -88.5q18 -26.5 59 -26.5q29 0 54.5 9q25.5 9 40.5 26l0 310h126v-584h73v-241h-89l-12 125h-98v282q-20 -14 -55.5 -26.5q-35.5 -12.5 -83.5 -12.5q-33 0 -62 9.5q-29 9.5 -50.5 31q-21.5 21.5 -34 57q-12.5 35.5 -12.5 88.5l0 271z" />
-<glyph unicode="&#1207;" horiz-adv-x="453" d="M143 500v-134q0 -53 9.5 -76.5q9.5 -23.5 41.5 -23.5q22 0 37.5 6.5q15.5 6.5 25.5 14.5l0 213h119v-391h68v-223h-88l-13 114h-86v194q-12 -10 -37 -22q-25 -12 -67 -12q-30 0 -54 7.5q-24 7.5 -40.5 26.5q-16.5 19 -25.5 50q-9 31 -9 78l0 178z" />
-<glyph unicode="&#1208;" horiz-adv-x="543" d="M226 244q-7 -1 -13 -1q-6 0 -12 0q-77 0 -122 43q-45 43 -45 144v270h126v-229q0 -56 14.5 -83q14.5 -27 51.5 -32l0 121h84v-114q39 9 62 26l0 311h126v-700h-126v283q-11 -7 -26.5 -14q-15.5 -7 -35.5 -12l0 -135l-84 0z" />
-<glyph unicode="&#1209;" horiz-adv-x="456" d="M189 159q-8 -1 -14.5 -1q-6.5 0 -14.5 0q-33 0 -58.5 8q-25.5 8 -43 28q-17.5 20 -26.5 53q-9 33 -9 83v170h119v-126q0 -51 10 -77.5q10 -26.5 37 -32.5l0 122h66v-117q27 6 39 18l0 213h119v-500h-119v194q-12 -9 -39 -20l0 -115l-66 0z" />
-<glyph unicode="&#1210;" horiz-adv-x="506" d="M344 0v227q0 60 -17 89.5q-17 29.5 -60 29.5q-29 0 -54.5 -9q-25.5 -9 -41.5 -25l0 -312h-126v700h126v-282q21 14 57 27q36 13 86 13q35 0 64 -10q29 -10 49.5 -33q20.5 -23 31.5 -59.5q11 -36.5 11 -89.5l0 -266z" />
-<glyph unicode="&#1211;" horiz-adv-x="449" d="M291 0v302q0 54 -12.5 78q-12.5 24 -45.5 24q-24 0 -44 -17q-20 -17 -27 -43l0 -344h-119v700h119v-245h3q20 26 48.5 42q28.5 16 71.5 16q31 0 54 -9q23 -9 39 -30q16 -21 24 -56.5q8 -35.5 8 -89.5l0 -328z" />
-<glyph unicode="&#1212;" horiz-adv-x="667" d="M300 296q4 -91 38 -142.5q34 -51.5 108 -51.5q36 0 67 13q31 13 60 35l32 -109q-79 -55 -183 -55q-115 0 -179 78.5q-64 78.5 -69 231.5l-25 0q-42 0 -71 11.5q-29 11.5 -46 31q-17 19.5 -24.5 45.5q-7.5 26 -7.5 56q1 24 7 46q6 22 15 36l103 0q-10 -16 -14 -33.5q-4 -17.5 -4 -32.5q0 -9 2.5 -18.5q2.5 -9.5 9.5 -17q7 -7.5 20 -11.5q13 -4 35 -2q3 70 19.5 127q16.5 57 46 97q29.5 40 71.5 61.5q42 21.5 98 21.5q114 0 168.5 -74.5q54.5 -74.5 54.5 -218.5q0 -58 -9 -125zM509 405q1 11 1.5 20.5q0.5 9.5 0.5 20.5q0 31 -5.5 60q-5.5 29 -17.5 51q-12 22 -30.5 35q-18.5 13 -45.5 13q-56 0 -83 -54q-27 -54 -30 -146z" />
-<glyph unicode="&#1213;" horiz-adv-x="543" d="M503 37q-25 -22 -68 -36q-43 -14 -90 -14q-95 0 -142.5 62q-47.5 62 -54.5 168l-8 0q-66 0 -102.5 30q-36.5 30 -34.5 97q0 29 8 48q8 19 20 35l99 0q-13 -12 -21.5 -33.5q-8.5 -21.5 -8.5 -47.5q0 -19 10.5 -33q10.5 -14 39.5 -13q11 106 62.5 160q51.5 54 136.5 54q32 0 62 -9.5q30 -9.5 53.5 -32q23.5 -22.5 38 -60q14.5 -37.5 14.5 -94.5q0 -22 -2.5 -47q-2.5 -25 -7.5 -54l-243 0q2 -62 26 -95q24 -33 77 -33q32 0 58.5 10q26.5 10 40.5 21zM347 412q-38 0 -57 -30.5q-19 -30.5 -22 -85.5l138 0q3 57 -12 86.5t-47 29.5z" />
-<glyph unicode="&#1214;" horiz-adv-x="667" d="M300 296q4 -91 38 -142.5q34 -51.5 108 -51.5q36 0 67 13q31 13 60 35l32 -109q-58 -40 -130 -51l-11 -165h-82l-15 166q-90 17 -139 94q-49 77 -54 211l-25 0q-42 0 -71 11.5q-29 11.5 -46 31q-17 19.5 -24.5 45.5q-7.5 26 -7.5 56q1 24 7 46q6 22 15 36l103 0q-10 -16 -14 -33.5q-4 -17.5 -4 -32.5q0 -9 2.5 -18.5q2.5 -9.5 9.5 -17q7 -7.5 20 -11.5q13 -4 35 -2q3 70 19.5 127q16.5 57 46 97q29.5 40 71.5 61.5q42 21.5 98 21.5q114 0 168.5 -74.5q54.5 -74.5 54.5 -218.5q0 -58 -9 -125zM509 405q1 11 1.5 20.5q0.5 9.5 0.5 20.5q0 31 -5.5 60q-5.5 29 -17.5 51q-12 22 -30.5 35q-18.5 13 -45.5 13q-56 0 -83 -54q-27 -54 -30 -146z" />
-<glyph unicode="&#1215;" horiz-adv-x="543" d="M503 37q-17 -15 -44 -27q-27 -12 -59 -17l-11 -168h-82l-16 168q-69 17 -103.5 75q-34.5 58 -39.5 149l-8 0q-66 0 -102.5 30q-36.5 30 -34.5 97q0 29 8 48q8 19 20 35l99 0q-13 -12 -21.5 -33.5q-8.5 -21.5 -8.5 -47.5q0 -19 10.5 -33q10.5 -14 39.5 -13q11 106 62.5 160q51.5 54 136.5 54q32 0 62 -9.5q30 -9.5 53.5 -32q23.5 -22.5 38 -60q14.5 -37.5 14.5 -94.5q0 -22 -2.5 -47q-2.5 -25 -7.5 -54l-243 0q2 -62 26 -95q24 -33 77 -33q32 0 58.5 10q26.5 10 40.5 21zM347 412q-38 0 -57 -30.5q-19 -30.5 -22 -85.5l138 0q3 57 -12 86.5t-47 29.5z" />
-<glyph unicode="&#1216;" horiz-adv-x="238" d="M56 700h126v-700l-126 0z" />
-<glyph unicode="&#1219;" horiz-adv-x="512" d="M340 77q0 53 -6.5 94.5q-6.5 41.5 -22 70q-15.5 28.5 -42.5 43.5q-27 15 -68 15h-30v-300h-126v700h126v-311l25 12l147 299h142l-154 -280l-51 -40h39q39 -12 67 -33q28 -21 45.5 -54.5q17.5 -33.5 26 -82q8.5 -48.5 8.5 -115.5v-27q0 -141 -48 -207.5q-48 -66.5 -133 -66.5q-12 0 -25 1q-13 1 -27 4l0 107q60 -5 83.5 35.5t23.5 135.5z" />
-<glyph unicode="&#1220;" horiz-adv-x="418" d="M274 32q0 85 -20.5 126q-20.5 41 -64.5 46l-27 0v-204h-119v500h119v-217l24 12l84 205h128l-92 -199l-40 -32l33 -3q30 -10 48.5 -32q18.5 -22 28.5 -51.5q10 -29.5 13.5 -65q3.5 -35.5 3.5 -72.5v-17q0 -122 -38.5 -178.5q-38.5 -56.5 -111.5 -56.5q-29 0 -58 7l0 105q45 -8 67 23t22 104z" />
-<glyph unicode="&#1221;" horiz-adv-x="547" d="M345 584h-106q-7 -190 -19 -317.5q-12 -127.5 -46 -194.5q-12 -24 -27.5 -39.5q-15.5 -15.5 -31 -24q-15.5 -8.5 -31.5 -12q-16 -3.5 -29 -3.5q-21 0 -37 3.5q-16 3.5 -30 10.5v114q32 -7 50 -0.5q18 6.5 30 32.5q12 22 21 64.5q9 42.5 15.5 109.5q6.5 67 10 159q3.5 92 5.5 214l351 0v-591h81v-31l-80 -208h-88l37 130l-76 0z" />
-<glyph unicode="&#1222;" horiz-adv-x="466" d="M271 391h-72q-4 -87 -11 -160q-7 -73 -22 -125.5q-15 -52.5 -40.5 -82q-25.5 -29.5 -66.5 -29.5q-25 0 -43 3.5q-18 3.5 -31 11.5l14 104q24 -8 40.5 1q16.5 9 27.5 49.5q11 40.5 17.5 120.5q6.5 80 9.5 216l296 0v-391h78v-31l-80 -192h-88l37 114l-66 0z" />
-<glyph unicode="&#1223;" horiz-adv-x="533" d="M488 0v-30q0 -177 -134 -177q-25 0 -55 6l0 106q21 -2 33.5 3.5q12.5 5.5 19 18q6.5 12.5 8.5 31q2 18.5 2 42.5v296h-191v-296h-126v700h126v-288h191v288l126 0z" />
-<glyph unicode="&#1224;" horiz-adv-x="444" d="M282 199h-120v-199h-119v500h119v-192h120v192h119v-531q0 -84 -31 -129.5q-31 -45.5 -100 -45.5q-13 0 -27.5 1.5q-14.5 1.5 -30.5 5.5l0 103q43 -4 56.5 20.5q13.5 24.5 13.5 75.5z" />
-<glyph unicode="&#1225;" horiz-adv-x="567" d="M362 296h-191v-296h-126v700h126v-288h191v288h126v-591h84v-31l-80 -208h-88l37 130l-79 0z" />
-<glyph unicode="&#1226;" horiz-adv-x="482" d="M282 199h-120v-199h-119v500h119v-192h120v192h119v-391h83v-31l-80 -192h-88l37 114l-71 0z" />
-<glyph unicode="&#1227;" horiz-adv-x="503" d="M160 700v-230q0 -62 18 -88.5q18 -26.5 59 -26.5q29 0 54.5 9q25.5 9 40.5 26l0 310h126v-700h-97l-12 -125h-89v241h72v166q-20 -14 -55.5 -26.5q-35.5 -12.5 -83.5 -12.5q-33 0 -62 9.5q-29 9.5 -50.5 31q-21.5 21.5 -34 57q-12.5 35.5 -12.5 88.5l0 271z" />
-<glyph unicode="&#1228;" horiz-adv-x="420" d="M258 208q-13 -11 -37.5 -21.5q-24.5 -10.5 -67.5 -10.5q-60 0 -94.5 37.5q-34.5 37.5 -34.5 127.5v159h119v-110q0 -57 10 -82.5q10 -25.5 42 -25.5q21 0 37 5.5q16 5.5 26 13.5l0 199h119v-500h-100l-12 -114h-88v208l81 0z" />
-<glyph unicode="&#1229;" horiz-adv-x="705" d="M493 361l14 134h-5l-37 -120l-114 -246h-42l-121 247l-37 121h-6l19 -135v-362h-119v700h121l146 -303l24 -87h4l23 89l137 301h119v-591h92v-31l-80 -208h-88l37 130l-87 0z" />
-<glyph unicode="&#1230;" horiz-adv-x="593" d="M399 230l7 103h-5l-30 -93l-73 -150h-45l-80 150l-31 93h-6l13 -103v-230h-106v500h125l91 -184l20 -67h4l21 69l84 182h124v-391h83v-31l-80 -192h-88l37 114l-65 0z" />
-<glyph unicode="&#1231;" horiz-adv-x="217" d="M49 700h119v-700l-119 0z" />
-<glyph unicode="&#1232;" horiz-adv-x="501" d="M328 158h-165l-41 -158h-125l203 705h99l204 -705h-132zM190 262h116l-40 163l-16 110h-4l-17 -111zM197 874q6 -61 56 -61q50 0 56 60l102 -15q-8 -65 -49 -94q-41 -29 -110 -29q-35 0 -64 6q-29 6 -51 20q-22 14 -36 37q-14 23 -18 58z" />
-<glyph unicode="&#1233;" horiz-adv-x="413" d="M44 470q30 18 75 29q45 11 102 11q85 0 118.5 -44q33.5 -44 33.5 -125q0 -47 -2.5 -92.5q-2.5 -45.5 -3.5 -89q-1 -43.5 1.5 -84q2.5 -40.5 13.5 -76.5l-97 0l-19 61h-4q-16 -29 -45 -48q-29 -19 -73 -19q-59 0 -93 39.5q-34 39.5 -34 105.5q0 90 64 128q64 38 173 32q5 58 -7.5 84q-12.5 26 -53.5 26q-30 0 -62 -7q-32 -7 -57 -20zM187 95q27 0 44 13.5q17 13.5 25 29.5l0 83q-23 3 -44 1q-21 -2 -37 -9q-16 -7 -25.5 -20.5q-9.5 -13.5 -9.5 -34.5q0 -31 12.5 -47q12.5 -16 34.5 -16zt0 0zM163 704q3 -38 16 -55q13 -17 33 -17q21 0 33.5 16.5q12.5 16.5 17.5 54.5l90 -22q-11 -68 -50.5 -99.5q-39.5 -31.5 -93.5 -31.5q-26 0 -51 7q-25 7 -45 22.5q-20 15.5 -33.5 40.5q-13.5 25 -17.5 62z" />
-<glyph unicode="&#1234;" horiz-adv-x="501" d="M328 158h-165l-41 -158h-125l203 705h99l204 -705h-132zM190 262h116l-40 163l-16 110h-4l-17 -111zM91 798q0 26 15.5 42q15.5 16 53.5 16q35 0 50.5 -16q15.5 -16 15.5 -42q0 -26 -15.5 -41.5q-15.5 -15.5 -50.5 -15.5q-38 0 -53.5 15.5q-15.5 15.5 -15.5 41.5zt0 0zM273 798q0 26 15.5 42q15.5 16 51.5 16q37 0 52.5 -16q15.5 -16 15.5 -42q0 -26 -15.5 -41.5q-15.5 -15.5 -52.5 -15.5q-36 0 -51.5 15.5t-15.5 41.5z" />
-<glyph unicode="&#1235;" horiz-adv-x="413" d="M44 470q30 18 75 29q45 11 102 11q85 0 118.5 -44q33.5 -44 33.5 -125q0 -47 -2.5 -92.5q-2.5 -45.5 -3.5 -89q-1 -43.5 1.5 -84q2.5 -40.5 13.5 -76.5l-97 0l-19 61h-4q-16 -29 -45 -48q-29 -19 -73 -19q-59 0 -93 39.5q-34 39.5 -34 105.5q0 90 64 128q64 38 173 32q5 58 -7.5 84q-12.5 26 -53.5 26q-30 0 -62 -7q-32 -7 -57 -20zM187 95q27 0 44 13.5q17 13.5 25 29.5l0 83q-23 3 -44 1q-21 -2 -37 -9q-16 -7 -25.5 -20.5q-9.5 -13.5 -9.5 -34.5q0 -31 12.5 -47q12.5 -16 34.5 -16zt0 0zM51 631q0 32 17.5 50q17.5 18 46.5 18q28 0 45 -18q17 -18 17 -50q0 -30 -17 -47.5q-17 -17.5 -45 -17.5q-29 0 -46.5 17.5q-17.5 17.5 -17.5 47.5zt0 0zM237 631q0 32 17 50q17 18 46 18q29 0 46 -18q17 -18 17 -50q0 -30 -17 -47.5q-17 -17.5 -46 -17.5q-29 0 -46 17.5t-17 47.5z" />
-<glyph unicode="&#1236;" horiz-adv-x="717" d="M326 522l-26 -97l-65 -148h96v245zM331 173h-144l-79 -173h-132l350 700h355v-116h-224v-172h203v-116h-203v-180h228v-116l-354 0z" />
-<glyph unicode="&#1237;" horiz-adv-x="653" d="M257 223q-23 2 -44 0.5q-21 -1.5 -37.5 -9q-16.5 -7.5 -26 -21q-9.5 -13.5 -9.5 -35.5q0 -28 12 -44q12 -16 35 -16q28 0 45 13.5q17 13.5 25 31.5zM287 68q-21 -34 -53.5 -55q-32.5 -21 -87.5 -21q-60 0 -94.5 41q-34.5 41 -34.5 106q0 46 16.5 77.5q16.5 31.5 47 51q30.5 19.5 74.5 27.5q44 8 98 5q1 9 1 16.5q0 7.5 0 15.5q0 39 -13 56.5q-13 17.5 -47 17.5q-31 0 -63 -9q-32 -9 -57 -23l-31 90q32 21 78 33.5q46 12.5 96 12.5q42 0 68.5 -13q26.5 -13 43.5 -41q20 29 52 43.5q32 14.5 72 14.5q32 0 62.5 -9.5q30.5 -9.5 54 -32.5q23.5 -23 37.5 -61q14 -38 14 -95q0 -22 -2.5 -47q-2.5 -25 -7.5 -53l-241 0q2 -66 25 -96.5q23 -30.5 75 -30.5q31 0 57.5 9.5q26.5 9.5 40.5 20.5l39 -83q-25 -20 -67 -34.5q-42 -14.5 -93 -14.5q-109 0 -155 81zM510 295q3 54 -12 85.5q-15 31.5 -48 31.5q-38 0 -56 -30q-18 -30 -21 -87z" />
-<glyph unicode="&#1238;" horiz-adv-x="430" d="M45 700h350v-116h-224v-172h203v-116h-203v-180h228v-116h-354zM169 874q6 -61 56 -61q50 0 56 60l102 -15q-8 -65 -49 -94q-41 -29 -110 -29q-35 0 -64 6q-29 6 -51 20q-22 14 -36 37q-14 23 -18 58z" />
-<glyph unicode="&#1239;" horiz-adv-x="428" d="M381 37q-25 -22 -68 -36q-43 -14 -90 -14q-52 0 -89.5 18q-37.5 18 -61.5 52q-24 34 -35.5 82.5q-11.5 48.5 -11.5 110.5q0 135 53.5 199.5q53.5 64.5 148.5 64.5q32 0 62 -9.5q30 -9.5 53.5 -32q23.5 -22.5 38 -60q14.5 -37.5 14.5 -94.5q0 -22 -2.5 -47q-2.5 -25 -7.5 -54l-243 0q2 -62 26 -95q24 -33 77 -33q32 0 58.5 10q26.5 10 40.5 21zM225 412q-38 0 -57 -30.5q-19 -30.5 -22 -85.5l138 0q3 57 -12 86.5q-15 29.5 -47 29.5zt0 0zM171 704q3 -38 16 -55q13 -17 33 -17q21 0 33.5 16.5q12.5 16.5 17.5 54.5l90 -22q-11 -68 -50.5 -99.5q-39.5 -31.5 -93.5 -31.5q-26 0 -51 7q-25 7 -45 22.5q-20 15.5 -33.5 40.5q-13.5 25 -17.5 62z" />
-<glyph unicode="&#1240;" horiz-adv-x="521" d="M160 301q-2 -12 -2 -24.5q0 -12.5 0 -23.5q0 -33 5.5 -61.5q5.5 -28.5 17.5 -50q12 -21.5 30 -34q18 -12.5 44 -12.5q55 0 79.5 50.5q24.5 50.5 24.5 155.5zM359 407q-2 44 -10 79.5q-8 35.5 -23.5 60q-15.5 24.5 -40.5 38q-25 13.5 -62 13.5q-42 0 -74.5 -14.5q-32.5 -14.5 -52.5 -27.5l-28 110q14 9 33.5 17.5q19.5 8.5 43 15.5q23.5 7 48.5 11q25 4 51 4q61 0 107 -20.5q46 -20.5 77 -65q31 -44.5 47 -113.5q16 -69 16 -165q0 -85 -13 -152.5q-13 -67.5 -42 -114.5q-29 -47 -74.5 -72q-45.5 -25 -111.5 -25q-58 0 -99.5 21q-41.5 21 -68.5 59.5q-27 38.5 -40 93q-13 54.5 -13 122.5q0 59 9 125z" />
-<glyph unicode="&#1241;" horiz-adv-x="420" d="M39 465q26 21 69.5 34.5q43.5 13.5 92.5 13.5q100 0 147 -69.5q47 -69.5 47 -193.5q0 -133 -52.5 -198q-52.5 -65 -142.5 -65q-33 0 -64.5 10.5q-31.5 10.5 -56 34.5q-24.5 24 -39 63q-14.5 39 -14.5 97q0 22 2.5 47q2.5 25 7.5 53l240 0q-4 63 -26 91q-22 28 -74 28q-32 0 -57 -11q-25 -11 -39 -22zM200 89q37 0 57 33q20 33 19 91l-140 0q-4 -55 13 -89.5t51 -34.5z" />
-<glyph unicode="&#1242;" horiz-adv-x="521" d="M160 301q-2 -12 -2 -24.5q0 -12.5 0 -23.5q0 -33 5.5 -61.5q5.5 -28.5 17.5 -50q12 -21.5 30 -34q18 -12.5 44 -12.5q55 0 79.5 50.5q24.5 50.5 24.5 155.5zM359 407q-2 44 -10 79.5q-8 35.5 -23.5 60q-15.5 24.5 -40.5 38q-25 13.5 -62 13.5q-42 0 -74.5 -14.5q-32.5 -14.5 -52.5 -27.5l-28 110q14 9 33.5 17.5q19.5 8.5 43 15.5q23.5 7 48.5 11q25 4 51 4q61 0 107 -20.5q46 -20.5 77 -65q31 -44.5 47 -113.5q16 -69 16 -165q0 -85 -13 -152.5q-13 -67.5 -42 -114.5q-29 -47 -74.5 -72q-45.5 -25 -111.5 -25q-58 0 -99.5 21q-41.5 21 -68.5 59.5q-27 38.5 -40 93q-13 54.5 -13 122.5q0 59 9 125zM94 798q0 26 15.5 42q15.5 16 53.5 16q35 0 50.5 -16q15.5 -16 15.5 -42q0 -26 -15.5 -41.5q-15.5 -15.5 -50.5 -15.5q-38 0 -53.5 15.5q-15.5 15.5 -15.5 41.5zt0 0zM276 798q0 26 15.5 42q15.5 16 51.5 16q37 0 52.5 -16q15.5 -16 15.5 -42q0 -26 -15.5 -41.5q-15.5 -15.5 -52.5 -15.5q-36 0 -51.5 15.5t-15.5 41.5z" />
-<glyph unicode="&#1243;" horiz-adv-x="420" d="M39 465q26 21 69.5 34.5q43.5 13.5 92.5 13.5q100 0 147 -69.5q47 -69.5 47 -193.5q0 -133 -52.5 -198q-52.5 -65 -142.5 -65q-33 0 -64.5 10.5q-31.5 10.5 -56 34.5q-24.5 24 -39 63q-14.5 39 -14.5 97q0 22 2.5 47q2.5 25 7.5 53l240 0q-4 63 -26 91q-22 28 -74 28q-32 0 -57 -11q-25 -11 -39 -22zM200 89q37 0 57 33q20 33 19 91l-140 0q-4 -55 13 -89.5q17 -34.5 51 -34.5zt0 0zM48 631q0 32 17.5 50q17.5 18 46.5 18q28 0 45 -18q17 -18 17 -50q0 -30 -17 -47.5q-17 -17.5 -45 -17.5q-29 0 -46.5 17.5q-17.5 17.5 -17.5 47.5zt0 0zM234 631q0 32 17 50q17 18 46 18q29 0 46 -18q17 -18 17 -50q0 -30 -17 -47.5q-17 -17.5 -46 -17.5q-29 0 -46 17.5t-17 47.5z" />
-<glyph unicode="&#1244;" horiz-adv-x="701" d="M287 700h119v-313l29 14l105 299h141l-125 -308l-40 -33l49 -41l141 -318h-152l-117 305h-31v-305h-119v317l-28 -14l-118 -303h-146l140 308l46 38l-45 36l-130 318h146l104 -301h31zM191 798q0 26 15.5 42q15.5 16 53.5 16q35 0 50.5 -16q15.5 -16 15.5 -42q0 -26 -15.5 -41.5q-15.5 -15.5 -50.5 -15.5q-38 0 -53.5 15.5q-15.5 15.5 -15.5 41.5zt0 0zM373 798q0 26 15.5 42q15.5 16 51.5 16q37 0 52.5 -16q15.5 -16 15.5 -42q0 -26 -15.5 -41.5q-15.5 -15.5 -52.5 -15.5q-36 0 -51.5 15.5t-15.5 41.5z" />
-<glyph unicode="&#1245;" horiz-adv-x="582" d="M201 203l-73 -203h-132l100 229l29 30l-42 38l-78 203h126l67 -203h34v203h113v-213l30 14l67 199h126l-83 -203l-33 -32l42 -40l92 -225h-135l-73 207h-33v-207h-113v217zM135 631q0 32 17.5 50q17.5 18 46.5 18q28 0 45 -18q17 -18 17 -50q0 -30 -17 -47.5q-17 -17.5 -45 -17.5q-29 0 -46.5 17.5q-17.5 17.5 -17.5 47.5zt0 0zM321 631q0 32 17 50q17 18 46 18q29 0 46 -18q17 -18 17 -50q0 -30 -17 -47.5q-17 -17.5 -46 -17.5q-29 0 -46 17.5t-17 47.5z" />
-<glyph unicode="&#1246;" horiz-adv-x="435" d="M98 313v102h24q15 0 37 1q22 1 35 6q27 8 46 30q19 22 19 57q0 49 -23.5 68q-23.5 19 -65.5 19q-34 0 -63.5 -10.5q-29.5 -10.5 -46.5 -21.5l-32 109q10 6 28 13q18 7 40.5 13q22.5 6 48 9.5q25.5 3.5 51.5 3.5q38 0 73.5 -7.5q35.5 -7.5 62.5 -27q27 -19.5 43 -53.5q16 -34 16 -87q0 -51 -21.5 -95q-21.5 -44 -69.5 -65l0 -6q52 -14 80.5 -56q28.5 -42 28.5 -114q0 -57 -18.5 -98q-18.5 -41 -50 -67q-31.5 -26 -72.5 -38q-41 -12 -85 -12q-54 0 -99 9.5q-45 9.5 -72 25.5l33 112q19 -11 52.5 -21q33.5 -10 78.5 -10q41 0 71 26.5q30 26.5 30 83.5q0 49 -27.5 73.5q-27.5 24.5 -96.5 26.5q-11 0 -15 0.5q-4 0.5 -17 0.5zM41 798q0 26 15.5 42q15.5 16 53.5 16q35 0 50.5 -16q15.5 -16 15.5 -42q0 -26 -15.5 -41.5q-15.5 -15.5 -50.5 -15.5q-38 0 -53.5 15.5q-15.5 15.5 -15.5 41.5zt0 0zM223 798q0 26 15.5 42q15.5 16 51.5 16q37 0 52.5 -16q15.5 -16 15.5 -42q0 -26 -15.5 -41.5q-15.5 -15.5 -52.5 -15.5q-36 0 -51.5 15.5t-15.5 41.5z" />
-<glyph unicode="&#1247;" horiz-adv-x="354" d="M85 208v89h48q27 0 44 16q17 16 17 39q0 50 -62 50q-30 0 -53 -8q-23 -8 -37 -17l-27 95q26 15 68 25.5q42 10.5 87 10.5q143 0 143 -124q0 -37 -16 -69.5q-16 -32.5 -48 -46.5l0 -4q42 -12 61 -42q19 -30 19 -81q0 -32 -10.5 -59.5q-10.5 -27.5 -32.5 -47.5q-22 -20 -55.5 -32q-33.5 -12 -79.5 -12q-45 0 -79.5 9.5q-34.5 9.5 -57.5 23.5l24 97q19 -11 44.5 -17.5q25.5 -6.5 54.5 -6.5q73 0 73 59q0 25 -18.5 39q-18.5 14 -68.5 14zM5 631q0 32 17.5 50q17.5 18 46.5 18q28 0 45 -18q17 -18 17 -50q0 -30 -17 -47.5q-17 -17.5 -45 -17.5q-29 0 -46.5 17.5q-17.5 17.5 -17.5 47.5zt0 0zM191 631q0 32 17 50q17 18 46 18q29 0 46 -18q17 -18 17 -50q0 -30 -17 -47.5q-17 -17.5 -46 -17.5q-29 0 -46 17.5t-17 47.5z" />
-<glyph unicode="&#1248;" horiz-adv-x="452" d="M180 102q51 0 80 30.5q29 30.5 29 84.5q0 56 -32.5 80q-32.5 24 -101.5 24h-66v56l125 181l39 43l-50 -12h-165v111h358v-72l-135 -194l-40 -32v-5l40 12q34 -1 63 -13q29 -12 50.5 -35.5q21.5 -23.5 34 -59q12.5 -35.5 12.5 -84.5q0 -109 -60 -170q-60 -61 -169 -61q-19 0 -41.5 2q-22.5 2 -45 6.5q-22.5 4.5 -43.5 11.5q-21 7 -37 17l30 112q24 -14 57.5 -23.5t67.5 -9.5z" />
-<glyph unicode="&#1249;" horiz-adv-x="403" d="M152 -105q49 0 79.5 30q30.5 30 30.5 82q0 115 -132 115h-50v51l96 180l46 48l-62 -7h-140v106h335v-67l-111 -188l-39 -29v-2l30 3q27 -2 53 -15q26 -13 46.5 -37.5q20.5 -24.5 33.5 -60q13 -35.5 13 -81.5q0 -55 -16.5 -98.5q-16.5 -43.5 -46.5 -73.5q-30 -30 -72.5 -46q-42.5 -16 -95.5 -16q-35 0 -73.5 8q-38.5 8 -68.5 28l40 99q21 -13 46.5 -21t57.5 -8z" />
-<glyph unicode="&#1250;" horiz-adv-x="547" d="M376 373l10 99h-5l-38 -106l-199 -366h-99v700h126v-366l-11 -102h5l40 109l199 359h98v-700h-126zM133 856h289v-89l-289 0z" />
-<glyph unicode="&#1251;" horiz-adv-x="450" d="M288 218l9 81h-3l-37 -85l-134 -214h-80v500h119v-227l-9 -78h3l36 83l135 222h80v-500h-119zM91 658h272v-91l-272 0z" />
-<glyph unicode="&#1252;" horiz-adv-x="547" d="M376 373l10 99h-5l-38 -106l-199 -366h-99v700h126v-366l-11 -102h5l40 109l199 359h98v-700h-126zM117 798q0 26 15.5 42q15.5 16 53.5 16q35 0 50.5 -16q15.5 -16 15.5 -42q0 -26 -15.5 -41.5q-15.5 -15.5 -50.5 -15.5q-38 0 -53.5 15.5q-15.5 15.5 -15.5 41.5zt0 0zM299 798q0 26 15.5 42q15.5 16 51.5 16q37 0 52.5 -16q15.5 -16 15.5 -42q0 -26 -15.5 -41.5q-15.5 -15.5 -52.5 -15.5q-36 0 -51.5 15.5t-15.5 41.5z" />
-<glyph unicode="&#1253;" horiz-adv-x="450" d="M288 218l9 81h-3l-37 -85l-134 -214h-80v500h119v-227l-9 -78h3l36 83l135 222h80v-500h-119zM75 631q0 32 17.5 50q17.5 18 46.5 18q28 0 45 -18q17 -18 17 -50q0 -30 -17 -47.5q-17 -17.5 -45 -17.5q-29 0 -46.5 17.5q-17.5 17.5 -17.5 47.5zt0 0zM261 631q0 32 17 50q17 18 46 18q29 0 46 -18q17 -18 17 -50q0 -30 -17 -47.5q-17 -17.5 -46 -17.5q-29 0 -46 17.5t-17 47.5z" />
-<glyph unicode="&#1254;" horiz-adv-x="553" d="M29 350q0 178 61 271q61 93 186 93q65 0 112 -25.5q47 -25.5 77 -73q30 -47.5 44.5 -115q14.5 -67.5 14.5 -150.5q0 -178 -62.5 -271q-62.5 -93 -185.5 -93q-66 0 -112.5 25.5q-46.5 25.5 -76.5 73q-30 47.5 -44 115q-14 67.5 -14 150.5zt0 0zM161 350q0 -53 6 -98.5q6 -45.5 20 -78.5q14 -33 35.5 -52q21.5 -19 53.5 -19q58 0 87 59q29 59 29 189q0 51 -6 96.5q-6 45.5 -19.5 79q-13.5 33.5 -35.5 53q-22 19.5 -55 19.5q-115 0 -115 -248zt0 0zM118 798q0 26 15.5 42q15.5 16 53.5 16q35 0 50.5 -16q15.5 -16 15.5 -42q0 -26 -15.5 -41.5q-15.5 -15.5 -50.5 -15.5q-38 0 -53.5 15.5q-15.5 15.5 -15.5 41.5zt0 0zM300 798q0 26 15.5 42q15.5 16 51.5 16q37 0 52.5 -16q15.5 -16 15.5 -42q0 -26 -15.5 -41.5q-15.5 -15.5 -52.5 -15.5q-36 0 -51.5 15.5t-15.5 41.5z" />
-<glyph unicode="&#1255;" horiz-adv-x="445" d="M25 250q0 133 52 198q52 65 145 65q100 0 149 -66q49 -66 49 -197q0 -134 -52 -198.5q-52 -64.5 -146 -64.5q-197 0 -197 263zt0 0zM148 250q0 -75 17 -116q17 -41 57 -41q38 0 56.5 35.5q18.5 35.5 18.5 121.5q0 77 -17 117q-17 40 -58 40q-35 0 -54.5 -35.5q-19.5 -35.5 -19.5 -121.5zt0 0zM66 631q0 32 17.5 50q17.5 18 46.5 18q28 0 45 -18q17 -18 17 -50q0 -30 -17 -47.5q-17 -17.5 -45 -17.5q-29 0 -46.5 17.5q-17.5 17.5 -17.5 47.5zt0 0zM252 631q0 32 17 50q17 18 46 18q29 0 46 -18q17 -18 17 -50q0 -30 -17 -47.5q-17 -17.5 -46 -17.5q-29 0 -46 17.5t-17 47.5z" />
-<glyph unicode="&#1256;" horiz-adv-x="552" d="M29 350q0 178 61 271q61 93 186 93q65 0 112 -25.5q47 -25.5 77 -73q30 -47.5 44 -115q14 -67.5 14 -150.5q0 -178 -62 -271q-62 -93 -185 -93q-66 0 -112.5 25.5q-46.5 25.5 -76.5 73q-30 47.5 -44 115q-14 67.5 -14 150.5zt0 0zM276 102q52 0 81.5 47q29.5 47 34.5 150l-231 0q3 -44 10.5 -80q7.5 -36 21.5 -62q14 -26 34.5 -40.5q20.5 -14.5 48.5 -14.5zt0 0zM391 405q-3 42 -10.5 77q-7.5 35 -21.5 61q-14 26 -34.5 40.5q-20.5 14.5 -48.5 14.5q-103 0 -115 -193z" />
-<glyph unicode="&#1257;" horiz-adv-x="445" d="M25 250q0 129 51.5 196.5q51.5 67.5 145.5 67.5q50 0 87 -18.5q37 -18.5 62 -53q25 -34.5 37 -83q12 -48.5 12 -109.5q0 -130 -52 -197q-52 -67 -146 -67q-50 0 -87 18.5q-37 18.5 -61.5 53q-24.5 34.5 -36.5 83q-12 48.5 -12 109.5zt0 0zM297 289q-5 66 -24 92.5q-19 26.5 -50 26.5q-29 0 -50 -25.5q-21 -25.5 -25 -93.5zM148 208q3 -61 24 -88.5q21 -27.5 50 -27.5q29 0 50 24.5q21 24.5 25 91.5z" />
-<glyph unicode="&#1258;" horiz-adv-x="552" d="M29 350q0 178 61 271q61 93 186 93q65 0 112 -25.5q47 -25.5 77 -73q30 -47.5 44 -115q14 -67.5 14 -150.5q0 -178 -62 -271q-62 -93 -185 -93q-66 0 -112.5 25.5q-46.5 25.5 -76.5 73q-30 47.5 -44 115q-14 67.5 -14 150.5zt0 0zM276 102q52 0 81.5 47q29.5 47 34.5 150l-231 0q3 -44 10.5 -80q7.5 -36 21.5 -62q14 -26 34.5 -40.5q20.5 -14.5 48.5 -14.5zt0 0zM391 405q-3 42 -10.5 77q-7.5 35 -21.5 61q-14 26 -34.5 40.5q-20.5 14.5 -48.5 14.5q-103 0 -115 -193zM118 798q0 26 15.5 42q15.5 16 53.5 16q35 0 50.5 -16q15.5 -16 15.5 -42q0 -26 -15.5 -41.5q-15.5 -15.5 -50.5 -15.5q-38 0 -53.5 15.5q-15.5 15.5 -15.5 41.5zt0 0zM300 798q0 26 15.5 42q15.5 16 51.5 16q37 0 52.5 -16q15.5 -16 15.5 -42q0 -26 -15.5 -41.5q-15.5 -15.5 -52.5 -15.5q-36 0 -51.5 15.5t-15.5 41.5z" />
-<glyph unicode="&#1259;" horiz-adv-x="445" d="M25 250q0 129 51.5 196.5q51.5 67.5 145.5 67.5q50 0 87 -18.5q37 -18.5 62 -53q25 -34.5 37 -83q12 -48.5 12 -109.5q0 -130 -52 -197q-52 -67 -146 -67q-50 0 -87 18.5q-37 18.5 -61.5 53q-24.5 34.5 -36.5 83q-12 48.5 -12 109.5zt0 0zM297 289q-5 66 -24 92.5q-19 26.5 -50 26.5q-29 0 -50 -25.5q-21 -25.5 -25 -93.5zM148 208q3 -61 24 -88.5q21 -27.5 50 -27.5q29 0 50 24.5q21 24.5 25 91.5zM66 631q0 32 17.5 50q17.5 18 46.5 18q28 0 45 -18q17 -18 17 -50q0 -30 -17 -47.5q-17 -17.5 -45 -17.5q-29 0 -46.5 17.5q-17.5 17.5 -17.5 47.5zt0 0zM252 631q0 32 17 50q17 18 46 18q29 0 46 -18q17 -18 17 -50q0 -30 -17 -47.5q-17 -17.5 -46 -17.5q-29 0 -46 17.5t-17 47.5z" />
-<glyph unicode="&#1260;" horiz-adv-x="477" d="M105 407h211q-2 42 -10.5 77q-8.5 35 -26 60.5q-17.5 25.5 -43 39.5q-25.5 14 -61.5 14q-43 0 -75.5 -10.5q-32.5 -10.5 -55.5 -24.5l-29 109q32 19 78 30.5q46 11.5 89 11.5q60 0 109.5 -19.5q49.5 -19.5 84 -62.5q34.5 -43 53.5 -112.5q19 -69.5 19 -168.5q0 -106 -22 -176.5q-22 -70.5 -60.5 -112.5q-38.5 -42 -89 -59q-50.5 -17 -107.5 -17q-49 0 -90.5 10q-41.5 10 -64.5 22l33 112q20 -10 53 -19q33 -9 74 -9q66 0 102 48.5q36 48.5 41 152.5l-212 0zM35 798q0 26 15.5 42q15.5 16 53.5 16q35 0 50.5 -16q15.5 -16 15.5 -42q0 -26 -15.5 -41.5q-15.5 -15.5 -50.5 -15.5q-38 0 -53.5 15.5q-15.5 15.5 -15.5 41.5zt0 0zM217 798q0 26 15.5 42q15.5 16 51.5 16q37 0 52.5 -16q15.5 -16 15.5 -42q0 -26 -15.5 -41.5q-15.5 -15.5 -52.5 -15.5q-36 0 -51.5 15.5t-15.5 41.5z" />
-<glyph unicode="&#1261;" horiz-adv-x="377" d="M85 298h144q-3 54 -22.5 82q-19.5 28 -63.5 28q-31 0 -54 -6.5q-23 -6.5 -40 -17.5l-32 90q54 40 149 40q92 0 139 -65q47 -65 47 -199q0 -134 -51.5 -198.5q-51.5 -64.5 -145.5 -64.5q-37 0 -76.5 7.5q-39.5 7.5 -63.5 21.5l28 99q41 -22 94 -22q49 0 69.5 27.5q20.5 27.5 22.5 87.5l-144 0zM7 631q0 32 17.5 50q17.5 18 46.5 18q28 0 45 -18q17 -18 17 -50q0 -30 -17 -47.5q-17 -17.5 -45 -17.5q-29 0 -46.5 17.5q-17.5 17.5 -17.5 47.5zt0 0zM193 631q0 32 17 50q17 18 46 18q29 0 46 -18q17 -18 17 -50q0 -30 -17 -47.5q-17 -17.5 -46 -17.5q-29 0 -46 17.5t-17 47.5z" />
-<glyph unicode="&#1262;" horiz-adv-x="475" d="M246 395l15 -93h5l13 96l79 302h130l-156 -484q-18 -57 -34 -98.5q-16 -41.5 -35 -69.5q-19 -28 -42.5 -41.5q-23.5 -13.5 -57.5 -13.5q-27 0 -46.5 5q-19.5 5 -40.5 19l31 106q14 -8 25 -10.5q11 -2.5 23 -3.5q37 0 51 76l-216 515h149zM105 856h289v-89l-289 0z" />
-<glyph unicode="&#1263;" horiz-adv-x="400" d="M203 219l13 -78h5l9 79l58 280h122l-125 -451q-17 -59 -32 -106q-15 -47 -32 -80q-17 -33 -38.5 -50.5q-21.5 -17.5 -51.5 -17.5q-21 0 -40.5 3.5q-19.5 3.5 -33.5 11.5l20 102q13 -5 26.5 -4.5q13.5 0.5 25 10q11.5 9.5 20.5 29.5q9 20 15 53l-174 500h143zM68 658h272v-91l-272 0z" />
-<glyph unicode="&#1264;" horiz-adv-x="475" d="M246 395l15 -93h5l13 96l79 302h130l-156 -484q-18 -57 -34 -98.5q-16 -41.5 -35 -69.5q-19 -28 -42.5 -41.5q-23.5 -13.5 -57.5 -13.5q-27 0 -46.5 5q-19.5 5 -40.5 19l31 106q14 -8 25 -10.5q11 -2.5 23 -3.5q37 0 51 76l-216 515h149zM96 798q0 26 15.5 42q15.5 16 53.5 16q35 0 50.5 -16q15.5 -16 15.5 -42q0 -26 -15.5 -41.5q-15.5 -15.5 -50.5 -15.5q-38 0 -53.5 15.5q-15.5 15.5 -15.5 41.5zt0 0zM278 798q0 26 15.5 42q15.5 16 51.5 16q37 0 52.5 -16q15.5 -16 15.5 -42q0 -26 -15.5 -41.5q-15.5 -15.5 -52.5 -15.5q-36 0 -51.5 15.5t-15.5 41.5z" />
-<glyph unicode="&#1265;" horiz-adv-x="400" d="M203 219l13 -78h5l9 79l58 280h122l-125 -451q-17 -59 -32 -106q-15 -47 -32 -80q-17 -33 -38.5 -50.5q-21.5 -17.5 -51.5 -17.5q-21 0 -40.5 3.5q-19.5 3.5 -33.5 11.5l20 102q13 -5 26.5 -4.5q13.5 0.5 25 10q11.5 9.5 20.5 29.5q9 20 15 53l-174 500h143zM52 631q0 32 17.5 50q17.5 18 46.5 18q28 0 45 -18q17 -18 17 -50q0 -30 -17 -47.5q-17 -17.5 -45 -17.5q-29 0 -46.5 17.5q-17.5 17.5 -17.5 47.5zt0 0zM238 631q0 32 17 50q17 18 46 18q29 0 46 -18q17 -18 17 -50q0 -30 -17 -47.5q-17 -17.5 -46 -17.5q-29 0 -46 17.5t-17 47.5z" />
-<glyph unicode="&#1266;" horiz-adv-x="475" d="M246 395l15 -93h5l13 96l79 302h130l-156 -484q-18 -57 -34 -98.5q-16 -41.5 -35 -69.5q-19 -28 -42.5 -41.5q-23.5 -13.5 -57.5 -13.5q-27 0 -46.5 5q-19.5 5 -40.5 19l31 106q14 -8 25 -10.5q11 -2.5 23 -3.5q37 0 51 76l-216 515h149zM162 850h120v-16l-82 -93h-86zM334 850h125v-16l-118 -93l-86 0z" />
-<glyph unicode="&#1267;" horiz-adv-x="400" d="M203 219l13 -78h5l9 79l58 280h122l-125 -451q-17 -59 -32 -106q-15 -47 -32 -80q-17 -33 -38.5 -50.5q-21.5 -17.5 -51.5 -17.5q-21 0 -40.5 3.5q-19.5 3.5 -33.5 11.5l20 102q13 -5 26.5 -4.5q13.5 0.5 25 10q11.5 9.5 20.5 29.5q9 20 15 53l-174 500h143zM129 700h108v-16l-64 -113h-73zM283 700h114v-16l-99 -113l-75 0z" />
-<glyph unicode="&#1268;" horiz-adv-x="503" d="M160 700v-230q0 -62 18 -88.5q18 -26.5 59 -26.5q29 0 54.5 9q25.5 9 40.5 26l0 310h126v-700h-126v282q-20 -14 -55.5 -26.5q-35.5 -12.5 -83.5 -12.5q-33 0 -62 9.5q-29 9.5 -50.5 31q-21.5 21.5 -34 57q-12.5 35.5 -12.5 88.5v271zM92 798q0 26 15.5 42q15.5 16 53.5 16q35 0 50.5 -16q15.5 -16 15.5 -42q0 -26 -15.5 -41.5q-15.5 -15.5 -50.5 -15.5q-38 0 -53.5 15.5q-15.5 15.5 -15.5 41.5zt0 0zM274 798q0 26 15.5 42q15.5 16 51.5 16q37 0 52.5 -16q15.5 -16 15.5 -42q0 -26 -15.5 -41.5q-15.5 -15.5 -52.5 -15.5q-36 0 -51.5 15.5t-15.5 41.5z" />
-<glyph unicode="&#1269;" horiz-adv-x="419" d="M143 500v-134q0 -53 9.5 -76.5q9.5 -23.5 41.5 -23.5q22 0 37.5 6.5q15.5 6.5 25.5 14.5l0 213h119v-500h-119v194q-12 -10 -37 -22q-25 -12 -67 -12q-30 0 -54 7.5q-24 7.5 -40.5 26.5q-16.5 19 -25.5 50q-9 31 -9 78v178zM45 631q0 32 17.5 50q17.5 18 46.5 18q28 0 45 -18q17 -18 17 -50q0 -30 -17 -47.5q-17 -17.5 -45 -17.5q-29 0 -46.5 17.5q-17.5 17.5 -17.5 47.5zt0 0zM231 631q0 32 17 50q17 18 46 18q29 0 46 -18q17 -18 17 -50q0 -30 -17 -47.5q-17 -17.5 -46 -17.5q-29 0 -46 17.5t-17 47.5z" />
-<glyph unicode="&#1270;" horiz-adv-x="381" d="M388 584h-217v-468h76v-241h-89l-12 125h-101v700l343 0z" />
-<glyph unicode="&#1271;" horiz-adv-x="310" d="M43 500h271v-109h-152v-282h75v-223h-88l-13 114l-93 0z" />
-<glyph unicode="&#1272;" horiz-adv-x="668" d="M497 700h126v-700h-126zM45 700h126v-251q9 2 30 5q21 3 41 3q42 0 78.5 -9.5q36.5 -9.5 63.5 -34.5q27 -25 43 -68.5q16 -43.5 16 -110.5q0 -123 -56 -183.5q-56 -60.5 -180 -60.5q-12 0 -31 0.5q-19 0.5 -41.5 2q-22.5 1.5 -46 5q-23.5 3.5 -43.5 8.5zM171 112q8 -3 20 -4.5q12 -1.5 25 -1.5q45 0 70 27.5q25 27.5 25 94.5q0 34 -7 56q-7 22 -19 35q-12 13 -29.5 17.5q-17.5 4.5 -38.5 4.5q-10 0 -25 -3q-15 -3 -21 -6zM176 798q0 26 15.5 42q15.5 16 53.5 16q35 0 50.5 -16q15.5 -16 15.5 -42q0 -26 -15.5 -41.5q-15.5 -15.5 -50.5 -15.5q-38 0 -53.5 15.5q-15.5 15.5 -15.5 41.5zt0 0zM358 798q0 26 15.5 42q15.5 16 51.5 16q37 0 52.5 -16q15.5 -16 15.5 -42q0 -26 -15.5 -41.5q-15.5 -15.5 -52.5 -15.5q-36 0 -51.5 15.5t-15.5 41.5z" />
-<glyph unicode="&#1273;" horiz-adv-x="591" d="M162 105q21 -6 43 -6q32 0 45.5 16.5q13.5 16.5 13.5 54.5q0 35 -13 52q-13 17 -45 17q-23 0 -44 -6zM162 322q20 4 41 5.5q21 1.5 38 1.5q41 0 69 -11.5q28 -11.5 45 -32.5q17 -21 24.5 -49.5q7.5 -28.5 7.5 -61.5q0 -45 -10 -79q-10 -34 -33 -56.5q-23 -22.5 -60 -34q-37 -11.5 -92 -11.5q-48 0 -84.5 2q-36.5 2 -64.5 5l0 500h119zM430 500h119v-500h-119zM139 631q0 32 17.5 50q17.5 18 46.5 18q28 0 45 -18q17 -18 17 -50q0 -30 -17 -47.5q-17 -17.5 -45 -17.5q-29 0 -46.5 17.5q-17.5 17.5 -17.5 47.5zt0 0zM325 631q0 32 17 50q17 18 46 18q29 0 46 -18q17 -18 17 -50q0 -30 -17 -47.5q-17 -17.5 -46 -17.5q-29 0 -46 17.5t-17 47.5z" />
-<glyph unicode="&#1276;" horiz-adv-x="525" d="M368 -22q0 34 -11.5 66.5q-11.5 32.5 -22.5 55.5l-53 115l-23 78l-19 -78l-94 -215h-139l171 356l-154 344h151l81 -200l19 -76l18 76l85 200h136l-160 -337l102 -213q20 -39 31.5 -84.5q11.5 -45.5 11.5 -88.5q0 -90 -35.5 -137q-35.5 -47 -107.5 -47q-29 0 -58 7l0 106q22 -2 36 3q14 5 21.5 15q7.5 10 10.5 24t3 30z" />
-<glyph unicode="&#1277;" horiz-adv-x="438" d="M377 128q17 -32 29 -74q12 -42 12 -79q0 -88 -33 -134.5q-33 -46.5 -103 -46.5q-29 0 -58 7l0 102q43 -5 59 13.5q16 18.5 16 51.5q0 27 -9.5 54q-9.5 27 -20.5 47l-27 51l-25 76l-24 -75l-59 -121h-130l129 256l-119 244h142l48 -107l21 -77l22 77l51 107h130l-120 -240z" />
-<glyph unicode="&#1296;" horiz-adv-x="442" d="M318 313q-13 0 -17.5 0q-4.5 0 -14.5 -1q-70 -2 -97.5 -29.5q-27.5 -27.5 -27.5 -75.5q0 -52 29 -78.5q29 -26.5 75 -26.5q39 0 72.5 11.5q33.5 11.5 51.5 21.5l34 -102q-24 -17 -71.5 -32q-47.5 -15 -104.5 -15q-102 0 -160 50.5q-58 50.5 -58 159.5q0 73 28.5 116q28.5 43 79.5 57l0 6q-46 21 -68 65.5q-22 44.5 -22 96.5q0 49 16.5 82.5q16.5 33.5 44 54q27.5 20.5 64 29.5q36.5 9 76.5 9q26 0 50.5 -3.5q24.5 -3.5 46 -9.5q21.5 -6 38.5 -13q17 -7 27 -13l-32 -105q-20 11 -49.5 19.5q-29.5 8.5 -59.5 8.5q-44 0 -67 -19q-23 -19 -23 -63q0 -40 21 -62q21 -22 48 -29q13 -5 34 -7q21 -2 36 -2h22l0 -101z" />
-<glyph unicode="&#1297;" horiz-adv-x="355" d="M230 210q-50 0 -68 -14.5q-18 -14.5 -18 -40.5q0 -26 18 -43q18 -17 53 -17q31 0 56.5 7q25.5 7 42.5 18l24 -97q-21 -14 -55.5 -24q-34.5 -10 -81.5 -10q-46 0 -79 11q-33 11 -54.5 31.5q-21.5 20.5 -32 48q-10.5 27.5 -10.5 60.5q0 51 19.5 80q19.5 29 60.5 43l0 4q-33 14 -49 46q-16 32 -16 67q0 64 39 96.5q39 32.5 105 32.5q52 0 90 -9.5q38 -9.5 64 -24.5v-96q-43 9 -66 16.5q-23 7.5 -52 7.5q-60 0 -60 -53q0 -23 17 -38q17 -15 44 -15h48l0 -87z" />
-<glyph unicode="&#1298;" horiz-adv-x="523" d="M478 -30q0 -177 -134 -177q-25 0 -55 6l0 106q21 -2 33.5 3q12.5 5 19 17q6.5 12 8.5 30.5q2 18.5 2 44.5v584h-108q-3 -95 -7.5 -174q-4.5 -79 -11.5 -142.5q-7 -63.5 -18.5 -112.5q-11.5 -49 -28.5 -83q-12 -24 -26.5 -39.5q-14.5 -15.5 -30.5 -24q-16 -8.5 -31.5 -12q-15.5 -3.5 -28.5 -3.5q-21 0 -40 4q-19 4 -33 11l18 113q17 -6 35 -1.5q18 4.5 34 33.5q12 22 21 64.5q9 42.5 15.5 109.5q6.5 67 10 159q3.5 92 5.5 214l351 0z" />
-<glyph unicode="&#1299;" horiz-adv-x="433" d="M271 391h-72q-4 -87 -11 -160q-7 -73 -22 -125.5q-15 -52.5 -40.5 -82q-25.5 -29.5 -66.5 -29.5q-25 0 -43 3.5q-18 3.5 -31 11.5l14 104q24 -8 40.5 1q16.5 9 27.5 49.5q11 40.5 17.5 120.5q6.5 80 9.5 216l296 0v-500v-31q0 -84 -31 -129.5q-31 -45.5 -100 -45.5q-13 0 -27.5 1.5q-14.5 1.5 -30.5 5.5l0 103q43 -4 56 21q13 22 14 75z" />
-<glyph unicode="&#1308;" horiz-adv-x="717" d="M205 315l10 -126h4l11 128l94 383h88l91 -385l11 -126h4l11 128l62 383h128l-157 -705h-89l-98 386l-13 109h-5l-12 -110l-98 -385h-93l-156 705l139 0z" />
-<glyph unicode="&#1309;" horiz-adv-x="596" d="M352 500l70 -256l12 -83h4l10 84l47 255h108l-123 -505h-94l-75 279l-8 64h-6l-7 -66l-72 -277h-97l-128 505h129l54 -251l9 -89h4l13 90l61 250z" />
-<glyph unicode="&#1316;" horiz-adv-x="566" d="M353 584h-182v-584h-126v700h434v-584h73v-241h-89l-12 125l-98 0z" />
-<glyph unicode="&#1317;" horiz-adv-x="475" d="M278 391h-116v-391h-119v500h354v-391h67v-223h-88l-13 114l-85 0z" />
-<glyph unicode="&#1318;" horiz-adv-x="554" d="M344 227q0 60 -17 89.5q-17 29.5 -60 29.5q-29 0 -54.5 -9q-25.5 -9 -41.5 -25l0 -312h-126v700h126v-282q21 14 57 27q36 13 86 13q35 0 64 -10q29 -10 49.5 -33q20.5 -23 31.5 -59.5q11 -36.5 11 -89.5v-150h73v-241h-89l-12 125l-98 0z" />
-<glyph unicode="&#1319;" horiz-adv-x="486" d="M291 302q0 54 -12.5 78q-12.5 24 -45.5 24q-24 0 -44 -17q-20 -17 -27 -43l0 -344h-119v700h119v-245h3q20 26 48.5 42q28.5 16 71.5 16q31 0 54 -9q23 -9 39 -30q16 -21 24 -56.5q8 -35.5 8 -89.5v-219h64v-223h-88l-13 114l-82 0z" />
-<glyph unicode="&#7728;" horiz-adv-x="519" d="M198 300h-27v-300h-126v700h126v-311l25 12l147 299h142l-160 -295l-47 -37l48 -38l185 -330h-154zM260 870h143v-30l-132 -88l-93 0z" />
-<glyph unicode="&#7729;" horiz-adv-x="412" d="M190 207h-28v-207h-119v700h119v-413l24 14l83 199h129l-92 -198l-43 -34l47 -34l102 -234h-134zM252 720h119v-30l-94 -124l-67 0z" />
-<glyph unicode="&#7742;" horiz-adv-x="664" d="M493 361l14 134h-5l-37 -120l-114 -246h-42l-121 247l-37 121h-6l19 -135v-362h-119v700h121l146 -303l24 -87h4l23 89l137 301h119v-700h-126zM347 870h143v-30l-132 -88l-93 0z" />
-<glyph unicode="&#7743;" horiz-adv-x="663" d="M274 0v291q0 63 -10 87.5q-10 24.5 -39 24.5q-24 0 -39.5 -15.5q-15.5 -15.5 -23.5 -37.5l0 -350h-119v500h92l15 -60h3q19 31 47.5 51.5q28.5 20.5 75.5 20.5q39 0 63.5 -17q24.5 -17 38.5 -60q19 36 50 56.5q31 20.5 73 20.5q33 0 56.5 -8.5q23.5 -8.5 38 -29.5q14.5 -21 21.5 -57.5q7 -36.5 7 -92.5v-324h-119v304q0 51 -9 75q-9 24 -40 24q-25 0 -40.5 -14.5q-15.5 -14.5 -22.5 -39.5l0 -349zM329 720h119v-30l-94 -124l-67 0z" />
-<glyph unicode="&#7764;" horiz-adv-x="477" d="M45 693q36 8 79 12.5q43 4.5 86 4.5q46 0 90.5 -8.5q44.5 -8.5 79.5 -33.5q35 -25 57 -70.5q22 -45.5 22 -118.5q0 -66 -18.5 -112q-18.5 -46 -49.5 -75q-31 -29 -71.5 -42q-40.5 -13 -83.5 -13q-4 0 -13 0q-9 0 -19 0.5q-10 0.5 -19.5 1.5q-9.5 1 -13.5 2l0 -241h-126zM171 354q6 -2 22.5 -3.5q16.5 -1.5 22.5 -1.5q22 0 42 6q20 6 35.5 20.5q15.5 14.5 24.5 40q9 25.5 9 64.5q0 33 -8.5 56q-8.5 23 -23 36.5q-14.5 13.5 -33.5 19.5q-19 6 -40 6q-31 0 -51 -5zM238 870h143v-30l-132 -88l-93 0z" />
-<glyph unicode="&#7765;" horiz-adv-x="447" d="M43 500h89l12 -57h3q23 36 51.5 52.5q28.5 16.5 70.5 16.5q76 0 114.5 -57.5q38.5 -57.5 38.5 -191.5q0 -134 -48 -205.5q-48 -71.5 -139 -71.5q-24 0 -41 4q-17 4 -32 13l0 -203h-119zM162 112q10 -10 22.5 -15q12.5 -5 32.5 -5q40 0 61 39.5q21 39.5 21 134.5q0 71 -16 105.5q-16 34.5 -53 34.5q-50 0 -68 -59zM212 720h119v-30l-94 -124l-67 0z" />
-<glyph unicode="&#7838;" horiz-adv-x="564" d="M346 579q-15 14 -39 21.5q-24 7.5 -52 7.5q-27 0 -43.5 -10q-16.5 -10 -25.5 -29.5q-9 -19.5 -12 -47q-3 -27.5 -3 -62.5v-459h-126v496q0 110 50 163.5q50 53.5 160 53.5q84 0 140.5 -25q56.5 -25 101.5 -64l-106 -187l-30 -29v-5l30 7q64 -5 103 -53q39 -48 39 -140q0 -108 -51 -169.5q-51 -61.5 -152 -61.5q-12 0 -30 2q-18 2 -35.5 6q-17.5 4 -33 9q-15.5 5 -22.5 10l23 107q16 -9 41 -14q25 -5 44 -5q41 0 62.5 29.5q21.5 29.5 21.5 81.5q0 57 -29 84q-29 27 -92 27h-38l0 77z" />
-<glyph unicode="&#8209;" horiz-adv-x="298" d="M45 344h208v-114l-208 0z" />
-<glyph unicode="&#8211;" horiz-adv-x="543" d="M87 343h368v-109l-368 0z" />
-<glyph unicode="&#8212;" horiz-adv-x="676" d="M88 343h499v-109l-499 0z" />
-<glyph unicode="&#8216;" horiz-adv-x="188" d="M159 618q0 -29 -17.5 -46.5q-17.5 -17.5 -43.5 -17.5q-32 0 -50.5 23.5q-18.5 23.5 -18.5 61.5q0 39 11 67q11 28 27 47q16 19 32.5 30q16.5 11 28.5 16l32 -51q-17 -9 -30.5 -27q-13.5 -18 -15.5 -39q17 -2 31 -18.5t14 -45.5z" />
-<glyph unicode="&#8217;" horiz-adv-x="188" d="M29 644q0 29 17.5 47q17.5 18 43.5 18q32 0 50.5 -22.5q18.5 -22.5 18.5 -62.5q0 -39 -11 -66q-11 -27 -26.5 -45.5q-15.5 -18.5 -32.5 -29.5q-17 -11 -29 -16l-30 50q17 8 30 24q13 16 15 39q-17 1 -31.5 16.5t-14.5 47.5z" />
-<glyph unicode="&#8218;" horiz-adv-x="188" d="M29 61q0 29 17.5 47q17.5 18 43.5 18q32 0 50.5 -22.5q18.5 -22.5 18.5 -62.5q0 -39 -11 -66q-11 -27 -26.5 -45.5q-15.5 -18.5 -32.5 -29.5q-17 -11 -29 -16l-30 50q17 8 30 24q13 16 15 39q-17 1 -31.5 16.5t-14.5 47.5z" />
-<glyph unicode="&#8220;" horiz-adv-x="342" d="M312 618q0 -29 -17.5 -46.5q-17.5 -17.5 -43.5 -17.5q-32 0 -50.5 23.5q-18.5 23.5 -18.5 61.5q0 39 11 67q11 28 27 47q16 19 32.5 30q16.5 11 28.5 16l32 -51q-17 -9 -30.5 -27q-13.5 -18 -15.5 -39q17 -2 31 -18.5q14 -16.5 14 -45.5zt0 0zM159 618q0 -29 -17.5 -46.5q-17.5 -17.5 -43.5 -17.5q-32 0 -50.5 23.5q-18.5 23.5 -18.5 61.5q0 39 11 67q11 28 27 47q16 19 32.5 30q16.5 11 28.5 16l32 -51q-17 -9 -30.5 -27q-13.5 -18 -15.5 -39q17 -2 31 -18.5t14 -45.5z" />
-<glyph unicode="&#8221;" horiz-adv-x="342" d="M182 643q0 29 17.5 47q17.5 18 43.5 18q32 0 50.5 -22.5q18.5 -22.5 18.5 -62.5q0 -39 -11 -66q-11 -27 -26.5 -45.5q-15.5 -18.5 -32.5 -29.5q-17 -11 -29 -16l-30 50q17 8 30 24q13 16 15 39q-17 1 -31.5 16.5q-14.5 15.5 -14.5 47.5zt0 0zM29 643q0 29 17.5 47q17.5 18 43.5 18q32 0 50.5 -22.5q18.5 -22.5 18.5 -62.5q0 -39 -11 -66q-11 -27 -26.5 -45.5q-15.5 -18.5 -32.5 -29.5q-17 -11 -29 -16l-30 50q17 8 30 24q13 16 15 39q-17 1 -31.5 16.5t-14.5 47.5z" />
-<glyph unicode="&#8222;" horiz-adv-x="341" d="M182 61q0 29 17.5 47q17.5 18 43.5 18q32 0 50.5 -22.5q18.5 -22.5 18.5 -62.5q0 -39 -11 -66q-11 -27 -26.5 -45.5q-15.5 -18.5 -32.5 -29.5q-17 -11 -29 -16l-30 50q17 8 30 24q13 16 15 39q-17 1 -31.5 16.5q-14.5 15.5 -14.5 47.5zt0 0zM29 61q0 29 17.5 47q17.5 18 43.5 18q32 0 50.5 -22.5q18.5 -22.5 18.5 -62.5q0 -39 -11 -66q-11 -27 -26.5 -45.5q-15.5 -18.5 -32.5 -29.5q-17 -11 -29 -16l-30 50q17 8 30 24q13 16 15 39q-17 1 -31.5 16.5t-14.5 47.5z" />
-<glyph unicode="&#8224;" horiz-adv-x="424" d="M33 509h92l44 -15l-14 53v153h114v-153l-14 -53l44 15h92v-104h-93l-43 15l14 -49v-371l-14 -200h-86l-14 201v370l14 49l-44 -15l-92 0z" />
-<glyph unicode="&#8225;" horiz-adv-x="424" d="M155 375l14 45l-44 -15h-92v104h92l44 -15l-14 50v156h114v-156l-14 -50l44 15h92v-104h-93l-43 15l14 -45v-92l-14 -45l43 15h93v-104h-92l-44 15l14 -50v-114l-15 -200h-84l-15 201v113l14 50l-44 -15h-92v104h92l44 -15l-14 45z" />
-<glyph unicode="&#8226;" horiz-adv-x="372" d="M57 311q0 34 9.5 62.5q9.5 28.5 26.5 48.5q17 20 40.5 31q23.5 11 51.5 11q57 0 93.5 -39.5q36.5 -39.5 36.5 -113.5q0 -73 -36.5 -112.5q-36.5 -39.5 -93.5 -39.5q-56 0 -92 39.5t-36 112.5z" />
-<glyph unicode="&#8230;" horiz-adv-x="721" d="M538 65q0 37 19.5 56q19.5 19 51.5 19q35 0 54 -19q19 -19 19 -56q0 -36 -19.5 -56q-19.5 -20 -53.5 -20q-33 0 -52 20q-19 20 -19 56zt0 0zM292 65q0 37 19.5 56q19.5 19 51.5 19q35 0 54 -19q19 -19 19 -56q0 -36 -19.5 -56q-19.5 -20 -53.5 -20q-33 0 -52 20q-19 20 -19 56zt0 0zM45 65q0 37 19.5 56q19.5 19 51.5 19q35 0 54 -19q19 -19 19 -56q0 -36 -19.5 -56q-19.5 -20 -53.5 -20q-33 0 -52 20t-19 56z" />
-<glyph unicode="&#8240;" horiz-adv-x="1054" d="M34 542q0 46 11 78q11 32 31 52.5q20 20.5 47.5 30q27.5 9.5 60.5 9.5q33 0 60.5 -8.5q27.5 -8.5 47.5 -28.5q20 -20 31.5 -52.5q11.5 -32.5 11.5 -80.5q0 -48 -11.5 -80.5q-11.5 -32.5 -31.5 -52.5q-20 -20 -47.5 -28.5q-27.5 -8.5 -60.5 -8.5q-33 0 -60.5 8.5q-27.5 8.5 -47.5 28.5q-20 20 -31 52.5q-11 32.5 -11 80.5zt0 0zM140 542q0 -48 10.5 -67.5q10.5 -19.5 33.5 -19.5q12 0 20.5 3.5q8.5 3.5 14 13.5q5.5 10 8 27q2.5 17 2.5 43q0 51 -11 69q-11 18 -34 18q-23 0 -33.5 -18q-10.5 -18 -10.5 -69zt0 0zM380 170q0 46 11 78q11 32 31 52.5q20 20.5 47.5 30q27.5 9.5 60.5 9.5q33 0 60.5 -8.5q27.5 -8.5 47.5 -28.5q20 -20 31.5 -52.5q11.5 -32.5 11.5 -80.5q0 -48 -11.5 -80.5q-11.5 -32.5 -31.5 -52.5q-20 -20 -47.5 -28.5q-27.5 -8.5 -60.5 -8.5q-33 0 -60.5 8.5q-27.5 8.5 -47.5 28.5q-20 20 -31 52.5q-11 32.5 -11 80.5zt0 0zM486 170q0 -48 10.5 -67.5q10.5 -19.5 33.5 -19.5q12 0 20.5 3.5q8.5 3.5 14 13.5q5.5 10 8 27q2.5 17 2.5 43q0 51 -11 69q-11 18 -34 18q-23 0 -33.5 -18q-10.5 -18 -10.5 -69zt0 0zM710 170q0 46 11 78q11 32 31 52.5q20 20.5 47.5 30q27.5 9.5 60.5 9.5q33 0 60.5 -8.5q27.5 -8.5 47.5 -28.5q20 -20 31.5 -52.5q11.5 -32.5 11.5 -80.5q0 -48 -11.5 -80.5q-11.5 -32.5 -31.5 -52.5q-20 -20 -47.5 -28.5q-27.5 -8.5 -60.5 -8.5q-33 0 -60.5 8.5q-27.5 8.5 -47.5 28.5q-20 20 -31 52.5q-11 32.5 -11 80.5zt0 0zM816 170q0 -48 10.5 -67.5q10.5 -19.5 33.5 -19.5q12 0 20.5 3.5q8.5 3.5 14 13.5q5.5 10 8 27q2.5 17 2.5 43q0 51 -11 69q-11 18 -34 18q-23 0 -33.5 -18q-10.5 -18 -10.5 -69zt0 0zM575 714l70 -58l-494 -670l-71 59z" />
-<glyph unicode="&#8249;" horiz-adv-x="256" d="M22 259l131 230l73 -47l-73 -141l-39 -41l39 -36l80 -135l-75 -51z" />
-<glyph unicode="&#8250;" horiz-adv-x="256" d="M98 38l-75 51l80 135l39 36l-39 41l-73 141l73 47l131 -230z" />
-<glyph unicode="&#8260;" horiz-adv-x="154" d="M209 715l81 -39l-342 -690l-83 41z" />
-<glyph unicode="&#8321;" horiz-adv-x="353" d="M64 -5h78v168l9 46l-26 -32l-46 -31l-44 69l131 112h82v-332h70v-95l-254 0z" />
-<glyph unicode="&#8322;" horiz-adv-x="353" d="M299 204q0 -30 -7.5 -56.5q-7.5 -26.5 -19.5 -50q-12 -23.5 -28 -44.5q-16 -21 -33 -40l-39 -25v0l48 7h90v-95h-265v67q23 18 49.5 43.5q26.5 25.5 49 54q22.5 28.5 37 58q14.5 29.5 14.5 57.5q0 51 -46 51q-22 0 -41 -6.5q-19 -6.5 -34 -15.5l-29 83q29 20 63 27.5q34 7.5 63 7.5q60 0 94 -31.5t34 -91.5z" />
-<glyph unicode="&#8323;" horiz-adv-x="353" d="M144 -16q36 0 50.5 15q14.5 15 14.5 39q0 23 -15.5 36.5q-15.5 13.5 -55.5 13.5h-39v38l60 81l38 28l-50 -6h-93v91h240v-60l-70 -94l-30 -19v0l26 -1q43 -2 67.5 -31.5q24.5 -29.5 24.5 -83.5q0 -36 -12.5 -62q-12.5 -26 -33.5 -43q-21 -17 -48 -25q-27 -8 -58 -8q-32 0 -61 6.5q-29 6.5 -50 17.5v86q58 -19 95 -19z" />
-<glyph unicode="&#8324;" horiz-adv-x="352" d="M345 -20h-61v-80h-95v80h-172v64l178 281h89v-259h61zM189 150l7 55h-5l-19 -51l-38 -65l-30 -30l43 7l42 0z" />
-<glyph unicode="&#8364;" horiz-adv-x="478" d="M465 24q-26 -19 -66.5 -28q-40.5 -9 -77.5 -9q-55 0 -100.5 21q-45.5 21 -78.5 65.5q-33 44.5 -52 112.5q-6 23 -10 48l-77 0l29 91h40v25q0 17 0 33l-69 0l29 91h50q4 23 11 44q21 70 56.5 113.5q35.5 43.5 81 63q45.5 19.5 95.5 19.5q42 0 74.5 -7q32.5 -7 55.5 -16l-32 -100q-35 16 -95 16q-66 0 -105 -61q-18 -28 -28 -72l208 0l-23 -91h-196q0 -16 0 -33q0 -13 0 -25l179 0l-23 -91h-146q9 -44 27 -75q37 -65 116 -65q63 0 103 26z" />
-<glyph unicode="&#8372;" horiz-adv-x="478" d="M421 321v-91h-203q-12 -16 -21 -39q-9 -23 -9 -44q0 -26 17.5 -42.5q17.5 -16.5 59.5 -16.5q43 0 68 8q25 8 43 19l27 -92q-20 -14 -58.5 -25q-38.5 -11 -107.5 -11q-78 0 -121 35.5q-43 35.5 -43 105.5q0 34 11 62q11 28 18 40l-61 0v91zM41 379v91h204q12 16 21 38.5q9 22.5 9 45.5q0 28 -15 43.5q-15 15.5 -48 15.5q-29 0 -52.5 -7q-23.5 -7 -43.5 -19l-35 92q15 8 29 14.5q14 6.5 32 11q18 4.5 41 7q23 2.5 56 2.5q73 0 112 -33q39 -33 39 -101q0 -32 -11.5 -61.5q-11.5 -29.5 -23.5 -48.5l66 0l0 -91z" />
-<glyph unicode="&#8374;" horiz-adv-x="478" d="M20 216h67v57h-67v90h67v330q35 8 72.5 12.5q37.5 4.5 80.5 4.5q45 0 85 -9q40 -9 70 -33q30 -24 48 -66q18 -42 18 -108q0 -61 -17.5 -103q-17.5 -42 -46.5 -68.5q-29 -26.5 -66.5 -38q-37.5 -11.5 -78.5 -11.5h-51v-57h131v-91h-131v-125h-114v125h-67zM253 604q-17 0 -30.5 -1q-13.5 -1 -21.5 -4l0 -234h39q21 -1 39.5 5q18.5 6 32 20.5q13.5 14.5 21.5 38.5q8 24 8 59q0 62 -25 89t-63 27z" />
-<glyph unicode="&#8375;" horiz-adv-x="478" d="M20 216h67v57h-67v90h67v330q35 8 72.5 12.5q37.5 4.5 80.5 4.5q45 0 85 -9q40 -9 70 -33q30 -24 48 -66q18 -42 18 -108q0 -61 -17.5 -103q-17.5 -42 -46.5 -68.5q-29 -26.5 -66.5 -38q-37.5 -11.5 -78.5 -11.5h-51v-57h131v-91h-131v-125h-114v125h-67zM253 604q-17 0 -30.5 -1q-13.5 -1 -21.5 -4l0 -234h39q21 -1 39.5 5q18.5 6 32 20.5q13.5 14.5 21.5 38.5q8 24 8 59q0 62 -25 89t-63 27z" />
-<glyph unicode="&#8377;" horiz-adv-x="478" d="M20 216h67v57h-67v90h67v330q35 8 72.5 12.5q37.5 4.5 80.5 4.5q45 0 85 -9q40 -9 70 -33q30 -24 48 -66q18 -42 18 -108q0 -61 -17.5 -103q-17.5 -42 -46.5 -68.5q-29 -26.5 -66.5 -38q-37.5 -11.5 -78.5 -11.5h-51v-57h131v-91h-131v-125h-114v125h-67zM253 604q-17 0 -30.5 -1q-13.5 -1 -21.5 -4l0 -234h39q21 -1 39.5 5q18.5 6 32 20.5q13.5 14.5 21.5 38.5q8 24 8 59q0 62 -25 89t-63 27z" />
-<glyph unicode="&#8378;" horiz-adv-x="478" d="M20 216h67v57h-67v90h67v330q35 8 72.5 12.5q37.5 4.5 80.5 4.5q45 0 85 -9q40 -9 70 -33q30 -24 48 -66q18 -42 18 -108q0 -61 -17.5 -103q-17.5 -42 -46.5 -68.5q-29 -26.5 -66.5 -38q-37.5 -11.5 -78.5 -11.5h-51v-57h131v-91h-131v-125h-114v125h-67zM253 604q-17 0 -30.5 -1q-13.5 -1 -21.5 -4l0 -234h39q21 -1 39.5 5q18.5 6 32 20.5q13.5 14.5 21.5 38.5q8 24 8 59q0 62 -25 89t-63 27z" />
-<glyph unicode="&#8379;" horiz-adv-x="478" d="M20 216h67v57h-67v90h67v330q35 8 72.5 12.5q37.5 4.5 80.5 4.5q45 0 85 -9q40 -9 70 -33q30 -24 48 -66q18 -42 18 -108q0 -61 -17.5 -103q-17.5 -42 -46.5 -68.5q-29 -26.5 -66.5 -38q-37.5 -11.5 -78.5 -11.5h-51v-57h131v-91h-131v-125h-114v125h-67zM253 604q-17 0 -30.5 -1q-13.5 -1 -21.5 -4l0 -234h39q21 -1 39.5 5q18.5 6 32 20.5q13.5 14.5 21.5 38.5q8 24 8 59q0 62 -25 89t-63 27z" />
-<glyph unicode="&#8380;" horiz-adv-x="478" d="M20 216h67v57h-67v90h67v330q35 8 72.5 12.5q37.5 4.5 80.5 4.5q45 0 85 -9q40 -9 70 -33q30 -24 48 -66q18 -42 18 -108q0 -61 -17.5 -103q-17.5 -42 -46.5 -68.5q-29 -26.5 -66.5 -38q-37.5 -11.5 -78.5 -11.5h-51v-57h131v-91h-131v-125h-114v125h-67zM253 604q-17 0 -30.5 -1q-13.5 -1 -21.5 -4l0 -234h39q21 -1 39.5 5q18.5 6 32 20.5q13.5 14.5 21.5 38.5q8 24 8 59q0 62 -25 89t-63 27z" />
-<glyph unicode="&#8381;" horiz-adv-x="478" d="M20 216h67v57h-67v90h67v330q35 8 72.5 12.5q37.5 4.5 80.5 4.5q45 0 85 -9q40 -9 70 -33q30 -24 48 -66q18 -42 18 -108q0 -61 -17.5 -103q-17.5 -42 -46.5 -68.5q-29 -26.5 -66.5 -38q-37.5 -11.5 -78.5 -11.5h-51v-57h131v-91h-131v-125h-114v125h-67zM253 604q-17 0 -30.5 -1q-13.5 -1 -21.5 -4l0 -234h39q21 -1 39.5 5q18.5 6 32 20.5q13.5 14.5 21.5 38.5q8 24 8 59q0 62 -25 89t-63 27z" />
-<glyph unicode="&#8382;" horiz-adv-x="478" d="M20 216h67v57h-67v90h67v330q35 8 72.5 12.5q37.5 4.5 80.5 4.5q45 0 85 -9q40 -9 70 -33q30 -24 48 -66q18 -42 18 -108q0 -61 -17.5 -103q-17.5 -42 -46.5 -68.5q-29 -26.5 -66.5 -38q-37.5 -11.5 -78.5 -11.5h-51v-57h131v-91h-131v-125h-114v125h-67zM253 604q-17 0 -30.5 -1q-13.5 -1 -21.5 -4l0 -234h39q21 -1 39.5 5q18.5 6 32 20.5q13.5 14.5 21.5 38.5q8 24 8 59q0 62 -25 89t-63 27z" />
-<glyph unicode="&#8383;" horiz-adv-x="478" d="M20 216h67v57h-67v90h67v330q35 8 72.5 12.5q37.5 4.5 80.5 4.5q45 0 85 -9q40 -9 70 -33q30 -24 48 -66q18 -42 18 -108q0 -61 -17.5 -103q-17.5 -42 -46.5 -68.5q-29 -26.5 -66.5 -38q-37.5 -11.5 -78.5 -11.5h-51v-57h131v-91h-131v-125h-114v125h-67zM253 604q-17 0 -30.5 -1q-13.5 -1 -21.5 -4l0 -234h39q21 -1 39.5 5q18.5 6 32 20.5q13.5 14.5 21.5 38.5q8 24 8 59q0 62 -25 89t-63 27z" />
-<glyph unicode="&#8384;" horiz-adv-x="478" d="M20 216h67v57h-67v90h67v330q35 8 72.5 12.5q37.5 4.5 80.5 4.5q45 0 85 -9q40 -9 70 -33q30 -24 48 -66q18 -42 18 -108q0 -61 -17.5 -103q-17.5 -42 -46.5 -68.5q-29 -26.5 -66.5 -38q-37.5 -11.5 -78.5 -11.5h-51v-57h131v-91h-131v-125h-114v125h-67zM253 604q-17 0 -30.5 -1q-13.5 -1 -21.5 -4l0 -234h39q21 -1 39.5 5q18.5 6 32 20.5q13.5 14.5 21.5 38.5q8 24 8 59q0 62 -25 89t-63 27z" />
-<glyph unicode="&#8385;" horiz-adv-x="478" d="M20 216h67v57h-67v90h67v330q35 8 72.5 12.5q37.5 4.5 80.5 4.5q45 0 85 -9q40 -9 70 -33q30 -24 48 -66q18 -42 18 -108q0 -61 -17.5 -103q-17.5 -42 -46.5 -68.5q-29 -26.5 -66.5 -38q-37.5 -11.5 -78.5 -11.5h-51v-57h131v-91h-131v-125h-114v125h-67zM253 604q-17 0 -30.5 -1q-13.5 -1 -21.5 -4l0 -234h39q21 -1 39.5 5q18.5 6 32 20.5q13.5 14.5 21.5 38.5q8 24 8 59q0 62 -25 89t-63 27z" />
-<glyph unicode="&#8386;" horiz-adv-x="478" d="M20 216h67v57h-67v90h67v330q35 8 72.5 12.5q37.5 4.5 80.5 4.5q45 0 85 -9q40 -9 70 -33q30 -24 48 -66q18 -42 18 -108q0 -61 -17.5 -103q-17.5 -42 -46.5 -68.5q-29 -26.5 -66.5 -38q-37.5 -11.5 -78.5 -11.5h-51v-57h131v-91h-131v-125h-114v125h-67zM253 604q-17 0 -30.5 -1q-13.5 -1 -21.5 -4l0 -234h39q21 -1 39.5 5q18.5 6 32 20.5q13.5 14.5 21.5 38.5q8 24 8 59q0 62 -25 89t-63 27z" />
-<glyph unicode="&#8387;" horiz-adv-x="478" d="M20 216h67v57h-67v90h67v330q35 8 72.5 12.5q37.5 4.5 80.5 4.5q45 0 85 -9q40 -9 70 -33q30 -24 48 -66q18 -42 18 -108q0 -61 -17.5 -103q-17.5 -42 -46.5 -68.5q-29 -26.5 -66.5 -38q-37.5 -11.5 -78.5 -11.5h-51v-57h131v-91h-131v-125h-114v125h-67zM253 604q-17 0 -30.5 -1q-13.5 -1 -21.5 -4l0 -234h39q21 -1 39.5 5q18.5 6 32 20.5q13.5 14.5 21.5 38.5q8 24 8 59q0 62 -25 89t-63 27z" />
-<glyph unicode="&#8388;" horiz-adv-x="478" d="M20 216h67v57h-67v90h67v330q35 8 72.5 12.5q37.5 4.5 80.5 4.5q45 0 85 -9q40 -9 70 -33q30 -24 48 -66q18 -42 18 -108q0 -61 -17.5 -103q-17.5 -42 -46.5 -68.5q-29 -26.5 -66.5 -38q-37.5 -11.5 -78.5 -11.5h-51v-57h131v-91h-131v-125h-114v125h-67zM253 604q-17 0 -30.5 -1q-13.5 -1 -21.5 -4l0 -234h39q21 -1 39.5 5q18.5 6 32 20.5q13.5 14.5 21.5 38.5q8 24 8 59q0 62 -25 89t-63 27z" />
-<glyph unicode="&#8389;" horiz-adv-x="478" d="M20 216h67v57h-67v90h67v330q35 8 72.5 12.5q37.5 4.5 80.5 4.5q45 0 85 -9q40 -9 70 -33q30 -24 48 -66q18 -42 18 -108q0 -61 -17.5 -103q-17.5 -42 -46.5 -68.5q-29 -26.5 -66.5 -38q-37.5 -11.5 -78.5 -11.5h-51v-57h131v-91h-131v-125h-114v125h-67zM253 604q-17 0 -30.5 -1q-13.5 -1 -21.5 -4l0 -234h39q21 -1 39.5 5q18.5 6 32 20.5q13.5 14.5 21.5 38.5q8 24 8 59q0 62 -25 89t-63 27z" />
-<glyph unicode="&#8390;" horiz-adv-x="478" d="M20 216h67v57h-67v90h67v330q35 8 72.5 12.5q37.5 4.5 80.5 4.5q45 0 85 -9q40 -9 70 -33q30 -24 48 -66q18 -42 18 -108q0 -61 -17.5 -103q-17.5 -42 -46.5 -68.5q-29 -26.5 -66.5 -38q-37.5 -11.5 -78.5 -11.5h-51v-57h131v-91h-131v-125h-114v125h-67zM253 604q-17 0 -30.5 -1q-13.5 -1 -21.5 -4l0 -234h39q21 -1 39.5 5q18.5 6 32 20.5q13.5 14.5 21.5 38.5q8 24 8 59q0 62 -25 89t-63 27z" />
-<glyph unicode="&#8391;" horiz-adv-x="478" d="M20 216h67v57h-67v90h67v330q35 8 72.5 12.5q37.5 4.5 80.5 4.5q45 0 85 -9q40 -9 70 -33q30 -24 48 -66q18 -42 18 -108q0 -61 -17.5 -103q-17.5 -42 -46.5 -68.5q-29 -26.5 -66.5 -38q-37.5 -11.5 -78.5 -11.5h-51v-57h131v-91h-131v-125h-114v125h-67zM253 604q-17 0 -30.5 -1q-13.5 -1 -21.5 -4l0 -234h39q21 -1 39.5 5q18.5 6 32 20.5q13.5 14.5 21.5 38.5q8 24 8 59q0 62 -25 89t-63 27z" />
-<glyph unicode="&#8392;" horiz-adv-x="478" d="M20 216h67v57h-67v90h67v330q35 8 72.5 12.5q37.5 4.5 80.5 4.5q45 0 85 -9q40 -9 70 -33q30 -24 48 -66q18 -42 18 -108q0 -61 -17.5 -103q-17.5 -42 -46.5 -68.5q-29 -26.5 -66.5 -38q-37.5 -11.5 -78.5 -11.5h-51v-57h131v-91h-131v-125h-114v125h-67zM253 604q-17 0 -30.5 -1q-13.5 -1 -21.5 -4l0 -234h39q21 -1 39.5 5q18.5 6 32 20.5q13.5 14.5 21.5 38.5q8 24 8 59q0 62 -25 89t-63 27z" />
-<glyph unicode="&#8393;" horiz-adv-x="478" d="M20 216h67v57h-67v90h67v330q35 8 72.5 12.5q37.5 4.5 80.5 4.5q45 0 85 -9q40 -9 70 -33q30 -24 48 -66q18 -42 18 -108q0 -61 -17.5 -103q-17.5 -42 -46.5 -68.5q-29 -26.5 -66.5 -38q-37.5 -11.5 -78.5 -11.5h-51v-57h131v-91h-131v-125h-114v125h-67zM253 604q-17 0 -30.5 -1q-13.5 -1 -21.5 -4l0 -234h39q21 -1 39.5 5q18.5 6 32 20.5q13.5 14.5 21.5 38.5q8 24 8 59q0 62 -25 89t-63 27z" />
-<glyph unicode="&#8394;" horiz-adv-x="478" d="M20 216h67v57h-67v90h67v330q35 8 72.5 12.5q37.5 4.5 80.5 4.5q45 0 85 -9q40 -9 70 -33q30 -24 48 -66q18 -42 18 -108q0 -61 -17.5 -103q-17.5 -42 -46.5 -68.5q-29 -26.5 -66.5 -38q-37.5 -11.5 -78.5 -11.5h-51v-57h131v-91h-131v-125h-114v125h-67zM253 604q-17 0 -30.5 -1q-13.5 -1 -21.5 -4l0 -234h39q21 -1 39.5 5q18.5 6 32 20.5q13.5 14.5 21.5 38.5q8 24 8 59q0 62 -25 89t-63 27z" />
-<glyph unicode="&#8395;" horiz-adv-x="478" d="M20 216h67v57h-67v90h67v330q35 8 72.5 12.5q37.5 4.5 80.5 4.5q45 0 85 -9q40 -9 70 -33q30 -24 48 -66q18 -42 18 -108q0 -61 -17.5 -103q-17.5 -42 -46.5 -68.5q-29 -26.5 -66.5 -38q-37.5 -11.5 -78.5 -11.5h-51v-57h131v-91h-131v-125h-114v125h-67zM253 604q-17 0 -30.5 -1q-13.5 -1 -21.5 -4l0 -234h39q21 -1 39.5 5q18.5 6 32 20.5q13.5 14.5 21.5 38.5q8 24 8 59q0 62 -25 89t-63 27z" />
-<glyph unicode="&#8396;" horiz-adv-x="478" d="M20 216h67v57h-67v90h67v330q35 8 72.5 12.5q37.5 4.5 80.5 4.5q45 0 85 -9q40 -9 70 -33q30 -24 48 -66q18 -42 18 -108q0 -61 -17.5 -103q-17.5 -42 -46.5 -68.5q-29 -26.5 -66.5 -38q-37.5 -11.5 -78.5 -11.5h-51v-57h131v-91h-131v-125h-114v125h-67zM253 604q-17 0 -30.5 -1q-13.5 -1 -21.5 -4l0 -234h39q21 -1 39.5 5q18.5 6 32 20.5q13.5 14.5 21.5 38.5q8 24 8 59q0 62 -25 89t-63 27z" />
-<glyph unicode="&#8397;" horiz-adv-x="478" d="M20 216h67v57h-67v90h67v330q35 8 72.5 12.5q37.5 4.5 80.5 4.5q45 0 85 -9q40 -9 70 -33q30 -24 48 -66q18 -42 18 -108q0 -61 -17.5 -103q-17.5 -42 -46.5 -68.5q-29 -26.5 -66.5 -38q-37.5 -11.5 -78.5 -11.5h-51v-57h131v-91h-131v-125h-114v125h-67zM253 604q-17 0 -30.5 -1q-13.5 -1 -21.5 -4l0 -234h39q21 -1 39.5 5q18.5 6 32 20.5q13.5 14.5 21.5 38.5q8 24 8 59q0 62 -25 89t-63 27z" />
-<glyph unicode="&#8398;" horiz-adv-x="478" d="M20 216h67v57h-67v90h67v330q35 8 72.5 12.5q37.5 4.5 80.5 4.5q45 0 85 -9q40 -9 70 -33q30 -24 48 -66q18 -42 18 -108q0 -61 -17.5 -103q-17.5 -42 -46.5 -68.5q-29 -26.5 -66.5 -38q-37.5 -11.5 -78.5 -11.5h-51v-57h131v-91h-131v-125h-114v125h-67zM253 604q-17 0 -30.5 -1q-13.5 -1 -21.5 -4l0 -234h39q21 -1 39.5 5q18.5 6 32 20.5q13.5 14.5 21.5 38.5q8 24 8 59q0 62 -25 89t-63 27z" />
-<glyph unicode="&#8399;" horiz-adv-x="478" d="M20 216h67v57h-67v90h67v330q35 8 72.5 12.5q37.5 4.5 80.5 4.5q45 0 85 -9q40 -9 70 -33q30 -24 48 -66q18 -42 18 -108q0 -61 -17.5 -103q-17.5 -42 -46.5 -68.5q-29 -26.5 -66.5 -38q-37.5 -11.5 -78.5 -11.5h-51v-57h131v-91h-131v-125h-114v125h-67zM253 604q-17 0 -30.5 -1q-13.5 -1 -21.5 -4l0 -234h39q21 -1 39.5 5q18.5 6 32 20.5q13.5 14.5 21.5 38.5q8 24 8 59q0 62 -25 89t-63 27z" />
-<glyph unicode="&#8467;" horiz-adv-x="500" d="M406 30q-22 -14 -57.5 -28q-35.5 -14 -70.5 -14q-63 0 -91.5 30.5q-28.5 30.5 -28.5 95.5v104l-50 -44l-35 44l85 74v254q0 44 10 75.5q10 31.5 27.5 51.5q17.5 20 41 29.5q23.5 9.5 50.5 9.5q48 0 79 -29.5q31 -29.5 31 -89.5q0 -74 -40 -157q-40 -83 -131 -171l0 -140q0 -44 17 -60.5q17 -16.5 41 -16.5q25 0 55 10.5q30 10.5 50 21.5zM333 588q0 34 -14 49q-14 15 -32 15q-12 0 -23 -3.5q-11 -3.5 -19.5 -14q-8.5 -10.5 -13.5 -29q-5 -18.5 -5 -48.5v-212q56 65 81.5 125.5t25.5 117.5z" />
-<glyph unicode="&#8470;" horiz-adv-x="857" d="M539 323h271v-106h-271zM198 345l-45 132h-5l16 -130v-347h-119v705h98l189 -358l42 -124h6l-16 122v355h119v-705h-98zM530 542q0 46 11 78q11 32 31 52.5q20 20.5 47.5 30q27.5 9.5 60.5 9.5q33 0 60.5 -8.5q27.5 -8.5 47.5 -28.5q20 -20 31.5 -52.5q11.5 -32.5 11.5 -80.5q0 -48 -11.5 -80.5q-11.5 -32.5 -31.5 -52.5q-20 -20 -47.5 -28.5q-27.5 -8.5 -60.5 -8.5q-33 0 -60.5 8.5q-27.5 8.5 -47.5 28.5q-20 20 -31 52.5q-11 32.5 -11 80.5zt0 0zM636 542q-1 -48 10 -67.5q11 -19.5 34 -19.5q12 0 20.5 3.5q8.5 3.5 14 13.5q5.5 10 8 27q2.5 17 2.5 43q0 51 -11 69q-11 18 -34 18q-23 0 -34 -18t-10 -69z" />
-<glyph unicode="&#8482;" horiz-adv-x="801" d="M330 594h-93v-254h-119v254h-93v106h305zM670 484l15 103h-5l-29 -85l-51 -117h-75l-52 114l-32 88h-5l21 -101v-146h-100v360h120l72 -143l18 -63h1l19 65l66 141h119v-360l-102 0z" />
-<glyph unicode="&#8494;" horiz-adv-x="600" d="M157 259v-181q62 -59 145 -59q124 0 193 120l35 -21q-43 -66 -99 -100.5q-56 -34.5 -129 -34.5q-59 0 -107 21.5q-48 21.5 -81.5 58.5q-33.5 37 -51.5 87.5q-18 50.5 -18 108.5q0 59 18.5 109.5q18.5 50.5 52.5 87.5q34 37 81.5 58q47.5 21 105.5 21q62 0 109.5 -22q47.5 -22 80.5 -59.5q33 -37.5 50 -87.5q17 -50 19 -107zM448 295v145q-63 60 -147 60q-86 0 -144 -60l0 -145z" />
-<glyph unicode="&#8706;" horiz-adv-x="451" d="M226 503q33 0 50 -6.5q17 -6.5 30 -17.5l5 0q-5 43 -23.5 71q-18.5 28 -46 43q-27.5 15 -60 20q-32.5 5 -63.5 2l20 99q63 3 116.5 -9.5q53.5 -12.5 93.5 -48q40 -35.5 62.5 -98q22.5 -62.5 22.5 -159.5q0 -109 -17 -187q-17 -78 -48.5 -128q-31.5 -50 -75 -73.5q-43.5 -23.5 -95.5 -23.5q-88 0 -135 55.5q-47 55.5 -47 155.5q0 60 12.5 115q12.5 55 38.5 97q26 42 66 67.5q40 25.5 94 25.5zt0 0zM237 397q-42 0 -70.5 -49q-28.5 -49 -28.5 -146q0 -50 17 -79.5q17 -29.5 51 -29.5q30 0 50 23q20 23 32 61q12 38 17 87.5q5 49.5 5 102.5q-14 15 -30.5 22.5t-42.5 7.5z" />
-<glyph unicode="&#8719;" horiz-adv-x="532" d="M365 587h-198v-787h-123v900h444v-900l-123 0z" />
-<glyph unicode="&#8721;" horiz-adv-x="444" d="M163 -48l-36 -39h296v-113h-403v113l149 301l32 34l-36 37l-145 302v113h403v-113h-284l39 -41l136 -290z" />
-<glyph unicode="&#8722;" horiz-adv-x="444" d="M38 393h368v-106l-368 0z" />
-<glyph unicode="&#8725;" horiz-adv-x="444" d="M353 715l81 -39l-342 -690l-83 41z" />
-<glyph unicode="&#8730;" horiz-adv-x="444" d="M159 475l61 -170l18 -131h4l13 133l98 393h110l-190 -705h-64l-124 374h-88l0 106z" />
-<glyph unicode="&#8734;" horiz-adv-x="714" d="M347 264q-30 -57 -72 -85q-42 -28 -94 -28q-31 0 -59 13.5q-28 13.5 -49 38.5q-21 25 -33.5 61.5q-12.5 36.5 -12.5 83.5q0 49 12.5 87q12.5 38 34 64q21.5 26 51.5 39.5q30 13.5 65 13.5q62 0 103.5 -29.5q41.5 -29.5 72.5 -74.5q37 55 79 79.5q42 24.5 93 24.5q32 0 59 -13q27 -13 47 -38q20 -25 31.5 -61.5q11.5 -36.5 11.5 -83.5q0 -100 -48 -152.5q-48 -52.5 -123 -52.5q-60 0 -100 32q-40 32 -69 81zt0 0zM515 255q29 0 45 28q16 28 16 70q0 18 -3 35q-3 17 -10.5 30.5q-7.5 13.5 -19.5 21.5q-12 8 -30 8q-25 0 -50.5 -22q-25.5 -22 -48.5 -60q9 -21 20 -41q11 -20 24 -35.5q13 -15.5 27.5 -25q14.5 -9.5 29.5 -9.5zt0 0zM200 448q-29 0 -45.5 -29.5q-16.5 -29.5 -16.5 -69.5q0 -39 18.5 -66.5q18.5 -27.5 47.5 -27.5q26 0 52 26q26 26 44 59q-17 45 -42 76.5t-58 31.5z" />
-<glyph unicode="&#8747;" horiz-adv-x="307" d="M211 -34q0 -96 -35.5 -135q-35.5 -39 -100.5 -39q-38 0 -74.5 6.5q-36.5 6.5 -56.5 15.5l26 98q34 -14 67 -14q32 0 43.5 23q11.5 23 11.5 78v539q0 96 31.5 136q31.5 40 102.5 40q32 0 67.5 -6.5q35.5 -6.5 57.5 -15.5l-19 -98q-18 8 -34.5 11q-16.5 3 -37.5 3q-28 0 -38.5 -20.5q-10.5 -20.5 -10.5 -74.5z" />
-<glyph unicode="&#8776;" horiz-adv-x="444" d="M23 473q39 38 71 52.5q32 14.5 59 14.5q24 0 45 -8q21 -8 40 -18q19 -10 37.5 -18q18.5 -8 38.5 -8q15 0 30.5 6.5q15.5 6.5 32.5 21.5l44 -103q-30 -27 -55 -37.5q-25 -10.5 -47 -10.5q-23 0 -43.5 8.5q-20.5 8.5 -40 19q-19.5 10.5 -39 19.5q-19.5 9 -40.5 9q-20 0 -42.5 -10.5q-22.5 -10.5 -49.5 -37.5zM23 279q39 38 71 52.5q32 14.5 59 14.5q24 0 45 -8q21 -8 40 -18q19 -10 37.5 -18q18.5 -8 38.5 -8q15 0 30.5 6.5q15.5 6.5 32.5 21.5l44 -103q-30 -27 -55 -37.5q-25 -10.5 -47 -10.5q-23 0 -43.5 8.5q-20.5 8.5 -40 19q-19.5 10.5 -39 19.5q-19.5 9 -40.5 9q-20 0 -42.5 -10.5q-22.5 -10.5 -49.5 -37.5z" />
-<glyph unicode="&#8800;" horiz-adv-x="444" d="M38 489h187l42 114h103l-42 -114h78v-106h-117l-32 -86h149v-106h-188l-49 -134h-102l49 134h-78v106h117l31 86l-148 0z" />
-<glyph unicode="&#8804;" horiz-adv-x="444" d="M404 80l-60 -85l-308 207l60 85zM29 413v70l311 222l60 -81l-186 -139l-75 -35l74 -31l191 -137l-60 -81z" />
-<glyph unicode="&#8805;" horiz-adv-x="444" d="M406 205l-307 -210l-60 84l306 211zM407 493v-70l-311 -222l-60 81l186 139l75 35l-74 31l-191 137l60 81z" />
-<glyph unicode="&#9674;" horiz-adv-x="444" d="M256 -5h-72l-161 347l161 363h72l165 -358zM249 203l62 131l-71 156l-21 85h-4l-22 -86l-60 -134l71 -154l21 -86l4 0z" />
-<glyph unicode="&#11367;" horiz-adv-x="575" d="M362 296h-191v-296h-126v700h126v-288h191v288h126v-584h73v-241h-89l-12 125l-98 0z" />
-<glyph unicode="&#11368;" horiz-adv-x="486" d="M291 302q0 54 -12.5 78q-12.5 24 -45.5 24q-24 0 -44 -17q-20 -17 -27 -43l0 -344h-119v700h119v-245h3q20 26 48.5 42q28.5 16 71.5 16q31 0 54 -9q23 -9 39 -30q16 -21 24 -56.5q8 -35.5 8 -89.5v-219h64v-223h-88l-13 114l-82 0z" />
-<glyph unicode="&#62465;" horiz-adv-x="2" d="M-341 870h143v-30l-132 -88l-93 0z" />
-<glyph unicode="&#62470;" horiz-adv-x="443" d="M106 875q17 -26 49 -40.5q32 -14.5 70 -14.5q40 0 68.5 15q28.5 15 45.5 40l44 -31q-11 -30 -28 -51.5q-17 -21.5 -38.5 -35.5q-21.5 -14 -45 -20.5q-23.5 -6.5 -47.5 -6.5q-22 0 -45.5 6q-23.5 6 -46 19q-22.5 13 -41.5 34q-19 21 -31 51z" />
-<glyph unicode="&#62471;" horiz-adv-x="305" d="M191 0l-20 -43q34 -4 54 -21.5q20 -17.5 20 -53.5q0 -23 -10.5 -40q-10.5 -17 -28.5 -28.5q-18 -11.5 -42 -17.5q-24 -6 -50 -6q-27 0 -54 6l7 48q42 -4 55.5 5.5q13.5 9.5 13.5 23.5q0 28 -70 32l49 95z" />
-<glyph unicode="&#62472;" horiz-adv-x="420" d="M169 870h87l104 -93v-39h-85l-47 41l-17 34l-18 -33l-50 -42h-83l0 40z" />
-<glyph unicode="&#62473;" horiz-adv-x="253" d="M61 -106q0 29 18 46.5q18 17.5 44 17.5q31 0 50.5 -22q19.5 -22 19.5 -67q0 -33 -10 -58q-10 -25 -24.5 -42q-14.5 -17 -30 -27.5q-15.5 -10.5 -27.5 -14.5l-33 46q13 8 25 23.5q12 15.5 14 37.5q-15 1 -30.5 15t-15.5 45z" />
-<glyph unicode="&#62474;" horiz-adv-x="188" d="M29 644q0 29 17.5 47q17.5 18 43.5 18q32 0 50.5 -22.5q18.5 -22.5 18.5 -62.5q0 -39 -11 -66q-11 -27 -26.5 -45.5q-15.5 -18.5 -32.5 -29.5q-17 -11 -29 -16l-30 50q17 8 30 24q13 16 15 39q-17 1 -31.5 16.5t-14.5 47.5z" />
-<glyph unicode="&#62475;" horiz-adv-x="276" d="M60 799q0 25 19.5 43q19.5 18 57.5 18q39 0 59 -18q20 -18 20 -43q0 -26 -20 -44q-20 -18 -59 -18q-38 0 -57.5 18t-19.5 44z" />
-<glyph unicode="&#62476;" horiz-adv-x="343" d="M60 772q0 18 5 34.5q5 16.5 18 29q13 12.5 34 19.5q21 7 54 7q61 0 86.5 -24q25.5 -24 25.5 -66q0 -18 -5.5 -34q-5.5 -16 -18.5 -27.5q-13 -11.5 -34.5 -18.5q-21.5 -7 -53.5 -7q-62 0 -86.5 24.5q-24.5 24.5 -24.5 62.5zt0 0zM135 772q0 -31 36 -31q21 0 29 7.5q8 7.5 8 23.5q0 17 -8.5 25.5q-8.5 8.5 -28.5 8.5q-36 0 -36 -34z" />
-<glyph unicode="&#62477;" horiz-adv-x="450" d="M60 796q29 37 56 50.5q27 13.5 53 13.5q19 0 38 -5.5q19 -5.5 37 -11.5q18 -6 34.5 -11.5q16.5 -5.5 32.5 -5.5q14 0 27 5.5q13 5.5 25 19.5l27 -63q-26 -29 -49.5 -39.5q-23.5 -10.5 -46.5 -10.5q-19 0 -37.5 5.5q-18.5 5.5 -36 11.5q-17.5 6 -34.5 11.5q-17 5.5 -34 5.5q-17 0 -33 -7q-16 -7 -33 -27z" />
-<glyph unicode="&#62478;" horiz-adv-x="321" d="M238 10q-62 -22 -62 -79q0 -25 17.5 -37.5q17.5 -12.5 49.5 2.5l18 -58q-6 -6 -16 -12q-10 -6 -23 -11q-13 -5 -28.5 -8.5q-15.5 -3.5 -30.5 -3.5q-51 0 -77 25q-26 25 -26 65q0 42 25 71q25 29 64 46z" />
-<glyph unicode="&#62598;" horiz-adv-x="490" d="M445 538q0 -26 -5.5 -51.5q-5.5 -25.5 -17.5 -48q-12 -22.5 -31.5 -39.5q-19.5 -17 -46.5 -26l0 -6q24 -6 45.5 -18q21.5 -12 37.5 -32.5q16 -20.5 25.5 -50q9.5 -29.5 9.5 -69.5q0 -54 -18.5 -93.5q-18.5 -39.5 -50 -64.5q-31.5 -25 -73.5 -37q-42 -12 -89 -12q-14 0 -36 0q-22 0 -47.5 1.5q-25.5 1.5 -52.5 4.5q-27 3 -50 9l0 690q33 6 81.5 10.5q48.5 4.5 96.5 4.5q44 0 84.5 -7q40.5 -7 71 -26q30.5 -19 48.5 -52.5q18 -33.5 18 -86.5zt0 0zM234 99q42 0 69 27q27 27 27 79q0 33 -9 52.5q-9 19.5 -24 30q-15 10.5 -34.5 13.5q-19.5 3 -40.5 3h-51v-199q8 -3 27.5 -4.5q19.5 -1.5 35.5 -1.5zt0 0zM200 403q11 0 25.5 1.5q14.5 1.5 23.5 3.5q29 11 49.5 36q20.5 25 20.5 65q0 26 -7 44q-7 18 -19 28.5q-12 10.5 -28.5 15q-16.5 4.5 -35.5 4.5q-41 0 -58 -4l0 -194zM233 870h143v-30l-132 -88l-93 0z" />
-<glyph unicode="&#62599;" horiz-adv-x="443" d="M43 700h119v-232h3q36 44 103 44q71 0 110.5 -59q39.5 -59 39.5 -190q0 -142 -56 -208.5q-56 -66.5 -153 -66.5q-53 0 -97.5 10q-44.5 10 -68.5 22zM162 108q21 -11 55 -11q38 0 58 36.5q20 36.5 20 122.5q0 76 -16 111.5q-16 35.5 -50 35.5q-50 0 -67 -52zM259 720h119v-30l-94 -124l-67 0z" />
-<glyph unicode="&#62600;" horiz-adv-x="419" d="M45 700h350v-116h-224v-182h206v-116h-206v-286h-126zM229 870h143v-30l-132 -88l-93 0z" />
-<glyph unicode="&#62601;" horiz-adv-x="267" d="M8 500h54v28q0 95 35.5 137.5q35.5 42.5 101.5 42.5q66 0 110 -18l-22 -101q-18 7 -32 8.5q-14 1.5 -29 1.5q-29 0 -37 -22.5q-8 -22.5 -8 -76.5l85 0v-106h-85v-394h-119v394h-54zM211 870h143v-30l-132 -88l-93 0z" />
-<glyph unicode="&#62622;" horiz-adv-x="507" d="M-12 606h60v94h126v-94h183v-91h-183v-97q21 14 57 27q36 13 86 13q35 0 64 -10q29 -10 49.5 -33q20.5 -23 31.5 -59.5q11 -36.5 11 -89.5v-266h-126v227q0 60 -17 89.5q-17 29.5 -60 29.5q-29 0 -54.5 -9q-25.5 -9 -41.5 -25l0 -312h-126v515l-60 0z" />
-<glyph unicode="&#62623;" horiz-adv-x="456" d="M-9 641h59v59h119v-59h133v-79h-133v-107h3q20 26 48.5 42q28.5 16 71.5 16q31 0 54 -9q23 -9 39 -30q16 -21 24 -56.5q8 -35.5 8 -89.5v-328h-119v302q0 54 -12.5 78q-12.5 24 -45.5 24q-24 0 -44 -17q-20 -17 -27 -43l0 -344h-119v562l-59 0z" />
-<glyph unicode="&#62662;" horiz-adv-x="504" d="M160 700v-230q0 -62 18 -88.5q18 -26.5 59 -26.5q29 0 54.5 9q25.5 9 40.5 26l0 310h126v-729q0 -91 -35.5 -134.5q-35.5 -43.5 -103.5 -43.5q-25 0 -55 6l0 106q43 -5 55.5 21.5q12.5 26.5 12.5 74.5v281q-20 -14 -55.5 -26.5q-35.5 -12.5 -83.5 -12.5q-33 0 -62 9.5q-29 9.5 -50.5 31q-21.5 21.5 -34 57q-12.5 35.5 -12.5 88.5l0 271z" />
-<glyph unicode="&#62663;" horiz-adv-x="419" d="M143 500v-134q0 -53 9.5 -76.5q9.5 -23.5 41.5 -23.5q22 0 37.5 6.5q15.5 6.5 25.5 14.5l0 213h119v-531q0 -84 -31 -129.5q-31 -45.5 -100 -45.5q-13 0 -27.5 1.5q-14.5 1.5 -30.5 5.5l0 103q43 -4 56.5 20.5q13.5 24.5 13.5 75.5v194q-12 -10 -37 -22q-25 -12 -67 -12q-30 0 -54 7.5q-24 7.5 -40.5 26.5q-16.5 19 -25.5 50q-9 31 -9 78l0 178z" />
-<glyph unicode="&#62668;" horiz-adv-x="475" d="M246 395l15 -93h5l13 96l79 302h130l-156 -484q-18 -57 -34 -98.5q-16 -41.5 -35 -69.5q-19 -28 -42.5 -41.5q-23.5 -13.5 -57.5 -13.5q-27 0 -46.5 5q-19.5 5 -40.5 19l31 106q14 -8 25 -10.5q11 -2.5 23 -3.5q37 0 51 76l-216 515h149zM245 870h143v-30l-132 -88l-93 0z" />
-<glyph unicode="&#62669;" horiz-adv-x="400" d="M203 219l13 -78h5l9 79l58 280h122l-125 -451q-17 -59 -32 -106q-15 -47 -32 -80q-17 -33 -38.5 -50.5q-21.5 -17.5 -51.5 -17.5q-21 0 -40.5 3.5q-19.5 3.5 -33.5 11.5l20 102q13 -5 26.5 -4.5q13.5 0.5 25 10q11.5 9.5 20.5 29.5q9 20 15 53l-174 500h143zM205 720h119v-30l-94 -124l-67 0z" />
-<glyph unicode="&#62678;" horiz-adv-x="477" d="M105 407h211q-2 42 -10.5 77q-8.5 35 -26 60.5q-17.5 25.5 -43 39.5q-25.5 14 -61.5 14q-43 0 -75.5 -10.5q-32.5 -10.5 -55.5 -24.5l-29 109q32 19 78 30.5q46 11.5 89 11.5q60 0 109.5 -19.5q49.5 -19.5 84 -62.5q34.5 -43 53.5 -112.5q19 -69.5 19 -168.5q0 -106 -22 -176.5q-22 -70.5 -60.5 -112.5q-38.5 -42 -89 -59q-50.5 -17 -107.5 -17q-49 0 -90.5 10q-41.5 10 -64.5 22l33 112q20 -10 53 -19q33 -9 74 -9q66 0 102 48.5q36 48.5 41 152.5l-212 0zM116 799q0 25 19.5 43q19.5 18 57.5 18q39 0 59 -18q20 -18 20 -43q0 -26 -20 -44q-20 -18 -59 -18q-38 0 -57.5 18t-19.5 44z" />
-<glyph unicode="&#62679;" horiz-adv-x="377" d="M85 298h144q-3 54 -22.5 82q-19.5 28 -63.5 28q-31 0 -54 -6.5q-23 -6.5 -40 -17.5l-32 90q54 40 149 40q92 0 139 -65q47 -65 47 -199q0 -134 -51.5 -198.5q-51.5 -64.5 -145.5 -64.5q-37 0 -76.5 7.5q-39.5 7.5 -63.5 21.5l28 99q41 -22 94 -22q49 0 69.5 27.5q20.5 27.5 22.5 87.5l-144 0zM83 641q0 30 19 49.5q19 19.5 54 19.5q35 0 56 -19q21 -19 21 -50q0 -31 -21 -49q-21 -18 -56 -18q-35 0 -54 18.5t-19 48.5z" />
-<glyph unicode="&#62730;" horiz-adv-x="435" d="M98 313v102h24q15 0 37 1q22 1 35 6q27 8 46 30q19 22 19 57q0 49 -23.5 68q-23.5 19 -65.5 19q-34 0 -63.5 -10.5q-29.5 -10.5 -46.5 -21.5l-32 109q10 6 28 13q18 7 40.5 13q22.5 6 48 9.5q25.5 3.5 51.5 3.5q38 0 73.5 -7.5q35.5 -7.5 62.5 -27q27 -19.5 43 -53.5q16 -34 16 -87q0 -51 -21.5 -95q-21.5 -44 -69.5 -65l0 -6q52 -14 80.5 -56q28.5 -42 28.5 -114q0 -49 -14 -86q-14 -37 -38 -62.5q-24 -25.5 -56 -41q-32 -15.5 -68 -21.5l-11 -165h-82l-15 164q-35 5 -64 13q-29 8 -49 19l33 112q19 -11 52.5 -21q33.5 -10 78.5 -10q41 0 71 26.5q30 26.5 30 83.5q0 49 -27.5 73.5q-27.5 24.5 -96.5 26.5q-11 0 -15 0.5q-4 0.5 -17 0.5z" />
-<glyph unicode="&#62731;" horiz-adv-x="354" d="M85 208v89h48q27 0 44 16q17 16 17 39q0 50 -62 50q-30 0 -53 -8q-23 -8 -37 -17l-27 95q26 15 68 25.5q42 10.5 87 10.5q143 0 143 -124q0 -37 -16 -69.5q-16 -32.5 -48 -46.5l0 -4q42 -12 61 -42q19 -30 19 -81q0 -51 -27.5 -90.5q-27.5 -39.5 -87.5 -53.5l-12 -172h-82l-16 168q-29 4 -51 11.5q-22 7.5 -39 18.5l24 97q19 -11 44.5 -17.5q25.5 -6.5 54.5 -6.5q73 0 73 59q0 25 -18.5 39q-18.5 14 -68.5 14z" />
-<glyph unicode="&#62732;" horiz-adv-x="457" d="M442 28q-22 -18 -55 -27.5q-33 -9.5 -68 -12.5l-14 -31q34 -4 54 -21.5q20 -17.5 20 -53.5q0 -23 -10.5 -40q-10.5 -17 -28.5 -28.5q-18 -11.5 -42 -17.5q-24 -6 -50 -6q-27 0 -54 6l7 48q42 -4 55.5 5.5q13.5 9.5 13.5 23.5q0 28 -70 32l43 84q-46 6 -85 29q-39 23 -67.5 66q-28.5 43 -45 109q-16.5 66 -16.5 158q0 106 22.5 176q22.5 70 59 111.5q36.5 41.5 83.5 58.5q47 17 95 17q49 0 85.5 -8q36.5 -8 59.5 -18l-25 -111q-19 10 -44.5 15.5q-25.5 5.5 -60.5 5.5q-69 0 -106 -60q-37 -60 -37 -188q0 -55 8.5 -100.5q8.5 -45.5 27 -78.5q18.5 -33 47 -51q28.5 -18 68.5 -18q35 0 60 9.5q25 9.5 45 22.5z" />
-<glyph unicode="&#62733;" horiz-adv-x="350" d="M338 27q-18 -15 -41 -23.5q-23 -8.5 -49 -13.5l-15 -33q34 -4 54 -21.5q20 -17.5 20 -53.5q0 -23 -10.5 -40q-10.5 -17 -28.5 -28.5q-18 -11.5 -42 -17.5q-24 -6 -50 -6q-27 0 -54 6l7 48q42 -4 55.5 5.5q13.5 9.5 13.5 23.5q0 28 -70 32l43 85q-80 13 -113 82q-33 69 -33 178q0 131 47 197q47 66 138 66q45 0 73.5 -8q28.5 -8 50.5 -20l-28 -99q-18 9 -34.5 13.5q-16.5 4.5 -39.5 4.5q-42 0 -63 -36.5q-21 -36.5 -21 -117.5q0 -68 21.5 -111q21.5 -43 68.5 -43q25 0 42.5 6.5q17.5 6.5 32.5 16.5z" />
-<glyph unicode="&#62734;" horiz-adv-x="501" d="M328 158h-165l-41 -158h-125l203 705h99l204 -705h-132zM190 262h116l-40 163l-16 110h-4l-17 -111zM108 856h289v-89l-289 0z" />
-<glyph unicode="&#62735;" horiz-adv-x="413" d="M44 470q30 18 75 29q45 11 102 11q85 0 118.5 -44q33.5 -44 33.5 -125q0 -47 -2.5 -92.5q-2.5 -45.5 -3.5 -89q-1 -43.5 1.5 -84q2.5 -40.5 13.5 -76.5l-97 0l-19 61h-4q-16 -29 -45 -48q-29 -19 -73 -19q-59 0 -93 39.5q-34 39.5 -34 105.5q0 90 64 128q64 38 173 32q5 58 -7.5 84q-12.5 26 -53.5 26q-30 0 -62 -7q-32 -7 -57 -20zM187 95q27 0 44 13.5q17 13.5 25 29.5l0 83q-23 3 -44 1q-21 -2 -37 -9q-16 -7 -25.5 -20.5q-9.5 -13.5 -9.5 -34.5q0 -31 12.5 -47q12.5 -16 34.5 -16zt0 0zM72 658h272v-91l-272 0z" />
-<glyph unicode="&#62736;" horiz-adv-x="430" d="M45 700h350v-116h-224v-172h203v-116h-203v-180h228v-116h-354zM76 856h289v-89l-289 0z" />
-<glyph unicode="&#62737;" horiz-adv-x="428" d="M381 37q-25 -22 -68 -36q-43 -14 -90 -14q-52 0 -89.5 18q-37.5 18 -61.5 52q-24 34 -35.5 82.5q-11.5 48.5 -11.5 110.5q0 135 53.5 199.5q53.5 64.5 148.5 64.5q32 0 62 -9.5q30 -9.5 53.5 -32q23.5 -22.5 38 -60q14.5 -37.5 14.5 -94.5q0 -22 -2.5 -47q-2.5 -25 -7.5 -54l-243 0q2 -62 26 -95q24 -33 77 -33q32 0 58.5 10q26.5 10 40.5 21zM225 412q-38 0 -57 -30.5q-19 -30.5 -22 -85.5l138 0q3 57 -12 86.5q-15 29.5 -47 29.5zt0 0zM80 658h272v-91l-272 0z" />
-<glyph unicode="&#62738;" horiz-adv-x="430" d="M45 700h350v-116h-224v-172h203v-116h-203v-180h228v-116h-354zM58 798q0 26 15.5 42q15.5 16 53.5 16q35 0 50.5 -16q15.5 -16 15.5 -42q0 -26 -15.5 -41.5q-15.5 -15.5 -50.5 -15.5q-38 0 -53.5 15.5q-15.5 15.5 -15.5 41.5zt0 0zM240 798q0 26 15.5 42q15.5 16 51.5 16q37 0 52.5 -16q15.5 -16 15.5 -42q0 -26 -15.5 -41.5q-15.5 -15.5 -52.5 -15.5q-36 0 -51.5 15.5q-15.5 15.5 -15.5 41.5zt0 0zM72 983h289v-89l-289 0z" />
-<glyph unicode="&#62739;" horiz-adv-x="428" d="M381 37q-25 -22 -68 -36q-43 -14 -90 -14q-52 0 -89.5 18q-37.5 18 -61.5 52q-24 34 -35.5 82.5q-11.5 48.5 -11.5 110.5q0 135 53.5 199.5q53.5 64.5 148.5 64.5q32 0 62 -9.5q30 -9.5 53.5 -32q23.5 -22.5 38 -60q14.5 -37.5 14.5 -94.5q0 -22 -2.5 -47q-2.5 -25 -7.5 -54l-243 0q2 -62 26 -95q24 -33 77 -33q32 0 58.5 10q26.5 10 40.5 21zM225 412q-38 0 -57 -30.5q-19 -30.5 -22 -85.5l138 0q3 57 -12 86.5q-15 29.5 -47 29.5zt0 0zM62 625q0 32 17.5 50q17.5 18 46.5 18q28 0 45 -18q17 -18 17 -50q0 -30 -17 -47.5q-17 -17.5 -45 -17.5q-29 0 -46.5 17.5q-17.5 17.5 -17.5 47.5zt0 0zM248 625q0 32 17 50q17 18 46 18q29 0 46 -18q17 -18 17 -50q0 -30 -17 -47.5q-17 -17.5 -46 -17.5q-29 0 -46 17.5q-17 17.5 -17 47.5zt0 0zM73 843h289v-89l-289 0z" />
-<glyph unicode="&#62740;" horiz-adv-x="430" d="M45 700h350v-116h-224v-172h203v-116h-203v-180h228v-116h-354zM59 798q0 26 15.5 42q15.5 16 53.5 16q35 0 50.5 -16q15.5 -16 15.5 -42q0 -26 -15.5 -41.5q-15.5 -15.5 -50.5 -15.5q-38 0 -53.5 15.5q-15.5 15.5 -15.5 41.5zt0 0zM241 798q0 26 15.5 42q15.5 16 51.5 16q37 0 52.5 -16q15.5 -16 15.5 -42q0 -26 -15.5 -41.5q-15.5 -15.5 -52.5 -15.5q-36 0 -51.5 15.5q-15.5 15.5 -15.5 41.5zt0 0zM168 1009q6 -61 56 -61q50 0 56 60l102 -15q-8 -65 -49 -94q-41 -29 -110 -29q-35 0 -64 6q-29 6 -51 20q-22 14 -36 37q-14 23 -18 58z" />
-<glyph unicode="&#62741;" horiz-adv-x="428" d="M381 37q-25 -22 -68 -36q-43 -14 -90 -14q-52 0 -89.5 18q-37.5 18 -61.5 52q-24 34 -35.5 82.5q-11.5 48.5 -11.5 110.5q0 135 53.5 199.5q53.5 64.5 148.5 64.5q32 0 62 -9.5q30 -9.5 53.5 -32q23.5 -22.5 38 -60q14.5 -37.5 14.5 -94.5q0 -22 -2.5 -47q-2.5 -25 -7.5 -54l-243 0q2 -62 26 -95q24 -33 77 -33q32 0 58.5 10q26.5 10 40.5 21zM225 412q-38 0 -57 -30.5q-19 -30.5 -22 -85.5l138 0q3 57 -12 86.5q-15 29.5 -47 29.5zt0 0zM62 625q0 32 17.5 50q17.5 18 46.5 18q28 0 45 -18q17 -18 17 -50q0 -30 -17 -47.5q-17 -17.5 -45 -17.5q-29 0 -46.5 17.5q-17.5 17.5 -17.5 47.5zt0 0zM248 625q0 32 17 50q17 18 46 18q29 0 46 -18q17 -18 17 -50q0 -30 -17 -47.5q-17 -17.5 -46 -17.5q-29 0 -46 17.5q-17 17.5 -17 47.5zt0 0zM168 861q6 -61 56 -61q50 0 56 60l102 -15q-8 -65 -49 -94q-41 -29 -110 -29q-35 0 -64 6q-29 6 -51 20q-22 14 -36 37q-14 23 -18 58z" />
-<glyph unicode="&#62742;" horiz-adv-x="435" d="M98 313v102h24q15 0 37 1q22 1 35 6q27 8 46 30q19 22 19 57q0 49 -23.5 68q-23.5 19 -65.5 19q-34 0 -63.5 -10.5q-29.5 -10.5 -46.5 -21.5l-32 109q10 6 28 13q18 7 40.5 13q22.5 6 48 9.5q25.5 3.5 51.5 3.5q38 0 73.5 -7.5q35.5 -7.5 62.5 -27q27 -19.5 43 -53.5q16 -34 16 -87q0 -51 -21.5 -95q-21.5 -44 -69.5 -65l0 -6q52 -14 80.5 -56q28.5 -42 28.5 -114q0 -57 -18.5 -98q-18.5 -41 -50 -67q-31.5 -26 -72.5 -38q-41 -12 -85 -12q-54 0 -99 9.5q-45 9.5 -72 25.5l33 112q19 -11 52.5 -21q33.5 -10 78.5 -10q41 0 71 26.5q30 26.5 30 83.5q0 49 -27.5 73.5q-27.5 24.5 -96.5 26.5q-11 0 -15 0.5q-4 0.5 -17 0.5zM245 737h-87l-104 94v39h91l42 -45l17 -30l17 29l45 46h88l0 -40z" />
-<glyph unicode="&#62743;" horiz-adv-x="354" d="M85 208v89h48q27 0 44 16q17 16 17 39q0 50 -62 50q-30 0 -53 -8q-23 -8 -37 -17l-27 95q26 15 68 25.5q42 10.5 87 10.5q143 0 143 -124q0 -37 -16 -69.5q-16 -32.5 -48 -46.5l0 -4q42 -12 61 -42q19 -30 19 -81q0 -32 -10.5 -59.5q-10.5 -27.5 -32.5 -47.5q-22 -20 -55.5 -32q-33.5 -12 -79.5 -12q-45 0 -79.5 9.5q-34.5 9.5 -57.5 23.5l24 97q19 -11 44.5 -17.5q25.5 -6.5 54.5 -6.5q73 0 73 59q0 25 -18.5 39q-18.5 14 -68.5 14zM219 550h-88l-95 182h98l32 -66l13 -49l13 49l37 66l91 0z" />
-<glyph unicode="&#62744;" horiz-adv-x="553" d="M29 350q0 178 61 271q61 93 186 93q65 0 112 -25.5q47 -25.5 77 -73q30 -47.5 44.5 -115q14.5 -67.5 14.5 -150.5q0 -178 -62.5 -271q-62.5 -93 -185.5 -93q-66 0 -112.5 25.5q-46.5 25.5 -76.5 73q-30 47.5 -44 115q-14 67.5 -14 150.5zt0 0zM161 350q0 -53 6 -98.5q6 -45.5 20 -78.5q14 -33 35.5 -52q21.5 -19 53.5 -19q58 0 87 59q29 59 29 189q0 51 -6 96.5q-6 45.5 -19.5 79q-13.5 33.5 -35.5 53q-22 19.5 -55 19.5q-115 0 -115 -248zt0 0zM134 856h289v-89l-289 0z" />
-<glyph unicode="&#62745;" horiz-adv-x="445" d="M25 250q0 133 52 198q52 65 145 65q100 0 149 -66q49 -66 49 -197q0 -134 -52 -198.5q-52 -64.5 -146 -64.5q-197 0 -197 263zt0 0zM148 250q0 -75 17 -116q17 -41 57 -41q38 0 56.5 35.5q18.5 35.5 18.5 121.5q0 77 -17 117q-17 40 -58 40q-35 0 -54.5 -35.5q-19.5 -35.5 -19.5 -121.5zt0 0zM87 658h272v-91l-272 0z" />
-<glyph unicode="&#62746;" horiz-adv-x="553" d="M29 350q0 178 61 271q61 93 186 93q65 0 112 -25.5q47 -25.5 77 -73q30 -47.5 44.5 -115q14.5 -67.5 14.5 -150.5q0 -178 -62.5 -271q-62.5 -93 -185.5 -93q-66 0 -112.5 25.5q-46.5 25.5 -76.5 73q-30 47.5 -44 115q-14 67.5 -14 150.5zt0 0zM161 350q0 -53 6 -98.5q6 -45.5 20 -78.5q14 -33 35.5 -52q21.5 -19 53.5 -19q58 0 87 59q29 59 29 189q0 51 -6 96.5q-6 45.5 -19.5 79q-13.5 33.5 -35.5 53q-22 19.5 -55 19.5q-115 0 -115 -248zt0 0zM225 874q6 -61 56 -61q50 0 56 60l102 -15q-8 -65 -49 -94q-41 -29 -110 -29q-35 0 -64 6q-29 6 -51 20q-22 14 -36 37q-14 23 -18 58z" />
-<glyph unicode="&#62747;" horiz-adv-x="445" d="M25 250q0 133 52 198q52 65 145 65q100 0 149 -66q49 -66 49 -197q0 -134 -52 -198.5q-52 -64.5 -146 -64.5q-197 0 -197 263zt0 0zM148 250q0 -75 17 -116q17 -41 57 -41q38 0 56.5 35.5q18.5 35.5 18.5 121.5q0 77 -17 117q-17 40 -58 40q-35 0 -54.5 -35.5q-19.5 -35.5 -19.5 -121.5zt0 0zM177 704q3 -38 16 -55q13 -17 33 -17q21 0 33.5 16.5q12.5 16.5 17.5 54.5l90 -22q-11 -68 -50.5 -99.5q-39.5 -31.5 -93.5 -31.5q-26 0 -51 7q-25 7 -45 22.5q-20 15.5 -33.5 40.5q-13.5 25 -17.5 62z" />
-<glyph unicode="&#62748;" horiz-adv-x="552" d="M29 350q0 178 61 271q61 93 186 93q65 0 112 -25.5q47 -25.5 77 -73q30 -47.5 44 -115q14 -67.5 14 -150.5q0 -178 -62 -271q-62 -93 -185 -93q-66 0 -112.5 25.5q-46.5 25.5 -76.5 73q-30 47.5 -44 115q-14 67.5 -14 150.5zt0 0zM276 102q52 0 81.5 47q29.5 47 34.5 150l-231 0q3 -44 10.5 -80q7.5 -36 21.5 -62q14 -26 34.5 -40.5q20.5 -14.5 48.5 -14.5zt0 0zM391 405q-3 42 -10.5 77q-7.5 35 -21.5 61q-14 26 -34.5 40.5q-20.5 14.5 -48.5 14.5q-103 0 -115 -193zM226 874q6 -61 56 -61q50 0 56 60l102 -15q-8 -65 -49 -94q-41 -29 -110 -29q-35 0 -64 6q-29 6 -51 20q-22 14 -36 37q-14 23 -18 58z" />
-<glyph unicode="&#62749;" horiz-adv-x="445" d="M25 250q0 129 51.5 196.5q51.5 67.5 145.5 67.5q50 0 87 -18.5q37 -18.5 62 -53q25 -34.5 37 -83q12 -48.5 12 -109.5q0 -130 -52 -197q-52 -67 -146 -67q-50 0 -87 18.5q-37 18.5 -61.5 53q-24.5 34.5 -36.5 83q-12 48.5 -12 109.5zt0 0zM297 289q-5 66 -24 92.5q-19 26.5 -50 26.5q-29 0 -50 -25.5q-21 -25.5 -25 -93.5zM148 208q3 -61 24 -88.5q21 -27.5 50 -27.5q29 0 50 24.5q21 24.5 25 91.5zM177 704q3 -38 16 -55q13 -17 33 -17q21 0 33.5 16.5q12.5 16.5 17.5 54.5l90 -22q-11 -68 -50.5 -99.5q-39.5 -31.5 -93.5 -31.5q-26 0 -51 7q-25 7 -45 22.5q-20 15.5 -33.5 40.5q-13.5 25 -17.5 62z" />
-<glyph unicode="&#62750;" horiz-adv-x="552" d="M29 350q0 178 61 271q61 93 186 93q65 0 112 -25.5q47 -25.5 77 -73q30 -47.5 44 -115q14 -67.5 14 -150.5q0 -178 -62 -271q-62 -93 -185 -93q-66 0 -112.5 25.5q-46.5 25.5 -76.5 73q-30 47.5 -44 115q-14 67.5 -14 150.5zt0 0zM276 102q52 0 81.5 47q29.5 47 34.5 150l-231 0q3 -44 10.5 -80q7.5 -36 21.5 -62q14 -26 34.5 -40.5q20.5 -14.5 48.5 -14.5zt0 0zM391 405q-3 42 -10.5 77q-7.5 35 -21.5 61q-14 26 -34.5 40.5q-20.5 14.5 -48.5 14.5q-103 0 -115 -193zM118 798q0 26 15.5 42q15.5 16 53.5 16q35 0 50.5 -16q15.5 -16 15.5 -42q0 -26 -15.5 -41.5q-15.5 -15.5 -50.5 -15.5q-38 0 -53.5 15.5q-15.5 15.5 -15.5 41.5zt0 0zM300 798q0 26 15.5 42q15.5 16 51.5 16q37 0 52.5 -16q15.5 -16 15.5 -42q0 -26 -15.5 -41.5q-15.5 -15.5 -52.5 -15.5q-36 0 -51.5 15.5q-15.5 15.5 -15.5 41.5zt0 0zM226 1009q6 -61 56 -61q50 0 56 60l102 -15q-8 -65 -49 -94q-41 -29 -110 -29q-35 0 -64 6q-29 6 -51 20q-22 14 -36 37q-14 23 -18 58z" />
-<glyph unicode="&#62751;" horiz-adv-x="445" d="M25 250q0 129 51.5 196.5q51.5 67.5 145.5 67.5q50 0 87 -18.5q37 -18.5 62 -53q25 -34.5 37 -83q12 -48.5 12 -109.5q0 -130 -52 -197q-52 -67 -146 -67q-50 0 -87 18.5q-37 18.5 -61.5 53q-24.5 34.5 -36.5 83q-12 48.5 -12 109.5zt0 0zM297 289q-5 66 -24 92.5q-19 26.5 -50 26.5q-29 0 -50 -25.5q-21 -25.5 -25 -93.5zM148 208q3 -61 24 -88.5q21 -27.5 50 -27.5q29 0 50 24.5q21 24.5 25 91.5zM66 625q0 32 17.5 50q17.5 18 46.5 18q28 0 45 -18q17 -18 17 -50q0 -30 -17 -47.5q-17 -17.5 -45 -17.5q-29 0 -46.5 17.5q-17.5 17.5 -17.5 47.5zt0 0zM252 625q0 32 17 50q17 18 46 18q29 0 46 -18q17 -18 17 -50q0 -30 -17 -47.5q-17 -17.5 -46 -17.5q-29 0 -46 17.5q-17 17.5 -17 47.5zt0 0zM172 861q6 -61 56 -61q50 0 56 60l102 -15q-8 -65 -49 -94q-41 -29 -110 -29q-35 0 -64 6q-29 6 -51 20q-22 14 -36 37q-14 23 -18 58z" />
-<glyph unicode="&#62752;" horiz-adv-x="668" d="M497 700h126v-700h-126zM45 700h126v-251q9 2 30 5q21 3 41 3q42 0 78.5 -9.5q36.5 -9.5 63.5 -34.5q27 -25 43 -68.5q16 -43.5 16 -110.5q0 -123 -56 -183.5q-56 -60.5 -180 -60.5q-12 0 -31 0.5q-19 0.5 -41.5 2q-22.5 1.5 -46 5q-23.5 3.5 -43.5 8.5zM171 112q8 -3 20 -4.5q12 -1.5 25 -1.5q45 0 70 27.5q25 27.5 25 94.5q0 34 -7 56q-7 22 -19 35q-12 13 -29.5 17.5q-17.5 4.5 -38.5 4.5q-10 0 -25 -3q-15 -3 -21 -6zM187 856h289v-89l-289 0z" />
-<glyph unicode="&#62753;" horiz-adv-x="591" d="M162 105q21 -6 43 -6q32 0 45.5 16.5q13.5 16.5 13.5 54.5q0 35 -13 52q-13 17 -45 17q-23 0 -44 -6zM162 322q20 4 41 5.5q21 1.5 38 1.5q41 0 69 -11.5q28 -11.5 45 -32.5q17 -21 24.5 -49.5q7.5 -28.5 7.5 -61.5q0 -45 -10 -79q-10 -34 -33 -56.5q-23 -22.5 -60 -34q-37 -11.5 -92 -11.5q-48 0 -84.5 2q-36.5 2 -64.5 5l0 500h119zM430 500h119v-500h-119zM152 658h272v-91l-272 0z" />
-<glyph unicode="&#62754;" horiz-adv-x="477" d="M105 407h211q-2 42 -10.5 77q-8.5 35 -26 60.5q-17.5 25.5 -43 39.5q-25.5 14 -61.5 14q-43 0 -75.5 -10.5q-32.5 -10.5 -55.5 -24.5l-29 109q32 19 78 30.5q46 11.5 89 11.5q60 0 109.5 -19.5q49.5 -19.5 84 -62.5q34.5 -43 53.5 -112.5q19 -69.5 19 -168.5q0 -106 -22 -176.5q-22 -70.5 -60.5 -112.5q-38.5 -42 -89 -59q-50.5 -17 -107.5 -17q-49 0 -90.5 10q-41.5 10 -64.5 22l33 112q20 -10 53 -19q33 -9 74 -9q66 0 102 48.5q36 48.5 41 152.5l-212 0zM52 856h289v-89l-289 0z" />
-<glyph unicode="&#62755;" horiz-adv-x="377" d="M85 298h144q-3 54 -22.5 82q-19.5 28 -63.5 28q-31 0 -54 -6.5q-23 -6.5 -40 -17.5l-32 90q54 40 149 40q92 0 139 -65q47 -65 47 -199q0 -134 -51.5 -198.5q-51.5 -64.5 -145.5 -64.5q-37 0 -76.5 7.5q-39.5 7.5 -63.5 21.5l28 99q41 -22 94 -22q49 0 69.5 27.5q20.5 27.5 22.5 87.5l-144 0zM32 658h272v-91l-272 0z" />
-<glyph unicode="&#62756;" horiz-adv-x="477" d="M105 407h211q-2 42 -10.5 77q-8.5 35 -26 60.5q-17.5 25.5 -43 39.5q-25.5 14 -61.5 14q-43 0 -75.5 -10.5q-32.5 -10.5 -55.5 -24.5l-29 109q32 19 78 30.5q46 11.5 89 11.5q60 0 109.5 -19.5q49.5 -19.5 84 -62.5q34.5 -43 53.5 -112.5q19 -69.5 19 -168.5q0 -106 -22 -176.5q-22 -70.5 -60.5 -112.5q-38.5 -42 -89 -59q-50.5 -17 -107.5 -17q-49 0 -90.5 10q-41.5 10 -64.5 22l33 112q20 -10 53 -19q33 -9 74 -9q66 0 102 48.5q36 48.5 41 152.5l-212 0zM144 874q6 -61 56 -61q50 0 56 60l102 -15q-8 -65 -49 -94q-41 -29 -110 -29q-35 0 -64 6q-29 6 -51 20q-22 14 -36 37q-14 23 -18 58z" />
-<glyph unicode="&#62757;" horiz-adv-x="377" d="M85 298h144q-3 54 -22.5 82q-19.5 28 -63.5 28q-31 0 -54 -6.5q-23 -6.5 -40 -17.5l-32 90q54 40 149 40q92 0 139 -65q47 -65 47 -199q0 -134 -51.5 -198.5q-51.5 -64.5 -145.5 -64.5q-37 0 -76.5 7.5q-39.5 7.5 -63.5 21.5l28 99q41 -22 94 -22q49 0 69.5 27.5q20.5 27.5 22.5 87.5l-144 0zM122 704q3 -38 16 -55q13 -17 33 -17q21 0 33.5 16.5q12.5 16.5 17.5 54.5l90 -22q-11 -68 -50.5 -99.5q-39.5 -31.5 -93.5 -31.5q-26 0 -51 7q-25 7 -45 22.5q-20 15.5 -33.5 40.5q-13.5 25 -17.5 62z" />
-<glyph unicode="&#62758;" horiz-adv-x="475" d="M446 28q-13 -11 -31.5 -19q-18.5 -8 -40 -13q-21.5 -5 -44.5 -7.5q-23 -2.5 -44 -2.5q-54 0 -100.5 18.5q-46.5 18.5 -81.5 61.5q-35 43 -55 113q-20 70 -20 172q0 106 22.5 176q22.5 70 59 111.5q36.5 41.5 83.5 58.5q47 17 95 17q49 0 87.5 -8q38.5 -8 61.5 -18l-25 -111q-19 10 -46.5 15.5q-27.5 5.5 -62.5 5.5q-60 0 -96.5 -45q-36.5 -45 -45.5 -141l223 0v-104h-224q3 -46 14 -84q11 -38 29.5 -65q18.5 -27 45.5 -42q27 -15 63 -15q35 0 61.5 9.5q26.5 9.5 46.5 22.5zM123 798q0 26 15.5 42q15.5 16 53.5 16q35 0 50.5 -16q15.5 -16 15.5 -42q0 -26 -15.5 -41.5q-15.5 -15.5 -50.5 -15.5q-38 0 -53.5 15.5q-15.5 15.5 -15.5 41.5zt0 0zM305 798q0 26 15.5 42q15.5 16 51.5 16q37 0 52.5 -16q15.5 -16 15.5 -42q0 -26 -15.5 -41.5q-15.5 -15.5 -52.5 -15.5q-36 0 -51.5 15.5t-15.5 41.5z" />
-<glyph unicode="&#62759;" horiz-adv-x="371" d="M356 25q-23 -18 -61 -27.5q-38 -9.5 -74 -9.5q-50 0 -86.5 18.5q-36.5 18.5 -60.5 53q-24 34.5 -35.5 83q-11.5 48.5 -11.5 107.5q0 127 53.5 194.5q53.5 67.5 145.5 67.5q45 0 74.5 -7q29.5 -7 51.5 -19l-29 -101q-19 10 -38 14q-19 4 -41 4q-35 0 -60 -25.5q-25 -25.5 -33 -81.5l151 0v-86h-152q6 -51 30.5 -82q24.5 -31 69.5 -31q25 0 45 6q20 6 36 16zM56 631q0 32 17.5 50q17.5 18 46.5 18q28 0 45 -18q17 -18 17 -50q0 -30 -17 -47.5q-17 -17.5 -45 -17.5q-29 0 -46.5 17.5q-17.5 17.5 -17.5 47.5zt0 0zM242 631q0 32 17 50q17 18 46 18q29 0 46 -18q17 -18 17 -50q0 -30 -17 -47.5q-17 -17.5 -46 -17.5q-29 0 -46 17.5t-17 47.5z" />
-<glyph unicode="&#62760;" horiz-adv-x="486" d="M441 0h-126v279l-54 -19l-111 -260h-145l114 238l50 40q-53 15 -88 65.5q-35 50.5 -35 141.5q0 64 18 107q18 43 51 69q33 26 79 37.5q46 11.5 101 11.5q13 0 32.5 -1q19.5 -1 39.5 -3q20 -2 39.5 -5.5q19.5 -3.5 34.5 -7.5zM315 589q-9 3 -18 4q-9 1 -22 1q-20 0 -38 -5.5q-18 -5.5 -31 -19q-13 -13.5 -20.5 -35.5q-7.5 -22 -7.5 -55q0 -63 27.5 -90.5q27.5 -27.5 71.5 -27.5h38zM126 856h289v-89l-289 0z" />
-<glyph unicode="&#62761;" horiz-adv-x="421" d="M262 189l-45 -12l-71 -177h-139l76 161l39 32q-40 10 -65 48q-25 38 -25 96q0 91 50 134q50 43 159 42q42 0 78.5 -4q36.5 -4 61.5 -10l0 -499h-119zM262 256v144q-15 7 -37 7q-70 0 -70 -77q0 -74 79 -76zM80 658h272v-91l-272 0z" />
-<glyph unicode="&#62762;" horiz-adv-x="486" d="M441 0h-126v279l-54 -19l-111 -260h-145l114 238l50 40q-53 15 -88 65.5q-35 50.5 -35 141.5q0 64 18 107q18 43 51 69q33 26 79 37.5q46 11.5 101 11.5q13 0 32.5 -1q19.5 -1 39.5 -3q20 -2 39.5 -5.5q19.5 -3.5 34.5 -7.5zM315 589q-9 3 -18 4q-9 1 -22 1q-20 0 -38 -5.5q-18 -5.5 -31 -19q-13 -13.5 -20.5 -35.5q-7.5 -22 -7.5 -55q0 -63 27.5 -90.5q27.5 -27.5 71.5 -27.5h38zM216 874q6 -61 56 -61q50 0 56 60l102 -15q-8 -65 -49 -94q-41 -29 -110 -29q-35 0 -64 6q-29 6 -51 20q-22 14 -36 37q-14 23 -18 58z" />
-<glyph unicode="&#62763;" horiz-adv-x="421" d="M262 189l-45 -12l-71 -177h-139l76 161l39 32q-40 10 -65 48q-25 38 -25 96q0 91 50 134q50 43 159 42q42 0 78.5 -4q36.5 -4 61.5 -10l0 -499h-119zM262 256v144q-15 7 -37 7q-70 0 -70 -77q0 -74 79 -76zM178 704q3 -38 16 -55q13 -17 33 -17q21 0 33.5 16.5q12.5 16.5 17.5 54.5l90 -22q-11 -68 -50.5 -99.5q-39.5 -31.5 -93.5 -31.5q-26 0 -51 7q-25 7 -45 22.5q-20 15.5 -33.5 40.5q-13.5 25 -17.5 62z" />
-<glyph unicode="&#62764;" horiz-adv-x="743" d="M171 412h71q8 143 64.5 222.5q56.5 79.5 169.5 79.5q65 0 110.5 -26q45.5 -26 74 -74q28.5 -48 41 -115q12.5 -67 12.5 -149q0 -175 -58 -269.5q-58 -94.5 -181 -94.5q-57 0 -99 21.5q-42 21.5 -70.5 62q-28.5 40.5 -44 98q-15.5 57.5 -19.5 128.5l-71 0v-296h-126v700h126zM368 350q0 -54 5 -99.5q5 -45.5 17.5 -78.5q12.5 -33 33 -51.5q20.5 -18.5 51.5 -18.5q58 0 82.5 58.5q24.5 58.5 24.5 189.5q0 52 -4.5 97.5q-4.5 45.5 -16.5 79q-12 33.5 -32.5 52.5q-20.5 19 -53.5 19q-57 0 -82 -60.5q-25 -60.5 -25 -187.5zt0 0zM244 856h289v-89l-289 0z" />
-<glyph unicode="&#62765;" horiz-adv-x="611" d="M400 -12q-93 0 -133.5 56q-40.5 56 -47.5 160l-57 0v-204h-119v500h119v-190h58q9 100 51.5 151q42.5 51 130.5 51q96 0 140 -68.5q44 -68.5 44 -193.5q0 -262 -186 -262zt0 0zM332 250q0 -77 15 -116.5q15 -39.5 53 -39.5q16 0 28 7q12 7 20 25q8 18 11.5 48q3.5 30 3.5 76q0 82 -14 119q-14 37 -51 37q-34 0 -50 -34.5q-16 -34.5 -16 -121.5zt0 0zM160 658h272v-91l-272 0z" />
-<glyph unicode="&#62766;" horiz-adv-x="743" d="M171 412h71q8 143 64.5 222.5q56.5 79.5 169.5 79.5q65 0 110.5 -26q45.5 -26 74 -74q28.5 -48 41 -115q12.5 -67 12.5 -149q0 -175 -58 -269.5q-58 -94.5 -181 -94.5q-57 0 -99 21.5q-42 21.5 -70.5 62q-28.5 40.5 -44 98q-15.5 57.5 -19.5 128.5l-71 0v-296h-126v700h126zM368 350q0 -54 5 -99.5q5 -45.5 17.5 -78.5q12.5 -33 33 -51.5q20.5 -18.5 51.5 -18.5q58 0 82.5 58.5q24.5 58.5 24.5 189.5q0 52 -4.5 97.5q-4.5 45.5 -16.5 79q-12 33.5 -32.5 52.5q-20.5 19 -53.5 19q-57 0 -82 -60.5q-25 -60.5 -25 -187.5zt0 0zM316 874q6 -61 56 -61q50 0 56 60l102 -15q-8 -65 -49 -94q-41 -29 -110 -29q-35 0 -64 6q-29 6 -51 20q-22 14 -36 37q-14 23 -18 58z" />
-<glyph unicode="&#62767;" horiz-adv-x="611" d="M400 -12q-93 0 -133.5 56q-40.5 56 -47.5 160l-57 0v-204h-119v500h119v-190h58q9 100 51.5 151q42.5 51 130.5 51q96 0 140 -68.5q44 -68.5 44 -193.5q0 -262 -186 -262zt0 0zM332 250q0 -77 15 -116.5q15 -39.5 53 -39.5q16 0 28 7q12 7 20 25q8 18 11.5 48q3.5 30 3.5 76q0 82 -14 119q-14 37 -51 37q-34 0 -50 -34.5q-16 -34.5 -16 -121.5zt0 0zM257 704q3 -38 16 -55q13 -17 33 -17q21 0 33.5 16.5q12.5 16.5 17.5 54.5l90 -22q-11 -68 -50.5 -99.5q-39.5 -31.5 -93.5 -31.5q-26 0 -51 7q-25 7 -45 22.5q-20 15.5 -33.5 40.5q-13.5 25 -17.5 62z" />
-<glyph unicode="&#62768;" horiz-adv-x="558" d="M345 584h-106q-7 -190 -19 -317.5q-12 -127.5 -46 -194.5q-12 -24 -27.5 -39.5q-15.5 -15.5 -31 -24q-15.5 -8.5 -31.5 -12q-16 -3.5 -29 -3.5q-21 0 -37 3.5q-16 3.5 -30 10.5v114q32 -7 50 -0.5q18 6.5 30 32.5q12 22 21 64.5q9 42.5 15.5 109.5q6.5 67 10 159q3.5 92 5.5 214l351 0v-584h74v-241h-89l-12 125l-99 0z" />
-<glyph unicode="&#62769;" horiz-adv-x="472" d="M271 391h-72q-4 -87 -11 -160q-7 -73 -22 -125.5q-15 -52.5 -40.5 -82q-25.5 -29.5 -66.5 -29.5q-25 0 -43 3.5q-18 3.5 -31 11.5l14 104q24 -8 40.5 1q16.5 9 27.5 49.5q11 40.5 17.5 120.5q6.5 80 9.5 216l296 0v-391h71v-223h-88l-13 114l-89 0z" />
-<glyph unicode="&#62770;" horiz-adv-x="547" d="M171 700v-366l-11 -102h5l40 109l199 359h98v-730q0 -83 -29.5 -130.5q-29.5 -47.5 -103.5 -47.5q-29 0 -61 7l0 106q21 -2 34.5 3.5q13.5 5.5 21 18q7.5 12.5 10 31q2.5 18.5 2.5 42.5v373l10 99h-5l-38 -106l-199 -366h-99v700zM230 874q6 -61 56 -61q50 0 56 60l102 -15q-8 -65 -49 -94q-41 -29 -110 -29q-35 0 -64 6q-29 6 -51 20q-22 14 -36 37q-14 23 -18 58z" />
-<glyph unicode="&#62771;" horiz-adv-x="450" d="M187 704q3 -38 16 -55q13 -17 33 -17q21 0 33.5 16.5q12.5 16.5 17.5 54.5l90 -22q-11 -68 -50.5 -99.5q-39.5 -31.5 -93.5 -31.5q-26 0 -51 7q-25 7 -45 22.5q-20 15.5 -33.5 40.5q-13.5 25 -17.5 62zM288 218l9 81h-3l-37 -85l-134 -214h-80v500h119v-227l-9 -78h3l36 83l135 222h80v-531q0 -84 -31 -129.5q-31 -45.5 -100 -45.5q-13 0 -27.5 1.5q-14.5 1.5 -30.5 5.5l0 103q43 -4 56.5 20.5q13.5 24.5 13.5 85.5z" />
-<glyph unicode="&#62772;" horiz-adv-x="553" d="M29 350q0 178 61 271q61 93 186 93q65 0 112 -25.5q47 -25.5 77 -73q30 -47.5 44.5 -115q14.5 -67.5 14.5 -150.5q0 -178 -62.5 -271q-62.5 -93 -185.5 -93q-66 0 -112.5 25.5q-46.5 25.5 -76.5 73q-30 47.5 -44 115q-14 67.5 -14 150.5zt0 0zM161 350q0 -53 6 -98.5q6 -45.5 20 -78.5q14 -33 35.5 -52q21.5 -19 53.5 -19q58 0 87 59q29 59 29 189q0 51 -6 96.5q-6 45.5 -19.5 79q-13.5 33.5 -35.5 53q-22 19.5 -55 19.5q-115 0 -115 -248zt0 0zM199 799q0 25 19.5 43q19.5 18 57.5 18q39 0 59 -18q20 -18 20 -43q0 -26 -20 -44q-20 -18 -59 -18q-38 0 -57.5 18t-19.5 44z" />
-<glyph unicode="&#62773;" horiz-adv-x="445" d="M25 250q0 133 52 198q52 65 145 65q100 0 149 -66q49 -66 49 -197q0 -134 -52 -198.5q-52 -64.5 -146 -64.5q-197 0 -197 263zt0 0zM148 250q0 -75 17 -116q17 -41 57 -41q38 0 56.5 35.5q18.5 35.5 18.5 121.5q0 77 -17 117q-17 40 -58 40q-35 0 -54.5 -35.5q-19.5 -35.5 -19.5 -121.5zt0 0zM148 641q0 30 19 49.5q19 19.5 54 19.5q35 0 56 -19q21 -19 21 -50q0 -31 -21 -49q-21 -18 -56 -18q-35 0 -54 18.5t-19 48.5z" />
-<glyph unicode="&#62774;" horiz-adv-x="668" d="M497 700h126v-700h-126zM45 700h126v-251q9 2 30 5q21 3 41 3q42 0 78.5 -9.5q36.5 -9.5 63.5 -34.5q27 -25 43 -68.5q16 -43.5 16 -110.5q0 -123 -56 -183.5q-56 -60.5 -180 -60.5q-12 0 -31 0.5q-19 0.5 -41.5 2q-22.5 1.5 -46 5q-23.5 3.5 -43.5 8.5zM171 112q8 -3 20 -4.5q12 -1.5 25 -1.5q45 0 70 27.5q25 27.5 25 94.5q0 34 -7 56q-7 22 -19 35q-12 13 -29.5 17.5q-17.5 4.5 -38.5 4.5q-10 0 -25 -3q-15 -3 -21 -6zM285 874q6 -61 56 -61q50 0 56 60l102 -15q-8 -65 -49 -94q-41 -29 -110 -29q-35 0 -64 6q-29 6 -51 20q-22 14 -36 37q-14 23 -18 58z" />
-<glyph unicode="&#62775;" horiz-adv-x="591" d="M162 105q21 -6 43 -6q32 0 45.5 16.5q13.5 16.5 13.5 54.5q0 35 -13 52q-13 17 -45 17q-23 0 -44 -6zM162 322q20 4 41 5.5q21 1.5 38 1.5q41 0 69 -11.5q28 -11.5 45 -32.5q17 -21 24.5 -49.5q7.5 -28.5 7.5 -61.5q0 -45 -10 -79q-10 -34 -33 -56.5q-23 -22.5 -60 -34q-37 -11.5 -92 -11.5q-48 0 -84.5 2q-36.5 2 -64.5 5l0 500h119zM430 500h119v-500h-119zM250 704q3 -38 16 -55q13 -17 33 -17q21 0 33.5 16.5q12.5 16.5 17.5 54.5l90 -22q-11 -68 -50.5 -99.5q-39.5 -31.5 -93.5 -31.5q-26 0 -51 7q-25 7 -45 22.5q-20 15.5 -33.5 40.5q-13.5 25 -17.5 62z" />
-<glyph unicode="&#62776;" horiz-adv-x="442" d="M318 313q-13 0 -17.5 0q-4.5 0 -14.5 -1q-70 -2 -97.5 -29.5q-27.5 -27.5 -27.5 -75.5q0 -52 29 -78.5q29 -26.5 75 -26.5q39 0 72.5 11.5q33.5 11.5 51.5 21.5l34 -102q-24 -17 -71.5 -32q-47.5 -15 -104.5 -15q-102 0 -160 50.5q-58 50.5 -58 159.5q0 73 28.5 116q28.5 43 79.5 57l0 6q-46 21 -68 65.5q-22 44.5 -22 96.5q0 49 16.5 82.5q16.5 33.5 44 54q27.5 20.5 64 29.5q36.5 9 76.5 9q26 0 50.5 -3.5q24.5 -3.5 46 -9.5q21.5 -6 38.5 -13q17 -7 27 -13l-32 -105q-20 11 -49.5 19.5q-29.5 8.5 -59.5 8.5q-44 0 -67 -19q-23 -19 -23 -63q0 -40 21 -62q21 -22 48 -29q13 -5 34 -7q21 -2 36 -2h22v-101zM81 798q0 26 15.5 42q15.5 16 53.5 16q35 0 50.5 -16q15.5 -16 15.5 -42q0 -26 -15.5 -41.5q-15.5 -15.5 -50.5 -15.5q-38 0 -53.5 15.5q-15.5 15.5 -15.5 41.5zt0 0zM263 798q0 26 15.5 42q15.5 16 51.5 16q37 0 52.5 -16q15.5 -16 15.5 -42q0 -26 -15.5 -41.5q-15.5 -15.5 -52.5 -15.5q-36 0 -51.5 15.5t-15.5 41.5z" />
-<glyph unicode="&#62777;" horiz-adv-x="355" d="M230 210q-50 0 -68 -14.5q-18 -14.5 -18 -40.5q0 -26 18 -43q18 -17 53 -17q31 0 56.5 7q25.5 7 42.5 18l24 -97q-21 -14 -55.5 -24q-34.5 -10 -81.5 -10q-46 0 -79 11q-33 11 -54.5 31.5q-21.5 20.5 -32 48q-10.5 27.5 -10.5 60.5q0 51 19.5 80q19.5 29 60.5 43l0 4q-33 14 -49 46q-16 32 -16 67q0 64 39 96.5q39 32.5 105 32.5q52 0 90 -9.5q38 -9.5 64 -24.5v-96q-43 9 -66 16.5q-23 7.5 -52 7.5q-60 0 -60 -53q0 -23 17 -38q17 -15 44 -15h48v-87zM38 631q0 32 17.5 50q17.5 18 46.5 18q28 0 45 -18q17 -18 17 -50q0 -30 -17 -47.5q-17 -17.5 -45 -17.5q-29 0 -46.5 17.5q-17.5 17.5 -17.5 47.5zt0 0zM224 631q0 32 17 50q17 18 46 18q29 0 46 -18q17 -18 17 -50q0 -30 -17 -47.5q-17 -17.5 -46 -17.5q-29 0 -46 17.5t-17 47.5z" />
-<glyph unicode="&#62778;" horiz-adv-x="238" d="M56 700h126v-700h-126zM41 799q0 25 19.5 43q19.5 18 57.5 18q39 0 59 -18q20 -18 20 -43q0 -26 -20 -44q-20 -18 -59 -18q-38 0 -57.5 18t-19.5 44z" />
-<glyph unicode="&#62779;" horiz-adv-x="225" d="M53 500h119v-500l-119 0z" />
-<glyph unicode="&#62780;" horiz-adv-x="419" d="M45 700h350v-116h-224v-182h206v-116h-206v-286l-126 0z" />
-<glyph unicode="&#62781;" horiz-adv-x="334" d="M314 391h-152v-116h138v-98h-138v-177h-119v500l271 0z" />
-<glyph unicode="&#62782;" horiz-adv-x="457" d="M442 28q-18 -15 -45.5 -24.5q-27.5 -9.5 -57.5 -13.5l-11 -165h-82l-15 166q-44 8 -81 32q-37 24 -64 67.5q-27 43.5 -42 107.5q-15 64 -15 153q0 106 22.5 176q22.5 70 59 111.5q36.5 41.5 83.5 58.5q47 17 95 17q49 0 85.5 -8q36.5 -8 59.5 -18l-25 -111q-19 10 -44.5 15.5q-25.5 5.5 -60.5 5.5q-69 0 -106 -60q-37 -60 -37 -188q0 -55 8.5 -100.5q8.5 -45.5 27 -78.5q18.5 -33 47 -51q28.5 -18 68.5 -18q35 0 60 9.5q25 9.5 45 22.5z" />
-<glyph unicode="&#62783;" horiz-adv-x="350" d="M338 27q-30 -24 -73 -33l-11 -169h-82l-16 168q-71 18 -101 85.5q-30 67.5 -30 171.5q0 131 47 197q47 66 138 66q45 0 73.5 -8q28.5 -8 50.5 -20l-28 -99q-18 9 -34.5 13.5q-16.5 4.5 -39.5 4.5q-42 0 -63 -36.5q-21 -36.5 -21 -117.5q0 -68 21.5 -111q21.5 -43 68.5 -43q25 0 42.5 6.5q17.5 6.5 32.5 16.5z" />
-<glyph unicode="&#62784;" horiz-adv-x="535" d="M45 700q18 3 40.5 4.5q22.5 1.5 46 3q23.5 1.5 45.5 2q22 0.5 39 0.5q83 0 138.5 -25.5q55.5 -25.5 89 -72q33.5 -46.5 47.5 -111.5q14 -65 14 -145q0 -73 -13.5 -139.5q-13.5 -66.5 -47.5 -117q-34 -50.5 -92 -80.5q-58 -30 -146 -30q-13 0 -35 1q-22 1 -46 2.5q-24 1.5 -46 3q-22 1.5 -34 3.5zM229 594q-16 0 -32.5 -0.5q-16.5 -0.5 -25.5 -2.5l0 -482q3 -1 10.5 -1.5q7.5 -0.5 16 -1q8.5 -0.5 16 -1q7.5 -0.5 10.5 -0.5q45 0 74 21q29 21 45.5 56q16.5 35 23 80.5q6.5 45.5 6.5 95.5q0 46 -5.5 89q-5.5 43 -21 75.5q-15.5 32.5 -44 52q-28.5 19.5 -73.5 19.5zt0 0zM247 870h143v-30l-132 -88l-93 0z" />
-<glyph unicode="&#62785;" horiz-adv-x="445" d="M402 176q0 -42 1 -84q1 -42 8 -93l-84 0l-16 58h-4q-34 -70 -119 -70q-76 0 -119.5 60q-43.5 60 -43.5 195q0 132 47 200.5q47 68.5 140 68.5q24 0 40 -3q16 -3 31 -10l0 202h119zM216 96q27 0 43 13.5q16 13.5 24 39.5l0 236q-10 9 -22.5 13q-12.5 4 -32.5 4q-40 0 -60 -36q-20 -36 -20 -128q0 -69 16.5 -105.5q16.5 -36.5 51.5 -36.5zt0 0zM464 700h119v-30l-94 -124l-67 0z" />
-<glyph unicode="&#62786;" horiz-adv-x="533" d="M362 296h-191v-296h-126v700h126v-288h191v288h126v-700h-126zM287 870h143v-30l-132 -88l-93 0z" />
-<glyph unicode="&#62787;" horiz-adv-x="449" d="M291 0v302q0 54 -12.5 78q-12.5 24 -45.5 24q-24 0 -44 -17q-20 -17 -27 -43l0 -344h-119v700h119v-245h3q20 26 48.5 42q28.5 16 71.5 16q31 0 54 -9q23 -9 39 -30q16 -21 24 -56.5q8 -35.5 8 -89.5v-328zM266 720h119v-30l-94 -124l-67 0z" />
-<glyph unicode="&#62788;" horiz-adv-x="424" d="M417 0h-372v700h126v-584h246zM256 700h119v-30l-94 -124l-67 0z" />
-<glyph unicode="&#62789;" horiz-adv-x="243" d="M164 162q0 -35 7 -50q7 -15 23 -15q9 0 18.5 2q9.5 2 21.5 7l11 -96q-12 -8 -41 -15q-29 -7 -59 -7q-50 0 -75 25q-25 25 -25 85v602h119zM230 700h119v-30l-94 -124l-67 0z" />
-<glyph unicode="&#62790;" horiz-adv-x="474" d="M466 584h-166v-584h-126v584h-166v116h458zM264 870h143v-30l-132 -88l-93 0z" />
-<glyph unicode="&#62791;" horiz-adv-x="291" d="M4 500h55v94l119 37v-131h97v-106h-97v-218q0 -43 8.5 -61q8.5 -18 30.5 -18q15 0 27 3q12 3 26 9l15 -95q-22 -11 -51 -18.5q-29 -7.5 -61 -7.5q-57 0 -85.5 33q-28.5 33 -28.5 111v262h-55zM257 700h119v-30l-94 -124l-67 0z" />
-<glyph unicode="&#62792;" horiz-adv-x="503" d="M243 289l14 -120h4l16 121l102 410h133l-212 -705h-96l-214 705h149zM277 870h143v-30l-132 -88l-93 0z" />
-<glyph unicode="&#62793;" horiz-adv-x="399" d="M195 239l12 -79h4l11 80l62 260h128l-168 -505h-80l-177 505h139zM196 720h119v-30l-94 -124l-67 0z" />
-<glyph unicode="&#62794;" horiz-adv-x="435" d="M98 313v102h24q15 0 37 1q22 1 35 6q27 8 46 30q19 22 19 57q0 49 -23.5 68q-23.5 19 -65.5 19q-34 0 -63.5 -10.5q-29.5 -10.5 -46.5 -21.5l-32 109q10 6 28 13q18 7 40.5 13q22.5 6 48 9.5q25.5 3.5 51.5 3.5q38 0 73.5 -7.5q35.5 -7.5 62.5 -27q27 -19.5 43 -53.5q16 -34 16 -87q0 -51 -21.5 -95q-21.5 -44 -69.5 -65l0 -6q52 -14 80.5 -56q28.5 -42 28.5 -114q0 -57 -18.5 -98q-18.5 -41 -50 -67q-31.5 -26 -72.5 -38q-41 -12 -85 -12q-54 0 -99 9.5q-45 9.5 -72 25.5l33 112q19 -11 52.5 -21q33.5 -10 78.5 -10q41 0 71 26.5q30 26.5 30 83.5q0 49 -27.5 73.5q-27.5 24.5 -96.5 26.5q-11 0 -15 0.5q-4 0.5 -17 0.5z" />
-<glyph unicode="&#62795;" horiz-adv-x="364" d="M81 137v87h45q14 0 27 8.5q13 8.5 23.5 22q10.5 13.5 17 31q6.5 17.5 6.5 36.5q0 82 -77 82q-29 0 -48 -7q-19 -7 -34 -17l-24 94q27 17 65.5 26q38.5 9 80.5 9q79 0 118 -42q39 -42 39 -109q0 -25 -6.5 -49q-6.5 -24 -17.5 -45q-11 -21 -25.5 -37.5q-14.5 -16.5 -31.5 -25.5l0 -4q21 -6 40.5 -19.5q19.5 -13.5 33.5 -35.5q14 -22 22.5 -52.5q8.5 -30.5 8.5 -71.5q0 -60 -16.5 -103q-16.5 -43 -45 -71q-28.5 -28 -65.5 -41.5q-37 -13.5 -79 -13.5q-39 0 -73.5 9.5q-34.5 9.5 -56.5 23.5l33 96q19 -11 40 -17.5q21 -6.5 41 -6.5q19 0 37.5 6q18.5 6 32.5 20q14 14 23 37.5q9 23.5 9 58.5q0 60 -30 90.5q-30 30.5 -81 30.5z" />
-<glyph unicode="&#62796;" horiz-adv-x="435" d="M98 313v102h24q15 0 37 1q22 1 35 6q27 8 46 30q19 22 19 57q0 49 -23.5 68q-23.5 19 -65.5 19q-34 0 -63.5 -10.5q-29.5 -10.5 -46.5 -21.5l-32 109q10 6 28 13q18 7 40.5 13q22.5 6 48 9.5q25.5 3.5 51.5 3.5q38 0 73.5 -7.5q35.5 -7.5 62.5 -27q27 -19.5 43 -53.5q16 -34 16 -87q0 -51 -21.5 -95q-21.5 -44 -69.5 -65l0 -6q52 -14 80.5 -56q28.5 -42 28.5 -114q0 -57 -18.5 -98q-18.5 -41 -50 -67q-31.5 -26 -72.5 -38q-41 -12 -85 -12q-54 0 -99 9.5q-45 9.5 -72 25.5l33 112q19 -11 52.5 -21q33.5 -10 78.5 -10q41 0 71 26.5q30 26.5 30 83.5q0 49 -27.5 73.5q-27.5 24.5 -96.5 26.5q-11 0 -15 0.5q-4 0.5 -17 0.5zM243 737h-87l-104 94v39h91l42 -45l17 -30l17 29l45 46h88l0 -40z" />
-<glyph unicode="&#62797;" horiz-adv-x="364" d="M81 137v87h45q14 0 27 8.5q13 8.5 23.5 22q10.5 13.5 17 31q6.5 17.5 6.5 36.5q0 82 -77 82q-29 0 -48 -7q-19 -7 -34 -17l-24 94q27 17 65.5 26q38.5 9 80.5 9q79 0 118 -42q39 -42 39 -109q0 -25 -6.5 -49q-6.5 -24 -17.5 -45q-11 -21 -25.5 -37.5q-14.5 -16.5 -31.5 -25.5l0 -4q21 -6 40.5 -19.5q19.5 -13.5 33.5 -35.5q14 -22 22.5 -52.5q8.5 -30.5 8.5 -71.5q0 -60 -16.5 -103q-16.5 -43 -45 -71q-28.5 -28 -65.5 -41.5q-37 -13.5 -79 -13.5q-39 0 -73.5 9.5q-34.5 9.5 -56.5 23.5l33 96q19 -11 40 -17.5q21 -6.5 41 -6.5q19 0 37.5 6q18.5 6 32.5 20q14 14 23 37.5q9 23.5 9 58.5q0 60 -30 90.5q-30 30.5 -81 30.5zM203 550h-88l-95 182h98l32 -66l13 -49l13 49l37 66l91 0z" />
-<glyph unicode="&#63020;" horiz-adv-x="190" d="M159 443q0 -29 -17.5 -46.5q-17.5 -17.5 -43.5 -17.5q-32 0 -50.5 23.5q-18.5 23.5 -18.5 61.5q0 39 11 67q11 28 27 47q16 19 32.5 30q16.5 11 28.5 16l32 -51q-17 -9 -30.5 -27q-13.5 -18 -15.5 -39q17 -2 31 -18.5t14 -45.5z" />
-<glyph unicode="&#63021;" horiz-adv-x="188" d="M29 469q0 29 17.5 47q17.5 18 43.5 18q32 0 50.5 -22.5q18.5 -22.5 18.5 -62.5q0 -39 -11 -66q-11 -27 -26.5 -45.5q-15.5 -18.5 -32.5 -29.5q-17 -11 -29 -16l-30 50q17 8 30 24q13 16 15 39q-17 1 -31.5 16.5t-14.5 47.5z" />
-<glyph unicode="&#63022;" horiz-adv-x="342" d="M159 443q0 -29 -17.5 -46.5q-17.5 -17.5 -43.5 -17.5q-32 0 -50.5 23.5q-18.5 23.5 -18.5 61.5q0 39 11 67q11 28 27 47q16 19 32.5 30q16.5 11 28.5 16l32 -51q-17 -9 -30.5 -27q-13.5 -18 -15.5 -39q17 -2 31 -18.5q14 -16.5 14 -45.5zt0 0zM312 443q0 -29 -17.5 -46.5q-17.5 -17.5 -43.5 -17.5q-32 0 -50.5 23.5q-18.5 23.5 -18.5 61.5q0 39 11 67q11 28 27 47q16 19 32.5 30q16.5 11 28.5 16l32 -51q-17 -9 -30.5 -27q-13.5 -18 -15.5 -39q17 -2 31 -18.5t14 -45.5z" />
-<glyph unicode="&#63023;" horiz-adv-x="342" d="M29 469q0 29 17.5 47q17.5 18 43.5 18q32 0 50.5 -22.5q18.5 -22.5 18.5 -62.5q0 -39 -11 -66q-11 -27 -26.5 -45.5q-15.5 -18.5 -32.5 -29.5q-17 -11 -29 -16l-30 50q17 8 30 24q13 16 15 39q-17 1 -31.5 16.5q-14.5 15.5 -14.5 47.5zt0 0zM182 469q0 29 17.5 47q17.5 18 43.5 18q32 0 50.5 -22.5q18.5 -22.5 18.5 -62.5q0 -39 -11 -66q-11 -27 -26.5 -45.5q-15.5 -18.5 -32.5 -29.5q-17 -11 -29 -16l-30 50q17 8 30 24q13 16 15 39q-17 1 -31.5 16.5t-14.5 47.5z" />
-<glyph unicode="&#63028;" horiz-adv-x="217" d="M73 525h103l-31 -216l-72 0z" />
-<glyph unicode="&#63029;" horiz-adv-x="351" d="M73 525h103l-31 -216h-72zM207 525h103l-31 -216l-72 0z" />
-<glyph unicode="&#63074;" horiz-adv-x="353" d="M146 544l8 46l-26 -33l-44 -31l-45 70l131 111h81v-427l-105 0z" />
-<glyph unicode="&#63171;" horiz-adv-x="253" d="M61 -106q0 29 18 46.5q18 17.5 44 17.5q31 0 50.5 -22q19.5 -22 19.5 -67q0 -33 -10 -58q-10 -25 -24.5 -42q-14.5 -17 -30 -27.5q-15.5 -10.5 -27.5 -14.5l-33 46q13 8 25 23.5q12 15.5 14 37.5q-15 1 -30.5 15t-15.5 45z" />
-<glyph unicode="&#63177;" horiz-adv-x="345" d="M142 870h143v-30l-132 -88l-93 0z" />
-<glyph unicode="&#63178;" horiz-adv-x="420" d="M251 737h-87l-104 94v39h91l42 -45l17 -30l17 29l45 46h88l0 -40z" />
-<glyph unicode="&#63179;" horiz-adv-x="437" d="M60 798q0 26 15.5 42q15.5 16 53.5 16q35 0 50.5 -16q15.5 -16 15.5 -42q0 -26 -15.5 -41.5q-15.5 -15.5 -50.5 -15.5q-38 0 -53.5 15.5q-15.5 15.5 -15.5 41.5zt0 0zM242 798q0 26 15.5 42q15.5 16 51.5 16q37 0 52.5 -16q15.5 -16 15.5 -42q0 -26 -15.5 -41.5q-15.5 -15.5 -52.5 -15.5q-36 0 -51.5 15.5t-15.5 41.5z" />
-<glyph unicode="&#63182;" horiz-adv-x="344" d="M284 752h-94l-130 88v30l142 0z" />
-<glyph unicode="&#63183;" horiz-adv-x="465" d="M108 850h120v-16l-82 -93h-86zM280 850h125v-16l-118 -93l-86 0z" />
-<glyph unicode="&#63184;" horiz-adv-x="409" d="M60 856h289v-89l-289 0z" />
-<glyph unicode="&#63185;" horiz-adv-x="448" d="M174 874q6 -61 56 -61q50 0 56 60l102 -15q-8 -65 -49 -94q-41 -29 -110 -29q-35 0 -64 6q-29 6 -51 20q-22 14 -36 37q-14 23 -18 58z" />
-<glyph unicode="&#63188;" horiz-adv-x="411" d="M161 704q3 -38 16 -55q13 -17 33 -17q21 0 33.5 16.5q12.5 16.5 17.5 54.5l90 -22q-11 -68 -50.5 -99.5q-39.5 -31.5 -93.5 -31.5q-26 0 -51 7q-25 7 -45 22.5q-20 15.5 -33.5 40.5q-13.5 25 -17.5 62z" />
-<glyph unicode="&#64257;" horiz-adv-x="460" d="M413 500v-500h-119v394h-112v-394h-119v394h-54v106h54v28q0 95 41.5 138.5q41.5 43.5 121.5 43.5q58 0 104 -9.5q46 -9.5 75 -24.5l-31 -98q-24 12 -54.5 19q-30.5 7 -65.5 7q-23 0 -37 -7q-14 -7 -22 -20.5q-8 -13.5 -10.5 -33q-2.5 -19.5 -2.5 -43.5z" />
-<glyph unicode="&#64258;" horiz-adv-x="492" d="M292 600q-9 2 -25 4.5q-16 2.5 -31 2.5q-35 0 -44.5 -26q-9.5 -26 -9.5 -81l57 0v-106h-57v-394h-119v394h-54v106h54v28q0 47 9 82q9 35 29.5 58q20.5 23 53.5 34q33 11 80 11q20 0 45.5 -2q25.5 -2 50.5 -4.5q25 -2.5 46.5 -5.5q21.5 -3 33.5 -6l0 -534q0 -66 30 -66q9 0 18 2q9 2 22 8l13 -95q-14 -8 -42 -16q-28 -8 -61 -8q-49 0 -74 25.5q-25 25.5 -25 85.5z" />
diff --git a/admin/survey/Fonts/PTSans/PTN77F_W.ttf b/admin/survey/Fonts/PTSans/PTN77F_W.ttf
deleted file mode 100644
index cbc2182..0000000
--- a/admin/survey/Fonts/PTSans/PTN77F_W.ttf
+++ /dev/null
Binary files differ
diff --git a/admin/survey/Fonts/PTSans/PTN77F_W.woff b/admin/survey/Fonts/PTSans/PTN77F_W.woff
deleted file mode 100644
index d1fb8f1..0000000
--- a/admin/survey/Fonts/PTSans/PTN77F_W.woff
+++ /dev/null
Binary files differ
diff --git a/admin/survey/Fonts/PTSans/PTS55F_W.eot b/admin/survey/Fonts/PTSans/PTS55F_W.eot
deleted file mode 100644
index c8db3d0..0000000
--- a/admin/survey/Fonts/PTSans/PTS55F_W.eot
+++ /dev/null
Binary files differ
diff --git a/admin/survey/Fonts/PTSans/PTS55F_W.svg b/admin/survey/Fonts/PTSans/PTS55F_W.svg
deleted file mode 100644
index a6d1182..0000000
--- a/admin/survey/Fonts/PTSans/PTS55F_W.svg
+++ /dev/null
@@ -1,728 +0,0 @@
-<?xml version="1.0" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
-<svg xmlns="http://www.w3.org/2000/svg">
-<metadata>
-Generated by SVGconv.
-Copyright : Copyright 2009 ParaType Ltd. All rights reserved.
-Designer : A.Korolkova, O.Umpeleva, V.Yefimov
-Foundry : ParaType Ltd
-Foundry URL : http://www.paratype.com
-</metadata>
-<defs>
-<font id="PTSans-Regular" horiz-adv-x="526" >
-<font-face units-per-em="1000" ascent="1018" descent="276" />
-<missing-glyph horiz-adv-x="750" />
-<glyph unicode="&#32;" horiz-adv-x="267" />
-<glyph unicode="&#33;" horiz-adv-x="305" d="M127 700h83v-347l-17 -176h-49l-17 176zM110 46q0 27 15.5 42.5q15.5 15.5 41.5 15.5q27 0 43 -15.5q16 -15.5 16 -42.5q0 -26 -16 -42q-16 -16 -43 -16q-26 0 -41.5 16t-15.5 42z" />
-<glyph unicode="&#34;" horiz-adv-x="335" d="M207 700h78l-31 -193h-47zM90 700h78l-31 -193l-47 0z" />
-<glyph unicode="&#35;" horiz-adv-x="545" d="M280 225h-105l-39 -167h-69l39 167h-78l14 64h79l31 131h-74l14 64h75l38 158h69l-38 -158h105l38 158h69l-38 -158h77l-16 -64h-76l-31 -131h73l-16 -64h-72l-39 -167h-69zM190 289h105l31 131l-105 0z" />
-<glyph unicode="&#36;" horiz-adv-x="545" d="M242 -12q-55 1 -97.5 9.5q-42.5 8.5 -68.5 22.5l27 73q20 -12 54.5 -22q34.5 -10 84.5 -11l0 270q-30 15 -59.5 32q-29.5 17 -52.5 40.5q-23 23.5 -37 55.5q-14 32 -14 76q0 72 40.5 118q40.5 46 122.5 57l0 91h68v-88q51 -2 83.5 -9.5q32.5 -7.5 58.5 -19.5l-24 -70q-20 10 -48 17.5q-28 7.5 -70 9.5l0 -247q31 -16 62 -34.5q31 -18.5 55.5 -42.5q24.5 -24 39.5 -56q15 -32 15 -75q0 -78 -43.5 -128.5q-43.5 -50.5 -128.5 -64.5l0 -92h-68zM399 178q0 24 -8.5 43q-8.5 19 -22.5 34q-14 15 -33 27q-19 12 -41 23l0 -243q46 7 75.5 35.5q29.5 28.5 29.5 80.5zt0 0zM162 539q0 -43 27.5 -70q27.5 -27 68.5 -49l0 219q-53 -6 -74.5 -35t-21.5 -65z" />
-<glyph unicode="&#37;" horiz-adv-x="773" d="M70 542q0 45 12 77q12 32 32.5 53q20.5 21 49 30.5q28.5 9.5 61.5 9.5q33 0 61.5 -9q28.5 -9 49 -29q20.5 -20 32.5 -52.5q12 -32.5 12 -79.5q0 -47 -12 -79.5q-12 -32.5 -32.5 -52.5q-20.5 -20 -49 -29q-28.5 -9 -61.5 -9q-33 0 -61.5 9q-28.5 9 -49 29q-20.5 20 -32.5 52.5q-12 32.5 -12 79.5zt0 0zM144 542q0 -60 21.5 -86q21.5 -26 59.5 -26q19 0 34 5.5q15 5.5 25.5 18q10.5 12.5 16 34q5.5 21.5 5.5 54.5q0 33 -5.5 54.5q-5.5 21.5 -16 34q-10.5 12.5 -25.5 18q-15 5.5 -34 5.5q-38 0 -59.5 -23.5q-21.5 -23.5 -21.5 -88.5zt0 0zM427 170q0 45 12 77q12 32 32.5 53q20.5 21 49 30.5q28.5 9.5 61.5 9.5q33 0 61.5 -9q28.5 -9 49 -29q20.5 -20 32.5 -52.5q12 -32.5 12 -79.5q0 -47 -12 -79.5q-12 -32.5 -32.5 -52.5q-20.5 -20 -49 -29q-28.5 -9 -61.5 -9q-33 0 -61.5 9q-28.5 9 -49 29q-20.5 20 -32.5 52.5q-12 32.5 -12 79.5zt0 0zM501 170q0 -60 21.5 -86q21.5 -26 59.5 -26q19 0 34 5.5q15 5.5 25.5 18q10.5 12.5 16 34q5.5 21.5 5.5 54.5q0 33 -5.5 54.5q-5.5 21.5 -16 34q-10.5 12.5 -25.5 18q-15 5.5 -34 5.5q-38 0 -59.5 -23.5q-21.5 -23.5 -21.5 -88.5zt0 0zM637 713l49 -38l-513 -687l-50 39z" />
-<glyph unicode="&#38;" horiz-adv-x="814" d="M118 187q0 40 14 76.5q14 36.5 38 67.5q24 31 54.5 57q30.5 26 63.5 46q-24 36 -41.5 72q-17.5 36 -17.5 78q0 24 8 47q8 23 25.5 41q17.5 18 45 29q27.5 11 66.5 11q41 0 69 -10.5q28 -10.5 45 -27.5q17 -17 24.5 -38q7.5 -21 7.5 -43q0 -42 -32.5 -86.5q-32.5 -44.5 -102.5 -85.5q16 -29 37.5 -59.5q21.5 -30.5 45.5 -60.5q24 -30 49 -59.5q25 -29.5 50 -54.5q11 12 22 30.5q11 18.5 21.5 39q10.5 20.5 19 42.5q8.5 22 15.5 42l62 -29q-6 -17 -17 -40.5q-11 -23.5 -24.5 -48q-13.5 -24.5 -27.5 -47q-14 -22.5 -26 -37.5q21 -20 38 -34.5q17 -14.5 31.5 -25q14.5 -10.5 28 -19q13.5 -8.5 27.5 -16.5l-50 -56q-53 26 -121 93q-18 -18 -39.5 -34.5q-21.5 -16.5 -48.5 -29.5q-27 -13 -59.5 -21q-32.5 -8 -71.5 -8q-47 0 -88.5 13q-41.5 13 -72.5 38.5q-31 25.5 -49.5 62.5q-18.5 37 -18.5 85zt0 0zM519 131q-29 29 -57 63q-28 34 -53.5 68q-25.5 34 -47 65.5q-21.5 31.5 -36.5 55.5q-27 -20 -50 -41q-23 -21 -40.5 -44.5q-17.5 -23.5 -27 -50.5q-9.5 -27 -9.5 -58q0 -31 13 -55.5q13 -24.5 35.5 -41q22.5 -16.5 51.5 -25.5q29 -9 61 -9q25 0 48.5 6.5q23.5 6.5 44.5 16.5q21 10 38.5 23q17.5 13 28.5 27zt0 0zM307 584q0 -30 12.5 -59.5q12.5 -29.5 32.5 -58.5q53 34 73.5 62q20.5 28 20.5 49q0 32 -15.5 52q-15.5 20 -53.5 20q-36 0 -53 -18t-17 -47z" />
-<glyph unicode="&#39;" horiz-adv-x="218" d="M90 700h78l-31 -193l-47 0z" />
-<glyph unicode="&#40;" horiz-adv-x="280" d="M227 -220q-46 48 -78 105.5q-32 57.5 -51.5 118q-19.5 60.5 -28.5 122q-9 61.5 -9 117.5q0 55 9 116q9 61 29 122.5q20 61.5 52.5 120.5q32.5 59 79.5 110l48 -35q-40 -51 -66.5 -105.5q-26.5 -54.5 -42.5 -110.5q-16 -56 -22.5 -111.5q-6.5 -55.5 -6.5 -106.5q0 -48 7.5 -104.5q7.5 -56.5 24 -113q16.5 -56.5 43 -110.5q26.5 -54 63.5 -98z" />
-<glyph unicode="&#41;" horiz-adv-x="280" d="M53 712q46 -48 78 -105.5q32 -57.5 51.5 -118q19.5 -60.5 28.5 -122q9 -61.5 9 -117.5q0 -55 -9 -116q-9 -61 -29 -122.5q-20 -61.5 -52.5 -120.5q-32.5 -59 -79.5 -110l-48 35q40 51 67 106q27 55 42.5 111q15.5 56 22 111q6.5 55 6.5 106q0 48 -8 104q-8 56 -24.5 113q-16.5 57 -42.5 111q-26 54 -63 98z" />
-<glyph unicode="&#42;" horiz-adv-x="351" d="M130 715l25 -42l18 -56l21 57l24 40l48 -26l-26 -43l-46 -48l68 12h48v-56h-46l-64 12l46 -48l23 -39l-47 -28l-26 42l-23 61l-19 -58l-25 -42l-50 28l27 42l42 42l-58 -12h-50v56h50l62 -12l-45 44l-26 46z" />
-<glyph unicode="&#43;" horiz-adv-x="505" d="M40 374h176v181h72v-181h176v-72h-176v-180h-72v180l-176 0z" />
-<glyph unicode="&#44;" horiz-adv-x="225" d="M49 43q0 24 16 39q16 15 41 15q31 0 50.5 -22q19.5 -22 19.5 -64q0 -36 -10 -63q-10 -27 -26 -46.5q-16 -19.5 -35 -32q-19 -12.5 -38 -18.5l-25 39q36 14 53.5 43.5q17.5 29.5 17.5 59.5q-9 -3 -17 -3q-20 0 -33.5 13.5t-13.5 39.5z" />
-<glyph unicode="&#45;" horiz-adv-x="360" d="M59 325h242v-74l-242 0z" />
-<glyph unicode="&#46;" horiz-adv-x="214" d="M49 46q0 27 15.5 42.5q15.5 15.5 41.5 15.5q27 0 43 -15.5q16 -15.5 16 -42.5q0 -26 -16 -42q-16 -16 -43 -16q-26 0 -41.5 16t-15.5 42z" />
-<glyph unicode="&#47;" horiz-adv-x="354" d="M328 712l63 -28l-365 -824l-63 28z" />
-<glyph unicode="&#48;" horiz-adv-x="545" d="M43 350q0 180 58.5 271q58.5 91 170.5 91q121 0 175.5 -89.5q54.5 -89.5 54.5 -272.5q0 -180 -58.5 -271q-58.5 -91 -171.5 -91q-119 0 -174 95q-55 95 -55 267zt0 0zM126 350q0 -65 8.5 -118.5q8.5 -53.5 26.5 -92q18 -38.5 45.5 -60q27.5 -21.5 65.5 -21.5q76 0 111.5 70.5q35.5 70.5 35.5 221.5q0 64 -7.5 118q-7.5 54 -25 93q-17.5 39 -45.5 60q-28 21 -69 21q-75 0 -110.5 -71t-35.5 -221z" />
-<glyph unicode="&#49;" horiz-adv-x="545" d="M108 74h140v484l10 59l-40 -47l-110 -79l-38 51l220 170h36v-638h137v-74l-355 0z" />
-<glyph unicode="&#50;" horiz-adv-x="545" d="M446 541q0 -53 -19.5 -108.5q-19.5 -55.5 -51 -111.5q-31.5 -56 -70.5 -109.5q-39 -53.5 -78 -101.5l-49 -43v-4l64 11h218v-74h-398v29q22 23 53 57q31 34 64.5 75.5q33.5 41.5 66 88q32.5 46.5 59 94.5q26.5 48 42.5 95q16 47 16 89q0 49 -28 81.5q-28 32.5 -85 32.5q-38 0 -74 -15.5q-36 -15.5 -62 -35.5l-33 57q35 30 83 47q48 17 103 17q43 0 76 -12.5q33 -12.5 56 -35.5q23 -23 35 -54.5t12 -68.5z" />
-<glyph unicode="&#51;" horiz-adv-x="545" d="M234 58q34 0 63 10q29 10 50 29.5q21 19.5 33 46.5q12 27 12 59q0 70 -41.5 104q-41.5 34 -114.5 34h-74v29l144 222l46 44l-65 -10h-198v74h357v-29l-159 -239l-35 -29v-2l34 7q40 -1 74 -14.5q34 -13.5 59 -39q25 -25.5 39 -61q14 -35.5 14 -80.5q0 -54 -19 -96q-19 -42 -51.5 -70.5q-32.5 -28.5 -76.5 -43.5q-44 -15 -93 -15q-45 0 -81 7q-36 7 -63 18l21 71q23 -11 54.5 -18.5t70.5 -7.5z" />
-<glyph unicode="&#52;" horiz-adv-x="545" d="M524 215h-118v-215h-78v215h-308v33l332 463h54v-426h118zM328 503l10 82h-3l-35 -68l-141 -191l-48 -49l70 8l147 0z" />
-<glyph unicode="&#53;" horiz-adv-x="545" d="M213 58q69 0 114 40q45 40 45 116q0 73 -44.5 109q-44.5 36 -122.5 36l-84 -5v346h312v-74h-237v-199l43 2q99 -1 156 -55q57 -54 57 -155q0 -56 -19 -99.5q-19 -43.5 -51.5 -72.5q-32.5 -29 -76.5 -44q-44 -15 -94 -15q-45 0 -76 5q-31 5 -58 15l21 68q23 -9 49.5 -13.5t65.5 -4.5z" />
-<glyph unicode="&#54;" horiz-adv-x="545" d="M492 211q0 -46 -14 -86.5q-14 -40.5 -41 -71q-27 -30.5 -67 -48q-40 -17.5 -91 -17.5q-50 0 -90 16q-40 16 -69 47.5q-29 31.5 -44.5 77.5q-15.5 46 -15.5 106q0 99 25.5 182.5q25.5 83.5 70.5 145.5q45 62 106.5 100.5q61.5 38.5 133.5 48.5l17 -64q-56 -10 -102 -38q-46 -28 -80.5 -69q-34.5 -41 -56.5 -92q-22 -51 -30 -105q16 27 54 49.5q38 22.5 93 22.5q94 0 147.5 -54q53.5 -54 53.5 -151zt0 0zM409 203q0 71 -33 107q-33 36 -102 36q-49 0 -84.5 -24q-35.5 -24 -49.5 -54q-2 -14 -2 -23q0 -9 0 -20q0 -31 8.5 -61q8.5 -30 26.5 -53.5q18 -23.5 44.5 -38q26.5 -14.5 62.5 -14.5q29 0 52.5 11q23.5 11 40.5 30q17 19 26.5 46t9.5 58z" />
-<glyph unicode="&#55;" horiz-adv-x="545" d="M110 0l251 586l44 49l-59 -9h-285v74h418v-27l-288 -673z" />
-<glyph unicode="&#56;" horiz-adv-x="545" d="M68 167q0 63 33 109.5q33 46.5 103 84.5q-25 15 -46.5 31.5q-21.5 16.5 -38 37.5q-16.5 21 -26 47q-9.5 26 -9.5 60q0 39 13.5 71q13.5 32 39 55q25.5 23 61 36q35.5 13 80.5 13q42 0 76 -12q34 -12 57.5 -33q23.5 -21 36.5 -50q13 -29 13 -64q0 -57 -26 -100.5q-26 -43.5 -86 -85.5q26 -15 49.5 -33q23.5 -18 41 -40q17.5 -22 27.5 -49.5q10 -27.5 10 -62.5q0 -43 -14 -78.5q-14 -35.5 -41 -61q-27 -25.5 -66 -40q-39 -14.5 -89 -14.5q-48 0 -85 14q-37 14 -62.5 38q-25.5 24 -38.5 56.5q-13 32.5 -13 70.5zt0 0zM399 177q0 30 -12 52.5q-12 22.5 -31.5 41q-19.5 18.5 -44.5 33.5q-25 15 -52 29q-61 -34 -87 -76q-26 -42 -26 -80q0 -24 8 -46q8 -22 24 -38q16 -16 39.5 -25.5q23.5 -9.5 54.5 -9.5q25 0 48 7.5q23 7.5 40.5 22q17.5 14.5 28 37q10.5 22.5 10.5 52.5zt0 0zM162 539q0 -28 11 -49.5q11 -21.5 29.5 -38.5q18.5 -17 42.5 -31.5q24 -14.5 50 -27.5q45 35 66.5 69q21.5 34 21.5 75q0 51 -31.5 78.5q-31.5 27.5 -75.5 27.5q-27 0 -48 -9q-21 -9 -36 -23q-15 -14 -22.5 -32.5t-7.5 -38.5z" />
-<glyph unicode="&#57;" horiz-adv-x="545" d="M52 488q0 48 14 89q14 41 41 71q27 30 67.5 47q40.5 17 94.5 17q102 0 159 -66q57 -66 57 -186q0 -113 -25.5 -197.5q-25.5 -84.5 -70.5 -142.5q-45 -58 -106.5 -90.5q-61.5 -32.5 -133.5 -41.5l-18 64q58 9 104.5 34q46.5 25 80 63q33.5 38 54.5 86.5q21 48.5 29 105.5q-27 -32 -59.5 -44.5q-32.5 -12.5 -85.5 -12.5q-41 0 -77.5 13.5q-36.5 13.5 -64.5 39.5q-28 26 -44 64q-16 38 -16 87zt0 0zM135 496q0 -71 37.5 -106.5q37.5 -35.5 98.5 -35.5q49 0 84 16q35 16 50 42q2 13 2 23q0 10 0 21q0 36 -8.5 69.5q-8.5 33.5 -25.5 60q-17 26.5 -44.5 41.5q-27.5 15 -64.5 15q-61 0 -95 -38.5t-34 -107.5z" />
-<glyph unicode="&#58;" horiz-adv-x="219" d="M91 449q0 27 15.5 42.5q15.5 15.5 41.5 15.5q27 0 43 -15.5q16 -15.5 16 -42.5q0 -26 -16 -42q-16 -16 -43 -16q-26 0 -41.5 16q-15.5 16 -15.5 42zt0 0zM91 46q0 27 15.5 42.5q15.5 15.5 41.5 15.5q27 0 43 -15.5q16 -15.5 16 -42.5q0 -26 -16 -42q-16 -16 -43 -16q-26 0 -41.5 16t-15.5 42z" />
-<glyph unicode="&#59;" horiz-adv-x="256" d="M89 43q0 24 16 39q16 15 41 15q31 0 50.5 -22q19.5 -22 19.5 -64q0 -36 -10 -63q-10 -27 -26 -46.5q-16 -19.5 -35 -32q-19 -12.5 -38 -18.5l-25 39q36 14 53.5 43.5q17.5 29.5 17.5 59.5q-9 -3 -17 -3q-20 0 -33.5 13.5q-13.5 13.5 -13.5 39.5zt0 0zM96 449q0 27 15.5 42.5q15.5 15.5 41.5 15.5q27 0 43 -15.5q16 -15.5 16 -42.5q0 -26 -16 -42q-16 -16 -43 -16q-26 0 -41.5 16t-15.5 42z" />
-<glyph unicode="&#60;" horiz-adv-x="505" d="M42 305v29l378 231l38 -62l-237 -145l-91 -38l90 -32l243 -144l-38 -60z" />
-<glyph unicode="&#61;" horiz-adv-x="505" d="M40 457h424v-72h-424zM40 291h424v-72l-424 0z" />
-<glyph unicode="&#62;" horiz-adv-x="505" d="M463 344v-29l-378 -231l-38 61l237 145l91 38l-90 32l-243 144l38 61z" />
-<glyph unicode="&#63;" horiz-adv-x="436" d="M150 177q-1 5 -1 11q0 6 0 11q0 42 12.5 74q12.5 32 31 58.5q18.5 26.5 40 49.5q21.5 23 40 46.5q18.5 23.5 31 50q12.5 26.5 12.5 60.5q0 46 -26.5 75q-26.5 29 -88.5 29q-36 0 -73 -12.5q-37 -12.5 -64 -29.5l-27 62q38 23 80 36.5q42 13.5 104 13.5q44 0 77.5 -12.5q33.5 -12.5 56 -34.5q22.5 -22 33.5 -52q11 -30 11 -64q0 -45 -13.5 -78.5q-13.5 -33.5 -34 -61q-20.5 -27.5 -44 -51.5q-23.5 -24 -44 -50.5q-20.5 -26.5 -34 -57.5q-13.5 -31 -13.5 -73zM130 46q0 27 15.5 42.5q15.5 15.5 41.5 15.5q27 0 43 -15.5q16 -15.5 16 -42.5q0 -26 -16 -42q-16 -16 -43 -16q-26 0 -41.5 16t-15.5 42z" />
-<glyph unicode="&#64;" horiz-adv-x="1064" d="M707 491h34l-51 -287q-5 -26 -7.5 -46.5q-2.5 -20.5 -2.5 -36.5q0 -25 8.5 -36.5q8.5 -11.5 29.5 -11.5q34 0 67.5 18q33.5 18 59.5 51q26 33 42.5 79.5q16.5 46.5 16.5 104.5q0 77 -26 136q-26 59 -73 99.5q-47 40.5 -112 61.5q-65 21 -143 21q-81 0 -152.5 -30q-71.5 -30 -124 -83q-52.5 -53 -83 -127q-30.5 -74 -30.5 -161q0 -89 27.5 -159q27.5 -70 78.5 -118q51 -48 122 -73q71 -25 158 -25q29 0 66 6.5q37 6.5 67 21.5l20 -64q-45 -19 -83 -25.5q-38 -6.5 -82 -6.5q-93 0 -174.5 28q-81.5 28 -142 83q-60.5 55 -95.5 136.5q-35 81.5 -35 188.5q0 109 37.5 197q37.5 88 101.5 150q64 62 149 95.5q85 33.5 180 33.5q90 0 167 -26.5q77 -26.5 133.5 -76q56.5 -49.5 89 -121q32.5 -71.5 32.5 -162.5q0 -64 -22 -122.5q-22 -58.5 -59.5 -102.5q-37.5 -44 -87.5 -70.5q-50 -26.5 -106 -26.5q-42 0 -67 18q-25 18 -25 67q0 9 1 19.5q1 10.5 3 22.5l-4 0q-14 -23 -33 -45.5q-19 -22.5 -42.5 -40.5q-23.5 -18 -50 -29.5q-26.5 -11.5 -55.5 -11.5q-24 0 -46 10.5q-22 10.5 -38 30.5q-16 20 -25.5 47.5q-9.5 27.5 -9.5 62.5q0 64 21 126q21 62 56.5 110q35.5 48 83 77.5q47.5 29.5 100.5 29.5q37 0 59 -11q22 -11 43 -27zM650 393q-17 20 -34 27.5q-17 7.5 -43 7.5q-39 0 -73 -23.5q-34 -23.5 -58.5 -61q-24.5 -37.5 -39 -84q-14.5 -46.5 -14.5 -91.5q0 -39 16 -66.5q16 -27.5 58 -27.5q20 0 41.5 13q21.5 13 42.5 35.5q21 22.5 40 50.5q19 28 34 57z" />
-<glyph unicode="&#65;" horiz-adv-x="585" d="M418 194h-258l-70 -194h-82l265 711h38l266 -711h-87zM187 266h206l-78 213l-25 106h-1l-25 -108z" />
-<glyph unicode="&#66;" horiz-adv-x="584" d="M507 540q0 -25 -8 -51q-8 -26 -24 -48.5q-16 -22.5 -41 -39.5q-25 -17 -59 -26l0 -4q30 -5 57.5 -17q27.5 -12 48.5 -33q21 -21 34 -51q13 -30 13 -71q0 -54 -22.5 -93.5q-22.5 -39.5 -59 -64.5q-36.5 -25 -83.5 -37q-47 -12 -96 -12q-17 0 -40 0q-23 0 -48 1.5q-25 1.5 -50 4q-25 2.5 -44 7.5l0 689q37 6 86 10q49 4 107 4q39 0 79.5 -6.5q40.5 -6.5 73.5 -25q33 -18.5 54.5 -51.5q21.5 -33 21.5 -85zt0 0zM275 64q32 0 62 7.5q30 7.5 53 24q23 16.5 36.5 40.5q13.5 24 13.5 57q0 41 -16.5 66q-16.5 25 -43 39q-26.5 14 -59.5 19q-33 5 -66 5h-87v-251q7 -2 20 -3q13 -1 28 -2q15 -1 31 -1.5q16 -0.5 28 -0.5zt0 0zM220 392q17 0 41 1q24 1 40 3q24 8 45 19.5q21 11.5 37.5 27q16.5 15.5 26 36q9.5 20.5 9.5 44.5q0 33 -12.5 54.5q-12.5 21.5 -33.5 34.5q-21 13 -48 18.5q-27 5.5 -55 5.5q-33 0 -60.5 -1.5q-27.5 -1.5 -41.5 -4.5l0 -238z" />
-<glyph unicode="&#67;" horiz-adv-x="571" d="M533 29q-30 -23 -76 -32q-46 -9 -98 -9q-63 0 -118 21.5q-55 21.5 -96 65.5q-41 44 -65 112.5q-24 68.5 -24 162.5q0 98 26.5 166.5q26.5 68.5 70 112q43.5 43.5 97.5 63.5q54 20 110 20q60 0 98 -6.5q38 -6.5 65 -17.5l-20 -73q-48 23 -137 23q-41 0 -81 -15q-40 -15 -71.5 -49q-31.5 -34 -50.5 -89q-19 -55 -19 -135q0 -72 18 -126q18 -54 49.5 -90q31.5 -36 74 -54q42.5 -18 92.5 -18q45 0 78.5 9q33.5 9 56.5 23z" />
-<glyph unicode="&#68;" horiz-adv-x="654" d="M85 700q19 3 42.5 4.5q23.5 1.5 49 2q25.5 0.5 50 1q24.5 0.5 45.5 0.5q84 0 145.5 -26q61.5 -26 101.5 -72.5q40 -46.5 59.5 -111.5q19.5 -65 19.5 -143q0 -71 -18.5 -136.5q-18.5 -65.5 -58.5 -116q-40 -50.5 -104 -81q-64 -30.5 -155 -30.5q-16 0 -41.5 0.5q-25.5 0.5 -52.5 2q-27 1.5 -50 2.5q-23 1 -33 3zM274 634q-13 0 -28.5 0q-15.5 0 -30.5 -1q-15 -1 -27.5 -2q-12.5 -1 -19.5 -2l0 -560q5 -1 19 -1.5q14 -0.5 29 -1q15 -0.5 29 -1q14 -0.5 19 -0.5q70 0 117.5 24q47.5 24 76 64.5q28.5 40.5 40.5 93q12 52.5 12 108.5q0 49 -11 98.5q-11 49.5 -38 89.5q-27 40 -72.5 65.5t-114.5 25.5z" />
-<glyph unicode="&#69;" horiz-adv-x="536" d="M85 700h381v-74h-298v-229h273v-74h-273v-249h303v-74l-386 0z" />
-<glyph unicode="&#70;" horiz-adv-x="517" d="M85 700h381v-74h-298v-239h278v-74h-278v-313l-83 0z" />
-<glyph unicode="&#71;" horiz-adv-x="612" d="M321 349h235v-308q-16 -12 -38.5 -22q-22.5 -10 -48 -17q-25.5 -7 -53 -10.5q-27.5 -3.5 -53.5 -3.5q-67 0 -123 21.5q-56 21.5 -97 66q-41 44.5 -64 113q-23 68.5 -23 161.5q0 97 28 166q28 69 73 112.5q45 43.5 101 63.5q56 20 112 20q60 0 99 -6.5q39 -6.5 66 -17.5l-21 -73q-48 23 -137 23q-42 0 -83.5 -14.5q-41.5 -14.5 -74.5 -48.5q-33 -34 -54 -89q-21 -55 -21 -136q0 -74 17 -128q17 -54 47.5 -89.5q30.5 -35.5 73.5 -53q43 -17.5 94 -17.5q64 0 109 25l0 195l-164 20z" />
-<glyph unicode="&#72;" horiz-adv-x="672" d="M504 321h-336v-321h-83v700h83v-305h336v305h83v-700l-83 0z" />
-<glyph unicode="&#73;" horiz-adv-x="291" d="M104 700h83v-700l-83 0z" />
-<glyph unicode="&#74;" horiz-adv-x="291" d="M112 700h83v-546q0 -80 -35.5 -122q-35.5 -42 -107.5 -42q-8 0 -20 1q-12 1 -24 3q-12 2 -23.5 5q-11.5 3 -18.5 7l16 71q28 -13 61 -13q42 0 55.5 29.5q13.5 29.5 13.5 80.5z" />
-<glyph unicode="&#75;" horiz-adv-x="610" d="M215 324h-47v-324h-83v700h83v-326l45 14l235 312h96l-234 -301l-42 -33l51 -40l256 -326l-105 0z" />
-<glyph unicode="&#76;" horiz-adv-x="517" d="M499 0h-414v700h83v-626l331 0z" />
-<glyph unicode="&#77;" horiz-adv-x="791" d="M623 470l10 105h-5l-38 -96l-182 -316h-25l-193 317l-36 95h-5l14 -104v-471h-78v700h62l219 -358l33 -78h2l31 80l209 356h65v-700l-83 0z" />
-<glyph unicode="&#78;" horiz-adv-x="673" d="M211 458l-54 101h-4l10 -101v-458h-78v711h44l335 -467l52 -96h5l-11 96v456h78v-711l-44 0z" />
-<glyph unicode="&#79;" horiz-adv-x="684" d="M56 350q0 175 74 268.5q74 93.5 211 93.5q74 0 128 -26q54 -26 89.5 -73.5q35.5 -47.5 52.5 -114q17 -66.5 17 -148.5q0 -175 -74.5 -268.5q-74.5 -93.5 -212.5 -93.5q-73 0 -126.5 26q-53.5 26 -89 73.5q-35.5 47.5 -52.5 114q-17 66.5 -17 148.5zt0 0zM144 350q0 -58 11.5 -110q11.5 -52 35.5 -91.5q24 -39.5 61.5 -63q37.5 -23.5 88.5 -23.5q93 0 146 70.5q53 70.5 53 217.5q0 57 -11.5 109.5q-11.5 52.5 -36 92q-24.5 39.5 -62 63q-37.5 23.5 -89.5 23.5q-92 0 -144.5 -70.5t-52.5 -217.5z" />
-<glyph unicode="&#80;" horiz-adv-x="559" d="M85 693q38 9 82 12q44 3 87 3q46 0 93.5 -9q47.5 -9 86.5 -33q39 -24 63.5 -66q24.5 -42 24.5 -107q0 -64 -23 -108q-23 -44 -61 -71.5q-38 -27.5 -87 -39.5q-49 -12 -101 -12q-5 0 -16.5 0q-11.5 0 -24 0.5q-12.5 0.5 -24.5 1.5q-12 1 -17 2l0 -266h-83zM256 636q-26 0 -50 -1q-24 -1 -38 -5l0 -290q5 -2 16 -2.5q11 -0.5 23 -1q12 -0.5 23 -0.5q11 0 16 0q34 0 67.5 6.5q33.5 6.5 60.5 23.5q27 17 43.5 48q16.5 31 16.5 79q0 41 -15.5 68.5q-15.5 27.5 -41 44q-25.5 16.5 -57.5 23.5t-64 7z" />
-<glyph unicode="&#81;" horiz-adv-x="684" d="M704 -171q-24 -7 -47 -9.5q-23 -2.5 -46 -2.5q-50 0 -97.5 10.5q-47.5 10.5 -92 23q-44.5 12.5 -85.5 23q-41 10.5 -78 10.5q-24 0 -46 -6l0 73q14 3 27 5q13 2 27 2q42 0 83.5 -10.5q41.5 -10.5 84.5 -23q43 -12.5 88 -23q45 -10.5 95 -10.5q44 0 87 10zM56 350q0 175 74 268.5q74 93.5 211 93.5q74 0 128 -26q54 -26 89.5 -73.5q35.5 -47.5 52.5 -114q17 -66.5 17 -148.5q0 -175 -74.5 -268.5q-74.5 -93.5 -212.5 -93.5q-73 0 -126.5 26q-53.5 26 -89 73.5q-35.5 47.5 -52.5 114q-17 66.5 -17 148.5zt0 0zM144 350q0 -58 11.5 -110q11.5 -52 35.5 -91.5q24 -39.5 61.5 -63q37.5 -23.5 88.5 -23.5q93 0 146 70.5q53 70.5 53 217.5q0 57 -11.5 109.5q-11.5 52.5 -36 92q-24.5 39.5 -62 63q-37.5 23.5 -89.5 23.5q-92 0 -144.5 -70.5t-52.5 -217.5z" />
-<glyph unicode="&#82;" horiz-adv-x="595" d="M85 693q38 7 87.5 11q49.5 4 90.5 4q46 0 87.5 -10q41.5 -10 73 -33q31.5 -23 50.5 -60q19 -37 19 -90q0 -82 -45 -133q-45 -51 -114 -68l48 -37l174 -277h-97l-193 302l-98 15v-317h-83zM265 636q-13 0 -27 0q-14 0 -27 -1q-13 -1 -24.5 -2q-11.5 -1 -18.5 -3l0 -258h78q69 0 114 34q45 34 45 106q0 54 -37 89t-103 35z" />
-<glyph unicode="&#83;" horiz-adv-x="531" d="M401 178q0 42 -25 68.5q-25 26.5 -62.5 47q-37.5 20.5 -81.5 38.5q-44 18 -81.5 43.5q-37.5 25.5 -62.5 63q-25 37.5 -25 95.5q0 82 57 130q57 48 162 48q61 0 111 -9q50 -9 78 -23l-25 -73q-23 11 -67.5 21q-44.5 10 -100.5 10q-66 0 -99 -29.5q-33 -29.5 -33 -69.5q0 -39 25 -65q25 -26 62.5 -46.5q37.5 -20.5 81.5 -40.5q44 -20 81.5 -46.5q37.5 -26.5 62.5 -63.5q25 -37 25 -92q0 -45 -16 -81q-16 -36 -47 -62q-31 -26 -75 -40q-44 -14 -100 -14q-75 0 -124 11.5q-49 11.5 -76 25.5l28 75q23 -13 68 -25.5q45 -12.5 101 -12.5q33 0 62 6.5q29 6.5 50 21q21 14.5 33.5 36.5t12.5 52z" />
-<glyph unicode="&#84;" horiz-adv-x="555" d="M537 626h-218v-626h-83v626h-218v74l519 0z" />
-<glyph unicode="&#85;" horiz-adv-x="652" d="M487 700h80v-467q0 -63 -16.5 -109q-16.5 -46 -47 -75.5q-30.5 -29.5 -73.5 -43.5q-43 -14 -95 -14q-124 0 -187 56q-63 56 -63 170v483h83v-444q0 -53 10.5 -89.5q10.5 -36.5 31.5 -59q21 -22.5 52.5 -32.5q31.5 -10 73.5 -10q81 0 116 44.5q35 44.5 35 146.5z" />
-<glyph unicode="&#86;" horiz-adv-x="568" d="M267 219l24 -106h1l26 108l169 479h83l-265 -711h-37l-270 711l91 0z" />
-<glyph unicode="&#87;" horiz-adv-x="828" d="M222 231l16 -116h1l17 118l144 467h40l145 -469l17 -116h1l18 118l118 467h81l-195 -711h-46l-142 469l-18 106h-5l-18 -107l-142 -468h-46l-200 711l88 0z" />
-<glyph unicode="&#88;" horiz-adv-x="618" d="M259 356l-213 344h100l142 -237l25 -57l24 57l150 237h92l-220 -337l230 -363h-97l-158 251l-27 60l-26 -60l-162 -251l-93 0z" />
-<glyph unicode="&#89;" horiz-adv-x="558" d="M239 278l-231 422h97l164 -306l17 -61h1l18 63l157 304h89l-229 -421v-279l-83 0z" />
-<glyph unicode="&#90;" horiz-adv-x="545" d="M38 75l353 511l42 40h-395v74h470v-75l-355 -514l-42 -37h397v-74l-470 0z" />
-<glyph unicode="&#91;" horiz-adv-x="304" d="M85 700h181v-70h-103v-790h103v-70l-181 0z" />
-<glyph unicode="&#92;" horiz-adv-x="380" d="M399 -111l-66 -29l-370 824l67 28z" />
-<glyph unicode="&#93;" horiz-adv-x="304" d="M220 -230h-182v70h104v790h-104v70l182 0z" />
-<glyph unicode="&#94;" horiz-adv-x="500" d="M234 711h29l169 -276h-82l-80 135l-23 69l-31 -70l-92 -134l-76 0z" />
-<glyph unicode="&#95;" horiz-adv-x="408" d="M0 -135h408v-70l-408 0z" />
-<glyph unicode="&#96;" horiz-adv-x="280" d="M220 571h-45l-115 128v21l95 0z" />
-<glyph unicode="&#97;" horiz-adv-x="496" d="M69 463q38 23 88.5 34q50.5 11 105.5 11q52 0 83.5 -14q31.5 -14 48 -36.5q16.5 -22.5 22 -49.5q5.5 -27 5.5 -54q0 -60 -3 -117q-3 -57 -3 -108q0 -37 3 -70q3 -33 11 -61l-59 0l-21 70h-5q-9 -14 -22.5 -27.5q-13.5 -13.5 -32.5 -24q-19 -10.5 -44 -17.5q-25 -7 -57 -7q-32 0 -59.5 10q-27.5 10 -47.5 28.5q-20 18.5 -31.5 44.5q-11.5 26 -11.5 59q0 44 18 73.5q18 29.5 50.5 47q32.5 17.5 78 25q45.5 7.5 100.5 7.5q14 0 27.5 0q13.5 0 27.5 -2q3 30 3 54q0 55 -22 77q-22 22 -80 22q-17 0 -36.5 -2.5q-19.5 -2.5 -40 -7q-20.5 -4.5 -39 -11q-18.5 -6.5 -32.5 -14.5zM211 62q28 0 50 7.5q22 7.5 38 19q16 11.5 26.5 25.5q10.5 14 15.5 27l0 83q-14 1 -28.5 1.5q-14.5 0.5 -28.5 0.5q-31 0 -60.5 -3.5q-29.5 -3.5 -52 -13q-22.5 -9.5 -36 -26q-13.5 -16.5 -13.5 -41.5q0 -35 25 -57.5t64 -22.5z" />
-<glyph unicode="&#98;" horiz-adv-x="540" d="M77 700h80v-249h4q23 29 58.5 45q35.5 16 77.5 16q97 0 145.5 -62q48.5 -62 48.5 -192q0 -131 -64 -199q-64 -68 -180 -68q-56 0 -101.5 12q-45.5 12 -68.5 26zM283 442q-50 0 -81 -28q-31 -28 -45 -79l0 -252q19 -11 46 -16.5q27 -5.5 56 -5.5q68 0 108.5 48q40.5 48 40.5 150q0 39 -7 73q-7 34 -22 58q-15 24 -38.5 38t-57.5 14z" />
-<glyph unicode="&#99;" horiz-adv-x="451" d="M418 33q-30 -22 -71 -33.5q-41 -11.5 -86 -11.5q-58 0 -98 18.5q-40 18.5 -65.5 53q-25.5 34.5 -37 83q-11.5 48.5 -11.5 107.5q0 127 56 194.5q56 67.5 161 67.5q48 0 81.5 -7.5q33.5 -7.5 60.5 -21.5l-23 -69q-23 13 -51 20.5q-28 7.5 -60 7.5q-142 0 -142 -192q0 -38 7.5 -72.5q7.5 -34.5 25 -61q17.5 -26.5 46 -42.5q28.5 -16 70.5 -16q36 0 64.5 11q28.5 11 46.5 25z" />
-<glyph unicode="&#100;" horiz-adv-x="538" d="M461 172q0 -51 1 -92.5q1 -41.5 9 -81.5l-54 0l-20 71h-4q-20 -35 -58 -58q-38 -23 -89 -23q-100 0 -148.5 63q-48.5 63 -48.5 197q0 128 60.5 194.5q60.5 66.5 166.5 66.5q37 0 58.5 -4q21.5 -4 46.5 -13l0 208h80zM259 58q51 0 81 26.5q30 26.5 41 80.5l0 248q-18 14 -41 20q-23 6 -61 6q-69 0 -108 -45.5q-39 -45.5 -39 -145.5q0 -41 6.5 -76q6.5 -35 21.5 -60q15 -25 39.5 -39.5t59.5 -14.5z" />
-<glyph unicode="&#101;" horiz-adv-x="508" d="M442 40q-30 -24 -75.5 -38q-45.5 -14 -96.5 -14q-57 0 -99 18.5q-42 18.5 -69 53q-27 34.5 -40 82.5q-13 48 -13 108q0 128 57 195q57 67 163 67q34 0 68 -7.5q34 -7.5 61 -28.5q27 -21 44 -59.5q17 -38.5 17 -101.5q0 -33 -6 -73l-321 0q0 -44 9 -78q9 -34 28 -57.5q19 -23.5 49.5 -36q30.5 -12.5 74.5 -12.5q34 0 68 12q34 12 51 28zM270 442q-59 0 -94.5 -31q-35.5 -31 -42.5 -106l248 0q0 76 -29 106.5t-82 30.5z" />
-<glyph unicode="&#102;" horiz-adv-x="319" d="M22 500h78v28q0 46 7.5 80q7.5 34 24.5 55.5q17 21.5 44 32q27 10.5 67 10.5q32 0 56.5 -4q24.5 -4 51.5 -15l-18 -67q-23 10 -43.5 13q-20.5 3 -38.5 3q-26 0 -40.5 -8q-14.5 -8 -21 -23.5q-6.5 -15.5 -8 -38q-1.5 -22.5 -1.5 -52.5v-14h133v-70h-133v-430h-80v430l-78 0z" />
-<glyph unicode="&#103;" horiz-adv-x="537" d="M460 -23q0 -97 -51.5 -143q-51.5 -46 -152.5 -46q-60 0 -96.5 7.5q-36.5 7.5 -62.5 19.5l21 68q23 -9 51 -17q28 -8 73 -8q42 0 68.5 7.5q26.5 7.5 42.5 25q16 17.5 22 45q6 27.5 6 65.5v48h-4q-20 -29 -51 -44.5q-31 -15.5 -81 -15.5q-101 0 -148.5 63q-47.5 63 -47.5 196q0 128 61 194.5q61 66.5 180 66.5q57 0 97.5 -9q40.5 -9 72.5 -21zM259 59q51 0 80 25.5q29 25.5 41 79.5l0 256q-40 19 -102 19q-68 0 -107 -46q-39 -46 -39 -144q0 -42 7 -77q7 -35 22 -60q15 -25 39 -39t59 -14z" />
-<glyph unicode="&#104;" horiz-adv-x="547" d="M398 0v285q0 39 -4.5 68.5q-4.5 29.5 -16.5 49q-12 19.5 -32.5 29.5q-20.5 10 -53.5 10q-47 0 -85 -30.5q-38 -30.5 -49 -78.5l0 -333h-80v700h80v-256h4q26 31 62.5 49.5q36.5 18.5 90.5 18.5q42 0 73 -9.5q31 -9.5 51.5 -33.5q20.5 -24 30 -64.5q9.5 -40.5 9.5 -102.5l0 -302z" />
-<glyph unicode="&#105;" horiz-adv-x="268" d="M94 500h80v-500h-80zM77 652q0 23 15.5 39.5q15.5 16.5 39.5 16.5q24 0 41 -16.5q17 -16.5 17 -39.5q0 -23 -17 -38q-17 -15 -41 -15q-24 0 -39.5 15t-15.5 38z" />
-<glyph unicode="&#106;" horiz-adv-x="267" d="M93 500h80v-527q0 -93 -32 -139q-32 -46 -102 -46q-8 0 -15 0.5q-7 0.5 -15 1.5l0 68q28 0 44.5 8.5q16.5 8.5 25.5 26.5q9 18 11.5 45.5q2.5 27.5 2.5 64.5zM76 652q0 23 15.5 39.5q15.5 16.5 39.5 16.5q24 0 41 -16.5q17 -16.5 17 -39.5q0 -23 -17 -38q-17 -15 -41 -15q-24 0 -39.5 15t-15.5 38z" />
-<glyph unicode="&#107;" horiz-adv-x="479" d="M203 225h-46v-225h-80v700h80v-426l41 14l155 212h93l-153 -201l-41 -33l50 -40l167 -226l-99 0z" />
-<glyph unicode="&#108;" horiz-adv-x="292" d="M166 123q0 -35 12 -50q12 -15 34 -15q13 0 28 2q15 2 34 9l9 -63q-16 -8 -44.5 -13q-28.5 -5 -49.5 -5q-45 0 -74 25.5q-29 25.5 -29 86.5v600l80 0z" />
-<glyph unicode="&#109;" horiz-adv-x="812" d="M370 0v283q0 40 -3.5 69.5q-3.5 29.5 -13.5 49.5q-10 20 -28.5 30q-18.5 10 -48.5 10q-46 0 -76.5 -28q-30.5 -28 -42.5 -70l0 -344h-80v500h56l15 -61h4q27 32 62.5 52.5q35.5 20.5 92.5 20.5q48 0 78.5 -18.5q30.5 -18.5 47.5 -64.5q23 39 63.5 61q40.5 22 91.5 22q42 0 71 -9.5q29 -9.5 48 -33.5q19 -24 27.5 -65q8.5 -41 8.5 -104v-300h-80v301q0 36 -3.5 62.5q-3.5 26.5 -14 44q-10.5 17.5 -29 26q-18.5 8.5 -48.5 8.5q-50 0 -78 -28q-28 -28 -40 -80l0 -334z" />
-<glyph unicode="&#110;" horiz-adv-x="547" d="M398 0v285q0 78 -22.5 117.5q-22.5 39.5 -82.5 39.5q-53 0 -87.5 -28.5q-34.5 -28.5 -48.5 -71.5l0 -342h-80v500h56l15 -61h4q24 32 64.5 52.5q40.5 20.5 96.5 20.5q41 0 72 -9.5q31 -9.5 51.5 -33.5q20.5 -24 31 -64.5q10.5 -40.5 10.5 -102.5l0 -302z" />
-<glyph unicode="&#111;" horiz-adv-x="536" d="M49 250q0 127 56.5 194.5q56.5 67.5 162.5 67.5q56 0 97.5 -18.5q41.5 -18.5 68.5 -53q27 -34.5 40 -83q13 -48.5 13 -107.5q0 -127 -56.5 -194.5q-56.5 -67.5 -162.5 -67.5q-56 0 -97.5 18.5q-41.5 18.5 -68.5 53q-27 34.5 -40 83q-13 48.5 -13 107.5zt0 0zM132 250q0 -38 7.5 -73q7.5 -35 23.5 -61q16 -26 42 -42q26 -16 63 -16q136 -1 136 192q0 39 -7.5 74q-7.5 35 -23.5 61q-16 26 -42 41.5q-26 15.5 -63 15.5q-136 1 -136 -192z" />
-<glyph unicode="&#112;" horiz-adv-x="541" d="M77 500h55l15 -60h4q23 35 59.5 53.5q36.5 18.5 83.5 18.5q100 0 149 -59q49 -59 49 -193q0 -63 -16.5 -113.5q-16.5 -50.5 -46.5 -85.5q-30 -35 -72.5 -54q-42.5 -19 -94.5 -19q-37 0 -58.5 4.5q-21.5 4.5 -46.5 15.5l0 -208h-80zM279 442q-51 0 -80.5 -26.5q-29.5 -26.5 -41.5 -80.5l0 -248q18 -14 41 -21.5q23 -7.5 61 -7.5q69 0 109.5 51.5q40.5 51.5 40.5 151.5q0 41 -7 74.5q-7 33.5 -22.5 57q-15.5 23.5 -40 36.5t-60.5 13z" />
-<glyph unicode="&#113;" horiz-adv-x="537" d="M460 -200h-80v250h-4q-20 -30 -50.5 -46q-30.5 -16 -80.5 -16q-100 0 -148 63.5q-48 63.5 -48 196.5q0 129 62 195q62 66 181 66q53 0 99.5 -10q46.5 -10 68.5 -21zM259 58q51 0 80 26q29 26 41 80l0 256q-37 19 -102 19q-69 0 -107.5 -46.5q-38.5 -46.5 -38.5 -143.5q0 -42 7 -77.5q7 -35.5 22 -60.5q15 -25 39 -39t59 -14z" />
-<glyph unicode="&#114;" horiz-adv-x="340" d="M313 423q-30 10 -57 10q-43 0 -68 -23.5q-25 -23.5 -31 -59.5l0 -350h-80v500h56l15 -61h4q19 34 45.5 52.5q26.5 18.5 67.5 18.5q29 0 65 -10z" />
-<glyph unicode="&#115;" horiz-adv-x="421" d="M297 136q0 30 -18 47q-18 17 -44.5 28.5q-26.5 11.5 -58 22q-31.5 10.5 -58 27q-26.5 16.5 -44.5 42.5q-18 26 -18 70q0 72 41 105.5q41 33.5 114 33.5q54 0 90.5 -9.5q36.5 -9.5 63.5 -22.5l-19 -66q-23 11 -55.5 19.5q-32.5 8.5 -69.5 8.5q-44 0 -64.5 -15q-20.5 -15 -20.5 -52q0 -26 18 -40.5q18 -14.5 44.5 -26q26.5 -11.5 58 -22.5q31.5 -11 58 -29q26.5 -18 44.5 -45.5q18 -27.5 18 -72.5q0 -32 -10.5 -60q-10.5 -28 -32.5 -48q-22 -20 -54.5 -31.5q-32.5 -11.5 -76.5 -11.5q-57 0 -97 11q-40 11 -67 26l24 68q23 -13 60 -24q37 -11 75 -11q43 0 71 17t28 61z" />
-<glyph unicode="&#116;" horiz-adv-x="339" d="M11 500h78v99l80 23v-122h136v-70h-136v-277q0 -52 13 -73.5q13 -21.5 44 -21.5q26 0 44 5.5q18 5.5 40 14.5l18 -61q-27 -13 -59 -21q-32 -8 -69 -8q-61 0 -86 34.5q-25 34.5 -25 115.5v292l-78 0z" />
-<glyph unicode="&#117;" horiz-adv-x="539" d="M149 500v-285q0 -39 4.5 -68.5q4.5 -29.5 15.5 -49q11 -19.5 30 -29.5q19 -10 48 -10q27 0 48 8.5q21 8.5 37.5 23.5q16.5 15 29 34.5q12.5 19.5 20.5 41.5l0 334h80v-358q0 -36 2.5 -74.5q2.5 -38.5 8.5 -67.5l-55 0l-20 79h-5q-23 -39 -62 -65q-39 -26 -99 -26q-40 0 -70.5 9.5q-30.5 9.5 -51 33.5q-20.5 24 -31 64.5q-10.5 40.5 -10.5 102.5l0 302z" />
-<glyph unicode="&#118;" horiz-adv-x="482" d="M221 207l28 -95h1l25 97l112 291h86l-213 -511h-34l-217 511l92 0z" />
-<glyph unicode="&#119;" horiz-adv-x="735" d="M401 500l115 -292l25 -96h2l19 98l89 290h76l-168 -511h-39l-131 330l-19 82h-3l-20 -83l-126 -329h-39l-174 511h87l99 -291l17 -97h1l24 99l107 289z" />
-<glyph unicode="&#120;" horiz-adv-x="515" d="M208 256l-168 244h98l95 -138l28 -57l29 57l97 138h90l-169 -240l179 -260h-95l-106 152l-30 60l-31 -60l-108 -152l-89 0z" />
-<glyph unicode="&#121;" horiz-adv-x="466" d="M224 176l28 -96h5l22 97l97 323h81l-148 -449q-17 -49 -33.5 -95q-16.5 -46 -36.5 -82q-20 -36 -45 -57.5q-25 -21.5 -58 -21.5q-36 0 -59 10l14 69q13 -5 25 -5q28 0 54 29.5q26 29.5 43 101.5l-201 500l92 0z" />
-<glyph unicode="&#122;" horiz-adv-x="447" d="M42 70l231 318l42 42h-273v70h356v-70l-233 -321l-41 -39h274v-70l-356 0z" />
-<glyph unicode="&#123;" horiz-adv-x="346" d="M137 112q0 51 -21 69.5q-21 18.5 -59 18.5l0 70q38 0 59 20q21 20 21 64v242q0 47 23.5 76q23.5 29 71.5 29h85v-70h-50q-27 0 -39.5 -13.5q-12.5 -13.5 -12.5 -45.5v-237q0 -44 -21 -67q-21 -23 -49 -28l0 -6q27 -4 48.5 -30.5q21.5 -26.5 21.5 -68.5v-236q0 -31 12 -45q12 -14 41 -14h49v-70h-85q-45 0 -70 26.5q-25 26.5 -25 77.5z" />
-<glyph unicode="&#124;" horiz-adv-x="238" d="M85 700h68v-830l-68 0z" />
-<glyph unicode="&#125;" horiz-adv-x="346" d="M235 359q0 -51 21 -69.5q21 -18.5 59 -18.5l0 -70q-38 0 -59 -20q-21 -20 -21 -64v-242q0 -47 -23.5 -76q-23.5 -29 -71.5 -29h-85v70h50q27 0 39.5 13.5q12.5 13.5 12.5 45.5v237q0 44 20.5 67q20.5 23 48.5 28l0 6q-27 4 -48 30.5q-21 26.5 -21 68.5v236q0 31 -12 45q-12 14 -40 14h-50v70h86q44 0 69 -26.5q25 -26.5 25 -77.5z" />
-<glyph unicode="&#126;" horiz-adv-x="505" d="M31 361q43 33 78 46q35 13 64 13q28 0 52 -8.5q24 -8.5 46 -19q22 -10.5 43 -19q21 -8.5 44 -8.5q19 0 39 8q20 8 43 28l34 -61q-38 -26 -68.5 -36.5q-30.5 -10.5 -55.5 -10.5q-27 0 -49.5 8.5q-22.5 8.5 -43 19q-20.5 10.5 -41 19q-20.5 8.5 -44.5 8.5q-23 0 -49 -10.5q-26 -10.5 -58 -36.5z" />
-<glyph unicode="&#160;" horiz-adv-x="267" />
-<glyph unicode="&#161;" horiz-adv-x="304" d="M176 -200h-83v347l17 176h49l17 -176zM77 453q0 27 15.5 42.5q15.5 15.5 41.5 15.5q27 0 43 -15.5q16 -15.5 16 -42.5q0 -26 -16 -42q-16 -16 -43 -16q-26 0 -41.5 16t-15.5 42z" />
-<glyph unicode="&#162;" horiz-adv-x="545" d="M461 33q-24 -17 -54.5 -27.5q-30.5 -10.5 -65.5 -14.5l0 -91h-71v90q-50 5 -84.5 25.5q-34.5 20.5 -56.5 54q-22 33.5 -32 79.5q-10 46 -10 101q0 115 47.5 181.5q47.5 66.5 135.5 77.5l0 91h71v-89q35 -2 62 -9.5q27 -7.5 49 -18.5l-23 -68q-20 10 -44.5 17q-24.5 7 -50.5 9l0 -383q32 2 58 12.5q26 10.5 43 23.5zM170 250q0 -33 5.5 -63.5q5.5 -30.5 18.5 -56q13 -25.5 34 -43.5q21 -18 52 -25l0 377q-110 -21 -110 -189z" />
-<glyph unicode="&#163;" horiz-adv-x="545" d="M50 383h66q-12 26 -20 57q-8 31 -8 73q0 98 56 148.5q56 50.5 153 50.5q61 0 106 -9q45 -9 74 -23l-26 -71q-23 11 -61.5 20q-38.5 9 -93.5 9q-60 0 -92.5 -32.5q-32.5 -32.5 -32.5 -87.5q0 -42 10 -74q10 -32 24 -61l161 0v-70h-131q8 -23 13 -48q5 -25 5 -55q0 -30 -9 -61.5q-9 -31.5 -27 -51.5l-39 -33v-4l62 14h256v-74h-446v72q32 0 54.5 11.5q22.5 11.5 37 30q14.5 18.5 21.5 42q7 23.5 7 47.5q0 33 -6.5 59.5q-6.5 26.5 -16.5 50.5l-97 0z" />
-<glyph unicode="&#164;" horiz-adv-x="545" d="M70 596l78 -77l21 -35q42 33 103 33q59 0 103 -33l22 35l78 77l49 -49l-77 -78l-35 -22q32 -43 32 -102q0 -60 -32 -103l35 -21l77 -78l-49 -48l-78 77l-21 33q-43 -31 -104 -31q-62 0 -103 31l-21 -33l-78 -77l-49 48l77 78l34 22q-31 42 -31 102q0 29 8.5 55q8.5 26 22.5 48l-34 21l-77 78zM170 345q0 -45 28.5 -75q28.5 -30 73.5 -30q45 0 74 30q29 30 29 75q0 45 -29 75.5q-29 30.5 -74 30.5q-45 0 -73.5 -30.5t-28.5 -75.5z" />
-<glyph unicode="&#165;" horiz-adv-x="545" d="M111 328h94l-203 372h97l164 -306l17 -61h1l18 63l157 304h89l-203 -372h96v-60h-122v-71h122v-60h-122v-137h-83v137h-122v60h122v71l-122 0z" />
-<glyph unicode="&#166;" horiz-adv-x="238" d="M85 206h68v-336h-68zM153 364h-68v336l68 0z" />
-<glyph unicode="&#167;" horiz-adv-x="497" d="M57 353q0 31 15.5 60.5q15.5 29.5 41.5 52.5l41 14q-26 16 -43.5 40.5q-17.5 24.5 -17.5 65.5q0 56 41.5 91q41.5 35 115.5 35q54 0 91.5 -9q37.5 -9 64.5 -22l-19 -67q-24 11 -57 19.5q-33 8.5 -69 8.5q-45 0 -66.5 -16q-21.5 -16 -21.5 -43q0 -26 19.5 -40.5q19.5 -14.5 49.5 -25.5q30 -11 64 -22q34 -11 64 -28.5q30 -17.5 49.5 -46q19.5 -28.5 19.5 -73.5q0 -31 -15 -60q-15 -29 -41 -52l-45 -14q27 -16 45.5 -41q18.5 -25 18.5 -66q0 -31 -12 -54.5q-12 -23.5 -33.5 -39.5q-21.5 -16 -50.5 -24q-29 -8 -62 -8q-56 0 -92 9.5q-36 9.5 -64 23.5l20 65q23 -11 55.5 -19.5q32.5 -8.5 70.5 -8.5q42 0 65 13.5q23 13.5 23 45.5q0 26 -19.5 41q-19.5 15 -49.5 26q-30 11 -64 22q-34 11 -64 28.5q-30 17.5 -49.5 45.5q-19.5 28 -19.5 73zt0 0zM360 345q0 25 -13 41q-13 16 -34.5 27.5q-21.5 11.5 -48.5 20q-27 8.5 -54 18.5q-29 -13 -51 -37q-22 -24 -22 -60q0 -25 13 -41q13 -16 33.5 -27.5q20.5 -11.5 47 -19.5q26.5 -8 53.5 -18q14 6 27.5 16q13.5 10 24.5 22.5q11 12.5 17.5 27t6.5 30.5z" />
-<glyph unicode="&#168;" horiz-adv-x="411" d="M60 653q0 23 13.5 37q13.5 14 35.5 14q22 0 35.5 -14q13.5 -14 13.5 -37q0 -21 -13.5 -35q-13.5 -14 -35.5 -14q-22 0 -35.5 14q-13.5 14 -13.5 35zt0 0zM252 653q0 23 13.5 37q13.5 14 35.5 14q23 0 36.5 -14q13.5 -14 13.5 -37q0 -21 -13.5 -35q-13.5 -14 -36.5 -14q-22 0 -35.5 14t-13.5 35z" />
-<glyph unicode="&#169;" horiz-adv-x="806" d="M51 290q0 83 28 148.5q28 65.5 76 110.5q48 45 112 69q64 24 136 24q72 0 136 -24q64 -24 112 -69q48 -45 76 -110.5q28 -65.5 28 -148.5q0 -83 -28 -148.5q-28 -65.5 -76 -110.5q-48 -45 -112 -69q-64 -24 -136 -24q-80 0 -145 24q-65 24 -111 69q-46 45 -71 110.5q-25 65.5 -25 148.5zt0 0zM121 290q0 -69 22 -122.5q22 -53.5 60 -89.5q38 -36 89.5 -55q51.5 -19 110.5 -19q59 0 110.5 19q51.5 19 89.5 55q38 36 60 89.5q22 53.5 22 122.5q0 69 -22 122.5q-22 53.5 -60 89.5q-38 36 -89.5 55q-51.5 19 -110.5 19q-59 0 -110.5 -19q-51.5 -19 -89.5 -55q-38 -36 -60 -89.5q-22 -53.5 -22 -122.5zt0 0zM519 127q-23 -13 -51.5 -20q-28.5 -7 -66.5 -7q-81 0 -123.5 51q-42.5 51 -42.5 139q0 91 45.5 140.5q45.5 49.5 120.5 49.5q18 0 32.5 -2q14.5 -2 27 -5.5q12.5 -3.5 24.5 -8.5q12 -5 27 -11l-26 -61q-22 11 -42 15q-20 4 -34 4q-42 0 -68.5 -26q-26.5 -26 -26.5 -95q0 -58 26 -89.5q26 -31.5 77 -32.5q47 0 80 18z" />
-<glyph unicode="&#170;" horiz-adv-x="386" d="M68 677q25 13 66 22q41 9 91 9q62 0 85 -26q23 -26 23 -75q0 -38 -1.5 -73q-1.5 -35 -1.5 -67q0 -24 1.5 -46q1.5 -22 6.5 -41l-55 0l-13 46h-4q-13 -17 -37 -33.5q-24 -16.5 -67 -16.5q-52 0 -83 25.5q-31 25.5 -31 69.5q0 31 15 52q15 21 40.5 34q25.5 13 60 19q34.5 6 74.5 6q7 0 13.5 -0.5q6.5 -0.5 13.5 -0.5q1 6 1 11.5q0 5.5 0 10.5q0 27 -12 38q-12 11 -46 11q-40 0 -73 -7.5q-33 -7.5 -52 -17.5zM173 432q21 0 36.5 5q15.5 5 26.5 13.5q11 8.5 18 18q7 9.5 11 18.5l0 42q-11 1 -21 1q-10 0 -21 0q-21 0 -40 -2q-19 -2 -33.5 -8q-14.5 -6 -23 -16.5q-8.5 -10.5 -8.5 -27.5q0 -20 14.5 -32t40.5 -12z" />
-<glyph unicode="&#171;" horiz-adv-x="478" d="M222 259l158 228l53 -42l-97 -144l-48 -41l48 -36l103 -141l-52 -43zM39 259l160 230l54 -43l-98 -145l-48 -41l48 -36l104 -142l-54 -44z" />
-<glyph unicode="&#172;" horiz-adv-x="505" d="M41 392h424v-192h-72v120l-352 0z" />
-<glyph unicode="&#173;" horiz-adv-x="360" d="M58 325h244v-74l-244 0z" />
-<glyph unicode="&#174;" horiz-adv-x="700" d="M85 451q0 64 21 113.5q21 49.5 57.5 83q36.5 33.5 84.5 51q48 17.5 102 17.5q55 0 103.5 -17.5q48.5 -17.5 84.5 -51q36 -33.5 56.5 -83q20.5 -49.5 20.5 -113.5q0 -64 -21 -113.5q-21 -49.5 -57.5 -83q-36.5 -33.5 -84.5 -51q-48 -17.5 -102 -17.5q-56 0 -104 17.5q-48 17.5 -84 51q-36 33.5 -56.5 83q-20.5 49.5 -20.5 113.5zt0 0zM148 451q0 -52 16 -90.5q16 -38.5 43.5 -64q27.5 -25.5 64.5 -38.5q37 -13 78 -13q43 0 80 12.5q37 12.5 64 38q27 25.5 42.5 64q15.5 38.5 15.5 91.5q0 52 -16 90.5q-16 38.5 -43.5 64q-27.5 25.5 -64 38.5q-36.5 13 -78.5 13q-44 0 -81 -13q-37 -13 -64 -38.5q-27 -25.5 -42 -64q-15 -38.5 -15 -90.5zt0 0zM247 581q16 5 45 7.5q29 2.5 55 2.5q42 0 72 -17.5q30 -17.5 30 -60.5q0 -32 -20.5 -49q-20.5 -17 -50.5 -19l28 -14l74 -109h-61l-72 104l-48 15v-119h-52zM336 546q-11 0 -21 -0.5q-10 -0.5 -16 -3.5l0 -71h34q29 0 45 9q16 9 16 31q0 35 -58 35z" />
-<glyph unicode="&#175;" horiz-adv-x="416" d="M60 643h296v-62l-296 0z" />
-<glyph unicode="&#176;" horiz-adv-x="425" d="M85 571q0 31 11 57q11 26 30 44.5q19 18.5 45 29q26 10.5 55 10.5q29 0 55 -9.5q26 -9.5 45 -28q19 -18.5 30 -44.5q11 -26 11 -59q0 -33 -11 -59q-11 -26 -30 -44.5q-19 -18.5 -45 -28q-26 -9.5 -55 -9.5q-29 0 -55 9.5q-26 9.5 -45 28q-19 18.5 -30 44.5q-11 26 -11 59zt0 0zM148 571q0 -38 23.5 -59.5q23.5 -21.5 54.5 -21.5q31 0 54.5 21.5q23.5 21.5 23.5 59.5q0 38 -23.5 59.5q-23.5 21.5 -54.5 21.5q-31 0 -54.5 -21.5t-23.5 -59.5z" />
-<glyph unicode="&#177;" horiz-adv-x="505" d="M40 493h176v181h72v-181h176v-72h-176v-120h-72v120h-176zM40 250h424v-72l-424 0z" />
-<glyph unicode="&#178;" horiz-adv-x="394" d="M319 690q0 -31 -10.5 -60q-10.5 -29 -28 -57q-17.5 -28 -41.5 -55.5q-24 -27.5 -51 -55.5l-46 -32v-2l57 15h140v-63h-291v33q23 19 57.5 51q34.5 32 66.5 69q32 37 54.5 76q22.5 39 22.5 72q0 31 -20 46.5q-20 15.5 -49 15.5q-27 0 -52.5 -9.5q-25.5 -9.5 -44.5 -21.5l-22 57q26 18 60.5 28q34.5 10 70.5 10q63 0 95 -31t32 -86z" />
-<glyph unicode="&#179;" horiz-adv-x="394" d="M169 433q48 0 73.5 19q25.5 19 25.5 56q0 32 -23 52q-23 20 -74 20h-55v23l97 116l34 27l-49 -6h-130v60h256v-33l-103 -123l-25 -18v-2l23 3q55 -1 87 -33q32 -32 32 -86q0 -61 -44.5 -98q-44.5 -37 -118.5 -37q-36 0 -62 6q-26 6 -46 13l15 60q17 -8 39 -13.5t48 -5.5z" />
-<glyph unicode="&#180;" horiz-adv-x="268" d="M119 720h89v-21l-101 -128l-47 0z" />
-<glyph unicode="&#181;" horiz-adv-x="552" d="M148 500v-283q0 -79 24.5 -119q24.5 -40 85.5 -40q55 0 93 32.5q38 32.5 53 85.5l0 324h80v-337q0 -41 2.5 -82.5q2.5 -41.5 12.5 -80.5l-55 0l-28 74h-4q-20 -35 -61.5 -60.5q-41.5 -25.5 -101.5 -25.5q-48 0 -73.5 14q-25.5 14 -43.5 36l-5 0l21 -105v-133h-80l0 700z" />
-<glyph unicode="&#182;" horiz-adv-x="494" d="M341 700h68v-830h-68zM185 310q-32 0 -59 16.5q-27 16.5 -46.5 44q-19.5 27.5 -31 63q-11.5 35.5 -11.5 72.5q0 37 11.5 72q11.5 35 33.5 62q22 27 54 43.5q32 16.5 72 16.5h45v-830l-68 0z" />
-<glyph unicode="&#183;" horiz-adv-x="267" d="M76 296q0 27 15.5 42.5q15.5 15.5 41.5 15.5q27 0 43 -15.5q16 -15.5 16 -42.5q0 -26 -16 -42q-16 -16 -43 -16q-26 0 -41.5 16t-15.5 42z" />
-<glyph unicode="&#184;" horiz-adv-x="287" d="M172 0l-24 -43q42 -8 60.5 -26q18.5 -18 18.5 -49q0 -39 -32 -64.5q-32 -25.5 -90 -25.5q-11 0 -22 1q-11 1 -23 3l9 39q6 -1 11 -1q5 0 10 0q22 0 34.5 4q12.5 4 19 9.5q6.5 5.5 8 12.5q1.5 7 1.5 13q0 28 -86 37l48 90z" />
-<glyph unicode="&#185;" horiz-adv-x="394" d="M72 441h106v254l7 36l-27 -28l-78 -47l-27 49l154 102h41v-366h95v-61l-271 0z" />
-<glyph unicode="&#186;" horiz-adv-x="398" d="M44 542q0 45 12 77q12 32 32.5 53q20.5 21 49 30.5q28.5 9.5 61.5 9.5q33 0 61.5 -9q28.5 -9 49 -29q20.5 -20 32.5 -52.5q12 -32.5 12 -79.5q0 -47 -12 -79.5q-12 -32.5 -32.5 -52.5q-20.5 -20 -49 -29q-28.5 -9 -61.5 -9q-33 0 -61.5 9q-28.5 9 -49 29q-20.5 20 -32.5 52.5q-12 32.5 -12 79.5zt0 0zM118 542q0 -60 21.5 -86q21.5 -26 59.5 -26q19 0 34 5.5q15 5.5 25.5 18q10.5 12.5 16 34q5.5 21.5 5.5 54.5q0 33 -5.5 54.5q-5.5 21.5 -16 34q-10.5 12.5 -25.5 18q-15 5.5 -34 5.5q-38 0 -59.5 -23.5t-21.5 -88.5z" />
-<glyph unicode="&#187;" horiz-adv-x="478" d="M257 268l-160 -228l-52 42l96 144l49 41l-49 36l-102 141l52 43zM439 268l-160 -230l-54 43l98 145l48 41l-48 36l-104 142l53 44z" />
-<glyph unicode="&#188;" horiz-adv-x="837" d="M628 713l52 -35l-487 -690l-52 36zM797 96h-83v-96h-67v96h-204v37l226 302h45v-280h83zM647 283l6 49h-2l-22 -46l-78 -105l-33 -31l50 5h79zM179 595l7 36l-28 -28l-78 -47l-27 49l154 102h42v-427l-70 0z" />
-<glyph unicode="&#189;" horiz-adv-x="850" d="M628 713l52 -35l-487 -690l-52 36zM790 310q0 -31 -10.5 -60q-10.5 -29 -28 -57q-17.5 -28 -41.5 -55.5q-24 -27.5 -51 -55.5l-46 -32v-2l57 15h140v-63h-291v33q23 19 57.5 51q34.5 32 66.5 69q32 37 54.5 76q22.5 39 22.5 72q0 31 -20 46.5q-20 15.5 -49 15.5q-27 0 -52.5 -9.5q-25.5 -9.5 -44.5 -21.5l-22 57q26 18 60.5 28q34.5 10 70.5 10q63 0 95 -31q32 -31 32 -86zt0 0zM179 595l7 36l-28 -28l-78 -47l-27 49l154 102h42v-427l-70 0z" />
-<glyph unicode="&#190;" horiz-adv-x="876" d="M667 713l52 -35l-487 -690l-52 36zM836 96h-83v-96h-67v96h-204v37l226 302h45v-280h83zM686 283l6 49h-2l-22 -46l-78 -105l-33 -31l50 5h79zM178 333q48 0 73.5 19q25.5 19 25.5 56q0 32 -23 52q-23 20 -74 20h-55v23l97 116l34 27l-49 -6h-130v60h256v-33l-103 -123l-25 -18v-2l23 3q55 -1 87 -33q32 -32 32 -86q0 -61 -44.5 -98q-44.5 -37 -118.5 -37q-36 0 -62 6q-26 6 -46 13l15 60q17 -8 39 -13.5t48 -5.5z" />
-<glyph unicode="&#191;" horiz-adv-x="436" d="M286 323q1 -5 1 -11q0 -6 0 -11q0 -42 -12.5 -74q-12.5 -32 -31 -58.5q-18.5 -26.5 -40 -49.5q-21.5 -23 -40 -46.5q-18.5 -23.5 -31 -50q-12.5 -26.5 -12.5 -60.5q0 -46 26.5 -75q26.5 -29 88.5 -29q36 0 73 12.5q37 12.5 64 29.5l27 -62q-38 -23 -80 -36.5q-42 -13.5 -104 -13.5q-44 0 -77.5 12.5q-33.5 12.5 -56 34.5q-22.5 22 -33.5 51.5q-11 29.5 -11 64.5q0 45 13.5 78.5q13.5 33.5 34 61q20.5 27.5 44 51.5q23.5 24 44 50.5q20.5 26.5 34 57.5q13.5 31 13.5 73zM191 454q0 27 15.5 42.5q15.5 15.5 41.5 15.5q27 0 43 -15.5q16 -15.5 16 -42.5q0 -26 -16 -42q-16 -16 -43 -16q-26 0 -41.5 16t-15.5 42z" />
-<glyph unicode="&#192;" horiz-adv-x="585" d="M418 194h-258l-70 -194h-82l265 711h38l266 -711h-87zM187 266h206l-78 213l-25 106h-1l-25 -108zM367 752h-74l-158 97v21l114 0z" />
-<glyph unicode="&#193;" horiz-adv-x="585" d="M418 194h-258l-70 -194h-82l265 711h38l266 -711h-87zM187 266h206l-78 213l-25 106h-1l-25 -108zM331 870h114v-21l-163 -97l-69 0z" />
-<glyph unicode="&#194;" horiz-adv-x="585" d="M418 194h-258l-70 -194h-82l265 711h38l266 -711h-87zM187 266h206l-78 213l-25 106h-1l-25 -108zM265 870h60l127 -102v-21h-81l-60 49l-17 35l-19 -34l-64 -50h-79l0 22z" />
-<glyph unicode="&#195;" horiz-adv-x="585" d="M418 194h-258l-70 -194h-82l265 711h38l266 -711h-87zM187 266h206l-78 213l-25 106h-1l-25 -108zM135 785q31 32 57.5 43.5q26.5 11.5 50.5 11.5q19 0 37 -5q18 -5 34.5 -11.5q16.5 -6.5 32.5 -11.5q16 -5 31 -5q26 0 50 21l25 -43q-27 -25 -51 -34.5q-24 -9.5 -45 -9.5q-19 0 -36 5q-17 5 -33.5 11.5q-16.5 6.5 -32.5 11.5q-16 5 -32 5q-16 0 -31.5 -6.5q-15.5 -6.5 -32.5 -23.5z" />
-<glyph unicode="&#196;" horiz-adv-x="585" d="M418 194h-258l-70 -194h-82l265 711h38l266 -711h-87zM187 266h206l-78 213l-25 106h-1l-25 -108zM144 794q0 21 15 34q15 13 39 13q23 0 37.5 -13q14.5 -13 14.5 -34q0 -20 -14.5 -33q-14.5 -13 -37.5 -13q-24 0 -39 13q-15 13 -15 33zt0 0zM336 794q0 21 14.5 34q14.5 13 37.5 13q24 0 39 -13q15 -13 15 -34q0 -20 -15 -33q-15 -13 -39 -13q-23 0 -37.5 13t-14.5 33z" />
-<glyph unicode="&#197;" horiz-adv-x="585" d="M188 768q0 37 25 61q25 24 80 24q50 0 78 -21.5q28 -21.5 28 -63.5q0 -32 -20 -53.5q-20 -21.5 -59 -27.5l257 -687h-87l-72 194h-258l-70 -194h-82l256 687q-38 6 -57 27.5q-19 21.5 -19 53.5zt0 0zM187 266h206l-78 213l-25 106h-1l-25 -108zM249 768q0 -17 10.5 -28.5q10.5 -11.5 33.5 -11.5q22 0 33.5 11q11.5 11 11.5 29q0 19 -11 30.5q-11 11.5 -34 11.5q-22 0 -33 -11.5t-11 -30.5z" />
-<glyph unicode="&#198;" horiz-adv-x="846" d="M391 600l-34 -103l-133 -229h171v332zM395 198h-214l-112 -198h-91l415 700h383v-74h-298v-229h273v-74h-273v-249h303v-74l-386 0z" />
-<glyph unicode="&#199;" horiz-adv-x="571" d="M533 29q-26 -20 -64 -29q-38 -9 -83 -11l-17 -32q42 -8 60.5 -26q18.5 -18 18.5 -49q0 -39 -32 -64.5q-32 -25.5 -90 -25.5q-11 0 -22 1q-11 1 -23 3l9 39q6 -1 11 -1q5 0 10 0q22 0 34.5 4q12.5 4 19 9.5q6.5 5.5 8 12.5q1.5 7 1.5 13q0 28 -86 37l42 80q-58 4 -108 27.5q-50 23.5 -87 67.5q-37 44 -58 110q-21 66 -21 155q0 98 26.5 166.5q26.5 68.5 70 112q43.5 43.5 97.5 63.5q54 20 110 20q60 0 98 -6.5q38 -6.5 65 -17.5l-20 -73q-48 23 -137 23q-41 0 -81 -15q-40 -15 -71.5 -49q-31.5 -34 -50.5 -89q-19 -55 -19 -135q0 -72 18 -126q18 -54 49.5 -90q31.5 -36 74 -54q42.5 -18 92.5 -18q45 0 78.5 9q33.5 9 56.5 23z" />
-<glyph unicode="&#200;" horiz-adv-x="536" d="M85 700h381v-74h-298v-229h273v-74h-273v-249h303v-74h-386zM326 752h-74l-158 97v21l114 0z" />
-<glyph unicode="&#201;" horiz-adv-x="536" d="M85 700h381v-74h-298v-229h273v-74h-273v-249h303v-74h-386zM330 870h114v-21l-163 -97l-69 0z" />
-<glyph unicode="&#202;" horiz-adv-x="536" d="M85 700h381v-74h-298v-229h273v-74h-273v-249h303v-74h-386zM242 870h60l127 -102v-21h-81l-60 49l-17 35l-19 -34l-64 -50h-79l0 22z" />
-<glyph unicode="&#203;" horiz-adv-x="536" d="M85 700h381v-74h-298v-229h273v-74h-273v-249h303v-74h-386zM120 794q0 21 15 34q15 13 39 13q23 0 37.5 -13q14.5 -13 14.5 -34q0 -20 -14.5 -33q-14.5 -13 -37.5 -13q-24 0 -39 13q-15 13 -15 33zt0 0zM312 794q0 21 14.5 34q14.5 13 37.5 13q24 0 39 -13q15 -13 15 -34q0 -20 -15 -33q-15 -13 -39 -13q-23 0 -37.5 13t-14.5 33z" />
-<glyph unicode="&#204;" horiz-adv-x="291" d="M104 700h83v-700h-83zM232 752h-74l-158 97v21l114 0z" />
-<glyph unicode="&#205;" horiz-adv-x="291" d="M104 700h83v-700h-83zM180 870h114v-21l-163 -97l-69 0z" />
-<glyph unicode="&#206;" horiz-adv-x="291" d="M104 700h83v-700h-83zM117 870h60l127 -102v-21h-81l-60 49l-17 35l-19 -34l-64 -50h-79l0 22z" />
-<glyph unicode="&#207;" horiz-adv-x="291" d="M104 700h83v-700h-83zM-3 794q0 21 15 34q15 13 39 13q23 0 37.5 -13q14.5 -13 14.5 -34q0 -20 -14.5 -33q-14.5 -13 -37.5 -13q-24 0 -39 13q-15 13 -15 33zt0 0zM189 794q0 21 14.5 34q14.5 13 37.5 13q24 0 39 -13q15 -13 15 -34q0 -20 -15 -33q-15 -13 -39 -13q-23 0 -37.5 13t-14.5 33z" />
-<glyph unicode="&#208;" horiz-adv-x="658" d="M-1 392h90v308q19 3 42.5 4.5q23.5 1.5 49 2q25.5 0.5 50 1q24.5 0.5 45.5 0.5q84 0 145.5 -26q61.5 -26 101.5 -72.5q40 -46.5 59.5 -111.5q19.5 -65 19.5 -143q0 -71 -18.5 -136.5q-18.5 -65.5 -58.5 -116q-40 -50.5 -104 -81q-64 -30.5 -155 -30.5q-16 0 -41.5 0.5q-25.5 0.5 -52.5 2q-27 1.5 -50 2.5q-23 1 -33 3l0 333h-90zM278 634q-13 0 -28.5 0q-15.5 0 -30.5 -1q-15 -1 -27.5 -2q-12.5 -1 -19.5 -2l0 -237h147v-60h-147v-263q5 -1 19 -1.5q14 -0.5 29 -1q15 -0.5 29 -1q14 -0.5 19 -0.5q70 0 117.5 24q47.5 24 76 64.5q28.5 40.5 40.5 93q12 52.5 12 108.5q0 49 -11 98.5q-11 49.5 -38 89.5q-27 40 -72.5 65.5t-114.5 25.5z" />
-<glyph unicode="&#209;" horiz-adv-x="673" d="M211 458l-54 101h-4l10 -101v-458h-78v711h44l335 -467l52 -96h5l-11 96v456h78v-711h-44zM179 785q31 32 57.5 43.5q26.5 11.5 50.5 11.5q19 0 37 -5q18 -5 34.5 -11.5q16.5 -6.5 32.5 -11.5q16 -5 31 -5q26 0 50 21l25 -43q-27 -25 -51 -34.5q-24 -9.5 -45 -9.5q-19 0 -36 5q-17 5 -33.5 11.5q-16.5 6.5 -32.5 11.5q-16 5 -32 5q-16 0 -31.5 -6.5q-15.5 -6.5 -32.5 -23.5z" />
-<glyph unicode="&#210;" horiz-adv-x="684" d="M56 350q0 175 74 268.5q74 93.5 211 93.5q74 0 128 -26q54 -26 89.5 -73.5q35.5 -47.5 52.5 -114q17 -66.5 17 -148.5q0 -175 -74.5 -268.5q-74.5 -93.5 -212.5 -93.5q-73 0 -126.5 26q-53.5 26 -89 73.5q-35.5 47.5 -52.5 114q-17 66.5 -17 148.5zt0 0zM144 350q0 -58 11.5 -110q11.5 -52 35.5 -91.5q24 -39.5 61.5 -63q37.5 -23.5 88.5 -23.5q93 0 146 70.5q53 70.5 53 217.5q0 57 -11.5 109.5q-11.5 52.5 -36 92q-24.5 39.5 -62 63q-37.5 23.5 -89.5 23.5q-92 0 -144.5 -70.5q-52.5 -70.5 -52.5 -217.5zt0 0zM410 752h-74l-158 97v21l114 0z" />
-<glyph unicode="&#211;" horiz-adv-x="684" d="M56 350q0 175 74 268.5q74 93.5 211 93.5q74 0 128 -26q54 -26 89.5 -73.5q35.5 -47.5 52.5 -114q17 -66.5 17 -148.5q0 -175 -74.5 -268.5q-74.5 -93.5 -212.5 -93.5q-73 0 -126.5 26q-53.5 26 -89 73.5q-35.5 47.5 -52.5 114q-17 66.5 -17 148.5zt0 0zM144 350q0 -58 11.5 -110q11.5 -52 35.5 -91.5q24 -39.5 61.5 -63q37.5 -23.5 88.5 -23.5q93 0 146 70.5q53 70.5 53 217.5q0 57 -11.5 109.5q-11.5 52.5 -36 92q-24.5 39.5 -62 63q-37.5 23.5 -89.5 23.5q-92 0 -144.5 -70.5q-52.5 -70.5 -52.5 -217.5zt0 0zM415 870h114v-21l-163 -97l-69 0z" />
-<glyph unicode="&#212;" horiz-adv-x="684" d="M56 350q0 175 74 268.5q74 93.5 211 93.5q74 0 128 -26q54 -26 89.5 -73.5q35.5 -47.5 52.5 -114q17 -66.5 17 -148.5q0 -175 -74.5 -268.5q-74.5 -93.5 -212.5 -93.5q-73 0 -126.5 26q-53.5 26 -89 73.5q-35.5 47.5 -52.5 114q-17 66.5 -17 148.5zt0 0zM144 350q0 -58 11.5 -110q11.5 -52 35.5 -91.5q24 -39.5 61.5 -63q37.5 -23.5 88.5 -23.5q93 0 146 70.5q53 70.5 53 217.5q0 57 -11.5 109.5q-11.5 52.5 -36 92q-24.5 39.5 -62 63q-37.5 23.5 -89.5 23.5q-92 0 -144.5 -70.5q-52.5 -70.5 -52.5 -217.5zt0 0zM312 870h60l127 -102v-21h-81l-60 49l-17 35l-19 -34l-64 -50h-79l0 22z" />
-<glyph unicode="&#213;" horiz-adv-x="684" d="M56 350q0 175 74 268.5q74 93.5 211 93.5q74 0 128 -26q54 -26 89.5 -73.5q35.5 -47.5 52.5 -114q17 -66.5 17 -148.5q0 -175 -74.5 -268.5q-74.5 -93.5 -212.5 -93.5q-73 0 -126.5 26q-53.5 26 -89 73.5q-35.5 47.5 -52.5 114q-17 66.5 -17 148.5zt0 0zM144 350q0 -58 11.5 -110q11.5 -52 35.5 -91.5q24 -39.5 61.5 -63q37.5 -23.5 88.5 -23.5q93 0 146 70.5q53 70.5 53 217.5q0 57 -11.5 109.5q-11.5 52.5 -36 92q-24.5 39.5 -62 63q-37.5 23.5 -89.5 23.5q-92 0 -144.5 -70.5q-52.5 -70.5 -52.5 -217.5zt0 0zM182 785q31 32 57.5 43.5q26.5 11.5 50.5 11.5q19 0 37 -5q18 -5 34.5 -11.5q16.5 -6.5 32.5 -11.5q16 -5 31 -5q26 0 50 21l25 -43q-27 -25 -51 -34.5q-24 -9.5 -45 -9.5q-19 0 -36 5q-17 5 -33.5 11.5q-16.5 6.5 -32.5 11.5q-16 5 -32 5q-16 0 -31.5 -6.5q-15.5 -6.5 -32.5 -23.5z" />
-<glyph unicode="&#214;" horiz-adv-x="684" d="M56 350q0 175 74 268.5q74 93.5 211 93.5q74 0 128 -26q54 -26 89.5 -73.5q35.5 -47.5 52.5 -114q17 -66.5 17 -148.5q0 -175 -74.5 -268.5q-74.5 -93.5 -212.5 -93.5q-73 0 -126.5 26q-53.5 26 -89 73.5q-35.5 47.5 -52.5 114q-17 66.5 -17 148.5zt0 0zM144 350q0 -58 11.5 -110q11.5 -52 35.5 -91.5q24 -39.5 61.5 -63q37.5 -23.5 88.5 -23.5q93 0 146 70.5q53 70.5 53 217.5q0 57 -11.5 109.5q-11.5 52.5 -36 92q-24.5 39.5 -62 63q-37.5 23.5 -89.5 23.5q-92 0 -144.5 -70.5q-52.5 -70.5 -52.5 -217.5zt0 0zM190 794q0 21 15 34q15 13 39 13q23 0 37.5 -13q14.5 -13 14.5 -34q0 -20 -14.5 -33q-14.5 -13 -37.5 -13q-24 0 -39 13q-15 13 -15 33zt0 0zM382 794q0 21 14.5 34q14.5 13 37.5 13q24 0 39 -13q15 -13 15 -34q0 -20 -15 -33q-15 -13 -39 -13q-23 0 -37.5 13t-14.5 33z" />
-<glyph unicode="&#215;" horiz-adv-x="505" d="M127 517l126 -127l127 127l51 -53l-126 -126l126 -127l-51 -52l-127 128l-127 -128l-52 51l128 129l-126 125z" />
-<glyph unicode="&#216;" horiz-adv-x="684" d="M122 91q-34 48 -50 113q-16 65 -16 146q0 175 74 268.5q74 93.5 211 93.5q57 0 101 -15q44 -15 78 -44l42 60l52 -35l-51 -72q33 -48 49 -112.5q16 -64.5 16 -143.5q0 -175 -74.5 -268.5q-74.5 -93.5 -212.5 -93.5q-107 0 -175 56h-39l-52 -20zM144 350q0 -51 8.5 -96q8.5 -45 26.5 -83l290 411q-23 26 -54.5 41q-31.5 15 -73.5 15q-92 0 -144.5 -70.5q-52.5 -70.5 -52.5 -217.5zt0 0zM540 350q0 48 -8.5 93q-8.5 45 -25.5 82l-290 -411q23 -25 54 -38.5q31 -13.5 71 -13.5q93 0 146 70.5t53 217.5z" />
-<glyph unicode="&#217;" horiz-adv-x="652" d="M487 700h80v-467q0 -63 -16.5 -109q-16.5 -46 -47 -75.5q-30.5 -29.5 -73.5 -43.5q-43 -14 -95 -14q-124 0 -187 56q-63 56 -63 170v483h83v-444q0 -53 10.5 -89.5q10.5 -36.5 31.5 -59q21 -22.5 52.5 -32.5q31.5 -10 73.5 -10q81 0 116 44.5q35 44.5 35 146.5zM407 752h-74l-158 97v21l114 0z" />
-<glyph unicode="&#218;" horiz-adv-x="652" d="M487 700h80v-467q0 -63 -16.5 -109q-16.5 -46 -47 -75.5q-30.5 -29.5 -73.5 -43.5q-43 -14 -95 -14q-124 0 -187 56q-63 56 -63 170v483h83v-444q0 -53 10.5 -89.5q10.5 -36.5 31.5 -59q21 -22.5 52.5 -32.5q31.5 -10 73.5 -10q81 0 116 44.5q35 44.5 35 146.5zM390 870h114v-21l-163 -97l-69 0z" />
-<glyph unicode="&#219;" horiz-adv-x="652" d="M487 700h80v-467q0 -63 -16.5 -109q-16.5 -46 -47 -75.5q-30.5 -29.5 -73.5 -43.5q-43 -14 -95 -14q-124 0 -187 56q-63 56 -63 170v483h83v-444q0 -53 10.5 -89.5q10.5 -36.5 31.5 -59q21 -22.5 52.5 -32.5q31.5 -10 73.5 -10q81 0 116 44.5q35 44.5 35 146.5zM301 870h60l127 -102v-21h-81l-60 49l-17 35l-19 -34l-64 -50h-79l0 22z" />
-<glyph unicode="&#220;" horiz-adv-x="652" d="M487 700h80v-467q0 -63 -16.5 -109q-16.5 -46 -47 -75.5q-30.5 -29.5 -73.5 -43.5q-43 -14 -95 -14q-124 0 -187 56q-63 56 -63 170v483h83v-444q0 -53 10.5 -89.5q10.5 -36.5 31.5 -59q21 -22.5 52.5 -32.5q31.5 -10 73.5 -10q81 0 116 44.5q35 44.5 35 146.5zM178 794q0 21 15 34q15 13 39 13q23 0 37.5 -13q14.5 -13 14.5 -34q0 -20 -14.5 -33q-14.5 -13 -37.5 -13q-24 0 -39 13q-15 13 -15 33zt0 0zM370 794q0 21 14.5 34q14.5 13 37.5 13q24 0 39 -13q15 -13 15 -34q0 -20 -15 -33q-15 -13 -39 -13q-23 0 -37.5 13t-14.5 33z" />
-<glyph unicode="&#221;" horiz-adv-x="558" d="M239 278l-231 422h97l164 -306l17 -61h1l18 63l157 304h89l-229 -421v-279h-83zM355 870h114v-21l-163 -97l-69 0z" />
-<glyph unicode="&#222;" horiz-adv-x="559" d="M85 700h83v-75q42 3 86 3q46 0 93.5 -9q47.5 -9 86.5 -33q39 -24 63.5 -66q24.5 -42 24.5 -107q0 -64 -23 -108q-23 -44 -61 -71.5q-38 -27.5 -87 -40q-49 -12.5 -101 -12.5q-5 0 -16.5 0q-11.5 0 -24 0.5q-12.5 0.5 -24.5 1.5q-12 1 -17 2l0 -185h-83zM256 556q-26 0 -50 -1q-24 -1 -38 -5l0 -290q5 -2 16 -2.5q11 -0.5 23 -1.5q12 -1 23 -1q11 0 16 0q34 0 67.5 6.5q33.5 6.5 60.5 24q27 17.5 43.5 48.5q16.5 31 16.5 79q0 41 -15.5 68.5q-15.5 27.5 -41 44q-25.5 16.5 -57.5 23.5t-64 7z" />
-<glyph unicode="&#223;" horiz-adv-x="592" d="M384 559q0 17 -9.5 31.5q-9.5 14.5 -24.5 24.5q-15 10 -33 15.5q-18 5.5 -35 5.5q-28 0 -47.5 -7q-19.5 -7 -31.5 -23q-12 -16 -17.5 -42.5q-5.5 -26.5 -5.5 -65.5v-498h-80v430h-78v70h78v23q0 97 47.5 140q47.5 43 131.5 43q41 0 75 -10.5q34 -10.5 58.5 -30q24.5 -19.5 38 -46q13.5 -26.5 13.5 -59.5q0 -38 -19 -61q-19 -23 -41.5 -41q-22.5 -18 -41.5 -35q-19 -17 -19 -42q0 -22 15 -35q15 -13 38 -23q23 -10 49 -20.5q26 -10.5 49 -27.5q23 -17 38 -44.5q15 -27.5 15 -71.5q0 -32 -12 -62.5q-12 -30.5 -34.5 -54.5q-22.5 -24 -56.5 -39q-34 -15 -77 -15q-23 0 -40.5 1.5q-17.5 1.5 -32 5q-14.5 3.5 -27.5 8.5q-13 5 -26 13l23 65q12 -6 21 -11q9 -5 19.5 -8q10.5 -3 23.5 -4.5q13 -1.5 32 -1.5q21 0 40.5 7.5q19.5 7.5 34.5 20.5q15 13 23.5 31.5q8.5 18.5 8.5 40.5q0 30 -15 47.5q-15 17.5 -38 29.5q-23 12 -49 21.5q-26 9.5 -49 24q-23 14.5 -38 37q-15 22.5 -15 60.5q0 39 19 62.5q19 23.5 41.5 42q22.5 18.5 41.5 35.5t19 43z" />
-<glyph unicode="&#224;" horiz-adv-x="496" d="M69 463q38 23 88.5 34q50.5 11 105.5 11q52 0 83.5 -14q31.5 -14 48 -36.5q16.5 -22.5 22 -49.5q5.5 -27 5.5 -54q0 -60 -3 -117q-3 -57 -3 -108q0 -37 3 -70q3 -33 11 -61l-59 0l-21 70h-5q-9 -14 -22.5 -27.5q-13.5 -13.5 -32.5 -24q-19 -10.5 -44 -17.5q-25 -7 -57 -7q-32 0 -59.5 10q-27.5 10 -47.5 28.5q-20 18.5 -31.5 44.5q-11.5 26 -11.5 59q0 44 18 73.5q18 29.5 50.5 47q32.5 17.5 78 25q45.5 7.5 100.5 7.5q14 0 27.5 0q13.5 0 27.5 -2q3 30 3 54q0 55 -22 77q-22 22 -80 22q-17 0 -36.5 -2.5q-19.5 -2.5 -40 -7q-20.5 -4.5 -39 -11q-18.5 -6.5 -32.5 -14.5zM211 62q28 0 50 7.5q22 7.5 38 19q16 11.5 26.5 25.5q10.5 14 15.5 27l0 83q-14 1 -28.5 1.5q-14.5 0.5 -28.5 0.5q-31 0 -60.5 -3.5q-29.5 -3.5 -52 -13q-22.5 -9.5 -36 -26q-13.5 -16.5 -13.5 -41.5q0 -35 25 -57.5q25 -22.5 64 -22.5zt0 0zM305 571h-45l-115 128v21l95 0z" />
-<glyph unicode="&#225;" horiz-adv-x="496" d="M69 463q38 23 88.5 34q50.5 11 105.5 11q52 0 83.5 -14q31.5 -14 48 -36.5q16.5 -22.5 22 -49.5q5.5 -27 5.5 -54q0 -60 -3 -117q-3 -57 -3 -108q0 -37 3 -70q3 -33 11 -61l-59 0l-21 70h-5q-9 -14 -22.5 -27.5q-13.5 -13.5 -32.5 -24q-19 -10.5 -44 -17.5q-25 -7 -57 -7q-32 0 -59.5 10q-27.5 10 -47.5 28.5q-20 18.5 -31.5 44.5q-11.5 26 -11.5 59q0 44 18 73.5q18 29.5 50.5 47q32.5 17.5 78 25q45.5 7.5 100.5 7.5q14 0 27.5 0q13.5 0 27.5 -2q3 30 3 54q0 55 -22 77q-22 22 -80 22q-17 0 -36.5 -2.5q-19.5 -2.5 -40 -7q-20.5 -4.5 -39 -11q-18.5 -6.5 -32.5 -14.5zM211 62q28 0 50 7.5q22 7.5 38 19q16 11.5 26.5 25.5q10.5 14 15.5 27l0 83q-14 1 -28.5 1.5q-14.5 0.5 -28.5 0.5q-31 0 -60.5 -3.5q-29.5 -3.5 -52 -13q-22.5 -9.5 -36 -26q-13.5 -16.5 -13.5 -41.5q0 -35 25 -57.5q25 -22.5 64 -22.5zt0 0zM238 720h89v-21l-101 -128l-47 0z" />
-<glyph unicode="&#226;" horiz-adv-x="496" d="M69 463q38 23 88.5 34q50.5 11 105.5 11q52 0 83.5 -14q31.5 -14 48 -36.5q16.5 -22.5 22 -49.5q5.5 -27 5.5 -54q0 -60 -3 -117q-3 -57 -3 -108q0 -37 3 -70q3 -33 11 -61l-59 0l-21 70h-5q-9 -14 -22.5 -27.5q-13.5 -13.5 -32.5 -24q-19 -10.5 -44 -17.5q-25 -7 -57 -7q-32 0 -59.5 10q-27.5 10 -47.5 28.5q-20 18.5 -31.5 44.5q-11.5 26 -11.5 59q0 44 18 73.5q18 29.5 50.5 47q32.5 17.5 78 25q45.5 7.5 100.5 7.5q14 0 27.5 0q13.5 0 27.5 -2q3 30 3 54q0 55 -22 77q-22 22 -80 22q-17 0 -36.5 -2.5q-19.5 -2.5 -40 -7q-20.5 -4.5 -39 -11q-18.5 -6.5 -32.5 -14.5zM211 62q28 0 50 7.5q22 7.5 38 19q16 11.5 26.5 25.5q10.5 14 15.5 27l0 83q-14 1 -28.5 1.5q-14.5 0.5 -28.5 0.5q-31 0 -60.5 -3.5q-29.5 -3.5 -52 -13q-22.5 -9.5 -36 -26q-13.5 -16.5 -13.5 -41.5q0 -35 25 -57.5q25 -22.5 64 -22.5zt0 0zM239 732h32l111 -182h-72l-39 66l-21 58l-22 -58l-45 -66l-67 0z" />
-<glyph unicode="&#227;" horiz-adv-x="496" d="M69 463q38 23 88.5 34q50.5 11 105.5 11q52 0 83.5 -14q31.5 -14 48 -36.5q16.5 -22.5 22 -49.5q5.5 -27 5.5 -54q0 -60 -3 -117q-3 -57 -3 -108q0 -37 3 -70q3 -33 11 -61l-59 0l-21 70h-5q-9 -14 -22.5 -27.5q-13.5 -13.5 -32.5 -24q-19 -10.5 -44 -17.5q-25 -7 -57 -7q-32 0 -59.5 10q-27.5 10 -47.5 28.5q-20 18.5 -31.5 44.5q-11.5 26 -11.5 59q0 44 18 73.5q18 29.5 50.5 47q32.5 17.5 78 25q45.5 7.5 100.5 7.5q14 0 27.5 0q13.5 0 27.5 -2q3 30 3 54q0 55 -22 77q-22 22 -80 22q-17 0 -36.5 -2.5q-19.5 -2.5 -40 -7q-20.5 -4.5 -39 -11q-18.5 -6.5 -32.5 -14.5zM211 62q28 0 50 7.5q22 7.5 38 19q16 11.5 26.5 25.5q10.5 14 15.5 27l0 83q-14 1 -28.5 1.5q-14.5 0.5 -28.5 0.5q-31 0 -60.5 -3.5q-29.5 -3.5 -52 -13q-22.5 -9.5 -36 -26q-13.5 -16.5 -13.5 -41.5q0 -35 25 -57.5q25 -22.5 64 -22.5zt0 0zM109 656q29 33 53 45.5q24 12.5 44 12.5q17 0 31.5 -6.5q14.5 -6.5 28 -14q13.5 -7.5 26 -13.5q12.5 -6 26.5 -6q22 0 46 24l24 -43q-26 -29 -47.5 -39.5q-21.5 -10.5 -39.5 -10.5q-16 0 -30 6q-14 6 -27.5 13.5q-13.5 7.5 -27 14q-13.5 6.5 -27.5 6.5q-13 0 -26.5 -7q-13.5 -7 -30.5 -24z" />
-<glyph unicode="&#228;" horiz-adv-x="496" d="M69 463q38 23 88.5 34q50.5 11 105.5 11q52 0 83.5 -14q31.5 -14 48 -36.5q16.5 -22.5 22 -49.5q5.5 -27 5.5 -54q0 -60 -3 -117q-3 -57 -3 -108q0 -37 3 -70q3 -33 11 -61l-59 0l-21 70h-5q-9 -14 -22.5 -27.5q-13.5 -13.5 -32.5 -24q-19 -10.5 -44 -17.5q-25 -7 -57 -7q-32 0 -59.5 10q-27.5 10 -47.5 28.5q-20 18.5 -31.5 44.5q-11.5 26 -11.5 59q0 44 18 73.5q18 29.5 50.5 47q32.5 17.5 78 25q45.5 7.5 100.5 7.5q14 0 27.5 0q13.5 0 27.5 -2q3 30 3 54q0 55 -22 77q-22 22 -80 22q-17 0 -36.5 -2.5q-19.5 -2.5 -40 -7q-20.5 -4.5 -39 -11q-18.5 -6.5 -32.5 -14.5zM211 62q28 0 50 7.5q22 7.5 38 19q16 11.5 26.5 25.5q10.5 14 15.5 27l0 83q-14 1 -28.5 1.5q-14.5 0.5 -28.5 0.5q-31 0 -60.5 -3.5q-29.5 -3.5 -52 -13q-22.5 -9.5 -36 -26q-13.5 -16.5 -13.5 -41.5q0 -35 25 -57.5q25 -22.5 64 -22.5zt0 0zM105 653q0 23 13.5 37q13.5 14 35.5 14q22 0 35.5 -14q13.5 -14 13.5 -37q0 -21 -13.5 -35q-13.5 -14 -35.5 -14q-22 0 -35.5 14q-13.5 14 -13.5 35zt0 0zM297 653q0 23 13.5 37q13.5 14 35.5 14q23 0 36.5 -14q13.5 -14 13.5 -37q0 -21 -13.5 -35q-13.5 -14 -36.5 -14q-22 0 -35.5 14t-13.5 35z" />
-<glyph unicode="&#229;" horiz-adv-x="496" d="M69 463q38 23 88.5 34q50.5 11 105.5 11q52 0 83.5 -14q31.5 -14 48 -36.5q16.5 -22.5 22 -49.5q5.5 -27 5.5 -54q0 -60 -3 -117q-3 -57 -3 -108q0 -37 3 -70q3 -33 11 -61l-59 0l-21 70h-5q-9 -14 -22.5 -27.5q-13.5 -13.5 -32.5 -24q-19 -10.5 -44 -17.5q-25 -7 -57 -7q-32 0 -59.5 10q-27.5 10 -47.5 28.5q-20 18.5 -31.5 44.5q-11.5 26 -11.5 59q0 44 18 73.5q18 29.5 50.5 47q32.5 17.5 78 25q45.5 7.5 100.5 7.5q14 0 27.5 0q13.5 0 27.5 -2q3 30 3 54q0 55 -22 77q-22 22 -80 22q-17 0 -36.5 -2.5q-19.5 -2.5 -40 -7q-20.5 -4.5 -39 -11q-18.5 -6.5 -32.5 -14.5zM211 62q28 0 50 7.5q22 7.5 38 19q16 11.5 26.5 25.5q10.5 14 15.5 27l0 83q-14 1 -28.5 1.5q-14.5 0.5 -28.5 0.5q-31 0 -60.5 -3.5q-29.5 -3.5 -52 -13q-22.5 -9.5 -36 -26q-13.5 -16.5 -13.5 -41.5q0 -35 25 -57.5q25 -22.5 64 -22.5zt0 0zM152 643q0 42 26.5 66.5q26.5 24.5 70.5 24.5q42 0 70 -22q28 -22 28 -69q0 -39 -28 -64.5q-28 -25.5 -70 -25.5q-42 0 -69.5 23.5q-27.5 23.5 -27.5 66.5zt0 0zM206 643q0 -20 13 -31q13 -11 30 -11q19 0 31.5 10q12.5 10 12.5 32q0 22 -13.5 32.5q-13.5 10.5 -30.5 10.5q-17 0 -30 -10t-13 -33z" />
-<glyph unicode="&#230;" horiz-adv-x="796" d="M211 62q28 0 50 7.5q22 7.5 38 19q16 11.5 26.5 25.5q10.5 14 15.5 27l0 83q-14 1 -28.5 1.5q-14.5 0.5 -28.5 0.5q-31 0 -60.5 -3.5q-29.5 -3.5 -52 -13q-22.5 -9.5 -36 -26q-13.5 -16.5 -13.5 -41.5q0 -35 25 -57.5q25 -22.5 64 -22.5zt0 0zM367 84q-13 -18 -30 -34.5q-17 -16.5 -38.5 -29q-21.5 -12.5 -49 -20.5q-27.5 -8 -60.5 -8q-32 0 -59.5 10q-27.5 10 -47.5 28.5q-20 18.5 -31.5 44.5q-11.5 26 -11.5 59q0 44 18 73.5q18 29.5 50.5 47q32.5 17.5 78 25q45.5 7.5 100.5 7.5q14 0 27.5 0q13.5 0 27.5 -2q1 15 2 28.5q1 13.5 1 25.5q0 55 -22 77.5q-22 22.5 -80 21.5q-17 0 -36.5 -2.5q-19.5 -2.5 -40 -7q-20.5 -4.5 -39 -11q-18.5 -6.5 -32.5 -14.5l-25 60q38 23 88.5 34q50.5 11 105.5 11q105 0 136 -65q26 36 70 52.5q44 16.5 88 16.5q34 0 68 -7.5q34 -7.5 61 -29q27 -21.5 44 -60.5q17 -39 17 -102q0 -16 -1.5 -33.5q-1.5 -17.5 -3.5 -37.5l-323 0q0 -87 36.5 -135.5q36.5 -48.5 124.5 -48.5q35 0 68.5 12.5q33.5 12.5 51.5 27.5l30 -58q-30 -24 -75.5 -38q-45.5 -14 -96.5 -14q-61 0 -110.5 25q-49.5 25 -73.5 71zM558 442q-59 0 -95 -31q-36 -31 -42 -106l248 0v12q0 68 -30.5 96.5t-80.5 28.5z" />
-<glyph unicode="&#231;" horiz-adv-x="451" d="M418 33q-49 -35 -121 -43l-18 -33q42 -8 60.5 -26q18.5 -18 18.5 -49q0 -39 -32 -64.5q-32 -25.5 -90 -25.5q-11 0 -22 1q-11 1 -23 3l9 39q6 -1 11 -1q5 0 10 0q22 0 34.5 4q12.5 4 19 9.5q6.5 5.5 8 12.5q1.5 7 1.5 13q0 28 -86 37l42 79q-52 3 -88 23q-36 20 -59 54q-23 34 -33.5 80.5q-10.5 46.5 -10.5 103.5q0 127 56 194.5q56 67.5 161 67.5q48 0 81.5 -7.5q33.5 -7.5 60.5 -21.5l-23 -69q-23 13 -51 20.5q-28 7.5 -60 7.5q-142 0 -142 -192q0 -38 7.5 -72.5q7.5 -34.5 25 -61q17.5 -26.5 46 -42q28.5 -15.5 70.5 -15.5q36 0 64.5 10.5q28.5 10.5 46.5 24.5z" />
-<glyph unicode="&#232;" horiz-adv-x="508" d="M442 40q-30 -24 -75.5 -38q-45.5 -14 -96.5 -14q-57 0 -99 18.5q-42 18.5 -69 53q-27 34.5 -40 82.5q-13 48 -13 108q0 128 57 195q57 67 163 67q34 0 68 -7.5q34 -7.5 61 -28.5q27 -21 44 -59.5q17 -38.5 17 -101.5q0 -33 -6 -73l-321 0q0 -44 9 -78q9 -34 28 -57.5q19 -23.5 49.5 -36q30.5 -12.5 74.5 -12.5q34 0 68 12q34 12 51 28zM270 442q-59 0 -94.5 -31q-35.5 -31 -42.5 -106l248 0q0 76 -29 106.5q-29 30.5 -82 30.5zt0 0zM330 571h-45l-115 128v21l95 0z" />
-<glyph unicode="&#233;" horiz-adv-x="508" d="M442 40q-30 -24 -75.5 -38q-45.5 -14 -96.5 -14q-57 0 -99 18.5q-42 18.5 -69 53q-27 34.5 -40 82.5q-13 48 -13 108q0 128 57 195q57 67 163 67q34 0 68 -7.5q34 -7.5 61 -28.5q27 -21 44 -59.5q17 -38.5 17 -101.5q0 -33 -6 -73l-321 0q0 -44 9 -78q9 -34 28 -57.5q19 -23.5 49.5 -36q30.5 -12.5 74.5 -12.5q34 0 68 12q34 12 51 28zM270 442q-59 0 -94.5 -31q-35.5 -31 -42.5 -106l248 0q0 76 -29 106.5q-29 30.5 -82 30.5zt0 0zM291 720h89v-21l-101 -128l-47 0z" />
-<glyph unicode="&#234;" horiz-adv-x="508" d="M442 40q-30 -24 -75.5 -38q-45.5 -14 -96.5 -14q-57 0 -99 18.5q-42 18.5 -69 53q-27 34.5 -40 82.5q-13 48 -13 108q0 128 57 195q57 67 163 67q34 0 68 -7.5q34 -7.5 61 -28.5q27 -21 44 -59.5q17 -38.5 17 -101.5q0 -33 -6 -73l-321 0q0 -44 9 -78q9 -34 28 -57.5q19 -23.5 49.5 -36q30.5 -12.5 74.5 -12.5q34 0 68 12q34 12 51 28zM270 442q-59 0 -94.5 -31q-35.5 -31 -42.5 -106l248 0q0 76 -29 106.5q-29 30.5 -82 30.5zt0 0zM245 732h32l111 -182h-72l-39 66l-21 58l-22 -58l-45 -66l-67 0z" />
-<glyph unicode="&#235;" horiz-adv-x="508" d="M442 40q-30 -24 -75.5 -38q-45.5 -14 -96.5 -14q-57 0 -99 18.5q-42 18.5 -69 53q-27 34.5 -40 82.5q-13 48 -13 108q0 128 57 195q57 67 163 67q34 0 68 -7.5q34 -7.5 61 -28.5q27 -21 44 -59.5q17 -38.5 17 -101.5q0 -33 -6 -73l-321 0q0 -44 9 -78q9 -34 28 -57.5q19 -23.5 49.5 -36q30.5 -12.5 74.5 -12.5q34 0 68 12q34 12 51 28zM270 442q-59 0 -94.5 -31q-35.5 -31 -42.5 -106l248 0q0 76 -29 106.5q-29 30.5 -82 30.5zt0 0zM119 653q0 23 13.5 37q13.5 14 35.5 14q22 0 35.5 -14q13.5 -14 13.5 -37q0 -21 -13.5 -35q-13.5 -14 -35.5 -14q-22 0 -35.5 14q-13.5 14 -13.5 35zt0 0zM311 653q0 23 13.5 37q13.5 14 35.5 14q23 0 36.5 -14q13.5 -14 13.5 -37q0 -21 -13.5 -35q-13.5 -14 -36.5 -14q-22 0 -35.5 14t-13.5 35z" />
-<glyph unicode="&#236;" horiz-adv-x="268" d="M94 500h80v-500h-80zM171 571h-45l-115 128v21l95 0z" />
-<glyph unicode="&#237;" horiz-adv-x="268" d="M94 500h80v-500h-80zM154 720h89v-21l-101 -128l-47 0z" />
-<glyph unicode="&#238;" horiz-adv-x="268" d="M94 500h80v-500h-80zM120 732h32l111 -182h-72l-39 66l-21 58l-22 -58l-45 -66l-67 0z" />
-<glyph unicode="&#239;" horiz-adv-x="268" d="M94 500h80v-500h-80zM-13 653q0 23 13.5 37q13.5 14 35.5 14q22 0 35.5 -14q13.5 -14 13.5 -37q0 -21 -13.5 -35q-13.5 -14 -35.5 -14q-22 0 -35.5 14q-13.5 14 -13.5 35zt0 0zM179 653q0 23 13.5 37q13.5 14 35.5 14q23 0 36.5 -14q13.5 -14 13.5 -37q0 -21 -13.5 -35q-13.5 -14 -36.5 -14q-22 0 -35.5 14t-13.5 35z" />
-<glyph unicode="&#240;" horiz-adv-x="561" d="M220 596l57 31q-38 23 -76 32l35 54q18 -7 46 -19q28 -12 58 -33l68 37l26 -45l-50 -27q24 -23 46 -53.5q22 -30.5 39 -71q17 -40.5 27 -91.5q10 -51 10 -115q0 -81 -18 -139q-18 -58 -48.5 -95.5q-30.5 -37.5 -71 -55q-40.5 -17.5 -86.5 -17.5q-61 0 -104 21q-43 21 -70 57q-27 36 -39.5 83.5q-12.5 47.5 -12.5 101.5q0 52 14.5 99q14.5 47 43 82.5q28.5 35.5 70 56.5q41.5 21 96.5 21q45 0 79 -14q34 -14 48 -32q-11 37 -33 70q-22 33 -51 59l-76 -41zM139 250q0 -98 41 -145q41 -47 106 -47q30 0 55.5 13q25.5 13 44 41q18.5 28 29.5 72q11 44 11 106q0 10 -0.5 22.5q-0.5 12.5 -1 25q-0.5 12.5 -2 24q-1.5 11.5 -3.5 19.5q-8 14 -22.5 25q-14.5 11 -32 18.5q-17.5 7.5 -37.5 11.5q-20 4 -39 4q-39 0 -67.5 -15q-28.5 -15 -46.5 -40.5q-18 -25.5 -26.5 -60t-8.5 -74.5z" />
-<glyph unicode="&#241;" horiz-adv-x="547" d="M398 0v285q0 78 -22.5 117.5q-22.5 39.5 -82.5 39.5q-53 0 -87.5 -28.5q-34.5 -28.5 -48.5 -71.5l0 -342h-80v500h56l15 -61h4q24 32 64.5 52.5q40.5 20.5 96.5 20.5q41 0 72 -9.5q31 -9.5 51.5 -33.5q20.5 -24 31 -64.5q10.5 -40.5 10.5 -102.5v-302zM134 656q29 33 53 45.5q24 12.5 44 12.5q17 0 31.5 -6.5q14.5 -6.5 28 -14q13.5 -7.5 26 -13.5q12.5 -6 26.5 -6q22 0 46 24l24 -43q-26 -29 -47.5 -39.5q-21.5 -10.5 -39.5 -10.5q-16 0 -30 6q-14 6 -27.5 13.5q-13.5 7.5 -27 14q-13.5 6.5 -27.5 6.5q-13 0 -26.5 -7q-13.5 -7 -30.5 -24z" />
-<glyph unicode="&#242;" horiz-adv-x="536" d="M49 250q0 127 56.5 194.5q56.5 67.5 162.5 67.5q56 0 97.5 -18.5q41.5 -18.5 68.5 -53q27 -34.5 40 -83q13 -48.5 13 -107.5q0 -127 -56.5 -194.5q-56.5 -67.5 -162.5 -67.5q-56 0 -97.5 18.5q-41.5 18.5 -68.5 53q-27 34.5 -40 83q-13 48.5 -13 107.5zt0 0zM132 250q0 -38 7.5 -73q7.5 -35 23.5 -61q16 -26 42 -42q26 -16 63 -16q136 -1 136 192q0 39 -7.5 74q-7.5 35 -23.5 61q-16 26 -42 41.5q-26 15.5 -63 15.5q-136 1 -136 -192zt0 0zM317 571h-45l-115 128v21l95 0z" />
-<glyph unicode="&#243;" horiz-adv-x="536" d="M49 250q0 127 56.5 194.5q56.5 67.5 162.5 67.5q56 0 97.5 -18.5q41.5 -18.5 68.5 -53q27 -34.5 40 -83q13 -48.5 13 -107.5q0 -127 -56.5 -194.5q-56.5 -67.5 -162.5 -67.5q-56 0 -97.5 18.5q-41.5 18.5 -68.5 53q-27 34.5 -40 83q-13 48.5 -13 107.5zt0 0zM132 250q0 -38 7.5 -73q7.5 -35 23.5 -61q16 -26 42 -42q26 -16 63 -16q136 -1 136 192q0 39 -7.5 74q-7.5 35 -23.5 61q-16 26 -42 41.5q-26 15.5 -63 15.5q-136 1 -136 -192zt0 0zM286 720h89v-21l-101 -128l-47 0z" />
-<glyph unicode="&#244;" horiz-adv-x="536" d="M49 250q0 127 56.5 194.5q56.5 67.5 162.5 67.5q56 0 97.5 -18.5q41.5 -18.5 68.5 -53q27 -34.5 40 -83q13 -48.5 13 -107.5q0 -127 -56.5 -194.5q-56.5 -67.5 -162.5 -67.5q-56 0 -97.5 18.5q-41.5 18.5 -68.5 53q-27 34.5 -40 83q-13 48.5 -13 107.5zt0 0zM132 250q0 -38 7.5 -73q7.5 -35 23.5 -61q16 -26 42 -42q26 -16 63 -16q136 -1 136 192q0 39 -7.5 74q-7.5 35 -23.5 61q-16 26 -42 41.5q-26 15.5 -63 15.5q-136 1 -136 -192zt0 0zM258 732h32l111 -182h-72l-39 66l-21 58l-22 -58l-45 -66l-67 0z" />
-<glyph unicode="&#245;" horiz-adv-x="536" d="M49 250q0 127 56.5 194.5q56.5 67.5 162.5 67.5q56 0 97.5 -18.5q41.5 -18.5 68.5 -53q27 -34.5 40 -83q13 -48.5 13 -107.5q0 -127 -56.5 -194.5q-56.5 -67.5 -162.5 -67.5q-56 0 -97.5 18.5q-41.5 18.5 -68.5 53q-27 34.5 -40 83q-13 48.5 -13 107.5zt0 0zM132 250q0 -38 7.5 -73q7.5 -35 23.5 -61q16 -26 42 -42q26 -16 63 -16q136 -1 136 192q0 39 -7.5 74q-7.5 35 -23.5 61q-16 26 -42 41.5q-26 15.5 -63 15.5q-136 1 -136 -192zt0 0zM129 656q29 33 53 45.5q24 12.5 44 12.5q17 0 31.5 -6.5q14.5 -6.5 28 -14q13.5 -7.5 26 -13.5q12.5 -6 26.5 -6q22 0 46 24l24 -43q-26 -29 -47.5 -39.5q-21.5 -10.5 -39.5 -10.5q-16 0 -30 6q-14 6 -27.5 13.5q-13.5 7.5 -27 14q-13.5 6.5 -27.5 6.5q-13 0 -26.5 -7q-13.5 -7 -30.5 -24z" />
-<glyph unicode="&#246;" horiz-adv-x="536" d="M49 250q0 127 56.5 194.5q56.5 67.5 162.5 67.5q56 0 97.5 -18.5q41.5 -18.5 68.5 -53q27 -34.5 40 -83q13 -48.5 13 -107.5q0 -127 -56.5 -194.5q-56.5 -67.5 -162.5 -67.5q-56 0 -97.5 18.5q-41.5 18.5 -68.5 53q-27 34.5 -40 83q-13 48.5 -13 107.5zt0 0zM132 250q0 -38 7.5 -73q7.5 -35 23.5 -61q16 -26 42 -42q26 -16 63 -16q136 -1 136 192q0 39 -7.5 74q-7.5 35 -23.5 61q-16 26 -42 41.5q-26 15.5 -63 15.5q-136 1 -136 -192zt0 0zM124 653q0 23 13.5 37q13.5 14 35.5 14q22 0 35.5 -14q13.5 -14 13.5 -37q0 -21 -13.5 -35q-13.5 -14 -35.5 -14q-22 0 -35.5 14q-13.5 14 -13.5 35zt0 0zM316 653q0 23 13.5 37q13.5 14 35.5 14q23 0 36.5 -14q13.5 -14 13.5 -37q0 -21 -13.5 -35q-13.5 -14 -36.5 -14q-22 0 -35.5 14t-13.5 35z" />
-<glyph unicode="&#247;" horiz-adv-x="505" d="M40 374h424v-72h-424zM194 525q0 27 15.5 42.5q15.5 15.5 41.5 15.5q27 0 43 -15.5q16 -15.5 16 -42.5q0 -26 -16 -42q-16 -16 -43 -16q-26 0 -41.5 16q-15.5 16 -15.5 42zt0 0zM194 150q0 27 15.5 42.5q15.5 15.5 41.5 15.5q27 0 43 -15.5q16 -15.5 16 -42.5q0 -26 -16 -42q-16 -16 -43 -16q-26 0 -41.5 16t-15.5 42z" />
-<glyph unicode="&#248;" horiz-adv-x="536" d="M49 250q0 127 56.5 194.5q56.5 67.5 162.5 67.5q73 0 122 -32l26 35l50 -37l-29 -42q26 -34 38 -81q12 -47 12 -105q0 -127 -56.5 -194.5q-56.5 -67.5 -162.5 -67.5q-78 0 -128 35l-27 -37l-52 38l33 46q-23 34 -34 79.5q-11 45.5 -11 100.5zt0 0zM404 250q0 32 -5 61.5q-5 29.5 -16 53.5l-199 -277q16 -13 36.5 -21.5q20.5 -8.5 47.5 -8.5q136 -1 136 192zt0 0zM132 250q0 -30 4.5 -58q4.5 -28 13.5 -51l197 274q-15 12 -34.5 19.5q-19.5 7.5 -44.5 7.5q-136 1 -136 -192z" />
-<glyph unicode="&#249;" horiz-adv-x="539" d="M149 500v-285q0 -39 4.5 -68.5q4.5 -29.5 15.5 -49q11 -19.5 30 -29.5q19 -10 48 -10q27 0 48 8.5q21 8.5 37.5 23.5q16.5 15 29 34.5q12.5 19.5 20.5 41.5l0 334h80v-358q0 -36 2.5 -74.5q2.5 -38.5 8.5 -67.5l-55 0l-20 79h-5q-23 -39 -62 -65q-39 -26 -99 -26q-40 0 -70.5 9.5q-30.5 9.5 -51 33.5q-20.5 24 -31 64.5q-10.5 40.5 -10.5 102.5v302zM308 571h-45l-115 128v21l95 0z" />
-<glyph unicode="&#250;" horiz-adv-x="539" d="M149 500v-285q0 -39 4.5 -68.5q4.5 -29.5 15.5 -49q11 -19.5 30 -29.5q19 -10 48 -10q27 0 48 8.5q21 8.5 37.5 23.5q16.5 15 29 34.5q12.5 19.5 20.5 41.5l0 334h80v-358q0 -36 2.5 -74.5q2.5 -38.5 8.5 -67.5l-55 0l-20 79h-5q-23 -39 -62 -65q-39 -26 -99 -26q-40 0 -70.5 9.5q-30.5 9.5 -51 33.5q-20.5 24 -31 64.5q-10.5 40.5 -10.5 102.5v302zM285 720h89v-21l-101 -128l-47 0z" />
-<glyph unicode="&#251;" horiz-adv-x="539" d="M149 500v-285q0 -39 4.5 -68.5q4.5 -29.5 15.5 -49q11 -19.5 30 -29.5q19 -10 48 -10q27 0 48 8.5q21 8.5 37.5 23.5q16.5 15 29 34.5q12.5 19.5 20.5 41.5l0 334h80v-358q0 -36 2.5 -74.5q2.5 -38.5 8.5 -67.5l-55 0l-20 79h-5q-23 -39 -62 -65q-39 -26 -99 -26q-40 0 -70.5 9.5q-30.5 9.5 -51 33.5q-20.5 24 -31 64.5q-10.5 40.5 -10.5 102.5v302zM260 732h32l111 -182h-72l-39 66l-21 58l-22 -58l-45 -66l-67 0z" />
-<glyph unicode="&#252;" horiz-adv-x="539" d="M149 500v-285q0 -39 4.5 -68.5q4.5 -29.5 15.5 -49q11 -19.5 30 -29.5q19 -10 48 -10q27 0 48 8.5q21 8.5 37.5 23.5q16.5 15 29 34.5q12.5 19.5 20.5 41.5l0 334h80v-358q0 -36 2.5 -74.5q2.5 -38.5 8.5 -67.5l-55 0l-20 79h-5q-23 -39 -62 -65q-39 -26 -99 -26q-40 0 -70.5 9.5q-30.5 9.5 -51 33.5q-20.5 24 -31 64.5q-10.5 40.5 -10.5 102.5v302zM125 653q0 23 13.5 37q13.5 14 35.5 14q22 0 35.5 -14q13.5 -14 13.5 -37q0 -21 -13.5 -35q-13.5 -14 -35.5 -14q-22 0 -35.5 14q-13.5 14 -13.5 35zt0 0zM317 653q0 23 13.5 37q13.5 14 35.5 14q23 0 36.5 -14q13.5 -14 13.5 -37q0 -21 -13.5 -35q-13.5 -14 -36.5 -14q-22 0 -35.5 14t-13.5 35z" />
-<glyph unicode="&#253;" horiz-adv-x="466" d="M224 176l28 -96h5l22 97l97 323h81l-148 -449q-17 -49 -33.5 -95q-16.5 -46 -36.5 -82q-20 -36 -45 -57.5q-25 -21.5 -58 -21.5q-36 0 -59 10l14 69q13 -5 25 -5q28 0 54 29.5q26 29.5 43 101.5l-201 500h92zM277 720h89v-21l-101 -128l-47 0z" />
-<glyph unicode="&#254;" horiz-adv-x="541" d="M77 700h80v-250h4q20 29 53 45.5q33 16.5 80 16.5q100 0 149 -59q49 -59 49 -193q0 -63 -16.5 -113.5q-16.5 -50.5 -46.5 -85.5q-30 -35 -72.5 -54q-42.5 -19 -94.5 -19q-37 0 -58.5 4.5q-21.5 4.5 -46.5 15.5l0 -208h-80zM279 442q-98 1 -122 -107l0 -249q18 -14 41 -21q23 -7 61 -7q69 0 109.5 51.5q40.5 51.5 40.5 151.5q0 41 -7 74.5q-7 33.5 -22.5 57q-15.5 23.5 -40 36.5t-60.5 13z" />
-<glyph unicode="&#255;" horiz-adv-x="466" d="M224 176l28 -96h5l22 97l97 323h81l-148 -449q-17 -49 -33.5 -95q-16.5 -46 -36.5 -82q-20 -36 -45 -57.5q-25 -21.5 -58 -21.5q-36 0 -59 10l14 69q13 -5 25 -5q28 0 54 29.5q26 29.5 43 101.5l-201 500h92zM89 653q0 23 13.5 37q13.5 14 35.5 14q22 0 35.5 -14q13.5 -14 13.5 -37q0 -21 -13.5 -35q-13.5 -14 -35.5 -14q-22 0 -35.5 14q-13.5 14 -13.5 35zt0 0zM281 653q0 23 13.5 37q13.5 14 35.5 14q23 0 36.5 -14q13.5 -14 13.5 -37q0 -21 -13.5 -35q-13.5 -14 -36.5 -14q-22 0 -35.5 14t-13.5 35z" />
-<glyph unicode="&#256;" horiz-adv-x="585" d="M418 194h-258l-70 -194h-82l265 711h38l266 -711h-87zM187 266h206l-78 213l-25 106h-1l-25 -108zM133 843h316v-62l-316 0z" />
-<glyph unicode="&#257;" horiz-adv-x="496" d="M69 463q38 23 88.5 34q50.5 11 105.5 11q52 0 83.5 -14q31.5 -14 48 -36.5q16.5 -22.5 22 -49.5q5.5 -27 5.5 -54q0 -60 -3 -117q-3 -57 -3 -108q0 -37 3 -70q3 -33 11 -61l-59 0l-21 70h-5q-9 -14 -22.5 -27.5q-13.5 -13.5 -32.5 -24q-19 -10.5 -44 -17.5q-25 -7 -57 -7q-32 0 -59.5 10q-27.5 10 -47.5 28.5q-20 18.5 -31.5 44.5q-11.5 26 -11.5 59q0 44 18 73.5q18 29.5 50.5 47q32.5 17.5 78 25q45.5 7.5 100.5 7.5q14 0 27.5 0q13.5 0 27.5 -2q3 30 3 54q0 55 -22 77q-22 22 -80 22q-17 0 -36.5 -2.5q-19.5 -2.5 -40 -7q-20.5 -4.5 -39 -11q-18.5 -6.5 -32.5 -14.5zM211 62q28 0 50 7.5q22 7.5 38 19q16 11.5 26.5 25.5q10.5 14 15.5 27l0 83q-14 1 -28.5 1.5q-14.5 0.5 -28.5 0.5q-31 0 -60.5 -3.5q-29.5 -3.5 -52 -13q-22.5 -9.5 -36 -26q-13.5 -16.5 -13.5 -41.5q0 -35 25 -57.5q25 -22.5 64 -22.5zt0 0zM101 643h296v-62l-296 0z" />
-<glyph unicode="&#258;" horiz-adv-x="585" d="M418 194h-258l-70 -194h-82l265 711h38l266 -711h-87zM187 266h206l-78 213l-25 106h-1l-25 -108zM164 871q17 -34 52 -52.5q35 -18.5 82 -18.5q48 0 81 21q33 21 47 50l40 -19q-9 -29 -25.5 -51.5q-16.5 -22.5 -39 -38.5q-22.5 -16 -49.5 -24q-27 -8 -55 -8q-27 0 -53.5 7q-26.5 7 -49.5 21q-23 14 -42 36.5q-19 22.5 -31 52.5z" />
-<glyph unicode="&#259;" horiz-adv-x="496" d="M69 463q38 23 88.5 34q50.5 11 105.5 11q52 0 83.5 -14q31.5 -14 48 -36.5q16.5 -22.5 22 -49.5q5.5 -27 5.5 -54q0 -60 -3 -117q-3 -57 -3 -108q0 -37 3 -70q3 -33 11 -61l-59 0l-21 70h-5q-9 -14 -22.5 -27.5q-13.5 -13.5 -32.5 -24q-19 -10.5 -44 -17.5q-25 -7 -57 -7q-32 0 -59.5 10q-27.5 10 -47.5 28.5q-20 18.5 -31.5 44.5q-11.5 26 -11.5 59q0 44 18 73.5q18 29.5 50.5 47q32.5 17.5 78 25q45.5 7.5 100.5 7.5q14 0 27.5 0q13.5 0 27.5 -2q3 30 3 54q0 55 -22 77q-22 22 -80 22q-17 0 -36.5 -2.5q-19.5 -2.5 -40 -7q-20.5 -4.5 -39 -11q-18.5 -6.5 -32.5 -14.5zM211 62q28 0 50 7.5q22 7.5 38 19q16 11.5 26.5 25.5q10.5 14 15.5 27l0 83q-14 1 -28.5 1.5q-14.5 0.5 -28.5 0.5q-31 0 -60.5 -3.5q-29.5 -3.5 -52 -13q-22.5 -9.5 -36 -26q-13.5 -16.5 -13.5 -41.5q0 -35 25 -57.5q25 -22.5 64 -22.5zt0 0zM141 720q18 -36 48 -56.5q30 -20.5 64 -20.5q34 0 61.5 20q27.5 20 44.5 57l42 -18q-3 -24 -15.5 -47.5q-12.5 -23.5 -32 -41.5q-19.5 -18 -45.5 -29q-26 -11 -56 -11q-28 0 -53 8.5q-25 8.5 -45.5 25q-20.5 16.5 -35.5 39q-15 22.5 -22 51.5z" />
-<glyph unicode="&#260;" horiz-adv-x="585" d="M418 194h-258l-70 -194h-82l265 711h38l266 -711h-22q-26 -16 -41.5 -37.5q-15.5 -21.5 -15.5 -50.5q0 -20 13.5 -35q13.5 -15 38.5 -15q19 0 40 9l11 -42q-15 -12 -40 -18q-25 -6 -46 -6q-44 0 -71.5 23.5q-27.5 23.5 -27.5 64.5q0 35 21.5 62.5q21.5 27.5 59.5 44.5l-7 0zM187 266h206l-78 213l-25 106h-1l-25 -108z" />
-<glyph unicode="&#261;" horiz-adv-x="496" d="M69 463q38 23 88.5 34q50.5 11 105.5 11q52 0 83.5 -14q31.5 -14 48 -36.5q16.5 -22.5 22 -49.5q5.5 -27 5.5 -54q0 -60 -3 -117q-3 -57 -3 -108q0 -37 3 -70q3 -33 11 -61l-23 0q-25 -16 -39 -37.5q-14 -21.5 -14 -47.5q0 -20 13 -35.5q13 -15.5 38 -15.5q19 0 40 10l11 -43q-15 -12 -40 -18q-25 -6 -46 -6q-45 0 -72 24q-27 24 -27 65q0 39 26 67.5q26 28.5 71 45.5l-18 61h-5q-9 -14 -22.5 -27.5q-13.5 -13.5 -32.5 -24q-19 -10.5 -44 -17.5q-25 -7 -57 -7q-32 0 -59.5 10q-27.5 10 -47.5 28.5q-20 18.5 -31.5 44.5q-11.5 26 -11.5 59q0 44 18 73.5q18 29.5 50.5 47q32.5 17.5 78 25q45.5 7.5 100.5 7.5q14 0 27.5 0q13.5 0 27.5 -2q3 30 3 54q0 55 -22 77q-22 22 -80 22q-17 0 -36.5 -2q-19.5 -2 -40 -6.5q-20.5 -4.5 -39 -10.5q-18.5 -6 -32.5 -14zM211 62q28 0 50 7.5q22 7.5 38 19q16 11.5 26.5 25.5q10.5 14 15.5 27l0 83q-14 1 -28.5 1.5q-14.5 0.5 -28.5 0.5q-31 0 -60.5 -3.5q-29.5 -3.5 -52 -13q-22.5 -9.5 -36 -26q-13.5 -16.5 -13.5 -41.5q0 -35 25 -57.5t64 -22.5z" />
-<glyph unicode="&#262;" horiz-adv-x="571" d="M533 29q-30 -23 -76 -32q-46 -9 -98 -9q-63 0 -118 21.5q-55 21.5 -96 65.5q-41 44 -65 112.5q-24 68.5 -24 162.5q0 98 26.5 166.5q26.5 68.5 70 112q43.5 43.5 97.5 63.5q54 20 110 20q60 0 98 -6.5q38 -6.5 65 -17.5l-20 -73q-48 23 -137 23q-41 0 -81 -15q-40 -15 -71.5 -49q-31.5 -34 -50.5 -89q-19 -55 -19 -135q0 -72 18 -126q18 -54 49.5 -90q31.5 -36 74 -54q42.5 -18 92.5 -18q45 0 78.5 9q33.5 9 56.5 23zM417 870h114v-21l-163 -97l-69 0z" />
-<glyph unicode="&#263;" horiz-adv-x="451" d="M418 33q-30 -22 -71 -33.5q-41 -11.5 -86 -11.5q-58 0 -98 18.5q-40 18.5 -65.5 53q-25.5 34.5 -37 83q-11.5 48.5 -11.5 107.5q0 127 56 194.5q56 67.5 161 67.5q48 0 81.5 -7.5q33.5 -7.5 60.5 -21.5l-23 -69q-23 13 -51 20.5q-28 7.5 -60 7.5q-142 0 -142 -192q0 -38 7.5 -72.5q7.5 -34.5 25 -61q17.5 -26.5 46 -42.5q28.5 -16 70.5 -16q36 0 64.5 11q28.5 11 46.5 25zM290 720h89v-21l-101 -128l-47 0z" />
-<glyph unicode="&#264;" horiz-adv-x="571" d="M533 29q-30 -23 -76 -32q-46 -9 -98 -9q-63 0 -118 21.5q-55 21.5 -96 65.5q-41 44 -65 112.5q-24 68.5 -24 162.5q0 98 26.5 166.5q26.5 68.5 70 112q43.5 43.5 97.5 63.5q54 20 110 20q60 0 98 -6.5q38 -6.5 65 -17.5l-20 -73q-48 23 -137 23q-41 0 -81 -15q-40 -15 -71.5 -49q-31.5 -34 -50.5 -89q-19 -55 -19 -135q0 -72 18 -126q18 -54 49.5 -90q31.5 -36 74 -54q42.5 -18 92.5 -18q45 0 78.5 9q33.5 9 56.5 23zM320 870h60l127 -102v-21h-81l-60 49l-17 35l-19 -34l-64 -50h-79l0 22z" />
-<glyph unicode="&#265;" horiz-adv-x="451" d="M418 33q-30 -22 -71 -33.5q-41 -11.5 -86 -11.5q-58 0 -98 18.5q-40 18.5 -65.5 53q-25.5 34.5 -37 83q-11.5 48.5 -11.5 107.5q0 127 56 194.5q56 67.5 161 67.5q48 0 81.5 -7.5q33.5 -7.5 60.5 -21.5l-23 -69q-23 13 -51 20.5q-28 7.5 -60 7.5q-142 0 -142 -192q0 -38 7.5 -72.5q7.5 -34.5 25 -61q17.5 -26.5 46 -42.5q28.5 -16 70.5 -16q36 0 64.5 11q28.5 11 46.5 25zM237 732h32l111 -182h-72l-39 66l-21 58l-22 -58l-45 -66l-67 0z" />
-<glyph unicode="&#268;" horiz-adv-x="571" d="M533 29q-30 -23 -76 -32q-46 -9 -98 -9q-63 0 -118 21.5q-55 21.5 -96 65.5q-41 44 -65 112.5q-24 68.5 -24 162.5q0 98 26.5 166.5q26.5 68.5 70 112q43.5 43.5 97.5 63.5q54 20 110 20q60 0 98 -6.5q38 -6.5 65 -17.5l-20 -73q-48 23 -137 23q-41 0 -81 -15q-40 -15 -71.5 -49q-31.5 -34 -50.5 -89q-19 -55 -19 -135q0 -72 18 -126q18 -54 49.5 -90q31.5 -36 74 -54q42.5 -18 92.5 -18q45 0 78.5 9q33.5 9 56.5 23zM382 746h-58l-127 103v21h82l59 -50l17 -34l19 33l63 51h78l0 -22z" />
-<glyph unicode="&#269;" horiz-adv-x="451" d="M418 33q-30 -22 -71 -33.5q-41 -11.5 -86 -11.5q-58 0 -98 18.5q-40 18.5 -65.5 53q-25.5 34.5 -37 83q-11.5 48.5 -11.5 107.5q0 127 56 194.5q56 67.5 161 67.5q48 0 81.5 -7.5q33.5 -7.5 60.5 -21.5l-23 -69q-23 13 -51 20.5q-28 7.5 -60 7.5q-142 0 -142 -192q0 -38 7.5 -72.5q7.5 -34.5 25 -61q17.5 -26.5 46 -42.5q28.5 -16 70.5 -16q36 0 64.5 11q28.5 11 46.5 25zM270 550h-37l-115 182h78l39 -66l21 -58l22 58l45 66l70 0z" />
-<glyph unicode="&#270;" horiz-adv-x="654" d="M85 700q19 3 42.5 4.5q23.5 1.5 49 2q25.5 0.5 50 1q24.5 0.5 45.5 0.5q84 0 145.5 -26q61.5 -26 101.5 -72.5q40 -46.5 59.5 -111.5q19.5 -65 19.5 -143q0 -71 -18.5 -136.5q-18.5 -65.5 -58.5 -116q-40 -50.5 -104 -81q-64 -30.5 -155 -30.5q-16 0 -41.5 0.5q-25.5 0.5 -52.5 2q-27 1.5 -50 2.5q-23 1 -33 3zM274 634q-13 0 -28.5 0q-15.5 0 -30.5 -1q-15 -1 -27.5 -2q-12.5 -1 -19.5 -2l0 -560q5 -1 19 -1.5q14 -0.5 29 -1q15 -0.5 29 -1q14 -0.5 19 -0.5q70 0 117.5 24q47.5 24 76 64.5q28.5 40.5 40.5 93q12 52.5 12 108.5q0 49 -11 98.5q-11 49.5 -38 89.5q-27 40 -72.5 65.5q-45.5 25.5 -114.5 25.5zt0 0zM306 746h-58l-127 103v21h82l59 -50l17 -34l19 33l63 51h78l0 -22z" />
-<glyph unicode="&#271;" horiz-adv-x="589" d="M461 172q0 -51 1 -92.5q1 -41.5 9 -81.5l-54 0l-20 71h-4q-20 -35 -58 -58q-38 -23 -89 -23q-100 0 -148.5 63q-48.5 63 -48.5 197q0 128 60.5 194.5q60.5 66.5 166.5 66.5q37 0 58.5 -4q21.5 -4 46.5 -13l0 208h80zM259 58q51 0 81 26.5q30 26.5 41 80.5l0 248q-18 14 -41 20q-23 6 -61 6q-69 0 -108 -45.5q-39 -45.5 -39 -145.5q0 -41 6.5 -76q6.5 -35 21.5 -60q15 -25 39.5 -39.5q24.5 -14.5 59.5 -14.5zt0 0zM614 700q-2 -29 -12 -59.5q-10 -30.5 -22.5 -56.5q-12.5 -26 -25.5 -46q-13 -20 -22 -29l-33 18q17 36 26 81.5q9 45.5 9 91.5z" />
-<glyph unicode="&#272;" horiz-adv-x="658" d="M-1 392h90v308q19 3 42.5 4.5q23.5 1.5 49 2q25.5 0.5 50 1q24.5 0.5 45.5 0.5q84 0 145.5 -26q61.5 -26 101.5 -72.5q40 -46.5 59.5 -111.5q19.5 -65 19.5 -143q0 -71 -18.5 -136.5q-18.5 -65.5 -58.5 -116q-40 -50.5 -104 -81q-64 -30.5 -155 -30.5q-16 0 -41.5 0.5q-25.5 0.5 -52.5 2q-27 1.5 -50 2.5q-23 1 -33 3l0 333h-90zM278 634q-13 0 -28.5 0q-15.5 0 -30.5 -1q-15 -1 -27.5 -2q-12.5 -1 -19.5 -2l0 -237h147v-60h-147v-263q5 -1 19 -1.5q14 -0.5 29 -1q15 -0.5 29 -1q14 -0.5 19 -0.5q70 0 117.5 24q47.5 24 76 64.5q28.5 40.5 40.5 93q12 52.5 12 108.5q0 49 -11 98.5q-11 49.5 -38 89.5q-27 40 -72.5 65.5t-114.5 25.5z" />
-<glyph unicode="&#273;" horiz-adv-x="540" d="M461 632h81v-60h-81v-400q0 -51 1 -92.5q1 -41.5 9 -81.5l-54 0l-20 71h-4q-20 -35 -58 -58q-38 -23 -89 -23q-100 0 -148.5 63q-48.5 63 -48.5 197q0 128 60.5 194.5q60.5 66.5 166.5 66.5q37 0 58.5 -4q21.5 -4 46.5 -13l0 80h-157v60h157v68h80zM259 58q51 0 81 26.5q30 26.5 41 80.5l0 249q-18 14 -41 19.5q-23 5.5 -61 5.5q-69 0 -108 -45.5q-39 -45.5 -39 -145.5q0 -41 6.5 -76q6.5 -35 21.5 -60.5q15 -25.5 39.5 -39.5t59.5 -14z" />
-<glyph unicode="&#274;" horiz-adv-x="536" d="M85 700h381v-74h-298v-229h273v-74h-273v-249h303v-74h-386zM109 843h316v-62l-316 0z" />
-<glyph unicode="&#275;" horiz-adv-x="508" d="M442 40q-30 -24 -75.5 -38q-45.5 -14 -96.5 -14q-57 0 -99 18.5q-42 18.5 -69 53q-27 34.5 -40 82.5q-13 48 -13 108q0 128 57 195q57 67 163 67q34 0 68 -7.5q34 -7.5 61 -28.5q27 -21 44 -59.5q17 -38.5 17 -101.5q0 -33 -6 -73l-321 0q0 -44 9 -78q9 -34 28 -57.5q19 -23.5 49.5 -36q30.5 -12.5 74.5 -12.5q34 0 68 12q34 12 51 28zM270 442q-59 0 -94.5 -31q-35.5 -31 -42.5 -106l248 0q0 76 -29 106.5q-29 30.5 -82 30.5zt0 0zM107 643h296v-62l-296 0z" />
-<glyph unicode="&#278;" horiz-adv-x="536" d="M85 700h381v-74h-298v-229h273v-74h-273v-249h303v-74h-386zM212 797q0 21 16.5 36.5q16.5 15.5 45.5 15.5q29 0 46.5 -15.5q17.5 -15.5 17.5 -36.5q0 -23 -17.5 -38q-17.5 -15 -46.5 -15q-29 0 -45.5 15t-16.5 38z" />
-<glyph unicode="&#279;" horiz-adv-x="508" d="M442 40q-30 -24 -75.5 -38q-45.5 -14 -96.5 -14q-57 0 -99 18.5q-42 18.5 -69 53q-27 34.5 -40 82.5q-13 48 -13 108q0 128 57 195q57 67 163 67q34 0 68 -7.5q34 -7.5 61 -28.5q27 -21 44 -59.5q17 -38.5 17 -101.5q0 -33 -6 -73l-321 0q0 -44 9 -78q9 -34 28 -57.5q19 -23.5 49.5 -36q30.5 -12.5 74.5 -12.5q34 0 68 12q34 12 51 28zM270 442q-59 0 -94.5 -31q-35.5 -31 -42.5 -106l248 0q0 76 -29 106.5q-29 30.5 -82 30.5zt0 0zM216 652q0 23 15.5 39.5q15.5 16.5 39.5 16.5q24 0 41 -16.5q17 -16.5 17 -39.5q0 -23 -17 -38q-17 -15 -41 -15q-24 0 -39.5 15t-15.5 38z" />
-<glyph unicode="&#280;" horiz-adv-x="536" d="M85 700h381v-74h-298v-229h273v-74h-273v-249h303v-74h-36q-26 -16 -41.5 -37q-15.5 -21 -15.5 -50q0 -20 13 -35.5q13 -15.5 38 -15.5q19 0 40 10l11 -43q-15 -12 -40 -18q-25 -6 -46 -6q-45 0 -72 24q-27 24 -27 65q0 35 21 62q21 27 59 44l-290 0z" />
-<glyph unicode="&#281;" horiz-adv-x="508" d="M442 40q-11 -9 -24 -16q-13 -7 -27 -13q-34 -17 -53 -41.5q-19 -24.5 -20 -56.5q1 -21 14.5 -36q13.5 -15 38.5 -16q19 1 40 10l11 -43q-15 -12 -40.5 -17.5q-25.5 -5.5 -46.5 -5.5q-45 1 -71.5 24.5q-26.5 23.5 -27.5 64.5q0 30 15 54q15 24 41 41q-5 -1 -11 -1q-6 0 -11 0q-57 0 -99 18.5q-42 18.5 -69 53q-27 34.5 -40 82.5q-13 48 -13 108q0 128 57 195q57 67 163 67q34 0 68 -7.5q34 -7.5 61 -28.5q27 -21 44 -59.5q17 -38.5 17 -101.5q0 -33 -6 -73l-321 0q0 -44 9 -78q9 -34 28 -58q19 -24 49.5 -36q30.5 -12 74.5 -12q34 0 68 12q34 12 51 28zM270 442q-59 0 -94.5 -31q-35.5 -31 -42.5 -106l248 0q0 76 -29 106.5t-82 30.5z" />
-<glyph unicode="&#282;" horiz-adv-x="536" d="M85 700h381v-74h-298v-229h273v-74h-273v-249h303v-74h-386zM294 746h-58l-127 103v21h82l59 -50l17 -34l19 33l63 51h78l0 -22z" />
-<glyph unicode="&#283;" horiz-adv-x="508" d="M442 40q-30 -24 -75.5 -38q-45.5 -14 -96.5 -14q-57 0 -99 18.5q-42 18.5 -69 53q-27 34.5 -40 82.5q-13 48 -13 108q0 128 57 195q57 67 163 67q34 0 68 -7.5q34 -7.5 61 -28.5q27 -21 44 -59.5q17 -38.5 17 -101.5q0 -33 -6 -73l-321 0q0 -44 9 -78q9 -34 28 -57.5q19 -23.5 49.5 -36q30.5 -12.5 74.5 -12.5q34 0 68 12q34 12 51 28zM270 442q-59 0 -94.5 -31q-35.5 -31 -42.5 -106l248 0q0 76 -29 106.5q-29 30.5 -82 30.5zt0 0zM279 550h-37l-115 182h78l39 -66l21 -58l22 58l45 66l70 0z" />
-<glyph unicode="&#284;" horiz-adv-x="612" d="M321 349h235v-308q-16 -12 -38.5 -22q-22.5 -10 -48 -17q-25.5 -7 -53 -10.5q-27.5 -3.5 -53.5 -3.5q-67 0 -123 21.5q-56 21.5 -97 66q-41 44.5 -64 113q-23 68.5 -23 161.5q0 97 28 166q28 69 73 112.5q45 43.5 101 63.5q56 20 112 20q60 0 99 -6.5q39 -6.5 66 -17.5l-21 -73q-48 23 -137 23q-42 0 -83.5 -14.5q-41.5 -14.5 -74.5 -48.5q-33 -34 -54 -89q-21 -55 -21 -136q0 -74 17 -128q17 -54 47.5 -89.5q30.5 -35.5 73.5 -53q43 -17.5 94 -17.5q64 0 109 25l0 195l-164 20zM331 870h60l127 -102v-21h-81l-60 49l-17 35l-19 -34l-64 -50h-79l0 22z" />
-<glyph unicode="&#285;" horiz-adv-x="537" d="M460 -23q0 -97 -51.5 -143q-51.5 -46 -152.5 -46q-60 0 -96.5 7.5q-36.5 7.5 -62.5 19.5l21 68q23 -9 51 -17q28 -8 73 -8q42 0 68.5 7.5q26.5 7.5 42.5 25q16 17.5 22 45q6 27.5 6 65.5v48h-4q-20 -29 -51 -44.5q-31 -15.5 -81 -15.5q-101 0 -148.5 63q-47.5 63 -47.5 196q0 128 61 194.5q61 66.5 180 66.5q57 0 97.5 -9q40.5 -9 72.5 -21zM259 59q51 0 80 25.5q29 25.5 41 79.5l0 256q-40 19 -102 19q-68 0 -107 -46q-39 -46 -39 -144q0 -42 7 -77q7 -35 22 -60q15 -25 39 -39q24 -14 59 -14zt0 0zM260 732h32l111 -182h-72l-39 66l-21 58l-22 -58l-45 -66l-67 0z" />
-<glyph unicode="&#286;" horiz-adv-x="612" d="M321 349h235v-308q-16 -12 -38.5 -22q-22.5 -10 -48 -17q-25.5 -7 -53 -10.5q-27.5 -3.5 -53.5 -3.5q-67 0 -123 21.5q-56 21.5 -97 66q-41 44.5 -64 113q-23 68.5 -23 161.5q0 97 28 166q28 69 73 112.5q45 43.5 101 63.5q56 20 112 20q60 0 99 -6.5q39 -6.5 66 -17.5l-21 -73q-48 23 -137 23q-42 0 -83.5 -14.5q-41.5 -14.5 -74.5 -48.5q-33 -34 -54 -89q-21 -55 -21 -136q0 -74 17 -128q17 -54 47.5 -89.5q30.5 -35.5 73.5 -53q43 -17.5 94 -17.5q64 0 109 25l0 195l-164 20zM223 871q17 -34 52 -52.5q35 -18.5 82 -18.5q48 0 81 21q33 21 47 50l40 -19q-9 -29 -25.5 -51.5q-16.5 -22.5 -39 -38.5q-22.5 -16 -49.5 -24q-27 -8 -55 -8q-27 0 -53.5 7q-26.5 7 -49.5 21q-23 14 -42 36.5q-19 22.5 -31 52.5z" />
-<glyph unicode="&#287;" horiz-adv-x="537" d="M460 -23q0 -97 -51.5 -143q-51.5 -46 -152.5 -46q-60 0 -96.5 7.5q-36.5 7.5 -62.5 19.5l21 68q23 -9 51 -17q28 -8 73 -8q42 0 68.5 7.5q26.5 7.5 42.5 25q16 17.5 22 45q6 27.5 6 65.5v48h-4q-20 -29 -51 -44.5q-31 -15.5 -81 -15.5q-101 0 -148.5 63q-47.5 63 -47.5 196q0 128 61 194.5q61 66.5 180 66.5q57 0 97.5 -9q40.5 -9 72.5 -21zM259 59q51 0 80 25.5q29 25.5 41 79.5l0 256q-40 19 -102 19q-68 0 -107 -46q-39 -46 -39 -144q0 -42 7 -77q7 -35 22 -60q15 -25 39 -39q24 -14 59 -14zt0 0zM161 720q18 -36 48 -56.5q30 -20.5 64 -20.5q34 0 61.5 20q27.5 20 44.5 57l42 -18q-3 -24 -15.5 -47.5q-12.5 -23.5 -32 -41.5q-19.5 -18 -45.5 -29q-26 -11 -56 -11q-28 0 -53 8.5q-25 8.5 -45.5 25q-20.5 16.5 -35.5 39q-15 22.5 -22 51.5z" />
-<glyph unicode="&#290;" horiz-adv-x="612" d="M321 349h235v-308q-16 -12 -38.5 -22q-22.5 -10 -48 -17q-25.5 -7 -53 -10.5q-27.5 -3.5 -53.5 -3.5q-67 0 -123 21.5q-56 21.5 -97 66q-41 44.5 -64 113q-23 68.5 -23 161.5q0 97 28 166q28 69 73 112.5q45 43.5 101 63.5q56 20 112 20q60 0 99 -6.5q39 -6.5 66 -17.5l-21 -73q-48 23 -137 23q-42 0 -83.5 -14.5q-41.5 -14.5 -74.5 -48.5q-33 -34 -54 -89q-21 -55 -21 -136q0 -74 17 -128q17 -54 47.5 -89.5q30.5 -35.5 73.5 -53q43 -17.5 94 -17.5q64 0 109 25l0 195l-164 20zM294 -102q0 21 15.5 34q15.5 13 35.5 13q25 0 44.5 -17.5q19.5 -17.5 19.5 -57.5q0 -26 -9 -45.5q-9 -19.5 -21.5 -34q-12.5 -14.5 -26 -23q-13.5 -8.5 -23.5 -12.5l-28 32q20 11 32 28q12 17 12 41q-4 -1 -10 -1q-18 0 -29.5 12t-11.5 31z" />
-<glyph unicode="&#291;" horiz-adv-x="537" d="M460 -23q0 -97 -51.5 -143q-51.5 -46 -152.5 -46q-60 0 -96.5 7.5q-36.5 7.5 -62.5 19.5l21 68q23 -9 51 -17q28 -8 73 -8q42 0 68.5 7.5q26.5 7.5 42.5 25q16 17.5 22 45q6 27.5 6 65.5v48h-4q-20 -29 -51 -44.5q-31 -15.5 -81 -15.5q-101 0 -148.5 63q-47.5 63 -47.5 196q0 128 61 194.5q61 66.5 180 66.5q57 0 97.5 -9q40.5 -9 72.5 -21zM259 59q51 0 80 25.5q29 25.5 41 79.5l0 256q-40 19 -102 19q-68 0 -107 -46q-39 -46 -39 -144q0 -42 7 -77q7 -35 22 -60q15 -25 39 -39q24 -14 59 -14zt0 0zM345 609q0 -21 -15.5 -34q-15.5 -13 -35.5 -13q-25 0 -44.5 17.5q-19.5 17.5 -19.5 57.5q0 26 9 45.5q9 19.5 21.5 34q12.5 14.5 26 23q13.5 8.5 23.5 12.5l28 -32q-20 -11 -32 -28q-12 -17 -12 -41q4 1 10 1q18 0 29.5 -12t11.5 -31z" />
-<glyph unicode="&#292;" horiz-adv-x="672" d="M504 321h-336v-321h-83v700h83v-305h336v305h83v-700h-83zM307 870h60l127 -102v-21h-81l-60 49l-17 35l-19 -34l-64 -50h-79l0 22z" />
-<glyph unicode="&#293;" horiz-adv-x="547" d="M398 0v285q0 39 -4.5 68.5q-4.5 29.5 -16.5 49q-12 19.5 -32.5 29.5q-20.5 10 -53.5 10q-47 0 -85 -30.5q-38 -30.5 -49 -78.5l0 -333h-80v700h80v-256h4q26 31 62.5 49.5q36.5 18.5 90.5 18.5q42 0 73 -9.5q31 -9.5 51.5 -33.5q20.5 -24 30 -64.5q9.5 -40.5 9.5 -102.5v-302zM92 870h60l127 -102v-21h-81l-60 49l-17 35l-19 -34l-64 -50h-79l0 22z" />
-<glyph unicode="&#294;" horiz-adv-x="677" d="M9 587h79v113h83v-113h336v113h83v-113h79v-64h-79v-523h-83v321h-336v-321h-83v523h-79zM507 395v128h-336l0 -128z" />
-<glyph unicode="&#295;" horiz-adv-x="549" d="M-1 632h80v68h80v-68h160v-60h-160v-128h4q26 31 62.5 49.5q36.5 18.5 90.5 18.5q42 0 73 -9.5q31 -9.5 51.5 -33.5q20.5 -24 30 -64.5q9.5 -40.5 9.5 -102.5v-302h-80v285q0 39 -4.5 68.5q-4.5 29.5 -16.5 49q-12 19.5 -32.5 29.5q-20.5 10 -53.5 10q-47 0 -85 -30.5q-38 -30.5 -49 -78.5l0 -333h-80v572l-80 0z" />
-<glyph unicode="&#298;" horiz-adv-x="291" d="M104 700h83v-700h-83zM-12 843h316v-62l-316 0z" />
-<glyph unicode="&#299;" horiz-adv-x="268" d="M94 500h80v-500h-80zM-14 643h296v-62l-296 0z" />
-<glyph unicode="&#302;" horiz-adv-x="291" d="M104 700h83v-700h-14q-26 -16 -41 -37.5q-15 -21.5 -15 -50.5q0 -20 13 -35.5q13 -15.5 38 -15.5q19 0 40 10l11 -43q-15 -12 -40 -17.5q-25 -5.5 -46 -5.5q-45 0 -72 23.5q-27 23.5 -27 64.5q0 35 21 62.5q21 27.5 59 44.5l-10 0z" />
-<glyph unicode="&#303;" horiz-adv-x="269" d="M94 500h80v-500h-18q-25 -16 -39.5 -38q-14.5 -22 -14.5 -50q0 -20 13 -35.5q13 -15.5 38 -15.5q19 0 40 10l11 -43q-15 -12 -40 -17.5q-25 -5.5 -47 -5.5q-45 0 -71.5 23.5q-26.5 23.5 -26.5 64.5q0 35 21 62.5q21 27.5 59 44.5l-5 0zM77 652q0 23 15.5 39.5q15.5 16.5 39.5 16.5q24 0 41 -16.5q17 -16.5 17 -39.5q0 -23 -17 -38q-17 -15 -41 -15q-24 0 -39.5 15t-15.5 38z" />
-<glyph unicode="&#304;" horiz-adv-x="291" d="M104 700h83v-700h-83zM84 797q0 21 16.5 36.5q16.5 15.5 45.5 15.5q29 0 46.5 -15.5q17.5 -15.5 17.5 -36.5q0 -23 -17.5 -38q-17.5 -15 -46.5 -15q-29 0 -45.5 15t-16.5 38z" />
-<glyph unicode="&#305;" horiz-adv-x="268" d="M94 500h80v-500l-80 0z" />
-<glyph unicode="&#308;" horiz-adv-x="291" d="M112 700h83v-546q0 -80 -35.5 -122q-35.5 -42 -107.5 -42q-8 0 -20 1q-12 1 -24 3q-12 2 -23.5 5q-11.5 3 -18.5 7l16 71q28 -13 61 -13q42 0 55.5 29.5q13.5 29.5 13.5 80.5zM124 870h60l127 -102v-21h-81l-60 49l-17 35l-19 -34l-64 -50h-79l0 22z" />
-<glyph unicode="&#309;" horiz-adv-x="267" d="M93 500h80v-527q0 -93 -32 -139q-32 -46 -102 -46q-8 0 -15 0.5q-7 0.5 -15 1.5l0 68q28 0 44.5 8.5q16.5 8.5 25.5 26.5q9 18 11.5 45.5q2.5 27.5 2.5 64.5zM123 732h32l111 -182h-72l-39 66l-21 58l-22 -58l-45 -66l-67 0z" />
-<glyph unicode="&#310;" horiz-adv-x="610" d="M215 324h-47v-324h-83v700h83v-326l45 14l235 312h96l-234 -301l-42 -33l51 -40l256 -326h-105zM232 -102q0 21 15.5 34q15.5 13 35.5 13q25 0 44.5 -17.5q19.5 -17.5 19.5 -57.5q0 -26 -9 -45.5q-9 -19.5 -21.5 -34q-12.5 -14.5 -26 -23q-13.5 -8.5 -23.5 -12.5l-28 32q20 11 32 28q12 17 12 41q-4 -1 -10 -1q-18 0 -29.5 12t-11.5 31z" />
-<glyph unicode="&#311;" horiz-adv-x="479" d="M203 225h-46v-225h-80v700h80v-426l41 14l155 212h93l-153 -201l-41 -33l50 -40l167 -226h-99zM183 -102q0 21 15.5 34q15.5 13 35.5 13q25 0 44.5 -17.5q19.5 -17.5 19.5 -57.5q0 -26 -9 -45.5q-9 -19.5 -21.5 -34q-12.5 -14.5 -26 -23q-13.5 -8.5 -23.5 -12.5l-28 32q20 11 32 28q12 17 12 41q-4 -1 -10 -1q-18 0 -29.5 12t-11.5 31z" />
-<glyph unicode="&#313;" horiz-adv-x="517" d="M499 0h-414v700h83v-626h331zM231 870h114v-21l-163 -97l-69 0z" />
-<glyph unicode="&#314;" horiz-adv-x="292" d="M166 123q0 -35 12 -50q12 -15 34 -15q13 0 28 2q15 2 34 9l9 -63q-16 -8 -44.5 -13q-28.5 -5 -49.5 -5q-45 0 -74 25.5q-29 25.5 -29 86.5v600h80zM208 870h114v-21l-163 -97l-69 0z" />
-<glyph unicode="&#315;" horiz-adv-x="517" d="M499 0h-414v700h83v-626h331zM192 -102q0 21 15.5 34q15.5 13 35.5 13q25 0 44.5 -17.5q19.5 -17.5 19.5 -57.5q0 -26 -9 -45.5q-9 -19.5 -21.5 -34q-12.5 -14.5 -26 -23q-13.5 -8.5 -23.5 -12.5l-28 32q20 11 32 28q12 17 12 41q-4 -1 -10 -1q-18 0 -29.5 12t-11.5 31z" />
-<glyph unicode="&#316;" horiz-adv-x="292" d="M166 123q0 -35 12 -50q12 -15 34 -15q13 0 28 2q15 2 34 9l9 -63q-16 -8 -44.5 -13q-28.5 -5 -49.5 -5q-45 0 -74 25.5q-29 25.5 -29 86.5v600h80zM117 -102q0 21 15.5 34q15.5 13 35.5 13q25 0 44.5 -17.5q19.5 -17.5 19.5 -57.5q0 -26 -9 -45.5q-9 -19.5 -21.5 -34q-12.5 -14.5 -26 -23q-13.5 -8.5 -23.5 -12.5l-28 32q20 11 32 28q12 17 12 41q-4 -1 -10 -1q-18 0 -29.5 12t-11.5 31z" />
-<glyph unicode="&#317;" horiz-adv-x="517" d="M499 0h-414v700h83v-626h331zM429 700q-2 -29 -12 -59.5q-10 -30.5 -22.5 -56.5q-12.5 -26 -25.5 -46q-13 -20 -22 -29l-33 18q17 36 26 81.5q9 45.5 9 91.5z" />
-<glyph unicode="&#318;" horiz-adv-x="292" d="M166 123q0 -35 12 -50q12 -15 34 -15q13 0 28 2q15 2 34 9l9 -63q-16 -8 -44.5 -13q-28.5 -5 -49.5 -5q-45 0 -74 25.5q-29 25.5 -29 86.5v600h80zM321 700q-2 -29 -12 -59.5q-10 -30.5 -22.5 -56.5q-12.5 -26 -25.5 -46q-13 -20 -22 -29l-33 18q17 36 26 81.5q9 45.5 9 91.5z" />
-<glyph unicode="&#321;" horiz-adv-x="517" d="M15 287l70 55v358h83v-293l107 84v-80l-107 -82v-255h331v-74h-414v265l-70 -54z" />
-<glyph unicode="&#322;" horiz-adv-x="292" d="M10 285l76 59v356h80v-293l104 82v-80l-104 -80v-206q0 -35 12 -50q12 -15 34 -15q13 0 28 2q15 2 34 9l9 -63q-16 -8 -44.5 -13q-28.5 -5 -49.5 -5q-45 0 -74 25.5q-29 25.5 -29 86.5v167l-76 -58z" />
-<glyph unicode="&#323;" horiz-adv-x="673" d="M211 458l-54 101h-4l10 -101v-458h-78v711h44l335 -467l52 -96h5l-11 96v456h78v-711h-44zM407 870h114v-21l-163 -97l-69 0z" />
-<glyph unicode="&#324;" horiz-adv-x="547" d="M398 0v285q0 78 -22.5 117.5q-22.5 39.5 -82.5 39.5q-53 0 -87.5 -28.5q-34.5 -28.5 -48.5 -71.5l0 -342h-80v500h56l15 -61h4q24 32 64.5 52.5q40.5 20.5 96.5 20.5q41 0 72 -9.5q31 -9.5 51.5 -33.5q20.5 -24 31 -64.5q10.5 -40.5 10.5 -102.5v-302zM300 720h89v-21l-101 -128l-47 0z" />
-<glyph unicode="&#325;" horiz-adv-x="673" d="M211 458l-54 101h-4l10 -101v-458h-78v711h44l335 -467l52 -96h5l-11 96v456h78v-711h-44zM279 -102q0 21 15.5 34q15.5 13 35.5 13q25 0 44.5 -17.5q19.5 -17.5 19.5 -57.5q0 -26 -9 -45.5q-9 -19.5 -21.5 -34q-12.5 -14.5 -26 -23q-13.5 -8.5 -23.5 -12.5l-28 32q20 11 32 28q12 17 12 41q-4 -1 -10 -1q-18 0 -29.5 12t-11.5 31z" />
-<glyph unicode="&#326;" horiz-adv-x="547" d="M398 0v285q0 78 -22.5 117.5q-22.5 39.5 -82.5 39.5q-53 0 -87.5 -28.5q-34.5 -28.5 -48.5 -71.5l0 -342h-80v500h56l15 -61h4q24 32 64.5 52.5q40.5 20.5 96.5 20.5q41 0 72 -9.5q31 -9.5 51.5 -33.5q20.5 -24 31 -64.5q10.5 -40.5 10.5 -102.5v-302zM216 -102q0 21 15.5 34q15.5 13 35.5 13q25 0 44.5 -17.5q19.5 -17.5 19.5 -57.5q0 -26 -9 -45.5q-9 -19.5 -21.5 -34q-12.5 -14.5 -26 -23q-13.5 -8.5 -23.5 -12.5l-28 32q20 11 32 28q12 17 12 41q-4 -1 -10 -1q-18 0 -29.5 12t-11.5 31z" />
-<glyph unicode="&#327;" horiz-adv-x="673" d="M211 458l-54 101h-4l10 -101v-458h-78v711h44l335 -467l52 -96h5l-11 96v456h78v-711h-44zM364 746h-58l-127 103v21h82l59 -50l17 -34l19 33l63 51h78l0 -22z" />
-<glyph unicode="&#328;" horiz-adv-x="547" d="M398 0v285q0 78 -22.5 117.5q-22.5 39.5 -82.5 39.5q-53 0 -87.5 -28.5q-34.5 -28.5 -48.5 -71.5l0 -342h-80v500h56l15 -61h4q24 32 64.5 52.5q40.5 20.5 96.5 20.5q41 0 72 -9.5q31 -9.5 51.5 -33.5q20.5 -24 31 -64.5q10.5 -40.5 10.5 -102.5v-302zM289 550h-37l-115 182h78l39 -66l21 -58l22 58l45 66l70 0z" />
-<glyph unicode="&#332;" horiz-adv-x="684" d="M56 350q0 175 74 268.5q74 93.5 211 93.5q74 0 128 -26q54 -26 89.5 -73.5q35.5 -47.5 52.5 -114q17 -66.5 17 -148.5q0 -175 -74.5 -268.5q-74.5 -93.5 -212.5 -93.5q-73 0 -126.5 26q-53.5 26 -89 73.5q-35.5 47.5 -52.5 114q-17 66.5 -17 148.5zt0 0zM144 350q0 -58 11.5 -110q11.5 -52 35.5 -91.5q24 -39.5 61.5 -63q37.5 -23.5 88.5 -23.5q93 0 146 70.5q53 70.5 53 217.5q0 57 -11.5 109.5q-11.5 52.5 -36 92q-24.5 39.5 -62 63q-37.5 23.5 -89.5 23.5q-92 0 -144.5 -70.5q-52.5 -70.5 -52.5 -217.5zt0 0zM190 843h316v-62l-316 0z" />
-<glyph unicode="&#333;" horiz-adv-x="536" d="M49 250q0 127 56.5 194.5q56.5 67.5 162.5 67.5q56 0 97.5 -18.5q41.5 -18.5 68.5 -53q27 -34.5 40 -83q13 -48.5 13 -107.5q0 -127 -56.5 -194.5q-56.5 -67.5 -162.5 -67.5q-56 0 -97.5 18.5q-41.5 18.5 -68.5 53q-27 34.5 -40 83q-13 48.5 -13 107.5zt0 0zM132 250q0 -38 7.5 -73q7.5 -35 23.5 -61q16 -26 42 -42q26 -16 63 -16q136 -1 136 192q0 39 -7.5 74q-7.5 35 -23.5 61q-16 26 -42 41.5q-26 15.5 -63 15.5q-136 1 -136 -192zt0 0zM120 643h296v-62l-296 0z" />
-<glyph unicode="&#336;" horiz-adv-x="684" d="M56 350q0 175 74 268.5q74 93.5 211 93.5q74 0 128 -26q54 -26 89.5 -73.5q35.5 -47.5 52.5 -114q17 -66.5 17 -148.5q0 -175 -74.5 -268.5q-74.5 -93.5 -212.5 -93.5q-73 0 -126.5 26q-53.5 26 -89 73.5q-35.5 47.5 -52.5 114q-17 66.5 -17 148.5zt0 0zM144 350q0 -58 11.5 -110q11.5 -52 35.5 -91.5q24 -39.5 61.5 -63q37.5 -23.5 88.5 -23.5q93 0 146 70.5q53 70.5 53 217.5q0 57 -11.5 109.5q-11.5 52.5 -36 92q-24.5 39.5 -62 63q-37.5 23.5 -89.5 23.5q-92 0 -144.5 -70.5q-52.5 -70.5 -52.5 -217.5zt0 0zM306 850h93v-16l-100 -93h-57zM468 850h99v-16l-143 -93l-58 0z" />
-<glyph unicode="&#337;" horiz-adv-x="536" d="M49 250q0 127 56.5 194.5q56.5 67.5 162.5 67.5q56 0 97.5 -18.5q41.5 -18.5 68.5 -53q27 -34.5 40 -83q13 -48.5 13 -107.5q0 -127 -56.5 -194.5q-56.5 -67.5 -162.5 -67.5q-56 0 -97.5 18.5q-41.5 18.5 -68.5 53q-27 34.5 -40 83q-13 48.5 -13 107.5zt0 0zM132 250q0 -38 7.5 -73q7.5 -35 23.5 -61q16 -26 42 -42q26 -16 63 -16q136 -1 136 192q0 39 -7.5 74q-7.5 35 -23.5 61q-16 26 -42 41.5q-26 15.5 -63 15.5q-136 1 -136 -192zt0 0zM211 700h78v-16l-71 -113h-42zM357 700h86v-16l-114 -113l-45 0z" />
-<glyph unicode="&#338;" horiz-adv-x="932" d="M481 618q-28 11 -65 15.5q-37 4.5 -75 4.5q-92 0 -144.5 -70.5q-52.5 -70.5 -52.5 -217.5q0 -58 11.5 -110q11.5 -52 36.5 -91.5q25 -39.5 64 -63q39 -23.5 93 -23.5q29 0 59.5 2q30.5 2 72.5 15zM481 0q-25 -5 -60 -8.5q-35 -3.5 -80 -3.5q-73 0 -126.5 26q-53.5 26 -89 73.5q-35.5 47.5 -52.5 114q-17 66.5 -17 148.5q0 175 74 268.5q74 93.5 211 93.5q47 0 77.5 -3.5q30.5 -3.5 62.5 -8.5l381 0v-74h-298v-229h273v-74h-273v-249h303l0 -74z" />
-<glyph unicode="&#339;" horiz-adv-x="858" d="M132 250q0 -38 7.5 -73q7.5 -35 23.5 -61.5q16 -26.5 42 -42q26 -15.5 63 -15.5q135 -1 135 192q0 39 -7 74q-7 35 -23 61q-16 26 -42 41.5q-26 15.5 -63 15.5q-136 1 -136 -192zt0 0zM442 81q-27 -45 -70.5 -69q-43.5 -24 -103.5 -24q-56 0 -97.5 18.5q-41.5 18.5 -68.5 53q-27 34.5 -40 83q-13 48.5 -13 107.5q0 127 56.5 194.5q56.5 67.5 162.5 67.5q63 0 106.5 -26q43.5 -26 69.5 -66q26 42 70.5 67q44.5 25 104.5 25q34 0 68 -7.5q34 -7.5 61 -28.5q27 -21 44 -59.5q17 -38.5 17 -101.5q0 -17 -1 -35q-1 -18 -4 -38l-323 0q0 -44 9 -78.5q9 -34.5 28 -58.5q19 -24 50 -36q31 -12 75 -12q35 0 68.5 12.5q33.5 12.5 50.5 28.5l30 -58q-30 -24 -75.5 -38q-45.5 -14 -96.5 -14q-62 0 -107 25q-45 25 -71 68zt0 0zM620 443q-58 0 -94 -31.5q-36 -31.5 -43 -106.5l248 0v9q0 69 -30 99t-81 30z" />
-<glyph unicode="&#340;" horiz-adv-x="595" d="M85 693q38 7 87.5 11q49.5 4 90.5 4q46 0 87.5 -10q41.5 -10 73 -33q31.5 -23 50.5 -60q19 -37 19 -90q0 -82 -45 -133q-45 -51 -114 -68l48 -37l174 -277h-97l-193 302l-98 15v-317h-83zM265 636q-13 0 -27 0q-14 0 -27 -1q-13 -1 -24.5 -2q-11.5 -1 -18.5 -3l0 -258h78q69 0 114 34q45 34 45 106q0 54 -37 89q-37 35 -103 35zt0 0zM320 870h114v-21l-163 -97l-69 0z" />
-<glyph unicode="&#341;" horiz-adv-x="340" d="M313 423q-30 10 -57 10q-43 0 -68 -23.5q-25 -23.5 -31 -59.5l0 -350h-80v500h56l15 -61h4q19 34 45.5 52.5q26.5 18.5 67.5 18.5q29 0 65 -10zM195 720h89v-21l-101 -128l-47 0z" />
-<glyph unicode="&#342;" horiz-adv-x="595" d="M85 693q38 7 87.5 11q49.5 4 90.5 4q46 0 87.5 -10q41.5 -10 73 -33q31.5 -23 50.5 -60q19 -37 19 -90q0 -82 -45 -133q-45 -51 -114 -68l48 -37l174 -277h-97l-193 302l-98 15v-317h-83zM265 636q-13 0 -27 0q-14 0 -27 -1q-13 -1 -24.5 -2q-11.5 -1 -18.5 -3l0 -258h78q69 0 114 34q45 34 45 106q0 54 -37 89q-37 35 -103 35zt0 0zM239 -102q0 21 15.5 34q15.5 13 35.5 13q25 0 44.5 -17.5q19.5 -17.5 19.5 -57.5q0 -26 -9 -45.5q-9 -19.5 -21.5 -34q-12.5 -14.5 -26 -23q-13.5 -8.5 -23.5 -12.5l-28 32q20 11 32 28q12 17 12 41q-4 -1 -10 -1q-18 0 -29.5 12t-11.5 31z" />
-<glyph unicode="&#343;" horiz-adv-x="340" d="M313 423q-30 10 -57 10q-43 0 -68 -23.5q-25 -23.5 -31 -59.5l0 -350h-80v500h56l15 -61h4q19 34 45.5 52.5q26.5 18.5 67.5 18.5q29 0 65 -10zM85 -102q0 21 15.5 34q15.5 13 35.5 13q25 0 44.5 -17.5q19.5 -17.5 19.5 -57.5q0 -26 -9 -45.5q-9 -19.5 -21.5 -34q-12.5 -14.5 -26 -23q-13.5 -8.5 -23.5 -12.5l-28 32q20 11 32 28q12 17 12 41q-4 -1 -10 -1q-18 0 -29.5 12t-11.5 31z" />
-<glyph unicode="&#344;" horiz-adv-x="595" d="M85 693q38 7 87.5 11q49.5 4 90.5 4q46 0 87.5 -10q41.5 -10 73 -33q31.5 -23 50.5 -60q19 -37 19 -90q0 -82 -45 -133q-45 -51 -114 -68l48 -37l174 -277h-97l-193 302l-98 15v-317h-83zM265 636q-13 0 -27 0q-14 0 -27 -1q-13 -1 -24.5 -2q-11.5 -1 -18.5 -3l0 -258h78q69 0 114 34q45 34 45 106q0 54 -37 89q-37 35 -103 35zt0 0zM277 746h-58l-127 103v21h82l59 -50l17 -34l19 33l63 51h78l0 -22z" />
-<glyph unicode="&#345;" horiz-adv-x="340" d="M313 423q-30 10 -57 10q-43 0 -68 -23.5q-25 -23.5 -31 -59.5l0 -350h-80v500h56l15 -61h4q19 34 45.5 52.5q26.5 18.5 67.5 18.5q29 0 65 -10zM205 550h-37l-115 182h78l39 -66l21 -58l22 58l45 66l70 0z" />
-<glyph unicode="&#346;" horiz-adv-x="531" d="M401 178q0 42 -25 68.5q-25 26.5 -62.5 47q-37.5 20.5 -81.5 38.5q-44 18 -81.5 43.5q-37.5 25.5 -62.5 63q-25 37.5 -25 95.5q0 82 57 130q57 48 162 48q61 0 111 -9q50 -9 78 -23l-25 -73q-23 11 -67.5 21q-44.5 10 -100.5 10q-66 0 -99 -29.5q-33 -29.5 -33 -69.5q0 -39 25 -65q25 -26 62.5 -46.5q37.5 -20.5 81.5 -40.5q44 -20 81.5 -46.5q37.5 -26.5 62.5 -63.5q25 -37 25 -92q0 -45 -16 -81q-16 -36 -47 -62q-31 -26 -75 -40q-44 -14 -100 -14q-75 0 -124 11.5q-49 11.5 -76 25.5l28 75q23 -13 68 -25.5q45 -12.5 101 -12.5q33 0 62 6.5q29 6.5 50 21q21 14.5 33.5 36.5q12.5 22 12.5 52zt0 0zM346 870h114v-21l-163 -97l-69 0z" />
-<glyph unicode="&#347;" horiz-adv-x="421" d="M297 136q0 30 -18 47q-18 17 -44.5 28.5q-26.5 11.5 -58 22q-31.5 10.5 -58 27q-26.5 16.5 -44.5 42.5q-18 26 -18 70q0 72 41 105.5q41 33.5 114 33.5q54 0 90.5 -9.5q36.5 -9.5 63.5 -22.5l-19 -66q-23 11 -55.5 19.5q-32.5 8.5 -69.5 8.5q-44 0 -64.5 -15q-20.5 -15 -20.5 -52q0 -26 18 -40.5q18 -14.5 44.5 -26q26.5 -11.5 58 -22.5q31.5 -11 58 -29q26.5 -18 44.5 -45.5q18 -27.5 18 -72.5q0 -32 -10.5 -60q-10.5 -28 -32.5 -48q-22 -20 -54.5 -31.5q-32.5 -11.5 -76.5 -11.5q-57 0 -97 11q-40 11 -67 26l24 68q23 -13 60 -24q37 -11 75 -11q43 0 71 17q28 17 28 61zt0 0zM236 720h89v-21l-101 -128l-47 0z" />
-<glyph unicode="&#348;" horiz-adv-x="531" d="M401 178q0 42 -25 68.5q-25 26.5 -62.5 47q-37.5 20.5 -81.5 38.5q-44 18 -81.5 43.5q-37.5 25.5 -62.5 63q-25 37.5 -25 95.5q0 82 57 130q57 48 162 48q61 0 111 -9q50 -9 78 -23l-25 -73q-23 11 -67.5 21q-44.5 10 -100.5 10q-66 0 -99 -29.5q-33 -29.5 -33 -69.5q0 -39 25 -65q25 -26 62.5 -46.5q37.5 -20.5 81.5 -40.5q44 -20 81.5 -46.5q37.5 -26.5 62.5 -63.5q25 -37 25 -92q0 -45 -16 -81q-16 -36 -47 -62q-31 -26 -75 -40q-44 -14 -100 -14q-75 0 -124 11.5q-49 11.5 -76 25.5l28 75q23 -13 68 -25.5q45 -12.5 101 -12.5q33 0 62 6.5q29 6.5 50 21q21 14.5 33.5 36.5q12.5 22 12.5 52zt0 0zM252 870h60l127 -102v-21h-81l-60 49l-17 35l-19 -34l-64 -50h-79l0 22z" />
-<glyph unicode="&#349;" horiz-adv-x="421" d="M297 136q0 30 -18 47q-18 17 -44.5 28.5q-26.5 11.5 -58 22q-31.5 10.5 -58 27q-26.5 16.5 -44.5 42.5q-18 26 -18 70q0 72 41 105.5q41 33.5 114 33.5q54 0 90.5 -9.5q36.5 -9.5 63.5 -22.5l-19 -66q-23 11 -55.5 19.5q-32.5 8.5 -69.5 8.5q-44 0 -64.5 -15q-20.5 -15 -20.5 -52q0 -26 18 -40.5q18 -14.5 44.5 -26q26.5 -11.5 58 -22.5q31.5 -11 58 -29q26.5 -18 44.5 -45.5q18 -27.5 18 -72.5q0 -32 -10.5 -60q-10.5 -28 -32.5 -48q-22 -20 -54.5 -31.5q-32.5 -11.5 -76.5 -11.5q-57 0 -97 11q-40 11 -67 26l24 68q23 -13 60 -24q37 -11 75 -11q43 0 71 17q28 17 28 61zt0 0zM201 732h32l111 -182h-72l-39 66l-21 58l-22 -58l-45 -66l-67 0z" />
-<glyph unicode="&#350;" horiz-adv-x="531" d="M401 178q0 42 -25 68.5q-25 26.5 -62.5 47q-37.5 20.5 -81.5 38.5q-44 18 -81.5 43.5q-37.5 25.5 -62.5 63q-25 37.5 -25 95.5q0 82 57 130q57 48 162 48q61 0 111 -9q50 -9 78 -23l-25 -73q-23 11 -67.5 21q-44.5 10 -100.5 10q-66 0 -99 -29.5q-33 -29.5 -33 -69.5q0 -39 25 -65q25 -26 62.5 -46.5q37.5 -20.5 81.5 -40.5q44 -20 81.5 -46.5q37.5 -26.5 62.5 -63.5q25 -37 25 -92q0 -79 -49 -130q-49 -51 -137 -63l-19 -35q42 -8 60.5 -26q18.5 -18 18.5 -49q0 -39 -32 -64.5q-32 -25.5 -90 -25.5q-11 0 -22 1q-11 1 -23 3l9 39q6 -1 11 -1q5 0 10 0q22 0 34.5 4q12.5 4 19 9.5q6.5 5.5 8 12.5q1.5 7 1.5 13q0 28 -86 37l41 78q-72 1 -119.5 12q-47.5 11 -73.5 25l28 75q23 -13 68 -25.5q45 -12.5 101 -12.5q33 0 62 6.5q29 6.5 50 21q21 14.5 33.5 36.5t12.5 52z" />
-<glyph unicode="&#351;" horiz-adv-x="421" d="M297 136q0 30 -18 47q-18 17 -44.5 28.5q-26.5 11.5 -58 22q-31.5 10.5 -58 27q-26.5 16.5 -44.5 42.5q-18 26 -18 70q0 72 41 105.5q41 33.5 114 33.5q54 0 90.5 -9.5q36.5 -9.5 63.5 -22.5l-19 -65q-23 11 -55.5 19q-32.5 8 -69.5 8q-44 0 -64.5 -15q-20.5 -15 -20.5 -52q0 -26 18 -40.5q18 -14.5 44.5 -26q26.5 -11.5 58 -22.5q31.5 -11 58 -29q26.5 -18 44.5 -45.5q18 -27.5 18 -72.5q0 -59 -35 -100q-35 -41 -107 -49l-18 -33q42 -8 60.5 -26q18.5 -18 18.5 -49q0 -39 -32 -64.5q-32 -25.5 -90 -25.5q-11 0 -22 1q-11 1 -23 3l9 39q6 -1 11 -1q5 0 10 0q22 0 34.5 4q12.5 4 19 9.5q6.5 5.5 8 12.5q1.5 7 1.5 13q0 28 -86 37l42 79q-47 2 -81 12q-34 10 -58 24v67q47 -12 84 -22.5q37 -10.5 75 -10.5q43 0 71 16.5t28 60.5z" />
-<glyph unicode="&#352;" horiz-adv-x="531" d="M401 178q0 42 -25 68.5q-25 26.5 -62.5 47q-37.5 20.5 -81.5 38.5q-44 18 -81.5 43.5q-37.5 25.5 -62.5 63q-25 37.5 -25 95.5q0 82 57 130q57 48 162 48q61 0 111 -9q50 -9 78 -23l-25 -73q-23 11 -67.5 21q-44.5 10 -100.5 10q-66 0 -99 -29.5q-33 -29.5 -33 -69.5q0 -39 25 -65q25 -26 62.5 -46.5q37.5 -20.5 81.5 -40.5q44 -20 81.5 -46.5q37.5 -26.5 62.5 -63.5q25 -37 25 -92q0 -45 -16 -81q-16 -36 -47 -62q-31 -26 -75 -40q-44 -14 -100 -14q-75 0 -124 11.5q-49 11.5 -76 25.5l28 75q23 -13 68 -25.5q45 -12.5 101 -12.5q33 0 62 6.5q29 6.5 50 21q21 14.5 33.5 36.5q12.5 22 12.5 52zt0 0zM322 746h-58l-127 103v21h82l59 -50l17 -34l19 33l63 51h78l0 -22z" />
-<glyph unicode="&#353;" horiz-adv-x="421" d="M297 136q0 30 -18 47q-18 17 -44.5 28.5q-26.5 11.5 -58 22q-31.5 10.5 -58 27q-26.5 16.5 -44.5 42.5q-18 26 -18 70q0 72 41 105.5q41 33.5 114 33.5q54 0 90.5 -9.5q36.5 -9.5 63.5 -22.5l-19 -66q-23 11 -55.5 19.5q-32.5 8.5 -69.5 8.5q-44 0 -64.5 -15q-20.5 -15 -20.5 -52q0 -26 18 -40.5q18 -14.5 44.5 -26q26.5 -11.5 58 -22.5q31.5 -11 58 -29q26.5 -18 44.5 -45.5q18 -27.5 18 -72.5q0 -32 -10.5 -60q-10.5 -28 -32.5 -48q-22 -20 -54.5 -31.5q-32.5 -11.5 -76.5 -11.5q-57 0 -97 11q-40 11 -67 26l24 68q23 -13 60 -24q37 -11 75 -11q43 0 71 17q28 17 28 61zt0 0zM225 550h-37l-115 182h78l39 -66l21 -58l22 58l45 66l70 0z" />
-<glyph unicode="&#354;" horiz-adv-x="555" d="M236 0v626h-218v74h519v-74h-218v-626h-12l-24 -43q42 -8 60.5 -26q18.5 -18 18.5 -49q0 -39 -32 -64.5q-32 -25.5 -90 -25.5q-11 0 -22 1q-11 1 -23 3l9 39q6 -1 11 -1q5 0 10 0q22 0 34.5 4q12.5 4 19 9.5q6.5 5.5 8 12.5q1.5 7 1.5 13q0 28 -86 37l48 90z" />
-<glyph unicode="&#355;" horiz-adv-x="339" d="M11 500h78v99l80 23v-122h136v-70h-136v-277q0 -52 13 -73.5q13 -21.5 44 -21.5q26 0 44 5q18 5 40 14l18 -60q-23 -11 -48 -18.5q-25 -7.5 -54 -10.5l-17 -31q42 -8 60.5 -26q18.5 -18 18.5 -49q0 -39 -32 -64.5q-32 -25.5 -90 -25.5q-11 0 -22 1q-11 1 -23 3l9 39q6 -1 11 -1q5 0 10 0q22 0 34.5 4q12.5 4 19 9.5q6.5 5.5 8 12.5q1.5 7 1.5 13q0 28 -86 37l42 80q-45 8 -63 43q-18 35 -18 105v292l-78 0z" />
-<glyph unicode="&#356;" horiz-adv-x="555" d="M537 626h-218v-626h-83v626h-218v74h519zM304 746h-58l-127 103v21h82l59 -50l17 -34l19 33l63 51h78l0 -22z" />
-<glyph unicode="&#357;" horiz-adv-x="339" d="M11 500h78v99l80 23v-122h136v-70h-136v-277q0 -52 13 -73.5q13 -21.5 44 -21.5q26 0 44 5.5q18 5.5 40 14.5l18 -61q-27 -13 -59 -21q-32 -8 -69 -8q-61 0 -86 34.5q-25 34.5 -25 115.5v292h-78zM311 714q-2 -29 -12 -59.5q-10 -30.5 -22.5 -56.5q-12.5 -26 -25.5 -46q-13 -20 -22 -29l-33 18q17 36 26 81.5q9 45.5 9 91.5z" />
-<glyph unicode="&#362;" horiz-adv-x="652" d="M487 700h80v-467q0 -63 -16.5 -109q-16.5 -46 -47 -75.5q-30.5 -29.5 -73.5 -43.5q-43 -14 -95 -14q-124 0 -187 56q-63 56 -63 170v483h83v-444q0 -53 10.5 -89.5q10.5 -36.5 31.5 -59q21 -22.5 52.5 -32.5q31.5 -10 73.5 -10q81 0 116 44.5q35 44.5 35 146.5zM170 843h316v-62l-316 0z" />
-<glyph unicode="&#363;" horiz-adv-x="539" d="M149 500v-285q0 -39 4.5 -68.5q4.5 -29.5 15.5 -49q11 -19.5 30 -29.5q19 -10 48 -10q27 0 48 8.5q21 8.5 37.5 23.5q16.5 15 29 34.5q12.5 19.5 20.5 41.5l0 334h80v-358q0 -36 2.5 -74.5q2.5 -38.5 8.5 -67.5l-55 0l-20 79h-5q-23 -39 -62 -65q-39 -26 -99 -26q-40 0 -70.5 9.5q-30.5 9.5 -51 33.5q-20.5 24 -31 64.5q-10.5 40.5 -10.5 102.5v302zM122 643h296v-62l-296 0z" />
-<glyph unicode="&#364;" horiz-adv-x="652" d="M487 700h80v-467q0 -63 -16.5 -109q-16.5 -46 -47 -75.5q-30.5 -29.5 -73.5 -43.5q-43 -14 -95 -14q-124 0 -187 56q-63 56 -63 170v483h83v-444q0 -53 10.5 -89.5q10.5 -36.5 31.5 -59q21 -22.5 52.5 -32.5q31.5 -10 73.5 -10q81 0 116 44.5q35 44.5 35 146.5zM197 871q17 -34 52 -52.5q35 -18.5 82 -18.5q48 0 81 21q33 21 47 50l40 -19q-9 -29 -25.5 -51.5q-16.5 -22.5 -39 -38.5q-22.5 -16 -49.5 -24q-27 -8 -55 -8q-27 0 -53.5 7q-26.5 7 -49.5 21q-23 14 -42 36.5q-19 22.5 -31 52.5z" />
-<glyph unicode="&#365;" horiz-adv-x="539" d="M149 500v-285q0 -39 4.5 -68.5q4.5 -29.5 15.5 -49q11 -19.5 30 -29.5q19 -10 48 -10q27 0 48 8.5q21 8.5 37.5 23.5q16.5 15 29 34.5q12.5 19.5 20.5 41.5l0 334h80v-358q0 -36 2.5 -74.5q2.5 -38.5 8.5 -67.5l-55 0l-20 79h-5q-23 -39 -62 -65q-39 -26 -99 -26q-40 0 -70.5 9.5q-30.5 9.5 -51 33.5q-20.5 24 -31 64.5q-10.5 40.5 -10.5 102.5v302zM162 720q18 -36 48 -56.5q30 -20.5 64 -20.5q34 0 61.5 20q27.5 20 44.5 57l42 -18q-3 -24 -15.5 -47.5q-12.5 -23.5 -32 -41.5q-19.5 -18 -45.5 -29q-26 -11 -56 -11q-28 0 -53 8.5q-25 8.5 -45.5 25q-20.5 16.5 -35.5 39q-15 22.5 -22 51.5z" />
-<glyph unicode="&#366;" horiz-adv-x="652" d="M487 700h80v-467q0 -63 -16.5 -109q-16.5 -46 -47 -75.5q-30.5 -29.5 -73.5 -43.5q-43 -14 -95 -14q-124 0 -187 56q-63 56 -63 170v483h83v-444q0 -53 10.5 -89.5q10.5 -36.5 31.5 -59q21 -22.5 52.5 -32.5q31.5 -10 73.5 -10q81 0 116 44.5q35 44.5 35 146.5zM225 768q0 37 25 61q25 24 80 24q50 0 78 -21.5q28 -21.5 28 -63.5q0 -36 -26.5 -59.5q-26.5 -23.5 -79.5 -23.5q-51 0 -78 22.5q-27 22.5 -27 60.5zt0 0zM286 768q0 -17 10.5 -28.5q10.5 -11.5 33.5 -11.5q22 0 33.5 11q11.5 11 11.5 29q0 19 -11 30.5q-11 11.5 -34 11.5q-22 0 -33 -11.5t-11 -30.5z" />
-<glyph unicode="&#367;" horiz-adv-x="539" d="M149 500v-285q0 -39 4.5 -68.5q4.5 -29.5 15.5 -49q11 -19.5 30 -29.5q19 -10 48 -10q27 0 48 8.5q21 8.5 37.5 23.5q16.5 15 29 34.5q12.5 19.5 20.5 41.5l0 334h80v-358q0 -36 2.5 -74.5q2.5 -38.5 8.5 -67.5l-55 0l-20 79h-5q-23 -39 -62 -65q-39 -26 -99 -26q-40 0 -70.5 9.5q-30.5 9.5 -51 33.5q-20.5 24 -31 64.5q-10.5 40.5 -10.5 102.5v302zM172 643q0 42 26.5 66.5q26.5 24.5 70.5 24.5q42 0 70 -22q28 -22 28 -69q0 -39 -28 -64.5q-28 -25.5 -70 -25.5q-42 0 -69.5 23.5q-27.5 23.5 -27.5 66.5zt0 0zM226 643q0 -20 13 -31q13 -11 30 -11q19 0 31.5 10q12.5 10 12.5 32q0 22 -13.5 32.5q-13.5 10.5 -30.5 10.5q-17 0 -30 -10t-13 -33z" />
-<glyph unicode="&#368;" horiz-adv-x="652" d="M487 700h80v-467q0 -63 -16.5 -109q-16.5 -46 -47 -75.5q-30.5 -29.5 -73.5 -43.5q-43 -14 -95 -14q-124 0 -187 56q-63 56 -63 170v483h83v-444q0 -53 10.5 -89.5q10.5 -36.5 31.5 -59q21 -22.5 52.5 -32.5q31.5 -10 73.5 -10q81 0 116 44.5q35 44.5 35 146.5zM277 850h93v-16l-100 -93h-57zM439 850h99v-16l-143 -93l-58 0z" />
-<glyph unicode="&#369;" horiz-adv-x="539" d="M149 500v-285q0 -39 4.5 -68.5q4.5 -29.5 15.5 -49q11 -19.5 30 -29.5q19 -10 48 -10q27 0 48 8.5q21 8.5 37.5 23.5q16.5 15 29 34.5q12.5 19.5 20.5 41.5l0 334h80v-358q0 -36 2.5 -74.5q2.5 -38.5 8.5 -67.5l-55 0l-20 79h-5q-23 -39 -62 -65q-39 -26 -99 -26q-40 0 -70.5 9.5q-30.5 9.5 -51 33.5q-20.5 24 -31 64.5q-10.5 40.5 -10.5 102.5v302zM210 700h78v-16l-71 -113h-42zM356 700h86v-16l-114 -113l-45 0z" />
-<glyph unicode="&#370;" horiz-adv-x="652" d="M487 700h80v-467q-2 -97 -38 -152.5q-36 -55.5 -101 -76.5q-30 -16 -46 -39q-16 -23 -16 -52q1 -21 14 -35.5q13 -14.5 37 -15.5q21 0 41 9l11 -43q-14 -11 -38 -17q-24 -6 -47 -6q-45 0 -72.5 24q-27.5 24 -27.5 65q0 30 16 55q16 25 44 42l-9 0q-124 0 -187 56q-63 56 -63 170v483h83v-444q0 -53 10.5 -89.5q10.5 -36.5 31.5 -59q21 -22.5 52.5 -32.5q31.5 -10 73.5 -10q80 0 115 44.5q35 44.5 36 146.5z" />
-<glyph unicode="&#371;" horiz-adv-x="539" d="M149 500v-285q0 -39 4.5 -68.5q4.5 -29.5 15.5 -49q11 -19.5 30 -29.5q19 -10 48 -10q27 0 48 8.5q21 8.5 37.5 23.5q16.5 15 29 34.5q12.5 19.5 20.5 41.5l0 334h80v-358q0 -36 2.5 -74.5q2.5 -38.5 8.5 -67.5l-18 0q-30 -12 -46.5 -36q-16.5 -24 -14.5 -55q3 -21 15.5 -34q12.5 -13 37.5 -13q19 0 39 9l11 -43q-15 -12 -39.5 -17.5q-24.5 -5.5 -45.5 -5.5q-44 0 -70.5 21.5q-26.5 21.5 -29.5 63.5q0 41 25.5 71q25.5 30 76.5 49l-17 69h-5q-22 -39 -62.5 -65q-40.5 -26 -97.5 -26q-40 0 -70.5 9.5q-30.5 9.5 -51 33.5q-20.5 24 -31 64.5q-10.5 40.5 -10.5 102.5l0 302z" />
-<glyph unicode="&#376;" horiz-adv-x="558" d="M239 278l-231 422h97l164 -306l17 -61h1l18 63l157 304h89l-229 -421v-279h-83zM133 794q0 21 15 34q15 13 39 13q23 0 37.5 -13q14.5 -13 14.5 -34q0 -20 -14.5 -33q-14.5 -13 -37.5 -13q-24 0 -39 13q-15 13 -15 33zt0 0zM325 794q0 21 14.5 34q14.5 13 37.5 13q24 0 39 -13q15 -13 15 -34q0 -20 -15 -33q-15 -13 -39 -13q-23 0 -37.5 13t-14.5 33z" />
-<glyph unicode="&#377;" horiz-adv-x="545" d="M38 75l353 511l42 40h-395v74h470v-75l-355 -514l-42 -37h397v-74h-470zM329 870h114v-21l-163 -97l-69 0z" />
-<glyph unicode="&#378;" horiz-adv-x="447" d="M42 70l231 318l42 42h-273v70h356v-70l-233 -321l-41 -39h274v-70h-356zM236 720h89v-21l-101 -128l-47 0z" />
-<glyph unicode="&#379;" horiz-adv-x="545" d="M38 75l353 511l42 40h-395v74h470v-75l-355 -514l-42 -37h397v-74h-470zM211 797q0 21 16.5 36.5q16.5 15.5 45.5 15.5q29 0 46.5 -15.5q17.5 -15.5 17.5 -36.5q0 -23 -17.5 -38q-17.5 -15 -46.5 -15q-29 0 -45.5 15t-16.5 38z" />
-<glyph unicode="&#380;" horiz-adv-x="447" d="M42 70l231 318l42 42h-273v70h356v-70l-233 -321l-41 -39h274v-70h-356zM173 652q0 23 15.5 39.5q15.5 16.5 39.5 16.5q24 0 41 -16.5q17 -16.5 17 -39.5q0 -23 -17 -38q-17 -15 -41 -15q-24 0 -39.5 15t-15.5 38z" />
-<glyph unicode="&#381;" horiz-adv-x="545" d="M38 75l353 511l42 40h-395v74h470v-75l-355 -514l-42 -37h397v-74h-470zM286 746h-58l-127 103v21h82l59 -50l17 -34l19 33l63 51h78l0 -22z" />
-<glyph unicode="&#382;" horiz-adv-x="447" d="M42 70l231 318l42 42h-273v70h356v-70l-233 -321l-41 -39h274v-70h-356zM235 550h-37l-115 182h78l39 -66l21 -58l22 58l45 66l70 0z" />
-<glyph unicode="&#383;" horiz-adv-x="249" d="M22 500h78v28q0 93 32 135.5q32 42.5 112 42.5q32 0 56 -4q24 -4 51 -15l-18 -67q-23 10 -43.5 13q-20.5 3 -38.5 3q-24 0 -38.5 -6.5q-14.5 -6.5 -21.5 -20q-7 -13.5 -9 -34q-2 -20.5 -2 -46.5v-529h-80v431l-78 0z" />
-<glyph unicode="&#402;" horiz-adv-x="545" d="M316 430l-79 -464q-6 -37 -17 -68.5q-11 -31.5 -29.5 -55q-18.5 -23.5 -45.5 -37q-27 -13.5 -64 -13.5q-29 0 -60 7q-31 7 -55 17l21 66q23 -10 43.5 -15q20.5 -5 44.5 -5q38 0 57.5 33.5q19.5 33.5 32.5 112.5l68 422h-85v70h96l11 67q12 74 43.5 109.5q31.5 35.5 103.5 35.5q33 0 64.5 -7q31.5 -7 56.5 -18l-23 -65q-48 20 -92 20q-19 0 -31 -5.5q-12 -5.5 -20 -17q-8 -11.5 -13.5 -31q-5.5 -19.5 -9.5 -47.5l-7 -41h120l0 -70z" />
-<glyph unicode="&#500;" horiz-adv-x="612" d="M321 349h235v-308q-16 -12 -38.5 -22q-22.5 -10 -48 -17q-25.5 -7 -53 -10.5q-27.5 -3.5 -53.5 -3.5q-67 0 -123 21.5q-56 21.5 -97 66q-41 44.5 -64 113q-23 68.5 -23 161.5q0 97 28 166q28 69 73 112.5q45 43.5 101 63.5q56 20 112 20q60 0 99 -6.5q39 -6.5 66 -17.5l-21 -73q-48 23 -137 23q-42 0 -83.5 -14.5q-41.5 -14.5 -74.5 -48.5q-33 -34 -54 -89q-21 -55 -21 -136q0 -74 17 -128q17 -54 47.5 -89.5q30.5 -35.5 73.5 -53q43 -17.5 94 -17.5q64 0 109 25l0 195l-164 20zM428 870h114v-21l-163 -97l-69 0z" />
-<glyph unicode="&#501;" horiz-adv-x="537" d="M460 -23q0 -97 -51.5 -143q-51.5 -46 -152.5 -46q-60 0 -96.5 7.5q-36.5 7.5 -62.5 19.5l21 68q23 -9 51 -17q28 -8 73 -8q42 0 68.5 7.5q26.5 7.5 42.5 25q16 17.5 22 45q6 27.5 6 65.5v48h-4q-20 -29 -51 -44.5q-31 -15.5 -81 -15.5q-101 0 -148.5 63q-47.5 63 -47.5 196q0 128 61 194.5q61 66.5 180 66.5q57 0 97.5 -9q40.5 -9 72.5 -21zM259 59q51 0 80 25.5q29 25.5 41 79.5l0 256q-40 19 -102 19q-68 0 -107 -46q-39 -46 -39 -144q0 -42 7 -77q7 -35 22 -60q15 -25 39 -39q24 -14 59 -14zt0 0zM304 720h89v-21l-101 -128l-47 0z" />
-<glyph unicode="&#536;" horiz-adv-x="531" d="M401 178q0 42 -25 68.5q-25 26.5 -62.5 47q-37.5 20.5 -81.5 38.5q-44 18 -81.5 43.5q-37.5 25.5 -62.5 63q-25 37.5 -25 95.5q0 82 57 130q57 48 162 48q61 0 111 -9q50 -9 78 -23l-25 -73q-23 11 -67.5 21q-44.5 10 -100.5 10q-66 0 -99 -29.5q-33 -29.5 -33 -69.5q0 -39 25 -65q25 -26 62.5 -46.5q37.5 -20.5 81.5 -40.5q44 -20 81.5 -46.5q37.5 -26.5 62.5 -63.5q25 -37 25 -92q0 -45 -16 -81q-16 -36 -47 -62q-31 -26 -75 -40q-44 -14 -100 -14q-75 0 -124 11.5q-49 11.5 -76 25.5l28 75q23 -13 68 -25.5q45 -12.5 101 -12.5q33 0 62 6.5q29 6.5 50 21q21 14.5 33.5 36.5q12.5 22 12.5 52zt0 0zM203 -102q0 21 15.5 34q15.5 13 35.5 13q25 0 44.5 -17.5q19.5 -17.5 19.5 -57.5q0 -26 -9 -45.5q-9 -19.5 -21.5 -34q-12.5 -14.5 -26 -23q-13.5 -8.5 -23.5 -12.5l-28 32q20 11 32 28q12 17 12 41q-4 -1 -10 -1q-18 0 -29.5 12t-11.5 31z" />
-<glyph unicode="&#537;" horiz-adv-x="421" d="M297 136q0 30 -18 47q-18 17 -44.5 28.5q-26.5 11.5 -58 22q-31.5 10.5 -58 27q-26.5 16.5 -44.5 42.5q-18 26 -18 70q0 72 41 105.5q41 33.5 114 33.5q54 0 90.5 -9.5q36.5 -9.5 63.5 -22.5l-19 -66q-23 11 -55.5 19.5q-32.5 8.5 -69.5 8.5q-44 0 -64.5 -15q-20.5 -15 -20.5 -52q0 -26 18 -40.5q18 -14.5 44.5 -26q26.5 -11.5 58 -22.5q31.5 -11 58 -29q26.5 -18 44.5 -45.5q18 -27.5 18 -72.5q0 -32 -10.5 -60q-10.5 -28 -32.5 -48q-22 -20 -54.5 -31.5q-32.5 -11.5 -76.5 -11.5q-57 0 -97 11q-40 11 -67 26l24 68q23 -13 60 -24q37 -11 75 -11q43 0 71 17q28 17 28 61zt0 0zM154 -102q0 21 15.5 34q15.5 13 35.5 13q25 0 44.5 -17.5q19.5 -17.5 19.5 -57.5q0 -26 -9 -45.5q-9 -19.5 -21.5 -34q-12.5 -14.5 -26 -23q-13.5 -8.5 -23.5 -12.5l-28 32q20 11 32 28q12 17 12 41q-4 -1 -10 -1q-18 0 -29.5 12t-11.5 31z" />
-<glyph unicode="&#538;" horiz-adv-x="555" d="M537 626h-218v-626h-83v626h-218v74h519zM218 -102q0 21 15.5 34q15.5 13 35.5 13q25 0 44.5 -17.5q19.5 -17.5 19.5 -57.5q0 -26 -9 -45.5q-9 -19.5 -21.5 -34q-12.5 -14.5 -26 -23q-13.5 -8.5 -23.5 -12.5l-28 32q20 11 32 28q12 17 12 41q-4 -1 -10 -1q-18 0 -29.5 12t-11.5 31z" />
-<glyph unicode="&#539;" horiz-adv-x="339" d="M11 500h78v99l80 23v-122h136v-70h-136v-277q0 -52 13 -73.5q13 -21.5 44 -21.5q26 0 44 5.5q18 5.5 40 14.5l18 -61q-27 -13 -59 -21q-32 -8 -69 -8q-61 0 -86 34.5q-25 34.5 -25 115.5v292h-78zM130 -102q0 21 15.5 34q15.5 13 35.5 13q25 0 44.5 -17.5q19.5 -17.5 19.5 -57.5q0 -26 -9 -45.5q-9 -19.5 -21.5 -34q-12.5 -14.5 -26 -23q-13.5 -8.5 -23.5 -12.5l-28 32q20 11 32 28q12 17 12 41q-4 -1 -10 -1q-18 0 -29.5 12t-11.5 31z" />
-<glyph unicode="&#567;" horiz-adv-x="267" d="M93 500h80v-527q0 -93 -32 -139q-32 -46 -102 -46q-8 0 -15 0.5q-7 0.5 -15 1.5l0 68q28 0 44.5 8.5q16.5 8.5 25.5 26.5q9 18 11.5 45.5q2.5 27.5 2.5 64.5z" />
-<glyph unicode="&#700;" horiz-adv-x="194" d="M40 659q0 23 14.5 36q14.5 13 37.5 13q28 0 45.5 -17.5q17.5 -17.5 17.5 -52.5q0 -33 -9.5 -57q-9.5 -24 -23 -40.5q-13.5 -16.5 -28.5 -26.5q-15 -10 -26 -14l-25 34q23 12 36 30q13 18 13 47q-4 -1 -11 -1q-19 0 -30 13.5t-11 35.5z" />
-<glyph unicode="&#710;" horiz-adv-x="386" d="M183 732h32l111 -182h-72l-39 66l-21 58l-22 -58l-45 -66l-67 0z" />
-<glyph unicode="&#711;" horiz-adv-x="395" d="M212 550h-37l-115 182h78l39 -66l21 -58l22 58l45 66l70 0z" />
-<glyph unicode="&#728;" horiz-adv-x="425" d="M105 720q18 -36 48 -56.5q30 -20.5 64 -20.5q34 0 61.5 20q27.5 20 44.5 57l42 -18q-3 -24 -15.5 -47.5q-12.5 -23.5 -32 -41.5q-19.5 -18 -45.5 -29q-26 -11 -56 -11q-28 0 -53 8.5q-25 8.5 -45.5 25q-20.5 16.5 -35.5 39q-15 22.5 -22 51.5z" />
-<glyph unicode="&#729;" horiz-adv-x="233" d="M60 652q0 23 15.5 39.5q15.5 16.5 39.5 16.5q24 0 41 -16.5q17 -16.5 17 -39.5q0 -23 -17 -38q-17 -15 -41 -15q-24 0 -39.5 15t-15.5 38z" />
-<glyph unicode="&#730;" horiz-adv-x="315" d="M60 643q0 42 26.5 66.5q26.5 24.5 70.5 24.5q42 0 70 -22q28 -22 28 -69q0 -39 -28 -64.5q-28 -25.5 -70 -25.5q-42 0 -69.5 23.5q-27.5 23.5 -27.5 66.5zt0 0zM114 643q0 -20 13 -31q13 -11 30 -11q19 0 31.5 10q12.5 10 12.5 32q0 22 -13.5 32.5q-13.5 10.5 -30.5 10.5q-17 0 -30 -10t-13 -33z" />
-<glyph unicode="&#731;" horiz-adv-x="305" d="M218 10q-35 -16 -55 -40.5q-20 -24.5 -20 -56.5q0 -20 13 -35.5q13 -15.5 38 -15.5q19 0 40 10l11 -43q-15 -12 -40 -18q-25 -6 -46 -6q-45 0 -72 24q-27 24 -27 65q0 41 27.5 70q27.5 29 75.5 46z" />
-<glyph unicode="&#732;" horiz-adv-x="399" d="M60 656q29 33 53 45.5q24 12.5 44 12.5q17 0 31.5 -6.5q14.5 -6.5 28 -14q13.5 -7.5 26 -13.5q12.5 -6 26.5 -6q22 0 46 24l24 -43q-26 -29 -47.5 -39.5q-21.5 -10.5 -39.5 -10.5q-16 0 -30 6q-14 6 -27.5 13.5q-13.5 7.5 -27 14q-13.5 6.5 -27.5 6.5q-13 0 -26.5 -7q-13.5 -7 -30.5 -24z" />
-<glyph unicode="&#733;" horiz-adv-x="387" d="M95 700h78v-16l-71 -113h-42zM241 700h86v-16l-114 -113l-45 0z" />
-<glyph unicode="&#769;" horiz-adv-x="2" d="M-232 720h89v-21l-101 -128l-47 0z" />
-<glyph unicode="&#916;" horiz-adv-x="568" d="M14 0v37l254 674h34l256 -674v-37zM106 72h355l-155 403l-24 105h-1l-28 -107z" />
-<glyph unicode="&#937;" horiz-adv-x="802" d="M76 70h116l94 -10v26l-54 10q-32 15 -60.5 41.5q-28.5 26.5 -49.5 62q-21 35.5 -33.5 80q-12.5 44.5 -12.5 96.5q0 78 23 140q23 62 65 105.5q42 43.5 102 67q60 23.5 134 23.5q78 0 138.5 -25q60.5 -25 102.5 -70q42 -45 63.5 -107.5q21.5 -62.5 21.5 -137.5q0 -54 -14 -98q-14 -44 -36.5 -78.5q-22.5 -34.5 -50 -59q-27.5 -24.5 -54.5 -39.5l-57 -11v-26l96 10h116v-70h-287v125q30 6 64.5 22q34.5 16 64.5 45.5q30 29.5 50 75q20 45.5 20 109.5q0 48 -13.5 94.5q-13.5 46.5 -42.5 83.5q-29 37 -74.5 60q-45.5 23 -108.5 23q-113 0 -174 -66.5q-61 -66.5 -61 -197.5q0 -63 18.5 -107.5q18.5 -44.5 47.5 -74.5q29 -30 64 -46q35 -16 68 -21l0 -125l-286 0z" />
-<glyph unicode="&#960;" horiz-adv-x="664" d="M514 116q0 -28 9 -39q9 -11 23 -11q10 0 22.5 2q12.5 2 21.5 4l19 -54q-16 -7 -39.5 -14.5q-23.5 -7.5 -53.5 -7.5q-50 0 -66 29q-16 29 -16 81v324h-190v-430h-80v430h-14q-21 0 -34 -11.5q-13 -11.5 -27 -33.5l-53 32q19 38 47 60.5q28 22.5 81 22.5h433v-70l-83 0z" />
-<glyph unicode="&#1025;" horiz-adv-x="536" d="M85 700h381v-74h-298v-229h273v-74h-273v-249h303v-74h-386zM120 794q0 21 15 34q15 13 39 13q23 0 37.5 -13q14.5 -13 14.5 -34q0 -20 -14.5 -33q-14.5 -13 -37.5 -13q-24 0 -39 13q-15 13 -15 33zt0 0zM312 794q0 21 14.5 34q14.5 13 37.5 13q24 0 39 -13q15 -13 15 -34q0 -20 -15 -33q-15 -13 -39 -13q-23 0 -37.5 13t-14.5 33z" />
-<glyph unicode="&#1026;" horiz-adv-x="728" d="M319 0h-83v626h-218v74h519v-74h-218v-211q12 4 47.5 12.5q35.5 8.5 91.5 8.5q40 0 78.5 -9.5q38.5 -9.5 68.5 -33.5q30 -24 48.5 -64.5q18.5 -40.5 18.5 -102.5q0 -120 -61 -177q-61 -57 -172 -57q-33 0 -47.5 0.5q-14.5 0.5 -22.5 2.5l0 72q13 -2 28.5 -2.5q15.5 -0.5 44.5 -0.5q142 0 142 156q0 42 -12 70q-12 28 -32.5 44.5q-20.5 16.5 -48 23q-27.5 6.5 -59.5 6.5q-18 0 -35.5 -2.5q-17.5 -2.5 -33 -6q-15.5 -3.5 -27 -7.5q-11.5 -4 -17.5 -6z" />
-<glyph unicode="&#1027;" horiz-adv-x="442" d="M460 626h-292v-626h-83v700h375zM315 870h114v-21l-163 -97l-69 0z" />
-<glyph unicode="&#1028;" horiz-adv-x="583" d="M544 29q-30 -23 -78.5 -32q-48.5 -9 -100.5 -9q-63 0 -119 21.5q-56 21.5 -98.5 65.5q-42.5 44 -67 112.5q-24.5 68.5 -24.5 162.5q0 98 27.5 166.5q27.5 68.5 71.5 112q44 43.5 99 63.5q55 20 111 20q60 0 101 -6.5q41 -6.5 68 -17.5l-20 -74q-23 11 -60 17.5q-37 6.5 -82 6.5q-39 0 -76.5 -12.5q-37.5 -12.5 -69 -41q-31.5 -28.5 -53 -74.5q-21.5 -46 -28.5 -112l306 0v-74h-307q3 -66 23.5 -115q20.5 -49 53 -81.5q32.5 -32.5 74.5 -49q42 -16.5 89 -16.5q45 0 81 9q36 9 58 23z" />
-<glyph unicode="&#1029;" horiz-adv-x="531" d="M401 178q0 42 -25 68.5q-25 26.5 -62.5 47q-37.5 20.5 -81.5 38.5q-44 18 -81.5 43.5q-37.5 25.5 -62.5 63q-25 37.5 -25 95.5q0 82 57 130q57 48 162 48q61 0 111 -9q50 -9 78 -23l-25 -73q-23 11 -67.5 21q-44.5 10 -100.5 10q-66 0 -99 -29.5q-33 -29.5 -33 -69.5q0 -39 25 -65q25 -26 62.5 -46.5q37.5 -20.5 81.5 -40.5q44 -20 81.5 -46.5q37.5 -26.5 62.5 -63.5q25 -37 25 -92q0 -45 -16 -81q-16 -36 -47 -62q-31 -26 -75 -40q-44 -14 -100 -14q-75 0 -124 11.5q-49 11.5 -76 25.5l28 75q23 -13 68 -25.5q45 -12.5 101 -12.5q33 0 62 6.5q29 6.5 50 21q21 14.5 33.5 36.5t12.5 52z" />
-<glyph unicode="&#1030;" horiz-adv-x="291" d="M104 700h83v-700l-83 0z" />
-<glyph unicode="&#1031;" horiz-adv-x="293" d="M32 793q0 22 14.5 35q14.5 13 36.5 13q21 0 35.5 -13q14.5 -13 14.5 -35q0 -22 -14.5 -34.5q-14.5 -12.5 -35.5 -12.5q-22 0 -36.5 12.5q-14.5 12.5 -14.5 34.5zt0 0zM161 793q0 22 14.5 35q14.5 13 35.5 13q22 0 36.5 -13q14.5 -13 14.5 -35q0 -22 -14.5 -34.5q-14.5 -12.5 -36.5 -12.5q-21 0 -35.5 12.5q-14.5 12.5 -14.5 34.5zt0 0zM105 700h83v-700l-83 0z" />
-<glyph unicode="&#1032;" horiz-adv-x="291" d="M112 700h83v-546q0 -80 -35.5 -122q-35.5 -42 -107.5 -42q-8 0 -20 1q-12 1 -24 3q-12 2 -23.5 5q-11.5 3 -18.5 7l16 71q28 -13 61 -13q42 0 55.5 29.5q13.5 29.5 13.5 80.5z" />
-<glyph unicode="&#1033;" horiz-adv-x="926" d="M456 626h-209q-10 -200 -26.5 -332.5q-16.5 -132.5 -49.5 -206.5q-22 -48 -52 -70q-30 -22 -65 -22q-18 0 -31 2.5q-13 2.5 -25 7.5l11 72q10 -3 21 -3q17 0 33.5 11q16.5 11 32.5 41q14 27 26.5 72q12.5 45 22 114q9.5 69 15.5 164.5q6 95.5 9 223.5l370 0v-272q5 1 17 2.5q12 1.5 26 2.5q14 1 29 2q15 1 27 1q48 0 93.5 -9.5q45.5 -9.5 81 -33.5q35.5 -24 57.5 -64.5q22 -40.5 22 -102.5q0 -60 -21 -104q-21 -44 -58 -73q-37 -29 -86.5 -43q-49.5 -14 -107.5 -14q-14 0 -34 0.5q-20 0.5 -42.5 2q-22.5 1.5 -45 4.5q-22.5 3 -41.5 8zM630 64q36 0 67.5 9.5q31.5 9.5 55.5 29q24 19.5 37.5 49q13.5 29.5 13.5 68.5q0 42 -15 70q-15 28 -39.5 44.5q-24.5 16.5 -56.5 23q-32 6.5 -66 6.5q-9 0 -22 -1q-13 -1 -26 -2q-13 -1 -24 -3q-11 -2 -16 -3l0 -285q14 -3 40 -4.5t51 -1.5z" />
-<glyph unicode="&#1034;" horiz-adv-x="974" d="M504 336h-336v-336h-83v700h83v-290h336v290h83v-291q5 1 17 2.5q12 1.5 26.5 2.5q14.5 1 29.5 2q15 1 27 1q47 0 92.5 -8q45.5 -8 81 -30q35.5 -22 57.5 -61q22 -39 22 -101q0 -60 -21 -103q-21 -43 -58 -70q-37 -27 -86.5 -39.5q-49.5 -12.5 -107.5 -12.5q-14 0 -34 0.5q-20 0.5 -42.5 2q-22.5 1.5 -45 4.5q-22.5 3 -41.5 7zM678 64q36 0 68 8q32 8 55.5 26q23.5 18 37 45.5q13.5 27.5 13.5 66.5q0 42 -14.5 68.5q-14.5 26.5 -39 41.5q-24.5 15 -56.5 20q-32 5 -67 5q-9 0 -22 -1q-13 -1 -26 -2q-13 -1 -24 -3q-11 -2 -16 -3l0 -266q14 -3 40 -4.5t51 -1.5z" />
-<glyph unicode="&#1035;" horiz-adv-x="750" d="M319 0h-83v626h-218v74h519v-74h-218v-231q27 15 71.5 30q44.5 15 100.5 15q42 0 77.5 -9.5q35.5 -9.5 60.5 -32q25 -22.5 39 -60.5q14 -38 14 -94v-244h-83v229q0 137 -124 137q-48 0 -89 -12.5q-41 -12.5 -67 -33.5z" />
-<glyph unicode="&#1036;" horiz-adv-x="610" d="M215 324h-47v-324h-83v700h83v-326l45 14l235 312h96l-234 -301l-42 -33l51 -40l256 -326h-105zM341 870h114v-21l-163 -97l-69 0z" />
-<glyph unicode="&#1038;" horiz-adv-x="553" d="M282 331l26 -89h5l20 92l134 366h85l-177 -455q-27 -71 -47.5 -118.5q-20.5 -47.5 -41.5 -77q-21 -29.5 -45 -42q-24 -12.5 -59 -12.5q-33 0 -52.5 5.5q-19.5 5.5 -36.5 16.5l25 69q20 -11 37 -14q17 -3 31 -3q28 0 47 28.5q19 28.5 33 84.5l-259 518h96zM201 870q4 -37 28 -57q24 -20 64 -20q40 0 63.5 20q23.5 20 28.5 56l71 -17q-11 -54 -50.5 -85.5q-39.5 -31.5 -113.5 -31.5q-71 0 -116.5 27.5q-45.5 27.5 -53.5 87.5z" />
-<glyph unicode="&#1039;" horiz-adv-x="659" d="M85 0v700h83v-626h323v626h83v-700h-202l-15 -179h-52l-20 179z" />
-<glyph unicode="&#1040;" horiz-adv-x="585" d="M418 194h-258l-70 -194h-82l265 711h38l266 -711h-87zM187 266h206l-78 213l-25 106h-1l-25 -108z" />
-<glyph unicode="&#1041;" horiz-adv-x="550" d="M85 700h380v-74h-297v-210q17 3 42 6q25 3 48 3q51 0 97 -9.5q46 -9.5 81 -32.5q35 -23 55.5 -62.5q20.5 -39.5 20.5 -99.5q0 -60 -21 -103.5q-21 -43.5 -56 -71q-35 -27.5 -81.5 -41q-46.5 -13.5 -97.5 -13.5q-17 0 -38.5 0.5q-21.5 0.5 -45 2.5q-23.5 2 -46 4.5q-22.5 2.5 -41.5 7.5zM266 64q32 0 61 9q29 9 50.5 26.5q21.5 17.5 34 44.5q12.5 27 12.5 63q0 46 -14.5 74.5q-14.5 28.5 -38.5 44.5q-24 16 -55.5 21.5q-31.5 5.5 -65.5 5.5q-9 0 -21 -1q-12 -1 -24 -2q-12 -1 -22 -2.5q-10 -1.5 -15 -2.5l0 -275q7 -2 18.5 -3q11.5 -1 25 -2q13.5 -1 27.5 -1t27 0z" />
-<glyph unicode="&#1042;" horiz-adv-x="584" d="M507 540q0 -25 -8 -51q-8 -26 -24 -48.5q-16 -22.5 -41 -39.5q-25 -17 -59 -26l0 -4q30 -5 57.5 -17q27.5 -12 48.5 -33q21 -21 34 -51q13 -30 13 -71q0 -54 -22.5 -93.5q-22.5 -39.5 -59 -64.5q-36.5 -25 -83.5 -37q-47 -12 -96 -12q-17 0 -40 0q-23 0 -48 1.5q-25 1.5 -50 4q-25 2.5 -44 7.5l0 689q37 6 86 10q49 4 107 4q39 0 79.5 -6.5q40.5 -6.5 73.5 -25q33 -18.5 54.5 -51.5q21.5 -33 21.5 -85zt0 0zM275 64q32 0 62 7.5q30 7.5 53 24q23 16.5 36.5 40.5q13.5 24 13.5 57q0 41 -16.5 66q-16.5 25 -43 39q-26.5 14 -59.5 19q-33 5 -66 5h-87v-251q7 -2 20 -3q13 -1 28 -2q15 -1 31 -1.5q16 -0.5 28 -0.5zt0 0zM220 392q17 0 41 1q24 1 40 3q24 8 45 19.5q21 11.5 37.5 27q16.5 15.5 26 36q9.5 20.5 9.5 44.5q0 33 -12.5 54.5q-12.5 21.5 -33.5 34.5q-21 13 -48 18.5q-27 5.5 -55 5.5q-33 0 -60.5 -1.5q-27.5 -1.5 -41.5 -4.5l0 -238z" />
-<glyph unicode="&#1043;" horiz-adv-x="442" d="M460 626h-292v-626h-83v700l375 0z" />
-<glyph unicode="&#1044;" horiz-adv-x="669" d="M641 -129h-57l-15 129h-491l-15 -129h-58v203h71q8 11 24.5 51.5q16.5 40.5 33 116q16.5 75.5 29.5 189q13 113.5 13 269.5l374 0v-626h91zM467 74v552h-213q-3 -110 -11.5 -198q-8.5 -88 -20.5 -155.5q-12 -67.5 -27 -116.5q-15 -49 -31 -82z" />
-<glyph unicode="&#1045;" horiz-adv-x="536" d="M85 700h381v-74h-298v-229h273v-74h-273v-249h303v-74l-386 0z" />
-<glyph unicode="&#1046;" horiz-adv-x="806" d="M358 700h80v-326l43 14l203 312h92l-202 -304l-40 -32l50 -41l223 -323h-102l-221 324h-46v-324h-80v336l-42 -14l-221 -322h-96l221 313l48 38l-46 35l-209 314h97l203 -314l45 0z" />
-<glyph unicode="&#1047;" horiz-adv-x="541" d="M139 331v70h16q9 0 22 0q13 0 26.5 1q13.5 1 26 1.5q12.5 0.5 20.5 2.5q26 4 49 13.5q23 9.5 40 24.5q17 15 27 35q10 20 10 44q0 33 -11 55q-11 22 -30.5 35.5q-19.5 13.5 -45 19q-25.5 5.5 -54.5 5.5q-54 0 -92 -7.5q-38 -7.5 -61 -18.5l-22 66q20 11 72 22.5q52 11.5 117 11.5q40 0 78.5 -8.5q38.5 -8.5 69 -28q30.5 -19.5 49 -53q18.5 -33.5 18.5 -82.5q0 -50 -33 -95.5q-33 -45.5 -99 -65.5l0 -4q71 -10 112 -53q41 -43 41 -115q0 -57 -22.5 -98.5q-22.5 -41.5 -59 -68.5q-36.5 -27 -84 -39.5q-47.5 -12.5 -96.5 -12.5q-66 0 -108.5 7.5q-42.5 7.5 -70.5 18.5l21 75q23 -11 64.5 -19q41.5 -8 100.5 -8q31 0 61 8.5q30 8.5 53.5 26q23.5 17.5 38 43.5q14.5 26 14.5 62q0 63 -44 92.5q-44 29.5 -115 34.5q-12 1 -22.5 1.5q-10.5 0.5 -21.5 0.5z" />
-<glyph unicode="&#1048;" horiz-adv-x="681" d="M513 474l6 80h-4l-43 -82l-338 -472h-49v700h83v-480l-7 -79h4l44 82l338 477h49v-700l-83 0z" />
-<glyph unicode="&#1049;" horiz-adv-x="681" d="M513 474l6 80h-4l-43 -82l-338 -472h-49v700h83v-480l-7 -79h4l44 82l338 477h49v-700h-83zM258 870q4 -37 28 -57q24 -20 64 -20q40 0 63.5 20q23.5 20 28.5 56l71 -17q-11 -54 -50.5 -85.5q-39.5 -31.5 -113.5 -31.5q-71 0 -116.5 27.5q-45.5 27.5 -53.5 87.5z" />
-<glyph unicode="&#1050;" horiz-adv-x="610" d="M215 324h-47v-324h-83v700h83v-326l45 14l235 312h96l-234 -301l-42 -33l51 -40l256 -326l-105 0z" />
-<glyph unicode="&#1051;" horiz-adv-x="624" d="M456 626h-209q-10 -200 -26.5 -332.5q-16.5 -132.5 -49.5 -206.5q-22 -48 -52 -70q-30 -22 -65 -22q-18 0 -31 2.5q-13 2.5 -25 7.5l11 72q10 -3 21 -3q17 0 33.5 11q16.5 11 32.5 41q14 27 26.5 72q12.5 45 22 114q9.5 69 15.5 164.5q6 95.5 9 223.5l370 0v-700l-83 0z" />
-<glyph unicode="&#1052;" horiz-adv-x="791" d="M623 470l10 105h-5l-38 -96l-182 -316h-25l-193 317l-36 95h-5l14 -104v-471h-78v700h62l219 -358l33 -78h2l31 80l209 356h65v-700l-83 0z" />
-<glyph unicode="&#1053;" horiz-adv-x="672" d="M504 321h-336v-321h-83v700h83v-305h336v305h83v-700l-83 0z" />
-<glyph unicode="&#1054;" horiz-adv-x="684" d="M56 350q0 175 74 268.5q74 93.5 211 93.5q74 0 128 -26q54 -26 89.5 -73.5q35.5 -47.5 52.5 -114q17 -66.5 17 -148.5q0 -175 -74.5 -268.5q-74.5 -93.5 -212.5 -93.5q-73 0 -126.5 26q-53.5 26 -89 73.5q-35.5 47.5 -52.5 114q-17 66.5 -17 148.5zt0 0zM144 350q0 -58 11.5 -110q11.5 -52 35.5 -91.5q24 -39.5 61.5 -63q37.5 -23.5 88.5 -23.5q93 0 146 70.5q53 70.5 53 217.5q0 57 -11.5 109.5q-11.5 52.5 -36 92q-24.5 39.5 -62 63q-37.5 23.5 -89.5 23.5q-92 0 -144.5 -70.5t-52.5 -217.5z" />
-<glyph unicode="&#1055;" horiz-adv-x="659" d="M491 626h-323v-626h-83v700h489v-700l-83 0z" />
-<glyph unicode="&#1056;" horiz-adv-x="559" d="M85 693q38 9 82 12q44 3 87 3q46 0 93.5 -9q47.5 -9 86.5 -33q39 -24 63.5 -66q24.5 -42 24.5 -107q0 -64 -23 -108q-23 -44 -61 -71.5q-38 -27.5 -87 -39.5q-49 -12 -101 -12q-5 0 -16.5 0q-11.5 0 -24 0.5q-12.5 0.5 -24.5 1.5q-12 1 -17 2l0 -266h-83zM256 636q-26 0 -50 -1q-24 -1 -38 -5l0 -290q5 -2 16 -2.5q11 -0.5 23 -1q12 -0.5 23 -0.5q11 0 16 0q34 0 67.5 6.5q33.5 6.5 60.5 23.5q27 17 43.5 48q16.5 31 16.5 79q0 41 -15.5 68.5q-15.5 27.5 -41 44q-25.5 16.5 -57.5 23.5t-64 7z" />
-<glyph unicode="&#1057;" horiz-adv-x="571" d="M533 29q-30 -23 -76 -32q-46 -9 -98 -9q-63 0 -118 21.5q-55 21.5 -96 65.5q-41 44 -65 112.5q-24 68.5 -24 162.5q0 98 26.5 166.5q26.5 68.5 70 112q43.5 43.5 97.5 63.5q54 20 110 20q60 0 98 -6.5q38 -6.5 65 -17.5l-20 -73q-48 23 -137 23q-41 0 -81 -15q-40 -15 -71.5 -49q-31.5 -34 -50.5 -89q-19 -55 -19 -135q0 -72 18 -126q18 -54 49.5 -90q31.5 -36 74 -54q42.5 -18 92.5 -18q45 0 78.5 9q33.5 9 56.5 23z" />
-<glyph unicode="&#1058;" horiz-adv-x="555" d="M537 626h-218v-626h-83v626h-218v74l519 0z" />
-<glyph unicode="&#1059;" horiz-adv-x="553" d="M282 331l26 -89h5l20 92l134 366h85l-177 -455q-27 -71 -47.5 -118.5q-20.5 -47.5 -41.5 -77q-21 -29.5 -45 -42q-24 -12.5 -59 -12.5q-33 0 -52.5 5.5q-19.5 5.5 -36.5 16.5l25 69q20 -11 37 -14q17 -3 31 -3q28 0 47 28.5q19 28.5 33 84.5l-259 518l96 0z" />
-<glyph unicode="&#1060;" horiz-adv-x="780" d="M349 78q-17 -3 -39.5 -4q-22.5 -1 -42.5 -1q-47 0 -88.5 16q-41.5 16 -72 50q-30.5 34 -48 86.5q-17.5 52.5 -17.5 124.5q0 68 17.5 121.5q17.5 53.5 50 90.5q32.5 37 77.5 56.5q45 19.5 100 19.5q13 0 32.5 -1q19.5 -1 30.5 -3l0 86h82v-89q18 5 42.5 6q24.5 1 40.5 1q48 0 89 -17.5q41 -17.5 71.5 -52q30.5 -34.5 47.5 -87q17 -52.5 17 -121.5q0 -71 -19.5 -125q-19.5 -54 -52.5 -90q-33 -36 -77 -54q-44 -18 -94 -18q-11 0 -32.5 1.5q-21.5 1.5 -32.5 5.5l0 -100h-82zM502 568q-14 0 -36 -1q-22 -1 -36 -6l0 -415q10 -2 26.5 -2.5q16.5 -0.5 32.5 -0.5q34 0 63.5 13q29.5 13 52 40q22.5 27 35.5 68q13 41 13 96q0 46 -10.5 84.5q-10.5 38.5 -30 66.5q-19.5 28 -47.5 42.5q-28 14.5 -63 14.5zt0 0zM282 143q5 0 13.5 0q8.5 0 18.5 0.5q10 0.5 19.5 2q9.5 1.5 16.5 3.5l0 415q-12 2 -29.5 3q-17.5 1 -31.5 1q-34 0 -63.5 -13.5q-29.5 -13.5 -51.5 -41q-22 -27.5 -34.5 -68.5q-12.5 -41 -12.5 -95q0 -48 11 -86.5q11 -38.5 31.5 -65.5q20.5 -27 49 -41t63.5 -14z" />
-<glyph unicode="&#1061;" horiz-adv-x="618" d="M259 356l-213 344h100l142 -237l25 -57l24 57l150 237h92l-220 -337l230 -363h-97l-158 251l-27 60l-26 -60l-162 -251l-93 0z" />
-<glyph unicode="&#1062;" horiz-adv-x="687" d="M659 -129h-57l-15 129h-502v700h83v-626h315v626h83v-626l93 0z" />
-<glyph unicode="&#1063;" horiz-adv-x="605" d="M158 700v-232q0 -137 124 -137q47 0 88 12.5q41 12.5 67 33.5l0 323h83v-700h-83v302q-27 -15 -71 -30q-44 -15 -101 -15q-42 0 -77 9.5q-35 9.5 -60 32q-25 22.5 -39 60.5q-14 38 -14 94l0 247z" />
-<glyph unicode="&#1064;" horiz-adv-x="877" d="M85 0v700h83v-626h229v626h83v-626h229v626h83l0 -700z" />
-<glyph unicode="&#1065;" horiz-adv-x="913" d="M85 0v700h83v-626h229v626h83v-626h229v626h83v-626h93v-203h-58l-15 129z" />
-<glyph unicode="&#1066;" horiz-adv-x="630" d="M159 626h-160v74h243v-272q5 1 17 2.5q12 1.5 26.5 2.5q14.5 1 29.5 2q15 1 27 1q47 0 92.5 -9.5q45.5 -9.5 81.5 -33.5q36 -24 58 -64.5q22 -40.5 22 -102.5q0 -60 -21 -104q-21 -44 -58 -73q-37 -29 -86.5 -43q-49.5 -14 -107.5 -14q-14 0 -34 0.5q-20 0.5 -42.5 2q-22.5 1.5 -45.5 4.5q-23 3 -42 8zM334 64q36 0 67.5 9.5q31.5 9.5 55 29q23.5 19.5 37.5 49q14 29.5 14 68.5q0 42 -15 70q-15 28 -40 44.5q-25 16.5 -57 23q-32 6.5 -66 6.5q-9 0 -22 -1q-13 -1 -26 -2q-13 -1 -24 -3q-11 -2 -16 -3l0 -285q14 -3 40 -4.5t52 -1.5z" />
-<glyph unicode="&#1067;" horiz-adv-x="769" d="M601 700h83v-700h-83zM85 700h83v-272q5 1 15 2.5q10 1.5 22 2.5q12 1 24.5 2q12.5 1 24.5 1q47 0 91.5 -9.5q44.5 -9.5 78.5 -33.5q34 -24 54.5 -64.5q20.5 -40.5 20.5 -102.5q0 -60 -19 -104.5q-19 -44.5 -53.5 -73q-34.5 -28.5 -82.5 -42.5q-48 -14 -106 -14q-14 0 -32.5 0.5q-18.5 0.5 -39 2q-20.5 1.5 -41.5 4.5q-21 3 -40 8zM245 64q72 0 119 39q47 39 47 117q0 42 -14 70q-14 28 -37.5 44.5q-23.5 16.5 -54 23q-30.5 6.5 -64.5 6.5q-18 0 -40 -3q-22 -3 -33 -6l0 -285q27 -6 77 -6z" />
-<glyph unicode="&#1068;" horiz-adv-x="555" d="M85 700h83v-272q5 1 17 2.5q12 1.5 26 2.5q14 1 29 2q15 1 27 1q48 0 93.5 -9.5q45.5 -9.5 81 -33.5q35.5 -24 57.5 -64.5q22 -40.5 22 -102.5q0 -60 -21 -104q-21 -44 -58 -73q-37 -29 -86.5 -43q-49.5 -14 -107.5 -14q-14 0 -34 0.5q-20 0.5 -42.5 2q-22.5 1.5 -45 4.5q-22.5 3 -41.5 8zM259 64q36 0 67.5 9.5q31.5 9.5 55.5 29q24 19.5 37.5 49q13.5 29.5 13.5 68.5q0 42 -15 70q-15 28 -39.5 44.5q-24.5 16.5 -56.5 23q-32 6.5 -66 6.5q-9 0 -22 -1q-13 -1 -26 -2q-13 -1 -24 -3q-11 -2 -16 -3l0 -285q14 -3 40 -4.5t51 -1.5z" />
-<glyph unicode="&#1069;" horiz-adv-x="577" d="M150 395h288q-5 61 -24 107.5q-19 46.5 -49 77q-30 30.5 -69.5 44.5q-39.5 14 -85.5 14q-47 0 -83.5 -8q-36.5 -8 -59.5 -22l-22 65q31 18 77 28.5q46 10.5 98 10.5q64 0 119 -20q55 -20 95.5 -63.5q40.5 -43.5 63.5 -112.5q23 -69 23 -166q0 -98 -26 -167q-26 -69 -70.5 -112.5q-44.5 -43.5 -103 -63q-58.5 -19.5 -122.5 -19.5q-50 0 -88.5 7q-38.5 7 -65.5 18l22 73q23 -11 60 -17.5q37 -6.5 77 -6.5q40 0 80.5 12.5q40.5 12.5 73.5 43.5q33 31 55 81q22 50 26 122l-289 0z" />
-<glyph unicode="&#1070;" horiz-adv-x="893" d="M168 395h124q8 153 77 235q69 82 197 82q73 0 125 -26q52 -26 84 -73.5q32 -47.5 47 -114q15 -66.5 15 -148.5q0 -175 -67 -268.5q-67 -93.5 -204 -93.5q-69 0 -120 23.5q-51 23.5 -84.5 67q-33.5 43.5 -50.5 105q-17 61.5 -20 137.5l-123 0v-321h-83v700h83zM379 350q0 -58 10 -110q10 -52 32 -91.5q22 -39.5 57.5 -63q35.5 -23.5 87.5 -23.5q93 0 138 70q45 70 45 218q0 57 -9 109.5q-9 52.5 -30.5 92q-21.5 39.5 -56.5 63q-35 23.5 -87 23.5q-93 0 -140 -70.5t-47 -217.5z" />
-<glyph unicode="&#1071;" horiz-adv-x="569" d="M484 0h-83v305l-103 -22l-174 -283h-98l156 249l61 43q-36 8 -66.5 24.5q-30.5 16.5 -53 42q-22.5 25.5 -35 59.5q-12.5 34 -12.5 78q0 61 20.5 101.5q20.5 40.5 56 65q35.5 24.5 83 35q47.5 10.5 100.5 10.5q34 0 72.5 -3q38.5 -3 75.5 -12zM332 636q-33 0 -63 -6.5q-30 -6.5 -53.5 -22.5q-23.5 -16 -37.5 -43q-14 -27 -14 -68q0 -38 13.5 -65q13.5 -27 36.5 -44.5q23 -17.5 53.5 -25.5q30.5 -8 65.5 -8h68v277q-14 3 -29 4.5t-40 1.5z" />
-<glyph unicode="&#1072;" horiz-adv-x="496" d="M69 463q38 23 88.5 34q50.5 11 105.5 11q52 0 83.5 -14q31.5 -14 48 -36.5q16.5 -22.5 22 -49.5q5.5 -27 5.5 -54q0 -60 -3 -117q-3 -57 -3 -108q0 -37 3 -70q3 -33 11 -61l-59 0l-21 70h-5q-9 -14 -22.5 -27.5q-13.5 -13.5 -32.5 -24q-19 -10.5 -44 -17.5q-25 -7 -57 -7q-32 0 -59.5 10q-27.5 10 -47.5 28.5q-20 18.5 -31.5 44.5q-11.5 26 -11.5 59q0 44 18 73.5q18 29.5 50.5 47q32.5 17.5 78 25q45.5 7.5 100.5 7.5q14 0 27.5 0q13.5 0 27.5 -2q3 30 3 54q0 55 -22 77q-22 22 -80 22q-17 0 -36.5 -2.5q-19.5 -2.5 -40 -7q-20.5 -4.5 -39 -11q-18.5 -6.5 -32.5 -14.5zM211 62q28 0 50 7.5q22 7.5 38 19q16 11.5 26.5 25.5q10.5 14 15.5 27l0 83q-14 1 -28.5 1.5q-14.5 0.5 -28.5 0.5q-31 0 -60.5 -3.5q-29.5 -3.5 -52 -13q-22.5 -9.5 -36 -26q-13.5 -16.5 -13.5 -41.5q0 -35 25 -57.5t64 -22.5z" />
-<glyph unicode="&#1073;" horiz-adv-x="536" d="M123 411q33 48 73 67.5q40 19.5 100 19.5q92 0 141.5 -60q49.5 -60 49.5 -177q0 -135 -57.5 -204q-57.5 -69 -160.5 -69q-110 0 -165 76q-55 76 -55 239q0 86 8.5 147q8.5 61 25 103q16.5 42 40 67q23.5 25 53 39.5q29.5 14.5 64.5 20.5q35 6 75 10q52 5 81.5 11.5q29.5 6.5 47.5 23.5l9 -72q-10 -9 -22 -15q-12 -6 -29 -10q-17 -4 -40.5 -7q-23.5 -3 -54.5 -5q-43 -3 -75.5 -10.5q-32.5 -7.5 -56 -29q-23.5 -21.5 -37 -61q-13.5 -39.5 -18.5 -104.5zM132 249q0 -38 8 -73q8 -35 24.5 -61.5q16.5 -26.5 42.5 -41.5q26 -15 61 -15q69 0 102.5 49.5q33.5 49.5 33.5 146.5q0 38 -7 70q-7 32 -22 55.5q-15 23.5 -38 36q-23 12.5 -55 12.5q-78 1 -114 -45.5t-36 -133.5z" />
-<glyph unicode="&#1074;" horiz-adv-x="499" d="M77 499q35 2 73.5 5q38.5 3 95.5 3q99 0 142 -30.5q43 -30.5 43 -92.5q0 -35 -20.5 -68.5q-20.5 -33.5 -67.5 -49.5l0 -4q59 -11 83 -41q24 -30 24 -80q0 -78 -56 -113q-56 -35 -168 -35q-42 0 -78 2.5q-36 2.5 -71 5.5zM157 67q19 -2 37.5 -3q18.5 -1 43.5 -1q67 0 99.5 19q32.5 19 32.5 65q0 36 -27.5 58.5q-27.5 22.5 -97.5 22.5h-88zM255 289q18 0 35 6q17 6 30.5 16.5q13.5 10.5 22 24.5q8.5 14 8.5 30q0 40 -24 55.5q-24 15.5 -84 15.5q-32 0 -50.5 -1q-18.5 -1 -35.5 -2l0 -145z" />
-<glyph unicode="&#1075;" horiz-adv-x="369" d="M369 430h-212v-430h-80v500l292 0z" />
-<glyph unicode="&#1076;" horiz-adv-x="541" d="M519 -127h-54l-15 127h-376l-15 -127h-54v197h59q8 11 21 39.5q13 28.5 25.5 80q12.5 51.5 22 128q9.5 76.5 11.5 182.5l302 0v-430h73zM366 70v360h-150q-2 -42 -7 -91.5q-5 -49.5 -13.5 -99q-8.5 -49.5 -21.5 -93.5q-13 -44 -30 -76z" />
-<glyph unicode="&#1077;" horiz-adv-x="508" d="M442 40q-30 -24 -75.5 -38q-45.5 -14 -96.5 -14q-57 0 -99 18.5q-42 18.5 -69 53q-27 34.5 -40 82.5q-13 48 -13 108q0 128 57 195q57 67 163 67q34 0 68 -7.5q34 -7.5 61 -28.5q27 -21 44 -59.5q17 -38.5 17 -101.5q0 -33 -6 -73l-321 0q0 -44 9 -78q9 -34 28 -57.5q19 -23.5 49.5 -36q30.5 -12.5 74.5 -12.5q34 0 68 12q34 12 51 28zM270 442q-59 0 -94.5 -31q-35.5 -31 -42.5 -106l248 0q0 76 -29 106.5t-82 30.5z" />
-<glyph unicode="&#1078;" horiz-adv-x="659" d="M240 221l-147 -221h-92l158 229l34 30l-51 38l-130 203h85l138 -216h52v216h78v-226l47 14l139 212h84l-136 -203l-39 -32l51 -40l148 -225h-95l-147 225h-52v-225h-78l0 235z" />
-<glyph unicode="&#1079;" horiz-adv-x="441" d="M125 223v65h70q18 0 35.5 6q17.5 6 31.5 16.5q14 10.5 22.5 25q8.5 14.5 8.5 30.5q0 39 -27 55q-27 16 -81 16q-39 0 -71.5 -12q-32.5 -12 -50.5 -23l-23 62q30 17 70.5 30q40.5 13 96.5 13q166 0 166 -123q0 -35 -22.5 -68.5q-22.5 -33.5 -64.5 -47.5l0 -4q59 -11 82.5 -42q23.5 -31 23.5 -82q0 -32 -13 -59q-13 -27 -39 -47q-26 -20 -65.5 -31.5q-39.5 -11.5 -91.5 -11.5q-51 0 -84.5 9q-33.5 9 -60.5 22l23 66q23 -13 55.5 -20q32.5 -7 70.5 -7q61 0 93 21q32 21 32 64q0 36 -30 56.5q-30 20.5 -99 20.5z" />
-<glyph unicode="&#1080;" horiz-adv-x="546" d="M389 296l3 62h-3l-41 -64l-225 -294h-46v500h80v-305l-3 -59h4l39 62l225 302h47v-500l-80 0z" />
-<glyph unicode="&#1081;" horiz-adv-x="546" d="M389 296l3 62h-3l-41 -64l-225 -294h-46v500h80v-305l-3 -59h4l39 62l225 302h47v-500h-80zM192 702q10 -46 34.5 -64q24.5 -18 56.5 -18q32 0 57 19q25 19 34 62l60 -19q-9 -58 -51.5 -89q-42.5 -31 -101.5 -31q-27 0 -53.5 7q-26.5 7 -47.5 21q-21 14 -36 36q-15 22 -20 52z" />
-<glyph unicode="&#1082;" horiz-adv-x="478" d="M203 225h-46v-225h-80v500h80v-226l43 14l160 212h87l-155 -201l-42 -33l52 -40l167 -226l-99 0z" />
-<glyph unicode="&#1083;" horiz-adv-x="503" d="M346 430h-145q-3 -42 -6 -90.5q-3 -48.5 -9 -97q-6 -48.5 -16 -93q-10 -44.5 -25.5 -78.5q-15.5 -34 -38 -54.5q-22.5 -20.5 -53.5 -20.5q-19 0 -33 2q-14 2 -25 7l12 67q12 -4 26 -4q20 0 36 17q16 17 28 64.5q12 47.5 20 131.5q8 84 11 219l298 0v-500l-80 0z" />
-<glyph unicode="&#1084;" horiz-adv-x="645" d="M490 297l6 95h-5l-36 -77l-121 -196h-28l-126 196l-33 77h-4l8 -94v-298h-74v500h79l140 -224l29 -58h2l30 60l131 222h80v-500l-78 0z" />
-<glyph unicode="&#1085;" horiz-adv-x="540" d="M383 221h-226v-221h-80v500h80v-209h226v209h80v-500l-80 0z" />
-<glyph unicode="&#1086;" horiz-adv-x="536" d="M49 250q0 127 56.5 194.5q56.5 67.5 162.5 67.5q56 0 97.5 -18.5q41.5 -18.5 68.5 -53q27 -34.5 40 -83q13 -48.5 13 -107.5q0 -127 -56.5 -194.5q-56.5 -67.5 -162.5 -67.5q-56 0 -97.5 18.5q-41.5 18.5 -68.5 53q-27 34.5 -40 83q-13 48.5 -13 107.5zt0 0zM132 250q0 -38 7.5 -73q7.5 -35 23.5 -61q16 -26 42 -42q26 -16 63 -16q136 -1 136 192q0 39 -7.5 74q-7.5 35 -23.5 61q-16 26 -42 41.5q-26 15.5 -63 15.5q-136 1 -136 -192z" />
-<glyph unicode="&#1087;" horiz-adv-x="535" d="M378 430h-221v-430h-80v500h381v-500l-80 0z" />
-<glyph unicode="&#1088;" horiz-adv-x="541" d="M77 500h55l15 -60h4q23 35 59.5 53.5q36.5 18.5 83.5 18.5q100 0 149 -59q49 -59 49 -193q0 -63 -16.5 -113.5q-16.5 -50.5 -46.5 -85.5q-30 -35 -72.5 -54q-42.5 -19 -94.5 -19q-37 0 -58.5 4.5q-21.5 4.5 -46.5 15.5l0 -208h-80zM279 442q-51 0 -80.5 -26.5q-29.5 -26.5 -41.5 -80.5l0 -248q18 -14 41 -21.5q23 -7.5 61 -7.5q69 0 109.5 51.5q40.5 51.5 40.5 151.5q0 41 -7 74.5q-7 33.5 -22.5 57q-15.5 23.5 -40 36.5t-60.5 13z" />
-<glyph unicode="&#1089;" horiz-adv-x="451" d="M418 33q-30 -22 -71 -33.5q-41 -11.5 -86 -11.5q-58 0 -98 18.5q-40 18.5 -65.5 53q-25.5 34.5 -37 83q-11.5 48.5 -11.5 107.5q0 127 56 194.5q56 67.5 161 67.5q48 0 81.5 -7.5q33.5 -7.5 60.5 -21.5l-23 -69q-23 13 -51 20.5q-28 7.5 -60 7.5q-142 0 -142 -192q0 -38 7.5 -72.5q7.5 -34.5 25 -61q17.5 -26.5 46 -42.5q28.5 -16 70.5 -16q36 0 64.5 11q28.5 11 46.5 25z" />
-<glyph unicode="&#1090;" horiz-adv-x="398" d="M396 430h-157v-430h-80v430h-157v70l394 0z" />
-<glyph unicode="&#1091;" horiz-adv-x="466" d="M224 176l28 -96h5l22 97l97 323h81l-148 -449q-17 -49 -33.5 -95q-16.5 -46 -36.5 -82q-20 -36 -45 -57.5q-25 -21.5 -58 -21.5q-36 0 -59 10l14 69q13 -5 25 -5q28 0 54 29.5q26 29.5 43 101.5l-201 500l92 0z" />
-<glyph unicode="&#1092;" horiz-adv-x="680" d="M302 -4q-17 -6 -35.5 -7q-18.5 -1 -33.5 -1q-91 0 -140 64q-49 64 -49 198q0 128 54 193q54 65 156 65q28 0 48 -4l0 196h76v-197q18 3 32 4q14 1 27 1q99 0 149 -57.5q50 -57.5 50 -190.5q0 -63 -13.5 -113.5q-13.5 -50.5 -39.5 -85.5q-26 -35 -63.5 -54q-37.5 -19 -86.5 -19q-9 0 -26.5 1.5q-17.5 1.5 -28.5 5.5l0 -195h-76zM422 442q-12 0 -21.5 -0.5q-9.5 -0.5 -23.5 -4.5l0 -380q10 -2 22.5 -2.5q12.5 -0.5 27.5 -0.5q64 0 96.5 53q32.5 53 32.5 153q0 85 -29.5 133.5q-29.5 48.5 -104.5 48.5zt0 0zM253 54q12 0 24 1q12 1 26 4l0 379q-12 2 -22.5 3q-10.5 1 -25.5 1q-62 0 -96.5 -46.5q-34.5 -46.5 -34.5 -145.5q0 -42 7.5 -78q7.5 -36 23.5 -62.5q16 -26.5 40.5 -41t57.5 -14.5z" />
-<glyph unicode="&#1093;" horiz-adv-x="515" d="M208 256l-168 244h98l95 -138l28 -57l29 57l97 138h90l-169 -240l179 -260h-95l-106 152l-30 60l-31 -60l-108 -152l-89 0z" />
-<glyph unicode="&#1094;" horiz-adv-x="548" d="M526 -127h-54l-15 127h-380v500h80v-430h217v430h80v-430l72 0z" />
-<glyph unicode="&#1095;" horiz-adv-x="490" d="M129 500v-136q0 -27 3 -48.5q3 -21.5 12 -37q9 -15.5 26 -24q17 -8.5 45 -8.5q45 0 74 10q29 10 44 22l0 222h80v-500h-80v210q-16 -10 -47.5 -22q-31.5 -12 -86.5 -12q-37 0 -65 8q-28 8 -47 28q-19 20 -28.5 53q-9.5 33 -9.5 83l0 152z" />
-<glyph unicode="&#1096;" horiz-adv-x="736" d="M77 0v500h80v-430h171v430h80v-430h171v430h80l0 -500z" />
-<glyph unicode="&#1097;" horiz-adv-x="753" d="M731 -127h-54l-15 127h-585v500h80v-430h171v430h80v-430h171v430h80v-430l72 0z" />
-<glyph unicode="&#1098;" horiz-adv-x="497" d="M191 70q39 -6 70 -6q63 0 93 24.5q30 24.5 30 69.5q0 40 -29 66q-29 26 -91 26q-17 0 -36 -1q-19 -1 -37 -6zM191 309q24 4 45.5 5.5q21.5 1.5 41.5 1.5q52 0 88 -11.5q36 -11.5 58.5 -31.5q22.5 -20 32.5 -47.5q10 -27.5 10 -58.5q0 -91 -54.5 -132q-54.5 -41 -169.5 -41q-33 0 -65 1.5q-32 1.5 -67 4.5l0 430h-110v70l190 0z" />
-<glyph unicode="&#1099;" horiz-adv-x="660" d="M157 70q37 -6 71 -6q63 0 88 24.5q25 24.5 25 69.5q0 40 -24.5 66q-24.5 26 -85.5 26q-17 0 -37 -1q-20 -1 -37 -6zM157 309q24 4 46 5.5q22 1.5 42 1.5q51 0 85.5 -11.5q34.5 -11.5 55.5 -31.5q21 -20 29.5 -47.5q8.5 -27.5 8.5 -58.5q0 -91 -50.5 -132q-50.5 -41 -163.5 -41q-64 0 -133 6l0 500h80zM503 500h80v-500l-80 0z" />
-<glyph unicode="&#1100;" horiz-adv-x="464" d="M157 70q37 -6 71 -6q63 0 93 24.5q30 24.5 30 69.5q0 40 -29 66q-29 26 -91 26q-17 0 -37 -1q-20 -1 -37 -6zM157 309q24 4 46 5.5q22 1.5 42 1.5q52 0 88 -11.5q36 -11.5 58.5 -31.5q22.5 -20 32.5 -47.5q10 -27.5 10 -58.5q0 -91 -54.5 -132q-54.5 -41 -169.5 -41q-64 0 -133 6l0 500l80 0z" />
-<glyph unicode="&#1101;" horiz-adv-x="465" d="M121 285h212q-5 71 -41.5 114q-36.5 43 -103.5 43q-41 0 -71.5 -11q-30.5 -11 -49.5 -24l-28 61q31 21 71 32.5q40 11.5 93 11.5q111 0 162 -69q51 -69 51 -193q0 -128 -59 -195q-59 -67 -164 -67q-47 0 -86.5 7.5q-39.5 7.5 -66.5 22.5l23 68q23 -13 56.5 -20.5q33.5 -7.5 65.5 -7.5q140 -1 149 161l-213 0z" />
-<glyph unicode="&#1102;" horiz-adv-x="719" d="M465 -12q-54 0 -92.5 16.5q-38.5 16.5 -63 47q-24.5 30.5 -37 74q-12.5 43.5 -15.5 95.5l-100 0v-221h-80v500h80v-209h101q8 107 58.5 164q50.5 57 150.5 57q55 0 93.5 -18.5q38.5 -18.5 63 -53q24.5 -34.5 35.5 -83q11 -48.5 11 -107.5q0 -127 -50.5 -194.5q-50.5 -67.5 -154.5 -67.5zt0 0zM336 250q0 -39 6 -74q6 -35 21 -61.5q15 -26.5 40.5 -41.5q25.5 -15 63.5 -15q64 0 92 46.5q28 46.5 28 145.5q0 39 -5.5 74q-5.5 35 -19.5 61.5q-14 26.5 -37 41.5q-23 15 -59 15q-69 0 -99.5 -46.5t-30.5 -145.5z" />
-<glyph unicode="&#1103;" horiz-adv-x="475" d="M326 207l-77 -12l-132 -195h-97l120 171l40 37q-52 8 -88.5 42q-36.5 34 -36.5 92q0 45 15.5 77q15.5 32 44.5 53q29 21 69 30.5q40 9.5 90 9.5q37 0 69 -5q32 -5 63 -11l0 -496h-80zM326 432q-13 5 -29 7.5q-16 2.5 -28 2.5q-64 0 -97.5 -23q-33.5 -23 -33.5 -73q0 -45 35.5 -69.5q35.5 -24.5 93.5 -24.5q1 0 3 0q2 0 8 0q6 0 17 0.5q11 0.5 31 1.5z" />
-<glyph unicode="&#1105;" horiz-adv-x="508" d="M442 40q-30 -24 -75.5 -38q-45.5 -14 -96.5 -14q-57 0 -99 18.5q-42 18.5 -69 53q-27 34.5 -40 82.5q-13 48 -13 108q0 128 57 195q57 67 163 67q34 0 68 -7.5q34 -7.5 61 -28.5q27 -21 44 -59.5q17 -38.5 17 -101.5q0 -33 -6 -73l-321 0q0 -44 9 -78q9 -34 28 -57.5q19 -23.5 49.5 -36q30.5 -12.5 74.5 -12.5q34 0 68 12q34 12 51 28zM270 442q-59 0 -94.5 -31q-35.5 -31 -42.5 -106l248 0q0 76 -29 106.5q-29 30.5 -82 30.5zt0 0zM119 633q0 23 13.5 37q13.5 14 35.5 14q22 0 35.5 -14q13.5 -14 13.5 -37q0 -21 -13.5 -35q-13.5 -14 -35.5 -14q-22 0 -35.5 14q-13.5 14 -13.5 35zt0 0zM311 633q0 23 13.5 37q13.5 14 35.5 14q23 0 36.5 -14q13.5 -14 13.5 -37q0 -21 -13.5 -35q-13.5 -14 -36.5 -14q-22 0 -35.5 14t-13.5 35z" />
-<glyph unicode="&#1106;" horiz-adv-x="548" d="M-2 600h80v100h80v-100h160v-60h-160v-148h4q26 31 62.5 49.5q36.5 18.5 90.5 18.5q42 0 73 -9.5q31 -9.5 51.5 -33.5q20.5 -24 30 -64.5q9.5 -40.5 9.5 -102.5v-277q0 -93 -32 -139q-32 -46 -102 -46q-8 0 -15 0.5q-7 0.5 -15 1.5l0 68q28 0 44.5 8.5q16.5 8.5 25.5 26q9 17.5 11.5 44.5q2.5 27 2.5 63v232q0 39 -4.5 69q-4.5 30 -16.5 49.5q-12 19.5 -32.5 29.5q-20.5 10 -53.5 10q-47 0 -85 -30.5q-38 -30.5 -49 -78.5l0 -281h-80v540l-80 0z" />
-<glyph unicode="&#1107;" horiz-adv-x="369" d="M369 430h-212v-430h-80v500h292zM240 720h89v-21l-101 -128l-47 0z" />
-<glyph unicode="&#1108;" horiz-adv-x="472" d="M438 33q-30 -22 -73 -33.5q-43 -11.5 -88 -11.5q-58 0 -100.5 18.5q-42.5 18.5 -71 53q-28.5 34.5 -42.5 83q-14 48.5 -14 107.5q0 63 17 112q17 49 47.5 82q30.5 33 73.5 50.5q43 17.5 95 17.5q48 0 84 -7.5q36 -7.5 63 -21.5l-23 -69q-23 13 -53.5 20.5q-30.5 7.5 -62.5 7.5q-69 1 -110.5 -38.5q-41.5 -39.5 -49.5 -117.5l236 0v-66h-237q3 -33 14.5 -63q11.5 -30 32 -52q20.5 -22 50.5 -34.5q30 -12.5 72 -12.5q35 0 65.5 11q30.5 11 48.5 25z" />
-<glyph unicode="&#1109;" horiz-adv-x="421" d="M297 136q0 30 -18 47q-18 17 -44.5 28.5q-26.5 11.5 -58 22q-31.5 10.5 -58 27q-26.5 16.5 -44.5 42.5q-18 26 -18 70q0 72 41 105.5q41 33.5 114 33.5q54 0 90.5 -9.5q36.5 -9.5 63.5 -22.5l-19 -66q-23 11 -55.5 19.5q-32.5 8.5 -69.5 8.5q-44 0 -64.5 -15q-20.5 -15 -20.5 -52q0 -26 18 -40.5q18 -14.5 44.5 -26q26.5 -11.5 58 -22.5q31.5 -11 58 -29q26.5 -18 44.5 -45.5q18 -27.5 18 -72.5q0 -32 -10.5 -60q-10.5 -28 -32.5 -48q-22 -20 -54.5 -31.5q-32.5 -11.5 -76.5 -11.5q-57 0 -97 11q-40 11 -67 26l24 68q23 -13 60 -24q37 -11 75 -11q43 0 71 17t28 61z" />
-<glyph unicode="&#1110;" horiz-adv-x="268" d="M94 500h80v-500h-80zM77 652q0 23 15.5 39.5q15.5 16.5 39.5 16.5q24 0 41 -16.5q17 -16.5 17 -39.5q0 -23 -17 -38q-17 -15 -41 -15q-24 0 -39.5 15t-15.5 38z" />
-<glyph unicode="&#1111;" horiz-adv-x="278" d="M29 653q0 23 12.5 36.5q12.5 13.5 35.5 13.5q22 0 35 -13.5q13 -13.5 13 -36.5q0 -21 -13 -35q-13 -14 -35 -14q-23 0 -35.5 14q-12.5 14 -12.5 35zt0 0zM154 653q0 23 12.5 36.5q12.5 13.5 34.5 13.5q23 0 36 -13.5q13 -13.5 13 -36.5q0 -21 -13 -35q-13 -14 -36 -14q-22 0 -34.5 14q-12.5 14 -12.5 35zt0 0zM98 500h80v-500l-80 0z" />
-<glyph unicode="&#1112;" horiz-adv-x="267" d="M93 500h80v-527q0 -93 -32 -139q-32 -46 -102 -46q-8 0 -15 0.5q-7 0.5 -15 1.5l0 68q28 0 44.5 8.5q16.5 8.5 25.5 26.5q9 18 11.5 45.5q2.5 27.5 2.5 64.5zM76 652q0 23 15.5 39.5q15.5 16.5 39.5 16.5q24 0 41 -16.5q17 -16.5 17 -39.5q0 -23 -17 -38q-17 -15 -41 -15q-24 0 -39.5 15t-15.5 38z" />
-<glyph unicode="&#1113;" horiz-adv-x="733" d="M426 309q24 4 46 5.5q22 1.5 42 1.5q52 0 88 -11.5q36 -11.5 58.5 -31.5q22.5 -20 32.5 -47.5q10 -27.5 10 -58.5q0 -91 -54.5 -132q-54.5 -41 -169.5 -41q-64 0 -133 6l0 430h-145q-3 -42 -6 -90.5q-3 -48.5 -9 -97q-6 -48.5 -16 -93q-10 -44.5 -25.5 -78.5q-15.5 -34 -38 -54.5q-22.5 -20.5 -53.5 -20.5q-19 0 -33 2q-14 2 -25 7l12 67q12 -4 26 -4q20 0 36 17q16 17 28 64.5q12 47.5 20 131.5q8 84 11 219l298 0zM426 69q37 -6 71 -6q63 0 93 25q30 25 30 70q0 40 -29 66q-29 26 -91 26q-17 0 -37 -1q-20 -1 -37 -6z" />
-<glyph unicode="&#1114;" horiz-adv-x="770" d="M463 70q37 -6 71 -6q63 0 93 24.5q30 24.5 30 69.5q0 40 -29 66q-29 26 -91 26q-17 0 -36.5 -1.5q-19.5 -1.5 -37.5 -5.5zM463 309q24 4 46 5.5q22 1.5 42 1.5q52 0 88 -11.5q36 -11.5 58.5 -31.5q22.5 -20 32.5 -47.5q10 -27.5 10 -58.5q0 -91 -54.5 -132q-54.5 -41 -169.5 -41q-64 0 -133 6l0 223h-226v-223h-80v500h80v-207h226v207l80 0z" />
-<glyph unicode="&#1115;" horiz-adv-x="548" d="M-2 600h80v100h80v-100h160v-60h-160v-148h4q26 31 62.5 49.5q36.5 18.5 90.5 18.5q42 0 73 -9.5q31 -9.5 51.5 -33.5q20.5 -24 30 -64.5q9.5 -40.5 9.5 -102.5v-250h-80v232q0 39 -4.5 69q-4.5 30 -16.5 49.5q-12 19.5 -32.5 29.5q-20.5 10 -53.5 10q-47 0 -85 -30.5q-38 -30.5 -49 -78.5l0 -281h-80v540l-80 0z" />
-<glyph unicode="&#1116;" horiz-adv-x="478" d="M203 225h-46v-225h-80v500h80v-226l43 14l160 212h87l-155 -201l-42 -33l52 -40l167 -226h-99zM256 720h89v-21l-101 -128l-47 0z" />
-<glyph unicode="&#1118;" horiz-adv-x="466" d="M224 176l28 -96h5l22 97l97 323h81l-148 -449q-17 -49 -33.5 -95q-16.5 -46 -36.5 -82q-20 -36 -45 -57.5q-25 -21.5 -58 -21.5q-36 0 -59 10l14 69q13 -5 25 -5q28 0 54 29.5q26 29.5 43 101.5l-201 500h92zM157 702q10 -46 34.5 -64q24.5 -18 56.5 -18q32 0 57 19q25 19 34 62l60 -19q-9 -58 -51.5 -89q-42.5 -31 -101.5 -31q-27 0 -53.5 7q-26.5 7 -47.5 21q-21 14 -36 36q-15 22 -20 52z" />
-<glyph unicode="&#1119;" horiz-adv-x="535" d="M77 0v500h80v-430h221v430h80v-500h-146l-15 -179h-52l-20 179z" />
-<glyph unicode="&#1122;" horiz-adv-x="619" d="M0 620h149v101h83v-101h207v-70h-207v-123q5 1 17 2.5q12 1.5 26 2.5q14 1 29 2q15 1 27 1q48 0 93.5 -9.5q45.5 -9.5 81 -33q35.5 -23.5 57.5 -64q22 -40.5 22 -102.5q0 -60 -21 -104q-21 -44 -58 -73q-37 -29 -86.5 -43q-49.5 -14 -107.5 -14q-14 0 -34 0.5q-20 0.5 -42.5 2q-22.5 1.5 -45 4.5q-22.5 3 -41.5 8l0 543h-149zM323 64q36 0 67.5 9.5q31.5 9.5 55.5 29q24 19.5 37.5 49q13.5 29.5 13.5 68.5q0 42 -15 70q-15 28 -39.5 44q-24.5 16 -56.5 22.5q-32 6.5 -66 6.5q-9 0 -22 -1q-13 -1 -26 -2q-13 -1 -24 -3q-11 -2 -16 -3l0 -284q14 -3 40 -4.5t51 -1.5z" />
-<glyph unicode="&#1123;" horiz-adv-x="497" d="M1 500h109v200h80v-200h160v-66h-160v-125q24 4 46 5.5q22 1.5 42 1.5q52 0 88 -11.5q36 -11.5 58.5 -31.5q22.5 -20 32.5 -47.5q10 -27.5 10 -58.5q0 -91 -54.5 -132q-54.5 -41 -169.5 -41q-64 0 -133 6l0 434h-109zM190 70q39 -6 71 -6q63 0 93 24.5q30 24.5 30 69.5q0 40 -29 66q-29 26 -91 26q-17 0 -36.5 -1q-19.5 -1 -37.5 -6z" />
-<glyph unicode="&#1138;" horiz-adv-x="684" d="M56 350q0 175 74 268.5q74 93.5 211 93.5q74 0 128 -26q54 -26 89.5 -73.5q35.5 -47.5 52.5 -114q17 -66.5 17 -148.5q0 -175 -74.5 -268.5q-74.5 -93.5 -212.5 -93.5q-73 0 -126.5 26q-53.5 26 -89 73.5q-35.5 47.5 -52.5 114q-17 66.5 -17 148.5zt0 0zM540 392q-8 119 -62.5 182.5q-54.5 63.5 -136.5 63.5q-36 0 -70 -12.5q-34 -12.5 -61 -41.5q-27 -29 -44.5 -76q-17.5 -47 -21.5 -116zM144 318q8 -129 62.5 -192.5q54.5 -63.5 134.5 -63.5q37 0 72 12q35 12 62 41.5q27 29.5 44.5 78.5q17.5 49 20.5 124z" />
-<glyph unicode="&#1139;" horiz-adv-x="536" d="M49 250q0 127 56.5 194.5q56.5 67.5 162.5 67.5q56 0 97.5 -18.5q41.5 -18.5 68.5 -53q27 -34.5 40 -83q13 -48.5 13 -107.5q0 -127 -56.5 -194.5q-56.5 -67.5 -162.5 -67.5q-56 0 -97.5 18.5q-41.5 18.5 -68.5 53q-27 34.5 -40 83q-13 48.5 -13 107.5zt0 0zM404 281q-8 85 -43.5 123q-35.5 38 -92.5 38q-26 0 -49.5 -8q-23.5 -8 -42 -27q-18.5 -19 -30.5 -50q-12 -31 -14 -76zM132 217q5 -78 43 -118.5q38 -40.5 93 -40.5q25 0 48.5 8q23.5 8 42 26q18.5 18 30.5 48.5q12 30.5 15 76.5z" />
-<glyph unicode="&#1140;" horiz-adv-x="598" d="M304 -11h-37l-269 711h90l178 -481l24 -106h2l16 108q19 66 39.5 132.5q20.5 66.5 41.5 138.5q23 78 43.5 121.5q20.5 43.5 41.5 64q21 20.5 43 25q22 4.5 48 4.5q35 0 55 -5.5q20 -5.5 37 -16.5l-24 -70q-20 11 -37.5 14.5q-17.5 3.5 -31.5 3.5q-28 0 -47 -26q-19 -26 -39 -87z" />
-<glyph unicode="&#1141;" horiz-adv-x="507" d="M261 -11h-34l-217 511h92l120 -293l28 -95h1l25 97q14 36 22.5 57q8.5 21 13 33q4.5 12 6.5 17q2 5 4 9q16 43 30 76.5q14 33.5 30.5 57q16.5 23.5 38 36q21.5 12.5 51.5 12.5q18 0 32 -2q14 -2 26 -7v-74q-21 4 -29.5 6.5q-8.5 2.5 -16.5 2.5q-17 0 -34 -15q-17 -15 -37 -62z" />
-<glyph unicode="&#1162;" horiz-adv-x="690" d="M513 474l6 80h-4l-43 -82l-338 -472h-49v700h83v-480l-7 -79h4l44 82l338 477h49v-630h104v-22l-91 -178h-54l45 130h-87zM256 870q4 -37 28 -57q24 -20 64 -20q40 0 63.5 20q23.5 20 28.5 56l71 -17q-11 -54 -50.5 -85.5q-39.5 -31.5 -113.5 -31.5q-71 0 -116.5 27.5q-45.5 27.5 -53.5 87.5z" />
-<glyph unicode="&#1163;" horiz-adv-x="561" d="M389 296l3 62h-3l-41 -64l-225 -294h-46v500h80v-305l-3 -59h4l39 62l225 302h47v-430h100v-22l-91 -175h-54l45 127h-80zM192 702q10 -46 34.5 -64q24.5 -18 56.5 -18q32 0 57 19q25 19 34 62l60 -19q-9 -58 -51.5 -89q-42.5 -31 -101.5 -31q-27 0 -53.5 7q-26.5 7 -47.5 21q-21 14 -36 36q-15 22 -20 52z" />
-<glyph unicode="&#1164;" horiz-adv-x="619" d="M0 620h149v101h83v-101h207v-70h-207v-123q5 1 17 2.5q12 1.5 26 2.5q14 1 29 2q15 1 27 1q48 0 93.5 -9.5q45.5 -9.5 81 -33q35.5 -23.5 57.5 -64q22 -40.5 22 -102.5q0 -60 -21 -104q-21 -44 -58 -73q-37 -29 -86.5 -43q-49.5 -14 -107.5 -14q-14 0 -34 0.5q-20 0.5 -42.5 2q-22.5 1.5 -45 4.5q-22.5 3 -41.5 8l0 543h-149zM323 64q36 0 67.5 9.5q31.5 9.5 55.5 29q24 19.5 37.5 49q13.5 29.5 13.5 68.5q0 42 -15 70q-15 28 -39.5 44q-24.5 16 -56.5 22.5q-32 6.5 -66 6.5q-9 0 -22 -1q-13 -1 -26 -2q-13 -1 -24 -3q-11 -2 -16 -3l0 -284q14 -3 40 -4.5t51 -1.5z" />
-<glyph unicode="&#1165;" horiz-adv-x="497" d="M1 500h109v200h80v-200h160v-66h-160v-125q24 4 46 5.5q22 1.5 42 1.5q52 0 88 -11.5q36 -11.5 58.5 -31.5q22.5 -20 32.5 -47.5q10 -27.5 10 -58.5q0 -91 -54.5 -132q-54.5 -41 -169.5 -41q-64 0 -133 6l0 434h-109zM190 70q39 -6 71 -6q63 0 93 24.5q30 24.5 30 69.5q0 40 -29 66q-29 26 -91 26q-17 0 -36.5 -1q-19.5 -1 -37.5 -6z" />
-<glyph unicode="&#1166;" horiz-adv-x="559" d="M85 693q38 9 82 12q44 3 87 3q46 0 93.5 -9q47.5 -9 86.5 -33q39 -24 63.5 -66q24.5 -42 24.5 -107q0 -75 -31.5 -123q-31.5 -48 -81.5 -74l68 -98l-46 -33l-77 110q-48 -13 -104 -13q-5 0 -16.5 0q-11.5 0 -24 0.5q-12.5 0.5 -24.5 1.5q-12 1 -17 2l0 -266h-83zM291 462l71 -103q32 17 52 48.5q20 31.5 20 85.5q0 41 -15.5 68.5q-15.5 27.5 -41 44q-25.5 16.5 -57.5 23.5q-32 7 -64 7q-26 0 -50 -1q-24 -1 -38 -5l0 -290q5 -2 16 -2.5q11 -0.5 23 -1q12 -0.5 23 -0.5q11 0 16 0q17 0 33 1q16 1 33 5l-64 93z" />
-<glyph unicode="&#1167;" horiz-adv-x="541" d="M77 500h55l15 -60h4q23 35 59.5 53.5q36.5 18.5 83.5 18.5q100 0 149 -59q49 -59 49 -193q0 -75 -22 -131q-22 -56 -63 -91l53 -62l-42 -37l-59 69q-43 -20 -97 -20q-37 0 -58.5 4.5q-21.5 4.5 -46.5 15.5l0 -208h-80zM297 163l58 -69q26 26 40 67.5q14 41.5 14 99.5q0 41 -7 74.5q-7 33.5 -22.5 57.5q-15.5 24 -40 36.5q-24.5 12.5 -60.5 12.5q-51 0 -80.5 -26.5q-29.5 -26.5 -41.5 -80.5l0 -249q18 -14 41 -21q23 -7 61 -7q31 -1 54 9l-55 65z" />
-<glyph unicode="&#1168;" horiz-adv-x="442" d="M460 626h-292v-626h-83v700h303l16 134l56 0z" />
-<glyph unicode="&#1169;" horiz-adv-x="369" d="M157 430v-430h-80v500h220l16 134h56l0 -204z" />
-<glyph unicode="&#1170;" horiz-adv-x="482" d="M481 626h-292v-241h215v-66h-215v-319h-83v319h-96v66h96v315l375 0z" />
-<glyph unicode="&#1171;" horiz-adv-x="385" d="M382 430h-212v-151h169v-60h-169v-219h-80v219h-90v60h90v221l292 0z" />
-<glyph unicode="&#1172;" horiz-adv-x="577" d="M168 0h-83v700h375v-74h-292v-271q12 4 47.5 12.5q35.5 8.5 90.5 8.5q40 0 78.5 -11q38.5 -11 69 -38q30.5 -27 49 -73.5q18.5 -46.5 18.5 -117.5q0 -137 -60.5 -200.5q-60.5 -63.5 -172.5 -63.5q-33 0 -47.5 0.5q-14.5 0.5 -22.5 2.5l0 74q13 -2 28.5 -2.5q15.5 -0.5 44.5 -0.5q142 0 142 183q0 51 -12 84.5q-12 33.5 -32.5 54q-20.5 20.5 -48 28.5q-27.5 8 -59.5 8q-18 0 -35.5 -2.5q-17.5 -2.5 -33 -6q-15.5 -3.5 -27 -7.5q-11.5 -4 -17.5 -6z" />
-<glyph unicode="&#1173;" horiz-adv-x="535" d="M157 0h-80v500h291v-70h-211v-178q11 5 41 13q30 8 84 8q40 0 76 -11.5q36 -11.5 63 -38q27 -26.5 43 -70q16 -43.5 16 -108.5q0 -131 -52.5 -192.5q-52.5 -61.5 -164.5 -61.5q-33 0 -47.5 0.5q-14.5 0.5 -22.5 2.5l0 70q13 -2 28.5 -2.5q15.5 -0.5 44.5 -0.5q70 0 102 45.5q32 45.5 32 128.5q0 89 -39 128.5q-39 39.5 -101 39.5q-36 0 -64 -8q-28 -8 -39 -13z" />
-<glyph unicode="&#1174;" horiz-adv-x="819" d="M358 700h80v-326l43 14l203 312h92l-202 -304l-40 -32l50 -41l172 -249h58v-203h-58l-15 129h-36l-221 324h-46v-324h-80v336l-42 -14l-221 -322h-96l221 313l48 38l-46 35l-209 314h97l203 -314l45 0z" />
-<glyph unicode="&#1175;" horiz-adv-x="693" d="M240 221l-147 -221h-92l158 229l34 30l-51 38l-130 203h85l138 -216h52v216h78v-226l47 14l139 212h84l-136 -203l-39 -32l51 -40l102 -155h75v-197h-54l-15 127h-55l-147 225h-52v-225h-78l0 235z" />
-<glyph unicode="&#1176;" horiz-adv-x="541" d="M139 331v70h16q9 0 22 0q13 0 26.5 1q13.5 1 26 1.5q12.5 0.5 20.5 2.5q26 4 49 13.5q23 9.5 40 24.5q17 15 27 35q10 20 10 44q0 33 -11 55q-11 22 -30.5 35.5q-19.5 13.5 -45 19q-25.5 5.5 -54.5 5.5q-54 0 -92 -7.5q-38 -7.5 -61 -18.5l-22 66q20 11 72 22.5q52 11.5 117 11.5q40 0 78.5 -8.5q38.5 -8.5 69 -28q30.5 -19.5 49 -53q18.5 -33.5 18.5 -82.5q0 -50 -33 -95.5q-33 -45.5 -99 -65.5l0 -4q71 -10 112 -53q41 -43 41 -115q0 -52 -18.5 -90.5q-18.5 -38.5 -49 -65q-30.5 -26.5 -71 -42q-40.5 -15.5 -84.5 -19.5l-14 -169h-52l-19 168q-46 2 -78 9q-32 7 -55 16l21 75q23 -11 64.5 -18.5q41.5 -7.5 100.5 -7.5q31 0 61 8.5q30 8.5 53.5 25.5q23.5 17 38 43q14.5 26 14.5 62q0 63 -44 92.5q-44 29.5 -115 34.5q-12 1 -22.5 1.5q-10.5 0.5 -21.5 0.5z" />
-<glyph unicode="&#1177;" horiz-adv-x="441" d="M125 223v65h70q18 0 35.5 6q17.5 6 31.5 16.5q14 10.5 22.5 25q8.5 14.5 8.5 30.5q0 39 -27 55q-27 16 -81 16q-39 0 -71.5 -12q-32.5 -12 -50.5 -23l-23 62q30 17 70.5 30q40.5 13 96.5 13q166 0 166 -123q0 -35 -22.5 -68.5q-22.5 -33.5 -64.5 -47.5l0 -4q59 -11 82.5 -42q23.5 -31 23.5 -82q0 -54 -37.5 -93.5q-37.5 -39.5 -113.5 -51.5l-14 -174h-52l-19 171q-40 2 -67.5 10.5q-27.5 8.5 -50.5 19.5v66q46 -13 78.5 -20q32.5 -7 70.5 -7q61 0 93 21q32 21 32 64q0 36 -30 56.5q-30 20.5 -99 20.5z" />
-<glyph unicode="&#1178;" horiz-adv-x="615" d="M215 324h-47v-324h-83v700h83v-326l45 14l235 312h96l-234 -301l-42 -33l51 -40l198 -252h89v-203h-58l-15 129l-63 0z" />
-<glyph unicode="&#1179;" horiz-adv-x="506" d="M203 225h-46v-225h-80v500h80v-226l43 14l160 212h87l-155 -201l-42 -33l52 -40l115 -156h79v-197h-54l-15 127l-57 0z" />
-<glyph unicode="&#1180;" horiz-adv-x="685" d="M222 324h-54v-324h-83v700h83v-326l54 5v126h66v-119l23 2l214 312h95l-216 -301l-41 -33l50 -40l237 -326h-104l-232 324h-26v-129l-66 0z" />
-<glyph unicode="&#1181;" horiz-adv-x="538" d="M205 225h-48v-225h-80v500h80v-226l48 5v123h63v-117l26 3l131 212h84l-126 -201l-44 -33l52 -40l138 -226h-94l-138 225h-29v-127l-63 0z" />
-<glyph unicode="&#1182;" horiz-adv-x="664" d="M0 636h139v64h83v-64h122v-66h-122v-196l49 14l232 312h95l-231 -301l-44 -33l52 -40l254 -326h-106l-252 324h-49v-324h-83v568l-139 0z" />
-<glyph unicode="&#1183;" horiz-adv-x="481" d="M-2 613h81v87h80v-87h159v-60h-159v-279l41 14l155 212h93l-153 -201l-41 -33l50 -40l167 -226h-99l-167 225h-46v-225h-80v553l-81 0z" />
-<glyph unicode="&#1184;" horiz-adv-x="685" d="M161 626h-161v74h244v-326l44 14l235 312h97l-235 -301l-41 -33l50 -40l257 -326h-106l-255 324h-46v-324l-83 0z" />
-<glyph unicode="&#1185;" horiz-adv-x="512" d="M191 274l42 14l161 212h86l-155 -201l-41 -33l52 -40l167 -226h-99l-167 225h-46v-225h-80v430h-110v70l190 0z" />
-<glyph unicode="&#1186;" horiz-adv-x="707" d="M504 321h-336v-321h-83v700h83v-305h336v305h83v-626h92v-203h-58l-15 129l-102 0z" />
-<glyph unicode="&#1187;" horiz-adv-x="546" d="M383 221h-226v-221h-80v500h80v-209h226v209h80v-430h73v-197h-54l-15 127l-84 0z" />
-<glyph unicode="&#1188;" horiz-adv-x="861" d="M879 626h-292v-626h-83v321h-336v-321h-83v700h83v-305h336v305l375 0z" />
-<glyph unicode="&#1189;" horiz-adv-x="675" d="M675 430h-212v-430h-80v221h-226v-221h-80v500h80v-209h226v209l292 0z" />
-<glyph unicode="&#1190;" horiz-adv-x="983" d="M574 0h-83v626h-323v-626h-83v700h489v-345q11 4 47 12.5q36 8.5 91 8.5q40 0 79 -11q39 -11 69.5 -38q30.5 -27 49 -73.5q18.5 -46.5 18.5 -117.5q0 -137 -61 -200.5q-61 -63.5 -173 -63.5q-33 0 -47.5 0.5q-14.5 0.5 -22.5 2.5l0 74q13 -2 28.5 -2.5q15.5 -0.5 44.5 -0.5q70 0 106.5 45.5q36.5 45.5 36.5 137.5q0 51 -12 84.5q-12 33.5 -32.5 54q-20.5 20.5 -48.5 28.5q-28 8 -59 8q-18 0 -36 -2.5q-18 -2.5 -33.5 -6q-15.5 -3.5 -27.5 -7.5q-12 -4 -17 -6z" />
-<glyph unicode="&#1191;" horiz-adv-x="836" d="M458 0h-80v430h-221v-430h-80v500h381v-248q11 5 41 13q30 8 84 8q39 0 74.5 -11.5q35.5 -11.5 63 -38q27.5 -26.5 43.5 -70q16 -43.5 16 -108.5q0 -131 -52 -192.5q-52 -61.5 -164 -61.5q-33 0 -47.5 0.5q-14.5 0.5 -22.5 2.5l0 70q13 -2 28.5 -2.5q15.5 -0.5 44.5 -0.5q70 0 101.5 45.5q31.5 45.5 31.5 128.5q0 89 -38.5 128.5q-38.5 39.5 -100.5 39.5q-36 0 -64 -8q-28 -8 -39 -13z" />
-<glyph unicode="&#1192;" horiz-adv-x="811" d="M353 638q-47 0 -85 -17.5q-38 -17.5 -66 -53q-28 -35.5 -43 -89.5q-15 -54 -15 -127q0 -59 17 -112q17 -53 47.5 -93q30.5 -40 72.5 -64q42 -24 93 -24q11 0 24.5 1q13.5 1 23.5 5q-32 19 -57 51q-25 32 -42.5 71.5q-17.5 39.5 -27 84.5q-9.5 45 -9.5 91q0 78 18 137q18 59 49 99.5q31 40.5 73 61q42 20.5 91 20.5q111 0 168 -74.5q57 -74.5 57 -207.5q0 -62 -12.5 -115q-12.5 -53 -34 -96.5q-21.5 -43.5 -50 -75.5q-28.5 -32 -60.5 -51q5 -1 10.5 -1q5.5 0 10.5 0q38 0 67 8q29 8 48 22l25 -65q-19 -15 -47 -25.5q-28 -10.5 -81 -10.5q-32 0 -64 8q-32 8 -54 22q-26 -15 -58.5 -22.5q-32.5 -7.5 -67.5 -7.5q-74 0 -133 26q-59 26 -100 73q-41 47 -63 114q-22 67 -22 149q0 87 20.5 154.5q20.5 67.5 58.5 113.5q38 46 93.5 70q55.5 24 124.5 24zM374 354q0 -35 8.5 -73.5q8.5 -38.5 25 -75q16.5 -36.5 41.5 -67.5q25 -31 59 -50q27 15 53 42.5q26 27.5 46.5 66.5q20.5 39 33.5 88q13 49 13 107q0 45 -7.5 84q-7.5 39 -23 68q-15.5 29 -41 45.5q-25.5 16.5 -61.5 16.5q-29 0 -55.5 -14.5q-26.5 -14.5 -46.5 -45q-20 -30.5 -32.5 -78.5t-12.5 -114z" />
-<glyph unicode="&#1193;" horiz-adv-x="660" d="M269 442q-137 -1 -137 -191q0 -39 9.5 -74q9.5 -35 29.5 -62q20 -27 49.5 -42q29.5 -15 70.5 -15q11 0 25.5 2q14.5 2 24.5 8q-36 22 -61 72q-25 50 -25 113q0 44 8.5 88q8.5 44 29 79.5q20.5 35.5 55.5 57.5q35 22 88 22q46 0 78.5 -17q32.5 -17 53 -46q20.5 -29 30 -68q9.5 -39 9.5 -84q0 -40 -10 -76q-10 -36 -26.5 -65.5q-16.5 -29.5 -38 -51q-21.5 -21.5 -43.5 -31.5q15 -7 38 -7q20 0 41 7.5q21 7.5 38 25.5l25 -60q-18 -17 -48.5 -28q-30.5 -11 -66.5 -11q-28 0 -56.5 9q-28.5 9 -46.5 27q-30 -21 -66 -28.5q-36 -7.5 -68 -7.5q-55 0 -98 18.5q-43 18.5 -72 53q-29 34.5 -44.5 83q-15.5 48.5 -15.5 107.5q0 125 55.5 193q55.5 68 164.5 69zM338 256q0 -57 22.5 -104.5q22.5 -47.5 60.5 -73.5q21 10 39.5 29.5q18.5 19.5 32.5 46.5q14 27 22.5 60q8.5 33 8.5 71q0 27 -5.5 53q-5.5 26 -16.5 46.5q-11 20.5 -27.5 33q-16.5 12.5 -39.5 12.5q-30 0 -49 -15q-19 -15 -29.5 -39.5q-10.5 -24.5 -14.5 -56t-4 -63.5z" />
-<glyph unicode="&#1194;" horiz-adv-x="571" d="M533 29q-26 -20 -63 -29q-37 -9 -80 -11l-14 -168h-52l-19 172q-53 8 -98.5 33q-45.5 25 -79 69q-33.5 44 -52.5 107.5q-19 63.5 -19 147.5q0 98 26.5 166.5q26.5 68.5 70 112q43.5 43.5 97.5 63.5q54 20 110 20q60 0 98 -6.5q38 -6.5 65 -17.5l-20 -73q-48 23 -137 23q-41 0 -81 -15q-40 -15 -71.5 -49q-31.5 -34 -50.5 -89q-19 -55 -19 -135q0 -72 18 -126q18 -54 49.5 -90q31.5 -36 74 -53.5q42.5 -17.5 92.5 -17.5q45 0 78.5 8.5q33.5 8.5 56.5 22.5z" />
-<glyph unicode="&#1195;" horiz-adv-x="451" d="M418 33q-44 -32 -109 -41l-14 -171h-52l-19 169q-48 6 -81 27q-33 21 -54 54.5q-21 33.5 -30.5 79q-9.5 45.5 -9.5 99.5q0 127 56 194.5q56 67.5 161 67.5q48 0 81.5 -7.5q33.5 -7.5 60.5 -21.5l-23 -69q-23 13 -51 20.5q-28 7.5 -60 7.5q-142 0 -142 -192q0 -38 7.5 -72.5q7.5 -34.5 25 -61q17.5 -26.5 46 -42.5q28.5 -16 70.5 -16q36 0 64.5 11q28.5 11 46.5 25z" />
-<glyph unicode="&#1196;" horiz-adv-x="555" d="M236 626h-218v74h519v-74h-218v-552h92v-203h-58l-15 129l-102 0z" />
-<glyph unicode="&#1197;" horiz-adv-x="398" d="M159 430h-157v70h394v-70h-157v-360h74v-197h-54l-15 127l-85 0z" />
-<glyph unicode="&#1198;" horiz-adv-x="558" d="M239 278l-231 422h97l164 -306l17 -61h1l18 63l157 304h89l-229 -421v-279l-83 0z" />
-<glyph unicode="&#1199;" horiz-adv-x="484" d="M10 500h92l122 -324l28 -106h1l25 108l110 322h86l-187 -500v-200h-80l0 200z" />
-<glyph unicode="&#1200;" horiz-adv-x="558" d="M89 285h146l-227 415h97l164 -306l17 -61h1l18 63l157 304h89l-225 -415h146v-62h-150v-223h-83v223l-150 0z" />
-<glyph unicode="&#1201;" horiz-adv-x="484" d="M84 0h123l-197 500h92l122 -324l28 -106h1l25 108l110 322h86l-187 -500h117v-60h-117v-140h-80v140l-123 0z" />
-<glyph unicode="&#1202;" horiz-adv-x="648" d="M259 356l-213 344h100l142 -237l25 -57l24 57l150 237h92l-220 -337l183 -289h97v-203h-58l-15 129h-74l-158 251l-27 60l-26 -60l-162 -251l-93 0z" />
-<glyph unicode="&#1203;" horiz-adv-x="525" d="M208 256l-168 244h98l95 -138l28 -57l29 57l97 138h90l-169 -240l131 -190h76v-197h-54l-15 127h-54l-106 152l-30 60l-31 -60l-108 -152l-89 0z" />
-<glyph unicode="&#1204;" horiz-adv-x="838" d="M809 -129h-57l-15 129h-501v626h-218v74h483v-74h-182v-552h315v626h83v-626l92 0z" />
-<glyph unicode="&#1205;" horiz-adv-x="631" d="M608 -127h-54l-15 127h-380v430h-157v70h387v-70h-150v-360h217v430h80v-430l72 0z" />
-<glyph unicode="&#1206;" horiz-adv-x="639" d="M437 302q-27 -15 -71 -30q-44 -15 -101 -15q-42 0 -77 9.5q-35 9.5 -60 32q-25 22.5 -39 60.5q-14 38 -14 94v247h83v-232q0 -137 124 -137q47 0 88 12.5q41 12.5 67 33.5l0 323h83v-626h92v-203h-58l-15 129l-102 0z" />
-<glyph unicode="&#1207;" horiz-adv-x="509" d="M333 210q-16 -10 -47.5 -22q-31.5 -12 -86.5 -12q-37 0 -65 8q-28 8 -47 28q-19 20 -28.5 53q-9.5 33 -9.5 83v152h80v-136q0 -27 3 -48.5q3 -21.5 12 -37.5q9 -16 26 -24q17 -8 45 -8q45 0 74 10q29 10 44 22l0 222h80v-430h74v-197h-54l-15 127l-85 0z" />
-<glyph unicode="&#1208;" horiz-adv-x="613" d="M271 257q-45 0 -81.5 9.5q-36.5 9.5 -62 32q-25.5 22.5 -39 60.5q-13.5 38 -13.5 94v247h83v-232q0 -131 113 -137l0 124h66v-120q32 5 60 16q28 11 48 26l0 323h83v-700h-83v302q-19 -11 -46.5 -21q-27.5 -10 -61.5 -17l0 -119l-66 0z" />
-<glyph unicode="&#1209;" horiz-adv-x="497" d="M205 176q-39 0 -68.5 8q-29.5 8 -49 28q-19.5 20 -29 53q-9.5 33 -9.5 83v152h80v-136q0 -25 2.5 -46q2.5 -21 10.5 -36.5q8 -15.5 23 -24.5q15 -9 40 -11l0 127h63v-123q26 5 44 12.5q18 7.5 28 15.5l0 222h80v-500h-80v210q-10 -7 -28 -15q-18 -8 -44 -13l0 -114l-63 0z" />
-<glyph unicode="&#1210;" horiz-adv-x="605" d="M448 0v232q0 137 -124 137q-48 0 -89 -12.5q-41 -12.5 -67 -33.5l0 -323h-83v700h83v-302q27 15 71.5 30q44.5 15 100.5 15q42 0 77.5 -9.5q35.5 -9.5 60.5 -32q25 -22.5 39 -60.5q14 -38 14 -94l0 -247z" />
-<glyph unicode="&#1211;" horiz-adv-x="547" d="M398 0v285q0 39 -4.5 68.5q-4.5 29.5 -16.5 49q-12 19.5 -32.5 29.5q-20.5 10 -53.5 10q-47 0 -85 -30.5q-38 -30.5 -49 -78.5l0 -333h-80v700h80v-256h4q26 31 62.5 49.5q36.5 18.5 90.5 18.5q42 0 73 -9.5q31 -9.5 51.5 -33.5q20.5 -24 30 -64.5q9.5 -40.5 9.5 -102.5l0 -302z" />
-<glyph unicode="&#1212;" horiz-adv-x="774" d="M274 318q8 -131 65 -193.5q57 -62.5 166 -62.5q45 0 83.5 13.5q38.5 13.5 63.5 28.5l22 -67q-32 -20 -77.5 -34.5q-45.5 -14.5 -107.5 -14.5q-66 0 -119.5 19q-53.5 19 -92.5 59.5q-39 40.5 -61.5 102.5q-22.5 62 -25.5 149l-37 0q-84 0 -118 34.5q-34 34.5 -34 88.5q0 29 7.5 46.5q7.5 17.5 20.5 30.5l78 0q-16 -13 -22 -33q-6 -20 -6 -35q0 -12 3 -23.5q3 -11.5 12 -20.5q9 -9 26 -14.5q17 -5.5 45 -5.5q6 0 12 0q6 0 13 1q7 156 77 240.5q70 84.5 198 84.5q125 0 189 -75q64 -75 64 -212q0 -50 -9 -107zM631 388q2 14 3 27q1 13 1 26q0 40 -10 76q-10 36 -30.5 64q-20.5 28 -52.5 44.5q-32 16.5 -76 16.5q-93 0 -140.5 -67q-47.5 -67 -52.5 -187z" />
-<glyph unicode="&#1213;" horiz-adv-x="617" d="M551 40q-30 -24 -75.5 -38q-45.5 -14 -96.5 -14q-56 0 -97.5 18q-41.5 18 -68.5 51q-27 33 -40.5 79.5q-13.5 46.5 -14.5 104.5l-12 0q-36 0 -62 9.5q-26 9.5 -43 25.5q-17 16 -25 38q-8 22 -8 47q0 30 10 51q10 21 31 42l78 0q-20 -14 -33.5 -35q-13.5 -21 -13.5 -53q0 -11 3.5 -21.5q3.5 -10.5 11.5 -19q8 -8.5 21.5 -14q13.5 -5.5 33.5 -5.5q7 0 11 1q12 100 67.5 152.5q55.5 52.5 149.5 52.5q34 0 68 -7.5q34 -7.5 61 -28.5q27 -21 44 -59.5q17 -38.5 17 -101.5q0 -33 -6 -73l-321 0q0 -44 9 -78q9 -34 28 -58q19 -24 49.5 -36q30.5 -12 74.5 -12q34 0 68 12q34 12 51 28zM379 442q-59 0 -94.5 -31q-35.5 -31 -42.5 -106l248 0q0 76 -29 106.5t-82 30.5z" />
-<glyph unicode="&#1214;" horiz-adv-x="774" d="M274 318q8 -131 65 -193.5q57 -62.5 166 -61.5q45 0 83.5 13q38.5 13 63.5 28l22 -67q-29 -18 -69 -32q-40 -14 -94 -16l-14 -168h-52l-19 172q-105 16 -167.5 94.5q-62.5 78.5 -68.5 230.5l-37 0q-84 0 -118 34.5q-34 34.5 -34 88.5q0 29 7.5 46.5q7.5 17.5 20.5 30.5l78 0q-16 -13 -22 -33q-6 -20 -6 -35q0 -12 3 -23.5q3 -11.5 12 -20.5q9 -9 26 -14.5q17 -5.5 45 -5.5q6 0 12 0q6 0 13 1q7 156 77 240.5q70 84.5 198 84.5q125 0 189 -75q64 -75 64 -212q0 -50 -9 -107zM631 388q2 14 3 27q1 13 1 26q0 40 -10 76q-10 36 -30.5 64q-20.5 28 -52.5 44.5q-32 16.5 -76 16.5q-93 0 -140.5 -67q-47.5 -67 -52.5 -187z" />
-<glyph unicode="&#1215;" horiz-adv-x="617" d="M551 40q-25 -20 -59 -32q-34 -12 -74 -17l-14 -170h-52l-19 171q-89 14 -131 79.5q-42 65.5 -44 169.5l-12 0q-36 0 -62 9.5q-26 9.5 -43 25.5q-17 16 -25 38q-8 22 -8 47q0 32 10 52q10 20 31 41l78 0q-20 -14 -33.5 -35q-13.5 -21 -13.5 -53q0 -11 3.5 -21.5q3.5 -10.5 11.5 -19q8 -8.5 21.5 -14q13.5 -5.5 33.5 -5.5q7 0 11 1q12 100 67.5 152.5q55.5 52.5 149.5 52.5q34 0 68 -7.5q34 -7.5 61 -28.5q27 -21 44 -59.5q17 -38.5 17 -101.5q0 -33 -6 -73l-321 0q0 -44 9 -78q9 -34 28 -58q19 -24 49.5 -36.5q30.5 -12.5 74.5 -12.5q34 0 68 12q34 12 51 28zM379 442q-59 0 -94.5 -31q-35.5 -31 -42.5 -106l248 0q0 76 -29 106.5t-82 30.5z" />
-<glyph unicode="&#1216;" horiz-adv-x="291" d="M104 700h83v-700l-83 0z" />
-<glyph unicode="&#1219;" horiz-adv-x="600" d="M441 71q0 68 -13.5 116q-13.5 48 -41.5 78.5q-28 30.5 -70.5 44.5q-42.5 14 -100.5 14h-47v-324h-83v700h83v-326l45 14l235 312h96l-224 -286l-57 -38h63q53 -12 90.5 -34q37.5 -22 61.5 -57.5q24 -35.5 35 -87q11 -51.5 11 -123.5v-18q0 -72 -13.5 -123q-13.5 -51 -39 -83q-25.5 -32 -61.5 -46.5q-36 -14.5 -81 -14.5q-7 0 -13.5 0q-6.5 0 -14.5 1l0 73q40 0 66.5 11q26.5 11 43 35.5q16.5 24.5 23.5 64t7 97.5z" />
-<glyph unicode="&#1220;" horiz-adv-x="481" d="M361 16q0 105 -42 152.5q-42 47.5 -116 47.5h-46v-216h-80v500h80v-235l43 14l160 221h87l-156 -210l-36 -26l44 -6q45 -10 72.5 -34q27.5 -24 43 -56.5q15.5 -32.5 21 -72q5.5 -39.5 5.5 -79.5q0 -61 -13.5 -104.5q-13.5 -43.5 -37 -71.5q-23.5 -28 -56 -41q-32.5 -13 -70.5 -13q-8 0 -16.5 0q-8.5 0 -17.5 2l0 69q5 -1 9 -1q4 0 9 0q54 0 83.5 41t29.5 119z" />
-<glyph unicode="&#1221;" horiz-adv-x="622" d="M456 626h-209q-10 -200 -26.5 -332.5q-16.5 -132.5 -49.5 -206.5q-22 -48 -52 -70q-30 -22 -65 -22q-18 0 -31 2.5q-13 2.5 -25 7.5l11 72q10 -3 21 -3q17 0 33.5 11q16.5 11 32.5 41q14 27 26.5 72q12.5 45 22 114q9.5 69 15.5 164.5q6 95.5 9 223.5l370 0v-630h93v-22l-91 -178h-54l45 130l-76 0z" />
-<glyph unicode="&#1222;" horiz-adv-x="516" d="M346 430h-145q-3 -42 -6 -90.5q-3 -48.5 -9 -97q-6 -48.5 -16 -93q-10 -44.5 -25.5 -78.5q-15.5 -34 -38 -54.5q-22.5 -20.5 -53.5 -20.5q-36 0 -58 9l12 67q12 -4 26 -4q20 0 36 17q16 17 28 64.5q12 47.5 20 131.5q8 84 11 219l298 0v-430h100v-22l-91 -175h-54l45 127l-80 0z" />
-<glyph unicode="&#1223;" horiz-adv-x="672" d="M587 -27q0 -93 -31.5 -139q-31.5 -46 -101.5 -46q-8 0 -15.5 0q-7.5 0 -15.5 2l0 70q28 0 44.5 8.5q16.5 8.5 24.5 25q8 16.5 10 43.5q2 27 2 63v321h-336v-321h-83v700h83v-305h336v305l83 0z" />
-<glyph unicode="&#1224;" horiz-adv-x="540" d="M383 221h-226v-221h-80v500h80v-209h226v209h80v-527q0 -93 -32 -139q-32 -46 -102 -46q-8 0 -15 0.5q-7 0.5 -15 1.5l0 68q28 0 44.5 8.5q16.5 8.5 25.5 26q9 17.5 11.5 44.5q2.5 27 2.5 63z" />
-<glyph unicode="&#1225;" horiz-adv-x="681" d="M504 321h-336v-321h-83v700h83v-305h336v305h83v-630h104v-22l-91 -178h-54l45 130l-87 0z" />
-<glyph unicode="&#1226;" horiz-adv-x="556" d="M383 221h-226v-221h-80v500h80v-209h226v209h80v-430h100v-22l-91 -178l-54 3l45 127l-80 0z" />
-<glyph unicode="&#1227;" horiz-adv-x="605" d="M158 700v-232q0 -137 124 -137q47 0 88 12.5q41 12.5 67 33.5l0 323h83v-700h-102l-15 -129h-58v203h92v228q-27 -15 -71 -30q-44 -15 -101 -15q-42 0 -77 9.5q-35 9.5 -60 32q-25 22.5 -39 60.5q-14 38 -14 94l0 247z" />
-<glyph unicode="&#1228;" horiz-adv-x="490" d="M333 212q-16 -10 -47.5 -21.5q-31.5 -11.5 -86.5 -11.5q-37 0 -65 8.5q-28 8.5 -47 28q-19 19.5 -28.5 52.5q-9.5 33 -9.5 82v150h80v-134q0 -26 3 -47.5q3 -21.5 12 -37.5q9 -16 26 -24q17 -8 45 -8q45 0 74 10q29 10 44 22l0 219h80v-500h-88l-15 -127h-54v194l77 0z" />
-<glyph unicode="&#1229;" horiz-adv-x="801" d="M623 470l10 105h-5l-38 -96l-182 -316h-25l-193 317l-36 95h-5l14 -104v-471h-78v700h62l219 -358l33 -78h2l31 80l209 356h65v-630h104v-22l-91 -178h-54l45 130l-87 0z" />
-<glyph unicode="&#1230;" horiz-adv-x="661" d="M490 297l6 95h-5l-36 -77l-121 -196h-28l-126 196l-33 77h-4l8 -94v-298h-74v500h79l140 -224l29 -58h2l30 60l131 222h80v-430h100v-22l-91 -175h-54l45 127l-78 0z" />
-<glyph unicode="&#1231;" horiz-adv-x="254" d="M87 700h80v-700l-80 0z" />
-<glyph unicode="&#1232;" horiz-adv-x="585" d="M418 194h-258l-70 -194h-82l265 711h38l266 -711h-87zM187 266h206l-78 213l-25 106h-1l-25 -108zM201 870q4 -37 28 -57q24 -20 64 -20q40 0 63.5 20q23.5 20 28.5 56l71 -17q-11 -54 -50.5 -85.5q-39.5 -31.5 -113.5 -31.5q-71 0 -116.5 27.5q-45.5 27.5 -53.5 87.5z" />
-<glyph unicode="&#1233;" horiz-adv-x="496" d="M69 463q38 23 88.5 34q50.5 11 105.5 11q52 0 83.5 -14q31.5 -14 48 -36.5q16.5 -22.5 22 -49.5q5.5 -27 5.5 -54q0 -60 -3 -117q-3 -57 -3 -108q0 -37 3 -70q3 -33 11 -61l-59 0l-21 70h-5q-9 -14 -22.5 -27.5q-13.5 -13.5 -32.5 -24q-19 -10.5 -44 -17.5q-25 -7 -57 -7q-32 0 -59.5 10q-27.5 10 -47.5 28.5q-20 18.5 -31.5 44.5q-11.5 26 -11.5 59q0 44 18 73.5q18 29.5 50.5 47q32.5 17.5 78 25q45.5 7.5 100.5 7.5q14 0 27.5 0q13.5 0 27.5 -2q3 30 3 54q0 55 -22 77q-22 22 -80 22q-17 0 -36.5 -2.5q-19.5 -2.5 -40 -7q-20.5 -4.5 -39 -11q-18.5 -6.5 -32.5 -14.5zM211 62q28 0 50 7.5q22 7.5 38 19q16 11.5 26.5 25.5q10.5 14 15.5 27l0 83q-14 1 -28.5 1.5q-14.5 0.5 -28.5 0.5q-31 0 -60.5 -3.5q-29.5 -3.5 -52 -13q-22.5 -9.5 -36 -26q-13.5 -16.5 -13.5 -41.5q0 -35 25 -57.5q25 -22.5 64 -22.5zt0 0zM156 702q10 -46 34.5 -64q24.5 -18 56.5 -18q32 0 57 19q25 19 34 62l60 -19q-9 -58 -51.5 -89q-42.5 -31 -101.5 -31q-27 0 -53.5 7q-26.5 7 -47.5 21q-21 14 -36 36q-15 22 -20 52z" />
-<glyph unicode="&#1234;" horiz-adv-x="585" d="M418 194h-258l-70 -194h-82l265 711h38l266 -711h-87zM187 266h206l-78 213l-25 106h-1l-25 -108zM142 794q0 21 15 34q15 13 39 13q23 0 37.5 -13q14.5 -13 14.5 -34q0 -20 -14.5 -33q-14.5 -13 -37.5 -13q-24 0 -39 13q-15 13 -15 33zt0 0zM334 794q0 21 14.5 34q14.5 13 37.5 13q24 0 39 -13q15 -13 15 -34q0 -20 -15 -33q-15 -13 -39 -13q-23 0 -37.5 13t-14.5 33z" />
-<glyph unicode="&#1235;" horiz-adv-x="496" d="M69 463q38 23 88.5 34q50.5 11 105.5 11q52 0 83.5 -14q31.5 -14 48 -36.5q16.5 -22.5 22 -49.5q5.5 -27 5.5 -54q0 -60 -3 -117q-3 -57 -3 -108q0 -37 3 -70q3 -33 11 -61l-59 0l-21 70h-5q-9 -14 -22.5 -27.5q-13.5 -13.5 -32.5 -24q-19 -10.5 -44 -17.5q-25 -7 -57 -7q-32 0 -59.5 10q-27.5 10 -47.5 28.5q-20 18.5 -31.5 44.5q-11.5 26 -11.5 59q0 44 18 73.5q18 29.5 50.5 47q32.5 17.5 78 25q45.5 7.5 100.5 7.5q14 0 27.5 0q13.5 0 27.5 -2q3 30 3 54q0 55 -22 77q-22 22 -80 22q-17 0 -36.5 -2.5q-19.5 -2.5 -40 -7q-20.5 -4.5 -39 -11q-18.5 -6.5 -32.5 -14.5zM211 62q28 0 50 7.5q22 7.5 38 19q16 11.5 26.5 25.5q10.5 14 15.5 27l0 83q-14 1 -28.5 1.5q-14.5 0.5 -28.5 0.5q-31 0 -60.5 -3.5q-29.5 -3.5 -52 -13q-22.5 -9.5 -36 -26q-13.5 -16.5 -13.5 -41.5q0 -35 25 -57.5q25 -22.5 64 -22.5zt0 0zM98 633q0 23 13.5 37q13.5 14 35.5 14q22 0 35.5 -14q13.5 -14 13.5 -37q0 -21 -13.5 -35q-13.5 -14 -35.5 -14q-22 0 -35.5 14q-13.5 14 -13.5 35zt0 0zM290 633q0 23 13.5 37q13.5 14 35.5 14q23 0 36.5 -14q13.5 -14 13.5 -37q0 -21 -13.5 -35q-13.5 -14 -36.5 -14q-22 0 -35.5 14t-13.5 35z" />
-<glyph unicode="&#1236;" horiz-adv-x="846" d="M391 600l-34 -103l-133 -229h171v332zM395 198h-214l-112 -198h-91l415 700h383v-74h-298v-229h273v-74h-273v-249h303v-74l-386 0z" />
-<glyph unicode="&#1237;" horiz-adv-x="796" d="M211 62q28 0 50 7.5q22 7.5 38 19q16 11.5 26.5 25.5q10.5 14 15.5 27l0 83q-14 1 -28.5 1.5q-14.5 0.5 -28.5 0.5q-31 0 -60.5 -3.5q-29.5 -3.5 -52 -13q-22.5 -9.5 -36 -26q-13.5 -16.5 -13.5 -41.5q0 -35 25 -57.5q25 -22.5 64 -22.5zt0 0zM367 84q-13 -18 -30 -34.5q-17 -16.5 -38.5 -29q-21.5 -12.5 -49 -20.5q-27.5 -8 -60.5 -8q-32 0 -59.5 10q-27.5 10 -47.5 28.5q-20 18.5 -31.5 44.5q-11.5 26 -11.5 59q0 44 18 73.5q18 29.5 50.5 47q32.5 17.5 78 25q45.5 7.5 100.5 7.5q14 0 27.5 0q13.5 0 27.5 -2q1 15 2 28.5q1 13.5 1 25.5q0 55 -22 77.5q-22 22.5 -80 21.5q-17 0 -36.5 -2.5q-19.5 -2.5 -40 -7q-20.5 -4.5 -39 -11q-18.5 -6.5 -32.5 -14.5l-25 60q38 23 88.5 34q50.5 11 105.5 11q105 0 136 -65q26 36 70 52.5q44 16.5 88 16.5q34 0 68 -7.5q34 -7.5 61 -29q27 -21.5 44 -60.5q17 -39 17 -102q0 -16 -1.5 -33.5q-1.5 -17.5 -3.5 -37.5l-323 0q0 -87 36.5 -135.5q36.5 -48.5 124.5 -48.5q35 0 68.5 12.5q33.5 12.5 51.5 27.5l30 -58q-30 -24 -75.5 -38q-45.5 -14 -96.5 -14q-61 0 -110.5 25q-49.5 25 -73.5 71zM558 442q-59 0 -95 -31q-36 -31 -42 -106l248 0v12q0 68 -30.5 96.5t-80.5 28.5z" />
-<glyph unicode="&#1238;" horiz-adv-x="536" d="M85 700h381v-74h-298v-229h273v-74h-273v-249h303v-74h-386zM185 870q4 -37 28 -57q24 -20 64 -20q40 0 63.5 20q23.5 20 28.5 56l71 -17q-11 -54 -50.5 -85.5q-39.5 -31.5 -113.5 -31.5q-71 0 -116.5 27.5q-45.5 27.5 -53.5 87.5z" />
-<glyph unicode="&#1239;" horiz-adv-x="508" d="M442 40q-30 -24 -75.5 -38q-45.5 -14 -96.5 -14q-57 0 -99 18.5q-42 18.5 -69 53q-27 34.5 -40 82.5q-13 48 -13 108q0 128 57 195q57 67 163 67q34 0 68 -7.5q34 -7.5 61 -28.5q27 -21 44 -59.5q17 -38.5 17 -101.5q0 -33 -6 -73l-321 0q0 -44 9 -78q9 -34 28 -57.5q19 -23.5 49.5 -36q30.5 -12.5 74.5 -12.5q34 0 68 12q34 12 51 28zM270 442q-59 0 -94.5 -31q-35.5 -31 -42.5 -106l248 0q0 76 -29 106.5q-29 30.5 -82 30.5zt0 0zM176 702q10 -46 34.5 -64q24.5 -18 56.5 -18q32 0 57 19q25 19 34 62l60 -19q-9 -58 -51.5 -89q-42.5 -31 -101.5 -31q-27 0 -53.5 7q-26.5 7 -47.5 21q-21 14 -36 36q-15 22 -20 52z" />
-<glyph unicode="&#1240;" horiz-adv-x="639" d="M145 322q-2 -14 -3 -26.5q-1 -12.5 -1 -26.5q0 -41 9.5 -79q9.5 -38 29.5 -67q20 -29 51.5 -47q31.5 -18 75.5 -18q93 0 142.5 66.5q49.5 66.5 50.5 197.5zM500 392q-9 128 -60.5 187q-51.5 59 -154.5 59q-23 0 -46 -4q-23 -4 -43.5 -10q-20.5 -6 -37.5 -13q-17 -7 -28 -14l-21 67q30 18 80 33q50 15 112 15q67 0 119.5 -20.5q52.5 -20.5 88.5 -64q36 -43.5 55 -112.5q19 -69 19 -165q0 -173 -69 -267.5q-69 -94.5 -208 -94.5q-62 0 -109.5 20.5q-47.5 20.5 -79.5 58q-32 37.5 -48 91.5q-16 54 -16 121q0 26 2.5 54.5q2.5 28.5 7.5 58.5z" />
-<glyph unicode="&#1241;" horiz-adv-x="507" d="M65 460q30 24 75.5 38q45.5 14 96.5 14q57 0 99 -18.5q42 -18.5 69 -53q27 -34.5 40 -83q13 -48.5 13 -107.5q0 -127 -56 -194.5q-56 -67.5 -156 -67.5q-33 0 -68 10q-35 10 -63.5 35q-28.5 25 -47 67.5q-18.5 42.5 -18.5 107.5q0 16 1.5 32.5q1.5 16.5 3.5 35.5l326 0q-5 85 -41.5 125.5q-36.5 40.5 -124.5 40.5q-34 0 -67.5 -12q-33.5 -12 -51.5 -28zM248 58q55 0 92.5 39q37.5 39 37.5 116l-251 0v-15q0 -70 34.5 -105t86.5 -35z" />
-<glyph unicode="&#1242;" horiz-adv-x="639" d="M145 322q-2 -14 -3 -26.5q-1 -12.5 -1 -26.5q0 -41 9.5 -79q9.5 -38 29.5 -67q20 -29 51.5 -47q31.5 -18 75.5 -18q93 0 142.5 66.5q49.5 66.5 50.5 197.5zM500 392q-9 128 -60.5 187q-51.5 59 -154.5 59q-23 0 -46 -4q-23 -4 -43.5 -10q-20.5 -6 -37.5 -13q-17 -7 -28 -14l-21 67q30 18 80 33q50 15 112 15q67 0 119.5 -20.5q52.5 -20.5 88.5 -64q36 -43.5 55 -112.5q19 -69 19 -165q0 -173 -69 -267.5q-69 -94.5 -208 -94.5q-62 0 -109.5 20.5q-47.5 20.5 -79.5 58q-32 37.5 -48 91.5q-16 54 -16 121q0 26 2.5 54.5q2.5 28.5 7.5 58.5zM161 794q0 21 15 34q15 13 39 13q23 0 37.5 -13q14.5 -13 14.5 -34q0 -20 -14.5 -33q-14.5 -13 -37.5 -13q-24 0 -39 13q-15 13 -15 33zt0 0zM353 794q0 21 14.5 34q14.5 13 37.5 13q24 0 39 -13q15 -13 15 -34q0 -20 -15 -33q-15 -13 -39 -13q-23 0 -37.5 13t-14.5 33z" />
-<glyph unicode="&#1243;" horiz-adv-x="507" d="M65 460q30 24 75.5 38q45.5 14 96.5 14q57 0 99 -18.5q42 -18.5 69 -53q27 -34.5 40 -83q13 -48.5 13 -107.5q0 -127 -56 -194.5q-56 -67.5 -156 -67.5q-33 0 -68 10q-35 10 -63.5 35q-28.5 25 -47 67.5q-18.5 42.5 -18.5 107.5q0 16 1.5 32.5q1.5 16.5 3.5 35.5l326 0q-5 85 -41.5 125.5q-36.5 40.5 -124.5 40.5q-34 0 -67.5 -12q-33.5 -12 -51.5 -28zM248 58q55 0 92.5 39q37.5 39 37.5 116l-251 0v-15q0 -70 34.5 -105q34.5 -35 86.5 -35zt0 0zM101 633q0 23 13.5 37q13.5 14 35.5 14q22 0 35.5 -14q13.5 -14 13.5 -37q0 -21 -13.5 -35q-13.5 -14 -35.5 -14q-22 0 -35.5 14q-13.5 14 -13.5 35zt0 0zM293 633q0 23 13.5 37q13.5 14 35.5 14q23 0 36.5 -14q13.5 -14 13.5 -37q0 -21 -13.5 -35q-13.5 -14 -36.5 -14q-22 0 -35.5 14t-13.5 35z" />
-<glyph unicode="&#1244;" horiz-adv-x="806" d="M358 700h80v-326l43 14l203 312h92l-202 -304l-40 -32l50 -41l223 -323h-102l-221 324h-46v-324h-80v336l-42 -14l-221 -322h-96l221 313l48 38l-46 35l-209 314h97l203 -314h45zM250 794q0 21 15 34q15 13 39 13q23 0 37.5 -13q14.5 -13 14.5 -34q0 -20 -14.5 -33q-14.5 -13 -37.5 -13q-24 0 -39 13q-15 13 -15 33zt0 0zM442 794q0 21 14.5 34q14.5 13 37.5 13q24 0 39 -13q15 -13 15 -34q0 -20 -15 -33q-15 -13 -39 -13q-23 0 -37.5 13t-14.5 33z" />
-<glyph unicode="&#1245;" horiz-adv-x="659" d="M240 221l-147 -221h-92l158 229l34 30l-51 38l-130 203h85l138 -216h52v216h78v-226l47 14l139 212h84l-136 -203l-39 -32l51 -40l148 -225h-95l-147 225h-52v-225h-78v235zM183 633q0 23 13.5 37q13.5 14 35.5 14q22 0 35.5 -14q13.5 -14 13.5 -37q0 -21 -13.5 -35q-13.5 -14 -35.5 -14q-22 0 -35.5 14q-13.5 14 -13.5 35zt0 0zM375 633q0 23 13.5 37q13.5 14 35.5 14q23 0 36.5 -14q13.5 -14 13.5 -37q0 -21 -13.5 -35q-13.5 -14 -36.5 -14q-22 0 -35.5 14t-13.5 35z" />
-<glyph unicode="&#1246;" horiz-adv-x="541" d="M139 331v70h16q9 0 22 0q13 0 26.5 1q13.5 1 26 1.5q12.5 0.5 20.5 2.5q26 4 49 13.5q23 9.5 40 24.5q17 15 27 35q10 20 10 44q0 33 -11 55q-11 22 -30.5 35.5q-19.5 13.5 -45 19q-25.5 5.5 -54.5 5.5q-54 0 -92 -7.5q-38 -7.5 -61 -18.5l-22 66q20 11 72 22.5q52 11.5 117 11.5q40 0 78.5 -8.5q38.5 -8.5 69 -28q30.5 -19.5 49 -53q18.5 -33.5 18.5 -82.5q0 -50 -33 -95.5q-33 -45.5 -99 -65.5l0 -4q71 -10 112 -53q41 -43 41 -115q0 -57 -22.5 -98.5q-22.5 -41.5 -59 -68.5q-36.5 -27 -84 -39.5q-47.5 -12.5 -96.5 -12.5q-66 0 -108.5 7.5q-42.5 7.5 -70.5 18.5l21 75q23 -11 64.5 -19q41.5 -8 100.5 -8q31 0 61 8.5q30 8.5 53.5 26q23.5 17.5 38 43.5q14.5 26 14.5 62q0 63 -44 92.5q-44 29.5 -115 34.5q-12 1 -22.5 1.5q-10.5 0.5 -21.5 0.5zM93 794q0 21 15 34q15 13 39 13q23 0 37.5 -13q14.5 -13 14.5 -34q0 -20 -14.5 -33q-14.5 -13 -37.5 -13q-24 0 -39 13q-15 13 -15 33zt0 0zM285 794q0 21 14.5 34q14.5 13 37.5 13q24 0 39 -13q15 -13 15 -34q0 -20 -15 -33q-15 -13 -39 -13q-23 0 -37.5 13t-14.5 33z" />
-<glyph unicode="&#1247;" horiz-adv-x="441" d="M125 223v65h70q18 0 35.5 6q17.5 6 31.5 16.5q14 10.5 22.5 25q8.5 14.5 8.5 30.5q0 39 -27 55q-27 16 -81 16q-39 0 -71.5 -12q-32.5 -12 -50.5 -23l-23 62q30 17 70.5 30q40.5 13 96.5 13q166 0 166 -123q0 -35 -22.5 -68.5q-22.5 -33.5 -64.5 -47.5l0 -4q59 -11 82.5 -42q23.5 -31 23.5 -82q0 -32 -13 -59q-13 -27 -39 -47q-26 -20 -65.5 -31.5q-39.5 -11.5 -91.5 -11.5q-51 0 -84.5 9q-33.5 9 -60.5 22l23 66q23 -13 55.5 -20q32.5 -7 70.5 -7q61 0 93 21q32 21 32 64q0 36 -30 56.5q-30 20.5 -99 20.5zM58 633q0 23 13.5 37q13.5 14 35.5 14q22 0 35.5 -14q13.5 -14 13.5 -37q0 -21 -13.5 -35q-13.5 -14 -35.5 -14q-22 0 -35.5 14q-13.5 14 -13.5 35zt0 0zM250 633q0 23 13.5 37q13.5 14 35.5 14q23 0 36.5 -14q13.5 -14 13.5 -37q0 -21 -13.5 -35q-13.5 -14 -36.5 -14q-22 0 -35.5 14t-13.5 35z" />
-<glyph unicode="&#1248;" horiz-adv-x="563" d="M230 62q39 0 73.5 10q34.5 10 60 28.5q25.5 18.5 40 45q14.5 26.5 14.5 59.5q0 70 -53.5 103q-53.5 33 -147.5 33h-88v27l186 224l44 43l-62 -9h-240v74h415v-30l-200 -239l-35 -29v-4l34 9q50 0 92 -13.5q42 -13.5 72 -38.5q30 -25 46.5 -61q16.5 -36 16.5 -81q0 -54 -20.5 -95.5q-20.5 -41.5 -56.5 -70.5q-36 -29 -85 -44q-49 -15 -107 -15q-22 0 -47 2.5q-25 2.5 -49 7.5q-24 5 -44.5 11q-20.5 6 -33.5 14l21 73q11 -6 29 -12.5q18 -6.5 39.5 -11q21.5 -4.5 43.5 -7.5t42 -3z" />
-<glyph unicode="&#1249;" horiz-adv-x="475" d="M188 -142q34 0 63.5 10.5q29.5 10.5 51 29q21.5 18.5 33.5 45.5q12 27 12 60q0 70 -43 104q-43 34 -117 34h-73v26l144 224l45 43l-64 -8h-198v74h359v-29l-159 -238l-34 -29v-4l32 8q40 0 74 -13.5q34 -13.5 59 -39q25 -25.5 39 -61.5q14 -36 14 -80q0 -54 -18.5 -96q-18.5 -42 -51.5 -71q-33 -29 -77 -44q-44 -15 -95 -15q-45 0 -80.5 7q-35.5 7 -64.5 20l23 71q24 -12 55 -20t71 -8z" />
-<glyph unicode="&#1250;" horiz-adv-x="681" d="M513 474l6 80h-4l-43 -82l-338 -472h-49v700h83v-480l-7 -79h4l44 82l338 477h49v-700h-83zM189 843h316v-62l-316 0z" />
-<glyph unicode="&#1251;" horiz-adv-x="546" d="M389 296l3 62h-3l-41 -64l-225 -294h-46v500h80v-305l-3 -59h4l39 62l225 302h47v-500h-80zM130 643h296v-62l-296 0z" />
-<glyph unicode="&#1252;" horiz-adv-x="681" d="M513 474l6 80h-4l-43 -82l-338 -472h-49v700h83v-480l-7 -79h4l44 82l338 477h49v-700h-83zM190 794q0 21 15 34q15 13 39 13q23 0 37.5 -13q14.5 -13 14.5 -34q0 -20 -14.5 -33q-14.5 -13 -37.5 -13q-24 0 -39 13q-15 13 -15 33zt0 0zM382 794q0 21 14.5 34q14.5 13 37.5 13q24 0 39 -13q15 -13 15 -34q0 -20 -15 -33q-15 -13 -39 -13q-23 0 -37.5 13t-14.5 33z" />
-<glyph unicode="&#1253;" horiz-adv-x="546" d="M389 296l3 62h-3l-41 -64l-225 -294h-46v500h80v-305l-3 -59h4l39 62l225 302h47v-500h-80zM136 633q0 23 13.5 37q13.5 14 35.5 14q22 0 35.5 -14q13.5 -14 13.5 -37q0 -21 -13.5 -35q-13.5 -14 -35.5 -14q-22 0 -35.5 14q-13.5 14 -13.5 35zt0 0zM328 633q0 23 13.5 37q13.5 14 35.5 14q23 0 36.5 -14q13.5 -14 13.5 -37q0 -21 -13.5 -35q-13.5 -14 -36.5 -14q-22 0 -35.5 14t-13.5 35z" />
-<glyph unicode="&#1254;" horiz-adv-x="684" d="M56 350q0 175 74 268.5q74 93.5 211 93.5q74 0 128 -26q54 -26 89.5 -73.5q35.5 -47.5 52.5 -114q17 -66.5 17 -148.5q0 -175 -74.5 -268.5q-74.5 -93.5 -212.5 -93.5q-73 0 -126.5 26q-53.5 26 -89 73.5q-35.5 47.5 -52.5 114q-17 66.5 -17 148.5zt0 0zM144 350q0 -58 11.5 -110q11.5 -52 35.5 -91.5q24 -39.5 61.5 -63q37.5 -23.5 88.5 -23.5q93 0 146 70.5q53 70.5 53 217.5q0 57 -11.5 109.5q-11.5 52.5 -36 92q-24.5 39.5 -62 63q-37.5 23.5 -89.5 23.5q-92 0 -144.5 -70.5q-52.5 -70.5 -52.5 -217.5zt0 0zM193 794q0 21 15 34q15 13 39 13q23 0 37.5 -13q14.5 -13 14.5 -34q0 -20 -14.5 -33q-14.5 -13 -37.5 -13q-24 0 -39 13q-15 13 -15 33zt0 0zM385 794q0 21 14.5 34q14.5 13 37.5 13q24 0 39 -13q15 -13 15 -34q0 -20 -15 -33q-15 -13 -39 -13q-23 0 -37.5 13t-14.5 33z" />
-<glyph unicode="&#1255;" horiz-adv-x="536" d="M49 250q0 127 56.5 194.5q56.5 67.5 162.5 67.5q56 0 97.5 -18.5q41.5 -18.5 68.5 -53q27 -34.5 40 -83q13 -48.5 13 -107.5q0 -127 -56.5 -194.5q-56.5 -67.5 -162.5 -67.5q-56 0 -97.5 18.5q-41.5 18.5 -68.5 53q-27 34.5 -40 83q-13 48.5 -13 107.5zt0 0zM132 250q0 -38 7.5 -73q7.5 -35 23.5 -61q16 -26 42 -42q26 -16 63 -16q136 -1 136 192q0 39 -7.5 74q-7.5 35 -23.5 61q-16 26 -42 41.5q-26 15.5 -63 15.5q-136 1 -136 -192zt0 0zM120 633q0 23 13.5 37q13.5 14 35.5 14q22 0 35.5 -14q13.5 -14 13.5 -37q0 -21 -13.5 -35q-13.5 -14 -35.5 -14q-22 0 -35.5 14q-13.5 14 -13.5 35zt0 0zM312 633q0 23 13.5 37q13.5 14 35.5 14q23 0 36.5 -14q13.5 -14 13.5 -37q0 -21 -13.5 -35q-13.5 -14 -36.5 -14q-22 0 -35.5 14t-13.5 35z" />
-<glyph unicode="&#1256;" horiz-adv-x="684" d="M56 350q0 175 74 268.5q74 93.5 211 93.5q74 0 128 -26q54 -26 89.5 -73.5q35.5 -47.5 52.5 -114q17 -66.5 17 -148.5q0 -175 -74.5 -268.5q-74.5 -93.5 -212.5 -93.5q-73 0 -126.5 26q-53.5 26 -89 73.5q-35.5 47.5 -52.5 114q-17 66.5 -17 148.5zt0 0zM540 392q-8 119 -62.5 182.5q-54.5 63.5 -136.5 63.5q-36 0 -70 -12.5q-34 -12.5 -61 -41.5q-27 -29 -44.5 -76q-17.5 -47 -21.5 -116zM144 318q8 -129 62.5 -192.5q54.5 -63.5 134.5 -63.5q37 0 72 12q35 12 62 41.5q27 29.5 44.5 78.5q17.5 49 20.5 124z" />
-<glyph unicode="&#1257;" horiz-adv-x="536" d="M49 250q0 127 56.5 194.5q56.5 67.5 162.5 67.5q56 0 97.5 -18.5q41.5 -18.5 68.5 -53q27 -34.5 40 -83q13 -48.5 13 -107.5q0 -127 -56.5 -194.5q-56.5 -67.5 -162.5 -67.5q-56 0 -97.5 18.5q-41.5 18.5 -68.5 53q-27 34.5 -40 83q-13 48.5 -13 107.5zt0 0zM404 281q-8 85 -43.5 123q-35.5 38 -92.5 38q-26 0 -49.5 -8q-23.5 -8 -42 -27q-18.5 -19 -30.5 -50q-12 -31 -14 -76zM132 217q5 -78 43 -118.5q38 -40.5 93 -40.5q25 0 48.5 8q23.5 8 42 26q18.5 18 30.5 48.5q12 30.5 15 76.5z" />
-<glyph unicode="&#1258;" horiz-adv-x="684" d="M56 350q0 175 74 268.5q74 93.5 211 93.5q74 0 128 -26q54 -26 89.5 -73.5q35.5 -47.5 52.5 -114q17 -66.5 17 -148.5q0 -175 -74.5 -268.5q-74.5 -93.5 -212.5 -93.5q-73 0 -126.5 26q-53.5 26 -89 73.5q-35.5 47.5 -52.5 114q-17 66.5 -17 148.5zt0 0zM540 392q-8 119 -62.5 182.5q-54.5 63.5 -136.5 63.5q-36 0 -70 -12.5q-34 -12.5 -61 -41.5q-27 -29 -44.5 -76q-17.5 -47 -21.5 -116zM144 318q8 -129 62.5 -192.5q54.5 -63.5 134.5 -63.5q37 0 72 12q35 12 62 41.5q27 29.5 44.5 78.5q17.5 49 20.5 124zM193 794q0 21 15 34q15 13 39 13q23 0 37.5 -13q14.5 -13 14.5 -34q0 -20 -14.5 -33q-14.5 -13 -37.5 -13q-24 0 -39 13q-15 13 -15 33zt0 0zM385 794q0 21 14.5 34q14.5 13 37.5 13q24 0 39 -13q15 -13 15 -34q0 -20 -15 -33q-15 -13 -39 -13q-23 0 -37.5 13t-14.5 33z" />
-<glyph unicode="&#1259;" horiz-adv-x="536" d="M49 250q0 127 56.5 194.5q56.5 67.5 162.5 67.5q56 0 97.5 -18.5q41.5 -18.5 68.5 -53q27 -34.5 40 -83q13 -48.5 13 -107.5q0 -127 -56.5 -194.5q-56.5 -67.5 -162.5 -67.5q-56 0 -97.5 18.5q-41.5 18.5 -68.5 53q-27 34.5 -40 83q-13 48.5 -13 107.5zt0 0zM404 281q-8 85 -43.5 123q-35.5 38 -92.5 38q-26 0 -49.5 -8q-23.5 -8 -42 -27q-18.5 -19 -30.5 -50q-12 -31 -14 -76zM132 217q5 -78 43 -118.5q38 -40.5 93 -40.5q25 0 48.5 8q23.5 8 42 26q18.5 18 30.5 48.5q12 30.5 15 76.5zM120 633q0 23 13.5 37q13.5 14 35.5 14q22 0 35.5 -14q13.5 -14 13.5 -37q0 -21 -13.5 -35q-13.5 -14 -35.5 -14q-22 0 -35.5 14q-13.5 14 -13.5 35zt0 0zM312 633q0 23 13.5 37q13.5 14 35.5 14q23 0 36.5 -14q13.5 -14 13.5 -37q0 -21 -13.5 -35q-13.5 -14 -36.5 -14q-22 0 -35.5 14t-13.5 35z" />
-<glyph unicode="&#1260;" horiz-adv-x="577" d="M150 395h288q-5 61 -24 107.5q-19 46.5 -49 77q-30 30.5 -69.5 44.5q-39.5 14 -85.5 14q-47 0 -83.5 -8q-36.5 -8 -59.5 -22l-22 65q31 18 77 28.5q46 10.5 98 10.5q64 0 119 -20q55 -20 95.5 -63.5q40.5 -43.5 63.5 -112.5q23 -69 23 -166q0 -98 -26 -167q-26 -69 -70.5 -112.5q-44.5 -43.5 -103 -63q-58.5 -19.5 -122.5 -19.5q-50 0 -88.5 7q-38.5 7 -65.5 18l22 73q23 -11 60 -17.5q37 -6.5 77 -6.5q40 0 80.5 12.5q40.5 12.5 73.5 43.5q33 31 55 81q22 50 26 122l-289 0zM78 794q0 21 15 34q15 13 39 13q23 0 37.5 -13q14.5 -13 14.5 -34q0 -20 -14.5 -33q-14.5 -13 -37.5 -13q-24 0 -39 13q-15 13 -15 33zt0 0zM270 794q0 21 14.5 34q14.5 13 37.5 13q24 0 39 -13q15 -13 15 -34q0 -20 -15 -33q-15 -13 -39 -13q-23 0 -37.5 13t-14.5 33z" />
-<glyph unicode="&#1261;" horiz-adv-x="465" d="M121 285h212q-5 71 -41.5 114q-36.5 43 -103.5 43q-41 0 -71.5 -11q-30.5 -11 -49.5 -24l-28 61q31 21 71 32.5q40 11.5 93 11.5q111 0 162 -69q51 -69 51 -193q0 -128 -59 -195q-59 -67 -164 -67q-47 0 -86.5 7.5q-39.5 7.5 -66.5 22.5l23 68q23 -13 56.5 -20.5q33.5 -7.5 65.5 -7.5q140 -1 149 161l-213 0zM56 633q0 23 13.5 37q13.5 14 35.5 14q22 0 35.5 -14q13.5 -14 13.5 -37q0 -21 -13.5 -35q-13.5 -14 -35.5 -14q-22 0 -35.5 14q-13.5 14 -13.5 35zt0 0zM248 633q0 23 13.5 37q13.5 14 35.5 14q23 0 36.5 -14q13.5 -14 13.5 -37q0 -21 -13.5 -35q-13.5 -14 -36.5 -14q-22 0 -35.5 14t-13.5 35z" />
-<glyph unicode="&#1262;" horiz-adv-x="553" d="M282 331l26 -89h5l20 92l134 366h85l-177 -455q-27 -71 -47.5 -118.5q-20.5 -47.5 -41.5 -77q-21 -29.5 -45 -42q-24 -12.5 -59 -12.5q-33 0 -52.5 5.5q-19.5 5.5 -36.5 16.5l25 69q20 -11 37 -14q17 -3 31 -3q28 0 47 28.5q19 28.5 33 84.5l-259 518h96zM138 843h316v-62l-316 0z" />
-<glyph unicode="&#1263;" horiz-adv-x="466" d="M224 176l28 -96h5l22 97l97 323h81l-148 -449q-17 -49 -33.5 -95q-16.5 -46 -36.5 -82q-20 -36 -45 -57.5q-25 -21.5 -58 -21.5q-36 0 -59 10l14 69q13 -5 25 -5q28 0 54 29.5q26 29.5 43 101.5l-201 500h92zM98 643h296v-62l-296 0z" />
-<glyph unicode="&#1264;" horiz-adv-x="553" d="M282 331l26 -89h5l20 92l134 366h85l-177 -455q-27 -71 -47.5 -118.5q-20.5 -47.5 -41.5 -77q-21 -29.5 -45 -42q-24 -12.5 -59 -12.5q-33 0 -52.5 5.5q-19.5 5.5 -36.5 16.5l25 69q20 -11 37 -14q17 -3 31 -3q28 0 47 28.5q19 28.5 33 84.5l-259 518h96zM145 794q0 21 15 34q15 13 39 13q23 0 37.5 -13q14.5 -13 14.5 -34q0 -20 -14.5 -33q-14.5 -13 -37.5 -13q-24 0 -39 13q-15 13 -15 33zt0 0zM337 794q0 21 14.5 34q14.5 13 37.5 13q24 0 39 -13q15 -13 15 -34q0 -20 -15 -33q-15 -13 -39 -13q-23 0 -37.5 13t-14.5 33z" />
-<glyph unicode="&#1265;" horiz-adv-x="466" d="M224 176l28 -96h5l22 97l97 323h81l-148 -449q-17 -49 -33.5 -95q-16.5 -46 -36.5 -82q-20 -36 -45 -57.5q-25 -21.5 -58 -21.5q-36 0 -59 10l14 69q13 -5 25 -5q28 0 54 29.5q26 29.5 43 101.5l-201 500h92zM99 633q0 23 13.5 37q13.5 14 35.5 14q22 0 35.5 -14q13.5 -14 13.5 -37q0 -21 -13.5 -35q-13.5 -14 -35.5 -14q-22 0 -35.5 14q-13.5 14 -13.5 35zt0 0zM291 633q0 23 13.5 37q13.5 14 35.5 14q23 0 36.5 -14q13.5 -14 13.5 -37q0 -21 -13.5 -35q-13.5 -14 -36.5 -14q-22 0 -35.5 14t-13.5 35z" />
-<glyph unicode="&#1266;" horiz-adv-x="553" d="M282 331l26 -89h5l20 92l134 366h85l-177 -455q-27 -71 -47.5 -118.5q-20.5 -47.5 -41.5 -77q-21 -29.5 -45 -42q-24 -12.5 -59 -12.5q-33 0 -52.5 5.5q-19.5 5.5 -36.5 16.5l25 69q20 -11 37 -14q17 -3 31 -3q28 0 47 28.5q19 28.5 33 84.5l-259 518h96zM241 850h93v-16l-100 -93h-57zM403 850h99v-16l-143 -93l-58 0z" />
-<glyph unicode="&#1267;" horiz-adv-x="466" d="M224 176l28 -96h5l22 97l97 323h81l-148 -449q-17 -49 -33.5 -95q-16.5 -46 -36.5 -82q-20 -36 -45 -57.5q-25 -21.5 -58 -21.5q-36 0 -59 10l14 69q13 -5 25 -5q28 0 54 29.5q26 29.5 43 101.5l-201 500h92zM195 700h78v-16l-71 -113h-42zM341 700h86v-16l-114 -113l-45 0z" />
-<glyph unicode="&#1268;" horiz-adv-x="605" d="M158 700v-232q0 -137 124 -137q47 0 88 12.5q41 12.5 67 33.5l0 323h83v-700h-83v302q-27 -15 -71 -30q-44 -15 -101 -15q-42 0 -77 9.5q-35 9.5 -60 32q-25 22.5 -39 60.5q-14 38 -14 94v247zM157 794q0 21 15 34q15 13 39 13q23 0 37.5 -13q14.5 -13 14.5 -34q0 -20 -14.5 -33q-14.5 -13 -37.5 -13q-24 0 -39 13q-15 13 -15 33zt0 0zM349 794q0 21 14.5 34q14.5 13 37.5 13q24 0 39 -13q15 -13 15 -34q0 -20 -15 -33q-15 -13 -39 -13q-23 0 -37.5 13t-14.5 33z" />
-<glyph unicode="&#1269;" horiz-adv-x="490" d="M129 500v-136q0 -27 3 -48.5q3 -21.5 12 -37q9 -15.5 26 -24q17 -8.5 45 -8.5q45 0 74 10q29 10 44 22l0 222h80v-500h-80v210q-16 -10 -47.5 -22q-31.5 -12 -86.5 -12q-37 0 -65 8q-28 8 -47 28q-19 20 -28.5 53q-9.5 33 -9.5 83v152zM85 633q0 23 13.5 37q13.5 14 35.5 14q22 0 35.5 -14q13.5 -14 13.5 -37q0 -21 -13.5 -35q-13.5 -14 -35.5 -14q-22 0 -35.5 14q-13.5 14 -13.5 35zt0 0zM277 633q0 23 13.5 37q13.5 14 35.5 14q23 0 36.5 -14q13.5 -14 13.5 -37q0 -21 -13.5 -35q-13.5 -14 -36.5 -14q-22 0 -35.5 14t-13.5 35z" />
-<glyph unicode="&#1270;" horiz-adv-x="442" d="M460 626h-292v-552h92v-203h-58l-15 129h-102v700l375 0z" />
-<glyph unicode="&#1271;" horiz-adv-x="369" d="M77 500h292v-70h-212v-360h74v-197h-54l-15 127l-85 0z" />
-<glyph unicode="&#1272;" horiz-adv-x="769" d="M601 700h83v-700h-83zM85 700h83v-272q5 1 15 2.5q10 1.5 22 2.5q12 1 24.5 2q12.5 1 24.5 1q47 0 91.5 -9.5q44.5 -9.5 78.5 -33.5q34 -24 54.5 -64.5q20.5 -40.5 20.5 -102.5q0 -60 -19 -104.5q-19 -44.5 -53.5 -73q-34.5 -28.5 -82.5 -42.5q-48 -14 -106 -14q-14 0 -32.5 0.5q-18.5 0.5 -39 2q-20.5 1.5 -41.5 4.5q-21 3 -40 8zM245 64q72 0 119 39q47 39 47 117q0 42 -14 70q-14 28 -37.5 44.5q-23.5 16.5 -54 23q-30.5 6.5 -64.5 6.5q-18 0 -40 -3q-22 -3 -33 -6l0 -285q27 -6 77 -6zt0 0zM229 794q0 21 15 34q15 13 39 13q23 0 37.5 -13q14.5 -13 14.5 -34q0 -20 -14.5 -33q-14.5 -13 -37.5 -13q-24 0 -39 13q-15 13 -15 33zt0 0zM421 794q0 21 14.5 34q14.5 13 37.5 13q24 0 39 -13q15 -13 15 -34q0 -20 -15 -33q-15 -13 -39 -13q-23 0 -37.5 13t-14.5 33z" />
-<glyph unicode="&#1273;" horiz-adv-x="660" d="M157 70q37 -6 71 -6q63 0 88 24.5q25 24.5 25 69.5q0 40 -24.5 66q-24.5 26 -85.5 26q-17 0 -37 -1q-20 -1 -37 -6zM157 309q24 4 46 5.5q22 1.5 42 1.5q51 0 85.5 -11.5q34.5 -11.5 55.5 -31.5q21 -20 29.5 -47.5q8.5 -27.5 8.5 -58.5q0 -91 -50.5 -132q-50.5 -41 -163.5 -41q-64 0 -133 6l0 500h80zM503 500h80v-500h-80zM180 633q0 23 13.5 37q13.5 14 35.5 14q22 0 35.5 -14q13.5 -14 13.5 -37q0 -21 -13.5 -35q-13.5 -14 -35.5 -14q-22 0 -35.5 14q-13.5 14 -13.5 35zt0 0zM372 633q0 23 13.5 37q13.5 14 35.5 14q23 0 36.5 -14q13.5 -14 13.5 -37q0 -21 -13.5 -35q-13.5 -14 -36.5 -14q-22 0 -35.5 14t-13.5 35z" />
-<glyph unicode="&#1276;" horiz-adv-x="618" d="M479 -42q0 49 -16 86q-16 37 -36 68l-91 139l-29 60l-26 -60l-162 -251h-93l233 356l-213 344h100l142 -237l25 -57l24 57l150 237h92l-220 -337l139 -215q32 -49 46.5 -90q14.5 -41 14.5 -83q0 -93 -33 -139q-33 -46 -104 -46q-8 0 -15.5 0q-7.5 0 -15.5 2l0 68q28 0 45.5 8q17.5 8 27 21.5q9.5 13.5 12.5 31.5t3 37z" />
-<glyph unicode="&#1277;" horiz-adv-x="514" d="M404 126q29 -42 46.5 -83q17.5 -41 17.5 -79q0 -87 -37.5 -131.5q-37.5 -44.5 -109.5 -44.5q-8 0 -16 0.5q-8 0.5 -15 1.5l0 68q57 0 77.5 22q20.5 22 20.5 67q0 41 -17.5 77q-17.5 36 -37.5 65l-47 63l-32 56l-29 -56l-108 -152h-89l180 256l-168 244h98l95 -138l28 -57l29 57l97 138h90l-169 -240z" />
-<glyph unicode="&#1296;" horiz-adv-x="540" d="M356 331q-12 0 -22.5 -0.5q-10.5 -0.5 -21.5 -1.5q-71 -5 -115 -35q-44 -30 -44 -92q0 -72 48 -106q48 -34 128 -34q42 0 81 9.5q39 9.5 60 23.5l26 -63q-25 -16 -70.5 -30q-45.5 -14 -111.5 -14q-56 0 -101.5 12.5q-45.5 12.5 -78.5 38.5q-33 26 -51 65q-18 39 -18 93q0 73 39 118.5q39 45.5 110 56.5l0 4q-33 10 -57 27.5q-24 17.5 -39.5 39.5q-15.5 22 -23.5 47q-8 25 -8 50q0 45 18 77.5q18 32.5 49 53.5q31 21 73 31q42 10 89 10q27 0 53.5 -3.5q26.5 -3.5 49.5 -8.5q23 -5 41 -11.5q18 -6.5 29 -13.5l-24 -67q-27 12 -66 21q-39 9 -76 9q-68 0 -108 -24q-40 -24 -40 -82q0 -28 12 -50q12 -22 32 -38q20 -16 45 -26q25 -10 51 -13q17 -2 40 -3q23 -1 41 -1h16l0 -70z" />
-<glyph unicode="&#1297;" horiz-adv-x="441" d="M258 223q-69 0 -99 -20.5q-30 -20.5 -30 -56.5q0 -38 32 -61.5q32 -23.5 93 -23.5q37 0 70 9q33 9 56 23l23 -65q-25 -14 -59.5 -25.5q-34.5 -11.5 -85.5 -11.5q-106 0 -157.5 40q-51.5 40 -51.5 109q0 51 24.5 80q24.5 29 81.5 44l0 4q-42 14 -64.5 44q-22.5 30 -22.5 71q0 62 45 93q45 31 121 31q57 0 97 -13q40 -13 70 -30l-23 -62q-18 11 -50.5 23q-32.5 12 -71.5 12q-54 0 -81 -16q-27 -16 -27 -55q0 -16 8.5 -30.5q8.5 -14.5 22.5 -25q14 -10.5 31.5 -16.5q17.5 -6 35.5 -6h70l0 -65z" />
-<glyph unicode="&#1298;" horiz-adv-x="626" d="M541 -27q0 -93 -32 -139q-32 -46 -102 -46q-8 0 -15 0.5q-7 0.5 -15 1.5l0 68q28 0 44.5 7.5q16.5 7.5 24.5 24.5q8 17 10 44q2 27 2 66v626h-209q-10 -200 -26.5 -332.5q-16.5 -132.5 -50.5 -206.5q-22 -48 -51.5 -70q-29.5 -22 -64.5 -22q-35 0 -58 10l13 72q10 -3 21 -3q17 0 34 11q17 11 33 41q14 27 26 72q12 45 21.5 114q9.5 69 15.5 164.5q6 95.5 9 223.5l370 0z" />
-<glyph unicode="&#1299;" horiz-adv-x="503" d="M346 430h-145q-3 -42 -6 -90.5q-3 -48.5 -9 -97q-6 -48.5 -16 -93q-10 -44.5 -25.5 -78.5q-15.5 -34 -38 -54.5q-22.5 -20.5 -53.5 -20.5q-19 0 -33 2q-14 2 -25 7l12 67q12 -4 26 -4q20 0 36 17q16 17 28 64.5q12 47.5 20 131.5q8 84 11 219l298 0v-527q0 -93 -32 -139q-32 -46 -102 -46q-8 0 -15 0.5q-7 0.5 -15 1.5l0 68q28 0 44.5 8.5q16.5 8.5 25.5 26q9 17.5 11.5 44.5q2.5 27 2.5 63z" />
-<glyph unicode="&#1308;" horiz-adv-x="828" d="M222 231l16 -116h1l17 118l144 467h40l145 -469l17 -116h1l18 118l118 467h81l-195 -711h-46l-142 469l-18 106h-5l-18 -107l-142 -468h-46l-200 711l88 0z" />
-<glyph unicode="&#1309;" horiz-adv-x="735" d="M401 500l115 -292l25 -96h2l19 98l89 290h76l-168 -511h-39l-131 330l-19 82h-3l-20 -83l-126 -329h-39l-174 511h87l99 -291l17 -97h1l24 99l107 289z" />
-<glyph unicode="&#1316;" horiz-adv-x="694" d="M491 626h-323v-626h-83v700h489v-626h92v-203h-58l-15 129l-102 0z" />
-<glyph unicode="&#1317;" horiz-adv-x="554" d="M378 430h-221v-430h-80v500h381v-430h74v-197h-54l-15 127l-85 0z" />
-<glyph unicode="&#1318;" horiz-adv-x="640" d="M448 0v232q0 137 -124 137q-48 0 -89 -12.5q-41 -12.5 -67 -33.5l0 -323h-83v700h83v-302q27 15 71.5 30q44.5 15 100.5 15q42 0 77.5 -9.5q35.5 -9.5 60.5 -32q25 -22.5 39 -60.5q14 -38 14 -94v-173h92v-203h-58l-15 129z" />
-<glyph unicode="&#1319;" horiz-adv-x="579" d="M398 0v285q0 39 -4.5 68.5q-4.5 29.5 -16.5 49q-12 19.5 -32.5 29.5q-20.5 10 -53.5 10q-47 0 -85 -30.5q-38 -30.5 -49 -78.5l0 -333h-80v700h80v-256h4q26 31 62.5 49.5q36.5 18.5 90.5 18.5q42 0 73 -9.5q31 -9.5 51.5 -33.5q20.5 -24 30 -64.5q9.5 -40.5 9.5 -102.5v-232h74v-197h-54l-15 127z" />
-<glyph unicode="&#7728;" horiz-adv-x="610" d="M215 324h-47v-324h-83v700h83v-326l45 14l235 312h96l-234 -301l-42 -33l51 -40l256 -326h-105zM315 870h114v-21l-163 -97l-69 0z" />
-<glyph unicode="&#7729;" horiz-adv-x="479" d="M203 225h-46v-225h-80v700h80v-426l41 14l155 212h93l-153 -201l-41 -33l50 -40l167 -226h-99zM291 720h89v-21l-101 -128l-47 0z" />
-<glyph unicode="&#7742;" horiz-adv-x="791" d="M623 470l10 105h-5l-38 -96l-182 -316h-25l-193 317l-36 95h-5l14 -104v-471h-78v700h62l219 -358l33 -78h2l31 80l209 356h65v-700h-83zM450 870h114v-21l-163 -97l-69 0z" />
-<glyph unicode="&#7743;" horiz-adv-x="812" d="M370 0v283q0 40 -3.5 69.5q-3.5 29.5 -13.5 49.5q-10 20 -28.5 30q-18.5 10 -48.5 10q-46 0 -76.5 -28q-30.5 -28 -42.5 -70l0 -344h-80v500h56l15 -61h4q27 32 62.5 52.5q35.5 20.5 92.5 20.5q48 0 78.5 -18.5q30.5 -18.5 47.5 -64.5q23 39 63.5 61q40.5 22 91.5 22q42 0 71 -9.5q29 -9.5 48 -33.5q19 -24 27.5 -65q8.5 -41 8.5 -104v-300h-80v301q0 36 -3.5 62.5q-3.5 26.5 -14 44q-10.5 17.5 -29 26q-18.5 8.5 -48.5 8.5q-50 0 -78 -28q-28 -28 -40 -80l0 -334zM425 720h89v-21l-101 -128l-47 0z" />
-<glyph unicode="&#7764;" horiz-adv-x="559" d="M85 693q38 9 82 12q44 3 87 3q46 0 93.5 -9q47.5 -9 86.5 -33q39 -24 63.5 -66q24.5 -42 24.5 -107q0 -64 -23 -108q-23 -44 -61 -71.5q-38 -27.5 -87 -39.5q-49 -12 -101 -12q-5 0 -16.5 0q-11.5 0 -24 0.5q-12.5 0.5 -24.5 1.5q-12 1 -17 2l0 -266h-83zM256 636q-26 0 -50 -1q-24 -1 -38 -5l0 -290q5 -2 16 -2.5q11 -0.5 23 -1q12 -0.5 23 -0.5q11 0 16 0q34 0 67.5 6.5q33.5 6.5 60.5 23.5q27 17 43.5 48q16.5 31 16.5 79q0 41 -15.5 68.5q-15.5 27.5 -41 44q-25.5 16.5 -57.5 23.5q-32 7 -64 7zt0 0zM320 870h114v-21l-163 -97l-69 0z" />
-<glyph unicode="&#7765;" horiz-adv-x="541" d="M77 500h55l15 -60h4q23 35 59.5 53.5q36.5 18.5 83.5 18.5q100 0 149 -59q49 -59 49 -193q0 -63 -16.5 -113.5q-16.5 -50.5 -46.5 -85.5q-30 -35 -72.5 -54q-42.5 -19 -94.5 -19q-37 0 -58.5 4.5q-21.5 4.5 -46.5 15.5l0 -208h-80zM279 442q-51 0 -80.5 -26.5q-29.5 -26.5 -41.5 -80.5l0 -248q18 -14 41 -21.5q23 -7.5 61 -7.5q69 0 109.5 51.5q40.5 51.5 40.5 151.5q0 41 -7 74.5q-7 33.5 -22.5 57q-15.5 23.5 -40 36.5q-24.5 13 -60.5 13zt0 0zM294 720h89v-21l-101 -128l-47 0z" />
-<glyph unicode="&#7838;" horiz-adv-x="667" d="M429 603q-9 8 -24 15q-15 7 -34 12.5q-19 5.5 -40.5 8.5q-21.5 3 -43.5 3q-44 0 -68.5 -16.5q-24.5 -16.5 -35.5 -43.5q-11 -27 -13 -62q-2 -35 -2 -73v-447h-83v478q0 48 8.5 91q8.5 43 31.5 74.5q23 31.5 63 50q40 18.5 104 18.5q83 0 142.5 -24.5q59.5 -24.5 103.5 -58.5l-162 -198l-33 -29v-2l33 7q97 -1 151.5 -52.5q54.5 -51.5 54.5 -141.5q0 -108 -61 -166.5q-61 -58.5 -168 -58.5q-9 0 -25 1q-16 1 -34 3q-18 2 -35 5.5q-17 3.5 -29 9.5l13 75q9 -6 23.5 -9.5q14.5 -3.5 30.5 -6q16 -2.5 31 -3.5q15 -1 26 -1q70 2 104 39q34 37 36 103q0 70 -44 103.5q-44 33.5 -128 33.5h-62l0 59z" />
-<glyph unicode="&#8209;" horiz-adv-x="360" d="M59 325h242v-74l-242 0z" />
-<glyph unicode="&#8211;" horiz-adv-x="660" d="M118 325h424v-74l-424 0z" />
-<glyph unicode="&#8212;" horiz-adv-x="820" d="M118 325h584v-74l-584 0z" />
-<glyph unicode="&#8216;" horiz-adv-x="194" d="M155 620q0 -23 -15 -36.5q-15 -13.5 -38 -13.5q-27 0 -44.5 18q-17.5 18 -17.5 53q0 33 9.5 56.5q9.5 23.5 23 40q13.5 16.5 28 26.5q14.5 10 25.5 14l25 -35q-22 -11 -35.5 -29.5q-13.5 -18.5 -13.5 -46.5q4 1 11 1q20 0 31 -14t11 -34z" />
-<glyph unicode="&#8217;" horiz-adv-x="194" d="M40 659q0 23 14.5 36q14.5 13 37.5 13q28 0 45.5 -17.5q17.5 -17.5 17.5 -52.5q0 -33 -9.5 -57q-9.5 -24 -23 -40.5q-13.5 -16.5 -28.5 -26.5q-15 -10 -26 -14l-25 34q23 12 36 30q13 18 13 47q-4 -1 -11 -1q-19 0 -30 13.5t-11 35.5z" />
-<glyph unicode="&#8218;" horiz-adv-x="194" d="M40 49q0 23 14.5 36q14.5 13 37.5 13q28 0 45.5 -17.5q17.5 -17.5 17.5 -52.5q0 -33 -9.5 -57q-9.5 -24 -23 -40.5q-13.5 -16.5 -28.5 -26.5q-15 -10 -26 -14l-25 34q23 12 36 30q13 18 13 47q-4 -1 -11 -1q-19 0 -30 13.5t-11 35.5z" />
-<glyph unicode="&#8220;" horiz-adv-x="340" d="M301 620q0 -23 -15 -36.5q-15 -13.5 -38 -13.5q-27 0 -44.5 18q-17.5 18 -17.5 53q0 33 9.5 56.5q9.5 23.5 23 40q13.5 16.5 28 26.5q14.5 10 25.5 14l25 -35q-22 -11 -35.5 -29.5q-13.5 -18.5 -13.5 -46.5q4 1 11 1q20 0 31 -14q11 -14 11 -34zt0 0zM155 620q0 -23 -15 -36.5q-15 -13.5 -38 -13.5q-27 0 -44.5 18q-17.5 18 -17.5 53q0 33 9.5 56.5q9.5 23.5 23 40q13.5 16.5 28 26.5q14.5 10 25.5 14l25 -35q-22 -11 -35.5 -29.5q-13.5 -18.5 -13.5 -46.5q4 1 11 1q20 0 31 -14t11 -34z" />
-<glyph unicode="&#8221;" horiz-adv-x="340" d="M186 659q0 23 14.5 36q14.5 13 37.5 13q28 0 45.5 -17.5q17.5 -17.5 17.5 -52.5q0 -33 -9.5 -57q-9.5 -24 -23 -40.5q-13.5 -16.5 -28.5 -26.5q-15 -10 -26 -14l-25 34q23 12 36 30q13 18 13 47q-4 -1 -11 -1q-19 0 -30 13.5q-11 13.5 -11 35.5zt0 0zM40 659q0 23 14.5 36q14.5 13 37.5 13q28 0 45.5 -17.5q17.5 -17.5 17.5 -52.5q0 -33 -9.5 -57q-9.5 -24 -23 -40.5q-13.5 -16.5 -28.5 -26.5q-15 -10 -26 -14l-25 34q23 12 36 30q13 18 13 47q-4 -1 -11 -1q-19 0 -30 13.5t-11 35.5z" />
-<glyph unicode="&#8222;" horiz-adv-x="340" d="M186 49q0 23 14.5 36q14.5 13 37.5 13q28 0 45.5 -17.5q17.5 -17.5 17.5 -52.5q0 -33 -9.5 -57q-9.5 -24 -23 -40.5q-13.5 -16.5 -28.5 -26.5q-15 -10 -26 -14l-25 34q23 12 36 30q13 18 13 47q-4 -1 -11 -1q-19 0 -30 13.5q-11 13.5 -11 35.5zt0 0zM40 49q0 23 14.5 36q14.5 13 37.5 13q28 0 45.5 -17.5q17.5 -17.5 17.5 -52.5q0 -33 -9.5 -57q-9.5 -24 -23 -40.5q-13.5 -16.5 -28.5 -26.5q-15 -10 -26 -14l-25 34q23 12 36 30q13 18 13 47q-4 -1 -11 -1q-19 0 -30 13.5t-11 35.5z" />
-<glyph unicode="&#8224;" horiz-adv-x="486" d="M40 502h131l43 -11l-11 47v162h80v-162l-11 -47l43 11h131v-72h-133l-41 11l11 -42v-399l-15 -200h-50l-15 201v398l11 42l-43 -11l-131 0z" />
-<glyph unicode="&#8225;" horiz-adv-x="486" d="M203 400l11 41l-43 -11h-131v72h131l43 -11l-11 46v163h80v-163l-11 -46l43 11h131v-72h-133l-41 11l11 -41v-124l-11 -41l41 11h133v-72h-131l-43 11l11 -46v-139l-16 -200h-48l-16 201v138l11 46l-43 -11h-131v72h131l43 -11l-11 41z" />
-<glyph unicode="&#8226;" horiz-adv-x="452" d="M87 311q0 31 11 56.5q11 25.5 29.5 44q18.5 18.5 44 28.5q25.5 10 54.5 10q29 0 54.5 -9.5q25.5 -9.5 44 -27.5q18.5 -18 29.5 -43.5q11 -25.5 11 -58.5q0 -33 -11 -58.5q-11 -25.5 -29.5 -43.5q-18.5 -18 -44 -27.5q-25.5 -9.5 -54.5 -9.5q-29 0 -54.5 9.5q-25.5 9.5 -44 27.5q-18.5 18 -29.5 43.5t-11 58.5z" />
-<glyph unicode="&#8230;" horiz-adv-x="759" d="M579 46q0 27 15.5 42.5q15.5 15.5 41.5 15.5q27 0 43 -15.5q16 -15.5 16 -42.5q0 -26 -16 -42q-16 -16 -43 -16q-26 0 -41.5 16q-15.5 16 -15.5 42zt0 0zM325 46q0 27 15.5 42.5q15.5 15.5 41.5 15.5q27 0 43 -15.5q16 -15.5 16 -42.5q0 -26 -16 -42q-16 -16 -43 -16q-26 0 -41.5 16q-15.5 16 -15.5 42zt0 0zM71 46q0 27 15.5 42.5q15.5 15.5 41.5 15.5q27 0 43 -15.5q16 -15.5 16 -42.5q0 -26 -16 -42q-16 -16 -43 -16q-26 0 -41.5 16t-15.5 42z" />
-<glyph unicode="&#8240;" horiz-adv-x="1147" d="M70 542q0 45 12 77q12 32 32.5 53q20.5 21 49 30.5q28.5 9.5 61.5 9.5q33 0 61.5 -9q28.5 -9 49 -29q20.5 -20 32.5 -52.5q12 -32.5 12 -79.5q0 -47 -12 -79.5q-12 -32.5 -32.5 -52.5q-20.5 -20 -49 -29q-28.5 -9 -61.5 -9q-33 0 -61.5 9q-28.5 9 -49 29q-20.5 20 -32.5 52.5q-12 32.5 -12 79.5zt0 0zM144 542q0 -60 21.5 -86q21.5 -26 59.5 -26q19 0 34 5.5q15 5.5 25.5 18q10.5 12.5 16 34q5.5 21.5 5.5 54.5q0 33 -5.5 54.5q-5.5 21.5 -16 34q-10.5 12.5 -25.5 18q-15 5.5 -34 5.5q-38 0 -59.5 -23.5q-21.5 -23.5 -21.5 -88.5zt0 0zM426 170q0 45 12 77q12 32 32.5 53q20.5 21 49 30.5q28.5 9.5 61.5 9.5q33 0 61.5 -9q28.5 -9 49 -29q20.5 -20 32.5 -52.5q12 -32.5 12 -79.5q0 -47 -12 -79.5q-12 -32.5 -32.5 -52.5q-20.5 -20 -49 -29q-28.5 -9 -61.5 -9q-33 0 -61.5 9q-28.5 9 -49 29q-20.5 20 -32.5 52.5q-12 32.5 -12 79.5zt0 0zM500 170q0 -60 21.5 -86q21.5 -26 59.5 -26q19 0 34 5.5q15 5.5 25.5 18q10.5 12.5 16 34q5.5 21.5 5.5 54.5q0 33 -5.5 54.5q-5.5 21.5 -16 34q-10.5 12.5 -25.5 18q-15 5.5 -34 5.5q-38 0 -59.5 -23.5q-21.5 -23.5 -21.5 -88.5zt0 0zM783 170q0 45 12 77q12 32 32.5 53q20.5 21 49 30.5q28.5 9.5 61.5 9.5q33 0 61.5 -9q28.5 -9 49 -29q20.5 -20 32.5 -52.5q12 -32.5 12 -79.5q0 -47 -12 -79.5q-12 -32.5 -32.5 -52.5q-20.5 -20 -49 -29q-28.5 -9 -61.5 -9q-33 0 -61.5 9q-28.5 9 -49 29q-20.5 20 -32.5 52.5q-12 32.5 -12 79.5zt0 0zM857 170q0 -60 21.5 -86q21.5 -26 59.5 -26q19 0 34 5.5q15 5.5 25.5 18q10.5 12.5 16 34q5.5 21.5 5.5 54.5q0 33 -5.5 54.5q-5.5 21.5 -16 34q-10.5 12.5 -25.5 18q-15 5.5 -34 5.5q-38 0 -59.5 -23.5q-21.5 -23.5 -21.5 -88.5zt0 0zM637 713l49 -38l-513 -687l-50 39z" />
-<glyph unicode="&#8249;" horiz-adv-x="297" d="M39 259l160 230l53 -43l-97 -145l-48 -41l48 -36l103 -142l-53 -44z" />
-<glyph unicode="&#8250;" horiz-adv-x="297" d="M258 268l-160 -230l-53 43l97 145l48 41l-48 36l-103 142l53 44z" />
-<glyph unicode="&#8260;" horiz-adv-x="184" d="M310 713l52 -35l-487 -690l-52 36z" />
-<glyph unicode="&#8321;" horiz-adv-x="394" d="M72 -39h106v254l7 36l-27 -28l-78 -47l-27 49l154 102h41v-366h95v-61l-271 0z" />
-<glyph unicode="&#8322;" horiz-adv-x="394" d="M319 210q0 -31 -10.5 -60q-10.5 -29 -28 -57q-17.5 -28 -41.5 -55.5q-24 -27.5 -51 -55.5l-46 -32v-2l57 15h140v-63h-291v33q23 19 57.5 51q34.5 32 66.5 69q32 37 54.5 76q22.5 39 22.5 72q0 31 -20 46.5q-20 15.5 -49 15.5q-27 0 -52.5 -9.5q-25.5 -9.5 -44.5 -21.5l-22 57q26 18 60.5 28q34.5 10 70.5 10q63 0 95 -31t32 -86z" />
-<glyph unicode="&#8323;" horiz-adv-x="394" d="M169 -47q48 0 73.5 19q25.5 19 25.5 56q0 32 -23 52q-23 20 -74 20h-55v23l97 116l34 27l-49 -6h-130v60h256v-33l-103 -123l-25 -18v-2l23 3q55 -1 87 -33q32 -32 32 -86q0 -61 -44.5 -98q-44.5 -37 -118.5 -37q-36 0 -62 6q-26 6 -46 13l15 60q17 -8 39 -13.5t48 -5.5z" />
-<glyph unicode="&#8324;" horiz-adv-x="394" d="M379 -4h-83v-96h-67v96h-204v37l226 302h45v-280h83zM229 183l6 49h-2l-22 -46l-78 -105l-33 -31l50 5l79 0z" />
-<glyph unicode="&#8364;" horiz-adv-x="545" d="M28 454h63q12 67 37.5 116q25.5 49 62 80.5q36.5 31.5 81.5 46.5q45 15 96 15q51 0 88 -6.5q37 -6.5 64 -17.5l-21 -73q-23 11 -54 17q-31 6 -75 6q-33 0 -64 -10q-31 -10 -56.5 -32.5q-25.5 -22.5 -45 -57.5q-19.5 -35 -29.5 -84l282 0l-17 -66h-274q-1 -11 -1 -19q0 -8 0 -19q0 -10 0 -16.5q0 -6.5 1 -15.5l254 0l-17 -66h-230q18 -94 71.5 -142q53.5 -48 138.5 -48q39 0 71.5 9q32.5 9 55.5 23l20 -65q-30 -23 -74.5 -32q-44.5 -9 -89.5 -9q-114 0 -185.5 65q-71.5 65 -91.5 199l-79 0l18 66h55q-1 9 -1 15.5q0 6.5 0 16.5q0 11 0 19q0 8 1 19l-73 0z" />
-<glyph unicode="&#8372;" horiz-adv-x="545" d="M450 317v-66h-229q-11 -11 -21.5 -25q-10.5 -14 -19 -30q-8.5 -16 -14 -32.5q-5.5 -16.5 -5.5 -31.5q0 -36 28 -55.5q28 -19.5 94 -19.5q47 0 78 9.5q31 9.5 54 21.5l24 -64q-23 -14 -62.5 -25q-39.5 -11 -108.5 -11q-96 0 -143 35.5q-47 35.5 -47 100.5q0 18 6 37.5q6 19.5 15 36.5q9 17 18.5 31q9.5 14 15.5 22l-92 0v66zM41 388v66h236q25 26 39.5 58q14.5 32 14.5 63q0 35 -23.5 51q-23.5 16 -80.5 16q-40 0 -67.5 -9q-27.5 -9 -50.5 -20l-25 67q14 7 29 12.5q15 5.5 33.5 10q18.5 4.5 41.5 7q23 2.5 54 2.5q85 0 128 -31q43 -31 43 -94q0 -38 -15 -72.5q-15 -34.5 -37 -60.5l89 0l0 -66z" />
-<glyph unicode="&#8374;" horiz-adv-x="545" d="M33 336h71v357q38 9 81.5 12q43.5 3 86.5 3q46 0 90.5 -9q44.5 -9 79 -33q34.5 -24 55.5 -65q21 -41 21 -105q0 -63 -21.5 -105q-21.5 -42 -57 -68q-35.5 -26 -81 -37q-45.5 -11 -92.5 -12l-79 -1v-71h166v-62h-166v-140h-83v140h-71v62h71v72h-71zM274 638q-26 0 -49.5 -1.5q-23.5 -1.5 -37.5 -4.5l0 -290h76q30 0 60 6q30 6 54 23q24 17 39 46.5q15 29.5 14 77.5q1 41 -11.5 68.5q-12.5 27.5 -34 44q-21.5 16.5 -50 23.5t-60.5 7z" />
-<glyph unicode="&#8375;" horiz-adv-x="545" d="M33 336h71v357q38 9 81.5 12q43.5 3 86.5 3q46 0 90.5 -9q44.5 -9 79 -33q34.5 -24 55.5 -65q21 -41 21 -105q0 -63 -21.5 -105q-21.5 -42 -57 -68q-35.5 -26 -81 -37q-45.5 -11 -92.5 -12l-79 -1v-71h166v-62h-166v-140h-83v140h-71v62h71v72h-71zM274 638q-26 0 -49.5 -1.5q-23.5 -1.5 -37.5 -4.5l0 -290h76q30 0 60 6q30 6 54 23q24 17 39 46.5q15 29.5 14 77.5q1 41 -11.5 68.5q-12.5 27.5 -34 44q-21.5 16.5 -50 23.5t-60.5 7z" />
-<glyph unicode="&#8377;" horiz-adv-x="545" d="M33 336h71v357q38 9 81.5 12q43.5 3 86.5 3q46 0 90.5 -9q44.5 -9 79 -33q34.5 -24 55.5 -65q21 -41 21 -105q0 -63 -21.5 -105q-21.5 -42 -57 -68q-35.5 -26 -81 -37q-45.5 -11 -92.5 -12l-79 -1v-71h166v-62h-166v-140h-83v140h-71v62h71v72h-71zM274 638q-26 0 -49.5 -1.5q-23.5 -1.5 -37.5 -4.5l0 -290h76q30 0 60 6q30 6 54 23q24 17 39 46.5q15 29.5 14 77.5q1 41 -11.5 68.5q-12.5 27.5 -34 44q-21.5 16.5 -50 23.5t-60.5 7z" />
-<glyph unicode="&#8378;" horiz-adv-x="545" d="M33 336h71v357q38 9 81.5 12q43.5 3 86.5 3q46 0 90.5 -9q44.5 -9 79 -33q34.5 -24 55.5 -65q21 -41 21 -105q0 -63 -21.5 -105q-21.5 -42 -57 -68q-35.5 -26 -81 -37q-45.5 -11 -92.5 -12l-79 -1v-71h166v-62h-166v-140h-83v140h-71v62h71v72h-71zM274 638q-26 0 -49.5 -1.5q-23.5 -1.5 -37.5 -4.5l0 -290h76q30 0 60 6q30 6 54 23q24 17 39 46.5q15 29.5 14 77.5q1 41 -11.5 68.5q-12.5 27.5 -34 44q-21.5 16.5 -50 23.5t-60.5 7z" />
-<glyph unicode="&#8379;" horiz-adv-x="545" d="M33 336h71v357q38 9 81.5 12q43.5 3 86.5 3q46 0 90.5 -9q44.5 -9 79 -33q34.5 -24 55.5 -65q21 -41 21 -105q0 -63 -21.5 -105q-21.5 -42 -57 -68q-35.5 -26 -81 -37q-45.5 -11 -92.5 -12l-79 -1v-71h166v-62h-166v-140h-83v140h-71v62h71v72h-71zM274 638q-26 0 -49.5 -1.5q-23.5 -1.5 -37.5 -4.5l0 -290h76q30 0 60 6q30 6 54 23q24 17 39 46.5q15 29.5 14 77.5q1 41 -11.5 68.5q-12.5 27.5 -34 44q-21.5 16.5 -50 23.5t-60.5 7z" />
-<glyph unicode="&#8380;" horiz-adv-x="545" d="M33 336h71v357q38 9 81.5 12q43.5 3 86.5 3q46 0 90.5 -9q44.5 -9 79 -33q34.5 -24 55.5 -65q21 -41 21 -105q0 -63 -21.5 -105q-21.5 -42 -57 -68q-35.5 -26 -81 -37q-45.5 -11 -92.5 -12l-79 -1v-71h166v-62h-166v-140h-83v140h-71v62h71v72h-71zM274 638q-26 0 -49.5 -1.5q-23.5 -1.5 -37.5 -4.5l0 -290h76q30 0 60 6q30 6 54 23q24 17 39 46.5q15 29.5 14 77.5q1 41 -11.5 68.5q-12.5 27.5 -34 44q-21.5 16.5 -50 23.5t-60.5 7z" />
-<glyph unicode="&#8381;" horiz-adv-x="545" d="M33 336h71v357q38 9 81.5 12q43.5 3 86.5 3q46 0 90.5 -9q44.5 -9 79 -33q34.5 -24 55.5 -65q21 -41 21 -105q0 -63 -21.5 -105q-21.5 -42 -57 -68q-35.5 -26 -81 -37q-45.5 -11 -92.5 -12l-79 -1v-71h166v-62h-166v-140h-83v140h-71v62h71v72h-71zM274 638q-26 0 -49.5 -1.5q-23.5 -1.5 -37.5 -4.5l0 -290h76q30 0 60 6q30 6 54 23q24 17 39 46.5q15 29.5 14 77.5q1 41 -11.5 68.5q-12.5 27.5 -34 44q-21.5 16.5 -50 23.5t-60.5 7z" />
-<glyph unicode="&#8382;" horiz-adv-x="545" d="M33 336h71v357q38 9 81.5 12q43.5 3 86.5 3q46 0 90.5 -9q44.5 -9 79 -33q34.5 -24 55.5 -65q21 -41 21 -105q0 -63 -21.5 -105q-21.5 -42 -57 -68q-35.5 -26 -81 -37q-45.5 -11 -92.5 -12l-79 -1v-71h166v-62h-166v-140h-83v140h-71v62h71v72h-71zM274 638q-26 0 -49.5 -1.5q-23.5 -1.5 -37.5 -4.5l0 -290h76q30 0 60 6q30 6 54 23q24 17 39 46.5q15 29.5 14 77.5q1 41 -11.5 68.5q-12.5 27.5 -34 44q-21.5 16.5 -50 23.5t-60.5 7z" />
-<glyph unicode="&#8383;" horiz-adv-x="545" d="M33 336h71v357q38 9 81.5 12q43.5 3 86.5 3q46 0 90.5 -9q44.5 -9 79 -33q34.5 -24 55.5 -65q21 -41 21 -105q0 -63 -21.5 -105q-21.5 -42 -57 -68q-35.5 -26 -81 -37q-45.5 -11 -92.5 -12l-79 -1v-71h166v-62h-166v-140h-83v140h-71v62h71v72h-71zM274 638q-26 0 -49.5 -1.5q-23.5 -1.5 -37.5 -4.5l0 -290h76q30 0 60 6q30 6 54 23q24 17 39 46.5q15 29.5 14 77.5q1 41 -11.5 68.5q-12.5 27.5 -34 44q-21.5 16.5 -50 23.5t-60.5 7z" />
-<glyph unicode="&#8384;" horiz-adv-x="545" d="M33 336h71v357q38 9 81.5 12q43.5 3 86.5 3q46 0 90.5 -9q44.5 -9 79 -33q34.5 -24 55.5 -65q21 -41 21 -105q0 -63 -21.5 -105q-21.5 -42 -57 -68q-35.5 -26 -81 -37q-45.5 -11 -92.5 -12l-79 -1v-71h166v-62h-166v-140h-83v140h-71v62h71v72h-71zM274 638q-26 0 -49.5 -1.5q-23.5 -1.5 -37.5 -4.5l0 -290h76q30 0 60 6q30 6 54 23q24 17 39 46.5q15 29.5 14 77.5q1 41 -11.5 68.5q-12.5 27.5 -34 44q-21.5 16.5 -50 23.5t-60.5 7z" />
-<glyph unicode="&#8385;" horiz-adv-x="545" d="M33 336h71v357q38 9 81.5 12q43.5 3 86.5 3q46 0 90.5 -9q44.5 -9 79 -33q34.5 -24 55.5 -65q21 -41 21 -105q0 -63 -21.5 -105q-21.5 -42 -57 -68q-35.5 -26 -81 -37q-45.5 -11 -92.5 -12l-79 -1v-71h166v-62h-166v-140h-83v140h-71v62h71v72h-71zM274 638q-26 0 -49.5 -1.5q-23.5 -1.5 -37.5 -4.5l0 -290h76q30 0 60 6q30 6 54 23q24 17 39 46.5q15 29.5 14 77.5q1 41 -11.5 68.5q-12.5 27.5 -34 44q-21.5 16.5 -50 23.5t-60.5 7z" />
-<glyph unicode="&#8386;" horiz-adv-x="545" d="M33 336h71v357q38 9 81.5 12q43.5 3 86.5 3q46 0 90.5 -9q44.5 -9 79 -33q34.5 -24 55.5 -65q21 -41 21 -105q0 -63 -21.5 -105q-21.5 -42 -57 -68q-35.5 -26 -81 -37q-45.5 -11 -92.5 -12l-79 -1v-71h166v-62h-166v-140h-83v140h-71v62h71v72h-71zM274 638q-26 0 -49.5 -1.5q-23.5 -1.5 -37.5 -4.5l0 -290h76q30 0 60 6q30 6 54 23q24 17 39 46.5q15 29.5 14 77.5q1 41 -11.5 68.5q-12.5 27.5 -34 44q-21.5 16.5 -50 23.5t-60.5 7z" />
-<glyph unicode="&#8387;" horiz-adv-x="545" d="M33 336h71v357q38 9 81.5 12q43.5 3 86.5 3q46 0 90.5 -9q44.5 -9 79 -33q34.5 -24 55.5 -65q21 -41 21 -105q0 -63 -21.5 -105q-21.5 -42 -57 -68q-35.5 -26 -81 -37q-45.5 -11 -92.5 -12l-79 -1v-71h166v-62h-166v-140h-83v140h-71v62h71v72h-71zM274 638q-26 0 -49.5 -1.5q-23.5 -1.5 -37.5 -4.5l0 -290h76q30 0 60 6q30 6 54 23q24 17 39 46.5q15 29.5 14 77.5q1 41 -11.5 68.5q-12.5 27.5 -34 44q-21.5 16.5 -50 23.5t-60.5 7z" />
-<glyph unicode="&#8388;" horiz-adv-x="545" d="M33 336h71v357q38 9 81.5 12q43.5 3 86.5 3q46 0 90.5 -9q44.5 -9 79 -33q34.5 -24 55.5 -65q21 -41 21 -105q0 -63 -21.5 -105q-21.5 -42 -57 -68q-35.5 -26 -81 -37q-45.5 -11 -92.5 -12l-79 -1v-71h166v-62h-166v-140h-83v140h-71v62h71v72h-71zM274 638q-26 0 -49.5 -1.5q-23.5 -1.5 -37.5 -4.5l0 -290h76q30 0 60 6q30 6 54 23q24 17 39 46.5q15 29.5 14 77.5q1 41 -11.5 68.5q-12.5 27.5 -34 44q-21.5 16.5 -50 23.5t-60.5 7z" />
-<glyph unicode="&#8389;" horiz-adv-x="545" d="M33 336h71v357q38 9 81.5 12q43.5 3 86.5 3q46 0 90.5 -9q44.5 -9 79 -33q34.5 -24 55.5 -65q21 -41 21 -105q0 -63 -21.5 -105q-21.5 -42 -57 -68q-35.5 -26 -81 -37q-45.5 -11 -92.5 -12l-79 -1v-71h166v-62h-166v-140h-83v140h-71v62h71v72h-71zM274 638q-26 0 -49.5 -1.5q-23.5 -1.5 -37.5 -4.5l0 -290h76q30 0 60 6q30 6 54 23q24 17 39 46.5q15 29.5 14 77.5q1 41 -11.5 68.5q-12.5 27.5 -34 44q-21.5 16.5 -50 23.5t-60.5 7z" />
-<glyph unicode="&#8390;" horiz-adv-x="545" d="M33 336h71v357q38 9 81.5 12q43.5 3 86.5 3q46 0 90.5 -9q44.5 -9 79 -33q34.5 -24 55.5 -65q21 -41 21 -105q0 -63 -21.5 -105q-21.5 -42 -57 -68q-35.5 -26 -81 -37q-45.5 -11 -92.5 -12l-79 -1v-71h166v-62h-166v-140h-83v140h-71v62h71v72h-71zM274 638q-26 0 -49.5 -1.5q-23.5 -1.5 -37.5 -4.5l0 -290h76q30 0 60 6q30 6 54 23q24 17 39 46.5q15 29.5 14 77.5q1 41 -11.5 68.5q-12.5 27.5 -34 44q-21.5 16.5 -50 23.5t-60.5 7z" />
-<glyph unicode="&#8391;" horiz-adv-x="545" d="M33 336h71v357q38 9 81.5 12q43.5 3 86.5 3q46 0 90.5 -9q44.5 -9 79 -33q34.5 -24 55.5 -65q21 -41 21 -105q0 -63 -21.5 -105q-21.5 -42 -57 -68q-35.5 -26 -81 -37q-45.5 -11 -92.5 -12l-79 -1v-71h166v-62h-166v-140h-83v140h-71v62h71v72h-71zM274 638q-26 0 -49.5 -1.5q-23.5 -1.5 -37.5 -4.5l0 -290h76q30 0 60 6q30 6 54 23q24 17 39 46.5q15 29.5 14 77.5q1 41 -11.5 68.5q-12.5 27.5 -34 44q-21.5 16.5 -50 23.5t-60.5 7z" />
-<glyph unicode="&#8392;" horiz-adv-x="545" d="M33 336h71v357q38 9 81.5 12q43.5 3 86.5 3q46 0 90.5 -9q44.5 -9 79 -33q34.5 -24 55.5 -65q21 -41 21 -105q0 -63 -21.5 -105q-21.5 -42 -57 -68q-35.5 -26 -81 -37q-45.5 -11 -92.5 -12l-79 -1v-71h166v-62h-166v-140h-83v140h-71v62h71v72h-71zM274 638q-26 0 -49.5 -1.5q-23.5 -1.5 -37.5 -4.5l0 -290h76q30 0 60 6q30 6 54 23q24 17 39 46.5q15 29.5 14 77.5q1 41 -11.5 68.5q-12.5 27.5 -34 44q-21.5 16.5 -50 23.5t-60.5 7z" />
-<glyph unicode="&#8393;" horiz-adv-x="545" d="M33 336h71v357q38 9 81.5 12q43.5 3 86.5 3q46 0 90.5 -9q44.5 -9 79 -33q34.5 -24 55.5 -65q21 -41 21 -105q0 -63 -21.5 -105q-21.5 -42 -57 -68q-35.5 -26 -81 -37q-45.5 -11 -92.5 -12l-79 -1v-71h166v-62h-166v-140h-83v140h-71v62h71v72h-71zM274 638q-26 0 -49.5 -1.5q-23.5 -1.5 -37.5 -4.5l0 -290h76q30 0 60 6q30 6 54 23q24 17 39 46.5q15 29.5 14 77.5q1 41 -11.5 68.5q-12.5 27.5 -34 44q-21.5 16.5 -50 23.5t-60.5 7z" />
-<glyph unicode="&#8394;" horiz-adv-x="545" d="M33 336h71v357q38 9 81.5 12q43.5 3 86.5 3q46 0 90.5 -9q44.5 -9 79 -33q34.5 -24 55.5 -65q21 -41 21 -105q0 -63 -21.5 -105q-21.5 -42 -57 -68q-35.5 -26 -81 -37q-45.5 -11 -92.5 -12l-79 -1v-71h166v-62h-166v-140h-83v140h-71v62h71v72h-71zM274 638q-26 0 -49.5 -1.5q-23.5 -1.5 -37.5 -4.5l0 -290h76q30 0 60 6q30 6 54 23q24 17 39 46.5q15 29.5 14 77.5q1 41 -11.5 68.5q-12.5 27.5 -34 44q-21.5 16.5 -50 23.5t-60.5 7z" />
-<glyph unicode="&#8395;" horiz-adv-x="545" d="M33 336h71v357q38 9 81.5 12q43.5 3 86.5 3q46 0 90.5 -9q44.5 -9 79 -33q34.5 -24 55.5 -65q21 -41 21 -105q0 -63 -21.5 -105q-21.5 -42 -57 -68q-35.5 -26 -81 -37q-45.5 -11 -92.5 -12l-79 -1v-71h166v-62h-166v-140h-83v140h-71v62h71v72h-71zM274 638q-26 0 -49.5 -1.5q-23.5 -1.5 -37.5 -4.5l0 -290h76q30 0 60 6q30 6 54 23q24 17 39 46.5q15 29.5 14 77.5q1 41 -11.5 68.5q-12.5 27.5 -34 44q-21.5 16.5 -50 23.5t-60.5 7z" />
-<glyph unicode="&#8396;" horiz-adv-x="545" d="M33 336h71v357q38 9 81.5 12q43.5 3 86.5 3q46 0 90.5 -9q44.5 -9 79 -33q34.5 -24 55.5 -65q21 -41 21 -105q0 -63 -21.5 -105q-21.5 -42 -57 -68q-35.5 -26 -81 -37q-45.5 -11 -92.5 -12l-79 -1v-71h166v-62h-166v-140h-83v140h-71v62h71v72h-71zM274 638q-26 0 -49.5 -1.5q-23.5 -1.5 -37.5 -4.5l0 -290h76q30 0 60 6q30 6 54 23q24 17 39 46.5q15 29.5 14 77.5q1 41 -11.5 68.5q-12.5 27.5 -34 44q-21.5 16.5 -50 23.5t-60.5 7z" />
-<glyph unicode="&#8397;" horiz-adv-x="545" d="M33 336h71v357q38 9 81.5 12q43.5 3 86.5 3q46 0 90.5 -9q44.5 -9 79 -33q34.5 -24 55.5 -65q21 -41 21 -105q0 -63 -21.5 -105q-21.5 -42 -57 -68q-35.5 -26 -81 -37q-45.5 -11 -92.5 -12l-79 -1v-71h166v-62h-166v-140h-83v140h-71v62h71v72h-71zM274 638q-26 0 -49.5 -1.5q-23.5 -1.5 -37.5 -4.5l0 -290h76q30 0 60 6q30 6 54 23q24 17 39 46.5q15 29.5 14 77.5q1 41 -11.5 68.5q-12.5 27.5 -34 44q-21.5 16.5 -50 23.5t-60.5 7z" />
-<glyph unicode="&#8398;" horiz-adv-x="545" d="M33 336h71v357q38 9 81.5 12q43.5 3 86.5 3q46 0 90.5 -9q44.5 -9 79 -33q34.5 -24 55.5 -65q21 -41 21 -105q0 -63 -21.5 -105q-21.5 -42 -57 -68q-35.5 -26 -81 -37q-45.5 -11 -92.5 -12l-79 -1v-71h166v-62h-166v-140h-83v140h-71v62h71v72h-71zM274 638q-26 0 -49.5 -1.5q-23.5 -1.5 -37.5 -4.5l0 -290h76q30 0 60 6q30 6 54 23q24 17 39 46.5q15 29.5 14 77.5q1 41 -11.5 68.5q-12.5 27.5 -34 44q-21.5 16.5 -50 23.5t-60.5 7z" />
-<glyph unicode="&#8399;" horiz-adv-x="545" d="M33 336h71v357q38 9 81.5 12q43.5 3 86.5 3q46 0 90.5 -9q44.5 -9 79 -33q34.5 -24 55.5 -65q21 -41 21 -105q0 -63 -21.5 -105q-21.5 -42 -57 -68q-35.5 -26 -81 -37q-45.5 -11 -92.5 -12l-79 -1v-71h166v-62h-166v-140h-83v140h-71v62h71v72h-71zM274 638q-26 0 -49.5 -1.5q-23.5 -1.5 -37.5 -4.5l0 -290h76q30 0 60 6q30 6 54 23q24 17 39 46.5q15 29.5 14 77.5q1 41 -11.5 68.5q-12.5 27.5 -34 44q-21.5 16.5 -50 23.5t-60.5 7z" />
-<glyph unicode="&#8467;" horiz-adv-x="500" d="M406 30q-22 -14 -57.5 -28q-35.5 -14 -70.5 -14q-63 0 -91.5 30.5q-28.5 30.5 -28.5 95.5v104l-50 -44l-35 44l85 74v254q0 44 10 75.5q10 31.5 27.5 51.5q17.5 20 41 29.5q23.5 9.5 50.5 9.5q48 0 79 -29.5q31 -29.5 31 -89.5q0 -74 -40 -157q-40 -83 -131 -171l0 -140q0 -44 17 -60.5q17 -16.5 41 -16.5q25 0 55 10.5q30 10.5 50 21.5zM333 588q0 34 -14 49q-14 15 -32 15q-12 0 -23 -3.5q-11 -3.5 -19.5 -14q-8.5 -10.5 -13.5 -29q-5 -18.5 -5 -48.5v-212q56 65 81.5 125.5t25.5 117.5z" />
-<glyph unicode="&#8470;" horiz-adv-x="1023" d="M669 313h278v-74h-278zM211 454l-54 105h-4l12 -101v-458h-80v711h44l316 -463l51 -100h5l-11 96v456h80v-711h-46zM650 542q0 45 12 77q12 32 32.5 53q20.5 21 49 30.5q28.5 9.5 61.5 9.5q33 0 61.5 -9q28.5 -9 49 -29q20.5 -20 32.5 -52.5q12 -32.5 12 -79.5q0 -47 -12 -79.5q-12 -32.5 -32.5 -52.5q-20.5 -20 -49 -29q-28.5 -9 -61.5 -9q-33 0 -61.5 9q-28.5 9 -49 29q-20.5 20 -32.5 52.5q-12 32.5 -12 79.5zt0 0zM724 542q0 -60 21.5 -86q21.5 -26 59.5 -26q19 0 34 5.5q15 5.5 25.5 18q10.5 12.5 16 34q5.5 21.5 5.5 54.5q0 33 -5.5 54.5q-5.5 21.5 -16 34q-10.5 12.5 -25.5 18q-15 5.5 -34 5.5q-38 0 -59.5 -23.5t-21.5 -88.5z" />
-<glyph unicode="&#8482;" horiz-adv-x="885" d="M388 632h-136v-292h-78v292h-136v68h350zM770 507l10 103h-4l-39 -85l-87 -140h-33l-89 139l-36 86h-4l13 -102v-168h-73v360h78l105 -168l28 -58h1l30 60l97 166h79v-360l-76 0z" />
-<glyph unicode="&#8494;" horiz-adv-x="600" d="M157 259v-181q62 -59 145 -59q124 0 193 120l35 -21q-43 -66 -99 -100.5q-56 -34.5 -129 -34.5q-59 0 -107 21.5q-48 21.5 -81.5 58.5q-33.5 37 -51.5 87.5q-18 50.5 -18 108.5q0 59 18.5 109.5q18.5 50.5 52.5 87.5q34 37 81.5 58q47.5 21 105.5 21q62 0 109.5 -22q47.5 -22 80.5 -59.5q33 -37.5 50 -87.5q17 -50 19 -107zM448 295v145q-63 60 -147 60q-86 0 -144 -60l0 -145z" />
-<glyph unicode="&#8706;" horiz-adv-x="505" d="M287 510q42 0 62 -7.5q20 -7.5 37 -21.5l5 0q-3 46 -22.5 77.5q-19.5 31.5 -48.5 51q-29 19.5 -64 28.5q-35 9 -69 9q-5 0 -10.5 0q-5.5 0 -10.5 -1l15 66q68 0 122.5 -14.5q54.5 -14.5 92.5 -49.5q38 -35 58 -93q20 -58 20 -145q0 -108 -19.5 -187.5q-19.5 -79.5 -54 -131.5q-34.5 -52 -83 -77.5q-48.5 -25.5 -105.5 -25.5q-96 0 -144 50.5q-48 50.5 -48 143.5q0 60 17 118.5q17 58.5 50.5 105q33.5 46.5 83.5 75.5q50 29 116 29zt0 0zM281 440q-36 0 -68.5 -19.5q-32.5 -19.5 -57 -54.5q-24.5 -35 -38.5 -83.5q-14 -48.5 -14 -105.5q0 -23 6 -45q6 -22 20 -38.5q14 -16.5 36 -26q22 -9.5 54 -9.5q50 0 83 30.5q33 30.5 53 79.5q20 49 28 109q8 60 8 117q-18 21 -43 33.5t-67 12.5z" />
-<glyph unicode="&#8719;" horiz-adv-x="678" d="M511 626h-343v-826h-83v900h509v-900l-83 0z" />
-<glyph unicode="&#8721;" horiz-adv-x="505" d="M125 -90l-40 -36h382v-74h-453v74l224 346l34 30l-35 32l-223 344v74h453v-74h-378l43 -36l215 -334z" />
-<glyph unicode="&#8722;" horiz-adv-x="505" d="M40 374h424v-72l-424 0z" />
-<glyph unicode="&#8725;" horiz-adv-x="505" d="M470 713l52 -35l-487 -690l-52 36z" />
-<glyph unicode="&#8730;" horiz-adv-x="505" d="M167 446l92 -227l23 -114h2l19 116l148 479h75l-226 -711h-31l-157 385h-121l0 72z" />
-<glyph unicode="&#8734;" horiz-adv-x="856" d="M423 285q-36 -58 -88 -90q-52 -32 -110 -32q-35 0 -65.5 12.5q-30.5 12.5 -54 36.5q-23.5 24 -37 58q-13.5 34 -13.5 76q0 45 13 80.5q13 35.5 36.5 60.5q23.5 25 56 38.5q32.5 13.5 71.5 13.5q70 0 120.5 -31.5q50.5 -31.5 80.5 -80.5q43 60 96 86q53 26 111 26q35 0 64.5 -12.5q29.5 -12.5 51 -36.5q21.5 -24 33.5 -57.5q12 -33.5 12 -75.5q0 -45 -13 -81q-13 -36 -37 -61q-24 -25 -56.5 -38.5q-32.5 -13.5 -71.5 -13.5q-35 0 -65 10q-30 10 -55 26.5q-25 16.5 -45 39q-20 22.5 -35 46.5zt0 0zM625 237q41 0 69.5 32q28.5 32 28.5 86q0 21 -6 41q-6 20 -18.5 35.5q-12.5 15.5 -31.5 24.5q-19 9 -44 9q-41 0 -83.5 -23q-42.5 -23 -77.5 -71q12 -27 29 -51.5q17 -24.5 38 -42.5q21 -18 45 -29q24 -11 51 -11zt0 0zM231 465q-20 0 -38 -9q-18 -9 -31.5 -24.5q-13.5 -15.5 -21 -37q-7.5 -21.5 -7.5 -45.5q0 -48 29 -80q29 -32 80 -32q22 0 43.5 8q21.5 8 41 22.5q19.5 14.5 36.5 33q17 18.5 31 39.5q-27 56 -68 90.5t-95 34.5z" />
-<glyph unicode="&#8747;" horiz-adv-x="350" d="M214 -58q0 -78 -33 -114q-33 -36 -104 -36q-35 0 -66 7q-31 7 -55 17l22 64q23 -9 45.5 -13.5q22.5 -4.5 45.5 -4.5q38 0 51.5 24q13.5 24 13.5 83v593q0 78 33 114q33 36 105 36q34 0 65 -7q31 -7 55 -17l-21 -64q-23 9 -45.5 13.5q-22.5 4.5 -46.5 4.5q-38 0 -51.5 -23q-13.5 -23 -13.5 -82z" />
-<glyph unicode="&#8776;" horiz-adv-x="505" d="M31 444q43 33 78 46q35 13 64 13q28 0 52 -8.5q24 -8.5 46 -19q22 -10.5 43 -19q21 -8.5 44 -8.5q19 0 39 8q20 8 43 28l34 -61q-38 -26 -68.5 -36.5q-30.5 -10.5 -55.5 -10.5q-27 0 -49.5 8.5q-22.5 8.5 -43 19q-20.5 10.5 -41 19q-20.5 8.5 -44.5 8.5q-23 0 -49 -10.5q-26 -10.5 -58 -36.5zM31 277q43 33 78 46q35 13 64 13q28 0 52 -8.5q24 -8.5 46 -19q22 -10.5 43 -19q21 -8.5 44 -8.5q19 0 39 8q20 8 43 28l34 -61q-38 -26 -68.5 -36.5q-30.5 -10.5 -55.5 -10.5q-27 0 -49.5 8.5q-22.5 8.5 -43 19q-20.5 10.5 -41 19q-20.5 8.5 -44.5 8.5q-23 0 -49 -10.5q-26 -10.5 -58 -36.5z" />
-<glyph unicode="&#8800;" horiz-adv-x="505" d="M40 457h228l61 137h72l-61 -137h124v-72h-155l-42 -94h197v-72h-228l-67 -153h-72l67 153h-124v72h155l42 94l-197 0z" />
-<glyph unicode="&#8804;" horiz-adv-x="505" d="M459 82l-35 -63l-368 210l35 64zM36 426v29l378 231l38 -62l-237 -145l-91 -38l90 -32l243 -144l-38 -60z" />
-<glyph unicode="&#8805;" horiz-adv-x="505" d="M457 234l-366 -215l-38 62l367 215zM458 465v-29l-378 -231l-38 62l237 145l91 38l-90 32l-243 144l38 60z" />
-<glyph unicode="&#9674;" horiz-adv-x="505" d="M267 -11h-33l-200 353l200 369h33l203 -364zM285 161l102 176l-109 194l-28 88h-2l-28 -90l-102 -176l109 -194l29 -88l1 0z" />
-<glyph unicode="&#11367;" horiz-adv-x="707" d="M504 321h-336v-321h-83v700h83v-305h336v305h83v-626h92v-203h-58l-15 129l-102 0z" />
-<glyph unicode="&#11368;" horiz-adv-x="579" d="M398 0v285q0 39 -4.5 68.5q-4.5 29.5 -16.5 49q-12 19.5 -32.5 29.5q-20.5 10 -53.5 10q-47 0 -85 -30.5q-38 -30.5 -49 -78.5l0 -333h-80v700h80v-256h4q26 31 62.5 49.5q36.5 18.5 90.5 18.5q42 0 73 -9.5q31 -9.5 51.5 -33.5q20.5 -24 30 -64.5q9.5 -40.5 9.5 -102.5v-232h74v-197h-54l-15 127z" />
-<glyph unicode="&#62465;" horiz-adv-x="2" d="M-238 870h114v-21l-163 -97l-69 0z" />
-<glyph unicode="&#62470;" horiz-adv-x="465" d="M103 871q17 -34 52 -52.5q35 -18.5 82 -18.5q48 0 81 21q33 21 47 50l40 -19q-9 -29 -25.5 -51.5q-16.5 -22.5 -39 -38.5q-22.5 -16 -49.5 -24q-27 -8 -55 -8q-27 0 -53.5 7q-26.5 7 -49.5 21q-23 14 -42 36.5q-19 22.5 -31 52.5z" />
-<glyph unicode="&#62471;" horiz-adv-x="287" d="M172 0l-24 -43q42 -8 60.5 -26q18.5 -18 18.5 -49q0 -39 -32 -64.5q-32 -25.5 -90 -25.5q-11 0 -22 1q-11 1 -23 3l9 39q6 -1 11 -1q5 0 10 0q22 0 34.5 4q12.5 4 19 9.5q6.5 5.5 8 12.5q1.5 7 1.5 13q0 28 -86 37l48 90z" />
-<glyph unicode="&#62472;" horiz-adv-x="440" d="M193 870h60l127 -102v-21h-81l-60 49l-17 35l-19 -34l-64 -50h-79l0 22z" />
-<glyph unicode="&#62473;" horiz-adv-x="235" d="M60 -102q0 21 15.5 34q15.5 13 35.5 13q25 0 44.5 -17.5q19.5 -17.5 19.5 -57.5q0 -26 -9 -45.5q-9 -19.5 -21.5 -34q-12.5 -14.5 -26 -23q-13.5 -8.5 -23.5 -12.5l-28 32q20 11 32 28q12 17 12 41q-4 -1 -10 -1q-18 0 -29.5 12t-11.5 31z" />
-<glyph unicode="&#62474;" horiz-adv-x="194" d="M40 659q0 23 14.5 36q14.5 13 37.5 13q28 0 45.5 -17.5q17.5 -17.5 17.5 -52.5q0 -33 -9.5 -57q-9.5 -24 -23 -40.5q-13.5 -16.5 -28.5 -26.5q-15 -10 -26 -14l-25 34q23 12 36 30q13 18 13 47q-4 -1 -11 -1q-19 0 -30 13.5t-11 35.5z" />
-<glyph unicode="&#62475;" horiz-adv-x="246" d="M60 797q0 21 16.5 36.5q16.5 15.5 45.5 15.5q29 0 46.5 -15.5q17.5 -15.5 17.5 -36.5q0 -23 -17.5 -38q-17.5 -15 -46.5 -15q-29 0 -45.5 15t-16.5 38z" />
-<glyph unicode="&#62476;" horiz-adv-x="331" d="M60 768q0 37 25 61q25 24 80 24q50 0 78 -21.5q28 -21.5 28 -63.5q0 -36 -26.5 -59.5q-26.5 -23.5 -79.5 -23.5q-51 0 -78 22.5q-27 22.5 -27 60.5zt0 0zM121 768q0 -17 10.5 -28.5q10.5 -11.5 33.5 -11.5q22 0 33.5 11q11.5 11 11.5 29q0 19 -11 30.5q-11 11.5 -34 11.5q-22 0 -33 -11.5t-11 -30.5z" />
-<glyph unicode="&#62477;" horiz-adv-x="438" d="M60 785q31 32 57.5 43.5q26.5 11.5 50.5 11.5q19 0 37 -5q18 -5 34.5 -11.5q16.5 -6.5 32.5 -11.5q16 -5 31 -5q26 0 50 21l25 -43q-27 -25 -51 -34.5q-24 -9.5 -45 -9.5q-19 0 -36 5q-17 5 -33.5 11.5q-16.5 6.5 -32.5 11.5q-16 5 -32 5q-16 0 -31.5 -6.5q-15.5 -6.5 -32.5 -23.5z" />
-<glyph unicode="&#62478;" horiz-adv-x="305" d="M218 10q-35 -16 -55 -40.5q-20 -24.5 -20 -56.5q0 -20 13 -35.5q13 -15.5 38 -15.5q19 0 40 10l11 -43q-15 -12 -40 -18q-25 -6 -46 -6q-45 0 -72 24q-27 24 -27 65q0 41 27.5 70q27.5 29 75.5 46z" />
-<glyph unicode="&#62598;" horiz-adv-x="584" d="M507 540q0 -25 -8 -51q-8 -26 -24 -48.5q-16 -22.5 -41 -39.5q-25 -17 -59 -26l0 -4q30 -5 57.5 -17q27.5 -12 48.5 -33q21 -21 34 -51q13 -30 13 -71q0 -54 -22.5 -93.5q-22.5 -39.5 -59 -64.5q-36.5 -25 -83.5 -37q-47 -12 -96 -12q-17 0 -40 0q-23 0 -48 1.5q-25 1.5 -50 4q-25 2.5 -44 7.5l0 689q37 6 86 10q49 4 107 4q39 0 79.5 -6.5q40.5 -6.5 73.5 -25q33 -18.5 54.5 -51.5q21.5 -33 21.5 -85zt0 0zM275 64q32 0 62 7.5q30 7.5 53 24q23 16.5 36.5 40.5q13.5 24 13.5 57q0 41 -16.5 66q-16.5 25 -43 39q-26.5 14 -59.5 19q-33 5 -66 5h-87v-251q7 -2 20 -3q13 -1 28 -2q15 -1 31 -1.5q16 -0.5 28 -0.5zt0 0zM220 392q17 0 41 1q24 1 40 3q24 8 45 19.5q21 11.5 37.5 27q16.5 15.5 26 36q9.5 20.5 9.5 44.5q0 33 -12.5 54.5q-12.5 21.5 -33.5 34.5q-21 13 -48 18.5q-27 5.5 -55 5.5q-33 0 -60.5 -1.5q-27.5 -1.5 -41.5 -4.5l0 -238zM311 870h114v-21l-163 -97l-69 0z" />
-<glyph unicode="&#62599;" horiz-adv-x="540" d="M77 700h80v-249h4q23 29 58.5 45q35.5 16 77.5 16q97 0 145.5 -62q48.5 -62 48.5 -192q0 -131 -64 -199q-64 -68 -180 -68q-56 0 -101.5 12q-45.5 12 -68.5 26zM283 442q-50 0 -81 -28q-31 -28 -45 -79l0 -252q19 -11 46 -16.5q27 -5.5 56 -5.5q68 0 108.5 48q40.5 48 40.5 150q0 39 -7 73q-7 34 -22 58q-15 24 -38.5 38q-23.5 14 -57.5 14zt0 0zM313 720h89v-21l-101 -128l-47 0z" />
-<glyph unicode="&#62600;" horiz-adv-x="517" d="M85 700h381v-74h-298v-239h278v-74h-278v-313h-83zM311 870h114v-21l-163 -97l-69 0z" />
-<glyph unicode="&#62601;" horiz-adv-x="319" d="M22 500h78v28q0 46 7.5 80q7.5 34 24.5 55.5q17 21.5 44 32q27 10.5 67 10.5q32 0 56.5 -4q24.5 -4 51.5 -15l-18 -67q-23 10 -43.5 13q-20.5 3 -38.5 3q-26 0 -40.5 -8q-14.5 -8 -21 -23.5q-6.5 -15.5 -8 -38q-1.5 -22.5 -1.5 -52.5v-14h133v-70h-133v-430h-80v430h-78zM288 870h114v-21l-163 -97l-69 0z" />
-<glyph unicode="&#62622;" horiz-adv-x="605" d="M-3 589h88v111h83v-111h219v-66h-219v-125q27 15 71.5 30q44.5 15 100.5 15q42 0 77.5 -9.5q35.5 -9.5 60.5 -32q25 -22.5 39 -60.5q14 -38 14 -94v-247h-83v232q0 137 -124 137q-48 0 -89 -12.5q-41 -12.5 -67 -33.5l0 -323h-83v523l-88 0z" />
-<glyph unicode="&#62623;" horiz-adv-x="549" d="M-1 632h80v68h80v-68h160v-60h-160v-128h4q26 31 62.5 49.5q36.5 18.5 90.5 18.5q42 0 73 -9.5q31 -9.5 51.5 -33.5q20.5 -24 30 -64.5q9.5 -40.5 9.5 -102.5v-302h-80v285q0 39 -4.5 68.5q-4.5 29.5 -16.5 49q-12 19.5 -32.5 29.5q-20.5 10 -53.5 10q-47 0 -85 -30.5q-38 -30.5 -49 -78.5l0 -333h-80v572l-80 0z" />
-<glyph unicode="&#62662;" horiz-adv-x="605" d="M158 700v-232q0 -137 124 -137q47 0 88 12.5q41 12.5 67 33.5l0 323h83v-727q0 -93 -33.5 -139q-33.5 -46 -104.5 -46q-8 0 -17 0.5q-9 0.5 -14 1.5l0 68q28 0 45 8.5q17 8.5 26 26q9 17.5 12 44.5q3 27 3 63v302q-27 -15 -71 -30q-44 -15 -101 -15q-42 0 -77 9.5q-35 9.5 -60 32q-25 22.5 -39 60.5q-14 38 -14 94l0 247z" />
-<glyph unicode="&#62663;" horiz-adv-x="490" d="M333 210q-16 -10 -47.5 -22q-31.5 -12 -86.5 -12q-37 0 -65 8q-28 8 -47 28q-19 20 -28.5 53q-9.5 33 -9.5 83v152h80v-136q0 -27 3 -48.5q3 -21.5 12 -37.5q9 -16 26 -24q17 -8 45 -8q45 0 74 10q29 10 44 22l0 222h80v-527q0 -93 -32 -139q-32 -46 -102 -46q-8 0 -15 0.5q-7 0.5 -15 1.5l0 68q28 0 44.5 8.5q16.5 8.5 25.5 26q9 17.5 11.5 44.5q2.5 27 2.5 63z" />
-<glyph unicode="&#62668;" horiz-adv-x="553" d="M282 331l26 -89h5l20 92l134 366h85l-177 -455q-27 -71 -47.5 -118.5q-20.5 -47.5 -41.5 -77q-21 -29.5 -45 -42q-24 -12.5 -59 -12.5q-33 0 -52.5 5.5q-19.5 5.5 -36.5 16.5l25 69q20 -11 37 -14q17 -3 31 -3q28 0 47 28.5q19 28.5 33 84.5l-259 518h96zM322 870h114v-21l-163 -97l-69 0z" />
-<glyph unicode="&#62669;" horiz-adv-x="466" d="M224 176l28 -96h5l22 97l97 323h81l-148 -449q-17 -49 -33.5 -95q-16.5 -46 -36.5 -82q-20 -36 -45 -57.5q-25 -21.5 -58 -21.5q-36 0 -59 10l14 69q13 -5 25 -5q28 0 54 29.5q26 29.5 43 101.5l-201 500h92zM267 720h89v-21l-101 -128l-47 0z" />
-<glyph unicode="&#62678;" horiz-adv-x="577" d="M150 395h288q-5 61 -24 107.5q-19 46.5 -49 77q-30 30.5 -69.5 44.5q-39.5 14 -85.5 14q-47 0 -83.5 -8q-36.5 -8 -59.5 -22l-22 65q31 18 77 28.5q46 10.5 98 10.5q64 0 119 -20q55 -20 95.5 -63.5q40.5 -43.5 63.5 -112.5q23 -69 23 -166q0 -98 -26 -167q-26 -69 -70.5 -112.5q-44.5 -43.5 -103 -63q-58.5 -19.5 -122.5 -19.5q-50 0 -88.5 7q-38.5 7 -65.5 18l22 73q23 -11 60 -17.5q37 -6.5 77 -6.5q40 0 80.5 12.5q40.5 12.5 73.5 43.5q33 31 55 81q22 50 26 122l-289 0zM163 797q0 21 16.5 36.5q16.5 15.5 45.5 15.5q29 0 46.5 -15.5q17.5 -15.5 17.5 -36.5q0 -23 -17.5 -38q-17.5 -15 -46.5 -15q-29 0 -45.5 15t-16.5 38z" />
-<glyph unicode="&#62679;" horiz-adv-x="465" d="M121 285h212q-5 71 -41.5 114q-36.5 43 -103.5 43q-41 0 -71.5 -11q-30.5 -11 -49.5 -24l-28 61q31 21 71 32.5q40 11.5 93 11.5q111 0 162 -69q51 -69 51 -193q0 -128 -59 -195q-59 -67 -164 -67q-47 0 -86.5 7.5q-39.5 7.5 -66.5 22.5l23 68q23 -13 56.5 -20.5q33.5 -7.5 65.5 -7.5q140 -1 149 161l-213 0zM137 652q0 23 15.5 39.5q15.5 16.5 39.5 16.5q24 0 41 -16.5q17 -16.5 17 -39.5q0 -23 -17 -38q-17 -15 -41 -15q-24 0 -39.5 15t-15.5 38z" />
-<glyph unicode="&#62730;" horiz-adv-x="541" d="M139 331v70h16q9 0 22 0q13 0 26.5 1q13.5 1 26 1.5q12.5 0.5 20.5 2.5q26 4 49 13.5q23 9.5 40 24.5q17 15 27 35q10 20 10 44q0 33 -11 55q-11 22 -30.5 35.5q-19.5 13.5 -45 19q-25.5 5.5 -54.5 5.5q-54 0 -92 -7.5q-38 -7.5 -61 -18.5l-22 66q20 11 72 22.5q52 11.5 117 11.5q40 0 78.5 -8.5q38.5 -8.5 69 -28q30.5 -19.5 49 -53q18.5 -33.5 18.5 -82.5q0 -50 -33 -95.5q-33 -45.5 -99 -65.5l0 -4q71 -10 112 -53q41 -43 41 -115q0 -52 -18.5 -90.5q-18.5 -38.5 -49 -65q-30.5 -26.5 -71 -42q-40.5 -15.5 -84.5 -19.5l-14 -169h-52l-19 168q-46 2 -78 9q-32 7 -55 16l21 75q23 -11 64.5 -18.5q41.5 -7.5 100.5 -7.5q31 0 61 8.5q30 8.5 53.5 25.5q23.5 17 38 43q14.5 26 14.5 62q0 63 -44 92.5q-44 29.5 -115 34.5q-12 1 -22.5 1.5q-10.5 0.5 -21.5 0.5z" />
-<glyph unicode="&#62731;" horiz-adv-x="441" d="M125 223v65h70q18 0 35.5 6q17.5 6 31.5 16.5q14 10.5 22.5 25q8.5 14.5 8.5 30.5q0 39 -27 55q-27 16 -81 16q-39 0 -71.5 -12q-32.5 -12 -50.5 -23l-23 62q30 17 70.5 30q40.5 13 96.5 13q166 0 166 -123q0 -35 -22.5 -68.5q-22.5 -33.5 -64.5 -47.5l0 -4q59 -11 82.5 -42q23.5 -31 23.5 -82q0 -54 -37.5 -93.5q-37.5 -39.5 -113.5 -51.5l-14 -174h-52l-19 171q-40 2 -67.5 10.5q-27.5 8.5 -50.5 19.5v66q46 -13 78.5 -20q32.5 -7 70.5 -7q61 0 93 21q32 21 32 64q0 36 -30 56.5q-30 20.5 -99 20.5z" />
-<glyph unicode="&#62732;" horiz-adv-x="571" d="M533 29q-26 -20 -64 -29q-38 -9 -83 -11l-17 -32q42 -8 60.5 -26q18.5 -18 18.5 -49q0 -39 -32 -64.5q-32 -25.5 -90 -25.5q-11 0 -22 1q-11 1 -23 3l9 39q6 -1 11 -1q5 0 10 0q22 0 34.5 4q12.5 4 19 9.5q6.5 5.5 8 12.5q1.5 7 1.5 13q0 28 -86 37l42 80q-58 4 -108 27.5q-50 23.5 -87 67.5q-37 44 -58 110q-21 66 -21 155q0 98 26.5 166.5q26.5 68.5 70 112q43.5 43.5 97.5 63.5q54 20 110 20q60 0 98 -6.5q38 -6.5 65 -17.5l-20 -73q-48 23 -137 23q-41 0 -81 -15q-40 -15 -71.5 -49q-31.5 -34 -50.5 -89q-19 -55 -19 -135q0 -72 18 -126q18 -54 49.5 -90q31.5 -36 74 -54q42.5 -18 92.5 -18q45 0 78.5 9q33.5 9 56.5 23z" />
-<glyph unicode="&#62733;" horiz-adv-x="451" d="M418 33q-49 -35 -121 -43l-18 -33q42 -8 60.5 -26q18.5 -18 18.5 -49q0 -39 -32 -64.5q-32 -25.5 -90 -25.5q-11 0 -22 1q-11 1 -23 3l9 39q6 -1 11 -1q5 0 10 0q22 0 34.5 4q12.5 4 19 9.5q6.5 5.5 8 12.5q1.5 7 1.5 13q0 28 -86 37l42 79q-52 3 -88 23q-36 20 -59 54q-23 34 -33.5 80.5q-10.5 46.5 -10.5 103.5q0 127 56 194.5q56 67.5 161 67.5q48 0 81.5 -7.5q33.5 -7.5 60.5 -21.5l-23 -69q-23 13 -51 20.5q-28 7.5 -60 7.5q-142 0 -142 -192q0 -38 7.5 -72.5q7.5 -34.5 25 -61q17.5 -26.5 46 -42q28.5 -15.5 70.5 -15.5q36 0 64.5 10.5q28.5 10.5 46.5 24.5z" />
-<glyph unicode="&#62734;" horiz-adv-x="585" d="M418 194h-258l-70 -194h-82l265 711h38l266 -711h-87zM187 266h206l-78 213l-25 106h-1l-25 -108zM138 843h316v-62l-316 0z" />
-<glyph unicode="&#62735;" horiz-adv-x="496" d="M69 463q38 23 88.5 34q50.5 11 105.5 11q52 0 83.5 -14q31.5 -14 48 -36.5q16.5 -22.5 22 -49.5q5.5 -27 5.5 -54q0 -60 -3 -117q-3 -57 -3 -108q0 -37 3 -70q3 -33 11 -61l-59 0l-21 70h-5q-9 -14 -22.5 -27.5q-13.5 -13.5 -32.5 -24q-19 -10.5 -44 -17.5q-25 -7 -57 -7q-32 0 -59.5 10q-27.5 10 -47.5 28.5q-20 18.5 -31.5 44.5q-11.5 26 -11.5 59q0 44 18 73.5q18 29.5 50.5 47q32.5 17.5 78 25q45.5 7.5 100.5 7.5q14 0 27.5 0q13.5 0 27.5 -2q3 30 3 54q0 55 -22 77q-22 22 -80 22q-17 0 -36.5 -2.5q-19.5 -2.5 -40 -7q-20.5 -4.5 -39 -11q-18.5 -6.5 -32.5 -14.5zM211 62q28 0 50 7.5q22 7.5 38 19q16 11.5 26.5 25.5q10.5 14 15.5 27l0 83q-14 1 -28.5 1.5q-14.5 0.5 -28.5 0.5q-31 0 -60.5 -3.5q-29.5 -3.5 -52 -13q-22.5 -9.5 -36 -26q-13.5 -16.5 -13.5 -41.5q0 -35 25 -57.5q25 -22.5 64 -22.5zt0 0zM101 643h296v-62l-296 0z" />
-<glyph unicode="&#62736;" horiz-adv-x="536" d="M85 700h381v-74h-298v-229h273v-74h-273v-249h303v-74h-386zM113 843h316v-62l-316 0z" />
-<glyph unicode="&#62737;" horiz-adv-x="508" d="M442 40q-30 -24 -75.5 -38q-45.5 -14 -96.5 -14q-57 0 -99 18.5q-42 18.5 -69 53q-27 34.5 -40 82.5q-13 48 -13 108q0 128 57 195q57 67 163 67q34 0 68 -7.5q34 -7.5 61 -28.5q27 -21 44 -59.5q17 -38.5 17 -101.5q0 -33 -6 -73l-321 0q0 -44 9 -78q9 -34 28 -57.5q19 -23.5 49.5 -36q30.5 -12.5 74.5 -12.5q34 0 68 12q34 12 51 28zM270 442q-59 0 -94.5 -31q-35.5 -31 -42.5 -106l248 0q0 76 -29 106.5q-29 30.5 -82 30.5zt0 0zM107 643h296v-62l-296 0z" />
-<glyph unicode="&#62738;" horiz-adv-x="536" d="M85 700h381v-74h-298v-229h273v-74h-273v-249h303v-74h-386zM120 794q0 21 15 34q15 13 39 13q23 0 37.5 -13q14.5 -13 14.5 -34q0 -20 -14.5 -33q-14.5 -13 -37.5 -13q-24 0 -39 13q-15 13 -15 33zt0 0zM312 794q0 21 14.5 34q14.5 13 37.5 13q24 0 39 -13q15 -13 15 -34q0 -20 -15 -33q-15 -13 -39 -13q-23 0 -37.5 13q-14.5 13 -14.5 33zt0 0zM110 948h316v-62l-316 0z" />
-<glyph unicode="&#62739;" horiz-adv-x="508" d="M442 40q-30 -24 -75.5 -38q-45.5 -14 -96.5 -14q-57 0 -99 18.5q-42 18.5 -69 53q-27 34.5 -40 82.5q-13 48 -13 108q0 128 57 195q57 67 163 67q34 0 68 -7.5q34 -7.5 61 -28.5q27 -21 44 -59.5q17 -38.5 17 -101.5q0 -33 -6 -73l-321 0q0 -44 9 -78q9 -34 28 -57.5q19 -23.5 49.5 -36q30.5 -12.5 74.5 -12.5q34 0 68 12q34 12 51 28zM270 442q-59 0 -94.5 -31q-35.5 -31 -42.5 -106l248 0q0 76 -29 106.5q-29 30.5 -82 30.5zt0 0zM118 632q0 23 13.5 37q13.5 14 35.5 14q22 0 35.5 -14q13.5 -14 13.5 -37q0 -21 -13.5 -35q-13.5 -14 -35.5 -14q-22 0 -35.5 14q-13.5 14 -13.5 35zt0 0zM310 632q0 23 13.5 37q13.5 14 35.5 14q23 0 36.5 -14q13.5 -14 13.5 -37q0 -21 -13.5 -35q-13.5 -14 -36.5 -14q-22 0 -35.5 14q-13.5 14 -13.5 35zt0 0zM106 825h316v-62l-316 0z" />
-<glyph unicode="&#62740;" horiz-adv-x="536" d="M85 700h381v-74h-298v-229h273v-74h-273v-249h303v-74h-386zM120 794q0 21 15 34q15 13 39 13q23 0 37.5 -13q14.5 -13 14.5 -34q0 -20 -14.5 -33q-14.5 -13 -37.5 -13q-24 0 -39 13q-15 13 -15 33zt0 0zM312 794q0 21 14.5 34q14.5 13 37.5 13q24 0 39 -13q15 -13 15 -34q0 -20 -15 -33q-15 -13 -39 -13q-23 0 -37.5 13q-14.5 13 -14.5 33zt0 0zM181 993q4 -37 28 -57q24 -20 64 -20q40 0 63.5 20q23.5 20 28.5 56l71 -17q-11 -54 -50.5 -85.5q-39.5 -31.5 -113.5 -31.5q-71 0 -116.5 27.5q-45.5 27.5 -53.5 87.5z" />
-<glyph unicode="&#62741;" horiz-adv-x="508" d="M442 40q-30 -24 -75.5 -38q-45.5 -14 -96.5 -14q-57 0 -99 18.5q-42 18.5 -69 53q-27 34.5 -40 82.5q-13 48 -13 108q0 128 57 195q57 67 163 67q34 0 68 -7.5q34 -7.5 61 -28.5q27 -21 44 -59.5q17 -38.5 17 -101.5q0 -33 -6 -73l-321 0q0 -44 9 -78q9 -34 28 -57.5q19 -23.5 49.5 -36q30.5 -12.5 74.5 -12.5q34 0 68 12q34 12 51 28zM270 442q-59 0 -94.5 -31q-35.5 -31 -42.5 -106l248 0q0 76 -29 106.5q-29 30.5 -82 30.5zt0 0zM118 633q0 23 13.5 37q13.5 14 35.5 14q22 0 35.5 -14q13.5 -14 13.5 -37q0 -21 -13.5 -35q-13.5 -14 -35.5 -14q-22 0 -35.5 14q-13.5 14 -13.5 35zt0 0zM310 633q0 23 13.5 37q13.5 14 35.5 14q23 0 36.5 -14q13.5 -14 13.5 -37q0 -21 -13.5 -35q-13.5 -14 -36.5 -14q-22 0 -35.5 14q-13.5 14 -13.5 35zt0 0zM176 852q4 -37 28 -57q24 -20 64 -20q40 0 63.5 20q23.5 20 28.5 56l71 -17q-11 -54 -50.5 -85.5q-39.5 -31.5 -113.5 -31.5q-71 0 -116.5 27.5q-45.5 27.5 -53.5 87.5z" />
-<glyph unicode="&#62742;" horiz-adv-x="541" d="M139 331v70h16q9 0 22 0q13 0 26.5 1q13.5 1 26 1.5q12.5 0.5 20.5 2.5q26 4 49 13.5q23 9.5 40 24.5q17 15 27 35q10 20 10 44q0 33 -11 55q-11 22 -30.5 35.5q-19.5 13.5 -45 19q-25.5 5.5 -54.5 5.5q-54 0 -92 -7.5q-38 -7.5 -61 -18.5l-22 66q20 11 72 22.5q52 11.5 117 11.5q40 0 78.5 -8.5q38.5 -8.5 69 -28q30.5 -19.5 49 -53q18.5 -33.5 18.5 -82.5q0 -50 -33 -95.5q-33 -45.5 -99 -65.5l0 -4q71 -10 112 -53q41 -43 41 -115q0 -57 -22.5 -98.5q-22.5 -41.5 -59 -68.5q-36.5 -27 -84 -39.5q-47.5 -12.5 -96.5 -12.5q-66 0 -108.5 7.5q-42.5 7.5 -70.5 18.5l21 75q23 -11 64.5 -19q41.5 -8 100.5 -8q31 0 61 8.5q30 8.5 53.5 26q23.5 17.5 38 43.5q14.5 26 14.5 62q0 63 -44 92.5q-44 29.5 -115 34.5q-12 1 -22.5 1.5q-10.5 0.5 -21.5 0.5zM267 746h-58l-127 103v21h82l59 -50l17 -34l19 33l63 51h78l0 -22z" />
-<glyph unicode="&#62743;" horiz-adv-x="441" d="M125 223v65h70q18 0 35.5 6q17.5 6 31.5 16.5q14 10.5 22.5 25q8.5 14.5 8.5 30.5q0 39 -27 55q-27 16 -81 16q-39 0 -71.5 -12q-32.5 -12 -50.5 -23l-23 62q30 17 70.5 30q40.5 13 96.5 13q166 0 166 -123q0 -35 -22.5 -68.5q-22.5 -33.5 -64.5 -47.5l0 -4q59 -11 82.5 -42q23.5 -31 23.5 -82q0 -32 -13 -59q-13 -27 -39 -47q-26 -20 -65.5 -31.5q-39.5 -11.5 -91.5 -11.5q-51 0 -84.5 9q-33.5 9 -60.5 22l23 66q23 -13 55.5 -20q32.5 -7 70.5 -7q61 0 93 21q32 21 32 64q0 36 -30 56.5q-30 20.5 -99 20.5zM218 550h-37l-115 182h78l39 -66l21 -58l22 58l45 66l70 0z" />
-<glyph unicode="&#62744;" horiz-adv-x="684" d="M56 350q0 175 74 268.5q74 93.5 211 93.5q74 0 128 -26q54 -26 89.5 -73.5q35.5 -47.5 52.5 -114q17 -66.5 17 -148.5q0 -175 -74.5 -268.5q-74.5 -93.5 -212.5 -93.5q-73 0 -126.5 26q-53.5 26 -89 73.5q-35.5 47.5 -52.5 114q-17 66.5 -17 148.5zt0 0zM144 350q0 -58 11.5 -110q11.5 -52 35.5 -91.5q24 -39.5 61.5 -63q37.5 -23.5 88.5 -23.5q93 0 146 70.5q53 70.5 53 217.5q0 57 -11.5 109.5q-11.5 52.5 -36 92q-24.5 39.5 -62 63q-37.5 23.5 -89.5 23.5q-92 0 -144.5 -70.5q-52.5 -70.5 -52.5 -217.5zt0 0zM190 843h316v-62l-316 0z" />
-<glyph unicode="&#62745;" horiz-adv-x="536" d="M49 250q0 127 56.5 194.5q56.5 67.5 162.5 67.5q56 0 97.5 -18.5q41.5 -18.5 68.5 -53q27 -34.5 40 -83q13 -48.5 13 -107.5q0 -127 -56.5 -194.5q-56.5 -67.5 -162.5 -67.5q-56 0 -97.5 18.5q-41.5 18.5 -68.5 53q-27 34.5 -40 83q-13 48.5 -13 107.5zt0 0zM132 250q0 -38 7.5 -73q7.5 -35 23.5 -61q16 -26 42 -42q26 -16 63 -16q136 -1 136 192q0 39 -7.5 74q-7.5 35 -23.5 61q-16 26 -42 41.5q-26 15.5 -63 15.5q-136 1 -136 -192zt0 0zM120 643h296v-62l-296 0z" />
-<glyph unicode="&#62746;" horiz-adv-x="684" d="M56 350q0 175 74 268.5q74 93.5 211 93.5q74 0 128 -26q54 -26 89.5 -73.5q35.5 -47.5 52.5 -114q17 -66.5 17 -148.5q0 -175 -74.5 -268.5q-74.5 -93.5 -212.5 -93.5q-73 0 -126.5 26q-53.5 26 -89 73.5q-35.5 47.5 -52.5 114q-17 66.5 -17 148.5zt0 0zM144 350q0 -58 11.5 -110q11.5 -52 35.5 -91.5q24 -39.5 61.5 -63q37.5 -23.5 88.5 -23.5q93 0 146 70.5q53 70.5 53 217.5q0 57 -11.5 109.5q-11.5 52.5 -36 92q-24.5 39.5 -62 63q-37.5 23.5 -89.5 23.5q-92 0 -144.5 -70.5q-52.5 -70.5 -52.5 -217.5zt0 0zM251 870q4 -37 28 -57q24 -20 64 -20q40 0 63.5 20q23.5 20 28.5 56l71 -17q-11 -54 -50.5 -85.5q-39.5 -31.5 -113.5 -31.5q-71 0 -116.5 27.5q-45.5 27.5 -53.5 87.5z" />
-<glyph unicode="&#62747;" horiz-adv-x="536" d="M49 250q0 127 56.5 194.5q56.5 67.5 162.5 67.5q56 0 97.5 -18.5q41.5 -18.5 68.5 -53q27 -34.5 40 -83q13 -48.5 13 -107.5q0 -127 -56.5 -194.5q-56.5 -67.5 -162.5 -67.5q-56 0 -97.5 18.5q-41.5 18.5 -68.5 53q-27 34.5 -40 83q-13 48.5 -13 107.5zt0 0zM132 250q0 -38 7.5 -73q7.5 -35 23.5 -61q16 -26 42 -42q26 -16 63 -16q136 -1 136 192q0 39 -7.5 74q-7.5 35 -23.5 61q-16 26 -42 41.5q-26 15.5 -63 15.5q-136 1 -136 -192zt0 0zM181 702q10 -46 34.5 -64q24.5 -18 56.5 -18q32 0 57 19q25 19 34 62l60 -19q-9 -58 -51.5 -89q-42.5 -31 -101.5 -31q-27 0 -53.5 7q-26.5 7 -47.5 21q-21 14 -36 36q-15 22 -20 52z" />
-<glyph unicode="&#62748;" horiz-adv-x="684" d="M56 350q0 175 74 268.5q74 93.5 211 93.5q74 0 128 -26q54 -26 89.5 -73.5q35.5 -47.5 52.5 -114q17 -66.5 17 -148.5q0 -175 -74.5 -268.5q-74.5 -93.5 -212.5 -93.5q-73 0 -126.5 26q-53.5 26 -89 73.5q-35.5 47.5 -52.5 114q-17 66.5 -17 148.5zt0 0zM540 392q-8 119 -62.5 182.5q-54.5 63.5 -136.5 63.5q-36 0 -70 -12.5q-34 -12.5 -61 -41.5q-27 -29 -44.5 -76q-17.5 -47 -21.5 -116zM144 318q8 -129 62.5 -192.5q54.5 -63.5 134.5 -63.5q37 0 72 12q35 12 62 41.5q27 29.5 44.5 78.5q17.5 49 20.5 124zM250 870q4 -37 28 -57q24 -20 64 -20q40 0 63.5 20q23.5 20 28.5 56l71 -17q-11 -54 -50.5 -85.5q-39.5 -31.5 -113.5 -31.5q-71 0 -116.5 27.5q-45.5 27.5 -53.5 87.5z" />
-<glyph unicode="&#62749;" horiz-adv-x="536" d="M49 250q0 127 56.5 194.5q56.5 67.5 162.5 67.5q56 0 97.5 -18.5q41.5 -18.5 68.5 -53q27 -34.5 40 -83q13 -48.5 13 -107.5q0 -127 -56.5 -194.5q-56.5 -67.5 -162.5 -67.5q-56 0 -97.5 18.5q-41.5 18.5 -68.5 53q-27 34.5 -40 83q-13 48.5 -13 107.5zt0 0zM404 281q-8 85 -43.5 123q-35.5 38 -92.5 38q-26 0 -49.5 -8q-23.5 -8 -42 -27q-18.5 -19 -30.5 -50q-12 -31 -14 -76zM132 217q5 -78 43 -118.5q38 -40.5 93 -40.5q25 0 48.5 8q23.5 8 42 26q18.5 18 30.5 48.5q12 30.5 15 76.5zM181 702q10 -46 34.5 -64q24.5 -18 56.5 -18q32 0 57 19q25 19 34 62l60 -19q-9 -58 -51.5 -89q-42.5 -31 -101.5 -31q-27 0 -53.5 7q-26.5 7 -47.5 21q-21 14 -36 36q-15 22 -20 52z" />
-<glyph unicode="&#62750;" horiz-adv-x="684" d="M56 350q0 175 74 268.5q74 93.5 211 93.5q74 0 128 -26q54 -26 89.5 -73.5q35.5 -47.5 52.5 -114q17 -66.5 17 -148.5q0 -175 -74.5 -268.5q-74.5 -93.5 -212.5 -93.5q-73 0 -126.5 26q-53.5 26 -89 73.5q-35.5 47.5 -52.5 114q-17 66.5 -17 148.5zt0 0zM540 392q-8 119 -62.5 182.5q-54.5 63.5 -136.5 63.5q-36 0 -70 -12.5q-34 -12.5 -61 -41.5q-27 -29 -44.5 -76q-17.5 -47 -21.5 -116zM144 318q8 -129 62.5 -192.5q54.5 -63.5 134.5 -63.5q37 0 72 12q35 12 62 41.5q27 29.5 44.5 78.5q17.5 49 20.5 124zM193 794q0 21 15 34q15 13 39 13q23 0 37.5 -13q14.5 -13 14.5 -34q0 -20 -14.5 -33q-14.5 -13 -37.5 -13q-24 0 -39 13q-15 13 -15 33zt0 0zM385 794q0 21 14.5 34q14.5 13 37.5 13q24 0 39 -13q15 -13 15 -34q0 -20 -15 -33q-15 -13 -39 -13q-23 0 -37.5 13q-14.5 13 -14.5 33zt0 0zM252 993q4 -37 28 -57q24 -20 64 -20q40 0 63.5 20q23.5 20 28.5 56l71 -17q-11 -54 -50.5 -85.5q-39.5 -31.5 -113.5 -31.5q-71 0 -116.5 27.5q-45.5 27.5 -53.5 87.5z" />
-<glyph unicode="&#62751;" horiz-adv-x="536" d="M49 250q0 127 56.5 194.5q56.5 67.5 162.5 67.5q56 0 97.5 -18.5q41.5 -18.5 68.5 -53q27 -34.5 40 -83q13 -48.5 13 -107.5q0 -127 -56.5 -194.5q-56.5 -67.5 -162.5 -67.5q-56 0 -97.5 18.5q-41.5 18.5 -68.5 53q-27 34.5 -40 83q-13 48.5 -13 107.5zt0 0zM404 281q-8 85 -43.5 123q-35.5 38 -92.5 38q-26 0 -49.5 -8q-23.5 -8 -42 -27q-18.5 -19 -30.5 -50q-12 -31 -14 -76zM132 217q5 -78 43 -118.5q38 -40.5 93 -40.5q25 0 48.5 8q23.5 8 42 26q18.5 18 30.5 48.5q12 30.5 15 76.5zM120 633q0 23 13.5 37q13.5 14 35.5 14q22 0 35.5 -14q13.5 -14 13.5 -37q0 -21 -13.5 -35q-13.5 -14 -35.5 -14q-22 0 -35.5 14q-13.5 14 -13.5 35zt0 0zM312 633q0 23 13.5 37q13.5 14 35.5 14q23 0 36.5 -14q13.5 -14 13.5 -37q0 -21 -13.5 -35q-13.5 -14 -36.5 -14q-22 0 -35.5 14q-13.5 14 -13.5 35zt0 0zM187 852q4 -37 28 -57q24 -20 64 -20q40 0 63.5 20q23.5 20 28.5 56l71 -17q-11 -54 -50.5 -85.5q-39.5 -31.5 -113.5 -31.5q-71 0 -116.5 27.5q-45.5 27.5 -53.5 87.5z" />
-<glyph unicode="&#62752;" horiz-adv-x="769" d="M601 700h83v-700h-83zM85 700h83v-272q5 1 15 2.5q10 1.5 22 2.5q12 1 24.5 2q12.5 1 24.5 1q47 0 91.5 -9.5q44.5 -9.5 78.5 -33.5q34 -24 54.5 -64.5q20.5 -40.5 20.5 -102.5q0 -60 -19 -104.5q-19 -44.5 -53.5 -73q-34.5 -28.5 -82.5 -42.5q-48 -14 -106 -14q-14 0 -32.5 0.5q-18.5 0.5 -39 2q-20.5 1.5 -41.5 4.5q-21 3 -40 8zM245 64q72 0 119 39q47 39 47 117q0 42 -14 70q-14 28 -37.5 44.5q-23.5 16.5 -54 23q-30.5 6.5 -64.5 6.5q-18 0 -40 -3q-22 -3 -33 -6l0 -285q27 -6 77 -6zt0 0zM212 843h316v-62l-316 0z" />
-<glyph unicode="&#62753;" horiz-adv-x="660" d="M157 70q37 -6 71 -6q63 0 88 24.5q25 24.5 25 69.5q0 40 -24.5 66q-24.5 26 -85.5 26q-17 0 -37 -1q-20 -1 -37 -6zM157 309q24 4 46 5.5q22 1.5 42 1.5q51 0 85.5 -11.5q34.5 -11.5 55.5 -31.5q21 -20 29.5 -47.5q8.5 -27.5 8.5 -58.5q0 -91 -50.5 -132q-50.5 -41 -163.5 -41q-64 0 -133 6l0 500h80zM503 500h80v-500h-80zM175 643h296v-62l-296 0z" />
-<glyph unicode="&#62754;" horiz-adv-x="577" d="M150 395h288q-5 61 -24 107.5q-19 46.5 -49 77q-30 30.5 -69.5 44.5q-39.5 14 -85.5 14q-47 0 -83.5 -8q-36.5 -8 -59.5 -22l-22 65q31 18 77 28.5q46 10.5 98 10.5q64 0 119 -20q55 -20 95.5 -63.5q40.5 -43.5 63.5 -112.5q23 -69 23 -166q0 -98 -26 -167q-26 -69 -70.5 -112.5q-44.5 -43.5 -103 -63q-58.5 -19.5 -122.5 -19.5q-50 0 -88.5 7q-38.5 7 -65.5 18l22 73q23 -11 60 -17.5q37 -6.5 77 -6.5q40 0 80.5 12.5q40.5 12.5 73.5 43.5q33 31 55 81q22 50 26 122l-289 0zM86 843h316v-62l-316 0z" />
-<glyph unicode="&#62755;" horiz-adv-x="465" d="M121 285h212q-5 71 -41.5 114q-36.5 43 -103.5 43q-41 0 -71.5 -11q-30.5 -11 -49.5 -24l-28 61q31 21 71 32.5q40 11.5 93 11.5q111 0 162 -69q51 -69 51 -193q0 -128 -59 -195q-59 -67 -164 -67q-47 0 -86.5 7.5q-39.5 7.5 -66.5 22.5l23 68q23 -13 56.5 -20.5q33.5 -7.5 65.5 -7.5q140 -1 149 161l-213 0zM58 643h296v-62l-296 0z" />
-<glyph unicode="&#62756;" horiz-adv-x="577" d="M150 395h288q-5 61 -24 107.5q-19 46.5 -49 77q-30 30.5 -69.5 44.5q-39.5 14 -85.5 14q-47 0 -83.5 -8q-36.5 -8 -59.5 -22l-22 65q31 18 77 28.5q46 10.5 98 10.5q64 0 119 -20q55 -20 95.5 -63.5q40.5 -43.5 63.5 -112.5q23 -69 23 -166q0 -98 -26 -167q-26 -69 -70.5 -112.5q-44.5 -43.5 -103 -63q-58.5 -19.5 -122.5 -19.5q-50 0 -88.5 7q-38.5 7 -65.5 18l22 73q23 -11 60 -17.5q37 -6.5 77 -6.5q40 0 80.5 12.5q40.5 12.5 73.5 43.5q33 31 55 81q22 50 26 122l-289 0zM149 870q4 -37 28 -57q24 -20 64 -20q40 0 63.5 20q23.5 20 28.5 56l71 -17q-11 -54 -50.5 -85.5q-39.5 -31.5 -113.5 -31.5q-71 0 -116.5 27.5q-45.5 27.5 -53.5 87.5z" />
-<glyph unicode="&#62757;" horiz-adv-x="465" d="M121 285h212q-5 71 -41.5 114q-36.5 43 -103.5 43q-41 0 -71.5 -11q-30.5 -11 -49.5 -24l-28 61q31 21 71 32.5q40 11.5 93 11.5q111 0 162 -69q51 -69 51 -193q0 -128 -59 -195q-59 -67 -164 -67q-47 0 -86.5 7.5q-39.5 7.5 -66.5 22.5l23 68q23 -13 56.5 -20.5q33.5 -7.5 65.5 -7.5q140 -1 149 161l-213 0zM124 702q10 -46 34.5 -64q24.5 -18 56.5 -18q32 0 57 19q25 19 34 62l60 -19q-9 -58 -51.5 -89q-42.5 -31 -101.5 -31q-27 0 -53.5 7q-26.5 7 -47.5 21q-21 14 -36 36q-15 22 -20 52z" />
-<glyph unicode="&#62758;" horiz-adv-x="583" d="M544 29q-30 -23 -78.5 -32q-48.5 -9 -100.5 -9q-63 0 -119 21.5q-56 21.5 -98.5 65.5q-42.5 44 -67 112.5q-24.5 68.5 -24.5 162.5q0 98 27.5 166.5q27.5 68.5 71.5 112q44 43.5 99 63.5q55 20 111 20q60 0 101 -6.5q41 -6.5 68 -17.5l-20 -74q-23 11 -60 17.5q-37 6.5 -82 6.5q-39 0 -76.5 -12.5q-37.5 -12.5 -69 -41q-31.5 -28.5 -53 -74.5q-21.5 -46 -28.5 -112l306 0v-74h-307q3 -66 23.5 -115q20.5 -49 53 -81.5q32.5 -32.5 74.5 -49q42 -16.5 89 -16.5q45 0 81 9q36 9 58 23zM183 794q0 21 15 34q15 13 39 13q23 0 37.5 -13q14.5 -13 14.5 -34q0 -20 -14.5 -33q-14.5 -13 -37.5 -13q-24 0 -39 13q-15 13 -15 33zt0 0zM375 794q0 21 14.5 34q14.5 13 37.5 13q24 0 39 -13q15 -13 15 -34q0 -20 -15 -33q-15 -13 -39 -13q-23 0 -37.5 13t-14.5 33z" />
-<glyph unicode="&#62759;" horiz-adv-x="472" d="M438 33q-30 -22 -73 -33.5q-43 -11.5 -88 -11.5q-58 0 -100.5 18.5q-42.5 18.5 -71 53q-28.5 34.5 -42.5 83q-14 48.5 -14 107.5q0 63 17 112q17 49 47.5 82q30.5 33 73.5 50.5q43 17.5 95 17.5q48 0 84 -7.5q36 -7.5 63 -21.5l-23 -69q-23 13 -53.5 20.5q-30.5 7.5 -62.5 7.5q-69 1 -110.5 -38.5q-41.5 -39.5 -49.5 -117.5l236 0v-66h-237q3 -33 14.5 -63q11.5 -30 32 -52q20.5 -22 50.5 -34.5q30 -12.5 72 -12.5q35 0 65.5 11q30.5 11 48.5 25zM116 633q0 23 13.5 37q13.5 14 35.5 14q22 0 35.5 -14q13.5 -14 13.5 -37q0 -21 -13.5 -35q-13.5 -14 -35.5 -14q-22 0 -35.5 14q-13.5 14 -13.5 35zt0 0zM308 633q0 23 13.5 37q13.5 14 35.5 14q23 0 36.5 -14q13.5 -14 13.5 -37q0 -21 -13.5 -35q-13.5 -14 -36.5 -14q-22 0 -35.5 14t-13.5 35z" />
-<glyph unicode="&#62760;" horiz-adv-x="569" d="M484 0h-83v305l-103 -22l-174 -283h-98l156 249l61 43q-36 8 -66.5 24.5q-30.5 16.5 -53 42q-22.5 25.5 -35 59.5q-12.5 34 -12.5 78q0 61 20.5 101.5q20.5 40.5 56 65q35.5 24.5 83 35q47.5 10.5 100.5 10.5q34 0 72.5 -3q38.5 -3 75.5 -12zM332 636q-33 0 -63 -6.5q-30 -6.5 -53.5 -22.5q-23.5 -16 -37.5 -43q-14 -27 -14 -68q0 -38 13.5 -65q13.5 -27 36.5 -44.5q23 -17.5 53.5 -25.5q30.5 -8 65.5 -8h68v277q-14 3 -29 4.5q-15 1.5 -40 1.5zt0 0zM158 843h316v-62l-316 0z" />
-<glyph unicode="&#62761;" horiz-adv-x="475" d="M326 207l-77 -12l-132 -195h-97l120 171l40 37q-52 8 -88.5 42q-36.5 34 -36.5 92q0 45 15.5 77q15.5 32 44.5 53q29 21 69 30.5q40 9.5 90 9.5q37 0 69 -5q32 -5 63 -11l0 -496h-80zM326 432q-13 5 -29 7.5q-16 2.5 -28 2.5q-64 0 -97.5 -23q-33.5 -23 -33.5 -73q0 -45 35.5 -69.5q35.5 -24.5 93.5 -24.5q1 0 3 0q2 0 8 0q6 0 17 0.5q11 0.5 31 1.5zM91 643h296v-62l-296 0z" />
-<glyph unicode="&#62762;" horiz-adv-x="569" d="M484 0h-83v305l-103 -22l-174 -283h-98l156 249l61 43q-36 8 -66.5 24.5q-30.5 16.5 -53 42q-22.5 25.5 -35 59.5q-12.5 34 -12.5 78q0 61 20.5 101.5q20.5 40.5 56 65q35.5 24.5 83 35q47.5 10.5 100.5 10.5q34 0 72.5 -3q38.5 -3 75.5 -12zM332 636q-33 0 -63 -6.5q-30 -6.5 -53.5 -22.5q-23.5 -16 -37.5 -43q-14 -27 -14 -68q0 -38 13.5 -65q13.5 -27 36.5 -44.5q23 -17.5 53.5 -25.5q30.5 -8 65.5 -8h68v277q-14 3 -29 4.5q-15 1.5 -40 1.5zt0 0zM216 870q4 -37 28 -57q24 -20 64 -20q40 0 63.5 20q23.5 20 28.5 56l71 -17q-11 -54 -50.5 -85.5q-39.5 -31.5 -113.5 -31.5q-71 0 -116.5 27.5q-45.5 27.5 -53.5 87.5z" />
-<glyph unicode="&#62763;" horiz-adv-x="475" d="M326 207l-77 -12l-132 -195h-97l120 171l40 37q-52 8 -88.5 42q-36.5 34 -36.5 92q0 45 15.5 77q15.5 32 44.5 53q29 21 69 30.5q40 9.5 90 9.5q37 0 69 -5q32 -5 63 -11l0 -496h-80zM326 432q-13 5 -29 7.5q-16 2.5 -28 2.5q-64 0 -97.5 -23q-33.5 -23 -33.5 -73q0 -45 35.5 -69.5q35.5 -24.5 93.5 -24.5q1 0 3 0q2 0 8 0q6 0 17 0.5q11 0.5 31 1.5zM155 702q10 -46 34.5 -64q24.5 -18 56.5 -18q32 0 57 19q25 19 34 62l60 -19q-9 -58 -51.5 -89q-42.5 -31 -101.5 -31q-27 0 -53.5 7q-26.5 7 -47.5 21q-21 14 -36 36q-15 22 -20 52z" />
-<glyph unicode="&#62764;" horiz-adv-x="893" d="M168 395h124q8 153 77 235q69 82 197 82q73 0 125 -26q52 -26 84 -73.5q32 -47.5 47 -114q15 -66.5 15 -148.5q0 -175 -67 -268.5q-67 -93.5 -204 -93.5q-69 0 -120 23.5q-51 23.5 -84.5 67q-33.5 43.5 -50.5 105q-17 61.5 -20 137.5l-123 0v-321h-83v700h83zM379 350q0 -58 10 -110q10 -52 32 -91.5q22 -39.5 57.5 -63q35.5 -23.5 87.5 -23.5q93 0 138 70q45 70 45 218q0 57 -9 109.5q-9 52.5 -30.5 92q-21.5 39.5 -56.5 63q-35 23.5 -87 23.5q-93 0 -140 -70.5q-47 -70.5 -47 -217.5zt0 0zM297 843h316v-62l-316 0z" />
-<glyph unicode="&#62765;" horiz-adv-x="719" d="M465 -12q-54 0 -92.5 16.5q-38.5 16.5 -63 47q-24.5 30.5 -37 74q-12.5 43.5 -15.5 95.5l-100 0v-221h-80v500h80v-209h101q8 107 58.5 164q50.5 57 150.5 57q55 0 93.5 -18.5q38.5 -18.5 63 -53q24.5 -34.5 35.5 -83q11 -48.5 11 -107.5q0 -127 -50.5 -194.5q-50.5 -67.5 -154.5 -67.5zt0 0zM336 250q0 -39 6 -74q6 -35 21 -61.5q15 -26.5 40.5 -41.5q25.5 -15 63.5 -15q64 0 92 46.5q28 46.5 28 145.5q0 39 -5.5 74q-5.5 35 -19.5 61.5q-14 26.5 -37 41.5q-23 15 -59 15q-69 0 -99.5 -46.5q-30.5 -46.5 -30.5 -145.5zt0 0zM207 643h296v-62l-296 0z" />
-<glyph unicode="&#62766;" horiz-adv-x="893" d="M168 395h124q8 153 77 235q69 82 197 82q73 0 125 -26q52 -26 84 -73.5q32 -47.5 47 -114q15 -66.5 15 -148.5q0 -175 -67 -268.5q-67 -93.5 -204 -93.5q-69 0 -120 23.5q-51 23.5 -84.5 67q-33.5 43.5 -50.5 105q-17 61.5 -20 137.5l-123 0v-321h-83v700h83zM379 350q0 -58 10 -110q10 -52 32 -91.5q22 -39.5 57.5 -63q35.5 -23.5 87.5 -23.5q93 0 138 70q45 70 45 218q0 57 -9 109.5q-9 52.5 -30.5 92q-21.5 39.5 -56.5 63q-35 23.5 -87 23.5q-93 0 -140 -70.5q-47 -70.5 -47 -217.5zt0 0zM339 870q4 -37 28 -57q24 -20 64 -20q40 0 63.5 20q23.5 20 28.5 56l71 -17q-11 -54 -50.5 -85.5q-39.5 -31.5 -113.5 -31.5q-71 0 -116.5 27.5q-45.5 27.5 -53.5 87.5z" />
-<glyph unicode="&#62767;" horiz-adv-x="719" d="M465 -12q-54 0 -92.5 16.5q-38.5 16.5 -63 47q-24.5 30.5 -37 74q-12.5 43.5 -15.5 95.5l-100 0v-221h-80v500h80v-209h101q8 107 58.5 164q50.5 57 150.5 57q55 0 93.5 -18.5q38.5 -18.5 63 -53q24.5 -34.5 35.5 -83q11 -48.5 11 -107.5q0 -127 -50.5 -194.5q-50.5 -67.5 -154.5 -67.5zt0 0zM336 250q0 -39 6 -74q6 -35 21 -61.5q15 -26.5 40.5 -41.5q25.5 -15 63.5 -15q64 0 92 46.5q28 46.5 28 145.5q0 39 -5.5 74q-5.5 35 -19.5 61.5q-14 26.5 -37 41.5q-23 15 -59 15q-69 0 -99.5 -46.5q-30.5 -46.5 -30.5 -145.5zt0 0zM263 702q10 -46 34.5 -64q24.5 -18 56.5 -18q32 0 57 19q25 19 34 62l60 -19q-9 -58 -51.5 -89q-42.5 -31 -101.5 -31q-27 0 -53.5 7q-26.5 7 -47.5 21q-21 14 -36 36q-15 22 -20 52z" />
-<glyph unicode="&#62768;" horiz-adv-x="657" d="M456 626h-209q-10 -200 -26.5 -332.5q-16.5 -132.5 -49.5 -206.5q-22 -48 -52 -70q-30 -22 -65 -22q-18 0 -31 2.5q-13 2.5 -25 7.5l11 72q10 -3 21 -3q17 0 33.5 11q16.5 11 32.5 41q14 27 26.5 72q12.5 45 22 114q9.5 69 15.5 164.5q6 95.5 9 223.5l370 0v-626h92v-203h-58l-15 129l-102 0z" />
-<glyph unicode="&#62769;" horiz-adv-x="523" d="M346 430h-145q-3 -42 -6 -90.5q-3 -48.5 -9 -97q-6 -48.5 -16 -93q-10 -44.5 -25.5 -78.5q-15.5 -34 -38 -54.5q-22.5 -20.5 -53.5 -20.5q-19 0 -33 2q-14 2 -25 7l12 67q12 -4 26 -4q20 0 36 17q16 17 28 64.5q12 47.5 20 131.5q8 84 11 219l298 0v-430h74v-197h-54l-15 127l-85 0z" />
-<glyph unicode="&#62770;" horiz-adv-x="681" d="M513 474l6 80h-4l-43 -82l-338 -472h-49v700h83v-480l-7 -79h4l44 82l338 477h49v-727q0 -93 -32.5 -139q-32.5 -46 -104.5 -46q-8 0 -16.5 0.5q-8.5 0.5 -14.5 1.5l0 68q28 0 45 8.5q17 8.5 26 26q9 17.5 11.5 44.5q2.5 27 2.5 63zM258 870q4 -37 28 -57q24 -20 64 -20q40 0 63.5 20q23.5 20 28.5 56l71 -17q-11 -54 -50.5 -85.5q-39.5 -31.5 -113.5 -31.5q-71 0 -116.5 27.5q-45.5 27.5 -53.5 87.5z" />
-<glyph unicode="&#62771;" horiz-adv-x="546" d="M389 296l3 62h-3l-41 -64l-225 -294h-46v500h80v-305l-3 -59h4l39 62l225 302h47v-527q0 -93 -32 -139q-32 -46 -102 -46q-8 0 -15 0.5q-7 0.5 -15 1.5l0 68q28 0 44.5 8.5q16.5 8.5 25.5 26q9 17.5 11.5 44.5q2.5 27 2.5 63zM192 702q10 -46 34.5 -64q24.5 -18 56.5 -18q32 0 57 19q25 19 34 62l60 -19q-9 -58 -51.5 -89q-42.5 -31 -101.5 -31q-27 0 -53.5 7q-26.5 7 -47.5 21q-21 14 -36 36q-15 22 -20 52z" />
-<glyph unicode="&#62772;" horiz-adv-x="684" d="M56 350q0 175 74 268.5q74 93.5 211 93.5q74 0 128 -26q54 -26 89.5 -73.5q35.5 -47.5 52.5 -114q17 -66.5 17 -148.5q0 -175 -74.5 -268.5q-74.5 -93.5 -212.5 -93.5q-73 0 -126.5 26q-53.5 26 -89 73.5q-35.5 47.5 -52.5 114q-17 66.5 -17 148.5zt0 0zM144 350q0 -58 11.5 -110q11.5 -52 35.5 -91.5q24 -39.5 61.5 -63q37.5 -23.5 88.5 -23.5q93 0 146 70.5q53 70.5 53 217.5q0 57 -11.5 109.5q-11.5 52.5 -36 92q-24.5 39.5 -62 63q-37.5 23.5 -89.5 23.5q-92 0 -144.5 -70.5q-52.5 -70.5 -52.5 -217.5zt0 0zM278 797q0 21 16.5 36.5q16.5 15.5 45.5 15.5q29 0 46.5 -15.5q17.5 -15.5 17.5 -36.5q0 -23 -17.5 -38q-17.5 -15 -46.5 -15q-29 0 -45.5 15t-16.5 38z" />
-<glyph unicode="&#62773;" horiz-adv-x="536" d="M49 250q0 127 56.5 194.5q56.5 67.5 162.5 67.5q56 0 97.5 -18.5q41.5 -18.5 68.5 -53q27 -34.5 40 -83q13 -48.5 13 -107.5q0 -127 -56.5 -194.5q-56.5 -67.5 -162.5 -67.5q-56 0 -97.5 18.5q-41.5 18.5 -68.5 53q-27 34.5 -40 83q-13 48.5 -13 107.5zt0 0zM132 250q0 -38 7.5 -73q7.5 -35 23.5 -61q16 -26 42 -42q26 -16 63 -16q136 -1 136 192q0 39 -7.5 74q-7.5 35 -23.5 61q-16 26 -42 41.5q-26 15.5 -63 15.5q-136 1 -136 -192zt0 0zM214 652q0 23 15.5 39.5q15.5 16.5 39.5 16.5q24 0 41 -16.5q17 -16.5 17 -39.5q0 -23 -17 -38q-17 -15 -41 -15q-24 0 -39.5 15t-15.5 38z" />
-<glyph unicode="&#62774;" horiz-adv-x="769" d="M601 700h83v-700h-83zM85 700h83v-272q5 1 15 2.5q10 1.5 22 2.5q12 1 24.5 2q12.5 1 24.5 1q47 0 91.5 -9.5q44.5 -9.5 78.5 -33.5q34 -24 54.5 -64.5q20.5 -40.5 20.5 -102.5q0 -60 -19 -104.5q-19 -44.5 -53.5 -73q-34.5 -28.5 -82.5 -42.5q-48 -14 -106 -14q-14 0 -32.5 0.5q-18.5 0.5 -39 2q-20.5 1.5 -41.5 4.5q-21 3 -40 8zM245 64q72 0 119 39q47 39 47 117q0 42 -14 70q-14 28 -37.5 44.5q-23.5 16.5 -54 23q-30.5 6.5 -64.5 6.5q-18 0 -40 -3q-22 -3 -33 -6l0 -285q27 -6 77 -6zt0 0zM298 870q4 -37 28 -57q24 -20 64 -20q40 0 63.5 20q23.5 20 28.5 56l71 -17q-11 -54 -50.5 -85.5q-39.5 -31.5 -113.5 -31.5q-71 0 -116.5 27.5q-45.5 27.5 -53.5 87.5z" />
-<glyph unicode="&#62775;" horiz-adv-x="660" d="M157 70q37 -6 71 -6q63 0 88 24.5q25 24.5 25 69.5q0 40 -24.5 66q-24.5 26 -85.5 26q-17 0 -37 -1q-20 -1 -37 -6zM157 309q24 4 46 5.5q22 1.5 42 1.5q51 0 85.5 -11.5q34.5 -11.5 55.5 -31.5q21 -20 29.5 -47.5q8.5 -27.5 8.5 -58.5q0 -91 -50.5 -132q-50.5 -41 -163.5 -41q-64 0 -133 6l0 500h80zM503 500h80v-500h-80zM237 702q10 -46 34.5 -64q24.5 -18 56.5 -18q32 0 57 19q25 19 34 62l60 -19q-9 -58 -51.5 -89q-42.5 -31 -101.5 -31q-27 0 -53.5 7q-26.5 7 -47.5 21q-21 14 -36 36q-15 22 -20 52z" />
-<glyph unicode="&#62776;" horiz-adv-x="540" d="M356 331q-12 0 -22.5 -0.5q-10.5 -0.5 -21.5 -1.5q-71 -5 -115 -35q-44 -30 -44 -92q0 -72 48 -106q48 -34 128 -34q42 0 81 9.5q39 9.5 60 23.5l26 -63q-25 -16 -70.5 -30q-45.5 -14 -111.5 -14q-56 0 -101.5 12.5q-45.5 12.5 -78.5 38.5q-33 26 -51 65q-18 39 -18 93q0 73 39 118.5q39 45.5 110 56.5l0 4q-33 10 -57 27.5q-24 17.5 -39.5 39.5q-15.5 22 -23.5 47q-8 25 -8 50q0 45 18 77.5q18 32.5 49 53.5q31 21 73 31q42 10 89 10q27 0 53.5 -3.5q26.5 -3.5 49.5 -8.5q23 -5 41 -11.5q18 -6.5 29 -13.5l-24 -67q-27 12 -66 21q-39 9 -76 9q-68 0 -108 -24q-40 -24 -40 -82q0 -28 12 -50q12 -22 32 -38q20 -16 45 -26q25 -10 51 -13q17 -2 40 -3q23 -1 41 -1h16v-70zM149 794q0 21 15 34q15 13 39 13q23 0 37.5 -13q14.5 -13 14.5 -34q0 -20 -14.5 -33q-14.5 -13 -37.5 -13q-24 0 -39 13q-15 13 -15 33zt0 0zM341 794q0 21 14.5 34q14.5 13 37.5 13q24 0 39 -13q15 -13 15 -34q0 -20 -15 -33q-15 -13 -39 -13q-23 0 -37.5 13t-14.5 33z" />
-<glyph unicode="&#62777;" horiz-adv-x="441" d="M258 223q-69 0 -99 -20.5q-30 -20.5 -30 -56.5q0 -38 32 -61.5q32 -23.5 93 -23.5q37 0 70 9q33 9 56 23l23 -65q-25 -14 -59.5 -25.5q-34.5 -11.5 -85.5 -11.5q-106 0 -157.5 40q-51.5 40 -51.5 109q0 51 24.5 80q24.5 29 81.5 44l0 4q-42 14 -64.5 44q-22.5 30 -22.5 71q0 62 45 93q45 31 121 31q57 0 97 -13q40 -13 70 -30l-23 -62q-18 11 -50.5 23q-32.5 12 -71.5 12q-54 0 -81 -16q-27 -16 -27 -55q0 -16 8.5 -30.5q8.5 -14.5 22.5 -25q14 -10.5 31.5 -16.5q17.5 -6 35.5 -6h70v-65zM93 633q0 23 13.5 37q13.5 14 35.5 14q22 0 35.5 -14q13.5 -14 13.5 -37q0 -21 -13.5 -35q-13.5 -14 -35.5 -14q-22 0 -35.5 14q-13.5 14 -13.5 35zt0 0zM285 633q0 23 13.5 37q13.5 14 35.5 14q23 0 36.5 -14q13.5 -14 13.5 -37q0 -21 -13.5 -35q-13.5 -14 -36.5 -14q-22 0 -35.5 14t-13.5 35z" />
-<glyph unicode="&#62778;" horiz-adv-x="291" d="M104 700h83v-700h-83zM84 797q0 21 16.5 36.5q16.5 15.5 45.5 15.5q29 0 46.5 -15.5q17.5 -15.5 17.5 -36.5q0 -23 -17.5 -38q-17.5 -15 -46.5 -15q-29 0 -45.5 15t-16.5 38z" />
-<glyph unicode="&#62779;" horiz-adv-x="268" d="M94 500h80v-500l-80 0z" />
-<glyph unicode="&#62780;" horiz-adv-x="517" d="M85 700h381v-74h-298v-239h278v-74h-278v-313l-83 0z" />
-<glyph unicode="&#62781;" horiz-adv-x="413" d="M369 430h-212v-153h187v-70h-187v-207h-80v500l292 0z" />
-<glyph unicode="&#62782;" horiz-adv-x="571" d="M533 29q-26 -20 -63 -29q-37 -9 -80 -11l-14 -168h-52l-19 172q-53 8 -98.5 33q-45.5 25 -79 69q-33.5 44 -52.5 107.5q-19 63.5 -19 147.5q0 98 26.5 166.5q26.5 68.5 70 112q43.5 43.5 97.5 63.5q54 20 110 20q60 0 98 -6.5q38 -6.5 65 -17.5l-20 -73q-48 23 -137 23q-41 0 -81 -15q-40 -15 -71.5 -49q-31.5 -34 -50.5 -89q-19 -55 -19 -135q0 -72 18 -126q18 -54 49.5 -90q31.5 -36 74 -53.5q42.5 -17.5 92.5 -17.5q45 0 78.5 8.5q33.5 8.5 56.5 22.5z" />
-<glyph unicode="&#62783;" horiz-adv-x="451" d="M418 33q-44 -32 -109 -41l-14 -171h-52l-19 169q-48 6 -81 27q-33 21 -54 54.5q-21 33.5 -30.5 79q-9.5 45.5 -9.5 99.5q0 127 56 194.5q56 67.5 161 67.5q48 0 81.5 -7.5q33.5 -7.5 60.5 -21.5l-23 -69q-23 13 -51 20.5q-28 7.5 -60 7.5q-142 0 -142 -192q0 -38 7.5 -72.5q7.5 -34.5 25 -61q17.5 -26.5 46 -42.5q28.5 -16 70.5 -16q36 0 64.5 11q28.5 11 46.5 25z" />
-<glyph unicode="&#62784;" horiz-adv-x="654" d="M85 700q19 3 42.5 4.5q23.5 1.5 49 2q25.5 0.5 50 1q24.5 0.5 45.5 0.5q84 0 145.5 -26q61.5 -26 101.5 -72.5q40 -46.5 59.5 -111.5q19.5 -65 19.5 -143q0 -71 -18.5 -136.5q-18.5 -65.5 -58.5 -116q-40 -50.5 -104 -81q-64 -30.5 -155 -30.5q-16 0 -41.5 0.5q-25.5 0.5 -52.5 2q-27 1.5 -50 2.5q-23 1 -33 3zM274 634q-13 0 -28.5 0q-15.5 0 -30.5 -1q-15 -1 -27.5 -2q-12.5 -1 -19.5 -2l0 -560q5 -1 19 -1.5q14 -0.5 29 -1q15 -0.5 29 -1q14 -0.5 19 -0.5q70 0 117.5 24q47.5 24 76 64.5q28.5 40.5 40.5 93q12 52.5 12 108.5q0 49 -11 98.5q-11 49.5 -38 89.5q-27 40 -72.5 65.5q-45.5 25.5 -114.5 25.5zt0 0zM330 870h114v-21l-163 -97l-69 0z" />
-<glyph unicode="&#62785;" horiz-adv-x="547" d="M461 172q0 -51 1 -92.5q1 -41.5 9 -81.5l-54 0l-20 71h-4q-20 -35 -58 -58q-38 -23 -89 -23q-100 0 -148.5 63q-48.5 63 -48.5 197q0 128 60.5 194.5q60.5 66.5 166.5 66.5q37 0 58.5 -4q21.5 -4 46.5 -13l0 208h80zM259 58q51 0 81 26.5q30 26.5 41 80.5l0 248q-18 14 -41 20q-23 6 -61 6q-69 0 -108 -45.5q-39 -45.5 -39 -145.5q0 -41 6.5 -76q6.5 -35 21.5 -60q15 -25 39.5 -39.5q24.5 -14.5 59.5 -14.5zt0 0zM544 700h89v-21l-101 -128l-47 0z" />
-<glyph unicode="&#62786;" horiz-adv-x="672" d="M504 321h-336v-321h-83v700h83v-305h336v305h83v-700h-83zM379 870h114v-21l-163 -97l-69 0z" />
-<glyph unicode="&#62787;" horiz-adv-x="547" d="M398 0v285q0 39 -4.5 68.5q-4.5 29.5 -16.5 49q-12 19.5 -32.5 29.5q-20.5 10 -53.5 10q-47 0 -85 -30.5q-38 -30.5 -49 -78.5l0 -333h-80v700h80v-256h4q26 31 62.5 49.5q36.5 18.5 90.5 18.5q42 0 73 -9.5q31 -9.5 51.5 -33.5q20.5 -24 30 -64.5q9.5 -40.5 9.5 -102.5v-302zM321 720h89v-21l-101 -128l-47 0z" />
-<glyph unicode="&#62788;" horiz-adv-x="517" d="M499 0h-414v700h83v-626h331zM301 700h89v-21l-101 -128l-47 0z" />
-<glyph unicode="&#62789;" horiz-adv-x="292" d="M166 123q0 -35 12 -50q12 -15 34 -15q13 0 28 2q15 2 34 9l9 -63q-16 -8 -44.5 -13q-28.5 -5 -49.5 -5q-45 0 -74 25.5q-29 25.5 -29 86.5v600h80zM254 700h89v-21l-101 -128l-47 0z" />
-<glyph unicode="&#62790;" horiz-adv-x="555" d="M537 626h-218v-626h-83v626h-218v74h519zM350 870h114v-21l-163 -97l-69 0z" />
-<glyph unicode="&#62791;" horiz-adv-x="339" d="M11 500h78v99l80 23v-122h136v-70h-136v-277q0 -52 13 -73.5q13 -21.5 44 -21.5q26 0 44 5.5q18 5.5 40 14.5l18 -61q-27 -13 -59 -21q-32 -8 -69 -8q-61 0 -86 34.5q-25 34.5 -25 115.5v292h-78zM285 700h89v-21l-101 -128l-47 0z" />
-<glyph unicode="&#62792;" horiz-adv-x="568" d="M267 219l24 -106h1l26 108l169 479h83l-265 -711h-37l-270 711h91zM345 870h114v-21l-163 -97l-69 0z" />
-<glyph unicode="&#62793;" horiz-adv-x="482" d="M221 207l28 -95h1l25 97l112 291h86l-213 -511h-34l-217 511h92zM265 720h89v-21l-101 -128l-47 0z" />
-<glyph unicode="&#62794;" horiz-adv-x="541" d="M139 331v70h16q9 0 22 0q13 0 26.5 1q13.5 1 26 1.5q12.5 0.5 20.5 2.5q26 4 49 13.5q23 9.5 40 24.5q17 15 27 35q10 20 10 44q0 33 -11 55q-11 22 -30.5 35.5q-19.5 13.5 -45 19q-25.5 5.5 -54.5 5.5q-54 0 -92 -7.5q-38 -7.5 -61 -18.5l-22 66q20 11 72 22.5q52 11.5 117 11.5q40 0 78.5 -8.5q38.5 -8.5 69 -28q30.5 -19.5 49 -53q18.5 -33.5 18.5 -82.5q0 -50 -33 -95.5q-33 -45.5 -99 -65.5l0 -4q71 -10 112 -53q41 -43 41 -115q0 -57 -22.5 -98.5q-22.5 -41.5 -59 -68.5q-36.5 -27 -84 -39.5q-47.5 -12.5 -96.5 -12.5q-66 0 -108.5 7.5q-42.5 7.5 -70.5 18.5l21 75q23 -11 64.5 -19q41.5 -8 100.5 -8q31 0 61 8.5q30 8.5 53.5 26q23.5 17.5 38 43.5q14.5 26 14.5 62q0 63 -44 92.5q-44 29.5 -115 34.5q-12 1 -22.5 1.5q-10.5 0.5 -21.5 0.5z" />
-<glyph unicode="&#62795;" horiz-adv-x="434" d="M116 152v65h70q18 0 36 9.5q18 9.5 32 25.5q14 16 23 37q9 21 9 44q0 56 -28 80q-28 24 -83 24q-39 0 -70 -11.5q-31 -11.5 -49 -22.5l-23 62q30 17 69.5 29.5q39.5 12.5 95.5 12.5q78 0 123 -39q45 -39 45 -114q0 -30 -8.5 -55q-8.5 -25 -21.5 -45.5q-13 -20.5 -29 -34.5q-16 -14 -31 -21l0 -4q25 -9 47 -22.5q22 -13.5 38 -35q16 -21.5 25 -52.5q9 -31 9 -74q0 -51 -17 -91.5q-17 -40.5 -47 -69q-30 -28.5 -70.5 -43.5q-40.5 -15 -87.5 -15q-51 0 -84 9q-33 9 -60 22l23 66q23 -13 53.5 -20q30.5 -7 54.5 -7q32 0 60 9q28 9 49 28q21 19 33.5 48q12.5 29 12.5 68q0 70 -43 104q-43 34 -112 34z" />
-<glyph unicode="&#62796;" horiz-adv-x="541" d="M139 331v70h16q9 0 22 0q13 0 26.5 1q13.5 1 26 1.5q12.5 0.5 20.5 2.5q26 4 49 13.5q23 9.5 40 24.5q17 15 27 35q10 20 10 44q0 33 -11 55q-11 22 -30.5 35.5q-19.5 13.5 -45 19q-25.5 5.5 -54.5 5.5q-54 0 -92 -7.5q-38 -7.5 -61 -18.5l-22 66q20 11 72 22.5q52 11.5 117 11.5q40 0 78.5 -8.5q38.5 -8.5 69 -28q30.5 -19.5 49 -53q18.5 -33.5 18.5 -82.5q0 -50 -33 -95.5q-33 -45.5 -99 -65.5l0 -4q71 -10 112 -53q41 -43 41 -115q0 -57 -22.5 -98.5q-22.5 -41.5 -59 -68.5q-36.5 -27 -84 -39.5q-47.5 -12.5 -96.5 -12.5q-66 0 -108.5 7.5q-42.5 7.5 -70.5 18.5l21 75q23 -11 64.5 -19q41.5 -8 100.5 -8q31 0 61 8.5q30 8.5 53.5 26q23.5 17.5 38 43.5q14.5 26 14.5 62q0 63 -44 92.5q-44 29.5 -115 34.5q-12 1 -22.5 1.5q-10.5 0.5 -21.5 0.5zM267 746h-58l-127 103v21h82l59 -50l17 -34l19 33l63 51h78l0 -22z" />
-<glyph unicode="&#62797;" horiz-adv-x="434" d="M116 152v65h70q18 0 36 9.5q18 9.5 32 25.5q14 16 23 37q9 21 9 44q0 56 -28 80q-28 24 -83 24q-39 0 -70 -11.5q-31 -11.5 -49 -22.5l-23 62q30 17 69.5 29.5q39.5 12.5 95.5 12.5q78 0 123 -39q45 -39 45 -114q0 -30 -8.5 -55q-8.5 -25 -21.5 -45.5q-13 -20.5 -29 -34.5q-16 -14 -31 -21l0 -4q25 -9 47 -22.5q22 -13.5 38 -35q16 -21.5 25 -52.5q9 -31 9 -74q0 -51 -17 -91.5q-17 -40.5 -47 -69q-30 -28.5 -70.5 -43.5q-40.5 -15 -87.5 -15q-51 0 -84 9q-33 9 -60 22l23 66q23 -13 53.5 -20q30.5 -7 54.5 -7q32 0 60 9q28 9 49 28q21 19 33.5 48q12.5 29 12.5 68q0 70 -43 104q-43 34 -112 34zM218 550h-37l-115 182h78l39 -66l21 -58l22 58l45 66l70 0z" />
-<glyph unicode="&#63020;" horiz-adv-x="194" d="M155 445q0 -23 -15 -36.5q-15 -13.5 -38 -13.5q-27 0 -44.5 18q-17.5 18 -17.5 53q0 33 9.5 56.5q9.5 23.5 23 40q13.5 16.5 28 26.5q14.5 10 25.5 14l25 -35q-22 -11 -35.5 -29.5q-13.5 -18.5 -13.5 -46.5q4 1 11 1q20 0 31 -14t11 -34z" />
-<glyph unicode="&#63021;" horiz-adv-x="194" d="M40 484q0 23 14.5 36q14.5 13 37.5 13q28 0 45.5 -17.5q17.5 -17.5 17.5 -52.5q0 -33 -9.5 -57q-9.5 -24 -23 -40.5q-13.5 -16.5 -28.5 -26.5q-15 -10 -26 -14l-25 34q23 12 36 30q13 18 13 47q-4 -1 -11 -1q-19 0 -30 13.5t-11 35.5z" />
-<glyph unicode="&#63022;" horiz-adv-x="340" d="M301 445q0 -23 -15 -36.5q-15 -13.5 -38 -13.5q-27 0 -44.5 18q-17.5 18 -17.5 53q0 33 9.5 56.5q9.5 23.5 23 40q13.5 16.5 28 26.5q14.5 10 25.5 14l25 -35q-22 -11 -35.5 -29.5q-13.5 -18.5 -13.5 -46.5q4 1 11 1q20 0 31 -14q11 -14 11 -34zt0 0zM155 445q0 -23 -15 -36.5q-15 -13.5 -38 -13.5q-27 0 -44.5 18q-17.5 18 -17.5 53q0 33 9.5 56.5q9.5 23.5 23 40q13.5 16.5 28 26.5q14.5 10 25.5 14l25 -35q-22 -11 -35.5 -29.5q-13.5 -18.5 -13.5 -46.5q4 1 11 1q20 0 31 -14t11 -34z" />
-<glyph unicode="&#63023;" horiz-adv-x="340" d="M186 483q0 23 14.5 36q14.5 13 37.5 13q28 0 45.5 -17.5q17.5 -17.5 17.5 -52.5q0 -33 -9.5 -57q-9.5 -24 -23 -40.5q-13.5 -16.5 -28.5 -26.5q-15 -10 -26 -14l-25 34q23 12 36 30q13 18 13 47q-4 -1 -11 -1q-19 0 -30 13.5q-11 13.5 -11 35.5zt0 0zM40 483q0 23 14.5 36q14.5 13 37.5 13q28 0 45.5 -17.5q17.5 -17.5 17.5 -52.5q0 -33 -9.5 -57q-9.5 -24 -23 -40.5q-13.5 -16.5 -28.5 -26.5q-15 -10 -26 -14l-25 34q23 12 36 30q13 18 13 47q-4 -1 -11 -1q-19 0 -30 13.5t-11 35.5z" />
-<glyph unicode="&#63028;" horiz-adv-x="218" d="M90 525h78l-31 -193l-47 0z" />
-<glyph unicode="&#63029;" horiz-adv-x="335" d="M207 525h78l-31 -193h-47zM90 525h78l-31 -193l-47 0z" />
-<glyph unicode="&#63074;" horiz-adv-x="394" d="M179 595l7 36l-28 -28l-78 -47l-27 49l154 102h42v-427l-70 0z" />
-<glyph unicode="&#63171;" horiz-adv-x="235" d="M60 -102q0 21 15.5 34q15.5 13 35.5 13q25 0 44.5 -17.5q19.5 -17.5 19.5 -57.5q0 -26 -9 -45.5q-9 -19.5 -21.5 -34q-12.5 -14.5 -26 -23q-13.5 -8.5 -23.5 -12.5l-28 32q20 11 32 28q12 17 12 41q-4 -1 -10 -1q-18 0 -29.5 12t-11.5 31z" />
-<glyph unicode="&#63177;" horiz-adv-x="352" d="M178 870h114v-21l-163 -97l-69 0z" />
-<glyph unicode="&#63178;" horiz-adv-x="438" d="M245 746h-58l-127 103v21h82l59 -50l17 -34l19 33l63 51h78l0 -22z" />
-<glyph unicode="&#63179;" horiz-adv-x="418" d="M60 794q0 21 15 34q15 13 39 13q23 0 37.5 -13q14.5 -13 14.5 -34q0 -20 -14.5 -33q-14.5 -13 -37.5 -13q-24 0 -39 13q-15 13 -15 33zt0 0zM252 794q0 21 14.5 34q14.5 13 37.5 13q24 0 39 -13q15 -13 15 -34q0 -20 -15 -33q-15 -13 -39 -13q-23 0 -37.5 13t-14.5 33z" />
-<glyph unicode="&#63182;" horiz-adv-x="352" d="M292 752h-74l-158 97v21l114 0z" />
-<glyph unicode="&#63183;" horiz-adv-x="445" d="M124 850h93v-16l-100 -93h-57zM286 850h99v-16l-143 -93l-58 0z" />
-<glyph unicode="&#63184;" horiz-adv-x="436" d="M60 843h316v-62l-316 0z" />
-<glyph unicode="&#63185;" horiz-adv-x="454" d="M139 870q4 -37 28 -57q24 -20 64 -20q40 0 63.5 20q23.5 20 28.5 56l71 -17q-11 -54 -50.5 -85.5q-39.5 -31.5 -113.5 -31.5q-71 0 -116.5 27.5q-45.5 27.5 -53.5 87.5z" />
-<glyph unicode="&#63188;" horiz-adv-x="430" d="M128 702q10 -46 34.5 -64q24.5 -18 56.5 -18q32 0 57 19q25 19 34 62l60 -19q-9 -58 -51.5 -89q-42.5 -31 -101.5 -31q-27 0 -53.5 7q-26.5 7 -47.5 21q-21 14 -36 36q-15 22 -20 52z" />
-<glyph unicode="&#64257;" horiz-adv-x="540" d="M462 500v-500h-80v430h-202v-430h-80v430h-78v70h78v28q0 94 46.5 136.5q46.5 42.5 136.5 42.5q59 0 105 -11.5q46 -11.5 72 -27.5l-27 -64q-27 17 -64 25q-37 8 -79 8q-37 0 -58.5 -8.5q-21.5 -8.5 -33 -26q-11.5 -17.5 -15 -43.5q-3.5 -26 -3.5 -59z" />
-<glyph unicode="&#64258;" horiz-adv-x="583" d="M376 634q-15 3 -43 5.5q-28 2.5 -55 2.5q-34 0 -53.5 -9.5q-19.5 -9.5 -29.5 -28q-10 -18.5 -12.5 -45q-2.5 -26.5 -2.5 -59.5l103 0v-70h-103v-430h-80v430h-78v70h78v28q0 94 40.5 139q40.5 45 135.5 45q20 0 45 -1.5q25 -1.5 50.5 -4q25.5 -2.5 48 -5.5q22.5 -3 36.5 -7l0 -571q0 -35 12.5 -50q12.5 -15 33.5 -15q14 0 29 2q15 2 34 9l8 -63q-8 -4 -19.5 -7.5q-11.5 -3.5 -24.5 -5.5q-13 -2 -26 -3.5q-13 -1.5 -23 -1.5q-45 0 -74.5 25.5q-29.5 25.5 -29.5 86.5z" />
diff --git a/admin/survey/Fonts/PTSans/PTS55F_W.ttf b/admin/survey/Fonts/PTSans/PTS55F_W.ttf
deleted file mode 100644
index cc0d908..0000000
--- a/admin/survey/Fonts/PTSans/PTS55F_W.ttf
+++ /dev/null
Binary files differ
diff --git a/admin/survey/Fonts/PTSans/PTS55F_W.woff b/admin/survey/Fonts/PTSans/PTS55F_W.woff
deleted file mode 100644
index 8af9db8..0000000
--- a/admin/survey/Fonts/PTSans/PTS55F_W.woff
+++ /dev/null
Binary files differ
diff --git a/admin/survey/Fonts/PTSans/PTS56F_W.eot b/admin/survey/Fonts/PTSans/PTS56F_W.eot
deleted file mode 100644
index cb58fe2..0000000
--- a/admin/survey/Fonts/PTSans/PTS56F_W.eot
+++ /dev/null
Binary files differ
diff --git a/admin/survey/Fonts/PTSans/PTS56F_W.svg b/admin/survey/Fonts/PTSans/PTS56F_W.svg
deleted file mode 100644
index 86a7f01..0000000
--- a/admin/survey/Fonts/PTSans/PTS56F_W.svg
+++ /dev/null
@@ -1,728 +0,0 @@
-<?xml version="1.0" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
-<svg xmlns="http://www.w3.org/2000/svg">
-<metadata>
-Generated by SVGconv.
-Copyright : Copyright 2009 ParaType Ltd. All rights reserved.
-Designer : A.Korolkova, O.Umpeleva, V.Yefimov
-Foundry : ParaType Ltd
-Foundry URL : http://www.paratype.com
-</metadata>
-<defs>
-<font id="PTSans-Italic" horiz-adv-x="503" >
-<font-face units-per-em="1000" ascent="1018" descent="276" />
-<missing-glyph horiz-adv-x="750" />
-<glyph unicode="&#32;" horiz-adv-x="267" />
-<glyph unicode="&#33;" horiz-adv-x="273" d="M237 700h80l-73 -347l-54 -176h-46l20 176zM87 46q0 27 16 42.5q16 15.5 42 15.5q26 0 42 -15.5q16 -15.5 16 -42.5q0 -26 -16 -42q-16 -16 -42 -16q-26 0 -42 16t-16 42z" />
-<glyph unicode="&#34;" horiz-adv-x="303" d="M231 700h74l-70 -193h-45zM119 700h74l-70 -193l-45 0z" />
-<glyph unicode="&#35;" horiz-adv-x="520" d="M316 225h-106l-39 -167h-68l39 167h-78l14 64h80l31 131h-75l14 64h76l38 158h68l-38 -158h106l38 158h68l-38 -158h77l-16 -64h-76l-31 -131h73l-16 -64h-73l-39 -167h-68zM226 289h106l31 131l-106 0z" />
-<glyph unicode="&#36;" horiz-adv-x="520" d="M198 -9q-48 7 -84 26q-36 19 -53 34l35 61q16 -11 46.5 -28q30.5 -17 70.5 -24l60 281q-22 16 -43.5 34q-21.5 18 -38 39q-16.5 21 -27 47.5q-10.5 26.5 -10.5 60.5q0 44 14.5 77.5q14.5 33.5 41 57q26.5 23.5 62.5 37q36 13.5 79 16.5l20 90h64l-19 -89q43 -4 73.5 -15q30.5 -11 51.5 -22l-34 -63q-17 8 -44 16.5q-27 8.5 -62 12.5l-54 -251q23 -17 45.5 -36q22.5 -19 40 -43q17.5 -24 28.5 -54.5q11 -30.5 11 -70.5q0 -41 -14 -75.5q-14 -34.5 -41 -60q-27 -25.5 -66.5 -41.5q-39.5 -16 -89.5 -19q0 -1 -3 -14.5q-3 -13.5 -6 -30.5q-4 -19 -9 -44l-64 0zM390 178q0 45 -22 75.5q-22 30.5 -53 56.5l-54 -252q60 4 94.5 36q34.5 32 34.5 84zt0 0zM236 534q0 -38 20 -64.5q20 -26.5 49 -49.5l47 221q-57 -4 -86.5 -33.5t-29.5 -73.5z" />
-<glyph unicode="&#37;" horiz-adv-x="736" d="M59 490q0 58 17.5 100q17.5 42 44.5 69q27 27 60 40q33 13 65 13q57 0 86.5 -31q29.5 -31 29.5 -88q0 -54 -15 -95q-15 -41 -40.5 -69q-25.5 -28 -60 -42.5q-34.5 -14.5 -72.5 -14.5q-51 0 -83 31q-32 31 -32 87zt0 0zM128 498q0 -32 14.5 -50q14.5 -18 43.5 -18q21 0 40.5 11q19.5 11 34.5 31.5q15 20.5 23.5 50q8.5 29.5 8.5 66.5q0 35 -15.5 50q-15.5 15 -43.5 15q-21 0 -40.5 -12.5q-19.5 -12.5 -34 -33.5q-14.5 -21 -23 -49.5q-8.5 -28.5 -8.5 -60.5zt0 0zM386 118q0 58 17.5 100q17.5 42 44.5 69q27 27 60 40q33 13 65 13q57 0 86.5 -31q29.5 -31 29.5 -88q0 -54 -15 -95q-15 -41 -40.5 -69q-25.5 -28 -60 -42.5q-34.5 -14.5 -72.5 -14.5q-51 0 -83 31q-32 31 -32 87zt0 0zM455 126q0 -32 14.5 -50q14.5 -18 43.5 -18q21 0 40.5 11q19.5 11 34.5 31.5q15 20.5 23.5 50q8.5 29.5 8.5 66.5q0 35 -15.5 50q-15.5 15 -43.5 15q-21 0 -40.5 -12.5q-19.5 -12.5 -34 -33.5q-14.5 -21 -23 -49.5q-8.5 -28.5 -8.5 -60.5zt0 0zM601 713l50 -39l-513 -686l-50 39z" />
-<glyph unicode="&#38;" horiz-adv-x="772" d="M87 148q0 47 19.5 90q19.5 43 50.5 80q31 37 70 66.5q39 29.5 78 49.5q-7 18 -12 32.5q-5 14.5 -8.5 29q-3.5 14.5 -5 30q-1.5 15.5 -1.5 35.5q0 27 10 54q10 27 31 48.5q21 21.5 52.5 35q31.5 13.5 75.5 13.5q35 0 56.5 -9.5q21.5 -9.5 33.5 -23.5q12 -14 16 -31q4 -17 4 -32q0 -57 -43.5 -105.5q-43.5 -48.5 -118.5 -89.5q10 -29 23.5 -59.5q13.5 -30.5 29.5 -60.5q16 -30 34 -59.5q18 -29.5 36 -54.5q13 12 27.5 30.5q14.5 18.5 28.5 39q14 20.5 27 42.5q13 22 24 42l53 -29q-9 -17 -25 -40.5q-16 -23.5 -34 -48q-18 -24.5 -36 -47q-18 -22.5 -32 -37.5q32 -40 54.5 -61q22.5 -21 47.5 -37l-58 -56q-23 13 -49 38q-26 25 -51 58q-21 -18 -45 -34.5q-24 -16.5 -52 -29.5q-28 -13 -60.5 -21q-32.5 -8 -69.5 -8q-42 0 -75.5 12q-33.5 12 -57 33.5q-23.5 21.5 -36 50.5q-12.5 29 -12.5 64zt0 0zM460 131q-21 29 -40.5 63q-19.5 34 -36.5 68q-17 34 -30.5 65.5q-13.5 31.5 -22.5 55.5q-36 -23 -66 -49q-30 -26 -51.5 -53.5q-21.5 -27.5 -33.5 -56.5q-12 -29 -12 -59q0 -54 33 -81q33 -27 93 -27q24 0 48 6.5q24 6.5 46 17q22 10.5 40.5 23.5q18.5 13 32.5 27zt0 0zM353 563q0 -15 1 -27q1 -12 3.5 -22.5q2.5 -10.5 6 -21.5q3.5 -11 9.5 -26q57 34 85.5 65q28.5 31 28.5 69q0 20 -11.5 34q-11.5 14 -39.5 14q-23 0 -38.5 -7q-15.5 -7 -25.5 -19.5q-10 -12.5 -14.5 -28t-4.5 -30.5z" />
-<glyph unicode="&#39;" horiz-adv-x="202" d="M143 700h74l-70 -193l-45 0z" />
-<glyph unicode="&#40;" horiz-adv-x="266" d="M145 -218q-54 79 -72.5 152.5q-18.5 73.5 -18.5 140.5q0 101 23 194q23 93 62 174q39 81 90 148.5q51 67.5 107 120.5l37 -35q-56 -64 -100.5 -133.5q-44.5 -69.5 -76.5 -144.5q-32 -75 -48 -154.5q-16 -79.5 -16 -157.5q0 -66 13.5 -134q13.5 -68 45.5 -136z" />
-<glyph unicode="&#41;" horiz-adv-x="266" d="M137 708q23 -30 39 -67q16 -37 26 -75q10 -38 14.5 -75.5q4.5 -37.5 4.5 -71.5q0 -100 -22.5 -193.5q-22.5 -93.5 -61 -175q-38.5 -81.5 -89 -149.5q-50.5 -68 -105.5 -121l-38 35q49 53 91.5 121q42.5 68 75.5 143.5q33 75.5 52 156q19 80.5 19 155.5q0 98 -12.5 165q-12.5 67 -43.5 119z" />
-<glyph unicode="&#42;" horiz-adv-x="333" d="M161 715l25 -42l18 -56l21 57l24 40l48 -26l-25 -43l-47 -48l68 12h48v-56h-45l-65 12l46 -48l24 -39l-48 -28l-25 42l-24 61l-18 -58l-25 -42l-50 28l26 42l43 42l-59 -12h-50v56h50l63 -12l-45 44l-27 46z" />
-<glyph unicode="&#43;" horiz-adv-x="480" d="M55 374h176v181h72v-181h176v-72h-176v-181h-72v181l-176 0z" />
-<glyph unicode="&#44;" horiz-adv-x="195" d="M17 35q0 26 17 44q17 18 49 18q25 0 38.5 -17q13.5 -17 13.5 -39q0 -31 -10.5 -60.5q-10.5 -29.5 -29.5 -54.5q-19 -25 -44.5 -44.5q-25.5 -19.5 -55.5 -30.5l-16 39q38 14 61 44q23 30 28 59q-4 -2 -10 -2q-14 0 -27.5 12t-13.5 32z" />
-<glyph unicode="&#45;" horiz-adv-x="342" d="M79 322h230l-17 -68l-229 0z" />
-<glyph unicode="&#46;" horiz-adv-x="211" d="M35 46q0 27 16 42.5q16 15.5 42 15.5q26 0 42 -15.5q16 -15.5 16 -42.5q0 -26 -16 -42q-16 -16 -42 -16q-26 0 -42 16t-16 42z" />
-<glyph unicode="&#47;" horiz-adv-x="336" d="M428 712l57 -31l-521 -825l-57 32z" />
-<glyph unicode="&#48;" horiz-adv-x="520" d="M57 219q0 105 22.5 195.5q22.5 90.5 62 156.5q39.5 66 94.5 103.5q55 37.5 121 37.5q85 0 131 -55q46 -55 46 -175q0 -90 -19.5 -178q-19.5 -88 -57 -158.5q-37.5 -70.5 -92.5 -114q-55 -43.5 -127 -43.5q-51 0 -85.5 19.5q-34.5 19.5 -56 52q-21.5 32.5 -30.5 74q-9 41.5 -9 85.5zt0 0zM135 223q0 -51 10 -83.5q10 -32.5 26.5 -50q16.5 -17.5 37 -24.5q20.5 -7 41.5 -7q45 0 83 35.5q38 35.5 65 94.5q27 59 42.5 133q15.5 74 15.5 151q0 86 -24 128q-24 42 -87 42q-40 0 -77.5 -31q-37.5 -31 -67 -87q-29.5 -56 -47.5 -133t-18 -168z" />
-<glyph unicode="&#49;" horiz-adv-x="520" d="M78 74h133l104 484l22 59l-49 -47l-120 -79l-28 51l247 170h34l-136 -638h130l-15 -74l-337 0z" />
-<glyph unicode="&#50;" horiz-adv-x="520" d="M515 571q0 -52 -29 -113q-29 -61 -73.5 -122.5q-44.5 -61.5 -97.5 -120q-53 -58.5 -102 -105.5l-55 -43v-4l62 11h205l-14 -74h-379l6 29q25 25 64.5 62.5q39.5 37.5 84 83q44.5 45.5 89.5 95.5q45 50 81.5 100.5q36.5 50.5 58 97.5q21.5 47 21.5 87q0 19 -4 35q-4 16 -13 27.5q-9 11.5 -26 18q-17 6.5 -44 6.5q-36 0 -70 -14.5q-34 -14.5 -72 -39.5l-21 60q48 35 92 49.5q44 14.5 96 14.5q70 0 105 -39.5t35 -101.5z" />
-<glyph unicode="&#51;" horiz-adv-x="520" d="M192 58q47 0 82.5 15q35.5 15 58 39.5q22.5 24.5 34.5 56q12 31.5 12 64.5q0 52 -26 80q-26 28 -97 28h-72l6 29l182 222l52 44l-63 -10h-185l14 74h340l-6 -29l-201 -242l-39 -29v-2l33 7q28 0 53 -9.5q25 -9.5 44.5 -29q19.5 -19.5 31 -49.5q11.5 -30 11.5 -72q0 -54 -17.5 -100.5q-17.5 -46.5 -52 -81.5q-34.5 -35 -86.5 -55q-52 -20 -121 -20q-43 0 -77.5 7q-34.5 7 -59.5 18l36 71q20 -11 48 -18.5t65 -7.5z" />
-<glyph unicode="&#52;" horiz-adv-x="520" d="M514 215h-113l-45 -215h-73l45 215h-294l7 33l415 463h51l-91 -428h112zM390 503l27 82h-4l-47 -68l-173 -191l-55 -50l67 7l138 0z" />
-<glyph unicode="&#53;" horiz-adv-x="520" d="M186 58q45 0 80.5 14.5q35.5 14.5 60.5 40q25 25.5 38 59.5q13 34 12 75q1 57 -30.5 85q-31.5 28 -103.5 28l-80 -5l73 345h296l-16 -74h-225l-43 -200q1 0 7 0q6 0 14 1q9 0 19 1q47 0 79 -14.5q32 -14.5 51.5 -37.5q19.5 -23 28 -53.5q8.5 -30.5 8.5 -61.5q0 -77 -25 -129.5q-25 -52.5 -65.5 -84.5q-40.5 -32 -91 -45.5q-50.5 -13.5 -102.5 -13.5q-40 0 -70.5 6q-30.5 6 -53.5 17l34 69q21 -9 44.5 -15.5t60.5 -6.5z" />
-<glyph unicode="&#54;" horiz-adv-x="520" d="M483 244q0 -56 -16.5 -102.5q-16.5 -46.5 -48 -81q-31.5 -34.5 -76 -53.5q-44.5 -19 -99.5 -19q-33 0 -65 11.5q-32 11.5 -57.5 37q-25.5 25.5 -41.5 66.5q-16 41 -16 101q0 100 38 189q38 89 99 156.5q61 67.5 138 110.5q77 43 155 52l4 -64q-55 -9 -109 -36.5q-54 -27.5 -99.5 -68q-45.5 -40.5 -80.5 -91q-35 -50.5 -53 -105.5q10 13 27 25.5q17 12.5 38.5 22.5q21.5 10 46 15.5q24.5 5.5 50.5 5.5q72 0 119 -43.5q47 -43.5 47 -128.5zt0 0zM405 234q-2 50 -27 82q-25 32 -82 32q-23 0 -45.5 -6.5q-22.5 -6.5 -43 -17.5q-20.5 -11 -37 -25.5q-16.5 -14.5 -26.5 -30.5q-2 -13 -4 -28.5q-2 -15.5 -2 -27.5q0 -33 6.5 -61.5q6.5 -28.5 20.5 -49.5q14 -21 35 -33q21 -12 51 -12q40 0 69 15.5q29 15.5 47.5 40.5q18.5 25 27 57t10.5 65z" />
-<glyph unicode="&#55;" horiz-adv-x="520" d="M69 0l362 586l52 49l-58 -9h-265l15 74h397l-5 -27l-416 -673z" />
-<glyph unicode="&#56;" horiz-adv-x="520" d="M61 146q0 69 45.5 127.5q45.5 58.5 128.5 93.5q-16 13 -30.5 26.5q-14.5 13.5 -26 31q-11.5 17.5 -18.5 40.5q-7 23 -7 56q0 46 17.5 81.5q17.5 35.5 47 60q29.5 24.5 68.5 37q39 12.5 81 12.5q33 0 62 -9.5q29 -9.5 50 -28q21 -18.5 33 -46q12 -27.5 12 -63.5q0 -30 -11.5 -59.5q-11.5 -29.5 -32 -55.5q-20.5 -26 -48 -48.5q-27.5 -22.5 -60.5 -40.5q18 -15 34.5 -31.5q16.5 -16.5 28.5 -36q12 -19.5 19.5 -43q7.5 -23.5 7.5 -52.5q0 -42 -13.5 -80q-13.5 -38 -42 -67q-28.5 -29 -73 -46q-44.5 -17 -107.5 -17q-41 0 -71.5 12.5q-30.5 12.5 -51.5 33.5q-21 21 -31.5 50q-10.5 29 -10.5 62zt0 0zM384 183q0 28 -7.5 49.5q-7.5 21.5 -19.5 39q-12 17.5 -31 32.5q-19 15 -41 29q-66 -31 -106 -76q-40 -45 -40 -102q0 -18 5 -36q5 -18 16.5 -31.5q11.5 -13.5 32 -21.5q20.5 -8 50.5 -8q28 0 53.5 7.5q25.5 7.5 45.5 23.5q20 16 31 39.5q11 23.5 11 54.5zt0 0zM231 525q0 -48 24 -77.5q24 -29.5 66 -55.5q25 16 48 35.5q23 19.5 39.5 40q16.5 20.5 27 41.5q10.5 21 10.5 42q0 47 -23 69q-23 22 -65 22q-26 0 -49 -7.5q-23 -7.5 -40 -22.5q-17 -15 -27.5 -37t-10.5 -50z" />
-<glyph unicode="&#57;" horiz-adv-x="520" d="M106 467q0 58 18 103.5q18 45.5 50.5 77q32.5 31.5 76 48q43.5 16.5 94.5 16.5q37 0 70 -13.5q33 -13.5 58 -40.5q25 -27 39 -66.5q14 -39.5 14 -91.5q0 -115 -40.5 -206.5q-40.5 -91.5 -103.5 -157q-63 -65.5 -139 -103.5q-76 -38 -146 -45l-4 64q63 14 116.5 41q53.5 27 96.5 64.5q43 37.5 74 84q31 46.5 49 99.5q-32 -28 -70 -42.5q-38 -14.5 -96 -14.5q-27 0 -54.5 10q-27.5 10 -50.5 32q-23 22 -37.5 57q-14.5 35 -14.5 84zt0 0zM184 476q0 -36 11 -60q11 -24 26.5 -38q15.5 -14 34 -20q18.5 -6 36.5 -6q46 0 87.5 18q41.5 18 63.5 44q1 6 2.5 17q1.5 11 3 22q1.5 11 2 21.5q0.5 10.5 0.5 15.5q0 70 -30 112q-30 42 -89 42q-29 0 -55.5 -10q-26.5 -10 -46.5 -31q-20 -21 -33 -52.5t-13 -74.5z" />
-<glyph unicode="&#58;" horiz-adv-x="267" d="M173 449q0 27 16 42.5q16 15.5 42 15.5q26 0 42 -15.5q16 -15.5 16 -42.5q0 -26 -16 -42q-16 -16 -42 -16q-26 0 -42 16q-16 16 -16 42zt0 0zM89 46q0 27 16 42.5q16 15.5 42 15.5q26 0 42 -15.5q16 -15.5 16 -42.5q0 -26 -16 -42q-16 -16 -42 -16q-26 0 -42 16t-16 42z" />
-<glyph unicode="&#59;" horiz-adv-x="273" d="M92 35q0 26 17 44q17 18 49 18q25 0 38.5 -17q13.5 -17 13.5 -39q0 -31 -10.5 -60.5q-10.5 -29.5 -29.5 -54.5q-19 -25 -44.5 -44.5q-25.5 -19.5 -55.5 -30.5l-16 39q38 14 61 44q23 30 28 59q-4 -2 -10 -2q-14 0 -27.5 12q-13.5 12 -13.5 32zt0 0zM179 449q0 27 16 42.5q16 15.5 42 15.5q26 0 42 -15.5q16 -15.5 16 -42.5q0 -26 -16 -42q-16 -16 -42 -16q-26 0 -42 16t-16 42z" />
-<glyph unicode="&#60;" horiz-adv-x="480" d="M54 305v29l379 231l38 -62l-237 -145l-91 -38l90 -32l243 -144l-38 -60z" />
-<glyph unicode="&#61;" horiz-adv-x="480" d="M55 457h424v-72h-424zM55 291h424v-72l-424 0z" />
-<glyph unicode="&#62;" horiz-adv-x="480" d="M478 344v-29l-379 -231l-38 61l237 145l91 38l-90 32l-243 144l38 61z" />
-<glyph unicode="&#63;" horiz-adv-x="414" d="M123 177q5 50 25 87.5q20 37.5 46.5 68q26.5 30.5 56.5 57q30 26.5 54.5 53q24.5 26.5 41 57q16.5 30.5 16.5 69.5q0 38 -20.5 58.5q-20.5 20.5 -71.5 20.5q-35 0 -69.5 -13.5q-34.5 -13.5 -63.5 -30.5l-19 58q20 12 38.5 21q18.5 9 39.5 15.5q21 6.5 45.5 10q24.5 3.5 56.5 3.5q74 0 109 -34q35 -34 35 -88q0 -54 -17 -93.5q-17 -39.5 -43 -70.5q-26 -31 -57.5 -57.5q-31.5 -26.5 -60 -54.5q-28.5 -28 -50.5 -60.5q-22 -32.5 -29 -76.5zM80 46q0 27 16 42.5q16 15.5 42 15.5q26 0 42 -15.5q16 -15.5 16 -42.5q0 -26 -16 -42q-16 -16 -42 -16q-26 0 -42 16t-16 42z" />
-<glyph unicode="&#64;" horiz-adv-x="1064" d="M736 491h34l-51 -287q-5 -26 -7.5 -46.5q-2.5 -20.5 -2.5 -36.5q0 -25 8.5 -37q8.5 -12 30.5 -12q34 0 67 18q33 18 59.5 51q26.5 33 43 80q16.5 47 16.5 105q0 77 -26 136q-26 59 -73 99.5q-47 40.5 -112 61.5q-65 21 -143 21q-82 0 -153 -30q-71 -30 -124 -83q-53 -53 -83.5 -127q-30.5 -74 -30.5 -161q0 -89 27.5 -159q27.5 -70 78.5 -118q51 -48 122 -73q71 -25 158 -25q29 0 66 7q37 7 67 21l20 -64q-44 -19 -82.5 -25.5q-38.5 -6.5 -82.5 -6.5q-93 0 -174 28q-81 28 -142 83q-61 55 -96 136.5q-35 81.5 -35 188.5q0 109 37.5 197q37.5 88 101.5 150q64 62 149 95.5q85 33.5 180 33.5q90 0 167 -26.5q77 -26.5 134 -76q57 -49.5 89 -121q32 -71.5 32 -162.5q0 -64 -22 -122.5q-22 -58.5 -59.5 -102.5q-37.5 -44 -87.5 -70.5q-50 -26.5 -106 -26.5q-42 0 -66.5 18q-24.5 18 -24.5 67q0 9 1 19.5q1 10.5 3 22.5l-4 0q-15 -23 -34 -45.5q-19 -22.5 -42.5 -40.5q-23.5 -18 -50 -29.5q-26.5 -11.5 -55.5 -11.5q-24 0 -45.5 10.5q-21.5 10.5 -37.5 30.5q-16 20 -25.5 47.5q-9.5 27.5 -9.5 62.5q0 64 21 126q21 62 56.5 110q35.5 48 83 77.5q47.5 29.5 100.5 29.5q36 0 58.5 -11q22.5 -11 43.5 -27zM680 393q-17 20 -34.5 28.5q-17.5 8.5 -43.5 8.5q-39 0 -73 -24q-34 -24 -58.5 -61.5q-24.5 -37.5 -39 -84.5q-14.5 -47 -14.5 -92q0 -39 16 -67.5q16 -28.5 58 -28.5q20 0 41.5 14q21.5 14 42.5 36.5q21 22.5 40.5 50.5q19.5 28 34.5 57z" />
-<glyph unicode="&#65;" horiz-adv-x="557" d="M404 194h-244l-108 -194h-85l404 711h37l101 -711h-77zM199 266h197l-29 213l-2 106h-1l-45 -108z" />
-<glyph unicode="&#66;" horiz-adv-x="556" d="M561 551q0 -39 -12 -71q-12 -32 -34 -56q-22 -24 -51.5 -38.5q-29.5 -14.5 -63.5 -19.5l0 -4q22 -5 42 -16.5q20 -11.5 35 -28.5q15 -17 24 -39.5q9 -22.5 9 -49.5q0 -70 -27.5 -115.5q-27.5 -45.5 -70 -72.5q-42.5 -27 -95 -37.5q-52.5 -10.5 -103.5 -10.5q-16 0 -38.5 0q-22.5 0 -57.5 2q-60 6 -78 11l146 689q38 6 85.5 10q47.5 4 102.5 4q37 0 71 -9.5q34 -9.5 59.5 -28.5q25.5 -19 41 -49q15.5 -30 15.5 -70zt0 0zM236 64q35 0 69 8.5q34 8.5 61 26.5q27 18 43.5 47q16.5 29 16.5 71q0 31 -15 51.5q-15 20.5 -39 32.5q-24 12 -54.5 16.5q-30.5 4.5 -61.5 4.5h-70l-53 -251q6 -2 18.5 -3q12.5 -1 27 -2q14.5 -1 30 -1.5q15.5 -0.5 27.5 -0.5zt0 0zM253 390q17 0 40 0.5q23 0.5 39 2.5q23 5 49 14q26 9 47.5 25.5q21.5 16.5 35 42q13.5 25.5 13.5 63.5q0 28 -8.5 46.5q-8.5 18.5 -25 30q-16.5 11.5 -39.5 16.5q-23 5 -51 5q-32 0 -60 -1.5q-28 -1.5 -42 -4.5l-51 -240z" />
-<glyph unicode="&#67;" horiz-adv-x="544" d="M480 29q-34 -23 -72 -32q-38 -9 -88 -9q-59 0 -105 21.5q-46 21.5 -78 60q-32 38.5 -49 90.5q-17 52 -17 114q0 113 33 195.5q33 82.5 87 136.5q54 54 121.5 80q67.5 26 136.5 26q57 0 93 -8q36 -8 59 -19l-36 -73q-20 11 -52.5 18.5q-32.5 7.5 -74.5 7.5q-56 0 -107.5 -24.5q-51.5 -24.5 -90.5 -70.5q-39 -46 -62 -112q-23 -66 -23 -148q0 -48 12.5 -88.5q12.5 -40.5 36 -70q23.5 -29.5 58 -46q34.5 -16.5 78.5 -16.5q47 0 78 10.5q31 10.5 56 24.5z" />
-<glyph unicode="&#68;" horiz-adv-x="622" d="M189 700q38 5 86 6.5q48 1.5 87 1.5q59 0 107 -15.5q48 -15.5 81.5 -47.5q33.5 -32 51.5 -81q18 -49 18 -115q0 -44 -8 -95.5q-8 -51.5 -26.5 -102q-18.5 -50.5 -49.5 -97.5q-31 -47 -77 -83.5q-46 -36.5 -108 -58q-62 -21.5 -143 -21.5q-15 0 -39.5 0.5q-24.5 0.5 -48.5 1.5q-70 4 -80 6zM356 634q-12 0 -27 -0.5q-15 -0.5 -29 -1q-14 -0.5 -27 -1.5q-13 -1 -20 -2l-118 -560q4 -1 16 -1.5q12 -0.5 25.5 -1q13.5 -0.5 26 -1q12.5 -0.5 17.5 -0.5q87 0 147 36q60 36 97.5 91q37.5 55 54.5 121q17 66 17 125q0 45 -10 81q-10 36 -31.5 61.5q-21.5 25.5 -55.5 39.5t-83 14z" />
-<glyph unicode="&#69;" horiz-adv-x="510" d="M189 700h361l-15 -74h-283l-49 -229h259l-15 -74h-259l-53 -249h288l-16 -74h-288l-79 0z" />
-<glyph unicode="&#70;" horiz-adv-x="492" d="M189 700h361l-15 -74h-283l-51 -239h264l-15 -74h-264l-66 -313l-80 0z" />
-<glyph unicode="&#71;" horiz-adv-x="583" d="M375 349h116h68l-65 -308q-71 -53 -176 -53q-50 0 -94.5 18q-44.5 18 -78.5 53.5q-34 35.5 -54 88.5q-20 53 -20 124q0 123 36 207q36 84 92.5 135.5q56.5 51.5 124.5 74.5q68 23 132 23q57 0 94.5 -7.5q37.5 -7.5 60.5 -18.5l-35 -73q-20 11 -53.5 18q-33.5 7 -75.5 7q-58 0 -110.5 -22.5q-52.5 -22.5 -93 -67.5q-40.5 -45 -64.5 -111.5q-24 -66.5 -24 -154.5q0 -45 11 -85q11 -40 33.5 -70q22.5 -30 56 -47.5q33.5 -17.5 79.5 -17.5q32 0 55 6.5q23 6.5 46 18.5l41 195l-112 20z" />
-<glyph unicode="&#72;" horiz-adv-x="639" d="M505 321h-318l-67 -321h-80l148 700h80l-64 -305h317l64 305h80l-148 -700l-80 0z" />
-<glyph unicode="&#73;" horiz-adv-x="277" d="M210 700h80l-148 -700l-80 0z" />
-<glyph unicode="&#74;" horiz-adv-x="278" d="M222 700h80l-116 -546q-9 -40 -21.5 -70.5q-12.5 -30.5 -32 -51.5q-19.5 -21 -48 -31.5q-28.5 -10.5 -68.5 -10.5q-8 0 -18.5 1q-10.5 1 -21.5 3q-11 2 -21 5q-10 3 -16 7l30 71q19 -13 54 -13q21 0 35 7.5q14 7.5 24 22q10 14.5 16.5 34.5q6.5 20 11.5 46z" />
-<glyph unicode="&#75;" horiz-adv-x="576" d="M239 324h-51l-68 -324h-80l148 700h80l-70 -326l40 14l287 312h99l-286 -304l-46 -31l39 -40l175 -325l-91 0z" />
-<glyph unicode="&#76;" horiz-adv-x="492" d="M434 0h-316h-78l148 700h80l-133 -626l314 0z" />
-<glyph unicode="&#77;" horiz-adv-x="754" d="M651 470l31 105h-4l-56 -96l-240 -316h-24l-115 316l-15 96h-4l-8 -104l-100 -471h-76l149 700h55l130 -358l15 -78h1l46 80l273 356h71l-149 -700l-80 0z" />
-<glyph unicode="&#78;" horiz-adv-x="642" d="M261 458l-34 103h-3l-12 -103l-97 -458h-75l151 711h40l218 -468l33 -98h4l9 98l98 457h75l-151 -711l-37 0z" />
-<glyph unicode="&#79;" horiz-adv-x="651" d="M71 256q0 92 25 175q25 83 71.5 145.5q46.5 62.5 112 99q65.5 36.5 145.5 36.5q48 0 89 -14.5q41 -14.5 70.5 -46q29.5 -31.5 46 -81.5q16.5 -50 16.5 -122q0 -94 -25 -177.5q-25 -83.5 -70 -146.5q-45 -63 -107.5 -99.5q-62.5 -36.5 -137.5 -36.5q-118 0 -177 68.5q-59 68.5 -59 199.5zt0 0zM155 257q0 -94 39 -145.5q39 -51.5 115 -51.5q56 0 102.5 31q46.5 31 80.5 84q34 53 52.5 123q18.5 70 18.5 148q0 58 -13 96q-13 38 -34.5 59.5q-21.5 21.5 -49 30q-27.5 8.5 -55.5 8.5q-57 0 -104 -31.5q-47 -31.5 -80.5 -84.5q-33.5 -53 -52.5 -122.5t-19 -144.5z" />
-<glyph unicode="&#80;" horiz-adv-x="532" d="M187 693q38 9 80 12q42 3 83 3q46 0 85.5 -10q39.5 -10 68.5 -32q29 -22 45.5 -56.5q16.5 -34.5 16.5 -82.5q0 -76 -27.5 -127q-27.5 -51 -72 -81.5q-44.5 -30.5 -100.5 -43.5q-56 -13 -113 -13q-5 0 -15.5 0q-10.5 0 -22.5 0.5q-12 0.5 -23 1.5q-11 1 -16 2l-56 -266h-80zM333 636q-23 0 -44.5 -1.5q-21.5 -1.5 -35.5 -4.5l-61 -291q4 -2 13.5 -2.5q9.5 -0.5 20 -1.5q10.5 -1 20.5 -1q10 0 15 0q43 0 83 9q40 9 70.5 31q30.5 22 49 57q18.5 35 18.5 88q0 36 -12 59q-12 23 -32.5 35.5q-20.5 12.5 -47.5 17.5t-57 5z" />
-<glyph unicode="&#81;" horiz-adv-x="651" d="M633 -171q-24 -7 -46.5 -9.5q-22.5 -2.5 -44.5 -2.5q-48 0 -91 10.5q-43 10.5 -82.5 22.5q-39.5 12 -76 22.5q-36.5 10.5 -71.5 10.5q-11 0 -22.5 -1q-11.5 -1 -22.5 -4l15 73q27 6 53 6q40 0 77 -10.5q37 -10.5 75.5 -22.5q38.5 -12 79.5 -22.5q41 -10.5 88 -10.5q41 0 85 10zM71 256q0 92 25 175q25 83 71.5 145.5q46.5 62.5 112 99q65.5 36.5 145.5 36.5q48 0 89 -14.5q41 -14.5 70.5 -46q29.5 -31.5 46 -81.5q16.5 -50 16.5 -122q0 -94 -25 -177.5q-25 -83.5 -70 -146.5q-45 -63 -107.5 -99.5q-62.5 -36.5 -137.5 -36.5q-118 0 -177 68.5q-59 68.5 -59 199.5zt0 0zM155 257q0 -94 39 -145.5q39 -51.5 115 -51.5q56 0 102.5 31q46.5 31 80.5 84q34 53 52.5 123q18.5 70 18.5 148q0 58 -13 96q-13 38 -34.5 59.5q-21.5 21.5 -49 30q-27.5 8.5 -55.5 8.5q-57 0 -104 -31.5q-47 -31.5 -80.5 -84.5q-33.5 -53 -52.5 -122.5t-19 -144.5z" />
-<glyph unicode="&#82;" horiz-adv-x="568" d="M187 693q42 8 81 11.5q39 3.5 78 3.5q38 0 74 -9.5q36 -9.5 63.5 -30q27.5 -20.5 44 -53.5q16.5 -33 16.5 -80q0 -88 -51.5 -146.5q-51.5 -58.5 -149.5 -75.5l36 -36l108 -277h-87l-120 302l-94 15l-66 -317h-80zM341 636q-24 0 -48 -1.5q-24 -1.5 -40 -4.5l-55 -258h69q36 0 70.5 7q34.5 7 62 25q27.5 18 44 49q16.5 31 16.5 78q0 18 -7 36.5q-7 18.5 -21 34q-14 15.5 -37 25t-54 9.5z" />
-<glyph unicode="&#83;" horiz-adv-x="505" d="M388 180q0 36 -18.5 61q-18.5 25 -46.5 45.5q-28 20.5 -60.5 39.5q-32.5 19 -60.5 44q-28 25 -46.5 59q-18.5 34 -18.5 84q0 53 19.5 91q19.5 38 53 62q33.5 24 79 35q45.5 11 96.5 11q58 0 104 -9q46 -9 72 -23l-40 -71q-20 11 -59.5 21q-39.5 10 -91.5 10q-66 0 -107.5 -30q-41.5 -30 -41.5 -87q0 -37 18.5 -62.5q18.5 -25.5 46.5 -46q28 -20.5 60.5 -39.5q32.5 -19 60.5 -43.5q28 -24.5 46.5 -58.5q18.5 -34 18.5 -83q0 -97 -70 -149.5q-70 -52.5 -201 -52.5q-67 0 -113.5 11.5q-46.5 11.5 -70.5 25.5l41 73q23 -13 62.5 -25.5q39.5 -12.5 93.5 -12.5q31 0 62 5.5q31 5.5 56 19.5q25 14 40.5 37t15.5 58z" />
-<glyph unicode="&#84;" horiz-adv-x="528" d="M602 626h-207l-132 -626h-80l132 626h-205l15 74l492 0z" />
-<glyph unicode="&#85;" horiz-adv-x="618" d="M573 700h76l-98 -467q-14 -64 -35 -110q-21 -46 -52.5 -75q-31.5 -29 -75.5 -43q-44 -14 -102 -14q-55 0 -93 12.5q-38 12.5 -61.5 35q-23.5 22.5 -34 55q-10.5 32.5 -10.5 71.5q0 41 11 93l93 442h80l-93 -443q-11 -44 -11 -80q0 -63 33 -87.5q33 -24.5 98 -24.5q39 0 68.5 11q29.5 11 51 34q21.5 23 36 59q14.5 36 25.5 87z" />
-<glyph unicode="&#86;" horiz-adv-x="541" d="M253 221v-107h2l45 109l265 477h86l-402 -711h-37l-108 711l82 0z" />
-<glyph unicode="&#87;" horiz-adv-x="788" d="M214 233l-9 -116h1l39 118l235 465h43l37 -467l-9 -116h1l40 118l213 465h82l-336 -711h-44l-38 469l6 106h-4l-40 -107l-234 -468h-44l-39 711l82 0z" />
-<glyph unicode="&#88;" horiz-adv-x="588" d="M289 358l-130 342h87l86 -237l12 -57l34 57l191 237h97l-279 -339l142 -361h-87l-96 251l-14 60l-38 -60l-204 -251l-97 0z" />
-<glyph unicode="&#89;" horiz-adv-x="531" d="M241 278l-133 422h87l89 -306l3 -61h1l30 63l217 304h90l-304 -421l-59 -279l-80 0z" />
-<glyph unicode="&#90;" horiz-adv-x="520" d="M14 75l435 511l49 40h-366l15 74h447l-15 -75l-438 -514l-47 -37h367l-15 -74l-447 0z" />
-<glyph unicode="&#91;" horiz-adv-x="291" d="M213 700h76h97l-15 -70h-97l-168 -790h98l-15 -70h-98l-75 0z" />
-<glyph unicode="&#92;" horiz-adv-x="380" d="M449 -111l-66 -29l-342 824l69 28z" />
-<glyph unicode="&#93;" horiz-adv-x="291" d="M109 -230h-75h-97l15 70h96l167 790h-97l15 70h99l74 0z" />
-<glyph unicode="&#94;" horiz-adv-x="500" d="M288 711h29l169 -276h-83l-79 135l-23 69l-31 -70l-93 -134l-75 0z" />
-<glyph unicode="&#95;" horiz-adv-x="408" d="M-44 -137h408v-68l-408 0z" />
-<glyph unicode="&#96;" horiz-adv-x="238" d="M297 571h-43l-81 128l4 21l91 0z" />
-<glyph unicode="&#97;" horiz-adv-x="487" d="M414 197q-8 -37 -11 -75q-3 -38 -3 -71q0 -15 0 -28.5q0 -13.5 2 -24.5l-56 0l-14 87h-4q-12 -17 -29.5 -34.5q-17.5 -17.5 -38.5 -31.5q-21 -14 -45 -22.5q-24 -8.5 -51 -8.5q-119 0 -119 155q0 64 16.5 130q16.5 66 51 119q34.5 53 89 87q54.5 34 131.5 34q28 0 68.5 -6.5q40.5 -6.5 75.5 -17.5zM187 52q24 0 46 11.5q22 11.5 41.5 28.5q19.5 17 34.5 36.5q15 19.5 24 36.5l56 270q-30 14 -76 14q-46 0 -81 -27q-35 -27 -59 -70.5q-24 -43.5 -36 -98.5q-12 -55 -12 -110q0 -38 15 -64.5t47 -26.5z" />
-<glyph unicode="&#98;" horiz-adv-x="521" d="M185 700h75l-61 -286h4q14 18 32 35.5q18 17.5 40 31.5q22 14 47 22.5q25 8.5 54 8.5q59 0 86 -41.5q27 -41.5 27 -104.5q0 -90 -25 -159.5q-25 -69.5 -66 -117.5q-41 -48 -93.5 -73q-52.5 -25 -107.5 -25q-54 0 -94.5 12q-40.5 12 -59.5 28zM352 448q-25 0 -51 -12.5q-26 -12.5 -49.5 -32.5q-23.5 -20 -43 -44.5q-19.5 -24.5 -31.5 -47.5l-50 -235q30 -21 85 -21q32 0 67 19.5q35 19.5 64 57q29 37.5 47.5 92q18.5 54.5 18.5 124.5q0 51 -15.5 75.5t-41.5 24.5z" />
-<glyph unicode="&#99;" horiz-adv-x="420" d="M365 43q-15 -13 -34.5 -23q-19.5 -10 -40 -17q-20.5 -7 -40.5 -11q-20 -4 -38 -4q-49 0 -80.5 15.5q-31.5 15.5 -49.5 39.5q-18 24 -25 52q-7 28 -7 53q0 85 23 152.5q23 67.5 61.5 114.5q38.5 47 88.5 72q50 25 103 25q38 0 62.5 -7q24.5 -7 44.5 -16l-28 -62q-17 10 -42 15.5q-25 5.5 -54 5.5q-34 0 -66.5 -23q-32.5 -23 -57.5 -60.5q-25 -37.5 -40 -86q-15 -48.5 -15 -99.5q0 -65 27 -96q27 -31 73 -31q30 0 63 13.5q33 13.5 53 27.5z" />
-<glyph unicode="&#100;" horiz-adv-x="509" d="M419 172q-8 -39 -12 -73q-4 -34 -4 -63q0 -11 0.5 -20q0.5 -9 1.5 -18l-50 0l-14 87h-4q-12 -17 -30 -34.5q-18 -17.5 -40 -31.5q-22 -14 -46.5 -22.5q-24.5 -8.5 -50.5 -8.5q-55 0 -87.5 40.5q-32.5 40.5 -32.5 128.5q0 59 17 121.5q17 62.5 50 113.5q33 51 82.5 84q49.5 33 114.5 33q18 0 31 -1q13 -1 24.5 -3q11.5 -2 21.5 -5.5q10 -3.5 21 -7.5l44 208h75zM198 52q21 0 43 11.5q22 11.5 41.5 28.5q19.5 17 35 36.5q15.5 19.5 24.5 36.5l56 260q-17 11 -38.5 15.5q-21.5 4.5 -56.5 4.5q-40 0 -72 -24.5q-32 -24.5 -54.5 -65.5q-22.5 -41 -34.5 -94q-12 -53 -12 -109q0 -41 16 -70.5t52 -29.5z" />
-<glyph unicode="&#101;" horiz-adv-x="463" d="M389 49q-35 -30 -82.5 -45.5q-47.5 -15.5 -95.5 -15.5q-80 0 -120.5 46q-40.5 46 -40.5 128q0 82 23 147q23 65 60.5 110q37.5 45 85 69q47.5 24 97.5 24q36 0 62.5 -10q26.5 -10 43.5 -26.5q17 -16.5 25 -38q8 -21.5 8 -45.5q0 -71 -69 -111.5q-69 -40.5 -201 -40.5q-12 0 -25 0.5q-13 0.5 -27 1.5q-4 -19 -6 -36q-2 -17 -2 -30q0 -55 25 -89.5q25 -34.5 78 -34.5q44 0 80.5 14.5q36.5 14.5 56.5 30.5zM304 448q-55 0 -95.5 -37.5q-40.5 -37.5 -61.5 -112.5q38 0 79 2q41 2 74.5 10.5q33.5 8.5 55.5 27q22 18.5 22 51.5q0 10 -3.5 20.5q-3.5 10.5 -11.5 19q-8 8.5 -22.5 14t-36.5 5.5z" />
-<glyph unicode="&#102;" horiz-adv-x="278" d="M219 436l-80 -470q-6 -37 -16.5 -68.5q-10.5 -31.5 -27.5 -55q-17 -23.5 -43 -37q-26 -13.5 -63 -13.5q-30 0 -55.5 4.5q-25.5 4.5 -47.5 15.5v56q42 -7 58.5 -9.5q16.5 -2.5 40.5 -2.5q38 0 57 36.5q19 36.5 32 115.5l70 428h-77l13 64h73l13 67q7 37 17 64q10 27 26.5 45q16.5 18 41 27q24.5 9 59.5 9q33 0 64 -6.5q31 -6.5 56 -17.5l-22 -59q-49 19 -93 19q-37 0 -54 -25.5q-17 -25.5 -26 -81.5l-7 -41h101l-12 -64z" />
-<glyph unicode="&#103;" horiz-adv-x="505" d="M385 -23q-21 -98 -72.5 -143.5q-51.5 -45.5 -136.5 -45.5q-65 0 -107 16.5q-42 16.5 -64 28.5l33 56q8 -4 19.5 -10.5q11.5 -6.5 28 -12.5q16.5 -6 40 -10q23.5 -4 55.5 -4q50 0 84 36q34 36 51 113l18 84h-4q-14 -19 -30.5 -36q-16.5 -17 -36.5 -30.5q-20 -13.5 -43.5 -21.5q-23.5 -8 -51.5 -8q-54 0 -87 39q-33 39 -33 111q0 67 18.5 133q18.5 66 55 118.5q36.5 52.5 90 85.5q53.5 33 123.5 33q54 0 91 -9q37 -9 65 -22zM196 53q25 0 49.5 13q24.5 13 45 33.5q20.5 20.5 37 44.5q16.5 24 27.5 45l51 241q-16 9 -39 12q-23 3 -47 3q-41 0 -76 -24q-35 -24 -60.5 -64.5q-25.5 -40.5 -40.5 -93.5q-15 -53 -15 -111q0 -46 18.5 -72.5t49.5 -26.5z" />
-<glyph unicode="&#104;" horiz-adv-x="529" d="M341 0l60 285q6 30 10 53.5q4 23.5 4 41.5q0 37 -15 52.5q-15 15.5 -47 15.5q-26 0 -53 -13.5q-27 -13.5 -52 -34.5q-25 -21 -44.5 -47q-19.5 -26 -29.5 -50l-63 -303h-75l148 700h75l-62 -286h4q13 16 31.5 33q18.5 17 42.5 31.5q24 14.5 52 24q28 9.5 61 9.5q49 0 77 -23.5q28 -23.5 28 -85.5q0 -42 -13 -101l-64 -302z" />
-<glyph unicode="&#105;" horiz-adv-x="259" d="M160 500h75l-106 -500h-75zM176 653q0 23 15.5 39q15.5 16 38.5 16q23 0 39 -16q16 -16 16 -39q0 -23 -16 -38.5q-16 -15.5 -39 -15.5q-23 0 -38.5 15.5t-15.5 38.5z" />
-<glyph unicode="&#106;" horiz-adv-x="249" d="M148 500h75l-112 -527q-20 -93 -62 -137q-42 -44 -114 -44q-8 0 -15.5 0.5q-7.5 0.5 -15.5 1.5l15 65q30 0 49.5 8.5q19.5 8.5 33 26.5q13.5 18 23 45q9.5 27 17.5 64zM164 653q0 23 15.5 39q15.5 16 38.5 16q23 0 39 -16q16 -16 16 -39q0 -23 -16 -38.5q-16 -15.5 -39 -15.5q-23 0 -38.5 15.5t-15.5 38.5z" />
-<glyph unicode="&#107;" horiz-adv-x="449" d="M212 225h-54l-47 -225h-75l148 700h75l-91 -426l43 11l180 215h92l-178 -203l-47 -33l38 -39l112 -225l-83 0z" />
-<glyph unicode="&#108;" horiz-adv-x="270" d="M133 119q-3 -17 -3 -28q0 -19 6.5 -27.5q6.5 -8.5 17.5 -8.5q20 0 33.5 2.5q13.5 2.5 32.5 9.5l0 -57q-9 -5 -21 -8.5q-12 -3.5 -24.5 -5.5q-12.5 -2 -25 -3.5q-12.5 -1.5 -22.5 -1.5q-35 0 -56 16q-21 16 -21 59q0 20 6 49l124 585l75 0z" />
-<glyph unicode="&#109;" horiz-adv-x="763" d="M305 0l60 283q8 35 12 62q4 27 4 47q0 27 -10 41.5q-10 14.5 -34 14.5q-25 0 -49 -13q-24 -13 -45 -32.5q-21 -19.5 -38.5 -41.5q-17.5 -22 -27.5 -40l-66 -321h-75l106 500h53l-6 -86h4q16 16 34.5 33.5q18.5 17.5 41 31.5q22.5 14 49 23.5q26.5 9.5 58.5 9.5q45 0 60.5 -28q15.5 -28 15.5 -78q15 19 35 38q20 19 43.5 34q23.5 15 49.5 24.5q26 9.5 52 9.5q46 0 70.5 -21.5q24.5 -21.5 24.5 -79.5q0 -42 -15 -111l-63 -300h-75l63 301q6 29 9.5 52q3.5 23 3.5 40q0 27 -11 41q-11 14 -37 14q-21 0 -44.5 -13.5q-23.5 -13.5 -45.5 -33.5q-22 -20 -39.5 -43q-17.5 -23 -27.5 -43l-65 -315z" />
-<glyph unicode="&#110;" horiz-adv-x="522" d="M331 0l67 316q4 18 7 35.5q3 17.5 3 31.5q0 29 -13.5 47q-13.5 18 -50.5 18q-26 0 -51 -12q-25 -12 -47 -30.5q-22 -18.5 -39.5 -41q-17.5 -22.5 -29.5 -44.5l-66 -320h-75l106 500h52l-4 -86h4q13 16 31 33.5q18 17.5 40.5 31.5q22.5 14 50.5 23.5q28 9.5 62 9.5q50 0 79 -24q29 -24 29 -84q0 -30 -9 -72l-71 -332z" />
-<glyph unicode="&#111;" horiz-adv-x="498" d="M50 156q0 79 20.5 144.5q20.5 65.5 56.5 112.5q36 47 83.5 73q47.5 26 101.5 26q42 0 71.5 -13.5q29.5 -13.5 48 -37q18.5 -23.5 26.5 -54q8 -30.5 8 -63.5q0 -75 -19.5 -140q-19.5 -65 -54 -113q-34.5 -48 -80.5 -75.5q-46 -27.5 -100 -27.5q-45 0 -75.5 14.5q-30.5 14.5 -50 38.5q-19.5 24 -28 54q-8.5 30 -8.5 61zt0 0zM130 174q0 -59 22 -90.5q22 -31.5 70 -31.5q33 0 62.5 23.5q29.5 23.5 52 63.5q22.5 40 36 91.5q13.5 51.5 13.5 107.5q0 51 -18.5 80.5q-18.5 29.5 -70.5 29.5q-33 0 -63 -22.5q-30 -22.5 -53.5 -60.5q-23.5 -38 -37 -87.5t-13.5 -103.5z" />
-<glyph unicode="&#112;" horiz-adv-x="508" d="M144 500h52l-5 -86h4q14 18 31.5 35.5q17.5 17.5 38.5 31.5q21 14 46 22.5q25 8.5 54 8.5q24 0 45 -7.5q21 -7.5 37 -25q16 -17.5 25.5 -46.5q9.5 -29 9.5 -71q0 -88 -24 -157.5q-24 -69.5 -63 -117.5q-39 -48 -87.5 -73.5q-48.5 -25.5 -96.5 -25.5q-35 0 -61.5 6.5q-26.5 6.5 -35.5 13.5l-44 -208h-75zM337 448q-27 0 -51.5 -14q-24.5 -14 -45 -34.5q-20.5 -20.5 -36.5 -44q-16 -23.5 -26 -43.5l-49 -237q17 -13 35 -18q18 -5 39 -5q39 0 74.5 21.5q35.5 21.5 63.5 61.5q28 40 44.5 96q16.5 56 16.5 125q0 40 -16.5 66t-48.5 26z" />
-<glyph unicode="&#113;" horiz-adv-x="503" d="M340 -200h-75l61 284h-4q-12 -16 -27.5 -33q-15.5 -17 -35 -31q-19.5 -14 -43.5 -23q-24 -9 -51 -9q-32 0 -55 11.5q-23 11.5 -37 32q-14 20.5 -20.5 48.5q-6.5 28 -6.5 61q0 67 22 133q22 66 61 118q39 52 93 84.5q54 32.5 119 32.5q21 0 42.5 -3q21.5 -3 40.5 -7.5q19 -4.5 35 -10q16 -5.5 25 -11.5zM186 52q25 0 50.5 15q25.5 15 47.5 37.5q22 22.5 39 48q17 25.5 27 46.5l50 231q-16 9 -38.5 12q-22.5 3 -39.5 3q-39 0 -74.5 -25q-35.5 -25 -62.5 -66.5q-27 -41.5 -43 -95q-16 -53.5 -16 -110.5q0 -48 15.5 -72t44.5 -24z" />
-<glyph unicode="&#114;" horiz-adv-x="327" d="M362 434q-9 2 -18.5 3q-9.5 1 -17.5 1q-51 0 -88 -32q-37 -32 -58 -78l-69 -328h-75l106 500h52v-86h4q12 19 26 35.5q14 16.5 31 29.5q17 13 37 20.5q20 7.5 44 7.5q22 0 46 -7z" />
-<glyph unicode="&#115;" horiz-adv-x="398" d="M259 141q0 26 -13 44q-13 18 -33 32.5q-20 14.5 -43 28.5q-23 14 -43 31.5q-20 17.5 -33 41q-13 23.5 -13 58.5q0 28 13.5 52.5q13.5 24.5 37 43q23.5 18.5 56 29q32.5 10.5 70.5 10.5q53 0 82 -7q29 -7 52 -20l-25 -60q-40 23 -109 23q-42 0 -69.5 -17.5q-27.5 -17.5 -27.5 -53.5q0 -21 13 -36.5q13 -15.5 33 -29.5q20 -14 43 -28.5q23 -14.5 43 -33q20 -18.5 33 -43.5q13 -25 13 -59q0 -78 -52.5 -118.5q-52.5 -40.5 -140.5 -40.5q-45 0 -82.5 9q-37.5 9 -60.5 23l28 63q20 -13 52.5 -22q32.5 -9 67.5 -9q49 0 78.5 21.5t29.5 67.5z" />
-<glyph unicode="&#116;" horiz-adv-x="313" d="M71 500h74l21 99l80 23l-26 -122h131l-15 -64h-130l-63 -302q-2 -12 -3.5 -22q-1.5 -10 -1.5 -18q0 -24 11 -33q11 -9 33 -9q24 0 44 6q20 6 40 18l0 -61q-21 -12 -54 -19.5q-33 -7.5 -63 -7.5q-91 0 -91 83q0 17 5 42l68 323l-75 0z" />
-<glyph unicode="&#117;" horiz-adv-x="511" d="M213 500l-70 -333q-6 -27 -6 -50q0 -28 11 -46.5q11 -18.5 40 -18.5q24 0 48.5 12q24.5 12 47 31q22.5 19 41 42q18.5 23 30.5 45l67 318h75l-63 -297q-4 -17 -8 -41.5q-4 -24.5 -7.5 -51.5q-3.5 -27 -5.5 -52.5q-2 -25.5 -2 -44.5v-13h-59v95h-4q-15 -20 -34.5 -39q-19.5 -19 -43 -34q-23.5 -15 -50.5 -24.5q-27 -9.5 -57 -9.5q-22 0 -40.5 5q-18.5 5 -32.5 17.5q-14 12.5 -22 33q-8 20.5 -8 52.5q0 35 10 79l68 325z" />
-<glyph unicode="&#118;" horiz-adv-x="447" d="M192 207l9 -95h2l43 97l169 291h86l-312 -511h-32l-97 511l80 0z" />
-<glyph unicode="&#119;" horiz-adv-x="685" d="M427 500l47 -292l4 -96h1l39 98l147 290h76l-269 -511h-38l-53 330l-1 82h-2l-37 -83l-190 -329h-36l-58 511h76l31 -291l-2 -97h4l40 99l165 289z" />
-<glyph unicode="&#120;" horiz-adv-x="484" d="M203 256l-107 244h85l59 -138l18 -57l41 57l121 138h91l-212 -240l119 -260h-85l-68 152l-20 60l-42 -60l-134 -152l-91 0z" />
-<glyph unicode="&#121;" horiz-adv-x="439" d="M194 176l5 -96h5l38 97l166 323h80l-236 -446q-26 -49 -51.5 -95.5q-25.5 -46.5 -52.5 -83q-27 -36.5 -56 -58.5q-29 -22 -60 -22q-17 0 -29.5 2q-12.5 2 -22.5 7l24 69q11 -4 24 -4q29 0 58 30q29 30 65 101l-86 500l80 0z" />
-<glyph unicode="&#122;" horiz-adv-x="429" d="M11 69l281 319l55 43h-258l15 69h337l-15 -69l-284 -322l-54 -40h261l-14 -69l-337 0z" />
-<glyph unicode="&#123;" horiz-adv-x="331" d="M231 -230h-81q-35 0 -54 19.5q-19 19.5 -18 55.5q0 14 4 29l50 238q4 18 4 32q2 32 -14.5 44.5q-16.5 12.5 -46.5 12.5l15 68q74 0 93 85l52 242q10 47 38.5 76q28.5 29 73.5 29h81l-15 -70h-48q-26 0 -40.5 -13.5q-14.5 -13.5 -21.5 -45.5l-49 -237q-9 -44 -34 -67q-25 -23 -52 -28l-1 -6q20 -3 34.5 -23q14.5 -20 13.5 -52q0 -5 -1.5 -12q-1.5 -7 -6 -31.5q-4.5 -24.5 -15.5 -75q-11 -50.5 -31 -141.5q-1 -6 -2 -11q-1 -5 -1 -10q-1 -38 42 -38l47 0z" />
-<glyph unicode="&#124;" horiz-adv-x="238" d="M115 700h69v-830l-69 0z" />
-<glyph unicode="&#125;" horiz-adv-x="331" d="M232 359q-4 -17 -4 -30q-1 -33 15.5 -46q16.5 -13 46.5 -13l-16 -68q-36 0 -60 -21q-24 -21 -34 -64q0 -1 -2.5 -12q-2.5 -11 -6 -28q-3.5 -17 -8 -39q-4.5 -22 -8.5 -44q-11 -53 -25 -119q-10 -47 -39 -76q-29 -29 -74 -29h-80l16 70h47q25 0 39.5 13.5q14.5 13.5 20.5 45.5l50 237q10 44 34.5 67q24.5 23 52.5 28l2 6q-22 3 -36.5 23q-14.5 20 -13.5 52q0 5 1 11.5q1 6.5 2 12.5l51 236q2 6 2.5 11q0.5 5 0.5 10q1 38 -41 38h-46l14 70h81q35 0 54.5 -19q19.5 -19 17.5 -56q0 -14 -4 -29z" />
-<glyph unicode="&#126;" horiz-adv-x="480" d="M46 361q43 33 78 46q35 13 64 13q28 0 52 -8.5q24 -8.5 46 -19q22 -10.5 43 -19q21 -8.5 44 -8.5q19 0 39 8q20 8 43 28l34 -61q-38 -26 -68.5 -36.5q-30.5 -10.5 -55.5 -10.5q-27 0 -49.5 8.5q-22.5 8.5 -43 19q-20.5 10.5 -41 19q-20.5 8.5 -44.5 8.5q-23 0 -49 -10.5q-26 -10.5 -58 -36.5z" />
-<glyph unicode="&#160;" horiz-adv-x="267" />
-<glyph unicode="&#161;" horiz-adv-x="290" d="M96 -200h-78l74 347l53 176h47l-22 -176zM131 453q0 27 16 42.5q16 15.5 42 15.5q26 0 42 -15.5q16 -15.5 16 -42.5q0 -26 -16 -42q-16 -16 -42 -16q-26 0 -42 16t-16 42z" />
-<glyph unicode="&#162;" horiz-adv-x="520" d="M419 43q-25 -21 -59 -34q-34 -13 -66 -18l-19 -91h-66l19 90q-38 6 -63 23q-25 17 -39 39.5q-14 22.5 -19.5 47.5q-5.5 25 -5.5 48q0 77 19 139.5q19 62.5 51.5 109q32.5 46.5 75.5 75q43 28.5 91 36.5l20 92h67l-20 -89q26 -3 45.5 -9q19.5 -6 36.5 -13l-28 -62q-13 8 -32 13q-19 5 -42 7l-83 -393q27 4 54 16q27 12 44 23zM181 179q0 -55 18.5 -85.5q18.5 -30.5 51.5 -38.5l82 389q-30 -8 -57.5 -32.5q-27.5 -24.5 -48.5 -60.5q-21 -36 -33.5 -80.5t-12.5 -91.5z" />
-<glyph unicode="&#163;" horiz-adv-x="520" d="M118 397h65q-4 18 -6 38.5q-2 20.5 -2 46.5q0 57 20 100.5q20 43.5 53.5 72q33.5 28.5 78.5 43q45 14.5 96 14.5q40 0 75.5 -8.5q35.5 -8.5 58.5 -21.5l-27 -64q-20 11 -52 18q-32 7 -72 7q-31 0 -58.5 -10.5q-27.5 -10.5 -48 -31q-20.5 -20.5 -32.5 -50q-12 -29.5 -12 -67.5q0 -31 2.5 -51q2.5 -20 6.5 -36l155 0l-15 -64h-125q2 -12 3 -27q1 -15 1 -35q0 -33 -6.5 -61q-6.5 -28 -16 -50.5q-9.5 -22.5 -21.5 -39q-12 -16.5 -23 -26.5l-45 -34l-1 -5l62 14h244l-15 -69h-424l15 71q30 0 57.5 15q27.5 15 48.5 40.5q21 25.5 33.5 60.5q12.5 35 12.5 77q0 20 -2 36.5q-2 16.5 -5 32.5l-94 0z" />
-<glyph unicode="&#164;" horiz-adv-x="520" d="M111 596l78 -77l21 -35q42 33 103 33q59 0 103 -33l22 35l78 77l48 -49l-76 -78l-35 -22q32 -43 32 -102q0 -60 -32 -103l35 -21l76 -78l-48 -48l-78 77l-21 33q-43 -31 -104 -31q-62 0 -103 31l-21 -33l-78 -77l-49 48l77 78l34 22q-31 42 -31 102q0 29 8.5 55q8.5 26 22.5 48l-34 21l-77 78zM211 345q0 -45 28.5 -75q28.5 -30 73.5 -30q45 0 74 30q29 30 29 75q0 45 -29 75.5q-29 30.5 -74 30.5q-45 0 -73.5 -30.5t-28.5 -75.5z" />
-<glyph unicode="&#165;" horiz-adv-x="520" d="M129 328h89l-115 372h87l92 -306l3 -61h1l30 63l213 304h90l-270 -372h90l-13 -60h-115l-13 -63h115l-13 -60h-115l-30 -145h-80l30 145h-115l12 60h116l13 63l-115 0z" />
-<glyph unicode="&#166;" horiz-adv-x="238" d="M115 206h69v-336h-69zM184 364h-69v336l69 0z" />
-<glyph unicode="&#167;" horiz-adv-x="473" d="M88 337q0 44 21.5 75q21.5 31 55.5 54l46 18q-23 19 -32.5 40q-9.5 21 -9.5 46q0 30 14 56q14 26 38 45q24 19 56.5 30q32.5 11 70.5 11q52 0 83.5 -9q31.5 -9 54.5 -23l-29 -61q-20 11 -49.5 18q-29.5 7 -64.5 7q-43 0 -69.5 -21.5q-26.5 -21.5 -26.5 -55.5q0 -21 16 -34q16 -13 38 -23q22 -10 48.5 -20q26.5 -10 48.5 -25.5q22 -15.5 37 -38.5q15 -23 15 -60q0 -43 -23 -77q-23 -34 -55 -54l-54 -18q23 -16 35 -37q12 -21 12 -56q0 -34 -14.5 -59.5q-14.5 -25.5 -38.5 -42.5q-24 -17 -56 -25.5q-32 -8.5 -68 -8.5q-52 0 -84.5 11q-32.5 11 -55.5 25l32 61q20 -11 48.5 -20q28.5 -9 64.5 -9q40 0 67 15.5q27 15.5 27 52.5q0 22 -14 37q-14 15 -36 26.5q-22 11.5 -48.5 23.5q-26.5 12 -48.5 28q-22 16 -37 39q-15 23 -15 59zt0 0zM370 355q0 22 -9 36q-9 14 -25 24.5q-16 10.5 -37 18.5q-21 8 -45 18q-15 -6 -30.5 -15.5q-15.5 -9.5 -28 -22q-12.5 -12.5 -20 -29q-7.5 -16.5 -7.5 -37.5q0 -21 9 -36q9 -15 24 -26q15 -11 35.5 -19.5q20.5 -8.5 43.5 -17.5q15 6 30.5 15.5q15.5 9.5 29 22.5q13.5 13 22 30t8.5 38z" />
-<glyph unicode="&#168;" horiz-adv-x="245" d="M88 653q0 22 12.5 36.5q12.5 14.5 33.5 14.5q21 0 34 -14.5q13 -14.5 13 -36.5q0 -20 -13 -34.5q-13 -14.5 -34 -14.5q-21 0 -33.5 14.5q-12.5 14.5 -12.5 34.5zt0 0zM271 654q0 21 12.5 35.5q12.5 14.5 33.5 14.5q22 0 34.5 -14.5q12.5 -14.5 12.5 -35.5q0 -21 -12.5 -35.5q-12.5 -14.5 -34.5 -14.5q-21 0 -33.5 14.5t-12.5 35.5z" />
-<glyph unicode="&#169;" horiz-adv-x="806" d="M77 290q0 83 28 148.5q28 65.5 76 110.5q48 45 112 69q64 24 136 24q72 0 136 -24q64 -24 112 -69q48 -45 76 -110.5q28 -65.5 28 -148.5q0 -83 -28 -148.5q-28 -65.5 -76 -110.5q-48 -45 -112 -69q-64 -24 -136 -24q-80 0 -145 24q-65 24 -111 69q-46 45 -71 110.5q-25 65.5 -25 148.5zt0 0zM147 290q0 -69 22 -122.5q22 -53.5 60 -89.5q38 -36 89.5 -55q51.5 -19 110.5 -19q59 0 110.5 19q51.5 19 89.5 55q38 36 60 89.5q22 53.5 22 122.5q0 69 -22 122.5q-22 53.5 -60 89.5q-38 36 -89.5 55q-51.5 19 -110.5 19q-59 0 -110.5 -19q-51.5 -19 -89.5 -55q-38 -36 -60 -89.5q-22 -53.5 -22 -122.5zt0 0zM545 127q-23 -13 -51.5 -20q-28.5 -7 -66.5 -7q-81 0 -123.5 51q-42.5 51 -42.5 139q0 91 45.5 140.5q45.5 49.5 120.5 49.5q18 0 32.5 -2q14.5 -2 27 -5.5q12.5 -3.5 24.5 -8.5q12 -5 27 -11l-26 -61q-22 11 -42 15q-20 4 -34 4q-42 0 -68.5 -26q-26.5 -26 -26.5 -95q0 -58 26 -89.5q26 -31.5 77 -32.5q47 0 80 18z" />
-<glyph unicode="&#170;" horiz-adv-x="381" d="M124 677q26 13 61.5 22q35.5 9 83.5 9q47 0 71.5 -21q24.5 -21 24.5 -53q0 -25 -7.5 -57.5q-7.5 -32.5 -17 -67.5q-9.5 -35 -17 -68.5q-7.5 -33.5 -7.5 -60.5l-50 0l-3 46h-3q-17 -17 -43 -33.5q-26 -16.5 -67 -16.5q-45 0 -67.5 25.5q-22.5 25.5 -22.5 60.5q0 31 14.5 53q14.5 22 38.5 36.5q24 14.5 55.5 21q31.5 6.5 66.5 6.5q14 0 28 -1q14 -1 28 -3q6 19 6 34q0 43 -57 43q-38 0 -64.5 -7.5q-26.5 -7.5 -46.5 -16.5zM171 432q41 0 64.5 18.5q23.5 18.5 35.5 36.5l8 42q-10 1 -19.5 1q-9.5 0 -20.5 0q-21 0 -40.5 -2.5q-19.5 -2.5 -35 -9q-15.5 -6.5 -25 -18.5q-9.5 -12 -9.5 -31q0 -16 10 -26.5t32 -10.5z" />
-<glyph unicode="&#171;" horiz-adv-x="454" d="M212 259l198 228l44 -46l-123 -144l-56 -37l34 -37l67 -141l-54 -42zM38 259l200 230l45 -47l-124 -145l-57 -37l35 -37l67 -142l-54 -43z" />
-<glyph unicode="&#172;" horiz-adv-x="505" d="M67 392h424v-192h-70v120l-354 0z" />
-<glyph unicode="&#173;" horiz-adv-x="342" d="M79 322h230l-17 -68l-229 0z" />
-<glyph unicode="&#174;" horiz-adv-x="700" d="M137 451q0 64 21 113.5q21 49.5 57.5 83q36.5 33.5 84.5 51q48 17.5 102 17.5q55 0 103.5 -17.5q48.5 -17.5 84.5 -51q36 -33.5 56.5 -83q20.5 -49.5 20.5 -113.5q0 -64 -21 -113.5q-21 -49.5 -57.5 -83q-36.5 -33.5 -84.5 -51q-48 -17.5 -102 -17.5q-56 0 -104 17.5q-48 17.5 -84 51q-36 33.5 -56.5 83q-20.5 49.5 -20.5 113.5zt0 0zM200 451q0 -52 16 -90.5q16 -38.5 43.5 -64q27.5 -25.5 64.5 -38.5q37 -13 78 -13q43 0 80 12.5q37 12.5 64 38q27 25.5 42.5 64q15.5 38.5 15.5 91.5q0 52 -16 90.5q-16 38.5 -43.5 64q-27.5 25.5 -64 38.5q-36.5 13 -78.5 13q-44 0 -81 -13q-37 -13 -64 -38.5q-27 -25.5 -42 -64q-15 -38.5 -15 -90.5zt0 0zM299 581q16 5 45 7.5q29 2.5 55 2.5q42 0 72 -17.5q30 -17.5 30 -60.5q0 -32 -20.5 -49q-20.5 -17 -50.5 -19l28 -14l74 -109h-61l-72 104l-48 15v-119h-52zM388 546q-11 0 -21 -0.5q-10 -0.5 -16 -3.5l0 -71h34q29 0 45 9q16 9 16 31q0 35 -58 35z" />
-<glyph unicode="&#175;" horiz-adv-x="313" d="M134 643h281l-13 -62l-282 0z" />
-<glyph unicode="&#176;" horiz-adv-x="425" d="M141 571q0 31 11 57q11 26 30 44.5q19 18.5 45 29q26 10.5 55 10.5q29 0 55 -9.5q26 -9.5 45 -28q19 -18.5 30 -44.5q11 -26 11 -59q0 -33 -11 -59q-11 -26 -30 -44.5q-19 -18.5 -45 -28q-26 -9.5 -55 -9.5q-29 0 -55 9.5q-26 9.5 -45 28q-19 18.5 -30 44.5q-11 26 -11 59zt0 0zM205 571q0 -38 23 -59.5q23 -21.5 54 -21.5q31 0 54 21.5q23 21.5 23 59.5q0 38 -23 59.5q-23 21.5 -54 21.5q-31 0 -54 -21.5t-23 -59.5z" />
-<glyph unicode="&#177;" horiz-adv-x="480" d="M55 493h176v181h72v-181h176v-72h-176v-120h-72v120h-176zM55 250h424v-72l-424 0z" />
-<glyph unicode="&#178;" horiz-adv-x="377" d="M435 713q0 -32 -14.5 -64.5q-14.5 -32.5 -39 -65q-24.5 -32.5 -56.5 -63q-32 -30.5 -66 -58.5l-50 -31v-3l57 16h131l-14 -64h-275l7 33q18 13 43.5 32.5q25.5 19.5 53.5 43.5q28 24 55 51q27 27 49 54.5q22 27.5 35.5 53.5q13.5 26 13.5 49q0 46 -55 46q-26 0 -52 -9.5q-26 -9.5 -46 -21.5l-9 57q28 18 63 28q35 10 69 10q18 0 36 -4.5q18 -4.5 32 -15.5q14 -11 23 -29t9 -45z" />
-<glyph unicode="&#179;" horiz-adv-x="377" d="M242 433q56 0 82.5 27.5q26.5 27.5 26.5 65.5q0 27 -16 40.5q-16 13.5 -64 13.5h-52l4 23l116 117l38 26l-48 -6h-121l13 60h243l-7 -33l-124 -124l-26 -18l-1 -2l22 3q38 0 64.5 -24.5q26.5 -24.5 26.5 -66.5q0 -32 -10 -61.5q-10 -29.5 -32 -52q-22 -22.5 -57.5 -35.5q-35.5 -13 -87.5 -13q-34 0 -57.5 6q-23.5 6 -40.5 13l26 60q14 -8 35 -13.5t47 -5.5z" />
-<glyph unicode="&#180;" horiz-adv-x="238" d="M228 720h84l-5 -21l-123 -128l-44 0z" />
-<glyph unicode="&#181;" horiz-adv-x="525" d="M209 500q-24 -117 -38 -184q-14 -67 -21 -103q-7 -36 -8.5 -49q-1.5 -13 -1.5 -21q0 -86 80 -86q53 0 96 33q43 33 69 86l69 324h75l-72 -337q-8 -41 -14 -82.5q-6 -41.5 -6 -80.5l-51 0l-12 74h-4q-27 -35 -71.5 -60.5q-44.5 -25.5 -101.5 -25.5q-45 0 -66.5 20.5q-21.5 20.5 -29.5 49.5l-5 0l-7 -125l-28 -133h-75l148 700z" />
-<glyph unicode="&#182;" horiz-adv-x="495" d="M378 700h69v-830h-69zM222 310q-32 0 -59 16.5q-27 16.5 -46.5 44q-19.5 27.5 -30.5 63q-11 35.5 -11 72.5q0 37 11.5 72q11.5 35 33.5 62q22 27 54 43.5q32 16.5 72 16.5h45v-830l-69 0z" />
-<glyph unicode="&#183;" horiz-adv-x="267" d="M98 296q0 27 16 42.5q16 15.5 42 15.5q26 0 42 -15.5q16 -15.5 16 -42.5q0 -26 -16 -42q-16 -16 -42 -16q-26 0 -42 16t-16 42z" />
-<glyph unicode="&#184;" horiz-adv-x="363" d="M167 -43q27 -3 44.5 -20.5q17.5 -17.5 17.5 -49.5q0 -42 -31.5 -69q-31.5 -27 -94.5 -27q-12 0 -25.5 1.5q-13.5 1.5 -27.5 3.5l17 39q5 -1 10.5 -1q5.5 0 10.5 0q21 0 35 4q14 4 22 9.5q8 5.5 11 12.5q3 7 3 13q0 19 -21 28q-21 9 -56 9l65 90l53 0z" />
-<glyph unicode="&#185;" horiz-adv-x="377" d="M149 441h101l54 254l14 36l-31 -28l-81 -45l-21 46l170 103h39l-78 -366h90l-13 -61l-257 0z" />
-<glyph unicode="&#186;" horiz-adv-x="379" d="M60 490q0 58 17.5 100q17.5 42 44.5 69q27 27 60 40q33 13 65 13q57 0 86.5 -31q29.5 -31 29.5 -88q0 -54 -15 -95q-15 -41 -40.5 -69q-25.5 -28 -60 -42.5q-34.5 -14.5 -72.5 -14.5q-51 0 -83 31q-32 31 -32 87zt0 0zM129 498q0 -32 14.5 -50q14.5 -18 43.5 -18q21 0 40.5 11q19.5 11 34.5 31.5q15 20.5 23.5 50q8.5 29.5 8.5 66.5q0 35 -15.5 50q-15.5 15 -43.5 15q-21 0 -40.5 -12.5q-19.5 -12.5 -34 -33.5q-14.5 -21 -23 -49.5t-8.5 -60.5z" />
-<glyph unicode="&#187;" horiz-adv-x="454" d="M280 268l-198 -228l-44 45l123 144l56 38l-35 43l-68 141l57 36zM454 268l-200 -230l-45 46l124 145l56 38l-35 44l-69 142l58 36z" />
-<glyph unicode="&#188;" horiz-adv-x="797" d="M639 713l52 -36l-487 -689l-52 36zM744 96h-78l-21 -96h-64l21 96h-193l7 37l278 302h43l-59 -280h79zM641 283l17 49h-2l-31 -46l-96 -105l-38 -31l49 5h74zM256 595l15 36l-31 -28l-81 -45l-24 49l173 100h39l-91 -427l-66 0z" />
-<glyph unicode="&#189;" horiz-adv-x="809" d="M639 713l52 -36l-487 -689l-52 36zM784 333q0 -32 -14.5 -64.5q-14.5 -32.5 -39 -65q-24.5 -32.5 -56.5 -63q-32 -30.5 -66 -58.5l-50 -31v-3l57 16h131l-14 -64h-275l7 33q18 13 43.5 32.5q25.5 19.5 53.5 43.5q28 24 55 51q27 27 49 54.5q22 27.5 35.5 53.5q13.5 26 13.5 49q0 46 -55 46q-26 0 -52 -9.5q-26 -9.5 -46 -21.5l-9 57q28 18 63 28q35 10 69 10q18 0 36 -4.5q18 -4.5 32 -15.5q14 -11 23 -29q9 -18 9 -45zt0 0zM256 595l15 36l-31 -28l-81 -45l-24 49l173 100h39l-91 -427l-66 0z" />
-<glyph unicode="&#190;" horiz-adv-x="833" d="M675 713l52 -36l-487 -689l-52 36zM780 96h-78l-21 -96h-64l21 96h-193l7 37l278 302h43l-59 -280h79zM677 283l17 49h-2l-31 -46l-96 -105l-38 -31l49 5h74zM209 333q56 0 82.5 27.5q26.5 27.5 26.5 65.5q0 27 -16 40.5q-16 13.5 -64 13.5h-52l4 23l116 117l38 26l-48 -6h-121l13 60h243l-7 -33l-124 -124l-26 -18l-1 -2l22 3q38 0 64.5 -24.5q26.5 -24.5 26.5 -66.5q0 -32 -10 -61.5q-10 -29.5 -32 -52q-22 -22.5 -57.5 -35.5q-35.5 -13 -87.5 -13q-34 0 -57.5 6q-23.5 6 -40.5 13l26 60q14 -8 35 -13.5t47 -5.5z" />
-<glyph unicode="&#191;" horiz-adv-x="413" d="M306 323q-5 -50 -25 -87.5q-20 -37.5 -47 -68q-27 -30.5 -56.5 -56.5q-29.5 -26 -54 -53q-24.5 -27 -41 -57q-16.5 -30 -16.5 -69q0 -39 20.5 -59.5q20.5 -20.5 71.5 -20.5q35 0 69 13.5q34 13.5 63 30.5l20 -58q-20 -12 -39 -21q-19 -9 -40 -15.5q-21 -6.5 -45.5 -10q-24.5 -3.5 -55.5 -3.5q-74 0 -109 34q-35 34 -35 88q0 54 17 93.5q17 39.5 43 70.5q26 31 57.5 57.5q31.5 26.5 60 54.5q28.5 28 50 60.5q21.5 32.5 28.5 76.5zM234 454q0 27 16 42.5q16 15.5 42 15.5q26 0 42 -15.5q16 -15.5 16 -42.5q0 -26 -16 -42q-16 -16 -42 -16q-26 0 -42 16t-16 42z" />
-<glyph unicode="&#192;" horiz-adv-x="557" d="M404 194h-244l-108 -194h-85l404 711h37l101 -711h-77zM199 266h197l-29 213l-2 106h-1l-45 -108zM456 752h-63l-129 97l4 21l101 0z" />
-<glyph unicode="&#193;" horiz-adv-x="557" d="M404 194h-244l-108 -194h-85l404 711h37l101 -711h-77zM199 266h197l-29 213l-2 106h-1l-45 -108zM467 870h116l-5 -21l-175 -97l-73 0z" />
-<glyph unicode="&#194;" horiz-adv-x="557" d="M404 194h-244l-108 -194h-85l404 711h37l101 -711h-77zM199 266h197l-29 213l-2 106h-1l-45 -108zM392 870h48l99 -102l-4 -21h-68l-46 49l-10 35l-25 -34l-71 -50h-75l5 22z" />
-<glyph unicode="&#195;" horiz-adv-x="557" d="M404 194h-244l-108 -194h-85l404 711h37l101 -711h-77zM199 266h197l-29 213l-2 106h-1l-45 -108zM256 785q35 32 62.5 43.5q27.5 11.5 50.5 11.5q18 0 33.5 -5q15.5 -5 30 -11.5q14.5 -6.5 28.5 -11.5q14 -5 29 -5q25 0 53 21l16 -43q-32 -26 -56.5 -35q-24.5 -9 -44.5 -9q-18 0 -33 5q-15 5 -29.5 11.5q-14.5 6.5 -28.5 11.5q-14 5 -29 5q-15 0 -31.5 -6.5q-16.5 -6.5 -36.5 -23.5z" />
-<glyph unicode="&#196;" horiz-adv-x="557" d="M404 194h-244l-108 -194h-85l404 711h37l101 -711h-77zM199 266h197l-29 213l-2 106h-1l-45 -108zM263 794q0 20 14 33.5q14 13.5 37 13.5q23 0 36.5 -13.5q13.5 -13.5 13.5 -33.5q0 -20 -13.5 -33q-13.5 -13 -36.5 -13q-23 0 -37 13q-14 13 -14 33zt0 0zM446 794q0 20 13.5 33.5q13.5 13.5 36.5 13.5q23 0 37 -13.5q14 -13.5 14 -33.5q0 -20 -14 -33q-14 -13 -37 -13q-23 0 -36.5 13t-13.5 33z" />
-<glyph unicode="&#197;" horiz-adv-x="557" d="M296 768q0 37 25 61q25 24 80 24q50 0 78 -21.5q28 -21.5 28 -63.5q0 -35 -24 -57.5q-24 -22.5 -72 -25.5l98 -685h-77l-28 194h-244l-108 -194h-85l392 690q-63 17 -63 78zt0 0zM199 265h197l-29 214l-2 106h-1l-45 -108zM357 768q0 -17 10.5 -28.5q10.5 -11.5 33.5 -11.5q22 0 33.5 11q11.5 11 11.5 29q0 19 -11 30.5q-11 11.5 -34 11.5q-22 0 -33 -11.5t-11 -30.5z" />
-<glyph unicode="&#198;" horiz-adv-x="805" d="M459 599l-51 -101l-174 -229h157l71 330zM377 197h-199l-148 -197h-92l541 700h366l-15 -74h-283l-49 -229h259l-16 -74h-258l-54 -249h288l-15 -74h-287l-80 0z" />
-<glyph unicode="&#199;" horiz-adv-x="544" d="M480 29q-32 -22 -68.5 -31q-36.5 -9 -83.5 -10l-24 -31q27 -3 44.5 -20.5q17.5 -17.5 17.5 -49.5q0 -42 -31.5 -69q-31.5 -27 -94.5 -27q-12 0 -25.5 1.5q-13.5 1.5 -27.5 3.5l17 39q5 -1 10.5 -1q5.5 0 10.5 0q21 0 35 4q14 4 22 9.5q8 5.5 11 12.5q3 7 3 13q0 19 -21 28q-21 9 -56 9l58 81q-49 7 -87 31.5q-38 24.5 -64.5 61.5q-26.5 37 -40.5 85.5q-14 48.5 -14 104.5q0 113 33 195.5q33 82.5 87 136.5q54 54 121.5 80q67.5 26 136.5 26q57 0 93 -8q36 -8 59 -19l-36 -73q-20 11 -52.5 18.5q-32.5 7.5 -74.5 7.5q-56 0 -107.5 -24.5q-51.5 -24.5 -90.5 -70.5q-39 -46 -62 -112q-23 -66 -23 -148q0 -48 12.5 -88.5q12.5 -40.5 36 -70q23.5 -29.5 58 -46q34.5 -16.5 78.5 -16.5q47 0 78 10.5q31 10.5 56 24.5z" />
-<glyph unicode="&#200;" horiz-adv-x="510" d="M189 700h361l-15 -74h-283l-49 -229h259l-15 -74h-259l-53 -249h288l-16 -74h-288h-79zM422 752h-63l-129 97l4 21l101 0z" />
-<glyph unicode="&#201;" horiz-adv-x="510" d="M189 700h361l-15 -74h-283l-49 -229h259l-15 -74h-259l-53 -249h288l-16 -74h-288h-79zM451 870h116l-5 -21l-175 -97l-73 0z" />
-<glyph unicode="&#202;" horiz-adv-x="510" d="M189 700h361l-15 -74h-283l-49 -229h259l-15 -74h-259l-53 -249h288l-16 -74h-288h-79zM381 870h48l99 -102l-4 -21h-68l-46 49l-10 35l-25 -34l-71 -50h-75l5 22z" />
-<glyph unicode="&#203;" horiz-adv-x="510" d="M189 700h361l-15 -74h-283l-49 -229h259l-15 -74h-259l-53 -249h288l-16 -74h-288h-79zM240 794q0 20 14 33.5q14 13.5 37 13.5q23 0 36.5 -13.5q13.5 -13.5 13.5 -33.5q0 -20 -13.5 -33q-13.5 -13 -36.5 -13q-23 0 -37 13q-14 13 -14 33zt0 0zM423 794q0 20 13.5 33.5q13.5 13.5 36.5 13.5q23 0 37 -13.5q14 -13.5 14 -33.5q0 -20 -14 -33q-14 -13 -37 -13q-23 0 -36.5 13t-13.5 33z" />
-<glyph unicode="&#204;" horiz-adv-x="277" d="M210 700h80l-148 -700h-80zM316 752h-63l-129 97l4 21l101 0z" />
-<glyph unicode="&#205;" horiz-adv-x="277" d="M210 700h80l-148 -700h-80zM325 870h116l-5 -21l-175 -97l-73 0z" />
-<glyph unicode="&#206;" horiz-adv-x="277" d="M210 700h80l-148 -700h-80zM262 870h48l99 -102l-4 -21h-68l-46 49l-10 35l-25 -34l-71 -50h-75l5 22z" />
-<glyph unicode="&#207;" horiz-adv-x="277" d="M210 700h80l-148 -700h-80zM123 794q0 20 14 33.5q14 13.5 37 13.5q23 0 36.5 -13.5q13.5 -13.5 13.5 -33.5q0 -20 -13.5 -33q-13.5 -13 -36.5 -13q-23 0 -37 13q-14 13 -14 33zt0 0zM306 794q0 20 13.5 33.5q13.5 13.5 36.5 13.5q23 0 37 -13.5q14 -13.5 14 -33.5q0 -20 -14 -33q-14 -13 -37 -13q-23 0 -36.5 13t-13.5 33z" />
-<glyph unicode="&#208;" horiz-adv-x="626" d="M41 392h86l66 308q38 5 86 6.5q48 1.5 87 1.5q58 0 106 -15.5q48 -15.5 81.5 -47.5q33.5 -32 51.5 -81q18 -49 18 -115q0 -44 -8 -95.5q-8 -51.5 -26.5 -102q-18.5 -50.5 -49.5 -97.5q-31 -47 -77 -83.5q-46 -36.5 -107.5 -58q-61.5 -21.5 -142.5 -21.5q-15 0 -39.5 0.5q-24.5 0.5 -50.5 1.5q-68 4 -78 6l71 333h-87zM360 634q-12 0 -27 -0.5q-15 -0.5 -29 -1q-14 -0.5 -27 -1.5q-13 -1 -20 -2l-50 -237h137l-12 -60h-138l-55 -263q4 -1 16 -1.5q12 -0.5 25.5 -1q13.5 -0.5 26 -1q12.5 -0.5 17.5 -0.5q87 0 146.5 36q59.5 36 97 91q37.5 55 54.5 121q17 66 17 125q0 45 -10 81q-10 36 -31.5 61.5q-21.5 25.5 -55.5 39.5t-82 14z" />
-<glyph unicode="&#209;" horiz-adv-x="642" d="M261 458l-34 103h-3l-12 -103l-97 -458h-75l151 711h40l218 -468l33 -98h4l9 98l98 457h75l-151 -711h-37zM289 785q35 32 62.5 43.5q27.5 11.5 50.5 11.5q18 0 33.5 -5q15.5 -5 30 -11.5q14.5 -6.5 28.5 -11.5q14 -5 29 -5q25 0 53 21l16 -43q-32 -26 -56.5 -35q-24.5 -9 -44.5 -9q-18 0 -33 5q-15 5 -29.5 11.5q-14.5 6.5 -28.5 11.5q-14 5 -29 5q-15 0 -31.5 -6.5q-16.5 -6.5 -36.5 -23.5z" />
-<glyph unicode="&#210;" horiz-adv-x="651" d="M71 256q0 92 25 175q25 83 71.5 145.5q46.5 62.5 112 99q65.5 36.5 145.5 36.5q48 0 89 -14.5q41 -14.5 70.5 -46q29.5 -31.5 46 -81.5q16.5 -50 16.5 -122q0 -94 -25 -177.5q-25 -83.5 -70 -146.5q-45 -63 -107.5 -99.5q-62.5 -36.5 -137.5 -36.5q-118 0 -177 68.5q-59 68.5 -59 199.5zt0 0zM155 257q0 -94 39 -145.5q39 -51.5 115 -51.5q56 0 102.5 31q46.5 31 80.5 84q34 53 52.5 123q18.5 70 18.5 148q0 58 -13 96q-13 38 -34.5 59.5q-21.5 21.5 -49 30q-27.5 8.5 -55.5 8.5q-57 0 -104 -31.5q-47 -31.5 -80.5 -84.5q-33.5 -53 -52.5 -122.5q-19 -69.5 -19 -144.5zt0 0zM503 752h-63l-129 97l4 21l101 0z" />
-<glyph unicode="&#211;" horiz-adv-x="651" d="M71 256q0 92 25 175q25 83 71.5 145.5q46.5 62.5 112 99q65.5 36.5 145.5 36.5q48 0 89 -14.5q41 -14.5 70.5 -46q29.5 -31.5 46 -81.5q16.5 -50 16.5 -122q0 -94 -25 -177.5q-25 -83.5 -70 -146.5q-45 -63 -107.5 -99.5q-62.5 -36.5 -137.5 -36.5q-118 0 -177 68.5q-59 68.5 -59 199.5zt0 0zM155 257q0 -94 39 -145.5q39 -51.5 115 -51.5q56 0 102.5 31q46.5 31 80.5 84q34 53 52.5 123q18.5 70 18.5 148q0 58 -13 96q-13 38 -34.5 59.5q-21.5 21.5 -49 30q-27.5 8.5 -55.5 8.5q-57 0 -104 -31.5q-47 -31.5 -80.5 -84.5q-33.5 -53 -52.5 -122.5q-19 -69.5 -19 -144.5zt0 0zM532 870h116l-5 -21l-175 -97l-73 0z" />
-<glyph unicode="&#212;" horiz-adv-x="651" d="M71 256q0 92 25 175q25 83 71.5 145.5q46.5 62.5 112 99q65.5 36.5 145.5 36.5q48 0 89 -14.5q41 -14.5 70.5 -46q29.5 -31.5 46 -81.5q16.5 -50 16.5 -122q0 -94 -25 -177.5q-25 -83.5 -70 -146.5q-45 -63 -107.5 -99.5q-62.5 -36.5 -137.5 -36.5q-118 0 -177 68.5q-59 68.5 -59 199.5zt0 0zM155 257q0 -94 39 -145.5q39 -51.5 115 -51.5q56 0 102.5 31q46.5 31 80.5 84q34 53 52.5 123q18.5 70 18.5 148q0 58 -13 96q-13 38 -34.5 59.5q-21.5 21.5 -49 30q-27.5 8.5 -55.5 8.5q-57 0 -104 -31.5q-47 -31.5 -80.5 -84.5q-33.5 -53 -52.5 -122.5q-19 -69.5 -19 -144.5zt0 0zM447 870h48l99 -102l-4 -21h-68l-46 49l-10 35l-25 -34l-71 -50h-75l5 22z" />
-<glyph unicode="&#213;" horiz-adv-x="651" d="M71 256q0 92 25 175q25 83 71.5 145.5q46.5 62.5 112 99q65.5 36.5 145.5 36.5q48 0 89 -14.5q41 -14.5 70.5 -46q29.5 -31.5 46 -81.5q16.5 -50 16.5 -122q0 -94 -25 -177.5q-25 -83.5 -70 -146.5q-45 -63 -107.5 -99.5q-62.5 -36.5 -137.5 -36.5q-118 0 -177 68.5q-59 68.5 -59 199.5zt0 0zM155 257q0 -94 39 -145.5q39 -51.5 115 -51.5q56 0 102.5 31q46.5 31 80.5 84q34 53 52.5 123q18.5 70 18.5 148q0 58 -13 96q-13 38 -34.5 59.5q-21.5 21.5 -49 30q-27.5 8.5 -55.5 8.5q-57 0 -104 -31.5q-47 -31.5 -80.5 -84.5q-33.5 -53 -52.5 -122.5q-19 -69.5 -19 -144.5zt0 0zM298 785q35 32 62.5 43.5q27.5 11.5 50.5 11.5q18 0 33.5 -5q15.5 -5 30 -11.5q14.5 -6.5 28.5 -11.5q14 -5 29 -5q25 0 53 21l16 -43q-32 -26 -56.5 -35q-24.5 -9 -44.5 -9q-18 0 -33 5q-15 5 -29.5 11.5q-14.5 6.5 -28.5 11.5q-14 5 -29 5q-15 0 -31.5 -6.5q-16.5 -6.5 -36.5 -23.5z" />
-<glyph unicode="&#214;" horiz-adv-x="651" d="M71 256q0 92 25 175q25 83 71.5 145.5q46.5 62.5 112 99q65.5 36.5 145.5 36.5q48 0 89 -14.5q41 -14.5 70.5 -46q29.5 -31.5 46 -81.5q16.5 -50 16.5 -122q0 -94 -25 -177.5q-25 -83.5 -70 -146.5q-45 -63 -107.5 -99.5q-62.5 -36.5 -137.5 -36.5q-118 0 -177 68.5q-59 68.5 -59 199.5zt0 0zM155 257q0 -94 39 -145.5q39 -51.5 115 -51.5q56 0 102.5 31q46.5 31 80.5 84q34 53 52.5 123q18.5 70 18.5 148q0 58 -13 96q-13 38 -34.5 59.5q-21.5 21.5 -49 30q-27.5 8.5 -55.5 8.5q-57 0 -104 -31.5q-47 -31.5 -80.5 -84.5q-33.5 -53 -52.5 -122.5q-19 -69.5 -19 -144.5zt0 0zM307 794q0 20 14 33.5q14 13.5 37 13.5q23 0 36.5 -13.5q13.5 -13.5 13.5 -33.5q0 -20 -13.5 -33q-13.5 -13 -36.5 -13q-23 0 -37 13q-14 13 -14 33zt0 0zM490 794q0 20 13.5 33.5q13.5 13.5 36.5 13.5q23 0 37 -13.5q14 -13.5 14 -33.5q0 -20 -14 -33q-14 -13 -37 -13q-23 0 -36.5 13t-13.5 33z" />
-<glyph unicode="&#215;" horiz-adv-x="480" d="M138 517l127 -127l127 127l51 -53l-126 -125l126 -127l-51 -52l-127 127l-126 -128l-52 51l127 129l-127 125z" />
-<glyph unicode="&#216;" horiz-adv-x="651" d="M71 256q0 92 25 175q25 83 71.5 145.5q46.5 62.5 112 99q65.5 36.5 145.5 36.5q39 0 73.5 -9.5q34.5 -9.5 61.5 -29.5l29 39l49 -38l-35 -47q21 -31 32.5 -75q11.5 -44 11.5 -104q0 -94 -25 -177.5q-25 -83.5 -70 -146.5q-45 -63 -107.5 -99.5q-62.5 -36.5 -137.5 -36.5q-88 0 -145 40l-29 -39l-50 39l34 46q-46 65 -46 182zt0 0zM155 257q0 -63 18 -108l337 456q-21 19 -46.5 27q-25.5 8 -52.5 8q-57 0 -104 -31.5q-47 -31.5 -80.5 -84.5q-33.5 -53 -52.5 -122.5q-19 -69.5 -19 -144.5zt0 0zM563 446q0 32 -4 58q-4 26 -12 46l-337 -456q39 -34 99 -34q56 0 102.5 31q46.5 31 80.5 84q34 53 52.5 123t18.5 148z" />
-<glyph unicode="&#217;" horiz-adv-x="618" d="M573 700h76l-98 -467q-14 -64 -35 -110q-21 -46 -52.5 -75q-31.5 -29 -75.5 -43q-44 -14 -102 -14q-55 0 -93 12.5q-38 12.5 -61.5 35q-23.5 22.5 -34 55q-10.5 32.5 -10.5 71.5q0 41 11 93l93 442h80l-93 -443q-11 -44 -11 -80q0 -63 33 -87.5q33 -24.5 98 -24.5q39 0 68.5 11q29.5 11 51 34q21.5 23 36 59q14.5 36 25.5 87zM499 752h-63l-129 97l4 21l101 0z" />
-<glyph unicode="&#218;" horiz-adv-x="618" d="M573 700h76l-98 -467q-14 -64 -35 -110q-21 -46 -52.5 -75q-31.5 -29 -75.5 -43q-44 -14 -102 -14q-55 0 -93 12.5q-38 12.5 -61.5 35q-23.5 22.5 -34 55q-10.5 32.5 -10.5 71.5q0 41 11 93l93 442h80l-93 -443q-11 -44 -11 -80q0 -63 33 -87.5q33 -24.5 98 -24.5q39 0 68.5 11q29.5 11 51 34q21.5 23 36 59q14.5 36 25.5 87zM508 870h116l-5 -21l-175 -97l-73 0z" />
-<glyph unicode="&#219;" horiz-adv-x="618" d="M573 700h76l-98 -467q-14 -64 -35 -110q-21 -46 -52.5 -75q-31.5 -29 -75.5 -43q-44 -14 -102 -14q-55 0 -93 12.5q-38 12.5 -61.5 35q-23.5 22.5 -34 55q-10.5 32.5 -10.5 71.5q0 41 11 93l93 442h80l-93 -443q-11 -44 -11 -80q0 -63 33 -87.5q33 -24.5 98 -24.5q39 0 68.5 11q29.5 11 51 34q21.5 23 36 59q14.5 36 25.5 87zM434 870h48l99 -102l-4 -21h-68l-46 49l-10 35l-25 -34l-71 -50h-75l5 22z" />
-<glyph unicode="&#220;" horiz-adv-x="618" d="M573 700h76l-98 -467q-14 -64 -35 -110q-21 -46 -52.5 -75q-31.5 -29 -75.5 -43q-44 -14 -102 -14q-55 0 -93 12.5q-38 12.5 -61.5 35q-23.5 22.5 -34 55q-10.5 32.5 -10.5 71.5q0 41 11 93l93 442h80l-93 -443q-11 -44 -11 -80q0 -63 33 -87.5q33 -24.5 98 -24.5q39 0 68.5 11q29.5 11 51 34q21.5 23 36 59q14.5 36 25.5 87zM296 794q0 20 14 33.5q14 13.5 37 13.5q23 0 36.5 -13.5q13.5 -13.5 13.5 -33.5q0 -20 -13.5 -33q-13.5 -13 -36.5 -13q-23 0 -37 13q-14 13 -14 33zt0 0zM479 794q0 20 13.5 33.5q13.5 13.5 36.5 13.5q23 0 37 -13.5q14 -13.5 14 -33.5q0 -20 -14 -33q-14 -13 -37 -13q-23 0 -36.5 13t-13.5 33z" />
-<glyph unicode="&#221;" horiz-adv-x="531" d="M241 278l-133 422h87l89 -306l3 -61h1l30 63l217 304h90l-304 -421l-59 -279h-80zM474 870h116l-5 -21l-175 -97l-73 0z" />
-<glyph unicode="&#222;" horiz-adv-x="532" d="M189 700h79l-16 -75q40 3 81 3q46 0 85 -10q39 -10 68 -32q29 -22 46 -56.5q17 -34.5 17 -82.5q0 -76 -27 -127q-27 -51 -72 -82q-45 -31 -101 -44q-56 -13 -113 -13q-5 0 -15.5 0q-10.5 0 -22.5 0.5q-12 0.5 -23 1.5q-11 1 -16 2l-39 -185h-80zM316 555q-23 0 -44.5 -1.5q-21.5 -1.5 -35.5 -4.5l-61 -290q4 -2 13.5 -2.5q9.5 -0.5 20 -1.5q10.5 -1 20.5 -1q10 0 15 0q43 0 83 9q40 9 71 30.5q31 21.5 49 57q18 35.5 18 88.5q0 36 -12 58.5q-12 22.5 -32.5 35q-20.5 12.5 -47.5 17.5t-57 5z" />
-<glyph unicode="&#223;" horiz-adv-x="559" d="M174 528q20 95 74.5 136.5q54.5 41.5 137.5 41.5q42 0 71 -10q29 -10 47 -26.5q18 -16.5 26.5 -38q8.5 -21.5 8.5 -43.5q0 -35 -12.5 -59q-12.5 -24 -31 -42q-18.5 -18 -40.5 -31.5q-22 -13.5 -40.5 -27q-18.5 -13.5 -31 -28.5q-12.5 -15 -12.5 -36q0 -19 11.5 -30.5q11.5 -11.5 29 -20.5q17.5 -9 38 -18.5q20.5 -9.5 38 -24.5q17.5 -15 29 -37.5q11.5 -22.5 11.5 -58.5q0 -39 -17.5 -73q-17.5 -34 -47 -59q-29.5 -25 -69 -39.5q-39.5 -14.5 -83.5 -14.5q-35 0 -65 6.5q-30 6.5 -54 21.5l36 67q40 -25 91 -25q21 0 44 7.5q23 7.5 41.5 21.5q18.5 14 31 34.5q12.5 20.5 12.5 47.5q0 23 -11.5 38q-11.5 15 -29 26q-17.5 11 -37.5 20.5q-20 9.5 -38 23q-18 13.5 -29.5 33.5q-11.5 20 -11.5 51q0 30 12.5 51q12.5 21 31.5 38q19 17 41 31q22 14 41 28q19 14 30.5 30q11.5 16 11.5 37q0 30 -22 45q-22 15 -62 15q-109 1 -132 -138l-96 -498q-9 -55 -21 -94q-12 -39 -30 -64.5q-18 -25.5 -44 -37.5q-26 -12 -63 -12q-30 0 -55.5 4.5q-25.5 4.5 -47.5 15.5v56q42 -7 58.5 -9q16.5 -2 40.5 -2q38 0 57 39q19 39 30 104l82 436h-86l13 64h86l7 28z" />
-<glyph unicode="&#224;" horiz-adv-x="487" d="M414 197q-8 -37 -11 -75q-3 -38 -3 -71q0 -15 0 -28.5q0 -13.5 2 -24.5l-56 0l-14 87h-4q-12 -17 -29.5 -34.5q-17.5 -17.5 -38.5 -31.5q-21 -14 -45 -22.5q-24 -8.5 -51 -8.5q-119 0 -119 155q0 64 16.5 130q16.5 66 51 119q34.5 53 89 87q54.5 34 131.5 34q28 0 68.5 -6.5q40.5 -6.5 75.5 -17.5zM187 52q24 0 46 11.5q22 11.5 41.5 28.5q19.5 17 34.5 36.5q15 19.5 24 36.5l56 270q-30 14 -76 14q-46 0 -81 -27q-35 -27 -59 -70.5q-24 -43.5 -36 -98.5q-12 -55 -12 -110q0 -38 15 -64.5q15 -26.5 47 -26.5zt0 0zM359 571h-43l-81 128l4 21l91 0z" />
-<glyph unicode="&#225;" horiz-adv-x="487" d="M414 197q-8 -37 -11 -75q-3 -38 -3 -71q0 -15 0 -28.5q0 -13.5 2 -24.5l-56 0l-14 87h-4q-12 -17 -29.5 -34.5q-17.5 -17.5 -38.5 -31.5q-21 -14 -45 -22.5q-24 -8.5 -51 -8.5q-119 0 -119 155q0 64 16.5 130q16.5 66 51 119q34.5 53 89 87q54.5 34 131.5 34q28 0 68.5 -6.5q40.5 -6.5 75.5 -17.5zM187 52q24 0 46 11.5q22 11.5 41.5 28.5q19.5 17 34.5 36.5q15 19.5 24 36.5l56 270q-30 14 -76 14q-46 0 -81 -27q-35 -27 -59 -70.5q-24 -43.5 -36 -98.5q-12 -55 -12 -110q0 -38 15 -64.5q15 -26.5 47 -26.5zt0 0zM392 720h84l-5 -21l-123 -128l-44 0z" />
-<glyph unicode="&#226;" horiz-adv-x="487" d="M414 197q-8 -37 -11 -75q-3 -38 -3 -71q0 -15 0 -28.5q0 -13.5 2 -24.5l-56 0l-14 87h-4q-12 -17 -29.5 -34.5q-17.5 -17.5 -38.5 -31.5q-21 -14 -45 -22.5q-24 -8.5 -51 -8.5q-119 0 -119 155q0 64 16.5 130q16.5 66 51 119q34.5 53 89 87q54.5 34 131.5 34q28 0 68.5 -6.5q40.5 -6.5 75.5 -17.5zM187 52q24 0 46 11.5q22 11.5 41.5 28.5q19.5 17 34.5 36.5q15 19.5 24 36.5l56 270q-30 14 -76 14q-46 0 -81 -27q-35 -27 -59 -70.5q-24 -43.5 -36 -98.5q-12 -55 -12 -110q0 -38 15 -64.5q15 -26.5 47 -26.5zt0 0zM358 732h30l66 -182h-63l-24 66l-6 58l-34 -58l-57 -66l-68 0z" />
-<glyph unicode="&#227;" horiz-adv-x="487" d="M414 197q-8 -37 -11 -75q-3 -38 -3 -71q0 -15 0 -28.5q0 -13.5 2 -24.5l-56 0l-14 87h-4q-12 -17 -29.5 -34.5q-17.5 -17.5 -38.5 -31.5q-21 -14 -45 -22.5q-24 -8.5 -51 -8.5q-119 0 -119 155q0 64 16.5 130q16.5 66 51 119q34.5 53 89 87q54.5 34 131.5 34q28 0 68.5 -6.5q40.5 -6.5 75.5 -17.5zM187 52q24 0 46 11.5q22 11.5 41.5 28.5q19.5 17 34.5 36.5q15 19.5 24 36.5l56 270q-30 14 -76 14q-46 0 -81 -27q-35 -27 -59 -70.5q-24 -43.5 -36 -98.5q-12 -55 -12 -110q0 -38 15 -64.5q15 -26.5 47 -26.5zt0 0zM217 656q32 33 55.5 45.5q23.5 12.5 41.5 12.5q15 0 27 -6.5q12 -6.5 23.5 -14q11.5 -7.5 23 -13.5q11.5 -6 25.5 -6q23 0 54 24l15 -43q-29 -29 -50 -40q-21 -11 -38 -11q-15 0 -27 6q-12 6 -23.5 13.5q-11.5 7.5 -23.5 13.5q-12 6 -27 6q-13 0 -28 -6.5q-15 -6.5 -35 -22.5z" />
-<glyph unicode="&#228;" horiz-adv-x="487" d="M414 197q-8 -37 -11 -75q-3 -38 -3 -71q0 -15 0 -28.5q0 -13.5 2 -24.5l-56 0l-14 87h-4q-12 -17 -29.5 -34.5q-17.5 -17.5 -38.5 -31.5q-21 -14 -45 -22.5q-24 -8.5 -51 -8.5q-119 0 -119 155q0 64 16.5 130q16.5 66 51 119q34.5 53 89 87q54.5 34 131.5 34q28 0 68.5 -6.5q40.5 -6.5 75.5 -17.5zM187 52q24 0 46 11.5q22 11.5 41.5 28.5q19.5 17 34.5 36.5q15 19.5 24 36.5l56 270q-30 14 -76 14q-46 0 -81 -27q-35 -27 -59 -70.5q-24 -43.5 -36 -98.5q-12 -55 -12 -110q0 -38 15 -64.5q15 -26.5 47 -26.5zt0 0zM185 653q0 22 12.5 36.5q12.5 14.5 33.5 14.5q21 0 34 -14.5q13 -14.5 13 -36.5q0 -20 -13 -34.5q-13 -14.5 -34 -14.5q-21 0 -33.5 14.5q-12.5 14.5 -12.5 34.5zt0 0zM368 654q0 21 12.5 35.5q12.5 14.5 33.5 14.5q22 0 34.5 -14.5q12.5 -14.5 12.5 -35.5q0 -21 -12.5 -35.5q-12.5 -14.5 -34.5 -14.5q-21 0 -33.5 14.5t-12.5 35.5z" />
-<glyph unicode="&#229;" horiz-adv-x="487" d="M414 197q-8 -37 -11 -75q-3 -38 -3 -71q0 -15 0 -28.5q0 -13.5 2 -24.5l-56 0l-14 87h-4q-12 -17 -29.5 -34.5q-17.5 -17.5 -38.5 -31.5q-21 -14 -45 -22.5q-24 -8.5 -51 -8.5q-119 0 -119 155q0 64 16.5 130q16.5 66 51 119q34.5 53 89 87q54.5 34 131.5 34q28 0 68.5 -6.5q40.5 -6.5 75.5 -17.5zM187 52q24 0 46 11.5q22 11.5 41.5 28.5q19.5 17 34.5 36.5q15 19.5 24 36.5l56 270q-30 14 -76 14q-46 0 -81 -27q-35 -27 -59 -70.5q-24 -43.5 -36 -98.5q-12 -55 -12 -110q0 -38 15 -64.5q15 -26.5 47 -26.5zt0 0zM251 643q0 42 26.5 66.5q26.5 24.5 70.5 24.5q42 0 70 -22q28 -22 28 -69q0 -39 -28 -64.5q-28 -25.5 -70 -25.5q-42 0 -69.5 23.5q-27.5 23.5 -27.5 66.5zt0 0zM305 643q0 -20 13.5 -31q13.5 -11 29.5 -11q19 0 31.5 10q12.5 10 12.5 32q0 22 -13.5 32.5q-13.5 10.5 -30.5 10.5q-17 0 -30 -10t-13 -33z" />
-<glyph unicode="&#230;" horiz-adv-x="754" d="M176 56q27 0 51.5 13q24.5 13 44.5 30.5q20 17.5 34.5 35q14.5 17.5 21.5 28.5l8 68q-11 1 -23 1.5q-12 0.5 -23 0.5q-38 0 -71.5 -6q-33.5 -6 -58 -19q-24.5 -13 -38.5 -32.5q-14 -19.5 -14 -47.5q0 -38 17.5 -55q17.5 -17 50.5 -17zt0 0zM332 87q-32 -39 -79.5 -67q-47.5 -28 -104.5 -28q-31 0 -53.5 10q-22.5 10 -37.5 26.5q-15 16.5 -22 38q-7 21.5 -7 44.5q0 51 22 85.5q22 34.5 59.5 55q37.5 20.5 87.5 29.5q50 9 105 9q11 0 22.5 0q11.5 0 22.5 -1q20 65 20 97q0 32 -19 45q-19 13 -63 13q-16 0 -35.5 -2.5q-19.5 -2.5 -39.5 -7.5q-20 -5 -38.5 -11.5q-18.5 -6.5 -33.5 -13.5l-12 60q42 23 91.5 31q49.5 8 100.5 8q48 0 78.5 -17q30.5 -17 37.5 -49q32 37 77.5 53.5q45.5 16.5 87.5 16.5q74 0 110 -32.5q36 -32.5 36 -80.5q0 -53 -24.5 -85q-24.5 -32 -68.5 -50q-44 -18 -106 -24.5q-62 -6.5 -136 -7.5q-3 -17 -5 -32q-2 -15 -2 -29q0 -55 28 -87q28 -32 95 -32q32 0 66.5 12.5q34.5 12.5 55.5 27.5l17 -54q-34 -24 -80.5 -37q-46.5 -13 -94.5 -13q-58 0 -97.5 26.5q-39.5 26.5 -53.5 72.5zM587 448q-61 0 -102 -40q-41 -40 -63 -115q49 0 93.5 2.5q44.5 2.5 78.5 12q34 9.5 54 28.5q20 19 20 52q0 25 -16.5 42.5t-64.5 17.5z" />
-<glyph unicode="&#231;" horiz-adv-x="420" d="M365 43q-26 -22 -61.5 -36.5q-35.5 -14.5 -67.5 -18.5l-25 -31q27 -3 44.5 -20.5q17.5 -17.5 17.5 -49.5q0 -42 -31.5 -69q-31.5 -27 -94.5 -27q-12 0 -25.5 1.5q-13.5 1.5 -27.5 3.5l17 39q5 -1 10.5 -1q5.5 0 10.5 0q21 0 35 4q14 4 22 9.5q8 5.5 11 12.5q3 7 3 13q0 19 -21 28q-21 9 -56 9l57 78q-40 4 -66 21q-26 17 -41 40.5q-15 23.5 -20.5 49.5q-5.5 26 -5.5 49q0 85 23 152.5q23 67.5 61.5 114.5q38.5 47 88.5 72q50 25 103 25q38 0 62.5 -7q24.5 -7 44.5 -16l-28 -62q-17 10 -42 15.5q-25 5.5 -54 5.5q-34 0 -66.5 -23q-32.5 -23 -57.5 -60.5q-25 -37.5 -40 -86q-15 -48.5 -15 -99.5q0 -65 27 -96q27 -31 73 -31q30 0 63 13.5q33 13.5 53 27.5z" />
-<glyph unicode="&#232;" horiz-adv-x="463" d="M389 49q-35 -30 -82.5 -45.5q-47.5 -15.5 -95.5 -15.5q-80 0 -120.5 46q-40.5 46 -40.5 128q0 82 23 147q23 65 60.5 110q37.5 45 85 69q47.5 24 97.5 24q36 0 62.5 -10q26.5 -10 43.5 -26.5q17 -16.5 25 -38q8 -21.5 8 -45.5q0 -71 -69 -111.5q-69 -40.5 -201 -40.5q-12 0 -25 0.5q-13 0.5 -27 1.5q-4 -19 -6 -36q-2 -17 -2 -30q0 -55 25 -89.5q25 -34.5 78 -34.5q44 0 80.5 14.5q36.5 14.5 56.5 30.5zM304 448q-55 0 -95.5 -37.5q-40.5 -37.5 -61.5 -112.5q38 0 79 2q41 2 74.5 10.5q33.5 8.5 55.5 27q22 18.5 22 51.5q0 10 -3.5 20.5q-3.5 10.5 -11.5 19q-8 8.5 -22.5 14q-14.5 5.5 -36.5 5.5zt0 0zM343 571h-43l-81 128l4 21l91 0z" />
-<glyph unicode="&#233;" horiz-adv-x="463" d="M389 49q-35 -30 -82.5 -45.5q-47.5 -15.5 -95.5 -15.5q-80 0 -120.5 46q-40.5 46 -40.5 128q0 82 23 147q23 65 60.5 110q37.5 45 85 69q47.5 24 97.5 24q36 0 62.5 -10q26.5 -10 43.5 -26.5q17 -16.5 25 -38q8 -21.5 8 -45.5q0 -71 -69 -111.5q-69 -40.5 -201 -40.5q-12 0 -25 0.5q-13 0.5 -27 1.5q-4 -19 -6 -36q-2 -17 -2 -30q0 -55 25 -89.5q25 -34.5 78 -34.5q44 0 80.5 14.5q36.5 14.5 56.5 30.5zM304 448q-55 0 -95.5 -37.5q-40.5 -37.5 -61.5 -112.5q38 0 79 2q41 2 74.5 10.5q33.5 8.5 55.5 27q22 18.5 22 51.5q0 10 -3.5 20.5q-3.5 10.5 -11.5 19q-8 8.5 -22.5 14q-14.5 5.5 -36.5 5.5zt0 0zM374 720h84l-5 -21l-123 -128l-44 0z" />
-<glyph unicode="&#234;" horiz-adv-x="463" d="M389 49q-35 -30 -82.5 -45.5q-47.5 -15.5 -95.5 -15.5q-80 0 -120.5 46q-40.5 46 -40.5 128q0 82 23 147q23 65 60.5 110q37.5 45 85 69q47.5 24 97.5 24q36 0 62.5 -10q26.5 -10 43.5 -26.5q17 -16.5 25 -38q8 -21.5 8 -45.5q0 -71 -69 -111.5q-69 -40.5 -201 -40.5q-12 0 -25 0.5q-13 0.5 -27 1.5q-4 -19 -6 -36q-2 -17 -2 -30q0 -55 25 -89.5q25 -34.5 78 -34.5q44 0 80.5 14.5q36.5 14.5 56.5 30.5zM304 448q-55 0 -95.5 -37.5q-40.5 -37.5 -61.5 -112.5q38 0 79 2q41 2 74.5 10.5q33.5 8.5 55.5 27q22 18.5 22 51.5q0 10 -3.5 20.5q-3.5 10.5 -11.5 19q-8 8.5 -22.5 14q-14.5 5.5 -36.5 5.5zt0 0zM342 732h30l66 -182h-63l-24 66l-6 58l-34 -58l-57 -66l-68 0z" />
-<glyph unicode="&#235;" horiz-adv-x="463" d="M389 49q-35 -30 -82.5 -45.5q-47.5 -15.5 -95.5 -15.5q-80 0 -120.5 46q-40.5 46 -40.5 128q0 82 23 147q23 65 60.5 110q37.5 45 85 69q47.5 24 97.5 24q36 0 62.5 -10q26.5 -10 43.5 -26.5q17 -16.5 25 -38q8 -21.5 8 -45.5q0 -71 -69 -111.5q-69 -40.5 -201 -40.5q-12 0 -25 0.5q-13 0.5 -27 1.5q-4 -19 -6 -36q-2 -17 -2 -30q0 -55 25 -89.5q25 -34.5 78 -34.5q44 0 80.5 14.5q36.5 14.5 56.5 30.5zM304 448q-55 0 -95.5 -37.5q-40.5 -37.5 -61.5 -112.5q38 0 79 2q41 2 74.5 10.5q33.5 8.5 55.5 27q22 18.5 22 51.5q0 10 -3.5 20.5q-3.5 10.5 -11.5 19q-8 8.5 -22.5 14q-14.5 5.5 -36.5 5.5zt0 0zM195 653q0 22 12.5 36.5q12.5 14.5 33.5 14.5q21 0 34 -14.5q13 -14.5 13 -36.5q0 -20 -13 -34.5q-13 -14.5 -34 -14.5q-21 0 -33.5 14.5q-12.5 14.5 -12.5 34.5zt0 0zM378 654q0 21 12.5 35.5q12.5 14.5 33.5 14.5q22 0 34.5 -14.5q12.5 -14.5 12.5 -35.5q0 -21 -12.5 -35.5q-12.5 -14.5 -34.5 -14.5q-21 0 -33.5 14.5t-12.5 35.5z" />
-<glyph unicode="&#236;" horiz-adv-x="259" d="M160 500h75l-106 -500h-75zM247 571h-43l-81 128l4 21l91 0z" />
-<glyph unicode="&#237;" horiz-adv-x="259" d="M160 500h75l-106 -500h-75zM264 720h84l-5 -21l-123 -128l-44 0z" />
-<glyph unicode="&#238;" horiz-adv-x="259" d="M160 500h75l-106 -500h-75zM233 732h30l66 -182h-63l-24 66l-6 58l-34 -58l-57 -66l-68 0z" />
-<glyph unicode="&#239;" horiz-adv-x="259" d="M160 500h75l-106 -500h-75zM89 653q0 22 12.5 36.5q12.5 14.5 33.5 14.5q21 0 34 -14.5q13 -14.5 13 -36.5q0 -20 -13 -34.5q-13 -14.5 -34 -14.5q-21 0 -33.5 14.5q-12.5 14.5 -12.5 34.5zt0 0zM272 654q0 21 12.5 35.5q12.5 14.5 33.5 14.5q22 0 34.5 -14.5q12.5 -14.5 12.5 -35.5q0 -21 -12.5 -35.5q-12.5 -14.5 -34.5 -14.5q-21 0 -33.5 14.5t-12.5 35.5z" />
-<glyph unicode="&#240;" horiz-adv-x="496" d="M276 595l78 34q-16 20 -34.5 33.5q-18.5 13.5 -38.5 22.5l59 27q46 -19 76 -56l76 33l20 -41l-71 -31q16 -32 25 -72q9 -40 9 -89q0 -126 -23.5 -214.5q-23.5 -88.5 -61.5 -145q-38 -56.5 -86 -82.5q-48 -26 -97 -26q-39 0 -68.5 13q-29.5 13 -49 35.5q-19.5 22.5 -29 53.5q-9.5 31 -9.5 66q0 69 18.5 132.5q18.5 63.5 52.5 113q34 49.5 80 79q46 29.5 102 29.5q43 0 64 -11.5q21 -11.5 36 -28.5q1 70 -25 120l-81 -35zM130 164q0 -54 23 -83q23 -29 58 -29q53 0 88.5 35.5q35.5 35.5 57 86.5q21.5 51 30 108q8.5 57 8.5 100q-8 29 -33.5 46q-25.5 17 -60.5 17q-38 0 -69.5 -26q-31.5 -26 -54 -67q-22.5 -41 -35 -90.5t-12.5 -97.5z" />
-<glyph unicode="&#241;" horiz-adv-x="522" d="M320 0l67 316q4 18 7 35.5q3 17.5 3 31.5q0 29 -13.5 47q-13.5 18 -50.5 18q-26 0 -51 -12q-25 -12 -47 -30.5q-22 -18.5 -39.5 -41q-17.5 -22.5 -29.5 -44.5l-66 -320h-75l106 500h52l-4 -86h4q13 16 31 33.5q18 17.5 40.5 31.5q22.5 14 50.5 23.5q28 9.5 62 9.5q50 0 79 -24q29 -24 29 -84q0 -30 -9 -72l-71 -332zM220 656q32 33 55.5 45.5q23.5 12.5 41.5 12.5q15 0 27 -6.5q12 -6.5 23.5 -14q11.5 -7.5 23 -13.5q11.5 -6 25.5 -6q23 0 54 24l15 -43q-29 -29 -50 -40q-21 -11 -38 -11q-15 0 -27 6q-12 6 -23.5 13.5q-11.5 7.5 -23.5 13.5q-12 6 -27 6q-13 0 -28 -6.5q-15 -6.5 -35 -22.5z" />
-<glyph unicode="&#242;" horiz-adv-x="498" d="M50 156q0 79 20.5 144.5q20.5 65.5 56.5 112.5q36 47 83.5 73q47.5 26 101.5 26q42 0 71.5 -13.5q29.5 -13.5 48 -37q18.5 -23.5 26.5 -54q8 -30.5 8 -63.5q0 -75 -19.5 -140q-19.5 -65 -54 -113q-34.5 -48 -80.5 -75.5q-46 -27.5 -100 -27.5q-45 0 -75.5 14.5q-30.5 14.5 -50 38.5q-19.5 24 -28 54q-8.5 30 -8.5 61zt0 0zM130 174q0 -59 22 -90.5q22 -31.5 70 -31.5q33 0 62.5 23.5q29.5 23.5 52 63.5q22.5 40 36 91.5q13.5 51.5 13.5 107.5q0 51 -18.5 80.5q-18.5 29.5 -70.5 29.5q-33 0 -63 -22.5q-30 -22.5 -53.5 -60.5q-23.5 -38 -37 -87.5q-13.5 -49.5 -13.5 -103.5zt0 0zM355 571h-43l-81 128l4 21l91 0z" />
-<glyph unicode="&#243;" horiz-adv-x="498" d="M50 156q0 79 20.5 144.5q20.5 65.5 56.5 112.5q36 47 83.5 73q47.5 26 101.5 26q42 0 71.5 -13.5q29.5 -13.5 48 -37q18.5 -23.5 26.5 -54q8 -30.5 8 -63.5q0 -75 -19.5 -140q-19.5 -65 -54 -113q-34.5 -48 -80.5 -75.5q-46 -27.5 -100 -27.5q-45 0 -75.5 14.5q-30.5 14.5 -50 38.5q-19.5 24 -28 54q-8.5 30 -8.5 61zt0 0zM130 174q0 -59 22 -90.5q22 -31.5 70 -31.5q33 0 62.5 23.5q29.5 23.5 52 63.5q22.5 40 36 91.5q13.5 51.5 13.5 107.5q0 51 -18.5 80.5q-18.5 29.5 -70.5 29.5q-33 0 -63 -22.5q-30 -22.5 -53.5 -60.5q-23.5 -38 -37 -87.5q-13.5 -49.5 -13.5 -103.5zt0 0zM376 720h84l-5 -21l-123 -128l-44 0z" />
-<glyph unicode="&#244;" horiz-adv-x="498" d="M50 156q0 79 20.5 144.5q20.5 65.5 56.5 112.5q36 47 83.5 73q47.5 26 101.5 26q42 0 71.5 -13.5q29.5 -13.5 48 -37q18.5 -23.5 26.5 -54q8 -30.5 8 -63.5q0 -75 -19.5 -140q-19.5 -65 -54 -113q-34.5 -48 -80.5 -75.5q-46 -27.5 -100 -27.5q-45 0 -75.5 14.5q-30.5 14.5 -50 38.5q-19.5 24 -28 54q-8.5 30 -8.5 61zt0 0zM130 174q0 -59 22 -90.5q22 -31.5 70 -31.5q33 0 62.5 23.5q29.5 23.5 52 63.5q22.5 40 36 91.5q13.5 51.5 13.5 107.5q0 51 -18.5 80.5q-18.5 29.5 -70.5 29.5q-33 0 -63 -22.5q-30 -22.5 -53.5 -60.5q-23.5 -38 -37 -87.5q-13.5 -49.5 -13.5 -103.5zt0 0zM342 732h30l66 -182h-63l-24 66l-6 58l-34 -58l-57 -66l-68 0z" />
-<glyph unicode="&#245;" horiz-adv-x="498" d="M50 156q0 79 20.5 144.5q20.5 65.5 56.5 112.5q36 47 83.5 73q47.5 26 101.5 26q42 0 71.5 -13.5q29.5 -13.5 48 -37q18.5 -23.5 26.5 -54q8 -30.5 8 -63.5q0 -75 -19.5 -140q-19.5 -65 -54 -113q-34.5 -48 -80.5 -75.5q-46 -27.5 -100 -27.5q-45 0 -75.5 14.5q-30.5 14.5 -50 38.5q-19.5 24 -28 54q-8.5 30 -8.5 61zt0 0zM130 174q0 -59 22 -90.5q22 -31.5 70 -31.5q33 0 62.5 23.5q29.5 23.5 52 63.5q22.5 40 36 91.5q13.5 51.5 13.5 107.5q0 51 -18.5 80.5q-18.5 29.5 -70.5 29.5q-33 0 -63 -22.5q-30 -22.5 -53.5 -60.5q-23.5 -38 -37 -87.5q-13.5 -49.5 -13.5 -103.5zt0 0zM195 656q32 33 55.5 45.5q23.5 12.5 41.5 12.5q15 0 27 -6.5q12 -6.5 23.5 -14q11.5 -7.5 23 -13.5q11.5 -6 25.5 -6q23 0 54 24l15 -43q-29 -29 -50 -40q-21 -11 -38 -11q-15 0 -27 6q-12 6 -23.5 13.5q-11.5 7.5 -23.5 13.5q-12 6 -27 6q-13 0 -28 -6.5q-15 -6.5 -35 -22.5z" />
-<glyph unicode="&#246;" horiz-adv-x="498" d="M50 156q0 79 20.5 144.5q20.5 65.5 56.5 112.5q36 47 83.5 73q47.5 26 101.5 26q42 0 71.5 -13.5q29.5 -13.5 48 -37q18.5 -23.5 26.5 -54q8 -30.5 8 -63.5q0 -75 -19.5 -140q-19.5 -65 -54 -113q-34.5 -48 -80.5 -75.5q-46 -27.5 -100 -27.5q-45 0 -75.5 14.5q-30.5 14.5 -50 38.5q-19.5 24 -28 54q-8.5 30 -8.5 61zt0 0zM130 174q0 -59 22 -90.5q22 -31.5 70 -31.5q33 0 62.5 23.5q29.5 23.5 52 63.5q22.5 40 36 91.5q13.5 51.5 13.5 107.5q0 51 -18.5 80.5q-18.5 29.5 -70.5 29.5q-33 0 -63 -22.5q-30 -22.5 -53.5 -60.5q-23.5 -38 -37 -87.5q-13.5 -49.5 -13.5 -103.5zt0 0zM189 653q0 22 12.5 36.5q12.5 14.5 33.5 14.5q21 0 34 -14.5q13 -14.5 13 -36.5q0 -20 -13 -34.5q-13 -14.5 -34 -14.5q-21 0 -33.5 14.5q-12.5 14.5 -12.5 34.5zt0 0zM372 654q0 21 12.5 35.5q12.5 14.5 33.5 14.5q22 0 34.5 -14.5q12.5 -14.5 12.5 -35.5q0 -21 -12.5 -35.5q-12.5 -14.5 -34.5 -14.5q-21 0 -33.5 14.5t-12.5 35.5z" />
-<glyph unicode="&#247;" horiz-adv-x="480" d="M55 374h424v-72h-424zM210 525q0 27 16 42.5q16 15.5 42 15.5q26 0 42 -15.5q16 -15.5 16 -42.5q0 -26 -16 -42q-16 -16 -42 -16q-26 0 -42 16q-16 16 -16 42zt0 0zM210 151q0 27 16 42.5q16 15.5 42 15.5q26 0 42 -15.5q16 -15.5 16 -42.5q0 -26 -16 -42q-16 -16 -42 -16q-26 0 -42 16t-16 42z" />
-<glyph unicode="&#248;" horiz-adv-x="498" d="M50 156q0 79 20.5 144.5q20.5 65.5 56.5 112.5q36 47 83.5 73q47.5 26 101.5 26q35 0 61 -9.5q26 -9.5 45 -26.5l36 39l40 -37l-44 -50q8 -19 12 -40q4 -21 4 -44q0 -75 -19.5 -140q-19.5 -65 -54 -113q-34.5 -48 -80.5 -75.5q-46 -27.5 -100 -27.5q-40 0 -68.5 11.5q-28.5 11.5 -48.5 31.5l-40 -45l-42 38l50 56q-13 35 -13 76zt0 0zM386 338q0 5 0 10q0 5 -1 10l-239 -266q23 -40 76 -40q33 0 62.5 23.5q29.5 23.5 52 63.5q22.5 40 36 91.5q13.5 51.5 13.5 107.5zt0 0zM130 174q0 -6 0 -12q0 -6 1 -12l238 266q-21 32 -72 32q-33 0 -63 -22.5q-30 -22.5 -53.5 -60.5q-23.5 -38 -37 -87.5t-13.5 -103.5z" />
-<glyph unicode="&#249;" horiz-adv-x="511" d="M213 500l-70 -333q-6 -27 -6 -50q0 -28 11 -46.5q11 -18.5 40 -18.5q24 0 48.5 12q24.5 12 47 31q22.5 19 41 42q18.5 23 30.5 45l67 318h75l-63 -297q-4 -17 -8 -41.5q-4 -24.5 -7.5 -51.5q-3.5 -27 -5.5 -52.5q-2 -25.5 -2 -44.5v-13h-59v95h-4q-15 -20 -34.5 -39q-19.5 -19 -43 -34q-23.5 -15 -50.5 -24.5q-27 -9.5 -57 -9.5q-22 0 -40.5 5q-18.5 5 -32.5 17.5q-14 12.5 -22 33q-8 20.5 -8 52.5q0 35 10 79l68 325zM366 571h-43l-81 128l4 21l91 0z" />
-<glyph unicode="&#250;" horiz-adv-x="511" d="M213 500l-70 -333q-6 -27 -6 -50q0 -28 11 -46.5q11 -18.5 40 -18.5q24 0 48.5 12q24.5 12 47 31q22.5 19 41 42q18.5 23 30.5 45l67 318h75l-63 -297q-4 -17 -8 -41.5q-4 -24.5 -7.5 -51.5q-3.5 -27 -5.5 -52.5q-2 -25.5 -2 -44.5v-13h-59v95h-4q-15 -20 -34.5 -39q-19.5 -19 -43 -34q-23.5 -15 -50.5 -24.5q-27 -9.5 -57 -9.5q-22 0 -40.5 5q-18.5 5 -32.5 17.5q-14 12.5 -22 33q-8 20.5 -8 52.5q0 35 10 79l68 325zM377 720h84l-5 -21l-123 -128l-44 0z" />
-<glyph unicode="&#251;" horiz-adv-x="511" d="M213 500l-70 -333q-6 -27 -6 -50q0 -28 11 -46.5q11 -18.5 40 -18.5q24 0 48.5 12q24.5 12 47 31q22.5 19 41 42q18.5 23 30.5 45l67 318h75l-63 -297q-4 -17 -8 -41.5q-4 -24.5 -7.5 -51.5q-3.5 -27 -5.5 -52.5q-2 -25.5 -2 -44.5v-13h-59v95h-4q-15 -20 -34.5 -39q-19.5 -19 -43 -34q-23.5 -15 -50.5 -24.5q-27 -9.5 -57 -9.5q-22 0 -40.5 5q-18.5 5 -32.5 17.5q-14 12.5 -22 33q-8 20.5 -8 52.5q0 35 10 79l68 325zM355 732h30l66 -182h-63l-24 66l-6 58l-34 -58l-57 -66l-68 0z" />
-<glyph unicode="&#252;" horiz-adv-x="511" d="M213 500l-70 -333q-6 -27 -6 -50q0 -28 11 -46.5q11 -18.5 40 -18.5q24 0 48.5 12q24.5 12 47 31q22.5 19 41 42q18.5 23 30.5 45l67 318h75l-63 -297q-4 -17 -8 -41.5q-4 -24.5 -7.5 -51.5q-3.5 -27 -5.5 -52.5q-2 -25.5 -2 -44.5v-13h-59v95h-4q-15 -20 -34.5 -39q-19.5 -19 -43 -34q-23.5 -15 -50.5 -24.5q-27 -9.5 -57 -9.5q-22 0 -40.5 5q-18.5 5 -32.5 17.5q-14 12.5 -22 33q-8 20.5 -8 52.5q0 35 10 79l68 325zM210 653q0 22 12.5 36.5q12.5 14.5 33.5 14.5q21 0 34 -14.5q13 -14.5 13 -36.5q0 -20 -13 -34.5q-13 -14.5 -34 -14.5q-21 0 -33.5 14.5q-12.5 14.5 -12.5 34.5zt0 0zM393 654q0 21 12.5 35.5q12.5 14.5 33.5 14.5q22 0 34.5 -14.5q12.5 -14.5 12.5 -35.5q0 -21 -12.5 -35.5q-12.5 -14.5 -34.5 -14.5q-21 0 -33.5 14.5t-12.5 35.5z" />
-<glyph unicode="&#253;" horiz-adv-x="439" d="M194 176l5 -96h5l38 97l166 323h80l-236 -446q-26 -49 -51.5 -95.5q-25.5 -46.5 -52.5 -83q-27 -36.5 -56 -58.5q-29 -22 -60 -22q-17 0 -29.5 2q-12.5 2 -22.5 7l24 69q11 -4 24 -4q29 0 58 30q29 30 65 101l-86 500h80zM337 720h84l-5 -21l-123 -128l-44 0z" />
-<glyph unicode="&#254;" horiz-adv-x="508" d="M188 700h75l-62 -274h4q14 17 30 32.5q16 15.5 35 27.5q19 12 42.5 19q23.5 7 52.5 7q24 0 45 -7.5q21 -7.5 37 -25q16 -17.5 25.5 -46.5q9.5 -29 9.5 -71q0 -88 -24 -157.5q-24 -69.5 -63 -117.5q-39 -48 -87.5 -73.5q-48.5 -25.5 -96.5 -25.5q-35 0 -61.5 6.5q-26.5 6.5 -35.5 13.5l-44 -208h-75zM337 448q-27 0 -51.5 -14q-24.5 -14 -45 -34.5q-20.5 -20.5 -36.5 -44q-16 -23.5 -26 -43.5l-49 -237q17 -13 35 -18q18 -5 39 -5q39 0 74.5 21.5q35.5 21.5 63.5 61.5q28 40 44.5 96q16.5 56 16.5 125q0 40 -16.5 66t-48.5 26z" />
-<glyph unicode="&#255;" horiz-adv-x="439" d="M194 176l5 -96h5l38 97l166 323h80l-236 -446q-26 -49 -51.5 -95.5q-25.5 -46.5 -52.5 -83q-27 -36.5 -56 -58.5q-29 -22 -60 -22q-17 0 -29.5 2q-12.5 2 -22.5 7l24 69q11 -4 24 -4q29 0 58 30q29 30 65 101l-86 500h80zM150 653q0 22 12.5 36.5q12.5 14.5 33.5 14.5q21 0 34 -14.5q13 -14.5 13 -36.5q0 -20 -13 -34.5q-13 -14.5 -34 -14.5q-21 0 -33.5 14.5q-12.5 14.5 -12.5 34.5zt0 0zM333 654q0 21 12.5 35.5q12.5 14.5 33.5 14.5q22 0 34.5 -14.5q12.5 -14.5 12.5 -35.5q0 -21 -12.5 -35.5q-12.5 -14.5 -34.5 -14.5q-21 0 -33.5 14.5t-12.5 35.5z" />
-<glyph unicode="&#256;" horiz-adv-x="557" d="M404 194h-244l-108 -194h-85l404 711h37l101 -711h-77zM199 266h197l-29 213l-2 106h-1l-45 -108zM260 843h300l-13 -62l-301 0z" />
-<glyph unicode="&#257;" horiz-adv-x="487" d="M414 197q-8 -37 -11 -75q-3 -38 -3 -71q0 -15 0 -28.5q0 -13.5 2 -24.5l-56 0l-14 87h-4q-12 -17 -29.5 -34.5q-17.5 -17.5 -38.5 -31.5q-21 -14 -45 -22.5q-24 -8.5 -51 -8.5q-119 0 -119 155q0 64 16.5 130q16.5 66 51 119q34.5 53 89 87q54.5 34 131.5 34q28 0 68.5 -6.5q40.5 -6.5 75.5 -17.5zM187 52q24 0 46 11.5q22 11.5 41.5 28.5q19.5 17 34.5 36.5q15 19.5 24 36.5l56 270q-30 14 -76 14q-46 0 -81 -27q-35 -27 -59 -70.5q-24 -43.5 -36 -98.5q-12 -55 -12 -110q0 -38 15 -64.5q15 -26.5 47 -26.5zt0 0zM207 643h281l-13 -62l-282 0z" />
-<glyph unicode="&#258;" horiz-adv-x="557" d="M404 194h-244l-108 -194h-85l404 711h37l101 -711h-77zM199 266h197l-29 213l-2 106h-1l-45 -108zM294 871q11 -35 36 -53.5q25 -18.5 64 -18.5q32 0 55 6q23 6 40 15.5q17 9.5 30 22.5q13 13 24 28l41 -19q-25 -60 -74 -91q-49 -31 -119 -31q-29 0 -53 9.5q-24 9.5 -41.5 25.5q-17.5 16 -28 37.5q-10.5 21.5 -13.5 44.5z" />
-<glyph unicode="&#259;" horiz-adv-x="487" d="M414 197q-8 -37 -11 -75q-3 -38 -3 -71q0 -15 0 -28.5q0 -13.5 2 -24.5l-56 0l-14 87h-4q-12 -17 -29.5 -34.5q-17.5 -17.5 -38.5 -31.5q-21 -14 -45 -22.5q-24 -8.5 -51 -8.5q-119 0 -119 155q0 64 16.5 130q16.5 66 51 119q34.5 53 89 87q54.5 34 131.5 34q28 0 68.5 -6.5q40.5 -6.5 75.5 -17.5zM187 52q24 0 46 11.5q22 11.5 41.5 28.5q19.5 17 34.5 36.5q15 19.5 24 36.5l56 270q-30 14 -76 14q-46 0 -81 -27q-35 -27 -59 -70.5q-24 -43.5 -36 -98.5q-12 -55 -12 -110q0 -38 15 -64.5q15 -26.5 47 -26.5zt0 0zM263 720q9 -36 27.5 -56.5q18.5 -20.5 53.5 -20.5q38 0 70.5 20.5q32.5 20.5 55.5 56.5l35 -18q-8 -24 -24.5 -47.5q-16.5 -23.5 -39 -41.5q-22.5 -18 -50 -29q-27.5 -11 -55.5 -11q-52 0 -85.5 33.5q-33.5 33.5 -35.5 90.5z" />
-<glyph unicode="&#260;" horiz-adv-x="557" d="M404 194h-244l-108 -194h-85l404 711h37l101 -711h-21q-15 -8 -28.5 -17q-13.5 -9 -24.5 -20.5q-11 -11.5 -17 -26.5q-6 -15 -7 -32q0 -17 9.5 -28.5q9.5 -11.5 31.5 -11.5q19 0 42 8l1 -43q-19 -13 -43 -18.5q-24 -5.5 -43 -5.5q-34 0 -57 18.5q-23 18.5 -23 55.5q2 41 31 72.5q29 31.5 71 48.5zM199 265h197l-29 215q-1 18 -1 48.5q0 30.5 -1 56.5l-1 0l-45 -108z" />
-<glyph unicode="&#261;" horiz-adv-x="487" d="M414 197q-8 -37 -11 -75q-3 -38 -3 -71q0 -15 0 -28.5q0 -13.5 2 -24.5l-27 0q-31 -16 -51.5 -39q-20.5 -23 -20.5 -55q0 -17 9 -28.5q9 -11.5 32 -11.5q19 0 41 8l1 -43q-17 -13 -41 -18.5q-24 -5.5 -44 -5.5q-34 -1 -57 17.5q-23 18.5 -23 55.5q0 21 7.5 39q7.5 18 21.5 33.5q14 15.5 37 31q23 15.5 57 25.5l-12 78h-4q-12 -17 -29.5 -34.5q-17.5 -17.5 -38.5 -31.5q-21 -14 -45 -22.5q-24 -8.5 -51 -8.5q-119 0 -119 155q0 64 16.5 130q16.5 66 51 119q34.5 53 89 87q54.5 34 131.5 34q28 0 68.5 -6.5q40.5 -6.5 75.5 -17.5zM187 52q24 0 46 11.5q22 11.5 41.5 28.5q19.5 17 34.5 36.5q15 19.5 24 36.5l56 270q-30 14 -76 14q-46 0 -81 -27q-35 -27 -59 -70.5q-24 -43.5 -36 -98.5q-12 -55 -12 -110q0 -38 15 -64.5t47 -26.5z" />
-<glyph unicode="&#262;" horiz-adv-x="544" d="M480 29q-34 -23 -72 -32q-38 -9 -88 -9q-59 0 -105 21.5q-46 21.5 -78 60q-32 38.5 -49 90.5q-17 52 -17 114q0 113 33 195.5q33 82.5 87 136.5q54 54 121.5 80q67.5 26 136.5 26q57 0 93 -8q36 -8 59 -19l-36 -73q-20 11 -52.5 18.5q-32.5 7.5 -74.5 7.5q-56 0 -107.5 -24.5q-51.5 -24.5 -90.5 -70.5q-39 -46 -62 -112q-23 -66 -23 -148q0 -48 12.5 -88.5q12.5 -40.5 36 -70q23.5 -29.5 58 -46q34.5 -16.5 78.5 -16.5q47 0 78 10.5q31 10.5 56 24.5zM534 870h116l-5 -21l-175 -97l-73 0z" />
-<glyph unicode="&#263;" horiz-adv-x="420" d="M365 43q-15 -13 -34.5 -23q-19.5 -10 -40 -17q-20.5 -7 -40.5 -11q-20 -4 -38 -4q-49 0 -80.5 15.5q-31.5 15.5 -49.5 39.5q-18 24 -25 52q-7 28 -7 53q0 85 23 152.5q23 67.5 61.5 114.5q38.5 47 88.5 72q50 25 103 25q38 0 62.5 -7q24.5 -7 44.5 -16l-28 -62q-17 10 -42 15.5q-25 5.5 -54 5.5q-34 0 -66.5 -23q-32.5 -23 -57.5 -60.5q-25 -37.5 -40 -86q-15 -48.5 -15 -99.5q0 -65 27 -96q27 -31 73 -31q30 0 63 13.5q33 13.5 53 27.5zM384 720h84l-5 -21l-123 -128l-44 0z" />
-<glyph unicode="&#264;" horiz-adv-x="544" d="M480 29q-34 -23 -72 -32q-38 -9 -88 -9q-59 0 -105 21.5q-46 21.5 -78 60q-32 38.5 -49 90.5q-17 52 -17 114q0 113 33 195.5q33 82.5 87 136.5q54 54 121.5 80q67.5 26 136.5 26q57 0 93 -8q36 -8 59 -19l-36 -73q-20 11 -52.5 18.5q-32.5 7.5 -74.5 7.5q-56 0 -107.5 -24.5q-51.5 -24.5 -90.5 -70.5q-39 -46 -62 -112q-23 -66 -23 -148q0 -48 12.5 -88.5q12.5 -40.5 36 -70q23.5 -29.5 58 -46q34.5 -16.5 78.5 -16.5q47 0 78 10.5q31 10.5 56 24.5zM455 870h48l99 -102l-4 -21h-68l-46 49l-10 35l-25 -34l-71 -50h-75l5 22z" />
-<glyph unicode="&#265;" horiz-adv-x="420" d="M365 43q-15 -13 -34.5 -23q-19.5 -10 -40 -17q-20.5 -7 -40.5 -11q-20 -4 -38 -4q-49 0 -80.5 15.5q-31.5 15.5 -49.5 39.5q-18 24 -25 52q-7 28 -7 53q0 85 23 152.5q23 67.5 61.5 114.5q38.5 47 88.5 72q50 25 103 25q38 0 62.5 -7q24.5 -7 44.5 -16l-28 -62q-17 10 -42 15.5q-25 5.5 -54 5.5q-34 0 -66.5 -23q-32.5 -23 -57.5 -60.5q-25 -37.5 -40 -86q-15 -48.5 -15 -99.5q0 -65 27 -96q27 -31 73 -31q30 0 63 13.5q33 13.5 53 27.5zM335 732h30l66 -182h-63l-24 66l-6 58l-34 -58l-57 -66l-68 0z" />
-<glyph unicode="&#268;" horiz-adv-x="544" d="M480 29q-34 -23 -72 -32q-38 -9 -88 -9q-59 0 -105 21.5q-46 21.5 -78 60q-32 38.5 -49 90.5q-17 52 -17 114q0 113 33 195.5q33 82.5 87 136.5q54 54 121.5 80q67.5 26 136.5 26q57 0 93 -8q36 -8 59 -19l-36 -73q-20 11 -52.5 18.5q-32.5 7.5 -74.5 7.5q-56 0 -107.5 -24.5q-51.5 -24.5 -90.5 -70.5q-39 -46 -62 -112q-23 -66 -23 -148q0 -48 12.5 -88.5q12.5 -40.5 36 -70q23.5 -29.5 58 -46q34.5 -16.5 78.5 -16.5q47 0 78 10.5q31 10.5 56 24.5zM477 746h-47l-97 103l3 21h67l46 -50l9 -34l24 33l71 51h76l-4 -22z" />
-<glyph unicode="&#269;" horiz-adv-x="420" d="M365 43q-15 -13 -34.5 -23q-19.5 -10 -40 -17q-20.5 -7 -40.5 -11q-20 -4 -38 -4q-49 0 -80.5 15.5q-31.5 15.5 -49.5 39.5q-18 24 -25 52q-7 28 -7 53q0 85 23 152.5q23 67.5 61.5 114.5q38.5 47 88.5 72q50 25 103 25q38 0 62.5 -7q24.5 -7 44.5 -16l-28 -62q-17 10 -42 15.5q-25 5.5 -54 5.5q-34 0 -66.5 -23q-32.5 -23 -57.5 -60.5q-25 -37.5 -40 -86q-15 -48.5 -15 -99.5q0 -65 27 -96q27 -31 73 -31q30 0 63 13.5q33 13.5 53 27.5zM327 550h-35l-71 182h72l23 -66l7 -58l34 58l56 66l70 0z" />
-<glyph unicode="&#270;" horiz-adv-x="622" d="M189 700q38 5 86 6.5q48 1.5 87 1.5q59 0 107 -15.5q48 -15.5 81.5 -47.5q33.5 -32 51.5 -81q18 -49 18 -115q0 -44 -8 -95.5q-8 -51.5 -26.5 -102q-18.5 -50.5 -49.5 -97.5q-31 -47 -77 -83.5q-46 -36.5 -108 -58q-62 -21.5 -143 -21.5q-15 0 -39.5 0.5q-24.5 0.5 -48.5 1.5q-70 4 -80 6zM356 634q-12 0 -27 -0.5q-15 -0.5 -29 -1q-14 -0.5 -27 -1.5q-13 -1 -20 -2l-118 -560q4 -1 16 -1.5q12 -0.5 25.5 -1q13.5 -0.5 26 -1q12.5 -0.5 17.5 -0.5q87 0 147 36q60 36 97.5 91q37.5 55 54.5 121q17 66 17 125q0 45 -10 81q-10 36 -31.5 61.5q-21.5 25.5 -55.5 39.5q-34 14 -83 14zt0 0zM405 746h-47l-97 103l3 21h67l46 -50l9 -34l24 33l71 51h76l-4 -22z" />
-<glyph unicode="&#271;" horiz-adv-x="509" d="M419 172q-8 -39 -12 -73q-4 -34 -4 -63q0 -11 0.5 -20q0.5 -9 1.5 -18l-50 0l-14 87h-4q-12 -17 -30 -34.5q-18 -17.5 -40 -31.5q-22 -14 -46.5 -22.5q-24.5 -8.5 -50.5 -8.5q-55 0 -87.5 40.5q-32.5 40.5 -32.5 128.5q0 59 17 121.5q17 62.5 50 113.5q33 51 82.5 84q49.5 33 114.5 33q18 0 31 -1q13 -1 24.5 -3q11.5 -2 21.5 -5.5q10 -3.5 21 -7.5l44 208h75zM198 52q21 0 43 11.5q22 11.5 41.5 28.5q19.5 17 35 36.5q15.5 19.5 24.5 36.5l56 260q-17 11 -38.5 15.5q-21.5 4.5 -56.5 4.5q-40 0 -72 -24.5q-32 -24.5 -54.5 -65.5q-22.5 -41 -34.5 -94q-12 -53 -12 -109q0 -41 16 -70.5q16 -29.5 52 -29.5zt0 0zM677 700q-8 -29 -23.5 -59.5q-15.5 -30.5 -33.5 -56.5q-18 -26 -34.5 -46q-16.5 -20 -26.5 -29l-27 18q24 36 41.5 81.5q17.5 45.5 27.5 91.5z" />
-<glyph unicode="&#272;" horiz-adv-x="626" d="M41 392h86l66 308q38 5 86 6.5q48 1.5 87 1.5q58 0 106 -15.5q48 -15.5 81.5 -47.5q33.5 -32 51.5 -81q18 -49 18 -115q0 -44 -8 -95.5q-8 -51.5 -26.5 -102q-18.5 -50.5 -49.5 -97.5q-31 -47 -77 -83.5q-46 -36.5 -107.5 -58q-61.5 -21.5 -142.5 -21.5q-15 0 -39.5 0.5q-24.5 0.5 -50.5 1.5q-68 4 -78 6l71 333h-87zM360 634q-12 0 -27 -0.5q-15 -0.5 -29 -1q-14 -0.5 -27 -1.5q-13 -1 -20 -2l-50 -237h137l-12 -60h-138l-55 -263q4 -1 16 -1.5q12 -0.5 25.5 -1q13.5 -0.5 26 -1q12.5 -0.5 17.5 -0.5q87 0 146.5 36q59.5 36 97 91q37.5 55 54.5 121q17 66 17 125q0 45 -10 81q-10 36 -31.5 61.5q-21.5 25.5 -55.5 39.5t-82 14z" />
-<glyph unicode="&#273;" horiz-adv-x="509" d="M516 632h87l-12 -60h-87l-85 -400q-8 -39 -12 -73q-4 -34 -4 -63q0 -11 0.5 -20q0.5 -9 1.5 -18l-50 0l-14 87h-4q-12 -17 -30 -34.5q-18 -17.5 -40 -31.5q-22 -14 -46.5 -22.5q-24.5 -8.5 -50.5 -8.5q-55 0 -87.5 40.5q-32.5 40.5 -32.5 128.5q0 59 17 121.5q17 62.5 50 113.5q33 51 82.5 84q49.5 33 114.5 33q18 0 31 -1q13 -1 24.5 -3q11.5 -2 21.5 -5.5q10 -3.5 21 -7.5l17 80h-140l12 60h140l15 68h75zM198 52q21 0 43 11.5q22 11.5 41.5 28.5q19.5 17 35 36.5q15.5 19.5 24.5 36.5l56 260q-17 11 -38.5 15.5q-21.5 4.5 -56.5 4.5q-40 0 -72 -24.5q-32 -24.5 -54.5 -65.5q-22.5 -41 -34.5 -94q-12 -53 -12 -109q0 -41 16 -70.5t52 -29.5z" />
-<glyph unicode="&#274;" horiz-adv-x="510" d="M189 700h361l-15 -74h-283l-49 -229h259l-15 -74h-259l-53 -249h288l-16 -74h-288h-79zM238 843h300l-13 -62l-301 0z" />
-<glyph unicode="&#275;" horiz-adv-x="463" d="M389 49q-35 -30 -82.5 -45.5q-47.5 -15.5 -95.5 -15.5q-80 0 -120.5 46q-40.5 46 -40.5 128q0 82 23 147q23 65 60.5 110q37.5 45 85 69q47.5 24 97.5 24q36 0 62.5 -10q26.5 -10 43.5 -26.5q17 -16.5 25 -38q8 -21.5 8 -45.5q0 -71 -69 -111.5q-69 -40.5 -201 -40.5q-12 0 -25 0.5q-13 0.5 -27 1.5q-4 -19 -6 -36q-2 -17 -2 -30q0 -55 25 -89.5q25 -34.5 78 -34.5q44 0 80.5 14.5q36.5 14.5 56.5 30.5zM304 448q-55 0 -95.5 -37.5q-40.5 -37.5 -61.5 -112.5q38 0 79 2q41 2 74.5 10.5q33.5 8.5 55.5 27q22 18.5 22 51.5q0 10 -3.5 20.5q-3.5 10.5 -11.5 19q-8 8.5 -22.5 14q-14.5 5.5 -36.5 5.5zt0 0zM192 643h281l-13 -62l-282 0z" />
-<glyph unicode="&#278;" horiz-adv-x="510" d="M189 700h361l-15 -74h-283l-49 -229h259l-15 -74h-259l-53 -249h288l-16 -74h-288h-79zM330 796q0 23 17 38q17 15 42 15q26 0 43 -15q17 -15 17 -38q0 -22 -17 -37q-17 -15 -43 -15q-25 0 -42 15t-17 37z" />
-<glyph unicode="&#279;" horiz-adv-x="463" d="M389 49q-35 -30 -82.5 -45.5q-47.5 -15.5 -95.5 -15.5q-80 0 -120.5 46q-40.5 46 -40.5 128q0 82 23 147q23 65 60.5 110q37.5 45 85 69q47.5 24 97.5 24q36 0 62.5 -10q26.5 -10 43.5 -26.5q17 -16.5 25 -38q8 -21.5 8 -45.5q0 -71 -69 -111.5q-69 -40.5 -201 -40.5q-12 0 -25 0.5q-13 0.5 -27 1.5q-4 -19 -6 -36q-2 -17 -2 -30q0 -55 25 -89.5q25 -34.5 78 -34.5q44 0 80.5 14.5q36.5 14.5 56.5 30.5zM304 448q-55 0 -95.5 -37.5q-40.5 -37.5 -61.5 -112.5q38 0 79 2q41 2 74.5 10.5q33.5 8.5 55.5 27q22 18.5 22 51.5q0 10 -3.5 20.5q-3.5 10.5 -11.5 19q-8 8.5 -22.5 14q-14.5 5.5 -36.5 5.5zt0 0zM289 653q0 23 15.5 39q15.5 16 38.5 16q23 0 39 -16q16 -16 16 -39q0 -23 -16 -38.5q-16 -15.5 -39 -15.5q-23 0 -38.5 15.5t-15.5 38.5z" />
-<glyph unicode="&#280;" horiz-adv-x="510" d="M189 700h361l-15 -74h-283l-49 -229h259l-15 -74h-259l-53 -249h288l-16 -74h-27q-31 -15 -54 -38q-23 -23 -23 -58q0 -17 9.5 -28.5q9.5 -11.5 31.5 -11.5q19 0 42 8l1 -43q-18 -13 -42 -18.5q-24 -5.5 -44 -5.5q-35 0 -57.5 18q-22.5 18 -22.5 55q0 44 30 74.5q30 30.5 71 47.5l-202 0l-80 0z" />
-<glyph unicode="&#281;" horiz-adv-x="463" d="M389 49q-34 -29 -81 -45q-30 -17 -54 -43q-24 -26 -26 -61q0 -17 10.5 -28.5q10.5 -11.5 25.5 -10.5q22 1 45 10l1 -42q-17 -12 -42 -18q-25 -6 -45 -6q-37 0 -56.5 18q-19.5 18 -20.5 49q-1 10 2 22q5 26 27 51.5q22 25.5 51 43.5l-15 -1q-80 0 -120.5 46q-40.5 46 -40.5 128q0 82 23 147q23 65 60.5 110q37.5 45 85 69q47.5 24 97.5 24q36 0 62.5 -10q26.5 -10 43.5 -26.5q17 -16.5 25 -38q8 -21.5 8 -45.5q0 -71 -69 -111.5q-69 -40.5 -201 -40.5q-12 0 -25.5 0.5q-13.5 0.5 -27.5 1.5q-4 -19 -5.5 -36q-1.5 -17 -1.5 -30q1 -55 25.5 -89.5q24.5 -34.5 77.5 -34.5q44 0 80.5 14.5q36.5 14.5 56.5 30.5zM304 448q-55 0 -95.5 -37.5q-40.5 -37.5 -61.5 -112.5q38 0 79 2q41 2 74.5 10.5q33.5 8.5 55.5 27q22 18.5 22 51.5q0 10 -3.5 20.5q-3.5 10.5 -11.5 19q-8 8.5 -22.5 14t-36.5 5.5z" />
-<glyph unicode="&#282;" horiz-adv-x="510" d="M189 700h361l-15 -74h-283l-49 -229h259l-15 -74h-259l-53 -249h288l-16 -74h-288h-79zM393 746h-47l-97 103l3 21h67l46 -50l9 -34l24 33l71 51h76l-4 -22z" />
-<glyph unicode="&#283;" horiz-adv-x="463" d="M389 49q-35 -30 -82.5 -45.5q-47.5 -15.5 -95.5 -15.5q-80 0 -120.5 46q-40.5 46 -40.5 128q0 82 23 147q23 65 60.5 110q37.5 45 85 69q47.5 24 97.5 24q36 0 62.5 -10q26.5 -10 43.5 -26.5q17 -16.5 25 -38q8 -21.5 8 -45.5q0 -71 -69 -111.5q-69 -40.5 -201 -40.5q-12 0 -25 0.5q-13 0.5 -27 1.5q-4 -19 -6 -36q-2 -17 -2 -30q0 -55 25 -89.5q25 -34.5 78 -34.5q44 0 80.5 14.5q36.5 14.5 56.5 30.5zM304 448q-55 0 -95.5 -37.5q-40.5 -37.5 -61.5 -112.5q38 0 79 2q41 2 74.5 10.5q33.5 8.5 55.5 27q22 18.5 22 51.5q0 10 -3.5 20.5q-3.5 10.5 -11.5 19q-8 8.5 -22.5 14q-14.5 5.5 -36.5 5.5zt0 0zM335 550h-35l-71 182h72l23 -66l7 -58l34 58l56 66l70 0z" />
-<glyph unicode="&#284;" horiz-adv-x="583" d="M375 349h116h68l-65 -308q-71 -53 -176 -53q-50 0 -94.5 18q-44.5 18 -78.5 53.5q-34 35.5 -54 88.5q-20 53 -20 124q0 123 36 207q36 84 92.5 135.5q56.5 51.5 124.5 74.5q68 23 132 23q57 0 94.5 -7.5q37.5 -7.5 60.5 -18.5l-35 -73q-20 11 -53.5 18q-33.5 7 -75.5 7q-58 0 -110.5 -22.5q-52.5 -22.5 -93 -67.5q-40.5 -45 -64.5 -111.5q-24 -66.5 -24 -154.5q0 -45 11 -85q11 -40 33.5 -70q22.5 -30 56 -47.5q33.5 -17.5 79.5 -17.5q32 0 55 6.5q23 6.5 46 18.5l41 195l-112 20zM466 870h48l99 -102l-4 -21h-68l-46 49l-10 35l-25 -34l-71 -50h-75l5 22z" />
-<glyph unicode="&#285;" horiz-adv-x="505" d="M385 -23q-21 -98 -72.5 -143.5q-51.5 -45.5 -136.5 -45.5q-65 0 -107 16.5q-42 16.5 -64 28.5l33 56q8 -4 19.5 -10.5q11.5 -6.5 28 -12.5q16.5 -6 40 -10q23.5 -4 55.5 -4q50 0 84 36q34 36 51 113l18 84h-4q-14 -19 -30.5 -36q-16.5 -17 -36.5 -30.5q-20 -13.5 -43.5 -21.5q-23.5 -8 -51.5 -8q-54 0 -87 39q-33 39 -33 111q0 67 18.5 133q18.5 66 55 118.5q36.5 52.5 90 85.5q53.5 33 123.5 33q54 0 91 -9q37 -9 65 -22zM196 53q25 0 49.5 13q24.5 13 45 33.5q20.5 20.5 37 44.5q16.5 24 27.5 45l51 241q-16 9 -39 12q-23 3 -47 3q-41 0 -76 -24q-35 -24 -60.5 -64.5q-25.5 -40.5 -40.5 -93.5q-15 -53 -15 -111q0 -46 18.5 -72.5q18.5 -26.5 49.5 -26.5zt0 0zM364 732h30l66 -182h-63l-24 66l-6 58l-34 -58l-57 -66l-68 0z" />
-<glyph unicode="&#286;" horiz-adv-x="583" d="M375 349h116h68l-65 -308q-71 -53 -176 -53q-50 0 -94.5 18q-44.5 18 -78.5 53.5q-34 35.5 -54 88.5q-20 53 -20 124q0 123 36 207q36 84 92.5 135.5q56.5 51.5 124.5 74.5q68 23 132 23q57 0 94.5 -7.5q37.5 -7.5 60.5 -18.5l-35 -73q-20 11 -53.5 18q-33.5 7 -75.5 7q-58 0 -110.5 -22.5q-52.5 -22.5 -93 -67.5q-40.5 -45 -64.5 -111.5q-24 -66.5 -24 -154.5q0 -45 11 -85q11 -40 33.5 -70q22.5 -30 56 -47.5q33.5 -17.5 79.5 -17.5q32 0 55 6.5q23 6.5 46 18.5l41 195l-112 20zM362 871q11 -35 36 -53.5q25 -18.5 64 -18.5q32 0 55 6q23 6 40 15.5q17 9.5 30 22.5q13 13 24 28l41 -19q-25 -60 -74 -91q-49 -31 -119 -31q-29 0 -53 9.5q-24 9.5 -41.5 25.5q-17.5 16 -28 37.5q-10.5 21.5 -13.5 44.5z" />
-<glyph unicode="&#287;" horiz-adv-x="505" d="M385 -23q-21 -98 -72.5 -143.5q-51.5 -45.5 -136.5 -45.5q-65 0 -107 16.5q-42 16.5 -64 28.5l33 56q8 -4 19.5 -10.5q11.5 -6.5 28 -12.5q16.5 -6 40 -10q23.5 -4 55.5 -4q50 0 84 36q34 36 51 113l18 84h-4q-14 -19 -30.5 -36q-16.5 -17 -36.5 -30.5q-20 -13.5 -43.5 -21.5q-23.5 -8 -51.5 -8q-54 0 -87 39q-33 39 -33 111q0 67 18.5 133q18.5 66 55 118.5q36.5 52.5 90 85.5q53.5 33 123.5 33q54 0 91 -9q37 -9 65 -22zM196 53q25 0 49.5 13q24.5 13 45 33.5q20.5 20.5 37 44.5q16.5 24 27.5 45l51 241q-16 9 -39 12q-23 3 -47 3q-41 0 -76 -24q-35 -24 -60.5 -64.5q-25.5 -40.5 -40.5 -93.5q-15 -53 -15 -111q0 -46 18.5 -72.5q18.5 -26.5 49.5 -26.5zt0 0zM268 720q9 -36 27.5 -56.5q18.5 -20.5 53.5 -20.5q38 0 70.5 20.5q32.5 20.5 55.5 56.5l35 -18q-8 -24 -24.5 -47.5q-16.5 -23.5 -39 -41.5q-22.5 -18 -50 -29q-27.5 -11 -55.5 -11q-52 0 -85.5 33.5q-33.5 33.5 -35.5 90.5z" />
-<glyph unicode="&#290;" horiz-adv-x="583" d="M375 349h116h68l-65 -308q-71 -53 -176 -53q-50 0 -94.5 18q-44.5 18 -78.5 53.5q-34 35.5 -54 88.5q-20 53 -20 124q0 123 36 207q36 84 92.5 135.5q56.5 51.5 124.5 74.5q68 23 132 23q57 0 94.5 -7.5q37.5 -7.5 60.5 -18.5l-35 -73q-20 11 -53.5 18q-33.5 7 -75.5 7q-58 0 -110.5 -22.5q-52.5 -22.5 -93 -67.5q-40.5 -45 -64.5 -111.5q-24 -66.5 -24 -154.5q0 -45 11 -85q11 -40 33.5 -70q22.5 -30 56 -47.5q33.5 -17.5 79.5 -17.5q32 0 55 6.5q23 6.5 46 18.5l41 195l-112 20zM254 -105q0 23 18 36.5q18 13.5 38 13.5q26 0 37 -16q11 -16 11 -40q0 -29 -12 -52q-12 -23 -28.5 -40q-16.5 -17 -33.5 -28q-17 -11 -28 -14l-18 32q20 11 36 27q16 16 20 40q-20 0 -30 11t-10 30z" />
-<glyph unicode="&#291;" horiz-adv-x="505" d="M385 -23q-21 -98 -72.5 -143.5q-51.5 -45.5 -136.5 -45.5q-65 0 -107 16.5q-42 16.5 -64 28.5l33 56q8 -4 19.5 -10.5q11.5 -6.5 28 -12.5q16.5 -6 40 -10q23.5 -4 55.5 -4q50 0 84 36q34 36 51 113l18 84h-4q-14 -19 -30.5 -36q-16.5 -17 -36.5 -30.5q-20 -13.5 -43.5 -21.5q-23.5 -8 -51.5 -8q-54 0 -87 39q-33 39 -33 111q0 67 18.5 133q18.5 66 55 118.5q36.5 52.5 90 85.5q53.5 33 123.5 33q54 0 91 -9q37 -9 65 -22zM196 53q25 0 49.5 13q24.5 13 45 33.5q20.5 20.5 37 44.5q16.5 24 27.5 45l51 241q-16 9 -39 12q-23 3 -47 3q-41 0 -76 -24q-35 -24 -60.5 -64.5q-25.5 -40.5 -40.5 -93.5q-15 -53 -15 -111q0 -46 18.5 -72.5q18.5 -26.5 49.5 -26.5zt0 0zM423 612q0 -23 -18 -36.5q-18 -13.5 -38 -13.5q-26 0 -37 16q-11 16 -11 40q0 29 12 52q12 23 28.5 40q16.5 17 33.5 28q17 11 28 14l18 -32q-20 -11 -36 -27q-16 -16 -20 -40q20 0 30 -11t10 -30z" />
-<glyph unicode="&#292;" horiz-adv-x="639" d="M505 321h-318l-67 -321h-80l148 700h80l-64 -305h317l64 305h80l-148 -700h-80zM444 870h48l99 -102l-4 -21h-68l-46 49l-10 35l-25 -34l-71 -50h-75l5 22z" />
-<glyph unicode="&#293;" horiz-adv-x="529" d="M341 0l60 285q6 30 10 53.5q4 23.5 4 41.5q0 37 -15 52.5q-15 15.5 -47 15.5q-26 0 -53 -13.5q-27 -13.5 -52 -34.5q-25 -21 -44.5 -47q-19.5 -26 -29.5 -50l-63 -303h-75l148 700h75l-62 -286h4q13 16 31.5 33q18.5 17 42.5 31.5q24 14.5 52 24q28 9.5 61 9.5q49 0 77 -23.5q28 -23.5 28 -85.5q0 -42 -13 -101l-64 -302zM240 870h48l99 -102l-4 -21h-68l-46 49l-10 35l-25 -34l-71 -50h-75l5 22z" />
-<glyph unicode="&#294;" horiz-adv-x="645" d="M94 587h73l24 113h80l-24 -113h317l24 113h80l-24 -113h77l-13 -64h-78l-110 -523h-80l68 321h-318l-67 -321h-80l110 523h-73zM524 395l27 128h-317l-27 -128z" />
-<glyph unicode="&#295;" horiz-adv-x="530" d="M93 632h76l15 68h75l-15 -68h152l-12 -60h-153l-34 -158h4q13 16 31.5 33q18.5 17 42.5 31.5q24 14.5 52 24q28 9.5 61 9.5q49 0 77 -23.5q28 -23.5 28 -85.5q0 -42 -13 -101l-64 -302h-75l60 285q6 30 10 53.5q4 23.5 4 41.5q0 37 -15 52.5q-15 15.5 -47 15.5q-26 0 -53 -13.5q-27 -13.5 -52 -34.5q-25 -21 -44.5 -47q-19.5 -26 -29.5 -50l-63 -303h-75l121 572l-77 0z" />
-<glyph unicode="&#298;" horiz-adv-x="277" d="M210 700h80l-148 -700h-80zM121 843h300l-13 -62l-301 0z" />
-<glyph unicode="&#299;" horiz-adv-x="259" d="M160 500h75l-106 -500h-75zM88 643h281l-13 -62l-282 0z" />
-<glyph unicode="&#302;" horiz-adv-x="277" d="M210 700h80l-148 -700h-17q-29 -15 -52 -38.5q-23 -23.5 -23 -58.5q0 -17 9.5 -28.5q9.5 -11.5 30.5 -11.5q19 0 42 8l1 -43q-18 -12 -42 -17.5q-24 -5.5 -44 -5.5q-34 0 -56 17.5q-22 17.5 -23 55.5q0 42 30 73.5q30 31.5 70 48.5l-6 0z" />
-<glyph unicode="&#303;" horiz-adv-x="260" d="M160 500h75l-106 -500h-16q-27 -16 -47.5 -38q-20.5 -22 -26.5 -50l-1 -12q0 -17 10.5 -28q10.5 -11 34.5 -10q17 2 36 9l1 -43q-13 -10 -38 -16.5q-25 -6.5 -45 -6.5q-40 -1 -60.5 16.5q-20.5 17.5 -20.5 48.5q0 43 30.5 77.5q30.5 34.5 73.5 52.5l-6 0zM177 653q0 23 15.5 39q15.5 16 38.5 16q23 0 39 -16q16 -16 16 -39q0 -23 -16 -38.5q-16 -15.5 -39 -15.5q-23 0 -38.5 15.5t-15.5 38.5z" />
-<glyph unicode="&#304;" horiz-adv-x="277" d="M210 700h80l-148 -700h-80zM208 796q0 23 17 38q17 15 42 15q26 0 43 -15q17 -15 17 -38q0 -22 -17 -37q-17 -15 -43 -15q-25 0 -42 15t-17 37z" />
-<glyph unicode="&#305;" horiz-adv-x="259" d="M160 500h75l-106 -500l-75 0z" />
-<glyph unicode="&#308;" horiz-adv-x="278" d="M222 700h80l-116 -546q-9 -40 -21.5 -70.5q-12.5 -30.5 -32 -51.5q-19.5 -21 -48 -31.5q-28.5 -10.5 -68.5 -10.5q-8 0 -18.5 1q-10.5 1 -21.5 3q-11 2 -21 5q-10 3 -16 7l30 71q19 -13 54 -13q21 0 35 7.5q14 7.5 24 22q10 14.5 16.5 34.5q6.5 20 11.5 46zM268 870h48l99 -102l-4 -21h-68l-46 49l-10 35l-25 -34l-71 -50h-75l5 22z" />
-<glyph unicode="&#309;" horiz-adv-x="249" d="M148 500h75l-107 -501q-22 -119 -66.5 -163q-44.5 -44 -114.5 -44q-8 0 -15.5 0.5q-7.5 0.5 -15.5 1.5l15 65q30 0 49.5 8.5q19.5 8.5 33 26.5q13.5 18 23 45q9.5 27 17.5 62zM225 732h30l66 -182h-63l-24 66l-6 58l-34 -58l-57 -66l-68 0z" />
-<glyph unicode="&#310;" horiz-adv-x="576" d="M239 324h-51l-68 -324h-80l148 700h80l-70 -326l40 14l287 312h99l-286 -304l-46 -31l39 -40l175 -325h-91zM166 -105q0 23 18 36.5q18 13.5 38 13.5q26 0 37 -16q11 -16 11 -40q0 -29 -12 -52q-12 -23 -28.5 -40q-16.5 -17 -33.5 -28q-17 -11 -28 -14l-18 32q20 11 36 27q16 16 20 40q-20 0 -30 11t-10 30z" />
-<glyph unicode="&#311;" horiz-adv-x="449" d="M212 225h-54l-47 -225h-75l148 700h75l-91 -426l43 11l180 215h92l-178 -203l-47 -33l38 -39l112 -225h-83zM114 -105q0 23 18 36.5q18 13.5 38 13.5q26 0 37 -16q11 -16 11 -40q0 -29 -12 -52q-12 -23 -28.5 -40q-16.5 -17 -33.5 -28q-17 -11 -28 -14l-18 32q20 11 36 27q16 16 20 40q-20 0 -30 11t-10 30z" />
-<glyph unicode="&#313;" horiz-adv-x="492" d="M434 0h-316h-78l148 700h80l-133 -626h314zM351 870h116l-5 -21l-175 -97l-73 0z" />
-<glyph unicode="&#314;" horiz-adv-x="270" d="M133 119q-3 -17 -3 -28q0 -19 6.5 -27.5q6.5 -8.5 17.5 -8.5q20 0 33.5 2.5q13.5 2.5 32.5 9.5l0 -57q-9 -5 -21 -8.5q-12 -3.5 -24.5 -5.5q-12.5 -2 -25 -3.5q-12.5 -1.5 -22.5 -1.5q-35 0 -56 16q-21 16 -21 59q0 20 6 49l124 585h75zM325 870h116l-5 -21l-175 -97l-73 0z" />
-<glyph unicode="&#315;" horiz-adv-x="492" d="M434 0h-316h-78l148 700h80l-133 -626h314zM154 -105q0 23 18 36.5q18 13.5 38 13.5q26 0 37 -16q11 -16 11 -40q0 -29 -12 -52q-12 -23 -28.5 -40q-16.5 -17 -33.5 -28q-17 -11 -28 -14l-18 32q20 11 36 27q16 16 20 40q-20 0 -30 11t-10 30z" />
-<glyph unicode="&#316;" horiz-adv-x="270" d="M133 119q-3 -17 -3 -28q0 -19 6.5 -27.5q6.5 -8.5 17.5 -8.5q20 0 33.5 2.5q13.5 2.5 32.5 9.5l0 -57q-9 -5 -21 -8.5q-12 -3.5 -24.5 -5.5q-12.5 -2 -25 -3.5q-12.5 -1.5 -22.5 -1.5q-35 0 -56 16q-21 16 -21 59q0 20 6 49l124 585h75zM41 -105q0 23 18 36.5q18 13.5 38 13.5q26 0 37 -16q11 -16 11 -40q0 -29 -12 -52q-12 -23 -28.5 -40q-16.5 -17 -33.5 -28q-17 -11 -28 -14l-18 32q20 11 36 27q16 16 20 40q-20 0 -30 11t-10 30z" />
-<glyph unicode="&#317;" horiz-adv-x="492" d="M434 0h-316h-78l148 700h80l-133 -626h314zM516 700q-8 -29 -23.5 -59.5q-15.5 -30.5 -33.5 -56.5q-18 -26 -34.5 -46q-16.5 -20 -26.5 -29l-27 18q24 36 41.5 81.5q17.5 45.5 27.5 91.5z" />
-<glyph unicode="&#318;" horiz-adv-x="270" d="M133 119q-3 -17 -3 -28q0 -19 6.5 -27.5q6.5 -8.5 17.5 -8.5q20 0 33.5 2.5q13.5 2.5 32.5 9.5l0 -57q-9 -5 -21 -8.5q-12 -3.5 -24.5 -5.5q-12.5 -2 -25 -3.5q-12.5 -1.5 -22.5 -1.5q-35 0 -56 16q-21 16 -21 59q0 20 6 49l124 585h75zM404 700q-8 -29 -23.5 -59.5q-15.5 -30.5 -33.5 -56.5q-18 -26 -34.5 -46q-16.5 -20 -26.5 -29l-27 18q24 36 41.5 81.5q17.5 45.5 27.5 91.5z" />
-<glyph unicode="&#321;" horiz-adv-x="493" d="M36 287l77 54l76 359h80l-63 -293l120 84l-17 -80l-119 -83l-54 -254h314l-15 -74h-314h-80l56 264l-77 -53z" />
-<glyph unicode="&#322;" horiz-adv-x="270" d="M19 285l86 60l75 355h75l-62 -293l116 82l-17 -80l-115 -80l-44 -210q-3 -17 -3 -28q0 -19 6.5 -27.5q6.5 -8.5 17.5 -8.5q20 0 33.5 2.5q13.5 2.5 32.5 9.5l0 -57q-9 -5 -21 -8.5q-12 -3.5 -24.5 -5.5q-12.5 -2 -25 -3.5q-12.5 -1.5 -22.5 -1.5q-35 0 -56 16q-21 16 -21 59q0 20 6 49l32 153l-85 -59z" />
-<glyph unicode="&#323;" horiz-adv-x="642" d="M261 458l-34 103h-3l-12 -103l-97 -458h-75l151 711h40l218 -468l33 -98h4l9 98l98 457h75l-151 -711h-37zM524 870h116l-5 -21l-175 -97l-73 0z" />
-<glyph unicode="&#324;" horiz-adv-x="522" d="M320 0l67 316q4 18 7 35.5q3 17.5 3 31.5q0 29 -13.5 47q-13.5 18 -50.5 18q-26 0 -51 -12q-25 -12 -47 -30.5q-22 -18.5 -39.5 -41q-17.5 -22.5 -29.5 -44.5l-66 -320h-75l106 500h52l-4 -86h4q13 16 31 33.5q18 17.5 40.5 31.5q22.5 14 50.5 23.5q28 9.5 62 9.5q50 0 79 -24q29 -24 29 -84q0 -30 -9 -72l-71 -332zM400 720h84l-5 -21l-123 -128l-44 0z" />
-<glyph unicode="&#325;" horiz-adv-x="642" d="M261 458l-34 103h-3l-12 -103l-97 -458h-75l151 711h40l218 -468l33 -98h4l9 98l98 457h75l-151 -711h-37zM205 -105q0 23 18 36.5q18 13.5 38 13.5q26 0 37 -16q11 -16 11 -40q0 -29 -12 -52q-12 -23 -28.5 -40q-16.5 -17 -33.5 -28q-17 -11 -28 -14l-18 32q20 11 36 27q16 16 20 40q-20 0 -30 11t-10 30z" />
-<glyph unicode="&#326;" horiz-adv-x="522" d="M320 0l67 316q4 18 7 35.5q3 17.5 3 31.5q0 29 -13.5 47q-13.5 18 -50.5 18q-26 0 -51 -12q-25 -12 -47 -30.5q-22 -18.5 -39.5 -41q-17.5 -22.5 -29.5 -44.5l-66 -320h-75l106 500h52l-4 -86h4q13 16 31 33.5q18 17.5 40.5 31.5q22.5 14 50.5 23.5q28 9.5 62 9.5q50 0 79 -24q29 -24 29 -84q0 -30 -9 -72l-71 -332zM145 -105q0 23 18 36.5q18 13.5 38 13.5q26 0 37 -16q11 -16 11 -40q0 -29 -12 -52q-12 -23 -28.5 -40q-16.5 -17 -33.5 -28q-17 -11 -28 -14l-18 32q20 11 36 27q16 16 20 40q-20 0 -30 11t-10 30z" />
-<glyph unicode="&#327;" horiz-adv-x="642" d="M261 458l-34 103h-3l-12 -103l-97 -458h-75l151 711h40l218 -468l33 -98h4l9 98l98 457h75l-151 -711h-37zM459 746h-47l-97 103l3 21h67l46 -50l9 -34l24 33l71 51h76l-4 -22z" />
-<glyph unicode="&#328;" horiz-adv-x="522" d="M320 0l67 316q4 18 7 35.5q3 17.5 3 31.5q0 29 -13.5 47q-13.5 18 -50.5 18q-26 0 -51 -12q-25 -12 -47 -30.5q-22 -18.5 -39.5 -41q-17.5 -22.5 -29.5 -44.5l-66 -320h-75l106 500h52l-4 -86h4q13 16 31 33.5q18 17.5 40.5 31.5q22.5 14 50.5 23.5q28 9.5 62 9.5q50 0 79 -24q29 -24 29 -84q0 -30 -9 -72l-71 -332zM351 550h-35l-71 182h72l23 -66l7 -58l34 58l56 66l70 0z" />
-<glyph unicode="&#332;" horiz-adv-x="651" d="M71 256q0 92 25 175q25 83 71.5 145.5q46.5 62.5 112 99q65.5 36.5 145.5 36.5q48 0 89 -14.5q41 -14.5 70.5 -46q29.5 -31.5 46 -81.5q16.5 -50 16.5 -122q0 -94 -25 -177.5q-25 -83.5 -70 -146.5q-45 -63 -107.5 -99.5q-62.5 -36.5 -137.5 -36.5q-118 0 -177 68.5q-59 68.5 -59 199.5zt0 0zM155 257q0 -94 39 -145.5q39 -51.5 115 -51.5q56 0 102.5 31q46.5 31 80.5 84q34 53 52.5 123q18.5 70 18.5 148q0 58 -13 96q-13 38 -34.5 59.5q-21.5 21.5 -49 30q-27.5 8.5 -55.5 8.5q-57 0 -104 -31.5q-47 -31.5 -80.5 -84.5q-33.5 -53 -52.5 -122.5q-19 -69.5 -19 -144.5zt0 0zM311 843h300l-13 -62l-301 0z" />
-<glyph unicode="&#333;" horiz-adv-x="498" d="M50 156q0 79 20.5 144.5q20.5 65.5 56.5 112.5q36 47 83.5 73q47.5 26 101.5 26q42 0 71.5 -13.5q29.5 -13.5 48 -37q18.5 -23.5 26.5 -54q8 -30.5 8 -63.5q0 -75 -19.5 -140q-19.5 -65 -54 -113q-34.5 -48 -80.5 -75.5q-46 -27.5 -100 -27.5q-45 0 -75.5 14.5q-30.5 14.5 -50 38.5q-19.5 24 -28 54q-8.5 30 -8.5 61zt0 0zM130 174q0 -59 22 -90.5q22 -31.5 70 -31.5q33 0 62.5 23.5q29.5 23.5 52 63.5q22.5 40 36 91.5q13.5 51.5 13.5 107.5q0 51 -18.5 80.5q-18.5 29.5 -70.5 29.5q-33 0 -63 -22.5q-30 -22.5 -53.5 -60.5q-23.5 -38 -37 -87.5q-13.5 -49.5 -13.5 -103.5zt0 0zM202 643h281l-13 -62l-282 0z" />
-<glyph unicode="&#336;" horiz-adv-x="651" d="M71 256q0 92 25 175q25 83 71.5 145.5q46.5 62.5 112 99q65.5 36.5 145.5 36.5q48 0 89 -14.5q41 -14.5 70.5 -46q29.5 -31.5 46 -81.5q16.5 -50 16.5 -122q0 -94 -25 -177.5q-25 -83.5 -70 -146.5q-45 -63 -107.5 -99.5q-62.5 -36.5 -137.5 -36.5q-118 0 -177 68.5q-59 68.5 -59 199.5zt0 0zM155 257q0 -94 39 -145.5q39 -51.5 115 -51.5q56 0 102.5 31q46.5 31 80.5 84q34 53 52.5 123q18.5 70 18.5 148q0 58 -13 96q-13 38 -34.5 59.5q-21.5 21.5 -49 30q-27.5 8.5 -55.5 8.5q-57 0 -104 -31.5q-47 -31.5 -80.5 -84.5q-33.5 -53 -52.5 -122.5q-19 -69.5 -19 -144.5zt0 0zM425 850h88l-3 -16l-115 -93h-54zM579 850h93l-3 -16l-156 -93l-54 0z" />
-<glyph unicode="&#337;" horiz-adv-x="498" d="M50 156q0 79 20.5 144.5q20.5 65.5 56.5 112.5q36 47 83.5 73q47.5 26 101.5 26q42 0 71.5 -13.5q29.5 -13.5 48 -37q18.5 -23.5 26.5 -54q8 -30.5 8 -63.5q0 -75 -19.5 -140q-19.5 -65 -54 -113q-34.5 -48 -80.5 -75.5q-46 -27.5 -100 -27.5q-45 0 -75.5 14.5q-30.5 14.5 -50 38.5q-19.5 24 -28 54q-8.5 30 -8.5 61zt0 0zM130 174q0 -59 22 -90.5q22 -31.5 70 -31.5q33 0 62.5 23.5q29.5 23.5 52 63.5q22.5 40 36 91.5q13.5 51.5 13.5 107.5q0 51 -18.5 80.5q-18.5 29.5 -70.5 29.5q-33 0 -63 -22.5q-30 -22.5 -53.5 -60.5q-23.5 -38 -37 -87.5q-13.5 -49.5 -13.5 -103.5zt0 0zM299 700h74l-3 -16l-91 -113h-40zM438 700h81l-3 -16l-131 -113l-44 0z" />
-<glyph unicode="&#338;" horiz-adv-x="888" d="M549 618q-23 11 -51 16.5q-28 5.5 -75 5.5q-65 0 -115 -31.5q-50 -31.5 -84 -84.5q-34 -53 -51 -122q-17 -69 -17 -145q0 -30 6 -64.5q6 -34.5 23 -64q17 -29.5 48 -49q31 -19.5 81 -19.5q14 0 27 0.5q13 0.5 27 2q14 1.5 30 5q16 3.5 37 9.5zM419 0q-26 -6 -49 -9q-23 -3 -60 -3q-47 0 -90 13q-43 13 -76 44q-33 31 -52.5 82.5q-19.5 51.5 -19.5 128.5q0 96 25 179.5q25 83.5 72 145q47 61.5 114 96.5q67 35 152 35q22 0 38 -0.5q16 -0.5 30.5 -2q14.5 -1.5 29 -4q14.5 -2.5 34.5 -5.5l362 0l-16 -74h-282l-49 -229h258l-15 -74h-259l-52 -249h287l-15 -74z" />
-<glyph unicode="&#339;" horiz-adv-x="784" d="M130 174q0 -59 22 -90.5q22 -31.5 70 -31.5q33 0 63 23.5q30 23.5 52.5 63.5q22.5 40 36 91.5q13.5 51.5 13.5 107.5q0 51 -19 80.5q-19 29.5 -71 29.5q-33 0 -63 -22.5q-30 -22.5 -53.5 -60.5q-23.5 -38 -37 -87.5q-13.5 -49.5 -13.5 -103.5zt0 0zM387 95q-29 -48 -76.5 -77.5q-47.5 -29.5 -98.5 -29.5q-45 0 -75.5 14.5q-30.5 14.5 -50 38.5q-19.5 24 -28 54q-8.5 30 -8.5 61q0 79 20.5 144.5q20.5 65.5 56.5 112.5q36 47 83.5 73q47.5 26 101.5 26q63 0 95.5 -30.5q32.5 -30.5 43.5 -79.5q34 53 83 81.5q49 28.5 103 28.5q36 0 62.5 -10q26.5 -10 43.5 -26.5q17 -16.5 25 -38q8 -21.5 8 -45.5q0 -71 -69 -111.5q-69 -40.5 -201 -40.5q-12 0 -25 0.5q-13 0.5 -27 1.5q-4 -19 -5.5 -36q-1.5 -17 -1.5 -30q0 -55 24.5 -89.5q24.5 -34.5 77.5 -34.5q44 0 80.5 14.5q36.5 14.5 56.5 30.5l24 -48q-35 -30 -82.5 -45.5q-47.5 -15.5 -95.5 -15.5q-29 0 -53 8.5q-24 8.5 -42.5 23q-18.5 14.5 -31 34q-12.5 19.5 -18.5 41.5zt0 0zM625 448q-55 0 -95 -37.5q-40 -37.5 -62 -112.5l16 0q32 0 69.5 2q37.5 2 70 10.5q32.5 8.5 54 27q21.5 18.5 21.5 51.5q0 10 -3.5 20.5q-3.5 10.5 -11.5 19q-8 8.5 -22.5 14t-36.5 5.5z" />
-<glyph unicode="&#340;" horiz-adv-x="568" d="M187 693q42 8 81 11.5q39 3.5 78 3.5q38 0 74 -9.5q36 -9.5 63.5 -30q27.5 -20.5 44 -53.5q16.5 -33 16.5 -80q0 -88 -51.5 -146.5q-51.5 -58.5 -149.5 -75.5l36 -36l108 -277h-87l-120 302l-94 15l-66 -317h-80zM341 636q-24 0 -48 -1.5q-24 -1.5 -40 -4.5l-55 -258h69q36 0 70.5 7q34.5 7 62 25q27.5 18 44 49q16.5 31 16.5 78q0 18 -7 36.5q-7 18.5 -21 34q-14 15.5 -37 25q-23 9.5 -54 9.5zt0 0zM441 870h116l-5 -21l-175 -97l-73 0z" />
-<glyph unicode="&#341;" horiz-adv-x="327" d="M362 434q-9 2 -18.5 3q-9.5 1 -17.5 1q-51 0 -88 -32q-37 -32 -58 -78l-69 -328h-75l106 500h52v-86h4q12 19 26 35.5q14 16.5 31 29.5q17 13 37 20.5q20 7.5 44 7.5q22 0 46 -7zM301 720h84l-5 -21l-123 -128l-44 0z" />
-<glyph unicode="&#342;" horiz-adv-x="568" d="M187 693q42 8 81 11.5q39 3.5 78 3.5q38 0 74 -9.5q36 -9.5 63.5 -30q27.5 -20.5 44 -53.5q16.5 -33 16.5 -80q0 -88 -51.5 -146.5q-51.5 -58.5 -149.5 -75.5l36 -36l108 -277h-87l-120 302l-94 15l-66 -317h-80zM341 636q-24 0 -48 -1.5q-24 -1.5 -40 -4.5l-55 -258h69q36 0 70.5 7q34.5 7 62 25q27.5 18 44 49q16.5 31 16.5 78q0 18 -7 36.5q-7 18.5 -21 34q-14 15.5 -37 25q-23 9.5 -54 9.5zt0 0zM166 -105q0 23 18 36.5q18 13.5 38 13.5q26 0 37 -16q11 -16 11 -40q0 -29 -12 -52q-12 -23 -28.5 -40q-16.5 -17 -33.5 -28q-17 -11 -28 -14l-18 32q20 11 36 27q16 16 20 40q-20 0 -30 11t-10 30z" />
-<glyph unicode="&#343;" horiz-adv-x="327" d="M362 434q-9 2 -18.5 3q-9.5 1 -17.5 1q-51 0 -88 -32q-37 -32 -58 -78l-69 -328h-75l106 500h52v-86h4q12 19 26 35.5q14 16.5 31 29.5q17 13 37 20.5q20 7.5 44 7.5q22 0 46 -7zM21 -105q0 23 18 36.5q18 13.5 38 13.5q26 0 37 -16q11 -16 11 -40q0 -29 -12 -52q-12 -23 -28.5 -40q-16.5 -17 -33.5 -28q-17 -11 -28 -14l-18 32q20 11 36 27q16 16 20 40q-20 0 -30 11t-10 30z" />
-<glyph unicode="&#344;" horiz-adv-x="568" d="M187 693q42 8 81 11.5q39 3.5 78 3.5q38 0 74 -9.5q36 -9.5 63.5 -30q27.5 -20.5 44 -53.5q16.5 -33 16.5 -80q0 -88 -51.5 -146.5q-51.5 -58.5 -149.5 -75.5l36 -36l108 -277h-87l-120 302l-94 15l-66 -317h-80zM341 636q-24 0 -48 -1.5q-24 -1.5 -40 -4.5l-55 -258h69q36 0 70.5 7q34.5 7 62 25q27.5 18 44 49q16.5 31 16.5 78q0 18 -7 36.5q-7 18.5 -21 34q-14 15.5 -37 25q-23 9.5 -54 9.5zt0 0zM377 746h-47l-97 103l3 21h67l46 -50l9 -34l24 33l71 51h76l-4 -22z" />
-<glyph unicode="&#345;" horiz-adv-x="327" d="M362 434q-9 2 -18.5 3q-9.5 1 -17.5 1q-51 0 -88 -32q-37 -32 -58 -78l-69 -328h-75l106 500h52v-86h4q12 19 26 35.5q14 16.5 31 29.5q17 13 37 20.5q20 7.5 44 7.5q22 0 46 -7zM273 550h-35l-71 182h72l23 -66l7 -58l34 58l56 66l70 0z" />
-<glyph unicode="&#346;" horiz-adv-x="505" d="M388 180q0 36 -18.5 61q-18.5 25 -46.5 45.5q-28 20.5 -60.5 39.5q-32.5 19 -60.5 44q-28 25 -46.5 59q-18.5 34 -18.5 84q0 53 19.5 91q19.5 38 53 62q33.5 24 79 35q45.5 11 96.5 11q58 0 104 -9q46 -9 72 -23l-40 -71q-20 11 -59.5 21q-39.5 10 -91.5 10q-66 0 -107.5 -30q-41.5 -30 -41.5 -87q0 -37 18.5 -62.5q18.5 -25.5 46.5 -46q28 -20.5 60.5 -39.5q32.5 -19 60.5 -43.5q28 -24.5 46.5 -58.5q18.5 -34 18.5 -83q0 -97 -70 -149.5q-70 -52.5 -201 -52.5q-67 0 -113.5 11.5q-46.5 11.5 -70.5 25.5l41 73q23 -13 62.5 -25.5q39.5 -12.5 93.5 -12.5q31 0 62 5.5q31 5.5 56 19.5q25 14 40.5 37q15.5 23 15.5 58zt0 0zM466 870h116l-5 -21l-175 -97l-73 0z" />
-<glyph unicode="&#347;" horiz-adv-x="398" d="M259 141q0 26 -13 44q-13 18 -33 32.5q-20 14.5 -43 28.5q-23 14 -43 31.5q-20 17.5 -33 41q-13 23.5 -13 58.5q0 28 13.5 52.5q13.5 24.5 37 43q23.5 18.5 56 29q32.5 10.5 70.5 10.5q53 0 82 -7q29 -7 52 -20l-25 -60q-40 23 -109 23q-42 0 -69.5 -17.5q-27.5 -17.5 -27.5 -53.5q0 -21 13 -36.5q13 -15.5 33 -29.5q20 -14 43 -28.5q23 -14.5 43 -33q20 -18.5 33 -43.5q13 -25 13 -59q0 -78 -52.5 -118.5q-52.5 -40.5 -140.5 -40.5q-45 0 -82.5 9q-37.5 9 -60.5 23l28 63q20 -13 52.5 -22q32.5 -9 67.5 -9q49 0 78.5 21.5q29.5 21.5 29.5 67.5zt0 0zM328 720h84l-5 -21l-123 -128l-44 0z" />
-<glyph unicode="&#348;" horiz-adv-x="505" d="M391 180q0 36 -18.5 61q-18.5 25 -46.5 45.5q-28 20.5 -60.5 39.5q-32.5 19 -60.5 44q-28 25 -46.5 59q-18.5 34 -18.5 84q0 53 19.5 91q19.5 38 53 62q33.5 24 79 35q45.5 11 96.5 11q58 0 104 -9q46 -9 72 -23l-40 -71q-20 11 -59.5 21q-39.5 10 -91.5 10q-66 0 -107.5 -30q-41.5 -30 -41.5 -87q0 -37 18.5 -62.5q18.5 -25.5 46.5 -46q28 -20.5 60.5 -39.5q32.5 -19 60.5 -43.5q28 -24.5 46.5 -58.5q18.5 -34 18.5 -83q0 -97 -70 -149.5q-70 -52.5 -201 -52.5q-67 0 -113.5 11.5q-46.5 11.5 -70.5 25.5l41 73q23 -13 62.5 -25.5q39.5 -12.5 93.5 -12.5q31 0 62 5.5q31 5.5 56 19.5q25 14 40.5 37q15.5 23 15.5 58zt0 0zM393 870h48l99 -102l-4 -21h-68l-46 49l-10 35l-25 -34l-71 -50h-75l5 22z" />
-<glyph unicode="&#349;" horiz-adv-x="398" d="M259 141q0 26 -13 44q-13 18 -33 32.5q-20 14.5 -43 28.5q-23 14 -43 31.5q-20 17.5 -33 41q-13 23.5 -13 58.5q0 28 13.5 52.5q13.5 24.5 37 43q23.5 18.5 56 29q32.5 10.5 70.5 10.5q53 0 82 -7q29 -7 52 -20l-25 -60q-40 23 -109 23q-42 0 -69.5 -17.5q-27.5 -17.5 -27.5 -53.5q0 -21 13 -36.5q13 -15.5 33 -29.5q20 -14 43 -28.5q23 -14.5 43 -33q20 -18.5 33 -43.5q13 -25 13 -59q0 -78 -52.5 -118.5q-52.5 -40.5 -140.5 -40.5q-45 0 -82.5 9q-37.5 9 -60.5 23l28 63q20 -13 52.5 -22q32.5 -9 67.5 -9q49 0 78.5 21.5q29.5 21.5 29.5 67.5zt0 0zM297 732h30l66 -182h-63l-24 66l-6 58l-34 -58l-57 -66l-68 0z" />
-<glyph unicode="&#350;" horiz-adv-x="505" d="M391 180q0 36 -18.5 61q-18.5 25 -46.5 45.5q-28 20.5 -60.5 39.5q-32.5 19 -60.5 44q-28 25 -46.5 59q-18.5 34 -18.5 84q0 53 19.5 91q19.5 38 53 62q33.5 24 79 35q45.5 11 96.5 11q58 0 104 -9q46 -9 72 -23l-40 -71q-20 11 -59.5 21q-39.5 10 -91.5 10q-66 0 -107.5 -30q-41.5 -30 -41.5 -87q0 -37 18.5 -62.5q18.5 -25.5 46.5 -46q28 -20.5 60.5 -39.5q32.5 -19 60.5 -43.5q28 -24.5 46.5 -58.5q18.5 -34 18.5 -83q0 -89 -60 -141q-60 -52 -172 -60l-24 -32q27 -3 44.5 -20.5q17.5 -17.5 17.5 -49.5q0 -42 -31.5 -69q-31.5 -27 -94.5 -27q-12 0 -25.5 1.5q-13.5 1.5 -27.5 3.5l17 39q5 -1 10.5 -1q5.5 0 10.5 0q21 0 35 4q14 4 22 9.5q8 5.5 11 12.5q3 7 3 13q0 19 -21 28q-21 9 -56 9l56 78q-62 2 -104.5 12.5q-42.5 10.5 -65.5 24.5l41 73q23 -13 62.5 -25.5q39.5 -12.5 93.5 -12.5q31 0 62 5.5q31 5.5 56 19.5q25 14 40.5 37t15.5 58z" />
-<glyph unicode="&#351;" horiz-adv-x="398" d="M259 141q0 26 -13 44q-13 18 -33 32.5q-20 14.5 -43 28.5q-23 14 -43 31.5q-20 17.5 -33 41q-13 23.5 -13 58.5q0 28 13.5 52.5q13.5 24.5 37 43q23.5 18.5 56 29q32.5 10.5 70.5 10.5q53 0 82 -7q29 -7 52 -20l-25 -60q-40 23 -109 23q-42 0 -69.5 -17.5q-27.5 -17.5 -27.5 -53.5q0 -21 13 -36.5q13 -15.5 33 -29.5q20 -14 43 -28.5q23 -14.5 43 -33q20 -18.5 33 -43.5q13 -25 13 -59q0 -72 -45 -112.5q-45 -40.5 -121 -46.5l-24 -31q27 -3 44.5 -20.5q17.5 -17.5 17.5 -49.5q0 -42 -31.5 -69q-31.5 -27 -94.5 -27q-12 0 -25.5 1.5q-13.5 1.5 -27.5 3.5l17 39q5 -1 10.5 -1q5.5 0 10.5 0q21 0 35 4q14 4 22 9.5q8 5.5 11 12.5q3 7 3 13q0 19 -21 28q-21 9 -56 9l57 78q-38 2 -68 10.5q-30 8.5 -50 21.5l28 63q20 -13 52.5 -22q32.5 -9 67.5 -9q49 0 78.5 21.5t29.5 67.5z" />
-<glyph unicode="&#352;" horiz-adv-x="505" d="M388 180q0 36 -18.5 61q-18.5 25 -46.5 45.5q-28 20.5 -60.5 39.5q-32.5 19 -60.5 44q-28 25 -46.5 59q-18.5 34 -18.5 84q0 53 19.5 91q19.5 38 53 62q33.5 24 79 35q45.5 11 96.5 11q58 0 104 -9q46 -9 72 -23l-40 -71q-20 11 -59.5 21q-39.5 10 -91.5 10q-66 0 -107.5 -30q-41.5 -30 -41.5 -87q0 -37 18.5 -62.5q18.5 -25.5 46.5 -46q28 -20.5 60.5 -39.5q32.5 -19 60.5 -43.5q28 -24.5 46.5 -58.5q18.5 -34 18.5 -83q0 -97 -70 -149.5q-70 -52.5 -201 -52.5q-67 0 -113.5 11.5q-46.5 11.5 -70.5 25.5l41 73q23 -13 62.5 -25.5q39.5 -12.5 93.5 -12.5q31 0 62 5.5q31 5.5 56 19.5q25 14 40.5 37q15.5 23 15.5 58zt0 0zM420 746h-47l-97 103l3 21h67l46 -50l9 -34l24 33l71 51h76l-4 -22z" />
-<glyph unicode="&#353;" horiz-adv-x="398" d="M259 141q0 26 -13 44q-13 18 -33 32.5q-20 14.5 -43 28.5q-23 14 -43 31.5q-20 17.5 -33 41q-13 23.5 -13 58.5q0 28 13.5 52.5q13.5 24.5 37 43q23.5 18.5 56 29q32.5 10.5 70.5 10.5q53 0 82 -7q29 -7 52 -20l-25 -60q-40 23 -109 23q-42 0 -69.5 -17.5q-27.5 -17.5 -27.5 -53.5q0 -21 13 -36.5q13 -15.5 33 -29.5q20 -14 43 -28.5q23 -14.5 43 -33q20 -18.5 33 -43.5q13 -25 13 -59q0 -78 -52.5 -118.5q-52.5 -40.5 -140.5 -40.5q-45 0 -82.5 9q-37.5 9 -60.5 23l28 63q20 -13 52.5 -22q32.5 -9 67.5 -9q49 0 78.5 21.5q29.5 21.5 29.5 67.5zt0 0zM282 550h-35l-71 182h72l23 -66l7 -58l34 58l56 66l70 0z" />
-<glyph unicode="&#354;" horiz-adv-x="528" d="M602 626h-207l-132 -626h-11l-33 -43q27 -3 44.5 -20.5q17.5 -17.5 17.5 -49.5q0 -42 -31.5 -69q-31.5 -27 -94.5 -27q-12 0 -25.5 1.5q-13.5 1.5 -27.5 3.5l17 39q5 -1 10.5 -1q5.5 0 10.5 0q21 0 35 4q14 4 22 9.5q8 5.5 11 12.5q3 7 3 13q0 37 -77 37l65 90h-16l132 626h-205l15 74l492 0z" />
-<glyph unicode="&#355;" horiz-adv-x="313" d="M71 500h74l21 99l80 23l-26 -122h131l-15 -64h-130l-63 -302q-2 -12 -3.5 -22q-1.5 -10 -1.5 -18q0 -24 11 -33q11 -9 33 -9q24 0 44 6q20 6 40 18l0 -61q-18 -11 -45 -18q-27 -7 -53 -9l-24 -31q27 -3 44.5 -20.5q17.5 -17.5 17.5 -49.5q0 -42 -31.5 -69q-31.5 -27 -94.5 -27q-12 0 -25.5 1.5q-13.5 1.5 -27.5 3.5l17 39q5 -1 10.5 -1q5.5 0 10.5 0q21 0 35 4q14 4 22 9.5q8 5.5 11 12.5q3 7 3 13q0 37 -77 37l58 80q-59 14 -59 81q0 17 5 42l68 323l-75 0z" />
-<glyph unicode="&#356;" horiz-adv-x="528" d="M602 626h-207l-132 -626h-80l132 626h-205l15 74h492zM403 746h-47l-97 103l3 21h67l46 -50l9 -34l24 33l71 51h76l-4 -22z" />
-<glyph unicode="&#357;" horiz-adv-x="313" d="M71 500h74l21 99l80 23l-26 -122h131l-15 -64h-130l-63 -302q-2 -12 -3.5 -22q-1.5 -10 -1.5 -18q0 -24 11 -33q11 -9 33 -9q24 0 44 6q20 6 40 18l0 -61q-21 -12 -54 -19.5q-33 -7.5 -63 -7.5q-91 0 -91 83q0 17 5 42l68 323h-75zM402 714q-8 -29 -23.5 -59.5q-15.5 -30.5 -33.5 -56.5q-18 -26 -34.5 -46q-16.5 -20 -26.5 -29l-27 18q24 36 41.5 81.5q17.5 45.5 27.5 91.5z" />
-<glyph unicode="&#362;" horiz-adv-x="618" d="M573 700h76l-98 -467q-14 -64 -35 -110q-21 -46 -52.5 -75q-31.5 -29 -75.5 -43q-44 -14 -102 -14q-55 0 -93 12.5q-38 12.5 -61.5 35q-23.5 22.5 -34 55q-10.5 32.5 -10.5 71.5q0 41 11 93l93 442h80l-93 -443q-11 -44 -11 -80q0 -63 33 -87.5q33 -24.5 98 -24.5q39 0 68.5 11q29.5 11 51 34q21.5 23 36 59q14.5 36 25.5 87zM292 843h300l-13 -62l-301 0z" />
-<glyph unicode="&#363;" horiz-adv-x="511" d="M213 500l-70 -333q-6 -27 -6 -50q0 -28 11 -46.5q11 -18.5 40 -18.5q24 0 48.5 12q24.5 12 47 31q22.5 19 41 42q18.5 23 30.5 45l67 318h75l-63 -297q-4 -17 -8 -41.5q-4 -24.5 -7.5 -51.5q-3.5 -27 -5.5 -52.5q-2 -25.5 -2 -44.5v-13h-59v95h-4q-15 -20 -34.5 -39q-19.5 -19 -43 -34q-23.5 -15 -50.5 -24.5q-27 -9.5 -57 -9.5q-22 0 -40.5 5q-18.5 5 -32.5 17.5q-14 12.5 -22 33q-8 20.5 -8 52.5q0 35 10 79l68 325zM205 643h281l-13 -62l-282 0z" />
-<glyph unicode="&#364;" horiz-adv-x="618" d="M573 700h76l-98 -467q-14 -64 -35 -110q-21 -46 -52.5 -75q-31.5 -29 -75.5 -43q-44 -14 -102 -14q-55 0 -93 12.5q-38 12.5 -61.5 35q-23.5 22.5 -34 55q-10.5 32.5 -10.5 71.5q0 41 11 93l93 442h80l-93 -443q-11 -44 -11 -80q0 -63 33 -87.5q33 -24.5 98 -24.5q39 0 68.5 11q29.5 11 51 34q21.5 23 36 59q14.5 36 25.5 87zM318 871q11 -35 36 -53.5q25 -18.5 64 -18.5q32 0 55 6q23 6 40 15.5q17 9.5 30 22.5q13 13 24 28l41 -19q-25 -60 -74 -91q-49 -31 -119 -31q-29 0 -53 9.5q-24 9.5 -41.5 25.5q-17.5 16 -28 37.5q-10.5 21.5 -13.5 44.5z" />
-<glyph unicode="&#365;" horiz-adv-x="511" d="M213 500l-70 -333q-6 -27 -6 -50q0 -28 11 -46.5q11 -18.5 40 -18.5q24 0 48.5 12q24.5 12 47 31q22.5 19 41 42q18.5 23 30.5 45l67 318h75l-63 -297q-4 -17 -8 -41.5q-4 -24.5 -7.5 -51.5q-3.5 -27 -5.5 -52.5q-2 -25.5 -2 -44.5v-13h-59v95h-4q-15 -20 -34.5 -39q-19.5 -19 -43 -34q-23.5 -15 -50.5 -24.5q-27 -9.5 -57 -9.5q-22 0 -40.5 5q-18.5 5 -32.5 17.5q-14 12.5 -22 33q-8 20.5 -8 52.5q0 35 10 79l68 325zM260 720q9 -36 27.5 -56.5q18.5 -20.5 53.5 -20.5q38 0 70.5 20.5q32.5 20.5 55.5 56.5l35 -18q-8 -24 -24.5 -47.5q-16.5 -23.5 -39 -41.5q-22.5 -18 -50 -29q-27.5 -11 -55.5 -11q-52 0 -85.5 33.5q-33.5 33.5 -35.5 90.5z" />
-<glyph unicode="&#366;" horiz-adv-x="618" d="M573 700h76l-98 -467q-14 -64 -35 -110q-21 -46 -52.5 -75q-31.5 -29 -75.5 -43q-44 -14 -102 -14q-55 0 -93 12.5q-38 12.5 -61.5 35q-23.5 22.5 -34 55q-10.5 32.5 -10.5 71.5q0 41 11 93l93 442h80l-93 -443q-11 -44 -11 -80q0 -63 33 -87.5q33 -24.5 98 -24.5q39 0 68.5 11q29.5 11 51 34q21.5 23 36 59q14.5 36 25.5 87zM330 768q0 37 25 61q25 24 80 24q50 0 78 -21.5q28 -21.5 28 -63.5q0 -36 -26.5 -59.5q-26.5 -23.5 -79.5 -23.5q-51 0 -78 22.5q-27 22.5 -27 60.5zt0 0zM391 768q0 -17 10.5 -28.5q10.5 -11.5 33.5 -11.5q22 0 33.5 11q11.5 11 11.5 29q0 19 -11 30.5q-11 11.5 -34 11.5q-22 0 -33 -11.5t-11 -30.5z" />
-<glyph unicode="&#367;" horiz-adv-x="511" d="M213 500l-70 -333q-6 -27 -6 -50q0 -28 11 -46.5q11 -18.5 40 -18.5q24 0 48.5 12q24.5 12 47 31q22.5 19 41 42q18.5 23 30.5 45l67 318h75l-63 -297q-4 -17 -8 -41.5q-4 -24.5 -7.5 -51.5q-3.5 -27 -5.5 -52.5q-2 -25.5 -2 -44.5v-13h-59v95h-4q-15 -20 -34.5 -39q-19.5 -19 -43 -34q-23.5 -15 -50.5 -24.5q-27 -9.5 -57 -9.5q-22 0 -40.5 5q-18.5 5 -32.5 17.5q-14 12.5 -22 33q-8 20.5 -8 52.5q0 35 10 79l68 325zM245 643q0 42 26.5 66.5q26.5 24.5 70.5 24.5q42 0 70 -22q28 -22 28 -69q0 -39 -28 -64.5q-28 -25.5 -70 -25.5q-42 0 -69.5 23.5q-27.5 23.5 -27.5 66.5zt0 0zM299 643q0 -20 13.5 -31q13.5 -11 29.5 -11q19 0 31.5 10q12.5 10 12.5 32q0 22 -13.5 32.5q-13.5 10.5 -30.5 10.5q-17 0 -30 -10t-13 -33z" />
-<glyph unicode="&#368;" horiz-adv-x="618" d="M573 700h76l-98 -467q-14 -64 -35 -110q-21 -46 -52.5 -75q-31.5 -29 -75.5 -43q-44 -14 -102 -14q-55 0 -93 12.5q-38 12.5 -61.5 35q-23.5 22.5 -34 55q-10.5 32.5 -10.5 71.5q0 41 11 93l93 442h80l-93 -443q-11 -44 -11 -80q0 -63 33 -87.5q33 -24.5 98 -24.5q39 0 68.5 11q29.5 11 51 34q21.5 23 36 59q14.5 36 25.5 87zM397 850h88l-3 -16l-115 -93h-54zM551 850h93l-3 -16l-156 -93l-54 0z" />
-<glyph unicode="&#369;" horiz-adv-x="511" d="M213 500l-70 -333q-6 -27 -6 -50q0 -28 11 -46.5q11 -18.5 40 -18.5q24 0 48.5 12q24.5 12 47 31q22.5 19 41 42q18.5 23 30.5 45l67 318h75l-63 -297q-4 -17 -8 -41.5q-4 -24.5 -7.5 -51.5q-3.5 -27 -5.5 -52.5q-2 -25.5 -2 -44.5v-13h-59v95h-4q-15 -20 -34.5 -39q-19.5 -19 -43 -34q-23.5 -15 -50.5 -24.5q-27 -9.5 -57 -9.5q-22 0 -40.5 5q-18.5 5 -32.5 17.5q-14 12.5 -22 33q-8 20.5 -8 52.5q0 35 10 79l68 325zM303 700h74l-3 -16l-91 -113h-40zM442 700h81l-3 -16l-131 -113l-44 0z" />
-<glyph unicode="&#370;" horiz-adv-x="618" d="M573 700h76l-98 -467q-20 -97 -58.5 -152.5q-38.5 -55.5 -104.5 -76.5q-34 -16 -57 -40.5q-23 -24.5 -24 -59.5q0 -17 8.5 -28.5q8.5 -11.5 31.5 -11.5q19 0 42 8l1 -44q-18 -12 -42 -17.5q-24 -5.5 -44 -5.5q-33 0 -55.5 18q-22.5 18 -23.5 55q0 37 23 66q23 29 56 48q-5 0 -9 -0.5q-4 -0.5 -9 -0.5q-55 0 -93 12.5q-38 12.5 -61.5 35q-23.5 22.5 -34 55q-10.5 32.5 -10.5 71.5q0 41 11 93l93 442h80l-93 -443q-11 -44 -11 -80q0 -63 33 -87.5q33 -24.5 98 -24.5q39 0 68.5 11q29.5 11 51 34q21.5 23 36 59q14.5 36 25.5 87z" />
-<glyph unicode="&#371;" horiz-adv-x="511" d="M213 500l-70 -333q-6 -27 -6 -50q0 -28 11 -46.5q11 -18.5 40 -18.5q24 0 48.5 12q24.5 12 47 31q22.5 19 41 42q18.5 23 30.5 45l67 318h75l-63 -297q-4 -17 -8 -41.5q-4 -24.5 -7.5 -51.5q-3.5 -27 -5.5 -52.5q-2 -25.5 -2 -44.5v-13h-16q-14 -7 -28 -17q-14 -10 -25.5 -22.5q-11.5 -12.5 -20 -27.5q-8.5 -15 -8.5 -32q0 -17 9.5 -28q9.5 -11 31.5 -11q17 0 40 10l1 -44q-17 -11 -42 -17.5q-25 -6.5 -45 -5.5q-36 0 -55.5 16.5q-19.5 16.5 -21.5 49.5q-1 25 9.5 46q10.5 21 28 37.5q17.5 16.5 38.5 29q21 12.5 45 20.5l0 91h-4q-15 -20 -34.5 -39q-19.5 -19 -43 -34q-23.5 -15 -50.5 -24.5q-27 -9.5 -57 -9.5q-22 0 -40.5 5q-18.5 5 -32.5 17.5q-14 12.5 -22 33q-8 20.5 -8 52.5q0 35 10 79l68 325z" />
-<glyph unicode="&#376;" horiz-adv-x="531" d="M241 278l-133 422h87l89 -306l3 -61h1l30 63l217 304h90l-304 -421l-59 -279h-80zM252 794q0 20 14 33.5q14 13.5 37 13.5q23 0 36.5 -13.5q13.5 -13.5 13.5 -33.5q0 -20 -13.5 -33q-13.5 -13 -36.5 -13q-23 0 -37 13q-14 13 -14 33zt0 0zM435 794q0 20 13.5 33.5q13.5 13.5 36.5 13.5q23 0 37 -13.5q14 -13.5 14 -33.5q0 -20 -14 -33q-14 -13 -37 -13q-23 0 -36.5 13t-13.5 33z" />
-<glyph unicode="&#377;" horiz-adv-x="520" d="M14 75l435 511l49 40h-366l15 74h447l-15 -75l-438 -514l-47 -37h367l-15 -74h-447zM450 870h116l-5 -21l-175 -97l-73 0z" />
-<glyph unicode="&#378;" horiz-adv-x="429" d="M11 69l281 319l55 43h-258l15 69h337l-15 -69l-284 -322l-54 -40h261l-14 -69h-337zM335 720h84l-5 -21l-123 -128l-44 0z" />
-<glyph unicode="&#379;" horiz-adv-x="520" d="M14 75l435 511l49 40h-366l15 74h447l-15 -75l-438 -514l-47 -37h367l-15 -74h-447zM330 796q0 23 17 38q17 15 42 15q26 0 43 -15q17 -15 17 -38q0 -22 -17 -37q-17 -15 -43 -15q-25 0 -42 15t-17 37z" />
-<glyph unicode="&#380;" horiz-adv-x="429" d="M11 69l281 319l55 43h-258l15 69h337l-15 -69l-284 -322l-54 -40h261l-14 -69h-337zM231 653q0 23 15.5 39q15.5 16 38.5 16q23 0 39 -16q16 -16 16 -39q0 -23 -16 -38.5q-16 -15.5 -39 -15.5q-23 0 -38.5 15.5t-15.5 38.5z" />
-<glyph unicode="&#381;" horiz-adv-x="520" d="M14 75l435 511l49 40h-366l15 74h447l-15 -75l-438 -514l-47 -37h367l-15 -74h-447zM386 746h-47l-97 103l3 21h67l46 -50l9 -34l24 33l71 51h76l-4 -22z" />
-<glyph unicode="&#382;" horiz-adv-x="429" d="M11 69l281 319l55 43h-258l15 69h337l-15 -69l-284 -322l-54 -40h261l-14 -69h-337zM288 550h-35l-71 182h72l23 -66l7 -58l34 58l56 66l70 0z" />
-<glyph unicode="&#383;" horiz-adv-x="274" d="M144 436h-76l13 64h77l6 28q10 46 24 80q14 34 34.5 55.5q20.5 21.5 49 32q28.5 10.5 66.5 10.5q31 0 53 -4q22 -4 45 -15l-30 -59q-20 10 -39 12q-19 2 -36 2q-25 0 -41.5 -10q-16.5 -10 -27.5 -29q-11 -19 -17.5 -45q-6.5 -26 -12.5 -58l-86 -500q-9 -55 -21 -94q-12 -39 -29.5 -64.5q-17.5 -25.5 -43.5 -37.5q-26 -12 -63 -12q-30 0 -55.5 4.5q-25.5 4.5 -47.5 15.5v56q42 -7 58.5 -9.5q16.5 -2.5 40.5 -2.5q38 0 57 39.5q19 39.5 30 104.5z" />
-<glyph unicode="&#402;" horiz-adv-x="520" d="M319 431l-73 -431q-12 -71 -23 -102.5q-11 -31.5 -29.5 -55q-18.5 -23.5 -45 -37q-26.5 -13.5 -64.5 -13.5q-29 0 -60 7q-31 7 -55 17l21 65q23 -10 43.5 -15q20.5 -5 44.5 -5q38 0 57.5 34q19.5 34 32.5 105l68 431h-85v69h96l11 67q12 74 43.5 109.5q31.5 35.5 103.5 35.5q33 0 64.5 -7q31.5 -7 56.5 -18l-23 -64q-48 20 -92 20q-37 0 -51 -23q-14 -23 -23 -79l-7 -41h120l0 -69z" />
-<glyph unicode="&#500;" horiz-adv-x="583" d="M375 349h116h68l-65 -308q-71 -53 -176 -53q-50 0 -94.5 18q-44.5 18 -78.5 53.5q-34 35.5 -54 88.5q-20 53 -20 124q0 123 36 207q36 84 92.5 135.5q56.5 51.5 124.5 74.5q68 23 132 23q57 0 94.5 -7.5q37.5 -7.5 60.5 -18.5l-35 -73q-20 11 -53.5 18q-33.5 7 -75.5 7q-58 0 -110.5 -22.5q-52.5 -22.5 -93 -67.5q-40.5 -45 -64.5 -111.5q-24 -66.5 -24 -154.5q0 -45 11 -85q11 -40 33.5 -70q22.5 -30 56 -47.5q33.5 -17.5 79.5 -17.5q32 0 55 6.5q23 6.5 46 18.5l41 195l-112 20zM544 870h116l-5 -21l-175 -97l-73 0z" />
-<glyph unicode="&#501;" horiz-adv-x="505" d="M385 -23q-21 -98 -72.5 -143.5q-51.5 -45.5 -136.5 -45.5q-65 0 -107 16.5q-42 16.5 -64 28.5l33 56q8 -4 19.5 -10.5q11.5 -6.5 28 -12.5q16.5 -6 40 -10q23.5 -4 55.5 -4q50 0 84 36q34 36 51 113l18 84h-4q-14 -19 -30.5 -36q-16.5 -17 -36.5 -30.5q-20 -13.5 -43.5 -21.5q-23.5 -8 -51.5 -8q-54 0 -87 39q-33 39 -33 111q0 67 18.5 133q18.5 66 55 118.5q36.5 52.5 90 85.5q53.5 33 123.5 33q54 0 91 -9q37 -9 65 -22zM196 53q25 0 49.5 13q24.5 13 45 33.5q20.5 20.5 37 44.5q16.5 24 27.5 45l51 241q-16 9 -39 12q-23 3 -47 3q-41 0 -76 -24q-35 -24 -60.5 -64.5q-25.5 -40.5 -40.5 -93.5q-15 -53 -15 -111q0 -46 18.5 -72.5q18.5 -26.5 49.5 -26.5zt0 0zM395 720h84l-5 -21l-123 -128l-44 0z" />
-<glyph unicode="&#536;" horiz-adv-x="505" d="M391 180q0 36 -18.5 61q-18.5 25 -46.5 45.5q-28 20.5 -60.5 39.5q-32.5 19 -60.5 44q-28 25 -46.5 59q-18.5 34 -18.5 84q0 53 19.5 91q19.5 38 53 62q33.5 24 79 35q45.5 11 96.5 11q58 0 104 -9q46 -9 72 -23l-40 -71q-20 11 -59.5 21q-39.5 10 -91.5 10q-66 0 -107.5 -30q-41.5 -30 -41.5 -87q0 -37 18.5 -62.5q18.5 -25.5 46.5 -46q28 -20.5 60.5 -39.5q32.5 -19 60.5 -43.5q28 -24.5 46.5 -58.5q18.5 -34 18.5 -83q0 -97 -70 -149.5q-70 -52.5 -201 -52.5q-67 0 -113.5 11.5q-46.5 11.5 -70.5 25.5l41 73q23 -13 62.5 -25.5q39.5 -12.5 93.5 -12.5q31 0 62 5.5q31 5.5 56 19.5q25 14 40.5 37q15.5 23 15.5 58zt0 0zM137 -105q0 23 18 36.5q18 13.5 38 13.5q26 0 37 -16q11 -16 11 -40q0 -29 -12 -52q-12 -23 -28.5 -40q-16.5 -17 -33.5 -28q-17 -11 -28 -14l-18 32q20 11 36 27q16 16 20 40q-20 0 -30 11t-10 30z" />
-<glyph unicode="&#537;" horiz-adv-x="398" d="M259 141q0 26 -13 44q-13 18 -33 32.5q-20 14.5 -43 28.5q-23 14 -43 31.5q-20 17.5 -33 41q-13 23.5 -13 58.5q0 28 13.5 52.5q13.5 24.5 37 43q23.5 18.5 56 29q32.5 10.5 70.5 10.5q53 0 82 -7q29 -7 52 -20l-25 -60q-40 23 -109 23q-42 0 -69.5 -17.5q-27.5 -17.5 -27.5 -53.5q0 -21 13 -36.5q13 -15.5 33 -29.5q20 -14 43 -28.5q23 -14.5 43 -33q20 -18.5 33 -43.5q13 -25 13 -59q0 -78 -52.5 -118.5q-52.5 -40.5 -140.5 -40.5q-45 0 -82.5 9q-37.5 9 -60.5 23l28 63q20 -13 52.5 -22q32.5 -9 67.5 -9q49 0 78.5 21.5q29.5 21.5 29.5 67.5zt0 0zM75 -105q0 23 18 36.5q18 13.5 38 13.5q26 0 37 -16q11 -16 11 -40q0 -29 -12 -52q-12 -23 -28.5 -40q-16.5 -17 -33.5 -28q-17 -11 -28 -14l-18 32q20 11 36 27q16 16 20 40q-20 0 -30 11t-10 30z" />
-<glyph unicode="&#538;" horiz-adv-x="528" d="M602 626h-207l-132 -626h-80l132 626h-205l15 74h492zM146 -105q0 23 18 36.5q18 13.5 38 13.5q26 0 37 -16q11 -16 11 -40q0 -29 -12 -52q-12 -23 -28.5 -40q-16.5 -17 -33.5 -28q-17 -11 -28 -14l-18 32q20 11 36 27q16 16 20 40q-20 0 -30 11t-10 30z" />
-<glyph unicode="&#539;" horiz-adv-x="313" d="M71 500h74l21 99l80 23l-26 -122h131l-15 -64h-130l-63 -302q-2 -12 -3.5 -22q-1.5 -10 -1.5 -18q0 -24 11 -33q11 -9 33 -9q24 0 44 6q20 6 40 18l0 -61q-21 -12 -54 -19.5q-33 -7.5 -63 -7.5q-91 0 -91 83q0 17 5 42l68 323h-75zM59 -105q0 23 18 36.5q18 13.5 38 13.5q26 0 37 -16q11 -16 11 -40q0 -29 -12 -52q-12 -23 -28.5 -40q-16.5 -17 -33.5 -28q-17 -11 -28 -14l-18 32q20 11 36 27q16 16 20 40q-20 0 -30 11t-10 30z" />
-<glyph unicode="&#567;" horiz-adv-x="249" d="M148 500h75l-107 -501q-22 -119 -66.5 -163q-44.5 -44 -114.5 -44q-8 0 -15.5 0.5q-7.5 0.5 -15.5 1.5l15 65q30 0 49.5 8.5q19.5 8.5 33 26.5q13.5 18 23 45q9.5 27 17.5 62z" />
-<glyph unicode="&#700;" horiz-adv-x="185" d="M142 658q0 12 5.5 21.5q5.5 9.5 13.5 15.5q8 6 17.5 9.5q9.5 3.5 18.5 3.5q30 0 40.5 -15q10.5 -15 10.5 -43q0 -34 -13 -60q-13 -26 -31 -44.5q-18 -18.5 -37 -30q-19 -11.5 -31 -15.5l-16 34q23 12 40 31q17 19 22 46q-40 2 -40 47z" />
-<glyph unicode="&#710;" horiz-adv-x="431" d="M356 732h30l66 -182h-63l-24 66l-6 58l-34 -58l-57 -66l-68 0z" />
-<glyph unicode="&#711;" horiz-adv-x="431" d="M316 550h-35l-71 182h72l23 -66l7 -58l34 58l56 66l70 0z" />
-<glyph unicode="&#728;" horiz-adv-x="285" d="M158 720q9 -36 27.5 -56.5q18.5 -20.5 53.5 -20.5q38 0 70.5 20.5q32.5 20.5 55.5 56.5l35 -18q-8 -24 -24.5 -47.5q-16.5 -23.5 -39 -41.5q-22.5 -18 -50 -29q-27.5 -11 -55.5 -11q-52 0 -85.5 33.5q-33.5 33.5 -35.5 90.5z" />
-<glyph unicode="&#729;" horiz-adv-x="266" d="M191 653q0 23 15.5 39q15.5 16 38.5 16q23 0 39 -16q16 -16 16 -39q0 -23 -16 -38.5q-16 -15.5 -39 -15.5q-23 0 -38.5 15.5t-15.5 38.5z" />
-<glyph unicode="&#730;" horiz-adv-x="401" d="M220 643q0 42 26.5 66.5q26.5 24.5 70.5 24.5q42 0 70 -22q28 -22 28 -69q0 -39 -28 -64.5q-28 -25.5 -70 -25.5q-42 0 -69.5 23.5q-27.5 23.5 -27.5 66.5zt0 0zM274 643q0 -20 13.5 -31q13.5 -11 29.5 -11q19 0 31.5 10q12.5 10 12.5 32q0 22 -13.5 32.5q-13.5 10.5 -30.5 10.5q-17 0 -30 -10t-13 -33z" />
-<glyph unicode="&#731;" horiz-adv-x="382" d="M257 10q-18 -8 -35 -18q-17 -10 -31 -22.5q-14 -12.5 -22.5 -29q-8.5 -16.5 -8.5 -36.5q0 -17 9.5 -28.5q9.5 -11.5 32.5 -11.5q19 0 42 8l1 -43q-18 -13 -42 -18.5q-24 -5.5 -44 -5.5q-34 0 -56.5 18q-22.5 18 -22.5 55q0 25 11 46.5q11 21.5 28.5 38q17.5 16.5 40 28.5q22.5 12 46.5 19z" />
-<glyph unicode="&#732;" horiz-adv-x="349" d="M150 656q32 33 55.5 45.5q23.5 12.5 41.5 12.5q15 0 27 -6.5q12 -6.5 23.5 -14q11.5 -7.5 23 -13.5q11.5 -6 25.5 -6q23 0 54 24l15 -43q-29 -29 -50 -40q-21 -11 -38 -11q-15 0 -27 6q-12 6 -23.5 13.5q-11.5 7.5 -23.5 13.5q-12 6 -27 6q-13 0 -28 -6.5q-15 -6.5 -35 -22.5z" />
-<glyph unicode="&#733;" horiz-adv-x="475" d="M260 700h74l-3 -16l-91 -113h-40zM399 700h81l-3 -16l-131 -113l-44 0z" />
-<glyph unicode="&#769;" horiz-adv-x="2" d="M-67 720h84l-5 -21l-123 -128l-44 0z" />
-<glyph unicode="&#916;" horiz-adv-x="569" d="M12 0v37l254 674h34l256 -674v-37zM104 72h355l-155 403l-24 105h-1l-28 -107z" />
-<glyph unicode="&#937;" horiz-adv-x="803" d="M90 72h116l94 -11v25l-53 10q-33 15 -61.5 41.5q-28.5 26.5 -49.5 62q-21 35.5 -33.5 80q-12.5 44.5 -12.5 96.5q0 78 23 140q23 62 65 105.5q42 43.5 102 67q60 23.5 135 23.5q77 0 137.5 -25q60.5 -25 102.5 -70q42 -45 63.5 -107.5q21.5 -62.5 21.5 -137.5q0 -54 -14 -98q-14 -44 -36.5 -78.5q-22.5 -34.5 -50 -59q-27.5 -24.5 -53.5 -39.5l-58 -11v-25l96 11h116v-72h-287v125q30 6 64.5 22q34.5 16 64.5 45.5q30 29.5 50 75q20 45.5 19 109.5q1 48 -12.5 94.5q-13.5 46.5 -42.5 83.5q-29 37 -74.5 60q-45.5 23 -107.5 25q-114 -2 -175 -68.5q-61 -66.5 -60 -197.5q-1 -63 17.5 -107.5q18.5 -44.5 47.5 -74.5q29 -30 64 -46q35 -16 68 -21l0 -125l-286 0z" />
-<glyph unicode="&#960;" horiz-adv-x="632" d="M457 116q-3 -14 -3 -22q0 -28 23 -28q10 0 22 2q12 2 21 4l7 -54q-17 -7 -40.5 -14.5q-23.5 -7.5 -52.5 -7.5q-34 0 -48 15q-14 15 -14 44q0 11 2 24q2 13 5 27l70 323h-182l-91 -429h-75l92 429h-14q-20 0 -35.5 -11q-15.5 -11 -32.5 -33l-44 32q26 38 58 60.5q32 22.5 82 22.5h411l-15 -71l-79 0z" />
-<glyph unicode="&#1025;" horiz-adv-x="510" d="M189 700h361l-15 -74h-283l-49 -229h259l-15 -74h-259l-53 -249h288l-16 -74h-288h-79zM240 794q0 20 14 33.5q14 13.5 37 13.5q23 0 36.5 -13.5q13.5 -13.5 13.5 -33.5q0 -20 -13.5 -33q-13.5 -13 -36.5 -13q-23 0 -37 13q-14 13 -14 33zt0 0zM423 794q0 20 13.5 33.5q13.5 13.5 36.5 13.5q23 0 37 -13.5q14 -13.5 14 -33.5q0 -20 -14 -33q-14 -13 -37 -13q-23 0 -36.5 13t-13.5 33z" />
-<glyph unicode="&#1026;" horiz-adv-x="693" d="M263 0h-80l133 626h-206l15 74h492l-15 -74h-207l-44 -211q12 5 44.5 13q32.5 8 83.5 8q48 0 81 -13.5q33 -13.5 54 -37q21 -23.5 30 -54.5q9 -31 9 -65q0 -58 -17.5 -108q-17.5 -50 -52 -87q-34.5 -37 -86 -58q-51.5 -21 -118.5 -21q-31 0 -47.5 0.5q-16.5 0.5 -23.5 2.5l16 72q11 -2 23.5 -2.5q12.5 -0.5 40.5 -0.5q43 0 77 15q34 15 57 41q23 26 35 60.5q12 34.5 12 73.5q0 59 -30.5 84.5q-30.5 25.5 -91.5 25.5q-17 0 -34.5 -2.5q-17.5 -2.5 -32.5 -6q-15 -3.5 -27.5 -7.5q-12.5 -4 -18.5 -6z" />
-<glyph unicode="&#1027;" horiz-adv-x="420" d="M529 626h-277l-132 -626h-80l149 700h355zM436 870h116l-5 -21l-175 -97l-73 0z" />
-<glyph unicode="&#1028;" horiz-adv-x="556" d="M491 29q-35 -23 -78 -32q-43 -9 -93 -9q-59 0 -105 21.5q-46 21.5 -78 60q-32 38.5 -49 90.5q-17 52 -17 114q0 113 33 195.5q33 82.5 87 136.5q54 54 121.5 80q67.5 26 136.5 26q57 0 98.5 -8q41.5 -8 64.5 -19l-36 -73q-20 11 -58 18.5q-38 7.5 -80 7.5q-46 0 -88.5 -16.5q-42.5 -16.5 -78.5 -47.5q-36 -31 -62.5 -75.5q-26.5 -44.5 -40.5 -101.5l300 0l-16 -74h-296q-1 -11 -1 -20q0 -9 0 -20q0 -48 12.5 -88.5q12.5 -40.5 36 -70q23.5 -29.5 58 -46q34.5 -16.5 78.5 -16.5q47 0 83.5 10.5q36.5 10.5 60.5 24.5z" />
-<glyph unicode="&#1029;" horiz-adv-x="505" d="M388 180q0 36 -18.5 61q-18.5 25 -46.5 45.5q-28 20.5 -60.5 39.5q-32.5 19 -60.5 44q-28 25 -46.5 59q-18.5 34 -18.5 84q0 53 19.5 91q19.5 38 53 62q33.5 24 79 35q45.5 11 96.5 11q58 0 104 -9q46 -9 72 -23l-40 -71q-20 11 -59.5 21q-39.5 10 -91.5 10q-66 0 -107.5 -30q-41.5 -30 -41.5 -87q0 -37 18.5 -62.5q18.5 -25.5 46.5 -46q28 -20.5 60.5 -39.5q32.5 -19 60.5 -43.5q28 -24.5 46.5 -58.5q18.5 -34 18.5 -83q0 -97 -70 -149.5q-70 -52.5 -201 -52.5q-67 0 -113.5 11.5q-46.5 11.5 -70.5 25.5l41 73q23 -13 62.5 -25.5q39.5 -12.5 93.5 -12.5q31 0 62 5.5q31 5.5 56 19.5q25 14 40.5 37t15.5 58z" />
-<glyph unicode="&#1030;" horiz-adv-x="277" d="M210 700h80l-148 -700l-80 0z" />
-<glyph unicode="&#1031;" horiz-adv-x="277" d="M156 793q0 20 13 34q13 14 35 14q22 0 35 -14q13 -14 13 -34q0 -20 -13 -33.5q-13 -13.5 -35 -13.5q-22 0 -35 13.5q-13 13.5 -13 33.5zt0 0zM279 793q0 20 13 34q13 14 35 14q22 0 35 -14q13 -14 13 -34q0 -20 -13 -33.5q-13 -13.5 -35 -13.5q-22 0 -35 13.5q-13 13.5 -13 33.5zt0 0zM210 700h80l-148 -700l-80 0z" />
-<glyph unicode="&#1032;" horiz-adv-x="278" d="M222 700h80l-116 -546q-9 -40 -21.5 -70.5q-12.5 -30.5 -32 -51.5q-19.5 -21 -48 -31.5q-28.5 -10.5 -68.5 -10.5q-8 0 -18.5 1q-10.5 1 -21.5 3q-11 2 -21 5q-10 3 -16 7l30 71q19 -13 54 -13q21 0 35 7.5q14 7.5 24 22q10 14.5 16.5 34.5q6.5 20 11.5 46z" />
-<glyph unicode="&#1033;" horiz-adv-x="881" d="M525 626h-196q-46 -199 -88.5 -331.5q-42.5 -132.5 -89.5 -207.5q-31 -49 -64.5 -70.5q-33.5 -21.5 -70.5 -21.5q-17 0 -32 2.5q-15 2.5 -26 7.5l27 72q10 -3 22 -3q19 0 38.5 12q19.5 12 39.5 42q18 27 39 72q21 45 44 113.5q23 68.5 48 163.5q25 95 52 223l80 0h273l-57 -272q5 1 15.5 2.5q10.5 1.5 23 3q12.5 1.5 26.5 2q14 0.5 25 0.5q42 0 80 -10q38 -10 67 -31.5q29 -21.5 46 -55.5q17 -34 17 -83q0 -68 -24 -118q-24 -50 -66.5 -82.5q-42.5 -32.5 -99.5 -48q-57 -15.5 -123 -15.5q-21 0 -44.5 1q-23.5 1 -32.5 2q-25 2 -38 3.5q-13 1.5 -24 4q-11 2.5 -18 4.5zM570 64q41 0 79 10.5q38 10.5 67 33q29 22.5 46.5 57q17.5 34.5 17.5 83.5q0 60 -40.5 88q-40.5 28 -106.5 28q-8 0 -20.5 -1q-12.5 -1 -25 -2q-12.5 -1 -23.5 -3q-11 -2 -17 -3l-59 -285q12 -3 35 -4.5t47 -1.5z" />
-<glyph unicode="&#1034;" horiz-adv-x="926" d="M510 335h-319l-71 -335h-80l148 700h80l-62 -291h319l61 291h80l-61 -291q14 3 43 5.5q29 2.5 52 2.5q45 0 83.5 -11q38.5 -11 66 -32.5q27.5 -21.5 43.5 -54.5q16 -33 16 -77q0 -124 -81 -187q-81 -63 -233 -63q-13 0 -32.5 0.5q-19.5 0.5 -42.5 2.5q-22 1 -42.5 4q-20.5 3 -37.5 7zM615 64q110 0 160 46q50 46 50 125q0 63 -40.5 86.5q-40.5 23.5 -107.5 23.5q-9 0 -22 -1q-13 -1 -26 -2q-13 -1 -24 -3q-11 -2 -16 -3l-56 -266q12 -3 35 -4.5t47 -1.5z" />
-<glyph unicode="&#1035;" horiz-adv-x="712" d="M263 0h-80l132 626h-205l15 74h492l-15 -74h-207l-48 -231q30 17 71 31q41 14 94 14q31 0 59 -8q28 -8 48 -25.5q20 -17.5 32 -45q12 -27.5 12 -65.5q0 -30 -7 -62l-48 -234h-80l48 223q6 28 7 51q-1 92 -97 92q-45 0 -83.5 -13q-38.5 -13 -72.5 -33z" />
-<glyph unicode="&#1036;" horiz-adv-x="576" d="M239 324h-51l-68 -324h-80l148 700h80l-70 -326l40 14l287 312h99l-286 -304l-46 -31l39 -40l175 -325h-91zM461 870h116l-5 -21l-175 -97l-73 0z" />
-<glyph unicode="&#1038;" horiz-adv-x="526" d="M294 331l6 -89h4l38 92l205 366h88l-265 -455q-41 -71 -71 -119q-30 -48 -55.5 -77q-25.5 -29 -50 -41.5q-24.5 -12.5 -55.5 -12.5q-32 0 -51 6.5q-19 6.5 -33 15.5l39 69q16 -10 28.5 -13.5q12.5 -3.5 26.5 -3.5q26 0 51 33q25 33 54 84l-136 514h85zM304 870q0 -37 18.5 -57q18.5 -20 51.5 -20q42 0 69 20.5q27 20.5 38 55.5l73 -17q-18 -54 -65 -85.5q-47 -31.5 -119 -31.5q-68 0 -100 33.5q-32 33.5 -34 81.5z" />
-<glyph unicode="&#1039;" horiz-adv-x="627" d="M40 0l148 700h80l-133 -626h307l132 626h80l-149 -700h-199l-33 -179h-74l44 179z" />
-<glyph unicode="&#1040;" horiz-adv-x="557" d="M404 194h-244l-108 -194h-85l404 711h37l101 -711h-77zM199 266h197l-29 213l-2 106h-1l-45 -108z" />
-<glyph unicode="&#1041;" horiz-adv-x="524" d="M187 700h360l-15 -74h-282l-44 -210q17 3 41 6q24 3 47 3q99 0 151.5 -45.5q52.5 -45.5 52.5 -126.5q0 -73 -26.5 -123q-26.5 -50 -69 -80.5q-42.5 -30.5 -96 -44q-53.5 -13.5 -107.5 -13.5q-16 0 -36 0.5q-20 0.5 -46 2.5q-20 2 -40 4.5q-20 2.5 -37 7.5zM224 64q34 0 68 10q34 10 61 31q27 21 44 54.5q17 33.5 17 80.5q0 61 -38.5 87q-38.5 26 -104.5 26q-8 0 -20 -1q-12 -1 -23.5 -2q-11.5 -1 -21.5 -2.5q-10 -1.5 -15 -2.5l-58 -275q12 -4 39.5 -5t51.5 -1z" />
-<glyph unicode="&#1042;" horiz-adv-x="556" d="M561 551q0 -39 -12 -71q-12 -32 -34 -56q-22 -24 -51.5 -38.5q-29.5 -14.5 -63.5 -19.5l0 -4q22 -5 42 -16.5q20 -11.5 35 -28.5q15 -17 24 -39.5q9 -22.5 9 -49.5q0 -70 -27.5 -115.5q-27.5 -45.5 -70 -72.5q-42.5 -27 -95 -37.5q-52.5 -10.5 -103.5 -10.5q-16 0 -38.5 0q-22.5 0 -57.5 2q-60 6 -78 11l146 689q38 6 85.5 10q47.5 4 102.5 4q37 0 71 -9.5q34 -9.5 59.5 -28.5q25.5 -19 41 -49q15.5 -30 15.5 -70zt0 0zM236 64q35 0 69 8.5q34 8.5 61 26.5q27 18 43.5 47q16.5 29 16.5 71q0 31 -15 51.5q-15 20.5 -39 32.5q-24 12 -54.5 16.5q-30.5 4.5 -61.5 4.5h-70l-53 -251q6 -2 18.5 -3q12.5 -1 27 -2q14.5 -1 30 -1.5q15.5 -0.5 27.5 -0.5zt0 0zM253 390q17 0 40 0.5q23 0.5 39 2.5q23 5 49 14q26 9 47.5 25.5q21.5 16.5 35 42q13.5 25.5 13.5 63.5q0 28 -8.5 46.5q-8.5 18.5 -25 30q-16.5 11.5 -39.5 16.5q-23 5 -51 5q-32 0 -60 -1.5q-28 -1.5 -42 -4.5l-51 -240z" />
-<glyph unicode="&#1043;" horiz-adv-x="420" d="M529 626h-277l-132 -626h-80l149 700l355 0z" />
-<glyph unicode="&#1044;" horiz-adv-x="637" d="M541 -129h-55l13 129h-466l-42 -129h-54l42 203h67q10 11 36 50q26 39 59 113.5q33 74.5 68.5 188.5q35.5 114 64.5 274l75 0h280l-133 -626h88zM417 74l117 552h-200q-49 -219 -100.5 -353q-51.5 -134 -97.5 -199z" />
-<glyph unicode="&#1045;" horiz-adv-x="510" d="M189 700h361l-15 -74h-283l-49 -229h259l-15 -74h-259l-53 -249h288l-16 -74h-288l-79 0z" />
-<glyph unicode="&#1046;" horiz-adv-x="767" d="M446 700h75l-69 -326l37 14l257 312h97l-256 -304l-47 -32l40 -41l144 -323h-88l-145 324h-50l-68 -324h-75l71 336l-37 -13l-276 -323h-100l275 313l53 38l-34 35l-133 314h88l126 -314l48 0z" />
-<glyph unicode="&#1047;" horiz-adv-x="515" d="M164 331l15 69h14q18 0 44.5 1.5q26.5 1.5 42.5 3.5q27 3 55 12.5q28 9.5 50.5 26.5q22.5 17 37 42q14.5 25 14.5 59q0 45 -32 70q-32 25 -87 25q-51 0 -85 -8.5q-34 -8.5 -62 -18.5l-8 65q23 11 69.5 22.5q46.5 11.5 107.5 11.5q38 0 71 -9.5q33 -9.5 57.5 -27.5q24.5 -18 38.5 -45q14 -27 14 -63q0 -43 -13.5 -76q-13.5 -33 -36 -57q-22.5 -24 -52.5 -38.5q-30 -14.5 -63 -19.5l0 -4q21 -5 41.5 -15.5q20.5 -10.5 37 -28.5q16.5 -18 26.5 -44.5q10 -26.5 10 -63.5q0 -66 -27 -110.5q-27 -44.5 -70 -71.5q-43 -27 -95.5 -38.5q-52.5 -11.5 -104.5 -11.5q-63 0 -103.5 7.5q-40.5 7.5 -64.5 18.5l36 73q20 -11 57 -19q37 -8 93 -8q34 0 69 8.5q35 8.5 63 27.5q28 19 45.5 49.5q17.5 30.5 17.5 74.5q0 30 -10.5 50q-10.5 20 -28.5 33q-18 13 -41 19q-23 6 -47 8q-11 1 -22 1q-11 0 -22 0z" />
-<glyph unicode="&#1048;" horiz-adv-x="648" d="M545 468l24 81h-3l-59 -84l-416 -465h-51l149 700h80l-101 -476l-25 -76h4l59 82l417 470h51l-148 -700l-80 0z" />
-<glyph unicode="&#1049;" horiz-adv-x="648" d="M545 468l24 81h-3l-59 -84l-416 -465h-51l149 700h80l-101 -476l-25 -76h4l59 82l417 470h51l-148 -700h-80zM383 870q0 -37 18.5 -57q18.5 -20 51.5 -20q42 0 69 20.5q27 20.5 38 55.5l73 -17q-18 -54 -65 -85.5q-47 -31.5 -119 -31.5q-68 0 -100 33.5q-32 33.5 -34 81.5z" />
-<glyph unicode="&#1050;" horiz-adv-x="576" d="M239 324h-51l-68 -324h-80l148 700h80l-70 -326l40 14l287 312h99l-286 -304l-46 -31l39 -40l175 -325l-91 0z" />
-<glyph unicode="&#1051;" horiz-adv-x="594" d="M525 626h-196q-46 -199 -88.5 -331.5q-42.5 -132.5 -89.5 -207.5q-31 -49 -64.5 -70.5q-33.5 -21.5 -70.5 -21.5q-17 0 -32 2.5q-15 2.5 -26 7.5l27 72q10 -3 22 -3q19 0 38.5 12q19.5 12 39.5 42q18 27 39 72q21 45 44 113.5q23 68.5 48 163.5q25 95 52 223l78 0h274l-148 -700l-80 0z" />
-<glyph unicode="&#1052;" horiz-adv-x="754" d="M651 470l31 105h-4l-56 -96l-240 -316h-24l-115 316l-15 96h-4l-8 -104l-100 -471h-76l149 700h55l130 -358l15 -78h1l46 80l273 356h71l-149 -700l-80 0z" />
-<glyph unicode="&#1053;" horiz-adv-x="639" d="M505 321h-318l-67 -321h-80l148 700h80l-64 -305h317l64 305h80l-148 -700l-80 0z" />
-<glyph unicode="&#1054;" horiz-adv-x="651" d="M71 256q0 92 25 175q25 83 71.5 145.5q46.5 62.5 112 99q65.5 36.5 145.5 36.5q48 0 89 -14.5q41 -14.5 70.5 -46q29.5 -31.5 46 -81.5q16.5 -50 16.5 -122q0 -94 -25 -177.5q-25 -83.5 -70 -146.5q-45 -63 -107.5 -99.5q-62.5 -36.5 -137.5 -36.5q-118 0 -177 68.5q-59 68.5 -59 199.5zt0 0zM155 257q0 -94 39 -145.5q39 -51.5 115 -51.5q56 0 102.5 31q46.5 31 80.5 84q34 53 52.5 123q18.5 70 18.5 148q0 58 -13 96q-13 38 -34.5 59.5q-21.5 21.5 -49 30q-27.5 8.5 -55.5 8.5q-57 0 -104 -31.5q-47 -31.5 -80.5 -84.5q-33.5 -53 -52.5 -122.5t-19 -144.5z" />
-<glyph unicode="&#1055;" horiz-adv-x="627" d="M558 626h-306l-132 -626h-80l149 700h464l-148 -700l-80 0z" />
-<glyph unicode="&#1056;" horiz-adv-x="532" d="M187 693q38 9 80 12q42 3 83 3q46 0 85.5 -10q39.5 -10 68.5 -32q29 -22 45.5 -56.5q16.5 -34.5 16.5 -82.5q0 -76 -27.5 -127q-27.5 -51 -72 -81.5q-44.5 -30.5 -100.5 -43.5q-56 -13 -113 -13q-5 0 -15.5 0q-10.5 0 -22.5 0.5q-12 0.5 -23 1.5q-11 1 -16 2l-56 -266h-80zM333 636q-23 0 -44.5 -1.5q-21.5 -1.5 -35.5 -4.5l-61 -291q4 -2 13.5 -2.5q9.5 -0.5 20 -1.5q10.5 -1 20.5 -1q10 0 15 0q43 0 83 9q40 9 70.5 31q30.5 22 49 57q18.5 35 18.5 88q0 36 -12 59q-12 23 -32.5 35.5q-20.5 12.5 -47.5 17.5t-57 5z" />
-<glyph unicode="&#1057;" horiz-adv-x="544" d="M480 29q-34 -23 -72 -32q-38 -9 -88 -9q-59 0 -105 21.5q-46 21.5 -78 60q-32 38.5 -49 90.5q-17 52 -17 114q0 113 33 195.5q33 82.5 87 136.5q54 54 121.5 80q67.5 26 136.5 26q57 0 93 -8q36 -8 59 -19l-36 -73q-20 11 -52.5 18.5q-32.5 7.5 -74.5 7.5q-56 0 -107.5 -24.5q-51.5 -24.5 -90.5 -70.5q-39 -46 -62 -112q-23 -66 -23 -148q0 -48 12.5 -88.5q12.5 -40.5 36 -70q23.5 -29.5 58 -46q34.5 -16.5 78.5 -16.5q47 0 78 10.5q31 10.5 56 24.5z" />
-<glyph unicode="&#1058;" horiz-adv-x="528" d="M602 626h-207l-132 -626h-80l132 626h-205l15 74l492 0z" />
-<glyph unicode="&#1059;" horiz-adv-x="526" d="M294 331l6 -89h4l38 92l205 366h88l-265 -455q-41 -71 -71 -119q-30 -48 -55.5 -77q-25.5 -29 -50 -41.5q-24.5 -12.5 -55.5 -12.5q-32 0 -51 6.5q-19 6.5 -33 15.5l39 69q16 -10 28.5 -13.5q12.5 -3.5 26.5 -3.5q26 0 51 33q25 33 54 84l-136 514l85 0z" />
-<glyph unicode="&#1060;" horiz-adv-x="742" d="M309 80q-17 -4 -33.5 -5.5q-16.5 -1.5 -39.5 -1.5q-27 0 -57.5 9.5q-30.5 9.5 -56 33.5q-25.5 24 -42.5 64q-17 40 -17 101q0 82 21.5 148q21.5 66 61.5 112.5q40 46.5 96 71.5q56 25 124 25q13 0 32 -1q19 -1 29 -3l19 86h77l-19 -89q19 5 38 6q19 1 34 1q36 0 68 -11.5q32 -11.5 55.5 -35.5q23.5 -24 37 -62.5q13.5 -38.5 13.5 -92.5q0 -88 -24 -155.5q-24 -67.5 -64.5 -113.5q-40.5 -46 -94.5 -70q-54 -24 -114 -24q-13 0 -34 1.5q-21 1.5 -32 5.5l-22 -100h-77zM553 569q-13 0 -32 -1q-19 -1 -33 -6l-89 -417q10 -2 25.5 -2.5q15.5 -0.5 29.5 -0.5q52 0 91.5 23.5q39.5 23.5 66.5 63q27 39.5 40.5 90.5q13.5 51 13.5 106q0 78 -31 111q-31 33 -82 33zt0 0zM262 142q10 0 29.5 0.5q19.5 0.5 33.5 5.5l88 417q-11 2 -27 3q-16 1 -30 1q-47 0 -85.5 -21q-38.5 -21 -66 -58.5q-27.5 -37.5 -42.5 -89.5q-15 -52 -15 -114q0 -41 10 -68.5q10 -27.5 26.5 -44.5q16.5 -17 37 -24t41.5 -7z" />
-<glyph unicode="&#1061;" horiz-adv-x="588" d="M289 358l-130 342h87l86 -237l12 -57l34 57l191 237h97l-279 -339l142 -361h-87l-96 251l-14 60l-38 -60l-204 -251l-97 0z" />
-<glyph unicode="&#1062;" horiz-adv-x="654" d="M558 -129h-54l12 129h-18h-81h-295h-82l149 700h80l-133 -626h298l132 626h80l-132 -626l87 0z" />
-<glyph unicode="&#1063;" horiz-adv-x="576" d="M257 700l-48 -225q-3 -14 -5 -27.5q-2 -13.5 -2 -24.5q0 -92 94 -92q45 0 86.5 12.5q41.5 12.5 70.5 33.5l69 323h80l-148 -700h-80l64 302q-29 -17 -69.5 -31q-40.5 -14 -97.5 -14q-30 0 -57.5 7.5q-27.5 7.5 -48.5 25q-21 17.5 -33 45q-12 27.5 -12 67.5q0 30 7 62l50 236z" />
-<glyph unicode="&#1064;" horiz-adv-x="835" d="M416 0h-80h-216h-80l149 700h80l-133 -626h217l132 626h80l-133 -626h217l132 626h80l-149 -700l-80 0z" />
-<glyph unicode="&#1065;" horiz-adv-x="868" d="M120 0h-80l149 700h80l-133 -626h217l132 626h80l-133 -626h217l132 626h80l-133 -626h88l-43 -203h-55l13 129h-19h-80h-216l-80 0z" />
-<glyph unicode="&#1066;" horiz-adv-x="598" d="M243 626h-151l15 74h231l-58 -272q6 1 17 2.5q11 1.5 24 3q13 1.5 26.5 2q13.5 0.5 24.5 0.5q41 0 79 -9.5q38 -9.5 67 -31q29 -21.5 46 -55.5q17 -34 17 -83q0 -68 -23.5 -118q-23.5 -50 -65.5 -82.5q-42 -32.5 -99.5 -48.5q-57.5 -16 -125.5 -16q-13 0 -32.5 0.5q-19.5 0.5 -45.5 2.5q-20 1 -40 4q-20 3 -37 8zM286 64q45 0 83.5 11.5q38.5 11.5 67 34.5q28.5 23 44.5 57.5q16 34.5 16 79.5q0 33 -12 55.5q-12 22.5 -32 36q-20 13.5 -46.5 19.5q-26.5 6 -55.5 6q-9 0 -21.5 -1q-12.5 -1 -25.5 -2q-13 -1 -24 -3q-11 -2 -16 -3l-60 -285q13 -3 35.5 -4.5t46.5 -1.5z" />
-<glyph unicode="&#1067;" horiz-adv-x="733" d="M679 700h80l-148 -700h-80zM187 700h80l-57 -272q16 3 38.5 5.5q22.5 2.5 45.5 2.5q41 0 76.5 -11q35.5 -11 61.5 -33q26 -22 40.5 -54.5q14.5 -32.5 14.5 -75.5q0 -72 -25.5 -123.5q-25.5 -51.5 -68 -84q-42.5 -32.5 -98 -47.5q-55.5 -15 -114.5 -15q-24 0 -63 2q-45 4 -78 13zM203 64q39 0 75.5 12q36.5 12 64 35q27.5 23 44 58q16.5 35 16.5 82q0 58 -35 85.5q-35 27.5 -103 27.5q-17 0 -39 -3q-22 -3 -33 -6l-59 -285q14 -3 30 -4.5t39 -1.5z" />
-<glyph unicode="&#1068;" horiz-adv-x="527" d="M187 700h80l-57 -272q5 1 15.5 2.5q10.5 1.5 23 3q12.5 1.5 26.5 2q14 0.5 25 0.5q42 0 80 -10q38 -10 67 -31.5q29 -21.5 46 -55.5q17 -34 17 -83q0 -68 -24 -118q-24 -50 -66.5 -82.5q-42.5 -32.5 -99.5 -48q-57 -15.5 -123 -15.5q-13 0 -32.5 0.5q-19.5 0.5 -46.5 2.5q-19 1 -39.5 4q-20.5 3 -38.5 8zM216 64q41 0 79 10.5q38 10.5 67 33q29 22.5 46.5 57q17.5 34.5 17.5 83.5q0 60 -40.5 88q-40.5 28 -106.5 28q-8 0 -20.5 -1q-12.5 -1 -25.5 -2q-13 -1 -24 -3q-11 -2 -16 -3l-59 -285q12 -3 35 -4.5t47 -1.5z" />
-<glyph unicode="&#1069;" horiz-adv-x="554" d="M192 392h278q1 11 1.5 23q0.5 12 0.5 23q0 95 -43 148.5q-43 53.5 -137 53.5q-45 0 -79 -10q-34 -10 -59 -23l-6 66q34 18 73.5 28.5q39.5 10.5 89.5 10.5q72 0 118.5 -24q46.5 -24 73.5 -61.5q27 -37.5 38 -84q11 -46.5 11 -91.5q0 -98 -23.5 -182.5q-23.5 -84.5 -71.5 -146.5q-48 -62 -122 -98q-74 -36 -176 -36q-46 0 -85 7q-39 7 -63 18l37 73q20 -11 54.5 -18.5q34.5 -7.5 72.5 -7.5q51 0 97.5 17q46.5 17 85 50.5q38.5 33.5 65 82q26.5 48.5 37.5 111.5l-282 0z" />
-<glyph unicode="&#1070;" horiz-adv-x="861" d="M204 395h117q47 163 131 240q84 77 190 77q99 0 157 -57.5q58 -57.5 58 -174.5q0 -99 -23.5 -188.5q-23.5 -89.5 -68.5 -157q-45 -67.5 -110 -107q-65 -39.5 -148 -39.5q-53 0 -91 18.5q-38 18.5 -62.5 51.5q-24.5 33 -36 78.5q-11.5 45.5 -11.5 99.5q0 41 6 85l-125 0l-67 -321h-80l148 700h80zM388 233q0 -35 7 -66.5q7 -31.5 23.5 -55q16.5 -23.5 43 -37.5q26.5 -14 66.5 -14q53 0 98 33.5q45 33.5 77.5 89.5q32.5 56 51 130.5q18.5 74.5 18.5 156.5q0 77 -34.5 123.5q-34.5 46.5 -99.5 46.5q-55 0 -101 -33q-46 -33 -79.5 -88.5q-33.5 -55.5 -52 -129.5t-18.5 -156z" />
-<glyph unicode="&#1071;" horiz-adv-x="543" d="M423 0h-80l64 304l-97 -21l-227 -283h-96l200 251l67 44q-19 6 -40.5 19q-21.5 13 -39.5 33.5q-18 20.5 -30 50q-12 29.5 -12 70.5q0 69 26.5 115q26.5 46 68.5 74q42 28 94.5 39.5q52.5 11.5 104.5 11.5q32 0 71 -3q39 -3 72 -12zM407 636q-35 0 -69 -8q-34 -8 -61 -26.5q-27 -18.5 -44 -50q-17 -31.5 -17 -77.5q0 -57 35.5 -89q35.5 -32 100.5 -32h65l59 277q-12 3 -28.5 4.5t-40.5 1.5z" />
-<glyph unicode="&#1072;" horiz-adv-x="487" d="M414 197q-8 -37 -11 -75q-3 -38 -3 -71q0 -15 0 -28.5q0 -13.5 2 -24.5l-56 0l-14 87h-4q-12 -17 -29.5 -34.5q-17.5 -17.5 -38.5 -31.5q-21 -14 -45 -22.5q-24 -8.5 -51 -8.5q-119 0 -119 155q0 64 16.5 130q16.5 66 51 119q34.5 53 89 87q54.5 34 131.5 34q28 0 68.5 -6.5q40.5 -6.5 75.5 -17.5zM187 52q24 0 46 11.5q22 11.5 41.5 28.5q19.5 17 34.5 36.5q15 19.5 24 36.5l56 270q-30 14 -76 14q-46 0 -81 -27q-35 -27 -59 -70.5q-24 -43.5 -36 -98.5q-12 -55 -12 -110q0 -38 15 -64.5t47 -26.5z" />
-<glyph unicode="&#1073;" horiz-adv-x="499" d="M154 382q42 62 88.5 89q46.5 27 106.5 27q69 0 99 -39q30 -39 30 -109q0 -83 -21.5 -150q-21.5 -67 -57.5 -114q-36 -47 -82.5 -72.5q-46.5 -25.5 -97.5 -25.5q-44 0 -74.5 15q-30.5 15 -49 40q-18.5 25 -27 58q-8.5 33 -8.5 70q0 106 20.5 197q20.5 91 56 159.5q35.5 68.5 83.5 110q48 41.5 104 50.5q42 6 77 9.5q35 3.5 63 6.5q28 3 47.5 7.5q19.5 4.5 30.5 13.5l-3 -70q-16 -12 -53.5 -20.5q-37.5 -8.5 -112.5 -14.5q-34 -3 -65.5 -12q-31.5 -9 -60.5 -34q-29 -25 -54 -71q-25 -46 -46 -121zM140 182q0 -26 3 -49q3 -23 13 -40q10 -17 28 -26.5q18 -9.5 48 -9.5q30 0 59.5 19.5q29.5 19.5 53 55.5q23.5 36 38.5 87q15 51 15 114q0 19 -3.5 36q-3.5 17 -12.5 30.5q-9 13.5 -24.5 21.5q-15.5 8 -40.5 8q-33 0 -65 -19.5q-32 -19.5 -57 -53.5q-25 -34 -40 -78.5t-15 -95.5z" />
-<glyph unicode="&#1074;" horiz-adv-x="456" d="M69 285q25 112 86 167q61 55 151 55q38 0 63 -7q25 -7 40 -19.5q15 -12.5 21 -29.5q6 -17 6 -38q0 -53 -34.5 -92q-34.5 -39 -91.5 -55l-2 -4q48 -2 73.5 -24q25.5 -22 25.5 -59q0 -46 -18.5 -80.5q-18.5 -34.5 -49.5 -58q-31 -23.5 -71 -35.5q-40 -12 -83 -12q-29 0 -54.5 7q-25.5 7 -44 23.5q-18.5 16.5 -29 45q-10.5 28.5 -10.5 70.5q0 15 1 28q1 13 3.5 29q2.5 16 6.5 37.5q4 21.5 11 51.5zt0 0zM129 222q-5 -27 -7.5 -45.5q-2.5 -18.5 -2.5 -33.5q0 -86 80 -86q26 0 49.5 7q23.5 7 41.5 21.5q18 14.5 28.5 35.5q10.5 21 10.5 50q0 26 -21.5 42q-21.5 16 -72.5 16q-3 0 -7.5 0q-4.5 0 -15 -1q-10.5 -1 -30.5 -2q-20 -1 -53 -4zt0 0zM231 289q15 1 37 8q22 7 42.5 19.5q20.5 12.5 34.5 30.5q14 18 14 42q0 27 -14 40.5q-14 13.5 -54 13.5q-57 0 -92 -36q-35 -36 -52 -103l-6 -24z" />
-<glyph unicode="&#1075;" horiz-adv-x="411" d="M27 120q0 48 21 78q21 30 53 50q32 20 69 33q37 13 69 26.5q32 13.5 53 31q21 17.5 21 46.5q0 32 -17.5 45q-17.5 13 -60.5 13q-38 0 -65.5 -8.5q-27.5 -8.5 -49.5 -19.5l-15 59q32 17 70 25q38 8 80 8q40 0 66.5 -9q26.5 -9 42.5 -24q16 -15 22.5 -35q6.5 -20 6.5 -42q0 -48 -21 -77.5q-21 -29.5 -53 -48q-32 -18.5 -69 -30.5q-37 -12 -69 -26q-32 -14 -53 -33.5q-21 -19.5 -21 -52.5q0 -35 22.5 -56q22.5 -21 59.5 -21q37 0 73 13q36 13 56 27l20 -49q-31 -26 -74.5 -40.5q-43.5 -14.5 -79.5 -14.5q-49 0 -79.5 13.5q-30.5 13.5 -48 33.5q-17.5 20 -23.5 43t-6 42z" />
-<glyph unicode="&#1076;" horiz-adv-x="495" d="M305 505q34 0 53.5 -6.5q19.5 -6.5 33.5 -16.5l5 0q-5 76 -55.5 121q-50.5 45 -137.5 45l14 64q73 0 122 -22q49 -22 79 -60q30 -38 42.5 -89q12.5 -51 12.5 -109q0 -105 -20.5 -187.5q-20.5 -82.5 -56.5 -139.5q-36 -57 -84.5 -87q-48.5 -30 -104.5 -30q-81 0 -119 50q-38 50 -38 138q0 63 17.5 122q17.5 59 50.5 105q33 46 80 74q47 28 106 28zt0 0zM299 441q-32 0 -62 -20q-30 -20 -53.5 -56q-23.5 -36 -38 -86.5q-14.5 -50.5 -14.5 -110.5q0 -49 20 -82.5q20 -33.5 65 -33.5q49 0 83 35q34 35 55 87.5q21 52.5 30.5 114q9.5 61.5 9.5 114.5q-17 20 -38.5 29t-56.5 9z" />
-<glyph unicode="&#1077;" horiz-adv-x="463" d="M389 49q-35 -30 -82.5 -45.5q-47.5 -15.5 -95.5 -15.5q-80 0 -120.5 46q-40.5 46 -40.5 128q0 82 23 147q23 65 60.5 110q37.5 45 85 69q47.5 24 97.5 24q36 0 62.5 -10q26.5 -10 43.5 -26.5q17 -16.5 25 -38q8 -21.5 8 -45.5q0 -71 -69 -111.5q-69 -40.5 -201 -40.5q-12 0 -25 0.5q-13 0.5 -27 1.5q-4 -19 -6 -36q-2 -17 -2 -30q0 -55 25 -89.5q25 -34.5 78 -34.5q44 0 80.5 14.5q36.5 14.5 56.5 30.5zM304 448q-55 0 -95.5 -37.5q-40.5 -37.5 -61.5 -112.5q38 0 79 2q41 2 74.5 10.5q33.5 8.5 55.5 27q22 18.5 22 51.5q0 10 -3.5 20.5q-3.5 10.5 -11.5 19q-8 8.5 -22.5 14t-36.5 5.5z" />
-<glyph unicode="&#1078;" horiz-adv-x="704" d="M224 225q-18 -67 -39.5 -111q-21.5 -44 -45.5 -70.5q-24 -26.5 -50.5 -37.5q-26.5 -11 -53.5 -11q-12 0 -24.5 2q-12.5 2 -24.5 5l20 68q12 -3 24 -3q40 0 75 42.5q35 42.5 55 143.5q5 29 8 51.5q3 22.5 3 41.5q0 53 -18 72.5q-18 19.5 -46 19.5q-5 0 -10 -0.5q-5 -0.5 -10 -1.5l-9 62q14 2 26 3.5q12 1.5 23 1.5q56 0 84 -32.5q28 -32.5 28 -104.5q0 -18 -2 -38.5q-2 -20.5 -6 -43.5l98 0l46 216h75l-47 -216h91q17 64 37.5 106q20.5 42 44 67.5q23.5 25.5 49 36q25.5 10.5 51.5 10.5q22 0 43 -6l-17 -64q-5 1 -10 1.5q-5 0.5 -10 0.5q-18 0 -34.5 -8q-16.5 -8 -31 -27.5q-14.5 -19.5 -27.5 -51.5q-13 -32 -25 -80q-6 -25 -9.5 -49q-3.5 -24 -3.5 -47q0 -48 15.5 -81.5q15.5 -33.5 49.5 -33.5q11 0 26 5l11 -61q-16 -5 -30 -6.5q-14 -1.5 -27 -1.5q-34 0 -56.5 13.5q-22.5 13.5 -36 36q-13.5 22.5 -19 52q-5.5 29.5 -5.5 61.5q0 17 1.5 34q1.5 17 3.5 34l-93 0l-47 -225h-75l48 225z" />
-<glyph unicode="&#1079;" horiz-adv-x="418" d="M120 224l13 62h66q17 0 36.5 8q19.5 8 36 22q16.5 14 27.5 31.5q11 17.5 11 37.5q0 32 -19 45q-19 13 -70 13q-36 0 -62.5 -8q-26.5 -8 -49.5 -19l-16 59q32 17 70.5 24.5q38.5 7.5 88.5 7.5q74 0 106 -26.5q32 -26.5 32 -76.5q0 -26 -9 -48q-9 -22 -24.5 -39.5q-15.5 -17.5 -35 -29.5q-19.5 -12 -40.5 -19l0 -4q43 -8 60.5 -32.5q17.5 -24.5 17.5 -56.5q0 -44 -18 -78q-18 -34 -48.5 -57.5q-30.5 -23.5 -72 -36q-41.5 -12.5 -89.5 -12.5q-40 0 -77 10q-37 10 -58 26l32 60q20 -13 50 -22.5q30 -9.5 66 -9.5q58 0 97.5 29.5q39.5 29.5 39.5 80.5q0 30 -24 44.5q-24 14.5 -82 14.5z" />
-<glyph unicode="&#1080;" horiz-adv-x="511" d="M213 500l-70 -333q-6 -27 -6 -50q0 -28 11 -46.5q11 -18.5 40 -18.5q24 0 48.5 12q24.5 12 47 31q22.5 19 41 42q18.5 23 30.5 45l67 318h75l-63 -297q-4 -17 -8 -41.5q-4 -24.5 -7.5 -51.5q-3.5 -27 -5.5 -52.5q-2 -25.5 -2 -44.5v-13h-59v95h-4q-15 -20 -34.5 -39q-19.5 -19 -43 -34q-23.5 -15 -50.5 -24.5q-27 -9.5 -57 -9.5q-22 0 -40.5 5q-18.5 5 -32.5 17.5q-14 12.5 -22 33q-8 20.5 -8 52.5q0 35 10 79l68 325z" />
-<glyph unicode="&#1081;" horiz-adv-x="511" d="M213 500l-70 -333q-6 -27 -6 -50q0 -28 11 -46.5q11 -18.5 40 -18.5q24 0 48.5 12q24.5 12 47 31q22.5 19 41 42q18.5 23 30.5 45l67 318h75l-63 -297q-4 -17 -8 -41.5q-4 -24.5 -7.5 -51.5q-3.5 -27 -5.5 -52.5q-2 -25.5 -2 -44.5v-13h-59v95h-4q-15 -20 -34.5 -39q-19.5 -19 -43 -34q-23.5 -15 -50.5 -24.5q-27 -9.5 -57 -9.5q-22 0 -40.5 5q-18.5 5 -32.5 17.5q-14 12.5 -22 33q-8 20.5 -8 52.5q0 35 10 79l68 325zM270 702q0 -47 19.5 -64.5q19.5 -17.5 49.5 -17.5q31 0 58.5 19q27.5 19 44.5 62l54 -19q-20 -58 -67.5 -89q-47.5 -31 -103.5 -31q-25 0 -47.5 6q-22.5 6 -39.5 19q-17 13 -27 33.5q-10 20.5 -10 48.5l0 9z" />
-<glyph unicode="&#1082;" horiz-adv-x="464" d="M211 225h-54l-47 -225h-75l106 500h75l-48 -226l41 13l186 213h90l-183 -201l-46 -33l40 -40l112 -226l-84 0z" />
-<glyph unicode="&#1083;" horiz-adv-x="490" d="M388 436h-134q-26 -107 -49 -189q-23 -82 -49.5 -137.5q-26.5 -55.5 -58.5 -84.5q-32 -29 -77 -29q-17 0 -30.5 2q-13.5 2 -22.5 7l23 64q12 -3 23 -3q22 0 41.5 16q19.5 16 40.5 63q21 47 45.5 132q24.5 85 57.5 223l278 0l-106 -500l-75 0z" />
-<glyph unicode="&#1084;" horiz-adv-x="621" d="M490 297l25 95h-4l-51 -77l-156 -196h-26l-78 196l-15 77h-4l-13 -94l-63 -298h-70l106 500h69l85 -224l15 -58h2l41 60l172 222h82l-106 -500l-74 0z" />
-<glyph unicode="&#1085;" horiz-adv-x="521" d="M373 220h-216l-47 -220h-75l106 500h75l-44 -208h216l44 208h75l-106 -500l-75 0z" />
-<glyph unicode="&#1086;" horiz-adv-x="498" d="M50 156q0 79 20.5 144.5q20.5 65.5 56.5 112.5q36 47 83.5 73q47.5 26 101.5 26q42 0 71.5 -13.5q29.5 -13.5 48 -37q18.5 -23.5 26.5 -54q8 -30.5 8 -63.5q0 -75 -19.5 -140q-19.5 -65 -54 -113q-34.5 -48 -80.5 -75.5q-46 -27.5 -100 -27.5q-45 0 -75.5 14.5q-30.5 14.5 -50 38.5q-19.5 24 -28 54q-8.5 30 -8.5 61zt0 0zM130 174q0 -59 22 -90.5q22 -31.5 70 -31.5q33 0 62.5 23.5q29.5 23.5 52 63.5q22.5 40 36 91.5q13.5 51.5 13.5 107.5q0 51 -18.5 80.5q-18.5 29.5 -70.5 29.5q-33 0 -63 -22.5q-30 -22.5 -53.5 -60.5q-23.5 -38 -37 -87.5t-13.5 -103.5z" />
-<glyph unicode="&#1087;" horiz-adv-x="522" d="M320 0l67 316q4 18 7 35.5q3 17.5 3 31.5q0 29 -13.5 47q-13.5 18 -50.5 18q-26 0 -51 -12q-25 -12 -47 -30.5q-22 -18.5 -39.5 -41q-17.5 -22.5 -29.5 -44.5l-66 -320h-75l106 500h52l-4 -86h4q13 16 31 33.5q18 17.5 40.5 31.5q22.5 14 50.5 23.5q28 9.5 62 9.5q50 0 79 -24q29 -24 29 -84q0 -30 -9 -72l-71 -332z" />
-<glyph unicode="&#1088;" horiz-adv-x="508" d="M144 500h52l-5 -86h4q14 18 31.5 35.5q17.5 17.5 38.5 31.5q21 14 46 22.5q25 8.5 54 8.5q24 0 45 -7.5q21 -7.5 37 -25q16 -17.5 25.5 -46.5q9.5 -29 9.5 -71q0 -88 -24 -157.5q-24 -69.5 -63 -117.5q-39 -48 -87.5 -73.5q-48.5 -25.5 -96.5 -25.5q-35 0 -61.5 6.5q-26.5 6.5 -35.5 13.5l-44 -208h-75zM337 448q-27 0 -51.5 -14q-24.5 -14 -45 -34.5q-20.5 -20.5 -36.5 -44q-16 -23.5 -26 -43.5l-49 -237q17 -13 35 -18q18 -5 39 -5q39 0 74.5 21.5q35.5 21.5 63.5 61.5q28 40 44.5 96q16.5 56 16.5 125q0 40 -16.5 66t-48.5 26z" />
-<glyph unicode="&#1089;" horiz-adv-x="420" d="M365 43q-15 -13 -34.5 -23q-19.5 -10 -40 -17q-20.5 -7 -40.5 -11q-20 -4 -38 -4q-49 0 -80.5 15.5q-31.5 15.5 -49.5 39.5q-18 24 -25 52q-7 28 -7 53q0 85 23 152.5q23 67.5 61.5 114.5q38.5 47 88.5 72q50 25 103 25q38 0 62.5 -7q24.5 -7 44.5 -16l-28 -62q-17 10 -42 15.5q-25 5.5 -54 5.5q-34 0 -66.5 -23q-32.5 -23 -57.5 -60.5q-25 -37.5 -40 -86q-15 -48.5 -15 -99.5q0 -65 27 -96q27 -31 73 -31q30 0 63 13.5q33 13.5 53 27.5z" />
-<glyph unicode="&#1090;" horiz-adv-x="763" d="M305 0l60 283q8 35 12 62q4 27 4 47q0 27 -10 41.5q-10 14.5 -34 14.5q-25 0 -49 -13q-24 -13 -45 -32.5q-21 -19.5 -38.5 -41.5q-17.5 -22 -27.5 -40l-66 -321h-75l106 500h53l-6 -86h4q16 16 34.5 33.5q18.5 17.5 41 31.5q22.5 14 49 23.5q26.5 9.5 58.5 9.5q45 0 60.5 -28q15.5 -28 15.5 -78q15 19 35 38q20 19 43.5 34q23.5 15 49.5 24.5q26 9.5 52 9.5q46 0 70.5 -21.5q24.5 -21.5 24.5 -79.5q0 -42 -15 -111l-63 -300h-75l63 301q6 29 9.5 52q3.5 23 3.5 40q0 27 -11 41q-11 14 -37 14q-21 0 -44.5 -13.5q-23.5 -13.5 -45.5 -33.5q-22 -20 -39.5 -43q-17.5 -23 -27.5 -43l-65 -315z" />
-<glyph unicode="&#1091;" horiz-adv-x="439" d="M194 176l5 -96h5l38 97l166 323h80l-236 -446q-26 -49 -51.5 -95.5q-25.5 -46.5 -52.5 -83q-27 -36.5 -56 -58.5q-29 -22 -60 -22q-17 0 -29.5 2q-12.5 2 -22.5 7l24 69q11 -4 24 -4q29 0 58 30q29 30 65 101l-86 500l80 0z" />
-<glyph unicode="&#1092;" horiz-adv-x="681" d="M258 -4q-14 -4 -25 -6q-11 -2 -25 -2q-82 0 -123 44.5q-41 44.5 -41 115.5q0 85 22 152q22 67 60 113.5q38 46.5 88 70.5q50 24 107 24q26 0 45 -4l41 196h72l-42 -197q18 3 31.5 4q13.5 1 26.5 1q78 0 118.5 -43.5q40.5 -43.5 40.5 -113.5q0 -94 -24.5 -162.5q-24.5 -68.5 -63.5 -113q-39 -44.5 -88 -66q-49 -21.5 -98 -21.5q-9 0 -25.5 1.5q-16.5 1.5 -25.5 5.5l-41 -195h-72zM466 444q-12 0 -21 -1.5q-9 -1.5 -23 -4.5l-81 -382q10 -2 20.5 -3q10.5 -1 21.5 -1q32 0 66 18q34 18 61.5 54q27.5 36 45.5 90.5q18 54.5 18 128.5q0 101 -108 101zt0 0zM223 52q11 0 23 2q12 2 26 4l81 381q-11 2 -21 3.5q-10 1.5 -24 1.5q-30 0 -62.5 -18.5q-32.5 -18.5 -59.5 -54.5q-27 -36 -44.5 -88q-17.5 -52 -17.5 -119q0 -50 25 -81t74 -31z" />
-<glyph unicode="&#1093;" horiz-adv-x="484" d="M203 256l-107 244h85l59 -138l18 -57l41 57l121 138h91l-212 -240l119 -260h-85l-68 152l-20 60l-42 -60l-134 -152l-91 0z" />
-<glyph unicode="&#1094;" horiz-adv-x="530" d="M417 0h-3q-35 0 -52 17q-17 17 -17 49q0 14 3 29l-4 0q-14 -19 -33 -38q-19 -19 -42 -34.5q-23 -15.5 -49.5 -25q-26.5 -9.5 -56.5 -9.5q-22 0 -40.5 5q-18.5 5 -32.5 17.5q-14 12.5 -22 33q-8 20.5 -8 52.5q0 35 10 79l68 325h75l-70 -333q-6 -27 -6 -50q0 -28 11 -46.5q11 -18.5 40 -18.5q24 0 48.5 12q24.5 12 47 31q22.5 19 41 42q18.5 23 30.5 45l67 318h75q-20 -94 -34 -158.5q-14 -64.5 -23 -107.5q-9 -43 -14.5 -68q-5.5 -25 -8 -38.5q-2.5 -13.5 -3 -19.5q-0.5 -6 -0.5 -12q0 -32 27 -32h55l-52 -191l-60 0z" />
-<glyph unicode="&#1095;" horiz-adv-x="470" d="M185 500l-29 -136q-7 -35 -7 -60q0 -29 13.5 -46.5q13.5 -17.5 50.5 -17.5q44 0 73 12.5q29 12.5 46 24.5l48 223h76l-106 -500h-76l44 210q-17 -10 -49 -22q-32 -12 -80 -12q-27 0 -49 5.5q-22 5.5 -37.5 18q-15.5 12.5 -24.5 33.5q-9 21 -9 52q-3 36 40 215z" />
-<glyph unicode="&#1096;" horiz-adv-x="744" d="M471 500l-59 -283q-7 -33 -11.5 -60q-4.5 -27 -4.5 -47q0 -28 10 -43q10 -15 33 -15q17 0 38.5 12.5q21.5 12.5 42.5 31.5q21 19 39.5 41q18.5 22 28.5 42l67 321h75l-74 -349q-8 -38 -12.5 -77q-4.5 -39 -6.5 -74l-57 0l-3 85h-4q-33 -42 -74.5 -69.5q-41.5 -27.5 -98.5 -27.5q-37 0 -56.5 27.5q-19.5 27.5 -19.5 74.5v3q-15 -20 -33.5 -38.5q-18.5 -18.5 -40.5 -33.5q-22 -15 -47 -24q-25 -9 -52 -9q-45 0 -68.5 21q-23.5 21 -23.5 79q0 43 15 112l63 300h75l-63 -301q-12 -54 -12 -89q0 -58 39 -58q24 0 47.5 13q23.5 13 44 33q20.5 20 36.5 43.5q16 23.5 26 43.5l66 315z" />
-<glyph unicode="&#1097;" horiz-adv-x="764" d="M579 95q-34 -50 -78 -78.5q-44 -28.5 -101 -28.5q-37 0 -56.5 27.5q-19.5 27.5 -19.5 74.5v3q-15 -20 -33.5 -38.5q-18.5 -18.5 -40.5 -33.5q-22 -15 -47 -24q-25 -9 -52 -9q-45 0 -68.5 21q-23.5 21 -23.5 79q0 43 15 112l63 300h75l-63 -301q-5 -26 -8.5 -48q-3.5 -22 -3.5 -39q0 -29 9.5 -44.5q9.5 -15.5 29.5 -15.5q24 0 47.5 13q23.5 13 44 33q20.5 20 36.5 43.5q16 23.5 26 43.5l66 315h75l-59 -283q-7 -33 -11.5 -60q-4.5 -27 -4.5 -47q0 -28 10 -43q10 -15 33 -15q17 0 38.5 12.5q21.5 12.5 42.5 31.5q21 19 39.5 41q18.5 22 28.5 42l67 321h75q-18 -84 -30 -142q-12 -58 -20 -96q-8 -38 -12 -58.5q-4 -20.5 -6.5 -31q-2.5 -10.5 -3.5 -14q-1 -3.5 -1 -5.5q-2 -12 -5 -27.5q-3 -15.5 -3 -29.5q0 -32 27 -32h54l-51 -191h-61l34 127h-3q-36 0 -52.5 17q-16.5 17 -16.5 48q0 13 3 30l-4 0z" />
-<glyph unicode="&#1098;" horiz-adv-x="475" d="M167 135q-4 -16 -4 -31q0 -46 52 -46q31 0 58 10q27 10 47 28q20 18 31 41.5q11 23.5 11 50.5q0 29 -15.5 47.5q-15.5 18.5 -60.5 18.5q-10 0 -23 -1.5q-13 -1.5 -26.5 -4q-13.5 -2.5 -26.5 -6.5q-13 -4 -22 -10zM202 298q24 8 52 13q28 5 57 5q58 0 94.5 -26.5q36.5 -26.5 36.5 -83.5q0 -47 -19 -86q-19 -39 -53 -67q-34 -28 -79.5 -43.5q-45.5 -15.5 -97.5 -15.5q-57 0 -82 26q-25 26 -25 67q0 10 1 20.5q1 10.5 4 21.5l75 302h-114l14 69l190 0z" />
-<glyph unicode="&#1099;" horiz-adv-x="639" d="M139 117q-1 -5 -1.5 -9q-0.5 -4 -0.5 -8q0 -19 10.5 -30.5q10.5 -11.5 34.5 -11.5q30 0 56.5 9.5q26.5 9.5 46.5 27q20 17.5 31.5 41.5q11.5 24 11.5 53q0 31 -17 48q-17 17 -67 17q-41 0 -79 -16zM179 303q17 5 45 9q28 4 51 4q73 0 103 -29.5q30 -29.5 30 -77.5q0 -52 -21.5 -92q-21.5 -40 -56 -67.5q-34.5 -27.5 -77.5 -41.5q-43 -14 -87 -14q-55 0 -80.5 23q-25.5 23 -25.5 62q0 19 4 35l87 386h75zM550 500h75l-106 -500l-75 0z" />
-<glyph unicode="&#1100;" horiz-adv-x="448" d="M140 132q-3 -14 -3 -24q0 -23 14.5 -36.5q14.5 -13.5 46.5 -13.5q28 0 52.5 9.5q24.5 9.5 43.5 26.5q19 17 30 41q11 24 11 54q0 35 -18.5 50q-18.5 15 -66.5 15q-26 0 -46 -5.5q-20 -5.5 -38 -11.5zM180 303q2 0 2.5 0.5q0.5 0.5 2.5 0.5q20 5 42 8.5q22 3.5 49 3.5q44 0 71 -9q27 -9 42 -24q15 -15 20.5 -35q5.5 -20 5.5 -41q0 -53 -19.5 -92.5q-19.5 -39.5 -52 -66.5q-32.5 -27 -74.5 -40.5q-42 -13.5 -87 -13.5q-35 0 -58 8q-23 8 -37.5 21.5q-14.5 13.5 -20.5 31q-6 17.5 -6 35.5q0 14 3 29l89 381l75 0z" />
-<glyph unicode="&#1101;" horiz-adv-x="440" d="M124 283h199q2 10 3 20.5q1 10.5 1 22.5q0 63 -25 92.5q-25 29.5 -71 29.5q-46 0 -76.5 -10.5q-30.5 -10.5 -50.5 -22.5l-20 52q34 22 74.5 33.5q40.5 11.5 90.5 11.5q41 0 70.5 -12q29.5 -12 49 -33.5q19.5 -21.5 29 -50.5q9.5 -29 9.5 -63q0 -102 -23 -172q-23 -70 -61 -112.5q-38 -42.5 -86.5 -61.5q-48.5 -19 -98.5 -19q-101 0 -147 31l33 61q19 -13 50.5 -20.5q31.5 -7.5 62.5 -7.5q69 0 115.5 43q46.5 43 65.5 127l-207 0z" />
-<glyph unicode="&#1102;" horiz-adv-x="680" d="M265 289q14 51 36.5 92q22.5 41 52.5 70q30 29 66 45q36 16 78 16q43 0 71.5 -13.5q28.5 -13.5 46 -37q17.5 -23.5 25 -54q7.5 -30.5 7.5 -63.5q0 -75 -19.5 -140q-19.5 -65 -53.5 -113q-34 -48 -79.5 -75.5q-45.5 -27.5 -96.5 -27.5q-45 0 -74 14.5q-29 14.5 -46 38.5q-17 24 -23.5 54q-6.5 30 -6.5 61q0 18 1.5 35q1.5 17 3.5 34l-97 0l-47 -225h-75l106 500h75l-44 -211zM324 174q0 -59 18 -90.5q18 -31.5 66 -31.5q31 0 60 23.5q29 23.5 51 63.5q22 40 35.5 91.5q13.5 51.5 13.5 107.5q0 51 -16.5 80.5q-16.5 29.5 -67.5 29.5q-33 0 -62 -22.5q-29 -22.5 -51 -60.5q-22 -38 -34.5 -87.5t-12.5 -103.5z" />
-<glyph unicode="&#1103;" horiz-adv-x="466" d="M319 206l-77 -12l-161 -194h-97l146 171l49 37q-40 7 -67 33.5q-27 26.5 -27 74.5q0 46 19 82.5q19 36.5 51 61.5q32 25 74.5 38.5q42.5 13.5 89.5 13.5q20 0 40 -2.5q20 -2.5 38 -6q18 -3.5 32 -8q14 -4.5 23 -7.5l-102 -488h-75zM369 435q-5 5 -22 9q-17 4 -46 4q-60 0 -98 -33.5q-38 -33.5 -38 -89.5q0 -73 104 -73q1 0 3.5 0q2.5 0 8.5 0q6 0 17 0.5q11 0.5 31 1.5z" />
-<glyph unicode="&#1105;" horiz-adv-x="463" d="M389 49q-35 -30 -82.5 -45.5q-47.5 -15.5 -95.5 -15.5q-80 0 -120.5 46q-40.5 46 -40.5 128q0 82 23 147q23 65 60.5 110q37.5 45 85 69q47.5 24 97.5 24q36 0 62.5 -10q26.5 -10 43.5 -26.5q17 -16.5 25 -38q8 -21.5 8 -45.5q0 -71 -69 -111.5q-69 -40.5 -201 -40.5q-12 0 -25 0.5q-13 0.5 -27 1.5q-4 -19 -6 -36q-2 -17 -2 -30q0 -55 25 -89.5q25 -34.5 78 -34.5q44 0 80.5 14.5q36.5 14.5 56.5 30.5zM304 448q-55 0 -95.5 -37.5q-40.5 -37.5 -61.5 -112.5q38 0 79 2q41 2 74.5 10.5q33.5 8.5 55.5 27q22 18.5 22 51.5q0 10 -3.5 20.5q-3.5 10.5 -11.5 19q-8 8.5 -22.5 14q-14.5 5.5 -36.5 5.5zt0 0zM200 633q0 22 12.5 36.5q12.5 14.5 33.5 14.5q21 0 34 -14.5q13 -14.5 13 -36.5q0 -20 -13 -34.5q-13 -14.5 -34 -14.5q-21 0 -33.5 14.5q-12.5 14.5 -12.5 34.5zt0 0zM383 634q0 21 12.5 35.5q12.5 14.5 33.5 14.5q22 0 34.5 -14.5q12.5 -14.5 12.5 -35.5q0 -21 -12.5 -35.5q-12.5 -14.5 -34.5 -14.5q-21 0 -33.5 14.5t-12.5 35.5z" />
-<glyph unicode="&#1106;" horiz-adv-x="492" d="M89 600h75l22 100h75l-22 -100h153l-12 -60h-154l-36 -168h4q15 15 33.5 30.5q18.5 15.5 41 28.5q22.5 13 49.5 21q27 8 59 8q50 0 74 -24.5q24 -24.5 24 -81.5q0 -11 -4.5 -41q-4.5 -30 -13 -76.5q-8.5 -46.5 -21 -106.5q-12.5 -60 -27.5 -130q-17 -106 -59 -159q-42 -53 -114 -53q-7 0 -14 0.5q-7 0.5 -14 1.5l15 70q27 0 44.5 8q17.5 8 29.5 25.5q12 17.5 20.5 44q8.5 26.5 16.5 62.5l50 234q6 29 9.5 52.5q3.5 23.5 3.5 42.5q0 32 -12.5 49.5q-12.5 17.5 -44.5 17.5q-24 0 -50 -12q-26 -12 -50 -31q-24 -19 -43.5 -43q-19.5 -24 -29.5 -48l-54 -262h-75l114 540l-76 0z" />
-<glyph unicode="&#1107;" horiz-adv-x="411" d="M27 120q0 48 21 78q21 30 53 50q32 20 69 33q37 13 69 26.5q32 13.5 53 31q21 17.5 21 46.5q0 32 -17.5 45q-17.5 13 -60.5 13q-38 0 -65.5 -8.5q-27.5 -8.5 -49.5 -19.5l-15 59q32 17 70 25q38 8 80 8q40 0 66.5 -9q26.5 -9 42.5 -24q16 -15 22.5 -35q6.5 -20 6.5 -42q0 -48 -21 -77.5q-21 -29.5 -53 -48q-32 -18.5 -69 -30.5q-37 -12 -69 -26q-32 -14 -53 -33.5q-21 -19.5 -21 -52.5q0 -35 22.5 -56q22.5 -21 59.5 -21q37 0 73 13q36 13 56 27l20 -49q-31 -26 -74.5 -40.5q-43.5 -14.5 -79.5 -14.5q-49 0 -79.5 13.5q-30.5 13.5 -48 33.5q-17.5 20 -23.5 43q-6 23 -6 42zt0 0zM326 720h84l-5 -21l-123 -128l-44 0z" />
-<glyph unicode="&#1108;" horiz-adv-x="434" d="M390 43q-36 -29 -80 -42q-44 -13 -88 -13q-41 0 -73 13.5q-32 13.5 -54 37.5q-22 24 -33.5 56q-11.5 32 -11.5 70q0 88 25 153.5q25 65.5 65.5 108.5q40.5 43 92 64q51.5 21 105.5 21q45 0 68.5 -7.5q23.5 -7.5 40.5 -15.5l-28 -58q-21 9 -39.5 13q-18.5 4 -47.5 4q-65 0 -115 -43q-50 -43 -73 -116l226 0l-14 -64h-224q-2 -10 -2 -19.5q0 -9.5 0 -19.5q0 -27 5.5 -51.5q5.5 -24.5 19.5 -42.5q14 -18 38 -29q24 -11 62 -11q35 0 66 13.5q31 13.5 51 27.5z" />
-<glyph unicode="&#1109;" horiz-adv-x="398" d="M259 141q0 26 -13 44q-13 18 -33 32.5q-20 14.5 -43 28.5q-23 14 -43 31.5q-20 17.5 -33 41q-13 23.5 -13 58.5q0 28 13.5 52.5q13.5 24.5 37 43q23.5 18.5 56 29q32.5 10.5 70.5 10.5q53 0 82 -7q29 -7 52 -20l-25 -60q-40 23 -109 23q-42 0 -69.5 -17.5q-27.5 -17.5 -27.5 -53.5q0 -21 13 -36.5q13 -15.5 33 -29.5q20 -14 43 -28.5q23 -14.5 43 -33q20 -18.5 33 -43.5q13 -25 13 -59q0 -78 -52.5 -118.5q-52.5 -40.5 -140.5 -40.5q-45 0 -82.5 9q-37.5 9 -60.5 23l28 63q20 -13 52.5 -22q32.5 -9 67.5 -9q49 0 78.5 21.5t29.5 67.5z" />
-<glyph unicode="&#1110;" horiz-adv-x="259" d="M160 500h75l-106 -500h-75zM176 653q0 23 15.5 39q15.5 16 38.5 16q23 0 39 -16q16 -16 16 -39q0 -23 -16 -38.5q-16 -15.5 -39 -15.5q-23 0 -38.5 15.5t-15.5 38.5z" />
-<glyph unicode="&#1111;" horiz-adv-x="261" d="M111 653q0 21 12 35q12 14 33 14q21 0 33 -14q12 -14 12 -35q0 -21 -12 -35q-12 -14 -33 -14q-21 0 -33 14q-12 14 -12 35zt0 0zM230 653q0 21 12 35q12 14 33 14q21 0 33 -14q12 -14 12 -35q0 -21 -12 -35q-12 -14 -33 -14q-21 0 -33 14q-12 14 -12 35zt0 0zM146 500h75l-106 -500l-75 0z" />
-<glyph unicode="&#1112;" horiz-adv-x="249" d="M148 500h75l-112 -527q-20 -93 -62 -137q-42 -44 -114 -44q-8 0 -15.5 0.5q-7.5 0.5 -15.5 1.5l15 65q30 0 49.5 8.5q19.5 8.5 33 26.5q13.5 18 23 45q9.5 27 17.5 64zM164 653q0 23 15.5 39q15.5 16 38.5 16q23 0 39 -16q16 -16 16 -39q0 -23 -16 -38.5q-16 -15.5 -39 -15.5q-23 0 -38.5 15.5t-15.5 38.5z" />
-<glyph unicode="&#1113;" horiz-adv-x="695" d="M414 237q-11 -43 -16.5 -66.5q-5.5 -23.5 -8.5 -35.5q-3 -12 -3.5 -17q-0.5 -5 -0.5 -10q0 -23 14.5 -36.5q14.5 -13.5 46.5 -13.5q28 0 52.5 9.5q24.5 9.5 43 27q18.5 17.5 29.5 42q11 24.5 11 54.5q0 35 -18 49q-18 14 -66 14q-26 0 -46 -5.5q-20 -5.5 -38 -11.5zt0 0zM382 436h-128q-26 -107 -49 -189q-23 -82 -49.5 -137.5q-26.5 -55.5 -58.5 -84.5q-32 -29 -77 -29q-17 0 -30.5 2q-13.5 2 -22.5 7l23 64q12 -3 23 -3q22 0 41.5 16q19.5 16 40.5 63q21 47 45.5 132q24.5 85 57.5 223l273 0l-43 -197q20 5 43.5 9q23.5 4 52.5 4q44 0 71 -9q27 -9 42 -24q15 -15 20 -35q5 -20 5 -41q0 -53 -19.5 -92.5q-19.5 -39.5 -52 -66.5q-32.5 -27 -74.5 -40.5q-42 -13.5 -87 -13.5q-35 0 -58 8q-23 8 -37.5 21.5q-14.5 13.5 -20.5 31q-6 17.5 -6 35.5q0 15 3 29z" />
-<glyph unicode="&#1114;" horiz-adv-x="727" d="M456 302q19 5 45.5 9.5q26.5 4.5 53.5 4.5q44 0 71.5 -9q27.5 -9 42.5 -24q15 -15 20 -35q5 -20 5 -41q0 -53 -19.5 -92.5q-19.5 -39.5 -52 -66.5q-32.5 -27 -74.5 -40.5q-42 -13.5 -87 -13.5q-35 0 -58 8q-23 8 -37.5 21.5q-14.5 13.5 -20.5 31q-6 17.5 -6 35.5q0 15 3 30l23 105h-207l-48 -225h-75l106 500h75l-45 -211h207l45 211h75zM419 132q-3 -14 -3 -24q0 -23 14.5 -36.5q14.5 -13.5 46.5 -13.5q28 0 52.5 9.5q24.5 9.5 43.5 27q19 17.5 30 42q11 24.5 11 54.5q0 35 -18.5 49q-18.5 14 -66.5 14q-26 0 -46 -5.5q-20 -5.5 -38 -11.5z" />
-<glyph unicode="&#1115;" horiz-adv-x="490" d="M89 600h75l22 100h75l-22 -100h153l-12 -60h-153l-34 -159h4q32 31 74.5 55q42.5 24 105.5 24q45 0 70.5 -23q25.5 -23 25.5 -86q0 -41 -12 -101l-53 -250h-75l50 235q6 29 9.5 53q3.5 24 3.5 43q0 32 -12.5 48.5q-12.5 16.5 -43.5 16.5q-29 0 -55.5 -11.5q-26.5 -11.5 -49 -30q-22.5 -18.5 -40 -41q-17.5 -22.5 -27.5 -43.5l-55 -270h-75l114 540l-76 0z" />
-<glyph unicode="&#1116;" horiz-adv-x="464" d="M211 225h-54l-47 -225h-75l106 500h75l-48 -226l41 13l186 213h90l-183 -201l-46 -33l40 -40l112 -226h-84zM359 720h84l-5 -21l-123 -128l-44 0z" />
-<glyph unicode="&#1118;" horiz-adv-x="439" d="M194 176l5 -96h5l38 97l166 323h80l-236 -446q-26 -49 -51.5 -95.5q-25.5 -46.5 -52.5 -83q-27 -36.5 -56 -58.5q-29 -22 -60 -22q-17 0 -29.5 2q-12.5 2 -22.5 7l24 69q11 -4 24 -4q29 0 58 30q29 30 65 101l-86 500h80zM245 702q0 -47 19.5 -64.5q19.5 -17.5 49.5 -17.5q31 0 58.5 19q27.5 19 44.5 62l54 -19q-20 -58 -67.5 -89q-47.5 -31 -103.5 -31q-25 0 -47.5 6q-22.5 6 -39.5 19q-17 13 -27 33.5q-10 20.5 -10 48.5l0 9z" />
-<glyph unicode="&#1119;" horiz-adv-x="511" d="M263 -39l-24 -161h-79l41 161zM213 500l-70 -333q-6 -27 -6 -50q0 -28 11 -46.5q11 -18.5 40 -18.5q24 0 48.5 12q24.5 12 47 31q22.5 19 41 42q18.5 23 30.5 45l67 318h75l-63 -297q-4 -17 -8 -41.5q-4 -24.5 -7.5 -51.5q-3.5 -27 -5.5 -52.5q-2 -25.5 -2 -44.5v-13h-59v95h-4q-15 -20 -34.5 -39q-19.5 -19 -43 -34q-23.5 -15 -50.5 -24.5q-27 -9.5 -57 -9.5q-22 0 -40.5 5q-18.5 5 -32.5 17.5q-14 12.5 -22 33q-8 20.5 -8 52.5q0 35 10 79l68 325z" />
-<glyph unicode="&#1122;" horiz-adv-x="591" d="M94 620h140l22 101h80l-22 -101h198l-15 -70h-197l-26 -123q5 1 15.5 2.5q10.5 1.5 23 2.5q12.5 1 26.5 2q14 1 25 1q44 0 82.5 -10.5q38.5 -10.5 66.5 -32.5q28 -22 44 -56q16 -34 16 -81q0 -65 -23 -114.5q-23 -49.5 -64 -82.5q-41 -33 -98.5 -49.5q-57.5 -16.5 -126.5 -16.5q-14 0 -33.5 0.5q-19.5 0.5 -41.5 2q-22 1.5 -43.5 4.5q-21.5 3 -38.5 8l115 543h-140zM280 64q40 0 78 10.5q38 10.5 67 33q29 22.5 46.5 57q17.5 34.5 17.5 82.5q0 63 -41 89.5q-41 26.5 -106 26.5q-8 0 -20.5 -0.5q-12.5 -0.5 -25 -2q-12.5 -1.5 -23 -3q-10.5 -1.5 -15.5 -2.5l-60 -285q13 -3 36 -4.5t46 -1.5z" />
-<glyph unicode="&#1123;" horiz-adv-x="673" d="M365 132q-3 -14 -3 -24q0 -23 14.5 -36.5q14.5 -13.5 46.5 -13.5q28 0 52.5 9.5q24.5 9.5 43.5 27q19 17.5 30 42q11 24.5 11 54.5q0 35 -18.5 49q-18.5 14 -66.5 14q-26 0 -46 -5.5q-20 -5.5 -38 -11.5zM334 316q6 26 9.5 47q3.5 21 3.5 36q0 49 -40 49q-17 0 -35 -12q-18 -12 -35.5 -30.5q-17.5 -18.5 -32.5 -41q-15 -22.5 -27 -44.5l-66 -320h-75l106 500h52l-5 -78h4q10 15 24 30.5q14 15.5 32 29q18 13.5 41 22q23 8.5 50 8.5q41 0 62.5 -20.5q21.5 -20.5 21.5 -70.5q0 -37 -12 -89l-7 -29q20 5 43.5 9q23.5 4 52.5 4q44 0 71 -9q27 -9 42 -24q15 -15 20.5 -35q5.5 -20 5.5 -41q0 -53 -19.5 -92.5q-19.5 -39.5 -52.5 -66.5q-33 -27 -75 -40.5q-42 -13.5 -87 -13.5q-35 0 -58 8q-23 8 -37.5 21.5q-14.5 13.5 -20.5 31q-6 17.5 -6 35.5q0 15 3 29z" />
-<glyph unicode="&#1138;" horiz-adv-x="651" d="M72 256q0 92 24.5 175q24.5 83 70 145.5q45.5 62.5 110.5 99q65 36.5 145 36.5q48 0 89.5 -14.5q41.5 -14.5 71.5 -46q30 -31.5 47 -81.5q17 -50 17 -122q0 -94 -24 -177.5q-24 -83.5 -68.5 -146.5q-44.5 -63 -106 -99.5q-61.5 -36.5 -136.5 -36.5q-118 0 -179 68.5q-61 68.5 -61 199.5zt0 0zM156 257q0 -94 41 -145.5q41 -51.5 117 -51.5q44 0 82 19.5q38 19.5 68 54q30 34.5 52 82q22 47.5 34 103.5l-391 0q-3 -32 -3 -62zt0 0zM408 640q-44 0 -82 -19q-38 -19 -68 -52q-30 -33 -52.5 -78.5q-22.5 -45.5 -34.5 -99.5l389 0q3 27 3 55q0 58 -14 96q-14 38 -36 59.5q-22 21.5 -49.5 30t-55.5 8.5z" />
-<glyph unicode="&#1139;" horiz-adv-x="498" d="M50 156q0 79 20.5 144.5q20.5 65.5 56.5 112.5q36 47 83.5 73q47.5 26 101.5 26q42 0 71.5 -13.5q29.5 -13.5 48 -37q18.5 -23.5 26.5 -54q8 -30.5 8 -63.5q0 -75 -19.5 -140q-19.5 -65 -54 -113q-34.5 -48 -80.5 -75.5q-46 -27.5 -100 -27.5q-45 0 -75.5 14.5q-30.5 14.5 -50 38.5q-19.5 24 -28 54q-8.5 30 -8.5 61zt0 0zM297 448q-25 0 -48 -13q-23 -13 -43.5 -35.5q-20.5 -22.5 -36 -53.5q-15.5 -31 -25.5 -67l238 0q2 14 3 29q1 15 1 30q0 51 -18.5 80.5q-18.5 29.5 -70.5 29.5zt0 0zM130 174q0 -59 22 -90.5q22 -31.5 70 -31.5q24 0 46 12.5q22 12.5 41 35q19 22.5 34.5 53q15.5 30.5 25.5 66.5l-237 0q-1 -11 -1.5 -22.5t-0.5 -22.5z" />
-<glyph unicode="&#1140;" horiz-adv-x="567" d="M249 -11h-37l-108 711h82l67 -480v-106h2l39 107l127 256q35 72 62.5 117q27.5 45 52.5 70q25 25 50.5 34q25.5 9 57.5 9q31 0 51.5 -6.5q20.5 -6.5 34.5 -15.5l-38 -70q-28 18 -57 18q-28 0 -53 -26q-25 -26 -57 -87z" />
-<glyph unicode="&#1141;" horiz-adv-x="477" d="M189 -11h-32l-97 511h80l52 -293l6 -95h2l43 97q27 45 44 74q17 29 28 48.5q11 19.5 18.5 31.5q7.5 12 13.5 22q37 58 71.5 90q34.5 32 80.5 32q17 0 30.5 -2q13.5 -2 24.5 -7l-25 -67q-7 2 -14 4q-7 2 -15 2q-17 0 -38 -16q-21 -16 -51 -65z" />
-<glyph unicode="&#1162;" horiz-adv-x="656" d="M545 468l24 81h-3l-59 -84l-416 -465h-51l149 700h80l-101 -476l-25 -76h4l59 82l417 470h51l-133 -630h98l-5 -22l-124 -177h-51l71 129h-84zM378 870q0 -37 18.5 -57q18.5 -20 51.5 -20q42 0 69 20.5q27 20.5 38 55.5l73 -17q-18 -54 -65 -85.5q-47 -31.5 -119 -31.5q-68 0 -100 33.5q-32 33.5 -34 81.5z" />
-<glyph unicode="&#1163;" horiz-adv-x="535" d="M213 500l-70 -333q-6 -27 -6 -50q0 -28 11 -46.5q11 -18.5 40 -18.5q24 0 48.5 12q24.5 12 47 31q22.5 19 41 42q18.5 23 30.5 45l67 318h75l-63 -297q-5 -23 -11 -60.5q-6 -37.5 -9 -72.5l100 0l-5 -22l-124 -177h-51l71 129h-53v95h-4q-15 -20 -34.5 -39q-19.5 -19 -43 -34q-23.5 -15 -50.5 -24.5q-27 -9.5 -57 -9.5q-22 0 -40.5 5q-18.5 5 -32.5 17.5q-14 12.5 -22 33q-8 20.5 -8 52.5q0 35 10 79l68 325zM262 702q0 -47 19.5 -64.5q19.5 -17.5 49.5 -17.5q31 0 58.5 19q27.5 19 44.5 62l54 -19q-20 -58 -67.5 -89q-47.5 -31 -103.5 -31q-25 0 -47.5 6q-22.5 6 -39.5 19q-17 13 -27 33.5q-10 20.5 -10 48.5l0 9z" />
-<glyph unicode="&#1164;" horiz-adv-x="591" d="M94 620h140l22 101h80l-22 -101h198l-15 -70h-197l-26 -123q5 1 15.5 2.5q10.5 1.5 23 2.5q12.5 1 26.5 2q14 1 25 1q44 0 82.5 -10.5q38.5 -10.5 66.5 -32.5q28 -22 44 -56q16 -34 16 -81q0 -65 -23 -114.5q-23 -49.5 -64 -82.5q-41 -33 -98.5 -49.5q-57.5 -16.5 -126.5 -16.5q-14 0 -33.5 0.5q-19.5 0.5 -41.5 2q-22 1.5 -43.5 4.5q-21.5 3 -38.5 8l115 543h-140zM280 64q40 0 78 10.5q38 10.5 67 33q29 22.5 46.5 57q17.5 34.5 17.5 82.5q0 63 -41 89.5q-41 26.5 -106 26.5q-8 0 -20.5 -0.5q-12.5 -0.5 -25 -2q-12.5 -1.5 -23 -3q-10.5 -1.5 -15.5 -2.5l-60 -285q13 -3 36 -4.5t46 -1.5z" />
-<glyph unicode="&#1165;" horiz-adv-x="448" d="M226 500h186l-14 -62h-186l-32 -135q21 5 44 9q23 4 52 4q44 0 71 -9q27 -9 42 -24q15 -15 20.5 -35q5.5 -20 5.5 -41q0 -53 -19.5 -92.5q-19.5 -39.5 -52 -66.5q-32.5 -27 -74.5 -40.5q-42 -13.5 -87 -13.5q-35 0 -58 8q-23 8 -37.5 21.5q-14.5 13.5 -20.5 31q-6 17.5 -6 35.5q0 14 3 29l74 319h-71l15 62h71l47 200h75zM140 132q-3 -14 -3 -24q0 -23 14.5 -36.5q14.5 -13.5 46.5 -13.5q28 0 52.5 9.5q24.5 9.5 43.5 27q19 17.5 30 42q11 24.5 11 54.5q0 35 -18.5 49q-18.5 14 -66.5 14q-26 0 -46 -5.5q-20 -5.5 -38 -11.5z" />
-<glyph unicode="&#1166;" horiz-adv-x="532" d="M187 693q38 9 80 12q42 3 83 3q46 0 85.5 -10q39.5 -10 68.5 -32q29 -22 45.5 -56.5q16.5 -34.5 16.5 -82.5q0 -48 -11.5 -86q-11.5 -38 -32 -67q-20.5 -29 -48 -50q-27.5 -21 -59.5 -34l46 -94l-53 -27l-50 104q-26 -6 -52.5 -8.5q-26.5 -2.5 -52.5 -2.5q-5 0 -15.5 0q-10.5 0 -22.5 0.5q-12 0.5 -23 1.5q-11 1 -16 2l-56 -266h-80zM332 459l48 -104q45 19 73.5 58.5q28.5 39.5 28.5 105.5q0 36 -12 59q-12 23 -32.5 35.5q-20.5 12.5 -47.5 17.5q-27 5 -57 5q-23 0 -44.5 -1.5q-21.5 -1.5 -35.5 -4.5l-61 -291q4 -2 13.5 -2.5q9.5 -0.5 20 -1.5q10.5 -1 20.5 -1q10 0 15 0q37 0 70 6l-45 96z" />
-<glyph unicode="&#1167;" horiz-adv-x="508" d="M144 500h52l-5 -86h4q14 18 31.5 35.5q17.5 17.5 38.5 31.5q21 14 46 22.5q25 8.5 54 8.5q24 0 45 -7.5q21 -7.5 37 -25q16 -17.5 25.5 -46.5q9.5 -29 9.5 -71q0 -114 -39 -195.5q-39 -81.5 -96 -127.5l39 -64l-48 -38l-42 70q-44 -19 -85 -19q-35 0 -61.5 6.5q-26.5 6.5 -35.5 13.5l-44 -208h-75zM271 161l38 -64q41 38 67 104.5q26 66.5 26 154.5q0 40 -16.5 66q-16.5 26 -48.5 26q-27 0 -51.5 -14q-24.5 -14 -45 -34.5q-20.5 -20.5 -36.5 -44q-16 -23.5 -26 -43.5l-49 -237q17 -13 35 -18q18 -5 39 -5q32 0 62 15l-38 63z" />
-<glyph unicode="&#1168;" horiz-adv-x="420" d="M529 626h-277l-132 -626h-80l149 700h286l43 134h54l-28 -134z" />
-<glyph unicode="&#1169;" horiz-adv-x="379" d="M202 436l-92 -436h-75l106 500h208l43 134h54l-28 -134l-14 -64z" />
-<glyph unicode="&#1170;" horiz-adv-x="459" d="M549 626h-277l-51 -241h204l-14 -66h-204l-67 -319h-80l68 319h-92l15 66h91l67 315l355 0z" />
-<glyph unicode="&#1171;" horiz-adv-x="398" d="M419 436h-200l-34 -157h175l-13 -60h-174l-46 -219h-76l46 219h-71l13 60h71l47 221l276 0z" />
-<glyph unicode="&#1172;" horiz-adv-x="549" d="M120 0h-80l149 700h355l-15 -74h-277l-57 -271q14 5 46 13q32 8 85 8q81 0 129 -43.5q48 -43.5 48 -138.5q0 -64 -17.5 -122q-17.5 -58 -53 -102.5q-35.5 -44.5 -89.5 -71q-54 -26.5 -126 -26.5q-32 0 -48 0.5q-16 0.5 -24 2.5l16 74q11 -2 26.5 -2.5q15.5 -0.5 42.5 -0.5q49 0 84.5 20.5q35.5 20.5 59 54q23.5 33.5 34.5 77.5q11 44 11 91q0 61 -31.5 88q-31.5 27 -91.5 27q-17 0 -34.5 -2q-17.5 -2 -33.5 -5.5q-16 -3.5 -29 -7.5q-13 -4 -20 -7z" />
-<glyph unicode="&#1173;" horiz-adv-x="464" d="M111 0h-75l106 500h276l-14 -64h-201l-39 -184q12 3 43.5 12q31.5 9 88.5 9q66 0 103 -34.5q37 -34.5 37 -98.5q0 -93 -22 -159q-22 -66 -60 -108q-38 -42 -88.5 -61.5q-50.5 -19.5 -107.5 -19.5q-29 0 -43.5 2q-14.5 2 -21.5 4l15 62q11 -2 25.5 -3q14.5 -1 43.5 -1q33 0 65 15.5q32 15.5 57.5 47.5q25.5 32 41 82q15.5 50 15.5 118q0 47 -24 68.5q-24 21.5 -62 21.5q-48 0 -79 -8q-31 -8 -42 -13z" />
-<glyph unicode="&#1174;" horiz-adv-x="779" d="M446 700h75l-69 -326l37 14l257 312h97l-256 -304l-47 -32l40 -41l110 -249h70l-43 -203h-55l13 129h-39l-145 324h-50l-68 -324h-75l71 336l-37 -13l-276 -323h-100l275 313l53 38l-34 35l-133 314h88l126 -314l48 0z" />
-<glyph unicode="&#1175;" horiz-adv-x="706" d="M224 225q-18 -67 -39.5 -111q-21.5 -44 -45.5 -70.5q-24 -26.5 -50.5 -37.5q-26.5 -11 -53.5 -11q-12 0 -24.5 2q-12.5 2 -24.5 5l20 68q12 -3 24 -3q40 0 75 42.5q35 42.5 55 143.5q5 29 8 51.5q3 22.5 3 41.5q0 53 -18 73q-18 20 -46 20q-5 0 -10 -1q-5 -1 -10 -2l-9 62q14 2 26 3.5q12 1.5 23 1.5q56 0 84 -32.5q28 -32.5 28 -104.5q0 -18 -2 -38.5q-2 -20.5 -6 -43.5l98 0l46 216h75l-47 -216h91q17 64 37.5 106q20.5 42 44 67.5q23.5 25.5 49 36q25.5 10.5 51.5 10.5q22 0 43 -6l-17 -64q-5 1 -10 1.5q-5 0.5 -10 0.5q-18 0 -34.5 -8q-16.5 -8 -31 -27.5q-14.5 -19.5 -27.5 -51.5q-13 -32 -25 -80q-6 -25 -9.5 -49q-3.5 -24 -3.5 -47q0 -48 15.5 -81.5q15.5 -33.5 49.5 -33.5q12 0 24 4l26 -18l-45 -171h-60l31 121q-33 1 -54.5 14.5q-21.5 13.5 -34.5 36q-13 22.5 -18.5 51.5q-5.5 29 -5.5 61q0 17 1.5 34q1.5 17 3.5 34l-93 0l-47 -225h-75l48 225z" />
-<glyph unicode="&#1176;" horiz-adv-x="515" d="M164 331l15 69h14q18 0 44.5 1.5q26.5 1.5 42.5 3.5q27 3 55 12.5q28 9.5 50.5 26.5q22.5 17 37 42q14.5 25 14.5 59q0 45 -32 70q-32 25 -87 25q-51 0 -85 -8.5q-34 -8.5 -62 -18.5l-8 65q23 11 69.5 22.5q46.5 11.5 107.5 11.5q38 0 71 -9.5q33 -9.5 57.5 -27.5q24.5 -18 38.5 -45q14 -27 14 -63q0 -43 -13.5 -76q-13.5 -33 -36 -57q-22.5 -24 -52.5 -38.5q-30 -14.5 -63 -19.5l0 -4q21 -5 41.5 -15.5q20.5 -10.5 37 -28.5q16.5 -18 26.5 -44.5q10 -26.5 10 -63.5q0 -61 -23.5 -104q-23.5 -43 -61 -70.5q-37.5 -27.5 -85 -41q-47.5 -13.5 -95.5 -16.5l-31 -167h-74l41 167q-49 2 -82.5 9q-33.5 7 -53.5 17l36 73q20 -11 57 -19q37 -8 93 -8q34 0 69 8.5q35 8.5 63 27.5q28 19 45.5 49.5q17.5 30.5 17.5 74.5q0 30 -10.5 50q-10.5 20 -28.5 33q-18 13 -41 19q-23 6 -47 8q-11 1 -22 1q-11 0 -22 0z" />
-<glyph unicode="&#1177;" horiz-adv-x="418" d="M120 224l13 62h66q17 0 36.5 8q19.5 8 36 22q16.5 14 27.5 31.5q11 17.5 11 37.5q0 32 -19 45q-19 13 -70 13q-36 0 -62.5 -8q-26.5 -8 -49.5 -19l-16 59q32 17 70.5 24.5q38.5 7.5 88.5 7.5q74 0 106 -26.5q32 -26.5 32 -76.5q0 -26 -9 -48q-9 -22 -24.5 -39.5q-15.5 -17.5 -35 -29.5q-19.5 -12 -40.5 -19l0 -4q43 -8 60.5 -32.5q17.5 -24.5 17.5 -56.5q0 -39 -14 -70q-14 -31 -39 -54.5q-25 -23.5 -59.5 -38q-34.5 -14.5 -74.5 -18.5l-32 -173h-74l42 171q-34 3 -64 12q-30 9 -48 23l32 60q20 -13 50 -22q30 -9 66 -9q58 0 97.5 29q39.5 29 39.5 80q0 30 -24 44.5q-24 14.5 -82 14.5z" />
-<glyph unicode="&#1178;" horiz-adv-x="583" d="M239 324h-51l-68 -324h-80l148 700h80l-70 -326l40 14l287 312h99l-286 -304l-46 -31l39 -40l135 -251h86l-43 -203h-55l14 129l-53 0z" />
-<glyph unicode="&#1179;" horiz-adv-x="465" d="M211 225h-54l-47 -225h-75l106 500h75l-48 -226l41 13l186 213h90l-183 -201l-46 -33l40 -40l80 -162h79l-52 -191h-61l34 127l-52 0z" />
-<glyph unicode="&#1180;" horiz-adv-x="648" d="M235 324h-47l-68 -324h-80l149 700h79l-70 -326l49 5l27 126h63l-26 -119l18 2l269 312h98l-268 -302l-47 -33l39 -39l157 -326h-89l-153 324h-37l-27 -129l-63 0z" />
-<glyph unicode="&#1181;" horiz-adv-x="531" d="M205 225h-48l-47 -225h-75l106 500h75l-48 -226l48 5l27 123h60l-25 -117l24 3l166 212h84l-157 -201l-54 -33l40 -40l84 -226h-82l-83 225h-35l-27 -127l-60 0z" />
-<glyph unicode="&#1182;" horiz-adv-x="633" d="M95 636h130l14 64h80l-13 -64h115l-14 -66h-116l-40 -196l41 14l285 312h98l-283 -304l-49 -31l40 -40l173 -325h-90l-174 324h-53l-68 -324h-80l119 568l-130 0z" />
-<glyph unicode="&#1183;" horiz-adv-x="449" d="M88 613h77l19 87h75l-19 -87h151l-12 -60h-152l-59 -279l43 11l180 215h92l-178 -203l-47 -33l38 -39l112 -225h-83l-113 225h-54l-47 -225h-75l117 553l-78 0z" />
-<glyph unicode="&#1184;" horiz-adv-x="653" d="M243 626h-151l16 74h231l-69 -326l38 14l288 312h99l-284 -303l-48 -32l39 -39l175 -326h-90l-176 324h-52l-68 -324l-80 0z" />
-<glyph unicode="&#1185;" horiz-adv-x="485" d="M194 274l37 14l197 212h90l-189 -201l-47 -33l40 -40l111 -226h-85l-111 225h-54l-47 -225h-75l93 436h-105l13 64l180 0z" />
-<glyph unicode="&#1186;" horiz-adv-x="668" d="M505 321h-318l-67 -321h-80l148 700h80l-64 -305h317l64 305h80l-132 -626h88l-43 -203h-54l12 129h-19l-80 0z" />
-<glyph unicode="&#1187;" horiz-adv-x="523" d="M374 220h-216l-47 -220h-75l106 500h75l-44 -208h216l44 208h75l-93 -436h71l-52 -191h-61l34 127h-5l-75 0z" />
-<glyph unicode="&#1188;" horiz-adv-x="817" d="M926 626h-277l-132 -626h-80l68 321h-318l-67 -321h-80l148 700h80l-64 -305h317l64 305l356 0z" />
-<glyph unicode="&#1189;" horiz-adv-x="669" d="M372 220h-214l-47 -220h-75l106 500h75l-44 -208h215l44 208h276l-14 -68h-202l-91 -432l-75 0z" />
-<glyph unicode="&#1190;" horiz-adv-x="928" d="M505 0h-80l132 626h-306l-131 -626h-80l149 700h464l-73 -345q11 4 46 12.5q35 8.5 87 8.5q79 0 127 -43q48 -43 48 -133q0 -70 -18 -130q-18 -60 -54 -104q-36 -44 -89.5 -69q-53.5 -25 -124.5 -25q-32 0 -48.5 0.5q-16.5 0.5 -22.5 2.5l16 74q11 -2 26 -2.5q15 -0.5 44 -0.5q50 0 85.5 20.5q35.5 20.5 58 54.5q22.5 34 33 78q10.5 44 10.5 91q0 64 -33 89q-33 25 -88 25q-17 0 -35.5 -2.5q-18.5 -2.5 -35 -6q-16.5 -3.5 -29 -7q-12.5 -3.5 -18.5 -6.5z" />
-<glyph unicode="&#1191;" horiz-adv-x="764" d="M406 0h-75l67 316q4 19 6.5 36q2.5 17 2.5 31q0 29 -13 47q-13 18 -50 18q-26 0 -51 -12q-25 -12 -47 -30.5q-22 -18.5 -39.5 -41q-17.5 -22.5 -29.5 -44.5l-66 -320h-75l106 500h52l-4 -86h4q13 16 31 33.5q18 17.5 40.5 31.5q22.5 14 50.5 23.5q28 9.5 62 9.5q50 0 78.5 -24q28.5 -24 28.5 -84q0 -15 -1.5 -33q-1.5 -18 -6.5 -39l-16 -80q12 4 40 12.5q28 8.5 68 8.5q85 0 124 -37q39 -37 39 -109q0 -88 -22 -150.5q-22 -62.5 -59 -102.5q-37 -40 -85.5 -59q-48.5 -19 -100.5 -19q-23 0 -41 2.5q-18 2.5 -26 4.5l15 64q22 -7 68 -7q34 0 65 16q31 16 54.5 46.5q23.5 30.5 37.5 74.5q14 44 14 100q0 32 -5 53.5q-5 21.5 -17.5 34.5q-12.5 13 -33.5 18.5q-21 5.5 -52 5.5q-31 0 -58.5 -9q-27.5 -9 -39.5 -13z" />
-<glyph unicode="&#1192;" horiz-adv-x="772" d="M426 640q-57 -1 -106.5 -29q-49.5 -28 -86 -78q-36.5 -50 -57 -118q-20.5 -68 -20.5 -148q0 -107 45 -157q45 -50 123 -50q11 0 24 2q13 2 24 6q-10 7 -23.5 24.5q-13.5 17.5 -25.5 45q-12 27.5 -20.5 64.5q-8.5 37 -8.5 83q0 101 27 175.5q27 74.5 69 123q42 48.5 93.5 72.5q51.5 24 101.5 24q29 0 60 -8.5q31 -8.5 56.5 -31q25.5 -22.5 41.5 -63.5q16 -41 16 -105q0 -63 -17.5 -126q-17.5 -63 -48.5 -118.5q-31 -55.5 -74 -99.5q-43 -44 -94 -68q5 -1 10 -1q5 0 10 0q35 0 65 8q30 8 50 22l10 -65q-21 -15 -50 -25.5q-29 -10.5 -79 -10.5q-30 0 -58 7.5q-28 7.5 -48 22.5q-28 -17 -60.5 -23.5q-32.5 -6.5 -65.5 -6.5q-72 0 -118.5 25.5q-46.5 25.5 -72.5 65q-26 39.5 -36 86.5q-10 47 -10 91q0 119 33 205q33 86 86 142q53 56 118.5 82.5q65.5 26.5 131.5 26.5zM381 293q0 -16 2 -42.5q2 -26.5 10 -56q8 -29.5 24 -58.5q16 -29 44 -48q48 25 87.5 64.5q39.5 39.5 67.5 89q28 49.5 43.5 107q15.5 57.5 15.5 117.5q0 30 -4 56q-4 26 -15 45q-11 19 -30 30q-19 11 -49 11q-31 0 -65.5 -19.5q-34.5 -19.5 -63.5 -59q-29 -39.5 -48 -98.5t-19 -138z" />
-<glyph unicode="&#1193;" horiz-adv-x="634" d="M308 443q-33 0 -65 -18.5q-32 -18.5 -57 -52.5q-25 -34 -40.5 -81q-15.5 -47 -15.5 -104q0 -69 32 -100q32 -31 83 -31q11 0 22.5 1.5q11.5 1.5 22.5 7.5q-9 12 -16 30.5q-7 18.5 -11.5 39q-4.5 20.5 -7 41.5q-2.5 21 -2.5 38q0 55 16 106q16 51 45.5 91q29.5 40 71 64q41.5 24 91.5 24q32 0 55.5 -10.5q23.5 -10.5 38.5 -28.5q15 -18 22.5 -42q7.5 -24 7.5 -51q0 -56 -19.5 -109.5q-19.5 -53.5 -49.5 -98.5q-30 -45 -66 -77.5q-36 -32.5 -69 -45.5q26 -23 51 -30q25 -7 56 -7l-16 -57q-7 -2 -14 -3q-7 -1 -15 -1q-38 0 -75 18q-37 18 -58 50q-22 -11 -48.5 -14.5q-26.5 -3.5 -47.5 -3.5q-84 0 -132 52q-48 52 -48 144q0 64 20.5 123q20.5 59 56.5 104.5q36 45.5 86 73q50 27.5 109 27.5zM330 209q0 -26 7 -61q7 -35 23 -61q22 10 50 36q28 26 53 61.5q25 35.5 41.5 79q16.5 43.5 16.5 90.5q0 43 -14.5 60q-14.5 17 -43.5 17q-29 0 -53.5 -18.5q-24.5 -18.5 -42 -49q-17.5 -30.5 -27.5 -71t-10 -83.5z" />
-<glyph unicode="&#1194;" horiz-adv-x="544" d="M480 29q-31 -20 -65 -29.5q-34 -9.5 -77 -11.5l-31 -167h-74l42 171q-48 7 -86 31.5q-38 24.5 -64.5 61.5q-26.5 37 -40 85q-13.5 48 -13.5 104q0 113 33 195.5q33 82.5 87 136.5q54 54 121.5 80q67.5 26 136.5 26q57 0 93 -8q36 -8 59 -19l-36 -73q-20 11 -52.5 18.5q-32.5 7.5 -74.5 7.5q-56 0 -107.5 -24.5q-51.5 -24.5 -90.5 -70.5q-39 -46 -62 -112q-23 -66 -23 -148q0 -48 12.5 -88.5q12.5 -40.5 36 -70q23.5 -29.5 58 -46q34.5 -16.5 78.5 -16.5q47 0 78 10.5q31 10.5 56 24.5z" />
-<glyph unicode="&#1195;" horiz-adv-x="420" d="M365 43q-26 -21 -60.5 -34.5q-34.5 -13.5 -66.5 -18.5l-31 -169h-74l41 170q-37 6 -61 22.5q-24 16.5 -38 39q-14 22.5 -19.5 48q-5.5 25.5 -5.5 47.5q0 85 23 152.5q23 67.5 61.5 114.5q38.5 47 88.5 72q50 25 103 25q38 0 62.5 -7q24.5 -7 44.5 -16l-28 -62q-17 10 -42 15.5q-25 5.5 -54 5.5q-34 0 -66.5 -23q-32.5 -23 -57.5 -60.5q-25 -37.5 -40 -86q-15 -48.5 -15 -99.5q0 -65 27 -94.5q27 -29.5 73 -29.5q30 0 63 12q33 12 53 26z" />
-<glyph unicode="&#1196;" horiz-adv-x="528" d="M602 626h-207l-116 -552h86l-43 -203h-54l12 129h-17h-80l132 626h-205l15 74l492 0z" />
-<glyph unicode="&#1197;" horiz-adv-x="774" d="M574 0l63 301q6 29 9.5 52q3.5 23 3.5 40q0 27 -11 41q-11 14 -37 14q-21 0 -44.5 -13.5q-23.5 -13.5 -45.5 -33.5q-22 -20 -39.5 -43q-17.5 -23 -27.5 -43l-65 -315h-75l60 283q8 35 12 62q4 27 4 47q0 27 -10 41.5q-10 14.5 -34 14.5q-25 0 -49 -13q-24 -13 -45 -32.5q-21 -19.5 -38.5 -41.5q-17.5 -22 -27.5 -40l-66 -321h-75l106 500h53l-6 -86h4q16 16 34.5 33.5q18.5 17.5 41 31.5q22.5 14 49 23.5q26.5 9.5 58.5 9.5q45 0 60.5 -28q15.5 -28 15.5 -78q15 19 35 38q20 19 43.5 34q23.5 15 49.5 24.5q26 9.5 52 9.5q46 0 70.5 -21.5q24.5 -21.5 24.5 -79.5q0 -42 -15 -111l-50 -236h80l-52 -191h-61l34 127l-14 0z" />
-<glyph unicode="&#1198;" horiz-adv-x="531" d="M241 278l-133 422h87l89 -306l3 -61h1l30 63l217 304h90l-304 -421l-59 -279l-80 0z" />
-<glyph unicode="&#1199;" horiz-adv-x="447" d="M60 500h82l47 -324q0 -2 0 -18.5q0 -16.5 1 -36.5q1 -23 2 -51l1 0l48 108l173 322h87l-286 -500l-42 -200h-75l43 200z" />
-<glyph unicode="&#1200;" horiz-adv-x="531" d="M99 285h140l-131 415h87l89 -306l3 -61h1l30 63l217 304h90l-300 -415h140l-13 -62h-143l-47 -223h-80l47 223l-143 0z" />
-<glyph unicode="&#1201;" horiz-adv-x="460" d="M37 0h117l-81 500h82l47 -324q0 -2 0 -18.5q0 -16.5 1 -36.5q1 -23 2 -51l1 0l48 108l173 322h87l-286 -500h112l-12 -60h-113l-29 -140h-75l30 140l-117 0z" />
-<glyph unicode="&#1202;" horiz-adv-x="609" d="M289 358l-130 342h87l86 -237l12 -57l34 57l191 237h97l-279 -339l113 -287h83l-43 -203h-55l13 129h-56l-96 251l-14 60l-38 -60l-204 -251l-97 0z" />
-<glyph unicode="&#1203;" horiz-adv-x="484" d="M265 152l-20 60l-42 -60l-134 -152h-91l225 256l-107 244h85l59 -138l18 -57l41 57l121 138h91l-212 -240l89 -196h68l-52 -191h-61l34 127l-44 0z" />
-<glyph unicode="&#1204;" horiz-adv-x="797" d="M701 -129h-54l12 129h-18h-80h-299h-79l132 626h-205l15 74h458l-15 -74h-173l-116 -552h298l132 626h80l-132 -626l87 0z" />
-<glyph unicode="&#1205;" horiz-adv-x="530" d="M417 0h-3q-35 0 -52 17q-17 17 -17 49q0 14 3 29l-4 0q-14 -19 -33 -38q-19 -19 -42 -34.5q-23 -15.5 -49.5 -25q-26.5 -9.5 -56.5 -9.5q-22 0 -40.5 5q-18.5 5 -32.5 17.5q-14 12.5 -22 33q-8 20.5 -8 52.5q0 35 10 79l68 325h75l-70 -333q-6 -27 -6 -50q0 -28 11 -46.5q11 -18.5 40 -18.5q24 0 48.5 12q24.5 12 47 31q22.5 19 41 42q18.5 23 30.5 45l67 318h75q-20 -94 -34 -158.5q-14 -64.5 -23 -107.5q-9 -43 -14.5 -68q-5.5 -25 -8 -38.5q-2.5 -13.5 -3 -19.5q-0.5 -6 -0.5 -12q0 -32 27 -32h55l-52 -191h-60zM200 643h281l-13 -62l-282 0z" />
-<glyph unicode="&#1206;" horiz-adv-x="606" d="M257 700l-48 -225q-3 -14 -5 -27.5q-2 -13.5 -2 -24.5q0 -92 94 -92q45 0 86.5 12.5q41.5 12.5 70.5 33.5l69 323h80l-132 -626h87l-43 -203h-54l12 129h-17h-81l64 302q-29 -17 -69.5 -31q-40.5 -14 -97.5 -14q-30 0 -57.5 7.5q-27.5 7.5 -48.5 25q-21 17.5 -33 45q-12 27.5 -12 67.5q0 30 7 62l50 236z" />
-<glyph unicode="&#1207;" horiz-adv-x="472" d="M318 210q-17 -10 -49 -22q-32 -12 -80 -12q-27 0 -49 5.5q-22 5.5 -37.5 18q-15.5 12.5 -24.5 33.5q-9 21 -9 52q0 29 7 63l33 152h76l-29 -136q-7 -35 -7 -60q0 -29 13.5 -46.5q13.5 -17.5 50.5 -17.5q44 0 73 12.5q29 12.5 46 24.5l48 223h76l-93 -436h70l-52 -191h-61l34 127l-80 0z" />
-<glyph unicode="&#1208;" horiz-adv-x="583" d="M259 700l-48 -225q-5 -29 -5 -52q-1 -86 81 -92l26 124h63l-26 -120q32 5 61 16q29 11 50 26l68 323h80l-148 -700h-80l64 302q-20 -12 -48 -23.5q-28 -11.5 -63 -17.5l-25 -116h-62l24 112q-31 1 -58 9q-27 8 -47.5 25q-20.5 17 -32 44q-11.5 27 -11.5 66q0 31 7 63l50 236z" />
-<glyph unicode="&#1209;" horiz-adv-x="475" d="M188 176q-26 0 -48 5.5q-22 5.5 -38 18q-16 12.5 -25 33.5q-9 21 -9 52q0 25 8 63l33 152h76l-31 -144q-8 -34 -8 -56q0 -26 12 -41.5q12 -15.5 43 -18.5l29 133h60l-27 -128q26 5 44.5 14.5q18.5 9.5 30.5 18.5l48 222h75l-106 -500h-75l44 210q-11 -7 -30 -15q-19 -8 -45 -13l-24 -114l-60 0z" />
-<glyph unicode="&#1210;" horiz-adv-x="576" d="M385 0l48 226q6 28 6 52q0 91 -95 91q-45 0 -86 -14q-41 -14 -70 -32l-68 -323h-80l149 700h80l-65 -302q28 15 69.5 30q41.5 15 96.5 15q30 0 57.5 -8q27.5 -8 48 -25q20.5 -17 33 -44.5q12.5 -27.5 12.5 -67.5q0 -29 -7 -61l-49 -237z" />
-<glyph unicode="&#1211;" horiz-adv-x="529" d="M341 0l60 285q6 30 10 53.5q4 23.5 4 41.5q0 37 -15 52.5q-15 15.5 -47 15.5q-26 0 -53 -13.5q-27 -13.5 -52 -34.5q-25 -21 -44.5 -47q-19.5 -26 -29.5 -50l-63 -303h-75l148 700h75l-62 -286h4q13 16 31.5 33q18.5 17 42.5 31.5q24 14.5 52 24q28 9.5 61 9.5q49 0 77 -23.5q28 -23.5 28 -85.5q0 -42 -13 -101l-64 -302z" />
-<glyph unicode="&#1212;" horiz-adv-x="736" d="M291 317q-3 -29 -3 -55q0 -46 9.5 -83q9.5 -37 30 -63.5q20.5 -26.5 52.5 -41q32 -14.5 76 -14.5q21 0 43 4q22 4 42 10.5q20 6.5 37.5 14.5q17.5 8 29.5 17l7 -67q-32 -21 -70.5 -36q-38.5 -15 -97.5 -15q-115 0 -176 67.5q-61 67.5 -61 201.5q0 28 3 60l-36 0q-54 0 -85.5 27q-31.5 27 -31.5 82q0 34 13 57.5q13 23.5 27 34.5l77 0q-17 -13 -29.5 -31.5q-12.5 -18.5 -12.5 -38.5q0 -8 1 -18q1 -10 8 -19.5q7 -9.5 23.5 -16q16.5 -6.5 46.5 -6.5h9q18 87 51.5 148.5q33.5 61.5 76.5 100.5q43 39 94 57q51 18 105 18q48 0 84 -16q36 -16 60 -45q24 -29 35.5 -68.5q11.5 -39.5 11.5 -85.5q0 -42 -9 -87q-9 -45 -27 -93zM645 389q9 27 14.5 55q5.5 28 5.5 56q0 28 -6.5 53.5q-6.5 25.5 -21 45q-14.5 19.5 -37.5 30.5q-23 11 -57 11q-88 0 -149 -63q-61 -63 -90 -188z" />
-<glyph unicode="&#1213;" horiz-adv-x="539" d="M464 49q-35 -30 -82.5 -45.5q-47.5 -15.5 -95.5 -15.5q-80 0 -120.5 46q-40.5 46 -40.5 128q0 42 6 80v0q-39 0 -61 9.5q-22 9.5 -35 24.5q-13 15 -18.5 33.5q-5.5 18.5 -5.5 35.5q0 37 19.5 65.5q19.5 28.5 44.5 43.5l76 0q-11 -7 -24 -16.5q-13 -9.5 -24 -22q-11 -12.5 -18 -27.5q-7 -15 -7 -33q0 -21 13 -38.5q13 -17.5 54 -17.5q16 51 42 90.5q26 39.5 58.5 66.5q32.5 27 70 41.5q37.5 14.5 75.5 14.5q36 0 62.5 -10q26.5 -10 43.5 -26.5q17 -16.5 25 -38q8 -21.5 8 -45.5q0 -71 -69 -111.5q-69 -40.5 -201 -40.5q-12 0 -25 0.5q-13 0.5 -27 1.5q-4 -19 -6 -36q-2 -17 -2 -30q1 -55 25.5 -89.5q24.5 -34.5 77.5 -34.5q44 0 80.5 14.5q36.5 14.5 56.5 30.5zM379 448q-55 0 -95.5 -37.5q-40.5 -37.5 -61.5 -112.5q38 0 79 2q41 2 74.5 10.5q33.5 8.5 55.5 27q22 18.5 22 51.5q0 10 -3.5 20.5q-3.5 10.5 -11.5 19q-8 8.5 -22.5 14t-36.5 5.5z" />
-<glyph unicode="&#1214;" horiz-adv-x="736" d="M291 317q-3 -29 -3 -55q0 -46 9.5 -83q9.5 -37 30 -63.5q20.5 -26.5 52.5 -41q32 -14.5 76 -14.5q21 0 43 4q22 4 42 10.5q20 6.5 37.5 14.5q17.5 8 29.5 17l7 -67q-32 -21 -70 -35.5q-38 -14.5 -95 -15.5l-31 -167h-74l42 172q-87 16 -132 82q-45 66 -45 182q0 28 3 60l-36 0q-54 0 -85.5 27q-31.5 27 -31.5 82q0 34 13 57.5q13 23.5 27 34.5l77 0q-17 -13 -29.5 -31.5q-12.5 -18.5 -12.5 -38.5q0 -8 1 -18q1 -10 8 -19.5q7 -9.5 23.5 -16q16.5 -6.5 46.5 -6.5h9q18 87 51.5 148.5q33.5 61.5 76.5 100.5q43 39 94 57q51 18 105 18q48 0 84 -16q36 -16 60 -45q24 -29 35.5 -68.5q11.5 -39.5 11.5 -85.5q0 -42 -9 -87q-9 -45 -27 -93zM645 389q9 27 14.5 55q5.5 28 5.5 56q0 28 -6.5 53.5q-6.5 25.5 -21 45q-14.5 19.5 -37.5 30.5q-23 11 -57 11q-88 0 -149 -63q-61 -63 -90 -188z" />
-<glyph unicode="&#1215;" horiz-adv-x="539" d="M464 49q-31 -26 -70.5 -42.5q-39.5 -16.5 -81.5 -20.5l-31 -165h-74l42 167q-62 11 -93 56.5q-31 45.5 -31 117.5q0 42 6 80v0q-39 0 -61 9.5q-22 9.5 -35 24.5q-13 15 -18.5 33.5q-5.5 18.5 -5.5 35.5q0 37 19.5 65.5q19.5 28.5 44.5 43.5l76 0q-11 -7 -24 -16.5q-13 -9.5 -24 -22q-11 -12.5 -18 -27.5q-7 -15 -7 -33q0 -21 13 -38.5q13 -17.5 54 -17.5q16 51 42 90.5q26 39.5 58.5 66.5q32.5 27 70 41.5q37.5 14.5 75.5 14.5q36 0 62.5 -10q26.5 -10 43.5 -26.5q17 -16.5 25 -38q8 -21.5 8 -45.5q0 -71 -69 -111.5q-69 -40.5 -201 -40.5q-12 0 -25 0.5q-13 0.5 -28 1.5q-4 -19 -5.5 -36q-1.5 -17 -1.5 -30q1 -55 25.5 -89.5q24.5 -34.5 77.5 -34.5q44 0 80.5 14.5q36.5 14.5 56.5 30.5zM379 448q-55 0 -95.5 -37.5q-40.5 -37.5 -61.5 -112.5q38 0 79 2q41 2 74.5 10.5q33.5 8.5 55.5 27q22 18.5 22 51.5q0 10 -3.5 20.5q-3.5 10.5 -11.5 19q-8 8.5 -22.5 14t-36.5 5.5z" />
-<glyph unicode="&#1216;" horiz-adv-x="277" d="M210 700h80l-148 -700l-80 0z" />
-<glyph unicode="&#1219;" horiz-adv-x="571" d="M405 185q0 45 -11 72q-11 27 -32.5 42q-21.5 15 -54.5 20q-33 5 -76 5h-43l-68 -324h-80l148 700h80l-70 -326l40 14l287 312h99l-271 -286l-62 -38h59q21 -2 45 -10q24 -8 45 -27.5q21 -19.5 35 -52q14 -32.5 14 -82.5v-23q0 -75 -18.5 -145.5q-18.5 -70.5 -54 -125q-35.5 -54.5 -88.5 -87.5q-53 -33 -122 -33h-11l16 74q50 1 86.5 28.5q36.5 27.5 60.5 72.5q24 45 35.5 102.5t11.5 117.5z" />
-<glyph unicode="&#1220;" horiz-adv-x="469" d="M308 16q5 23 7.5 42.5q2.5 19.5 2.5 36.5q0 63 -30 92q-30 29 -87 29h-45l-45 -216h-75l106 500h75l-51 -235l39 14l200 221h89l-192 -210l-42 -26l41 -6q26 -6 44 -21.5q18 -15.5 29 -36.5q11 -21 16 -46.5q5 -25.5 5 -51.5q0 -34 -8 -69l-4 -17q-13 -61 -35 -104q-22 -43 -49.5 -70.5q-27.5 -27.5 -60.5 -40q-33 -12.5 -69 -12.5q-16 0 -34 3l15 64q5 -1 8.5 -1q3.5 0 7.5 0q51 0 88.5 41.5t53.5 119.5z" />
-<glyph unicode="&#1221;" horiz-adv-x="600" d="M525 626h-196q-46 -199 -88.5 -331.5q-42.5 -132.5 -89.5 -207.5q-31 -49 -64.5 -70.5q-33.5 -21.5 -70.5 -21.5q-17 0 -32 2.5q-15 2.5 -26 7.5l27 72q10 -3 22 -3q19 0 38.5 12q19.5 12 39.5 42q18 27 39 72q21 45 44 113.5q23 68.5 48 163.5q25 95 52 223l78 0h274l-133 -630h96l-5 -22l-124 -177h-51l71 129l-82 0z" />
-<glyph unicode="&#1222;" horiz-adv-x="506" d="M388 436h-134q-26 -107 -49 -189q-23 -82 -49.5 -137.5q-26.5 -55.5 -58.5 -84.5q-32 -29 -77 -29q-17 0 -30.5 2q-13.5 2 -22.5 7l23 64q12 -3 23 -3q22 0 41.5 16q19.5 16 40.5 63q21 47 45.5 132q24.5 85 57.5 223l70 0h208l-91 -430h100l-5 -22l-124 -177h-51l71 129h-6l-75 0z" />
-<glyph unicode="&#1223;" horiz-adv-x="639" d="M517 1q-24 -123 -61.5 -168q-37.5 -45 -105.5 -45q-8 0 -16.5 0q-8.5 0 -17.5 2l15 70h7q26 0 42 8.5q16 8.5 26 26q10 17.5 16.5 44q6.5 26.5 14.5 61.5l68 321h-318l-67 -321h-80l148 700h80l-64 -305h317l64 305l80 0z" />
-<glyph unicode="&#1224;" horiz-adv-x="522" d="M374 220h-216l-47 -220h-75l106 500h75l-44 -208h216l44 208h75l-106 -500q-8 -42 -19 -76q-11 -34 -26 -60q-23 -39 -53 -57.5q-30 -18.5 -75 -18.5q-7 0 -14 0.5q-7 0.5 -14 1.5l15 69q27 0 44.5 8.5q17.5 8.5 29.5 25.5q12 17 20.5 44q8.5 27 16.5 63z" />
-<glyph unicode="&#1225;" horiz-adv-x="645" d="M505 321h-318l-67 -321h-80l148 700h80l-64 -305h317l64 305h80l-133 -630h95l-5 -22l-124 -177h-51l71 129l-81 0z" />
-<glyph unicode="&#1226;" horiz-adv-x="534" d="M373 220h-216l-47 -220h-75l106 500h75l-44 -208h216l44 208h75l-91 -430h97l-5 -22l-124 -177h-51l71 129l-78 0z" />
-<glyph unicode="&#1227;" horiz-adv-x="576" d="M257 700l-48 -225q-3 -14 -5 -27.5q-2 -13.5 -2 -24.5q0 -92 94 -92q45 0 86.5 12.5q41.5 12.5 70.5 33.5l69 323h80l-148 -700h-80h-14l-42 -129h-54l42 203h84l48 228q-29 -17 -69.5 -31q-40.5 -14 -97.5 -14q-30 0 -57.5 7.5q-27.5 7.5 -48.5 25q-21 17.5 -33 45q-12 27.5 -12 67.5q0 30 7 62l50 236z" />
-<glyph unicode="&#1228;" horiz-adv-x="470" d="M319 212q-17 -10 -49.5 -21.5q-32.5 -11.5 -85.5 -11.5q-56 0 -85.5 22q-29.5 22 -29.5 80q0 15 1.5 32q1.5 17 6.5 37l32 150h76l-28 -134q-8 -34 -8 -59q0 -29 14 -46.5q14 -17.5 51 -17.5q44 0 73.5 13q29.5 13 46.5 25l46 219h76l-106 -500h-75h-10l-31 -127h-71l51 194l74 0z" />
-<glyph unicode="&#1229;" horiz-adv-x="759" d="M651 470l31 105h-4l-56 -96l-240 -316h-24l-115 316l-15 96h-4l-8 -104l-100 -471h-76l149 700h55l130 -358l15 -78h1l46 80l273 356h71l-134 -630h95l-5 -22l-124 -177h-51l71 129l-81 0z" />
-<glyph unicode="&#1230;" horiz-adv-x="634" d="M490 297q0 1 4 16.5q4 15.5 9 32.5l12 46h-4l-51 -77l-156 -196h-26l-78 196l-15 77h-4l-13 -94l-63 -298h-70l106 500h69l85 -224l15 -58h2l41 60l172 222h82l-91 -430h97l-5 -22l-124 -177h-51l71 129l-77 0z" />
-<glyph unicode="&#1231;" horiz-adv-x="237" d="M184 700h76l-148 -700l-76 0z" />
-<glyph unicode="&#1232;" horiz-adv-x="557" d="M404 194h-244l-108 -194h-85l404 711h37l101 -711h-77zM199 266h197l-29 213l-2 106h-1l-45 -108zM328 870q0 -37 18.5 -57q18.5 -20 51.5 -20q42 0 69 20.5q27 20.5 38 55.5l73 -17q-18 -54 -65 -85.5q-47 -31.5 -119 -31.5q-68 0 -100 33.5q-32 33.5 -34 81.5z" />
-<glyph unicode="&#1233;" horiz-adv-x="487" d="M414 197q-8 -37 -11 -75q-3 -38 -3 -71q0 -15 0 -28.5q0 -13.5 2 -24.5l-56 0l-14 87h-4q-12 -17 -29.5 -34.5q-17.5 -17.5 -38.5 -31.5q-21 -14 -45 -22.5q-24 -8.5 -51 -8.5q-119 0 -119 155q0 64 16.5 130q16.5 66 51 119q34.5 53 89 87q54.5 34 131.5 34q28 0 68.5 -6.5q40.5 -6.5 75.5 -17.5zM187 52q24 0 46 11.5q22 11.5 41.5 28.5q19.5 17 34.5 36.5q15 19.5 24 36.5l56 270q-30 14 -76 14q-46 0 -81 -27q-35 -27 -59 -70.5q-24 -43.5 -36 -98.5q-12 -55 -12 -110q0 -38 15 -64.5q15 -26.5 47 -26.5zt0 0zM272 702q0 -47 19.5 -64.5q19.5 -17.5 49.5 -17.5q31 0 58.5 19q27.5 19 44.5 62l54 -19q-20 -58 -67.5 -89q-47.5 -31 -103.5 -31q-25 0 -47.5 6q-22.5 6 -39.5 19q-17 13 -27 33.5q-10 20.5 -10 48.5l0 9z" />
-<glyph unicode="&#1234;" horiz-adv-x="557" d="M404 194h-244l-108 -194h-85l404 711h37l101 -711h-77zM199 266h197l-29 213l-2 106h-1l-45 -108zM262 794q0 20 14 33.5q14 13.5 37 13.5q23 0 36.5 -13.5q13.5 -13.5 13.5 -33.5q0 -20 -13.5 -33q-13.5 -13 -36.5 -13q-23 0 -37 13q-14 13 -14 33zt0 0zM445 794q0 20 13.5 33.5q13.5 13.5 36.5 13.5q23 0 37 -13.5q14 -13.5 14 -33.5q0 -20 -14 -33q-14 -13 -37 -13q-23 0 -36.5 13t-13.5 33z" />
-<glyph unicode="&#1235;" horiz-adv-x="487" d="M414 197q-8 -37 -11 -75q-3 -38 -3 -71q0 -15 0 -28.5q0 -13.5 2 -24.5l-56 0l-14 87h-4q-12 -17 -29.5 -34.5q-17.5 -17.5 -38.5 -31.5q-21 -14 -45 -22.5q-24 -8.5 -51 -8.5q-119 0 -119 155q0 64 16.5 130q16.5 66 51 119q34.5 53 89 87q54.5 34 131.5 34q28 0 68.5 -6.5q40.5 -6.5 75.5 -17.5zM187 52q24 0 46 11.5q22 11.5 41.5 28.5q19.5 17 34.5 36.5q15 19.5 24 36.5l56 270q-30 14 -76 14q-46 0 -81 -27q-35 -27 -59 -70.5q-24 -43.5 -36 -98.5q-12 -55 -12 -110q0 -38 15 -64.5q15 -26.5 47 -26.5zt0 0zM202 633q0 22 12.5 36.5q12.5 14.5 33.5 14.5q21 0 34 -14.5q13 -14.5 13 -36.5q0 -20 -13 -34.5q-13 -14.5 -34 -14.5q-21 0 -33.5 14.5q-12.5 14.5 -12.5 34.5zt0 0zM385 634q0 21 12.5 35.5q12.5 14.5 33.5 14.5q22 0 34.5 -14.5q12.5 -14.5 12.5 -35.5q0 -21 -12.5 -35.5q-12.5 -14.5 -34.5 -14.5q-21 0 -33.5 14.5t-12.5 35.5z" />
-<glyph unicode="&#1236;" horiz-adv-x="805" d="M459 599l-51 -101l-174 -229h157l71 330zM377 197h-199l-148 -197h-92l541 700h366l-15 -74h-283l-49 -229h259l-16 -74h-258l-54 -249h288l-15 -74h-287l-80 0z" />
-<glyph unicode="&#1237;" horiz-adv-x="754" d="M176 56q27 0 51.5 13q24.5 13 44.5 30.5q20 17.5 34.5 35q14.5 17.5 21.5 28.5l8 68q-11 1 -23 1.5q-12 0.5 -23 0.5q-38 0 -71.5 -6q-33.5 -6 -58 -19q-24.5 -13 -38.5 -32.5q-14 -19.5 -14 -47.5q0 -38 17.5 -55q17.5 -17 50.5 -17zt0 0zM332 87q-32 -39 -79.5 -67q-47.5 -28 -104.5 -28q-31 0 -53.5 10q-22.5 10 -37.5 26.5q-15 16.5 -22 38q-7 21.5 -7 44.5q0 51 22 85.5q22 34.5 59.5 55q37.5 20.5 87.5 29.5q50 9 105 9q11 0 22.5 0q11.5 0 22.5 -1q20 65 20 97q0 32 -19 45q-19 13 -63 13q-16 0 -35.5 -2.5q-19.5 -2.5 -39.5 -7.5q-20 -5 -38.5 -11.5q-18.5 -6.5 -33.5 -13.5l-12 60q42 23 91.5 31q49.5 8 100.5 8q48 0 78.5 -17q30.5 -17 37.5 -49q32 37 77.5 53.5q45.5 16.5 87.5 16.5q74 0 110 -32.5q36 -32.5 36 -80.5q0 -53 -24.5 -85q-24.5 -32 -68.5 -50q-44 -18 -106 -24.5q-62 -6.5 -136 -7.5q-3 -17 -5 -32q-2 -15 -2 -29q0 -55 28 -87q28 -32 95 -32q32 0 66.5 12.5q34.5 12.5 55.5 27.5l17 -54q-34 -24 -80.5 -37q-46.5 -13 -94.5 -13q-58 0 -97.5 26.5q-39.5 26.5 -53.5 72.5zM587 448q-61 0 -102 -40q-41 -40 -63 -115q49 0 93.5 2.5q44.5 2.5 78.5 12q34 9.5 54 28.5q20 19 20 52q0 25 -16.5 42.5t-64.5 17.5z" />
-<glyph unicode="&#1238;" horiz-adv-x="510" d="M189 700h361l-15 -74h-283l-49 -229h259l-15 -74h-259l-53 -249h288l-16 -74h-288h-79zM305 870q0 -37 18.5 -57q18.5 -20 51.5 -20q42 0 69 20.5q27 20.5 38 55.5l73 -17q-18 -54 -65 -85.5q-47 -31.5 -119 -31.5q-68 0 -100 33.5q-32 33.5 -34 81.5z" />
-<glyph unicode="&#1239;" horiz-adv-x="463" d="M389 49q-35 -30 -82.5 -45.5q-47.5 -15.5 -95.5 -15.5q-80 0 -120.5 46q-40.5 46 -40.5 128q0 82 23 147q23 65 60.5 110q37.5 45 85 69q47.5 24 97.5 24q36 0 62.5 -10q26.5 -10 43.5 -26.5q17 -16.5 25 -38q8 -21.5 8 -45.5q0 -71 -69 -111.5q-69 -40.5 -201 -40.5q-12 0 -25 0.5q-13 0.5 -27 1.5q-4 -19 -6 -36q-2 -17 -2 -30q0 -55 25 -89.5q25 -34.5 78 -34.5q44 0 80.5 14.5q36.5 14.5 56.5 30.5zM304 448q-55 0 -95.5 -37.5q-40.5 -37.5 -61.5 -112.5q38 0 79 2q41 2 74.5 10.5q33.5 8.5 55.5 27q22 18.5 22 51.5q0 10 -3.5 20.5q-3.5 10.5 -11.5 19q-8 8.5 -22.5 14q-14.5 5.5 -36.5 5.5zt0 0zM269 702q0 -47 19.5 -64.5q19.5 -17.5 49.5 -17.5q31 0 58.5 19q27.5 19 44.5 62l54 -19q-20 -58 -67.5 -89q-47.5 -31 -103.5 -31q-25 0 -47.5 6q-22.5 6 -39.5 19q-17 13 -27 33.5q-10 20.5 -10 48.5l0 9z" />
-<glyph unicode="&#1240;" horiz-adv-x="597" d="M151 320q-13 -49 -13 -98q0 -34 7 -63.5q7 -29.5 23 -51.5q16 -22 41 -34.5q25 -12.5 60 -12.5q46 0 83.5 19q37.5 19 66 53.5q28.5 34.5 47.5 82.5q19 48 29 105zM507 392q1 12 1.5 24q0.5 12 0.5 23q0 43 -8 80q-8 37 -26.5 64q-18.5 27 -48 42q-29.5 15 -72.5 15q-21 0 -44 -4q-23 -4 -44 -10.5q-21 -6.5 -39 -14q-18 -7.5 -30 -14.5l-6 67q32 18 74 33q42 15 101 15q40 0 80.5 -11q40.5 -11 73 -40.5q32.5 -29.5 53 -80.5q20.5 -51 20.5 -132q0 -91 -21 -174q-21 -83 -62 -146.5q-41 -63.5 -103 -101.5q-62 -38 -144 -38q-51 0 -89 16q-38 16 -64 46q-26 30 -39 71.5q-13 41.5 -13 92.5q0 40 7.5 84.5q7.5 44.5 24.5 93.5z" />
-<glyph unicode="&#1241;" horiz-adv-x="484" d="M106 465q34 23 72.5 35q38.5 12 97.5 12q48 0 81.5 -15q33.5 -15 54.5 -39.5q21 -24.5 30.5 -55q9.5 -30.5 9.5 -61.5q0 -80 -18.5 -145.5q-18.5 -65.5 -53.5 -111.5q-35 -46 -85 -71q-50 -25 -113 -25q-32 0 -59.5 10q-27.5 10 -47 27q-19.5 17 -30.5 40.5q-11 23.5 -11 49.5q0 86 60.5 127q60.5 41 177.5 41q47 0 101 -6q2 14 3 26q1 12 1 24q0 33 -9 56q-9 23 -25.5 37.5q-16.5 14.5 -38 21q-21.5 6.5 -45.5 6.5q-47 0 -80 -13.5q-33 -13.5 -53 -26.5zM198 52q53 0 96.5 41.5q43.5 41.5 63.5 121.5q-20 4 -42.5 6q-22.5 2 -45.5 2q-30 0 -58.5 -4.5q-28.5 -4.5 -51 -15.5q-22.5 -11 -36 -29.5q-13.5 -18.5 -13.5 -45.5q0 -28 20 -52t67 -24z" />
-<glyph unicode="&#1242;" horiz-adv-x="597" d="M151 320q-13 -49 -13 -98q0 -34 7 -63.5q7 -29.5 23 -51.5q16 -22 41 -34.5q25 -12.5 60 -12.5q46 0 83.5 19q37.5 19 66 53.5q28.5 34.5 47.5 82.5q19 48 29 105zM507 392q1 12 1.5 24q0.5 12 0.5 23q0 43 -8 80q-8 37 -26.5 64q-18.5 27 -48 42q-29.5 15 -72.5 15q-21 0 -44 -4q-23 -4 -44 -10.5q-21 -6.5 -39 -14q-18 -7.5 -30 -14.5l-6 67q32 18 74 33q42 15 101 15q40 0 80.5 -11q40.5 -11 73 -40.5q32.5 -29.5 53 -80.5q20.5 -51 20.5 -132q0 -91 -21 -174q-21 -83 -62 -146.5q-41 -63.5 -103 -101.5q-62 -38 -144 -38q-51 0 -89 16q-38 16 -64 46q-26 30 -39 71.5q-13 41.5 -13 92.5q0 40 7.5 84.5q7.5 44.5 24.5 93.5zM268 794q0 20 14 33.5q14 13.5 37 13.5q23 0 36.5 -13.5q13.5 -13.5 13.5 -33.5q0 -20 -13.5 -33q-13.5 -13 -36.5 -13q-23 0 -37 13q-14 13 -14 33zt0 0zM451 794q0 20 13.5 33.5q13.5 13.5 36.5 13.5q23 0 37 -13.5q14 -13.5 14 -33.5q0 -20 -14 -33q-14 -13 -37 -13q-23 0 -36.5 13t-13.5 33z" />
-<glyph unicode="&#1243;" horiz-adv-x="484" d="M106 465q34 23 72.5 35q38.5 12 97.5 12q48 0 81.5 -15q33.5 -15 54.5 -39.5q21 -24.5 30.5 -55q9.5 -30.5 9.5 -61.5q0 -80 -18.5 -145.5q-18.5 -65.5 -53.5 -111.5q-35 -46 -85 -71q-50 -25 -113 -25q-32 0 -59.5 10q-27.5 10 -47 27q-19.5 17 -30.5 40.5q-11 23.5 -11 49.5q0 86 60.5 127q60.5 41 177.5 41q47 0 101 -6q2 14 3 26q1 12 1 24q0 33 -9 56q-9 23 -25.5 37.5q-16.5 14.5 -38 21q-21.5 6.5 -45.5 6.5q-47 0 -80 -13.5q-33 -13.5 -53 -26.5zM198 52q53 0 96.5 41.5q43.5 41.5 63.5 121.5q-20 4 -42.5 6q-22.5 2 -45.5 2q-30 0 -58.5 -4.5q-28.5 -4.5 -51 -15.5q-22.5 -11 -36 -29.5q-13.5 -18.5 -13.5 -45.5q0 -28 20 -52q20 -24 67 -24zt0 0zM161 633q0 22 12.5 36.5q12.5 14.5 33.5 14.5q21 0 34 -14.5q13 -14.5 13 -36.5q0 -20 -13 -34.5q-13 -14.5 -34 -14.5q-21 0 -33.5 14.5q-12.5 14.5 -12.5 34.5zt0 0zM344 634q0 21 12.5 35.5q12.5 14.5 33.5 14.5q22 0 34.5 -14.5q12.5 -14.5 12.5 -35.5q0 -21 -12.5 -35.5q-12.5 -14.5 -34.5 -14.5q-21 0 -33.5 14.5t-12.5 35.5z" />
-<glyph unicode="&#1244;" horiz-adv-x="767" d="M446 700h75l-69 -326l37 14l257 312h97l-256 -304l-47 -32l40 -41l144 -323h-88l-145 324h-50l-68 -324h-75l71 336l-37 -13l-276 -323h-100l275 313l53 38l-34 35l-133 314h88l126 -314h48zM364 794q0 20 14 33.5q14 13.5 37 13.5q23 0 36.5 -13.5q13.5 -13.5 13.5 -33.5q0 -20 -13.5 -33q-13.5 -13 -36.5 -13q-23 0 -37 13q-14 13 -14 33zt0 0zM547 794q0 20 13.5 33.5q13.5 13.5 36.5 13.5q23 0 37 -13.5q14 -13.5 14 -33.5q0 -20 -14 -33q-14 -13 -37 -13q-23 0 -36.5 13t-13.5 33z" />
-<glyph unicode="&#1245;" horiz-adv-x="704" d="M224 225q-18 -67 -39.5 -111q-21.5 -44 -45.5 -70.5q-24 -26.5 -50.5 -37.5q-26.5 -11 -53.5 -11q-12 0 -24.5 2q-12.5 2 -24.5 5l20 68q12 -3 24 -3q40 0 75 42.5q35 42.5 55 143.5q5 29 8 51.5q3 22.5 3 41.5q0 53 -18 72.5q-18 19.5 -46 19.5q-5 0 -10 -0.5q-5 -0.5 -10 -1.5l-9 62q14 2 26 3.5q12 1.5 23 1.5q56 0 84 -32.5q28 -32.5 28 -104.5q0 -18 -2 -38.5q-2 -20.5 -6 -43.5l98 0l46 216h75l-47 -216h91q17 64 37.5 106q20.5 42 44 67.5q23.5 25.5 49 36q25.5 10.5 51.5 10.5q22 0 43 -6l-17 -64q-5 1 -10 1.5q-5 0.5 -10 0.5q-18 0 -34.5 -8q-16.5 -8 -31 -27.5q-14.5 -19.5 -27.5 -51.5q-13 -32 -25 -80q-6 -25 -9.5 -49q-3.5 -24 -3.5 -47q0 -48 15.5 -81.5q15.5 -33.5 49.5 -33.5q11 0 26 5l11 -61q-16 -5 -30 -6.5q-14 -1.5 -27 -1.5q-34 0 -56.5 13.5q-22.5 13.5 -36 36q-13.5 22.5 -19 52q-5.5 29.5 -5.5 61.5q0 17 1.5 34q1.5 17 3.5 34l-93 0l-47 -225h-75l48 225zM303 633q0 22 12.5 36.5q12.5 14.5 33.5 14.5q21 0 34 -14.5q13 -14.5 13 -36.5q0 -20 -13 -34.5q-13 -14.5 -34 -14.5q-21 0 -33.5 14.5q-12.5 14.5 -12.5 34.5zt0 0zM486 634q0 21 12.5 35.5q12.5 14.5 33.5 14.5q22 0 34.5 -14.5q12.5 -14.5 12.5 -35.5q0 -21 -12.5 -35.5q-12.5 -14.5 -34.5 -14.5q-21 0 -33.5 14.5t-12.5 35.5z" />
-<glyph unicode="&#1246;" horiz-adv-x="515" d="M164 331l15 69h14q18 0 44.5 1.5q26.5 1.5 42.5 3.5q27 3 55 12.5q28 9.5 50.5 26.5q22.5 17 37 42q14.5 25 14.5 59q0 45 -32 70q-32 25 -87 25q-51 0 -85 -8.5q-34 -8.5 -62 -18.5l-8 65q23 11 69.5 22.5q46.5 11.5 107.5 11.5q38 0 71 -9.5q33 -9.5 57.5 -27.5q24.5 -18 38.5 -45q14 -27 14 -63q0 -43 -13.5 -76q-13.5 -33 -36 -57q-22.5 -24 -52.5 -38.5q-30 -14.5 -63 -19.5l0 -4q21 -5 41.5 -15.5q20.5 -10.5 37 -28.5q16.5 -18 26.5 -44.5q10 -26.5 10 -63.5q0 -66 -27 -110.5q-27 -44.5 -70 -71.5q-43 -27 -95.5 -38.5q-52.5 -11.5 -104.5 -11.5q-63 0 -103.5 7.5q-40.5 7.5 -64.5 18.5l36 73q20 -11 57 -19q37 -8 93 -8q34 0 69 8.5q35 8.5 63 27.5q28 19 45.5 49.5q17.5 30.5 17.5 74.5q0 30 -10.5 50q-10.5 20 -28.5 33q-18 13 -41 19q-23 6 -47 8q-11 1 -22 1q-11 0 -22 0zM215 794q0 20 14 33.5q14 13.5 37 13.5q23 0 36.5 -13.5q13.5 -13.5 13.5 -33.5q0 -20 -13.5 -33q-13.5 -13 -36.5 -13q-23 0 -37 13q-14 13 -14 33zt0 0zM398 794q0 20 13.5 33.5q13.5 13.5 36.5 13.5q23 0 37 -13.5q14 -13.5 14 -33.5q0 -20 -14 -33q-14 -13 -37 -13q-23 0 -36.5 13t-13.5 33z" />
-<glyph unicode="&#1247;" horiz-adv-x="418" d="M120 224l13 62h66q17 0 36.5 8q19.5 8 36 22q16.5 14 27.5 31.5q11 17.5 11 37.5q0 32 -19 45q-19 13 -70 13q-36 0 -62.5 -8q-26.5 -8 -49.5 -19l-16 59q32 17 70.5 24.5q38.5 7.5 88.5 7.5q74 0 106 -26.5q32 -26.5 32 -76.5q0 -26 -9 -48q-9 -22 -24.5 -39.5q-15.5 -17.5 -35 -29.5q-19.5 -12 -40.5 -19l0 -4q43 -8 60.5 -32.5q17.5 -24.5 17.5 -56.5q0 -44 -18 -78q-18 -34 -48.5 -57.5q-30.5 -23.5 -72 -36q-41.5 -12.5 -89.5 -12.5q-40 0 -77 10q-37 10 -58 26l32 60q20 -13 50 -22.5q30 -9.5 66 -9.5q58 0 97.5 29.5q39.5 29.5 39.5 80.5q0 30 -24 44.5q-24 14.5 -82 14.5zM133 633q0 22 12.5 36.5q12.5 14.5 33.5 14.5q21 0 34 -14.5q13 -14.5 13 -36.5q0 -20 -13 -34.5q-13 -14.5 -34 -14.5q-21 0 -33.5 14.5q-12.5 14.5 -12.5 34.5zt0 0zM316 634q0 21 12.5 35.5q12.5 14.5 33.5 14.5q22 0 34.5 -14.5q12.5 -14.5 12.5 -35.5q0 -21 -12.5 -35.5q-12.5 -14.5 -34.5 -14.5q-21 0 -33.5 14.5t-12.5 35.5z" />
-<glyph unicode="&#1248;" horiz-adv-x="536" d="M199 60q57 0 97 16q40 16 64.5 40.5q24.5 24.5 36 54.5q11.5 30 11.5 58q0 28 -7.5 49q-7.5 21 -25 35q-17.5 14 -46.5 21q-29 7 -73 7h-93l5 27l222 224l51 43l-60 -9h-225l15 74h394l-6 -30l-238 -239l-41 -29v-3l36 8q40 0 73 -12q33 -12 55.5 -33q22.5 -21 35 -50q12.5 -29 12.5 -63q0 -56 -18.5 -104q-18.5 -48 -56.5 -83q-38 -35 -95.5 -54.5q-57.5 -19.5 -134.5 -19.5q-21 0 -45 2.5q-24 2.5 -46.5 7.5q-22.5 5 -41.5 11q-19 6 -29 14l36 73q9 -6 25 -12.5q16 -6.5 35 -12q19 -5.5 39.5 -8.5t38.5 -3z" />
-<glyph unicode="&#1249;" horiz-adv-x="410" d="M71 -148q38 0 74.5 13q36.5 13 65 37q28.5 24 45.5 58q17 34 17 76q0 58 -35 82q-35 24 -118 24h-48l5 25l185 225l60 52l-62 -8h-189l14 64h340l-6 -29l-202 -242l-38 -29v-2l31 6q29 0 55 -11q26 -11 45.5 -31q19.5 -20 31 -48q11.5 -28 11.5 -61q0 -65 -25.5 -114q-25.5 -49 -66 -83q-40.5 -34 -91 -51q-50.5 -17 -101.5 -17q-43 0 -75.5 7.5q-32.5 7.5 -56.5 20.5l31 61q20 -12 48.5 -18.5t54.5 -6.5z" />
-<glyph unicode="&#1250;" horiz-adv-x="648" d="M545 468l24 81h-3l-59 -84l-416 -465h-51l149 700h80l-101 -476l-25 -76h4l59 82l417 470h51l-148 -700h-80zM308 843h300l-13 -62l-301 0z" />
-<glyph unicode="&#1251;" horiz-adv-x="511" d="M213 500l-70 -333q-6 -27 -6 -50q0 -28 11 -46.5q11 -18.5 40 -18.5q24 0 48.5 12q24.5 12 47 31q22.5 19 41 42q18.5 23 30.5 45l67 318h75l-63 -297q-4 -17 -8 -41.5q-4 -24.5 -7.5 -51.5q-3.5 -27 -5.5 -52.5q-2 -25.5 -2 -44.5v-13h-59v95h-4q-15 -20 -34.5 -39q-19.5 -19 -43 -34q-23.5 -15 -50.5 -24.5q-27 -9.5 -57 -9.5q-22 0 -40.5 5q-18.5 5 -32.5 17.5q-14 12.5 -22 33q-8 20.5 -8 52.5q0 35 10 79l68 325zM200 643h281l-13 -62l-282 0z" />
-<glyph unicode="&#1252;" horiz-adv-x="648" d="M545 468l24 81h-3l-59 -84l-416 -465h-51l149 700h80l-101 -476l-25 -76h4l59 82l417 470h51l-148 -700h-80zM306 794q0 20 14 33.5q14 13.5 37 13.5q23 0 36.5 -13.5q13.5 -13.5 13.5 -33.5q0 -20 -13.5 -33q-13.5 -13 -36.5 -13q-23 0 -37 13q-14 13 -14 33zt0 0zM489 794q0 20 13.5 33.5q13.5 13.5 36.5 13.5q23 0 37 -13.5q14 -13.5 14 -33.5q0 -20 -14 -33q-14 -13 -37 -13q-23 0 -36.5 13t-13.5 33z" />
-<glyph unicode="&#1253;" horiz-adv-x="511" d="M213 500l-70 -333q-6 -27 -6 -50q0 -28 11 -46.5q11 -18.5 40 -18.5q24 0 48.5 12q24.5 12 47 31q22.5 19 41 42q18.5 23 30.5 45l67 318h75l-63 -297q-4 -17 -8 -41.5q-4 -24.5 -7.5 -51.5q-3.5 -27 -5.5 -52.5q-2 -25.5 -2 -44.5v-13h-59v95h-4q-15 -20 -34.5 -39q-19.5 -19 -43 -34q-23.5 -15 -50.5 -24.5q-27 -9.5 -57 -9.5q-22 0 -40.5 5q-18.5 5 -32.5 17.5q-14 12.5 -22 33q-8 20.5 -8 52.5q0 35 10 79l68 325zM211 633q0 22 12.5 36.5q12.5 14.5 33.5 14.5q21 0 34 -14.5q13 -14.5 13 -36.5q0 -20 -13 -34.5q-13 -14.5 -34 -14.5q-21 0 -33.5 14.5q-12.5 14.5 -12.5 34.5zt0 0zM394 634q0 21 12.5 35.5q12.5 14.5 33.5 14.5q22 0 34.5 -14.5q12.5 -14.5 12.5 -35.5q0 -21 -12.5 -35.5q-12.5 -14.5 -34.5 -14.5q-21 0 -33.5 14.5t-12.5 35.5z" />
-<glyph unicode="&#1254;" horiz-adv-x="651" d="M71 256q0 92 25 175q25 83 71.5 145.5q46.5 62.5 112 99q65.5 36.5 145.5 36.5q48 0 89 -14.5q41 -14.5 70.5 -46q29.5 -31.5 46 -81.5q16.5 -50 16.5 -122q0 -94 -25 -177.5q-25 -83.5 -70 -146.5q-45 -63 -107.5 -99.5q-62.5 -36.5 -137.5 -36.5q-118 0 -177 68.5q-59 68.5 -59 199.5zt0 0zM155 257q0 -94 39 -145.5q39 -51.5 115 -51.5q56 0 102.5 31q46.5 31 80.5 84q34 53 52.5 123q18.5 70 18.5 148q0 58 -13 96q-13 38 -34.5 59.5q-21.5 21.5 -49 30q-27.5 8.5 -55.5 8.5q-57 0 -104 -31.5q-47 -31.5 -80.5 -84.5q-33.5 -53 -52.5 -122.5q-19 -69.5 -19 -144.5zt0 0zM309 794q0 20 14 33.5q14 13.5 37 13.5q23 0 36.5 -13.5q13.5 -13.5 13.5 -33.5q0 -20 -13.5 -33q-13.5 -13 -36.5 -13q-23 0 -37 13q-14 13 -14 33zt0 0zM492 794q0 20 13.5 33.5q13.5 13.5 36.5 13.5q23 0 37 -13.5q14 -13.5 14 -33.5q0 -20 -14 -33q-14 -13 -37 -13q-23 0 -36.5 13t-13.5 33z" />
-<glyph unicode="&#1255;" horiz-adv-x="498" d="M50 156q0 79 20.5 144.5q20.5 65.5 56.5 112.5q36 47 83.5 73q47.5 26 101.5 26q42 0 71.5 -13.5q29.5 -13.5 48 -37q18.5 -23.5 26.5 -54q8 -30.5 8 -63.5q0 -75 -19.5 -140q-19.5 -65 -54 -113q-34.5 -48 -80.5 -75.5q-46 -27.5 -100 -27.5q-45 0 -75.5 14.5q-30.5 14.5 -50 38.5q-19.5 24 -28 54q-8.5 30 -8.5 61zt0 0zM130 174q0 -59 22 -90.5q22 -31.5 70 -31.5q33 0 62.5 23.5q29.5 23.5 52 63.5q22.5 40 36 91.5q13.5 51.5 13.5 107.5q0 51 -18.5 80.5q-18.5 29.5 -70.5 29.5q-33 0 -63 -22.5q-30 -22.5 -53.5 -60.5q-23.5 -38 -37 -87.5q-13.5 -49.5 -13.5 -103.5zt0 0zM191 633q0 22 12.5 36.5q12.5 14.5 33.5 14.5q21 0 34 -14.5q13 -14.5 13 -36.5q0 -20 -13 -34.5q-13 -14.5 -34 -14.5q-21 0 -33.5 14.5q-12.5 14.5 -12.5 34.5zt0 0zM374 634q0 21 12.5 35.5q12.5 14.5 33.5 14.5q22 0 34.5 -14.5q12.5 -14.5 12.5 -35.5q0 -21 -12.5 -35.5q-12.5 -14.5 -34.5 -14.5q-21 0 -33.5 14.5t-12.5 35.5z" />
-<glyph unicode="&#1256;" horiz-adv-x="651" d="M72 256q0 92 24.5 175q24.5 83 70 145.5q45.5 62.5 110.5 99q65 36.5 145 36.5q48 0 89.5 -14.5q41.5 -14.5 71.5 -46q30 -31.5 47 -81.5q17 -50 17 -122q0 -94 -24 -177.5q-24 -83.5 -68.5 -146.5q-44.5 -63 -106 -99.5q-61.5 -36.5 -136.5 -36.5q-118 0 -179 68.5q-61 68.5 -61 199.5zt0 0zM156 257q0 -94 41 -145.5q41 -51.5 117 -51.5q44 0 82 19.5q38 19.5 68 54q30 34.5 52 82q22 47.5 34 103.5l-391 0q-3 -32 -3 -62zt0 0zM408 640q-44 0 -82 -19q-38 -19 -68 -52q-30 -33 -52.5 -78.5q-22.5 -45.5 -34.5 -99.5l389 0q3 27 3 55q0 58 -14 96q-14 38 -36 59.5q-22 21.5 -49.5 30t-55.5 8.5z" />
-<glyph unicode="&#1257;" horiz-adv-x="498" d="M50 156q0 79 20.5 144.5q20.5 65.5 56.5 112.5q36 47 83.5 73q47.5 26 101.5 26q42 0 71.5 -13.5q29.5 -13.5 48 -37q18.5 -23.5 26.5 -54q8 -30.5 8 -63.5q0 -75 -19.5 -140q-19.5 -65 -54 -113q-34.5 -48 -80.5 -75.5q-46 -27.5 -100 -27.5q-45 0 -75.5 14.5q-30.5 14.5 -50 38.5q-19.5 24 -28 54q-8.5 30 -8.5 61zt0 0zM297 448q-25 0 -48 -13q-23 -13 -43.5 -35.5q-20.5 -22.5 -36 -53.5q-15.5 -31 -25.5 -67l238 0q2 14 3 29q1 15 1 30q0 51 -18.5 80.5q-18.5 29.5 -70.5 29.5zt0 0zM130 174q0 -59 22 -90.5q22 -31.5 70 -31.5q24 0 46 12.5q22 12.5 41 35q19 22.5 34.5 53q15.5 30.5 25.5 66.5l-237 0q-1 -11 -1.5 -22.5t-0.5 -22.5z" />
-<glyph unicode="&#1258;" horiz-adv-x="651" d="M72 256q0 92 24.5 175q24.5 83 70 145.5q45.5 62.5 110.5 99q65 36.5 145 36.5q48 0 89.5 -14.5q41.5 -14.5 71.5 -46q30 -31.5 47 -81.5q17 -50 17 -122q0 -94 -24 -177.5q-24 -83.5 -68.5 -146.5q-44.5 -63 -106 -99.5q-61.5 -36.5 -136.5 -36.5q-118 0 -179 68.5q-61 68.5 -61 199.5zt0 0zM156 257q0 -94 41 -145.5q41 -51.5 117 -51.5q44 0 82 19.5q38 19.5 68 54q30 34.5 52 82q22 47.5 34 103.5l-391 0q-3 -32 -3 -62zt0 0zM408 640q-44 0 -82 -19q-38 -19 -68 -52q-30 -33 -52.5 -78.5q-22.5 -45.5 -34.5 -99.5l389 0q3 27 3 55q0 58 -14 96q-14 38 -36 59.5q-22 21.5 -49.5 30q-27.5 8.5 -55.5 8.5zt0 0zM309 794q0 20 14 33.5q14 13.5 37 13.5q23 0 36.5 -13.5q13.5 -13.5 13.5 -33.5q0 -20 -13.5 -33q-13.5 -13 -36.5 -13q-23 0 -37 13q-14 13 -14 33zt0 0zM492 794q0 20 13.5 33.5q13.5 13.5 36.5 13.5q23 0 37 -13.5q14 -13.5 14 -33.5q0 -20 -14 -33q-14 -13 -37 -13q-23 0 -36.5 13t-13.5 33z" />
-<glyph unicode="&#1259;" horiz-adv-x="498" d="M50 156q0 79 20.5 144.5q20.5 65.5 56.5 112.5q36 47 83.5 73q47.5 26 101.5 26q42 0 71.5 -13.5q29.5 -13.5 48 -37q18.5 -23.5 26.5 -54q8 -30.5 8 -63.5q0 -75 -19.5 -140q-19.5 -65 -54 -113q-34.5 -48 -80.5 -75.5q-46 -27.5 -100 -27.5q-45 0 -75.5 14.5q-30.5 14.5 -50 38.5q-19.5 24 -28 54q-8.5 30 -8.5 61zt0 0zM297 448q-25 0 -48 -13q-23 -13 -43.5 -35.5q-20.5 -22.5 -36 -53.5q-15.5 -31 -25.5 -67l238 0q2 14 3 29q1 15 1 30q0 51 -18.5 80.5q-18.5 29.5 -70.5 29.5zt0 0zM130 174q0 -59 22 -90.5q22 -31.5 70 -31.5q24 0 46 12.5q22 12.5 41 35q19 22.5 34.5 53q15.5 30.5 25.5 66.5l-237 0q-1 -11 -1.5 -22.5q-0.5 -11.5 -0.5 -22.5zt0 0zM191 633q0 22 12.5 36.5q12.5 14.5 33.5 14.5q21 0 34 -14.5q13 -14.5 13 -36.5q0 -20 -13 -34.5q-13 -14.5 -34 -14.5q-21 0 -33.5 14.5q-12.5 14.5 -12.5 34.5zt0 0zM374 634q0 21 12.5 35.5q12.5 14.5 33.5 14.5q22 0 34.5 -14.5q12.5 -14.5 12.5 -35.5q0 -21 -12.5 -35.5q-12.5 -14.5 -34.5 -14.5q-21 0 -33.5 14.5t-12.5 35.5z" />
-<glyph unicode="&#1260;" horiz-adv-x="554" d="M192 392h278q1 11 1.5 23q0.5 12 0.5 23q0 95 -43 148.5q-43 53.5 -137 53.5q-45 0 -79 -10q-34 -10 -59 -23l-6 66q34 18 73.5 28.5q39.5 10.5 89.5 10.5q72 0 118.5 -24q46.5 -24 73.5 -61.5q27 -37.5 38 -84q11 -46.5 11 -91.5q0 -98 -23.5 -182.5q-23.5 -84.5 -71.5 -146.5q-48 -62 -122 -98q-74 -36 -176 -36q-46 0 -85 7q-39 7 -63 18l37 73q20 -11 54.5 -18.5q34.5 -7.5 72.5 -7.5q51 0 97.5 17q46.5 17 85 50.5q38.5 33.5 65 82q26.5 48.5 37.5 111.5l-282 0zM205 794q0 20 14 33.5q14 13.5 37 13.5q23 0 36.5 -13.5q13.5 -13.5 13.5 -33.5q0 -20 -13.5 -33q-13.5 -13 -36.5 -13q-23 0 -37 13q-14 13 -14 33zt0 0zM388 794q0 20 13.5 33.5q13.5 13.5 36.5 13.5q23 0 37 -13.5q14 -13.5 14 -33.5q0 -20 -14 -33q-14 -13 -37 -13q-23 0 -36.5 13t-13.5 33z" />
-<glyph unicode="&#1261;" horiz-adv-x="440" d="M124 283h199q2 10 3 20.5q1 10.5 1 22.5q0 63 -25 92.5q-25 29.5 -71 29.5q-46 0 -76.5 -10.5q-30.5 -10.5 -50.5 -22.5l-20 52q34 22 74.5 33.5q40.5 11.5 90.5 11.5q41 0 70.5 -12q29.5 -12 49 -33.5q19.5 -21.5 29 -50.5q9.5 -29 9.5 -63q0 -102 -23 -172q-23 -70 -61 -112.5q-38 -42.5 -86.5 -61.5q-48.5 -19 -98.5 -19q-101 0 -147 31l33 61q19 -13 50.5 -20.5q31.5 -7.5 62.5 -7.5q69 0 115.5 43q46.5 43 65.5 127l-207 0zM108 633q0 22 12.5 36.5q12.5 14.5 33.5 14.5q21 0 34 -14.5q13 -14.5 13 -36.5q0 -20 -13 -34.5q-13 -14.5 -34 -14.5q-21 0 -33.5 14.5q-12.5 14.5 -12.5 34.5zt0 0zM291 634q0 21 12.5 35.5q12.5 14.5 33.5 14.5q22 0 34.5 -14.5q12.5 -14.5 12.5 -35.5q0 -21 -12.5 -35.5q-12.5 -14.5 -34.5 -14.5q-21 0 -33.5 14.5t-12.5 35.5z" />
-<glyph unicode="&#1262;" horiz-adv-x="526" d="M294 331l6 -89h4l38 92l205 366h88l-265 -455q-41 -71 -71 -119q-30 -48 -55.5 -77q-25.5 -29 -50 -41.5q-24.5 -12.5 -55.5 -12.5q-32 0 -51 6.5q-19 6.5 -33 15.5l39 69q16 -10 28.5 -13.5q12.5 -3.5 26.5 -3.5q26 0 51 33q25 33 54 84l-136 514h85zM240 843h300l-13 -62l-301 0z" />
-<glyph unicode="&#1263;" horiz-adv-x="439" d="M194 176l5 -96h5l38 97l166 323h80l-236 -446q-26 -49 -51.5 -95.5q-25.5 -46.5 -52.5 -83q-27 -36.5 -56 -58.5q-29 -22 -60 -22q-17 0 -29.5 2q-12.5 2 -22.5 7l24 69q11 -4 24 -4q29 0 58 30q29 30 65 101l-86 500h80zM157 643h281l-13 -62l-282 0z" />
-<glyph unicode="&#1264;" horiz-adv-x="526" d="M294 331l6 -89h4l38 92l205 366h88l-265 -455q-41 -71 -71 -119q-30 -48 -55.5 -77q-25.5 -29 -50 -41.5q-24.5 -12.5 -55.5 -12.5q-32 0 -51 6.5q-19 6.5 -33 15.5l39 69q16 -10 28.5 -13.5q12.5 -3.5 26.5 -3.5q26 0 51 33q25 33 54 84l-136 514h85zM262 794q0 20 14 33.5q14 13.5 37 13.5q23 0 36.5 -13.5q13.5 -13.5 13.5 -33.5q0 -20 -13.5 -33q-13.5 -13 -36.5 -13q-23 0 -37 13q-14 13 -14 33zt0 0zM445 794q0 20 13.5 33.5q13.5 13.5 36.5 13.5q23 0 37 -13.5q14 -13.5 14 -33.5q0 -20 -14 -33q-14 -13 -37 -13q-23 0 -36.5 13t-13.5 33z" />
-<glyph unicode="&#1265;" horiz-adv-x="439" d="M194 176l5 -96h5l38 97l166 323h80l-236 -446q-26 -49 -51.5 -95.5q-25.5 -46.5 -52.5 -83q-27 -36.5 -56 -58.5q-29 -22 -60 -22q-17 0 -29.5 2q-12.5 2 -22.5 7l24 69q11 -4 24 -4q29 0 58 30q29 30 65 101l-86 500h80zM172 633q0 22 12.5 36.5q12.5 14.5 33.5 14.5q21 0 34 -14.5q13 -14.5 13 -36.5q0 -20 -13 -34.5q-13 -14.5 -34 -14.5q-21 0 -33.5 14.5q-12.5 14.5 -12.5 34.5zt0 0zM355 634q0 21 12.5 35.5q12.5 14.5 33.5 14.5q22 0 34.5 -14.5q12.5 -14.5 12.5 -35.5q0 -21 -12.5 -35.5q-12.5 -14.5 -34.5 -14.5q-21 0 -33.5 14.5t-12.5 35.5z" />
-<glyph unicode="&#1266;" horiz-adv-x="526" d="M294 331l6 -89h4l38 92l205 366h88l-265 -455q-41 -71 -71 -119q-30 -48 -55.5 -77q-25.5 -29 -50 -41.5q-24.5 -12.5 -55.5 -12.5q-32 0 -51 6.5q-19 6.5 -33 15.5l39 69q16 -10 28.5 -13.5q12.5 -3.5 26.5 -3.5q26 0 51 33q25 33 54 84l-136 514h85zM361 850h88l-3 -16l-115 -93h-54zM515 850h93l-3 -16l-156 -93l-54 0z" />
-<glyph unicode="&#1267;" horiz-adv-x="439" d="M194 176l5 -96h5l38 97l166 323h80l-236 -446q-26 -49 -51.5 -95.5q-25.5 -46.5 -52.5 -83q-27 -36.5 -56 -58.5q-29 -22 -60 -22q-17 0 -29.5 2q-12.5 2 -22.5 7l24 69q11 -4 24 -4q29 0 58 30q29 30 65 101l-86 500h80zM262 700h74l-3 -16l-91 -113h-40zM401 700h81l-3 -16l-131 -113l-44 0z" />
-<glyph unicode="&#1268;" horiz-adv-x="576" d="M257 700l-48 -225q-3 -14 -5 -27.5q-2 -13.5 -2 -24.5q0 -92 94 -92q45 0 86.5 12.5q41.5 12.5 70.5 33.5l69 323h80l-148 -700h-80l64 302q-29 -17 -69.5 -31q-40.5 -14 -97.5 -14q-30 0 -57.5 7.5q-27.5 7.5 -48.5 25q-21 17.5 -33 45q-12 27.5 -12 67.5q0 30 7 62l50 236zM276 794q0 20 14 33.5q14 13.5 37 13.5q23 0 36.5 -13.5q13.5 -13.5 13.5 -33.5q0 -20 -13.5 -33q-13.5 -13 -36.5 -13q-23 0 -37 13q-14 13 -14 33zt0 0zM459 794q0 20 13.5 33.5q13.5 13.5 36.5 13.5q23 0 37 -13.5q14 -13.5 14 -33.5q0 -20 -14 -33q-14 -13 -37 -13q-23 0 -36.5 13t-13.5 33z" />
-<glyph unicode="&#1269;" horiz-adv-x="470" d="M185 500l-29 -136q-7 -35 -7 -60q0 -29 13.5 -46.5q13.5 -17.5 50.5 -17.5q44 0 73 12.5q29 12.5 46 24.5l48 223h76l-106 -500h-76l44 210q-17 -10 -49 -22q-32 -12 -80 -12q-27 0 -49 5.5q-22 5.5 -37.5 18q-15.5 12.5 -24.5 33.5q-9 21 -9 52q-3 36 40 215zM171 633q0 22 12.5 36.5q12.5 14.5 33.5 14.5q21 0 34 -14.5q13 -14.5 13 -36.5q0 -20 -13 -34.5q-13 -14.5 -34 -14.5q-21 0 -33.5 14.5q-12.5 14.5 -12.5 34.5zt0 0zM354 634q0 21 12.5 35.5q12.5 14.5 33.5 14.5q22 0 34.5 -14.5q12.5 -14.5 12.5 -35.5q0 -21 -12.5 -35.5q-12.5 -14.5 -34.5 -14.5q-21 0 -33.5 14.5t-12.5 35.5z" />
-<glyph unicode="&#1270;" horiz-adv-x="420" d="M189 700h355l-15 -74h-277l-117 -552h87l-43 -203h-54l12 129h-17l-80 0z" />
-<glyph unicode="&#1271;" horiz-adv-x="412" d="M269 7q-38 -17 -85 -19q-49 0 -79.5 13.5q-30.5 13.5 -48 33.5q-17.5 20 -23.5 43q-6 23 -6 42q0 48 21 78q21 30 53 50q32 20 69 33q37 13 69 26.5q32 13.5 53 31q21 17.5 21 46.5q0 32 -17.5 45q-17.5 13 -60.5 13q-38 0 -65.5 -8.5q-27.5 -8.5 -49.5 -19.5l-15 59q32 17 70 25q38 8 80 8q40 0 66.5 -9q26.5 -9 42.5 -24q16 -15 22.5 -35q6.5 -20 6.5 -42q0 -48 -21 -77.5q-21 -29.5 -53 -48q-32 -18.5 -69 -30.5q-37 -12 -69 -26q-32 -14 -53 -33.5q-21 -19.5 -21 -52.5q0 -35 22.5 -56q22.5 -21 59.5 -21q37 0 73.5 13.5q36.5 13.5 55.5 27.5l25 -44l-47 -176l-60 0z" />
-<glyph unicode="&#1272;" horiz-adv-x="733" d="M679 700h80l-148 -700h-80zM187 700h80l-57 -272q16 3 38.5 5.5q22.5 2.5 45.5 2.5q41 0 76.5 -11q35.5 -11 61.5 -33q26 -22 40.5 -54.5q14.5 -32.5 14.5 -75.5q0 -72 -25.5 -123.5q-25.5 -51.5 -68 -84q-42.5 -32.5 -98 -47.5q-55.5 -15 -114.5 -15q-24 0 -63 2q-45 4 -78 13zM203 64q39 0 75.5 12q36.5 12 64 35q27.5 23 44 58q16.5 35 16.5 82q0 58 -35 85.5q-35 27.5 -103 27.5q-17 0 -39 -3q-22 -3 -33 -6l-59 -285q14 -3 30 -4.5q16 -1.5 39 -1.5zt0 0zM343 794q0 20 14 33.5q14 13.5 37 13.5q23 0 36.5 -13.5q13.5 -13.5 13.5 -33.5q0 -20 -13.5 -33q-13.5 -13 -36.5 -13q-23 0 -37 13q-14 13 -14 33zt0 0zM526 794q0 20 13.5 33.5q13.5 13.5 36.5 13.5q23 0 37 -13.5q14 -13.5 14 -33.5q0 -20 -14 -33q-14 -13 -37 -13q-23 0 -36.5 13t-13.5 33z" />
-<glyph unicode="&#1273;" horiz-adv-x="639" d="M139 117q-1 -5 -1.5 -9q-0.5 -4 -0.5 -8q0 -19 10.5 -30.5q10.5 -11.5 34.5 -11.5q30 0 56.5 9.5q26.5 9.5 46.5 27q20 17.5 31.5 41.5q11.5 24 11.5 53q0 31 -17 48q-17 17 -67 17q-41 0 -79 -16zM179 303q17 5 45 9q28 4 51 4q73 0 103 -29.5q30 -29.5 30 -77.5q0 -52 -21.5 -92q-21.5 -40 -56 -67.5q-34.5 -27.5 -77.5 -41.5q-43 -14 -87 -14q-55 0 -80.5 23q-25.5 23 -25.5 62q0 19 4 35l87 386h75zM550 500h75l-106 -500h-75zM270 633q0 22 12.5 36.5q12.5 14.5 33.5 14.5q21 0 34 -14.5q13 -14.5 13 -36.5q0 -20 -13 -34.5q-13 -14.5 -34 -14.5q-21 0 -33.5 14.5q-12.5 14.5 -12.5 34.5zt0 0zM453 634q0 21 12.5 35.5q12.5 14.5 33.5 14.5q22 0 34.5 -14.5q12.5 -14.5 12.5 -35.5q0 -21 -12.5 -35.5q-12.5 -14.5 -34.5 -14.5q-21 0 -33.5 14.5t-12.5 35.5z" />
-<glyph unicode="&#1276;" horiz-adv-x="588" d="M435 -21q0 25 -10.5 63.5q-10.5 38.5 -22.5 69.5l-56 139l-13 60l-38 -60l-205 -251h-97l296 358l-129 342h88l85 -237l12 -58l34 57l192 238h95l-278 -338l85 -214q37 -92 37 -159q0 -56 -13 -94.5q-13 -38.5 -36 -61.5q-23 -23 -54 -33q-31 -10 -67 -10q-8 0 -17 0.5q-9 0.5 -18 1.5l16 70h11q58 0 80.5 30t22.5 87z" />
-<glyph unicode="&#1277;" horiz-adv-x="484" d="M361 126q20 -42 25.5 -74q5.5 -32 5.5 -70q0 -45 -15 -80q-15 -35 -40 -59q-25 -24 -58.5 -37q-33.5 -13 -69.5 -13q-6 0 -12.5 0.5q-6.5 0.5 -12.5 1.5l13 67q5 -1 8.5 -1q3.5 0 7.5 0q46 0 75 32.5q29 32.5 29 89.5q0 31 -5 55q-5 24 -19 52l-29 62l-21 56l-40 -56l-133 -152h-92l225 256l-107 244h87l60 -138l14 -57l41 57l121 138h92l-212 -240z" />
-<glyph unicode="&#1296;" horiz-adv-x="514" d="M368 331q-11 0 -21 -0.5q-10 -0.5 -21 -1.5q-32 -2 -65 -8q-33 -6 -60 -22.5q-27 -16.5 -44 -45.5q-17 -29 -17 -75q0 -60 38.5 -89q38.5 -29 106.5 -29q40 0 79.5 10.5q39.5 10.5 62.5 24.5l10 -63q-26 -17 -72.5 -30.5q-46.5 -13.5 -109.5 -13.5q-23 0 -57 7q-34 7 -65.5 26.5q-31.5 19.5 -54 54q-22.5 34.5 -22.5 89.5q0 50 16.5 88q16.5 38 43 64q26.5 26 60 40q33.5 14 67.5 17l0 4q-42 13 -67 47.5q-25 34.5 -25 85.5q0 52 23 90q23 38 59 62.5q36 24.5 81.5 36.5q45.5 12 90.5 12q26 0 51 -3.5q25 -3.5 47 -8.5q22 -5 38.5 -11.5q16.5 -6.5 25.5 -13.5l-37 -67q-23 12 -58 22q-35 10 -70 10q-32 0 -62 -7.5q-30 -7.5 -53.5 -23q-23.5 -15.5 -37.5 -39.5q-14 -24 -14 -57q0 -28 8.5 -47q8.5 -19 23.5 -32q15 -13 35 -20q20 -7 43 -11q15 -2 36.5 -2.5q21.5 -0.5 39.5 -0.5h14l-14 -69z" />
-<glyph unicode="&#1297;" horiz-adv-x="430" d="M256 225q-33 0 -58.5 -8.5q-25.5 -8.5 -43.5 -22.5q-18 -14 -27.5 -31q-9.5 -17 -9.5 -35q0 -35 21.5 -52q21.5 -17 79.5 -17q35 0 68 9.5q33 9.5 58 23.5l9 -63q-26 -14 -61.5 -26q-35.5 -12 -83.5 -12q-89 0 -130 32.5q-41 32.5 -41 96.5q0 45 30.5 84q30.5 39 99.5 60l0 4q-29 12 -45 35q-16 23 -16 60q0 28 12.5 54.5q12.5 26.5 36 46q23.5 19.5 58.5 31.5q35 12 80 12q54 0 89.5 -13q35.5 -13 60.5 -30l-35 -57q-15 11 -44 23.5q-29 12.5 -74 12.5q-22 0 -41.5 -6q-19.5 -6 -34.5 -17.5q-15 -11.5 -24 -27.5q-9 -16 -9 -36q0 -32 21 -50.5q21 -18.5 56 -18.5h66l-13 -62z" />
-<glyph unicode="&#1298;" horiz-adv-x="594" d="M473 0q-23 -119 -61.5 -165.5q-38.5 -46.5 -106.5 -46.5q-8 0 -16.5 0q-8.5 0 -17.5 2l15 70h5q26 0 42 7.5q16 7.5 27 24.5q11 17 18 43.5q7 26.5 15 64.5l133 626h-197q-47 -200 -88.5 -333.5q-41.5 -133.5 -89.5 -206.5q-32 -49 -66 -70q-34 -21 -69 -21q-17 0 -32 2.5q-15 2.5 -26 7.5l27 72q6 -2 12 -3q6 -1 12 -1q18 0 37 11.5q19 11.5 39 42.5q18 26 38.5 71q20.5 45 43.5 114q23 69 48.5 164.5q25.5 95.5 52.5 223.5l78 0l275 0z" />
-<glyph unicode="&#1299;" horiz-adv-x="490" d="M388 436h-134q-26 -107 -49 -189q-23 -82 -49.5 -137.5q-26.5 -55.5 -58.5 -84.5q-32 -29 -77 -29q-17 0 -30.5 2q-13.5 2 -22.5 7l23 64q12 -3 23 -3q22 0 41.5 16q19.5 16 40.5 63q21 47 45.5 132q24.5 85 57.5 223l70 0h208l-106 -500q-11 -55 -25.5 -94.5q-14.5 -39.5 -35.5 -65.5q-43 -52 -111 -52q-7 0 -14 0.5q-7 0.5 -15 1.5l15 70q27 0 44.5 8q17.5 8 29.5 25.5q12 17.5 20.5 44q8.5 26.5 16.5 62.5z" />
-<glyph unicode="&#1308;" horiz-adv-x="788" d="M214 233l-9 -116h1l39 118l235 465h43l37 -467l-9 -116h1l40 118l213 465h82l-336 -711h-44l-38 469l6 106h-4l-40 -107l-234 -468h-44l-39 711l82 0z" />
-<glyph unicode="&#1309;" horiz-adv-x="685" d="M427 500l47 -292l4 -96h1l39 98l147 290h76l-269 -511h-38l-53 330l-1 82h-2l-37 -83l-190 -329h-36l-58 511h76l31 -291l-2 -97h4l40 99l165 289z" />
-<glyph unicode="&#1316;" horiz-adv-x="657" d="M559 626h-306l-132 -626h-80l149 700h464l-133 -626h87l-43 -203h-54l12 129h-17l-80 0z" />
-<glyph unicode="&#1317;" horiz-adv-x="534" d="M320 0l67 316q4 18 7 35.5q3 17.5 3 31.5q0 29 -13.5 47q-13.5 18 -50.5 18q-26 0 -51 -12q-25 -12 -47 -30.5q-22 -18.5 -39.5 -41q-17.5 -22.5 -29.5 -44.5l-66 -320h-75l106 500h52l-4 -86h4q13 16 31 33.5q18 17.5 40.5 31.5q22.5 14 50.5 23.5q28 9.5 62 9.5q50 0 79 -24q29 -24 29 -84q0 -30 -9 -72l-58 -268h86l-52 -191h-61l34 127l-20 0z" />
-<glyph unicode="&#1318;" horiz-adv-x="609" d="M385 0l48 226q6 28 6 52q0 91 -95 91q-45 0 -86 -14q-41 -14 -70 -32l-68 -323h-80l149 700h80l-65 -302q28 15 69.5 30q41.5 15 96.5 15q30 0 57.5 -8q27.5 -8 48 -25q20.5 -17 33 -44.5q12.5 -27.5 12.5 -67.5q0 -29 -7 -61l-34 -163h86l-43 -203h-54l12 129l-16 0z" />
-<glyph unicode="&#1319;" horiz-adv-x="533" d="M401 285q6 30 10 53.5q4 23.5 4 41.5q0 37 -15 52.5q-15 15.5 -47 15.5q-26 0 -53 -13.5q-27 -13.5 -52 -34.5q-25 -21 -44.5 -47q-19.5 -26 -29.5 -50l-63 -303h-75l148 700h75l-62 -286h4q13 16 31.5 33q18.5 17 42.5 31.5q24 14.5 52 24q28 9.5 61 9.5q49 0 77 -23.5q28 -23.5 28 -85.5q0 -42 -13 -101l-51 -238h71l-52 -191h-61l34 127l-80 0z" />
-<glyph unicode="&#7728;" horiz-adv-x="576" d="M239 324h-51l-68 -324h-80l148 700h80l-70 -326l40 14l287 312h99l-286 -304l-46 -31l39 -40l175 -325h-91zM436 870h116l-5 -21l-175 -97l-73 0z" />
-<glyph unicode="&#7729;" horiz-adv-x="449" d="M212 225h-54l-47 -225h-75l148 700h75l-91 -426l43 11l180 215h92l-178 -203l-47 -33l38 -39l112 -225h-83zM392 720h84l-5 -21l-123 -128l-44 0z" />
-<glyph unicode="&#7742;" horiz-adv-x="754" d="M651 470l31 105h-4l-56 -96l-240 -316h-24l-115 316l-15 96h-4l-8 -104l-100 -471h-76l149 700h55l130 -358l15 -78h1l46 80l273 356h71l-149 -700h-80zM565 870h116l-5 -21l-175 -97l-73 0z" />
-<glyph unicode="&#7743;" horiz-adv-x="763" d="M305 0l60 283q8 35 12 62q4 27 4 47q0 27 -10 41.5q-10 14.5 -34 14.5q-25 0 -49 -13q-24 -13 -45 -32.5q-21 -19.5 -38.5 -41.5q-17.5 -22 -27.5 -40l-66 -321h-75l106 500h53l-6 -86h4q16 16 34.5 33.5q18.5 17.5 41 31.5q22.5 14 49 23.5q26.5 9.5 58.5 9.5q45 0 60.5 -28q15.5 -28 15.5 -78q15 19 35 38q20 19 43.5 34q23.5 15 49.5 24.5q26 9.5 52 9.5q46 0 70.5 -21.5q24.5 -21.5 24.5 -79.5q0 -42 -15 -111l-63 -300h-75l63 301q6 29 9.5 52q3.5 23 3.5 40q0 27 -11 41q-11 14 -37 14q-21 0 -44.5 -13.5q-23.5 -13.5 -45.5 -33.5q-22 -20 -39.5 -43q-17.5 -23 -27.5 -43l-65 -315zM519 720h84l-5 -21l-123 -128l-44 0z" />
-<glyph unicode="&#7764;" horiz-adv-x="532" d="M187 693q38 9 80 12q42 3 83 3q46 0 85.5 -10q39.5 -10 68.5 -32q29 -22 45.5 -56.5q16.5 -34.5 16.5 -82.5q0 -76 -27.5 -127q-27.5 -51 -72 -81.5q-44.5 -30.5 -100.5 -43.5q-56 -13 -113 -13q-5 0 -15.5 0q-10.5 0 -22.5 0.5q-12 0.5 -23 1.5q-11 1 -16 2l-56 -266h-80zM333 636q-23 0 -44.5 -1.5q-21.5 -1.5 -35.5 -4.5l-61 -291q4 -2 13.5 -2.5q9.5 -0.5 20 -1.5q10.5 -1 20.5 -1q10 0 15 0q43 0 83 9q40 9 70.5 31q30.5 22 49 57q18.5 35 18.5 88q0 36 -12 59q-12 23 -32.5 35.5q-20.5 12.5 -47.5 17.5q-27 5 -57 5zt0 0zM441 870h116l-5 -21l-175 -97l-73 0z" />
-<glyph unicode="&#7765;" horiz-adv-x="508" d="M144 500h52l-5 -86h4q14 18 31.5 35.5q17.5 17.5 38.5 31.5q21 14 46 22.5q25 8.5 54 8.5q24 0 45 -7.5q21 -7.5 37 -25q16 -17.5 25.5 -46.5q9.5 -29 9.5 -71q0 -88 -24 -157.5q-24 -69.5 -63 -117.5q-39 -48 -87.5 -73.5q-48.5 -25.5 -96.5 -25.5q-35 0 -61.5 6.5q-26.5 6.5 -35.5 13.5l-44 -208h-75zM337 448q-27 0 -51.5 -14q-24.5 -14 -45 -34.5q-20.5 -20.5 -36.5 -44q-16 -23.5 -26 -43.5l-49 -237q17 -13 35 -18q18 -5 39 -5q39 0 74.5 21.5q35.5 21.5 63.5 61.5q28 40 44.5 96q16.5 56 16.5 125q0 40 -16.5 66q-16.5 26 -48.5 26zt0 0zM397 720h84l-5 -21l-123 -128l-44 0z" />
-<glyph unicode="&#7838;" horiz-adv-x="635" d="M507 603q-14 17 -51.5 28q-37.5 11 -81.5 11q-42 0 -69 -16.5q-27 -16.5 -44.5 -43.5q-17.5 -27 -28 -62q-10.5 -35 -18.5 -73l-95 -447h-79l101 478q10 48 27 91q17 43 46 74.5q29 31.5 73 50q44 18.5 108 18.5q82 0 136 -25q54 -25 89 -58l-202 -198l-39 -29l-1 -2l34 7q43 0 75 -13q32 -13 53 -35q21 -22 31.5 -52.5q10.5 -30.5 10.5 -65.5q0 -62 -23.5 -109q-23.5 -47 -63 -79q-39.5 -32 -90 -48.5q-50.5 -16.5 -104.5 -16.5q-9 0 -25 1q-16 1 -33.5 3q-17.5 2 -34 5.5q-16.5 3.5 -26.5 9.5l29 73q8 -6 21.5 -9.5q13.5 -3.5 28.5 -6q15 -2.5 30 -3.5q15 -1 26 -1q33 0 65 9.5q32 9.5 57.5 30.5q25.5 21 41.5 53.5q16 32.5 16 78.5q0 54 -33.5 81.5q-33.5 27.5 -118.5 27.5h-61l12 59z" />
-<glyph unicode="&#8209;" horiz-adv-x="342" d="M79 322h230l-17 -68l-229 0z" />
-<glyph unicode="&#8211;" horiz-adv-x="627" d="M129 322h403l-16 -68l-403 0z" />
-<glyph unicode="&#8212;" horiz-adv-x="779" d="M129 322h555l-16 -68l-555 0z" />
-<glyph unicode="&#8216;" horiz-adv-x="186" d="M215 628q0 -29 -14.5 -43.5q-14.5 -14.5 -39.5 -14.5q-26 0 -39.5 18q-13.5 18 -13.5 41q0 34 13 60.5q13 26.5 31 45q18 18.5 37 29q19 10.5 31 14.5l15 -35q-23 -11 -40 -30.5q-17 -19.5 -21 -45.5q3 1 9 1q15 0 23.5 -12t8.5 -28z" />
-<glyph unicode="&#8217;" horiz-adv-x="186" d="M130 658q0 12 5.5 21.5q5.5 9.5 13.5 15.5q8 6 17.5 9.5q9.5 3.5 18.5 3.5q30 0 40.5 -15q10.5 -15 10.5 -43q0 -34 -13 -60q-13 -26 -31 -44.5q-18 -18.5 -37 -30q-19 -11.5 -31 -15.5l-16 34q23 12 40 31q17 19 22 46q-40 2 -40 47z" />
-<glyph unicode="&#8218;" horiz-adv-x="189" d="M23 48q0 12 5.5 21.5q5.5 9.5 13.5 15.5q8 6 17.5 9.5q9.5 3.5 18.5 3.5q30 0 40.5 -15q10.5 -15 10.5 -43q0 -34 -13 -60q-13 -26 -31 -44.5q-18 -18.5 -37 -30q-19 -11.5 -31 -15.5l-16 34q23 12 40 31q17 19 22 46q-40 2 -40 47z" />
-<glyph unicode="&#8220;" horiz-adv-x="325" d="M354 628q0 -29 -14.5 -43.5q-14.5 -14.5 -39.5 -14.5q-26 0 -39.5 18q-13.5 18 -13.5 41q0 34 13 60.5q13 26.5 31 45q18 18.5 37 29q19 10.5 31 14.5l15 -35q-23 -11 -40 -30.5q-17 -19.5 -21 -45.5q3 1 9 1q15 0 23.5 -12q8.5 -12 8.5 -28zt0 0zM215 628q0 -29 -14.5 -43.5q-14.5 -14.5 -39.5 -14.5q-26 0 -39.5 18q-13.5 18 -13.5 41q0 34 13 60.5q13 26.5 31 45q18 18.5 37 29q19 10.5 31 14.5l15 -35q-23 -11 -40 -30.5q-17 -19.5 -21 -45.5q3 1 9 1q15 0 23.5 -12t8.5 -28z" />
-<glyph unicode="&#8221;" horiz-adv-x="325" d="M268 657q0 12 5.5 21.5q5.5 9.5 13.5 15.5q8 6 17.5 9.5q9.5 3.5 18.5 3.5q30 0 40.5 -15q10.5 -15 10.5 -43q0 -34 -13 -60q-13 -26 -31 -44.5q-18 -18.5 -37 -30q-19 -11.5 -31 -15.5l-16 34q23 12 40 31q17 19 22 46q-40 2 -40 47zt0 0zM130 657q0 12 5.5 21.5q5.5 9.5 13.5 15.5q8 6 17.5 9.5q9.5 3.5 18.5 3.5q30 0 40.5 -15q10.5 -15 10.5 -43q0 -34 -13 -60q-13 -26 -31 -44.5q-18 -18.5 -37 -30q-19 -11.5 -31 -15.5l-16 34q23 12 40 31q17 19 22 46q-40 2 -40 47z" />
-<glyph unicode="&#8222;" horiz-adv-x="327" d="M161 48q0 12 5.5 21.5q5.5 9.5 13.5 15.5q8 6 17.5 9.5q9.5 3.5 18.5 3.5q30 0 40.5 -15q10.5 -15 10.5 -43q0 -34 -13 -60q-13 -26 -31 -44.5q-18 -18.5 -37 -30q-19 -11.5 -31 -15.5l-16 34q23 12 40 31q17 19 22 46q-40 2 -40 47zt0 0zM23 48q0 12 5.5 21.5q5.5 9.5 13.5 15.5q8 6 17.5 9.5q9.5 3.5 18.5 3.5q30 0 40.5 -15q10.5 -15 10.5 -43q0 -34 -13 -60q-13 -26 -31 -44.5q-18 -18.5 -37 -30q-19 -11.5 -31 -15.5l-16 34q23 12 40 31q17 19 22 46q-40 2 -40 47z" />
-<glyph unicode="&#8224;" horiz-adv-x="462" d="M107 502h124l39 -11v47l34 162h74l-35 -162l-19 -47l44 11h124l-16 -72h-126l-38 11l2 -42l-84 -399l-57 -200h-47l30 201l84 398l19 42l-44 -11l-124 0z" />
-<glyph unicode="&#8225;" horiz-adv-x="462" d="M241 400l18 41l-44 -11h-124l16 72h124l39 -11q0 1 -0.5 8.5q-0.5 7.5 -0.5 15.5v22l35 163h74l-35 -163l-19 -46l44 11h124l-16 -72h-126l-38 11l2 -41l-26 -124l-19 -41l42 11h126l-15 -72h-124l-40 11v-24q0 -10 1 -22l-29 -139l-57 -200h-47l30 201l30 138l19 46l-44 -11h-124l15 72h124l39 -11q0 2 -0.5 8q-0.5 6 -0.5 14l0 19z" />
-<glyph unicode="&#8226;" horiz-adv-x="452" d="M112 311q0 31 11 56.5q11 25.5 29.5 44q18.5 18.5 44 28.5q25.5 10 54.5 10q29 0 54.5 -9.5q25.5 -9.5 44 -27.5q18.5 -18 29.5 -43.5q11 -25.5 11 -58.5q0 -33 -11 -58.5q-11 -25.5 -29.5 -43.5q-18.5 -18 -44 -27.5q-25.5 -9.5 -54.5 -9.5q-29 0 -54.5 9.5q-25.5 9.5 -44 27.5q-18.5 18 -29.5 43.5t-11 58.5z" />
-<glyph unicode="&#8230;" horiz-adv-x="721" d="M510 46q0 27 16 42.5q16 15.5 42 15.5q26 0 42 -15.5q16 -15.5 16 -42.5q0 -26 -16 -42q-16 -16 -42 -16q-26 0 -42 16q-16 16 -16 42zt0 0zM268 46q0 27 16 42.5q16 15.5 42 15.5q26 0 42 -15.5q16 -15.5 16 -42.5q0 -26 -16 -42q-16 -16 -42 -16q-26 0 -42 16q-16 16 -16 42zt0 0zM27 46q0 27 16 42.5q16 15.5 42 15.5q26 0 42 -15.5q16 -15.5 16 -42.5q0 -26 -16 -42q-16 -16 -42 -16q-26 0 -42 16t-16 42z" />
-<glyph unicode="&#8240;" horiz-adv-x="1038" d="M59 490q0 58 17.5 100q17.5 42 44.5 69q27 27 60 40q33 13 65 13q57 0 86.5 -31q29.5 -31 29.5 -88q0 -54 -15 -95q-15 -41 -40.5 -69q-25.5 -28 -60 -42.5q-34.5 -14.5 -72.5 -14.5q-51 0 -83 31q-32 31 -32 87zt0 0zM128 498q0 -32 14.5 -50q14.5 -18 43.5 -18q21 0 40.5 11q19.5 11 34.5 31.5q15 20.5 23.5 50q8.5 29.5 8.5 66.5q0 35 -15.5 50q-15.5 15 -43.5 15q-21 0 -40.5 -12.5q-19.5 -12.5 -34 -33.5q-14.5 -21 -23 -49.5q-8.5 -28.5 -8.5 -60.5zt0 0zM348 118q0 58 17.5 100q17.5 42 44.5 69q27 27 60 40q33 13 65 13q57 0 86.5 -31q29.5 -31 29.5 -88q0 -54 -15 -95q-15 -41 -40.5 -69q-25.5 -28 -60 -42.5q-34.5 -14.5 -72.5 -14.5q-51 0 -83 31q-32 31 -32 87zt0 0zM417 126q0 -32 14.5 -50q14.5 -18 43.5 -18q21 0 40.5 11q19.5 11 34.5 31.5q15 20.5 23.5 50q8.5 29.5 8.5 66.5q0 35 -15.5 50q-15.5 15 -43.5 15q-21 0 -40.5 -12.5q-19.5 -12.5 -34 -33.5q-14.5 -21 -23 -49.5q-8.5 -28.5 -8.5 -60.5zt0 0zM687 118q0 58 17.5 100q17.5 42 44.5 69q27 27 60 40q33 13 65 13q57 0 86.5 -31q29.5 -31 29.5 -88q0 -54 -15 -95q-15 -41 -40.5 -69q-25.5 -28 -60 -42.5q-34.5 -14.5 -72.5 -14.5q-51 0 -83 31q-32 31 -32 87zt0 0zM756 126q0 -32 14.5 -50q14.5 -18 43.5 -18q21 0 40.5 11q19.5 11 34.5 31.5q15 20.5 23.5 50q8.5 29.5 8.5 66.5q0 35 -15.5 50q-15.5 15 -43.5 15q-21 0 -40.5 -12.5q-19.5 -12.5 -34 -33.5q-14.5 -21 -23 -49.5q-8.5 -28.5 -8.5 -60.5zt0 0zM582 713l50 -39l-513 -686l-50 39z" />
-<glyph unicode="&#8249;" horiz-adv-x="282" d="M38 259l200 230l44 -48l-123 -144l-56 -37l33 -39l68 -141l-55 -42z" />
-<glyph unicode="&#8250;" horiz-adv-x="282" d="M282 268l-200 -230l-45 43l124 145l57 41l-35 42l-68 142l57 38z" />
-<glyph unicode="&#8260;" horiz-adv-x="184" d="M336 713l52 -36l-487 -689l-52 36z" />
-<glyph unicode="&#8321;" horiz-adv-x="377" d="M27 -39h101l54 254l14 36l-31 -28l-81 -45l-21 46l170 103h39l-78 -366h90l-13 -61l-257 0z" />
-<glyph unicode="&#8322;" horiz-adv-x="377" d="M314 233q0 -32 -14.5 -64.5q-14.5 -32.5 -39 -65q-24.5 -32.5 -56.5 -63q-32 -30.5 -66 -58.5l-50 -31v-3l57 16h131l-14 -64h-275l7 33q18 13 43.5 32.5q25.5 19.5 53.5 43.5q28 24 55 51q27 27 49 54.5q22 27.5 35.5 53.5q13.5 26 13.5 49q0 46 -55 46q-26 0 -52 -9.5q-26 -9.5 -46 -21.5l-9 57q28 18 63 28q35 10 69 10q18 0 36 -4.5q18 -4.5 32 -15.5q14 -11 23 -29t9 -45z" />
-<glyph unicode="&#8323;" horiz-adv-x="377" d="M121 -47q56 0 82.5 27.5q26.5 27.5 26.5 65.5q0 27 -16 40.5q-16 13.5 -64 13.5h-52l4 23l116 117l38 26l-48 -6h-121l13 60h243l-7 -33l-124 -124l-26 -18l-1 -2l22 3q38 0 64.5 -24.5q26.5 -24.5 26.5 -66.5q0 -32 -10 -61.5q-10 -29.5 -32 -52q-22 -22.5 -57.5 -35.5q-35.5 -13 -87.5 -13q-34 0 -57.5 6q-23.5 6 -40.5 13l26 60q14 -8 35 -13.5t47 -5.5z" />
-<glyph unicode="&#8324;" horiz-adv-x="377" d="M325 -4h-78l-21 -96h-64l21 96h-193l7 37l278 302h43l-59 -280h79zM222 183l17 49h-2l-31 -46l-96 -105l-38 -31l49 5l74 0z" />
-<glyph unicode="&#8364;" horiz-adv-x="520" d="M67 454h74q24 67 61.5 115.5q37.5 48.5 82 80q44.5 31.5 92.5 47q48 15.5 93 15.5q48 0 81.5 -8q33.5 -8 56.5 -21l-35 -61q-37 22 -118 22q-27 0 -59.5 -11q-32.5 -11 -64.5 -34q-32 -23 -61 -59q-29 -36 -50 -86l276 0l-31 -66h-268q-8 -34 -12 -70l245 0l-31 -66h-219v-6q0 -41 9 -75.5q9 -34.5 29 -60q20 -25.5 53 -40q33 -14.5 81 -14.5q32 0 63.5 9q31.5 9 56.5 23l14 -60q-17 -12 -37.5 -19.5q-20.5 -7.5 -42.5 -12q-22 -4.5 -43 -6.5q-21 -2 -39 -2q-54 0 -95 18.5q-41 18.5 -68.5 51.5q-27.5 33 -41.5 78q-14 45 -14 97v19h-99l32 66h72q5 38 12 70l-87 0z" />
-<glyph unicode="&#8372;" horiz-adv-x="520" d="M472 317l-14 -62h-218q-12 -11 -26.5 -26.5q-14.5 -15.5 -26 -32.5q-11.5 -17 -19 -35.5q-7.5 -18.5 -7.5 -36.5q0 -12 3.5 -24.5q3.5 -12.5 14 -22q10.5 -9.5 29.5 -15.5q19 -6 50 -6q45 0 76 10q31 10 57 22l9 -64q-24 -15 -64 -25.5q-40 -10.5 -101 -10.5q-78 0 -116 33.5q-38 33.5 -38 88.5q0 23 8.5 45.5q8.5 22.5 21 41.5q12.5 19 25.5 34.5q13 15.5 22 23.5l-88 0l14 62zM98 388l15 62h223q30 27 53 62q23 35 23 75q0 26 -18.5 41.5q-18.5 15.5 -63.5 15.5q-38 0 -66.5 -9q-28.5 -9 -52.5 -20l-9 65q29 14 61.5 23q32.5 9 80.5 9q78 0 113 -27.5q35 -27.5 35 -78.5q0 -27 -7 -50q-7 -23 -17.5 -42q-10.5 -19 -24 -35q-13.5 -16 -26.5 -29l84 0l-14 -62z" />
-<glyph unicode="&#8374;" horiz-adv-x="520" d="M72 336h68l76 357q40 9 81 12q41 3 84 3q40 0 75 -10.5q35 -10.5 60.5 -31.5q25.5 -21 40 -52.5q14.5 -31.5 14.5 -72.5q0 -59 -16 -103.5q-16 -44.5 -44.5 -76q-28.5 -31.5 -68 -51q-39.5 -19.5 -86.5 -29.5q-20 -4 -43 -5q-23 -1 -52 -3l-54 0l-15 -71h162l-13 -62h-163l-29 -140h-80l29 140h-70l14 62h69l16 72h-69zM369 638q-26 0 -50.5 -1.5q-24.5 -1.5 -35.5 -4.5l-62 -290h74q30 0 64.5 8q34.5 8 63.5 27q29 19 48.5 51.5q19.5 32.5 19.5 81.5q0 63 -28.5 95.5t-93.5 32.5z" />
-<glyph unicode="&#8375;" horiz-adv-x="520" d="M72 336h68l76 357q40 9 81 12q41 3 84 3q40 0 75 -10.5q35 -10.5 60.5 -31.5q25.5 -21 40 -52.5q14.5 -31.5 14.5 -72.5q0 -59 -16 -103.5q-16 -44.5 -44.5 -76q-28.5 -31.5 -68 -51q-39.5 -19.5 -86.5 -29.5q-20 -4 -43 -5q-23 -1 -52 -3l-54 0l-15 -71h162l-13 -62h-163l-29 -140h-80l29 140h-70l14 62h69l16 72h-69zM369 638q-26 0 -50.5 -1.5q-24.5 -1.5 -35.5 -4.5l-62 -290h74q30 0 64.5 8q34.5 8 63.5 27q29 19 48.5 51.5q19.5 32.5 19.5 81.5q0 63 -28.5 95.5t-93.5 32.5z" />
-<glyph unicode="&#8377;" horiz-adv-x="520" d="M72 336h68l76 357q40 9 81 12q41 3 84 3q40 0 75 -10.5q35 -10.5 60.5 -31.5q25.5 -21 40 -52.5q14.5 -31.5 14.5 -72.5q0 -59 -16 -103.5q-16 -44.5 -44.5 -76q-28.5 -31.5 -68 -51q-39.5 -19.5 -86.5 -29.5q-20 -4 -43 -5q-23 -1 -52 -3l-54 0l-15 -71h162l-13 -62h-163l-29 -140h-80l29 140h-70l14 62h69l16 72h-69zM369 638q-26 0 -50.5 -1.5q-24.5 -1.5 -35.5 -4.5l-62 -290h74q30 0 64.5 8q34.5 8 63.5 27q29 19 48.5 51.5q19.5 32.5 19.5 81.5q0 63 -28.5 95.5t-93.5 32.5z" />
-<glyph unicode="&#8378;" horiz-adv-x="520" d="M72 336h68l76 357q40 9 81 12q41 3 84 3q40 0 75 -10.5q35 -10.5 60.5 -31.5q25.5 -21 40 -52.5q14.5 -31.5 14.5 -72.5q0 -59 -16 -103.5q-16 -44.5 -44.5 -76q-28.5 -31.5 -68 -51q-39.5 -19.5 -86.5 -29.5q-20 -4 -43 -5q-23 -1 -52 -3l-54 0l-15 -71h162l-13 -62h-163l-29 -140h-80l29 140h-70l14 62h69l16 72h-69zM369 638q-26 0 -50.5 -1.5q-24.5 -1.5 -35.5 -4.5l-62 -290h74q30 0 64.5 8q34.5 8 63.5 27q29 19 48.5 51.5q19.5 32.5 19.5 81.5q0 63 -28.5 95.5t-93.5 32.5z" />
-<glyph unicode="&#8379;" horiz-adv-x="520" d="M72 336h68l76 357q40 9 81 12q41 3 84 3q40 0 75 -10.5q35 -10.5 60.5 -31.5q25.5 -21 40 -52.5q14.5 -31.5 14.5 -72.5q0 -59 -16 -103.5q-16 -44.5 -44.5 -76q-28.5 -31.5 -68 -51q-39.5 -19.5 -86.5 -29.5q-20 -4 -43 -5q-23 -1 -52 -3l-54 0l-15 -71h162l-13 -62h-163l-29 -140h-80l29 140h-70l14 62h69l16 72h-69zM369 638q-26 0 -50.5 -1.5q-24.5 -1.5 -35.5 -4.5l-62 -290h74q30 0 64.5 8q34.5 8 63.5 27q29 19 48.5 51.5q19.5 32.5 19.5 81.5q0 63 -28.5 95.5t-93.5 32.5z" />
-<glyph unicode="&#8380;" horiz-adv-x="520" d="M72 336h68l76 357q40 9 81 12q41 3 84 3q40 0 75 -10.5q35 -10.5 60.5 -31.5q25.5 -21 40 -52.5q14.5 -31.5 14.5 -72.5q0 -59 -16 -103.5q-16 -44.5 -44.5 -76q-28.5 -31.5 -68 -51q-39.5 -19.5 -86.5 -29.5q-20 -4 -43 -5q-23 -1 -52 -3l-54 0l-15 -71h162l-13 -62h-163l-29 -140h-80l29 140h-70l14 62h69l16 72h-69zM369 638q-26 0 -50.5 -1.5q-24.5 -1.5 -35.5 -4.5l-62 -290h74q30 0 64.5 8q34.5 8 63.5 27q29 19 48.5 51.5q19.5 32.5 19.5 81.5q0 63 -28.5 95.5t-93.5 32.5z" />
-<glyph unicode="&#8381;" horiz-adv-x="520" d="M72 336h68l76 357q40 9 81 12q41 3 84 3q40 0 75 -10.5q35 -10.5 60.5 -31.5q25.5 -21 40 -52.5q14.5 -31.5 14.5 -72.5q0 -59 -16 -103.5q-16 -44.5 -44.5 -76q-28.5 -31.5 -68 -51q-39.5 -19.5 -86.5 -29.5q-20 -4 -43 -5q-23 -1 -52 -3l-54 0l-15 -71h162l-13 -62h-163l-29 -140h-80l29 140h-70l14 62h69l16 72h-69zM369 638q-26 0 -50.5 -1.5q-24.5 -1.5 -35.5 -4.5l-62 -290h74q30 0 64.5 8q34.5 8 63.5 27q29 19 48.5 51.5q19.5 32.5 19.5 81.5q0 63 -28.5 95.5t-93.5 32.5z" />
-<glyph unicode="&#8382;" horiz-adv-x="520" d="M72 336h68l76 357q40 9 81 12q41 3 84 3q40 0 75 -10.5q35 -10.5 60.5 -31.5q25.5 -21 40 -52.5q14.5 -31.5 14.5 -72.5q0 -59 -16 -103.5q-16 -44.5 -44.5 -76q-28.5 -31.5 -68 -51q-39.5 -19.5 -86.5 -29.5q-20 -4 -43 -5q-23 -1 -52 -3l-54 0l-15 -71h162l-13 -62h-163l-29 -140h-80l29 140h-70l14 62h69l16 72h-69zM369 638q-26 0 -50.5 -1.5q-24.5 -1.5 -35.5 -4.5l-62 -290h74q30 0 64.5 8q34.5 8 63.5 27q29 19 48.5 51.5q19.5 32.5 19.5 81.5q0 63 -28.5 95.5t-93.5 32.5z" />
-<glyph unicode="&#8383;" horiz-adv-x="520" d="M72 336h68l76 357q40 9 81 12q41 3 84 3q40 0 75 -10.5q35 -10.5 60.5 -31.5q25.5 -21 40 -52.5q14.5 -31.5 14.5 -72.5q0 -59 -16 -103.5q-16 -44.5 -44.5 -76q-28.5 -31.5 -68 -51q-39.5 -19.5 -86.5 -29.5q-20 -4 -43 -5q-23 -1 -52 -3l-54 0l-15 -71h162l-13 -62h-163l-29 -140h-80l29 140h-70l14 62h69l16 72h-69zM369 638q-26 0 -50.5 -1.5q-24.5 -1.5 -35.5 -4.5l-62 -290h74q30 0 64.5 8q34.5 8 63.5 27q29 19 48.5 51.5q19.5 32.5 19.5 81.5q0 63 -28.5 95.5t-93.5 32.5z" />
-<glyph unicode="&#8384;" horiz-adv-x="520" d="M72 336h68l76 357q40 9 81 12q41 3 84 3q40 0 75 -10.5q35 -10.5 60.5 -31.5q25.5 -21 40 -52.5q14.5 -31.5 14.5 -72.5q0 -59 -16 -103.5q-16 -44.5 -44.5 -76q-28.5 -31.5 -68 -51q-39.5 -19.5 -86.5 -29.5q-20 -4 -43 -5q-23 -1 -52 -3l-54 0l-15 -71h162l-13 -62h-163l-29 -140h-80l29 140h-70l14 62h69l16 72h-69zM369 638q-26 0 -50.5 -1.5q-24.5 -1.5 -35.5 -4.5l-62 -290h74q30 0 64.5 8q34.5 8 63.5 27q29 19 48.5 51.5q19.5 32.5 19.5 81.5q0 63 -28.5 95.5t-93.5 32.5z" />
-<glyph unicode="&#8385;" horiz-adv-x="520" d="M72 336h68l76 357q40 9 81 12q41 3 84 3q40 0 75 -10.5q35 -10.5 60.5 -31.5q25.5 -21 40 -52.5q14.5 -31.5 14.5 -72.5q0 -59 -16 -103.5q-16 -44.5 -44.5 -76q-28.5 -31.5 -68 -51q-39.5 -19.5 -86.5 -29.5q-20 -4 -43 -5q-23 -1 -52 -3l-54 0l-15 -71h162l-13 -62h-163l-29 -140h-80l29 140h-70l14 62h69l16 72h-69zM369 638q-26 0 -50.5 -1.5q-24.5 -1.5 -35.5 -4.5l-62 -290h74q30 0 64.5 8q34.5 8 63.5 27q29 19 48.5 51.5q19.5 32.5 19.5 81.5q0 63 -28.5 95.5t-93.5 32.5z" />
-<glyph unicode="&#8386;" horiz-adv-x="520" d="M72 336h68l76 357q40 9 81 12q41 3 84 3q40 0 75 -10.5q35 -10.5 60.5 -31.5q25.5 -21 40 -52.5q14.5 -31.5 14.5 -72.5q0 -59 -16 -103.5q-16 -44.5 -44.5 -76q-28.5 -31.5 -68 -51q-39.5 -19.5 -86.5 -29.5q-20 -4 -43 -5q-23 -1 -52 -3l-54 0l-15 -71h162l-13 -62h-163l-29 -140h-80l29 140h-70l14 62h69l16 72h-69zM369 638q-26 0 -50.5 -1.5q-24.5 -1.5 -35.5 -4.5l-62 -290h74q30 0 64.5 8q34.5 8 63.5 27q29 19 48.5 51.5q19.5 32.5 19.5 81.5q0 63 -28.5 95.5t-93.5 32.5z" />
-<glyph unicode="&#8387;" horiz-adv-x="520" d="M72 336h68l76 357q40 9 81 12q41 3 84 3q40 0 75 -10.5q35 -10.5 60.5 -31.5q25.5 -21 40 -52.5q14.5 -31.5 14.5 -72.5q0 -59 -16 -103.5q-16 -44.5 -44.5 -76q-28.5 -31.5 -68 -51q-39.5 -19.5 -86.5 -29.5q-20 -4 -43 -5q-23 -1 -52 -3l-54 0l-15 -71h162l-13 -62h-163l-29 -140h-80l29 140h-70l14 62h69l16 72h-69zM369 638q-26 0 -50.5 -1.5q-24.5 -1.5 -35.5 -4.5l-62 -290h74q30 0 64.5 8q34.5 8 63.5 27q29 19 48.5 51.5q19.5 32.5 19.5 81.5q0 63 -28.5 95.5t-93.5 32.5z" />
-<glyph unicode="&#8388;" horiz-adv-x="520" d="M72 336h68l76 357q40 9 81 12q41 3 84 3q40 0 75 -10.5q35 -10.5 60.5 -31.5q25.5 -21 40 -52.5q14.5 -31.5 14.5 -72.5q0 -59 -16 -103.5q-16 -44.5 -44.5 -76q-28.5 -31.5 -68 -51q-39.5 -19.5 -86.5 -29.5q-20 -4 -43 -5q-23 -1 -52 -3l-54 0l-15 -71h162l-13 -62h-163l-29 -140h-80l29 140h-70l14 62h69l16 72h-69zM369 638q-26 0 -50.5 -1.5q-24.5 -1.5 -35.5 -4.5l-62 -290h74q30 0 64.5 8q34.5 8 63.5 27q29 19 48.5 51.5q19.5 32.5 19.5 81.5q0 63 -28.5 95.5t-93.5 32.5z" />
-<glyph unicode="&#8389;" horiz-adv-x="520" d="M72 336h68l76 357q40 9 81 12q41 3 84 3q40 0 75 -10.5q35 -10.5 60.5 -31.5q25.5 -21 40 -52.5q14.5 -31.5 14.5 -72.5q0 -59 -16 -103.5q-16 -44.5 -44.5 -76q-28.5 -31.5 -68 -51q-39.5 -19.5 -86.5 -29.5q-20 -4 -43 -5q-23 -1 -52 -3l-54 0l-15 -71h162l-13 -62h-163l-29 -140h-80l29 140h-70l14 62h69l16 72h-69zM369 638q-26 0 -50.5 -1.5q-24.5 -1.5 -35.5 -4.5l-62 -290h74q30 0 64.5 8q34.5 8 63.5 27q29 19 48.5 51.5q19.5 32.5 19.5 81.5q0 63 -28.5 95.5t-93.5 32.5z" />
-<glyph unicode="&#8390;" horiz-adv-x="520" d="M72 336h68l76 357q40 9 81 12q41 3 84 3q40 0 75 -10.5q35 -10.5 60.5 -31.5q25.5 -21 40 -52.5q14.5 -31.5 14.5 -72.5q0 -59 -16 -103.5q-16 -44.5 -44.5 -76q-28.5 -31.5 -68 -51q-39.5 -19.5 -86.5 -29.5q-20 -4 -43 -5q-23 -1 -52 -3l-54 0l-15 -71h162l-13 -62h-163l-29 -140h-80l29 140h-70l14 62h69l16 72h-69zM369 638q-26 0 -50.5 -1.5q-24.5 -1.5 -35.5 -4.5l-62 -290h74q30 0 64.5 8q34.5 8 63.5 27q29 19 48.5 51.5q19.5 32.5 19.5 81.5q0 63 -28.5 95.5t-93.5 32.5z" />
-<glyph unicode="&#8391;" horiz-adv-x="520" d="M72 336h68l76 357q40 9 81 12q41 3 84 3q40 0 75 -10.5q35 -10.5 60.5 -31.5q25.5 -21 40 -52.5q14.5 -31.5 14.5 -72.5q0 -59 -16 -103.5q-16 -44.5 -44.5 -76q-28.5 -31.5 -68 -51q-39.5 -19.5 -86.5 -29.5q-20 -4 -43 -5q-23 -1 -52 -3l-54 0l-15 -71h162l-13 -62h-163l-29 -140h-80l29 140h-70l14 62h69l16 72h-69zM369 638q-26 0 -50.5 -1.5q-24.5 -1.5 -35.5 -4.5l-62 -290h74q30 0 64.5 8q34.5 8 63.5 27q29 19 48.5 51.5q19.5 32.5 19.5 81.5q0 63 -28.5 95.5t-93.5 32.5z" />
-<glyph unicode="&#8392;" horiz-adv-x="520" d="M72 336h68l76 357q40 9 81 12q41 3 84 3q40 0 75 -10.5q35 -10.5 60.5 -31.5q25.5 -21 40 -52.5q14.5 -31.5 14.5 -72.5q0 -59 -16 -103.5q-16 -44.5 -44.5 -76q-28.5 -31.5 -68 -51q-39.5 -19.5 -86.5 -29.5q-20 -4 -43 -5q-23 -1 -52 -3l-54 0l-15 -71h162l-13 -62h-163l-29 -140h-80l29 140h-70l14 62h69l16 72h-69zM369 638q-26 0 -50.5 -1.5q-24.5 -1.5 -35.5 -4.5l-62 -290h74q30 0 64.5 8q34.5 8 63.5 27q29 19 48.5 51.5q19.5 32.5 19.5 81.5q0 63 -28.5 95.5t-93.5 32.5z" />
-<glyph unicode="&#8393;" horiz-adv-x="520" d="M72 336h68l76 357q40 9 81 12q41 3 84 3q40 0 75 -10.5q35 -10.5 60.5 -31.5q25.5 -21 40 -52.5q14.5 -31.5 14.5 -72.5q0 -59 -16 -103.5q-16 -44.5 -44.5 -76q-28.5 -31.5 -68 -51q-39.5 -19.5 -86.5 -29.5q-20 -4 -43 -5q-23 -1 -52 -3l-54 0l-15 -71h162l-13 -62h-163l-29 -140h-80l29 140h-70l14 62h69l16 72h-69zM369 638q-26 0 -50.5 -1.5q-24.5 -1.5 -35.5 -4.5l-62 -290h74q30 0 64.5 8q34.5 8 63.5 27q29 19 48.5 51.5q19.5 32.5 19.5 81.5q0 63 -28.5 95.5t-93.5 32.5z" />
-<glyph unicode="&#8394;" horiz-adv-x="520" d="M72 336h68l76 357q40 9 81 12q41 3 84 3q40 0 75 -10.5q35 -10.5 60.5 -31.5q25.5 -21 40 -52.5q14.5 -31.5 14.5 -72.5q0 -59 -16 -103.5q-16 -44.5 -44.5 -76q-28.5 -31.5 -68 -51q-39.5 -19.5 -86.5 -29.5q-20 -4 -43 -5q-23 -1 -52 -3l-54 0l-15 -71h162l-13 -62h-163l-29 -140h-80l29 140h-70l14 62h69l16 72h-69zM369 638q-26 0 -50.5 -1.5q-24.5 -1.5 -35.5 -4.5l-62 -290h74q30 0 64.5 8q34.5 8 63.5 27q29 19 48.5 51.5q19.5 32.5 19.5 81.5q0 63 -28.5 95.5t-93.5 32.5z" />
-<glyph unicode="&#8395;" horiz-adv-x="520" d="M72 336h68l76 357q40 9 81 12q41 3 84 3q40 0 75 -10.5q35 -10.5 60.5 -31.5q25.5 -21 40 -52.5q14.5 -31.5 14.5 -72.5q0 -59 -16 -103.5q-16 -44.5 -44.5 -76q-28.5 -31.5 -68 -51q-39.5 -19.5 -86.5 -29.5q-20 -4 -43 -5q-23 -1 -52 -3l-54 0l-15 -71h162l-13 -62h-163l-29 -140h-80l29 140h-70l14 62h69l16 72h-69zM369 638q-26 0 -50.5 -1.5q-24.5 -1.5 -35.5 -4.5l-62 -290h74q30 0 64.5 8q34.5 8 63.5 27q29 19 48.5 51.5q19.5 32.5 19.5 81.5q0 63 -28.5 95.5t-93.5 32.5z" />
-<glyph unicode="&#8396;" horiz-adv-x="520" d="M72 336h68l76 357q40 9 81 12q41 3 84 3q40 0 75 -10.5q35 -10.5 60.5 -31.5q25.5 -21 40 -52.5q14.5 -31.5 14.5 -72.5q0 -59 -16 -103.5q-16 -44.5 -44.5 -76q-28.5 -31.5 -68 -51q-39.5 -19.5 -86.5 -29.5q-20 -4 -43 -5q-23 -1 -52 -3l-54 0l-15 -71h162l-13 -62h-163l-29 -140h-80l29 140h-70l14 62h69l16 72h-69zM369 638q-26 0 -50.5 -1.5q-24.5 -1.5 -35.5 -4.5l-62 -290h74q30 0 64.5 8q34.5 8 63.5 27q29 19 48.5 51.5q19.5 32.5 19.5 81.5q0 63 -28.5 95.5t-93.5 32.5z" />
-<glyph unicode="&#8397;" horiz-adv-x="520" d="M72 336h68l76 357q40 9 81 12q41 3 84 3q40 0 75 -10.5q35 -10.5 60.5 -31.5q25.5 -21 40 -52.5q14.5 -31.5 14.5 -72.5q0 -59 -16 -103.5q-16 -44.5 -44.5 -76q-28.5 -31.5 -68 -51q-39.5 -19.5 -86.5 -29.5q-20 -4 -43 -5q-23 -1 -52 -3l-54 0l-15 -71h162l-13 -62h-163l-29 -140h-80l29 140h-70l14 62h69l16 72h-69zM369 638q-26 0 -50.5 -1.5q-24.5 -1.5 -35.5 -4.5l-62 -290h74q30 0 64.5 8q34.5 8 63.5 27q29 19 48.5 51.5q19.5 32.5 19.5 81.5q0 63 -28.5 95.5t-93.5 32.5z" />
-<glyph unicode="&#8398;" horiz-adv-x="520" d="M72 336h68l76 357q40 9 81 12q41 3 84 3q40 0 75 -10.5q35 -10.5 60.5 -31.5q25.5 -21 40 -52.5q14.5 -31.5 14.5 -72.5q0 -59 -16 -103.5q-16 -44.5 -44.5 -76q-28.5 -31.5 -68 -51q-39.5 -19.5 -86.5 -29.5q-20 -4 -43 -5q-23 -1 -52 -3l-54 0l-15 -71h162l-13 -62h-163l-29 -140h-80l29 140h-70l14 62h69l16 72h-69zM369 638q-26 0 -50.5 -1.5q-24.5 -1.5 -35.5 -4.5l-62 -290h74q30 0 64.5 8q34.5 8 63.5 27q29 19 48.5 51.5q19.5 32.5 19.5 81.5q0 63 -28.5 95.5t-93.5 32.5z" />
-<glyph unicode="&#8399;" horiz-adv-x="520" d="M72 336h68l76 357q40 9 81 12q41 3 84 3q40 0 75 -10.5q35 -10.5 60.5 -31.5q25.5 -21 40 -52.5q14.5 -31.5 14.5 -72.5q0 -59 -16 -103.5q-16 -44.5 -44.5 -76q-28.5 -31.5 -68 -51q-39.5 -19.5 -86.5 -29.5q-20 -4 -43 -5q-23 -1 -52 -3l-54 0l-15 -71h162l-13 -62h-163l-29 -140h-80l29 140h-70l14 62h69l16 72h-69zM369 638q-26 0 -50.5 -1.5q-24.5 -1.5 -35.5 -4.5l-62 -290h74q30 0 64.5 8q34.5 8 63.5 27q29 19 48.5 51.5q19.5 32.5 19.5 81.5q0 63 -28.5 95.5t-93.5 32.5z" />
-<glyph unicode="&#8467;" horiz-adv-x="500" d="M426 30q-22 -14 -57.5 -28q-35.5 -14 -70.5 -14q-63 0 -91.5 30.5q-28.5 30.5 -28.5 95.5v104l-49 -44l-35 44l84 74v254q0 44 10 75.5q10 31.5 27.5 51.5q17.5 20 41 29.5q23.5 9.5 50.5 9.5q48 0 79 -29.5q31 -29.5 31 -89.5q0 -74 -40 -157q-40 -83 -131 -171l0 -140q0 -44 17 -60.5q17 -16.5 41 -16.5q25 0 55 10.5q30 10.5 50 21.5zM353 588q0 34 -14 49q-14 15 -32 15q-12 0 -23 -3.5q-11 -3.5 -19.5 -14q-8.5 -10.5 -13.5 -29q-5 -18.5 -5 -48.5v-212q56 65 81.5 125.5t25.5 117.5z" />
-<glyph unicode="&#8470;" horiz-adv-x="977" d="M644 310h265l-16 -68h-265zM244 456l-31 103h-2l-11 -101l-97 -458h-76l151 711h43l201 -466l29 -97h4l10 96l96 456h76l-151 -711h-42zM676 490q0 58 17.5 100q17.5 42 44.5 69q27 27 60 40q33 13 65 13q57 0 86.5 -31q29.5 -31 29.5 -88q0 -54 -15 -95q-15 -41 -40.5 -69q-25.5 -28 -60 -42.5q-34.5 -14.5 -72.5 -14.5q-51 0 -83 31q-32 31 -32 87zt0 0zM745 498q0 -32 14.5 -50q14.5 -18 43.5 -18q21 0 40.5 11q19.5 11 34.5 31.5q15 20.5 23.5 50q8.5 29.5 8.5 66.5q0 35 -15.5 50q-15.5 15 -43.5 15q-21 0 -40.5 -12.5q-19.5 -12.5 -34 -33.5q-14.5 -21 -23 -49.5t-8.5 -60.5z" />
-<glyph unicode="&#8482;" horiz-adv-x="886" d="M440 632h-136v-292h-78v292h-136v68h350zM822 507l10 103h-4l-39 -85l-87 -140h-33l-89 139l-36 86h-4l13 -102v-168h-73v360h78l105 -168l28 -58h1l30 60l97 166h79v-360l-76 0z" />
-<glyph unicode="&#8494;" horiz-adv-x="600" d="M167 259v-181q62 -59 145 -59q124 0 193 120l35 -21q-43 -66 -99 -100.5q-56 -34.5 -129 -34.5q-59 0 -107 21.5q-48 21.5 -81.5 58.5q-33.5 37 -51.5 87.5q-18 50.5 -18 108.5q0 59 18.5 109.5q18.5 50.5 52.5 87.5q34 37 81.5 58q47.5 21 105.5 21q62 0 109.5 -22q47.5 -22 80.5 -59.5q33 -37.5 50 -87.5q17 -50 19 -107zM458 295v145q-63 60 -147 60q-86 0 -144 -60l0 -145z" />
-<glyph unicode="&#8706;" horiz-adv-x="507" d="M296 510q42 0 61.5 -7.5q19.5 -7.5 36.5 -21.5l5 0q-3 46 -22.5 77.5q-19.5 31.5 -48 51.5q-28.5 20 -63.5 29q-35 9 -69 9q-5 0 -10.5 0q-5.5 0 -10.5 -1l15 65h7q67 0 120 -15q53 -15 90 -50q37 -35 56.5 -93q19.5 -58 19.5 -144q0 -108 -19.5 -187.5q-19.5 -79.5 -54 -131.5q-34.5 -52 -83 -77.5q-48.5 -25.5 -105.5 -25.5q-96 0 -144 50.5q-48 50.5 -48 143.5q0 60 17 118.5q17 58.5 50.5 105q33.5 46.5 83.5 75.5q50 29 116 29zt0 0zM290 441q-36 0 -68.5 -20q-32.5 -20 -56.5 -55q-24 -35 -38 -83.5q-14 -48.5 -14 -105.5q0 -23 6 -45q6 -22 19.5 -38.5q13.5 -16.5 35.5 -26.5q22 -10 54 -10q50 0 83 31q33 31 52.5 80q19.5 49 27.5 109q8 60 8 117q-17 21 -42 34t-67 13z" />
-<glyph unicode="&#8719;" horiz-adv-x="679" d="M536 626h-341v-826h-84v900h509v-900l-84 0z" />
-<glyph unicode="&#8721;" horiz-adv-x="506" d="M186 -89l-40 -37h383v-74h-454v74l224 346l34 30l-35 32l-223 344v74h454v-74h-379l43 -37l215 -333z" />
-<glyph unicode="&#8722;" horiz-adv-x="480" d="M55 374h424v-72l-424 0z" />
-<glyph unicode="&#8725;" horiz-adv-x="480" d="M486 713l52 -36l-487 -689l-52 36z" />
-<glyph unicode="&#8730;" horiz-adv-x="480" d="M200 446l92 -227l23 -114h2l19 116l148 479h75l-226 -711h-31l-157 385h-121l0 72z" />
-<glyph unicode="&#8734;" horiz-adv-x="858" d="M455 285q-36 -58 -88 -90q-52 -32 -110 -32q-35 0 -65.5 12.5q-30.5 12.5 -54 36.5q-23.5 24 -37 58q-13.5 34 -13.5 76q0 45 13 80.5q13 35.5 36.5 60.5q23.5 25 56 38.5q32.5 13.5 71.5 13.5q70 0 120.5 -31.5q50.5 -31.5 80.5 -80.5q43 60 96 86q53 26 111 26q35 0 64.5 -12.5q29.5 -12.5 51 -36.5q21.5 -24 33.5 -57.5q12 -33.5 12 -75.5q0 -45 -13 -81q-13 -36 -37 -61q-24 -25 -56.5 -38.5q-32.5 -13.5 -71.5 -13.5q-35 0 -65 10q-30 10 -55 26.5q-25 16.5 -45 39q-20 22.5 -35 46.5zt0 0zM657 237q41 0 69.5 32q28.5 32 28.5 86q0 21 -6 41q-6 20 -18.5 35.5q-12.5 15.5 -31.5 24.5q-19 9 -44 9q-41 0 -83.5 -23q-42.5 -23 -77.5 -71q12 -27 29 -51.5q17 -24.5 38 -42.5q21 -18 45 -29q24 -11 51 -11zt0 0zM263 465q-20 0 -38 -9q-18 -9 -31.5 -24.5q-13.5 -15.5 -21 -37q-7.5 -21.5 -7.5 -45.5q0 -48 29 -80q29 -32 80 -32q22 0 43.5 8q21.5 8 41 22.5q19.5 14.5 36.5 33q17 18.5 31 39.5q-27 56 -68 90.5t-95 34.5z" />
-<glyph unicode="&#8747;" horiz-adv-x="351" d="M214 -58q0 -78 -33 -114q-33 -36 -104 -36q-35 0 -66 7q-31 7 -55 17l23 64q23 -9 45 -14q22 -5 45 -5q38 0 52 24.5q14 24.5 13 83.5l0 593q1 78 33.5 114q32.5 36 104.5 36q34 0 65 -7q31 -7 55 -17l-21 -64q-23 9 -45.5 14q-22.5 5 -45.5 5q-38 0 -52 -23.5q-14 -23.5 -14 -82.5z" />
-<glyph unicode="&#8776;" horiz-adv-x="480" d="M46 444q43 33 78 46q35 13 64 13q28 0 52 -8.5q24 -8.5 46 -19q22 -10.5 43 -19q21 -8.5 44 -8.5q19 0 39 8q20 8 43 28l34 -61q-38 -26 -68.5 -36.5q-30.5 -10.5 -55.5 -10.5q-27 0 -49.5 8.5q-22.5 8.5 -43 19q-20.5 10.5 -41 19q-20.5 8.5 -44.5 8.5q-23 0 -49 -10.5q-26 -10.5 -58 -36.5zM46 277q43 33 78 46q35 13 64 13q28 0 52 -8.5q24 -8.5 46 -19q22 -10.5 43 -19q21 -8.5 44 -8.5q19 0 39 8q20 8 43 28l34 -61q-38 -26 -68.5 -36.5q-30.5 -10.5 -55.5 -10.5q-27 0 -49.5 8.5q-22.5 8.5 -43 19q-20.5 10.5 -41 19q-20.5 8.5 -44.5 8.5q-23 0 -49 -10.5q-26 -10.5 -58 -36.5z" />
-<glyph unicode="&#8800;" horiz-adv-x="480" d="M55 457h234l61 137h72l-61 -137h118v-72h-149l-42 -94h191v-72h-223l-67 -153h-72l67 153h-129v72h161l42 94l-203 0z" />
-<glyph unicode="&#8804;" horiz-adv-x="480" d="M488 82l-36 -63l-368 210l36 64zM54 426v29l379 231l38 -62l-237 -145l-91 -38l90 -32l243 -144l-38 -60z" />
-<glyph unicode="&#8805;" horiz-adv-x="480" d="M463 234l-365 -215l-38 62l366 215zM489 465v-29l-379 -231l-38 62l237 145l91 38l-90 32l-243 144l38 60z" />
-<glyph unicode="&#9674;" horiz-adv-x="506" d="M292 -11h-33l-201 353l201 369h33l203 -364zM310 161l102 176l-109 194l-28 88h-2l-28 -90l-102 -176l109 -194l29 -88l1 0z" />
-<glyph unicode="&#11367;" horiz-adv-x="668" d="M505 321h-318l-67 -321h-80l148 700h80l-64 -305h317l64 305h80l-132 -626h88l-43 -203h-54l12 129h-19l-80 0z" />
-<glyph unicode="&#11368;" horiz-adv-x="533" d="M401 285q6 30 10 53.5q4 23.5 4 41.5q0 37 -15 52.5q-15 15.5 -47 15.5q-26 0 -53 -13.5q-27 -13.5 -52 -34.5q-25 -21 -44.5 -47q-19.5 -26 -29.5 -50l-63 -303h-75l148 700h75l-62 -286h4q13 16 31.5 33q18.5 17 42.5 31.5q24 14.5 52 24q28 9.5 61 9.5q49 0 77 -23.5q28 -23.5 28 -85.5q0 -42 -13 -101l-51 -238h71l-52 -191h-61l34 127l-80 0z" />
-<glyph unicode="&#62465;" horiz-adv-x="2" d="M-86 870h116l-5 -21l-175 -97l-73 0z" />
-<glyph unicode="&#62470;" horiz-adv-x="285" d="M169 871q11 -35 36 -53.5q25 -18.5 64 -18.5q32 0 55 6q23 6 40 15.5q17 9.5 30 22.5q13 13 24 28l41 -19q-25 -60 -74 -91q-49 -31 -119 -31q-29 0 -53 9.5q-24 9.5 -41.5 25.5q-17.5 16 -28 37.5q-10.5 21.5 -13.5 44.5z" />
-<glyph unicode="&#62471;" horiz-adv-x="363" d="M167 -43q27 -3 44.5 -20.5q17.5 -17.5 17.5 -49.5q0 -42 -31.5 -69q-31.5 -27 -94.5 -27q-12 0 -25.5 1.5q-13.5 1.5 -27.5 3.5l17 39q5 -1 10.5 -1q5.5 0 10.5 0q21 0 35 4q14 4 22 9.5q8 5.5 11 12.5q3 7 3 13q0 19 -21 28q-21 9 -56 9l65 90l53 0z" />
-<glyph unicode="&#62472;" horiz-adv-x="431" d="M352 870h48l99 -102l-4 -21h-68l-46 49l-10 35l-25 -34l-71 -50h-75l5 22z" />
-<glyph unicode="&#62473;" horiz-adv-x="179" d="M-4 -105q0 23 18 36.5q18 13.5 38 13.5q26 0 37 -16q11 -16 11 -40q0 -29 -12 -52q-12 -23 -28.5 -40q-16.5 -17 -33.5 -28q-17 -11 -28 -14l-18 32q20 11 36 27q16 16 20 40q-20 0 -30 11t-10 30z" />
-<glyph unicode="&#62474;" horiz-adv-x="185" d="M142 658q0 12 5.5 21.5q5.5 9.5 13.5 15.5q8 6 17.5 9.5q9.5 3.5 18.5 3.5q30 0 40.5 -15q10.5 -15 10.5 -43q0 -34 -13 -60q-13 -26 -31 -44.5q-18 -18.5 -37 -30q-19 -11.5 -31 -15.5l-16 34q23 12 40 31q17 19 22 46q-40 2 -40 47z" />
-<glyph unicode="&#62475;" horiz-adv-x="266" d="M210 796q0 23 17 38q17 15 42 15q26 0 43 -15q17 -15 17 -38q0 -22 -17 -37q-17 -15 -43 -15q-25 0 -42 15t-17 37z" />
-<glyph unicode="&#62476;" horiz-adv-x="401" d="M220 768q0 37 25 61q25 24 80 24q50 0 78 -21.5q28 -21.5 28 -63.5q0 -36 -26.5 -59.5q-26.5 -23.5 -79.5 -23.5q-51 0 -78 22.5q-27 22.5 -27 60.5zt0 0zM281 768q0 -17 10.5 -28.5q10.5 -11.5 33.5 -11.5q22 0 33.5 11q11.5 11 11.5 29q0 19 -11 30.5q-11 11.5 -34 11.5q-22 0 -33 -11.5t-11 -30.5z" />
-<glyph unicode="&#62477;" horiz-adv-x="349" d="M170 785q35 32 62.5 43.5q27.5 11.5 50.5 11.5q18 0 33.5 -5q15.5 -5 30 -11.5q14.5 -6.5 28.5 -11.5q14 -5 29 -5q25 0 53 21l16 -43q-32 -26 -56.5 -35q-24.5 -9 -44.5 -9q-18 0 -33 5q-15 5 -29.5 11.5q-14.5 6.5 -28.5 11.5q-14 5 -29 5q-15 0 -31.5 -6.5q-16.5 -6.5 -36.5 -23.5z" />
-<glyph unicode="&#62478;" horiz-adv-x="382" d="M257 10q-18 -8 -35 -18q-17 -10 -31 -22.5q-14 -12.5 -22.5 -29q-8.5 -16.5 -8.5 -36.5q0 -17 9.5 -28.5q9.5 -11.5 32.5 -11.5q19 0 42 8l1 -43q-18 -13 -42 -18.5q-24 -5.5 -44 -5.5q-34 0 -56.5 18q-22.5 18 -22.5 55q0 25 11 46.5q11 21.5 28.5 38q17.5 16.5 40 28.5q22.5 12 46.5 19z" />
-<glyph unicode="&#62598;" horiz-adv-x="556" d="M561 551q0 -39 -12 -71q-12 -32 -34 -56q-22 -24 -51.5 -38.5q-29.5 -14.5 -63.5 -19.5l0 -4q22 -5 42 -16.5q20 -11.5 35 -28.5q15 -17 24 -39.5q9 -22.5 9 -49.5q0 -70 -27.5 -115.5q-27.5 -45.5 -70 -72.5q-42.5 -27 -95 -37.5q-52.5 -10.5 -103.5 -10.5q-16 0 -38.5 0q-22.5 0 -57.5 2q-60 6 -78 11l146 689q38 6 85.5 10q47.5 4 102.5 4q37 0 71 -9.5q34 -9.5 59.5 -28.5q25.5 -19 41 -49q15.5 -30 15.5 -70zt0 0zM236 64q35 0 69 8.5q34 8.5 61 26.5q27 18 43.5 47q16.5 29 16.5 71q0 31 -15 51.5q-15 20.5 -39 32.5q-24 12 -54.5 16.5q-30.5 4.5 -61.5 4.5h-70l-53 -251q6 -2 18.5 -3q12.5 -1 27 -2q14.5 -1 30 -1.5q15.5 -0.5 27.5 -0.5zt0 0zM253 390q17 0 40 0.5q23 0.5 39 2.5q23 5 49 14q26 9 47.5 25.5q21.5 16.5 35 42q13.5 25.5 13.5 63.5q0 28 -8.5 46.5q-8.5 18.5 -25 30q-16.5 11.5 -39.5 16.5q-23 5 -51 5q-32 0 -60 -1.5q-28 -1.5 -42 -4.5l-51 -240zM432 870h116l-5 -21l-175 -97l-73 0z" />
-<glyph unicode="&#62599;" horiz-adv-x="521" d="M185 700h75l-61 -286h4q14 18 32 35.5q18 17.5 40 31.5q22 14 47 22.5q25 8.5 54 8.5q59 0 86 -41.5q27 -41.5 27 -104.5q0 -90 -25 -159.5q-25 -69.5 -66 -117.5q-41 -48 -93.5 -73q-52.5 -25 -107.5 -25q-54 0 -94.5 12q-40.5 12 -59.5 28zM352 448q-25 0 -51 -12.5q-26 -12.5 -49.5 -32.5q-23.5 -20 -43 -44.5q-19.5 -24.5 -31.5 -47.5l-50 -235q30 -21 85 -21q32 0 67 19.5q35 19.5 64 57q29 37.5 47.5 92q18.5 54.5 18.5 124.5q0 51 -15.5 75.5q-15.5 24.5 -41.5 24.5zt0 0zM414 720h84l-5 -21l-123 -128l-44 0z" />
-<glyph unicode="&#62600;" horiz-adv-x="492" d="M189 700h361l-15 -74h-283l-51 -239h264l-15 -74h-264l-66 -313h-80zM433 870h116l-5 -21l-175 -97l-73 0z" />
-<glyph unicode="&#62601;" horiz-adv-x="278" d="M219 436l-80 -470q-6 -37 -16.5 -68.5q-10.5 -31.5 -27.5 -55q-17 -23.5 -43 -37q-26 -13.5 -63 -13.5q-30 0 -55.5 4.5q-25.5 4.5 -47.5 15.5v56q42 -7 58.5 -9.5q16.5 -2.5 40.5 -2.5q38 0 57 36.5q19 36.5 32 115.5l70 428h-77l13 64h73l13 67q7 37 17 64q10 27 26.5 45q16.5 18 41 27q24.5 9 59.5 9q33 0 64 -6.5q31 -6.5 56 -17.5l-22 -59q-49 19 -93 19q-37 0 -54 -25.5q-17 -25.5 -26 -81.5l-7 -41h101l-12 -64zM410 870h116l-5 -21l-175 -97l-73 0z" />
-<glyph unicode="&#62622;" horiz-adv-x="575" d="M86 589h82l24 111h80l-24 -111h208l-14 -66h-208l-27 -125q28 15 69.5 30q41.5 15 96.5 15q30 0 57.5 -8q27.5 -8 48 -25q20.5 -17 33 -44.5q12.5 -27.5 12.5 -67.5q0 -29 -7 -61l-49 -237h-80l48 226q6 28 6 52q0 91 -95 91q-45 0 -86 -14q-41 -14 -70 -32l-68 -323h-80l111 523l-82 0z" />
-<glyph unicode="&#62623;" horiz-adv-x="530" d="M93 632h76l15 68h75l-15 -68h152l-12 -60h-153l-34 -158h4q13 16 31.5 33q18.5 17 42.5 31.5q24 14.5 52 24q28 9.5 61 9.5q49 0 77 -23.5q28 -23.5 28 -85.5q0 -42 -13 -101l-64 -302h-75l60 285q6 30 10 53.5q4 23.5 4 41.5q0 37 -15 52.5q-15 15.5 -47 15.5q-26 0 -53 -13.5q-27 -13.5 -52 -34.5q-25 -21 -44.5 -47q-19.5 -26 -29.5 -50l-63 -303h-75l121 572l-77 0z" />
-<glyph unicode="&#62662;" horiz-adv-x="576" d="M257 700l-48 -225q-3 -14 -5 -27.5q-2 -13.5 -2 -24.5q0 -92 94 -92q45 0 86.5 12.5q41.5 12.5 70.5 33.5l69 323h80l-148 -700q-15 -73 -28.5 -107.5q-13.5 -34.5 -33 -58q-19.5 -23.5 -46 -35q-26.5 -11.5 -62.5 -11.5q-8 0 -15.5 0.5q-7.5 0.5 -15.5 1.5l15 70q28 0 45 7q17 7 27.5 23.5q10.5 16.5 17.5 43.5q7 27 16 66l64 302q-29 -17 -69.5 -31q-40.5 -14 -97.5 -14q-30 0 -57.5 7.5q-27.5 7.5 -48.5 25q-21 17.5 -33 45q-12 27.5 -12 67.5q0 30 7 62l50 236z" />
-<glyph unicode="&#62663;" horiz-adv-x="470" d="M318 210q-17 -10 -49 -22q-32 -12 -80 -12q-27 0 -49 5.5q-22 5.5 -37.5 18q-15.5 12.5 -24.5 33.5q-9 21 -9 52q0 29 7 63l33 152h76l-29 -136q-7 -35 -7 -60q0 -29 13.5 -46.5q13.5 -17.5 50.5 -17.5q44 0 73 12.5q29 12.5 46 24.5l48 223h76l-106 -500q-12 -57 -26.5 -96.5q-14.5 -39.5 -36.5 -65.5q-43 -50 -110 -50q-7 0 -14 0.5q-7 0.5 -15 1.5l15 70q27 0 44 8q17 8 29 25.5q12 17.5 20.5 44q8.5 26.5 17.5 62.5z" />
-<glyph unicode="&#62668;" horiz-adv-x="526" d="M294 331l6 -89h4l38 92l205 366h88l-265 -455q-41 -71 -71 -119q-30 -48 -55.5 -77q-25.5 -29 -50 -41.5q-24.5 -12.5 -55.5 -12.5q-32 0 -51 6.5q-19 6.5 -33 15.5l39 69q16 -10 28.5 -13.5q12.5 -3.5 26.5 -3.5q26 0 51 33q25 33 54 84l-136 514h85zM442 870h116l-5 -21l-175 -97l-73 0z" />
-<glyph unicode="&#62669;" horiz-adv-x="439" d="M194 176l5 -96h5l38 97l166 323h80l-236 -446q-26 -49 -51.5 -95.5q-25.5 -46.5 -52.5 -83q-27 -36.5 -56 -58.5q-29 -22 -60 -22q-17 0 -29.5 2q-12.5 2 -22.5 7l24 69q11 -4 24 -4q29 0 58 30q29 30 65 101l-86 500h80zM337 720h84l-5 -21l-123 -128l-44 0z" />
-<glyph unicode="&#62678;" horiz-adv-x="554" d="M192 392h278q1 11 1.5 23q0.5 12 0.5 23q0 95 -43 148.5q-43 53.5 -137 53.5q-45 0 -79 -10q-34 -10 -59 -23l-6 66q34 18 73.5 28.5q39.5 10.5 89.5 10.5q72 0 118.5 -24q46.5 -24 73.5 -61.5q27 -37.5 38 -84q11 -46.5 11 -91.5q0 -98 -23.5 -182.5q-23.5 -84.5 -71.5 -146.5q-48 -62 -122 -98q-74 -36 -176 -36q-46 0 -85 7q-39 7 -63 18l37 73q20 -11 54.5 -18.5q34.5 -7.5 72.5 -7.5q51 0 97.5 17q46.5 17 85 50.5q38.5 33.5 65 82q26.5 48.5 37.5 111.5l-282 0zM288 796q0 23 17 38q17 15 42 15q26 0 43 -15q17 -15 17 -38q0 -22 -17 -37q-17 -15 -43 -15q-25 0 -42 15t-17 37z" />
-<glyph unicode="&#62679;" horiz-adv-x="440" d="M124 283h199q2 10 3 20.5q1 10.5 1 22.5q0 63 -25 92.5q-25 29.5 -71 29.5q-46 0 -76.5 -10.5q-30.5 -10.5 -50.5 -22.5l-20 52q34 22 74.5 33.5q40.5 11.5 90.5 11.5q41 0 70.5 -12q29.5 -12 49 -33.5q19.5 -21.5 29 -50.5q9.5 -29 9.5 -63q0 -102 -23 -172q-23 -70 -61 -112.5q-38 -42.5 -86.5 -61.5q-48.5 -19 -98.5 -19q-101 0 -147 31l33 61q19 -13 50.5 -20.5q31.5 -7.5 62.5 -7.5q69 0 115.5 43q46.5 43 65.5 127l-207 0zM219 653q0 23 15.5 39q15.5 16 38.5 16q23 0 39 -16q16 -16 16 -39q0 -23 -16 -38.5q-16 -15.5 -39 -15.5q-23 0 -38.5 15.5t-15.5 38.5z" />
-<glyph unicode="&#62730;" horiz-adv-x="515" d="M164 331l15 69h14q18 0 44.5 1.5q26.5 1.5 42.5 3.5q27 3 55 12.5q28 9.5 50.5 26.5q22.5 17 37 42q14.5 25 14.5 59q0 45 -32 70q-32 25 -87 25q-51 0 -85 -8.5q-34 -8.5 -62 -18.5l-8 65q23 11 69.5 22.5q46.5 11.5 107.5 11.5q38 0 71 -9.5q33 -9.5 57.5 -27.5q24.5 -18 38.5 -45q14 -27 14 -63q0 -43 -13.5 -76q-13.5 -33 -36 -57q-22.5 -24 -52.5 -38.5q-30 -14.5 -63 -19.5l0 -4q21 -5 41.5 -15.5q20.5 -10.5 37 -28.5q16.5 -18 26.5 -44.5q10 -26.5 10 -63.5q0 -61 -23.5 -104q-23.5 -43 -61 -70.5q-37.5 -27.5 -85 -41q-47.5 -13.5 -95.5 -16.5l-31 -167h-74l41 167q-49 2 -82.5 9q-33.5 7 -53.5 17l36 73q20 -11 57 -19q37 -8 93 -8q34 0 69 8.5q35 8.5 63 27.5q28 19 45.5 49.5q17.5 30.5 17.5 74.5q0 30 -10.5 50q-10.5 20 -28.5 33q-18 13 -41 19q-23 6 -47 8q-11 1 -22 1q-11 0 -22 0z" />
-<glyph unicode="&#62731;" horiz-adv-x="418" d="M120 224l13 62h66q17 0 36.5 8q19.5 8 36 22q16.5 14 27.5 31.5q11 17.5 11 37.5q0 32 -19 45q-19 13 -70 13q-36 0 -62.5 -8q-26.5 -8 -49.5 -19l-16 59q32 17 70.5 24.5q38.5 7.5 88.5 7.5q74 0 106 -26.5q32 -26.5 32 -76.5q0 -26 -9 -48q-9 -22 -24.5 -39.5q-15.5 -17.5 -35 -29.5q-19.5 -12 -40.5 -19l0 -4q43 -8 60.5 -32.5q17.5 -24.5 17.5 -56.5q0 -39 -14 -70q-14 -31 -39 -54.5q-25 -23.5 -59.5 -38q-34.5 -14.5 -74.5 -18.5l-32 -173h-74l42 171q-34 3 -64 12q-30 9 -48 23l32 60q20 -13 50 -22q30 -9 66 -9q58 0 97.5 29q39.5 29 39.5 80q0 30 -24 44.5q-24 14.5 -82 14.5z" />
-<glyph unicode="&#62732;" horiz-adv-x="544" d="M480 29q-32 -22 -68.5 -31q-36.5 -9 -83.5 -10l-24 -31q27 -3 44.5 -20.5q17.5 -17.5 17.5 -49.5q0 -42 -31.5 -69q-31.5 -27 -94.5 -27q-12 0 -25.5 1.5q-13.5 1.5 -27.5 3.5l17 39q5 -1 10.5 -1q5.5 0 10.5 0q21 0 35 4q14 4 22 9.5q8 5.5 11 12.5q3 7 3 13q0 19 -21 28q-21 9 -56 9l58 81q-49 7 -87 31.5q-38 24.5 -64.5 61.5q-26.5 37 -40.5 85.5q-14 48.5 -14 104.5q0 113 33 195.5q33 82.5 87 136.5q54 54 121.5 80q67.5 26 136.5 26q57 0 93 -8q36 -8 59 -19l-36 -73q-20 11 -52.5 18.5q-32.5 7.5 -74.5 7.5q-56 0 -107.5 -24.5q-51.5 -24.5 -90.5 -70.5q-39 -46 -62 -112q-23 -66 -23 -148q0 -48 12.5 -88.5q12.5 -40.5 36 -70q23.5 -29.5 58 -46q34.5 -16.5 78.5 -16.5q47 0 78 10.5q31 10.5 56 24.5z" />
-<glyph unicode="&#62733;" horiz-adv-x="420" d="M365 43q-26 -22 -61.5 -36.5q-35.5 -14.5 -67.5 -18.5l-25 -31q27 -3 44.5 -20.5q17.5 -17.5 17.5 -49.5q0 -42 -31.5 -69q-31.5 -27 -94.5 -27q-12 0 -25.5 1.5q-13.5 1.5 -27.5 3.5l17 39q5 -1 10.5 -1q5.5 0 10.5 0q21 0 35 4q14 4 22 9.5q8 5.5 11 12.5q3 7 3 13q0 19 -21 28q-21 9 -56 9l57 78q-40 4 -66 21q-26 17 -41 40.5q-15 23.5 -20.5 49.5q-5.5 26 -5.5 49q0 85 23 152.5q23 67.5 61.5 114.5q38.5 47 88.5 72q50 25 103 25q38 0 62.5 -7q24.5 -7 44.5 -16l-28 -62q-17 10 -42 15.5q-25 5.5 -54 5.5q-34 0 -66.5 -23q-32.5 -23 -57.5 -60.5q-25 -37.5 -40 -86q-15 -48.5 -15 -99.5q0 -65 27 -96q27 -31 73 -31q30 0 63 13.5q33 13.5 53 27.5z" />
-<glyph unicode="&#62734;" horiz-adv-x="557" d="M404 194h-244l-108 -194h-85l404 711h37l101 -711h-77zM199 266h197l-29 213l-2 106h-1l-45 -108zM259 843h300l-13 -62l-301 0z" />
-<glyph unicode="&#62735;" horiz-adv-x="487" d="M414 197q-8 -37 -11 -75q-3 -38 -3 -71q0 -15 0 -28.5q0 -13.5 2 -24.5l-56 0l-14 87h-4q-12 -17 -29.5 -34.5q-17.5 -17.5 -38.5 -31.5q-21 -14 -45 -22.5q-24 -8.5 -51 -8.5q-119 0 -119 155q0 64 16.5 130q16.5 66 51 119q34.5 53 89 87q54.5 34 131.5 34q28 0 68.5 -6.5q40.5 -6.5 75.5 -17.5zM187 52q24 0 46 11.5q22 11.5 41.5 28.5q19.5 17 34.5 36.5q15 19.5 24 36.5l56 270q-30 14 -76 14q-46 0 -81 -27q-35 -27 -59 -70.5q-24 -43.5 -36 -98.5q-12 -55 -12 -110q0 -38 15 -64.5q15 -26.5 47 -26.5zt0 0zM209 643h281l-13 -62l-282 0z" />
-<glyph unicode="&#62736;" horiz-adv-x="510" d="M189 700h361l-15 -74h-283l-49 -229h259l-15 -74h-259l-53 -249h288l-16 -74h-288h-79zM241 843h300l-13 -62l-301 0z" />
-<glyph unicode="&#62737;" horiz-adv-x="463" d="M389 49q-35 -30 -82.5 -45.5q-47.5 -15.5 -95.5 -15.5q-80 0 -120.5 46q-40.5 46 -40.5 128q0 82 23 147q23 65 60.5 110q37.5 45 85 69q47.5 24 97.5 24q36 0 62.5 -10q26.5 -10 43.5 -26.5q17 -16.5 25 -38q8 -21.5 8 -45.5q0 -71 -69 -111.5q-69 -40.5 -201 -40.5q-12 0 -25 0.5q-13 0.5 -27 1.5q-4 -19 -6 -36q-2 -17 -2 -30q0 -55 25 -89.5q25 -34.5 78 -34.5q44 0 80.5 14.5q36.5 14.5 56.5 30.5zM304 448q-55 0 -95.5 -37.5q-40.5 -37.5 -61.5 -112.5q38 0 79 2q41 2 74.5 10.5q33.5 8.5 55.5 27q22 18.5 22 51.5q0 10 -3.5 20.5q-3.5 10.5 -11.5 19q-8 8.5 -22.5 14q-14.5 5.5 -36.5 5.5zt0 0zM192 643h281l-13 -62l-282 0z" />
-<glyph unicode="&#62738;" horiz-adv-x="510" d="M189 700h361l-15 -74h-283l-49 -229h259l-15 -74h-259l-53 -249h288l-16 -74h-288h-79zM240 794q0 20 14 33.5q14 13.5 37 13.5q23 0 36.5 -13.5q13.5 -13.5 13.5 -33.5q0 -20 -13.5 -33q-13.5 -13 -36.5 -13q-23 0 -37 13q-14 13 -14 33zt0 0zM423 794q0 20 13.5 33.5q13.5 13.5 36.5 13.5q23 0 37 -13.5q14 -13.5 14 -33.5q0 -20 -14 -33q-14 -13 -37 -13q-23 0 -36.5 13q-13.5 13 -13.5 33zt0 0zM264 958h300l-13 -62l-301 0z" />
-<glyph unicode="&#62739;" horiz-adv-x="463" d="M389 49q-35 -30 -82.5 -45.5q-47.5 -15.5 -95.5 -15.5q-80 0 -120.5 46q-40.5 46 -40.5 128q0 82 23 147q23 65 60.5 110q37.5 45 85 69q47.5 24 97.5 24q36 0 62.5 -10q26.5 -10 43.5 -26.5q17 -16.5 25 -38q8 -21.5 8 -45.5q0 -71 -69 -111.5q-69 -40.5 -201 -40.5q-12 0 -25 0.5q-13 0.5 -27 1.5q-4 -19 -6 -36q-2 -17 -2 -30q0 -55 25 -89.5q25 -34.5 78 -34.5q44 0 80.5 14.5q36.5 14.5 56.5 30.5zM304 448q-55 0 -95.5 -37.5q-40.5 -37.5 -61.5 -112.5q38 0 79 2q41 2 74.5 10.5q33.5 8.5 55.5 27q22 18.5 22 51.5q0 10 -3.5 20.5q-3.5 10.5 -11.5 19q-8 8.5 -22.5 14q-14.5 5.5 -36.5 5.5zt0 0zM196 632q0 22 12.5 36.5q12.5 14.5 33.5 14.5q21 0 34 -14.5q13 -14.5 13 -36.5q0 -20 -13 -34.5q-13 -14.5 -34 -14.5q-21 0 -33.5 14.5q-12.5 14.5 -12.5 34.5zt0 0zM379 633q0 21 12.5 35.5q12.5 14.5 33.5 14.5q22 0 34.5 -14.5q12.5 -14.5 12.5 -35.5q0 -21 -12.5 -35.5q-12.5 -14.5 -34.5 -14.5q-21 0 -33.5 14.5q-12.5 14.5 -12.5 35.5zt0 0zM222 843h300l-13 -62l-301 0z" />
-<glyph unicode="&#62740;" horiz-adv-x="510" d="M189 700h361l-15 -74h-283l-49 -229h259l-15 -74h-259l-53 -249h288l-16 -74h-288h-79zM240 794q0 20 14 33.5q14 13.5 37 13.5q23 0 36.5 -13.5q13.5 -13.5 13.5 -33.5q0 -20 -13.5 -33q-13.5 -13 -36.5 -13q-23 0 -37 13q-14 13 -14 33zt0 0zM423 794q0 20 13.5 33.5q13.5 13.5 36.5 13.5q23 0 37 -13.5q14 -13.5 14 -33.5q0 -20 -14 -33q-14 -13 -37 -13q-23 0 -36.5 13q-13.5 13 -13.5 33zt0 0zM336 984q0 -37 18.5 -57q18.5 -20 51.5 -20q42 0 69 20.5q27 20.5 38 55.5l73 -17q-18 -54 -65 -85.5q-47 -31.5 -119 -31.5q-68 0 -100 33.5q-32 33.5 -34 81.5z" />
-<glyph unicode="&#62741;" horiz-adv-x="463" d="M389 49q-35 -30 -82.5 -45.5q-47.5 -15.5 -95.5 -15.5q-80 0 -120.5 46q-40.5 46 -40.5 128q0 82 23 147q23 65 60.5 110q37.5 45 85 69q47.5 24 97.5 24q36 0 62.5 -10q26.5 -10 43.5 -26.5q17 -16.5 25 -38q8 -21.5 8 -45.5q0 -71 -69 -111.5q-69 -40.5 -201 -40.5q-12 0 -25 0.5q-13 0.5 -27 1.5q-4 -19 -6 -36q-2 -17 -2 -30q0 -55 25 -89.5q25 -34.5 78 -34.5q44 0 80.5 14.5q36.5 14.5 56.5 30.5zM304 448q-55 0 -95.5 -37.5q-40.5 -37.5 -61.5 -112.5q38 0 79 2q41 2 74.5 10.5q33.5 8.5 55.5 27q22 18.5 22 51.5q0 10 -3.5 20.5q-3.5 10.5 -11.5 19q-8 8.5 -22.5 14q-14.5 5.5 -36.5 5.5zt0 0zM196 632q0 22 12.5 36.5q12.5 14.5 33.5 14.5q21 0 34 -14.5q13 -14.5 13 -36.5q0 -20 -13 -34.5q-13 -14.5 -34 -14.5q-21 0 -33.5 14.5q-12.5 14.5 -12.5 34.5zt0 0zM379 633q0 21 12.5 35.5q12.5 14.5 33.5 14.5q22 0 34.5 -14.5q12.5 -14.5 12.5 -35.5q0 -21 -12.5 -35.5q-12.5 -14.5 -34.5 -14.5q-21 0 -33.5 14.5q-12.5 14.5 -12.5 35.5zt0 0zM284 870q0 -37 18.5 -57q18.5 -20 51.5 -20q42 0 69 20.5q27 20.5 38 55.5l73 -17q-18 -54 -65 -85.5q-47 -31.5 -119 -31.5q-68 0 -100 33.5q-32 33.5 -34 81.5z" />
-<glyph unicode="&#62742;" horiz-adv-x="515" d="M164 331l15 69h14q18 0 44.5 1.5q26.5 1.5 42.5 3.5q27 3 55 12.5q28 9.5 50.5 26.5q22.5 17 37 42q14.5 25 14.5 59q0 45 -32 70q-32 25 -87 25q-51 0 -85 -8.5q-34 -8.5 -62 -18.5l-8 65q23 11 69.5 22.5q46.5 11.5 107.5 11.5q38 0 71 -9.5q33 -9.5 57.5 -27.5q24.5 -18 38.5 -45q14 -27 14 -63q0 -43 -13.5 -76q-13.5 -33 -36 -57q-22.5 -24 -52.5 -38.5q-30 -14.5 -63 -19.5l0 -4q21 -5 41.5 -15.5q20.5 -10.5 37 -28.5q16.5 -18 26.5 -44.5q10 -26.5 10 -63.5q0 -66 -27 -110.5q-27 -44.5 -70 -71.5q-43 -27 -95.5 -38.5q-52.5 -11.5 -104.5 -11.5q-63 0 -103.5 7.5q-40.5 7.5 -64.5 18.5l36 73q20 -11 57 -19q37 -8 93 -8q34 0 69 8.5q35 8.5 63 27.5q28 19 45.5 49.5q17.5 30.5 17.5 74.5q0 30 -10.5 50q-10.5 20 -28.5 33q-18 13 -41 19q-23 6 -47 8q-11 1 -22 1q-11 0 -22 0zM358 746h-47l-97 103l3 21h67l46 -50l9 -34l24 33l71 51h76l-4 -22z" />
-<glyph unicode="&#62743;" horiz-adv-x="418" d="M120 224l13 62h66q17 0 36.5 8q19.5 8 36 22q16.5 14 27.5 31.5q11 17.5 11 37.5q0 32 -19 45q-19 13 -70 13q-36 0 -62.5 -8q-26.5 -8 -49.5 -19l-16 59q32 17 70.5 24.5q38.5 7.5 88.5 7.5q74 0 106 -26.5q32 -26.5 32 -76.5q0 -26 -9 -48q-9 -22 -24.5 -39.5q-15.5 -17.5 -35 -29.5q-19.5 -12 -40.5 -19l0 -4q43 -8 60.5 -32.5q17.5 -24.5 17.5 -56.5q0 -44 -18 -78q-18 -34 -48.5 -57.5q-30.5 -23.5 -72 -36q-41.5 -12.5 -89.5 -12.5q-40 0 -77 10q-37 10 -58 26l32 60q20 -13 50 -22.5q30 -9.5 66 -9.5q58 0 97.5 29.5q39.5 29.5 39.5 80.5q0 30 -24 44.5q-24 14.5 -82 14.5zM265 550h-35l-71 182h72l23 -66l7 -58l34 58l56 66l70 0z" />
-<glyph unicode="&#62744;" horiz-adv-x="651" d="M71 256q0 92 25 175q25 83 71.5 145.5q46.5 62.5 112 99q65.5 36.5 145.5 36.5q48 0 89 -14.5q41 -14.5 70.5 -46q29.5 -31.5 46 -81.5q16.5 -50 16.5 -122q0 -94 -25 -177.5q-25 -83.5 -70 -146.5q-45 -63 -107.5 -99.5q-62.5 -36.5 -137.5 -36.5q-118 0 -177 68.5q-59 68.5 -59 199.5zt0 0zM155 257q0 -94 39 -145.5q39 -51.5 115 -51.5q56 0 102.5 31q46.5 31 80.5 84q34 53 52.5 123q18.5 70 18.5 148q0 58 -13 96q-13 38 -34.5 59.5q-21.5 21.5 -49 30q-27.5 8.5 -55.5 8.5q-57 0 -104 -31.5q-47 -31.5 -80.5 -84.5q-33.5 -53 -52.5 -122.5q-19 -69.5 -19 -144.5zt0 0zM307 843h300l-13 -62l-301 0z" />
-<glyph unicode="&#62745;" horiz-adv-x="498" d="M50 156q0 79 20.5 144.5q20.5 65.5 56.5 112.5q36 47 83.5 73q47.5 26 101.5 26q42 0 71.5 -13.5q29.5 -13.5 48 -37q18.5 -23.5 26.5 -54q8 -30.5 8 -63.5q0 -75 -19.5 -140q-19.5 -65 -54 -113q-34.5 -48 -80.5 -75.5q-46 -27.5 -100 -27.5q-45 0 -75.5 14.5q-30.5 14.5 -50 38.5q-19.5 24 -28 54q-8.5 30 -8.5 61zt0 0zM130 174q0 -59 22 -90.5q22 -31.5 70 -31.5q33 0 62.5 23.5q29.5 23.5 52 63.5q22.5 40 36 91.5q13.5 51.5 13.5 107.5q0 51 -18.5 80.5q-18.5 29.5 -70.5 29.5q-33 0 -63 -22.5q-30 -22.5 -53.5 -60.5q-23.5 -38 -37 -87.5q-13.5 -49.5 -13.5 -103.5zt0 0zM202 643h281l-13 -62l-282 0z" />
-<glyph unicode="&#62746;" horiz-adv-x="651" d="M71 256q0 92 25 175q25 83 71.5 145.5q46.5 62.5 112 99q65.5 36.5 145.5 36.5q48 0 89 -14.5q41 -14.5 70.5 -46q29.5 -31.5 46 -81.5q16.5 -50 16.5 -122q0 -94 -25 -177.5q-25 -83.5 -70 -146.5q-45 -63 -107.5 -99.5q-62.5 -36.5 -137.5 -36.5q-118 0 -177 68.5q-59 68.5 -59 199.5zt0 0zM155 257q0 -94 39 -145.5q39 -51.5 115 -51.5q56 0 102.5 31q46.5 31 80.5 84q34 53 52.5 123q18.5 70 18.5 148q0 58 -13 96q-13 38 -34.5 59.5q-21.5 21.5 -49 30q-27.5 8.5 -55.5 8.5q-57 0 -104 -31.5q-47 -31.5 -80.5 -84.5q-33.5 -53 -52.5 -122.5q-19 -69.5 -19 -144.5zt0 0zM380 870q0 -37 18.5 -57q18.5 -20 51.5 -20q42 0 69 20.5q27 20.5 38 55.5l73 -17q-18 -54 -65 -85.5q-47 -31.5 -119 -31.5q-68 0 -100 33.5q-32 33.5 -34 81.5z" />
-<glyph unicode="&#62747;" horiz-adv-x="498" d="M50 156q0 79 20.5 144.5q20.5 65.5 56.5 112.5q36 47 83.5 73q47.5 26 101.5 26q42 0 71.5 -13.5q29.5 -13.5 48 -37q18.5 -23.5 26.5 -54q8 -30.5 8 -63.5q0 -75 -19.5 -140q-19.5 -65 -54 -113q-34.5 -48 -80.5 -75.5q-46 -27.5 -100 -27.5q-45 0 -75.5 14.5q-30.5 14.5 -50 38.5q-19.5 24 -28 54q-8.5 30 -8.5 61zt0 0zM130 174q0 -59 22 -90.5q22 -31.5 70 -31.5q33 0 62.5 23.5q29.5 23.5 52 63.5q22.5 40 36 91.5q13.5 51.5 13.5 107.5q0 51 -18.5 80.5q-18.5 29.5 -70.5 29.5q-33 0 -63 -22.5q-30 -22.5 -53.5 -60.5q-23.5 -38 -37 -87.5q-13.5 -49.5 -13.5 -103.5zt0 0zM271 702q0 -47 19.5 -64.5q19.5 -17.5 49.5 -17.5q31 0 58.5 19q27.5 19 44.5 62l54 -19q-20 -58 -67.5 -89q-47.5 -31 -103.5 -31q-25 0 -47.5 6q-22.5 6 -39.5 19q-17 13 -27 33.5q-10 20.5 -10 48.5l0 9z" />
-<glyph unicode="&#62748;" horiz-adv-x="651" d="M72 256q0 92 24.5 175q24.5 83 70 145.5q45.5 62.5 110.5 99q65 36.5 145 36.5q48 0 89.5 -14.5q41.5 -14.5 71.5 -46q30 -31.5 47 -81.5q17 -50 17 -122q0 -94 -24 -177.5q-24 -83.5 -68.5 -146.5q-44.5 -63 -106 -99.5q-61.5 -36.5 -136.5 -36.5q-118 0 -179 68.5q-61 68.5 -61 199.5zt0 0zM156 257q0 -94 41 -145.5q41 -51.5 117 -51.5q44 0 82 19.5q38 19.5 68 54q30 34.5 52 82q22 47.5 34 103.5l-391 0q-3 -32 -3 -62zt0 0zM408 640q-44 0 -82 -19q-38 -19 -68 -52q-30 -33 -52.5 -78.5q-22.5 -45.5 -34.5 -99.5l389 0q3 27 3 55q0 58 -14 96q-14 38 -36 59.5q-22 21.5 -49.5 30q-27.5 8.5 -55.5 8.5zt0 0zM378 870q0 -37 18.5 -57q18.5 -20 51.5 -20q42 0 69 20.5q27 20.5 38 55.5l73 -17q-18 -54 -65 -85.5q-47 -31.5 -119 -31.5q-68 0 -100 33.5q-32 33.5 -34 81.5z" />
-<glyph unicode="&#62749;" horiz-adv-x="498" d="M50 156q0 79 20.5 144.5q20.5 65.5 56.5 112.5q36 47 83.5 73q47.5 26 101.5 26q42 0 71.5 -13.5q29.5 -13.5 48 -37q18.5 -23.5 26.5 -54q8 -30.5 8 -63.5q0 -75 -19.5 -140q-19.5 -65 -54 -113q-34.5 -48 -80.5 -75.5q-46 -27.5 -100 -27.5q-45 0 -75.5 14.5q-30.5 14.5 -50 38.5q-19.5 24 -28 54q-8.5 30 -8.5 61zt0 0zM297 448q-25 0 -48 -13q-23 -13 -43.5 -35.5q-20.5 -22.5 -36 -53.5q-15.5 -31 -25.5 -67l238 0q2 14 3 29q1 15 1 30q0 51 -18.5 80.5q-18.5 29.5 -70.5 29.5zt0 0zM130 174q0 -59 22 -90.5q22 -31.5 70 -31.5q24 0 46 12.5q22 12.5 41 35q19 22.5 34.5 53q15.5 30.5 25.5 66.5l-237 0q-1 -11 -1.5 -22.5q-0.5 -11.5 -0.5 -22.5zt0 0zM287 702q0 -47 19.5 -64.5q19.5 -17.5 49.5 -17.5q31 0 58.5 19q27.5 19 44.5 62l54 -19q-20 -58 -67.5 -89q-47.5 -31 -103.5 -31q-25 0 -47.5 6q-22.5 6 -39.5 19q-17 13 -27 33.5q-10 20.5 -10 48.5l0 9z" />
-<glyph unicode="&#62750;" horiz-adv-x="651" d="M72 256q0 92 24.5 175q24.5 83 70 145.5q45.5 62.5 110.5 99q65 36.5 145 36.5q48 0 89.5 -14.5q41.5 -14.5 71.5 -46q30 -31.5 47 -81.5q17 -50 17 -122q0 -94 -24 -177.5q-24 -83.5 -68.5 -146.5q-44.5 -63 -106 -99.5q-61.5 -36.5 -136.5 -36.5q-118 0 -179 68.5q-61 68.5 -61 199.5zt0 0zM156 257q0 -94 41 -145.5q41 -51.5 117 -51.5q44 0 82 19.5q38 19.5 68 54q30 34.5 52 82q22 47.5 34 103.5l-391 0q-3 -32 -3 -62zt0 0zM408 640q-44 0 -82 -19q-38 -19 -68 -52q-30 -33 -52.5 -78.5q-22.5 -45.5 -34.5 -99.5l389 0q3 27 3 55q0 58 -14 96q-14 38 -36 59.5q-22 21.5 -49.5 30q-27.5 8.5 -55.5 8.5zt0 0zM401 984q0 -37 18.5 -57q18.5 -20 51.5 -20q42 0 69 20.5q27 20.5 38 55.5l73 -17q-18 -54 -65 -85.5q-47 -31.5 -119 -31.5q-68 0 -100 33.5q-32 33.5 -34 81.5zM309 794q0 20 14 33.5q14 13.5 37 13.5q23 0 36.5 -13.5q13.5 -13.5 13.5 -33.5q0 -20 -13.5 -33q-13.5 -13 -36.5 -13q-23 0 -37 13q-14 13 -14 33zt0 0zM492 794q0 20 13.5 33.5q13.5 13.5 36.5 13.5q23 0 37 -13.5q14 -13.5 14 -33.5q0 -20 -14 -33q-14 -13 -37 -13q-23 0 -36.5 13t-13.5 33z" />
-<glyph unicode="&#62751;" horiz-adv-x="498" d="M50 156q0 79 20.5 144.5q20.5 65.5 56.5 112.5q36 47 83.5 73q47.5 26 101.5 26q42 0 71.5 -13.5q29.5 -13.5 48 -37q18.5 -23.5 26.5 -54q8 -30.5 8 -63.5q0 -75 -19.5 -140q-19.5 -65 -54 -113q-34.5 -48 -80.5 -75.5q-46 -27.5 -100 -27.5q-45 0 -75.5 14.5q-30.5 14.5 -50 38.5q-19.5 24 -28 54q-8.5 30 -8.5 61zt0 0zM297 448q-25 0 -48 -13q-23 -13 -43.5 -35.5q-20.5 -22.5 -36 -53.5q-15.5 -31 -25.5 -67l238 0q2 14 3 29q1 15 1 30q0 51 -18.5 80.5q-18.5 29.5 -70.5 29.5zt0 0zM130 174q0 -59 22 -90.5q22 -31.5 70 -31.5q24 0 46 12.5q22 12.5 41 35q19 22.5 34.5 53q15.5 30.5 25.5 66.5l-237 0q-1 -11 -1.5 -22.5q-0.5 -11.5 -0.5 -22.5zt0 0zM191 632q0 22 12.5 36.5q12.5 14.5 33.5 14.5q21 0 34 -14.5q13 -14.5 13 -36.5q0 -20 -13 -34.5q-13 -14.5 -34 -14.5q-21 0 -33.5 14.5q-12.5 14.5 -12.5 34.5zt0 0zM374 633q0 21 12.5 35.5q12.5 14.5 33.5 14.5q22 0 34.5 -14.5q12.5 -14.5 12.5 -35.5q0 -21 -12.5 -35.5q-12.5 -14.5 -34.5 -14.5q-21 0 -33.5 14.5q-12.5 14.5 -12.5 35.5zt0 0zM285 870q0 -37 18.5 -57q18.5 -20 51.5 -20q42 0 69 20.5q27 20.5 38 55.5l73 -17q-18 -54 -65 -85.5q-47 -31.5 -119 -31.5q-68 0 -100 33.5q-32 33.5 -34 81.5z" />
-<glyph unicode="&#62752;" horiz-adv-x="733" d="M679 700h80l-148 -700h-80zM187 700h80l-57 -272q16 3 38.5 5.5q22.5 2.5 45.5 2.5q41 0 76.5 -11q35.5 -11 61.5 -33q26 -22 40.5 -54.5q14.5 -32.5 14.5 -75.5q0 -72 -25.5 -123.5q-25.5 -51.5 -68 -84q-42.5 -32.5 -98 -47.5q-55.5 -15 -114.5 -15q-24 0 -63 2q-45 4 -78 13zM203 64q39 0 75.5 12q36.5 12 64 35q27.5 23 44 58q16.5 35 16.5 82q0 58 -35 85.5q-35 27.5 -103 27.5q-17 0 -39 -3q-22 -3 -33 -6l-59 -285q14 -3 30 -4.5q16 -1.5 39 -1.5zt0 0zM336 843h300l-13 -62l-301 0z" />
-<glyph unicode="&#62753;" horiz-adv-x="639" d="M139 117q-1 -5 -1.5 -9q-0.5 -4 -0.5 -8q0 -19 10.5 -30.5q10.5 -11.5 34.5 -11.5q30 0 56.5 9.5q26.5 9.5 46.5 27q20 17.5 31.5 41.5q11.5 24 11.5 53q0 31 -17 48q-17 17 -67 17q-41 0 -79 -16zM179 303q17 5 45 9q28 4 51 4q73 0 103 -29.5q30 -29.5 30 -77.5q0 -52 -21.5 -92q-21.5 -40 -56 -67.5q-34.5 -27.5 -77.5 -41.5q-43 -14 -87 -14q-55 0 -80.5 23q-25.5 23 -25.5 62q0 19 4 35l87 386h75zM550 500h75l-106 -500h-75zM269 643h281l-13 -62l-282 0z" />
-<glyph unicode="&#62754;" horiz-adv-x="554" d="M192 392h278q1 11 1.5 23q0.5 12 0.5 23q0 95 -43 148.5q-43 53.5 -137 53.5q-45 0 -79 -10q-34 -10 -59 -23l-6 66q34 18 73.5 28.5q39.5 10.5 89.5 10.5q72 0 118.5 -24q46.5 -24 73.5 -61.5q27 -37.5 38 -84q11 -46.5 11 -91.5q0 -98 -23.5 -182.5q-23.5 -84.5 -71.5 -146.5q-48 -62 -122 -98q-74 -36 -176 -36q-46 0 -85 7q-39 7 -63 18l37 73q20 -11 54.5 -18.5q34.5 -7.5 72.5 -7.5q51 0 97.5 17q46.5 17 85 50.5q38.5 33.5 65 82q26.5 48.5 37.5 111.5l-282 0zM213 843h300l-13 -62l-301 0z" />
-<glyph unicode="&#62755;" horiz-adv-x="440" d="M124 283h199q2 10 3 20.5q1 10.5 1 22.5q0 63 -25 92.5q-25 29.5 -71 29.5q-46 0 -76.5 -10.5q-30.5 -10.5 -50.5 -22.5l-20 52q34 22 74.5 33.5q40.5 11.5 90.5 11.5q41 0 70.5 -12q29.5 -12 49 -33.5q19.5 -21.5 29 -50.5q9.5 -29 9.5 -63q0 -102 -23 -172q-23 -70 -61 -112.5q-38 -42.5 -86.5 -61.5q-48.5 -19 -98.5 -19q-101 0 -147 31l33 61q19 -13 50.5 -20.5q31.5 -7.5 62.5 -7.5q69 0 115.5 43q46.5 43 65.5 127l-207 0zM120 643h281l-13 -62l-282 0z" />
-<glyph unicode="&#62756;" horiz-adv-x="554" d="M192 392h278q1 11 1.5 23q0.5 12 0.5 23q0 95 -43 148.5q-43 53.5 -137 53.5q-45 0 -79 -10q-34 -10 -59 -23l-6 66q34 18 73.5 28.5q39.5 10.5 89.5 10.5q72 0 118.5 -24q46.5 -24 73.5 -61.5q27 -37.5 38 -84q11 -46.5 11 -91.5q0 -98 -23.5 -182.5q-23.5 -84.5 -71.5 -146.5q-48 -62 -122 -98q-74 -36 -176 -36q-46 0 -85 7q-39 7 -63 18l37 73q20 -11 54.5 -18.5q34.5 -7.5 72.5 -7.5q51 0 97.5 17q46.5 17 85 50.5q38.5 33.5 65 82q26.5 48.5 37.5 111.5l-282 0zM272 870q0 -37 18.5 -57q18.5 -20 51.5 -20q42 0 69 20.5q27 20.5 38 55.5l73 -17q-18 -54 -65 -85.5q-47 -31.5 -119 -31.5q-68 0 -100 33.5q-32 33.5 -34 81.5z" />
-<glyph unicode="&#62757;" horiz-adv-x="440" d="M124 283h199q2 10 3 20.5q1 10.5 1 22.5q0 63 -25 92.5q-25 29.5 -71 29.5q-46 0 -76.5 -10.5q-30.5 -10.5 -50.5 -22.5l-20 52q34 22 74.5 33.5q40.5 11.5 90.5 11.5q41 0 70.5 -12q29.5 -12 49 -33.5q19.5 -21.5 29 -50.5q9.5 -29 9.5 -63q0 -102 -23 -172q-23 -70 -61 -112.5q-38 -42.5 -86.5 -61.5q-48.5 -19 -98.5 -19q-101 0 -147 31l33 61q19 -13 50.5 -20.5q31.5 -7.5 62.5 -7.5q69 0 115.5 43q46.5 43 65.5 127l-207 0zM195 702q0 -47 19.5 -64.5q19.5 -17.5 49.5 -17.5q31 0 58.5 19q27.5 19 44.5 62l54 -19q-20 -58 -67.5 -89q-47.5 -31 -103.5 -31q-25 0 -47.5 6q-22.5 6 -39.5 19q-17 13 -27 33.5q-10 20.5 -10 48.5l0 9z" />
-<glyph unicode="&#62758;" horiz-adv-x="556" d="M491 29q-35 -23 -78 -32q-43 -9 -93 -9q-59 0 -105 21.5q-46 21.5 -78 60q-32 38.5 -49 90.5q-17 52 -17 114q0 113 33 195.5q33 82.5 87 136.5q54 54 121.5 80q67.5 26 136.5 26q57 0 98.5 -8q41.5 -8 64.5 -19l-36 -73q-20 11 -58 18.5q-38 7.5 -80 7.5q-46 0 -88.5 -16.5q-42.5 -16.5 -78.5 -47.5q-36 -31 -62.5 -75.5q-26.5 -44.5 -40.5 -101.5l300 0l-16 -74h-296q-1 -11 -1 -20q0 -9 0 -20q0 -48 12.5 -88.5q12.5 -40.5 36 -70q23.5 -29.5 58 -46q34.5 -16.5 78.5 -16.5q47 0 83.5 10.5q36.5 10.5 60.5 24.5zM301 794q0 20 14 33.5q14 13.5 37 13.5q23 0 36.5 -13.5q13.5 -13.5 13.5 -33.5q0 -20 -13.5 -33q-13.5 -13 -36.5 -13q-23 0 -37 13q-14 13 -14 33zt0 0zM484 794q0 20 13.5 33.5q13.5 13.5 36.5 13.5q23 0 37 -13.5q14 -13.5 14 -33.5q0 -20 -14 -33q-14 -13 -37 -13q-23 0 -36.5 13t-13.5 33z" />
-<glyph unicode="&#62759;" horiz-adv-x="434" d="M390 43q-36 -29 -80 -42q-44 -13 -88 -13q-41 0 -73 13.5q-32 13.5 -54 37.5q-22 24 -33.5 56q-11.5 32 -11.5 70q0 88 25 153.5q25 65.5 65.5 108.5q40.5 43 92 64q51.5 21 105.5 21q45 0 68.5 -7.5q23.5 -7.5 40.5 -15.5l-28 -58q-21 9 -39.5 13q-18.5 4 -47.5 4q-65 0 -115 -43q-50 -43 -73 -116l226 0l-14 -64h-224q-2 -10 -2 -19.5q0 -9.5 0 -19.5q0 -27 5.5 -51.5q5.5 -24.5 19.5 -42.5q14 -18 38 -29q24 -11 62 -11q35 0 66 13.5q31 13.5 51 27.5zM196 633q0 22 12.5 36.5q12.5 14.5 33.5 14.5q21 0 34 -14.5q13 -14.5 13 -36.5q0 -20 -13 -34.5q-13 -14.5 -34 -14.5q-21 0 -33.5 14.5q-12.5 14.5 -12.5 34.5zt0 0zM379 634q0 21 12.5 35.5q12.5 14.5 33.5 14.5q22 0 34.5 -14.5q12.5 -14.5 12.5 -35.5q0 -21 -12.5 -35.5q-12.5 -14.5 -34.5 -14.5q-21 0 -33.5 14.5t-12.5 35.5z" />
-<glyph unicode="&#62760;" horiz-adv-x="543" d="M423 0h-80l64 304l-97 -21l-227 -283h-96l200 251l67 44q-19 6 -40.5 19q-21.5 13 -39.5 33.5q-18 20.5 -30 50q-12 29.5 -12 70.5q0 69 26.5 115q26.5 46 68.5 74q42 28 94.5 39.5q52.5 11.5 104.5 11.5q32 0 71 -3q39 -3 72 -12zM407 636q-35 0 -69 -8q-34 -8 -61 -26.5q-27 -18.5 -44 -50q-17 -31.5 -17 -77.5q0 -57 35.5 -89q35.5 -32 100.5 -32h65l59 277q-12 3 -28.5 4.5q-16.5 1.5 -40.5 1.5zt0 0zM285 843h300l-13 -62l-301 0z" />
-<glyph unicode="&#62761;" horiz-adv-x="466" d="M319 206l-77 -12l-161 -194h-97l146 171l49 37q-40 7 -67 33.5q-27 26.5 -27 74.5q0 46 19 82.5q19 36.5 51 61.5q32 25 74.5 38.5q42.5 13.5 89.5 13.5q20 0 40 -2.5q20 -2.5 38 -6q18 -3.5 32 -8q14 -4.5 23 -7.5l-102 -488h-75zM369 435q-5 5 -22 9q-17 4 -46 4q-60 0 -98 -33.5q-38 -33.5 -38 -89.5q0 -73 104 -73q1 0 3.5 0q2.5 0 8.5 0q6 0 17 0.5q11 0.5 31 1.5zM188 643h281l-13 -62l-282 0z" />
-<glyph unicode="&#62762;" horiz-adv-x="543" d="M423 0h-80l64 304l-97 -21l-227 -283h-96l200 251l67 44q-19 6 -40.5 19q-21.5 13 -39.5 33.5q-18 20.5 -30 50q-12 29.5 -12 70.5q0 69 26.5 115q26.5 46 68.5 74q42 28 94.5 39.5q52.5 11.5 104.5 11.5q32 0 71 -3q39 -3 72 -12zM407 636q-35 0 -69 -8q-34 -8 -61 -26.5q-27 -18.5 -44 -50q-17 -31.5 -17 -77.5q0 -57 35.5 -89q35.5 -32 100.5 -32h65l59 277q-12 3 -28.5 4.5q-16.5 1.5 -40.5 1.5zt0 0zM354 870q0 -37 18.5 -57q18.5 -20 51.5 -20q42 0 69 20.5q27 20.5 38 55.5l73 -17q-18 -54 -65 -85.5q-47 -31.5 -119 -31.5q-68 0 -100 33.5q-32 33.5 -34 81.5z" />
-<glyph unicode="&#62763;" horiz-adv-x="466" d="M319 206l-77 -12l-161 -194h-97l146 171l49 37q-40 7 -67 33.5q-27 26.5 -27 74.5q0 46 19 82.5q19 36.5 51 61.5q32 25 74.5 38.5q42.5 13.5 89.5 13.5q20 0 40 -2.5q20 -2.5 38 -6q18 -3.5 32 -8q14 -4.5 23 -7.5l-102 -488h-75zM369 435q-5 5 -22 9q-17 4 -46 4q-60 0 -98 -33.5q-38 -33.5 -38 -89.5q0 -73 104 -73q1 0 3.5 0q2.5 0 8.5 0q6 0 17 0.5q11 0.5 31 1.5zM258 702q0 -47 19.5 -64.5q19.5 -17.5 49.5 -17.5q31 0 58.5 19q27.5 19 44.5 62l54 -19q-20 -58 -67.5 -89q-47.5 -31 -103.5 -31q-25 0 -47.5 6q-22.5 6 -39.5 19q-17 13 -27 33.5q-10 20.5 -10 48.5l0 9z" />
-<glyph unicode="&#62764;" horiz-adv-x="861" d="M204 395h117q47 163 131 240q84 77 190 77q99 0 157 -57.5q58 -57.5 58 -174.5q0 -99 -23.5 -188.5q-23.5 -89.5 -68.5 -157q-45 -67.5 -110 -107q-65 -39.5 -148 -39.5q-53 0 -91 18.5q-38 18.5 -62.5 51.5q-24.5 33 -36 78.5q-11.5 45.5 -11.5 99.5q0 41 6 85l-125 0l-67 -321h-80l148 700h80zM388 233q0 -35 7 -66.5q7 -31.5 23.5 -55q16.5 -23.5 43 -37.5q26.5 -14 66.5 -14q53 0 98 33.5q45 33.5 77.5 89.5q32.5 56 51 130.5q18.5 74.5 18.5 156.5q0 77 -34.5 123.5q-34.5 46.5 -99.5 46.5q-55 0 -101 -33q-46 -33 -79.5 -88.5q-33.5 -55.5 -52 -129.5q-18.5 -74 -18.5 -156zt0 0zM417 843h300l-13 -62l-301 0z" />
-<glyph unicode="&#62765;" horiz-adv-x="680" d="M265 289q14 51 36.5 92q22.5 41 52.5 70q30 29 66 45q36 16 78 16q43 0 71.5 -13.5q28.5 -13.5 46 -37q17.5 -23.5 25 -54q7.5 -30.5 7.5 -63.5q0 -75 -19.5 -140q-19.5 -65 -53.5 -113q-34 -48 -79.5 -75.5q-45.5 -27.5 -96.5 -27.5q-45 0 -74 14.5q-29 14.5 -46 38.5q-17 24 -23.5 54q-6.5 30 -6.5 61q0 18 1.5 35q1.5 17 3.5 34l-97 0l-47 -225h-75l106 500h75l-44 -211zM324 174q0 -59 18 -90.5q18 -31.5 66 -31.5q31 0 60 23.5q29 23.5 51 63.5q22 40 35.5 91.5q13.5 51.5 13.5 107.5q0 51 -16.5 80.5q-16.5 29.5 -67.5 29.5q-33 0 -62 -22.5q-29 -22.5 -51 -60.5q-22 -38 -34.5 -87.5q-12.5 -49.5 -12.5 -103.5zt0 0zM295 643h281l-13 -62l-282 0z" />
-<glyph unicode="&#62766;" horiz-adv-x="861" d="M204 395h117q47 163 131 240q84 77 190 77q99 0 157 -57.5q58 -57.5 58 -174.5q0 -99 -23.5 -188.5q-23.5 -89.5 -68.5 -157q-45 -67.5 -110 -107q-65 -39.5 -148 -39.5q-53 0 -91 18.5q-38 18.5 -62.5 51.5q-24.5 33 -36 78.5q-11.5 45.5 -11.5 99.5q0 41 6 85l-125 0l-67 -321h-80l148 700h80zM388 233q0 -35 7 -66.5q7 -31.5 23.5 -55q16.5 -23.5 43 -37.5q26.5 -14 66.5 -14q53 0 98 33.5q45 33.5 77.5 89.5q32.5 56 51 130.5q18.5 74.5 18.5 156.5q0 77 -34.5 123.5q-34.5 46.5 -99.5 46.5q-55 0 -101 -33q-46 -33 -79.5 -88.5q-33.5 -55.5 -52 -129.5q-18.5 -74 -18.5 -156zt0 0zM459 870q0 -37 18.5 -57q18.5 -20 51.5 -20q42 0 69 20.5q27 20.5 38 55.5l73 -17q-18 -54 -65 -85.5q-47 -31.5 -119 -31.5q-68 0 -100 33.5q-32 33.5 -34 81.5z" />
-<glyph unicode="&#62767;" horiz-adv-x="680" d="M265 289q14 51 36.5 92q22.5 41 52.5 70q30 29 66 45q36 16 78 16q43 0 71.5 -13.5q28.5 -13.5 46 -37q17.5 -23.5 25 -54q7.5 -30.5 7.5 -63.5q0 -75 -19.5 -140q-19.5 -65 -53.5 -113q-34 -48 -79.5 -75.5q-45.5 -27.5 -96.5 -27.5q-45 0 -74 14.5q-29 14.5 -46 38.5q-17 24 -23.5 54q-6.5 30 -6.5 61q0 18 1.5 35q1.5 17 3.5 34l-97 0l-47 -225h-75l106 500h75l-44 -211zM324 174q0 -59 18 -90.5q18 -31.5 66 -31.5q31 0 60 23.5q29 23.5 51 63.5q22 40 35.5 91.5q13.5 51.5 13.5 107.5q0 51 -16.5 80.5q-16.5 29.5 -67.5 29.5q-33 0 -62 -22.5q-29 -22.5 -51 -60.5q-22 -38 -34.5 -87.5q-12.5 -49.5 -12.5 -103.5zt0 0zM360 702q0 -47 19.5 -64.5q19.5 -17.5 49.5 -17.5q31 0 58.5 19q27.5 19 44.5 62l54 -19q-20 -58 -67.5 -89q-47.5 -31 -103.5 -31q-25 0 -47.5 6q-22.5 6 -39.5 19q-17 13 -27 33.5q-10 20.5 -10 48.5l0 9z" />
-<glyph unicode="&#62768;" horiz-adv-x="624" d="M525 626h-196q-46 -199 -88.5 -331.5q-42.5 -132.5 -89.5 -207.5q-31 -49 -64.5 -70.5q-33.5 -21.5 -70.5 -21.5q-17 0 -32 2.5q-15 2.5 -26 7.5l27 72q10 -3 22 -3q19 0 38.5 12q19.5 12 39.5 42q18 27 39 72q21 45 44 113.5q23 68.5 48 163.5q25 95 52 223l78 0h274l-133 -626h87l-43 -203h-54l12 129h-17l-80 0z" />
-<glyph unicode="&#62769;" horiz-adv-x="509" d="M388 436h-134q-26 -107 -49 -189q-23 -82 -49.5 -137.5q-26.5 -55.5 -58.5 -84.5q-32 -29 -77 -29q-17 0 -30.5 2q-13.5 2 -22.5 7l23 64q12 -3 23 -3q22 0 41.5 16q19.5 16 40.5 63q21 47 45.5 132q24.5 85 57.5 223l72 0h206l-93 -436h77l-52 -191h-61l34 127h-11l-75 0z" />
-<glyph unicode="&#62770;" horiz-adv-x="648" d="M545 468l24 81h-3l-59 -84l-416 -465h-51l149 700h80l-101 -476l-25 -76h4l59 82l417 470h51l-148 -700q-15 -73 -28.5 -107.5q-13.5 -34.5 -33 -58q-19.5 -23.5 -46 -35q-26.5 -11.5 -62.5 -11.5q-8 0 -15.5 0.5q-7.5 0.5 -15.5 1.5l15 70q28 0 45 7q17 7 27.5 23.5q10.5 16.5 17.5 43.5q7 27 16 66zM380 870q0 -37 18.5 -57q18.5 -20 51.5 -20q42 0 69 20.5q27 20.5 38 55.5l73 -17q-18 -54 -65 -85.5q-47 -31.5 -119 -31.5q-68 0 -100 33.5q-32 33.5 -34 81.5z" />
-<glyph unicode="&#62771;" horiz-adv-x="512" d="M352 95h-4q-14 -20 -33.5 -39q-19.5 -19 -43.5 -34q-24 -15 -51 -24.5q-27 -9.5 -57 -9.5q-22 0 -40.5 5q-18.5 5 -32.5 17.5q-14 12.5 -22 33q-8 20.5 -8 52.5q0 35 10 79l68 325h76l-70 -333q-6 -27 -6 -50q0 -28 10.5 -45.5q10.5 -17.5 39.5 -17.5q24 0 49.5 12q25.5 12 48.5 31q23 19 42 42.5q19 23.5 32 45.5l62 315h75l-92 -500q-36 -213 -173 -212q-7 0 -14 0.5q-7 0.5 -14 1.5l15 70q27 0 44.5 8q17.5 8 29.5 25.5q12 17.5 20.5 44q8.5 26.5 16.5 61.5zM271 702q0 -47 19.5 -64.5q19.5 -17.5 49.5 -17.5q31 0 58.5 19q27.5 19 44.5 62l54 -19q-20 -58 -67.5 -89q-47.5 -31 -103.5 -31q-25 0 -47.5 6q-22.5 6 -39.5 19q-17 13 -27 33.5q-10 20.5 -10 48.5l0 9z" />
-<glyph unicode="&#62772;" horiz-adv-x="651" d="M71 256q0 92 25 175q25 83 71.5 145.5q46.5 62.5 112 99q65.5 36.5 145.5 36.5q48 0 89 -14.5q41 -14.5 70.5 -46q29.5 -31.5 46 -81.5q16.5 -50 16.5 -122q0 -94 -25 -177.5q-25 -83.5 -70 -146.5q-45 -63 -107.5 -99.5q-62.5 -36.5 -137.5 -36.5q-118 0 -177 68.5q-59 68.5 -59 199.5zt0 0zM155 257q0 -94 39 -145.5q39 -51.5 115 -51.5q56 0 102.5 31q46.5 31 80.5 84q34 53 52.5 123q18.5 70 18.5 148q0 58 -13 96q-13 38 -34.5 59.5q-21.5 21.5 -49 30q-27.5 8.5 -55.5 8.5q-57 0 -104 -31.5q-47 -31.5 -80.5 -84.5q-33.5 -53 -52.5 -122.5q-19 -69.5 -19 -144.5zt0 0zM394 796q0 23 17 38q17 15 42 15q26 0 43 -15q17 -15 17 -38q0 -22 -17 -37q-17 -15 -43 -15q-25 0 -42 15t-17 37z" />
-<glyph unicode="&#62773;" horiz-adv-x="498" d="M50 156q0 79 20.5 144.5q20.5 65.5 56.5 112.5q36 47 83.5 73q47.5 26 101.5 26q42 0 71.5 -13.5q29.5 -13.5 48 -37q18.5 -23.5 26.5 -54q8 -30.5 8 -63.5q0 -75 -19.5 -140q-19.5 -65 -54 -113q-34.5 -48 -80.5 -75.5q-46 -27.5 -100 -27.5q-45 0 -75.5 14.5q-30.5 14.5 -50 38.5q-19.5 24 -28 54q-8.5 30 -8.5 61zt0 0zM130 174q0 -59 22 -90.5q22 -31.5 70 -31.5q33 0 62.5 23.5q29.5 23.5 52 63.5q22.5 40 36 91.5q13.5 51.5 13.5 107.5q0 51 -18.5 80.5q-18.5 29.5 -70.5 29.5q-33 0 -63 -22.5q-30 -22.5 -53.5 -60.5q-23.5 -38 -37 -87.5q-13.5 -49.5 -13.5 -103.5zt0 0zM293 653q0 23 15.5 39q15.5 16 38.5 16q23 0 39 -16q16 -16 16 -39q0 -23 -16 -38.5q-16 -15.5 -39 -15.5q-23 0 -38.5 15.5t-15.5 38.5z" />
-<glyph unicode="&#62774;" horiz-adv-x="733" d="M679 700h80l-148 -700h-80zM187 700h80l-57 -272q16 3 38.5 5.5q22.5 2.5 45.5 2.5q41 0 76.5 -11q35.5 -11 61.5 -33q26 -22 40.5 -54.5q14.5 -32.5 14.5 -75.5q0 -72 -25.5 -123.5q-25.5 -51.5 -68 -84q-42.5 -32.5 -98 -47.5q-55.5 -15 -114.5 -15q-24 0 -63 2q-45 4 -78 13zM203 64q39 0 75.5 12q36.5 12 64 35q27.5 23 44 58q16.5 35 16.5 82q0 58 -35 85.5q-35 27.5 -103 27.5q-17 0 -39 -3q-22 -3 -33 -6l-59 -285q14 -3 30 -4.5q16 -1.5 39 -1.5zt0 0zM416 870q0 -37 18.5 -57q18.5 -20 51.5 -20q42 0 69 20.5q27 20.5 38 55.5l73 -17q-18 -54 -65 -85.5q-47 -31.5 -119 -31.5q-68 0 -100 33.5q-32 33.5 -34 81.5z" />
-<glyph unicode="&#62775;" horiz-adv-x="639" d="M139 117q-1 -5 -1.5 -9q-0.5 -4 -0.5 -8q0 -19 10.5 -30.5q10.5 -11.5 34.5 -11.5q30 0 56.5 9.5q26.5 9.5 46.5 27q20 17.5 31.5 41.5q11.5 24 11.5 53q0 31 -17 48q-17 17 -67 17q-41 0 -79 -16zM179 303q17 5 45 9q28 4 51 4q73 0 103 -29.5q30 -29.5 30 -77.5q0 -52 -21.5 -92q-21.5 -40 -56 -67.5q-34.5 -27.5 -77.5 -41.5q-43 -14 -87 -14q-55 0 -80.5 23q-25.5 23 -25.5 62q0 19 4 35l87 386h75zM550 500h75l-106 -500h-75zM337 702q0 -47 19.5 -64.5q19.5 -17.5 49.5 -17.5q31 0 58.5 19q27.5 19 44.5 62l54 -19q-20 -58 -67.5 -89q-47.5 -31 -103.5 -31q-25 0 -47.5 6q-22.5 6 -39.5 19q-17 13 -27 33.5q-10 20.5 -10 48.5l0 9z" />
-<glyph unicode="&#62776;" horiz-adv-x="514" d="M368 331q-11 0 -21 -0.5q-10 -0.5 -21 -1.5q-32 -2 -65 -8q-33 -6 -60 -22.5q-27 -16.5 -44 -45.5q-17 -29 -17 -75q0 -60 38.5 -89q38.5 -29 106.5 -29q40 0 79.5 10.5q39.5 10.5 62.5 24.5l10 -63q-26 -17 -72.5 -30.5q-46.5 -13.5 -109.5 -13.5q-23 0 -57 7q-34 7 -65.5 26.5q-31.5 19.5 -54 54q-22.5 34.5 -22.5 89.5q0 50 16.5 88q16.5 38 43 64q26.5 26 60 40q33.5 14 67.5 17l0 4q-42 13 -67 47.5q-25 34.5 -25 85.5q0 52 23 90q23 38 59 62.5q36 24.5 81.5 36.5q45.5 12 90.5 12q26 0 51 -3.5q25 -3.5 47 -8.5q22 -5 38.5 -11.5q16.5 -6.5 25.5 -13.5l-37 -67q-23 12 -58 22q-35 10 -70 10q-32 0 -62 -7.5q-30 -7.5 -53.5 -23q-23.5 -15.5 -37.5 -39.5q-14 -24 -14 -57q0 -28 8.5 -47q8.5 -19 23.5 -32q15 -13 35 -20q20 -7 43 -11q15 -2 36.5 -2.5q21.5 -0.5 39.5 -0.5h14l-14 -69zM268 794q0 20 14 33.5q14 13.5 37 13.5q23 0 36.5 -13.5q13.5 -13.5 13.5 -33.5q0 -20 -13.5 -33q-13.5 -13 -36.5 -13q-23 0 -37 13q-14 13 -14 33zt0 0zM451 794q0 20 13.5 33.5q13.5 13.5 36.5 13.5q23 0 37 -13.5q14 -13.5 14 -33.5q0 -20 -14 -33q-14 -13 -37 -13q-23 0 -36.5 13t-13.5 33z" />
-<glyph unicode="&#62777;" horiz-adv-x="430" d="M256 225q-33 0 -58.5 -8.5q-25.5 -8.5 -43.5 -22.5q-18 -14 -27.5 -31q-9.5 -17 -9.5 -35q0 -35 21.5 -52q21.5 -17 79.5 -17q35 0 68 9.5q33 9.5 58 23.5l9 -63q-26 -14 -61.5 -26q-35.5 -12 -83.5 -12q-89 0 -130 32.5q-41 32.5 -41 96.5q0 45 30.5 84q30.5 39 99.5 60l0 4q-29 12 -45 35q-16 23 -16 60q0 28 12.5 54.5q12.5 26.5 36 46q23.5 19.5 58.5 31.5q35 12 80 12q54 0 89.5 -13q35.5 -13 60.5 -30l-35 -57q-15 11 -44 23.5q-29 12.5 -74 12.5q-22 0 -41.5 -6q-19.5 -6 -34.5 -17.5q-15 -11.5 -24 -27.5q-9 -16 -9 -36q0 -32 21 -50.5q21 -18.5 56 -18.5h66l-13 -62zM171 633q0 22 12.5 36.5q12.5 14.5 33.5 14.5q21 0 34 -14.5q13 -14.5 13 -36.5q0 -20 -13 -34.5q-13 -14.5 -34 -14.5q-21 0 -33.5 14.5q-12.5 14.5 -12.5 34.5zt0 0zM354 634q0 21 12.5 35.5q12.5 14.5 33.5 14.5q22 0 34.5 -14.5q12.5 -14.5 12.5 -35.5q0 -21 -12.5 -35.5q-12.5 -14.5 -34.5 -14.5q-21 0 -33.5 14.5t-12.5 35.5z" />
-<glyph unicode="&#62778;" horiz-adv-x="277" d="M210 700h80l-148 -700h-80zM209 796q0 23 17 38q17 15 42 15q26 0 43 -15q17 -15 17 -38q0 -22 -17 -37q-17 -15 -43 -15q-25 0 -42 15t-17 37z" />
-<glyph unicode="&#62779;" horiz-adv-x="259" d="M160 500h75l-106 -500l-75 0z" />
-<glyph unicode="&#62780;" horiz-adv-x="492" d="M189 700h361l-15 -74h-283l-51 -239h264l-15 -74h-264l-66 -313l-80 0z" />
-<glyph unicode="&#62781;" horiz-adv-x="422" d="M404 436h-201l-35 -162h194l-15 -64h-192l-45 -210h-75l106 500l276 0z" />
-<glyph unicode="&#62782;" horiz-adv-x="544" d="M480 29q-31 -20 -65 -29.5q-34 -9.5 -77 -11.5l-31 -167h-74l42 171q-48 7 -86 31.5q-38 24.5 -64.5 61.5q-26.5 37 -40 85q-13.5 48 -13.5 104q0 113 33 195.5q33 82.5 87 136.5q54 54 121.5 80q67.5 26 136.5 26q57 0 93 -8q36 -8 59 -19l-36 -73q-20 11 -52.5 18.5q-32.5 7.5 -74.5 7.5q-56 0 -107.5 -24.5q-51.5 -24.5 -90.5 -70.5q-39 -46 -62 -112q-23 -66 -23 -148q0 -48 12.5 -88.5q12.5 -40.5 36 -70q23.5 -29.5 58 -46q34.5 -16.5 78.5 -16.5q47 0 78 10.5q31 10.5 56 24.5z" />
-<glyph unicode="&#62783;" horiz-adv-x="420" d="M365 43q-26 -21 -60.5 -34.5q-34.5 -13.5 -66.5 -18.5l-31 -169h-74l41 170q-37 6 -61 22.5q-24 16.5 -38 39q-14 22.5 -19.5 48q-5.5 25.5 -5.5 47.5q0 85 23 152.5q23 67.5 61.5 114.5q38.5 47 88.5 72q50 25 103 25q38 0 62.5 -7q24.5 -7 44.5 -16l-28 -62q-17 10 -42 15.5q-25 5.5 -54 5.5q-34 0 -66.5 -23q-32.5 -23 -57.5 -60.5q-25 -37.5 -40 -86q-15 -48.5 -15 -99.5q0 -65 27 -94.5q27 -29.5 73 -29.5q30 0 63 12q33 12 53 26z" />
-<glyph unicode="&#62784;" horiz-adv-x="622" d="M189 700q38 5 86 6.5q48 1.5 87 1.5q59 0 107 -15.5q48 -15.5 81.5 -47.5q33.5 -32 51.5 -81q18 -49 18 -115q0 -44 -8 -95.5q-8 -51.5 -26.5 -102q-18.5 -50.5 -49.5 -97.5q-31 -47 -77 -83.5q-46 -36.5 -108 -58q-62 -21.5 -143 -21.5q-15 0 -39.5 0.5q-24.5 0.5 -48.5 1.5q-70 4 -80 6zM356 634q-12 0 -27 -0.5q-15 -0.5 -29 -1q-14 -0.5 -27 -1.5q-13 -1 -20 -2l-118 -560q4 -1 16 -1.5q12 -0.5 25.5 -1q13.5 -0.5 26 -1q12.5 -0.5 17.5 -0.5q87 0 147 36q60 36 97.5 91q37.5 55 54.5 121q17 66 17 125q0 45 -10 81q-10 36 -31.5 61.5q-21.5 25.5 -55.5 39.5q-34 14 -83 14zt0 0zM451 870h116l-5 -21l-175 -97l-73 0z" />
-<glyph unicode="&#62785;" horiz-adv-x="509" d="M419 172q-8 -39 -12 -73q-4 -34 -4 -63q0 -11 0.5 -20q0.5 -9 1.5 -18l-50 0l-14 87h-4q-12 -17 -30 -34.5q-18 -17.5 -40 -31.5q-22 -14 -46.5 -22.5q-24.5 -8.5 -50.5 -8.5q-55 0 -87.5 40.5q-32.5 40.5 -32.5 128.5q0 59 17 121.5q17 62.5 50 113.5q33 51 82.5 84q49.5 33 114.5 33q18 0 31 -1q13 -1 24.5 -3q11.5 -2 21.5 -5.5q10 -3.5 21 -7.5l44 208h75zM198 52q21 0 43 11.5q22 11.5 41.5 28.5q19.5 17 35 36.5q15.5 19.5 24.5 36.5l56 260q-17 11 -38.5 15.5q-21.5 4.5 -56.5 4.5q-40 0 -72 -24.5q-32 -24.5 -54.5 -65.5q-22.5 -41 -34.5 -94q-12 -53 -12 -109q0 -41 16 -70.5q16 -29.5 52 -29.5zt0 0zM612 700h84l-5 -21l-123 -128l-44 0z" />
-<glyph unicode="&#62786;" horiz-adv-x="639" d="M505 321h-318l-67 -321h-80l148 700h80l-64 -305h317l64 305h80l-148 -700h-80zM497 870h116l-5 -21l-175 -97l-73 0z" />
-<glyph unicode="&#62787;" horiz-adv-x="529" d="M341 0l60 285q6 30 10 53.5q4 23.5 4 41.5q0 37 -15 52.5q-15 15.5 -47 15.5q-26 0 -53 -13.5q-27 -13.5 -52 -34.5q-25 -21 -44.5 -47q-19.5 -26 -29.5 -50l-63 -303h-75l148 700h75l-62 -286h4q13 16 31.5 33q18.5 17 42.5 31.5q24 14.5 52 24q28 9.5 61 9.5q49 0 77 -23.5q28 -23.5 28 -85.5q0 -42 -13 -101l-64 -302zM421 720h84l-5 -21l-123 -128l-44 0z" />
-<glyph unicode="&#62788;" horiz-adv-x="492" d="M434 0h-316h-78l148 700h80l-133 -626h314zM394 700h84l-5 -21l-123 -128l-44 0z" />
-<glyph unicode="&#62789;" horiz-adv-x="270" d="M133 119q-3 -17 -3 -28q0 -19 6.5 -27.5q6.5 -8.5 17.5 -8.5q20 0 33.5 2.5q13.5 2.5 32.5 9.5l0 -57q-9 -5 -21 -8.5q-12 -3.5 -24.5 -5.5q-12.5 -2 -25 -3.5q-12.5 -1.5 -22.5 -1.5q-35 0 -56 16q-21 16 -21 59q0 20 6 49l124 585h75zM341 700h84l-5 -21l-123 -128l-44 0z" />
-<glyph unicode="&#62790;" horiz-adv-x="528" d="M602 626h-207l-132 -626h-80l132 626h-205l15 74h492zM470 870h116l-5 -21l-175 -97l-73 0z" />
-<glyph unicode="&#62791;" horiz-adv-x="313" d="M71 500h74l21 99l80 23l-26 -122h131l-15 -64h-130l-63 -302q-2 -12 -3.5 -22q-1.5 -10 -1.5 -18q0 -24 11 -33q11 -9 33 -9q24 0 44 6q20 6 40 18l0 -61q-21 -12 -54 -19.5q-33 -7.5 -63 -7.5q-91 0 -91 83q0 17 5 42l68 323h-75zM375 700h84l-5 -21l-123 -128l-44 0z" />
-<glyph unicode="&#62792;" horiz-adv-x="541" d="M253 221v-107h2l45 109l265 477h86l-402 -711h-37l-108 711h82zM465 870h116l-5 -21l-175 -97l-73 0z" />
-<glyph unicode="&#62793;" horiz-adv-x="447" d="M192 207l9 -95h2l43 97l169 291h86l-312 -511h-32l-97 511h80zM350 720h84l-5 -21l-123 -128l-44 0z" />
-<glyph unicode="&#62794;" horiz-adv-x="515" d="M164 331l15 69h14q18 0 44.5 1.5q26.5 1.5 42.5 3.5q27 3 55 12.5q28 9.5 50.5 26.5q22.5 17 37 42q14.5 25 14.5 59q0 45 -32 70q-32 25 -87 25q-51 0 -85 -8.5q-34 -8.5 -62 -18.5l-8 65q23 11 69.5 22.5q46.5 11.5 107.5 11.5q38 0 71 -9.5q33 -9.5 57.5 -27.5q24.5 -18 38.5 -45q14 -27 14 -63q0 -43 -13.5 -76q-13.5 -33 -36 -57q-22.5 -24 -52.5 -38.5q-30 -14.5 -63 -19.5l0 -4q21 -5 41.5 -15.5q20.5 -10.5 37 -28.5q16.5 -18 26.5 -44.5q10 -26.5 10 -63.5q0 -66 -27 -110.5q-27 -44.5 -70 -71.5q-43 -27 -95.5 -38.5q-52.5 -11.5 -104.5 -11.5q-63 0 -103.5 7.5q-40.5 7.5 -64.5 18.5l36 73q20 -11 57 -19q37 -8 93 -8q34 0 69 8.5q35 8.5 63 27.5q28 19 45.5 49.5q17.5 30.5 17.5 74.5q0 30 -10.5 50q-10.5 20 -28.5 33q-18 13 -41 19q-23 6 -47 8q-11 1 -22 1q-11 0 -22 0z" />
-<glyph unicode="&#62795;" horiz-adv-x="411" d="M101 152l15 64h70q18 -1 40 10.5q22 11.5 42 30q20 18.5 33.5 43.5q13.5 25 12.5 52q1 48 -23 68.5q-24 20.5 -70 20.5q-39 0 -72.5 -12q-33.5 -12 -53.5 -23l-10 59q34 17 75.5 29.5q41.5 12.5 93.5 12.5q30 0 55.5 -8q25.5 -8 44.5 -24q19 -16 29.5 -40q10.5 -24 10.5 -56q-1 -67 -36 -113.5q-35 -46.5 -86 -67.5l-1 -4q89 -26 89 -124q0 -68 -25.5 -120.5q-25.5 -52.5 -66 -87.5q-40.5 -35 -90 -53q-49.5 -18 -97.5 -18q-50 0 -81 9q-31 9 -54 22l36 66q20 -13 48.5 -20.5q28.5 -7.5 52.5 -7.5q32 0 67 12.5q35 12.5 64 37q29 24.5 48 61.5q19 37 19 87q0 48 -36 71.5q-36 23.5 -99 22.5z" />
-<glyph unicode="&#62796;" horiz-adv-x="515" d="M164 331l15 69h14q18 0 44.5 1.5q26.5 1.5 42.5 3.5q27 3 55 12.5q28 9.5 50.5 26.5q22.5 17 37 42q14.5 25 14.5 59q0 45 -32 70q-32 25 -87 25q-51 0 -85 -8.5q-34 -8.5 -62 -18.5l-8 65q23 11 69.5 22.5q46.5 11.5 107.5 11.5q38 0 71 -9.5q33 -9.5 57.5 -27.5q24.5 -18 38.5 -45q14 -27 14 -63q0 -43 -13.5 -76q-13.5 -33 -36 -57q-22.5 -24 -52.5 -38.5q-30 -14.5 -63 -19.5l0 -4q21 -5 41.5 -15.5q20.5 -10.5 37 -28.5q16.5 -18 26.5 -44.5q10 -26.5 10 -63.5q0 -66 -27 -110.5q-27 -44.5 -70 -71.5q-43 -27 -95.5 -38.5q-52.5 -11.5 -104.5 -11.5q-63 0 -103.5 7.5q-40.5 7.5 -64.5 18.5l36 73q20 -11 57 -19q37 -8 93 -8q34 0 69 8.5q35 8.5 63 27.5q28 19 45.5 49.5q17.5 30.5 17.5 74.5q0 30 -10.5 50q-10.5 20 -28.5 33q-18 13 -41 19q-23 6 -47 8q-11 1 -22 1q-11 0 -22 0zM368 746h-47l-97 103l3 21h67l46 -50l9 -34l24 33l71 51h76l-4 -22z" />
-<glyph unicode="&#62797;" horiz-adv-x="411" d="M101 152l15 64h70q18 -1 40 10.5q22 11.5 42 30q20 18.5 33.5 43.5q13.5 25 12.5 52q1 48 -23 68.5q-24 20.5 -70 20.5q-39 0 -72.5 -12q-33.5 -12 -53.5 -23l-10 59q34 17 75.5 29.5q41.5 12.5 93.5 12.5q30 0 55.5 -8q25.5 -8 44.5 -24q19 -16 29.5 -40q10.5 -24 10.5 -56q-1 -67 -36 -113.5q-35 -46.5 -86 -67.5l-1 -4q89 -26 89 -124q0 -68 -25.5 -120.5q-25.5 -52.5 -66 -87.5q-40.5 -35 -90 -53q-49.5 -18 -97.5 -18q-50 0 -81 9q-31 9 -54 22l36 66q20 -13 48.5 -20.5q28.5 -7.5 52.5 -7.5q32 0 67 12.5q35 12.5 64 37q29 24.5 48 61.5q19 37 19 87q0 48 -36 71.5q-36 23.5 -99 22.5zM252 550h-35l-71 182h72l23 -66l7 -58l34 58l56 66l70 0z" />
-<glyph unicode="&#63020;" horiz-adv-x="186" d="M215 453q0 -29 -14.5 -43.5q-14.5 -14.5 -39.5 -14.5q-26 0 -39.5 18q-13.5 18 -13.5 41q0 34 13 60.5q13 26.5 31 45q18 18.5 37 29q19 10.5 31 14.5l15 -35q-23 -11 -40 -30.5q-17 -19.5 -21 -45.5q3 1 9 1q15 0 23.5 -12t8.5 -28z" />
-<glyph unicode="&#63021;" horiz-adv-x="186" d="M130 483q0 12 5.5 21.5q5.5 9.5 13.5 15.5q8 6 17.5 9.5q9.5 3.5 18.5 3.5q30 0 40.5 -15q10.5 -15 10.5 -43q0 -34 -13 -60q-13 -26 -31 -44.5q-18 -18.5 -37 -30q-19 -11.5 -31 -15.5l-16 34q23 12 40 31q17 19 22 46q-40 2 -40 47z" />
-<glyph unicode="&#63022;" horiz-adv-x="325" d="M215 453q0 -29 -14.5 -43.5q-14.5 -14.5 -39.5 -14.5q-26 0 -39.5 18q-13.5 18 -13.5 41q0 34 13 60.5q13 26.5 31 45q18 18.5 37 29q19 10.5 31 14.5l15 -35q-23 -11 -40 -30.5q-17 -19.5 -21 -45.5q3 1 9 1q15 0 23.5 -12q8.5 -12 8.5 -28zt0 0zM354 453q0 -29 -14.5 -43.5q-14.5 -14.5 -39.5 -14.5q-26 0 -39.5 18q-13.5 18 -13.5 41q0 34 13 60.5q13 26.5 31 45q18 18.5 37 29q19 10.5 31 14.5l15 -35q-23 -11 -40 -30.5q-17 -19.5 -21 -45.5q3 1 9 1q15 0 23.5 -12t8.5 -28z" />
-<glyph unicode="&#63023;" horiz-adv-x="325" d="M130 483q0 12 5.5 21.5q5.5 9.5 13.5 15.5q8 6 17.5 9.5q9.5 3.5 18.5 3.5q30 0 40.5 -15q10.5 -15 10.5 -43q0 -34 -13 -60q-13 -26 -31 -44.5q-18 -18.5 -37 -30q-19 -11.5 -31 -15.5l-16 34q23 12 40 31q17 19 22 46q-40 2 -40 47zt0 0zM268 483q0 12 5.5 21.5q5.5 9.5 13.5 15.5q8 6 17.5 9.5q9.5 3.5 18.5 3.5q30 0 40.5 -15q10.5 -15 10.5 -43q0 -34 -13 -60q-13 -26 -31 -44.5q-18 -18.5 -37 -30q-19 -11.5 -31 -15.5l-16 34q23 12 40 31q17 19 22 46q-40 2 -40 47z" />
-<glyph unicode="&#63028;" horiz-adv-x="202" d="M143 525h74l-70 -193l-45 0z" />
-<glyph unicode="&#63029;" horiz-adv-x="303" d="M119 525h74l-70 -193h-45zM231 525h74l-70 -193l-45 0z" />
-<glyph unicode="&#63074;" horiz-adv-x="377" d="M255 595l15 36l-31 -28l-81 -45l-24 49l173 100h39l-91 -427l-66 0z" />
-<glyph unicode="&#63171;" horiz-adv-x="179" d="M6 -105q0 23 18 36.5q18 13.5 38 13.5q26 0 37 -16q11 -16 11 -40q0 -29 -12 -52q-12 -23 -28.5 -40q-16.5 -17 -33.5 -28q-17 -11 -28 -14l-18 32q20 11 36 27q16 16 20 40q-20 0 -30 11t-10 30z" />
-<glyph unicode="&#63177;" horiz-adv-x="238" d="M341 870h116l-5 -21l-175 -97l-73 0z" />
-<glyph unicode="&#63178;" horiz-adv-x="431" d="M364 746h-47l-97 103l3 21h67l46 -50l9 -34l24 33l71 51h76l-4 -22z" />
-<glyph unicode="&#63179;" horiz-adv-x="242" d="M110 794q0 20 14 33.5q14 13.5 37 13.5q23 0 36.5 -13.5q13.5 -13.5 13.5 -33.5q0 -20 -13.5 -33q-13.5 -13 -36.5 -13q-23 0 -37 13q-14 13 -14 33zt0 0zM293 794q0 20 13.5 33.5q13.5 13.5 36.5 13.5q23 0 37 -13.5q14 -13.5 14 -33.5q0 -20 -14 -33q-14 -13 -37 -13q-23 0 -36.5 13t-13.5 33z" />
-<glyph unicode="&#63182;" horiz-adv-x="238" d="M342 752h-63l-129 97l4 21l101 0z" />
-<glyph unicode="&#63183;" horiz-adv-x="475" d="M344 850h88l-3 -16l-115 -93h-54zM498 850h93l-3 -16l-156 -93l-54 0z" />
-<glyph unicode="&#63184;" horiz-adv-x="313" d="M164 843h300l-13 -62l-301 0z" />
-<glyph unicode="&#63185;" horiz-adv-x="285" d="M212 870q0 -37 18.5 -57q18.5 -20 51.5 -20q42 0 69 20.5q27 20.5 38 55.5l73 -17q-18 -54 -65 -85.5q-47 -31.5 -119 -31.5q-68 0 -100 33.5q-32 33.5 -34 81.5z" />
-<glyph unicode="&#63188;" horiz-adv-x="285" d="M171 702q0 -47 19.5 -64.5q19.5 -17.5 49.5 -17.5q31 0 58.5 19q27.5 19 44.5 62l54 -19q-20 -58 -67.5 -89q-47.5 -31 -103.5 -31q-25 0 -47.5 6q-22.5 6 -39.5 19q-17 13 -27 33.5q-10 20.5 -10 48.5l0 9z" />
-<glyph unicode="&#64257;" horiz-adv-x="513" d="M147 0q-9 -55 -21 -94q-12 -39 -30 -64.5q-18 -25.5 -44 -37.5q-26 -12 -63 -12q-30 0 -55.5 4.5q-25.5 4.5 -47.5 15.5v56q42 -7 58.5 -9.5q16.5 -2.5 40.5 -2.5q38 0 57 39.5q19 39.5 30 104.5l72 436h-74l13 64h74q12 60 31.5 100q19.5 40 47 64q27.5 24 62.5 33.5q35 9.5 77 9.5q57 0 97.5 -12q40.5 -12 61.5 -27l-32 -57q-23 17 -59 24.5q-36 7.5 -76 7.5q-35 0 -57.5 -10q-22.5 -10 -37.5 -28.5q-15 -18.5 -24 -45q-9 -26.5 -16 -59.5l250 0l-84 -500h-75l72 436l-176 0z" />
-<glyph unicode="&#64258;" horiz-adv-x="546" d="M136 436h-74l13 64h74q11 59 29 99.5q18 40.5 44 65.5q26 25 60.5 36q34.5 11 79.5 11q19 0 42.5 -1.5q23.5 -1.5 47 -4q23.5 -2.5 44 -5.5q20.5 -3 33.5 -7l-93 -572q-3 -17 -3 -28q0 -39 33 -39q13 0 27.5 2.5q14.5 2.5 34.5 8.5l-4 -56q-9 -4 -21 -7.5q-12 -3.5 -25 -6q-13 -2.5 -25.5 -4q-12.5 -1.5 -21.5 -1.5q-36 0 -57 16q-21 16 -21 55q0 4 0.5 9.5q0.5 5.5 3 23.5q2.5 18 8 53.5q5.5 35.5 15.5 98.5q10 63 25 158.5q15 95.5 37 233.5q-14 3 -40 6q-26 3 -52 3q-32 0 -53 -10.5q-21 -10.5 -35 -30q-14 -19.5 -22.5 -47q-8.5 -27.5 -15.5 -60.5l99 0l-13 -64h-99l-64 -436q-8 -55 -19.5 -94q-11.5 -39 -30 -64.5q-18.5 -25.5 -45 -37.5q-26.5 -12 -63.5 -12q-30 0 -55.5 4.5q-25.5 4.5 -47.5 15.5v56q42 -7 58.5 -9.5q16.5 -2.5 40.5 -2.5q38 0 57 39.5q19 39.5 30 104.5z" />
diff --git a/admin/survey/Fonts/PTSans/PTS56F_W.ttf b/admin/survey/Fonts/PTSans/PTS56F_W.ttf
deleted file mode 100644
index 0fbee64..0000000
--- a/admin/survey/Fonts/PTSans/PTS56F_W.ttf
+++ /dev/null
Binary files differ
diff --git a/admin/survey/Fonts/PTSans/PTS56F_W.woff b/admin/survey/Fonts/PTSans/PTS56F_W.woff
deleted file mode 100644
index fe53379..0000000
--- a/admin/survey/Fonts/PTSans/PTS56F_W.woff
+++ /dev/null
Binary files differ
diff --git a/admin/survey/Fonts/PTSans/PTS75F_W.eot b/admin/survey/Fonts/PTSans/PTS75F_W.eot
deleted file mode 100644
index f12d2ca..0000000
--- a/admin/survey/Fonts/PTSans/PTS75F_W.eot
+++ /dev/null
Binary files differ
diff --git a/admin/survey/Fonts/PTSans/PTS75F_W.svg b/admin/survey/Fonts/PTSans/PTS75F_W.svg
deleted file mode 100644
index 8c754a9..0000000
--- a/admin/survey/Fonts/PTSans/PTS75F_W.svg
+++ /dev/null
@@ -1,728 +0,0 @@
-<?xml version="1.0" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
-<svg xmlns="http://www.w3.org/2000/svg">
-<metadata>
-Generated by SVGconv.
-Copyright : Copyright 2009 ParaType Ltd. All rights reserved.
-Designer : A.Korolkova, O.Umpeleva, V.Yefimov
-Foundry : ParaType Ltd
-Foundry URL : http://www.paratype.com
-</metadata>
-<defs>
-<font id="PTSans-Bold" horiz-adv-x="536" >
-<font-face units-per-em="1000" ascent="1018" descent="276" />
-<missing-glyph horiz-adv-x="750" />
-<glyph unicode="&#32;" horiz-adv-x="253" />
-<glyph unicode="&#33;" horiz-adv-x="294" d="M100 700h134v-329l-26 -163h-82l-26 163zM86 66q0 35 22 55.5q22 20.5 58 20.5q38 0 60 -20.5q22 -20.5 22 -55.5q0 -35 -22 -56q-22 -21 -60 -21q-36 0 -58 21t-22 56z" />
-<glyph unicode="&#34;" horiz-adv-x="402" d="M90 700h114l-36 -216h-78zM238 700h114l-36 -216l-78 0z" />
-<glyph unicode="&#35;" horiz-adv-x="567" d="M289 205h-89l-36 -154h-107l36 154h-74l22 97h75l25 106h-72l22 97h73l35 144h106l-34 -144h89l35 144h106l-34 -144h72l-25 -97h-70l-25 -106h69l-24 -97h-68l-36 -154h-107zM223 302h89l25 106l-89 0z" />
-<glyph unicode="&#36;" horiz-adv-x="567" d="M238 -13q-57 2 -100 12q-43 10 -67 23l39 113q18 -11 50.5 -21q32.5 -10 77.5 -14l0 205q-31 14 -61.5 31q-30.5 17 -54.5 41q-24 24 -38.5 57.5q-14.5 33.5 -14.5 79.5q0 86 45.5 133.5q45.5 47.5 123.5 61.5l0 91h104v-87q44 -3 77 -12q33 -9 61 -21l-36 -111q-17 8 -43 16q-26 8 -59 12l0 -187q31 -14 62.5 -31.5q31.5 -17.5 56 -41.5q24.5 -24 40 -56.5q15.5 -32.5 15.5 -77.5q0 -92 -46.5 -143.5q-46.5 -51.5 -127.5 -66.5l0 -93h-104zM386 188q0 32 -25.5 52.5q-25.5 20.5 -61.5 37.5l0 -178q44 5 65.5 28q21.5 23 21.5 60zt0 0zM199 525q0 -30 23.5 -50q23.5 -20 58.5 -37l0 162q-47 -2 -64.5 -23t-17.5 -52z" />
-<glyph unicode="&#37;" horiz-adv-x="840" d="M51 542q0 45 13 77q13 32 36 53q23 21 55.5 30.5q32.5 9.5 70.5 9.5q38 0 70 -9q32 -9 55.5 -29q23.5 -20 36.5 -52.5q13 -32.5 14 -79.5q-1 -47 -14 -79.5q-13 -32.5 -36.5 -52.5q-23.5 -20 -55.5 -29q-32 -9 -70 -9q-38 0 -70.5 9q-32.5 9 -55.5 29q-23 20 -36 52.5q-13 32.5 -13 79.5zt0 0zM167 542q0 -86 59 -86q31 0 44.5 18.5q13.5 18.5 14.5 67.5q-1 48 -14.5 67q-13.5 19 -44.5 19q-31 0 -45 -19q-14 -19 -14 -67zt0 0zM457 170q0 45 13 77q13 32 36 53q23 21 55.5 30.5q32.5 9.5 70.5 9.5q38 0 70 -9q32 -9 55.5 -29q23.5 -20 36.5 -52.5q13 -32.5 14 -79.5q-1 -47 -14 -79.5q-13 -32.5 -36.5 -52.5q-23.5 -20 -55.5 -29q-32 -9 -70 -9q-38 0 -70.5 9q-32.5 9 -55.5 29q-23 20 -36 52.5q-13 32.5 -13 79.5zt0 0zM573 170q0 -86 59 -86q31 0 44.5 18.5q13.5 18.5 14.5 67.5q-1 48 -14.5 67q-13.5 19 -44.5 19q-31 0 -45 -19q-14 -19 -14 -67zt0 0zM677 714l73 -66l-576 -662l-73 69z" />
-<glyph unicode="&#38;" horiz-adv-x="814" d="M92 194q0 38 12.5 72.5q12.5 34.5 35 64.5q22.5 30 53.5 56q31 26 67 46q-25 33 -41 67q-16 34 -16 72q0 25 9.5 50.5q9.5 25.5 30 46q20.5 20.5 53.5 33q33 12.5 80 12.5q46 0 78.5 -11q32.5 -11 52.5 -29q20 -18 29 -41q9 -23 9 -47q0 -41 -29 -85.5q-29 -44.5 -99 -85.5q35 -54 70 -99q35 -45 78 -89q23 25 41.5 62.5q18.5 37.5 32.5 76.5l94 -50q-6 -18 -16.5 -39.5q-10.5 -21.5 -23 -43.5q-12.5 -22 -25.5 -41.5q-13 -19.5 -24 -33.5q32 -29 56 -45.5q24 -16.5 49 -30.5l-69 -96q-28 13 -57.5 34.5q-29.5 21.5 -58.5 49.5q-36 -33 -90 -58.5q-54 -25.5 -133 -25.5q-52 0 -97.5 14q-45.5 14 -79 41q-33.5 27 -53 65.5q-19.5 38.5 -19.5 87.5zt0 0zM486 149q-51 53 -93 105.5q-42 52.5 -73 99.5q-48 -37 -73 -71.5q-25 -34.5 -25 -77.5q0 -51 37.5 -80q37.5 -29 98.5 -29q40 0 75 16.5q35 16.5 53 36.5zt0 0zM333 566q0 -42 36 -90q39 25 56.5 47q17.5 22 17.5 42q0 24 -13.5 38q-13.5 14 -43.5 14q-27 0 -40 -14t-13 -37z" />
-<glyph unicode="&#39;" horiz-adv-x="254" d="M90 700h114l-36 -216l-78 0z" />
-<glyph unicode="&#40;" horiz-adv-x="327" d="M227 -220q-46 48 -78 105.5q-32 57.5 -51.5 118q-19.5 60.5 -28.5 122q-9 61.5 -9 117.5q0 55 9 116q9 61 29 122.5q20 61.5 52.5 120.5q32.5 59 79.5 110l84 -54q-35 -47 -58.5 -98q-23.5 -51 -38 -104.5q-14.5 -53.5 -21 -107.5q-6.5 -54 -6.5 -105q0 -48 7 -102q7 -54 22 -107.5q15 -53.5 39 -104.5q24 -51 58 -93z" />
-<glyph unicode="&#41;" horiz-adv-x="327" d="M97 712q48 -48 80 -105.5q32 -57.5 51.5 -118q19.5 -60.5 28.5 -122q9 -61.5 10 -119.5q-1 -53 -10 -114q-9 -61 -29 -122.5q-20 -61.5 -52.5 -120.5q-32.5 -59 -75.5 -110l-89 56q38 49 62 100.5q24 51.5 38 104q14 52.5 19.5 105q5.5 52.5 6.5 97.5q-1 54 -8.5 107.5q-7.5 53.5 -22.5 107q-15 53.5 -38.5 104q-23.5 50.5 -54.5 96.5z" />
-<glyph unicode="&#42;" horiz-adv-x="378" d="M144 731l28 -46l15 -59l15 55l28 49l64 -35l-30 -52l-48 -43l65 16h57v-73h-55l-61 16l50 -47l25 -42l-64 -37l-27 46l-20 64l-13 -58l-29 -49l-64 37l29 49l45 37l-55 -16h-59v74h60l59 -17l-51 44l-28 50z" />
-<glyph unicode="&#43;" horiz-adv-x="527" d="M43 394h162v169h117v-169h163v-112h-163v-171h-117v171l-162 0z" />
-<glyph unicode="&#44;" horiz-adv-x="252" d="M42 64q0 34 22.5 54q22.5 20 55.5 20q42 0 66 -28q24 -28 24 -74q0 -45 -14 -77.5q-14 -32.5 -34.5 -54q-20.5 -21.5 -44 -34q-23.5 -12.5 -42.5 -18.5l-38 54q27 11 47 36q20 25 22 53q-23 -3 -43.5 14t-20.5 55z" />
-<glyph unicode="&#45;" horiz-adv-x="360" d="M54 345h251v-115l-251 0z" />
-<glyph unicode="&#46;" horiz-adv-x="246" d="M42 66q0 35 22 55.5q22 20.5 58 20.5q38 0 60 -20.5q22 -20.5 22 -55.5q0 -35 -22 -56q-22 -21 -60 -21q-36 0 -58 21t-22 56z" />
-<glyph unicode="&#47;" horiz-adv-x="408" d="M333 712l98 -44l-357 -808l-98 46z" />
-<glyph unicode="&#48;" horiz-adv-x="567" d="M40 351q0 184 63 273.5q63 89.5 181 89.5q126 0 185 -88.5q59 -88.5 59 -274.5q0 -185 -63.5 -275q-63.5 -90 -181.5 -90q-125 0 -184 94.5q-59 94.5 -59 270.5zt0 0zM170 351q0 -122 26.5 -188.5q26.5 -66.5 87.5 -66.5q59 0 86.5 61q27.5 61 27.5 194q0 121 -26 187q-26 66 -89 66q-60 0 -86.5 -62t-26.5 -191z" />
-<glyph unicode="&#49;" horiz-adv-x="567" d="M101 110h139v395l15 68l-48 -59l-89 -61l-55 75l228 184h73v-602h136v-110l-399 0z" />
-<glyph unicode="&#50;" horiz-adv-x="567" d="M475 529q0 -51 -18.5 -103q-18.5 -52 -47 -102q-28.5 -50 -63 -96.5q-34.5 -46.5 -67.5 -85.5l-53 -41v-5l72 14h192v-110h-421v67q24 25 54 58.5q30 33.5 60.5 71q30.5 37.5 59.5 77.5q29 40 52 80.5q23 40.5 36.5 78.5q13.5 38 13.5 72q0 41 -23.5 67.5q-23.5 26.5 -74.5 26.5q-32 0 -65.5 -13.5q-33.5 -13.5 -56.5 -34.5l-52 92q39 32 88.5 51.5q49.5 19.5 116.5 19.5q43 0 79 -12q36 -12 62 -35q26 -23 41 -57.5t15 -80.5z" />
-<glyph unicode="&#51;" horiz-adv-x="567" d="M241 96q62 0 94.5 33q32.5 33 32.5 80q0 57 -34 84q-34 27 -107 27h-72v69l121 165l57 45l-79 -9h-168v110h382v-71l-141 -189l-44 -27v-5l42 6q35 -3 66.5 -16q31.5 -13 55 -37.5q23.5 -24.5 37.5 -60.5q14 -36 14 -83q0 -59 -19.5 -102q-19.5 -43 -54 -72q-34.5 -29 -80.5 -43q-46 -14 -99 -14q-44 0 -91 8q-47 8 -76 23l35 108q26 -13 57.5 -21t70.5 -8z" />
-<glyph unicode="&#52;" horiz-adv-x="567" d="M553 195h-110v-195h-121v195h-303v74l317 436h107v-406h110zM322 452l9 84h-4l-34 -72l-104 -135l-50 -38l64 8l119 0z" />
-<glyph unicode="&#53;" horiz-adv-x="567" d="M220 101q66 0 101 32q35 32 35 88q0 60 -41 88q-41 28 -117 28l-79 -3v366h344v-122h-232v-135l41 4q49 -2 88.5 -18q39.5 -16 67.5 -44.5q28 -28.5 43 -69q15 -40.5 15 -90.5q0 -59 -20 -104q-20 -45 -55.5 -75q-35.5 -30 -83.5 -45q-48 -15 -105 -15q-45 0 -85.5 7.5q-40.5 7.5 -68.5 20.5l35 108q23 -10 50.5 -15.5t66.5 -5.5z" />
-<glyph unicode="&#54;" horiz-adv-x="567" d="M520 217q0 -49 -16.5 -91q-16.5 -42 -46.5 -73q-30 -31 -72.5 -49q-42.5 -18 -93.5 -18q-52 0 -95.5 16.5q-43.5 16.5 -75.5 49.5q-32 33 -50 83q-18 50 -18 116q0 99 28.5 179q28.5 80 77 139.5q48.5 59.5 113 96q64.5 36.5 136.5 48.5l29 -103q-50 -8 -92 -31q-42 -23 -74.5 -55q-32.5 -32 -55 -71.5q-22.5 -39.5 -31.5 -81.5q20 25 52 42.5q32 17.5 80 17.5q45 0 83 -14q38 -14 65 -41.5q27 -27.5 42 -67.5q15 -40 15 -92zt0 0zM394 210q0 112 -110 112q-40 0 -67.5 -18q-27.5 -18 -38.5 -42q-2 -11 -2 -19q0 -8 0 -16q0 -24 7 -47.5q7 -23.5 20.5 -42q13.5 -18.5 34.5 -30q21 -11.5 50 -11.5q47 0 76.5 32t29.5 82z" />
-<glyph unicode="&#55;" horiz-adv-x="567" d="M104 0l229 539l44 49l-60 -10h-257v122h451v-38l-280 -662z" />
-<glyph unicode="&#56;" horiz-adv-x="567" d="M61 171q0 35 9 62.5q9 27.5 25.5 50q16.5 22.5 39 40.5q22.5 18 48.5 33q-49 31 -77 71.5q-28 40.5 -28 100.5q0 39 14.5 73q14.5 34 42 59q27.5 25 66.5 39q39 14 88 14q45 0 82 -12q37 -12 63.5 -34q26.5 -22 41 -53.5q14.5 -31.5 14.5 -69.5q0 -59 -26.5 -100q-26.5 -41 -77.5 -75q60 -35 90.5 -77q30.5 -42 30.5 -108q0 -45 -16.5 -81.5q-16.5 -36.5 -46.5 -62.5q-30 -26 -72 -40.5q-42 -14.5 -92 -14.5q-50 0 -90.5 13.5q-40.5 13.5 -69 37.5q-28.5 24 -44 58q-15.5 34 -15.5 76zt0 0zM383 184q0 23 -11 42q-11 19 -28.5 34.5q-17.5 15.5 -39 28.5q-21.5 13 -43.5 25q-47 -27 -64.5 -58.5q-17.5 -31.5 -17.5 -62.5q0 -40 27.5 -68.5q27.5 -28.5 76.5 -28.5q45 0 72.5 22q27.5 22 27.5 66zt0 0zM202 527q0 -24 9 -42q9 -18 24.5 -31.5q15.5 -13.5 35 -25q19.5 -11.5 40.5 -21.5q60 51 60 112q0 42 -24.5 63.5q-24.5 21.5 -59.5 21.5q-44 0 -64.5 -23t-20.5 -54z" />
-<glyph unicode="&#57;" horiz-adv-x="567" d="M45 481q0 51 15.5 94q15.5 43 45 73.5q29.5 30.5 72 48q42.5 17.5 97.5 17.5q113 0 177.5 -67.5q64.5 -67.5 64.5 -196.5q0 -116 -29.5 -200.5q-29.5 -84.5 -79 -141q-49.5 -56.5 -114.5 -86.5q-65 -30 -137 -36l-28 102q55 7 98 27q43 20 74 49.5q31 29.5 50.5 67q19.5 37.5 27.5 80.5q-24 -26 -51.5 -36q-27.5 -10 -73.5 -10q-38 0 -75.5 13q-37.5 13 -67 39.5q-29.5 26.5 -48 67q-18.5 40.5 -18.5 95.5zt0 0zM171 488q0 -57 32 -86q32 -29 80 -29q41 0 67 13q26 13 40 32q3 21 3 40q0 28 -7 55q-7 27 -21.5 48q-14.5 21 -37 33.5q-22.5 12.5 -53.5 12.5q-49 0 -76 -31.5t-27 -87.5z" />
-<glyph unicode="&#58;" horiz-adv-x="269" d="M93 428q0 35 22 55.5q22 20.5 58 20.5q38 0 60 -20.5q22 -20.5 22 -55.5q0 -35 -22 -56q-22 -21 -60 -21q-36 0 -58 21q-22 21 -22 56zt0 0zM93 66q0 35 22 55.5q22 20.5 58 20.5q38 0 60 -20.5q22 -20.5 22 -55.5q0 -35 -22 -56q-22 -21 -60 -21q-36 0 -58 21t-22 56z" />
-<glyph unicode="&#59;" horiz-adv-x="290" d="M82 64q0 34 22.5 54q22.5 20 55.5 20q42 0 66 -28q24 -28 24 -74q0 -45 -14 -77.5q-14 -32.5 -34.5 -54q-20.5 -21.5 -44 -34q-23.5 -12.5 -42.5 -18.5l-38 54q27 11 47 36q20 25 22 53q-23 -3 -43.5 14q-20.5 17 -20.5 55zt0 0zM82 428q0 35 22 55.5q22 20.5 58 20.5q38 0 60 -20.5q22 -20.5 22 -55.5q0 -35 -22 -56q-22 -21 -60 -21q-36 0 -58 21t-22 56z" />
-<glyph unicode="&#60;" horiz-adv-x="527" d="M40 285v70l386 231l57 -90l-224 -139l-91 -35l90 -31l230 -137l-57 -90z" />
-<glyph unicode="&#61;" horiz-adv-x="527" d="M43 490h442v-112h-442zM43 298h442v-112l-442 0z" />
-<glyph unicode="&#62;" horiz-adv-x="527" d="M487 365v-70l-386 -231l-57 91l224 138l91 36l-90 30l-230 138l57 89z" />
-<glyph unicode="&#63;" horiz-adv-x="454" d="M136 208q-5 52 5 88.5q10 36.5 27.5 63q17.5 26.5 40 46q22.5 19.5 42 37.5q19.5 18 32.5 37.5q13 19.5 13 46.5q0 35 -19.5 56q-19.5 21 -69.5 21q-16 0 -34 -3.5q-18 -3.5 -36 -10q-18 -6.5 -34.5 -15q-16.5 -8.5 -29.5 -17.5l-50 96q38 26 87.5 43q49.5 17 119.5 17q94 0 147 -45.5q53 -45.5 53 -122.5q0 -51 -13.5 -84.5q-13.5 -33.5 -33.5 -57q-20 -23.5 -44 -41.5q-24 -18 -44 -38.5q-20 -20.5 -34 -47.5q-14 -27 -14 -69zM116 66q0 35 22 55.5q22 20.5 58 20.5q38 0 60 -20.5q22 -20.5 22 -55.5q0 -35 -22 -56q-22 -21 -60 -21q-36 0 -58 21t-22 56z" />
-<glyph unicode="&#64;" horiz-adv-x="1059" d="M679 484h70l-48 -271q-8 -47 -0.5 -68q7.5 -21 33.5 -21q26 0 51 12q25 12 45 37q20 25 32.5 63q12.5 38 12.5 90q0 75 -25 128q-25 53 -68.5 87.5q-43.5 34.5 -102.5 50.5q-59 16 -127 16q-78 0 -145 -28q-67 -28 -116.5 -77q-49.5 -49 -77.5 -116.5q-28 -67.5 -28 -146.5q0 -78 23.5 -140q23.5 -62 68.5 -105.5q45 -43.5 111.5 -67q66.5 -23.5 152.5 -23.5q29 0 66 7q37 7 67 21l31 -96q-41 -20 -83.5 -28q-42.5 -8 -97.5 -8q-97 0 -179.5 28q-82.5 28 -143 83q-60.5 55 -94.5 136.5q-34 81.5 -34 188.5q0 109 39 197q39 88 105 150q66 62 153 95.5q87 33.5 184 33.5q92 0 171 -26.5q79 -26.5 137 -76q58 -49.5 91 -121q33 -71.5 33 -162.5q0 -64 -22.5 -120q-22.5 -56 -62 -97q-39.5 -41 -92 -65q-52.5 -24 -112.5 -24q-25 0 -46.5 5.5q-21.5 5.5 -36 18.5q-14.5 13 -21.5 34q-7 21 -4 52l-4 0q-15 -21 -32.5 -41q-17.5 -20 -38.5 -35.5q-21 -15.5 -46 -24.5q-25 -9 -55 -9q-24 0 -46 10.5q-22 10.5 -38 29.5q-16 19 -25.5 46q-9.5 27 -9.5 60q0 62 20 120.5q20 58.5 54.5 103.5q34.5 45 80 72.5q45.5 27.5 96.5 27.5q35 0 59 -10.5q24 -10.5 44 -27.5zM616 363q-13 11 -27 17q-14 6 -35 6q-30 0 -55.5 -17q-25.5 -17 -44 -44q-18.5 -27 -28.5 -60.5q-10 -33.5 -10 -65.5q0 -33 13.5 -54q13.5 -21 46.5 -21q14 0 30 8.5q16 8.5 31 22.5q15 14 29 32q14 18 25 38z" />
-<glyph unicode="&#65;" horiz-adv-x="605" d="M405 155h-215l-53 -155h-137l252 705h101l252 -705h-144zM225 265h150l-52 156l-21 110h-5l-21 -111z" />
-<glyph unicode="&#66;" horiz-adv-x="591" d="M531 537q0 -26 -6.5 -52q-6.5 -26 -21.5 -47.5q-15 -21.5 -39 -38q-24 -16.5 -58 -24.5l0 -6q30 -5 57 -17q27 -12 47 -33q20 -21 31.5 -51q11.5 -30 11.5 -71q0 -54 -23 -93.5q-23 -39.5 -61.5 -64.5q-38.5 -25 -87.5 -37q-49 -12 -101 -12q-17 0 -43.5 0q-26.5 0 -57 1.5q-30.5 1.5 -62 4.5q-31.5 3 -57.5 9l0 690q19 3 43.5 6q24.5 3 52.5 5q28 2 57.5 3q29.5 1 58.5 1q49 0 95.5 -7.5q46.5 -7.5 83 -26.5q36.5 -19 58.5 -53q22 -34 22 -86zt0 0zM281 103q25 0 48.5 6q23.5 6 41.5 18.5q18 12.5 29 31.5q11 19 11 45q0 33 -13 52q-13 19 -34 29.5q-21 10.5 -47 13.5q-26 3 -52 3h-73v-193q5 -2 16 -3q11 -1 23.5 -1.5q12.5 -0.5 26 -1q13.5 -0.5 23.5 -0.5zt0 0zM236 406q14 0 32.5 1q18.5 1 30.5 3q38 12 65.5 36q27.5 24 27.5 63q0 26 -10 43q-10 17 -26.5 27q-16.5 10 -37.5 14q-21 4 -44 4q-26 0 -48 -1q-22 -1 -34 -3l0 -187z" />
-<glyph unicode="&#67;" horiz-adv-x="559" d="M534 29q-32 -23 -81.5 -33q-49.5 -10 -101.5 -10q-63 0 -119.5 19.5q-56.5 19.5 -99.5 63q-43 43.5 -68.5 113q-25.5 69.5 -25.5 168.5q0 103 28.5 172.5q28.5 69.5 74 112q45.5 42.5 101.5 61q56 18.5 112 18.5q60 0 101.5 -8q41.5 -8 68.5 -19v-116q-50 11 -81.5 16q-31.5 5 -76.5 5q-83 0 -133.5 -59q-50.5 -59 -50.5 -183q0 -54 12 -98.5q12 -44.5 36.5 -76q24.5 -31.5 61 -49q36.5 -17.5 84.5 -17.5q45 0 76 9q31 9 54 23z" />
-<glyph unicode="&#68;" horiz-adv-x="647" d="M60 700q21 3 47.5 5q26.5 2 54.5 3q28 1 54.5 1.5q26.5 0.5 47.5 0.5q93 0 159 -26q66 -26 107 -73q41 -47 60 -112q19 -65 19 -143q0 -71 -18 -137q-18 -66 -60 -117q-42 -51 -110.5 -82q-68.5 -31 -169.5 -31q-16 0 -42.5 1q-26.5 1 -55 2.5q-28.5 1.5 -54.5 3q-26 1.5 -39 3.5zM275 588q-22 0 -44.5 -1q-22.5 -1 -33.5 -3l0 -469q4 -1 13.5 -1.5q9.5 -0.5 20.5 -1q11 -0.5 21 -1q10 -0.5 15 -0.5q58 0 96.5 20.5q38.5 20.5 61 54.5q22.5 34 31.5 78.5q9 44.5 9 91.5q0 41 -8 82.5q-8 41.5 -29.5 74.5q-21.5 33 -58.5 54t-94 21z" />
-<glyph unicode="&#69;" horiz-adv-x="522" d="M60 700h415v-122h-278v-163h253v-122h-253v-171h283v-122l-420 0z" />
-<glyph unicode="&#70;" horiz-adv-x="508" d="M60 700h415v-122h-278v-173h256v-122h-256v-283l-137 0z" />
-<glyph unicode="&#71;" horiz-adv-x="609" d="M307 365h261v-312q-42 -35 -100.5 -51q-58.5 -16 -115.5 -16q-67 0 -124.5 21q-57.5 21 -99.5 65.5q-42 44.5 -66 113.5q-24 69 -24 164q0 99 28.5 168.5q28.5 69.5 75 113q46.5 43.5 104.5 63q58 19.5 118 19.5q60 0 105.5 -9q45.5 -9 72.5 -19l-28 -115q-25 10 -56 15.5q-31 5.5 -79 5.5q-43 0 -79 -13q-36 -13 -62.5 -42.5q-26.5 -29.5 -41 -75.5q-14.5 -46 -14.5 -112q0 -63 14 -108.5q14 -45.5 39 -75q25 -29.5 58.5 -43.5q33.5 -14 71.5 -14q26 0 51 6.5q25 6.5 42 19.5l0 132l-151 16z" />
-<glyph unicode="&#72;" horiz-adv-x="651" d="M453 293h-256v-293h-137v700h137v-285h256v285h137v-700l-137 0z" />
-<glyph unicode="&#73;" horiz-adv-x="285" d="M74 700h137v-700l-137 0z" />
-<glyph unicode="&#74;" horiz-adv-x="334" d="M131 700h137v-512q0 -40 -9 -76q-9 -36 -29.5 -63.5q-20.5 -27.5 -52.5 -44q-32 -16.5 -78 -16.5q-29 0 -63 6q-34 6 -59 17l30 112q26 -13 59 -13q42 0 53.5 31q11.5 31 11.5 82z" />
-<glyph unicode="&#75;" horiz-adv-x="620" d="M233 299h-36v-299h-137v700h137v-310l32 14l193 296h156l-204 -294l-54 -38l56 -39l233 -329l-169 0z" />
-<glyph unicode="&#76;" horiz-adv-x="514" d="M503 0h-443v700h137v-578l306 0z" />
-<glyph unicode="&#77;" horiz-adv-x="800" d="M603 363l15 139h-6l-43 -112l-149 -261h-44l-157 262l-44 111h-5l20 -138v-364h-130v700h125l187 -320l33 -80h4l30 82l177 318h124v-700l-137 0z" />
-<glyph unicode="&#78;" horiz-adv-x="657" d="M234 365l-55 110h-5l16 -110v-365h-130v705h100l265 -373l53 -107h5l-16 107v368h130v-705l-100 0z" />
-<glyph unicode="&#79;" horiz-adv-x="670" d="M38 350q0 175 77 269.5q77 94.5 220 94.5q75 0 131 -26q56 -26 93 -74q37 -48 55 -115q18 -67 18 -149q0 -175 -77.5 -269.5q-77.5 -94.5 -219.5 -94.5q-76 0 -132 26q-56 26 -92.5 74q-36.5 48 -54.5 115q-18 67 -18 149zt0 0zM182 350q0 -53 9 -97.5q9 -44.5 27.5 -76.5q18.5 -32 47.5 -50q29 -18 69 -18q73 0 113 57q40 57 40 185q0 51 -8.5 95q-8.5 44 -26.5 77q-18 33 -47 51.5q-29 18.5 -71 18.5q-73 0 -113 -58.5t-40 -183.5z" />
-<glyph unicode="&#80;" horiz-adv-x="572" d="M60 693q42 8 92.5 12.5q50.5 4.5 100.5 4.5q52 0 104.5 -8.5q52.5 -8.5 94.5 -34q42 -25.5 68.5 -71q26.5 -45.5 26.5 -118.5q0 -66 -23 -111.5q-23 -45.5 -61 -74.5q-38 -29 -86.5 -42q-48.5 -13 -100.5 -13q-5 0 -16 0q-11 0 -23 0.5q-12 0.5 -23.5 1.5q-11.5 1 -16.5 2l0 -241h-137zM264 592q-20 0 -38 -1.5q-18 -1.5 -29 -3.5l0 -227q4 -1 12 -2q8 -1 17 -1.5q9 -0.5 17.5 -0.5q8.5 0 12.5 0q27 0 53.5 5q26.5 5 47.5 18.5q21 13.5 33.5 37.5q12.5 24 12.5 63q0 33 -12 54.5q-12 21.5 -31.5 34.5q-19.5 13 -44.5 18t-51 5z" />
-<glyph unicode="&#81;" horiz-adv-x="670" d="M702 -202q-48 -13 -97 -13q-51 0 -99 10.5q-48 10.5 -93 22.5q-45 12 -87 22.5q-42 10.5 -79 10.5q-24 0 -46 -6l0 118q28 6 58 6q42 0 83.5 -10q41.5 -10 84.5 -21.5q43 -11.5 88 -21.5q45 -10 95 -10q22 0 45 2.5q23 2.5 47 8.5zM38 350q0 175 77 269.5q77 94.5 220 94.5q75 0 131 -26q56 -26 93 -74q37 -48 55 -115q18 -67 18 -149q0 -175 -77.5 -269.5q-77.5 -94.5 -219.5 -94.5q-76 0 -132 26q-56 26 -92.5 74q-36.5 48 -54.5 115q-18 67 -18 149zt0 0zM182 350q0 -53 9 -97.5q9 -44.5 27.5 -76.5q18.5 -32 47.5 -50q29 -18 69 -18q73 0 113 57q40 57 40 185q0 51 -8.5 95q-8.5 44 -26.5 77q-18 33 -47 51.5q-29 18.5 -71 18.5q-73 0 -113 -58.5t-40 -183.5z" />
-<glyph unicode="&#82;" horiz-adv-x="602" d="M60 693q23 4 49.5 7.5q26.5 3.5 53 5.5q26.5 2 51.5 3q25 1 46 1q49 0 96.5 -9q47.5 -9 85 -31q37.5 -22 60 -60.5q22.5 -38.5 22.5 -96.5q0 -86 -40 -140q-40 -54 -107 -75l49 -31l160 -267h-158l-159 274l-72 13v-287h-137zM270 588q-21 0 -41.5 -1q-20.5 -1 -31.5 -4l0 -203h58q57 0 91 26q34 26 34 86q0 45 -28 70.5t-82 25.5z" />
-<glyph unicode="&#83;" horiz-adv-x="530" d="M362 188q0 32 -23.5 52q-23.5 20 -59 36.5q-35.5 16.5 -77 34q-41.5 17.5 -77 43q-35.5 25.5 -59 63.5q-23.5 38 -23.5 97q0 51 17 88.5q17 37.5 48.5 62.5q31.5 25 74.5 37q43 12 96 12q61 0 115 -10.5q54 -10.5 89 -30.5l-43 -115q-22 14 -66 25.5q-44 11.5 -95 11.5q-48 0 -73.5 -19q-25.5 -19 -25.5 -51q0 -30 23.5 -50q23.5 -20 59 -37q35.5 -17 77 -35q41.5 -18 77 -43.5q35.5 -25.5 59 -63q23.5 -37.5 23.5 -93.5q0 -56 -18.5 -96.5q-18.5 -40.5 -52 -67.5q-33.5 -27 -81 -40q-47.5 -13 -104.5 -13q-75 0 -132 14q-57 14 -84 28l44 117q11 -6 28.5 -13q17.5 -7 39.5 -13q22 -6 46.5 -10q24.5 -4 50.5 -4q61 0 93.5 20.5t32.5 62.5z" />
-<glyph unicode="&#84;" horiz-adv-x="568" d="M557 578h-204v-578h-137v578h-205v122l546 0z" />
-<glyph unicode="&#85;" horiz-adv-x="627" d="M440 700h130v-452q0 -68 -18 -117q-18 -49 -50 -81q-32 -32 -78 -47q-46 -15 -101 -15q-266 0 -266 243v469h137v-442q0 -41 7.5 -69.5q7.5 -28.5 23.5 -46q16 -17.5 40 -25q24 -7.5 56 -7.5q63 0 91 35q28 35 28 113z" />
-<glyph unicode="&#86;" horiz-adv-x="602" d="M290 289l18 -119h5l20 120l134 410h144l-260 -705h-98l-262 705l159 0z" />
-<glyph unicode="&#87;" horiz-adv-x="862" d="M242 309l13 -124h4l14 126l122 389h90l120 -391l14 -124h4l15 126l85 389h139l-193 -705h-92l-125 389l-17 107h-5l-17 -108l-124 -388h-97l-192 705l149 0z" />
-<glyph unicode="&#88;" horiz-adv-x="633" d="M225 356l-195 344h165l108 -202l24 -71l23 71l113 202h149l-202 -337l212 -363h-163l-123 216l-27 74l-26 -74l-124 -216l-149 0z" />
-<glyph unicode="&#89;" horiz-adv-x="592" d="M228 260l-230 440h163l128 -263l14 -74h5l15 76l124 261h147l-229 -439v-261l-137 0z" />
-<glyph unicode="&#90;" horiz-adv-x="539" d="M27 122l296 414l52 42h-348v122h485v-122l-298 -418l-51 -38h349v-122l-485 0z" />
-<glyph unicode="&#91;" horiz-adv-x="324" d="M60 700h235v-110h-111v-710h111v-110l-235 0z" />
-<glyph unicode="&#92;" horiz-adv-x="424" d="M438 -95l-99 -45l-363 808l102 43z" />
-<glyph unicode="&#93;" horiz-adv-x="324" d="M264 -230h-235v110h111v710h-111v110l235 0z" />
-<glyph unicode="&#94;" horiz-adv-x="500" d="M216 705h69l185 -292h-131l-71 122l-21 70l-25 -71l-78 -121l-124 0z" />
-<glyph unicode="&#95;" horiz-adv-x="444" d="M0 -117h444v-107l-444 0z" />
-<glyph unicode="&#96;" horiz-adv-x="316" d="M256 566h-72l-124 124v30l136 0z" />
-<glyph unicode="&#97;" horiz-adv-x="496" d="M54 471q40 18 95 28.5q55 10.5 115 10.5q52 0 87 -12.5q35 -12.5 55.5 -35.5q20.5 -23 29 -55q8.5 -32 8.5 -72q0 -44 -3 -88.5q-3 -44.5 -3.5 -87.5q-0.5 -43 2.5 -83.5q3 -40.5 15 -76.5l-106 0l-21 69h-5q-20 -31 -55.5 -53.5q-35.5 -22.5 -91.5 -22.5q-35 0 -63 10.5q-28 10.5 -48 30q-20 19.5 -31 46q-11 26.5 -11 59.5q0 46 20.5 77.5q20.5 31.5 59 51q38.5 19.5 92 27q53.5 7.5 119.5 4.5q7 56 -8 80.5q-15 24.5 -67 24.5q-39 0 -82.5 -8q-43.5 -8 -71.5 -21zM219 99q39 0 62 17.5q23 17.5 34 37.5l0 65q-31 3 -59.5 1q-28.5 -2 -50.5 -9q-22 -7 -35 -20q-13 -13 -13 -33q0 -28 16.5 -43.5t45.5 -15.5z" />
-<glyph unicode="&#98;" horiz-adv-x="536" d="M57 700h130v-240h4q21 24 54 38q33 14 73 14q90 0 137.5 -61.5q47.5 -61.5 47.5 -187.5q0 -135 -66.5 -205q-66.5 -70 -182.5 -70q-64 0 -117 10.5q-53 10.5 -80 23.5zM280 402q-36 0 -58.5 -18.5q-22.5 -18.5 -34.5 -53.5l0 -218q16 -8 34.5 -11q18.5 -3 39.5 -3q53 0 80.5 38.5q27.5 38.5 27.5 122.5q0 143 -89 143z" />
-<glyph unicode="&#99;" horiz-adv-x="433" d="M411 31q-30 -22 -72.5 -33.5q-42.5 -11.5 -87.5 -11.5q-60 0 -101.5 19q-41.5 19 -67.5 53.5q-26 34.5 -37.5 83.5q-11.5 49 -11.5 108q0 127 57 195.5q57 68.5 166 68.5q55 0 88.5 -9q33.5 -9 60.5 -23l-31 -106q-23 11 -45.5 17q-22.5 6 -51.5 6q-54 0 -82 -35.5q-28 -35.5 -28 -113.5q0 -32 7 -59q7 -27 21 -47q14 -20 36.5 -31.5q22.5 -11.5 52.5 -11.5q33 0 56 8.5q23 8.5 41 20.5z" />
-<glyph unicode="&#100;" horiz-adv-x="539" d="M482 176q0 -42 1 -84q1 -42 9 -93l-93 0l-18 65h-4q-20 -35 -57.5 -56.5q-37.5 -21.5 -88.5 -21.5q-94 0 -146 62q-52 62 -52 194q0 128 58 199q58 71 170 71q31 0 51 -3.5q20 -3.5 40 -11.5l0 203h130zM261 96q38 0 60 18.5q22 18.5 31 53.5l0 212q-14 11 -31 16.5q-17 5.5 -44 5.5q-55 0 -82.5 -37q-27.5 -37 -27.5 -127q0 -64 22.5 -103t71.5 -39z" />
-<glyph unicode="&#101;" horiz-adv-x="508" d="M457 43q-30 -24 -81.5 -40.5q-51.5 -16.5 -109.5 -16.5q-121 0 -177 70.5q-56 70.5 -56 193.5q0 132 63 198q63 66 177 66q38 0 74 -10q36 -10 64 -33q28 -23 45 -62q17 -39 17 -97q0 -21 -2.5 -45q-2.5 -24 -7.5 -50l-300 0q3 -63 32.5 -95q29.5 -32 95.5 -32q41 0 73.5 12.5q32.5 12.5 49.5 25.5zM271 410q-51 0 -75.5 -30.5q-24.5 -30.5 -29.5 -81.5l186 0q4 54 -16.5 83t-64.5 29z" />
-<glyph unicode="&#102;" horiz-adv-x="321" d="M11 500h69v28q0 95 40 137.5q40 42.5 116 42.5q80 0 133 -19l-25 -104q-23 8 -40.5 10.5q-17.5 2.5 -36.5 2.5q-20 0 -31.5 -6q-11.5 -6 -17 -18.5q-5.5 -12.5 -7 -31q-1.5 -18.5 -1.5 -42.5l110 0v-110h-110v-390h-130v390l-69 0z" />
-<glyph unicode="&#103;" horiz-adv-x="536" d="M480 0q0 -109 -59 -160.5q-59 -51.5 -165 -51.5q-72 0 -113.5 10q-41.5 10 -62.5 21l27 103q23 -9 53.5 -18q30.5 -9 75.5 -9q68 0 92.5 29.5q24.5 29.5 24.5 82.5v32h-4q-35 -47 -124 -47q-97 0 -144.5 60q-47.5 60 -47.5 188q0 134 64 203q64 69 186 69q64 0 114.5 -9q50.5 -9 82.5 -21zM260 96q38 0 58.5 17q20.5 17 31.5 51l0 225q-31 13 -77 13q-50 0 -78 -37.5q-28 -37.5 -28 -119.5q0 -73 24 -111t69 -38z" />
-<glyph unicode="&#104;" horiz-adv-x="545" d="M363 0v284q0 61 -17 88q-17 27 -62 27q-33 0 -60.5 -22.5q-27.5 -22.5 -36.5 -57.5l0 -319h-130v700h130v-256h4q24 32 59 51q35 19 89 19q38 0 67 -10q29 -10 48.5 -33q19.5 -23 29 -62.5q9.5 -39.5 9.5 -97.5l0 -311z" />
-<glyph unicode="&#105;" horiz-adv-x="269" d="M67 500h130v-500h-130zM48 641q0 29 21.5 49.5q21.5 20.5 59.5 20.5q38 0 61.5 -20.5q23.5 -20.5 23.5 -49.5q0 -29 -23.5 -48.5q-23.5 -19.5 -61.5 -19.5q-38 0 -59.5 19.5t-21.5 48.5z" />
-<glyph unicode="&#106;" horiz-adv-x="268" d="M69 500h130v-521q0 -91 -36 -139q-36 -48 -115 -48q-30 0 -64 7l0 109q4 0 7 -0.5q3 -0.5 6 -0.5q45 0 58.5 29q13.5 29 13.5 80zM50 641q0 29 21.5 49.5q21.5 20.5 59.5 20.5q38 0 61.5 -20.5q23.5 -20.5 23.5 -49.5q0 -29 -23.5 -48.5q-23.5 -19.5 -61.5 -19.5q-38 0 -59.5 19.5t-21.5 48.5z" />
-<glyph unicode="&#107;" horiz-adv-x="491" d="M222 207h-35v-207h-130v700h130v-413l30 14l114 199h143l-120 -190l-51 -38l55 -39l135 -233l-149 0z" />
-<glyph unicode="&#108;" horiz-adv-x="294" d="M191 168q0 -35 9 -51q9 -16 29 -16q12 0 23.5 2q11.5 2 28.5 9l14 -102q-16 -8 -49 -16q-33 -8 -68 -8q-57 0 -87 26.5q-30 26.5 -30 87.5v600l130 0z" />
-<glyph unicode="&#109;" horiz-adv-x="805" d="M341 0v272q0 69 -13 98q-13 29 -54 29q-34 0 -55 -18.5q-21 -18.5 -32 -47.5l0 -333h-130v500h101l15 -66h4q23 32 58.5 56q35.5 24 91.5 24q48 0 78.5 -19.5q30.5 -19.5 47.5 -65.5q23 39 59 62q36 23 87 23q42 0 71.5 -10q29.5 -10 48 -34.5q18.5 -24.5 27.5 -65.5q9 -41 9 -104v-300h-130v281q0 59 -12.5 88.5q-12.5 29.5 -55.5 29.5q-35 0 -55.5 -19q-20.5 -19 -30.5 -52l0 -328z" />
-<glyph unicode="&#110;" horiz-adv-x="545" d="M363 0v284q0 61 -17.5 88q-17.5 27 -59.5 27q-37 0 -62.5 -21.5q-25.5 -21.5 -36.5 -53.5l0 -324h-130v500h103l15 -66h4q23 32 61 56q38 24 98 24q37 0 66 -10q29 -10 49 -33q20 -23 30 -62.5q10 -39.5 10 -97.5l0 -311z" />
-<glyph unicode="&#111;" horiz-adv-x="537" d="M33 250q0 127 62 195.5q62 68.5 174 68.5q60 0 104 -19q44 -19 73 -53.5q29 -34.5 43.5 -83.5q14.5 -49 14.5 -108q0 -127 -61.5 -195.5q-61.5 -68.5 -173.5 -68.5q-60 0 -104 19q-44 19 -73.5 53.5q-29.5 34.5 -44 83.5q-14.5 49 -14.5 108zt0 0zM167 250q0 -33 6 -61q6 -28 18 -49q12 -21 31.5 -32.5q19.5 -11.5 46.5 -11.5q51 0 76 37q25 37 25 117q0 69 -23 111.5q-23 42.5 -78 42.5q-48 0 -75 -36t-27 -118z" />
-<glyph unicode="&#112;" horiz-adv-x="540" d="M57 500h95l15 -60h4q26 38 61.5 56q35.5 18 86.5 18q94 0 141 -59.5q47 -59.5 47 -191.5q0 -64 -15 -115.5q-15 -51.5 -44.5 -87.5q-29.5 -36 -72 -55q-42.5 -19 -97.5 -19q-31 0 -51 4.5q-20 4.5 -40 14.5l0 -205h-130zM280 404q-38 0 -59.5 -19q-21.5 -19 -33.5 -57l0 -208q14 -11 30.5 -17.5q16.5 -6.5 43.5 -6.5q56 0 84 39.5q28 39.5 28 130.5q0 66 -22 102t-71 36z" />
-<glyph unicode="&#113;" horiz-adv-x="536" d="M480 -200h-130v243h-4q-17 -26 -46 -41.5q-29 -15.5 -75 -15.5q-93 0 -142.5 63q-49.5 63 -49.5 191q0 134 67.5 203q67.5 69 193.5 69q27 0 54 -2.5q27 -2.5 51.5 -7q24.5 -4.5 45.5 -10q21 -5.5 35 -10.5zM260 96q38 0 58.5 17q20.5 17 31.5 51l0 225q-15 8 -34 10.5q-19 2.5 -43 2.5q-53 0 -79.5 -40q-26.5 -40 -26.5 -117q0 -73 24 -111t69 -38z" />
-<glyph unicode="&#114;" horiz-adv-x="351" d="M333 378q-31 11 -56 11q-35 0 -58.5 -18.5q-23.5 -18.5 -31.5 -47.5l0 -323h-130v500h101l15 -66h4q17 37 46 57q29 20 68 20q26 0 59 -11z" />
-<glyph unicode="&#115;" horiz-adv-x="422" d="M264 138q0 20 -17 32q-17 12 -42 22q-25 10 -55 20.5q-30 10.5 -55 29q-25 18.5 -42 47q-17 28.5 -17 73.5q0 74 44 113q44 39 127 39q57 0 103 -12q46 -12 72 -27l-29 -94q-23 9 -58 19q-35 10 -71 10q-58 0 -58 -45q0 -18 17 -29q17 -11 42 -20.5q25 -9.5 55 -20.5q30 -11 55 -28.5q25 -17.5 42 -45.5q17 -28 17 -72q0 -76 -48.5 -119.5q-48.5 -43.5 -145.5 -43.5q-53 0 -99.5 13.5q-46.5 13.5 -75.5 31.5l36 97q23 -13 61 -25.5q38 -12.5 78 -12.5q29 0 46.5 11t17.5 37z" />
-<glyph unicode="&#116;" horiz-adv-x="349" d="M5 500h69v94l130 37v-131h122v-110h-122v-192q0 -52 10.5 -74.5q10.5 -22.5 39.5 -22.5q20 0 34.5 4q14.5 4 32.5 12l23 -100q-27 -13 -63 -22q-36 -9 -73 -9q-69 0 -101.5 35.5q-32.5 35.5 -32.5 116.5v252l-69 0z" />
-<glyph unicode="&#117;" horiz-adv-x="538" d="M182 500v-284q0 -61 14.5 -88q14.5 -27 56.5 -27q37 0 61.5 22q24.5 22 36.5 54l0 323h130v-348q0 -41 4 -80.5q4 -39.5 12 -71.5l-98 0l-23 74h-4q-23 -38 -64 -63q-41 -25 -97 -25q-38 0 -68 10q-30 10 -50 33q-20 23 -30.5 62q-10.5 39 -10.5 98l0 311z" />
-<glyph unicode="&#118;" horiz-adv-x="477" d="M230 238l17 -77h5l14 79l85 260h140l-209 -505h-79l-217 505l151 0z" />
-<glyph unicode="&#119;" horiz-adv-x="721" d="M419 500l91 -256l18 -83h4l14 84l64 255h119l-154 -505h-96l-101 280l-13 63h-5l-12 -64l-96 -279h-99l-161 505h141l73 -251l12 -89h5l17 90l83 250z" />
-<glyph unicode="&#120;" horiz-adv-x="525" d="M170 256l-150 244h155l65 -107l28 -70l30 70l68 107h141l-151 -240l161 -260h-151l-77 120l-30 74l-32 -74l-77 -120l-142 0z" />
-<glyph unicode="&#121;" horiz-adv-x="478" d="M239 219l18 -78h6l13 79l76 280h134l-152 -451q-19 -56 -36.5 -102.5q-17.5 -46.5 -38.5 -80.5q-21 -34 -46.5 -52.5q-25.5 -18.5 -60.5 -18.5q-52 0 -83 17l24 104q15 -6 30 -6q23 0 44.5 19.5q21.5 19.5 32.5 70.5l-209 500l156 0z" />
-<glyph unicode="&#122;" horiz-adv-x="458" d="M31 110l197 237l51 43h-248v110h392v-110l-195 -241l-50 -39h245v-110l-392 0z" />
-<glyph unicode="&#123;" horiz-adv-x="371" d="M123 96q0 51 -21 70q-21 19 -59 19l0 100q38 0 59 20.5q21 20.5 21 64.5v209q0 54 25.5 88q25.5 34 81.5 34h120v-110h-50q-27 0 -39.5 -14q-12.5 -14 -12.5 -46v-195q0 -44 -21 -66.5q-21 -22.5 -49 -27.5l0 -10q27 -4 48.5 -30q21.5 -26 21.5 -68v-194q0 -32 12 -46q12 -14 41 -14h49v-110h-120q-52 0 -79.5 31.5q-27.5 31.5 -27.5 89.5z" />
-<glyph unicode="&#124;" horiz-adv-x="227" d="M60 700h107v-830l-107 0z" />
-<glyph unicode="&#125;" horiz-adv-x="371" d="M261 375q0 -51 21 -70q21 -19 59 -19l0 -100q-38 0 -59 -20.5q-21 -20.5 -21 -64.5v-209q0 -54 -26.5 -88q-26.5 -34 -82.5 -34h-117v110h50q27 0 39.5 13.5q12.5 13.5 12.5 46.5v195q0 44 21 66.5q21 22.5 49 27.5l0 10q-27 4 -48.5 30q-21.5 26 -21.5 68v194q0 31 -12 45.5q-12 14.5 -41 14.5h-49v110h119q53 0 80 -31.5q27 -31.5 27 -89.5z" />
-<glyph unicode="&#126;" horiz-adv-x="527" d="M28 378q47 38 84.5 52.5q37.5 14.5 69.5 14.5q29 0 54 -8.5q25 -8.5 48 -18q23 -9.5 45.5 -18q22.5 -8.5 45.5 -8.5q18 0 37 6q19 6 40 23l47 -103q-36 -27 -66 -38q-30 -11 -56 -11q-28 0 -52 9q-24 9 -46.5 20q-22.5 11 -45.5 20q-23 9 -49 9q-24 0 -51.5 -10.5q-27.5 -10.5 -60.5 -38.5z" />
-<glyph unicode="&#160;" horiz-adv-x="253" />
-<glyph unicode="&#161;" horiz-adv-x="293" d="M191 -200h-134v329l26 162h82l26 -162zM44 435q0 35 22 55.5q22 20.5 58 20.5q38 0 60 -20.5q22 -20.5 22 -55.5q0 -35 -22 -56q-22 -21 -60 -21q-36 0 -58 21t-22 56z" />
-<glyph unicode="&#162;" horiz-adv-x="567" d="M489 31q-17 -13 -42.5 -22.5q-25.5 -9.5 -54.5 -14.5l0 -94h-121v89q-51 7 -86.5 28.5q-35.5 21.5 -58 55q-22.5 33.5 -32.5 78.5q-10 45 -10 99q0 112 48 178.5q48 66.5 139 81.5l0 90h121v-90q28 -4 50 -10.5q22 -6.5 40 -15.5l-30 -106q-15 7 -32 11q-17 4 -35 6l0 -291q23 3 41.5 10q18.5 7 32.5 15zM212 250q0 -51 19 -89.5q19 -38.5 64 -52.5l0 286q-42 -11 -62.5 -45.5t-20.5 -98.5z" />
-<glyph unicode="&#163;" horiz-adv-x="567" d="M51 394h68q-13 24 -22.5 54q-9.5 30 -9.5 72q0 49 16.5 85.5q16.5 36.5 46 60.5q29.5 24 70.5 36q41 12 90 12q61 0 111 -11.5q50 -11.5 86 -28.5l-42 -116q-20 11 -55 22.5q-35 11.5 -84 11.5q-48 0 -75 -22.5q-27 -22.5 -27 -67.5q0 -34 12.5 -58.5q12.5 -24.5 27.5 -49.5l141 0v-107h-98q3 -17 3 -34q0 -30 -10 -63q-10 -33 -31 -54l-43 -31v-5l67 15h230v-115h-472v115h2q31 1 54.5 11q23.5 10 39 26.5q15.5 16.5 23.5 38.5q8 22 8 46q0 27 -6 50l-121 0z" />
-<glyph unicode="&#164;" horiz-adv-x="567" d="M81 622l78 -77l19 -37q20 15 47.5 22.5q27.5 7.5 57.5 7.5q29 0 57.5 -7.5q28.5 -7.5 47.5 -21.5l20 36l78 77l77 -80l-77 -78l-37 -16q14 -21 20 -47.5q6 -26.5 6 -55.5q0 -30 -6.5 -56.5q-6.5 -26.5 -19.5 -44.5l37 -16l77 -78l-77 -80l-78 77l-18 37q-19 -14 -48.5 -22q-29.5 -8 -58.5 -8q-30 0 -57.5 7.5q-27.5 7.5 -47.5 21.5l-19 -36l-78 -77l-76 80l77 78l36 17q-12 21 -19 45.5q-7 24.5 -7 54.5q0 29 7.5 54q7.5 25 20.5 48l-38 17l-77 78zM201 346q0 -38 23 -62q23 -24 60 -24q37 0 59.5 24q22.5 24 22.5 62q0 36 -22.5 61q-22.5 25 -59.5 25q-37 0 -60 -25t-23 -61z" />
-<glyph unicode="&#165;" horiz-adv-x="567" d="M85 337h90l-189 363h163l128 -263l14 -74h5l15 76l124 261h147l-190 -363h91v-80h-130v-58h130v-80h-130v-119h-137v119h-131v80h131v58l-131 0z" />
-<glyph unicode="&#166;" horiz-adv-x="227" d="M60 213h107v-343h-107zM167 357h-107v343l107 0z" />
-<glyph unicode="&#167;" horiz-adv-x="530" d="M49 353q0 31 15 60.5q15 29.5 41 52.5l41 14q-26 16 -43 40.5q-17 24.5 -17 65.5q0 56 43.5 92q43.5 36 131.5 36q59 0 110 -10q51 -10 78 -23l-32 -105q-23 11 -61 19.5q-38 8.5 -73 8.5q-37 0 -52 -11q-15 -11 -15 -28q0 -18 19.5 -28q19.5 -10 49 -18q29.5 -8 64 -18q34.5 -10 64 -28q29.5 -18 49 -48q19.5 -30 19.5 -78q0 -31 -14.5 -60q-14.5 -29 -40.5 -52l-45 -14q27 -16 45 -41q18 -25 18 -66q0 -63 -49 -95.5q-49 -32.5 -130 -32.5q-68 0 -113.5 13.5q-45.5 13.5 -74.5 29.5l34 100q23 -11 56 -22q33 -11 77 -11q37 0 53.5 9.5q16.5 9.5 16.5 30.5q0 19 -19.5 29.5q-19.5 10.5 -49 19q-29.5 8.5 -64 18.5q-34.5 10 -64 27.5q-29.5 17.5 -49 46.5q-19.5 29 -19.5 76zt0 0zM351 345q0 18 -8.5 30q-8.5 12 -24.5 21.5q-16 9.5 -39 17.5q-23 8 -52 17q-20 -12 -34 -31.5q-14 -19.5 -14 -44.5q0 -35 32 -52q32 -17 88 -33q22 12 37 32t15 43z" />
-<glyph unicode="&#168;" horiz-adv-x="479" d="M60 651q0 32 19.5 51q19.5 19 51.5 19q32 0 50.5 -19q18.5 -19 18.5 -51q0 -30 -18.5 -49q-18.5 -19 -50.5 -19q-32 0 -51.5 19q-19.5 19 -19.5 49zt0 0zM279 651q0 32 18.5 51q18.5 19 50.5 19q32 0 51.5 -19q19.5 -19 19.5 -51q0 -30 -19.5 -49q-19.5 -19 -51.5 -19q-32 0 -50.5 19t-18.5 49z" />
-<glyph unicode="&#169;" horiz-adv-x="833" d="M55 290q0 83 28 149.5q28 66.5 76.5 113.5q48.5 47 114.5 72.5q66 25.5 142 25.5q76 0 141.5 -25.5q65.5 -25.5 114.5 -72.5q49 -47 77 -113.5q28 -66.5 28 -149.5q0 -83 -28 -149.5q-28 -66.5 -77 -113.5q-49 -47 -114.5 -72.5q-65.5 -25.5 -141.5 -25.5q-83 0 -150 25.5q-67 25.5 -114 72.5q-47 47 -72 113.5q-25 66.5 -25 149.5zt0 0zM153 290q0 -62 19.5 -112q19.5 -50 55 -84.5q35.5 -34.5 83.5 -53q48 -18.5 105 -18.5q57 0 105.5 18.5q48.5 18.5 84 53q35.5 34.5 55 84.5q19.5 50 19.5 112q0 62 -19.5 112q-19.5 50 -55 84.5q-35.5 34.5 -84 53q-48.5 18.5 -105.5 18.5q-57 0 -105 -18.5q-48 -18.5 -83.5 -53q-35.5 -34.5 -55 -84.5q-19.5 -50 -19.5 -112zt0 0zM541 131q-22 -14 -55.5 -22.5q-33.5 -8.5 -71.5 -8.5q-81 0 -123.5 51q-42.5 51 -42.5 139q0 91 45.5 140.5q45.5 49.5 120.5 49.5q37 0 65.5 -8.5q28.5 -8.5 54.5 -23.5l-32 -87q-18 9 -32.5 12q-14.5 3 -28.5 3q-29 0 -46 -19q-17 -19 -17 -67q0 -86 70 -86q19 0 34 3.5q15 3.5 30 11.5z" />
-<glyph unicode="&#170;" horiz-adv-x="420" d="M61 674q26 14 73.5 24q47.5 10 106.5 10q76 0 104 -27.5q28 -27.5 28 -84.5q0 -60 -3 -116q-3 -56 8 -100l-101 0l-13 46h-4q-13 -17 -37 -33.5q-24 -16.5 -67 -16.5q-52 0 -83 27.5q-31 27.5 -31 71.5q0 33 17.5 55q17.5 22 47 35q29.5 13 69 17.5q39.5 4.5 83.5 2.5q2 26 -7 37.5q-9 11.5 -44 11.5q-40 0 -72.5 -8q-32.5 -8 -52.5 -16zM194 454q32 0 45 11.5q13 11.5 20 23.5l0 35q-43 5 -72.5 -2q-29.5 -7 -29.5 -34q0 -16 10.5 -25t26.5 -9z" />
-<glyph unicode="&#171;" horiz-adv-x="488" d="M223 261l154 216l71 -56l-81 -122l-46 -39l46 -35l87 -121l-71 -56zM29 259l160 230l79 -62l-87 -126l-48 -41l48 -36l93 -124l-79 -62z" />
-<glyph unicode="&#172;" horiz-adv-x="527" d="M45 412h442v-226h-120v114l-322 0z" />
-<glyph unicode="&#173;" horiz-adv-x="360" d="M54 345h251v-115l-251 0z" />
-<glyph unicode="&#174;" horiz-adv-x="690" d="M62 451q0 67 22.5 119.5q22.5 52.5 61.5 88.5q39 36 90.5 55q51.5 19 108.5 19q59 0 110.5 -19q51.5 -19 89.5 -55q38 -36 60 -88.5q22 -52.5 22 -119.5q0 -68 -22.5 -120.5q-22.5 -52.5 -61 -88.5q-38.5 -36 -90 -54.5q-51.5 -18.5 -108.5 -18.5q-59 0 -110.5 18.5q-51.5 18.5 -90 54.5q-38.5 36 -60.5 88.5q-22 52.5 -22 120.5zt0 0zM156 451q0 -48 15.5 -84.5q15.5 -36.5 41.5 -60.5q26 -24 60 -36q34 -12 72 -12q40 0 74.5 11.5q34.5 11.5 59.5 35.5q25 24 39.5 60.5q14.5 36.5 14.5 85.5q0 48 -15 84q-15 36 -40.5 60q-25.5 24 -60 36q-34.5 12 -72.5 12q-42 0 -77 -13q-35 -13 -60 -38q-25 -25 -38.5 -60.5q-13.5 -35.5 -13.5 -80.5zt0 0zM242 581q16 5 45 7.5q29 2.5 55 2.5q42 0 72 -17.5q30 -17.5 30 -60.5q0 -32 -20.5 -49q-20.5 -17 -50.5 -19l28 -14l65 -109h-61l-63 104l-48 15v-119h-52zM331 546q-11 0 -21 -0.5q-10 -0.5 -16 -3.5l0 -71h34q29 0 45 9q16 9 16 31q0 35 -58 35z" />
-<glyph unicode="&#175;" horiz-adv-x="443" d="M60 658h323v-92l-323 0z" />
-<glyph unicode="&#176;" horiz-adv-x="437" d="M60 548q0 37 13 67.5q13 30.5 35.5 52.5q22.5 22 52 34q29.5 12 63.5 12q34 0 64.5 -11q30.5 -11 53.5 -32.5q23 -21.5 36 -52.5q13 -31 13 -70q0 -39 -13 -69.5q-13 -30.5 -36 -51.5q-23 -21 -53.5 -32q-30.5 -11 -64.5 -11q-34 0 -63.5 11q-29.5 11 -52 32q-22.5 21 -35.5 51.5q-13 30.5 -13 69.5zt0 0zM160 548q0 -32 19 -50.5q19 -18.5 46 -18.5q27 0 47 18.5q20 18.5 20 50.5q0 32 -20 51.5q-20 19.5 -47 19.5q-27 0 -46 -19.5t-19 -51.5z" />
-<glyph unicode="&#177;" horiz-adv-x="527" d="M43 518h162v164h117v-164h163v-112h-163v-107h-117v107h-162zM43 253h442v-112l-442 0z" />
-<glyph unicode="&#178;" horiz-adv-x="412" d="M348 680q0 -59 -30 -101q-30 -42 -72 -80l-47 -25v-4l59 11h106v-101h-313v71q26 18 58 42q32 24 59.5 51.5q27.5 27.5 46 56.5q18.5 29 18.5 55q0 49 -56 49q-27 0 -51 -8.5q-24 -8.5 -42 -19.5l-34 90q35 21 74.5 30.5q39.5 9.5 75.5 9.5q71 0 109.5 -32.5t38.5 -94.5z" />
-<glyph unicode="&#179;" horiz-adv-x="412" d="M169 468q44 0 62.5 14q18.5 14 19.5 37q-1 23 -20 36q-19 13 -70 13h-42v38l73 80l43 25l-58 -6h-115v95h283v-62l-87 -92l-34 -18v-5l30 3q52 -2 81.5 -31.5q29.5 -29.5 30.5 -83.5q-1 -36 -15.5 -62q-14.5 -26 -39 -43q-24.5 -17 -57.5 -25q-33 -8 -68 -8q-39 0 -72.5 6.5q-33.5 6.5 -57.5 17.5l23 90q41 -19 90 -19z" />
-<glyph unicode="&#180;" horiz-adv-x="305" d="M113 720h132v-30l-111 -124l-74 0z" />
-<glyph unicode="&#181;" horiz-adv-x="569" d="M182 500v-273q0 -64 20.5 -96.5q20.5 -32.5 71.5 -32.5q46 0 74 23q28 23 40 64l0 315h130v-337q0 -41 2.5 -82.5q2.5 -41.5 12.5 -80.5l-96 0l-32 74h-4q-17 -35 -50 -60.5q-33 -25.5 -86 -25.5q-39 0 -60 14q-21 14 -39 36l-5 0l21 -105v-133h-130l0 700z" />
-<glyph unicode="&#182;" horiz-adv-x="529" d="M362 700h107v-830h-107zM178 294q-33 0 -61 16.5q-28 16.5 -48.5 45q-20.5 28.5 -31.5 65q-11 36.5 -11 77.5q0 40 13 76.5q13 36.5 37 64.5q24 28 58 44.5q34 16.5 76 16.5h74v-830l-106 0z" />
-<glyph unicode="&#183;" horiz-adv-x="253" d="M45 316q0 35 22 55.5q22 20.5 58 20.5q38 0 60 -20.5q22 -20.5 22 -55.5q0 -35 -22 -56q-22 -21 -60 -21q-36 0 -58 21t-22 56z" />
-<glyph unicode="&#184;" horiz-adv-x="332" d="M208 0l-24 -43q41 -4 64.5 -21.5q23.5 -17.5 23.5 -53.5q0 -23 -11.5 -40q-11.5 -17 -31.5 -28.5q-20 -11.5 -47 -17.5q-27 -6 -58 -6q-31 0 -64 6l9 48q7 -1 13 -1q6 0 11 0q38 0 49 9q11 9 11 21q0 28 -86 32l57 95z" />
-<glyph unicode="&#185;" horiz-adv-x="412" d="M72 480h97v164l10 46l-30 -32l-59 -39l-49 77l158 111h85v-327h88v-100l-300 0z" />
-<glyph unicode="&#186;" horiz-adv-x="419" d="M34 542q0 45 13 77q13 32 36 53q23 21 55.5 30.5q32.5 9.5 70.5 9.5q38 0 70 -9q32 -9 55.5 -29q23.5 -20 36.5 -52.5q13 -32.5 14 -79.5q-1 -47 -14 -79.5q-13 -32.5 -36.5 -52.5q-23.5 -20 -55.5 -29q-32 -9 -70 -9q-38 0 -70.5 9q-32.5 9 -55.5 29q-23 20 -36 52.5q-13 32.5 -13 79.5zt0 0zM150 542q0 -86 59 -86q31 0 44.5 18.5q13.5 18.5 14.5 67.5q-1 48 -14.5 67q-13.5 19 -44.5 19q-31 0 -45 -19t-14 -67z" />
-<glyph unicode="&#187;" horiz-adv-x="488" d="M264 266l-153 -216l-72 56l82 122l45 39l-45 35l-87 121l70 56zM459 268l-160 -230l-79 62l87 126l48 41l-48 36l-93 124l79 62z" />
-<glyph unicode="&#188;" horiz-adv-x="880" d="M609 715l85 -50l-430 -679l-86 53zM833 78h-76v-78h-101v78h-207v67l218 283h90v-261h76zM656 253l6 53h-5l-22 -49l-48 -66l-36 -32l52 8h53zM164 544l11 46l-31 -32l-59 -39l-49 77l158 111h85v-427l-115 0z" />
-<glyph unicode="&#189;" horiz-adv-x="903" d="M609 715l85 -50l-430 -679l-86 53zM841 300q0 -59 -30 -101q-30 -42 -72 -80l-47 -25v-4l59 11h106v-101h-313v71q26 18 58 42q32 24 59.5 51.5q27.5 27.5 46 56.5q18.5 29 18.5 55q0 49 -56 49q-27 0 -51 -8.5q-24 -8.5 -42 -19.5l-34 90q35 21 74.5 30.5q39.5 9.5 75.5 9.5q71 0 109.5 -32.5q38.5 -32.5 38.5 -94.5zt0 0zM164 544l11 46l-31 -32l-59 -39l-49 77l158 111h85v-427l-115 0z" />
-<glyph unicode="&#190;" horiz-adv-x="905" d="M634 715l85 -50l-430 -679l-86 53zM858 78h-76v-78h-101v78h-207v67l218 283h90v-261h76zM681 253l6 53h-5l-22 -49l-48 -66l-36 -32l52 8h53zM160 368q44 0 62.5 14q18.5 14 19.5 37q-1 23 -20 36q-19 13 -70 13h-42v38l73 80l43 25l-58 -6h-115v95h283v-62l-87 -92l-34 -18v-5l30 3q52 -2 81.5 -31.5q29.5 -29.5 30.5 -83.5q-1 -36 -15.5 -62q-14.5 -26 -39 -43q-24.5 -17 -57.5 -25q-33 -8 -68 -8q-39 0 -72.5 6.5q-33.5 6.5 -57.5 17.5l23 90q41 -19 90 -19z" />
-<glyph unicode="&#191;" horiz-adv-x="454" d="M317 293q5 -52 -4.5 -88.5q-9.5 -36.5 -27.5 -63q-18 -26.5 -40 -45.5q-22 -19 -41.5 -37q-19.5 -18 -33 -37.5q-13.5 -19.5 -13.5 -46.5q0 -35 20 -56.5q20 -21.5 70 -21.5q16 0 34 3.5q18 3.5 36 10q18 6.5 34.5 15q16.5 8.5 29.5 18.5l49 -96q-38 -26 -87 -43q-49 -17 -119 -17q-94 0 -147.5 45q-53.5 45 -53.5 123q0 51 13.5 84q13.5 33 34 56.5q20.5 23.5 44 41.5q23.5 18 44 38.5q20.5 20.5 34 47.5q13.5 27 13.5 69zM178 435q0 35 22 55.5q22 20.5 58 20.5q38 0 60 -20.5q22 -20.5 22 -55.5q0 -35 -22 -56q-22 -21 -60 -21q-36 0 -58 21t-22 56z" />
-<glyph unicode="&#192;" horiz-adv-x="605" d="M405 155h-215l-53 -155h-137l252 705h101l252 -705h-144zM225 265h150l-52 156l-21 110h-5l-21 -111zM399 752h-105l-158 88v30l159 0z" />
-<glyph unicode="&#193;" horiz-adv-x="605" d="M405 155h-215l-53 -155h-137l252 705h101l252 -705h-144zM225 265h150l-52 156l-21 110h-5l-21 -111zM309 870h159v-30l-160 -88l-103 0z" />
-<glyph unicode="&#194;" horiz-adv-x="605" d="M405 155h-215l-53 -155h-137l252 705h101l252 -705h-144zM225 265h150l-52 156l-21 110h-5l-21 -111zM257 870h96l127 -93v-39h-99l-57 41l-20 34l-21 -33l-62 -42h-97l0 40z" />
-<glyph unicode="&#195;" horiz-adv-x="605" d="M405 155h-215l-53 -155h-137l252 705h101l252 -705h-144zM225 265h150l-52 156l-21 110h-5l-21 -111zM113 800q32 35 61.5 48q29.5 13 58.5 13q22 0 44 -5.5q22 -5.5 42.5 -12q20.5 -6.5 40.5 -12q20 -5.5 38 -5.5q16 0 31 5q15 5 29 19l25 -67q-28 -26 -54.5 -36.5q-26.5 -10.5 -51.5 -10.5q-23 0 -44 5.5q-21 5.5 -41.5 12.5q-20.5 7 -40.5 12.5q-20 5.5 -39 5.5q-19 0 -37.5 -7.5q-18.5 -7.5 -37.5 -27.5z" />
-<glyph unicode="&#196;" horiz-adv-x="605" d="M405 155h-215l-53 -155h-137l252 705h101l252 -705h-144zM225 265h150l-52 156l-21 110h-5l-21 -111zM124 798q0 26 18 42q18 16 58 16q39 0 57 -16q18 -16 18 -42q0 -26 -18 -41.5q-18 -15.5 -57 -15.5q-40 0 -58 15.5q-18 15.5 -18 41.5zt0 0zM338 798q0 26 18 42q18 16 57 16q40 0 58 -16q18 -16 18 -42q0 -26 -18 -41.5q-18 -15.5 -58 -15.5q-39 0 -57 15.5t-18 41.5z" />
-<glyph unicode="&#197;" horiz-adv-x="605" d="M175 771q0 18 6 34.5q6 16.5 20.5 29q14.5 12.5 39 19.5q24.5 7 62.5 7q70 0 99 -24q29 -24 29 -66q0 -29 -16 -50.5q-16 -21.5 -57 -31.5l247 -689h-144l-56 155h-215l-53 -155h-137l246 689q-39 9 -55 31q-16 22 -16 51zt0 0zM225 265h150l-52 156l-21 110h-5l-21 -111zM259 771q0 -31 44 -31q25 0 35 8q10 8 10 23q0 17 -10.5 25q-10.5 8 -34.5 8q-44 0 -44 -33z" />
-<glyph unicode="&#198;" horiz-adv-x="862" d="M394 532l-36 -103l-84 -148h126v251zM400 170h-186l-99 -170h-144l424 700h419v-122h-277v-163h252v-122h-252v-171h282v-122l-419 0z" />
-<glyph unicode="&#199;" horiz-adv-x="559" d="M534 29q-26 -19 -65.5 -29q-39.5 -10 -83.5 -13l-16 -30q41 -4 64.5 -21.5q23.5 -17.5 23.5 -53.5q0 -23 -11.5 -40q-11.5 -17 -31.5 -28.5q-20 -11.5 -47 -17.5q-27 -6 -58 -6q-31 0 -64 6l9 48q7 -1 13 -1q6 0 11 0q38 0 49 9q11 9 11 21q0 28 -86 32l50 84q-55 7 -103 30.5q-48 23.5 -84 67.5q-36 44 -56.5 109q-20.5 65 -20.5 154q0 103 28.5 172.5q28.5 69.5 74 112q45.5 42.5 101.5 61q56 18.5 112 18.5q60 0 101.5 -8q41.5 -8 68.5 -19v-116q-50 11 -81.5 16q-31.5 5 -76.5 5q-83 0 -133.5 -59q-50.5 -59 -50.5 -183q0 -54 12 -98.5q12 -44.5 36.5 -76q24.5 -31.5 61 -49q36.5 -17.5 84.5 -17.5q45 0 76 9q31 9 54 23z" />
-<glyph unicode="&#200;" horiz-adv-x="522" d="M60 700h415v-122h-278v-163h253v-122h-253v-171h283v-122h-420zM352 752h-105l-158 88v30l159 0z" />
-<glyph unicode="&#201;" horiz-adv-x="522" d="M60 700h415v-122h-278v-163h253v-122h-253v-171h283v-122h-420zM293 870h159v-30l-160 -88l-103 0z" />
-<glyph unicode="&#202;" horiz-adv-x="522" d="M60 700h415v-122h-278v-163h253v-122h-253v-171h283v-122h-420zM219 870h96l127 -93v-39h-99l-57 41l-20 34l-21 -33l-62 -42h-97l0 40z" />
-<glyph unicode="&#203;" horiz-adv-x="522" d="M60 700h415v-122h-278v-163h253v-122h-253v-171h283v-122h-420zM84 798q0 26 18 42q18 16 58 16q39 0 57 -16q18 -16 18 -42q0 -26 -18 -41.5q-18 -15.5 -57 -15.5q-40 0 -58 15.5q-18 15.5 -18 41.5zt0 0zM298 798q0 26 18 42q18 16 57 16q40 0 58 -16q18 -16 18 -42q0 -26 -18 -41.5q-18 -15.5 -58 -15.5q-39 0 -57 15.5t-18 41.5z" />
-<glyph unicode="&#204;" horiz-adv-x="285" d="M74 700h137v-700h-137zM240 752h-105l-158 88v30l159 0z" />
-<glyph unicode="&#205;" horiz-adv-x="285" d="M74 700h137v-700h-137zM152 870h159v-30l-160 -88l-103 0z" />
-<glyph unicode="&#206;" horiz-adv-x="285" d="M74 700h137v-700h-137zM96 870h96l127 -93v-39h-99l-57 41l-20 34l-21 -33l-62 -42h-97l0 40z" />
-<glyph unicode="&#207;" horiz-adv-x="285" d="M74 700h137v-700h-137zM-39 798q0 26 18 42q18 16 58 16q39 0 57 -16q18 -16 18 -42q0 -26 -18 -41.5q-18 -15.5 -57 -15.5q-40 0 -58 15.5q-18 15.5 -18 41.5zt0 0zM175 798q0 26 18 42q18 16 57 16q40 0 58 -16q18 -16 18 -42q0 -26 -18 -41.5q-18 -15.5 -58 -15.5q-39 0 -57 15.5t-18 41.5z" />
-<glyph unicode="&#208;" horiz-adv-x="669" d="M-6 401h88v299q21 3 47.5 5q26.5 2 54.5 3q28 1 54.5 1.5q26.5 0.5 47.5 0.5q93 0 159 -26q66 -26 107 -73q41 -47 60 -112q19 -65 19 -143q0 -71 -18 -137q-18 -66 -60 -117q-42 -51 -110.5 -82q-68.5 -31 -169.5 -31q-16 0 -42.5 1q-26.5 1 -55 2.5q-28.5 1.5 -54.5 3q-26 1.5 -39 3.5l0 322h-88zM297 588q-22 0 -44.5 -1q-22.5 -1 -33.5 -3l0 -183h140v-80h-140v-207q4 -1 13.5 -1.5q9.5 -0.5 20.5 -1q11 -0.5 21 -0.5q10 0 15 0q58 0 96.5 20.5q38.5 20.5 61 54.5q22.5 34 31.5 78.5q9 44.5 9 91.5q0 41 -8 82.5q-8 41.5 -29.5 74.5q-21.5 33 -58.5 54t-94 21z" />
-<glyph unicode="&#209;" horiz-adv-x="657" d="M234 365l-55 110h-5l16 -110v-365h-130v705h100l265 -373l53 -107h5l-16 107v368h130v-705h-100zM138 800q32 35 61.5 48q29.5 13 58.5 13q22 0 44 -5.5q22 -5.5 42.5 -12q20.5 -6.5 40.5 -12q20 -5.5 38 -5.5q16 0 31 5q15 5 29 19l25 -67q-28 -26 -54.5 -36.5q-26.5 -10.5 -51.5 -10.5q-23 0 -44 5.5q-21 5.5 -41.5 12.5q-20.5 7 -40.5 12.5q-20 5.5 -39 5.5q-19 0 -37.5 -7.5q-18.5 -7.5 -37.5 -27.5z" />
-<glyph unicode="&#210;" horiz-adv-x="670" d="M38 350q0 175 77 269.5q77 94.5 220 94.5q75 0 131 -26q56 -26 93 -74q37 -48 55 -115q18 -67 18 -149q0 -175 -77.5 -269.5q-77.5 -94.5 -219.5 -94.5q-76 0 -132 26q-56 26 -92.5 74q-36.5 48 -54.5 115q-18 67 -18 149zt0 0zM182 350q0 -53 9 -97.5q9 -44.5 27.5 -76.5q18.5 -32 47.5 -50q29 -18 69 -18q73 0 113 57q40 57 40 185q0 51 -8.5 95q-8.5 44 -26.5 77q-18 33 -47 51.5q-29 18.5 -71 18.5q-73 0 -113 -58.5q-40 -58.5 -40 -183.5zt0 0zM412 752h-105l-158 88v30l159 0z" />
-<glyph unicode="&#211;" horiz-adv-x="670" d="M38 350q0 175 77 269.5q77 94.5 220 94.5q75 0 131 -26q56 -26 93 -74q37 -48 55 -115q18 -67 18 -149q0 -175 -77.5 -269.5q-77.5 -94.5 -219.5 -94.5q-76 0 -132 26q-56 26 -92.5 74q-36.5 48 -54.5 115q-18 67 -18 149zt0 0zM182 350q0 -53 9 -97.5q9 -44.5 27.5 -76.5q18.5 -32 47.5 -50q29 -18 69 -18q73 0 113 57q40 57 40 185q0 51 -8.5 95q-8.5 44 -26.5 77q-18 33 -47 51.5q-29 18.5 -71 18.5q-73 0 -113 -58.5q-40 -58.5 -40 -183.5zt0 0zM368 870h159v-30l-160 -88l-103 0z" />
-<glyph unicode="&#212;" horiz-adv-x="670" d="M38 350q0 175 77 269.5q77 94.5 220 94.5q75 0 131 -26q56 -26 93 -74q37 -48 55 -115q18 -67 18 -149q0 -175 -77.5 -269.5q-77.5 -94.5 -219.5 -94.5q-76 0 -132 26q-56 26 -92.5 74q-36.5 48 -54.5 115q-18 67 -18 149zt0 0zM182 350q0 -53 9 -97.5q9 -44.5 27.5 -76.5q18.5 -32 47.5 -50q29 -18 69 -18q73 0 113 57q40 57 40 185q0 51 -8.5 95q-8.5 44 -26.5 77q-18 33 -47 51.5q-29 18.5 -71 18.5q-73 0 -113 -58.5q-40 -58.5 -40 -183.5zt0 0zM287 870h96l127 -93v-39h-99l-57 41l-20 34l-21 -33l-62 -42h-97l0 40z" />
-<glyph unicode="&#213;" horiz-adv-x="670" d="M38 350q0 175 77 269.5q77 94.5 220 94.5q75 0 131 -26q56 -26 93 -74q37 -48 55 -115q18 -67 18 -149q0 -175 -77.5 -269.5q-77.5 -94.5 -219.5 -94.5q-76 0 -132 26q-56 26 -92.5 74q-36.5 48 -54.5 115q-18 67 -18 149zt0 0zM182 350q0 -53 9 -97.5q9 -44.5 27.5 -76.5q18.5 -32 47.5 -50q29 -18 69 -18q73 0 113 57q40 57 40 185q0 51 -8.5 95q-8.5 44 -26.5 77q-18 33 -47 51.5q-29 18.5 -71 18.5q-73 0 -113 -58.5q-40 -58.5 -40 -183.5zt0 0zM144 800q32 35 61.5 48q29.5 13 58.5 13q22 0 44 -5.5q22 -5.5 42.5 -12q20.5 -6.5 40.5 -12q20 -5.5 38 -5.5q16 0 31 5q15 5 29 19l25 -67q-28 -26 -54.5 -36.5q-26.5 -10.5 -51.5 -10.5q-23 0 -44 5.5q-21 5.5 -41.5 12.5q-20.5 7 -40.5 12.5q-20 5.5 -39 5.5q-19 0 -37.5 -7.5q-18.5 -7.5 -37.5 -27.5z" />
-<glyph unicode="&#214;" horiz-adv-x="670" d="M38 350q0 175 77 269.5q77 94.5 220 94.5q75 0 131 -26q56 -26 93 -74q37 -48 55 -115q18 -67 18 -149q0 -175 -77.5 -269.5q-77.5 -94.5 -219.5 -94.5q-76 0 -132 26q-56 26 -92.5 74q-36.5 48 -54.5 115q-18 67 -18 149zt0 0zM182 350q0 -53 9 -97.5q9 -44.5 27.5 -76.5q18.5 -32 47.5 -50q29 -18 69 -18q73 0 113 57q40 57 40 185q0 51 -8.5 95q-8.5 44 -26.5 77q-18 33 -47 51.5q-29 18.5 -71 18.5q-73 0 -113 -58.5q-40 -58.5 -40 -183.5zt0 0zM150 798q0 26 18 42q18 16 58 16q39 0 57 -16q18 -16 18 -42q0 -26 -18 -41.5q-18 -15.5 -57 -15.5q-40 0 -58 15.5q-18 15.5 -18 41.5zt0 0zM364 798q0 26 18 42q18 16 57 16q40 0 58 -16q18 -16 18 -42q0 -26 -18 -41.5q-18 -15.5 -58 -15.5q-39 0 -57 15.5t-18 41.5z" />
-<glyph unicode="&#215;" horiz-adv-x="527" d="M134 547l131 -130l130 130l79 -81l-130 -127l130 -129l-79 -82l-130 131l-132 -132l-79 81l131 131l-129 127z" />
-<glyph unicode="&#216;" horiz-adv-x="670" d="M111 86q-37 48 -55 114.5q-18 66.5 -18 149.5q0 175 77 269.5q77 94.5 220 94.5q45 0 83 -10q38 -10 69 -28l25 39l85 -50l-35 -56q35 -48 52.5 -113.5q17.5 -65.5 17.5 -145.5q0 -175 -77.5 -269.5q-77.5 -94.5 -219.5 -94.5q-44 0 -80 8.5q-36 8.5 -67 24.5l-21 -33l-86 53zM182 350q0 -36 4 -68q4 -32 12 -59l219 342q-35 27 -82 27q-73 0 -113 -58.5q-40 -58.5 -40 -183.5zt0 0zM488 350q0 33 -3 63.5q-3 30.5 -11 56.5l-215 -340q33 -22 76 -22q73 0 113 57t40 185z" />
-<glyph unicode="&#217;" horiz-adv-x="627" d="M440 700h130v-452q0 -68 -18 -117q-18 -49 -50 -81q-32 -32 -78 -47q-46 -15 -101 -15q-266 0 -266 243v469h137v-442q0 -41 7.5 -69.5q7.5 -28.5 23.5 -46q16 -17.5 40 -25q24 -7.5 56 -7.5q63 0 91 35q28 35 28 113zM395 752h-105l-158 88v30l159 0z" />
-<glyph unicode="&#218;" horiz-adv-x="627" d="M440 700h130v-452q0 -68 -18 -117q-18 -49 -50 -81q-32 -32 -78 -47q-46 -15 -101 -15q-266 0 -266 243v469h137v-442q0 -41 7.5 -69.5q7.5 -28.5 23.5 -46q16 -17.5 40 -25q24 -7.5 56 -7.5q63 0 91 35q28 35 28 113zM365 870h159v-30l-160 -88l-103 0z" />
-<glyph unicode="&#219;" horiz-adv-x="627" d="M440 700h130v-452q0 -68 -18 -117q-18 -49 -50 -81q-32 -32 -78 -47q-46 -15 -101 -15q-266 0 -266 243v469h137v-442q0 -41 7.5 -69.5q7.5 -28.5 23.5 -46q16 -17.5 40 -25q24 -7.5 56 -7.5q63 0 91 35q28 35 28 113zM273 870h96l127 -93v-39h-99l-57 41l-20 34l-21 -33l-62 -42h-97l0 40z" />
-<glyph unicode="&#220;" horiz-adv-x="627" d="M440 700h130v-452q0 -68 -18 -117q-18 -49 -50 -81q-32 -32 -78 -47q-46 -15 -101 -15q-266 0 -266 243v469h137v-442q0 -41 7.5 -69.5q7.5 -28.5 23.5 -46q16 -17.5 40 -25q24 -7.5 56 -7.5q63 0 91 35q28 35 28 113zM133 798q0 26 18 42q18 16 58 16q39 0 57 -16q18 -16 18 -42q0 -26 -18 -41.5q-18 -15.5 -57 -15.5q-40 0 -58 15.5q-18 15.5 -18 41.5zt0 0zM347 798q0 26 18 42q18 16 57 16q40 0 58 -16q18 -16 18 -42q0 -26 -18 -41.5q-18 -15.5 -58 -15.5q-39 0 -57 15.5t-18 41.5z" />
-<glyph unicode="&#221;" horiz-adv-x="592" d="M228 260l-230 440h163l128 -263l14 -74h5l15 76l124 261h147l-229 -439v-261h-137zM326 870h159v-30l-160 -88l-103 0z" />
-<glyph unicode="&#222;" horiz-adv-x="572" d="M60 700h137v-72q14 1 28 1.5q14 0.5 28 0.5q52 0 104.5 -8.5q52.5 -8.5 94.5 -34q42 -25.5 68.5 -71q26.5 -45.5 26.5 -118.5q0 -66 -23 -111.5q-23 -45.5 -61 -74.5q-38 -29 -86.5 -42q-48.5 -13 -100.5 -13q-5 0 -16 0q-11 0 -23 0.5q-12 0.5 -23.5 1.5q-11.5 1 -16.5 2l0 -161h-137zM264 512q-20 0 -38 -1.5q-18 -1.5 -29 -3.5l0 -227q4 -1 12 -2q8 -1 17 -1.5q9 -0.5 17.5 -0.5q8.5 0 12.5 0q27 0 53.5 5q26.5 5 47.5 18.5q21 13.5 33.5 37.5q12.5 24 12.5 63q0 33 -12 54.5q-12 21.5 -31.5 34.5q-19.5 13 -44.5 18t-51 5z" />
-<glyph unicode="&#223;" horiz-adv-x="630" d="M81 390h-69v110h69q0 58 16 97.5q16 39.5 44.5 64q28.5 24.5 68 35.5q39.5 11 86.5 11q51 0 91.5 -11.5q40.5 -11.5 69 -32.5q28.5 -21 44 -50.5q15.5 -29.5 15.5 -65.5q0 -39 -17.5 -63q-17.5 -24 -39 -41q-21.5 -17 -39 -32q-17.5 -15 -17.5 -37q0 -18 14.5 -29q14.5 -11 37 -20.5q22.5 -9.5 48 -20q25.5 -10.5 48 -27.5q22.5 -17 37 -43.5q14.5 -26.5 14.5 -67.5q0 -35 -11 -67.5q-11 -32.5 -34.5 -58q-23.5 -25.5 -59 -40.5q-35.5 -15 -83.5 -15q-47 0 -86.5 11.5q-39.5 11.5 -67.5 28.5l35 97q23 -13 46 -23q23 -10 62 -10q30 0 49.5 20.5q19.5 20.5 19.5 49.5q0 21 -14.5 34q-14.5 13 -37 23.5q-22.5 10.5 -48 20.5q-25.5 10 -48 25.5q-22.5 15.5 -37 38.5q-14.5 23 -14.5 59q0 43 17.5 67q17.5 24 39 40.5q21.5 16.5 39 30.5q17.5 14 17.5 38q0 13 -7 24.5q-7 11.5 -19 19.5q-12 8 -27 13q-15 5 -30 5q-48 0 -70.5 -23.5q-22.5 -23.5 -22.5 -87.5v-488l-129 0z" />
-<glyph unicode="&#224;" horiz-adv-x="496" d="M54 471q40 18 95 28.5q55 10.5 115 10.5q52 0 87 -12.5q35 -12.5 55.5 -35.5q20.5 -23 29 -55q8.5 -32 8.5 -72q0 -44 -3 -88.5q-3 -44.5 -3.5 -87.5q-0.5 -43 2.5 -83.5q3 -40.5 15 -76.5l-106 0l-21 69h-5q-20 -31 -55.5 -53.5q-35.5 -22.5 -91.5 -22.5q-35 0 -63 10.5q-28 10.5 -48 30q-20 19.5 -31 46q-11 26.5 -11 59.5q0 46 20.5 77.5q20.5 31.5 59 51q38.5 19.5 92 27q53.5 7.5 119.5 4.5q7 56 -8 80.5q-15 24.5 -67 24.5q-39 0 -82.5 -8q-43.5 -8 -71.5 -21zM219 99q39 0 62 17.5q23 17.5 34 37.5l0 65q-31 3 -59.5 1q-28.5 -2 -50.5 -9q-22 -7 -35 -20q-13 -13 -13 -33q0 -28 16.5 -43.5q16.5 -15.5 45.5 -15.5zt0 0zM311 566h-72l-124 124v30l136 0z" />
-<glyph unicode="&#225;" horiz-adv-x="496" d="M54 471q40 18 95 28.5q55 10.5 115 10.5q52 0 87 -12.5q35 -12.5 55.5 -35.5q20.5 -23 29 -55q8.5 -32 8.5 -72q0 -44 -3 -88.5q-3 -44.5 -3.5 -87.5q-0.5 -43 2.5 -83.5q3 -40.5 15 -76.5l-106 0l-21 69h-5q-20 -31 -55.5 -53.5q-35.5 -22.5 -91.5 -22.5q-35 0 -63 10.5q-28 10.5 -48 30q-20 19.5 -31 46q-11 26.5 -11 59.5q0 46 20.5 77.5q20.5 31.5 59 51q38.5 19.5 92 27q53.5 7.5 119.5 4.5q7 56 -8 80.5q-15 24.5 -67 24.5q-39 0 -82.5 -8q-43.5 -8 -71.5 -21zM219 99q39 0 62 17.5q23 17.5 34 37.5l0 65q-31 3 -59.5 1q-28.5 -2 -50.5 -9q-22 -7 -35 -20q-13 -13 -13 -33q0 -28 16.5 -43.5q16.5 -15.5 45.5 -15.5zt0 0zM237 720h132v-30l-111 -124l-74 0z" />
-<glyph unicode="&#226;" horiz-adv-x="496" d="M54 471q40 18 95 28.5q55 10.5 115 10.5q52 0 87 -12.5q35 -12.5 55.5 -35.5q20.5 -23 29 -55q8.5 -32 8.5 -72q0 -44 -3 -88.5q-3 -44.5 -3.5 -87.5q-0.5 -43 2.5 -83.5q3 -40.5 15 -76.5l-106 0l-21 69h-5q-20 -31 -55.5 -53.5q-35.5 -22.5 -91.5 -22.5q-35 0 -63 10.5q-28 10.5 -48 30q-20 19.5 -31 46q-11 26.5 -11 59.5q0 46 20.5 77.5q20.5 31.5 59 51q38.5 19.5 92 27q53.5 7.5 119.5 4.5q7 56 -8 80.5q-15 24.5 -67 24.5q-39 0 -82.5 -8q-43.5 -8 -71.5 -21zM219 99q39 0 62 17.5q23 17.5 34 37.5l0 65q-31 3 -59.5 1q-28.5 -2 -50.5 -9q-22 -7 -35 -20q-13 -13 -13 -33q0 -28 16.5 -43.5q16.5 -15.5 45.5 -15.5zt0 0zM216 732h86l111 -182h-103l-39 66l-17 49l-17 -49l-45 -66l-99 0z" />
-<glyph unicode="&#227;" horiz-adv-x="496" d="M54 471q40 18 95 28.5q55 10.5 115 10.5q52 0 87 -12.5q35 -12.5 55.5 -35.5q20.5 -23 29 -55q8.5 -32 8.5 -72q0 -44 -3 -88.5q-3 -44.5 -3.5 -87.5q-0.5 -43 2.5 -83.5q3 -40.5 15 -76.5l-106 0l-21 69h-5q-20 -31 -55.5 -53.5q-35.5 -22.5 -91.5 -22.5q-35 0 -63 10.5q-28 10.5 -48 30q-20 19.5 -31 46q-11 26.5 -11 59.5q0 46 20.5 77.5q20.5 31.5 59 51q38.5 19.5 92 27q53.5 7.5 119.5 4.5q7 56 -8 80.5q-15 24.5 -67 24.5q-39 0 -82.5 -8q-43.5 -8 -71.5 -21zM219 99q39 0 62 17.5q23 17.5 34 37.5l0 65q-31 3 -59.5 1q-28.5 -2 -50.5 -9q-22 -7 -35 -20q-13 -13 -13 -33q0 -28 16.5 -43.5q16.5 -15.5 45.5 -15.5zt0 0zM86 658q31 37 57.5 51q26.5 14 50.5 14q20 0 38.5 -7q18.5 -7 36.5 -15q18 -8 35 -15q17 -7 35 -7q14 0 28.5 6q14.5 6 30.5 21l20 -70q-29 -32 -53.5 -44q-24.5 -12 -47.5 -12q-20 0 -39 6.5q-19 6.5 -37 14.5q-18 8 -36 14.5q-18 6.5 -36 6.5q-15 0 -31 -6.5q-16 -6.5 -33 -22.5z" />
-<glyph unicode="&#228;" horiz-adv-x="496" d="M54 471q40 18 95 28.5q55 10.5 115 10.5q52 0 87 -12.5q35 -12.5 55.5 -35.5q20.5 -23 29 -55q8.5 -32 8.5 -72q0 -44 -3 -88.5q-3 -44.5 -3.5 -87.5q-0.5 -43 2.5 -83.5q3 -40.5 15 -76.5l-106 0l-21 69h-5q-20 -31 -55.5 -53.5q-35.5 -22.5 -91.5 -22.5q-35 0 -63 10.5q-28 10.5 -48 30q-20 19.5 -31 46q-11 26.5 -11 59.5q0 46 20.5 77.5q20.5 31.5 59 51q38.5 19.5 92 27q53.5 7.5 119.5 4.5q7 56 -8 80.5q-15 24.5 -67 24.5q-39 0 -82.5 -8q-43.5 -8 -71.5 -21zM219 99q39 0 62 17.5q23 17.5 34 37.5l0 65q-31 3 -59.5 1q-28.5 -2 -50.5 -9q-22 -7 -35 -20q-13 -13 -13 -33q0 -28 16.5 -43.5q16.5 -15.5 45.5 -15.5zt0 0zM75 651q0 32 19.5 51q19.5 19 51.5 19q32 0 50.5 -19q18.5 -19 18.5 -51q0 -30 -18.5 -49q-18.5 -19 -50.5 -19q-32 0 -51.5 19q-19.5 19 -19.5 49zt0 0zM294 651q0 32 18.5 51q18.5 19 50.5 19q32 0 51.5 -19q19.5 -19 19.5 -51q0 -30 -19.5 -49q-19.5 -19 -51.5 -19q-32 0 -50.5 19t-18.5 49z" />
-<glyph unicode="&#229;" horiz-adv-x="496" d="M54 471q40 18 95 28.5q55 10.5 115 10.5q52 0 87 -12.5q35 -12.5 55.5 -35.5q20.5 -23 29 -55q8.5 -32 8.5 -72q0 -44 -3 -88.5q-3 -44.5 -3.5 -87.5q-0.5 -43 2.5 -83.5q3 -40.5 15 -76.5l-106 0l-21 69h-5q-20 -31 -55.5 -53.5q-35.5 -22.5 -91.5 -22.5q-35 0 -63 10.5q-28 10.5 -48 30q-20 19.5 -31 46q-11 26.5 -11 59.5q0 46 20.5 77.5q20.5 31.5 59 51q38.5 19.5 92 27q53.5 7.5 119.5 4.5q7 56 -8 80.5q-15 24.5 -67 24.5q-39 0 -82.5 -8q-43.5 -8 -71.5 -21zM219 99q39 0 62 17.5q23 17.5 34 37.5l0 65q-31 3 -59.5 1q-28.5 -2 -50.5 -9q-22 -7 -35 -20q-13 -13 -13 -33q0 -28 16.5 -43.5q16.5 -15.5 45.5 -15.5zt0 0zM144 647q0 42 28.5 69q28.5 27 82.5 27q51 0 81 -24.5q30 -24.5 30 -71.5q0 -39 -29.5 -66.5q-29.5 -27.5 -81.5 -27.5q-53 0 -82 25.5q-29 25.5 -29 68.5zt0 0zM216 647q0 -16 12 -24.5q12 -8.5 27 -8.5q17 0 28 8q11 8 11 25q0 17 -11.5 25.5q-11.5 8.5 -27.5 8.5q-15 0 -27 -8t-12 -26z" />
-<glyph unicode="&#230;" horiz-adv-x="785" d="M219 99q39 0 62 17.5q23 17.5 34 37.5l0 65q-31 3 -59.5 1q-28.5 -2 -50.5 -9q-22 -7 -35 -20q-13 -13 -13 -33q0 -28 16.5 -43.5q16.5 -15.5 45.5 -15.5zt0 0zM350 76q-27 -34 -66.5 -59q-39.5 -25 -107.5 -25q-35 0 -63 10.5q-28 10.5 -48 30q-20 19.5 -31 46q-11 26.5 -11 59.5q0 46 20.5 77.5q20.5 31.5 58.5 51q38 19.5 91.5 27q53.5 7.5 119.5 4.5q7 56 -7.5 80.5q-14.5 24.5 -66.5 24.5q-39 0 -79.5 -10.5q-40.5 -10.5 -71.5 -25.5l-34 94q38 20 94 34.5q56 14.5 116 14.5q52 0 83 -13.5q31 -13.5 51 -40.5q25 28 65 43q40 15 87 15q38 0 74 -10q36 -10 64 -33q28 -23 45 -62q17 -39 17 -97q0 -21 -2.5 -44.5q-2.5 -23.5 -7.5 -50.5l-301 0q4 -63 33.5 -95q29.5 -32 95.5 -32q41 0 73.5 12.5q32.5 12.5 49.5 25.5l43 -85q-30 -24 -81.5 -40.5q-51.5 -16.5 -109.5 -16.5q-64 0 -112.5 23.5q-48.5 23.5 -75.5 66.5zM548 410q-51 0 -75.5 -30.5q-24.5 -30.5 -29.5 -81.5l187 0q3 54 -17 83t-65 29z" />
-<glyph unicode="&#231;" horiz-adv-x="433" d="M411 31q-23 -17 -52.5 -27q-29.5 -10 -62.5 -15l-18 -32q41 -4 64.5 -21.5q23.5 -17.5 23.5 -53.5q0 -23 -11.5 -40q-11.5 -17 -31.5 -28.5q-20 -11.5 -47 -17.5q-27 -6 -58 -6q-31 0 -64 6l9 48q7 -1 13 -1q6 0 11 0q38 0 49 9q11 9 11 21q0 28 -86 32l50 84q-49 6 -83 27.5q-34 21.5 -55 55q-21 33.5 -30.5 79q-9.5 45.5 -9.5 99.5q0 127 57 195.5q57 68.5 166 68.5q55 0 88.5 -9q33.5 -9 60.5 -23l-31 -106q-23 11 -45.5 17q-22.5 6 -51.5 6q-54 0 -82 -35.5q-28 -35.5 -28 -113.5q0 -32 7 -59q7 -27 21 -47q14 -20 36.5 -31.5q22.5 -11.5 52.5 -11.5q33 0 56 8.5q23 8.5 41 20.5z" />
-<glyph unicode="&#232;" horiz-adv-x="508" d="M457 43q-30 -24 -81.5 -40.5q-51.5 -16.5 -109.5 -16.5q-121 0 -177 70.5q-56 70.5 -56 193.5q0 132 63 198q63 66 177 66q38 0 74 -10q36 -10 64 -33q28 -23 45 -62q17 -39 17 -97q0 -21 -2.5 -45q-2.5 -24 -7.5 -50l-300 0q3 -63 32.5 -95q29.5 -32 95.5 -32q41 0 73.5 12.5q32.5 12.5 49.5 25.5zM271 410q-51 0 -75.5 -30.5q-24.5 -30.5 -29.5 -81.5l186 0q4 54 -16.5 83q-20.5 29 -64.5 29zt0 0zM329 566h-72l-124 124v30l136 0z" />
-<glyph unicode="&#233;" horiz-adv-x="508" d="M457 43q-30 -24 -81.5 -40.5q-51.5 -16.5 -109.5 -16.5q-121 0 -177 70.5q-56 70.5 -56 193.5q0 132 63 198q63 66 177 66q38 0 74 -10q36 -10 64 -33q28 -23 45 -62q17 -39 17 -97q0 -21 -2.5 -45q-2.5 -24 -7.5 -50l-300 0q3 -63 32.5 -95q29.5 -32 95.5 -32q41 0 73.5 12.5q32.5 12.5 49.5 25.5zM271 410q-51 0 -75.5 -30.5q-24.5 -30.5 -29.5 -81.5l186 0q4 54 -16.5 83q-20.5 29 -64.5 29zt0 0zM274 720h132v-30l-111 -124l-74 0z" />
-<glyph unicode="&#234;" horiz-adv-x="508" d="M457 43q-30 -24 -81.5 -40.5q-51.5 -16.5 -109.5 -16.5q-121 0 -177 70.5q-56 70.5 -56 193.5q0 132 63 198q63 66 177 66q38 0 74 -10q36 -10 64 -33q28 -23 45 -62q17 -39 17 -97q0 -21 -2.5 -45q-2.5 -24 -7.5 -50l-300 0q3 -63 32.5 -95q29.5 -32 95.5 -32q41 0 73.5 12.5q32.5 12.5 49.5 25.5zM271 410q-51 0 -75.5 -30.5q-24.5 -30.5 -29.5 -81.5l186 0q4 54 -16.5 83q-20.5 29 -64.5 29zt0 0zM221 732h86l111 -182h-103l-39 66l-17 49l-17 -49l-45 -66l-99 0z" />
-<glyph unicode="&#235;" horiz-adv-x="508" d="M457 43q-30 -24 -81.5 -40.5q-51.5 -16.5 -109.5 -16.5q-121 0 -177 70.5q-56 70.5 -56 193.5q0 132 63 198q63 66 177 66q38 0 74 -10q36 -10 64 -33q28 -23 45 -62q17 -39 17 -97q0 -21 -2.5 -45q-2.5 -24 -7.5 -50l-300 0q3 -63 32.5 -95q29.5 -32 95.5 -32q41 0 73.5 12.5q32.5 12.5 49.5 25.5zM271 410q-51 0 -75.5 -30.5q-24.5 -30.5 -29.5 -81.5l186 0q4 54 -16.5 83q-20.5 29 -64.5 29zt0 0zM82 651q0 32 19.5 51q19.5 19 51.5 19q32 0 50.5 -19q18.5 -19 18.5 -51q0 -30 -18.5 -49q-18.5 -19 -50.5 -19q-32 0 -51.5 19q-19.5 19 -19.5 49zt0 0zM301 651q0 32 18.5 51q18.5 19 50.5 19q32 0 51.5 -19q19.5 -19 19.5 -51q0 -30 -19.5 -49q-19.5 -19 -51.5 -19q-32 0 -50.5 19t-18.5 49z" />
-<glyph unicode="&#236;" horiz-adv-x="269" d="M70 500h130v-500h-130zM193 566h-72l-124 124v30l136 0z" />
-<glyph unicode="&#237;" horiz-adv-x="269" d="M70 500h130v-500h-130zM124 720h132v-30l-111 -124l-74 0z" />
-<glyph unicode="&#238;" horiz-adv-x="269" d="M70 500h130v-500h-130zM92 732h86l111 -182h-103l-39 66l-17 49l-17 -49l-45 -66l-99 0z" />
-<glyph unicode="&#239;" horiz-adv-x="269" d="M70 500h130v-500h-130zM-46 651q0 32 19.5 51q19.5 19 51.5 19q32 0 50.5 -19q18.5 -19 18.5 -51q0 -30 -18.5 -49q-18.5 -19 -50.5 -19q-32 0 -51.5 19q-19.5 19 -19.5 49zt0 0zM173 651q0 32 18.5 51q18.5 19 50.5 19q32 0 51.5 -19q19.5 -19 19.5 -51q0 -30 -19.5 -49q-19.5 -19 -51.5 -19q-32 0 -50.5 19t-18.5 49z" />
-<glyph unicode="&#240;" horiz-adv-x="563" d="M163 243q0 -72 33 -109q33 -37 88 -37q52 0 85 44.5q33 44.5 33 138.5q0 13 -1.5 34q-1.5 21 -5.5 33q-16 23 -48 32.5q-32 9.5 -62 9.5q-60 0 -91 -41.5q-31 -41.5 -31 -104.5zt0 0zM197 584l44 30q-34 15 -69 21l52 80q25 -7 57 -20q23 -9 47 -22l53 36l42 -55l-33 -23q12 -9 23 -20q32 -30 57 -73.5q25 -43.5 40.5 -101.5q15.5 -58 15.5 -134q0 -81 -18.5 -140.5q-18.5 -59.5 -51.5 -98.5q-33 -39 -79 -58q-46 -19 -101 -19q-59 0 -104 19q-45 19 -75 53.5q-30 34.5 -45 82q-15 47.5 -15 104.5q0 54 17 100q17 46 47.5 80.5q30.5 34.5 73.5 54q43 19.5 94 19.5q38 0 70.5 -10.5q32.5 -10.5 52.5 -30.5q-12 36 -34 66q-22 29 -50 51l-68 -46z" />
-<glyph unicode="&#241;" horiz-adv-x="545" d="M363 0v284q0 61 -17.5 88q-17.5 27 -59.5 27q-37 0 -62.5 -21.5q-25.5 -21.5 -36.5 -53.5l0 -324h-130v500h103l15 -66h4q23 32 61 56q38 24 98 24q37 0 66 -10q29 -10 49 -33q20 -23 30 -62.5q10 -39.5 10 -97.5v-311zM107 658q31 37 57.5 51q26.5 14 50.5 14q20 0 38.5 -7q18.5 -7 36.5 -15q18 -8 35 -15q17 -7 35 -7q14 0 28.5 6q14.5 6 30.5 21l20 -70q-29 -32 -53.5 -44q-24.5 -12 -47.5 -12q-20 0 -39 6.5q-19 6.5 -37 14.5q-18 8 -36 14.5q-18 6.5 -36 6.5q-15 0 -31 -6.5q-16 -6.5 -33 -22.5z" />
-<glyph unicode="&#242;" horiz-adv-x="537" d="M33 250q0 127 62 195.5q62 68.5 174 68.5q60 0 104 -19q44 -19 73 -53.5q29 -34.5 43.5 -83.5q14.5 -49 14.5 -108q0 -127 -61.5 -195.5q-61.5 -68.5 -173.5 -68.5q-60 0 -104 19q-44 19 -73.5 53.5q-29.5 34.5 -44 83.5q-14.5 49 -14.5 108zt0 0zM167 250q0 -33 6 -61q6 -28 18 -49q12 -21 31.5 -32.5q19.5 -11.5 46.5 -11.5q51 0 76 37q25 37 25 117q0 69 -23 111.5q-23 42.5 -78 42.5q-48 0 -75 -36q-27 -36 -27 -118zt0 0zM331 566h-72l-124 124v30l136 0z" />
-<glyph unicode="&#243;" horiz-adv-x="537" d="M33 250q0 127 62 195.5q62 68.5 174 68.5q60 0 104 -19q44 -19 73 -53.5q29 -34.5 43.5 -83.5q14.5 -49 14.5 -108q0 -127 -61.5 -195.5q-61.5 -68.5 -173.5 -68.5q-60 0 -104 19q-44 19 -73.5 53.5q-29.5 34.5 -44 83.5q-14.5 49 -14.5 108zt0 0zM167 250q0 -33 6 -61q6 -28 18 -49q12 -21 31.5 -32.5q19.5 -11.5 46.5 -11.5q51 0 76 37q25 37 25 117q0 69 -23 111.5q-23 42.5 -78 42.5q-48 0 -75 -36q-27 -36 -27 -118zt0 0zM275 720h132v-30l-111 -124l-74 0z" />
-<glyph unicode="&#244;" horiz-adv-x="537" d="M33 250q0 127 62 195.5q62 68.5 174 68.5q60 0 104 -19q44 -19 73 -53.5q29 -34.5 43.5 -83.5q14.5 -49 14.5 -108q0 -127 -61.5 -195.5q-61.5 -68.5 -173.5 -68.5q-60 0 -104 19q-44 19 -73.5 53.5q-29.5 34.5 -44 83.5q-14.5 49 -14.5 108zt0 0zM167 250q0 -33 6 -61q6 -28 18 -49q12 -21 31.5 -32.5q19.5 -11.5 46.5 -11.5q51 0 76 37q25 37 25 117q0 69 -23 111.5q-23 42.5 -78 42.5q-48 0 -75 -36q-27 -36 -27 -118zt0 0zM231 732h86l111 -182h-103l-39 66l-17 49l-17 -49l-45 -66l-99 0z" />
-<glyph unicode="&#245;" horiz-adv-x="537" d="M33 250q0 127 62 195.5q62 68.5 174 68.5q60 0 104 -19q44 -19 73 -53.5q29 -34.5 43.5 -83.5q14.5 -49 14.5 -108q0 -127 -61.5 -195.5q-61.5 -68.5 -173.5 -68.5q-60 0 -104 19q-44 19 -73.5 53.5q-29.5 34.5 -44 83.5q-14.5 49 -14.5 108zt0 0zM167 250q0 -33 6 -61q6 -28 18 -49q12 -21 31.5 -32.5q19.5 -11.5 46.5 -11.5q51 0 76 37q25 37 25 117q0 69 -23 111.5q-23 42.5 -78 42.5q-48 0 -75 -36q-27 -36 -27 -118zt0 0zM104 658q31 37 57.5 51q26.5 14 50.5 14q20 0 38.5 -7q18.5 -7 36.5 -15q18 -8 35 -15q17 -7 35 -7q14 0 28.5 6q14.5 6 30.5 21l20 -70q-29 -32 -53.5 -44q-24.5 -12 -47.5 -12q-20 0 -39 6.5q-19 6.5 -37 14.5q-18 8 -36 14.5q-18 6.5 -36 6.5q-15 0 -31 -6.5q-16 -6.5 -33 -22.5z" />
-<glyph unicode="&#246;" horiz-adv-x="537" d="M33 250q0 127 62 195.5q62 68.5 174 68.5q60 0 104 -19q44 -19 73 -53.5q29 -34.5 43.5 -83.5q14.5 -49 14.5 -108q0 -127 -61.5 -195.5q-61.5 -68.5 -173.5 -68.5q-60 0 -104 19q-44 19 -73.5 53.5q-29.5 34.5 -44 83.5q-14.5 49 -14.5 108zt0 0zM167 250q0 -33 6 -61q6 -28 18 -49q12 -21 31.5 -32.5q19.5 -11.5 46.5 -11.5q51 0 76 37q25 37 25 117q0 69 -23 111.5q-23 42.5 -78 42.5q-48 0 -75 -36q-27 -36 -27 -118zt0 0zM88 651q0 32 19.5 51q19.5 19 51.5 19q32 0 50.5 -19q18.5 -19 18.5 -51q0 -30 -18.5 -49q-18.5 -19 -50.5 -19q-32 0 -51.5 19q-19.5 19 -19.5 49zt0 0zM307 651q0 32 18.5 51q18.5 19 50.5 19q32 0 51.5 -19q19.5 -19 19.5 -51q0 -30 -19.5 -49q-19.5 -19 -51.5 -19q-32 0 -50.5 19t-18.5 49z" />
-<glyph unicode="&#247;" horiz-adv-x="527" d="M43 394h442v-112h-442zM184 532q0 35 22 55.5q22 20.5 58 20.5q38 0 60 -20.5q22 -20.5 22 -55.5q0 -35 -22 -56q-22 -21 -60 -21q-36 0 -58 21q-22 21 -22 56zt0 0zM184 145q0 35 22 55.5q22 20.5 58 20.5q38 0 60 -20.5q22 -20.5 22 -55.5q0 -35 -22 -56q-22 -21 -60 -21q-36 0 -58 21t-22 56z" />
-<glyph unicode="&#248;" horiz-adv-x="536" d="M33 250q0 127 61.5 195.5q61.5 68.5 173.5 68.5q32 0 59 -5.5q27 -5.5 50 -16.5l24 34l80 -59l-27 -38q25 -34 37 -79.5q12 -45.5 12 -99.5q0 -127 -61.5 -195.5q-61.5 -68.5 -173.5 -68.5q-34 0 -62.5 6.5q-28.5 6.5 -52.5 17.5l-25 -34l-83 60l31 43q-22 33 -32.5 76.5q-10.5 43.5 -10.5 94.5zt0 0zM369 250q0 37 -8 71l-149 -207q22 -18 56 -18q51 0 76 37q25 37 25 117zt0 0zM167 250q0 -35 6 -65l147 204q-21 15 -52 15q-48 0 -74.5 -36t-26.5 -118z" />
-<glyph unicode="&#249;" horiz-adv-x="538" d="M182 500v-284q0 -61 14.5 -88q14.5 -27 56.5 -27q37 0 61.5 22q24.5 22 36.5 54l0 323h130v-348q0 -41 4 -80.5q4 -39.5 12 -71.5l-98 0l-23 74h-4q-23 -38 -64 -63q-41 -25 -97 -25q-38 0 -68 10q-30 10 -50 33q-20 23 -30.5 62q-10.5 39 -10.5 98v311zM318 566h-72l-124 124v30l136 0z" />
-<glyph unicode="&#250;" horiz-adv-x="538" d="M182 500v-284q0 -61 14.5 -88q14.5 -27 56.5 -27q37 0 61.5 22q24.5 22 36.5 54l0 323h130v-348q0 -41 4 -80.5q4 -39.5 12 -71.5l-98 0l-23 74h-4q-23 -38 -64 -63q-41 -25 -97 -25q-38 0 -68 10q-30 10 -50 33q-20 23 -30.5 62q-10.5 39 -10.5 98v311zM261 720h132v-30l-111 -124l-74 0z" />
-<glyph unicode="&#251;" horiz-adv-x="538" d="M182 500v-284q0 -61 14.5 -88q14.5 -27 56.5 -27q37 0 61.5 22q24.5 22 36.5 54l0 323h130v-348q0 -41 4 -80.5q4 -39.5 12 -71.5l-98 0l-23 74h-4q-23 -38 -64 -63q-41 -25 -97 -25q-38 0 -68 10q-30 10 -50 33q-20 23 -30.5 62q-10.5 39 -10.5 98v311zM232 732h86l111 -182h-103l-39 66l-17 49l-17 -49l-45 -66l-99 0z" />
-<glyph unicode="&#252;" horiz-adv-x="538" d="M182 500v-284q0 -61 14.5 -88q14.5 -27 56.5 -27q37 0 61.5 22q24.5 22 36.5 54l0 323h130v-348q0 -41 4 -80.5q4 -39.5 12 -71.5l-98 0l-23 74h-4q-23 -38 -64 -63q-41 -25 -97 -25q-38 0 -68 10q-30 10 -50 33q-20 23 -30.5 62q-10.5 39 -10.5 98v311zM88 651q0 32 19.5 51q19.5 19 51.5 19q32 0 50.5 -19q18.5 -19 18.5 -51q0 -30 -18.5 -49q-18.5 -19 -50.5 -19q-32 0 -51.5 19q-19.5 19 -19.5 49zt0 0zM307 651q0 32 18.5 51q18.5 19 50.5 19q32 0 51.5 -19q19.5 -19 19.5 -51q0 -30 -19.5 -49q-19.5 -19 -51.5 -19q-32 0 -50.5 19t-18.5 49z" />
-<glyph unicode="&#253;" horiz-adv-x="478" d="M239 219l18 -78h6l13 79l76 280h134l-152 -451q-19 -56 -36.5 -102.5q-17.5 -46.5 -38.5 -80.5q-21 -34 -46.5 -52.5q-25.5 -18.5 -60.5 -18.5q-52 0 -83 17l24 104q15 -6 30 -6q23 0 44.5 19.5q21.5 19.5 32.5 70.5l-209 500h156zM254 720h132v-30l-111 -124l-74 0z" />
-<glyph unicode="&#254;" horiz-adv-x="540" d="M57 700h130v-243h4q21 26 50.5 41.5q29.5 15.5 77.5 15.5q94 0 141 -59.5q47 -59.5 47 -191.5q0 -64 -15 -115.5q-15 -51.5 -44.5 -87.5q-29.5 -36 -72 -55q-42.5 -19 -97.5 -19q-31 0 -51 4.5q-20 4.5 -40 14.5l0 -205h-130zM280 404q-36 0 -58.5 -19q-22.5 -19 -34.5 -57l0 -208q14 -11 30.5 -17.5q16.5 -6.5 43.5 -6.5q56 0 84 39.5q28 39.5 28 130.5q0 66 -22 102t-71 36z" />
-<glyph unicode="&#255;" horiz-adv-x="478" d="M239 219l18 -78h6l13 79l76 280h134l-152 -451q-19 -56 -36.5 -102.5q-17.5 -46.5 -38.5 -80.5q-21 -34 -46.5 -52.5q-25.5 -18.5 -60.5 -18.5q-52 0 -83 17l24 104q15 -6 30 -6q23 0 44.5 19.5q21.5 19.5 32.5 70.5l-209 500h156zM66 651q0 32 19.5 51q19.5 19 51.5 19q32 0 50.5 -19q18.5 -19 18.5 -51q0 -30 -18.5 -49q-18.5 -19 -50.5 -19q-32 0 -51.5 19q-19.5 19 -19.5 49zt0 0zM285 651q0 32 18.5 51q18.5 19 50.5 19q32 0 51.5 -19q19.5 -19 19.5 -51q0 -30 -19.5 -49q-19.5 -19 -51.5 -19q-32 0 -50.5 19t-18.5 49z" />
-<glyph unicode="&#256;" horiz-adv-x="605" d="M405 155h-215l-53 -155h-137l252 705h101l252 -705h-144zM225 265h150l-52 156l-21 110h-5l-21 -111zM129 856h343v-89l-343 0z" />
-<glyph unicode="&#257;" horiz-adv-x="496" d="M54 471q40 18 95 28.5q55 10.5 115 10.5q52 0 87 -12.5q35 -12.5 55.5 -35.5q20.5 -23 29 -55q8.5 -32 8.5 -72q0 -44 -3 -88.5q-3 -44.5 -3.5 -87.5q-0.5 -43 2.5 -83.5q3 -40.5 15 -76.5l-106 0l-21 69h-5q-20 -31 -55.5 -53.5q-35.5 -22.5 -91.5 -22.5q-35 0 -63 10.5q-28 10.5 -48 30q-20 19.5 -31 46q-11 26.5 -11 59.5q0 46 20.5 77.5q20.5 31.5 59 51q38.5 19.5 92 27q53.5 7.5 119.5 4.5q7 56 -8 80.5q-15 24.5 -67 24.5q-39 0 -82.5 -8q-43.5 -8 -71.5 -21zM219 99q39 0 62 17.5q23 17.5 34 37.5l0 65q-31 3 -59.5 1q-28.5 -2 -50.5 -9q-22 -7 -35 -20q-13 -13 -13 -33q0 -28 16.5 -43.5q16.5 -15.5 45.5 -15.5zt0 0zM91 658h323v-92l-323 0z" />
-<glyph unicode="&#258;" horiz-adv-x="605" d="M405 155h-215l-53 -155h-137l252 705h101l252 -705h-144zM225 265h150l-52 156l-21 110h-5l-21 -111zM164 875q20 -26 58 -40q38 -14 85 -14q48 0 82.5 15q34.5 15 54.5 39l49 -32q-12 -29 -32 -50q-20 -21 -45 -35q-25 -14 -53.5 -21q-28.5 -7 -56.5 -7q-27 0 -55.5 6q-28.5 6 -54.5 18.5q-26 12.5 -48 33q-22 20.5 -36 50.5z" />
-<glyph unicode="&#259;" horiz-adv-x="496" d="M54 471q40 18 95 28.5q55 10.5 115 10.5q52 0 87 -12.5q35 -12.5 55.5 -35.5q20.5 -23 29 -55q8.5 -32 8.5 -72q0 -44 -3 -88.5q-3 -44.5 -3.5 -87.5q-0.5 -43 2.5 -83.5q3 -40.5 15 -76.5l-106 0l-21 69h-5q-20 -31 -55.5 -53.5q-35.5 -22.5 -91.5 -22.5q-35 0 -63 10.5q-28 10.5 -48 30q-20 19.5 -31 46q-11 26.5 -11 59.5q0 46 20.5 77.5q20.5 31.5 59 51q38.5 19.5 92 27q53.5 7.5 119.5 4.5q7 56 -8 80.5q-15 24.5 -67 24.5q-39 0 -82.5 -8q-43.5 -8 -71.5 -21zM219 99q39 0 62 17.5q23 17.5 34 37.5l0 65q-31 3 -59.5 1q-28.5 -2 -50.5 -9q-22 -7 -35 -20q-13 -13 -13 -33q0 -28 16.5 -43.5q16.5 -15.5 45.5 -15.5zt0 0zM143 720q17 -30 47.5 -44.5q30.5 -14.5 64.5 -14.5q34 0 62.5 15q28.5 15 43.5 44l60 -27q-3 -24 -16.5 -47.5q-13.5 -23.5 -35.5 -41.5q-22 -18 -51.5 -29q-29.5 -11 -63.5 -11q-66 0 -113 33.5q-47 33.5 -61 90.5z" />
-<glyph unicode="&#260;" horiz-adv-x="605" d="M405 155h-215l-53 -155h-137l252 705h101l252 -705h-21q-58 -22 -58 -73q0 -26 22 -38.5q22 -12.5 62 7.5l19 -62q-15 -12 -47.5 -23.5q-32.5 -11.5 -67.5 -11.5q-56 0 -85.5 25q-29.5 25 -29.5 66q0 38 23 65.5q23 27.5 64 44.5l-25 0zM225 265h150l-52 156l-21 110h-5l-21 -111z" />
-<glyph unicode="&#261;" horiz-adv-x="496" d="M54 466q38 21 89.5 32.5q51.5 11.5 120.5 11.5q52 0 87 -12.5q35 -12.5 55.5 -35.5q20.5 -23 29 -55q8.5 -32 8.5 -72q0 -44 -3 -88.5q-3 -44.5 -3.5 -87.5q-0.5 -43 2.5 -83.5q3 -40.5 15 -76.5l-23 0q-56 -24 -56 -72q0 -26 22 -38.5q22 -12.5 62 7.5l19 -62q-15 -12 -47.5 -23.5q-32.5 -11.5 -67.5 -11.5q-56 0 -85.5 25q-29.5 25 -29.5 66q0 40 26.5 68.5q26.5 28.5 71.5 45.5l-19 64h-5q-20 -31 -55.5 -53.5q-35.5 -22.5 -91.5 -22.5q-35 0 -63 10.5q-28 10.5 -48 30q-20 19.5 -31 46q-11 26.5 -11 59.5q0 46 20.5 77.5q20.5 31.5 58.5 51q38 19.5 91.5 27q53.5 7.5 119.5 4.5q7 56 -7.5 80.5q-14.5 24.5 -66.5 24.5q-39 0 -79.5 -8.5q-40.5 -8.5 -71.5 -22.5zM219 99q39 0 62 17.5q23 17.5 34 37.5l0 65q-31 3 -59.5 1q-28.5 -2 -50.5 -9q-22 -7 -35 -20q-13 -13 -13 -33q0 -28 16.5 -43.5t45.5 -15.5z" />
-<glyph unicode="&#262;" horiz-adv-x="559" d="M534 29q-32 -23 -81.5 -33q-49.5 -10 -101.5 -10q-63 0 -119.5 19.5q-56.5 19.5 -99.5 63q-43 43.5 -68.5 113q-25.5 69.5 -25.5 168.5q0 103 28.5 172.5q28.5 69.5 74 112q45.5 42.5 101.5 61q56 18.5 112 18.5q60 0 101.5 -8q41.5 -8 68.5 -19v-116q-50 11 -81.5 16q-31.5 5 -76.5 5q-83 0 -133.5 -59q-50.5 -59 -50.5 -183q0 -54 12 -98.5q12 -44.5 36.5 -76q24.5 -31.5 61 -49q36.5 -17.5 84.5 -17.5q45 0 76 9q31 9 54 23zM376 870h159v-30l-160 -88l-103 0z" />
-<glyph unicode="&#263;" horiz-adv-x="433" d="M411 31q-30 -22 -72.5 -33.5q-42.5 -11.5 -87.5 -11.5q-60 0 -101.5 19q-41.5 19 -67.5 53.5q-26 34.5 -37.5 83.5q-11.5 49 -11.5 108q0 127 57 195.5q57 68.5 166 68.5q55 0 88.5 -9q33.5 -9 60.5 -23l-31 -106q-23 11 -45.5 17q-22.5 6 -51.5 6q-54 0 -82 -35.5q-28 -35.5 -28 -113.5q0 -32 7 -59q7 -27 21 -47q14 -20 36.5 -31.5q22.5 -11.5 52.5 -11.5q33 0 56 8.5q23 8.5 41 20.5zM250 720h132v-30l-111 -124l-74 0z" />
-<glyph unicode="&#264;" horiz-adv-x="559" d="M534 29q-32 -23 -81.5 -33q-49.5 -10 -101.5 -10q-63 0 -119.5 19.5q-56.5 19.5 -99.5 63q-43 43.5 -68.5 113q-25.5 69.5 -25.5 168.5q0 103 28.5 172.5q28.5 69.5 74 112q45.5 42.5 101.5 61q56 18.5 112 18.5q60 0 101.5 -8q41.5 -8 68.5 -19v-116q-50 11 -81.5 16q-31.5 5 -76.5 5q-83 0 -133.5 -59q-50.5 -59 -50.5 -183q0 -54 12 -98.5q12 -44.5 36.5 -76q24.5 -31.5 61 -49q36.5 -17.5 84.5 -17.5q45 0 76 9q31 9 54 23zM288 870h96l127 -93v-39h-99l-57 41l-20 34l-21 -33l-62 -42h-97l0 40z" />
-<glyph unicode="&#265;" horiz-adv-x="433" d="M411 31q-30 -22 -72.5 -33.5q-42.5 -11.5 -87.5 -11.5q-60 0 -101.5 19q-41.5 19 -67.5 53.5q-26 34.5 -37.5 83.5q-11.5 49 -11.5 108q0 127 57 195.5q57 68.5 166 68.5q55 0 88.5 -9q33.5 -9 60.5 -23l-31 -106q-23 11 -45.5 17q-22.5 6 -51.5 6q-54 0 -82 -35.5q-28 -35.5 -28 -113.5q0 -32 7 -59q7 -27 21 -47q14 -20 36.5 -31.5q22.5 -11.5 52.5 -11.5q33 0 56 8.5q23 8.5 41 20.5zM204 732h86l111 -182h-103l-39 66l-17 49l-17 -49l-45 -66l-99 0z" />
-<glyph unicode="&#268;" horiz-adv-x="559" d="M534 29q-32 -23 -81.5 -33q-49.5 -10 -101.5 -10q-63 0 -119.5 19.5q-56.5 19.5 -99.5 63q-43 43.5 -68.5 113q-25.5 69.5 -25.5 168.5q0 103 28.5 172.5q28.5 69.5 74 112q45.5 42.5 101.5 61q56 18.5 112 18.5q60 0 101.5 -8q41.5 -8 68.5 -19v-116q-50 11 -81.5 16q-31.5 5 -76.5 5q-83 0 -133.5 -59q-50.5 -59 -50.5 -183q0 -54 12 -98.5q12 -44.5 36.5 -76q24.5 -31.5 61 -49q36.5 -17.5 84.5 -17.5q45 0 76 9q31 9 54 23zM386 737h-94l-127 94v39h105l53 -45l19 -30l21 29l56 46h100l0 -40z" />
-<glyph unicode="&#269;" horiz-adv-x="433" d="M411 31q-30 -22 -72.5 -33.5q-42.5 -11.5 -87.5 -11.5q-60 0 -101.5 19q-41.5 19 -67.5 53.5q-26 34.5 -37.5 83.5q-11.5 49 -11.5 108q0 127 57 195.5q57 68.5 166 68.5q55 0 88.5 -9q33.5 -9 60.5 -23l-31 -106q-23 11 -45.5 17q-22.5 6 -51.5 6q-54 0 -82 -35.5q-28 -35.5 -28 -113.5q0 -32 7 -59q7 -27 21 -47q14 -20 36.5 -31.5q22.5 -11.5 52.5 -11.5q33 0 56 8.5q23 8.5 41 20.5zM286 550h-91l-115 182h110l39 -66l16 -49l18 49l45 66l101 0z" />
-<glyph unicode="&#270;" horiz-adv-x="647" d="M60 700q21 3 47.5 5q26.5 2 54.5 3q28 1 54.5 1.5q26.5 0.5 47.5 0.5q93 0 159 -26q66 -26 107 -73q41 -47 60 -112q19 -65 19 -143q0 -71 -18 -137q-18 -66 -60 -117q-42 -51 -110.5 -82q-68.5 -31 -169.5 -31q-16 0 -42.5 1q-26.5 1 -55 2.5q-28.5 1.5 -54.5 3q-26 1.5 -39 3.5zM275 588q-22 0 -44.5 -1q-22.5 -1 -33.5 -3l0 -469q4 -1 13.5 -1.5q9.5 -0.5 20.5 -1q11 -0.5 21 -1q10 -0.5 15 -0.5q58 0 96.5 20.5q38.5 20.5 61 54.5q22.5 34 31.5 78.5q9 44.5 9 91.5q0 41 -8 82.5q-8 41.5 -29.5 74.5q-21.5 33 -58.5 54q-37 21 -94 21zt0 0zM328 737h-94l-127 94v39h105l53 -45l19 -30l21 29l56 46h100l0 -40z" />
-<glyph unicode="&#271;" horiz-adv-x="639" d="M482 176q0 -42 1 -84q1 -42 9 -93l-93 0l-18 65h-4q-20 -35 -57.5 -56.5q-37.5 -21.5 -88.5 -21.5q-94 0 -146 62q-52 62 -52 194q0 128 58 199q58 71 170 71q31 0 51 -3.5q20 -3.5 40 -11.5l0 203h130zM261 96q38 0 60 18.5q22 18.5 31 53.5l0 212q-14 11 -31 16.5q-17 5.5 -44 5.5q-55 0 -82.5 -37q-27.5 -37 -27.5 -127q0 -64 22.5 -103q22.5 -39 71.5 -39zt0 0zM655 700q-2 -29 -12 -60.5q-10 -31.5 -23.5 -60q-13.5 -28.5 -28.5 -51q-15 -22.5 -27 -32.5l-58 31q17 36 26 81.5q9 45.5 9 91.5z" />
-<glyph unicode="&#272;" horiz-adv-x="669" d="M-6 401h88v299q21 3 47.5 5q26.5 2 54.5 3q28 1 54.5 1.5q26.5 0.5 47.5 0.5q93 0 159 -26q66 -26 107 -73q41 -47 60 -112q19 -65 19 -143q0 -71 -18 -137q-18 -66 -60 -117q-42 -51 -110.5 -82q-68.5 -31 -169.5 -31q-16 0 -42.5 1q-26.5 1 -55 2.5q-28.5 1.5 -54.5 3q-26 1.5 -39 3.5l0 322h-88zM297 588q-22 0 -44.5 -1q-22.5 -1 -33.5 -3l0 -183h140v-80h-140v-207q4 -1 13.5 -1.5q9.5 -0.5 20.5 -1q11 -0.5 21 -0.5q10 0 15 0q58 0 96.5 20.5q38.5 20.5 61 54.5q22.5 34 31.5 78.5q9 44.5 9 91.5q0 41 -8 82.5q-8 41.5 -29.5 74.5q-21.5 33 -58.5 54t-94 21z" />
-<glyph unicode="&#273;" horiz-adv-x="550" d="M482 641h76v-80h-76v-385q0 -42 1 -84q1 -42 9 -93l-93 0l-18 65h-4q-20 -35 -57.5 -56.5q-37.5 -21.5 -88.5 -21.5q-94 0 -146 62q-52 62 -52 194q0 128 58 199q58 71 170 71q31 0 51 -3.5q20 -3.5 40 -11.5l0 64h-148v80h148v59h130zM261 96q38 0 60 18.5q22 18.5 31 53.5l0 212q-14 11 -31 16.5q-17 5.5 -44 5.5q-55 0 -82.5 -37q-27.5 -37 -27.5 -127q0 -64 22.5 -103t71.5 -39z" />
-<glyph unicode="&#274;" horiz-adv-x="522" d="M60 700h415v-122h-278v-163h253v-122h-253v-171h283v-122h-420zM95 856h343v-89l-343 0z" />
-<glyph unicode="&#275;" horiz-adv-x="508" d="M457 43q-30 -24 -81.5 -40.5q-51.5 -16.5 -109.5 -16.5q-121 0 -177 70.5q-56 70.5 -56 193.5q0 132 63 198q63 66 177 66q38 0 74 -10q36 -10 64 -33q28 -23 45 -62q17 -39 17 -97q0 -21 -2.5 -45q-2.5 -24 -7.5 -50l-300 0q3 -63 32.5 -95q29.5 -32 95.5 -32q41 0 73.5 12.5q32.5 12.5 49.5 25.5zM271 410q-51 0 -75.5 -30.5q-24.5 -30.5 -29.5 -81.5l186 0q4 54 -16.5 83q-20.5 29 -64.5 29zt0 0zM97 658h323v-92l-323 0z" />
-<glyph unicode="&#278;" horiz-adv-x="522" d="M60 700h415v-122h-278v-163h253v-122h-253v-171h283v-122h-420zM191 799q0 25 21.5 43q21.5 18 64.5 18q43 0 66 -18q23 -18 23 -43q0 -26 -23 -44q-23 -18 -66 -18q-43 0 -64.5 18t-21.5 44z" />
-<glyph unicode="&#279;" horiz-adv-x="508" d="M457 43q-30 -24 -81.5 -40.5q-51.5 -16.5 -109.5 -16.5q-121 0 -177 70.5q-56 70.5 -56 193.5q0 132 63 198q63 66 177 66q38 0 74 -10q36 -10 64 -33q28 -23 45 -62q17 -39 17 -97q0 -21 -2.5 -45q-2.5 -24 -7.5 -50l-300 0q3 -63 32.5 -95q29.5 -32 95.5 -32q41 0 73.5 12.5q32.5 12.5 49.5 25.5zM271 410q-51 0 -75.5 -30.5q-24.5 -30.5 -29.5 -81.5l186 0q4 54 -16.5 83q-20.5 29 -64.5 29zt0 0zM186 641q0 29 21.5 49.5q21.5 20.5 59.5 20.5q38 0 61.5 -20.5q23.5 -20.5 23.5 -49.5q0 -29 -23.5 -48.5q-23.5 -19.5 -61.5 -19.5q-38 0 -59.5 19.5t-21.5 48.5z" />
-<glyph unicode="&#280;" horiz-adv-x="522" d="M60 700h415v-122h-278v-163h253v-122h-253v-171h283v-122h-27q-58 -22 -58 -73q0 -18 11 -30.5q11 -12.5 31 -12.5q18 0 42 12l19 -62q-15 -12 -47.5 -23.5q-32.5 -11.5 -67.5 -11.5q-56 0 -85.5 25q-29.5 25 -29.5 66q0 38 23 65.5q23 27.5 64 44.5l-295 0z" />
-<glyph unicode="&#281;" horiz-adv-x="508" d="M457 43q-25 -20 -66 -35q-48 -31 -48 -76q0 -13 6 -23.5q6 -10.5 16.5 -16.5q10.5 -6 26 -5.5q15.5 0.5 35.5 10.5l19 -62q-15 -12 -47 -24q-32 -12 -67 -12q-57 0 -86.5 27.5q-29.5 27.5 -29.5 68.5q0 28 12 51q12 23 34 40q-118 1 -173 70q-56 71 -56 194q0 132 63 198q63 66 177 66q38 0 74 -10q36 -10 64 -33q28 -23 45 -62q17 -39 17 -97q0 -21 -2.5 -45q-2.5 -24 -7.5 -50l-300 0q3 -63 32.5 -95q29.5 -32 95.5 -32q41 0 73.5 12.5q32.5 12.5 49.5 25.5zM271 410q-51 0 -75.5 -30.5q-24.5 -30.5 -29.5 -81.5l186 0q4 54 -16.5 83t-64.5 29z" />
-<glyph unicode="&#282;" horiz-adv-x="522" d="M60 700h415v-122h-278v-163h253v-122h-253v-171h283v-122h-420zM308 737h-94l-127 94v39h105l53 -45l19 -30l21 29l56 46h100l0 -40z" />
-<glyph unicode="&#283;" horiz-adv-x="508" d="M457 43q-30 -24 -81.5 -40.5q-51.5 -16.5 -109.5 -16.5q-121 0 -177 70.5q-56 70.5 -56 193.5q0 132 63 198q63 66 177 66q38 0 74 -10q36 -10 64 -33q28 -23 45 -62q17 -39 17 -97q0 -21 -2.5 -45q-2.5 -24 -7.5 -50l-300 0q3 -63 32.5 -95q29.5 -32 95.5 -32q41 0 73.5 12.5q32.5 12.5 49.5 25.5zM271 410q-51 0 -75.5 -30.5q-24.5 -30.5 -29.5 -81.5l186 0q4 54 -16.5 83q-20.5 29 -64.5 29zt0 0zM304 550h-91l-115 182h110l39 -66l16 -49l18 49l45 66l101 0z" />
-<glyph unicode="&#284;" horiz-adv-x="609" d="M307 365h261v-312q-42 -35 -100.5 -51q-58.5 -16 -115.5 -16q-67 0 -124.5 21q-57.5 21 -99.5 65.5q-42 44.5 -66 113.5q-24 69 -24 164q0 99 28.5 168.5q28.5 69.5 75 113q46.5 43.5 104.5 63q58 19.5 118 19.5q60 0 105.5 -9q45.5 -9 72.5 -19l-28 -115q-25 10 -56 15.5q-31 5.5 -79 5.5q-43 0 -79 -13q-36 -13 -62.5 -42.5q-26.5 -29.5 -41 -75.5q-14.5 -46 -14.5 -112q0 -63 14 -108.5q14 -45.5 39 -75q25 -29.5 58.5 -43.5q33.5 -14 71.5 -14q26 0 51 6.5q25 6.5 42 19.5l0 132l-151 16zM303 870h96l127 -93v-39h-99l-57 41l-20 34l-21 -33l-62 -42h-97l0 40z" />
-<glyph unicode="&#285;" horiz-adv-x="536" d="M480 0q0 -109 -59 -160.5q-59 -51.5 -165 -51.5q-72 0 -113.5 10q-41.5 10 -62.5 21l27 103q23 -9 53.5 -18q30.5 -9 75.5 -9q68 0 92.5 29.5q24.5 29.5 24.5 82.5v32h-4q-35 -47 -124 -47q-97 0 -144.5 60q-47.5 60 -47.5 188q0 134 64 203q64 69 186 69q64 0 114.5 -9q50.5 -9 82.5 -21zM260 96q38 0 58.5 17q20.5 17 31.5 51l0 225q-31 13 -77 13q-50 0 -78 -37.5q-28 -37.5 -28 -119.5q0 -73 24 -111q24 -38 69 -38zt0 0zM238 732h86l111 -182h-103l-39 66l-17 49l-17 -49l-45 -66l-99 0z" />
-<glyph unicode="&#286;" horiz-adv-x="609" d="M307 365h261v-312q-42 -35 -100.5 -51q-58.5 -16 -115.5 -16q-67 0 -124.5 21q-57.5 21 -99.5 65.5q-42 44.5 -66 113.5q-24 69 -24 164q0 99 28.5 168.5q28.5 69.5 75 113q46.5 43.5 104.5 63q58 19.5 118 19.5q60 0 105.5 -9q45.5 -9 72.5 -19l-28 -115q-25 10 -56 15.5q-31 5.5 -79 5.5q-43 0 -79 -13q-36 -13 -62.5 -42.5q-26.5 -29.5 -41 -75.5q-14.5 -46 -14.5 -112q0 -63 14 -108.5q14 -45.5 39 -75q25 -29.5 58.5 -43.5q33.5 -14 71.5 -14q26 0 51 6.5q25 6.5 42 19.5l0 132l-151 16zM196 875q20 -26 58 -40q38 -14 85 -14q48 0 82.5 15q34.5 15 54.5 39l49 -32q-12 -29 -32 -50q-20 -21 -45 -35q-25 -14 -53.5 -21q-28.5 -7 -56.5 -7q-27 0 -55.5 6q-28.5 6 -54.5 18.5q-26 12.5 -48 33q-22 20.5 -36 50.5z" />
-<glyph unicode="&#287;" horiz-adv-x="536" d="M480 0q0 -109 -59 -160.5q-59 -51.5 -165 -51.5q-72 0 -113.5 10q-41.5 10 -62.5 21l27 103q23 -9 53.5 -18q30.5 -9 75.5 -9q68 0 92.5 29.5q24.5 29.5 24.5 82.5v32h-4q-35 -47 -124 -47q-97 0 -144.5 60q-47.5 60 -47.5 188q0 134 64 203q64 69 186 69q64 0 114.5 -9q50.5 -9 82.5 -21zM260 96q38 0 58.5 17q20.5 17 31.5 51l0 225q-31 13 -77 13q-50 0 -78 -37.5q-28 -37.5 -28 -119.5q0 -73 24 -111q24 -38 69 -38zt0 0zM158 720q17 -30 47.5 -44.5q30.5 -14.5 64.5 -14.5q34 0 62.5 15q28.5 15 43.5 44l60 -27q-3 -24 -16.5 -47.5q-13.5 -23.5 -35.5 -41.5q-22 -18 -51.5 -29q-29.5 -11 -63.5 -11q-66 0 -113 33.5q-47 33.5 -61 90.5z" />
-<glyph unicode="&#290;" horiz-adv-x="609" d="M307 365h261v-312q-42 -35 -100.5 -51q-58.5 -16 -115.5 -16q-67 0 -124.5 21q-57.5 21 -99.5 65.5q-42 44.5 -66 113.5q-24 69 -24 164q0 99 28.5 168.5q28.5 69.5 75 113q46.5 43.5 104.5 63q58 19.5 118 19.5q60 0 105.5 -9q45.5 -9 72.5 -19l-28 -115q-25 10 -56 15.5q-31 5.5 -79 5.5q-43 0 -79 -13q-36 -13 -62.5 -42.5q-26.5 -29.5 -41 -75.5q-14.5 -46 -14.5 -112q0 -63 14 -108.5q14 -45.5 39 -75q25 -29.5 58.5 -43.5q33.5 -14 71.5 -14q26 0 51 6.5q25 6.5 42 19.5l0 132l-151 16zM278 -105q0 29 19.5 46q19.5 17 48.5 17q35 0 57 -23q22 -23 22 -65q0 -33 -11 -58q-11 -25 -27 -42.5q-16 -17.5 -34 -28q-18 -10.5 -31 -14.5l-34 54q14 7 28 19.5q14 12.5 16 33.5q-20 -1 -37 14.5t-17 46.5z" />
-<glyph unicode="&#291;" horiz-adv-x="536" d="M480 0q0 -109 -59 -160.5q-59 -51.5 -165 -51.5q-72 0 -113.5 10q-41.5 10 -62.5 21l27 103q23 -9 53.5 -18q30.5 -9 75.5 -9q68 0 92.5 29.5q24.5 29.5 24.5 82.5v32h-4q-35 -47 -124 -47q-97 0 -144.5 60q-47.5 60 -47.5 188q0 134 64 203q64 69 186 69q64 0 114.5 -9q50.5 -9 82.5 -21zM260 96q38 0 58.5 17q20.5 17 31.5 51l0 225q-31 13 -77 13q-50 0 -78 -37.5q-28 -37.5 -28 -119.5q0 -73 24 -111q24 -38 69 -38zt0 0zM359 614q0 -29 -19.5 -46q-19.5 -17 -48.5 -17q-35 0 -57 23q-22 23 -22 65q0 33 11 58q11 25 27 42.5q16 17.5 34 28q18 10.5 31 14.5l34 -54q-14 -7 -28 -19.5q-14 -12.5 -16 -33.5q20 1 37 -14.5t17 -46.5z" />
-<glyph unicode="&#292;" horiz-adv-x="651" d="M453 293h-256v-293h-137v700h137v-285h256v285h137v-700h-137zM278 870h96l127 -93v-39h-99l-57 41l-20 34l-21 -33l-62 -42h-97l0 40z" />
-<glyph unicode="&#293;" horiz-adv-x="545" d="M363 0v284q0 61 -17 88q-17 27 -62 27q-33 0 -60.5 -22.5q-27.5 -22.5 -36.5 -57.5l0 -319h-130v700h130v-256h4q24 32 59 51q35 19 89 19q38 0 67 -10q29 -10 48.5 -33q19.5 -23 29 -62.5q9.5 -39.5 9.5 -97.5v-311zM87 870h96l127 -93v-39h-99l-57 41l-20 34l-21 -33l-62 -42h-97l0 40z" />
-<glyph unicode="&#294;" horiz-adv-x="683" d="M2 598h75v102h137v-102h256v102h137v-102h74v-82h-74v-516h-137v293h-256v-293h-137v516h-75zM470 415v101h-256l0 -101z" />
-<glyph unicode="&#295;" horiz-adv-x="556" d="M-6 641h74v59h130v-59h161v-80h-161v-117h4q24 32 59 51q35 19 89 19q38 0 67 -10q29 -10 48.5 -33q19.5 -23 29 -62.5q9.5 -39.5 9.5 -97.5v-311h-130v284q0 61 -17 88q-17 27 -62 27q-33 0 -60.5 -22.5q-27.5 -22.5 -36.5 -57.5l0 -319h-130v561l-74 0z" />
-<glyph unicode="&#298;" horiz-adv-x="285" d="M74 700h137v-700h-137zM-26 856h343v-89l-343 0z" />
-<glyph unicode="&#299;" horiz-adv-x="269" d="M70 500h130v-500h-130zM-28 658h323v-92l-323 0z" />
-<glyph unicode="&#302;" horiz-adv-x="285" d="M74 700h137v-700h-14q-23 -12 -36 -30q-13 -18 -12 -43q0 -18 11 -30.5q11 -12.5 31 -12.5q17 0 41 12l20 -62q-15 -12 -47.5 -24q-32.5 -12 -67.5 -12q-57 0 -86 25.5q-29 25.5 -29 66.5q0 38 23 65.5q23 27.5 64 44.5l-35 0z" />
-<glyph unicode="&#303;" horiz-adv-x="270" d="M70 500h130v-500h-13q-23 -14 -35 -32q-12 -18 -12 -41q1 -18 12 -30.5q11 -12.5 31 -12.5q17 0 41 12l19 -62q-15 -12 -47 -24q-32 -12 -67 -12q-57 0 -86.5 25.5q-29.5 25.5 -29.5 66.5q0 38 23 65.5q23 27.5 64 44.5l-30 0zM51 641q0 29 21.5 49.5q21.5 20.5 59.5 20.5q38 0 61.5 -20.5q23.5 -20.5 23.5 -49.5q0 -29 -23.5 -48.5q-23.5 -19.5 -61.5 -19.5q-38 0 -59.5 19.5t-21.5 48.5z" />
-<glyph unicode="&#304;" horiz-adv-x="285" d="M74 700h137v-700h-137zM56 799q0 25 21.5 43q21.5 18 64.5 18q43 0 66 -18q23 -18 23 -43q0 -26 -23 -44q-23 -18 -66 -18q-43 0 -64.5 18t-21.5 44z" />
-<glyph unicode="&#305;" horiz-adv-x="269" d="M70 500h130v-500l-130 0z" />
-<glyph unicode="&#308;" horiz-adv-x="334" d="M131 700h137v-512q0 -40 -9 -76q-9 -36 -29.5 -63.5q-20.5 -27.5 -52.5 -44q-32 -16.5 -78 -16.5q-29 0 -63 6q-34 6 -59 17l30 112q26 -13 59 -13q42 0 53.5 31q11.5 31 11.5 82zM153 870h96l127 -93v-39h-99l-57 41l-20 34l-21 -33l-62 -42h-97l0 40z" />
-<glyph unicode="&#309;" horiz-adv-x="268" d="M69 500h130v-521q0 -91 -36 -139q-36 -48 -115 -48q-30 0 -64 7l0 109q4 0 7 -0.5q3 -0.5 6 -0.5q45 0 58.5 29q13.5 29 13.5 80zM96 732h86l111 -182h-103l-39 66l-17 49l-17 -49l-45 -66l-99 0z" />
-<glyph unicode="&#310;" horiz-adv-x="620" d="M233 299h-36v-299h-137v700h137v-310l32 14l193 296h156l-204 -294l-54 -38l56 -39l233 -329h-169zM221 -105q0 29 19.5 46q19.5 17 48.5 17q35 0 57 -23q22 -23 22 -65q0 -33 -11 -58q-11 -25 -27 -42.5q-16 -17.5 -34 -28q-18 -10.5 -31 -14.5l-34 54q14 7 28 19.5q14 12.5 16 33.5q-20 -1 -37 14.5t-17 46.5z" />
-<glyph unicode="&#311;" horiz-adv-x="491" d="M222 207h-35v-207h-130v700h130v-413l30 14l114 199h143l-120 -190l-51 -38l55 -39l135 -233h-149zM179 -105q0 29 19.5 46q19.5 17 48.5 17q35 0 57 -23q22 -23 22 -65q0 -33 -11 -58q-11 -25 -27 -42.5q-16 -17.5 -34 -28q-18 -10.5 -31 -14.5l-34 54q14 7 28 19.5q14 12.5 16 33.5q-20 -1 -37 14.5t-17 46.5z" />
-<glyph unicode="&#313;" horiz-adv-x="514" d="M503 0h-443v700h137v-578h306zM208 870h159v-30l-160 -88l-103 0z" />
-<glyph unicode="&#314;" horiz-adv-x="294" d="M191 168q0 -35 9 -51q9 -16 29 -16q12 0 23.5 2q11.5 2 28.5 9l14 -102q-16 -8 -49 -16q-33 -8 -68 -8q-57 0 -87 26.5q-30 26.5 -30 87.5v600h130zM174 870h159v-30l-160 -88l-103 0z" />
-<glyph unicode="&#315;" horiz-adv-x="514" d="M503 0h-443v700h137v-578h306zM181 -105q0 29 19.5 46q19.5 17 48.5 17q35 0 57 -23q22 -23 22 -65q0 -33 -11 -58q-11 -25 -27 -42.5q-16 -17.5 -34 -28q-18 -10.5 -31 -14.5l-34 54q14 7 28 19.5q14 12.5 16 33.5q-20 -1 -37 14.5t-17 46.5z" />
-<glyph unicode="&#316;" horiz-adv-x="294" d="M191 168q0 -35 9 -51q9 -16 29 -16q12 0 23.5 2q11.5 2 28.5 9l14 -102q-16 -8 -49 -16q-33 -8 -68 -8q-57 0 -87 26.5q-30 26.5 -30 87.5v600h130zM95 -105q0 29 19.5 46q19.5 17 48.5 17q35 0 57 -23q22 -23 22 -65q0 -33 -11 -58q-11 -25 -27 -42.5q-16 -17.5 -34 -28q-18 -10.5 -31 -14.5l-34 54q14 7 28 19.5q14 12.5 16 33.5q-20 -1 -37 14.5t-17 46.5z" />
-<glyph unicode="&#317;" horiz-adv-x="514" d="M503 0h-443v700h137v-578h306zM463 700q-2 -29 -12 -60.5q-10 -31.5 -23.5 -60q-13.5 -28.5 -28.5 -51q-15 -22.5 -27 -32.5l-58 31q17 36 26 81.5q9 45.5 9 91.5z" />
-<glyph unicode="&#318;" horiz-adv-x="294" d="M191 168q0 -35 9 -51q9 -16 29 -16q12 0 23.5 2q11.5 2 28.5 9l14 -102q-16 -8 -49 -16q-33 -8 -68 -8q-57 0 -87 26.5q-30 26.5 -30 87.5v600h130zM366 700q-2 -29 -12 -60.5q-10 -31.5 -23.5 -60q-13.5 -28.5 -28.5 -51q-15 -22.5 -27 -32.5l-58 31q17 36 26 81.5q9 45.5 9 91.5z" />
-<glyph unicode="&#321;" horiz-adv-x="525" d="M3 318l68 45v337h137v-245l100 67v-125l-100 -66v-209h306v-122h-443v241l-68 -44z" />
-<glyph unicode="&#322;" horiz-adv-x="319" d="M6 307l79 53v340h130v-253l96 64v-125l-96 -63v-155q0 -35 9 -51q9 -16 29 -16q12 0 23.5 2q11.5 2 28.5 9l14 -102q-16 -8 -49 -16q-33 -8 -68 -8q-57 0 -87 26.5q-30 26.5 -30 87.5v138l-79 -52z" />
-<glyph unicode="&#323;" horiz-adv-x="657" d="M234 365l-55 110h-5l16 -110v-365h-130v705h100l265 -373l53 -107h5l-16 107v368h130v-705h-100zM366 870h159v-30l-160 -88l-103 0z" />
-<glyph unicode="&#324;" horiz-adv-x="545" d="M363 0v284q0 61 -17.5 88q-17.5 27 -59.5 27q-37 0 -62.5 -21.5q-25.5 -21.5 -36.5 -53.5l0 -324h-130v500h103l15 -66h4q23 32 61 56q38 24 98 24q37 0 66 -10q29 -10 49 -33q20 -23 30 -62.5q10 -39.5 10 -97.5v-311zM277 720h132v-30l-111 -124l-74 0z" />
-<glyph unicode="&#325;" horiz-adv-x="657" d="M234 365l-55 110h-5l16 -110v-365h-130v705h100l265 -373l53 -107h5l-16 107v368h130v-705h-100zM254 -105q0 29 19.5 46q19.5 17 48.5 17q35 0 57 -23q22 -23 22 -65q0 -33 -11 -58q-11 -25 -27 -42.5q-16 -17.5 -34 -28q-18 -10.5 -31 -14.5l-34 54q14 7 28 19.5q14 12.5 16 33.5q-20 -1 -37 14.5t-17 46.5z" />
-<glyph unicode="&#326;" horiz-adv-x="545" d="M363 0v284q0 61 -17.5 88q-17.5 27 -59.5 27q-37 0 -62.5 -21.5q-25.5 -21.5 -36.5 -53.5l0 -324h-130v500h103l15 -66h4q23 32 61 56q38 24 98 24q37 0 66 -10q29 -10 49 -33q20 -23 30 -62.5q10 -39.5 10 -97.5v-311zM198 -105q0 29 19.5 46q19.5 17 48.5 17q35 0 57 -23q22 -23 22 -65q0 -33 -11 -58q-11 -25 -27 -42.5q-16 -17.5 -34 -28q-18 -10.5 -31 -14.5l-34 54q14 7 28 19.5q14 12.5 16 33.5q-20 -1 -37 14.5t-17 46.5z" />
-<glyph unicode="&#327;" horiz-adv-x="657" d="M234 365l-55 110h-5l16 -110v-365h-130v705h100l265 -373l53 -107h5l-16 107v368h130v-705h-100zM377 737h-94l-127 94v39h105l53 -45l19 -30l21 29l56 46h100l0 -40z" />
-<glyph unicode="&#328;" horiz-adv-x="545" d="M363 0v284q0 61 -17.5 88q-17.5 27 -59.5 27q-37 0 -62.5 -21.5q-25.5 -21.5 -36.5 -53.5l0 -324h-130v500h103l15 -66h4q23 32 61 56q38 24 98 24q37 0 66 -10q29 -10 49 -33q20 -23 30 -62.5q10 -39.5 10 -97.5v-311zM318 550h-91l-115 182h110l39 -66l16 -49l18 49l45 66l101 0z" />
-<glyph unicode="&#332;" horiz-adv-x="670" d="M38 350q0 175 77 269.5q77 94.5 220 94.5q75 0 131 -26q56 -26 93 -74q37 -48 55 -115q18 -67 18 -149q0 -175 -77.5 -269.5q-77.5 -94.5 -219.5 -94.5q-76 0 -132 26q-56 26 -92.5 74q-36.5 48 -54.5 115q-18 67 -18 149zt0 0zM182 350q0 -53 9 -97.5q9 -44.5 27.5 -76.5q18.5 -32 47.5 -50q29 -18 69 -18q73 0 113 57q40 57 40 185q0 51 -8.5 95q-8.5 44 -26.5 77q-18 33 -47 51.5q-29 18.5 -71 18.5q-73 0 -113 -58.5q-40 -58.5 -40 -183.5zt0 0zM167 856h343v-89l-343 0z" />
-<glyph unicode="&#333;" horiz-adv-x="537" d="M33 250q0 127 62 195.5q62 68.5 174 68.5q60 0 104 -19q44 -19 73 -53.5q29 -34.5 43.5 -83.5q14.5 -49 14.5 -108q0 -127 -61.5 -195.5q-61.5 -68.5 -173.5 -68.5q-60 0 -104 19q-44 19 -73.5 53.5q-29.5 34.5 -44 83.5q-14.5 49 -14.5 108zt0 0zM167 250q0 -33 6 -61q6 -28 18 -49q12 -21 31.5 -32.5q19.5 -11.5 46.5 -11.5q51 0 76 37q25 37 25 117q0 69 -23 111.5q-23 42.5 -78 42.5q-48 0 -75 -36q-27 -36 -27 -118zt0 0zM107 658h323v-92l-323 0z" />
-<glyph unicode="&#336;" horiz-adv-x="670" d="M38 350q0 175 77 269.5q77 94.5 220 94.5q75 0 131 -26q56 -26 93 -74q37 -48 55 -115q18 -67 18 -149q0 -175 -77.5 -269.5q-77.5 -94.5 -219.5 -94.5q-76 0 -132 26q-56 26 -92.5 74q-36.5 48 -54.5 115q-18 67 -18 149zt0 0zM182 350q0 -53 9 -97.5q9 -44.5 27.5 -76.5q18.5 -32 47.5 -50q29 -18 69 -18q73 0 113 57q40 57 40 185q0 51 -8.5 95q-8.5 44 -26.5 77q-18 33 -47 51.5q-29 18.5 -71 18.5q-73 0 -113 -58.5q-40 -58.5 -40 -183.5zt0 0zM250 850h134v-16l-100 -93h-93zM448 850h140v-16l-143 -93l-94 0z" />
-<glyph unicode="&#337;" horiz-adv-x="537" d="M33 250q0 127 62 195.5q62 68.5 174 68.5q60 0 104 -19q44 -19 73 -53.5q29 -34.5 43.5 -83.5q14.5 -49 14.5 -108q0 -127 -61.5 -195.5q-61.5 -68.5 -173.5 -68.5q-60 0 -104 19q-44 19 -73.5 53.5q-29.5 34.5 -44 83.5q-14.5 49 -14.5 108zt0 0zM167 250q0 -33 6 -61q6 -28 18 -49q12 -21 31.5 -32.5q19.5 -11.5 46.5 -11.5q51 0 76 37q25 37 25 117q0 69 -23 111.5q-23 42.5 -78 42.5q-48 0 -75 -36q-27 -36 -27 -118zt0 0zM180 700h119v-16l-76 -113h-78zM358 700h126v-16l-118 -113l-81 0z" />
-<glyph unicode="&#338;" horiz-adv-x="915" d="M453 567q-21 11 -51 18q-30 7 -67 7q-73 0 -113 -58.5q-40 -58.5 -40 -183.5q0 -53 9 -97.5q9 -44.5 28.5 -76.5q19.5 -32 49.5 -50q30 -18 73 -18q29 0 55.5 3.5q26.5 3.5 55.5 15.5zM453 0q-19 -7 -52.5 -10.5q-33.5 -3.5 -65.5 -3.5q-76 0 -132 26q-56 26 -92.5 74q-36.5 48 -54.5 115q-18 67 -18 149q0 175 77 269.5q77 94.5 220 94.5q39 0 67.5 -4.5q28.5 -4.5 50.5 -9.5l415 0v-122h-278v-163h253v-122h-253v-171h283l0 -122z" />
-<glyph unicode="&#339;" horiz-adv-x="841" d="M167 250q0 -33 6 -61q6 -28 18 -49q12 -21 31.5 -32.5q19.5 -11.5 46.5 -11.5q51 0 76 37q25 37 25 117q0 69 -23 111.5q-23 42.5 -78 42.5q-48 0 -75 -36q-27 -36 -27 -118zt0 0zM431 60q-25 -33 -64.5 -53.5q-39.5 -20.5 -97.5 -20.5q-60 0 -104 19q-44 19 -73.5 53.5q-29.5 34.5 -44 83.5q-14.5 49 -14.5 108q0 127 62 195.5q62 68.5 174 68.5q66 0 106 -22.5q40 -22.5 63 -49.5q23 29 63.5 50.5q40.5 21.5 104.5 21.5q38 0 74 -10q36 -10 64 -33q28 -23 45 -62q17 -39 17 -97q0 -21 -2.5 -45q-2.5 -24 -7.5 -50l-301 0q3 -63 33 -95q30 -32 96 -32q41 0 73.5 12.5q32.5 12.5 49.5 25.5l43 -85q-30 -24 -81.5 -40.5q-51.5 -16.5 -109.5 -16.5q-111 0 -168 74zt0 0zM604 410q-51 0 -75.5 -30.5q-24.5 -30.5 -29.5 -81.5l186 0q0 4 0.5 8q0.5 4 0.5 8q0 46 -20.5 71t-61.5 25z" />
-<glyph unicode="&#340;" horiz-adv-x="602" d="M60 693q23 4 49.5 7.5q26.5 3.5 53 5.5q26.5 2 51.5 3q25 1 46 1q49 0 96.5 -9q47.5 -9 85 -31q37.5 -22 60 -60.5q22.5 -38.5 22.5 -96.5q0 -86 -40 -140q-40 -54 -107 -75l49 -31l160 -267h-158l-159 274l-72 13v-287h-137zM270 588q-21 0 -41.5 -1q-20.5 -1 -31.5 -4l0 -203h58q57 0 91 26q34 26 34 86q0 45 -28 70.5q-28 25.5 -82 25.5zt0 0zM292 870h159v-30l-160 -88l-103 0z" />
-<glyph unicode="&#341;" horiz-adv-x="351" d="M333 378q-31 11 -56 11q-35 0 -58.5 -18.5q-23.5 -18.5 -31.5 -47.5l0 -323h-130v500h101l15 -66h4q17 37 46 57q29 20 68 20q26 0 59 -11zM172 720h132v-30l-111 -124l-74 0z" />
-<glyph unicode="&#342;" horiz-adv-x="602" d="M60 693q23 4 49.5 7.5q26.5 3.5 53 5.5q26.5 2 51.5 3q25 1 46 1q49 0 96.5 -9q47.5 -9 85 -31q37.5 -22 60 -60.5q22.5 -38.5 22.5 -96.5q0 -86 -40 -140q-40 -54 -107 -75l49 -31l160 -267h-158l-159 274l-72 13v-287h-137zM270 588q-21 0 -41.5 -1q-20.5 -1 -31.5 -4l0 -203h58q57 0 91 26q34 26 34 86q0 45 -28 70.5q-28 25.5 -82 25.5zt0 0zM228 -105q0 29 19.5 46q19.5 17 48.5 17q35 0 57 -23q22 -23 22 -65q0 -33 -11 -58q-11 -25 -27 -42.5q-16 -17.5 -34 -28q-18 -10.5 -31 -14.5l-34 54q14 7 28 19.5q14 12.5 16 33.5q-20 -1 -37 14.5t-17 46.5z" />
-<glyph unicode="&#343;" horiz-adv-x="351" d="M333 378q-31 11 -56 11q-35 0 -58.5 -18.5q-23.5 -18.5 -31.5 -47.5l0 -323h-130v500h101l15 -66h4q17 37 46 57q29 20 68 20q26 0 59 -11zM85 -105q0 29 19.5 46q19.5 17 48.5 17q35 0 57 -23q22 -23 22 -65q0 -33 -11 -58q-11 -25 -27 -42.5q-16 -17.5 -34 -28q-18 -10.5 -31 -14.5l-34 54q14 7 28 19.5q14 12.5 16 33.5q-20 -1 -37 14.5t-17 46.5z" />
-<glyph unicode="&#344;" horiz-adv-x="602" d="M60 693q23 4 49.5 7.5q26.5 3.5 53 5.5q26.5 2 51.5 3q25 1 46 1q49 0 96.5 -9q47.5 -9 85 -31q37.5 -22 60 -60.5q22.5 -38.5 22.5 -96.5q0 -86 -40 -140q-40 -54 -107 -75l49 -31l160 -267h-158l-159 274l-72 13v-287h-137zM270 588q-21 0 -41.5 -1q-20.5 -1 -31.5 -4l0 -203h58q57 0 91 26q34 26 34 86q0 45 -28 70.5q-28 25.5 -82 25.5zt0 0zM303 737h-94l-127 94v39h105l53 -45l19 -30l21 29l56 46h100l0 -40z" />
-<glyph unicode="&#345;" horiz-adv-x="351" d="M333 378q-31 11 -56 11q-35 0 -58.5 -18.5q-23.5 -18.5 -31.5 -47.5l0 -323h-130v500h101l15 -66h4q17 37 46 57q29 20 68 20q26 0 59 -11zM238 550h-91l-115 182h110l39 -66l16 -49l18 49l45 66l101 0z" />
-<glyph unicode="&#346;" horiz-adv-x="530" d="M362 188q0 32 -23.5 52q-23.5 20 -59 36.5q-35.5 16.5 -77 34q-41.5 17.5 -77 43q-35.5 25.5 -59 63.5q-23.5 38 -23.5 97q0 51 17 88.5q17 37.5 48.5 62.5q31.5 25 74.5 37q43 12 96 12q61 0 115 -10.5q54 -10.5 89 -30.5l-43 -115q-22 14 -66 25.5q-44 11.5 -95 11.5q-48 0 -73.5 -19q-25.5 -19 -25.5 -51q0 -30 23.5 -50q23.5 -20 59 -37q35.5 -17 77 -35q41.5 -18 77 -43.5q35.5 -25.5 59 -63q23.5 -37.5 23.5 -93.5q0 -56 -18.5 -96.5q-18.5 -40.5 -52 -67.5q-33.5 -27 -81 -40q-47.5 -13 -104.5 -13q-75 0 -132 14q-57 14 -84 28l44 117q11 -6 28.5 -13q17.5 -7 39.5 -13q22 -6 46.5 -10q24.5 -4 50.5 -4q61 0 93.5 20.5q32.5 20.5 32.5 62.5zt0 0zM302 870h159v-30l-160 -88l-103 0z" />
-<glyph unicode="&#347;" horiz-adv-x="422" d="M264 138q0 20 -17 32q-17 12 -42 22q-25 10 -55 20.5q-30 10.5 -55 29q-25 18.5 -42 47q-17 28.5 -17 73.5q0 74 44 113q44 39 127 39q57 0 103 -12q46 -12 72 -27l-29 -94q-23 9 -58 19q-35 10 -71 10q-58 0 -58 -45q0 -18 17 -29q17 -11 42 -20.5q25 -9.5 55 -20.5q30 -11 55 -28.5q25 -17.5 42 -45.5q17 -28 17 -72q0 -76 -48.5 -119.5q-48.5 -43.5 -145.5 -43.5q-53 0 -99.5 13.5q-46.5 13.5 -75.5 31.5l36 97q23 -13 61 -25.5q38 -12.5 78 -12.5q29 0 46.5 11q17.5 11 17.5 37zt0 0zM208 720h132v-30l-111 -124l-74 0z" />
-<glyph unicode="&#348;" horiz-adv-x="530" d="M362 188q0 32 -23.5 52q-23.5 20 -59 36.5q-35.5 16.5 -77 34q-41.5 17.5 -77 43q-35.5 25.5 -59 63.5q-23.5 38 -23.5 97q0 51 17 88.5q17 37.5 48.5 62.5q31.5 25 74.5 37q43 12 96 12q61 0 115 -10.5q54 -10.5 89 -30.5l-43 -115q-22 14 -66 25.5q-44 11.5 -95 11.5q-48 0 -73.5 -19q-25.5 -19 -25.5 -51q0 -30 23.5 -50q23.5 -20 59 -37q35.5 -17 77 -35q41.5 -18 77 -43.5q35.5 -25.5 59 -63q23.5 -37.5 23.5 -93.5q0 -56 -18.5 -96.5q-18.5 -40.5 -52 -67.5q-33.5 -27 -81 -40q-47.5 -13 -104.5 -13q-75 0 -132 14q-57 14 -84 28l44 117q11 -6 28.5 -13q17.5 -7 39.5 -13q22 -6 46.5 -10q24.5 -4 50.5 -4q61 0 93.5 20.5q32.5 20.5 32.5 62.5zt0 0zM230 870h96l127 -93v-39h-99l-57 41l-20 34l-21 -33l-62 -42h-97l0 40z" />
-<glyph unicode="&#349;" horiz-adv-x="422" d="M264 138q0 20 -17 32q-17 12 -42 22q-25 10 -55 20.5q-30 10.5 -55 29q-25 18.5 -42 47q-17 28.5 -17 73.5q0 74 44 113q44 39 127 39q57 0 103 -12q46 -12 72 -27l-29 -94q-23 9 -58 19q-35 10 -71 10q-58 0 -58 -45q0 -18 17 -29q17 -11 42 -20.5q25 -9.5 55 -20.5q30 -11 55 -28.5q25 -17.5 42 -45.5q17 -28 17 -72q0 -76 -48.5 -119.5q-48.5 -43.5 -145.5 -43.5q-53 0 -99.5 13.5q-46.5 13.5 -75.5 31.5l36 97q23 -13 61 -25.5q38 -12.5 78 -12.5q29 0 46.5 11q17.5 11 17.5 37zt0 0zM176 732h86l111 -182h-103l-39 66l-17 49l-17 -49l-45 -66l-99 0z" />
-<glyph unicode="&#350;" horiz-adv-x="530" d="M362 188q0 32 -23.5 52q-23.5 20 -59 36.5q-35.5 16.5 -77 34q-41.5 17.5 -77 43q-35.5 25.5 -59 63.5q-23.5 38 -23.5 97q0 51 17 88.5q17 37.5 48.5 62.5q31.5 25 74.5 37q43 12 96 12q61 0 115 -10.5q54 -10.5 89 -30.5l-43 -115q-22 14 -66 25.5q-44 11.5 -95 11.5q-48 0 -73.5 -19q-25.5 -19 -25.5 -51q0 -30 23.5 -50q23.5 -20 59 -37q35.5 -17 77 -35q41.5 -18 77 -43.5q35.5 -25.5 59 -63q23.5 -37.5 23.5 -93.5q0 -95 -51.5 -147q-51.5 -52 -139.5 -65l-18 -34q41 -4 64.5 -21.5q23.5 -17.5 23.5 -53.5q0 -23 -11.5 -40q-11.5 -17 -31.5 -28.5q-20 -11.5 -47 -17.5q-27 -6 -58 -6q-31 0 -64 6l9 48q7 -1 13 -1q6 0 11 0q38 0 49 9q11 9 11 21q0 28 -86 32l48 81q-68 2 -118.5 15q-50.5 13 -75.5 27l44 117q11 -6 28.5 -13q17.5 -7 39.5 -13q22 -6 46.5 -10q24.5 -4 50.5 -4q61 0 93.5 20.5t32.5 62.5z" />
-<glyph unicode="&#351;" horiz-adv-x="422" d="M264 138q0 20 -17 32q-17 12 -42 22q-25 10 -55 20.5q-30 10.5 -55 29q-25 18.5 -42 47q-17 28.5 -17 73.5q0 74 44 113q44 39 127 39q57 0 103 -12q46 -12 72 -27l-29 -94q-23 9 -58 19q-35 10 -71 10q-58 0 -58 -45q0 -18 17 -29q17 -11 42 -20.5q25 -9.5 55 -20.5q30 -11 55 -28.5q25 -17.5 42 -45.5q17 -28 17 -72q0 -64 -35 -105.5q-35 -41.5 -104 -52.5l-18 -34q41 -4 64.5 -21.5q23.5 -17.5 23.5 -53.5q0 -23 -11.5 -40q-11.5 -17 -31.5 -28.5q-20 -11.5 -47 -17.5q-27 -6 -58 -6q-31 0 -64 6l9 48q7 -1 13 -1q6 0 11 0q38 0 49 9q11 9 11 21q0 28 -86 32l49 83q-44 4 -82 15.5q-38 11.5 -62 27.5l36 97q23 -13 61 -25.5q38 -12.5 78 -12.5q29 0 46.5 11t17.5 37z" />
-<glyph unicode="&#352;" horiz-adv-x="530" d="M362 188q0 32 -23.5 52q-23.5 20 -59 36.5q-35.5 16.5 -77 34q-41.5 17.5 -77 43q-35.5 25.5 -59 63.5q-23.5 38 -23.5 97q0 51 17 88.5q17 37.5 48.5 62.5q31.5 25 74.5 37q43 12 96 12q61 0 115 -10.5q54 -10.5 89 -30.5l-43 -115q-22 14 -66 25.5q-44 11.5 -95 11.5q-48 0 -73.5 -19q-25.5 -19 -25.5 -51q0 -30 23.5 -50q23.5 -20 59 -37q35.5 -17 77 -35q41.5 -18 77 -43.5q35.5 -25.5 59 -63q23.5 -37.5 23.5 -93.5q0 -56 -18.5 -96.5q-18.5 -40.5 -52 -67.5q-33.5 -27 -81 -40q-47.5 -13 -104.5 -13q-75 0 -132 14q-57 14 -84 28l44 117q11 -6 28.5 -13q17.5 -7 39.5 -13q22 -6 46.5 -10q24.5 -4 50.5 -4q61 0 93.5 20.5q32.5 20.5 32.5 62.5zt0 0zM328 737h-94l-127 94v39h105l53 -45l19 -30l21 29l56 46h100l0 -40z" />
-<glyph unicode="&#353;" horiz-adv-x="422" d="M264 138q0 20 -17 32q-17 12 -42 22q-25 10 -55 20.5q-30 10.5 -55 29q-25 18.5 -42 47q-17 28.5 -17 73.5q0 74 44 113q44 39 127 39q57 0 103 -12q46 -12 72 -27l-29 -94q-23 9 -58 19q-35 10 -71 10q-58 0 -58 -45q0 -18 17 -29q17 -11 42 -20.5q25 -9.5 55 -20.5q30 -11 55 -28.5q25 -17.5 42 -45.5q17 -28 17 -72q0 -76 -48.5 -119.5q-48.5 -43.5 -145.5 -43.5q-53 0 -99.5 13.5q-46.5 13.5 -75.5 31.5l36 97q23 -13 61 -25.5q38 -12.5 78 -12.5q29 0 46.5 11q17.5 11 17.5 37zt0 0zM252 550h-91l-115 182h110l39 -66l16 -49l18 49l45 66l101 0z" />
-<glyph unicode="&#354;" horiz-adv-x="568" d="M216 0v578h-205v122h546v-122h-204v-578h-27l-24 -43q41 -4 64.5 -21.5q23.5 -17.5 23.5 -53.5q0 -23 -11.5 -40q-11.5 -17 -31.5 -28.5q-20 -11.5 -47 -17.5q-27 -6 -58 -6q-31 0 -64 6l9 48q7 -1 13 -1q6 0 11 0q38 0 49 9q11 9 11 21q0 28 -86 32l57 95z" />
-<glyph unicode="&#355;" horiz-adv-x="349" d="M5 500h69v94l130 37v-131h122v-110h-122v-192q0 -52 10.5 -75q10.5 -23 39.5 -23q20 0 34.5 4q14.5 4 32.5 12l23 -99q-19 -9 -41 -15q-22 -6 -48 -11l-18 -34q41 -4 64.5 -21.5q23.5 -17.5 23.5 -53.5q0 -23 -11.5 -40q-11.5 -17 -31.5 -28.5q-20 -11.5 -47 -17.5q-27 -6 -58 -6q-31 0 -64 6l9 48q7 -1 13 -1q6 0 11 0q38 0 49 9q11 9 11 21q0 28 -86 32l50 84q-49 9 -72.5 44.5q-23.5 35.5 -23.5 104.5v252l-69 0z" />
-<glyph unicode="&#356;" horiz-adv-x="568" d="M557 578h-204v-578h-137v578h-205v122h546zM327 737h-94l-127 94v39h105l53 -45l19 -30l21 29l56 46h100l0 -40z" />
-<glyph unicode="&#357;" horiz-adv-x="360" d="M5 500h69v94l130 37v-131h122v-110h-122v-192q0 -52 10.5 -74.5q10.5 -22.5 39.5 -22.5q20 0 34.5 4q14.5 4 32.5 12l23 -100q-27 -13 -63 -22q-36 -9 -73 -9q-69 0 -101.5 35.5q-32.5 35.5 -32.5 116.5v252h-69zM375 723q-2 -29 -12 -60.5q-10 -31.5 -23.5 -60q-13.5 -28.5 -28.5 -51q-15 -22.5 -27 -32.5l-58 31q17 36 26 81.5q9 45.5 9 91.5z" />
-<glyph unicode="&#362;" horiz-adv-x="627" d="M440 700h130v-452q0 -68 -18 -117q-18 -49 -50 -81q-32 -32 -78 -47q-46 -15 -101 -15q-266 0 -266 243v469h137v-442q0 -41 7.5 -69.5q7.5 -28.5 23.5 -46q16 -17.5 40 -25q24 -7.5 56 -7.5q63 0 91 35q28 35 28 113zM145 856h343v-89l-343 0z" />
-<glyph unicode="&#363;" horiz-adv-x="538" d="M182 500v-284q0 -61 14.5 -88q14.5 -27 56.5 -27q37 0 61.5 22q24.5 22 36.5 54l0 323h130v-348q0 -41 4 -80.5q4 -39.5 12 -71.5l-98 0l-23 74h-4q-23 -38 -64 -63q-41 -25 -97 -25q-38 0 -68 10q-30 10 -50 33q-20 23 -30.5 62q-10.5 39 -10.5 98v311zM106 658h323v-92l-323 0z" />
-<glyph unicode="&#364;" horiz-adv-x="627" d="M440 700h130v-452q0 -68 -18 -117q-18 -49 -50 -81q-32 -32 -78 -47q-46 -15 -101 -15q-266 0 -266 243v469h137v-442q0 -41 7.5 -69.5q7.5 -28.5 23.5 -46q16 -17.5 40 -25q24 -7.5 56 -7.5q63 0 91 35q28 35 28 113zM173 875q20 -26 58 -40q38 -14 85 -14q48 0 82.5 15q34.5 15 54.5 39l49 -32q-12 -29 -32 -50q-20 -21 -45 -35q-25 -14 -53.5 -21q-28.5 -7 -56.5 -7q-27 0 -55.5 6q-28.5 6 -54.5 18.5q-26 12.5 -48 33q-22 20.5 -36 50.5z" />
-<glyph unicode="&#365;" horiz-adv-x="538" d="M182 500v-284q0 -61 14.5 -88q14.5 -27 56.5 -27q37 0 61.5 22q24.5 22 36.5 54l0 323h130v-348q0 -41 4 -80.5q4 -39.5 12 -71.5l-98 0l-23 74h-4q-23 -38 -64 -63q-41 -25 -97 -25q-38 0 -68 10q-30 10 -50 33q-20 23 -30.5 62q-10.5 39 -10.5 98v311zM159 720q17 -30 47.5 -44.5q30.5 -14.5 64.5 -14.5q34 0 62.5 15q28.5 15 43.5 44l60 -27q-3 -24 -16.5 -47.5q-13.5 -23.5 -35.5 -41.5q-22 -18 -51.5 -29q-29.5 -11 -63.5 -11q-66 0 -113 33.5q-47 33.5 -61 90.5z" />
-<glyph unicode="&#366;" horiz-adv-x="627" d="M440 700h130v-452q0 -68 -18 -117q-18 -49 -50 -81q-32 -32 -78 -47q-46 -15 -101 -15q-266 0 -266 243v469h137v-442q0 -41 7.5 -69.5q7.5 -28.5 23.5 -46q16 -17.5 40 -25q24 -7.5 56 -7.5q63 0 91 35q28 35 28 113zM192 772q0 18 6 34.5q6 16.5 20.5 29q14.5 12.5 39 19.5q24.5 7 62.5 7q70 0 99 -24q29 -24 29 -66q0 -18 -6.5 -34q-6.5 -16 -21.5 -27.5q-15 -11.5 -39.5 -18.5q-24.5 -7 -60.5 -7q-71 0 -99.5 24.5q-28.5 24.5 -28.5 62.5zt0 0zM276 772q0 -31 44 -31q25 0 35 8q10 8 10 23q0 17 -10.5 25q-10.5 8 -34.5 8q-44 0 -44 -33z" />
-<glyph unicode="&#367;" horiz-adv-x="538" d="M182 500v-284q0 -61 14.5 -88q14.5 -27 56.5 -27q37 0 61.5 22q24.5 22 36.5 54l0 323h130v-348q0 -41 4 -80.5q4 -39.5 12 -71.5l-98 0l-23 74h-4q-23 -38 -64 -63q-41 -25 -97 -25q-38 0 -68 10q-30 10 -50 33q-20 23 -30.5 62q-10.5 39 -10.5 98v311zM155 647q0 42 28.5 69q28.5 27 82.5 27q51 0 81 -24.5q30 -24.5 30 -71.5q0 -39 -29.5 -66.5q-29.5 -27.5 -81.5 -27.5q-53 0 -82 25.5q-29 25.5 -29 68.5zt0 0zM227 647q0 -16 12 -24.5q12 -8.5 27 -8.5q17 0 28 8q11 8 11 25q0 17 -11.5 25.5q-11.5 8.5 -27.5 8.5q-15 0 -27 -8t-12 -26z" />
-<glyph unicode="&#368;" horiz-adv-x="627" d="M440 700h130v-452q0 -68 -18 -117q-18 -49 -50 -81q-32 -32 -78 -47q-46 -15 -101 -15q-266 0 -266 243v469h137v-442q0 -41 7.5 -69.5q7.5 -28.5 23.5 -46q16 -17.5 40 -25q24 -7.5 56 -7.5q63 0 91 35q28 35 28 113zM225 850h134v-16l-100 -93h-93zM423 850h140v-16l-143 -93l-94 0z" />
-<glyph unicode="&#369;" horiz-adv-x="538" d="M182 500v-284q0 -61 14.5 -88q14.5 -27 56.5 -27q37 0 61.5 22q24.5 22 36.5 54l0 323h130v-348q0 -41 4 -80.5q4 -39.5 12 -71.5l-98 0l-23 74h-4q-23 -38 -64 -63q-41 -25 -97 -25q-38 0 -68 10q-30 10 -50 33q-20 23 -30.5 62q-10.5 39 -10.5 98v311zM166 700h119v-16l-76 -113h-78zM344 700h126v-16l-118 -113l-81 0z" />
-<glyph unicode="&#370;" horiz-adv-x="627" d="M440 700h130v-452q0 -68 -18 -117q-18 -49 -50 -81q-30 -30 -73 -45q-45 -31 -45 -73q0 -13 5.5 -23.5q5.5 -10.5 16.5 -16.5q11 -6 26.5 -5.5q15.5 0.5 35.5 10.5l19 -62q-15 -12 -47.5 -24q-32.5 -12 -67.5 -12q-56 0 -85.5 27.5q-29.5 27.5 -29.5 68.5q0 55 53 93q-253 6 -253 243v469h137v-442q0 -41 7.5 -69.5q7.5 -28.5 23.5 -46q16 -17.5 40 -25q24 -7.5 56 -7.5q63 0 91 35q28 35 28 113z" />
-<glyph unicode="&#371;" horiz-adv-x="538" d="M182 500v-284q0 -61 14.5 -88q14.5 -27 56.5 -27q37 0 61.5 22q24.5 22 36.5 54l0 323h130v-348q0 -41 4 -80.5q4 -39.5 12 -71.5l-18 0q-29 -10 -42.5 -28.5q-13.5 -18.5 -13.5 -43.5q1 -26 22.5 -38.5q21.5 -12.5 61.5 7.5l19 -62q-15 -12 -47 -24q-32 -12 -67 -12q-57 0 -86.5 25.5q-29.5 25.5 -29.5 66.5q0 41 27 70q27 29 74 45l-21 68h-4q-23 -38 -64 -63q-41 -25 -97 -25q-38 0 -68 10q-30 10 -50 33q-20 23 -30.5 62q-10.5 39 -10.5 98l0 311z" />
-<glyph unicode="&#376;" horiz-adv-x="592" d="M228 260l-230 440h163l128 -263l14 -74h5l15 76l124 261h147l-229 -439v-261h-137zM116 798q0 26 18 42q18 16 58 16q39 0 57 -16q18 -16 18 -42q0 -26 -18 -41.5q-18 -15.5 -57 -15.5q-40 0 -58 15.5q-18 15.5 -18 41.5zt0 0zM330 798q0 26 18 42q18 16 57 16q40 0 58 -16q18 -16 18 -42q0 -26 -18 -41.5q-18 -15.5 -58 -15.5q-39 0 -57 15.5t-18 41.5z" />
-<glyph unicode="&#377;" horiz-adv-x="539" d="M27 122l296 414l52 42h-348v122h485v-122l-298 -418l-51 -38h349v-122h-485zM298 870h159v-30l-160 -88l-103 0z" />
-<glyph unicode="&#378;" horiz-adv-x="458" d="M31 110l197 237l51 43h-248v110h392v-110l-195 -241l-50 -39h245v-110h-392zM222 720h132v-30l-111 -124l-74 0z" />
-<glyph unicode="&#379;" horiz-adv-x="539" d="M27 122l296 414l52 42h-348v122h485v-122l-298 -418l-51 -38h349v-122h-485zM186 799q0 25 21.5 43q21.5 18 64.5 18q43 0 66 -18q23 -18 23 -43q0 -26 -23 -44q-23 -18 -66 -18q-43 0 -64.5 18t-21.5 44z" />
-<glyph unicode="&#380;" horiz-adv-x="458" d="M31 110l197 237l51 43h-248v110h392v-110l-195 -241l-50 -39h245v-110h-392zM151 641q0 29 21.5 49.5q21.5 20.5 59.5 20.5q38 0 61.5 -20.5q23.5 -20.5 23.5 -49.5q0 -29 -23.5 -48.5q-23.5 -19.5 -61.5 -19.5q-38 0 -59.5 19.5t-21.5 48.5z" />
-<glyph unicode="&#381;" horiz-adv-x="539" d="M27 122l296 414l52 42h-348v122h485v-122l-298 -418l-51 -38h349v-122h-485zM309 737h-94l-127 94v39h105l53 -45l19 -30l21 29l56 46h100l0 -40z" />
-<glyph unicode="&#382;" horiz-adv-x="458" d="M31 110l197 237l51 43h-248v110h392v-110l-195 -241l-50 -39h245v-110h-392zM269 550h-91l-115 182h110l39 -66l16 -49l18 49l45 66l101 0z" />
-<glyph unicode="&#383;" horiz-adv-x="249" d="M12 500h69v28q0 95 40 137.5q40 42.5 116 42.5q45 0 76 -6.5q31 -6.5 58 -17.5l-26 -101q-23 8 -40 11.5q-17 3.5 -37 3.5q-20 0 -31.5 -6q-11.5 -6 -17 -18.5q-5.5 -12.5 -7 -31q-1.5 -18.5 -1.5 -42.5v-500h-130v390l-69 0z" />
-<glyph unicode="&#402;" horiz-adv-x="567" d="M342 390l-71 -424q-6 -37 -17.5 -68.5q-11.5 -31.5 -32 -55q-20.5 -23.5 -51 -37q-30.5 -13.5 -74.5 -13.5q-14 0 -34.5 2q-20.5 2 -41.5 5q-21 3 -40.5 7.5q-19.5 4.5 -31.5 9.5l21 105q23 -10 44 -14.5q21 -4.5 49 -4.5q36 0 56 24.5q20 24.5 29 81.5l61 382h-78v110h96l11 67q6 37 16.5 64.5q10.5 27.5 29 46q18.5 18.5 47.5 27.5q29 9 72 9q16 0 36.5 -2.5q20.5 -2.5 41.5 -7q21 -4.5 41 -10q20 -5.5 35 -12.5l-32 -97q-49 19 -95 19q-32 0 -44.5 -15.5q-12.5 -15.5 -18.5 -55.5l-5 -33h119l0 -110z" />
-<glyph unicode="&#500;" horiz-adv-x="609" d="M307 365h261v-312q-42 -35 -100.5 -51q-58.5 -16 -115.5 -16q-67 0 -124.5 21q-57.5 21 -99.5 65.5q-42 44.5 -66 113.5q-24 69 -24 164q0 99 28.5 168.5q28.5 69.5 75 113q46.5 43.5 104.5 63q58 19.5 118 19.5q60 0 105.5 -9q45.5 -9 72.5 -19l-28 -115q-25 10 -56 15.5q-31 5.5 -79 5.5q-43 0 -79 -13q-36 -13 -62.5 -42.5q-26.5 -29.5 -41 -75.5q-14.5 -46 -14.5 -112q0 -63 14 -108.5q14 -45.5 39 -75q25 -29.5 58.5 -43.5q33.5 -14 71.5 -14q26 0 51 6.5q25 6.5 42 19.5l0 132l-151 16zM391 870h159v-30l-160 -88l-103 0z" />
-<glyph unicode="&#501;" horiz-adv-x="536" d="M480 0q0 -109 -59 -160.5q-59 -51.5 -165 -51.5q-72 0 -113.5 10q-41.5 10 -62.5 21l27 103q23 -9 53.5 -18q30.5 -9 75.5 -9q68 0 92.5 29.5q24.5 29.5 24.5 82.5v32h-4q-35 -47 -124 -47q-97 0 -144.5 60q-47.5 60 -47.5 188q0 134 64 203q64 69 186 69q64 0 114.5 -9q50.5 -9 82.5 -21zM260 96q38 0 58.5 17q20.5 17 31.5 51l0 225q-31 13 -77 13q-50 0 -78 -37.5q-28 -37.5 -28 -119.5q0 -73 24 -111q24 -38 69 -38zt0 0zM278 720h132v-30l-111 -124l-74 0z" />
-<glyph unicode="&#536;" horiz-adv-x="530" d="M362 188q0 32 -23.5 52q-23.5 20 -59 36.5q-35.5 16.5 -77 34q-41.5 17.5 -77 43q-35.5 25.5 -59 63.5q-23.5 38 -23.5 97q0 51 17 88.5q17 37.5 48.5 62.5q31.5 25 74.5 37q43 12 96 12q61 0 115 -10.5q54 -10.5 89 -30.5l-43 -115q-22 14 -66 25.5q-44 11.5 -95 11.5q-48 0 -73.5 -19q-25.5 -19 -25.5 -51q0 -30 23.5 -50q23.5 -20 59 -37q35.5 -17 77 -35q41.5 -18 77 -43.5q35.5 -25.5 59 -63q23.5 -37.5 23.5 -93.5q0 -56 -18.5 -96.5q-18.5 -40.5 -52 -67.5q-33.5 -27 -81 -40q-47.5 -13 -104.5 -13q-75 0 -132 14q-57 14 -84 28l44 117q11 -6 28.5 -13q17.5 -7 39.5 -13q22 -6 46.5 -10q24.5 -4 50.5 -4q61 0 93.5 20.5q32.5 20.5 32.5 62.5zt0 0zM185 -105q0 29 19.5 46q19.5 17 48.5 17q35 0 57 -23q22 -23 22 -65q0 -33 -11 -58q-11 -25 -27 -42.5q-16 -17.5 -34 -28q-18 -10.5 -31 -14.5l-34 54q14 7 28 19.5q14 12.5 16 33.5q-20 -1 -37 14.5t-17 46.5z" />
-<glyph unicode="&#537;" horiz-adv-x="422" d="M264 138q0 20 -17 32q-17 12 -42 22q-25 10 -55 20.5q-30 10.5 -55 29q-25 18.5 -42 47q-17 28.5 -17 73.5q0 74 44 113q44 39 127 39q57 0 103 -12q46 -12 72 -27l-29 -94q-23 9 -58 19q-35 10 -71 10q-58 0 -58 -45q0 -18 17 -29q17 -11 42 -20.5q25 -9.5 55 -20.5q30 -11 55 -28.5q25 -17.5 42 -45.5q17 -28 17 -72q0 -76 -48.5 -119.5q-48.5 -43.5 -145.5 -43.5q-53 0 -99.5 13.5q-46.5 13.5 -75.5 31.5l36 97q23 -13 61 -25.5q38 -12.5 78 -12.5q29 0 46.5 11q17.5 11 17.5 37zt0 0zM141 -105q0 29 19.5 46q19.5 17 48.5 17q35 0 57 -23q22 -23 22 -65q0 -33 -11 -58q-11 -25 -27 -42.5q-16 -17.5 -34 -28q-18 -10.5 -31 -14.5l-34 54q14 7 28 19.5q14 12.5 16 33.5q-20 -1 -37 14.5t-17 46.5z" />
-<glyph unicode="&#538;" horiz-adv-x="568" d="M557 578h-204v-578h-137v578h-205v122h546zM205 -105q0 29 19.5 46q19.5 17 48.5 17q35 0 57 -23q22 -23 22 -65q0 -33 -11 -58q-11 -25 -27 -42.5q-16 -17.5 -34 -28q-18 -10.5 -31 -14.5l-34 54q14 7 28 19.5q14 12.5 16 33.5q-20 -1 -37 14.5t-17 46.5z" />
-<glyph unicode="&#539;" horiz-adv-x="349" d="M5 500h69v94l130 37v-131h122v-110h-122v-192q0 -52 10.5 -74.5q10.5 -22.5 39.5 -22.5q20 0 34.5 4q14.5 4 32.5 12l23 -100q-27 -13 -63 -22q-36 -9 -73 -9q-69 0 -101.5 35.5q-32.5 35.5 -32.5 116.5v252h-69zM109 -105q0 29 19.5 46q19.5 17 48.5 17q35 0 57 -23q22 -23 22 -65q0 -33 -11 -58q-11 -25 -27 -42.5q-16 -17.5 -34 -28q-18 -10.5 -31 -14.5l-34 54q14 7 28 19.5q14 12.5 16 33.5q-20 -1 -37 14.5t-17 46.5z" />
-<glyph unicode="&#567;" horiz-adv-x="268" d="M69 500h130v-521q0 -91 -36 -139q-36 -48 -115 -48q-30 0 -64 7l0 109q4 0 7 -0.5q3 -0.5 6 -0.5q45 0 58.5 29q13.5 29 13.5 80z" />
-<glyph unicode="&#700;" horiz-adv-x="223" d="M38 644q0 29 19.5 47q19.5 18 49.5 18q36 0 57 -24q21 -24 21 -63q0 -40 -12.5 -68q-12.5 -28 -30 -46.5q-17.5 -18.5 -37 -29q-19.5 -10.5 -32.5 -15.5l-33 55q20 9 35.5 24q15.5 15 17.5 38q-20 -1 -37.5 15.5t-17.5 48.5z" />
-<glyph unicode="&#710;" horiz-adv-x="440" d="M183 732h86l111 -182h-103l-39 66l-17 49l-17 -49l-45 -66l-99 0z" />
-<glyph unicode="&#711;" horiz-adv-x="449" d="M266 550h-91l-115 182h110l39 -66l16 -49l18 49l45 66l101 0z" />
-<glyph unicode="&#728;" horiz-adv-x="461" d="M123 720q17 -30 47.5 -44.5q30.5 -14.5 64.5 -14.5q34 0 62.5 15q28.5 15 43.5 44l60 -27q-3 -24 -16.5 -47.5q-13.5 -23.5 -35.5 -41.5q-22 -18 -51.5 -29q-29.5 -11 -63.5 -11q-66 0 -113 33.5q-47 33.5 -61 90.5z" />
-<glyph unicode="&#729;" horiz-adv-x="286" d="M60 641q0 29 21.5 49.5q21.5 20.5 59.5 20.5q38 0 61.5 -20.5q23.5 -20.5 23.5 -49.5q0 -29 -23.5 -48.5q-23.5 -19.5 -61.5 -19.5q-38 0 -59.5 19.5t-21.5 48.5z" />
-<glyph unicode="&#730;" horiz-adv-x="342" d="M60 647q0 42 28.5 69q28.5 27 82.5 27q51 0 81 -24.5q30 -24.5 30 -71.5q0 -39 -29.5 -66.5q-29.5 -27.5 -81.5 -27.5q-53 0 -82 25.5q-29 25.5 -29 68.5zt0 0zM132 647q0 -16 12 -24.5q12 -8.5 27 -8.5q17 0 28 8q11 8 11 25q0 17 -11.5 25.5q-11.5 8.5 -27.5 8.5q-15 0 -27 -8t-12 -26z" />
-<glyph unicode="&#731;" horiz-adv-x="350" d="M263 10q-76 -22 -76 -79q0 -18 11 -30.5q11 -12.5 31 -12.5q18 0 42 12l19 -62q-15 -12 -47.5 -23.5q-32.5 -11.5 -67.5 -11.5q-56 0 -85.5 25q-29.5 25 -29.5 66q0 41 27.5 70q27.5 29 75.5 46z" />
-<glyph unicode="&#732;" horiz-adv-x="452" d="M60 658q31 37 57.5 51q26.5 14 50.5 14q20 0 38.5 -7q18.5 -7 36.5 -15q18 -8 35 -15q17 -7 35 -7q14 0 28.5 6q14.5 6 30.5 21l20 -70q-29 -32 -53.5 -44q-24.5 -12 -47.5 -12q-20 0 -39 6.5q-19 6.5 -37 14.5q-18 8 -36 14.5q-18 6.5 -36 6.5q-15 0 -31 -6.5q-16 -6.5 -33 -22.5z" />
-<glyph unicode="&#733;" horiz-adv-x="459" d="M95 700h119v-16l-76 -113h-78zM273 700h126v-16l-118 -113l-81 0z" />
-<glyph unicode="&#769;" horiz-adv-x="2" d="M-253 720h132v-30l-111 -124l-74 0z" />
-<glyph unicode="&#916;" horiz-adv-x="585" d="M12 0v71l241 634h79l243 -634v-71zM158 116h270l-112 298l-23 100h-5l-24 -101z" />
-<glyph unicode="&#937;" horiz-adv-x="778" d="M58 110h105l85 -13v28l-46 9q-30 14 -56 37q-26 23 -45.5 56q-19.5 33 -30.5 75.5q-11 42.5 -11 94.5q0 73 23.5 131.5q23.5 58.5 67 99.5q43.5 41 104.5 63.5q61 22.5 135 22.5q78 0 139.5 -23.5q61.5 -23.5 103.5 -65.5q42 -42 64.5 -101q22.5 -59 22.5 -131q0 -52 -12 -93.5q-12 -41.5 -31.5 -73.5q-19.5 -32 -45 -54.5q-25.5 -22.5 -52.5 -36.5l-49 -10v-28l85 13h106v-110h-300v203q26 4 53.5 17q27.5 13 50 35.5q22.5 22.5 37 56q14.5 33.5 14.5 80.5q0 37 -10 73q-10 36 -32 64.5q-22 28.5 -57.5 45.5q-35.5 17 -87.5 17q-89 0 -137 -51q-48 -51 -48 -152q0 -45 14 -78.5q14 -33.5 36 -56q22 -22.5 49.5 -35q27.5 -12.5 54.5 -16.5l0 -203l-299 0z" />
-<glyph unicode="&#960;" horiz-adv-x="696" d="M566 156q0 -28 9 -39q9 -11 23 -11q10 0 22.5 2q12.5 2 21.5 4l20 -90q-20 -9 -51.5 -18.5q-31.5 -9.5 -76.5 -9.5q-56 0 -77 30q-21 30 -21 82v284h-140v-390h-130v390h-14q-18 0 -31.5 -10q-13.5 -10 -25.5 -34l-76 48q19 51 56.5 78.5q37.5 27.5 90.5 27.5h483v-110l-83 0z" />
-<glyph unicode="&#1025;" horiz-adv-x="522" d="M60 700h415v-122h-278v-163h253v-122h-253v-171h283v-122h-420zM82 798q0 26 18 42q18 16 58 16q39 0 57 -16q18 -16 18 -42q0 -26 -18 -41.5q-18 -15.5 -57 -15.5q-40 0 -58 15.5q-18 15.5 -18 41.5zt0 0zM296 798q0 26 18 42q18 16 57 16q40 0 58 -16q18 -16 18 -42q0 -26 -18 -41.5q-18 -15.5 -58 -15.5q-39 0 -57 15.5t-18 41.5z" />
-<glyph unicode="&#1026;" horiz-adv-x="740" d="M353 0h-137v578h-205v122h546v-122h-204v-143q16 6 50 14q34 8 88 8q39 0 76.5 -10q37.5 -10 67.5 -35.5q30 -25.5 48.5 -69q18.5 -43.5 18.5 -110.5q0 -116 -57 -177.5q-57 -61.5 -184 -61.5q-28 0 -41.5 1q-13.5 1 -21.5 3l0 117q7 -2 23.5 -2.5q16.5 -0.5 33.5 -0.5q50 0 76.5 29q26.5 29 26.5 86q0 34 -9 55.5q-9 21.5 -25 33.5q-16 12 -38 16q-22 4 -48 4q-23 0 -48.5 -6q-25.5 -6 -36.5 -12z" />
-<glyph unicode="&#1027;" horiz-adv-x="458" d="M467 578h-270v-578h-137v700h407zM292 870h159v-30l-160 -88l-103 0z" />
-<glyph unicode="&#1028;" horiz-adv-x="577" d="M549 29q-15 -11 -37.5 -19.5q-22.5 -8.5 -48 -13.5q-25.5 -5 -52.5 -7.5q-27 -2.5 -53 -2.5q-65 0 -123 19.5q-58 19.5 -101.5 63q-43.5 43.5 -69.5 113q-26 69.5 -26 168.5q0 103 29 172.5q29 69.5 75.5 112q46.5 42.5 104 61q57.5 18.5 115.5 18.5q60 0 105 -8q45 -8 72 -19l-26 -119q-23 11 -58.5 17.5q-35.5 6.5 -80.5 6.5q-35 0 -66.5 -10.5q-31.5 -10.5 -56 -32.5q-24.5 -22 -42 -55q-17.5 -33 -24.5 -78l275 0v-112h-278q11 -89 62.5 -142.5q51.5 -53.5 139.5 -53.5q45 0 80 9q35 9 57 22z" />
-<glyph unicode="&#1029;" horiz-adv-x="530" d="M362 188q0 32 -23.5 52q-23.5 20 -59 36.5q-35.5 16.5 -77 34q-41.5 17.5 -77 43q-35.5 25.5 -59 63.5q-23.5 38 -23.5 97q0 51 17 88.5q17 37.5 48.5 62.5q31.5 25 74.5 37q43 12 96 12q61 0 115 -10.5q54 -10.5 89 -30.5l-43 -115q-22 14 -66 25.5q-44 11.5 -95 11.5q-48 0 -73.5 -19q-25.5 -19 -25.5 -51q0 -30 23.5 -50q23.5 -20 59 -37q35.5 -17 77 -35q41.5 -18 77 -43.5q35.5 -25.5 59 -63q23.5 -37.5 23.5 -93.5q0 -56 -18.5 -96.5q-18.5 -40.5 -52 -67.5q-33.5 -27 -81 -40q-47.5 -13 -104.5 -13q-75 0 -132 14q-57 14 -84 28l44 117q11 -6 28.5 -13q17.5 -7 39.5 -13q22 -6 46.5 -10q24.5 -4 50.5 -4q61 0 93.5 20.5t32.5 62.5z" />
-<glyph unicode="&#1030;" horiz-adv-x="285" d="M74 700h137v-700l-137 0z" />
-<glyph unicode="&#1031;" horiz-adv-x="296" d="M19 792q0 31 15.5 47.5q15.5 16.5 44.5 16.5q28 0 43.5 -16.5q15.5 -16.5 15.5 -47.5q0 -30 -15.5 -46q-15.5 -16 -43.5 -16q-29 0 -44.5 16q-15.5 16 -15.5 46zt0 0zM159 792q0 31 15.5 47.5q15.5 16.5 43.5 16.5q29 0 44.5 -16.5q15.5 -16.5 15.5 -47.5q0 -30 -15.5 -46q-15.5 -16 -44.5 -16q-28 0 -43.5 16q-15.5 16 -15.5 46zt0 0zM79 700h137v-700l-137 0z" />
-<glyph unicode="&#1032;" horiz-adv-x="334" d="M131 700h137v-512q0 -40 -9 -76q-9 -36 -29.5 -63.5q-20.5 -27.5 -52.5 -44q-32 -16.5 -78 -16.5q-29 0 -63 6q-34 6 -59 17l30 112q26 -13 59 -13q42 0 53.5 31q11.5 31 11.5 82z" />
-<glyph unicode="&#1033;" horiz-adv-x="935" d="M426 578h-149q-4 -95 -9 -173q-5 -78 -13.5 -140.5q-8.5 -62.5 -22.5 -110.5q-14 -48 -36 -83q-14 -23 -31.5 -38q-17.5 -15 -36.5 -24q-19 -9 -37.5 -12.5q-18.5 -3.5 -34.5 -3.5q-23 0 -38.5 3.5q-15.5 3.5 -30.5 10.5v118q21 -2 27 -3q6 -1 12 -1q16 0 31.5 8q15.5 8 26.5 27q15 22 26 64.5q11 42.5 19.5 108.5q8.5 66 13.5 157.5q5 91.5 7 213.5l413 0v-251q5 1 16.5 2.5q11.5 1.5 25 2.5q13.5 1 27.5 2q14 1 26 1q49 0 95 -10q46 -10 81.5 -35.5q35.5 -25.5 56.5 -69q21 -43.5 21 -110.5q0 -120 -74.5 -181q-74.5 -61 -213.5 -61q-12 0 -30 0.5q-18 0.5 -39.5 1.5q-21.5 1 -45.5 3q-24 2 -46 5l-37 0zM631 112q28 0 53 5.5q25 5.5 44 19q19 13.5 29.5 35.5q10.5 22 10.5 54q0 34 -11.5 55.5q-11.5 21.5 -30 33.5q-18.5 12 -43.5 16q-25 4 -52 4q-7 0 -17 -1q-10 -1 -20 -2q-10 -1 -18.5 -2.5q-8.5 -1.5 -12.5 -2.5l0 -209q11 -3 29.5 -4.5t38.5 -1.5z" />
-<glyph unicode="&#1034;" horiz-adv-x="962" d="M453 305h-256v-305h-137v700h137v-273h256v273h137v-266q5 1 16.5 2.5q11.5 1.5 25 2.5q13.5 1 27.5 2q14 1 26 1q49 0 95 -9q46 -9 81.5 -33q35.5 -24 56.5 -66q21 -42 21 -109q0 -120 -74 -177.5q-74 -57.5 -214 -57.5q-14 0 -38 1q-24 1 -51.5 2.5q-27.5 1.5 -56.5 4q-29 2.5 -52 5.5zM658 112q31 0 56.5 5q25.5 5 43.5 17.5q18 12.5 27.5 33q9.5 20.5 9.5 51.5q0 32 -10 51.5q-10 19.5 -28 30.5q-18 11 -43.5 15q-25.5 4 -55.5 4q-7 0 -17 -1q-10 -1 -20 -2q-10 -1 -18.5 -3q-8.5 -2 -12.5 -3l0 -193q11 -3 29.5 -4.5t38.5 -1.5z" />
-<glyph unicode="&#1035;" horiz-adv-x="758" d="M353 0h-137v578h-205v122h546v-122h-204v-177q25 15 68.5 28q43.5 13 103.5 13q42 0 77 -11q35 -11 60.5 -34q25.5 -23 39.5 -60q14 -37 14 -89v-248h-137v206q0 60 -24 89.5q-24 29.5 -78 29.5q-38 0 -71 -8.5q-33 -8.5 -53 -25.5z" />
-<glyph unicode="&#1036;" horiz-adv-x="620" d="M233 299h-36v-299h-137v700h137v-310l32 14l193 296h156l-204 -294l-54 -38l56 -39l233 -329h-169zM318 870h159v-30l-160 -88l-103 0z" />
-<glyph unicode="&#1038;" horiz-adv-x="568" d="M294 391l20 -91h6l16 94l105 306h141l-186 -484q-22 -57 -42.5 -99q-20.5 -42 -44 -69.5q-23.5 -27.5 -52.5 -41q-29 -13.5 -68 -13.5q-33 0 -53.5 4.5q-20.5 4.5 -44.5 19.5l35 111q17 -9 31 -11q14 -2 30 -2q47 0 66 74l-262 511h161zM228 874q4 -32 23.5 -46q19.5 -14 50.5 -14q67 0 74 59l111 -17q-11 -63 -57.5 -92q-46.5 -29 -128.5 -29q-41 0 -75 6q-34 6 -59.5 19.5q-25.5 13.5 -42 36.5q-16.5 23 -20.5 57z" />
-<glyph unicode="&#1039;" horiz-adv-x="639" d="M60 0v700h137v-578h245v578h137v-700h-200l-15 -175h-88l-20 175z" />
-<glyph unicode="&#1040;" horiz-adv-x="605" d="M405 155h-215l-53 -155h-137l252 705h101l252 -705h-144zM225 265h150l-52 156l-21 110h-5l-21 -111z" />
-<glyph unicode="&#1041;" horiz-adv-x="570" d="M60 700h431v-122h-294v-146q17 3 41.5 6q24.5 3 48.5 3q56 0 103 -11q47 -11 80.5 -36.5q33.5 -25.5 52.5 -67q19 -41.5 19 -101.5q0 -59 -19.5 -103q-19.5 -44 -56 -73q-36.5 -29 -88 -44q-51.5 -15 -115.5 -15q-17 0 -42.5 1q-25.5 1 -54 3q-28.5 2 -56.5 5q-28 3 -50 8zM273 103q26 0 48.5 6.5q22.5 6.5 39.5 20q17 13.5 27 34.5q10 21 10 51q0 36 -11 58q-11 22 -30 34.5q-19 12.5 -43.5 16.5q-24.5 4 -52.5 4q-14 0 -35 -2.5q-21 -2.5 -29 -4.5l0 -213q11 -3 33.5 -4t42.5 -1z" />
-<glyph unicode="&#1042;" horiz-adv-x="591" d="M531 537q0 -26 -6.5 -52q-6.5 -26 -21.5 -47.5q-15 -21.5 -39 -38q-24 -16.5 -58 -24.5l0 -6q30 -5 57 -17q27 -12 47 -33q20 -21 31.5 -51q11.5 -30 11.5 -71q0 -54 -23 -93.5q-23 -39.5 -61.5 -64.5q-38.5 -25 -87.5 -37q-49 -12 -101 -12q-17 0 -43.5 0q-26.5 0 -57 1.5q-30.5 1.5 -62 4.5q-31.5 3 -57.5 9l0 690q19 3 43.5 6q24.5 3 52.5 5q28 2 57.5 3q29.5 1 58.5 1q49 0 95.5 -7.5q46.5 -7.5 83 -26.5q36.5 -19 58.5 -53q22 -34 22 -86zt0 0zM281 103q25 0 48.5 6q23.5 6 41.5 18.5q18 12.5 29 31.5q11 19 11 45q0 33 -13 52q-13 19 -34 29.5q-21 10.5 -47 13.5q-26 3 -52 3h-73v-193q5 -2 16 -3q11 -1 23.5 -1.5q12.5 -0.5 26 -1q13.5 -0.5 23.5 -0.5zt0 0zM236 406q14 0 32.5 1q18.5 1 30.5 3q38 12 65.5 36q27.5 24 27.5 63q0 26 -10 43q-10 17 -26.5 27q-16.5 10 -37.5 14q-21 4 -44 4q-26 0 -48 -1q-22 -1 -34 -3l0 -187z" />
-<glyph unicode="&#1043;" horiz-adv-x="458" d="M467 578h-270v-578h-137v700l407 0z" />
-<glyph unicode="&#1044;" horiz-adv-x="691" d="M674 -125h-97l-15 125h-450l-15 -125h-97v247h74q7 11 23 49q16 38 32 107.5q16 69.5 27 174q11 104.5 10 247.5l419 0v-578h89zM448 122v456h-155q-6 -178 -28.5 -291.5q-22.5 -113.5 -45.5 -164.5z" />
-<glyph unicode="&#1045;" horiz-adv-x="522" d="M60 700h415v-122h-278v-163h253v-122h-253v-171h283v-122l-420 0z" />
-<glyph unicode="&#1046;" horiz-adv-x="839" d="M350 700h130v-311l35 14l145 297h154l-163 -307l-47 -34l57 -42l184 -317h-165l-161 304h-39v-304h-130v316l-36 -14l-161 -302h-160l183 307l54 39l-52 37l-171 317h159l145 -299l39 0z" />
-<glyph unicode="&#1047;" horiz-adv-x="526" d="M120 310v107h24q9 0 22 0q13 0 26.5 0.5q13.5 0.5 26.5 2q13 1.5 21 3.5q35 8 60 28.5q25 20.5 25 55.5q0 48 -30.5 65.5q-30.5 17.5 -80.5 17.5q-45 0 -84 -12q-39 -12 -59 -23l-35 116q11 6 31.5 13q20.5 7 47 13.5q26.5 6.5 57.5 10.5q31 4 63 4q44 0 86 -8q42 -8 75 -28q33 -20 53 -53.5q20 -33.5 20 -85.5q0 -52 -27.5 -96q-27.5 -44 -88.5 -64l0 -5q65 -13 101.5 -56q36.5 -43 36.5 -115q0 -57 -23 -97.5q-23 -40.5 -60.5 -66.5q-37.5 -26 -86.5 -38.5q-49 -12.5 -100 -12.5q-66 0 -120 11q-54 11 -83 26l35 119q23 -11 66 -22.5q43 -11.5 102 -11.5q22 0 44.5 5.5q22.5 5.5 40.5 18q18 12.5 29 32.5q11 20 11 48q0 47 -35 71q-35 24 -125 26q-12 1 -18 1q-6 0 -21 0z" />
-<glyph unicode="&#1048;" horiz-adv-x="666" d="M468 388l8 91h-5l-47 -94l-261 -385h-103v700h137v-381l-10 -94h6l49 97l261 378h102v-700l-137 0z" />
-<glyph unicode="&#1049;" horiz-adv-x="666" d="M468 388l8 91h-5l-47 -94l-261 -385h-103v700h137v-381l-10 -94h6l49 97l261 378h102v-700h-137zM273 874q4 -32 23.5 -46q19.5 -14 50.5 -14q67 0 74 59l111 -17q-11 -63 -57.5 -92q-46.5 -29 -128.5 -29q-41 0 -75 6q-34 6 -59.5 19.5q-25.5 13.5 -42 36.5q-16.5 23 -20.5 57z" />
-<glyph unicode="&#1050;" horiz-adv-x="620" d="M233 299h-36v-299h-137v700h137v-310l32 14l193 296h156l-204 -294l-54 -38l56 -39l233 -329l-169 0z" />
-<glyph unicode="&#1051;" horiz-adv-x="623" d="M426 578h-149q-4 -95 -9 -173q-5 -78 -13.5 -140.5q-8.5 -62.5 -22.5 -110.5q-14 -48 -36 -83q-14 -23 -31.5 -38q-17.5 -15 -36.5 -24q-19 -9 -37.5 -12.5q-18.5 -3.5 -34.5 -3.5q-23 0 -38.5 3.5q-15.5 3.5 -30.5 10.5v118q21 -2 27 -3q6 -1 12 -1q16 0 31.5 8q15.5 8 26.5 27q15 22 26 64.5q11 42.5 19.5 108.5q8.5 66 13.5 157.5q5 91.5 7 213.5l413 0v-700l-137 0z" />
-<glyph unicode="&#1052;" horiz-adv-x="800" d="M603 363l15 139h-6l-43 -112l-149 -261h-44l-157 262l-44 111h-5l20 -138v-364h-130v700h125l187 -320l33 -80h4l30 82l177 318h124v-700l-137 0z" />
-<glyph unicode="&#1053;" horiz-adv-x="651" d="M453 293h-256v-293h-137v700h137v-285h256v285h137v-700l-137 0z" />
-<glyph unicode="&#1054;" horiz-adv-x="670" d="M38 350q0 175 77 269.5q77 94.5 220 94.5q75 0 131 -26q56 -26 93 -74q37 -48 55 -115q18 -67 18 -149q0 -175 -77.5 -269.5q-77.5 -94.5 -219.5 -94.5q-76 0 -132 26q-56 26 -92.5 74q-36.5 48 -54.5 115q-18 67 -18 149zt0 0zM182 350q0 -53 9 -97.5q9 -44.5 27.5 -76.5q18.5 -32 47.5 -50q29 -18 69 -18q73 0 113 57q40 57 40 185q0 51 -8.5 95q-8.5 44 -26.5 77q-18 33 -47 51.5q-29 18.5 -71 18.5q-73 0 -113 -58.5t-40 -183.5z" />
-<glyph unicode="&#1055;" horiz-adv-x="639" d="M442 578h-245v-578h-137v700h519v-700l-137 0z" />
-<glyph unicode="&#1056;" horiz-adv-x="572" d="M60 693q42 8 92.5 12.5q50.5 4.5 100.5 4.5q52 0 104.5 -8.5q52.5 -8.5 94.5 -34q42 -25.5 68.5 -71q26.5 -45.5 26.5 -118.5q0 -66 -23 -111.5q-23 -45.5 -61 -74.5q-38 -29 -86.5 -42q-48.5 -13 -100.5 -13q-5 0 -16 0q-11 0 -23 0.5q-12 0.5 -23.5 1.5q-11.5 1 -16.5 2l0 -241h-137zM264 592q-20 0 -38 -1.5q-18 -1.5 -29 -3.5l0 -227q4 -1 12 -2q8 -1 17 -1.5q9 -0.5 17.5 -0.5q8.5 0 12.5 0q27 0 53.5 5q26.5 5 47.5 18.5q21 13.5 33.5 37.5q12.5 24 12.5 63q0 33 -12 54.5q-12 21.5 -31.5 34.5q-19.5 13 -44.5 18t-51 5z" />
-<glyph unicode="&#1057;" horiz-adv-x="559" d="M534 29q-32 -23 -81.5 -33q-49.5 -10 -101.5 -10q-63 0 -119.5 19.5q-56.5 19.5 -99.5 63q-43 43.5 -68.5 113q-25.5 69.5 -25.5 168.5q0 103 28.5 172.5q28.5 69.5 74 112q45.5 42.5 101.5 61q56 18.5 112 18.5q60 0 101.5 -8q41.5 -8 68.5 -19v-116q-50 11 -81.5 16q-31.5 5 -76.5 5q-83 0 -133.5 -59q-50.5 -59 -50.5 -183q0 -54 12 -98.5q12 -44.5 36.5 -76q24.5 -31.5 61 -49q36.5 -17.5 84.5 -17.5q45 0 76 9q31 9 54 23z" />
-<glyph unicode="&#1058;" horiz-adv-x="568" d="M557 578h-204v-578h-137v578h-205v122l546 0z" />
-<glyph unicode="&#1059;" horiz-adv-x="568" d="M294 391l20 -91h6l16 94l105 306h141l-186 -484q-22 -57 -42.5 -99q-20.5 -42 -44 -69.5q-23.5 -27.5 -52.5 -41q-29 -13.5 -68 -13.5q-33 0 -53.5 4.5q-20.5 4.5 -44.5 19.5l35 111q17 -9 31 -11q14 -2 30 -2q47 0 66 74l-262 511l161 0z" />
-<glyph unicode="&#1060;" horiz-adv-x="802" d="M334 76q-19 -3 -39 -4q-20 -1 -43 -1q-48 0 -89 16.5q-41 16.5 -71.5 51q-30.5 34.5 -48 87q-17.5 52.5 -17.5 124.5q0 68 17.5 121.5q17.5 53.5 50 91q32.5 37.5 77.5 57.5q45 20 100 20q13 0 32 -1q19 -1 31 -4l0 85h134v-88q19 5 43.5 6.5q24.5 1.5 39.5 1.5q49 0 90 -17.5q41 -17.5 71.5 -53q30.5 -35.5 47.5 -88q17 -52.5 16 -121.5q1 -71 -18 -125q-19 -54 -52 -90.5q-33 -36.5 -76.5 -55q-43.5 -18.5 -93.5 -18.5q-16 0 -34.5 1.5q-18.5 1.5 -33.5 5.5l0 -98h-134zM519 530q-10 -1 -27 -2q-17 -1 -29 -4l0 -340q9 -2 21.5 -2q12.5 0 23.5 -1q28 1 52 11q24 10 42 32q18 22 28 55q10 33 9 80q1 80 -31 125q-32 45 -89 46zt0 0zM287 182q8 0 24.5 0.5q16.5 0.5 27.5 4.5l0 339q-10 2 -23 2.5q-13 0.5 -24 0.5q-55 0 -92 -42.5q-37 -42.5 -37 -135.5q0 -81 34 -125t90 -44z" />
-<glyph unicode="&#1061;" horiz-adv-x="633" d="M225 356l-195 344h165l108 -202l24 -71l23 71l113 202h149l-202 -337l212 -363h-163l-123 216l-27 74l-26 -74l-124 -216l-149 0z" />
-<glyph unicode="&#1062;" horiz-adv-x="682" d="M665 -125h-97l-15 125h-493v700h137v-578h241v578h137v-578l90 0z" />
-<glyph unicode="&#1063;" horiz-adv-x="606" d="M183 700v-222q0 -60 23.5 -89.5q23.5 -29.5 77.5 -29.5q38 0 71.5 8.5q33.5 8.5 53.5 25.5l0 307h137v-700h-137v282q-26 -15 -69.5 -27.5q-43.5 -12.5 -103.5 -12.5q-42 0 -76.5 10.5q-34.5 10.5 -60 34q-25.5 23.5 -39.5 60q-14 36.5 -14 88.5l0 265z" />
-<glyph unicode="&#1064;" horiz-adv-x="861" d="M60 0v700h137v-578h165v578h137v-578h165v578h137l0 -700z" />
-<glyph unicode="&#1065;" horiz-adv-x="911" d="M60 0v700h137v-578h165v578h137v-578h165v578h137v-578h92v-247h-96l-15 125z" />
-<glyph unicode="&#1066;" horiz-adv-x="664" d="M155 578h-159v122h296v-251q5 1 16.5 2.5q11.5 1.5 25 2.5q13.5 1 28 2q14.5 1 26.5 1q49 0 94.5 -10q45.5 -10 81 -35.5q35.5 -25.5 56.5 -69q21 -43.5 21 -110.5q0 -120 -74 -181q-74 -61 -214 -61q-14 0 -38 0.5q-24 0.5 -51.5 2.5q-27.5 2 -56 5q-28.5 3 -52.5 9zM360 112q28 0 53 5.5q25 5.5 44 19q19 13.5 29.5 35.5q10.5 22 10.5 54q0 34 -11.5 55.5q-11.5 21.5 -30 33.5q-18.5 12 -43.5 16q-25 4 -52 4q-7 0 -17 -1q-10 -1 -20 -2q-10 -1 -18.5 -2.5q-8.5 -1.5 -12.5 -2.5l0 -209q11 -3 29.5 -4.5t38.5 -1.5z" />
-<glyph unicode="&#1067;" horiz-adv-x="798" d="M600 700h137v-700h-137zM60 700h137v-251q11 2 35 5q24 3 47 3q50 0 95.5 -10q45.5 -10 79.5 -35.5q34 -25.5 54 -69q20 -43.5 20 -109.5q0 -122 -71 -182.5q-71 -60.5 -211 -60.5q-14 0 -36 0.5q-22 0.5 -47.5 2.5q-25.5 2 -52.5 5q-27 3 -50 9zM256 112q57 0 92.5 26.5q35.5 26.5 35.5 88.5q0 33 -10 54q-10 21 -27 33q-17 12 -40 16.5q-23 4.5 -50 4.5q-14 0 -33 -2.5q-19 -2.5 -27 -5.5l0 -209q11 -3 26.5 -4.5t32.5 -1.5z" />
-<glyph unicode="&#1068;" horiz-adv-x="569" d="M60 700h137v-251q5 1 16.5 2.5q11.5 1.5 25 2.5q13.5 1 27.5 2q14 1 26 1q49 0 95 -10q46 -10 81.5 -35.5q35.5 -25.5 56.5 -69q21 -43.5 21 -110.5q0 -120 -74.5 -181q-74.5 -61 -213.5 -61q-14 0 -37.5 0.5q-23.5 0.5 -51.5 2.5q-28 2 -56.5 5q-28.5 3 -52.5 9zM265 112q28 0 53 5.5q25 5.5 44 19q19 13.5 29.5 35.5q10.5 22 10.5 54q0 34 -11.5 55.5q-11.5 21.5 -30 33.5q-18.5 12 -43.5 16q-25 4 -52 4q-7 0 -17 -1q-10 -1 -20 -2q-10 -1 -18.5 -2.5q-8.5 -1.5 -12.5 -2.5l0 -209q11 -3 29.5 -4.5t38.5 -1.5z" />
-<glyph unicode="&#1069;" horiz-adv-x="574" d="M130 410h269q-3 40 -16.5 73.5q-13.5 33.5 -36.5 57.5q-23 24 -57 37.5q-34 13.5 -77 13.5q-54 0 -94 -11.5q-40 -11.5 -65 -25.5l-29 116q35 18 88 30.5q53 12.5 105 12.5q69 0 127.5 -19q58.5 -19 101 -62.5q42.5 -43.5 66.5 -113q24 -69.5 24 -169.5q0 -104 -28 -174q-28 -70 -75 -112q-47 -42 -108 -60q-61 -18 -127 -18q-57 0 -103.5 10q-46.5 10 -74.5 23l36 119q23 -11 62 -20.5q39 -9.5 90 -9.5q39 0 72 11q33 11 58.5 34.5q25.5 23.5 41.5 59.5q16 36 20 87l-270 0z" />
-<glyph unicode="&#1070;" horiz-adv-x="897" d="M197 415h93q13 143 84 221q71 78 199 78q76 0 130 -26q54 -26 88.5 -74q34.5 -48 51 -115q16.5 -67 16.5 -149q0 -175 -72 -269.5q-72 -94.5 -214 -94.5q-66 0 -116.5 22q-50.5 22 -85.5 62q-35 40 -55 97q-20 57 -26 126l-93 0v-293h-137v700h137zM430 350q0 -53 7.5 -97.5q7.5 -44.5 24 -76.5q16.5 -32 44 -50q27.5 -18 67.5 -18q73 0 107.5 57q34.5 57 34.5 185q0 51 -6.5 95q-6.5 44 -22.5 77q-16 33 -43.5 51.5q-27.5 18.5 -69.5 18.5q-72 0 -107.5 -58.5t-35.5 -183.5z" />
-<glyph unicode="&#1071;" horiz-adv-x="580" d="M519 0h-137v277l-72 -19l-146 -258h-159l144 233l60 43q-32 8 -60 24.5q-28 16.5 -49 42.5q-21 26 -33 61.5q-12 35.5 -12 80.5q0 63 22 106q22 43 61 69.5q39 26.5 93 38q54 11.5 117 11.5q17 0 39 -1q22 -1 45.5 -3q23.5 -2 46 -5q22.5 -3 40.5 -8zM331 588q-27 0 -51 -5q-24 -5 -42 -17q-18 -12 -28.5 -33q-10.5 -21 -10.5 -54q0 -31 10 -52.5q10 -21.5 28 -35q18 -13.5 42 -19.5q24 -6 52 -6h51v217q-11 2 -22.5 3.5t-28.5 1.5z" />
-<glyph unicode="&#1072;" horiz-adv-x="496" d="M54 471q40 18 95 28.5q55 10.5 115 10.5q52 0 87 -12.5q35 -12.5 55.5 -35.5q20.5 -23 29 -55q8.5 -32 8.5 -72q0 -44 -3 -88.5q-3 -44.5 -3.5 -87.5q-0.5 -43 2.5 -83.5q3 -40.5 15 -76.5l-106 0l-21 69h-5q-20 -31 -55.5 -53.5q-35.5 -22.5 -91.5 -22.5q-35 0 -63 10.5q-28 10.5 -48 30q-20 19.5 -31 46q-11 26.5 -11 59.5q0 46 20.5 77.5q20.5 31.5 59 51q38.5 19.5 92 27q53.5 7.5 119.5 4.5q7 56 -8 80.5q-15 24.5 -67 24.5q-39 0 -82.5 -8q-43.5 -8 -71.5 -21zM219 99q39 0 62 17.5q23 17.5 34 37.5l0 65q-31 3 -59.5 1q-28.5 -2 -50.5 -9q-22 -7 -35 -20q-13 -13 -13 -33q0 -28 16.5 -43.5t45.5 -15.5z" />
-<glyph unicode="&#1073;" horiz-adv-x="537" d="M142 406q29 44 68.5 63.5q39.5 19.5 95.5 19.5q91 0 144.5 -55.5q53.5 -55.5 53.5 -172.5q0 -135 -61 -205q-61 -70 -172 -70q-116 0 -177 77q-61 77 -61 240q0 86 10 147q10 61 28.5 103q18.5 42 44 67q25.5 25 57 39.5q31.5 14.5 67.5 20.5q36 6 76 10q52 5 89 12.5q37 7.5 55 24.5l5 -116q-20 -17 -57 -23.5q-37 -6.5 -100 -11.5q-38 -2 -67 -9q-29 -7 -50 -25q-21 -18 -33.5 -50.5q-12.5 -32.5 -18.5 -85.5zM167 244q0 -64 25 -106q25 -42 77 -42q54 0 77.5 38q23.5 38 23.5 110q0 65 -22 100q-22 35 -73 35q-55 0 -81.5 -36t-26.5 -99z" />
-<glyph unicode="&#1074;" horiz-adv-x="505" d="M57 499q35 3 84.5 6q49.5 3 106.5 3q110 0 156.5 -31.5q46.5 -31.5 46.5 -94.5q0 -35 -20 -68q-20 -33 -63 -48l0 -4q54 -12 78 -42.5q24 -30.5 24 -78.5q0 -75 -57.5 -112q-57.5 -37 -184.5 -37q-42 0 -89 2.5q-47 2.5 -82 6.5zM184 100q14 -2 26 -3q12 -1 30 -1q54 0 77 15q23 15 23 46q0 26 -19.5 42.5q-19.5 16.5 -69.5 16.5h-67zM253 296q32 0 52.5 15.5q20.5 15.5 20.5 39.5q0 26 -17.5 39.5q-17.5 13.5 -63.5 13.5q-23 0 -36.5 -1q-13.5 -1 -24.5 -2l0 -105z" />
-<glyph unicode="&#1075;" horiz-adv-x="376" d="M380 385h-189v-385h-134v500l323 0z" />
-<glyph unicode="&#1076;" horiz-adv-x="568" d="M554 -114h-95l-15 114h-336l-15 -114h-95v229h59q8 11 20.5 37.5q12.5 26.5 25 72.5q12.5 46 21.5 114q9 68 9 161l348 0v-385h73zM351 109v281h-105q-2 -36 -7 -76.5q-5 -40.5 -12.5 -78.5q-7.5 -38 -17.5 -71q-10 -33 -22 -55z" />
-<glyph unicode="&#1077;" horiz-adv-x="508" d="M457 43q-30 -24 -81.5 -40.5q-51.5 -16.5 -109.5 -16.5q-121 0 -177 70.5q-56 70.5 -56 193.5q0 132 63 198q63 66 177 66q38 0 74 -10q36 -10 64 -33q28 -23 45 -62q17 -39 17 -97q0 -21 -2.5 -45q-2.5 -24 -7.5 -50l-300 0q3 -63 32.5 -95q29.5 -32 95.5 -32q41 0 73.5 12.5q32.5 12.5 49.5 25.5zM271 410q-51 0 -75.5 -30.5q-24.5 -30.5 -29.5 -81.5l186 0q4 54 -16.5 83t-64.5 29z" />
-<glyph unicode="&#1078;" horiz-adv-x="693" d="M242 203l-102 -203h-146l131 229l34 30l-51 38l-103 203h139l93 -203h43v203h124v-213l38 14l94 199h138l-109 -203l-39 -32l51 -40l121 -225h-149l-102 207h-43v-207h-124l0 217z" />
-<glyph unicode="&#1079;" horiz-adv-x="432" d="M109 207v91h61q35 0 57.5 14q22.5 14 22.5 37q0 27 -20 38.5q-20 11.5 -61 11.5q-39 0 -69 -10q-30 -10 -48 -21l-28 99q30 17 79.5 29.5q49.5 12.5 105.5 12.5q86 0 128.5 -32q42.5 -32 42.5 -93q0 -17 -4.5 -34.5q-4.5 -17.5 -14.5 -33.5q-10 -16 -24.5 -28.5q-14.5 -12.5 -34.5 -19.5l0 -4q53 -12 75 -42.5q22 -30.5 22 -81.5q0 -32 -13 -59.5q-13 -27.5 -39.5 -47.5q-26.5 -20 -66.5 -32q-40 -12 -95 -12q-55 0 -95.5 11.5q-40.5 11.5 -67.5 26.5l28 101q23 -13 55.5 -21q32.5 -8 72.5 -8q91 0 91 58q0 26 -23.5 38q-23.5 12 -87.5 12z" />
-<glyph unicode="&#1080;" horiz-adv-x="545" d="M358 228l5 71h-3l-43 -73l-178 -226h-82v500h130v-238l-6 -68h4l41 71l180 235h82v-500l-130 0z" />
-<glyph unicode="&#1081;" horiz-adv-x="545" d="M358 228l5 71h-3l-43 -73l-178 -226h-82v500h130v-238l-6 -68h4l41 71l180 235h82v-500h-130zM219 704q7 -39 23.5 -55q16.5 -16 42.5 -16q28 0 44.5 16q16.5 16 22.5 54l99 -25q-12 -65 -59 -96.5q-47 -31.5 -110 -31.5q-31 0 -60 7q-29 7 -52 22.5q-23 15.5 -39 39.5q-16 24 -22 59z" />
-<glyph unicode="&#1082;" horiz-adv-x="489" d="M222 207h-35v-207h-130v500h130v-213l31 14l117 199h139l-121 -190l-51 -38l56 -39l135 -233l-149 0z" />
-<glyph unicode="&#1083;" horiz-adv-x="515" d="M329 385h-99q-6 -71 -14 -141q-8 -70 -25.5 -125.5q-17.5 -55.5 -47.5 -90q-30 -34.5 -78 -34.5q-58 0 -82 15l16 108q16 -6 30 -6q20 0 35 17q15 17 25.5 61q10.5 44 17 119.5q6.5 75.5 9.5 191.5l343 0v-500l-130 0z" />
-<glyph unicode="&#1084;" horiz-adv-x="666" d="M485 229l8 104h-5l-40 -86l-94 -155h-47l-103 155l-38 86h-6l13 -103v-230h-116v500h135l115 -188l28 -63h4l29 65l106 186h136v-500l-125 0z" />
-<glyph unicode="&#1085;" horiz-adv-x="537" d="M350 197h-163v-197h-130v500h130v-188h163v188h130v-500l-130 0z" />
-<glyph unicode="&#1086;" horiz-adv-x="537" d="M33 250q0 127 62 195.5q62 68.5 174 68.5q60 0 104 -19q44 -19 73 -53.5q29 -34.5 43.5 -83.5q14.5 -49 14.5 -108q0 -127 -61.5 -195.5q-61.5 -68.5 -173.5 -68.5q-60 0 -104 19q-44 19 -73.5 53.5q-29.5 34.5 -44 83.5q-14.5 49 -14.5 108zt0 0zM167 250q0 -33 6 -61q6 -28 18 -49q12 -21 31.5 -32.5q19.5 -11.5 46.5 -11.5q51 0 76 37q25 37 25 117q0 69 -23 111.5q-23 42.5 -78 42.5q-48 0 -75 -36t-27 -118z" />
-<glyph unicode="&#1087;" horiz-adv-x="532" d="M345 385h-158v-385h-130v500h418v-500l-130 0z" />
-<glyph unicode="&#1088;" horiz-adv-x="540" d="M57 500h95l15 -60h4q26 38 61.5 56q35.5 18 86.5 18q94 0 141 -59.5q47 -59.5 47 -191.5q0 -64 -15 -115.5q-15 -51.5 -44.5 -87.5q-29.5 -36 -72 -55q-42.5 -19 -97.5 -19q-31 0 -51 4.5q-20 4.5 -40 14.5l0 -205h-130zM280 404q-38 0 -59.5 -19q-21.5 -19 -33.5 -57l0 -208q14 -11 30.5 -17.5q16.5 -6.5 43.5 -6.5q56 0 84 39.5q28 39.5 28 130.5q0 66 -22 102t-71 36z" />
-<glyph unicode="&#1089;" horiz-adv-x="433" d="M411 31q-30 -22 -72.5 -33.5q-42.5 -11.5 -87.5 -11.5q-60 0 -101.5 19q-41.5 19 -67.5 53.5q-26 34.5 -37.5 83.5q-11.5 49 -11.5 108q0 127 57 195.5q57 68.5 166 68.5q55 0 88.5 -9q33.5 -9 60.5 -23l-31 -106q-23 11 -45.5 17q-22.5 6 -51.5 6q-54 0 -82 -35.5q-28 -35.5 -28 -113.5q0 -32 7 -59q7 -27 21 -47q14 -20 36.5 -31.5q22.5 -11.5 52.5 -11.5q33 0 56 8.5q23 8.5 41 20.5z" />
-<glyph unicode="&#1090;" horiz-adv-x="418" d="M417 385h-141v-385h-134v385h-141v115l416 0z" />
-<glyph unicode="&#1091;" horiz-adv-x="478" d="M239 219l18 -78h6l13 79l76 280h134l-152 -451q-19 -56 -36.5 -102.5q-17.5 -46.5 -38.5 -80.5q-21 -34 -46.5 -52.5q-25.5 -18.5 -60.5 -18.5q-52 0 -83 17l24 104q15 -6 30 -6q23 0 44.5 19.5q21.5 19.5 32.5 70.5l-209 500l156 0z" />
-<glyph unicode="&#1092;" horiz-adv-x="700" d="M286 -6q-17 -6 -35.5 -7q-18.5 -1 -33.5 -1q-91 0 -140 65q-49 65 -49 199q0 128 54 194q54 66 156 66q28 0 48 -4l0 194h128v-195q18 3 32 4q14 1 27 1q99 0 149 -58.5q50 -58.5 50 -191.5q0 -63 -13.5 -113.5q-13.5 -50.5 -39.5 -86.5q-26 -36 -63.5 -55q-37.5 -19 -86.5 -19q-9 0 -26.5 1.5q-17.5 1.5 -28.5 5.5l0 -193h-128zM444 407q-10 0 -17.5 -1.5q-7.5 -1.5 -18.5 -3.5l0 -310q8 -2 18.5 -2.5q10.5 -0.5 22.5 -0.5q48 0 70.5 39.5q22.5 39.5 22.5 131.5q0 78 -22 112.5q-22 34.5 -76 34.5zt0 0zM251 89q11 0 20.5 1.5q9.5 1.5 20.5 3.5l0 309q-19 4 -39 4q-46 0 -70.5 -35.5q-24.5 -35.5 -24.5 -121.5q0 -78 22.5 -119.5t70.5 -41.5z" />
-<glyph unicode="&#1093;" horiz-adv-x="525" d="M170 256l-150 244h155l65 -107l28 -70l30 70l68 107h141l-151 -240l161 -260h-151l-77 120l-30 74l-32 -74l-77 -120l-142 0z" />
-<glyph unicode="&#1094;" horiz-adv-x="559" d="M545 -114h-95l-15 114h-378v500h130v-385h155v385h130v-385l73 0z" />
-<glyph unicode="&#1095;" horiz-adv-x="505" d="M163 500v-114q0 -31 2.5 -53.5q2.5 -22.5 10 -37q7.5 -14.5 21 -21.5q13.5 -7 35.5 -7q29 0 50.5 7q21.5 7 35.5 17l0 209h130v-500h-130v196q-15 -11 -46 -24.5q-31 -13.5 -83 -13.5q-37 0 -66 8q-29 8 -49 28q-20 20 -30.5 53q-10.5 33 -10.5 83l0 170z" />
-<glyph unicode="&#1096;" horiz-adv-x="754" d="M57 0v500h130v-385h125v385h130v-385h125v385h130l0 -500z" />
-<glyph unicode="&#1097;" horiz-adv-x="783" d="M769 -114h-94l-15 114h-603v500h130v-385h125v385h130v-385h125v385h130v-385l72 0z" />
-<glyph unicode="&#1098;" horiz-adv-x="539" d="M235 109q28 -6 57 -6q48 0 70 16.5q22 16.5 22 51.5q0 65 -89 65q-35 0 -60 -7zM235 322q24 4 49 5.5q25 1.5 45 1.5q52 0 88 -11.5q36 -11.5 58.5 -32.5q22.5 -21 32.5 -49.5q10 -28.5 10 -61.5q0 -91 -54.5 -136q-54.5 -45 -182.5 -45q-57 0 -99 2q-42 2 -77 5l0 385h-110v115l240 0z" />
-<glyph unicode="&#1099;" horiz-adv-x="703" d="M187 109q30 -6 57 -6q45 0 63 16.5q18 16.5 18 51.5q0 32 -18 48.5q-18 16.5 -60 16.5q-33 0 -60 -7zM187 322q24 4 48.5 5.5q24.5 1.5 44.5 1.5q51 0 85 -11.5q34 -11.5 55 -32.5q21 -21 30 -49.5q9 -28.5 9 -61.5q0 -45 -12 -79q-12 -34 -39 -56.5q-27 -22.5 -70 -34q-43 -11.5 -106 -11.5q-57 0 -98.5 2q-41.5 2 -76.5 5l0 500h130zM516 500h130v-500l-130 0z" />
-<glyph unicode="&#1100;" horiz-adv-x="490" d="M187 109q30 -6 57 -6q48 0 69.5 16.5q21.5 16.5 21.5 51.5q0 65 -88 65q-33 0 -60 -7zM187 322q24 4 48.5 5.5q24.5 1.5 44.5 1.5q52 0 88 -11.5q36 -11.5 58.5 -32.5q22.5 -21 32.5 -49.5q10 -28.5 10 -61.5q0 -91 -54 -136q-54 -45 -183 -45q-57 0 -98.5 2q-41.5 2 -76.5 5l0 500l130 0z" />
-<glyph unicode="&#1101;" horiz-adv-x="459" d="M109 300h186q-5 50 -33 77q-28 27 -83 27q-38 0 -67 -9q-29 -9 -51 -21l-35 94q66 46 178 46q112 0 167 -66.5q55 -66.5 55 -197.5q0 -132 -62 -198q-62 -66 -170 -66q-47 0 -95 9.5q-48 9.5 -76 26.5l32 102q23 -13 54.5 -20.5q31.5 -7.5 63.5 -7.5q64 0 91 27q27 27 32 84l-187 0z" />
-<glyph unicode="&#1102;" horiz-adv-x="734" d="M480 -14q-56 0 -95.5 15q-39.5 15 -65 43q-25.5 28 -39 68q-13.5 40 -17.5 90l-76 0v-202h-130v500h130v-188h77q10 97 61.5 149.5q51.5 52.5 156.5 52.5q57 0 98 -19q41 -19 68 -53.5q27 -34.5 39.5 -83.5q12.5 -49 12.5 -108q0 -127 -54 -195.5q-54 -68.5 -166 -68.5zt0 0zM387 250q0 -73 20.5 -113.5q20.5 -40.5 72.5 -40.5q46 0 66 34q20 34 20 120q0 77 -19 115.5q-19 38.5 -70 38.5q-46 0 -68 -35t-22 -119z" />
-<glyph unicode="&#1103;" horiz-adv-x="503" d="M321 189l-60 -12l-96 -177h-155l97 157l49 37q-49 8 -81 46.5q-32 38.5 -32 96.5q0 91 60.5 134q60.5 43 185.5 43q48 0 89.5 -5q41.5 -5 72.5 -11l0 -498h-130zM321 257v138q-11 5 -24 7q-13 2 -25 2q-45 0 -70 -19q-25 -19 -25 -57q0 -38 27.5 -56q27.5 -18 80.5 -17z" />
-<glyph unicode="&#1105;" horiz-adv-x="508" d="M457 43q-30 -24 -81.5 -40.5q-51.5 -16.5 -109.5 -16.5q-121 0 -177 70.5q-56 70.5 -56 193.5q0 132 63 198q63 66 177 66q38 0 74 -10q36 -10 64 -33q28 -23 45 -62q17 -39 17 -97q0 -21 -2.5 -45q-2.5 -24 -7.5 -50l-300 0q3 -63 32.5 -95q29.5 -32 95.5 -32q41 0 73.5 12.5q32.5 12.5 49.5 25.5zM271 410q-51 0 -75.5 -30.5q-24.5 -30.5 -29.5 -81.5l186 0q4 54 -16.5 83q-20.5 29 -64.5 29zt0 0zM85 631q0 32 19.5 51q19.5 19 51.5 19q32 0 50.5 -19q18.5 -19 18.5 -51q0 -30 -18.5 -49q-18.5 -19 -50.5 -19q-32 0 -51.5 19q-19.5 19 -19.5 49zt0 0zM304 631q0 32 18.5 51q18.5 19 50.5 19q32 0 51.5 -19q19.5 -19 19.5 -51q0 -30 -19.5 -49q-19.5 -19 -51.5 -19q-32 0 -50.5 19t-18.5 49z" />
-<glyph unicode="&#1106;" horiz-adv-x="550" d="M-12 600h74v100h130v-100h161v-80h-161v-130h4q23 32 59 51q36 19 90 19q38 0 67 -10q29 -10 48 -33q19 -23 28.5 -62.5q9.5 -39.5 9.5 -97.5v-278q0 -91 -36 -139q-36 -48 -115 -48q-30 0 -64 7l0 109q4 0 7.5 -0.5q3.5 -0.5 7.5 -0.5q43 0 56.5 24.5q13.5 24.5 13.5 68.5v230q0 61 -16.5 88q-16.5 27 -61.5 27q-33 0 -61.5 -22q-28.5 -22 -36.5 -57l0 -266h-130v520l-74 0z" />
-<glyph unicode="&#1107;" horiz-adv-x="376" d="M380 385h-189v-385h-134v500h323zM217 720h132v-30l-111 -124l-74 0z" />
-<glyph unicode="&#1108;" horiz-adv-x="457" d="M435 31q-30 -22 -75 -33.5q-45 -11.5 -90 -11.5q-60 0 -104 19q-44 19 -72.5 53.5q-28.5 34.5 -42.5 83.5q-14 49 -14 108q0 63 17 112q17 49 48 83q31 34 75 51.5q44 17.5 98 17.5q54 0 90 -9q36 -9 63 -23l-30 -106q-23 11 -48.5 17q-25.5 6 -54.5 6q-47 0 -80.5 -24q-33.5 -24 -43.5 -78l196 0v-88h-197q9 -48 41.5 -78q32.5 -30 90.5 -30q34 0 59 8.5q25 8.5 44 20.5z" />
-<glyph unicode="&#1109;" horiz-adv-x="422" d="M264 138q0 20 -17 32q-17 12 -42 22q-25 10 -55 20.5q-30 10.5 -55 29q-25 18.5 -42 47q-17 28.5 -17 73.5q0 74 44 113q44 39 127 39q57 0 103 -12q46 -12 72 -27l-29 -94q-23 9 -58 19q-35 10 -71 10q-58 0 -58 -45q0 -18 17 -29q17 -11 42 -20.5q25 -9.5 55 -20.5q30 -11 55 -28.5q25 -17.5 42 -45.5q17 -28 17 -72q0 -76 -48.5 -119.5q-48.5 -43.5 -145.5 -43.5q-53 0 -99.5 13.5q-46.5 13.5 -75.5 31.5l36 97q23 -13 61 -25.5q38 -12.5 78 -12.5q29 0 46.5 11t17.5 37z" />
-<glyph unicode="&#1110;" horiz-adv-x="269" d="M67 500h130v-500h-130zM51 641q0 29 21.5 49.5q21.5 20.5 59.5 20.5q38 0 61.5 -20.5q23.5 -20.5 23.5 -49.5q0 -29 -23.5 -48.5q-23.5 -19.5 -61.5 -19.5q-38 0 -59.5 19.5t-21.5 48.5z" />
-<glyph unicode="&#1111;" horiz-adv-x="318" d="M21 642q0 31 15.5 50.5q15.5 19.5 47.5 19.5q32 0 47.5 -19.5q15.5 -19.5 15.5 -50.5q0 -30 -15.5 -49.5q-15.5 -19.5 -47.5 -19.5q-32 0 -47.5 19.5q-15.5 19.5 -15.5 49.5zt0 0zM172 642q0 31 15.5 50.5q15.5 19.5 47.5 19.5q32 0 47.5 -19.5q15.5 -19.5 15.5 -50.5q0 -30 -15.5 -49.5q-15.5 -19.5 -47.5 -19.5q-32 0 -47.5 19.5q-15.5 19.5 -15.5 49.5zt0 0zM93 500h130v-500l-130 0z" />
-<glyph unicode="&#1112;" horiz-adv-x="268" d="M69 500h130v-521q0 -91 -36 -139q-36 -48 -115 -48q-30 0 -64 7l0 109q4 0 7 -0.5q3 -0.5 6 -0.5q45 0 58.5 29q13.5 29 13.5 80zM50 641q0 29 21.5 49.5q21.5 20.5 59.5 20.5q38 0 61.5 -20.5q23.5 -20.5 23.5 -49.5q0 -29 -23.5 -48.5q-23.5 -19.5 -61.5 -19.5q-38 0 -59.5 19.5t-21.5 48.5z" />
-<glyph unicode="&#1113;" horiz-adv-x="762" d="M459 322q24 4 48.5 5.5q24.5 1.5 44.5 1.5q52 0 88 -11.5q36 -11.5 58.5 -32.5q22.5 -21 32.5 -49.5q10 -28.5 10 -61.5q0 -91 -54 -136q-54 -45 -183 -45q-57 0 -98.5 2q-41.5 2 -76.5 5l0 385h-99q-6 -71 -14 -141q-8 -70 -25.5 -125.5q-17.5 -55.5 -47.5 -90q-30 -34.5 -78 -34.5q-58 0 -82 15l16 108q16 -6 30 -6q20 0 35 17q15 17 25.5 61q10.5 44 17 119.5q6.5 75.5 9.5 191.5l343 0zM519 236q-35 0 -60 -7l0 -121q14 -3 28.5 -4q14.5 -1 28.5 -1q48 0 69.5 16.5q21.5 16.5 21.5 51.5q0 65 -88 65z" />
-<glyph unicode="&#1114;" horiz-adv-x="784" d="M480 321q24 4 49 5.5q25 1.5 45 1.5q52 0 88 -11.5q36 -11.5 58.5 -32.5q22.5 -21 32.5 -49q10 -28 10 -61q0 -91 -54.5 -136q-54.5 -45 -182.5 -45q-57 0 -99 2q-42 2 -77 5l0 199h-163v-199h-130v500h130v-186h163v186h130zM480 109q28 -6 57 -6q48 0 70 16.5q22 16.5 22 51.5q0 64 -89 64q-35 0 -60 -7z" />
-<glyph unicode="&#1115;" horiz-adv-x="550" d="M-12 600h74v100h130v-100h161v-80h-161v-130h4q23 32 59 51q36 19 90 19q38 0 67 -10q29 -10 48 -33q19 -23 28.5 -62.5q9.5 -39.5 9.5 -97.5v-257h-130v230q0 61 -16.5 88q-16.5 27 -61.5 27q-33 0 -61.5 -22q-28.5 -22 -36.5 -57l0 -266h-130v520l-74 0z" />
-<glyph unicode="&#1116;" horiz-adv-x="489" d="M222 207h-35v-207h-130v500h130v-213l31 14l117 199h139l-121 -190l-51 -38l56 -39l135 -233h-149zM244 720h132v-30l-111 -124l-74 0z" />
-<glyph unicode="&#1118;" horiz-adv-x="478" d="M239 219l18 -78h6l13 79l76 280h134l-152 -451q-19 -56 -36.5 -102.5q-17.5 -46.5 -38.5 -80.5q-21 -34 -46.5 -52.5q-25.5 -18.5 -60.5 -18.5q-52 0 -83 17l24 104q15 -6 30 -6q23 0 44.5 19.5q21.5 19.5 32.5 70.5l-209 500h156zM185 704q7 -39 23.5 -55q16.5 -16 42.5 -16q28 0 44.5 16q16.5 16 22.5 54l99 -25q-12 -65 -59 -96.5q-47 -31.5 -110 -31.5q-31 0 -60 7q-29 7 -52 22.5q-23 15.5 -39 39.5q-16 24 -22 59z" />
-<glyph unicode="&#1119;" horiz-adv-x="532" d="M57 0v500h130v-385h158v385h130v-500h-148l-15 -175h-88l-20 175z" />
-<glyph unicode="&#1122;" horiz-adv-x="651" d="M0 648h142v77h137v-77h200v-115h-200v-90q5 1 16.5 2.5q11.5 1.5 25 2.5q13.5 1 27.5 2q14 1 26 1q49 0 95 -9.5q46 -9.5 81.5 -34.5q35.5 -25 56.5 -67q21 -42 21 -108q0 -120 -74.5 -181q-74.5 -61 -213.5 -61q-14 0 -37.5 0.5q-23.5 0.5 -51.5 2.5q-28 2 -56.5 5q-28.5 3 -52.5 9l0 526h-142zM347 112q28 0 53 5.5q25 5.5 44 19q19 13.5 29.5 35.5q10.5 22 10.5 54q0 34 -11.5 55.5q-11.5 21.5 -30 33.5q-18.5 12 -43.5 16q-25 4 -52 4q-7 0 -17 -1q-10 -1 -20 -2q-10 -1 -18.5 -2.5q-8.5 -1.5 -12.5 -2.5l0 -209q11 -3 29.5 -4.5t38.5 -1.5z" />
-<glyph unicode="&#1123;" horiz-adv-x="539" d="M-5 500h110v200h130v-200h160v-93h-160v-85q24 4 49 5.5q25 1.5 45 1.5q52 0 88 -11.5q36 -11.5 58.5 -32.5q22.5 -21 32.5 -49.5q10 -28.5 10 -61.5q0 -91 -54.5 -136q-54.5 -45 -182.5 -45q-57 0 -99 2q-42 2 -77 5l0 407h-110zM235 109q28 -6 57 -6q48 0 70 16.5q22 16.5 22 51.5q0 65 -89 65q-35 0 -60 -7z" />
-<glyph unicode="&#1138;" horiz-adv-x="670" d="M38 350q0 175 77 269.5q77 94.5 220 94.5q75 0 131 -26q56 -26 93 -74q37 -48 55 -115q18 -67 18 -149q0 -175 -77.5 -269.5q-77.5 -94.5 -219.5 -94.5q-76 0 -132 26q-56 26 -92.5 74q-36.5 48 -54.5 115q-18 67 -18 149zt0 0zM488 407q-8 89 -48 137q-40 48 -105 48q-29 0 -55 -10q-26 -10 -46.5 -32q-20.5 -22 -34 -57.5q-13.5 -35.5 -17.5 -85.5zM182 297q8 -95 49 -142q41 -47 104 -47q29 0 55.5 9.5q26.5 9.5 47 31q20.5 21.5 34 57.5q13.5 36 16.5 91z" />
-<glyph unicode="&#1139;" horiz-adv-x="537" d="M33 250q0 127 62 195.5q62 68.5 174 68.5q60 0 104 -19q44 -19 73 -53.5q29 -34.5 43.5 -83.5q14.5 -49 14.5 -108q0 -127 -61.5 -195.5q-61.5 -68.5 -173.5 -68.5q-60 0 -104 19q-44 19 -73.5 53.5q-29.5 34.5 -44 83.5q-14.5 49 -14.5 108zt0 0zM370 289q-8 60 -33.5 87.5q-25.5 27.5 -67.5 27.5q-19 0 -36 -6q-17 -6 -30.5 -19.5q-13.5 -13.5 -23 -35.5q-9.5 -22 -12.5 -54zM167 207q6 -54 34 -82.5q28 -28.5 68 -28.5q38 0 66.5 24.5q28.5 24.5 34.5 86.5z" />
-<glyph unicode="&#1140;" horiz-adv-x="629" d="M347 -5h-98l-262 705h159l140 -411l18 -119h4l16 120l69 229q16 54 33 90.5q17 36.5 38.5 58.5q21.5 22 48.5 31.5q27 9.5 63 9.5q38 0 62 -6q24 -6 45 -17l-30 -116q-17 9 -31.5 12q-14.5 3 -30.5 3q-23 0 -38 -17.5q-15 -17.5 -28 -57.5z" />
-<glyph unicode="&#1141;" horiz-adv-x="527" d="M289 -5h-79l-217 505h151l93 -262l17 -77h4l15 79l23 71q17 54 32.5 92q15.5 38 34 61.5q18.5 23.5 42 34q23.5 10.5 56.5 10.5q24 0 46 -4.5q22 -4.5 36 -12.5l-18 -106q-18 9 -34 9q-17 0 -32.5 -14q-15.5 -14 -31.5 -52z" />
-<glyph unicode="&#1162;" horiz-adv-x="712" d="M468 388l8 91h-5l-47 -94l-261 -385h-103v700h137v-381l-10 -94h6l49 97l261 378h102v-585h117v-31l-96 -214h-94l45 130h-109zM260 874q4 -32 23.5 -46q19.5 -14 50.5 -14q67 0 74 59l111 -17q-11 -63 -57.5 -92q-46.5 -29 -128.5 -29q-41 0 -75 6q-34 6 -59.5 19.5q-25.5 13.5 -42 36.5q-16.5 23 -20.5 57z" />
-<glyph unicode="&#1163;" horiz-adv-x="590" d="M358 228l5 71h-3l-43 -73l-178 -226h-82v500h130v-238l-6 -68h4l41 71l180 235h82v-385h107v-31l-96 -198h-94l45 114h-92zM219 704q7 -39 23.5 -55q16.5 -16 42.5 -16q28 0 44.5 16q16.5 16 22.5 54l99 -25q-12 -65 -59 -96.5q-47 -31.5 -110 -31.5q-31 0 -60 7q-29 7 -52 22.5q-23 15.5 -39 39.5q-16 24 -22 59z" />
-<glyph unicode="&#1164;" horiz-adv-x="651" d="M0 648h142v77h137v-77h200v-115h-200v-90q5 1 16.5 2.5q11.5 1.5 25 2.5q13.5 1 27.5 2q14 1 26 1q49 0 95 -9.5q46 -9.5 81.5 -34.5q35.5 -25 56.5 -67q21 -42 21 -108q0 -120 -74.5 -181q-74.5 -61 -213.5 -61q-14 0 -37.5 0.5q-23.5 0.5 -51.5 2.5q-28 2 -56.5 5q-28.5 3 -52.5 9l0 526h-142zM347 112q28 0 53 5.5q25 5.5 44 19q19 13.5 29.5 35.5q10.5 22 10.5 54q0 34 -11.5 55.5q-11.5 21.5 -30 33.5q-18.5 12 -43.5 16q-25 4 -52 4q-7 0 -17 -1q-10 -1 -20 -2q-10 -1 -18.5 -2.5q-8.5 -1.5 -12.5 -2.5l0 -209q11 -3 29.5 -4.5t38.5 -1.5z" />
-<glyph unicode="&#1165;" horiz-adv-x="539" d="M-5 500h110v200h130v-200h160v-93h-160v-85q24 4 49 5.5q25 1.5 45 1.5q52 0 88 -11.5q36 -11.5 58.5 -32.5q22.5 -21 32.5 -49.5q10 -28.5 10 -61.5q0 -91 -54.5 -136q-54.5 -45 -182.5 -45q-57 0 -99 2q-42 2 -77 5l0 407h-110zM235 109q28 -6 57 -6q48 0 70 16.5q22 16.5 22 51.5q0 65 -89 65q-35 0 -60 -7z" />
-<glyph unicode="&#1166;" horiz-adv-x="572" d="M60 693q42 8 92.5 12.5q50.5 4.5 100.5 4.5q52 0 104.5 -8.5q52.5 -8.5 94.5 -34q42 -25.5 68.5 -71q26.5 -45.5 26.5 -118.5q0 -69 -25 -116q-25 -47 -67 -76l64 -91l-79 -58l-77 109q-42 -9 -87 -9q-5 0 -16 0q-11 0 -23 0.5q-12 0.5 -23.5 1.5q-11.5 1 -16.5 2l0 -241h-137zM303 478l63 -92q17 14 27 36.5q10 22.5 10 57.5q0 33 -12 54.5q-12 21.5 -31.5 34.5q-19.5 13 -44.5 18q-25 5 -51 5q-20 0 -38 -1.5q-18 -1.5 -29 -3.5l0 -227q4 -1 12 -2q8 -1 17 -1.5q9 -0.5 17.5 -0.5q8.5 0 12.5 0q14 0 27 1q13 1 26 4l-58 83z" />
-<glyph unicode="&#1167;" horiz-adv-x="540" d="M57 500h95l15 -60h4q26 38 61.5 56q35.5 18 86.5 18q94 0 141 -59.5q47 -59.5 47 -191.5q0 -142 -70 -215l47 -56l-73 -61l-55 67q-18 -5 -37.5 -8.5q-19.5 -3.5 -40.5 -3.5q-31 0 -51 4.5q-20 4.5 -40 14.5l0 -205h-130zM294 193l48 -60q15 21 23 53.5q8 32.5 8 79.5q0 66 -22 102q-22 36 -71 36q-38 0 -59.5 -19q-21.5 -19 -33.5 -57l0 -208q14 -11 30.5 -17.5q16.5 -6.5 43.5 -6.5q10 0 19.5 1q9.5 1 17.5 4l-47 57z" />
-<glyph unicode="&#1168;" horiz-adv-x="458" d="M468 700l-1 -122h-270v-578h-137v700h298l21 152h88l0 -152z" />
-<glyph unicode="&#1169;" horiz-adv-x="376" d="M191 385v-385h-134v500h215l21 152h87l0 -267z" />
-<glyph unicode="&#1170;" horiz-adv-x="508" d="M503 578h-270v-191h224v-93h-224v-294h-137v294h-96v93h96v313l407 0z" />
-<glyph unicode="&#1171;" horiz-adv-x="414" d="M406 385h-189v-111h162v-80h-162v-194h-134v194h-83v80h83v226l323 0z" />
-<glyph unicode="&#1172;" horiz-adv-x="582" d="M197 0h-137v700h407v-122h-270v-203q16 6 49.5 14q33.5 8 81.5 8q42 0 81 -11.5q39 -11.5 69.5 -40q30.5 -28.5 49 -78q18.5 -49.5 18.5 -125.5q0 -129 -57 -199q-57 -70 -184 -70q-27 0 -40.5 1q-13.5 1 -21.5 3l0 118q7 -2 23.5 -2.5q16.5 -0.5 32.5 -0.5q51 0 77 35q26 35 26 109q0 41 -9 68q-9 27 -25 42.5q-16 15.5 -38 22q-22 6.5 -47 6.5q-24 0 -49 -6q-25 -6 -37 -12z" />
-<glyph unicode="&#1173;" horiz-adv-x="534" d="M187 0h-130v500h318v-115h-188v-126q16 6 46 13.5q30 7.5 78 7.5q38 0 72.5 -11q34.5 -11 60.5 -38q26 -27 41 -73q15 -46 15 -116q0 -63 -11.5 -111q-11.5 -48 -38.5 -80q-27 -32 -70.5 -48q-43.5 -16 -106.5 -16q-28 0 -41.5 1.5q-13.5 1.5 -21.5 3.5l0 112q8 -1 24.5 -1.5q16.5 -0.5 32.5 -0.5q98 0 98 132q0 71 -26.5 101q-26.5 30 -71.5 30q-23 0 -45.5 -6q-22.5 -6 -34.5 -12z" />
-<glyph unicode="&#1174;" horiz-adv-x="857" d="M350 700h130v-311l35 14l145 297h154l-163 -307l-47 -34l57 -42l113 -195h78v-247h-96l-15 125h-61l-161 304h-39v-304h-130v316l-36 -14l-161 -302h-160l183 307l54 39l-52 37l-171 317h159l145 -299l39 0z" />
-<glyph unicode="&#1175;" horiz-adv-x="727" d="M242 203l-102 -203h-146l131 229l34 30l-51 38l-103 203h139l93 -203h43v203h124v-213l38 14l94 199h138l-109 -203l-39 -32l51 -40l59 -110h84v-229h-95l-15 114h-61l-102 207h-43v-207h-124l0 217z" />
-<glyph unicode="&#1176;" horiz-adv-x="526" d="M120 310v107h24q9 0 22 0q13 0 26.5 0.5q13.5 0.5 26.5 2q13 1.5 21 3.5q35 8 60 28.5q25 20.5 25 55.5q0 48 -30.5 65.5q-30.5 17.5 -80.5 17.5q-45 0 -84 -12q-39 -12 -59 -23l-35 116q11 6 31.5 13q20.5 7 47 13.5q26.5 6.5 57.5 10.5q31 4 63 4q44 0 86 -8q42 -8 75 -28q33 -20 53 -53.5q20 -33.5 20 -85.5q0 -52 -27.5 -96q-27.5 -44 -88.5 -64l0 -5q65 -13 101.5 -56q36.5 -43 36.5 -115q0 -49 -17.5 -85.5q-17.5 -36.5 -46.5 -62.5q-29 -26 -67.5 -41.5q-38.5 -15.5 -81.5 -21.5l-14 -165h-88l-19 164q-45 5 -81 14q-36 9 -58 20l35 119q23 -11 66 -22.5q43 -11.5 102 -11.5q22 0 44.5 5.5q22.5 5.5 40.5 18q18 12.5 29 32.5q11 20 11 48q0 47 -35 71q-35 24 -125 26q-12 1 -18 1q-6 0 -21 0z" />
-<glyph unicode="&#1177;" horiz-adv-x="432" d="M109 207v91h61q35 0 57.5 14.5q22.5 14.5 22.5 37.5q0 27 -19.5 38q-19.5 11 -60.5 11q-39 0 -69.5 -10.5q-30.5 -10.5 -48.5 -21.5l-28 100q30 17 79.5 29.5q49.5 12.5 105.5 12.5q86 0 128.5 -32q42.5 -32 42.5 -93q0 -17 -4.5 -34.5q-4.5 -17.5 -14.5 -33.5q-10 -16 -24.5 -28.5q-14.5 -12.5 -34.5 -19.5l0 -4q53 -12 75 -42.5q22 -30.5 22 -81.5q0 -51 -34 -90.5q-34 -39.5 -106 -53.5l-14 -171h-88l-19 167q-38 4 -66.5 13.5q-28.5 9.5 -49.5 21.5l28 101q23 -13 56 -21.5q33 -8.5 73 -8.5q90 0 90 58q0 26 -23.5 38.5q-23.5 12.5 -87.5 12.5z" />
-<glyph unicode="&#1178;" horiz-adv-x="635" d="M233 299h-36v-299h-137v700h137v-310l32 14l193 296h156l-204 -294l-54 -38l56 -39l146 -207h106v-247h-96l-15 125l-77 0z" />
-<glyph unicode="&#1179;" horiz-adv-x="527" d="M222 207h-35v-207h-130v500h130v-213l31 14l117 199h139l-121 -190l-51 -38l56 -39l68 -118h93v-229h-95l-15 114l-65 0z" />
-<glyph unicode="&#1180;" horiz-adv-x="716" d="M251 299h-54v-299h-137v700h137v-310l54 4v133h93v-125l22 2l162 296h148l-171 -294l-54 -38l56 -39l198 -329h-159l-176 299h-26v-127l-93 0z" />
-<glyph unicode="&#1181;" horiz-adv-x="587" d="M229 207h-42v-207h-130v500h130v-213l42 4v120h76v-112l22 2l92 199h136l-96 -190l-53 -38l56 -39l110 -233h-144l-97 207h-26v-118l-76 0z" />
-<glyph unicode="&#1182;" horiz-adv-x="692" d="M0 643h132v57h137v-57h93v-93h-93v-160l54 14l177 296h150l-188 -294l-64 -38l61 -39l222 -329h-169l-196 299h-47v-299h-137v539l-132 0z" />
-<glyph unicode="&#1183;" horiz-adv-x="502" d="M-14 626h82v74h130v-74h153v-80h-153v-259l30 14l114 199h143l-120 -190l-51 -38l55 -39l135 -233h-149l-122 207h-35v-207h-130v546l-82 0z" />
-<glyph unicode="&#1184;" horiz-adv-x="719" d="M159 578h-159v122h296v-310l32 14l193 296h156l-204 -294l-54 -38l56 -39l233 -329h-169l-207 299h-36v-299h-137l0 561z" />
-<glyph unicode="&#1185;" horiz-adv-x="540" d="M235 287l32 14l116 199h140l-121 -190l-52 -38l57 -39l134 -233h-149l-121 207h-36v-207h-130v385h-110v115l240 0z" />
-<glyph unicode="&#1186;" horiz-adv-x="696" d="M453 293h-256v-293h-137v700h137v-285h256v285h137v-578h88v-247h-96l-15 125l-114 0z" />
-<glyph unicode="&#1187;" horiz-adv-x="567" d="M350 197h-163v-197h-130v500h130v-188h163v188h130v-385h78v-229h-95l-15 114l-98 0z" />
-<glyph unicode="&#1188;" horiz-adv-x="851" d="M860 578h-270v-578h-137v293h-256v-293h-137v700h137v-285h256v285l407 0z" />
-<glyph unicode="&#1189;" horiz-adv-x="664" d="M668 385h-188v-385h-130v197h-163v-197h-130v500h130v-188h163v188l318 0z" />
-<glyph unicode="&#1190;" horiz-adv-x="962" d="M579 228v-228h-137v578h-245v-578h-137v700h519v-325q16 6 49.5 14q33.5 8 81.5 8q42 0 81 -11.5q39 -11.5 69.5 -40q30.5 -28.5 49 -78q18.5 -49.5 18.5 -125.5q0 -129 -57 -199q-57 -70 -184 -70q-27 0 -40.5 1q-13.5 1 -21.5 3l0 118q7 -2 23.5 -2.5q16.5 -0.5 32.5 -0.5q51 0 77 35q26 35 26 109q0 41 -9 68q-9 27 -25 42.5q-16 15.5 -38 22q-22 6.5 -48 6.5q-23 0 -48 -6q-25 -6 -37 -12z" />
-<glyph unicode="&#1191;" horiz-adv-x="822" d="M475 0h-130v385h-158v-385h-130v500h418v-241q16 6 46 13.5q30 7.5 78 7.5q36 0 70 -11q34 -11 60.5 -38q26.5 -27 42.5 -73q16 -46 16 -116q0 -63 -12 -111q-12 -48 -38.5 -80q-26.5 -32 -70 -48q-43.5 -16 -106.5 -16q-28 0 -41.5 1.5q-13.5 1.5 -21.5 3.5l0 112q8 -1 24.5 -1.5q16.5 -0.5 32.5 -0.5q98 0 98 132q0 71 -26.5 101q-26.5 30 -71.5 30q-23 0 -46 -6q-23 -6 -35 -12z" />
-<glyph unicode="&#1192;" horiz-adv-x="876" d="M355 592q-80 0 -126.5 -58q-46.5 -58 -46.5 -176q0 -58 17.5 -104.5q17.5 -46.5 45.5 -78.5q28 -32 63.5 -49.5q35.5 -17.5 71.5 -17.5q11 0 23.5 1q12.5 1 20.5 5q-23 15 -43.5 39.5q-20.5 24.5 -35.5 57.5q-15 33 -23.5 72.5q-8.5 39.5 -8.5 83.5q0 76 18.5 134q18.5 58 52 98q33.5 40 80.5 60.5q47 20.5 105 20.5q63 0 109.5 -21.5q46.5 -21.5 76.5 -59.5q30 -38 44.5 -89.5q14.5 -51.5 14.5 -111.5q0 -56 -13 -103.5q-13 -47.5 -33.5 -84.5q-20.5 -37 -45.5 -62.5q-25 -25.5 -48 -37.5q5 -1 11.5 -1.5q6.5 -0.5 12.5 -0.5q30 0 57 8.5q27 8.5 46 21.5l42 -107q-22 -22 -56.5 -33.5q-34.5 -11.5 -88.5 -11.5q-20 0 -41 3q-21 3 -41.5 9q-20.5 6 -38 15q-17.5 9 -30.5 21q-33 -23 -73.5 -35.5q-40.5 -12.5 -94.5 -12.5q-81 0 -144 25q-63 25 -107 72q-44 47 -67 114.5q-23 67.5 -23 152.5q0 175 80.5 269.5q80.5 94.5 236.5 94.5zM457 371q0 -30 6.5 -61.5q6.5 -31.5 20 -60.5q13.5 -29 32.5 -53.5q19 -24.5 45 -42.5q23 16 43 40.5q20 24.5 34.5 55q14.5 30.5 23 67q8.5 36.5 8.5 76.5q0 34 -5 64.5q-5 30.5 -17 53q-12 22.5 -31.5 35.5q-19.5 13 -48.5 13q-51 0 -81 -46t-30 -141z" />
-<glyph unicode="&#1193;" horiz-adv-x="709" d="M272 404q-56 -4 -81 -39.5q-25 -35.5 -25 -110.5q0 -36 10 -65q10 -29 27 -50q17 -21 41 -32q24 -11 52 -11q8 0 20 2q12 2 19 7q-27 20 -47 63q-20 43 -20 100q0 39 10 80q10 41 33.5 74.5q23.5 33.5 62.5 55.5q39 22 96 22q55 0 92.5 -17q37.5 -17 60 -45.5q22.5 -28.5 32.5 -66q10 -37.5 10 -79.5q0 -34 -9 -65q-9 -31 -23 -57q-14 -26 -32 -45.5q-18 -19.5 -36 -30.5q22 -9 50 -3.5q28 5.5 47 23.5l30 -89q-20 -18 -48.5 -28.5q-28.5 -10.5 -72.5 -10.5q-41 0 -72 11.5q-31 11.5 -52 30.5q-32 -23 -72.5 -32.5q-40.5 -9.5 -84.5 -9.5q-62 0 -110 19q-48 19 -81 53.5q-33 34.5 -50 83.5q-17 49 -17 108q0 58 13 105q13 47 42 81.5q29 34.5 74.5 54.5q45.5 20 110.5 23zM394 268q0 -45 17.5 -81q17.5 -36 47.5 -60q32 21 52 62.5q20 41.5 20 95.5q0 45 -16.5 75q-16.5 30 -48.5 30q-22 0 -36 -10q-14 -10 -22 -26.5q-8 -16.5 -11 -38.5t-3 -47z" />
-<glyph unicode="&#1194;" horiz-adv-x="559" d="M534 29q-24 -17 -58.5 -26.5q-34.5 -9.5 -72.5 -13.5l-14 -164h-88l-19 168q-51 9 -95.5 34q-44.5 25 -77.5 68.5q-33 43.5 -52 106.5q-19 63 -19 148q0 103 28.5 172.5q28.5 69.5 74 112q45.5 42.5 101.5 61q56 18.5 112 18.5q60 0 101.5 -8q41.5 -8 68.5 -19v-116q-50 11 -81.5 16q-31.5 5 -76.5 5q-83 0 -133.5 -59q-50.5 -59 -50.5 -183q0 -54 12 -98.5q12 -44.5 36.5 -76q24.5 -31.5 61 -49q36.5 -17.5 84.5 -17.5q45 0 76 9q31 9 54 23z" />
-<glyph unicode="&#1195;" horiz-adv-x="433" d="M411 31q-38 -27 -94 -38l-14 -168h-88l-19 166q-45 8 -76 30q-31 22 -50.5 55.5q-19.5 33.5 -28 77.5q-8.5 44 -8.5 96q0 127 57 195.5q57 68.5 166 68.5q55 0 88.5 -9q33.5 -9 60.5 -23l-31 -106q-23 11 -45.5 17q-22.5 6 -51.5 6q-54 0 -82 -35.5q-28 -35.5 -28 -113.5q0 -32 7 -59q7 -27 21 -47q14 -20 36.5 -31.5q22.5 -11.5 52.5 -11.5q33 0 56 8.5q23 8.5 41 20.5z" />
-<glyph unicode="&#1196;" horiz-adv-x="568" d="M216 578h-205v122h546v-122h-204v-456h87v-247h-96l-15 125l-113 0z" />
-<glyph unicode="&#1197;" horiz-adv-x="418" d="M142 385h-141v115h416v-115h-141v-270h84v-229h-95l-15 114l-108 0z" />
-<glyph unicode="&#1198;" horiz-adv-x="592" d="M228 260l-230 440h163l128 -263l14 -74h5l15 76l124 261h147l-229 -439v-261l-137 0z" />
-<glyph unicode="&#1199;" horiz-adv-x="491" d="M-7 500h151l93 -297l18 -93h4l14 95l85 295h140l-181 -501v-199h-130l0 199z" />
-<glyph unicode="&#1200;" horiz-adv-x="592" d="M73 294h137l-212 406h163l128 -263l14 -74h5l15 76l124 261h147l-212 -406h138v-91h-155v-203h-137v203l-155 0z" />
-<glyph unicode="&#1201;" horiz-adv-x="491" d="M67 0h119l-193 500h151l93 -297l18 -93h4l14 95l85 295h140l-181 -500h120v-80h-120v-120h-130v120l-120 0z" />
-<glyph unicode="&#1202;" horiz-adv-x="667" d="M225 356l-195 344h165l108 -202l24 -71l23 71l113 202h149l-202 -337l140 -241h110v-247h-96l-15 125h-90l-123 216l-27 74l-26 -74l-124 -216l-149 0z" />
-<glyph unicode="&#1203;" horiz-adv-x="542" d="M170 256l-150 244h155l65 -107l28 -70l30 70l68 107h141l-151 -240l90 -145h89v-229h-95l-15 114h-59l-77 120l-30 74l-32 -74l-77 -120l-142 0z" />
-<glyph unicode="&#1204;" horiz-adv-x="838" d="M820 -125h-97l-15 125h-493v578h-204v122h483v-122h-142v-456h241v578h137v-578l90 0z" />
-<glyph unicode="&#1205;" horiz-adv-x="647" d="M631 -114h-95l-15 114h-379v385h-141v115h376v-115h-105v-270h156v385h130v-385l73 0z" />
-<glyph unicode="&#1206;" horiz-adv-x="651" d="M409 282q-26 -15 -69.5 -27.5q-43.5 -12.5 -103.5 -12.5q-42 0 -76.5 10.5q-34.5 10.5 -60 34q-25.5 23.5 -39.5 60q-14 36.5 -14 88.5v265h137v-222q0 -60 23.5 -89.5q23.5 -29.5 77.5 -29.5q38 0 71.5 8.5q33.5 8.5 53.5 25.5l0 307h137v-578h87v-247h-96l-15 125l-113 0z" />
-<glyph unicode="&#1207;" horiz-adv-x="546" d="M163 500v-114q0 -31 2.5 -53.5q2.5 -22.5 10 -37q7.5 -14.5 21 -21.5q13.5 -7 35.5 -7q29 0 50.5 7q21.5 7 35.5 17l0 209h130v-385h84v-229h-95l-15 114h-104v196q-15 -11 -46 -24.5q-31 -13.5 -83 -13.5q-37 0 -66 8q-29 8 -49 28q-20 20 -30.5 53q-10.5 33 -10.5 83l0 170z" />
-<glyph unicode="&#1208;" horiz-adv-x="645" d="M272 243q-8 -1 -15 -1q-7 0 -15 0q-44 0 -80 10.5q-36 10.5 -62 34q-26 23.5 -40 60q-14 36.5 -14 88.5v265h137v-222q0 -57 20.5 -86q20.5 -29 68.5 -33l0 118h93v-112q25 5 46.5 11.5q21.5 6.5 35.5 16.5l0 307h137v-700h-137v282q-27 -16 -82 -28l0 -132l-93 0z" />
-<glyph unicode="&#1209;" horiz-adv-x="536" d="M223 159q-9 -1 -17.5 -1q-8.5 0 -17.5 0q-37 0 -66 8q-29 8 -49 28q-20 20 -30.5 53q-10.5 33 -10.5 83v170h130v-114q0 -56 12 -84.5q12 -28.5 49 -33.5l0 118h76v-113q34 6 51 18l0 209h130v-500h-130v196q-15 -11 -51 -22l0 -115l-76 0z" />
-<glyph unicode="&#1210;" horiz-adv-x="606" d="M423 0v222q0 60 -23.5 89.5q-23.5 29.5 -77.5 29.5q-38 0 -71.5 -8.5q-33.5 -8.5 -53.5 -25.5l0 -307h-137v700h137v-282q26 15 69.5 27.5q43.5 12.5 103.5 12.5q42 0 76.5 -10.5q34.5 -10.5 60 -34q25.5 -23.5 39.5 -60q14 -36.5 14 -88.5l0 -265z" />
-<glyph unicode="&#1211;" horiz-adv-x="545" d="M363 0v284q0 61 -17 88q-17 27 -62 27q-33 0 -60.5 -22.5q-27.5 -22.5 -36.5 -57.5l0 -319h-130v700h130v-256h4q24 32 59 51q35 19 89 19q38 0 67 -10q29 -10 48.5 -33q19.5 -23 29 -62.5q9.5 -39.5 9.5 -97.5l0 -311z" />
-<glyph unicode="&#1212;" horiz-adv-x="794" d="M343 293q3 -40 15.5 -74q12.5 -34 35.5 -59q23 -25 57.5 -38.5q34.5 -13.5 81.5 -13.5q45 0 82.5 13.5q37.5 13.5 70.5 35.5l35 -116q-45 -26 -98 -40.5q-53 -14.5 -115 -14.5q-137 0 -215.5 78q-78.5 78 -86.5 229l-32 0q-50 1 -83 13.5q-33 12.5 -53.5 33.5q-20.5 21 -29 48.5q-8.5 27.5 -8.5 56.5q2 49 24 76l115 0q-12 -14 -16.5 -31q-4.5 -17 -3.5 -31q0 -8 3 -18q3 -10 12 -18q9 -8 26 -13q17 -5 46 -2q4 69 24.5 125.5q20.5 56.5 55.5 96.5q35 40 86 62q51 22 117 22q134 0 200.5 -76.5q66.5 -76.5 66.5 -222.5q0 -28 -2.5 -58q-2.5 -30 -7.5 -64zM622 408q3 19 3 39q0 31 -7.5 58.5q-7.5 27.5 -24 48.5q-16.5 21 -41.5 33.5q-25 12.5 -59 12.5q-73 0 -110 -49.5q-37 -49.5 -40 -142.5z" />
-<glyph unicode="&#1213;" horiz-adv-x="647" d="M596 43q-30 -24 -81.5 -40.5q-51.5 -16.5 -109.5 -16.5q-110 0 -166.5 59q-56.5 59 -65.5 163l-7 0q-77 0 -118.5 35q-41.5 35 -41.5 101v7q1 27 8 43q7 16 21 33l109 0q-14 -12 -22 -28.5q-8 -16.5 -8 -40.5q0 -20 12.5 -34q12.5 -14 49.5 -14q14 102 75 153q61 51 161 51q38 0 74 -10q36 -10 64 -33q28 -23 45 -62q17 -39 17 -97q0 -21 -2.5 -45q-2.5 -24 -7.5 -50l-299 0q3 -63 32 -95q29 -32 95 -32q41 0 73.5 12.5q32.5 12.5 49.5 25.5zM410 410q-51 0 -74.5 -30.5q-23.5 -30.5 -28.5 -81.5l184 0q0 4 0.5 8q0.5 4 0.5 8q0 46 -20.5 71t-61.5 25z" />
-<glyph unicode="&#1214;" horiz-adv-x="794" d="M343 293q3 -40 15.5 -74q12.5 -34 35.5 -59q23 -25 57.5 -38.5q34.5 -13.5 81.5 -13.5q45 0 82.5 13.5q37.5 13.5 70.5 35.5l35 -116q-37 -21 -78 -34q-41 -13 -88 -18l-14 -164h-88l-19 168q-104 19 -163 94.5q-59 75.5 -65 205.5l-32 0q-50 1 -83 13.5q-33 12.5 -53.5 33.5q-20.5 21 -29 48.5q-8.5 27.5 -8.5 56.5q2 49 24 76l115 0q-12 -14 -16.5 -31q-4.5 -17 -3.5 -31q0 -8 3 -18q3 -10 12 -18q9 -8 26 -13q17 -5 46 -2q4 69 24.5 125.5q20.5 56.5 55.5 96.5q35 40 86 62q51 22 117 22q134 0 200.5 -76.5q66.5 -76.5 66.5 -222.5q0 -28 -2.5 -58q-2.5 -30 -7.5 -64zM622 408q3 19 3 39q0 31 -7.5 58.5q-7.5 27.5 -24 48.5q-16.5 21 -41.5 33.5q-25 12.5 -59 12.5q-73 0 -110 -49.5q-37 -49.5 -40 -142.5z" />
-<glyph unicode="&#1215;" horiz-adv-x="647" d="M596 43q-23 -18 -56.5 -31.5q-33.5 -13.5 -74.5 -20.5l-14 -166h-88l-19 167q-80 15 -121.5 71q-41.5 56 -49.5 145l-7 0q-77 0 -118.5 35q-41.5 35 -41.5 101v7q1 27 8 43q7 16 21 33l109 0q-14 -12 -22 -28.5q-8 -16.5 -8 -40.5q0 -20 12.5 -34q12.5 -14 49.5 -14q14 102 75 153q61 51 161 51q38 0 74 -10q36 -10 64 -33q28 -23 45 -62q17 -39 17 -97q0 -21 -2.5 -45q-2.5 -24 -7.5 -50l-299 0q3 -63 32 -95q29 -32 95 -32q41 0 73.5 12.5q32.5 12.5 49.5 25.5zM410 410q-51 0 -74.5 -30.5q-23.5 -30.5 -28.5 -81.5l184 0q0 4 0.5 8q0.5 4 0.5 8q0 46 -20.5 71t-61.5 25z" />
-<glyph unicode="&#1216;" horiz-adv-x="285" d="M74 700h137v-700l-137 0z" />
-<glyph unicode="&#1219;" horiz-adv-x="611" d="M424 76q0 49 -10 90.5q-10 41.5 -33 70.5q-23 29 -59.5 45.5q-36.5 16.5 -88.5 16.5h-36v-299h-137v700h137v-310l32 14l193 296h156l-197 -280l-61 -40h52q48 -12 82.5 -34q34.5 -22 56.5 -56q22 -34 32.5 -82.5q10.5 -48.5 10.5 -113.5v-27q0 -140 -56.5 -207q-56.5 -67 -152.5 -67q-29 0 -60 6l0 111h15q63 0 93.5 39t30.5 127z" />
-<glyph unicode="&#1220;" horiz-adv-x="501" d="M338 27q0 87 -28 128.5q-28 41.5 -88 46.5l-35 0v-202h-130v500h130v-217l31 14l117 203h139l-122 -197l-46 -32l41 -2q39 -11 62.5 -34q23.5 -23 36.5 -53.5q13 -30.5 17.5 -66q4.5 -35.5 4.5 -70.5v-17q0 -123 -46.5 -180q-46.5 -57 -131.5 -57q-15 0 -31.5 1.5q-16.5 1.5 -33.5 5.5l0 110q6 -1 12 -1.5q6 -0.5 11 -0.5q90 0 90 121z" />
-<glyph unicode="&#1221;" horiz-adv-x="651" d="M426 578h-149q-4 -95 -9 -173q-5 -78 -13.5 -140.5q-8.5 -62.5 -22.5 -110.5q-14 -48 -36 -83q-14 -23 -31.5 -38q-17.5 -15 -36.5 -24q-19 -9 -37.5 -12.5q-18.5 -3.5 -34.5 -3.5q-23 0 -38.5 3.5q-15.5 3.5 -30.5 10.5v118q21 -2 27 -3q6 -1 12 -1q16 0 31.5 8q15.5 8 26.5 27q15 22 26 64.5q11 42.5 19.5 108.5q8.5 66 13.5 157.5q5 91.5 7 213.5l413 0v-585h98v-31l-96 -214h-94l45 130l-90 0z" />
-<glyph unicode="&#1222;" horiz-adv-x="550" d="M329 385h-99q-6 -71 -14 -141q-8 -70 -25.5 -125.5q-17.5 -55.5 -47.5 -90q-30 -34.5 -78 -34.5q-58 0 -82 15l16 108q16 -6 30 -6q20 0 35 17q15 17 25.5 61q10.5 44 17 119.5q6.5 75.5 9.5 191.5l343 0v-385h95v-31l-96 -198h-94l45 114l-80 0z" />
-<glyph unicode="&#1223;" horiz-adv-x="651" d="M590 -21q0 -91 -36 -139q-36 -48 -114 -48q-14 0 -30.5 1.5q-16.5 1.5 -33.5 5.5l0 109q4 0 7.5 -0.5q3.5 -0.5 7.5 -0.5q21 0 33.5 6q12.5 6 19 18q6.5 12 8 29.5q1.5 17.5 1.5 39.5v293h-256v-293h-137v700h137v-285h256v285l137 0z" />
-<glyph unicode="&#1224;" horiz-adv-x="537" d="M350 197h-163v-197h-130v500h130v-188h163v188h130v-521q0 -91 -36 -139q-36 -48 -115 -48q-30 0 -64 7l0 109q4 0 7.5 -0.5q3.5 -0.5 7.5 -0.5q43 0 56.5 24.5q13.5 24.5 13.5 68.5z" />
-<glyph unicode="&#1225;" horiz-adv-x="683" d="M453 293h-256v-293h-137v700h137v-285h256v285h137v-585h103v-31l-96 -214h-94l45 130l-95 0z" />
-<glyph unicode="&#1226;" horiz-adv-x="576" d="M350 197h-163v-197h-130v500h130v-188h163v188h130v-385h101v-31l-96 -198h-94l45 114l-86 0z" />
-<glyph unicode="&#1227;" horiz-adv-x="606" d="M183 700v-222q0 -60 23.5 -89.5q23.5 -29.5 77.5 -29.5q38 0 71.5 8.5q33.5 8.5 53.5 25.5l0 307h137v-700h-112l-15 -125h-96v247h86v160q-26 -15 -69.5 -27.5q-43.5 -12.5 -103.5 -12.5q-42 0 -76.5 10.5q-34.5 10.5 -60 34q-25.5 23.5 -39.5 60q-14 36.5 -14 88.5l0 265z" />
-<glyph unicode="&#1228;" horiz-adv-x="505" d="M318 207q-15 -11 -46 -22q-31 -11 -83 -11q-74 0 -115 38.5q-41 38.5 -41 128.5v159h130v-103q0 -28 2.5 -49q2.5 -21 10 -35.5q7.5 -14.5 21 -21.5q13.5 -7 35.5 -7q29 0 50.5 7q21.5 7 35.5 17l0 192h130v-500h-120l-15 -114h-95v212l100 0z" />
-<glyph unicode="&#1229;" horiz-adv-x="846" d="M603 363l15 139h-6l-43 -112l-149 -261h-44l-157 262l-44 111h-5l20 -138v-364h-130v700h125l187 -320l33 -80h4l30 82l177 318h124v-585h116v-31l-96 -214h-94l45 130l-108 0z" />
-<glyph unicode="&#1230;" horiz-adv-x="710" d="M485 229l8 104h-5l-40 -86l-94 -155h-47l-103 155l-38 86h-6l13 -103v-230h-116v500h135l115 -188l28 -63h4l29 65l106 186h136v-385h105v-31l-96 -198h-94l45 114l-85 0z" />
-<glyph unicode="&#1231;" horiz-adv-x="262" d="M66 700h130v-700l-130 0z" />
-<glyph unicode="&#1232;" horiz-adv-x="605" d="M405 155h-215l-53 -155h-137l252 705h101l252 -705h-144zM225 265h150l-52 156l-21 110h-5l-21 -111zM229 874q4 -32 23.5 -46q19.5 -14 50.5 -14q67 0 74 59l111 -17q-11 -63 -57.5 -92q-46.5 -29 -128.5 -29q-41 0 -75 6q-34 6 -59.5 19.5q-25.5 13.5 -42 36.5q-16.5 23 -20.5 57z" />
-<glyph unicode="&#1233;" horiz-adv-x="496" d="M54 471q40 18 95 28.5q55 10.5 115 10.5q52 0 87 -12.5q35 -12.5 55.5 -35.5q20.5 -23 29 -55q8.5 -32 8.5 -72q0 -44 -3 -88.5q-3 -44.5 -3.5 -87.5q-0.5 -43 2.5 -83.5q3 -40.5 15 -76.5l-106 0l-21 69h-5q-20 -31 -55.5 -53.5q-35.5 -22.5 -91.5 -22.5q-35 0 -63 10.5q-28 10.5 -48 30q-20 19.5 -31 46q-11 26.5 -11 59.5q0 46 20.5 77.5q20.5 31.5 59 51q38.5 19.5 92 27q53.5 7.5 119.5 4.5q7 56 -8 80.5q-15 24.5 -67 24.5q-39 0 -82.5 -8q-43.5 -8 -71.5 -21zM219 99q39 0 62 17.5q23 17.5 34 37.5l0 65q-31 3 -59.5 1q-28.5 -2 -50.5 -9q-22 -7 -35 -20q-13 -13 -13 -33q0 -28 16.5 -43.5q16.5 -15.5 45.5 -15.5zt0 0zM187 704q7 -39 23.5 -55q16.5 -16 42.5 -16q28 0 44.5 16q16.5 16 22.5 54l99 -25q-12 -65 -59 -96.5q-47 -31.5 -110 -31.5q-31 0 -60 7q-29 7 -52 22.5q-23 15.5 -39 39.5q-16 24 -22 59z" />
-<glyph unicode="&#1234;" horiz-adv-x="605" d="M405 155h-215l-53 -155h-137l252 705h101l252 -705h-144zM225 265h150l-52 156l-21 110h-5l-21 -111zM119 798q0 26 18 42q18 16 58 16q39 0 57 -16q18 -16 18 -42q0 -26 -18 -41.5q-18 -15.5 -57 -15.5q-40 0 -58 15.5q-18 15.5 -18 41.5zt0 0zM333 798q0 26 18 42q18 16 57 16q40 0 58 -16q18 -16 18 -42q0 -26 -18 -41.5q-18 -15.5 -58 -15.5q-39 0 -57 15.5t-18 41.5z" />
-<glyph unicode="&#1235;" horiz-adv-x="496" d="M54 471q40 18 95 28.5q55 10.5 115 10.5q52 0 87 -12.5q35 -12.5 55.5 -35.5q20.5 -23 29 -55q8.5 -32 8.5 -72q0 -44 -3 -88.5q-3 -44.5 -3.5 -87.5q-0.5 -43 2.5 -83.5q3 -40.5 15 -76.5l-106 0l-21 69h-5q-20 -31 -55.5 -53.5q-35.5 -22.5 -91.5 -22.5q-35 0 -63 10.5q-28 10.5 -48 30q-20 19.5 -31 46q-11 26.5 -11 59.5q0 46 20.5 77.5q20.5 31.5 59 51q38.5 19.5 92 27q53.5 7.5 119.5 4.5q7 56 -8 80.5q-15 24.5 -67 24.5q-39 0 -82.5 -8q-43.5 -8 -71.5 -21zM219 99q39 0 62 17.5q23 17.5 34 37.5l0 65q-31 3 -59.5 1q-28.5 -2 -50.5 -9q-22 -7 -35 -20q-13 -13 -13 -33q0 -28 16.5 -43.5q16.5 -15.5 45.5 -15.5zt0 0zM67 631q0 32 19.5 51q19.5 19 51.5 19q32 0 50.5 -19q18.5 -19 18.5 -51q0 -30 -18.5 -49q-18.5 -19 -50.5 -19q-32 0 -51.5 19q-19.5 19 -19.5 49zt0 0zM286 631q0 32 18.5 51q18.5 19 50.5 19q32 0 51.5 -19q19.5 -19 19.5 -51q0 -30 -19.5 -49q-19.5 -19 -51.5 -19q-32 0 -50.5 19t-18.5 49z" />
-<glyph unicode="&#1236;" horiz-adv-x="862" d="M394 532l-36 -103l-84 -148h126v251zM400 170h-186l-99 -170h-144l424 700h419v-122h-277v-163h252v-122h-252v-171h282v-122l-419 0z" />
-<glyph unicode="&#1237;" horiz-adv-x="785" d="M219 99q39 0 62 17.5q23 17.5 34 37.5l0 65q-31 3 -59.5 1q-28.5 -2 -50.5 -9q-22 -7 -35 -20q-13 -13 -13 -33q0 -28 16.5 -43.5q16.5 -15.5 45.5 -15.5zt0 0zM350 76q-27 -34 -66.5 -59q-39.5 -25 -107.5 -25q-35 0 -63 10.5q-28 10.5 -48 30q-20 19.5 -31 46q-11 26.5 -11 59.5q0 46 20.5 77.5q20.5 31.5 58.5 51q38 19.5 91.5 27q53.5 7.5 119.5 4.5q7 56 -7.5 80.5q-14.5 24.5 -66.5 24.5q-39 0 -79.5 -10.5q-40.5 -10.5 -71.5 -25.5l-34 94q38 20 94 34.5q56 14.5 116 14.5q52 0 83 -13.5q31 -13.5 51 -40.5q25 28 65 43q40 15 87 15q38 0 74 -10q36 -10 64 -33q28 -23 45 -62q17 -39 17 -97q0 -21 -2.5 -44.5q-2.5 -23.5 -7.5 -50.5l-301 0q4 -63 33.5 -95q29.5 -32 95.5 -32q41 0 73.5 12.5q32.5 12.5 49.5 25.5l43 -85q-30 -24 -81.5 -40.5q-51.5 -16.5 -109.5 -16.5q-64 0 -112.5 23.5q-48.5 23.5 -75.5 66.5zM548 410q-51 0 -75.5 -30.5q-24.5 -30.5 -29.5 -81.5l187 0q3 54 -17 83t-65 29z" />
-<glyph unicode="&#1238;" horiz-adv-x="522" d="M60 700h415v-122h-278v-163h253v-122h-253v-171h283v-122h-420zM198 874q4 -32 23.5 -46q19.5 -14 50.5 -14q67 0 74 59l111 -17q-11 -63 -57.5 -92q-46.5 -29 -128.5 -29q-41 0 -75 6q-34 6 -59.5 19.5q-25.5 13.5 -42 36.5q-16.5 23 -20.5 57z" />
-<glyph unicode="&#1239;" horiz-adv-x="508" d="M457 43q-30 -24 -81.5 -40.5q-51.5 -16.5 -109.5 -16.5q-121 0 -177 70.5q-56 70.5 -56 193.5q0 132 63 198q63 66 177 66q38 0 74 -10q36 -10 64 -33q28 -23 45 -62q17 -39 17 -97q0 -21 -2.5 -45q-2.5 -24 -7.5 -50l-300 0q3 -63 32.5 -95q29.5 -32 95.5 -32q41 0 73.5 12.5q32.5 12.5 49.5 25.5zM271 410q-51 0 -75.5 -30.5q-24.5 -30.5 -29.5 -81.5l186 0q4 54 -16.5 83q-20.5 29 -64.5 29zt0 0zM199 704q7 -39 23.5 -55q16.5 -16 42.5 -16q28 0 44.5 16q16.5 16 22.5 54l99 -25q-12 -65 -59 -96.5q-47 -31.5 -110 -31.5q-31 0 -60 7q-29 7 -52 22.5q-23 15.5 -39 39.5q-16 24 -22 59z" />
-<glyph unicode="&#1240;" horiz-adv-x="630" d="M184 296q-3 -20 -3 -38q0 -31 7.5 -59.5q7.5 -28.5 23 -50.5q15.5 -22 39.5 -35.5q24 -13.5 58 -13.5q70 0 107.5 50q37.5 50 37.5 147zM455 409q-6 87 -49 135q-43 48 -133 48q-52 0 -92 -15.5q-40 -15.5 -63 -29.5l-29 117q15 9 37.5 18q22.5 9 50 16q27.5 7 58 11.5q30.5 4.5 61.5 4.5q69 0 124 -20.5q55 -20.5 93.5 -65q38.5 -44.5 58.5 -113.5q20 -69 20 -165q0 -85 -16.5 -152.5q-16.5 -67.5 -52 -114.5q-35.5 -47 -90 -72q-54.5 -25 -130.5 -25q-68 0 -118 22q-50 22 -83 62q-33 40 -49 96q-16 56 -16 124q0 28 2.5 57.5q2.5 29.5 7.5 61.5z" />
-<glyph unicode="&#1241;" horiz-adv-x="508" d="M50 457q30 24 81.5 40.5q51.5 16.5 109.5 16.5q60 0 104 -19q44 -19 72.5 -53.5q28.5 -34.5 42.5 -83.5q14 -49 14 -108q0 -127 -62 -195.5q-62 -68.5 -169 -68.5q-39 0 -76.5 11q-37.5 11 -67 36q-29.5 25 -47.5 66.5q-18 41.5 -18 101.5q0 42 10 91l303 0q-5 62 -34.5 90q-29.5 28 -95.5 28q-41 0 -72.5 -14.5q-31.5 -14.5 -48.5 -26.5zM242 90q50 0 75.5 34.5q25.5 34.5 26.5 86.5l-189 0q-5 -54 18.5 -87.5t68.5 -33.5z" />
-<glyph unicode="&#1242;" horiz-adv-x="630" d="M184 296q-3 -20 -3 -38q0 -31 7.5 -59.5q7.5 -28.5 23 -50.5q15.5 -22 39.5 -35.5q24 -13.5 58 -13.5q70 0 107.5 50q37.5 50 37.5 147zM455 409q-6 87 -49 135q-43 48 -133 48q-52 0 -92 -15.5q-40 -15.5 -63 -29.5l-29 117q15 9 37.5 18q22.5 9 50 16q27.5 7 58 11.5q30.5 4.5 61.5 4.5q69 0 124 -20.5q55 -20.5 93.5 -65q38.5 -44.5 58.5 -113.5q20 -69 20 -165q0 -85 -16.5 -152.5q-16.5 -67.5 -52 -114.5q-35.5 -47 -90 -72q-54.5 -25 -130.5 -25q-68 0 -118 22q-50 22 -83 62q-33 40 -49 96q-16 56 -16 124q0 28 2.5 57.5q2.5 29.5 7.5 61.5zM127 798q0 26 18 42q18 16 58 16q39 0 57 -16q18 -16 18 -42q0 -26 -18 -41.5q-18 -15.5 -57 -15.5q-40 0 -58 15.5q-18 15.5 -18 41.5zt0 0zM341 798q0 26 18 42q18 16 57 16q40 0 58 -16q18 -16 18 -42q0 -26 -18 -41.5q-18 -15.5 -58 -15.5q-39 0 -57 15.5t-18 41.5z" />
-<glyph unicode="&#1243;" horiz-adv-x="508" d="M48 457q30 24 81.5 40.5q51.5 16.5 109.5 16.5q60 0 104 -19q44 -19 72.5 -53.5q28.5 -34.5 42.5 -83.5q14 -49 14 -108q0 -127 -62 -195.5q-62 -68.5 -169 -68.5q-39 0 -76.5 11q-37.5 11 -67 36q-29.5 25 -47.5 66.5q-18 41.5 -18 101.5q0 42 10 91l303 0q-5 62 -34.5 90q-29.5 28 -95.5 28q-41 0 -72.5 -14.5q-31.5 -14.5 -48.5 -26.5zM240 90q50 0 75.5 34.5q25.5 34.5 26.5 86.5l-189 0q-5 -54 18.5 -87.5q23.5 -33.5 68.5 -33.5zt0 0zM64 631q0 32 19.5 51q19.5 19 51.5 19q32 0 50.5 -19q18.5 -19 18.5 -51q0 -30 -18.5 -49q-18.5 -19 -50.5 -19q-32 0 -51.5 19q-19.5 19 -19.5 49zt0 0zM283 631q0 32 18.5 51q18.5 19 50.5 19q32 0 51.5 -19q19.5 -19 19.5 -51q0 -30 -19.5 -49q-19.5 -19 -51.5 -19q-32 0 -50.5 19t-18.5 49z" />
-<glyph unicode="&#1244;" horiz-adv-x="839" d="M350 700h130v-311l35 14l145 297h154l-163 -307l-47 -34l57 -42l184 -317h-165l-161 304h-39v-304h-130v316l-36 -14l-161 -302h-160l183 307l54 39l-52 37l-171 317h159l145 -299h39zM235 798q0 26 18 42q18 16 58 16q39 0 57 -16q18 -16 18 -42q0 -26 -18 -41.5q-18 -15.5 -57 -15.5q-40 0 -58 15.5q-18 15.5 -18 41.5zt0 0zM449 798q0 26 18 42q18 16 57 16q40 0 58 -16q18 -16 18 -42q0 -26 -18 -41.5q-18 -15.5 -58 -15.5q-39 0 -57 15.5t-18 41.5z" />
-<glyph unicode="&#1245;" horiz-adv-x="693" d="M242 203l-102 -203h-146l131 229l34 30l-51 38l-103 203h139l93 -203h43v203h124v-213l38 14l94 199h138l-109 -203l-39 -32l51 -40l121 -225h-149l-102 207h-43v-207h-124v217zM165 631q0 32 19.5 51q19.5 19 51.5 19q32 0 50.5 -19q18.5 -19 18.5 -51q0 -30 -18.5 -49q-18.5 -19 -50.5 -19q-32 0 -51.5 19q-19.5 19 -19.5 49zt0 0zM384 631q0 32 18.5 51q18.5 19 50.5 19q32 0 51.5 -19q19.5 -19 19.5 -51q0 -30 -19.5 -49q-19.5 -19 -51.5 -19q-32 0 -50.5 19t-18.5 49z" />
-<glyph unicode="&#1246;" horiz-adv-x="526" d="M120 310v107h24q9 0 22 0q13 0 26.5 0.5q13.5 0.5 26.5 2q13 1.5 21 3.5q35 8 60 28.5q25 20.5 25 55.5q0 48 -30.5 65.5q-30.5 17.5 -80.5 17.5q-45 0 -84 -12q-39 -12 -59 -23l-35 116q11 6 31.5 13q20.5 7 47 13.5q26.5 6.5 57.5 10.5q31 4 63 4q44 0 86 -8q42 -8 75 -28q33 -20 53 -53.5q20 -33.5 20 -85.5q0 -52 -27.5 -96q-27.5 -44 -88.5 -64l0 -5q65 -13 101.5 -56q36.5 -43 36.5 -115q0 -57 -23 -97.5q-23 -40.5 -60.5 -66.5q-37.5 -26 -86.5 -38.5q-49 -12.5 -100 -12.5q-66 0 -120 11q-54 11 -83 26l35 119q23 -11 66 -22.5q43 -11.5 102 -11.5q22 0 44.5 5.5q22.5 5.5 40.5 18q18 12.5 29 32.5q11 20 11 48q0 47 -35 71q-35 24 -125 26q-12 1 -18 1q-6 0 -21 0zM57 798q0 26 18 42q18 16 58 16q39 0 57 -16q18 -16 18 -42q0 -26 -18 -41.5q-18 -15.5 -57 -15.5q-40 0 -58 15.5q-18 15.5 -18 41.5zt0 0zM271 798q0 26 18 42q18 16 57 16q40 0 58 -16q18 -16 18 -42q0 -26 -18 -41.5q-18 -15.5 -58 -15.5q-39 0 -57 15.5t-18 41.5z" />
-<glyph unicode="&#1247;" horiz-adv-x="432" d="M109 207v91h61q35 0 57.5 14q22.5 14 22.5 37q0 27 -20 38.5q-20 11.5 -61 11.5q-39 0 -69 -10q-30 -10 -48 -21l-28 99q30 17 79.5 29.5q49.5 12.5 105.5 12.5q86 0 128.5 -32q42.5 -32 42.5 -93q0 -17 -4.5 -34.5q-4.5 -17.5 -14.5 -33.5q-10 -16 -24.5 -28.5q-14.5 -12.5 -34.5 -19.5l0 -4q53 -12 75 -42.5q22 -30.5 22 -81.5q0 -32 -13 -59.5q-13 -27.5 -39.5 -47.5q-26.5 -20 -66.5 -32q-40 -12 -95 -12q-55 0 -95.5 11.5q-40.5 11.5 -67.5 26.5l28 101q23 -13 55.5 -21q32.5 -8 72.5 -8q91 0 91 58q0 26 -23.5 38q-23.5 12 -87.5 12zM18 631q0 32 19.5 51q19.5 19 51.5 19q32 0 50.5 -19q18.5 -19 18.5 -51q0 -30 -18.5 -49q-18.5 -19 -50.5 -19q-32 0 -51.5 19q-19.5 19 -19.5 49zt0 0zM237 631q0 32 18.5 51q18.5 19 50.5 19q32 0 51.5 -19q19.5 -19 19.5 -51q0 -30 -19.5 -49q-19.5 -19 -51.5 -19q-32 0 -50.5 19t-18.5 49z" />
-<glyph unicode="&#1248;" horiz-adv-x="548" d="M222 108q30 0 56 7q26 7 45.5 21q19.5 14 30.5 34q11 20 11 47q0 57 -44 80q-44 23 -129 23h-81v58l156 174l45 43l-59 -12h-207v117h431v-75l-170 -188l-45 -32v-4l46 10q44 0 80.5 -12.5q36.5 -12.5 62.5 -36.5q26 -24 40.5 -60.5q14.5 -36.5 14.5 -84.5q0 -54 -19.5 -96.5q-19.5 -42.5 -55.5 -72.5q-36 -30 -86.5 -46q-50.5 -16 -113.5 -16q-22 0 -49 2.5q-27 2.5 -54 7q-27 4.5 -52 12q-25 7.5 -42 17.5l32 120q14 -8 32.5 -14.5q18.5 -6.5 39.5 -11.5q21 -5 42.5 -8t41.5 -3z" />
-<glyph unicode="&#1249;" horiz-adv-x="484" d="M191 -102q59 0 96 28.5q37 28.5 37 80.5q0 111 -160 111h-64v53l117 177l54 49l-73 -7h-171v110h396v-70l-139 -185l-40 -29v-2l31 3q34 0 66.5 -13.5q32.5 -13.5 57.5 -38.5q25 -25 40 -61q15 -36 15 -81q0 -55 -19.5 -98.5q-19.5 -43.5 -55 -74q-35.5 -30.5 -85.5 -46.5q-50 -16 -111 -16q-45 0 -90 10q-45 10 -83 32l46 103q27 -14 59.5 -24.5t75.5 -10.5z" />
-<glyph unicode="&#1250;" horiz-adv-x="666" d="M468 388l8 91h-5l-47 -94l-261 -385h-103v700h137v-381l-10 -94h6l49 97l261 378h102v-700h-137zM166 856h343v-89l-343 0z" />
-<glyph unicode="&#1251;" horiz-adv-x="545" d="M358 228l5 71h-3l-43 -73l-178 -226h-82v500h130v-238l-6 -68h4l41 71l180 235h82v-500h-130zM114 658h323v-92l-323 0z" />
-<glyph unicode="&#1252;" horiz-adv-x="666" d="M468 388l8 91h-5l-47 -94l-261 -385h-103v700h137v-381l-10 -94h6l49 97l261 378h102v-700h-137zM150 798q0 26 18 42q18 16 58 16q39 0 57 -16q18 -16 18 -42q0 -26 -18 -41.5q-18 -15.5 -57 -15.5q-40 0 -58 15.5q-18 15.5 -18 41.5zt0 0zM364 798q0 26 18 42q18 16 57 16q40 0 58 -16q18 -16 18 -42q0 -26 -18 -41.5q-18 -15.5 -58 -15.5q-39 0 -57 15.5t-18 41.5z" />
-<glyph unicode="&#1253;" horiz-adv-x="545" d="M358 228l5 71h-3l-43 -73l-178 -226h-82v500h130v-238l-6 -68h4l41 71l180 235h82v-500h-130zM103 631q0 32 19.5 51q19.5 19 51.5 19q32 0 50.5 -19q18.5 -19 18.5 -51q0 -30 -18.5 -49q-18.5 -19 -50.5 -19q-32 0 -51.5 19q-19.5 19 -19.5 49zt0 0zM322 631q0 32 18.5 51q18.5 19 50.5 19q32 0 51.5 -19q19.5 -19 19.5 -51q0 -30 -19.5 -49q-19.5 -19 -51.5 -19q-32 0 -50.5 19t-18.5 49z" />
-<glyph unicode="&#1254;" horiz-adv-x="670" d="M38 350q0 175 77 269.5q77 94.5 220 94.5q75 0 131 -26q56 -26 93 -74q37 -48 55 -115q18 -67 18 -149q0 -175 -77.5 -269.5q-77.5 -94.5 -219.5 -94.5q-76 0 -132 26q-56 26 -92.5 74q-36.5 48 -54.5 115q-18 67 -18 149zt0 0zM182 350q0 -53 9 -97.5q9 -44.5 27.5 -76.5q18.5 -32 47.5 -50q29 -18 69 -18q73 0 113 57q40 57 40 185q0 51 -8.5 95q-8.5 44 -26.5 77q-18 33 -47 51.5q-29 18.5 -71 18.5q-73 0 -113 -58.5q-40 -58.5 -40 -183.5zt0 0zM152 798q0 26 18 42q18 16 58 16q39 0 57 -16q18 -16 18 -42q0 -26 -18 -41.5q-18 -15.5 -57 -15.5q-40 0 -58 15.5q-18 15.5 -18 41.5zt0 0zM366 798q0 26 18 42q18 16 57 16q40 0 58 -16q18 -16 18 -42q0 -26 -18 -41.5q-18 -15.5 -58 -15.5q-39 0 -57 15.5t-18 41.5z" />
-<glyph unicode="&#1255;" horiz-adv-x="537" d="M33 250q0 127 62 195.5q62 68.5 174 68.5q60 0 104 -19q44 -19 73 -53.5q29 -34.5 43.5 -83.5q14.5 -49 14.5 -108q0 -127 -61.5 -195.5q-61.5 -68.5 -173.5 -68.5q-60 0 -104 19q-44 19 -73.5 53.5q-29.5 34.5 -44 83.5q-14.5 49 -14.5 108zt0 0zM167 250q0 -33 6 -61q6 -28 18 -49q12 -21 31.5 -32.5q19.5 -11.5 46.5 -11.5q51 0 76 37q25 37 25 117q0 69 -23 111.5q-23 42.5 -78 42.5q-48 0 -75 -36q-27 -36 -27 -118zt0 0zM88 631q0 32 19.5 51q19.5 19 51.5 19q32 0 50.5 -19q18.5 -19 18.5 -51q0 -30 -18.5 -49q-18.5 -19 -50.5 -19q-32 0 -51.5 19q-19.5 19 -19.5 49zt0 0zM307 631q0 32 18.5 51q18.5 19 50.5 19q32 0 51.5 -19q19.5 -19 19.5 -51q0 -30 -19.5 -49q-19.5 -19 -51.5 -19q-32 0 -50.5 19t-18.5 49z" />
-<glyph unicode="&#1256;" horiz-adv-x="670" d="M38 350q0 175 77 269.5q77 94.5 220 94.5q75 0 131 -26q56 -26 93 -74q37 -48 55 -115q18 -67 18 -149q0 -175 -77.5 -269.5q-77.5 -94.5 -219.5 -94.5q-76 0 -132 26q-56 26 -92.5 74q-36.5 48 -54.5 115q-18 67 -18 149zt0 0zM488 407q-8 89 -48 137q-40 48 -105 48q-29 0 -55 -10q-26 -10 -46.5 -32q-20.5 -22 -34 -57.5q-13.5 -35.5 -17.5 -85.5zM182 297q8 -95 49 -142q41 -47 104 -47q29 0 55.5 9.5q26.5 9.5 47 31q20.5 21.5 34 57.5q13.5 36 16.5 91z" />
-<glyph unicode="&#1257;" horiz-adv-x="537" d="M33 250q0 127 62 195.5q62 68.5 174 68.5q60 0 104 -19q44 -19 73 -53.5q29 -34.5 43.5 -83.5q14.5 -49 14.5 -108q0 -127 -61.5 -195.5q-61.5 -68.5 -173.5 -68.5q-60 0 -104 19q-44 19 -73.5 53.5q-29.5 34.5 -44 83.5q-14.5 49 -14.5 108zt0 0zM370 289q-8 60 -33.5 87.5q-25.5 27.5 -67.5 27.5q-19 0 -36 -6q-17 -6 -30.5 -19.5q-13.5 -13.5 -23 -35.5q-9.5 -22 -12.5 -54zM167 207q6 -54 34 -82.5q28 -28.5 68 -28.5q38 0 66.5 24.5q28.5 24.5 34.5 86.5z" />
-<glyph unicode="&#1258;" horiz-adv-x="670" d="M38 350q0 175 77 269.5q77 94.5 220 94.5q75 0 131 -26q56 -26 93 -74q37 -48 55 -115q18 -67 18 -149q0 -175 -77.5 -269.5q-77.5 -94.5 -219.5 -94.5q-76 0 -132 26q-56 26 -92.5 74q-36.5 48 -54.5 115q-18 67 -18 149zt0 0zM488 407q-8 89 -48 137q-40 48 -105 48q-29 0 -55 -10q-26 -10 -46.5 -32q-20.5 -22 -34 -57.5q-13.5 -35.5 -17.5 -85.5zM182 297q8 -95 49 -142q41 -47 104 -47q29 0 55.5 9.5q26.5 9.5 47 31q20.5 21.5 34 57.5q13.5 36 16.5 91zM153 798q0 26 18 42q18 16 58 16q39 0 57 -16q18 -16 18 -42q0 -26 -18 -41.5q-18 -15.5 -57 -15.5q-40 0 -58 15.5q-18 15.5 -18 41.5zt0 0zM367 798q0 26 18 42q18 16 57 16q40 0 58 -16q18 -16 18 -42q0 -26 -18 -41.5q-18 -15.5 -58 -15.5q-39 0 -57 15.5t-18 41.5z" />
-<glyph unicode="&#1259;" horiz-adv-x="537" d="M33 250q0 127 62 195.5q62 68.5 174 68.5q60 0 104 -19q44 -19 73 -53.5q29 -34.5 43.5 -83.5q14.5 -49 14.5 -108q0 -127 -61.5 -195.5q-61.5 -68.5 -173.5 -68.5q-60 0 -104 19q-44 19 -73.5 53.5q-29.5 34.5 -44 83.5q-14.5 49 -14.5 108zt0 0zM370 289q-8 60 -33.5 87.5q-25.5 27.5 -67.5 27.5q-19 0 -36 -6q-17 -6 -30.5 -19.5q-13.5 -13.5 -23 -35.5q-9.5 -22 -12.5 -54zM167 207q6 -54 34 -82.5q28 -28.5 68 -28.5q38 0 66.5 24.5q28.5 24.5 34.5 86.5zM88 631q0 32 19.5 51q19.5 19 51.5 19q32 0 50.5 -19q18.5 -19 18.5 -51q0 -30 -18.5 -49q-18.5 -19 -50.5 -19q-32 0 -51.5 19q-19.5 19 -19.5 49zt0 0zM307 631q0 32 18.5 51q18.5 19 50.5 19q32 0 51.5 -19q19.5 -19 19.5 -51q0 -30 -19.5 -49q-19.5 -19 -51.5 -19q-32 0 -50.5 19t-18.5 49z" />
-<glyph unicode="&#1260;" horiz-adv-x="574" d="M130 410h269q-3 40 -16.5 73.5q-13.5 33.5 -36.5 57.5q-23 24 -57 37.5q-34 13.5 -77 13.5q-54 0 -94 -11.5q-40 -11.5 -65 -25.5l-29 116q35 18 88 30.5q53 12.5 105 12.5q69 0 127.5 -19q58.5 -19 101 -62.5q42.5 -43.5 66.5 -113q24 -69.5 24 -169.5q0 -104 -28 -174q-28 -70 -75 -112q-47 -42 -108 -60q-61 -18 -127 -18q-57 0 -103.5 10q-46.5 10 -74.5 23l36 119q23 -11 62 -20.5q39 -9.5 90 -9.5q39 0 72 11q33 11 58.5 34.5q25.5 23.5 41.5 59.5q16 36 20 87l-270 0zM47 798q0 26 18 42q18 16 58 16q39 0 57 -16q18 -16 18 -42q0 -26 -18 -41.5q-18 -15.5 -57 -15.5q-40 0 -58 15.5q-18 15.5 -18 41.5zt0 0zM261 798q0 26 18 42q18 16 57 16q40 0 58 -16q18 -16 18 -42q0 -26 -18 -41.5q-18 -15.5 -58 -15.5q-39 0 -57 15.5t-18 41.5z" />
-<glyph unicode="&#1261;" horiz-adv-x="459" d="M109 300h186q-5 50 -33 77q-28 27 -83 27q-38 0 -67 -9q-29 -9 -51 -21l-35 94q66 46 178 46q112 0 167 -66.5q55 -66.5 55 -197.5q0 -132 -62 -198q-62 -66 -170 -66q-47 0 -95 9.5q-48 9.5 -76 26.5l32 102q23 -13 54.5 -20.5q31.5 -7.5 63.5 -7.5q64 0 91 27q27 27 32 84l-187 0zM23 631q0 32 19.5 51q19.5 19 51.5 19q32 0 50.5 -19q18.5 -19 18.5 -51q0 -30 -18.5 -49q-18.5 -19 -50.5 -19q-32 0 -51.5 19q-19.5 19 -19.5 49zt0 0zM242 631q0 32 18.5 51q18.5 19 50.5 19q32 0 51.5 -19q19.5 -19 19.5 -51q0 -30 -19.5 -49q-19.5 -19 -51.5 -19q-32 0 -50.5 19t-18.5 49z" />
-<glyph unicode="&#1262;" horiz-adv-x="568" d="M294 391l20 -91h6l16 94l105 306h141l-186 -484q-22 -57 -42.5 -99q-20.5 -42 -44 -69.5q-23.5 -27.5 -52.5 -41q-29 -13.5 -68 -13.5q-33 0 -53.5 4.5q-20.5 4.5 -44.5 19.5l35 111q17 -9 31 -11q14 -2 30 -2q47 0 66 74l-262 511h161zM126 856h343v-89l-343 0z" />
-<glyph unicode="&#1263;" horiz-adv-x="478" d="M239 219l18 -78h6l13 79l76 280h134l-152 -451q-19 -56 -36.5 -102.5q-17.5 -46.5 -38.5 -80.5q-21 -34 -46.5 -52.5q-25.5 -18.5 -60.5 -18.5q-52 0 -83 17l24 104q15 -6 30 -6q23 0 44.5 19.5q21.5 19.5 32.5 70.5l-209 500h156zM86 658h323v-92l-323 0z" />
-<glyph unicode="&#1264;" horiz-adv-x="568" d="M294 391l20 -91h6l16 94l105 306h141l-186 -484q-22 -57 -42.5 -99q-20.5 -42 -44 -69.5q-23.5 -27.5 -52.5 -41q-29 -13.5 -68 -13.5q-33 0 -53.5 4.5q-20.5 4.5 -44.5 19.5l35 111q17 -9 31 -11q14 -2 30 -2q47 0 66 74l-262 511h161zM123 798q0 26 18 42q18 16 58 16q39 0 57 -16q18 -16 18 -42q0 -26 -18 -41.5q-18 -15.5 -57 -15.5q-40 0 -58 15.5q-18 15.5 -18 41.5zt0 0zM337 798q0 26 18 42q18 16 57 16q40 0 58 -16q18 -16 18 -42q0 -26 -18 -41.5q-18 -15.5 -58 -15.5q-39 0 -57 15.5t-18 41.5z" />
-<glyph unicode="&#1265;" horiz-adv-x="478" d="M239 219l18 -78h6l13 79l76 280h134l-152 -451q-19 -56 -36.5 -102.5q-17.5 -46.5 -38.5 -80.5q-21 -34 -46.5 -52.5q-25.5 -18.5 -60.5 -18.5q-52 0 -83 17l24 104q15 -6 30 -6q23 0 44.5 19.5q21.5 19.5 32.5 70.5l-209 500h156zM72 631q0 32 19.5 51q19.5 19 51.5 19q32 0 50.5 -19q18.5 -19 18.5 -51q0 -30 -18.5 -49q-18.5 -19 -50.5 -19q-32 0 -51.5 19q-19.5 19 -19.5 49zt0 0zM291 631q0 32 18.5 51q18.5 19 50.5 19q32 0 51.5 -19q19.5 -19 19.5 -51q0 -30 -19.5 -49q-19.5 -19 -51.5 -19q-32 0 -50.5 19t-18.5 49z" />
-<glyph unicode="&#1266;" horiz-adv-x="568" d="M294 391l20 -91h6l16 94l105 306h141l-186 -484q-22 -57 -42.5 -99q-20.5 -42 -44 -69.5q-23.5 -27.5 -52.5 -41q-29 -13.5 -68 -13.5q-33 0 -53.5 4.5q-20.5 4.5 -44.5 19.5l35 111q17 -9 31 -11q14 -2 30 -2q47 0 66 74l-262 511h161zM202 850h134v-16l-100 -93h-93zM400 850h140v-16l-143 -93l-94 0z" />
-<glyph unicode="&#1267;" horiz-adv-x="478" d="M239 219l18 -78h6l13 79l76 280h134l-152 -451q-19 -56 -36.5 -102.5q-17.5 -46.5 -38.5 -80.5q-21 -34 -46.5 -52.5q-25.5 -18.5 -60.5 -18.5q-52 0 -83 17l24 104q15 -6 30 -6q23 0 44.5 19.5q21.5 19.5 32.5 70.5l-209 500h156zM161 700h119v-16l-76 -113h-78zM339 700h126v-16l-118 -113l-81 0z" />
-<glyph unicode="&#1268;" horiz-adv-x="606" d="M183 700v-222q0 -60 23.5 -89.5q23.5 -29.5 77.5 -29.5q38 0 71.5 8.5q33.5 8.5 53.5 25.5l0 307h137v-700h-137v282q-26 -15 -69.5 -27.5q-43.5 -12.5 -103.5 -12.5q-42 0 -76.5 10.5q-34.5 10.5 -60 34q-25.5 23.5 -39.5 60q-14 36.5 -14 88.5v265zM121 798q0 26 18 42q18 16 58 16q39 0 57 -16q18 -16 18 -42q0 -26 -18 -41.5q-18 -15.5 -57 -15.5q-40 0 -58 15.5q-18 15.5 -18 41.5zt0 0zM335 798q0 26 18 42q18 16 57 16q40 0 58 -16q18 -16 18 -42q0 -26 -18 -41.5q-18 -15.5 -58 -15.5q-39 0 -57 15.5t-18 41.5z" />
-<glyph unicode="&#1269;" horiz-adv-x="505" d="M163 500v-114q0 -31 2.5 -53.5q2.5 -22.5 10 -37q7.5 -14.5 21 -21.5q13.5 -7 35.5 -7q29 0 50.5 7q21.5 7 35.5 17l0 209h130v-500h-130v196q-15 -11 -46 -24.5q-31 -13.5 -83 -13.5q-37 0 -66 8q-29 8 -49 28q-20 20 -30.5 53q-10.5 33 -10.5 83v170zM60 631q0 32 19.5 51q19.5 19 51.5 19q32 0 50.5 -19q18.5 -19 18.5 -51q0 -30 -18.5 -49q-18.5 -19 -50.5 -19q-32 0 -51.5 19q-19.5 19 -19.5 49zt0 0zM279 631q0 32 18.5 51q18.5 19 50.5 19q32 0 51.5 -19q19.5 -19 19.5 -51q0 -30 -19.5 -49q-19.5 -19 -51.5 -19q-32 0 -50.5 19t-18.5 49z" />
-<glyph unicode="&#1270;" horiz-adv-x="458" d="M467 578h-270v-456h88v-247h-96l-15 125h-114v700l407 0z" />
-<glyph unicode="&#1271;" horiz-adv-x="376" d="M57 500h323v-115h-189v-270h90v-229h-95l-15 114l-114 0z" />
-<glyph unicode="&#1272;" horiz-adv-x="798" d="M600 700h137v-700h-137zM60 700h137v-251q11 2 35 5q24 3 47 3q50 0 95.5 -10q45.5 -10 79.5 -35.5q34 -25.5 54 -69q20 -43.5 20 -109.5q0 -122 -71 -182.5q-71 -60.5 -211 -60.5q-14 0 -36 0.5q-22 0.5 -47.5 2.5q-25.5 2 -52.5 5q-27 3 -50 9zM256 112q57 0 92.5 26.5q35.5 26.5 35.5 88.5q0 33 -10 54q-10 21 -27 33q-17 12 -40 16.5q-23 4.5 -50 4.5q-14 0 -33 -2.5q-19 -2.5 -27 -5.5l0 -209q11 -3 26.5 -4.5q15.5 -1.5 32.5 -1.5zt0 0zM212 798q0 26 18 42q18 16 58 16q39 0 57 -16q18 -16 18 -42q0 -26 -18 -41.5q-18 -15.5 -57 -15.5q-40 0 -58 15.5q-18 15.5 -18 41.5zt0 0zM426 798q0 26 18 42q18 16 57 16q40 0 58 -16q18 -16 18 -42q0 -26 -18 -41.5q-18 -15.5 -58 -15.5q-39 0 -57 15.5t-18 41.5z" />
-<glyph unicode="&#1273;" horiz-adv-x="703" d="M187 109q30 -6 57 -6q45 0 63 16.5q18 16.5 18 51.5q0 32 -18 48.5q-18 16.5 -60 16.5q-33 0 -60 -7zM187 322q24 4 48.5 5.5q24.5 1.5 44.5 1.5q51 0 85 -11.5q34 -11.5 55 -32.5q21 -21 30 -49.5q9 -28.5 9 -61.5q0 -45 -12 -79q-12 -34 -39 -56.5q-27 -22.5 -70 -34q-43 -11.5 -106 -11.5q-57 0 -98.5 2q-41.5 2 -76.5 5l0 500h130zM516 500h130v-500h-130zM164 631q0 32 19.5 51q19.5 19 51.5 19q32 0 50.5 -19q18.5 -19 18.5 -51q0 -30 -18.5 -49q-18.5 -19 -50.5 -19q-32 0 -51.5 19q-19.5 19 -19.5 49zt0 0zM383 631q0 32 18.5 51q18.5 19 50.5 19q32 0 51.5 -19q19.5 -19 19.5 -51q0 -30 -19.5 -49q-19.5 -19 -51.5 -19q-32 0 -50.5 19t-18.5 49z" />
-<glyph unicode="&#1276;" horiz-adv-x="633" d="M452 -21q0 34 -15 66q-15 32 -29 55l-71 116l-28 74l-26 -74l-124 -216h-149l215 356l-195 344h165l108 -202l24 -71l23 71l113 202h149l-202 -337l130 -213q25 -39 39 -83q14 -44 14 -87q0 -91 -40.5 -139q-40.5 -48 -121.5 -48q-15 0 -31.5 1.5q-16.5 1.5 -33.5 5.5l0 109q4 0 7.5 -0.5q3.5 -0.5 7.5 -0.5q43 0 57 21t14 50z" />
-<glyph unicode="&#1277;" horiz-adv-x="525" d="M443 128q22 -32 37 -74q15 -42 15 -79q0 -88 -38 -135.5q-38 -47.5 -118 -47.5q-31 0 -65 7l0 104q5 -1 9.5 -1q4.5 0 9.5 0q42 0 57.5 18q15.5 18 14.5 48q0 27 -12.5 53.5q-12.5 26.5 -26.5 47.5l-34 51l-34 72l-31 -72l-77 -120h-142l162 256l-150 244h155l65 -107l28 -70l30 70l68 107h141l-151 -240z" />
-<glyph unicode="&#1296;" horiz-adv-x="526" d="M384 310q-15 0 -21 0q-6 0 -18 -1q-88 -2 -124.5 -28q-36.5 -26 -36.5 -72q0 -26 10.5 -45q10.5 -19 28 -31.5q17.5 -12.5 41 -18.5q23.5 -6 50.5 -6q51 0 92.5 12.5q41.5 12.5 64.5 23.5l37 -108q-14 -9 -35.5 -17.5q-21.5 -8.5 -48.5 -16q-27 -7.5 -57.5 -12q-30.5 -4.5 -63.5 -4.5q-60 0 -108.5 12.5q-48.5 12.5 -83 38q-34.5 25.5 -53 65q-18.5 39.5 -18.5 93.5q0 73 35.5 117.5q35.5 44.5 100.5 57.5l0 5q-58 22 -86 66q-28 44 -28 96q0 48 19.5 81.5q19.5 33.5 53 54.5q33.5 21 77 30q43.5 9 91.5 9q29 0 58.5 -4q29.5 -4 55 -10.5q25.5 -6.5 46 -14q20.5 -7.5 31.5 -14.5l-36 -109q-25 11 -63 20.5q-38 9.5 -74 9.5q-55 0 -85 -18q-30 -18 -30 -60q0 -20 8 -35q8 -15 20.5 -26q12.5 -11 29 -18q16.5 -7 34.5 -10q17 -5 44 -5.5q27 -0.5 45 -0.5h24l0 -107z" />
-<glyph unicode="&#1297;" horiz-adv-x="432" d="M274 207q-32 0 -53.5 -3q-21.5 -3 -34.5 -9.5q-13 -6.5 -18 -16q-5 -9.5 -5 -22.5q0 -26 22.5 -41.5q22.5 -15.5 67.5 -15.5q40 0 73 9q33 9 56 23l28 -101q-26 -15 -67 -28q-41 -13 -96 -13q-110 0 -162 42.5q-52 42.5 -52 108.5q0 51 23.5 80.5q23.5 29.5 73.5 43.5l0 4q-40 14 -59 45.5q-19 31.5 -19 66.5q0 64 46 96.5q46 32.5 125 32.5q62 0 108.5 -12.5q46.5 -12.5 76.5 -29.5l-28 -99q-18 11 -48.5 21q-30.5 10 -69.5 10q-41 0 -60.5 -11q-19.5 -11 -19.5 -38q0 -23 22.5 -37.5q22.5 -14.5 57.5 -14.5h61l0 -91z" />
-<glyph unicode="&#1298;" horiz-adv-x="634" d="M574 -21q0 -91 -36 -139q-36 -48 -114 -48q-14 0 -30.5 1.5q-16.5 1.5 -33.5 5.5l0 109q5 0 8.5 -0.5q3.5 -0.5 7.5 -0.5q21 0 33 6q12 6 18 17.5q6 11.5 8 29q2 17.5 2 40.5v578h-149q-4 -95 -9.5 -173q-5.5 -78 -15 -140.5q-9.5 -62.5 -24 -110.5q-14.5 -48 -35.5 -83q-15 -23 -32 -38q-17 -15 -35 -24q-18 -9 -36 -12.5q-18 -3.5 -34 -3.5q-23 0 -44 4q-21 4 -36 11l22 117q13 -5 27 -5q15 0 30.5 8q15.5 8 28.5 28q15 22 26 64.5q11 42.5 19.5 108.5q8.5 66 13.5 157.5q5 91.5 7 213.5l413 0z" />
-<glyph unicode="&#1299;" horiz-adv-x="515" d="M329 385h-99q-6 -71 -14 -141q-8 -70 -25.5 -125.5q-17.5 -55.5 -47.5 -90q-30 -34.5 -78 -34.5q-58 0 -82 15l16 108q16 -6 30 -6q20 0 35 17q15 17 25.5 61q10.5 44 17 119.5q6.5 75.5 9.5 191.5l343 0v-521q0 -91 -36 -139q-36 -48 -115 -48q-30 0 -64 7l0 109q4 0 7.5 -0.5q3.5 -0.5 7.5 -0.5q43 0 56.5 24.5q13.5 24.5 13.5 68.5z" />
-<glyph unicode="&#1308;" horiz-adv-x="862" d="M242 309l13 -124h4l14 126l122 389h90l120 -391l14 -124h4l15 126l85 389h139l-193 -705h-92l-125 389l-17 107h-5l-17 -108l-124 -388h-97l-192 705l149 0z" />
-<glyph unicode="&#1309;" horiz-adv-x="721" d="M419 500l91 -256l18 -83h4l14 84l64 255h119l-154 -505h-96l-101 280l-13 63h-5l-12 -64l-96 -279h-99l-161 505h141l73 -251l12 -89h5l17 90l83 250z" />
-<glyph unicode="&#1316;" horiz-adv-x="684" d="M442 578h-245v-578h-137v700h519v-578h87v-247h-96l-15 125l-113 0z" />
-<glyph unicode="&#1317;" horiz-adv-x="574" d="M345 385h-158v-385h-130v500h418v-385h83v-229h-95l-15 114l-103 0z" />
-<glyph unicode="&#1318;" horiz-adv-x="661" d="M423 222q0 60 -23.5 89.5q-23.5 29.5 -77.5 29.5q-38 0 -71.5 -8.5q-33.5 -8.5 -53.5 -25.5l0 -307h-137v700h137v-282q26 15 69.5 27.5q43.5 12.5 103.5 12.5q42 0 76.5 -10.5q34.5 -10.5 60 -34q25.5 -23.5 39.5 -60q14 -36.5 14 -88.5v-143h88v-247h-96l-15 125l-114 0z" />
-<glyph unicode="&#1319;" horiz-adv-x="590" d="M493 115h80v-229h-95l-15 114h-100v284q0 61 -17 88q-17 27 -62 27q-33 0 -60.5 -22.5q-27.5 -22.5 -36.5 -57.5l0 -319h-130v700h130v-256h4q24 32 59 51q35 19 89 19q38 0 67 -10q29 -10 48.5 -33q19.5 -23 29 -62.5q9.5 -39.5 9.5 -97.5z" />
-<glyph unicode="&#7728;" horiz-adv-x="620" d="M233 299h-36v-299h-137v700h137v-310l32 14l193 296h156l-204 -294l-54 -38l56 -39l233 -329h-169zM310 870h159v-30l-160 -88l-103 0z" />
-<glyph unicode="&#7729;" horiz-adv-x="491" d="M222 207h-35v-207h-130v700h130v-413l30 14l114 199h143l-120 -190l-51 -38l55 -39l135 -233h-149zM299 720h132v-30l-111 -124l-74 0z" />
-<glyph unicode="&#7742;" horiz-adv-x="800" d="M603 363l15 139h-6l-43 -112l-149 -261h-44l-157 262l-44 111h-5l20 -138v-364h-130v700h125l187 -320l33 -80h4l30 82l177 318h124v-700h-137zM422 870h159v-30l-160 -88l-103 0z" />
-<glyph unicode="&#7743;" horiz-adv-x="805" d="M341 0v272q0 69 -13 98q-13 29 -54 29q-34 0 -55 -18.5q-21 -18.5 -32 -47.5l0 -333h-130v500h101l15 -66h4q23 32 58.5 56q35.5 24 91.5 24q48 0 78.5 -19.5q30.5 -19.5 47.5 -65.5q23 39 59 62q36 23 87 23q42 0 71.5 -10q29.5 -10 48 -34.5q18.5 -24.5 27.5 -65.5q9 -41 9 -104v-300h-130v281q0 59 -12.5 88.5q-12.5 29.5 -55.5 29.5q-35 0 -55.5 -19q-20.5 -19 -30.5 -52l0 -328zM399 720h132v-30l-111 -124l-74 0z" />
-<glyph unicode="&#7764;" horiz-adv-x="572" d="M60 693q42 8 92.5 12.5q50.5 4.5 100.5 4.5q52 0 104.5 -8.5q52.5 -8.5 94.5 -34q42 -25.5 68.5 -71q26.5 -45.5 26.5 -118.5q0 -66 -23 -111.5q-23 -45.5 -61 -74.5q-38 -29 -86.5 -42q-48.5 -13 -100.5 -13q-5 0 -16 0q-11 0 -23 0.5q-12 0.5 -23.5 1.5q-11.5 1 -16.5 2l0 -241h-137zM264 592q-20 0 -38 -1.5q-18 -1.5 -29 -3.5l0 -227q4 -1 12 -2q8 -1 17 -1.5q9 -0.5 17.5 -0.5q8.5 0 12.5 0q27 0 53.5 5q26.5 5 47.5 18.5q21 13.5 33.5 37.5q12.5 24 12.5 63q0 33 -12 54.5q-12 21.5 -31.5 34.5q-19.5 13 -44.5 18q-25 5 -51 5zt0 0zM292 870h159v-30l-160 -88l-103 0z" />
-<glyph unicode="&#7765;" horiz-adv-x="540" d="M57 500h95l15 -60h4q26 38 61.5 56q35.5 18 86.5 18q94 0 141 -59.5q47 -59.5 47 -191.5q0 -64 -15 -115.5q-15 -51.5 -44.5 -87.5q-29.5 -36 -72 -55q-42.5 -19 -97.5 -19q-31 0 -51 4.5q-20 4.5 -40 14.5l0 -205h-130zM280 404q-38 0 -59.5 -19q-21.5 -19 -33.5 -57l0 -208q14 -11 30.5 -17.5q16.5 -6.5 43.5 -6.5q56 0 84 39.5q28 39.5 28 130.5q0 66 -22 102q-22 36 -71 36zt0 0zM264 720h132v-30l-111 -124l-74 0z" />
-<glyph unicode="&#7838;" horiz-adv-x="672" d="M419 570q-18 16 -48.5 25q-30.5 9 -67.5 9q-35 0 -56 -12.5q-21 -12.5 -32 -35q-11 -22.5 -14.5 -54q-3.5 -31.5 -3.5 -69.5v-433h-137v478q0 57 13 100.5q13 43.5 42.5 73.5q29.5 30 76 45.5q46.5 15.5 112.5 15.5q51 0 91.5 -7.5q40.5 -7.5 74 -21q33.5 -13.5 61.5 -31q28 -17.5 55 -37.5l-135 -179l-35 -29v-5l35 8q81 -6 129.5 -55q48.5 -49 48.5 -139q0 -108 -61.5 -169.5q-61.5 -61.5 -179.5 -61.5q-14 0 -34 2q-20 2 -40.5 6q-20.5 4 -38.5 9q-18 5 -28 10l27 114q10 -5 24 -8.5q14 -3.5 28.5 -5.5q14.5 -2 28.5 -3.5q14 -1.5 25 -1.5q50 0 77.5 27.5q27.5 27.5 27.5 79.5q0 55 -37 80q-37 25 -113 25h-50l0 83z" />
-<glyph unicode="&#8209;" horiz-adv-x="360" d="M54 345h251v-115l-251 0z" />
-<glyph unicode="&#8211;" horiz-adv-x="660" d="M109 346h442v-115l-442 0z" />
-<glyph unicode="&#8212;" horiz-adv-x="820" d="M109 346h602v-115l-602 0z" />
-<glyph unicode="&#8216;" horiz-adv-x="223" d="M185 618q0 -29 -19.5 -46.5q-19.5 -17.5 -48.5 -17.5q-37 0 -58 23.5q-21 23.5 -21 62.5q0 40 12.5 68q12.5 28 30 46.5q17.5 18.5 36.5 29q19 10.5 33 15.5l32 -54q-20 -8 -34 -25.5q-14 -17.5 -16 -37.5q20 0 36.5 -17.5t16.5 -46.5z" />
-<glyph unicode="&#8217;" horiz-adv-x="223" d="M38 644q0 29 19.5 47q19.5 18 49.5 18q36 0 57 -24q21 -24 21 -63q0 -40 -12.5 -68q-12.5 -28 -30 -46.5q-17.5 -18.5 -37 -29q-19.5 -10.5 -32.5 -15.5l-33 55q20 9 35.5 24q15.5 15 17.5 38q-20 -1 -37.5 15.5t-17.5 48.5z" />
-<glyph unicode="&#8218;" horiz-adv-x="223" d="M38 61q0 29 19.5 47q19.5 18 49.5 18q36 0 57 -24q21 -24 21 -63q0 -40 -12.5 -68q-12.5 -28 -30 -46.5q-17.5 -18.5 -37 -29q-19.5 -10.5 -32.5 -15.5l-33 55q20 9 35.5 24q15.5 15 17.5 38q-20 -1 -37.5 15.5t-17.5 48.5z" />
-<glyph unicode="&#8220;" horiz-adv-x="396" d="M358 618q0 -29 -19.5 -46.5q-19.5 -17.5 -48.5 -17.5q-37 0 -58 23.5q-21 23.5 -21 62.5q0 40 12.5 68q12.5 28 30 46.5q17.5 18.5 36.5 29q19 10.5 33 15.5l32 -54q-20 -8 -34 -25.5q-14 -17.5 -16 -37.5q20 0 36.5 -17.5q16.5 -17.5 16.5 -46.5zt0 0zM185 618q0 -29 -19.5 -46.5q-19.5 -17.5 -48.5 -17.5q-37 0 -58 23.5q-21 23.5 -21 62.5q0 40 12.5 68q12.5 28 30 46.5q17.5 18.5 36.5 29q19 10.5 33 15.5l32 -54q-20 -8 -34 -25.5q-14 -17.5 -16 -37.5q20 0 36.5 -17.5t16.5 -46.5z" />
-<glyph unicode="&#8221;" horiz-adv-x="396" d="M211 643q0 29 19.5 47q19.5 18 49.5 18q36 0 57 -24q21 -24 21 -63q0 -40 -12.5 -68q-12.5 -28 -30 -46.5q-17.5 -18.5 -37 -29q-19.5 -10.5 -32.5 -15.5l-33 55q20 9 35.5 24q15.5 15 17.5 38q-20 -1 -37.5 15.5q-17.5 16.5 -17.5 48.5zt0 0zM38 643q0 29 19.5 47q19.5 18 49.5 18q36 0 57 -24q21 -24 21 -63q0 -40 -12.5 -68q-12.5 -28 -30 -46.5q-17.5 -18.5 -37 -29q-19.5 -10.5 -32.5 -15.5l-33 55q20 9 35.5 24q15.5 15 17.5 38q-20 -1 -37.5 15.5t-17.5 48.5z" />
-<glyph unicode="&#8222;" horiz-adv-x="396" d="M211 61q0 29 19.5 47q19.5 18 49.5 18q36 0 57 -24q21 -24 21 -63q0 -40 -12.5 -68q-12.5 -28 -30 -46.5q-17.5 -18.5 -37 -29q-19.5 -10.5 -32.5 -15.5l-33 55q20 9 35.5 24q15.5 15 17.5 38q-20 -1 -37.5 15.5q-17.5 16.5 -17.5 48.5zt0 0zM38 61q0 29 19.5 47q19.5 18 49.5 18q36 0 57 -24q21 -24 21 -63q0 -40 -12.5 -68q-12.5 -28 -30 -46.5q-17.5 -18.5 -37 -29q-19.5 -10.5 -32.5 -15.5l-33 55q20 9 35.5 24q15.5 15 17.5 38q-20 -1 -37.5 15.5t-17.5 48.5z" />
-<glyph unicode="&#8224;" horiz-adv-x="509" d="M40 513h116l52 -16l-16 54v149h124v-149l-15 -54l51 16h117v-112h-119l-49 16l15 -50v-367l-16 -200h-92l-16 201v366l16 50l-52 -16l-116 0z" />
-<glyph unicode="&#8225;" horiz-adv-x="509" d="M192 371l16 45l-52 -15h-116v112h116l52 -15l-16 50v152h124v-152l-15 -50l51 15h117v-112h-119l-49 15l15 -45v-84l-15 -45l49 15h119v-112h-117l-51 15l15 -50v-110l-17 -200h-90l-17 201v109l16 50l-52 -15h-116v112h116l52 -15l-16 45z" />
-<glyph unicode="&#8226;" horiz-adv-x="452" d="M73 311q0 34 12 62q12 28 33 48q21 20 48.5 31.5q27.5 11.5 58.5 11.5q32 0 60 -10.5q28 -10.5 48.5 -30q20.5 -19.5 32.5 -48q12 -28.5 12 -64.5q0 -36 -12 -64q-12 -28 -32.5 -47.5q-20.5 -19.5 -48.5 -30q-28 -10.5 -60 -10.5q-31 0 -58.5 10.5q-27.5 10.5 -48.5 30q-21 19.5 -33 47.5t-12 64z" />
-<glyph unicode="&#8230;" horiz-adv-x="809" d="M53 66q0 35 22 55.5q22 20.5 58 20.5q38 0 60 -20.5q22 -20.5 22 -55.5q0 -35 -22 -56q-22 -21 -60 -21q-36 0 -58 21q-22 21 -22 56zt0 0zM325 66q0 35 22 55.5q22 20.5 58 20.5q38 0 60 -20.5q22 -20.5 22 -55.5q0 -35 -22 -56q-22 -21 -60 -21q-36 0 -58 21q-22 21 -22 56zt0 0zM597 66q0 35 22 55.5q22 20.5 58 20.5q38 0 60 -20.5q22 -20.5 22 -55.5q0 -35 -22 -56q-22 -21 -60 -21q-36 0 -58 21t-22 56z" />
-<glyph unicode="&#8240;" horiz-adv-x="1232" d="M51 542q0 45 13 77q13 32 36 53q23 21 55.5 30.5q32.5 9.5 70.5 9.5q38 0 70 -9q32 -9 55.5 -29q23.5 -20 36.5 -52.5q13 -32.5 14 -79.5q-1 -47 -14 -79.5q-13 -32.5 -36.5 -52.5q-23.5 -20 -55.5 -29q-32 -9 -70 -9q-38 0 -70.5 9q-32.5 9 -55.5 29q-23 20 -36 52.5q-13 32.5 -13 79.5zt0 0zM167 542q0 -86 59 -86q31 0 44.5 18.5q13.5 18.5 14.5 67.5q-1 48 -14.5 67q-13.5 19 -44.5 19q-31 0 -45 -19q-14 -19 -14 -67zt0 0zM452 170q0 45 13 77q13 32 36 53q23 21 55.5 30.5q32.5 9.5 70.5 9.5q38 0 70 -9q32 -9 55.5 -29q23.5 -20 36.5 -52.5q13 -32.5 14 -79.5q-1 -47 -14 -79.5q-13 -32.5 -36.5 -52.5q-23.5 -20 -55.5 -29q-32 -9 -70 -9q-38 0 -70.5 9q-32.5 9 -55.5 29q-23 20 -36 52.5q-13 32.5 -13 79.5zt0 0zM568 170q0 -86 59 -86q31 0 44.5 18.5q13.5 18.5 14.5 67.5q-1 48 -14.5 67q-13.5 19 -44.5 19q-31 0 -45 -19q-14 -19 -14 -67zt0 0zM840 170q0 45 13 77q13 32 36 53q23 21 55.5 30.5q32.5 9.5 70.5 9.5q38 0 70 -9q32 -9 55.5 -29q23.5 -20 36.5 -52.5q13 -32.5 14 -79.5q-1 -47 -14 -79.5q-13 -32.5 -36.5 -52.5q-23.5 -20 -55.5 -29q-32 -9 -70 -9q-38 0 -70.5 9q-32.5 9 -55.5 29q-23 20 -36 52.5q-13 32.5 -13 79.5zt0 0zM956 170q0 -86 59 -86q31 0 44.5 18.5q13.5 18.5 14.5 67.5q-1 48 -14.5 67q-13.5 19 -44.5 19q-31 0 -45 -19q-14 -19 -14 -67zt0 0zM677 714l73 -66l-576 -662l-73 69z" />
-<glyph unicode="&#8249;" horiz-adv-x="307" d="M29 259l160 230l75 -62l-83 -126l-48 -41l48 -36l91 -122l-77 -64z" />
-<glyph unicode="&#8250;" horiz-adv-x="307" d="M278 268l-160 -230l-76 61l84 127l48 41l-48 36l-92 123l78 63z" />
-<glyph unicode="&#8260;" horiz-adv-x="184" d="M266 715l85 -50l-430 -679l-86 53z" />
-<glyph unicode="&#8321;" horiz-adv-x="412" d="M72 0h97v164l10 46l-30 -32l-59 -39l-49 77l158 111h85v-327h88v-100l-300 0z" />
-<glyph unicode="&#8322;" horiz-adv-x="412" d="M348 200q0 -59 -30 -101q-30 -42 -72 -80l-47 -25v-4l59 11h106v-101h-313v71q26 18 58 42q32 24 59.5 51.5q27.5 27.5 46 56.5q18.5 29 18.5 55q0 49 -56 49q-27 0 -51 -8.5q-24 -8.5 -42 -19.5l-34 90q35 21 74.5 30.5q39.5 9.5 75.5 9.5q71 0 109.5 -32.5t38.5 -94.5z" />
-<glyph unicode="&#8323;" horiz-adv-x="412" d="M169 -12q44 0 62.5 14q18.5 14 19.5 37q-1 23 -20 36q-19 13 -70 13h-42v38l73 80l43 25l-58 -6h-115v95h283v-62l-87 -92l-34 -18v-5l30 3q52 -2 81.5 -31.5q29.5 -29.5 30.5 -83.5q-1 -36 -15.5 -62q-14.5 -26 -39 -43q-24.5 -17 -57.5 -25q-33 -8 -68 -8q-39 0 -72.5 6.5q-33.5 6.5 -57.5 17.5l23 90q41 -19 90 -19z" />
-<glyph unicode="&#8324;" horiz-adv-x="412" d="M402 -22h-76v-78h-101v78h-207v67l218 283h90v-261h76zM225 153l6 53h-5l-22 -49l-48 -66l-36 -32l52 8l53 0z" />
-<glyph unicode="&#8364;" horiz-adv-x="567" d="M34 475h62q15 66 43.5 111q28.5 45 66.5 73.5q38 28.5 83.5 41.5q45.5 13 94.5 13q52 0 92.5 -8q40.5 -8 67.5 -19l-35 -103q-22 9 -51 13.5q-29 4.5 -68 4.5q-60 0 -103 -30q-43 -30 -65 -97l259 0l-26 -93h-249q-1 -8 -1 -15.5q0 -7.5 0 -16.5v-26h230l-26 -93h-188q20 -66 63.5 -99.5q43.5 -33.5 115.5 -33.5q42 0 72.5 9q30.5 9 54.5 23l27 -101q-15 -11 -36 -19.5q-21 -8.5 -44 -13.5q-23 -5 -47 -7.5q-24 -2.5 -46 -2.5q-110 0 -185.5 58.5q-75.5 58.5 -101.5 186.5l-92 0l32 93h49v26q0 8 0 16q0 8 1 16l-82 0z" />
-<glyph unicode="&#8372;" horiz-adv-x="567" d="M495 321v-93h-249q-14 -14 -24.5 -37q-10.5 -23 -10.5 -43q0 -26 22 -41.5q22 -15.5 76 -15.5q53 0 84.5 9.5q31.5 9.5 53.5 21.5l29 -98q-25 -14 -70 -26q-45 -12 -127 -12q-94 0 -144 36q-50 36 -50 108q0 16 3.5 31.5q3.5 15.5 9 29q5.5 13.5 11 22.5q5.5 9 9.5 15l-73 0v93zM45 378v93h250q15 14 26 37q11 23 11 45q0 56 -80 56q-40 0 -68.5 -8.5q-28.5 -8.5 -52.5 -20.5l-37 98q16 8 32.5 14.5q16.5 6.5 36.5 11.5q20 5 47.5 7.5q27.5 2.5 66.5 2.5q88 0 134 -33q46 -33 46 -101q0 -32 -12.5 -62.5q-12.5 -30.5 -27.5 -46.5l78 0l0 -93z" />
-<glyph unicode="&#8374;" horiz-adv-x="567" d="M23 364h79v329q42 8 87 12.5q45 4.5 95 4.5q52 0 100 -9q48 -9 84 -33q36 -24 57.5 -66q21.5 -42 21.5 -108q0 -61 -21 -103q-21 -42 -56 -68.5q-35 -26.5 -80 -38q-45 -11.5 -94 -11.5h-68v-58h160v-91h-160v-124h-126v124h-79v91h79v58h-79zM228 367h52q27 0 51.5 6.5q24.5 6.5 42.5 20.5q18 14 28.5 37.5q10.5 23.5 10.5 56.5q0 61 -33 86.5q-33 25.5 -85 25.5q-20 0 -38 -1.5q-18 -1.5 -29 -3.5z" />
-<glyph unicode="&#8375;" horiz-adv-x="567" d="M23 364h79v329q42 8 87 12.5q45 4.5 95 4.5q52 0 100 -9q48 -9 84 -33q36 -24 57.5 -66q21.5 -42 21.5 -108q0 -61 -21 -103q-21 -42 -56 -68.5q-35 -26.5 -80 -38q-45 -11.5 -94 -11.5h-68v-58h160v-91h-160v-124h-126v124h-79v91h79v58h-79zM228 367h52q27 0 51.5 6.5q24.5 6.5 42.5 20.5q18 14 28.5 37.5q10.5 23.5 10.5 56.5q0 61 -33 86.5q-33 25.5 -85 25.5q-20 0 -38 -1.5q-18 -1.5 -29 -3.5z" />
-<glyph unicode="&#8377;" horiz-adv-x="567" d="M23 364h79v329q42 8 87 12.5q45 4.5 95 4.5q52 0 100 -9q48 -9 84 -33q36 -24 57.5 -66q21.5 -42 21.5 -108q0 -61 -21 -103q-21 -42 -56 -68.5q-35 -26.5 -80 -38q-45 -11.5 -94 -11.5h-68v-58h160v-91h-160v-124h-126v124h-79v91h79v58h-79zM228 367h52q27 0 51.5 6.5q24.5 6.5 42.5 20.5q18 14 28.5 37.5q10.5 23.5 10.5 56.5q0 61 -33 86.5q-33 25.5 -85 25.5q-20 0 -38 -1.5q-18 -1.5 -29 -3.5z" />
-<glyph unicode="&#8378;" horiz-adv-x="567" d="M23 364h79v329q42 8 87 12.5q45 4.5 95 4.5q52 0 100 -9q48 -9 84 -33q36 -24 57.5 -66q21.5 -42 21.5 -108q0 -61 -21 -103q-21 -42 -56 -68.5q-35 -26.5 -80 -38q-45 -11.5 -94 -11.5h-68v-58h160v-91h-160v-124h-126v124h-79v91h79v58h-79zM228 367h52q27 0 51.5 6.5q24.5 6.5 42.5 20.5q18 14 28.5 37.5q10.5 23.5 10.5 56.5q0 61 -33 86.5q-33 25.5 -85 25.5q-20 0 -38 -1.5q-18 -1.5 -29 -3.5z" />
-<glyph unicode="&#8379;" horiz-adv-x="567" d="M23 364h79v329q42 8 87 12.5q45 4.5 95 4.5q52 0 100 -9q48 -9 84 -33q36 -24 57.5 -66q21.5 -42 21.5 -108q0 -61 -21 -103q-21 -42 -56 -68.5q-35 -26.5 -80 -38q-45 -11.5 -94 -11.5h-68v-58h160v-91h-160v-124h-126v124h-79v91h79v58h-79zM228 367h52q27 0 51.5 6.5q24.5 6.5 42.5 20.5q18 14 28.5 37.5q10.5 23.5 10.5 56.5q0 61 -33 86.5q-33 25.5 -85 25.5q-20 0 -38 -1.5q-18 -1.5 -29 -3.5z" />
-<glyph unicode="&#8380;" horiz-adv-x="567" d="M23 364h79v329q42 8 87 12.5q45 4.5 95 4.5q52 0 100 -9q48 -9 84 -33q36 -24 57.5 -66q21.5 -42 21.5 -108q0 -61 -21 -103q-21 -42 -56 -68.5q-35 -26.5 -80 -38q-45 -11.5 -94 -11.5h-68v-58h160v-91h-160v-124h-126v124h-79v91h79v58h-79zM228 367h52q27 0 51.5 6.5q24.5 6.5 42.5 20.5q18 14 28.5 37.5q10.5 23.5 10.5 56.5q0 61 -33 86.5q-33 25.5 -85 25.5q-20 0 -38 -1.5q-18 -1.5 -29 -3.5z" />
-<glyph unicode="&#8381;" horiz-adv-x="567" d="M23 364h79v329q42 8 87 12.5q45 4.5 95 4.5q52 0 100 -9q48 -9 84 -33q36 -24 57.5 -66q21.5 -42 21.5 -108q0 -61 -21 -103q-21 -42 -56 -68.5q-35 -26.5 -80 -38q-45 -11.5 -94 -11.5h-68v-58h160v-91h-160v-124h-126v124h-79v91h79v58h-79zM228 367h52q27 0 51.5 6.5q24.5 6.5 42.5 20.5q18 14 28.5 37.5q10.5 23.5 10.5 56.5q0 61 -33 86.5q-33 25.5 -85 25.5q-20 0 -38 -1.5q-18 -1.5 -29 -3.5z" />
-<glyph unicode="&#8382;" horiz-adv-x="567" d="M23 364h79v329q42 8 87 12.5q45 4.5 95 4.5q52 0 100 -9q48 -9 84 -33q36 -24 57.5 -66q21.5 -42 21.5 -108q0 -61 -21 -103q-21 -42 -56 -68.5q-35 -26.5 -80 -38q-45 -11.5 -94 -11.5h-68v-58h160v-91h-160v-124h-126v124h-79v91h79v58h-79zM228 367h52q27 0 51.5 6.5q24.5 6.5 42.5 20.5q18 14 28.5 37.5q10.5 23.5 10.5 56.5q0 61 -33 86.5q-33 25.5 -85 25.5q-20 0 -38 -1.5q-18 -1.5 -29 -3.5z" />
-<glyph unicode="&#8383;" horiz-adv-x="567" d="M23 364h79v329q42 8 87 12.5q45 4.5 95 4.5q52 0 100 -9q48 -9 84 -33q36 -24 57.5 -66q21.5 -42 21.5 -108q0 -61 -21 -103q-21 -42 -56 -68.5q-35 -26.5 -80 -38q-45 -11.5 -94 -11.5h-68v-58h160v-91h-160v-124h-126v124h-79v91h79v58h-79zM228 367h52q27 0 51.5 6.5q24.5 6.5 42.5 20.5q18 14 28.5 37.5q10.5 23.5 10.5 56.5q0 61 -33 86.5q-33 25.5 -85 25.5q-20 0 -38 -1.5q-18 -1.5 -29 -3.5z" />
-<glyph unicode="&#8384;" horiz-adv-x="567" d="M23 364h79v329q42 8 87 12.5q45 4.5 95 4.5q52 0 100 -9q48 -9 84 -33q36 -24 57.5 -66q21.5 -42 21.5 -108q0 -61 -21 -103q-21 -42 -56 -68.5q-35 -26.5 -80 -38q-45 -11.5 -94 -11.5h-68v-58h160v-91h-160v-124h-126v124h-79v91h79v58h-79zM228 367h52q27 0 51.5 6.5q24.5 6.5 42.5 20.5q18 14 28.5 37.5q10.5 23.5 10.5 56.5q0 61 -33 86.5q-33 25.5 -85 25.5q-20 0 -38 -1.5q-18 -1.5 -29 -3.5z" />
-<glyph unicode="&#8385;" horiz-adv-x="567" d="M23 364h79v329q42 8 87 12.5q45 4.5 95 4.5q52 0 100 -9q48 -9 84 -33q36 -24 57.5 -66q21.5 -42 21.5 -108q0 -61 -21 -103q-21 -42 -56 -68.5q-35 -26.5 -80 -38q-45 -11.5 -94 -11.5h-68v-58h160v-91h-160v-124h-126v124h-79v91h79v58h-79zM228 367h52q27 0 51.5 6.5q24.5 6.5 42.5 20.5q18 14 28.5 37.5q10.5 23.5 10.5 56.5q0 61 -33 86.5q-33 25.5 -85 25.5q-20 0 -38 -1.5q-18 -1.5 -29 -3.5z" />
-<glyph unicode="&#8386;" horiz-adv-x="567" d="M23 364h79v329q42 8 87 12.5q45 4.5 95 4.5q52 0 100 -9q48 -9 84 -33q36 -24 57.5 -66q21.5 -42 21.5 -108q0 -61 -21 -103q-21 -42 -56 -68.5q-35 -26.5 -80 -38q-45 -11.5 -94 -11.5h-68v-58h160v-91h-160v-124h-126v124h-79v91h79v58h-79zM228 367h52q27 0 51.5 6.5q24.5 6.5 42.5 20.5q18 14 28.5 37.5q10.5 23.5 10.5 56.5q0 61 -33 86.5q-33 25.5 -85 25.5q-20 0 -38 -1.5q-18 -1.5 -29 -3.5z" />
-<glyph unicode="&#8387;" horiz-adv-x="567" d="M23 364h79v329q42 8 87 12.5q45 4.5 95 4.5q52 0 100 -9q48 -9 84 -33q36 -24 57.5 -66q21.5 -42 21.5 -108q0 -61 -21 -103q-21 -42 -56 -68.5q-35 -26.5 -80 -38q-45 -11.5 -94 -11.5h-68v-58h160v-91h-160v-124h-126v124h-79v91h79v58h-79zM228 367h52q27 0 51.5 6.5q24.5 6.5 42.5 20.5q18 14 28.5 37.5q10.5 23.5 10.5 56.5q0 61 -33 86.5q-33 25.5 -85 25.5q-20 0 -38 -1.5q-18 -1.5 -29 -3.5z" />
-<glyph unicode="&#8388;" horiz-adv-x="567" d="M23 364h79v329q42 8 87 12.5q45 4.5 95 4.5q52 0 100 -9q48 -9 84 -33q36 -24 57.5 -66q21.5 -42 21.5 -108q0 -61 -21 -103q-21 -42 -56 -68.5q-35 -26.5 -80 -38q-45 -11.5 -94 -11.5h-68v-58h160v-91h-160v-124h-126v124h-79v91h79v58h-79zM228 367h52q27 0 51.5 6.5q24.5 6.5 42.5 20.5q18 14 28.5 37.5q10.5 23.5 10.5 56.5q0 61 -33 86.5q-33 25.5 -85 25.5q-20 0 -38 -1.5q-18 -1.5 -29 -3.5z" />
-<glyph unicode="&#8389;" horiz-adv-x="567" d="M23 364h79v329q42 8 87 12.5q45 4.5 95 4.5q52 0 100 -9q48 -9 84 -33q36 -24 57.5 -66q21.5 -42 21.5 -108q0 -61 -21 -103q-21 -42 -56 -68.5q-35 -26.5 -80 -38q-45 -11.5 -94 -11.5h-68v-58h160v-91h-160v-124h-126v124h-79v91h79v58h-79zM228 367h52q27 0 51.5 6.5q24.5 6.5 42.5 20.5q18 14 28.5 37.5q10.5 23.5 10.5 56.5q0 61 -33 86.5q-33 25.5 -85 25.5q-20 0 -38 -1.5q-18 -1.5 -29 -3.5z" />
-<glyph unicode="&#8390;" horiz-adv-x="567" d="M23 364h79v329q42 8 87 12.5q45 4.5 95 4.5q52 0 100 -9q48 -9 84 -33q36 -24 57.5 -66q21.5 -42 21.5 -108q0 -61 -21 -103q-21 -42 -56 -68.5q-35 -26.5 -80 -38q-45 -11.5 -94 -11.5h-68v-58h160v-91h-160v-124h-126v124h-79v91h79v58h-79zM228 367h52q27 0 51.5 6.5q24.5 6.5 42.5 20.5q18 14 28.5 37.5q10.5 23.5 10.5 56.5q0 61 -33 86.5q-33 25.5 -85 25.5q-20 0 -38 -1.5q-18 -1.5 -29 -3.5z" />
-<glyph unicode="&#8391;" horiz-adv-x="567" d="M23 364h79v329q42 8 87 12.5q45 4.5 95 4.5q52 0 100 -9q48 -9 84 -33q36 -24 57.5 -66q21.5 -42 21.5 -108q0 -61 -21 -103q-21 -42 -56 -68.5q-35 -26.5 -80 -38q-45 -11.5 -94 -11.5h-68v-58h160v-91h-160v-124h-126v124h-79v91h79v58h-79zM228 367h52q27 0 51.5 6.5q24.5 6.5 42.5 20.5q18 14 28.5 37.5q10.5 23.5 10.5 56.5q0 61 -33 86.5q-33 25.5 -85 25.5q-20 0 -38 -1.5q-18 -1.5 -29 -3.5z" />
-<glyph unicode="&#8392;" horiz-adv-x="567" d="M23 364h79v329q42 8 87 12.5q45 4.5 95 4.5q52 0 100 -9q48 -9 84 -33q36 -24 57.5 -66q21.5 -42 21.5 -108q0 -61 -21 -103q-21 -42 -56 -68.5q-35 -26.5 -80 -38q-45 -11.5 -94 -11.5h-68v-58h160v-91h-160v-124h-126v124h-79v91h79v58h-79zM228 367h52q27 0 51.5 6.5q24.5 6.5 42.5 20.5q18 14 28.5 37.5q10.5 23.5 10.5 56.5q0 61 -33 86.5q-33 25.5 -85 25.5q-20 0 -38 -1.5q-18 -1.5 -29 -3.5z" />
-<glyph unicode="&#8393;" horiz-adv-x="567" d="M23 364h79v329q42 8 87 12.5q45 4.5 95 4.5q52 0 100 -9q48 -9 84 -33q36 -24 57.5 -66q21.5 -42 21.5 -108q0 -61 -21 -103q-21 -42 -56 -68.5q-35 -26.5 -80 -38q-45 -11.5 -94 -11.5h-68v-58h160v-91h-160v-124h-126v124h-79v91h79v58h-79zM228 367h52q27 0 51.5 6.5q24.5 6.5 42.5 20.5q18 14 28.5 37.5q10.5 23.5 10.5 56.5q0 61 -33 86.5q-33 25.5 -85 25.5q-20 0 -38 -1.5q-18 -1.5 -29 -3.5z" />
-<glyph unicode="&#8394;" horiz-adv-x="567" d="M23 364h79v329q42 8 87 12.5q45 4.5 95 4.5q52 0 100 -9q48 -9 84 -33q36 -24 57.5 -66q21.5 -42 21.5 -108q0 -61 -21 -103q-21 -42 -56 -68.5q-35 -26.5 -80 -38q-45 -11.5 -94 -11.5h-68v-58h160v-91h-160v-124h-126v124h-79v91h79v58h-79zM228 367h52q27 0 51.5 6.5q24.5 6.5 42.5 20.5q18 14 28.5 37.5q10.5 23.5 10.5 56.5q0 61 -33 86.5q-33 25.5 -85 25.5q-20 0 -38 -1.5q-18 -1.5 -29 -3.5z" />
-<glyph unicode="&#8395;" horiz-adv-x="567" d="M23 364h79v329q42 8 87 12.5q45 4.5 95 4.5q52 0 100 -9q48 -9 84 -33q36 -24 57.5 -66q21.5 -42 21.5 -108q0 -61 -21 -103q-21 -42 -56 -68.5q-35 -26.5 -80 -38q-45 -11.5 -94 -11.5h-68v-58h160v-91h-160v-124h-126v124h-79v91h79v58h-79zM228 367h52q27 0 51.5 6.5q24.5 6.5 42.5 20.5q18 14 28.5 37.5q10.5 23.5 10.5 56.5q0 61 -33 86.5q-33 25.5 -85 25.5q-20 0 -38 -1.5q-18 -1.5 -29 -3.5z" />
-<glyph unicode="&#8396;" horiz-adv-x="567" d="M23 364h79v329q42 8 87 12.5q45 4.5 95 4.5q52 0 100 -9q48 -9 84 -33q36 -24 57.5 -66q21.5 -42 21.5 -108q0 -61 -21 -103q-21 -42 -56 -68.5q-35 -26.5 -80 -38q-45 -11.5 -94 -11.5h-68v-58h160v-91h-160v-124h-126v124h-79v91h79v58h-79zM228 367h52q27 0 51.5 6.5q24.5 6.5 42.5 20.5q18 14 28.5 37.5q10.5 23.5 10.5 56.5q0 61 -33 86.5q-33 25.5 -85 25.5q-20 0 -38 -1.5q-18 -1.5 -29 -3.5z" />
-<glyph unicode="&#8397;" horiz-adv-x="567" d="M23 364h79v329q42 8 87 12.5q45 4.5 95 4.5q52 0 100 -9q48 -9 84 -33q36 -24 57.5 -66q21.5 -42 21.5 -108q0 -61 -21 -103q-21 -42 -56 -68.5q-35 -26.5 -80 -38q-45 -11.5 -94 -11.5h-68v-58h160v-91h-160v-124h-126v124h-79v91h79v58h-79zM228 367h52q27 0 51.5 6.5q24.5 6.5 42.5 20.5q18 14 28.5 37.5q10.5 23.5 10.5 56.5q0 61 -33 86.5q-33 25.5 -85 25.5q-20 0 -38 -1.5q-18 -1.5 -29 -3.5z" />
-<glyph unicode="&#8398;" horiz-adv-x="567" d="M23 364h79v329q42 8 87 12.5q45 4.5 95 4.5q52 0 100 -9q48 -9 84 -33q36 -24 57.5 -66q21.5 -42 21.5 -108q0 -61 -21 -103q-21 -42 -56 -68.5q-35 -26.5 -80 -38q-45 -11.5 -94 -11.5h-68v-58h160v-91h-160v-124h-126v124h-79v91h79v58h-79zM228 367h52q27 0 51.5 6.5q24.5 6.5 42.5 20.5q18 14 28.5 37.5q10.5 23.5 10.5 56.5q0 61 -33 86.5q-33 25.5 -85 25.5q-20 0 -38 -1.5q-18 -1.5 -29 -3.5z" />
-<glyph unicode="&#8399;" horiz-adv-x="567" d="M23 364h79v329q42 8 87 12.5q45 4.5 95 4.5q52 0 100 -9q48 -9 84 -33q36 -24 57.5 -66q21.5 -42 21.5 -108q0 -61 -21 -103q-21 -42 -56 -68.5q-35 -26.5 -80 -38q-45 -11.5 -94 -11.5h-68v-58h160v-91h-160v-124h-126v124h-79v91h79v58h-79zM228 367h52q27 0 51.5 6.5q24.5 6.5 42.5 20.5q18 14 28.5 37.5q10.5 23.5 10.5 56.5q0 61 -33 86.5q-33 25.5 -85 25.5q-20 0 -38 -1.5q-18 -1.5 -29 -3.5z" />
-<glyph unicode="&#8467;" horiz-adv-x="500" d="M406 30q-22 -14 -57.5 -28q-35.5 -14 -70.5 -14q-63 0 -91.5 30.5q-28.5 30.5 -28.5 95.5v104l-50 -44l-35 44l85 74v254q0 44 10 75.5q10 31.5 27.5 51.5q17.5 20 41 29.5q23.5 9.5 50.5 9.5q48 0 79 -29.5q31 -29.5 31 -89.5q0 -74 -40 -157q-40 -83 -131 -171l0 -140q0 -44 17 -60.5q17 -16.5 41 -16.5q25 0 55 10.5q30 10.5 50 21.5zM333 588q0 34 -14 49q-14 15 -32 15q-12 0 -23 -3.5q-11 -3.5 -19.5 -14q-8.5 -10.5 -13.5 -29q-5 -18.5 -5 -48.5v-212q56 65 81.5 125.5t25.5 117.5z" />
-<glyph unicode="&#8470;" horiz-adv-x="1027" d="M655 321h314v-111h-314zM234 362l-55 113h-5l16 -110v-365h-130v705h100l250 -370l52 -110h6l-16 107v368h130v-705h-99zM634 542q0 45 13 77q13 32 36 53q23 21 55.5 30.5q32.5 9.5 70.5 9.5q38 0 70 -9q32 -9 55.5 -29q23.5 -20 36.5 -52.5q13 -32.5 13 -79.5q0 -47 -13 -79.5q-13 -32.5 -36.5 -52.5q-23.5 -20 -55.5 -29q-32 -9 -70 -9q-38 0 -70.5 9q-32.5 9 -55.5 29q-23 20 -36 52.5q-13 32.5 -13 79.5zt0 0zM750 542q0 -86 59 -86q31 0 44.5 18.5q13.5 18.5 13.5 67.5q0 48 -13.5 67q-13.5 19 -44.5 19q-31 0 -45 -19t-14 -67z" />
-<glyph unicode="&#8482;" horiz-adv-x="948" d="M395 590h-118v-250h-130v250h-118v110h366zM800 484l17 103h-6l-36 -85l-68 -117h-78l-68 114l-39 88h-5l23 -102v-145h-111v360h130l91 -150l24 -63h1l25 65l84 148h129v-360l-113 0z" />
-<glyph unicode="&#8494;" horiz-adv-x="600" d="M157 259v-181q62 -59 145 -59q124 0 193 120l35 -21q-43 -66 -99 -100.5q-56 -34.5 -129 -34.5q-59 0 -107 21.5q-48 21.5 -81.5 58.5q-33.5 37 -51.5 87.5q-18 50.5 -18 108.5q0 59 18.5 109.5q18.5 50.5 52.5 87.5q34 37 81.5 58q47.5 21 105.5 21q62 0 109.5 -22q47.5 -22 80.5 -59.5q33 -37.5 50 -87.5q17 -50 19 -107zM448 295v145q-63 60 -147 60q-86 0 -144 -60l0 -145z" />
-<glyph unicode="&#8706;" horiz-adv-x="538" d="M276 503q21 0 36 -2q15 -2 26 -5.5q11 -3.5 20 -8q9 -4.5 17 -9.5l5 0q-5 39 -25 65q-20 26 -48.5 42q-28.5 16 -62.5 22.5q-34 6.5 -68 6.5q-8 0 -14.5 0q-6.5 0 -13.5 -1l22 101q8 1 16.5 1q8.5 0 16.5 0q66 0 123 -15q57 -15 98.5 -50q41.5 -35 65.5 -94q24 -59 24 -146q0 -112 -21.5 -192q-21.5 -80 -59.5 -131.5q-38 -51.5 -90.5 -76q-52.5 -24.5 -114.5 -24.5q-99 0 -154.5 54.5q-55.5 54.5 -55.5 148.5q0 57 15.5 113q15.5 56 47 101q31.5 45 80.5 72.5q49 27.5 115 27.5zt0 0zM284 393q-57 0 -94.5 -53q-37.5 -53 -37.5 -146q0 -41 21.5 -69.5q21.5 -28.5 65.5 -28.5q41 0 68 23q27 23 43.5 60q16.5 37 23 84q6.5 47 6.5 94q-18 17 -40 26.5t-56 9.5z" />
-<glyph unicode="&#8719;" horiz-adv-x="654" d="M463 578h-266v-778h-137v900h533v-900l-130 0z" />
-<glyph unicode="&#8721;" horiz-adv-x="527" d="M183 -38l-42 -40h360v-122h-481v122l186 292l42 34l-46 37l-182 293v122h481v-122h-348l46 -41l172 -281z" />
-<glyph unicode="&#8722;" horiz-adv-x="527" d="M43 394h442v-112l-442 0z" />
-<glyph unicode="&#8725;" horiz-adv-x="527" d="M436 715l85 -50l-430 -679l-86 53z" />
-<glyph unicode="&#8730;" horiz-adv-x="527" d="M187 475l79 -186l22 -115h4l18 117l120 409h125l-230 -705h-67l-151 369h-112l0 111z" />
-<glyph unicode="&#8734;" horiz-adv-x="857" d="M417 265q-36 -58 -87 -86q-51 -28 -113 -28q-36 0 -69 13.5q-33 13.5 -58 39q-25 25.5 -40 62q-15 36.5 -15 82.5q0 48 15 86q15 38 40.5 64.5q25.5 26.5 60.5 40q35 13.5 76 13.5q74 0 124 -29.5q50 -29.5 87 -74.5q45 56 96 80q51 24 112 24q37 0 69 -13.5q32 -13.5 56 -38.5q24 -25 37.5 -61.5q13.5 -36.5 13.5 -82.5q0 -49 -15 -87q-15 -38 -42 -64.5q-27 -26.5 -64 -40q-37 -13.5 -80 -13.5q-36 0 -66 9q-30 9 -54.5 24.5q-24.5 15.5 -45 36q-20.5 20.5 -38.5 44.5zt0 0zM620 262q35 0 57.5 25.5q22.5 25.5 22.5 65.5q0 16 -5 32q-5 16 -15 28.5q-10 12.5 -25.5 20q-15.5 7.5 -36.5 7.5q-31 0 -64 -18.5q-33 -18.5 -62 -56.5q11 -21 25 -39.5q14 -18.5 30.5 -33q16.5 -14.5 35 -23q18.5 -8.5 37.5 -8.5zt0 0zM237 441q-34 0 -57.5 -26.5q-23.5 -26.5 -23.5 -65.5q0 -38 25 -62.5q25 -24.5 62 -24.5q32 0 65 22.5q33 22.5 57 55.5q-23 45 -54.5 73t-73.5 28z" />
-<glyph unicode="&#8747;" horiz-adv-x="368" d="M247 -34q0 -96 -39 -135q-39 -39 -117 -39q-46 0 -87.5 7q-41.5 7 -65.5 17l29 102q44 -17 84 -17q38 0 52 23.5q14 23.5 14 78.5v535q0 96 36.5 136q36.5 40 117.5 40q18 0 38.5 -2q20.5 -2 40.5 -5.5q20 -3.5 38 -8q18 -4.5 31 -9.5l-22 -102q-23 8 -42.5 12.5q-19.5 4.5 -46.5 4.5q-35 0 -48 -20.5q-13 -20.5 -13 -74.5z" />
-<glyph unicode="&#8776;" horiz-adv-x="527" d="M30 473q47 38 84.5 52.5q37.5 14.5 69.5 14.5q29 0 54 -8.5q25 -8.5 48 -18q23 -9.5 45.5 -18q22.5 -8.5 45.5 -8.5q18 0 37 6q19 6 40 23l47 -103q-36 -27 -66 -38q-30 -11 -56 -11q-28 0 -52 9q-24 9 -46.5 20q-22.5 11 -45.5 20q-23 9 -49 9q-24 0 -51.5 -10.5q-27.5 -10.5 -60.5 -38.5zM30 279q47 38 84.5 52.5q37.5 14.5 69.5 14.5q29 0 54 -8.5q25 -8.5 48 -18q23 -9.5 45.5 -18q22.5 -8.5 45.5 -8.5q18 0 37 6q19 6 40 23l47 -103q-36 -27 -66 -38q-30 -11 -56 -11q-28 0 -52 9q-24 9 -46.5 20q-22.5 11 -45.5 20q-23 9 -49 9q-24 0 -51.5 -10.5q-27.5 -10.5 -60.5 -38.5z" />
-<glyph unicode="&#8800;" horiz-adv-x="527" d="M43 490h232l50 113h113l-50 -113h97v-112h-147l-36 -80h183v-112h-232l-57 -129h-112l57 129h-98v112h147l36 80l-183 0z" />
-<glyph unicode="&#8804;" horiz-adv-x="527" d="M483 80l-56 -96l-382 215l56 96zM34 413v70l386 231l57 -90l-224 -139l-91 -35l90 -31l230 -137l-57 -90z" />
-<glyph unicode="&#8805;" horiz-adv-x="527" d="M488 205l-381 -221l-56 95l380 222zM488 493v-70l-386 -231l-57 90l224 139l91 35l-90 31l-230 137l57 90z" />
-<glyph unicode="&#9674;" horiz-adv-x="527" d="M299 -5h-75l-197 347l197 363h75l201 -358zM298 201l80 133l-91 157l-27 84h-5l-28 -86l-78 -134l90 -156l28 -84l4 0z" />
-<glyph unicode="&#11367;" horiz-adv-x="696" d="M453 293h-256v-293h-137v700h137v-285h256v285h137v-578h88v-247h-96l-15 125l-114 0z" />
-<glyph unicode="&#11368;" horiz-adv-x="590" d="M493 115h80v-229h-95l-15 114h-100v284q0 61 -17 88q-17 27 -62 27q-33 0 -60.5 -22.5q-27.5 -22.5 -36.5 -57.5l0 -319h-130v700h130v-256h4q24 32 59 51q35 19 89 19q38 0 67 -10q29 -10 48.5 -33q19.5 -23 29 -62.5q9.5 -39.5 9.5 -97.5z" />
-<glyph unicode="&#62465;" horiz-adv-x="2" d="M-284 870h159v-30l-160 -88l-103 0z" />
-<glyph unicode="&#62470;" horiz-adv-x="501" d="M112 875q20 -26 58 -40q38 -14 85 -14q48 0 82.5 15q34.5 15 54.5 39l49 -32q-12 -29 -32 -50q-20 -21 -45 -35q-25 -14 -53.5 -21q-28.5 -7 -56.5 -7q-27 0 -55.5 6q-28.5 6 -54.5 18.5q-26 12.5 -48 33q-22 20.5 -36 50.5z" />
-<glyph unicode="&#62471;" horiz-adv-x="332" d="M208 0l-24 -43q41 -4 64.5 -21.5q23.5 -17.5 23.5 -53.5q0 -23 -11.5 -40q-11.5 -17 -31.5 -28.5q-20 -11.5 -47 -17.5q-27 -6 -58 -6q-31 0 -64 6l9 48q7 -1 13 -1q6 0 11 0q38 0 49 9q11 9 11 21q0 28 -86 32l57 95z" />
-<glyph unicode="&#62472;" horiz-adv-x="476" d="M193 870h96l127 -93v-39h-99l-57 41l-20 34l-21 -33l-62 -42h-97l0 40z" />
-<glyph unicode="&#62473;" horiz-adv-x="267" d="M60 -105q0 29 19.5 46q19.5 17 48.5 17q35 0 57 -23q22 -23 22 -65q0 -33 -11 -58q-11 -25 -27 -42.5q-16 -17.5 -34 -28q-18 -10.5 -31 -14.5l-34 54q14 7 28 19.5q14 12.5 16 33.5q-20 -1 -37 14.5t-17 46.5z" />
-<glyph unicode="&#62474;" horiz-adv-x="223" d="M38 644q0 29 19.5 47q19.5 18 49.5 18q36 0 57 -24q21 -24 21 -63q0 -40 -12.5 -68q-12.5 -28 -30 -46.5q-17.5 -18.5 -37 -29q-19.5 -10.5 -32.5 -15.5l-33 55q20 9 35.5 24q15.5 15 17.5 38q-20 -1 -37.5 15.5t-17.5 48.5z" />
-<glyph unicode="&#62475;" horiz-adv-x="295" d="M60 799q0 25 21.5 43q21.5 18 64.5 18q43 0 66 -18q23 -18 23 -43q0 -26 -23 -44q-23 -18 -66 -18q-43 0 -64.5 18t-21.5 44z" />
-<glyph unicode="&#62476;" horiz-adv-x="376" d="M60 772q0 18 6 34.5q6 16.5 20.5 29q14.5 12.5 39 19.5q24.5 7 62.5 7q70 0 99 -24q29 -24 29 -66q0 -18 -6.5 -34q-6.5 -16 -21.5 -27.5q-15 -11.5 -39.5 -18.5q-24.5 -7 -60.5 -7q-71 0 -99.5 24.5q-28.5 24.5 -28.5 62.5zt0 0zM144 772q0 -31 44 -31q25 0 35 8q10 8 10 23q0 17 -10.5 25q-10.5 8 -34.5 8q-44 0 -44 -33z" />
-<glyph unicode="&#62477;" horiz-adv-x="490" d="M60 800q32 35 61.5 48q29.5 13 58.5 13q22 0 44 -5.5q22 -5.5 42.5 -12q20.5 -6.5 40.5 -12q20 -5.5 38 -5.5q16 0 31 5q15 5 29 19l25 -67q-28 -26 -54.5 -36.5q-26.5 -10.5 -51.5 -10.5q-23 0 -44 5.5q-21 5.5 -41.5 12.5q-20.5 7 -40.5 12.5q-20 5.5 -39 5.5q-19 0 -37.5 -7.5q-18.5 -7.5 -37.5 -27.5z" />
-<glyph unicode="&#62478;" horiz-adv-x="350" d="M263 10q-76 -22 -76 -79q0 -18 11 -30.5q11 -12.5 31 -12.5q18 0 42 12l19 -62q-15 -12 -47.5 -23.5q-32.5 -11.5 -67.5 -11.5q-56 0 -85.5 25q-29.5 25 -29.5 66q0 41 27.5 70q27.5 29 75.5 46z" />
-<glyph unicode="&#62598;" horiz-adv-x="591" d="M531 537q0 -26 -6.5 -52q-6.5 -26 -21.5 -47.5q-15 -21.5 -39 -38q-24 -16.5 -58 -24.5l0 -6q30 -5 57 -17q27 -12 47 -33q20 -21 31.5 -51q11.5 -30 11.5 -71q0 -54 -23 -93.5q-23 -39.5 -61.5 -64.5q-38.5 -25 -87.5 -37q-49 -12 -101 -12q-17 0 -43.5 0q-26.5 0 -57 1.5q-30.5 1.5 -62 4.5q-31.5 3 -57.5 9l0 690q19 3 43.5 6q24.5 3 52.5 5q28 2 57.5 3q29.5 1 58.5 1q49 0 95.5 -7.5q46.5 -7.5 83 -26.5q36.5 -19 58.5 -53q22 -34 22 -86zt0 0zM281 103q25 0 48.5 6q23.5 6 41.5 18.5q18 12.5 29 31.5q11 19 11 45q0 33 -13 52q-13 19 -34 29.5q-21 10.5 -47 13.5q-26 3 -52 3h-73v-193q5 -2 16 -3q11 -1 23.5 -1.5q12.5 -0.5 26 -1q13.5 -0.5 23.5 -0.5zt0 0zM236 406q14 0 32.5 1q18.5 1 30.5 3q38 12 65.5 36q27.5 24 27.5 63q0 26 -10 43q-10 17 -26.5 27q-16.5 10 -37.5 14q-21 4 -44 4q-26 0 -48 -1q-22 -1 -34 -3l0 -187zM288 870h159v-30l-160 -88l-103 0z" />
-<glyph unicode="&#62599;" horiz-adv-x="536" d="M57 700h130v-240h4q21 24 54 38q33 14 73 14q90 0 137.5 -61.5q47.5 -61.5 47.5 -187.5q0 -135 -66.5 -205q-66.5 -70 -182.5 -70q-64 0 -117 10.5q-53 10.5 -80 23.5zM280 402q-36 0 -58.5 -18.5q-22.5 -18.5 -34.5 -53.5l0 -218q16 -8 34.5 -11q18.5 -3 39.5 -3q53 0 80.5 38.5q27.5 38.5 27.5 122.5q0 143 -89 143zt0 0zM313 720h132v-30l-111 -124l-74 0z" />
-<glyph unicode="&#62600;" horiz-adv-x="508" d="M60 700h415v-122h-278v-173h256v-122h-256v-283h-137zM288 870h159v-30l-160 -88l-103 0z" />
-<glyph unicode="&#62601;" horiz-adv-x="321" d="M11 500h69v28q0 95 40 137.5q40 42.5 116 42.5q80 0 133 -19l-25 -104q-23 8 -40.5 10.5q-17.5 2.5 -36.5 2.5q-20 0 -31.5 -6q-11.5 -6 -17 -18.5q-5.5 -12.5 -7 -31q-1.5 -18.5 -1.5 -42.5l110 0v-110h-110v-390h-130v390h-69zM251 870h159v-30l-160 -88l-103 0z" />
-<glyph unicode="&#62622;" horiz-adv-x="606" d="M-17 607h77v93h137v-93h221v-93h-221v-96q26 15 69.5 27.5q43.5 12.5 103.5 12.5q42 0 76.5 -10.5q34.5 -10.5 60 -34q25.5 -23.5 39.5 -60q14 -36.5 14 -88.5v-265h-137v222q0 60 -23.5 89.5q-23.5 29.5 -77.5 29.5q-38 0 -71.5 -8.5q-33.5 -8.5 -53.5 -25.5l0 -307h-137v514l-77 0z" />
-<glyph unicode="&#62623;" horiz-adv-x="556" d="M-6 641h74v59h130v-59h161v-80h-161v-117h4q24 32 59 51q35 19 89 19q38 0 67 -10q29 -10 48.5 -33q19.5 -23 29 -62.5q9.5 -39.5 9.5 -97.5v-311h-130v284q0 61 -17 88q-17 27 -62 27q-33 0 -60.5 -22.5q-27.5 -22.5 -36.5 -57.5l0 -319h-130v561l-74 0z" />
-<glyph unicode="&#62662;" horiz-adv-x="606" d="M183 700v-222q0 -60 23.5 -89.5q23.5 -29.5 77.5 -29.5q38 0 71.5 8.5q33.5 8.5 53.5 25.5l0 307h137v-721q0 -91 -38.5 -139q-38.5 -48 -118.5 -48q-15 0 -31.5 1.5q-16.5 1.5 -33.5 5.5l0 109q4 0 7.5 -0.5q3.5 -0.5 7.5 -0.5q43 0 56.5 24.5q13.5 24.5 13.5 68.5v282q-26 -15 -69.5 -27.5q-43.5 -12.5 -103.5 -12.5q-42 0 -76.5 10.5q-34.5 10.5 -60 34q-25.5 23.5 -39.5 60q-14 36.5 -14 88.5l0 265z" />
-<glyph unicode="&#62663;" horiz-adv-x="505" d="M318 196q-15 -11 -46 -24.5q-31 -13.5 -83 -13.5q-37 0 -66 8q-29 8 -49 28q-20 20 -30.5 53q-10.5 33 -10.5 83v170h130v-114q0 -31 2.5 -53.5q2.5 -22.5 10 -36.5q7.5 -14 21 -21q13.5 -7 35.5 -7q29 0 50.5 6.5q21.5 6.5 35.5 16.5l0 209h130v-521q0 -91 -36 -139q-36 -48 -115 -48q-30 0 -64 7l0 109q4 0 7.5 -0.5q3.5 -0.5 7.5 -0.5q43 0 56.5 24.5q13.5 24.5 13.5 68.5z" />
-<glyph unicode="&#62668;" horiz-adv-x="568" d="M294 391l20 -91h6l16 94l105 306h141l-186 -484q-22 -57 -42.5 -99q-20.5 -42 -44 -69.5q-23.5 -27.5 -52.5 -41q-29 -13.5 -68 -13.5q-33 0 -53.5 4.5q-20.5 4.5 -44.5 19.5l35 111q17 -9 31 -11q14 -2 30 -2q47 0 66 74l-262 511h161zM301 870h159v-30l-160 -88l-103 0z" />
-<glyph unicode="&#62669;" horiz-adv-x="478" d="M239 219l18 -78h6l13 79l76 280h134l-152 -451q-19 -56 -36.5 -102.5q-17.5 -46.5 -38.5 -80.5q-21 -34 -46.5 -52.5q-25.5 -18.5 -60.5 -18.5q-52 0 -83 17l24 104q15 -6 30 -6q23 0 44.5 19.5q21.5 19.5 32.5 70.5l-209 500h156zM253 720h132v-30l-111 -124l-74 0z" />
-<glyph unicode="&#62678;" horiz-adv-x="574" d="M130 410h269q-3 40 -16.5 73.5q-13.5 33.5 -36.5 57.5q-23 24 -57 37.5q-34 13.5 -77 13.5q-54 0 -94 -11.5q-40 -11.5 -65 -25.5l-29 116q35 18 88 30.5q53 12.5 105 12.5q69 0 127.5 -19q58.5 -19 101 -62.5q42.5 -43.5 66.5 -113q24 -69.5 24 -169.5q0 -104 -28 -174q-28 -70 -75 -112q-47 -42 -108 -60q-61 -18 -127 -18q-57 0 -103.5 10q-46.5 10 -74.5 23l36 119q23 -11 62 -20.5q39 -9.5 90 -9.5q39 0 72 11q33 11 58.5 34.5q25.5 23.5 41.5 59.5q16 36 20 87l-270 0zM146 799q0 25 21.5 43q21.5 18 64.5 18q43 0 66 -18q23 -18 23 -43q0 -26 -23 -44q-23 -18 -66 -18q-43 0 -64.5 18t-21.5 44z" />
-<glyph unicode="&#62679;" horiz-adv-x="459" d="M109 300h186q-5 50 -33 77q-28 27 -83 27q-38 0 -67 -9q-29 -9 -51 -21l-35 94q66 46 178 46q112 0 167 -66.5q55 -66.5 55 -197.5q0 -132 -62 -198q-62 -66 -170 -66q-47 0 -95 9.5q-48 9.5 -76 26.5l32 102q23 -13 54.5 -20.5q31.5 -7.5 63.5 -7.5q64 0 91 27q27 27 32 84l-187 0zM110 641q0 29 21.5 49.5q21.5 20.5 59.5 20.5q38 0 61.5 -20.5q23.5 -20.5 23.5 -49.5q0 -29 -23.5 -48.5q-23.5 -19.5 -61.5 -19.5q-38 0 -59.5 19.5t-21.5 48.5z" />
-<glyph unicode="&#62730;" horiz-adv-x="526" d="M120 310v107h24q9 0 22 0q13 0 26.5 0.5q13.5 0.5 26.5 2q13 1.5 21 3.5q35 8 60 28.5q25 20.5 25 55.5q0 48 -30.5 65.5q-30.5 17.5 -80.5 17.5q-45 0 -84 -12q-39 -12 -59 -23l-35 116q11 6 31.5 13q20.5 7 47 13.5q26.5 6.5 57.5 10.5q31 4 63 4q44 0 86 -8q42 -8 75 -28q33 -20 53 -53.5q20 -33.5 20 -85.5q0 -52 -27.5 -96q-27.5 -44 -88.5 -64l0 -5q65 -13 101.5 -56q36.5 -43 36.5 -115q0 -49 -17.5 -85.5q-17.5 -36.5 -46.5 -62.5q-29 -26 -67.5 -41.5q-38.5 -15.5 -81.5 -21.5l-14 -165h-88l-19 164q-45 5 -81 14q-36 9 -58 20l35 119q23 -11 66 -22.5q43 -11.5 102 -11.5q22 0 44.5 5.5q22.5 5.5 40.5 18q18 12.5 29 32.5q11 20 11 48q0 47 -35 71q-35 24 -125 26q-12 1 -18 1q-6 0 -21 0z" />
-<glyph unicode="&#62731;" horiz-adv-x="432" d="M109 207v91h61q35 0 57.5 14.5q22.5 14.5 22.5 37.5q0 27 -19.5 38q-19.5 11 -60.5 11q-39 0 -69.5 -10.5q-30.5 -10.5 -48.5 -21.5l-28 100q30 17 79.5 29.5q49.5 12.5 105.5 12.5q86 0 128.5 -32q42.5 -32 42.5 -93q0 -17 -4.5 -34.5q-4.5 -17.5 -14.5 -33.5q-10 -16 -24.5 -28.5q-14.5 -12.5 -34.5 -19.5l0 -4q53 -12 75 -42.5q22 -30.5 22 -81.5q0 -51 -34 -90.5q-34 -39.5 -106 -53.5l-14 -171h-88l-19 167q-38 4 -66.5 13.5q-28.5 9.5 -49.5 21.5l28 101q23 -13 56 -21.5q33 -8.5 73 -8.5q90 0 90 58q0 26 -23.5 38.5q-23.5 12.5 -87.5 12.5z" />
-<glyph unicode="&#62732;" horiz-adv-x="559" d="M534 29q-26 -19 -65.5 -29q-39.5 -10 -83.5 -13l-16 -30q41 -4 64.5 -21.5q23.5 -17.5 23.5 -53.5q0 -23 -11.5 -40q-11.5 -17 -31.5 -28.5q-20 -11.5 -47 -17.5q-27 -6 -58 -6q-31 0 -64 6l9 48q7 -1 13 -1q6 0 11 0q38 0 49 9q11 9 11 21q0 28 -86 32l50 84q-55 7 -103 30.5q-48 23.5 -84 67.5q-36 44 -56.5 109q-20.5 65 -20.5 154q0 103 28.5 172.5q28.5 69.5 74 112q45.5 42.5 101.5 61q56 18.5 112 18.5q60 0 101.5 -8q41.5 -8 68.5 -19v-116q-50 11 -81.5 16q-31.5 5 -76.5 5q-83 0 -133.5 -59q-50.5 -59 -50.5 -183q0 -54 12 -98.5q12 -44.5 36.5 -76q24.5 -31.5 61 -49q36.5 -17.5 84.5 -17.5q45 0 76 9q31 9 54 23z" />
-<glyph unicode="&#62733;" horiz-adv-x="433" d="M411 31q-23 -17 -52.5 -27q-29.5 -10 -62.5 -15l-18 -32q41 -4 64.5 -21.5q23.5 -17.5 23.5 -53.5q0 -23 -11.5 -40q-11.5 -17 -31.5 -28.5q-20 -11.5 -47 -17.5q-27 -6 -58 -6q-31 0 -64 6l9 48q7 -1 13 -1q6 0 11 0q38 0 49 9q11 9 11 21q0 28 -86 32l50 84q-49 6 -83 27.5q-34 21.5 -55 55q-21 33.5 -30.5 79q-9.5 45.5 -9.5 99.5q0 127 57 195.5q57 68.5 166 68.5q55 0 88.5 -9q33.5 -9 60.5 -23l-31 -106q-23 11 -45.5 17q-22.5 6 -51.5 6q-54 0 -82 -35.5q-28 -35.5 -28 -113.5q0 -32 7 -59q7 -27 21 -47q14 -20 36.5 -31.5q22.5 -11.5 52.5 -11.5q33 0 56 8.5q23 8.5 41 20.5z" />
-<glyph unicode="&#62734;" horiz-adv-x="605" d="M405 155h-215l-53 -155h-137l252 705h101l252 -705h-144zM225 265h150l-52 156l-21 110h-5l-21 -111zM134 856h343v-89l-343 0z" />
-<glyph unicode="&#62735;" horiz-adv-x="496" d="M54 471q40 18 95 28.5q55 10.5 115 10.5q52 0 87 -12.5q35 -12.5 55.5 -35.5q20.5 -23 29 -55q8.5 -32 8.5 -72q0 -44 -3 -88.5q-3 -44.5 -3.5 -87.5q-0.5 -43 2.5 -83.5q3 -40.5 15 -76.5l-106 0l-21 69h-5q-20 -31 -55.5 -53.5q-35.5 -22.5 -91.5 -22.5q-35 0 -63 10.5q-28 10.5 -48 30q-20 19.5 -31 46q-11 26.5 -11 59.5q0 46 20.5 77.5q20.5 31.5 59 51q38.5 19.5 92 27q53.5 7.5 119.5 4.5q7 56 -8 80.5q-15 24.5 -67 24.5q-39 0 -82.5 -8q-43.5 -8 -71.5 -21zM219 99q39 0 62 17.5q23 17.5 34 37.5l0 65q-31 3 -59.5 1q-28.5 -2 -50.5 -9q-22 -7 -35 -20q-13 -13 -13 -33q0 -28 16.5 -43.5q16.5 -15.5 45.5 -15.5zt0 0zM91 658h323v-92l-323 0z" />
-<glyph unicode="&#62736;" horiz-adv-x="522" d="M60 700h415v-122h-278v-163h253v-122h-253v-171h283v-122h-420zM97 856h343v-89l-343 0z" />
-<glyph unicode="&#62737;" horiz-adv-x="508" d="M457 43q-30 -24 -81.5 -40.5q-51.5 -16.5 -109.5 -16.5q-121 0 -177 70.5q-56 70.5 -56 193.5q0 132 63 198q63 66 177 66q38 0 74 -10q36 -10 64 -33q28 -23 45 -62q17 -39 17 -97q0 -21 -2.5 -45q-2.5 -24 -7.5 -50l-300 0q3 -63 32.5 -95q29.5 -32 95.5 -32q41 0 73.5 12.5q32.5 12.5 49.5 25.5zM271 410q-51 0 -75.5 -30.5q-24.5 -30.5 -29.5 -81.5l186 0q4 54 -16.5 83q-20.5 29 -64.5 29zt0 0zM97 658h323v-92l-323 0z" />
-<glyph unicode="&#62738;" horiz-adv-x="522" d="M60 700h415v-122h-278v-163h253v-122h-253v-171h283v-122h-420zM82 798q0 26 18 42q18 16 58 16q39 0 57 -16q18 -16 18 -42q0 -26 -18 -41.5q-18 -15.5 -57 -15.5q-40 0 -58 15.5q-18 15.5 -18 41.5zt0 0zM296 798q0 26 18 42q18 16 57 16q40 0 58 -16q18 -16 18 -42q0 -26 -18 -41.5q-18 -15.5 -58 -15.5q-39 0 -57 15.5q-18 15.5 -18 41.5zt0 0zM92 983h343v-89l-343 0z" />
-<glyph unicode="&#62739;" horiz-adv-x="508" d="M457 43q-30 -24 -81.5 -40.5q-51.5 -16.5 -109.5 -16.5q-121 0 -177 70.5q-56 70.5 -56 193.5q0 132 63 198q63 66 177 66q38 0 74 -10q36 -10 64 -33q28 -23 45 -62q17 -39 17 -97q0 -21 -2.5 -45q-2.5 -24 -7.5 -50l-300 0q3 -63 32.5 -95q29.5 -32 95.5 -32q41 0 73.5 12.5q32.5 12.5 49.5 25.5zM271 410q-51 0 -75.5 -30.5q-24.5 -30.5 -29.5 -81.5l186 0q4 54 -16.5 83q-20.5 29 -64.5 29zt0 0zM82 625q0 32 19.5 51q19.5 19 51.5 19q32 0 50.5 -19q18.5 -19 18.5 -51q0 -30 -18.5 -49q-18.5 -19 -50.5 -19q-32 0 -51.5 19q-19.5 19 -19.5 49zt0 0zM301 625q0 32 18.5 51q18.5 19 50.5 19q32 0 51.5 -19q19.5 -19 19.5 -51q0 -30 -19.5 -49q-19.5 -19 -51.5 -19q-32 0 -50.5 19q-18.5 19 -18.5 49zt0 0zM90 847h343v-89l-343 0z" />
-<glyph unicode="&#62740;" horiz-adv-x="522" d="M60 700h415v-122h-278v-163h253v-122h-253v-171h283v-122h-420zM82 798q0 26 18 42q18 16 58 16q39 0 57 -16q18 -16 18 -42q0 -26 -18 -41.5q-18 -15.5 -57 -15.5q-40 0 -58 15.5q-18 15.5 -18 41.5zt0 0zM296 798q0 26 18 42q18 16 57 16q40 0 58 -16q18 -16 18 -42q0 -26 -18 -41.5q-18 -15.5 -58 -15.5q-39 0 -57 15.5q-18 15.5 -18 41.5zt0 0zM197 1010q4 -32 23.5 -46q19.5 -14 50.5 -14q67 0 74 59l111 -17q-11 -63 -57.5 -92q-46.5 -29 -128.5 -29q-41 0 -75 6q-34 6 -59.5 19.5q-25.5 13.5 -42 36.5q-16.5 23 -20.5 57z" />
-<glyph unicode="&#62741;" horiz-adv-x="508" d="M457 43q-30 -24 -81.5 -40.5q-51.5 -16.5 -109.5 -16.5q-121 0 -177 70.5q-56 70.5 -56 193.5q0 132 63 198q63 66 177 66q38 0 74 -10q36 -10 64 -33q28 -23 45 -62q17 -39 17 -97q0 -21 -2.5 -45q-2.5 -24 -7.5 -50l-300 0q3 -63 32.5 -95q29.5 -32 95.5 -32q41 0 73.5 12.5q32.5 12.5 49.5 25.5zM271 410q-51 0 -75.5 -30.5q-24.5 -30.5 -29.5 -81.5l186 0q4 54 -16.5 83q-20.5 29 -64.5 29zt0 0zM82 631q0 32 19.5 51q19.5 19 51.5 19q32 0 50.5 -19q18.5 -19 18.5 -51q0 -30 -18.5 -49q-18.5 -19 -50.5 -19q-32 0 -51.5 19q-19.5 19 -19.5 49zt0 0zM301 631q0 32 18.5 51q18.5 19 50.5 19q32 0 51.5 -19q19.5 -19 19.5 -51q0 -30 -19.5 -49q-19.5 -19 -51.5 -19q-32 0 -50.5 19q-18.5 19 -18.5 49zt0 0zM196 865q4 -32 23.5 -46q19.5 -14 50.5 -14q67 0 74 59l111 -17q-11 -63 -57.5 -92q-46.5 -29 -128.5 -29q-41 0 -75 6q-34 6 -59.5 19.5q-25.5 13.5 -42 36.5q-16.5 23 -20.5 57z" />
-<glyph unicode="&#62742;" horiz-adv-x="526" d="M120 310v107h24q9 0 22 0q13 0 26.5 0.5q13.5 0.5 26.5 2q13 1.5 21 3.5q35 8 60 28.5q25 20.5 25 55.5q0 48 -30.5 65.5q-30.5 17.5 -80.5 17.5q-45 0 -84 -12q-39 -12 -59 -23l-35 116q11 6 31.5 13q20.5 7 47 13.5q26.5 6.5 57.5 10.5q31 4 63 4q44 0 86 -8q42 -8 75 -28q33 -20 53 -53.5q20 -33.5 20 -85.5q0 -52 -27.5 -96q-27.5 -44 -88.5 -64l0 -5q65 -13 101.5 -56q36.5 -43 36.5 -115q0 -57 -23 -97.5q-23 -40.5 -60.5 -66.5q-37.5 -26 -86.5 -38.5q-49 -12.5 -100 -12.5q-66 0 -120 11q-54 11 -83 26l35 119q23 -11 66 -22.5q43 -11.5 102 -11.5q22 0 44.5 5.5q22.5 5.5 40.5 18q18 12.5 29 32.5q11 20 11 48q0 47 -35 71q-35 24 -125 26q-12 1 -18 1q-6 0 -21 0zM283 737h-94l-127 94v39h105l53 -45l19 -30l21 29l56 46h100l0 -40z" />
-<glyph unicode="&#62743;" horiz-adv-x="432" d="M109 207v91h61q35 0 57.5 14q22.5 14 22.5 37q0 27 -20 38.5q-20 11.5 -61 11.5q-39 0 -69 -10q-30 -10 -48 -21l-28 99q30 17 79.5 29.5q49.5 12.5 105.5 12.5q86 0 128.5 -32q42.5 -32 42.5 -93q0 -17 -4.5 -34.5q-4.5 -17.5 -14.5 -33.5q-10 -16 -24.5 -28.5q-14.5 -12.5 -34.5 -19.5l0 -4q53 -12 75 -42.5q22 -30.5 22 -81.5q0 -32 -13 -59.5q-13 -27.5 -39.5 -47.5q-26.5 -20 -66.5 -32q-40 -12 -95 -12q-55 0 -95.5 11.5q-40.5 11.5 -67.5 26.5l28 101q23 -13 55.5 -21q32.5 -8 72.5 -8q91 0 91 58q0 26 -23.5 38q-23.5 12 -87.5 12zM240 550h-91l-115 182h110l39 -66l16 -49l18 49l45 66l101 0z" />
-<glyph unicode="&#62744;" horiz-adv-x="670" d="M38 350q0 175 77 269.5q77 94.5 220 94.5q75 0 131 -26q56 -26 93 -74q37 -48 55 -115q18 -67 18 -149q0 -175 -77.5 -269.5q-77.5 -94.5 -219.5 -94.5q-76 0 -132 26q-56 26 -92.5 74q-36.5 48 -54.5 115q-18 67 -18 149zt0 0zM182 350q0 -53 9 -97.5q9 -44.5 27.5 -76.5q18.5 -32 47.5 -50q29 -18 69 -18q73 0 113 57q40 57 40 185q0 51 -8.5 95q-8.5 44 -26.5 77q-18 33 -47 51.5q-29 18.5 -71 18.5q-73 0 -113 -58.5q-40 -58.5 -40 -183.5zt0 0zM167 856h343v-89l-343 0z" />
-<glyph unicode="&#62745;" horiz-adv-x="537" d="M33 250q0 127 62 195.5q62 68.5 174 68.5q60 0 104 -19q44 -19 73 -53.5q29 -34.5 43.5 -83.5q14.5 -49 14.5 -108q0 -127 -61.5 -195.5q-61.5 -68.5 -173.5 -68.5q-60 0 -104 19q-44 19 -73.5 53.5q-29.5 34.5 -44 83.5q-14.5 49 -14.5 108zt0 0zM167 250q0 -33 6 -61q6 -28 18 -49q12 -21 31.5 -32.5q19.5 -11.5 46.5 -11.5q51 0 76 37q25 37 25 117q0 69 -23 111.5q-23 42.5 -78 42.5q-48 0 -75 -36q-27 -36 -27 -118zt0 0zM106 658h323v-92l-323 0z" />
-<glyph unicode="&#62746;" horiz-adv-x="670" d="M38 350q0 175 77 269.5q77 94.5 220 94.5q75 0 131 -26q56 -26 93 -74q37 -48 55 -115q18 -67 18 -149q0 -175 -77.5 -269.5q-77.5 -94.5 -219.5 -94.5q-76 0 -132 26q-56 26 -92.5 74q-36.5 48 -54.5 115q-18 67 -18 149zt0 0zM182 350q0 -53 9 -97.5q9 -44.5 27.5 -76.5q18.5 -32 47.5 -50q29 -18 69 -18q73 0 113 57q40 57 40 185q0 51 -8.5 95q-8.5 44 -26.5 77q-18 33 -47 51.5q-29 18.5 -71 18.5q-73 0 -113 -58.5q-40 -58.5 -40 -183.5zt0 0zM266 874q4 -32 23.5 -46q19.5 -14 50.5 -14q67 0 74 59l111 -17q-11 -63 -57.5 -92q-46.5 -29 -128.5 -29q-41 0 -75 6q-34 6 -59.5 19.5q-25.5 13.5 -42 36.5q-16.5 23 -20.5 57z" />
-<glyph unicode="&#62747;" horiz-adv-x="537" d="M33 250q0 127 62 195.5q62 68.5 174 68.5q60 0 104 -19q44 -19 73 -53.5q29 -34.5 43.5 -83.5q14.5 -49 14.5 -108q0 -127 -61.5 -195.5q-61.5 -68.5 -173.5 -68.5q-60 0 -104 19q-44 19 -73.5 53.5q-29.5 34.5 -44 83.5q-14.5 49 -14.5 108zt0 0zM167 250q0 -33 6 -61q6 -28 18 -49q12 -21 31.5 -32.5q19.5 -11.5 46.5 -11.5q51 0 76 37q25 37 25 117q0 69 -23 111.5q-23 42.5 -78 42.5q-48 0 -75 -36q-27 -36 -27 -118zt0 0zM208 704q7 -39 23.5 -55q16.5 -16 42.5 -16q28 0 44.5 16q16.5 16 22.5 54l99 -25q-12 -65 -59 -96.5q-47 -31.5 -110 -31.5q-31 0 -60 7q-29 7 -52 22.5q-23 15.5 -39 39.5q-16 24 -22 59z" />
-<glyph unicode="&#62748;" horiz-adv-x="670" d="M38 350q0 175 77 269.5q77 94.5 220 94.5q75 0 131 -26q56 -26 93 -74q37 -48 55 -115q18 -67 18 -149q0 -175 -77.5 -269.5q-77.5 -94.5 -219.5 -94.5q-76 0 -132 26q-56 26 -92.5 74q-36.5 48 -54.5 115q-18 67 -18 149zt0 0zM488 407q-8 89 -48 137q-40 48 -105 48q-29 0 -55 -10q-26 -10 -46.5 -32q-20.5 -22 -34 -57.5q-13.5 -35.5 -17.5 -85.5zM182 297q8 -95 49 -142q41 -47 104 -47q29 0 55.5 9.5q26.5 9.5 47 31q20.5 21.5 34 57.5q13.5 36 16.5 91zM267 874q4 -32 23.5 -46q19.5 -14 50.5 -14q67 0 74 59l111 -17q-11 -63 -57.5 -92q-46.5 -29 -128.5 -29q-41 0 -75 6q-34 6 -59.5 19.5q-25.5 13.5 -42 36.5q-16.5 23 -20.5 57z" />
-<glyph unicode="&#62749;" horiz-adv-x="537" d="M33 250q0 127 62 195.5q62 68.5 174 68.5q60 0 104 -19q44 -19 73 -53.5q29 -34.5 43.5 -83.5q14.5 -49 14.5 -108q0 -127 -61.5 -195.5q-61.5 -68.5 -173.5 -68.5q-60 0 -104 19q-44 19 -73.5 53.5q-29.5 34.5 -44 83.5q-14.5 49 -14.5 108zt0 0zM370 289q-8 60 -33.5 87.5q-25.5 27.5 -67.5 27.5q-19 0 -36 -6q-17 -6 -30.5 -19.5q-13.5 -13.5 -23 -35.5q-9.5 -22 -12.5 -54zM167 207q6 -54 34 -82.5q28 -28.5 68 -28.5q38 0 66.5 24.5q28.5 24.5 34.5 86.5zM208 704q7 -39 23.5 -55q16.5 -16 42.5 -16q28 0 44.5 16q16.5 16 22.5 54l99 -25q-12 -65 -59 -96.5q-47 -31.5 -110 -31.5q-31 0 -60 7q-29 7 -52 22.5q-23 15.5 -39 39.5q-16 24 -22 59z" />
-<glyph unicode="&#62750;" horiz-adv-x="670" d="M38 350q0 175 77 269.5q77 94.5 220 94.5q75 0 131 -26q56 -26 93 -74q37 -48 55 -115q18 -67 18 -149q0 -175 -77.5 -269.5q-77.5 -94.5 -219.5 -94.5q-76 0 -132 26q-56 26 -92.5 74q-36.5 48 -54.5 115q-18 67 -18 149zt0 0zM182 350q0 -53 9 -97.5q9 -44.5 27.5 -76.5q18.5 -32 47.5 -50q29 -18 69 -18q73 0 113 57q40 57 40 185q0 51 -8.5 95q-8.5 44 -26.5 77q-18 33 -47 51.5q-29 18.5 -71 18.5q-73 0 -113 -58.5q-40 -58.5 -40 -183.5zt0 0zM153 798q0 26 18 42q18 16 58 16q39 0 57 -16q18 -16 18 -42q0 -26 -18 -41.5q-18 -15.5 -57 -15.5q-40 0 -58 15.5q-18 15.5 -18 41.5zt0 0zM367 798q0 26 18 42q18 16 57 16q40 0 58 -16q18 -16 18 -42q0 -26 -18 -41.5q-18 -15.5 -58 -15.5q-39 0 -57 15.5q-18 15.5 -18 41.5zt0 0zM268 1010q4 -32 23.5 -46q19.5 -14 50.5 -14q67 0 74 59l111 -17q-11 -63 -57.5 -92q-46.5 -29 -128.5 -29q-41 0 -75 6q-34 6 -59.5 19.5q-25.5 13.5 -42 36.5q-16.5 23 -20.5 57z" />
-<glyph unicode="&#62751;" horiz-adv-x="537" d="M33 250q0 127 62 195.5q62 68.5 174 68.5q60 0 104 -19q44 -19 73 -53.5q29 -34.5 43.5 -83.5q14.5 -49 14.5 -108q0 -127 -61.5 -195.5q-61.5 -68.5 -173.5 -68.5q-60 0 -104 19q-44 19 -73.5 53.5q-29.5 34.5 -44 83.5q-14.5 49 -14.5 108zt0 0zM167 250q0 -33 6 -61q6 -28 18 -49q12 -21 31.5 -32.5q19.5 -11.5 46.5 -11.5q51 0 76 37q25 37 25 117q0 69 -23 111.5q-23 42.5 -78 42.5q-48 0 -75 -36q-27 -36 -27 -118zt0 0zM90 631q0 32 19.5 51q19.5 19 51.5 19q32 0 50.5 -19q18.5 -19 18.5 -51q0 -30 -18.5 -49q-18.5 -19 -50.5 -19q-32 0 -51.5 19q-19.5 19 -19.5 49zt0 0zM309 631q0 32 18.5 51q18.5 19 50.5 19q32 0 51.5 -19q19.5 -19 19.5 -51q0 -30 -19.5 -49q-19.5 -19 -51.5 -19q-32 0 -50.5 19q-18.5 19 -18.5 49zt0 0zM196 865q4 -32 23.5 -46q19.5 -14 50.5 -14q67 0 74 59l111 -17q-11 -63 -57.5 -92q-46.5 -29 -128.5 -29q-41 0 -75 6q-34 6 -59.5 19.5q-25.5 13.5 -42 36.5q-16.5 23 -20.5 57z" />
-<glyph unicode="&#62752;" horiz-adv-x="798" d="M600 700h137v-700h-137zM60 700h137v-251q11 2 35 5q24 3 47 3q50 0 95.5 -10q45.5 -10 79.5 -35.5q34 -25.5 54 -69q20 -43.5 20 -109.5q0 -122 -71 -182.5q-71 -60.5 -211 -60.5q-14 0 -36 0.5q-22 0.5 -47.5 2.5q-25.5 2 -52.5 5q-27 3 -50 9zM256 112q57 0 92.5 26.5q35.5 26.5 35.5 88.5q0 33 -10 54q-10 21 -27 33q-17 12 -40 16.5q-23 4.5 -50 4.5q-14 0 -33 -2.5q-19 -2.5 -27 -5.5l0 -209q11 -3 26.5 -4.5q15.5 -1.5 32.5 -1.5zt0 0zM220 856h343v-89l-343 0z" />
-<glyph unicode="&#62753;" horiz-adv-x="703" d="M187 109q30 -6 57 -6q45 0 63 16.5q18 16.5 18 51.5q0 32 -18 48.5q-18 16.5 -60 16.5q-33 0 -60 -7zM187 322q24 4 48.5 5.5q24.5 1.5 44.5 1.5q51 0 85 -11.5q34 -11.5 55 -32.5q21 -21 30 -49.5q9 -28.5 9 -61.5q0 -45 -12 -79q-12 -34 -39 -56.5q-27 -22.5 -70 -34q-43 -11.5 -106 -11.5q-57 0 -98.5 2q-41.5 2 -76.5 5l0 500h130zM516 500h130v-500h-130zM184 658h323v-92l-323 0z" />
-<glyph unicode="&#62754;" horiz-adv-x="574" d="M130 410h269q-3 40 -16.5 73.5q-13.5 33.5 -36.5 57.5q-23 24 -57 37.5q-34 13.5 -77 13.5q-54 0 -94 -11.5q-40 -11.5 -65 -25.5l-29 116q35 18 88 30.5q53 12.5 105 12.5q69 0 127.5 -19q58.5 -19 101 -62.5q42.5 -43.5 66.5 -113q24 -69.5 24 -169.5q0 -104 -28 -174q-28 -70 -75 -112q-47 -42 -108 -60q-61 -18 -127 -18q-57 0 -103.5 10q-46.5 10 -74.5 23l36 119q23 -11 62 -20.5q39 -9.5 90 -9.5q39 0 72 11q33 11 58.5 34.5q25.5 23.5 41.5 59.5q16 36 20 87l-270 0zM67 856h343v-89l-343 0z" />
-<glyph unicode="&#62755;" horiz-adv-x="459" d="M109 300h186q-5 50 -33 77q-28 27 -83 27q-38 0 -67 -9q-29 -9 -51 -21l-35 94q66 46 178 46q112 0 167 -66.5q55 -66.5 55 -197.5q0 -132 -62 -198q-62 -66 -170 -66q-47 0 -95 9.5q-48 9.5 -76 26.5l32 102q23 -13 54.5 -20.5q31.5 -7.5 63.5 -7.5q64 0 91 27q27 27 32 84l-187 0zM48 658h323v-92l-323 0z" />
-<glyph unicode="&#62756;" horiz-adv-x="574" d="M130 410h269q-3 40 -16.5 73.5q-13.5 33.5 -36.5 57.5q-23 24 -57 37.5q-34 13.5 -77 13.5q-54 0 -94 -11.5q-40 -11.5 -65 -25.5l-29 116q35 18 88 30.5q53 12.5 105 12.5q69 0 127.5 -19q58.5 -19 101 -62.5q42.5 -43.5 66.5 -113q24 -69.5 24 -169.5q0 -104 -28 -174q-28 -70 -75 -112q-47 -42 -108 -60q-61 -18 -127 -18q-57 0 -103.5 10q-46.5 10 -74.5 23l36 119q23 -11 62 -20.5q39 -9.5 90 -9.5q39 0 72 11q33 11 58.5 34.5q25.5 23.5 41.5 59.5q16 36 20 87l-270 0zM167 874q4 -32 23.5 -46q19.5 -14 50.5 -14q67 0 74 59l111 -17q-11 -63 -57.5 -92q-46.5 -29 -128.5 -29q-41 0 -75 6q-34 6 -59.5 19.5q-25.5 13.5 -42 36.5q-16.5 23 -20.5 57z" />
-<glyph unicode="&#62757;" horiz-adv-x="459" d="M109 300h186q-5 50 -33 77q-28 27 -83 27q-38 0 -67 -9q-29 -9 -51 -21l-35 94q66 46 178 46q112 0 167 -66.5q55 -66.5 55 -197.5q0 -132 -62 -198q-62 -66 -170 -66q-47 0 -95 9.5q-48 9.5 -76 26.5l32 102q23 -13 54.5 -20.5q31.5 -7.5 63.5 -7.5q64 0 91 27q27 27 32 84l-187 0zM146 704q7 -39 23.5 -55q16.5 -16 42.5 -16q28 0 44.5 16q16.5 16 22.5 54l99 -25q-12 -65 -59 -96.5q-47 -31.5 -110 -31.5q-31 0 -60 7q-29 7 -52 22.5q-23 15.5 -39 39.5q-16 24 -22 59z" />
-<glyph unicode="&#62758;" horiz-adv-x="577" d="M549 29q-15 -11 -37.5 -19.5q-22.5 -8.5 -48 -13.5q-25.5 -5 -52.5 -7.5q-27 -2.5 -53 -2.5q-65 0 -123 19.5q-58 19.5 -101.5 63q-43.5 43.5 -69.5 113q-26 69.5 -26 168.5q0 103 29 172.5q29 69.5 75.5 112q46.5 42.5 104 61q57.5 18.5 115.5 18.5q60 0 105 -8q45 -8 72 -19l-26 -119q-23 11 -58.5 17.5q-35.5 6.5 -80.5 6.5q-35 0 -66.5 -10.5q-31.5 -10.5 -56 -32.5q-24.5 -22 -42 -55q-17.5 -33 -24.5 -78l275 0v-112h-278q11 -89 62.5 -142.5q51.5 -53.5 139.5 -53.5q45 0 80 9q35 9 57 22zM158 798q0 26 18 42q18 16 58 16q39 0 57 -16q18 -16 18 -42q0 -26 -18 -41.5q-18 -15.5 -57 -15.5q-40 0 -58 15.5q-18 15.5 -18 41.5zt0 0zM372 798q0 26 18 42q18 16 57 16q40 0 58 -16q18 -16 18 -42q0 -26 -18 -41.5q-18 -15.5 -58 -15.5q-39 0 -57 15.5t-18 41.5z" />
-<glyph unicode="&#62759;" horiz-adv-x="457" d="M435 31q-30 -22 -75 -33.5q-45 -11.5 -90 -11.5q-60 0 -104 19q-44 19 -72.5 53.5q-28.5 34.5 -42.5 83.5q-14 49 -14 108q0 63 17 112q17 49 48 83q31 34 75 51.5q44 17.5 98 17.5q54 0 90 -9q36 -9 63 -23l-30 -106q-23 11 -48.5 17q-25.5 6 -54.5 6q-47 0 -80.5 -24q-33.5 -24 -43.5 -78l196 0v-88h-197q9 -48 41.5 -78q32.5 -30 90.5 -30q34 0 59 8.5q25 8.5 44 20.5zM82 631q0 32 19.5 51q19.5 19 51.5 19q32 0 50.5 -19q18.5 -19 18.5 -51q0 -30 -18.5 -49q-18.5 -19 -50.5 -19q-32 0 -51.5 19q-19.5 19 -19.5 49zt0 0zM301 631q0 32 18.5 51q18.5 19 50.5 19q32 0 51.5 -19q19.5 -19 19.5 -51q0 -30 -19.5 -49q-19.5 -19 -51.5 -19q-32 0 -50.5 19t-18.5 49z" />
-<glyph unicode="&#62760;" horiz-adv-x="580" d="M519 0h-137v277l-72 -19l-146 -258h-159l144 233l60 43q-32 8 -60 24.5q-28 16.5 -49 42.5q-21 26 -33 61.5q-12 35.5 -12 80.5q0 63 22 106q22 43 61 69.5q39 26.5 93 38q54 11.5 117 11.5q17 0 39 -1q22 -1 45.5 -3q23.5 -2 46 -5q22.5 -3 40.5 -8zM331 588q-27 0 -51 -5q-24 -5 -42 -17q-18 -12 -28.5 -33q-10.5 -21 -10.5 -54q0 -31 10 -52.5q10 -21.5 28 -35q18 -13.5 42 -19.5q24 -6 52 -6h51v217q-11 2 -22.5 3.5q-11.5 1.5 -28.5 1.5zt0 0zM148 856h343v-89l-343 0z" />
-<glyph unicode="&#62761;" horiz-adv-x="503" d="M321 189l-60 -12l-96 -177h-155l97 157l49 37q-49 8 -81 46.5q-32 38.5 -32 96.5q0 91 60.5 134q60.5 43 185.5 43q48 0 89.5 -5q41.5 -5 72.5 -11l0 -498h-130zM321 257v138q-11 5 -24 7q-13 2 -25 2q-45 0 -70 -19q-25 -19 -25 -57q0 -38 27.5 -56q27.5 -18 80.5 -17zM95 658h323v-92l-323 0z" />
-<glyph unicode="&#62762;" horiz-adv-x="580" d="M519 0h-137v277l-72 -19l-146 -258h-159l144 233l60 43q-32 8 -60 24.5q-28 16.5 -49 42.5q-21 26 -33 61.5q-12 35.5 -12 80.5q0 63 22 106q22 43 61 69.5q39 26.5 93 38q54 11.5 117 11.5q17 0 39 -1q22 -1 45.5 -3q23.5 -2 46 -5q22.5 -3 40.5 -8zM331 588q-27 0 -51 -5q-24 -5 -42 -17q-18 -12 -28.5 -33q-10.5 -21 -10.5 -54q0 -31 10 -52.5q10 -21.5 28 -35q18 -13.5 42 -19.5q24 -6 52 -6h51v217q-11 2 -22.5 3.5q-11.5 1.5 -28.5 1.5zt0 0zM245 874q4 -32 23.5 -46q19.5 -14 50.5 -14q67 0 74 59l111 -17q-11 -63 -57.5 -92q-46.5 -29 -128.5 -29q-41 0 -75 6q-34 6 -59.5 19.5q-25.5 13.5 -42 36.5q-16.5 23 -20.5 57z" />
-<glyph unicode="&#62763;" horiz-adv-x="503" d="M321 189l-60 -12l-96 -177h-155l97 157l49 37q-49 8 -81 46.5q-32 38.5 -32 96.5q0 91 60.5 134q60.5 43 185.5 43q48 0 89.5 -5q41.5 -5 72.5 -11l0 -498h-130zM321 257v138q-11 5 -24 7q-13 2 -25 2q-45 0 -70 -19q-25 -19 -25 -57q0 -38 27.5 -56q27.5 -18 80.5 -17zM202 704q7 -39 23.5 -55q16.5 -16 42.5 -16q28 0 44.5 16q16.5 16 22.5 54l99 -25q-12 -65 -59 -96.5q-47 -31.5 -110 -31.5q-31 0 -60 7q-29 7 -52 22.5q-23 15.5 -39 39.5q-16 24 -22 59z" />
-<glyph unicode="&#62764;" horiz-adv-x="897" d="M197 415h93q13 143 84 221q71 78 199 78q76 0 130 -26q54 -26 88.5 -74q34.5 -48 51 -115q16.5 -67 16.5 -149q0 -175 -72 -269.5q-72 -94.5 -214 -94.5q-66 0 -116.5 22q-50.5 22 -85.5 62q-35 40 -55 97q-20 57 -26 126l-93 0v-293h-137v700h137zM430 350q0 -53 7.5 -97.5q7.5 -44.5 24 -76.5q16.5 -32 44 -50q27.5 -18 67.5 -18q73 0 107.5 57q34.5 57 34.5 185q0 51 -6.5 95q-6.5 44 -22.5 77q-16 33 -43.5 51.5q-27.5 18.5 -69.5 18.5q-72 0 -107.5 -58.5q-35.5 -58.5 -35.5 -183.5zt0 0zM283 856h343v-89l-343 0z" />
-<glyph unicode="&#62765;" horiz-adv-x="734" d="M480 -14q-56 0 -95.5 15q-39.5 15 -65 43q-25.5 28 -39 68q-13.5 40 -17.5 90l-76 0v-202h-130v500h130v-188h77q10 97 61.5 149.5q51.5 52.5 156.5 52.5q57 0 98 -19q41 -19 68 -53.5q27 -34.5 39.5 -83.5q12.5 -49 12.5 -108q0 -127 -54 -195.5q-54 -68.5 -166 -68.5zt0 0zM387 250q0 -73 20.5 -113.5q20.5 -40.5 72.5 -40.5q46 0 66 34q20 34 20 120q0 77 -19 115.5q-19 38.5 -70 38.5q-46 0 -68 -35q-22 -35 -22 -119zt0 0zM196 658h323v-92l-323 0z" />
-<glyph unicode="&#62766;" horiz-adv-x="897" d="M197 415h93q13 143 84 221q71 78 199 78q76 0 130 -26q54 -26 88.5 -74q34.5 -48 51 -115q16.5 -67 16.5 -149q0 -175 -72 -269.5q-72 -94.5 -214 -94.5q-66 0 -116.5 22q-50.5 22 -85.5 62q-35 40 -55 97q-20 57 -26 126l-93 0v-293h-137v700h137zM430 350q0 -53 7.5 -97.5q7.5 -44.5 24 -76.5q16.5 -32 44 -50q27.5 -18 67.5 -18q73 0 107.5 57q34.5 57 34.5 185q0 51 -6.5 95q-6.5 44 -22.5 77q-16 33 -43.5 51.5q-27.5 18.5 -69.5 18.5q-72 0 -107.5 -58.5q-35.5 -58.5 -35.5 -183.5zt0 0zM357 874q4 -32 23.5 -46q19.5 -14 50.5 -14q67 0 74 59l111 -17q-11 -63 -57.5 -92q-46.5 -29 -128.5 -29q-41 0 -75 6q-34 6 -59.5 19.5q-25.5 13.5 -42 36.5q-16.5 23 -20.5 57z" />
-<glyph unicode="&#62767;" horiz-adv-x="734" d="M480 -14q-56 0 -95.5 15q-39.5 15 -65 43q-25.5 28 -39 68q-13.5 40 -17.5 90l-76 0v-202h-130v500h130v-188h77q10 97 61.5 149.5q51.5 52.5 156.5 52.5q57 0 98 -19q41 -19 68 -53.5q27 -34.5 39.5 -83.5q12.5 -49 12.5 -108q0 -127 -54 -195.5q-54 -68.5 -166 -68.5zt0 0zM387 250q0 -73 20.5 -113.5q20.5 -40.5 72.5 -40.5q46 0 66 34q20 34 20 120q0 77 -19 115.5q-19 38.5 -70 38.5q-46 0 -68 -35q-22 -35 -22 -119zt0 0zM301 704q7 -39 23.5 -55q16.5 -16 42.5 -16q28 0 44.5 16q16.5 16 22.5 54l99 -25q-12 -65 -59 -96.5q-47 -31.5 -110 -31.5q-31 0 -60 7q-29 7 -52 22.5q-23 15.5 -39 39.5q-16 24 -22 59z" />
-<glyph unicode="&#62768;" horiz-adv-x="669" d="M426 578h-149q-4 -95 -9 -173q-5 -78 -13.5 -140.5q-8.5 -62.5 -22.5 -110.5q-14 -48 -36 -83q-14 -23 -31.5 -38q-17.5 -15 -36.5 -24q-19 -9 -37.5 -12.5q-18.5 -3.5 -34.5 -3.5q-23 0 -38.5 3.5q-15.5 3.5 -30.5 10.5v118q21 -2 27 -3q6 -1 12 -1q16 0 31.5 8q15.5 8 26.5 27q15 22 26 64.5q11 42.5 19.5 108.5q8.5 66 13.5 157.5q5 91.5 7 213.5l413 0v-578h88v-247h-96l-15 125l-114 0z" />
-<glyph unicode="&#62769;" horiz-adv-x="563" d="M329 385h-99q-6 -71 -14 -141q-8 -70 -25.5 -125.5q-17.5 -55.5 -47.5 -90q-30 -34.5 -78 -34.5q-58 0 -82 15l16 108q16 -6 30 -6q20 0 35 17q15 17 25.5 61q10.5 44 17 119.5q6.5 75.5 9.5 191.5l343 0v-385h88v-229h-95l-15 114l-108 0z" />
-<glyph unicode="&#62770;" horiz-adv-x="666" d="M468 388l8 91h-5l-46 -94l-262 -385h-103v700h137v-381l-10 -94h6l49 97l261 378h102v-721q0 -90 -34 -139q-34 -49 -116 -49q-16 0 -33.5 2q-17.5 2 -37.5 6l0 108q4 0 7.5 -0.5q3.5 -0.5 7.5 -0.5q43 0 56 24.5q13 24.5 13 69.5zM273 874q4 -32 23.5 -46q19.5 -14 50.5 -14q67 0 74 59l111 -17q-11 -63 -57.5 -92q-46.5 -29 -128.5 -29q-41 0 -75 6q-34 6 -59.5 19.5q-25.5 13.5 -42 36.5q-16.5 23 -20.5 57z" />
-<glyph unicode="&#62771;" horiz-adv-x="545" d="M358 228l5 71h-3l-42 -73l-179 -226h-82v500h130v-238l-6 -68h4l41 71l180 235h82v-521q0 -91 -36 -139q-36 -48 -115 -48q-30 0 -64 7l0 109q4 0 7.5 -0.5q3.5 -0.5 7.5 -0.5q22 0 35.5 6q13.5 6 21 18q7.5 12 10.5 29.5q3 17.5 3 39.5zM219 704q7 -39 23.5 -55q16.5 -16 42.5 -16q28 0 44.5 16q16.5 16 22.5 54l99 -25q-12 -65 -59 -96.5q-47 -31.5 -110 -31.5q-31 0 -60 7q-29 7 -52 22.5q-23 15.5 -39 39.5q-16 24 -22 59z" />
-<glyph unicode="&#62772;" horiz-adv-x="670" d="M38 350q0 175 77 269.5q77 94.5 220 94.5q75 0 131 -26q56 -26 93 -74q37 -48 55 -115q18 -67 18 -149q0 -175 -77.5 -269.5q-77.5 -94.5 -219.5 -94.5q-76 0 -132 26q-56 26 -92.5 74q-36.5 48 -54.5 115q-18 67 -18 149zt0 0zM182 350q0 -53 9 -97.5q9 -44.5 27.5 -76.5q18.5 -32 47.5 -50q29 -18 69 -18q73 0 113 57q40 57 40 185q0 51 -8.5 95q-8.5 44 -26.5 77q-18 33 -47 51.5q-29 18.5 -71 18.5q-73 0 -113 -58.5q-40 -58.5 -40 -183.5zt0 0zM249 799q0 25 21.5 43q21.5 18 64.5 18q43 0 66 -18q23 -18 23 -43q0 -26 -23 -44q-23 -18 -66 -18q-43 0 -64.5 18t-21.5 44z" />
-<glyph unicode="&#62773;" horiz-adv-x="537" d="M33 250q0 127 62 195.5q62 68.5 174 68.5q60 0 104 -19q44 -19 73 -53.5q29 -34.5 43.5 -83.5q14.5 -49 14.5 -108q0 -127 -61.5 -195.5q-61.5 -68.5 -173.5 -68.5q-60 0 -104 19q-44 19 -73.5 53.5q-29.5 34.5 -44 83.5q-14.5 49 -14.5 108zt0 0zM167 250q0 -33 6 -61q6 -28 18 -49q12 -21 31.5 -32.5q19.5 -11.5 46.5 -11.5q51 0 76 37q25 37 25 117q0 69 -23 111.5q-23 42.5 -78 42.5q-48 0 -75 -36q-27 -36 -27 -118zt0 0zM187 641q0 29 21.5 49.5q21.5 20.5 59.5 20.5q38 0 61.5 -20.5q23.5 -20.5 23.5 -49.5q0 -29 -23.5 -48.5q-23.5 -19.5 -61.5 -19.5q-38 0 -59.5 19.5t-21.5 48.5z" />
-<glyph unicode="&#62774;" horiz-adv-x="798" d="M600 700h137v-700h-137zM60 700h137v-251q11 2 35 5q24 3 47 3q50 0 95.5 -10q45.5 -10 79.5 -35.5q34 -25.5 54 -69q20 -43.5 20 -109.5q0 -122 -71 -182.5q-71 -60.5 -211 -60.5q-14 0 -36 0.5q-22 0.5 -47.5 2.5q-25.5 2 -52.5 5q-27 3 -50 9zM256 112q57 0 92.5 26.5q35.5 26.5 35.5 88.5q0 33 -10 54q-10 21 -27 33q-17 12 -40 16.5q-23 4.5 -50 4.5q-14 0 -33 -2.5q-19 -2.5 -27 -5.5l0 -209q11 -3 26.5 -4.5q15.5 -1.5 32.5 -1.5zt0 0zM332 874q4 -32 23.5 -46q19.5 -14 50.5 -14q67 0 74 59l111 -17q-11 -63 -57.5 -92q-46.5 -29 -128.5 -29q-41 0 -75 6q-34 6 -59.5 19.5q-25.5 13.5 -42 36.5q-16.5 23 -20.5 57z" />
-<glyph unicode="&#62775;" horiz-adv-x="703" d="M187 109q30 -6 57 -6q45 0 63 16.5q18 16.5 18 51.5q0 32 -18 48.5q-18 16.5 -60 16.5q-33 0 -60 -7zM187 322q24 4 48.5 5.5q24.5 1.5 44.5 1.5q51 0 85 -11.5q34 -11.5 55 -32.5q21 -21 30 -49.5q9 -28.5 9 -61.5q0 -45 -12 -79q-12 -34 -39 -56.5q-27 -22.5 -70 -34q-43 -11.5 -106 -11.5q-57 0 -98.5 2q-41.5 2 -76.5 5l0 500h130zM516 500h130v-500h-130zM293 704q7 -39 23.5 -55q16.5 -16 42.5 -16q28 0 44.5 16q16.5 16 22.5 54l99 -25q-12 -65 -59 -96.5q-47 -31.5 -110 -31.5q-31 0 -60 7q-29 7 -52 22.5q-23 15.5 -39 39.5q-16 24 -22 59z" />
-<glyph unicode="&#62776;" horiz-adv-x="526" d="M384 310q-15 0 -21 0q-6 0 -18 -1q-88 -2 -124.5 -28q-36.5 -26 -36.5 -72q0 -26 10.5 -45q10.5 -19 28 -31.5q17.5 -12.5 41 -18.5q23.5 -6 50.5 -6q51 0 92.5 12.5q41.5 12.5 64.5 23.5l37 -108q-14 -9 -35.5 -17.5q-21.5 -8.5 -48.5 -16q-27 -7.5 -57.5 -12q-30.5 -4.5 -63.5 -4.5q-60 0 -108.5 12.5q-48.5 12.5 -83 38q-34.5 25.5 -53 65q-18.5 39.5 -18.5 93.5q0 73 35.5 117.5q35.5 44.5 100.5 57.5l0 5q-58 22 -86 66q-28 44 -28 96q0 48 19.5 81.5q19.5 33.5 53 54.5q33.5 21 77 30q43.5 9 91.5 9q29 0 58.5 -4q29.5 -4 55 -10.5q25.5 -6.5 46 -14q20.5 -7.5 31.5 -14.5l-36 -109q-25 11 -63 20.5q-38 9.5 -74 9.5q-55 0 -85 -18q-30 -18 -30 -60q0 -20 8 -35q8 -15 20.5 -26q12.5 -11 29 -18q16.5 -7 34.5 -10q17 -5 44 -5.5q27 -0.5 45 -0.5h24v-107zM106 798q0 26 18 42q18 16 58 16q39 0 57 -16q18 -16 18 -42q0 -26 -18 -41.5q-18 -15.5 -57 -15.5q-40 0 -58 15.5q-18 15.5 -18 41.5zt0 0zM320 798q0 26 18 42q18 16 57 16q40 0 58 -16q18 -16 18 -42q0 -26 -18 -41.5q-18 -15.5 -58 -15.5q-39 0 -57 15.5t-18 41.5z" />
-<glyph unicode="&#62777;" horiz-adv-x="432" d="M274 207q-32 0 -53.5 -3q-21.5 -3 -34.5 -9.5q-13 -6.5 -18 -16q-5 -9.5 -5 -22.5q0 -26 22.5 -41.5q22.5 -15.5 67.5 -15.5q40 0 73 9q33 9 56 23l28 -101q-26 -15 -67 -28q-41 -13 -96 -13q-110 0 -162 42.5q-52 42.5 -52 108.5q0 51 23.5 80.5q23.5 29.5 73.5 43.5l0 4q-40 14 -59 45.5q-19 31.5 -19 66.5q0 64 46 96.5q46 32.5 125 32.5q62 0 108.5 -12.5q46.5 -12.5 76.5 -29.5l-28 -99q-18 11 -48.5 21q-30.5 10 -69.5 10q-41 0 -60.5 -11q-19.5 -11 -19.5 -38q0 -23 22.5 -37.5q22.5 -14.5 57.5 -14.5h61v-91zM56 631q0 32 19.5 51q19.5 19 51.5 19q32 0 50.5 -19q18.5 -19 18.5 -51q0 -30 -18.5 -49q-18.5 -19 -50.5 -19q-32 0 -51.5 19q-19.5 19 -19.5 49zt0 0zM275 631q0 32 18.5 51q18.5 19 50.5 19q32 0 51.5 -19q19.5 -19 19.5 -51q0 -30 -19.5 -49q-19.5 -19 -51.5 -19q-32 0 -50.5 19t-18.5 49z" />
-<glyph unicode="&#62778;" horiz-adv-x="285" d="M74 700h137v-700h-137zM56 799q0 25 21.5 43q21.5 18 64.5 18q43 0 66 -18q23 -18 23 -43q0 -26 -23 -44q-23 -18 -66 -18q-43 0 -64.5 18t-21.5 44z" />
-<glyph unicode="&#62779;" horiz-adv-x="269" d="M70 500h130v-500l-130 0z" />
-<glyph unicode="&#62780;" horiz-adv-x="508" d="M60 700h415v-122h-278v-173h256v-122h-256v-283l-137 0z" />
-<glyph unicode="&#62781;" horiz-adv-x="408" d="M380 385h-189v-108h169v-104h-169v-173h-134v500l323 0z" />
-<glyph unicode="&#62782;" horiz-adv-x="559" d="M534 29q-24 -17 -58.5 -26.5q-34.5 -9.5 -72.5 -13.5l-14 -164h-88l-19 168q-51 9 -95.5 34q-44.5 25 -77.5 68.5q-33 43.5 -52 106.5q-19 63 -19 148q0 103 28.5 172.5q28.5 69.5 74 112q45.5 42.5 101.5 61q56 18.5 112 18.5q60 0 101.5 -8q41.5 -8 68.5 -19v-116q-50 11 -81.5 16q-31.5 5 -76.5 5q-83 0 -133.5 -59q-50.5 -59 -50.5 -183q0 -54 12 -98.5q12 -44.5 36.5 -76q24.5 -31.5 61 -49q36.5 -17.5 84.5 -17.5q45 0 76 9q31 9 54 23z" />
-<glyph unicode="&#62783;" horiz-adv-x="433" d="M411 31q-38 -27 -94 -38l-14 -168h-88l-19 166q-45 8 -76 30q-31 22 -50.5 55.5q-19.5 33.5 -28 77.5q-8.5 44 -8.5 96q0 127 57 195.5q57 68.5 166 68.5q55 0 88.5 -9q33.5 -9 60.5 -23l-31 -106q-23 11 -45.5 17q-22.5 6 -51.5 6q-54 0 -82 -35.5q-28 -35.5 -28 -113.5q0 -32 7 -59q7 -27 21 -47q14 -20 36.5 -31.5q22.5 -11.5 52.5 -11.5q33 0 56 8.5q23 8.5 41 20.5z" />
-<glyph unicode="&#62784;" horiz-adv-x="647" d="M60 700q21 3 47.5 5q26.5 2 54.5 3q28 1 54.5 1.5q26.5 0.5 47.5 0.5q93 0 159 -26q66 -26 107 -73q41 -47 60 -112q19 -65 19 -143q0 -71 -18 -137q-18 -66 -60 -117q-42 -51 -110.5 -82q-68.5 -31 -169.5 -31q-16 0 -42.5 1q-26.5 1 -55 2.5q-28.5 1.5 -54.5 3q-26 1.5 -39 3.5zM275 588q-22 0 -44.5 -1q-22.5 -1 -33.5 -3l0 -469q4 -1 13.5 -1.5q9.5 -0.5 20.5 -1q11 -0.5 21 -1q10 -0.5 15 -0.5q58 0 96.5 20.5q38.5 20.5 61 54.5q22.5 34 31.5 78.5q9 44.5 9 91.5q0 41 -8 82.5q-8 41.5 -29.5 74.5q-21.5 33 -58.5 54q-37 21 -94 21zt0 0zM302 870h159v-30l-160 -88l-103 0z" />
-<glyph unicode="&#62785;" horiz-adv-x="539" d="M482 176q0 -42 1 -84q1 -42 9 -93l-93 0l-18 65h-4q-20 -35 -57.5 -56.5q-37.5 -21.5 -88.5 -21.5q-94 0 -146 62q-52 62 -52 194q0 128 58 199q58 71 170 71q31 0 51 -3.5q20 -3.5 40 -11.5l0 203h130zM261 96q38 0 60 18.5q22 18.5 31 53.5l0 212q-14 11 -31 16.5q-17 5.5 -44 5.5q-55 0 -82.5 -37q-27.5 -37 -27.5 -127q0 -64 22.5 -103q22.5 -39 71.5 -39zt0 0zM559 700h132v-30l-111 -124l-74 0z" />
-<glyph unicode="&#62786;" horiz-adv-x="651" d="M453 293h-256v-293h-137v700h137v-285h256v285h137v-700h-137zM347 870h159v-30l-160 -88l-103 0z" />
-<glyph unicode="&#62787;" horiz-adv-x="545" d="M363 0v284q0 61 -17 88q-17 27 -62 27q-33 0 -60.5 -22.5q-27.5 -22.5 -36.5 -57.5l0 -319h-130v700h130v-256h4q24 32 59 51q35 19 89 19q38 0 67 -10q29 -10 48.5 -33q19.5 -23 29 -62.5q9.5 -39.5 9.5 -97.5v-311zM322 720h132v-30l-111 -124l-74 0z" />
-<glyph unicode="&#62788;" horiz-adv-x="514" d="M503 0h-443v700h137v-578h306zM302 700h132v-30l-111 -124l-74 0z" />
-<glyph unicode="&#62789;" horiz-adv-x="294" d="M191 168q0 -35 9 -51q9 -16 29 -16q12 0 23.5 2q11.5 2 28.5 9l14 -102q-16 -8 -49 -16q-33 -8 -68 -8q-57 0 -87 26.5q-30 26.5 -30 87.5v600h130zM269 700h132v-30l-111 -124l-74 0z" />
-<glyph unicode="&#62790;" horiz-adv-x="568" d="M557 578h-204v-578h-137v578h-205v122h546zM322 870h159v-30l-160 -88l-103 0z" />
-<glyph unicode="&#62791;" horiz-adv-x="349" d="M5 500h69v94l130 37v-131h122v-110h-122v-192q0 -52 10.5 -74.5q10.5 -22.5 39.5 -22.5q20 0 34.5 4q14.5 4 32.5 12l23 -100q-27 -13 -63 -22q-36 -9 -73 -9q-69 0 -101.5 35.5q-32.5 35.5 -32.5 116.5v252h-69zM304 700h132v-30l-111 -124l-74 0z" />
-<glyph unicode="&#62792;" horiz-adv-x="602" d="M290 289l18 -119h5l20 120l134 410h144l-260 -705h-98l-262 705h159zM340 870h159v-30l-160 -88l-103 0z" />
-<glyph unicode="&#62793;" horiz-adv-x="477" d="M230 238l17 -77h5l14 79l85 260h140l-209 -505h-79l-217 505h151zM239 720h132v-30l-111 -124l-74 0z" />
-<glyph unicode="&#62794;" horiz-adv-x="526" d="M120 310v107h24q9 0 22 0q13 0 26.5 0.5q13.5 0.5 26.5 2q13 1.5 21 3.5q35 8 60 28.5q25 20.5 25 55.5q0 48 -30.5 65.5q-30.5 17.5 -80.5 17.5q-45 0 -84 -12q-39 -12 -59 -23l-35 116q11 6 31.5 13q20.5 7 47 13.5q26.5 6.5 57.5 10.5q31 4 63 4q44 0 86 -8q42 -8 75 -28q33 -20 53 -53.5q20 -33.5 20 -85.5q0 -52 -27.5 -96q-27.5 -44 -88.5 -64l0 -5q65 -13 101.5 -56q36.5 -43 36.5 -115q0 -57 -23 -97.5q-23 -40.5 -60.5 -66.5q-37.5 -26 -86.5 -38.5q-49 -12.5 -100 -12.5q-66 0 -120 11q-54 11 -83 26l35 119q23 -11 66 -22.5q43 -11.5 102 -11.5q22 0 44.5 5.5q22.5 5.5 40.5 18q18 12.5 29 32.5q11 20 11 48q0 47 -35 71q-35 24 -125 26q-12 1 -18 1q-6 0 -21 0z" />
-<glyph unicode="&#62795;" horiz-adv-x="437" d="M101 132v90h61q18 0 34 7.5q16 7.5 28.5 20q12.5 12.5 20 29.5q7.5 17 7.5 36q0 44 -22.5 64.5q-22.5 20.5 -70.5 20.5q-39 0 -62.5 -9.5q-23.5 -9.5 -41.5 -20.5l-28 98q30 17 74.5 29q44.5 12 102.5 12q91 0 135 -43q44 -43 44 -114q0 -53 -27 -94.5q-27 -41.5 -65 -58.5l0 -4q25 -8 47.5 -21.5q22.5 -13.5 38.5 -35q16 -21.5 25.5 -52q9.5 -30.5 9.5 -73.5q0 -55 -19.5 -96.5q-19.5 -41.5 -52.5 -70q-33 -28.5 -76.5 -43q-43.5 -14.5 -92.5 -14.5q-51 0 -90.5 11.5q-39.5 11.5 -66.5 26.5l36 101q23 -13 50 -21.5q27 -8.5 54 -8.5q24 0 46.5 6.5q22.5 6.5 40.5 20q18 13.5 29 35.5q11 22 11 53q0 59 -36.5 89q-36.5 30 -100.5 30z" />
-<glyph unicode="&#62796;" horiz-adv-x="526" d="M120 310v107h24q9 0 22 0q13 0 26.5 0.5q13.5 0.5 26.5 2q13 1.5 21 3.5q35 8 60 28.5q25 20.5 25 55.5q0 48 -30.5 65.5q-30.5 17.5 -80.5 17.5q-45 0 -84 -12q-39 -12 -59 -23l-35 116q11 6 31.5 13q20.5 7 47 13.5q26.5 6.5 57.5 10.5q31 4 63 4q44 0 86 -8q42 -8 75 -28q33 -20 53 -53.5q20 -33.5 20 -85.5q0 -52 -27.5 -96q-27.5 -44 -88.5 -64l0 -5q65 -13 101.5 -56q36.5 -43 36.5 -115q0 -57 -23 -97.5q-23 -40.5 -60.5 -66.5q-37.5 -26 -86.5 -38.5q-49 -12.5 -100 -12.5q-66 0 -120 11q-54 11 -83 26l35 119q23 -11 66 -22.5q43 -11.5 102 -11.5q22 0 44.5 5.5q22.5 5.5 40.5 18q18 12.5 29 32.5q11 20 11 48q0 47 -35 71q-35 24 -125 26q-12 1 -18 1q-6 0 -21 0zM283 737h-94l-127 94v39h105l53 -45l19 -30l21 29l56 46h100l0 -40z" />
-<glyph unicode="&#62797;" horiz-adv-x="437" d="M101 132v90h61q18 0 34 7.5q16 7.5 28.5 20q12.5 12.5 20 29.5q7.5 17 7.5 36q0 44 -22.5 64.5q-22.5 20.5 -70.5 20.5q-39 0 -62.5 -9.5q-23.5 -9.5 -41.5 -20.5l-28 98q30 17 74.5 29q44.5 12 102.5 12q91 0 135 -43q44 -43 44 -114q0 -53 -27 -94.5q-27 -41.5 -65 -58.5l0 -4q25 -8 47.5 -21.5q22.5 -13.5 38.5 -35q16 -21.5 25.5 -52q9.5 -30.5 9.5 -73.5q0 -55 -19.5 -96.5q-19.5 -41.5 -52.5 -70q-33 -28.5 -76.5 -43q-43.5 -14.5 -92.5 -14.5q-51 0 -90.5 11.5q-39.5 11.5 -66.5 26.5l36 101q23 -13 50 -21.5q27 -8.5 54 -8.5q24 0 46.5 6.5q22.5 6.5 40.5 20q18 13.5 29 35.5q11 22 11 53q0 59 -36.5 89q-36.5 30 -100.5 30zM244 550h-91l-115 182h110l39 -66l16 -49l18 49l45 66l101 0z" />
-<glyph unicode="&#63020;" horiz-adv-x="223" d="M185 443q0 -29 -19.5 -46.5q-19.5 -17.5 -48.5 -17.5q-37 0 -58 23.5q-21 23.5 -21 62.5q0 40 12.5 68q12.5 28 30 46.5q17.5 18.5 36.5 29q19 10.5 33 15.5l32 -54q-20 -8 -34 -25.5q-14 -17.5 -16 -37.5q20 0 36.5 -17.5t16.5 -46.5z" />
-<glyph unicode="&#63021;" horiz-adv-x="223" d="M38 469q0 29 19.5 47q19.5 18 49.5 18q36 0 57 -24q21 -24 21 -63q0 -40 -12.5 -68q-12.5 -28 -30 -46.5q-17.5 -18.5 -37 -29q-19.5 -10.5 -32.5 -15.5l-33 55q20 9 35.5 24q15.5 15 17.5 38q-20 -1 -37.5 15.5t-17.5 48.5z" />
-<glyph unicode="&#63022;" horiz-adv-x="396" d="M358 443q0 -29 -19.5 -46.5q-19.5 -17.5 -48.5 -17.5q-37 0 -58 23.5q-21 23.5 -21 62.5q0 40 12.5 68q12.5 28 30 46.5q17.5 18.5 36.5 29q19 10.5 33 15.5l32 -54q-20 -8 -34 -25.5q-14 -17.5 -16 -37.5q20 0 36.5 -17.5q16.5 -17.5 16.5 -46.5zt0 0zM185 443q0 -29 -19.5 -46.5q-19.5 -17.5 -48.5 -17.5q-37 0 -58 23.5q-21 23.5 -21 62.5q0 40 12.5 68q12.5 28 30 46.5q17.5 18.5 36.5 29q19 10.5 33 15.5l32 -54q-20 -8 -34 -25.5q-14 -17.5 -16 -37.5q20 0 36.5 -17.5t16.5 -46.5z" />
-<glyph unicode="&#63023;" horiz-adv-x="396" d="M211 468q0 29 19.5 47q19.5 18 49.5 18q36 0 57 -24q21 -24 21 -63q0 -40 -12.5 -68q-12.5 -28 -30 -46.5q-17.5 -18.5 -37 -29q-19.5 -10.5 -32.5 -15.5l-33 55q20 9 35.5 24q15.5 15 17.5 38q-20 -1 -37.5 15.5q-17.5 16.5 -17.5 48.5zt0 0zM38 468q0 29 19.5 47q19.5 18 49.5 18q36 0 57 -24q21 -24 21 -63q0 -40 -12.5 -68q-12.5 -28 -30 -46.5q-17.5 -18.5 -37 -29q-19.5 -10.5 -32.5 -15.5l-33 55q20 9 35.5 24q15.5 15 17.5 38q-20 -1 -37.5 15.5t-17.5 48.5z" />
-<glyph unicode="&#63028;" horiz-adv-x="254" d="M90 525h114l-36 -216l-78 0z" />
-<glyph unicode="&#63029;" horiz-adv-x="402" d="M90 526h114l-36 -216h-78zM238 526h114l-36 -216l-78 0z" />
-<glyph unicode="&#63074;" horiz-adv-x="412" d="M169 544l11 46l-31 -32l-59 -39l-49 77l158 111h85v-427l-115 0z" />
-<glyph unicode="&#63171;" horiz-adv-x="267" d="M60 -105q0 29 19.5 46q19.5 17 48.5 17q35 0 57 -23q22 -23 22 -65q0 -33 -11 -58q-11 -25 -27 -42.5q-16 -17.5 -34 -28q-18 -10.5 -31 -14.5l-34 54q14 7 28 19.5q14 12.5 16 33.5q-20 -1 -37 14.5t-17 46.5z" />
-<glyph unicode="&#63177;" horiz-adv-x="383" d="M164 870h159v-30l-160 -88l-103 0z" />
-<glyph unicode="&#63178;" horiz-adv-x="474" d="M281 737h-94l-127 94v39h105l53 -45l19 -30l21 29l56 46h100l0 -40z" />
-<glyph unicode="&#63179;" horiz-adv-x="485" d="M60 798q0 26 18 42q18 16 58 16q39 0 57 -16q18 -16 18 -42q0 -26 -18 -41.5q-18 -15.5 -57 -15.5q-40 0 -58 15.5q-18 15.5 -18 41.5zt0 0zM274 798q0 26 18 42q18 16 57 16q40 0 58 -16q18 -16 18 -42q0 -26 -18 -41.5q-18 -15.5 -58 -15.5q-39 0 -57 15.5t-18 41.5z" />
-<glyph unicode="&#63182;" horiz-adv-x="383" d="M323 752h-105l-158 88v30l159 0z" />
-<glyph unicode="&#63183;" horiz-adv-x="517" d="M119 850h134v-16l-100 -93h-93zM317 850h140v-16l-143 -93l-94 0z" />
-<glyph unicode="&#63184;" horiz-adv-x="463" d="M60 856h343v-89l-343 0z" />
-<glyph unicode="&#63185;" horiz-adv-x="503" d="M184 874q4 -32 23.5 -46q19.5 -14 50.5 -14q67 0 74 59l111 -17q-11 -63 -57.5 -92q-46.5 -29 -128.5 -29q-41 0 -75 6q-34 6 -59.5 19.5q-25.5 13.5 -42 36.5q-16.5 23 -20.5 57z" />
-<glyph unicode="&#63188;" horiz-adv-x="462" d="M170 704q7 -39 23.5 -55q16.5 -16 42.5 -16q28 0 44.5 16q16.5 16 22.5 54l99 -25q-12 -65 -59 -96.5q-47 -31.5 -110 -31.5q-31 0 -60 7q-29 7 -52 22.5q-23 15.5 -39 39.5q-16 24 -22 59z" />
-<glyph unicode="&#64257;" horiz-adv-x="553" d="M492 500v-500h-130v390h-151v-390h-130v390h-69v110h69v28q0 95 49 138.5q49 43.5 142 43.5q69 0 122.5 -10.5q53.5 -10.5 86.5 -29.5l-34 -101q-26 14 -63 22.5q-37 8.5 -82 8.5q-29 0 -47 -6.5q-18 -6.5 -28 -19q-10 -12.5 -13 -31.5q-3 -19 -3 -43z" />
-<glyph unicode="&#64258;" horiz-adv-x="593" d="M360 596q-13 3 -35.5 5q-22.5 2 -43.5 2q-23 0 -37 -7q-14 -7 -21.5 -20q-7.5 -13 -9.5 -32.5q-2 -19.5 -2 -43.5l75 0v-110h-75v-390h-130v390h-69v110h69v28q0 94 45.5 139.5q45.5 45.5 156.5 45.5q23 0 53 -2q30 -2 59.5 -4.5q29.5 -2.5 55 -5.5q25.5 -3 39.5 -6l0 -527q0 -35 9 -51q9 -16 28 -16q12 0 23.5 2q11.5 2 28.5 9l15 -102q-16 -8 -49.5 -16q-33.5 -8 -68.5 -8q-57 0 -86.5 26.5q-29.5 26.5 -29.5 87.5z" />
diff --git a/admin/survey/Fonts/PTSans/PTS75F_W.ttf b/admin/survey/Fonts/PTSans/PTS75F_W.ttf
deleted file mode 100644
index 4f038bd..0000000
--- a/admin/survey/Fonts/PTSans/PTS75F_W.ttf
+++ /dev/null
Binary files differ
diff --git a/admin/survey/Fonts/PTSans/PTS75F_W.woff b/admin/survey/Fonts/PTSans/PTS75F_W.woff
deleted file mode 100644
index 7c7edc3..0000000
--- a/admin/survey/Fonts/PTSans/PTS75F_W.woff
+++ /dev/null
Binary files differ
diff --git a/admin/survey/Fonts/PTSans/PTS76F_W.eot b/admin/survey/Fonts/PTSans/PTS76F_W.eot
deleted file mode 100644
index dcad7e9..0000000
--- a/admin/survey/Fonts/PTSans/PTS76F_W.eot
+++ /dev/null
Binary files differ
diff --git a/admin/survey/Fonts/PTSans/PTS76F_W.svg b/admin/survey/Fonts/PTSans/PTS76F_W.svg
deleted file mode 100644
index b50e5e6..0000000
--- a/admin/survey/Fonts/PTSans/PTS76F_W.svg
+++ /dev/null
@@ -1,728 +0,0 @@
-<?xml version="1.0" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
-<svg xmlns="http://www.w3.org/2000/svg">
-<metadata>
-Generated by SVGconv.
-Copyright : Copyright 2009 ParaType Ltd. All rights reserved.
-Designer : A.Korolkova, O.Umpeleva, V.Yefimov
-Foundry : ParaType Ltd
-Foundry URL : http://www.paratype.com
-</metadata>
-<defs>
-<font id="PTSans-BoldItalic" horiz-adv-x="515" >
-<font-face units-per-em="1000" ascent="1018" descent="276" />
-<missing-glyph horiz-adv-x="750" />
-<glyph unicode="&#32;" horiz-adv-x="253" />
-<glyph unicode="&#33;" horiz-adv-x="283" d="M217 700h128l-70 -329l-59 -163h-78l9 163zM74 66q0 35 22 55.5q22 20.5 58 20.5q37 0 59 -20.5q22 -20.5 22 -55.5q0 -35 -22 -56q-22 -21 -59 -21q-36 0 -58 21t-22 56z" />
-<glyph unicode="&#34;" horiz-adv-x="354" d="M115 700h108l-79 -216h-75zM256 700h108l-79 -216l-75 0z" />
-<glyph unicode="&#35;" horiz-adv-x="545" d="M318 205h-89l-36 -154h-107l36 154h-74l22 97h75l25 106h-72l22 97h73l35 144h107l-35 -144h89l35 144h107l-35 -144h72l-25 -97h-70l-25 -106h69l-24 -97h-68l-36 -154h-107zM252 302h89l25 106l-89 0z" />
-<glyph unicode="&#36;" horiz-adv-x="545" d="M192 -10q-52 7 -84 23q-32 16 -49 30l47 97q14 -10 42.5 -23q28.5 -13 66.5 -20l47 221q-23 15 -45 32.5q-22 17.5 -39.5 40q-17.5 22.5 -28 51q-10.5 28.5 -10.5 66.5q0 48 16.5 84q16.5 36 45 61q28.5 25 65.5 39q37 14 79 19l20 89h99l-19 -90q38 -5 67 -14.5q29 -9.5 50 -20.5l-50 -102q-14 8 -38 16q-24 8 -53 13l-43 -203q23 -16 46 -34q23 -18 41 -41.5q18 -23.5 29 -53q11 -29.5 11 -67.5q0 -48 -16 -85.5q-16 -37.5 -44.5 -64.5q-28.5 -27 -68 -43q-39.5 -16 -86.5 -21l-18 -89h-99zM272 94q53 4 78 31q25 27 25 63q0 32 -18 54q-18 22 -45 42zM364 606q-48 -2 -71.5 -25q-23.5 -23 -23.5 -57q0 -29 16.5 -49.5q16.5 -20.5 42.5 -40.5z" />
-<glyph unicode="&#37;" horiz-adv-x="804" d="M54 499q0 54 18.5 94q18.5 40 48.5 66.5q30 26.5 66.5 39.5q36.5 13 72.5 13q66 0 100.5 -30.5q34.5 -30.5 34.5 -89.5q0 -57 -17 -98.5q-17 -41.5 -46 -68.5q-29 -27 -66.5 -40q-37.5 -13 -77.5 -13q-62 0 -98 34.5q-36 34.5 -36 92.5zt0 0zM164 505q-1 -22 10 -35.5q11 -13.5 32 -13.5q33 0 56 34.5q23 34.5 23 88.5q0 49 -43 49q-17 0 -31 -10q-14 -10 -25 -26.5q-11 -16.5 -17 -39q-6 -22.5 -5 -47.5zt0 0zM420 127q0 54 18.5 94q18.5 40 48.5 66.5q30 26.5 66.5 39.5q36.5 13 72.5 13q66 0 100.5 -30.5q34.5 -30.5 34.5 -89.5q0 -57 -17 -98.5q-17 -41.5 -46 -68.5q-29 -27 -66.5 -40q-37.5 -13 -77.5 -13q-62 0 -98 34.5q-36 34.5 -36 92.5zt0 0zM530 133q-1 -22 10 -35.5q11 -13.5 32 -13.5q33 0 56 34.5q23 34.5 23 88.5q0 49 -43 49q-17 0 -31 -10q-14 -10 -25 -26.5q-11 -16.5 -17 -39q-6 -22.5 -5 -47.5zt0 0zM656 714l73 -66l-576 -662l-73 69z" />
-<glyph unicode="&#38;" horiz-adv-x="783" d="M73 162q0 46 18.5 87q18.5 41 49 75q30.5 34 69 61.5q38.5 27.5 79.5 47.5q-17 33 -21.5 60q-4.5 27 -4.5 54q0 33 11 63q11 30 35 53q24 23 61 37q37 14 88 14q40 0 65.5 -10q25.5 -10 40.5 -26.5q15 -16.5 20.5 -37q5.5 -20.5 5.5 -40.5q0 -51 -40.5 -97.5q-40.5 -46.5 -115.5 -87.5q22 -54 45.5 -99q23.5 -45 55.5 -89q26 25 52 62.5q26 37.5 48 76.5l79 -50q-10 -18 -25 -39.5q-15 -21.5 -31.5 -43.5q-16.5 -22 -33 -41.5q-16.5 -19.5 -29.5 -33.5q24 -29 52.5 -54.5q28.5 -25.5 56.5 -37.5l-87 -96q-15 6 -31 17.5q-16 11.5 -31.5 25q-15.5 13.5 -29.5 28.5q-14 15 -24 29q-43 -33 -99.5 -58.5q-56.5 -25.5 -131.5 -25.5q-46 0 -82.5 13.5q-36.5 13.5 -62 37q-25.5 23.5 -39 55.5q-13.5 32 -13.5 70zt0 0zM443 149q-37 53 -66 105.5q-29 52.5 -48 99.5q-59 -40 -92.5 -80.5q-33.5 -40.5 -33.5 -87.5q0 -42 27 -66q27 -24 80 -24q38 0 74.5 16.5q36.5 16.5 58.5 36.5zt0 0zM384 553q0 -22 3.5 -37.5q3.5 -15.5 14.5 -39.5q42 25 65 49q23 24 23 51q0 19 -9 30q-9 11 -34 11q-31 0 -47 -19t-16 -45z" />
-<glyph unicode="&#39;" horiz-adv-x="218" d="M137 700h108l-79 -216l-75 0z" />
-<glyph unicode="&#40;" horiz-adv-x="310" d="M157 -218q-29 38 -47 77.5q-18 39.5 -29 78.5q-11 39 -15 76.5q-4 37.5 -4 72.5q0 96 23 186.5q23 90.5 61.5 171q38.5 80.5 89.5 148.5q51 68 107 119l64 -54q-47 -52 -87.5 -116.5q-40.5 -64.5 -70.5 -137.5q-30 -73 -47.5 -151.5q-17.5 -78.5 -17.5 -158.5q0 -63 9 -124.5q9 -61.5 41 -133.5z" />
-<glyph unicode="&#41;" horiz-adv-x="310" d="M183 711q45 -60 65.5 -135.5q20.5 -75.5 20.5 -166.5q0 -96 -22.5 -187q-22.5 -91 -61 -172q-38.5 -81 -89 -150q-50.5 -69 -106.5 -120l-67 55q45 50 86 115.5q41 65.5 71.5 139.5q30.5 74 48.5 152q18 78 18 153q0 83 -12 146.5q-12 63.5 -39 113.5z" />
-<glyph unicode="&#42;" horiz-adv-x="356" d="M182 731l28 -46l15 -59l15 55l28 49l63 -35l-30 -52l-47 -43l64 16h57v-73h-54l-61 16l50 -47l25 -42l-64 -37l-27 46l-20 64l-13 -58l-29 -49l-65 37l30 49l45 37l-55 -16h-59v74h59l59 -17l-50 44l-28 50z" />
-<glyph unicode="&#43;" horiz-adv-x="505" d="M58 394h162v169h117v-169h163v-112h-163v-171h-117v171l-162 0z" />
-<glyph unicode="&#44;" horiz-adv-x="226" d="M60 -5q-17 1 -32 17q-15 16 -15 42q0 40 25.5 62q25.5 22 60.5 22q35 0 52 -22.5q17 -22.5 17 -51.5v-2q-1 -49 -20 -85.5q-19 -36.5 -45.5 -62q-26.5 -25.5 -55 -41q-28.5 -15.5 -47.5 -21.5l-26 54q29 11 53 36t33 53z" />
-<glyph unicode="&#45;" horiz-adv-x="343" d="M81 340h239l-25 -104l-239 0z" />
-<glyph unicode="&#46;" horiz-adv-x="251" d="M33 66q0 35 22 55.5q22 20.5 58 20.5q37 0 59 -20.5q22 -20.5 22 -55.5q0 -35 -22 -56q-22 -21 -59 -21q-36 0 -58 21t-22 56z" />
-<glyph unicode="&#47;" horiz-adv-x="388" d="M432 712l86 -46l-510 -808l-85 48z" />
-<glyph unicode="&#48;" horiz-adv-x="545" d="M55 229q0 104 23.5 192.5q23.5 88.5 65.5 153.5q42 65 99.5 102q57.5 37 125.5 37q39 0 73.5 -12q34.5 -12 60.5 -40q26 -28 41 -75q15 -47 15 -116q0 -93 -21.5 -180.5q-21.5 -87.5 -62 -155q-40.5 -67.5 -99 -108.5q-58.5 -41 -131.5 -41q-49 0 -85 19q-36 19 -59 51.5q-23 32.5 -34.5 77q-11.5 44.5 -11.5 95.5zt0 0zM179 230q0 -41 7 -67q7 -26 18.5 -41q11.5 -15 27.5 -20.5q16 -5.5 34 -5.5q35 0 65.5 33q30.5 33 53.5 86q23 53 36.5 119.5q13.5 66.5 13.5 134.5q0 31 -3.5 56q-3.5 25 -13 42.5q-9.5 17.5 -25.5 27q-16 9.5 -41 9.5q-33 0 -64 -31q-31 -31 -55.5 -82.5q-24.5 -51.5 -39 -119.5t-14.5 -141z" />
-<glyph unicode="&#49;" horiz-adv-x="545" d="M81 110h132l85 395l28 68l-58 -59l-97 -62l-39 77l257 183h70l-128 -602h129l-23 -110l-379 0z" />
-<glyph unicode="&#50;" horiz-adv-x="545" d="M540 560q0 -56 -26 -113.5q-26 -57.5 -66 -112.5q-40 -55 -88 -104q-48 -49 -91 -88l-59 -41v-5l70 14h179l-23 -110h-400l14 67q28 26 66 61.5q38 35.5 79 76q41 40.5 80.5 84q39.5 43.5 70.5 85.5q31 42 50.5 81q19.5 39 19.5 71q0 33 -17 54q-17 21 -65 21q-31 0 -63.5 -14.5q-32.5 -14.5 -64.5 -37.5l-30 94q48 35 96.5 53q48.5 18 112.5 18q74 0 114.5 -42.5t40.5 -111.5z" />
-<glyph unicode="&#51;" horiz-adv-x="545" d="M193 389l147 165l64 45l-76 -9h-159l24 110h363l-15 -71l-171 -190l-48 -27v-5l40 6q20 -2 42.5 -12q22.5 -10 41.5 -29.5q19 -19.5 31.5 -50q12.5 -30.5 12.5 -74.5q0 -57 -18.5 -105q-18.5 -48 -55.5 -82.5q-37 -34.5 -92 -54q-55 -19.5 -127 -19.5q-43 0 -87 8q-44 8 -69 23l57 111q20 -13 49 -21q29 -8 67 -8q39 0 67.5 11q28.5 11 47.5 29q19 18 28 41.5q9 23.5 9 47.5q0 48 -25.5 70q-25.5 22 -92.5 22l-70 0z" />
-<glyph unicode="&#52;" horiz-adv-x="545" d="M535 195h-105l-41 -195h-115l41 195h-287l15 74l393 436h102l-86 -407h105zM370 452l26 84h-3l-48 -72l-126 -135l-55 -38l62 7l111 0z" />
-<glyph unicode="&#53;" horiz-adv-x="545" d="M201 99q42 0 72 12q30 12 49.5 32q19.5 20 29 46q9.5 26 9.5 55q0 50 -30.5 71q-30.5 21 -101.5 21l-77 -3l77 367h327l-25 -122h-220l-29 -138l37 4q40 0 70.5 -13q30.5 -13 51.5 -36q21 -23 32 -55q11 -32 11 -69q0 -138 -78 -211.5q-78 -73.5 -224 -73.5q-20 0 -41 2.5q-21 2.5 -40.5 6.5q-19.5 4 -36 9.5q-16.5 5.5 -28.5 11.5l56 106q20 -10 45.5 -16.5t63.5 -6.5z" />
-<glyph unicode="&#54;" horiz-adv-x="545" d="M516 255q0 -54 -16 -103q-16 -49 -48.5 -85.5q-32.5 -36.5 -81.5 -58.5q-49 -22 -114 -22q-32 0 -66.5 11.5q-34.5 11.5 -63 38q-28.5 26.5 -46.5 69.5q-18 43 -18 106q0 102 38 190.5q38 88.5 100.5 155q62.5 66.5 142.5 107.5q80 41 165 50l7 -103q-50 -8 -98 -28.5q-48 -20.5 -89.5 -52q-41.5 -31.5 -73.5 -71.5q-32 -40 -49 -86q27 29 66.5 44q39.5 15 81.5 15q77 0 120 -48.5q43 -48.5 43 -128.5zt0 0zM394 232q0 40 -20.5 65q-20.5 25 -68.5 25q-38 0 -71 -17q-33 -17 -50 -43q-2 -10 -3.5 -22.5q-1.5 -12.5 -1.5 -20.5q0 -54 22.5 -88.5q22.5 -34.5 69.5 -34.5q57 0 90 38t33 98z" />
-<glyph unicode="&#55;" horiz-adv-x="545" d="M62 0l329 539l51 49l-58 -10h-235l25 122h430l-8 -38l-405 -662z" />
-<glyph unicode="&#56;" horiz-adv-x="545" d="M54 153q0 38 13 70.5q13 32.5 35 59q22 26.5 51 46.5q29 20 61 32q-14 13 -26.5 26.5q-12.5 13.5 -22 30.5q-9.5 17 -15 39.5q-5.5 22.5 -5.5 52.5q0 49 18.5 87.5q18.5 38.5 50.5 64q32 25.5 74 39q42 13.5 89 13.5q84 0 128 -43.5q44 -43.5 44 -111.5q0 -35 -11.5 -63.5q-11.5 -28.5 -31 -52.5q-19.5 -24 -45 -43.5q-25.5 -19.5 -53.5 -34.5q45 -35 64.5 -74.5q19.5 -39.5 19.5 -85.5q0 -51 -18.5 -91.5q-18.5 -40.5 -51.5 -69q-33 -28.5 -79 -43.5q-46 -15 -101 -15q-39 0 -73.5 11q-34.5 11 -60 32q-25.5 21 -40 52q-14.5 31 -14.5 72zt0 0zM374 190q0 23 -7.5 41q-7.5 18 -20 32.5q-12.5 14.5 -29.5 27q-17 12.5 -35 23.5q-51 -26 -81 -60.5q-30 -34.5 -30 -76.5q0 -35 21 -58q21 -23 69 -23q22 0 42.5 6q20.5 6 36.5 17.5q16 11.5 25 29q9 17.5 9 41.5zt0 0zM263 511q0 -35 22 -59.5q22 -24.5 56 -44.5q18 13 34 28q16 15 28.5 31q12.5 16 20 33q7.5 17 7.5 33q0 36 -18 54q-18 18 -51 18q-42 0 -70.5 -24t-28.5 -69z" />
-<glyph unicode="&#57;" horiz-adv-x="545" d="M99 456q0 60 20 108q20 48 55.5 81q35.5 33 83 51q47.5 18 103.5 18q42 0 78 -13q36 -13 62.5 -40.5q26.5 -27.5 42 -69q15.5 -41.5 15.5 -98.5q0 -80 -20.5 -147.5q-20.5 -67.5 -55 -122.5q-34.5 -55 -80 -98q-45.5 -43 -95.5 -73q-50 -30 -101.5 -46.5q-51.5 -16.5 -97.5 -19.5l-6 102q55 10 103.5 31.5q48.5 21.5 87.5 51q39 29.5 67.5 66q28.5 36.5 44.5 75.5q-29 -23 -63 -34.5q-34 -11.5 -82 -11.5q-28 0 -57 10.5q-29 10.5 -52 33q-23 22.5 -38 59q-15 36.5 -15 87.5zt0 0zM221 475q0 -29 7.5 -48q7.5 -19 20.5 -31q13 -12 28.5 -17q15.5 -5 32.5 -5q38 0 71 12q33 12 52 32q3 11 5.5 31q2.5 20 2.5 29q0 57 -22.5 92.5q-22.5 35.5 -73.5 35.5q-24 0 -46 -7.5q-22 -7.5 -39.5 -23.5q-17.5 -16 -28 -41t-10.5 -59z" />
-<glyph unicode="&#58;" horiz-adv-x="314" d="M90 66q0 35 22 55.5q22 20.5 58 20.5q37 0 59 -20.5q22 -20.5 22 -55.5q0 -35 -22 -56q-22 -21 -59 -21q-36 0 -58 21q-22 21 -22 56zt0 0zM165 428q0 35 22 55.5q22 20.5 58 20.5q37 0 59 -20.5q22 -20.5 22 -55.5q0 -35 -22 -56q-22 -21 -59 -21q-36 0 -58 21t-22 56z" />
-<glyph unicode="&#59;" horiz-adv-x="307" d="M138 -5q-17 1 -32 17q-15 16 -15 42q0 40 25.5 62q25.5 22 60.5 22q35 0 52 -22.5q17 -22.5 17 -51.5v-2q-1 -49 -20 -85.5q-19 -36.5 -45.5 -62q-26.5 -25.5 -55 -41q-28.5 -15.5 -47.5 -21.5l-26 54q29 11 53 36q24 25 33 53zt0 0zM158 428q0 35 22 55.5q22 20.5 58 20.5q37 0 59 -20.5q22 -20.5 22 -55.5q0 -35 -22 -56q-22 -21 -59 -21q-36 0 -58 21t-22 56z" />
-<glyph unicode="&#60;" horiz-adv-x="505" d="M51 285v70l386 231l57 -90l-224 -139l-91 -35l90 -31l230 -137l-57 -90z" />
-<glyph unicode="&#61;" horiz-adv-x="505" d="M58 490h442v-112h-442zM58 298h442v-112l-442 0z" />
-<glyph unicode="&#62;" horiz-adv-x="505" d="M508 365v-70l-387 -231l-56 91l223 138l91 36l-90 30l-229 138l56 89z" />
-<glyph unicode="&#63;" horiz-adv-x="430" d="M127 208q6 54 24.5 92.5q18.5 38.5 43 67q24.5 28.5 52 50q27.5 21.5 50 41.5q22.5 20 37.5 41q15 21 15 49q0 27 -15.5 42q-15.5 15 -55.5 15q-31 0 -68 -13.5q-37 -13.5 -65 -32.5l-31 94q41 25 89 42.5q48 17.5 117 17.5q84 0 123 -35.5q39 -35.5 39 -95.5q0 -53 -16 -89.5q-16 -36.5 -41 -64q-25 -27.5 -55 -49q-30 -21.5 -57.5 -45.5q-27.5 -24 -49.5 -54q-22 -30 -30 -73zM82 66q0 35 22 55.5q22 20.5 58 20.5q37 0 59 -20.5q22 -20.5 22 -55.5q0 -35 -22 -56q-22 -21 -59 -21q-36 0 -58 21t-22 56z" />
-<glyph unicode="&#64;" horiz-adv-x="1059" d="M706 484h70l-49 -271q-2 -12 -3 -22.5q-1 -10.5 -1 -18.5q0 -48 37 -48q26 0 51.5 12q25.5 12 45.5 37q20 25 32 63q12 38 12 90q0 75 -25 128.5q-25 53.5 -68.5 88q-43.5 34.5 -102.5 50.5q-59 16 -126 16q-78 0 -145.5 -28q-67.5 -28 -117 -77.5q-49.5 -49.5 -77.5 -117q-28 -67.5 -28 -146.5q0 -78 23.5 -140q23.5 -62 69 -106q45.5 -44 112 -67.5q66.5 -23.5 152.5 -23.5q29 0 66 7.5q37 7.5 67 21.5l31 -96q-42 -20 -84 -28q-42 -8 -97 -8q-98 0 -180.5 28q-82.5 28 -142.5 83q-60 55 -94 136.5q-34 81.5 -34 188.5q0 109 39 197q39 88 105 150q66 62 153 95.5q87 33.5 184 33.5q92 0 171 -26.5q79 -26.5 137 -76q58 -49.5 91 -121q33 -71.5 33 -162.5q0 -64 -23 -120q-23 -56 -62 -97q-39 -41 -91.5 -65q-52.5 -24 -112.5 -24q-25 0 -46.5 5.5q-21.5 5.5 -36.5 18.5q-15 13 -22 34q-7 21 -4 52l-4 0q-15 -21 -32 -41q-17 -20 -38 -35.5q-21 -15.5 -46 -24.5q-25 -9 -55 -9q-25 0 -46.5 10.5q-21.5 10.5 -37.5 29.5q-16 19 -25.5 46q-9.5 27 -9.5 60q0 62 20 120.5q20 58.5 54 103.5q34 45 79.5 72.5q45.5 27.5 96.5 27.5q35 0 59 -10.5q24 -10.5 45 -27.5zM643 363q-14 11 -28 17.5q-14 6.5 -34 6.5q-30 0 -55.5 -17.5q-25.5 -17.5 -44 -44.5q-18.5 -27 -29 -60.5q-10.5 -33.5 -10.5 -65.5q0 -33 14 -54.5q14 -21.5 47 -21.5q14 0 30 8.5q16 8.5 31 23q15 14.5 28.5 32.5q13.5 18 24.5 38z" />
-<glyph unicode="&#65;" horiz-adv-x="582" d="M387 155h-204l-83 -155h-138l389 705h96l91 -705h-131zM240 265h142l-16 156l1 110h-5l-40 -111z" />
-<glyph unicode="&#66;" horiz-adv-x="568" d="M166 695q19 3 43 6q24 3 51 5q27 2 55.5 3q28.5 1 55.5 1q46 0 85.5 -9.5q39.5 -9.5 68 -29.5q28.5 -20 45 -51.5q16.5 -31.5 16.5 -75.5q0 -33 -11 -63.5q-11 -30.5 -31.5 -54.5q-20.5 -24 -49 -40q-28.5 -16 -64.5 -21l0 -5q19 -4 38 -14.5q19 -10.5 34 -27q15 -16.5 24 -39q9 -22.5 9 -50.5q0 -64 -25 -109.5q-25 -45.5 -67 -74q-42 -28.5 -98 -42q-56 -13.5 -118 -13.5q-16 0 -41.5 0q-25.5 0 -54.5 1.5q-29 1.5 -58 4.5q-29 3 -53 9zM167 109q4 -2 14.5 -3q10.5 -1 23 -1.5q12.5 -0.5 25.5 -1q13 -0.5 22 -0.5q25 0 51.5 6q26.5 6 48 20q21.5 14 35.5 36q14 22 14 54q0 25 -11 41q-11 16 -29 25.5q-18 9.5 -41.5 13q-23.5 3.5 -48.5 3.5h-64zM230 406h43q14 0 33 0.5q19 0.5 32 2.5q18 3 38.5 10q20.5 7 37 20q16.5 13 27.5 33q11 20 11 50q0 43 -28.5 59q-28.5 16 -72.5 16q-26 0 -48 -1q-22 -1 -34 -3z" />
-<glyph unicode="&#67;" horiz-adv-x="537" d="M483 29q-67 -43 -164 -43q-66 0 -115 22q-49 22 -81.5 61q-32.5 39 -48.5 91q-16 52 -16 112q0 118 33 201.5q33 83.5 87 137q54 53.5 123.5 78.5q69.5 25 142.5 25q57 0 97.5 -8.5q40.5 -8.5 63.5 -19.5l-51 -116q-20 11 -48 16.5q-28 5.5 -71 5.5q-51 0 -95 -21q-44 -21 -76 -60q-32 -39 -50.5 -95q-18.5 -56 -18.5 -127q0 -85 42.5 -133q42.5 -48 113.5 -48q45 0 74.5 9.5q29.5 9.5 55.5 23.5z" />
-<glyph unicode="&#68;" horiz-adv-x="620" d="M168 700q21 3 46 5q25 2 46.5 3q21.5 1 37.5 1q9 0 25.5 0.5q16.5 0.5 36.5 0.5q61 0 111 -15.5q50 -15.5 85.5 -47.5q35.5 -32 55 -82q19.5 -50 19.5 -119q0 -44 -7.5 -94.5q-7.5 -50.5 -25.5 -101.5q-18 -51 -49.5 -98q-31.5 -47 -79 -83q-47.5 -36 -114 -58q-66.5 -22 -154.5 -22q-15 0 -30 0.5q-15 0.5 -21 0.5q-20 1 -44.5 2.5q-24.5 1.5 -49 3q-24.5 1.5 -36.5 3.5zM174 114q4 -1 12.5 -1.5q8.5 -0.5 18.5 -1q10 -0.5 19 -0.5q9 0 14 0q70 0 119 31.5q49 31.5 79.5 79q30.5 47.5 44 103q13.5 55.5 13.5 103.5q0 80 -33.5 120q-33.5 40 -111.5 40q-20 0 -42 -1q-22 -1 -34 -3z" />
-<glyph unicode="&#69;" horiz-adv-x="503" d="M168 700h130h264l-26 -122h-264l-35 -163h241l-27 -122h-239l-37 -171h269l-25 -122h-269l-130 0z" />
-<glyph unicode="&#70;" horiz-adv-x="489" d="M168 700h130h264l-26 -122h-264l-37 -173h243l-25 -122h-243l-60 -283l-130 0z" />
-<glyph unicode="&#71;" horiz-adv-x="585" d="M369 365h210l-66 -312q-45 -35 -94.5 -51q-49.5 -16 -106.5 -16q-55 0 -101.5 19q-46.5 19 -80.5 55q-34 36 -53 89q-19 53 -19 121q0 115 31.5 199q31.5 84 85.5 138.5q54 54.5 126 80.5q72 26 152 26q57 0 101.5 -9.5q44.5 -9.5 67.5 -19.5l-52 -115q-21 10 -52.5 16q-31.5 6 -76.5 6q-53 0 -98 -20q-45 -20 -78 -59q-33 -39 -51.5 -96.5q-18.5 -57.5 -18.5 -131.5q0 -83 39 -130q39 -47 105 -47q49 0 86 25l28 133l-102 16z" />
-<glyph unicode="&#72;" horiz-adv-x="624" d="M455 293h-243l-62 -293h-130l148 700h130l-60 -285h243l60 285h130l-148 -700l-130 0z" />
-<glyph unicode="&#73;" horiz-adv-x="278" d="M183 700h129l-148 -700l-129 0z" />
-<glyph unicode="&#74;" horiz-adv-x="324" d="M239 700h130l-109 -512q-9 -42 -23 -78.5q-14 -36.5 -37 -63.5q-23 -27 -57.5 -42.5q-34.5 -15.5 -83.5 -15.5q-28 0 -59 6q-31 6 -51 17l50 112q23 -13 54 -13q21 0 35 8.5q14 8.5 23.5 23.5q9.5 15 15.5 35.5q6 20.5 12 45.5z" />
-<glyph unicode="&#75;" horiz-adv-x="593" d="M260 299h-47l-63 -299h-130l148 700h130l-66 -310l31 11l237 299h156l-252 -297l-60 -35l44 -39l152 -329l-145 0z" />
-<glyph unicode="&#76;" horiz-adv-x="495" d="M441 0h-291h-130l148 700h130l-123 -578l291 0z" />
-<glyph unicode="&#77;" horiz-adv-x="767" d="M613 363l44 138h-6l-66 -113l-197 -259h-41l-94 262l-18 110h-5l-10 -137l-77 -364h-123l148 700h115l105 -320l13 -80h5l46 82l236 318h125l-148 -700l-129 0z" />
-<glyph unicode="&#78;" horiz-adv-x="631" d="M267 366l-33 112h-5l-9 -112l-77 -366h-123l150 705h90l172 -374l31 -109h6l7 109l79 369h123l-150 -705l-90 0z" />
-<glyph unicode="&#79;" horiz-adv-x="644" d="M58 262q0 93 25.5 175.5q25.5 82.5 72.5 144q47 61.5 113.5 97q66.5 35.5 148.5 35.5q54 0 97.5 -16q43.5 -16 74 -49.5q30.5 -33.5 47.5 -84.5q17 -51 17 -121q0 -94 -25.5 -177q-25.5 -83 -72 -145.5q-46.5 -62.5 -111 -98.5q-64.5 -36 -142.5 -36q-118 0 -181 69.5q-63 69.5 -64 206.5zt0 0zM195 266q0 -72 27.5 -115q27.5 -43 90.5 -43q46 0 83.5 27.5q37.5 27.5 64.5 74q27 46.5 41.5 106.5q14.5 60 14.5 125q0 79 -31 115q-31 36 -85 36q-45 0 -82.5 -26q-37.5 -26 -65 -70.5q-27.5 -44.5 -43 -104t-15.5 -125.5z" />
-<glyph unicode="&#80;" horiz-adv-x="550" d="M167 693q42 8 89.5 12.5q47.5 4.5 95.5 4.5q51 0 94.5 -11.5q43.5 -11.5 76 -35.5q32.5 -24 50.5 -61.5q18 -37.5 18 -89.5q0 -78 -27 -130.5q-27 -52.5 -71.5 -85q-44.5 -32.5 -101.5 -46q-57 -13.5 -116 -13.5q-5 0 -15.5 0q-10.5 0 -22 0.5q-11.5 0.5 -22 1.5q-10.5 1 -15.5 2l-50 -241h-130zM226 359q4 -1 11 -2q7 -1 15.5 -1.5q8.5 -0.5 16 -0.5q7.5 0 11.5 0q34 0 65.5 7.5q31.5 7.5 55.5 24q24 16.5 38.5 43.5q14.5 27 14.5 66q0 29 -9.5 48q-9.5 19 -25.5 29.5q-16 10.5 -37.5 14.5q-21.5 4 -45.5 4q-18 0 -34.5 -1.5q-16.5 -1.5 -27.5 -3.5z" />
-<glyph unicode="&#81;" horiz-adv-x="644" d="M58 262q0 93 25.5 175.5q25.5 82.5 72.5 144q47 61.5 113.5 97q66.5 35.5 148.5 35.5q54 0 97.5 -16q43.5 -16 74 -49.5q30.5 -33.5 47.5 -84.5q17 -51 17 -121q0 -94 -25.5 -177q-25.5 -83 -72 -145.5q-46.5 -62.5 -111 -98.5q-64.5 -36 -142.5 -36q-118 0 -181 69.5q-63 69.5 -64 206.5zt0 0zM195 266q0 -72 27.5 -115q27.5 -43 90.5 -43q46 0 83.5 27.5q37.5 27.5 64.5 74q27 46.5 41.5 106.5q14.5 60 14.5 125q0 79 -31 115q-31 36 -85 36q-45 0 -82.5 -26q-37.5 -26 -65 -70.5q-27.5 -44.5 -43 -104q-15.5 -59.5 -15.5 -125.5zt0 0zM627 -202q-48 -13 -95 -13q-48 0 -92 10.5q-44 10.5 -84.5 22.5q-40.5 12 -77.5 22.5q-37 10.5 -73 10.5q-23 0 -45 -6l25 118q28 6 56 6q40 0 77.5 -10q37.5 -10 76 -21.5q38.5 -11.5 79.5 -21.5q41 -10 88 -10q21 0 43.5 2.5q22.5 2.5 46.5 8.5z" />
-<glyph unicode="&#82;" horiz-adv-x="584" d="M167 693q48 9 97 13q49 4 88 4q46 0 87 -11q41 -11 71 -33.5q30 -22.5 47.5 -58q17.5 -35.5 17.5 -83.5q0 -55 -16.5 -95.5q-16.5 -40.5 -43.5 -68q-27 -27.5 -61.5 -43q-34.5 -15.5 -70.5 -20.5l39 -31l97 -266h-144l-96 274l-69 13l-60 -287h-130zM230 380h53q29 0 57 5.5q28 5.5 49.5 20q21.5 14.5 35 38.5q13.5 24 13.5 61q0 34 -23 58.5q-23 24.5 -74 24.5q-20 0 -37.5 -1.5q-17.5 -1.5 -29.5 -3.5z" />
-<glyph unicode="&#83;" horiz-adv-x="510" d="M502 559q-19 12 -56 24.5q-37 12.5 -82 12.5q-23 0 -45 -4.5q-22 -4.5 -39 -14.5q-17 -10 -27 -26q-10 -16 -10 -38q0 -29 18 -49q18 -20 45.5 -37.5q27.5 -17.5 59 -35.5q31.5 -18 59 -42q27.5 -24 45.5 -57.5q18 -33.5 18 -82.5q0 -59 -20.5 -101.5q-20.5 -42.5 -58 -69.5q-37.5 -27 -90 -39.5q-52.5 -12.5 -116.5 -12.5q-35 0 -66.5 4q-31.5 4 -58.5 10q-27 6 -47.5 13.5q-20.5 7.5 -32.5 14.5l67 116q10 -6 26 -13q16 -7 36.5 -13q20.5 -6 44.5 -10q24 -4 48 -4q28 0 53 4.5q25 4.5 43.5 15q18.5 10.5 29 26.5q10.5 16 10.5 40q0 27 -18 46q-18 19 -45.5 36q-27.5 17 -59 35.5q-31.5 18.5 -59 43.5q-27.5 25 -45.5 60.5q-18 35.5 -18 86.5q0 58 20.5 99q20.5 41 55.5 67q35 26 82 38q47 12 101 12q29 0 58 -3q29 -3 55 -8.5q26 -5.5 48 -13q22 -7.5 37 -16.5z" />
-<glyph unicode="&#84;" horiz-adv-x="547" d="M614 578h-194l-123 -578h-129l122 578h-194l26 122l517 0z" />
-<glyph unicode="&#85;" horiz-adv-x="602" d="M531 700h122l-95 -452q-15 -72 -39 -121.5q-24 -49.5 -58 -80.5q-34 -31 -80 -44.5q-46 -13.5 -106 -13.5q-58 0 -98 13.5q-40 13.5 -65.5 38.5q-25.5 25 -37 59q-11.5 34 -11.5 75q0 20 2.5 41q2.5 21 7.5 44l94 441h129l-92 -440q-8 -38 -8 -62q0 -48 25 -68q25 -20 73 -20q60 0 93 35q33 35 50 113z" />
-<glyph unicode="&#86;" horiz-adv-x="579" d="M288 290l-7 -119h4l44 119l216 410h146l-395 -705h-94l-101 705l142 0z" />
-<glyph unicode="&#87;" horiz-adv-x="826" d="M249 310l-14 -124h5l39 126l198 388h88l29 -390l-13 -124h5l40 126l164 388h140l-333 -705h-91l-37 389l8 107h-6l-38 -108l-199 -388h-91l-34 705l137 0z" />
-<glyph unicode="&#88;" horiz-adv-x="608" d="M256 357l-113 343h141l60 -202l10 -71l37 71l149 202h156l-263 -338l125 -362h-139l-72 216l-12 74l-40 -74l-161 -216l-158 0z" />
-<glyph unicode="&#89;" horiz-adv-x="569" d="M231 260l-125 440h144l65 -263l-2 -74h4l31 76l175 261h149l-311 -439l-55 -261l-129 0z" />
-<glyph unicode="&#90;" horiz-adv-x="518" d="M15 122l360 416l58 40h-321l25 122h461l-25 -122l-362 -419l-56 -37h321l-26 -122l-461 0z" />
-<glyph unicode="&#91;" horiz-adv-x="314" d="M198 700h223l-22 -109h-105l-151 -711h105l-24 -110l-222 0z" />
-<glyph unicode="&#92;" horiz-adv-x="424" d="M472 -95l-101 -45l-335 808l103 43z" />
-<glyph unicode="&#93;" horiz-adv-x="314" d="M145 -230h-223l24 110h105l150 711h-105l22 109l224 0z" />
-<glyph unicode="&#94;" horiz-adv-x="505" d="M266 705h70l185 -292h-131l-71 122l-22 70l-25 -71l-77 -121l-125 0z" />
-<glyph unicode="&#95;" horiz-adv-x="444" d="M-46 -117h444v-107l-444 0z" />
-<glyph unicode="&#96;" horiz-adv-x="274" d="M305 566h-69l-91 124l7 30l129 0z" />
-<glyph unicode="&#97;" horiz-adv-x="503" d="M444 200q-8 -38 -11.5 -77q-3.5 -39 -3.5 -74q0 -14 0.5 -26.5q0.5 -12.5 1.5 -23.5l-91 0l-14 86h-4q-11 -18 -28.5 -35.5q-17.5 -17.5 -38.5 -32q-21 -14.5 -44.5 -23q-23.5 -8.5 -48.5 -8.5q-66 0 -97.5 43q-31.5 43 -31.5 115q0 73 18.5 140q18.5 67 57.5 118q39 51 98.5 81.5q59.5 30.5 141.5 30.5q35 0 76.5 -6.5q41.5 -6.5 80.5 -17.5zM209 89q18 0 34 7.5q16 7.5 29.5 19.5q13.5 12 24 26q10.5 14 18.5 26l50 233q-11 5 -25.5 7.5q-14.5 2.5 -28.5 2.5q-36 0 -64 -21.5q-28 -21.5 -47.5 -56q-19.5 -34.5 -29.5 -78q-10 -43.5 -10 -87.5q0 -32 10.5 -55.5t38.5 -23.5z" />
-<glyph unicode="&#98;" horiz-adv-x="512" d="M164 700h123l-62 -288h4q13 18 30 35.5q17 17.5 37.5 32q20.5 14.5 44.5 23.5q24 9 53 9q54 0 81 -38q27 -38 27 -101q0 -95 -26.5 -167q-26.5 -72 -69.5 -120.5q-43 -48.5 -97 -73q-54 -24.5 -109 -24.5q-61 0 -107.5 11.5q-46.5 11.5 -70.5 28.5zM160 105q11 -8 27 -11q16 -3 35 -3q25 0 52 16.5q27 16.5 49.5 48.5q22.5 32 37 78.5q14.5 46.5 14.5 105.5q0 69 -40 69q-20 0 -39.5 -11q-19.5 -11 -37.5 -27.5q-18 -16.5 -32.5 -35.5q-14.5 -19 -23.5 -36z" />
-<glyph unicode="&#99;" horiz-adv-x="412" d="M393 387q-19 11 -39.5 15q-20.5 4 -44.5 4q-27 0 -52.5 -17.5q-25.5 -17.5 -46 -46q-20.5 -28.5 -32.5 -66.5q-12 -38 -12 -78q0 -51 22 -77.5q22 -26.5 58 -26.5q30 0 55.5 9.5q25.5 9.5 45.5 21.5l23 -84q-32 -24 -74.5 -39.5q-42.5 -15.5 -84.5 -15.5q-48 0 -81.5 14q-33.5 14 -54.5 38q-21 24 -31 55q-10 31 -10 65q0 84 24 150q24 66 63.5 111.5q39.5 45.5 90 70q50.5 24.5 103.5 24.5q47 0 74.5 -9q27.5 -9 49.5 -20z" />
-<glyph unicode="&#100;" horiz-adv-x="507" d="M442 176q-9 -42 -13 -78q-4 -36 -4 -68q0 -8 0 -15.5q0 -7.5 1 -15.5l-84 0l-14 86h-4q-11 -18 -28.5 -35.5q-17.5 -17.5 -38.5 -32q-21 -14.5 -44.5 -23q-23.5 -8.5 -46.5 -8.5q-62 0 -95.5 44q-33.5 44 -33.5 121q0 70 19 135q19 65 53.5 115.5q34.5 50.5 84 80.5q49.5 30 109.5 30q29 0 48 -3.5q19 -3.5 36 -11.5l43 203h123zM365 394q-12 8 -27.5 11.5q-15.5 3.5 -41.5 3.5q-30 0 -54.5 -20.5q-24.5 -20.5 -41.5 -55q-17 -34.5 -26.5 -79.5q-9.5 -45 -9.5 -94q0 -29 13 -50q13 -21 37 -21q15 0 30.5 7.5q15.5 7.5 29 19.5q13.5 12 25 26q11.5 14 18.5 26z" />
-<glyph unicode="&#101;" horiz-adv-x="466" d="M402 48q-31 -26 -80 -44q-49 -18 -114 -18q-81 0 -127.5 47.5q-46.5 47.5 -46.5 132.5q0 80 25 144.5q25 64.5 65.5 109.5q40.5 45 91.5 69.5q51 24.5 102 24.5q41 0 70.5 -10.5q29.5 -10.5 48.5 -29q19 -18.5 28 -42.5q9 -24 9 -51q0 -41 -21 -72q-21 -31 -58.5 -51.5q-37.5 -20.5 -90.5 -31q-53 -10.5 -116 -10.5q-8 0 -15 0.5q-7 0.5 -15 0.5q-2 -12 -3 -21.5q-1 -9.5 -1 -17.5q0 -45 23.5 -67q23.5 -22 66.5 -22q44 0 79 13q35 13 53 26zM176 295q28 0 59.5 2q31.5 2 58.5 9.5q27 7.5 45 22q18 14.5 18 39.5q0 15 -11 30.5q-11 15.5 -46 15.5q-44 0 -76.5 -34t-47.5 -85z" />
-<glyph unicode="&#102;" horiz-adv-x="294" d="M246 397l-74 -431q-6 -37 -17 -68.5q-11 -31.5 -30.5 -55q-19.5 -23.5 -49.5 -37q-30 -13.5 -74 -13.5q-36 0 -70.5 5.5q-34.5 5.5 -59.5 22.5l34 91q17 -7 34 -9q17 -2 43 -2q32 0 49.5 25.5q17.5 25.5 26.5 82.5l63 389h-70l22 103h64l13 67q7 37 18 64.5q11 27.5 29.5 46q18.5 18.5 45 27.5q26.5 9 65.5 9q16 0 36.5 -1.5q20.5 -1.5 40.5 -5q20 -3.5 39 -8.5q19 -5 34 -12l-29 -91q-23 9 -47 12q-24 3 -47 3q-32 0 -46.5 -19q-14.5 -19 -20.5 -59l-6 -33h100l-20 -103z" />
-<glyph unicode="&#103;" horiz-adv-x="505" d="M407 0q-13 -59 -35 -99.5q-22 -40.5 -52.5 -65.5q-30.5 -25 -70 -36q-39.5 -11 -87.5 -11q-35 0 -62.5 5q-27.5 5 -48.5 12q-21 7 -36.5 14.5q-15.5 7.5 -24.5 13.5l46 91q9 -4 21 -9.5q12 -5.5 27.5 -11q15.5 -5.5 36 -9q20.5 -3.5 47.5 -3.5q50 0 79.5 31q29.5 31 42.5 85l19 78h-4q-23 -36 -62.5 -64.5q-39.5 -28.5 -89.5 -28.5q-54 0 -87.5 40.5q-33.5 40.5 -33.5 108.5q0 77 22 144.5q22 67.5 61.5 118q39.5 50.5 93.5 79.5q54 29 119 29q61 0 106.5 -10.5q45.5 -10.5 73.5 -23.5zM371 399q-11 6 -28 8q-17 2 -34 2q-32 0 -59.5 -19q-27.5 -19 -47.5 -52q-20 -33 -31.5 -77.5q-11.5 -44.5 -11.5 -95.5q0 -32 13.5 -51q13.5 -19 35.5 -19q17 0 35 10.5q18 10.5 34.5 26.5q16.5 16 29.5 35.5q13 19.5 21 36.5z" />
-<glyph unicode="&#104;" horiz-adv-x="528" d="M309 0l60 284q10 44 10 73q0 26 -10 37.5q-10 11.5 -31 11.5q-19 0 -40 -12q-21 -12 -40 -30q-19 -18 -34.5 -38.5q-15.5 -20.5 -23.5 -37.5l-59 -288h-123l148 700h123l-63 -288h4q13 16 31.5 34q18.5 18 41 33q22.5 15 49 25q26.5 10 57.5 10q48 0 74.5 -24q26.5 -24 26.5 -85q0 -37 -12 -94l-66 -311z" />
-<glyph unicode="&#105;" horiz-adv-x="256" d="M133 500h123l-106 -500h-123zM151 642q0 33 21.5 51q21.5 18 54.5 18q32 0 54.5 -18q22.5 -18 22.5 -51q0 -32 -22.5 -50.5q-22.5 -18.5 -54.5 -18.5q-33 0 -54.5 18.5t-21.5 50.5z" />
-<glyph unicode="&#106;" horiz-adv-x="244" d="M123 500h124l-111 -521q-19 -90 -64 -137.5q-45 -47.5 -122 -47.5q-31 0 -62 7l24 106q25 -2 43 4.5q18 6.5 30.5 20.5q12.5 14 21 35.5q8.5 21.5 14.5 48.5zM140 642q0 33 21.5 51q21.5 18 54.5 18q32 0 54.5 -18q22.5 -18 22.5 -51q0 -32 -22.5 -50.5q-22.5 -18.5 -54.5 -18.5q-33 0 -54.5 18.5t-21.5 50.5z" />
-<glyph unicode="&#107;" horiz-adv-x="465" d="M224 207h-40l-43 -207h-123l148 700h123l-88 -413l37 13l141 200h137l-149 -201l-60 -38l45 -38l76 -223l-132 0z" />
-<glyph unicode="&#108;" horiz-adv-x="272" d="M168 148q-6 -29 0.5 -43q6.5 -14 21.5 -14q28 0 53 11l-3 -89q-18 -11 -52 -18q-34 -7 -67 -7q-43 0 -65.5 16.5q-22.5 16.5 -22.5 61.5q0 23 6 53l123 581l123 0z" />
-<glyph unicode="&#109;" horiz-adv-x="767" d="M283 0l57 272q6 28 9.5 49.5q3.5 21.5 3.5 38.5q0 46 -35 46q-17 0 -34 -9q-17 -9 -31.5 -23q-14.5 -14 -27 -30.5q-12.5 -16.5 -20.5 -31.5l-64 -312h-123l106 500h96l-6 -88h4q15 16 32.5 34q17.5 18 39.5 33q22 15 49 25q27 10 59 10q40 0 60.5 -29q20.5 -29 18.5 -77q15 19 34.5 38q19.5 19 42 34q22.5 15 48 24.5q25.5 9.5 52.5 9.5q46 0 70.5 -21.5q24.5 -21.5 24.5 -80.5q0 -43 -15 -112l-63 -300h-123l59 281q5 23 8 43q3 20 3 35q0 23 -8.5 35q-8.5 12 -28.5 12q-16 0 -32.5 -9.5q-16.5 -9.5 -31.5 -24q-15 -14.5 -27.5 -31.5q-12.5 -17 -19.5 -32l-64 -309z" />
-<glyph unicode="&#110;" horiz-adv-x="521" d="M299 0l66 310q6 28 6 49q0 22 -9 34.5q-9 12.5 -33 12.5q-18 0 -36 -9q-18 -9 -34 -24q-16 -15 -30 -33.5q-14 -18.5 -24 -37.5l-64 -302h-123l106 500h93l-5 -88h4q13 16 30.5 34q17.5 18 40.5 33q23 15 51.5 25q28.5 10 64.5 10q45 0 72 -24.5q27 -24.5 27 -81.5q0 -15 -1.5 -32q-1.5 -17 -6.5 -37l-72 -339z" />
-<glyph unicode="&#111;" horiz-adv-x="496" d="M34 162q0 79 22.5 144q22.5 65 60 111q37.5 46 87 71.5q49.5 25.5 103.5 25.5q48 0 81 -15q33 -15 53.5 -40q20.5 -25 29.5 -57q9 -32 9 -66q0 -78 -22 -142.5q-22 -64.5 -59 -110.5q-37 -46 -86 -71.5q-49 -25.5 -103 -25.5q-47 0 -80 15.5q-33 15.5 -54.5 40.5q-21.5 25 -31.5 56.5q-10 31.5 -10 63.5zt0 0zM161 179q0 -90 65 -90q24 0 47 21q23 21 41 55q18 34 28.5 77q10.5 43 10.5 86q0 40 -13.5 61.5q-13.5 21.5 -50.5 21.5q-24 0 -47 -20q-23 -20 -41 -52.5q-18 -32.5 -29 -74.5t-11 -85z" />
-<glyph unicode="&#112;" horiz-adv-x="506" d="M122 500h91l-5 -88h4q14 19 32 37.5q18 18.5 40 32.5q22 14 47 23q25 9 54 9q51 0 82 -35q31 -35 31 -110q0 -85 -22.5 -155.5q-22.5 -70.5 -60 -121q-37.5 -50.5 -88 -78.5q-50.5 -28 -105.5 -28q-26 0 -49 5q-23 5 -34 13l-43 -204h-122zM160 106q25 -17 56 -17q31 0 59 21q28 21 49.5 56q21.5 35 34 81.5q12.5 46.5 12.5 97.5q0 29 -13.5 47.5q-13.5 18.5 -36.5 18.5q-18 0 -35 -9q-17 -9 -32 -22.5q-15 -13.5 -27 -30.5q-12 -17 -21 -33z" />
-<glyph unicode="&#113;" horiz-adv-x="501" d="M356 -200h-120l61 278h-4q-10 -17 -24.5 -33q-14.5 -16 -33 -29.5q-18.5 -13.5 -40.5 -21.5q-22 -8 -47 -8q-33 0 -55.5 12.5q-22.5 12.5 -36.5 34q-14 21.5 -20.5 49q-6.5 27.5 -6.5 57.5q0 76 24.5 144q24.5 68 67 119q42.5 51 99 80.5q56.5 29.5 119.5 29.5q48 0 93.5 -10.5q45.5 -10.5 70.5 -24.5zM364 399q-14 6 -29 8q-15 2 -30 2q-30 0 -57.5 -21.5q-27.5 -21.5 -47.5 -57q-20 -35.5 -32 -81.5q-12 -46 -12 -94q0 -31 11.5 -48.5q11.5 -17.5 31.5 -17.5q19 0 38 11.5q19 11.5 35.5 29q16.5 17.5 30 38q13.5 20.5 21.5 38.5z" />
-<glyph unicode="&#114;" horiz-adv-x="343" d="M215 500l1 -88h4q22 40 53.5 68q31.5 28 79.5 28q21 0 50 -8l-31 -107q-10 3 -19 5q-9 2 -19 2q-41 0 -75.5 -26.5q-34.5 -26.5 -52.5 -61.5l-65 -312h-123l106 500z" />
-<glyph unicode="&#115;" horiz-adv-x="396" d="M38 117q20 -11 51.5 -19.5q31.5 -8.5 66.5 -8.5q35 0 53.5 13.5q18.5 13.5 19.5 41.5q0 20 -12 34.5q-12 14.5 -30.5 27.5q-18.5 13 -39.5 26.5q-21 13.5 -39.5 31q-18.5 17.5 -30.5 41.5q-12 24 -12 58q0 33 13 61q13 28 36.5 48q23.5 20 57 31q33.5 11 75.5 11q58 0 96 -8.5q38 -8.5 60 -21.5l-34 -94q-20 9 -48.5 15q-28.5 6 -59.5 6q-32 0 -50.5 -11q-18.5 -11 -18.5 -35q0 -16 12 -28.5q12 -12.5 30.5 -25.5q18.5 -13 39.5 -26.5q21 -13.5 39.5 -32.5q18.5 -19 30.5 -43.5q12 -24.5 12 -58.5q0 -83 -54 -123.5q-54 -40.5 -144 -40.5q-51 0 -93.5 9.5q-42.5 9.5 -65.5 23.5z" />
-<glyph unicode="&#116;" horiz-adv-x="320" d="M64 500h65l20 94l131 37l-28 -131h117l-23 -103h-116l-49 -226q-6 -27 -6 -44q0 -22 10 -30q10 -8 30 -8q19 0 34.5 4q15.5 4 32.5 13l0 -92q-11 -6 -26.5 -11.5q-15.5 -5.5 -33.5 -9q-18 -3.5 -37 -5.5q-19 -2 -35 -2q-51 0 -78.5 23.5q-27.5 23.5 -27.5 71.5q0 10 1.5 21q1.5 11 3.5 23l58 272l-67 0z" />
-<glyph unicode="&#117;" horiz-adv-x="512" d="M241 500l-65 -309q-6 -30 -6 -50q0 -20 8 -31q8 -11 28 -11q17 0 34.5 8.5q17.5 8.5 33.5 22q16 13.5 29.5 30q13.5 16.5 22.5 32.5l64 308h123l-63 -300q-5 -20 -8.5 -47q-3.5 -27 -6.5 -55.5q-3 -28.5 -4 -54.5q-1 -26 0 -43l-99 0l-5 90h-4q-14 -19 -32.5 -37.5q-18.5 -18.5 -41 -33.5q-22.5 -15 -49 -24q-26.5 -9 -56.5 -9q-47 0 -76 23.5q-29 23.5 -29 86.5q0 37 10 81l69 323z" />
-<glyph unicode="&#118;" horiz-adv-x="448" d="M209 238l2 -77h3l30 79l137 260h139l-306 -505h-76l-98 505l136 0z" />
-<glyph unicode="&#119;" horiz-adv-x="678" d="M445 500l32 -256l-1 -83h5l30 84l116 255h120l-255 -505h-91l-35 280v63h-4l-26 -64l-150 -279h-94l-46 505h126l16 -251l-6 -89h5l34 90l132 250z" />
-<glyph unicode="&#120;" horiz-adv-x="496" d="M166 256l-90 244h139l38 -107l13 -70l44 70l87 107h143l-195 -240l100 -260h-136l-48 120l-15 74l-45 -74l-99 -120l-143 0z" />
-<glyph unicode="&#121;" horiz-adv-x="452" d="M216 219l1 -78h6l27 79l136 280h131l-240 -449q-30 -56 -56.5 -103q-26.5 -47 -53.5 -81q-27 -34 -56 -53q-29 -19 -62 -19q-44 0 -66 15l33 98q6 -3 12.5 -4q6.5 -1 12.5 -1q24 0 49 23q25 23 50 74l-94 500l141 0z" />
-<glyph unicode="&#122;" horiz-adv-x="435" d="M9 108l225 239l71 45h-236l24 108h372l-23 -108l-230 -243l-64 -41h234l-23 -108l-372 0z" />
-<glyph unicode="&#123;" horiz-adv-x="356" d="M122 96q11 51 -4.5 70q-15.5 19 -52.5 19l22 100q36 0 60 20.5q24 20.5 33 64.5l44 209q11 54 42 88q31 34 85 34h114l-23 -110h-48q-26 0 -40.5 -14q-14.5 -14 -21.5 -46l-41 -195q-9 -44 -34 -66.5q-25 -22.5 -52 -27.5l-2 -10q25 -4 39.5 -30q14.5 -26 5.5 -68l-41 -194q-7 -32 2 -46q9 -14 36 -14h47l-24 -110h-114q-50 0 -69 31.5q-19 31.5 -6 89.5z" />
-<glyph unicode="&#124;" horiz-adv-x="232" d="M94 700h106v-830l-106 0z" />
-<glyph unicode="&#125;" horiz-adv-x="356" d="M266 375q-11 -51 5 -70q16 -19 53 -19l-21 -100q-76 0 -94 -85l-45 -209q-11 -54 -43.5 -88q-32.5 -34 -86.5 -34h-110l24 110h48q25 0 39 13.5q14 13.5 21 46.5l42 195q9 44 33.5 66.5q24.5 22.5 52.5 27.5l3 10q-26 4 -41 30q-15 26 -6 68l41 194q7 31 -1.5 45.5q-8.5 14.5 -35.5 14.5h-46l22 110h113q50 0 69.5 -31.5q19.5 -31.5 7.5 -89.5z" />
-<glyph unicode="&#126;" horiz-adv-x="505" d="M45 378q47 38 84.5 52.5q37.5 14.5 69.5 14.5q29 0 54 -8.5q25 -8.5 48 -18q23 -9.5 45.5 -18q22.5 -8.5 45.5 -8.5q18 0 37 6q19 6 40 23l47 -103q-36 -27 -66 -38q-30 -11 -56 -11q-28 0 -52 9q-24 9 -46.5 20q-22.5 11 -45.5 20q-23 9 -49 9q-24 0 -51.5 -10.5q-27.5 -10.5 -60.5 -38.5z" />
-<glyph unicode="&#160;" horiz-adv-x="253" />
-<glyph unicode="&#161;" horiz-adv-x="279" d="M117 -200h-127l69 329l59 162h78l-9 -162zM100 435q0 35 22 55.5q22 20.5 58 20.5q37 0 59 -20.5q22 -20.5 22 -55.5q0 -35 -22 -56q-22 -21 -59 -21q-36 0 -58 21t-22 56z" />
-<glyph unicode="&#162;" horiz-adv-x="545" d="M447 41q-21 -17 -51.5 -29.5q-30.5 -12.5 -62.5 -18.5l-19 -93h-115l19 91q-33 7 -57 23q-24 16 -39 38.5q-15 22.5 -22 49.5q-7 27 -7 56q0 75 19 135.5q19 60.5 51.5 105.5q32.5 45 75.5 73q43 28 90 37l19 91h115l-20 -92q46 -9 72 -23l-45 -98q-11 6 -25.5 10q-14.5 4 -30.5 6l-65 -305q22 5 41.5 12q19.5 7 32.5 15zM327 398q-22 -9 -42.5 -27q-20.5 -18 -36 -44q-15.5 -26 -25 -58.5q-9.5 -32.5 -9.5 -70.5q0 -42 14 -65q14 -23 36 -32z" />
-<glyph unicode="&#163;" horiz-adv-x="545" d="M113 399h70q-5 20 -9 43.5q-4 23.5 -4 55.5q0 56 21.5 97q21.5 41 57.5 67.5q36 26.5 82 39q46 12.5 95 12.5q45 0 85.5 -9.5q40.5 -9.5 63.5 -25.5l-42 -97q-17 9 -46.5 16.5q-29.5 7.5 -69.5 7.5q-24 0 -46.5 -8.5q-22.5 -8.5 -39 -24.5q-16.5 -16 -26.5 -38q-10 -22 -10 -50q0 -29 4 -48.5q4 -19.5 10 -37.5l140 0l-23 -103h-95q0 -4 0.5 -6.5q0.5 -2.5 0.5 -6.5q0 -50 -21 -91q-21 -41 -46 -63l-47 -30l-1 -6l67 15h218l-24 -108h-448l24 109h2q30 1 57.5 14q27.5 13 48.5 35.5q21 22.5 33.5 52.5q12.5 30 12.5 65q0 5 0 10q0 5 -1 10l-117 0z" />
-<glyph unicode="&#164;" horiz-adv-x="545" d="M117 622l78 -77l19 -37q20 15 47.5 22.5q27.5 7.5 57.5 7.5q29 0 57.5 -7.5q28.5 -7.5 47.5 -21.5l20 36l78 77l77 -80l-77 -78l-38 -16q15 -21 21 -47.5q6 -26.5 6 -55.5q0 -30 -6.5 -56.5q-6.5 -26.5 -20.5 -44.5l38 -16l77 -78l-77 -80l-78 77l-18 37q-19 -14 -48.5 -22q-29.5 -8 -58.5 -8q-30 0 -57.5 7.5q-27.5 7.5 -47.5 21.5l-19 -36l-78 -77l-76 80l77 78l36 17q-12 21 -19 45.5q-7 24.5 -7 54.5q0 29 7.5 54q7.5 25 19.5 48l-37 17l-77 78zM237 346q0 -38 23 -62q23 -24 60 -24q37 0 59.5 24q22.5 24 22.5 62q0 36 -22.5 61q-22.5 25 -59.5 25q-37 0 -60 -25t-23 -61z" />
-<glyph unicode="&#165;" horiz-adv-x="545" d="M112 337h85l-103 363h152l67 -263l-3 -74h5l30 76l173 261h142l-257 -363h87l-17 -80h-125l-12 -57h125l-17 -80h-125l-25 -120h-130l25 120h-124l17 80h124l12 57l-123 0z" />
-<glyph unicode="&#166;" horiz-adv-x="227" d="M60 213h107v-343h-107zM167 357h-107v343l107 0z" />
-<glyph unicode="&#167;" horiz-adv-x="505" d="M85 123q20 -11 50.5 -22.5q30.5 -11.5 71.5 -11.5q35 0 56 13.5q21 13.5 21 37.5q0 16 -15.5 27q-15.5 11 -38.5 21q-23 10 -50.5 21.5q-27.5 11.5 -50.5 27.5q-23 16 -38.5 39.5q-15.5 23.5 -15.5 58.5q0 45 24 76.5q24 31.5 56 54.5l48 16q-22 16 -33 38.5q-11 22.5 -12 47.5q0 30 14.5 57q14.5 27 40.5 46.5q26 19.5 62.5 31q36.5 11.5 79.5 11.5q56 0 93 -11.5q37 -11.5 63 -25.5l-37 -95q-20 11 -53.5 20q-33.5 9 -66.5 9q-35 0 -54 -14.5q-19 -14.5 -19 -37.5q0 -17 15.5 -27.5q15.5 -10.5 38.5 -19q23 -8.5 50 -17.5q27 -9 50 -24q23 -15 38.5 -38.5q15.5 -23.5 15.5 -59.5q0 -48 -24.5 -82.5q-24.5 -34.5 -54.5 -55.5l-51 -16q23 -16 34 -36.5q11 -20.5 10 -52.5q-1 -69 -55 -106.5q-54 -37.5 -143 -37.5q-55 0 -97 13.5q-42 13.5 -66 30.5zM297 270q23 12 44 32q21 20 21 48q0 17 -6 28q-6 11 -18 20q-12 9 -31 16.5q-19 7.5 -44 16.5q-22 -12 -41.5 -32q-19.5 -20 -19.5 -48q0 -31 22.5 -48t72.5 -33z" />
-<glyph unicode="&#168;" horiz-adv-x="472" d="M163 651q0 33 18.5 51.5q18.5 18.5 47.5 18.5q29 0 47.5 -18.5q18.5 -18.5 18.5 -51.5q0 -32 -18.5 -50q-18.5 -18 -47.5 -18q-29 0 -47.5 18q-18.5 18 -18.5 50zt0 0zM371 652q0 32 18.5 50.5q18.5 18.5 47.5 18.5q29 0 47.5 -18.5q18.5 -18.5 18.5 -50.5q0 -32 -18.5 -50.5q-18.5 -18.5 -47.5 -18.5q-29 0 -47.5 18.5t-18.5 50.5z" />
-<glyph unicode="&#169;" horiz-adv-x="836" d="M80 290q0 83 28 149.5q28 66.5 76.5 113.5q48.5 47 114.5 72.5q66 25.5 142 25.5q76 0 141.5 -25.5q65.5 -25.5 114.5 -72.5q49 -47 77 -113.5q28 -66.5 28 -149.5q0 -83 -28 -149.5q-28 -66.5 -77 -113.5q-49 -47 -114.5 -72.5q-65.5 -25.5 -141.5 -25.5q-83 0 -150 25.5q-67 25.5 -114 72.5q-47 47 -72 113.5q-25 66.5 -25 149.5zt0 0zM177 290q0 -62 20 -112q20 -50 55 -84.5q35 -34.5 83.5 -53q48.5 -18.5 105.5 -18.5q57 0 105.5 18.5q48.5 18.5 84 53q35.5 34.5 55 84.5q19.5 50 19.5 112q0 62 -19.5 112q-19.5 50 -55 84.5q-35.5 34.5 -84 53q-48.5 18.5 -105.5 18.5q-57 0 -105.5 -18.5q-48.5 -18.5 -83.5 -53q-35 -34.5 -55 -84.5q-20 -50 -20 -112zt0 0zM566 131q-22 -14 -55.5 -22.5q-33.5 -8.5 -71.5 -8.5q-81 0 -123.5 51q-42.5 51 -42.5 139q0 91 45.5 140.5q45.5 49.5 120.5 49.5q37 0 65.5 -8.5q28.5 -8.5 54.5 -23.5l-32 -86q-18 9 -32.5 12q-14.5 3 -28.5 3q-29 0 -46 -19.5q-17 -19.5 -17 -67.5q0 -42 18 -64.5q18 -22.5 52 -22.5q19 0 34 3.5q15 3.5 30 11.5z" />
-<glyph unicode="&#170;" horiz-adv-x="401" d="M121 674q28 14 72 24q44 10 101 10q60 0 84.5 -25q24.5 -25 24.5 -62q0 -25 -7 -56.5q-7 -31.5 -15.5 -64.5q-8.5 -33 -15 -64.5q-6.5 -31.5 -6.5 -55.5l-90 0l-3 46h-3q-14 -17 -41 -33.5q-27 -16.5 -69 -16.5q-23 0 -40.5 7q-17.5 7 -29 19q-11.5 12 -17.5 27.5q-6 15.5 -6 31.5q0 34 15 56.5q15 22.5 40 36.5q25 14 58 20q33 6 69 6q12 0 24 -0.5q12 -0.5 24 -1.5q8 25 -1 40.5q-9 15.5 -42 15.5q-38 0 -64.5 -7q-26.5 -7 -47.5 -15zM277 524q-8 1 -16.5 1.5q-8.5 0.5 -16.5 0.5q-30 0 -51 -9q-21 -9 -21 -33q0 -13 7.5 -21.5q7.5 -8.5 21.5 -8.5q30 0 44.5 11.5q14.5 11.5 24.5 23.5z" />
-<glyph unicode="&#171;" horiz-adv-x="465" d="M216 261l192 216l57 -58l-104 -122l-52 -37l33 -37l56 -121l-75 -54zM31 259l200 230l63 -64l-109 -126l-60 -37l39 -39l60 -126l-77 -59z" />
-<glyph unicode="&#172;" horiz-adv-x="527" d="M66 412h442v-226h-120v114l-322 0z" />
-<glyph unicode="&#173;" horiz-adv-x="343" d="M81 340h239l-25 -104l-239 0z" />
-<glyph unicode="&#174;" horiz-adv-x="693" d="M117 451q0 67 22.5 119.5q22.5 52.5 61 88.5q38.5 36 90 55q51.5 19 108.5 19q59 0 110.5 -19q51.5 -19 90 -55q38.5 -36 60.5 -88.5q22 -52.5 22 -119.5q0 -68 -22.5 -120.5q-22.5 -52.5 -61.5 -88.5q-39 -36 -90.5 -54.5q-51.5 -18.5 -108.5 -18.5q-59 0 -110.5 18.5q-51.5 18.5 -89.5 54.5q-38 36 -60 88.5q-22 52.5 -22 120.5zt0 0zM211 451q0 -48 15 -84q15 -36 41 -60q26 -24 60 -36q34 -12 72 -12q40 0 74.5 11.5q34.5 11.5 60 35.5q25.5 24 40 60q14.5 36 14.5 85q0 48 -15 84q-15 36 -41 60q-26 24 -60.5 36q-34.5 12 -72.5 12q-42 0 -76.5 -13q-34.5 -13 -59.5 -38q-25 -25 -38.5 -60.5q-13.5 -35.5 -13.5 -80.5zt0 0zM296 581q16 5 45 7.5q29 2.5 55 2.5q42 0 72 -17.5q30 -17.5 30 -60.5q0 -32 -20.5 -49q-20.5 -17 -50.5 -19l28 -14l65 -109h-61l-63 104l-48 15v-119h-52zM385 546q-11 0 -21 -0.5q-10 -0.5 -16 -3.5l0 -71h34q29 0 45 9q16 9 16 31q0 35 -58 35z" />
-<glyph unicode="&#175;" horiz-adv-x="421" d="M157 658h308l-19 -92l-308 0z" />
-<glyph unicode="&#176;" horiz-adv-x="437" d="M121 548q0 37 13 67.5q13 30.5 35.5 52.5q22.5 22 52.5 34q30 12 63 12q34 0 64.5 -11q30.5 -11 53 -32.5q22.5 -21.5 35.5 -52.5q13 -31 13 -70q0 -39 -13 -69.5q-13 -30.5 -35.5 -51.5q-22.5 -21 -53 -32q-30.5 -11 -64.5 -11q-33 0 -63 11q-30 11 -52.5 32q-22.5 21 -35.5 51.5q-13 30.5 -13 69.5zt0 0zM221 548q0 -32 19 -50.5q19 -18.5 46 -18.5q27 0 46 18.5q19 18.5 19 50.5q0 32 -19 51.5q-19 19.5 -46 19.5q-27 0 -46 -19.5t-19 -51.5z" />
-<glyph unicode="&#177;" horiz-adv-x="505" d="M58 517h162v165h117v-165h162v-112h-162v-106h-117v106h-162zM58 253h441v-112l-441 0z" />
-<glyph unicode="&#178;" horiz-adv-x="402" d="M446 707q-1 -60 -37.5 -110q-36.5 -50 -101.5 -98l-50 -25v-4l57 11h101l-22 -101h-297l16 71q29 18 67 44q38 26 71.5 55q33.5 29 56.5 59.5q23 30.5 24 57.5q0 18 -9.5 28q-9.5 10 -35.5 10q-26 0 -51 -9q-25 -9 -44 -19l-14 90q37 21 76.5 30.5q39.5 9.5 73.5 9.5q57 0 88 -26t31 -74z" />
-<glyph unicode="&#179;" horiz-adv-x="402" d="M227 468q49 0 70 18.5q21 18.5 20 41.5q0 21 -14 30q-14 9 -63 10l-41 0l8 38l85 81l46 24l-56 -6h-108l21 95h269l-14 -62l-102 -93l-35 -17v-5l27 3q37 -2 61 -26q24 -24 24 -63q0 -42 -15.5 -73q-15.5 -31 -42.5 -51q-27 -20 -64 -30q-37 -10 -80 -10q-36 0 -67.5 6.5q-31.5 6.5 -51.5 17.5l40 90q40 -19 83 -19z" />
-<glyph unicode="&#180;" horiz-adv-x="267" d="M210 720h125l-6 -30l-133 -124l-69 0z" />
-<glyph unicode="&#181;" horiz-adv-x="542" d="M238 500l-59 -273q-7 -31 -7 -59q0 -35 16 -53.5q16 -18.5 51 -18.5q45 0 76 24q31 24 51 65l68 315h123l-72 -337q-8 -41 -14.5 -82.5q-6.5 -41.5 -5.5 -80.5l-90 0l-17 74h-3q-24 -35 -60.5 -60.5q-36.5 -25.5 -86.5 -25.5q-38 0 -56 17q-18 17 -26 43l-5 0l-4 -115l-28 -133h-123l148 700z" />
-<glyph unicode="&#182;" horiz-adv-x="538" d="M399 700h106v-830h-106zM214 294q-33 0 -61 16.5q-28 16.5 -48.5 45q-20.5 28.5 -31.5 65q-11 36.5 -11 77.5q0 40 13 76.5q13 36.5 37 64.5q24 28 58 44.5q34 16.5 76 16.5h74v-830l-106 0z" />
-<glyph unicode="&#183;" horiz-adv-x="253" d="M73 316q0 35 22 55.5q22 20.5 58 20.5q37 0 59 -20.5q22 -20.5 22 -55.5q0 -35 -22 -56q-22 -21 -59 -21q-36 0 -58 21t-22 56z" />
-<glyph unicode="&#184;" horiz-adv-x="284" d="M112 -43q34 -2 52 -21q18 -19 18 -48q0 -26 -11.5 -45q-11.5 -19 -31 -31.5q-19.5 -12.5 -46 -18.5q-26.5 -6 -56.5 -6q-38 0 -77 9l20 48q51 -5 70 6q19 11 19 25q0 32 -78 30l75 95l79 0z" />
-<glyph unicode="&#185;" horiz-adv-x="402" d="M140 480h93l35 164l19 46l-35 -32l-63 -37l-34 73l175 113h82l-70 -327h83l-21 -100l-285 0z" />
-<glyph unicode="&#186;" horiz-adv-x="399" d="M60 499q0 54 18.5 94q18.5 40 48.5 66.5q30 26.5 66.5 39.5q36.5 13 72.5 13q66 0 100.5 -30.5q34.5 -30.5 34.5 -89.5q0 -57 -17 -98.5q-17 -41.5 -46 -68.5q-29 -27 -66.5 -40q-37.5 -13 -77.5 -13q-62 0 -98 34.5q-36 34.5 -36 92.5zt0 0zM170 505q-1 -22 10 -35.5q11 -13.5 32 -13.5q33 0 56 34.5q23 34.5 23 88.5q0 49 -43 49q-17 0 -31 -10q-14 -10 -25 -26.5q-11 -16.5 -17 -39t-5 -47.5z" />
-<glyph unicode="&#187;" horiz-adv-x="465" d="M280 270l-191 -220l-58 57l104 123l52 37l-35 38l-55 121l76 53zM465 268l-200 -230l-63 63l109 126l57 43l-37 39l-62 124l85 56z" />
-<glyph unicode="&#188;" horiz-adv-x="840" d="M618 715l85 -50l-430 -679l-86 53zM766 78h-72l-17 -78h-96l17 78h-196l14 67l265 283h87l-55 -261h72zM635 253l17 53h-5l-31 -49l-60 -66l-41 -32l52 8h50zM230 544l20 46l-36 -32l-63 -36l-37 75l179 110h81l-91 -427l-109 0z" />
-<glyph unicode="&#189;" horiz-adv-x="862" d="M619 715l85 -50l-430 -679l-86 53zM824 327q-1 -60 -37.5 -110q-36.5 -50 -101.5 -98l-50 -25v-4l57 11h101l-22 -101h-297l16 71q29 18 67 44q38 26 71.5 55q33.5 29 56.5 59.5q23 30.5 24 57.5q0 18 -9.5 28q-9.5 10 -35.5 10q-26 0 -51 -9q-25 -9 -44 -19l-14 90q37 21 76.5 30.5q39.5 9.5 73.5 9.5q57 0 88 -26q31 -26 31 -74zt0 0zM230 544l20 46l-36 -32l-63 -36l-37 75l179 110h81l-91 -427l-109 0z" />
-<glyph unicode="&#190;" horiz-adv-x="864" d="M643 715l85 -50l-430 -679l-86 53zM791 78h-72l-17 -78h-96l17 78h-196l14 67l265 283h87l-55 -261h72zM660 253l17 53h-5l-31 -49l-60 -66l-41 -32l52 8h50zM187 368q49 0 70 18.5q21 18.5 20 41.5q0 21 -14 30q-14 9 -63 10l-41 0l8 38l85 81l46 24l-56 -6h-108l21 95h269l-14 -62l-102 -93l-35 -17v-5l27 3q37 -2 61 -26q24 -24 24 -63q0 -42 -15.5 -73q-15.5 -31 -42.5 -51q-27 -20 -64 -30q-37 -10 -80 -10q-36 0 -67.5 6.5q-31.5 6.5 -51.5 17.5l40 90q40 -19 83 -19z" />
-<glyph unicode="&#191;" horiz-adv-x="430" d="M332 293q-6 -53 -24.5 -91.5q-18.5 -38.5 -43 -67q-24.5 -28.5 -52 -50q-27.5 -21.5 -50 -41.5q-22.5 -20 -37.5 -41q-15 -21 -15 -49q0 -27 15.5 -42q15.5 -15 55.5 -15q31 0 68 13.5q37 13.5 66 32.5l30 -94q-41 -26 -89 -43q-48 -17 -117 -17q-84 0 -123 35.5q-39 35.5 -39 95.5q0 53 16 89q16 36 41 63.5q25 27.5 55.5 49.5q30.5 22 58 46q27.5 24 49 53.5q21.5 29.5 29.5 72.5zM213 435q0 35 22 55.5q22 20.5 58 20.5q37 0 59 -20.5q22 -20.5 22 -55.5q0 -35 -22 -56q-22 -21 -59 -21q-36 0 -58 21t-22 56z" />
-<glyph unicode="&#192;" horiz-adv-x="582" d="M387 155h-204l-83 -155h-138l389 705h96l91 -705h-131zM240 265h142l-16 156l1 110h-5l-40 -111zM491 752h-90l-131 88l6 30l140 0z" />
-<glyph unicode="&#193;" horiz-adv-x="582" d="M387 155h-204l-83 -155h-138l389 705h96l91 -705h-131zM240 265h142l-16 156l1 110h-5l-40 -111zM441 870h157l-6 -30l-172 -88l-104 0z" />
-<glyph unicode="&#194;" horiz-adv-x="582" d="M387 155h-204l-83 -155h-138l389 705h96l91 -705h-131zM240 265h142l-16 156l1 110h-5l-40 -111zM388 870h87l101 -93l-8 -39h-88l-45 41l-13 34l-27 -33l-67 -42h-94l9 40z" />
-<glyph unicode="&#195;" horiz-adv-x="582" d="M387 155h-204l-83 -155h-138l389 705h96l91 -705h-131zM240 265h142l-16 156l1 110h-5l-40 -111zM240 800q38 35 69 48q31 13 58 13q21 0 40.5 -5.5q19.5 -5.5 38 -12q18.5 -6.5 36 -12q17.5 -5.5 35.5 -5.5q15 0 30 5q15 5 31 19l10 -67q-33 -27 -60 -37q-27 -10 -51 -10q-21 0 -39.5 5.5q-18.5 5.5 -36.5 11.5q-18 6 -35.5 11.5q-17.5 5.5 -36.5 5.5q-18 0 -37.5 -7q-19.5 -7 -42.5 -26z" />
-<glyph unicode="&#196;" horiz-adv-x="582" d="M387 155h-204l-83 -155h-138l389 705h96l91 -705h-131zM240 265h142l-16 156l1 110h-5l-40 -111zM246 798q0 29 20 43.5q20 14.5 52 14.5q32 0 52 -14.5q20 -14.5 20 -43.5q0 -29 -20 -43q-20 -14 -52 -14q-32 0 -52 14q-20 14 -20 43zt0 0zM450 798q0 29 20 43.5q20 14.5 52 14.5q32 0 52 -14.5q20 -14.5 20 -43.5q0 -29 -20 -43q-20 -14 -52 -14q-32 0 -52 14t-20 43z" />
-<glyph unicode="&#197;" horiz-adv-x="582" d="M286 771q0 18 6 34.5q6 16.5 20.5 29q14.5 12.5 39 19.5q24.5 7 62.5 7q70 0 99 -24q29 -24 29 -66q0 -32 -20.5 -55.5q-20.5 -23.5 -72.5 -29.5l89 -686h-131l-20 155h-204l-83 -155h-138l382 693q-32 11 -45 31q-13 20 -13 47zt0 0zM382 265l-16 156l1 110h-5l-40 -111l-82 -155zM370 771q0 -31 44 -31q25 0 35 8q10 8 10 23q0 33 -45 33q-44 0 -44 -33z" />
-<glyph unicode="&#198;" horiz-adv-x="826" d="M449 530l-44 -94l-116 -155h114l52 249zM379 170h-171l-128 -170h-146l547 700h133h271l-26 -122h-264l-35 -163h241l-26 -122h-240l-36 -171h269l-26 -122h-261l-138 0z" />
-<glyph unicode="&#199;" horiz-adv-x="537" d="M483 29q-65 -42 -157 -43l-22 -29q34 -2 52 -20.5q18 -18.5 18 -47.5q0 -26 -11.5 -45q-11.5 -19 -31 -31.5q-19.5 -12.5 -46 -18.5q-26.5 -6 -56.5 -6q-38 0 -77 9l20 48q51 -5 70 6q19 11 19 25q0 17 -20 23.5q-20 6.5 -58 5.5l69 88q-49 10 -85.5 35.5q-36.5 25.5 -60.5 62.5q-24 37 -36 83q-12 46 -12 98q0 118 33 201.5q33 83.5 87 137q54 53.5 123.5 78.5q69.5 25 142.5 25q57 0 97.5 -8.5q40.5 -8.5 63.5 -19.5l-51 -116q-20 11 -48 16.5q-28 5.5 -71 5.5q-51 0 -95 -21q-44 -21 -76 -60q-32 -39 -50.5 -95q-18.5 -56 -18.5 -127q0 -85 42.5 -133q42.5 -48 113.5 -48q45 0 74.5 9.5q29.5 9.5 55.5 23.5z" />
-<glyph unicode="&#200;" horiz-adv-x="503" d="M168 700h130h264l-26 -122h-264l-35 -163h241l-27 -122h-239l-37 -171h269l-25 -122h-269h-130zM452 752h-90l-131 88l6 30l140 0z" />
-<glyph unicode="&#201;" horiz-adv-x="503" d="M168 700h130h264l-26 -122h-264l-35 -163h241l-27 -122h-239l-37 -171h269l-25 -122h-269h-130zM423 870h157l-6 -30l-172 -88l-104 0z" />
-<glyph unicode="&#202;" horiz-adv-x="503" d="M168 700h130h264l-26 -122h-264l-35 -163h241l-27 -122h-239l-37 -171h269l-25 -122h-269h-130zM359 870h87l101 -93l-8 -39h-88l-45 41l-13 34l-27 -33l-67 -42h-94l9 40z" />
-<glyph unicode="&#203;" horiz-adv-x="503" d="M168 700h130h264l-26 -122h-264l-35 -163h241l-27 -122h-239l-37 -171h269l-25 -122h-269h-130zM210 798q0 29 20 43.5q20 14.5 52 14.5q32 0 52 -14.5q20 -14.5 20 -43.5q0 -29 -20 -43q-20 -14 -52 -14q-32 0 -52 14q-20 14 -20 43zt0 0zM414 798q0 29 20 43.5q20 14.5 52 14.5q32 0 52 -14.5q20 -14.5 20 -43.5q0 -29 -20 -43q-20 -14 -52 -14q-32 0 -52 14t-20 43z" />
-<glyph unicode="&#204;" horiz-adv-x="278" d="M183 700h129l-148 -700h-129zM333 752h-90l-131 88l6 30l140 0z" />
-<glyph unicode="&#205;" horiz-adv-x="278" d="M183 700h129l-148 -700h-129zM303 870h157l-6 -30l-172 -88l-104 0z" />
-<glyph unicode="&#206;" horiz-adv-x="278" d="M183 700h129l-148 -700h-129zM240 870h87l101 -93l-8 -39h-88l-45 41l-13 34l-27 -33l-67 -42h-94l9 40z" />
-<glyph unicode="&#207;" horiz-adv-x="278" d="M183 700h129l-148 -700h-129zM91 798q0 29 20 43.5q20 14.5 52 14.5q32 0 52 -14.5q20 -14.5 20 -43.5q0 -29 -20 -43q-20 -14 -52 -14q-32 0 -52 14q-20 14 -20 43zt0 0zM295 798q0 29 20 43.5q20 14.5 52 14.5q32 0 52 -14.5q20 -14.5 20 -43.5q0 -29 -20 -43q-20 -14 -52 -14q-32 0 -52 14t-20 43z" />
-<glyph unicode="&#208;" horiz-adv-x="640" d="M40 401h85l63 299q21 3 46 5q25 2 47.5 3q22.5 1 36.5 1q10 0 26 0.5q16 0.5 35 0.5q62 0 112 -15.5q50 -15.5 85.5 -47.5q35.5 -32 55 -82q19.5 -50 19.5 -119q0 -44 -7.5 -94.5q-7.5 -50.5 -25.5 -101.5q-18 -51 -49.5 -98q-31.5 -47 -79 -83q-47.5 -36 -114 -58q-66.5 -22 -154.5 -22q-15 0 -29 0.5q-14 0.5 -22 0.5q-18 1 -43.5 2.5q-25.5 1.5 -50 3q-24.5 1.5 -36.5 3.5l68 322h-85zM254 401h132l-17 -80h-132l-43 -207q4 -1 12.5 -1.5q8.5 -0.5 18.5 -1q10 -0.5 19 -0.5q9 0 14 0q70 0 119 31.5q49 31.5 79.5 79q30.5 47.5 44 103q13.5 55.5 13.5 103.5q0 80 -33.5 120q-33.5 40 -112.5 40q-19 0 -41 -1q-22 -1 -34 -3z" />
-<glyph unicode="&#209;" horiz-adv-x="631" d="M267 366l-33 112h-5l-9 -112l-77 -366h-123l150 705h90l172 -374l31 -109h6l7 109l79 369h123l-150 -705h-90zM259 800q38 35 69 48q31 13 58 13q21 0 40.5 -5.5q19.5 -5.5 38 -12q18.5 -6.5 36 -12q17.5 -5.5 35.5 -5.5q15 0 30 5q15 5 31 19l10 -67q-33 -27 -60 -37q-27 -10 -51 -10q-21 0 -39.5 5.5q-18.5 5.5 -36.5 11.5q-18 6 -35.5 11.5q-17.5 5.5 -36.5 5.5q-18 0 -37.5 -7q-19.5 -7 -42.5 -26z" />
-<glyph unicode="&#210;" horiz-adv-x="644" d="M58 262q0 93 25.5 175.5q25.5 82.5 72.5 144q47 61.5 113.5 97q66.5 35.5 148.5 35.5q54 0 97.5 -16q43.5 -16 74 -49.5q30.5 -33.5 47.5 -84.5q17 -51 17 -121q0 -94 -25.5 -177q-25.5 -83 -72 -145.5q-46.5 -62.5 -111 -98.5q-64.5 -36 -142.5 -36q-118 0 -181 69.5q-63 69.5 -64 206.5zt0 0zM195 266q0 -72 27.5 -115q27.5 -43 90.5 -43q46 0 83.5 27.5q37.5 27.5 64.5 74q27 46.5 41.5 106.5q14.5 60 14.5 125q0 79 -31 115q-31 36 -85 36q-45 0 -82.5 -26q-37.5 -26 -65 -70.5q-27.5 -44.5 -43 -104q-15.5 -59.5 -15.5 -125.5zt0 0zM511 752h-90l-131 88l6 30l140 0z" />
-<glyph unicode="&#211;" horiz-adv-x="644" d="M58 262q0 93 25.5 175.5q25.5 82.5 72.5 144q47 61.5 113.5 97q66.5 35.5 148.5 35.5q54 0 97.5 -16q43.5 -16 74 -49.5q30.5 -33.5 47.5 -84.5q17 -51 17 -121q0 -94 -25.5 -177q-25.5 -83 -72 -145.5q-46.5 -62.5 -111 -98.5q-64.5 -36 -142.5 -36q-118 0 -181 69.5q-63 69.5 -64 206.5zt0 0zM195 266q0 -72 27.5 -115q27.5 -43 90.5 -43q46 0 83.5 27.5q37.5 27.5 64.5 74q27 46.5 41.5 106.5q14.5 60 14.5 125q0 79 -31 115q-31 36 -85 36q-45 0 -82.5 -26q-37.5 -26 -65 -70.5q-27.5 -44.5 -43 -104q-15.5 -59.5 -15.5 -125.5zt0 0zM491 870h157l-6 -30l-172 -88l-104 0z" />
-<glyph unicode="&#212;" horiz-adv-x="644" d="M58 262q0 93 25.5 175.5q25.5 82.5 72.5 144q47 61.5 113.5 97q66.5 35.5 148.5 35.5q54 0 97.5 -16q43.5 -16 74 -49.5q30.5 -33.5 47.5 -84.5q17 -51 17 -121q0 -94 -25.5 -177q-25.5 -83 -72 -145.5q-46.5 -62.5 -111 -98.5q-64.5 -36 -142.5 -36q-118 0 -181 69.5q-63 69.5 -64 206.5zt0 0zM195 266q0 -72 27.5 -115q27.5 -43 90.5 -43q46 0 83.5 27.5q37.5 27.5 64.5 74q27 46.5 41.5 106.5q14.5 60 14.5 125q0 79 -31 115q-31 36 -85 36q-45 0 -82.5 -26q-37.5 -26 -65 -70.5q-27.5 -44.5 -43 -104q-15.5 -59.5 -15.5 -125.5zt0 0zM423 870h87l101 -93l-8 -39h-88l-45 41l-13 34l-27 -33l-67 -42h-94l9 40z" />
-<glyph unicode="&#213;" horiz-adv-x="644" d="M58 262q0 93 25.5 175.5q25.5 82.5 72.5 144q47 61.5 113.5 97q66.5 35.5 148.5 35.5q54 0 97.5 -16q43.5 -16 74 -49.5q30.5 -33.5 47.5 -84.5q17 -51 17 -121q0 -94 -25.5 -177q-25.5 -83 -72 -145.5q-46.5 -62.5 -111 -98.5q-64.5 -36 -142.5 -36q-118 0 -181 69.5q-63 69.5 -64 206.5zt0 0zM195 266q0 -72 27.5 -115q27.5 -43 90.5 -43q46 0 83.5 27.5q37.5 27.5 64.5 74q27 46.5 41.5 106.5q14.5 60 14.5 125q0 79 -31 115q-31 36 -85 36q-45 0 -82.5 -26q-37.5 -26 -65 -70.5q-27.5 -44.5 -43 -104q-15.5 -59.5 -15.5 -125.5zt0 0zM268 800q38 35 69 48q31 13 58 13q21 0 40.5 -5.5q19.5 -5.5 38 -12q18.5 -6.5 36 -12q17.5 -5.5 35.5 -5.5q15 0 30 5q15 5 31 19l10 -67q-33 -27 -60 -37q-27 -10 -51 -10q-21 0 -39.5 5.5q-18.5 5.5 -36.5 11.5q-18 6 -35.5 11.5q-17.5 5.5 -36.5 5.5q-18 0 -37.5 -7q-19.5 -7 -42.5 -26z" />
-<glyph unicode="&#214;" horiz-adv-x="644" d="M58 262q0 93 25.5 175.5q25.5 82.5 72.5 144q47 61.5 113.5 97q66.5 35.5 148.5 35.5q54 0 97.5 -16q43.5 -16 74 -49.5q30.5 -33.5 47.5 -84.5q17 -51 17 -121q0 -94 -25.5 -177q-25.5 -83 -72 -145.5q-46.5 -62.5 -111 -98.5q-64.5 -36 -142.5 -36q-118 0 -181 69.5q-63 69.5 -64 206.5zt0 0zM195 266q0 -72 27.5 -115q27.5 -43 90.5 -43q46 0 83.5 27.5q37.5 27.5 64.5 74q27 46.5 41.5 106.5q14.5 60 14.5 125q0 79 -31 115q-31 36 -85 36q-45 0 -82.5 -26q-37.5 -26 -65 -70.5q-27.5 -44.5 -43 -104q-15.5 -59.5 -15.5 -125.5zt0 0zM270 798q0 29 20 43.5q20 14.5 52 14.5q32 0 52 -14.5q20 -14.5 20 -43.5q0 -29 -20 -43q-20 -14 -52 -14q-32 0 -52 14q-20 14 -20 43zt0 0zM474 798q0 29 20 43.5q20 14.5 52 14.5q32 0 52 -14.5q20 -14.5 20 -43.5q0 -29 -20 -43q-20 -14 -52 -14q-32 0 -52 14t-20 43z" />
-<glyph unicode="&#215;" horiz-adv-x="505" d="M146 547l131 -130l130 130l79 -81l-130 -127l130 -129l-79 -82l-130 131l-132 -132l-79 81l131 131l-129 127z" />
-<glyph unicode="&#216;" horiz-adv-x="644" d="M58 262q0 93 25.5 175.5q25.5 82.5 72.5 144q47 61.5 113.5 97q66.5 35.5 148.5 35.5q86 0 142 -40l27 32l72 -62l-37 -45q15 -30 23.5 -69q8.5 -39 8.5 -87q0 -94 -25.5 -177q-25.5 -83 -72 -145.5q-46.5 -62.5 -111 -98.5q-64.5 -36 -142.5 -36q-90 0 -149 41l-27 -32l-70 64l34 42q-16 32 -24.5 72q-8.5 40 -8.5 89zt0 0zM474 568q-29 24 -73 24q-45 0 -82.5 -26q-37.5 -26 -65 -70.5q-27.5 -44.5 -43 -104q-15.5 -59.5 -15.5 -125.5q0 -10 0 -19q0 -9 2 -18zM239 132q28 -24 74 -24q46 0 83.5 27.5q37.5 27.5 64.5 74q27 46.5 41.5 106.5q14.5 60 14.5 125q0 8 0 14.5q0 6.5 -1 13.5z" />
-<glyph unicode="&#217;" horiz-adv-x="602" d="M531 700h122l-95 -452q-15 -72 -39 -121.5q-24 -49.5 -58 -80.5q-34 -31 -80 -44.5q-46 -13.5 -106 -13.5q-58 0 -98 13.5q-40 13.5 -65.5 38.5q-25.5 25 -37 59q-11.5 34 -11.5 75q0 20 2.5 41q2.5 21 7.5 44l94 441h129l-92 -440q-8 -38 -8 -62q0 -48 25 -68q25 -20 73 -20q60 0 93 35q33 35 50 113zM489 752h-90l-131 88l6 30l140 0z" />
-<glyph unicode="&#218;" horiz-adv-x="602" d="M531 700h122l-95 -452q-15 -72 -39 -121.5q-24 -49.5 -58 -80.5q-34 -31 -80 -44.5q-46 -13.5 -106 -13.5q-58 0 -98 13.5q-40 13.5 -65.5 38.5q-25.5 25 -37 59q-11.5 34 -11.5 75q0 20 2.5 41q2.5 21 7.5 44l94 441h129l-92 -440q-8 -38 -8 -62q0 -48 25 -68q25 -20 73 -20q60 0 93 35q33 35 50 113zM487 870h157l-6 -30l-172 -88l-104 0z" />
-<glyph unicode="&#219;" horiz-adv-x="602" d="M531 700h122l-95 -452q-15 -72 -39 -121.5q-24 -49.5 -58 -80.5q-34 -31 -80 -44.5q-46 -13.5 -106 -13.5q-58 0 -98 13.5q-40 13.5 -65.5 38.5q-25.5 25 -37 59q-11.5 34 -11.5 75q0 20 2.5 41q2.5 21 7.5 44l94 441h129l-92 -440q-8 -38 -8 -62q0 -48 25 -68q25 -20 73 -20q60 0 93 35q33 35 50 113zM409 870h87l101 -93l-8 -39h-88l-45 41l-13 34l-27 -33l-67 -42h-94l9 40z" />
-<glyph unicode="&#220;" horiz-adv-x="602" d="M531 700h122l-95 -452q-15 -72 -39 -121.5q-24 -49.5 -58 -80.5q-34 -31 -80 -44.5q-46 -13.5 -106 -13.5q-58 0 -98 13.5q-40 13.5 -65.5 38.5q-25.5 25 -37 59q-11.5 34 -11.5 75q0 20 2.5 41q2.5 21 7.5 44l94 441h129l-92 -440q-8 -38 -8 -62q0 -48 25 -68q25 -20 73 -20q60 0 93 35q33 35 50 113zM256 798q0 29 20 43.5q20 14.5 52 14.5q32 0 52 -14.5q20 -14.5 20 -43.5q0 -29 -20 -43q-20 -14 -52 -14q-32 0 -52 14q-20 14 -20 43zt0 0zM460 798q0 29 20 43.5q20 14.5 52 14.5q32 0 52 -14.5q20 -14.5 20 -43.5q0 -29 -20 -43q-20 -14 -52 -14q-32 0 -52 14t-20 43z" />
-<glyph unicode="&#221;" horiz-adv-x="569" d="M231 260l-125 440h144l65 -263l-2 -74h4l31 76l175 261h149l-311 -439l-55 -261h-129zM451 870h157l-6 -30l-172 -88l-104 0z" />
-<glyph unicode="&#222;" horiz-adv-x="550" d="M169 700h129l-15 -71q13 1 26 1q13 0 26 0q51 0 94.5 -11.5q43.5 -11.5 76 -35.5q32.5 -24 50.5 -61.5q18 -37.5 18 -89.5q0 -78 -27 -130.5q-27 -52.5 -71.5 -85q-44.5 -32.5 -101.5 -46q-57 -13.5 -116 -13.5q-5 0 -15.5 0q-10.5 0 -22 0.5q-11.5 0.5 -22 1q-10.5 0.5 -15.5 1.5l-33 -160h-130zM257 507q-12 -58 -24 -114q-12 -56 -24 -113q4 -1 11 -2q7 -1 15.5 -1.5q8.5 -0.5 16 -1q7.5 -0.5 11.5 -0.5q34 0 65.5 7q31.5 7 55.5 23.5q24 16.5 38.5 43.5q14.5 27 14.5 66q0 30 -9.5 48.5q-9.5 18.5 -25.5 29.5q-16 11 -37.5 15q-21.5 4 -45.5 4q-18 0 -34.5 -1.5t-27.5 -3.5z" />
-<glyph unicode="&#223;" horiz-adv-x="608" d="M153 528q12 57 35 92q23 35 55 54.5q32 19.5 72 26.5q40 7 87 7q51 0 86 -11q35 -11 57 -29.5q22 -18.5 32 -43q10 -24.5 10 -52.5q0 -35 -11.5 -60q-11.5 -25 -28.5 -43q-17 -18 -37.5 -31q-20.5 -13 -37.5 -25q-17 -12 -28.5 -25q-11.5 -13 -11.5 -30q0 -17 11.5 -28q11.5 -11 28.5 -20q17 -9 37.5 -19q20.5 -10 37.5 -25.5q17 -15.5 28.5 -39q11.5 -23.5 11.5 -59.5q0 -39 -17.5 -72.5q-17.5 -33.5 -48 -57.5q-30.5 -24 -72 -37.5q-41.5 -13.5 -89.5 -13.5q-41 0 -81 11.5q-40 11.5 -65 28.5l56 97q21 -13 44.5 -23q23.5 -10 57.5 -10q15 0 30 5q15 5 27 14q12 9 19.5 22.5q7.5 13.5 7.5 30.5q0 19 -11.5 31.5q-11.5 12.5 -29 22.5q-17.5 10 -38 20.5q-20.5 10.5 -38 25q-17.5 14.5 -29 35.5q-11.5 21 -11.5 53q0 29 11.5 50.5q11.5 21.5 29 37.5q17.5 16 37.5 28.5q20 12.5 37.5 24.5q17.5 12 29 25.5q11.5 13.5 11.5 31.5q0 23 -18 37.5q-18 14.5 -52 14.5q-48 0 -77 -26.5q-29 -26.5 -40 -85.5l-89 -488q-9 -51 -21 -90q-12 -39 -32.5 -65q-20.5 -26 -50.5 -39.5q-30 -13.5 -74 -13.5q-36 0 -70.5 5.5q-34.5 5.5 -59.5 22.5l34 91q17 -7 34 -9q17 -2 43 -2q32 0 49.5 25q17.5 25 25.5 75l71 398h-82l20 102h81l6 28z" />
-<glyph unicode="&#224;" horiz-adv-x="503" d="M444 200q-8 -38 -11.5 -77q-3.5 -39 -3.5 -74q0 -14 0.5 -26.5q0.5 -12.5 1.5 -23.5l-91 0l-14 86h-4q-11 -18 -28.5 -35.5q-17.5 -17.5 -38.5 -32q-21 -14.5 -44.5 -23q-23.5 -8.5 -48.5 -8.5q-66 0 -97.5 43q-31.5 43 -31.5 115q0 73 18.5 140q18.5 67 57.5 118q39 51 98.5 81.5q59.5 30.5 141.5 30.5q35 0 76.5 -6.5q41.5 -6.5 80.5 -17.5zM209 89q18 0 34 7.5q16 7.5 29.5 19.5q13.5 12 24 26q10.5 14 18.5 26l50 233q-11 5 -25.5 7.5q-14.5 2.5 -28.5 2.5q-36 0 -64 -21.5q-28 -21.5 -47.5 -56q-19.5 -34.5 -29.5 -78q-10 -43.5 -10 -87.5q0 -32 10.5 -55.5q10.5 -23.5 38.5 -23.5zt0 0zM387 566h-69l-91 124l7 30l129 0z" />
-<glyph unicode="&#225;" horiz-adv-x="503" d="M444 200q-8 -38 -11.5 -77q-3.5 -39 -3.5 -74q0 -14 0.5 -26.5q0.5 -12.5 1.5 -23.5l-91 0l-14 86h-4q-11 -18 -28.5 -35.5q-17.5 -17.5 -38.5 -32q-21 -14.5 -44.5 -23q-23.5 -8.5 -48.5 -8.5q-66 0 -97.5 43q-31.5 43 -31.5 115q0 73 18.5 140q18.5 67 57.5 118q39 51 98.5 81.5q59.5 30.5 141.5 30.5q35 0 76.5 -6.5q41.5 -6.5 80.5 -17.5zM209 89q18 0 34 7.5q16 7.5 29.5 19.5q13.5 12 24 26q10.5 14 18.5 26l50 233q-11 5 -25.5 7.5q-14.5 2.5 -28.5 2.5q-36 0 -64 -21.5q-28 -21.5 -47.5 -56q-19.5 -34.5 -29.5 -78q-10 -43.5 -10 -87.5q0 -32 10.5 -55.5q10.5 -23.5 38.5 -23.5zt0 0zM381 720h125l-6 -30l-133 -124l-69 0z" />
-<glyph unicode="&#226;" horiz-adv-x="503" d="M444 200q-8 -38 -11.5 -77q-3.5 -39 -3.5 -74q0 -14 0.5 -26.5q0.5 -12.5 1.5 -23.5l-91 0l-14 86h-4q-11 -18 -28.5 -35.5q-17.5 -17.5 -38.5 -32q-21 -14.5 -44.5 -23q-23.5 -8.5 -48.5 -8.5q-66 0 -97.5 43q-31.5 43 -31.5 115q0 73 18.5 140q18.5 67 57.5 118q39 51 98.5 81.5q59.5 30.5 141.5 30.5q35 0 76.5 -6.5q41.5 -6.5 80.5 -17.5zM209 89q18 0 34 7.5q16 7.5 29.5 19.5q13.5 12 24 26q10.5 14 18.5 26l50 233q-11 5 -25.5 7.5q-14.5 2.5 -28.5 2.5q-36 0 -64 -21.5q-28 -21.5 -47.5 -56q-19.5 -34.5 -29.5 -78q-10 -43.5 -10 -87.5q0 -32 10.5 -55.5q10.5 -23.5 38.5 -23.5zt0 0zM345 732h82l67 -182h-96l-24 66l-4 49l-27 -49l-57 -66l-97 0z" />
-<glyph unicode="&#227;" horiz-adv-x="503" d="M444 200q-8 -38 -11.5 -77q-3.5 -39 -3.5 -74q0 -14 0.5 -26.5q0.5 -12.5 1.5 -23.5l-91 0l-14 86h-4q-11 -18 -28.5 -35.5q-17.5 -17.5 -38.5 -32q-21 -14.5 -44.5 -23q-23.5 -8.5 -48.5 -8.5q-66 0 -97.5 43q-31.5 43 -31.5 115q0 73 18.5 140q18.5 67 57.5 118q39 51 98.5 81.5q59.5 30.5 141.5 30.5q35 0 76.5 -6.5q41.5 -6.5 80.5 -17.5zM209 89q18 0 34 7.5q16 7.5 29.5 19.5q13.5 12 24 26q10.5 14 18.5 26l50 233q-11 5 -25.5 7.5q-14.5 2.5 -28.5 2.5q-36 0 -64 -21.5q-28 -21.5 -47.5 -56q-19.5 -34.5 -29.5 -78q-10 -43.5 -10 -87.5q0 -32 10.5 -55.5q10.5 -23.5 38.5 -23.5zt0 0zM196 658q35 37 61.5 51q26.5 14 48.5 14q18 0 33.5 -7q15.5 -7 31 -15q15.5 -8 31 -15q15.5 -7 33.5 -7q14 0 30.5 6q16.5 6 36.5 21l4 -70q-32 -32 -57 -44.5q-25 -12.5 -46 -12.5q-18 0 -34 6.5q-16 6.5 -32 14.5q-16 8 -32 14.5q-16 6.5 -34 6.5q-15 0 -33 -6q-18 -6 -38 -22z" />
-<glyph unicode="&#228;" horiz-adv-x="503" d="M444 200q-8 -38 -11.5 -77q-3.5 -39 -3.5 -74q0 -14 0.5 -26.5q0.5 -12.5 1.5 -23.5l-91 0l-14 86h-4q-11 -18 -28.5 -35.5q-17.5 -17.5 -38.5 -32q-21 -14.5 -44.5 -23q-23.5 -8.5 -48.5 -8.5q-66 0 -97.5 43q-31.5 43 -31.5 115q0 73 18.5 140q18.5 67 57.5 118q39 51 98.5 81.5q59.5 30.5 141.5 30.5q35 0 76.5 -6.5q41.5 -6.5 80.5 -17.5zM209 89q18 0 34 7.5q16 7.5 29.5 19.5q13.5 12 24 26q10.5 14 18.5 26l50 233q-11 5 -25.5 7.5q-14.5 2.5 -28.5 2.5q-36 0 -64 -21.5q-28 -21.5 -47.5 -56q-19.5 -34.5 -29.5 -78q-10 -43.5 -10 -87.5q0 -32 10.5 -55.5q10.5 -23.5 38.5 -23.5zt0 0zM170 651q0 33 18.5 51.5q18.5 18.5 47.5 18.5q29 0 47.5 -18.5q18.5 -18.5 18.5 -51.5q0 -32 -18.5 -50q-18.5 -18 -47.5 -18q-29 0 -47.5 18q-18.5 18 -18.5 50zt0 0zM378 652q0 32 18.5 50.5q18.5 18.5 47.5 18.5q29 0 47.5 -18.5q18.5 -18.5 18.5 -50.5q0 -32 -18.5 -50.5q-18.5 -18.5 -47.5 -18.5q-29 0 -47.5 18.5t-18.5 50.5z" />
-<glyph unicode="&#229;" horiz-adv-x="503" d="M444 200q-8 -38 -11.5 -77q-3.5 -39 -3.5 -74q0 -14 0.5 -26.5q0.5 -12.5 1.5 -23.5l-91 0l-14 86h-4q-11 -18 -28.5 -35.5q-17.5 -17.5 -38.5 -32q-21 -14.5 -44.5 -23q-23.5 -8.5 -48.5 -8.5q-66 0 -97.5 43q-31.5 43 -31.5 115q0 73 18.5 140q18.5 67 57.5 118q39 51 98.5 81.5q59.5 30.5 141.5 30.5q35 0 76.5 -6.5q41.5 -6.5 80.5 -17.5zM209 89q18 0 34 7.5q16 7.5 29.5 19.5q13.5 12 24 26q10.5 14 18.5 26l50 233q-11 5 -25.5 7.5q-14.5 2.5 -28.5 2.5q-36 0 -64 -21.5q-28 -21.5 -47.5 -56q-19.5 -34.5 -29.5 -78q-10 -43.5 -10 -87.5q0 -32 10.5 -55.5q10.5 -23.5 38.5 -23.5zt0 0zM254 647q0 42 28.5 69q28.5 27 82.5 27q51 0 81 -24.5q30 -24.5 30 -71.5q0 -39 -29.5 -66.5q-29.5 -27.5 -81.5 -27.5q-53 0 -82 25.5q-29 25.5 -29 68.5zt0 0zM326 647q0 -16 11.5 -24.5q11.5 -8.5 27.5 -8.5q17 0 28 8q11 8 11 25q0 17 -11.5 25.5q-11.5 8.5 -27.5 8.5q-16 0 -27.5 -8t-11.5 -26z" />
-<glyph unicode="&#230;" horiz-adv-x="744" d="M312 223q-8 1 -16.5 1q-8.5 0 -16.5 0q-57 0 -96 -18.5q-39 -18.5 -39 -57.5q0 -27 14 -39q14 -12 37 -12q18 0 34.5 7.5q16.5 7.5 30.5 18q14 10.5 25 22q11 11.5 18 20.5zM315 77q-32 -36 -74 -60.5q-42 -24.5 -99 -24.5q-33 0 -56.5 10.5q-23.5 10.5 -38.5 28q-15 17.5 -22.5 40.5q-7.5 23 -7.5 47q0 49 22 84q22 35 60 57q38 22 88 32.5q50 10.5 107 10.5q8 0 16.5 0q8.5 0 16.5 -1q11 38 11 59q0 24 -15 35.5q-15 11.5 -51 11.5q-33 0 -70 -8q-37 -8 -69 -21l-18 93q41 20 94.5 29.5q53.5 9.5 103.5 9.5q46 0 78 -14.5q32 -14.5 45 -45.5q29 31 72.5 47.5q43.5 16.5 88.5 16.5q42 0 71.5 -9.5q29.5 -9.5 48 -26.5q18.5 -17 27 -39.5q8.5 -22.5 8.5 -49.5q0 -56 -26.5 -90q-26.5 -34 -71.5 -53.5q-45 -19.5 -104 -26.5q-59 -7 -123 -7q-1 -8 -1.5 -15.5q-0.5 -7.5 -0.5 -14.5q0 -45 23 -69q23 -24 76 -24q38 0 71.5 10.5q33.5 10.5 53.5 22.5l23 -86q-34 -24 -85.5 -37q-51.5 -13 -102.5 -13q-66 0 -106.5 24q-40.5 24 -57.5 67zM447 292q32 0 65 1.5q33 1.5 60 9q27 7.5 44 23q17 15.5 17 42.5q0 17 -12 31.5q-12 14.5 -45 14.5q-53 0 -83.5 -35.5t-45.5 -86.5z" />
-<glyph unicode="&#231;" horiz-adv-x="412" d="M370 41q-26 -19 -58 -33q-32 -14 -66 -19l-24 -32q34 -2 52 -20.5q18 -18.5 18 -47.5q0 -26 -11.5 -45q-11.5 -19 -31 -31.5q-19.5 -12.5 -46 -18.5q-26.5 -6 -56.5 -6q-38 0 -77 9l20 48q51 -5 70 6q19 11 19 25q0 17 -20 23.5q-20 6.5 -58 5.5l66 85q-36 6 -61 21.5q-25 15.5 -41 38q-16 22.5 -23.5 50.5q-7.5 28 -7.5 58q0 84 24 150q24 66 63.5 111.5q39.5 45.5 90 70q50.5 24.5 103.5 24.5q47 0 74.5 -9q27.5 -9 49.5 -20l-46 -98q-19 11 -39.5 15q-20.5 4 -44.5 4q-27 0 -52.5 -17.5q-25.5 -17.5 -46 -46q-20.5 -28.5 -32.5 -66.5q-12 -38 -12 -78q0 -51 22 -77.5q22 -26.5 58 -26.5q30 0 55.5 9.5q25.5 9.5 45.5 21.5z" />
-<glyph unicode="&#232;" horiz-adv-x="466" d="M402 48q-31 -26 -80 -44q-49 -18 -114 -18q-81 0 -127.5 47.5q-46.5 47.5 -46.5 132.5q0 80 25 144.5q25 64.5 65.5 109.5q40.5 45 91.5 69.5q51 24.5 102 24.5q41 0 70.5 -10.5q29.5 -10.5 48.5 -29q19 -18.5 28 -42.5q9 -24 9 -51q0 -41 -21 -72q-21 -31 -58.5 -51.5q-37.5 -20.5 -90.5 -31q-53 -10.5 -116 -10.5q-8 0 -15 0.5q-7 0.5 -15 0.5q-2 -12 -3 -21.5q-1 -9.5 -1 -17.5q0 -45 23.5 -67q23.5 -22 66.5 -22q44 0 79 13q35 13 53 26zM176 295q28 0 59.5 2q31.5 2 58.5 9.5q27 7.5 45 22q18 14.5 18 39.5q0 15 -11 30.5q-11 15.5 -46 15.5q-44 0 -76.5 -34q-32.5 -34 -47.5 -85zt0 0zM367 566h-69l-91 124l7 30l129 0z" />
-<glyph unicode="&#233;" horiz-adv-x="466" d="M402 48q-31 -26 -80 -44q-49 -18 -114 -18q-81 0 -127.5 47.5q-46.5 47.5 -46.5 132.5q0 80 25 144.5q25 64.5 65.5 109.5q40.5 45 91.5 69.5q51 24.5 102 24.5q41 0 70.5 -10.5q29.5 -10.5 48.5 -29q19 -18.5 28 -42.5q9 -24 9 -51q0 -41 -21 -72q-21 -31 -58.5 -51.5q-37.5 -20.5 -90.5 -31q-53 -10.5 -116 -10.5q-8 0 -15 0.5q-7 0.5 -15 0.5q-2 -12 -3 -21.5q-1 -9.5 -1 -17.5q0 -45 23.5 -67q23.5 -22 66.5 -22q44 0 79 13q35 13 53 26zM176 295q28 0 59.5 2q31.5 2 58.5 9.5q27 7.5 45 22q18 14.5 18 39.5q0 15 -11 30.5q-11 15.5 -46 15.5q-44 0 -76.5 -34q-32.5 -34 -47.5 -85zt0 0zM365 720h125l-6 -30l-133 -124l-69 0z" />
-<glyph unicode="&#234;" horiz-adv-x="466" d="M402 48q-31 -26 -80 -44q-49 -18 -114 -18q-81 0 -127.5 47.5q-46.5 47.5 -46.5 132.5q0 80 25 144.5q25 64.5 65.5 109.5q40.5 45 91.5 69.5q51 24.5 102 24.5q41 0 70.5 -10.5q29.5 -10.5 48.5 -29q19 -18.5 28 -42.5q9 -24 9 -51q0 -41 -21 -72q-21 -31 -58.5 -51.5q-37.5 -20.5 -90.5 -31q-53 -10.5 -116 -10.5q-8 0 -15 0.5q-7 0.5 -15 0.5q-2 -12 -3 -21.5q-1 -9.5 -1 -17.5q0 -45 23.5 -67q23.5 -22 66.5 -22q44 0 79 13q35 13 53 26zM176 295q28 0 59.5 2q31.5 2 58.5 9.5q27 7.5 45 22q18 14.5 18 39.5q0 15 -11 30.5q-11 15.5 -46 15.5q-44 0 -76.5 -34q-32.5 -34 -47.5 -85zt0 0zM322 732h82l67 -182h-96l-24 66l-4 49l-27 -49l-57 -66l-97 0z" />
-<glyph unicode="&#235;" horiz-adv-x="466" d="M402 48q-31 -26 -80 -44q-49 -18 -114 -18q-81 0 -127.5 47.5q-46.5 47.5 -46.5 132.5q0 80 25 144.5q25 64.5 65.5 109.5q40.5 45 91.5 69.5q51 24.5 102 24.5q41 0 70.5 -10.5q29.5 -10.5 48.5 -29q19 -18.5 28 -42.5q9 -24 9 -51q0 -41 -21 -72q-21 -31 -58.5 -51.5q-37.5 -20.5 -90.5 -31q-53 -10.5 -116 -10.5q-8 0 -15 0.5q-7 0.5 -15 0.5q-2 -12 -3 -21.5q-1 -9.5 -1 -17.5q0 -45 23.5 -67q23.5 -22 66.5 -22q44 0 79 13q35 13 53 26zM176 295q28 0 59.5 2q31.5 2 58.5 9.5q27 7.5 45 22q18 14.5 18 39.5q0 15 -11 30.5q-11 15.5 -46 15.5q-44 0 -76.5 -34q-32.5 -34 -47.5 -85zt0 0zM163 651q0 33 18.5 51.5q18.5 18.5 47.5 18.5q29 0 47.5 -18.5q18.5 -18.5 18.5 -51.5q0 -32 -18.5 -50q-18.5 -18 -47.5 -18q-29 0 -47.5 18q-18.5 18 -18.5 50zt0 0zM371 652q0 32 18.5 50.5q18.5 18.5 47.5 18.5q29 0 47.5 -18.5q18.5 -18.5 18.5 -50.5q0 -32 -18.5 -50.5q-18.5 -18.5 -47.5 -18.5q-29 0 -47.5 18.5t-18.5 50.5z" />
-<glyph unicode="&#236;" horiz-adv-x="256" d="M133 500h123l-106 -500h-123zM264 566h-69l-91 124l7 30l129 0z" />
-<glyph unicode="&#237;" horiz-adv-x="256" d="M133 500h123l-106 -500h-123zM237 720h125l-6 -30l-133 -124l-69 0z" />
-<glyph unicode="&#238;" horiz-adv-x="256" d="M133 500h123l-106 -500h-123zM203 732h82l67 -182h-96l-24 66l-4 49l-27 -49l-57 -66l-97 0z" />
-<glyph unicode="&#239;" horiz-adv-x="256" d="M133 500h123l-106 -500h-123zM54 651q0 33 18.5 51.5q18.5 18.5 47.5 18.5q29 0 47.5 -18.5q18.5 -18.5 18.5 -51.5q0 -32 -18.5 -50q-18.5 -18 -47.5 -18q-29 0 -47.5 18q-18.5 18 -18.5 50zt0 0zM262 652q0 32 18.5 50.5q18.5 18.5 47.5 18.5q29 0 47.5 -18.5q18.5 -18.5 18.5 -50.5q0 -32 -18.5 -50.5q-18.5 -18.5 -47.5 -18.5q-29 0 -47.5 18.5t-18.5 50.5z" />
-<glyph unicode="&#240;" horiz-adv-x="508" d="M262 592l70 29q-18 18 -39.5 31q-21.5 13 -44.5 21l97 41q45 -17 82 -54l73 30l28 -54l-64 -27q17 -31 27 -69q10 -38 10 -83q0 -123 -23.5 -212q-23.5 -89 -63.5 -146.5q-40 -57.5 -92.5 -85q-52.5 -27.5 -110.5 -27.5q-80 0 -127 47.5q-47 47.5 -47 138.5q0 70 20.5 130q20.5 60 55 104q34.5 44 80 68.5q45.5 24.5 96.5 24.5q69 0 101 -38q2 32 -4 58.5q-6 26.5 -17 49.5l-75 -31zM164 177q0 -42 16.5 -65q16.5 -23 45.5 -23q39 0 66.5 28q27.5 28 44.5 68.5q17 40.5 25 86.5q8 46 7 81q-8 20 -26.5 32q-18.5 12 -44.5 12q-30 0 -54.5 -19q-24.5 -19 -42 -50q-17.5 -31 -27.5 -70.5t-10 -80.5z" />
-<glyph unicode="&#241;" horiz-adv-x="521" d="M294 0l66 310q6 28 6 49q0 22 -9 34.5q-9 12.5 -33 12.5q-18 0 -36 -9q-18 -9 -34 -24q-16 -15 -30 -33.5q-14 -18.5 -24 -37.5l-64 -302h-123l106 500h93l-5 -88h4q13 16 30.5 34q17.5 18 40.5 33q23 15 51.5 25q28.5 10 64.5 10q45 0 72 -24.5q27 -24.5 27 -81.5q0 -15 -1.5 -32q-1.5 -17 -6.5 -37l-72 -339zM202 658q35 37 61.5 51q26.5 14 48.5 14q18 0 33.5 -7q15.5 -7 31 -15q15.5 -8 31 -15q15.5 -7 33.5 -7q14 0 30.5 6q16.5 6 36.5 21l4 -70q-32 -32 -57 -44.5q-25 -12.5 -46 -12.5q-18 0 -34 6.5q-16 6.5 -32 14.5q-16 8 -32 14.5q-16 6.5 -34 6.5q-15 0 -33 -6q-18 -6 -38 -22z" />
-<glyph unicode="&#242;" horiz-adv-x="496" d="M34 162q0 79 22.5 144q22.5 65 60 111q37.5 46 87 71.5q49.5 25.5 103.5 25.5q48 0 81 -15q33 -15 53.5 -40q20.5 -25 29.5 -57q9 -32 9 -66q0 -78 -22 -142.5q-22 -64.5 -59 -110.5q-37 -46 -86 -71.5q-49 -25.5 -103 -25.5q-47 0 -80 15.5q-33 15.5 -54.5 40.5q-21.5 25 -31.5 56.5q-10 31.5 -10 63.5zt0 0zM161 179q0 -90 65 -90q24 0 47 21q23 21 41 55q18 34 28.5 77q10.5 43 10.5 86q0 40 -13.5 61.5q-13.5 21.5 -50.5 21.5q-24 0 -47 -20q-23 -20 -41 -52.5q-18 -32.5 -29 -74.5q-11 -42 -11 -85zt0 0zM375 566h-69l-91 124l7 30l129 0z" />
-<glyph unicode="&#243;" horiz-adv-x="496" d="M34 162q0 79 22.5 144q22.5 65 60 111q37.5 46 87 71.5q49.5 25.5 103.5 25.5q48 0 81 -15q33 -15 53.5 -40q20.5 -25 29.5 -57q9 -32 9 -66q0 -78 -22 -142.5q-22 -64.5 -59 -110.5q-37 -46 -86 -71.5q-49 -25.5 -103 -25.5q-47 0 -80 15.5q-33 15.5 -54.5 40.5q-21.5 25 -31.5 56.5q-10 31.5 -10 63.5zt0 0zM161 179q0 -90 65 -90q24 0 47 21q23 21 41 55q18 34 28.5 77q10.5 43 10.5 86q0 40 -13.5 61.5q-13.5 21.5 -50.5 21.5q-24 0 -47 -20q-23 -20 -41 -52.5q-18 -32.5 -29 -74.5q-11 -42 -11 -85zt0 0zM363 720h125l-6 -30l-133 -124l-69 0z" />
-<glyph unicode="&#244;" horiz-adv-x="496" d="M34 162q0 79 22.5 144q22.5 65 60 111q37.5 46 87 71.5q49.5 25.5 103.5 25.5q48 0 81 -15q33 -15 53.5 -40q20.5 -25 29.5 -57q9 -32 9 -66q0 -78 -22 -142.5q-22 -64.5 -59 -110.5q-37 -46 -86 -71.5q-49 -25.5 -103 -25.5q-47 0 -80 15.5q-33 15.5 -54.5 40.5q-21.5 25 -31.5 56.5q-10 31.5 -10 63.5zt0 0zM161 179q0 -90 65 -90q24 0 47 21q23 21 41 55q18 34 28.5 77q10.5 43 10.5 86q0 40 -13.5 61.5q-13.5 21.5 -50.5 21.5q-24 0 -47 -20q-23 -20 -41 -52.5q-18 -32.5 -29 -74.5q-11 -42 -11 -85zt0 0zM319 732h82l67 -182h-96l-24 66l-4 49l-27 -49l-57 -66l-97 0z" />
-<glyph unicode="&#245;" horiz-adv-x="496" d="M34 162q0 79 22.5 144q22.5 65 60 111q37.5 46 87 71.5q49.5 25.5 103.5 25.5q48 0 81 -15q33 -15 53.5 -40q20.5 -25 29.5 -57q9 -32 9 -66q0 -78 -22 -142.5q-22 -64.5 -59 -110.5q-37 -46 -86 -71.5q-49 -25.5 -103 -25.5q-47 0 -80 15.5q-33 15.5 -54.5 40.5q-21.5 25 -31.5 56.5q-10 31.5 -10 63.5zt0 0zM161 179q0 -90 65 -90q24 0 47 21q23 21 41 55q18 34 28.5 77q10.5 43 10.5 86q0 40 -13.5 61.5q-13.5 21.5 -50.5 21.5q-24 0 -47 -20q-23 -20 -41 -52.5q-18 -32.5 -29 -74.5q-11 -42 -11 -85zt0 0zM178 658q35 37 61.5 51q26.5 14 48.5 14q18 0 33.5 -7q15.5 -7 31 -15q15.5 -8 31 -15q15.5 -7 33.5 -7q14 0 30.5 6q16.5 6 36.5 21l4 -70q-32 -32 -57 -44.5q-25 -12.5 -46 -12.5q-18 0 -34 6.5q-16 6.5 -32 14.5q-16 8 -32 14.5q-16 6.5 -34 6.5q-15 0 -33 -6q-18 -6 -38 -22z" />
-<glyph unicode="&#246;" horiz-adv-x="496" d="M34 162q0 79 22.5 144q22.5 65 60 111q37.5 46 87 71.5q49.5 25.5 103.5 25.5q48 0 81 -15q33 -15 53.5 -40q20.5 -25 29.5 -57q9 -32 9 -66q0 -78 -22 -142.5q-22 -64.5 -59 -110.5q-37 -46 -86 -71.5q-49 -25.5 -103 -25.5q-47 0 -80 15.5q-33 15.5 -54.5 40.5q-21.5 25 -31.5 56.5q-10 31.5 -10 63.5zt0 0zM161 179q0 -90 65 -90q24 0 47 21q23 21 41 55q18 34 28.5 77q10.5 43 10.5 86q0 40 -13.5 61.5q-13.5 21.5 -50.5 21.5q-24 0 -47 -20q-23 -20 -41 -52.5q-18 -32.5 -29 -74.5q-11 -42 -11 -85zt0 0zM162 651q0 33 18.5 51.5q18.5 18.5 47.5 18.5q29 0 47.5 -18.5q18.5 -18.5 18.5 -51.5q0 -32 -18.5 -50q-18.5 -18 -47.5 -18q-29 0 -47.5 18q-18.5 18 -18.5 50zt0 0zM370 652q0 32 18.5 50.5q18.5 18.5 47.5 18.5q29 0 47.5 -18.5q18.5 -18.5 18.5 -50.5q0 -32 -18.5 -50.5q-18.5 -18.5 -47.5 -18.5q-29 0 -47.5 18.5t-18.5 50.5z" />
-<glyph unicode="&#247;" horiz-adv-x="505" d="M58 394h442v-112h-442zM199 534q0 35 22 55.5q22 20.5 58 20.5q37 0 59 -20.5q22 -20.5 22 -55.5q0 -35 -22 -56q-22 -21 -59 -21q-36 0 -58 21q-22 21 -22 56zt0 0zM199 139q0 35 22 55.5q22 20.5 58 20.5q37 0 59 -20.5q22 -20.5 22 -55.5q0 -35 -22 -56q-22 -21 -59 -21q-36 0 -58 21t-22 56z" />
-<glyph unicode="&#248;" horiz-adv-x="496" d="M34 162q0 79 22.5 144q22.5 65 60 111q37.5 46 87 71.5q49.5 25.5 103.5 25.5q32 0 57 -7q25 -7 44 -19l34 38l64 -59l-42 -47q16 -38 16 -84q0 -78 -22 -142.5q-22 -64.5 -59 -110.5q-37 -46 -86 -71.5q-49 -25.5 -103 -25.5q-34 0 -60.5 8.5q-26.5 8.5 -46.5 22.5l-37 -41l-66 60l47 54q-13 33 -13 72zt0 0zM176 114q16 -25 50 -25q23 0 45 19.5q22 19.5 39.5 51q17.5 31.5 29 71.5q11.5 40 13.5 81zM337 392q-16 19 -48 19q-23 0 -45 -18.5q-22 -18.5 -39.5 -48.5q-17.5 -30 -29.5 -69q-12 -39 -14 -81z" />
-<glyph unicode="&#249;" horiz-adv-x="512" d="M241 500l-65 -309q-6 -30 -6 -50q0 -20 8 -31q8 -11 28 -11q17 0 34.5 8.5q17.5 8.5 33.5 22q16 13.5 29.5 30q13.5 16.5 22.5 32.5l64 308h123l-63 -300q-5 -20 -8.5 -47q-3.5 -27 -6.5 -55.5q-3 -28.5 -4 -54.5q-1 -26 0 -43l-99 0l-5 90h-4q-14 -19 -32.5 -37.5q-18.5 -18.5 -41 -33.5q-22.5 -15 -49 -24q-26.5 -9 -56.5 -9q-47 0 -76 23.5q-29 23.5 -29 86.5q0 37 10 81l69 323zM372 566h-69l-91 124l7 30l129 0z" />
-<glyph unicode="&#250;" horiz-adv-x="512" d="M241 500l-65 -309q-6 -30 -6 -50q0 -20 8 -31q8 -11 28 -11q17 0 34.5 8.5q17.5 8.5 33.5 22q16 13.5 29.5 30q13.5 16.5 22.5 32.5l64 308h123l-63 -300q-5 -20 -8.5 -47q-3.5 -27 -6.5 -55.5q-3 -28.5 -4 -54.5q-1 -26 0 -43l-99 0l-5 90h-4q-14 -19 -32.5 -37.5q-18.5 -18.5 -41 -33.5q-22.5 -15 -49 -24q-26.5 -9 -56.5 -9q-47 0 -76 23.5q-29 23.5 -29 86.5q0 37 10 81l69 323zM351 720h125l-6 -30l-133 -124l-69 0z" />
-<glyph unicode="&#251;" horiz-adv-x="512" d="M241 500l-65 -309q-6 -30 -6 -50q0 -20 8 -31q8 -11 28 -11q17 0 34.5 8.5q17.5 8.5 33.5 22q16 13.5 29.5 30q13.5 16.5 22.5 32.5l64 308h123l-63 -300q-5 -20 -8.5 -47q-3.5 -27 -6.5 -55.5q-3 -28.5 -4 -54.5q-1 -26 0 -43l-99 0l-5 90h-4q-14 -19 -32.5 -37.5q-18.5 -18.5 -41 -33.5q-22.5 -15 -49 -24q-26.5 -9 -56.5 -9q-47 0 -76 23.5q-29 23.5 -29 86.5q0 37 10 81l69 323zM325 732h82l67 -182h-96l-24 66l-4 49l-27 -49l-57 -66l-97 0z" />
-<glyph unicode="&#252;" horiz-adv-x="512" d="M241 500l-65 -309q-6 -30 -6 -50q0 -20 8 -31q8 -11 28 -11q17 0 34.5 8.5q17.5 8.5 33.5 22q16 13.5 29.5 30q13.5 16.5 22.5 32.5l64 308h123l-63 -300q-5 -20 -8.5 -47q-3.5 -27 -6.5 -55.5q-3 -28.5 -4 -54.5q-1 -26 0 -43l-99 0l-5 90h-4q-14 -19 -32.5 -37.5q-18.5 -18.5 -41 -33.5q-22.5 -15 -49 -24q-26.5 -9 -56.5 -9q-47 0 -76 23.5q-29 23.5 -29 86.5q0 37 10 81l69 323zM172 651q0 33 18.5 51.5q18.5 18.5 47.5 18.5q29 0 47.5 -18.5q18.5 -18.5 18.5 -51.5q0 -32 -18.5 -50q-18.5 -18 -47.5 -18q-29 0 -47.5 18q-18.5 18 -18.5 50zt0 0zM380 652q0 32 18.5 50.5q18.5 18.5 47.5 18.5q29 0 47.5 -18.5q18.5 -18.5 18.5 -50.5q0 -32 -18.5 -50.5q-18.5 -18.5 -47.5 -18.5q-29 0 -47.5 18.5t-18.5 50.5z" />
-<glyph unicode="&#253;" horiz-adv-x="452" d="M216 219l1 -78h6l27 79l136 280h131l-240 -449q-30 -56 -56.5 -103q-26.5 -47 -53.5 -81q-27 -34 -56 -53q-29 -19 -62 -19q-44 0 -66 15l33 98q6 -3 12.5 -4q6.5 -1 12.5 -1q24 0 49 23q25 23 50 74l-94 500h141zM330 720h125l-6 -30l-133 -124l-69 0z" />
-<glyph unicode="&#254;" horiz-adv-x="506" d="M165 700h123l-62 -268h4q12 16 27 31q15 15 34 26q19 11 42 18q23 7 52 7q51 0 82 -35q31 -35 31 -110q0 -85 -22.5 -155.5q-22.5 -70.5 -60 -121q-37.5 -50.5 -88 -78.5q-50.5 -28 -105.5 -28q-26 0 -49 5q-23 5 -34 13l-43 -204h-122zM160 106q25 -17 56 -17q31 0 58.5 21q27.5 21 48 56q20.5 35 32.5 81.5q12 46.5 12 97.5q0 29 -11.5 47.5q-11.5 18.5 -34.5 18.5q-18 0 -35 -9q-17 -9 -32 -22.5q-15 -13.5 -27 -30.5q-12 -17 -21 -33z" />
-<glyph unicode="&#255;" horiz-adv-x="452" d="M216 219l1 -78h6l27 79l136 280h131l-240 -449q-30 -56 -56.5 -103q-26.5 -47 -53.5 -81q-27 -34 -56 -53q-29 -19 -62 -19q-44 0 -66 15l33 98q6 -3 12.5 -4q6.5 -1 12.5 -1q24 0 49 23q25 23 50 74l-94 500h141zM130 651q0 33 18.5 51.5q18.5 18.5 47.5 18.5q29 0 47.5 -18.5q18.5 -18.5 18.5 -51.5q0 -32 -18.5 -50q-18.5 -18 -47.5 -18q-29 0 -47.5 18q-18.5 18 -18.5 50zt0 0zM338 652q0 32 18.5 50.5q18.5 18.5 47.5 18.5q29 0 47.5 -18.5q18.5 -18.5 18.5 -50.5q0 -32 -18.5 -50.5q-18.5 -18.5 -47.5 -18.5q-29 0 -47.5 18.5t-18.5 50.5z" />
-<glyph unicode="&#256;" horiz-adv-x="582" d="M387 155h-204l-83 -155h-138l389 705h96l91 -705h-131zM240 265h142l-16 156l1 110h-5l-40 -111zM261 856h327l-19 -89l-326 0z" />
-<glyph unicode="&#257;" horiz-adv-x="503" d="M444 200q-8 -38 -11.5 -77q-3.5 -39 -3.5 -74q0 -14 0.5 -26.5q0.5 -12.5 1.5 -23.5l-91 0l-14 86h-4q-11 -18 -28.5 -35.5q-17.5 -17.5 -38.5 -32q-21 -14.5 -44.5 -23q-23.5 -8.5 -48.5 -8.5q-66 0 -97.5 43q-31.5 43 -31.5 115q0 73 18.5 140q18.5 67 57.5 118q39 51 98.5 81.5q59.5 30.5 141.5 30.5q35 0 76.5 -6.5q41.5 -6.5 80.5 -17.5zM209 89q18 0 34 7.5q16 7.5 29.5 19.5q13.5 12 24 26q10.5 14 18.5 26l50 233q-11 5 -25.5 7.5q-14.5 2.5 -28.5 2.5q-36 0 -64 -21.5q-28 -21.5 -47.5 -56q-19.5 -34.5 -29.5 -78q-10 -43.5 -10 -87.5q0 -32 10.5 -55.5q10.5 -23.5 38.5 -23.5zt0 0zM200 658h308l-19 -92l-308 0z" />
-<glyph unicode="&#258;" horiz-adv-x="582" d="M387 155h-204l-83 -155h-138l389 705h96l91 -705h-131zM240 265h142l-16 156l1 110h-5l-40 -111zM295 875q18 -26 44 -40q26 -14 65 -14q55 0 92 15q37 15 65 39l49 -32q-17 -30 -40 -51.5q-23 -21.5 -50 -35q-27 -13.5 -57.5 -20q-30.5 -6.5 -61.5 -6.5q-26 0 -50.5 7.5q-24.5 7.5 -45 22q-20.5 14.5 -36 34.5q-15.5 20 -22.5 44z" />
-<glyph unicode="&#259;" horiz-adv-x="503" d="M444 200q-8 -38 -11.5 -77q-3.5 -39 -3.5 -74q0 -14 0.5 -26.5q0.5 -12.5 1.5 -23.5l-91 0l-14 86h-4q-11 -18 -28.5 -35.5q-17.5 -17.5 -38.5 -32q-21 -14.5 -44.5 -23q-23.5 -8.5 -48.5 -8.5q-66 0 -97.5 43q-31.5 43 -31.5 115q0 73 18.5 140q18.5 67 57.5 118q39 51 98.5 81.5q59.5 30.5 141.5 30.5q35 0 76.5 -6.5q41.5 -6.5 80.5 -17.5zM209 89q18 0 34 7.5q16 7.5 29.5 19.5q13.5 12 24 26q10.5 14 18.5 26l50 233q-11 5 -25.5 7.5q-14.5 2.5 -28.5 2.5q-36 0 -64 -21.5q-28 -21.5 -47.5 -56q-19.5 -34.5 -29.5 -78q-10 -43.5 -10 -87.5q0 -32 10.5 -55.5q10.5 -23.5 38.5 -23.5zt0 0zM274 720q21 -59 84 -59q39 0 70.5 15.5q31.5 15.5 52.5 43.5l51 -27q-8 -24 -25.5 -47.5q-17.5 -23.5 -42 -41.5q-24.5 -18 -55.5 -29q-31 -11 -64 -11q-62 0 -99 33.5q-37 33.5 -39 90.5z" />
-<glyph unicode="&#260;" horiz-adv-x="582" d="M387 155h-204l-83 -155h-138l389 705h96l91 -705h-21q-32 -12 -53.5 -31.5q-21.5 -19.5 -21.5 -48.5q0 -34 38 -34q14 0 38 8l5 -62q-18 -13 -49.5 -23q-31.5 -10 -64.5 -10q-48 0 -71.5 22q-23.5 22 -23.5 56q0 24 9 43.5q9 19.5 24 34.5q15 15 34.5 26q19.5 11 40.5 19l-15 0zM240 265h142l-16 156l1 110h-5l-40 -111z" />
-<glyph unicode="&#261;" horiz-adv-x="503" d="M444 200q-8 -38 -11.5 -77q-3.5 -39 -3.5 -74q0 -14 0.5 -26.5q0.5 -12.5 1.5 -23.5l-21 0q-31 -12 -52 -31q-21 -19 -21 -50q1 -31 37 -33q16 0 39 9l6 -62q-19 -13 -50.5 -23.5q-31.5 -10.5 -64.5 -10.5q-48 0 -71.5 22q-23.5 22 -23.5 56q0 26 11 47q11 21 29.5 37q18.5 16 42 27q23.5 11 47.5 18l-13 80h-4q-11 -18 -28.5 -35.5q-17.5 -17.5 -38.5 -32q-21 -14.5 -44.5 -23q-23.5 -8.5 -48.5 -8.5q-64 0 -96.5 43q-32.5 43 -32.5 115q0 73 19 140q19 67 57.5 118q38.5 51 98 81.5q59.5 30.5 141.5 30.5q35 0 76.5 -6.5q41.5 -6.5 80.5 -17.5zM365 402q-11 5 -25.5 7.5q-14.5 2.5 -28.5 2.5q-37 -1 -64.5 -22q-27.5 -21 -47 -56q-19.5 -35 -29.5 -78.5q-10 -43.5 -10 -87.5q0 -32 11 -55.5q11 -23.5 38 -23.5q18 0 34 7.5q16 7.5 29.5 19.5q13.5 12 24 26q10.5 14 18.5 26z" />
-<glyph unicode="&#262;" horiz-adv-x="537" d="M483 29q-67 -43 -164 -43q-66 0 -115 22q-49 22 -81.5 61q-32.5 39 -48.5 91q-16 52 -16 112q0 118 33 201.5q33 83.5 87 137q54 53.5 123.5 78.5q69.5 25 142.5 25q57 0 97.5 -8.5q40.5 -8.5 63.5 -19.5l-51 -116q-20 11 -48 16.5q-28 5.5 -71 5.5q-51 0 -95 -21q-44 -21 -76 -60q-32 -39 -50.5 -95q-18.5 -56 -18.5 -127q0 -85 42.5 -133q42.5 -48 113.5 -48q45 0 74.5 9.5q29.5 9.5 55.5 23.5zM498 870h157l-6 -30l-172 -88l-104 0z" />
-<glyph unicode="&#263;" horiz-adv-x="412" d="M393 387q-19 11 -39.5 15q-20.5 4 -44.5 4q-27 0 -52.5 -17.5q-25.5 -17.5 -46 -46q-20.5 -28.5 -32.5 -66.5q-12 -38 -12 -78q0 -51 22 -77.5q22 -26.5 58 -26.5q30 0 55.5 9.5q25.5 9.5 45.5 21.5l23 -84q-32 -24 -74.5 -39.5q-42.5 -15.5 -84.5 -15.5q-48 0 -81.5 14q-33.5 14 -54.5 38q-21 24 -31 55q-10 31 -10 65q0 84 24 150q24 66 63.5 111.5q39.5 45.5 90 70q50.5 24.5 103.5 24.5q47 0 74.5 -9q27.5 -9 49.5 -20zM349 720h125l-6 -30l-133 -124l-69 0z" />
-<glyph unicode="&#264;" horiz-adv-x="537" d="M483 29q-67 -43 -164 -43q-66 0 -115 22q-49 22 -81.5 61q-32.5 39 -48.5 91q-16 52 -16 112q0 118 33 201.5q33 83.5 87 137q54 53.5 123.5 78.5q69.5 25 142.5 25q57 0 97.5 -8.5q40.5 -8.5 63.5 -19.5l-51 -116q-20 11 -48 16.5q-28 5.5 -71 5.5q-51 0 -95 -21q-44 -21 -76 -60q-32 -39 -50.5 -95q-18.5 -56 -18.5 -127q0 -85 42.5 -133q42.5 -48 113.5 -48q45 0 74.5 9.5q29.5 9.5 55.5 23.5zM424 870h87l101 -93l-8 -39h-88l-45 41l-13 34l-27 -33l-67 -42h-94l9 40z" />
-<glyph unicode="&#265;" horiz-adv-x="412" d="M393 387q-19 11 -39.5 15q-20.5 4 -44.5 4q-27 0 -52.5 -17.5q-25.5 -17.5 -46 -46q-20.5 -28.5 -32.5 -66.5q-12 -38 -12 -78q0 -51 22 -77.5q22 -26.5 58 -26.5q30 0 55.5 9.5q25.5 9.5 45.5 21.5l23 -84q-32 -24 -74.5 -39.5q-42.5 -15.5 -84.5 -15.5q-48 0 -81.5 14q-33.5 14 -54.5 38q-21 24 -31 55q-10 31 -10 65q0 84 24 150q24 66 63.5 111.5q39.5 45.5 90 70q50.5 24.5 103.5 24.5q47 0 74.5 -9q27.5 -9 49.5 -20zM306 732h82l67 -182h-96l-24 66l-4 49l-27 -49l-57 -66l-97 0z" />
-<glyph unicode="&#268;" horiz-adv-x="537" d="M483 29q-67 -43 -164 -43q-66 0 -115 22q-49 22 -81.5 61q-32.5 39 -48.5 91q-16 52 -16 112q0 118 33 201.5q33 83.5 87 137q54 53.5 123.5 78.5q69.5 25 142.5 25q57 0 97.5 -8.5q40.5 -8.5 63.5 -19.5l-51 -116q-20 11 -48 16.5q-28 5.5 -71 5.5q-51 0 -95 -21q-44 -21 -76 -60q-32 -39 -50.5 -95q-18.5 -56 -18.5 -127q0 -85 42.5 -133q42.5 -48 113.5 -48q45 0 74.5 9.5q29.5 9.5 55.5 23.5zM483 737h-84l-101 94l8 39h92l41 -45l12 -30l25 29l64 46h98l-8 -40z" />
-<glyph unicode="&#269;" horiz-adv-x="412" d="M393 387q-19 11 -39.5 15q-20.5 4 -44.5 4q-27 0 -52.5 -17.5q-25.5 -17.5 -46 -46q-20.5 -28.5 -32.5 -66.5q-12 -38 -12 -78q0 -51 22 -77.5q22 -26.5 58 -26.5q30 0 55.5 9.5q25.5 9.5 45.5 21.5l23 -84q-32 -24 -74.5 -39.5q-42.5 -15.5 -84.5 -15.5q-48 0 -81.5 14q-33.5 14 -54.5 38q-21 24 -31 55q-10 31 -10 65q0 84 24 150q24 66 63.5 111.5q39.5 45.5 90 70q50.5 24.5 103.5 24.5q47 0 74.5 -9q27.5 -9 49.5 -20zM346 550h-87l-70 182h103l23 -66l5 -49l28 49l56 66l98 0z" />
-<glyph unicode="&#270;" horiz-adv-x="620" d="M168 700q21 3 46 5q25 2 46.5 3q21.5 1 37.5 1q9 0 25.5 0.5q16.5 0.5 36.5 0.5q61 0 111 -15.5q50 -15.5 85.5 -47.5q35.5 -32 55 -82q19.5 -50 19.5 -119q0 -44 -7.5 -94.5q-7.5 -50.5 -25.5 -101.5q-18 -51 -49.5 -98q-31.5 -47 -79 -83q-47.5 -36 -114 -58q-66.5 -22 -154.5 -22q-15 0 -30 0.5q-15 0.5 -21 0.5q-20 1 -44.5 2.5q-24.5 1.5 -49 3q-24.5 1.5 -36.5 3.5zM174 114q4 -1 12.5 -1.5q8.5 -0.5 18.5 -1q10 -0.5 19 -0.5q9 0 14 0q70 0 119 31.5q49 31.5 79.5 79q30.5 47.5 44 103q13.5 55.5 13.5 103.5q0 80 -33.5 120q-33.5 40 -111.5 40q-20 0 -42 -1q-22 -1 -34 -3zM428 737h-84l-101 94l8 39h92l41 -45l12 -30l25 29l64 46h98l-8 -40z" />
-<glyph unicode="&#271;" horiz-adv-x="507" d="M442 176q-9 -42 -13 -78q-4 -36 -4 -68q0 -8 0 -15.5q0 -7.5 1 -15.5l-84 0l-14 86h-4q-11 -18 -28.5 -35.5q-17.5 -17.5 -38.5 -32q-21 -14.5 -44.5 -23q-23.5 -8.5 -46.5 -8.5q-62 0 -95.5 44q-33.5 44 -33.5 121q0 70 19 135q19 65 53.5 115.5q34.5 50.5 84 80.5q49.5 30 109.5 30q29 0 48 -3.5q19 -3.5 36 -11.5l43 203h123zM365 394q-12 8 -27.5 11.5q-15.5 3.5 -41.5 3.5q-30 0 -54.5 -20.5q-24.5 -20.5 -41.5 -55q-17 -34.5 -26.5 -79.5q-9.5 -45 -9.5 -94q0 -29 13 -50q13 -21 37 -21q15 0 30.5 7.5q15.5 7.5 29 19.5q13.5 12 25 26q11.5 14 18.5 26zM717 700q-8 -29 -24 -60.5q-16 -31.5 -35 -60q-19 -28.5 -38.5 -51q-19.5 -22.5 -32.5 -32.5l-47 31q24 36 41.5 81.5q17.5 45.5 27.5 91.5z" />
-<glyph unicode="&#272;" horiz-adv-x="640" d="M40 401h85l63 299q21 3 46 5q25 2 47.5 3q22.5 1 36.5 1q10 0 26 0.5q16 0.5 35 0.5q62 0 112 -15.5q50 -15.5 85.5 -47.5q35.5 -32 55 -82q19.5 -50 19.5 -119q0 -44 -7.5 -94.5q-7.5 -50.5 -25.5 -101.5q-18 -51 -49.5 -98q-31.5 -47 -79 -83q-47.5 -36 -114 -58q-66.5 -22 -154.5 -22q-15 0 -29 0.5q-14 0.5 -22 0.5q-18 1 -43.5 2.5q-25.5 1.5 -50 3q-24.5 1.5 -36.5 3.5l68 322h-85zM254 401h132l-17 -80h-132l-43 -207q4 -1 12.5 -1.5q8.5 -0.5 18.5 -1q10 -0.5 19 -0.5q9 0 14 0q70 0 119 31.5q49 31.5 79.5 79q30.5 47.5 44 103q13.5 55.5 13.5 103.5q0 80 -33.5 120q-33.5 40 -112.5 40q-19 0 -41 -1q-22 -1 -34 -3z" />
-<glyph unicode="&#273;" horiz-adv-x="507" d="M540 641h103l-17 -80h-103l-81 -385q-9 -42 -13 -78q-4 -36 -4 -68q0 -8 0 -15.5q0 -7.5 1 -15.5l-84 0l-14 86h-4q-11 -18 -28.5 -35.5q-17.5 -17.5 -38.5 -32q-21 -14.5 -44.5 -23q-23.5 -8.5 -46.5 -8.5q-62 0 -95.5 44q-33.5 44 -33.5 121q0 70 19 135q19 65 53.5 115.5q34.5 50.5 84 80.5q49.5 30 109.5 30q29 0 48 -3.5q19 -3.5 36 -11.5l13 64h-109l17 80h109l13 59h123zM365 394q-12 8 -27.5 11.5q-15.5 3.5 -41.5 3.5q-30 0 -54.5 -20.5q-24.5 -20.5 -41.5 -55q-17 -34.5 -26.5 -79.5q-9.5 -45 -9.5 -94q0 -29 13 -50q13 -21 37 -21q15 0 30.5 7.5q15.5 7.5 29 19.5q13.5 12 25 26q11.5 14 18.5 26z" />
-<glyph unicode="&#274;" horiz-adv-x="503" d="M168 700h130h264l-26 -122h-264l-35 -163h241l-27 -122h-239l-37 -171h269l-25 -122h-269h-130zM226 856h327l-19 -89l-326 0z" />
-<glyph unicode="&#275;" horiz-adv-x="466" d="M402 48q-31 -26 -80 -44q-49 -18 -114 -18q-81 0 -127.5 47.5q-46.5 47.5 -46.5 132.5q0 80 25 144.5q25 64.5 65.5 109.5q40.5 45 91.5 69.5q51 24.5 102 24.5q41 0 70.5 -10.5q29.5 -10.5 48.5 -29q19 -18.5 28 -42.5q9 -24 9 -51q0 -41 -21 -72q-21 -31 -58.5 -51.5q-37.5 -20.5 -90.5 -31q-53 -10.5 -116 -10.5q-8 0 -15 0.5q-7 0.5 -15 0.5q-2 -12 -3 -21.5q-1 -9.5 -1 -17.5q0 -45 23.5 -67q23.5 -22 66.5 -22q44 0 79 13q35 13 53 26zM176 295q28 0 59.5 2q31.5 2 58.5 9.5q27 7.5 45 22q18 14.5 18 39.5q0 15 -11 30.5q-11 15.5 -46 15.5q-44 0 -76.5 -34q-32.5 -34 -47.5 -85zt0 0zM188 658h308l-19 -92l-308 0z" />
-<glyph unicode="&#278;" horiz-adv-x="503" d="M168 700h130h264l-26 -122h-264l-35 -163h241l-27 -122h-239l-37 -171h269l-25 -122h-269h-130zM307 798q0 31 24 46q24 15 59 15q33 0 58 -15q25 -15 25 -46q0 -30 -24 -45.5q-24 -15.5 -59 -15.5q-35 0 -59 15t-24 46z" />
-<glyph unicode="&#279;" horiz-adv-x="466" d="M402 48q-31 -26 -80 -44q-49 -18 -114 -18q-81 0 -127.5 47.5q-46.5 47.5 -46.5 132.5q0 80 25 144.5q25 64.5 65.5 109.5q40.5 45 91.5 69.5q51 24.5 102 24.5q41 0 70.5 -10.5q29.5 -10.5 48.5 -29q19 -18.5 28 -42.5q9 -24 9 -51q0 -41 -21 -72q-21 -31 -58.5 -51.5q-37.5 -20.5 -90.5 -31q-53 -10.5 -116 -10.5q-8 0 -15 0.5q-7 0.5 -15 0.5q-2 -12 -3 -21.5q-1 -9.5 -1 -17.5q0 -45 23.5 -67q23.5 -22 66.5 -22q44 0 79 13q35 13 53 26zM176 295q28 0 59.5 2q31.5 2 58.5 9.5q27 7.5 45 22q18 14.5 18 39.5q0 15 -11 30.5q-11 15.5 -46 15.5q-44 0 -76.5 -34q-32.5 -34 -47.5 -85zt0 0zM270 642q0 33 21.5 51q21.5 18 54.5 18q32 0 54.5 -18q22.5 -18 22.5 -51q0 -32 -22.5 -50.5q-22.5 -18.5 -54.5 -18.5q-33 0 -54.5 18.5t-21.5 50.5z" />
-<glyph unicode="&#280;" horiz-adv-x="503" d="M168 700h130h264l-26 -122h-264l-35 -163h241l-27 -122h-239l-37 -171h269l-25 -122h-20q-32 -12 -53.5 -31.5q-21.5 -19.5 -21.5 -48.5q0 -34 38 -34q14 0 38 8l5 -62q-18 -13 -49.5 -23q-31.5 -10 -64.5 -10q-48 0 -71.5 22q-23.5 22 -23.5 56q0 24 9 43.5q9 19.5 24 34.5q15 15 34.5 26q19.5 11 40.5 19l-154 0l-130 0z" />
-<glyph unicode="&#281;" horiz-adv-x="466" d="M402 48q-32 -27 -78 -43q-26 -16 -43 -38q-17 -22 -17 -47q0 -11 4 -20q4 -9 13 -13q9 -4 23 -2.5q14 1.5 34 11.5l5 -62q-9 -6 -22 -12.5q-13 -6.5 -28.5 -11.5q-15.5 -5 -33 -8.5q-17.5 -3.5 -33.5 -3.5q-51 0 -71.5 22q-20.5 22 -20.5 56q0 34 24 62q24 28 58 48l-8 0q-81 0 -127.5 47.5q-46.5 47.5 -46.5 132.5q0 80 25 144.5q25 64.5 65.5 109.5q40.5 45 91.5 69.5q51 24.5 102 24.5q41 0 70.5 -10.5q29.5 -10.5 48.5 -29q19 -18.5 28 -42.5q9 -24 9 -51q0 -43 -23.5 -75q-23.5 -32 -64 -52.5q-40.5 -20.5 -100 -30q-59.5 -9.5 -128.5 -6.5q-2 -12 -3 -21.5q-1 -9.5 -1 -17.5q0 -45 23.5 -67q23.5 -22 66.5 -22q44 0 79 13q35 13 53 26zM300 414q-44 0 -76.5 -34q-32.5 -34 -47.5 -85q28 0 59.5 2q31.5 2 58.5 9.5q27 7.5 45 22q18 14.5 18 39.5q0 15 -11 30.5t-46 15.5z" />
-<glyph unicode="&#282;" horiz-adv-x="503" d="M168 700h130h264l-26 -122h-264l-35 -163h241l-27 -122h-239l-37 -171h269l-25 -122h-269h-130zM407 737h-84l-101 94l8 39h92l41 -45l12 -30l25 29l64 46h98l-8 -40z" />
-<glyph unicode="&#283;" horiz-adv-x="466" d="M402 48q-31 -26 -80 -44q-49 -18 -114 -18q-81 0 -127.5 47.5q-46.5 47.5 -46.5 132.5q0 80 25 144.5q25 64.5 65.5 109.5q40.5 45 91.5 69.5q51 24.5 102 24.5q41 0 70.5 -10.5q29.5 -10.5 48.5 -29q19 -18.5 28 -42.5q9 -24 9 -51q0 -41 -21 -72q-21 -31 -58.5 -51.5q-37.5 -20.5 -90.5 -31q-53 -10.5 -116 -10.5q-8 0 -15 0.5q-7 0.5 -15 0.5q-2 -12 -3 -21.5q-1 -9.5 -1 -17.5q0 -45 23.5 -67q23.5 -22 66.5 -22q44 0 79 13q35 13 53 26zM176 295q28 0 59.5 2q31.5 2 58.5 9.5q27 7.5 45 22q18 14.5 18 39.5q0 15 -11 30.5q-11 15.5 -46 15.5q-44 0 -76.5 -34q-32.5 -34 -47.5 -85zt0 0zM362 550h-87l-70 182h103l23 -66l5 -49l28 49l56 66l98 0z" />
-<glyph unicode="&#284;" horiz-adv-x="585" d="M369 365h210l-66 -312q-45 -35 -94.5 -51q-49.5 -16 -106.5 -16q-55 0 -101.5 19q-46.5 19 -80.5 55q-34 36 -53 89q-19 53 -19 121q0 115 31.5 199q31.5 84 85.5 138.5q54 54.5 126 80.5q72 26 152 26q57 0 101.5 -9.5q44.5 -9.5 67.5 -19.5l-52 -115q-21 10 -52.5 16q-31.5 6 -76.5 6q-53 0 -98 -20q-45 -20 -78 -59q-33 -39 -51.5 -96.5q-18.5 -57.5 -18.5 -131.5q0 -83 39 -130q39 -47 105 -47q49 0 86 25l28 133l-102 16zM439 870h87l101 -93l-8 -39h-88l-45 41l-13 34l-27 -33l-67 -42h-94l9 40z" />
-<glyph unicode="&#285;" horiz-adv-x="505" d="M407 0q-13 -59 -35 -99.5q-22 -40.5 -52.5 -65.5q-30.5 -25 -70 -36q-39.5 -11 -87.5 -11q-35 0 -62.5 5q-27.5 5 -48.5 12q-21 7 -36.5 14.5q-15.5 7.5 -24.5 13.5l46 91q9 -4 21 -9.5q12 -5.5 27.5 -11q15.5 -5.5 36 -9q20.5 -3.5 47.5 -3.5q50 0 79.5 31q29.5 31 42.5 85l19 78h-4q-23 -36 -62.5 -64.5q-39.5 -28.5 -89.5 -28.5q-54 0 -87.5 40.5q-33.5 40.5 -33.5 108.5q0 77 22 144.5q22 67.5 61.5 118q39.5 50.5 93.5 79.5q54 29 119 29q61 0 106.5 -10.5q45.5 -10.5 73.5 -23.5zM371 399q-11 6 -28 8q-17 2 -34 2q-32 0 -59.5 -19q-27.5 -19 -47.5 -52q-20 -33 -31.5 -77.5q-11.5 -44.5 -11.5 -95.5q0 -32 13.5 -51q13.5 -19 35.5 -19q17 0 35 10.5q18 10.5 34.5 26.5q16.5 16 29.5 35.5q13 19.5 21 36.5zM338 732h82l67 -182h-96l-24 66l-4 49l-27 -49l-57 -66l-97 0z" />
-<glyph unicode="&#286;" horiz-adv-x="585" d="M369 365h210l-66 -312q-45 -35 -94.5 -51q-49.5 -16 -106.5 -16q-55 0 -101.5 19q-46.5 19 -80.5 55q-34 36 -53 89q-19 53 -19 121q0 115 31.5 199q31.5 84 85.5 138.5q54 54.5 126 80.5q72 26 152 26q57 0 101.5 -9.5q44.5 -9.5 67.5 -19.5l-52 -115q-21 10 -52.5 16q-31.5 6 -76.5 6q-53 0 -98 -20q-45 -20 -78 -59q-33 -39 -51.5 -96.5q-18.5 -57.5 -18.5 -131.5q0 -83 39 -130q39 -47 105 -47q49 0 86 25l28 133l-102 16zM339 875q18 -26 44 -40q26 -14 65 -14q55 0 92 15q37 15 65 39l49 -32q-17 -30 -40 -51.5q-23 -21.5 -50 -35q-27 -13.5 -57.5 -20q-30.5 -6.5 -61.5 -6.5q-26 0 -50.5 7.5q-24.5 7.5 -45 22q-20.5 14.5 -36 34.5q-15.5 20 -22.5 44z" />
-<glyph unicode="&#287;" horiz-adv-x="505" d="M407 0q-13 -59 -35 -99.5q-22 -40.5 -52.5 -65.5q-30.5 -25 -70 -36q-39.5 -11 -87.5 -11q-35 0 -62.5 5q-27.5 5 -48.5 12q-21 7 -36.5 14.5q-15.5 7.5 -24.5 13.5l46 91q9 -4 21 -9.5q12 -5.5 27.5 -11q15.5 -5.5 36 -9q20.5 -3.5 47.5 -3.5q50 0 79.5 31q29.5 31 42.5 85l19 78h-4q-23 -36 -62.5 -64.5q-39.5 -28.5 -89.5 -28.5q-54 0 -87.5 40.5q-33.5 40.5 -33.5 108.5q0 77 22 144.5q22 67.5 61.5 118q39.5 50.5 93.5 79.5q54 29 119 29q61 0 106.5 -10.5q45.5 -10.5 73.5 -23.5zM371 399q-11 6 -28 8q-17 2 -34 2q-32 0 -59.5 -19q-27.5 -19 -47.5 -52q-20 -33 -31.5 -77.5q-11.5 -44.5 -11.5 -95.5q0 -32 13.5 -51q13.5 -19 35.5 -19q17 0 35 10.5q18 10.5 34.5 26.5q16.5 16 29.5 35.5q13 19.5 21 36.5zM259 720q21 -59 84 -59q39 0 70.5 15.5q31.5 15.5 52.5 43.5l51 -27q-8 -24 -25.5 -47.5q-17.5 -23.5 -42 -41.5q-24.5 -18 -55.5 -29q-31 -11 -64 -11q-62 0 -99 33.5q-37 33.5 -39 90.5z" />
-<glyph unicode="&#290;" horiz-adv-x="585" d="M369 365h210l-66 -312q-45 -35 -94.5 -51q-49.5 -16 -106.5 -16q-55 0 -101.5 19q-46.5 19 -80.5 55q-34 36 -53 89q-19 53 -19 121q0 115 31.5 199q31.5 84 85.5 138.5q54 54.5 126 80.5q72 26 152 26q57 0 101.5 -9.5q44.5 -9.5 67.5 -19.5l-52 -115q-21 10 -52.5 16q-31.5 6 -76.5 6q-53 0 -98 -20q-45 -20 -78 -59q-33 -39 -51.5 -96.5q-18.5 -57.5 -18.5 -131.5q0 -83 39 -130q39 -47 105 -47q49 0 86 25l28 133l-102 16zM221 -113q0 17 6.5 30q6.5 13 17 22q10.5 9 23.5 14q13 5 27 5q35 0 49.5 -19q14.5 -19 13.5 -51q0 -36 -14 -63.5q-14 -27.5 -34.5 -47.5q-20.5 -20 -42.5 -32.5q-22 -12.5 -38 -17.5l-21 54q16 7 31.5 19.5q15.5 12.5 23.5 32.5q-19 3 -30.5 16.5t-11.5 37.5z" />
-<glyph unicode="&#291;" horiz-adv-x="505" d="M407 0q-13 -59 -35 -99.5q-22 -40.5 -52.5 -65.5q-30.5 -25 -70 -36q-39.5 -11 -87.5 -11q-35 0 -62.5 5q-27.5 5 -48.5 12q-21 7 -36.5 14.5q-15.5 7.5 -24.5 13.5l46 91q9 -4 21 -9.5q12 -5.5 27.5 -11q15.5 -5.5 36 -9q20.5 -3.5 47.5 -3.5q50 0 79.5 31q29.5 31 42.5 85l19 78h-4q-23 -36 -62.5 -64.5q-39.5 -28.5 -89.5 -28.5q-54 0 -87.5 40.5q-33.5 40.5 -33.5 108.5q0 77 22 144.5q22 67.5 61.5 118q39.5 50.5 93.5 79.5q54 29 119 29q61 0 106.5 -10.5q45.5 -10.5 73.5 -23.5zM371 399q-11 6 -28 8q-17 2 -34 2q-32 0 -59.5 -19q-27.5 -19 -47.5 -52q-20 -33 -31.5 -77.5q-11.5 -44.5 -11.5 -95.5q0 -32 13.5 -51q13.5 -19 35.5 -19q17 0 35 10.5q18 10.5 34.5 26.5q16.5 16 29.5 35.5q13 19.5 21 36.5zM416 622q0 -17 -6.5 -30q-6.5 -13 -17 -22q-10.5 -9 -23.5 -14q-13 -5 -27 -5q-35 0 -49.5 19q-14.5 19 -13.5 51q0 36 14 63.5q14 27.5 34.5 47.5q20.5 20 42.5 32.5q22 12.5 38 17.5l21 -54q-16 -7 -31.5 -19.5q-15.5 -12.5 -23.5 -32.5q19 -3 30.5 -16.5t11.5 -37.5z" />
-<glyph unicode="&#292;" horiz-adv-x="624" d="M455 293h-243l-62 -293h-130l148 700h130l-60 -285h243l60 285h130l-148 -700h-130zM424 870h87l101 -93l-8 -39h-88l-45 41l-13 34l-27 -33l-67 -42h-94l9 40z" />
-<glyph unicode="&#293;" horiz-adv-x="528" d="M309 0l60 284q10 44 10 73q0 26 -10 37.5q-10 11.5 -31 11.5q-19 0 -40 -12q-21 -12 -40 -30q-19 -18 -34.5 -38.5q-15.5 -20.5 -23.5 -37.5l-59 -288h-123l148 700h123l-63 -288h4q13 16 31.5 34q18.5 18 41 33q22.5 15 49 25q26.5 10 57.5 10q48 0 74.5 -24q26.5 -24 26.5 -85q0 -37 -12 -94l-66 -311zM221 870h87l101 -93l-8 -39h-88l-45 41l-13 34l-27 -33l-67 -42h-94l9 40z" />
-<glyph unicode="&#294;" horiz-adv-x="656" d="M92 598h70l22 102h130l-22 -102h243l22 102h130l-22 -102h72l-17 -82h-72l-109 -516h-130l62 293h-243l-62 -293h-130l109 516h-70zM497 415l21 101h-243l-21 -101z" />
-<glyph unicode="&#295;" horiz-adv-x="528" d="M84 641h69l13 59h123l-13 -59h155l-17 -80h-156l-32 -149h4q13 16 31.5 34q18.5 18 41 33q22.5 15 49 25q26.5 10 57.5 10q48 0 74.5 -24q26.5 -24 26.5 -85q0 -37 -12 -94l-66 -311h-123l60 284q10 44 10 73q0 26 -10 37.5q-10 11.5 -31 11.5q-19 0 -40 -12q-21 -12 -40 -30q-19 -18 -34.5 -38.5q-15.5 -20.5 -23.5 -37.5l-59 -288h-123l118 561l-69 0z" />
-<glyph unicode="&#298;" horiz-adv-x="278" d="M183 700h129l-148 -700h-129zM111 856h327l-19 -89l-326 0z" />
-<glyph unicode="&#299;" horiz-adv-x="256" d="M133 500h123l-106 -500h-123zM74 658h308l-19 -92l-308 0z" />
-<glyph unicode="&#302;" horiz-adv-x="278" d="M183 700h129l-148 -700h-14q-26 -13 -44.5 -32.5q-18.5 -19.5 -18.5 -46.5q0 -16 9.5 -25.5q9.5 -9.5 27.5 -9.5q16 0 39 9l5 -62q-18 -13 -49.5 -23.5q-31.5 -10.5 -64.5 -10.5q-48 0 -71.5 22q-23.5 22 -23.5 56q0 23 9 42q9 19 24 34.5q15 15.5 34 27q19 11.5 39 19.5l-30 0z" />
-<glyph unicode="&#303;" horiz-adv-x="257" d="M133 500h123l-106 -500h-10q-26 -15 -44 -37.5q-18 -22.5 -18 -46.5q0 -20 16.5 -30q16.5 -10 57.5 10l6 -62q-9 -6 -22 -12.5q-13 -6.5 -28.5 -11.5q-15.5 -5 -33 -8.5q-17.5 -3.5 -33.5 -3.5q-53 0 -72 20.5q-19 20.5 -19 53.5q0 20 8.5 39q8.5 19 23.5 35.5q15 16.5 34.5 30.5q19.5 14 41.5 23l-31 0zM150 642q0 33 21.5 51q21.5 18 54.5 18q32 0 54.5 -18q22.5 -18 22.5 -51q0 -32 -22.5 -50.5q-22.5 -18.5 -54.5 -18.5q-33 0 -54.5 18.5t-21.5 50.5z" />
-<glyph unicode="&#304;" horiz-adv-x="278" d="M183 700h129l-148 -700h-129zM183 798q0 31 24 46q24 15 59 15q33 0 58 -15q25 -15 25 -46q0 -30 -24 -45.5q-24 -15.5 -59 -15.5q-35 0 -59 15t-24 46z" />
-<glyph unicode="&#305;" horiz-adv-x="256" d="M133 500h123l-106 -500l-123 0z" />
-<glyph unicode="&#308;" horiz-adv-x="324" d="M239 700h130l-109 -512q-9 -42 -23 -78.5q-14 -36.5 -37 -63.5q-23 -27 -57.5 -42.5q-34.5 -15.5 -83.5 -15.5q-28 0 -59 6q-31 6 -51 17l50 112q23 -13 54 -13q21 0 35 8.5q14 8.5 23.5 23.5q9.5 15 15.5 35.5q6 20.5 12 45.5zM295 870h87l101 -93l-8 -39h-88l-45 41l-13 34l-27 -33l-67 -42h-94l9 40z" />
-<glyph unicode="&#309;" horiz-adv-x="244" d="M123 500h124l-111 -521q-19 -90 -64 -137.5q-45 -47.5 -122 -47.5q-31 0 -62 7l24 106q25 -2 43 4.5q18 6.5 30.5 20.5q12.5 14 21 35.5q8.5 21.5 14.5 48.5zM197 732h82l67 -182h-96l-24 66l-4 49l-27 -49l-57 -66l-97 0z" />
-<glyph unicode="&#310;" horiz-adv-x="593" d="M260 299h-47l-63 -299h-130l148 700h130l-66 -310l31 11l237 299h156l-252 -297l-60 -35l44 -39l152 -329h-145zM151 -113q0 17 6.5 30q6.5 13 17 22q10.5 9 23.5 14q13 5 27 5q35 0 49.5 -19q14.5 -19 13.5 -51q0 -36 -14 -63.5q-14 -27.5 -34.5 -47.5q-20.5 -20 -42.5 -32.5q-22 -12.5 -38 -17.5l-21 54q16 7 31.5 19.5q15.5 12.5 23.5 32.5q-19 3 -30.5 16.5t-11.5 37.5z" />
-<glyph unicode="&#311;" horiz-adv-x="465" d="M224 207h-40l-43 -207h-123l148 700h123l-88 -413l37 13l141 200h137l-149 -201l-60 -38l45 -38l76 -223h-132zM109 -113q0 17 6.5 30q6.5 13 17 22q10.5 9 23.5 14q13 5 27 5q35 0 49.5 -19q14.5 -19 13.5 -51q0 -36 -14 -63.5q-14 -27.5 -34.5 -47.5q-20.5 -20 -42.5 -32.5q-22 -12.5 -38 -17.5l-21 54q16 7 31.5 19.5q15.5 12.5 23.5 32.5q-19 3 -30.5 16.5t-11.5 37.5z" />
-<glyph unicode="&#313;" horiz-adv-x="495" d="M441 0h-291h-130l148 700h130l-123 -578h291zM311 870h157l-6 -30l-172 -88l-104 0z" />
-<glyph unicode="&#314;" horiz-adv-x="272" d="M168 148q-6 -29 0.5 -43q6.5 -14 21.5 -14q28 0 53 11l-3 -89q-18 -11 -52 -18q-34 -7 -67 -7q-43 0 -65.5 16.5q-22.5 16.5 -22.5 61.5q0 23 6 53l123 581h123zM299 870h157l-6 -30l-172 -88l-104 0z" />
-<glyph unicode="&#315;" horiz-adv-x="495" d="M441 0h-291h-130l148 700h130l-123 -578h291zM126 -113q0 17 6.5 30q6.5 13 17 22q10.5 9 23.5 14q13 5 27 5q35 0 49.5 -19q14.5 -19 13.5 -51q0 -36 -14 -63.5q-14 -27.5 -34.5 -47.5q-20.5 -20 -42.5 -32.5q-22 -12.5 -38 -17.5l-21 54q16 7 31.5 19.5q15.5 12.5 23.5 32.5q-19 3 -30.5 16.5t-11.5 37.5z" />
-<glyph unicode="&#316;" horiz-adv-x="272" d="M168 148q-6 -29 0.5 -43q6.5 -14 21.5 -14q28 0 53 11l-3 -89q-18 -11 -52 -18q-34 -7 -67 -7q-43 0 -65.5 16.5q-22.5 16.5 -22.5 61.5q0 23 6 53l123 581h123zM27 -113q0 17 6.5 30q6.5 13 17 22q10.5 9 23.5 14q13 5 27 5q35 0 49.5 -19q14.5 -19 13.5 -51q0 -36 -14 -63.5q-14 -27.5 -34.5 -47.5q-20.5 -20 -42.5 -32.5q-22 -12.5 -38 -17.5l-21 54q16 7 31.5 19.5q15.5 12.5 23.5 32.5q-19 3 -30.5 16.5t-11.5 37.5z" />
-<glyph unicode="&#317;" horiz-adv-x="495" d="M441 0h-291h-130l148 700h130l-123 -578h291zM551 700q-8 -29 -24 -60.5q-16 -31.5 -35 -60q-19 -28.5 -38.5 -51q-19.5 -22.5 -32.5 -32.5l-47 31q24 36 41.5 81.5q17.5 45.5 27.5 91.5z" />
-<glyph unicode="&#318;" horiz-adv-x="272" d="M168 148q-6 -29 0.5 -43q6.5 -14 21.5 -14q28 0 53 11l-3 -89q-18 -11 -52 -18q-34 -7 -67 -7q-43 0 -65.5 16.5q-22.5 16.5 -22.5 61.5q0 23 6 53l123 581h123zM452 700q-8 -29 -24 -60.5q-16 -31.5 -35 -60q-19 -28.5 -38.5 -51q-19.5 -22.5 -32.5 -32.5l-47 31q24 36 41.5 81.5q17.5 45.5 27.5 91.5z" />
-<glyph unicode="&#321;" horiz-adv-x="500" d="M29 318l72 44l72 338h130l-53 -246l112 68l-27 -125l-111 -67l-44 -208h291l-25 -122h-288h-133l51 241l-73 -44z" />
-<glyph unicode="&#322;" horiz-adv-x="272" d="M4 307l86 52l72 341h123l-54 -254l106 65l-27 -125l-105 -63l-37 -175q-6 -29 0.5 -43q6.5 -14 21.5 -14q28 0 53 11l-3 -89q-18 -11 -52 -18q-34 -7 -67 -7q-43 0 -65.5 16.5q-22.5 16.5 -22.5 61.5q0 23 6 53l25 119l-86 -52z" />
-<glyph unicode="&#323;" horiz-adv-x="631" d="M267 366l-33 112h-5l-9 -112l-77 -366h-123l150 705h90l172 -374l31 -109h6l7 109l79 369h123l-150 -705h-90zM489 870h157l-6 -30l-172 -88l-104 0z" />
-<glyph unicode="&#324;" horiz-adv-x="521" d="M294 0l66 310q6 28 6 49q0 22 -9 34.5q-9 12.5 -33 12.5q-18 0 -36 -9q-18 -9 -34 -24q-16 -15 -30 -33.5q-14 -18.5 -24 -37.5l-64 -302h-123l106 500h93l-5 -88h4q13 16 30.5 34q17.5 18 40.5 33q23 15 51.5 25q28.5 10 64.5 10q45 0 72 -24.5q27 -24.5 27 -81.5q0 -15 -1.5 -32q-1.5 -17 -6.5 -37l-72 -339zM380 720h125l-6 -30l-133 -124l-69 0z" />
-<glyph unicode="&#325;" horiz-adv-x="631" d="M267 366l-33 112h-5l-9 -112l-77 -366h-123l150 705h90l172 -374l31 -109h6l7 109l79 369h123l-150 -705h-90zM181 -113q0 17 6.5 30q6.5 13 17 22q10.5 9 23.5 14q13 5 27 5q35 0 49.5 -19q14.5 -19 13.5 -51q0 -36 -14 -63.5q-14 -27.5 -34.5 -47.5q-20.5 -20 -42.5 -32.5q-22 -12.5 -38 -17.5l-21 54q16 7 31.5 19.5q15.5 12.5 23.5 32.5q-19 3 -30.5 16.5t-11.5 37.5z" />
-<glyph unicode="&#326;" horiz-adv-x="521" d="M294 0l66 310q6 28 6 49q0 22 -9 34.5q-9 12.5 -33 12.5q-18 0 -36 -9q-18 -9 -34 -24q-16 -15 -30 -33.5q-14 -18.5 -24 -37.5l-64 -302h-123l106 500h93l-5 -88h4q13 16 30.5 34q17.5 18 40.5 33q23 15 51.5 25q28.5 10 64.5 10q45 0 72 -24.5q27 -24.5 27 -81.5q0 -15 -1.5 -32q-1.5 -17 -6.5 -37l-72 -339zM128 -113q0 17 6.5 30q6.5 13 17 22q10.5 9 23.5 14q13 5 27 5q35 0 49.5 -19q14.5 -19 13.5 -51q0 -36 -14 -63.5q-14 -27.5 -34.5 -47.5q-20.5 -20 -42.5 -32.5q-22 -12.5 -38 -17.5l-21 54q16 7 31.5 19.5q15.5 12.5 23.5 32.5q-19 3 -30.5 16.5t-11.5 37.5z" />
-<glyph unicode="&#327;" horiz-adv-x="631" d="M267 366l-33 112h-5l-9 -112l-77 -366h-123l150 705h90l172 -374l31 -109h6l7 109l79 369h123l-150 -705h-90zM469 737h-84l-101 94l8 39h92l41 -45l12 -30l25 29l64 46h98l-8 -40z" />
-<glyph unicode="&#328;" horiz-adv-x="521" d="M294 0l66 310q6 28 6 49q0 22 -9 34.5q-9 12.5 -33 12.5q-18 0 -36 -9q-18 -9 -34 -24q-16 -15 -30 -33.5q-14 -18.5 -24 -37.5l-64 -302h-123l106 500h93l-5 -88h4q13 16 30.5 34q17.5 18 40.5 33q23 15 51.5 25q28.5 10 64.5 10q45 0 72 -24.5q27 -24.5 27 -81.5q0 -15 -1.5 -32q-1.5 -17 -6.5 -37l-72 -339zM377 550h-87l-70 182h103l23 -66l5 -49l28 49l56 66l98 0z" />
-<glyph unicode="&#332;" horiz-adv-x="644" d="M58 262q0 93 25.5 175.5q25.5 82.5 72.5 144q47 61.5 113.5 97q66.5 35.5 148.5 35.5q54 0 97.5 -16q43.5 -16 74 -49.5q30.5 -33.5 47.5 -84.5q17 -51 17 -121q0 -94 -25.5 -177q-25.5 -83 -72 -145.5q-46.5 -62.5 -111 -98.5q-64.5 -36 -142.5 -36q-118 0 -181 69.5q-63 69.5 -64 206.5zt0 0zM195 266q0 -72 27.5 -115q27.5 -43 90.5 -43q46 0 83.5 27.5q37.5 27.5 64.5 74q27 46.5 41.5 106.5q14.5 60 14.5 125q0 79 -31 115q-31 36 -85 36q-45 0 -82.5 -26q-37.5 -26 -65 -70.5q-27.5 -44.5 -43 -104q-15.5 -59.5 -15.5 -125.5zt0 0zM294 856h327l-19 -89l-326 0z" />
-<glyph unicode="&#333;" horiz-adv-x="496" d="M34 162q0 79 22.5 144q22.5 65 60 111q37.5 46 87 71.5q49.5 25.5 103.5 25.5q48 0 81 -15q33 -15 53.5 -40q20.5 -25 29.5 -57q9 -32 9 -66q0 -78 -22 -142.5q-22 -64.5 -59 -110.5q-37 -46 -86 -71.5q-49 -25.5 -103 -25.5q-47 0 -80 15.5q-33 15.5 -54.5 40.5q-21.5 25 -31.5 56.5q-10 31.5 -10 63.5zt0 0zM161 179q0 -90 65 -90q24 0 47 21q23 21 41 55q18 34 28.5 77q10.5 43 10.5 86q0 40 -13.5 61.5q-13.5 21.5 -50.5 21.5q-24 0 -47 -20q-23 -20 -41 -52.5q-18 -32.5 -29 -74.5q-11 -42 -11 -85zt0 0zM190 658h308l-19 -92l-308 0z" />
-<glyph unicode="&#336;" horiz-adv-x="644" d="M58 262q0 93 25.5 175.5q25.5 82.5 72.5 144q47 61.5 113.5 97q66.5 35.5 148.5 35.5q54 0 97.5 -16q43.5 -16 74 -49.5q30.5 -33.5 47.5 -84.5q17 -51 17 -121q0 -94 -25.5 -177q-25.5 -83 -72 -145.5q-46.5 -62.5 -111 -98.5q-64.5 -36 -142.5 -36q-118 0 -181 69.5q-63 69.5 -64 206.5zt0 0zM195 266q0 -72 27.5 -115q27.5 -43 90.5 -43q46 0 83.5 27.5q37.5 27.5 64.5 74q27 46.5 41.5 106.5q14.5 60 14.5 125q0 79 -31 115q-31 36 -85 36q-45 0 -82.5 -26q-37.5 -26 -65 -70.5q-27.5 -44.5 -43 -104q-15.5 -59.5 -15.5 -125.5zt0 0zM378 850h126l-3 -16l-115 -93h-87zM566 850h132l-3 -16l-155 -93l-90 0z" />
-<glyph unicode="&#337;" horiz-adv-x="496" d="M34 162q0 79 22.5 144q22.5 65 60 111q37.5 46 87 71.5q49.5 25.5 103.5 25.5q48 0 81 -15q33 -15 53.5 -40q20.5 -25 29.5 -57q9 -32 9 -66q0 -78 -22 -142.5q-22 -64.5 -59 -110.5q-37 -46 -86 -71.5q-49 -25.5 -103 -25.5q-47 0 -80 15.5q-33 15.5 -54.5 40.5q-21.5 25 -31.5 56.5q-10 31.5 -10 63.5zt0 0zM161 179q0 -90 65 -90q24 0 47 21q23 21 41 55q18 34 28.5 77q10.5 43 10.5 86q0 40 -13.5 61.5q-13.5 21.5 -50.5 21.5q-24 0 -47 -20q-23 -20 -41 -52.5q-18 -32.5 -29 -74.5q-11 -42 -11 -85zt0 0zM268 700h112l-3 -16l-95 -113h-74zM437 700h120l-3 -16l-136 -113l-78 0z" />
-<glyph unicode="&#338;" horiz-adv-x="877" d="M514 567q-18 12 -42.5 18.5q-24.5 6.5 -64.5 6.5q-47 0 -85.5 -24q-38.5 -24 -67 -67q-28.5 -43 -44 -103q-15.5 -60 -15.5 -132q0 -26 5 -53.5q5 -27.5 18.5 -51q13.5 -23.5 38 -38.5q24.5 -15 63.5 -15q28 0 49.5 3.5q21.5 3.5 51.5 15.5zM394 0q-20 -7 -46.5 -10.5q-26.5 -3.5 -54.5 -3.5q-43 0 -85 13q-42 13 -75.5 44.5q-33.5 31.5 -54 85q-20.5 53.5 -20.5 133.5q0 105 27 189q27 84 76 142.5q49 58.5 116 89.5q67 31 147 31q38 0 65.5 -4q27.5 -4 52.5 -10l394 0l-26 -122h-264l-35 -163h241l-26 -122h-240l-36 -171h268l-25 -122z" />
-<glyph unicode="&#339;" horiz-adv-x="769" d="M161 179q0 -90 65 -90q24 0 47 21q23 21 41 55q18 34 28.5 77q10.5 43 10.5 86q0 40 -13.5 61.5q-13.5 21.5 -50.5 21.5q-24 0 -47 -20q-23 -20 -41 -52.5q-18 -32.5 -29 -74.5q-11 -42 -11 -85zt0 0zM371 65q-25 -34 -68 -56.5q-43 -22.5 -94 -22.5q-47 0 -80 15.5q-33 15.5 -54 40.5q-21 25 -31 56.5q-10 31.5 -10 63.5q0 79 22.5 144q22.5 65 60.5 111q38 46 87.5 71.5q49.5 25.5 103.5 25.5q54 0 88.5 -22q34.5 -22 53.5 -60q30 35 72.5 58.5q42.5 23.5 98.5 23.5q41 0 70.5 -10.5q29.5 -10.5 48.5 -29q19 -18.5 28 -42.5q9 -24 9 -51q0 -41 -21 -72q-21 -31 -58.5 -51.5q-37.5 -20.5 -90.5 -31q-53 -10.5 -116 -10.5q-8 0 -15 0.5q-7 0.5 -15 0.5q-2 -12 -3 -21.5q-1 -9.5 -1 -17.5q0 -45 23.5 -67q23.5 -22 66.5 -22q44 0 79 13q35 13 53 26l26 -80q-31 -26 -80 -44q-49 -18 -114 -18q-29 0 -52 6.5q-23 6.5 -40 18q-17 11.5 -29 25.5q-12 14 -19 29zt0 0zM479 295q28 0 59.5 2q31.5 2 58.5 9.5q27 7.5 45 22q18 14.5 18 39.5q0 15 -11 30.5q-11 15.5 -46 15.5q-44 0 -76.5 -34t-47.5 -85z" />
-<glyph unicode="&#340;" horiz-adv-x="584" d="M167 693q48 9 97 13q49 4 88 4q46 0 87 -11q41 -11 71 -33.5q30 -22.5 47.5 -58q17.5 -35.5 17.5 -83.5q0 -55 -16.5 -95.5q-16.5 -40.5 -43.5 -68q-27 -27.5 -61.5 -43q-34.5 -15.5 -70.5 -20.5l39 -31l97 -266h-144l-96 274l-69 13l-60 -287h-130zM230 380h53q29 0 57 5.5q28 5.5 49.5 20q21.5 14.5 35 38.5q13.5 24 13.5 61q0 34 -23 58.5q-23 24.5 -74 24.5q-20 0 -37.5 -1.5q-17.5 -1.5 -29.5 -3.5zM419 870h157l-6 -30l-172 -88l-104 0z" />
-<glyph unicode="&#341;" horiz-adv-x="343" d="M215 500l1 -88h4q22 40 53.5 68q31.5 28 79.5 28q21 0 50 -8l-31 -107q-10 3 -19 5q-9 2 -19 2q-41 0 -75.5 -26.5q-34.5 -26.5 -52.5 -61.5l-65 -312h-123l106 500zM281 720h125l-6 -30l-133 -124l-69 0z" />
-<glyph unicode="&#342;" horiz-adv-x="584" d="M167 693q48 9 97 13q49 4 88 4q46 0 87 -11q41 -11 71 -33.5q30 -22.5 47.5 -58q17.5 -35.5 17.5 -83.5q0 -55 -16.5 -95.5q-16.5 -40.5 -43.5 -68q-27 -27.5 -61.5 -43q-34.5 -15.5 -70.5 -20.5l39 -31l97 -266h-144l-96 274l-69 13l-60 -287h-130zM230 380h53q29 0 57 5.5q28 5.5 49.5 20q21.5 14.5 35 38.5q13.5 24 13.5 61q0 34 -23 58.5q-23 24.5 -74 24.5q-20 0 -37.5 -1.5q-17.5 -1.5 -29.5 -3.5zM155 -113q0 17 6.5 30q6.5 13 17 22q10.5 9 23.5 14q13 5 27 5q35 0 49.5 -19q14.5 -19 13.5 -51q0 -36 -14 -63.5q-14 -27.5 -34.5 -47.5q-20.5 -20 -42.5 -32.5q-22 -12.5 -38 -17.5l-21 54q16 7 31.5 19.5q15.5 12.5 23.5 32.5q-19 3 -30.5 16.5t-11.5 37.5z" />
-<glyph unicode="&#343;" horiz-adv-x="343" d="M215 500l1 -88h4q22 40 53.5 68q31.5 28 79.5 28q21 0 50 -8l-31 -107q-10 3 -19 5q-9 2 -19 2q-41 0 -75.5 -26.5q-34.5 -26.5 -52.5 -61.5l-65 -312h-123l106 500zM20 -113q0 17 6.5 30q6.5 13 17 22q10.5 9 23.5 14q13 5 27 5q35 0 49.5 -19q14.5 -19 13.5 -51q0 -36 -14 -63.5q-14 -27.5 -34.5 -47.5q-20.5 -20 -42.5 -32.5q-22 -12.5 -38 -17.5l-21 54q16 7 31.5 19.5q15.5 12.5 23.5 32.5q-19 3 -30.5 16.5t-11.5 37.5z" />
-<glyph unicode="&#344;" horiz-adv-x="584" d="M167 693q48 9 97 13q49 4 88 4q46 0 87 -11q41 -11 71 -33.5q30 -22.5 47.5 -58q17.5 -35.5 17.5 -83.5q0 -55 -16.5 -95.5q-16.5 -40.5 -43.5 -68q-27 -27.5 -61.5 -43q-34.5 -15.5 -70.5 -20.5l39 -31l97 -266h-144l-96 274l-69 13l-60 -287h-130zM230 380h53q29 0 57 5.5q28 5.5 49.5 20q21.5 14.5 35 38.5q13.5 24 13.5 61q0 34 -23 58.5q-23 24.5 -74 24.5q-20 0 -37.5 -1.5q-17.5 -1.5 -29.5 -3.5zM404 737h-84l-101 94l8 39h92l41 -45l12 -30l25 29l64 46h98l-8 -40z" />
-<glyph unicode="&#345;" horiz-adv-x="343" d="M215 500l1 -88h4q22 40 53.5 68q31.5 28 79.5 28q21 0 50 -8l-31 -107q-10 3 -19 5q-9 2 -19 2q-41 0 -75.5 -26.5q-34.5 -26.5 -52.5 -61.5l-65 -312h-123l106 500zM307 550h-87l-70 182h103l23 -66l5 -49l28 49l56 66l98 0z" />
-<glyph unicode="&#346;" horiz-adv-x="510" d="M502 559q-19 12 -56 24.5q-37 12.5 -82 12.5q-23 0 -45 -4.5q-22 -4.5 -39 -14.5q-17 -10 -27 -26q-10 -16 -10 -38q0 -29 18 -49q18 -20 45.5 -37.5q27.5 -17.5 59 -35.5q31.5 -18 59 -42q27.5 -24 45.5 -57.5q18 -33.5 18 -82.5q0 -59 -20.5 -101.5q-20.5 -42.5 -58 -69.5q-37.5 -27 -90 -39.5q-52.5 -12.5 -116.5 -12.5q-35 0 -66.5 4q-31.5 4 -58.5 10q-27 6 -47.5 13.5q-20.5 7.5 -32.5 14.5l67 116q10 -6 26 -13q16 -7 36.5 -13q20.5 -6 44.5 -10q24 -4 48 -4q28 0 53 4.5q25 4.5 43.5 15q18.5 10.5 29 26.5q10.5 16 10.5 40q0 27 -18 46q-18 19 -45.5 36q-27.5 17 -59 35.5q-31.5 18.5 -59 43.5q-27.5 25 -45.5 60.5q-18 35.5 -18 86.5q0 58 20.5 99q20.5 41 55.5 67q35 26 82 38q47 12 101 12q29 0 58 -3q29 -3 55 -8.5q26 -5.5 48 -13q22 -7.5 37 -16.5zM428 870h157l-6 -30l-172 -88l-104 0z" />
-<glyph unicode="&#347;" horiz-adv-x="396" d="M38 117q20 -11 51.5 -19.5q31.5 -8.5 66.5 -8.5q35 0 53.5 13.5q18.5 13.5 19.5 41.5q0 20 -12 34.5q-12 14.5 -30.5 27.5q-18.5 13 -39.5 26.5q-21 13.5 -39.5 31q-18.5 17.5 -30.5 41.5q-12 24 -12 58q0 33 13 61q13 28 36.5 48q23.5 20 57 31q33.5 11 75.5 11q58 0 96 -8.5q38 -8.5 60 -21.5l-34 -94q-20 9 -48.5 15q-28.5 6 -59.5 6q-32 0 -50.5 -11q-18.5 -11 -18.5 -35q0 -16 12 -28.5q12 -12.5 30.5 -25.5q18.5 -13 39.5 -26.5q21 -13.5 39.5 -32.5q18.5 -19 30.5 -43.5q12 -24.5 12 -58.5q0 -83 -54 -123.5q-54 -40.5 -144 -40.5q-51 0 -93.5 9.5q-42.5 9.5 -65.5 23.5zM302 720h125l-6 -30l-133 -124l-69 0z" />
-<glyph unicode="&#348;" horiz-adv-x="510" d="M502 559q-19 12 -56 24.5q-37 12.5 -82 12.5q-23 0 -45 -4.5q-22 -4.5 -39 -14.5q-17 -10 -27 -26q-10 -16 -10 -38q0 -29 18 -49q18 -20 45.5 -37.5q27.5 -17.5 59 -35.5q31.5 -18 59 -42q27.5 -24 45.5 -57.5q18 -33.5 18 -82.5q0 -59 -20.5 -101.5q-20.5 -42.5 -58 -69.5q-37.5 -27 -90 -39.5q-52.5 -12.5 -116.5 -12.5q-35 0 -66.5 4q-31.5 4 -58.5 10q-27 6 -47.5 13.5q-20.5 7.5 -32.5 14.5l67 116q10 -6 26 -13q16 -7 36.5 -13q20.5 -6 44.5 -10q24 -4 48 -4q28 0 53 4.5q25 4.5 43.5 15q18.5 10.5 29 26.5q10.5 16 10.5 40q0 27 -18 46q-18 19 -45.5 36q-27.5 17 -59 35.5q-31.5 18.5 -59 43.5q-27.5 25 -45.5 60.5q-18 35.5 -18 86.5q0 58 20.5 99q20.5 41 55.5 67q35 26 82 38q47 12 101 12q29 0 58 -3q29 -3 55 -8.5q26 -5.5 48 -13q22 -7.5 37 -16.5zM369 870h87l101 -93l-8 -39h-88l-45 41l-13 34l-27 -33l-67 -42h-94l9 40z" />
-<glyph unicode="&#349;" horiz-adv-x="396" d="M38 117q20 -11 51.5 -19.5q31.5 -8.5 66.5 -8.5q35 0 53.5 13.5q18.5 13.5 19.5 41.5q0 20 -12 34.5q-12 14.5 -30.5 27.5q-18.5 13 -39.5 26.5q-21 13.5 -39.5 31q-18.5 17.5 -30.5 41.5q-12 24 -12 58q0 33 13 61q13 28 36.5 48q23.5 20 57 31q33.5 11 75.5 11q58 0 96 -8.5q38 -8.5 60 -21.5l-34 -94q-20 9 -48.5 15q-28.5 6 -59.5 6q-32 0 -50.5 -11q-18.5 -11 -18.5 -35q0 -16 12 -28.5q12 -12.5 30.5 -25.5q18.5 -13 39.5 -26.5q21 -13.5 39.5 -32.5q18.5 -19 30.5 -43.5q12 -24.5 12 -58.5q0 -83 -54 -123.5q-54 -40.5 -144 -40.5q-51 0 -93.5 9.5q-42.5 9.5 -65.5 23.5zM267 732h82l67 -182h-96l-24 66l-4 49l-27 -49l-57 -66l-97 0z" />
-<glyph unicode="&#350;" horiz-adv-x="510" d="M521 559q-19 12 -56 24.5q-37 12.5 -82 12.5q-23 0 -45 -4.5q-22 -4.5 -39 -14.5q-17 -10 -27 -26q-10 -16 -10 -38q0 -29 18 -49q18 -20 45.5 -37.5q27.5 -17.5 59 -35.5q31.5 -18 59 -42q27.5 -24 45.5 -57.5q18 -33.5 18 -82.5q0 -54 -17 -93.5q-17 -39.5 -48 -66.5q-31 -27 -75 -42q-44 -15 -98 -19l-23 -31q34 -2 52 -20.5q18 -18.5 18 -47.5q0 -26 -11.5 -45q-11.5 -19 -31 -31.5q-19.5 -12.5 -46 -18.5q-26.5 -6 -56.5 -6q-38 0 -77 9l20 48q51 -5 70 6q19 11 19 25q0 17 -20 23.5q-20 6.5 -58 5.5l64 82q-59 4 -105.5 16q-46.5 12 -66.5 25l67 118q10 -6 26 -13q16 -7 36.5 -13q20.5 -6 44.5 -10q24 -4 48 -4q28 0 53 4.5q25 4.5 43.5 14q18.5 9.5 29 25.5q10.5 16 10.5 40q0 27 -18 46q-18 19 -45.5 36q-27.5 17 -59 35.5q-31.5 18.5 -59 43.5q-27.5 25 -45.5 60.5q-18 35.5 -18 86.5q0 58 20.5 99q20.5 41 55.5 67q35 26 82 38q47 12 101 12q29 0 58 -3q29 -3 55 -8.5q26 -5.5 48 -13q22 -7.5 37 -16.5z" />
-<glyph unicode="&#351;" horiz-adv-x="396" d="M38 117q20 -11 51.5 -19.5q31.5 -8.5 66.5 -8.5q35 0 53.5 13.5q18.5 13.5 19.5 41.5q0 20 -12 34.5q-12 14.5 -30.5 27.5q-18.5 13 -39.5 26.5q-21 13.5 -39.5 31q-18.5 17.5 -30.5 41.5q-12 24 -12 58q0 33 13 61q13 28 36.5 48q23.5 20 57 31q33.5 11 75.5 11q58 0 96 -8.5q38 -8.5 60 -21.5l-34 -94q-20 9 -48.5 15q-28.5 6 -59.5 6q-32 0 -50.5 -11q-18.5 -11 -18.5 -35q0 -16 12 -28.5q12 -12.5 30.5 -25.5q18.5 -13 39.5 -26.5q21 -13.5 39.5 -32.5q18.5 -19 30.5 -43.5q12 -24.5 12 -58.5q0 -73 -42 -113q-42 -40 -114 -48l-24 -32q34 -2 52 -20.5q18 -18.5 18 -47.5q0 -26 -11.5 -45q-11.5 -19 -31 -31.5q-19.5 -12.5 -46 -18.5q-26.5 -6 -56.5 -6q-38 0 -77 9l20 48q51 -5 70 6q19 11 19 25q0 17 -20 23.5q-20 6.5 -58 5.5l65 83q-39 3 -70.5 11q-31.5 8 -50.5 20z" />
-<glyph unicode="&#352;" horiz-adv-x="510" d="M502 559q-19 12 -56 24.5q-37 12.5 -82 12.5q-23 0 -45 -4.5q-22 -4.5 -39 -14.5q-17 -10 -27 -26q-10 -16 -10 -38q0 -29 18 -49q18 -20 45.5 -37.5q27.5 -17.5 59 -35.5q31.5 -18 59 -42q27.5 -24 45.5 -57.5q18 -33.5 18 -82.5q0 -59 -20.5 -101.5q-20.5 -42.5 -58 -69.5q-37.5 -27 -90 -39.5q-52.5 -12.5 -116.5 -12.5q-35 0 -66.5 4q-31.5 4 -58.5 10q-27 6 -47.5 13.5q-20.5 7.5 -32.5 14.5l67 116q10 -6 26 -13q16 -7 36.5 -13q20.5 -6 44.5 -10q24 -4 48 -4q28 0 53 4.5q25 4.5 43.5 15q18.5 10.5 29 26.5q10.5 16 10.5 40q0 27 -18 46q-18 19 -45.5 36q-27.5 17 -59 35.5q-31.5 18.5 -59 43.5q-27.5 25 -45.5 60.5q-18 35.5 -18 86.5q0 58 20.5 99q20.5 41 55.5 67q35 26 82 38q47 12 101 12q29 0 58 -3q29 -3 55 -8.5q26 -5.5 48 -13q22 -7.5 37 -16.5zM428 737h-84l-101 94l8 39h92l41 -45l12 -30l25 29l64 46h98l-8 -40z" />
-<glyph unicode="&#353;" horiz-adv-x="396" d="M38 117q20 -11 51.5 -19.5q31.5 -8.5 66.5 -8.5q35 0 53.5 13.5q18.5 13.5 19.5 41.5q0 20 -12 34.5q-12 14.5 -30.5 27.5q-18.5 13 -39.5 26.5q-21 13.5 -39.5 31q-18.5 17.5 -30.5 41.5q-12 24 -12 58q0 33 13 61q13 28 36.5 48q23.5 20 57 31q33.5 11 75.5 11q58 0 96 -8.5q38 -8.5 60 -21.5l-34 -94q-20 9 -48.5 15q-28.5 6 -59.5 6q-32 0 -50.5 -11q-18.5 -11 -18.5 -35q0 -16 12 -28.5q12 -12.5 30.5 -25.5q18.5 -13 39.5 -26.5q21 -13.5 39.5 -32.5q18.5 -19 30.5 -43.5q12 -24.5 12 -58.5q0 -83 -54 -123.5q-54 -40.5 -144 -40.5q-51 0 -93.5 9.5q-42.5 9.5 -65.5 23.5zM307 550h-87l-70 182h103l23 -66l5 -49l28 49l56 66l98 0z" />
-<glyph unicode="&#354;" horiz-adv-x="547" d="M614 578h-194l-123 -578h-21l-33 -43q34 -2 52 -21q18 -19 18 -48q0 -26 -11.5 -45q-11.5 -19 -31 -31.5q-19.5 -12.5 -46 -18.5q-26.5 -6 -56.5 -6q-38 0 -77 9l20 48q51 -5 70 6q19 11 19 25q0 32 -78 30l75 95h-29l122 578h-194l26 122l517 0z" />
-<glyph unicode="&#355;" horiz-adv-x="320" d="M64 500h65l20 94l131 37l-28 -131h117l-23 -103h-116l-49 -226q-6 -27 -6 -44q0 -22 10 -30q10 -8 30 -8q19 0 34.5 4q15.5 4 32.5 13l0 -92q-17 -11 -47.5 -18q-30.5 -7 -59.5 -9l-23 -30q34 -2 52 -21q18 -19 18 -48q0 -26 -11.5 -45q-11.5 -19 -31 -31.5q-19.5 -12.5 -46 -18.5q-26.5 -6 -56.5 -6q-38 0 -77 9l20 48q51 -5 70 6q19 11 19 25q0 32 -78 30l69 89q-56 19 -56 87q0 10 1.5 21q1.5 11 3.5 23l58 272l-67 0z" />
-<glyph unicode="&#356;" horiz-adv-x="547" d="M614 578h-194l-123 -578h-129l122 578h-194l26 122h517zM426 737h-84l-101 94l8 39h92l41 -45l12 -30l25 29l64 46h98l-8 -40z" />
-<glyph unicode="&#357;" horiz-adv-x="320" d="M64 500h65l20 94l131 37l-28 -131h117l-23 -103h-116l-49 -226q-6 -27 -6 -44q0 -22 10 -30q10 -8 30 -8q19 0 34.5 4q15.5 4 32.5 13l0 -92q-11 -6 -26.5 -11.5q-15.5 -5.5 -33.5 -9q-18 -3.5 -37 -5.5q-19 -2 -35 -2q-51 0 -78.5 23.5q-27.5 23.5 -27.5 71.5q0 10 1.5 21q1.5 11 3.5 23l58 272h-67zM462 723q-8 -29 -24 -60.5q-16 -31.5 -35 -60q-19 -28.5 -38.5 -51q-19.5 -22.5 -32.5 -32.5l-47 31q24 36 41.5 81.5q17.5 45.5 27.5 91.5z" />
-<glyph unicode="&#362;" horiz-adv-x="602" d="M531 700h122l-95 -452q-15 -72 -39 -121.5q-24 -49.5 -58 -80.5q-34 -31 -80 -44.5q-46 -13.5 -106 -13.5q-58 0 -98 13.5q-40 13.5 -65.5 38.5q-25.5 25 -37 59q-11.5 34 -11.5 75q0 20 2.5 41q2.5 21 7.5 44l94 441h129l-92 -440q-8 -38 -8 -62q0 -48 25 -68q25 -20 73 -20q60 0 93 35q33 35 50 113zM274 856h327l-19 -89l-326 0z" />
-<glyph unicode="&#363;" horiz-adv-x="512" d="M241 500l-65 -309q-6 -30 -6 -50q0 -20 8 -31q8 -11 28 -11q17 0 34.5 8.5q17.5 8.5 33.5 22q16 13.5 29.5 30q13.5 16.5 22.5 32.5l64 308h123l-63 -300q-5 -20 -8.5 -47q-3.5 -27 -6.5 -55.5q-3 -28.5 -4 -54.5q-1 -26 0 -43l-99 0l-5 90h-4q-14 -19 -32.5 -37.5q-18.5 -18.5 -41 -33.5q-22.5 -15 -49 -24q-26.5 -9 -56.5 -9q-47 0 -76 23.5q-29 23.5 -29 86.5q0 37 10 81l69 323zM191 658h308l-19 -92l-308 0z" />
-<glyph unicode="&#364;" horiz-adv-x="602" d="M531 700h122l-95 -452q-15 -72 -39 -121.5q-24 -49.5 -58 -80.5q-34 -31 -80 -44.5q-46 -13.5 -106 -13.5q-58 0 -98 13.5q-40 13.5 -65.5 38.5q-25.5 25 -37 59q-11.5 34 -11.5 75q0 20 2.5 41q2.5 21 7.5 44l94 441h129l-92 -440q-8 -38 -8 -62q0 -48 25 -68q25 -20 73 -20q60 0 93 35q33 35 50 113zM300 875q18 -26 44 -40q26 -14 65 -14q55 0 92 15q37 15 65 39l49 -32q-17 -30 -40 -51.5q-23 -21.5 -50 -35q-27 -13.5 -57.5 -20q-30.5 -6.5 -61.5 -6.5q-26 0 -50.5 7.5q-24.5 7.5 -45 22q-20.5 14.5 -36 34.5q-15.5 20 -22.5 44z" />
-<glyph unicode="&#365;" horiz-adv-x="512" d="M241 500l-65 -309q-6 -30 -6 -50q0 -20 8 -31q8 -11 28 -11q17 0 34.5 8.5q17.5 8.5 33.5 22q16 13.5 29.5 30q13.5 16.5 22.5 32.5l64 308h123l-63 -300q-5 -20 -8.5 -47q-3.5 -27 -6.5 -55.5q-3 -28.5 -4 -54.5q-1 -26 0 -43l-99 0l-5 90h-4q-14 -19 -32.5 -37.5q-18.5 -18.5 -41 -33.5q-22.5 -15 -49 -24q-26.5 -9 -56.5 -9q-47 0 -76 23.5q-29 23.5 -29 86.5q0 37 10 81l69 323zM254 720q21 -59 84 -59q39 0 70.5 15.5q31.5 15.5 52.5 43.5l51 -27q-8 -24 -25.5 -47.5q-17.5 -23.5 -42 -41.5q-24.5 -18 -55.5 -29q-31 -11 -64 -11q-62 0 -99 33.5q-37 33.5 -39 90.5z" />
-<glyph unicode="&#366;" horiz-adv-x="602" d="M531 700h122l-95 -452q-15 -72 -39 -121.5q-24 -49.5 -58 -80.5q-34 -31 -80 -44.5q-46 -13.5 -106 -13.5q-58 0 -98 13.5q-40 13.5 -65.5 38.5q-25.5 25 -37 59q-11.5 34 -11.5 75q0 20 2.5 41q2.5 21 7.5 44l94 441h129l-92 -440q-8 -38 -8 -62q0 -48 25 -68q25 -20 73 -20q60 0 93 35q33 35 50 113zM302 772q0 18 6 34.5q6 16.5 20.5 29q14.5 12.5 39 19.5q24.5 7 62.5 7q70 0 99 -24q29 -24 30 -66q-1 -18 -7.5 -34q-6.5 -16 -21.5 -27.5q-15 -11.5 -39.5 -18.5q-24.5 -7 -60.5 -8q-71 1 -99.5 25.5q-28.5 24.5 -28.5 62.5zt0 0zM386 772q0 -31 44 -31q25 0 35 8q10 8 10 23q0 33 -45 33q-44 0 -44 -33z" />
-<glyph unicode="&#367;" horiz-adv-x="512" d="M241 500l-65 -309q-6 -30 -6 -50q0 -20 8 -31q8 -11 28 -11q17 0 34.5 8.5q17.5 8.5 33.5 22q16 13.5 29.5 30q13.5 16.5 22.5 32.5l64 308h123l-63 -300q-5 -20 -8.5 -47q-3.5 -27 -6.5 -55.5q-3 -28.5 -4 -54.5q-1 -26 0 -43l-99 0l-5 90h-4q-14 -19 -32.5 -37.5q-18.5 -18.5 -41 -33.5q-22.5 -15 -49 -24q-26.5 -9 -56.5 -9q-47 0 -76 23.5q-29 23.5 -29 86.5q0 37 10 81l69 323zM218 647q0 42 28.5 69q28.5 27 82.5 27q51 0 81 -24.5q30 -24.5 30 -71.5q0 -39 -29.5 -66.5q-29.5 -27.5 -81.5 -27.5q-53 0 -82 25.5q-29 25.5 -29 68.5zt0 0zM290 647q0 -16 11.5 -24.5q11.5 -8.5 27.5 -8.5q17 0 28 8q11 8 11 25q0 17 -11.5 25.5q-11.5 8.5 -27.5 8.5q-16 0 -27.5 -8t-11.5 -26z" />
-<glyph unicode="&#368;" horiz-adv-x="602" d="M531 700h122l-95 -452q-15 -72 -39 -121.5q-24 -49.5 -58 -80.5q-34 -31 -80 -44.5q-46 -13.5 -106 -13.5q-58 0 -98 13.5q-40 13.5 -65.5 38.5q-25.5 25 -37 59q-11.5 34 -11.5 75q0 20 2.5 41q2.5 21 7.5 44l94 441h129l-92 -440q-8 -38 -8 -62q0 -48 25 -68q25 -20 73 -20q60 0 93 35q33 35 50 113zM353 850h126l-3 -16l-115 -93h-87zM541 850h132l-3 -16l-155 -93l-90 0z" />
-<glyph unicode="&#369;" horiz-adv-x="512" d="M241 500l-65 -309q-6 -30 -6 -50q0 -20 8 -31q8 -11 28 -11q17 0 34.5 8.5q17.5 8.5 33.5 22q16 13.5 29.5 30q13.5 16.5 22.5 32.5l64 308h123l-63 -300q-5 -20 -8.5 -47q-3.5 -27 -6.5 -55.5q-3 -28.5 -4 -54.5q-1 -26 0 -43l-99 0l-5 90h-4q-14 -19 -32.5 -37.5q-18.5 -18.5 -41 -33.5q-22.5 -15 -49 -24q-26.5 -9 -56.5 -9q-47 0 -76 23.5q-29 23.5 -29 86.5q0 37 10 81l69 323zM272 700h112l-3 -16l-95 -113h-74zM441 700h120l-3 -16l-136 -113l-78 0z" />
-<glyph unicode="&#370;" horiz-adv-x="602" d="M531 700h122l-95 -452q-23 -108 -64.5 -166q-41.5 -58 -110.5 -80q-23 -14 -39 -33q-16 -19 -16 -45q0 -17 10 -27.5q10 -10.5 28 -10.5q16 0 38 8l6 -62q-19 -13 -50.5 -23.5q-31.5 -10.5 -64.5 -10.5q-48 0 -71.5 24.5q-23.5 24.5 -23.5 58.5q0 35 20 61.5q20 26.5 49 45.5q-56 1 -95.5 15q-39.5 14 -64 38.5q-24.5 24.5 -35.5 58.5q-11 34 -11 74q0 20 2.5 41q2.5 21 7.5 44l94 441h129l-92 -440q-8 -38 -8 -62q0 -48 25 -68q25 -20 73 -20q60 0 93 35q33 35 50 113z" />
-<glyph unicode="&#371;" horiz-adv-x="512" d="M241 500l-65 -309q-7 -30 -7 -50q0 -20 8.5 -31q8.5 -11 28.5 -11q17 0 34.5 8.5q17.5 8.5 33.5 22q16 13.5 29.5 30q13.5 16.5 22.5 32.5l64 308h123l-63 -300q-4 -20 -8 -47q-4 -27 -7 -55.5q-3 -28.5 -4 -54.5q-1 -26 0 -43l-17 0q-31 -12 -52 -34q-21 -22 -21 -48q0 -11 4 -19.5q4 -8.5 12.5 -12.5q8.5 -4 22.5 -2q14 2 35 12l5 -62q-9 -6 -22 -12.5q-13 -6.5 -28.5 -11.5q-15.5 -5 -33 -8.5q-17.5 -3.5 -33.5 -3.5q-53 0 -72.5 20.5q-19.5 20.5 -19.5 53.5q0 23 10 43.5q10 20.5 26.5 37q16.5 16.5 38.5 29.5q22 13 46 21l-5 87h-4q-14 -19 -32.5 -37.5q-18.5 -18.5 -41 -33.5q-22.5 -15 -49 -24q-26.5 -9 -56.5 -9q-50 0 -77 24.5q-27 24.5 -28 85.5q0 37 10 81l69 323z" />
-<glyph unicode="&#376;" horiz-adv-x="569" d="M231 260l-125 440h144l65 -263l-2 -74h4l31 76l175 261h149l-311 -439l-55 -261h-129zM240 798q0 29 20 43.5q20 14.5 52 14.5q32 0 52 -14.5q20 -14.5 20 -43.5q0 -29 -20 -43q-20 -14 -52 -14q-32 0 -52 14q-20 14 -20 43zt0 0zM444 798q0 29 20 43.5q20 14.5 52 14.5q32 0 52 -14.5q20 -14.5 20 -43.5q0 -29 -20 -43q-20 -14 -52 -14q-32 0 -52 14t-20 43z" />
-<glyph unicode="&#377;" horiz-adv-x="518" d="M15 122l360 416l58 40h-321l25 122h461l-25 -122l-362 -419l-56 -37h321l-26 -122h-461zM424 870h157l-6 -30l-172 -88l-104 0z" />
-<glyph unicode="&#378;" horiz-adv-x="435" d="M9 108l225 239l71 45h-236l24 108h372l-23 -108l-230 -243l-64 -41h234l-23 -108h-372zM322 720h125l-6 -30l-133 -124l-69 0z" />
-<glyph unicode="&#379;" horiz-adv-x="518" d="M15 122l360 416l58 40h-321l25 122h461l-25 -122l-362 -419l-56 -37h321l-26 -122h-461zM307 798q0 31 24 46q24 15 59 15q33 0 58 -15q25 -15 25 -46q0 -30 -24 -45.5q-24 -15.5 -59 -15.5q-35 0 -59 15t-24 46z" />
-<glyph unicode="&#380;" horiz-adv-x="435" d="M9 108l225 239l71 45h-236l24 108h372l-23 -108l-230 -243l-64 -41h234l-23 -108h-372zM211 642q0 33 21.5 51q21.5 18 54.5 18q32 0 54.5 -18q22.5 -18 22.5 -51q0 -32 -22.5 -50.5q-22.5 -18.5 -54.5 -18.5q-33 0 -54.5 18.5t-21.5 50.5z" />
-<glyph unicode="&#381;" horiz-adv-x="518" d="M15 122l360 416l58 40h-321l25 122h461l-25 -122l-362 -419l-56 -37h321l-26 -122h-461zM409 737h-84l-101 94l8 39h92l41 -45l12 -30l25 29l64 46h98l-8 -40z" />
-<glyph unicode="&#382;" horiz-adv-x="435" d="M9 108l225 239l71 45h-236l24 108h372l-23 -108l-230 -243l-64 -41h234l-23 -108h-372zM324 550h-87l-70 182h103l23 -66l5 -49l28 49l56 66l98 0z" />
-<glyph unicode="&#383;" horiz-adv-x="286" d="M66 500h76l6 28q20 95 67 137.5q47 42.5 120 42.5q43 0 71 -6.5q28 -6.5 51 -17.5l-45 -90q-20 8 -36 9.5q-16 1.5 -31 1.5q-40 -1 -56 -29q-16 -28 -24 -76l-86 -500q-9 -51 -21 -90q-12 -39 -32.5 -65q-20.5 -26 -50.5 -39.5q-30 -13.5 -74 -13.5q-36 0 -70.5 5.5q-34.5 5.5 -59.5 22.5l34 91q17 -7 34 -9q17 -2 43 -2q32 0 49.5 25q17.5 25 25.5 75l66 397l-77 0z" />
-<glyph unicode="&#402;" horiz-adv-x="545" d="M410 390l-71 -424q-6 -37 -17.5 -68.5q-11.5 -31.5 -32 -55q-20.5 -23.5 -51 -37q-30.5 -13.5 -74.5 -13.5q-14 0 -34.5 2q-20.5 2 -41.5 5q-21 3 -40.5 7.5q-19.5 4.5 -31.5 9.5l21 105q23 -10 44 -14.5q21 -4.5 49 -4.5q36 0 56 24.5q20 24.5 29 81.5l61 382h-78v110h96l11 67q6 37 16.5 64.5q10.5 27.5 29 46q18.5 18.5 47.5 27.5q29 9 72 9q16 0 36.5 -2.5q20.5 -2.5 41.5 -7q21 -4.5 41 -10q20 -5.5 35 -12.5l-32 -97q-49 19 -95 19q-32 0 -44.5 -15.5q-12.5 -15.5 -18.5 -55.5l-5 -33h119l0 -110z" />
-<glyph unicode="&#500;" horiz-adv-x="585" d="M369 365h210l-66 -312q-45 -35 -94.5 -51q-49.5 -16 -106.5 -16q-55 0 -101.5 19q-46.5 19 -80.5 55q-34 36 -53 89q-19 53 -19 121q0 115 31.5 199q31.5 84 85.5 138.5q54 54.5 126 80.5q72 26 152 26q57 0 101.5 -9.5q44.5 -9.5 67.5 -19.5l-52 -115q-21 10 -52.5 16q-31.5 6 -76.5 6q-53 0 -98 -20q-45 -20 -78 -59q-33 -39 -51.5 -96.5q-18.5 -57.5 -18.5 -131.5q0 -83 39 -130q39 -47 105 -47q49 0 86 25l28 133l-102 16zM513 870h157l-6 -30l-172 -88l-104 0z" />
-<glyph unicode="&#501;" horiz-adv-x="505" d="M407 0q-13 -59 -35 -99.5q-22 -40.5 -52.5 -65.5q-30.5 -25 -70 -36q-39.5 -11 -87.5 -11q-35 0 -62.5 5q-27.5 5 -48.5 12q-21 7 -36.5 14.5q-15.5 7.5 -24.5 13.5l46 91q9 -4 21 -9.5q12 -5.5 27.5 -11q15.5 -5.5 36 -9q20.5 -3.5 47.5 -3.5q50 0 79.5 31q29.5 31 42.5 85l19 78h-4q-23 -36 -62.5 -64.5q-39.5 -28.5 -89.5 -28.5q-54 0 -87.5 40.5q-33.5 40.5 -33.5 108.5q0 77 22 144.5q22 67.5 61.5 118q39.5 50.5 93.5 79.5q54 29 119 29q61 0 106.5 -10.5q45.5 -10.5 73.5 -23.5zM371 399q-11 6 -28 8q-17 2 -34 2q-32 0 -59.5 -19q-27.5 -19 -47.5 -52q-20 -33 -31.5 -77.5q-11.5 -44.5 -11.5 -95.5q0 -32 13.5 -51q13.5 -19 35.5 -19q17 0 35 10.5q18 10.5 34.5 26.5q16.5 16 29.5 35.5q13 19.5 21 36.5zM369 720h125l-6 -30l-133 -124l-69 0z" />
-<glyph unicode="&#536;" horiz-adv-x="510" d="M521 559q-19 12 -56 24.5q-37 12.5 -82 12.5q-23 0 -45 -4.5q-22 -4.5 -39 -14.5q-17 -10 -27 -26q-10 -16 -10 -38q0 -29 18 -49q18 -20 45.5 -37.5q27.5 -17.5 59 -35.5q31.5 -18 59 -42q27.5 -24 45.5 -57.5q18 -33.5 18 -82.5q0 -59 -20.5 -101.5q-20.5 -42.5 -58 -69.5q-37.5 -27 -90 -39.5q-52.5 -12.5 -116.5 -12.5q-35 0 -66.5 4q-31.5 4 -58.5 10q-27 6 -47.5 13.5q-20.5 7.5 -32.5 14.5l67 116q10 -6 26 -13q16 -7 36.5 -13q20.5 -6 44.5 -10q24 -4 48 -4q28 0 53 4.5q25 4.5 43.5 15q18.5 10.5 29 26.5q10.5 16 10.5 40q0 27 -18 46q-18 19 -45.5 36q-27.5 17 -59 35.5q-31.5 18.5 -59 43.5q-27.5 25 -45.5 60.5q-18 35.5 -18 86.5q0 58 20.5 99q20.5 41 55.5 67q35 26 82 38q47 12 101 12q29 0 58 -3q29 -3 55 -8.5q26 -5.5 48 -13q22 -7.5 37 -16.5zM134 -113q0 17 6.5 30q6.5 13 17 22q10.5 9 23.5 14q13 5 27 5q35 0 49.5 -19q14.5 -19 13.5 -51q0 -36 -14 -63.5q-14 -27.5 -34.5 -47.5q-20.5 -20 -42.5 -32.5q-22 -12.5 -38 -17.5l-21 54q16 7 31.5 19.5q15.5 12.5 23.5 32.5q-19 3 -30.5 16.5t-11.5 37.5z" />
-<glyph unicode="&#537;" horiz-adv-x="396" d="M38 117q20 -11 51.5 -19.5q31.5 -8.5 66.5 -8.5q35 0 53.5 13.5q18.5 13.5 19.5 41.5q0 20 -12 34.5q-12 14.5 -30.5 27.5q-18.5 13 -39.5 26.5q-21 13.5 -39.5 31q-18.5 17.5 -30.5 41.5q-12 24 -12 58q0 33 13 61q13 28 36.5 48q23.5 20 57 31q33.5 11 75.5 11q58 0 96 -8.5q38 -8.5 60 -21.5l-34 -94q-20 9 -48.5 15q-28.5 6 -59.5 6q-32 0 -50.5 -11q-18.5 -11 -18.5 -35q0 -16 12 -28.5q12 -12.5 30.5 -25.5q18.5 -13 39.5 -26.5q21 -13.5 39.5 -32.5q18.5 -19 30.5 -43.5q12 -24.5 12 -58.5q0 -83 -54 -123.5q-54 -40.5 -144 -40.5q-51 0 -93.5 9.5q-42.5 9.5 -65.5 23.5zM60 -113q0 17 6.5 30q6.5 13 17 22q10.5 9 23.5 14q13 5 27 5q35 0 49.5 -19q14.5 -19 13.5 -51q0 -36 -14 -63.5q-14 -27.5 -34.5 -47.5q-20.5 -20 -42.5 -32.5q-22 -12.5 -38 -17.5l-21 54q16 7 31.5 19.5q15.5 12.5 23.5 32.5q-19 3 -30.5 16.5t-11.5 37.5z" />
-<glyph unicode="&#538;" horiz-adv-x="547" d="M614 578h-194l-123 -578h-129l122 578h-194l26 122h517zM132 -113q0 17 6.5 30q6.5 13 17 22q10.5 9 23.5 14q13 5 27 5q35 0 49.5 -19q14.5 -19 13.5 -51q0 -36 -14 -63.5q-14 -27.5 -34.5 -47.5q-20.5 -20 -42.5 -32.5q-22 -12.5 -38 -17.5l-21 54q16 7 31.5 19.5q15.5 12.5 23.5 32.5q-19 3 -30.5 16.5t-11.5 37.5z" />
-<glyph unicode="&#539;" horiz-adv-x="320" d="M64 500h65l20 94l131 37l-28 -131h117l-23 -103h-116l-49 -226q-6 -27 -6 -44q0 -22 10 -30q10 -8 30 -8q19 0 34.5 4q15.5 4 32.5 13l0 -92q-11 -6 -26.5 -11.5q-15.5 -5.5 -33.5 -9q-18 -3.5 -37 -5.5q-19 -2 -35 -2q-51 0 -78.5 23.5q-27.5 23.5 -27.5 71.5q0 10 1.5 21q1.5 11 3.5 23l58 272h-67zM48 -113q0 17 6.5 30q6.5 13 17 22q10.5 9 23.5 14q13 5 27 5q35 0 49.5 -19q14.5 -19 13.5 -51q0 -36 -14 -63.5q-14 -27.5 -34.5 -47.5q-20.5 -20 -42.5 -32.5q-22 -12.5 -38 -17.5l-21 54q16 7 31.5 19.5q15.5 12.5 23.5 32.5q-19 3 -30.5 16.5t-11.5 37.5z" />
-<glyph unicode="&#567;" horiz-adv-x="244" d="M123 500h124l-111 -521q-19 -90 -64 -137.5q-45 -47.5 -122 -47.5q-31 0 -62 7l24 106q25 -2 43 4.5q18 6.5 30.5 20.5q12.5 14 21 35.5q8.5 21.5 14.5 48.5z" />
-<glyph unicode="&#700;" horiz-adv-x="276" d="M170 637q0 18 7.5 31.5q7.5 13.5 18.5 22.5q11 9 24 13.5q13 4.5 25 4.5q35 0 50 -18q15 -18 15 -49q0 -41 -15.5 -72q-15.5 -31 -38 -53q-22.5 -22 -47 -35q-24.5 -13 -42.5 -19l-19 55q21 9 38.5 24q17.5 15 24.5 38q-18 2 -30 16.5t-11 40.5z" />
-<glyph unicode="&#710;" horiz-adv-x="398" d="M285 732h82l67 -182h-96l-24 66l-4 49l-27 -49l-57 -66l-97 0z" />
-<glyph unicode="&#711;" horiz-adv-x="417" d="M314 550h-87l-70 182h103l23 -66l5 -49l28 49l56 66l98 0z" />
-<glyph unicode="&#728;" horiz-adv-x="436" d="M231 720q21 -59 84 -59q39 0 70.5 15.5q31.5 15.5 52.5 43.5l51 -27q-8 -24 -25.5 -47.5q-17.5 -23.5 -42 -41.5q-24.5 -18 -55.5 -29q-31 -11 -64 -11q-62 0 -99 33.5q-37 33.5 -39 90.5z" />
-<glyph unicode="&#729;" horiz-adv-x="291" d="M170 642q0 33 21.5 51q21.5 18 54.5 18q32 0 54.5 -18q22.5 -18 22.5 -51q0 -32 -22.5 -50.5q-22.5 -18.5 -54.5 -18.5q-33 0 -54.5 18.5t-21.5 50.5z" />
-<glyph unicode="&#730;" horiz-adv-x="368" d="M173 647q0 42 28.5 69q28.5 27 82.5 27q51 0 81 -24.5q30 -24.5 30 -71.5q0 -39 -29.5 -66.5q-29.5 -27.5 -81.5 -27.5q-53 0 -82 25.5q-29 25.5 -29 68.5zt0 0zM245 647q0 -16 11.5 -24.5q11.5 -8.5 27.5 -8.5q17 0 28 8q11 8 11 25q0 17 -11.5 25.5q-11.5 8.5 -27.5 8.5q-16 0 -27.5 -8t-11.5 -26z" />
-<glyph unicode="&#731;" horiz-adv-x="381" d="M257 10q-37 -12 -64.5 -33q-27.5 -21 -27.5 -53q0 -34 38 -34q14 0 38 8l5 -62q-18 -13 -49.5 -23q-31.5 -10 -64.5 -10q-48 0 -71.5 22q-23.5 22 -23.5 56q0 27 11 47.5q11 20.5 29 36.5q18 16 40.5 27q22.5 11 45.5 18z" />
-<glyph unicode="&#732;" horiz-adv-x="349" d="M126 658q35 37 61.5 51q26.5 14 48.5 14q18 0 33.5 -7q15.5 -7 31 -15q15.5 -8 31 -15q15.5 -7 33.5 -7q14 0 30.5 6q16.5 6 36.5 21l4 -70q-32 -32 -57 -44.5q-25 -12.5 -46 -12.5q-18 0 -34 6.5q-16 6.5 -32 14.5q-16 8 -32 14.5q-16 6.5 -34 6.5q-15 0 -33 -6q-18 -6 -38 -22z" />
-<glyph unicode="&#733;" horiz-adv-x="464" d="M217 700h112l-3 -16l-95 -113h-74zM386 700h120l-3 -16l-136 -113l-78 0z" />
-<glyph unicode="&#769;" horiz-adv-x="2" d="M-87 720h125l-6 -30l-133 -124l-69 0z" />
-<glyph unicode="&#916;" horiz-adv-x="589" d="M1 0v71l241 634h79l243 -634v-71zM146 116h270l-111 298l-24 100h-4l-25 -101z" />
-<glyph unicode="&#937;" horiz-adv-x="782" d="M73 110h105l85 -13v28l-46 9q-30 14 -56 37q-26 23 -45.5 56q-19.5 33 -30.5 75.5q-11 42.5 -11 94.5q0 73 23.5 131.5q23.5 58.5 67 99.5q43.5 41 104.5 63.5q61 22.5 135 22.5q78 0 139.5 -23.5q61.5 -23.5 103.5 -65.5q42 -42 64.5 -101q22.5 -59 22.5 -131q0 -52 -12 -93.5q-12 -41.5 -31.5 -73.5q-19.5 -32 -45 -54.5q-25.5 -22.5 -52.5 -36.5l-49 -10v-28l85 13h106v-110h-300v203q26 4 53.5 17q27.5 13 50 35.5q22.5 22.5 37 56q14.5 33.5 14.5 80.5q0 37 -10 73q-10 36 -32 64.5q-22 28.5 -57.5 45.5q-35.5 17 -87.5 17q-89 0 -137 -51q-48 -51 -48 -152q0 -45 14 -78.5q14 -33.5 36 -56q22 -22.5 49.5 -35q27.5 -12.5 55.5 -16.5l0 -203l-300 0z" />
-<glyph unicode="&#960;" horiz-adv-x="666" d="M515 156q-5 -28 0.5 -38.5q5.5 -10.5 19.5 -10.5q10 0 22 2q12 2 21 4l1 -91q-21 -9 -52.5 -18.5q-31.5 -9.5 -75.5 -9.5q-41 0 -57.5 18q-16.5 18 -16.5 50q0 10 1.5 21q1.5 11 3.5 23l60 284h-133l-82 -390h-123l82 390h-13q-17 0 -32 -10q-15 -10 -32 -34l-62 48q29 51 70.5 78.5q41.5 27.5 92.5 27.5h458l-23 -110l-79 0z" />
-<glyph unicode="&#1025;" horiz-adv-x="503" d="M168 700h130h264l-26 -122h-264l-35 -163h241l-27 -122h-239l-37 -171h269l-25 -122h-269h-130zM206 798q0 29 20 43.5q20 14.5 52 14.5q32 0 52 -14.5q20 -14.5 20 -43.5q0 -29 -20 -43q-20 -14 -52 -14q-32 0 -52 14q-20 14 -20 43zt0 0zM410 798q0 29 20 43.5q20 14.5 52 14.5q32 0 52 -14.5q20 -14.5 20 -43.5q0 -29 -20 -43q-20 -14 -52 -14q-32 0 -52 14t-20 43z" />
-<glyph unicode="&#1026;" horiz-adv-x="709" d="M297 0h-129l122 578h-194l26 122h517l-25 -122h-194l-31 -143q17 6 45 14q28 8 79 8q48 0 81 -14.5q33 -14.5 53.5 -40q20.5 -25.5 29.5 -59q9 -33.5 9 -70.5q0 -54 -16 -104.5q-16 -50.5 -50 -89.5q-34 -39 -87.5 -62.5q-53.5 -23.5 -128.5 -23.5q-53 0 -65 4l26 117q6 -1 20.5 -2q14.5 -1 30.5 -1q31 0 56 11q25 11 42 30q17 19 26 44q9 25 9 53q0 49 -24 67.5q-24 18.5 -74 18.5q-22 0 -48 -6q-26 -6 -39 -12z" />
-<glyph unicode="&#1027;" horiz-adv-x="436" d="M528 578h-256l-122 -578h-130l148 700h386zM419 870h157l-6 -30l-172 -88l-104 0z" />
-<glyph unicode="&#1028;" horiz-adv-x="559" d="M498 29q-35 -22 -82.5 -32.5q-47.5 -10.5 -96.5 -10.5q-66 0 -115 22q-49 22 -81.5 61q-32.5 39 -48.5 91q-16 52 -16 112q0 118 33 201.5q33 83.5 87 137q54 53.5 123.5 78.5q69.5 25 142.5 25q28 0 54.5 -2.5q26.5 -2.5 50 -6.5q23.5 -4 41.5 -9q18 -5 30 -10l-51 -116q-21 11 -56 16.5q-35 5.5 -78 5.5q-77 0 -136 -46q-59 -46 -86 -130l271 0l-24 -113h-265v-15q0 -85 42.5 -132.5q42.5 -47.5 113.5 -47.5q45 0 82 9.5q37 9.5 62 23.5z" />
-<glyph unicode="&#1029;" horiz-adv-x="510" d="M502 559q-19 12 -56 24.5q-37 12.5 -82 12.5q-23 0 -45 -4.5q-22 -4.5 -39 -14.5q-17 -10 -27 -26q-10 -16 -10 -38q0 -29 18 -49q18 -20 45.5 -37.5q27.5 -17.5 59 -35.5q31.5 -18 59 -42q27.5 -24 45.5 -57.5q18 -33.5 18 -82.5q0 -59 -20.5 -101.5q-20.5 -42.5 -58 -69.5q-37.5 -27 -90 -39.5q-52.5 -12.5 -116.5 -12.5q-35 0 -66.5 4q-31.5 4 -58.5 10q-27 6 -47.5 13.5q-20.5 7.5 -32.5 14.5l67 116q10 -6 26 -13q16 -7 36.5 -13q20.5 -6 44.5 -10q24 -4 48 -4q28 0 53 4.5q25 4.5 43.5 15q18.5 10.5 29 26.5q10.5 16 10.5 40q0 27 -18 46q-18 19 -45.5 36q-27.5 17 -59 35.5q-31.5 18.5 -59 43.5q-27.5 25 -45.5 60.5q-18 35.5 -18 86.5q0 58 20.5 99q20.5 41 55.5 67q35 26 82 38q47 12 101 12q29 0 58 -3q29 -3 55 -8.5q26 -5.5 48 -13q22 -7.5 37 -16.5z" />
-<glyph unicode="&#1030;" horiz-adv-x="278" d="M183 700h129l-148 -700l-129 0z" />
-<glyph unicode="&#1031;" horiz-adv-x="278" d="M183 700h129l-148 -700h-129zM139 792q0 30 15 47q15 17 41 17q25 0 40.5 -17q15.5 -17 15.5 -47q0 -29 -15.5 -45.5q-15.5 -16.5 -40.5 -16.5q-26 0 -41 16.5q-15 16.5 -15 45.5zt0 0zM272 792q0 30 15.5 47q15.5 17 40.5 17q25 0 41 -17q16 -17 16 -47q0 -29 -16 -45.5q-16 -16.5 -41 -16.5q-25 0 -40.5 16.5t-15.5 45.5z" />
-<glyph unicode="&#1032;" horiz-adv-x="324" d="M239 700h130l-109 -512q-9 -42 -23 -78.5q-14 -36.5 -37 -63.5q-23 -27 -57.5 -42.5q-34.5 -15.5 -83.5 -15.5q-28 0 -59 6q-31 6 -51 17l50 112q23 -13 54 -13q21 0 35 8.5q14 8.5 23.5 23.5q9.5 15 15.5 35.5q6 20.5 12 45.5z" />
-<glyph unicode="&#1033;" horiz-adv-x="890" d="M489 578h-139q-23 -95 -43.5 -173q-20.5 -78 -41 -140q-20.5 -62 -43.5 -110q-23 -48 -50 -84q-18 -24 -37.5 -39q-19.5 -15 -39 -23.5q-19.5 -8.5 -37.5 -12q-18 -3.5 -34 -3.5q-46 0 -72 14l39 118q5 -2 10.5 -3q5.5 -1 10.5 -1q17 -1 34.5 8q17.5 9 32.5 29q18 22 38 64q20 42 41.5 108q21.5 66 45 157q23.5 91 49.5 213l123 0h139h130l-53 -251q12 2 37.5 5q25.5 3 47.5 3q46 0 84 -12.5q38 -12.5 66 -36.5q28 -24 43.5 -59q15.5 -35 15.5 -81q0 -75 -26 -128q-26 -53 -71 -86q-45 -33 -106 -48.5q-61 -15.5 -130 -15.5q-13 0 -35.5 0.5q-22.5 0.5 -48.5 2.5q-26 2 -53 5q-27 3 -48 9zM521 118q11 -2 28 -4q17 -2 36 -2q33 0 62.5 7.5q29.5 7.5 52 24q22.5 16.5 36 41.5q13.5 25 13.5 61q0 50 -32 69.5q-32 19.5 -85 19.5q-6 0 -16 -1q-10 -1 -19.5 -2q-9.5 -1 -18 -2.5q-8.5 -1.5 -12.5 -2.5z" />
-<glyph unicode="&#1034;" horiz-adv-x="916" d="M458 305h-243l-65 -305h-130l148 700h130l-58 -273h243l58 273h130l-56 -266q6 1 16.5 2.5q10.5 1.5 23 3q12.5 1.5 26 2q13.5 0.5 24.5 0.5q94 0 150.5 -48q56.5 -48 56.5 -140q0 -61 -20.5 -110q-20.5 -49 -61.5 -83q-41 -34 -103.5 -52.5q-62.5 -18.5 -147.5 -18.5q-13 0 -34 0.5q-21 0.5 -49 2q-28 1.5 -54.5 4q-26.5 2.5 -47.5 6.5zM548 118q10 -3 28 -4.5q18 -1.5 37 -1.5q83 0 122.5 32q39.5 32 39.5 94q0 47 -30 64.5q-30 17.5 -87 17.5q-7 0 -17 -1q-10 -1 -20 -2q-10 -1 -19 -3q-9 -2 -13 -3z" />
-<glyph unicode="&#1035;" horiz-adv-x="727" d="M297 0h-129l122 578h-194l26 122h517l-25 -122h-195l-37 -177q28 16 64.5 28.5q36.5 12.5 89.5 12.5q33 0 62 -8.5q29 -8.5 50.5 -27.5q21.5 -19 34.5 -48q13 -29 13 -70q0 -14 -1.5 -30.5q-1.5 -16.5 -5.5 -33.5l-47 -224h-130l44 202q2 12 3.5 22.5q1.5 10.5 1.5 20.5q0 79 -82 79q-36 0 -65.5 -9.5q-29.5 -9.5 -54.5 -24.5z" />
-<glyph unicode="&#1036;" horiz-adv-x="593" d="M260 299h-47l-63 -299h-130l148 700h130l-66 -310l31 11l237 299h156l-252 -297l-60 -35l44 -39l152 -329h-145zM444 870h157l-6 -30l-172 -88l-104 0z" />
-<glyph unicode="&#1038;" horiz-adv-x="546" d="M315 391l1 -91h6l33 94l163 306h145l-280 -484q-33 -57 -59 -99q-26 -42 -51.5 -69.5q-25.5 -27.5 -54.5 -41q-29 -13.5 -68 -13.5q-61 0 -98 24l57 111q14 -8 26 -10.5q12 -2.5 27 -2.5q21 0 41 21.5q20 21.5 39 55.5l-140 508h143zM334 874q-2 -28 13.5 -44q15.5 -16 43.5 -16q65 0 85 59l114 -17q-21 -61 -74.5 -91q-53.5 -30 -134.5 -30q-39 0 -68 9.5q-29 9.5 -48 25.5q-19 16 -28.5 37.5q-9.5 21.5 -10.5 46.5z" />
-<glyph unicode="&#1039;" horiz-adv-x="614" d="M531 700h129l-148 -700h-133h-65l-26 -175h-116l45 175h-67h-130l148 700h130l-123 -578l233 0z" />
-<glyph unicode="&#1040;" horiz-adv-x="582" d="M387 155h-204l-83 -155h-138l389 705h96l91 -705h-131zM240 265h142l-16 156l1 110h-5l-40 -111z" />
-<glyph unicode="&#1041;" horiz-adv-x="548" d="M167 700h130h278l-26 -122h-278l-31 -146q17 3 41 6q24 3 47 3q55 0 93.5 -15q38.5 -15 62.5 -40q24 -25 35.5 -58q11.5 -33 11.5 -68q0 -63 -21.5 -113q-21.5 -50 -63 -85q-41.5 -35 -101.5 -53.5q-60 -18.5 -136 -18.5q-16 0 -37.5 0.5q-21.5 0.5 -50.5 3q-29 2.5 -55.5 5.5q-26.5 3 -45.5 8zM171 108q10 -3 31 -4q21 -1 41 -1q28 0 55 8.5q27 8.5 48.5 25q21.5 16.5 34.5 41.5q13 25 13 58q0 52 -30.5 72q-30.5 20 -85.5 20q-14 0 -34 -2.5q-20 -2.5 -28 -4.5z" />
-<glyph unicode="&#1042;" horiz-adv-x="568" d="M166 695q19 3 43 6q24 3 51 5q27 2 55.5 3q28.5 1 55.5 1q46 0 85.5 -9.5q39.5 -9.5 68 -29.5q28.5 -20 45 -51.5q16.5 -31.5 16.5 -75.5q0 -33 -11 -63.5q-11 -30.5 -31.5 -54.5q-20.5 -24 -49 -40q-28.5 -16 -64.5 -21l0 -5q19 -4 38 -14.5q19 -10.5 34 -27q15 -16.5 24 -39q9 -22.5 9 -50.5q0 -64 -25 -109.5q-25 -45.5 -67 -74q-42 -28.5 -98 -42q-56 -13.5 -118 -13.5q-16 0 -41.5 0q-25.5 0 -54.5 1.5q-29 1.5 -58 4.5q-29 3 -53 9zM167 109q4 -2 14.5 -3q10.5 -1 23 -1.5q12.5 -0.5 25.5 -1q13 -0.5 22 -0.5q25 0 51.5 6q26.5 6 48 20q21.5 14 35.5 36q14 22 14 54q0 25 -11 41q-11 16 -29 25.5q-18 9.5 -41.5 13q-23.5 3.5 -48.5 3.5h-64zM230 406h43q14 0 33 0.5q19 0.5 32 2.5q18 3 38.5 10q20.5 7 37 20q16.5 13 27.5 33q11 20 11 50q0 43 -28.5 59q-28.5 16 -72.5 16q-26 0 -48 -1q-22 -1 -34 -3z" />
-<glyph unicode="&#1043;" horiz-adv-x="436" d="M528 578h-256l-122 -578h-130l148 700l386 0z" />
-<glyph unicode="&#1044;" horiz-adv-x="663" d="M575 -125h-91l12 125h-427l-41 -125h-92l52 247h70q9 11 33.5 48.5q24.5 37.5 54.5 107q30 69.5 62.5 173.5q32.5 104 58.5 249l117 0h152h130l-123 -578h85zM414 122l96 456h-146q-42 -180 -87 -293q-45 -113 -79 -163z" />
-<glyph unicode="&#1045;" horiz-adv-x="503" d="M168 700h130h264l-26 -122h-264l-35 -163h241l-27 -122h-239l-37 -171h269l-25 -122h-269l-130 0z" />
-<glyph unicode="&#1046;" horiz-adv-x="803" d="M440 700h124l-66 -311l34 11l195 300h154l-219 -307l-53 -34l42 -42l112 -317h-144l-98 304h-41l-64 -304h-124l67 316l-33 -12l-213 -304h-159l236 307l61 39l-38 37l-98 317h140l82 -299l40 0z" />
-<glyph unicode="&#1047;" horiz-adv-x="507" d="M141 309l23 108h23q9 0 21 0.5q12 0.5 24.5 1.5q12.5 1 24.5 2q12 1 20 2q20 3 40 9.5q20 6.5 35.5 18.5q15.5 12 25.5 29q10 17 10 41q0 32 -24.5 50.5q-24.5 18.5 -72.5 18.5q-42 0 -80.5 -12q-38.5 -12 -63.5 -23l-9 116q12 6 32.5 13q20.5 7 46 13q25.5 6 55.5 10.5q30 4.5 60 4.5q42 0 77 -9.5q35 -9.5 61 -28.5q26 -19 40.5 -47.5q14.5 -28.5 14.5 -65.5q0 -69 -37.5 -121q-37.5 -52 -111.5 -69l0 -5q19 -6 37 -16.5q18 -10.5 31.5 -27.5q13.5 -17 22 -41q8.5 -24 8.5 -57q0 -61 -24 -105.5q-24 -44.5 -65.5 -74q-41.5 -29.5 -97.5 -44q-56 -14.5 -119 -14.5q-63 0 -112.5 11q-49.5 11 -73.5 26l58 119q20 -11 58 -22.5q38 -11.5 94 -11.5q24 0 50 6q26 6 47 19.5q21 13.5 34.5 35.5q13.5 22 13.5 54q0 48 -34.5 66q-34.5 18 -98.5 20l-38 0z" />
-<glyph unicode="&#1048;" horiz-adv-x="638" d="M487 381l29 89h-6l-64 -96l-326 -374h-100l148 700h130l-79 -374l-30 -92h6l66 99l324 367h100l-148 -700l-130 0z" />
-<glyph unicode="&#1049;" horiz-adv-x="638" d="M487 381l29 89h-6l-64 -96l-326 -374h-100l148 700h130l-79 -374l-30 -92h6l66 99l324 367h100l-148 -700h-130zM398 874q-2 -28 13.5 -44q15.5 -16 43.5 -16q65 0 85 59l114 -17q-21 -61 -74.5 -91q-53.5 -30 -134.5 -30q-39 0 -68 9.5q-29 9.5 -48 25.5q-19 16 -28.5 37.5q-9.5 21.5 -10.5 46.5z" />
-<glyph unicode="&#1050;" horiz-adv-x="593" d="M260 299h-47l-63 -299h-130l148 700h130l-66 -310l31 11l237 299h156l-252 -297l-60 -35l44 -39l152 -329l-145 0z" />
-<glyph unicode="&#1051;" horiz-adv-x="599" d="M490 578h-140q-23 -95 -43.5 -173q-20.5 -78 -41 -140q-20.5 -62 -43.5 -110q-23 -48 -50 -84q-18 -24 -37.5 -39q-19.5 -15 -39 -23.5q-19.5 -8.5 -37.5 -12q-18 -3.5 -34 -3.5q-46 0 -72 14l39 118q5 -2 10.5 -3q5.5 -1 10.5 -1q17 -1 34.5 8q17.5 9 32.5 29q18 22 38 64q20 42 41.5 108q21.5 66 45 157q23.5 91 49.5 213l123 0h139h130l-148 -700l-129 0z" />
-<glyph unicode="&#1052;" horiz-adv-x="767" d="M613 363l44 138h-6l-66 -113l-197 -259h-41l-94 262l-18 110h-5l-10 -137l-77 -364h-123l148 700h115l105 -320l13 -80h5l46 82l236 318h125l-148 -700l-129 0z" />
-<glyph unicode="&#1053;" horiz-adv-x="624" d="M455 293h-243l-62 -293h-130l148 700h130l-60 -285h243l60 285h130l-148 -700l-130 0z" />
-<glyph unicode="&#1054;" horiz-adv-x="644" d="M58 262q0 93 25.5 175.5q25.5 82.5 72.5 144q47 61.5 113.5 97q66.5 35.5 148.5 35.5q54 0 97.5 -16q43.5 -16 74 -49.5q30.5 -33.5 47.5 -84.5q17 -51 17 -121q0 -94 -25.5 -177q-25.5 -83 -72 -145.5q-46.5 -62.5 -111 -98.5q-64.5 -36 -142.5 -36q-118 0 -181 69.5q-63 69.5 -64 206.5zt0 0zM195 266q0 -72 27.5 -115q27.5 -43 90.5 -43q46 0 83.5 27.5q37.5 27.5 64.5 74q27 46.5 41.5 106.5q14.5 60 14.5 125q0 79 -31 115q-31 36 -85 36q-45 0 -82.5 -26q-37.5 -26 -65 -70.5q-27.5 -44.5 -43 -104t-15.5 -125.5z" />
-<glyph unicode="&#1055;" horiz-adv-x="613" d="M504 578h-232l-122 -578h-130l148 700h130h232h130l-148 -700l-130 0z" />
-<glyph unicode="&#1056;" horiz-adv-x="550" d="M167 693q42 8 89.5 12.5q47.5 4.5 95.5 4.5q51 0 94.5 -11.5q43.5 -11.5 76 -35.5q32.5 -24 50.5 -61.5q18 -37.5 18 -89.5q0 -78 -27 -130.5q-27 -52.5 -71.5 -85q-44.5 -32.5 -101.5 -46q-57 -13.5 -116 -13.5q-5 0 -15.5 0q-10.5 0 -22 0.5q-11.5 0.5 -22 1.5q-10.5 1 -15.5 2l-50 -241h-130zM226 359q4 -1 11 -2q7 -1 15.5 -1.5q8.5 -0.5 16 -0.5q7.5 0 11.5 0q34 0 65.5 7.5q31.5 7.5 55.5 24q24 16.5 38.5 43.5q14.5 27 14.5 66q0 29 -9.5 48q-9.5 19 -25.5 29.5q-16 10.5 -37.5 14.5q-21.5 4 -45.5 4q-18 0 -34.5 -1.5q-16.5 -1.5 -27.5 -3.5z" />
-<glyph unicode="&#1057;" horiz-adv-x="537" d="M483 29q-67 -43 -164 -43q-66 0 -115 22q-49 22 -81.5 61q-32.5 39 -48.5 91q-16 52 -16 112q0 118 33 201.5q33 83.5 87 137q54 53.5 123.5 78.5q69.5 25 142.5 25q57 0 97.5 -8.5q40.5 -8.5 63.5 -19.5l-51 -116q-20 11 -48 16.5q-28 5.5 -71 5.5q-51 0 -95 -21q-44 -21 -76 -60q-32 -39 -50.5 -95q-18.5 -56 -18.5 -127q0 -85 42.5 -133q42.5 -48 113.5 -48q45 0 74.5 9.5q29.5 9.5 55.5 23.5z" />
-<glyph unicode="&#1058;" horiz-adv-x="547" d="M614 578h-194l-123 -578h-129l122 578h-194l26 122l517 0z" />
-<glyph unicode="&#1059;" horiz-adv-x="546" d="M315 391l1 -91h6l33 94l163 306h145l-280 -484q-33 -57 -59 -99q-26 -42 -51.5 -69.5q-25.5 -27.5 -54.5 -41q-29 -13.5 -68 -13.5q-61 0 -98 24l57 111q14 -8 26 -10.5q12 -2.5 27 -2.5q21 0 41 21.5q20 21.5 39 55.5l-140 508l143 0z" />
-<glyph unicode="&#1060;" horiz-adv-x="770" d="M297 78q-20 -4 -35 -5.5q-15 -1.5 -40 -1.5q-34 0 -65 12.5q-31 12.5 -54.5 38q-23.5 25.5 -37.5 64q-14 38.5 -14 89.5q0 90 23.5 158.5q23.5 68.5 65 114q41.5 45.5 97 69q55.5 23.5 118.5 23.5q13 0 31 -1.5q18 -1.5 29 -3.5l18 85h128l-18 -88q19 5 38.5 6.5q19.5 1.5 34.5 1.5q78 0 125 -51.5q47 -51.5 47 -151.5q0 -80 -21.5 -147q-21.5 -67 -60.5 -116q-39 -49 -93.5 -76q-54.5 -27 -121.5 -27q-17 0 -35 1.5q-18 1.5 -31 5.5l-21 -98h-128zM442 183q8 -2 19.5 -2q11.5 0 23.5 0q36 0 67 16.5q31 16.5 54.5 47q23.5 30.5 37 74.5q13.5 44 13.5 99q0 112 -91 112q-11 0 -26 -1q-15 -1 -26 -4zM397 527q-10 2 -22.5 2.5q-12.5 0.5 -23.5 0.5q-36 0 -66.5 -16q-30.5 -16 -53.5 -46.5q-23 -30.5 -36 -74q-13 -43.5 -13 -98.5q0 -31 7.5 -52.5q7.5 -21.5 20 -35q12.5 -13.5 29.5 -20q17 -6.5 36 -6.5q8 0 23 0.5q15 0.5 27 4.5z" />
-<glyph unicode="&#1061;" horiz-adv-x="608" d="M256 357l-113 343h141l60 -202l10 -71l37 71l149 202h156l-263 -338l125 -362h-139l-72 216l-12 74l-40 -74l-161 -216l-158 0z" />
-<glyph unicode="&#1062;" horiz-adv-x="655" d="M566 -125h-91l12 125h-107h-230h-130l148 700h130l-123 -578h230l123 578h129l-122 -578l84 0z" />
-<glyph unicode="&#1063;" horiz-adv-x="583" d="M284 700l-46 -217q-3 -13 -3.5 -24q-0.5 -11 -0.5 -22q0 -39 18.5 -58q18.5 -19 60.5 -19q36 0 67.5 8q31.5 8 53.5 25l65 307h130l-148 -700h-130l60 282q-14 -7 -29 -14q-15 -7 -33 -13q-18 -6 -40.5 -9.5q-22.5 -3.5 -50.5 -3.5q-35 0 -64.5 9q-29.5 9 -51 28q-21.5 19 -33.5 48q-12 29 -12 68q0 31 7 63l51 242z" />
-<glyph unicode="&#1064;" horiz-adv-x="825" d="M437 0h-130h-157h-130l148 700h130l-123 -578h157l123 578h129l-122 -578h157l122 578h130l-148 -700l-129 0z" />
-<glyph unicode="&#1065;" horiz-adv-x="869" d="M150 0h-130l148 700h130l-123 -578h157l123 578h129l-122 -578h157l122 578h130l-123 -578h88l-52 -247h-91l12 125h-111h-157l-130 0z" />
-<glyph unicode="&#1066;" horiz-adv-x="632" d="M232 578h-151l25 122h151h130l-53 -251q13 2 38.5 5q25.5 3 47.5 3q95 0 151.5 -50q56.5 -50 56.5 -139q0 -64 -21 -115.5q-21 -51.5 -62 -87.5q-41 -36 -103.5 -55.5q-62.5 -19.5 -144.5 -19.5q-13 0 -34.5 0.5q-21.5 0.5 -49 2.5q-27.5 2 -54.5 5q-27 3 -48 9zM264 118q10 -3 26.5 -4.5q16.5 -1.5 35.5 -1.5q32 0 62 7.5q30 7.5 53 24q23 16.5 36.5 42q13.5 25.5 13.5 61.5q0 26 -9 43q-9 17 -24.5 27q-15.5 10 -36.5 14q-21 4 -45 4q-7 0 -17 -1q-10 -1 -20 -2q-10 -1 -18.5 -2.5q-8.5 -1.5 -12.5 -2.5z" />
-<glyph unicode="&#1067;" horiz-adv-x="765" d="M681 700h130l-148 -700h-130zM167 700h130l-53 -251q13 2 33 5q20 3 43 3q48 0 85.5 -13.5q37.5 -13.5 63 -38q25.5 -24.5 38.5 -58q13 -33.5 13 -73.5q0 -66 -22 -118.5q-22 -52.5 -64 -89.5q-42 -37 -103 -56.5q-61 -19.5 -139 -19.5q-13 0 -26 0q-13 0 -16 1q-18 0 -39 2q-21 2 -45.5 5q-24.5 3 -45.5 9zM173 118q21 -6 54 -6q33 0 61.5 9q28.5 9 49.5 26.5q21 17.5 33 42.5q12 25 12 58q0 87 -106 87q-13 0 -32 -2.5q-19 -2.5 -27 -5.5z" />
-<glyph unicode="&#1068;" horiz-adv-x="542" d="M167 700h130l-53 -251q12 2 37.5 5q25.5 3 47.5 3q46 0 84 -12.5q38 -12.5 66 -36.5q28 -24 43.5 -59q15.5 -35 15.5 -81q0 -75 -26 -128q-26 -53 -71 -86q-45 -33 -106 -48.5q-61 -15.5 -130 -15.5q-13 0 -34 0.5q-21 0.5 -48.5 2.5q-27.5 2 -54.5 5q-27 3 -48 9zM173 118q11 -2 28 -4q17 -2 36 -2q33 0 62.5 7.5q29.5 7.5 52 24q22.5 16.5 36 41.5q13.5 25 13.5 61q0 50 -32 70q-32 20 -85 19q-6 0 -16 -1q-10 -1 -19.5 -2q-9.5 -1 -18 -2.5q-8.5 -1.5 -12.5 -2.5z" />
-<glyph unicode="&#1069;" horiz-adv-x="552" d="M176 410h251q3 38 -2 71.5q-5 33.5 -21.5 58q-16.5 24.5 -47 38.5q-30.5 14 -78.5 14q-50 0 -85 -11.5q-35 -11.5 -61 -25.5l-4 116q38 18 82.5 30.5q44.5 12.5 95.5 12.5q70 0 119.5 -22q49.5 -22 80 -59q30.5 -37 44.5 -84.5q14 -47.5 14 -99.5q0 -99 -24 -184q-24 -85 -73.5 -147q-49.5 -62 -125.5 -97q-76 -35 -180 -35q-26 0 -51.5 3q-25.5 3 -48.5 7.5q-23 4.5 -42 10.5q-19 6 -31 12l60 119q19 -11 54 -20.5q35 -9.5 83 -9.5q44 0 83 14q39 14 69 39.5q30 25.5 50.5 61q20.5 35.5 28.5 77.5l-263 0z" />
-<glyph unicode="&#1070;" horiz-adv-x="864" d="M238 415h85q42 147 127.5 223q85.5 76 198.5 76q109 0 167.5 -66q58.5 -66 58.5 -181q0 -97 -23.5 -184.5q-23.5 -87.5 -68.5 -153.5q-45 -66 -112 -104.5q-67 -38.5 -154 -38.5q-56 0 -96.5 19.5q-40.5 19.5 -66.5 54q-26 34.5 -38.5 80.5q-12.5 46 -12.5 100q0 26 3 53l-94 0l-62 -293h-130l148 700h130zM435 249q0 -64 24 -102.5q24 -38.5 82 -38.5q45 0 81.5 29.5q36.5 29.5 62 78q25.5 48.5 39.5 112q14 63.5 14 131.5q0 63 -26 98q-26 35 -80 35q-44 0 -80 -28.5q-36 -28.5 -62 -76q-26 -47.5 -40.5 -109.5t-14.5 -129z" />
-<glyph unicode="&#1071;" horiz-adv-x="557" d="M327 0l59 277l-70 -18l-195 -259h-151l184 235l66 44q-18 8 -37.5 22q-19.5 14 -35.5 35q-16 21 -26 50q-10 29 -10 68q0 75 29 124q29 49 75.5 78.5q46.5 29.5 106 41.5q59.5 12 120.5 12q15 0 30 -1q1 0 14.5 -0.5q13.5 -0.5 36 -2.5q22.5 -2 43.5 -5q21 -3 37 -8l-147 -693zM451 583q-11 2 -23 3.5q-12 1.5 -29 1.5q-27 0 -54 -5.5q-27 -5.5 -48.5 -19.5q-21.5 -14 -35 -38.5q-13.5 -24.5 -13.5 -61.5q0 -48 29.5 -72.5q29.5 -24.5 77.5 -24.5l49 0z" />
-<glyph unicode="&#1072;" horiz-adv-x="503" d="M444 200q-8 -38 -11.5 -77q-3.5 -39 -3.5 -74q0 -14 0.5 -26.5q0.5 -12.5 1.5 -23.5l-91 0l-14 86h-4q-11 -18 -28.5 -35.5q-17.5 -17.5 -38.5 -32q-21 -14.5 -44.5 -23q-23.5 -8.5 -48.5 -8.5q-66 0 -97.5 43q-31.5 43 -31.5 115q0 73 18.5 140q18.5 67 57.5 118q39 51 98.5 81.5q59.5 30.5 141.5 30.5q35 0 76.5 -6.5q41.5 -6.5 80.5 -17.5zM209 89q18 0 34 7.5q16 7.5 29.5 19.5q13.5 12 24 26q10.5 14 18.5 26l50 233q-11 5 -25.5 7.5q-14.5 2.5 -28.5 2.5q-36 0 -64 -21.5q-28 -21.5 -47.5 -56q-19.5 -34.5 -29.5 -78q-10 -43.5 -10 -87.5q0 -32 10.5 -55.5t38.5 -23.5z" />
-<glyph unicode="&#1073;" horiz-adv-x="505" d="M176 392q72 97 180 97q39 0 66 -11.5q27 -11.5 44 -32q17 -20.5 24.5 -49q7.5 -28.5 7.5 -62.5q0 -80 -21.5 -144.5q-21.5 -64.5 -59 -109.5q-37.5 -45 -87 -69.5q-49.5 -24.5 -104.5 -24.5q-47 0 -81.5 14.5q-34.5 14.5 -57 40q-22.5 25.5 -34 61.5q-11.5 36 -11.5 79q0 105 23 196q23 91 63 159q40 68 95 109q55 41 120 46q82 7 134 13q52 6 73 23l-13 -115q-20 -14 -59 -21.5q-39 -7.5 -108 -12.5q-33 -3 -62 -10.5q-29 -7.5 -54 -27.5q-25 -20 -46 -55q-21 -35 -37 -93zM169 184q0 -19 3 -36.5q3 -17.5 10.5 -30.5q7.5 -13 21.5 -20.5q14 -7.5 35 -7.5q24 0 47.5 16q23.5 16 42.5 44.5q19 28.5 30.5 68q11.5 39.5 11.5 87.5q0 15 -3.5 29.5q-3.5 14.5 -11.5 26q-8 11.5 -21 18.5q-13 7 -32 7q-27 0 -51.5 -15.5q-24.5 -15.5 -42.5 -42.5q-18 -27 -29 -64t-11 -80z" />
-<glyph unicode="&#1074;" horiz-adv-x="465" d="M54 288q11 48 33 88.5q22 40.5 54 70q32 29.5 73.5 45.5q41.5 16 90.5 16q44 0 74 -7q30 -7 48.5 -20.5q18.5 -13.5 26.5 -32.5q8 -19 8 -44q0 -24 -9 -45.5q-9 -21.5 -24 -39.5q-15 -18 -36 -32q-21 -14 -45 -21l-1 -4q41 -5 63 -24.5q22 -19.5 22 -61.5q0 -44 -18 -78q-18 -34 -49.5 -57.5q-31.5 -23.5 -74.5 -36q-43 -12.5 -93 -12.5q-36 0 -66 9q-30 9 -52 28q-22 19 -34 49q-12 30 -12 73q0 20 3 41.5q3 21.5 8 46.5zM154 197q-4 -19 -4 -38q0 -67 67 -67q38 0 64.5 20q26.5 20 26.5 57q0 22 -18 36.5q-18 14.5 -64 10.5l-69 -5zM246 296q12 1 27.5 6q15.5 5 29 13.5q13.5 8.5 23 21q9.5 12.5 9.5 29.5q0 20 -9 31q-9 11 -41 11q-81 0 -106 -92l-8 -28z" />
-<glyph unicode="&#1075;" horiz-adv-x="410" d="M351 40q-32 -24 -76.5 -39q-44.5 -15 -86.5 -15q-48 0 -81 11.5q-33 11.5 -54 31q-21 19.5 -30.5 44q-9.5 24.5 -9.5 50.5q0 47 19.5 77.5q19.5 30.5 48.5 50q29 19.5 62.5 31.5q33.5 12 62.5 23q29 11 48.5 24q19.5 13 19.5 35q0 23 -13 32.5q-13 9.5 -42 9.5q-45 0 -74 -8.5q-29 -8.5 -50 -18.5l-15 93q16 9 37.5 15.5q21.5 6.5 45.5 11.5q24 5 48.5 7.5q24.5 2.5 45.5 2.5q40 0 67.5 -9q27.5 -9 44.5 -24.5q17 -15.5 24.5 -36.5q7.5 -21 7.5 -45q0 -49 -19.5 -79.5q-19.5 -30.5 -48.5 -50.5q-29 -20 -62.5 -32q-33.5 -12 -62.5 -23.5q-29 -11.5 -48.5 -26.5q-19.5 -15 -19.5 -39q0 -26 19 -40q19 -14 48 -14q34 0 65.5 9q31.5 9 51.5 22z" />
-<glyph unicode="&#1076;" horiz-adv-x="501" d="M293 500q27 0 43 -5q16 -5 28 -13l5 0q-6 72 -56.5 107q-50.5 35 -129.5 34l20 91q148 4 219 -72.5q71 -76.5 71 -220.5q0 -110 -23 -191.5q-23 -81.5 -62 -135.5q-39 -54 -89 -81q-50 -27 -104 -27q-91 0 -134.5 54.5q-43.5 54.5 -43.5 145.5q0 63 18.5 119.5q18.5 56.5 52.5 100q34 43.5 81 69q47 25.5 104 25.5zt0 0zM366 373q-14 12 -29.5 18q-15.5 6 -39.5 6q-26 0 -50 -14.5q-24 -14.5 -42.5 -42q-18.5 -27.5 -29.5 -67q-11 -39.5 -11 -89.5q0 -38 15.5 -66.5q15.5 -28.5 48.5 -28.5q37 0 63 27.5q26 27.5 42.5 69.5q16.5 42 24.5 92t8 95z" />
-<glyph unicode="&#1077;" horiz-adv-x="466" d="M402 48q-31 -26 -80 -44q-49 -18 -114 -18q-81 0 -127.5 47.5q-46.5 47.5 -46.5 132.5q0 80 25 144.5q25 64.5 65.5 109.5q40.5 45 91.5 69.5q51 24.5 102 24.5q41 0 70.5 -10.5q29.5 -10.5 48.5 -29q19 -18.5 28 -42.5q9 -24 9 -51q0 -41 -21 -72q-21 -31 -58.5 -51.5q-37.5 -20.5 -90.5 -31q-53 -10.5 -116 -10.5q-8 0 -15 0.5q-7 0.5 -15 0.5q-2 -12 -3 -21.5q-1 -9.5 -1 -17.5q0 -45 23.5 -67q23.5 -22 66.5 -22q44 0 79 13q35 13 53 26zM176 295q28 0 59.5 2q31.5 2 58.5 9.5q27 7.5 45 22q18 14.5 18 39.5q0 15 -11 30.5q-11 15.5 -46 15.5q-44 0 -76.5 -34t-47.5 -85z" />
-<glyph unicode="&#1078;" horiz-adv-x="757" d="M249 206q-15 -57 -36.5 -97.5q-21.5 -40.5 -47 -65.5q-25.5 -25 -54 -36.5q-28.5 -11.5 -58.5 -11.5q-20 0 -39 5q-19 5 -39 13l33 100q18 -5 32 -5q37 0 65 34q28 34 44 115q4 20 5 36q1 16 1 30q0 51 -20.5 67.5q-20.5 16.5 -55.5 10.5l-12 89q45 12 80 12q60 0 91 -35q31 -35 31 -110q0 -14 -1 -28.5q-1 -14.5 -3 -31.5l76 0l43 203h118l-44 -203h70q14 58 34.5 97.5q20.5 39.5 45.5 64q25 24.5 53 35q28 10.5 56 10.5q31 0 65 -13l-26 -90q-11 3 -21 3q-31 0 -58 -29.5q-27 -29.5 -44 -106.5q-9 -39 -9 -72q0 -26 5 -46q5 -20 15.5 -33q10.5 -13 25.5 -17q15 -4 35 3l12 -90q-47 -16 -82 -16q-34 0 -58 13.5q-24 13.5 -39 36.5q-15 23 -21.5 54.5q-6.5 31.5 -6.5 66.5q0 10 0.5 19q0.5 9 1.5 19l-73 0l-43 -206h-118l44 206z" />
-<glyph unicode="&#1079;" horiz-adv-x="407" d="M100 208l19 89h58q16 0 32.5 5q16.5 5 29 14q12.5 9 20.5 21q8 12 8 26q0 24 -15.5 34q-15.5 10 -53.5 10q-33 0 -56 -6q-23 -6 -48 -17l-21 91q16 9 37 15q21 6 44.5 10.5q23.5 4.5 48 6.5q24.5 2 47.5 2q80 0 114 -28.5q34 -28.5 33 -78.5q0 -24 -8 -45.5q-8 -21.5 -22 -38.5q-14 -17 -32.5 -30q-18.5 -13 -39.5 -20l0 -4q41 -10 56.5 -35.5q15.5 -25.5 15.5 -56.5q0 -43 -18 -77q-18 -34 -50 -57.5q-32 -23.5 -75.5 -36q-43.5 -12.5 -94.5 -12.5q-48 0 -87.5 12q-39.5 12 -61.5 28l46 94q20 -13 49.5 -22.5q29.5 -9.5 66.5 -9.5q47 0 73 21.5q26 21.5 26 54.5q0 22 -19 31.5q-19 9.5 -76 9.5z" />
-<glyph unicode="&#1080;" horiz-adv-x="512" d="M241 500l-65 -309q-6 -30 -6 -50q0 -20 8 -31q8 -11 28 -11q17 0 34.5 8.5q17.5 8.5 33.5 22q16 13.5 29.5 30q13.5 16.5 22.5 32.5l64 308h123l-63 -300q-5 -20 -8.5 -47q-3.5 -27 -6.5 -55.5q-3 -28.5 -4 -54.5q-1 -26 0 -43l-99 0l-5 90h-4q-14 -19 -32.5 -37.5q-18.5 -18.5 -41 -33.5q-22.5 -15 -49 -24q-26.5 -9 -56.5 -9q-47 0 -76 23.5q-29 23.5 -29 86.5q0 37 10 81l69 323z" />
-<glyph unicode="&#1081;" horiz-adv-x="512" d="M241 500l-65 -309q-6 -30 -6 -50q0 -20 8 -31q8 -11 28 -11q17 0 34.5 8.5q17.5 8.5 33.5 22q16 13.5 29.5 30q13.5 16.5 22.5 32.5l64 308h123l-63 -300q-5 -20 -8.5 -47q-3.5 -27 -6.5 -55.5q-3 -28.5 -4 -54.5q-1 -26 0 -43l-99 0l-5 90h-4q-14 -19 -32.5 -37.5q-18.5 -18.5 -41 -33.5q-22.5 -15 -49 -24q-26.5 -9 -56.5 -9q-47 0 -76 23.5q-29 23.5 -29 86.5q0 37 10 81l69 323zM293 704q-2 -39 10 -55q12 -16 37 -16q26 0 45.5 16q19.5 16 33.5 54l87 -25q-24 -65 -75 -96.5q-51 -31.5 -112 -31.5q-29 0 -55 7q-26 7 -44.5 22.5q-18.5 15.5 -28.5 39.5q-10 24 -8 59z" />
-<glyph unicode="&#1082;" horiz-adv-x="472" d="M225 207h-44l-43 -207h-123l106 500h123l-46 -213l36 13l139 200h135l-146 -190l-58 -38l46 -39l79 -233l-131 0z" />
-<glyph unicode="&#1083;" horiz-adv-x="502" d="M363 397h-92q-25 -93 -48.5 -167.5q-23.5 -74.5 -51.5 -127q-28 -52.5 -62.5 -80.5q-34.5 -28 -80.5 -28q-54 0 -75 15l38 108q17 -5 29 -5q20 1 37.5 18q17.5 17 36.5 60.5q19 43.5 40.5 118.5q21.5 75 49.5 191l323 0l-106 -500l-123 0z" />
-<glyph unicode="&#1084;" horiz-adv-x="641" d="M470 229l30 104h-5l-56 -86l-123 -155h-45l-64 155l-18 86h-6l-9 -103l-48 -230h-111l106 500h122l67 -188l15 -63h3l41 65l141 186h136l-106 -500l-118 0z" />
-<glyph unicode="&#1085;" horiz-adv-x="518" d="M335 195h-156l-41 -195h-123l106 500h123l-41 -187h156l40 187h124l-106 -500l-124 0z" />
-<glyph unicode="&#1086;" horiz-adv-x="496" d="M34 162q0 79 22.5 144q22.5 65 60 111q37.5 46 87 71.5q49.5 25.5 103.5 25.5q48 0 81 -15q33 -15 53.5 -40q20.5 -25 29.5 -57q9 -32 9 -66q0 -78 -22 -142.5q-22 -64.5 -59 -110.5q-37 -46 -86 -71.5q-49 -25.5 -103 -25.5q-47 0 -80 15.5q-33 15.5 -54.5 40.5q-21.5 25 -31.5 56.5q-10 31.5 -10 63.5zt0 0zM161 179q0 -90 65 -90q24 0 47 21q23 21 41 55q18 34 28.5 77q10.5 43 10.5 86q0 40 -13.5 61.5q-13.5 21.5 -50.5 21.5q-24 0 -47 -20q-23 -20 -41 -52.5q-18 -32.5 -29 -74.5t-11 -85z" />
-<glyph unicode="&#1087;" horiz-adv-x="521" d="M294 0l66 310q6 28 6 49q0 22 -9 34.5q-9 12.5 -33 12.5q-18 0 -36 -9q-18 -9 -34 -24q-16 -15 -30 -33.5q-14 -18.5 -24 -37.5l-64 -302h-123l106 500h93l-5 -88h4q13 16 30.5 34q17.5 18 40.5 33q23 15 51.5 25q28.5 10 64.5 10q45 0 72 -24.5q27 -24.5 27 -81.5q0 -15 -1.5 -32q-1.5 -17 -6.5 -37l-72 -339z" />
-<glyph unicode="&#1088;" horiz-adv-x="506" d="M122 500h91l-5 -88h4q14 19 32 37.5q18 18.5 40 32.5q22 14 47 23q25 9 54 9q51 0 82 -35q31 -35 31 -110q0 -85 -22.5 -155.5q-22.5 -70.5 -60 -121q-37.5 -50.5 -88 -78.5q-50.5 -28 -105.5 -28q-26 0 -49 5q-23 5 -34 13l-43 -204h-122zM160 106q25 -17 56 -17q31 0 59 21q28 21 49.5 56q21.5 35 34 81.5q12.5 46.5 12.5 97.5q0 29 -13.5 47.5q-13.5 18.5 -36.5 18.5q-18 0 -35 -9q-17 -9 -32 -22.5q-15 -13.5 -27 -30.5q-12 -17 -21 -33z" />
-<glyph unicode="&#1089;" horiz-adv-x="412" d="M393 387q-19 11 -39.5 15q-20.5 4 -44.5 4q-27 0 -52.5 -17.5q-25.5 -17.5 -46 -46q-20.5 -28.5 -32.5 -66.5q-12 -38 -12 -78q0 -51 22 -77.5q22 -26.5 58 -26.5q30 0 55.5 9.5q25.5 9.5 45.5 21.5l23 -84q-32 -24 -74.5 -39.5q-42.5 -15.5 -84.5 -15.5q-48 0 -81.5 14q-33.5 14 -54.5 38q-21 24 -31 55q-10 31 -10 65q0 84 24 150q24 66 63.5 111.5q39.5 45.5 90 70q50.5 24.5 103.5 24.5q47 0 74.5 -9q27.5 -9 49.5 -20z" />
-<glyph unicode="&#1090;" horiz-adv-x="767" d="M283 0l57 272q6 28 9.5 49.5q3.5 21.5 3.5 38.5q0 46 -35 46q-17 0 -34 -9q-17 -9 -31.5 -23q-14.5 -14 -27 -30.5q-12.5 -16.5 -20.5 -31.5l-64 -312h-123l106 500h96l-6 -88h4q15 16 32.5 34q17.5 18 39.5 33q22 15 49 25q27 10 59 10q40 0 60.5 -29q20.5 -29 18.5 -77q15 19 34.5 38q19.5 19 42 34q22.5 15 48 24.5q25.5 9.5 52.5 9.5q46 0 70.5 -21.5q24.5 -21.5 24.5 -80.5q0 -43 -15 -112l-63 -300h-123l59 281q5 23 8 43q3 20 3 35q0 23 -8.5 35q-8.5 12 -28.5 12q-16 0 -32.5 -9.5q-16.5 -9.5 -31.5 -24q-15 -14.5 -27.5 -31.5q-12.5 -17 -19.5 -32l-64 -309z" />
-<glyph unicode="&#1091;" horiz-adv-x="452" d="M216 219l1 -78h6l27 79l136 280h131l-240 -449q-30 -56 -56.5 -103q-26.5 -47 -53.5 -81q-27 -34 -56 -53q-29 -19 -62 -19q-44 0 -66 15l33 98q6 -3 12.5 -4q6.5 -1 12.5 -1q24 0 49 23q25 23 50 74l-94 500l141 0z" />
-<glyph unicode="&#1092;" horiz-adv-x="689" d="M237 -6q-16 -5 -30 -6.5q-14 -1.5 -26 -1.5q-77 0 -114.5 45q-37.5 45 -37.5 118q0 89 23 156.5q23 67.5 61 113q38 45.5 87 68.5q49 23 101 23q26 0 45 -4l41 194h121l-41 -195q17 3 30.5 4q13.5 1 26.5 1q79 0 116.5 -43.5q37.5 -43.5 37.5 -115.5q0 -93 -24 -162q-24 -69 -62.5 -114q-38.5 -45 -86.5 -67q-48 -22 -96 -22q-9 0 -25 1.5q-16 1.5 -26 5.5l-41 -193h-121zM374 90q7 -2 16 -3q9 -1 19 -1q25 0 51 16.5q26 16.5 47 48q21 31.5 34 78q13 46.5 13 105.5q0 37 -18.5 56.5q-18.5 19.5 -60.5 19.5q-10 0 -16.5 -1.5q-6.5 -1.5 -17.5 -4.5zM330 405q-9 2 -17.5 3.5q-8.5 1.5 -19.5 1.5q-23 0 -47.5 -17q-24.5 -17 -45 -48.5q-20.5 -31.5 -34 -75q-13.5 -43.5 -13.5 -95.5q0 -42 18.5 -65q18.5 -23 53.5 -23q10 0 18.5 1.5q8.5 1.5 19.5 4.5z" />
-<glyph unicode="&#1093;" horiz-adv-x="496" d="M166 256l-90 244h139l38 -107l13 -70l44 70l87 107h143l-195 -240l100 -260h-136l-48 120l-15 74l-45 -74l-99 -120l-143 0z" />
-<glyph unicode="&#1094;" horiz-adv-x="536" d="M396 0q-43 0 -61.5 23.5q-18.5 23.5 -10.5 66.5l-4 0q-11 -17 -28.5 -35.5q-17.5 -18.5 -40 -33.5q-22.5 -15 -50 -25q-27.5 -10 -57.5 -10q-47 0 -76 23.5q-29 23.5 -29 86.5q0 37 10 81l69 323h123l-65 -308q-6 -30 -6 -51q0 -20 8 -31q8 -11 28 -11q17 0 34.5 8.5q17.5 8.5 33.5 22q16 13.5 29.5 30q13.5 16.5 22.5 32.5l64 308h123l-68 -321q-6 -29 -6 -46q0 -17 7 -24q7 -7 25 -7h50l-61 -216l-95 0z" />
-<glyph unicode="&#1095;" horiz-adv-x="485" d="M219 500l-24 -114q-5 -21 -7.5 -38q-2.5 -17 -2.5 -31q0 -28 11.5 -42q11.5 -14 38.5 -14q29 0 50.5 9q21.5 9 35.5 20l46 210h123l-106 -500h-123l41 196q-17 -11 -48.5 -24.5q-31.5 -13.5 -79.5 -13.5q-26 0 -48 5.5q-22 5.5 -38.5 18.5q-16.5 13 -25.5 34q-9 21 -9 53q0 29 7 61l36 170z" />
-<glyph unicode="&#1096;" horiz-adv-x="748" d="M495 500l-58 -272q-12 -56 -12 -85q0 -45 31 -45q13 0 28.5 8.5q15.5 8.5 30 21.5q14.5 13 27.5 29q13 16 21 31l64 312h123l-74 -349q-8 -38 -12.5 -76.5q-4.5 -38.5 -6.5 -74.5l-101 0l-3 85h-4q-15 -18 -32 -35.5q-17 -17.5 -37.5 -30.5q-20.5 -13 -45 -21q-24.5 -8 -54.5 -8q-36 0 -58.5 25q-22.5 25 -20.5 74q-30 -39 -71.5 -69q-41.5 -30 -97.5 -30q-45 0 -69 20.5q-24 20.5 -24 77.5q0 43 15 112l63 300h123l-59 -281q-5 -24 -8 -43q-3 -19 -3 -34q0 -44 27 -44q17 0 34 9q17 9 31.5 23q14.5 14 26 30q11.5 16 18.5 31l64 309z" />
-<glyph unicode="&#1097;" horiz-adv-x="771" d="M556 90q-30 -41 -73 -70.5q-43 -29.5 -103 -29.5q-36 0 -59 25q-23 25 -21 74q-30 -39 -71.5 -69q-41.5 -30 -96.5 -30q-45 0 -69 20.5q-24 20.5 -24 77.5q0 43 15 112l63 300h123l-59 -281q-5 -24 -8 -43q-3 -19 -3 -34q0 -44 27 -44q17 0 34 9q17 9 31.5 23q14.5 14 26 30q11.5 16 18.5 31l64 309h124l-58 -272q-12 -56 -12 -85q0 -45 31 -45q13 0 28.5 8.5q15.5 8.5 30 21.5q14.5 13 27.5 29q13 16 21 31l64 312h123l-69 -321q-3 -14 -5 -25.5q-2 -11.5 -2 -20.5q0 -17 7.5 -24q7.5 -7 25.5 -7h51l-62 -216h-94l30 114q-43 0 -61.5 23.5q-18.5 23.5 -10.5 66.5l-4 0z" />
-<glyph unicode="&#1098;" horiz-adv-x="512" d="M213 154q-2 -7 -3 -12.5q-1 -5.5 -1 -10.5q0 -35 45 -35q22 0 42 7q20 7 35.5 19.5q15.5 12.5 24.5 29.5q9 17 9 37q0 24 -12 36.5q-12 12.5 -46 12.5q-20 0 -41 -5q-21 -5 -35 -13zM249 314q24 8 52.5 11.5q28.5 3.5 52.5 3.5q71 0 104.5 -29q33.5 -29 33.5 -83q0 -47 -21.5 -88q-21.5 -41 -59 -71q-37.5 -30 -87 -47.5q-49.5 -17.5 -106.5 -17.5q-38 0 -64 8q-26 8 -42 22q-16 14 -23 33q-7 19 -7 41q0 12 2 24q2 12 5 25l66 251h-114l22 103l237 0z" />
-<glyph unicode="&#1099;" horiz-adv-x="675" d="M166 142q-1 -4 -2 -7q-1 -3 -1 -7q0 -32 39 -32q21 0 40.5 7q19.5 7 34 19q14.5 12 23.5 28.5q9 16.5 9 36.5q0 28 -13.5 39.5q-13.5 11.5 -47.5 11.5q-18 0 -33.5 -3.5q-15.5 -3.5 -29.5 -8.5zM204 316q20 5 48 9q28 4 49 4q74 0 104.5 -30q30.5 -30 30.5 -78q0 -51 -21.5 -93q-21.5 -42 -57.5 -72q-36 -30 -84 -46.5q-48 -16.5 -101 -16.5q-71 0 -103.5 24.5q-32.5 24.5 -32.5 68.5q0 14 3 31l84 383h123zM557 500h123l-106 -500l-123 0z" />
-<glyph unicode="&#1100;" horiz-adv-x="464" d="M167 148q-1 -4 -2 -7q-1 -3 -1 -6q-2 -39 48 -39q21 0 40 7q19 7 33.5 20q14.5 13 23.5 30q9 17 9 38q0 26 -13.5 36.5q-13.5 10.5 -47.5 10.5q-20 0 -38.5 -4.5q-18.5 -4.5 -32.5 -11.5zM204 314q22 6 49.5 10.5q27.5 4.5 59.5 4.5q41 0 67 -9.5q26 -9.5 40.5 -25q14.5 -15.5 19.5 -35q5 -19.5 5 -39.5q0 -48 -19 -89.5q-19 -41.5 -54 -72q-35 -30.5 -83.5 -48q-48.5 -17.5 -108.5 -17.5q-41 0 -68.5 8q-27.5 8 -44 21.5q-16.5 13.5 -23.5 31q-7 17.5 -7 36.5q0 7 0 13.5q0 6.5 2 13.5l85 383l123 0z" />
-<glyph unicode="&#1101;" horiz-adv-x="433" d="M115 296h177q1 8 1.5 16q0.5 8 0.5 14q0 44 -21 64.5q-21 20.5 -56 20.5q-46 0 -73.5 -8.5q-27.5 -8.5 -50.5 -19.5l-28 81q40 24 85.5 37q45.5 13 93.5 13q85 0 129 -45q44 -45 44 -126q0 -94 -23.5 -161.5q-23.5 -67.5 -62.5 -111q-39 -43.5 -90 -64q-51 -20.5 -107 -20.5q-48 0 -91 11.5q-43 11.5 -66 28.5l47 92q20 -13 49 -21q29 -8 60 -8q118 0 145 122l-179 0z" />
-<glyph unicode="&#1102;" horiz-adv-x="699" d="M275 308q29 97 92 151.5q63 54.5 147 54.5q48 0 80 -15q32 -15 51.5 -40q19.5 -25 28 -57q8.5 -32 8.5 -66q0 -76 -21 -140.5q-21 -64.5 -57 -111q-36 -46.5 -84 -72.5q-48 -26 -102 -26q-48 0 -79.5 15.5q-31.5 15.5 -51 40.5q-19.5 25 -27.5 56.5q-8 31.5 -8 63.5q0 11 0.5 21.5q0.5 10.5 1.5 21.5l-73 0l-43 -205h-123l106 500h123l-41 -192zM374 179q0 -45 13 -67.5q13 -22.5 46 -22.5q23 0 45 21q22 21 39 55q17 34 27.5 77q10.5 43 10.5 86q0 40 -11.5 61.5q-11.5 21.5 -48.5 21.5q-24 0 -46 -20q-22 -20 -38.5 -52.5q-16.5 -32.5 -26.5 -74.5t-10 -85z" />
-<glyph unicode="&#1103;" horiz-adv-x="481" d="M300 182l-63 -12l-122 -170h-147l120 159l57 35q-33 9 -57 37.5q-24 28.5 -24 73.5q0 46 19.5 84.5q19.5 38.5 53.5 66q34 27.5 80 43q46 15.5 100 15.5q25 0 50.5 -3q25.5 -3 48 -8q22.5 -5 41 -10.5q18.5 -5.5 29.5 -9.5l-102 -483h-123zM315 256l31 141q-5 2 -18.5 5.5q-13.5 3.5 -33.5 3.5q-44 0 -73.5 -23q-29.5 -23 -29.5 -65q0 -32 19 -48q19 -16 70 -16z" />
-<glyph unicode="&#1105;" horiz-adv-x="466" d="M402 48q-31 -26 -80 -44q-49 -18 -114 -18q-81 0 -127.5 47.5q-46.5 47.5 -46.5 132.5q0 80 25 144.5q25 64.5 65.5 109.5q40.5 45 91.5 69.5q51 24.5 102 24.5q41 0 70.5 -10.5q29.5 -10.5 48.5 -29q19 -18.5 28 -42.5q9 -24 9 -51q0 -41 -21 -72q-21 -31 -58.5 -51.5q-37.5 -20.5 -90.5 -31q-53 -10.5 -116 -10.5q-8 0 -15 0.5q-7 0.5 -15 0.5q-2 -12 -3 -21.5q-1 -9.5 -1 -17.5q0 -45 23.5 -67q23.5 -22 66.5 -22q44 0 79 13q35 13 53 26zM176 295q28 0 59.5 2q31.5 2 58.5 9.5q27 7.5 45 22q18 14.5 18 39.5q0 15 -11 30.5q-11 15.5 -46 15.5q-44 0 -76.5 -34q-32.5 -34 -47.5 -85zt0 0zM170 631q0 33 18.5 51.5q18.5 18.5 47.5 18.5q29 0 47.5 -18.5q18.5 -18.5 18.5 -51.5q0 -32 -18.5 -50q-18.5 -18 -47.5 -18q-29 0 -47.5 18q-18.5 18 -18.5 50zt0 0zM378 632q0 32 18.5 50.5q18.5 18.5 47.5 18.5q29 0 47.5 -18.5q18.5 -18.5 18.5 -50.5q0 -32 -18.5 -50.5q-18.5 -18.5 -47.5 -18.5q-29 0 -47.5 18.5t-18.5 50.5z" />
-<glyph unicode="&#1106;" horiz-adv-x="511" d="M85 600h70l21 100h123l-22 -100h155l-17 -80h-155l-30 -140h4q13 13 30 27q17 14 38.5 26q21.5 12 47.5 19.5q26 7.5 57 7.5q47 0 71.5 -24q24.5 -24 24.5 -82q0 -40 -12 -97l-54 -257q-23 -106 -67.5 -157q-44.5 -51 -119.5 -51q-14 0 -28.5 1.5q-14.5 1.5 -30.5 5.5l23 111q24 -2 41 2.5q17 4.5 28 16q11 11.5 18.5 29.5q7.5 18 12.5 42l51 241q8 37 8 61q0 26 -10 40.5q-10 14.5 -33 14.5q-17 0 -35.5 -8q-18.5 -8 -35 -21q-16.5 -13 -30.5 -29.5q-14 -16.5 -22 -34.5l-56 -264h-123l110 520l-70 0z" />
-<glyph unicode="&#1107;" horiz-adv-x="410" d="M351 40q-32 -24 -76.5 -39q-44.5 -15 -86.5 -15q-48 0 -81 11.5q-33 11.5 -54 31q-21 19.5 -30.5 44q-9.5 24.5 -9.5 50.5q0 47 19.5 77.5q19.5 30.5 48.5 50q29 19.5 62.5 31.5q33.5 12 62.5 23q29 11 48.5 24q19.5 13 19.5 35q0 23 -13 32.5q-13 9.5 -42 9.5q-45 0 -74 -8.5q-29 -8.5 -50 -18.5l-15 93q16 9 37.5 15.5q21.5 6.5 45.5 11.5q24 5 48.5 7.5q24.5 2.5 45.5 2.5q40 0 67.5 -9q27.5 -9 44.5 -24.5q17 -15.5 24.5 -36.5q7.5 -21 7.5 -45q0 -49 -19.5 -79.5q-19.5 -30.5 -48.5 -50.5q-29 -20 -62.5 -32q-33.5 -12 -62.5 -23.5q-29 -11.5 -48.5 -26.5q-19.5 -15 -19.5 -39q0 -26 19 -40q19 -14 48 -14q34 0 65.5 9q31.5 9 51.5 22zM303 720h125l-6 -30l-133 -124l-69 0z" />
-<glyph unicode="&#1108;" horiz-adv-x="430" d="M393 46q-35 -29 -83 -44.5q-48 -15.5 -96 -15.5q-41 0 -74 13q-33 13 -56.5 37.5q-23.5 24.5 -36.5 58.5q-13 34 -13 76q0 85 25.5 149.5q25.5 64.5 67 107.5q41.5 43 94 64.5q52.5 21.5 106.5 21.5q52 0 79.5 -9q27.5 -9 47.5 -20l-42 -91q-21 11 -41 14q-20 3 -44 3q-42 0 -82.5 -28.5q-40.5 -28.5 -63.5 -82.5l188 0l-19 -86h-189v-20q0 -48 22 -76.5q22 -28.5 76 -28.5q33 0 60.5 11q27.5 11 47.5 24z" />
-<glyph unicode="&#1109;" horiz-adv-x="396" d="M38 117q20 -11 51.5 -19.5q31.5 -8.5 66.5 -8.5q35 0 53.5 13.5q18.5 13.5 19.5 41.5q0 20 -12 34.5q-12 14.5 -30.5 27.5q-18.5 13 -39.5 26.5q-21 13.5 -39.5 31q-18.5 17.5 -30.5 41.5q-12 24 -12 58q0 33 13 61q13 28 36.5 48q23.5 20 57 31q33.5 11 75.5 11q58 0 96 -8.5q38 -8.5 60 -21.5l-34 -94q-20 9 -48.5 15q-28.5 6 -59.5 6q-32 0 -50.5 -11q-18.5 -11 -18.5 -35q0 -16 12 -28.5q12 -12.5 30.5 -25.5q18.5 -13 39.5 -26.5q21 -13.5 39.5 -32.5q18.5 -19 30.5 -43.5q12 -24.5 12 -58.5q0 -83 -54 -123.5q-54 -40.5 -144 -40.5q-51 0 -93.5 9.5q-42.5 9.5 -65.5 23.5z" />
-<glyph unicode="&#1110;" horiz-adv-x="256" d="M133 500h123l-106 -500h-123zM150 642q0 33 21.5 51q21.5 18 54.5 18q32 0 54.5 -18q22.5 -18 22.5 -51q0 -32 -22.5 -50.5q-22.5 -18.5 -54.5 -18.5q-33 0 -54.5 18.5t-21.5 50.5z" />
-<glyph unicode="&#1111;" horiz-adv-x="302" d="M144 500h123l-106 -500h-123zM102 641q0 32 16.5 49.5q16.5 17.5 44.5 17.5q28 0 44.5 -17.5q16.5 -17.5 16.5 -49.5q0 -32 -16.5 -49q-16.5 -17 -44.5 -17q-29 0 -45 17q-16 17 -16 49zt0 0zM246 641q0 32 16 49.5q16 17.5 45 17.5q28 0 44.5 -17.5q16.5 -17.5 16.5 -49.5q0 -32 -16.5 -49q-16.5 -17 -45.5 -17q-28 0 -44 17t-16 49z" />
-<glyph unicode="&#1112;" horiz-adv-x="244" d="M123 500h124l-111 -521q-19 -90 -64 -137.5q-45 -47.5 -122 -47.5q-31 0 -62 7l24 106q25 -2 43 4.5q18 6.5 30.5 20.5q12.5 14 21 35.5q8.5 21.5 14.5 48.5zM139 642q0 33 21.5 51q21.5 18 54.5 18q32 0 54.5 -18q22.5 -18 22.5 -51q0 -32 -22.5 -50.5q-22.5 -18.5 -54.5 -18.5q-33 0 -54.5 18.5t-21.5 50.5z" />
-<glyph unicode="&#1113;" horiz-adv-x="724" d="M427 149q-1 -5 -2 -9q-1 -4 -1 -8q0 -36 48 -36q21 0 40 7.5q19 7.5 33.5 20.5q14.5 13 23.5 30.5q9 17.5 9 38.5q0 26 -13.5 35.5q-13.5 9.5 -47.5 9.5q-20 0 -39 -4q-19 -4 -33 -11zM505 500l-41 -186q22 6 49.5 10.5q27.5 4.5 59.5 4.5q41 0 67 -9.5q26 -9.5 40.5 -25q14.5 -15.5 19.5 -35q5 -19.5 5 -39.5q0 -48 -19 -89.5q-19 -41.5 -54 -72q-35 -30.5 -83.5 -48q-48.5 -17.5 -108.5 -17.5q-41 0 -68.5 8.5q-27.5 8.5 -44 22q-16.5 13.5 -23.5 31q-7 17.5 -7 36.5q0 7 0 13.5q0 6.5 2 12.5l62 280h-90q-25 -93 -48.5 -167.5q-23.5 -74.5 -51.5 -127q-28 -52.5 -62.5 -80.5q-34.5 -28 -80.5 -28q-54 0 -75 15l38 107q27 -9 48 -1q21 8 42.5 48.5q21.5 40.5 45.5 120.5q24 80 57 216z" />
-<glyph unicode="&#1114;" horiz-adv-x="738" d="M477 313q23 6 51 11q28 5 60 5q41 0 66.5 -9.5q25.5 -9.5 40 -25q14.5 -15.5 19.5 -35q5 -19.5 5 -39.5q0 -48 -19 -89.5q-19 -41.5 -53.5 -72q-34.5 -30.5 -83 -48q-48.5 -17.5 -108.5 -17.5q-41 0 -68 8q-27 8 -44 21.5q-17 13.5 -24.5 30.5q-7.5 17 -7.5 36q0 16 3 31l18 85h-151l-43 -205h-123l106 500h123l-42 -192h152l41 192h123zM441 148q-1 -5 -2 -8.5q-1 -3.5 -1 -7.5q0 -36 49 -36q21 0 40 7.5q19 7.5 33.5 20q14.5 12.5 23 30q8.5 17.5 8.5 38.5q0 26 -13.5 36q-13.5 10 -47.5 10q-20 0 -38.5 -4q-18.5 -4 -32.5 -11z" />
-<glyph unicode="&#1115;" horiz-adv-x="505" d="M85 600h70l21 100h123l-22 -100h155l-17 -80h-155l-29 -135h4q34 31 75.5 53q41.5 22 95.5 22q41 0 66 -24q25 -24 25 -86q0 -20 -2.5 -42.5q-2.5 -22.5 -8.5 -50.5l-54 -257h-123l51 244q5 20 7.5 36q2.5 16 2.5 30q0 23 -9 35q-9 12 -32 12q-20 0 -38.5 -8.5q-18.5 -8.5 -34.5 -22q-16 -13.5 -29 -31q-13 -17.5 -22 -35.5l-54 -260h-123l110 520l-70 0z" />
-<glyph unicode="&#1116;" horiz-adv-x="472" d="M225 207h-44l-43 -207h-123l106 500h123l-46 -213l36 13l139 200h135l-146 -190l-58 -38l46 -39l79 -233h-131zM346 720h125l-6 -30l-133 -124l-69 0z" />
-<glyph unicode="&#1118;" horiz-adv-x="452" d="M216 219l1 -78h6l27 79l136 280h131l-240 -449q-30 -56 -56.5 -103q-26.5 -47 -53.5 -81q-27 -34 -56 -53q-29 -19 -62 -19q-44 0 -66 15l33 98q6 -3 12.5 -4q6.5 -1 12.5 -1q24 0 49 23q25 23 50 74l-94 500h141zM276 704q-2 -39 10 -55q12 -16 37 -16q26 0 45.5 16q19.5 16 33.5 54l87 -25q-24 -65 -75 -96.5q-51 -31.5 -112 -31.5q-29 0 -55 7q-26 7 -44.5 22.5q-18.5 15.5 -28.5 39.5q-10 24 -8 59z" />
-<glyph unicode="&#1119;" horiz-adv-x="512" d="M241 500l-65 -309q-6 -30 -6 -50q0 -20 8 -31q8 -11 28 -11q17 0 34.5 8.5q17.5 8.5 33.5 22q16 13.5 29.5 30q13.5 16.5 22.5 32.5l64 308h123l-63 -300q-5 -20 -8.5 -47q-3.5 -27 -6.5 -55.5q-3 -28.5 -4 -54.5q-1 -26 0 -43l-99 0l-5 90h-4q-14 -19 -32.5 -37.5q-18.5 -18.5 -41 -33.5q-22.5 -15 -49 -24q-26.5 -9 -56.5 -9q-47 0 -76 23.5q-29 23.5 -29 86.5q0 37 10 81l69 323zM280 -35l-22 -165h-114l45 165z" />
-<glyph unicode="&#1122;" horiz-adv-x="626" d="M101 646h135l17 79h130l-17 -79h191l-25 -111h-190l-20 -92q11 2 38 5q27 3 49 3q46 0 84 -12q38 -12 65.5 -35q27.5 -23 43 -57.5q15.5 -34.5 15.5 -80.5q0 -72 -24.5 -124q-24.5 -52 -68.5 -85.5q-44 -33.5 -104.5 -50q-60.5 -16.5 -133.5 -16.5q-14 0 -36.5 0.5q-22.5 0.5 -48.5 2.5q-26 2 -53 5q-27 3 -48 9l112 528h-135zM253 118q10 -3 27.5 -4.5q17.5 -1.5 36.5 -1.5q30 0 59.5 7q29.5 7 52.5 22.5q23 15.5 37 41q14 25.5 14 62.5q0 52 -32.5 71q-32.5 19 -84.5 19q-6 0 -16 -1q-10 -1 -19.5 -2q-9.5 -1 -18 -2.5q-8.5 -1.5 -12.5 -2.5z" />
-<glyph unicode="&#1123;" horiz-adv-x="706" d="M408 148q-11 -52 45 -52q21 0 40 7.5q19 7.5 34 20q15 12.5 23.5 30q8.5 17.5 8.5 38.5q0 26 -13.5 36q-13.5 10 -47.5 10q-20 0 -38.5 -4q-18.5 -4 -32.5 -11zM323 310q9 39 9 61q0 35 -27 35q-14 0 -28 -9.5q-14 -9.5 -27 -24.5q-13 -15 -24.5 -33.5q-11.5 -18.5 -20.5 -36.5l-64 -302h-123l106 500h93l-5 -84h4q11 18 25 35.5q14 17.5 32.5 31.5q18.5 14 43.5 22.5q25 8.5 57 8.5q41 0 64.5 -22.5q23.5 -22.5 23.5 -74.5q0 -17 -3 -36q-3 -19 -8 -42l-6 -25q23 6 50 10.5q27 4.5 59 4.5q41 0 67 -9.5q26 -9.5 40.5 -25q14.5 -15.5 19.5 -35q5 -19.5 5 -39.5q0 -48 -19 -89.5q-19 -41.5 -53.5 -72q-34.5 -30.5 -83 -48q-48.5 -17.5 -108.5 -17.5q-49 0 -79 11q-30 11 -45.5 29q-15.5 18 -19 40q-3.5 22 1.5 44z" />
-<glyph unicode="&#1138;" horiz-adv-x="644" d="M58 262q0 93 24.5 175.5q24.5 82.5 71 144q46.5 61.5 112 97q65.5 35.5 148.5 35.5q53 0 97.5 -16q44.5 -16 76 -49.5q31.5 -33.5 49 -84.5q17.5 -51 17.5 -121q0 -94 -25 -177q-25 -83 -70.5 -145.5q-45.5 -62.5 -109 -98.5q-63.5 -36 -141.5 -36q-118 0 -183.5 69.5q-65.5 69.5 -66.5 206.5zt0 0zM196 296q-1 -8 -1 -15q0 -7 0 -15q0 -72 29.5 -115q29.5 -43 92.5 -43q32 0 60 14q28 14 51 39.5q23 25.5 40.5 59.5q17.5 34 28.5 75zM516 407q0 8 0.5 16.5q0.5 8.5 0.5 17.5q0 79 -33 115q-33 36 -87 36q-32 0 -60.5 -13.5q-28.5 -13.5 -51.5 -38.5q-23 -25 -41 -59q-18 -34 -30 -74z" />
-<glyph unicode="&#1139;" horiz-adv-x="496" d="M34 162q0 79 22.5 144q22.5 65 60.5 111q38 46 87.5 71.5q49.5 25.5 103.5 25.5q48 0 81 -15q33 -15 53 -40q20 -25 29 -57q9 -32 9 -66q0 -78 -22 -142.5q-22 -64.5 -59.5 -110.5q-37.5 -46 -86.5 -71.5q-49 -25.5 -103 -25.5q-47 0 -80 15.5q-33 15.5 -54 40.5q-21 25 -31 56.5q-10 31.5 -10 63.5zt0 0zM350 289q3 19 3 39q0 40 -13.5 61.5q-13.5 21.5 -50.5 21.5q-16 0 -32 -9.5q-16 -9.5 -30 -26q-14 -16.5 -26.5 -38.5q-12.5 -22 -21.5 -48zM162 208q-1 -8 -1 -15q0 -7 0 -14q0 -90 65 -90q32 0 60 34q28 34 46 85z" />
-<glyph unicode="&#1140;" horiz-adv-x="604" d="M296 -5h-94l-101 705h142l45 -411l-8 -118h4l43 119l113 229q28 58 53 95q25 37 50.5 58q25.5 21 53.5 29q28 8 62 8q35 0 59.5 -6.5q24.5 -6.5 42.5 -16.5l-53 -114q-14 8 -26.5 11.5q-12.5 3.5 -26.5 3.5q-23 0 -42.5 -18.5q-19.5 -18.5 -40.5 -58.5z" />
-<glyph unicode="&#1141;" horiz-adv-x="463" d="M214 -5h-76l-98 505h135l33 -262v-77h4l30 79l38 71q28 54 52 92q24 38 48 61.5q24 23.5 49.5 34q25.5 10.5 56.5 10.5q23 0 42.5 -4.5q19.5 -4.5 32.5 -12.5l-39 -104q-8 3 -15 5.5q-7 2.5 -15 2.5q-17 0 -35 -14.5q-18 -14.5 -42 -52.5z" />
-<glyph unicode="&#1162;" horiz-adv-x="683" d="M487 381l29 89h-6l-64 -96l-326 -374h-100l148 700h130l-79 -374l-30 -92h6l66 99l324 367h100l-124 -582h111l-6 -31l-136 -217h-90l71 130h-104zM385 874q-2 -28 13.5 -44q15.5 -16 43.5 -16q65 0 85 59l114 -17q-21 -61 -74.5 -91q-53.5 -30 -134.5 -30q-39 0 -68 9.5q-29 9.5 -48 25.5q-19 16 -28.5 37.5q-9.5 21.5 -10.5 46.5z" />
-<glyph unicode="&#1163;" horiz-adv-x="561" d="M241 500l-65 -309q-6 -30 -6 -50q0 -20 8 -31q8 -11 28 -11q17 0 34.5 8.5q17.5 8.5 33.5 22q16 13.5 29.5 30q13.5 16.5 22.5 32.5l64 308h123l-63 -300q-4 -17 -7.5 -37.5q-3.5 -20.5 -6.5 -44.5l116 0l-6 -31l-136 -217h-90l71 130h-59l-5 90h-4q-14 -19 -32.5 -37.5q-18.5 -18.5 -41 -33.5q-22.5 -15 -49 -24q-26.5 -9 -56.5 -9q-47 0 -76 23.5q-29 23.5 -29 86.5q0 37 10 81l69 323zM293 704q-2 -39 10 -55q12 -16 37 -16q26 0 45.5 16q19.5 16 33.5 54l88 -25q-25 -65 -76 -96.5q-51 -31.5 -112 -31.5q-29 0 -55 7q-26 7 -44.5 22.5q-18.5 15.5 -28.5 39.5q-10 24 -8 59z" />
-<glyph unicode="&#1164;" horiz-adv-x="626" d="M101 646h135l17 79h130l-17 -79h191l-25 -111h-190l-20 -92q11 2 38 5q27 3 49 3q46 0 84 -12q38 -12 65.5 -35q27.5 -23 43 -57.5q15.5 -34.5 15.5 -80.5q0 -72 -24.5 -124q-24.5 -52 -68.5 -85.5q-44 -33.5 -104.5 -50q-60.5 -16.5 -133.5 -16.5q-14 0 -36.5 0.5q-22.5 0.5 -48.5 2.5q-26 2 -53 5q-27 3 -48 9l112 528h-135zM253 118q10 -3 27.5 -4.5q17.5 -1.5 36.5 -1.5q30 0 59.5 7q29.5 7 52.5 22.5q23 15.5 37 41q14 25.5 14 62.5q0 52 -32.5 71q-32.5 19 -84.5 19q-6 0 -16 -1q-10 -1 -19.5 -2q-9.5 -1 -18 -2.5q-8.5 -1.5 -12.5 -2.5z" />
-<glyph unicode="&#1165;" horiz-adv-x="464" d="M247 500h175l-20 -91h-176l-22 -95q22 6 49.5 10.5q27.5 4.5 59.5 4.5q41 0 67 -9.5q26 -9.5 40.5 -25q14.5 -15.5 19.5 -35q5 -19.5 5 -39.5q0 -48 -19 -89.5q-19 -41.5 -54 -72q-35 -30.5 -83.5 -48q-48.5 -17.5 -108.5 -17.5q-48 0 -78 11q-30 11 -45.5 29q-15.5 18 -19 40q-3.5 22 1.5 44l65 292h-82l20 91h83l45 200h123zM167 148q-5 -25 5.5 -39q10.5 -14 39.5 -14q21 0 40 7.5q19 7.5 33.5 20.5q14.5 13 23.5 30.5q9 17.5 9 38.5q0 26 -13.5 36q-13.5 10 -47.5 10q-20 0 -38.5 -4q-18.5 -4 -32.5 -11z" />
-<glyph unicode="&#1166;" horiz-adv-x="550" d="M167 693q42 8 89.5 12.5q47.5 4.5 95.5 4.5q51 0 94.5 -11.5q43.5 -11.5 76 -35.5q32.5 -24 50.5 -61.5q18 -37.5 18 -89.5q0 -92 -37 -149q-37 -57 -95 -87l41 -85l-89 -43l-47 97q-22 -5 -44 -6.5q-22 -1.5 -45 -1.5q-5 0 -15.5 0q-10.5 0 -22 0.5q-11.5 0.5 -22 1.5q-10.5 1 -15.5 2l-50 -241h-130zM226 359q4 -1 11 -2q7 -1 15.5 -1.5q8.5 -0.5 16 -0.5q7.5 0 11.5 0q14 0 27.5 1q13.5 1 27.5 4l-40 87l56 27l42 -93q28 17 44.5 44.5q16.5 27.5 16.5 70.5q0 29 -9.5 48q-9.5 19 -25.5 29.5q-16 10.5 -37.5 14.5q-21.5 4 -45.5 4q-18 0 -34.5 -1.5q-16.5 -1.5 -27.5 -3.5z" />
-<glyph unicode="&#1167;" horiz-adv-x="506" d="M122 500h91l-5 -88h4q14 19 32 37.5q18 18.5 40 32.5q22 14 47 23q25 9 54 9q51 0 82 -35q31 -35 31 -110q0 -109 -35.5 -192.5q-35.5 -83.5 -92.5 -132.5l35 -62l-82 -60l-41 73q-30 -9 -60 -9q-26 0 -49 5q-23 5 -34 13l-43 -204h-122zM268 183l29 -53q33 35 53.5 92q20.5 57 20.5 123q0 29 -13.5 47.5q-13.5 18.5 -36.5 18.5q-18 0 -35 -9q-17 -9 -32 -22.5q-15 -13.5 -27 -30.5q-12 -17 -21 -33l-46 -210q25 -17 56 -17q16 0 33 6l-30 54z" />
-<glyph unicode="&#1168;" horiz-adv-x="436" d="M451 700l52 152h83l-58 -274h-256l-122 -578h-130l148 700z" />
-<glyph unicode="&#1169;" horiz-adv-x="378" d="M405 392h-179l-83 -392h-128l106 500h204l52 152l83 0z" />
-<glyph unicode="&#1170;" horiz-adv-x="489" d="M561 578h-256l-41 -191h214l-19 -93h-214l-62 -294h-130l62 294h-91l20 93h90l67 313l386 0z" />
-<glyph unicode="&#1171;" horiz-adv-x="416" d="M426 397h-179l-27 -123h164l-17 -80h-165l-42 -194h-123l41 194h-71l17 80h71l48 226l302 0z" />
-<glyph unicode="&#1172;" horiz-adv-x="560" d="M150 0h-130l148 700h386l-26 -122h-256l-43 -203q18 7 49.5 14.5q31.5 7.5 76.5 7.5q82 0 129.5 -47.5q47.5 -47.5 47.5 -139.5q0 -60 -15.5 -120.5q-15.5 -60.5 -50.5 -108.5q-35 -48 -91.5 -78q-56.5 -30 -138.5 -30q-52 0 -65 4l25 117q13 -3 54 -3q36 0 63.5 15.5q27.5 15.5 45.5 41.5q18 26 27 60.5q9 34.5 9 72.5q0 51 -26 72.5q-26 21.5 -75 21.5q-23 0 -49.5 -5.5q-26.5 -5.5 -40.5 -12.5z" />
-<glyph unicode="&#1173;" horiz-adv-x="476" d="M141 0h-123l106 500h302l-21 -103h-180l-30 -142q17 6 49 15.5q32 9.5 83 9.5q62 0 97 -34.5q35 -34.5 35 -97.5q0 -94 -21.5 -161q-21.5 -67 -59.5 -110q-38 -43 -90.5 -63.5q-52.5 -20.5 -114.5 -20.5q-25 0 -38 1.5q-13 1.5 -20 4.5l24 101q7 -2 19.5 -3q12.5 -1 33.5 -1q24 0 48.5 12.5q24.5 12.5 45 38q20.5 25.5 33.5 64.5q13 39 13 93q0 38 -20.5 55.5q-20.5 17.5 -50.5 17.5q-29 0 -52 -6q-23 -6 -35 -13z" />
-<glyph unicode="&#1174;" horiz-adv-x="821" d="M440 700h124l-66 -311l34 11l195 300h154l-219 -307l-53 -34l42 -42l69 -195h79l-53 -247h-91l12 125h-48l-98 304h-41l-64 -304h-124l67 316l-33 -12l-213 -304h-159l236 307l61 39l-38 37l-98 317h140l82 -299l40 0z" />
-<glyph unicode="&#1175;" horiz-adv-x="770" d="M249 206q-15 -57 -36.5 -97.5q-21.5 -40.5 -47 -65.5q-25.5 -25 -54 -36.5q-28.5 -11.5 -58.5 -11.5q-20 0 -39 5q-19 5 -39 13l33 100q18 -5 32 -5q37 0 65 34q28 34 44 115q4 20 5 36q1 16 1 30q0 51 -20.5 67.5q-20.5 16.5 -55.5 10.5l-12 89q45 12 80 12q60 0 91 -35q31 -35 31 -110q0 -14 -1 -28.5q-1 -14.5 -3 -31.5l76 0l43 203h118l-44 -203h70q14 58 34.5 97.5q20.5 39.5 45.5 64q25 24.5 53 35q28 10.5 56 10.5q31 0 65 -13l-26 -90q-11 3 -21 3q-31 0 -58 -29.5q-27 -29.5 -44 -106.5q-9 -39 -9 -72q0 -26 5 -46q5 -20 15.5 -33q10.5 -13 25.5 -17q15 -4 35 3l39 -29l-54 -188h-94l29 111q-31 2 -53 16q-22 14 -35.5 37q-13.5 23 -20 53.5q-6.5 30.5 -6.5 64.5q0 10 0.5 19q0.5 9 1.5 19l-73 0l-43 -206h-118l44 206z" />
-<glyph unicode="&#1176;" horiz-adv-x="507" d="M164 417h23q9 0 21 0.5q12 0.5 24.5 1.5q12.5 1 24.5 2q12 1 20 2q20 3 40 9.5q20 6.5 35.5 18.5q15.5 12 25.5 29q10 17 10 41q0 32 -24.5 50.5q-24.5 18.5 -72.5 18.5q-42 0 -80.5 -12q-38.5 -12 -63.5 -23l-9 116q12 6 32.5 13q20.5 7 46 13q25.5 6 55.5 10.5q30 4.5 60 4.5q42 0 77 -9.5q35 -9.5 61 -28.5q26 -19 40.5 -47.5q14.5 -28.5 14.5 -65.5q0 -69 -37.5 -121q-37.5 -52 -111.5 -69l0 -5q19 -6 37 -16.5q18 -10.5 31.5 -27.5q13.5 -17 22 -41q8.5 -24 8.5 -57q0 -55 -19.5 -96.5q-19.5 -41.5 -54 -71q-34.5 -29.5 -81.5 -46q-47 -16.5 -101 -21.5l-25 -164h-116l43 163q-47 4 -83 13.5q-36 9.5 -55 21.5l58 119q20 -11 58 -22.5q38 -11.5 94 -11.5q24 0 50 6q26 6 47 19.5q21 13.5 34.5 35.5q13.5 22 13.5 54q0 49 -34.5 67.5q-34.5 18.5 -98.5 18.5l-64 0z" />
-<glyph unicode="&#1177;" horiz-adv-x="407" d="M100 206l19 91h58q16 0 33 5q17 5 30 13.5q13 8.5 21.5 20.5q8.5 12 8.5 26q0 24 -17 34q-17 10 -55 10q-33 0 -56 -6q-23 -6 -48 -17l-21 92q16 9 37 15q21 6 44.5 10.5q23.5 4.5 48 6.5q24.5 2 47.5 2q80 0 113.5 -28.5q33.5 -28.5 33.5 -78.5q0 -24 -8 -45.5q-8 -21.5 -22 -38.5q-14 -17 -32.5 -30q-18.5 -13 -39.5 -20l0 -4q42 -10 57 -35.5q15 -25.5 15 -56.5q0 -74 -49.5 -120q-49.5 -46 -128.5 -58l-26 -169h-116l43 166q-35 5 -64 15q-29 10 -46 23l46 95q20 -13 49.5 -22.5q29.5 -9.5 66.5 -9.5q47 0 73 20q26 20 26 52q0 23 -19 32.5q-19 9.5 -76 9.5z" />
-<glyph unicode="&#1178;" horiz-adv-x="607" d="M260 299h-47l-63 -299h-130l148 700h130l-66 -310l31 11l237 299h156l-252 -297l-60 -35l44 -39l95 -207h106l-52 -247h-92l12 125l-62 0z" />
-<glyph unicode="&#1179;" horiz-adv-x="478" d="M225 207h-44l-43 -207h-123l106 500h123l-46 -213l36 13l139 200h135l-146 -190l-58 -38l46 -39l44 -130h88l-64 -217h-94l30 114l-56 0z" />
-<glyph unicode="&#1180;" horiz-adv-x="691" d="M259 299h-46l-63 -299h-130l148 700h130l-66 -310l47 4l28 133h88l-26 -125l16 2l215 296h152l-226 -295l-59 -37l45 -39l119 -329h-139l-105 299h-40l-27 -127l-88 0z" />
-<glyph unicode="&#1181;" horiz-adv-x="540" d="M223 207h-42l-43 -207h-123l106 500h123l-46 -213l43 4l25 120h72l-24 -112l19 2l128 199h131l-123 -190l-67 -38l45 -39l56 -233h-130l-48 207h-30l-25 -118l-72 0z" />
-<glyph unicode="&#1182;" horiz-adv-x="667" d="M99 643h125l12 57h129l-12 -57h89l-19 -93h-90l-33 -160l51 14l227 296h149l-241 -296l-72 -36l51 -39l140 -329h-142l-127 299h-56l-63 -299h-129l114 539l-124 0z" />
-<glyph unicode="&#1183;" horiz-adv-x="465" d="M74 626h76l16 74h123l-16 -74h148l-17 -80h-148l-55 -259l37 13l141 200h137l-149 -201l-60 -38l45 -38l76 -223h-132l-72 207h-40l-43 -207h-123l115 546l-76 0z" />
-<glyph unicode="&#1184;" horiz-adv-x="690" d="M237 578h-152l26 122h281l-66 -310l30 11l238 299h156l-252 -296l-60 -36l44 -39l152 -329h-145l-135 299h-47l-63 -299l-130 0z" />
-<glyph unicode="&#1185;" horiz-adv-x="501" d="M228 287l29 14l154 199h141l-154 -190l-64 -38l46 -39l78 -233h-129l-72 207h-46l-44 -207h-123l85 397h-105l22 103l227 0z" />
-<glyph unicode="&#1186;" horiz-adv-x="666" d="M455 293h-243l-62 -293h-130l148 700h130l-60 -285h243l60 285h130l-122 -578h83l-53 -247h-91l12 125l-107 0z" />
-<glyph unicode="&#1187;" horiz-adv-x="529" d="M338 195h-156l-41 -195h-123l106 500h123l-41 -187h156l40 187h124l-85 -397h76l-64 -217h-94l30 114l-93 0z" />
-<glyph unicode="&#1188;" horiz-adv-x="809" d="M901 578h-256l-122 -578h-130l62 293h-243l-62 -293h-130l148 700h130l-60 -285h243l60 285l386 0z" />
-<glyph unicode="&#1189;" horiz-adv-x="654" d="M338 195h-156l-41 -195h-123l106 500h123l-41 -187h156l40 187h303l-22 -103h-179l-84 -397l-124 0z" />
-<glyph unicode="&#1190;" horiz-adv-x="916" d="M512 0h-130l122 578h-232l-122 -578h-130l148 700h492l-69 -325q17 6 49 14q32 8 78 8q34 0 66 -10q32 -10 56.5 -32.5q24.5 -22.5 39 -57.5q14.5 -35 14.5 -86q0 -66 -16.5 -127q-16.5 -61 -52.5 -108q-36 -47 -92.5 -75q-56.5 -28 -137.5 -28q-27 0 -41 1q-14 1 -21 3l25 117q6 -2 21 -2.5q15 -0.5 35 -0.5q36 0 63 15.5q27 15.5 44.5 41.5q17.5 26 26.5 60q9 34 9 72q0 28 -7.5 46.5q-7.5 18.5 -21 29.5q-13.5 11 -32.5 15q-19 4 -42 4q-23 1 -49 -5.5q-26 -6.5 -39 -12.5z" />
-<glyph unicode="&#1191;" horiz-adv-x="752" d="M422 0h-123l66 310q6 28 6 49q0 22 -9 34.5q-9 12.5 -33 12.5q-18 0 -36 -9q-18 -9 -34 -24q-16 -15 -30 -33.5q-14 -18.5 -24 -37.5l-64 -302h-123l106 500h93l-5 -88h4q13 16 30.5 34q17.5 18 40.5 33q23 15 51.5 25q28.5 10 64.5 10q45 0 72 -24.5q27 -24.5 27 -81.5q0 -15 -1.5 -32q-1.5 -17 -6.5 -37l-16 -80q17 6 44 13.5q27 7.5 63 7.5q72 0 111.5 -35.5q39.5 -35.5 39.5 -107.5q0 -84 -20.5 -148q-20.5 -64 -56.5 -107.5q-36 -43.5 -85.5 -65.5q-49.5 -22 -107.5 -22q-22 0 -39.5 3.5q-17.5 3.5 -24.5 6.5l24 100q18 -7 53 -7q24 0 47.5 14q23.5 14 41.5 40q18 26 29.5 63q11.5 37 11.5 84q0 42 -15.5 60.5q-15.5 18.5 -60.5 18.5q-21 0 -42.5 -6.5q-21.5 -6.5 -34.5 -12.5z" />
-<glyph unicode="&#1192;" horiz-adv-x="839" d="M413 592q-42 0 -81.5 -21.5q-39.5 -21.5 -69.5 -60.5q-30 -39 -48.5 -94.5q-18.5 -55.5 -18.5 -123.5q0 -51 11.5 -86.5q11.5 -35.5 31.5 -57q20 -21.5 47 -31q27 -9.5 59 -9.5q11 0 25 2.5q14 2.5 24 7.5q-9 8 -20.5 25q-11.5 17 -21.5 41.5q-10 24.5 -17 57.5q-7 33 -7 72q0 93 26 161.5q26 68.5 68.5 114q42.5 45.5 97.5 68q55 22.5 113 22.5q33 0 67.5 -9.5q34.5 -9.5 63.5 -33q29 -23.5 47.5 -64q18.5 -40.5 18.5 -102.5q0 -57 -14 -112q-14 -55 -40 -102.5q-26 -47.5 -64 -85.5q-38 -38 -87 -62q5 -2 10.5 -1.5q5.5 0.5 11.5 0.5q29 0 57 8q28 8 48 22l17 -107q-25 -20 -59.5 -32.5q-34.5 -12.5 -85.5 -12.5q-38 0 -75 11q-37 11 -61 37q-37 -24 -75.5 -36q-38.5 -12 -90.5 -12q-80 0 -131 28.5q-51 28.5 -80 71.5q-29 43 -40.5 94q-11.5 51 -11.5 96q0 110 31.5 192.5q31.5 82.5 84.5 137q53 54.5 122 81.5q69 27 143 27zM464 325q0 -17 2 -39.5q2 -22.5 8.5 -46.5q6.5 -24 19.5 -46.5q13 -22.5 34 -39.5q34 19 64 49.5q30 30.5 52.5 68.5q22.5 38 35 82q12.5 44 12.5 92q0 55 -19 84q-19 29 -63 29q-24 0 -50 -15q-26 -15 -47.5 -44q-21.5 -29 -35 -73t-13.5 -101z" />
-<glyph unicode="&#1193;" horiz-adv-x="668" d="M299 404q-27 -2 -52 -18q-25 -16 -44 -43q-19 -27 -30.5 -63q-11.5 -36 -11.5 -78q0 -30 7.5 -51q7.5 -21 19.5 -34.5q12 -13.5 28 -20q16 -6.5 34 -6.5q15 0 31.5 4q16.5 4 24.5 9q-17 17 -31.5 51.5q-14.5 34.5 -14.5 82.5q0 43 17 89q17 46 48.5 83q31.5 37 75.5 61q44 24 98 24q77 0 115 -38.5q38 -38.5 38 -113.5q0 -42 -13.5 -80.5q-13.5 -38.5 -35 -71q-21.5 -32.5 -49.5 -57.5q-28 -25 -56 -41q10 -10 25 -13q15 -3 31.5 -1.5q16.5 1.5 31.5 5.5q15 4 25 9l-8 -80q-13 -11 -41 -18.5q-28 -7.5 -55 -7.5q-42 0 -72 11.5q-30 11.5 -55 38.5q-7 -7 -21.5 -15.5q-14.5 -8.5 -34.5 -16q-20 -7.5 -45.5 -13q-25.5 -5.5 -55.5 -5.5q-89 0 -139 53.5q-50 53.5 -50 150.5q0 62 20 119.5q20 57.5 57.5 101.5q37.5 44 91 72q53.5 28 119.5 31zM378 234q0 -29 9 -58q9 -29 29 -46q18 10 37.5 30.5q19.5 20.5 35 46.5q15.5 26 26 56q10.5 30 10.5 61q0 38 -10.5 52q-10.5 14 -34.5 14q-21 0 -39.5 -12q-18.5 -12 -32.5 -33q-14 -21 -22 -49.5t-8 -61.5z" />
-<glyph unicode="&#1194;" horiz-adv-x="537" d="M483 29q-55 -36 -134 -42l-25 -162h-116l44 168q-49 10 -85.5 35.5q-36.5 25.5 -60.5 62.5q-24 37 -36 83q-12 46 -12 98q0 118 33 201.5q33 83.5 87 137q54 53.5 123.5 78.5q69.5 25 142.5 25q57 0 97.5 -8.5q40.5 -8.5 63.5 -19.5l-51 -116q-20 11 -48 16.5q-28 5.5 -71 5.5q-51 0 -95 -21q-44 -21 -76 -60q-32 -39 -50.5 -95q-18.5 -56 -18.5 -127q0 -85 42.5 -132.5q42.5 -47.5 113.5 -47.5q45 0 74.5 9.5q29.5 9.5 55.5 23.5z" />
-<glyph unicode="&#1195;" horiz-adv-x="412" d="M370 41q-26 -19 -57.5 -32.5q-31.5 -13.5 -64.5 -19.5l-25 -164h-116l44 168q-31 8 -53 24q-22 16 -36.5 38q-14.5 22 -21 48.5q-6.5 26.5 -6.5 54.5q0 84 24 150q24 66 63.5 111.5q39.5 45.5 90 70q50.5 24.5 103.5 24.5q47 0 74.5 -9q27.5 -9 49.5 -20l-46 -98q-19 11 -39.5 15q-20.5 4 -44.5 4q-27 0 -52.5 -17.5q-25.5 -17.5 -46 -46q-20.5 -28.5 -32.5 -66.5q-12 -38 -12 -78q0 -51 22 -77.5q22 -26.5 58 -26.5q30 0 55.5 9.5q25.5 9.5 45.5 21.5z" />
-<glyph unicode="&#1196;" horiz-adv-x="547" d="M614 578h-194l-97 -456h84l-53 -247h-91l12 125h-107l122 578h-194l26 122l517 0z" />
-<glyph unicode="&#1197;" horiz-adv-x="796" d="M548 0l59 281q5 23 8 43q3 20 3 35q0 23 -8.5 35q-8.5 12 -28.5 12q-16 0 -32.5 -9.5q-16.5 -9.5 -31.5 -24q-15 -14.5 -27.5 -31.5q-12.5 -17 -19.5 -32l-64 -309h-123l57 272q6 28 9.5 49.5q3.5 21.5 3.5 38.5q0 46 -35 46q-17 0 -34 -9q-17 -9 -31.5 -23q-14.5 -14 -27 -30.5q-12.5 -16.5 -20.5 -31.5l-64 -312h-123l106 500h96l-6 -88h4q15 16 32.5 34q17.5 18 39.5 33q22 15 49 25q27 10 59 10q40 0 60.5 -29q20.5 -29 18.5 -77q15 19 34.5 38q19.5 19 42 34q22.5 15 48 24.5q25.5 9.5 52.5 9.5q46 0 70.5 -21.5q24.5 -21.5 24.5 -80.5q0 -43 -15 -112l-42 -197h92l-64 -217h-94l30 114z" />
-<glyph unicode="&#1198;" horiz-adv-x="569" d="M231 260l-125 440h144l65 -263l-2 -74h4l31 76l175 261h149l-311 -439l-55 -261l-129 0z" />
-<glyph unicode="&#1199;" horiz-adv-x="448" d="M40 500h138l26 -297l-4 -93h5l34 95l142 295h139l-279 -501l-43 -199h-123l42 199z" />
-<glyph unicode="&#1200;" horiz-adv-x="569" d="M92 294h129l-115 406h144l65 -263l-2 -74h4l31 76l175 261h149l-288 -406h133l-20 -91h-148l-43 -203h-129l42 203l-147 0z" />
-<glyph unicode="&#1201;" horiz-adv-x="463" d="M20 0h112l-77 500h138l26 -297l-4 -93h5l34 95l142 295h139l-279 -500h111l-17 -80h-111l-26 -120h-123l25 120l-112 0z" />
-<glyph unicode="&#1202;" horiz-adv-x="638" d="M256 357l-113 343h141l60 -202l10 -71l37 71l149 202h156l-263 -338l83 -240h97l-53 -247h-91l12 125h-62l-72 216l-12 74l-40 -74l-161 -216l-158 0z" />
-<glyph unicode="&#1203;" horiz-adv-x="496" d="M261 120l-15 74l-45 -74l-99 -120h-143l207 256l-90 244h139l38 -107l13 -70l44 70l87 107h143l-195 -240l61 -157h77l-64 -217h-94l30 114l-46 0z" />
-<glyph unicode="&#1204;" horiz-adv-x="803" d="M713 -125h-91l12 125h-467l122 578h-193l26 122h458l-26 -122h-135l-97 -456h230l123 578h129l-122 -578l84 0z" />
-<glyph unicode="&#1205;" horiz-adv-x="536" d="M396 0q-43 0 -61.5 23.5q-18.5 23.5 -10.5 66.5l-4 0q-11 -17 -28.5 -35.5q-17.5 -18.5 -40 -33.5q-22.5 -15 -50 -25q-27.5 -10 -57.5 -10q-47 0 -76 23.5q-29 23.5 -29 86.5q0 37 10 81l69 323h123l-65 -308q-6 -30 -6 -51q0 -20 8 -31q8 -11 28 -11q17 0 34.5 8.5q17.5 8.5 33.5 22q16 13.5 29.5 30q13.5 16.5 22.5 32.5l64 308h123l-68 -321q-6 -29 -6 -46q0 -17 7 -24q7 -7 25 -7h50l-61 -216h-95zM188 658h308l-19 -92l-308 0z" />
-<glyph unicode="&#1206;" horiz-adv-x="624" d="M284 700l-46 -217q-3 -13 -3.5 -24q-0.5 -11 -0.5 -22q0 -39 18.5 -58q18.5 -19 60.5 -19q36 0 67.5 8q31.5 8 53.5 25l65 307h130l-122 -578h83l-53 -247h-91l12 125h-107l60 282q-14 -7 -29 -14q-15 -7 -33 -13q-18 -6 -40.5 -9.5q-22.5 -3.5 -50.5 -3.5q-35 0 -64.5 9q-29.5 9 -51 28q-21.5 19 -33.5 48q-12 29 -12 68q0 31 7 63l51 242z" />
-<glyph unicode="&#1207;" horiz-adv-x="496" d="M219 500l-24 -114q-5 -21 -7.5 -38q-2.5 -17 -2.5 -31q0 -28 11.5 -42q11.5 -14 38.5 -14q29 0 50.5 9q21.5 9 35.5 20l46 210h123l-85 -397h82l-64 -217h-94l30 114h-98l41 196q-17 -11 -48.5 -24.5q-31.5 -13.5 -79.5 -13.5q-26 0 -48 5.5q-22 5.5 -38.5 18.5q-16.5 13 -25.5 34q-9 21 -9 53q0 29 7 61l36 170z" />
-<glyph unicode="&#1208;" horiz-adv-x="619" d="M284 700l-46 -217q-6 -27 -6 -48q0 -32 14.5 -51q14.5 -19 49.5 -24l25 117h89l-24 -112q25 5 47.5 12q22.5 7 36.5 16l66 307h129l-148 -700h-129l59 282q-14 -8 -35.5 -16.5q-21.5 -8.5 -50.5 -14.5l-27 -129h-88l25 120q-80 1 -126.5 38.5q-46.5 37.5 -46.5 115.5q0 31 7 65l50 239z" />
-<glyph unicode="&#1209;" horiz-adv-x="517" d="M204 159q-6 -1 -12.5 -1q-6.5 0 -13.5 0q-57 0 -91 25.5q-34 25.5 -34 86.5q0 29 7 60l36 170h123l-25 -118q-4 -19 -6 -34q-2 -15 -2 -28q0 -26 9 -40.5q9 -14.5 31 -18.5l27 125h72l-26 -119q18 5 32 11.5q14 6.5 23 12.5l44 209h124l-106 -500h-124l42 196q-17 -11 -55 -23l-24 -114l-72 0z" />
-<glyph unicode="&#1210;" horiz-adv-x="583" d="M365 0l47 219q2 12 3.5 22.5q1.5 10.5 1.5 20.5q0 78 -81 78q-37 0 -67 -9.5q-30 -9.5 -54 -24.5l-65 -306h-130l148 700h130l-60 -282q28 15 63.5 27.5q35.5 12.5 89.5 12.5q32 0 61 -8.5q29 -8.5 51.5 -27q22.5 -18.5 35.5 -47.5q13 -29 13 -71q0 -31 -7 -63l-51 -241z" />
-<glyph unicode="&#1211;" horiz-adv-x="528" d="M309 0l60 284q10 44 10 73q0 26 -10 37.5q-10 11.5 -31 11.5q-19 0 -40 -12q-21 -12 -40 -30q-19 -18 -34.5 -38.5q-15.5 -20.5 -23.5 -37.5l-59 -288h-123l148 700h123l-63 -288h4q13 16 31.5 34q18.5 18 41 33q22.5 15 49 25q26.5 10 57.5 10q48 0 74.5 -24q26.5 -24 26.5 -85q0 -37 -12 -94l-66 -311z" />
-<glyph unicode="&#1212;" horiz-adv-x="761" d="M356 295q-1 -8 -1.5 -17q-0.5 -9 -0.5 -17q0 -31 7 -58.5q7 -27.5 23.5 -48.5q16.5 -21 43 -33.5q26.5 -12.5 65.5 -12.5q42 0 82.5 13.5q40.5 13.5 75.5 36.5l8 -116q-44 -28 -88 -42q-44 -14 -103 -14q-61 0 -106.5 19.5q-45.5 19.5 -76 55.5q-30.5 36 -45.5 86q-15 50 -15 112q0 8 0 17.5q0 9.5 1 18.5l-33 0q-71 0 -103 35q-32 35 -32 88q0 32 11 59.5q11 27.5 26 43.5l111 0q-16 -12 -26 -28.5q-10 -16.5 -10 -34.5q0 -9 2 -18.5q2 -9.5 9.5 -16.5q7.5 -7 22 -11.5q14.5 -4.5 38.5 -3.5q18 76 49.5 133.5q31.5 57.5 74.5 96q43 38.5 96 57.5q53 19 112 19q52 0 90 -16.5q38 -16.5 63.5 -45.5q25.5 -29 38 -69.5q12.5 -40.5 12.5 -88.5q0 -45 -10.5 -95q-10.5 -50 -32.5 -104zM641 408q6 20 9.5 40.5q3.5 20.5 3.5 40.5q0 22 -5 42.5q-5 20.5 -16.5 36q-11.5 15.5 -29.5 24.5q-18 9 -44 9q-64 0 -113 -48.5q-49 -48.5 -72 -144.5z" />
-<glyph unicode="&#1213;" horiz-adv-x="575" d="M511 48q-31 -26 -80 -44q-49 -18 -114 -18q-81 0 -127.5 47.5q-46.5 47.5 -46.5 132.5q0 12 0.5 24q0.5 12 1.5 24l-9 0q-35 0 -59.5 9q-24.5 9 -40.5 24q-16 15 -23.5 35q-7.5 20 -7.5 42q0 36 19.5 63.5q19.5 27.5 42.5 39.5l105 0q-22 -12 -40.5 -31.5q-18.5 -19.5 -19.5 -45.5q0 -8 2 -16.5q2 -8.5 7.5 -15.5q5.5 -7 16 -11.5q10.5 -4.5 27.5 -4.5q17 50 45.5 89.5q28.5 39.5 63.5 66.5q35 27 74.5 41.5q39.5 14.5 78.5 14.5q41 0 70.5 -10.5q29.5 -10.5 48.5 -29q19 -18.5 28 -42.5q9 -24 9 -51q0 -41 -21 -72q-21 -31 -58.5 -51.5q-37.5 -20.5 -90.5 -31q-53 -10.5 -116 -10.5q-8 0 -15 0.5q-7 0.5 -15 0.5q-2 -12 -3 -21.5q-1 -9.5 -1 -17.5q0 -45 23.5 -67q23.5 -22 66.5 -22q44 0 79 13q35 13 53 26zM285 295q28 0 59.5 2q31.5 2 58.5 9.5q27 7.5 45 22q18 14.5 18 39.5q0 15 -11 30.5q-11 15.5 -46 15.5q-44 0 -76.5 -34t-47.5 -85z" />
-<glyph unicode="&#1214;" horiz-adv-x="761" d="M356 295q-1 -8 -1.5 -17q-0.5 -9 -0.5 -17q0 -31 7 -58.5q7 -27.5 23.5 -48.5q16.5 -21 43 -33q26.5 -12 65.5 -12q42 0 82.5 13.5q40.5 13.5 75.5 36.5l8 -117q-38 -24 -76 -37.5q-38 -13.5 -85 -17.5l-25 -162h-116l44 168q-89 20 -132.5 90q-43.5 70 -43.5 176q0 8 0 17.5q0 9.5 1 18.5l-33 0q-71 0 -103 35q-32 35 -32 88q0 32 11 59.5q11 27.5 26 43.5l111 0q-16 -12 -26 -28.5q-10 -16.5 -10 -34.5q0 -9 2 -18.5q2 -9.5 9.5 -16.5q7.5 -7 22 -11.5q14.5 -4.5 38.5 -3.5q18 76 49.5 133.5q31.5 57.5 74.5 96q43 38.5 96 57.5q53 19 112 19q52 0 90 -16.5q38 -16.5 63.5 -45.5q25.5 -29 38 -69.5q12.5 -40.5 12.5 -88.5q0 -45 -10.5 -95q-10.5 -50 -32.5 -104zM641 408q6 20 9.5 40.5q3.5 20.5 3.5 40.5q0 22 -5 42.5q-5 20.5 -16.5 36q-11.5 15.5 -29.5 24.5q-18 9 -44 9q-64 0 -113 -48.5q-49 -48.5 -72 -144.5z" />
-<glyph unicode="&#1215;" horiz-adv-x="575" d="M511 48q-25 -21 -61.5 -37q-36.5 -16 -84.5 -22l-25 -164h-116l43 167q-59 13 -91.5 57.5q-32.5 44.5 -32.5 116.5q0 12 0.5 24q0.5 12 1.5 24l-9 0q-35 0 -59.5 9q-24.5 9 -40.5 24q-16 15 -23.5 35q-7.5 20 -7.5 42q0 36 19.5 63.5q19.5 27.5 42.5 39.5l105 0q-22 -12 -40.5 -31.5q-18.5 -19.5 -19.5 -45.5q0 -8 2 -16.5q2 -8.5 7.5 -15.5q5.5 -7 16 -11.5q10.5 -4.5 27.5 -4.5q17 50 45.5 89.5q28.5 39.5 63.5 66.5q35 27 74.5 41.5q39.5 14.5 78.5 14.5q41 0 70.5 -10.5q29.5 -10.5 48.5 -29q19 -18.5 28 -42.5q9 -24 9 -51q0 -41 -21 -72q-21 -31 -58.5 -51.5q-37.5 -20.5 -90.5 -31q-53 -10.5 -116 -10.5q-8 0 -15 0.5q-7 0.5 -15 0.5q-2 -12 -3 -21.5q-1 -9.5 -1 -17.5q0 -45 23.5 -67q23.5 -22 66.5 -22q44 0 79 13q35 13 53 26zM285 295q28 0 59.5 2q31.5 2 58.5 9.5q27 7.5 45 22q18 14.5 18 39.5q0 15 -11 30.5q-11 15.5 -46 15.5q-44 0 -76.5 -34t-47.5 -85z" />
-<glyph unicode="&#1216;" horiz-adv-x="278" d="M183 700h129l-148 -700l-129 0z" />
-<glyph unicode="&#1219;" horiz-adv-x="591" d="M391 180q0 39 -10 62.5q-10 23.5 -29 36q-19 12.5 -45.5 16.5q-26.5 4 -60.5 4h-33l-63 -299h-130l148 700h130l-66 -310l32 12l237 298h155l-242 -282l-66 -38h48q15 -2 37 -10q22 -8 41.5 -28q19.5 -20 33.5 -53.5q14 -33.5 14 -86.5v-28q0 -77 -21 -145q-21 -68 -60 -119.5q-39 -51.5 -95.5 -81.5q-56.5 -30 -127.5 -30q-8 0 -15 0q-7 0 -15 1l24 112q48 0 82 24q34 24 55.5 62.5q21.5 38.5 31.5 86.5t10 96z" />
-<glyph unicode="&#1220;" horiz-adv-x="480" d="M291 27q5 22 6.5 41q1.5 19 1.5 35q0 92 -81 99l-34 0l-43 -202h-123l106 500h123l-47 -217l35 14l155 203h136l-158 -197l-56 -32l38 -2q41 -13 58.5 -54q17.5 -41 17.5 -92q0 -39 -9 -78l-4 -17q-26 -122 -82 -178.5q-56 -56.5 -136 -56.5q-32 0 -61 7l24 102q5 -1 8.5 -1q3.5 0 8.5 0q89 -2 116 126z" />
-<glyph unicode="&#1221;" horiz-adv-x="631" d="M490 578h-140q-23 -95 -43.5 -173q-20.5 -78 -41 -140q-20.5 -62 -43.5 -110q-23 -48 -50 -84q-18 -24 -37.5 -39q-19.5 -15 -39 -23.5q-19.5 -8.5 -37.5 -12q-18 -3.5 -34 -3.5q-46 0 -72 14l39 118q5 -2 10.5 -3q5.5 -1 10.5 -1q17 -1 34.5 8q17.5 9 32.5 29q18 22 38 64q20 42 41.5 108q21.5 66 45 157q23.5 91 49.5 213l130 0h132h130l-124 -582h98l-6 -31l-136 -217h-90l71 130l-90 0z" />
-<glyph unicode="&#1222;" horiz-adv-x="532" d="M363 397h-92q-25 -93 -48.5 -167.5q-23.5 -74.5 -51.5 -127q-28 -52.5 -62.5 -80.5q-34.5 -28 -80.5 -28q-54 0 -75 15l38 108q17 -5 29 -5q20 1 37.5 18q17.5 17 36.5 60.5q19 43.5 40.5 118.5q21.5 75 49.5 191l323 0l-82 -382h98l-6 -31l-136 -217h-90l71 130l-84 0z" />
-<glyph unicode="&#1223;" horiz-adv-x="624" d="M523 0q-23 -108 -65.5 -157.5q-42.5 -49.5 -120.5 -49.5q-28 0 -61 6l23 112q25 -2 41 2.5q16 4.5 26 16q10 11.5 16 29q6 17.5 11 41.5l62 293h-243l-62 -293h-130l148 700h130l-60 -285h243l60 285l130 0z" />
-<glyph unicode="&#1224;" horiz-adv-x="521" d="M247 500l-41 -187h156l40 187h124l-111 -521q-20 -91 -63.5 -139q-43.5 -48 -118.5 -48q-14 0 -28.5 1.5q-14.5 1.5 -30.5 5.5l23 111q24 -2 40.5 3q16.5 5 28 16.5q11.5 11.5 18.5 29.5q7 18 12 42l42 194h-156l-41 -195h-123l106 500z" />
-<glyph unicode="&#1225;" horiz-adv-x="656" d="M455 293h-243l-62 -293h-130l148 700h130l-60 -285h243l60 285h130l-124 -582h96l-6 -31l-136 -217h-90l71 130l-89 0z" />
-<glyph unicode="&#1226;" horiz-adv-x="545" d="M335 195h-156l-41 -195h-123l106 500h123l-41 -187h156l40 187h124l-82 -382h95l-6 -31l-136 -217h-90l71 130l-82 0z" />
-<glyph unicode="&#1227;" horiz-adv-x="583" d="M284 700l-46 -217q-3 -13 -3.5 -24q-0.5 -11 -0.5 -22q0 -39 18.5 -58q18.5 -19 60.5 -19q36 0 67.5 8q31.5 8 53.5 25l65 307h130l-148 -700h-106l-41 -125h-91l51 247h83l34 160q-14 -7 -29 -14q-15 -7 -33 -13q-18 -6 -40.5 -9.5q-22.5 -3.5 -50.5 -3.5q-35 0 -64.5 9q-29.5 9 -51 28q-21.5 19 -33.5 48q-12 29 -12 68q0 31 7 63l51 242z" />
-<glyph unicode="&#1228;" horiz-adv-x="483" d="M303 207q-17 -11 -48.5 -22q-31.5 -11 -81.5 -11q-57 0 -88.5 25q-31.5 25 -31.5 82q0 13 1.5 28q1.5 15 5.5 32l34 159h123l-22 -103q-4 -19 -6 -34q-2 -15 -2 -28q0 -26 11 -39.5q11 -13.5 39 -13.5q28 0 50 8q22 8 37 18l41 192h123l-106 -500h-120l-29 -114h-104l55 212l95 0z" />
-<glyph unicode="&#1229;" horiz-adv-x="799" d="M613 363l44 138h-6l-66 -113l-197 -259h-41l-94 262l-18 110h-5l-10 -137l-77 -364h-123l148 700h115l105 -320l13 -80h5l46 82l236 318h125l-124 -582h98l-6 -31l-136 -217h-90l71 130l-90 0z" />
-<glyph unicode="&#1230;" horiz-adv-x="673" d="M470 229l30 104h-5l-56 -86l-123 -155h-45l-64 155l-18 86h-6l-9 -103l-48 -230h-111l106 500h122l67 -188l15 -63h3l41 65l141 186h136l-82 -382h100l-6 -31l-136 -217h-90l71 130l-81 0z" />
-<glyph unicode="&#1231;" horiz-adv-x="244" d="M166 700h123l-148 -700l-123 0z" />
-<glyph unicode="&#1232;" horiz-adv-x="582" d="M387 155h-204l-83 -155h-138l389 705h96l91 -705h-131zM240 265h142l-16 156l1 110h-5l-40 -111zM354 874q-2 -28 13.5 -44q15.5 -16 43.5 -16q65 0 85 59l114 -17q-21 -61 -74.5 -91q-53.5 -30 -134.5 -30q-39 0 -68 9.5q-29 9.5 -48 25.5q-19 16 -28.5 37.5q-9.5 21.5 -10.5 46.5z" />
-<glyph unicode="&#1233;" horiz-adv-x="503" d="M444 200q-8 -38 -11.5 -77q-3.5 -39 -3.5 -74q0 -14 0.5 -26.5q0.5 -12.5 1.5 -23.5l-91 0l-14 86h-4q-11 -18 -28.5 -35.5q-17.5 -17.5 -38.5 -32q-21 -14.5 -44.5 -23q-23.5 -8.5 -48.5 -8.5q-66 0 -97.5 43q-31.5 43 -31.5 115q0 73 18.5 140q18.5 67 57.5 118q39 51 98.5 81.5q59.5 30.5 141.5 30.5q35 0 76.5 -6.5q41.5 -6.5 80.5 -17.5zM209 89q18 0 34 7.5q16 7.5 29.5 19.5q13.5 12 24 26q10.5 14 18.5 26l50 233q-11 5 -25.5 7.5q-14.5 2.5 -28.5 2.5q-36 0 -64 -21.5q-28 -21.5 -47.5 -56q-19.5 -34.5 -29.5 -78q-10 -43.5 -10 -87.5q0 -32 10.5 -55.5q10.5 -23.5 38.5 -23.5zt0 0zM314 704q-2 -39 10 -55q12 -16 37 -16q26 0 45.5 16q19.5 16 33.5 54l87 -25q-24 -65 -75 -96.5q-51 -31.5 -112 -31.5q-29 0 -55 7q-26 7 -44.5 22.5q-18.5 15.5 -28.5 39.5q-10 24 -8 59z" />
-<glyph unicode="&#1234;" horiz-adv-x="582" d="M387 155h-204l-83 -155h-138l389 705h96l91 -705h-131zM240 265h142l-16 156l1 110h-5l-40 -111zM242 798q0 29 20 43.5q20 14.5 52 14.5q32 0 52 -14.5q20 -14.5 20 -43.5q0 -29 -20 -43q-20 -14 -52 -14q-32 0 -52 14q-20 14 -20 43zt0 0zM446 798q0 29 20 43.5q20 14.5 52 14.5q32 0 52 -14.5q20 -14.5 20 -43.5q0 -29 -20 -43q-20 -14 -52 -14q-32 0 -52 14t-20 43z" />
-<glyph unicode="&#1235;" horiz-adv-x="503" d="M444 200q-8 -38 -11.5 -77q-3.5 -39 -3.5 -74q0 -14 0.5 -26.5q0.5 -12.5 1.5 -23.5l-91 0l-14 86h-4q-11 -18 -28.5 -35.5q-17.5 -17.5 -38.5 -32q-21 -14.5 -44.5 -23q-23.5 -8.5 -48.5 -8.5q-66 0 -97.5 43q-31.5 43 -31.5 115q0 73 18.5 140q18.5 67 57.5 118q39 51 98.5 81.5q59.5 30.5 141.5 30.5q35 0 76.5 -6.5q41.5 -6.5 80.5 -17.5zM209 89q18 0 34 7.5q16 7.5 29.5 19.5q13.5 12 24 26q10.5 14 18.5 26l50 233q-11 5 -25.5 7.5q-14.5 2.5 -28.5 2.5q-36 0 -64 -21.5q-28 -21.5 -47.5 -56q-19.5 -34.5 -29.5 -78q-10 -43.5 -10 -87.5q0 -32 10.5 -55.5q10.5 -23.5 38.5 -23.5zt0 0zM182 631q0 33 18.5 51.5q18.5 18.5 47.5 18.5q29 0 47.5 -18.5q18.5 -18.5 18.5 -51.5q0 -32 -18.5 -50q-18.5 -18 -47.5 -18q-29 0 -47.5 18q-18.5 18 -18.5 50zt0 0zM390 632q0 32 18.5 50.5q18.5 18.5 47.5 18.5q29 0 47.5 -18.5q18.5 -18.5 18.5 -50.5q0 -32 -18.5 -50.5q-18.5 -18.5 -47.5 -18.5q-29 0 -47.5 18.5t-18.5 50.5z" />
-<glyph unicode="&#1236;" horiz-adv-x="826" d="M449 530l-44 -94l-116 -155h114l52 249zM379 170h-171l-128 -170h-146l547 700h133h271l-26 -122h-264l-35 -163h241l-26 -122h-240l-36 -171h269l-26 -122h-261l-138 0z" />
-<glyph unicode="&#1237;" horiz-adv-x="744" d="M312 223q-8 1 -16.5 1q-8.5 0 -16.5 0q-57 0 -96 -18.5q-39 -18.5 -39 -57.5q0 -27 14 -39q14 -12 37 -12q18 0 34.5 7.5q16.5 7.5 30.5 18q14 10.5 25 22q11 11.5 18 20.5zM315 77q-32 -36 -74 -60.5q-42 -24.5 -99 -24.5q-33 0 -56.5 10.5q-23.5 10.5 -38.5 28q-15 17.5 -22.5 40.5q-7.5 23 -7.5 47q0 49 22 84q22 35 60 57q38 22 88 32.5q50 10.5 107 10.5q8 0 16.5 0q8.5 0 16.5 -1q11 38 11 59q0 24 -15 35.5q-15 11.5 -51 11.5q-33 0 -70 -8q-37 -8 -69 -21l-18 93q41 20 94.5 29.5q53.5 9.5 103.5 9.5q46 0 78 -14.5q32 -14.5 45 -45.5q29 31 72.5 47.5q43.5 16.5 88.5 16.5q42 0 71.5 -9.5q29.5 -9.5 48 -26.5q18.5 -17 27 -39.5q8.5 -22.5 8.5 -49.5q0 -56 -26.5 -90q-26.5 -34 -71.5 -53.5q-45 -19.5 -104 -26.5q-59 -7 -123 -7q-1 -8 -1.5 -15.5q-0.5 -7.5 -0.5 -14.5q0 -45 23 -69q23 -24 76 -24q38 0 71.5 10.5q33.5 10.5 53.5 22.5l23 -86q-34 -24 -85.5 -37q-51.5 -13 -102.5 -13q-66 0 -106.5 24q-40.5 24 -57.5 67zM447 292q32 0 65 1.5q33 1.5 60 9q27 7.5 44 23q17 15.5 17 42.5q0 17 -12 31.5q-12 14.5 -45 14.5q-53 0 -83.5 -35.5t-45.5 -86.5z" />
-<glyph unicode="&#1238;" horiz-adv-x="503" d="M168 700h130h264l-26 -122h-264l-35 -163h241l-27 -122h-239l-37 -171h269l-25 -122h-269h-130zM323 874q-2 -28 13.5 -44q15.5 -16 43.5 -16q65 0 85 59l114 -17q-21 -61 -74.5 -91q-53.5 -30 -134.5 -30q-39 0 -68 9.5q-29 9.5 -48 25.5q-19 16 -28.5 37.5q-9.5 21.5 -10.5 46.5z" />
-<glyph unicode="&#1239;" horiz-adv-x="466" d="M402 48q-31 -26 -80 -44q-49 -18 -114 -18q-81 0 -127.5 47.5q-46.5 47.5 -46.5 132.5q0 80 25 144.5q25 64.5 65.5 109.5q40.5 45 91.5 69.5q51 24.5 102 24.5q41 0 70.5 -10.5q29.5 -10.5 48.5 -29q19 -18.5 28 -42.5q9 -24 9 -51q0 -41 -21 -72q-21 -31 -58.5 -51.5q-37.5 -20.5 -90.5 -31q-53 -10.5 -116 -10.5q-8 0 -15 0.5q-7 0.5 -15 0.5q-2 -12 -3 -21.5q-1 -9.5 -1 -17.5q0 -45 23.5 -67q23.5 -22 66.5 -22q44 0 79 13q35 13 53 26zM176 295q28 0 59.5 2q31.5 2 58.5 9.5q27 7.5 45 22q18 14.5 18 39.5q0 15 -11 30.5q-11 15.5 -46 15.5q-44 0 -76.5 -34q-32.5 -34 -47.5 -85zt0 0zM297 704q-2 -39 10 -55q12 -16 37 -16q26 0 45.5 16q19.5 16 33.5 54l87 -25q-24 -65 -75 -96.5q-51 -31.5 -112 -31.5q-29 0 -55 7q-26 7 -44.5 22.5q-18.5 15.5 -28.5 39.5q-10 24 -8 59z" />
-<glyph unicode="&#1240;" horiz-adv-x="599" d="M186 296q-5 -19 -6.5 -38q-1.5 -19 -1.5 -37q0 -51 23 -86.5q23 -35.5 76 -35.5q36 0 65 14.5q29 14.5 51.5 40.5q22.5 26 38.5 62q16 36 24 80zM471 409q1 6 1 12q0 6 0 12q0 34 -6.5 63q-6.5 29 -22 50.5q-15.5 21.5 -41.5 33.5q-26 12 -65 12q-24 0 -47 -4.5q-23 -4.5 -43.5 -11.5q-20.5 -7 -37.5 -14.5q-17 -7.5 -29 -14.5l-3 117q34 19 83 34.5q49 15.5 108 15.5q54 0 98 -16.5q44 -16.5 76 -50q32 -33.5 49.5 -84.5q17.5 -51 17.5 -119q0 -89 -21.5 -171.5q-21.5 -82.5 -64 -146q-42.5 -63.5 -107 -102q-64.5 -38.5 -150.5 -38.5q-54 0 -94 17.5q-40 17.5 -67 48.5q-27 31 -40.5 74.5q-13.5 43.5 -13.5 95.5q0 86 36 187z" />
-<glyph unicode="&#1241;" horiz-adv-x="490" d="M101 469q34 21 82 33q48 12 105 12q47 0 82 -14q35 -14 58 -38q23 -24 34 -56q11 -32 11 -68q0 -84 -21.5 -149.5q-21.5 -65.5 -60 -110.5q-38.5 -45 -91 -68.5q-52.5 -23.5 -114.5 -23.5q-39 0 -69.5 11.5q-30.5 11.5 -51 30.5q-20.5 19 -31.5 44.5q-11 25.5 -11 54.5q0 79 60 123.5q60 44.5 194 44.5q34 0 73 -3q2 11 3 20q1 9 1 17q0 44 -28.5 63q-28.5 19 -69.5 19q-41 0 -74.5 -9.5q-33.5 -9.5 -53.5 -19.5zM331 212q-16 2 -31.5 3.5q-15.5 1.5 -30.5 1.5q-53 0 -89 -17q-36 -17 -36 -54q0 -22 13.5 -39.5q13.5 -17.5 49.5 -17.5q48 0 79 34.5t45 88.5z" />
-<glyph unicode="&#1242;" horiz-adv-x="599" d="M186 296q-5 -19 -6.5 -38q-1.5 -19 -1.5 -37q0 -51 23 -86.5q23 -35.5 76 -35.5q36 0 65 14.5q29 14.5 51.5 40.5q22.5 26 38.5 62q16 36 24 80zM471 409q1 6 1 12q0 6 0 12q0 34 -6.5 63q-6.5 29 -22 50.5q-15.5 21.5 -41.5 33.5q-26 12 -65 12q-24 0 -47 -4.5q-23 -4.5 -43.5 -11.5q-20.5 -7 -37.5 -14.5q-17 -7.5 -29 -14.5l-3 117q34 19 83 34.5q49 15.5 108 15.5q54 0 98 -16.5q44 -16.5 76 -50q32 -33.5 49.5 -84.5q17.5 -51 17.5 -119q0 -89 -21.5 -171.5q-21.5 -82.5 -64 -146q-42.5 -63.5 -107 -102q-64.5 -38.5 -150.5 -38.5q-54 0 -94 17.5q-40 17.5 -67 48.5q-27 31 -40.5 74.5q-13.5 43.5 -13.5 95.5q0 86 36 187zM243 798q0 29 20 43.5q20 14.5 52 14.5q32 0 52 -14.5q20 -14.5 20 -43.5q0 -29 -20 -43q-20 -14 -52 -14q-32 0 -52 14q-20 14 -20 43zt0 0zM447 798q0 29 20 43.5q20 14.5 52 14.5q32 0 52 -14.5q20 -14.5 20 -43.5q0 -29 -20 -43q-20 -14 -52 -14q-32 0 -52 14t-20 43z" />
-<glyph unicode="&#1243;" horiz-adv-x="490" d="M101 469q34 21 82 33q48 12 105 12q47 0 82 -14q35 -14 58 -38q23 -24 34 -56q11 -32 11 -68q0 -84 -21.5 -149.5q-21.5 -65.5 -60 -110.5q-38.5 -45 -91 -68.5q-52.5 -23.5 -114.5 -23.5q-39 0 -69.5 11.5q-30.5 11.5 -51 30.5q-20.5 19 -31.5 44.5q-11 25.5 -11 54.5q0 79 60 123.5q60 44.5 194 44.5q34 0 73 -3q2 11 3 20q1 9 1 17q0 44 -28.5 63q-28.5 19 -69.5 19q-41 0 -74.5 -9.5q-33.5 -9.5 -53.5 -19.5zM331 212q-16 2 -31.5 3.5q-15.5 1.5 -30.5 1.5q-53 0 -89 -17q-36 -17 -36 -54q0 -22 13.5 -39.5q13.5 -17.5 49.5 -17.5q48 0 79 34.5q31 34.5 45 88.5zt0 0zM126 631q0 33 18.5 51.5q18.5 18.5 47.5 18.5q29 0 47.5 -18.5q18.5 -18.5 18.5 -51.5q0 -32 -18.5 -50q-18.5 -18 -47.5 -18q-29 0 -47.5 18q-18.5 18 -18.5 50zt0 0zM334 632q0 32 18.5 50.5q18.5 18.5 47.5 18.5q29 0 47.5 -18.5q18.5 -18.5 18.5 -50.5q0 -32 -18.5 -50.5q-18.5 -18.5 -47.5 -18.5q-29 0 -47.5 18.5t-18.5 50.5z" />
-<glyph unicode="&#1244;" horiz-adv-x="803" d="M440 700h124l-66 -311l34 11l195 300h154l-219 -307l-53 -34l42 -42l112 -317h-144l-98 304h-41l-64 -304h-124l67 316l-33 -12l-213 -304h-159l236 307l61 39l-38 37l-98 317h140l82 -299h40zM352 798q0 29 20 43.5q20 14.5 52 14.5q32 0 52 -14.5q20 -14.5 20 -43.5q0 -29 -20 -43q-20 -14 -52 -14q-32 0 -52 14q-20 14 -20 43zt0 0zM556 798q0 29 20 43.5q20 14.5 52 14.5q32 0 52 -14.5q20 -14.5 20 -43.5q0 -29 -20 -43q-20 -14 -52 -14q-32 0 -52 14t-20 43z" />
-<glyph unicode="&#1245;" horiz-adv-x="757" d="M249 206q-15 -57 -36.5 -97.5q-21.5 -40.5 -47 -65.5q-25.5 -25 -54 -36.5q-28.5 -11.5 -58.5 -11.5q-20 0 -39 5q-19 5 -39 13l33 100q18 -5 32 -5q37 0 65 34q28 34 44 115q4 20 5 36q1 16 1 30q0 51 -20.5 67.5q-20.5 16.5 -55.5 10.5l-12 89q45 12 80 12q60 0 91 -35q31 -35 31 -110q0 -14 -1 -28.5q-1 -14.5 -3 -31.5l76 0l43 203h118l-44 -203h70q14 58 34.5 97.5q20.5 39.5 45.5 64q25 24.5 53 35q28 10.5 56 10.5q31 0 65 -13l-26 -90q-11 3 -21 3q-31 0 -58 -29.5q-27 -29.5 -44 -106.5q-9 -39 -9 -72q0 -26 5 -46q5 -20 15.5 -33q10.5 -13 25.5 -17q15 -4 35 3l12 -90q-47 -16 -82 -16q-34 0 -58 13.5q-24 13.5 -39 36.5q-15 23 -21.5 54.5q-6.5 31.5 -6.5 66.5q0 10 0.5 19q0.5 9 1.5 19l-73 0l-43 -206h-118l44 206zM302 631q0 33 18.5 51.5q18.5 18.5 47.5 18.5q29 0 47.5 -18.5q18.5 -18.5 18.5 -51.5q0 -32 -18.5 -50q-18.5 -18 -47.5 -18q-29 0 -47.5 18q-18.5 18 -18.5 50zt0 0zM510 632q0 32 18.5 50.5q18.5 18.5 47.5 18.5q29 0 47.5 -18.5q18.5 -18.5 18.5 -50.5q0 -32 -18.5 -50.5q-18.5 -18.5 -47.5 -18.5q-29 0 -47.5 18.5t-18.5 50.5z" />
-<glyph unicode="&#1246;" horiz-adv-x="507" d="M141 309l23 108h23q9 0 21 0.5q12 0.5 24.5 1.5q12.5 1 24.5 2q12 1 20 2q20 3 40 9.5q20 6.5 35.5 18.5q15.5 12 25.5 29q10 17 10 41q0 32 -24.5 50.5q-24.5 18.5 -72.5 18.5q-42 0 -80.5 -12q-38.5 -12 -63.5 -23l-9 116q12 6 32.5 13q20.5 7 46 13q25.5 6 55.5 10.5q30 4.5 60 4.5q42 0 77 -9.5q35 -9.5 61 -28.5q26 -19 40.5 -47.5q14.5 -28.5 14.5 -65.5q0 -69 -37.5 -121q-37.5 -52 -111.5 -69l0 -5q19 -6 37 -16.5q18 -10.5 31.5 -27.5q13.5 -17 22 -41q8.5 -24 8.5 -57q0 -61 -24 -105.5q-24 -44.5 -65.5 -74q-41.5 -29.5 -97.5 -44q-56 -14.5 -119 -14.5q-63 0 -112.5 11q-49.5 11 -73.5 26l58 119q20 -11 58 -22.5q38 -11.5 94 -11.5q24 0 50 6q26 6 47 19.5q21 13.5 34.5 35.5q13.5 22 13.5 54q0 48 -34.5 66q-34.5 18 -98.5 20l-38 0zM184 798q0 29 20 43.5q20 14.5 52 14.5q32 0 52 -14.5q20 -14.5 20 -43.5q0 -29 -20 -43q-20 -14 -52 -14q-32 0 -52 14q-20 14 -20 43zt0 0zM388 798q0 29 20 43.5q20 14.5 52 14.5q32 0 52 -14.5q20 -14.5 20 -43.5q0 -29 -20 -43q-20 -14 -52 -14q-32 0 -52 14t-20 43z" />
-<glyph unicode="&#1247;" horiz-adv-x="407" d="M100 208l19 89h58q16 0 32.5 5q16.5 5 29 14q12.5 9 20.5 21q8 12 8 26q0 24 -15.5 34q-15.5 10 -53.5 10q-33 0 -56 -6q-23 -6 -48 -17l-21 91q16 9 37 15q21 6 44.5 10.5q23.5 4.5 48 6.5q24.5 2 47.5 2q80 0 114 -28.5q34 -28.5 33 -78.5q0 -24 -8 -45.5q-8 -21.5 -22 -38.5q-14 -17 -32.5 -30q-18.5 -13 -39.5 -20l0 -4q41 -10 56.5 -35.5q15.5 -25.5 15.5 -56.5q0 -43 -18 -77q-18 -34 -50 -57.5q-32 -23.5 -75.5 -36q-43.5 -12.5 -94.5 -12.5q-48 0 -87.5 12q-39.5 12 -61.5 28l46 94q20 -13 49.5 -22.5q29.5 -9.5 66.5 -9.5q47 0 73 21.5q26 21.5 26 54.5q0 22 -19 31.5q-19 9.5 -76 9.5zM99 631q0 33 18.5 51.5q18.5 18.5 47.5 18.5q29 0 47.5 -18.5q18.5 -18.5 18.5 -51.5q0 -32 -18.5 -50q-18.5 -18 -47.5 -18q-29 0 -47.5 18q-18.5 18 -18.5 50zt0 0zM307 632q0 32 18.5 50.5q18.5 18.5 47.5 18.5q29 0 47.5 -18.5q18.5 -18.5 18.5 -50.5q0 -32 -18.5 -50.5q-18.5 -18.5 -47.5 -18.5q-29 0 -47.5 18.5t-18.5 50.5z" />
-<glyph unicode="&#1248;" horiz-adv-x="528" d="M201 108q41 0 71.5 10.5q30.5 10.5 50.5 28q20 17.5 30 39.5q10 22 10 45q0 49 -30.5 69q-30.5 20 -110.5 20h-83l13 58l180 174l53 43l-59 -13h-192l25 118h409l-16 -75l-197 -189l-51 -31v-5l46 11q30 -1 57.5 -12.5q27.5 -11.5 48 -32q20.5 -20.5 32.5 -49.5q12 -29 12 -65q0 -62 -22 -111q-22 -49 -62.5 -83.5q-40.5 -34.5 -98 -53q-57.5 -18.5 -127.5 -18.5q-21 0 -47.5 2.5q-26.5 2.5 -52.5 7q-26 4.5 -49 12q-23 7.5 -38 17.5l57 120q24 -15 64 -26t77 -11z" />
-<glyph unicode="&#1249;" horiz-adv-x="435" d="M91 -109q33 0 64 10q31 10 54 29q23 19 37 45q14 26 14 59q0 48 -32 69q-32 21 -114 21h-50l11 47l149 183l65 52l-71 -9h-162l22 103h377l-15 -70l-173 -187l-44 -29v-2l30 3q25 0 49 -9.5q24 -9.5 43 -28q19 -18.5 30.5 -46q11.5 -27.5 11.5 -62.5q0 -67 -25 -119q-25 -52 -67.5 -88q-42.5 -36 -97.5 -55q-55 -19 -115 -19q-48 0 -90 12q-42 12 -69 35l55 89q23 -15 53 -24t60 -9z" />
-<glyph unicode="&#1250;" horiz-adv-x="638" d="M487 381l29 89h-6l-64 -96l-326 -374h-100l148 700h130l-79 -374l-30 -92h6l66 99l324 367h100l-148 -700h-130zM294 856h327l-19 -89l-326 0z" />
-<glyph unicode="&#1251;" horiz-adv-x="512" d="M241 500l-65 -309q-6 -30 -6 -50q0 -20 8 -31q8 -11 28 -11q17 0 34.5 8.5q17.5 8.5 33.5 22q16 13.5 29.5 30q13.5 16.5 22.5 32.5l64 308h123l-63 -300q-5 -20 -8.5 -47q-3.5 -27 -6.5 -55.5q-3 -28.5 -4 -54.5q-1 -26 0 -43l-99 0l-5 90h-4q-14 -19 -32.5 -37.5q-18.5 -18.5 -41 -33.5q-22.5 -15 -49 -24q-26.5 -9 -56.5 -9q-47 0 -76 23.5q-29 23.5 -29 86.5q0 37 10 81l69 323zM187 658h308l-19 -92l-308 0z" />
-<glyph unicode="&#1252;" horiz-adv-x="638" d="M487 381l29 89h-6l-64 -96l-326 -374h-100l148 700h130l-79 -374l-30 -92h6l66 99l324 367h100l-148 -700h-130zM271 798q0 29 20 43.5q20 14.5 52 14.5q32 0 52 -14.5q20 -14.5 20 -43.5q0 -29 -20 -43q-20 -14 -52 -14q-32 0 -52 14q-20 14 -20 43zt0 0zM475 798q0 29 20 43.5q20 14.5 52 14.5q32 0 52 -14.5q20 -14.5 20 -43.5q0 -29 -20 -43q-20 -14 -52 -14q-32 0 -52 14t-20 43z" />
-<glyph unicode="&#1253;" horiz-adv-x="512" d="M241 500l-65 -309q-6 -30 -6 -50q0 -20 8 -31q8 -11 28 -11q17 0 34.5 8.5q17.5 8.5 33.5 22q16 13.5 29.5 30q13.5 16.5 22.5 32.5l64 308h123l-63 -300q-5 -20 -8.5 -47q-3.5 -27 -6.5 -55.5q-3 -28.5 -4 -54.5q-1 -26 0 -43l-99 0l-5 90h-4q-14 -19 -32.5 -37.5q-18.5 -18.5 -41 -33.5q-22.5 -15 -49 -24q-26.5 -9 -56.5 -9q-47 0 -76 23.5q-29 23.5 -29 86.5q0 37 10 81l69 323zM176 631q0 33 18.5 51.5q18.5 18.5 47.5 18.5q29 0 47.5 -18.5q18.5 -18.5 18.5 -51.5q0 -32 -18.5 -50q-18.5 -18 -47.5 -18q-29 0 -47.5 18q-18.5 18 -18.5 50zt0 0zM384 632q0 32 18.5 50.5q18.5 18.5 47.5 18.5q29 0 47.5 -18.5q18.5 -18.5 18.5 -50.5q0 -32 -18.5 -50.5q-18.5 -18.5 -47.5 -18.5q-29 0 -47.5 18.5t-18.5 50.5z" />
-<glyph unicode="&#1254;" horiz-adv-x="644" d="M58 262q0 93 25.5 175.5q25.5 82.5 72.5 144q47 61.5 113.5 97q66.5 35.5 148.5 35.5q54 0 97.5 -16q43.5 -16 74 -49.5q30.5 -33.5 47.5 -84.5q17 -51 17 -121q0 -94 -25.5 -177q-25.5 -83 -72 -145.5q-46.5 -62.5 -111 -98.5q-64.5 -36 -142.5 -36q-118 0 -181 69.5q-63 69.5 -64 206.5zt0 0zM195 266q0 -72 27.5 -115q27.5 -43 90.5 -43q46 0 83.5 27.5q37.5 27.5 64.5 74q27 46.5 41.5 106.5q14.5 60 14.5 125q0 79 -31 115q-31 36 -85 36q-45 0 -82.5 -26q-37.5 -26 -65 -70.5q-27.5 -44.5 -43 -104q-15.5 -59.5 -15.5 -125.5zt0 0zM271 798q0 29 20 43.5q20 14.5 52 14.5q32 0 52 -14.5q20 -14.5 20 -43.5q0 -29 -20 -43q-20 -14 -52 -14q-32 0 -52 14q-20 14 -20 43zt0 0zM475 798q0 29 20 43.5q20 14.5 52 14.5q32 0 52 -14.5q20 -14.5 20 -43.5q0 -29 -20 -43q-20 -14 -52 -14q-32 0 -52 14t-20 43z" />
-<glyph unicode="&#1255;" horiz-adv-x="496" d="M34 162q0 79 22.5 144q22.5 65 60 111q37.5 46 87 71.5q49.5 25.5 103.5 25.5q48 0 81 -15q33 -15 53.5 -40q20.5 -25 29.5 -57q9 -32 9 -66q0 -78 -22 -142.5q-22 -64.5 -59 -110.5q-37 -46 -86 -71.5q-49 -25.5 -103 -25.5q-47 0 -80 15.5q-33 15.5 -54.5 40.5q-21.5 25 -31.5 56.5q-10 31.5 -10 63.5zt0 0zM161 179q0 -90 65 -90q24 0 47 21q23 21 41 55q18 34 28.5 77q10.5 43 10.5 86q0 40 -13.5 61.5q-13.5 21.5 -50.5 21.5q-24 0 -47 -20q-23 -20 -41 -52.5q-18 -32.5 -29 -74.5q-11 -42 -11 -85zt0 0zM162 631q0 33 18.5 51.5q18.5 18.5 47.5 18.5q29 0 47.5 -18.5q18.5 -18.5 18.5 -51.5q0 -32 -18.5 -50q-18.5 -18 -47.5 -18q-29 0 -47.5 18q-18.5 18 -18.5 50zt0 0zM370 632q0 32 18.5 50.5q18.5 18.5 47.5 18.5q29 0 47.5 -18.5q18.5 -18.5 18.5 -50.5q0 -32 -18.5 -50.5q-18.5 -18.5 -47.5 -18.5q-29 0 -47.5 18.5t-18.5 50.5z" />
-<glyph unicode="&#1256;" horiz-adv-x="644" d="M58 262q0 93 24.5 175.5q24.5 82.5 71 144q46.5 61.5 112 97q65.5 35.5 148.5 35.5q53 0 97.5 -16q44.5 -16 76 -49.5q31.5 -33.5 49 -84.5q17.5 -51 17.5 -121q0 -94 -25 -177q-25 -83 -70.5 -145.5q-45.5 -62.5 -109 -98.5q-63.5 -36 -141.5 -36q-118 0 -183.5 69.5q-65.5 69.5 -66.5 206.5zt0 0zM196 296q-1 -8 -1 -15q0 -7 0 -15q0 -72 29.5 -115q29.5 -43 92.5 -43q32 0 60 14q28 14 51 39.5q23 25.5 40.5 59.5q17.5 34 28.5 75zM516 407q0 8 0.5 16.5q0.5 8.5 0.5 17.5q0 79 -33 115q-33 36 -87 36q-32 0 -60.5 -13.5q-28.5 -13.5 -51.5 -38.5q-23 -25 -41 -59q-18 -34 -30 -74z" />
-<glyph unicode="&#1257;" horiz-adv-x="496" d="M34 162q0 79 22.5 144q22.5 65 60.5 111q38 46 87.5 71.5q49.5 25.5 103.5 25.5q48 0 81 -15q33 -15 53 -40q20 -25 29 -57q9 -32 9 -66q0 -78 -22 -142.5q-22 -64.5 -59.5 -110.5q-37.5 -46 -86.5 -71.5q-49 -25.5 -103 -25.5q-47 0 -80 15.5q-33 15.5 -54 40.5q-21 25 -31 56.5q-10 31.5 -10 63.5zt0 0zM350 289q3 19 3 39q0 40 -13.5 61.5q-13.5 21.5 -50.5 21.5q-16 0 -32 -9.5q-16 -9.5 -30 -26q-14 -16.5 -26.5 -38.5q-12.5 -22 -21.5 -48zM162 208q-1 -8 -1 -15q0 -7 0 -14q0 -90 65 -90q32 0 60 34q28 34 46 85z" />
-<glyph unicode="&#1258;" horiz-adv-x="644" d="M58 262q0 93 24.5 175.5q24.5 82.5 71 144q46.5 61.5 112 97q65.5 35.5 148.5 35.5q53 0 97.5 -16q44.5 -16 76 -49.5q31.5 -33.5 49 -84.5q17.5 -51 17.5 -121q0 -94 -25 -177q-25 -83 -70.5 -145.5q-45.5 -62.5 -109 -98.5q-63.5 -36 -141.5 -36q-118 0 -183.5 69.5q-65.5 69.5 -66.5 206.5zt0 0zM196 296q-1 -8 -1 -15q0 -7 0 -15q0 -72 29.5 -115q29.5 -43 92.5 -43q32 0 60 14q28 14 51 39.5q23 25.5 40.5 59.5q17.5 34 28.5 75zM516 407q0 8 0.5 16.5q0.5 8.5 0.5 17.5q0 79 -33 115q-33 36 -87 36q-32 0 -60.5 -13.5q-28.5 -13.5 -51.5 -38.5q-23 -25 -41 -59q-18 -34 -30 -74zM275 798q0 29 20 43.5q20 14.5 52 14.5q32 0 52 -14.5q20 -14.5 20 -43.5q0 -29 -20 -43q-20 -14 -52 -14q-32 0 -52 14q-20 14 -20 43zt0 0zM479 798q0 29 20 43.5q20 14.5 52 14.5q32 0 52 -14.5q20 -14.5 20 -43.5q0 -29 -20 -43q-20 -14 -52 -14q-32 0 -52 14t-20 43z" />
-<glyph unicode="&#1259;" horiz-adv-x="496" d="M34 162q0 79 22.5 144q22.5 65 60.5 111q38 46 87.5 71.5q49.5 25.5 103.5 25.5q48 0 81 -15q33 -15 53 -40q20 -25 29 -57q9 -32 9 -66q0 -78 -22 -142.5q-22 -64.5 -59.5 -110.5q-37.5 -46 -86.5 -71.5q-49 -25.5 -103 -25.5q-47 0 -80 15.5q-33 15.5 -54 40.5q-21 25 -31 56.5q-10 31.5 -10 63.5zt0 0zM350 289q3 19 3 39q0 40 -13.5 61.5q-13.5 21.5 -50.5 21.5q-16 0 -32 -9.5q-16 -9.5 -30 -26q-14 -16.5 -26.5 -38.5q-12.5 -22 -21.5 -48zM162 208q-1 -8 -1 -15q0 -7 0 -14q0 -90 65 -90q32 0 60 34q28 34 46 85zM162 631q0 33 18.5 51.5q18.5 18.5 47.5 18.5q29 0 47.5 -18.5q18.5 -18.5 18.5 -51.5q0 -32 -18.5 -50q-18.5 -18 -47.5 -18q-29 0 -47.5 18q-18.5 18 -18.5 50zt0 0zM370 632q0 32 18.5 50.5q18.5 18.5 47.5 18.5q29 0 47.5 -18.5q18.5 -18.5 18.5 -50.5q0 -32 -18.5 -50.5q-18.5 -18.5 -47.5 -18.5q-29 0 -47.5 18.5t-18.5 50.5z" />
-<glyph unicode="&#1260;" horiz-adv-x="552" d="M176 410h251q3 38 -2 71.5q-5 33.5 -21.5 58q-16.5 24.5 -47 38.5q-30.5 14 -78.5 14q-50 0 -85 -11.5q-35 -11.5 -61 -25.5l-4 116q38 18 82.5 30.5q44.5 12.5 95.5 12.5q70 0 119.5 -22q49.5 -22 80 -59q30.5 -37 44.5 -84.5q14 -47.5 14 -99.5q0 -99 -24 -184q-24 -85 -73.5 -147q-49.5 -62 -125.5 -97q-76 -35 -180 -35q-26 0 -51.5 3q-25.5 3 -48.5 7.5q-23 4.5 -42 10.5q-19 6 -31 12l60 119q19 -11 54 -20.5q35 -9.5 83 -9.5q44 0 83 14q39 14 69 39.5q30 25.5 50.5 61q20.5 35.5 28.5 77.5l-263 0zM176 798q0 29 20 43.5q20 14.5 52 14.5q32 0 52 -14.5q20 -14.5 20 -43.5q0 -29 -20 -43q-20 -14 -52 -14q-32 0 -52 14q-20 14 -20 43zt0 0zM380 798q0 29 20 43.5q20 14.5 52 14.5q32 0 52 -14.5q20 -14.5 20 -43.5q0 -29 -20 -43q-20 -14 -52 -14q-32 0 -52 14t-20 43z" />
-<glyph unicode="&#1261;" horiz-adv-x="433" d="M115 296h177q1 8 1.5 16q0.5 8 0.5 14q0 44 -21 64.5q-21 20.5 -56 20.5q-46 0 -73.5 -8.5q-27.5 -8.5 -50.5 -19.5l-28 81q40 24 85.5 37q45.5 13 93.5 13q85 0 129 -45q44 -45 44 -126q0 -94 -23.5 -161.5q-23.5 -67.5 -62.5 -111q-39 -43.5 -90 -64q-51 -20.5 -107 -20.5q-48 0 -91 11.5q-43 11.5 -66 28.5l47 92q20 -13 49 -21q29 -8 60 -8q118 0 145 122l-179 0zM86 631q0 33 18.5 51.5q18.5 18.5 47.5 18.5q29 0 47.5 -18.5q18.5 -18.5 18.5 -51.5q0 -32 -18.5 -50q-18.5 -18 -47.5 -18q-29 0 -47.5 18q-18.5 18 -18.5 50zt0 0zM294 632q0 32 18.5 50.5q18.5 18.5 47.5 18.5q29 0 47.5 -18.5q18.5 -18.5 18.5 -50.5q0 -32 -18.5 -50.5q-18.5 -18.5 -47.5 -18.5q-29 0 -47.5 18.5t-18.5 50.5z" />
-<glyph unicode="&#1262;" horiz-adv-x="546" d="M315 391l1 -91h6l33 94l163 306h145l-280 -484q-33 -57 -59 -99q-26 -42 -51.5 -69.5q-25.5 -27.5 -54.5 -41q-29 -13.5 -68 -13.5q-61 0 -98 24l57 111q14 -8 26 -10.5q12 -2.5 27 -2.5q21 0 41 21.5q20 21.5 39 55.5l-140 508h143zM242 856h327l-19 -89l-326 0z" />
-<glyph unicode="&#1263;" horiz-adv-x="452" d="M216 219l1 -78h6l27 79l136 280h131l-240 -449q-30 -56 -56.5 -103q-26.5 -47 -53.5 -81q-27 -34 -56 -53q-29 -19 -62 -19q-44 0 -66 15l33 98q6 -3 12.5 -4q6.5 -1 12.5 -1q24 0 49 23q25 23 50 74l-94 500h141zM145 658h308l-19 -92l-308 0z" />
-<glyph unicode="&#1264;" horiz-adv-x="546" d="M315 391l1 -91h6l33 94l163 306h145l-280 -484q-33 -57 -59 -99q-26 -42 -51.5 -69.5q-25.5 -27.5 -54.5 -41q-29 -13.5 -68 -13.5q-61 0 -98 24l57 111q14 -8 26 -10.5q12 -2.5 27 -2.5q21 0 41 21.5q20 21.5 39 55.5l-140 508h143zM237 798q0 29 20 43.5q20 14.5 52 14.5q32 0 52 -14.5q20 -14.5 20 -43.5q0 -29 -20 -43q-20 -14 -52 -14q-32 0 -52 14q-20 14 -20 43zt0 0zM441 798q0 29 20 43.5q20 14.5 52 14.5q32 0 52 -14.5q20 -14.5 20 -43.5q0 -29 -20 -43q-20 -14 -52 -14q-32 0 -52 14t-20 43z" />
-<glyph unicode="&#1265;" horiz-adv-x="452" d="M216 219l1 -78h6l27 79l136 280h131l-240 -449q-30 -56 -56.5 -103q-26.5 -47 -53.5 -81q-27 -34 -56 -53q-29 -19 -62 -19q-44 0 -66 15l33 98q6 -3 12.5 -4q6.5 -1 12.5 -1q24 0 49 23q25 23 50 74l-94 500h141zM134 631q0 33 18.5 51.5q18.5 18.5 47.5 18.5q29 0 47.5 -18.5q18.5 -18.5 18.5 -51.5q0 -32 -18.5 -50q-18.5 -18 -47.5 -18q-29 0 -47.5 18q-18.5 18 -18.5 50zt0 0zM342 632q0 32 18.5 50.5q18.5 18.5 47.5 18.5q29 0 47.5 -18.5q18.5 -18.5 18.5 -50.5q0 -32 -18.5 -50.5q-18.5 -18.5 -47.5 -18.5q-29 0 -47.5 18.5t-18.5 50.5z" />
-<glyph unicode="&#1266;" horiz-adv-x="546" d="M315 391l1 -91h6l33 94l163 306h145l-280 -484q-33 -57 -59 -99q-26 -42 -51.5 -69.5q-25.5 -27.5 -54.5 -41q-29 -13.5 -68 -13.5q-61 0 -98 24l57 111q14 -8 26 -10.5q12 -2.5 27 -2.5q21 0 41 21.5q20 21.5 39 55.5l-140 508h143zM329 850h126l-3 -16l-115 -93h-87zM517 850h132l-3 -16l-155 -93l-90 0z" />
-<glyph unicode="&#1267;" horiz-adv-x="452" d="M216 219l1 -78h6l27 79l136 280h131l-240 -449q-30 -56 -56.5 -103q-26.5 -47 -53.5 -81q-27 -34 -56 -53q-29 -19 -62 -19q-44 0 -66 15l33 98q6 -3 12.5 -4q6.5 -1 12.5 -1q24 0 49 23q25 23 50 74l-94 500h141zM241 700h112l-3 -16l-95 -113h-74zM410 700h120l-3 -16l-136 -113l-78 0z" />
-<glyph unicode="&#1268;" horiz-adv-x="583" d="M284 700l-46 -217q-3 -13 -3.5 -24q-0.5 -11 -0.5 -22q0 -39 18.5 -58q18.5 -19 60.5 -19q36 0 67.5 8q31.5 8 53.5 25l65 307h130l-148 -700h-130l60 282q-14 -7 -29 -14q-15 -7 -33 -13q-18 -6 -40.5 -9.5q-22.5 -3.5 -50.5 -3.5q-35 0 -64.5 9q-29.5 9 -51 28q-21.5 19 -33.5 48q-12 29 -12 68q0 31 7 63l51 242zM243 798q0 29 20 43.5q20 14.5 52 14.5q32 0 52 -14.5q20 -14.5 20 -43.5q0 -29 -20 -43q-20 -14 -52 -14q-32 0 -52 14q-20 14 -20 43zt0 0zM447 798q0 29 20 43.5q20 14.5 52 14.5q32 0 52 -14.5q20 -14.5 20 -43.5q0 -29 -20 -43q-20 -14 -52 -14q-32 0 -52 14t-20 43z" />
-<glyph unicode="&#1269;" horiz-adv-x="485" d="M219 500l-24 -114q-5 -21 -7.5 -38q-2.5 -17 -2.5 -31q0 -28 11.5 -42q11.5 -14 38.5 -14q29 0 50.5 9q21.5 9 35.5 20l46 210h123l-106 -500h-123l41 196q-17 -11 -48.5 -24.5q-31.5 -13.5 -79.5 -13.5q-26 0 -48 5.5q-22 5.5 -38.5 18.5q-16.5 13 -25.5 34q-9 21 -9 53q0 29 7 61l36 170zM149 631q0 33 18.5 51.5q18.5 18.5 47.5 18.5q29 0 47.5 -18.5q18.5 -18.5 18.5 -51.5q0 -32 -18.5 -50q-18.5 -18 -47.5 -18q-29 0 -47.5 18q-18.5 18 -18.5 50zt0 0zM357 632q0 32 18.5 50.5q18.5 18.5 47.5 18.5q29 0 47.5 -18.5q18.5 -18.5 18.5 -50.5q0 -32 -18.5 -50.5q-18.5 -18.5 -47.5 -18.5q-29 0 -47.5 18.5t-18.5 50.5z" />
-<glyph unicode="&#1270;" horiz-adv-x="436" d="M168 700h386l-26 -122h-256l-96 -456h83l-53 -247h-91l12 125l-107 0z" />
-<glyph unicode="&#1271;" horiz-adv-x="416" d="M260 9q-17 -11 -38.5 -17q-21.5 -6 -50.5 -6q-38 0 -67.5 11.5q-29.5 11.5 -49.5 31q-20 19.5 -30.5 44q-10.5 24.5 -10.5 50.5q0 47 19.5 78q19.5 31 48.5 50q29 19 63 31.5q34 12.5 63 23.5q29 11 48 24q19 13 19 35q0 23 -13 32.5q-13 9.5 -42 9.5q-45 0 -74 -8.5q-29 -8.5 -50 -18.5l-15 92q16 9 37.5 15.5q21.5 6.5 45.5 11.5q24 5 48.5 7.5q24.5 2.5 45.5 2.5q40 0 67.5 -9q27.5 -9 44.5 -24.5q17 -15.5 24.5 -36.5q7.5 -21 7.5 -45q0 -49 -19 -79.5q-19 -30.5 -48.5 -50.5q-29.5 -20 -63 -32q-33.5 -12 -62.5 -23.5q-29 -11.5 -48.5 -26.5q-19.5 -15 -19.5 -39q0 -26 19 -40q19 -14 48 -14q13 0 29.5 3q16.5 3 32.5 8q16 5 29.5 11q13.5 6 21.5 12l57 -53l-53 -184l-94 0z" />
-<glyph unicode="&#1272;" horiz-adv-x="765" d="M681 700h130l-148 -700h-130zM167 700h130l-53 -251q13 2 33 5q20 3 43 3q48 0 85.5 -13.5q37.5 -13.5 63 -38q25.5 -24.5 38.5 -58q13 -33.5 13 -73.5q0 -66 -22 -118.5q-22 -52.5 -64 -89.5q-42 -37 -103 -56.5q-61 -19.5 -139 -19.5q-13 0 -26 0q-13 0 -16 1q-18 0 -39 2q-21 2 -45.5 5q-24.5 3 -45.5 9zM173 118q21 -6 54 -6q33 0 61.5 9q28.5 9 49.5 26.5q21 17.5 33 42.5q12 25 12 58q0 87 -106 87q-13 0 -32 -2.5q-19 -2.5 -27 -5.5zM330 798q0 29 20 43.5q20 14.5 52 14.5q32 0 52 -14.5q20 -14.5 20 -43.5q0 -29 -20 -43q-20 -14 -52 -14q-32 0 -52 14q-20 14 -20 43zt0 0zM534 798q0 29 20 43.5q20 14.5 52 14.5q32 0 52 -14.5q20 -14.5 20 -43.5q0 -29 -20 -43q-20 -14 -52 -14q-32 0 -52 14t-20 43z" />
-<glyph unicode="&#1273;" horiz-adv-x="675" d="M166 142q-1 -4 -2 -7q-1 -3 -1 -7q0 -32 39 -32q21 0 40.5 7q19.5 7 34 19q14.5 12 23.5 28.5q9 16.5 9 36.5q0 28 -13.5 39.5q-13.5 11.5 -47.5 11.5q-18 0 -33.5 -3.5q-15.5 -3.5 -29.5 -8.5zM204 316q20 5 48 9q28 4 49 4q74 0 104.5 -30q30.5 -30 30.5 -78q0 -51 -21.5 -93q-21.5 -42 -57.5 -72q-36 -30 -84 -46.5q-48 -16.5 -101 -16.5q-71 0 -103.5 24.5q-32.5 24.5 -32.5 68.5q0 14 3 31l84 383h123zM557 500h123l-106 -500h-123zM249 631q0 33 18.5 51.5q18.5 18.5 47.5 18.5q29 0 47.5 -18.5q18.5 -18.5 18.5 -51.5q0 -32 -18.5 -50q-18.5 -18 -47.5 -18q-29 0 -47.5 18q-18.5 18 -18.5 50zt0 0zM457 632q0 32 18.5 50.5q18.5 18.5 47.5 18.5q29 0 47.5 -18.5q18.5 -18.5 18.5 -50.5q0 -32 -18.5 -50.5q-18.5 -18.5 -47.5 -18.5q-29 0 -47.5 18.5t-18.5 50.5z" />
-<glyph unicode="&#1276;" horiz-adv-x="608" d="M296 216l-163 -216h-157l279 357l-112 343h142l60 -202l10 -71l36 70l150 203h155l-262 -337l73 -213q15 -38 23.5 -72.5q8.5 -34.5 8.5 -76.5q0 -53 -13.5 -92.5q-13.5 -39.5 -38 -65q-24.5 -25.5 -59 -38q-34.5 -12.5 -75.5 -12.5q-34 0 -66 7l24 111q32 -3 51.5 3q19.5 6 30.5 18.5q11 12.5 15 30.5q4 18 4 39q0 8 -2.5 20.5q-2.5 12.5 -6 26.5q-3.5 14 -8 28q-4.5 14 -8.5 26l-42 113l-10 74z" />
-<glyph unicode="&#1277;" horiz-adv-x="496" d="M399 128q14 -32 20.5 -60.5q6.5 -28.5 6.5 -66.5q0 -49 -15.5 -87q-15.5 -38 -42.5 -64.5q-27 -26.5 -63.5 -40q-36.5 -13.5 -78.5 -13.5q-29 0 -57 6l21 102q50 -8 79.5 17q29.5 25 29.5 70q0 21 -3.5 39.5q-3.5 18.5 -11.5 39.5l-21 50l-18 72l-44 -72l-99 -120h-143l207 256l-90 244h140l38 -107l12 -70l44 70l86 107h144l-195 -240z" />
-<glyph unicode="&#1296;" horiz-adv-x="506" d="M392 309q-14 0 -19.5 0q-5.5 0 -17.5 -1q-40 -1 -73.5 -6q-33.5 -5 -58 -17q-24.5 -12 -38 -33.5q-13.5 -21.5 -13.5 -55.5q0 -45 32 -66.5q32 -21.5 79 -21.5q48 0 90 10.5q42 10.5 67 25.5l12 -108q-29 -21 -84.5 -35.5q-55.5 -14.5 -117.5 -14.5q-41 0 -79.5 11q-38.5 11 -68.5 33.5q-30 22.5 -48.5 57.5q-18.5 35 -18.5 83q0 48 15 84q15 36 40 61q25 25 56 39q31 14 63 18l0 6q-33 14 -56.5 44q-23.5 30 -23.5 83q0 56 24.5 95.5q24.5 39.5 63 64q38.5 24.5 85.5 35.5q47 11 92 11q28 0 56 -4q28 -4 52.5 -10.5q24.5 -6.5 43.5 -14q19 -7.5 28 -14.5l-58 -110q-21 11 -55 21q-34 10 -68 10q-26 0 -49 -5q-23 -5 -40.5 -16q-17.5 -11 -27.5 -27.5q-10 -16.5 -10 -40.5q0 -37 20 -54q20 -17 52 -25q15 -5 39 -5q24 0 41 0h23l-23 -108z" />
-<glyph unicode="&#1297;" horiz-adv-x="423" d="M267 210q-61 0 -87 -18.5q-26 -18.5 -28 -44.5q-2 -24 14.5 -39.5q16.5 -15.5 58.5 -15.5q38 0 71 9q33 9 58 23l10 -90q-26 -19 -70 -32q-44 -13 -92 -13q-49 0 -83 9q-34 9 -55 26q-21 17 -30 40.5q-9 23.5 -9 53.5q0 52 31 90q31 38 88 56l0 4q-27 11 -40 35q-13 24 -13 55q0 31 13.5 58.5q13.5 27.5 38.5 48q25 20.5 60.5 32.5q35.5 12 79.5 12q59 0 100.5 -12.5q41.5 -12.5 66.5 -29.5l-47 -93q-15 11 -42 21.5q-27 10.5 -68 10.5q-36 0 -58 -17q-22 -17 -24 -44q-2 -23 14.5 -36q16.5 -13 49.5 -13h58l-19 -86z" />
-<glyph unicode="&#1298;" horiz-adv-x="600" d="M493 -21q-19 -91 -61.5 -138.5q-42.5 -47.5 -120.5 -47.5q-27 0 -60 6l23 112q25 -2 41 2.5q16 4.5 25.5 15q9.5 10.5 15.5 28.5q6 18 12 43l122 578h-140q-23 -95 -44 -174q-21 -79 -42 -142q-21 -63 -43.5 -110.5q-22.5 -47.5 -48.5 -80.5q-20 -24 -40 -39.5q-20 -15.5 -39 -24q-19 -8.5 -36.5 -11.5q-17.5 -3 -32.5 -3q-46 0 -72 14l39 118q11 -4 24 -4q16 0 31.5 8q15.5 8 31.5 28q18 20 37.5 62q19.5 42 41 108q21.5 66 45.5 158.5q24 92.5 51 214.5l123 0h140l130 0z" />
-<glyph unicode="&#1299;" horiz-adv-x="502" d="M507 500l-106 -500q-23 -106 -67.5 -157q-44.5 -51 -119.5 -51q-14 0 -28.5 1.5q-14.5 1.5 -30.5 5.5l23 109q24 -2 41 3q17 5 28 17q11 12 18.5 30.5q7.5 18.5 12.5 42.5l85 396h-92q-25 -93 -48.5 -167.5q-23.5 -74.5 -51.5 -127q-28 -52.5 -62.5 -80.5q-34.5 -28 -80.5 -28q-54 0 -75 15l38 108q17 -5 29 -5q20 1 37.5 18q17.5 17 36.5 60.5q19 43.5 40.5 118.5q21.5 75 49.5 191z" />
-<glyph unicode="&#1308;" horiz-adv-x="826" d="M249 310l-14 -124h5l39 126l198 388h88l29 -390l-13 -124h5l40 126l164 388h140l-333 -705h-91l-37 389l8 107h-6l-38 -108l-199 -388h-91l-34 705l137 0z" />
-<glyph unicode="&#1309;" horiz-adv-x="678" d="M445 500l32 -256l-1 -83h5l30 84l116 255h120l-255 -505h-91l-35 280v63h-4l-26 -64l-150 -279h-94l-46 505h126l16 -251l-6 -89h5l34 90l132 250z" />
-<glyph unicode="&#1316;" horiz-adv-x="655" d="M504 578h-232l-122 -578h-130l148 700h130h231h131l-122 -578h84l-53 -247h-91l12 125l-108 0z" />
-<glyph unicode="&#1317;" horiz-adv-x="546" d="M410 0h-116l66 310q6 28 6 49q0 22 -9 34.5q-9 12.5 -33 12.5q-18 0 -36 -9q-18 -9 -34 -24q-16 -15 -30 -33.5q-14 -18.5 -24 -37.5l-64 -302h-123l106 500h93l-5 -88h4q13 16 30.5 34q17.5 18 40.5 33q23 15 51.5 25q28.5 10 64.5 10q45 0 72 -24.5q27 -24.5 27 -81.5q0 -15 -1.5 -32q-1.5 -17 -6.5 -37l-51 -236h100l-64 -217l-94 0z" />
-<glyph unicode="&#1318;" horiz-adv-x="635" d="M520 122h84l-53 -247h-91l12 125h-107l47 219q2 12 3.5 22.5q1.5 10.5 1.5 20.5q0 78 -81 78q-37 0 -67 -9.5q-30 -9.5 -54 -24.5l-65 -306h-130l148 700h130l-60 -282q28 15 63.5 27.5q35.5 12.5 89.5 12.5q32 0 61 -8.5q29 -8.5 51.5 -27q22.5 -18.5 35.5 -47.5q13 -29 13 -71q0 -31 -7 -63z" />
-<glyph unicode="&#1319;" horiz-adv-x="544" d="M453 103h79l-64 -217h-94l30 114h-95l60 284q10 44 10 73q0 26 -10 37.5q-10 11.5 -31 11.5q-19 0 -40 -12q-21 -12 -40 -30q-19 -18 -34.5 -38.5q-15.5 -20.5 -23.5 -37.5l-59 -288h-123l148 700h123l-63 -288h4q13 16 31.5 34q18.5 18 41 33q22.5 15 49 25q26.5 10 57.5 10q48 0 74.5 -24q26.5 -24 26.5 -85q0 -37 -12 -94z" />
-<glyph unicode="&#7728;" horiz-adv-x="593" d="M260 299h-47l-63 -299h-130l148 700h130l-66 -310l31 11l237 299h156l-252 -297l-60 -35l44 -39l152 -329h-145zM436 870h157l-6 -30l-172 -88l-104 0z" />
-<glyph unicode="&#7729;" horiz-adv-x="465" d="M224 207h-40l-43 -207h-123l148 700h123l-88 -413l37 13l141 200h137l-149 -201l-60 -38l45 -38l76 -223h-132zM401 720h125l-6 -30l-133 -124l-69 0z" />
-<glyph unicode="&#7742;" horiz-adv-x="767" d="M613 363l44 138h-6l-66 -113l-197 -259h-41l-94 262l-18 110h-5l-10 -137l-77 -364h-123l148 700h115l105 -320l13 -80h5l46 82l236 318h125l-148 -700h-129zM543 870h157l-6 -30l-172 -88l-104 0z" />
-<glyph unicode="&#7743;" horiz-adv-x="767" d="M283 0l57 272q6 28 9.5 49.5q3.5 21.5 3.5 38.5q0 46 -35 46q-17 0 -34 -9q-17 -9 -31.5 -23q-14.5 -14 -27 -30.5q-12.5 -16.5 -20.5 -31.5l-64 -312h-123l106 500h96l-6 -88h4q15 16 32.5 34q17.5 18 39.5 33q22 15 49 25q27 10 59 10q40 0 60.5 -29q20.5 -29 18.5 -77q15 19 34.5 38q19.5 19 42 34q22.5 15 48 24.5q25.5 9.5 52.5 9.5q46 0 70.5 -21.5q24.5 -21.5 24.5 -80.5q0 -43 -15 -112l-63 -300h-123l59 281q5 23 8 43q3 20 3 35q0 23 -8.5 35q-8.5 12 -28.5 12q-16 0 -32.5 -9.5q-16.5 -9.5 -31.5 -24q-15 -14.5 -27.5 -31.5q-12.5 -17 -19.5 -32l-64 -309zM497 720h125l-6 -30l-133 -124l-69 0z" />
-<glyph unicode="&#7764;" horiz-adv-x="550" d="M167 693q42 8 89.5 12.5q47.5 4.5 95.5 4.5q51 0 94.5 -11.5q43.5 -11.5 76 -35.5q32.5 -24 50.5 -61.5q18 -37.5 18 -89.5q0 -78 -27 -130.5q-27 -52.5 -71.5 -85q-44.5 -32.5 -101.5 -46q-57 -13.5 -116 -13.5q-5 0 -15.5 0q-10.5 0 -22 0.5q-11.5 0.5 -22 1.5q-10.5 1 -15.5 2l-50 -241h-130zM226 359q4 -1 11 -2q7 -1 15.5 -1.5q8.5 -0.5 16 -0.5q7.5 0 11.5 0q34 0 65.5 7.5q31.5 7.5 55.5 24q24 16.5 38.5 43.5q14.5 27 14.5 66q0 29 -9.5 48q-9.5 19 -25.5 29.5q-16 10.5 -37.5 14.5q-21.5 4 -45.5 4q-18 0 -34.5 -1.5q-16.5 -1.5 -27.5 -3.5zM419 870h157l-6 -30l-172 -88l-104 0z" />
-<glyph unicode="&#7765;" horiz-adv-x="506" d="M122 500h91l-5 -88h4q14 19 32 37.5q18 18.5 40 32.5q22 14 47 23q25 9 54 9q51 0 82 -35q31 -35 31 -110q0 -85 -22.5 -155.5q-22.5 -70.5 -60 -121q-37.5 -50.5 -88 -78.5q-50.5 -28 -105.5 -28q-26 0 -49 5q-23 5 -34 13l-43 -204h-122zM160 106q25 -17 56 -17q31 0 59 21q28 21 49.5 56q21.5 35 34 81.5q12.5 46.5 12.5 97.5q0 29 -13.5 47.5q-13.5 18.5 -36.5 18.5q-18 0 -35 -9q-17 -9 -32 -22.5q-15 -13.5 -27 -30.5q-12 -17 -21 -33zM366 720h125l-6 -30l-133 -124l-69 0z" />
-<glyph unicode="&#7838;" horiz-adv-x="664" d="M489 570q-15 16 -42 25.5q-27 9.5 -64 9.5q-33 0 -56.5 -13q-23.5 -13 -39.5 -35.5q-16 -22.5 -26.5 -54q-10.5 -31.5 -18.5 -69.5l-93 -433h-129l101 478q12 57 33.5 100.5q21.5 43.5 55.5 73.5q34 30 82.5 45.5q48.5 15.5 114.5 15.5q51 0 90 -8.5q39 -8.5 69 -22q30 -13.5 52 -31q22 -17.5 40 -35.5l-168 -179l-41 -29l-1 -5l38 8q74 -6 109.5 -49q35.5 -43 35.5 -110q0 -65 -24 -114.5q-24 -49.5 -64 -83.5q-40 -34 -93.5 -51q-53.5 -17 -111.5 -17q-14 0 -34 2q-20 2 -40 6q-20 4 -37 9q-17 5 -25 10l52 114q9 -5 21.5 -8.5q12.5 -3.5 26.5 -5.5q14 -2 28 -3.5q14 -1.5 25 -1.5q24 0 49 7q25 7 45 22q20 15 32.5 38.5q12.5 23.5 12.5 55.5q0 47 -31.5 68q-31.5 21 -106.5 21h-51l18 83z" />
-<glyph unicode="&#8209;" horiz-adv-x="343" d="M81 340h239l-25 -104l-239 0z" />
-<glyph unicode="&#8211;" horiz-adv-x="627" d="M130 340h419l-25 -104l-419 0z" />
-<glyph unicode="&#8212;" horiz-adv-x="779" d="M130 340h571l-25 -104l-571 0z" />
-<glyph unicode="&#8216;" horiz-adv-x="215" d="M238 631q0 -39 -23 -58q-23 -19 -50 -19q-17 0 -29.5 6.5q-12.5 6.5 -20.5 17q-8 10.5 -12 23q-4 12.5 -4 25.5q0 40 17 71q17 31 40.5 52.5q23.5 21.5 47 34q23.5 12.5 37.5 15.5l19 -54q-20 -8 -37.5 -25.5q-17.5 -17.5 -23.5 -37.5q17 0 28 -15t11 -36z" />
-<glyph unicode="&#8217;" horiz-adv-x="215" d="M121 637q0 18 7.5 31.5q7.5 13.5 18.5 22.5q11 9 24 13.5q13 4.5 25 4.5q35 0 50 -18q15 -18 15 -49q0 -41 -15.5 -72q-15.5 -31 -38 -53q-22.5 -22 -47 -35q-24.5 -13 -42.5 -19l-19 55q21 9 38.5 24q17.5 15 24.5 38q-18 2 -30 16.5t-11 40.5z" />
-<glyph unicode="&#8218;" horiz-adv-x="226" d="M29 54q0 18 7.5 31.5q7.5 13.5 18.5 22.5q11 9 24 13.5q13 4.5 25 4.5q35 0 50 -18q15 -18 15 -49q0 -41 -15.5 -72q-15.5 -31 -38 -53q-22.5 -22 -47 -35q-24.5 -13 -42.5 -19l-19 55q21 9 38.5 24q17.5 15 24.5 38q-18 2 -30 16.5t-11 40.5z" />
-<glyph unicode="&#8220;" horiz-adv-x="379" d="M402 631q0 -39 -23 -58q-23 -19 -50 -19q-17 0 -29.5 6.5q-12.5 6.5 -20.5 17q-8 10.5 -12 23q-4 12.5 -4 25.5q0 40 17 71q17 31 40.5 52.5q23.5 21.5 47 34q23.5 12.5 37.5 15.5l19 -54q-20 -8 -37.5 -25.5q-17.5 -17.5 -23.5 -37.5q17 0 28 -15q11 -15 11 -36zt0 0zM238 631q0 -39 -23 -58q-23 -19 -50 -19q-17 0 -29.5 6.5q-12.5 6.5 -20.5 17q-8 10.5 -12 23q-4 12.5 -4 25.5q0 40 17 71q17 31 40.5 52.5q23.5 21.5 47 34q23.5 12.5 37.5 15.5l19 -54q-20 -8 -37.5 -25.5q-17.5 -17.5 -23.5 -37.5q17 0 28 -15t11 -36z" />
-<glyph unicode="&#8221;" horiz-adv-x="379" d="M284 637q0 18 7.5 31.5q7.5 13.5 18.5 22.5q11 9 24 13.5q13 4.5 25 4.5q35 0 50 -18q15 -18 15 -49q0 -41 -15.5 -72q-15.5 -31 -38 -53q-22.5 -22 -47 -35q-24.5 -13 -42.5 -19l-19 55q21 9 38.5 24q17.5 15 24.5 38q-18 2 -30 16.5q-12 14.5 -11 40.5zt0 0zM121 637q0 18 7.5 31.5q7.5 13.5 18.5 22.5q11 9 24 13.5q13 4.5 25 4.5q35 0 50 -18q15 -18 15 -49q0 -41 -15.5 -72q-15.5 -31 -38 -53q-22.5 -22 -47 -35q-24.5 -13 -42.5 -19l-19 55q21 9 38.5 24q17.5 15 24.5 38q-18 2 -30 16.5t-11 40.5z" />
-<glyph unicode="&#8222;" horiz-adv-x="389" d="M192 54q0 18 7.5 31.5q7.5 13.5 18.5 22.5q11 9 24 13.5q13 4.5 25 4.5q35 0 50 -18q15 -18 15 -49q0 -41 -15.5 -72q-15.5 -31 -38 -53q-22.5 -22 -47 -35q-24.5 -13 -42.5 -19l-19 55q21 9 38.5 24q17.5 15 24.5 38q-18 2 -30 16.5q-12 14.5 -11 40.5zt0 0zM29 54q0 18 7.5 31.5q7.5 13.5 18.5 22.5q11 9 24 13.5q13 4.5 25 4.5q35 0 50 -18q15 -18 15 -49q0 -41 -15.5 -72q-15.5 -31 -38 -53q-22.5 -22 -47 -35q-24.5 -13 -42.5 -19l-19 55q21 9 38.5 24q17.5 15 24.5 38q-18 2 -30 16.5t-11 40.5z" />
-<glyph unicode="&#8224;" horiz-adv-x="490" d="M111 513h110l46 -16l-4 54l32 149h117l-32 -149l-26 -54l53 16h110l-24 -113h-112l-44 16l5 -49l-78 -367l-58 -200h-87l28 201l78 366l24 49l-51 -16l-111 0z" />
-<glyph unicode="&#8225;" horiz-adv-x="490" d="M225 371l24 44l-51 -15h-111l24 113h110l46 -15l-4 50l32 152h117l-32 -152l-25 -50l52 15h110l-24 -113h-112l-44 15l5 -44l-17 -84l-25 -45l50 15h112l-23 -113h-111l-45 15l4 -49l-23 -110l-59 -200h-85l27 201l23 109l25 49l-52 -15h-111l24 113h110l46 -15l-4 45z" />
-<glyph unicode="&#8226;" horiz-adv-x="452" d="M98 311q0 34 12 62q12 28 32.5 48q20.5 20 48 31.5q27.5 11.5 59.5 11.5q32 0 60 -10.5q28 -10.5 48.5 -30q20.5 -19.5 32.5 -48q12 -28.5 12 -64.5q0 -36 -12 -64q-12 -28 -32.5 -47.5q-20.5 -19.5 -48.5 -30q-28 -10.5 -60 -10.5q-32 0 -59.5 10.5q-27.5 10.5 -48 30q-20.5 19.5 -32.5 47.5t-12 64z" />
-<glyph unicode="&#8230;" horiz-adv-x="769" d="M535 66q0 35 22 55.5q22 20.5 58 20.5q37 0 59 -20.5q22 -20.5 22 -55.5q0 -35 -22 -56q-22 -21 -59 -21q-36 0 -58 21q-22 21 -22 56zt0 0zM276 66q0 35 22 55.5q22 20.5 58 20.5q37 0 59 -20.5q22 -20.5 22 -55.5q0 -35 -22 -56q-22 -21 -59 -21q-36 0 -58 21q-22 21 -22 56zt0 0zM18 66q0 35 22 55.5q22 20.5 58 20.5q37 0 59 -20.5q22 -20.5 22 -55.5q0 -35 -22 -56q-22 -21 -59 -21q-36 0 -58 21t-22 56z" />
-<glyph unicode="&#8240;" horiz-adv-x="1144" d="M54 499q0 54 18.5 94q18.5 40 48.5 66.5q30 26.5 66.5 39.5q36.5 13 72.5 13q66 0 100.5 -30.5q34.5 -30.5 34.5 -89.5q0 -57 -17 -98.5q-17 -41.5 -46 -68.5q-29 -27 -66.5 -40q-37.5 -13 -77.5 -13q-62 0 -98 34.5q-36 34.5 -36 92.5zt0 0zM164 505q-1 -22 10 -35.5q11 -13.5 32 -13.5q33 0 56 34.5q23 34.5 23 88.5q0 49 -43 49q-17 0 -31 -10q-14 -10 -25 -26.5q-11 -16.5 -17 -39q-6 -22.5 -5 -47.5zt0 0zM391 127q0 54 18.5 94q18.5 40 48.5 66.5q30 26.5 66.5 39.5q36.5 13 72.5 13q66 0 100.5 -30.5q34.5 -30.5 34.5 -89.5q0 -57 -17 -98.5q-17 -41.5 -46 -68.5q-29 -27 -66.5 -40q-37.5 -13 -77.5 -13q-62 0 -98 34.5q-36 34.5 -36 92.5zt0 0zM501 133q-1 -22 10 -35.5q11 -13.5 32 -13.5q33 0 56 34.5q23 34.5 23 88.5q0 49 -43 49q-17 0 -31 -10q-14 -10 -25 -26.5q-11 -16.5 -17 -39q-6 -22.5 -5 -47.5zt0 0zM760 127q0 54 18.5 94q18.5 40 48.5 66.5q30 26.5 66.5 39.5q36.5 13 72.5 13q66 0 100.5 -30.5q34.5 -30.5 34.5 -89.5q0 -57 -17 -98.5q-17 -41.5 -46 -68.5q-29 -27 -66.5 -40q-37.5 -13 -77.5 -13q-62 0 -98 34.5q-36 34.5 -36 92.5zt0 0zM870 133q-1 -22 10 -35.5q11 -13.5 32 -13.5q33 0 56 34.5q23 34.5 23 88.5q0 49 -43 49q-17 0 -31 -10q-14 -10 -25 -26.5q-11 -16.5 -17 -39q-6 -22.5 -5 -47.5zt0 0zM641 714l73 -66l-576 -662l-73 69z" />
-<glyph unicode="&#8249;" horiz-adv-x="293" d="M32 259l200 230l60 -64l-106 -126l-55 -39l36 -37l60 -123l-84 -62z" />
-<glyph unicode="&#8250;" horiz-adv-x="293" d="M293 268l-200 -230l-62 61l108 127l55 41l-35 39l-62 124l86 59z" />
-<glyph unicode="&#8260;" horiz-adv-x="184" d="M293 715l85 -50l-430 -679l-86 53z" />
-<glyph unicode="&#8321;" horiz-adv-x="402" d="M38 0h93l35 164l19 46l-35 -32l-63 -37l-34 73l175 113h82l-70 -327h83l-21 -100l-285 0z" />
-<glyph unicode="&#8322;" horiz-adv-x="402" d="M344 227q-1 -60 -37.5 -110q-36.5 -50 -101.5 -98l-50 -25v-4l57 11h101l-22 -101h-297l16 71q29 18 67 44q38 26 71.5 55q33.5 29 56.5 59.5q23 30.5 24 57.5q0 18 -9.5 28q-9.5 10 -35.5 10q-26 0 -51 -9q-25 -9 -44 -19l-14 90q37 21 76.5 30.5q39.5 9.5 73.5 9.5q57 0 88 -26t31 -74z" />
-<glyph unicode="&#8323;" horiz-adv-x="402" d="M125 -12q49 0 70 18.5q21 18.5 20 41.5q0 21 -14 30q-14 9 -63 10l-41 0l8 38l85 81l46 24l-56 -6h-108l21 95h269l-14 -62l-102 -93l-35 -17v-5l27 3q37 -2 61 -26q24 -24 24 -63q0 -42 -15.5 -73q-15.5 -31 -42.5 -51q-27 -20 -64 -30q-37 -10 -80 -10q-36 0 -67.5 6.5q-31.5 6.5 -51.5 17.5l40 90q40 -19 83 -19z" />
-<glyph unicode="&#8324;" horiz-adv-x="402" d="M345 -22h-72l-17 -78h-96l17 78h-196l14 67l265 283h87l-55 -261h72zM214 153l17 53h-5l-31 -49l-60 -66l-41 -32l52 8l50 0z" />
-<glyph unicode="&#8364;" horiz-adv-x="545" d="M45 324h65q4 30 10 58l-95 0l52 93h72q33 76 84 128q56 58 123 84.5q67 26.5 127 26.5q49 0 85 -9.5q36 -9.5 60 -23.5l-53 -90q-18 9 -44.5 14q-26.5 5 -63.5 5q-39 0 -82.5 -21q-43.5 -21 -80.5 -64q-19 -22 -34 -50l254 0l-46 -93h-244q-6 -27 -10 -58l222 0l-46 -93h-178q2 -22 6 -41q7 -31 24.5 -53.5q17.5 -22.5 46 -34.5q28.5 -12 72.5 -12q37 0 67 9q30 9 56 23l17 -91q-34 -22 -83 -33.5q-49 -11.5 -97 -11.5q-59 0 -101.5 18.5q-42.5 18.5 -70.5 51.5q-28 33 -41 78q-13 44 -13 97l-111 0z" />
-<glyph unicode="&#8372;" horiz-adv-x="545" d="M511 321l-20 -91h-236q-17 -15 -34 -39q-17 -24 -17 -47q0 -11 3.5 -20.5q3.5 -9.5 12.5 -17.5q9 -8 24.5 -12q15.5 -4 40.5 -4q50 0 82 10q32 10 56 22l6 -98q-26 -14 -71.5 -26q-45.5 -12 -120.5 -12q-76 0 -117 32q-41 32 -41 90q0 20 6.5 39.5q6.5 19.5 15 36q8.5 16.5 17.5 28.5q9 12 15 18l-69 0l20 91zM95 379l20 91h237q17 14 34.5 38.5q17.5 24.5 17.5 53.5q0 22 -14 35q-14 13 -49 13q-38 0 -67 -8.5q-29 -8.5 -54 -20.5l-15 97q18 8 34.5 14.5q16.5 6.5 36 11.5q19.5 5 44.5 7.5q25 2.5 59 2.5q78 0 113.5 -29.5q35.5 -29.5 35.5 -81.5q0 -26 -6 -46.5q-6 -20.5 -15 -37q-9 -16.5 -19.5 -28.5q-10.5 -12 -19.5 -21l74 0l-20 -91z" />
-<glyph unicode="&#8374;" horiz-adv-x="545" d="M68 364h76l70 329q44 8 86 12.5q42 4.5 93 4.5q45 0 83 -10.5q38 -10.5 65.5 -32.5q27.5 -22 43 -55.5q15.5 -33.5 15.5 -78.5q0 -73 -26.5 -122.5q-26.5 -49.5 -68.5 -80.5q-42 -31 -93.5 -44.5q-51.5 -13.5 -100.5 -13.5h-68l-12 -57h155l-19 -91h-155l-26 -124h-119l26 124h-77l20 91h77l12 58h-78zM380 600q-20 0 -38 -1.5q-18 -1.5 -30 -3.5l-48 -228h52q27 0 55.5 8q28.5 8 52 24.5q23.5 16.5 38 42q14.5 25.5 14.5 61.5q0 48 -22 72.5t-74 24.5z" />
-<glyph unicode="&#8375;" horiz-adv-x="545" d="M68 364h76l70 329q44 8 86 12.5q42 4.5 93 4.5q45 0 83 -10.5q38 -10.5 65.5 -32.5q27.5 -22 43 -55.5q15.5 -33.5 15.5 -78.5q0 -73 -26.5 -122.5q-26.5 -49.5 -68.5 -80.5q-42 -31 -93.5 -44.5q-51.5 -13.5 -100.5 -13.5h-68l-12 -57h155l-19 -91h-155l-26 -124h-119l26 124h-77l20 91h77l12 58h-78zM380 600q-20 0 -38 -1.5q-18 -1.5 -30 -3.5l-48 -228h52q27 0 55.5 8q28.5 8 52 24.5q23.5 16.5 38 42q14.5 25.5 14.5 61.5q0 48 -22 72.5t-74 24.5z" />
-<glyph unicode="&#8377;" horiz-adv-x="545" d="M68 364h76l70 329q44 8 86 12.5q42 4.5 93 4.5q45 0 83 -10.5q38 -10.5 65.5 -32.5q27.5 -22 43 -55.5q15.5 -33.5 15.5 -78.5q0 -73 -26.5 -122.5q-26.5 -49.5 -68.5 -80.5q-42 -31 -93.5 -44.5q-51.5 -13.5 -100.5 -13.5h-68l-12 -57h155l-19 -91h-155l-26 -124h-119l26 124h-77l20 91h77l12 58h-78zM380 600q-20 0 -38 -1.5q-18 -1.5 -30 -3.5l-48 -228h52q27 0 55.5 8q28.5 8 52 24.5q23.5 16.5 38 42q14.5 25.5 14.5 61.5q0 48 -22 72.5t-74 24.5z" />
-<glyph unicode="&#8378;" horiz-adv-x="545" d="M68 364h76l70 329q44 8 86 12.5q42 4.5 93 4.5q45 0 83 -10.5q38 -10.5 65.5 -32.5q27.5 -22 43 -55.5q15.5 -33.5 15.5 -78.5q0 -73 -26.5 -122.5q-26.5 -49.5 -68.5 -80.5q-42 -31 -93.5 -44.5q-51.5 -13.5 -100.5 -13.5h-68l-12 -57h155l-19 -91h-155l-26 -124h-119l26 124h-77l20 91h77l12 58h-78zM380 600q-20 0 -38 -1.5q-18 -1.5 -30 -3.5l-48 -228h52q27 0 55.5 8q28.5 8 52 24.5q23.5 16.5 38 42q14.5 25.5 14.5 61.5q0 48 -22 72.5t-74 24.5z" />
-<glyph unicode="&#8379;" horiz-adv-x="545" d="M68 364h76l70 329q44 8 86 12.5q42 4.5 93 4.5q45 0 83 -10.5q38 -10.5 65.5 -32.5q27.5 -22 43 -55.5q15.5 -33.5 15.5 -78.5q0 -73 -26.5 -122.5q-26.5 -49.5 -68.5 -80.5q-42 -31 -93.5 -44.5q-51.5 -13.5 -100.5 -13.5h-68l-12 -57h155l-19 -91h-155l-26 -124h-119l26 124h-77l20 91h77l12 58h-78zM380 600q-20 0 -38 -1.5q-18 -1.5 -30 -3.5l-48 -228h52q27 0 55.5 8q28.5 8 52 24.5q23.5 16.5 38 42q14.5 25.5 14.5 61.5q0 48 -22 72.5t-74 24.5z" />
-<glyph unicode="&#8380;" horiz-adv-x="545" d="M68 364h76l70 329q44 8 86 12.5q42 4.5 93 4.5q45 0 83 -10.5q38 -10.5 65.5 -32.5q27.5 -22 43 -55.5q15.5 -33.5 15.5 -78.5q0 -73 -26.5 -122.5q-26.5 -49.5 -68.5 -80.5q-42 -31 -93.5 -44.5q-51.5 -13.5 -100.5 -13.5h-68l-12 -57h155l-19 -91h-155l-26 -124h-119l26 124h-77l20 91h77l12 58h-78zM380 600q-20 0 -38 -1.5q-18 -1.5 -30 -3.5l-48 -228h52q27 0 55.5 8q28.5 8 52 24.5q23.5 16.5 38 42q14.5 25.5 14.5 61.5q0 48 -22 72.5t-74 24.5z" />
-<glyph unicode="&#8381;" horiz-adv-x="545" d="M68 364h76l70 329q44 8 86 12.5q42 4.5 93 4.5q45 0 83 -10.5q38 -10.5 65.5 -32.5q27.5 -22 43 -55.5q15.5 -33.5 15.5 -78.5q0 -73 -26.5 -122.5q-26.5 -49.5 -68.5 -80.5q-42 -31 -93.5 -44.5q-51.5 -13.5 -100.5 -13.5h-68l-12 -57h155l-19 -91h-155l-26 -124h-119l26 124h-77l20 91h77l12 58h-78zM380 600q-20 0 -38 -1.5q-18 -1.5 -30 -3.5l-48 -228h52q27 0 55.5 8q28.5 8 52 24.5q23.5 16.5 38 42q14.5 25.5 14.5 61.5q0 48 -22 72.5t-74 24.5z" />
-<glyph unicode="&#8382;" horiz-adv-x="545" d="M68 364h76l70 329q44 8 86 12.5q42 4.5 93 4.5q45 0 83 -10.5q38 -10.5 65.5 -32.5q27.5 -22 43 -55.5q15.5 -33.5 15.5 -78.5q0 -73 -26.5 -122.5q-26.5 -49.5 -68.5 -80.5q-42 -31 -93.5 -44.5q-51.5 -13.5 -100.5 -13.5h-68l-12 -57h155l-19 -91h-155l-26 -124h-119l26 124h-77l20 91h77l12 58h-78zM380 600q-20 0 -38 -1.5q-18 -1.5 -30 -3.5l-48 -228h52q27 0 55.5 8q28.5 8 52 24.5q23.5 16.5 38 42q14.5 25.5 14.5 61.5q0 48 -22 72.5t-74 24.5z" />
-<glyph unicode="&#8383;" horiz-adv-x="545" d="M68 364h76l70 329q44 8 86 12.5q42 4.5 93 4.5q45 0 83 -10.5q38 -10.5 65.5 -32.5q27.5 -22 43 -55.5q15.5 -33.5 15.5 -78.5q0 -73 -26.5 -122.5q-26.5 -49.5 -68.5 -80.5q-42 -31 -93.5 -44.5q-51.5 -13.5 -100.5 -13.5h-68l-12 -57h155l-19 -91h-155l-26 -124h-119l26 124h-77l20 91h77l12 58h-78zM380 600q-20 0 -38 -1.5q-18 -1.5 -30 -3.5l-48 -228h52q27 0 55.5 8q28.5 8 52 24.5q23.5 16.5 38 42q14.5 25.5 14.5 61.5q0 48 -22 72.5t-74 24.5z" />
-<glyph unicode="&#8384;" horiz-adv-x="545" d="M68 364h76l70 329q44 8 86 12.5q42 4.5 93 4.5q45 0 83 -10.5q38 -10.5 65.5 -32.5q27.5 -22 43 -55.5q15.5 -33.5 15.5 -78.5q0 -73 -26.5 -122.5q-26.5 -49.5 -68.5 -80.5q-42 -31 -93.5 -44.5q-51.5 -13.5 -100.5 -13.5h-68l-12 -57h155l-19 -91h-155l-26 -124h-119l26 124h-77l20 91h77l12 58h-78zM380 600q-20 0 -38 -1.5q-18 -1.5 -30 -3.5l-48 -228h52q27 0 55.5 8q28.5 8 52 24.5q23.5 16.5 38 42q14.5 25.5 14.5 61.5q0 48 -22 72.5t-74 24.5z" />
-<glyph unicode="&#8385;" horiz-adv-x="545" d="M68 364h76l70 329q44 8 86 12.5q42 4.5 93 4.5q45 0 83 -10.5q38 -10.5 65.5 -32.5q27.5 -22 43 -55.5q15.5 -33.5 15.5 -78.5q0 -73 -26.5 -122.5q-26.5 -49.5 -68.5 -80.5q-42 -31 -93.5 -44.5q-51.5 -13.5 -100.5 -13.5h-68l-12 -57h155l-19 -91h-155l-26 -124h-119l26 124h-77l20 91h77l12 58h-78zM380 600q-20 0 -38 -1.5q-18 -1.5 -30 -3.5l-48 -228h52q27 0 55.5 8q28.5 8 52 24.5q23.5 16.5 38 42q14.5 25.5 14.5 61.5q0 48 -22 72.5t-74 24.5z" />
-<glyph unicode="&#8386;" horiz-adv-x="545" d="M68 364h76l70 329q44 8 86 12.5q42 4.5 93 4.5q45 0 83 -10.5q38 -10.5 65.5 -32.5q27.5 -22 43 -55.5q15.5 -33.5 15.5 -78.5q0 -73 -26.5 -122.5q-26.5 -49.5 -68.5 -80.5q-42 -31 -93.5 -44.5q-51.5 -13.5 -100.5 -13.5h-68l-12 -57h155l-19 -91h-155l-26 -124h-119l26 124h-77l20 91h77l12 58h-78zM380 600q-20 0 -38 -1.5q-18 -1.5 -30 -3.5l-48 -228h52q27 0 55.5 8q28.5 8 52 24.5q23.5 16.5 38 42q14.5 25.5 14.5 61.5q0 48 -22 72.5t-74 24.5z" />
-<glyph unicode="&#8387;" horiz-adv-x="545" d="M68 364h76l70 329q44 8 86 12.5q42 4.5 93 4.5q45 0 83 -10.5q38 -10.5 65.5 -32.5q27.5 -22 43 -55.5q15.5 -33.5 15.5 -78.5q0 -73 -26.5 -122.5q-26.5 -49.5 -68.5 -80.5q-42 -31 -93.5 -44.5q-51.5 -13.5 -100.5 -13.5h-68l-12 -57h155l-19 -91h-155l-26 -124h-119l26 124h-77l20 91h77l12 58h-78zM380 600q-20 0 -38 -1.5q-18 -1.5 -30 -3.5l-48 -228h52q27 0 55.5 8q28.5 8 52 24.5q23.5 16.5 38 42q14.5 25.5 14.5 61.5q0 48 -22 72.5t-74 24.5z" />
-<glyph unicode="&#8388;" horiz-adv-x="545" d="M68 364h76l70 329q44 8 86 12.5q42 4.5 93 4.5q45 0 83 -10.5q38 -10.5 65.5 -32.5q27.5 -22 43 -55.5q15.5 -33.5 15.5 -78.5q0 -73 -26.5 -122.5q-26.5 -49.5 -68.5 -80.5q-42 -31 -93.5 -44.5q-51.5 -13.5 -100.5 -13.5h-68l-12 -57h155l-19 -91h-155l-26 -124h-119l26 124h-77l20 91h77l12 58h-78zM380 600q-20 0 -38 -1.5q-18 -1.5 -30 -3.5l-48 -228h52q27 0 55.5 8q28.5 8 52 24.5q23.5 16.5 38 42q14.5 25.5 14.5 61.5q0 48 -22 72.5t-74 24.5z" />
-<glyph unicode="&#8389;" horiz-adv-x="545" d="M68 364h76l70 329q44 8 86 12.5q42 4.5 93 4.5q45 0 83 -10.5q38 -10.5 65.5 -32.5q27.5 -22 43 -55.5q15.5 -33.5 15.5 -78.5q0 -73 -26.5 -122.5q-26.5 -49.5 -68.5 -80.5q-42 -31 -93.5 -44.5q-51.5 -13.5 -100.5 -13.5h-68l-12 -57h155l-19 -91h-155l-26 -124h-119l26 124h-77l20 91h77l12 58h-78zM380 600q-20 0 -38 -1.5q-18 -1.5 -30 -3.5l-48 -228h52q27 0 55.5 8q28.5 8 52 24.5q23.5 16.5 38 42q14.5 25.5 14.5 61.5q0 48 -22 72.5t-74 24.5z" />
-<glyph unicode="&#8390;" horiz-adv-x="545" d="M68 364h76l70 329q44 8 86 12.5q42 4.5 93 4.5q45 0 83 -10.5q38 -10.5 65.5 -32.5q27.5 -22 43 -55.5q15.5 -33.5 15.5 -78.5q0 -73 -26.5 -122.5q-26.5 -49.5 -68.5 -80.5q-42 -31 -93.5 -44.5q-51.5 -13.5 -100.5 -13.5h-68l-12 -57h155l-19 -91h-155l-26 -124h-119l26 124h-77l20 91h77l12 58h-78zM380 600q-20 0 -38 -1.5q-18 -1.5 -30 -3.5l-48 -228h52q27 0 55.5 8q28.5 8 52 24.5q23.5 16.5 38 42q14.5 25.5 14.5 61.5q0 48 -22 72.5t-74 24.5z" />
-<glyph unicode="&#8391;" horiz-adv-x="545" d="M68 364h76l70 329q44 8 86 12.5q42 4.5 93 4.5q45 0 83 -10.5q38 -10.5 65.5 -32.5q27.5 -22 43 -55.5q15.5 -33.5 15.5 -78.5q0 -73 -26.5 -122.5q-26.5 -49.5 -68.5 -80.5q-42 -31 -93.5 -44.5q-51.5 -13.5 -100.5 -13.5h-68l-12 -57h155l-19 -91h-155l-26 -124h-119l26 124h-77l20 91h77l12 58h-78zM380 600q-20 0 -38 -1.5q-18 -1.5 -30 -3.5l-48 -228h52q27 0 55.5 8q28.5 8 52 24.5q23.5 16.5 38 42q14.5 25.5 14.5 61.5q0 48 -22 72.5t-74 24.5z" />
-<glyph unicode="&#8392;" horiz-adv-x="545" d="M68 364h76l70 329q44 8 86 12.5q42 4.5 93 4.5q45 0 83 -10.5q38 -10.5 65.5 -32.5q27.5 -22 43 -55.5q15.5 -33.5 15.5 -78.5q0 -73 -26.5 -122.5q-26.5 -49.5 -68.5 -80.5q-42 -31 -93.5 -44.5q-51.5 -13.5 -100.5 -13.5h-68l-12 -57h155l-19 -91h-155l-26 -124h-119l26 124h-77l20 91h77l12 58h-78zM380 600q-20 0 -38 -1.5q-18 -1.5 -30 -3.5l-48 -228h52q27 0 55.5 8q28.5 8 52 24.5q23.5 16.5 38 42q14.5 25.5 14.5 61.5q0 48 -22 72.5t-74 24.5z" />
-<glyph unicode="&#8393;" horiz-adv-x="545" d="M68 364h76l70 329q44 8 86 12.5q42 4.5 93 4.5q45 0 83 -10.5q38 -10.5 65.5 -32.5q27.5 -22 43 -55.5q15.5 -33.5 15.5 -78.5q0 -73 -26.5 -122.5q-26.5 -49.5 -68.5 -80.5q-42 -31 -93.5 -44.5q-51.5 -13.5 -100.5 -13.5h-68l-12 -57h155l-19 -91h-155l-26 -124h-119l26 124h-77l20 91h77l12 58h-78zM380 600q-20 0 -38 -1.5q-18 -1.5 -30 -3.5l-48 -228h52q27 0 55.5 8q28.5 8 52 24.5q23.5 16.5 38 42q14.5 25.5 14.5 61.5q0 48 -22 72.5t-74 24.5z" />
-<glyph unicode="&#8394;" horiz-adv-x="545" d="M68 364h76l70 329q44 8 86 12.5q42 4.5 93 4.5q45 0 83 -10.5q38 -10.5 65.5 -32.5q27.5 -22 43 -55.5q15.5 -33.5 15.5 -78.5q0 -73 -26.5 -122.5q-26.5 -49.5 -68.5 -80.5q-42 -31 -93.5 -44.5q-51.5 -13.5 -100.5 -13.5h-68l-12 -57h155l-19 -91h-155l-26 -124h-119l26 124h-77l20 91h77l12 58h-78zM380 600q-20 0 -38 -1.5q-18 -1.5 -30 -3.5l-48 -228h52q27 0 55.5 8q28.5 8 52 24.5q23.5 16.5 38 42q14.5 25.5 14.5 61.5q0 48 -22 72.5t-74 24.5z" />
-<glyph unicode="&#8395;" horiz-adv-x="545" d="M68 364h76l70 329q44 8 86 12.5q42 4.5 93 4.5q45 0 83 -10.5q38 -10.5 65.5 -32.5q27.5 -22 43 -55.5q15.5 -33.5 15.5 -78.5q0 -73 -26.5 -122.5q-26.5 -49.5 -68.5 -80.5q-42 -31 -93.5 -44.5q-51.5 -13.5 -100.5 -13.5h-68l-12 -57h155l-19 -91h-155l-26 -124h-119l26 124h-77l20 91h77l12 58h-78zM380 600q-20 0 -38 -1.5q-18 -1.5 -30 -3.5l-48 -228h52q27 0 55.5 8q28.5 8 52 24.5q23.5 16.5 38 42q14.5 25.5 14.5 61.5q0 48 -22 72.5t-74 24.5z" />
-<glyph unicode="&#8396;" horiz-adv-x="545" d="M68 364h76l70 329q44 8 86 12.5q42 4.5 93 4.5q45 0 83 -10.5q38 -10.5 65.5 -32.5q27.5 -22 43 -55.5q15.5 -33.5 15.5 -78.5q0 -73 -26.5 -122.5q-26.5 -49.5 -68.5 -80.5q-42 -31 -93.5 -44.5q-51.5 -13.5 -100.5 -13.5h-68l-12 -57h155l-19 -91h-155l-26 -124h-119l26 124h-77l20 91h77l12 58h-78zM380 600q-20 0 -38 -1.5q-18 -1.5 -30 -3.5l-48 -228h52q27 0 55.5 8q28.5 8 52 24.5q23.5 16.5 38 42q14.5 25.5 14.5 61.5q0 48 -22 72.5t-74 24.5z" />
-<glyph unicode="&#8397;" horiz-adv-x="545" d="M68 364h76l70 329q44 8 86 12.5q42 4.5 93 4.5q45 0 83 -10.5q38 -10.5 65.5 -32.5q27.5 -22 43 -55.5q15.5 -33.5 15.5 -78.5q0 -73 -26.5 -122.5q-26.5 -49.5 -68.5 -80.5q-42 -31 -93.5 -44.5q-51.5 -13.5 -100.5 -13.5h-68l-12 -57h155l-19 -91h-155l-26 -124h-119l26 124h-77l20 91h77l12 58h-78zM380 600q-20 0 -38 -1.5q-18 -1.5 -30 -3.5l-48 -228h52q27 0 55.5 8q28.5 8 52 24.5q23.5 16.5 38 42q14.5 25.5 14.5 61.5q0 48 -22 72.5t-74 24.5z" />
-<glyph unicode="&#8398;" horiz-adv-x="545" d="M68 364h76l70 329q44 8 86 12.5q42 4.5 93 4.5q45 0 83 -10.5q38 -10.5 65.5 -32.5q27.5 -22 43 -55.5q15.5 -33.5 15.5 -78.5q0 -73 -26.5 -122.5q-26.5 -49.5 -68.5 -80.5q-42 -31 -93.5 -44.5q-51.5 -13.5 -100.5 -13.5h-68l-12 -57h155l-19 -91h-155l-26 -124h-119l26 124h-77l20 91h77l12 58h-78zM380 600q-20 0 -38 -1.5q-18 -1.5 -30 -3.5l-48 -228h52q27 0 55.5 8q28.5 8 52 24.5q23.5 16.5 38 42q14.5 25.5 14.5 61.5q0 48 -22 72.5t-74 24.5z" />
-<glyph unicode="&#8399;" horiz-adv-x="545" d="M68 364h76l70 329q44 8 86 12.5q42 4.5 93 4.5q45 0 83 -10.5q38 -10.5 65.5 -32.5q27.5 -22 43 -55.5q15.5 -33.5 15.5 -78.5q0 -73 -26.5 -122.5q-26.5 -49.5 -68.5 -80.5q-42 -31 -93.5 -44.5q-51.5 -13.5 -100.5 -13.5h-68l-12 -57h155l-19 -91h-155l-26 -124h-119l26 124h-77l20 91h77l12 58h-78zM380 600q-20 0 -38 -1.5q-18 -1.5 -30 -3.5l-48 -228h52q27 0 55.5 8q28.5 8 52 24.5q23.5 16.5 38 42q14.5 25.5 14.5 61.5q0 48 -22 72.5t-74 24.5z" />
-<glyph unicode="&#8467;" horiz-adv-x="500" d="M424 30q-22 -14 -57.5 -28q-35.5 -14 -70.5 -14q-63 0 -91.5 30.5q-28.5 30.5 -28.5 95.5v104l-50 -44l-35 44l85 74v254q0 44 10 75.5q10 31.5 27.5 51.5q17.5 20 41 29.5q23.5 9.5 50.5 9.5q48 0 79 -29.5q31 -29.5 31 -89.5q0 -74 -40 -157q-40 -83 -131 -171l0 -140q0 -44 17 -60.5q17 -16.5 41 -16.5q25 0 55 10.5q30 10.5 50 21.5zM351 588q0 34 -14 49q-14 15 -32 15q-12 0 -23 -3.5q-11 -3.5 -19.5 -14q-8.5 -10.5 -13.5 -29q-5 -18.5 -5 -48.5v-212q56 65 81.5 125.5t25.5 117.5z" />
-<glyph unicode="&#8470;" horiz-adv-x="1015" d="M663 317h298l-24 -104h-298zM270 364l-28 111h-5l-8 -110l-77 -365h-123l149 705h95l159 -372l27 -108h6l7 107l78 368h123l-149 -705h-95zM686 499q0 54 18.5 94q18.5 40 48.5 66.5q30 26.5 66.5 39.5q36.5 13 72.5 13q66 0 100.5 -30.5q34.5 -30.5 34.5 -89.5q0 -57 -17 -98.5q-17 -41.5 -46 -68.5q-29 -27 -66.5 -40q-37.5 -13 -77.5 -13q-62 0 -98 34.5q-36 34.5 -36 92.5zt0 0zM795 505q0 -22 11 -35.5q11 -13.5 32 -13.5q33 0 56 34.5q23 34.5 23 88.5q0 49 -43 49q-17 0 -31 -10q-14 -10 -25 -26.5q-11 -16.5 -17 -39t-6 -47.5z" />
-<glyph unicode="&#8482;" horiz-adv-x="953" d="M457 590h-118v-250h-129v250h-118v110h365zM863 484l16 103h-5l-36 -85l-68 -117h-78l-69 114l-38 88h-6l24 -102v-145h-111v360h130l91 -150l24 -63h1l25 65l84 148h129v-360l-113 0z" />
-<glyph unicode="&#8494;" horiz-adv-x="600" d="M166 259v-181q62 -59 145 -59q124 0 193 120l35 -21q-43 -66 -99 -100.5q-56 -34.5 -129 -34.5q-59 0 -107 21.5q-48 21.5 -81.5 58.5q-33.5 37 -51.5 87.5q-18 50.5 -18 108.5q0 59 18.5 109.5q18.5 50.5 52.5 87.5q34 37 81.5 58q47.5 21 105.5 21q62 0 109.5 -22q47.5 -22 80.5 -59.5q33 -37.5 50 -87.5q17 -50 19 -107zM457 295v145q-63 60 -147 60q-86 0 -144 -60l0 -145z" />
-<glyph unicode="&#8706;" horiz-adv-x="541" d="M290 503q21 0 36 -2q15 -2 26 -5.5q11 -3.5 20 -8q9 -4.5 17 -9.5l5 0q-5 39 -25 65q-20 26 -48.5 41.5q-28.5 15.5 -62.5 22q-34 6.5 -68 6.5q-8 0 -14.5 0q-6.5 0 -13.5 -1l22 101q8 1 16.5 1q8.5 0 16.5 0q66 0 122 -14.5q56 -14.5 98.5 -49.5q42.5 -35 66.5 -94q24 -59 24 -146q0 -112 -21.5 -192q-21.5 -80 -59.5 -131.5q-38 -51.5 -90.5 -76q-52.5 -24.5 -114.5 -24.5q-98 0 -154 55q-56 55 -56 148q0 57 15.5 113q15.5 56 47 101q31.5 45 80.5 72.5q49 27.5 115 27.5zt0 0zM298 393q-57 0 -94.5 -53q-37.5 -53 -37.5 -146q0 -41 22 -69.5q22 -28.5 65 -28.5q41 0 68 23q27 23 43.5 60q16.5 37 23 84q6.5 47 6.5 94q-18 17 -40 26.5t-56 9.5z" />
-<glyph unicode="&#8719;" horiz-adv-x="657" d="M493 578h-265v-778h-137v900h533v-900l-131 0z" />
-<glyph unicode="&#8721;" horiz-adv-x="505" d="M222 -38l-43 -40h361v-122h-482v122l186 292l43 34l-46 37l-183 293v122h482v-122h-348l45 -41l173 -281z" />
-<glyph unicode="&#8722;" horiz-adv-x="505" d="M58 394h442v-112l-442 0z" />
-<glyph unicode="&#8725;" horiz-adv-x="505" d="M462 715l85 -50l-430 -679l-86 53z" />
-<glyph unicode="&#8730;" horiz-adv-x="505" d="M223 475l79 -186l21 -115h4l19 117l120 409h124l-230 -705h-67l-151 369h-111l0 111z" />
-<glyph unicode="&#8734;" horiz-adv-x="861" d="M450 265q-37 -58 -88 -86q-51 -28 -113 -28q-36 0 -69 13.5q-33 13.5 -58 39q-25 25.5 -40 62q-15 36.5 -15 82.5q0 48 15 86q15 38 40.5 64q25.5 26 61.5 40q36 14 75 14q73 0 124 -29q51 -29 88 -75q45 56 95.5 80q50.5 24 111.5 24q37 0 69 -13.5q32 -13.5 56 -38.5q24 -25 37.5 -61.5q13.5 -36.5 13.5 -82.5q0 -49 -15 -87q-15 -38 -42 -64.5q-27 -26.5 -64 -40q-37 -13.5 -80 -13.5q-36 0 -66 9q-30 9 -54 24.5q-24 15.5 -44.5 36q-20.5 20.5 -38.5 44.5zt0 0zM652 262q35 0 58 25.5q23 25.5 23 65.5q0 16 -5 32q-5 16 -15.5 28.5q-10.5 12.5 -26 20q-15.5 7.5 -36.5 7.5q-31 0 -64 -18.5q-33 -18.5 -62 -56.5q11 -21 25 -39.5q14 -18.5 30.5 -33q16.5 -14.5 35 -23q18.5 -8.5 37.5 -8.5zt0 0zM269 441q-34 0 -57 -26.5q-23 -26.5 -23 -65.5q0 -38 24.5 -62.5q24.5 -24.5 61.5 -24.5q32 0 65 22.5q33 22.5 57 55.5q-23 45 -54.5 73t-73.5 28z" />
-<glyph unicode="&#8747;" horiz-adv-x="371" d="M248 -34q0 -96 -38.5 -135q-38.5 -39 -116.5 -39q-46 0 -87.5 7q-41.5 7 -65.5 17l29 103q44 -17 84 -17q38 0 52 23q14 23 14 78v535q0 96 36.5 136q36.5 40 117.5 40q18 0 38.5 -2q20.5 -2 40.5 -5.5q20 -3.5 38 -8q18 -4.5 31 -9.5l-22 -102q-23 8 -42.5 12.5q-19.5 4.5 -46.5 4.5q-35 0 -48.5 -20.5q-13.5 -20.5 -13.5 -74.5z" />
-<glyph unicode="&#8776;" horiz-adv-x="505" d="M45 473q47 38 84.5 52.5q37.5 14.5 69.5 14.5q29 0 54 -8.5q25 -8.5 48 -18q23 -9.5 45.5 -18q22.5 -8.5 45.5 -8.5q18 0 37 6q19 6 40 23l47 -103q-36 -27 -66 -38q-30 -11 -56 -11q-28 0 -52 9q-24 9 -46.5 20q-22.5 11 -45.5 20q-23 9 -49 9q-24 0 -51.5 -10.5q-27.5 -10.5 -60.5 -38.5zM45 279q47 38 84.5 52.5q37.5 14.5 69.5 14.5q29 0 54 -8.5q25 -8.5 48 -18q23 -9.5 45.5 -18q22.5 -8.5 45.5 -8.5q18 0 37 6q19 6 40 23l47 -103q-36 -27 -66 -38q-30 -11 -56 -11q-28 0 -52 9q-24 9 -46.5 20q-22.5 11 -45.5 20q-23 9 -49 9q-24 0 -51.5 -10.5q-27.5 -10.5 -60.5 -38.5z" />
-<glyph unicode="&#8800;" horiz-adv-x="505" d="M58 490h227l50 113h113l-50 -113h102v-112h-152l-36 -80h188v-112h-237l-57 -129h-112l57 129h-93v112h142l36 80l-178 0z" />
-<glyph unicode="&#8804;" horiz-adv-x="505" d="M500 80l-55 -96l-383 215l56 96zM52 413v70l386 231l57 -90l-224 -139l-91 -35l90 -31l230 -137l-57 -90z" />
-<glyph unicode="&#8805;" horiz-adv-x="505" d="M500 205l-382 -221l-56 95l381 222zM529 493v-70l-386 -231l-57 90l224 139l91 35l-90 31l-230 137l57 90z" />
-<glyph unicode="&#9674;" horiz-adv-x="505" d="M314 -5h-75l-197 347l197 363h75l201 -358zM314 201l79 133l-91 157l-27 84h-5l-28 -86l-77 -134l89 -156l28 -84l4 0z" />
-<glyph unicode="&#11367;" horiz-adv-x="666" d="M455 293h-243l-62 -293h-130l148 700h130l-60 -285h243l60 285h130l-122 -578h83l-53 -247h-91l12 125l-107 0z" />
-<glyph unicode="&#11368;" horiz-adv-x="544" d="M453 103h79l-64 -217h-94l30 114h-95l60 284q10 44 10 73q0 26 -10 37.5q-10 11.5 -31 11.5q-19 0 -40 -12q-21 -12 -40 -30q-19 -18 -34.5 -38.5q-15.5 -20.5 -23.5 -37.5l-59 -288h-123l148 700h123l-63 -288h4q13 16 31.5 34q18.5 18 41 33q22.5 15 49 25q26.5 10 57.5 10q48 0 74.5 -24q26.5 -24 26.5 -85q0 -37 -12 -94z" />
-<glyph unicode="&#62465;" horiz-adv-x="2" d="M-109 870h157l-6 -30l-172 -88l-104 0z" />
-<glyph unicode="&#62470;" horiz-adv-x="432" d="M195 875q18 -26 44 -40q26 -14 65 -14q55 0 92 15q37 15 65 39l49 -32q-17 -30 -40 -51.5q-23 -21.5 -50 -35q-27 -13.5 -57.5 -20q-30.5 -6.5 -61.5 -6.5q-26 0 -50.5 7.5q-24.5 7.5 -45 22q-20.5 14.5 -36 34.5q-15.5 20 -22.5 44z" />
-<glyph unicode="&#62471;" horiz-adv-x="346" d="M172 -43q34 -2 52 -21q18 -19 18 -48q0 -26 -11.5 -45q-11.5 -19 -31 -31.5q-19.5 -12.5 -46 -18.5q-26.5 -6 -56.5 -6q-38 0 -77 9l20 48q51 -5 70 6q19 11 19 25q0 32 -78 30l75 95l79 0z" />
-<glyph unicode="&#62472;" horiz-adv-x="398" d="M299 870h87l101 -93l-8 -39h-88l-45 41l-13 34l-27 -33l-67 -42h-94l9 40z" />
-<glyph unicode="&#62473;" horiz-adv-x="261" d="M20 -113q0 17 6.5 30q6.5 13 17 22q10.5 9 23.5 14q13 5 27 5q35 0 49.5 -19q14.5 -19 13.5 -51q0 -36 -14 -63.5q-14 -27.5 -34.5 -47.5q-20.5 -20 -42.5 -32.5q-22 -12.5 -38 -17.5l-21 54q16 7 31.5 19.5q15.5 12.5 23.5 32.5q-19 3 -30.5 16.5t-11.5 37.5z" />
-<glyph unicode="&#62474;" horiz-adv-x="276" d="M170 637q0 18 7.5 31.5q7.5 13.5 18.5 22.5q11 9 24 13.5q13 4.5 25 4.5q35 0 50 -18q15 -18 15 -49q0 -41 -15.5 -72q-15.5 -31 -38 -53q-22.5 -22 -47 -35q-24.5 -13 -42.5 -19l-19 55q21 9 38.5 24q17.5 15 24.5 38q-18 2 -30 16.5t-11 40.5z" />
-<glyph unicode="&#62475;" horiz-adv-x="243" d="M165 798q0 31 24 46q24 15 59 15q33 0 58 -15q25 -15 25 -46q0 -30 -24 -45.5q-24 -15.5 -59 -15.5q-35 0 -59 15t-24 46z" />
-<glyph unicode="&#62476;" horiz-adv-x="329" d="M162 772q0 18 6 34.5q6 16.5 20.5 29q14.5 12.5 39 19.5q24.5 7 62.5 7q70 0 99 -24q29 -24 30 -66q-1 -18 -7.5 -34q-6.5 -16 -21.5 -27.5q-15 -11.5 -39.5 -18.5q-24.5 -7 -60.5 -8q-71 1 -99.5 25.5q-28.5 24.5 -28.5 62.5zt0 0zM246 772q0 -31 44 -31q25 0 35 8q10 8 10 23q0 33 -45 33q-44 0 -44 -33z" />
-<glyph unicode="&#62477;" horiz-adv-x="400" d="M149 800q38 35 69 48q31 13 58 13q21 0 40.5 -5.5q19.5 -5.5 38 -12q18.5 -6.5 36 -12q17.5 -5.5 35.5 -5.5q15 0 30 5q15 5 31 19l10 -67q-33 -27 -60 -37q-27 -10 -51 -10q-21 0 -39.5 5.5q-18.5 5.5 -36.5 11.5q-18 6 -35.5 11.5q-17.5 5.5 -36.5 5.5q-18 0 -37.5 -7q-19.5 -7 -42.5 -26z" />
-<glyph unicode="&#62478;" horiz-adv-x="342" d="M237 10q-37 -12 -64.5 -33q-27.5 -21 -27.5 -53q0 -34 38 -34q14 0 38 8l5 -62q-18 -13 -49.5 -23q-31.5 -10 -64.5 -10q-48 0 -71.5 22q-23.5 22 -23.5 56q0 27 11 47.5q11 20.5 29 36.5q18 16 40.5 27q22.5 11 45.5 18z" />
-<glyph unicode="&#62598;" horiz-adv-x="568" d="M166 695q19 3 43 6q24 3 51 5q27 2 55.5 3q28.5 1 55.5 1q46 0 85.5 -9.5q39.5 -9.5 68 -29.5q28.5 -20 45 -51.5q16.5 -31.5 16.5 -75.5q0 -33 -11 -63.5q-11 -30.5 -31.5 -54.5q-20.5 -24 -49 -40q-28.5 -16 -64.5 -21l0 -5q19 -4 38 -14.5q19 -10.5 34 -27q15 -16.5 24 -39q9 -22.5 9 -50.5q0 -64 -25 -109.5q-25 -45.5 -67 -74q-42 -28.5 -98 -42q-56 -13.5 -118 -13.5q-16 0 -41.5 0q-25.5 0 -54.5 1.5q-29 1.5 -58 4.5q-29 3 -53 9zM167 109q4 -2 14.5 -3q10.5 -1 23 -1.5q12.5 -0.5 25.5 -1q13 -0.5 22 -0.5q25 0 51.5 6q26.5 6 48 20q21.5 14 35.5 36q14 22 14 54q0 25 -11 41q-11 16 -29 25.5q-18 9.5 -41.5 13q-23.5 3.5 -48.5 3.5h-64zM230 406h43q14 0 33 0.5q19 0.5 32 2.5q18 3 38.5 10q20.5 7 37 20q16.5 13 27.5 33q11 20 11 50q0 43 -28.5 59q-28.5 16 -72.5 16q-26 0 -48 -1q-22 -1 -34 -3zM415 870h157l-6 -30l-172 -88l-104 0z" />
-<glyph unicode="&#62599;" horiz-adv-x="512" d="M164 700h123l-62 -288h4q13 18 30 35.5q17 17.5 37.5 32q20.5 14.5 44.5 23.5q24 9 53 9q54 0 81 -38q27 -38 27 -101q0 -95 -26.5 -167q-26.5 -72 -69.5 -120.5q-43 -48.5 -97 -73q-54 -24.5 -109 -24.5q-61 0 -107.5 11.5q-46.5 11.5 -70.5 28.5zM160 105q11 -8 27 -11q16 -3 35 -3q25 0 52 16.5q27 16.5 49.5 48.5q22.5 32 37 78.5q14.5 46.5 14.5 105.5q0 69 -40 69q-20 0 -39.5 -11q-19.5 -11 -37.5 -27.5q-18 -16.5 -32.5 -35.5q-14.5 -19 -23.5 -36zM413 720h125l-6 -30l-133 -124l-69 0z" />
-<glyph unicode="&#62600;" horiz-adv-x="489" d="M168 700h130h264l-26 -122h-264l-37 -173h243l-25 -122h-243l-60 -283h-130zM415 870h157l-6 -30l-172 -88l-104 0z" />
-<glyph unicode="&#62601;" horiz-adv-x="294" d="M246 397l-74 -431q-6 -37 -17 -68.5q-11 -31.5 -30.5 -55q-19.5 -23.5 -49.5 -37q-30 -13.5 -74 -13.5q-36 0 -70.5 5.5q-34.5 5.5 -59.5 22.5l34 91q17 -7 34 -9q17 -2 43 -2q32 0 49.5 25.5q17.5 25.5 26.5 82.5l63 389h-70l22 103h64l13 67q7 37 18 64.5q11 27.5 29.5 46q18.5 18.5 45 27.5q26.5 9 65.5 9q16 0 36.5 -1.5q20.5 -1.5 40.5 -5q20 -3.5 39 -8.5q19 -5 34 -12l-29 -91q-23 9 -47 12q-24 3 -47 3q-32 0 -46.5 -19q-14.5 -19 -20.5 -59l-6 -33h100l-20 -103zM384 870h157l-6 -30l-172 -88l-104 0z" />
-<glyph unicode="&#62622;" horiz-adv-x="576" d="M94 607h73l20 93h130l-20 -93h211l-19 -93h-212l-20 -96q28 15 63.5 27.5q35.5 12.5 89.5 12.5q32 0 61 -8.5q29 -8.5 51.5 -27q22.5 -18.5 35.5 -47.5q13 -29 13 -71q0 -31 -7 -63l-51 -241h-129l47 219q2 12 3.5 22.5q1.5 10.5 1.5 20.5q0 78 -81 78q-37 0 -67 -9.5q-30 -9.5 -54 -24.5l-65 -306h-130l108 514l-72 0z" />
-<glyph unicode="&#62623;" horiz-adv-x="528" d="M84 641h69l13 59h123l-13 -59h155l-17 -80h-156l-32 -149h4q13 16 31.5 34q18.5 18 41 33q22.5 15 49 25q26.5 10 57.5 10q48 0 74.5 -24q26.5 -24 26.5 -85q0 -37 -12 -94l-66 -311h-123l60 284q10 44 10 73q0 26 -10 37.5q-10 11.5 -31 11.5q-19 0 -40 -12q-21 -12 -40 -30q-19 -18 -34.5 -38.5q-15.5 -20.5 -23.5 -37.5l-59 -288h-123l118 561l-69 0z" />
-<glyph unicode="&#62662;" horiz-adv-x="583" d="M284 700l-46 -217q-3 -13 -3.5 -24q-0.5 -11 -0.5 -22q0 -39 18.5 -58q18.5 -19 60.5 -19q36 0 67.5 8q31.5 8 53.5 25l65 307h130l-148 -700q-11 -53 -27 -92q-16 -39 -38 -64.5q-22 -25.5 -52 -38q-30 -12.5 -69 -12.5q-28 0 -61 6l24 112q25 -2 40.5 2q15.5 4 25.5 15q10 11 15.5 28.5q5.5 17.5 11.5 43.5l60 282q-14 -7 -29 -14q-15 -7 -33 -13q-18 -6 -40.5 -9.5q-22.5 -3.5 -50.5 -3.5q-35 0 -64.5 9q-29.5 9 -51 28q-21.5 19 -33.5 48q-12 29 -12 68q0 31 7 63l51 242z" />
-<glyph unicode="&#62663;" horiz-adv-x="485" d="M302 196q-17 -11 -48.5 -24.5q-31.5 -13.5 -79.5 -13.5q-26 0 -48 5.5q-22 5.5 -38.5 18.5q-16.5 13 -25.5 34q-9 21 -9 53q0 29 7 61l36 170h123l-24 -114q-5 -21 -7.5 -38q-2.5 -17 -2.5 -31q0 -28 11.5 -42q11.5 -14 38.5 -14q29 0 50.5 9q21.5 9 35.5 20l46 210h123l-106 -500q-23 -106 -67.5 -157q-44.5 -51 -119.5 -51q-14 0 -28.5 1.5q-14.5 1.5 -30.5 5.5l23 111q24 -2 41 2.5q17 4.5 28 16q11 11.5 18.5 29.5q7.5 18 12.5 42z" />
-<glyph unicode="&#62668;" horiz-adv-x="546" d="M315 391l1 -91h6l33 94l163 306h145l-280 -484q-33 -57 -59 -99q-26 -42 -51.5 -69.5q-25.5 -27.5 -54.5 -41q-29 -13.5 -68 -13.5q-61 0 -98 24l57 111q14 -8 26 -10.5q12 -2.5 27 -2.5q21 0 41 21.5q20 21.5 39 55.5l-140 508h143zM427 870h157l-6 -30l-172 -88l-104 0z" />
-<glyph unicode="&#62669;" horiz-adv-x="452" d="M216 219l1 -78h6l27 79l136 280h131l-240 -449q-30 -56 -56.5 -103q-26.5 -47 -53.5 -81q-27 -34 -56 -53q-29 -19 -62 -19q-44 0 -66 15l33 98q6 -3 12.5 -4q6.5 -1 12.5 -1q24 0 49 23q25 23 50 74l-94 500h141zM333 720h125l-6 -30l-133 -124l-69 0z" />
-<glyph unicode="&#62678;" horiz-adv-x="552" d="M176 410h251q3 38 -2 71.5q-5 33.5 -21.5 58q-16.5 24.5 -47 38.5q-30.5 14 -78.5 14q-50 0 -85 -11.5q-35 -11.5 -61 -25.5l-4 116q38 18 82.5 30.5q44.5 12.5 95.5 12.5q70 0 119.5 -22q49.5 -22 80 -59q30.5 -37 44.5 -84.5q14 -47.5 14 -99.5q0 -99 -24 -184q-24 -85 -73.5 -147q-49.5 -62 -125.5 -97q-76 -35 -180 -35q-26 0 -51.5 3q-25.5 3 -48.5 7.5q-23 4.5 -42 10.5q-19 6 -31 12l60 119q19 -11 54 -20.5q35 -9.5 83 -9.5q44 0 83 14q39 14 69 39.5q30 25.5 50.5 61q20.5 35.5 28.5 77.5l-263 0zM273 798q0 31 24 46q24 15 59 15q33 0 58 -15q25 -15 25 -46q0 -30 -24 -45.5q-24 -15.5 -59 -15.5q-35 0 -59 15t-24 46z" />
-<glyph unicode="&#62679;" horiz-adv-x="433" d="M115 296h177q1 8 1.5 16q0.5 8 0.5 14q0 44 -21 64.5q-21 20.5 -56 20.5q-46 0 -73.5 -8.5q-27.5 -8.5 -50.5 -19.5l-28 81q40 24 85.5 37q45.5 13 93.5 13q85 0 129 -45q44 -45 44 -126q0 -94 -23.5 -161.5q-23.5 -67.5 -62.5 -111q-39 -43.5 -90 -64q-51 -20.5 -107 -20.5q-48 0 -91 11.5q-43 11.5 -66 28.5l47 92q20 -13 49 -21q29 -8 60 -8q118 0 145 122l-179 0zM195 642q0 33 21.5 51q21.5 18 54.5 18q32 0 54.5 -18q22.5 -18 22.5 -51q0 -32 -22.5 -50.5q-22.5 -18.5 -54.5 -18.5q-33 0 -54.5 18.5t-21.5 50.5z" />
-<glyph unicode="&#62730;" horiz-adv-x="507" d="M164 417h23q9 0 21 0.5q12 0.5 24.5 1.5q12.5 1 24.5 2q12 1 20 2q20 3 40 9.5q20 6.5 35.5 18.5q15.5 12 25.5 29q10 17 10 41q0 32 -24.5 50.5q-24.5 18.5 -72.5 18.5q-42 0 -80.5 -12q-38.5 -12 -63.5 -23l-9 116q12 6 32.5 13q20.5 7 46 13q25.5 6 55.5 10.5q30 4.5 60 4.5q42 0 77 -9.5q35 -9.5 61 -28.5q26 -19 40.5 -47.5q14.5 -28.5 14.5 -65.5q0 -69 -37.5 -121q-37.5 -52 -111.5 -69l0 -5q19 -6 37 -16.5q18 -10.5 31.5 -27.5q13.5 -17 22 -41q8.5 -24 8.5 -57q0 -55 -19.5 -96.5q-19.5 -41.5 -54 -71q-34.5 -29.5 -81.5 -46q-47 -16.5 -101 -21.5l-25 -164h-116l43 163q-47 4 -83 13.5q-36 9.5 -55 21.5l58 119q20 -11 58 -22.5q38 -11.5 94 -11.5q24 0 50 6q26 6 47 19.5q21 13.5 34.5 35.5q13.5 22 13.5 54q0 49 -34.5 67.5q-34.5 18.5 -98.5 18.5l-64 0z" />
-<glyph unicode="&#62731;" horiz-adv-x="407" d="M100 206l19 91h58q16 0 33 5q17 5 30 13.5q13 8.5 21.5 20.5q8.5 12 8.5 26q0 24 -17 34q-17 10 -55 10q-33 0 -56 -6q-23 -6 -48 -17l-21 92q16 9 37 15q21 6 44.5 10.5q23.5 4.5 48 6.5q24.5 2 47.5 2q80 0 113.5 -28.5q33.5 -28.5 33.5 -78.5q0 -24 -8 -45.5q-8 -21.5 -22 -38.5q-14 -17 -32.5 -30q-18.5 -13 -39.5 -20l0 -4q42 -10 57 -35.5q15 -25.5 15 -56.5q0 -74 -49.5 -120q-49.5 -46 -128.5 -58l-26 -169h-116l43 166q-35 5 -64 15q-29 10 -46 23l46 95q20 -13 49.5 -22.5q29.5 -9.5 66.5 -9.5q47 0 73 20q26 20 26 52q0 23 -19 32.5q-19 9.5 -76 9.5z" />
-<glyph unicode="&#62732;" horiz-adv-x="537" d="M483 29q-65 -42 -157 -43l-22 -29q34 -2 52 -20.5q18 -18.5 18 -47.5q0 -26 -11.5 -45q-11.5 -19 -31 -31.5q-19.5 -12.5 -46 -18.5q-26.5 -6 -56.5 -6q-38 0 -77 9l20 48q51 -5 70 6q19 11 19 25q0 17 -20 23.5q-20 6.5 -58 5.5l69 88q-49 10 -85.5 35.5q-36.5 25.5 -60.5 62.5q-24 37 -36 83q-12 46 -12 98q0 118 33 201.5q33 83.5 87 137q54 53.5 123.5 78.5q69.5 25 142.5 25q57 0 97.5 -8.5q40.5 -8.5 63.5 -19.5l-51 -116q-20 11 -48 16.5q-28 5.5 -71 5.5q-51 0 -95 -21q-44 -21 -76 -60q-32 -39 -50.5 -95q-18.5 -56 -18.5 -127q0 -85 42.5 -133q42.5 -48 113.5 -48q45 0 74.5 9.5q29.5 9.5 55.5 23.5z" />
-<glyph unicode="&#62733;" horiz-adv-x="412" d="M370 41q-26 -19 -58 -33q-32 -14 -66 -19l-24 -32q34 -2 52 -20.5q18 -18.5 18 -47.5q0 -26 -11.5 -45q-11.5 -19 -31 -31.5q-19.5 -12.5 -46 -18.5q-26.5 -6 -56.5 -6q-38 0 -77 9l20 48q51 -5 70 6q19 11 19 25q0 17 -20 23.5q-20 6.5 -58 5.5l66 85q-36 6 -61 21.5q-25 15.5 -41 38q-16 22.5 -23.5 50.5q-7.5 28 -7.5 58q0 84 24 150q24 66 63.5 111.5q39.5 45.5 90 70q50.5 24.5 103.5 24.5q47 0 74.5 -9q27.5 -9 49.5 -20l-46 -98q-19 11 -39.5 15q-20.5 4 -44.5 4q-27 0 -52.5 -17.5q-25.5 -17.5 -46 -46q-20.5 -28.5 -32.5 -66.5q-12 -38 -12 -78q0 -51 22 -77.5q22 -26.5 58 -26.5q30 0 55.5 9.5q25.5 9.5 45.5 21.5z" />
-<glyph unicode="&#62734;" horiz-adv-x="582" d="M387 155h-204l-83 -155h-138l389 705h96l91 -705h-131zM240 265h142l-16 156l1 110h-5l-40 -111zM263 856h327l-19 -89l-326 0z" />
-<glyph unicode="&#62735;" horiz-adv-x="503" d="M444 200q-8 -38 -11.5 -77q-3.5 -39 -3.5 -74q0 -14 0.5 -26.5q0.5 -12.5 1.5 -23.5l-91 0l-14 86h-4q-11 -18 -28.5 -35.5q-17.5 -17.5 -38.5 -32q-21 -14.5 -44.5 -23q-23.5 -8.5 -48.5 -8.5q-66 0 -97.5 43q-31.5 43 -31.5 115q0 73 18.5 140q18.5 67 57.5 118q39 51 98.5 81.5q59.5 30.5 141.5 30.5q35 0 76.5 -6.5q41.5 -6.5 80.5 -17.5zM209 89q18 0 34 7.5q16 7.5 29.5 19.5q13.5 12 24 26q10.5 14 18.5 26l50 233q-11 5 -25.5 7.5q-14.5 2.5 -28.5 2.5q-36 0 -64 -21.5q-28 -21.5 -47.5 -56q-19.5 -34.5 -29.5 -78q-10 -43.5 -10 -87.5q0 -32 10.5 -55.5q10.5 -23.5 38.5 -23.5zt0 0zM211 658h308l-19 -92l-308 0z" />
-<glyph unicode="&#62736;" horiz-adv-x="503" d="M168 700h130h264l-26 -122h-264l-35 -163h241l-27 -122h-239l-37 -171h269l-25 -122h-269h-130zM229 856h327l-19 -89l-326 0z" />
-<glyph unicode="&#62737;" horiz-adv-x="466" d="M402 48q-31 -26 -80 -44q-49 -18 -114 -18q-81 0 -127.5 47.5q-46.5 47.5 -46.5 132.5q0 80 25 144.5q25 64.5 65.5 109.5q40.5 45 91.5 69.5q51 24.5 102 24.5q41 0 70.5 -10.5q29.5 -10.5 48.5 -29q19 -18.5 28 -42.5q9 -24 9 -51q0 -41 -21 -72q-21 -31 -58.5 -51.5q-37.5 -20.5 -90.5 -31q-53 -10.5 -116 -10.5q-8 0 -15 0.5q-7 0.5 -15 0.5q-2 -12 -3 -21.5q-1 -9.5 -1 -17.5q0 -45 23.5 -67q23.5 -22 66.5 -22q44 0 79 13q35 13 53 26zM176 295q28 0 59.5 2q31.5 2 58.5 9.5q27 7.5 45 22q18 14.5 18 39.5q0 15 -11 30.5q-11 15.5 -46 15.5q-44 0 -76.5 -34q-32.5 -34 -47.5 -85zt0 0zM188 658h308l-19 -92l-308 0z" />
-<glyph unicode="&#62738;" horiz-adv-x="503" d="M168 700h130h264l-26 -122h-264l-35 -163h241l-27 -122h-239l-37 -171h269l-25 -122h-269h-130zM206 798q0 29 20 43.5q20 14.5 52 14.5q32 0 52 -14.5q20 -14.5 20 -43.5q0 -29 -20 -43q-20 -14 -52 -14q-32 0 -52 14q-20 14 -20 43zt0 0zM410 798q0 29 20 43.5q20 14.5 52 14.5q32 0 52 -14.5q20 -14.5 20 -43.5q0 -29 -20 -43q-20 -14 -52 -14q-32 0 -52 14q-20 14 -20 43zt0 0zM256 993h327l-19 -89l-326 0z" />
-<glyph unicode="&#62739;" horiz-adv-x="466" d="M402 48q-31 -26 -80 -44q-49 -18 -114 -18q-81 0 -127.5 47.5q-46.5 47.5 -46.5 132.5q0 80 25 144.5q25 64.5 65.5 109.5q40.5 45 91.5 69.5q51 24.5 102 24.5q41 0 70.5 -10.5q29.5 -10.5 48.5 -29q19 -18.5 28 -42.5q9 -24 9 -51q0 -41 -21 -72q-21 -31 -58.5 -51.5q-37.5 -20.5 -90.5 -31q-53 -10.5 -116 -10.5q-8 0 -15 0.5q-7 0.5 -15 0.5q-2 -12 -3 -21.5q-1 -9.5 -1 -17.5q0 -45 23.5 -67q23.5 -22 66.5 -22q44 0 79 13q35 13 53 26zM176 295q28 0 59.5 2q31.5 2 58.5 9.5q27 7.5 45 22q18 14.5 18 39.5q0 15 -11 30.5q-11 15.5 -46 15.5q-44 0 -76.5 -34q-32.5 -34 -47.5 -85zt0 0zM165 625q0 33 18.5 51.5q18.5 18.5 47.5 18.5q29 0 47.5 -18.5q18.5 -18.5 18.5 -51.5q0 -32 -18.5 -50q-18.5 -18 -47.5 -18q-29 0 -47.5 18q-18.5 18 -18.5 50zt0 0zM373 626q0 32 18.5 50.5q18.5 18.5 47.5 18.5q29 0 47.5 -18.5q18.5 -18.5 18.5 -50.5q0 -32 -18.5 -50.5q-18.5 -18.5 -47.5 -18.5q-29 0 -47.5 18.5q-18.5 18.5 -18.5 50.5zt0 0zM215 856h327l-19 -89l-326 0z" />
-<glyph unicode="&#62740;" horiz-adv-x="503" d="M168 700h130h264l-26 -122h-264l-35 -163h241l-27 -122h-239l-37 -171h269l-25 -122h-269h-130zM208 798q0 29 20 43.5q20 14.5 52 14.5q32 0 52 -14.5q20 -14.5 20 -43.5q0 -29 -20 -43q-20 -14 -52 -14q-32 0 -52 14q-20 14 -20 43zt0 0zM412 798q0 29 20 43.5q20 14.5 52 14.5q32 0 52 -14.5q20 -14.5 20 -43.5q0 -29 -20 -43q-20 -14 -52 -14q-32 0 -52 14q-20 14 -20 43zt0 0zM356 1006q-2 -28 13.5 -44q15.5 -16 43.5 -16q65 0 85 59l114 -17q-21 -61 -74.5 -91q-53.5 -30 -134.5 -30q-39 0 -68 9.5q-29 9.5 -48 25.5q-19 16 -28.5 37.5q-9.5 21.5 -10.5 46.5z" />
-<glyph unicode="&#62741;" horiz-adv-x="466" d="M402 48q-31 -26 -80 -44q-49 -18 -114 -18q-81 0 -127.5 47.5q-46.5 47.5 -46.5 132.5q0 80 25 144.5q25 64.5 65.5 109.5q40.5 45 91.5 69.5q51 24.5 102 24.5q41 0 70.5 -10.5q29.5 -10.5 48.5 -29q19 -18.5 28 -42.5q9 -24 9 -51q0 -41 -21 -72q-21 -31 -58.5 -51.5q-37.5 -20.5 -90.5 -31q-53 -10.5 -116 -10.5q-8 0 -15 0.5q-7 0.5 -15 0.5q-2 -12 -3 -21.5q-1 -9.5 -1 -17.5q0 -45 23.5 -67q23.5 -22 66.5 -22q44 0 79 13q35 13 53 26zM176 295q28 0 59.5 2q31.5 2 58.5 9.5q27 7.5 45 22q18 14.5 18 39.5q0 15 -11 30.5q-11 15.5 -46 15.5q-44 0 -76.5 -34q-32.5 -34 -47.5 -85zt0 0zM165 625q0 33 18.5 51.5q18.5 18.5 47.5 18.5q29 0 47.5 -18.5q18.5 -18.5 18.5 -51.5q0 -32 -18.5 -50q-18.5 -18 -47.5 -18q-29 0 -47.5 18q-18.5 18 -18.5 50zt0 0zM373 626q0 32 18.5 50.5q18.5 18.5 47.5 18.5q29 0 47.5 -18.5q18.5 -18.5 18.5 -50.5q0 -32 -18.5 -50.5q-18.5 -18.5 -47.5 -18.5q-29 0 -47.5 18.5q-18.5 18.5 -18.5 50.5zt0 0zM309 874q-2 -28 13.5 -44q15.5 -16 43.5 -16q65 0 85 59l114 -17q-21 -61 -74.5 -91q-53.5 -30 -134.5 -30q-39 0 -68 9.5q-29 9.5 -48 25.5q-19 16 -28.5 37.5q-9.5 21.5 -10.5 46.5z" />
-<glyph unicode="&#62742;" horiz-adv-x="507" d="M141 309l23 108h23q9 0 21 0.5q12 0.5 24.5 1.5q12.5 1 24.5 2q12 1 20 2q20 3 40 9.5q20 6.5 35.5 18.5q15.5 12 25.5 29q10 17 10 41q0 32 -24.5 50.5q-24.5 18.5 -72.5 18.5q-42 0 -80.5 -12q-38.5 -12 -63.5 -23l-9 116q12 6 32.5 13q20.5 7 46 13q25.5 6 55.5 10.5q30 4.5 60 4.5q42 0 77 -9.5q35 -9.5 61 -28.5q26 -19 40.5 -47.5q14.5 -28.5 14.5 -65.5q0 -69 -37.5 -121q-37.5 -52 -111.5 -69l0 -5q19 -6 37 -16.5q18 -10.5 31.5 -27.5q13.5 -17 22 -41q8.5 -24 8.5 -57q0 -61 -24 -105.5q-24 -44.5 -65.5 -74q-41.5 -29.5 -97.5 -44q-56 -14.5 -119 -14.5q-63 0 -112.5 11q-49.5 11 -73.5 26l58 119q20 -11 58 -22.5q38 -11.5 94 -11.5q24 0 50 6q26 6 47 19.5q21 13.5 34.5 35.5q13.5 22 13.5 54q0 48 -34.5 66q-34.5 18 -98.5 20l-38 0zM367 737h-84l-101 94l8 39h92l41 -45l12 -30l25 29l64 46h98l-8 -40z" />
-<glyph unicode="&#62743;" horiz-adv-x="407" d="M100 208l19 89h58q16 0 32.5 5q16.5 5 29 14q12.5 9 20.5 21q8 12 8 26q0 24 -15.5 34q-15.5 10 -53.5 10q-33 0 -56 -6q-23 -6 -48 -17l-21 91q16 9 37 15q21 6 44.5 10.5q23.5 4.5 48 6.5q24.5 2 47.5 2q80 0 114 -28.5q34 -28.5 33 -78.5q0 -24 -8 -45.5q-8 -21.5 -22 -38.5q-14 -17 -32.5 -30q-18.5 -13 -39.5 -20l0 -4q41 -10 56.5 -35.5q15.5 -25.5 15.5 -56.5q0 -43 -18 -77q-18 -34 -50 -57.5q-32 -23.5 -75.5 -36q-43.5 -12.5 -94.5 -12.5q-48 0 -87.5 12q-39.5 12 -61.5 28l46 94q20 -13 49.5 -22.5q29.5 -9.5 66.5 -9.5q47 0 73 21.5q26 21.5 26 54.5q0 22 -19 31.5q-19 9.5 -76 9.5zM280 550h-87l-70 182h103l23 -66l5 -49l28 49l56 66l98 0z" />
-<glyph unicode="&#62744;" horiz-adv-x="644" d="M58 262q0 93 25.5 175.5q25.5 82.5 72.5 144q47 61.5 113.5 97q66.5 35.5 148.5 35.5q54 0 97.5 -16q43.5 -16 74 -49.5q30.5 -33.5 47.5 -84.5q17 -51 17 -121q0 -94 -25.5 -177q-25.5 -83 -72 -145.5q-46.5 -62.5 -111 -98.5q-64.5 -36 -142.5 -36q-118 0 -181 69.5q-63 69.5 -64 206.5zt0 0zM195 266q0 -72 27.5 -115q27.5 -43 90.5 -43q46 0 83.5 27.5q37.5 27.5 64.5 74q27 46.5 41.5 106.5q14.5 60 14.5 125q0 79 -31 115q-31 36 -85 36q-45 0 -82.5 -26q-37.5 -26 -65 -70.5q-27.5 -44.5 -43 -104q-15.5 -59.5 -15.5 -125.5zt0 0zM290 856h327l-19 -89l-326 0z" />
-<glyph unicode="&#62745;" horiz-adv-x="496" d="M34 162q0 79 22.5 144q22.5 65 60 111q37.5 46 87 71.5q49.5 25.5 103.5 25.5q48 0 81 -15q33 -15 53.5 -40q20.5 -25 29.5 -57q9 -32 9 -66q0 -78 -22 -142.5q-22 -64.5 -59 -110.5q-37 -46 -86 -71.5q-49 -25.5 -103 -25.5q-47 0 -80 15.5q-33 15.5 -54.5 40.5q-21.5 25 -31.5 56.5q-10 31.5 -10 63.5zt0 0zM161 179q0 -90 65 -90q24 0 47 21q23 21 41 55q18 34 28.5 77q10.5 43 10.5 86q0 40 -13.5 61.5q-13.5 21.5 -50.5 21.5q-24 0 -47 -20q-23 -20 -41 -52.5q-18 -32.5 -29 -74.5q-11 -42 -11 -85zt0 0zM190 658h308l-19 -92l-308 0z" />
-<glyph unicode="&#62746;" horiz-adv-x="644" d="M58 262q0 93 25.5 175.5q25.5 82.5 72.5 144q47 61.5 113.5 97q66.5 35.5 148.5 35.5q54 0 97.5 -16q43.5 -16 74 -49.5q30.5 -33.5 47.5 -84.5q17 -51 17 -121q0 -94 -25.5 -177q-25.5 -83 -72 -145.5q-46.5 -62.5 -111 -98.5q-64.5 -36 -142.5 -36q-118 0 -181 69.5q-63 69.5 -64 206.5zt0 0zM195 266q0 -72 27.5 -115q27.5 -43 90.5 -43q46 0 83.5 27.5q37.5 27.5 64.5 74q27 46.5 41.5 106.5q14.5 60 14.5 125q0 79 -31 115q-31 36 -85 36q-45 0 -82.5 -26q-37.5 -26 -65 -70.5q-27.5 -44.5 -43 -104q-15.5 -59.5 -15.5 -125.5zt0 0zM388 874q-2 -28 13.5 -44q15.5 -16 43.5 -16q65 0 85 59l114 -17q-21 -61 -74.5 -91q-53.5 -30 -134.5 -30q-39 0 -68 9.5q-29 9.5 -48 25.5q-19 16 -28.5 37.5q-9.5 21.5 -10.5 46.5z" />
-<glyph unicode="&#62747;" horiz-adv-x="496" d="M34 162q0 79 22.5 144q22.5 65 60 111q37.5 46 87 71.5q49.5 25.5 103.5 25.5q48 0 81 -15q33 -15 53.5 -40q20.5 -25 29.5 -57q9 -32 9 -66q0 -78 -22 -142.5q-22 -64.5 -59 -110.5q-37 -46 -86 -71.5q-49 -25.5 -103 -25.5q-47 0 -80 15.5q-33 15.5 -54.5 40.5q-21.5 25 -31.5 56.5q-10 31.5 -10 63.5zt0 0zM161 179q0 -90 65 -90q24 0 47 21q23 21 41 55q18 34 28.5 77q10.5 43 10.5 86q0 40 -13.5 61.5q-13.5 21.5 -50.5 21.5q-24 0 -47 -20q-23 -20 -41 -52.5q-18 -32.5 -29 -74.5q-11 -42 -11 -85zt0 0zM298 704q-2 -39 10 -55q12 -16 37 -16q26 0 45.5 16q19.5 16 33.5 54l87 -25q-24 -65 -75 -96.5q-51 -31.5 -112 -31.5q-29 0 -55 7q-26 7 -44.5 22.5q-18.5 15.5 -28.5 39.5q-10 24 -8 59z" />
-<glyph unicode="&#62748;" horiz-adv-x="644" d="M58 262q0 93 24.5 175.5q24.5 82.5 71 144q46.5 61.5 112 97q65.5 35.5 148.5 35.5q53 0 97.5 -16q44.5 -16 76 -49.5q31.5 -33.5 49 -84.5q17.5 -51 17.5 -121q0 -94 -25 -177q-25 -83 -70.5 -145.5q-45.5 -62.5 -109 -98.5q-63.5 -36 -141.5 -36q-118 0 -183.5 69.5q-65.5 69.5 -66.5 206.5zt0 0zM196 296q-1 -8 -1 -15q0 -7 0 -15q0 -72 29.5 -115q29.5 -43 92.5 -43q32 0 60 14q28 14 51 39.5q23 25.5 40.5 59.5q17.5 34 28.5 75zM516 407q0 8 0.5 16.5q0.5 8.5 0.5 17.5q0 79 -33 115q-33 36 -87 36q-32 0 -60.5 -13.5q-28.5 -13.5 -51.5 -38.5q-23 -25 -41 -59q-18 -34 -30 -74zM385 874q-2 -28 13.5 -44q15.5 -16 43.5 -16q65 0 85 59l114 -17q-21 -61 -74.5 -91q-53.5 -30 -134.5 -30q-39 0 -68 9.5q-29 9.5 -48 25.5q-19 16 -28.5 37.5q-9.5 21.5 -10.5 46.5z" />
-<glyph unicode="&#62749;" horiz-adv-x="496" d="M34 162q0 79 22.5 144q22.5 65 60.5 111q38 46 87.5 71.5q49.5 25.5 103.5 25.5q48 0 81 -15q33 -15 53 -40q20 -25 29 -57q9 -32 9 -66q0 -78 -22 -142.5q-22 -64.5 -59.5 -110.5q-37.5 -46 -86.5 -71.5q-49 -25.5 -103 -25.5q-47 0 -80 15.5q-33 15.5 -54 40.5q-21 25 -31 56.5q-10 31.5 -10 63.5zt0 0zM350 289q3 19 3 39q0 40 -13.5 61.5q-13.5 21.5 -50.5 21.5q-16 0 -32 -9.5q-16 -9.5 -30 -26q-14 -16.5 -26.5 -38.5q-12.5 -22 -21.5 -48zM162 208q-1 -8 -1 -15q0 -7 0 -14q0 -90 65 -90q32 0 60 34q28 34 46 85zM302 704q-2 -39 10 -55q12 -16 37 -16q26 0 45.5 16q19.5 16 33.5 54l87 -25q-24 -65 -75 -96.5q-51 -31.5 -112 -31.5q-29 0 -55 7q-26 7 -44.5 22.5q-18.5 15.5 -28.5 39.5q-10 24 -8 59z" />
-<glyph unicode="&#62750;" horiz-adv-x="644" d="M58 262q0 93 24.5 175.5q24.5 82.5 71 144q46.5 61.5 112 97q65.5 35.5 148.5 35.5q53 0 97.5 -16q44.5 -16 76 -49.5q31.5 -33.5 49 -84.5q17.5 -51 17.5 -121q0 -94 -25 -177q-25 -83 -70.5 -145.5q-45.5 -62.5 -109 -98.5q-63.5 -36 -141.5 -36q-118 0 -183.5 69.5q-65.5 69.5 -66.5 206.5zt0 0zM196 296q-1 -8 -1 -15q0 -7 0 -15q0 -72 29.5 -115q29.5 -43 92.5 -43q32 0 60 14q28 14 51 39.5q23 25.5 40.5 59.5q17.5 34 28.5 75zM516 407q0 8 0.5 16.5q0.5 8.5 0.5 17.5q0 79 -33 115q-33 36 -87 36q-32 0 -60.5 -13.5q-28.5 -13.5 -51.5 -38.5q-23 -25 -41 -59q-18 -34 -30 -74zM421 1006q-2 -28 13.5 -44q15.5 -16 43.5 -16q65 0 85 59l114 -17q-21 -61 -74.5 -91q-53.5 -30 -134.5 -30q-39 0 -68 9.5q-29 9.5 -48 25.5q-19 16 -28.5 37.5q-9.5 21.5 -10.5 46.5zM275 798q0 29 20 43.5q20 14.5 52 14.5q32 0 52 -14.5q20 -14.5 20 -43.5q0 -29 -20 -43q-20 -14 -52 -14q-32 0 -52 14q-20 14 -20 43zt0 0zM479 798q0 29 20 43.5q20 14.5 52 14.5q32 0 52 -14.5q20 -14.5 20 -43.5q0 -29 -20 -43q-20 -14 -52 -14q-32 0 -52 14t-20 43z" />
-<glyph unicode="&#62751;" horiz-adv-x="496" d="M34 162q0 79 22.5 144q22.5 65 60.5 111q38 46 87.5 71.5q49.5 25.5 103.5 25.5q48 0 81 -15q33 -15 53 -40q20 -25 29 -57q9 -32 9 -66q0 -78 -22 -142.5q-22 -64.5 -59.5 -110.5q-37.5 -46 -86.5 -71.5q-49 -25.5 -103 -25.5q-47 0 -80 15.5q-33 15.5 -54 40.5q-21 25 -31 56.5q-10 31.5 -10 63.5zt0 0zM350 289q3 19 3 39q0 40 -13.5 61.5q-13.5 21.5 -50.5 21.5q-16 0 -32 -9.5q-16 -9.5 -30 -26q-14 -16.5 -26.5 -38.5q-12.5 -22 -21.5 -48zM162 208q-1 -8 -1 -15q0 -7 0 -14q0 -90 65 -90q32 0 60 34q28 34 46 85zM160 625q0 33 18.5 51.5q18.5 18.5 47.5 18.5q29 0 47.5 -18.5q18.5 -18.5 18.5 -51.5q0 -32 -18.5 -50q-18.5 -18 -47.5 -18q-29 0 -47.5 18q-18.5 18 -18.5 50zt0 0zM368 626q0 32 18.5 50.5q18.5 18.5 47.5 18.5q29 0 47.5 -18.5q18.5 -18.5 18.5 -50.5q0 -32 -18.5 -50.5q-18.5 -18.5 -47.5 -18.5q-29 0 -47.5 18.5q-18.5 18.5 -18.5 50.5zt0 0zM291 874q-2 -28 13.5 -44q15.5 -16 43.5 -16q65 0 85 59l114 -17q-21 -61 -74.5 -91q-53.5 -30 -134.5 -30q-39 0 -68 9.5q-29 9.5 -48 25.5q-19 16 -28.5 37.5q-9.5 21.5 -10.5 46.5z" />
-<glyph unicode="&#62752;" horiz-adv-x="765" d="M681 700h130l-148 -700h-130zM167 700h130l-53 -251q13 2 33 5q20 3 43 3q48 0 85.5 -13.5q37.5 -13.5 63 -38q25.5 -24.5 38.5 -58q13 -33.5 13 -73.5q0 -66 -22 -118.5q-22 -52.5 -64 -89.5q-42 -37 -103 -56.5q-61 -19.5 -139 -19.5q-13 0 -26 0q-13 0 -16 1q-18 0 -39 2q-21 2 -45.5 5q-24.5 3 -45.5 9zM173 118q21 -6 54 -6q33 0 61.5 9q28.5 9 49.5 26.5q21 17.5 33 42.5q12 25 12 58q0 87 -106 87q-13 0 -32 -2.5q-19 -2.5 -27 -5.5zM348 856h327l-19 -89l-326 0z" />
-<glyph unicode="&#62753;" horiz-adv-x="675" d="M166 142q-1 -4 -2 -7q-1 -3 -1 -7q0 -32 39 -32q21 0 40.5 7q19.5 7 34 19q14.5 12 23.5 28.5q9 16.5 9 36.5q0 28 -13.5 39.5q-13.5 11.5 -47.5 11.5q-18 0 -33.5 -3.5q-15.5 -3.5 -29.5 -8.5zM204 316q20 5 48 9q28 4 49 4q74 0 104.5 -30q30.5 -30 30.5 -78q0 -51 -21.5 -93q-21.5 -42 -57.5 -72q-36 -30 -84 -46.5q-48 -16.5 -101 -16.5q-71 0 -103.5 24.5q-32.5 24.5 -32.5 68.5q0 14 3 31l84 383h123zM557 500h123l-106 -500h-123zM274 658h308l-19 -92l-308 0z" />
-<glyph unicode="&#62754;" horiz-adv-x="552" d="M176 410h251q3 38 -2 71.5q-5 33.5 -21.5 58q-16.5 24.5 -47 38.5q-30.5 14 -78.5 14q-50 0 -85 -11.5q-35 -11.5 -61 -25.5l-4 116q38 18 82.5 30.5q44.5 12.5 95.5 12.5q70 0 119.5 -22q49.5 -22 80 -59q30.5 -37 44.5 -84.5q14 -47.5 14 -99.5q0 -99 -24 -184q-24 -85 -73.5 -147q-49.5 -62 -125.5 -97q-76 -35 -180 -35q-26 0 -51.5 3q-25.5 3 -48.5 7.5q-23 4.5 -42 10.5q-19 6 -31 12l60 119q19 -11 54 -20.5q35 -9.5 83 -9.5q44 0 83 14q39 14 69 39.5q30 25.5 50.5 61q20.5 35.5 28.5 77.5l-263 0zM202 856h327l-19 -89l-326 0z" />
-<glyph unicode="&#62755;" horiz-adv-x="433" d="M115 296h177q1 8 1.5 16q0.5 8 0.5 14q0 44 -21 64.5q-21 20.5 -56 20.5q-46 0 -73.5 -8.5q-27.5 -8.5 -50.5 -19.5l-28 81q40 24 85.5 37q45.5 13 93.5 13q85 0 129 -45q44 -45 44 -126q0 -94 -23.5 -161.5q-23.5 -67.5 -62.5 -111q-39 -43.5 -90 -64q-51 -20.5 -107 -20.5q-48 0 -91 11.5q-43 11.5 -66 28.5l47 92q20 -13 49 -21q29 -8 60 -8q118 0 145 122l-179 0zM108 658h308l-19 -92l-308 0z" />
-<glyph unicode="&#62756;" horiz-adv-x="552" d="M176 410h251q3 38 -2 71.5q-5 33.5 -21.5 58q-16.5 24.5 -47 38.5q-30.5 14 -78.5 14q-50 0 -85 -11.5q-35 -11.5 -61 -25.5l-4 116q38 18 82.5 30.5q44.5 12.5 95.5 12.5q70 0 119.5 -22q49.5 -22 80 -59q30.5 -37 44.5 -84.5q14 -47.5 14 -99.5q0 -99 -24 -184q-24 -85 -73.5 -147q-49.5 -62 -125.5 -97q-76 -35 -180 -35q-26 0 -51.5 3q-25.5 3 -48.5 7.5q-23 4.5 -42 10.5q-19 6 -31 12l60 119q19 -11 54 -20.5q35 -9.5 83 -9.5q44 0 83 14q39 14 69 39.5q30 25.5 50.5 61q20.5 35.5 28.5 77.5l-263 0zM274 874q-2 -28 13.5 -44q15.5 -16 43.5 -16q65 0 85 59l114 -17q-21 -61 -74.5 -91q-53.5 -30 -134.5 -30q-39 0 -68 9.5q-29 9.5 -48 25.5q-19 16 -28.5 37.5q-9.5 21.5 -10.5 46.5z" />
-<glyph unicode="&#62757;" horiz-adv-x="433" d="M115 296h177q1 8 1.5 16q0.5 8 0.5 14q0 44 -21 64.5q-21 20.5 -56 20.5q-46 0 -73.5 -8.5q-27.5 -8.5 -50.5 -19.5l-28 81q40 24 85.5 37q45.5 13 93.5 13q85 0 129 -45q44 -45 44 -126q0 -94 -23.5 -161.5q-23.5 -67.5 -62.5 -111q-39 -43.5 -90 -64q-51 -20.5 -107 -20.5q-48 0 -91 11.5q-43 11.5 -66 28.5l47 92q20 -13 49 -21q29 -8 60 -8q118 0 145 122l-179 0zM219 704q-2 -39 10 -55q12 -16 37 -16q26 0 45.5 16q19.5 16 33.5 54l87 -25q-24 -65 -75 -96.5q-51 -31.5 -112 -31.5q-29 0 -55 7q-26 7 -44.5 22.5q-18.5 15.5 -28.5 39.5q-10 24 -8 59z" />
-<glyph unicode="&#62758;" horiz-adv-x="559" d="M498 29q-35 -22 -82.5 -32.5q-47.5 -10.5 -96.5 -10.5q-66 0 -115 22q-49 22 -81.5 61q-32.5 39 -48.5 91q-16 52 -16 112q0 118 33 201.5q33 83.5 87 137q54 53.5 123.5 78.5q69.5 25 142.5 25q28 0 54.5 -2.5q26.5 -2.5 50 -6.5q23.5 -4 41.5 -9q18 -5 30 -10l-51 -116q-21 11 -56 16.5q-35 5.5 -78 5.5q-77 0 -136 -46q-59 -46 -86 -130l271 0l-24 -113h-265v-15q0 -85 42.5 -132.5q42.5 -47.5 113.5 -47.5q45 0 82 9.5q37 9.5 62 23.5zM280 798q0 29 20 43.5q20 14.5 52 14.5q32 0 52 -14.5q20 -14.5 20 -43.5q0 -29 -20 -43q-20 -14 -52 -14q-32 0 -52 14q-20 14 -20 43zt0 0zM484 798q0 29 20 43.5q20 14.5 52 14.5q32 0 52 -14.5q20 -14.5 20 -43.5q0 -29 -20 -43q-20 -14 -52 -14q-32 0 -52 14t-20 43z" />
-<glyph unicode="&#62759;" horiz-adv-x="430" d="M393 46q-35 -29 -83 -44.5q-48 -15.5 -96 -15.5q-41 0 -74 13q-33 13 -56.5 37.5q-23.5 24.5 -36.5 58.5q-13 34 -13 76q0 85 25.5 149.5q25.5 64.5 67 107.5q41.5 43 94 64.5q52.5 21.5 106.5 21.5q52 0 79.5 -9q27.5 -9 47.5 -20l-42 -91q-21 11 -41 14q-20 3 -44 3q-42 0 -82.5 -28.5q-40.5 -28.5 -63.5 -82.5l188 0l-19 -86h-189v-20q0 -48 22 -76.5q22 -28.5 76 -28.5q33 0 60.5 11q27.5 11 47.5 24zM147 631q0 33 18.5 51.5q18.5 18.5 47.5 18.5q29 0 47.5 -18.5q18.5 -18.5 18.5 -51.5q0 -32 -18.5 -50q-18.5 -18 -47.5 -18q-29 0 -47.5 18q-18.5 18 -18.5 50zt0 0zM355 632q0 32 18.5 50.5q18.5 18.5 47.5 18.5q29 0 47.5 -18.5q18.5 -18.5 18.5 -50.5q0 -32 -18.5 -50.5q-18.5 -18.5 -47.5 -18.5q-29 0 -47.5 18.5t-18.5 50.5z" />
-<glyph unicode="&#62760;" horiz-adv-x="557" d="M327 0l59 277l-70 -18l-195 -259h-151l184 235l66 44q-18 8 -37.5 22q-19.5 14 -35.5 35q-16 21 -26 50q-10 29 -10 68q0 75 29 124q29 49 75.5 78.5q46.5 29.5 106 41.5q59.5 12 120.5 12q15 0 30 -1q1 0 14.5 -0.5q13.5 -0.5 36 -2.5q22.5 -2 43.5 -5q21 -3 37 -8l-147 -693zM451 583q-11 2 -23 3.5q-12 1.5 -29 1.5q-27 0 -54 -5.5q-27 -5.5 -48.5 -19.5q-21.5 -14 -35 -38.5q-13.5 -24.5 -13.5 -61.5q0 -48 29.5 -72.5q29.5 -24.5 77.5 -24.5h49zM281 856h327l-19 -89l-326 0z" />
-<glyph unicode="&#62761;" horiz-adv-x="481" d="M300 182l-63 -12l-122 -170h-147l120 159l57 35q-33 9 -57 37.5q-24 28.5 -24 73.5q0 46 19.5 84.5q19.5 38.5 53.5 66q34 27.5 80 43q46 15.5 100 15.5q25 0 50.5 -3q25.5 -3 48 -8q22.5 -5 41 -10.5q18.5 -5.5 29.5 -9.5l-102 -483h-123zM315 256l31 141q-5 2 -18.5 5.5q-13.5 3.5 -33.5 3.5q-44 0 -73.5 -23q-29.5 -23 -29.5 -65q0 -32 19 -48q19 -16 70 -16zM185 658h308l-19 -92l-308 0z" />
-<glyph unicode="&#62762;" horiz-adv-x="557" d="M327 0l59 277l-70 -18l-195 -259h-151l184 235l66 44q-18 8 -37.5 22q-19.5 14 -35.5 35q-16 21 -26 50q-10 29 -10 68q0 75 29 124q29 49 75.5 78.5q46.5 29.5 106 41.5q59.5 12 120.5 12q15 0 30 -1q1 0 14.5 -0.5q13.5 -0.5 36 -2.5q22.5 -2 43.5 -5q21 -3 37 -8l-147 -693zM451 583q-11 2 -23 3.5q-12 1.5 -29 1.5q-27 0 -54 -5.5q-27 -5.5 -48.5 -19.5q-21.5 -14 -35 -38.5q-13.5 -24.5 -13.5 -61.5q0 -48 29.5 -72.5q29.5 -24.5 77.5 -24.5h49zM375 874q-2 -28 13.5 -44q15.5 -16 43.5 -16q65 0 85 59l114 -17q-21 -61 -74.5 -91q-53.5 -30 -134.5 -30q-39 0 -68 9.5q-29 9.5 -48 25.5q-19 16 -28.5 37.5q-9.5 21.5 -10.5 46.5z" />
-<glyph unicode="&#62763;" horiz-adv-x="481" d="M300 182l-63 -12l-122 -170h-147l120 159l57 35q-33 9 -57 37.5q-24 28.5 -24 73.5q0 46 19.5 84.5q19.5 38.5 53.5 66q34 27.5 80 43q46 15.5 100 15.5q25 0 50.5 -3q25.5 -3 48 -8q22.5 -5 41 -10.5q18.5 -5.5 29.5 -9.5l-102 -483h-123zM315 256l31 141q-5 2 -18.5 5.5q-13.5 3.5 -33.5 3.5q-44 0 -73.5 -23q-29.5 -23 -29.5 -65q0 -32 19 -48q19 -16 70 -16zM287 704q-2 -39 10 -55q12 -16 37 -16q26 0 45.5 16q19.5 16 33.5 54l87 -25q-24 -65 -75 -96.5q-51 -31.5 -112 -31.5q-29 0 -55 7q-26 7 -44.5 22.5q-18.5 15.5 -28.5 39.5q-10 24 -8 59z" />
-<glyph unicode="&#62764;" horiz-adv-x="864" d="M238 415h85q42 147 127.5 223q85.5 76 198.5 76q109 0 167.5 -66q58.5 -66 58.5 -181q0 -97 -23.5 -184.5q-23.5 -87.5 -68.5 -153.5q-45 -66 -112 -104.5q-67 -38.5 -154 -38.5q-56 0 -96.5 19.5q-40.5 19.5 -66.5 54q-26 34.5 -38.5 80.5q-12.5 46 -12.5 100q0 26 3 53l-94 0l-62 -293h-130l148 700h130zM435 249q0 -64 24 -102.5q24 -38.5 82 -38.5q45 0 81.5 29.5q36.5 29.5 62 78q25.5 48.5 39.5 112q14 63.5 14 131.5q0 63 -26 98q-26 35 -80 35q-44 0 -80 -28.5q-36 -28.5 -62 -76q-26 -47.5 -40.5 -109.5q-14.5 -62 -14.5 -129zt0 0zM409 856h327l-19 -89l-326 0z" />
-<glyph unicode="&#62765;" horiz-adv-x="699" d="M275 308q29 97 92 151.5q63 54.5 147 54.5q48 0 80 -15q32 -15 51.5 -40q19.5 -25 28 -57q8.5 -32 8.5 -66q0 -76 -21 -140.5q-21 -64.5 -57 -111q-36 -46.5 -84 -72.5q-48 -26 -102 -26q-48 0 -79.5 15.5q-31.5 15.5 -51 40.5q-19.5 25 -27.5 56.5q-8 31.5 -8 63.5q0 11 0.5 21.5q0.5 10.5 1.5 21.5l-73 0l-43 -205h-123l106 500h123l-41 -192zM374 179q0 -45 13 -67.5q13 -22.5 46 -22.5q23 0 45 21q22 21 39 55q17 34 27.5 77q10.5 43 10.5 86q0 40 -11.5 61.5q-11.5 21.5 -48.5 21.5q-24 0 -46 -20q-22 -20 -38.5 -52.5q-16.5 -32.5 -26.5 -74.5q-10 -42 -10 -85zt0 0zM286 658h308l-19 -92l-308 0z" />
-<glyph unicode="&#62766;" horiz-adv-x="864" d="M238 415h85q42 147 127.5 223q85.5 76 198.5 76q109 0 167.5 -66q58.5 -66 58.5 -181q0 -97 -23.5 -184.5q-23.5 -87.5 -68.5 -153.5q-45 -66 -112 -104.5q-67 -38.5 -154 -38.5q-56 0 -96.5 19.5q-40.5 19.5 -66.5 54q-26 34.5 -38.5 80.5q-12.5 46 -12.5 100q0 26 3 53l-94 0l-62 -293h-130l148 700h130zM435 249q0 -64 24 -102.5q24 -38.5 82 -38.5q45 0 81.5 29.5q36.5 29.5 62 78q25.5 48.5 39.5 112q14 63.5 14 131.5q0 63 -26 98q-26 35 -80 35q-44 0 -80 -28.5q-36 -28.5 -62 -76q-26 -47.5 -40.5 -109.5q-14.5 -62 -14.5 -129zt0 0zM476 874q-2 -28 13.5 -44q15.5 -16 43.5 -16q65 0 85 59l114 -17q-21 -61 -74.5 -91q-53.5 -30 -134.5 -30q-39 0 -68 9.5q-29 9.5 -48 25.5q-19 16 -28.5 37.5q-9.5 21.5 -10.5 46.5z" />
-<glyph unicode="&#62767;" horiz-adv-x="699" d="M275 308q29 97 92 151.5q63 54.5 147 54.5q48 0 80 -15q32 -15 51.5 -40q19.5 -25 28 -57q8.5 -32 8.5 -66q0 -76 -21 -140.5q-21 -64.5 -57 -111q-36 -46.5 -84 -72.5q-48 -26 -102 -26q-48 0 -79.5 15.5q-31.5 15.5 -51 40.5q-19.5 25 -27.5 56.5q-8 31.5 -8 63.5q0 11 0.5 21.5q0.5 10.5 1.5 21.5l-73 0l-43 -205h-123l106 500h123l-41 -192zM374 179q0 -45 13 -67.5q13 -22.5 46 -22.5q23 0 45 21q22 21 39 55q17 34 27.5 77q10.5 43 10.5 86q0 40 -11.5 61.5q-11.5 21.5 -48.5 21.5q-24 0 -46 -20q-22 -20 -38.5 -52.5q-16.5 -32.5 -26.5 -74.5q-10 -42 -10 -85zt0 0zM398 704q-2 -39 10 -55q12 -16 37 -16q26 0 45.5 16q19.5 16 33.5 54l87 -25q-24 -65 -75 -96.5q-51 -31.5 -112 -31.5q-29 0 -55 7q-26 7 -44.5 22.5q-18.5 15.5 -28.5 39.5q-10 24 -8 59z" />
-<glyph unicode="&#62768;" horiz-adv-x="640" d="M490 578h-140q-23 -95 -43.5 -173q-20.5 -78 -41 -140q-20.5 -62 -43.5 -110q-23 -48 -50 -84q-18 -24 -37.5 -39q-19.5 -15 -39 -23.5q-19.5 -8.5 -37.5 -12q-18 -3.5 -34 -3.5q-46 0 -72 14l39 118q5 -2 10.5 -3q5.5 -1 10.5 -1q17 -1 34.5 8q17.5 9 32.5 29q18 22 38 64q20 42 41.5 108q21.5 66 45 157q23.5 91 49.5 213l124 0h138h130l-122 -578h84l-53 -247h-91l12 125l-107 0z" />
-<glyph unicode="&#62769;" horiz-adv-x="526" d="M363 397h-92q-25 -93 -48.5 -167.5q-23.5 -74.5 -51.5 -127q-28 -52.5 -62.5 -80.5q-34.5 -28 -80.5 -28q-54 0 -75 15l38 108q17 -5 29 -5q20 1 37.5 18q17.5 17 36.5 60.5q19 43.5 40.5 118.5q21.5 75 49.5 191l323 0l-85 -397h89l-64 -217h-94l30 114l-105 0z" />
-<glyph unicode="&#62770;" horiz-adv-x="638" d="M298 700l-79 -374l-30 -92h6l66 99l324 367h100l-153 -721q-19 -91 -61 -138.5q-42 -47.5 -120 -47.5q-28 0 -61 6l24 112q25 -2 40.5 2q15.5 4 25 15q9.5 11 15.5 28.5q6 17.5 12 43.5l80 381l29 89h-6l-64 -96l-326 -374h-100l148 700zM395 874q-2 -28 13.5 -44q15.5 -16 43.5 -16q65 0 85 59l114 -17q-21 -61 -74.5 -91q-53.5 -30 -134.5 -30q-39 0 -68 9.5q-29 9.5 -48 25.5q-19 16 -28.5 37.5q-9.5 21.5 -10.5 46.5z" />
-<glyph unicode="&#62771;" horiz-adv-x="512" d="M241 500l-65 -308q-3 -15 -5 -27q-2 -12 -2 -23q0 -20 8.5 -31.5q8.5 -11.5 28.5 -11.5q17 0 35 9q18 9 34.5 22.5q16.5 13.5 30 30q13.5 16.5 22.5 32.5l62 307h123l-85 -500q-23 -106 -67.5 -157q-44.5 -51 -119.5 -51q-14 0 -28.5 1.5q-14.5 1.5 -30.5 5.5l23 111q24 -2 41 2.5q17 4.5 28 16q11 11.5 18.5 29.5q7.5 18 12.5 42l23 90h-4q-15 -19 -33.5 -37.5q-18.5 -18.5 -41 -33.5q-22.5 -15 -49 -24q-26.5 -9 -56.5 -9q-47 0 -76 23.5q-29 23.5 -29 86.5q0 37 10 81l69 323zM298 704q-2 -39 10 -55q12 -16 37 -16q26 0 45.5 16q19.5 16 33.5 54l88 -25q-25 -65 -76 -96.5q-51 -31.5 -112 -31.5q-29 0 -55 7q-26 7 -44.5 22.5q-18.5 15.5 -28.5 39.5q-10 24 -8 59z" />
-<glyph unicode="&#62772;" horiz-adv-x="644" d="M58 262q0 93 25.5 175.5q25.5 82.5 72.5 144q47 61.5 113.5 97q66.5 35.5 148.5 35.5q54 0 97.5 -16q43.5 -16 74 -49.5q30.5 -33.5 47.5 -84.5q17 -51 17 -121q0 -94 -25.5 -177q-25.5 -83 -72 -145.5q-46.5 -62.5 -111 -98.5q-64.5 -36 -142.5 -36q-118 0 -181 69.5q-63 69.5 -64 206.5zt0 0zM195 266q0 -72 27.5 -115q27.5 -43 90.5 -43q46 0 83.5 27.5q37.5 27.5 64.5 74q27 46.5 41.5 106.5q14.5 60 14.5 125q0 79 -31 115q-31 36 -85 36q-45 0 -82.5 -26q-37.5 -26 -65 -70.5q-27.5 -44.5 -43 -104q-15.5 -59.5 -15.5 -125.5zt0 0zM368 798q0 31 24 46q24 15 59 15q33 0 58 -15q25 -15 25 -46q0 -30 -24 -45.5q-24 -15.5 -59 -15.5q-35 0 -59 15t-24 46z" />
-<glyph unicode="&#62773;" horiz-adv-x="496" d="M34 162q0 79 22.5 144q22.5 65 60 111q37.5 46 87 71.5q49.5 25.5 103.5 25.5q48 0 81 -15q33 -15 53.5 -40q20.5 -25 29.5 -57q9 -32 9 -66q0 -78 -22 -142.5q-22 -64.5 -59 -110.5q-37 -46 -86 -71.5q-49 -25.5 -103 -25.5q-47 0 -80 15.5q-33 15.5 -54.5 40.5q-21.5 25 -31.5 56.5q-10 31.5 -10 63.5zt0 0zM161 179q0 -90 65 -90q24 0 47 21q23 21 41 55q18 34 28.5 77q10.5 43 10.5 86q0 40 -13.5 61.5q-13.5 21.5 -50.5 21.5q-24 0 -47 -20q-23 -20 -41 -52.5q-18 -32.5 -29 -74.5q-11 -42 -11 -85zt0 0zM268 642q0 33 21.5 51q21.5 18 54.5 18q32 0 54.5 -18q22.5 -18 22.5 -51q0 -32 -22.5 -50.5q-22.5 -18.5 -54.5 -18.5q-33 0 -54.5 18.5t-21.5 50.5z" />
-<glyph unicode="&#62774;" horiz-adv-x="765" d="M681 700h130l-148 -700h-130zM167 700h130l-53 -251q13 2 33 5q20 3 43 3q48 0 85.5 -13.5q37.5 -13.5 63 -38q25.5 -24.5 38.5 -58q13 -33.5 13 -73.5q0 -66 -22 -118.5q-22 -52.5 -64 -89.5q-42 -37 -103 -56.5q-61 -19.5 -139 -19.5q-13 0 -26 0q-13 0 -16 1q-18 0 -39 2q-21 2 -45.5 5q-24.5 3 -45.5 9zM173 118q21 -6 54 -6q33 0 61.5 9q28.5 9 49.5 26.5q21 17.5 33 42.5q12 25 12 58q0 87 -106 87q-13 0 -32 -2.5q-19 -2.5 -27 -5.5zM449 874q-2 -28 13.5 -44q15.5 -16 43.5 -16q65 0 85 59l114 -17q-21 -61 -74.5 -91q-53.5 -30 -134.5 -30q-39 0 -68 9.5q-29 9.5 -48 25.5q-19 16 -28.5 37.5q-9.5 21.5 -10.5 46.5z" />
-<glyph unicode="&#62775;" horiz-adv-x="675" d="M166 142q-1 -4 -2 -7q-1 -3 -1 -7q0 -32 39 -32q21 0 40.5 7q19.5 7 34 19q14.5 12 23.5 28.5q9 16.5 9 36.5q0 28 -13.5 39.5q-13.5 11.5 -47.5 11.5q-18 0 -33.5 -3.5q-15.5 -3.5 -29.5 -8.5zM204 316q20 5 48 9q28 4 49 4q74 0 104.5 -30q30.5 -30 30.5 -78q0 -51 -21.5 -93q-21.5 -42 -57.5 -72q-36 -30 -84 -46.5q-48 -16.5 -101 -16.5q-71 0 -103.5 24.5q-32.5 24.5 -32.5 68.5q0 14 3 31l84 383h123zM557 500h123l-106 -500h-123zM373 704q-2 -39 10 -55q12 -16 37 -16q26 0 45.5 16q19.5 16 33.5 54l87 -25q-24 -65 -75 -96.5q-51 -31.5 -112 -31.5q-29 0 -55 7q-26 7 -44.5 22.5q-18.5 15.5 -28.5 39.5q-10 24 -8 59z" />
-<glyph unicode="&#62776;" horiz-adv-x="506" d="M392 309q-14 0 -19.5 0q-5.5 0 -17.5 -1q-40 -1 -73.5 -6q-33.5 -5 -58 -17q-24.5 -12 -38 -33.5q-13.5 -21.5 -13.5 -55.5q0 -45 32 -66.5q32 -21.5 79 -21.5q48 0 90 10.5q42 10.5 67 25.5l12 -108q-29 -21 -84.5 -35.5q-55.5 -14.5 -117.5 -14.5q-41 0 -79.5 11q-38.5 11 -68.5 33.5q-30 22.5 -48.5 57.5q-18.5 35 -18.5 83q0 48 15 84q15 36 40 61q25 25 56 39q31 14 63 18l0 6q-33 14 -56.5 44q-23.5 30 -23.5 83q0 56 24.5 95.5q24.5 39.5 63 64q38.5 24.5 85.5 35.5q47 11 92 11q28 0 56 -4q28 -4 52.5 -10.5q24.5 -6.5 43.5 -14q19 -7.5 28 -14.5l-58 -110q-21 11 -55 21q-34 10 -68 10q-26 0 -49 -5q-23 -5 -40.5 -16q-17.5 -11 -27.5 -27.5q-10 -16.5 -10 -40.5q0 -37 20 -54q20 -17 52 -25q15 -5 39 -5q24 0 41 0h23l-23 -108zM230 798q0 29 20 43.5q20 14.5 52 14.5q32 0 52 -14.5q20 -14.5 20 -43.5q0 -29 -20 -43q-20 -14 -52 -14q-32 0 -52 14q-20 14 -20 43zt0 0zM434 798q0 29 20 43.5q20 14.5 52 14.5q32 0 52 -14.5q20 -14.5 20 -43.5q0 -29 -20 -43q-20 -14 -52 -14q-32 0 -52 14t-20 43z" />
-<glyph unicode="&#62777;" horiz-adv-x="423" d="M267 210q-61 0 -87 -18.5q-26 -18.5 -28 -44.5q-2 -24 14.5 -39.5q16.5 -15.5 58.5 -15.5q38 0 71 9q33 9 58 23l10 -90q-26 -19 -70 -32q-44 -13 -92 -13q-49 0 -83 9q-34 9 -55 26q-21 17 -30 40.5q-9 23.5 -9 53.5q0 52 31 90q31 38 88 56l0 4q-27 11 -40 35q-13 24 -13 55q0 31 13.5 58.5q13.5 27.5 38.5 48q25 20.5 60.5 32.5q35.5 12 79.5 12q59 0 100.5 -12.5q41.5 -12.5 66.5 -29.5l-47 -93q-15 11 -42 21.5q-27 10.5 -68 10.5q-36 0 -58 -17q-22 -17 -24 -44q-2 -23 14.5 -36q16.5 -13 49.5 -13h58l-19 -86zM135 631q0 33 18.5 51.5q18.5 18.5 47.5 18.5q29 0 47.5 -18.5q18.5 -18.5 18.5 -51.5q0 -32 -18.5 -50q-18.5 -18 -47.5 -18q-29 0 -47.5 18q-18.5 18 -18.5 50zt0 0zM343 632q0 32 18.5 50.5q18.5 18.5 47.5 18.5q29 0 47.5 -18.5q18.5 -18.5 18.5 -50.5q0 -32 -18.5 -50.5q-18.5 -18.5 -47.5 -18.5q-29 0 -47.5 18.5t-18.5 50.5z" />
-<glyph unicode="&#62778;" horiz-adv-x="278" d="M183 700h129l-148 -700h-129zM184 798q0 31 24 46q24 15 59 15q33 0 58 -15q25 -15 25 -46q0 -30 -24 -45.5q-24 -15.5 -59 -15.5q-35 0 -59 15t-24 46z" />
-<glyph unicode="&#62779;" horiz-adv-x="256" d="M133 500h123l-106 -500l-123 0z" />
-<glyph unicode="&#62780;" horiz-adv-x="489" d="M168 700h130h264l-26 -122h-264l-37 -173h243l-25 -122h-243l-60 -283l-130 0z" />
-<glyph unicode="&#62781;" horiz-adv-x="414" d="M403 397h-179l-27 -120h173l-22 -103h-173l-37 -174h-123l106 500l302 0z" />
-<glyph unicode="&#62782;" horiz-adv-x="537" d="M483 29q-55 -36 -134 -42l-25 -162h-116l44 168q-49 10 -85.5 35.5q-36.5 25.5 -60.5 62.5q-24 37 -36 83q-12 46 -12 98q0 118 33 201.5q33 83.5 87 137q54 53.5 123.5 78.5q69.5 25 142.5 25q57 0 97.5 -8.5q40.5 -8.5 63.5 -19.5l-51 -116q-20 11 -48 16.5q-28 5.5 -71 5.5q-51 0 -95 -21q-44 -21 -76 -60q-32 -39 -50.5 -95q-18.5 -56 -18.5 -127q0 -85 42.5 -132.5q42.5 -47.5 113.5 -47.5q45 0 74.5 9.5q29.5 9.5 55.5 23.5z" />
-<glyph unicode="&#62783;" horiz-adv-x="412" d="M370 41q-26 -19 -57.5 -32.5q-31.5 -13.5 -64.5 -19.5l-25 -164h-116l44 168q-31 8 -53 24q-22 16 -36.5 38q-14.5 22 -21 48.5q-6.5 26.5 -6.5 54.5q0 84 24 150q24 66 63.5 111.5q39.5 45.5 90 70q50.5 24.5 103.5 24.5q47 0 74.5 -9q27.5 -9 49.5 -20l-46 -98q-19 11 -39.5 15q-20.5 4 -44.5 4q-27 0 -52.5 -17.5q-25.5 -17.5 -46 -46q-20.5 -28.5 -32.5 -66.5q-12 -38 -12 -78q0 -51 22 -77.5q22 -26.5 58 -26.5q30 0 55.5 9.5q25.5 9.5 45.5 21.5z" />
-<glyph unicode="&#62784;" horiz-adv-x="620" d="M168 700q21 3 46 5q25 2 46.5 3q21.5 1 37.5 1q9 0 25.5 0.5q16.5 0.5 36.5 0.5q61 0 111 -15.5q50 -15.5 85.5 -47.5q35.5 -32 55 -82q19.5 -50 19.5 -119q0 -44 -7.5 -94.5q-7.5 -50.5 -25.5 -101.5q-18 -51 -49.5 -98q-31.5 -47 -79 -83q-47.5 -36 -114 -58q-66.5 -22 -154.5 -22q-15 0 -30 0.5q-15 0.5 -21 0.5q-20 1 -44.5 2.5q-24.5 1.5 -49 3q-24.5 1.5 -36.5 3.5zM174 114q4 -1 12.5 -1.5q8.5 -0.5 18.5 -1q10 -0.5 19 -0.5q9 0 14 0q70 0 119 31.5q49 31.5 79.5 79q30.5 47.5 44 103q13.5 55.5 13.5 103.5q0 80 -33.5 120q-33.5 40 -111.5 40q-20 0 -42 -1q-22 -1 -34 -3zM428 870h157l-6 -30l-172 -88l-104 0z" />
-<glyph unicode="&#62785;" horiz-adv-x="507" d="M442 176q-9 -42 -13 -78q-4 -36 -4 -68q0 -8 0 -15.5q0 -7.5 1 -15.5l-84 0l-14 86h-4q-11 -18 -28.5 -35.5q-17.5 -17.5 -38.5 -32q-21 -14.5 -44.5 -23q-23.5 -8.5 -46.5 -8.5q-62 0 -95.5 44q-33.5 44 -33.5 121q0 70 19 135q19 65 53.5 115.5q34.5 50.5 84 80.5q49.5 30 109.5 30q29 0 48 -3.5q19 -3.5 36 -11.5l43 203h123zM365 394q-12 8 -27.5 11.5q-15.5 3.5 -41.5 3.5q-30 0 -54.5 -20.5q-24.5 -20.5 -41.5 -55q-17 -34.5 -26.5 -79.5q-9.5 -45 -9.5 -94q0 -29 13 -50q13 -21 37 -21q15 0 30.5 7.5q15.5 7.5 29 19.5q13.5 12 25 26q11.5 14 18.5 26zM626 700h125l-6 -30l-133 -124l-69 0z" />
-<glyph unicode="&#62786;" horiz-adv-x="624" d="M455 293h-243l-62 -293h-130l148 700h130l-60 -285h243l60 285h130l-148 -700h-130zM472 870h157l-6 -30l-172 -88l-104 0z" />
-<glyph unicode="&#62787;" horiz-adv-x="528" d="M309 0l60 284q10 44 10 73q0 26 -10 37.5q-10 11.5 -31 11.5q-19 0 -40 -12q-21 -12 -40 -30q-19 -18 -34.5 -38.5q-15.5 -20.5 -23.5 -37.5l-59 -288h-123l148 700h123l-63 -288h4q13 16 31.5 34q18.5 18 41 33q22.5 15 49 25q26.5 10 57.5 10q48 0 74.5 -24q26.5 -24 26.5 -85q0 -37 -12 -94l-66 -311zM424 720h125l-6 -30l-133 -124l-69 0z" />
-<glyph unicode="&#62788;" horiz-adv-x="495" d="M441 0h-291h-130l148 700h130l-123 -578h291zM398 700h125l-6 -30l-133 -124l-69 0z" />
-<glyph unicode="&#62789;" horiz-adv-x="272" d="M168 148q-6 -29 0.5 -43q6.5 -14 21.5 -14q28 0 53 11l-3 -89q-18 -11 -52 -18q-34 -7 -67 -7q-43 0 -65.5 16.5q-22.5 16.5 -22.5 61.5q0 23 6 53l123 581h123zM360 700h125l-6 -30l-133 -124l-69 0z" />
-<glyph unicode="&#62790;" horiz-adv-x="547" d="M614 578h-194l-123 -578h-129l122 578h-194l26 122h517zM448 870h157l-6 -30l-172 -88l-104 0z" />
-<glyph unicode="&#62791;" horiz-adv-x="320" d="M64 500h65l20 94l131 37l-28 -131h117l-23 -103h-116l-49 -226q-6 -27 -6 -44q0 -22 10 -30q10 -8 30 -8q19 0 34.5 4q15.5 4 32.5 13l0 -92q-11 -6 -26.5 -11.5q-15.5 -5.5 -33.5 -9q-18 -3.5 -37 -5.5q-19 -2 -35 -2q-51 0 -78.5 23.5q-27.5 23.5 -27.5 71.5q0 10 1.5 21q1.5 11 3.5 23l58 272h-67zM390 700h125l-6 -30l-133 -124l-69 0z" />
-<glyph unicode="&#62792;" horiz-adv-x="579" d="M288 290l-7 -119h4l44 119l216 410h146l-395 -705h-94l-101 705h142zM464 870h157l-6 -30l-172 -88l-104 0z" />
-<glyph unicode="&#62793;" horiz-adv-x="448" d="M209 238l2 -77h3l30 79l137 260h139l-306 -505h-76l-98 505h136zM327 720h125l-6 -30l-133 -124l-69 0z" />
-<glyph unicode="&#62794;" horiz-adv-x="507" d="M141 309l23 108h23q9 0 21 0.5q12 0.5 24.5 1.5q12.5 1 24.5 2q12 1 20 2q20 3 40 9.5q20 6.5 35.5 18.5q15.5 12 25.5 29q10 17 10 41q0 32 -24.5 50.5q-24.5 18.5 -72.5 18.5q-42 0 -80.5 -12q-38.5 -12 -63.5 -23l-9 116q12 6 32.5 13q20.5 7 46 13q25.5 6 55.5 10.5q30 4.5 60 4.5q42 0 77 -9.5q35 -9.5 61 -28.5q26 -19 40.5 -47.5q14.5 -28.5 14.5 -65.5q0 -69 -37.5 -121q-37.5 -52 -111.5 -69l0 -5q19 -6 37 -16.5q18 -10.5 31.5 -27.5q13.5 -17 22 -41q8.5 -24 8.5 -57q0 -61 -24 -105.5q-24 -44.5 -65.5 -74q-41.5 -29.5 -97.5 -44q-56 -14.5 -119 -14.5q-63 0 -112.5 11q-49.5 11 -73.5 26l58 119q20 -11 58 -22.5q38 -11.5 94 -11.5q24 0 50 6q26 6 47 19.5q21 13.5 34.5 35.5q13.5 22 13.5 54q0 48 -34.5 66q-34.5 18 -98.5 20l-38 0z" />
-<glyph unicode="&#62795;" horiz-adv-x="422" d="M72 133l20 88h61q18 0 37.5 8.5q19.5 8.5 36 23.5q16.5 15 27 35q10.5 20 10.5 43q1 34 -17 52q-18 18 -60 18q-39 -1 -65 -10q-26 -9 -46 -20l-6 97q34 17 80 29q46 12 102 12q71 0 110.5 -38q39.5 -38 38.5 -96q0 -32 -10.5 -59.5q-10.5 -27.5 -27.5 -50q-17 -22.5 -39.5 -39.5q-22.5 -17 -47.5 -27l-1 -4q42 -13 64.5 -44q22.5 -31 22.5 -83q0 -67 -26 -119q-26 -52 -67.5 -87.5q-41.5 -35.5 -94 -54q-52.5 -18.5 -105.5 -18.5q-51 0 -87.5 11.5q-36.5 11.5 -59.5 26.5l55 100q20 -13 46 -21.5q26 -8.5 53 -8.5q24 0 51.5 9q27.5 9 51 28q23.5 19 39 48q15.5 29 15.5 68q0 38 -28.5 60.5q-28.5 22.5 -90.5 22.5z" />
-<glyph unicode="&#62796;" horiz-adv-x="507" d="M141 309l23 108h23q9 0 21 0.5q12 0.5 24.5 1.5q12.5 1 24.5 2q12 1 20 2q20 3 40 9.5q20 6.5 35.5 18.5q15.5 12 25.5 29q10 17 10 41q0 32 -24.5 50.5q-24.5 18.5 -72.5 18.5q-42 0 -80.5 -12q-38.5 -12 -63.5 -23l-9 116q12 6 32.5 13q20.5 7 46 13q25.5 6 55.5 10.5q30 4.5 60 4.5q42 0 77 -9.5q35 -9.5 61 -28.5q26 -19 40.5 -47.5q14.5 -28.5 14.5 -65.5q0 -69 -37.5 -121q-37.5 -52 -111.5 -69l0 -5q19 -6 37 -16.5q18 -10.5 31.5 -27.5q13.5 -17 22 -41q8.5 -24 8.5 -57q0 -61 -24 -105.5q-24 -44.5 -65.5 -74q-41.5 -29.5 -97.5 -44q-56 -14.5 -119 -14.5q-63 0 -112.5 11q-49.5 11 -73.5 26l58 119q20 -11 58 -22.5q38 -11.5 94 -11.5q24 0 50 6q26 6 47 19.5q21 13.5 34.5 35.5q13.5 22 13.5 54q0 48 -34.5 66q-34.5 18 -98.5 20l-38 0zM385 737h-84l-101 94l8 39h92l41 -45l12 -30l25 29l64 46h98l-8 -40z" />
-<glyph unicode="&#62797;" horiz-adv-x="422" d="M72 133l20 88h61q18 0 37.5 8.5q19.5 8.5 36 23.5q16.5 15 27 35q10.5 20 10.5 43q1 34 -17 52q-18 18 -60 18q-39 -1 -65 -10q-26 -9 -46 -20l-6 97q34 17 80 29q46 12 102 12q71 0 110.5 -38q39.5 -38 38.5 -96q0 -32 -10.5 -59.5q-10.5 -27.5 -27.5 -50q-17 -22.5 -39.5 -39.5q-22.5 -17 -47.5 -27l-1 -4q42 -13 64.5 -44q22.5 -31 22.5 -83q0 -67 -26 -119q-26 -52 -67.5 -87.5q-41.5 -35.5 -94 -54q-52.5 -18.5 -105.5 -18.5q-51 0 -87.5 11.5q-36.5 11.5 -59.5 26.5l55 100q20 -13 46 -21.5q26 -8.5 53 -8.5q24 0 51.5 9q27.5 9 51 28q23.5 19 39 48q15.5 29 15.5 68q0 38 -28.5 60.5q-28.5 22.5 -90.5 22.5zM275 550h-87l-70 182h103l23 -66l5 -49l28 49l56 66l98 0z" />
-<glyph unicode="&#63020;" horiz-adv-x="215" d="M238 456q0 -39 -23 -58q-23 -19 -50 -19q-17 0 -29.5 6.5q-12.5 6.5 -20.5 17q-8 10.5 -12 23q-4 12.5 -4 25.5q0 40 17 71q17 31 40.5 52.5q23.5 21.5 47 34q23.5 12.5 37.5 15.5l19 -54q-20 -8 -37.5 -25.5q-17.5 -17.5 -23.5 -37.5q17 0 28 -15t11 -36z" />
-<glyph unicode="&#63021;" horiz-adv-x="215" d="M121 462q0 18 7.5 31.5q7.5 13.5 18.5 22.5q11 9 24 13.5q13 4.5 25 4.5q35 0 50 -18q15 -18 15 -49q0 -41 -15.5 -72q-15.5 -31 -38 -53q-22.5 -22 -47 -35q-24.5 -13 -42.5 -19l-19 55q21 9 38.5 24q17.5 15 24.5 38q-18 2 -30 16.5t-11 40.5z" />
-<glyph unicode="&#63022;" horiz-adv-x="379" d="M238 456q0 -39 -23 -58q-23 -19 -50 -19q-17 0 -29.5 6.5q-12.5 6.5 -20.5 17q-8 10.5 -12 23q-4 12.5 -4 25.5q0 40 17 71q17 31 40.5 52.5q23.5 21.5 47 34q23.5 12.5 37.5 15.5l19 -54q-20 -8 -37.5 -25.5q-17.5 -17.5 -23.5 -37.5q17 0 28 -15q11 -15 11 -36zt0 0zM402 456q0 -39 -23 -58q-23 -19 -50 -19q-17 0 -29.5 6.5q-12.5 6.5 -20.5 17q-8 10.5 -12 23q-4 12.5 -4 25.5q0 40 17 71q17 31 40.5 52.5q23.5 21.5 47 34q23.5 12.5 37.5 15.5l19 -54q-20 -8 -37.5 -25.5q-17.5 -17.5 -23.5 -37.5q17 0 28 -15t11 -36z" />
-<glyph unicode="&#63023;" horiz-adv-x="379" d="M121 462q0 18 7.5 31.5q7.5 13.5 18.5 22.5q11 9 24 13.5q13 4.5 25 4.5q35 0 50 -18q15 -18 15 -49q0 -41 -15.5 -72q-15.5 -31 -38 -53q-22.5 -22 -47 -35q-24.5 -13 -42.5 -19l-19 55q21 9 38.5 24q17.5 15 24.5 38q-18 2 -30 16.5q-12 14.5 -11 40.5zt0 0zM284 462q0 18 7.5 31.5q7.5 13.5 18.5 22.5q11 9 24 13.5q13 4.5 25 4.5q35 0 50 -18q15 -18 15 -49q0 -41 -15.5 -72q-15.5 -31 -38 -53q-22.5 -22 -47 -35q-24.5 -13 -42.5 -19l-19 55q21 9 38.5 24q17.5 15 24.5 38q-18 2 -30 16.5t-11 40.5z" />
-<glyph unicode="&#63028;" horiz-adv-x="218" d="M137 525h108l-79 -216l-75 0z" />
-<glyph unicode="&#63029;" horiz-adv-x="354" d="M115 525h108l-79 -216h-75zM256 525h108l-79 -216l-75 0z" />
-<glyph unicode="&#63074;" horiz-adv-x="402" d="M244 544l20 46l-36 -32l-63 -36l-37 75l179 110h81l-91 -427l-109 0z" />
-<glyph unicode="&#63171;" horiz-adv-x="261" d="M20 -113q0 17 6.5 30q6.5 13 17 22q10.5 9 23.5 14q13 5 27 5q35 0 49.5 -19q14.5 -19 13.5 -51q0 -36 -14 -63.5q-14 -27.5 -34.5 -47.5q-20.5 -20 -42.5 -32.5q-22 -12.5 -38 -17.5l-21 54q16 7 31.5 19.5q15.5 12.5 23.5 32.5q-19 3 -30.5 16.5t-11.5 37.5z" />
-<glyph unicode="&#63177;" horiz-adv-x="314" d="M280 870h157l-6 -30l-172 -88l-104 0z" />
-<glyph unicode="&#63178;" horiz-adv-x="400" d="M339 737h-84l-101 94l8 39h92l41 -45l12 -30l25 29l64 46h98l-8 -40z" />
-<glyph unicode="&#63179;" horiz-adv-x="376" d="M146 798q0 29 20 43.5q20 14.5 52 14.5q32 0 52 -14.5q20 -14.5 20 -43.5q0 -29 -20 -43q-20 -14 -52 -14q-32 0 -52 14q-20 14 -20 43zt0 0zM350 798q0 29 20 43.5q20 14.5 52 14.5q32 0 52 -14.5q20 -14.5 20 -43.5q0 -29 -20 -43q-20 -14 -52 -14q-32 0 -52 14t-20 43z" />
-<glyph unicode="&#63182;" horiz-adv-x="285" d="M379 752h-90l-131 88l6 30l140 0z" />
-<glyph unicode="&#63183;" horiz-adv-x="453" d="M262 850h126l-3 -16l-115 -93h-87zM450 850h132l-3 -16l-155 -93l-90 0z" />
-<glyph unicode="&#63184;" horiz-adv-x="445" d="M192 856h327l-19 -89l-326 0z" />
-<glyph unicode="&#63185;" horiz-adv-x="388" d="M261 874q-2 -28 13.5 -44q15.5 -16 43.5 -16q65 0 85 59l114 -17q-21 -61 -74.5 -91q-53.5 -30 -134.5 -30q-39 0 -68 9.5q-29 9.5 -48 25.5q-19 16 -28.5 37.5q-9.5 21.5 -10.5 46.5z" />
-<glyph unicode="&#63188;" horiz-adv-x="457" d="M295 704q-2 -39 10 -55q12 -16 37 -16q26 0 45.5 16q19.5 16 33.5 54l87 -25q-24 -65 -75 -96.5q-51 -31.5 -112 -31.5q-29 0 -55 7q-26 7 -44.5 22.5q-18.5 15.5 -28.5 39.5q-10 24 -8 59z" />
-<glyph unicode="&#64257;" horiz-adv-x="526" d="M180 0q-8 -51 -20.5 -90q-12.5 -39 -33 -65q-20.5 -26 -51 -39.5q-30.5 -13.5 -74.5 -13.5q-36 0 -70.5 5.5q-34.5 5.5 -59.5 22.5l34 91q17 -7 34 -9q17 -2 43 -2q32 0 49.5 25q17.5 25 25.5 75l60 397h-66l21 103h65l6 28q20 95 76 138.5q56 43.5 144 43.5q66 0 114.5 -11q48.5 -11 75.5 -29l-50 -93q-22 14 -56.5 22.5q-34.5 8.5 -77.5 8.5q-28 0 -46.5 -7.5q-18.5 -7.5 -30.5 -22q-12 -14.5 -19.5 -34.5q-7.5 -20 -12.5 -44l253 0l-75 -500h-123l60 397l-135 0z" />
-<glyph unicode="&#64258;" horiz-adv-x="559" d="M118 397h-66l21 103h65l6 28q20 94 73 139.5q53 45.5 158 45.5q22 0 50 -2q28 -2 55 -4.5q27 -2.5 50.5 -5.5q23.5 -3 36.5 -6l-90 -533q-2 -11 -3.5 -19.5q-1.5 -8.5 -1.5 -16.5q0 -35 27 -35q11 0 22.5 2q11.5 2 28.5 8l-4 -89q-9 -4 -22 -8.5q-13 -4.5 -29 -8q-16 -3.5 -33.5 -5.5q-17.5 -2 -33.5 -2q-44 0 -67 17q-23 17 -23 57q0 19 4 38l84 502q-11 3 -32 5.5q-21 2.5 -41 2.5q-44 0 -63 -30.5q-19 -30.5 -29 -79.5l72 0l-20 -103h-72l-61 -397q-7 -51 -20 -90q-13 -39 -33.5 -65q-20.5 -26 -51 -39.5q-30.5 -13.5 -74.5 -13.5q-36 0 -70.5 5.5q-34.5 5.5 -59.5 22.5l34 91q17 -7 34 -9q17 -2 43 -2q32 0 49.5 25q17.5 25 25.5 75z" />
diff --git a/admin/survey/Fonts/PTSans/PTS76F_W.ttf b/admin/survey/Fonts/PTSans/PTS76F_W.ttf
deleted file mode 100644
index 9a2a6b8..0000000
--- a/admin/survey/Fonts/PTSans/PTS76F_W.ttf
+++ /dev/null
Binary files differ
diff --git a/admin/survey/Fonts/PTSans/PTS76F_W.woff b/admin/survey/Fonts/PTSans/PTS76F_W.woff
deleted file mode 100644
index 45e95c5..0000000
--- a/admin/survey/Fonts/PTSans/PTS76F_W.woff
+++ /dev/null
Binary files differ
diff --git a/admin/survey/Fonts/Times-Bold.afm b/admin/survey/Fonts/Times-Bold.afm
deleted file mode 100644
index ee718a2..0000000
--- a/admin/survey/Fonts/Times-Bold.afm
+++ /dev/null
@@ -1,2588 +0,0 @@
-StartFontMetrics 4.1
-Comment Copyright (c) 1985, 1987, 1989, 1990, 1993, 1997 Adobe Systems Incorporated. All Rights Reserved.
-Comment Creation Date: Thu May 1 12:52:56 1997
-Comment UniqueID 43065
-Comment VMusage 41636 52661
-FontName Times-Bold
-FullName Times Bold
-FamilyName Times
-Weight Bold
-ItalicAngle 0
-IsFixedPitch false
-CharacterSet ExtendedRoman
-FontBBox -168 -218 1000 935
-UnderlinePosition -100
-UnderlineThickness 50
-Version 002.000
-Notice Copyright (c) 1985, 1987, 1989, 1990, 1993, 1997 Adobe Systems Incorporated. All Rights Reserved.Times is a trademark of Linotype-Hell AG and/or its subsidiaries.
-EncodingScheme AdobeStandardEncoding
-CapHeight 676
-XHeight 461
-Ascender 683
-Descender -217
-StdHW 44
-StdVW 139
-StartCharMetrics 315
-C 32 ; WX 250 ; N space ; B 0 0 0 0 ;
-C 33 ; WX 333 ; N exclam ; B 81 -13 251 691 ;
-C 34 ; WX 555 ; N quotedbl ; B 83 404 472 691 ;
-C 35 ; WX 500 ; N numbersign ; B 4 0 496 700 ;
-C 36 ; WX 500 ; N dollar ; B 29 -99 472 750 ;
-C 37 ; WX 1000 ; N percent ; B 124 -14 877 692 ;
-C 38 ; WX 833 ; N ampersand ; B 62 -16 787 691 ;
-C 39 ; WX 333 ; N quoteright ; B 79 356 263 691 ;
-C 40 ; WX 333 ; N parenleft ; B 46 -168 306 694 ;
-C 41 ; WX 333 ; N parenright ; B 27 -168 287 694 ;
-C 42 ; WX 500 ; N asterisk ; B 56 255 447 691 ;
-C 43 ; WX 570 ; N plus ; B 33 0 537 506 ;
-C 44 ; WX 250 ; N comma ; B 39 -180 223 155 ;
-C 45 ; WX 333 ; N hyphen ; B 44 171 287 287 ;
-C 46 ; WX 250 ; N period ; B 41 -13 210 156 ;
-C 47 ; WX 278 ; N slash ; B -24 -19 302 691 ;
-C 48 ; WX 500 ; N zero ; B 24 -13 476 688 ;
-C 49 ; WX 500 ; N one ; B 65 0 442 688 ;
-C 50 ; WX 500 ; N two ; B 17 0 478 688 ;
-C 51 ; WX 500 ; N three ; B 16 -14 468 688 ;
-C 52 ; WX 500 ; N four ; B 19 0 475 688 ;
-C 53 ; WX 500 ; N five ; B 22 -8 470 676 ;
-C 54 ; WX 500 ; N six ; B 28 -13 475 688 ;
-C 55 ; WX 500 ; N seven ; B 17 0 477 676 ;
-C 56 ; WX 500 ; N eight ; B 28 -13 472 688 ;
-C 57 ; WX 500 ; N nine ; B 26 -13 473 688 ;
-C 58 ; WX 333 ; N colon ; B 82 -13 251 472 ;
-C 59 ; WX 333 ; N semicolon ; B 82 -180 266 472 ;
-C 60 ; WX 570 ; N less ; B 31 -8 539 514 ;
-C 61 ; WX 570 ; N equal ; B 33 107 537 399 ;
-C 62 ; WX 570 ; N greater ; B 31 -8 539 514 ;
-C 63 ; WX 500 ; N question ; B 57 -13 445 689 ;
-C 64 ; WX 930 ; N at ; B 108 -19 822 691 ;
-C 65 ; WX 722 ; N A ; B 9 0 689 690 ;
-C 66 ; WX 667 ; N B ; B 16 0 619 676 ;
-C 67 ; WX 722 ; N C ; B 49 -19 687 691 ;
-C 68 ; WX 722 ; N D ; B 14 0 690 676 ;
-C 69 ; WX 667 ; N E ; B 16 0 641 676 ;
-C 70 ; WX 611 ; N F ; B 16 0 583 676 ;
-C 71 ; WX 778 ; N G ; B 37 -19 755 691 ;
-C 72 ; WX 778 ; N H ; B 21 0 759 676 ;
-C 73 ; WX 389 ; N I ; B 20 0 370 676 ;
-C 74 ; WX 500 ; N J ; B 3 -96 479 676 ;
-C 75 ; WX 778 ; N K ; B 30 0 769 676 ;
-C 76 ; WX 667 ; N L ; B 19 0 638 676 ;
-C 77 ; WX 944 ; N M ; B 14 0 921 676 ;
-C 78 ; WX 722 ; N N ; B 16 -18 701 676 ;
-C 79 ; WX 778 ; N O ; B 35 -19 743 691 ;
-C 80 ; WX 611 ; N P ; B 16 0 600 676 ;
-C 81 ; WX 778 ; N Q ; B 35 -176 743 691 ;
-C 82 ; WX 722 ; N R ; B 26 0 715 676 ;
-C 83 ; WX 556 ; N S ; B 35 -19 513 692 ;
-C 84 ; WX 667 ; N T ; B 31 0 636 676 ;
-C 85 ; WX 722 ; N U ; B 16 -19 701 676 ;
-C 86 ; WX 722 ; N V ; B 16 -18 701 676 ;
-C 87 ; WX 1000 ; N W ; B 19 -15 981 676 ;
-C 88 ; WX 722 ; N X ; B 16 0 699 676 ;
-C 89 ; WX 722 ; N Y ; B 15 0 699 676 ;
-C 90 ; WX 667 ; N Z ; B 28 0 634 676 ;
-C 91 ; WX 333 ; N bracketleft ; B 67 -149 301 678 ;
-C 92 ; WX 278 ; N backslash ; B -25 -19 303 691 ;
-C 93 ; WX 333 ; N bracketright ; B 32 -149 266 678 ;
-C 94 ; WX 581 ; N asciicircum ; B 73 311 509 676 ;
-C 95 ; WX 500 ; N underscore ; B 0 -125 500 -75 ;
-C 96 ; WX 333 ; N quoteleft ; B 70 356 254 691 ;
-C 97 ; WX 500 ; N a ; B 25 -14 488 473 ;
-C 98 ; WX 556 ; N b ; B 17 -14 521 676 ;
-C 99 ; WX 444 ; N c ; B 25 -14 430 473 ;
-C 100 ; WX 556 ; N d ; B 25 -14 534 676 ;
-C 101 ; WX 444 ; N e ; B 25 -14 426 473 ;
-C 102 ; WX 333 ; N f ; B 14 0 389 691 ; L i fi ; L l fl ;
-C 103 ; WX 500 ; N g ; B 28 -206 483 473 ;
-C 104 ; WX 556 ; N h ; B 16 0 534 676 ;
-C 105 ; WX 278 ; N i ; B 16 0 255 691 ;
-C 106 ; WX 333 ; N j ; B -57 -203 263 691 ;
-C 107 ; WX 556 ; N k ; B 22 0 543 676 ;
-C 108 ; WX 278 ; N l ; B 16 0 255 676 ;
-C 109 ; WX 833 ; N m ; B 16 0 814 473 ;
-C 110 ; WX 556 ; N n ; B 21 0 539 473 ;
-C 111 ; WX 500 ; N o ; B 25 -14 476 473 ;
-C 112 ; WX 556 ; N p ; B 19 -205 524 473 ;
-C 113 ; WX 556 ; N q ; B 34 -205 536 473 ;
-C 114 ; WX 444 ; N r ; B 29 0 434 473 ;
-C 115 ; WX 389 ; N s ; B 25 -14 361 473 ;
-C 116 ; WX 333 ; N t ; B 20 -12 332 630 ;
-C 117 ; WX 556 ; N u ; B 16 -14 537 461 ;
-C 118 ; WX 500 ; N v ; B 21 -14 485 461 ;
-C 119 ; WX 722 ; N w ; B 23 -14 707 461 ;
-C 120 ; WX 500 ; N x ; B 12 0 484 461 ;
-C 121 ; WX 500 ; N y ; B 16 -205 480 461 ;
-C 122 ; WX 444 ; N z ; B 21 0 420 461 ;
-C 123 ; WX 394 ; N braceleft ; B 22 -175 340 698 ;
-C 124 ; WX 220 ; N bar ; B 66 -218 154 782 ;
-C 125 ; WX 394 ; N braceright ; B 54 -175 372 698 ;
-C 126 ; WX 520 ; N asciitilde ; B 29 173 491 333 ;
-C 161 ; WX 333 ; N exclamdown ; B 82 -203 252 501 ;
-C 162 ; WX 500 ; N cent ; B 53 -140 458 588 ;
-C 163 ; WX 500 ; N sterling ; B 21 -14 477 684 ;
-C 164 ; WX 167 ; N fraction ; B -168 -12 329 688 ;
-C 165 ; WX 500 ; N yen ; B -64 0 547 676 ;
-C 166 ; WX 500 ; N florin ; B 0 -155 498 706 ;
-C 167 ; WX 500 ; N section ; B 57 -132 443 691 ;
-C 168 ; WX 500 ; N currency ; B -26 61 526 613 ;
-C 169 ; WX 278 ; N quotesingle ; B 75 404 204 691 ;
-C 170 ; WX 500 ; N quotedblleft ; B 32 356 486 691 ;
-C 171 ; WX 500 ; N guillemotleft ; B 23 36 473 415 ;
-C 172 ; WX 333 ; N guilsinglleft ; B 51 36 305 415 ;
-C 173 ; WX 333 ; N guilsinglright ; B 28 36 282 415 ;
-C 174 ; WX 556 ; N fi ; B 14 0 536 691 ;
-C 175 ; WX 556 ; N fl ; B 14 0 536 691 ;
-C 177 ; WX 500 ; N endash ; B 0 181 500 271 ;
-C 178 ; WX 500 ; N dagger ; B 47 -134 453 691 ;
-C 179 ; WX 500 ; N daggerdbl ; B 45 -132 456 691 ;
-C 180 ; WX 250 ; N periodcentered ; B 41 248 210 417 ;
-C 182 ; WX 540 ; N paragraph ; B 0 -186 519 676 ;
-C 183 ; WX 350 ; N bullet ; B 35 198 315 478 ;
-C 184 ; WX 333 ; N quotesinglbase ; B 79 -180 263 155 ;
-C 185 ; WX 500 ; N quotedblbase ; B 14 -180 468 155 ;
-C 186 ; WX 500 ; N quotedblright ; B 14 356 468 691 ;
-C 187 ; WX 500 ; N guillemotright ; B 27 36 477 415 ;
-C 188 ; WX 1000 ; N ellipsis ; B 82 -13 917 156 ;
-C 189 ; WX 1000 ; N perthousand ; B 7 -29 995 706 ;
-C 191 ; WX 500 ; N questiondown ; B 55 -201 443 501 ;
-C 193 ; WX 333 ; N grave ; B 8 528 246 713 ;
-C 194 ; WX 333 ; N acute ; B 86 528 324 713 ;
-C 195 ; WX 333 ; N circumflex ; B -2 528 335 704 ;
-C 196 ; WX 333 ; N tilde ; B -16 547 349 674 ;
-C 197 ; WX 333 ; N macron ; B 1 565 331 637 ;
-C 198 ; WX 333 ; N breve ; B 15 528 318 691 ;
-C 199 ; WX 333 ; N dotaccent ; B 103 536 258 691 ;
-C 200 ; WX 333 ; N dieresis ; B -2 537 335 667 ;
-C 202 ; WX 333 ; N ring ; B 60 527 273 740 ;
-C 203 ; WX 333 ; N cedilla ; B 68 -218 294 0 ;
-C 205 ; WX 333 ; N hungarumlaut ; B -13 528 425 713 ;
-C 206 ; WX 333 ; N ogonek ; B 90 -193 319 24 ;
-C 207 ; WX 333 ; N caron ; B -2 528 335 704 ;
-C 208 ; WX 1000 ; N emdash ; B 0 181 1000 271 ;
-C 225 ; WX 1000 ; N AE ; B 4 0 951 676 ;
-C 227 ; WX 300 ; N ordfeminine ; B -1 397 301 688 ;
-C 232 ; WX 667 ; N Lslash ; B 19 0 638 676 ;
-C 233 ; WX 778 ; N Oslash ; B 35 -74 743 737 ;
-C 234 ; WX 1000 ; N OE ; B 22 -5 981 684 ;
-C 235 ; WX 330 ; N ordmasculine ; B 18 397 312 688 ;
-C 241 ; WX 722 ; N ae ; B 33 -14 693 473 ;
-C 245 ; WX 278 ; N dotlessi ; B 16 0 255 461 ;
-C 248 ; WX 278 ; N lslash ; B -22 0 303 676 ;
-C 249 ; WX 500 ; N oslash ; B 25 -92 476 549 ;
-C 250 ; WX 722 ; N oe ; B 22 -14 696 473 ;
-C 251 ; WX 556 ; N germandbls ; B 19 -12 517 691 ;
-C -1 ; WX 389 ; N Idieresis ; B 20 0 370 877 ;
-C -1 ; WX 444 ; N eacute ; B 25 -14 426 713 ;
-C -1 ; WX 500 ; N abreve ; B 25 -14 488 691 ;
-C -1 ; WX 556 ; N uhungarumlaut ; B 16 -14 557 713 ;
-C -1 ; WX 444 ; N ecaron ; B 25 -14 426 704 ;
-C -1 ; WX 722 ; N Ydieresis ; B 15 0 699 877 ;
-C -1 ; WX 570 ; N divide ; B 33 -31 537 537 ;
-C -1 ; WX 722 ; N Yacute ; B 15 0 699 923 ;
-C -1 ; WX 722 ; N Acircumflex ; B 9 0 689 914 ;
-C -1 ; WX 500 ; N aacute ; B 25 -14 488 713 ;
-C -1 ; WX 722 ; N Ucircumflex ; B 16 -19 701 914 ;
-C -1 ; WX 500 ; N yacute ; B 16 -205 480 713 ;
-C -1 ; WX 389 ; N scommaaccent ; B 25 -218 361 473 ;
-C -1 ; WX 444 ; N ecircumflex ; B 25 -14 426 704 ;
-C -1 ; WX 722 ; N Uring ; B 16 -19 701 935 ;
-C -1 ; WX 722 ; N Udieresis ; B 16 -19 701 877 ;
-C -1 ; WX 500 ; N aogonek ; B 25 -193 504 473 ;
-C -1 ; WX 722 ; N Uacute ; B 16 -19 701 923 ;
-C -1 ; WX 556 ; N uogonek ; B 16 -193 539 461 ;
-C -1 ; WX 667 ; N Edieresis ; B 16 0 641 877 ;
-C -1 ; WX 722 ; N Dcroat ; B 6 0 690 676 ;
-C -1 ; WX 250 ; N commaaccent ; B 47 -218 203 -50 ;
-C -1 ; WX 747 ; N copyright ; B 26 -19 721 691 ;
-C -1 ; WX 667 ; N Emacron ; B 16 0 641 847 ;
-C -1 ; WX 444 ; N ccaron ; B 25 -14 430 704 ;
-C -1 ; WX 500 ; N aring ; B 25 -14 488 740 ;
-C -1 ; WX 722 ; N Ncommaaccent ; B 16 -188 701 676 ;
-C -1 ; WX 278 ; N lacute ; B 16 0 297 923 ;
-C -1 ; WX 500 ; N agrave ; B 25 -14 488 713 ;
-C -1 ; WX 667 ; N Tcommaaccent ; B 31 -218 636 676 ;
-C -1 ; WX 722 ; N Cacute ; B 49 -19 687 923 ;
-C -1 ; WX 500 ; N atilde ; B 25 -14 488 674 ;
-C -1 ; WX 667 ; N Edotaccent ; B 16 0 641 901 ;
-C -1 ; WX 389 ; N scaron ; B 25 -14 363 704 ;
-C -1 ; WX 389 ; N scedilla ; B 25 -218 361 473 ;
-C -1 ; WX 278 ; N iacute ; B 16 0 289 713 ;
-C -1 ; WX 494 ; N lozenge ; B 10 0 484 745 ;
-C -1 ; WX 722 ; N Rcaron ; B 26 0 715 914 ;
-C -1 ; WX 778 ; N Gcommaaccent ; B 37 -218 755 691 ;
-C -1 ; WX 556 ; N ucircumflex ; B 16 -14 537 704 ;
-C -1 ; WX 500 ; N acircumflex ; B 25 -14 488 704 ;
-C -1 ; WX 722 ; N Amacron ; B 9 0 689 847 ;
-C -1 ; WX 444 ; N rcaron ; B 29 0 434 704 ;
-C -1 ; WX 444 ; N ccedilla ; B 25 -218 430 473 ;
-C -1 ; WX 667 ; N Zdotaccent ; B 28 0 634 901 ;
-C -1 ; WX 611 ; N Thorn ; B 16 0 600 676 ;
-C -1 ; WX 778 ; N Omacron ; B 35 -19 743 847 ;
-C -1 ; WX 722 ; N Racute ; B 26 0 715 923 ;
-C -1 ; WX 556 ; N Sacute ; B 35 -19 513 923 ;
-C -1 ; WX 672 ; N dcaron ; B 25 -14 681 682 ;
-C -1 ; WX 722 ; N Umacron ; B 16 -19 701 847 ;
-C -1 ; WX 556 ; N uring ; B 16 -14 537 740 ;
-C -1 ; WX 300 ; N threesuperior ; B 3 268 297 688 ;
-C -1 ; WX 778 ; N Ograve ; B 35 -19 743 923 ;
-C -1 ; WX 722 ; N Agrave ; B 9 0 689 923 ;
-C -1 ; WX 722 ; N Abreve ; B 9 0 689 901 ;
-C -1 ; WX 570 ; N multiply ; B 48 16 522 490 ;
-C -1 ; WX 556 ; N uacute ; B 16 -14 537 713 ;
-C -1 ; WX 667 ; N Tcaron ; B 31 0 636 914 ;
-C -1 ; WX 494 ; N partialdiff ; B 11 -21 494 750 ;
-C -1 ; WX 500 ; N ydieresis ; B 16 -205 480 667 ;
-C -1 ; WX 722 ; N Nacute ; B 16 -18 701 923 ;
-C -1 ; WX 278 ; N icircumflex ; B -37 0 300 704 ;
-C -1 ; WX 667 ; N Ecircumflex ; B 16 0 641 914 ;
-C -1 ; WX 500 ; N adieresis ; B 25 -14 488 667 ;
-C -1 ; WX 444 ; N edieresis ; B 25 -14 426 667 ;
-C -1 ; WX 444 ; N cacute ; B 25 -14 430 713 ;
-C -1 ; WX 556 ; N nacute ; B 21 0 539 713 ;
-C -1 ; WX 556 ; N umacron ; B 16 -14 537 637 ;
-C -1 ; WX 722 ; N Ncaron ; B 16 -18 701 914 ;
-C -1 ; WX 389 ; N Iacute ; B 20 0 370 923 ;
-C -1 ; WX 570 ; N plusminus ; B 33 0 537 506 ;
-C -1 ; WX 220 ; N brokenbar ; B 66 -143 154 707 ;
-C -1 ; WX 747 ; N registered ; B 26 -19 721 691 ;
-C -1 ; WX 778 ; N Gbreve ; B 37 -19 755 901 ;
-C -1 ; WX 389 ; N Idotaccent ; B 20 0 370 901 ;
-C -1 ; WX 600 ; N summation ; B 14 -10 585 706 ;
-C -1 ; WX 667 ; N Egrave ; B 16 0 641 923 ;
-C -1 ; WX 444 ; N racute ; B 29 0 434 713 ;
-C -1 ; WX 500 ; N omacron ; B 25 -14 476 637 ;
-C -1 ; WX 667 ; N Zacute ; B 28 0 634 923 ;
-C -1 ; WX 667 ; N Zcaron ; B 28 0 634 914 ;
-C -1 ; WX 549 ; N greaterequal ; B 26 0 523 704 ;
-C -1 ; WX 722 ; N Eth ; B 6 0 690 676 ;
-C -1 ; WX 722 ; N Ccedilla ; B 49 -218 687 691 ;
-C -1 ; WX 278 ; N lcommaaccent ; B 16 -218 255 676 ;
-C -1 ; WX 416 ; N tcaron ; B 20 -12 425 815 ;
-C -1 ; WX 444 ; N eogonek ; B 25 -193 426 473 ;
-C -1 ; WX 722 ; N Uogonek ; B 16 -193 701 676 ;
-C -1 ; WX 722 ; N Aacute ; B 9 0 689 923 ;
-C -1 ; WX 722 ; N Adieresis ; B 9 0 689 877 ;
-C -1 ; WX 444 ; N egrave ; B 25 -14 426 713 ;
-C -1 ; WX 444 ; N zacute ; B 21 0 420 713 ;
-C -1 ; WX 278 ; N iogonek ; B 16 -193 274 691 ;
-C -1 ; WX 778 ; N Oacute ; B 35 -19 743 923 ;
-C -1 ; WX 500 ; N oacute ; B 25 -14 476 713 ;
-C -1 ; WX 500 ; N amacron ; B 25 -14 488 637 ;
-C -1 ; WX 389 ; N sacute ; B 25 -14 361 713 ;
-C -1 ; WX 278 ; N idieresis ; B -37 0 300 667 ;
-C -1 ; WX 778 ; N Ocircumflex ; B 35 -19 743 914 ;
-C -1 ; WX 722 ; N Ugrave ; B 16 -19 701 923 ;
-C -1 ; WX 612 ; N Delta ; B 6 0 608 688 ;
-C -1 ; WX 556 ; N thorn ; B 19 -205 524 676 ;
-C -1 ; WX 300 ; N twosuperior ; B 0 275 300 688 ;
-C -1 ; WX 778 ; N Odieresis ; B 35 -19 743 877 ;
-C -1 ; WX 556 ; N mu ; B 33 -206 536 461 ;
-C -1 ; WX 278 ; N igrave ; B -27 0 255 713 ;
-C -1 ; WX 500 ; N ohungarumlaut ; B 25 -14 529 713 ;
-C -1 ; WX 667 ; N Eogonek ; B 16 -193 644 676 ;
-C -1 ; WX 556 ; N dcroat ; B 25 -14 534 676 ;
-C -1 ; WX 750 ; N threequarters ; B 23 -12 733 688 ;
-C -1 ; WX 556 ; N Scedilla ; B 35 -218 513 692 ;
-C -1 ; WX 394 ; N lcaron ; B 16 0 412 682 ;
-C -1 ; WX 778 ; N Kcommaaccent ; B 30 -218 769 676 ;
-C -1 ; WX 667 ; N Lacute ; B 19 0 638 923 ;
-C -1 ; WX 1000 ; N trademark ; B 24 271 977 676 ;
-C -1 ; WX 444 ; N edotaccent ; B 25 -14 426 691 ;
-C -1 ; WX 389 ; N Igrave ; B 20 0 370 923 ;
-C -1 ; WX 389 ; N Imacron ; B 20 0 370 847 ;
-C -1 ; WX 667 ; N Lcaron ; B 19 0 652 682 ;
-C -1 ; WX 750 ; N onehalf ; B -7 -12 775 688 ;
-C -1 ; WX 549 ; N lessequal ; B 29 0 526 704 ;
-C -1 ; WX 500 ; N ocircumflex ; B 25 -14 476 704 ;
-C -1 ; WX 556 ; N ntilde ; B 21 0 539 674 ;
-C -1 ; WX 722 ; N Uhungarumlaut ; B 16 -19 701 923 ;
-C -1 ; WX 667 ; N Eacute ; B 16 0 641 923 ;
-C -1 ; WX 444 ; N emacron ; B 25 -14 426 637 ;
-C -1 ; WX 500 ; N gbreve ; B 28 -206 483 691 ;
-C -1 ; WX 750 ; N onequarter ; B 28 -12 743 688 ;
-C -1 ; WX 556 ; N Scaron ; B 35 -19 513 914 ;
-C -1 ; WX 556 ; N Scommaaccent ; B 35 -218 513 692 ;
-C -1 ; WX 778 ; N Ohungarumlaut ; B 35 -19 743 923 ;
-C -1 ; WX 400 ; N degree ; B 57 402 343 688 ;
-C -1 ; WX 500 ; N ograve ; B 25 -14 476 713 ;
-C -1 ; WX 722 ; N Ccaron ; B 49 -19 687 914 ;
-C -1 ; WX 556 ; N ugrave ; B 16 -14 537 713 ;
-C -1 ; WX 549 ; N radical ; B 10 -46 512 850 ;
-C -1 ; WX 722 ; N Dcaron ; B 14 0 690 914 ;
-C -1 ; WX 444 ; N rcommaaccent ; B 29 -218 434 473 ;
-C -1 ; WX 722 ; N Ntilde ; B 16 -18 701 884 ;
-C -1 ; WX 500 ; N otilde ; B 25 -14 476 674 ;
-C -1 ; WX 722 ; N Rcommaaccent ; B 26 -218 715 676 ;
-C -1 ; WX 667 ; N Lcommaaccent ; B 19 -218 638 676 ;
-C -1 ; WX 722 ; N Atilde ; B 9 0 689 884 ;
-C -1 ; WX 722 ; N Aogonek ; B 9 -193 699 690 ;
-C -1 ; WX 722 ; N Aring ; B 9 0 689 935 ;
-C -1 ; WX 778 ; N Otilde ; B 35 -19 743 884 ;
-C -1 ; WX 444 ; N zdotaccent ; B 21 0 420 691 ;
-C -1 ; WX 667 ; N Ecaron ; B 16 0 641 914 ;
-C -1 ; WX 389 ; N Iogonek ; B 20 -193 370 676 ;
-C -1 ; WX 556 ; N kcommaaccent ; B 22 -218 543 676 ;
-C -1 ; WX 570 ; N minus ; B 33 209 537 297 ;
-C -1 ; WX 389 ; N Icircumflex ; B 20 0 370 914 ;
-C -1 ; WX 556 ; N ncaron ; B 21 0 539 704 ;
-C -1 ; WX 333 ; N tcommaaccent ; B 20 -218 332 630 ;
-C -1 ; WX 570 ; N logicalnot ; B 33 108 537 399 ;
-C -1 ; WX 500 ; N odieresis ; B 25 -14 476 667 ;
-C -1 ; WX 556 ; N udieresis ; B 16 -14 537 667 ;
-C -1 ; WX 549 ; N notequal ; B 15 -49 540 570 ;
-C -1 ; WX 500 ; N gcommaaccent ; B 28 -206 483 829 ;
-C -1 ; WX 500 ; N eth ; B 25 -14 476 691 ;
-C -1 ; WX 444 ; N zcaron ; B 21 0 420 704 ;
-C -1 ; WX 556 ; N ncommaaccent ; B 21 -218 539 473 ;
-C -1 ; WX 300 ; N onesuperior ; B 28 275 273 688 ;
-C -1 ; WX 278 ; N imacron ; B -8 0 272 637 ;
-C -1 ; WX 500 ; N Euro ; B 0 0 0 0 ;
-EndCharMetrics
-StartKernData
-StartKernPairs 2242
-KPX A C -55
-KPX A Cacute -55
-KPX A Ccaron -55
-KPX A Ccedilla -55
-KPX A G -55
-KPX A Gbreve -55
-KPX A Gcommaaccent -55
-KPX A O -45
-KPX A Oacute -45
-KPX A Ocircumflex -45
-KPX A Odieresis -45
-KPX A Ograve -45
-KPX A Ohungarumlaut -45
-KPX A Omacron -45
-KPX A Oslash -45
-KPX A Otilde -45
-KPX A Q -45
-KPX A T -95
-KPX A Tcaron -95
-KPX A Tcommaaccent -95
-KPX A U -50
-KPX A Uacute -50
-KPX A Ucircumflex -50
-KPX A Udieresis -50
-KPX A Ugrave -50
-KPX A Uhungarumlaut -50
-KPX A Umacron -50
-KPX A Uogonek -50
-KPX A Uring -50
-KPX A V -145
-KPX A W -130
-KPX A Y -100
-KPX A Yacute -100
-KPX A Ydieresis -100
-KPX A p -25
-KPX A quoteright -74
-KPX A u -50
-KPX A uacute -50
-KPX A ucircumflex -50
-KPX A udieresis -50
-KPX A ugrave -50
-KPX A uhungarumlaut -50
-KPX A umacron -50
-KPX A uogonek -50
-KPX A uring -50
-KPX A v -100
-KPX A w -90
-KPX A y -74
-KPX A yacute -74
-KPX A ydieresis -74
-KPX Aacute C -55
-KPX Aacute Cacute -55
-KPX Aacute Ccaron -55
-KPX Aacute Ccedilla -55
-KPX Aacute G -55
-KPX Aacute Gbreve -55
-KPX Aacute Gcommaaccent -55
-KPX Aacute O -45
-KPX Aacute Oacute -45
-KPX Aacute Ocircumflex -45
-KPX Aacute Odieresis -45
-KPX Aacute Ograve -45
-KPX Aacute Ohungarumlaut -45
-KPX Aacute Omacron -45
-KPX Aacute Oslash -45
-KPX Aacute Otilde -45
-KPX Aacute Q -45
-KPX Aacute T -95
-KPX Aacute Tcaron -95
-KPX Aacute Tcommaaccent -95
-KPX Aacute U -50
-KPX Aacute Uacute -50
-KPX Aacute Ucircumflex -50
-KPX Aacute Udieresis -50
-KPX Aacute Ugrave -50
-KPX Aacute Uhungarumlaut -50
-KPX Aacute Umacron -50
-KPX Aacute Uogonek -50
-KPX Aacute Uring -50
-KPX Aacute V -145
-KPX Aacute W -130
-KPX Aacute Y -100
-KPX Aacute Yacute -100
-KPX Aacute Ydieresis -100
-KPX Aacute p -25
-KPX Aacute quoteright -74
-KPX Aacute u -50
-KPX Aacute uacute -50
-KPX Aacute ucircumflex -50
-KPX Aacute udieresis -50
-KPX Aacute ugrave -50
-KPX Aacute uhungarumlaut -50
-KPX Aacute umacron -50
-KPX Aacute uogonek -50
-KPX Aacute uring -50
-KPX Aacute v -100
-KPX Aacute w -90
-KPX Aacute y -74
-KPX Aacute yacute -74
-KPX Aacute ydieresis -74
-KPX Abreve C -55
-KPX Abreve Cacute -55
-KPX Abreve Ccaron -55
-KPX Abreve Ccedilla -55
-KPX Abreve G -55
-KPX Abreve Gbreve -55
-KPX Abreve Gcommaaccent -55
-KPX Abreve O -45
-KPX Abreve Oacute -45
-KPX Abreve Ocircumflex -45
-KPX Abreve Odieresis -45
-KPX Abreve Ograve -45
-KPX Abreve Ohungarumlaut -45
-KPX Abreve Omacron -45
-KPX Abreve Oslash -45
-KPX Abreve Otilde -45
-KPX Abreve Q -45
-KPX Abreve T -95
-KPX Abreve Tcaron -95
-KPX Abreve Tcommaaccent -95
-KPX Abreve U -50
-KPX Abreve Uacute -50
-KPX Abreve Ucircumflex -50
-KPX Abreve Udieresis -50
-KPX Abreve Ugrave -50
-KPX Abreve Uhungarumlaut -50
-KPX Abreve Umacron -50
-KPX Abreve Uogonek -50
-KPX Abreve Uring -50
-KPX Abreve V -145
-KPX Abreve W -130
-KPX Abreve Y -100
-KPX Abreve Yacute -100
-KPX Abreve Ydieresis -100
-KPX Abreve p -25
-KPX Abreve quoteright -74
-KPX Abreve u -50
-KPX Abreve uacute -50
-KPX Abreve ucircumflex -50
-KPX Abreve udieresis -50
-KPX Abreve ugrave -50
-KPX Abreve uhungarumlaut -50
-KPX Abreve umacron -50
-KPX Abreve uogonek -50
-KPX Abreve uring -50
-KPX Abreve v -100
-KPX Abreve w -90
-KPX Abreve y -74
-KPX Abreve yacute -74
-KPX Abreve ydieresis -74
-KPX Acircumflex C -55
-KPX Acircumflex Cacute -55
-KPX Acircumflex Ccaron -55
-KPX Acircumflex Ccedilla -55
-KPX Acircumflex G -55
-KPX Acircumflex Gbreve -55
-KPX Acircumflex Gcommaaccent -55
-KPX Acircumflex O -45
-KPX Acircumflex Oacute -45
-KPX Acircumflex Ocircumflex -45
-KPX Acircumflex Odieresis -45
-KPX Acircumflex Ograve -45
-KPX Acircumflex Ohungarumlaut -45
-KPX Acircumflex Omacron -45
-KPX Acircumflex Oslash -45
-KPX Acircumflex Otilde -45
-KPX Acircumflex Q -45
-KPX Acircumflex T -95
-KPX Acircumflex Tcaron -95
-KPX Acircumflex Tcommaaccent -95
-KPX Acircumflex U -50
-KPX Acircumflex Uacute -50
-KPX Acircumflex Ucircumflex -50
-KPX Acircumflex Udieresis -50
-KPX Acircumflex Ugrave -50
-KPX Acircumflex Uhungarumlaut -50
-KPX Acircumflex Umacron -50
-KPX Acircumflex Uogonek -50
-KPX Acircumflex Uring -50
-KPX Acircumflex V -145
-KPX Acircumflex W -130
-KPX Acircumflex Y -100
-KPX Acircumflex Yacute -100
-KPX Acircumflex Ydieresis -100
-KPX Acircumflex p -25
-KPX Acircumflex quoteright -74
-KPX Acircumflex u -50
-KPX Acircumflex uacute -50
-KPX Acircumflex ucircumflex -50
-KPX Acircumflex udieresis -50
-KPX Acircumflex ugrave -50
-KPX Acircumflex uhungarumlaut -50
-KPX Acircumflex umacron -50
-KPX Acircumflex uogonek -50
-KPX Acircumflex uring -50
-KPX Acircumflex v -100
-KPX Acircumflex w -90
-KPX Acircumflex y -74
-KPX Acircumflex yacute -74
-KPX Acircumflex ydieresis -74
-KPX Adieresis C -55
-KPX Adieresis Cacute -55
-KPX Adieresis Ccaron -55
-KPX Adieresis Ccedilla -55
-KPX Adieresis G -55
-KPX Adieresis Gbreve -55
-KPX Adieresis Gcommaaccent -55
-KPX Adieresis O -45
-KPX Adieresis Oacute -45
-KPX Adieresis Ocircumflex -45
-KPX Adieresis Odieresis -45
-KPX Adieresis Ograve -45
-KPX Adieresis Ohungarumlaut -45
-KPX Adieresis Omacron -45
-KPX Adieresis Oslash -45
-KPX Adieresis Otilde -45
-KPX Adieresis Q -45
-KPX Adieresis T -95
-KPX Adieresis Tcaron -95
-KPX Adieresis Tcommaaccent -95
-KPX Adieresis U -50
-KPX Adieresis Uacute -50
-KPX Adieresis Ucircumflex -50
-KPX Adieresis Udieresis -50
-KPX Adieresis Ugrave -50
-KPX Adieresis Uhungarumlaut -50
-KPX Adieresis Umacron -50
-KPX Adieresis Uogonek -50
-KPX Adieresis Uring -50
-KPX Adieresis V -145
-KPX Adieresis W -130
-KPX Adieresis Y -100
-KPX Adieresis Yacute -100
-KPX Adieresis Ydieresis -100
-KPX Adieresis p -25
-KPX Adieresis quoteright -74
-KPX Adieresis u -50
-KPX Adieresis uacute -50
-KPX Adieresis ucircumflex -50
-KPX Adieresis udieresis -50
-KPX Adieresis ugrave -50
-KPX Adieresis uhungarumlaut -50
-KPX Adieresis umacron -50
-KPX Adieresis uogonek -50
-KPX Adieresis uring -50
-KPX Adieresis v -100
-KPX Adieresis w -90
-KPX Adieresis y -74
-KPX Adieresis yacute -74
-KPX Adieresis ydieresis -74
-KPX Agrave C -55
-KPX Agrave Cacute -55
-KPX Agrave Ccaron -55
-KPX Agrave Ccedilla -55
-KPX Agrave G -55
-KPX Agrave Gbreve -55
-KPX Agrave Gcommaaccent -55
-KPX Agrave O -45
-KPX Agrave Oacute -45
-KPX Agrave Ocircumflex -45
-KPX Agrave Odieresis -45
-KPX Agrave Ograve -45
-KPX Agrave Ohungarumlaut -45
-KPX Agrave Omacron -45
-KPX Agrave Oslash -45
-KPX Agrave Otilde -45
-KPX Agrave Q -45
-KPX Agrave T -95
-KPX Agrave Tcaron -95
-KPX Agrave Tcommaaccent -95
-KPX Agrave U -50
-KPX Agrave Uacute -50
-KPX Agrave Ucircumflex -50
-KPX Agrave Udieresis -50
-KPX Agrave Ugrave -50
-KPX Agrave Uhungarumlaut -50
-KPX Agrave Umacron -50
-KPX Agrave Uogonek -50
-KPX Agrave Uring -50
-KPX Agrave V -145
-KPX Agrave W -130
-KPX Agrave Y -100
-KPX Agrave Yacute -100
-KPX Agrave Ydieresis -100
-KPX Agrave p -25
-KPX Agrave quoteright -74
-KPX Agrave u -50
-KPX Agrave uacute -50
-KPX Agrave ucircumflex -50
-KPX Agrave udieresis -50
-KPX Agrave ugrave -50
-KPX Agrave uhungarumlaut -50
-KPX Agrave umacron -50
-KPX Agrave uogonek -50
-KPX Agrave uring -50
-KPX Agrave v -100
-KPX Agrave w -90
-KPX Agrave y -74
-KPX Agrave yacute -74
-KPX Agrave ydieresis -74
-KPX Amacron C -55
-KPX Amacron Cacute -55
-KPX Amacron Ccaron -55
-KPX Amacron Ccedilla -55
-KPX Amacron G -55
-KPX Amacron Gbreve -55
-KPX Amacron Gcommaaccent -55
-KPX Amacron O -45
-KPX Amacron Oacute -45
-KPX Amacron Ocircumflex -45
-KPX Amacron Odieresis -45
-KPX Amacron Ograve -45
-KPX Amacron Ohungarumlaut -45
-KPX Amacron Omacron -45
-KPX Amacron Oslash -45
-KPX Amacron Otilde -45
-KPX Amacron Q -45
-KPX Amacron T -95
-KPX Amacron Tcaron -95
-KPX Amacron Tcommaaccent -95
-KPX Amacron U -50
-KPX Amacron Uacute -50
-KPX Amacron Ucircumflex -50
-KPX Amacron Udieresis -50
-KPX Amacron Ugrave -50
-KPX Amacron Uhungarumlaut -50
-KPX Amacron Umacron -50
-KPX Amacron Uogonek -50
-KPX Amacron Uring -50
-KPX Amacron V -145
-KPX Amacron W -130
-KPX Amacron Y -100
-KPX Amacron Yacute -100
-KPX Amacron Ydieresis -100
-KPX Amacron p -25
-KPX Amacron quoteright -74
-KPX Amacron u -50
-KPX Amacron uacute -50
-KPX Amacron ucircumflex -50
-KPX Amacron udieresis -50
-KPX Amacron ugrave -50
-KPX Amacron uhungarumlaut -50
-KPX Amacron umacron -50
-KPX Amacron uogonek -50
-KPX Amacron uring -50
-KPX Amacron v -100
-KPX Amacron w -90
-KPX Amacron y -74
-KPX Amacron yacute -74
-KPX Amacron ydieresis -74
-KPX Aogonek C -55
-KPX Aogonek Cacute -55
-KPX Aogonek Ccaron -55
-KPX Aogonek Ccedilla -55
-KPX Aogonek G -55
-KPX Aogonek Gbreve -55
-KPX Aogonek Gcommaaccent -55
-KPX Aogonek O -45
-KPX Aogonek Oacute -45
-KPX Aogonek Ocircumflex -45
-KPX Aogonek Odieresis -45
-KPX Aogonek Ograve -45
-KPX Aogonek Ohungarumlaut -45
-KPX Aogonek Omacron -45
-KPX Aogonek Oslash -45
-KPX Aogonek Otilde -45
-KPX Aogonek Q -45
-KPX Aogonek T -95
-KPX Aogonek Tcaron -95
-KPX Aogonek Tcommaaccent -95
-KPX Aogonek U -50
-KPX Aogonek Uacute -50
-KPX Aogonek Ucircumflex -50
-KPX Aogonek Udieresis -50
-KPX Aogonek Ugrave -50
-KPX Aogonek Uhungarumlaut -50
-KPX Aogonek Umacron -50
-KPX Aogonek Uogonek -50
-KPX Aogonek Uring -50
-KPX Aogonek V -145
-KPX Aogonek W -130
-KPX Aogonek Y -100
-KPX Aogonek Yacute -100
-KPX Aogonek Ydieresis -100
-KPX Aogonek p -25
-KPX Aogonek quoteright -74
-KPX Aogonek u -50
-KPX Aogonek uacute -50
-KPX Aogonek ucircumflex -50
-KPX Aogonek udieresis -50
-KPX Aogonek ugrave -50
-KPX Aogonek uhungarumlaut -50
-KPX Aogonek umacron -50
-KPX Aogonek uogonek -50
-KPX Aogonek uring -50
-KPX Aogonek v -100
-KPX Aogonek w -90
-KPX Aogonek y -34
-KPX Aogonek yacute -34
-KPX Aogonek ydieresis -34
-KPX Aring C -55
-KPX Aring Cacute -55
-KPX Aring Ccaron -55
-KPX Aring Ccedilla -55
-KPX Aring G -55
-KPX Aring Gbreve -55
-KPX Aring Gcommaaccent -55
-KPX Aring O -45
-KPX Aring Oacute -45
-KPX Aring Ocircumflex -45
-KPX Aring Odieresis -45
-KPX Aring Ograve -45
-KPX Aring Ohungarumlaut -45
-KPX Aring Omacron -45
-KPX Aring Oslash -45
-KPX Aring Otilde -45
-KPX Aring Q -45
-KPX Aring T -95
-KPX Aring Tcaron -95
-KPX Aring Tcommaaccent -95
-KPX Aring U -50
-KPX Aring Uacute -50
-KPX Aring Ucircumflex -50
-KPX Aring Udieresis -50
-KPX Aring Ugrave -50
-KPX Aring Uhungarumlaut -50
-KPX Aring Umacron -50
-KPX Aring Uogonek -50
-KPX Aring Uring -50
-KPX Aring V -145
-KPX Aring W -130
-KPX Aring Y -100
-KPX Aring Yacute -100
-KPX Aring Ydieresis -100
-KPX Aring p -25
-KPX Aring quoteright -74
-KPX Aring u -50
-KPX Aring uacute -50
-KPX Aring ucircumflex -50
-KPX Aring udieresis -50
-KPX Aring ugrave -50
-KPX Aring uhungarumlaut -50
-KPX Aring umacron -50
-KPX Aring uogonek -50
-KPX Aring uring -50
-KPX Aring v -100
-KPX Aring w -90
-KPX Aring y -74
-KPX Aring yacute -74
-KPX Aring ydieresis -74
-KPX Atilde C -55
-KPX Atilde Cacute -55
-KPX Atilde Ccaron -55
-KPX Atilde Ccedilla -55
-KPX Atilde G -55
-KPX Atilde Gbreve -55
-KPX Atilde Gcommaaccent -55
-KPX Atilde O -45
-KPX Atilde Oacute -45
-KPX Atilde Ocircumflex -45
-KPX Atilde Odieresis -45
-KPX Atilde Ograve -45
-KPX Atilde Ohungarumlaut -45
-KPX Atilde Omacron -45
-KPX Atilde Oslash -45
-KPX Atilde Otilde -45
-KPX Atilde Q -45
-KPX Atilde T -95
-KPX Atilde Tcaron -95
-KPX Atilde Tcommaaccent -95
-KPX Atilde U -50
-KPX Atilde Uacute -50
-KPX Atilde Ucircumflex -50
-KPX Atilde Udieresis -50
-KPX Atilde Ugrave -50
-KPX Atilde Uhungarumlaut -50
-KPX Atilde Umacron -50
-KPX Atilde Uogonek -50
-KPX Atilde Uring -50
-KPX Atilde V -145
-KPX Atilde W -130
-KPX Atilde Y -100
-KPX Atilde Yacute -100
-KPX Atilde Ydieresis -100
-KPX Atilde p -25
-KPX Atilde quoteright -74
-KPX Atilde u -50
-KPX Atilde uacute -50
-KPX Atilde ucircumflex -50
-KPX Atilde udieresis -50
-KPX Atilde ugrave -50
-KPX Atilde uhungarumlaut -50
-KPX Atilde umacron -50
-KPX Atilde uogonek -50
-KPX Atilde uring -50
-KPX Atilde v -100
-KPX Atilde w -90
-KPX Atilde y -74
-KPX Atilde yacute -74
-KPX Atilde ydieresis -74
-KPX B A -30
-KPX B Aacute -30
-KPX B Abreve -30
-KPX B Acircumflex -30
-KPX B Adieresis -30
-KPX B Agrave -30
-KPX B Amacron -30
-KPX B Aogonek -30
-KPX B Aring -30
-KPX B Atilde -30
-KPX B U -10
-KPX B Uacute -10
-KPX B Ucircumflex -10
-KPX B Udieresis -10
-KPX B Ugrave -10
-KPX B Uhungarumlaut -10
-KPX B Umacron -10
-KPX B Uogonek -10
-KPX B Uring -10
-KPX D A -35
-KPX D Aacute -35
-KPX D Abreve -35
-KPX D Acircumflex -35
-KPX D Adieresis -35
-KPX D Agrave -35
-KPX D Amacron -35
-KPX D Aogonek -35
-KPX D Aring -35
-KPX D Atilde -35
-KPX D V -40
-KPX D W -40
-KPX D Y -40
-KPX D Yacute -40
-KPX D Ydieresis -40
-KPX D period -20
-KPX Dcaron A -35
-KPX Dcaron Aacute -35
-KPX Dcaron Abreve -35
-KPX Dcaron Acircumflex -35
-KPX Dcaron Adieresis -35
-KPX Dcaron Agrave -35
-KPX Dcaron Amacron -35
-KPX Dcaron Aogonek -35
-KPX Dcaron Aring -35
-KPX Dcaron Atilde -35
-KPX Dcaron V -40
-KPX Dcaron W -40
-KPX Dcaron Y -40
-KPX Dcaron Yacute -40
-KPX Dcaron Ydieresis -40
-KPX Dcaron period -20
-KPX Dcroat A -35
-KPX Dcroat Aacute -35
-KPX Dcroat Abreve -35
-KPX Dcroat Acircumflex -35
-KPX Dcroat Adieresis -35
-KPX Dcroat Agrave -35
-KPX Dcroat Amacron -35
-KPX Dcroat Aogonek -35
-KPX Dcroat Aring -35
-KPX Dcroat Atilde -35
-KPX Dcroat V -40
-KPX Dcroat W -40
-KPX Dcroat Y -40
-KPX Dcroat Yacute -40
-KPX Dcroat Ydieresis -40
-KPX Dcroat period -20
-KPX F A -90
-KPX F Aacute -90
-KPX F Abreve -90
-KPX F Acircumflex -90
-KPX F Adieresis -90
-KPX F Agrave -90
-KPX F Amacron -90
-KPX F Aogonek -90
-KPX F Aring -90
-KPX F Atilde -90
-KPX F a -25
-KPX F aacute -25
-KPX F abreve -25
-KPX F acircumflex -25
-KPX F adieresis -25
-KPX F agrave -25
-KPX F amacron -25
-KPX F aogonek -25
-KPX F aring -25
-KPX F atilde -25
-KPX F comma -92
-KPX F e -25
-KPX F eacute -25
-KPX F ecaron -25
-KPX F ecircumflex -25
-KPX F edieresis -25
-KPX F edotaccent -25
-KPX F egrave -25
-KPX F emacron -25
-KPX F eogonek -25
-KPX F o -25
-KPX F oacute -25
-KPX F ocircumflex -25
-KPX F odieresis -25
-KPX F ograve -25
-KPX F ohungarumlaut -25
-KPX F omacron -25
-KPX F oslash -25
-KPX F otilde -25
-KPX F period -110
-KPX J A -30
-KPX J Aacute -30
-KPX J Abreve -30
-KPX J Acircumflex -30
-KPX J Adieresis -30
-KPX J Agrave -30
-KPX J Amacron -30
-KPX J Aogonek -30
-KPX J Aring -30
-KPX J Atilde -30
-KPX J a -15
-KPX J aacute -15
-KPX J abreve -15
-KPX J acircumflex -15
-KPX J adieresis -15
-KPX J agrave -15
-KPX J amacron -15
-KPX J aogonek -15
-KPX J aring -15
-KPX J atilde -15
-KPX J e -15
-KPX J eacute -15
-KPX J ecaron -15
-KPX J ecircumflex -15
-KPX J edieresis -15
-KPX J edotaccent -15
-KPX J egrave -15
-KPX J emacron -15
-KPX J eogonek -15
-KPX J o -15
-KPX J oacute -15
-KPX J ocircumflex -15
-KPX J odieresis -15
-KPX J ograve -15
-KPX J ohungarumlaut -15
-KPX J omacron -15
-KPX J oslash -15
-KPX J otilde -15
-KPX J period -20
-KPX J u -15
-KPX J uacute -15
-KPX J ucircumflex -15
-KPX J udieresis -15
-KPX J ugrave -15
-KPX J uhungarumlaut -15
-KPX J umacron -15
-KPX J uogonek -15
-KPX J uring -15
-KPX K O -30
-KPX K Oacute -30
-KPX K Ocircumflex -30
-KPX K Odieresis -30
-KPX K Ograve -30
-KPX K Ohungarumlaut -30
-KPX K Omacron -30
-KPX K Oslash -30
-KPX K Otilde -30
-KPX K e -25
-KPX K eacute -25
-KPX K ecaron -25
-KPX K ecircumflex -25
-KPX K edieresis -25
-KPX K edotaccent -25
-KPX K egrave -25
-KPX K emacron -25
-KPX K eogonek -25
-KPX K o -25
-KPX K oacute -25
-KPX K ocircumflex -25
-KPX K odieresis -25
-KPX K ograve -25
-KPX K ohungarumlaut -25
-KPX K omacron -25
-KPX K oslash -25
-KPX K otilde -25
-KPX K u -15
-KPX K uacute -15
-KPX K ucircumflex -15
-KPX K udieresis -15
-KPX K ugrave -15
-KPX K uhungarumlaut -15
-KPX K umacron -15
-KPX K uogonek -15
-KPX K uring -15
-KPX K y -45
-KPX K yacute -45
-KPX K ydieresis -45
-KPX Kcommaaccent O -30
-KPX Kcommaaccent Oacute -30
-KPX Kcommaaccent Ocircumflex -30
-KPX Kcommaaccent Odieresis -30
-KPX Kcommaaccent Ograve -30
-KPX Kcommaaccent Ohungarumlaut -30
-KPX Kcommaaccent Omacron -30
-KPX Kcommaaccent Oslash -30
-KPX Kcommaaccent Otilde -30
-KPX Kcommaaccent e -25
-KPX Kcommaaccent eacute -25
-KPX Kcommaaccent ecaron -25
-KPX Kcommaaccent ecircumflex -25
-KPX Kcommaaccent edieresis -25
-KPX Kcommaaccent edotaccent -25
-KPX Kcommaaccent egrave -25
-KPX Kcommaaccent emacron -25
-KPX Kcommaaccent eogonek -25
-KPX Kcommaaccent o -25
-KPX Kcommaaccent oacute -25
-KPX Kcommaaccent ocircumflex -25
-KPX Kcommaaccent odieresis -25
-KPX Kcommaaccent ograve -25
-KPX Kcommaaccent ohungarumlaut -25
-KPX Kcommaaccent omacron -25
-KPX Kcommaaccent oslash -25
-KPX Kcommaaccent otilde -25
-KPX Kcommaaccent u -15
-KPX Kcommaaccent uacute -15
-KPX Kcommaaccent ucircumflex -15
-KPX Kcommaaccent udieresis -15
-KPX Kcommaaccent ugrave -15
-KPX Kcommaaccent uhungarumlaut -15
-KPX Kcommaaccent umacron -15
-KPX Kcommaaccent uogonek -15
-KPX Kcommaaccent uring -15
-KPX Kcommaaccent y -45
-KPX Kcommaaccent yacute -45
-KPX Kcommaaccent ydieresis -45
-KPX L T -92
-KPX L Tcaron -92
-KPX L Tcommaaccent -92
-KPX L V -92
-KPX L W -92
-KPX L Y -92
-KPX L Yacute -92
-KPX L Ydieresis -92
-KPX L quotedblright -20
-KPX L quoteright -110
-KPX L y -55
-KPX L yacute -55
-KPX L ydieresis -55
-KPX Lacute T -92
-KPX Lacute Tcaron -92
-KPX Lacute Tcommaaccent -92
-KPX Lacute V -92
-KPX Lacute W -92
-KPX Lacute Y -92
-KPX Lacute Yacute -92
-KPX Lacute Ydieresis -92
-KPX Lacute quotedblright -20
-KPX Lacute quoteright -110
-KPX Lacute y -55
-KPX Lacute yacute -55
-KPX Lacute ydieresis -55
-KPX Lcommaaccent T -92
-KPX Lcommaaccent Tcaron -92
-KPX Lcommaaccent Tcommaaccent -92
-KPX Lcommaaccent V -92
-KPX Lcommaaccent W -92
-KPX Lcommaaccent Y -92
-KPX Lcommaaccent Yacute -92
-KPX Lcommaaccent Ydieresis -92
-KPX Lcommaaccent quotedblright -20
-KPX Lcommaaccent quoteright -110
-KPX Lcommaaccent y -55
-KPX Lcommaaccent yacute -55
-KPX Lcommaaccent ydieresis -55
-KPX Lslash T -92
-KPX Lslash Tcaron -92
-KPX Lslash Tcommaaccent -92
-KPX Lslash V -92
-KPX Lslash W -92
-KPX Lslash Y -92
-KPX Lslash Yacute -92
-KPX Lslash Ydieresis -92
-KPX Lslash quotedblright -20
-KPX Lslash quoteright -110
-KPX Lslash y -55
-KPX Lslash yacute -55
-KPX Lslash ydieresis -55
-KPX N A -20
-KPX N Aacute -20
-KPX N Abreve -20
-KPX N Acircumflex -20
-KPX N Adieresis -20
-KPX N Agrave -20
-KPX N Amacron -20
-KPX N Aogonek -20
-KPX N Aring -20
-KPX N Atilde -20
-KPX Nacute A -20
-KPX Nacute Aacute -20
-KPX Nacute Abreve -20
-KPX Nacute Acircumflex -20
-KPX Nacute Adieresis -20
-KPX Nacute Agrave -20
-KPX Nacute Amacron -20
-KPX Nacute Aogonek -20
-KPX Nacute Aring -20
-KPX Nacute Atilde -20
-KPX Ncaron A -20
-KPX Ncaron Aacute -20
-KPX Ncaron Abreve -20
-KPX Ncaron Acircumflex -20
-KPX Ncaron Adieresis -20
-KPX Ncaron Agrave -20
-KPX Ncaron Amacron -20
-KPX Ncaron Aogonek -20
-KPX Ncaron Aring -20
-KPX Ncaron Atilde -20
-KPX Ncommaaccent A -20
-KPX Ncommaaccent Aacute -20
-KPX Ncommaaccent Abreve -20
-KPX Ncommaaccent Acircumflex -20
-KPX Ncommaaccent Adieresis -20
-KPX Ncommaaccent Agrave -20
-KPX Ncommaaccent Amacron -20
-KPX Ncommaaccent Aogonek -20
-KPX Ncommaaccent Aring -20
-KPX Ncommaaccent Atilde -20
-KPX Ntilde A -20
-KPX Ntilde Aacute -20
-KPX Ntilde Abreve -20
-KPX Ntilde Acircumflex -20
-KPX Ntilde Adieresis -20
-KPX Ntilde Agrave -20
-KPX Ntilde Amacron -20
-KPX Ntilde Aogonek -20
-KPX Ntilde Aring -20
-KPX Ntilde Atilde -20
-KPX O A -40
-KPX O Aacute -40
-KPX O Abreve -40
-KPX O Acircumflex -40
-KPX O Adieresis -40
-KPX O Agrave -40
-KPX O Amacron -40
-KPX O Aogonek -40
-KPX O Aring -40
-KPX O Atilde -40
-KPX O T -40
-KPX O Tcaron -40
-KPX O Tcommaaccent -40
-KPX O V -50
-KPX O W -50
-KPX O X -40
-KPX O Y -50
-KPX O Yacute -50
-KPX O Ydieresis -50
-KPX Oacute A -40
-KPX Oacute Aacute -40
-KPX Oacute Abreve -40
-KPX Oacute Acircumflex -40
-KPX Oacute Adieresis -40
-KPX Oacute Agrave -40
-KPX Oacute Amacron -40
-KPX Oacute Aogonek -40
-KPX Oacute Aring -40
-KPX Oacute Atilde -40
-KPX Oacute T -40
-KPX Oacute Tcaron -40
-KPX Oacute Tcommaaccent -40
-KPX Oacute V -50
-KPX Oacute W -50
-KPX Oacute X -40
-KPX Oacute Y -50
-KPX Oacute Yacute -50
-KPX Oacute Ydieresis -50
-KPX Ocircumflex A -40
-KPX Ocircumflex Aacute -40
-KPX Ocircumflex Abreve -40
-KPX Ocircumflex Acircumflex -40
-KPX Ocircumflex Adieresis -40
-KPX Ocircumflex Agrave -40
-KPX Ocircumflex Amacron -40
-KPX Ocircumflex Aogonek -40
-KPX Ocircumflex Aring -40
-KPX Ocircumflex Atilde -40
-KPX Ocircumflex T -40
-KPX Ocircumflex Tcaron -40
-KPX Ocircumflex Tcommaaccent -40
-KPX Ocircumflex V -50
-KPX Ocircumflex W -50
-KPX Ocircumflex X -40
-KPX Ocircumflex Y -50
-KPX Ocircumflex Yacute -50
-KPX Ocircumflex Ydieresis -50
-KPX Odieresis A -40
-KPX Odieresis Aacute -40
-KPX Odieresis Abreve -40
-KPX Odieresis Acircumflex -40
-KPX Odieresis Adieresis -40
-KPX Odieresis Agrave -40
-KPX Odieresis Amacron -40
-KPX Odieresis Aogonek -40
-KPX Odieresis Aring -40
-KPX Odieresis Atilde -40
-KPX Odieresis T -40
-KPX Odieresis Tcaron -40
-KPX Odieresis Tcommaaccent -40
-KPX Odieresis V -50
-KPX Odieresis W -50
-KPX Odieresis X -40
-KPX Odieresis Y -50
-KPX Odieresis Yacute -50
-KPX Odieresis Ydieresis -50
-KPX Ograve A -40
-KPX Ograve Aacute -40
-KPX Ograve Abreve -40
-KPX Ograve Acircumflex -40
-KPX Ograve Adieresis -40
-KPX Ograve Agrave -40
-KPX Ograve Amacron -40
-KPX Ograve Aogonek -40
-KPX Ograve Aring -40
-KPX Ograve Atilde -40
-KPX Ograve T -40
-KPX Ograve Tcaron -40
-KPX Ograve Tcommaaccent -40
-KPX Ograve V -50
-KPX Ograve W -50
-KPX Ograve X -40
-KPX Ograve Y -50
-KPX Ograve Yacute -50
-KPX Ograve Ydieresis -50
-KPX Ohungarumlaut A -40
-KPX Ohungarumlaut Aacute -40
-KPX Ohungarumlaut Abreve -40
-KPX Ohungarumlaut Acircumflex -40
-KPX Ohungarumlaut Adieresis -40
-KPX Ohungarumlaut Agrave -40
-KPX Ohungarumlaut Amacron -40
-KPX Ohungarumlaut Aogonek -40
-KPX Ohungarumlaut Aring -40
-KPX Ohungarumlaut Atilde -40
-KPX Ohungarumlaut T -40
-KPX Ohungarumlaut Tcaron -40
-KPX Ohungarumlaut Tcommaaccent -40
-KPX Ohungarumlaut V -50
-KPX Ohungarumlaut W -50
-KPX Ohungarumlaut X -40
-KPX Ohungarumlaut Y -50
-KPX Ohungarumlaut Yacute -50
-KPX Ohungarumlaut Ydieresis -50
-KPX Omacron A -40
-KPX Omacron Aacute -40
-KPX Omacron Abreve -40
-KPX Omacron Acircumflex -40
-KPX Omacron Adieresis -40
-KPX Omacron Agrave -40
-KPX Omacron Amacron -40
-KPX Omacron Aogonek -40
-KPX Omacron Aring -40
-KPX Omacron Atilde -40
-KPX Omacron T -40
-KPX Omacron Tcaron -40
-KPX Omacron Tcommaaccent -40
-KPX Omacron V -50
-KPX Omacron W -50
-KPX Omacron X -40
-KPX Omacron Y -50
-KPX Omacron Yacute -50
-KPX Omacron Ydieresis -50
-KPX Oslash A -40
-KPX Oslash Aacute -40
-KPX Oslash Abreve -40
-KPX Oslash Acircumflex -40
-KPX Oslash Adieresis -40
-KPX Oslash Agrave -40
-KPX Oslash Amacron -40
-KPX Oslash Aogonek -40
-KPX Oslash Aring -40
-KPX Oslash Atilde -40
-KPX Oslash T -40
-KPX Oslash Tcaron -40
-KPX Oslash Tcommaaccent -40
-KPX Oslash V -50
-KPX Oslash W -50
-KPX Oslash X -40
-KPX Oslash Y -50
-KPX Oslash Yacute -50
-KPX Oslash Ydieresis -50
-KPX Otilde A -40
-KPX Otilde Aacute -40
-KPX Otilde Abreve -40
-KPX Otilde Acircumflex -40
-KPX Otilde Adieresis -40
-KPX Otilde Agrave -40
-KPX Otilde Amacron -40
-KPX Otilde Aogonek -40
-KPX Otilde Aring -40
-KPX Otilde Atilde -40
-KPX Otilde T -40
-KPX Otilde Tcaron -40
-KPX Otilde Tcommaaccent -40
-KPX Otilde V -50
-KPX Otilde W -50
-KPX Otilde X -40
-KPX Otilde Y -50
-KPX Otilde Yacute -50
-KPX Otilde Ydieresis -50
-KPX P A -74
-KPX P Aacute -74
-KPX P Abreve -74
-KPX P Acircumflex -74
-KPX P Adieresis -74
-KPX P Agrave -74
-KPX P Amacron -74
-KPX P Aogonek -74
-KPX P Aring -74
-KPX P Atilde -74
-KPX P a -10
-KPX P aacute -10
-KPX P abreve -10
-KPX P acircumflex -10
-KPX P adieresis -10
-KPX P agrave -10
-KPX P amacron -10
-KPX P aogonek -10
-KPX P aring -10
-KPX P atilde -10
-KPX P comma -92
-KPX P e -20
-KPX P eacute -20
-KPX P ecaron -20
-KPX P ecircumflex -20
-KPX P edieresis -20
-KPX P edotaccent -20
-KPX P egrave -20
-KPX P emacron -20
-KPX P eogonek -20
-KPX P o -20
-KPX P oacute -20
-KPX P ocircumflex -20
-KPX P odieresis -20
-KPX P ograve -20
-KPX P ohungarumlaut -20
-KPX P omacron -20
-KPX P oslash -20
-KPX P otilde -20
-KPX P period -110
-KPX Q U -10
-KPX Q Uacute -10
-KPX Q Ucircumflex -10
-KPX Q Udieresis -10
-KPX Q Ugrave -10
-KPX Q Uhungarumlaut -10
-KPX Q Umacron -10
-KPX Q Uogonek -10
-KPX Q Uring -10
-KPX Q period -20
-KPX R O -30
-KPX R Oacute -30
-KPX R Ocircumflex -30
-KPX R Odieresis -30
-KPX R Ograve -30
-KPX R Ohungarumlaut -30
-KPX R Omacron -30
-KPX R Oslash -30
-KPX R Otilde -30
-KPX R T -40
-KPX R Tcaron -40
-KPX R Tcommaaccent -40
-KPX R U -30
-KPX R Uacute -30
-KPX R Ucircumflex -30
-KPX R Udieresis -30
-KPX R Ugrave -30
-KPX R Uhungarumlaut -30
-KPX R Umacron -30
-KPX R Uogonek -30
-KPX R Uring -30
-KPX R V -55
-KPX R W -35
-KPX R Y -35
-KPX R Yacute -35
-KPX R Ydieresis -35
-KPX Racute O -30
-KPX Racute Oacute -30
-KPX Racute Ocircumflex -30
-KPX Racute Odieresis -30
-KPX Racute Ograve -30
-KPX Racute Ohungarumlaut -30
-KPX Racute Omacron -30
-KPX Racute Oslash -30
-KPX Racute Otilde -30
-KPX Racute T -40
-KPX Racute Tcaron -40
-KPX Racute Tcommaaccent -40
-KPX Racute U -30
-KPX Racute Uacute -30
-KPX Racute Ucircumflex -30
-KPX Racute Udieresis -30
-KPX Racute Ugrave -30
-KPX Racute Uhungarumlaut -30
-KPX Racute Umacron -30
-KPX Racute Uogonek -30
-KPX Racute Uring -30
-KPX Racute V -55
-KPX Racute W -35
-KPX Racute Y -35
-KPX Racute Yacute -35
-KPX Racute Ydieresis -35
-KPX Rcaron O -30
-KPX Rcaron Oacute -30
-KPX Rcaron Ocircumflex -30
-KPX Rcaron Odieresis -30
-KPX Rcaron Ograve -30
-KPX Rcaron Ohungarumlaut -30
-KPX Rcaron Omacron -30
-KPX Rcaron Oslash -30
-KPX Rcaron Otilde -30
-KPX Rcaron T -40
-KPX Rcaron Tcaron -40
-KPX Rcaron Tcommaaccent -40
-KPX Rcaron U -30
-KPX Rcaron Uacute -30
-KPX Rcaron Ucircumflex -30
-KPX Rcaron Udieresis -30
-KPX Rcaron Ugrave -30
-KPX Rcaron Uhungarumlaut -30
-KPX Rcaron Umacron -30
-KPX Rcaron Uogonek -30
-KPX Rcaron Uring -30
-KPX Rcaron V -55
-KPX Rcaron W -35
-KPX Rcaron Y -35
-KPX Rcaron Yacute -35
-KPX Rcaron Ydieresis -35
-KPX Rcommaaccent O -30
-KPX Rcommaaccent Oacute -30
-KPX Rcommaaccent Ocircumflex -30
-KPX Rcommaaccent Odieresis -30
-KPX Rcommaaccent Ograve -30
-KPX Rcommaaccent Ohungarumlaut -30
-KPX Rcommaaccent Omacron -30
-KPX Rcommaaccent Oslash -30
-KPX Rcommaaccent Otilde -30
-KPX Rcommaaccent T -40
-KPX Rcommaaccent Tcaron -40
-KPX Rcommaaccent Tcommaaccent -40
-KPX Rcommaaccent U -30
-KPX Rcommaaccent Uacute -30
-KPX Rcommaaccent Ucircumflex -30
-KPX Rcommaaccent Udieresis -30
-KPX Rcommaaccent Ugrave -30
-KPX Rcommaaccent Uhungarumlaut -30
-KPX Rcommaaccent Umacron -30
-KPX Rcommaaccent Uogonek -30
-KPX Rcommaaccent Uring -30
-KPX Rcommaaccent V -55
-KPX Rcommaaccent W -35
-KPX Rcommaaccent Y -35
-KPX Rcommaaccent Yacute -35
-KPX Rcommaaccent Ydieresis -35
-KPX T A -90
-KPX T Aacute -90
-KPX T Abreve -90
-KPX T Acircumflex -90
-KPX T Adieresis -90
-KPX T Agrave -90
-KPX T Amacron -90
-KPX T Aogonek -90
-KPX T Aring -90
-KPX T Atilde -90
-KPX T O -18
-KPX T Oacute -18
-KPX T Ocircumflex -18
-KPX T Odieresis -18
-KPX T Ograve -18
-KPX T Ohungarumlaut -18
-KPX T Omacron -18
-KPX T Oslash -18
-KPX T Otilde -18
-KPX T a -92
-KPX T aacute -92
-KPX T abreve -52
-KPX T acircumflex -52
-KPX T adieresis -52
-KPX T agrave -52
-KPX T amacron -52
-KPX T aogonek -92
-KPX T aring -92
-KPX T atilde -52
-KPX T colon -74
-KPX T comma -74
-KPX T e -92
-KPX T eacute -92
-KPX T ecaron -92
-KPX T ecircumflex -92
-KPX T edieresis -52
-KPX T edotaccent -92
-KPX T egrave -52
-KPX T emacron -52
-KPX T eogonek -92
-KPX T hyphen -92
-KPX T i -18
-KPX T iacute -18
-KPX T iogonek -18
-KPX T o -92
-KPX T oacute -92
-KPX T ocircumflex -92
-KPX T odieresis -92
-KPX T ograve -92
-KPX T ohungarumlaut -92
-KPX T omacron -92
-KPX T oslash -92
-KPX T otilde -92
-KPX T period -90
-KPX T r -74
-KPX T racute -74
-KPX T rcaron -74
-KPX T rcommaaccent -74
-KPX T semicolon -74
-KPX T u -92
-KPX T uacute -92
-KPX T ucircumflex -92
-KPX T udieresis -92
-KPX T ugrave -92
-KPX T uhungarumlaut -92
-KPX T umacron -92
-KPX T uogonek -92
-KPX T uring -92
-KPX T w -74
-KPX T y -34
-KPX T yacute -34
-KPX T ydieresis -34
-KPX Tcaron A -90
-KPX Tcaron Aacute -90
-KPX Tcaron Abreve -90
-KPX Tcaron Acircumflex -90
-KPX Tcaron Adieresis -90
-KPX Tcaron Agrave -90
-KPX Tcaron Amacron -90
-KPX Tcaron Aogonek -90
-KPX Tcaron Aring -90
-KPX Tcaron Atilde -90
-KPX Tcaron O -18
-KPX Tcaron Oacute -18
-KPX Tcaron Ocircumflex -18
-KPX Tcaron Odieresis -18
-KPX Tcaron Ograve -18
-KPX Tcaron Ohungarumlaut -18
-KPX Tcaron Omacron -18
-KPX Tcaron Oslash -18
-KPX Tcaron Otilde -18
-KPX Tcaron a -92
-KPX Tcaron aacute -92
-KPX Tcaron abreve -52
-KPX Tcaron acircumflex -52
-KPX Tcaron adieresis -52
-KPX Tcaron agrave -52
-KPX Tcaron amacron -52
-KPX Tcaron aogonek -92
-KPX Tcaron aring -92
-KPX Tcaron atilde -52
-KPX Tcaron colon -74
-KPX Tcaron comma -74
-KPX Tcaron e -92
-KPX Tcaron eacute -92
-KPX Tcaron ecaron -92
-KPX Tcaron ecircumflex -92
-KPX Tcaron edieresis -52
-KPX Tcaron edotaccent -92
-KPX Tcaron egrave -52
-KPX Tcaron emacron -52
-KPX Tcaron eogonek -92
-KPX Tcaron hyphen -92
-KPX Tcaron i -18
-KPX Tcaron iacute -18
-KPX Tcaron iogonek -18
-KPX Tcaron o -92
-KPX Tcaron oacute -92
-KPX Tcaron ocircumflex -92
-KPX Tcaron odieresis -92
-KPX Tcaron ograve -92
-KPX Tcaron ohungarumlaut -92
-KPX Tcaron omacron -92
-KPX Tcaron oslash -92
-KPX Tcaron otilde -92
-KPX Tcaron period -90
-KPX Tcaron r -74
-KPX Tcaron racute -74
-KPX Tcaron rcaron -74
-KPX Tcaron rcommaaccent -74
-KPX Tcaron semicolon -74
-KPX Tcaron u -92
-KPX Tcaron uacute -92
-KPX Tcaron ucircumflex -92
-KPX Tcaron udieresis -92
-KPX Tcaron ugrave -92
-KPX Tcaron uhungarumlaut -92
-KPX Tcaron umacron -92
-KPX Tcaron uogonek -92
-KPX Tcaron uring -92
-KPX Tcaron w -74
-KPX Tcaron y -34
-KPX Tcaron yacute -34
-KPX Tcaron ydieresis -34
-KPX Tcommaaccent A -90
-KPX Tcommaaccent Aacute -90
-KPX Tcommaaccent Abreve -90
-KPX Tcommaaccent Acircumflex -90
-KPX Tcommaaccent Adieresis -90
-KPX Tcommaaccent Agrave -90
-KPX Tcommaaccent Amacron -90
-KPX Tcommaaccent Aogonek -90
-KPX Tcommaaccent Aring -90
-KPX Tcommaaccent Atilde -90
-KPX Tcommaaccent O -18
-KPX Tcommaaccent Oacute -18
-KPX Tcommaaccent Ocircumflex -18
-KPX Tcommaaccent Odieresis -18
-KPX Tcommaaccent Ograve -18
-KPX Tcommaaccent Ohungarumlaut -18
-KPX Tcommaaccent Omacron -18
-KPX Tcommaaccent Oslash -18
-KPX Tcommaaccent Otilde -18
-KPX Tcommaaccent a -92
-KPX Tcommaaccent aacute -92
-KPX Tcommaaccent abreve -52
-KPX Tcommaaccent acircumflex -52
-KPX Tcommaaccent adieresis -52
-KPX Tcommaaccent agrave -52
-KPX Tcommaaccent amacron -52
-KPX Tcommaaccent aogonek -92
-KPX Tcommaaccent aring -92
-KPX Tcommaaccent atilde -52
-KPX Tcommaaccent colon -74
-KPX Tcommaaccent comma -74
-KPX Tcommaaccent e -92
-KPX Tcommaaccent eacute -92
-KPX Tcommaaccent ecaron -92
-KPX Tcommaaccent ecircumflex -92
-KPX Tcommaaccent edieresis -52
-KPX Tcommaaccent edotaccent -92
-KPX Tcommaaccent egrave -52
-KPX Tcommaaccent emacron -52
-KPX Tcommaaccent eogonek -92
-KPX Tcommaaccent hyphen -92
-KPX Tcommaaccent i -18
-KPX Tcommaaccent iacute -18
-KPX Tcommaaccent iogonek -18
-KPX Tcommaaccent o -92
-KPX Tcommaaccent oacute -92
-KPX Tcommaaccent ocircumflex -92
-KPX Tcommaaccent odieresis -92
-KPX Tcommaaccent ograve -92
-KPX Tcommaaccent ohungarumlaut -92
-KPX Tcommaaccent omacron -92
-KPX Tcommaaccent oslash -92
-KPX Tcommaaccent otilde -92
-KPX Tcommaaccent period -90
-KPX Tcommaaccent r -74
-KPX Tcommaaccent racute -74
-KPX Tcommaaccent rcaron -74
-KPX Tcommaaccent rcommaaccent -74
-KPX Tcommaaccent semicolon -74
-KPX Tcommaaccent u -92
-KPX Tcommaaccent uacute -92
-KPX Tcommaaccent ucircumflex -92
-KPX Tcommaaccent udieresis -92
-KPX Tcommaaccent ugrave -92
-KPX Tcommaaccent uhungarumlaut -92
-KPX Tcommaaccent umacron -92
-KPX Tcommaaccent uogonek -92
-KPX Tcommaaccent uring -92
-KPX Tcommaaccent w -74
-KPX Tcommaaccent y -34
-KPX Tcommaaccent yacute -34
-KPX Tcommaaccent ydieresis -34
-KPX U A -60
-KPX U Aacute -60
-KPX U Abreve -60
-KPX U Acircumflex -60
-KPX U Adieresis -60
-KPX U Agrave -60
-KPX U Amacron -60
-KPX U Aogonek -60
-KPX U Aring -60
-KPX U Atilde -60
-KPX U comma -50
-KPX U period -50
-KPX Uacute A -60
-KPX Uacute Aacute -60
-KPX Uacute Abreve -60
-KPX Uacute Acircumflex -60
-KPX Uacute Adieresis -60
-KPX Uacute Agrave -60
-KPX Uacute Amacron -60
-KPX Uacute Aogonek -60
-KPX Uacute Aring -60
-KPX Uacute Atilde -60
-KPX Uacute comma -50
-KPX Uacute period -50
-KPX Ucircumflex A -60
-KPX Ucircumflex Aacute -60
-KPX Ucircumflex Abreve -60
-KPX Ucircumflex Acircumflex -60
-KPX Ucircumflex Adieresis -60
-KPX Ucircumflex Agrave -60
-KPX Ucircumflex Amacron -60
-KPX Ucircumflex Aogonek -60
-KPX Ucircumflex Aring -60
-KPX Ucircumflex Atilde -60
-KPX Ucircumflex comma -50
-KPX Ucircumflex period -50
-KPX Udieresis A -60
-KPX Udieresis Aacute -60
-KPX Udieresis Abreve -60
-KPX Udieresis Acircumflex -60
-KPX Udieresis Adieresis -60
-KPX Udieresis Agrave -60
-KPX Udieresis Amacron -60
-KPX Udieresis Aogonek -60
-KPX Udieresis Aring -60
-KPX Udieresis Atilde -60
-KPX Udieresis comma -50
-KPX Udieresis period -50
-KPX Ugrave A -60
-KPX Ugrave Aacute -60
-KPX Ugrave Abreve -60
-KPX Ugrave Acircumflex -60
-KPX Ugrave Adieresis -60
-KPX Ugrave Agrave -60
-KPX Ugrave Amacron -60
-KPX Ugrave Aogonek -60
-KPX Ugrave Aring -60
-KPX Ugrave Atilde -60
-KPX Ugrave comma -50
-KPX Ugrave period -50
-KPX Uhungarumlaut A -60
-KPX Uhungarumlaut Aacute -60
-KPX Uhungarumlaut Abreve -60
-KPX Uhungarumlaut Acircumflex -60
-KPX Uhungarumlaut Adieresis -60
-KPX Uhungarumlaut Agrave -60
-KPX Uhungarumlaut Amacron -60
-KPX Uhungarumlaut Aogonek -60
-KPX Uhungarumlaut Aring -60
-KPX Uhungarumlaut Atilde -60
-KPX Uhungarumlaut comma -50
-KPX Uhungarumlaut period -50
-KPX Umacron A -60
-KPX Umacron Aacute -60
-KPX Umacron Abreve -60
-KPX Umacron Acircumflex -60
-KPX Umacron Adieresis -60
-KPX Umacron Agrave -60
-KPX Umacron Amacron -60
-KPX Umacron Aogonek -60
-KPX Umacron Aring -60
-KPX Umacron Atilde -60
-KPX Umacron comma -50
-KPX Umacron period -50
-KPX Uogonek A -60
-KPX Uogonek Aacute -60
-KPX Uogonek Abreve -60
-KPX Uogonek Acircumflex -60
-KPX Uogonek Adieresis -60
-KPX Uogonek Agrave -60
-KPX Uogonek Amacron -60
-KPX Uogonek Aogonek -60
-KPX Uogonek Aring -60
-KPX Uogonek Atilde -60
-KPX Uogonek comma -50
-KPX Uogonek period -50
-KPX Uring A -60
-KPX Uring Aacute -60
-KPX Uring Abreve -60
-KPX Uring Acircumflex -60
-KPX Uring Adieresis -60
-KPX Uring Agrave -60
-KPX Uring Amacron -60
-KPX Uring Aogonek -60
-KPX Uring Aring -60
-KPX Uring Atilde -60
-KPX Uring comma -50
-KPX Uring period -50
-KPX V A -135
-KPX V Aacute -135
-KPX V Abreve -135
-KPX V Acircumflex -135
-KPX V Adieresis -135
-KPX V Agrave -135
-KPX V Amacron -135
-KPX V Aogonek -135
-KPX V Aring -135
-KPX V Atilde -135
-KPX V G -30
-KPX V Gbreve -30
-KPX V Gcommaaccent -30
-KPX V O -45
-KPX V Oacute -45
-KPX V Ocircumflex -45
-KPX V Odieresis -45
-KPX V Ograve -45
-KPX V Ohungarumlaut -45
-KPX V Omacron -45
-KPX V Oslash -45
-KPX V Otilde -45
-KPX V a -92
-KPX V aacute -92
-KPX V abreve -92
-KPX V acircumflex -92
-KPX V adieresis -92
-KPX V agrave -92
-KPX V amacron -92
-KPX V aogonek -92
-KPX V aring -92
-KPX V atilde -92
-KPX V colon -92
-KPX V comma -129
-KPX V e -100
-KPX V eacute -100
-KPX V ecaron -100
-KPX V ecircumflex -100
-KPX V edieresis -100
-KPX V edotaccent -100
-KPX V egrave -100
-KPX V emacron -100
-KPX V eogonek -100
-KPX V hyphen -74
-KPX V i -37
-KPX V iacute -37
-KPX V icircumflex -37
-KPX V idieresis -37
-KPX V igrave -37
-KPX V imacron -37
-KPX V iogonek -37
-KPX V o -100
-KPX V oacute -100
-KPX V ocircumflex -100
-KPX V odieresis -100
-KPX V ograve -100
-KPX V ohungarumlaut -100
-KPX V omacron -100
-KPX V oslash -100
-KPX V otilde -100
-KPX V period -145
-KPX V semicolon -92
-KPX V u -92
-KPX V uacute -92
-KPX V ucircumflex -92
-KPX V udieresis -92
-KPX V ugrave -92
-KPX V uhungarumlaut -92
-KPX V umacron -92
-KPX V uogonek -92
-KPX V uring -92
-KPX W A -120
-KPX W Aacute -120
-KPX W Abreve -120
-KPX W Acircumflex -120
-KPX W Adieresis -120
-KPX W Agrave -120
-KPX W Amacron -120
-KPX W Aogonek -120
-KPX W Aring -120
-KPX W Atilde -120
-KPX W O -10
-KPX W Oacute -10
-KPX W Ocircumflex -10
-KPX W Odieresis -10
-KPX W Ograve -10
-KPX W Ohungarumlaut -10
-KPX W Omacron -10
-KPX W Oslash -10
-KPX W Otilde -10
-KPX W a -65
-KPX W aacute -65
-KPX W abreve -65
-KPX W acircumflex -65
-KPX W adieresis -65
-KPX W agrave -65
-KPX W amacron -65
-KPX W aogonek -65
-KPX W aring -65
-KPX W atilde -65
-KPX W colon -55
-KPX W comma -92
-KPX W e -65
-KPX W eacute -65
-KPX W ecaron -65
-KPX W ecircumflex -65
-KPX W edieresis -65
-KPX W edotaccent -65
-KPX W egrave -65
-KPX W emacron -65
-KPX W eogonek -65
-KPX W hyphen -37
-KPX W i -18
-KPX W iacute -18
-KPX W iogonek -18
-KPX W o -75
-KPX W oacute -75
-KPX W ocircumflex -75
-KPX W odieresis -75
-KPX W ograve -75
-KPX W ohungarumlaut -75
-KPX W omacron -75
-KPX W oslash -75
-KPX W otilde -75
-KPX W period -92
-KPX W semicolon -55
-KPX W u -50
-KPX W uacute -50
-KPX W ucircumflex -50
-KPX W udieresis -50
-KPX W ugrave -50
-KPX W uhungarumlaut -50
-KPX W umacron -50
-KPX W uogonek -50
-KPX W uring -50
-KPX W y -60
-KPX W yacute -60
-KPX W ydieresis -60
-KPX Y A -110
-KPX Y Aacute -110
-KPX Y Abreve -110
-KPX Y Acircumflex -110
-KPX Y Adieresis -110
-KPX Y Agrave -110
-KPX Y Amacron -110
-KPX Y Aogonek -110
-KPX Y Aring -110
-KPX Y Atilde -110
-KPX Y O -35
-KPX Y Oacute -35
-KPX Y Ocircumflex -35
-KPX Y Odieresis -35
-KPX Y Ograve -35
-KPX Y Ohungarumlaut -35
-KPX Y Omacron -35
-KPX Y Oslash -35
-KPX Y Otilde -35
-KPX Y a -85
-KPX Y aacute -85
-KPX Y abreve -85
-KPX Y acircumflex -85
-KPX Y adieresis -85
-KPX Y agrave -85
-KPX Y amacron -85
-KPX Y aogonek -85
-KPX Y aring -85
-KPX Y atilde -85
-KPX Y colon -92
-KPX Y comma -92
-KPX Y e -111
-KPX Y eacute -111
-KPX Y ecaron -111
-KPX Y ecircumflex -111
-KPX Y edieresis -71
-KPX Y edotaccent -111
-KPX Y egrave -71
-KPX Y emacron -71
-KPX Y eogonek -111
-KPX Y hyphen -92
-KPX Y i -37
-KPX Y iacute -37
-KPX Y iogonek -37
-KPX Y o -111
-KPX Y oacute -111
-KPX Y ocircumflex -111
-KPX Y odieresis -111
-KPX Y ograve -111
-KPX Y ohungarumlaut -111
-KPX Y omacron -111
-KPX Y oslash -111
-KPX Y otilde -111
-KPX Y period -92
-KPX Y semicolon -92
-KPX Y u -92
-KPX Y uacute -92
-KPX Y ucircumflex -92
-KPX Y udieresis -92
-KPX Y ugrave -92
-KPX Y uhungarumlaut -92
-KPX Y umacron -92
-KPX Y uogonek -92
-KPX Y uring -92
-KPX Yacute A -110
-KPX Yacute Aacute -110
-KPX Yacute Abreve -110
-KPX Yacute Acircumflex -110
-KPX Yacute Adieresis -110
-KPX Yacute Agrave -110
-KPX Yacute Amacron -110
-KPX Yacute Aogonek -110
-KPX Yacute Aring -110
-KPX Yacute Atilde -110
-KPX Yacute O -35
-KPX Yacute Oacute -35
-KPX Yacute Ocircumflex -35
-KPX Yacute Odieresis -35
-KPX Yacute Ograve -35
-KPX Yacute Ohungarumlaut -35
-KPX Yacute Omacron -35
-KPX Yacute Oslash -35
-KPX Yacute Otilde -35
-KPX Yacute a -85
-KPX Yacute aacute -85
-KPX Yacute abreve -85
-KPX Yacute acircumflex -85
-KPX Yacute adieresis -85
-KPX Yacute agrave -85
-KPX Yacute amacron -85
-KPX Yacute aogonek -85
-KPX Yacute aring -85
-KPX Yacute atilde -85
-KPX Yacute colon -92
-KPX Yacute comma -92
-KPX Yacute e -111
-KPX Yacute eacute -111
-KPX Yacute ecaron -111
-KPX Yacute ecircumflex -111
-KPX Yacute edieresis -71
-KPX Yacute edotaccent -111
-KPX Yacute egrave -71
-KPX Yacute emacron -71
-KPX Yacute eogonek -111
-KPX Yacute hyphen -92
-KPX Yacute i -37
-KPX Yacute iacute -37
-KPX Yacute iogonek -37
-KPX Yacute o -111
-KPX Yacute oacute -111
-KPX Yacute ocircumflex -111
-KPX Yacute odieresis -111
-KPX Yacute ograve -111
-KPX Yacute ohungarumlaut -111
-KPX Yacute omacron -111
-KPX Yacute oslash -111
-KPX Yacute otilde -111
-KPX Yacute period -92
-KPX Yacute semicolon -92
-KPX Yacute u -92
-KPX Yacute uacute -92
-KPX Yacute ucircumflex -92
-KPX Yacute udieresis -92
-KPX Yacute ugrave -92
-KPX Yacute uhungarumlaut -92
-KPX Yacute umacron -92
-KPX Yacute uogonek -92
-KPX Yacute uring -92
-KPX Ydieresis A -110
-KPX Ydieresis Aacute -110
-KPX Ydieresis Abreve -110
-KPX Ydieresis Acircumflex -110
-KPX Ydieresis Adieresis -110
-KPX Ydieresis Agrave -110
-KPX Ydieresis Amacron -110
-KPX Ydieresis Aogonek -110
-KPX Ydieresis Aring -110
-KPX Ydieresis Atilde -110
-KPX Ydieresis O -35
-KPX Ydieresis Oacute -35
-KPX Ydieresis Ocircumflex -35
-KPX Ydieresis Odieresis -35
-KPX Ydieresis Ograve -35
-KPX Ydieresis Ohungarumlaut -35
-KPX Ydieresis Omacron -35
-KPX Ydieresis Oslash -35
-KPX Ydieresis Otilde -35
-KPX Ydieresis a -85
-KPX Ydieresis aacute -85
-KPX Ydieresis abreve -85
-KPX Ydieresis acircumflex -85
-KPX Ydieresis adieresis -85
-KPX Ydieresis agrave -85
-KPX Ydieresis amacron -85
-KPX Ydieresis aogonek -85
-KPX Ydieresis aring -85
-KPX Ydieresis atilde -85
-KPX Ydieresis colon -92
-KPX Ydieresis comma -92
-KPX Ydieresis e -111
-KPX Ydieresis eacute -111
-KPX Ydieresis ecaron -111
-KPX Ydieresis ecircumflex -111
-KPX Ydieresis edieresis -71
-KPX Ydieresis edotaccent -111
-KPX Ydieresis egrave -71
-KPX Ydieresis emacron -71
-KPX Ydieresis eogonek -111
-KPX Ydieresis hyphen -92
-KPX Ydieresis i -37
-KPX Ydieresis iacute -37
-KPX Ydieresis iogonek -37
-KPX Ydieresis o -111
-KPX Ydieresis oacute -111
-KPX Ydieresis ocircumflex -111
-KPX Ydieresis odieresis -111
-KPX Ydieresis ograve -111
-KPX Ydieresis ohungarumlaut -111
-KPX Ydieresis omacron -111
-KPX Ydieresis oslash -111
-KPX Ydieresis otilde -111
-KPX Ydieresis period -92
-KPX Ydieresis semicolon -92
-KPX Ydieresis u -92
-KPX Ydieresis uacute -92
-KPX Ydieresis ucircumflex -92
-KPX Ydieresis udieresis -92
-KPX Ydieresis ugrave -92
-KPX Ydieresis uhungarumlaut -92
-KPX Ydieresis umacron -92
-KPX Ydieresis uogonek -92
-KPX Ydieresis uring -92
-KPX a v -25
-KPX aacute v -25
-KPX abreve v -25
-KPX acircumflex v -25
-KPX adieresis v -25
-KPX agrave v -25
-KPX amacron v -25
-KPX aogonek v -25
-KPX aring v -25
-KPX atilde v -25
-KPX b b -10
-KPX b period -40
-KPX b u -20
-KPX b uacute -20
-KPX b ucircumflex -20
-KPX b udieresis -20
-KPX b ugrave -20
-KPX b uhungarumlaut -20
-KPX b umacron -20
-KPX b uogonek -20
-KPX b uring -20
-KPX b v -15
-KPX comma quotedblright -45
-KPX comma quoteright -55
-KPX d w -15
-KPX dcroat w -15
-KPX e v -15
-KPX eacute v -15
-KPX ecaron v -15
-KPX ecircumflex v -15
-KPX edieresis v -15
-KPX edotaccent v -15
-KPX egrave v -15
-KPX emacron v -15
-KPX eogonek v -15
-KPX f comma -15
-KPX f dotlessi -35
-KPX f i -25
-KPX f o -25
-KPX f oacute -25
-KPX f ocircumflex -25
-KPX f odieresis -25
-KPX f ograve -25
-KPX f ohungarumlaut -25
-KPX f omacron -25
-KPX f oslash -25
-KPX f otilde -25
-KPX f period -15
-KPX f quotedblright 50
-KPX f quoteright 55
-KPX g period -15
-KPX gbreve period -15
-KPX gcommaaccent period -15
-KPX h y -15
-KPX h yacute -15
-KPX h ydieresis -15
-KPX i v -10
-KPX iacute v -10
-KPX icircumflex v -10
-KPX idieresis v -10
-KPX igrave v -10
-KPX imacron v -10
-KPX iogonek v -10
-KPX k e -10
-KPX k eacute -10
-KPX k ecaron -10
-KPX k ecircumflex -10
-KPX k edieresis -10
-KPX k edotaccent -10
-KPX k egrave -10
-KPX k emacron -10
-KPX k eogonek -10
-KPX k o -15
-KPX k oacute -15
-KPX k ocircumflex -15
-KPX k odieresis -15
-KPX k ograve -15
-KPX k ohungarumlaut -15
-KPX k omacron -15
-KPX k oslash -15
-KPX k otilde -15
-KPX k y -15
-KPX k yacute -15
-KPX k ydieresis -15
-KPX kcommaaccent e -10
-KPX kcommaaccent eacute -10
-KPX kcommaaccent ecaron -10
-KPX kcommaaccent ecircumflex -10
-KPX kcommaaccent edieresis -10
-KPX kcommaaccent edotaccent -10
-KPX kcommaaccent egrave -10
-KPX kcommaaccent emacron -10
-KPX kcommaaccent eogonek -10
-KPX kcommaaccent o -15
-KPX kcommaaccent oacute -15
-KPX kcommaaccent ocircumflex -15
-KPX kcommaaccent odieresis -15
-KPX kcommaaccent ograve -15
-KPX kcommaaccent ohungarumlaut -15
-KPX kcommaaccent omacron -15
-KPX kcommaaccent oslash -15
-KPX kcommaaccent otilde -15
-KPX kcommaaccent y -15
-KPX kcommaaccent yacute -15
-KPX kcommaaccent ydieresis -15
-KPX n v -40
-KPX nacute v -40
-KPX ncaron v -40
-KPX ncommaaccent v -40
-KPX ntilde v -40
-KPX o v -10
-KPX o w -10
-KPX oacute v -10
-KPX oacute w -10
-KPX ocircumflex v -10
-KPX ocircumflex w -10
-KPX odieresis v -10
-KPX odieresis w -10
-KPX ograve v -10
-KPX ograve w -10
-KPX ohungarumlaut v -10
-KPX ohungarumlaut w -10
-KPX omacron v -10
-KPX omacron w -10
-KPX oslash v -10
-KPX oslash w -10
-KPX otilde v -10
-KPX otilde w -10
-KPX period quotedblright -55
-KPX period quoteright -55
-KPX quotedblleft A -10
-KPX quotedblleft Aacute -10
-KPX quotedblleft Abreve -10
-KPX quotedblleft Acircumflex -10
-KPX quotedblleft Adieresis -10
-KPX quotedblleft Agrave -10
-KPX quotedblleft Amacron -10
-KPX quotedblleft Aogonek -10
-KPX quotedblleft Aring -10
-KPX quotedblleft Atilde -10
-KPX quoteleft A -10
-KPX quoteleft Aacute -10
-KPX quoteleft Abreve -10
-KPX quoteleft Acircumflex -10
-KPX quoteleft Adieresis -10
-KPX quoteleft Agrave -10
-KPX quoteleft Amacron -10
-KPX quoteleft Aogonek -10
-KPX quoteleft Aring -10
-KPX quoteleft Atilde -10
-KPX quoteleft quoteleft -63
-KPX quoteright d -20
-KPX quoteright dcroat -20
-KPX quoteright quoteright -63
-KPX quoteright r -20
-KPX quoteright racute -20
-KPX quoteright rcaron -20
-KPX quoteright rcommaaccent -20
-KPX quoteright s -37
-KPX quoteright sacute -37
-KPX quoteright scaron -37
-KPX quoteright scedilla -37
-KPX quoteright scommaaccent -37
-KPX quoteright space -74
-KPX quoteright v -20
-KPX r c -18
-KPX r cacute -18
-KPX r ccaron -18
-KPX r ccedilla -18
-KPX r comma -92
-KPX r e -18
-KPX r eacute -18
-KPX r ecaron -18
-KPX r ecircumflex -18
-KPX r edieresis -18
-KPX r edotaccent -18
-KPX r egrave -18
-KPX r emacron -18
-KPX r eogonek -18
-KPX r g -10
-KPX r gbreve -10
-KPX r gcommaaccent -10
-KPX r hyphen -37
-KPX r n -15
-KPX r nacute -15
-KPX r ncaron -15
-KPX r ncommaaccent -15
-KPX r ntilde -15
-KPX r o -18
-KPX r oacute -18
-KPX r ocircumflex -18
-KPX r odieresis -18
-KPX r ograve -18
-KPX r ohungarumlaut -18
-KPX r omacron -18
-KPX r oslash -18
-KPX r otilde -18
-KPX r p -10
-KPX r period -100
-KPX r q -18
-KPX r v -10
-KPX racute c -18
-KPX racute cacute -18
-KPX racute ccaron -18
-KPX racute ccedilla -18
-KPX racute comma -92
-KPX racute e -18
-KPX racute eacute -18
-KPX racute ecaron -18
-KPX racute ecircumflex -18
-KPX racute edieresis -18
-KPX racute edotaccent -18
-KPX racute egrave -18
-KPX racute emacron -18
-KPX racute eogonek -18
-KPX racute g -10
-KPX racute gbreve -10
-KPX racute gcommaaccent -10
-KPX racute hyphen -37
-KPX racute n -15
-KPX racute nacute -15
-KPX racute ncaron -15
-KPX racute ncommaaccent -15
-KPX racute ntilde -15
-KPX racute o -18
-KPX racute oacute -18
-KPX racute ocircumflex -18
-KPX racute odieresis -18
-KPX racute ograve -18
-KPX racute ohungarumlaut -18
-KPX racute omacron -18
-KPX racute oslash -18
-KPX racute otilde -18
-KPX racute p -10
-KPX racute period -100
-KPX racute q -18
-KPX racute v -10
-KPX rcaron c -18
-KPX rcaron cacute -18
-KPX rcaron ccaron -18
-KPX rcaron ccedilla -18
-KPX rcaron comma -92
-KPX rcaron e -18
-KPX rcaron eacute -18
-KPX rcaron ecaron -18
-KPX rcaron ecircumflex -18
-KPX rcaron edieresis -18
-KPX rcaron edotaccent -18
-KPX rcaron egrave -18
-KPX rcaron emacron -18
-KPX rcaron eogonek -18
-KPX rcaron g -10
-KPX rcaron gbreve -10
-KPX rcaron gcommaaccent -10
-KPX rcaron hyphen -37
-KPX rcaron n -15
-KPX rcaron nacute -15
-KPX rcaron ncaron -15
-KPX rcaron ncommaaccent -15
-KPX rcaron ntilde -15
-KPX rcaron o -18
-KPX rcaron oacute -18
-KPX rcaron ocircumflex -18
-KPX rcaron odieresis -18
-KPX rcaron ograve -18
-KPX rcaron ohungarumlaut -18
-KPX rcaron omacron -18
-KPX rcaron oslash -18
-KPX rcaron otilde -18
-KPX rcaron p -10
-KPX rcaron period -100
-KPX rcaron q -18
-KPX rcaron v -10
-KPX rcommaaccent c -18
-KPX rcommaaccent cacute -18
-KPX rcommaaccent ccaron -18
-KPX rcommaaccent ccedilla -18
-KPX rcommaaccent comma -92
-KPX rcommaaccent e -18
-KPX rcommaaccent eacute -18
-KPX rcommaaccent ecaron -18
-KPX rcommaaccent ecircumflex -18
-KPX rcommaaccent edieresis -18
-KPX rcommaaccent edotaccent -18
-KPX rcommaaccent egrave -18
-KPX rcommaaccent emacron -18
-KPX rcommaaccent eogonek -18
-KPX rcommaaccent g -10
-KPX rcommaaccent gbreve -10
-KPX rcommaaccent gcommaaccent -10
-KPX rcommaaccent hyphen -37
-KPX rcommaaccent n -15
-KPX rcommaaccent nacute -15
-KPX rcommaaccent ncaron -15
-KPX rcommaaccent ncommaaccent -15
-KPX rcommaaccent ntilde -15
-KPX rcommaaccent o -18
-KPX rcommaaccent oacute -18
-KPX rcommaaccent ocircumflex -18
-KPX rcommaaccent odieresis -18
-KPX rcommaaccent ograve -18
-KPX rcommaaccent ohungarumlaut -18
-KPX rcommaaccent omacron -18
-KPX rcommaaccent oslash -18
-KPX rcommaaccent otilde -18
-KPX rcommaaccent p -10
-KPX rcommaaccent period -100
-KPX rcommaaccent q -18
-KPX rcommaaccent v -10
-KPX space A -55
-KPX space Aacute -55
-KPX space Abreve -55
-KPX space Acircumflex -55
-KPX space Adieresis -55
-KPX space Agrave -55
-KPX space Amacron -55
-KPX space Aogonek -55
-KPX space Aring -55
-KPX space Atilde -55
-KPX space T -30
-KPX space Tcaron -30
-KPX space Tcommaaccent -30
-KPX space V -45
-KPX space W -30
-KPX space Y -55
-KPX space Yacute -55
-KPX space Ydieresis -55
-KPX v a -10
-KPX v aacute -10
-KPX v abreve -10
-KPX v acircumflex -10
-KPX v adieresis -10
-KPX v agrave -10
-KPX v amacron -10
-KPX v aogonek -10
-KPX v aring -10
-KPX v atilde -10
-KPX v comma -55
-KPX v e -10
-KPX v eacute -10
-KPX v ecaron -10
-KPX v ecircumflex -10
-KPX v edieresis -10
-KPX v edotaccent -10
-KPX v egrave -10
-KPX v emacron -10
-KPX v eogonek -10
-KPX v o -10
-KPX v oacute -10
-KPX v ocircumflex -10
-KPX v odieresis -10
-KPX v ograve -10
-KPX v ohungarumlaut -10
-KPX v omacron -10
-KPX v oslash -10
-KPX v otilde -10
-KPX v period -70
-KPX w comma -55
-KPX w o -10
-KPX w oacute -10
-KPX w ocircumflex -10
-KPX w odieresis -10
-KPX w ograve -10
-KPX w ohungarumlaut -10
-KPX w omacron -10
-KPX w oslash -10
-KPX w otilde -10
-KPX w period -70
-KPX y comma -55
-KPX y e -10
-KPX y eacute -10
-KPX y ecaron -10
-KPX y ecircumflex -10
-KPX y edieresis -10
-KPX y edotaccent -10
-KPX y egrave -10
-KPX y emacron -10
-KPX y eogonek -10
-KPX y o -25
-KPX y oacute -25
-KPX y ocircumflex -25
-KPX y odieresis -25
-KPX y ograve -25
-KPX y ohungarumlaut -25
-KPX y omacron -25
-KPX y oslash -25
-KPX y otilde -25
-KPX y period -70
-KPX yacute comma -55
-KPX yacute e -10
-KPX yacute eacute -10
-KPX yacute ecaron -10
-KPX yacute ecircumflex -10
-KPX yacute edieresis -10
-KPX yacute edotaccent -10
-KPX yacute egrave -10
-KPX yacute emacron -10
-KPX yacute eogonek -10
-KPX yacute o -25
-KPX yacute oacute -25
-KPX yacute ocircumflex -25
-KPX yacute odieresis -25
-KPX yacute ograve -25
-KPX yacute ohungarumlaut -25
-KPX yacute omacron -25
-KPX yacute oslash -25
-KPX yacute otilde -25
-KPX yacute period -70
-KPX ydieresis comma -55
-KPX ydieresis e -10
-KPX ydieresis eacute -10
-KPX ydieresis ecaron -10
-KPX ydieresis ecircumflex -10
-KPX ydieresis edieresis -10
-KPX ydieresis edotaccent -10
-KPX ydieresis egrave -10
-KPX ydieresis emacron -10
-KPX ydieresis eogonek -10
-KPX ydieresis o -25
-KPX ydieresis oacute -25
-KPX ydieresis ocircumflex -25
-KPX ydieresis odieresis -25
-KPX ydieresis ograve -25
-KPX ydieresis ohungarumlaut -25
-KPX ydieresis omacron -25
-KPX ydieresis oslash -25
-KPX ydieresis otilde -25
-KPX ydieresis period -70
-EndKernPairs
-EndKernData
-EndFontMetrics
diff --git a/admin/survey/Fonts/Times-BoldItalic.afm b/admin/survey/Fonts/Times-BoldItalic.afm
deleted file mode 100644
index 6da5178..0000000
--- a/admin/survey/Fonts/Times-BoldItalic.afm
+++ /dev/null
@@ -1,2384 +0,0 @@
-StartFontMetrics 4.1
-Comment Copyright (c) 1985, 1987, 1989, 1990, 1993, 1997 Adobe Systems Incorporated. All Rights Reserved.
-Comment Creation Date: Thu May 1 13:04:06 1997
-Comment UniqueID 43066
-Comment VMusage 45874 56899
-FontName Times-BoldItalic
-FullName Times Bold Italic
-FamilyName Times
-Weight Bold
-ItalicAngle -15
-IsFixedPitch false
-CharacterSet ExtendedRoman
-FontBBox -200 -218 996 921
-UnderlinePosition -100
-UnderlineThickness 50
-Version 002.000
-Notice Copyright (c) 1985, 1987, 1989, 1990, 1993, 1997 Adobe Systems Incorporated. All Rights Reserved.Times is a trademark of Linotype-Hell AG and/or its subsidiaries.
-EncodingScheme AdobeStandardEncoding
-CapHeight 669
-XHeight 462
-Ascender 683
-Descender -217
-StdHW 42
-StdVW 121
-StartCharMetrics 315
-C 32 ; WX 250 ; N space ; B 0 0 0 0 ;
-C 33 ; WX 389 ; N exclam ; B 67 -13 370 684 ;
-C 34 ; WX 555 ; N quotedbl ; B 136 398 536 685 ;
-C 35 ; WX 500 ; N numbersign ; B -33 0 533 700 ;
-C 36 ; WX 500 ; N dollar ; B -20 -100 497 733 ;
-C 37 ; WX 833 ; N percent ; B 39 -10 793 692 ;
-C 38 ; WX 778 ; N ampersand ; B 5 -19 699 682 ;
-C 39 ; WX 333 ; N quoteright ; B 98 369 302 685 ;
-C 40 ; WX 333 ; N parenleft ; B 28 -179 344 685 ;
-C 41 ; WX 333 ; N parenright ; B -44 -179 271 685 ;
-C 42 ; WX 500 ; N asterisk ; B 65 249 456 685 ;
-C 43 ; WX 570 ; N plus ; B 33 0 537 506 ;
-C 44 ; WX 250 ; N comma ; B -60 -182 144 134 ;
-C 45 ; WX 333 ; N hyphen ; B 2 166 271 282 ;
-C 46 ; WX 250 ; N period ; B -9 -13 139 135 ;
-C 47 ; WX 278 ; N slash ; B -64 -18 342 685 ;
-C 48 ; WX 500 ; N zero ; B 17 -14 477 683 ;
-C 49 ; WX 500 ; N one ; B 5 0 419 683 ;
-C 50 ; WX 500 ; N two ; B -27 0 446 683 ;
-C 51 ; WX 500 ; N three ; B -15 -13 450 683 ;
-C 52 ; WX 500 ; N four ; B -15 0 503 683 ;
-C 53 ; WX 500 ; N five ; B -11 -13 487 669 ;
-C 54 ; WX 500 ; N six ; B 23 -15 509 679 ;
-C 55 ; WX 500 ; N seven ; B 52 0 525 669 ;
-C 56 ; WX 500 ; N eight ; B 3 -13 476 683 ;
-C 57 ; WX 500 ; N nine ; B -12 -10 475 683 ;
-C 58 ; WX 333 ; N colon ; B 23 -13 264 459 ;
-C 59 ; WX 333 ; N semicolon ; B -25 -183 264 459 ;
-C 60 ; WX 570 ; N less ; B 31 -8 539 514 ;
-C 61 ; WX 570 ; N equal ; B 33 107 537 399 ;
-C 62 ; WX 570 ; N greater ; B 31 -8 539 514 ;
-C 63 ; WX 500 ; N question ; B 79 -13 470 684 ;
-C 64 ; WX 832 ; N at ; B 63 -18 770 685 ;
-C 65 ; WX 667 ; N A ; B -67 0 593 683 ;
-C 66 ; WX 667 ; N B ; B -24 0 624 669 ;
-C 67 ; WX 667 ; N C ; B 32 -18 677 685 ;
-C 68 ; WX 722 ; N D ; B -46 0 685 669 ;
-C 69 ; WX 667 ; N E ; B -27 0 653 669 ;
-C 70 ; WX 667 ; N F ; B -13 0 660 669 ;
-C 71 ; WX 722 ; N G ; B 21 -18 706 685 ;
-C 72 ; WX 778 ; N H ; B -24 0 799 669 ;
-C 73 ; WX 389 ; N I ; B -32 0 406 669 ;
-C 74 ; WX 500 ; N J ; B -46 -99 524 669 ;
-C 75 ; WX 667 ; N K ; B -21 0 702 669 ;
-C 76 ; WX 611 ; N L ; B -22 0 590 669 ;
-C 77 ; WX 889 ; N M ; B -29 -12 917 669 ;
-C 78 ; WX 722 ; N N ; B -27 -15 748 669 ;
-C 79 ; WX 722 ; N O ; B 27 -18 691 685 ;
-C 80 ; WX 611 ; N P ; B -27 0 613 669 ;
-C 81 ; WX 722 ; N Q ; B 27 -208 691 685 ;
-C 82 ; WX 667 ; N R ; B -29 0 623 669 ;
-C 83 ; WX 556 ; N S ; B 2 -18 526 685 ;
-C 84 ; WX 611 ; N T ; B 50 0 650 669 ;
-C 85 ; WX 722 ; N U ; B 67 -18 744 669 ;
-C 86 ; WX 667 ; N V ; B 65 -18 715 669 ;
-C 87 ; WX 889 ; N W ; B 65 -18 940 669 ;
-C 88 ; WX 667 ; N X ; B -24 0 694 669 ;
-C 89 ; WX 611 ; N Y ; B 73 0 659 669 ;
-C 90 ; WX 611 ; N Z ; B -11 0 590 669 ;
-C 91 ; WX 333 ; N bracketleft ; B -37 -159 362 674 ;
-C 92 ; WX 278 ; N backslash ; B -1 -18 279 685 ;
-C 93 ; WX 333 ; N bracketright ; B -56 -157 343 674 ;
-C 94 ; WX 570 ; N asciicircum ; B 67 304 503 669 ;
-C 95 ; WX 500 ; N underscore ; B 0 -125 500 -75 ;
-C 96 ; WX 333 ; N quoteleft ; B 128 369 332 685 ;
-C 97 ; WX 500 ; N a ; B -21 -14 455 462 ;
-C 98 ; WX 500 ; N b ; B -14 -13 444 699 ;
-C 99 ; WX 444 ; N c ; B -5 -13 392 462 ;
-C 100 ; WX 500 ; N d ; B -21 -13 517 699 ;
-C 101 ; WX 444 ; N e ; B 5 -13 398 462 ;
-C 102 ; WX 333 ; N f ; B -169 -205 446 698 ; L i fi ; L l fl ;
-C 103 ; WX 500 ; N g ; B -52 -203 478 462 ;
-C 104 ; WX 556 ; N h ; B -13 -9 498 699 ;
-C 105 ; WX 278 ; N i ; B 2 -9 263 684 ;
-C 106 ; WX 278 ; N j ; B -189 -207 279 684 ;
-C 107 ; WX 500 ; N k ; B -23 -8 483 699 ;
-C 108 ; WX 278 ; N l ; B 2 -9 290 699 ;
-C 109 ; WX 778 ; N m ; B -14 -9 722 462 ;
-C 110 ; WX 556 ; N n ; B -6 -9 493 462 ;
-C 111 ; WX 500 ; N o ; B -3 -13 441 462 ;
-C 112 ; WX 500 ; N p ; B -120 -205 446 462 ;
-C 113 ; WX 500 ; N q ; B 1 -205 471 462 ;
-C 114 ; WX 389 ; N r ; B -21 0 389 462 ;
-C 115 ; WX 389 ; N s ; B -19 -13 333 462 ;
-C 116 ; WX 278 ; N t ; B -11 -9 281 594 ;
-C 117 ; WX 556 ; N u ; B 15 -9 492 462 ;
-C 118 ; WX 444 ; N v ; B 16 -13 401 462 ;
-C 119 ; WX 667 ; N w ; B 16 -13 614 462 ;
-C 120 ; WX 500 ; N x ; B -46 -13 469 462 ;
-C 121 ; WX 444 ; N y ; B -94 -205 392 462 ;
-C 122 ; WX 389 ; N z ; B -43 -78 368 449 ;
-C 123 ; WX 348 ; N braceleft ; B 5 -187 436 686 ;
-C 124 ; WX 220 ; N bar ; B 66 -218 154 782 ;
-C 125 ; WX 348 ; N braceright ; B -129 -187 302 686 ;
-C 126 ; WX 570 ; N asciitilde ; B 54 173 516 333 ;
-C 161 ; WX 389 ; N exclamdown ; B 19 -205 322 492 ;
-C 162 ; WX 500 ; N cent ; B 42 -143 439 576 ;
-C 163 ; WX 500 ; N sterling ; B -32 -12 510 683 ;
-C 164 ; WX 167 ; N fraction ; B -169 -14 324 683 ;
-C 165 ; WX 500 ; N yen ; B 33 0 628 669 ;
-C 166 ; WX 500 ; N florin ; B -87 -156 537 707 ;
-C 167 ; WX 500 ; N section ; B 36 -143 459 685 ;
-C 168 ; WX 500 ; N currency ; B -26 34 526 586 ;
-C 169 ; WX 278 ; N quotesingle ; B 128 398 268 685 ;
-C 170 ; WX 500 ; N quotedblleft ; B 53 369 513 685 ;
-C 171 ; WX 500 ; N guillemotleft ; B 12 32 468 415 ;
-C 172 ; WX 333 ; N guilsinglleft ; B 32 32 303 415 ;
-C 173 ; WX 333 ; N guilsinglright ; B 10 32 281 415 ;
-C 174 ; WX 556 ; N fi ; B -188 -205 514 703 ;
-C 175 ; WX 556 ; N fl ; B -186 -205 553 704 ;
-C 177 ; WX 500 ; N endash ; B -40 178 477 269 ;
-C 178 ; WX 500 ; N dagger ; B 91 -145 494 685 ;
-C 179 ; WX 500 ; N daggerdbl ; B 10 -139 493 685 ;
-C 180 ; WX 250 ; N periodcentered ; B 51 257 199 405 ;
-C 182 ; WX 500 ; N paragraph ; B -57 -193 562 669 ;
-C 183 ; WX 350 ; N bullet ; B 0 175 350 525 ;
-C 184 ; WX 333 ; N quotesinglbase ; B -5 -182 199 134 ;
-C 185 ; WX 500 ; N quotedblbase ; B -57 -182 403 134 ;
-C 186 ; WX 500 ; N quotedblright ; B 53 369 513 685 ;
-C 187 ; WX 500 ; N guillemotright ; B 12 32 468 415 ;
-C 188 ; WX 1000 ; N ellipsis ; B 40 -13 852 135 ;
-C 189 ; WX 1000 ; N perthousand ; B 7 -29 996 706 ;
-C 191 ; WX 500 ; N questiondown ; B 30 -205 421 492 ;
-C 193 ; WX 333 ; N grave ; B 85 516 297 697 ;
-C 194 ; WX 333 ; N acute ; B 139 516 379 697 ;
-C 195 ; WX 333 ; N circumflex ; B 40 516 367 690 ;
-C 196 ; WX 333 ; N tilde ; B 48 536 407 655 ;
-C 197 ; WX 333 ; N macron ; B 51 553 393 623 ;
-C 198 ; WX 333 ; N breve ; B 71 516 387 678 ;
-C 199 ; WX 333 ; N dotaccent ; B 163 550 298 684 ;
-C 200 ; WX 333 ; N dieresis ; B 55 550 402 684 ;
-C 202 ; WX 333 ; N ring ; B 127 516 340 729 ;
-C 203 ; WX 333 ; N cedilla ; B -80 -218 156 5 ;
-C 205 ; WX 333 ; N hungarumlaut ; B 69 516 498 697 ;
-C 206 ; WX 333 ; N ogonek ; B 15 -183 244 34 ;
-C 207 ; WX 333 ; N caron ; B 79 516 411 690 ;
-C 208 ; WX 1000 ; N emdash ; B -40 178 977 269 ;
-C 225 ; WX 944 ; N AE ; B -64 0 918 669 ;
-C 227 ; WX 266 ; N ordfeminine ; B 16 399 330 685 ;
-C 232 ; WX 611 ; N Lslash ; B -22 0 590 669 ;
-C 233 ; WX 722 ; N Oslash ; B 27 -125 691 764 ;
-C 234 ; WX 944 ; N OE ; B 23 -8 946 677 ;
-C 235 ; WX 300 ; N ordmasculine ; B 56 400 347 685 ;
-C 241 ; WX 722 ; N ae ; B -5 -13 673 462 ;
-C 245 ; WX 278 ; N dotlessi ; B 2 -9 238 462 ;
-C 248 ; WX 278 ; N lslash ; B -7 -9 307 699 ;
-C 249 ; WX 500 ; N oslash ; B -3 -119 441 560 ;
-C 250 ; WX 722 ; N oe ; B 6 -13 674 462 ;
-C 251 ; WX 500 ; N germandbls ; B -200 -200 473 705 ;
-C -1 ; WX 389 ; N Idieresis ; B -32 0 450 862 ;
-C -1 ; WX 444 ; N eacute ; B 5 -13 435 697 ;
-C -1 ; WX 500 ; N abreve ; B -21 -14 471 678 ;
-C -1 ; WX 556 ; N uhungarumlaut ; B 15 -9 610 697 ;
-C -1 ; WX 444 ; N ecaron ; B 5 -13 467 690 ;
-C -1 ; WX 611 ; N Ydieresis ; B 73 0 659 862 ;
-C -1 ; WX 570 ; N divide ; B 33 -29 537 535 ;
-C -1 ; WX 611 ; N Yacute ; B 73 0 659 904 ;
-C -1 ; WX 667 ; N Acircumflex ; B -67 0 593 897 ;
-C -1 ; WX 500 ; N aacute ; B -21 -14 463 697 ;
-C -1 ; WX 722 ; N Ucircumflex ; B 67 -18 744 897 ;
-C -1 ; WX 444 ; N yacute ; B -94 -205 435 697 ;
-C -1 ; WX 389 ; N scommaaccent ; B -19 -218 333 462 ;
-C -1 ; WX 444 ; N ecircumflex ; B 5 -13 423 690 ;
-C -1 ; WX 722 ; N Uring ; B 67 -18 744 921 ;
-C -1 ; WX 722 ; N Udieresis ; B 67 -18 744 862 ;
-C -1 ; WX 500 ; N aogonek ; B -21 -183 455 462 ;
-C -1 ; WX 722 ; N Uacute ; B 67 -18 744 904 ;
-C -1 ; WX 556 ; N uogonek ; B 15 -183 492 462 ;
-C -1 ; WX 667 ; N Edieresis ; B -27 0 653 862 ;
-C -1 ; WX 722 ; N Dcroat ; B -31 0 700 669 ;
-C -1 ; WX 250 ; N commaaccent ; B -36 -218 131 -50 ;
-C -1 ; WX 747 ; N copyright ; B 30 -18 718 685 ;
-C -1 ; WX 667 ; N Emacron ; B -27 0 653 830 ;
-C -1 ; WX 444 ; N ccaron ; B -5 -13 467 690 ;
-C -1 ; WX 500 ; N aring ; B -21 -14 455 729 ;
-C -1 ; WX 722 ; N Ncommaaccent ; B -27 -218 748 669 ;
-C -1 ; WX 278 ; N lacute ; B 2 -9 392 904 ;
-C -1 ; WX 500 ; N agrave ; B -21 -14 455 697 ;
-C -1 ; WX 611 ; N Tcommaaccent ; B 50 -218 650 669 ;
-C -1 ; WX 667 ; N Cacute ; B 32 -18 677 904 ;
-C -1 ; WX 500 ; N atilde ; B -21 -14 491 655 ;
-C -1 ; WX 667 ; N Edotaccent ; B -27 0 653 862 ;
-C -1 ; WX 389 ; N scaron ; B -19 -13 424 690 ;
-C -1 ; WX 389 ; N scedilla ; B -19 -218 333 462 ;
-C -1 ; WX 278 ; N iacute ; B 2 -9 352 697 ;
-C -1 ; WX 494 ; N lozenge ; B 10 0 484 745 ;
-C -1 ; WX 667 ; N Rcaron ; B -29 0 623 897 ;
-C -1 ; WX 722 ; N Gcommaaccent ; B 21 -218 706 685 ;
-C -1 ; WX 556 ; N ucircumflex ; B 15 -9 492 690 ;
-C -1 ; WX 500 ; N acircumflex ; B -21 -14 455 690 ;
-C -1 ; WX 667 ; N Amacron ; B -67 0 593 830 ;
-C -1 ; WX 389 ; N rcaron ; B -21 0 424 690 ;
-C -1 ; WX 444 ; N ccedilla ; B -5 -218 392 462 ;
-C -1 ; WX 611 ; N Zdotaccent ; B -11 0 590 862 ;
-C -1 ; WX 611 ; N Thorn ; B -27 0 573 669 ;
-C -1 ; WX 722 ; N Omacron ; B 27 -18 691 830 ;
-C -1 ; WX 667 ; N Racute ; B -29 0 623 904 ;
-C -1 ; WX 556 ; N Sacute ; B 2 -18 531 904 ;
-C -1 ; WX 608 ; N dcaron ; B -21 -13 675 708 ;
-C -1 ; WX 722 ; N Umacron ; B 67 -18 744 830 ;
-C -1 ; WX 556 ; N uring ; B 15 -9 492 729 ;
-C -1 ; WX 300 ; N threesuperior ; B 17 265 321 683 ;
-C -1 ; WX 722 ; N Ograve ; B 27 -18 691 904 ;
-C -1 ; WX 667 ; N Agrave ; B -67 0 593 904 ;
-C -1 ; WX 667 ; N Abreve ; B -67 0 593 885 ;
-C -1 ; WX 570 ; N multiply ; B 48 16 522 490 ;
-C -1 ; WX 556 ; N uacute ; B 15 -9 492 697 ;
-C -1 ; WX 611 ; N Tcaron ; B 50 0 650 897 ;
-C -1 ; WX 494 ; N partialdiff ; B 11 -21 494 750 ;
-C -1 ; WX 444 ; N ydieresis ; B -94 -205 443 655 ;
-C -1 ; WX 722 ; N Nacute ; B -27 -15 748 904 ;
-C -1 ; WX 278 ; N icircumflex ; B -3 -9 324 690 ;
-C -1 ; WX 667 ; N Ecircumflex ; B -27 0 653 897 ;
-C -1 ; WX 500 ; N adieresis ; B -21 -14 476 655 ;
-C -1 ; WX 444 ; N edieresis ; B 5 -13 448 655 ;
-C -1 ; WX 444 ; N cacute ; B -5 -13 435 697 ;
-C -1 ; WX 556 ; N nacute ; B -6 -9 493 697 ;
-C -1 ; WX 556 ; N umacron ; B 15 -9 492 623 ;
-C -1 ; WX 722 ; N Ncaron ; B -27 -15 748 897 ;
-C -1 ; WX 389 ; N Iacute ; B -32 0 432 904 ;
-C -1 ; WX 570 ; N plusminus ; B 33 0 537 506 ;
-C -1 ; WX 220 ; N brokenbar ; B 66 -143 154 707 ;
-C -1 ; WX 747 ; N registered ; B 30 -18 718 685 ;
-C -1 ; WX 722 ; N Gbreve ; B 21 -18 706 885 ;
-C -1 ; WX 389 ; N Idotaccent ; B -32 0 406 862 ;
-C -1 ; WX 600 ; N summation ; B 14 -10 585 706 ;
-C -1 ; WX 667 ; N Egrave ; B -27 0 653 904 ;
-C -1 ; WX 389 ; N racute ; B -21 0 407 697 ;
-C -1 ; WX 500 ; N omacron ; B -3 -13 462 623 ;
-C -1 ; WX 611 ; N Zacute ; B -11 0 590 904 ;
-C -1 ; WX 611 ; N Zcaron ; B -11 0 590 897 ;
-C -1 ; WX 549 ; N greaterequal ; B 26 0 523 704 ;
-C -1 ; WX 722 ; N Eth ; B -31 0 700 669 ;
-C -1 ; WX 667 ; N Ccedilla ; B 32 -218 677 685 ;
-C -1 ; WX 278 ; N lcommaaccent ; B -42 -218 290 699 ;
-C -1 ; WX 366 ; N tcaron ; B -11 -9 434 754 ;
-C -1 ; WX 444 ; N eogonek ; B 5 -183 398 462 ;
-C -1 ; WX 722 ; N Uogonek ; B 67 -183 744 669 ;
-C -1 ; WX 667 ; N Aacute ; B -67 0 593 904 ;
-C -1 ; WX 667 ; N Adieresis ; B -67 0 593 862 ;
-C -1 ; WX 444 ; N egrave ; B 5 -13 398 697 ;
-C -1 ; WX 389 ; N zacute ; B -43 -78 407 697 ;
-C -1 ; WX 278 ; N iogonek ; B -20 -183 263 684 ;
-C -1 ; WX 722 ; N Oacute ; B 27 -18 691 904 ;
-C -1 ; WX 500 ; N oacute ; B -3 -13 463 697 ;
-C -1 ; WX 500 ; N amacron ; B -21 -14 467 623 ;
-C -1 ; WX 389 ; N sacute ; B -19 -13 407 697 ;
-C -1 ; WX 278 ; N idieresis ; B 2 -9 364 655 ;
-C -1 ; WX 722 ; N Ocircumflex ; B 27 -18 691 897 ;
-C -1 ; WX 722 ; N Ugrave ; B 67 -18 744 904 ;
-C -1 ; WX 612 ; N Delta ; B 6 0 608 688 ;
-C -1 ; WX 500 ; N thorn ; B -120 -205 446 699 ;
-C -1 ; WX 300 ; N twosuperior ; B 2 274 313 683 ;
-C -1 ; WX 722 ; N Odieresis ; B 27 -18 691 862 ;
-C -1 ; WX 576 ; N mu ; B -60 -207 516 449 ;
-C -1 ; WX 278 ; N igrave ; B 2 -9 259 697 ;
-C -1 ; WX 500 ; N ohungarumlaut ; B -3 -13 582 697 ;
-C -1 ; WX 667 ; N Eogonek ; B -27 -183 653 669 ;
-C -1 ; WX 500 ; N dcroat ; B -21 -13 552 699 ;
-C -1 ; WX 750 ; N threequarters ; B 7 -14 726 683 ;
-C -1 ; WX 556 ; N Scedilla ; B 2 -218 526 685 ;
-C -1 ; WX 382 ; N lcaron ; B 2 -9 448 708 ;
-C -1 ; WX 667 ; N Kcommaaccent ; B -21 -218 702 669 ;
-C -1 ; WX 611 ; N Lacute ; B -22 0 590 904 ;
-C -1 ; WX 1000 ; N trademark ; B 32 263 968 669 ;
-C -1 ; WX 444 ; N edotaccent ; B 5 -13 398 655 ;
-C -1 ; WX 389 ; N Igrave ; B -32 0 406 904 ;
-C -1 ; WX 389 ; N Imacron ; B -32 0 461 830 ;
-C -1 ; WX 611 ; N Lcaron ; B -22 0 671 718 ;
-C -1 ; WX 750 ; N onehalf ; B -9 -14 723 683 ;
-C -1 ; WX 549 ; N lessequal ; B 29 0 526 704 ;
-C -1 ; WX 500 ; N ocircumflex ; B -3 -13 451 690 ;
-C -1 ; WX 556 ; N ntilde ; B -6 -9 504 655 ;
-C -1 ; WX 722 ; N Uhungarumlaut ; B 67 -18 744 904 ;
-C -1 ; WX 667 ; N Eacute ; B -27 0 653 904 ;
-C -1 ; WX 444 ; N emacron ; B 5 -13 439 623 ;
-C -1 ; WX 500 ; N gbreve ; B -52 -203 478 678 ;
-C -1 ; WX 750 ; N onequarter ; B 7 -14 721 683 ;
-C -1 ; WX 556 ; N Scaron ; B 2 -18 553 897 ;
-C -1 ; WX 556 ; N Scommaaccent ; B 2 -218 526 685 ;
-C -1 ; WX 722 ; N Ohungarumlaut ; B 27 -18 723 904 ;
-C -1 ; WX 400 ; N degree ; B 83 397 369 683 ;
-C -1 ; WX 500 ; N ograve ; B -3 -13 441 697 ;
-C -1 ; WX 667 ; N Ccaron ; B 32 -18 677 897 ;
-C -1 ; WX 556 ; N ugrave ; B 15 -9 492 697 ;
-C -1 ; WX 549 ; N radical ; B 10 -46 512 850 ;
-C -1 ; WX 722 ; N Dcaron ; B -46 0 685 897 ;
-C -1 ; WX 389 ; N rcommaaccent ; B -67 -218 389 462 ;
-C -1 ; WX 722 ; N Ntilde ; B -27 -15 748 862 ;
-C -1 ; WX 500 ; N otilde ; B -3 -13 491 655 ;
-C -1 ; WX 667 ; N Rcommaaccent ; B -29 -218 623 669 ;
-C -1 ; WX 611 ; N Lcommaaccent ; B -22 -218 590 669 ;
-C -1 ; WX 667 ; N Atilde ; B -67 0 593 862 ;
-C -1 ; WX 667 ; N Aogonek ; B -67 -183 604 683 ;
-C -1 ; WX 667 ; N Aring ; B -67 0 593 921 ;
-C -1 ; WX 722 ; N Otilde ; B 27 -18 691 862 ;
-C -1 ; WX 389 ; N zdotaccent ; B -43 -78 368 655 ;
-C -1 ; WX 667 ; N Ecaron ; B -27 0 653 897 ;
-C -1 ; WX 389 ; N Iogonek ; B -32 -183 406 669 ;
-C -1 ; WX 500 ; N kcommaaccent ; B -23 -218 483 699 ;
-C -1 ; WX 606 ; N minus ; B 51 209 555 297 ;
-C -1 ; WX 389 ; N Icircumflex ; B -32 0 450 897 ;
-C -1 ; WX 556 ; N ncaron ; B -6 -9 523 690 ;
-C -1 ; WX 278 ; N tcommaaccent ; B -62 -218 281 594 ;
-C -1 ; WX 606 ; N logicalnot ; B 51 108 555 399 ;
-C -1 ; WX 500 ; N odieresis ; B -3 -13 471 655 ;
-C -1 ; WX 556 ; N udieresis ; B 15 -9 499 655 ;
-C -1 ; WX 549 ; N notequal ; B 15 -49 540 570 ;
-C -1 ; WX 500 ; N gcommaaccent ; B -52 -203 478 767 ;
-C -1 ; WX 500 ; N eth ; B -3 -13 454 699 ;
-C -1 ; WX 389 ; N zcaron ; B -43 -78 424 690 ;
-C -1 ; WX 556 ; N ncommaaccent ; B -6 -218 493 462 ;
-C -1 ; WX 300 ; N onesuperior ; B 30 274 301 683 ;
-C -1 ; WX 278 ; N imacron ; B 2 -9 294 623 ;
-C -1 ; WX 500 ; N Euro ; B 0 0 0 0 ;
-EndCharMetrics
-StartKernData
-StartKernPairs 2038
-KPX A C -65
-KPX A Cacute -65
-KPX A Ccaron -65
-KPX A Ccedilla -65
-KPX A G -60
-KPX A Gbreve -60
-KPX A Gcommaaccent -60
-KPX A O -50
-KPX A Oacute -50
-KPX A Ocircumflex -50
-KPX A Odieresis -50
-KPX A Ograve -50
-KPX A Ohungarumlaut -50
-KPX A Omacron -50
-KPX A Oslash -50
-KPX A Otilde -50
-KPX A Q -55
-KPX A T -55
-KPX A Tcaron -55
-KPX A Tcommaaccent -55
-KPX A U -50
-KPX A Uacute -50
-KPX A Ucircumflex -50
-KPX A Udieresis -50
-KPX A Ugrave -50
-KPX A Uhungarumlaut -50
-KPX A Umacron -50
-KPX A Uogonek -50
-KPX A Uring -50
-KPX A V -95
-KPX A W -100
-KPX A Y -70
-KPX A Yacute -70
-KPX A Ydieresis -70
-KPX A quoteright -74
-KPX A u -30
-KPX A uacute -30
-KPX A ucircumflex -30
-KPX A udieresis -30
-KPX A ugrave -30
-KPX A uhungarumlaut -30
-KPX A umacron -30
-KPX A uogonek -30
-KPX A uring -30
-KPX A v -74
-KPX A w -74
-KPX A y -74
-KPX A yacute -74
-KPX A ydieresis -74
-KPX Aacute C -65
-KPX Aacute Cacute -65
-KPX Aacute Ccaron -65
-KPX Aacute Ccedilla -65
-KPX Aacute G -60
-KPX Aacute Gbreve -60
-KPX Aacute Gcommaaccent -60
-KPX Aacute O -50
-KPX Aacute Oacute -50
-KPX Aacute Ocircumflex -50
-KPX Aacute Odieresis -50
-KPX Aacute Ograve -50
-KPX Aacute Ohungarumlaut -50
-KPX Aacute Omacron -50
-KPX Aacute Oslash -50
-KPX Aacute Otilde -50
-KPX Aacute Q -55
-KPX Aacute T -55
-KPX Aacute Tcaron -55
-KPX Aacute Tcommaaccent -55
-KPX Aacute U -50
-KPX Aacute Uacute -50
-KPX Aacute Ucircumflex -50
-KPX Aacute Udieresis -50
-KPX Aacute Ugrave -50
-KPX Aacute Uhungarumlaut -50
-KPX Aacute Umacron -50
-KPX Aacute Uogonek -50
-KPX Aacute Uring -50
-KPX Aacute V -95
-KPX Aacute W -100
-KPX Aacute Y -70
-KPX Aacute Yacute -70
-KPX Aacute Ydieresis -70
-KPX Aacute quoteright -74
-KPX Aacute u -30
-KPX Aacute uacute -30
-KPX Aacute ucircumflex -30
-KPX Aacute udieresis -30
-KPX Aacute ugrave -30
-KPX Aacute uhungarumlaut -30
-KPX Aacute umacron -30
-KPX Aacute uogonek -30
-KPX Aacute uring -30
-KPX Aacute v -74
-KPX Aacute w -74
-KPX Aacute y -74
-KPX Aacute yacute -74
-KPX Aacute ydieresis -74
-KPX Abreve C -65
-KPX Abreve Cacute -65
-KPX Abreve Ccaron -65
-KPX Abreve Ccedilla -65
-KPX Abreve G -60
-KPX Abreve Gbreve -60
-KPX Abreve Gcommaaccent -60
-KPX Abreve O -50
-KPX Abreve Oacute -50
-KPX Abreve Ocircumflex -50
-KPX Abreve Odieresis -50
-KPX Abreve Ograve -50
-KPX Abreve Ohungarumlaut -50
-KPX Abreve Omacron -50
-KPX Abreve Oslash -50
-KPX Abreve Otilde -50
-KPX Abreve Q -55
-KPX Abreve T -55
-KPX Abreve Tcaron -55
-KPX Abreve Tcommaaccent -55
-KPX Abreve U -50
-KPX Abreve Uacute -50
-KPX Abreve Ucircumflex -50
-KPX Abreve Udieresis -50
-KPX Abreve Ugrave -50
-KPX Abreve Uhungarumlaut -50
-KPX Abreve Umacron -50
-KPX Abreve Uogonek -50
-KPX Abreve Uring -50
-KPX Abreve V -95
-KPX Abreve W -100
-KPX Abreve Y -70
-KPX Abreve Yacute -70
-KPX Abreve Ydieresis -70
-KPX Abreve quoteright -74
-KPX Abreve u -30
-KPX Abreve uacute -30
-KPX Abreve ucircumflex -30
-KPX Abreve udieresis -30
-KPX Abreve ugrave -30
-KPX Abreve uhungarumlaut -30
-KPX Abreve umacron -30
-KPX Abreve uogonek -30
-KPX Abreve uring -30
-KPX Abreve v -74
-KPX Abreve w -74
-KPX Abreve y -74
-KPX Abreve yacute -74
-KPX Abreve ydieresis -74
-KPX Acircumflex C -65
-KPX Acircumflex Cacute -65
-KPX Acircumflex Ccaron -65
-KPX Acircumflex Ccedilla -65
-KPX Acircumflex G -60
-KPX Acircumflex Gbreve -60
-KPX Acircumflex Gcommaaccent -60
-KPX Acircumflex O -50
-KPX Acircumflex Oacute -50
-KPX Acircumflex Ocircumflex -50
-KPX Acircumflex Odieresis -50
-KPX Acircumflex Ograve -50
-KPX Acircumflex Ohungarumlaut -50
-KPX Acircumflex Omacron -50
-KPX Acircumflex Oslash -50
-KPX Acircumflex Otilde -50
-KPX Acircumflex Q -55
-KPX Acircumflex T -55
-KPX Acircumflex Tcaron -55
-KPX Acircumflex Tcommaaccent -55
-KPX Acircumflex U -50
-KPX Acircumflex Uacute -50
-KPX Acircumflex Ucircumflex -50
-KPX Acircumflex Udieresis -50
-KPX Acircumflex Ugrave -50
-KPX Acircumflex Uhungarumlaut -50
-KPX Acircumflex Umacron -50
-KPX Acircumflex Uogonek -50
-KPX Acircumflex Uring -50
-KPX Acircumflex V -95
-KPX Acircumflex W -100
-KPX Acircumflex Y -70
-KPX Acircumflex Yacute -70
-KPX Acircumflex Ydieresis -70
-KPX Acircumflex quoteright -74
-KPX Acircumflex u -30
-KPX Acircumflex uacute -30
-KPX Acircumflex ucircumflex -30
-KPX Acircumflex udieresis -30
-KPX Acircumflex ugrave -30
-KPX Acircumflex uhungarumlaut -30
-KPX Acircumflex umacron -30
-KPX Acircumflex uogonek -30
-KPX Acircumflex uring -30
-KPX Acircumflex v -74
-KPX Acircumflex w -74
-KPX Acircumflex y -74
-KPX Acircumflex yacute -74
-KPX Acircumflex ydieresis -74
-KPX Adieresis C -65
-KPX Adieresis Cacute -65
-KPX Adieresis Ccaron -65
-KPX Adieresis Ccedilla -65
-KPX Adieresis G -60
-KPX Adieresis Gbreve -60
-KPX Adieresis Gcommaaccent -60
-KPX Adieresis O -50
-KPX Adieresis Oacute -50
-KPX Adieresis Ocircumflex -50
-KPX Adieresis Odieresis -50
-KPX Adieresis Ograve -50
-KPX Adieresis Ohungarumlaut -50
-KPX Adieresis Omacron -50
-KPX Adieresis Oslash -50
-KPX Adieresis Otilde -50
-KPX Adieresis Q -55
-KPX Adieresis T -55
-KPX Adieresis Tcaron -55
-KPX Adieresis Tcommaaccent -55
-KPX Adieresis U -50
-KPX Adieresis Uacute -50
-KPX Adieresis Ucircumflex -50
-KPX Adieresis Udieresis -50
-KPX Adieresis Ugrave -50
-KPX Adieresis Uhungarumlaut -50
-KPX Adieresis Umacron -50
-KPX Adieresis Uogonek -50
-KPX Adieresis Uring -50
-KPX Adieresis V -95
-KPX Adieresis W -100
-KPX Adieresis Y -70
-KPX Adieresis Yacute -70
-KPX Adieresis Ydieresis -70
-KPX Adieresis quoteright -74
-KPX Adieresis u -30
-KPX Adieresis uacute -30
-KPX Adieresis ucircumflex -30
-KPX Adieresis udieresis -30
-KPX Adieresis ugrave -30
-KPX Adieresis uhungarumlaut -30
-KPX Adieresis umacron -30
-KPX Adieresis uogonek -30
-KPX Adieresis uring -30
-KPX Adieresis v -74
-KPX Adieresis w -74
-KPX Adieresis y -74
-KPX Adieresis yacute -74
-KPX Adieresis ydieresis -74
-KPX Agrave C -65
-KPX Agrave Cacute -65
-KPX Agrave Ccaron -65
-KPX Agrave Ccedilla -65
-KPX Agrave G -60
-KPX Agrave Gbreve -60
-KPX Agrave Gcommaaccent -60
-KPX Agrave O -50
-KPX Agrave Oacute -50
-KPX Agrave Ocircumflex -50
-KPX Agrave Odieresis -50
-KPX Agrave Ograve -50
-KPX Agrave Ohungarumlaut -50
-KPX Agrave Omacron -50
-KPX Agrave Oslash -50
-KPX Agrave Otilde -50
-KPX Agrave Q -55
-KPX Agrave T -55
-KPX Agrave Tcaron -55
-KPX Agrave Tcommaaccent -55
-KPX Agrave U -50
-KPX Agrave Uacute -50
-KPX Agrave Ucircumflex -50
-KPX Agrave Udieresis -50
-KPX Agrave Ugrave -50
-KPX Agrave Uhungarumlaut -50
-KPX Agrave Umacron -50
-KPX Agrave Uogonek -50
-KPX Agrave Uring -50
-KPX Agrave V -95
-KPX Agrave W -100
-KPX Agrave Y -70
-KPX Agrave Yacute -70
-KPX Agrave Ydieresis -70
-KPX Agrave quoteright -74
-KPX Agrave u -30
-KPX Agrave uacute -30
-KPX Agrave ucircumflex -30
-KPX Agrave udieresis -30
-KPX Agrave ugrave -30
-KPX Agrave uhungarumlaut -30
-KPX Agrave umacron -30
-KPX Agrave uogonek -30
-KPX Agrave uring -30
-KPX Agrave v -74
-KPX Agrave w -74
-KPX Agrave y -74
-KPX Agrave yacute -74
-KPX Agrave ydieresis -74
-KPX Amacron C -65
-KPX Amacron Cacute -65
-KPX Amacron Ccaron -65
-KPX Amacron Ccedilla -65
-KPX Amacron G -60
-KPX Amacron Gbreve -60
-KPX Amacron Gcommaaccent -60
-KPX Amacron O -50
-KPX Amacron Oacute -50
-KPX Amacron Ocircumflex -50
-KPX Amacron Odieresis -50
-KPX Amacron Ograve -50
-KPX Amacron Ohungarumlaut -50
-KPX Amacron Omacron -50
-KPX Amacron Oslash -50
-KPX Amacron Otilde -50
-KPX Amacron Q -55
-KPX Amacron T -55
-KPX Amacron Tcaron -55
-KPX Amacron Tcommaaccent -55
-KPX Amacron U -50
-KPX Amacron Uacute -50
-KPX Amacron Ucircumflex -50
-KPX Amacron Udieresis -50
-KPX Amacron Ugrave -50
-KPX Amacron Uhungarumlaut -50
-KPX Amacron Umacron -50
-KPX Amacron Uogonek -50
-KPX Amacron Uring -50
-KPX Amacron V -95
-KPX Amacron W -100
-KPX Amacron Y -70
-KPX Amacron Yacute -70
-KPX Amacron Ydieresis -70
-KPX Amacron quoteright -74
-KPX Amacron u -30
-KPX Amacron uacute -30
-KPX Amacron ucircumflex -30
-KPX Amacron udieresis -30
-KPX Amacron ugrave -30
-KPX Amacron uhungarumlaut -30
-KPX Amacron umacron -30
-KPX Amacron uogonek -30
-KPX Amacron uring -30
-KPX Amacron v -74
-KPX Amacron w -74
-KPX Amacron y -74
-KPX Amacron yacute -74
-KPX Amacron ydieresis -74
-KPX Aogonek C -65
-KPX Aogonek Cacute -65
-KPX Aogonek Ccaron -65
-KPX Aogonek Ccedilla -65
-KPX Aogonek G -60
-KPX Aogonek Gbreve -60
-KPX Aogonek Gcommaaccent -60
-KPX Aogonek O -50
-KPX Aogonek Oacute -50
-KPX Aogonek Ocircumflex -50
-KPX Aogonek Odieresis -50
-KPX Aogonek Ograve -50
-KPX Aogonek Ohungarumlaut -50
-KPX Aogonek Omacron -50
-KPX Aogonek Oslash -50
-KPX Aogonek Otilde -50
-KPX Aogonek Q -55
-KPX Aogonek T -55
-KPX Aogonek Tcaron -55
-KPX Aogonek Tcommaaccent -55
-KPX Aogonek U -50
-KPX Aogonek Uacute -50
-KPX Aogonek Ucircumflex -50
-KPX Aogonek Udieresis -50
-KPX Aogonek Ugrave -50
-KPX Aogonek Uhungarumlaut -50
-KPX Aogonek Umacron -50
-KPX Aogonek Uogonek -50
-KPX Aogonek Uring -50
-KPX Aogonek V -95
-KPX Aogonek W -100
-KPX Aogonek Y -70
-KPX Aogonek Yacute -70
-KPX Aogonek Ydieresis -70
-KPX Aogonek quoteright -74
-KPX Aogonek u -30
-KPX Aogonek uacute -30
-KPX Aogonek ucircumflex -30
-KPX Aogonek udieresis -30
-KPX Aogonek ugrave -30
-KPX Aogonek uhungarumlaut -30
-KPX Aogonek umacron -30
-KPX Aogonek uogonek -30
-KPX Aogonek uring -30
-KPX Aogonek v -74
-KPX Aogonek w -74
-KPX Aogonek y -34
-KPX Aogonek yacute -34
-KPX Aogonek ydieresis -34
-KPX Aring C -65
-KPX Aring Cacute -65
-KPX Aring Ccaron -65
-KPX Aring Ccedilla -65
-KPX Aring G -60
-KPX Aring Gbreve -60
-KPX Aring Gcommaaccent -60
-KPX Aring O -50
-KPX Aring Oacute -50
-KPX Aring Ocircumflex -50
-KPX Aring Odieresis -50
-KPX Aring Ograve -50
-KPX Aring Ohungarumlaut -50
-KPX Aring Omacron -50
-KPX Aring Oslash -50
-KPX Aring Otilde -50
-KPX Aring Q -55
-KPX Aring T -55
-KPX Aring Tcaron -55
-KPX Aring Tcommaaccent -55
-KPX Aring U -50
-KPX Aring Uacute -50
-KPX Aring Ucircumflex -50
-KPX Aring Udieresis -50
-KPX Aring Ugrave -50
-KPX Aring Uhungarumlaut -50
-KPX Aring Umacron -50
-KPX Aring Uogonek -50
-KPX Aring Uring -50
-KPX Aring V -95
-KPX Aring W -100
-KPX Aring Y -70
-KPX Aring Yacute -70
-KPX Aring Ydieresis -70
-KPX Aring quoteright -74
-KPX Aring u -30
-KPX Aring uacute -30
-KPX Aring ucircumflex -30
-KPX Aring udieresis -30
-KPX Aring ugrave -30
-KPX Aring uhungarumlaut -30
-KPX Aring umacron -30
-KPX Aring uogonek -30
-KPX Aring uring -30
-KPX Aring v -74
-KPX Aring w -74
-KPX Aring y -74
-KPX Aring yacute -74
-KPX Aring ydieresis -74
-KPX Atilde C -65
-KPX Atilde Cacute -65
-KPX Atilde Ccaron -65
-KPX Atilde Ccedilla -65
-KPX Atilde G -60
-KPX Atilde Gbreve -60
-KPX Atilde Gcommaaccent -60
-KPX Atilde O -50
-KPX Atilde Oacute -50
-KPX Atilde Ocircumflex -50
-KPX Atilde Odieresis -50
-KPX Atilde Ograve -50
-KPX Atilde Ohungarumlaut -50
-KPX Atilde Omacron -50
-KPX Atilde Oslash -50
-KPX Atilde Otilde -50
-KPX Atilde Q -55
-KPX Atilde T -55
-KPX Atilde Tcaron -55
-KPX Atilde Tcommaaccent -55
-KPX Atilde U -50
-KPX Atilde Uacute -50
-KPX Atilde Ucircumflex -50
-KPX Atilde Udieresis -50
-KPX Atilde Ugrave -50
-KPX Atilde Uhungarumlaut -50
-KPX Atilde Umacron -50
-KPX Atilde Uogonek -50
-KPX Atilde Uring -50
-KPX Atilde V -95
-KPX Atilde W -100
-KPX Atilde Y -70
-KPX Atilde Yacute -70
-KPX Atilde Ydieresis -70
-KPX Atilde quoteright -74
-KPX Atilde u -30
-KPX Atilde uacute -30
-KPX Atilde ucircumflex -30
-KPX Atilde udieresis -30
-KPX Atilde ugrave -30
-KPX Atilde uhungarumlaut -30
-KPX Atilde umacron -30
-KPX Atilde uogonek -30
-KPX Atilde uring -30
-KPX Atilde v -74
-KPX Atilde w -74
-KPX Atilde y -74
-KPX Atilde yacute -74
-KPX Atilde ydieresis -74
-KPX B A -25
-KPX B Aacute -25
-KPX B Abreve -25
-KPX B Acircumflex -25
-KPX B Adieresis -25
-KPX B Agrave -25
-KPX B Amacron -25
-KPX B Aogonek -25
-KPX B Aring -25
-KPX B Atilde -25
-KPX B U -10
-KPX B Uacute -10
-KPX B Ucircumflex -10
-KPX B Udieresis -10
-KPX B Ugrave -10
-KPX B Uhungarumlaut -10
-KPX B Umacron -10
-KPX B Uogonek -10
-KPX B Uring -10
-KPX D A -25
-KPX D Aacute -25
-KPX D Abreve -25
-KPX D Acircumflex -25
-KPX D Adieresis -25
-KPX D Agrave -25
-KPX D Amacron -25
-KPX D Aogonek -25
-KPX D Aring -25
-KPX D Atilde -25
-KPX D V -50
-KPX D W -40
-KPX D Y -50
-KPX D Yacute -50
-KPX D Ydieresis -50
-KPX Dcaron A -25
-KPX Dcaron Aacute -25
-KPX Dcaron Abreve -25
-KPX Dcaron Acircumflex -25
-KPX Dcaron Adieresis -25
-KPX Dcaron Agrave -25
-KPX Dcaron Amacron -25
-KPX Dcaron Aogonek -25
-KPX Dcaron Aring -25
-KPX Dcaron Atilde -25
-KPX Dcaron V -50
-KPX Dcaron W -40
-KPX Dcaron Y -50
-KPX Dcaron Yacute -50
-KPX Dcaron Ydieresis -50
-KPX Dcroat A -25
-KPX Dcroat Aacute -25
-KPX Dcroat Abreve -25
-KPX Dcroat Acircumflex -25
-KPX Dcroat Adieresis -25
-KPX Dcroat Agrave -25
-KPX Dcroat Amacron -25
-KPX Dcroat Aogonek -25
-KPX Dcroat Aring -25
-KPX Dcroat Atilde -25
-KPX Dcroat V -50
-KPX Dcroat W -40
-KPX Dcroat Y -50
-KPX Dcroat Yacute -50
-KPX Dcroat Ydieresis -50
-KPX F A -100
-KPX F Aacute -100
-KPX F Abreve -100
-KPX F Acircumflex -100
-KPX F Adieresis -100
-KPX F Agrave -100
-KPX F Amacron -100
-KPX F Aogonek -100
-KPX F Aring -100
-KPX F Atilde -100
-KPX F a -95
-KPX F aacute -95
-KPX F abreve -95
-KPX F acircumflex -95
-KPX F adieresis -95
-KPX F agrave -95
-KPX F amacron -95
-KPX F aogonek -95
-KPX F aring -95
-KPX F atilde -95
-KPX F comma -129
-KPX F e -100
-KPX F eacute -100
-KPX F ecaron -100
-KPX F ecircumflex -100
-KPX F edieresis -100
-KPX F edotaccent -100
-KPX F egrave -100
-KPX F emacron -100
-KPX F eogonek -100
-KPX F i -40
-KPX F iacute -40
-KPX F icircumflex -40
-KPX F idieresis -40
-KPX F igrave -40
-KPX F imacron -40
-KPX F iogonek -40
-KPX F o -70
-KPX F oacute -70
-KPX F ocircumflex -70
-KPX F odieresis -70
-KPX F ograve -70
-KPX F ohungarumlaut -70
-KPX F omacron -70
-KPX F oslash -70
-KPX F otilde -70
-KPX F period -129
-KPX F r -50
-KPX F racute -50
-KPX F rcaron -50
-KPX F rcommaaccent -50
-KPX J A -25
-KPX J Aacute -25
-KPX J Abreve -25
-KPX J Acircumflex -25
-KPX J Adieresis -25
-KPX J Agrave -25
-KPX J Amacron -25
-KPX J Aogonek -25
-KPX J Aring -25
-KPX J Atilde -25
-KPX J a -40
-KPX J aacute -40
-KPX J abreve -40
-KPX J acircumflex -40
-KPX J adieresis -40
-KPX J agrave -40
-KPX J amacron -40
-KPX J aogonek -40
-KPX J aring -40
-KPX J atilde -40
-KPX J comma -10
-KPX J e -40
-KPX J eacute -40
-KPX J ecaron -40
-KPX J ecircumflex -40
-KPX J edieresis -40
-KPX J edotaccent -40
-KPX J egrave -40
-KPX J emacron -40
-KPX J eogonek -40
-KPX J o -40
-KPX J oacute -40
-KPX J ocircumflex -40
-KPX J odieresis -40
-KPX J ograve -40
-KPX J ohungarumlaut -40
-KPX J omacron -40
-KPX J oslash -40
-KPX J otilde -40
-KPX J period -10
-KPX J u -40
-KPX J uacute -40
-KPX J ucircumflex -40
-KPX J udieresis -40
-KPX J ugrave -40
-KPX J uhungarumlaut -40
-KPX J umacron -40
-KPX J uogonek -40
-KPX J uring -40
-KPX K O -30
-KPX K Oacute -30
-KPX K Ocircumflex -30
-KPX K Odieresis -30
-KPX K Ograve -30
-KPX K Ohungarumlaut -30
-KPX K Omacron -30
-KPX K Oslash -30
-KPX K Otilde -30
-KPX K e -25
-KPX K eacute -25
-KPX K ecaron -25
-KPX K ecircumflex -25
-KPX K edieresis -25
-KPX K edotaccent -25
-KPX K egrave -25
-KPX K emacron -25
-KPX K eogonek -25
-KPX K o -25
-KPX K oacute -25
-KPX K ocircumflex -25
-KPX K odieresis -25
-KPX K ograve -25
-KPX K ohungarumlaut -25
-KPX K omacron -25
-KPX K oslash -25
-KPX K otilde -25
-KPX K u -20
-KPX K uacute -20
-KPX K ucircumflex -20
-KPX K udieresis -20
-KPX K ugrave -20
-KPX K uhungarumlaut -20
-KPX K umacron -20
-KPX K uogonek -20
-KPX K uring -20
-KPX K y -20
-KPX K yacute -20
-KPX K ydieresis -20
-KPX Kcommaaccent O -30
-KPX Kcommaaccent Oacute -30
-KPX Kcommaaccent Ocircumflex -30
-KPX Kcommaaccent Odieresis -30
-KPX Kcommaaccent Ograve -30
-KPX Kcommaaccent Ohungarumlaut -30
-KPX Kcommaaccent Omacron -30
-KPX Kcommaaccent Oslash -30
-KPX Kcommaaccent Otilde -30
-KPX Kcommaaccent e -25
-KPX Kcommaaccent eacute -25
-KPX Kcommaaccent ecaron -25
-KPX Kcommaaccent ecircumflex -25
-KPX Kcommaaccent edieresis -25
-KPX Kcommaaccent edotaccent -25
-KPX Kcommaaccent egrave -25
-KPX Kcommaaccent emacron -25
-KPX Kcommaaccent eogonek -25
-KPX Kcommaaccent o -25
-KPX Kcommaaccent oacute -25
-KPX Kcommaaccent ocircumflex -25
-KPX Kcommaaccent odieresis -25
-KPX Kcommaaccent ograve -25
-KPX Kcommaaccent ohungarumlaut -25
-KPX Kcommaaccent omacron -25
-KPX Kcommaaccent oslash -25
-KPX Kcommaaccent otilde -25
-KPX Kcommaaccent u -20
-KPX Kcommaaccent uacute -20
-KPX Kcommaaccent ucircumflex -20
-KPX Kcommaaccent udieresis -20
-KPX Kcommaaccent ugrave -20
-KPX Kcommaaccent uhungarumlaut -20
-KPX Kcommaaccent umacron -20
-KPX Kcommaaccent uogonek -20
-KPX Kcommaaccent uring -20
-KPX Kcommaaccent y -20
-KPX Kcommaaccent yacute -20
-KPX Kcommaaccent ydieresis -20
-KPX L T -18
-KPX L Tcaron -18
-KPX L Tcommaaccent -18
-KPX L V -37
-KPX L W -37
-KPX L Y -37
-KPX L Yacute -37
-KPX L Ydieresis -37
-KPX L quoteright -55
-KPX L y -37
-KPX L yacute -37
-KPX L ydieresis -37
-KPX Lacute T -18
-KPX Lacute Tcaron -18
-KPX Lacute Tcommaaccent -18
-KPX Lacute V -37
-KPX Lacute W -37
-KPX Lacute Y -37
-KPX Lacute Yacute -37
-KPX Lacute Ydieresis -37
-KPX Lacute quoteright -55
-KPX Lacute y -37
-KPX Lacute yacute -37
-KPX Lacute ydieresis -37
-KPX Lcommaaccent T -18
-KPX Lcommaaccent Tcaron -18
-KPX Lcommaaccent Tcommaaccent -18
-KPX Lcommaaccent V -37
-KPX Lcommaaccent W -37
-KPX Lcommaaccent Y -37
-KPX Lcommaaccent Yacute -37
-KPX Lcommaaccent Ydieresis -37
-KPX Lcommaaccent quoteright -55
-KPX Lcommaaccent y -37
-KPX Lcommaaccent yacute -37
-KPX Lcommaaccent ydieresis -37
-KPX Lslash T -18
-KPX Lslash Tcaron -18
-KPX Lslash Tcommaaccent -18
-KPX Lslash V -37
-KPX Lslash W -37
-KPX Lslash Y -37
-KPX Lslash Yacute -37
-KPX Lslash Ydieresis -37
-KPX Lslash quoteright -55
-KPX Lslash y -37
-KPX Lslash yacute -37
-KPX Lslash ydieresis -37
-KPX N A -30
-KPX N Aacute -30
-KPX N Abreve -30
-KPX N Acircumflex -30
-KPX N Adieresis -30
-KPX N Agrave -30
-KPX N Amacron -30
-KPX N Aogonek -30
-KPX N Aring -30
-KPX N Atilde -30
-KPX Nacute A -30
-KPX Nacute Aacute -30
-KPX Nacute Abreve -30
-KPX Nacute Acircumflex -30
-KPX Nacute Adieresis -30
-KPX Nacute Agrave -30
-KPX Nacute Amacron -30
-KPX Nacute Aogonek -30
-KPX Nacute Aring -30
-KPX Nacute Atilde -30
-KPX Ncaron A -30
-KPX Ncaron Aacute -30
-KPX Ncaron Abreve -30
-KPX Ncaron Acircumflex -30
-KPX Ncaron Adieresis -30
-KPX Ncaron Agrave -30
-KPX Ncaron Amacron -30
-KPX Ncaron Aogonek -30
-KPX Ncaron Aring -30
-KPX Ncaron Atilde -30
-KPX Ncommaaccent A -30
-KPX Ncommaaccent Aacute -30
-KPX Ncommaaccent Abreve -30
-KPX Ncommaaccent Acircumflex -30
-KPX Ncommaaccent Adieresis -30
-KPX Ncommaaccent Agrave -30
-KPX Ncommaaccent Amacron -30
-KPX Ncommaaccent Aogonek -30
-KPX Ncommaaccent Aring -30
-KPX Ncommaaccent Atilde -30
-KPX Ntilde A -30
-KPX Ntilde Aacute -30
-KPX Ntilde Abreve -30
-KPX Ntilde Acircumflex -30
-KPX Ntilde Adieresis -30
-KPX Ntilde Agrave -30
-KPX Ntilde Amacron -30
-KPX Ntilde Aogonek -30
-KPX Ntilde Aring -30
-KPX Ntilde Atilde -30
-KPX O A -40
-KPX O Aacute -40
-KPX O Abreve -40
-KPX O Acircumflex -40
-KPX O Adieresis -40
-KPX O Agrave -40
-KPX O Amacron -40
-KPX O Aogonek -40
-KPX O Aring -40
-KPX O Atilde -40
-KPX O T -40
-KPX O Tcaron -40
-KPX O Tcommaaccent -40
-KPX O V -50
-KPX O W -50
-KPX O X -40
-KPX O Y -50
-KPX O Yacute -50
-KPX O Ydieresis -50
-KPX Oacute A -40
-KPX Oacute Aacute -40
-KPX Oacute Abreve -40
-KPX Oacute Acircumflex -40
-KPX Oacute Adieresis -40
-KPX Oacute Agrave -40
-KPX Oacute Amacron -40
-KPX Oacute Aogonek -40
-KPX Oacute Aring -40
-KPX Oacute Atilde -40
-KPX Oacute T -40
-KPX Oacute Tcaron -40
-KPX Oacute Tcommaaccent -40
-KPX Oacute V -50
-KPX Oacute W -50
-KPX Oacute X -40
-KPX Oacute Y -50
-KPX Oacute Yacute -50
-KPX Oacute Ydieresis -50
-KPX Ocircumflex A -40
-KPX Ocircumflex Aacute -40
-KPX Ocircumflex Abreve -40
-KPX Ocircumflex Acircumflex -40
-KPX Ocircumflex Adieresis -40
-KPX Ocircumflex Agrave -40
-KPX Ocircumflex Amacron -40
-KPX Ocircumflex Aogonek -40
-KPX Ocircumflex Aring -40
-KPX Ocircumflex Atilde -40
-KPX Ocircumflex T -40
-KPX Ocircumflex Tcaron -40
-KPX Ocircumflex Tcommaaccent -40
-KPX Ocircumflex V -50
-KPX Ocircumflex W -50
-KPX Ocircumflex X -40
-KPX Ocircumflex Y -50
-KPX Ocircumflex Yacute -50
-KPX Ocircumflex Ydieresis -50
-KPX Odieresis A -40
-KPX Odieresis Aacute -40
-KPX Odieresis Abreve -40
-KPX Odieresis Acircumflex -40
-KPX Odieresis Adieresis -40
-KPX Odieresis Agrave -40
-KPX Odieresis Amacron -40
-KPX Odieresis Aogonek -40
-KPX Odieresis Aring -40
-KPX Odieresis Atilde -40
-KPX Odieresis T -40
-KPX Odieresis Tcaron -40
-KPX Odieresis Tcommaaccent -40
-KPX Odieresis V -50
-KPX Odieresis W -50
-KPX Odieresis X -40
-KPX Odieresis Y -50
-KPX Odieresis Yacute -50
-KPX Odieresis Ydieresis -50
-KPX Ograve A -40
-KPX Ograve Aacute -40
-KPX Ograve Abreve -40
-KPX Ograve Acircumflex -40
-KPX Ograve Adieresis -40
-KPX Ograve Agrave -40
-KPX Ograve Amacron -40
-KPX Ograve Aogonek -40
-KPX Ograve Aring -40
-KPX Ograve Atilde -40
-KPX Ograve T -40
-KPX Ograve Tcaron -40
-KPX Ograve Tcommaaccent -40
-KPX Ograve V -50
-KPX Ograve W -50
-KPX Ograve X -40
-KPX Ograve Y -50
-KPX Ograve Yacute -50
-KPX Ograve Ydieresis -50
-KPX Ohungarumlaut A -40
-KPX Ohungarumlaut Aacute -40
-KPX Ohungarumlaut Abreve -40
-KPX Ohungarumlaut Acircumflex -40
-KPX Ohungarumlaut Adieresis -40
-KPX Ohungarumlaut Agrave -40
-KPX Ohungarumlaut Amacron -40
-KPX Ohungarumlaut Aogonek -40
-KPX Ohungarumlaut Aring -40
-KPX Ohungarumlaut Atilde -40
-KPX Ohungarumlaut T -40
-KPX Ohungarumlaut Tcaron -40
-KPX Ohungarumlaut Tcommaaccent -40
-KPX Ohungarumlaut V -50
-KPX Ohungarumlaut W -50
-KPX Ohungarumlaut X -40
-KPX Ohungarumlaut Y -50
-KPX Ohungarumlaut Yacute -50
-KPX Ohungarumlaut Ydieresis -50
-KPX Omacron A -40
-KPX Omacron Aacute -40
-KPX Omacron Abreve -40
-KPX Omacron Acircumflex -40
-KPX Omacron Adieresis -40
-KPX Omacron Agrave -40
-KPX Omacron Amacron -40
-KPX Omacron Aogonek -40
-KPX Omacron Aring -40
-KPX Omacron Atilde -40
-KPX Omacron T -40
-KPX Omacron Tcaron -40
-KPX Omacron Tcommaaccent -40
-KPX Omacron V -50
-KPX Omacron W -50
-KPX Omacron X -40
-KPX Omacron Y -50
-KPX Omacron Yacute -50
-KPX Omacron Ydieresis -50
-KPX Oslash A -40
-KPX Oslash Aacute -40
-KPX Oslash Abreve -40
-KPX Oslash Acircumflex -40
-KPX Oslash Adieresis -40
-KPX Oslash Agrave -40
-KPX Oslash Amacron -40
-KPX Oslash Aogonek -40
-KPX Oslash Aring -40
-KPX Oslash Atilde -40
-KPX Oslash T -40
-KPX Oslash Tcaron -40
-KPX Oslash Tcommaaccent -40
-KPX Oslash V -50
-KPX Oslash W -50
-KPX Oslash X -40
-KPX Oslash Y -50
-KPX Oslash Yacute -50
-KPX Oslash Ydieresis -50
-KPX Otilde A -40
-KPX Otilde Aacute -40
-KPX Otilde Abreve -40
-KPX Otilde Acircumflex -40
-KPX Otilde Adieresis -40
-KPX Otilde Agrave -40
-KPX Otilde Amacron -40
-KPX Otilde Aogonek -40
-KPX Otilde Aring -40
-KPX Otilde Atilde -40
-KPX Otilde T -40
-KPX Otilde Tcaron -40
-KPX Otilde Tcommaaccent -40
-KPX Otilde V -50
-KPX Otilde W -50
-KPX Otilde X -40
-KPX Otilde Y -50
-KPX Otilde Yacute -50
-KPX Otilde Ydieresis -50
-KPX P A -85
-KPX P Aacute -85
-KPX P Abreve -85
-KPX P Acircumflex -85
-KPX P Adieresis -85
-KPX P Agrave -85
-KPX P Amacron -85
-KPX P Aogonek -85
-KPX P Aring -85
-KPX P Atilde -85
-KPX P a -40
-KPX P aacute -40
-KPX P abreve -40
-KPX P acircumflex -40
-KPX P adieresis -40
-KPX P agrave -40
-KPX P amacron -40
-KPX P aogonek -40
-KPX P aring -40
-KPX P atilde -40
-KPX P comma -129
-KPX P e -50
-KPX P eacute -50
-KPX P ecaron -50
-KPX P ecircumflex -50
-KPX P edieresis -50
-KPX P edotaccent -50
-KPX P egrave -50
-KPX P emacron -50
-KPX P eogonek -50
-KPX P o -55
-KPX P oacute -55
-KPX P ocircumflex -55
-KPX P odieresis -55
-KPX P ograve -55
-KPX P ohungarumlaut -55
-KPX P omacron -55
-KPX P oslash -55
-KPX P otilde -55
-KPX P period -129
-KPX Q U -10
-KPX Q Uacute -10
-KPX Q Ucircumflex -10
-KPX Q Udieresis -10
-KPX Q Ugrave -10
-KPX Q Uhungarumlaut -10
-KPX Q Umacron -10
-KPX Q Uogonek -10
-KPX Q Uring -10
-KPX R O -40
-KPX R Oacute -40
-KPX R Ocircumflex -40
-KPX R Odieresis -40
-KPX R Ograve -40
-KPX R Ohungarumlaut -40
-KPX R Omacron -40
-KPX R Oslash -40
-KPX R Otilde -40
-KPX R T -30
-KPX R Tcaron -30
-KPX R Tcommaaccent -30
-KPX R U -40
-KPX R Uacute -40
-KPX R Ucircumflex -40
-KPX R Udieresis -40
-KPX R Ugrave -40
-KPX R Uhungarumlaut -40
-KPX R Umacron -40
-KPX R Uogonek -40
-KPX R Uring -40
-KPX R V -18
-KPX R W -18
-KPX R Y -18
-KPX R Yacute -18
-KPX R Ydieresis -18
-KPX Racute O -40
-KPX Racute Oacute -40
-KPX Racute Ocircumflex -40
-KPX Racute Odieresis -40
-KPX Racute Ograve -40
-KPX Racute Ohungarumlaut -40
-KPX Racute Omacron -40
-KPX Racute Oslash -40
-KPX Racute Otilde -40
-KPX Racute T -30
-KPX Racute Tcaron -30
-KPX Racute Tcommaaccent -30
-KPX Racute U -40
-KPX Racute Uacute -40
-KPX Racute Ucircumflex -40
-KPX Racute Udieresis -40
-KPX Racute Ugrave -40
-KPX Racute Uhungarumlaut -40
-KPX Racute Umacron -40
-KPX Racute Uogonek -40
-KPX Racute Uring -40
-KPX Racute V -18
-KPX Racute W -18
-KPX Racute Y -18
-KPX Racute Yacute -18
-KPX Racute Ydieresis -18
-KPX Rcaron O -40
-KPX Rcaron Oacute -40
-KPX Rcaron Ocircumflex -40
-KPX Rcaron Odieresis -40
-KPX Rcaron Ograve -40
-KPX Rcaron Ohungarumlaut -40
-KPX Rcaron Omacron -40
-KPX Rcaron Oslash -40
-KPX Rcaron Otilde -40
-KPX Rcaron T -30
-KPX Rcaron Tcaron -30
-KPX Rcaron Tcommaaccent -30
-KPX Rcaron U -40
-KPX Rcaron Uacute -40
-KPX Rcaron Ucircumflex -40
-KPX Rcaron Udieresis -40
-KPX Rcaron Ugrave -40
-KPX Rcaron Uhungarumlaut -40
-KPX Rcaron Umacron -40
-KPX Rcaron Uogonek -40
-KPX Rcaron Uring -40
-KPX Rcaron V -18
-KPX Rcaron W -18
-KPX Rcaron Y -18
-KPX Rcaron Yacute -18
-KPX Rcaron Ydieresis -18
-KPX Rcommaaccent O -40
-KPX Rcommaaccent Oacute -40
-KPX Rcommaaccent Ocircumflex -40
-KPX Rcommaaccent Odieresis -40
-KPX Rcommaaccent Ograve -40
-KPX Rcommaaccent Ohungarumlaut -40
-KPX Rcommaaccent Omacron -40
-KPX Rcommaaccent Oslash -40
-KPX Rcommaaccent Otilde -40
-KPX Rcommaaccent T -30
-KPX Rcommaaccent Tcaron -30
-KPX Rcommaaccent Tcommaaccent -30
-KPX Rcommaaccent U -40
-KPX Rcommaaccent Uacute -40
-KPX Rcommaaccent Ucircumflex -40
-KPX Rcommaaccent Udieresis -40
-KPX Rcommaaccent Ugrave -40
-KPX Rcommaaccent Uhungarumlaut -40
-KPX Rcommaaccent Umacron -40
-KPX Rcommaaccent Uogonek -40
-KPX Rcommaaccent Uring -40
-KPX Rcommaaccent V -18
-KPX Rcommaaccent W -18
-KPX Rcommaaccent Y -18
-KPX Rcommaaccent Yacute -18
-KPX Rcommaaccent Ydieresis -18
-KPX T A -55
-KPX T Aacute -55
-KPX T Abreve -55
-KPX T Acircumflex -55
-KPX T Adieresis -55
-KPX T Agrave -55
-KPX T Amacron -55
-KPX T Aogonek -55
-KPX T Aring -55
-KPX T Atilde -55
-KPX T O -18
-KPX T Oacute -18
-KPX T Ocircumflex -18
-KPX T Odieresis -18
-KPX T Ograve -18
-KPX T Ohungarumlaut -18
-KPX T Omacron -18
-KPX T Oslash -18
-KPX T Otilde -18
-KPX T a -92
-KPX T aacute -92
-KPX T abreve -92
-KPX T acircumflex -92
-KPX T adieresis -92
-KPX T agrave -92
-KPX T amacron -92
-KPX T aogonek -92
-KPX T aring -92
-KPX T atilde -92
-KPX T colon -74
-KPX T comma -92
-KPX T e -92
-KPX T eacute -92
-KPX T ecaron -92
-KPX T ecircumflex -92
-KPX T edieresis -52
-KPX T edotaccent -92
-KPX T egrave -52
-KPX T emacron -52
-KPX T eogonek -92
-KPX T hyphen -92
-KPX T i -37
-KPX T iacute -37
-KPX T iogonek -37
-KPX T o -95
-KPX T oacute -95
-KPX T ocircumflex -95
-KPX T odieresis -95
-KPX T ograve -95
-KPX T ohungarumlaut -95
-KPX T omacron -95
-KPX T oslash -95
-KPX T otilde -95
-KPX T period -92
-KPX T r -37
-KPX T racute -37
-KPX T rcaron -37
-KPX T rcommaaccent -37
-KPX T semicolon -74
-KPX T u -37
-KPX T uacute -37
-KPX T ucircumflex -37
-KPX T udieresis -37
-KPX T ugrave -37
-KPX T uhungarumlaut -37
-KPX T umacron -37
-KPX T uogonek -37
-KPX T uring -37
-KPX T w -37
-KPX T y -37
-KPX T yacute -37
-KPX T ydieresis -37
-KPX Tcaron A -55
-KPX Tcaron Aacute -55
-KPX Tcaron Abreve -55
-KPX Tcaron Acircumflex -55
-KPX Tcaron Adieresis -55
-KPX Tcaron Agrave -55
-KPX Tcaron Amacron -55
-KPX Tcaron Aogonek -55
-KPX Tcaron Aring -55
-KPX Tcaron Atilde -55
-KPX Tcaron O -18
-KPX Tcaron Oacute -18
-KPX Tcaron Ocircumflex -18
-KPX Tcaron Odieresis -18
-KPX Tcaron Ograve -18
-KPX Tcaron Ohungarumlaut -18
-KPX Tcaron Omacron -18
-KPX Tcaron Oslash -18
-KPX Tcaron Otilde -18
-KPX Tcaron a -92
-KPX Tcaron aacute -92
-KPX Tcaron abreve -92
-KPX Tcaron acircumflex -92
-KPX Tcaron adieresis -92
-KPX Tcaron agrave -92
-KPX Tcaron amacron -92
-KPX Tcaron aogonek -92
-KPX Tcaron aring -92
-KPX Tcaron atilde -92
-KPX Tcaron colon -74
-KPX Tcaron comma -92
-KPX Tcaron e -92
-KPX Tcaron eacute -92
-KPX Tcaron ecaron -92
-KPX Tcaron ecircumflex -92
-KPX Tcaron edieresis -52
-KPX Tcaron edotaccent -92
-KPX Tcaron egrave -52
-KPX Tcaron emacron -52
-KPX Tcaron eogonek -92
-KPX Tcaron hyphen -92
-KPX Tcaron i -37
-KPX Tcaron iacute -37
-KPX Tcaron iogonek -37
-KPX Tcaron o -95
-KPX Tcaron oacute -95
-KPX Tcaron ocircumflex -95
-KPX Tcaron odieresis -95
-KPX Tcaron ograve -95
-KPX Tcaron ohungarumlaut -95
-KPX Tcaron omacron -95
-KPX Tcaron oslash -95
-KPX Tcaron otilde -95
-KPX Tcaron period -92
-KPX Tcaron r -37
-KPX Tcaron racute -37
-KPX Tcaron rcaron -37
-KPX Tcaron rcommaaccent -37
-KPX Tcaron semicolon -74
-KPX Tcaron u -37
-KPX Tcaron uacute -37
-KPX Tcaron ucircumflex -37
-KPX Tcaron udieresis -37
-KPX Tcaron ugrave -37
-KPX Tcaron uhungarumlaut -37
-KPX Tcaron umacron -37
-KPX Tcaron uogonek -37
-KPX Tcaron uring -37
-KPX Tcaron w -37
-KPX Tcaron y -37
-KPX Tcaron yacute -37
-KPX Tcaron ydieresis -37
-KPX Tcommaaccent A -55
-KPX Tcommaaccent Aacute -55
-KPX Tcommaaccent Abreve -55
-KPX Tcommaaccent Acircumflex -55
-KPX Tcommaaccent Adieresis -55
-KPX Tcommaaccent Agrave -55
-KPX Tcommaaccent Amacron -55
-KPX Tcommaaccent Aogonek -55
-KPX Tcommaaccent Aring -55
-KPX Tcommaaccent Atilde -55
-KPX Tcommaaccent O -18
-KPX Tcommaaccent Oacute -18
-KPX Tcommaaccent Ocircumflex -18
-KPX Tcommaaccent Odieresis -18
-KPX Tcommaaccent Ograve -18
-KPX Tcommaaccent Ohungarumlaut -18
-KPX Tcommaaccent Omacron -18
-KPX Tcommaaccent Oslash -18
-KPX Tcommaaccent Otilde -18
-KPX Tcommaaccent a -92
-KPX Tcommaaccent aacute -92
-KPX Tcommaaccent abreve -92
-KPX Tcommaaccent acircumflex -92
-KPX Tcommaaccent adieresis -92
-KPX Tcommaaccent agrave -92
-KPX Tcommaaccent amacron -92
-KPX Tcommaaccent aogonek -92
-KPX Tcommaaccent aring -92
-KPX Tcommaaccent atilde -92
-KPX Tcommaaccent colon -74
-KPX Tcommaaccent comma -92
-KPX Tcommaaccent e -92
-KPX Tcommaaccent eacute -92
-KPX Tcommaaccent ecaron -92
-KPX Tcommaaccent ecircumflex -92
-KPX Tcommaaccent edieresis -52
-KPX Tcommaaccent edotaccent -92
-KPX Tcommaaccent egrave -52
-KPX Tcommaaccent emacron -52
-KPX Tcommaaccent eogonek -92
-KPX Tcommaaccent hyphen -92
-KPX Tcommaaccent i -37
-KPX Tcommaaccent iacute -37
-KPX Tcommaaccent iogonek -37
-KPX Tcommaaccent o -95
-KPX Tcommaaccent oacute -95
-KPX Tcommaaccent ocircumflex -95
-KPX Tcommaaccent odieresis -95
-KPX Tcommaaccent ograve -95
-KPX Tcommaaccent ohungarumlaut -95
-KPX Tcommaaccent omacron -95
-KPX Tcommaaccent oslash -95
-KPX Tcommaaccent otilde -95
-KPX Tcommaaccent period -92
-KPX Tcommaaccent r -37
-KPX Tcommaaccent racute -37
-KPX Tcommaaccent rcaron -37
-KPX Tcommaaccent rcommaaccent -37
-KPX Tcommaaccent semicolon -74
-KPX Tcommaaccent u -37
-KPX Tcommaaccent uacute -37
-KPX Tcommaaccent ucircumflex -37
-KPX Tcommaaccent udieresis -37
-KPX Tcommaaccent ugrave -37
-KPX Tcommaaccent uhungarumlaut -37
-KPX Tcommaaccent umacron -37
-KPX Tcommaaccent uogonek -37
-KPX Tcommaaccent uring -37
-KPX Tcommaaccent w -37
-KPX Tcommaaccent y -37
-KPX Tcommaaccent yacute -37
-KPX Tcommaaccent ydieresis -37
-KPX U A -45
-KPX U Aacute -45
-KPX U Abreve -45
-KPX U Acircumflex -45
-KPX U Adieresis -45
-KPX U Agrave -45
-KPX U Amacron -45
-KPX U Aogonek -45
-KPX U Aring -45
-KPX U Atilde -45
-KPX Uacute A -45
-KPX Uacute Aacute -45
-KPX Uacute Abreve -45
-KPX Uacute Acircumflex -45
-KPX Uacute Adieresis -45
-KPX Uacute Agrave -45
-KPX Uacute Amacron -45
-KPX Uacute Aogonek -45
-KPX Uacute Aring -45
-KPX Uacute Atilde -45
-KPX Ucircumflex A -45
-KPX Ucircumflex Aacute -45
-KPX Ucircumflex Abreve -45
-KPX Ucircumflex Acircumflex -45
-KPX Ucircumflex Adieresis -45
-KPX Ucircumflex Agrave -45
-KPX Ucircumflex Amacron -45
-KPX Ucircumflex Aogonek -45
-KPX Ucircumflex Aring -45
-KPX Ucircumflex Atilde -45
-KPX Udieresis A -45
-KPX Udieresis Aacute -45
-KPX Udieresis Abreve -45
-KPX Udieresis Acircumflex -45
-KPX Udieresis Adieresis -45
-KPX Udieresis Agrave -45
-KPX Udieresis Amacron -45
-KPX Udieresis Aogonek -45
-KPX Udieresis Aring -45
-KPX Udieresis Atilde -45
-KPX Ugrave A -45
-KPX Ugrave Aacute -45
-KPX Ugrave Abreve -45
-KPX Ugrave Acircumflex -45
-KPX Ugrave Adieresis -45
-KPX Ugrave Agrave -45
-KPX Ugrave Amacron -45
-KPX Ugrave Aogonek -45
-KPX Ugrave Aring -45
-KPX Ugrave Atilde -45
-KPX Uhungarumlaut A -45
-KPX Uhungarumlaut Aacute -45
-KPX Uhungarumlaut Abreve -45
-KPX Uhungarumlaut Acircumflex -45
-KPX Uhungarumlaut Adieresis -45
-KPX Uhungarumlaut Agrave -45
-KPX Uhungarumlaut Amacron -45
-KPX Uhungarumlaut Aogonek -45
-KPX Uhungarumlaut Aring -45
-KPX Uhungarumlaut Atilde -45
-KPX Umacron A -45
-KPX Umacron Aacute -45
-KPX Umacron Abreve -45
-KPX Umacron Acircumflex -45
-KPX Umacron Adieresis -45
-KPX Umacron Agrave -45
-KPX Umacron Amacron -45
-KPX Umacron Aogonek -45
-KPX Umacron Aring -45
-KPX Umacron Atilde -45
-KPX Uogonek A -45
-KPX Uogonek Aacute -45
-KPX Uogonek Abreve -45
-KPX Uogonek Acircumflex -45
-KPX Uogonek Adieresis -45
-KPX Uogonek Agrave -45
-KPX Uogonek Amacron -45
-KPX Uogonek Aogonek -45
-KPX Uogonek Aring -45
-KPX Uogonek Atilde -45
-KPX Uring A -45
-KPX Uring Aacute -45
-KPX Uring Abreve -45
-KPX Uring Acircumflex -45
-KPX Uring Adieresis -45
-KPX Uring Agrave -45
-KPX Uring Amacron -45
-KPX Uring Aogonek -45
-KPX Uring Aring -45
-KPX Uring Atilde -45
-KPX V A -85
-KPX V Aacute -85
-KPX V Abreve -85
-KPX V Acircumflex -85
-KPX V Adieresis -85
-KPX V Agrave -85
-KPX V Amacron -85
-KPX V Aogonek -85
-KPX V Aring -85
-KPX V Atilde -85
-KPX V G -10
-KPX V Gbreve -10
-KPX V Gcommaaccent -10
-KPX V O -30
-KPX V Oacute -30
-KPX V Ocircumflex -30
-KPX V Odieresis -30
-KPX V Ograve -30
-KPX V Ohungarumlaut -30
-KPX V Omacron -30
-KPX V Oslash -30
-KPX V Otilde -30
-KPX V a -111
-KPX V aacute -111
-KPX V abreve -111
-KPX V acircumflex -111
-KPX V adieresis -111
-KPX V agrave -111
-KPX V amacron -111
-KPX V aogonek -111
-KPX V aring -111
-KPX V atilde -111
-KPX V colon -74
-KPX V comma -129
-KPX V e -111
-KPX V eacute -111
-KPX V ecaron -111
-KPX V ecircumflex -111
-KPX V edieresis -71
-KPX V edotaccent -111
-KPX V egrave -71
-KPX V emacron -71
-KPX V eogonek -111
-KPX V hyphen -70
-KPX V i -55
-KPX V iacute -55
-KPX V iogonek -55
-KPX V o -111
-KPX V oacute -111
-KPX V ocircumflex -111
-KPX V odieresis -111
-KPX V ograve -111
-KPX V ohungarumlaut -111
-KPX V omacron -111
-KPX V oslash -111
-KPX V otilde -111
-KPX V period -129
-KPX V semicolon -74
-KPX V u -55
-KPX V uacute -55
-KPX V ucircumflex -55
-KPX V udieresis -55
-KPX V ugrave -55
-KPX V uhungarumlaut -55
-KPX V umacron -55
-KPX V uogonek -55
-KPX V uring -55
-KPX W A -74
-KPX W Aacute -74
-KPX W Abreve -74
-KPX W Acircumflex -74
-KPX W Adieresis -74
-KPX W Agrave -74
-KPX W Amacron -74
-KPX W Aogonek -74
-KPX W Aring -74
-KPX W Atilde -74
-KPX W O -15
-KPX W Oacute -15
-KPX W Ocircumflex -15
-KPX W Odieresis -15
-KPX W Ograve -15
-KPX W Ohungarumlaut -15
-KPX W Omacron -15
-KPX W Oslash -15
-KPX W Otilde -15
-KPX W a -85
-KPX W aacute -85
-KPX W abreve -85
-KPX W acircumflex -85
-KPX W adieresis -85
-KPX W agrave -85
-KPX W amacron -85
-KPX W aogonek -85
-KPX W aring -85
-KPX W atilde -85
-KPX W colon -55
-KPX W comma -74
-KPX W e -90
-KPX W eacute -90
-KPX W ecaron -90
-KPX W ecircumflex -90
-KPX W edieresis -50
-KPX W edotaccent -90
-KPX W egrave -50
-KPX W emacron -50
-KPX W eogonek -90
-KPX W hyphen -50
-KPX W i -37
-KPX W iacute -37
-KPX W iogonek -37
-KPX W o -80
-KPX W oacute -80
-KPX W ocircumflex -80
-KPX W odieresis -80
-KPX W ograve -80
-KPX W ohungarumlaut -80
-KPX W omacron -80
-KPX W oslash -80
-KPX W otilde -80
-KPX W period -74
-KPX W semicolon -55
-KPX W u -55
-KPX W uacute -55
-KPX W ucircumflex -55
-KPX W udieresis -55
-KPX W ugrave -55
-KPX W uhungarumlaut -55
-KPX W umacron -55
-KPX W uogonek -55
-KPX W uring -55
-KPX W y -55
-KPX W yacute -55
-KPX W ydieresis -55
-KPX Y A -74
-KPX Y Aacute -74
-KPX Y Abreve -74
-KPX Y Acircumflex -74
-KPX Y Adieresis -74
-KPX Y Agrave -74
-KPX Y Amacron -74
-KPX Y Aogonek -74
-KPX Y Aring -74
-KPX Y Atilde -74
-KPX Y O -25
-KPX Y Oacute -25
-KPX Y Ocircumflex -25
-KPX Y Odieresis -25
-KPX Y Ograve -25
-KPX Y Ohungarumlaut -25
-KPX Y Omacron -25
-KPX Y Oslash -25
-KPX Y Otilde -25
-KPX Y a -92
-KPX Y aacute -92
-KPX Y abreve -92
-KPX Y acircumflex -92
-KPX Y adieresis -92
-KPX Y agrave -92
-KPX Y amacron -92
-KPX Y aogonek -92
-KPX Y aring -92
-KPX Y atilde -92
-KPX Y colon -92
-KPX Y comma -92
-KPX Y e -111
-KPX Y eacute -111
-KPX Y ecaron -111
-KPX Y ecircumflex -71
-KPX Y edieresis -71
-KPX Y edotaccent -111
-KPX Y egrave -71
-KPX Y emacron -71
-KPX Y eogonek -111
-KPX Y hyphen -92
-KPX Y i -55
-KPX Y iacute -55
-KPX Y iogonek -55
-KPX Y o -111
-KPX Y oacute -111
-KPX Y ocircumflex -111
-KPX Y odieresis -111
-KPX Y ograve -111
-KPX Y ohungarumlaut -111
-KPX Y omacron -111
-KPX Y oslash -111
-KPX Y otilde -111
-KPX Y period -74
-KPX Y semicolon -92
-KPX Y u -92
-KPX Y uacute -92
-KPX Y ucircumflex -92
-KPX Y udieresis -92
-KPX Y ugrave -92
-KPX Y uhungarumlaut -92
-KPX Y umacron -92
-KPX Y uogonek -92
-KPX Y uring -92
-KPX Yacute A -74
-KPX Yacute Aacute -74
-KPX Yacute Abreve -74
-KPX Yacute Acircumflex -74
-KPX Yacute Adieresis -74
-KPX Yacute Agrave -74
-KPX Yacute Amacron -74
-KPX Yacute Aogonek -74
-KPX Yacute Aring -74
-KPX Yacute Atilde -74
-KPX Yacute O -25
-KPX Yacute Oacute -25
-KPX Yacute Ocircumflex -25
-KPX Yacute Odieresis -25
-KPX Yacute Ograve -25
-KPX Yacute Ohungarumlaut -25
-KPX Yacute Omacron -25
-KPX Yacute Oslash -25
-KPX Yacute Otilde -25
-KPX Yacute a -92
-KPX Yacute aacute -92
-KPX Yacute abreve -92
-KPX Yacute acircumflex -92
-KPX Yacute adieresis -92
-KPX Yacute agrave -92
-KPX Yacute amacron -92
-KPX Yacute aogonek -92
-KPX Yacute aring -92
-KPX Yacute atilde -92
-KPX Yacute colon -92
-KPX Yacute comma -92
-KPX Yacute e -111
-KPX Yacute eacute -111
-KPX Yacute ecaron -111
-KPX Yacute ecircumflex -71
-KPX Yacute edieresis -71
-KPX Yacute edotaccent -111
-KPX Yacute egrave -71
-KPX Yacute emacron -71
-KPX Yacute eogonek -111
-KPX Yacute hyphen -92
-KPX Yacute i -55
-KPX Yacute iacute -55
-KPX Yacute iogonek -55
-KPX Yacute o -111
-KPX Yacute oacute -111
-KPX Yacute ocircumflex -111
-KPX Yacute odieresis -111
-KPX Yacute ograve -111
-KPX Yacute ohungarumlaut -111
-KPX Yacute omacron -111
-KPX Yacute oslash -111
-KPX Yacute otilde -111
-KPX Yacute period -74
-KPX Yacute semicolon -92
-KPX Yacute u -92
-KPX Yacute uacute -92
-KPX Yacute ucircumflex -92
-KPX Yacute udieresis -92
-KPX Yacute ugrave -92
-KPX Yacute uhungarumlaut -92
-KPX Yacute umacron -92
-KPX Yacute uogonek -92
-KPX Yacute uring -92
-KPX Ydieresis A -74
-KPX Ydieresis Aacute -74
-KPX Ydieresis Abreve -74
-KPX Ydieresis Acircumflex -74
-KPX Ydieresis Adieresis -74
-KPX Ydieresis Agrave -74
-KPX Ydieresis Amacron -74
-KPX Ydieresis Aogonek -74
-KPX Ydieresis Aring -74
-KPX Ydieresis Atilde -74
-KPX Ydieresis O -25
-KPX Ydieresis Oacute -25
-KPX Ydieresis Ocircumflex -25
-KPX Ydieresis Odieresis -25
-KPX Ydieresis Ograve -25
-KPX Ydieresis Ohungarumlaut -25
-KPX Ydieresis Omacron -25
-KPX Ydieresis Oslash -25
-KPX Ydieresis Otilde -25
-KPX Ydieresis a -92
-KPX Ydieresis aacute -92
-KPX Ydieresis abreve -92
-KPX Ydieresis acircumflex -92
-KPX Ydieresis adieresis -92
-KPX Ydieresis agrave -92
-KPX Ydieresis amacron -92
-KPX Ydieresis aogonek -92
-KPX Ydieresis aring -92
-KPX Ydieresis atilde -92
-KPX Ydieresis colon -92
-KPX Ydieresis comma -92
-KPX Ydieresis e -111
-KPX Ydieresis eacute -111
-KPX Ydieresis ecaron -111
-KPX Ydieresis ecircumflex -71
-KPX Ydieresis edieresis -71
-KPX Ydieresis edotaccent -111
-KPX Ydieresis egrave -71
-KPX Ydieresis emacron -71
-KPX Ydieresis eogonek -111
-KPX Ydieresis hyphen -92
-KPX Ydieresis i -55
-KPX Ydieresis iacute -55
-KPX Ydieresis iogonek -55
-KPX Ydieresis o -111
-KPX Ydieresis oacute -111
-KPX Ydieresis ocircumflex -111
-KPX Ydieresis odieresis -111
-KPX Ydieresis ograve -111
-KPX Ydieresis ohungarumlaut -111
-KPX Ydieresis omacron -111
-KPX Ydieresis oslash -111
-KPX Ydieresis otilde -111
-KPX Ydieresis period -74
-KPX Ydieresis semicolon -92
-KPX Ydieresis u -92
-KPX Ydieresis uacute -92
-KPX Ydieresis ucircumflex -92
-KPX Ydieresis udieresis -92
-KPX Ydieresis ugrave -92
-KPX Ydieresis uhungarumlaut -92
-KPX Ydieresis umacron -92
-KPX Ydieresis uogonek -92
-KPX Ydieresis uring -92
-KPX b b -10
-KPX b period -40
-KPX b u -20
-KPX b uacute -20
-KPX b ucircumflex -20
-KPX b udieresis -20
-KPX b ugrave -20
-KPX b uhungarumlaut -20
-KPX b umacron -20
-KPX b uogonek -20
-KPX b uring -20
-KPX c h -10
-KPX c k -10
-KPX c kcommaaccent -10
-KPX cacute h -10
-KPX cacute k -10
-KPX cacute kcommaaccent -10
-KPX ccaron h -10
-KPX ccaron k -10
-KPX ccaron kcommaaccent -10
-KPX ccedilla h -10
-KPX ccedilla k -10
-KPX ccedilla kcommaaccent -10
-KPX comma quotedblright -95
-KPX comma quoteright -95
-KPX e b -10
-KPX eacute b -10
-KPX ecaron b -10
-KPX ecircumflex b -10
-KPX edieresis b -10
-KPX edotaccent b -10
-KPX egrave b -10
-KPX emacron b -10
-KPX eogonek b -10
-KPX f comma -10
-KPX f dotlessi -30
-KPX f e -10
-KPX f eacute -10
-KPX f edotaccent -10
-KPX f eogonek -10
-KPX f f -18
-KPX f o -10
-KPX f oacute -10
-KPX f ocircumflex -10
-KPX f ograve -10
-KPX f ohungarumlaut -10
-KPX f oslash -10
-KPX f otilde -10
-KPX f period -10
-KPX f quoteright 55
-KPX k e -30
-KPX k eacute -30
-KPX k ecaron -30
-KPX k ecircumflex -30
-KPX k edieresis -30
-KPX k edotaccent -30
-KPX k egrave -30
-KPX k emacron -30
-KPX k eogonek -30
-KPX k o -10
-KPX k oacute -10
-KPX k ocircumflex -10
-KPX k odieresis -10
-KPX k ograve -10
-KPX k ohungarumlaut -10
-KPX k omacron -10
-KPX k oslash -10
-KPX k otilde -10
-KPX kcommaaccent e -30
-KPX kcommaaccent eacute -30
-KPX kcommaaccent ecaron -30
-KPX kcommaaccent ecircumflex -30
-KPX kcommaaccent edieresis -30
-KPX kcommaaccent edotaccent -30
-KPX kcommaaccent egrave -30
-KPX kcommaaccent emacron -30
-KPX kcommaaccent eogonek -30
-KPX kcommaaccent o -10
-KPX kcommaaccent oacute -10
-KPX kcommaaccent ocircumflex -10
-KPX kcommaaccent odieresis -10
-KPX kcommaaccent ograve -10
-KPX kcommaaccent ohungarumlaut -10
-KPX kcommaaccent omacron -10
-KPX kcommaaccent oslash -10
-KPX kcommaaccent otilde -10
-KPX n v -40
-KPX nacute v -40
-KPX ncaron v -40
-KPX ncommaaccent v -40
-KPX ntilde v -40
-KPX o v -15
-KPX o w -25
-KPX o x -10
-KPX o y -10
-KPX o yacute -10
-KPX o ydieresis -10
-KPX oacute v -15
-KPX oacute w -25
-KPX oacute x -10
-KPX oacute y -10
-KPX oacute yacute -10
-KPX oacute ydieresis -10
-KPX ocircumflex v -15
-KPX ocircumflex w -25
-KPX ocircumflex x -10
-KPX ocircumflex y -10
-KPX ocircumflex yacute -10
-KPX ocircumflex ydieresis -10
-KPX odieresis v -15
-KPX odieresis w -25
-KPX odieresis x -10
-KPX odieresis y -10
-KPX odieresis yacute -10
-KPX odieresis ydieresis -10
-KPX ograve v -15
-KPX ograve w -25
-KPX ograve x -10
-KPX ograve y -10
-KPX ograve yacute -10
-KPX ograve ydieresis -10
-KPX ohungarumlaut v -15
-KPX ohungarumlaut w -25
-KPX ohungarumlaut x -10
-KPX ohungarumlaut y -10
-KPX ohungarumlaut yacute -10
-KPX ohungarumlaut ydieresis -10
-KPX omacron v -15
-KPX omacron w -25
-KPX omacron x -10
-KPX omacron y -10
-KPX omacron yacute -10
-KPX omacron ydieresis -10
-KPX oslash v -15
-KPX oslash w -25
-KPX oslash x -10
-KPX oslash y -10
-KPX oslash yacute -10
-KPX oslash ydieresis -10
-KPX otilde v -15
-KPX otilde w -25
-KPX otilde x -10
-KPX otilde y -10
-KPX otilde yacute -10
-KPX otilde ydieresis -10
-KPX period quotedblright -95
-KPX period quoteright -95
-KPX quoteleft quoteleft -74
-KPX quoteright d -15
-KPX quoteright dcroat -15
-KPX quoteright quoteright -74
-KPX quoteright r -15
-KPX quoteright racute -15
-KPX quoteright rcaron -15
-KPX quoteright rcommaaccent -15
-KPX quoteright s -74
-KPX quoteright sacute -74
-KPX quoteright scaron -74
-KPX quoteright scedilla -74
-KPX quoteright scommaaccent -74
-KPX quoteright space -74
-KPX quoteright t -37
-KPX quoteright tcommaaccent -37
-KPX quoteright v -15
-KPX r comma -65
-KPX r period -65
-KPX racute comma -65
-KPX racute period -65
-KPX rcaron comma -65
-KPX rcaron period -65
-KPX rcommaaccent comma -65
-KPX rcommaaccent period -65
-KPX space A -37
-KPX space Aacute -37
-KPX space Abreve -37
-KPX space Acircumflex -37
-KPX space Adieresis -37
-KPX space Agrave -37
-KPX space Amacron -37
-KPX space Aogonek -37
-KPX space Aring -37
-KPX space Atilde -37
-KPX space V -70
-KPX space W -70
-KPX space Y -70
-KPX space Yacute -70
-KPX space Ydieresis -70
-KPX v comma -37
-KPX v e -15
-KPX v eacute -15
-KPX v ecaron -15
-KPX v ecircumflex -15
-KPX v edieresis -15
-KPX v edotaccent -15
-KPX v egrave -15
-KPX v emacron -15
-KPX v eogonek -15
-KPX v o -15
-KPX v oacute -15
-KPX v ocircumflex -15
-KPX v odieresis -15
-KPX v ograve -15
-KPX v ohungarumlaut -15
-KPX v omacron -15
-KPX v oslash -15
-KPX v otilde -15
-KPX v period -37
-KPX w a -10
-KPX w aacute -10
-KPX w abreve -10
-KPX w acircumflex -10
-KPX w adieresis -10
-KPX w agrave -10
-KPX w amacron -10
-KPX w aogonek -10
-KPX w aring -10
-KPX w atilde -10
-KPX w comma -37
-KPX w e -10
-KPX w eacute -10
-KPX w ecaron -10
-KPX w ecircumflex -10
-KPX w edieresis -10
-KPX w edotaccent -10
-KPX w egrave -10
-KPX w emacron -10
-KPX w eogonek -10
-KPX w o -15
-KPX w oacute -15
-KPX w ocircumflex -15
-KPX w odieresis -15
-KPX w ograve -15
-KPX w ohungarumlaut -15
-KPX w omacron -15
-KPX w oslash -15
-KPX w otilde -15
-KPX w period -37
-KPX x e -10
-KPX x eacute -10
-KPX x ecaron -10
-KPX x ecircumflex -10
-KPX x edieresis -10
-KPX x edotaccent -10
-KPX x egrave -10
-KPX x emacron -10
-KPX x eogonek -10
-KPX y comma -37
-KPX y period -37
-KPX yacute comma -37
-KPX yacute period -37
-KPX ydieresis comma -37
-KPX ydieresis period -37
-EndKernPairs
-EndKernData
-EndFontMetrics
diff --git a/admin/survey/Fonts/Times-Italic.afm b/admin/survey/Fonts/Times-Italic.afm
deleted file mode 100644
index 8de6e42..0000000
--- a/admin/survey/Fonts/Times-Italic.afm
+++ /dev/null
@@ -1,2667 +0,0 @@
-StartFontMetrics 4.1
-Comment Copyright (c) 1985, 1987, 1989, 1990, 1993, 1997 Adobe Systems Incorporated. All Rights Reserved.
-Comment Creation Date: Thu May 1 12:56:55 1997
-Comment UniqueID 43067
-Comment VMusage 47727 58752
-FontName Times-Italic
-FullName Times Italic
-FamilyName Times
-Weight Medium
-ItalicAngle -15.5
-IsFixedPitch false
-CharacterSet ExtendedRoman
-FontBBox -169 -217 1010 883
-UnderlinePosition -100
-UnderlineThickness 50
-Version 002.000
-Notice Copyright (c) 1985, 1987, 1989, 1990, 1993, 1997 Adobe Systems Incorporated. All Rights Reserved.Times is a trademark of Linotype-Hell AG and/or its subsidiaries.
-EncodingScheme AdobeStandardEncoding
-CapHeight 653
-XHeight 441
-Ascender 683
-Descender -217
-StdHW 32
-StdVW 76
-StartCharMetrics 315
-C 32 ; WX 250 ; N space ; B 0 0 0 0 ;
-C 33 ; WX 333 ; N exclam ; B 39 -11 302 667 ;
-C 34 ; WX 420 ; N quotedbl ; B 144 421 432 666 ;
-C 35 ; WX 500 ; N numbersign ; B 2 0 540 676 ;
-C 36 ; WX 500 ; N dollar ; B 31 -89 497 731 ;
-C 37 ; WX 833 ; N percent ; B 79 -13 790 676 ;
-C 38 ; WX 778 ; N ampersand ; B 76 -18 723 666 ;
-C 39 ; WX 333 ; N quoteright ; B 151 436 290 666 ;
-C 40 ; WX 333 ; N parenleft ; B 42 -181 315 669 ;
-C 41 ; WX 333 ; N parenright ; B 16 -180 289 669 ;
-C 42 ; WX 500 ; N asterisk ; B 128 255 492 666 ;
-C 43 ; WX 675 ; N plus ; B 86 0 590 506 ;
-C 44 ; WX 250 ; N comma ; B -4 -129 135 101 ;
-C 45 ; WX 333 ; N hyphen ; B 49 192 282 255 ;
-C 46 ; WX 250 ; N period ; B 27 -11 138 100 ;
-C 47 ; WX 278 ; N slash ; B -65 -18 386 666 ;
-C 48 ; WX 500 ; N zero ; B 32 -7 497 676 ;
-C 49 ; WX 500 ; N one ; B 49 0 409 676 ;
-C 50 ; WX 500 ; N two ; B 12 0 452 676 ;
-C 51 ; WX 500 ; N three ; B 15 -7 465 676 ;
-C 52 ; WX 500 ; N four ; B 1 0 479 676 ;
-C 53 ; WX 500 ; N five ; B 15 -7 491 666 ;
-C 54 ; WX 500 ; N six ; B 30 -7 521 686 ;
-C 55 ; WX 500 ; N seven ; B 75 -8 537 666 ;
-C 56 ; WX 500 ; N eight ; B 30 -7 493 676 ;
-C 57 ; WX 500 ; N nine ; B 23 -17 492 676 ;
-C 58 ; WX 333 ; N colon ; B 50 -11 261 441 ;
-C 59 ; WX 333 ; N semicolon ; B 27 -129 261 441 ;
-C 60 ; WX 675 ; N less ; B 84 -8 592 514 ;
-C 61 ; WX 675 ; N equal ; B 86 120 590 386 ;
-C 62 ; WX 675 ; N greater ; B 84 -8 592 514 ;
-C 63 ; WX 500 ; N question ; B 132 -12 472 664 ;
-C 64 ; WX 920 ; N at ; B 118 -18 806 666 ;
-C 65 ; WX 611 ; N A ; B -51 0 564 668 ;
-C 66 ; WX 611 ; N B ; B -8 0 588 653 ;
-C 67 ; WX 667 ; N C ; B 66 -18 689 666 ;
-C 68 ; WX 722 ; N D ; B -8 0 700 653 ;
-C 69 ; WX 611 ; N E ; B -1 0 634 653 ;
-C 70 ; WX 611 ; N F ; B 8 0 645 653 ;
-C 71 ; WX 722 ; N G ; B 52 -18 722 666 ;
-C 72 ; WX 722 ; N H ; B -8 0 767 653 ;
-C 73 ; WX 333 ; N I ; B -8 0 384 653 ;
-C 74 ; WX 444 ; N J ; B -6 -18 491 653 ;
-C 75 ; WX 667 ; N K ; B 7 0 722 653 ;
-C 76 ; WX 556 ; N L ; B -8 0 559 653 ;
-C 77 ; WX 833 ; N M ; B -18 0 873 653 ;
-C 78 ; WX 667 ; N N ; B -20 -15 727 653 ;
-C 79 ; WX 722 ; N O ; B 60 -18 699 666 ;
-C 80 ; WX 611 ; N P ; B 0 0 605 653 ;
-C 81 ; WX 722 ; N Q ; B 59 -182 699 666 ;
-C 82 ; WX 611 ; N R ; B -13 0 588 653 ;
-C 83 ; WX 500 ; N S ; B 17 -18 508 667 ;
-C 84 ; WX 556 ; N T ; B 59 0 633 653 ;
-C 85 ; WX 722 ; N U ; B 102 -18 765 653 ;
-C 86 ; WX 611 ; N V ; B 76 -18 688 653 ;
-C 87 ; WX 833 ; N W ; B 71 -18 906 653 ;
-C 88 ; WX 611 ; N X ; B -29 0 655 653 ;
-C 89 ; WX 556 ; N Y ; B 78 0 633 653 ;
-C 90 ; WX 556 ; N Z ; B -6 0 606 653 ;
-C 91 ; WX 389 ; N bracketleft ; B 21 -153 391 663 ;
-C 92 ; WX 278 ; N backslash ; B -41 -18 319 666 ;
-C 93 ; WX 389 ; N bracketright ; B 12 -153 382 663 ;
-C 94 ; WX 422 ; N asciicircum ; B 0 301 422 666 ;
-C 95 ; WX 500 ; N underscore ; B 0 -125 500 -75 ;
-C 96 ; WX 333 ; N quoteleft ; B 171 436 310 666 ;
-C 97 ; WX 500 ; N a ; B 17 -11 476 441 ;
-C 98 ; WX 500 ; N b ; B 23 -11 473 683 ;
-C 99 ; WX 444 ; N c ; B 30 -11 425 441 ;
-C 100 ; WX 500 ; N d ; B 15 -13 527 683 ;
-C 101 ; WX 444 ; N e ; B 31 -11 412 441 ;
-C 102 ; WX 278 ; N f ; B -147 -207 424 678 ; L i fi ; L l fl ;
-C 103 ; WX 500 ; N g ; B 8 -206 472 441 ;
-C 104 ; WX 500 ; N h ; B 19 -9 478 683 ;
-C 105 ; WX 278 ; N i ; B 49 -11 264 654 ;
-C 106 ; WX 278 ; N j ; B -124 -207 276 654 ;
-C 107 ; WX 444 ; N k ; B 14 -11 461 683 ;
-C 108 ; WX 278 ; N l ; B 41 -11 279 683 ;
-C 109 ; WX 722 ; N m ; B 12 -9 704 441 ;
-C 110 ; WX 500 ; N n ; B 14 -9 474 441 ;
-C 111 ; WX 500 ; N o ; B 27 -11 468 441 ;
-C 112 ; WX 500 ; N p ; B -75 -205 469 441 ;
-C 113 ; WX 500 ; N q ; B 25 -209 483 441 ;
-C 114 ; WX 389 ; N r ; B 45 0 412 441 ;
-C 115 ; WX 389 ; N s ; B 16 -13 366 442 ;
-C 116 ; WX 278 ; N t ; B 37 -11 296 546 ;
-C 117 ; WX 500 ; N u ; B 42 -11 475 441 ;
-C 118 ; WX 444 ; N v ; B 21 -18 426 441 ;
-C 119 ; WX 667 ; N w ; B 16 -18 648 441 ;
-C 120 ; WX 444 ; N x ; B -27 -11 447 441 ;
-C 121 ; WX 444 ; N y ; B -24 -206 426 441 ;
-C 122 ; WX 389 ; N z ; B -2 -81 380 428 ;
-C 123 ; WX 400 ; N braceleft ; B 51 -177 407 687 ;
-C 124 ; WX 275 ; N bar ; B 105 -217 171 783 ;
-C 125 ; WX 400 ; N braceright ; B -7 -177 349 687 ;
-C 126 ; WX 541 ; N asciitilde ; B 40 183 502 323 ;
-C 161 ; WX 389 ; N exclamdown ; B 59 -205 322 473 ;
-C 162 ; WX 500 ; N cent ; B 77 -143 472 560 ;
-C 163 ; WX 500 ; N sterling ; B 10 -6 517 670 ;
-C 164 ; WX 167 ; N fraction ; B -169 -10 337 676 ;
-C 165 ; WX 500 ; N yen ; B 27 0 603 653 ;
-C 166 ; WX 500 ; N florin ; B 25 -182 507 682 ;
-C 167 ; WX 500 ; N section ; B 53 -162 461 666 ;
-C 168 ; WX 500 ; N currency ; B -22 53 522 597 ;
-C 169 ; WX 214 ; N quotesingle ; B 132 421 241 666 ;
-C 170 ; WX 556 ; N quotedblleft ; B 166 436 514 666 ;
-C 171 ; WX 500 ; N guillemotleft ; B 53 37 445 403 ;
-C 172 ; WX 333 ; N guilsinglleft ; B 51 37 281 403 ;
-C 173 ; WX 333 ; N guilsinglright ; B 52 37 282 403 ;
-C 174 ; WX 500 ; N fi ; B -141 -207 481 681 ;
-C 175 ; WX 500 ; N fl ; B -141 -204 518 682 ;
-C 177 ; WX 500 ; N endash ; B -6 197 505 243 ;
-C 178 ; WX 500 ; N dagger ; B 101 -159 488 666 ;
-C 179 ; WX 500 ; N daggerdbl ; B 22 -143 491 666 ;
-C 180 ; WX 250 ; N periodcentered ; B 70 199 181 310 ;
-C 182 ; WX 523 ; N paragraph ; B 55 -123 616 653 ;
-C 183 ; WX 350 ; N bullet ; B 40 191 310 461 ;
-C 184 ; WX 333 ; N quotesinglbase ; B 44 -129 183 101 ;
-C 185 ; WX 556 ; N quotedblbase ; B 57 -129 405 101 ;
-C 186 ; WX 556 ; N quotedblright ; B 151 436 499 666 ;
-C 187 ; WX 500 ; N guillemotright ; B 55 37 447 403 ;
-C 188 ; WX 889 ; N ellipsis ; B 57 -11 762 100 ;
-C 189 ; WX 1000 ; N perthousand ; B 25 -19 1010 706 ;
-C 191 ; WX 500 ; N questiondown ; B 28 -205 368 471 ;
-C 193 ; WX 333 ; N grave ; B 121 492 311 664 ;
-C 194 ; WX 333 ; N acute ; B 180 494 403 664 ;
-C 195 ; WX 333 ; N circumflex ; B 91 492 385 661 ;
-C 196 ; WX 333 ; N tilde ; B 100 517 427 624 ;
-C 197 ; WX 333 ; N macron ; B 99 532 411 583 ;
-C 198 ; WX 333 ; N breve ; B 117 492 418 650 ;
-C 199 ; WX 333 ; N dotaccent ; B 207 548 305 646 ;
-C 200 ; WX 333 ; N dieresis ; B 107 548 405 646 ;
-C 202 ; WX 333 ; N ring ; B 155 492 355 691 ;
-C 203 ; WX 333 ; N cedilla ; B -30 -217 182 0 ;
-C 205 ; WX 333 ; N hungarumlaut ; B 93 494 486 664 ;
-C 206 ; WX 333 ; N ogonek ; B 20 -169 203 40 ;
-C 207 ; WX 333 ; N caron ; B 121 492 426 661 ;
-C 208 ; WX 889 ; N emdash ; B -6 197 894 243 ;
-C 225 ; WX 889 ; N AE ; B -27 0 911 653 ;
-C 227 ; WX 276 ; N ordfeminine ; B 42 406 352 676 ;
-C 232 ; WX 556 ; N Lslash ; B -8 0 559 653 ;
-C 233 ; WX 722 ; N Oslash ; B 60 -105 699 722 ;
-C 234 ; WX 944 ; N OE ; B 49 -8 964 666 ;
-C 235 ; WX 310 ; N ordmasculine ; B 67 406 362 676 ;
-C 241 ; WX 667 ; N ae ; B 23 -11 640 441 ;
-C 245 ; WX 278 ; N dotlessi ; B 49 -11 235 441 ;
-C 248 ; WX 278 ; N lslash ; B 41 -11 312 683 ;
-C 249 ; WX 500 ; N oslash ; B 28 -135 469 554 ;
-C 250 ; WX 667 ; N oe ; B 20 -12 646 441 ;
-C 251 ; WX 500 ; N germandbls ; B -168 -207 493 679 ;
-C -1 ; WX 333 ; N Idieresis ; B -8 0 435 818 ;
-C -1 ; WX 444 ; N eacute ; B 31 -11 459 664 ;
-C -1 ; WX 500 ; N abreve ; B 17 -11 502 650 ;
-C -1 ; WX 500 ; N uhungarumlaut ; B 42 -11 580 664 ;
-C -1 ; WX 444 ; N ecaron ; B 31 -11 482 661 ;
-C -1 ; WX 556 ; N Ydieresis ; B 78 0 633 818 ;
-C -1 ; WX 675 ; N divide ; B 86 -11 590 517 ;
-C -1 ; WX 556 ; N Yacute ; B 78 0 633 876 ;
-C -1 ; WX 611 ; N Acircumflex ; B -51 0 564 873 ;
-C -1 ; WX 500 ; N aacute ; B 17 -11 487 664 ;
-C -1 ; WX 722 ; N Ucircumflex ; B 102 -18 765 873 ;
-C -1 ; WX 444 ; N yacute ; B -24 -206 459 664 ;
-C -1 ; WX 389 ; N scommaaccent ; B 16 -217 366 442 ;
-C -1 ; WX 444 ; N ecircumflex ; B 31 -11 441 661 ;
-C -1 ; WX 722 ; N Uring ; B 102 -18 765 883 ;
-C -1 ; WX 722 ; N Udieresis ; B 102 -18 765 818 ;
-C -1 ; WX 500 ; N aogonek ; B 17 -169 476 441 ;
-C -1 ; WX 722 ; N Uacute ; B 102 -18 765 876 ;
-C -1 ; WX 500 ; N uogonek ; B 42 -169 477 441 ;
-C -1 ; WX 611 ; N Edieresis ; B -1 0 634 818 ;
-C -1 ; WX 722 ; N Dcroat ; B -8 0 700 653 ;
-C -1 ; WX 250 ; N commaaccent ; B 8 -217 133 -50 ;
-C -1 ; WX 760 ; N copyright ; B 41 -18 719 666 ;
-C -1 ; WX 611 ; N Emacron ; B -1 0 634 795 ;
-C -1 ; WX 444 ; N ccaron ; B 30 -11 482 661 ;
-C -1 ; WX 500 ; N aring ; B 17 -11 476 691 ;
-C -1 ; WX 667 ; N Ncommaaccent ; B -20 -187 727 653 ;
-C -1 ; WX 278 ; N lacute ; B 41 -11 395 876 ;
-C -1 ; WX 500 ; N agrave ; B 17 -11 476 664 ;
-C -1 ; WX 556 ; N Tcommaaccent ; B 59 -217 633 653 ;
-C -1 ; WX 667 ; N Cacute ; B 66 -18 690 876 ;
-C -1 ; WX 500 ; N atilde ; B 17 -11 511 624 ;
-C -1 ; WX 611 ; N Edotaccent ; B -1 0 634 818 ;
-C -1 ; WX 389 ; N scaron ; B 16 -13 454 661 ;
-C -1 ; WX 389 ; N scedilla ; B 16 -217 366 442 ;
-C -1 ; WX 278 ; N iacute ; B 49 -11 355 664 ;
-C -1 ; WX 471 ; N lozenge ; B 13 0 459 724 ;
-C -1 ; WX 611 ; N Rcaron ; B -13 0 588 873 ;
-C -1 ; WX 722 ; N Gcommaaccent ; B 52 -217 722 666 ;
-C -1 ; WX 500 ; N ucircumflex ; B 42 -11 475 661 ;
-C -1 ; WX 500 ; N acircumflex ; B 17 -11 476 661 ;
-C -1 ; WX 611 ; N Amacron ; B -51 0 564 795 ;
-C -1 ; WX 389 ; N rcaron ; B 45 0 434 661 ;
-C -1 ; WX 444 ; N ccedilla ; B 30 -217 425 441 ;
-C -1 ; WX 556 ; N Zdotaccent ; B -6 0 606 818 ;
-C -1 ; WX 611 ; N Thorn ; B 0 0 569 653 ;
-C -1 ; WX 722 ; N Omacron ; B 60 -18 699 795 ;
-C -1 ; WX 611 ; N Racute ; B -13 0 588 876 ;
-C -1 ; WX 500 ; N Sacute ; B 17 -18 508 876 ;
-C -1 ; WX 544 ; N dcaron ; B 15 -13 658 683 ;
-C -1 ; WX 722 ; N Umacron ; B 102 -18 765 795 ;
-C -1 ; WX 500 ; N uring ; B 42 -11 475 691 ;
-C -1 ; WX 300 ; N threesuperior ; B 43 268 339 676 ;
-C -1 ; WX 722 ; N Ograve ; B 60 -18 699 876 ;
-C -1 ; WX 611 ; N Agrave ; B -51 0 564 876 ;
-C -1 ; WX 611 ; N Abreve ; B -51 0 564 862 ;
-C -1 ; WX 675 ; N multiply ; B 93 8 582 497 ;
-C -1 ; WX 500 ; N uacute ; B 42 -11 477 664 ;
-C -1 ; WX 556 ; N Tcaron ; B 59 0 633 873 ;
-C -1 ; WX 476 ; N partialdiff ; B 17 -38 459 710 ;
-C -1 ; WX 444 ; N ydieresis ; B -24 -206 441 606 ;
-C -1 ; WX 667 ; N Nacute ; B -20 -15 727 876 ;
-C -1 ; WX 278 ; N icircumflex ; B 33 -11 327 661 ;
-C -1 ; WX 611 ; N Ecircumflex ; B -1 0 634 873 ;
-C -1 ; WX 500 ; N adieresis ; B 17 -11 489 606 ;
-C -1 ; WX 444 ; N edieresis ; B 31 -11 451 606 ;
-C -1 ; WX 444 ; N cacute ; B 30 -11 459 664 ;
-C -1 ; WX 500 ; N nacute ; B 14 -9 477 664 ;
-C -1 ; WX 500 ; N umacron ; B 42 -11 485 583 ;
-C -1 ; WX 667 ; N Ncaron ; B -20 -15 727 873 ;
-C -1 ; WX 333 ; N Iacute ; B -8 0 433 876 ;
-C -1 ; WX 675 ; N plusminus ; B 86 0 590 506 ;
-C -1 ; WX 275 ; N brokenbar ; B 105 -142 171 708 ;
-C -1 ; WX 760 ; N registered ; B 41 -18 719 666 ;
-C -1 ; WX 722 ; N Gbreve ; B 52 -18 722 862 ;
-C -1 ; WX 333 ; N Idotaccent ; B -8 0 384 818 ;
-C -1 ; WX 600 ; N summation ; B 15 -10 585 706 ;
-C -1 ; WX 611 ; N Egrave ; B -1 0 634 876 ;
-C -1 ; WX 389 ; N racute ; B 45 0 431 664 ;
-C -1 ; WX 500 ; N omacron ; B 27 -11 495 583 ;
-C -1 ; WX 556 ; N Zacute ; B -6 0 606 876 ;
-C -1 ; WX 556 ; N Zcaron ; B -6 0 606 873 ;
-C -1 ; WX 549 ; N greaterequal ; B 26 0 523 658 ;
-C -1 ; WX 722 ; N Eth ; B -8 0 700 653 ;
-C -1 ; WX 667 ; N Ccedilla ; B 66 -217 689 666 ;
-C -1 ; WX 278 ; N lcommaaccent ; B 22 -217 279 683 ;
-C -1 ; WX 300 ; N tcaron ; B 37 -11 407 681 ;
-C -1 ; WX 444 ; N eogonek ; B 31 -169 412 441 ;
-C -1 ; WX 722 ; N Uogonek ; B 102 -184 765 653 ;
-C -1 ; WX 611 ; N Aacute ; B -51 0 564 876 ;
-C -1 ; WX 611 ; N Adieresis ; B -51 0 564 818 ;
-C -1 ; WX 444 ; N egrave ; B 31 -11 412 664 ;
-C -1 ; WX 389 ; N zacute ; B -2 -81 431 664 ;
-C -1 ; WX 278 ; N iogonek ; B 49 -169 264 654 ;
-C -1 ; WX 722 ; N Oacute ; B 60 -18 699 876 ;
-C -1 ; WX 500 ; N oacute ; B 27 -11 487 664 ;
-C -1 ; WX 500 ; N amacron ; B 17 -11 495 583 ;
-C -1 ; WX 389 ; N sacute ; B 16 -13 431 664 ;
-C -1 ; WX 278 ; N idieresis ; B 49 -11 352 606 ;
-C -1 ; WX 722 ; N Ocircumflex ; B 60 -18 699 873 ;
-C -1 ; WX 722 ; N Ugrave ; B 102 -18 765 876 ;
-C -1 ; WX 612 ; N Delta ; B 6 0 608 688 ;
-C -1 ; WX 500 ; N thorn ; B -75 -205 469 683 ;
-C -1 ; WX 300 ; N twosuperior ; B 33 271 324 676 ;
-C -1 ; WX 722 ; N Odieresis ; B 60 -18 699 818 ;
-C -1 ; WX 500 ; N mu ; B -30 -209 497 428 ;
-C -1 ; WX 278 ; N igrave ; B 49 -11 284 664 ;
-C -1 ; WX 500 ; N ohungarumlaut ; B 27 -11 590 664 ;
-C -1 ; WX 611 ; N Eogonek ; B -1 -169 634 653 ;
-C -1 ; WX 500 ; N dcroat ; B 15 -13 572 683 ;
-C -1 ; WX 750 ; N threequarters ; B 23 -10 736 676 ;
-C -1 ; WX 500 ; N Scedilla ; B 17 -217 508 667 ;
-C -1 ; WX 300 ; N lcaron ; B 41 -11 407 683 ;
-C -1 ; WX 667 ; N Kcommaaccent ; B 7 -217 722 653 ;
-C -1 ; WX 556 ; N Lacute ; B -8 0 559 876 ;
-C -1 ; WX 980 ; N trademark ; B 30 247 957 653 ;
-C -1 ; WX 444 ; N edotaccent ; B 31 -11 412 606 ;
-C -1 ; WX 333 ; N Igrave ; B -8 0 384 876 ;
-C -1 ; WX 333 ; N Imacron ; B -8 0 441 795 ;
-C -1 ; WX 611 ; N Lcaron ; B -8 0 586 653 ;
-C -1 ; WX 750 ; N onehalf ; B 34 -10 749 676 ;
-C -1 ; WX 549 ; N lessequal ; B 26 0 523 658 ;
-C -1 ; WX 500 ; N ocircumflex ; B 27 -11 468 661 ;
-C -1 ; WX 500 ; N ntilde ; B 14 -9 476 624 ;
-C -1 ; WX 722 ; N Uhungarumlaut ; B 102 -18 765 876 ;
-C -1 ; WX 611 ; N Eacute ; B -1 0 634 876 ;
-C -1 ; WX 444 ; N emacron ; B 31 -11 457 583 ;
-C -1 ; WX 500 ; N gbreve ; B 8 -206 487 650 ;
-C -1 ; WX 750 ; N onequarter ; B 33 -10 736 676 ;
-C -1 ; WX 500 ; N Scaron ; B 17 -18 520 873 ;
-C -1 ; WX 500 ; N Scommaaccent ; B 17 -217 508 667 ;
-C -1 ; WX 722 ; N Ohungarumlaut ; B 60 -18 699 876 ;
-C -1 ; WX 400 ; N degree ; B 101 390 387 676 ;
-C -1 ; WX 500 ; N ograve ; B 27 -11 468 664 ;
-C -1 ; WX 667 ; N Ccaron ; B 66 -18 689 873 ;
-C -1 ; WX 500 ; N ugrave ; B 42 -11 475 664 ;
-C -1 ; WX 453 ; N radical ; B 2 -60 452 768 ;
-C -1 ; WX 722 ; N Dcaron ; B -8 0 700 873 ;
-C -1 ; WX 389 ; N rcommaaccent ; B -3 -217 412 441 ;
-C -1 ; WX 667 ; N Ntilde ; B -20 -15 727 836 ;
-C -1 ; WX 500 ; N otilde ; B 27 -11 496 624 ;
-C -1 ; WX 611 ; N Rcommaaccent ; B -13 -187 588 653 ;
-C -1 ; WX 556 ; N Lcommaaccent ; B -8 -217 559 653 ;
-C -1 ; WX 611 ; N Atilde ; B -51 0 566 836 ;
-C -1 ; WX 611 ; N Aogonek ; B -51 -169 566 668 ;
-C -1 ; WX 611 ; N Aring ; B -51 0 564 883 ;
-C -1 ; WX 722 ; N Otilde ; B 60 -18 699 836 ;
-C -1 ; WX 389 ; N zdotaccent ; B -2 -81 380 606 ;
-C -1 ; WX 611 ; N Ecaron ; B -1 0 634 873 ;
-C -1 ; WX 333 ; N Iogonek ; B -8 -169 384 653 ;
-C -1 ; WX 444 ; N kcommaaccent ; B 14 -187 461 683 ;
-C -1 ; WX 675 ; N minus ; B 86 220 590 286 ;
-C -1 ; WX 333 ; N Icircumflex ; B -8 0 425 873 ;
-C -1 ; WX 500 ; N ncaron ; B 14 -9 510 661 ;
-C -1 ; WX 278 ; N tcommaaccent ; B 2 -217 296 546 ;
-C -1 ; WX 675 ; N logicalnot ; B 86 108 590 386 ;
-C -1 ; WX 500 ; N odieresis ; B 27 -11 489 606 ;
-C -1 ; WX 500 ; N udieresis ; B 42 -11 479 606 ;
-C -1 ; WX 549 ; N notequal ; B 12 -29 537 541 ;
-C -1 ; WX 500 ; N gcommaaccent ; B 8 -206 472 706 ;
-C -1 ; WX 500 ; N eth ; B 27 -11 482 683 ;
-C -1 ; WX 389 ; N zcaron ; B -2 -81 434 661 ;
-C -1 ; WX 500 ; N ncommaaccent ; B 14 -187 474 441 ;
-C -1 ; WX 300 ; N onesuperior ; B 43 271 284 676 ;
-C -1 ; WX 278 ; N imacron ; B 46 -11 311 583 ;
-C -1 ; WX 500 ; N Euro ; B 0 0 0 0 ;
-EndCharMetrics
-StartKernData
-StartKernPairs 2321
-KPX A C -30
-KPX A Cacute -30
-KPX A Ccaron -30
-KPX A Ccedilla -30
-KPX A G -35
-KPX A Gbreve -35
-KPX A Gcommaaccent -35
-KPX A O -40
-KPX A Oacute -40
-KPX A Ocircumflex -40
-KPX A Odieresis -40
-KPX A Ograve -40
-KPX A Ohungarumlaut -40
-KPX A Omacron -40
-KPX A Oslash -40
-KPX A Otilde -40
-KPX A Q -40
-KPX A T -37
-KPX A Tcaron -37
-KPX A Tcommaaccent -37
-KPX A U -50
-KPX A Uacute -50
-KPX A Ucircumflex -50
-KPX A Udieresis -50
-KPX A Ugrave -50
-KPX A Uhungarumlaut -50
-KPX A Umacron -50
-KPX A Uogonek -50
-KPX A Uring -50
-KPX A V -105
-KPX A W -95
-KPX A Y -55
-KPX A Yacute -55
-KPX A Ydieresis -55
-KPX A quoteright -37
-KPX A u -20
-KPX A uacute -20
-KPX A ucircumflex -20
-KPX A udieresis -20
-KPX A ugrave -20
-KPX A uhungarumlaut -20
-KPX A umacron -20
-KPX A uogonek -20
-KPX A uring -20
-KPX A v -55
-KPX A w -55
-KPX A y -55
-KPX A yacute -55
-KPX A ydieresis -55
-KPX Aacute C -30
-KPX Aacute Cacute -30
-KPX Aacute Ccaron -30
-KPX Aacute Ccedilla -30
-KPX Aacute G -35
-KPX Aacute Gbreve -35
-KPX Aacute Gcommaaccent -35
-KPX Aacute O -40
-KPX Aacute Oacute -40
-KPX Aacute Ocircumflex -40
-KPX Aacute Odieresis -40
-KPX Aacute Ograve -40
-KPX Aacute Ohungarumlaut -40
-KPX Aacute Omacron -40
-KPX Aacute Oslash -40
-KPX Aacute Otilde -40
-KPX Aacute Q -40
-KPX Aacute T -37
-KPX Aacute Tcaron -37
-KPX Aacute Tcommaaccent -37
-KPX Aacute U -50
-KPX Aacute Uacute -50
-KPX Aacute Ucircumflex -50
-KPX Aacute Udieresis -50
-KPX Aacute Ugrave -50
-KPX Aacute Uhungarumlaut -50
-KPX Aacute Umacron -50
-KPX Aacute Uogonek -50
-KPX Aacute Uring -50
-KPX Aacute V -105
-KPX Aacute W -95
-KPX Aacute Y -55
-KPX Aacute Yacute -55
-KPX Aacute Ydieresis -55
-KPX Aacute quoteright -37
-KPX Aacute u -20
-KPX Aacute uacute -20
-KPX Aacute ucircumflex -20
-KPX Aacute udieresis -20
-KPX Aacute ugrave -20
-KPX Aacute uhungarumlaut -20
-KPX Aacute umacron -20
-KPX Aacute uogonek -20
-KPX Aacute uring -20
-KPX Aacute v -55
-KPX Aacute w -55
-KPX Aacute y -55
-KPX Aacute yacute -55
-KPX Aacute ydieresis -55
-KPX Abreve C -30
-KPX Abreve Cacute -30
-KPX Abreve Ccaron -30
-KPX Abreve Ccedilla -30
-KPX Abreve G -35
-KPX Abreve Gbreve -35
-KPX Abreve Gcommaaccent -35
-KPX Abreve O -40
-KPX Abreve Oacute -40
-KPX Abreve Ocircumflex -40
-KPX Abreve Odieresis -40
-KPX Abreve Ograve -40
-KPX Abreve Ohungarumlaut -40
-KPX Abreve Omacron -40
-KPX Abreve Oslash -40
-KPX Abreve Otilde -40
-KPX Abreve Q -40
-KPX Abreve T -37
-KPX Abreve Tcaron -37
-KPX Abreve Tcommaaccent -37
-KPX Abreve U -50
-KPX Abreve Uacute -50
-KPX Abreve Ucircumflex -50
-KPX Abreve Udieresis -50
-KPX Abreve Ugrave -50
-KPX Abreve Uhungarumlaut -50
-KPX Abreve Umacron -50
-KPX Abreve Uogonek -50
-KPX Abreve Uring -50
-KPX Abreve V -105
-KPX Abreve W -95
-KPX Abreve Y -55
-KPX Abreve Yacute -55
-KPX Abreve Ydieresis -55
-KPX Abreve quoteright -37
-KPX Abreve u -20
-KPX Abreve uacute -20
-KPX Abreve ucircumflex -20
-KPX Abreve udieresis -20
-KPX Abreve ugrave -20
-KPX Abreve uhungarumlaut -20
-KPX Abreve umacron -20
-KPX Abreve uogonek -20
-KPX Abreve uring -20
-KPX Abreve v -55
-KPX Abreve w -55
-KPX Abreve y -55
-KPX Abreve yacute -55
-KPX Abreve ydieresis -55
-KPX Acircumflex C -30
-KPX Acircumflex Cacute -30
-KPX Acircumflex Ccaron -30
-KPX Acircumflex Ccedilla -30
-KPX Acircumflex G -35
-KPX Acircumflex Gbreve -35
-KPX Acircumflex Gcommaaccent -35
-KPX Acircumflex O -40
-KPX Acircumflex Oacute -40
-KPX Acircumflex Ocircumflex -40
-KPX Acircumflex Odieresis -40
-KPX Acircumflex Ograve -40
-KPX Acircumflex Ohungarumlaut -40
-KPX Acircumflex Omacron -40
-KPX Acircumflex Oslash -40
-KPX Acircumflex Otilde -40
-KPX Acircumflex Q -40
-KPX Acircumflex T -37
-KPX Acircumflex Tcaron -37
-KPX Acircumflex Tcommaaccent -37
-KPX Acircumflex U -50
-KPX Acircumflex Uacute -50
-KPX Acircumflex Ucircumflex -50
-KPX Acircumflex Udieresis -50
-KPX Acircumflex Ugrave -50
-KPX Acircumflex Uhungarumlaut -50
-KPX Acircumflex Umacron -50
-KPX Acircumflex Uogonek -50
-KPX Acircumflex Uring -50
-KPX Acircumflex V -105
-KPX Acircumflex W -95
-KPX Acircumflex Y -55
-KPX Acircumflex Yacute -55
-KPX Acircumflex Ydieresis -55
-KPX Acircumflex quoteright -37
-KPX Acircumflex u -20
-KPX Acircumflex uacute -20
-KPX Acircumflex ucircumflex -20
-KPX Acircumflex udieresis -20
-KPX Acircumflex ugrave -20
-KPX Acircumflex uhungarumlaut -20
-KPX Acircumflex umacron -20
-KPX Acircumflex uogonek -20
-KPX Acircumflex uring -20
-KPX Acircumflex v -55
-KPX Acircumflex w -55
-KPX Acircumflex y -55
-KPX Acircumflex yacute -55
-KPX Acircumflex ydieresis -55
-KPX Adieresis C -30
-KPX Adieresis Cacute -30
-KPX Adieresis Ccaron -30
-KPX Adieresis Ccedilla -30
-KPX Adieresis G -35
-KPX Adieresis Gbreve -35
-KPX Adieresis Gcommaaccent -35
-KPX Adieresis O -40
-KPX Adieresis Oacute -40
-KPX Adieresis Ocircumflex -40
-KPX Adieresis Odieresis -40
-KPX Adieresis Ograve -40
-KPX Adieresis Ohungarumlaut -40
-KPX Adieresis Omacron -40
-KPX Adieresis Oslash -40
-KPX Adieresis Otilde -40
-KPX Adieresis Q -40
-KPX Adieresis T -37
-KPX Adieresis Tcaron -37
-KPX Adieresis Tcommaaccent -37
-KPX Adieresis U -50
-KPX Adieresis Uacute -50
-KPX Adieresis Ucircumflex -50
-KPX Adieresis Udieresis -50
-KPX Adieresis Ugrave -50
-KPX Adieresis Uhungarumlaut -50
-KPX Adieresis Umacron -50
-KPX Adieresis Uogonek -50
-KPX Adieresis Uring -50
-KPX Adieresis V -105
-KPX Adieresis W -95
-KPX Adieresis Y -55
-KPX Adieresis Yacute -55
-KPX Adieresis Ydieresis -55
-KPX Adieresis quoteright -37
-KPX Adieresis u -20
-KPX Adieresis uacute -20
-KPX Adieresis ucircumflex -20
-KPX Adieresis udieresis -20
-KPX Adieresis ugrave -20
-KPX Adieresis uhungarumlaut -20
-KPX Adieresis umacron -20
-KPX Adieresis uogonek -20
-KPX Adieresis uring -20
-KPX Adieresis v -55
-KPX Adieresis w -55
-KPX Adieresis y -55
-KPX Adieresis yacute -55
-KPX Adieresis ydieresis -55
-KPX Agrave C -30
-KPX Agrave Cacute -30
-KPX Agrave Ccaron -30
-KPX Agrave Ccedilla -30
-KPX Agrave G -35
-KPX Agrave Gbreve -35
-KPX Agrave Gcommaaccent -35
-KPX Agrave O -40
-KPX Agrave Oacute -40
-KPX Agrave Ocircumflex -40
-KPX Agrave Odieresis -40
-KPX Agrave Ograve -40
-KPX Agrave Ohungarumlaut -40
-KPX Agrave Omacron -40
-KPX Agrave Oslash -40
-KPX Agrave Otilde -40
-KPX Agrave Q -40
-KPX Agrave T -37
-KPX Agrave Tcaron -37
-KPX Agrave Tcommaaccent -37
-KPX Agrave U -50
-KPX Agrave Uacute -50
-KPX Agrave Ucircumflex -50
-KPX Agrave Udieresis -50
-KPX Agrave Ugrave -50
-KPX Agrave Uhungarumlaut -50
-KPX Agrave Umacron -50
-KPX Agrave Uogonek -50
-KPX Agrave Uring -50
-KPX Agrave V -105
-KPX Agrave W -95
-KPX Agrave Y -55
-KPX Agrave Yacute -55
-KPX Agrave Ydieresis -55
-KPX Agrave quoteright -37
-KPX Agrave u -20
-KPX Agrave uacute -20
-KPX Agrave ucircumflex -20
-KPX Agrave udieresis -20
-KPX Agrave ugrave -20
-KPX Agrave uhungarumlaut -20
-KPX Agrave umacron -20
-KPX Agrave uogonek -20
-KPX Agrave uring -20
-KPX Agrave v -55
-KPX Agrave w -55
-KPX Agrave y -55
-KPX Agrave yacute -55
-KPX Agrave ydieresis -55
-KPX Amacron C -30
-KPX Amacron Cacute -30
-KPX Amacron Ccaron -30
-KPX Amacron Ccedilla -30
-KPX Amacron G -35
-KPX Amacron Gbreve -35
-KPX Amacron Gcommaaccent -35
-KPX Amacron O -40
-KPX Amacron Oacute -40
-KPX Amacron Ocircumflex -40
-KPX Amacron Odieresis -40
-KPX Amacron Ograve -40
-KPX Amacron Ohungarumlaut -40
-KPX Amacron Omacron -40
-KPX Amacron Oslash -40
-KPX Amacron Otilde -40
-KPX Amacron Q -40
-KPX Amacron T -37
-KPX Amacron Tcaron -37
-KPX Amacron Tcommaaccent -37
-KPX Amacron U -50
-KPX Amacron Uacute -50
-KPX Amacron Ucircumflex -50
-KPX Amacron Udieresis -50
-KPX Amacron Ugrave -50
-KPX Amacron Uhungarumlaut -50
-KPX Amacron Umacron -50
-KPX Amacron Uogonek -50
-KPX Amacron Uring -50
-KPX Amacron V -105
-KPX Amacron W -95
-KPX Amacron Y -55
-KPX Amacron Yacute -55
-KPX Amacron Ydieresis -55
-KPX Amacron quoteright -37
-KPX Amacron u -20
-KPX Amacron uacute -20
-KPX Amacron ucircumflex -20
-KPX Amacron udieresis -20
-KPX Amacron ugrave -20
-KPX Amacron uhungarumlaut -20
-KPX Amacron umacron -20
-KPX Amacron uogonek -20
-KPX Amacron uring -20
-KPX Amacron v -55
-KPX Amacron w -55
-KPX Amacron y -55
-KPX Amacron yacute -55
-KPX Amacron ydieresis -55
-KPX Aogonek C -30
-KPX Aogonek Cacute -30
-KPX Aogonek Ccaron -30
-KPX Aogonek Ccedilla -30
-KPX Aogonek G -35
-KPX Aogonek Gbreve -35
-KPX Aogonek Gcommaaccent -35
-KPX Aogonek O -40
-KPX Aogonek Oacute -40
-KPX Aogonek Ocircumflex -40
-KPX Aogonek Odieresis -40
-KPX Aogonek Ograve -40
-KPX Aogonek Ohungarumlaut -40
-KPX Aogonek Omacron -40
-KPX Aogonek Oslash -40
-KPX Aogonek Otilde -40
-KPX Aogonek Q -40
-KPX Aogonek T -37
-KPX Aogonek Tcaron -37
-KPX Aogonek Tcommaaccent -37
-KPX Aogonek U -50
-KPX Aogonek Uacute -50
-KPX Aogonek Ucircumflex -50
-KPX Aogonek Udieresis -50
-KPX Aogonek Ugrave -50
-KPX Aogonek Uhungarumlaut -50
-KPX Aogonek Umacron -50
-KPX Aogonek Uogonek -50
-KPX Aogonek Uring -50
-KPX Aogonek V -105
-KPX Aogonek W -95
-KPX Aogonek Y -55
-KPX Aogonek Yacute -55
-KPX Aogonek Ydieresis -55
-KPX Aogonek quoteright -37
-KPX Aogonek u -20
-KPX Aogonek uacute -20
-KPX Aogonek ucircumflex -20
-KPX Aogonek udieresis -20
-KPX Aogonek ugrave -20
-KPX Aogonek uhungarumlaut -20
-KPX Aogonek umacron -20
-KPX Aogonek uogonek -20
-KPX Aogonek uring -20
-KPX Aogonek v -55
-KPX Aogonek w -55
-KPX Aogonek y -55
-KPX Aogonek yacute -55
-KPX Aogonek ydieresis -55
-KPX Aring C -30
-KPX Aring Cacute -30
-KPX Aring Ccaron -30
-KPX Aring Ccedilla -30
-KPX Aring G -35
-KPX Aring Gbreve -35
-KPX Aring Gcommaaccent -35
-KPX Aring O -40
-KPX Aring Oacute -40
-KPX Aring Ocircumflex -40
-KPX Aring Odieresis -40
-KPX Aring Ograve -40
-KPX Aring Ohungarumlaut -40
-KPX Aring Omacron -40
-KPX Aring Oslash -40
-KPX Aring Otilde -40
-KPX Aring Q -40
-KPX Aring T -37
-KPX Aring Tcaron -37
-KPX Aring Tcommaaccent -37
-KPX Aring U -50
-KPX Aring Uacute -50
-KPX Aring Ucircumflex -50
-KPX Aring Udieresis -50
-KPX Aring Ugrave -50
-KPX Aring Uhungarumlaut -50
-KPX Aring Umacron -50
-KPX Aring Uogonek -50
-KPX Aring Uring -50
-KPX Aring V -105
-KPX Aring W -95
-KPX Aring Y -55
-KPX Aring Yacute -55
-KPX Aring Ydieresis -55
-KPX Aring quoteright -37
-KPX Aring u -20
-KPX Aring uacute -20
-KPX Aring ucircumflex -20
-KPX Aring udieresis -20
-KPX Aring ugrave -20
-KPX Aring uhungarumlaut -20
-KPX Aring umacron -20
-KPX Aring uogonek -20
-KPX Aring uring -20
-KPX Aring v -55
-KPX Aring w -55
-KPX Aring y -55
-KPX Aring yacute -55
-KPX Aring ydieresis -55
-KPX Atilde C -30
-KPX Atilde Cacute -30
-KPX Atilde Ccaron -30
-KPX Atilde Ccedilla -30
-KPX Atilde G -35
-KPX Atilde Gbreve -35
-KPX Atilde Gcommaaccent -35
-KPX Atilde O -40
-KPX Atilde Oacute -40
-KPX Atilde Ocircumflex -40
-KPX Atilde Odieresis -40
-KPX Atilde Ograve -40
-KPX Atilde Ohungarumlaut -40
-KPX Atilde Omacron -40
-KPX Atilde Oslash -40
-KPX Atilde Otilde -40
-KPX Atilde Q -40
-KPX Atilde T -37
-KPX Atilde Tcaron -37
-KPX Atilde Tcommaaccent -37
-KPX Atilde U -50
-KPX Atilde Uacute -50
-KPX Atilde Ucircumflex -50
-KPX Atilde Udieresis -50
-KPX Atilde Ugrave -50
-KPX Atilde Uhungarumlaut -50
-KPX Atilde Umacron -50
-KPX Atilde Uogonek -50
-KPX Atilde Uring -50
-KPX Atilde V -105
-KPX Atilde W -95
-KPX Atilde Y -55
-KPX Atilde Yacute -55
-KPX Atilde Ydieresis -55
-KPX Atilde quoteright -37
-KPX Atilde u -20
-KPX Atilde uacute -20
-KPX Atilde ucircumflex -20
-KPX Atilde udieresis -20
-KPX Atilde ugrave -20
-KPX Atilde uhungarumlaut -20
-KPX Atilde umacron -20
-KPX Atilde uogonek -20
-KPX Atilde uring -20
-KPX Atilde v -55
-KPX Atilde w -55
-KPX Atilde y -55
-KPX Atilde yacute -55
-KPX Atilde ydieresis -55
-KPX B A -25
-KPX B Aacute -25
-KPX B Abreve -25
-KPX B Acircumflex -25
-KPX B Adieresis -25
-KPX B Agrave -25
-KPX B Amacron -25
-KPX B Aogonek -25
-KPX B Aring -25
-KPX B Atilde -25
-KPX B U -10
-KPX B Uacute -10
-KPX B Ucircumflex -10
-KPX B Udieresis -10
-KPX B Ugrave -10
-KPX B Uhungarumlaut -10
-KPX B Umacron -10
-KPX B Uogonek -10
-KPX B Uring -10
-KPX D A -35
-KPX D Aacute -35
-KPX D Abreve -35
-KPX D Acircumflex -35
-KPX D Adieresis -35
-KPX D Agrave -35
-KPX D Amacron -35
-KPX D Aogonek -35
-KPX D Aring -35
-KPX D Atilde -35
-KPX D V -40
-KPX D W -40
-KPX D Y -40
-KPX D Yacute -40
-KPX D Ydieresis -40
-KPX Dcaron A -35
-KPX Dcaron Aacute -35
-KPX Dcaron Abreve -35
-KPX Dcaron Acircumflex -35
-KPX Dcaron Adieresis -35
-KPX Dcaron Agrave -35
-KPX Dcaron Amacron -35
-KPX Dcaron Aogonek -35
-KPX Dcaron Aring -35
-KPX Dcaron Atilde -35
-KPX Dcaron V -40
-KPX Dcaron W -40
-KPX Dcaron Y -40
-KPX Dcaron Yacute -40
-KPX Dcaron Ydieresis -40
-KPX Dcroat A -35
-KPX Dcroat Aacute -35
-KPX Dcroat Abreve -35
-KPX Dcroat Acircumflex -35
-KPX Dcroat Adieresis -35
-KPX Dcroat Agrave -35
-KPX Dcroat Amacron -35
-KPX Dcroat Aogonek -35
-KPX Dcroat Aring -35
-KPX Dcroat Atilde -35
-KPX Dcroat V -40
-KPX Dcroat W -40
-KPX Dcroat Y -40
-KPX Dcroat Yacute -40
-KPX Dcroat Ydieresis -40
-KPX F A -115
-KPX F Aacute -115
-KPX F Abreve -115
-KPX F Acircumflex -115
-KPX F Adieresis -115
-KPX F Agrave -115
-KPX F Amacron -115
-KPX F Aogonek -115
-KPX F Aring -115
-KPX F Atilde -115
-KPX F a -75
-KPX F aacute -75
-KPX F abreve -75
-KPX F acircumflex -75
-KPX F adieresis -75
-KPX F agrave -75
-KPX F amacron -75
-KPX F aogonek -75
-KPX F aring -75
-KPX F atilde -75
-KPX F comma -135
-KPX F e -75
-KPX F eacute -75
-KPX F ecaron -75
-KPX F ecircumflex -75
-KPX F edieresis -75
-KPX F edotaccent -75
-KPX F egrave -75
-KPX F emacron -75
-KPX F eogonek -75
-KPX F i -45
-KPX F iacute -45
-KPX F icircumflex -45
-KPX F idieresis -45
-KPX F igrave -45
-KPX F imacron -45
-KPX F iogonek -45
-KPX F o -105
-KPX F oacute -105
-KPX F ocircumflex -105
-KPX F odieresis -105
-KPX F ograve -105
-KPX F ohungarumlaut -105
-KPX F omacron -105
-KPX F oslash -105
-KPX F otilde -105
-KPX F period -135
-KPX F r -55
-KPX F racute -55
-KPX F rcaron -55
-KPX F rcommaaccent -55
-KPX J A -40
-KPX J Aacute -40
-KPX J Abreve -40
-KPX J Acircumflex -40
-KPX J Adieresis -40
-KPX J Agrave -40
-KPX J Amacron -40
-KPX J Aogonek -40
-KPX J Aring -40
-KPX J Atilde -40
-KPX J a -35
-KPX J aacute -35
-KPX J abreve -35
-KPX J acircumflex -35
-KPX J adieresis -35
-KPX J agrave -35
-KPX J amacron -35
-KPX J aogonek -35
-KPX J aring -35
-KPX J atilde -35
-KPX J comma -25
-KPX J e -25
-KPX J eacute -25
-KPX J ecaron -25
-KPX J ecircumflex -25
-KPX J edieresis -25
-KPX J edotaccent -25
-KPX J egrave -25
-KPX J emacron -25
-KPX J eogonek -25
-KPX J o -25
-KPX J oacute -25
-KPX J ocircumflex -25
-KPX J odieresis -25
-KPX J ograve -25
-KPX J ohungarumlaut -25
-KPX J omacron -25
-KPX J oslash -25
-KPX J otilde -25
-KPX J period -25
-KPX J u -35
-KPX J uacute -35
-KPX J ucircumflex -35
-KPX J udieresis -35
-KPX J ugrave -35
-KPX J uhungarumlaut -35
-KPX J umacron -35
-KPX J uogonek -35
-KPX J uring -35
-KPX K O -50
-KPX K Oacute -50
-KPX K Ocircumflex -50
-KPX K Odieresis -50
-KPX K Ograve -50
-KPX K Ohungarumlaut -50
-KPX K Omacron -50
-KPX K Oslash -50
-KPX K Otilde -50
-KPX K e -35
-KPX K eacute -35
-KPX K ecaron -35
-KPX K ecircumflex -35
-KPX K edieresis -35
-KPX K edotaccent -35
-KPX K egrave -35
-KPX K emacron -35
-KPX K eogonek -35
-KPX K o -40
-KPX K oacute -40
-KPX K ocircumflex -40
-KPX K odieresis -40
-KPX K ograve -40
-KPX K ohungarumlaut -40
-KPX K omacron -40
-KPX K oslash -40
-KPX K otilde -40
-KPX K u -40
-KPX K uacute -40
-KPX K ucircumflex -40
-KPX K udieresis -40
-KPX K ugrave -40
-KPX K uhungarumlaut -40
-KPX K umacron -40
-KPX K uogonek -40
-KPX K uring -40
-KPX K y -40
-KPX K yacute -40
-KPX K ydieresis -40
-KPX Kcommaaccent O -50
-KPX Kcommaaccent Oacute -50
-KPX Kcommaaccent Ocircumflex -50
-KPX Kcommaaccent Odieresis -50
-KPX Kcommaaccent Ograve -50
-KPX Kcommaaccent Ohungarumlaut -50
-KPX Kcommaaccent Omacron -50
-KPX Kcommaaccent Oslash -50
-KPX Kcommaaccent Otilde -50
-KPX Kcommaaccent e -35
-KPX Kcommaaccent eacute -35
-KPX Kcommaaccent ecaron -35
-KPX Kcommaaccent ecircumflex -35
-KPX Kcommaaccent edieresis -35
-KPX Kcommaaccent edotaccent -35
-KPX Kcommaaccent egrave -35
-KPX Kcommaaccent emacron -35
-KPX Kcommaaccent eogonek -35
-KPX Kcommaaccent o -40
-KPX Kcommaaccent oacute -40
-KPX Kcommaaccent ocircumflex -40
-KPX Kcommaaccent odieresis -40
-KPX Kcommaaccent ograve -40
-KPX Kcommaaccent ohungarumlaut -40
-KPX Kcommaaccent omacron -40
-KPX Kcommaaccent oslash -40
-KPX Kcommaaccent otilde -40
-KPX Kcommaaccent u -40
-KPX Kcommaaccent uacute -40
-KPX Kcommaaccent ucircumflex -40
-KPX Kcommaaccent udieresis -40
-KPX Kcommaaccent ugrave -40
-KPX Kcommaaccent uhungarumlaut -40
-KPX Kcommaaccent umacron -40
-KPX Kcommaaccent uogonek -40
-KPX Kcommaaccent uring -40
-KPX Kcommaaccent y -40
-KPX Kcommaaccent yacute -40
-KPX Kcommaaccent ydieresis -40
-KPX L T -20
-KPX L Tcaron -20
-KPX L Tcommaaccent -20
-KPX L V -55
-KPX L W -55
-KPX L Y -20
-KPX L Yacute -20
-KPX L Ydieresis -20
-KPX L quoteright -37
-KPX L y -30
-KPX L yacute -30
-KPX L ydieresis -30
-KPX Lacute T -20
-KPX Lacute Tcaron -20
-KPX Lacute Tcommaaccent -20
-KPX Lacute V -55
-KPX Lacute W -55
-KPX Lacute Y -20
-KPX Lacute Yacute -20
-KPX Lacute Ydieresis -20
-KPX Lacute quoteright -37
-KPX Lacute y -30
-KPX Lacute yacute -30
-KPX Lacute ydieresis -30
-KPX Lcommaaccent T -20
-KPX Lcommaaccent Tcaron -20
-KPX Lcommaaccent Tcommaaccent -20
-KPX Lcommaaccent V -55
-KPX Lcommaaccent W -55
-KPX Lcommaaccent Y -20
-KPX Lcommaaccent Yacute -20
-KPX Lcommaaccent Ydieresis -20
-KPX Lcommaaccent quoteright -37
-KPX Lcommaaccent y -30
-KPX Lcommaaccent yacute -30
-KPX Lcommaaccent ydieresis -30
-KPX Lslash T -20
-KPX Lslash Tcaron -20
-KPX Lslash Tcommaaccent -20
-KPX Lslash V -55
-KPX Lslash W -55
-KPX Lslash Y -20
-KPX Lslash Yacute -20
-KPX Lslash Ydieresis -20
-KPX Lslash quoteright -37
-KPX Lslash y -30
-KPX Lslash yacute -30
-KPX Lslash ydieresis -30
-KPX N A -27
-KPX N Aacute -27
-KPX N Abreve -27
-KPX N Acircumflex -27
-KPX N Adieresis -27
-KPX N Agrave -27
-KPX N Amacron -27
-KPX N Aogonek -27
-KPX N Aring -27
-KPX N Atilde -27
-KPX Nacute A -27
-KPX Nacute Aacute -27
-KPX Nacute Abreve -27
-KPX Nacute Acircumflex -27
-KPX Nacute Adieresis -27
-KPX Nacute Agrave -27
-KPX Nacute Amacron -27
-KPX Nacute Aogonek -27
-KPX Nacute Aring -27
-KPX Nacute Atilde -27
-KPX Ncaron A -27
-KPX Ncaron Aacute -27
-KPX Ncaron Abreve -27
-KPX Ncaron Acircumflex -27
-KPX Ncaron Adieresis -27
-KPX Ncaron Agrave -27
-KPX Ncaron Amacron -27
-KPX Ncaron Aogonek -27
-KPX Ncaron Aring -27
-KPX Ncaron Atilde -27
-KPX Ncommaaccent A -27
-KPX Ncommaaccent Aacute -27
-KPX Ncommaaccent Abreve -27
-KPX Ncommaaccent Acircumflex -27
-KPX Ncommaaccent Adieresis -27
-KPX Ncommaaccent Agrave -27
-KPX Ncommaaccent Amacron -27
-KPX Ncommaaccent Aogonek -27
-KPX Ncommaaccent Aring -27
-KPX Ncommaaccent Atilde -27
-KPX Ntilde A -27
-KPX Ntilde Aacute -27
-KPX Ntilde Abreve -27
-KPX Ntilde Acircumflex -27
-KPX Ntilde Adieresis -27
-KPX Ntilde Agrave -27
-KPX Ntilde Amacron -27
-KPX Ntilde Aogonek -27
-KPX Ntilde Aring -27
-KPX Ntilde Atilde -27
-KPX O A -55
-KPX O Aacute -55
-KPX O Abreve -55
-KPX O Acircumflex -55
-KPX O Adieresis -55
-KPX O Agrave -55
-KPX O Amacron -55
-KPX O Aogonek -55
-KPX O Aring -55
-KPX O Atilde -55
-KPX O T -40
-KPX O Tcaron -40
-KPX O Tcommaaccent -40
-KPX O V -50
-KPX O W -50
-KPX O X -40
-KPX O Y -50
-KPX O Yacute -50
-KPX O Ydieresis -50
-KPX Oacute A -55
-KPX Oacute Aacute -55
-KPX Oacute Abreve -55
-KPX Oacute Acircumflex -55
-KPX Oacute Adieresis -55
-KPX Oacute Agrave -55
-KPX Oacute Amacron -55
-KPX Oacute Aogonek -55
-KPX Oacute Aring -55
-KPX Oacute Atilde -55
-KPX Oacute T -40
-KPX Oacute Tcaron -40
-KPX Oacute Tcommaaccent -40
-KPX Oacute V -50
-KPX Oacute W -50
-KPX Oacute X -40
-KPX Oacute Y -50
-KPX Oacute Yacute -50
-KPX Oacute Ydieresis -50
-KPX Ocircumflex A -55
-KPX Ocircumflex Aacute -55
-KPX Ocircumflex Abreve -55
-KPX Ocircumflex Acircumflex -55
-KPX Ocircumflex Adieresis -55
-KPX Ocircumflex Agrave -55
-KPX Ocircumflex Amacron -55
-KPX Ocircumflex Aogonek -55
-KPX Ocircumflex Aring -55
-KPX Ocircumflex Atilde -55
-KPX Ocircumflex T -40
-KPX Ocircumflex Tcaron -40
-KPX Ocircumflex Tcommaaccent -40
-KPX Ocircumflex V -50
-KPX Ocircumflex W -50
-KPX Ocircumflex X -40
-KPX Ocircumflex Y -50
-KPX Ocircumflex Yacute -50
-KPX Ocircumflex Ydieresis -50
-KPX Odieresis A -55
-KPX Odieresis Aacute -55
-KPX Odieresis Abreve -55
-KPX Odieresis Acircumflex -55
-KPX Odieresis Adieresis -55
-KPX Odieresis Agrave -55
-KPX Odieresis Amacron -55
-KPX Odieresis Aogonek -55
-KPX Odieresis Aring -55
-KPX Odieresis Atilde -55
-KPX Odieresis T -40
-KPX Odieresis Tcaron -40
-KPX Odieresis Tcommaaccent -40
-KPX Odieresis V -50
-KPX Odieresis W -50
-KPX Odieresis X -40
-KPX Odieresis Y -50
-KPX Odieresis Yacute -50
-KPX Odieresis Ydieresis -50
-KPX Ograve A -55
-KPX Ograve Aacute -55
-KPX Ograve Abreve -55
-KPX Ograve Acircumflex -55
-KPX Ograve Adieresis -55
-KPX Ograve Agrave -55
-KPX Ograve Amacron -55
-KPX Ograve Aogonek -55
-KPX Ograve Aring -55
-KPX Ograve Atilde -55
-KPX Ograve T -40
-KPX Ograve Tcaron -40
-KPX Ograve Tcommaaccent -40
-KPX Ograve V -50
-KPX Ograve W -50
-KPX Ograve X -40
-KPX Ograve Y -50
-KPX Ograve Yacute -50
-KPX Ograve Ydieresis -50
-KPX Ohungarumlaut A -55
-KPX Ohungarumlaut Aacute -55
-KPX Ohungarumlaut Abreve -55
-KPX Ohungarumlaut Acircumflex -55
-KPX Ohungarumlaut Adieresis -55
-KPX Ohungarumlaut Agrave -55
-KPX Ohungarumlaut Amacron -55
-KPX Ohungarumlaut Aogonek -55
-KPX Ohungarumlaut Aring -55
-KPX Ohungarumlaut Atilde -55
-KPX Ohungarumlaut T -40
-KPX Ohungarumlaut Tcaron -40
-KPX Ohungarumlaut Tcommaaccent -40
-KPX Ohungarumlaut V -50
-KPX Ohungarumlaut W -50
-KPX Ohungarumlaut X -40
-KPX Ohungarumlaut Y -50
-KPX Ohungarumlaut Yacute -50
-KPX Ohungarumlaut Ydieresis -50
-KPX Omacron A -55
-KPX Omacron Aacute -55
-KPX Omacron Abreve -55
-KPX Omacron Acircumflex -55
-KPX Omacron Adieresis -55
-KPX Omacron Agrave -55
-KPX Omacron Amacron -55
-KPX Omacron Aogonek -55
-KPX Omacron Aring -55
-KPX Omacron Atilde -55
-KPX Omacron T -40
-KPX Omacron Tcaron -40
-KPX Omacron Tcommaaccent -40
-KPX Omacron V -50
-KPX Omacron W -50
-KPX Omacron X -40
-KPX Omacron Y -50
-KPX Omacron Yacute -50
-KPX Omacron Ydieresis -50
-KPX Oslash A -55
-KPX Oslash Aacute -55
-KPX Oslash Abreve -55
-KPX Oslash Acircumflex -55
-KPX Oslash Adieresis -55
-KPX Oslash Agrave -55
-KPX Oslash Amacron -55
-KPX Oslash Aogonek -55
-KPX Oslash Aring -55
-KPX Oslash Atilde -55
-KPX Oslash T -40
-KPX Oslash Tcaron -40
-KPX Oslash Tcommaaccent -40
-KPX Oslash V -50
-KPX Oslash W -50
-KPX Oslash X -40
-KPX Oslash Y -50
-KPX Oslash Yacute -50
-KPX Oslash Ydieresis -50
-KPX Otilde A -55
-KPX Otilde Aacute -55
-KPX Otilde Abreve -55
-KPX Otilde Acircumflex -55
-KPX Otilde Adieresis -55
-KPX Otilde Agrave -55
-KPX Otilde Amacron -55
-KPX Otilde Aogonek -55
-KPX Otilde Aring -55
-KPX Otilde Atilde -55
-KPX Otilde T -40
-KPX Otilde Tcaron -40
-KPX Otilde Tcommaaccent -40
-KPX Otilde V -50
-KPX Otilde W -50
-KPX Otilde X -40
-KPX Otilde Y -50
-KPX Otilde Yacute -50
-KPX Otilde Ydieresis -50
-KPX P A -90
-KPX P Aacute -90
-KPX P Abreve -90
-KPX P Acircumflex -90
-KPX P Adieresis -90
-KPX P Agrave -90
-KPX P Amacron -90
-KPX P Aogonek -90
-KPX P Aring -90
-KPX P Atilde -90
-KPX P a -80
-KPX P aacute -80
-KPX P abreve -80
-KPX P acircumflex -80
-KPX P adieresis -80
-KPX P agrave -80
-KPX P amacron -80
-KPX P aogonek -80
-KPX P aring -80
-KPX P atilde -80
-KPX P comma -135
-KPX P e -80
-KPX P eacute -80
-KPX P ecaron -80
-KPX P ecircumflex -80
-KPX P edieresis -80
-KPX P edotaccent -80
-KPX P egrave -80
-KPX P emacron -80
-KPX P eogonek -80
-KPX P o -80
-KPX P oacute -80
-KPX P ocircumflex -80
-KPX P odieresis -80
-KPX P ograve -80
-KPX P ohungarumlaut -80
-KPX P omacron -80
-KPX P oslash -80
-KPX P otilde -80
-KPX P period -135
-KPX Q U -10
-KPX Q Uacute -10
-KPX Q Ucircumflex -10
-KPX Q Udieresis -10
-KPX Q Ugrave -10
-KPX Q Uhungarumlaut -10
-KPX Q Umacron -10
-KPX Q Uogonek -10
-KPX Q Uring -10
-KPX R O -40
-KPX R Oacute -40
-KPX R Ocircumflex -40
-KPX R Odieresis -40
-KPX R Ograve -40
-KPX R Ohungarumlaut -40
-KPX R Omacron -40
-KPX R Oslash -40
-KPX R Otilde -40
-KPX R U -40
-KPX R Uacute -40
-KPX R Ucircumflex -40
-KPX R Udieresis -40
-KPX R Ugrave -40
-KPX R Uhungarumlaut -40
-KPX R Umacron -40
-KPX R Uogonek -40
-KPX R Uring -40
-KPX R V -18
-KPX R W -18
-KPX R Y -18
-KPX R Yacute -18
-KPX R Ydieresis -18
-KPX Racute O -40
-KPX Racute Oacute -40
-KPX Racute Ocircumflex -40
-KPX Racute Odieresis -40
-KPX Racute Ograve -40
-KPX Racute Ohungarumlaut -40
-KPX Racute Omacron -40
-KPX Racute Oslash -40
-KPX Racute Otilde -40
-KPX Racute U -40
-KPX Racute Uacute -40
-KPX Racute Ucircumflex -40
-KPX Racute Udieresis -40
-KPX Racute Ugrave -40
-KPX Racute Uhungarumlaut -40
-KPX Racute Umacron -40
-KPX Racute Uogonek -40
-KPX Racute Uring -40
-KPX Racute V -18
-KPX Racute W -18
-KPX Racute Y -18
-KPX Racute Yacute -18
-KPX Racute Ydieresis -18
-KPX Rcaron O -40
-KPX Rcaron Oacute -40
-KPX Rcaron Ocircumflex -40
-KPX Rcaron Odieresis -40
-KPX Rcaron Ograve -40
-KPX Rcaron Ohungarumlaut -40
-KPX Rcaron Omacron -40
-KPX Rcaron Oslash -40
-KPX Rcaron Otilde -40
-KPX Rcaron U -40
-KPX Rcaron Uacute -40
-KPX Rcaron Ucircumflex -40
-KPX Rcaron Udieresis -40
-KPX Rcaron Ugrave -40
-KPX Rcaron Uhungarumlaut -40
-KPX Rcaron Umacron -40
-KPX Rcaron Uogonek -40
-KPX Rcaron Uring -40
-KPX Rcaron V -18
-KPX Rcaron W -18
-KPX Rcaron Y -18
-KPX Rcaron Yacute -18
-KPX Rcaron Ydieresis -18
-KPX Rcommaaccent O -40
-KPX Rcommaaccent Oacute -40
-KPX Rcommaaccent Ocircumflex -40
-KPX Rcommaaccent Odieresis -40
-KPX Rcommaaccent Ograve -40
-KPX Rcommaaccent Ohungarumlaut -40
-KPX Rcommaaccent Omacron -40
-KPX Rcommaaccent Oslash -40
-KPX Rcommaaccent Otilde -40
-KPX Rcommaaccent U -40
-KPX Rcommaaccent Uacute -40
-KPX Rcommaaccent Ucircumflex -40
-KPX Rcommaaccent Udieresis -40
-KPX Rcommaaccent Ugrave -40
-KPX Rcommaaccent Uhungarumlaut -40
-KPX Rcommaaccent Umacron -40
-KPX Rcommaaccent Uogonek -40
-KPX Rcommaaccent Uring -40
-KPX Rcommaaccent V -18
-KPX Rcommaaccent W -18
-KPX Rcommaaccent Y -18
-KPX Rcommaaccent Yacute -18
-KPX Rcommaaccent Ydieresis -18
-KPX T A -50
-KPX T Aacute -50
-KPX T Abreve -50
-KPX T Acircumflex -50
-KPX T Adieresis -50
-KPX T Agrave -50
-KPX T Amacron -50
-KPX T Aogonek -50
-KPX T Aring -50
-KPX T Atilde -50
-KPX T O -18
-KPX T Oacute -18
-KPX T Ocircumflex -18
-KPX T Odieresis -18
-KPX T Ograve -18
-KPX T Ohungarumlaut -18
-KPX T Omacron -18
-KPX T Oslash -18
-KPX T Otilde -18
-KPX T a -92
-KPX T aacute -92
-KPX T abreve -92
-KPX T acircumflex -92
-KPX T adieresis -92
-KPX T agrave -92
-KPX T amacron -92
-KPX T aogonek -92
-KPX T aring -92
-KPX T atilde -92
-KPX T colon -55
-KPX T comma -74
-KPX T e -92
-KPX T eacute -92
-KPX T ecaron -92
-KPX T ecircumflex -52
-KPX T edieresis -52
-KPX T edotaccent -92
-KPX T egrave -52
-KPX T emacron -52
-KPX T eogonek -92
-KPX T hyphen -74
-KPX T i -55
-KPX T iacute -55
-KPX T iogonek -55
-KPX T o -92
-KPX T oacute -92
-KPX T ocircumflex -92
-KPX T odieresis -92
-KPX T ograve -92
-KPX T ohungarumlaut -92
-KPX T omacron -92
-KPX T oslash -92
-KPX T otilde -92
-KPX T period -74
-KPX T r -55
-KPX T racute -55
-KPX T rcaron -55
-KPX T rcommaaccent -55
-KPX T semicolon -65
-KPX T u -55
-KPX T uacute -55
-KPX T ucircumflex -55
-KPX T udieresis -55
-KPX T ugrave -55
-KPX T uhungarumlaut -55
-KPX T umacron -55
-KPX T uogonek -55
-KPX T uring -55
-KPX T w -74
-KPX T y -74
-KPX T yacute -74
-KPX T ydieresis -34
-KPX Tcaron A -50
-KPX Tcaron Aacute -50
-KPX Tcaron Abreve -50
-KPX Tcaron Acircumflex -50
-KPX Tcaron Adieresis -50
-KPX Tcaron Agrave -50
-KPX Tcaron Amacron -50
-KPX Tcaron Aogonek -50
-KPX Tcaron Aring -50
-KPX Tcaron Atilde -50
-KPX Tcaron O -18
-KPX Tcaron Oacute -18
-KPX Tcaron Ocircumflex -18
-KPX Tcaron Odieresis -18
-KPX Tcaron Ograve -18
-KPX Tcaron Ohungarumlaut -18
-KPX Tcaron Omacron -18
-KPX Tcaron Oslash -18
-KPX Tcaron Otilde -18
-KPX Tcaron a -92
-KPX Tcaron aacute -92
-KPX Tcaron abreve -92
-KPX Tcaron acircumflex -92
-KPX Tcaron adieresis -92
-KPX Tcaron agrave -92
-KPX Tcaron amacron -92
-KPX Tcaron aogonek -92
-KPX Tcaron aring -92
-KPX Tcaron atilde -92
-KPX Tcaron colon -55
-KPX Tcaron comma -74
-KPX Tcaron e -92
-KPX Tcaron eacute -92
-KPX Tcaron ecaron -92
-KPX Tcaron ecircumflex -52
-KPX Tcaron edieresis -52
-KPX Tcaron edotaccent -92
-KPX Tcaron egrave -52
-KPX Tcaron emacron -52
-KPX Tcaron eogonek -92
-KPX Tcaron hyphen -74
-KPX Tcaron i -55
-KPX Tcaron iacute -55
-KPX Tcaron iogonek -55
-KPX Tcaron o -92
-KPX Tcaron oacute -92
-KPX Tcaron ocircumflex -92
-KPX Tcaron odieresis -92
-KPX Tcaron ograve -92
-KPX Tcaron ohungarumlaut -92
-KPX Tcaron omacron -92
-KPX Tcaron oslash -92
-KPX Tcaron otilde -92
-KPX Tcaron period -74
-KPX Tcaron r -55
-KPX Tcaron racute -55
-KPX Tcaron rcaron -55
-KPX Tcaron rcommaaccent -55
-KPX Tcaron semicolon -65
-KPX Tcaron u -55
-KPX Tcaron uacute -55
-KPX Tcaron ucircumflex -55
-KPX Tcaron udieresis -55
-KPX Tcaron ugrave -55
-KPX Tcaron uhungarumlaut -55
-KPX Tcaron umacron -55
-KPX Tcaron uogonek -55
-KPX Tcaron uring -55
-KPX Tcaron w -74
-KPX Tcaron y -74
-KPX Tcaron yacute -74
-KPX Tcaron ydieresis -34
-KPX Tcommaaccent A -50
-KPX Tcommaaccent Aacute -50
-KPX Tcommaaccent Abreve -50
-KPX Tcommaaccent Acircumflex -50
-KPX Tcommaaccent Adieresis -50
-KPX Tcommaaccent Agrave -50
-KPX Tcommaaccent Amacron -50
-KPX Tcommaaccent Aogonek -50
-KPX Tcommaaccent Aring -50
-KPX Tcommaaccent Atilde -50
-KPX Tcommaaccent O -18
-KPX Tcommaaccent Oacute -18
-KPX Tcommaaccent Ocircumflex -18
-KPX Tcommaaccent Odieresis -18
-KPX Tcommaaccent Ograve -18
-KPX Tcommaaccent Ohungarumlaut -18
-KPX Tcommaaccent Omacron -18
-KPX Tcommaaccent Oslash -18
-KPX Tcommaaccent Otilde -18
-KPX Tcommaaccent a -92
-KPX Tcommaaccent aacute -92
-KPX Tcommaaccent abreve -92
-KPX Tcommaaccent acircumflex -92
-KPX Tcommaaccent adieresis -92
-KPX Tcommaaccent agrave -92
-KPX Tcommaaccent amacron -92
-KPX Tcommaaccent aogonek -92
-KPX Tcommaaccent aring -92
-KPX Tcommaaccent atilde -92
-KPX Tcommaaccent colon -55
-KPX Tcommaaccent comma -74
-KPX Tcommaaccent e -92
-KPX Tcommaaccent eacute -92
-KPX Tcommaaccent ecaron -92
-KPX Tcommaaccent ecircumflex -52
-KPX Tcommaaccent edieresis -52
-KPX Tcommaaccent edotaccent -92
-KPX Tcommaaccent egrave -52
-KPX Tcommaaccent emacron -52
-KPX Tcommaaccent eogonek -92
-KPX Tcommaaccent hyphen -74
-KPX Tcommaaccent i -55
-KPX Tcommaaccent iacute -55
-KPX Tcommaaccent iogonek -55
-KPX Tcommaaccent o -92
-KPX Tcommaaccent oacute -92
-KPX Tcommaaccent ocircumflex -92
-KPX Tcommaaccent odieresis -92
-KPX Tcommaaccent ograve -92
-KPX Tcommaaccent ohungarumlaut -92
-KPX Tcommaaccent omacron -92
-KPX Tcommaaccent oslash -92
-KPX Tcommaaccent otilde -92
-KPX Tcommaaccent period -74
-KPX Tcommaaccent r -55
-KPX Tcommaaccent racute -55
-KPX Tcommaaccent rcaron -55
-KPX Tcommaaccent rcommaaccent -55
-KPX Tcommaaccent semicolon -65
-KPX Tcommaaccent u -55
-KPX Tcommaaccent uacute -55
-KPX Tcommaaccent ucircumflex -55
-KPX Tcommaaccent udieresis -55
-KPX Tcommaaccent ugrave -55
-KPX Tcommaaccent uhungarumlaut -55
-KPX Tcommaaccent umacron -55
-KPX Tcommaaccent uogonek -55
-KPX Tcommaaccent uring -55
-KPX Tcommaaccent w -74
-KPX Tcommaaccent y -74
-KPX Tcommaaccent yacute -74
-KPX Tcommaaccent ydieresis -34
-KPX U A -40
-KPX U Aacute -40
-KPX U Abreve -40
-KPX U Acircumflex -40
-KPX U Adieresis -40
-KPX U Agrave -40
-KPX U Amacron -40
-KPX U Aogonek -40
-KPX U Aring -40
-KPX U Atilde -40
-KPX U comma -25
-KPX U period -25
-KPX Uacute A -40
-KPX Uacute Aacute -40
-KPX Uacute Abreve -40
-KPX Uacute Acircumflex -40
-KPX Uacute Adieresis -40
-KPX Uacute Agrave -40
-KPX Uacute Amacron -40
-KPX Uacute Aogonek -40
-KPX Uacute Aring -40
-KPX Uacute Atilde -40
-KPX Uacute comma -25
-KPX Uacute period -25
-KPX Ucircumflex A -40
-KPX Ucircumflex Aacute -40
-KPX Ucircumflex Abreve -40
-KPX Ucircumflex Acircumflex -40
-KPX Ucircumflex Adieresis -40
-KPX Ucircumflex Agrave -40
-KPX Ucircumflex Amacron -40
-KPX Ucircumflex Aogonek -40
-KPX Ucircumflex Aring -40
-KPX Ucircumflex Atilde -40
-KPX Ucircumflex comma -25
-KPX Ucircumflex period -25
-KPX Udieresis A -40
-KPX Udieresis Aacute -40
-KPX Udieresis Abreve -40
-KPX Udieresis Acircumflex -40
-KPX Udieresis Adieresis -40
-KPX Udieresis Agrave -40
-KPX Udieresis Amacron -40
-KPX Udieresis Aogonek -40
-KPX Udieresis Aring -40
-KPX Udieresis Atilde -40
-KPX Udieresis comma -25
-KPX Udieresis period -25
-KPX Ugrave A -40
-KPX Ugrave Aacute -40
-KPX Ugrave Abreve -40
-KPX Ugrave Acircumflex -40
-KPX Ugrave Adieresis -40
-KPX Ugrave Agrave -40
-KPX Ugrave Amacron -40
-KPX Ugrave Aogonek -40
-KPX Ugrave Aring -40
-KPX Ugrave Atilde -40
-KPX Ugrave comma -25
-KPX Ugrave period -25
-KPX Uhungarumlaut A -40
-KPX Uhungarumlaut Aacute -40
-KPX Uhungarumlaut Abreve -40
-KPX Uhungarumlaut Acircumflex -40
-KPX Uhungarumlaut Adieresis -40
-KPX Uhungarumlaut Agrave -40
-KPX Uhungarumlaut Amacron -40
-KPX Uhungarumlaut Aogonek -40
-KPX Uhungarumlaut Aring -40
-KPX Uhungarumlaut Atilde -40
-KPX Uhungarumlaut comma -25
-KPX Uhungarumlaut period -25
-KPX Umacron A -40
-KPX Umacron Aacute -40
-KPX Umacron Abreve -40
-KPX Umacron Acircumflex -40
-KPX Umacron Adieresis -40
-KPX Umacron Agrave -40
-KPX Umacron Amacron -40
-KPX Umacron Aogonek -40
-KPX Umacron Aring -40
-KPX Umacron Atilde -40
-KPX Umacron comma -25
-KPX Umacron period -25
-KPX Uogonek A -40
-KPX Uogonek Aacute -40
-KPX Uogonek Abreve -40
-KPX Uogonek Acircumflex -40
-KPX Uogonek Adieresis -40
-KPX Uogonek Agrave -40
-KPX Uogonek Amacron -40
-KPX Uogonek Aogonek -40
-KPX Uogonek Aring -40
-KPX Uogonek Atilde -40
-KPX Uogonek comma -25
-KPX Uogonek period -25
-KPX Uring A -40
-KPX Uring Aacute -40
-KPX Uring Abreve -40
-KPX Uring Acircumflex -40
-KPX Uring Adieresis -40
-KPX Uring Agrave -40
-KPX Uring Amacron -40
-KPX Uring Aogonek -40
-KPX Uring Aring -40
-KPX Uring Atilde -40
-KPX Uring comma -25
-KPX Uring period -25
-KPX V A -60
-KPX V Aacute -60
-KPX V Abreve -60
-KPX V Acircumflex -60
-KPX V Adieresis -60
-KPX V Agrave -60
-KPX V Amacron -60
-KPX V Aogonek -60
-KPX V Aring -60
-KPX V Atilde -60
-KPX V O -30
-KPX V Oacute -30
-KPX V Ocircumflex -30
-KPX V Odieresis -30
-KPX V Ograve -30
-KPX V Ohungarumlaut -30
-KPX V Omacron -30
-KPX V Oslash -30
-KPX V Otilde -30
-KPX V a -111
-KPX V aacute -111
-KPX V abreve -111
-KPX V acircumflex -111
-KPX V adieresis -111
-KPX V agrave -111
-KPX V amacron -111
-KPX V aogonek -111
-KPX V aring -111
-KPX V atilde -111
-KPX V colon -65
-KPX V comma -129
-KPX V e -111
-KPX V eacute -111
-KPX V ecaron -111
-KPX V ecircumflex -111
-KPX V edieresis -71
-KPX V edotaccent -111
-KPX V egrave -71
-KPX V emacron -71
-KPX V eogonek -111
-KPX V hyphen -55
-KPX V i -74
-KPX V iacute -74
-KPX V icircumflex -34
-KPX V idieresis -34
-KPX V igrave -34
-KPX V imacron -34
-KPX V iogonek -74
-KPX V o -111
-KPX V oacute -111
-KPX V ocircumflex -111
-KPX V odieresis -111
-KPX V ograve -111
-KPX V ohungarumlaut -111
-KPX V omacron -111
-KPX V oslash -111
-KPX V otilde -111
-KPX V period -129
-KPX V semicolon -74
-KPX V u -74
-KPX V uacute -74
-KPX V ucircumflex -74
-KPX V udieresis -74
-KPX V ugrave -74
-KPX V uhungarumlaut -74
-KPX V umacron -74
-KPX V uogonek -74
-KPX V uring -74
-KPX W A -60
-KPX W Aacute -60
-KPX W Abreve -60
-KPX W Acircumflex -60
-KPX W Adieresis -60
-KPX W Agrave -60
-KPX W Amacron -60
-KPX W Aogonek -60
-KPX W Aring -60
-KPX W Atilde -60
-KPX W O -25
-KPX W Oacute -25
-KPX W Ocircumflex -25
-KPX W Odieresis -25
-KPX W Ograve -25
-KPX W Ohungarumlaut -25
-KPX W Omacron -25
-KPX W Oslash -25
-KPX W Otilde -25
-KPX W a -92
-KPX W aacute -92
-KPX W abreve -92
-KPX W acircumflex -92
-KPX W adieresis -92
-KPX W agrave -92
-KPX W amacron -92
-KPX W aogonek -92
-KPX W aring -92
-KPX W atilde -92
-KPX W colon -65
-KPX W comma -92
-KPX W e -92
-KPX W eacute -92
-KPX W ecaron -92
-KPX W ecircumflex -92
-KPX W edieresis -52
-KPX W edotaccent -92
-KPX W egrave -52
-KPX W emacron -52
-KPX W eogonek -92
-KPX W hyphen -37
-KPX W i -55
-KPX W iacute -55
-KPX W iogonek -55
-KPX W o -92
-KPX W oacute -92
-KPX W ocircumflex -92
-KPX W odieresis -92
-KPX W ograve -92
-KPX W ohungarumlaut -92
-KPX W omacron -92
-KPX W oslash -92
-KPX W otilde -92
-KPX W period -92
-KPX W semicolon -65
-KPX W u -55
-KPX W uacute -55
-KPX W ucircumflex -55
-KPX W udieresis -55
-KPX W ugrave -55
-KPX W uhungarumlaut -55
-KPX W umacron -55
-KPX W uogonek -55
-KPX W uring -55
-KPX W y -70
-KPX W yacute -70
-KPX W ydieresis -70
-KPX Y A -50
-KPX Y Aacute -50
-KPX Y Abreve -50
-KPX Y Acircumflex -50
-KPX Y Adieresis -50
-KPX Y Agrave -50
-KPX Y Amacron -50
-KPX Y Aogonek -50
-KPX Y Aring -50
-KPX Y Atilde -50
-KPX Y O -15
-KPX Y Oacute -15
-KPX Y Ocircumflex -15
-KPX Y Odieresis -15
-KPX Y Ograve -15
-KPX Y Ohungarumlaut -15
-KPX Y Omacron -15
-KPX Y Oslash -15
-KPX Y Otilde -15
-KPX Y a -92
-KPX Y aacute -92
-KPX Y abreve -92
-KPX Y acircumflex -92
-KPX Y adieresis -92
-KPX Y agrave -92
-KPX Y amacron -92
-KPX Y aogonek -92
-KPX Y aring -92
-KPX Y atilde -92
-KPX Y colon -65
-KPX Y comma -92
-KPX Y e -92
-KPX Y eacute -92
-KPX Y ecaron -92
-KPX Y ecircumflex -92
-KPX Y edieresis -52
-KPX Y edotaccent -92
-KPX Y egrave -52
-KPX Y emacron -52
-KPX Y eogonek -92
-KPX Y hyphen -74
-KPX Y i -74
-KPX Y iacute -74
-KPX Y icircumflex -34
-KPX Y idieresis -34
-KPX Y igrave -34
-KPX Y imacron -34
-KPX Y iogonek -74
-KPX Y o -92
-KPX Y oacute -92
-KPX Y ocircumflex -92
-KPX Y odieresis -92
-KPX Y ograve -92
-KPX Y ohungarumlaut -92
-KPX Y omacron -92
-KPX Y oslash -92
-KPX Y otilde -92
-KPX Y period -92
-KPX Y semicolon -65
-KPX Y u -92
-KPX Y uacute -92
-KPX Y ucircumflex -92
-KPX Y udieresis -92
-KPX Y ugrave -92
-KPX Y uhungarumlaut -92
-KPX Y umacron -92
-KPX Y uogonek -92
-KPX Y uring -92
-KPX Yacute A -50
-KPX Yacute Aacute -50
-KPX Yacute Abreve -50
-KPX Yacute Acircumflex -50
-KPX Yacute Adieresis -50
-KPX Yacute Agrave -50
-KPX Yacute Amacron -50
-KPX Yacute Aogonek -50
-KPX Yacute Aring -50
-KPX Yacute Atilde -50
-KPX Yacute O -15
-KPX Yacute Oacute -15
-KPX Yacute Ocircumflex -15
-KPX Yacute Odieresis -15
-KPX Yacute Ograve -15
-KPX Yacute Ohungarumlaut -15
-KPX Yacute Omacron -15
-KPX Yacute Oslash -15
-KPX Yacute Otilde -15
-KPX Yacute a -92
-KPX Yacute aacute -92
-KPX Yacute abreve -92
-KPX Yacute acircumflex -92
-KPX Yacute adieresis -92
-KPX Yacute agrave -92
-KPX Yacute amacron -92
-KPX Yacute aogonek -92
-KPX Yacute aring -92
-KPX Yacute atilde -92
-KPX Yacute colon -65
-KPX Yacute comma -92
-KPX Yacute e -92
-KPX Yacute eacute -92
-KPX Yacute ecaron -92
-KPX Yacute ecircumflex -92
-KPX Yacute edieresis -52
-KPX Yacute edotaccent -92
-KPX Yacute egrave -52
-KPX Yacute emacron -52
-KPX Yacute eogonek -92
-KPX Yacute hyphen -74
-KPX Yacute i -74
-KPX Yacute iacute -74
-KPX Yacute icircumflex -34
-KPX Yacute idieresis -34
-KPX Yacute igrave -34
-KPX Yacute imacron -34
-KPX Yacute iogonek -74
-KPX Yacute o -92
-KPX Yacute oacute -92
-KPX Yacute ocircumflex -92
-KPX Yacute odieresis -92
-KPX Yacute ograve -92
-KPX Yacute ohungarumlaut -92
-KPX Yacute omacron -92
-KPX Yacute oslash -92
-KPX Yacute otilde -92
-KPX Yacute period -92
-KPX Yacute semicolon -65
-KPX Yacute u -92
-KPX Yacute uacute -92
-KPX Yacute ucircumflex -92
-KPX Yacute udieresis -92
-KPX Yacute ugrave -92
-KPX Yacute uhungarumlaut -92
-KPX Yacute umacron -92
-KPX Yacute uogonek -92
-KPX Yacute uring -92
-KPX Ydieresis A -50
-KPX Ydieresis Aacute -50
-KPX Ydieresis Abreve -50
-KPX Ydieresis Acircumflex -50
-KPX Ydieresis Adieresis -50
-KPX Ydieresis Agrave -50
-KPX Ydieresis Amacron -50
-KPX Ydieresis Aogonek -50
-KPX Ydieresis Aring -50
-KPX Ydieresis Atilde -50
-KPX Ydieresis O -15
-KPX Ydieresis Oacute -15
-KPX Ydieresis Ocircumflex -15
-KPX Ydieresis Odieresis -15
-KPX Ydieresis Ograve -15
-KPX Ydieresis Ohungarumlaut -15
-KPX Ydieresis Omacron -15
-KPX Ydieresis Oslash -15
-KPX Ydieresis Otilde -15
-KPX Ydieresis a -92
-KPX Ydieresis aacute -92
-KPX Ydieresis abreve -92
-KPX Ydieresis acircumflex -92
-KPX Ydieresis adieresis -92
-KPX Ydieresis agrave -92
-KPX Ydieresis amacron -92
-KPX Ydieresis aogonek -92
-KPX Ydieresis aring -92
-KPX Ydieresis atilde -92
-KPX Ydieresis colon -65
-KPX Ydieresis comma -92
-KPX Ydieresis e -92
-KPX Ydieresis eacute -92
-KPX Ydieresis ecaron -92
-KPX Ydieresis ecircumflex -92
-KPX Ydieresis edieresis -52
-KPX Ydieresis edotaccent -92
-KPX Ydieresis egrave -52
-KPX Ydieresis emacron -52
-KPX Ydieresis eogonek -92
-KPX Ydieresis hyphen -74
-KPX Ydieresis i -74
-KPX Ydieresis iacute -74
-KPX Ydieresis icircumflex -34
-KPX Ydieresis idieresis -34
-KPX Ydieresis igrave -34
-KPX Ydieresis imacron -34
-KPX Ydieresis iogonek -74
-KPX Ydieresis o -92
-KPX Ydieresis oacute -92
-KPX Ydieresis ocircumflex -92
-KPX Ydieresis odieresis -92
-KPX Ydieresis ograve -92
-KPX Ydieresis ohungarumlaut -92
-KPX Ydieresis omacron -92
-KPX Ydieresis oslash -92
-KPX Ydieresis otilde -92
-KPX Ydieresis period -92
-KPX Ydieresis semicolon -65
-KPX Ydieresis u -92
-KPX Ydieresis uacute -92
-KPX Ydieresis ucircumflex -92
-KPX Ydieresis udieresis -92
-KPX Ydieresis ugrave -92
-KPX Ydieresis uhungarumlaut -92
-KPX Ydieresis umacron -92
-KPX Ydieresis uogonek -92
-KPX Ydieresis uring -92
-KPX a g -10
-KPX a gbreve -10
-KPX a gcommaaccent -10
-KPX aacute g -10
-KPX aacute gbreve -10
-KPX aacute gcommaaccent -10
-KPX abreve g -10
-KPX abreve gbreve -10
-KPX abreve gcommaaccent -10
-KPX acircumflex g -10
-KPX acircumflex gbreve -10
-KPX acircumflex gcommaaccent -10
-KPX adieresis g -10
-KPX adieresis gbreve -10
-KPX adieresis gcommaaccent -10
-KPX agrave g -10
-KPX agrave gbreve -10
-KPX agrave gcommaaccent -10
-KPX amacron g -10
-KPX amacron gbreve -10
-KPX amacron gcommaaccent -10
-KPX aogonek g -10
-KPX aogonek gbreve -10
-KPX aogonek gcommaaccent -10
-KPX aring g -10
-KPX aring gbreve -10
-KPX aring gcommaaccent -10
-KPX atilde g -10
-KPX atilde gbreve -10
-KPX atilde gcommaaccent -10
-KPX b period -40
-KPX b u -20
-KPX b uacute -20
-KPX b ucircumflex -20
-KPX b udieresis -20
-KPX b ugrave -20
-KPX b uhungarumlaut -20
-KPX b umacron -20
-KPX b uogonek -20
-KPX b uring -20
-KPX c h -15
-KPX c k -20
-KPX c kcommaaccent -20
-KPX cacute h -15
-KPX cacute k -20
-KPX cacute kcommaaccent -20
-KPX ccaron h -15
-KPX ccaron k -20
-KPX ccaron kcommaaccent -20
-KPX ccedilla h -15
-KPX ccedilla k -20
-KPX ccedilla kcommaaccent -20
-KPX comma quotedblright -140
-KPX comma quoteright -140
-KPX e comma -10
-KPX e g -40
-KPX e gbreve -40
-KPX e gcommaaccent -40
-KPX e period -15
-KPX e v -15
-KPX e w -15
-KPX e x -20
-KPX e y -30
-KPX e yacute -30
-KPX e ydieresis -30
-KPX eacute comma -10
-KPX eacute g -40
-KPX eacute gbreve -40
-KPX eacute gcommaaccent -40
-KPX eacute period -15
-KPX eacute v -15
-KPX eacute w -15
-KPX eacute x -20
-KPX eacute y -30
-KPX eacute yacute -30
-KPX eacute ydieresis -30
-KPX ecaron comma -10
-KPX ecaron g -40
-KPX ecaron gbreve -40
-KPX ecaron gcommaaccent -40
-KPX ecaron period -15
-KPX ecaron v -15
-KPX ecaron w -15
-KPX ecaron x -20
-KPX ecaron y -30
-KPX ecaron yacute -30
-KPX ecaron ydieresis -30
-KPX ecircumflex comma -10
-KPX ecircumflex g -40
-KPX ecircumflex gbreve -40
-KPX ecircumflex gcommaaccent -40
-KPX ecircumflex period -15
-KPX ecircumflex v -15
-KPX ecircumflex w -15
-KPX ecircumflex x -20
-KPX ecircumflex y -30
-KPX ecircumflex yacute -30
-KPX ecircumflex ydieresis -30
-KPX edieresis comma -10
-KPX edieresis g -40
-KPX edieresis gbreve -40
-KPX edieresis gcommaaccent -40
-KPX edieresis period -15
-KPX edieresis v -15
-KPX edieresis w -15
-KPX edieresis x -20
-KPX edieresis y -30
-KPX edieresis yacute -30
-KPX edieresis ydieresis -30
-KPX edotaccent comma -10
-KPX edotaccent g -40
-KPX edotaccent gbreve -40
-KPX edotaccent gcommaaccent -40
-KPX edotaccent period -15
-KPX edotaccent v -15
-KPX edotaccent w -15
-KPX edotaccent x -20
-KPX edotaccent y -30
-KPX edotaccent yacute -30
-KPX edotaccent ydieresis -30
-KPX egrave comma -10
-KPX egrave g -40
-KPX egrave gbreve -40
-KPX egrave gcommaaccent -40
-KPX egrave period -15
-KPX egrave v -15
-KPX egrave w -15
-KPX egrave x -20
-KPX egrave y -30
-KPX egrave yacute -30
-KPX egrave ydieresis -30
-KPX emacron comma -10
-KPX emacron g -40
-KPX emacron gbreve -40
-KPX emacron gcommaaccent -40
-KPX emacron period -15
-KPX emacron v -15
-KPX emacron w -15
-KPX emacron x -20
-KPX emacron y -30
-KPX emacron yacute -30
-KPX emacron ydieresis -30
-KPX eogonek comma -10
-KPX eogonek g -40
-KPX eogonek gbreve -40
-KPX eogonek gcommaaccent -40
-KPX eogonek period -15
-KPX eogonek v -15
-KPX eogonek w -15
-KPX eogonek x -20
-KPX eogonek y -30
-KPX eogonek yacute -30
-KPX eogonek ydieresis -30
-KPX f comma -10
-KPX f dotlessi -60
-KPX f f -18
-KPX f i -20
-KPX f iogonek -20
-KPX f period -15
-KPX f quoteright 92
-KPX g comma -10
-KPX g e -10
-KPX g eacute -10
-KPX g ecaron -10
-KPX g ecircumflex -10
-KPX g edieresis -10
-KPX g edotaccent -10
-KPX g egrave -10
-KPX g emacron -10
-KPX g eogonek -10
-KPX g g -10
-KPX g gbreve -10
-KPX g gcommaaccent -10
-KPX g period -15
-KPX gbreve comma -10
-KPX gbreve e -10
-KPX gbreve eacute -10
-KPX gbreve ecaron -10
-KPX gbreve ecircumflex -10
-KPX gbreve edieresis -10
-KPX gbreve edotaccent -10
-KPX gbreve egrave -10
-KPX gbreve emacron -10
-KPX gbreve eogonek -10
-KPX gbreve g -10
-KPX gbreve gbreve -10
-KPX gbreve gcommaaccent -10
-KPX gbreve period -15
-KPX gcommaaccent comma -10
-KPX gcommaaccent e -10
-KPX gcommaaccent eacute -10
-KPX gcommaaccent ecaron -10
-KPX gcommaaccent ecircumflex -10
-KPX gcommaaccent edieresis -10
-KPX gcommaaccent edotaccent -10
-KPX gcommaaccent egrave -10
-KPX gcommaaccent emacron -10
-KPX gcommaaccent eogonek -10
-KPX gcommaaccent g -10
-KPX gcommaaccent gbreve -10
-KPX gcommaaccent gcommaaccent -10
-KPX gcommaaccent period -15
-KPX k e -10
-KPX k eacute -10
-KPX k ecaron -10
-KPX k ecircumflex -10
-KPX k edieresis -10
-KPX k edotaccent -10
-KPX k egrave -10
-KPX k emacron -10
-KPX k eogonek -10
-KPX k o -10
-KPX k oacute -10
-KPX k ocircumflex -10
-KPX k odieresis -10
-KPX k ograve -10
-KPX k ohungarumlaut -10
-KPX k omacron -10
-KPX k oslash -10
-KPX k otilde -10
-KPX k y -10
-KPX k yacute -10
-KPX k ydieresis -10
-KPX kcommaaccent e -10
-KPX kcommaaccent eacute -10
-KPX kcommaaccent ecaron -10
-KPX kcommaaccent ecircumflex -10
-KPX kcommaaccent edieresis -10
-KPX kcommaaccent edotaccent -10
-KPX kcommaaccent egrave -10
-KPX kcommaaccent emacron -10
-KPX kcommaaccent eogonek -10
-KPX kcommaaccent o -10
-KPX kcommaaccent oacute -10
-KPX kcommaaccent ocircumflex -10
-KPX kcommaaccent odieresis -10
-KPX kcommaaccent ograve -10
-KPX kcommaaccent ohungarumlaut -10
-KPX kcommaaccent omacron -10
-KPX kcommaaccent oslash -10
-KPX kcommaaccent otilde -10
-KPX kcommaaccent y -10
-KPX kcommaaccent yacute -10
-KPX kcommaaccent ydieresis -10
-KPX n v -40
-KPX nacute v -40
-KPX ncaron v -40
-KPX ncommaaccent v -40
-KPX ntilde v -40
-KPX o g -10
-KPX o gbreve -10
-KPX o gcommaaccent -10
-KPX o v -10
-KPX oacute g -10
-KPX oacute gbreve -10
-KPX oacute gcommaaccent -10
-KPX oacute v -10
-KPX ocircumflex g -10
-KPX ocircumflex gbreve -10
-KPX ocircumflex gcommaaccent -10
-KPX ocircumflex v -10
-KPX odieresis g -10
-KPX odieresis gbreve -10
-KPX odieresis gcommaaccent -10
-KPX odieresis v -10
-KPX ograve g -10
-KPX ograve gbreve -10
-KPX ograve gcommaaccent -10
-KPX ograve v -10
-KPX ohungarumlaut g -10
-KPX ohungarumlaut gbreve -10
-KPX ohungarumlaut gcommaaccent -10
-KPX ohungarumlaut v -10
-KPX omacron g -10
-KPX omacron gbreve -10
-KPX omacron gcommaaccent -10
-KPX omacron v -10
-KPX oslash g -10
-KPX oslash gbreve -10
-KPX oslash gcommaaccent -10
-KPX oslash v -10
-KPX otilde g -10
-KPX otilde gbreve -10
-KPX otilde gcommaaccent -10
-KPX otilde v -10
-KPX period quotedblright -140
-KPX period quoteright -140
-KPX quoteleft quoteleft -111
-KPX quoteright d -25
-KPX quoteright dcroat -25
-KPX quoteright quoteright -111
-KPX quoteright r -25
-KPX quoteright racute -25
-KPX quoteright rcaron -25
-KPX quoteright rcommaaccent -25
-KPX quoteright s -40
-KPX quoteright sacute -40
-KPX quoteright scaron -40
-KPX quoteright scedilla -40
-KPX quoteright scommaaccent -40
-KPX quoteright space -111
-KPX quoteright t -30
-KPX quoteright tcommaaccent -30
-KPX quoteright v -10
-KPX r a -15
-KPX r aacute -15
-KPX r abreve -15
-KPX r acircumflex -15
-KPX r adieresis -15
-KPX r agrave -15
-KPX r amacron -15
-KPX r aogonek -15
-KPX r aring -15
-KPX r atilde -15
-KPX r c -37
-KPX r cacute -37
-KPX r ccaron -37
-KPX r ccedilla -37
-KPX r comma -111
-KPX r d -37
-KPX r dcroat -37
-KPX r e -37
-KPX r eacute -37
-KPX r ecaron -37
-KPX r ecircumflex -37
-KPX r edieresis -37
-KPX r edotaccent -37
-KPX r egrave -37
-KPX r emacron -37
-KPX r eogonek -37
-KPX r g -37
-KPX r gbreve -37
-KPX r gcommaaccent -37
-KPX r hyphen -20
-KPX r o -45
-KPX r oacute -45
-KPX r ocircumflex -45
-KPX r odieresis -45
-KPX r ograve -45
-KPX r ohungarumlaut -45
-KPX r omacron -45
-KPX r oslash -45
-KPX r otilde -45
-KPX r period -111
-KPX r q -37
-KPX r s -10
-KPX r sacute -10
-KPX r scaron -10
-KPX r scedilla -10
-KPX r scommaaccent -10
-KPX racute a -15
-KPX racute aacute -15
-KPX racute abreve -15
-KPX racute acircumflex -15
-KPX racute adieresis -15
-KPX racute agrave -15
-KPX racute amacron -15
-KPX racute aogonek -15
-KPX racute aring -15
-KPX racute atilde -15
-KPX racute c -37
-KPX racute cacute -37
-KPX racute ccaron -37
-KPX racute ccedilla -37
-KPX racute comma -111
-KPX racute d -37
-KPX racute dcroat -37
-KPX racute e -37
-KPX racute eacute -37
-KPX racute ecaron -37
-KPX racute ecircumflex -37
-KPX racute edieresis -37
-KPX racute edotaccent -37
-KPX racute egrave -37
-KPX racute emacron -37
-KPX racute eogonek -37
-KPX racute g -37
-KPX racute gbreve -37
-KPX racute gcommaaccent -37
-KPX racute hyphen -20
-KPX racute o -45
-KPX racute oacute -45
-KPX racute ocircumflex -45
-KPX racute odieresis -45
-KPX racute ograve -45
-KPX racute ohungarumlaut -45
-KPX racute omacron -45
-KPX racute oslash -45
-KPX racute otilde -45
-KPX racute period -111
-KPX racute q -37
-KPX racute s -10
-KPX racute sacute -10
-KPX racute scaron -10
-KPX racute scedilla -10
-KPX racute scommaaccent -10
-KPX rcaron a -15
-KPX rcaron aacute -15
-KPX rcaron abreve -15
-KPX rcaron acircumflex -15
-KPX rcaron adieresis -15
-KPX rcaron agrave -15
-KPX rcaron amacron -15
-KPX rcaron aogonek -15
-KPX rcaron aring -15
-KPX rcaron atilde -15
-KPX rcaron c -37
-KPX rcaron cacute -37
-KPX rcaron ccaron -37
-KPX rcaron ccedilla -37
-KPX rcaron comma -111
-KPX rcaron d -37
-KPX rcaron dcroat -37
-KPX rcaron e -37
-KPX rcaron eacute -37
-KPX rcaron ecaron -37
-KPX rcaron ecircumflex -37
-KPX rcaron edieresis -37
-KPX rcaron edotaccent -37
-KPX rcaron egrave -37
-KPX rcaron emacron -37
-KPX rcaron eogonek -37
-KPX rcaron g -37
-KPX rcaron gbreve -37
-KPX rcaron gcommaaccent -37
-KPX rcaron hyphen -20
-KPX rcaron o -45
-KPX rcaron oacute -45
-KPX rcaron ocircumflex -45
-KPX rcaron odieresis -45
-KPX rcaron ograve -45
-KPX rcaron ohungarumlaut -45
-KPX rcaron omacron -45
-KPX rcaron oslash -45
-KPX rcaron otilde -45
-KPX rcaron period -111
-KPX rcaron q -37
-KPX rcaron s -10
-KPX rcaron sacute -10
-KPX rcaron scaron -10
-KPX rcaron scedilla -10
-KPX rcaron scommaaccent -10
-KPX rcommaaccent a -15
-KPX rcommaaccent aacute -15
-KPX rcommaaccent abreve -15
-KPX rcommaaccent acircumflex -15
-KPX rcommaaccent adieresis -15
-KPX rcommaaccent agrave -15
-KPX rcommaaccent amacron -15
-KPX rcommaaccent aogonek -15
-KPX rcommaaccent aring -15
-KPX rcommaaccent atilde -15
-KPX rcommaaccent c -37
-KPX rcommaaccent cacute -37
-KPX rcommaaccent ccaron -37
-KPX rcommaaccent ccedilla -37
-KPX rcommaaccent comma -111
-KPX rcommaaccent d -37
-KPX rcommaaccent dcroat -37
-KPX rcommaaccent e -37
-KPX rcommaaccent eacute -37
-KPX rcommaaccent ecaron -37
-KPX rcommaaccent ecircumflex -37
-KPX rcommaaccent edieresis -37
-KPX rcommaaccent edotaccent -37
-KPX rcommaaccent egrave -37
-KPX rcommaaccent emacron -37
-KPX rcommaaccent eogonek -37
-KPX rcommaaccent g -37
-KPX rcommaaccent gbreve -37
-KPX rcommaaccent gcommaaccent -37
-KPX rcommaaccent hyphen -20
-KPX rcommaaccent o -45
-KPX rcommaaccent oacute -45
-KPX rcommaaccent ocircumflex -45
-KPX rcommaaccent odieresis -45
-KPX rcommaaccent ograve -45
-KPX rcommaaccent ohungarumlaut -45
-KPX rcommaaccent omacron -45
-KPX rcommaaccent oslash -45
-KPX rcommaaccent otilde -45
-KPX rcommaaccent period -111
-KPX rcommaaccent q -37
-KPX rcommaaccent s -10
-KPX rcommaaccent sacute -10
-KPX rcommaaccent scaron -10
-KPX rcommaaccent scedilla -10
-KPX rcommaaccent scommaaccent -10
-KPX space A -18
-KPX space Aacute -18
-KPX space Abreve -18
-KPX space Acircumflex -18
-KPX space Adieresis -18
-KPX space Agrave -18
-KPX space Amacron -18
-KPX space Aogonek -18
-KPX space Aring -18
-KPX space Atilde -18
-KPX space T -18
-KPX space Tcaron -18
-KPX space Tcommaaccent -18
-KPX space V -35
-KPX space W -40
-KPX space Y -75
-KPX space Yacute -75
-KPX space Ydieresis -75
-KPX v comma -74
-KPX v period -74
-KPX w comma -74
-KPX w period -74
-KPX y comma -55
-KPX y period -55
-KPX yacute comma -55
-KPX yacute period -55
-KPX ydieresis comma -55
-KPX ydieresis period -55
-EndKernPairs
-EndKernData
-EndFontMetrics
diff --git a/admin/survey/Fonts/Times-Roman.afm b/admin/survey/Fonts/Times-Roman.afm
deleted file mode 100644
index 2680669..0000000
--- a/admin/survey/Fonts/Times-Roman.afm
+++ /dev/null
@@ -1,2419 +0,0 @@
-StartFontMetrics 4.1
-Comment Copyright (c) 1985, 1987, 1989, 1990, 1993, 1997 Adobe Systems Incorporated. All Rights Reserved.
-Comment Creation Date: Thu May 1 12:49:17 1997
-Comment UniqueID 43068
-Comment VMusage 43909 54934
-FontName Times-Roman
-FullName Times Roman
-FamilyName Times
-Weight Roman
-ItalicAngle 0
-IsFixedPitch false
-CharacterSet ExtendedRoman
-FontBBox -168 -218 1000 898
-UnderlinePosition -100
-UnderlineThickness 50
-Version 002.000
-Notice Copyright (c) 1985, 1987, 1989, 1990, 1993, 1997 Adobe Systems Incorporated. All Rights Reserved.Times is a trademark of Linotype-Hell AG and/or its subsidiaries.
-EncodingScheme AdobeStandardEncoding
-CapHeight 662
-XHeight 450
-Ascender 683
-Descender -217
-StdHW 28
-StdVW 84
-StartCharMetrics 315
-C 32 ; WX 250 ; N space ; B 0 0 0 0 ;
-C 33 ; WX 333 ; N exclam ; B 130 -9 238 676 ;
-C 34 ; WX 408 ; N quotedbl ; B 77 431 331 676 ;
-C 35 ; WX 500 ; N numbersign ; B 5 0 496 662 ;
-C 36 ; WX 500 ; N dollar ; B 44 -87 457 727 ;
-C 37 ; WX 833 ; N percent ; B 61 -13 772 676 ;
-C 38 ; WX 778 ; N ampersand ; B 42 -13 750 676 ;
-C 39 ; WX 333 ; N quoteright ; B 79 433 218 676 ;
-C 40 ; WX 333 ; N parenleft ; B 48 -177 304 676 ;
-C 41 ; WX 333 ; N parenright ; B 29 -177 285 676 ;
-C 42 ; WX 500 ; N asterisk ; B 69 265 432 676 ;
-C 43 ; WX 564 ; N plus ; B 30 0 534 506 ;
-C 44 ; WX 250 ; N comma ; B 56 -141 195 102 ;
-C 45 ; WX 333 ; N hyphen ; B 39 194 285 257 ;
-C 46 ; WX 250 ; N period ; B 70 -11 181 100 ;
-C 47 ; WX 278 ; N slash ; B -9 -14 287 676 ;
-C 48 ; WX 500 ; N zero ; B 24 -14 476 676 ;
-C 49 ; WX 500 ; N one ; B 111 0 394 676 ;
-C 50 ; WX 500 ; N two ; B 30 0 475 676 ;
-C 51 ; WX 500 ; N three ; B 43 -14 431 676 ;
-C 52 ; WX 500 ; N four ; B 12 0 472 676 ;
-C 53 ; WX 500 ; N five ; B 32 -14 438 688 ;
-C 54 ; WX 500 ; N six ; B 34 -14 468 684 ;
-C 55 ; WX 500 ; N seven ; B 20 -8 449 662 ;
-C 56 ; WX 500 ; N eight ; B 56 -14 445 676 ;
-C 57 ; WX 500 ; N nine ; B 30 -22 459 676 ;
-C 58 ; WX 278 ; N colon ; B 81 -11 192 459 ;
-C 59 ; WX 278 ; N semicolon ; B 80 -141 219 459 ;
-C 60 ; WX 564 ; N less ; B 28 -8 536 514 ;
-C 61 ; WX 564 ; N equal ; B 30 120 534 386 ;
-C 62 ; WX 564 ; N greater ; B 28 -8 536 514 ;
-C 63 ; WX 444 ; N question ; B 68 -8 414 676 ;
-C 64 ; WX 921 ; N at ; B 116 -14 809 676 ;
-C 65 ; WX 722 ; N A ; B 15 0 706 674 ;
-C 66 ; WX 667 ; N B ; B 17 0 593 662 ;
-C 67 ; WX 667 ; N C ; B 28 -14 633 676 ;
-C 68 ; WX 722 ; N D ; B 16 0 685 662 ;
-C 69 ; WX 611 ; N E ; B 12 0 597 662 ;
-C 70 ; WX 556 ; N F ; B 12 0 546 662 ;
-C 71 ; WX 722 ; N G ; B 32 -14 709 676 ;
-C 72 ; WX 722 ; N H ; B 19 0 702 662 ;
-C 73 ; WX 333 ; N I ; B 18 0 315 662 ;
-C 74 ; WX 389 ; N J ; B 10 -14 370 662 ;
-C 75 ; WX 722 ; N K ; B 34 0 723 662 ;
-C 76 ; WX 611 ; N L ; B 12 0 598 662 ;
-C 77 ; WX 889 ; N M ; B 12 0 863 662 ;
-C 78 ; WX 722 ; N N ; B 12 -11 707 662 ;
-C 79 ; WX 722 ; N O ; B 34 -14 688 676 ;
-C 80 ; WX 556 ; N P ; B 16 0 542 662 ;
-C 81 ; WX 722 ; N Q ; B 34 -178 701 676 ;
-C 82 ; WX 667 ; N R ; B 17 0 659 662 ;
-C 83 ; WX 556 ; N S ; B 42 -14 491 676 ;
-C 84 ; WX 611 ; N T ; B 17 0 593 662 ;
-C 85 ; WX 722 ; N U ; B 14 -14 705 662 ;
-C 86 ; WX 722 ; N V ; B 16 -11 697 662 ;
-C 87 ; WX 944 ; N W ; B 5 -11 932 662 ;
-C 88 ; WX 722 ; N X ; B 10 0 704 662 ;
-C 89 ; WX 722 ; N Y ; B 22 0 703 662 ;
-C 90 ; WX 611 ; N Z ; B 9 0 597 662 ;
-C 91 ; WX 333 ; N bracketleft ; B 88 -156 299 662 ;
-C 92 ; WX 278 ; N backslash ; B -9 -14 287 676 ;
-C 93 ; WX 333 ; N bracketright ; B 34 -156 245 662 ;
-C 94 ; WX 469 ; N asciicircum ; B 24 297 446 662 ;
-C 95 ; WX 500 ; N underscore ; B 0 -125 500 -75 ;
-C 96 ; WX 333 ; N quoteleft ; B 115 433 254 676 ;
-C 97 ; WX 444 ; N a ; B 37 -10 442 460 ;
-C 98 ; WX 500 ; N b ; B 3 -10 468 683 ;
-C 99 ; WX 444 ; N c ; B 25 -10 412 460 ;
-C 100 ; WX 500 ; N d ; B 27 -10 491 683 ;
-C 101 ; WX 444 ; N e ; B 25 -10 424 460 ;
-C 102 ; WX 333 ; N f ; B 20 0 383 683 ; L i fi ; L l fl ;
-C 103 ; WX 500 ; N g ; B 28 -218 470 460 ;
-C 104 ; WX 500 ; N h ; B 9 0 487 683 ;
-C 105 ; WX 278 ; N i ; B 16 0 253 683 ;
-C 106 ; WX 278 ; N j ; B -70 -218 194 683 ;
-C 107 ; WX 500 ; N k ; B 7 0 505 683 ;
-C 108 ; WX 278 ; N l ; B 19 0 257 683 ;
-C 109 ; WX 778 ; N m ; B 16 0 775 460 ;
-C 110 ; WX 500 ; N n ; B 16 0 485 460 ;
-C 111 ; WX 500 ; N o ; B 29 -10 470 460 ;
-C 112 ; WX 500 ; N p ; B 5 -217 470 460 ;
-C 113 ; WX 500 ; N q ; B 24 -217 488 460 ;
-C 114 ; WX 333 ; N r ; B 5 0 335 460 ;
-C 115 ; WX 389 ; N s ; B 51 -10 348 460 ;
-C 116 ; WX 278 ; N t ; B 13 -10 279 579 ;
-C 117 ; WX 500 ; N u ; B 9 -10 479 450 ;
-C 118 ; WX 500 ; N v ; B 19 -14 477 450 ;
-C 119 ; WX 722 ; N w ; B 21 -14 694 450 ;
-C 120 ; WX 500 ; N x ; B 17 0 479 450 ;
-C 121 ; WX 500 ; N y ; B 14 -218 475 450 ;
-C 122 ; WX 444 ; N z ; B 27 0 418 450 ;
-C 123 ; WX 480 ; N braceleft ; B 100 -181 350 680 ;
-C 124 ; WX 200 ; N bar ; B 67 -218 133 782 ;
-C 125 ; WX 480 ; N braceright ; B 130 -181 380 680 ;
-C 126 ; WX 541 ; N asciitilde ; B 40 183 502 323 ;
-C 161 ; WX 333 ; N exclamdown ; B 97 -218 205 467 ;
-C 162 ; WX 500 ; N cent ; B 53 -138 448 579 ;
-C 163 ; WX 500 ; N sterling ; B 12 -8 490 676 ;
-C 164 ; WX 167 ; N fraction ; B -168 -14 331 676 ;
-C 165 ; WX 500 ; N yen ; B -53 0 512 662 ;
-C 166 ; WX 500 ; N florin ; B 7 -189 490 676 ;
-C 167 ; WX 500 ; N section ; B 70 -148 426 676 ;
-C 168 ; WX 500 ; N currency ; B -22 58 522 602 ;
-C 169 ; WX 180 ; N quotesingle ; B 48 431 133 676 ;
-C 170 ; WX 444 ; N quotedblleft ; B 43 433 414 676 ;
-C 171 ; WX 500 ; N guillemotleft ; B 42 33 456 416 ;
-C 172 ; WX 333 ; N guilsinglleft ; B 63 33 285 416 ;
-C 173 ; WX 333 ; N guilsinglright ; B 48 33 270 416 ;
-C 174 ; WX 556 ; N fi ; B 31 0 521 683 ;
-C 175 ; WX 556 ; N fl ; B 32 0 521 683 ;
-C 177 ; WX 500 ; N endash ; B 0 201 500 250 ;
-C 178 ; WX 500 ; N dagger ; B 59 -149 442 676 ;
-C 179 ; WX 500 ; N daggerdbl ; B 58 -153 442 676 ;
-C 180 ; WX 250 ; N periodcentered ; B 70 199 181 310 ;
-C 182 ; WX 453 ; N paragraph ; B -22 -154 450 662 ;
-C 183 ; WX 350 ; N bullet ; B 40 196 310 466 ;
-C 184 ; WX 333 ; N quotesinglbase ; B 79 -141 218 102 ;
-C 185 ; WX 444 ; N quotedblbase ; B 45 -141 416 102 ;
-C 186 ; WX 444 ; N quotedblright ; B 30 433 401 676 ;
-C 187 ; WX 500 ; N guillemotright ; B 44 33 458 416 ;
-C 188 ; WX 1000 ; N ellipsis ; B 111 -11 888 100 ;
-C 189 ; WX 1000 ; N perthousand ; B 7 -19 994 706 ;
-C 191 ; WX 444 ; N questiondown ; B 30 -218 376 466 ;
-C 193 ; WX 333 ; N grave ; B 19 507 242 678 ;
-C 194 ; WX 333 ; N acute ; B 93 507 317 678 ;
-C 195 ; WX 333 ; N circumflex ; B 11 507 322 674 ;
-C 196 ; WX 333 ; N tilde ; B 1 532 331 638 ;
-C 197 ; WX 333 ; N macron ; B 11 547 322 601 ;
-C 198 ; WX 333 ; N breve ; B 26 507 307 664 ;
-C 199 ; WX 333 ; N dotaccent ; B 118 581 216 681 ;
-C 200 ; WX 333 ; N dieresis ; B 18 581 315 681 ;
-C 202 ; WX 333 ; N ring ; B 67 512 266 711 ;
-C 203 ; WX 333 ; N cedilla ; B 52 -215 261 0 ;
-C 205 ; WX 333 ; N hungarumlaut ; B -3 507 377 678 ;
-C 206 ; WX 333 ; N ogonek ; B 62 -165 243 0 ;
-C 207 ; WX 333 ; N caron ; B 11 507 322 674 ;
-C 208 ; WX 1000 ; N emdash ; B 0 201 1000 250 ;
-C 225 ; WX 889 ; N AE ; B 0 0 863 662 ;
-C 227 ; WX 276 ; N ordfeminine ; B 4 394 270 676 ;
-C 232 ; WX 611 ; N Lslash ; B 12 0 598 662 ;
-C 233 ; WX 722 ; N Oslash ; B 34 -80 688 734 ;
-C 234 ; WX 889 ; N OE ; B 30 -6 885 668 ;
-C 235 ; WX 310 ; N ordmasculine ; B 6 394 304 676 ;
-C 241 ; WX 667 ; N ae ; B 38 -10 632 460 ;
-C 245 ; WX 278 ; N dotlessi ; B 16 0 253 460 ;
-C 248 ; WX 278 ; N lslash ; B 19 0 259 683 ;
-C 249 ; WX 500 ; N oslash ; B 29 -112 470 551 ;
-C 250 ; WX 722 ; N oe ; B 30 -10 690 460 ;
-C 251 ; WX 500 ; N germandbls ; B 12 -9 468 683 ;
-C -1 ; WX 333 ; N Idieresis ; B 18 0 315 835 ;
-C -1 ; WX 444 ; N eacute ; B 25 -10 424 678 ;
-C -1 ; WX 444 ; N abreve ; B 37 -10 442 664 ;
-C -1 ; WX 500 ; N uhungarumlaut ; B 9 -10 501 678 ;
-C -1 ; WX 444 ; N ecaron ; B 25 -10 424 674 ;
-C -1 ; WX 722 ; N Ydieresis ; B 22 0 703 835 ;
-C -1 ; WX 564 ; N divide ; B 30 -10 534 516 ;
-C -1 ; WX 722 ; N Yacute ; B 22 0 703 890 ;
-C -1 ; WX 722 ; N Acircumflex ; B 15 0 706 886 ;
-C -1 ; WX 444 ; N aacute ; B 37 -10 442 678 ;
-C -1 ; WX 722 ; N Ucircumflex ; B 14 -14 705 886 ;
-C -1 ; WX 500 ; N yacute ; B 14 -218 475 678 ;
-C -1 ; WX 389 ; N scommaaccent ; B 51 -218 348 460 ;
-C -1 ; WX 444 ; N ecircumflex ; B 25 -10 424 674 ;
-C -1 ; WX 722 ; N Uring ; B 14 -14 705 898 ;
-C -1 ; WX 722 ; N Udieresis ; B 14 -14 705 835 ;
-C -1 ; WX 444 ; N aogonek ; B 37 -165 469 460 ;
-C -1 ; WX 722 ; N Uacute ; B 14 -14 705 890 ;
-C -1 ; WX 500 ; N uogonek ; B 9 -155 487 450 ;
-C -1 ; WX 611 ; N Edieresis ; B 12 0 597 835 ;
-C -1 ; WX 722 ; N Dcroat ; B 16 0 685 662 ;
-C -1 ; WX 250 ; N commaaccent ; B 59 -218 184 -50 ;
-C -1 ; WX 760 ; N copyright ; B 38 -14 722 676 ;
-C -1 ; WX 611 ; N Emacron ; B 12 0 597 813 ;
-C -1 ; WX 444 ; N ccaron ; B 25 -10 412 674 ;
-C -1 ; WX 444 ; N aring ; B 37 -10 442 711 ;
-C -1 ; WX 722 ; N Ncommaaccent ; B 12 -198 707 662 ;
-C -1 ; WX 278 ; N lacute ; B 19 0 290 890 ;
-C -1 ; WX 444 ; N agrave ; B 37 -10 442 678 ;
-C -1 ; WX 611 ; N Tcommaaccent ; B 17 -218 593 662 ;
-C -1 ; WX 667 ; N Cacute ; B 28 -14 633 890 ;
-C -1 ; WX 444 ; N atilde ; B 37 -10 442 638 ;
-C -1 ; WX 611 ; N Edotaccent ; B 12 0 597 835 ;
-C -1 ; WX 389 ; N scaron ; B 39 -10 350 674 ;
-C -1 ; WX 389 ; N scedilla ; B 51 -215 348 460 ;
-C -1 ; WX 278 ; N iacute ; B 16 0 290 678 ;
-C -1 ; WX 471 ; N lozenge ; B 13 0 459 724 ;
-C -1 ; WX 667 ; N Rcaron ; B 17 0 659 886 ;
-C -1 ; WX 722 ; N Gcommaaccent ; B 32 -218 709 676 ;
-C -1 ; WX 500 ; N ucircumflex ; B 9 -10 479 674 ;
-C -1 ; WX 444 ; N acircumflex ; B 37 -10 442 674 ;
-C -1 ; WX 722 ; N Amacron ; B 15 0 706 813 ;
-C -1 ; WX 333 ; N rcaron ; B 5 0 335 674 ;
-C -1 ; WX 444 ; N ccedilla ; B 25 -215 412 460 ;
-C -1 ; WX 611 ; N Zdotaccent ; B 9 0 597 835 ;
-C -1 ; WX 556 ; N Thorn ; B 16 0 542 662 ;
-C -1 ; WX 722 ; N Omacron ; B 34 -14 688 813 ;
-C -1 ; WX 667 ; N Racute ; B 17 0 659 890 ;
-C -1 ; WX 556 ; N Sacute ; B 42 -14 491 890 ;
-C -1 ; WX 588 ; N dcaron ; B 27 -10 589 695 ;
-C -1 ; WX 722 ; N Umacron ; B 14 -14 705 813 ;
-C -1 ; WX 500 ; N uring ; B 9 -10 479 711 ;
-C -1 ; WX 300 ; N threesuperior ; B 15 262 291 676 ;
-C -1 ; WX 722 ; N Ograve ; B 34 -14 688 890 ;
-C -1 ; WX 722 ; N Agrave ; B 15 0 706 890 ;
-C -1 ; WX 722 ; N Abreve ; B 15 0 706 876 ;
-C -1 ; WX 564 ; N multiply ; B 38 8 527 497 ;
-C -1 ; WX 500 ; N uacute ; B 9 -10 479 678 ;
-C -1 ; WX 611 ; N Tcaron ; B 17 0 593 886 ;
-C -1 ; WX 476 ; N partialdiff ; B 17 -38 459 710 ;
-C -1 ; WX 500 ; N ydieresis ; B 14 -218 475 623 ;
-C -1 ; WX 722 ; N Nacute ; B 12 -11 707 890 ;
-C -1 ; WX 278 ; N icircumflex ; B -16 0 295 674 ;
-C -1 ; WX 611 ; N Ecircumflex ; B 12 0 597 886 ;
-C -1 ; WX 444 ; N adieresis ; B 37 -10 442 623 ;
-C -1 ; WX 444 ; N edieresis ; B 25 -10 424 623 ;
-C -1 ; WX 444 ; N cacute ; B 25 -10 413 678 ;
-C -1 ; WX 500 ; N nacute ; B 16 0 485 678 ;
-C -1 ; WX 500 ; N umacron ; B 9 -10 479 601 ;
-C -1 ; WX 722 ; N Ncaron ; B 12 -11 707 886 ;
-C -1 ; WX 333 ; N Iacute ; B 18 0 317 890 ;
-C -1 ; WX 564 ; N plusminus ; B 30 0 534 506 ;
-C -1 ; WX 200 ; N brokenbar ; B 67 -143 133 707 ;
-C -1 ; WX 760 ; N registered ; B 38 -14 722 676 ;
-C -1 ; WX 722 ; N Gbreve ; B 32 -14 709 876 ;
-C -1 ; WX 333 ; N Idotaccent ; B 18 0 315 835 ;
-C -1 ; WX 600 ; N summation ; B 15 -10 585 706 ;
-C -1 ; WX 611 ; N Egrave ; B 12 0 597 890 ;
-C -1 ; WX 333 ; N racute ; B 5 0 335 678 ;
-C -1 ; WX 500 ; N omacron ; B 29 -10 470 601 ;
-C -1 ; WX 611 ; N Zacute ; B 9 0 597 890 ;
-C -1 ; WX 611 ; N Zcaron ; B 9 0 597 886 ;
-C -1 ; WX 549 ; N greaterequal ; B 26 0 523 666 ;
-C -1 ; WX 722 ; N Eth ; B 16 0 685 662 ;
-C -1 ; WX 667 ; N Ccedilla ; B 28 -215 633 676 ;
-C -1 ; WX 278 ; N lcommaaccent ; B 19 -218 257 683 ;
-C -1 ; WX 326 ; N tcaron ; B 13 -10 318 722 ;
-C -1 ; WX 444 ; N eogonek ; B 25 -165 424 460 ;
-C -1 ; WX 722 ; N Uogonek ; B 14 -165 705 662 ;
-C -1 ; WX 722 ; N Aacute ; B 15 0 706 890 ;
-C -1 ; WX 722 ; N Adieresis ; B 15 0 706 835 ;
-C -1 ; WX 444 ; N egrave ; B 25 -10 424 678 ;
-C -1 ; WX 444 ; N zacute ; B 27 0 418 678 ;
-C -1 ; WX 278 ; N iogonek ; B 16 -165 265 683 ;
-C -1 ; WX 722 ; N Oacute ; B 34 -14 688 890 ;
-C -1 ; WX 500 ; N oacute ; B 29 -10 470 678 ;
-C -1 ; WX 444 ; N amacron ; B 37 -10 442 601 ;
-C -1 ; WX 389 ; N sacute ; B 51 -10 348 678 ;
-C -1 ; WX 278 ; N idieresis ; B -9 0 288 623 ;
-C -1 ; WX 722 ; N Ocircumflex ; B 34 -14 688 886 ;
-C -1 ; WX 722 ; N Ugrave ; B 14 -14 705 890 ;
-C -1 ; WX 612 ; N Delta ; B 6 0 608 688 ;
-C -1 ; WX 500 ; N thorn ; B 5 -217 470 683 ;
-C -1 ; WX 300 ; N twosuperior ; B 1 270 296 676 ;
-C -1 ; WX 722 ; N Odieresis ; B 34 -14 688 835 ;
-C -1 ; WX 500 ; N mu ; B 36 -218 512 450 ;
-C -1 ; WX 278 ; N igrave ; B -8 0 253 678 ;
-C -1 ; WX 500 ; N ohungarumlaut ; B 29 -10 491 678 ;
-C -1 ; WX 611 ; N Eogonek ; B 12 -165 597 662 ;
-C -1 ; WX 500 ; N dcroat ; B 27 -10 500 683 ;
-C -1 ; WX 750 ; N threequarters ; B 15 -14 718 676 ;
-C -1 ; WX 556 ; N Scedilla ; B 42 -215 491 676 ;
-C -1 ; WX 344 ; N lcaron ; B 19 0 347 695 ;
-C -1 ; WX 722 ; N Kcommaaccent ; B 34 -198 723 662 ;
-C -1 ; WX 611 ; N Lacute ; B 12 0 598 890 ;
-C -1 ; WX 980 ; N trademark ; B 30 256 957 662 ;
-C -1 ; WX 444 ; N edotaccent ; B 25 -10 424 623 ;
-C -1 ; WX 333 ; N Igrave ; B 18 0 315 890 ;
-C -1 ; WX 333 ; N Imacron ; B 11 0 322 813 ;
-C -1 ; WX 611 ; N Lcaron ; B 12 0 598 676 ;
-C -1 ; WX 750 ; N onehalf ; B 31 -14 746 676 ;
-C -1 ; WX 549 ; N lessequal ; B 26 0 523 666 ;
-C -1 ; WX 500 ; N ocircumflex ; B 29 -10 470 674 ;
-C -1 ; WX 500 ; N ntilde ; B 16 0 485 638 ;
-C -1 ; WX 722 ; N Uhungarumlaut ; B 14 -14 705 890 ;
-C -1 ; WX 611 ; N Eacute ; B 12 0 597 890 ;
-C -1 ; WX 444 ; N emacron ; B 25 -10 424 601 ;
-C -1 ; WX 500 ; N gbreve ; B 28 -218 470 664 ;
-C -1 ; WX 750 ; N onequarter ; B 37 -14 718 676 ;
-C -1 ; WX 556 ; N Scaron ; B 42 -14 491 886 ;
-C -1 ; WX 556 ; N Scommaaccent ; B 42 -218 491 676 ;
-C -1 ; WX 722 ; N Ohungarumlaut ; B 34 -14 688 890 ;
-C -1 ; WX 400 ; N degree ; B 57 390 343 676 ;
-C -1 ; WX 500 ; N ograve ; B 29 -10 470 678 ;
-C -1 ; WX 667 ; N Ccaron ; B 28 -14 633 886 ;
-C -1 ; WX 500 ; N ugrave ; B 9 -10 479 678 ;
-C -1 ; WX 453 ; N radical ; B 2 -60 452 768 ;
-C -1 ; WX 722 ; N Dcaron ; B 16 0 685 886 ;
-C -1 ; WX 333 ; N rcommaaccent ; B 5 -218 335 460 ;
-C -1 ; WX 722 ; N Ntilde ; B 12 -11 707 850 ;
-C -1 ; WX 500 ; N otilde ; B 29 -10 470 638 ;
-C -1 ; WX 667 ; N Rcommaaccent ; B 17 -198 659 662 ;
-C -1 ; WX 611 ; N Lcommaaccent ; B 12 -218 598 662 ;
-C -1 ; WX 722 ; N Atilde ; B 15 0 706 850 ;
-C -1 ; WX 722 ; N Aogonek ; B 15 -165 738 674 ;
-C -1 ; WX 722 ; N Aring ; B 15 0 706 898 ;
-C -1 ; WX 722 ; N Otilde ; B 34 -14 688 850 ;
-C -1 ; WX 444 ; N zdotaccent ; B 27 0 418 623 ;
-C -1 ; WX 611 ; N Ecaron ; B 12 0 597 886 ;
-C -1 ; WX 333 ; N Iogonek ; B 18 -165 315 662 ;
-C -1 ; WX 500 ; N kcommaaccent ; B 7 -218 505 683 ;
-C -1 ; WX 564 ; N minus ; B 30 220 534 286 ;
-C -1 ; WX 333 ; N Icircumflex ; B 11 0 322 886 ;
-C -1 ; WX 500 ; N ncaron ; B 16 0 485 674 ;
-C -1 ; WX 278 ; N tcommaaccent ; B 13 -218 279 579 ;
-C -1 ; WX 564 ; N logicalnot ; B 30 108 534 386 ;
-C -1 ; WX 500 ; N odieresis ; B 29 -10 470 623 ;
-C -1 ; WX 500 ; N udieresis ; B 9 -10 479 623 ;
-C -1 ; WX 549 ; N notequal ; B 12 -31 537 547 ;
-C -1 ; WX 500 ; N gcommaaccent ; B 28 -218 470 749 ;
-C -1 ; WX 500 ; N eth ; B 29 -10 471 686 ;
-C -1 ; WX 444 ; N zcaron ; B 27 0 418 674 ;
-C -1 ; WX 500 ; N ncommaaccent ; B 16 -218 485 460 ;
-C -1 ; WX 300 ; N onesuperior ; B 57 270 248 676 ;
-C -1 ; WX 278 ; N imacron ; B 6 0 271 601 ;
-C -1 ; WX 500 ; N Euro ; B 0 0 0 0 ;
-EndCharMetrics
-StartKernData
-StartKernPairs 2073
-KPX A C -40
-KPX A Cacute -40
-KPX A Ccaron -40
-KPX A Ccedilla -40
-KPX A G -40
-KPX A Gbreve -40
-KPX A Gcommaaccent -40
-KPX A O -55
-KPX A Oacute -55
-KPX A Ocircumflex -55
-KPX A Odieresis -55
-KPX A Ograve -55
-KPX A Ohungarumlaut -55
-KPX A Omacron -55
-KPX A Oslash -55
-KPX A Otilde -55
-KPX A Q -55
-KPX A T -111
-KPX A Tcaron -111
-KPX A Tcommaaccent -111
-KPX A U -55
-KPX A Uacute -55
-KPX A Ucircumflex -55
-KPX A Udieresis -55
-KPX A Ugrave -55
-KPX A Uhungarumlaut -55
-KPX A Umacron -55
-KPX A Uogonek -55
-KPX A Uring -55
-KPX A V -135
-KPX A W -90
-KPX A Y -105
-KPX A Yacute -105
-KPX A Ydieresis -105
-KPX A quoteright -111
-KPX A v -74
-KPX A w -92
-KPX A y -92
-KPX A yacute -92
-KPX A ydieresis -92
-KPX Aacute C -40
-KPX Aacute Cacute -40
-KPX Aacute Ccaron -40
-KPX Aacute Ccedilla -40
-KPX Aacute G -40
-KPX Aacute Gbreve -40
-KPX Aacute Gcommaaccent -40
-KPX Aacute O -55
-KPX Aacute Oacute -55
-KPX Aacute Ocircumflex -55
-KPX Aacute Odieresis -55
-KPX Aacute Ograve -55
-KPX Aacute Ohungarumlaut -55
-KPX Aacute Omacron -55
-KPX Aacute Oslash -55
-KPX Aacute Otilde -55
-KPX Aacute Q -55
-KPX Aacute T -111
-KPX Aacute Tcaron -111
-KPX Aacute Tcommaaccent -111
-KPX Aacute U -55
-KPX Aacute Uacute -55
-KPX Aacute Ucircumflex -55
-KPX Aacute Udieresis -55
-KPX Aacute Ugrave -55
-KPX Aacute Uhungarumlaut -55
-KPX Aacute Umacron -55
-KPX Aacute Uogonek -55
-KPX Aacute Uring -55
-KPX Aacute V -135
-KPX Aacute W -90
-KPX Aacute Y -105
-KPX Aacute Yacute -105
-KPX Aacute Ydieresis -105
-KPX Aacute quoteright -111
-KPX Aacute v -74
-KPX Aacute w -92
-KPX Aacute y -92
-KPX Aacute yacute -92
-KPX Aacute ydieresis -92
-KPX Abreve C -40
-KPX Abreve Cacute -40
-KPX Abreve Ccaron -40
-KPX Abreve Ccedilla -40
-KPX Abreve G -40
-KPX Abreve Gbreve -40
-KPX Abreve Gcommaaccent -40
-KPX Abreve O -55
-KPX Abreve Oacute -55
-KPX Abreve Ocircumflex -55
-KPX Abreve Odieresis -55
-KPX Abreve Ograve -55
-KPX Abreve Ohungarumlaut -55
-KPX Abreve Omacron -55
-KPX Abreve Oslash -55
-KPX Abreve Otilde -55
-KPX Abreve Q -55
-KPX Abreve T -111
-KPX Abreve Tcaron -111
-KPX Abreve Tcommaaccent -111
-KPX Abreve U -55
-KPX Abreve Uacute -55
-KPX Abreve Ucircumflex -55
-KPX Abreve Udieresis -55
-KPX Abreve Ugrave -55
-KPX Abreve Uhungarumlaut -55
-KPX Abreve Umacron -55
-KPX Abreve Uogonek -55
-KPX Abreve Uring -55
-KPX Abreve V -135
-KPX Abreve W -90
-KPX Abreve Y -105
-KPX Abreve Yacute -105
-KPX Abreve Ydieresis -105
-KPX Abreve quoteright -111
-KPX Abreve v -74
-KPX Abreve w -92
-KPX Abreve y -92
-KPX Abreve yacute -92
-KPX Abreve ydieresis -92
-KPX Acircumflex C -40
-KPX Acircumflex Cacute -40
-KPX Acircumflex Ccaron -40
-KPX Acircumflex Ccedilla -40
-KPX Acircumflex G -40
-KPX Acircumflex Gbreve -40
-KPX Acircumflex Gcommaaccent -40
-KPX Acircumflex O -55
-KPX Acircumflex Oacute -55
-KPX Acircumflex Ocircumflex -55
-KPX Acircumflex Odieresis -55
-KPX Acircumflex Ograve -55
-KPX Acircumflex Ohungarumlaut -55
-KPX Acircumflex Omacron -55
-KPX Acircumflex Oslash -55
-KPX Acircumflex Otilde -55
-KPX Acircumflex Q -55
-KPX Acircumflex T -111
-KPX Acircumflex Tcaron -111
-KPX Acircumflex Tcommaaccent -111
-KPX Acircumflex U -55
-KPX Acircumflex Uacute -55
-KPX Acircumflex Ucircumflex -55
-KPX Acircumflex Udieresis -55
-KPX Acircumflex Ugrave -55
-KPX Acircumflex Uhungarumlaut -55
-KPX Acircumflex Umacron -55
-KPX Acircumflex Uogonek -55
-KPX Acircumflex Uring -55
-KPX Acircumflex V -135
-KPX Acircumflex W -90
-KPX Acircumflex Y -105
-KPX Acircumflex Yacute -105
-KPX Acircumflex Ydieresis -105
-KPX Acircumflex quoteright -111
-KPX Acircumflex v -74
-KPX Acircumflex w -92
-KPX Acircumflex y -92
-KPX Acircumflex yacute -92
-KPX Acircumflex ydieresis -92
-KPX Adieresis C -40
-KPX Adieresis Cacute -40
-KPX Adieresis Ccaron -40
-KPX Adieresis Ccedilla -40
-KPX Adieresis G -40
-KPX Adieresis Gbreve -40
-KPX Adieresis Gcommaaccent -40
-KPX Adieresis O -55
-KPX Adieresis Oacute -55
-KPX Adieresis Ocircumflex -55
-KPX Adieresis Odieresis -55
-KPX Adieresis Ograve -55
-KPX Adieresis Ohungarumlaut -55
-KPX Adieresis Omacron -55
-KPX Adieresis Oslash -55
-KPX Adieresis Otilde -55
-KPX Adieresis Q -55
-KPX Adieresis T -111
-KPX Adieresis Tcaron -111
-KPX Adieresis Tcommaaccent -111
-KPX Adieresis U -55
-KPX Adieresis Uacute -55
-KPX Adieresis Ucircumflex -55
-KPX Adieresis Udieresis -55
-KPX Adieresis Ugrave -55
-KPX Adieresis Uhungarumlaut -55
-KPX Adieresis Umacron -55
-KPX Adieresis Uogonek -55
-KPX Adieresis Uring -55
-KPX Adieresis V -135
-KPX Adieresis W -90
-KPX Adieresis Y -105
-KPX Adieresis Yacute -105
-KPX Adieresis Ydieresis -105
-KPX Adieresis quoteright -111
-KPX Adieresis v -74
-KPX Adieresis w -92
-KPX Adieresis y -92
-KPX Adieresis yacute -92
-KPX Adieresis ydieresis -92
-KPX Agrave C -40
-KPX Agrave Cacute -40
-KPX Agrave Ccaron -40
-KPX Agrave Ccedilla -40
-KPX Agrave G -40
-KPX Agrave Gbreve -40
-KPX Agrave Gcommaaccent -40
-KPX Agrave O -55
-KPX Agrave Oacute -55
-KPX Agrave Ocircumflex -55
-KPX Agrave Odieresis -55
-KPX Agrave Ograve -55
-KPX Agrave Ohungarumlaut -55
-KPX Agrave Omacron -55
-KPX Agrave Oslash -55
-KPX Agrave Otilde -55
-KPX Agrave Q -55
-KPX Agrave T -111
-KPX Agrave Tcaron -111
-KPX Agrave Tcommaaccent -111
-KPX Agrave U -55
-KPX Agrave Uacute -55
-KPX Agrave Ucircumflex -55
-KPX Agrave Udieresis -55
-KPX Agrave Ugrave -55
-KPX Agrave Uhungarumlaut -55
-KPX Agrave Umacron -55
-KPX Agrave Uogonek -55
-KPX Agrave Uring -55
-KPX Agrave V -135
-KPX Agrave W -90
-KPX Agrave Y -105
-KPX Agrave Yacute -105
-KPX Agrave Ydieresis -105
-KPX Agrave quoteright -111
-KPX Agrave v -74
-KPX Agrave w -92
-KPX Agrave y -92
-KPX Agrave yacute -92
-KPX Agrave ydieresis -92
-KPX Amacron C -40
-KPX Amacron Cacute -40
-KPX Amacron Ccaron -40
-KPX Amacron Ccedilla -40
-KPX Amacron G -40
-KPX Amacron Gbreve -40
-KPX Amacron Gcommaaccent -40
-KPX Amacron O -55
-KPX Amacron Oacute -55
-KPX Amacron Ocircumflex -55
-KPX Amacron Odieresis -55
-KPX Amacron Ograve -55
-KPX Amacron Ohungarumlaut -55
-KPX Amacron Omacron -55
-KPX Amacron Oslash -55
-KPX Amacron Otilde -55
-KPX Amacron Q -55
-KPX Amacron T -111
-KPX Amacron Tcaron -111
-KPX Amacron Tcommaaccent -111
-KPX Amacron U -55
-KPX Amacron Uacute -55
-KPX Amacron Ucircumflex -55
-KPX Amacron Udieresis -55
-KPX Amacron Ugrave -55
-KPX Amacron Uhungarumlaut -55
-KPX Amacron Umacron -55
-KPX Amacron Uogonek -55
-KPX Amacron Uring -55
-KPX Amacron V -135
-KPX Amacron W -90
-KPX Amacron Y -105
-KPX Amacron Yacute -105
-KPX Amacron Ydieresis -105
-KPX Amacron quoteright -111
-KPX Amacron v -74
-KPX Amacron w -92
-KPX Amacron y -92
-KPX Amacron yacute -92
-KPX Amacron ydieresis -92
-KPX Aogonek C -40
-KPX Aogonek Cacute -40
-KPX Aogonek Ccaron -40
-KPX Aogonek Ccedilla -40
-KPX Aogonek G -40
-KPX Aogonek Gbreve -40
-KPX Aogonek Gcommaaccent -40
-KPX Aogonek O -55
-KPX Aogonek Oacute -55
-KPX Aogonek Ocircumflex -55
-KPX Aogonek Odieresis -55
-KPX Aogonek Ograve -55
-KPX Aogonek Ohungarumlaut -55
-KPX Aogonek Omacron -55
-KPX Aogonek Oslash -55
-KPX Aogonek Otilde -55
-KPX Aogonek Q -55
-KPX Aogonek T -111
-KPX Aogonek Tcaron -111
-KPX Aogonek Tcommaaccent -111
-KPX Aogonek U -55
-KPX Aogonek Uacute -55
-KPX Aogonek Ucircumflex -55
-KPX Aogonek Udieresis -55
-KPX Aogonek Ugrave -55
-KPX Aogonek Uhungarumlaut -55
-KPX Aogonek Umacron -55
-KPX Aogonek Uogonek -55
-KPX Aogonek Uring -55
-KPX Aogonek V -135
-KPX Aogonek W -90
-KPX Aogonek Y -105
-KPX Aogonek Yacute -105
-KPX Aogonek Ydieresis -105
-KPX Aogonek quoteright -111
-KPX Aogonek v -74
-KPX Aogonek w -52
-KPX Aogonek y -52
-KPX Aogonek yacute -52
-KPX Aogonek ydieresis -52
-KPX Aring C -40
-KPX Aring Cacute -40
-KPX Aring Ccaron -40
-KPX Aring Ccedilla -40
-KPX Aring G -40
-KPX Aring Gbreve -40
-KPX Aring Gcommaaccent -40
-KPX Aring O -55
-KPX Aring Oacute -55
-KPX Aring Ocircumflex -55
-KPX Aring Odieresis -55
-KPX Aring Ograve -55
-KPX Aring Ohungarumlaut -55
-KPX Aring Omacron -55
-KPX Aring Oslash -55
-KPX Aring Otilde -55
-KPX Aring Q -55
-KPX Aring T -111
-KPX Aring Tcaron -111
-KPX Aring Tcommaaccent -111
-KPX Aring U -55
-KPX Aring Uacute -55
-KPX Aring Ucircumflex -55
-KPX Aring Udieresis -55
-KPX Aring Ugrave -55
-KPX Aring Uhungarumlaut -55
-KPX Aring Umacron -55
-KPX Aring Uogonek -55
-KPX Aring Uring -55
-KPX Aring V -135
-KPX Aring W -90
-KPX Aring Y -105
-KPX Aring Yacute -105
-KPX Aring Ydieresis -105
-KPX Aring quoteright -111
-KPX Aring v -74
-KPX Aring w -92
-KPX Aring y -92
-KPX Aring yacute -92
-KPX Aring ydieresis -92
-KPX Atilde C -40
-KPX Atilde Cacute -40
-KPX Atilde Ccaron -40
-KPX Atilde Ccedilla -40
-KPX Atilde G -40
-KPX Atilde Gbreve -40
-KPX Atilde Gcommaaccent -40
-KPX Atilde O -55
-KPX Atilde Oacute -55
-KPX Atilde Ocircumflex -55
-KPX Atilde Odieresis -55
-KPX Atilde Ograve -55
-KPX Atilde Ohungarumlaut -55
-KPX Atilde Omacron -55
-KPX Atilde Oslash -55
-KPX Atilde Otilde -55
-KPX Atilde Q -55
-KPX Atilde T -111
-KPX Atilde Tcaron -111
-KPX Atilde Tcommaaccent -111
-KPX Atilde U -55
-KPX Atilde Uacute -55
-KPX Atilde Ucircumflex -55
-KPX Atilde Udieresis -55
-KPX Atilde Ugrave -55
-KPX Atilde Uhungarumlaut -55
-KPX Atilde Umacron -55
-KPX Atilde Uogonek -55
-KPX Atilde Uring -55
-KPX Atilde V -135
-KPX Atilde W -90
-KPX Atilde Y -105
-KPX Atilde Yacute -105
-KPX Atilde Ydieresis -105
-KPX Atilde quoteright -111
-KPX Atilde v -74
-KPX Atilde w -92
-KPX Atilde y -92
-KPX Atilde yacute -92
-KPX Atilde ydieresis -92
-KPX B A -35
-KPX B Aacute -35
-KPX B Abreve -35
-KPX B Acircumflex -35
-KPX B Adieresis -35
-KPX B Agrave -35
-KPX B Amacron -35
-KPX B Aogonek -35
-KPX B Aring -35
-KPX B Atilde -35
-KPX B U -10
-KPX B Uacute -10
-KPX B Ucircumflex -10
-KPX B Udieresis -10
-KPX B Ugrave -10
-KPX B Uhungarumlaut -10
-KPX B Umacron -10
-KPX B Uogonek -10
-KPX B Uring -10
-KPX D A -40
-KPX D Aacute -40
-KPX D Abreve -40
-KPX D Acircumflex -40
-KPX D Adieresis -40
-KPX D Agrave -40
-KPX D Amacron -40
-KPX D Aogonek -40
-KPX D Aring -40
-KPX D Atilde -40
-KPX D V -40
-KPX D W -30
-KPX D Y -55
-KPX D Yacute -55
-KPX D Ydieresis -55
-KPX Dcaron A -40
-KPX Dcaron Aacute -40
-KPX Dcaron Abreve -40
-KPX Dcaron Acircumflex -40
-KPX Dcaron Adieresis -40
-KPX Dcaron Agrave -40
-KPX Dcaron Amacron -40
-KPX Dcaron Aogonek -40
-KPX Dcaron Aring -40
-KPX Dcaron Atilde -40
-KPX Dcaron V -40
-KPX Dcaron W -30
-KPX Dcaron Y -55
-KPX Dcaron Yacute -55
-KPX Dcaron Ydieresis -55
-KPX Dcroat A -40
-KPX Dcroat Aacute -40
-KPX Dcroat Abreve -40
-KPX Dcroat Acircumflex -40
-KPX Dcroat Adieresis -40
-KPX Dcroat Agrave -40
-KPX Dcroat Amacron -40
-KPX Dcroat Aogonek -40
-KPX Dcroat Aring -40
-KPX Dcroat Atilde -40
-KPX Dcroat V -40
-KPX Dcroat W -30
-KPX Dcroat Y -55
-KPX Dcroat Yacute -55
-KPX Dcroat Ydieresis -55
-KPX F A -74
-KPX F Aacute -74
-KPX F Abreve -74
-KPX F Acircumflex -74
-KPX F Adieresis -74
-KPX F Agrave -74
-KPX F Amacron -74
-KPX F Aogonek -74
-KPX F Aring -74
-KPX F Atilde -74
-KPX F a -15
-KPX F aacute -15
-KPX F abreve -15
-KPX F acircumflex -15
-KPX F adieresis -15
-KPX F agrave -15
-KPX F amacron -15
-KPX F aogonek -15
-KPX F aring -15
-KPX F atilde -15
-KPX F comma -80
-KPX F o -15
-KPX F oacute -15
-KPX F ocircumflex -15
-KPX F odieresis -15
-KPX F ograve -15
-KPX F ohungarumlaut -15
-KPX F omacron -15
-KPX F oslash -15
-KPX F otilde -15
-KPX F period -80
-KPX J A -60
-KPX J Aacute -60
-KPX J Abreve -60
-KPX J Acircumflex -60
-KPX J Adieresis -60
-KPX J Agrave -60
-KPX J Amacron -60
-KPX J Aogonek -60
-KPX J Aring -60
-KPX J Atilde -60
-KPX K O -30
-KPX K Oacute -30
-KPX K Ocircumflex -30
-KPX K Odieresis -30
-KPX K Ograve -30
-KPX K Ohungarumlaut -30
-KPX K Omacron -30
-KPX K Oslash -30
-KPX K Otilde -30
-KPX K e -25
-KPX K eacute -25
-KPX K ecaron -25
-KPX K ecircumflex -25
-KPX K edieresis -25
-KPX K edotaccent -25
-KPX K egrave -25
-KPX K emacron -25
-KPX K eogonek -25
-KPX K o -35
-KPX K oacute -35
-KPX K ocircumflex -35
-KPX K odieresis -35
-KPX K ograve -35
-KPX K ohungarumlaut -35
-KPX K omacron -35
-KPX K oslash -35
-KPX K otilde -35
-KPX K u -15
-KPX K uacute -15
-KPX K ucircumflex -15
-KPX K udieresis -15
-KPX K ugrave -15
-KPX K uhungarumlaut -15
-KPX K umacron -15
-KPX K uogonek -15
-KPX K uring -15
-KPX K y -25
-KPX K yacute -25
-KPX K ydieresis -25
-KPX Kcommaaccent O -30
-KPX Kcommaaccent Oacute -30
-KPX Kcommaaccent Ocircumflex -30
-KPX Kcommaaccent Odieresis -30
-KPX Kcommaaccent Ograve -30
-KPX Kcommaaccent Ohungarumlaut -30
-KPX Kcommaaccent Omacron -30
-KPX Kcommaaccent Oslash -30
-KPX Kcommaaccent Otilde -30
-KPX Kcommaaccent e -25
-KPX Kcommaaccent eacute -25
-KPX Kcommaaccent ecaron -25
-KPX Kcommaaccent ecircumflex -25
-KPX Kcommaaccent edieresis -25
-KPX Kcommaaccent edotaccent -25
-KPX Kcommaaccent egrave -25
-KPX Kcommaaccent emacron -25
-KPX Kcommaaccent eogonek -25
-KPX Kcommaaccent o -35
-KPX Kcommaaccent oacute -35
-KPX Kcommaaccent ocircumflex -35
-KPX Kcommaaccent odieresis -35
-KPX Kcommaaccent ograve -35
-KPX Kcommaaccent ohungarumlaut -35
-KPX Kcommaaccent omacron -35
-KPX Kcommaaccent oslash -35
-KPX Kcommaaccent otilde -35
-KPX Kcommaaccent u -15
-KPX Kcommaaccent uacute -15
-KPX Kcommaaccent ucircumflex -15
-KPX Kcommaaccent udieresis -15
-KPX Kcommaaccent ugrave -15
-KPX Kcommaaccent uhungarumlaut -15
-KPX Kcommaaccent umacron -15
-KPX Kcommaaccent uogonek -15
-KPX Kcommaaccent uring -15
-KPX Kcommaaccent y -25
-KPX Kcommaaccent yacute -25
-KPX Kcommaaccent ydieresis -25
-KPX L T -92
-KPX L Tcaron -92
-KPX L Tcommaaccent -92
-KPX L V -100
-KPX L W -74
-KPX L Y -100
-KPX L Yacute -100
-KPX L Ydieresis -100
-KPX L quoteright -92
-KPX L y -55
-KPX L yacute -55
-KPX L ydieresis -55
-KPX Lacute T -92
-KPX Lacute Tcaron -92
-KPX Lacute Tcommaaccent -92
-KPX Lacute V -100
-KPX Lacute W -74
-KPX Lacute Y -100
-KPX Lacute Yacute -100
-KPX Lacute Ydieresis -100
-KPX Lacute quoteright -92
-KPX Lacute y -55
-KPX Lacute yacute -55
-KPX Lacute ydieresis -55
-KPX Lcaron quoteright -92
-KPX Lcaron y -55
-KPX Lcaron yacute -55
-KPX Lcaron ydieresis -55
-KPX Lcommaaccent T -92
-KPX Lcommaaccent Tcaron -92
-KPX Lcommaaccent Tcommaaccent -92
-KPX Lcommaaccent V -100
-KPX Lcommaaccent W -74
-KPX Lcommaaccent Y -100
-KPX Lcommaaccent Yacute -100
-KPX Lcommaaccent Ydieresis -100
-KPX Lcommaaccent quoteright -92
-KPX Lcommaaccent y -55
-KPX Lcommaaccent yacute -55
-KPX Lcommaaccent ydieresis -55
-KPX Lslash T -92
-KPX Lslash Tcaron -92
-KPX Lslash Tcommaaccent -92
-KPX Lslash V -100
-KPX Lslash W -74
-KPX Lslash Y -100
-KPX Lslash Yacute -100
-KPX Lslash Ydieresis -100
-KPX Lslash quoteright -92
-KPX Lslash y -55
-KPX Lslash yacute -55
-KPX Lslash ydieresis -55
-KPX N A -35
-KPX N Aacute -35
-KPX N Abreve -35
-KPX N Acircumflex -35
-KPX N Adieresis -35
-KPX N Agrave -35
-KPX N Amacron -35
-KPX N Aogonek -35
-KPX N Aring -35
-KPX N Atilde -35
-KPX Nacute A -35
-KPX Nacute Aacute -35
-KPX Nacute Abreve -35
-KPX Nacute Acircumflex -35
-KPX Nacute Adieresis -35
-KPX Nacute Agrave -35
-KPX Nacute Amacron -35
-KPX Nacute Aogonek -35
-KPX Nacute Aring -35
-KPX Nacute Atilde -35
-KPX Ncaron A -35
-KPX Ncaron Aacute -35
-KPX Ncaron Abreve -35
-KPX Ncaron Acircumflex -35
-KPX Ncaron Adieresis -35
-KPX Ncaron Agrave -35
-KPX Ncaron Amacron -35
-KPX Ncaron Aogonek -35
-KPX Ncaron Aring -35
-KPX Ncaron Atilde -35
-KPX Ncommaaccent A -35
-KPX Ncommaaccent Aacute -35
-KPX Ncommaaccent Abreve -35
-KPX Ncommaaccent Acircumflex -35
-KPX Ncommaaccent Adieresis -35
-KPX Ncommaaccent Agrave -35
-KPX Ncommaaccent Amacron -35
-KPX Ncommaaccent Aogonek -35
-KPX Ncommaaccent Aring -35
-KPX Ncommaaccent Atilde -35
-KPX Ntilde A -35
-KPX Ntilde Aacute -35
-KPX Ntilde Abreve -35
-KPX Ntilde Acircumflex -35
-KPX Ntilde Adieresis -35
-KPX Ntilde Agrave -35
-KPX Ntilde Amacron -35
-KPX Ntilde Aogonek -35
-KPX Ntilde Aring -35
-KPX Ntilde Atilde -35
-KPX O A -35
-KPX O Aacute -35
-KPX O Abreve -35
-KPX O Acircumflex -35
-KPX O Adieresis -35
-KPX O Agrave -35
-KPX O Amacron -35
-KPX O Aogonek -35
-KPX O Aring -35
-KPX O Atilde -35
-KPX O T -40
-KPX O Tcaron -40
-KPX O Tcommaaccent -40
-KPX O V -50
-KPX O W -35
-KPX O X -40
-KPX O Y -50
-KPX O Yacute -50
-KPX O Ydieresis -50
-KPX Oacute A -35
-KPX Oacute Aacute -35
-KPX Oacute Abreve -35
-KPX Oacute Acircumflex -35
-KPX Oacute Adieresis -35
-KPX Oacute Agrave -35
-KPX Oacute Amacron -35
-KPX Oacute Aogonek -35
-KPX Oacute Aring -35
-KPX Oacute Atilde -35
-KPX Oacute T -40
-KPX Oacute Tcaron -40
-KPX Oacute Tcommaaccent -40
-KPX Oacute V -50
-KPX Oacute W -35
-KPX Oacute X -40
-KPX Oacute Y -50
-KPX Oacute Yacute -50
-KPX Oacute Ydieresis -50
-KPX Ocircumflex A -35
-KPX Ocircumflex Aacute -35
-KPX Ocircumflex Abreve -35
-KPX Ocircumflex Acircumflex -35
-KPX Ocircumflex Adieresis -35
-KPX Ocircumflex Agrave -35
-KPX Ocircumflex Amacron -35
-KPX Ocircumflex Aogonek -35
-KPX Ocircumflex Aring -35
-KPX Ocircumflex Atilde -35
-KPX Ocircumflex T -40
-KPX Ocircumflex Tcaron -40
-KPX Ocircumflex Tcommaaccent -40
-KPX Ocircumflex V -50
-KPX Ocircumflex W -35
-KPX Ocircumflex X -40
-KPX Ocircumflex Y -50
-KPX Ocircumflex Yacute -50
-KPX Ocircumflex Ydieresis -50
-KPX Odieresis A -35
-KPX Odieresis Aacute -35
-KPX Odieresis Abreve -35
-KPX Odieresis Acircumflex -35
-KPX Odieresis Adieresis -35
-KPX Odieresis Agrave -35
-KPX Odieresis Amacron -35
-KPX Odieresis Aogonek -35
-KPX Odieresis Aring -35
-KPX Odieresis Atilde -35
-KPX Odieresis T -40
-KPX Odieresis Tcaron -40
-KPX Odieresis Tcommaaccent -40
-KPX Odieresis V -50
-KPX Odieresis W -35
-KPX Odieresis X -40
-KPX Odieresis Y -50
-KPX Odieresis Yacute -50
-KPX Odieresis Ydieresis -50
-KPX Ograve A -35
-KPX Ograve Aacute -35
-KPX Ograve Abreve -35
-KPX Ograve Acircumflex -35
-KPX Ograve Adieresis -35
-KPX Ograve Agrave -35
-KPX Ograve Amacron -35
-KPX Ograve Aogonek -35
-KPX Ograve Aring -35
-KPX Ograve Atilde -35
-KPX Ograve T -40
-KPX Ograve Tcaron -40
-KPX Ograve Tcommaaccent -40
-KPX Ograve V -50
-KPX Ograve W -35
-KPX Ograve X -40
-KPX Ograve Y -50
-KPX Ograve Yacute -50
-KPX Ograve Ydieresis -50
-KPX Ohungarumlaut A -35
-KPX Ohungarumlaut Aacute -35
-KPX Ohungarumlaut Abreve -35
-KPX Ohungarumlaut Acircumflex -35
-KPX Ohungarumlaut Adieresis -35
-KPX Ohungarumlaut Agrave -35
-KPX Ohungarumlaut Amacron -35
-KPX Ohungarumlaut Aogonek -35
-KPX Ohungarumlaut Aring -35
-KPX Ohungarumlaut Atilde -35
-KPX Ohungarumlaut T -40
-KPX Ohungarumlaut Tcaron -40
-KPX Ohungarumlaut Tcommaaccent -40
-KPX Ohungarumlaut V -50
-KPX Ohungarumlaut W -35
-KPX Ohungarumlaut X -40
-KPX Ohungarumlaut Y -50
-KPX Ohungarumlaut Yacute -50
-KPX Ohungarumlaut Ydieresis -50
-KPX Omacron A -35
-KPX Omacron Aacute -35
-KPX Omacron Abreve -35
-KPX Omacron Acircumflex -35
-KPX Omacron Adieresis -35
-KPX Omacron Agrave -35
-KPX Omacron Amacron -35
-KPX Omacron Aogonek -35
-KPX Omacron Aring -35
-KPX Omacron Atilde -35
-KPX Omacron T -40
-KPX Omacron Tcaron -40
-KPX Omacron Tcommaaccent -40
-KPX Omacron V -50
-KPX Omacron W -35
-KPX Omacron X -40
-KPX Omacron Y -50
-KPX Omacron Yacute -50
-KPX Omacron Ydieresis -50
-KPX Oslash A -35
-KPX Oslash Aacute -35
-KPX Oslash Abreve -35
-KPX Oslash Acircumflex -35
-KPX Oslash Adieresis -35
-KPX Oslash Agrave -35
-KPX Oslash Amacron -35
-KPX Oslash Aogonek -35
-KPX Oslash Aring -35
-KPX Oslash Atilde -35
-KPX Oslash T -40
-KPX Oslash Tcaron -40
-KPX Oslash Tcommaaccent -40
-KPX Oslash V -50
-KPX Oslash W -35
-KPX Oslash X -40
-KPX Oslash Y -50
-KPX Oslash Yacute -50
-KPX Oslash Ydieresis -50
-KPX Otilde A -35
-KPX Otilde Aacute -35
-KPX Otilde Abreve -35
-KPX Otilde Acircumflex -35
-KPX Otilde Adieresis -35
-KPX Otilde Agrave -35
-KPX Otilde Amacron -35
-KPX Otilde Aogonek -35
-KPX Otilde Aring -35
-KPX Otilde Atilde -35
-KPX Otilde T -40
-KPX Otilde Tcaron -40
-KPX Otilde Tcommaaccent -40
-KPX Otilde V -50
-KPX Otilde W -35
-KPX Otilde X -40
-KPX Otilde Y -50
-KPX Otilde Yacute -50
-KPX Otilde Ydieresis -50
-KPX P A -92
-KPX P Aacute -92
-KPX P Abreve -92
-KPX P Acircumflex -92
-KPX P Adieresis -92
-KPX P Agrave -92
-KPX P Amacron -92
-KPX P Aogonek -92
-KPX P Aring -92
-KPX P Atilde -92
-KPX P a -15
-KPX P aacute -15
-KPX P abreve -15
-KPX P acircumflex -15
-KPX P adieresis -15
-KPX P agrave -15
-KPX P amacron -15
-KPX P aogonek -15
-KPX P aring -15
-KPX P atilde -15
-KPX P comma -111
-KPX P period -111
-KPX Q U -10
-KPX Q Uacute -10
-KPX Q Ucircumflex -10
-KPX Q Udieresis -10
-KPX Q Ugrave -10
-KPX Q Uhungarumlaut -10
-KPX Q Umacron -10
-KPX Q Uogonek -10
-KPX Q Uring -10
-KPX R O -40
-KPX R Oacute -40
-KPX R Ocircumflex -40
-KPX R Odieresis -40
-KPX R Ograve -40
-KPX R Ohungarumlaut -40
-KPX R Omacron -40
-KPX R Oslash -40
-KPX R Otilde -40
-KPX R T -60
-KPX R Tcaron -60
-KPX R Tcommaaccent -60
-KPX R U -40
-KPX R Uacute -40
-KPX R Ucircumflex -40
-KPX R Udieresis -40
-KPX R Ugrave -40
-KPX R Uhungarumlaut -40
-KPX R Umacron -40
-KPX R Uogonek -40
-KPX R Uring -40
-KPX R V -80
-KPX R W -55
-KPX R Y -65
-KPX R Yacute -65
-KPX R Ydieresis -65
-KPX Racute O -40
-KPX Racute Oacute -40
-KPX Racute Ocircumflex -40
-KPX Racute Odieresis -40
-KPX Racute Ograve -40
-KPX Racute Ohungarumlaut -40
-KPX Racute Omacron -40
-KPX Racute Oslash -40
-KPX Racute Otilde -40
-KPX Racute T -60
-KPX Racute Tcaron -60
-KPX Racute Tcommaaccent -60
-KPX Racute U -40
-KPX Racute Uacute -40
-KPX Racute Ucircumflex -40
-KPX Racute Udieresis -40
-KPX Racute Ugrave -40
-KPX Racute Uhungarumlaut -40
-KPX Racute Umacron -40
-KPX Racute Uogonek -40
-KPX Racute Uring -40
-KPX Racute V -80
-KPX Racute W -55
-KPX Racute Y -65
-KPX Racute Yacute -65
-KPX Racute Ydieresis -65
-KPX Rcaron O -40
-KPX Rcaron Oacute -40
-KPX Rcaron Ocircumflex -40
-KPX Rcaron Odieresis -40
-KPX Rcaron Ograve -40
-KPX Rcaron Ohungarumlaut -40
-KPX Rcaron Omacron -40
-KPX Rcaron Oslash -40
-KPX Rcaron Otilde -40
-KPX Rcaron T -60
-KPX Rcaron Tcaron -60
-KPX Rcaron Tcommaaccent -60
-KPX Rcaron U -40
-KPX Rcaron Uacute -40
-KPX Rcaron Ucircumflex -40
-KPX Rcaron Udieresis -40
-KPX Rcaron Ugrave -40
-KPX Rcaron Uhungarumlaut -40
-KPX Rcaron Umacron -40
-KPX Rcaron Uogonek -40
-KPX Rcaron Uring -40
-KPX Rcaron V -80
-KPX Rcaron W -55
-KPX Rcaron Y -65
-KPX Rcaron Yacute -65
-KPX Rcaron Ydieresis -65
-KPX Rcommaaccent O -40
-KPX Rcommaaccent Oacute -40
-KPX Rcommaaccent Ocircumflex -40
-KPX Rcommaaccent Odieresis -40
-KPX Rcommaaccent Ograve -40
-KPX Rcommaaccent Ohungarumlaut -40
-KPX Rcommaaccent Omacron -40
-KPX Rcommaaccent Oslash -40
-KPX Rcommaaccent Otilde -40
-KPX Rcommaaccent T -60
-KPX Rcommaaccent Tcaron -60
-KPX Rcommaaccent Tcommaaccent -60
-KPX Rcommaaccent U -40
-KPX Rcommaaccent Uacute -40
-KPX Rcommaaccent Ucircumflex -40
-KPX Rcommaaccent Udieresis -40
-KPX Rcommaaccent Ugrave -40
-KPX Rcommaaccent Uhungarumlaut -40
-KPX Rcommaaccent Umacron -40
-KPX Rcommaaccent Uogonek -40
-KPX Rcommaaccent Uring -40
-KPX Rcommaaccent V -80
-KPX Rcommaaccent W -55
-KPX Rcommaaccent Y -65
-KPX Rcommaaccent Yacute -65
-KPX Rcommaaccent Ydieresis -65
-KPX T A -93
-KPX T Aacute -93
-KPX T Abreve -93
-KPX T Acircumflex -93
-KPX T Adieresis -93
-KPX T Agrave -93
-KPX T Amacron -93
-KPX T Aogonek -93
-KPX T Aring -93
-KPX T Atilde -93
-KPX T O -18
-KPX T Oacute -18
-KPX T Ocircumflex -18
-KPX T Odieresis -18
-KPX T Ograve -18
-KPX T Ohungarumlaut -18
-KPX T Omacron -18
-KPX T Oslash -18
-KPX T Otilde -18
-KPX T a -80
-KPX T aacute -80
-KPX T abreve -80
-KPX T acircumflex -80
-KPX T adieresis -40
-KPX T agrave -40
-KPX T amacron -40
-KPX T aogonek -80
-KPX T aring -80
-KPX T atilde -40
-KPX T colon -50
-KPX T comma -74
-KPX T e -70
-KPX T eacute -70
-KPX T ecaron -70
-KPX T ecircumflex -70
-KPX T edieresis -30
-KPX T edotaccent -70
-KPX T egrave -70
-KPX T emacron -30
-KPX T eogonek -70
-KPX T hyphen -92
-KPX T i -35
-KPX T iacute -35
-KPX T iogonek -35
-KPX T o -80
-KPX T oacute -80
-KPX T ocircumflex -80
-KPX T odieresis -80
-KPX T ograve -80
-KPX T ohungarumlaut -80
-KPX T omacron -80
-KPX T oslash -80
-KPX T otilde -80
-KPX T period -74
-KPX T r -35
-KPX T racute -35
-KPX T rcaron -35
-KPX T rcommaaccent -35
-KPX T semicolon -55
-KPX T u -45
-KPX T uacute -45
-KPX T ucircumflex -45
-KPX T udieresis -45
-KPX T ugrave -45
-KPX T uhungarumlaut -45
-KPX T umacron -45
-KPX T uogonek -45
-KPX T uring -45
-KPX T w -80
-KPX T y -80
-KPX T yacute -80
-KPX T ydieresis -80
-KPX Tcaron A -93
-KPX Tcaron Aacute -93
-KPX Tcaron Abreve -93
-KPX Tcaron Acircumflex -93
-KPX Tcaron Adieresis -93
-KPX Tcaron Agrave -93
-KPX Tcaron Amacron -93
-KPX Tcaron Aogonek -93
-KPX Tcaron Aring -93
-KPX Tcaron Atilde -93
-KPX Tcaron O -18
-KPX Tcaron Oacute -18
-KPX Tcaron Ocircumflex -18
-KPX Tcaron Odieresis -18
-KPX Tcaron Ograve -18
-KPX Tcaron Ohungarumlaut -18
-KPX Tcaron Omacron -18
-KPX Tcaron Oslash -18
-KPX Tcaron Otilde -18
-KPX Tcaron a -80
-KPX Tcaron aacute -80
-KPX Tcaron abreve -80
-KPX Tcaron acircumflex -80
-KPX Tcaron adieresis -40
-KPX Tcaron agrave -40
-KPX Tcaron amacron -40
-KPX Tcaron aogonek -80
-KPX Tcaron aring -80
-KPX Tcaron atilde -40
-KPX Tcaron colon -50
-KPX Tcaron comma -74
-KPX Tcaron e -70
-KPX Tcaron eacute -70
-KPX Tcaron ecaron -70
-KPX Tcaron ecircumflex -30
-KPX Tcaron edieresis -30
-KPX Tcaron edotaccent -70
-KPX Tcaron egrave -70
-KPX Tcaron emacron -30
-KPX Tcaron eogonek -70
-KPX Tcaron hyphen -92
-KPX Tcaron i -35
-KPX Tcaron iacute -35
-KPX Tcaron iogonek -35
-KPX Tcaron o -80
-KPX Tcaron oacute -80
-KPX Tcaron ocircumflex -80
-KPX Tcaron odieresis -80
-KPX Tcaron ograve -80
-KPX Tcaron ohungarumlaut -80
-KPX Tcaron omacron -80
-KPX Tcaron oslash -80
-KPX Tcaron otilde -80
-KPX Tcaron period -74
-KPX Tcaron r -35
-KPX Tcaron racute -35
-KPX Tcaron rcaron -35
-KPX Tcaron rcommaaccent -35
-KPX Tcaron semicolon -55
-KPX Tcaron u -45
-KPX Tcaron uacute -45
-KPX Tcaron ucircumflex -45
-KPX Tcaron udieresis -45
-KPX Tcaron ugrave -45
-KPX Tcaron uhungarumlaut -45
-KPX Tcaron umacron -45
-KPX Tcaron uogonek -45
-KPX Tcaron uring -45
-KPX Tcaron w -80
-KPX Tcaron y -80
-KPX Tcaron yacute -80
-KPX Tcaron ydieresis -80
-KPX Tcommaaccent A -93
-KPX Tcommaaccent Aacute -93
-KPX Tcommaaccent Abreve -93
-KPX Tcommaaccent Acircumflex -93
-KPX Tcommaaccent Adieresis -93
-KPX Tcommaaccent Agrave -93
-KPX Tcommaaccent Amacron -93
-KPX Tcommaaccent Aogonek -93
-KPX Tcommaaccent Aring -93
-KPX Tcommaaccent Atilde -93
-KPX Tcommaaccent O -18
-KPX Tcommaaccent Oacute -18
-KPX Tcommaaccent Ocircumflex -18
-KPX Tcommaaccent Odieresis -18
-KPX Tcommaaccent Ograve -18
-KPX Tcommaaccent Ohungarumlaut -18
-KPX Tcommaaccent Omacron -18
-KPX Tcommaaccent Oslash -18
-KPX Tcommaaccent Otilde -18
-KPX Tcommaaccent a -80
-KPX Tcommaaccent aacute -80
-KPX Tcommaaccent abreve -80
-KPX Tcommaaccent acircumflex -80
-KPX Tcommaaccent adieresis -40
-KPX Tcommaaccent agrave -40
-KPX Tcommaaccent amacron -40
-KPX Tcommaaccent aogonek -80
-KPX Tcommaaccent aring -80
-KPX Tcommaaccent atilde -40
-KPX Tcommaaccent colon -50
-KPX Tcommaaccent comma -74
-KPX Tcommaaccent e -70
-KPX Tcommaaccent eacute -70
-KPX Tcommaaccent ecaron -70
-KPX Tcommaaccent ecircumflex -30
-KPX Tcommaaccent edieresis -30
-KPX Tcommaaccent edotaccent -70
-KPX Tcommaaccent egrave -30
-KPX Tcommaaccent emacron -70
-KPX Tcommaaccent eogonek -70
-KPX Tcommaaccent hyphen -92
-KPX Tcommaaccent i -35
-KPX Tcommaaccent iacute -35
-KPX Tcommaaccent iogonek -35
-KPX Tcommaaccent o -80
-KPX Tcommaaccent oacute -80
-KPX Tcommaaccent ocircumflex -80
-KPX Tcommaaccent odieresis -80
-KPX Tcommaaccent ograve -80
-KPX Tcommaaccent ohungarumlaut -80
-KPX Tcommaaccent omacron -80
-KPX Tcommaaccent oslash -80
-KPX Tcommaaccent otilde -80
-KPX Tcommaaccent period -74
-KPX Tcommaaccent r -35
-KPX Tcommaaccent racute -35
-KPX Tcommaaccent rcaron -35
-KPX Tcommaaccent rcommaaccent -35
-KPX Tcommaaccent semicolon -55
-KPX Tcommaaccent u -45
-KPX Tcommaaccent uacute -45
-KPX Tcommaaccent ucircumflex -45
-KPX Tcommaaccent udieresis -45
-KPX Tcommaaccent ugrave -45
-KPX Tcommaaccent uhungarumlaut -45
-KPX Tcommaaccent umacron -45
-KPX Tcommaaccent uogonek -45
-KPX Tcommaaccent uring -45
-KPX Tcommaaccent w -80
-KPX Tcommaaccent y -80
-KPX Tcommaaccent yacute -80
-KPX Tcommaaccent ydieresis -80
-KPX U A -40
-KPX U Aacute -40
-KPX U Abreve -40
-KPX U Acircumflex -40
-KPX U Adieresis -40
-KPX U Agrave -40
-KPX U Amacron -40
-KPX U Aogonek -40
-KPX U Aring -40
-KPX U Atilde -40
-KPX Uacute A -40
-KPX Uacute Aacute -40
-KPX Uacute Abreve -40
-KPX Uacute Acircumflex -40
-KPX Uacute Adieresis -40
-KPX Uacute Agrave -40
-KPX Uacute Amacron -40
-KPX Uacute Aogonek -40
-KPX Uacute Aring -40
-KPX Uacute Atilde -40
-KPX Ucircumflex A -40
-KPX Ucircumflex Aacute -40
-KPX Ucircumflex Abreve -40
-KPX Ucircumflex Acircumflex -40
-KPX Ucircumflex Adieresis -40
-KPX Ucircumflex Agrave -40
-KPX Ucircumflex Amacron -40
-KPX Ucircumflex Aogonek -40
-KPX Ucircumflex Aring -40
-KPX Ucircumflex Atilde -40
-KPX Udieresis A -40
-KPX Udieresis Aacute -40
-KPX Udieresis Abreve -40
-KPX Udieresis Acircumflex -40
-KPX Udieresis Adieresis -40
-KPX Udieresis Agrave -40
-KPX Udieresis Amacron -40
-KPX Udieresis Aogonek -40
-KPX Udieresis Aring -40
-KPX Udieresis Atilde -40
-KPX Ugrave A -40
-KPX Ugrave Aacute -40
-KPX Ugrave Abreve -40
-KPX Ugrave Acircumflex -40
-KPX Ugrave Adieresis -40
-KPX Ugrave Agrave -40
-KPX Ugrave Amacron -40
-KPX Ugrave Aogonek -40
-KPX Ugrave Aring -40
-KPX Ugrave Atilde -40
-KPX Uhungarumlaut A -40
-KPX Uhungarumlaut Aacute -40
-KPX Uhungarumlaut Abreve -40
-KPX Uhungarumlaut Acircumflex -40
-KPX Uhungarumlaut Adieresis -40
-KPX Uhungarumlaut Agrave -40
-KPX Uhungarumlaut Amacron -40
-KPX Uhungarumlaut Aogonek -40
-KPX Uhungarumlaut Aring -40
-KPX Uhungarumlaut Atilde -40
-KPX Umacron A -40
-KPX Umacron Aacute -40
-KPX Umacron Abreve -40
-KPX Umacron Acircumflex -40
-KPX Umacron Adieresis -40
-KPX Umacron Agrave -40
-KPX Umacron Amacron -40
-KPX Umacron Aogonek -40
-KPX Umacron Aring -40
-KPX Umacron Atilde -40
-KPX Uogonek A -40
-KPX Uogonek Aacute -40
-KPX Uogonek Abreve -40
-KPX Uogonek Acircumflex -40
-KPX Uogonek Adieresis -40
-KPX Uogonek Agrave -40
-KPX Uogonek Amacron -40
-KPX Uogonek Aogonek -40
-KPX Uogonek Aring -40
-KPX Uogonek Atilde -40
-KPX Uring A -40
-KPX Uring Aacute -40
-KPX Uring Abreve -40
-KPX Uring Acircumflex -40
-KPX Uring Adieresis -40
-KPX Uring Agrave -40
-KPX Uring Amacron -40
-KPX Uring Aogonek -40
-KPX Uring Aring -40
-KPX Uring Atilde -40
-KPX V A -135
-KPX V Aacute -135
-KPX V Abreve -135
-KPX V Acircumflex -135
-KPX V Adieresis -135
-KPX V Agrave -135
-KPX V Amacron -135
-KPX V Aogonek -135
-KPX V Aring -135
-KPX V Atilde -135
-KPX V G -15
-KPX V Gbreve -15
-KPX V Gcommaaccent -15
-KPX V O -40
-KPX V Oacute -40
-KPX V Ocircumflex -40
-KPX V Odieresis -40
-KPX V Ograve -40
-KPX V Ohungarumlaut -40
-KPX V Omacron -40
-KPX V Oslash -40
-KPX V Otilde -40
-KPX V a -111
-KPX V aacute -111
-KPX V abreve -111
-KPX V acircumflex -71
-KPX V adieresis -71
-KPX V agrave -71
-KPX V amacron -71
-KPX V aogonek -111
-KPX V aring -111
-KPX V atilde -71
-KPX V colon -74
-KPX V comma -129
-KPX V e -111
-KPX V eacute -111
-KPX V ecaron -71
-KPX V ecircumflex -71
-KPX V edieresis -71
-KPX V edotaccent -111
-KPX V egrave -71
-KPX V emacron -71
-KPX V eogonek -111
-KPX V hyphen -100
-KPX V i -60
-KPX V iacute -60
-KPX V icircumflex -20
-KPX V idieresis -20
-KPX V igrave -20
-KPX V imacron -20
-KPX V iogonek -60
-KPX V o -129
-KPX V oacute -129
-KPX V ocircumflex -129
-KPX V odieresis -89
-KPX V ograve -89
-KPX V ohungarumlaut -129
-KPX V omacron -89
-KPX V oslash -129
-KPX V otilde -89
-KPX V period -129
-KPX V semicolon -74
-KPX V u -75
-KPX V uacute -75
-KPX V ucircumflex -75
-KPX V udieresis -75
-KPX V ugrave -75
-KPX V uhungarumlaut -75
-KPX V umacron -75
-KPX V uogonek -75
-KPX V uring -75
-KPX W A -120
-KPX W Aacute -120
-KPX W Abreve -120
-KPX W Acircumflex -120
-KPX W Adieresis -120
-KPX W Agrave -120
-KPX W Amacron -120
-KPX W Aogonek -120
-KPX W Aring -120
-KPX W Atilde -120
-KPX W O -10
-KPX W Oacute -10
-KPX W Ocircumflex -10
-KPX W Odieresis -10
-KPX W Ograve -10
-KPX W Ohungarumlaut -10
-KPX W Omacron -10
-KPX W Oslash -10
-KPX W Otilde -10
-KPX W a -80
-KPX W aacute -80
-KPX W abreve -80
-KPX W acircumflex -80
-KPX W adieresis -80
-KPX W agrave -80
-KPX W amacron -80
-KPX W aogonek -80
-KPX W aring -80
-KPX W atilde -80
-KPX W colon -37
-KPX W comma -92
-KPX W e -80
-KPX W eacute -80
-KPX W ecaron -80
-KPX W ecircumflex -80
-KPX W edieresis -40
-KPX W edotaccent -80
-KPX W egrave -40
-KPX W emacron -40
-KPX W eogonek -80
-KPX W hyphen -65
-KPX W i -40
-KPX W iacute -40
-KPX W iogonek -40
-KPX W o -80
-KPX W oacute -80
-KPX W ocircumflex -80
-KPX W odieresis -80
-KPX W ograve -80
-KPX W ohungarumlaut -80
-KPX W omacron -80
-KPX W oslash -80
-KPX W otilde -80
-KPX W period -92
-KPX W semicolon -37
-KPX W u -50
-KPX W uacute -50
-KPX W ucircumflex -50
-KPX W udieresis -50
-KPX W ugrave -50
-KPX W uhungarumlaut -50
-KPX W umacron -50
-KPX W uogonek -50
-KPX W uring -50
-KPX W y -73
-KPX W yacute -73
-KPX W ydieresis -73
-KPX Y A -120
-KPX Y Aacute -120
-KPX Y Abreve -120
-KPX Y Acircumflex -120
-KPX Y Adieresis -120
-KPX Y Agrave -120
-KPX Y Amacron -120
-KPX Y Aogonek -120
-KPX Y Aring -120
-KPX Y Atilde -120
-KPX Y O -30
-KPX Y Oacute -30
-KPX Y Ocircumflex -30
-KPX Y Odieresis -30
-KPX Y Ograve -30
-KPX Y Ohungarumlaut -30
-KPX Y Omacron -30
-KPX Y Oslash -30
-KPX Y Otilde -30
-KPX Y a -100
-KPX Y aacute -100
-KPX Y abreve -100
-KPX Y acircumflex -100
-KPX Y adieresis -60
-KPX Y agrave -60
-KPX Y amacron -60
-KPX Y aogonek -100
-KPX Y aring -100
-KPX Y atilde -60
-KPX Y colon -92
-KPX Y comma -129
-KPX Y e -100
-KPX Y eacute -100
-KPX Y ecaron -100
-KPX Y ecircumflex -100
-KPX Y edieresis -60
-KPX Y edotaccent -100
-KPX Y egrave -60
-KPX Y emacron -60
-KPX Y eogonek -100
-KPX Y hyphen -111
-KPX Y i -55
-KPX Y iacute -55
-KPX Y iogonek -55
-KPX Y o -110
-KPX Y oacute -110
-KPX Y ocircumflex -110
-KPX Y odieresis -70
-KPX Y ograve -70
-KPX Y ohungarumlaut -110
-KPX Y omacron -70
-KPX Y oslash -110
-KPX Y otilde -70
-KPX Y period -129
-KPX Y semicolon -92
-KPX Y u -111
-KPX Y uacute -111
-KPX Y ucircumflex -111
-KPX Y udieresis -71
-KPX Y ugrave -71
-KPX Y uhungarumlaut -111
-KPX Y umacron -71
-KPX Y uogonek -111
-KPX Y uring -111
-KPX Yacute A -120
-KPX Yacute Aacute -120
-KPX Yacute Abreve -120
-KPX Yacute Acircumflex -120
-KPX Yacute Adieresis -120
-KPX Yacute Agrave -120
-KPX Yacute Amacron -120
-KPX Yacute Aogonek -120
-KPX Yacute Aring -120
-KPX Yacute Atilde -120
-KPX Yacute O -30
-KPX Yacute Oacute -30
-KPX Yacute Ocircumflex -30
-KPX Yacute Odieresis -30
-KPX Yacute Ograve -30
-KPX Yacute Ohungarumlaut -30
-KPX Yacute Omacron -30
-KPX Yacute Oslash -30
-KPX Yacute Otilde -30
-KPX Yacute a -100
-KPX Yacute aacute -100
-KPX Yacute abreve -100
-KPX Yacute acircumflex -100
-KPX Yacute adieresis -60
-KPX Yacute agrave -60
-KPX Yacute amacron -60
-KPX Yacute aogonek -100
-KPX Yacute aring -100
-KPX Yacute atilde -60
-KPX Yacute colon -92
-KPX Yacute comma -129
-KPX Yacute e -100
-KPX Yacute eacute -100
-KPX Yacute ecaron -100
-KPX Yacute ecircumflex -100
-KPX Yacute edieresis -60
-KPX Yacute edotaccent -100
-KPX Yacute egrave -60
-KPX Yacute emacron -60
-KPX Yacute eogonek -100
-KPX Yacute hyphen -111
-KPX Yacute i -55
-KPX Yacute iacute -55
-KPX Yacute iogonek -55
-KPX Yacute o -110
-KPX Yacute oacute -110
-KPX Yacute ocircumflex -110
-KPX Yacute odieresis -70
-KPX Yacute ograve -70
-KPX Yacute ohungarumlaut -110
-KPX Yacute omacron -70
-KPX Yacute oslash -110
-KPX Yacute otilde -70
-KPX Yacute period -129
-KPX Yacute semicolon -92
-KPX Yacute u -111
-KPX Yacute uacute -111
-KPX Yacute ucircumflex -111
-KPX Yacute udieresis -71
-KPX Yacute ugrave -71
-KPX Yacute uhungarumlaut -111
-KPX Yacute umacron -71
-KPX Yacute uogonek -111
-KPX Yacute uring -111
-KPX Ydieresis A -120
-KPX Ydieresis Aacute -120
-KPX Ydieresis Abreve -120
-KPX Ydieresis Acircumflex -120
-KPX Ydieresis Adieresis -120
-KPX Ydieresis Agrave -120
-KPX Ydieresis Amacron -120
-KPX Ydieresis Aogonek -120
-KPX Ydieresis Aring -120
-KPX Ydieresis Atilde -120
-KPX Ydieresis O -30
-KPX Ydieresis Oacute -30
-KPX Ydieresis Ocircumflex -30
-KPX Ydieresis Odieresis -30
-KPX Ydieresis Ograve -30
-KPX Ydieresis Ohungarumlaut -30
-KPX Ydieresis Omacron -30
-KPX Ydieresis Oslash -30
-KPX Ydieresis Otilde -30
-KPX Ydieresis a -100
-KPX Ydieresis aacute -100
-KPX Ydieresis abreve -100
-KPX Ydieresis acircumflex -100
-KPX Ydieresis adieresis -60
-KPX Ydieresis agrave -60
-KPX Ydieresis amacron -60
-KPX Ydieresis aogonek -100
-KPX Ydieresis aring -100
-KPX Ydieresis atilde -100
-KPX Ydieresis colon -92
-KPX Ydieresis comma -129
-KPX Ydieresis e -100
-KPX Ydieresis eacute -100
-KPX Ydieresis ecaron -100
-KPX Ydieresis ecircumflex -100
-KPX Ydieresis edieresis -60
-KPX Ydieresis edotaccent -100
-KPX Ydieresis egrave -60
-KPX Ydieresis emacron -60
-KPX Ydieresis eogonek -100
-KPX Ydieresis hyphen -111
-KPX Ydieresis i -55
-KPX Ydieresis iacute -55
-KPX Ydieresis iogonek -55
-KPX Ydieresis o -110
-KPX Ydieresis oacute -110
-KPX Ydieresis ocircumflex -110
-KPX Ydieresis odieresis -70
-KPX Ydieresis ograve -70
-KPX Ydieresis ohungarumlaut -110
-KPX Ydieresis omacron -70
-KPX Ydieresis oslash -110
-KPX Ydieresis otilde -70
-KPX Ydieresis period -129
-KPX Ydieresis semicolon -92
-KPX Ydieresis u -111
-KPX Ydieresis uacute -111
-KPX Ydieresis ucircumflex -111
-KPX Ydieresis udieresis -71
-KPX Ydieresis ugrave -71
-KPX Ydieresis uhungarumlaut -111
-KPX Ydieresis umacron -71
-KPX Ydieresis uogonek -111
-KPX Ydieresis uring -111
-KPX a v -20
-KPX a w -15
-KPX aacute v -20
-KPX aacute w -15
-KPX abreve v -20
-KPX abreve w -15
-KPX acircumflex v -20
-KPX acircumflex w -15
-KPX adieresis v -20
-KPX adieresis w -15
-KPX agrave v -20
-KPX agrave w -15
-KPX amacron v -20
-KPX amacron w -15
-KPX aogonek v -20
-KPX aogonek w -15
-KPX aring v -20
-KPX aring w -15
-KPX atilde v -20
-KPX atilde w -15
-KPX b period -40
-KPX b u -20
-KPX b uacute -20
-KPX b ucircumflex -20
-KPX b udieresis -20
-KPX b ugrave -20
-KPX b uhungarumlaut -20
-KPX b umacron -20
-KPX b uogonek -20
-KPX b uring -20
-KPX b v -15
-KPX c y -15
-KPX c yacute -15
-KPX c ydieresis -15
-KPX cacute y -15
-KPX cacute yacute -15
-KPX cacute ydieresis -15
-KPX ccaron y -15
-KPX ccaron yacute -15
-KPX ccaron ydieresis -15
-KPX ccedilla y -15
-KPX ccedilla yacute -15
-KPX ccedilla ydieresis -15
-KPX comma quotedblright -70
-KPX comma quoteright -70
-KPX e g -15
-KPX e gbreve -15
-KPX e gcommaaccent -15
-KPX e v -25
-KPX e w -25
-KPX e x -15
-KPX e y -15
-KPX e yacute -15
-KPX e ydieresis -15
-KPX eacute g -15
-KPX eacute gbreve -15
-KPX eacute gcommaaccent -15
-KPX eacute v -25
-KPX eacute w -25
-KPX eacute x -15
-KPX eacute y -15
-KPX eacute yacute -15
-KPX eacute ydieresis -15
-KPX ecaron g -15
-KPX ecaron gbreve -15
-KPX ecaron gcommaaccent -15
-KPX ecaron v -25
-KPX ecaron w -25
-KPX ecaron x -15
-KPX ecaron y -15
-KPX ecaron yacute -15
-KPX ecaron ydieresis -15
-KPX ecircumflex g -15
-KPX ecircumflex gbreve -15
-KPX ecircumflex gcommaaccent -15
-KPX ecircumflex v -25
-KPX ecircumflex w -25
-KPX ecircumflex x -15
-KPX ecircumflex y -15
-KPX ecircumflex yacute -15
-KPX ecircumflex ydieresis -15
-KPX edieresis g -15
-KPX edieresis gbreve -15
-KPX edieresis gcommaaccent -15
-KPX edieresis v -25
-KPX edieresis w -25
-KPX edieresis x -15
-KPX edieresis y -15
-KPX edieresis yacute -15
-KPX edieresis ydieresis -15
-KPX edotaccent g -15
-KPX edotaccent gbreve -15
-KPX edotaccent gcommaaccent -15
-KPX edotaccent v -25
-KPX edotaccent w -25
-KPX edotaccent x -15
-KPX edotaccent y -15
-KPX edotaccent yacute -15
-KPX edotaccent ydieresis -15
-KPX egrave g -15
-KPX egrave gbreve -15
-KPX egrave gcommaaccent -15
-KPX egrave v -25
-KPX egrave w -25
-KPX egrave x -15
-KPX egrave y -15
-KPX egrave yacute -15
-KPX egrave ydieresis -15
-KPX emacron g -15
-KPX emacron gbreve -15
-KPX emacron gcommaaccent -15
-KPX emacron v -25
-KPX emacron w -25
-KPX emacron x -15
-KPX emacron y -15
-KPX emacron yacute -15
-KPX emacron ydieresis -15
-KPX eogonek g -15
-KPX eogonek gbreve -15
-KPX eogonek gcommaaccent -15
-KPX eogonek v -25
-KPX eogonek w -25
-KPX eogonek x -15
-KPX eogonek y -15
-KPX eogonek yacute -15
-KPX eogonek ydieresis -15
-KPX f a -10
-KPX f aacute -10
-KPX f abreve -10
-KPX f acircumflex -10
-KPX f adieresis -10
-KPX f agrave -10
-KPX f amacron -10
-KPX f aogonek -10
-KPX f aring -10
-KPX f atilde -10
-KPX f dotlessi -50
-KPX f f -25
-KPX f i -20
-KPX f iacute -20
-KPX f quoteright 55
-KPX g a -5
-KPX g aacute -5
-KPX g abreve -5
-KPX g acircumflex -5
-KPX g adieresis -5
-KPX g agrave -5
-KPX g amacron -5
-KPX g aogonek -5
-KPX g aring -5
-KPX g atilde -5
-KPX gbreve a -5
-KPX gbreve aacute -5
-KPX gbreve abreve -5
-KPX gbreve acircumflex -5
-KPX gbreve adieresis -5
-KPX gbreve agrave -5
-KPX gbreve amacron -5
-KPX gbreve aogonek -5
-KPX gbreve aring -5
-KPX gbreve atilde -5
-KPX gcommaaccent a -5
-KPX gcommaaccent aacute -5
-KPX gcommaaccent abreve -5
-KPX gcommaaccent acircumflex -5
-KPX gcommaaccent adieresis -5
-KPX gcommaaccent agrave -5
-KPX gcommaaccent amacron -5
-KPX gcommaaccent aogonek -5
-KPX gcommaaccent aring -5
-KPX gcommaaccent atilde -5
-KPX h y -5
-KPX h yacute -5
-KPX h ydieresis -5
-KPX i v -25
-KPX iacute v -25
-KPX icircumflex v -25
-KPX idieresis v -25
-KPX igrave v -25
-KPX imacron v -25
-KPX iogonek v -25
-KPX k e -10
-KPX k eacute -10
-KPX k ecaron -10
-KPX k ecircumflex -10
-KPX k edieresis -10
-KPX k edotaccent -10
-KPX k egrave -10
-KPX k emacron -10
-KPX k eogonek -10
-KPX k o -10
-KPX k oacute -10
-KPX k ocircumflex -10
-KPX k odieresis -10
-KPX k ograve -10
-KPX k ohungarumlaut -10
-KPX k omacron -10
-KPX k oslash -10
-KPX k otilde -10
-KPX k y -15
-KPX k yacute -15
-KPX k ydieresis -15
-KPX kcommaaccent e -10
-KPX kcommaaccent eacute -10
-KPX kcommaaccent ecaron -10
-KPX kcommaaccent ecircumflex -10
-KPX kcommaaccent edieresis -10
-KPX kcommaaccent edotaccent -10
-KPX kcommaaccent egrave -10
-KPX kcommaaccent emacron -10
-KPX kcommaaccent eogonek -10
-KPX kcommaaccent o -10
-KPX kcommaaccent oacute -10
-KPX kcommaaccent ocircumflex -10
-KPX kcommaaccent odieresis -10
-KPX kcommaaccent ograve -10
-KPX kcommaaccent ohungarumlaut -10
-KPX kcommaaccent omacron -10
-KPX kcommaaccent oslash -10
-KPX kcommaaccent otilde -10
-KPX kcommaaccent y -15
-KPX kcommaaccent yacute -15
-KPX kcommaaccent ydieresis -15
-KPX l w -10
-KPX lacute w -10
-KPX lcommaaccent w -10
-KPX lslash w -10
-KPX n v -40
-KPX n y -15
-KPX n yacute -15
-KPX n ydieresis -15
-KPX nacute v -40
-KPX nacute y -15
-KPX nacute yacute -15
-KPX nacute ydieresis -15
-KPX ncaron v -40
-KPX ncaron y -15
-KPX ncaron yacute -15
-KPX ncaron ydieresis -15
-KPX ncommaaccent v -40
-KPX ncommaaccent y -15
-KPX ncommaaccent yacute -15
-KPX ncommaaccent ydieresis -15
-KPX ntilde v -40
-KPX ntilde y -15
-KPX ntilde yacute -15
-KPX ntilde ydieresis -15
-KPX o v -15
-KPX o w -25
-KPX o y -10
-KPX o yacute -10
-KPX o ydieresis -10
-KPX oacute v -15
-KPX oacute w -25
-KPX oacute y -10
-KPX oacute yacute -10
-KPX oacute ydieresis -10
-KPX ocircumflex v -15
-KPX ocircumflex w -25
-KPX ocircumflex y -10
-KPX ocircumflex yacute -10
-KPX ocircumflex ydieresis -10
-KPX odieresis v -15
-KPX odieresis w -25
-KPX odieresis y -10
-KPX odieresis yacute -10
-KPX odieresis ydieresis -10
-KPX ograve v -15
-KPX ograve w -25
-KPX ograve y -10
-KPX ograve yacute -10
-KPX ograve ydieresis -10
-KPX ohungarumlaut v -15
-KPX ohungarumlaut w -25
-KPX ohungarumlaut y -10
-KPX ohungarumlaut yacute -10
-KPX ohungarumlaut ydieresis -10
-KPX omacron v -15
-KPX omacron w -25
-KPX omacron y -10
-KPX omacron yacute -10
-KPX omacron ydieresis -10
-KPX oslash v -15
-KPX oslash w -25
-KPX oslash y -10
-KPX oslash yacute -10
-KPX oslash ydieresis -10
-KPX otilde v -15
-KPX otilde w -25
-KPX otilde y -10
-KPX otilde yacute -10
-KPX otilde ydieresis -10
-KPX p y -10
-KPX p yacute -10
-KPX p ydieresis -10
-KPX period quotedblright -70
-KPX period quoteright -70
-KPX quotedblleft A -80
-KPX quotedblleft Aacute -80
-KPX quotedblleft Abreve -80
-KPX quotedblleft Acircumflex -80
-KPX quotedblleft Adieresis -80
-KPX quotedblleft Agrave -80
-KPX quotedblleft Amacron -80
-KPX quotedblleft Aogonek -80
-KPX quotedblleft Aring -80
-KPX quotedblleft Atilde -80
-KPX quoteleft A -80
-KPX quoteleft Aacute -80
-KPX quoteleft Abreve -80
-KPX quoteleft Acircumflex -80
-KPX quoteleft Adieresis -80
-KPX quoteleft Agrave -80
-KPX quoteleft Amacron -80
-KPX quoteleft Aogonek -80
-KPX quoteleft Aring -80
-KPX quoteleft Atilde -80
-KPX quoteleft quoteleft -74
-KPX quoteright d -50
-KPX quoteright dcroat -50
-KPX quoteright l -10
-KPX quoteright lacute -10
-KPX quoteright lcommaaccent -10
-KPX quoteright lslash -10
-KPX quoteright quoteright -74
-KPX quoteright r -50
-KPX quoteright racute -50
-KPX quoteright rcaron -50
-KPX quoteright rcommaaccent -50
-KPX quoteright s -55
-KPX quoteright sacute -55
-KPX quoteright scaron -55
-KPX quoteright scedilla -55
-KPX quoteright scommaaccent -55
-KPX quoteright space -74
-KPX quoteright t -18
-KPX quoteright tcommaaccent -18
-KPX quoteright v -50
-KPX r comma -40
-KPX r g -18
-KPX r gbreve -18
-KPX r gcommaaccent -18
-KPX r hyphen -20
-KPX r period -55
-KPX racute comma -40
-KPX racute g -18
-KPX racute gbreve -18
-KPX racute gcommaaccent -18
-KPX racute hyphen -20
-KPX racute period -55
-KPX rcaron comma -40
-KPX rcaron g -18
-KPX rcaron gbreve -18
-KPX rcaron gcommaaccent -18
-KPX rcaron hyphen -20
-KPX rcaron period -55
-KPX rcommaaccent comma -40
-KPX rcommaaccent g -18
-KPX rcommaaccent gbreve -18
-KPX rcommaaccent gcommaaccent -18
-KPX rcommaaccent hyphen -20
-KPX rcommaaccent period -55
-KPX space A -55
-KPX space Aacute -55
-KPX space Abreve -55
-KPX space Acircumflex -55
-KPX space Adieresis -55
-KPX space Agrave -55
-KPX space Amacron -55
-KPX space Aogonek -55
-KPX space Aring -55
-KPX space Atilde -55
-KPX space T -18
-KPX space Tcaron -18
-KPX space Tcommaaccent -18
-KPX space V -50
-KPX space W -30
-KPX space Y -90
-KPX space Yacute -90
-KPX space Ydieresis -90
-KPX v a -25
-KPX v aacute -25
-KPX v abreve -25
-KPX v acircumflex -25
-KPX v adieresis -25
-KPX v agrave -25
-KPX v amacron -25
-KPX v aogonek -25
-KPX v aring -25
-KPX v atilde -25
-KPX v comma -65
-KPX v e -15
-KPX v eacute -15
-KPX v ecaron -15
-KPX v ecircumflex -15
-KPX v edieresis -15
-KPX v edotaccent -15
-KPX v egrave -15
-KPX v emacron -15
-KPX v eogonek -15
-KPX v o -20
-KPX v oacute -20
-KPX v ocircumflex -20
-KPX v odieresis -20
-KPX v ograve -20
-KPX v ohungarumlaut -20
-KPX v omacron -20
-KPX v oslash -20
-KPX v otilde -20
-KPX v period -65
-KPX w a -10
-KPX w aacute -10
-KPX w abreve -10
-KPX w acircumflex -10
-KPX w adieresis -10
-KPX w agrave -10
-KPX w amacron -10
-KPX w aogonek -10
-KPX w aring -10
-KPX w atilde -10
-KPX w comma -65
-KPX w o -10
-KPX w oacute -10
-KPX w ocircumflex -10
-KPX w odieresis -10
-KPX w ograve -10
-KPX w ohungarumlaut -10
-KPX w omacron -10
-KPX w oslash -10
-KPX w otilde -10
-KPX w period -65
-KPX x e -15
-KPX x eacute -15
-KPX x ecaron -15
-KPX x ecircumflex -15
-KPX x edieresis -15
-KPX x edotaccent -15
-KPX x egrave -15
-KPX x emacron -15
-KPX x eogonek -15
-KPX y comma -65
-KPX y period -65
-KPX yacute comma -65
-KPX yacute period -65
-KPX ydieresis comma -65
-KPX ydieresis period -65
-EndKernPairs
-EndKernData
-EndFontMetrics
diff --git a/admin/survey/Fonts/php_Courier.afm b/admin/survey/Fonts/php_Courier.afm
deleted file mode 100644
index b68cac6..0000000
--- a/admin/survey/Fonts/php_Courier.afm
+++ /dev/null
@@ -1 +0,0 @@
-a:21:{s:8:"FontName";s:7:"Courier";s:8:"FullName";s:7:"Courier";s:10:"FamilyName";s:7:"Courier";s:6:"Weight";s:6:"Medium";s:11:"ItalicAngle";s:1:"0";s:12:"IsFixedPitch";s:4:"true";s:12:"CharacterSet";s:13:"ExtendedRoman";s:8:"FontBBox";a:4:{i:0;s:3:"-23";i:1;s:4:"-250";i:2;s:3:"715";i:3;s:3:"805";}s:17:"UnderlinePosition";s:4:"-100";s:18:"UnderlineThickness";s:2:"50";s:7:"Version";s:7:"003.000";s:14:"EncodingScheme";s:21:"AdobeStandardEncoding";s:9:"CapHeight";s:3:"562";s:7:"XHeight";s:3:"426";s:8:"Ascender";s:3:"629";s:9:"Descender";s:4:"-157";s:5:"StdHW";s:2:"51";s:5:"StdVW";s:2:"51";s:16:"StartCharMetrics";s:3:"315";s:1:"C";a:464:{i:32;a:4:{s:1:"C";s:2:"32";s:2:"WX";s:3:"600";s:1:"N";s:5:"space";s:1:"B";a:4:{i:0;s:1:"0";i:1;s:1:"0";i:2;s:1:"0";i:3;s:1:"0";}}s:5:"space";a:4:{s:1:"C";s:2:"32";s:2:"WX";s:3:"600";s:1:"N";s:5:"space";s:1:"B";a:4:{i:0;s:1:"0";i:1;s:1:"0";i:2;s:1:"0";i:3;s:1:"0";}}i:33;a:4:{s:1:"C";s:2:"33";s:2:"WX";s:3:"600";s:1:"N";s:6:"exclam";s:1:"B";a:4:{i:0;s:3:"236";i:1;s:3:"-15";i:2;s:3:"364";i:3;s:3:"572";}}s:6:"exclam";a:4:{s:1:"C";s:2:"33";s:2:"WX";s:3:"600";s:1:"N";s:6:"exclam";s:1:"B";a:4:{i:0;s:3:"236";i:1;s:3:"-15";i:2;s:3:"364";i:3;s:3:"572";}}i:34;a:4:{s:1:"C";s:2:"34";s:2:"WX";s:3:"600";s:1:"N";s:8:"quotedbl";s:1:"B";a:4:{i:0;s:3:"187";i:1;s:3:"328";i:2;s:3:"413";i:3;s:3:"562";}}s:8:"quotedbl";a:4:{s:1:"C";s:2:"34";s:2:"WX";s:3:"600";s:1:"N";s:8:"quotedbl";s:1:"B";a:4:{i:0;s:3:"187";i:1;s:3:"328";i:2;s:3:"413";i:3;s:3:"562";}}i:35;a:4:{s:1:"C";s:2:"35";s:2:"WX";s:3:"600";s:1:"N";s:10:"numbersign";s:1:"B";a:4:{i:0;s:2:"93";i:1;s:3:"-32";i:2;s:3:"507";i:3;s:3:"639";}}s:10:"numbersign";a:4:{s:1:"C";s:2:"35";s:2:"WX";s:3:"600";s:1:"N";s:10:"numbersign";s:1:"B";a:4:{i:0;s:2:"93";i:1;s:3:"-32";i:2;s:3:"507";i:3;s:3:"639";}}i:36;a:4:{s:1:"C";s:2:"36";s:2:"WX";s:3:"600";s:1:"N";s:6:"dollar";s:1:"B";a:4:{i:0;s:3:"105";i:1;s:4:"-126";i:2;s:3:"496";i:3;s:3:"662";}}s:6:"dollar";a:4:{s:1:"C";s:2:"36";s:2:"WX";s:3:"600";s:1:"N";s:6:"dollar";s:1:"B";a:4:{i:0;s:3:"105";i:1;s:4:"-126";i:2;s:3:"496";i:3;s:3:"662";}}i:37;a:4:{s:1:"C";s:2:"37";s:2:"WX";s:3:"600";s:1:"N";s:7:"percent";s:1:"B";a:4:{i:0;s:2:"81";i:1;s:3:"-15";i:2;s:3:"518";i:3;s:3:"622";}}s:7:"percent";a:4:{s:1:"C";s:2:"37";s:2:"WX";s:3:"600";s:1:"N";s:7:"percent";s:1:"B";a:4:{i:0;s:2:"81";i:1;s:3:"-15";i:2;s:3:"518";i:3;s:3:"622";}}i:38;a:4:{s:1:"C";s:2:"38";s:2:"WX";s:3:"600";s:1:"N";s:9:"ampersand";s:1:"B";a:4:{i:0;s:2:"63";i:1;s:3:"-15";i:2;s:3:"538";i:3;s:3:"543";}}s:9:"ampersand";a:4:{s:1:"C";s:2:"38";s:2:"WX";s:3:"600";s:1:"N";s:9:"ampersand";s:1:"B";a:4:{i:0;s:2:"63";i:1;s:3:"-15";i:2;s:3:"538";i:3;s:3:"543";}}i:39;a:4:{s:1:"C";s:2:"39";s:2:"WX";s:3:"600";s:1:"N";s:10:"quoteright";s:1:"B";a:4:{i:0;s:3:"213";i:1;s:3:"328";i:2;s:3:"376";i:3;s:3:"562";}}s:10:"quoteright";a:4:{s:1:"C";s:2:"39";s:2:"WX";s:3:"600";s:1:"N";s:10:"quoteright";s:1:"B";a:4:{i:0;s:3:"213";i:1;s:3:"328";i:2;s:3:"376";i:3;s:3:"562";}}i:40;a:4:{s:1:"C";s:2:"40";s:2:"WX";s:3:"600";s:1:"N";s:9:"parenleft";s:1:"B";a:4:{i:0;s:3:"269";i:1;s:4:"-108";i:2;s:3:"440";i:3;s:3:"622";}}s:9:"parenleft";a:4:{s:1:"C";s:2:"40";s:2:"WX";s:3:"600";s:1:"N";s:9:"parenleft";s:1:"B";a:4:{i:0;s:3:"269";i:1;s:4:"-108";i:2;s:3:"440";i:3;s:3:"622";}}i:41;a:4:{s:1:"C";s:2:"41";s:2:"WX";s:3:"600";s:1:"N";s:10:"parenright";s:1:"B";a:4:{i:0;s:3:"160";i:1;s:4:"-108";i:2;s:3:"331";i:3;s:3:"622";}}s:10:"parenright";a:4:{s:1:"C";s:2:"41";s:2:"WX";s:3:"600";s:1:"N";s:10:"parenright";s:1:"B";a:4:{i:0;s:3:"160";i:1;s:4:"-108";i:2;s:3:"331";i:3;s:3:"622";}}i:42;a:4:{s:1:"C";s:2:"42";s:2:"WX";s:3:"600";s:1:"N";s:8:"asterisk";s:1:"B";a:4:{i:0;s:3:"116";i:1;s:3:"257";i:2;s:3:"484";i:3;s:3:"607";}}s:8:"asterisk";a:4:{s:1:"C";s:2:"42";s:2:"WX";s:3:"600";s:1:"N";s:8:"asterisk";s:1:"B";a:4:{i:0;s:3:"116";i:1;s:3:"257";i:2;s:3:"484";i:3;s:3:"607";}}i:43;a:4:{s:1:"C";s:2:"43";s:2:"WX";s:3:"600";s:1:"N";s:4:"plus";s:1:"B";a:4:{i:0;s:2:"80";i:1;s:2:"44";i:2;s:3:"520";i:3;s:3:"470";}}s:4:"plus";a:4:{s:1:"C";s:2:"43";s:2:"WX";s:3:"600";s:1:"N";s:4:"plus";s:1:"B";a:4:{i:0;s:2:"80";i:1;s:2:"44";i:2;s:3:"520";i:3;s:3:"470";}}i:44;a:4:{s:1:"C";s:2:"44";s:2:"WX";s:3:"600";s:1:"N";s:5:"comma";s:1:"B";a:4:{i:0;s:3:"181";i:1;s:4:"-112";i:2;s:3:"344";i:3;s:3:"122";}}s:5:"comma";a:4:{s:1:"C";s:2:"44";s:2:"WX";s:3:"600";s:1:"N";s:5:"comma";s:1:"B";a:4:{i:0;s:3:"181";i:1;s:4:"-112";i:2;s:3:"344";i:3;s:3:"122";}}i:45;a:4:{s:1:"C";s:2:"45";s:2:"WX";s:3:"600";s:1:"N";s:6:"hyphen";s:1:"B";a:4:{i:0;s:3:"103";i:1;s:3:"231";i:2;s:3:"497";i:3;s:3:"285";}}s:6:"hyphen";a:4:{s:1:"C";s:2:"45";s:2:"WX";s:3:"600";s:1:"N";s:6:"hyphen";s:1:"B";a:4:{i:0;s:3:"103";i:1;s:3:"231";i:2;s:3:"497";i:3;s:3:"285";}}i:46;a:4:{s:1:"C";s:2:"46";s:2:"WX";s:3:"600";s:1:"N";s:6:"period";s:1:"B";a:4:{i:0;s:3:"229";i:1;s:3:"-15";i:2;s:3:"371";i:3;s:3:"109";}}s:6:"period";a:4:{s:1:"C";s:2:"46";s:2:"WX";s:3:"600";s:1:"N";s:6:"period";s:1:"B";a:4:{i:0;s:3:"229";i:1;s:3:"-15";i:2;s:3:"371";i:3;s:3:"109";}}i:47;a:4:{s:1:"C";s:2:"47";s:2:"WX";s:3:"600";s:1:"N";s:5:"slash";s:1:"B";a:4:{i:0;s:3:"125";i:1;s:3:"-80";i:2;s:3:"475";i:3;s:3:"629";}}s:5:"slash";a:4:{s:1:"C";s:2:"47";s:2:"WX";s:3:"600";s:1:"N";s:5:"slash";s:1:"B";a:4:{i:0;s:3:"125";i:1;s:3:"-80";i:2;s:3:"475";i:3;s:3:"629";}}i:48;a:4:{s:1:"C";s:2:"48";s:2:"WX";s:3:"600";s:1:"N";s:4:"zero";s:1:"B";a:4:{i:0;s:3:"106";i:1;s:3:"-15";i:2;s:3:"494";i:3;s:3:"622";}}s:4:"zero";a:4:{s:1:"C";s:2:"48";s:2:"WX";s:3:"600";s:1:"N";s:4:"zero";s:1:"B";a:4:{i:0;s:3:"106";i:1;s:3:"-15";i:2;s:3:"494";i:3;s:3:"622";}}i:49;a:4:{s:1:"C";s:2:"49";s:2:"WX";s:3:"600";s:1:"N";s:3:"one";s:1:"B";a:4:{i:0;s:2:"96";i:1;s:1:"0";i:2;s:3:"505";i:3;s:3:"622";}}s:3:"one";a:4:{s:1:"C";s:2:"49";s:2:"WX";s:3:"600";s:1:"N";s:3:"one";s:1:"B";a:4:{i:0;s:2:"96";i:1;s:1:"0";i:2;s:3:"505";i:3;s:3:"622";}}i:50;a:4:{s:1:"C";s:2:"50";s:2:"WX";s:3:"600";s:1:"N";s:3:"two";s:1:"B";a:4:{i:0;s:2:"70";i:1;s:1:"0";i:2;s:3:"471";i:3;s:3:"622";}}s:3:"two";a:4:{s:1:"C";s:2:"50";s:2:"WX";s:3:"600";s:1:"N";s:3:"two";s:1:"B";a:4:{i:0;s:2:"70";i:1;s:1:"0";i:2;s:3:"471";i:3;s:3:"622";}}i:51;a:4:{s:1:"C";s:2:"51";s:2:"WX";s:3:"600";s:1:"N";s:5:"three";s:1:"B";a:4:{i:0;s:2:"75";i:1;s:3:"-15";i:2;s:3:"466";i:3;s:3:"622";}}s:5:"three";a:4:{s:1:"C";s:2:"51";s:2:"WX";s:3:"600";s:1:"N";s:5:"three";s:1:"B";a:4:{i:0;s:2:"75";i:1;s:3:"-15";i:2;s:3:"466";i:3;s:3:"622";}}i:52;a:4:{s:1:"C";s:2:"52";s:2:"WX";s:3:"600";s:1:"N";s:4:"four";s:1:"B";a:4:{i:0;s:2:"78";i:1;s:1:"0";i:2;s:3:"500";i:3;s:3:"622";}}s:4:"four";a:4:{s:1:"C";s:2:"52";s:2:"WX";s:3:"600";s:1:"N";s:4:"four";s:1:"B";a:4:{i:0;s:2:"78";i:1;s:1:"0";i:2;s:3:"500";i:3;s:3:"622";}}i:53;a:4:{s:1:"C";s:2:"53";s:2:"WX";s:3:"600";s:1:"N";s:4:"five";s:1:"B";a:4:{i:0;s:2:"92";i:1;s:3:"-15";i:2;s:3:"497";i:3;s:3:"607";}}s:4:"five";a:4:{s:1:"C";s:2:"53";s:2:"WX";s:3:"600";s:1:"N";s:4:"five";s:1:"B";a:4:{i:0;s:2:"92";i:1;s:3:"-15";i:2;s:3:"497";i:3;s:3:"607";}}i:54;a:4:{s:1:"C";s:2:"54";s:2:"WX";s:3:"600";s:1:"N";s:3:"six";s:1:"B";a:4:{i:0;s:3:"111";i:1;s:3:"-15";i:2;s:3:"497";i:3;s:3:"622";}}s:3:"six";a:4:{s:1:"C";s:2:"54";s:2:"WX";s:3:"600";s:1:"N";s:3:"six";s:1:"B";a:4:{i:0;s:3:"111";i:1;s:3:"-15";i:2;s:3:"497";i:3;s:3:"622";}}i:55;a:4:{s:1:"C";s:2:"55";s:2:"WX";s:3:"600";s:1:"N";s:5:"seven";s:1:"B";a:4:{i:0;s:2:"82";i:1;s:1:"0";i:2;s:3:"483";i:3;s:3:"607";}}s:5:"seven";a:4:{s:1:"C";s:2:"55";s:2:"WX";s:3:"600";s:1:"N";s:5:"seven";s:1:"B";a:4:{i:0;s:2:"82";i:1;s:1:"0";i:2;s:3:"483";i:3;s:3:"607";}}i:56;a:4:{s:1:"C";s:2:"56";s:2:"WX";s:3:"600";s:1:"N";s:5:"eight";s:1:"B";a:4:{i:0;s:3:"102";i:1;s:3:"-15";i:2;s:3:"498";i:3;s:3:"622";}}s:5:"eight";a:4:{s:1:"C";s:2:"56";s:2:"WX";s:3:"600";s:1:"N";s:5:"eight";s:1:"B";a:4:{i:0;s:3:"102";i:1;s:3:"-15";i:2;s:3:"498";i:3;s:3:"622";}}i:57;a:4:{s:1:"C";s:2:"57";s:2:"WX";s:3:"600";s:1:"N";s:4:"nine";s:1:"B";a:4:{i:0;s:2:"96";i:1;s:3:"-15";i:2;s:3:"489";i:3;s:3:"622";}}s:4:"nine";a:4:{s:1:"C";s:2:"57";s:2:"WX";s:3:"600";s:1:"N";s:4:"nine";s:1:"B";a:4:{i:0;s:2:"96";i:1;s:3:"-15";i:2;s:3:"489";i:3;s:3:"622";}}i:58;a:4:{s:1:"C";s:2:"58";s:2:"WX";s:3:"600";s:1:"N";s:5:"colon";s:1:"B";a:4:{i:0;s:3:"229";i:1;s:3:"-15";i:2;s:3:"371";i:3;s:3:"385";}}s:5:"colon";a:4:{s:1:"C";s:2:"58";s:2:"WX";s:3:"600";s:1:"N";s:5:"colon";s:1:"B";a:4:{i:0;s:3:"229";i:1;s:3:"-15";i:2;s:3:"371";i:3;s:3:"385";}}i:59;a:4:{s:1:"C";s:2:"59";s:2:"WX";s:3:"600";s:1:"N";s:9:"semicolon";s:1:"B";a:4:{i:0;s:3:"181";i:1;s:4:"-112";i:2;s:3:"371";i:3;s:3:"385";}}s:9:"semicolon";a:4:{s:1:"C";s:2:"59";s:2:"WX";s:3:"600";s:1:"N";s:9:"semicolon";s:1:"B";a:4:{i:0;s:3:"181";i:1;s:4:"-112";i:2;s:3:"371";i:3;s:3:"385";}}i:60;a:4:{s:1:"C";s:2:"60";s:2:"WX";s:3:"600";s:1:"N";s:4:"less";s:1:"B";a:4:{i:0;s:2:"41";i:1;s:2:"42";i:2;s:3:"519";i:3;s:3:"472";}}s:4:"less";a:4:{s:1:"C";s:2:"60";s:2:"WX";s:3:"600";s:1:"N";s:4:"less";s:1:"B";a:4:{i:0;s:2:"41";i:1;s:2:"42";i:2;s:3:"519";i:3;s:3:"472";}}i:61;a:4:{s:1:"C";s:2:"61";s:2:"WX";s:3:"600";s:1:"N";s:5:"equal";s:1:"B";a:4:{i:0;s:2:"80";i:1;s:3:"138";i:2;s:3:"520";i:3;s:3:"376";}}s:5:"equal";a:4:{s:1:"C";s:2:"61";s:2:"WX";s:3:"600";s:1:"N";s:5:"equal";s:1:"B";a:4:{i:0;s:2:"80";i:1;s:3:"138";i:2;s:3:"520";i:3;s:3:"376";}}i:62;a:4:{s:1:"C";s:2:"62";s:2:"WX";s:3:"600";s:1:"N";s:7:"greater";s:1:"B";a:4:{i:0;s:2:"66";i:1;s:2:"42";i:2;s:3:"544";i:3;s:3:"472";}}s:7:"greater";a:4:{s:1:"C";s:2:"62";s:2:"WX";s:3:"600";s:1:"N";s:7:"greater";s:1:"B";a:4:{i:0;s:2:"66";i:1;s:2:"42";i:2;s:3:"544";i:3;s:3:"472";}}i:63;a:4:{s:1:"C";s:2:"63";s:2:"WX";s:3:"600";s:1:"N";s:8:"question";s:1:"B";a:4:{i:0;s:3:"129";i:1;s:3:"-15";i:2;s:3:"492";i:3;s:3:"572";}}s:8:"question";a:4:{s:1:"C";s:2:"63";s:2:"WX";s:3:"600";s:1:"N";s:8:"question";s:1:"B";a:4:{i:0;s:3:"129";i:1;s:3:"-15";i:2;s:3:"492";i:3;s:3:"572";}}i:64;a:4:{s:1:"C";s:2:"64";s:2:"WX";s:3:"600";s:1:"N";s:2:"at";s:1:"B";a:4:{i:0;s:2:"77";i:1;s:3:"-15";i:2;s:3:"533";i:3;s:3:"622";}}s:2:"at";a:4:{s:1:"C";s:2:"64";s:2:"WX";s:3:"600";s:1:"N";s:2:"at";s:1:"B";a:4:{i:0;s:2:"77";i:1;s:3:"-15";i:2;s:3:"533";i:3;s:3:"622";}}i:65;a:4:{s:1:"C";s:2:"65";s:2:"WX";s:3:"600";s:1:"N";s:1:"A";s:1:"B";a:4:{i:0;s:1:"3";i:1;s:1:"0";i:2;s:3:"597";i:3;s:3:"562";}}s:1:"A";a:4:{s:1:"C";s:2:"65";s:2:"WX";s:3:"600";s:1:"N";s:1:"A";s:1:"B";a:4:{i:0;s:1:"3";i:1;s:1:"0";i:2;s:3:"597";i:3;s:3:"562";}}i:66;a:4:{s:1:"C";s:2:"66";s:2:"WX";s:3:"600";s:1:"N";s:1:"B";s:1:"B";a:4:{i:0;s:2:"43";i:1;s:1:"0";i:2;s:3:"559";i:3;s:3:"562";}}s:1:"B";a:4:{s:1:"C";s:2:"66";s:2:"WX";s:3:"600";s:1:"N";s:1:"B";s:1:"B";a:4:{i:0;s:2:"43";i:1;s:1:"0";i:2;s:3:"559";i:3;s:3:"562";}}i:67;a:4:{s:1:"C";s:2:"67";s:2:"WX";s:3:"600";s:1:"N";s:1:"C";s:1:"B";a:4:{i:0;s:2:"41";i:1;s:3:"-18";i:2;s:3:"540";i:3;s:3:"580";}}s:1:"C";a:4:{s:1:"C";s:2:"67";s:2:"WX";s:3:"600";s:1:"N";s:1:"C";s:1:"B";a:4:{i:0;s:2:"41";i:1;s:3:"-18";i:2;s:3:"540";i:3;s:3:"580";}}i:68;a:4:{s:1:"C";s:2:"68";s:2:"WX";s:3:"600";s:1:"N";s:1:"D";s:1:"B";a:4:{i:0;s:2:"43";i:1;s:1:"0";i:2;s:3:"574";i:3;s:3:"562";}}s:1:"D";a:4:{s:1:"C";s:2:"68";s:2:"WX";s:3:"600";s:1:"N";s:1:"D";s:1:"B";a:4:{i:0;s:2:"43";i:1;s:1:"0";i:2;s:3:"574";i:3;s:3:"562";}}i:69;a:4:{s:1:"C";s:2:"69";s:2:"WX";s:3:"600";s:1:"N";s:1:"E";s:1:"B";a:4:{i:0;s:2:"53";i:1;s:1:"0";i:2;s:3:"550";i:3;s:3:"562";}}s:1:"E";a:4:{s:1:"C";s:2:"69";s:2:"WX";s:3:"600";s:1:"N";s:1:"E";s:1:"B";a:4:{i:0;s:2:"53";i:1;s:1:"0";i:2;s:3:"550";i:3;s:3:"562";}}i:70;a:4:{s:1:"C";s:2:"70";s:2:"WX";s:3:"600";s:1:"N";s:1:"F";s:1:"B";a:4:{i:0;s:2:"53";i:1;s:1:"0";i:2;s:3:"545";i:3;s:3:"562";}}s:1:"F";a:4:{s:1:"C";s:2:"70";s:2:"WX";s:3:"600";s:1:"N";s:1:"F";s:1:"B";a:4:{i:0;s:2:"53";i:1;s:1:"0";i:2;s:3:"545";i:3;s:3:"562";}}i:71;a:4:{s:1:"C";s:2:"71";s:2:"WX";s:3:"600";s:1:"N";s:1:"G";s:1:"B";a:4:{i:0;s:2:"31";i:1;s:3:"-18";i:2;s:3:"575";i:3;s:3:"580";}}s:1:"G";a:4:{s:1:"C";s:2:"71";s:2:"WX";s:3:"600";s:1:"N";s:1:"G";s:1:"B";a:4:{i:0;s:2:"31";i:1;s:3:"-18";i:2;s:3:"575";i:3;s:3:"580";}}i:72;a:4:{s:1:"C";s:2:"72";s:2:"WX";s:3:"600";s:1:"N";s:1:"H";s:1:"B";a:4:{i:0;s:2:"32";i:1;s:1:"0";i:2;s:3:"568";i:3;s:3:"562";}}s:1:"H";a:4:{s:1:"C";s:2:"72";s:2:"WX";s:3:"600";s:1:"N";s:1:"H";s:1:"B";a:4:{i:0;s:2:"32";i:1;s:1:"0";i:2;s:3:"568";i:3;s:3:"562";}}i:73;a:4:{s:1:"C";s:2:"73";s:2:"WX";s:3:"600";s:1:"N";s:1:"I";s:1:"B";a:4:{i:0;s:2:"96";i:1;s:1:"0";i:2;s:3:"504";i:3;s:3:"562";}}s:1:"I";a:4:{s:1:"C";s:2:"73";s:2:"WX";s:3:"600";s:1:"N";s:1:"I";s:1:"B";a:4:{i:0;s:2:"96";i:1;s:1:"0";i:2;s:3:"504";i:3;s:3:"562";}}i:74;a:4:{s:1:"C";s:2:"74";s:2:"WX";s:3:"600";s:1:"N";s:1:"J";s:1:"B";a:4:{i:0;s:2:"34";i:1;s:3:"-18";i:2;s:3:"566";i:3;s:3:"562";}}s:1:"J";a:4:{s:1:"C";s:2:"74";s:2:"WX";s:3:"600";s:1:"N";s:1:"J";s:1:"B";a:4:{i:0;s:2:"34";i:1;s:3:"-18";i:2;s:3:"566";i:3;s:3:"562";}}i:75;a:4:{s:1:"C";s:2:"75";s:2:"WX";s:3:"600";s:1:"N";s:1:"K";s:1:"B";a:4:{i:0;s:2:"38";i:1;s:1:"0";i:2;s:3:"582";i:3;s:3:"562";}}s:1:"K";a:4:{s:1:"C";s:2:"75";s:2:"WX";s:3:"600";s:1:"N";s:1:"K";s:1:"B";a:4:{i:0;s:2:"38";i:1;s:1:"0";i:2;s:3:"582";i:3;s:3:"562";}}i:76;a:4:{s:1:"C";s:2:"76";s:2:"WX";s:3:"600";s:1:"N";s:1:"L";s:1:"B";a:4:{i:0;s:2:"47";i:1;s:1:"0";i:2;s:3:"554";i:3;s:3:"562";}}s:1:"L";a:4:{s:1:"C";s:2:"76";s:2:"WX";s:3:"600";s:1:"N";s:1:"L";s:1:"B";a:4:{i:0;s:2:"47";i:1;s:1:"0";i:2;s:3:"554";i:3;s:3:"562";}}i:77;a:4:{s:1:"C";s:2:"77";s:2:"WX";s:3:"600";s:1:"N";s:1:"M";s:1:"B";a:4:{i:0;s:1:"4";i:1;s:1:"0";i:2;s:3:"596";i:3;s:3:"562";}}s:1:"M";a:4:{s:1:"C";s:2:"77";s:2:"WX";s:3:"600";s:1:"N";s:1:"M";s:1:"B";a:4:{i:0;s:1:"4";i:1;s:1:"0";i:2;s:3:"596";i:3;s:3:"562";}}i:78;a:4:{s:1:"C";s:2:"78";s:2:"WX";s:3:"600";s:1:"N";s:1:"N";s:1:"B";a:4:{i:0;s:1:"7";i:1;s:3:"-13";i:2;s:3:"593";i:3;s:3:"562";}}s:1:"N";a:4:{s:1:"C";s:2:"78";s:2:"WX";s:3:"600";s:1:"N";s:1:"N";s:1:"B";a:4:{i:0;s:1:"7";i:1;s:3:"-13";i:2;s:3:"593";i:3;s:3:"562";}}i:79;a:4:{s:1:"C";s:2:"79";s:2:"WX";s:3:"600";s:1:"N";s:1:"O";s:1:"B";a:4:{i:0;s:2:"43";i:1;s:3:"-18";i:2;s:3:"557";i:3;s:3:"580";}}s:1:"O";a:4:{s:1:"C";s:2:"79";s:2:"WX";s:3:"600";s:1:"N";s:1:"O";s:1:"B";a:4:{i:0;s:2:"43";i:1;s:3:"-18";i:2;s:3:"557";i:3;s:3:"580";}}i:80;a:4:{s:1:"C";s:2:"80";s:2:"WX";s:3:"600";s:1:"N";s:1:"P";s:1:"B";a:4:{i:0;s:2:"79";i:1;s:1:"0";i:2;s:3:"558";i:3;s:3:"562";}}s:1:"P";a:4:{s:1:"C";s:2:"80";s:2:"WX";s:3:"600";s:1:"N";s:1:"P";s:1:"B";a:4:{i:0;s:2:"79";i:1;s:1:"0";i:2;s:3:"558";i:3;s:3:"562";}}i:81;a:4:{s:1:"C";s:2:"81";s:2:"WX";s:3:"600";s:1:"N";s:1:"Q";s:1:"B";a:4:{i:0;s:2:"43";i:1;s:4:"-138";i:2;s:3:"557";i:3;s:3:"580";}}s:1:"Q";a:4:{s:1:"C";s:2:"81";s:2:"WX";s:3:"600";s:1:"N";s:1:"Q";s:1:"B";a:4:{i:0;s:2:"43";i:1;s:4:"-138";i:2;s:3:"557";i:3;s:3:"580";}}i:82;a:4:{s:1:"C";s:2:"82";s:2:"WX";s:3:"600";s:1:"N";s:1:"R";s:1:"B";a:4:{i:0;s:2:"38";i:1;s:1:"0";i:2;s:3:"588";i:3;s:3:"562";}}s:1:"R";a:4:{s:1:"C";s:2:"82";s:2:"WX";s:3:"600";s:1:"N";s:1:"R";s:1:"B";a:4:{i:0;s:2:"38";i:1;s:1:"0";i:2;s:3:"588";i:3;s:3:"562";}}i:83;a:4:{s:1:"C";s:2:"83";s:2:"WX";s:3:"600";s:1:"N";s:1:"S";s:1:"B";a:4:{i:0;s:2:"72";i:1;s:3:"-20";i:2;s:3:"529";i:3;s:3:"580";}}s:1:"S";a:4:{s:1:"C";s:2:"83";s:2:"WX";s:3:"600";s:1:"N";s:1:"S";s:1:"B";a:4:{i:0;s:2:"72";i:1;s:3:"-20";i:2;s:3:"529";i:3;s:3:"580";}}i:84;a:4:{s:1:"C";s:2:"84";s:2:"WX";s:3:"600";s:1:"N";s:1:"T";s:1:"B";a:4:{i:0;s:2:"38";i:1;s:1:"0";i:2;s:3:"563";i:3;s:3:"562";}}s:1:"T";a:4:{s:1:"C";s:2:"84";s:2:"WX";s:3:"600";s:1:"N";s:1:"T";s:1:"B";a:4:{i:0;s:2:"38";i:1;s:1:"0";i:2;s:3:"563";i:3;s:3:"562";}}i:85;a:4:{s:1:"C";s:2:"85";s:2:"WX";s:3:"600";s:1:"N";s:1:"U";s:1:"B";a:4:{i:0;s:2:"17";i:1;s:3:"-18";i:2;s:3:"583";i:3;s:3:"562";}}s:1:"U";a:4:{s:1:"C";s:2:"85";s:2:"WX";s:3:"600";s:1:"N";s:1:"U";s:1:"B";a:4:{i:0;s:2:"17";i:1;s:3:"-18";i:2;s:3:"583";i:3;s:3:"562";}}i:86;a:4:{s:1:"C";s:2:"86";s:2:"WX";s:3:"600";s:1:"N";s:1:"V";s:1:"B";a:4:{i:0;s:2:"-4";i:1;s:3:"-13";i:2;s:3:"604";i:3;s:3:"562";}}s:1:"V";a:4:{s:1:"C";s:2:"86";s:2:"WX";s:3:"600";s:1:"N";s:1:"V";s:1:"B";a:4:{i:0;s:2:"-4";i:1;s:3:"-13";i:2;s:3:"604";i:3;s:3:"562";}}i:87;a:4:{s:1:"C";s:2:"87";s:2:"WX";s:3:"600";s:1:"N";s:1:"W";s:1:"B";a:4:{i:0;s:2:"-3";i:1;s:3:"-13";i:2;s:3:"603";i:3;s:3:"562";}}s:1:"W";a:4:{s:1:"C";s:2:"87";s:2:"WX";s:3:"600";s:1:"N";s:1:"W";s:1:"B";a:4:{i:0;s:2:"-3";i:1;s:3:"-13";i:2;s:3:"603";i:3;s:3:"562";}}i:88;a:4:{s:1:"C";s:2:"88";s:2:"WX";s:3:"600";s:1:"N";s:1:"X";s:1:"B";a:4:{i:0;s:2:"23";i:1;s:1:"0";i:2;s:3:"577";i:3;s:3:"562";}}s:1:"X";a:4:{s:1:"C";s:2:"88";s:2:"WX";s:3:"600";s:1:"N";s:1:"X";s:1:"B";a:4:{i:0;s:2:"23";i:1;s:1:"0";i:2;s:3:"577";i:3;s:3:"562";}}i:89;a:4:{s:1:"C";s:2:"89";s:2:"WX";s:3:"600";s:1:"N";s:1:"Y";s:1:"B";a:4:{i:0;s:2:"24";i:1;s:1:"0";i:2;s:3:"576";i:3;s:3:"562";}}s:1:"Y";a:4:{s:1:"C";s:2:"89";s:2:"WX";s:3:"600";s:1:"N";s:1:"Y";s:1:"B";a:4:{i:0;s:2:"24";i:1;s:1:"0";i:2;s:3:"576";i:3;s:3:"562";}}i:90;a:4:{s:1:"C";s:2:"90";s:2:"WX";s:3:"600";s:1:"N";s:1:"Z";s:1:"B";a:4:{i:0;s:2:"86";i:1;s:1:"0";i:2;s:3:"514";i:3;s:3:"562";}}s:1:"Z";a:4:{s:1:"C";s:2:"90";s:2:"WX";s:3:"600";s:1:"N";s:1:"Z";s:1:"B";a:4:{i:0;s:2:"86";i:1;s:1:"0";i:2;s:3:"514";i:3;s:3:"562";}}i:91;a:4:{s:1:"C";s:2:"91";s:2:"WX";s:3:"600";s:1:"N";s:11:"bracketleft";s:1:"B";a:4:{i:0;s:3:"269";i:1;s:4:"-108";i:2;s:3:"442";i:3;s:3:"622";}}s:11:"bracketleft";a:4:{s:1:"C";s:2:"91";s:2:"WX";s:3:"600";s:1:"N";s:11:"bracketleft";s:1:"B";a:4:{i:0;s:3:"269";i:1;s:4:"-108";i:2;s:3:"442";i:3;s:3:"622";}}i:92;a:4:{s:1:"C";s:2:"92";s:2:"WX";s:3:"600";s:1:"N";s:9:"backslash";s:1:"B";a:4:{i:0;s:3:"118";i:1;s:3:"-80";i:2;s:3:"482";i:3;s:3:"629";}}s:9:"backslash";a:4:{s:1:"C";s:2:"92";s:2:"WX";s:3:"600";s:1:"N";s:9:"backslash";s:1:"B";a:4:{i:0;s:3:"118";i:1;s:3:"-80";i:2;s:3:"482";i:3;s:3:"629";}}i:93;a:4:{s:1:"C";s:2:"93";s:2:"WX";s:3:"600";s:1:"N";s:12:"bracketright";s:1:"B";a:4:{i:0;s:3:"158";i:1;s:4:"-108";i:2;s:3:"331";i:3;s:3:"622";}}s:12:"bracketright";a:4:{s:1:"C";s:2:"93";s:2:"WX";s:3:"600";s:1:"N";s:12:"bracketright";s:1:"B";a:4:{i:0;s:3:"158";i:1;s:4:"-108";i:2;s:3:"331";i:3;s:3:"622";}}i:94;a:4:{s:1:"C";s:2:"94";s:2:"WX";s:3:"600";s:1:"N";s:11:"asciicircum";s:1:"B";a:4:{i:0;s:2:"94";i:1;s:3:"354";i:2;s:3:"506";i:3;s:3:"622";}}s:11:"asciicircum";a:4:{s:1:"C";s:2:"94";s:2:"WX";s:3:"600";s:1:"N";s:11:"asciicircum";s:1:"B";a:4:{i:0;s:2:"94";i:1;s:3:"354";i:2;s:3:"506";i:3;s:3:"622";}}i:95;a:4:{s:1:"C";s:2:"95";s:2:"WX";s:3:"600";s:1:"N";s:10:"underscore";s:1:"B";a:4:{i:0;s:1:"0";i:1;s:4:"-125";i:2;s:3:"600";i:3;s:3:"-75";}}s:10:"underscore";a:4:{s:1:"C";s:2:"95";s:2:"WX";s:3:"600";s:1:"N";s:10:"underscore";s:1:"B";a:4:{i:0;s:1:"0";i:1;s:4:"-125";i:2;s:3:"600";i:3;s:3:"-75";}}i:96;a:4:{s:1:"C";s:2:"96";s:2:"WX";s:3:"600";s:1:"N";s:9:"quoteleft";s:1:"B";a:4:{i:0;s:3:"224";i:1;s:3:"328";i:2;s:3:"387";i:3;s:3:"562";}}s:9:"quoteleft";a:4:{s:1:"C";s:2:"96";s:2:"WX";s:3:"600";s:1:"N";s:9:"quoteleft";s:1:"B";a:4:{i:0;s:3:"224";i:1;s:3:"328";i:2;s:3:"387";i:3;s:3:"562";}}i:97;a:4:{s:1:"C";s:2:"97";s:2:"WX";s:3:"600";s:1:"N";s:1:"a";s:1:"B";a:4:{i:0;s:2:"53";i:1;s:3:"-15";i:2;s:3:"559";i:3;s:3:"441";}}s:1:"a";a:4:{s:1:"C";s:2:"97";s:2:"WX";s:3:"600";s:1:"N";s:1:"a";s:1:"B";a:4:{i:0;s:2:"53";i:1;s:3:"-15";i:2;s:3:"559";i:3;s:3:"441";}}i:98;a:4:{s:1:"C";s:2:"98";s:2:"WX";s:3:"600";s:1:"N";s:1:"b";s:1:"B";a:4:{i:0;s:2:"14";i:1;s:3:"-15";i:2;s:3:"575";i:3;s:3:"629";}}s:1:"b";a:4:{s:1:"C";s:2:"98";s:2:"WX";s:3:"600";s:1:"N";s:1:"b";s:1:"B";a:4:{i:0;s:2:"14";i:1;s:3:"-15";i:2;s:3:"575";i:3;s:3:"629";}}i:99;a:4:{s:1:"C";s:2:"99";s:2:"WX";s:3:"600";s:1:"N";s:1:"c";s:1:"B";a:4:{i:0;s:2:"66";i:1;s:3:"-15";i:2;s:3:"529";i:3;s:3:"441";}}s:1:"c";a:4:{s:1:"C";s:2:"99";s:2:"WX";s:3:"600";s:1:"N";s:1:"c";s:1:"B";a:4:{i:0;s:2:"66";i:1;s:3:"-15";i:2;s:3:"529";i:3;s:3:"441";}}i:100;a:4:{s:1:"C";s:3:"100";s:2:"WX";s:3:"600";s:1:"N";s:1:"d";s:1:"B";a:4:{i:0;s:2:"45";i:1;s:3:"-15";i:2;s:3:"591";i:3;s:3:"629";}}s:1:"d";a:4:{s:1:"C";s:3:"100";s:2:"WX";s:3:"600";s:1:"N";s:1:"d";s:1:"B";a:4:{i:0;s:2:"45";i:1;s:3:"-15";i:2;s:3:"591";i:3;s:3:"629";}}i:101;a:4:{s:1:"C";s:3:"101";s:2:"WX";s:3:"600";s:1:"N";s:1:"e";s:1:"B";a:4:{i:0;s:2:"66";i:1;s:3:"-15";i:2;s:3:"548";i:3;s:3:"441";}}s:1:"e";a:4:{s:1:"C";s:3:"101";s:2:"WX";s:3:"600";s:1:"N";s:1:"e";s:1:"B";a:4:{i:0;s:2:"66";i:1;s:3:"-15";i:2;s:3:"548";i:3;s:3:"441";}}i:102;a:5:{s:1:"C";s:3:"102";s:2:"WX";s:3:"600";s:1:"N";s:1:"f";s:1:"B";a:4:{i:0;s:3:"114";i:1;s:1:"0";i:2;s:3:"531";i:3;s:3:"629";}s:1:"L";a:2:{i:0;s:1:"l";i:1;s:2:"fl";}}s:1:"f";a:5:{s:1:"C";s:3:"102";s:2:"WX";s:3:"600";s:1:"N";s:1:"f";s:1:"B";a:4:{i:0;s:3:"114";i:1;s:1:"0";i:2;s:3:"531";i:3;s:3:"629";}s:1:"L";a:2:{i:0;s:1:"l";i:1;s:2:"fl";}}i:103;a:4:{s:1:"C";s:3:"103";s:2:"WX";s:3:"600";s:1:"N";s:1:"g";s:1:"B";a:4:{i:0;s:2:"45";i:1;s:4:"-157";i:2;s:3:"566";i:3;s:3:"441";}}s:1:"g";a:4:{s:1:"C";s:3:"103";s:2:"WX";s:3:"600";s:1:"N";s:1:"g";s:1:"B";a:4:{i:0;s:2:"45";i:1;s:4:"-157";i:2;s:3:"566";i:3;s:3:"441";}}i:104;a:4:{s:1:"C";s:3:"104";s:2:"WX";s:3:"600";s:1:"N";s:1:"h";s:1:"B";a:4:{i:0;s:2:"18";i:1;s:1:"0";i:2;s:3:"582";i:3;s:3:"629";}}s:1:"h";a:4:{s:1:"C";s:3:"104";s:2:"WX";s:3:"600";s:1:"N";s:1:"h";s:1:"B";a:4:{i:0;s:2:"18";i:1;s:1:"0";i:2;s:3:"582";i:3;s:3:"629";}}i:105;a:4:{s:1:"C";s:3:"105";s:2:"WX";s:3:"600";s:1:"N";s:1:"i";s:1:"B";a:4:{i:0;s:2:"95";i:1;s:1:"0";i:2;s:3:"505";i:3;s:3:"657";}}s:1:"i";a:4:{s:1:"C";s:3:"105";s:2:"WX";s:3:"600";s:1:"N";s:1:"i";s:1:"B";a:4:{i:0;s:2:"95";i:1;s:1:"0";i:2;s:3:"505";i:3;s:3:"657";}}i:106;a:4:{s:1:"C";s:3:"106";s:2:"WX";s:3:"600";s:1:"N";s:1:"j";s:1:"B";a:4:{i:0;s:2:"82";i:1;s:4:"-157";i:2;s:3:"410";i:3;s:3:"657";}}s:1:"j";a:4:{s:1:"C";s:3:"106";s:2:"WX";s:3:"600";s:1:"N";s:1:"j";s:1:"B";a:4:{i:0;s:2:"82";i:1;s:4:"-157";i:2;s:3:"410";i:3;s:3:"657";}}i:107;a:4:{s:1:"C";s:3:"107";s:2:"WX";s:3:"600";s:1:"N";s:1:"k";s:1:"B";a:4:{i:0;s:2:"43";i:1;s:1:"0";i:2;s:3:"580";i:3;s:3:"629";}}s:1:"k";a:4:{s:1:"C";s:3:"107";s:2:"WX";s:3:"600";s:1:"N";s:1:"k";s:1:"B";a:4:{i:0;s:2:"43";i:1;s:1:"0";i:2;s:3:"580";i:3;s:3:"629";}}i:108;a:4:{s:1:"C";s:3:"108";s:2:"WX";s:3:"600";s:1:"N";s:1:"l";s:1:"B";a:4:{i:0;s:2:"95";i:1;s:1:"0";i:2;s:3:"505";i:3;s:3:"629";}}s:1:"l";a:4:{s:1:"C";s:3:"108";s:2:"WX";s:3:"600";s:1:"N";s:1:"l";s:1:"B";a:4:{i:0;s:2:"95";i:1;s:1:"0";i:2;s:3:"505";i:3;s:3:"629";}}i:109;a:4:{s:1:"C";s:3:"109";s:2:"WX";s:3:"600";s:1:"N";s:1:"m";s:1:"B";a:4:{i:0;s:2:"-5";i:1;s:1:"0";i:2;s:3:"605";i:3;s:3:"441";}}s:1:"m";a:4:{s:1:"C";s:3:"109";s:2:"WX";s:3:"600";s:1:"N";s:1:"m";s:1:"B";a:4:{i:0;s:2:"-5";i:1;s:1:"0";i:2;s:3:"605";i:3;s:3:"441";}}i:110;a:4:{s:1:"C";s:3:"110";s:2:"WX";s:3:"600";s:1:"N";s:1:"n";s:1:"B";a:4:{i:0;s:2:"26";i:1;s:1:"0";i:2;s:3:"575";i:3;s:3:"441";}}s:1:"n";a:4:{s:1:"C";s:3:"110";s:2:"WX";s:3:"600";s:1:"N";s:1:"n";s:1:"B";a:4:{i:0;s:2:"26";i:1;s:1:"0";i:2;s:3:"575";i:3;s:3:"441";}}i:111;a:4:{s:1:"C";s:3:"111";s:2:"WX";s:3:"600";s:1:"N";s:1:"o";s:1:"B";a:4:{i:0;s:2:"62";i:1;s:3:"-15";i:2;s:3:"538";i:3;s:3:"441";}}s:1:"o";a:4:{s:1:"C";s:3:"111";s:2:"WX";s:3:"600";s:1:"N";s:1:"o";s:1:"B";a:4:{i:0;s:2:"62";i:1;s:3:"-15";i:2;s:3:"538";i:3;s:3:"441";}}i:112;a:4:{s:1:"C";s:3:"112";s:2:"WX";s:3:"600";s:1:"N";s:1:"p";s:1:"B";a:4:{i:0;s:1:"9";i:1;s:4:"-157";i:2;s:3:"555";i:3;s:3:"441";}}s:1:"p";a:4:{s:1:"C";s:3:"112";s:2:"WX";s:3:"600";s:1:"N";s:1:"p";s:1:"B";a:4:{i:0;s:1:"9";i:1;s:4:"-157";i:2;s:3:"555";i:3;s:3:"441";}}i:113;a:4:{s:1:"C";s:3:"113";s:2:"WX";s:3:"600";s:1:"N";s:1:"q";s:1:"B";a:4:{i:0;s:2:"45";i:1;s:4:"-157";i:2;s:3:"591";i:3;s:3:"441";}}s:1:"q";a:4:{s:1:"C";s:3:"113";s:2:"WX";s:3:"600";s:1:"N";s:1:"q";s:1:"B";a:4:{i:0;s:2:"45";i:1;s:4:"-157";i:2;s:3:"591";i:3;s:3:"441";}}i:114;a:4:{s:1:"C";s:3:"114";s:2:"WX";s:3:"600";s:1:"N";s:1:"r";s:1:"B";a:4:{i:0;s:2:"60";i:1;s:1:"0";i:2;s:3:"559";i:3;s:3:"441";}}s:1:"r";a:4:{s:1:"C";s:3:"114";s:2:"WX";s:3:"600";s:1:"N";s:1:"r";s:1:"B";a:4:{i:0;s:2:"60";i:1;s:1:"0";i:2;s:3:"559";i:3;s:3:"441";}}i:115;a:4:{s:1:"C";s:3:"115";s:2:"WX";s:3:"600";s:1:"N";s:1:"s";s:1:"B";a:4:{i:0;s:2:"80";i:1;s:3:"-15";i:2;s:3:"513";i:3;s:3:"441";}}s:1:"s";a:4:{s:1:"C";s:3:"115";s:2:"WX";s:3:"600";s:1:"N";s:1:"s";s:1:"B";a:4:{i:0;s:2:"80";i:1;s:3:"-15";i:2;s:3:"513";i:3;s:3:"441";}}i:116;a:4:{s:1:"C";s:3:"116";s:2:"WX";s:3:"600";s:1:"N";s:1:"t";s:1:"B";a:4:{i:0;s:2:"87";i:1;s:3:"-15";i:2;s:3:"530";i:3;s:3:"561";}}s:1:"t";a:4:{s:1:"C";s:3:"116";s:2:"WX";s:3:"600";s:1:"N";s:1:"t";s:1:"B";a:4:{i:0;s:2:"87";i:1;s:3:"-15";i:2;s:3:"530";i:3;s:3:"561";}}i:117;a:4:{s:1:"C";s:3:"117";s:2:"WX";s:3:"600";s:1:"N";s:1:"u";s:1:"B";a:4:{i:0;s:2:"21";i:1;s:3:"-15";i:2;s:3:"562";i:3;s:3:"426";}}s:1:"u";a:4:{s:1:"C";s:3:"117";s:2:"WX";s:3:"600";s:1:"N";s:1:"u";s:1:"B";a:4:{i:0;s:2:"21";i:1;s:3:"-15";i:2;s:3:"562";i:3;s:3:"426";}}i:118;a:4:{s:1:"C";s:3:"118";s:2:"WX";s:3:"600";s:1:"N";s:1:"v";s:1:"B";a:4:{i:0;s:2:"10";i:1;s:3:"-10";i:2;s:3:"590";i:3;s:3:"426";}}s:1:"v";a:4:{s:1:"C";s:3:"118";s:2:"WX";s:3:"600";s:1:"N";s:1:"v";s:1:"B";a:4:{i:0;s:2:"10";i:1;s:3:"-10";i:2;s:3:"590";i:3;s:3:"426";}}i:119;a:4:{s:1:"C";s:3:"119";s:2:"WX";s:3:"600";s:1:"N";s:1:"w";s:1:"B";a:4:{i:0;s:2:"-4";i:1;s:3:"-10";i:2;s:3:"604";i:3;s:3:"426";}}s:1:"w";a:4:{s:1:"C";s:3:"119";s:2:"WX";s:3:"600";s:1:"N";s:1:"w";s:1:"B";a:4:{i:0;s:2:"-4";i:1;s:3:"-10";i:2;s:3:"604";i:3;s:3:"426";}}i:120;a:4:{s:1:"C";s:3:"120";s:2:"WX";s:3:"600";s:1:"N";s:1:"x";s:1:"B";a:4:{i:0;s:2:"20";i:1;s:1:"0";i:2;s:3:"580";i:3;s:3:"426";}}s:1:"x";a:4:{s:1:"C";s:3:"120";s:2:"WX";s:3:"600";s:1:"N";s:1:"x";s:1:"B";a:4:{i:0;s:2:"20";i:1;s:1:"0";i:2;s:3:"580";i:3;s:3:"426";}}i:121;a:4:{s:1:"C";s:3:"121";s:2:"WX";s:3:"600";s:1:"N";s:1:"y";s:1:"B";a:4:{i:0;s:1:"7";i:1;s:4:"-157";i:2;s:3:"592";i:3;s:3:"426";}}s:1:"y";a:4:{s:1:"C";s:3:"121";s:2:"WX";s:3:"600";s:1:"N";s:1:"y";s:1:"B";a:4:{i:0;s:1:"7";i:1;s:4:"-157";i:2;s:3:"592";i:3;s:3:"426";}}i:122;a:4:{s:1:"C";s:3:"122";s:2:"WX";s:3:"600";s:1:"N";s:1:"z";s:1:"B";a:4:{i:0;s:2:"99";i:1;s:1:"0";i:2;s:3:"502";i:3;s:3:"426";}}s:1:"z";a:4:{s:1:"C";s:3:"122";s:2:"WX";s:3:"600";s:1:"N";s:1:"z";s:1:"B";a:4:{i:0;s:2:"99";i:1;s:1:"0";i:2;s:3:"502";i:3;s:3:"426";}}i:123;a:4:{s:1:"C";s:3:"123";s:2:"WX";s:3:"600";s:1:"N";s:9:"braceleft";s:1:"B";a:4:{i:0;s:3:"182";i:1;s:4:"-108";i:2;s:3:"437";i:3;s:3:"622";}}s:9:"braceleft";a:4:{s:1:"C";s:3:"123";s:2:"WX";s:3:"600";s:1:"N";s:9:"braceleft";s:1:"B";a:4:{i:0;s:3:"182";i:1;s:4:"-108";i:2;s:3:"437";i:3;s:3:"622";}}i:124;a:4:{s:1:"C";s:3:"124";s:2:"WX";s:3:"600";s:1:"N";s:3:"bar";s:1:"B";a:4:{i:0;s:3:"275";i:1;s:4:"-250";i:2;s:3:"326";i:3;s:3:"750";}}s:3:"bar";a:4:{s:1:"C";s:3:"124";s:2:"WX";s:3:"600";s:1:"N";s:3:"bar";s:1:"B";a:4:{i:0;s:3:"275";i:1;s:4:"-250";i:2;s:3:"326";i:3;s:3:"750";}}i:125;a:4:{s:1:"C";s:3:"125";s:2:"WX";s:3:"600";s:1:"N";s:10:"braceright";s:1:"B";a:4:{i:0;s:3:"163";i:1;s:4:"-108";i:2;s:3:"418";i:3;s:3:"622";}}s:10:"braceright";a:4:{s:1:"C";s:3:"125";s:2:"WX";s:3:"600";s:1:"N";s:10:"braceright";s:1:"B";a:4:{i:0;s:3:"163";i:1;s:4:"-108";i:2;s:3:"418";i:3;s:3:"622";}}i:126;a:4:{s:1:"C";s:3:"126";s:2:"WX";s:3:"600";s:1:"N";s:10:"asciitilde";s:1:"B";a:4:{i:0;s:2:"63";i:1;s:3:"197";i:2;s:3:"540";i:3;s:3:"320";}}s:10:"asciitilde";a:4:{s:1:"C";s:3:"126";s:2:"WX";s:3:"600";s:1:"N";s:10:"asciitilde";s:1:"B";a:4:{i:0;s:2:"63";i:1;s:3:"197";i:2;s:3:"540";i:3;s:3:"320";}}i:161;a:4:{s:1:"C";s:3:"161";s:2:"WX";s:3:"600";s:1:"N";s:10:"exclamdown";s:1:"B";a:4:{i:0;s:3:"236";i:1;s:4:"-157";i:2;s:3:"364";i:3;s:3:"430";}}s:10:"exclamdown";a:4:{s:1:"C";s:3:"161";s:2:"WX";s:3:"600";s:1:"N";s:10:"exclamdown";s:1:"B";a:4:{i:0;s:3:"236";i:1;s:4:"-157";i:2;s:3:"364";i:3;s:3:"430";}}i:162;a:4:{s:1:"C";s:3:"162";s:2:"WX";s:3:"600";s:1:"N";s:4:"cent";s:1:"B";a:4:{i:0;s:2:"96";i:1;s:3:"-49";i:2;s:3:"500";i:3;s:3:"614";}}s:4:"cent";a:4:{s:1:"C";s:3:"162";s:2:"WX";s:3:"600";s:1:"N";s:4:"cent";s:1:"B";a:4:{i:0;s:2:"96";i:1;s:3:"-49";i:2;s:3:"500";i:3;s:3:"614";}}i:163;a:4:{s:1:"C";s:3:"163";s:2:"WX";s:3:"600";s:1:"N";s:8:"sterling";s:1:"B";a:4:{i:0;s:2:"84";i:1;s:3:"-21";i:2;s:3:"521";i:3;s:3:"611";}}s:8:"sterling";a:4:{s:1:"C";s:3:"163";s:2:"WX";s:3:"600";s:1:"N";s:8:"sterling";s:1:"B";a:4:{i:0;s:2:"84";i:1;s:3:"-21";i:2;s:3:"521";i:3;s:3:"611";}}i:164;a:4:{s:1:"C";s:3:"164";s:2:"WX";s:3:"600";s:1:"N";s:8:"fraction";s:1:"B";a:4:{i:0;s:2:"92";i:1;s:3:"-57";i:2;s:3:"509";i:3;s:3:"665";}}s:8:"fraction";a:4:{s:1:"C";s:3:"164";s:2:"WX";s:3:"600";s:1:"N";s:8:"fraction";s:1:"B";a:4:{i:0;s:2:"92";i:1;s:3:"-57";i:2;s:3:"509";i:3;s:3:"665";}}i:165;a:4:{s:1:"C";s:3:"165";s:2:"WX";s:3:"600";s:1:"N";s:3:"yen";s:1:"B";a:4:{i:0;s:2:"26";i:1;s:1:"0";i:2;s:3:"574";i:3;s:3:"562";}}s:3:"yen";a:4:{s:1:"C";s:3:"165";s:2:"WX";s:3:"600";s:1:"N";s:3:"yen";s:1:"B";a:4:{i:0;s:2:"26";i:1;s:1:"0";i:2;s:3:"574";i:3;s:3:"562";}}i:166;a:4:{s:1:"C";s:3:"166";s:2:"WX";s:3:"600";s:1:"N";s:6:"florin";s:1:"B";a:4:{i:0;s:1:"4";i:1;s:4:"-143";i:2;s:3:"539";i:3;s:3:"622";}}s:6:"florin";a:4:{s:1:"C";s:3:"166";s:2:"WX";s:3:"600";s:1:"N";s:6:"florin";s:1:"B";a:4:{i:0;s:1:"4";i:1;s:4:"-143";i:2;s:3:"539";i:3;s:3:"622";}}i:167;a:4:{s:1:"C";s:3:"167";s:2:"WX";s:3:"600";s:1:"N";s:7:"section";s:1:"B";a:4:{i:0;s:3:"113";i:1;s:3:"-78";i:2;s:3:"488";i:3;s:3:"580";}}s:7:"section";a:4:{s:1:"C";s:3:"167";s:2:"WX";s:3:"600";s:1:"N";s:7:"section";s:1:"B";a:4:{i:0;s:3:"113";i:1;s:3:"-78";i:2;s:3:"488";i:3;s:3:"580";}}i:168;a:4:{s:1:"C";s:3:"168";s:2:"WX";s:3:"600";s:1:"N";s:8:"currency";s:1:"B";a:4:{i:0;s:2:"73";i:1;s:2:"58";i:2;s:3:"527";i:3;s:3:"506";}}s:8:"currency";a:4:{s:1:"C";s:3:"168";s:2:"WX";s:3:"600";s:1:"N";s:8:"currency";s:1:"B";a:4:{i:0;s:2:"73";i:1;s:2:"58";i:2;s:3:"527";i:3;s:3:"506";}}i:169;a:4:{s:1:"C";s:3:"169";s:2:"WX";s:3:"600";s:1:"N";s:11:"quotesingle";s:1:"B";a:4:{i:0;s:3:"259";i:1;s:3:"328";i:2;s:3:"341";i:3;s:3:"562";}}s:11:"quotesingle";a:4:{s:1:"C";s:3:"169";s:2:"WX";s:3:"600";s:1:"N";s:11:"quotesingle";s:1:"B";a:4:{i:0;s:3:"259";i:1;s:3:"328";i:2;s:3:"341";i:3;s:3:"562";}}i:170;a:4:{s:1:"C";s:3:"170";s:2:"WX";s:3:"600";s:1:"N";s:12:"quotedblleft";s:1:"B";a:4:{i:0;s:3:"143";i:1;s:3:"328";i:2;s:3:"471";i:3;s:3:"562";}}s:12:"quotedblleft";a:4:{s:1:"C";s:3:"170";s:2:"WX";s:3:"600";s:1:"N";s:12:"quotedblleft";s:1:"B";a:4:{i:0;s:3:"143";i:1;s:3:"328";i:2;s:3:"471";i:3;s:3:"562";}}i:171;a:4:{s:1:"C";s:3:"171";s:2:"WX";s:3:"600";s:1:"N";s:13:"guillemotleft";s:1:"B";a:4:{i:0;s:2:"37";i:1;s:2:"70";i:2;s:3:"563";i:3;s:3:"446";}}s:13:"guillemotleft";a:4:{s:1:"C";s:3:"171";s:2:"WX";s:3:"600";s:1:"N";s:13:"guillemotleft";s:1:"B";a:4:{i:0;s:2:"37";i:1;s:2:"70";i:2;s:3:"563";i:3;s:3:"446";}}i:172;a:4:{s:1:"C";s:3:"172";s:2:"WX";s:3:"600";s:1:"N";s:13:"guilsinglleft";s:1:"B";a:4:{i:0;s:3:"149";i:1;s:2:"70";i:2;s:3:"451";i:3;s:3:"446";}}s:13:"guilsinglleft";a:4:{s:1:"C";s:3:"172";s:2:"WX";s:3:"600";s:1:"N";s:13:"guilsinglleft";s:1:"B";a:4:{i:0;s:3:"149";i:1;s:2:"70";i:2;s:3:"451";i:3;s:3:"446";}}i:173;a:4:{s:1:"C";s:3:"173";s:2:"WX";s:3:"600";s:1:"N";s:14:"guilsinglright";s:1:"B";a:4:{i:0;s:3:"149";i:1;s:2:"70";i:2;s:3:"451";i:3;s:3:"446";}}s:14:"guilsinglright";a:4:{s:1:"C";s:3:"173";s:2:"WX";s:3:"600";s:1:"N";s:14:"guilsinglright";s:1:"B";a:4:{i:0;s:3:"149";i:1;s:2:"70";i:2;s:3:"451";i:3;s:3:"446";}}i:174;a:4:{s:1:"C";s:3:"174";s:2:"WX";s:3:"600";s:1:"N";s:2:"fi";s:1:"B";a:4:{i:0;s:1:"3";i:1;s:1:"0";i:2;s:3:"597";i:3;s:3:"629";}}s:2:"fi";a:4:{s:1:"C";s:3:"174";s:2:"WX";s:3:"600";s:1:"N";s:2:"fi";s:1:"B";a:4:{i:0;s:1:"3";i:1;s:1:"0";i:2;s:3:"597";i:3;s:3:"629";}}i:175;a:4:{s:1:"C";s:3:"175";s:2:"WX";s:3:"600";s:1:"N";s:2:"fl";s:1:"B";a:4:{i:0;s:1:"3";i:1;s:1:"0";i:2;s:3:"597";i:3;s:3:"629";}}s:2:"fl";a:4:{s:1:"C";s:3:"175";s:2:"WX";s:3:"600";s:1:"N";s:2:"fl";s:1:"B";a:4:{i:0;s:1:"3";i:1;s:1:"0";i:2;s:3:"597";i:3;s:3:"629";}}i:177;a:4:{s:1:"C";s:3:"177";s:2:"WX";s:3:"600";s:1:"N";s:6:"endash";s:1:"B";a:4:{i:0;s:2:"75";i:1;s:3:"231";i:2;s:3:"525";i:3;s:3:"285";}}s:6:"endash";a:4:{s:1:"C";s:3:"177";s:2:"WX";s:3:"600";s:1:"N";s:6:"endash";s:1:"B";a:4:{i:0;s:2:"75";i:1;s:3:"231";i:2;s:3:"525";i:3;s:3:"285";}}i:178;a:4:{s:1:"C";s:3:"178";s:2:"WX";s:3:"600";s:1:"N";s:6:"dagger";s:1:"B";a:4:{i:0;s:3:"141";i:1;s:3:"-78";i:2;s:3:"459";i:3;s:3:"580";}}s:6:"dagger";a:4:{s:1:"C";s:3:"178";s:2:"WX";s:3:"600";s:1:"N";s:6:"dagger";s:1:"B";a:4:{i:0;s:3:"141";i:1;s:3:"-78";i:2;s:3:"459";i:3;s:3:"580";}}i:179;a:4:{s:1:"C";s:3:"179";s:2:"WX";s:3:"600";s:1:"N";s:9:"daggerdbl";s:1:"B";a:4:{i:0;s:3:"141";i:1;s:3:"-78";i:2;s:3:"459";i:3;s:3:"580";}}s:9:"daggerdbl";a:4:{s:1:"C";s:3:"179";s:2:"WX";s:3:"600";s:1:"N";s:9:"daggerdbl";s:1:"B";a:4:{i:0;s:3:"141";i:1;s:3:"-78";i:2;s:3:"459";i:3;s:3:"580";}}i:180;a:4:{s:1:"C";s:3:"180";s:2:"WX";s:3:"600";s:1:"N";s:14:"periodcentered";s:1:"B";a:4:{i:0;s:3:"222";i:1;s:3:"189";i:2;s:3:"378";i:3;s:3:"327";}}s:14:"periodcentered";a:4:{s:1:"C";s:3:"180";s:2:"WX";s:3:"600";s:1:"N";s:14:"periodcentered";s:1:"B";a:4:{i:0;s:3:"222";i:1;s:3:"189";i:2;s:3:"378";i:3;s:3:"327";}}i:182;a:4:{s:1:"C";s:3:"182";s:2:"WX";s:3:"600";s:1:"N";s:9:"paragraph";s:1:"B";a:4:{i:0;s:2:"50";i:1;s:3:"-78";i:2;s:3:"511";i:3;s:3:"562";}}s:9:"paragraph";a:4:{s:1:"C";s:3:"182";s:2:"WX";s:3:"600";s:1:"N";s:9:"paragraph";s:1:"B";a:4:{i:0;s:2:"50";i:1;s:3:"-78";i:2;s:3:"511";i:3;s:3:"562";}}i:183;a:4:{s:1:"C";s:3:"183";s:2:"WX";s:3:"600";s:1:"N";s:6:"bullet";s:1:"B";a:4:{i:0;s:3:"172";i:1;s:3:"130";i:2;s:3:"428";i:3;s:3:"383";}}s:6:"bullet";a:4:{s:1:"C";s:3:"183";s:2:"WX";s:3:"600";s:1:"N";s:6:"bullet";s:1:"B";a:4:{i:0;s:3:"172";i:1;s:3:"130";i:2;s:3:"428";i:3;s:3:"383";}}i:184;a:4:{s:1:"C";s:3:"184";s:2:"WX";s:3:"600";s:1:"N";s:14:"quotesinglbase";s:1:"B";a:4:{i:0;s:3:"213";i:1;s:4:"-134";i:2;s:3:"376";i:3;s:3:"100";}}s:14:"quotesinglbase";a:4:{s:1:"C";s:3:"184";s:2:"WX";s:3:"600";s:1:"N";s:14:"quotesinglbase";s:1:"B";a:4:{i:0;s:3:"213";i:1;s:4:"-134";i:2;s:3:"376";i:3;s:3:"100";}}i:185;a:4:{s:1:"C";s:3:"185";s:2:"WX";s:3:"600";s:1:"N";s:12:"quotedblbase";s:1:"B";a:4:{i:0;s:3:"143";i:1;s:4:"-134";i:2;s:3:"457";i:3;s:3:"100";}}s:12:"quotedblbase";a:4:{s:1:"C";s:3:"185";s:2:"WX";s:3:"600";s:1:"N";s:12:"quotedblbase";s:1:"B";a:4:{i:0;s:3:"143";i:1;s:4:"-134";i:2;s:3:"457";i:3;s:3:"100";}}i:186;a:4:{s:1:"C";s:3:"186";s:2:"WX";s:3:"600";s:1:"N";s:13:"quotedblright";s:1:"B";a:4:{i:0;s:3:"143";i:1;s:3:"328";i:2;s:3:"457";i:3;s:3:"562";}}s:13:"quotedblright";a:4:{s:1:"C";s:3:"186";s:2:"WX";s:3:"600";s:1:"N";s:13:"quotedblright";s:1:"B";a:4:{i:0;s:3:"143";i:1;s:3:"328";i:2;s:3:"457";i:3;s:3:"562";}}i:187;a:4:{s:1:"C";s:3:"187";s:2:"WX";s:3:"600";s:1:"N";s:14:"guillemotright";s:1:"B";a:4:{i:0;s:2:"37";i:1;s:2:"70";i:2;s:3:"563";i:3;s:3:"446";}}s:14:"guillemotright";a:4:{s:1:"C";s:3:"187";s:2:"WX";s:3:"600";s:1:"N";s:14:"guillemotright";s:1:"B";a:4:{i:0;s:2:"37";i:1;s:2:"70";i:2;s:3:"563";i:3;s:3:"446";}}i:188;a:4:{s:1:"C";s:3:"188";s:2:"WX";s:3:"600";s:1:"N";s:8:"ellipsis";s:1:"B";a:4:{i:0;s:2:"37";i:1;s:3:"-15";i:2;s:3:"563";i:3;s:3:"111";}}s:8:"ellipsis";a:4:{s:1:"C";s:3:"188";s:2:"WX";s:3:"600";s:1:"N";s:8:"ellipsis";s:1:"B";a:4:{i:0;s:2:"37";i:1;s:3:"-15";i:2;s:3:"563";i:3;s:3:"111";}}i:189;a:4:{s:1:"C";s:3:"189";s:2:"WX";s:3:"600";s:1:"N";s:11:"perthousand";s:1:"B";a:4:{i:0;s:1:"3";i:1;s:3:"-15";i:2;s:3:"600";i:3;s:3:"622";}}s:11:"perthousand";a:4:{s:1:"C";s:3:"189";s:2:"WX";s:3:"600";s:1:"N";s:11:"perthousand";s:1:"B";a:4:{i:0;s:1:"3";i:1;s:3:"-15";i:2;s:3:"600";i:3;s:3:"622";}}i:191;a:4:{s:1:"C";s:3:"191";s:2:"WX";s:3:"600";s:1:"N";s:12:"questiondown";s:1:"B";a:4:{i:0;s:3:"108";i:1;s:4:"-157";i:2;s:3:"471";i:3;s:3:"430";}}s:12:"questiondown";a:4:{s:1:"C";s:3:"191";s:2:"WX";s:3:"600";s:1:"N";s:12:"questiondown";s:1:"B";a:4:{i:0;s:3:"108";i:1;s:4:"-157";i:2;s:3:"471";i:3;s:3:"430";}}i:193;a:4:{s:1:"C";s:3:"193";s:2:"WX";s:3:"600";s:1:"N";s:5:"grave";s:1:"B";a:4:{i:0;s:3:"151";i:1;s:3:"497";i:2;s:3:"378";i:3;s:3:"672";}}s:5:"grave";a:4:{s:1:"C";s:3:"193";s:2:"WX";s:3:"600";s:1:"N";s:5:"grave";s:1:"B";a:4:{i:0;s:3:"151";i:1;s:3:"497";i:2;s:3:"378";i:3;s:3:"672";}}i:194;a:4:{s:1:"C";s:3:"194";s:2:"WX";s:3:"600";s:1:"N";s:5:"acute";s:1:"B";a:4:{i:0;s:3:"242";i:1;s:3:"497";i:2;s:3:"469";i:3;s:3:"672";}}s:5:"acute";a:4:{s:1:"C";s:3:"194";s:2:"WX";s:3:"600";s:1:"N";s:5:"acute";s:1:"B";a:4:{i:0;s:3:"242";i:1;s:3:"497";i:2;s:3:"469";i:3;s:3:"672";}}i:195;a:4:{s:1:"C";s:3:"195";s:2:"WX";s:3:"600";s:1:"N";s:10:"circumflex";s:1:"B";a:4:{i:0;s:3:"124";i:1;s:3:"477";i:2;s:3:"476";i:3;s:3:"654";}}s:10:"circumflex";a:4:{s:1:"C";s:3:"195";s:2:"WX";s:3:"600";s:1:"N";s:10:"circumflex";s:1:"B";a:4:{i:0;s:3:"124";i:1;s:3:"477";i:2;s:3:"476";i:3;s:3:"654";}}i:196;a:4:{s:1:"C";s:3:"196";s:2:"WX";s:3:"600";s:1:"N";s:5:"tilde";s:1:"B";a:4:{i:0;s:3:"105";i:1;s:3:"489";i:2;s:3:"503";i:3;s:3:"606";}}s:5:"tilde";a:4:{s:1:"C";s:3:"196";s:2:"WX";s:3:"600";s:1:"N";s:5:"tilde";s:1:"B";a:4:{i:0;s:3:"105";i:1;s:3:"489";i:2;s:3:"503";i:3;s:3:"606";}}i:197;a:4:{s:1:"C";s:3:"197";s:2:"WX";s:3:"600";s:1:"N";s:6:"macron";s:1:"B";a:4:{i:0;s:3:"120";i:1;s:3:"525";i:2;s:3:"480";i:3;s:3:"565";}}s:6:"macron";a:4:{s:1:"C";s:3:"197";s:2:"WX";s:3:"600";s:1:"N";s:6:"macron";s:1:"B";a:4:{i:0;s:3:"120";i:1;s:3:"525";i:2;s:3:"480";i:3;s:3:"565";}}i:198;a:4:{s:1:"C";s:3:"198";s:2:"WX";s:3:"600";s:1:"N";s:5:"breve";s:1:"B";a:4:{i:0;s:3:"153";i:1;s:3:"501";i:2;s:3:"447";i:3;s:3:"609";}}s:5:"breve";a:4:{s:1:"C";s:3:"198";s:2:"WX";s:3:"600";s:1:"N";s:5:"breve";s:1:"B";a:4:{i:0;s:3:"153";i:1;s:3:"501";i:2;s:3:"447";i:3;s:3:"609";}}i:199;a:4:{s:1:"C";s:3:"199";s:2:"WX";s:3:"600";s:1:"N";s:9:"dotaccent";s:1:"B";a:4:{i:0;s:3:"249";i:1;s:3:"537";i:2;s:3:"352";i:3;s:3:"640";}}s:9:"dotaccent";a:4:{s:1:"C";s:3:"199";s:2:"WX";s:3:"600";s:1:"N";s:9:"dotaccent";s:1:"B";a:4:{i:0;s:3:"249";i:1;s:3:"537";i:2;s:3:"352";i:3;s:3:"640";}}i:200;a:4:{s:1:"C";s:3:"200";s:2:"WX";s:3:"600";s:1:"N";s:8:"dieresis";s:1:"B";a:4:{i:0;s:3:"148";i:1;s:3:"537";i:2;s:3:"453";i:3;s:3:"640";}}s:8:"dieresis";a:4:{s:1:"C";s:3:"200";s:2:"WX";s:3:"600";s:1:"N";s:8:"dieresis";s:1:"B";a:4:{i:0;s:3:"148";i:1;s:3:"537";i:2;s:3:"453";i:3;s:3:"640";}}i:202;a:4:{s:1:"C";s:3:"202";s:2:"WX";s:3:"600";s:1:"N";s:4:"ring";s:1:"B";a:4:{i:0;s:3:"218";i:1;s:3:"463";i:2;s:3:"382";i:3;s:3:"627";}}s:4:"ring";a:4:{s:1:"C";s:3:"202";s:2:"WX";s:3:"600";s:1:"N";s:4:"ring";s:1:"B";a:4:{i:0;s:3:"218";i:1;s:3:"463";i:2;s:3:"382";i:3;s:3:"627";}}i:203;a:4:{s:1:"C";s:3:"203";s:2:"WX";s:3:"600";s:1:"N";s:7:"cedilla";s:1:"B";a:4:{i:0;s:3:"224";i:1;s:4:"-151";i:2;s:3:"362";i:3;s:2:"10";}}s:7:"cedilla";a:4:{s:1:"C";s:3:"203";s:2:"WX";s:3:"600";s:1:"N";s:7:"cedilla";s:1:"B";a:4:{i:0;s:3:"224";i:1;s:4:"-151";i:2;s:3:"362";i:3;s:2:"10";}}i:205;a:4:{s:1:"C";s:3:"205";s:2:"WX";s:3:"600";s:1:"N";s:12:"hungarumlaut";s:1:"B";a:4:{i:0;s:3:"133";i:1;s:3:"497";i:2;s:3:"540";i:3;s:3:"672";}}s:12:"hungarumlaut";a:4:{s:1:"C";s:3:"205";s:2:"WX";s:3:"600";s:1:"N";s:12:"hungarumlaut";s:1:"B";a:4:{i:0;s:3:"133";i:1;s:3:"497";i:2;s:3:"540";i:3;s:3:"672";}}i:206;a:4:{s:1:"C";s:3:"206";s:2:"WX";s:3:"600";s:1:"N";s:6:"ogonek";s:1:"B";a:4:{i:0;s:3:"211";i:1;s:4:"-172";i:2;s:3:"407";i:3;s:1:"4";}}s:6:"ogonek";a:4:{s:1:"C";s:3:"206";s:2:"WX";s:3:"600";s:1:"N";s:6:"ogonek";s:1:"B";a:4:{i:0;s:3:"211";i:1;s:4:"-172";i:2;s:3:"407";i:3;s:1:"4";}}i:207;a:4:{s:1:"C";s:3:"207";s:2:"WX";s:3:"600";s:1:"N";s:5:"caron";s:1:"B";a:4:{i:0;s:3:"124";i:1;s:3:"492";i:2;s:3:"476";i:3;s:3:"669";}}s:5:"caron";a:4:{s:1:"C";s:3:"207";s:2:"WX";s:3:"600";s:1:"N";s:5:"caron";s:1:"B";a:4:{i:0;s:3:"124";i:1;s:3:"492";i:2;s:3:"476";i:3;s:3:"669";}}i:208;a:4:{s:1:"C";s:3:"208";s:2:"WX";s:3:"600";s:1:"N";s:6:"emdash";s:1:"B";a:4:{i:0;s:1:"0";i:1;s:3:"231";i:2;s:3:"600";i:3;s:3:"285";}}s:6:"emdash";a:4:{s:1:"C";s:3:"208";s:2:"WX";s:3:"600";s:1:"N";s:6:"emdash";s:1:"B";a:4:{i:0;s:1:"0";i:1;s:3:"231";i:2;s:3:"600";i:3;s:3:"285";}}i:225;a:4:{s:1:"C";s:3:"225";s:2:"WX";s:3:"600";s:1:"N";s:2:"AE";s:1:"B";a:4:{i:0;s:1:"3";i:1;s:1:"0";i:2;s:3:"550";i:3;s:3:"562";}}s:2:"AE";a:4:{s:1:"C";s:3:"225";s:2:"WX";s:3:"600";s:1:"N";s:2:"AE";s:1:"B";a:4:{i:0;s:1:"3";i:1;s:1:"0";i:2;s:3:"550";i:3;s:3:"562";}}i:227;a:4:{s:1:"C";s:3:"227";s:2:"WX";s:3:"600";s:1:"N";s:11:"ordfeminine";s:1:"B";a:4:{i:0;s:3:"156";i:1;s:3:"249";i:2;s:3:"442";i:3;s:3:"580";}}s:11:"ordfeminine";a:4:{s:1:"C";s:3:"227";s:2:"WX";s:3:"600";s:1:"N";s:11:"ordfeminine";s:1:"B";a:4:{i:0;s:3:"156";i:1;s:3:"249";i:2;s:3:"442";i:3;s:3:"580";}}i:232;a:4:{s:1:"C";s:3:"232";s:2:"WX";s:3:"600";s:1:"N";s:6:"Lslash";s:1:"B";a:4:{i:0;s:2:"47";i:1;s:1:"0";i:2;s:3:"554";i:3;s:3:"562";}}s:6:"Lslash";a:4:{s:1:"C";s:3:"232";s:2:"WX";s:3:"600";s:1:"N";s:6:"Lslash";s:1:"B";a:4:{i:0;s:2:"47";i:1;s:1:"0";i:2;s:3:"554";i:3;s:3:"562";}}i:233;a:4:{s:1:"C";s:3:"233";s:2:"WX";s:3:"600";s:1:"N";s:6:"Oslash";s:1:"B";a:4:{i:0;s:2:"43";i:1;s:3:"-80";i:2;s:3:"557";i:3;s:3:"629";}}s:6:"Oslash";a:4:{s:1:"C";s:3:"233";s:2:"WX";s:3:"600";s:1:"N";s:6:"Oslash";s:1:"B";a:4:{i:0;s:2:"43";i:1;s:3:"-80";i:2;s:3:"557";i:3;s:3:"629";}}i:234;a:4:{s:1:"C";s:3:"234";s:2:"WX";s:3:"600";s:1:"N";s:2:"OE";s:1:"B";a:4:{i:0;s:1:"7";i:1;s:1:"0";i:2;s:3:"567";i:3;s:3:"562";}}s:2:"OE";a:4:{s:1:"C";s:3:"234";s:2:"WX";s:3:"600";s:1:"N";s:2:"OE";s:1:"B";a:4:{i:0;s:1:"7";i:1;s:1:"0";i:2;s:3:"567";i:3;s:3:"562";}}i:235;a:4:{s:1:"C";s:3:"235";s:2:"WX";s:3:"600";s:1:"N";s:12:"ordmasculine";s:1:"B";a:4:{i:0;s:3:"157";i:1;s:3:"249";i:2;s:3:"443";i:3;s:3:"580";}}s:12:"ordmasculine";a:4:{s:1:"C";s:3:"235";s:2:"WX";s:3:"600";s:1:"N";s:12:"ordmasculine";s:1:"B";a:4:{i:0;s:3:"157";i:1;s:3:"249";i:2;s:3:"443";i:3;s:3:"580";}}i:241;a:4:{s:1:"C";s:3:"241";s:2:"WX";s:3:"600";s:1:"N";s:2:"ae";s:1:"B";a:4:{i:0;s:2:"19";i:1;s:3:"-15";i:2;s:3:"570";i:3;s:3:"441";}}s:2:"ae";a:4:{s:1:"C";s:3:"241";s:2:"WX";s:3:"600";s:1:"N";s:2:"ae";s:1:"B";a:4:{i:0;s:2:"19";i:1;s:3:"-15";i:2;s:3:"570";i:3;s:3:"441";}}i:245;a:4:{s:1:"C";s:3:"245";s:2:"WX";s:3:"600";s:1:"N";s:8:"dotlessi";s:1:"B";a:4:{i:0;s:2:"95";i:1;s:1:"0";i:2;s:3:"505";i:3;s:3:"426";}}s:8:"dotlessi";a:4:{s:1:"C";s:3:"245";s:2:"WX";s:3:"600";s:1:"N";s:8:"dotlessi";s:1:"B";a:4:{i:0;s:2:"95";i:1;s:1:"0";i:2;s:3:"505";i:3;s:3:"426";}}i:248;a:4:{s:1:"C";s:3:"248";s:2:"WX";s:3:"600";s:1:"N";s:6:"lslash";s:1:"B";a:4:{i:0;s:2:"95";i:1;s:1:"0";i:2;s:3:"505";i:3;s:3:"629";}}s:6:"lslash";a:4:{s:1:"C";s:3:"248";s:2:"WX";s:3:"600";s:1:"N";s:6:"lslash";s:1:"B";a:4:{i:0;s:2:"95";i:1;s:1:"0";i:2;s:3:"505";i:3;s:3:"629";}}i:249;a:4:{s:1:"C";s:3:"249";s:2:"WX";s:3:"600";s:1:"N";s:6:"oslash";s:1:"B";a:4:{i:0;s:2:"62";i:1;s:3:"-80";i:2;s:3:"538";i:3;s:3:"506";}}s:6:"oslash";a:4:{s:1:"C";s:3:"249";s:2:"WX";s:3:"600";s:1:"N";s:6:"oslash";s:1:"B";a:4:{i:0;s:2:"62";i:1;s:3:"-80";i:2;s:3:"538";i:3;s:3:"506";}}i:250;a:4:{s:1:"C";s:3:"250";s:2:"WX";s:3:"600";s:1:"N";s:2:"oe";s:1:"B";a:4:{i:0;s:2:"19";i:1;s:3:"-15";i:2;s:3:"559";i:3;s:3:"441";}}s:2:"oe";a:4:{s:1:"C";s:3:"250";s:2:"WX";s:3:"600";s:1:"N";s:2:"oe";s:1:"B";a:4:{i:0;s:2:"19";i:1;s:3:"-15";i:2;s:3:"559";i:3;s:3:"441";}}i:251;a:4:{s:1:"C";s:3:"251";s:2:"WX";s:3:"600";s:1:"N";s:10:"germandbls";s:1:"B";a:4:{i:0;s:2:"48";i:1;s:3:"-15";i:2;s:3:"588";i:3;s:3:"629";}}s:10:"germandbls";a:4:{s:1:"C";s:3:"251";s:2:"WX";s:3:"600";s:1:"N";s:10:"germandbls";s:1:"B";a:4:{i:0;s:2:"48";i:1;s:3:"-15";i:2;s:3:"588";i:3;s:3:"629";}}s:9:"Idieresis";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:9:"Idieresis";s:1:"B";a:4:{i:0;s:2:"96";i:1;s:1:"0";i:2;s:3:"504";i:3;s:3:"753";}}s:6:"eacute";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:6:"eacute";s:1:"B";a:4:{i:0;s:2:"66";i:1;s:3:"-15";i:2;s:3:"548";i:3;s:3:"672";}}s:6:"abreve";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:6:"abreve";s:1:"B";a:4:{i:0;s:2:"53";i:1;s:3:"-15";i:2;s:3:"559";i:3;s:3:"609";}}s:13:"uhungarumlaut";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:13:"uhungarumlaut";s:1:"B";a:4:{i:0;s:2:"21";i:1;s:3:"-15";i:2;s:3:"580";i:3;s:3:"672";}}s:6:"ecaron";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:6:"ecaron";s:1:"B";a:4:{i:0;s:2:"66";i:1;s:3:"-15";i:2;s:3:"548";i:3;s:3:"669";}}s:9:"Ydieresis";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:9:"Ydieresis";s:1:"B";a:4:{i:0;s:2:"24";i:1;s:1:"0";i:2;s:3:"576";i:3;s:3:"753";}}s:6:"divide";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:6:"divide";s:1:"B";a:4:{i:0;s:2:"87";i:1;s:2:"48";i:2;s:3:"513";i:3;s:3:"467";}}s:6:"Yacute";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:6:"Yacute";s:1:"B";a:4:{i:0;s:2:"24";i:1;s:1:"0";i:2;s:3:"576";i:3;s:3:"805";}}s:11:"Acircumflex";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:11:"Acircumflex";s:1:"B";a:4:{i:0;s:1:"3";i:1;s:1:"0";i:2;s:3:"597";i:3;s:3:"787";}}s:6:"aacute";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:6:"aacute";s:1:"B";a:4:{i:0;s:2:"53";i:1;s:3:"-15";i:2;s:3:"559";i:3;s:3:"672";}}s:11:"Ucircumflex";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:11:"Ucircumflex";s:1:"B";a:4:{i:0;s:2:"17";i:1;s:3:"-18";i:2;s:3:"583";i:3;s:3:"787";}}s:6:"yacute";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:6:"yacute";s:1:"B";a:4:{i:0;s:1:"7";i:1;s:4:"-157";i:2;s:3:"592";i:3;s:3:"672";}}s:12:"scommaaccent";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:12:"scommaaccent";s:1:"B";a:4:{i:0;s:2:"80";i:1;s:4:"-250";i:2;s:3:"513";i:3;s:3:"441";}}s:11:"ecircumflex";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:11:"ecircumflex";s:1:"B";a:4:{i:0;s:2:"66";i:1;s:3:"-15";i:2;s:3:"548";i:3;s:3:"654";}}s:5:"Uring";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:5:"Uring";s:1:"B";a:4:{i:0;s:2:"17";i:1;s:3:"-18";i:2;s:3:"583";i:3;s:3:"760";}}s:9:"Udieresis";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:9:"Udieresis";s:1:"B";a:4:{i:0;s:2:"17";i:1;s:3:"-18";i:2;s:3:"583";i:3;s:3:"753";}}s:7:"aogonek";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:7:"aogonek";s:1:"B";a:4:{i:0;s:2:"53";i:1;s:4:"-172";i:2;s:3:"587";i:3;s:3:"441";}}s:6:"Uacute";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:6:"Uacute";s:1:"B";a:4:{i:0;s:2:"17";i:1;s:3:"-18";i:2;s:3:"583";i:3;s:3:"805";}}s:7:"uogonek";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:7:"uogonek";s:1:"B";a:4:{i:0;s:2:"21";i:1;s:4:"-172";i:2;s:3:"590";i:3;s:3:"426";}}s:9:"Edieresis";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:9:"Edieresis";s:1:"B";a:4:{i:0;s:2:"53";i:1;s:1:"0";i:2;s:3:"550";i:3;s:3:"753";}}s:6:"Dcroat";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:6:"Dcroat";s:1:"B";a:4:{i:0;s:2:"30";i:1;s:1:"0";i:2;s:3:"574";i:3;s:3:"562";}}s:11:"commaaccent";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:11:"commaaccent";s:1:"B";a:4:{i:0;s:3:"198";i:1;s:4:"-250";i:2;s:3:"335";i:3;s:3:"-58";}}s:9:"copyright";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:9:"copyright";s:1:"B";a:4:{i:0;s:1:"0";i:1;s:3:"-18";i:2;s:3:"600";i:3;s:3:"580";}}s:7:"Emacron";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:7:"Emacron";s:1:"B";a:4:{i:0;s:2:"53";i:1;s:1:"0";i:2;s:3:"550";i:3;s:3:"698";}}s:6:"ccaron";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:6:"ccaron";s:1:"B";a:4:{i:0;s:2:"66";i:1;s:3:"-15";i:2;s:3:"529";i:3;s:3:"669";}}s:5:"aring";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:5:"aring";s:1:"B";a:4:{i:0;s:2:"53";i:1;s:3:"-15";i:2;s:3:"559";i:3;s:3:"627";}}s:12:"Ncommaaccent";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:12:"Ncommaaccent";s:1:"B";a:4:{i:0;s:1:"7";i:1;s:4:"-250";i:2;s:3:"593";i:3;s:3:"562";}}s:6:"lacute";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:6:"lacute";s:1:"B";a:4:{i:0;s:2:"95";i:1;s:1:"0";i:2;s:3:"505";i:3;s:3:"805";}}s:6:"agrave";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:6:"agrave";s:1:"B";a:4:{i:0;s:2:"53";i:1;s:3:"-15";i:2;s:3:"559";i:3;s:3:"672";}}s:12:"Tcommaaccent";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:12:"Tcommaaccent";s:1:"B";a:4:{i:0;s:2:"38";i:1;s:4:"-250";i:2;s:3:"563";i:3;s:3:"562";}}s:6:"Cacute";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:6:"Cacute";s:1:"B";a:4:{i:0;s:2:"41";i:1;s:3:"-18";i:2;s:3:"540";i:3;s:3:"805";}}s:6:"atilde";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:6:"atilde";s:1:"B";a:4:{i:0;s:2:"53";i:1;s:3:"-15";i:2;s:3:"559";i:3;s:3:"606";}}s:10:"Edotaccent";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:10:"Edotaccent";s:1:"B";a:4:{i:0;s:2:"53";i:1;s:1:"0";i:2;s:3:"550";i:3;s:3:"753";}}s:6:"scaron";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:6:"scaron";s:1:"B";a:4:{i:0;s:2:"80";i:1;s:3:"-15";i:2;s:3:"513";i:3;s:3:"669";}}s:8:"scedilla";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:8:"scedilla";s:1:"B";a:4:{i:0;s:2:"80";i:1;s:4:"-151";i:2;s:3:"513";i:3;s:3:"441";}}s:6:"iacute";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:6:"iacute";s:1:"B";a:4:{i:0;s:2:"95";i:1;s:1:"0";i:2;s:3:"505";i:3;s:3:"672";}}s:7:"lozenge";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:7:"lozenge";s:1:"B";a:4:{i:0;s:2:"18";i:1;s:1:"0";i:2;s:3:"443";i:3;s:3:"706";}}s:6:"Rcaron";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:6:"Rcaron";s:1:"B";a:4:{i:0;s:2:"38";i:1;s:1:"0";i:2;s:3:"588";i:3;s:3:"802";}}s:12:"Gcommaaccent";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:12:"Gcommaaccent";s:1:"B";a:4:{i:0;s:2:"31";i:1;s:4:"-250";i:2;s:3:"575";i:3;s:3:"580";}}s:11:"ucircumflex";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:11:"ucircumflex";s:1:"B";a:4:{i:0;s:2:"21";i:1;s:3:"-15";i:2;s:3:"562";i:3;s:3:"654";}}s:11:"acircumflex";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:11:"acircumflex";s:1:"B";a:4:{i:0;s:2:"53";i:1;s:3:"-15";i:2;s:3:"559";i:3;s:3:"654";}}s:7:"Amacron";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:7:"Amacron";s:1:"B";a:4:{i:0;s:1:"3";i:1;s:1:"0";i:2;s:3:"597";i:3;s:3:"698";}}s:6:"rcaron";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:6:"rcaron";s:1:"B";a:4:{i:0;s:2:"60";i:1;s:1:"0";i:2;s:3:"559";i:3;s:3:"669";}}s:8:"ccedilla";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:8:"ccedilla";s:1:"B";a:4:{i:0;s:2:"66";i:1;s:4:"-151";i:2;s:3:"529";i:3;s:3:"441";}}s:10:"Zdotaccent";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:10:"Zdotaccent";s:1:"B";a:4:{i:0;s:2:"86";i:1;s:1:"0";i:2;s:3:"514";i:3;s:3:"753";}}s:5:"Thorn";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:5:"Thorn";s:1:"B";a:4:{i:0;s:2:"79";i:1;s:1:"0";i:2;s:3:"538";i:3;s:3:"562";}}s:7:"Omacron";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:7:"Omacron";s:1:"B";a:4:{i:0;s:2:"43";i:1;s:3:"-18";i:2;s:3:"557";i:3;s:3:"698";}}s:6:"Racute";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:6:"Racute";s:1:"B";a:4:{i:0;s:2:"38";i:1;s:1:"0";i:2;s:3:"588";i:3;s:3:"805";}}s:6:"Sacute";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:6:"Sacute";s:1:"B";a:4:{i:0;s:2:"72";i:1;s:3:"-20";i:2;s:3:"529";i:3;s:3:"805";}}s:6:"dcaron";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:6:"dcaron";s:1:"B";a:4:{i:0;s:2:"45";i:1;s:3:"-15";i:2;s:3:"715";i:3;s:3:"629";}}s:7:"Umacron";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:7:"Umacron";s:1:"B";a:4:{i:0;s:2:"17";i:1;s:3:"-18";i:2;s:3:"583";i:3;s:3:"698";}}s:5:"uring";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:5:"uring";s:1:"B";a:4:{i:0;s:2:"21";i:1;s:3:"-15";i:2;s:3:"562";i:3;s:3:"627";}}s:13:"threesuperior";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:13:"threesuperior";s:1:"B";a:4:{i:0;s:3:"155";i:1;s:3:"240";i:2;s:3:"406";i:3;s:3:"622";}}s:6:"Ograve";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:6:"Ograve";s:1:"B";a:4:{i:0;s:2:"43";i:1;s:3:"-18";i:2;s:3:"557";i:3;s:3:"805";}}s:6:"Agrave";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:6:"Agrave";s:1:"B";a:4:{i:0;s:1:"3";i:1;s:1:"0";i:2;s:3:"597";i:3;s:3:"805";}}s:6:"Abreve";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:6:"Abreve";s:1:"B";a:4:{i:0;s:1:"3";i:1;s:1:"0";i:2;s:3:"597";i:3;s:3:"732";}}s:8:"multiply";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:8:"multiply";s:1:"B";a:4:{i:0;s:2:"87";i:1;s:2:"43";i:2;s:3:"515";i:3;s:3:"470";}}s:6:"uacute";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:6:"uacute";s:1:"B";a:4:{i:0;s:2:"21";i:1;s:3:"-15";i:2;s:3:"562";i:3;s:3:"672";}}s:6:"Tcaron";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:6:"Tcaron";s:1:"B";a:4:{i:0;s:2:"38";i:1;s:1:"0";i:2;s:3:"563";i:3;s:3:"802";}}s:11:"partialdiff";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:11:"partialdiff";s:1:"B";a:4:{i:0;s:2:"17";i:1;s:3:"-38";i:2;s:3:"459";i:3;s:3:"710";}}s:9:"ydieresis";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:9:"ydieresis";s:1:"B";a:4:{i:0;s:1:"7";i:1;s:4:"-157";i:2;s:3:"592";i:3;s:3:"620";}}s:6:"Nacute";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:6:"Nacute";s:1:"B";a:4:{i:0;s:1:"7";i:1;s:3:"-13";i:2;s:3:"593";i:3;s:3:"805";}}s:11:"icircumflex";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:11:"icircumflex";s:1:"B";a:4:{i:0;s:2:"94";i:1;s:1:"0";i:2;s:3:"505";i:3;s:3:"654";}}s:11:"Ecircumflex";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:11:"Ecircumflex";s:1:"B";a:4:{i:0;s:2:"53";i:1;s:1:"0";i:2;s:3:"550";i:3;s:3:"787";}}s:9:"adieresis";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:9:"adieresis";s:1:"B";a:4:{i:0;s:2:"53";i:1;s:3:"-15";i:2;s:3:"559";i:3;s:3:"620";}}s:9:"edieresis";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:9:"edieresis";s:1:"B";a:4:{i:0;s:2:"66";i:1;s:3:"-15";i:2;s:3:"548";i:3;s:3:"620";}}s:6:"cacute";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:6:"cacute";s:1:"B";a:4:{i:0;s:2:"66";i:1;s:3:"-15";i:2;s:3:"529";i:3;s:3:"672";}}s:6:"nacute";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:6:"nacute";s:1:"B";a:4:{i:0;s:2:"26";i:1;s:1:"0";i:2;s:3:"575";i:3;s:3:"672";}}s:7:"umacron";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:7:"umacron";s:1:"B";a:4:{i:0;s:2:"21";i:1;s:3:"-15";i:2;s:3:"562";i:3;s:3:"565";}}s:6:"Ncaron";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:6:"Ncaron";s:1:"B";a:4:{i:0;s:1:"7";i:1;s:3:"-13";i:2;s:3:"593";i:3;s:3:"802";}}s:6:"Iacute";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:6:"Iacute";s:1:"B";a:4:{i:0;s:2:"96";i:1;s:1:"0";i:2;s:3:"504";i:3;s:3:"805";}}s:9:"plusminus";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:9:"plusminus";s:1:"B";a:4:{i:0;s:2:"87";i:1;s:2:"44";i:2;s:3:"513";i:3;s:3:"558";}}s:9:"brokenbar";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:9:"brokenbar";s:1:"B";a:4:{i:0;s:3:"275";i:1;s:4:"-175";i:2;s:3:"326";i:3;s:3:"675";}}s:10:"registered";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:10:"registered";s:1:"B";a:4:{i:0;s:1:"0";i:1;s:3:"-18";i:2;s:3:"600";i:3;s:3:"580";}}s:6:"Gbreve";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:6:"Gbreve";s:1:"B";a:4:{i:0;s:2:"31";i:1;s:3:"-18";i:2;s:3:"575";i:3;s:3:"732";}}s:10:"Idotaccent";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:10:"Idotaccent";s:1:"B";a:4:{i:0;s:2:"96";i:1;s:1:"0";i:2;s:3:"504";i:3;s:3:"753";}}s:9:"summation";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:9:"summation";s:1:"B";a:4:{i:0;s:2:"15";i:1;s:3:"-10";i:2;s:3:"585";i:3;s:3:"706";}}s:6:"Egrave";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:6:"Egrave";s:1:"B";a:4:{i:0;s:2:"53";i:1;s:1:"0";i:2;s:3:"550";i:3;s:3:"805";}}s:6:"racute";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:6:"racute";s:1:"B";a:4:{i:0;s:2:"60";i:1;s:1:"0";i:2;s:3:"559";i:3;s:3:"672";}}s:7:"omacron";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:7:"omacron";s:1:"B";a:4:{i:0;s:2:"62";i:1;s:3:"-15";i:2;s:3:"538";i:3;s:3:"565";}}s:6:"Zacute";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:6:"Zacute";s:1:"B";a:4:{i:0;s:2:"86";i:1;s:1:"0";i:2;s:3:"514";i:3;s:3:"805";}}s:6:"Zcaron";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:6:"Zcaron";s:1:"B";a:4:{i:0;s:2:"86";i:1;s:1:"0";i:2;s:3:"514";i:3;s:3:"802";}}s:12:"greaterequal";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:12:"greaterequal";s:1:"B";a:4:{i:0;s:2:"98";i:1;s:1:"0";i:2;s:3:"502";i:3;s:3:"710";}}s:3:"Eth";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:3:"Eth";s:1:"B";a:4:{i:0;s:2:"30";i:1;s:1:"0";i:2;s:3:"574";i:3;s:3:"562";}}s:8:"Ccedilla";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:8:"Ccedilla";s:1:"B";a:4:{i:0;s:2:"41";i:1;s:4:"-151";i:2;s:3:"540";i:3;s:3:"580";}}s:12:"lcommaaccent";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:12:"lcommaaccent";s:1:"B";a:4:{i:0;s:2:"95";i:1;s:4:"-250";i:2;s:3:"505";i:3;s:3:"629";}}s:6:"tcaron";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:6:"tcaron";s:1:"B";a:4:{i:0;s:2:"87";i:1;s:3:"-15";i:2;s:3:"530";i:3;s:3:"717";}}s:7:"eogonek";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:7:"eogonek";s:1:"B";a:4:{i:0;s:2:"66";i:1;s:4:"-172";i:2;s:3:"548";i:3;s:3:"441";}}s:7:"Uogonek";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:7:"Uogonek";s:1:"B";a:4:{i:0;s:2:"17";i:1;s:4:"-172";i:2;s:3:"583";i:3;s:3:"562";}}s:6:"Aacute";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:6:"Aacute";s:1:"B";a:4:{i:0;s:1:"3";i:1;s:1:"0";i:2;s:3:"597";i:3;s:3:"805";}}s:9:"Adieresis";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:9:"Adieresis";s:1:"B";a:4:{i:0;s:1:"3";i:1;s:1:"0";i:2;s:3:"597";i:3;s:3:"753";}}s:6:"egrave";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:6:"egrave";s:1:"B";a:4:{i:0;s:2:"66";i:1;s:3:"-15";i:2;s:3:"548";i:3;s:3:"672";}}s:6:"zacute";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:6:"zacute";s:1:"B";a:4:{i:0;s:2:"99";i:1;s:1:"0";i:2;s:3:"502";i:3;s:3:"672";}}s:7:"iogonek";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:7:"iogonek";s:1:"B";a:4:{i:0;s:2:"95";i:1;s:4:"-172";i:2;s:3:"505";i:3;s:3:"657";}}s:6:"Oacute";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:6:"Oacute";s:1:"B";a:4:{i:0;s:2:"43";i:1;s:3:"-18";i:2;s:3:"557";i:3;s:3:"805";}}s:6:"oacute";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:6:"oacute";s:1:"B";a:4:{i:0;s:2:"62";i:1;s:3:"-15";i:2;s:3:"538";i:3;s:3:"672";}}s:7:"amacron";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:7:"amacron";s:1:"B";a:4:{i:0;s:2:"53";i:1;s:3:"-15";i:2;s:3:"559";i:3;s:3:"565";}}s:6:"sacute";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:6:"sacute";s:1:"B";a:4:{i:0;s:2:"80";i:1;s:3:"-15";i:2;s:3:"513";i:3;s:3:"672";}}s:9:"idieresis";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:9:"idieresis";s:1:"B";a:4:{i:0;s:2:"95";i:1;s:1:"0";i:2;s:3:"505";i:3;s:3:"620";}}s:11:"Ocircumflex";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:11:"Ocircumflex";s:1:"B";a:4:{i:0;s:2:"43";i:1;s:3:"-18";i:2;s:3:"557";i:3;s:3:"787";}}s:6:"Ugrave";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:6:"Ugrave";s:1:"B";a:4:{i:0;s:2:"17";i:1;s:3:"-18";i:2;s:3:"583";i:3;s:3:"805";}}s:5:"Delta";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:5:"Delta";s:1:"B";a:4:{i:0;s:1:"6";i:1;s:1:"0";i:2;s:3:"598";i:3;s:3:"688";}}s:5:"thorn";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:5:"thorn";s:1:"B";a:4:{i:0;s:2:"-6";i:1;s:4:"-157";i:2;s:3:"555";i:3;s:3:"629";}}s:11:"twosuperior";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:11:"twosuperior";s:1:"B";a:4:{i:0;s:3:"177";i:1;s:3:"249";i:2;s:3:"424";i:3;s:3:"622";}}s:9:"Odieresis";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:9:"Odieresis";s:1:"B";a:4:{i:0;s:2:"43";i:1;s:3:"-18";i:2;s:3:"557";i:3;s:3:"753";}}s:2:"mu";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:2:"mu";s:1:"B";a:4:{i:0;s:2:"21";i:1;s:4:"-157";i:2;s:3:"562";i:3;s:3:"426";}}s:6:"igrave";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:6:"igrave";s:1:"B";a:4:{i:0;s:2:"95";i:1;s:1:"0";i:2;s:3:"505";i:3;s:3:"672";}}s:13:"ohungarumlaut";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:13:"ohungarumlaut";s:1:"B";a:4:{i:0;s:2:"62";i:1;s:3:"-15";i:2;s:3:"580";i:3;s:3:"672";}}s:7:"Eogonek";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:7:"Eogonek";s:1:"B";a:4:{i:0;s:2:"53";i:1;s:4:"-172";i:2;s:3:"561";i:3;s:3:"562";}}s:6:"dcroat";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:6:"dcroat";s:1:"B";a:4:{i:0;s:2:"45";i:1;s:3:"-15";i:2;s:3:"591";i:3;s:3:"629";}}s:13:"threequarters";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:13:"threequarters";s:1:"B";a:4:{i:0;s:1:"8";i:1;s:3:"-56";i:2;s:3:"593";i:3;s:3:"666";}}s:8:"Scedilla";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:8:"Scedilla";s:1:"B";a:4:{i:0;s:2:"72";i:1;s:4:"-151";i:2;s:3:"529";i:3;s:3:"580";}}s:6:"lcaron";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:6:"lcaron";s:1:"B";a:4:{i:0;s:2:"95";i:1;s:1:"0";i:2;s:3:"533";i:3;s:3:"629";}}s:12:"Kcommaaccent";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:12:"Kcommaaccent";s:1:"B";a:4:{i:0;s:2:"38";i:1;s:4:"-250";i:2;s:3:"582";i:3;s:3:"562";}}s:6:"Lacute";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:6:"Lacute";s:1:"B";a:4:{i:0;s:2:"47";i:1;s:1:"0";i:2;s:3:"554";i:3;s:3:"805";}}s:9:"trademark";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:9:"trademark";s:1:"B";a:4:{i:0;s:3:"-23";i:1;s:3:"263";i:2;s:3:"623";i:3;s:3:"562";}}s:10:"edotaccent";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:10:"edotaccent";s:1:"B";a:4:{i:0;s:2:"66";i:1;s:3:"-15";i:2;s:3:"548";i:3;s:3:"620";}}s:6:"Igrave";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:6:"Igrave";s:1:"B";a:4:{i:0;s:2:"96";i:1;s:1:"0";i:2;s:3:"504";i:3;s:3:"805";}}s:7:"Imacron";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:7:"Imacron";s:1:"B";a:4:{i:0;s:2:"96";i:1;s:1:"0";i:2;s:3:"504";i:3;s:3:"698";}}s:6:"Lcaron";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:6:"Lcaron";s:1:"B";a:4:{i:0;s:2:"47";i:1;s:1:"0";i:2;s:3:"554";i:3;s:3:"562";}}s:7:"onehalf";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:7:"onehalf";s:1:"B";a:4:{i:0;s:1:"0";i:1;s:3:"-57";i:2;s:3:"611";i:3;s:3:"665";}}s:9:"lessequal";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:9:"lessequal";s:1:"B";a:4:{i:0;s:2:"98";i:1;s:1:"0";i:2;s:3:"502";i:3;s:3:"710";}}s:11:"ocircumflex";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:11:"ocircumflex";s:1:"B";a:4:{i:0;s:2:"62";i:1;s:3:"-15";i:2;s:3:"538";i:3;s:3:"654";}}s:6:"ntilde";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:6:"ntilde";s:1:"B";a:4:{i:0;s:2:"26";i:1;s:1:"0";i:2;s:3:"575";i:3;s:3:"606";}}s:13:"Uhungarumlaut";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:13:"Uhungarumlaut";s:1:"B";a:4:{i:0;s:2:"17";i:1;s:3:"-18";i:2;s:3:"590";i:3;s:3:"805";}}s:6:"Eacute";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:6:"Eacute";s:1:"B";a:4:{i:0;s:2:"53";i:1;s:1:"0";i:2;s:3:"550";i:3;s:3:"805";}}s:7:"emacron";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:7:"emacron";s:1:"B";a:4:{i:0;s:2:"66";i:1;s:3:"-15";i:2;s:3:"548";i:3;s:3:"565";}}s:6:"gbreve";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:6:"gbreve";s:1:"B";a:4:{i:0;s:2:"45";i:1;s:4:"-157";i:2;s:3:"566";i:3;s:3:"609";}}s:10:"onequarter";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:10:"onequarter";s:1:"B";a:4:{i:0;s:1:"0";i:1;s:3:"-57";i:2;s:3:"600";i:3;s:3:"665";}}s:6:"Scaron";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:6:"Scaron";s:1:"B";a:4:{i:0;s:2:"72";i:1;s:3:"-20";i:2;s:3:"529";i:3;s:3:"802";}}s:12:"Scommaaccent";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:12:"Scommaaccent";s:1:"B";a:4:{i:0;s:2:"72";i:1;s:4:"-250";i:2;s:3:"529";i:3;s:3:"580";}}s:13:"Ohungarumlaut";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:13:"Ohungarumlaut";s:1:"B";a:4:{i:0;s:2:"43";i:1;s:3:"-18";i:2;s:3:"580";i:3;s:3:"805";}}s:6:"degree";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:6:"degree";s:1:"B";a:4:{i:0;s:3:"123";i:1;s:3:"269";i:2;s:3:"477";i:3;s:3:"622";}}s:6:"ograve";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:6:"ograve";s:1:"B";a:4:{i:0;s:2:"62";i:1;s:3:"-15";i:2;s:3:"538";i:3;s:3:"672";}}s:6:"Ccaron";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:6:"Ccaron";s:1:"B";a:4:{i:0;s:2:"41";i:1;s:3:"-18";i:2;s:3:"540";i:3;s:3:"802";}}s:6:"ugrave";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:6:"ugrave";s:1:"B";a:4:{i:0;s:2:"21";i:1;s:3:"-15";i:2;s:3:"562";i:3;s:3:"672";}}s:7:"radical";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:7:"radical";s:1:"B";a:4:{i:0;s:1:"3";i:1;s:3:"-15";i:2;s:3:"597";i:3;s:3:"792";}}s:6:"Dcaron";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:6:"Dcaron";s:1:"B";a:4:{i:0;s:2:"43";i:1;s:1:"0";i:2;s:3:"574";i:3;s:3:"802";}}s:12:"rcommaaccent";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:12:"rcommaaccent";s:1:"B";a:4:{i:0;s:2:"60";i:1;s:4:"-250";i:2;s:3:"559";i:3;s:3:"441";}}s:6:"Ntilde";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:6:"Ntilde";s:1:"B";a:4:{i:0;s:1:"7";i:1;s:3:"-13";i:2;s:3:"593";i:3;s:3:"729";}}s:6:"otilde";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:6:"otilde";s:1:"B";a:4:{i:0;s:2:"62";i:1;s:3:"-15";i:2;s:3:"538";i:3;s:3:"606";}}s:12:"Rcommaaccent";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:12:"Rcommaaccent";s:1:"B";a:4:{i:0;s:2:"38";i:1;s:4:"-250";i:2;s:3:"588";i:3;s:3:"562";}}s:12:"Lcommaaccent";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:12:"Lcommaaccent";s:1:"B";a:4:{i:0;s:2:"47";i:1;s:4:"-250";i:2;s:3:"554";i:3;s:3:"562";}}s:6:"Atilde";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:6:"Atilde";s:1:"B";a:4:{i:0;s:1:"3";i:1;s:1:"0";i:2;s:3:"597";i:3;s:3:"729";}}s:7:"Aogonek";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:7:"Aogonek";s:1:"B";a:4:{i:0;s:1:"3";i:1;s:4:"-172";i:2;s:3:"608";i:3;s:3:"562";}}s:5:"Aring";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:5:"Aring";s:1:"B";a:4:{i:0;s:1:"3";i:1;s:1:"0";i:2;s:3:"597";i:3;s:3:"750";}}s:6:"Otilde";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:6:"Otilde";s:1:"B";a:4:{i:0;s:2:"43";i:1;s:3:"-18";i:2;s:3:"557";i:3;s:3:"729";}}s:10:"zdotaccent";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:10:"zdotaccent";s:1:"B";a:4:{i:0;s:2:"99";i:1;s:1:"0";i:2;s:3:"502";i:3;s:3:"620";}}s:6:"Ecaron";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:6:"Ecaron";s:1:"B";a:4:{i:0;s:2:"53";i:1;s:1:"0";i:2;s:3:"550";i:3;s:3:"802";}}s:7:"Iogonek";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:7:"Iogonek";s:1:"B";a:4:{i:0;s:2:"96";i:1;s:4:"-172";i:2;s:3:"504";i:3;s:3:"562";}}s:12:"kcommaaccent";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:12:"kcommaaccent";s:1:"B";a:4:{i:0;s:2:"43";i:1;s:4:"-250";i:2;s:3:"580";i:3;s:3:"629";}}s:5:"minus";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:5:"minus";s:1:"B";a:4:{i:0;s:2:"80";i:1;s:3:"232";i:2;s:3:"520";i:3;s:3:"283";}}s:11:"Icircumflex";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:11:"Icircumflex";s:1:"B";a:4:{i:0;s:2:"96";i:1;s:1:"0";i:2;s:3:"504";i:3;s:3:"787";}}s:6:"ncaron";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:6:"ncaron";s:1:"B";a:4:{i:0;s:2:"26";i:1;s:1:"0";i:2;s:3:"575";i:3;s:3:"669";}}s:12:"tcommaaccent";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:12:"tcommaaccent";s:1:"B";a:4:{i:0;s:2:"87";i:1;s:4:"-250";i:2;s:3:"530";i:3;s:3:"561";}}s:10:"logicalnot";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:10:"logicalnot";s:1:"B";a:4:{i:0;s:2:"87";i:1;s:3:"108";i:2;s:3:"513";i:3;s:3:"369";}}s:9:"odieresis";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:9:"odieresis";s:1:"B";a:4:{i:0;s:2:"62";i:1;s:3:"-15";i:2;s:3:"538";i:3;s:3:"620";}}s:9:"udieresis";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:9:"udieresis";s:1:"B";a:4:{i:0;s:2:"21";i:1;s:3:"-15";i:2;s:3:"562";i:3;s:3:"620";}}s:8:"notequal";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:8:"notequal";s:1:"B";a:4:{i:0;s:2:"15";i:1;s:3:"-16";i:2;s:3:"540";i:3;s:3:"529";}}s:12:"gcommaaccent";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:12:"gcommaaccent";s:1:"B";a:4:{i:0;s:2:"45";i:1;s:4:"-157";i:2;s:3:"566";i:3;s:3:"708";}}s:3:"eth";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:3:"eth";s:1:"B";a:4:{i:0;s:2:"62";i:1;s:3:"-15";i:2;s:3:"538";i:3;s:3:"629";}}s:6:"zcaron";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:6:"zcaron";s:1:"B";a:4:{i:0;s:2:"99";i:1;s:1:"0";i:2;s:3:"502";i:3;s:3:"669";}}s:12:"ncommaaccent";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:12:"ncommaaccent";s:1:"B";a:4:{i:0;s:2:"26";i:1;s:4:"-250";i:2;s:3:"575";i:3;s:3:"441";}}s:11:"onesuperior";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:11:"onesuperior";s:1:"B";a:4:{i:0;s:3:"172";i:1;s:3:"249";i:2;s:3:"428";i:3;s:3:"622";}}s:7:"imacron";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:7:"imacron";s:1:"B";a:4:{i:0;s:2:"95";i:1;s:1:"0";i:2;s:3:"505";i:3;s:3:"565";}}s:4:"Euro";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:4:"Euro";s:1:"B";a:4:{i:0;s:1:"0";i:1;s:1:"0";i:2;s:1:"0";i:3;s:1:"0";}}}s:9:"_version_";i:1;} \ No newline at end of file
diff --git a/admin/survey/Fonts/php_Helvetica-Bold.afm b/admin/survey/Fonts/php_Helvetica-Bold.afm
deleted file mode 100644
index 9b466fd..0000000
--- a/admin/survey/Fonts/php_Helvetica-Bold.afm
+++ /dev/null
@@ -1 +0,0 @@
-a:22:{s:8:"FontName";s:14:"Helvetica-Bold";s:8:"FullName";s:14:"Helvetica Bold";s:10:"FamilyName";s:9:"Helvetica";s:6:"Weight";s:4:"Bold";s:11:"ItalicAngle";s:1:"0";s:12:"IsFixedPitch";s:5:"false";s:12:"CharacterSet";s:13:"ExtendedRoman";s:8:"FontBBox";a:4:{i:0;s:4:"-170";i:1;s:4:"-228";i:2;s:4:"1003";i:3;s:3:"962";}s:17:"UnderlinePosition";s:4:"-100";s:18:"UnderlineThickness";s:2:"50";s:7:"Version";s:7:"002.000";s:14:"EncodingScheme";s:21:"AdobeStandardEncoding";s:9:"CapHeight";s:3:"718";s:7:"XHeight";s:3:"532";s:8:"Ascender";s:3:"718";s:9:"Descender";s:4:"-207";s:5:"StdHW";s:3:"118";s:5:"StdVW";s:3:"140";s:16:"StartCharMetrics";s:3:"315";s:1:"C";a:464:{i:32;a:4:{s:1:"C";s:2:"32";s:2:"WX";s:3:"278";s:1:"N";s:5:"space";s:1:"B";a:4:{i:0;s:1:"0";i:1;s:1:"0";i:2;s:1:"0";i:3;s:1:"0";}}s:5:"space";a:4:{s:1:"C";s:2:"32";s:2:"WX";s:3:"278";s:1:"N";s:5:"space";s:1:"B";a:4:{i:0;s:1:"0";i:1;s:1:"0";i:2;s:1:"0";i:3;s:1:"0";}}i:33;a:4:{s:1:"C";s:2:"33";s:2:"WX";s:3:"333";s:1:"N";s:6:"exclam";s:1:"B";a:4:{i:0;s:2:"90";i:1;s:1:"0";i:2;s:3:"244";i:3;s:3:"718";}}s:6:"exclam";a:4:{s:1:"C";s:2:"33";s:2:"WX";s:3:"333";s:1:"N";s:6:"exclam";s:1:"B";a:4:{i:0;s:2:"90";i:1;s:1:"0";i:2;s:3:"244";i:3;s:3:"718";}}i:34;a:4:{s:1:"C";s:2:"34";s:2:"WX";s:3:"474";s:1:"N";s:8:"quotedbl";s:1:"B";a:4:{i:0;s:2:"98";i:1;s:3:"447";i:2;s:3:"376";i:3;s:3:"718";}}s:8:"quotedbl";a:4:{s:1:"C";s:2:"34";s:2:"WX";s:3:"474";s:1:"N";s:8:"quotedbl";s:1:"B";a:4:{i:0;s:2:"98";i:1;s:3:"447";i:2;s:3:"376";i:3;s:3:"718";}}i:35;a:4:{s:1:"C";s:2:"35";s:2:"WX";s:3:"556";s:1:"N";s:10:"numbersign";s:1:"B";a:4:{i:0;s:2:"18";i:1;s:1:"0";i:2;s:3:"538";i:3;s:3:"698";}}s:10:"numbersign";a:4:{s:1:"C";s:2:"35";s:2:"WX";s:3:"556";s:1:"N";s:10:"numbersign";s:1:"B";a:4:{i:0;s:2:"18";i:1;s:1:"0";i:2;s:3:"538";i:3;s:3:"698";}}i:36;a:4:{s:1:"C";s:2:"36";s:2:"WX";s:3:"556";s:1:"N";s:6:"dollar";s:1:"B";a:4:{i:0;s:2:"30";i:1;s:4:"-115";i:2;s:3:"523";i:3;s:3:"775";}}s:6:"dollar";a:4:{s:1:"C";s:2:"36";s:2:"WX";s:3:"556";s:1:"N";s:6:"dollar";s:1:"B";a:4:{i:0;s:2:"30";i:1;s:4:"-115";i:2;s:3:"523";i:3;s:3:"775";}}i:37;a:4:{s:1:"C";s:2:"37";s:2:"WX";s:3:"889";s:1:"N";s:7:"percent";s:1:"B";a:4:{i:0;s:2:"28";i:1;s:3:"-19";i:2;s:3:"861";i:3;s:3:"710";}}s:7:"percent";a:4:{s:1:"C";s:2:"37";s:2:"WX";s:3:"889";s:1:"N";s:7:"percent";s:1:"B";a:4:{i:0;s:2:"28";i:1;s:3:"-19";i:2;s:3:"861";i:3;s:3:"710";}}i:38;a:4:{s:1:"C";s:2:"38";s:2:"WX";s:3:"722";s:1:"N";s:9:"ampersand";s:1:"B";a:4:{i:0;s:2:"54";i:1;s:3:"-19";i:2;s:3:"701";i:3;s:3:"718";}}s:9:"ampersand";a:4:{s:1:"C";s:2:"38";s:2:"WX";s:3:"722";s:1:"N";s:9:"ampersand";s:1:"B";a:4:{i:0;s:2:"54";i:1;s:3:"-19";i:2;s:3:"701";i:3;s:3:"718";}}i:39;a:4:{s:1:"C";s:2:"39";s:2:"WX";s:3:"278";s:1:"N";s:10:"quoteright";s:1:"B";a:4:{i:0;s:2:"69";i:1;s:3:"445";i:2;s:3:"209";i:3;s:3:"718";}}s:10:"quoteright";a:4:{s:1:"C";s:2:"39";s:2:"WX";s:3:"278";s:1:"N";s:10:"quoteright";s:1:"B";a:4:{i:0;s:2:"69";i:1;s:3:"445";i:2;s:3:"209";i:3;s:3:"718";}}i:40;a:4:{s:1:"C";s:2:"40";s:2:"WX";s:3:"333";s:1:"N";s:9:"parenleft";s:1:"B";a:4:{i:0;s:2:"35";i:1;s:4:"-208";i:2;s:3:"314";i:3;s:3:"734";}}s:9:"parenleft";a:4:{s:1:"C";s:2:"40";s:2:"WX";s:3:"333";s:1:"N";s:9:"parenleft";s:1:"B";a:4:{i:0;s:2:"35";i:1;s:4:"-208";i:2;s:3:"314";i:3;s:3:"734";}}i:41;a:4:{s:1:"C";s:2:"41";s:2:"WX";s:3:"333";s:1:"N";s:10:"parenright";s:1:"B";a:4:{i:0;s:2:"19";i:1;s:4:"-208";i:2;s:3:"298";i:3;s:3:"734";}}s:10:"parenright";a:4:{s:1:"C";s:2:"41";s:2:"WX";s:3:"333";s:1:"N";s:10:"parenright";s:1:"B";a:4:{i:0;s:2:"19";i:1;s:4:"-208";i:2;s:3:"298";i:3;s:3:"734";}}i:42;a:4:{s:1:"C";s:2:"42";s:2:"WX";s:3:"389";s:1:"N";s:8:"asterisk";s:1:"B";a:4:{i:0;s:2:"27";i:1;s:3:"387";i:2;s:3:"362";i:3;s:3:"718";}}s:8:"asterisk";a:4:{s:1:"C";s:2:"42";s:2:"WX";s:3:"389";s:1:"N";s:8:"asterisk";s:1:"B";a:4:{i:0;s:2:"27";i:1;s:3:"387";i:2;s:3:"362";i:3;s:3:"718";}}i:43;a:4:{s:1:"C";s:2:"43";s:2:"WX";s:3:"584";s:1:"N";s:4:"plus";s:1:"B";a:4:{i:0;s:2:"40";i:1;s:1:"0";i:2;s:3:"544";i:3;s:3:"506";}}s:4:"plus";a:4:{s:1:"C";s:2:"43";s:2:"WX";s:3:"584";s:1:"N";s:4:"plus";s:1:"B";a:4:{i:0;s:2:"40";i:1;s:1:"0";i:2;s:3:"544";i:3;s:3:"506";}}i:44;a:4:{s:1:"C";s:2:"44";s:2:"WX";s:3:"278";s:1:"N";s:5:"comma";s:1:"B";a:4:{i:0;s:2:"64";i:1;s:4:"-168";i:2;s:3:"214";i:3;s:3:"146";}}s:5:"comma";a:4:{s:1:"C";s:2:"44";s:2:"WX";s:3:"278";s:1:"N";s:5:"comma";s:1:"B";a:4:{i:0;s:2:"64";i:1;s:4:"-168";i:2;s:3:"214";i:3;s:3:"146";}}i:45;a:4:{s:1:"C";s:2:"45";s:2:"WX";s:3:"333";s:1:"N";s:6:"hyphen";s:1:"B";a:4:{i:0;s:2:"27";i:1;s:3:"215";i:2;s:3:"306";i:3;s:3:"345";}}s:6:"hyphen";a:4:{s:1:"C";s:2:"45";s:2:"WX";s:3:"333";s:1:"N";s:6:"hyphen";s:1:"B";a:4:{i:0;s:2:"27";i:1;s:3:"215";i:2;s:3:"306";i:3;s:3:"345";}}i:46;a:4:{s:1:"C";s:2:"46";s:2:"WX";s:3:"278";s:1:"N";s:6:"period";s:1:"B";a:4:{i:0;s:2:"64";i:1;s:1:"0";i:2;s:3:"214";i:3;s:3:"146";}}s:6:"period";a:4:{s:1:"C";s:2:"46";s:2:"WX";s:3:"278";s:1:"N";s:6:"period";s:1:"B";a:4:{i:0;s:2:"64";i:1;s:1:"0";i:2;s:3:"214";i:3;s:3:"146";}}i:47;a:4:{s:1:"C";s:2:"47";s:2:"WX";s:3:"278";s:1:"N";s:5:"slash";s:1:"B";a:4:{i:0;s:3:"-33";i:1;s:3:"-19";i:2;s:3:"311";i:3;s:3:"737";}}s:5:"slash";a:4:{s:1:"C";s:2:"47";s:2:"WX";s:3:"278";s:1:"N";s:5:"slash";s:1:"B";a:4:{i:0;s:3:"-33";i:1;s:3:"-19";i:2;s:3:"311";i:3;s:3:"737";}}i:48;a:4:{s:1:"C";s:2:"48";s:2:"WX";s:3:"556";s:1:"N";s:4:"zero";s:1:"B";a:4:{i:0;s:2:"32";i:1;s:3:"-19";i:2;s:3:"524";i:3;s:3:"710";}}s:4:"zero";a:4:{s:1:"C";s:2:"48";s:2:"WX";s:3:"556";s:1:"N";s:4:"zero";s:1:"B";a:4:{i:0;s:2:"32";i:1;s:3:"-19";i:2;s:3:"524";i:3;s:3:"710";}}i:49;a:4:{s:1:"C";s:2:"49";s:2:"WX";s:3:"556";s:1:"N";s:3:"one";s:1:"B";a:4:{i:0;s:2:"69";i:1;s:1:"0";i:2;s:3:"378";i:3;s:3:"710";}}s:3:"one";a:4:{s:1:"C";s:2:"49";s:2:"WX";s:3:"556";s:1:"N";s:3:"one";s:1:"B";a:4:{i:0;s:2:"69";i:1;s:1:"0";i:2;s:3:"378";i:3;s:3:"710";}}i:50;a:4:{s:1:"C";s:2:"50";s:2:"WX";s:3:"556";s:1:"N";s:3:"two";s:1:"B";a:4:{i:0;s:2:"26";i:1;s:1:"0";i:2;s:3:"511";i:3;s:3:"710";}}s:3:"two";a:4:{s:1:"C";s:2:"50";s:2:"WX";s:3:"556";s:1:"N";s:3:"two";s:1:"B";a:4:{i:0;s:2:"26";i:1;s:1:"0";i:2;s:3:"511";i:3;s:3:"710";}}i:51;a:4:{s:1:"C";s:2:"51";s:2:"WX";s:3:"556";s:1:"N";s:5:"three";s:1:"B";a:4:{i:0;s:2:"27";i:1;s:3:"-19";i:2;s:3:"516";i:3;s:3:"710";}}s:5:"three";a:4:{s:1:"C";s:2:"51";s:2:"WX";s:3:"556";s:1:"N";s:5:"three";s:1:"B";a:4:{i:0;s:2:"27";i:1;s:3:"-19";i:2;s:3:"516";i:3;s:3:"710";}}i:52;a:4:{s:1:"C";s:2:"52";s:2:"WX";s:3:"556";s:1:"N";s:4:"four";s:1:"B";a:4:{i:0;s:2:"27";i:1;s:1:"0";i:2;s:3:"526";i:3;s:3:"710";}}s:4:"four";a:4:{s:1:"C";s:2:"52";s:2:"WX";s:3:"556";s:1:"N";s:4:"four";s:1:"B";a:4:{i:0;s:2:"27";i:1;s:1:"0";i:2;s:3:"526";i:3;s:3:"710";}}i:53;a:4:{s:1:"C";s:2:"53";s:2:"WX";s:3:"556";s:1:"N";s:4:"five";s:1:"B";a:4:{i:0;s:2:"27";i:1;s:3:"-19";i:2;s:3:"516";i:3;s:3:"698";}}s:4:"five";a:4:{s:1:"C";s:2:"53";s:2:"WX";s:3:"556";s:1:"N";s:4:"five";s:1:"B";a:4:{i:0;s:2:"27";i:1;s:3:"-19";i:2;s:3:"516";i:3;s:3:"698";}}i:54;a:4:{s:1:"C";s:2:"54";s:2:"WX";s:3:"556";s:1:"N";s:3:"six";s:1:"B";a:4:{i:0;s:2:"31";i:1;s:3:"-19";i:2;s:3:"520";i:3;s:3:"710";}}s:3:"six";a:4:{s:1:"C";s:2:"54";s:2:"WX";s:3:"556";s:1:"N";s:3:"six";s:1:"B";a:4:{i:0;s:2:"31";i:1;s:3:"-19";i:2;s:3:"520";i:3;s:3:"710";}}i:55;a:4:{s:1:"C";s:2:"55";s:2:"WX";s:3:"556";s:1:"N";s:5:"seven";s:1:"B";a:4:{i:0;s:2:"25";i:1;s:1:"0";i:2;s:3:"528";i:3;s:3:"698";}}s:5:"seven";a:4:{s:1:"C";s:2:"55";s:2:"WX";s:3:"556";s:1:"N";s:5:"seven";s:1:"B";a:4:{i:0;s:2:"25";i:1;s:1:"0";i:2;s:3:"528";i:3;s:3:"698";}}i:56;a:4:{s:1:"C";s:2:"56";s:2:"WX";s:3:"556";s:1:"N";s:5:"eight";s:1:"B";a:4:{i:0;s:2:"32";i:1;s:3:"-19";i:2;s:3:"524";i:3;s:3:"710";}}s:5:"eight";a:4:{s:1:"C";s:2:"56";s:2:"WX";s:3:"556";s:1:"N";s:5:"eight";s:1:"B";a:4:{i:0;s:2:"32";i:1;s:3:"-19";i:2;s:3:"524";i:3;s:3:"710";}}i:57;a:4:{s:1:"C";s:2:"57";s:2:"WX";s:3:"556";s:1:"N";s:4:"nine";s:1:"B";a:4:{i:0;s:2:"30";i:1;s:3:"-19";i:2;s:3:"522";i:3;s:3:"710";}}s:4:"nine";a:4:{s:1:"C";s:2:"57";s:2:"WX";s:3:"556";s:1:"N";s:4:"nine";s:1:"B";a:4:{i:0;s:2:"30";i:1;s:3:"-19";i:2;s:3:"522";i:3;s:3:"710";}}i:58;a:4:{s:1:"C";s:2:"58";s:2:"WX";s:3:"333";s:1:"N";s:5:"colon";s:1:"B";a:4:{i:0;s:2:"92";i:1;s:1:"0";i:2;s:3:"242";i:3;s:3:"512";}}s:5:"colon";a:4:{s:1:"C";s:2:"58";s:2:"WX";s:3:"333";s:1:"N";s:5:"colon";s:1:"B";a:4:{i:0;s:2:"92";i:1;s:1:"0";i:2;s:3:"242";i:3;s:3:"512";}}i:59;a:4:{s:1:"C";s:2:"59";s:2:"WX";s:3:"333";s:1:"N";s:9:"semicolon";s:1:"B";a:4:{i:0;s:2:"92";i:1;s:4:"-168";i:2;s:3:"242";i:3;s:3:"512";}}s:9:"semicolon";a:4:{s:1:"C";s:2:"59";s:2:"WX";s:3:"333";s:1:"N";s:9:"semicolon";s:1:"B";a:4:{i:0;s:2:"92";i:1;s:4:"-168";i:2;s:3:"242";i:3;s:3:"512";}}i:60;a:4:{s:1:"C";s:2:"60";s:2:"WX";s:3:"584";s:1:"N";s:4:"less";s:1:"B";a:4:{i:0;s:2:"38";i:1;s:2:"-8";i:2;s:3:"546";i:3;s:3:"514";}}s:4:"less";a:4:{s:1:"C";s:2:"60";s:2:"WX";s:3:"584";s:1:"N";s:4:"less";s:1:"B";a:4:{i:0;s:2:"38";i:1;s:2:"-8";i:2;s:3:"546";i:3;s:3:"514";}}i:61;a:4:{s:1:"C";s:2:"61";s:2:"WX";s:3:"584";s:1:"N";s:5:"equal";s:1:"B";a:4:{i:0;s:2:"40";i:1;s:2:"87";i:2;s:3:"544";i:3;s:3:"419";}}s:5:"equal";a:4:{s:1:"C";s:2:"61";s:2:"WX";s:3:"584";s:1:"N";s:5:"equal";s:1:"B";a:4:{i:0;s:2:"40";i:1;s:2:"87";i:2;s:3:"544";i:3;s:3:"419";}}i:62;a:4:{s:1:"C";s:2:"62";s:2:"WX";s:3:"584";s:1:"N";s:7:"greater";s:1:"B";a:4:{i:0;s:2:"38";i:1;s:2:"-8";i:2;s:3:"546";i:3;s:3:"514";}}s:7:"greater";a:4:{s:1:"C";s:2:"62";s:2:"WX";s:3:"584";s:1:"N";s:7:"greater";s:1:"B";a:4:{i:0;s:2:"38";i:1;s:2:"-8";i:2;s:3:"546";i:3;s:3:"514";}}i:63;a:4:{s:1:"C";s:2:"63";s:2:"WX";s:3:"611";s:1:"N";s:8:"question";s:1:"B";a:4:{i:0;s:2:"60";i:1;s:1:"0";i:2;s:3:"556";i:3;s:3:"727";}}s:8:"question";a:4:{s:1:"C";s:2:"63";s:2:"WX";s:3:"611";s:1:"N";s:8:"question";s:1:"B";a:4:{i:0;s:2:"60";i:1;s:1:"0";i:2;s:3:"556";i:3;s:3:"727";}}i:64;a:4:{s:1:"C";s:2:"64";s:2:"WX";s:3:"975";s:1:"N";s:2:"at";s:1:"B";a:4:{i:0;s:3:"118";i:1;s:3:"-19";i:2;s:3:"856";i:3;s:3:"737";}}s:2:"at";a:4:{s:1:"C";s:2:"64";s:2:"WX";s:3:"975";s:1:"N";s:2:"at";s:1:"B";a:4:{i:0;s:3:"118";i:1;s:3:"-19";i:2;s:3:"856";i:3;s:3:"737";}}i:65;a:4:{s:1:"C";s:2:"65";s:2:"WX";s:3:"722";s:1:"N";s:1:"A";s:1:"B";a:4:{i:0;s:2:"20";i:1;s:1:"0";i:2;s:3:"702";i:3;s:3:"718";}}s:1:"A";a:4:{s:1:"C";s:2:"65";s:2:"WX";s:3:"722";s:1:"N";s:1:"A";s:1:"B";a:4:{i:0;s:2:"20";i:1;s:1:"0";i:2;s:3:"702";i:3;s:3:"718";}}i:66;a:4:{s:1:"C";s:2:"66";s:2:"WX";s:3:"722";s:1:"N";s:1:"B";s:1:"B";a:4:{i:0;s:2:"76";i:1;s:1:"0";i:2;s:3:"669";i:3;s:3:"718";}}s:1:"B";a:4:{s:1:"C";s:2:"66";s:2:"WX";s:3:"722";s:1:"N";s:1:"B";s:1:"B";a:4:{i:0;s:2:"76";i:1;s:1:"0";i:2;s:3:"669";i:3;s:3:"718";}}i:67;a:4:{s:1:"C";s:2:"67";s:2:"WX";s:3:"722";s:1:"N";s:1:"C";s:1:"B";a:4:{i:0;s:2:"44";i:1;s:3:"-19";i:2;s:3:"684";i:3;s:3:"737";}}s:1:"C";a:4:{s:1:"C";s:2:"67";s:2:"WX";s:3:"722";s:1:"N";s:1:"C";s:1:"B";a:4:{i:0;s:2:"44";i:1;s:3:"-19";i:2;s:3:"684";i:3;s:3:"737";}}i:68;a:4:{s:1:"C";s:2:"68";s:2:"WX";s:3:"722";s:1:"N";s:1:"D";s:1:"B";a:4:{i:0;s:2:"76";i:1;s:1:"0";i:2;s:3:"685";i:3;s:3:"718";}}s:1:"D";a:4:{s:1:"C";s:2:"68";s:2:"WX";s:3:"722";s:1:"N";s:1:"D";s:1:"B";a:4:{i:0;s:2:"76";i:1;s:1:"0";i:2;s:3:"685";i:3;s:3:"718";}}i:69;a:4:{s:1:"C";s:2:"69";s:2:"WX";s:3:"667";s:1:"N";s:1:"E";s:1:"B";a:4:{i:0;s:2:"76";i:1;s:1:"0";i:2;s:3:"621";i:3;s:3:"718";}}s:1:"E";a:4:{s:1:"C";s:2:"69";s:2:"WX";s:3:"667";s:1:"N";s:1:"E";s:1:"B";a:4:{i:0;s:2:"76";i:1;s:1:"0";i:2;s:3:"621";i:3;s:3:"718";}}i:70;a:4:{s:1:"C";s:2:"70";s:2:"WX";s:3:"611";s:1:"N";s:1:"F";s:1:"B";a:4:{i:0;s:2:"76";i:1;s:1:"0";i:2;s:3:"587";i:3;s:3:"718";}}s:1:"F";a:4:{s:1:"C";s:2:"70";s:2:"WX";s:3:"611";s:1:"N";s:1:"F";s:1:"B";a:4:{i:0;s:2:"76";i:1;s:1:"0";i:2;s:3:"587";i:3;s:3:"718";}}i:71;a:4:{s:1:"C";s:2:"71";s:2:"WX";s:3:"778";s:1:"N";s:1:"G";s:1:"B";a:4:{i:0;s:2:"44";i:1;s:3:"-19";i:2;s:3:"713";i:3;s:3:"737";}}s:1:"G";a:4:{s:1:"C";s:2:"71";s:2:"WX";s:3:"778";s:1:"N";s:1:"G";s:1:"B";a:4:{i:0;s:2:"44";i:1;s:3:"-19";i:2;s:3:"713";i:3;s:3:"737";}}i:72;a:4:{s:1:"C";s:2:"72";s:2:"WX";s:3:"722";s:1:"N";s:1:"H";s:1:"B";a:4:{i:0;s:2:"71";i:1;s:1:"0";i:2;s:3:"651";i:3;s:3:"718";}}s:1:"H";a:4:{s:1:"C";s:2:"72";s:2:"WX";s:3:"722";s:1:"N";s:1:"H";s:1:"B";a:4:{i:0;s:2:"71";i:1;s:1:"0";i:2;s:3:"651";i:3;s:3:"718";}}i:73;a:4:{s:1:"C";s:2:"73";s:2:"WX";s:3:"278";s:1:"N";s:1:"I";s:1:"B";a:4:{i:0;s:2:"64";i:1;s:1:"0";i:2;s:3:"214";i:3;s:3:"718";}}s:1:"I";a:4:{s:1:"C";s:2:"73";s:2:"WX";s:3:"278";s:1:"N";s:1:"I";s:1:"B";a:4:{i:0;s:2:"64";i:1;s:1:"0";i:2;s:3:"214";i:3;s:3:"718";}}i:74;a:4:{s:1:"C";s:2:"74";s:2:"WX";s:3:"556";s:1:"N";s:1:"J";s:1:"B";a:4:{i:0;s:2:"22";i:1;s:3:"-18";i:2;s:3:"484";i:3;s:3:"718";}}s:1:"J";a:4:{s:1:"C";s:2:"74";s:2:"WX";s:3:"556";s:1:"N";s:1:"J";s:1:"B";a:4:{i:0;s:2:"22";i:1;s:3:"-18";i:2;s:3:"484";i:3;s:3:"718";}}i:75;a:4:{s:1:"C";s:2:"75";s:2:"WX";s:3:"722";s:1:"N";s:1:"K";s:1:"B";a:4:{i:0;s:2:"87";i:1;s:1:"0";i:2;s:3:"722";i:3;s:3:"718";}}s:1:"K";a:4:{s:1:"C";s:2:"75";s:2:"WX";s:3:"722";s:1:"N";s:1:"K";s:1:"B";a:4:{i:0;s:2:"87";i:1;s:1:"0";i:2;s:3:"722";i:3;s:3:"718";}}i:76;a:4:{s:1:"C";s:2:"76";s:2:"WX";s:3:"611";s:1:"N";s:1:"L";s:1:"B";a:4:{i:0;s:2:"76";i:1;s:1:"0";i:2;s:3:"583";i:3;s:3:"718";}}s:1:"L";a:4:{s:1:"C";s:2:"76";s:2:"WX";s:3:"611";s:1:"N";s:1:"L";s:1:"B";a:4:{i:0;s:2:"76";i:1;s:1:"0";i:2;s:3:"583";i:3;s:3:"718";}}i:77;a:4:{s:1:"C";s:2:"77";s:2:"WX";s:3:"833";s:1:"N";s:1:"M";s:1:"B";a:4:{i:0;s:2:"69";i:1;s:1:"0";i:2;s:3:"765";i:3;s:3:"718";}}s:1:"M";a:4:{s:1:"C";s:2:"77";s:2:"WX";s:3:"833";s:1:"N";s:1:"M";s:1:"B";a:4:{i:0;s:2:"69";i:1;s:1:"0";i:2;s:3:"765";i:3;s:3:"718";}}i:78;a:4:{s:1:"C";s:2:"78";s:2:"WX";s:3:"722";s:1:"N";s:1:"N";s:1:"B";a:4:{i:0;s:2:"69";i:1;s:1:"0";i:2;s:3:"654";i:3;s:3:"718";}}s:1:"N";a:4:{s:1:"C";s:2:"78";s:2:"WX";s:3:"722";s:1:"N";s:1:"N";s:1:"B";a:4:{i:0;s:2:"69";i:1;s:1:"0";i:2;s:3:"654";i:3;s:3:"718";}}i:79;a:4:{s:1:"C";s:2:"79";s:2:"WX";s:3:"778";s:1:"N";s:1:"O";s:1:"B";a:4:{i:0;s:2:"44";i:1;s:3:"-19";i:2;s:3:"734";i:3;s:3:"737";}}s:1:"O";a:4:{s:1:"C";s:2:"79";s:2:"WX";s:3:"778";s:1:"N";s:1:"O";s:1:"B";a:4:{i:0;s:2:"44";i:1;s:3:"-19";i:2;s:3:"734";i:3;s:3:"737";}}i:80;a:4:{s:1:"C";s:2:"80";s:2:"WX";s:3:"667";s:1:"N";s:1:"P";s:1:"B";a:4:{i:0;s:2:"76";i:1;s:1:"0";i:2;s:3:"627";i:3;s:3:"718";}}s:1:"P";a:4:{s:1:"C";s:2:"80";s:2:"WX";s:3:"667";s:1:"N";s:1:"P";s:1:"B";a:4:{i:0;s:2:"76";i:1;s:1:"0";i:2;s:3:"627";i:3;s:3:"718";}}i:81;a:4:{s:1:"C";s:2:"81";s:2:"WX";s:3:"778";s:1:"N";s:1:"Q";s:1:"B";a:4:{i:0;s:2:"44";i:1;s:3:"-52";i:2;s:3:"737";i:3;s:3:"737";}}s:1:"Q";a:4:{s:1:"C";s:2:"81";s:2:"WX";s:3:"778";s:1:"N";s:1:"Q";s:1:"B";a:4:{i:0;s:2:"44";i:1;s:3:"-52";i:2;s:3:"737";i:3;s:3:"737";}}i:82;a:4:{s:1:"C";s:2:"82";s:2:"WX";s:3:"722";s:1:"N";s:1:"R";s:1:"B";a:4:{i:0;s:2:"76";i:1;s:1:"0";i:2;s:3:"677";i:3;s:3:"718";}}s:1:"R";a:4:{s:1:"C";s:2:"82";s:2:"WX";s:3:"722";s:1:"N";s:1:"R";s:1:"B";a:4:{i:0;s:2:"76";i:1;s:1:"0";i:2;s:3:"677";i:3;s:3:"718";}}i:83;a:4:{s:1:"C";s:2:"83";s:2:"WX";s:3:"667";s:1:"N";s:1:"S";s:1:"B";a:4:{i:0;s:2:"39";i:1;s:3:"-19";i:2;s:3:"629";i:3;s:3:"737";}}s:1:"S";a:4:{s:1:"C";s:2:"83";s:2:"WX";s:3:"667";s:1:"N";s:1:"S";s:1:"B";a:4:{i:0;s:2:"39";i:1;s:3:"-19";i:2;s:3:"629";i:3;s:3:"737";}}i:84;a:4:{s:1:"C";s:2:"84";s:2:"WX";s:3:"611";s:1:"N";s:1:"T";s:1:"B";a:4:{i:0;s:2:"14";i:1;s:1:"0";i:2;s:3:"598";i:3;s:3:"718";}}s:1:"T";a:4:{s:1:"C";s:2:"84";s:2:"WX";s:3:"611";s:1:"N";s:1:"T";s:1:"B";a:4:{i:0;s:2:"14";i:1;s:1:"0";i:2;s:3:"598";i:3;s:3:"718";}}i:85;a:4:{s:1:"C";s:2:"85";s:2:"WX";s:3:"722";s:1:"N";s:1:"U";s:1:"B";a:4:{i:0;s:2:"72";i:1;s:3:"-19";i:2;s:3:"651";i:3;s:3:"718";}}s:1:"U";a:4:{s:1:"C";s:2:"85";s:2:"WX";s:3:"722";s:1:"N";s:1:"U";s:1:"B";a:4:{i:0;s:2:"72";i:1;s:3:"-19";i:2;s:3:"651";i:3;s:3:"718";}}i:86;a:4:{s:1:"C";s:2:"86";s:2:"WX";s:3:"667";s:1:"N";s:1:"V";s:1:"B";a:4:{i:0;s:2:"19";i:1;s:1:"0";i:2;s:3:"648";i:3;s:3:"718";}}s:1:"V";a:4:{s:1:"C";s:2:"86";s:2:"WX";s:3:"667";s:1:"N";s:1:"V";s:1:"B";a:4:{i:0;s:2:"19";i:1;s:1:"0";i:2;s:3:"648";i:3;s:3:"718";}}i:87;a:4:{s:1:"C";s:2:"87";s:2:"WX";s:3:"944";s:1:"N";s:1:"W";s:1:"B";a:4:{i:0;s:2:"16";i:1;s:1:"0";i:2;s:3:"929";i:3;s:3:"718";}}s:1:"W";a:4:{s:1:"C";s:2:"87";s:2:"WX";s:3:"944";s:1:"N";s:1:"W";s:1:"B";a:4:{i:0;s:2:"16";i:1;s:1:"0";i:2;s:3:"929";i:3;s:3:"718";}}i:88;a:4:{s:1:"C";s:2:"88";s:2:"WX";s:3:"667";s:1:"N";s:1:"X";s:1:"B";a:4:{i:0;s:2:"14";i:1;s:1:"0";i:2;s:3:"653";i:3;s:3:"718";}}s:1:"X";a:4:{s:1:"C";s:2:"88";s:2:"WX";s:3:"667";s:1:"N";s:1:"X";s:1:"B";a:4:{i:0;s:2:"14";i:1;s:1:"0";i:2;s:3:"653";i:3;s:3:"718";}}i:89;a:4:{s:1:"C";s:2:"89";s:2:"WX";s:3:"667";s:1:"N";s:1:"Y";s:1:"B";a:4:{i:0;s:2:"15";i:1;s:1:"0";i:2;s:3:"653";i:3;s:3:"718";}}s:1:"Y";a:4:{s:1:"C";s:2:"89";s:2:"WX";s:3:"667";s:1:"N";s:1:"Y";s:1:"B";a:4:{i:0;s:2:"15";i:1;s:1:"0";i:2;s:3:"653";i:3;s:3:"718";}}i:90;a:4:{s:1:"C";s:2:"90";s:2:"WX";s:3:"611";s:1:"N";s:1:"Z";s:1:"B";a:4:{i:0;s:2:"25";i:1;s:1:"0";i:2;s:3:"586";i:3;s:3:"718";}}s:1:"Z";a:4:{s:1:"C";s:2:"90";s:2:"WX";s:3:"611";s:1:"N";s:1:"Z";s:1:"B";a:4:{i:0;s:2:"25";i:1;s:1:"0";i:2;s:3:"586";i:3;s:3:"718";}}i:91;a:4:{s:1:"C";s:2:"91";s:2:"WX";s:3:"333";s:1:"N";s:11:"bracketleft";s:1:"B";a:4:{i:0;s:2:"63";i:1;s:4:"-196";i:2;s:3:"309";i:3;s:3:"722";}}s:11:"bracketleft";a:4:{s:1:"C";s:2:"91";s:2:"WX";s:3:"333";s:1:"N";s:11:"bracketleft";s:1:"B";a:4:{i:0;s:2:"63";i:1;s:4:"-196";i:2;s:3:"309";i:3;s:3:"722";}}i:92;a:4:{s:1:"C";s:2:"92";s:2:"WX";s:3:"278";s:1:"N";s:9:"backslash";s:1:"B";a:4:{i:0;s:3:"-33";i:1;s:3:"-19";i:2;s:3:"311";i:3;s:3:"737";}}s:9:"backslash";a:4:{s:1:"C";s:2:"92";s:2:"WX";s:3:"278";s:1:"N";s:9:"backslash";s:1:"B";a:4:{i:0;s:3:"-33";i:1;s:3:"-19";i:2;s:3:"311";i:3;s:3:"737";}}i:93;a:4:{s:1:"C";s:2:"93";s:2:"WX";s:3:"333";s:1:"N";s:12:"bracketright";s:1:"B";a:4:{i:0;s:2:"24";i:1;s:4:"-196";i:2;s:3:"270";i:3;s:3:"722";}}s:12:"bracketright";a:4:{s:1:"C";s:2:"93";s:2:"WX";s:3:"333";s:1:"N";s:12:"bracketright";s:1:"B";a:4:{i:0;s:2:"24";i:1;s:4:"-196";i:2;s:3:"270";i:3;s:3:"722";}}i:94;a:4:{s:1:"C";s:2:"94";s:2:"WX";s:3:"584";s:1:"N";s:11:"asciicircum";s:1:"B";a:4:{i:0;s:2:"62";i:1;s:3:"323";i:2;s:3:"522";i:3;s:3:"698";}}s:11:"asciicircum";a:4:{s:1:"C";s:2:"94";s:2:"WX";s:3:"584";s:1:"N";s:11:"asciicircum";s:1:"B";a:4:{i:0;s:2:"62";i:1;s:3:"323";i:2;s:3:"522";i:3;s:3:"698";}}i:95;a:4:{s:1:"C";s:2:"95";s:2:"WX";s:3:"556";s:1:"N";s:10:"underscore";s:1:"B";a:4:{i:0;s:1:"0";i:1;s:4:"-125";i:2;s:3:"556";i:3;s:3:"-75";}}s:10:"underscore";a:4:{s:1:"C";s:2:"95";s:2:"WX";s:3:"556";s:1:"N";s:10:"underscore";s:1:"B";a:4:{i:0;s:1:"0";i:1;s:4:"-125";i:2;s:3:"556";i:3;s:3:"-75";}}i:96;a:4:{s:1:"C";s:2:"96";s:2:"WX";s:3:"278";s:1:"N";s:9:"quoteleft";s:1:"B";a:4:{i:0;s:2:"69";i:1;s:3:"454";i:2;s:3:"209";i:3;s:3:"727";}}s:9:"quoteleft";a:4:{s:1:"C";s:2:"96";s:2:"WX";s:3:"278";s:1:"N";s:9:"quoteleft";s:1:"B";a:4:{i:0;s:2:"69";i:1;s:3:"454";i:2;s:3:"209";i:3;s:3:"727";}}i:97;a:4:{s:1:"C";s:2:"97";s:2:"WX";s:3:"556";s:1:"N";s:1:"a";s:1:"B";a:4:{i:0;s:2:"29";i:1;s:3:"-14";i:2;s:3:"527";i:3;s:3:"546";}}s:1:"a";a:4:{s:1:"C";s:2:"97";s:2:"WX";s:3:"556";s:1:"N";s:1:"a";s:1:"B";a:4:{i:0;s:2:"29";i:1;s:3:"-14";i:2;s:3:"527";i:3;s:3:"546";}}i:98;a:4:{s:1:"C";s:2:"98";s:2:"WX";s:3:"611";s:1:"N";s:1:"b";s:1:"B";a:4:{i:0;s:2:"61";i:1;s:3:"-14";i:2;s:3:"578";i:3;s:3:"718";}}s:1:"b";a:4:{s:1:"C";s:2:"98";s:2:"WX";s:3:"611";s:1:"N";s:1:"b";s:1:"B";a:4:{i:0;s:2:"61";i:1;s:3:"-14";i:2;s:3:"578";i:3;s:3:"718";}}i:99;a:4:{s:1:"C";s:2:"99";s:2:"WX";s:3:"556";s:1:"N";s:1:"c";s:1:"B";a:4:{i:0;s:2:"34";i:1;s:3:"-14";i:2;s:3:"524";i:3;s:3:"546";}}s:1:"c";a:4:{s:1:"C";s:2:"99";s:2:"WX";s:3:"556";s:1:"N";s:1:"c";s:1:"B";a:4:{i:0;s:2:"34";i:1;s:3:"-14";i:2;s:3:"524";i:3;s:3:"546";}}i:100;a:4:{s:1:"C";s:3:"100";s:2:"WX";s:3:"611";s:1:"N";s:1:"d";s:1:"B";a:4:{i:0;s:2:"34";i:1;s:3:"-14";i:2;s:3:"551";i:3;s:3:"718";}}s:1:"d";a:4:{s:1:"C";s:3:"100";s:2:"WX";s:3:"611";s:1:"N";s:1:"d";s:1:"B";a:4:{i:0;s:2:"34";i:1;s:3:"-14";i:2;s:3:"551";i:3;s:3:"718";}}i:101;a:4:{s:1:"C";s:3:"101";s:2:"WX";s:3:"556";s:1:"N";s:1:"e";s:1:"B";a:4:{i:0;s:2:"23";i:1;s:3:"-14";i:2;s:3:"528";i:3;s:3:"546";}}s:1:"e";a:4:{s:1:"C";s:3:"101";s:2:"WX";s:3:"556";s:1:"N";s:1:"e";s:1:"B";a:4:{i:0;s:2:"23";i:1;s:3:"-14";i:2;s:3:"528";i:3;s:3:"546";}}i:102;a:5:{s:1:"C";s:3:"102";s:2:"WX";s:3:"333";s:1:"N";s:1:"f";s:1:"B";a:4:{i:0;s:2:"10";i:1;s:1:"0";i:2;s:3:"318";i:3;s:3:"727";}s:1:"L";a:2:{i:0;s:1:"l";i:1;s:2:"fl";}}s:1:"f";a:5:{s:1:"C";s:3:"102";s:2:"WX";s:3:"333";s:1:"N";s:1:"f";s:1:"B";a:4:{i:0;s:2:"10";i:1;s:1:"0";i:2;s:3:"318";i:3;s:3:"727";}s:1:"L";a:2:{i:0;s:1:"l";i:1;s:2:"fl";}}i:103;a:4:{s:1:"C";s:3:"103";s:2:"WX";s:3:"611";s:1:"N";s:1:"g";s:1:"B";a:4:{i:0;s:2:"40";i:1;s:4:"-217";i:2;s:3:"553";i:3;s:3:"546";}}s:1:"g";a:4:{s:1:"C";s:3:"103";s:2:"WX";s:3:"611";s:1:"N";s:1:"g";s:1:"B";a:4:{i:0;s:2:"40";i:1;s:4:"-217";i:2;s:3:"553";i:3;s:3:"546";}}i:104;a:4:{s:1:"C";s:3:"104";s:2:"WX";s:3:"611";s:1:"N";s:1:"h";s:1:"B";a:4:{i:0;s:2:"65";i:1;s:1:"0";i:2;s:3:"546";i:3;s:3:"718";}}s:1:"h";a:4:{s:1:"C";s:3:"104";s:2:"WX";s:3:"611";s:1:"N";s:1:"h";s:1:"B";a:4:{i:0;s:2:"65";i:1;s:1:"0";i:2;s:3:"546";i:3;s:3:"718";}}i:105;a:4:{s:1:"C";s:3:"105";s:2:"WX";s:3:"278";s:1:"N";s:1:"i";s:1:"B";a:4:{i:0;s:2:"69";i:1;s:1:"0";i:2;s:3:"209";i:3;s:3:"725";}}s:1:"i";a:4:{s:1:"C";s:3:"105";s:2:"WX";s:3:"278";s:1:"N";s:1:"i";s:1:"B";a:4:{i:0;s:2:"69";i:1;s:1:"0";i:2;s:3:"209";i:3;s:3:"725";}}i:106;a:4:{s:1:"C";s:3:"106";s:2:"WX";s:3:"278";s:1:"N";s:1:"j";s:1:"B";a:4:{i:0;s:1:"3";i:1;s:4:"-214";i:2;s:3:"209";i:3;s:3:"725";}}s:1:"j";a:4:{s:1:"C";s:3:"106";s:2:"WX";s:3:"278";s:1:"N";s:1:"j";s:1:"B";a:4:{i:0;s:1:"3";i:1;s:4:"-214";i:2;s:3:"209";i:3;s:3:"725";}}i:107;a:4:{s:1:"C";s:3:"107";s:2:"WX";s:3:"556";s:1:"N";s:1:"k";s:1:"B";a:4:{i:0;s:2:"69";i:1;s:1:"0";i:2;s:3:"562";i:3;s:3:"718";}}s:1:"k";a:4:{s:1:"C";s:3:"107";s:2:"WX";s:3:"556";s:1:"N";s:1:"k";s:1:"B";a:4:{i:0;s:2:"69";i:1;s:1:"0";i:2;s:3:"562";i:3;s:3:"718";}}i:108;a:4:{s:1:"C";s:3:"108";s:2:"WX";s:3:"278";s:1:"N";s:1:"l";s:1:"B";a:4:{i:0;s:2:"69";i:1;s:1:"0";i:2;s:3:"209";i:3;s:3:"718";}}s:1:"l";a:4:{s:1:"C";s:3:"108";s:2:"WX";s:3:"278";s:1:"N";s:1:"l";s:1:"B";a:4:{i:0;s:2:"69";i:1;s:1:"0";i:2;s:3:"209";i:3;s:3:"718";}}i:109;a:4:{s:1:"C";s:3:"109";s:2:"WX";s:3:"889";s:1:"N";s:1:"m";s:1:"B";a:4:{i:0;s:2:"64";i:1;s:1:"0";i:2;s:3:"826";i:3;s:3:"546";}}s:1:"m";a:4:{s:1:"C";s:3:"109";s:2:"WX";s:3:"889";s:1:"N";s:1:"m";s:1:"B";a:4:{i:0;s:2:"64";i:1;s:1:"0";i:2;s:3:"826";i:3;s:3:"546";}}i:110;a:4:{s:1:"C";s:3:"110";s:2:"WX";s:3:"611";s:1:"N";s:1:"n";s:1:"B";a:4:{i:0;s:2:"65";i:1;s:1:"0";i:2;s:3:"546";i:3;s:3:"546";}}s:1:"n";a:4:{s:1:"C";s:3:"110";s:2:"WX";s:3:"611";s:1:"N";s:1:"n";s:1:"B";a:4:{i:0;s:2:"65";i:1;s:1:"0";i:2;s:3:"546";i:3;s:3:"546";}}i:111;a:4:{s:1:"C";s:3:"111";s:2:"WX";s:3:"611";s:1:"N";s:1:"o";s:1:"B";a:4:{i:0;s:2:"34";i:1;s:3:"-14";i:2;s:3:"578";i:3;s:3:"546";}}s:1:"o";a:4:{s:1:"C";s:3:"111";s:2:"WX";s:3:"611";s:1:"N";s:1:"o";s:1:"B";a:4:{i:0;s:2:"34";i:1;s:3:"-14";i:2;s:3:"578";i:3;s:3:"546";}}i:112;a:4:{s:1:"C";s:3:"112";s:2:"WX";s:3:"611";s:1:"N";s:1:"p";s:1:"B";a:4:{i:0;s:2:"62";i:1;s:4:"-207";i:2;s:3:"578";i:3;s:3:"546";}}s:1:"p";a:4:{s:1:"C";s:3:"112";s:2:"WX";s:3:"611";s:1:"N";s:1:"p";s:1:"B";a:4:{i:0;s:2:"62";i:1;s:4:"-207";i:2;s:3:"578";i:3;s:3:"546";}}i:113;a:4:{s:1:"C";s:3:"113";s:2:"WX";s:3:"611";s:1:"N";s:1:"q";s:1:"B";a:4:{i:0;s:2:"34";i:1;s:4:"-207";i:2;s:3:"552";i:3;s:3:"546";}}s:1:"q";a:4:{s:1:"C";s:3:"113";s:2:"WX";s:3:"611";s:1:"N";s:1:"q";s:1:"B";a:4:{i:0;s:2:"34";i:1;s:4:"-207";i:2;s:3:"552";i:3;s:3:"546";}}i:114;a:4:{s:1:"C";s:3:"114";s:2:"WX";s:3:"389";s:1:"N";s:1:"r";s:1:"B";a:4:{i:0;s:2:"64";i:1;s:1:"0";i:2;s:3:"373";i:3;s:3:"546";}}s:1:"r";a:4:{s:1:"C";s:3:"114";s:2:"WX";s:3:"389";s:1:"N";s:1:"r";s:1:"B";a:4:{i:0;s:2:"64";i:1;s:1:"0";i:2;s:3:"373";i:3;s:3:"546";}}i:115;a:4:{s:1:"C";s:3:"115";s:2:"WX";s:3:"556";s:1:"N";s:1:"s";s:1:"B";a:4:{i:0;s:2:"30";i:1;s:3:"-14";i:2;s:3:"519";i:3;s:3:"546";}}s:1:"s";a:4:{s:1:"C";s:3:"115";s:2:"WX";s:3:"556";s:1:"N";s:1:"s";s:1:"B";a:4:{i:0;s:2:"30";i:1;s:3:"-14";i:2;s:3:"519";i:3;s:3:"546";}}i:116;a:4:{s:1:"C";s:3:"116";s:2:"WX";s:3:"333";s:1:"N";s:1:"t";s:1:"B";a:4:{i:0;s:2:"10";i:1;s:2:"-6";i:2;s:3:"309";i:3;s:3:"676";}}s:1:"t";a:4:{s:1:"C";s:3:"116";s:2:"WX";s:3:"333";s:1:"N";s:1:"t";s:1:"B";a:4:{i:0;s:2:"10";i:1;s:2:"-6";i:2;s:3:"309";i:3;s:3:"676";}}i:117;a:4:{s:1:"C";s:3:"117";s:2:"WX";s:3:"611";s:1:"N";s:1:"u";s:1:"B";a:4:{i:0;s:2:"66";i:1;s:3:"-14";i:2;s:3:"545";i:3;s:3:"532";}}s:1:"u";a:4:{s:1:"C";s:3:"117";s:2:"WX";s:3:"611";s:1:"N";s:1:"u";s:1:"B";a:4:{i:0;s:2:"66";i:1;s:3:"-14";i:2;s:3:"545";i:3;s:3:"532";}}i:118;a:4:{s:1:"C";s:3:"118";s:2:"WX";s:3:"556";s:1:"N";s:1:"v";s:1:"B";a:4:{i:0;s:2:"13";i:1;s:1:"0";i:2;s:3:"543";i:3;s:3:"532";}}s:1:"v";a:4:{s:1:"C";s:3:"118";s:2:"WX";s:3:"556";s:1:"N";s:1:"v";s:1:"B";a:4:{i:0;s:2:"13";i:1;s:1:"0";i:2;s:3:"543";i:3;s:3:"532";}}i:119;a:4:{s:1:"C";s:3:"119";s:2:"WX";s:3:"778";s:1:"N";s:1:"w";s:1:"B";a:4:{i:0;s:2:"10";i:1;s:1:"0";i:2;s:3:"769";i:3;s:3:"532";}}s:1:"w";a:4:{s:1:"C";s:3:"119";s:2:"WX";s:3:"778";s:1:"N";s:1:"w";s:1:"B";a:4:{i:0;s:2:"10";i:1;s:1:"0";i:2;s:3:"769";i:3;s:3:"532";}}i:120;a:4:{s:1:"C";s:3:"120";s:2:"WX";s:3:"556";s:1:"N";s:1:"x";s:1:"B";a:4:{i:0;s:2:"15";i:1;s:1:"0";i:2;s:3:"541";i:3;s:3:"532";}}s:1:"x";a:4:{s:1:"C";s:3:"120";s:2:"WX";s:3:"556";s:1:"N";s:1:"x";s:1:"B";a:4:{i:0;s:2:"15";i:1;s:1:"0";i:2;s:3:"541";i:3;s:3:"532";}}i:121;a:4:{s:1:"C";s:3:"121";s:2:"WX";s:3:"556";s:1:"N";s:1:"y";s:1:"B";a:4:{i:0;s:2:"10";i:1;s:4:"-214";i:2;s:3:"539";i:3;s:3:"532";}}s:1:"y";a:4:{s:1:"C";s:3:"121";s:2:"WX";s:3:"556";s:1:"N";s:1:"y";s:1:"B";a:4:{i:0;s:2:"10";i:1;s:4:"-214";i:2;s:3:"539";i:3;s:3:"532";}}i:122;a:4:{s:1:"C";s:3:"122";s:2:"WX";s:3:"500";s:1:"N";s:1:"z";s:1:"B";a:4:{i:0;s:2:"20";i:1;s:1:"0";i:2;s:3:"480";i:3;s:3:"532";}}s:1:"z";a:4:{s:1:"C";s:3:"122";s:2:"WX";s:3:"500";s:1:"N";s:1:"z";s:1:"B";a:4:{i:0;s:2:"20";i:1;s:1:"0";i:2;s:3:"480";i:3;s:3:"532";}}i:123;a:4:{s:1:"C";s:3:"123";s:2:"WX";s:3:"389";s:1:"N";s:9:"braceleft";s:1:"B";a:4:{i:0;s:2:"48";i:1;s:4:"-196";i:2;s:3:"365";i:3;s:3:"722";}}s:9:"braceleft";a:4:{s:1:"C";s:3:"123";s:2:"WX";s:3:"389";s:1:"N";s:9:"braceleft";s:1:"B";a:4:{i:0;s:2:"48";i:1;s:4:"-196";i:2;s:3:"365";i:3;s:3:"722";}}i:124;a:4:{s:1:"C";s:3:"124";s:2:"WX";s:3:"280";s:1:"N";s:3:"bar";s:1:"B";a:4:{i:0;s:2:"84";i:1;s:4:"-225";i:2;s:3:"196";i:3;s:3:"775";}}s:3:"bar";a:4:{s:1:"C";s:3:"124";s:2:"WX";s:3:"280";s:1:"N";s:3:"bar";s:1:"B";a:4:{i:0;s:2:"84";i:1;s:4:"-225";i:2;s:3:"196";i:3;s:3:"775";}}i:125;a:4:{s:1:"C";s:3:"125";s:2:"WX";s:3:"389";s:1:"N";s:10:"braceright";s:1:"B";a:4:{i:0;s:2:"24";i:1;s:4:"-196";i:2;s:3:"341";i:3;s:3:"722";}}s:10:"braceright";a:4:{s:1:"C";s:3:"125";s:2:"WX";s:3:"389";s:1:"N";s:10:"braceright";s:1:"B";a:4:{i:0;s:2:"24";i:1;s:4:"-196";i:2;s:3:"341";i:3;s:3:"722";}}i:126;a:4:{s:1:"C";s:3:"126";s:2:"WX";s:3:"584";s:1:"N";s:10:"asciitilde";s:1:"B";a:4:{i:0;s:2:"61";i:1;s:3:"163";i:2;s:3:"523";i:3;s:3:"343";}}s:10:"asciitilde";a:4:{s:1:"C";s:3:"126";s:2:"WX";s:3:"584";s:1:"N";s:10:"asciitilde";s:1:"B";a:4:{i:0;s:2:"61";i:1;s:3:"163";i:2;s:3:"523";i:3;s:3:"343";}}i:161;a:4:{s:1:"C";s:3:"161";s:2:"WX";s:3:"333";s:1:"N";s:10:"exclamdown";s:1:"B";a:4:{i:0;s:2:"90";i:1;s:4:"-186";i:2;s:3:"244";i:3;s:3:"532";}}s:10:"exclamdown";a:4:{s:1:"C";s:3:"161";s:2:"WX";s:3:"333";s:1:"N";s:10:"exclamdown";s:1:"B";a:4:{i:0;s:2:"90";i:1;s:4:"-186";i:2;s:3:"244";i:3;s:3:"532";}}i:162;a:4:{s:1:"C";s:3:"162";s:2:"WX";s:3:"556";s:1:"N";s:4:"cent";s:1:"B";a:4:{i:0;s:2:"34";i:1;s:4:"-118";i:2;s:3:"524";i:3;s:3:"628";}}s:4:"cent";a:4:{s:1:"C";s:3:"162";s:2:"WX";s:3:"556";s:1:"N";s:4:"cent";s:1:"B";a:4:{i:0;s:2:"34";i:1;s:4:"-118";i:2;s:3:"524";i:3;s:3:"628";}}i:163;a:4:{s:1:"C";s:3:"163";s:2:"WX";s:3:"556";s:1:"N";s:8:"sterling";s:1:"B";a:4:{i:0;s:2:"28";i:1;s:3:"-16";i:2;s:3:"541";i:3;s:3:"718";}}s:8:"sterling";a:4:{s:1:"C";s:3:"163";s:2:"WX";s:3:"556";s:1:"N";s:8:"sterling";s:1:"B";a:4:{i:0;s:2:"28";i:1;s:3:"-16";i:2;s:3:"541";i:3;s:3:"718";}}i:164;a:4:{s:1:"C";s:3:"164";s:2:"WX";s:3:"167";s:1:"N";s:8:"fraction";s:1:"B";a:4:{i:0;s:4:"-170";i:1;s:3:"-19";i:2;s:3:"336";i:3;s:3:"710";}}s:8:"fraction";a:4:{s:1:"C";s:3:"164";s:2:"WX";s:3:"167";s:1:"N";s:8:"fraction";s:1:"B";a:4:{i:0;s:4:"-170";i:1;s:3:"-19";i:2;s:3:"336";i:3;s:3:"710";}}i:165;a:4:{s:1:"C";s:3:"165";s:2:"WX";s:3:"556";s:1:"N";s:3:"yen";s:1:"B";a:4:{i:0;s:2:"-9";i:1;s:1:"0";i:2;s:3:"565";i:3;s:3:"698";}}s:3:"yen";a:4:{s:1:"C";s:3:"165";s:2:"WX";s:3:"556";s:1:"N";s:3:"yen";s:1:"B";a:4:{i:0;s:2:"-9";i:1;s:1:"0";i:2;s:3:"565";i:3;s:3:"698";}}i:166;a:4:{s:1:"C";s:3:"166";s:2:"WX";s:3:"556";s:1:"N";s:6:"florin";s:1:"B";a:4:{i:0;s:3:"-10";i:1;s:4:"-210";i:2;s:3:"516";i:3;s:3:"737";}}s:6:"florin";a:4:{s:1:"C";s:3:"166";s:2:"WX";s:3:"556";s:1:"N";s:6:"florin";s:1:"B";a:4:{i:0;s:3:"-10";i:1;s:4:"-210";i:2;s:3:"516";i:3;s:3:"737";}}i:167;a:4:{s:1:"C";s:3:"167";s:2:"WX";s:3:"556";s:1:"N";s:7:"section";s:1:"B";a:4:{i:0;s:2:"34";i:1;s:4:"-184";i:2;s:3:"522";i:3;s:3:"727";}}s:7:"section";a:4:{s:1:"C";s:3:"167";s:2:"WX";s:3:"556";s:1:"N";s:7:"section";s:1:"B";a:4:{i:0;s:2:"34";i:1;s:4:"-184";i:2;s:3:"522";i:3;s:3:"727";}}i:168;a:4:{s:1:"C";s:3:"168";s:2:"WX";s:3:"556";s:1:"N";s:8:"currency";s:1:"B";a:4:{i:0;s:2:"-3";i:1;s:2:"76";i:2;s:3:"559";i:3;s:3:"636";}}s:8:"currency";a:4:{s:1:"C";s:3:"168";s:2:"WX";s:3:"556";s:1:"N";s:8:"currency";s:1:"B";a:4:{i:0;s:2:"-3";i:1;s:2:"76";i:2;s:3:"559";i:3;s:3:"636";}}i:169;a:4:{s:1:"C";s:3:"169";s:2:"WX";s:3:"238";s:1:"N";s:11:"quotesingle";s:1:"B";a:4:{i:0;s:2:"70";i:1;s:3:"447";i:2;s:3:"168";i:3;s:3:"718";}}s:11:"quotesingle";a:4:{s:1:"C";s:3:"169";s:2:"WX";s:3:"238";s:1:"N";s:11:"quotesingle";s:1:"B";a:4:{i:0;s:2:"70";i:1;s:3:"447";i:2;s:3:"168";i:3;s:3:"718";}}i:170;a:4:{s:1:"C";s:3:"170";s:2:"WX";s:3:"500";s:1:"N";s:12:"quotedblleft";s:1:"B";a:4:{i:0;s:2:"64";i:1;s:3:"454";i:2;s:3:"436";i:3;s:3:"727";}}s:12:"quotedblleft";a:4:{s:1:"C";s:3:"170";s:2:"WX";s:3:"500";s:1:"N";s:12:"quotedblleft";s:1:"B";a:4:{i:0;s:2:"64";i:1;s:3:"454";i:2;s:3:"436";i:3;s:3:"727";}}i:171;a:4:{s:1:"C";s:3:"171";s:2:"WX";s:3:"556";s:1:"N";s:13:"guillemotleft";s:1:"B";a:4:{i:0;s:2:"88";i:1;s:2:"76";i:2;s:3:"468";i:3;s:3:"484";}}s:13:"guillemotleft";a:4:{s:1:"C";s:3:"171";s:2:"WX";s:3:"556";s:1:"N";s:13:"guillemotleft";s:1:"B";a:4:{i:0;s:2:"88";i:1;s:2:"76";i:2;s:3:"468";i:3;s:3:"484";}}i:172;a:4:{s:1:"C";s:3:"172";s:2:"WX";s:3:"333";s:1:"N";s:13:"guilsinglleft";s:1:"B";a:4:{i:0;s:2:"83";i:1;s:2:"76";i:2;s:3:"250";i:3;s:3:"484";}}s:13:"guilsinglleft";a:4:{s:1:"C";s:3:"172";s:2:"WX";s:3:"333";s:1:"N";s:13:"guilsinglleft";s:1:"B";a:4:{i:0;s:2:"83";i:1;s:2:"76";i:2;s:3:"250";i:3;s:3:"484";}}i:173;a:4:{s:1:"C";s:3:"173";s:2:"WX";s:3:"333";s:1:"N";s:14:"guilsinglright";s:1:"B";a:4:{i:0;s:2:"83";i:1;s:2:"76";i:2;s:3:"250";i:3;s:3:"484";}}s:14:"guilsinglright";a:4:{s:1:"C";s:3:"173";s:2:"WX";s:3:"333";s:1:"N";s:14:"guilsinglright";s:1:"B";a:4:{i:0;s:2:"83";i:1;s:2:"76";i:2;s:3:"250";i:3;s:3:"484";}}i:174;a:4:{s:1:"C";s:3:"174";s:2:"WX";s:3:"611";s:1:"N";s:2:"fi";s:1:"B";a:4:{i:0;s:2:"10";i:1;s:1:"0";i:2;s:3:"542";i:3;s:3:"727";}}s:2:"fi";a:4:{s:1:"C";s:3:"174";s:2:"WX";s:3:"611";s:1:"N";s:2:"fi";s:1:"B";a:4:{i:0;s:2:"10";i:1;s:1:"0";i:2;s:3:"542";i:3;s:3:"727";}}i:175;a:4:{s:1:"C";s:3:"175";s:2:"WX";s:3:"611";s:1:"N";s:2:"fl";s:1:"B";a:4:{i:0;s:2:"10";i:1;s:1:"0";i:2;s:3:"542";i:3;s:3:"727";}}s:2:"fl";a:4:{s:1:"C";s:3:"175";s:2:"WX";s:3:"611";s:1:"N";s:2:"fl";s:1:"B";a:4:{i:0;s:2:"10";i:1;s:1:"0";i:2;s:3:"542";i:3;s:3:"727";}}i:177;a:4:{s:1:"C";s:3:"177";s:2:"WX";s:3:"556";s:1:"N";s:6:"endash";s:1:"B";a:4:{i:0;s:1:"0";i:1;s:3:"227";i:2;s:3:"556";i:3;s:3:"333";}}s:6:"endash";a:4:{s:1:"C";s:3:"177";s:2:"WX";s:3:"556";s:1:"N";s:6:"endash";s:1:"B";a:4:{i:0;s:1:"0";i:1;s:3:"227";i:2;s:3:"556";i:3;s:3:"333";}}i:178;a:4:{s:1:"C";s:3:"178";s:2:"WX";s:3:"556";s:1:"N";s:6:"dagger";s:1:"B";a:4:{i:0;s:2:"36";i:1;s:4:"-171";i:2;s:3:"520";i:3;s:3:"718";}}s:6:"dagger";a:4:{s:1:"C";s:3:"178";s:2:"WX";s:3:"556";s:1:"N";s:6:"dagger";s:1:"B";a:4:{i:0;s:2:"36";i:1;s:4:"-171";i:2;s:3:"520";i:3;s:3:"718";}}i:179;a:4:{s:1:"C";s:3:"179";s:2:"WX";s:3:"556";s:1:"N";s:9:"daggerdbl";s:1:"B";a:4:{i:0;s:2:"36";i:1;s:4:"-171";i:2;s:3:"520";i:3;s:3:"718";}}s:9:"daggerdbl";a:4:{s:1:"C";s:3:"179";s:2:"WX";s:3:"556";s:1:"N";s:9:"daggerdbl";s:1:"B";a:4:{i:0;s:2:"36";i:1;s:4:"-171";i:2;s:3:"520";i:3;s:3:"718";}}i:180;a:4:{s:1:"C";s:3:"180";s:2:"WX";s:3:"278";s:1:"N";s:14:"periodcentered";s:1:"B";a:4:{i:0;s:2:"58";i:1;s:3:"172";i:2;s:3:"220";i:3;s:3:"334";}}s:14:"periodcentered";a:4:{s:1:"C";s:3:"180";s:2:"WX";s:3:"278";s:1:"N";s:14:"periodcentered";s:1:"B";a:4:{i:0;s:2:"58";i:1;s:3:"172";i:2;s:3:"220";i:3;s:3:"334";}}i:182;a:4:{s:1:"C";s:3:"182";s:2:"WX";s:3:"556";s:1:"N";s:9:"paragraph";s:1:"B";a:4:{i:0;s:2:"-8";i:1;s:4:"-191";i:2;s:3:"539";i:3;s:3:"700";}}s:9:"paragraph";a:4:{s:1:"C";s:3:"182";s:2:"WX";s:3:"556";s:1:"N";s:9:"paragraph";s:1:"B";a:4:{i:0;s:2:"-8";i:1;s:4:"-191";i:2;s:3:"539";i:3;s:3:"700";}}i:183;a:4:{s:1:"C";s:3:"183";s:2:"WX";s:3:"350";s:1:"N";s:6:"bullet";s:1:"B";a:4:{i:0;s:2:"10";i:1;s:3:"194";i:2;s:3:"340";i:3;s:3:"524";}}s:6:"bullet";a:4:{s:1:"C";s:3:"183";s:2:"WX";s:3:"350";s:1:"N";s:6:"bullet";s:1:"B";a:4:{i:0;s:2:"10";i:1;s:3:"194";i:2;s:3:"340";i:3;s:3:"524";}}i:184;a:4:{s:1:"C";s:3:"184";s:2:"WX";s:3:"278";s:1:"N";s:14:"quotesinglbase";s:1:"B";a:4:{i:0;s:2:"69";i:1;s:4:"-146";i:2;s:3:"209";i:3;s:3:"127";}}s:14:"quotesinglbase";a:4:{s:1:"C";s:3:"184";s:2:"WX";s:3:"278";s:1:"N";s:14:"quotesinglbase";s:1:"B";a:4:{i:0;s:2:"69";i:1;s:4:"-146";i:2;s:3:"209";i:3;s:3:"127";}}i:185;a:4:{s:1:"C";s:3:"185";s:2:"WX";s:3:"500";s:1:"N";s:12:"quotedblbase";s:1:"B";a:4:{i:0;s:2:"64";i:1;s:4:"-146";i:2;s:3:"436";i:3;s:3:"127";}}s:12:"quotedblbase";a:4:{s:1:"C";s:3:"185";s:2:"WX";s:3:"500";s:1:"N";s:12:"quotedblbase";s:1:"B";a:4:{i:0;s:2:"64";i:1;s:4:"-146";i:2;s:3:"436";i:3;s:3:"127";}}i:186;a:4:{s:1:"C";s:3:"186";s:2:"WX";s:3:"500";s:1:"N";s:13:"quotedblright";s:1:"B";a:4:{i:0;s:2:"64";i:1;s:3:"445";i:2;s:3:"436";i:3;s:3:"718";}}s:13:"quotedblright";a:4:{s:1:"C";s:3:"186";s:2:"WX";s:3:"500";s:1:"N";s:13:"quotedblright";s:1:"B";a:4:{i:0;s:2:"64";i:1;s:3:"445";i:2;s:3:"436";i:3;s:3:"718";}}i:187;a:4:{s:1:"C";s:3:"187";s:2:"WX";s:3:"556";s:1:"N";s:14:"guillemotright";s:1:"B";a:4:{i:0;s:2:"88";i:1;s:2:"76";i:2;s:3:"468";i:3;s:3:"484";}}s:14:"guillemotright";a:4:{s:1:"C";s:3:"187";s:2:"WX";s:3:"556";s:1:"N";s:14:"guillemotright";s:1:"B";a:4:{i:0;s:2:"88";i:1;s:2:"76";i:2;s:3:"468";i:3;s:3:"484";}}i:188;a:4:{s:1:"C";s:3:"188";s:2:"WX";s:4:"1000";s:1:"N";s:8:"ellipsis";s:1:"B";a:4:{i:0;s:2:"92";i:1;s:1:"0";i:2;s:3:"908";i:3;s:3:"146";}}s:8:"ellipsis";a:4:{s:1:"C";s:3:"188";s:2:"WX";s:4:"1000";s:1:"N";s:8:"ellipsis";s:1:"B";a:4:{i:0;s:2:"92";i:1;s:1:"0";i:2;s:3:"908";i:3;s:3:"146";}}i:189;a:4:{s:1:"C";s:3:"189";s:2:"WX";s:4:"1000";s:1:"N";s:11:"perthousand";s:1:"B";a:4:{i:0;s:2:"-3";i:1;s:3:"-19";i:2;s:4:"1003";i:3;s:3:"710";}}s:11:"perthousand";a:4:{s:1:"C";s:3:"189";s:2:"WX";s:4:"1000";s:1:"N";s:11:"perthousand";s:1:"B";a:4:{i:0;s:2:"-3";i:1;s:3:"-19";i:2;s:4:"1003";i:3;s:3:"710";}}i:191;a:4:{s:1:"C";s:3:"191";s:2:"WX";s:3:"611";s:1:"N";s:12:"questiondown";s:1:"B";a:4:{i:0;s:2:"55";i:1;s:4:"-195";i:2;s:3:"551";i:3;s:3:"532";}}s:12:"questiondown";a:4:{s:1:"C";s:3:"191";s:2:"WX";s:3:"611";s:1:"N";s:12:"questiondown";s:1:"B";a:4:{i:0;s:2:"55";i:1;s:4:"-195";i:2;s:3:"551";i:3;s:3:"532";}}i:193;a:4:{s:1:"C";s:3:"193";s:2:"WX";s:3:"333";s:1:"N";s:5:"grave";s:1:"B";a:4:{i:0;s:3:"-23";i:1;s:3:"604";i:2;s:3:"225";i:3;s:3:"750";}}s:5:"grave";a:4:{s:1:"C";s:3:"193";s:2:"WX";s:3:"333";s:1:"N";s:5:"grave";s:1:"B";a:4:{i:0;s:3:"-23";i:1;s:3:"604";i:2;s:3:"225";i:3;s:3:"750";}}i:194;a:4:{s:1:"C";s:3:"194";s:2:"WX";s:3:"333";s:1:"N";s:5:"acute";s:1:"B";a:4:{i:0;s:3:"108";i:1;s:3:"604";i:2;s:3:"356";i:3;s:3:"750";}}s:5:"acute";a:4:{s:1:"C";s:3:"194";s:2:"WX";s:3:"333";s:1:"N";s:5:"acute";s:1:"B";a:4:{i:0;s:3:"108";i:1;s:3:"604";i:2;s:3:"356";i:3;s:3:"750";}}i:195;a:4:{s:1:"C";s:3:"195";s:2:"WX";s:3:"333";s:1:"N";s:10:"circumflex";s:1:"B";a:4:{i:0;s:3:"-10";i:1;s:3:"604";i:2;s:3:"343";i:3;s:3:"750";}}s:10:"circumflex";a:4:{s:1:"C";s:3:"195";s:2:"WX";s:3:"333";s:1:"N";s:10:"circumflex";s:1:"B";a:4:{i:0;s:3:"-10";i:1;s:3:"604";i:2;s:3:"343";i:3;s:3:"750";}}i:196;a:4:{s:1:"C";s:3:"196";s:2:"WX";s:3:"333";s:1:"N";s:5:"tilde";s:1:"B";a:4:{i:0;s:3:"-17";i:1;s:3:"610";i:2;s:3:"350";i:3;s:3:"737";}}s:5:"tilde";a:4:{s:1:"C";s:3:"196";s:2:"WX";s:3:"333";s:1:"N";s:5:"tilde";s:1:"B";a:4:{i:0;s:3:"-17";i:1;s:3:"610";i:2;s:3:"350";i:3;s:3:"737";}}i:197;a:4:{s:1:"C";s:3:"197";s:2:"WX";s:3:"333";s:1:"N";s:6:"macron";s:1:"B";a:4:{i:0;s:2:"-6";i:1;s:3:"604";i:2;s:3:"339";i:3;s:3:"678";}}s:6:"macron";a:4:{s:1:"C";s:3:"197";s:2:"WX";s:3:"333";s:1:"N";s:6:"macron";s:1:"B";a:4:{i:0;s:2:"-6";i:1;s:3:"604";i:2;s:3:"339";i:3;s:3:"678";}}i:198;a:4:{s:1:"C";s:3:"198";s:2:"WX";s:3:"333";s:1:"N";s:5:"breve";s:1:"B";a:4:{i:0;s:2:"-2";i:1;s:3:"604";i:2;s:3:"335";i:3;s:3:"750";}}s:5:"breve";a:4:{s:1:"C";s:3:"198";s:2:"WX";s:3:"333";s:1:"N";s:5:"breve";s:1:"B";a:4:{i:0;s:2:"-2";i:1;s:3:"604";i:2;s:3:"335";i:3;s:3:"750";}}i:199;a:4:{s:1:"C";s:3:"199";s:2:"WX";s:3:"333";s:1:"N";s:9:"dotaccent";s:1:"B";a:4:{i:0;s:3:"104";i:1;s:3:"614";i:2;s:3:"230";i:3;s:3:"729";}}s:9:"dotaccent";a:4:{s:1:"C";s:3:"199";s:2:"WX";s:3:"333";s:1:"N";s:9:"dotaccent";s:1:"B";a:4:{i:0;s:3:"104";i:1;s:3:"614";i:2;s:3:"230";i:3;s:3:"729";}}i:200;a:4:{s:1:"C";s:3:"200";s:2:"WX";s:3:"333";s:1:"N";s:8:"dieresis";s:1:"B";a:4:{i:0;s:1:"6";i:1;s:3:"614";i:2;s:3:"327";i:3;s:3:"729";}}s:8:"dieresis";a:4:{s:1:"C";s:3:"200";s:2:"WX";s:3:"333";s:1:"N";s:8:"dieresis";s:1:"B";a:4:{i:0;s:1:"6";i:1;s:3:"614";i:2;s:3:"327";i:3;s:3:"729";}}i:202;a:4:{s:1:"C";s:3:"202";s:2:"WX";s:3:"333";s:1:"N";s:4:"ring";s:1:"B";a:4:{i:0;s:2:"59";i:1;s:3:"568";i:2;s:3:"275";i:3;s:3:"776";}}s:4:"ring";a:4:{s:1:"C";s:3:"202";s:2:"WX";s:3:"333";s:1:"N";s:4:"ring";s:1:"B";a:4:{i:0;s:2:"59";i:1;s:3:"568";i:2;s:3:"275";i:3;s:3:"776";}}i:203;a:4:{s:1:"C";s:3:"203";s:2:"WX";s:3:"333";s:1:"N";s:7:"cedilla";s:1:"B";a:4:{i:0;s:1:"6";i:1;s:4:"-228";i:2;s:3:"245";i:3;s:1:"0";}}s:7:"cedilla";a:4:{s:1:"C";s:3:"203";s:2:"WX";s:3:"333";s:1:"N";s:7:"cedilla";s:1:"B";a:4:{i:0;s:1:"6";i:1;s:4:"-228";i:2;s:3:"245";i:3;s:1:"0";}}i:205;a:4:{s:1:"C";s:3:"205";s:2:"WX";s:3:"333";s:1:"N";s:12:"hungarumlaut";s:1:"B";a:4:{i:0;s:1:"9";i:1;s:3:"604";i:2;s:3:"486";i:3;s:3:"750";}}s:12:"hungarumlaut";a:4:{s:1:"C";s:3:"205";s:2:"WX";s:3:"333";s:1:"N";s:12:"hungarumlaut";s:1:"B";a:4:{i:0;s:1:"9";i:1;s:3:"604";i:2;s:3:"486";i:3;s:3:"750";}}i:206;a:4:{s:1:"C";s:3:"206";s:2:"WX";s:3:"333";s:1:"N";s:6:"ogonek";s:1:"B";a:4:{i:0;s:2:"71";i:1;s:4:"-228";i:2;s:3:"304";i:3;s:1:"0";}}s:6:"ogonek";a:4:{s:1:"C";s:3:"206";s:2:"WX";s:3:"333";s:1:"N";s:6:"ogonek";s:1:"B";a:4:{i:0;s:2:"71";i:1;s:4:"-228";i:2;s:3:"304";i:3;s:1:"0";}}i:207;a:4:{s:1:"C";s:3:"207";s:2:"WX";s:3:"333";s:1:"N";s:5:"caron";s:1:"B";a:4:{i:0;s:3:"-10";i:1;s:3:"604";i:2;s:3:"343";i:3;s:3:"750";}}s:5:"caron";a:4:{s:1:"C";s:3:"207";s:2:"WX";s:3:"333";s:1:"N";s:5:"caron";s:1:"B";a:4:{i:0;s:3:"-10";i:1;s:3:"604";i:2;s:3:"343";i:3;s:3:"750";}}i:208;a:4:{s:1:"C";s:3:"208";s:2:"WX";s:4:"1000";s:1:"N";s:6:"emdash";s:1:"B";a:4:{i:0;s:1:"0";i:1;s:3:"227";i:2;s:4:"1000";i:3;s:3:"333";}}s:6:"emdash";a:4:{s:1:"C";s:3:"208";s:2:"WX";s:4:"1000";s:1:"N";s:6:"emdash";s:1:"B";a:4:{i:0;s:1:"0";i:1;s:3:"227";i:2;s:4:"1000";i:3;s:3:"333";}}i:225;a:4:{s:1:"C";s:3:"225";s:2:"WX";s:4:"1000";s:1:"N";s:2:"AE";s:1:"B";a:4:{i:0;s:1:"5";i:1;s:1:"0";i:2;s:3:"954";i:3;s:3:"718";}}s:2:"AE";a:4:{s:1:"C";s:3:"225";s:2:"WX";s:4:"1000";s:1:"N";s:2:"AE";s:1:"B";a:4:{i:0;s:1:"5";i:1;s:1:"0";i:2;s:3:"954";i:3;s:3:"718";}}i:227;a:4:{s:1:"C";s:3:"227";s:2:"WX";s:3:"370";s:1:"N";s:11:"ordfeminine";s:1:"B";a:4:{i:0;s:2:"22";i:1;s:3:"401";i:2;s:3:"347";i:3;s:3:"737";}}s:11:"ordfeminine";a:4:{s:1:"C";s:3:"227";s:2:"WX";s:3:"370";s:1:"N";s:11:"ordfeminine";s:1:"B";a:4:{i:0;s:2:"22";i:1;s:3:"401";i:2;s:3:"347";i:3;s:3:"737";}}i:232;a:4:{s:1:"C";s:3:"232";s:2:"WX";s:3:"611";s:1:"N";s:6:"Lslash";s:1:"B";a:4:{i:0;s:3:"-20";i:1;s:1:"0";i:2;s:3:"583";i:3;s:3:"718";}}s:6:"Lslash";a:4:{s:1:"C";s:3:"232";s:2:"WX";s:3:"611";s:1:"N";s:6:"Lslash";s:1:"B";a:4:{i:0;s:3:"-20";i:1;s:1:"0";i:2;s:3:"583";i:3;s:3:"718";}}i:233;a:4:{s:1:"C";s:3:"233";s:2:"WX";s:3:"778";s:1:"N";s:6:"Oslash";s:1:"B";a:4:{i:0;s:2:"33";i:1;s:3:"-27";i:2;s:3:"744";i:3;s:3:"745";}}s:6:"Oslash";a:4:{s:1:"C";s:3:"233";s:2:"WX";s:3:"778";s:1:"N";s:6:"Oslash";s:1:"B";a:4:{i:0;s:2:"33";i:1;s:3:"-27";i:2;s:3:"744";i:3;s:3:"745";}}i:234;a:4:{s:1:"C";s:3:"234";s:2:"WX";s:4:"1000";s:1:"N";s:2:"OE";s:1:"B";a:4:{i:0;s:2:"37";i:1;s:3:"-19";i:2;s:3:"961";i:3;s:3:"737";}}s:2:"OE";a:4:{s:1:"C";s:3:"234";s:2:"WX";s:4:"1000";s:1:"N";s:2:"OE";s:1:"B";a:4:{i:0;s:2:"37";i:1;s:3:"-19";i:2;s:3:"961";i:3;s:3:"737";}}i:235;a:4:{s:1:"C";s:3:"235";s:2:"WX";s:3:"365";s:1:"N";s:12:"ordmasculine";s:1:"B";a:4:{i:0;s:1:"6";i:1;s:3:"401";i:2;s:3:"360";i:3;s:3:"737";}}s:12:"ordmasculine";a:4:{s:1:"C";s:3:"235";s:2:"WX";s:3:"365";s:1:"N";s:12:"ordmasculine";s:1:"B";a:4:{i:0;s:1:"6";i:1;s:3:"401";i:2;s:3:"360";i:3;s:3:"737";}}i:241;a:4:{s:1:"C";s:3:"241";s:2:"WX";s:3:"889";s:1:"N";s:2:"ae";s:1:"B";a:4:{i:0;s:2:"29";i:1;s:3:"-14";i:2;s:3:"858";i:3;s:3:"546";}}s:2:"ae";a:4:{s:1:"C";s:3:"241";s:2:"WX";s:3:"889";s:1:"N";s:2:"ae";s:1:"B";a:4:{i:0;s:2:"29";i:1;s:3:"-14";i:2;s:3:"858";i:3;s:3:"546";}}i:245;a:4:{s:1:"C";s:3:"245";s:2:"WX";s:3:"278";s:1:"N";s:8:"dotlessi";s:1:"B";a:4:{i:0;s:2:"69";i:1;s:1:"0";i:2;s:3:"209";i:3;s:3:"532";}}s:8:"dotlessi";a:4:{s:1:"C";s:3:"245";s:2:"WX";s:3:"278";s:1:"N";s:8:"dotlessi";s:1:"B";a:4:{i:0;s:2:"69";i:1;s:1:"0";i:2;s:3:"209";i:3;s:3:"532";}}i:248;a:4:{s:1:"C";s:3:"248";s:2:"WX";s:3:"278";s:1:"N";s:6:"lslash";s:1:"B";a:4:{i:0;s:3:"-18";i:1;s:1:"0";i:2;s:3:"296";i:3;s:3:"718";}}s:6:"lslash";a:4:{s:1:"C";s:3:"248";s:2:"WX";s:3:"278";s:1:"N";s:6:"lslash";s:1:"B";a:4:{i:0;s:3:"-18";i:1;s:1:"0";i:2;s:3:"296";i:3;s:3:"718";}}i:249;a:4:{s:1:"C";s:3:"249";s:2:"WX";s:3:"611";s:1:"N";s:6:"oslash";s:1:"B";a:4:{i:0;s:2:"22";i:1;s:3:"-29";i:2;s:3:"589";i:3;s:3:"560";}}s:6:"oslash";a:4:{s:1:"C";s:3:"249";s:2:"WX";s:3:"611";s:1:"N";s:6:"oslash";s:1:"B";a:4:{i:0;s:2:"22";i:1;s:3:"-29";i:2;s:3:"589";i:3;s:3:"560";}}i:250;a:4:{s:1:"C";s:3:"250";s:2:"WX";s:3:"944";s:1:"N";s:2:"oe";s:1:"B";a:4:{i:0;s:2:"34";i:1;s:3:"-14";i:2;s:3:"912";i:3;s:3:"546";}}s:2:"oe";a:4:{s:1:"C";s:3:"250";s:2:"WX";s:3:"944";s:1:"N";s:2:"oe";s:1:"B";a:4:{i:0;s:2:"34";i:1;s:3:"-14";i:2;s:3:"912";i:3;s:3:"546";}}i:251;a:4:{s:1:"C";s:3:"251";s:2:"WX";s:3:"611";s:1:"N";s:10:"germandbls";s:1:"B";a:4:{i:0;s:2:"69";i:1;s:3:"-14";i:2;s:3:"579";i:3;s:3:"731";}}s:10:"germandbls";a:4:{s:1:"C";s:3:"251";s:2:"WX";s:3:"611";s:1:"N";s:10:"germandbls";s:1:"B";a:4:{i:0;s:2:"69";i:1;s:3:"-14";i:2;s:3:"579";i:3;s:3:"731";}}s:9:"Idieresis";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"278";s:1:"N";s:9:"Idieresis";s:1:"B";a:4:{i:0;s:3:"-21";i:1;s:1:"0";i:2;s:3:"300";i:3;s:3:"915";}}s:6:"eacute";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"556";s:1:"N";s:6:"eacute";s:1:"B";a:4:{i:0;s:2:"23";i:1;s:3:"-14";i:2;s:3:"528";i:3;s:3:"750";}}s:6:"abreve";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"556";s:1:"N";s:6:"abreve";s:1:"B";a:4:{i:0;s:2:"29";i:1;s:3:"-14";i:2;s:3:"527";i:3;s:3:"750";}}s:13:"uhungarumlaut";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"611";s:1:"N";s:13:"uhungarumlaut";s:1:"B";a:4:{i:0;s:2:"66";i:1;s:3:"-14";i:2;s:3:"625";i:3;s:3:"750";}}s:6:"ecaron";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"556";s:1:"N";s:6:"ecaron";s:1:"B";a:4:{i:0;s:2:"23";i:1;s:3:"-14";i:2;s:3:"528";i:3;s:3:"750";}}s:9:"Ydieresis";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"667";s:1:"N";s:9:"Ydieresis";s:1:"B";a:4:{i:0;s:2:"15";i:1;s:1:"0";i:2;s:3:"653";i:3;s:3:"915";}}s:6:"divide";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"584";s:1:"N";s:6:"divide";s:1:"B";a:4:{i:0;s:2:"40";i:1;s:3:"-42";i:2;s:3:"544";i:3;s:3:"548";}}s:6:"Yacute";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"667";s:1:"N";s:6:"Yacute";s:1:"B";a:4:{i:0;s:2:"15";i:1;s:1:"0";i:2;s:3:"653";i:3;s:3:"936";}}s:11:"Acircumflex";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"722";s:1:"N";s:11:"Acircumflex";s:1:"B";a:4:{i:0;s:2:"20";i:1;s:1:"0";i:2;s:3:"702";i:3;s:3:"936";}}s:6:"aacute";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"556";s:1:"N";s:6:"aacute";s:1:"B";a:4:{i:0;s:2:"29";i:1;s:3:"-14";i:2;s:3:"527";i:3;s:3:"750";}}s:11:"Ucircumflex";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"722";s:1:"N";s:11:"Ucircumflex";s:1:"B";a:4:{i:0;s:2:"72";i:1;s:3:"-19";i:2;s:3:"651";i:3;s:3:"936";}}s:6:"yacute";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"556";s:1:"N";s:6:"yacute";s:1:"B";a:4:{i:0;s:2:"10";i:1;s:4:"-214";i:2;s:3:"539";i:3;s:3:"750";}}s:12:"scommaaccent";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"556";s:1:"N";s:12:"scommaaccent";s:1:"B";a:4:{i:0;s:2:"30";i:1;s:4:"-228";i:2;s:3:"519";i:3;s:3:"546";}}s:11:"ecircumflex";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"556";s:1:"N";s:11:"ecircumflex";s:1:"B";a:4:{i:0;s:2:"23";i:1;s:3:"-14";i:2;s:3:"528";i:3;s:3:"750";}}s:5:"Uring";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"722";s:1:"N";s:5:"Uring";s:1:"B";a:4:{i:0;s:2:"72";i:1;s:3:"-19";i:2;s:3:"651";i:3;s:3:"962";}}s:9:"Udieresis";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"722";s:1:"N";s:9:"Udieresis";s:1:"B";a:4:{i:0;s:2:"72";i:1;s:3:"-19";i:2;s:3:"651";i:3;s:3:"915";}}s:7:"aogonek";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"556";s:1:"N";s:7:"aogonek";s:1:"B";a:4:{i:0;s:2:"29";i:1;s:4:"-224";i:2;s:3:"545";i:3;s:3:"546";}}s:6:"Uacute";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"722";s:1:"N";s:6:"Uacute";s:1:"B";a:4:{i:0;s:2:"72";i:1;s:3:"-19";i:2;s:3:"651";i:3;s:3:"936";}}s:7:"uogonek";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"611";s:1:"N";s:7:"uogonek";s:1:"B";a:4:{i:0;s:2:"66";i:1;s:4:"-228";i:2;s:3:"545";i:3;s:3:"532";}}s:9:"Edieresis";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"667";s:1:"N";s:9:"Edieresis";s:1:"B";a:4:{i:0;s:2:"76";i:1;s:1:"0";i:2;s:3:"621";i:3;s:3:"915";}}s:6:"Dcroat";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"722";s:1:"N";s:6:"Dcroat";s:1:"B";a:4:{i:0;s:2:"-5";i:1;s:1:"0";i:2;s:3:"685";i:3;s:3:"718";}}s:11:"commaaccent";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"250";s:1:"N";s:11:"commaaccent";s:1:"B";a:4:{i:0;s:2:"64";i:1;s:4:"-228";i:2;s:3:"199";i:3;s:3:"-50";}}s:9:"copyright";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"737";s:1:"N";s:9:"copyright";s:1:"B";a:4:{i:0;s:3:"-11";i:1;s:3:"-19";i:2;s:3:"749";i:3;s:3:"737";}}s:7:"Emacron";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"667";s:1:"N";s:7:"Emacron";s:1:"B";a:4:{i:0;s:2:"76";i:1;s:1:"0";i:2;s:3:"621";i:3;s:3:"864";}}s:6:"ccaron";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"556";s:1:"N";s:6:"ccaron";s:1:"B";a:4:{i:0;s:2:"34";i:1;s:3:"-14";i:2;s:3:"524";i:3;s:3:"750";}}s:5:"aring";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"556";s:1:"N";s:5:"aring";s:1:"B";a:4:{i:0;s:2:"29";i:1;s:3:"-14";i:2;s:3:"527";i:3;s:3:"776";}}s:12:"Ncommaaccent";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"722";s:1:"N";s:12:"Ncommaaccent";s:1:"B";a:4:{i:0;s:2:"69";i:1;s:4:"-228";i:2;s:3:"654";i:3;s:3:"718";}}s:6:"lacute";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"278";s:1:"N";s:6:"lacute";s:1:"B";a:4:{i:0;s:2:"69";i:1;s:1:"0";i:2;s:3:"329";i:3;s:3:"936";}}s:6:"agrave";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"556";s:1:"N";s:6:"agrave";s:1:"B";a:4:{i:0;s:2:"29";i:1;s:3:"-14";i:2;s:3:"527";i:3;s:3:"750";}}s:12:"Tcommaaccent";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"611";s:1:"N";s:12:"Tcommaaccent";s:1:"B";a:4:{i:0;s:2:"14";i:1;s:4:"-228";i:2;s:3:"598";i:3;s:3:"718";}}s:6:"Cacute";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"722";s:1:"N";s:6:"Cacute";s:1:"B";a:4:{i:0;s:2:"44";i:1;s:3:"-19";i:2;s:3:"684";i:3;s:3:"936";}}s:6:"atilde";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"556";s:1:"N";s:6:"atilde";s:1:"B";a:4:{i:0;s:2:"29";i:1;s:3:"-14";i:2;s:3:"527";i:3;s:3:"737";}}s:10:"Edotaccent";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"667";s:1:"N";s:10:"Edotaccent";s:1:"B";a:4:{i:0;s:2:"76";i:1;s:1:"0";i:2;s:3:"621";i:3;s:3:"915";}}s:6:"scaron";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"556";s:1:"N";s:6:"scaron";s:1:"B";a:4:{i:0;s:2:"30";i:1;s:3:"-14";i:2;s:3:"519";i:3;s:3:"750";}}s:8:"scedilla";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"556";s:1:"N";s:8:"scedilla";s:1:"B";a:4:{i:0;s:2:"30";i:1;s:4:"-228";i:2;s:3:"519";i:3;s:3:"546";}}s:6:"iacute";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"278";s:1:"N";s:6:"iacute";s:1:"B";a:4:{i:0;s:2:"69";i:1;s:1:"0";i:2;s:3:"329";i:3;s:3:"750";}}s:7:"lozenge";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"494";s:1:"N";s:7:"lozenge";s:1:"B";a:4:{i:0;s:2:"10";i:1;s:1:"0";i:2;s:3:"484";i:3;s:3:"745";}}s:6:"Rcaron";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"722";s:1:"N";s:6:"Rcaron";s:1:"B";a:4:{i:0;s:2:"76";i:1;s:1:"0";i:2;s:3:"677";i:3;s:3:"936";}}s:12:"Gcommaaccent";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"778";s:1:"N";s:12:"Gcommaaccent";s:1:"B";a:4:{i:0;s:2:"44";i:1;s:4:"-228";i:2;s:3:"713";i:3;s:3:"737";}}s:11:"ucircumflex";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"611";s:1:"N";s:11:"ucircumflex";s:1:"B";a:4:{i:0;s:2:"66";i:1;s:3:"-14";i:2;s:3:"545";i:3;s:3:"750";}}s:11:"acircumflex";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"556";s:1:"N";s:11:"acircumflex";s:1:"B";a:4:{i:0;s:2:"29";i:1;s:3:"-14";i:2;s:3:"527";i:3;s:3:"750";}}s:7:"Amacron";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"722";s:1:"N";s:7:"Amacron";s:1:"B";a:4:{i:0;s:2:"20";i:1;s:1:"0";i:2;s:3:"702";i:3;s:3:"864";}}s:6:"rcaron";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"389";s:1:"N";s:6:"rcaron";s:1:"B";a:4:{i:0;s:2:"18";i:1;s:1:"0";i:2;s:3:"373";i:3;s:3:"750";}}s:8:"ccedilla";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"556";s:1:"N";s:8:"ccedilla";s:1:"B";a:4:{i:0;s:2:"34";i:1;s:4:"-228";i:2;s:3:"524";i:3;s:3:"546";}}s:10:"Zdotaccent";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"611";s:1:"N";s:10:"Zdotaccent";s:1:"B";a:4:{i:0;s:2:"25";i:1;s:1:"0";i:2;s:3:"586";i:3;s:3:"915";}}s:5:"Thorn";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"667";s:1:"N";s:5:"Thorn";s:1:"B";a:4:{i:0;s:2:"76";i:1;s:1:"0";i:2;s:3:"627";i:3;s:3:"718";}}s:7:"Omacron";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"778";s:1:"N";s:7:"Omacron";s:1:"B";a:4:{i:0;s:2:"44";i:1;s:3:"-19";i:2;s:3:"734";i:3;s:3:"864";}}s:6:"Racute";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"722";s:1:"N";s:6:"Racute";s:1:"B";a:4:{i:0;s:2:"76";i:1;s:1:"0";i:2;s:3:"677";i:3;s:3:"936";}}s:6:"Sacute";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"667";s:1:"N";s:6:"Sacute";s:1:"B";a:4:{i:0;s:2:"39";i:1;s:3:"-19";i:2;s:3:"629";i:3;s:3:"936";}}s:6:"dcaron";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"743";s:1:"N";s:6:"dcaron";s:1:"B";a:4:{i:0;s:2:"34";i:1;s:3:"-14";i:2;s:3:"750";i:3;s:3:"718";}}s:7:"Umacron";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"722";s:1:"N";s:7:"Umacron";s:1:"B";a:4:{i:0;s:2:"72";i:1;s:3:"-19";i:2;s:3:"651";i:3;s:3:"864";}}s:5:"uring";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"611";s:1:"N";s:5:"uring";s:1:"B";a:4:{i:0;s:2:"66";i:1;s:3:"-14";i:2;s:3:"545";i:3;s:3:"776";}}s:13:"threesuperior";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"333";s:1:"N";s:13:"threesuperior";s:1:"B";a:4:{i:0;s:1:"8";i:1;s:3:"271";i:2;s:3:"326";i:3;s:3:"710";}}s:6:"Ograve";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"778";s:1:"N";s:6:"Ograve";s:1:"B";a:4:{i:0;s:2:"44";i:1;s:3:"-19";i:2;s:3:"734";i:3;s:3:"936";}}s:6:"Agrave";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"722";s:1:"N";s:6:"Agrave";s:1:"B";a:4:{i:0;s:2:"20";i:1;s:1:"0";i:2;s:3:"702";i:3;s:3:"936";}}s:6:"Abreve";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"722";s:1:"N";s:6:"Abreve";s:1:"B";a:4:{i:0;s:2:"20";i:1;s:1:"0";i:2;s:3:"702";i:3;s:3:"936";}}s:8:"multiply";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"584";s:1:"N";s:8:"multiply";s:1:"B";a:4:{i:0;s:2:"40";i:1;s:1:"1";i:2;s:3:"545";i:3;s:3:"505";}}s:6:"uacute";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"611";s:1:"N";s:6:"uacute";s:1:"B";a:4:{i:0;s:2:"66";i:1;s:3:"-14";i:2;s:3:"545";i:3;s:3:"750";}}s:6:"Tcaron";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"611";s:1:"N";s:6:"Tcaron";s:1:"B";a:4:{i:0;s:2:"14";i:1;s:1:"0";i:2;s:3:"598";i:3;s:3:"936";}}s:11:"partialdiff";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"494";s:1:"N";s:11:"partialdiff";s:1:"B";a:4:{i:0;s:2:"11";i:1;s:3:"-21";i:2;s:3:"494";i:3;s:3:"750";}}s:9:"ydieresis";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"556";s:1:"N";s:9:"ydieresis";s:1:"B";a:4:{i:0;s:2:"10";i:1;s:4:"-214";i:2;s:3:"539";i:3;s:3:"729";}}s:6:"Nacute";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"722";s:1:"N";s:6:"Nacute";s:1:"B";a:4:{i:0;s:2:"69";i:1;s:1:"0";i:2;s:3:"654";i:3;s:3:"936";}}s:11:"icircumflex";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"278";s:1:"N";s:11:"icircumflex";s:1:"B";a:4:{i:0;s:3:"-37";i:1;s:1:"0";i:2;s:3:"316";i:3;s:3:"750";}}s:11:"Ecircumflex";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"667";s:1:"N";s:11:"Ecircumflex";s:1:"B";a:4:{i:0;s:2:"76";i:1;s:1:"0";i:2;s:3:"621";i:3;s:3:"936";}}s:9:"adieresis";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"556";s:1:"N";s:9:"adieresis";s:1:"B";a:4:{i:0;s:2:"29";i:1;s:3:"-14";i:2;s:3:"527";i:3;s:3:"729";}}s:9:"edieresis";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"556";s:1:"N";s:9:"edieresis";s:1:"B";a:4:{i:0;s:2:"23";i:1;s:3:"-14";i:2;s:3:"528";i:3;s:3:"729";}}s:6:"cacute";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"556";s:1:"N";s:6:"cacute";s:1:"B";a:4:{i:0;s:2:"34";i:1;s:3:"-14";i:2;s:3:"524";i:3;s:3:"750";}}s:6:"nacute";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"611";s:1:"N";s:6:"nacute";s:1:"B";a:4:{i:0;s:2:"65";i:1;s:1:"0";i:2;s:3:"546";i:3;s:3:"750";}}s:7:"umacron";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"611";s:1:"N";s:7:"umacron";s:1:"B";a:4:{i:0;s:2:"66";i:1;s:3:"-14";i:2;s:3:"545";i:3;s:3:"678";}}s:6:"Ncaron";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"722";s:1:"N";s:6:"Ncaron";s:1:"B";a:4:{i:0;s:2:"69";i:1;s:1:"0";i:2;s:3:"654";i:3;s:3:"936";}}s:6:"Iacute";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"278";s:1:"N";s:6:"Iacute";s:1:"B";a:4:{i:0;s:2:"64";i:1;s:1:"0";i:2;s:3:"329";i:3;s:3:"936";}}s:9:"plusminus";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"584";s:1:"N";s:9:"plusminus";s:1:"B";a:4:{i:0;s:2:"40";i:1;s:1:"0";i:2;s:3:"544";i:3;s:3:"506";}}s:9:"brokenbar";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"280";s:1:"N";s:9:"brokenbar";s:1:"B";a:4:{i:0;s:2:"84";i:1;s:4:"-150";i:2;s:3:"196";i:3;s:3:"700";}}s:10:"registered";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"737";s:1:"N";s:10:"registered";s:1:"B";a:4:{i:0;s:3:"-11";i:1;s:3:"-19";i:2;s:3:"748";i:3;s:3:"737";}}s:6:"Gbreve";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"778";s:1:"N";s:6:"Gbreve";s:1:"B";a:4:{i:0;s:2:"44";i:1;s:3:"-19";i:2;s:3:"713";i:3;s:3:"936";}}s:10:"Idotaccent";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"278";s:1:"N";s:10:"Idotaccent";s:1:"B";a:4:{i:0;s:2:"64";i:1;s:1:"0";i:2;s:3:"214";i:3;s:3:"915";}}s:9:"summation";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:9:"summation";s:1:"B";a:4:{i:0;s:2:"14";i:1;s:3:"-10";i:2;s:3:"585";i:3;s:3:"706";}}s:6:"Egrave";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"667";s:1:"N";s:6:"Egrave";s:1:"B";a:4:{i:0;s:2:"76";i:1;s:1:"0";i:2;s:3:"621";i:3;s:3:"936";}}s:6:"racute";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"389";s:1:"N";s:6:"racute";s:1:"B";a:4:{i:0;s:2:"64";i:1;s:1:"0";i:2;s:3:"384";i:3;s:3:"750";}}s:7:"omacron";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"611";s:1:"N";s:7:"omacron";s:1:"B";a:4:{i:0;s:2:"34";i:1;s:3:"-14";i:2;s:3:"578";i:3;s:3:"678";}}s:6:"Zacute";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"611";s:1:"N";s:6:"Zacute";s:1:"B";a:4:{i:0;s:2:"25";i:1;s:1:"0";i:2;s:3:"586";i:3;s:3:"936";}}s:6:"Zcaron";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"611";s:1:"N";s:6:"Zcaron";s:1:"B";a:4:{i:0;s:2:"25";i:1;s:1:"0";i:2;s:3:"586";i:3;s:3:"936";}}s:12:"greaterequal";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"549";s:1:"N";s:12:"greaterequal";s:1:"B";a:4:{i:0;s:2:"26";i:1;s:1:"0";i:2;s:3:"523";i:3;s:3:"704";}}s:3:"Eth";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"722";s:1:"N";s:3:"Eth";s:1:"B";a:4:{i:0;s:2:"-5";i:1;s:1:"0";i:2;s:3:"685";i:3;s:3:"718";}}s:8:"Ccedilla";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"722";s:1:"N";s:8:"Ccedilla";s:1:"B";a:4:{i:0;s:2:"44";i:1;s:4:"-228";i:2;s:3:"684";i:3;s:3:"737";}}s:12:"lcommaaccent";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"278";s:1:"N";s:12:"lcommaaccent";s:1:"B";a:4:{i:0;s:2:"69";i:1;s:4:"-228";i:2;s:3:"213";i:3;s:3:"718";}}s:6:"tcaron";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"389";s:1:"N";s:6:"tcaron";s:1:"B";a:4:{i:0;s:2:"10";i:1;s:2:"-6";i:2;s:3:"421";i:3;s:3:"878";}}s:7:"eogonek";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"556";s:1:"N";s:7:"eogonek";s:1:"B";a:4:{i:0;s:2:"23";i:1;s:4:"-228";i:2;s:3:"528";i:3;s:3:"546";}}s:7:"Uogonek";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"722";s:1:"N";s:7:"Uogonek";s:1:"B";a:4:{i:0;s:2:"72";i:1;s:4:"-228";i:2;s:3:"651";i:3;s:3:"718";}}s:6:"Aacute";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"722";s:1:"N";s:6:"Aacute";s:1:"B";a:4:{i:0;s:2:"20";i:1;s:1:"0";i:2;s:3:"702";i:3;s:3:"936";}}s:9:"Adieresis";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"722";s:1:"N";s:9:"Adieresis";s:1:"B";a:4:{i:0;s:2:"20";i:1;s:1:"0";i:2;s:3:"702";i:3;s:3:"915";}}s:6:"egrave";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"556";s:1:"N";s:6:"egrave";s:1:"B";a:4:{i:0;s:2:"23";i:1;s:3:"-14";i:2;s:3:"528";i:3;s:3:"750";}}s:6:"zacute";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"500";s:1:"N";s:6:"zacute";s:1:"B";a:4:{i:0;s:2:"20";i:1;s:1:"0";i:2;s:3:"480";i:3;s:3:"750";}}s:7:"iogonek";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"278";s:1:"N";s:7:"iogonek";s:1:"B";a:4:{i:0;s:2:"16";i:1;s:4:"-224";i:2;s:3:"249";i:3;s:3:"725";}}s:6:"Oacute";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"778";s:1:"N";s:6:"Oacute";s:1:"B";a:4:{i:0;s:2:"44";i:1;s:3:"-19";i:2;s:3:"734";i:3;s:3:"936";}}s:6:"oacute";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"611";s:1:"N";s:6:"oacute";s:1:"B";a:4:{i:0;s:2:"34";i:1;s:3:"-14";i:2;s:3:"578";i:3;s:3:"750";}}s:7:"amacron";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"556";s:1:"N";s:7:"amacron";s:1:"B";a:4:{i:0;s:2:"29";i:1;s:3:"-14";i:2;s:3:"527";i:3;s:3:"678";}}s:6:"sacute";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"556";s:1:"N";s:6:"sacute";s:1:"B";a:4:{i:0;s:2:"30";i:1;s:3:"-14";i:2;s:3:"519";i:3;s:3:"750";}}s:9:"idieresis";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"278";s:1:"N";s:9:"idieresis";s:1:"B";a:4:{i:0;s:3:"-21";i:1;s:1:"0";i:2;s:3:"300";i:3;s:3:"729";}}s:11:"Ocircumflex";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"778";s:1:"N";s:11:"Ocircumflex";s:1:"B";a:4:{i:0;s:2:"44";i:1;s:3:"-19";i:2;s:3:"734";i:3;s:3:"936";}}s:6:"Ugrave";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"722";s:1:"N";s:6:"Ugrave";s:1:"B";a:4:{i:0;s:2:"72";i:1;s:3:"-19";i:2;s:3:"651";i:3;s:3:"936";}}s:5:"Delta";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"612";s:1:"N";s:5:"Delta";s:1:"B";a:4:{i:0;s:1:"6";i:1;s:1:"0";i:2;s:3:"608";i:3;s:3:"688";}}s:5:"thorn";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"611";s:1:"N";s:5:"thorn";s:1:"B";a:4:{i:0;s:2:"62";i:1;s:4:"-208";i:2;s:3:"578";i:3;s:3:"718";}}s:11:"twosuperior";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"333";s:1:"N";s:11:"twosuperior";s:1:"B";a:4:{i:0;s:1:"9";i:1;s:3:"283";i:2;s:3:"324";i:3;s:3:"710";}}s:9:"Odieresis";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"778";s:1:"N";s:9:"Odieresis";s:1:"B";a:4:{i:0;s:2:"44";i:1;s:3:"-19";i:2;s:3:"734";i:3;s:3:"915";}}s:2:"mu";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"611";s:1:"N";s:2:"mu";s:1:"B";a:4:{i:0;s:2:"66";i:1;s:4:"-207";i:2;s:3:"545";i:3;s:3:"532";}}s:6:"igrave";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"278";s:1:"N";s:6:"igrave";s:1:"B";a:4:{i:0;s:3:"-50";i:1;s:1:"0";i:2;s:3:"209";i:3;s:3:"750";}}s:13:"ohungarumlaut";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"611";s:1:"N";s:13:"ohungarumlaut";s:1:"B";a:4:{i:0;s:2:"34";i:1;s:3:"-14";i:2;s:3:"625";i:3;s:3:"750";}}s:7:"Eogonek";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"667";s:1:"N";s:7:"Eogonek";s:1:"B";a:4:{i:0;s:2:"76";i:1;s:4:"-224";i:2;s:3:"639";i:3;s:3:"718";}}s:6:"dcroat";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"611";s:1:"N";s:6:"dcroat";s:1:"B";a:4:{i:0;s:2:"34";i:1;s:3:"-14";i:2;s:3:"650";i:3;s:3:"718";}}s:13:"threequarters";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"834";s:1:"N";s:13:"threequarters";s:1:"B";a:4:{i:0;s:2:"16";i:1;s:3:"-19";i:2;s:3:"799";i:3;s:3:"710";}}s:8:"Scedilla";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"667";s:1:"N";s:8:"Scedilla";s:1:"B";a:4:{i:0;s:2:"39";i:1;s:4:"-228";i:2;s:3:"629";i:3;s:3:"737";}}s:6:"lcaron";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"400";s:1:"N";s:6:"lcaron";s:1:"B";a:4:{i:0;s:2:"69";i:1;s:1:"0";i:2;s:3:"408";i:3;s:3:"718";}}s:12:"Kcommaaccent";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"722";s:1:"N";s:12:"Kcommaaccent";s:1:"B";a:4:{i:0;s:2:"87";i:1;s:4:"-228";i:2;s:3:"722";i:3;s:3:"718";}}s:6:"Lacute";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"611";s:1:"N";s:6:"Lacute";s:1:"B";a:4:{i:0;s:2:"76";i:1;s:1:"0";i:2;s:3:"583";i:3;s:3:"936";}}s:9:"trademark";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:4:"1000";s:1:"N";s:9:"trademark";s:1:"B";a:4:{i:0;s:2:"44";i:1;s:3:"306";i:2;s:3:"956";i:3;s:3:"718";}}s:10:"edotaccent";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"556";s:1:"N";s:10:"edotaccent";s:1:"B";a:4:{i:0;s:2:"23";i:1;s:3:"-14";i:2;s:3:"528";i:3;s:3:"729";}}s:6:"Igrave";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"278";s:1:"N";s:6:"Igrave";s:1:"B";a:4:{i:0;s:3:"-50";i:1;s:1:"0";i:2;s:3:"214";i:3;s:3:"936";}}s:7:"Imacron";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"278";s:1:"N";s:7:"Imacron";s:1:"B";a:4:{i:0;s:3:"-33";i:1;s:1:"0";i:2;s:3:"312";i:3;s:3:"864";}}s:6:"Lcaron";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"611";s:1:"N";s:6:"Lcaron";s:1:"B";a:4:{i:0;s:2:"76";i:1;s:1:"0";i:2;s:3:"583";i:3;s:3:"718";}}s:7:"onehalf";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"834";s:1:"N";s:7:"onehalf";s:1:"B";a:4:{i:0;s:2:"26";i:1;s:3:"-19";i:2;s:3:"794";i:3;s:3:"710";}}s:9:"lessequal";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"549";s:1:"N";s:9:"lessequal";s:1:"B";a:4:{i:0;s:2:"29";i:1;s:1:"0";i:2;s:3:"526";i:3;s:3:"704";}}s:11:"ocircumflex";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"611";s:1:"N";s:11:"ocircumflex";s:1:"B";a:4:{i:0;s:2:"34";i:1;s:3:"-14";i:2;s:3:"578";i:3;s:3:"750";}}s:6:"ntilde";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"611";s:1:"N";s:6:"ntilde";s:1:"B";a:4:{i:0;s:2:"65";i:1;s:1:"0";i:2;s:3:"546";i:3;s:3:"737";}}s:13:"Uhungarumlaut";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"722";s:1:"N";s:13:"Uhungarumlaut";s:1:"B";a:4:{i:0;s:2:"72";i:1;s:3:"-19";i:2;s:3:"681";i:3;s:3:"936";}}s:6:"Eacute";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"667";s:1:"N";s:6:"Eacute";s:1:"B";a:4:{i:0;s:2:"76";i:1;s:1:"0";i:2;s:3:"621";i:3;s:3:"936";}}s:7:"emacron";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"556";s:1:"N";s:7:"emacron";s:1:"B";a:4:{i:0;s:2:"23";i:1;s:3:"-14";i:2;s:3:"528";i:3;s:3:"678";}}s:6:"gbreve";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"611";s:1:"N";s:6:"gbreve";s:1:"B";a:4:{i:0;s:2:"40";i:1;s:4:"-217";i:2;s:3:"553";i:3;s:3:"750";}}s:10:"onequarter";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"834";s:1:"N";s:10:"onequarter";s:1:"B";a:4:{i:0;s:2:"26";i:1;s:3:"-19";i:2;s:3:"766";i:3;s:3:"710";}}s:6:"Scaron";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"667";s:1:"N";s:6:"Scaron";s:1:"B";a:4:{i:0;s:2:"39";i:1;s:3:"-19";i:2;s:3:"629";i:3;s:3:"936";}}s:12:"Scommaaccent";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"667";s:1:"N";s:12:"Scommaaccent";s:1:"B";a:4:{i:0;s:2:"39";i:1;s:4:"-228";i:2;s:3:"629";i:3;s:3:"737";}}s:13:"Ohungarumlaut";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"778";s:1:"N";s:13:"Ohungarumlaut";s:1:"B";a:4:{i:0;s:2:"44";i:1;s:3:"-19";i:2;s:3:"734";i:3;s:3:"936";}}s:6:"degree";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"400";s:1:"N";s:6:"degree";s:1:"B";a:4:{i:0;s:2:"57";i:1;s:3:"426";i:2;s:3:"343";i:3;s:3:"712";}}s:6:"ograve";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"611";s:1:"N";s:6:"ograve";s:1:"B";a:4:{i:0;s:2:"34";i:1;s:3:"-14";i:2;s:3:"578";i:3;s:3:"750";}}s:6:"Ccaron";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"722";s:1:"N";s:6:"Ccaron";s:1:"B";a:4:{i:0;s:2:"44";i:1;s:3:"-19";i:2;s:3:"684";i:3;s:3:"936";}}s:6:"ugrave";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"611";s:1:"N";s:6:"ugrave";s:1:"B";a:4:{i:0;s:2:"66";i:1;s:3:"-14";i:2;s:3:"545";i:3;s:3:"750";}}s:7:"radical";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"549";s:1:"N";s:7:"radical";s:1:"B";a:4:{i:0;s:2:"10";i:1;s:3:"-46";i:2;s:3:"512";i:3;s:3:"850";}}s:6:"Dcaron";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"722";s:1:"N";s:6:"Dcaron";s:1:"B";a:4:{i:0;s:2:"76";i:1;s:1:"0";i:2;s:3:"685";i:3;s:3:"936";}}s:12:"rcommaaccent";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"389";s:1:"N";s:12:"rcommaaccent";s:1:"B";a:4:{i:0;s:2:"64";i:1;s:4:"-228";i:2;s:3:"373";i:3;s:3:"546";}}s:6:"Ntilde";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"722";s:1:"N";s:6:"Ntilde";s:1:"B";a:4:{i:0;s:2:"69";i:1;s:1:"0";i:2;s:3:"654";i:3;s:3:"923";}}s:6:"otilde";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"611";s:1:"N";s:6:"otilde";s:1:"B";a:4:{i:0;s:2:"34";i:1;s:3:"-14";i:2;s:3:"578";i:3;s:3:"737";}}s:12:"Rcommaaccent";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"722";s:1:"N";s:12:"Rcommaaccent";s:1:"B";a:4:{i:0;s:2:"76";i:1;s:4:"-228";i:2;s:3:"677";i:3;s:3:"718";}}s:12:"Lcommaaccent";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"611";s:1:"N";s:12:"Lcommaaccent";s:1:"B";a:4:{i:0;s:2:"76";i:1;s:4:"-228";i:2;s:3:"583";i:3;s:3:"718";}}s:6:"Atilde";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"722";s:1:"N";s:6:"Atilde";s:1:"B";a:4:{i:0;s:2:"20";i:1;s:1:"0";i:2;s:3:"702";i:3;s:3:"923";}}s:7:"Aogonek";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"722";s:1:"N";s:7:"Aogonek";s:1:"B";a:4:{i:0;s:2:"20";i:1;s:4:"-224";i:2;s:3:"742";i:3;s:3:"718";}}s:5:"Aring";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"722";s:1:"N";s:5:"Aring";s:1:"B";a:4:{i:0;s:2:"20";i:1;s:1:"0";i:2;s:3:"702";i:3;s:3:"962";}}s:6:"Otilde";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"778";s:1:"N";s:6:"Otilde";s:1:"B";a:4:{i:0;s:2:"44";i:1;s:3:"-19";i:2;s:3:"734";i:3;s:3:"923";}}s:10:"zdotaccent";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"500";s:1:"N";s:10:"zdotaccent";s:1:"B";a:4:{i:0;s:2:"20";i:1;s:1:"0";i:2;s:3:"480";i:3;s:3:"729";}}s:6:"Ecaron";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"667";s:1:"N";s:6:"Ecaron";s:1:"B";a:4:{i:0;s:2:"76";i:1;s:1:"0";i:2;s:3:"621";i:3;s:3:"936";}}s:7:"Iogonek";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"278";s:1:"N";s:7:"Iogonek";s:1:"B";a:4:{i:0;s:3:"-11";i:1;s:4:"-228";i:2;s:3:"222";i:3;s:3:"718";}}s:12:"kcommaaccent";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"556";s:1:"N";s:12:"kcommaaccent";s:1:"B";a:4:{i:0;s:2:"69";i:1;s:4:"-228";i:2;s:3:"562";i:3;s:3:"718";}}s:5:"minus";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"584";s:1:"N";s:5:"minus";s:1:"B";a:4:{i:0;s:2:"40";i:1;s:3:"197";i:2;s:3:"544";i:3;s:3:"309";}}s:11:"Icircumflex";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"278";s:1:"N";s:11:"Icircumflex";s:1:"B";a:4:{i:0;s:3:"-37";i:1;s:1:"0";i:2;s:3:"316";i:3;s:3:"936";}}s:6:"ncaron";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"611";s:1:"N";s:6:"ncaron";s:1:"B";a:4:{i:0;s:2:"65";i:1;s:1:"0";i:2;s:3:"546";i:3;s:3:"750";}}s:12:"tcommaaccent";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"333";s:1:"N";s:12:"tcommaaccent";s:1:"B";a:4:{i:0;s:2:"10";i:1;s:4:"-228";i:2;s:3:"309";i:3;s:3:"676";}}s:10:"logicalnot";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"584";s:1:"N";s:10:"logicalnot";s:1:"B";a:4:{i:0;s:2:"40";i:1;s:3:"108";i:2;s:3:"544";i:3;s:3:"419";}}s:9:"odieresis";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"611";s:1:"N";s:9:"odieresis";s:1:"B";a:4:{i:0;s:2:"34";i:1;s:3:"-14";i:2;s:3:"578";i:3;s:3:"729";}}s:9:"udieresis";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"611";s:1:"N";s:9:"udieresis";s:1:"B";a:4:{i:0;s:2:"66";i:1;s:3:"-14";i:2;s:3:"545";i:3;s:3:"729";}}s:8:"notequal";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"549";s:1:"N";s:8:"notequal";s:1:"B";a:4:{i:0;s:2:"15";i:1;s:3:"-49";i:2;s:3:"540";i:3;s:3:"570";}}s:12:"gcommaaccent";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"611";s:1:"N";s:12:"gcommaaccent";s:1:"B";a:4:{i:0;s:2:"40";i:1;s:4:"-217";i:2;s:3:"553";i:3;s:3:"850";}}s:3:"eth";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"611";s:1:"N";s:3:"eth";s:1:"B";a:4:{i:0;s:2:"34";i:1;s:3:"-14";i:2;s:3:"578";i:3;s:3:"737";}}s:6:"zcaron";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"500";s:1:"N";s:6:"zcaron";s:1:"B";a:4:{i:0;s:2:"20";i:1;s:1:"0";i:2;s:3:"480";i:3;s:3:"750";}}s:12:"ncommaaccent";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"611";s:1:"N";s:12:"ncommaaccent";s:1:"B";a:4:{i:0;s:2:"65";i:1;s:4:"-228";i:2;s:3:"546";i:3;s:3:"546";}}s:11:"onesuperior";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"333";s:1:"N";s:11:"onesuperior";s:1:"B";a:4:{i:0;s:2:"26";i:1;s:3:"283";i:2;s:3:"237";i:3;s:3:"710";}}s:7:"imacron";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"278";s:1:"N";s:7:"imacron";s:1:"B";a:4:{i:0;s:2:"-8";i:1;s:1:"0";i:2;s:3:"285";i:3;s:3:"678";}}s:4:"Euro";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"556";s:1:"N";s:4:"Euro";s:1:"B";a:4:{i:0;s:1:"0";i:1;s:1:"0";i:2;s:1:"0";i:3;s:1:"0";}}}s:3:"KPX";a:134:{s:1:"A";a:48:{s:1:"C";s:3:"-40";s:6:"Cacute";s:3:"-40";s:6:"Ccaron";s:3:"-40";s:8:"Ccedilla";s:3:"-40";s:1:"G";s:3:"-50";s:6:"Gbreve";s:3:"-50";s:12:"Gcommaaccent";s:3:"-50";s:1:"O";s:3:"-40";s:6:"Oacute";s:3:"-40";s:11:"Ocircumflex";s:3:"-40";s:9:"Odieresis";s:3:"-40";s:6:"Ograve";s:3:"-40";s:13:"Ohungarumlaut";s:3:"-40";s:7:"Omacron";s:3:"-40";s:6:"Oslash";s:3:"-40";s:6:"Otilde";s:3:"-40";s:1:"Q";s:3:"-40";s:1:"T";s:3:"-90";s:6:"Tcaron";s:3:"-90";s:12:"Tcommaaccent";s:3:"-90";s:1:"U";s:3:"-50";s:6:"Uacute";s:3:"-50";s:11:"Ucircumflex";s:3:"-50";s:9:"Udieresis";s:3:"-50";s:6:"Ugrave";s:3:"-50";s:13:"Uhungarumlaut";s:3:"-50";s:7:"Umacron";s:3:"-50";s:7:"Uogonek";s:3:"-50";s:5:"Uring";s:3:"-50";s:1:"V";s:3:"-80";s:1:"W";s:3:"-60";s:1:"Y";s:4:"-110";s:6:"Yacute";s:4:"-110";s:9:"Ydieresis";s:4:"-110";s:1:"u";s:3:"-30";s:6:"uacute";s:3:"-30";s:11:"ucircumflex";s:3:"-30";s:9:"udieresis";s:3:"-30";s:6:"ugrave";s:3:"-30";s:13:"uhungarumlaut";s:3:"-30";s:7:"umacron";s:3:"-30";s:7:"uogonek";s:3:"-30";s:5:"uring";s:3:"-30";s:1:"v";s:3:"-40";s:1:"w";s:3:"-30";s:1:"y";s:3:"-30";s:6:"yacute";s:3:"-30";s:9:"ydieresis";s:3:"-30";}s:6:"Aacute";a:48:{s:1:"C";s:3:"-40";s:6:"Cacute";s:3:"-40";s:6:"Ccaron";s:3:"-40";s:8:"Ccedilla";s:3:"-40";s:1:"G";s:3:"-50";s:6:"Gbreve";s:3:"-50";s:12:"Gcommaaccent";s:3:"-50";s:1:"O";s:3:"-40";s:6:"Oacute";s:3:"-40";s:11:"Ocircumflex";s:3:"-40";s:9:"Odieresis";s:3:"-40";s:6:"Ograve";s:3:"-40";s:13:"Ohungarumlaut";s:3:"-40";s:7:"Omacron";s:3:"-40";s:6:"Oslash";s:3:"-40";s:6:"Otilde";s:3:"-40";s:1:"Q";s:3:"-40";s:1:"T";s:3:"-90";s:6:"Tcaron";s:3:"-90";s:12:"Tcommaaccent";s:3:"-90";s:1:"U";s:3:"-50";s:6:"Uacute";s:3:"-50";s:11:"Ucircumflex";s:3:"-50";s:9:"Udieresis";s:3:"-50";s:6:"Ugrave";s:3:"-50";s:13:"Uhungarumlaut";s:3:"-50";s:7:"Umacron";s:3:"-50";s:7:"Uogonek";s:3:"-50";s:5:"Uring";s:3:"-50";s:1:"V";s:3:"-80";s:1:"W";s:3:"-60";s:1:"Y";s:4:"-110";s:6:"Yacute";s:4:"-110";s:9:"Ydieresis";s:4:"-110";s:1:"u";s:3:"-30";s:6:"uacute";s:3:"-30";s:11:"ucircumflex";s:3:"-30";s:9:"udieresis";s:3:"-30";s:6:"ugrave";s:3:"-30";s:13:"uhungarumlaut";s:3:"-30";s:7:"umacron";s:3:"-30";s:7:"uogonek";s:3:"-30";s:5:"uring";s:3:"-30";s:1:"v";s:3:"-40";s:1:"w";s:3:"-30";s:1:"y";s:3:"-30";s:6:"yacute";s:3:"-30";s:9:"ydieresis";s:3:"-30";}s:6:"Abreve";a:48:{s:1:"C";s:3:"-40";s:6:"Cacute";s:3:"-40";s:6:"Ccaron";s:3:"-40";s:8:"Ccedilla";s:3:"-40";s:1:"G";s:3:"-50";s:6:"Gbreve";s:3:"-50";s:12:"Gcommaaccent";s:3:"-50";s:1:"O";s:3:"-40";s:6:"Oacute";s:3:"-40";s:11:"Ocircumflex";s:3:"-40";s:9:"Odieresis";s:3:"-40";s:6:"Ograve";s:3:"-40";s:13:"Ohungarumlaut";s:3:"-40";s:7:"Omacron";s:3:"-40";s:6:"Oslash";s:3:"-40";s:6:"Otilde";s:3:"-40";s:1:"Q";s:3:"-40";s:1:"T";s:3:"-90";s:6:"Tcaron";s:3:"-90";s:12:"Tcommaaccent";s:3:"-90";s:1:"U";s:3:"-50";s:6:"Uacute";s:3:"-50";s:11:"Ucircumflex";s:3:"-50";s:9:"Udieresis";s:3:"-50";s:6:"Ugrave";s:3:"-50";s:13:"Uhungarumlaut";s:3:"-50";s:7:"Umacron";s:3:"-50";s:7:"Uogonek";s:3:"-50";s:5:"Uring";s:3:"-50";s:1:"V";s:3:"-80";s:1:"W";s:3:"-60";s:1:"Y";s:4:"-110";s:6:"Yacute";s:4:"-110";s:9:"Ydieresis";s:4:"-110";s:1:"u";s:3:"-30";s:6:"uacute";s:3:"-30";s:11:"ucircumflex";s:3:"-30";s:9:"udieresis";s:3:"-30";s:6:"ugrave";s:3:"-30";s:13:"uhungarumlaut";s:3:"-30";s:7:"umacron";s:3:"-30";s:7:"uogonek";s:3:"-30";s:5:"uring";s:3:"-30";s:1:"v";s:3:"-40";s:1:"w";s:3:"-30";s:1:"y";s:3:"-30";s:6:"yacute";s:3:"-30";s:9:"ydieresis";s:3:"-30";}s:11:"Acircumflex";a:48:{s:1:"C";s:3:"-40";s:6:"Cacute";s:3:"-40";s:6:"Ccaron";s:3:"-40";s:8:"Ccedilla";s:3:"-40";s:1:"G";s:3:"-50";s:6:"Gbreve";s:3:"-50";s:12:"Gcommaaccent";s:3:"-50";s:1:"O";s:3:"-40";s:6:"Oacute";s:3:"-40";s:11:"Ocircumflex";s:3:"-40";s:9:"Odieresis";s:3:"-40";s:6:"Ograve";s:3:"-40";s:13:"Ohungarumlaut";s:3:"-40";s:7:"Omacron";s:3:"-40";s:6:"Oslash";s:3:"-40";s:6:"Otilde";s:3:"-40";s:1:"Q";s:3:"-40";s:1:"T";s:3:"-90";s:6:"Tcaron";s:3:"-90";s:12:"Tcommaaccent";s:3:"-90";s:1:"U";s:3:"-50";s:6:"Uacute";s:3:"-50";s:11:"Ucircumflex";s:3:"-50";s:9:"Udieresis";s:3:"-50";s:6:"Ugrave";s:3:"-50";s:13:"Uhungarumlaut";s:3:"-50";s:7:"Umacron";s:3:"-50";s:7:"Uogonek";s:3:"-50";s:5:"Uring";s:3:"-50";s:1:"V";s:3:"-80";s:1:"W";s:3:"-60";s:1:"Y";s:4:"-110";s:6:"Yacute";s:4:"-110";s:9:"Ydieresis";s:4:"-110";s:1:"u";s:3:"-30";s:6:"uacute";s:3:"-30";s:11:"ucircumflex";s:3:"-30";s:9:"udieresis";s:3:"-30";s:6:"ugrave";s:3:"-30";s:13:"uhungarumlaut";s:3:"-30";s:7:"umacron";s:3:"-30";s:7:"uogonek";s:3:"-30";s:5:"uring";s:3:"-30";s:1:"v";s:3:"-40";s:1:"w";s:3:"-30";s:1:"y";s:3:"-30";s:6:"yacute";s:3:"-30";s:9:"ydieresis";s:3:"-30";}s:9:"Adieresis";a:48:{s:1:"C";s:3:"-40";s:6:"Cacute";s:3:"-40";s:6:"Ccaron";s:3:"-40";s:8:"Ccedilla";s:3:"-40";s:1:"G";s:3:"-50";s:6:"Gbreve";s:3:"-50";s:12:"Gcommaaccent";s:3:"-50";s:1:"O";s:3:"-40";s:6:"Oacute";s:3:"-40";s:11:"Ocircumflex";s:3:"-40";s:9:"Odieresis";s:3:"-40";s:6:"Ograve";s:3:"-40";s:13:"Ohungarumlaut";s:3:"-40";s:7:"Omacron";s:3:"-40";s:6:"Oslash";s:3:"-40";s:6:"Otilde";s:3:"-40";s:1:"Q";s:3:"-40";s:1:"T";s:3:"-90";s:6:"Tcaron";s:3:"-90";s:12:"Tcommaaccent";s:3:"-90";s:1:"U";s:3:"-50";s:6:"Uacute";s:3:"-50";s:11:"Ucircumflex";s:3:"-50";s:9:"Udieresis";s:3:"-50";s:6:"Ugrave";s:3:"-50";s:13:"Uhungarumlaut";s:3:"-50";s:7:"Umacron";s:3:"-50";s:7:"Uogonek";s:3:"-50";s:5:"Uring";s:3:"-50";s:1:"V";s:3:"-80";s:1:"W";s:3:"-60";s:1:"Y";s:4:"-110";s:6:"Yacute";s:4:"-110";s:9:"Ydieresis";s:4:"-110";s:1:"u";s:3:"-30";s:6:"uacute";s:3:"-30";s:11:"ucircumflex";s:3:"-30";s:9:"udieresis";s:3:"-30";s:6:"ugrave";s:3:"-30";s:13:"uhungarumlaut";s:3:"-30";s:7:"umacron";s:3:"-30";s:7:"uogonek";s:3:"-30";s:5:"uring";s:3:"-30";s:1:"v";s:3:"-40";s:1:"w";s:3:"-30";s:1:"y";s:3:"-30";s:6:"yacute";s:3:"-30";s:9:"ydieresis";s:3:"-30";}s:6:"Agrave";a:48:{s:1:"C";s:3:"-40";s:6:"Cacute";s:3:"-40";s:6:"Ccaron";s:3:"-40";s:8:"Ccedilla";s:3:"-40";s:1:"G";s:3:"-50";s:6:"Gbreve";s:3:"-50";s:12:"Gcommaaccent";s:3:"-50";s:1:"O";s:3:"-40";s:6:"Oacute";s:3:"-40";s:11:"Ocircumflex";s:3:"-40";s:9:"Odieresis";s:3:"-40";s:6:"Ograve";s:3:"-40";s:13:"Ohungarumlaut";s:3:"-40";s:7:"Omacron";s:3:"-40";s:6:"Oslash";s:3:"-40";s:6:"Otilde";s:3:"-40";s:1:"Q";s:3:"-40";s:1:"T";s:3:"-90";s:6:"Tcaron";s:3:"-90";s:12:"Tcommaaccent";s:3:"-90";s:1:"U";s:3:"-50";s:6:"Uacute";s:3:"-50";s:11:"Ucircumflex";s:3:"-50";s:9:"Udieresis";s:3:"-50";s:6:"Ugrave";s:3:"-50";s:13:"Uhungarumlaut";s:3:"-50";s:7:"Umacron";s:3:"-50";s:7:"Uogonek";s:3:"-50";s:5:"Uring";s:3:"-50";s:1:"V";s:3:"-80";s:1:"W";s:3:"-60";s:1:"Y";s:4:"-110";s:6:"Yacute";s:4:"-110";s:9:"Ydieresis";s:4:"-110";s:1:"u";s:3:"-30";s:6:"uacute";s:3:"-30";s:11:"ucircumflex";s:3:"-30";s:9:"udieresis";s:3:"-30";s:6:"ugrave";s:3:"-30";s:13:"uhungarumlaut";s:3:"-30";s:7:"umacron";s:3:"-30";s:7:"uogonek";s:3:"-30";s:5:"uring";s:3:"-30";s:1:"v";s:3:"-40";s:1:"w";s:3:"-30";s:1:"y";s:3:"-30";s:6:"yacute";s:3:"-30";s:9:"ydieresis";s:3:"-30";}s:7:"Amacron";a:48:{s:1:"C";s:3:"-40";s:6:"Cacute";s:3:"-40";s:6:"Ccaron";s:3:"-40";s:8:"Ccedilla";s:3:"-40";s:1:"G";s:3:"-50";s:6:"Gbreve";s:3:"-50";s:12:"Gcommaaccent";s:3:"-50";s:1:"O";s:3:"-40";s:6:"Oacute";s:3:"-40";s:11:"Ocircumflex";s:3:"-40";s:9:"Odieresis";s:3:"-40";s:6:"Ograve";s:3:"-40";s:13:"Ohungarumlaut";s:3:"-40";s:7:"Omacron";s:3:"-40";s:6:"Oslash";s:3:"-40";s:6:"Otilde";s:3:"-40";s:1:"Q";s:3:"-40";s:1:"T";s:3:"-90";s:6:"Tcaron";s:3:"-90";s:12:"Tcommaaccent";s:3:"-90";s:1:"U";s:3:"-50";s:6:"Uacute";s:3:"-50";s:11:"Ucircumflex";s:3:"-50";s:9:"Udieresis";s:3:"-50";s:6:"Ugrave";s:3:"-50";s:13:"Uhungarumlaut";s:3:"-50";s:7:"Umacron";s:3:"-50";s:7:"Uogonek";s:3:"-50";s:5:"Uring";s:3:"-50";s:1:"V";s:3:"-80";s:1:"W";s:3:"-60";s:1:"Y";s:4:"-110";s:6:"Yacute";s:4:"-110";s:9:"Ydieresis";s:4:"-110";s:1:"u";s:3:"-30";s:6:"uacute";s:3:"-30";s:11:"ucircumflex";s:3:"-30";s:9:"udieresis";s:3:"-30";s:6:"ugrave";s:3:"-30";s:13:"uhungarumlaut";s:3:"-30";s:7:"umacron";s:3:"-30";s:7:"uogonek";s:3:"-30";s:5:"uring";s:3:"-30";s:1:"v";s:3:"-40";s:1:"w";s:3:"-30";s:1:"y";s:3:"-30";s:6:"yacute";s:3:"-30";s:9:"ydieresis";s:3:"-30";}s:7:"Aogonek";a:48:{s:1:"C";s:3:"-40";s:6:"Cacute";s:3:"-40";s:6:"Ccaron";s:3:"-40";s:8:"Ccedilla";s:3:"-40";s:1:"G";s:3:"-50";s:6:"Gbreve";s:3:"-50";s:12:"Gcommaaccent";s:3:"-50";s:1:"O";s:3:"-40";s:6:"Oacute";s:3:"-40";s:11:"Ocircumflex";s:3:"-40";s:9:"Odieresis";s:3:"-40";s:6:"Ograve";s:3:"-40";s:13:"Ohungarumlaut";s:3:"-40";s:7:"Omacron";s:3:"-40";s:6:"Oslash";s:3:"-40";s:6:"Otilde";s:3:"-40";s:1:"Q";s:3:"-40";s:1:"T";s:3:"-90";s:6:"Tcaron";s:3:"-90";s:12:"Tcommaaccent";s:3:"-90";s:1:"U";s:3:"-50";s:6:"Uacute";s:3:"-50";s:11:"Ucircumflex";s:3:"-50";s:9:"Udieresis";s:3:"-50";s:6:"Ugrave";s:3:"-50";s:13:"Uhungarumlaut";s:3:"-50";s:7:"Umacron";s:3:"-50";s:7:"Uogonek";s:3:"-50";s:5:"Uring";s:3:"-50";s:1:"V";s:3:"-80";s:1:"W";s:3:"-60";s:1:"Y";s:4:"-110";s:6:"Yacute";s:4:"-110";s:9:"Ydieresis";s:4:"-110";s:1:"u";s:3:"-30";s:6:"uacute";s:3:"-30";s:11:"ucircumflex";s:3:"-30";s:9:"udieresis";s:3:"-30";s:6:"ugrave";s:3:"-30";s:13:"uhungarumlaut";s:3:"-30";s:7:"umacron";s:3:"-30";s:7:"uogonek";s:3:"-30";s:5:"uring";s:3:"-30";s:1:"v";s:3:"-40";s:1:"w";s:3:"-30";s:1:"y";s:3:"-30";s:6:"yacute";s:3:"-30";s:9:"ydieresis";s:3:"-30";}s:5:"Aring";a:48:{s:1:"C";s:3:"-40";s:6:"Cacute";s:3:"-40";s:6:"Ccaron";s:3:"-40";s:8:"Ccedilla";s:3:"-40";s:1:"G";s:3:"-50";s:6:"Gbreve";s:3:"-50";s:12:"Gcommaaccent";s:3:"-50";s:1:"O";s:3:"-40";s:6:"Oacute";s:3:"-40";s:11:"Ocircumflex";s:3:"-40";s:9:"Odieresis";s:3:"-40";s:6:"Ograve";s:3:"-40";s:13:"Ohungarumlaut";s:3:"-40";s:7:"Omacron";s:3:"-40";s:6:"Oslash";s:3:"-40";s:6:"Otilde";s:3:"-40";s:1:"Q";s:3:"-40";s:1:"T";s:3:"-90";s:6:"Tcaron";s:3:"-90";s:12:"Tcommaaccent";s:3:"-90";s:1:"U";s:3:"-50";s:6:"Uacute";s:3:"-50";s:11:"Ucircumflex";s:3:"-50";s:9:"Udieresis";s:3:"-50";s:6:"Ugrave";s:3:"-50";s:13:"Uhungarumlaut";s:3:"-50";s:7:"Umacron";s:3:"-50";s:7:"Uogonek";s:3:"-50";s:5:"Uring";s:3:"-50";s:1:"V";s:3:"-80";s:1:"W";s:3:"-60";s:1:"Y";s:4:"-110";s:6:"Yacute";s:4:"-110";s:9:"Ydieresis";s:4:"-110";s:1:"u";s:3:"-30";s:6:"uacute";s:3:"-30";s:11:"ucircumflex";s:3:"-30";s:9:"udieresis";s:3:"-30";s:6:"ugrave";s:3:"-30";s:13:"uhungarumlaut";s:3:"-30";s:7:"umacron";s:3:"-30";s:7:"uogonek";s:3:"-30";s:5:"uring";s:3:"-30";s:1:"v";s:3:"-40";s:1:"w";s:3:"-30";s:1:"y";s:3:"-30";s:6:"yacute";s:3:"-30";s:9:"ydieresis";s:3:"-30";}s:6:"Atilde";a:48:{s:1:"C";s:3:"-40";s:6:"Cacute";s:3:"-40";s:6:"Ccaron";s:3:"-40";s:8:"Ccedilla";s:3:"-40";s:1:"G";s:3:"-50";s:6:"Gbreve";s:3:"-50";s:12:"Gcommaaccent";s:3:"-50";s:1:"O";s:3:"-40";s:6:"Oacute";s:3:"-40";s:11:"Ocircumflex";s:3:"-40";s:9:"Odieresis";s:3:"-40";s:6:"Ograve";s:3:"-40";s:13:"Ohungarumlaut";s:3:"-40";s:7:"Omacron";s:3:"-40";s:6:"Oslash";s:3:"-40";s:6:"Otilde";s:3:"-40";s:1:"Q";s:3:"-40";s:1:"T";s:3:"-90";s:6:"Tcaron";s:3:"-90";s:12:"Tcommaaccent";s:3:"-90";s:1:"U";s:3:"-50";s:6:"Uacute";s:3:"-50";s:11:"Ucircumflex";s:3:"-50";s:9:"Udieresis";s:3:"-50";s:6:"Ugrave";s:3:"-50";s:13:"Uhungarumlaut";s:3:"-50";s:7:"Umacron";s:3:"-50";s:7:"Uogonek";s:3:"-50";s:5:"Uring";s:3:"-50";s:1:"V";s:3:"-80";s:1:"W";s:3:"-60";s:1:"Y";s:4:"-110";s:6:"Yacute";s:4:"-110";s:9:"Ydieresis";s:4:"-110";s:1:"u";s:3:"-30";s:6:"uacute";s:3:"-30";s:11:"ucircumflex";s:3:"-30";s:9:"udieresis";s:3:"-30";s:6:"ugrave";s:3:"-30";s:13:"uhungarumlaut";s:3:"-30";s:7:"umacron";s:3:"-30";s:7:"uogonek";s:3:"-30";s:5:"uring";s:3:"-30";s:1:"v";s:3:"-40";s:1:"w";s:3:"-30";s:1:"y";s:3:"-30";s:6:"yacute";s:3:"-30";s:9:"ydieresis";s:3:"-30";}s:1:"B";a:19:{s:1:"A";s:3:"-30";s:6:"Aacute";s:3:"-30";s:6:"Abreve";s:3:"-30";s:11:"Acircumflex";s:3:"-30";s:9:"Adieresis";s:3:"-30";s:6:"Agrave";s:3:"-30";s:7:"Amacron";s:3:"-30";s:7:"Aogonek";s:3:"-30";s:5:"Aring";s:3:"-30";s:6:"Atilde";s:3:"-30";s:1:"U";s:3:"-10";s:6:"Uacute";s:3:"-10";s:11:"Ucircumflex";s:3:"-10";s:9:"Udieresis";s:3:"-10";s:6:"Ugrave";s:3:"-10";s:13:"Uhungarumlaut";s:3:"-10";s:7:"Umacron";s:3:"-10";s:7:"Uogonek";s:3:"-10";s:5:"Uring";s:3:"-10";}s:1:"D";a:17:{s:1:"A";s:3:"-40";s:6:"Aacute";s:3:"-40";s:6:"Abreve";s:3:"-40";s:11:"Acircumflex";s:3:"-40";s:9:"Adieresis";s:3:"-40";s:6:"Agrave";s:3:"-40";s:7:"Amacron";s:3:"-40";s:7:"Aogonek";s:3:"-40";s:5:"Aring";s:3:"-40";s:6:"Atilde";s:3:"-40";s:1:"V";s:3:"-40";s:1:"W";s:3:"-40";s:1:"Y";s:3:"-70";s:6:"Yacute";s:3:"-70";s:9:"Ydieresis";s:3:"-70";s:5:"comma";s:3:"-30";s:6:"period";s:3:"-30";}s:6:"Dcaron";a:17:{s:1:"A";s:3:"-40";s:6:"Aacute";s:3:"-40";s:6:"Abreve";s:3:"-40";s:11:"Acircumflex";s:3:"-40";s:9:"Adieresis";s:3:"-40";s:6:"Agrave";s:3:"-40";s:7:"Amacron";s:3:"-40";s:7:"Aogonek";s:3:"-40";s:5:"Aring";s:3:"-40";s:6:"Atilde";s:3:"-40";s:1:"V";s:3:"-40";s:1:"W";s:3:"-40";s:1:"Y";s:3:"-70";s:6:"Yacute";s:3:"-70";s:9:"Ydieresis";s:3:"-70";s:5:"comma";s:3:"-30";s:6:"period";s:3:"-30";}s:6:"Dcroat";a:17:{s:1:"A";s:3:"-40";s:6:"Aacute";s:3:"-40";s:6:"Abreve";s:3:"-40";s:11:"Acircumflex";s:3:"-40";s:9:"Adieresis";s:3:"-40";s:6:"Agrave";s:3:"-40";s:7:"Amacron";s:3:"-40";s:7:"Aogonek";s:3:"-40";s:5:"Aring";s:3:"-40";s:6:"Atilde";s:3:"-40";s:1:"V";s:3:"-40";s:1:"W";s:3:"-40";s:1:"Y";s:3:"-70";s:6:"Yacute";s:3:"-70";s:9:"Ydieresis";s:3:"-70";s:5:"comma";s:3:"-30";s:6:"period";s:3:"-30";}s:1:"F";a:22:{s:1:"A";s:3:"-80";s:6:"Aacute";s:3:"-80";s:6:"Abreve";s:3:"-80";s:11:"Acircumflex";s:3:"-80";s:9:"Adieresis";s:3:"-80";s:6:"Agrave";s:3:"-80";s:7:"Amacron";s:3:"-80";s:7:"Aogonek";s:3:"-80";s:5:"Aring";s:3:"-80";s:6:"Atilde";s:3:"-80";s:1:"a";s:3:"-20";s:6:"aacute";s:3:"-20";s:6:"abreve";s:3:"-20";s:11:"acircumflex";s:3:"-20";s:9:"adieresis";s:3:"-20";s:6:"agrave";s:3:"-20";s:7:"amacron";s:3:"-20";s:7:"aogonek";s:3:"-20";s:5:"aring";s:3:"-20";s:6:"atilde";s:3:"-20";s:5:"comma";s:4:"-100";s:6:"period";s:4:"-100";}s:1:"J";a:21:{s:1:"A";s:3:"-20";s:6:"Aacute";s:3:"-20";s:6:"Abreve";s:3:"-20";s:11:"Acircumflex";s:3:"-20";s:9:"Adieresis";s:3:"-20";s:6:"Agrave";s:3:"-20";s:7:"Amacron";s:3:"-20";s:7:"Aogonek";s:3:"-20";s:5:"Aring";s:3:"-20";s:6:"Atilde";s:3:"-20";s:5:"comma";s:3:"-20";s:6:"period";s:3:"-20";s:1:"u";s:3:"-20";s:6:"uacute";s:3:"-20";s:11:"ucircumflex";s:3:"-20";s:9:"udieresis";s:3:"-20";s:6:"ugrave";s:3:"-20";s:13:"uhungarumlaut";s:3:"-20";s:7:"umacron";s:3:"-20";s:7:"uogonek";s:3:"-20";s:5:"uring";s:3:"-20";}s:1:"K";a:39:{s:1:"O";s:3:"-30";s:6:"Oacute";s:3:"-30";s:11:"Ocircumflex";s:3:"-30";s:9:"Odieresis";s:3:"-30";s:6:"Ograve";s:3:"-30";s:13:"Ohungarumlaut";s:3:"-30";s:7:"Omacron";s:3:"-30";s:6:"Oslash";s:3:"-30";s:6:"Otilde";s:3:"-30";s:1:"e";s:3:"-15";s:6:"eacute";s:3:"-15";s:6:"ecaron";s:3:"-15";s:11:"ecircumflex";s:3:"-15";s:9:"edieresis";s:3:"-15";s:10:"edotaccent";s:3:"-15";s:6:"egrave";s:3:"-15";s:7:"emacron";s:3:"-15";s:7:"eogonek";s:3:"-15";s:1:"o";s:3:"-35";s:6:"oacute";s:3:"-35";s:11:"ocircumflex";s:3:"-35";s:9:"odieresis";s:3:"-35";s:6:"ograve";s:3:"-35";s:13:"ohungarumlaut";s:3:"-35";s:7:"omacron";s:3:"-35";s:6:"oslash";s:3:"-35";s:6:"otilde";s:3:"-35";s:1:"u";s:3:"-30";s:6:"uacute";s:3:"-30";s:11:"ucircumflex";s:3:"-30";s:9:"udieresis";s:3:"-30";s:6:"ugrave";s:3:"-30";s:13:"uhungarumlaut";s:3:"-30";s:7:"umacron";s:3:"-30";s:7:"uogonek";s:3:"-30";s:5:"uring";s:3:"-30";s:1:"y";s:3:"-40";s:6:"yacute";s:3:"-40";s:9:"ydieresis";s:3:"-40";}s:12:"Kcommaaccent";a:39:{s:1:"O";s:3:"-30";s:6:"Oacute";s:3:"-30";s:11:"Ocircumflex";s:3:"-30";s:9:"Odieresis";s:3:"-30";s:6:"Ograve";s:3:"-30";s:13:"Ohungarumlaut";s:3:"-30";s:7:"Omacron";s:3:"-30";s:6:"Oslash";s:3:"-30";s:6:"Otilde";s:3:"-30";s:1:"e";s:3:"-15";s:6:"eacute";s:3:"-15";s:6:"ecaron";s:3:"-15";s:11:"ecircumflex";s:3:"-15";s:9:"edieresis";s:3:"-15";s:10:"edotaccent";s:3:"-15";s:6:"egrave";s:3:"-15";s:7:"emacron";s:3:"-15";s:7:"eogonek";s:3:"-15";s:1:"o";s:3:"-35";s:6:"oacute";s:3:"-35";s:11:"ocircumflex";s:3:"-35";s:9:"odieresis";s:3:"-35";s:6:"ograve";s:3:"-35";s:13:"ohungarumlaut";s:3:"-35";s:7:"omacron";s:3:"-35";s:6:"oslash";s:3:"-35";s:6:"otilde";s:3:"-35";s:1:"u";s:3:"-30";s:6:"uacute";s:3:"-30";s:11:"ucircumflex";s:3:"-30";s:9:"udieresis";s:3:"-30";s:6:"ugrave";s:3:"-30";s:13:"uhungarumlaut";s:3:"-30";s:7:"umacron";s:3:"-30";s:7:"uogonek";s:3:"-30";s:5:"uring";s:3:"-30";s:1:"y";s:3:"-40";s:6:"yacute";s:3:"-40";s:9:"ydieresis";s:3:"-40";}s:1:"L";a:13:{s:1:"T";s:3:"-90";s:6:"Tcaron";s:3:"-90";s:12:"Tcommaaccent";s:3:"-90";s:1:"V";s:4:"-110";s:1:"W";s:3:"-80";s:1:"Y";s:4:"-120";s:6:"Yacute";s:4:"-120";s:9:"Ydieresis";s:4:"-120";s:13:"quotedblright";s:4:"-140";s:10:"quoteright";s:4:"-140";s:1:"y";s:3:"-30";s:6:"yacute";s:3:"-30";s:9:"ydieresis";s:3:"-30";}s:6:"Lacute";a:13:{s:1:"T";s:3:"-90";s:6:"Tcaron";s:3:"-90";s:12:"Tcommaaccent";s:3:"-90";s:1:"V";s:4:"-110";s:1:"W";s:3:"-80";s:1:"Y";s:4:"-120";s:6:"Yacute";s:4:"-120";s:9:"Ydieresis";s:4:"-120";s:13:"quotedblright";s:4:"-140";s:10:"quoteright";s:4:"-140";s:1:"y";s:3:"-30";s:6:"yacute";s:3:"-30";s:9:"ydieresis";s:3:"-30";}s:12:"Lcommaaccent";a:13:{s:1:"T";s:3:"-90";s:6:"Tcaron";s:3:"-90";s:12:"Tcommaaccent";s:3:"-90";s:1:"V";s:4:"-110";s:1:"W";s:3:"-80";s:1:"Y";s:4:"-120";s:6:"Yacute";s:4:"-120";s:9:"Ydieresis";s:4:"-120";s:13:"quotedblright";s:4:"-140";s:10:"quoteright";s:4:"-140";s:1:"y";s:3:"-30";s:6:"yacute";s:3:"-30";s:9:"ydieresis";s:3:"-30";}s:6:"Lslash";a:13:{s:1:"T";s:3:"-90";s:6:"Tcaron";s:3:"-90";s:12:"Tcommaaccent";s:3:"-90";s:1:"V";s:4:"-110";s:1:"W";s:3:"-80";s:1:"Y";s:4:"-120";s:6:"Yacute";s:4:"-120";s:9:"Ydieresis";s:4:"-120";s:13:"quotedblright";s:4:"-140";s:10:"quoteright";s:4:"-140";s:1:"y";s:3:"-30";s:6:"yacute";s:3:"-30";s:9:"ydieresis";s:3:"-30";}s:1:"O";a:21:{s:1:"A";s:3:"-50";s:6:"Aacute";s:3:"-50";s:6:"Abreve";s:3:"-50";s:11:"Acircumflex";s:3:"-50";s:9:"Adieresis";s:3:"-50";s:6:"Agrave";s:3:"-50";s:7:"Amacron";s:3:"-50";s:7:"Aogonek";s:3:"-50";s:5:"Aring";s:3:"-50";s:6:"Atilde";s:3:"-50";s:1:"T";s:3:"-40";s:6:"Tcaron";s:3:"-40";s:12:"Tcommaaccent";s:3:"-40";s:1:"V";s:3:"-50";s:1:"W";s:3:"-50";s:1:"X";s:3:"-50";s:1:"Y";s:3:"-70";s:6:"Yacute";s:3:"-70";s:9:"Ydieresis";s:3:"-70";s:5:"comma";s:3:"-40";s:6:"period";s:3:"-40";}s:6:"Oacute";a:21:{s:1:"A";s:3:"-50";s:6:"Aacute";s:3:"-50";s:6:"Abreve";s:3:"-50";s:11:"Acircumflex";s:3:"-50";s:9:"Adieresis";s:3:"-50";s:6:"Agrave";s:3:"-50";s:7:"Amacron";s:3:"-50";s:7:"Aogonek";s:3:"-50";s:5:"Aring";s:3:"-50";s:6:"Atilde";s:3:"-50";s:1:"T";s:3:"-40";s:6:"Tcaron";s:3:"-40";s:12:"Tcommaaccent";s:3:"-40";s:1:"V";s:3:"-50";s:1:"W";s:3:"-50";s:1:"X";s:3:"-50";s:1:"Y";s:3:"-70";s:6:"Yacute";s:3:"-70";s:9:"Ydieresis";s:3:"-70";s:5:"comma";s:3:"-40";s:6:"period";s:3:"-40";}s:11:"Ocircumflex";a:21:{s:1:"A";s:3:"-50";s:6:"Aacute";s:3:"-50";s:6:"Abreve";s:3:"-50";s:11:"Acircumflex";s:3:"-50";s:9:"Adieresis";s:3:"-50";s:6:"Agrave";s:3:"-50";s:7:"Amacron";s:3:"-50";s:7:"Aogonek";s:3:"-50";s:5:"Aring";s:3:"-50";s:6:"Atilde";s:3:"-50";s:1:"T";s:3:"-40";s:6:"Tcaron";s:3:"-40";s:12:"Tcommaaccent";s:3:"-40";s:1:"V";s:3:"-50";s:1:"W";s:3:"-50";s:1:"X";s:3:"-50";s:1:"Y";s:3:"-70";s:6:"Yacute";s:3:"-70";s:9:"Ydieresis";s:3:"-70";s:5:"comma";s:3:"-40";s:6:"period";s:3:"-40";}s:9:"Odieresis";a:21:{s:1:"A";s:3:"-50";s:6:"Aacute";s:3:"-50";s:6:"Abreve";s:3:"-50";s:11:"Acircumflex";s:3:"-50";s:9:"Adieresis";s:3:"-50";s:6:"Agrave";s:3:"-50";s:7:"Amacron";s:3:"-50";s:7:"Aogonek";s:3:"-50";s:5:"Aring";s:3:"-50";s:6:"Atilde";s:3:"-50";s:1:"T";s:3:"-40";s:6:"Tcaron";s:3:"-40";s:12:"Tcommaaccent";s:3:"-40";s:1:"V";s:3:"-50";s:1:"W";s:3:"-50";s:1:"X";s:3:"-50";s:1:"Y";s:3:"-70";s:6:"Yacute";s:3:"-70";s:9:"Ydieresis";s:3:"-70";s:5:"comma";s:3:"-40";s:6:"period";s:3:"-40";}s:6:"Ograve";a:21:{s:1:"A";s:3:"-50";s:6:"Aacute";s:3:"-50";s:6:"Abreve";s:3:"-50";s:11:"Acircumflex";s:3:"-50";s:9:"Adieresis";s:3:"-50";s:6:"Agrave";s:3:"-50";s:7:"Amacron";s:3:"-50";s:7:"Aogonek";s:3:"-50";s:5:"Aring";s:3:"-50";s:6:"Atilde";s:3:"-50";s:1:"T";s:3:"-40";s:6:"Tcaron";s:3:"-40";s:12:"Tcommaaccent";s:3:"-40";s:1:"V";s:3:"-50";s:1:"W";s:3:"-50";s:1:"X";s:3:"-50";s:1:"Y";s:3:"-70";s:6:"Yacute";s:3:"-70";s:9:"Ydieresis";s:3:"-70";s:5:"comma";s:3:"-40";s:6:"period";s:3:"-40";}s:13:"Ohungarumlaut";a:21:{s:1:"A";s:3:"-50";s:6:"Aacute";s:3:"-50";s:6:"Abreve";s:3:"-50";s:11:"Acircumflex";s:3:"-50";s:9:"Adieresis";s:3:"-50";s:6:"Agrave";s:3:"-50";s:7:"Amacron";s:3:"-50";s:7:"Aogonek";s:3:"-50";s:5:"Aring";s:3:"-50";s:6:"Atilde";s:3:"-50";s:1:"T";s:3:"-40";s:6:"Tcaron";s:3:"-40";s:12:"Tcommaaccent";s:3:"-40";s:1:"V";s:3:"-50";s:1:"W";s:3:"-50";s:1:"X";s:3:"-50";s:1:"Y";s:3:"-70";s:6:"Yacute";s:3:"-70";s:9:"Ydieresis";s:3:"-70";s:5:"comma";s:3:"-40";s:6:"period";s:3:"-40";}s:7:"Omacron";a:21:{s:1:"A";s:3:"-50";s:6:"Aacute";s:3:"-50";s:6:"Abreve";s:3:"-50";s:11:"Acircumflex";s:3:"-50";s:9:"Adieresis";s:3:"-50";s:6:"Agrave";s:3:"-50";s:7:"Amacron";s:3:"-50";s:7:"Aogonek";s:3:"-50";s:5:"Aring";s:3:"-50";s:6:"Atilde";s:3:"-50";s:1:"T";s:3:"-40";s:6:"Tcaron";s:3:"-40";s:12:"Tcommaaccent";s:3:"-40";s:1:"V";s:3:"-50";s:1:"W";s:3:"-50";s:1:"X";s:3:"-50";s:1:"Y";s:3:"-70";s:6:"Yacute";s:3:"-70";s:9:"Ydieresis";s:3:"-70";s:5:"comma";s:3:"-40";s:6:"period";s:3:"-40";}s:6:"Oslash";a:21:{s:1:"A";s:3:"-50";s:6:"Aacute";s:3:"-50";s:6:"Abreve";s:3:"-50";s:11:"Acircumflex";s:3:"-50";s:9:"Adieresis";s:3:"-50";s:6:"Agrave";s:3:"-50";s:7:"Amacron";s:3:"-50";s:7:"Aogonek";s:3:"-50";s:5:"Aring";s:3:"-50";s:6:"Atilde";s:3:"-50";s:1:"T";s:3:"-40";s:6:"Tcaron";s:3:"-40";s:12:"Tcommaaccent";s:3:"-40";s:1:"V";s:3:"-50";s:1:"W";s:3:"-50";s:1:"X";s:3:"-50";s:1:"Y";s:3:"-70";s:6:"Yacute";s:3:"-70";s:9:"Ydieresis";s:3:"-70";s:5:"comma";s:3:"-40";s:6:"period";s:3:"-40";}s:6:"Otilde";a:21:{s:1:"A";s:3:"-50";s:6:"Aacute";s:3:"-50";s:6:"Abreve";s:3:"-50";s:11:"Acircumflex";s:3:"-50";s:9:"Adieresis";s:3:"-50";s:6:"Agrave";s:3:"-50";s:7:"Amacron";s:3:"-50";s:7:"Aogonek";s:3:"-50";s:5:"Aring";s:3:"-50";s:6:"Atilde";s:3:"-50";s:1:"T";s:3:"-40";s:6:"Tcaron";s:3:"-40";s:12:"Tcommaaccent";s:3:"-40";s:1:"V";s:3:"-50";s:1:"W";s:3:"-50";s:1:"X";s:3:"-50";s:1:"Y";s:3:"-70";s:6:"Yacute";s:3:"-70";s:9:"Ydieresis";s:3:"-70";s:5:"comma";s:3:"-40";s:6:"period";s:3:"-40";}s:1:"P";a:40:{s:1:"A";s:4:"-100";s:6:"Aacute";s:4:"-100";s:6:"Abreve";s:4:"-100";s:11:"Acircumflex";s:4:"-100";s:9:"Adieresis";s:4:"-100";s:6:"Agrave";s:4:"-100";s:7:"Amacron";s:4:"-100";s:7:"Aogonek";s:4:"-100";s:5:"Aring";s:4:"-100";s:6:"Atilde";s:4:"-100";s:1:"a";s:3:"-30";s:6:"aacute";s:3:"-30";s:6:"abreve";s:3:"-30";s:11:"acircumflex";s:3:"-30";s:9:"adieresis";s:3:"-30";s:6:"agrave";s:3:"-30";s:7:"amacron";s:3:"-30";s:7:"aogonek";s:3:"-30";s:5:"aring";s:3:"-30";s:6:"atilde";s:3:"-30";s:5:"comma";s:4:"-120";s:1:"e";s:3:"-30";s:6:"eacute";s:3:"-30";s:6:"ecaron";s:3:"-30";s:11:"ecircumflex";s:3:"-30";s:9:"edieresis";s:3:"-30";s:10:"edotaccent";s:3:"-30";s:6:"egrave";s:3:"-30";s:7:"emacron";s:3:"-30";s:7:"eogonek";s:3:"-30";s:1:"o";s:3:"-40";s:6:"oacute";s:3:"-40";s:11:"ocircumflex";s:3:"-40";s:9:"odieresis";s:3:"-40";s:6:"ograve";s:3:"-40";s:13:"ohungarumlaut";s:3:"-40";s:7:"omacron";s:3:"-40";s:6:"oslash";s:3:"-40";s:6:"otilde";s:3:"-40";s:6:"period";s:4:"-120";}s:1:"Q";a:11:{s:1:"U";s:3:"-10";s:6:"Uacute";s:3:"-10";s:11:"Ucircumflex";s:3:"-10";s:9:"Udieresis";s:3:"-10";s:6:"Ugrave";s:3:"-10";s:13:"Uhungarumlaut";s:3:"-10";s:7:"Umacron";s:3:"-10";s:7:"Uogonek";s:3:"-10";s:5:"Uring";s:3:"-10";s:5:"comma";s:2:"20";s:6:"period";s:2:"20";}s:1:"R";a:26:{s:1:"O";s:3:"-20";s:6:"Oacute";s:3:"-20";s:11:"Ocircumflex";s:3:"-20";s:9:"Odieresis";s:3:"-20";s:6:"Ograve";s:3:"-20";s:13:"Ohungarumlaut";s:3:"-20";s:7:"Omacron";s:3:"-20";s:6:"Oslash";s:3:"-20";s:6:"Otilde";s:3:"-20";s:1:"T";s:3:"-20";s:6:"Tcaron";s:3:"-20";s:12:"Tcommaaccent";s:3:"-20";s:1:"U";s:3:"-20";s:6:"Uacute";s:3:"-20";s:11:"Ucircumflex";s:3:"-20";s:9:"Udieresis";s:3:"-20";s:6:"Ugrave";s:3:"-20";s:13:"Uhungarumlaut";s:3:"-20";s:7:"Umacron";s:3:"-20";s:7:"Uogonek";s:3:"-20";s:5:"Uring";s:3:"-20";s:1:"V";s:3:"-50";s:1:"W";s:3:"-40";s:1:"Y";s:3:"-50";s:6:"Yacute";s:3:"-50";s:9:"Ydieresis";s:3:"-50";}s:6:"Racute";a:26:{s:1:"O";s:3:"-20";s:6:"Oacute";s:3:"-20";s:11:"Ocircumflex";s:3:"-20";s:9:"Odieresis";s:3:"-20";s:6:"Ograve";s:3:"-20";s:13:"Ohungarumlaut";s:3:"-20";s:7:"Omacron";s:3:"-20";s:6:"Oslash";s:3:"-20";s:6:"Otilde";s:3:"-20";s:1:"T";s:3:"-20";s:6:"Tcaron";s:3:"-20";s:12:"Tcommaaccent";s:3:"-20";s:1:"U";s:3:"-20";s:6:"Uacute";s:3:"-20";s:11:"Ucircumflex";s:3:"-20";s:9:"Udieresis";s:3:"-20";s:6:"Ugrave";s:3:"-20";s:13:"Uhungarumlaut";s:3:"-20";s:7:"Umacron";s:3:"-20";s:7:"Uogonek";s:3:"-20";s:5:"Uring";s:3:"-20";s:1:"V";s:3:"-50";s:1:"W";s:3:"-40";s:1:"Y";s:3:"-50";s:6:"Yacute";s:3:"-50";s:9:"Ydieresis";s:3:"-50";}s:6:"Rcaron";a:26:{s:1:"O";s:3:"-20";s:6:"Oacute";s:3:"-20";s:11:"Ocircumflex";s:3:"-20";s:9:"Odieresis";s:3:"-20";s:6:"Ograve";s:3:"-20";s:13:"Ohungarumlaut";s:3:"-20";s:7:"Omacron";s:3:"-20";s:6:"Oslash";s:3:"-20";s:6:"Otilde";s:3:"-20";s:1:"T";s:3:"-20";s:6:"Tcaron";s:3:"-20";s:12:"Tcommaaccent";s:3:"-20";s:1:"U";s:3:"-20";s:6:"Uacute";s:3:"-20";s:11:"Ucircumflex";s:3:"-20";s:9:"Udieresis";s:3:"-20";s:6:"Ugrave";s:3:"-20";s:13:"Uhungarumlaut";s:3:"-20";s:7:"Umacron";s:3:"-20";s:7:"Uogonek";s:3:"-20";s:5:"Uring";s:3:"-20";s:1:"V";s:3:"-50";s:1:"W";s:3:"-40";s:1:"Y";s:3:"-50";s:6:"Yacute";s:3:"-50";s:9:"Ydieresis";s:3:"-50";}s:12:"Rcommaaccent";a:26:{s:1:"O";s:3:"-20";s:6:"Oacute";s:3:"-20";s:11:"Ocircumflex";s:3:"-20";s:9:"Odieresis";s:3:"-20";s:6:"Ograve";s:3:"-20";s:13:"Ohungarumlaut";s:3:"-20";s:7:"Omacron";s:3:"-20";s:6:"Oslash";s:3:"-20";s:6:"Otilde";s:3:"-20";s:1:"T";s:3:"-20";s:6:"Tcaron";s:3:"-20";s:12:"Tcommaaccent";s:3:"-20";s:1:"U";s:3:"-20";s:6:"Uacute";s:3:"-20";s:11:"Ucircumflex";s:3:"-20";s:9:"Udieresis";s:3:"-20";s:6:"Ugrave";s:3:"-20";s:13:"Uhungarumlaut";s:3:"-20";s:7:"Umacron";s:3:"-20";s:7:"Uogonek";s:3:"-20";s:5:"Uring";s:3:"-20";s:1:"V";s:3:"-50";s:1:"W";s:3:"-40";s:1:"Y";s:3:"-50";s:6:"Yacute";s:3:"-50";s:9:"Ydieresis";s:3:"-50";}s:1:"T";a:68:{s:1:"A";s:3:"-90";s:6:"Aacute";s:3:"-90";s:6:"Abreve";s:3:"-90";s:11:"Acircumflex";s:3:"-90";s:9:"Adieresis";s:3:"-90";s:6:"Agrave";s:3:"-90";s:7:"Amacron";s:3:"-90";s:7:"Aogonek";s:3:"-90";s:5:"Aring";s:3:"-90";s:6:"Atilde";s:3:"-90";s:1:"O";s:3:"-40";s:6:"Oacute";s:3:"-40";s:11:"Ocircumflex";s:3:"-40";s:9:"Odieresis";s:3:"-40";s:6:"Ograve";s:3:"-40";s:13:"Ohungarumlaut";s:3:"-40";s:7:"Omacron";s:3:"-40";s:6:"Oslash";s:3:"-40";s:6:"Otilde";s:3:"-40";s:1:"a";s:3:"-80";s:6:"aacute";s:3:"-80";s:6:"abreve";s:3:"-80";s:11:"acircumflex";s:3:"-80";s:9:"adieresis";s:3:"-80";s:6:"agrave";s:3:"-80";s:7:"amacron";s:3:"-80";s:7:"aogonek";s:3:"-80";s:5:"aring";s:3:"-80";s:6:"atilde";s:3:"-80";s:5:"colon";s:3:"-40";s:5:"comma";s:3:"-80";s:1:"e";s:3:"-60";s:6:"eacute";s:3:"-60";s:6:"ecaron";s:3:"-60";s:11:"ecircumflex";s:3:"-60";s:9:"edieresis";s:3:"-60";s:10:"edotaccent";s:3:"-60";s:6:"egrave";s:3:"-60";s:7:"emacron";s:3:"-60";s:7:"eogonek";s:3:"-60";s:6:"hyphen";s:4:"-120";s:1:"o";s:3:"-80";s:6:"oacute";s:3:"-80";s:11:"ocircumflex";s:3:"-80";s:9:"odieresis";s:3:"-80";s:6:"ograve";s:3:"-80";s:13:"ohungarumlaut";s:3:"-80";s:7:"omacron";s:3:"-80";s:6:"oslash";s:3:"-80";s:6:"otilde";s:3:"-80";s:6:"period";s:3:"-80";s:1:"r";s:3:"-80";s:6:"racute";s:3:"-80";s:12:"rcommaaccent";s:3:"-80";s:9:"semicolon";s:3:"-40";s:1:"u";s:3:"-90";s:6:"uacute";s:3:"-90";s:11:"ucircumflex";s:3:"-90";s:9:"udieresis";s:3:"-90";s:6:"ugrave";s:3:"-90";s:13:"uhungarumlaut";s:3:"-90";s:7:"umacron";s:3:"-90";s:7:"uogonek";s:3:"-90";s:5:"uring";s:3:"-90";s:1:"w";s:3:"-60";s:1:"y";s:3:"-60";s:6:"yacute";s:3:"-60";s:9:"ydieresis";s:3:"-60";}s:6:"Tcaron";a:68:{s:1:"A";s:3:"-90";s:6:"Aacute";s:3:"-90";s:6:"Abreve";s:3:"-90";s:11:"Acircumflex";s:3:"-90";s:9:"Adieresis";s:3:"-90";s:6:"Agrave";s:3:"-90";s:7:"Amacron";s:3:"-90";s:7:"Aogonek";s:3:"-90";s:5:"Aring";s:3:"-90";s:6:"Atilde";s:3:"-90";s:1:"O";s:3:"-40";s:6:"Oacute";s:3:"-40";s:11:"Ocircumflex";s:3:"-40";s:9:"Odieresis";s:3:"-40";s:6:"Ograve";s:3:"-40";s:13:"Ohungarumlaut";s:3:"-40";s:7:"Omacron";s:3:"-40";s:6:"Oslash";s:3:"-40";s:6:"Otilde";s:3:"-40";s:1:"a";s:3:"-80";s:6:"aacute";s:3:"-80";s:6:"abreve";s:3:"-80";s:11:"acircumflex";s:3:"-80";s:9:"adieresis";s:3:"-80";s:6:"agrave";s:3:"-80";s:7:"amacron";s:3:"-80";s:7:"aogonek";s:3:"-80";s:5:"aring";s:3:"-80";s:6:"atilde";s:3:"-80";s:5:"colon";s:3:"-40";s:5:"comma";s:3:"-80";s:1:"e";s:3:"-60";s:6:"eacute";s:3:"-60";s:6:"ecaron";s:3:"-60";s:11:"ecircumflex";s:3:"-60";s:9:"edieresis";s:3:"-60";s:10:"edotaccent";s:3:"-60";s:6:"egrave";s:3:"-60";s:7:"emacron";s:3:"-60";s:7:"eogonek";s:3:"-60";s:6:"hyphen";s:4:"-120";s:1:"o";s:3:"-80";s:6:"oacute";s:3:"-80";s:11:"ocircumflex";s:3:"-80";s:9:"odieresis";s:3:"-80";s:6:"ograve";s:3:"-80";s:13:"ohungarumlaut";s:3:"-80";s:7:"omacron";s:3:"-80";s:6:"oslash";s:3:"-80";s:6:"otilde";s:3:"-80";s:6:"period";s:3:"-80";s:1:"r";s:3:"-80";s:6:"racute";s:3:"-80";s:12:"rcommaaccent";s:3:"-80";s:9:"semicolon";s:3:"-40";s:1:"u";s:3:"-90";s:6:"uacute";s:3:"-90";s:11:"ucircumflex";s:3:"-90";s:9:"udieresis";s:3:"-90";s:6:"ugrave";s:3:"-90";s:13:"uhungarumlaut";s:3:"-90";s:7:"umacron";s:3:"-90";s:7:"uogonek";s:3:"-90";s:5:"uring";s:3:"-90";s:1:"w";s:3:"-60";s:1:"y";s:3:"-60";s:6:"yacute";s:3:"-60";s:9:"ydieresis";s:3:"-60";}s:12:"Tcommaaccent";a:68:{s:1:"A";s:3:"-90";s:6:"Aacute";s:3:"-90";s:6:"Abreve";s:3:"-90";s:11:"Acircumflex";s:3:"-90";s:9:"Adieresis";s:3:"-90";s:6:"Agrave";s:3:"-90";s:7:"Amacron";s:3:"-90";s:7:"Aogonek";s:3:"-90";s:5:"Aring";s:3:"-90";s:6:"Atilde";s:3:"-90";s:1:"O";s:3:"-40";s:6:"Oacute";s:3:"-40";s:11:"Ocircumflex";s:3:"-40";s:9:"Odieresis";s:3:"-40";s:6:"Ograve";s:3:"-40";s:13:"Ohungarumlaut";s:3:"-40";s:7:"Omacron";s:3:"-40";s:6:"Oslash";s:3:"-40";s:6:"Otilde";s:3:"-40";s:1:"a";s:3:"-80";s:6:"aacute";s:3:"-80";s:6:"abreve";s:3:"-80";s:11:"acircumflex";s:3:"-80";s:9:"adieresis";s:3:"-80";s:6:"agrave";s:3:"-80";s:7:"amacron";s:3:"-80";s:7:"aogonek";s:3:"-80";s:5:"aring";s:3:"-80";s:6:"atilde";s:3:"-80";s:5:"colon";s:3:"-40";s:5:"comma";s:3:"-80";s:1:"e";s:3:"-60";s:6:"eacute";s:3:"-60";s:6:"ecaron";s:3:"-60";s:11:"ecircumflex";s:3:"-60";s:9:"edieresis";s:3:"-60";s:10:"edotaccent";s:3:"-60";s:6:"egrave";s:3:"-60";s:7:"emacron";s:3:"-60";s:7:"eogonek";s:3:"-60";s:6:"hyphen";s:4:"-120";s:1:"o";s:3:"-80";s:6:"oacute";s:3:"-80";s:11:"ocircumflex";s:3:"-80";s:9:"odieresis";s:3:"-80";s:6:"ograve";s:3:"-80";s:13:"ohungarumlaut";s:3:"-80";s:7:"omacron";s:3:"-80";s:6:"oslash";s:3:"-80";s:6:"otilde";s:3:"-80";s:6:"period";s:3:"-80";s:1:"r";s:3:"-80";s:6:"racute";s:3:"-80";s:12:"rcommaaccent";s:3:"-80";s:9:"semicolon";s:3:"-40";s:1:"u";s:3:"-90";s:6:"uacute";s:3:"-90";s:11:"ucircumflex";s:3:"-90";s:9:"udieresis";s:3:"-90";s:6:"ugrave";s:3:"-90";s:13:"uhungarumlaut";s:3:"-90";s:7:"umacron";s:3:"-90";s:7:"uogonek";s:3:"-90";s:5:"uring";s:3:"-90";s:1:"w";s:3:"-60";s:1:"y";s:3:"-60";s:6:"yacute";s:3:"-60";s:9:"ydieresis";s:3:"-60";}s:1:"U";a:12:{s:1:"A";s:3:"-50";s:6:"Aacute";s:3:"-50";s:6:"Abreve";s:3:"-50";s:11:"Acircumflex";s:3:"-50";s:9:"Adieresis";s:3:"-50";s:6:"Agrave";s:3:"-50";s:7:"Amacron";s:3:"-50";s:7:"Aogonek";s:3:"-50";s:5:"Aring";s:3:"-50";s:6:"Atilde";s:3:"-50";s:5:"comma";s:3:"-30";s:6:"period";s:3:"-30";}s:6:"Uacute";a:12:{s:1:"A";s:3:"-50";s:6:"Aacute";s:3:"-50";s:6:"Abreve";s:3:"-50";s:11:"Acircumflex";s:3:"-50";s:9:"Adieresis";s:3:"-50";s:6:"Agrave";s:3:"-50";s:7:"Amacron";s:3:"-50";s:7:"Aogonek";s:3:"-50";s:5:"Aring";s:3:"-50";s:6:"Atilde";s:3:"-50";s:5:"comma";s:3:"-30";s:6:"period";s:3:"-30";}s:11:"Ucircumflex";a:12:{s:1:"A";s:3:"-50";s:6:"Aacute";s:3:"-50";s:6:"Abreve";s:3:"-50";s:11:"Acircumflex";s:3:"-50";s:9:"Adieresis";s:3:"-50";s:6:"Agrave";s:3:"-50";s:7:"Amacron";s:3:"-50";s:7:"Aogonek";s:3:"-50";s:5:"Aring";s:3:"-50";s:6:"Atilde";s:3:"-50";s:5:"comma";s:3:"-30";s:6:"period";s:3:"-30";}s:9:"Udieresis";a:12:{s:1:"A";s:3:"-50";s:6:"Aacute";s:3:"-50";s:6:"Abreve";s:3:"-50";s:11:"Acircumflex";s:3:"-50";s:9:"Adieresis";s:3:"-50";s:6:"Agrave";s:3:"-50";s:7:"Amacron";s:3:"-50";s:7:"Aogonek";s:3:"-50";s:5:"Aring";s:3:"-50";s:6:"Atilde";s:3:"-50";s:5:"comma";s:3:"-30";s:6:"period";s:3:"-30";}s:6:"Ugrave";a:12:{s:1:"A";s:3:"-50";s:6:"Aacute";s:3:"-50";s:6:"Abreve";s:3:"-50";s:11:"Acircumflex";s:3:"-50";s:9:"Adieresis";s:3:"-50";s:6:"Agrave";s:3:"-50";s:7:"Amacron";s:3:"-50";s:7:"Aogonek";s:3:"-50";s:5:"Aring";s:3:"-50";s:6:"Atilde";s:3:"-50";s:5:"comma";s:3:"-30";s:6:"period";s:3:"-30";}s:13:"Uhungarumlaut";a:12:{s:1:"A";s:3:"-50";s:6:"Aacute";s:3:"-50";s:6:"Abreve";s:3:"-50";s:11:"Acircumflex";s:3:"-50";s:9:"Adieresis";s:3:"-50";s:6:"Agrave";s:3:"-50";s:7:"Amacron";s:3:"-50";s:7:"Aogonek";s:3:"-50";s:5:"Aring";s:3:"-50";s:6:"Atilde";s:3:"-50";s:5:"comma";s:3:"-30";s:6:"period";s:3:"-30";}s:7:"Umacron";a:12:{s:1:"A";s:3:"-50";s:6:"Aacute";s:3:"-50";s:6:"Abreve";s:3:"-50";s:11:"Acircumflex";s:3:"-50";s:9:"Adieresis";s:3:"-50";s:6:"Agrave";s:3:"-50";s:7:"Amacron";s:3:"-50";s:7:"Aogonek";s:3:"-50";s:5:"Aring";s:3:"-50";s:6:"Atilde";s:3:"-50";s:5:"comma";s:3:"-30";s:6:"period";s:3:"-30";}s:7:"Uogonek";a:12:{s:1:"A";s:3:"-50";s:6:"Aacute";s:3:"-50";s:6:"Abreve";s:3:"-50";s:11:"Acircumflex";s:3:"-50";s:9:"Adieresis";s:3:"-50";s:6:"Agrave";s:3:"-50";s:7:"Amacron";s:3:"-50";s:7:"Aogonek";s:3:"-50";s:5:"Aring";s:3:"-50";s:6:"Atilde";s:3:"-50";s:5:"comma";s:3:"-30";s:6:"period";s:3:"-30";}s:5:"Uring";a:12:{s:1:"A";s:3:"-50";s:6:"Aacute";s:3:"-50";s:6:"Abreve";s:3:"-50";s:11:"Acircumflex";s:3:"-50";s:9:"Adieresis";s:3:"-50";s:6:"Agrave";s:3:"-50";s:7:"Amacron";s:3:"-50";s:7:"Aogonek";s:3:"-50";s:5:"Aring";s:3:"-50";s:6:"Atilde";s:3:"-50";s:5:"comma";s:3:"-30";s:6:"period";s:3:"-30";}s:1:"V";a:64:{s:1:"A";s:3:"-80";s:6:"Aacute";s:3:"-80";s:6:"Abreve";s:3:"-80";s:11:"Acircumflex";s:3:"-80";s:9:"Adieresis";s:3:"-80";s:6:"Agrave";s:3:"-80";s:7:"Amacron";s:3:"-80";s:7:"Aogonek";s:3:"-80";s:5:"Aring";s:3:"-80";s:6:"Atilde";s:3:"-80";s:1:"G";s:3:"-50";s:6:"Gbreve";s:3:"-50";s:12:"Gcommaaccent";s:3:"-50";s:1:"O";s:3:"-50";s:6:"Oacute";s:3:"-50";s:11:"Ocircumflex";s:3:"-50";s:9:"Odieresis";s:3:"-50";s:6:"Ograve";s:3:"-50";s:13:"Ohungarumlaut";s:3:"-50";s:7:"Omacron";s:3:"-50";s:6:"Oslash";s:3:"-50";s:6:"Otilde";s:3:"-50";s:1:"a";s:3:"-60";s:6:"aacute";s:3:"-60";s:6:"abreve";s:3:"-60";s:11:"acircumflex";s:3:"-60";s:9:"adieresis";s:3:"-60";s:6:"agrave";s:3:"-60";s:7:"amacron";s:3:"-60";s:7:"aogonek";s:3:"-60";s:5:"aring";s:3:"-60";s:6:"atilde";s:3:"-60";s:5:"colon";s:3:"-40";s:5:"comma";s:4:"-120";s:1:"e";s:3:"-50";s:6:"eacute";s:3:"-50";s:6:"ecaron";s:3:"-50";s:11:"ecircumflex";s:3:"-50";s:9:"edieresis";s:3:"-50";s:10:"edotaccent";s:3:"-50";s:6:"egrave";s:3:"-50";s:7:"emacron";s:3:"-50";s:7:"eogonek";s:3:"-50";s:6:"hyphen";s:3:"-80";s:1:"o";s:3:"-90";s:6:"oacute";s:3:"-90";s:11:"ocircumflex";s:3:"-90";s:9:"odieresis";s:3:"-90";s:6:"ograve";s:3:"-90";s:13:"ohungarumlaut";s:3:"-90";s:7:"omacron";s:3:"-90";s:6:"oslash";s:3:"-90";s:6:"otilde";s:3:"-90";s:6:"period";s:4:"-120";s:9:"semicolon";s:3:"-40";s:1:"u";s:3:"-60";s:6:"uacute";s:3:"-60";s:11:"ucircumflex";s:3:"-60";s:9:"udieresis";s:3:"-60";s:6:"ugrave";s:3:"-60";s:13:"uhungarumlaut";s:3:"-60";s:7:"umacron";s:3:"-60";s:7:"uogonek";s:3:"-60";s:5:"uring";s:3:"-60";}s:1:"W";a:64:{s:1:"A";s:3:"-60";s:6:"Aacute";s:3:"-60";s:6:"Abreve";s:3:"-60";s:11:"Acircumflex";s:3:"-60";s:9:"Adieresis";s:3:"-60";s:6:"Agrave";s:3:"-60";s:7:"Amacron";s:3:"-60";s:7:"Aogonek";s:3:"-60";s:5:"Aring";s:3:"-60";s:6:"Atilde";s:3:"-60";s:1:"O";s:3:"-20";s:6:"Oacute";s:3:"-20";s:11:"Ocircumflex";s:3:"-20";s:9:"Odieresis";s:3:"-20";s:6:"Ograve";s:3:"-20";s:13:"Ohungarumlaut";s:3:"-20";s:7:"Omacron";s:3:"-20";s:6:"Oslash";s:3:"-20";s:6:"Otilde";s:3:"-20";s:1:"a";s:3:"-40";s:6:"aacute";s:3:"-40";s:6:"abreve";s:3:"-40";s:11:"acircumflex";s:3:"-40";s:9:"adieresis";s:3:"-40";s:6:"agrave";s:3:"-40";s:7:"amacron";s:3:"-40";s:7:"aogonek";s:3:"-40";s:5:"aring";s:3:"-40";s:6:"atilde";s:3:"-40";s:5:"colon";s:3:"-10";s:5:"comma";s:3:"-80";s:1:"e";s:3:"-35";s:6:"eacute";s:3:"-35";s:6:"ecaron";s:3:"-35";s:11:"ecircumflex";s:3:"-35";s:9:"edieresis";s:3:"-35";s:10:"edotaccent";s:3:"-35";s:6:"egrave";s:3:"-35";s:7:"emacron";s:3:"-35";s:7:"eogonek";s:3:"-35";s:6:"hyphen";s:3:"-40";s:1:"o";s:3:"-60";s:6:"oacute";s:3:"-60";s:11:"ocircumflex";s:3:"-60";s:9:"odieresis";s:3:"-60";s:6:"ograve";s:3:"-60";s:13:"ohungarumlaut";s:3:"-60";s:7:"omacron";s:3:"-60";s:6:"oslash";s:3:"-60";s:6:"otilde";s:3:"-60";s:6:"period";s:3:"-80";s:9:"semicolon";s:3:"-10";s:1:"u";s:3:"-45";s:6:"uacute";s:3:"-45";s:11:"ucircumflex";s:3:"-45";s:9:"udieresis";s:3:"-45";s:6:"ugrave";s:3:"-45";s:13:"uhungarumlaut";s:3:"-45";s:7:"umacron";s:3:"-45";s:7:"uogonek";s:3:"-45";s:5:"uring";s:3:"-45";s:1:"y";s:3:"-20";s:6:"yacute";s:3:"-20";s:9:"ydieresis";s:3:"-20";}s:1:"Y";a:60:{s:1:"A";s:4:"-110";s:6:"Aacute";s:4:"-110";s:6:"Abreve";s:4:"-110";s:11:"Acircumflex";s:4:"-110";s:9:"Adieresis";s:4:"-110";s:6:"Agrave";s:4:"-110";s:7:"Amacron";s:4:"-110";s:7:"Aogonek";s:4:"-110";s:5:"Aring";s:4:"-110";s:6:"Atilde";s:4:"-110";s:1:"O";s:3:"-70";s:6:"Oacute";s:3:"-70";s:11:"Ocircumflex";s:3:"-70";s:9:"Odieresis";s:3:"-70";s:6:"Ograve";s:3:"-70";s:13:"Ohungarumlaut";s:3:"-70";s:7:"Omacron";s:3:"-70";s:6:"Oslash";s:3:"-70";s:6:"Otilde";s:3:"-70";s:1:"a";s:3:"-90";s:6:"aacute";s:3:"-90";s:6:"abreve";s:3:"-90";s:11:"acircumflex";s:3:"-90";s:9:"adieresis";s:3:"-90";s:6:"agrave";s:3:"-90";s:7:"amacron";s:3:"-90";s:7:"aogonek";s:3:"-90";s:5:"aring";s:3:"-90";s:6:"atilde";s:3:"-90";s:5:"colon";s:3:"-50";s:5:"comma";s:4:"-100";s:1:"e";s:3:"-80";s:6:"eacute";s:3:"-80";s:6:"ecaron";s:3:"-80";s:11:"ecircumflex";s:3:"-80";s:9:"edieresis";s:3:"-80";s:10:"edotaccent";s:3:"-80";s:6:"egrave";s:3:"-80";s:7:"emacron";s:3:"-80";s:7:"eogonek";s:3:"-80";s:1:"o";s:4:"-100";s:6:"oacute";s:4:"-100";s:11:"ocircumflex";s:4:"-100";s:9:"odieresis";s:4:"-100";s:6:"ograve";s:4:"-100";s:13:"ohungarumlaut";s:4:"-100";s:7:"omacron";s:4:"-100";s:6:"oslash";s:4:"-100";s:6:"otilde";s:4:"-100";s:6:"period";s:4:"-100";s:9:"semicolon";s:3:"-50";s:1:"u";s:4:"-100";s:6:"uacute";s:4:"-100";s:11:"ucircumflex";s:4:"-100";s:9:"udieresis";s:4:"-100";s:6:"ugrave";s:4:"-100";s:13:"uhungarumlaut";s:4:"-100";s:7:"umacron";s:4:"-100";s:7:"uogonek";s:4:"-100";s:5:"uring";s:4:"-100";}s:6:"Yacute";a:60:{s:1:"A";s:4:"-110";s:6:"Aacute";s:4:"-110";s:6:"Abreve";s:4:"-110";s:11:"Acircumflex";s:4:"-110";s:9:"Adieresis";s:4:"-110";s:6:"Agrave";s:4:"-110";s:7:"Amacron";s:4:"-110";s:7:"Aogonek";s:4:"-110";s:5:"Aring";s:4:"-110";s:6:"Atilde";s:4:"-110";s:1:"O";s:3:"-70";s:6:"Oacute";s:3:"-70";s:11:"Ocircumflex";s:3:"-70";s:9:"Odieresis";s:3:"-70";s:6:"Ograve";s:3:"-70";s:13:"Ohungarumlaut";s:3:"-70";s:7:"Omacron";s:3:"-70";s:6:"Oslash";s:3:"-70";s:6:"Otilde";s:3:"-70";s:1:"a";s:3:"-90";s:6:"aacute";s:3:"-90";s:6:"abreve";s:3:"-90";s:11:"acircumflex";s:3:"-90";s:9:"adieresis";s:3:"-90";s:6:"agrave";s:3:"-90";s:7:"amacron";s:3:"-90";s:7:"aogonek";s:3:"-90";s:5:"aring";s:3:"-90";s:6:"atilde";s:3:"-90";s:5:"colon";s:3:"-50";s:5:"comma";s:4:"-100";s:1:"e";s:3:"-80";s:6:"eacute";s:3:"-80";s:6:"ecaron";s:3:"-80";s:11:"ecircumflex";s:3:"-80";s:9:"edieresis";s:3:"-80";s:10:"edotaccent";s:3:"-80";s:6:"egrave";s:3:"-80";s:7:"emacron";s:3:"-80";s:7:"eogonek";s:3:"-80";s:1:"o";s:4:"-100";s:6:"oacute";s:4:"-100";s:11:"ocircumflex";s:4:"-100";s:9:"odieresis";s:4:"-100";s:6:"ograve";s:4:"-100";s:13:"ohungarumlaut";s:4:"-100";s:7:"omacron";s:4:"-100";s:6:"oslash";s:4:"-100";s:6:"otilde";s:4:"-100";s:6:"period";s:4:"-100";s:9:"semicolon";s:3:"-50";s:1:"u";s:4:"-100";s:6:"uacute";s:4:"-100";s:11:"ucircumflex";s:4:"-100";s:9:"udieresis";s:4:"-100";s:6:"ugrave";s:4:"-100";s:13:"uhungarumlaut";s:4:"-100";s:7:"umacron";s:4:"-100";s:7:"uogonek";s:4:"-100";s:5:"uring";s:4:"-100";}s:9:"Ydieresis";a:60:{s:1:"A";s:4:"-110";s:6:"Aacute";s:4:"-110";s:6:"Abreve";s:4:"-110";s:11:"Acircumflex";s:4:"-110";s:9:"Adieresis";s:4:"-110";s:6:"Agrave";s:4:"-110";s:7:"Amacron";s:4:"-110";s:7:"Aogonek";s:4:"-110";s:5:"Aring";s:4:"-110";s:6:"Atilde";s:4:"-110";s:1:"O";s:3:"-70";s:6:"Oacute";s:3:"-70";s:11:"Ocircumflex";s:3:"-70";s:9:"Odieresis";s:3:"-70";s:6:"Ograve";s:3:"-70";s:13:"Ohungarumlaut";s:3:"-70";s:7:"Omacron";s:3:"-70";s:6:"Oslash";s:3:"-70";s:6:"Otilde";s:3:"-70";s:1:"a";s:3:"-90";s:6:"aacute";s:3:"-90";s:6:"abreve";s:3:"-90";s:11:"acircumflex";s:3:"-90";s:9:"adieresis";s:3:"-90";s:6:"agrave";s:3:"-90";s:7:"amacron";s:3:"-90";s:7:"aogonek";s:3:"-90";s:5:"aring";s:3:"-90";s:6:"atilde";s:3:"-90";s:5:"colon";s:3:"-50";s:5:"comma";s:4:"-100";s:1:"e";s:3:"-80";s:6:"eacute";s:3:"-80";s:6:"ecaron";s:3:"-80";s:11:"ecircumflex";s:3:"-80";s:9:"edieresis";s:3:"-80";s:10:"edotaccent";s:3:"-80";s:6:"egrave";s:3:"-80";s:7:"emacron";s:3:"-80";s:7:"eogonek";s:3:"-80";s:1:"o";s:4:"-100";s:6:"oacute";s:4:"-100";s:11:"ocircumflex";s:4:"-100";s:9:"odieresis";s:4:"-100";s:6:"ograve";s:4:"-100";s:13:"ohungarumlaut";s:4:"-100";s:7:"omacron";s:4:"-100";s:6:"oslash";s:4:"-100";s:6:"otilde";s:4:"-100";s:6:"period";s:4:"-100";s:9:"semicolon";s:3:"-50";s:1:"u";s:4:"-100";s:6:"uacute";s:4:"-100";s:11:"ucircumflex";s:4:"-100";s:9:"udieresis";s:4:"-100";s:6:"ugrave";s:4:"-100";s:13:"uhungarumlaut";s:4:"-100";s:7:"umacron";s:4:"-100";s:7:"uogonek";s:4:"-100";s:5:"uring";s:4:"-100";}s:1:"a";a:8:{s:1:"g";s:3:"-10";s:6:"gbreve";s:3:"-10";s:12:"gcommaaccent";s:3:"-10";s:1:"v";s:3:"-15";s:1:"w";s:3:"-15";s:1:"y";s:3:"-20";s:6:"yacute";s:3:"-20";s:9:"ydieresis";s:3:"-20";}s:6:"aacute";a:8:{s:1:"g";s:3:"-10";s:6:"gbreve";s:3:"-10";s:12:"gcommaaccent";s:3:"-10";s:1:"v";s:3:"-15";s:1:"w";s:3:"-15";s:1:"y";s:3:"-20";s:6:"yacute";s:3:"-20";s:9:"ydieresis";s:3:"-20";}s:6:"abreve";a:8:{s:1:"g";s:3:"-10";s:6:"gbreve";s:3:"-10";s:12:"gcommaaccent";s:3:"-10";s:1:"v";s:3:"-15";s:1:"w";s:3:"-15";s:1:"y";s:3:"-20";s:6:"yacute";s:3:"-20";s:9:"ydieresis";s:3:"-20";}s:11:"acircumflex";a:8:{s:1:"g";s:3:"-10";s:6:"gbreve";s:3:"-10";s:12:"gcommaaccent";s:3:"-10";s:1:"v";s:3:"-15";s:1:"w";s:3:"-15";s:1:"y";s:3:"-20";s:6:"yacute";s:3:"-20";s:9:"ydieresis";s:3:"-20";}s:9:"adieresis";a:8:{s:1:"g";s:3:"-10";s:6:"gbreve";s:3:"-10";s:12:"gcommaaccent";s:3:"-10";s:1:"v";s:3:"-15";s:1:"w";s:3:"-15";s:1:"y";s:3:"-20";s:6:"yacute";s:3:"-20";s:9:"ydieresis";s:3:"-20";}s:6:"agrave";a:8:{s:1:"g";s:3:"-10";s:6:"gbreve";s:3:"-10";s:12:"gcommaaccent";s:3:"-10";s:1:"v";s:3:"-15";s:1:"w";s:3:"-15";s:1:"y";s:3:"-20";s:6:"yacute";s:3:"-20";s:9:"ydieresis";s:3:"-20";}s:7:"amacron";a:8:{s:1:"g";s:3:"-10";s:6:"gbreve";s:3:"-10";s:12:"gcommaaccent";s:3:"-10";s:1:"v";s:3:"-15";s:1:"w";s:3:"-15";s:1:"y";s:3:"-20";s:6:"yacute";s:3:"-20";s:9:"ydieresis";s:3:"-20";}s:7:"aogonek";a:8:{s:1:"g";s:3:"-10";s:6:"gbreve";s:3:"-10";s:12:"gcommaaccent";s:3:"-10";s:1:"v";s:3:"-15";s:1:"w";s:3:"-15";s:1:"y";s:3:"-20";s:6:"yacute";s:3:"-20";s:9:"ydieresis";s:3:"-20";}s:5:"aring";a:8:{s:1:"g";s:3:"-10";s:6:"gbreve";s:3:"-10";s:12:"gcommaaccent";s:3:"-10";s:1:"v";s:3:"-15";s:1:"w";s:3:"-15";s:1:"y";s:3:"-20";s:6:"yacute";s:3:"-20";s:9:"ydieresis";s:3:"-20";}s:6:"atilde";a:8:{s:1:"g";s:3:"-10";s:6:"gbreve";s:3:"-10";s:12:"gcommaaccent";s:3:"-10";s:1:"v";s:3:"-15";s:1:"w";s:3:"-15";s:1:"y";s:3:"-20";s:6:"yacute";s:3:"-20";s:9:"ydieresis";s:3:"-20";}s:1:"b";a:17:{s:1:"l";s:3:"-10";s:6:"lacute";s:3:"-10";s:12:"lcommaaccent";s:3:"-10";s:6:"lslash";s:3:"-10";s:1:"u";s:3:"-20";s:6:"uacute";s:3:"-20";s:11:"ucircumflex";s:3:"-20";s:9:"udieresis";s:3:"-20";s:6:"ugrave";s:3:"-20";s:13:"uhungarumlaut";s:3:"-20";s:7:"umacron";s:3:"-20";s:7:"uogonek";s:3:"-20";s:5:"uring";s:3:"-20";s:1:"v";s:3:"-20";s:1:"y";s:3:"-20";s:6:"yacute";s:3:"-20";s:9:"ydieresis";s:3:"-20";}s:1:"c";a:10:{s:1:"h";s:3:"-10";s:1:"k";s:3:"-20";s:12:"kcommaaccent";s:3:"-20";s:1:"l";s:3:"-20";s:6:"lacute";s:3:"-20";s:12:"lcommaaccent";s:3:"-20";s:6:"lslash";s:3:"-20";s:1:"y";s:3:"-10";s:6:"yacute";s:3:"-10";s:9:"ydieresis";s:3:"-10";}s:6:"cacute";a:10:{s:1:"h";s:3:"-10";s:1:"k";s:3:"-20";s:12:"kcommaaccent";s:3:"-20";s:1:"l";s:3:"-20";s:6:"lacute";s:3:"-20";s:12:"lcommaaccent";s:3:"-20";s:6:"lslash";s:3:"-20";s:1:"y";s:3:"-10";s:6:"yacute";s:3:"-10";s:9:"ydieresis";s:3:"-10";}s:6:"ccaron";a:10:{s:1:"h";s:3:"-10";s:1:"k";s:3:"-20";s:12:"kcommaaccent";s:3:"-20";s:1:"l";s:3:"-20";s:6:"lacute";s:3:"-20";s:12:"lcommaaccent";s:3:"-20";s:6:"lslash";s:3:"-20";s:1:"y";s:3:"-10";s:6:"yacute";s:3:"-10";s:9:"ydieresis";s:3:"-10";}s:8:"ccedilla";a:10:{s:1:"h";s:3:"-10";s:1:"k";s:3:"-20";s:12:"kcommaaccent";s:3:"-20";s:1:"l";s:3:"-20";s:6:"lacute";s:3:"-20";s:12:"lcommaaccent";s:3:"-20";s:6:"lslash";s:3:"-20";s:1:"y";s:3:"-10";s:6:"yacute";s:3:"-10";s:9:"ydieresis";s:3:"-10";}s:5:"colon";a:1:{s:5:"space";s:3:"-40";}s:5:"comma";a:3:{s:13:"quotedblright";s:4:"-120";s:10:"quoteright";s:4:"-120";s:5:"space";s:3:"-40";}s:1:"d";a:7:{s:1:"d";s:3:"-10";s:6:"dcroat";s:3:"-10";s:1:"v";s:3:"-15";s:1:"w";s:3:"-15";s:1:"y";s:3:"-15";s:6:"yacute";s:3:"-15";s:9:"ydieresis";s:3:"-15";}s:6:"dcroat";a:7:{s:1:"d";s:3:"-10";s:6:"dcroat";s:3:"-10";s:1:"v";s:3:"-15";s:1:"w";s:3:"-15";s:1:"y";s:3:"-15";s:6:"yacute";s:3:"-15";s:9:"ydieresis";s:3:"-15";}s:1:"e";a:8:{s:5:"comma";s:2:"10";s:6:"period";s:2:"20";s:1:"v";s:3:"-15";s:1:"w";s:3:"-15";s:1:"x";s:3:"-15";s:1:"y";s:3:"-15";s:6:"yacute";s:3:"-15";s:9:"ydieresis";s:3:"-15";}s:6:"eacute";a:8:{s:5:"comma";s:2:"10";s:6:"period";s:2:"20";s:1:"v";s:3:"-15";s:1:"w";s:3:"-15";s:1:"x";s:3:"-15";s:1:"y";s:3:"-15";s:6:"yacute";s:3:"-15";s:9:"ydieresis";s:3:"-15";}s:6:"ecaron";a:8:{s:5:"comma";s:2:"10";s:6:"period";s:2:"20";s:1:"v";s:3:"-15";s:1:"w";s:3:"-15";s:1:"x";s:3:"-15";s:1:"y";s:3:"-15";s:6:"yacute";s:3:"-15";s:9:"ydieresis";s:3:"-15";}s:11:"ecircumflex";a:8:{s:5:"comma";s:2:"10";s:6:"period";s:2:"20";s:1:"v";s:3:"-15";s:1:"w";s:3:"-15";s:1:"x";s:3:"-15";s:1:"y";s:3:"-15";s:6:"yacute";s:3:"-15";s:9:"ydieresis";s:3:"-15";}s:9:"edieresis";a:8:{s:5:"comma";s:2:"10";s:6:"period";s:2:"20";s:1:"v";s:3:"-15";s:1:"w";s:3:"-15";s:1:"x";s:3:"-15";s:1:"y";s:3:"-15";s:6:"yacute";s:3:"-15";s:9:"ydieresis";s:3:"-15";}s:10:"edotaccent";a:8:{s:5:"comma";s:2:"10";s:6:"period";s:2:"20";s:1:"v";s:3:"-15";s:1:"w";s:3:"-15";s:1:"x";s:3:"-15";s:1:"y";s:3:"-15";s:6:"yacute";s:3:"-15";s:9:"ydieresis";s:3:"-15";}s:6:"egrave";a:8:{s:5:"comma";s:2:"10";s:6:"period";s:2:"20";s:1:"v";s:3:"-15";s:1:"w";s:3:"-15";s:1:"x";s:3:"-15";s:1:"y";s:3:"-15";s:6:"yacute";s:3:"-15";s:9:"ydieresis";s:3:"-15";}s:7:"emacron";a:8:{s:5:"comma";s:2:"10";s:6:"period";s:2:"20";s:1:"v";s:3:"-15";s:1:"w";s:3:"-15";s:1:"x";s:3:"-15";s:1:"y";s:3:"-15";s:6:"yacute";s:3:"-15";s:9:"ydieresis";s:3:"-15";}s:7:"eogonek";a:8:{s:5:"comma";s:2:"10";s:6:"period";s:2:"20";s:1:"v";s:3:"-15";s:1:"w";s:3:"-15";s:1:"x";s:3:"-15";s:1:"y";s:3:"-15";s:6:"yacute";s:3:"-15";s:9:"ydieresis";s:3:"-15";}s:1:"f";a:22:{s:5:"comma";s:3:"-10";s:1:"e";s:3:"-10";s:6:"eacute";s:3:"-10";s:6:"ecaron";s:3:"-10";s:11:"ecircumflex";s:3:"-10";s:9:"edieresis";s:3:"-10";s:10:"edotaccent";s:3:"-10";s:6:"egrave";s:3:"-10";s:7:"emacron";s:3:"-10";s:7:"eogonek";s:3:"-10";s:1:"o";s:3:"-20";s:6:"oacute";s:3:"-20";s:11:"ocircumflex";s:3:"-20";s:9:"odieresis";s:3:"-20";s:6:"ograve";s:3:"-20";s:13:"ohungarumlaut";s:3:"-20";s:7:"omacron";s:3:"-20";s:6:"oslash";s:3:"-20";s:6:"otilde";s:3:"-20";s:6:"period";s:3:"-10";s:13:"quotedblright";s:2:"30";s:10:"quoteright";s:2:"30";}s:1:"g";a:12:{s:1:"e";s:2:"10";s:6:"eacute";s:2:"10";s:6:"ecaron";s:2:"10";s:11:"ecircumflex";s:2:"10";s:9:"edieresis";s:2:"10";s:10:"edotaccent";s:2:"10";s:6:"egrave";s:2:"10";s:7:"emacron";s:2:"10";s:7:"eogonek";s:2:"10";s:1:"g";s:3:"-10";s:6:"gbreve";s:3:"-10";s:12:"gcommaaccent";s:3:"-10";}s:6:"gbreve";a:12:{s:1:"e";s:2:"10";s:6:"eacute";s:2:"10";s:6:"ecaron";s:2:"10";s:11:"ecircumflex";s:2:"10";s:9:"edieresis";s:2:"10";s:10:"edotaccent";s:2:"10";s:6:"egrave";s:2:"10";s:7:"emacron";s:2:"10";s:7:"eogonek";s:2:"10";s:1:"g";s:3:"-10";s:6:"gbreve";s:3:"-10";s:12:"gcommaaccent";s:3:"-10";}s:12:"gcommaaccent";a:12:{s:1:"e";s:2:"10";s:6:"eacute";s:2:"10";s:6:"ecaron";s:2:"10";s:11:"ecircumflex";s:2:"10";s:9:"edieresis";s:2:"10";s:10:"edotaccent";s:2:"10";s:6:"egrave";s:2:"10";s:7:"emacron";s:2:"10";s:7:"eogonek";s:2:"10";s:1:"g";s:3:"-10";s:6:"gbreve";s:3:"-10";s:12:"gcommaaccent";s:3:"-10";}s:1:"h";a:3:{s:1:"y";s:3:"-20";s:6:"yacute";s:3:"-20";s:9:"ydieresis";s:3:"-20";}s:1:"k";a:9:{s:1:"o";s:3:"-15";s:6:"oacute";s:3:"-15";s:11:"ocircumflex";s:3:"-15";s:9:"odieresis";s:3:"-15";s:6:"ograve";s:3:"-15";s:13:"ohungarumlaut";s:3:"-15";s:7:"omacron";s:3:"-15";s:6:"oslash";s:3:"-15";s:6:"otilde";s:3:"-15";}s:12:"kcommaaccent";a:9:{s:1:"o";s:3:"-15";s:6:"oacute";s:3:"-15";s:11:"ocircumflex";s:3:"-15";s:9:"odieresis";s:3:"-15";s:6:"ograve";s:3:"-15";s:13:"ohungarumlaut";s:3:"-15";s:7:"omacron";s:3:"-15";s:6:"oslash";s:3:"-15";s:6:"otilde";s:3:"-15";}s:1:"l";a:4:{s:1:"w";s:3:"-15";s:1:"y";s:3:"-15";s:6:"yacute";s:3:"-15";s:9:"ydieresis";s:3:"-15";}s:6:"lacute";a:4:{s:1:"w";s:3:"-15";s:1:"y";s:3:"-15";s:6:"yacute";s:3:"-15";s:9:"ydieresis";s:3:"-15";}s:12:"lcommaaccent";a:4:{s:1:"w";s:3:"-15";s:1:"y";s:3:"-15";s:6:"yacute";s:3:"-15";s:9:"ydieresis";s:3:"-15";}s:6:"lslash";a:4:{s:1:"w";s:3:"-15";s:1:"y";s:3:"-15";s:6:"yacute";s:3:"-15";s:9:"ydieresis";s:3:"-15";}s:1:"m";a:12:{s:1:"u";s:3:"-20";s:6:"uacute";s:3:"-20";s:11:"ucircumflex";s:3:"-20";s:9:"udieresis";s:3:"-20";s:6:"ugrave";s:3:"-20";s:13:"uhungarumlaut";s:3:"-20";s:7:"umacron";s:3:"-20";s:7:"uogonek";s:3:"-20";s:5:"uring";s:3:"-20";s:1:"y";s:3:"-30";s:6:"yacute";s:3:"-30";s:9:"ydieresis";s:3:"-30";}s:1:"n";a:13:{s:1:"u";s:3:"-10";s:6:"uacute";s:3:"-10";s:11:"ucircumflex";s:3:"-10";s:9:"udieresis";s:3:"-10";s:6:"ugrave";s:3:"-10";s:13:"uhungarumlaut";s:3:"-10";s:7:"umacron";s:3:"-10";s:7:"uogonek";s:3:"-10";s:5:"uring";s:3:"-10";s:1:"v";s:3:"-40";s:1:"y";s:3:"-20";s:6:"yacute";s:3:"-20";s:9:"ydieresis";s:3:"-20";}s:6:"nacute";a:13:{s:1:"u";s:3:"-10";s:6:"uacute";s:3:"-10";s:11:"ucircumflex";s:3:"-10";s:9:"udieresis";s:3:"-10";s:6:"ugrave";s:3:"-10";s:13:"uhungarumlaut";s:3:"-10";s:7:"umacron";s:3:"-10";s:7:"uogonek";s:3:"-10";s:5:"uring";s:3:"-10";s:1:"v";s:3:"-40";s:1:"y";s:3:"-20";s:6:"yacute";s:3:"-20";s:9:"ydieresis";s:3:"-20";}s:6:"ncaron";a:13:{s:1:"u";s:3:"-10";s:6:"uacute";s:3:"-10";s:11:"ucircumflex";s:3:"-10";s:9:"udieresis";s:3:"-10";s:6:"ugrave";s:3:"-10";s:13:"uhungarumlaut";s:3:"-10";s:7:"umacron";s:3:"-10";s:7:"uogonek";s:3:"-10";s:5:"uring";s:3:"-10";s:1:"v";s:3:"-40";s:1:"y";s:3:"-20";s:6:"yacute";s:3:"-20";s:9:"ydieresis";s:3:"-20";}s:12:"ncommaaccent";a:13:{s:1:"u";s:3:"-10";s:6:"uacute";s:3:"-10";s:11:"ucircumflex";s:3:"-10";s:9:"udieresis";s:3:"-10";s:6:"ugrave";s:3:"-10";s:13:"uhungarumlaut";s:3:"-10";s:7:"umacron";s:3:"-10";s:7:"uogonek";s:3:"-10";s:5:"uring";s:3:"-10";s:1:"v";s:3:"-40";s:1:"y";s:3:"-20";s:6:"yacute";s:3:"-20";s:9:"ydieresis";s:3:"-20";}s:6:"ntilde";a:13:{s:1:"u";s:3:"-10";s:6:"uacute";s:3:"-10";s:11:"ucircumflex";s:3:"-10";s:9:"udieresis";s:3:"-10";s:6:"ugrave";s:3:"-10";s:13:"uhungarumlaut";s:3:"-10";s:7:"umacron";s:3:"-10";s:7:"uogonek";s:3:"-10";s:5:"uring";s:3:"-10";s:1:"v";s:3:"-40";s:1:"y";s:3:"-20";s:6:"yacute";s:3:"-20";s:9:"ydieresis";s:3:"-20";}s:1:"o";a:6:{s:1:"v";s:3:"-20";s:1:"w";s:3:"-15";s:1:"x";s:3:"-30";s:1:"y";s:3:"-20";s:6:"yacute";s:3:"-20";s:9:"ydieresis";s:3:"-20";}s:6:"oacute";a:6:{s:1:"v";s:3:"-20";s:1:"w";s:3:"-15";s:1:"x";s:3:"-30";s:1:"y";s:3:"-20";s:6:"yacute";s:3:"-20";s:9:"ydieresis";s:3:"-20";}s:11:"ocircumflex";a:6:{s:1:"v";s:3:"-20";s:1:"w";s:3:"-15";s:1:"x";s:3:"-30";s:1:"y";s:3:"-20";s:6:"yacute";s:3:"-20";s:9:"ydieresis";s:3:"-20";}s:9:"odieresis";a:6:{s:1:"v";s:3:"-20";s:1:"w";s:3:"-15";s:1:"x";s:3:"-30";s:1:"y";s:3:"-20";s:6:"yacute";s:3:"-20";s:9:"ydieresis";s:3:"-20";}s:6:"ograve";a:6:{s:1:"v";s:3:"-20";s:1:"w";s:3:"-15";s:1:"x";s:3:"-30";s:1:"y";s:3:"-20";s:6:"yacute";s:3:"-20";s:9:"ydieresis";s:3:"-20";}s:13:"ohungarumlaut";a:6:{s:1:"v";s:3:"-20";s:1:"w";s:3:"-15";s:1:"x";s:3:"-30";s:1:"y";s:3:"-20";s:6:"yacute";s:3:"-20";s:9:"ydieresis";s:3:"-20";}s:7:"omacron";a:6:{s:1:"v";s:3:"-20";s:1:"w";s:3:"-15";s:1:"x";s:3:"-30";s:1:"y";s:3:"-20";s:6:"yacute";s:3:"-20";s:9:"ydieresis";s:3:"-20";}s:6:"oslash";a:6:{s:1:"v";s:3:"-20";s:1:"w";s:3:"-15";s:1:"x";s:3:"-30";s:1:"y";s:3:"-20";s:6:"yacute";s:3:"-20";s:9:"ydieresis";s:3:"-20";}s:6:"otilde";a:6:{s:1:"v";s:3:"-20";s:1:"w";s:3:"-15";s:1:"x";s:3:"-30";s:1:"y";s:3:"-20";s:6:"yacute";s:3:"-20";s:9:"ydieresis";s:3:"-20";}s:1:"p";a:3:{s:1:"y";s:3:"-15";s:6:"yacute";s:3:"-15";s:9:"ydieresis";s:3:"-15";}s:6:"period";a:3:{s:13:"quotedblright";s:4:"-120";s:10:"quoteright";s:4:"-120";s:5:"space";s:3:"-40";}s:13:"quotedblright";a:1:{s:5:"space";s:3:"-80";}s:9:"quoteleft";a:1:{s:9:"quoteleft";s:3:"-46";}s:10:"quoteright";a:18:{s:1:"d";s:3:"-80";s:6:"dcroat";s:3:"-80";s:1:"l";s:3:"-20";s:6:"lacute";s:3:"-20";s:12:"lcommaaccent";s:3:"-20";s:6:"lslash";s:3:"-20";s:10:"quoteright";s:3:"-46";s:1:"r";s:3:"-40";s:6:"racute";s:3:"-40";s:6:"rcaron";s:3:"-40";s:12:"rcommaaccent";s:3:"-40";s:1:"s";s:3:"-60";s:6:"sacute";s:3:"-60";s:6:"scaron";s:3:"-60";s:8:"scedilla";s:3:"-60";s:12:"scommaaccent";s:3:"-60";s:5:"space";s:3:"-80";s:1:"v";s:3:"-20";}s:1:"r";a:33:{s:1:"c";s:3:"-20";s:6:"cacute";s:3:"-20";s:6:"ccaron";s:3:"-20";s:8:"ccedilla";s:3:"-20";s:5:"comma";s:3:"-60";s:1:"d";s:3:"-20";s:6:"dcroat";s:3:"-20";s:1:"g";s:3:"-15";s:6:"gbreve";s:3:"-15";s:12:"gcommaaccent";s:3:"-15";s:6:"hyphen";s:3:"-20";s:1:"o";s:3:"-20";s:6:"oacute";s:3:"-20";s:11:"ocircumflex";s:3:"-20";s:9:"odieresis";s:3:"-20";s:6:"ograve";s:3:"-20";s:13:"ohungarumlaut";s:3:"-20";s:7:"omacron";s:3:"-20";s:6:"oslash";s:3:"-20";s:6:"otilde";s:3:"-20";s:6:"period";s:3:"-60";s:1:"q";s:3:"-20";s:1:"s";s:3:"-15";s:6:"sacute";s:3:"-15";s:6:"scaron";s:3:"-15";s:8:"scedilla";s:3:"-15";s:12:"scommaaccent";s:3:"-15";s:1:"t";s:2:"20";s:12:"tcommaaccent";s:2:"20";s:1:"v";s:2:"10";s:1:"y";s:2:"10";s:6:"yacute";s:2:"10";s:9:"ydieresis";s:2:"10";}s:6:"racute";a:33:{s:1:"c";s:3:"-20";s:6:"cacute";s:3:"-20";s:6:"ccaron";s:3:"-20";s:8:"ccedilla";s:3:"-20";s:5:"comma";s:3:"-60";s:1:"d";s:3:"-20";s:6:"dcroat";s:3:"-20";s:1:"g";s:3:"-15";s:6:"gbreve";s:3:"-15";s:12:"gcommaaccent";s:3:"-15";s:6:"hyphen";s:3:"-20";s:1:"o";s:3:"-20";s:6:"oacute";s:3:"-20";s:11:"ocircumflex";s:3:"-20";s:9:"odieresis";s:3:"-20";s:6:"ograve";s:3:"-20";s:13:"ohungarumlaut";s:3:"-20";s:7:"omacron";s:3:"-20";s:6:"oslash";s:3:"-20";s:6:"otilde";s:3:"-20";s:6:"period";s:3:"-60";s:1:"q";s:3:"-20";s:1:"s";s:3:"-15";s:6:"sacute";s:3:"-15";s:6:"scaron";s:3:"-15";s:8:"scedilla";s:3:"-15";s:12:"scommaaccent";s:3:"-15";s:1:"t";s:2:"20";s:12:"tcommaaccent";s:2:"20";s:1:"v";s:2:"10";s:1:"y";s:2:"10";s:6:"yacute";s:2:"10";s:9:"ydieresis";s:2:"10";}s:6:"rcaron";a:33:{s:1:"c";s:3:"-20";s:6:"cacute";s:3:"-20";s:6:"ccaron";s:3:"-20";s:8:"ccedilla";s:3:"-20";s:5:"comma";s:3:"-60";s:1:"d";s:3:"-20";s:6:"dcroat";s:3:"-20";s:1:"g";s:3:"-15";s:6:"gbreve";s:3:"-15";s:12:"gcommaaccent";s:3:"-15";s:6:"hyphen";s:3:"-20";s:1:"o";s:3:"-20";s:6:"oacute";s:3:"-20";s:11:"ocircumflex";s:3:"-20";s:9:"odieresis";s:3:"-20";s:6:"ograve";s:3:"-20";s:13:"ohungarumlaut";s:3:"-20";s:7:"omacron";s:3:"-20";s:6:"oslash";s:3:"-20";s:6:"otilde";s:3:"-20";s:6:"period";s:3:"-60";s:1:"q";s:3:"-20";s:1:"s";s:3:"-15";s:6:"sacute";s:3:"-15";s:6:"scaron";s:3:"-15";s:8:"scedilla";s:3:"-15";s:12:"scommaaccent";s:3:"-15";s:1:"t";s:2:"20";s:12:"tcommaaccent";s:2:"20";s:1:"v";s:2:"10";s:1:"y";s:2:"10";s:6:"yacute";s:2:"10";s:9:"ydieresis";s:2:"10";}s:12:"rcommaaccent";a:33:{s:1:"c";s:3:"-20";s:6:"cacute";s:3:"-20";s:6:"ccaron";s:3:"-20";s:8:"ccedilla";s:3:"-20";s:5:"comma";s:3:"-60";s:1:"d";s:3:"-20";s:6:"dcroat";s:3:"-20";s:1:"g";s:3:"-15";s:6:"gbreve";s:3:"-15";s:12:"gcommaaccent";s:3:"-15";s:6:"hyphen";s:3:"-20";s:1:"o";s:3:"-20";s:6:"oacute";s:3:"-20";s:11:"ocircumflex";s:3:"-20";s:9:"odieresis";s:3:"-20";s:6:"ograve";s:3:"-20";s:13:"ohungarumlaut";s:3:"-20";s:7:"omacron";s:3:"-20";s:6:"oslash";s:3:"-20";s:6:"otilde";s:3:"-20";s:6:"period";s:3:"-60";s:1:"q";s:3:"-20";s:1:"s";s:3:"-15";s:6:"sacute";s:3:"-15";s:6:"scaron";s:3:"-15";s:8:"scedilla";s:3:"-15";s:12:"scommaaccent";s:3:"-15";s:1:"t";s:2:"20";s:12:"tcommaaccent";s:2:"20";s:1:"v";s:2:"10";s:1:"y";s:2:"10";s:6:"yacute";s:2:"10";s:9:"ydieresis";s:2:"10";}s:1:"s";a:1:{s:1:"w";s:3:"-15";}s:6:"sacute";a:1:{s:1:"w";s:3:"-15";}s:6:"scaron";a:1:{s:1:"w";s:3:"-15";}s:8:"scedilla";a:1:{s:1:"w";s:3:"-15";}s:12:"scommaaccent";a:1:{s:1:"w";s:3:"-15";}s:9:"semicolon";a:1:{s:5:"space";s:3:"-40";}s:5:"space";a:10:{s:1:"T";s:4:"-100";s:6:"Tcaron";s:4:"-100";s:12:"Tcommaaccent";s:4:"-100";s:1:"V";s:3:"-80";s:1:"W";s:3:"-80";s:1:"Y";s:4:"-120";s:6:"Yacute";s:4:"-120";s:9:"Ydieresis";s:4:"-120";s:12:"quotedblleft";s:3:"-80";s:9:"quoteleft";s:3:"-60";}s:1:"v";a:21:{s:1:"a";s:3:"-20";s:6:"aacute";s:3:"-20";s:6:"abreve";s:3:"-20";s:11:"acircumflex";s:3:"-20";s:9:"adieresis";s:3:"-20";s:6:"agrave";s:3:"-20";s:7:"amacron";s:3:"-20";s:7:"aogonek";s:3:"-20";s:5:"aring";s:3:"-20";s:6:"atilde";s:3:"-20";s:5:"comma";s:3:"-80";s:1:"o";s:3:"-30";s:6:"oacute";s:3:"-30";s:11:"ocircumflex";s:3:"-30";s:9:"odieresis";s:3:"-30";s:6:"ograve";s:3:"-30";s:13:"ohungarumlaut";s:3:"-30";s:7:"omacron";s:3:"-30";s:6:"oslash";s:3:"-30";s:6:"otilde";s:3:"-30";s:6:"period";s:3:"-80";}s:1:"w";a:11:{s:5:"comma";s:3:"-40";s:1:"o";s:3:"-20";s:6:"oacute";s:3:"-20";s:11:"ocircumflex";s:3:"-20";s:9:"odieresis";s:3:"-20";s:6:"ograve";s:3:"-20";s:13:"ohungarumlaut";s:3:"-20";s:7:"omacron";s:3:"-20";s:6:"oslash";s:3:"-20";s:6:"otilde";s:3:"-20";s:6:"period";s:3:"-40";}s:1:"x";a:9:{s:1:"e";s:3:"-10";s:6:"eacute";s:3:"-10";s:6:"ecaron";s:3:"-10";s:11:"ecircumflex";s:3:"-10";s:9:"edieresis";s:3:"-10";s:10:"edotaccent";s:3:"-10";s:6:"egrave";s:3:"-10";s:7:"emacron";s:3:"-10";s:7:"eogonek";s:3:"-10";}s:1:"y";a:30:{s:1:"a";s:3:"-30";s:6:"aacute";s:3:"-30";s:6:"abreve";s:3:"-30";s:11:"acircumflex";s:3:"-30";s:9:"adieresis";s:3:"-30";s:6:"agrave";s:3:"-30";s:7:"amacron";s:3:"-30";s:7:"aogonek";s:3:"-30";s:5:"aring";s:3:"-30";s:6:"atilde";s:3:"-30";s:5:"comma";s:3:"-80";s:1:"e";s:3:"-10";s:6:"eacute";s:3:"-10";s:6:"ecaron";s:3:"-10";s:11:"ecircumflex";s:3:"-10";s:9:"edieresis";s:3:"-10";s:10:"edotaccent";s:3:"-10";s:6:"egrave";s:3:"-10";s:7:"emacron";s:3:"-10";s:7:"eogonek";s:3:"-10";s:1:"o";s:3:"-25";s:6:"oacute";s:3:"-25";s:11:"ocircumflex";s:3:"-25";s:9:"odieresis";s:3:"-25";s:6:"ograve";s:3:"-25";s:13:"ohungarumlaut";s:3:"-25";s:7:"omacron";s:3:"-25";s:6:"oslash";s:3:"-25";s:6:"otilde";s:3:"-25";s:6:"period";s:3:"-80";}s:6:"yacute";a:30:{s:1:"a";s:3:"-30";s:6:"aacute";s:3:"-30";s:6:"abreve";s:3:"-30";s:11:"acircumflex";s:3:"-30";s:9:"adieresis";s:3:"-30";s:6:"agrave";s:3:"-30";s:7:"amacron";s:3:"-30";s:7:"aogonek";s:3:"-30";s:5:"aring";s:3:"-30";s:6:"atilde";s:3:"-30";s:5:"comma";s:3:"-80";s:1:"e";s:3:"-10";s:6:"eacute";s:3:"-10";s:6:"ecaron";s:3:"-10";s:11:"ecircumflex";s:3:"-10";s:9:"edieresis";s:3:"-10";s:10:"edotaccent";s:3:"-10";s:6:"egrave";s:3:"-10";s:7:"emacron";s:3:"-10";s:7:"eogonek";s:3:"-10";s:1:"o";s:3:"-25";s:6:"oacute";s:3:"-25";s:11:"ocircumflex";s:3:"-25";s:9:"odieresis";s:3:"-25";s:6:"ograve";s:3:"-25";s:13:"ohungarumlaut";s:3:"-25";s:7:"omacron";s:3:"-25";s:6:"oslash";s:3:"-25";s:6:"otilde";s:3:"-25";s:6:"period";s:3:"-80";}s:9:"ydieresis";a:30:{s:1:"a";s:3:"-30";s:6:"aacute";s:3:"-30";s:6:"abreve";s:3:"-30";s:11:"acircumflex";s:3:"-30";s:9:"adieresis";s:3:"-30";s:6:"agrave";s:3:"-30";s:7:"amacron";s:3:"-30";s:7:"aogonek";s:3:"-30";s:5:"aring";s:3:"-30";s:6:"atilde";s:3:"-30";s:5:"comma";s:3:"-80";s:1:"e";s:3:"-10";s:6:"eacute";s:3:"-10";s:6:"ecaron";s:3:"-10";s:11:"ecircumflex";s:3:"-10";s:9:"edieresis";s:3:"-10";s:10:"edotaccent";s:3:"-10";s:6:"egrave";s:3:"-10";s:7:"emacron";s:3:"-10";s:7:"eogonek";s:3:"-10";s:1:"o";s:3:"-25";s:6:"oacute";s:3:"-25";s:11:"ocircumflex";s:3:"-25";s:9:"odieresis";s:3:"-25";s:6:"ograve";s:3:"-25";s:13:"ohungarumlaut";s:3:"-25";s:7:"omacron";s:3:"-25";s:6:"oslash";s:3:"-25";s:6:"otilde";s:3:"-25";s:6:"period";s:3:"-80";}s:1:"z";a:9:{s:1:"e";s:2:"10";s:6:"eacute";s:2:"10";s:6:"ecaron";s:2:"10";s:11:"ecircumflex";s:2:"10";s:9:"edieresis";s:2:"10";s:10:"edotaccent";s:2:"10";s:6:"egrave";s:2:"10";s:7:"emacron";s:2:"10";s:7:"eogonek";s:2:"10";}s:6:"zacute";a:9:{s:1:"e";s:2:"10";s:6:"eacute";s:2:"10";s:6:"ecaron";s:2:"10";s:11:"ecircumflex";s:2:"10";s:9:"edieresis";s:2:"10";s:10:"edotaccent";s:2:"10";s:6:"egrave";s:2:"10";s:7:"emacron";s:2:"10";s:7:"eogonek";s:2:"10";}s:6:"zcaron";a:9:{s:1:"e";s:2:"10";s:6:"eacute";s:2:"10";s:6:"ecaron";s:2:"10";s:11:"ecircumflex";s:2:"10";s:9:"edieresis";s:2:"10";s:10:"edotaccent";s:2:"10";s:6:"egrave";s:2:"10";s:7:"emacron";s:2:"10";s:7:"eogonek";s:2:"10";}s:10:"zdotaccent";a:9:{s:1:"e";s:2:"10";s:6:"eacute";s:2:"10";s:6:"ecaron";s:2:"10";s:11:"ecircumflex";s:2:"10";s:9:"edieresis";s:2:"10";s:10:"edotaccent";s:2:"10";s:6:"egrave";s:2:"10";s:7:"emacron";s:2:"10";s:7:"eogonek";s:2:"10";}}s:9:"_version_";i:1;} \ No newline at end of file
diff --git a/admin/survey/Fonts/php_Helvetica.afm b/admin/survey/Fonts/php_Helvetica.afm
deleted file mode 100644
index f8c7f2b..0000000
--- a/admin/survey/Fonts/php_Helvetica.afm
+++ /dev/null
@@ -1 +0,0 @@
-a:22:{s:8:"FontName";s:9:"Helvetica";s:8:"FullName";s:9:"Helvetica";s:10:"FamilyName";s:9:"Helvetica";s:6:"Weight";s:6:"Medium";s:11:"ItalicAngle";s:1:"0";s:12:"IsFixedPitch";s:5:"false";s:12:"CharacterSet";s:13:"ExtendedRoman";s:8:"FontBBox";a:4:{i:0;s:4:"-166";i:1;s:4:"-225";i:2;s:4:"1000";i:3;s:3:"931";}s:17:"UnderlinePosition";s:4:"-100";s:18:"UnderlineThickness";s:2:"50";s:7:"Version";s:7:"002.000";s:14:"EncodingScheme";s:21:"AdobeStandardEncoding";s:9:"CapHeight";s:3:"718";s:7:"XHeight";s:3:"523";s:8:"Ascender";s:3:"718";s:9:"Descender";s:4:"-207";s:5:"StdHW";s:2:"76";s:5:"StdVW";s:2:"88";s:16:"StartCharMetrics";s:3:"315";s:1:"C";a:464:{i:32;a:4:{s:1:"C";s:2:"32";s:2:"WX";s:3:"278";s:1:"N";s:5:"space";s:1:"B";a:4:{i:0;s:1:"0";i:1;s:1:"0";i:2;s:1:"0";i:3;s:1:"0";}}s:5:"space";a:4:{s:1:"C";s:2:"32";s:2:"WX";s:3:"278";s:1:"N";s:5:"space";s:1:"B";a:4:{i:0;s:1:"0";i:1;s:1:"0";i:2;s:1:"0";i:3;s:1:"0";}}i:33;a:4:{s:1:"C";s:2:"33";s:2:"WX";s:3:"278";s:1:"N";s:6:"exclam";s:1:"B";a:4:{i:0;s:2:"90";i:1;s:1:"0";i:2;s:3:"187";i:3;s:3:"718";}}s:6:"exclam";a:4:{s:1:"C";s:2:"33";s:2:"WX";s:3:"278";s:1:"N";s:6:"exclam";s:1:"B";a:4:{i:0;s:2:"90";i:1;s:1:"0";i:2;s:3:"187";i:3;s:3:"718";}}i:34;a:4:{s:1:"C";s:2:"34";s:2:"WX";s:3:"355";s:1:"N";s:8:"quotedbl";s:1:"B";a:4:{i:0;s:2:"70";i:1;s:3:"463";i:2;s:3:"285";i:3;s:3:"718";}}s:8:"quotedbl";a:4:{s:1:"C";s:2:"34";s:2:"WX";s:3:"355";s:1:"N";s:8:"quotedbl";s:1:"B";a:4:{i:0;s:2:"70";i:1;s:3:"463";i:2;s:3:"285";i:3;s:3:"718";}}i:35;a:4:{s:1:"C";s:2:"35";s:2:"WX";s:3:"556";s:1:"N";s:10:"numbersign";s:1:"B";a:4:{i:0;s:2:"28";i:1;s:1:"0";i:2;s:3:"529";i:3;s:3:"688";}}s:10:"numbersign";a:4:{s:1:"C";s:2:"35";s:2:"WX";s:3:"556";s:1:"N";s:10:"numbersign";s:1:"B";a:4:{i:0;s:2:"28";i:1;s:1:"0";i:2;s:3:"529";i:3;s:3:"688";}}i:36;a:4:{s:1:"C";s:2:"36";s:2:"WX";s:3:"556";s:1:"N";s:6:"dollar";s:1:"B";a:4:{i:0;s:2:"32";i:1;s:4:"-115";i:2;s:3:"520";i:3;s:3:"775";}}s:6:"dollar";a:4:{s:1:"C";s:2:"36";s:2:"WX";s:3:"556";s:1:"N";s:6:"dollar";s:1:"B";a:4:{i:0;s:2:"32";i:1;s:4:"-115";i:2;s:3:"520";i:3;s:3:"775";}}i:37;a:4:{s:1:"C";s:2:"37";s:2:"WX";s:3:"889";s:1:"N";s:7:"percent";s:1:"B";a:4:{i:0;s:2:"39";i:1;s:3:"-19";i:2;s:3:"850";i:3;s:3:"703";}}s:7:"percent";a:4:{s:1:"C";s:2:"37";s:2:"WX";s:3:"889";s:1:"N";s:7:"percent";s:1:"B";a:4:{i:0;s:2:"39";i:1;s:3:"-19";i:2;s:3:"850";i:3;s:3:"703";}}i:38;a:4:{s:1:"C";s:2:"38";s:2:"WX";s:3:"667";s:1:"N";s:9:"ampersand";s:1:"B";a:4:{i:0;s:2:"44";i:1;s:3:"-15";i:2;s:3:"645";i:3;s:3:"718";}}s:9:"ampersand";a:4:{s:1:"C";s:2:"38";s:2:"WX";s:3:"667";s:1:"N";s:9:"ampersand";s:1:"B";a:4:{i:0;s:2:"44";i:1;s:3:"-15";i:2;s:3:"645";i:3;s:3:"718";}}i:39;a:4:{s:1:"C";s:2:"39";s:2:"WX";s:3:"222";s:1:"N";s:10:"quoteright";s:1:"B";a:4:{i:0;s:2:"53";i:1;s:3:"463";i:2;s:3:"157";i:3;s:3:"718";}}s:10:"quoteright";a:4:{s:1:"C";s:2:"39";s:2:"WX";s:3:"222";s:1:"N";s:10:"quoteright";s:1:"B";a:4:{i:0;s:2:"53";i:1;s:3:"463";i:2;s:3:"157";i:3;s:3:"718";}}i:40;a:4:{s:1:"C";s:2:"40";s:2:"WX";s:3:"333";s:1:"N";s:9:"parenleft";s:1:"B";a:4:{i:0;s:2:"68";i:1;s:4:"-207";i:2;s:3:"299";i:3;s:3:"733";}}s:9:"parenleft";a:4:{s:1:"C";s:2:"40";s:2:"WX";s:3:"333";s:1:"N";s:9:"parenleft";s:1:"B";a:4:{i:0;s:2:"68";i:1;s:4:"-207";i:2;s:3:"299";i:3;s:3:"733";}}i:41;a:4:{s:1:"C";s:2:"41";s:2:"WX";s:3:"333";s:1:"N";s:10:"parenright";s:1:"B";a:4:{i:0;s:2:"34";i:1;s:4:"-207";i:2;s:3:"265";i:3;s:3:"733";}}s:10:"parenright";a:4:{s:1:"C";s:2:"41";s:2:"WX";s:3:"333";s:1:"N";s:10:"parenright";s:1:"B";a:4:{i:0;s:2:"34";i:1;s:4:"-207";i:2;s:3:"265";i:3;s:3:"733";}}i:42;a:4:{s:1:"C";s:2:"42";s:2:"WX";s:3:"389";s:1:"N";s:8:"asterisk";s:1:"B";a:4:{i:0;s:2:"39";i:1;s:3:"431";i:2;s:3:"349";i:3;s:3:"718";}}s:8:"asterisk";a:4:{s:1:"C";s:2:"42";s:2:"WX";s:3:"389";s:1:"N";s:8:"asterisk";s:1:"B";a:4:{i:0;s:2:"39";i:1;s:3:"431";i:2;s:3:"349";i:3;s:3:"718";}}i:43;a:4:{s:1:"C";s:2:"43";s:2:"WX";s:3:"584";s:1:"N";s:4:"plus";s:1:"B";a:4:{i:0;s:2:"39";i:1;s:1:"0";i:2;s:3:"545";i:3;s:3:"505";}}s:4:"plus";a:4:{s:1:"C";s:2:"43";s:2:"WX";s:3:"584";s:1:"N";s:4:"plus";s:1:"B";a:4:{i:0;s:2:"39";i:1;s:1:"0";i:2;s:3:"545";i:3;s:3:"505";}}i:44;a:4:{s:1:"C";s:2:"44";s:2:"WX";s:3:"278";s:1:"N";s:5:"comma";s:1:"B";a:4:{i:0;s:2:"87";i:1;s:4:"-147";i:2;s:3:"191";i:3;s:3:"106";}}s:5:"comma";a:4:{s:1:"C";s:2:"44";s:2:"WX";s:3:"278";s:1:"N";s:5:"comma";s:1:"B";a:4:{i:0;s:2:"87";i:1;s:4:"-147";i:2;s:3:"191";i:3;s:3:"106";}}i:45;a:4:{s:1:"C";s:2:"45";s:2:"WX";s:3:"333";s:1:"N";s:6:"hyphen";s:1:"B";a:4:{i:0;s:2:"44";i:1;s:3:"232";i:2;s:3:"289";i:3;s:3:"322";}}s:6:"hyphen";a:4:{s:1:"C";s:2:"45";s:2:"WX";s:3:"333";s:1:"N";s:6:"hyphen";s:1:"B";a:4:{i:0;s:2:"44";i:1;s:3:"232";i:2;s:3:"289";i:3;s:3:"322";}}i:46;a:4:{s:1:"C";s:2:"46";s:2:"WX";s:3:"278";s:1:"N";s:6:"period";s:1:"B";a:4:{i:0;s:2:"87";i:1;s:1:"0";i:2;s:3:"191";i:3;s:3:"106";}}s:6:"period";a:4:{s:1:"C";s:2:"46";s:2:"WX";s:3:"278";s:1:"N";s:6:"period";s:1:"B";a:4:{i:0;s:2:"87";i:1;s:1:"0";i:2;s:3:"191";i:3;s:3:"106";}}i:47;a:4:{s:1:"C";s:2:"47";s:2:"WX";s:3:"278";s:1:"N";s:5:"slash";s:1:"B";a:4:{i:0;s:3:"-17";i:1;s:3:"-19";i:2;s:3:"295";i:3;s:3:"737";}}s:5:"slash";a:4:{s:1:"C";s:2:"47";s:2:"WX";s:3:"278";s:1:"N";s:5:"slash";s:1:"B";a:4:{i:0;s:3:"-17";i:1;s:3:"-19";i:2;s:3:"295";i:3;s:3:"737";}}i:48;a:4:{s:1:"C";s:2:"48";s:2:"WX";s:3:"556";s:1:"N";s:4:"zero";s:1:"B";a:4:{i:0;s:2:"37";i:1;s:3:"-19";i:2;s:3:"519";i:3;s:3:"703";}}s:4:"zero";a:4:{s:1:"C";s:2:"48";s:2:"WX";s:3:"556";s:1:"N";s:4:"zero";s:1:"B";a:4:{i:0;s:2:"37";i:1;s:3:"-19";i:2;s:3:"519";i:3;s:3:"703";}}i:49;a:4:{s:1:"C";s:2:"49";s:2:"WX";s:3:"556";s:1:"N";s:3:"one";s:1:"B";a:4:{i:0;s:3:"101";i:1;s:1:"0";i:2;s:3:"359";i:3;s:3:"703";}}s:3:"one";a:4:{s:1:"C";s:2:"49";s:2:"WX";s:3:"556";s:1:"N";s:3:"one";s:1:"B";a:4:{i:0;s:3:"101";i:1;s:1:"0";i:2;s:3:"359";i:3;s:3:"703";}}i:50;a:4:{s:1:"C";s:2:"50";s:2:"WX";s:3:"556";s:1:"N";s:3:"two";s:1:"B";a:4:{i:0;s:2:"26";i:1;s:1:"0";i:2;s:3:"507";i:3;s:3:"703";}}s:3:"two";a:4:{s:1:"C";s:2:"50";s:2:"WX";s:3:"556";s:1:"N";s:3:"two";s:1:"B";a:4:{i:0;s:2:"26";i:1;s:1:"0";i:2;s:3:"507";i:3;s:3:"703";}}i:51;a:4:{s:1:"C";s:2:"51";s:2:"WX";s:3:"556";s:1:"N";s:5:"three";s:1:"B";a:4:{i:0;s:2:"34";i:1;s:3:"-19";i:2;s:3:"522";i:3;s:3:"703";}}s:5:"three";a:4:{s:1:"C";s:2:"51";s:2:"WX";s:3:"556";s:1:"N";s:5:"three";s:1:"B";a:4:{i:0;s:2:"34";i:1;s:3:"-19";i:2;s:3:"522";i:3;s:3:"703";}}i:52;a:4:{s:1:"C";s:2:"52";s:2:"WX";s:3:"556";s:1:"N";s:4:"four";s:1:"B";a:4:{i:0;s:2:"25";i:1;s:1:"0";i:2;s:3:"523";i:3;s:3:"703";}}s:4:"four";a:4:{s:1:"C";s:2:"52";s:2:"WX";s:3:"556";s:1:"N";s:4:"four";s:1:"B";a:4:{i:0;s:2:"25";i:1;s:1:"0";i:2;s:3:"523";i:3;s:3:"703";}}i:53;a:4:{s:1:"C";s:2:"53";s:2:"WX";s:3:"556";s:1:"N";s:4:"five";s:1:"B";a:4:{i:0;s:2:"32";i:1;s:3:"-19";i:2;s:3:"514";i:3;s:3:"688";}}s:4:"five";a:4:{s:1:"C";s:2:"53";s:2:"WX";s:3:"556";s:1:"N";s:4:"five";s:1:"B";a:4:{i:0;s:2:"32";i:1;s:3:"-19";i:2;s:3:"514";i:3;s:3:"688";}}i:54;a:4:{s:1:"C";s:2:"54";s:2:"WX";s:3:"556";s:1:"N";s:3:"six";s:1:"B";a:4:{i:0;s:2:"38";i:1;s:3:"-19";i:2;s:3:"518";i:3;s:3:"703";}}s:3:"six";a:4:{s:1:"C";s:2:"54";s:2:"WX";s:3:"556";s:1:"N";s:3:"six";s:1:"B";a:4:{i:0;s:2:"38";i:1;s:3:"-19";i:2;s:3:"518";i:3;s:3:"703";}}i:55;a:4:{s:1:"C";s:2:"55";s:2:"WX";s:3:"556";s:1:"N";s:5:"seven";s:1:"B";a:4:{i:0;s:2:"37";i:1;s:1:"0";i:2;s:3:"523";i:3;s:3:"688";}}s:5:"seven";a:4:{s:1:"C";s:2:"55";s:2:"WX";s:3:"556";s:1:"N";s:5:"seven";s:1:"B";a:4:{i:0;s:2:"37";i:1;s:1:"0";i:2;s:3:"523";i:3;s:3:"688";}}i:56;a:4:{s:1:"C";s:2:"56";s:2:"WX";s:3:"556";s:1:"N";s:5:"eight";s:1:"B";a:4:{i:0;s:2:"38";i:1;s:3:"-19";i:2;s:3:"517";i:3;s:3:"703";}}s:5:"eight";a:4:{s:1:"C";s:2:"56";s:2:"WX";s:3:"556";s:1:"N";s:5:"eight";s:1:"B";a:4:{i:0;s:2:"38";i:1;s:3:"-19";i:2;s:3:"517";i:3;s:3:"703";}}i:57;a:4:{s:1:"C";s:2:"57";s:2:"WX";s:3:"556";s:1:"N";s:4:"nine";s:1:"B";a:4:{i:0;s:2:"42";i:1;s:3:"-19";i:2;s:3:"514";i:3;s:3:"703";}}s:4:"nine";a:4:{s:1:"C";s:2:"57";s:2:"WX";s:3:"556";s:1:"N";s:4:"nine";s:1:"B";a:4:{i:0;s:2:"42";i:1;s:3:"-19";i:2;s:3:"514";i:3;s:3:"703";}}i:58;a:4:{s:1:"C";s:2:"58";s:2:"WX";s:3:"278";s:1:"N";s:5:"colon";s:1:"B";a:4:{i:0;s:2:"87";i:1;s:1:"0";i:2;s:3:"191";i:3;s:3:"516";}}s:5:"colon";a:4:{s:1:"C";s:2:"58";s:2:"WX";s:3:"278";s:1:"N";s:5:"colon";s:1:"B";a:4:{i:0;s:2:"87";i:1;s:1:"0";i:2;s:3:"191";i:3;s:3:"516";}}i:59;a:4:{s:1:"C";s:2:"59";s:2:"WX";s:3:"278";s:1:"N";s:9:"semicolon";s:1:"B";a:4:{i:0;s:2:"87";i:1;s:4:"-147";i:2;s:3:"191";i:3;s:3:"516";}}s:9:"semicolon";a:4:{s:1:"C";s:2:"59";s:2:"WX";s:3:"278";s:1:"N";s:9:"semicolon";s:1:"B";a:4:{i:0;s:2:"87";i:1;s:4:"-147";i:2;s:3:"191";i:3;s:3:"516";}}i:60;a:4:{s:1:"C";s:2:"60";s:2:"WX";s:3:"584";s:1:"N";s:4:"less";s:1:"B";a:4:{i:0;s:2:"48";i:1;s:2:"11";i:2;s:3:"536";i:3;s:3:"495";}}s:4:"less";a:4:{s:1:"C";s:2:"60";s:2:"WX";s:3:"584";s:1:"N";s:4:"less";s:1:"B";a:4:{i:0;s:2:"48";i:1;s:2:"11";i:2;s:3:"536";i:3;s:3:"495";}}i:61;a:4:{s:1:"C";s:2:"61";s:2:"WX";s:3:"584";s:1:"N";s:5:"equal";s:1:"B";a:4:{i:0;s:2:"39";i:1;s:3:"115";i:2;s:3:"545";i:3;s:3:"390";}}s:5:"equal";a:4:{s:1:"C";s:2:"61";s:2:"WX";s:3:"584";s:1:"N";s:5:"equal";s:1:"B";a:4:{i:0;s:2:"39";i:1;s:3:"115";i:2;s:3:"545";i:3;s:3:"390";}}i:62;a:4:{s:1:"C";s:2:"62";s:2:"WX";s:3:"584";s:1:"N";s:7:"greater";s:1:"B";a:4:{i:0;s:2:"48";i:1;s:2:"11";i:2;s:3:"536";i:3;s:3:"495";}}s:7:"greater";a:4:{s:1:"C";s:2:"62";s:2:"WX";s:3:"584";s:1:"N";s:7:"greater";s:1:"B";a:4:{i:0;s:2:"48";i:1;s:2:"11";i:2;s:3:"536";i:3;s:3:"495";}}i:63;a:4:{s:1:"C";s:2:"63";s:2:"WX";s:3:"556";s:1:"N";s:8:"question";s:1:"B";a:4:{i:0;s:2:"56";i:1;s:1:"0";i:2;s:3:"492";i:3;s:3:"727";}}s:8:"question";a:4:{s:1:"C";s:2:"63";s:2:"WX";s:3:"556";s:1:"N";s:8:"question";s:1:"B";a:4:{i:0;s:2:"56";i:1;s:1:"0";i:2;s:3:"492";i:3;s:3:"727";}}i:64;a:4:{s:1:"C";s:2:"64";s:2:"WX";s:4:"1015";s:1:"N";s:2:"at";s:1:"B";a:4:{i:0;s:3:"147";i:1;s:3:"-19";i:2;s:3:"868";i:3;s:3:"737";}}s:2:"at";a:4:{s:1:"C";s:2:"64";s:2:"WX";s:4:"1015";s:1:"N";s:2:"at";s:1:"B";a:4:{i:0;s:3:"147";i:1;s:3:"-19";i:2;s:3:"868";i:3;s:3:"737";}}i:65;a:4:{s:1:"C";s:2:"65";s:2:"WX";s:3:"667";s:1:"N";s:1:"A";s:1:"B";a:4:{i:0;s:2:"14";i:1;s:1:"0";i:2;s:3:"654";i:3;s:3:"718";}}s:1:"A";a:4:{s:1:"C";s:2:"65";s:2:"WX";s:3:"667";s:1:"N";s:1:"A";s:1:"B";a:4:{i:0;s:2:"14";i:1;s:1:"0";i:2;s:3:"654";i:3;s:3:"718";}}i:66;a:4:{s:1:"C";s:2:"66";s:2:"WX";s:3:"667";s:1:"N";s:1:"B";s:1:"B";a:4:{i:0;s:2:"74";i:1;s:1:"0";i:2;s:3:"627";i:3;s:3:"718";}}s:1:"B";a:4:{s:1:"C";s:2:"66";s:2:"WX";s:3:"667";s:1:"N";s:1:"B";s:1:"B";a:4:{i:0;s:2:"74";i:1;s:1:"0";i:2;s:3:"627";i:3;s:3:"718";}}i:67;a:4:{s:1:"C";s:2:"67";s:2:"WX";s:3:"722";s:1:"N";s:1:"C";s:1:"B";a:4:{i:0;s:2:"44";i:1;s:3:"-19";i:2;s:3:"681";i:3;s:3:"737";}}s:1:"C";a:4:{s:1:"C";s:2:"67";s:2:"WX";s:3:"722";s:1:"N";s:1:"C";s:1:"B";a:4:{i:0;s:2:"44";i:1;s:3:"-19";i:2;s:3:"681";i:3;s:3:"737";}}i:68;a:4:{s:1:"C";s:2:"68";s:2:"WX";s:3:"722";s:1:"N";s:1:"D";s:1:"B";a:4:{i:0;s:2:"81";i:1;s:1:"0";i:2;s:3:"674";i:3;s:3:"718";}}s:1:"D";a:4:{s:1:"C";s:2:"68";s:2:"WX";s:3:"722";s:1:"N";s:1:"D";s:1:"B";a:4:{i:0;s:2:"81";i:1;s:1:"0";i:2;s:3:"674";i:3;s:3:"718";}}i:69;a:4:{s:1:"C";s:2:"69";s:2:"WX";s:3:"667";s:1:"N";s:1:"E";s:1:"B";a:4:{i:0;s:2:"86";i:1;s:1:"0";i:2;s:3:"616";i:3;s:3:"718";}}s:1:"E";a:4:{s:1:"C";s:2:"69";s:2:"WX";s:3:"667";s:1:"N";s:1:"E";s:1:"B";a:4:{i:0;s:2:"86";i:1;s:1:"0";i:2;s:3:"616";i:3;s:3:"718";}}i:70;a:4:{s:1:"C";s:2:"70";s:2:"WX";s:3:"611";s:1:"N";s:1:"F";s:1:"B";a:4:{i:0;s:2:"86";i:1;s:1:"0";i:2;s:3:"583";i:3;s:3:"718";}}s:1:"F";a:4:{s:1:"C";s:2:"70";s:2:"WX";s:3:"611";s:1:"N";s:1:"F";s:1:"B";a:4:{i:0;s:2:"86";i:1;s:1:"0";i:2;s:3:"583";i:3;s:3:"718";}}i:71;a:4:{s:1:"C";s:2:"71";s:2:"WX";s:3:"778";s:1:"N";s:1:"G";s:1:"B";a:4:{i:0;s:2:"48";i:1;s:3:"-19";i:2;s:3:"704";i:3;s:3:"737";}}s:1:"G";a:4:{s:1:"C";s:2:"71";s:2:"WX";s:3:"778";s:1:"N";s:1:"G";s:1:"B";a:4:{i:0;s:2:"48";i:1;s:3:"-19";i:2;s:3:"704";i:3;s:3:"737";}}i:72;a:4:{s:1:"C";s:2:"72";s:2:"WX";s:3:"722";s:1:"N";s:1:"H";s:1:"B";a:4:{i:0;s:2:"77";i:1;s:1:"0";i:2;s:3:"646";i:3;s:3:"718";}}s:1:"H";a:4:{s:1:"C";s:2:"72";s:2:"WX";s:3:"722";s:1:"N";s:1:"H";s:1:"B";a:4:{i:0;s:2:"77";i:1;s:1:"0";i:2;s:3:"646";i:3;s:3:"718";}}i:73;a:4:{s:1:"C";s:2:"73";s:2:"WX";s:3:"278";s:1:"N";s:1:"I";s:1:"B";a:4:{i:0;s:2:"91";i:1;s:1:"0";i:2;s:3:"188";i:3;s:3:"718";}}s:1:"I";a:4:{s:1:"C";s:2:"73";s:2:"WX";s:3:"278";s:1:"N";s:1:"I";s:1:"B";a:4:{i:0;s:2:"91";i:1;s:1:"0";i:2;s:3:"188";i:3;s:3:"718";}}i:74;a:4:{s:1:"C";s:2:"74";s:2:"WX";s:3:"500";s:1:"N";s:1:"J";s:1:"B";a:4:{i:0;s:2:"17";i:1;s:3:"-19";i:2;s:3:"428";i:3;s:3:"718";}}s:1:"J";a:4:{s:1:"C";s:2:"74";s:2:"WX";s:3:"500";s:1:"N";s:1:"J";s:1:"B";a:4:{i:0;s:2:"17";i:1;s:3:"-19";i:2;s:3:"428";i:3;s:3:"718";}}i:75;a:4:{s:1:"C";s:2:"75";s:2:"WX";s:3:"667";s:1:"N";s:1:"K";s:1:"B";a:4:{i:0;s:2:"76";i:1;s:1:"0";i:2;s:3:"663";i:3;s:3:"718";}}s:1:"K";a:4:{s:1:"C";s:2:"75";s:2:"WX";s:3:"667";s:1:"N";s:1:"K";s:1:"B";a:4:{i:0;s:2:"76";i:1;s:1:"0";i:2;s:3:"663";i:3;s:3:"718";}}i:76;a:4:{s:1:"C";s:2:"76";s:2:"WX";s:3:"556";s:1:"N";s:1:"L";s:1:"B";a:4:{i:0;s:2:"76";i:1;s:1:"0";i:2;s:3:"537";i:3;s:3:"718";}}s:1:"L";a:4:{s:1:"C";s:2:"76";s:2:"WX";s:3:"556";s:1:"N";s:1:"L";s:1:"B";a:4:{i:0;s:2:"76";i:1;s:1:"0";i:2;s:3:"537";i:3;s:3:"718";}}i:77;a:4:{s:1:"C";s:2:"77";s:2:"WX";s:3:"833";s:1:"N";s:1:"M";s:1:"B";a:4:{i:0;s:2:"73";i:1;s:1:"0";i:2;s:3:"761";i:3;s:3:"718";}}s:1:"M";a:4:{s:1:"C";s:2:"77";s:2:"WX";s:3:"833";s:1:"N";s:1:"M";s:1:"B";a:4:{i:0;s:2:"73";i:1;s:1:"0";i:2;s:3:"761";i:3;s:3:"718";}}i:78;a:4:{s:1:"C";s:2:"78";s:2:"WX";s:3:"722";s:1:"N";s:1:"N";s:1:"B";a:4:{i:0;s:2:"76";i:1;s:1:"0";i:2;s:3:"646";i:3;s:3:"718";}}s:1:"N";a:4:{s:1:"C";s:2:"78";s:2:"WX";s:3:"722";s:1:"N";s:1:"N";s:1:"B";a:4:{i:0;s:2:"76";i:1;s:1:"0";i:2;s:3:"646";i:3;s:3:"718";}}i:79;a:4:{s:1:"C";s:2:"79";s:2:"WX";s:3:"778";s:1:"N";s:1:"O";s:1:"B";a:4:{i:0;s:2:"39";i:1;s:3:"-19";i:2;s:3:"739";i:3;s:3:"737";}}s:1:"O";a:4:{s:1:"C";s:2:"79";s:2:"WX";s:3:"778";s:1:"N";s:1:"O";s:1:"B";a:4:{i:0;s:2:"39";i:1;s:3:"-19";i:2;s:3:"739";i:3;s:3:"737";}}i:80;a:4:{s:1:"C";s:2:"80";s:2:"WX";s:3:"667";s:1:"N";s:1:"P";s:1:"B";a:4:{i:0;s:2:"86";i:1;s:1:"0";i:2;s:3:"622";i:3;s:3:"718";}}s:1:"P";a:4:{s:1:"C";s:2:"80";s:2:"WX";s:3:"667";s:1:"N";s:1:"P";s:1:"B";a:4:{i:0;s:2:"86";i:1;s:1:"0";i:2;s:3:"622";i:3;s:3:"718";}}i:81;a:4:{s:1:"C";s:2:"81";s:2:"WX";s:3:"778";s:1:"N";s:1:"Q";s:1:"B";a:4:{i:0;s:2:"39";i:1;s:3:"-56";i:2;s:3:"739";i:3;s:3:"737";}}s:1:"Q";a:4:{s:1:"C";s:2:"81";s:2:"WX";s:3:"778";s:1:"N";s:1:"Q";s:1:"B";a:4:{i:0;s:2:"39";i:1;s:3:"-56";i:2;s:3:"739";i:3;s:3:"737";}}i:82;a:4:{s:1:"C";s:2:"82";s:2:"WX";s:3:"722";s:1:"N";s:1:"R";s:1:"B";a:4:{i:0;s:2:"88";i:1;s:1:"0";i:2;s:3:"684";i:3;s:3:"718";}}s:1:"R";a:4:{s:1:"C";s:2:"82";s:2:"WX";s:3:"722";s:1:"N";s:1:"R";s:1:"B";a:4:{i:0;s:2:"88";i:1;s:1:"0";i:2;s:3:"684";i:3;s:3:"718";}}i:83;a:4:{s:1:"C";s:2:"83";s:2:"WX";s:3:"667";s:1:"N";s:1:"S";s:1:"B";a:4:{i:0;s:2:"49";i:1;s:3:"-19";i:2;s:3:"620";i:3;s:3:"737";}}s:1:"S";a:4:{s:1:"C";s:2:"83";s:2:"WX";s:3:"667";s:1:"N";s:1:"S";s:1:"B";a:4:{i:0;s:2:"49";i:1;s:3:"-19";i:2;s:3:"620";i:3;s:3:"737";}}i:84;a:4:{s:1:"C";s:2:"84";s:2:"WX";s:3:"611";s:1:"N";s:1:"T";s:1:"B";a:4:{i:0;s:2:"14";i:1;s:1:"0";i:2;s:3:"597";i:3;s:3:"718";}}s:1:"T";a:4:{s:1:"C";s:2:"84";s:2:"WX";s:3:"611";s:1:"N";s:1:"T";s:1:"B";a:4:{i:0;s:2:"14";i:1;s:1:"0";i:2;s:3:"597";i:3;s:3:"718";}}i:85;a:4:{s:1:"C";s:2:"85";s:2:"WX";s:3:"722";s:1:"N";s:1:"U";s:1:"B";a:4:{i:0;s:2:"79";i:1;s:3:"-19";i:2;s:3:"644";i:3;s:3:"718";}}s:1:"U";a:4:{s:1:"C";s:2:"85";s:2:"WX";s:3:"722";s:1:"N";s:1:"U";s:1:"B";a:4:{i:0;s:2:"79";i:1;s:3:"-19";i:2;s:3:"644";i:3;s:3:"718";}}i:86;a:4:{s:1:"C";s:2:"86";s:2:"WX";s:3:"667";s:1:"N";s:1:"V";s:1:"B";a:4:{i:0;s:2:"20";i:1;s:1:"0";i:2;s:3:"647";i:3;s:3:"718";}}s:1:"V";a:4:{s:1:"C";s:2:"86";s:2:"WX";s:3:"667";s:1:"N";s:1:"V";s:1:"B";a:4:{i:0;s:2:"20";i:1;s:1:"0";i:2;s:3:"647";i:3;s:3:"718";}}i:87;a:4:{s:1:"C";s:2:"87";s:2:"WX";s:3:"944";s:1:"N";s:1:"W";s:1:"B";a:4:{i:0;s:2:"16";i:1;s:1:"0";i:2;s:3:"928";i:3;s:3:"718";}}s:1:"W";a:4:{s:1:"C";s:2:"87";s:2:"WX";s:3:"944";s:1:"N";s:1:"W";s:1:"B";a:4:{i:0;s:2:"16";i:1;s:1:"0";i:2;s:3:"928";i:3;s:3:"718";}}i:88;a:4:{s:1:"C";s:2:"88";s:2:"WX";s:3:"667";s:1:"N";s:1:"X";s:1:"B";a:4:{i:0;s:2:"19";i:1;s:1:"0";i:2;s:3:"648";i:3;s:3:"718";}}s:1:"X";a:4:{s:1:"C";s:2:"88";s:2:"WX";s:3:"667";s:1:"N";s:1:"X";s:1:"B";a:4:{i:0;s:2:"19";i:1;s:1:"0";i:2;s:3:"648";i:3;s:3:"718";}}i:89;a:4:{s:1:"C";s:2:"89";s:2:"WX";s:3:"667";s:1:"N";s:1:"Y";s:1:"B";a:4:{i:0;s:2:"14";i:1;s:1:"0";i:2;s:3:"653";i:3;s:3:"718";}}s:1:"Y";a:4:{s:1:"C";s:2:"89";s:2:"WX";s:3:"667";s:1:"N";s:1:"Y";s:1:"B";a:4:{i:0;s:2:"14";i:1;s:1:"0";i:2;s:3:"653";i:3;s:3:"718";}}i:90;a:4:{s:1:"C";s:2:"90";s:2:"WX";s:3:"611";s:1:"N";s:1:"Z";s:1:"B";a:4:{i:0;s:2:"23";i:1;s:1:"0";i:2;s:3:"588";i:3;s:3:"718";}}s:1:"Z";a:4:{s:1:"C";s:2:"90";s:2:"WX";s:3:"611";s:1:"N";s:1:"Z";s:1:"B";a:4:{i:0;s:2:"23";i:1;s:1:"0";i:2;s:3:"588";i:3;s:3:"718";}}i:91;a:4:{s:1:"C";s:2:"91";s:2:"WX";s:3:"278";s:1:"N";s:11:"bracketleft";s:1:"B";a:4:{i:0;s:2:"63";i:1;s:4:"-196";i:2;s:3:"250";i:3;s:3:"722";}}s:11:"bracketleft";a:4:{s:1:"C";s:2:"91";s:2:"WX";s:3:"278";s:1:"N";s:11:"bracketleft";s:1:"B";a:4:{i:0;s:2:"63";i:1;s:4:"-196";i:2;s:3:"250";i:3;s:3:"722";}}i:92;a:4:{s:1:"C";s:2:"92";s:2:"WX";s:3:"278";s:1:"N";s:9:"backslash";s:1:"B";a:4:{i:0;s:3:"-17";i:1;s:3:"-19";i:2;s:3:"295";i:3;s:3:"737";}}s:9:"backslash";a:4:{s:1:"C";s:2:"92";s:2:"WX";s:3:"278";s:1:"N";s:9:"backslash";s:1:"B";a:4:{i:0;s:3:"-17";i:1;s:3:"-19";i:2;s:3:"295";i:3;s:3:"737";}}i:93;a:4:{s:1:"C";s:2:"93";s:2:"WX";s:3:"278";s:1:"N";s:12:"bracketright";s:1:"B";a:4:{i:0;s:2:"28";i:1;s:4:"-196";i:2;s:3:"215";i:3;s:3:"722";}}s:12:"bracketright";a:4:{s:1:"C";s:2:"93";s:2:"WX";s:3:"278";s:1:"N";s:12:"bracketright";s:1:"B";a:4:{i:0;s:2:"28";i:1;s:4:"-196";i:2;s:3:"215";i:3;s:3:"722";}}i:94;a:4:{s:1:"C";s:2:"94";s:2:"WX";s:3:"469";s:1:"N";s:11:"asciicircum";s:1:"B";a:4:{i:0;s:3:"-14";i:1;s:3:"264";i:2;s:3:"483";i:3;s:3:"688";}}s:11:"asciicircum";a:4:{s:1:"C";s:2:"94";s:2:"WX";s:3:"469";s:1:"N";s:11:"asciicircum";s:1:"B";a:4:{i:0;s:3:"-14";i:1;s:3:"264";i:2;s:3:"483";i:3;s:3:"688";}}i:95;a:4:{s:1:"C";s:2:"95";s:2:"WX";s:3:"556";s:1:"N";s:10:"underscore";s:1:"B";a:4:{i:0;s:1:"0";i:1;s:4:"-125";i:2;s:3:"556";i:3;s:3:"-75";}}s:10:"underscore";a:4:{s:1:"C";s:2:"95";s:2:"WX";s:3:"556";s:1:"N";s:10:"underscore";s:1:"B";a:4:{i:0;s:1:"0";i:1;s:4:"-125";i:2;s:3:"556";i:3;s:3:"-75";}}i:96;a:4:{s:1:"C";s:2:"96";s:2:"WX";s:3:"222";s:1:"N";s:9:"quoteleft";s:1:"B";a:4:{i:0;s:2:"65";i:1;s:3:"470";i:2;s:3:"169";i:3;s:3:"725";}}s:9:"quoteleft";a:4:{s:1:"C";s:2:"96";s:2:"WX";s:3:"222";s:1:"N";s:9:"quoteleft";s:1:"B";a:4:{i:0;s:2:"65";i:1;s:3:"470";i:2;s:3:"169";i:3;s:3:"725";}}i:97;a:4:{s:1:"C";s:2:"97";s:2:"WX";s:3:"556";s:1:"N";s:1:"a";s:1:"B";a:4:{i:0;s:2:"36";i:1;s:3:"-15";i:2;s:3:"530";i:3;s:3:"538";}}s:1:"a";a:4:{s:1:"C";s:2:"97";s:2:"WX";s:3:"556";s:1:"N";s:1:"a";s:1:"B";a:4:{i:0;s:2:"36";i:1;s:3:"-15";i:2;s:3:"530";i:3;s:3:"538";}}i:98;a:4:{s:1:"C";s:2:"98";s:2:"WX";s:3:"556";s:1:"N";s:1:"b";s:1:"B";a:4:{i:0;s:2:"58";i:1;s:3:"-15";i:2;s:3:"517";i:3;s:3:"718";}}s:1:"b";a:4:{s:1:"C";s:2:"98";s:2:"WX";s:3:"556";s:1:"N";s:1:"b";s:1:"B";a:4:{i:0;s:2:"58";i:1;s:3:"-15";i:2;s:3:"517";i:3;s:3:"718";}}i:99;a:4:{s:1:"C";s:2:"99";s:2:"WX";s:3:"500";s:1:"N";s:1:"c";s:1:"B";a:4:{i:0;s:2:"30";i:1;s:3:"-15";i:2;s:3:"477";i:3;s:3:"538";}}s:1:"c";a:4:{s:1:"C";s:2:"99";s:2:"WX";s:3:"500";s:1:"N";s:1:"c";s:1:"B";a:4:{i:0;s:2:"30";i:1;s:3:"-15";i:2;s:3:"477";i:3;s:3:"538";}}i:100;a:4:{s:1:"C";s:3:"100";s:2:"WX";s:3:"556";s:1:"N";s:1:"d";s:1:"B";a:4:{i:0;s:2:"35";i:1;s:3:"-15";i:2;s:3:"499";i:3;s:3:"718";}}s:1:"d";a:4:{s:1:"C";s:3:"100";s:2:"WX";s:3:"556";s:1:"N";s:1:"d";s:1:"B";a:4:{i:0;s:2:"35";i:1;s:3:"-15";i:2;s:3:"499";i:3;s:3:"718";}}i:101;a:4:{s:1:"C";s:3:"101";s:2:"WX";s:3:"556";s:1:"N";s:1:"e";s:1:"B";a:4:{i:0;s:2:"40";i:1;s:3:"-15";i:2;s:3:"516";i:3;s:3:"538";}}s:1:"e";a:4:{s:1:"C";s:3:"101";s:2:"WX";s:3:"556";s:1:"N";s:1:"e";s:1:"B";a:4:{i:0;s:2:"40";i:1;s:3:"-15";i:2;s:3:"516";i:3;s:3:"538";}}i:102;a:5:{s:1:"C";s:3:"102";s:2:"WX";s:3:"278";s:1:"N";s:1:"f";s:1:"B";a:4:{i:0;s:2:"14";i:1;s:1:"0";i:2;s:3:"262";i:3;s:3:"728";}s:1:"L";a:2:{i:0;s:1:"l";i:1;s:2:"fl";}}s:1:"f";a:5:{s:1:"C";s:3:"102";s:2:"WX";s:3:"278";s:1:"N";s:1:"f";s:1:"B";a:4:{i:0;s:2:"14";i:1;s:1:"0";i:2;s:3:"262";i:3;s:3:"728";}s:1:"L";a:2:{i:0;s:1:"l";i:1;s:2:"fl";}}i:103;a:4:{s:1:"C";s:3:"103";s:2:"WX";s:3:"556";s:1:"N";s:1:"g";s:1:"B";a:4:{i:0;s:2:"40";i:1;s:4:"-220";i:2;s:3:"499";i:3;s:3:"538";}}s:1:"g";a:4:{s:1:"C";s:3:"103";s:2:"WX";s:3:"556";s:1:"N";s:1:"g";s:1:"B";a:4:{i:0;s:2:"40";i:1;s:4:"-220";i:2;s:3:"499";i:3;s:3:"538";}}i:104;a:4:{s:1:"C";s:3:"104";s:2:"WX";s:3:"556";s:1:"N";s:1:"h";s:1:"B";a:4:{i:0;s:2:"65";i:1;s:1:"0";i:2;s:3:"491";i:3;s:3:"718";}}s:1:"h";a:4:{s:1:"C";s:3:"104";s:2:"WX";s:3:"556";s:1:"N";s:1:"h";s:1:"B";a:4:{i:0;s:2:"65";i:1;s:1:"0";i:2;s:3:"491";i:3;s:3:"718";}}i:105;a:4:{s:1:"C";s:3:"105";s:2:"WX";s:3:"222";s:1:"N";s:1:"i";s:1:"B";a:4:{i:0;s:2:"67";i:1;s:1:"0";i:2;s:3:"155";i:3;s:3:"718";}}s:1:"i";a:4:{s:1:"C";s:3:"105";s:2:"WX";s:3:"222";s:1:"N";s:1:"i";s:1:"B";a:4:{i:0;s:2:"67";i:1;s:1:"0";i:2;s:3:"155";i:3;s:3:"718";}}i:106;a:4:{s:1:"C";s:3:"106";s:2:"WX";s:3:"222";s:1:"N";s:1:"j";s:1:"B";a:4:{i:0;s:3:"-16";i:1;s:4:"-210";i:2;s:3:"155";i:3;s:3:"718";}}s:1:"j";a:4:{s:1:"C";s:3:"106";s:2:"WX";s:3:"222";s:1:"N";s:1:"j";s:1:"B";a:4:{i:0;s:3:"-16";i:1;s:4:"-210";i:2;s:3:"155";i:3;s:3:"718";}}i:107;a:4:{s:1:"C";s:3:"107";s:2:"WX";s:3:"500";s:1:"N";s:1:"k";s:1:"B";a:4:{i:0;s:2:"67";i:1;s:1:"0";i:2;s:3:"501";i:3;s:3:"718";}}s:1:"k";a:4:{s:1:"C";s:3:"107";s:2:"WX";s:3:"500";s:1:"N";s:1:"k";s:1:"B";a:4:{i:0;s:2:"67";i:1;s:1:"0";i:2;s:3:"501";i:3;s:3:"718";}}i:108;a:4:{s:1:"C";s:3:"108";s:2:"WX";s:3:"222";s:1:"N";s:1:"l";s:1:"B";a:4:{i:0;s:2:"67";i:1;s:1:"0";i:2;s:3:"155";i:3;s:3:"718";}}s:1:"l";a:4:{s:1:"C";s:3:"108";s:2:"WX";s:3:"222";s:1:"N";s:1:"l";s:1:"B";a:4:{i:0;s:2:"67";i:1;s:1:"0";i:2;s:3:"155";i:3;s:3:"718";}}i:109;a:4:{s:1:"C";s:3:"109";s:2:"WX";s:3:"833";s:1:"N";s:1:"m";s:1:"B";a:4:{i:0;s:2:"65";i:1;s:1:"0";i:2;s:3:"769";i:3;s:3:"538";}}s:1:"m";a:4:{s:1:"C";s:3:"109";s:2:"WX";s:3:"833";s:1:"N";s:1:"m";s:1:"B";a:4:{i:0;s:2:"65";i:1;s:1:"0";i:2;s:3:"769";i:3;s:3:"538";}}i:110;a:4:{s:1:"C";s:3:"110";s:2:"WX";s:3:"556";s:1:"N";s:1:"n";s:1:"B";a:4:{i:0;s:2:"65";i:1;s:1:"0";i:2;s:3:"491";i:3;s:3:"538";}}s:1:"n";a:4:{s:1:"C";s:3:"110";s:2:"WX";s:3:"556";s:1:"N";s:1:"n";s:1:"B";a:4:{i:0;s:2:"65";i:1;s:1:"0";i:2;s:3:"491";i:3;s:3:"538";}}i:111;a:4:{s:1:"C";s:3:"111";s:2:"WX";s:3:"556";s:1:"N";s:1:"o";s:1:"B";a:4:{i:0;s:2:"35";i:1;s:3:"-14";i:2;s:3:"521";i:3;s:3:"538";}}s:1:"o";a:4:{s:1:"C";s:3:"111";s:2:"WX";s:3:"556";s:1:"N";s:1:"o";s:1:"B";a:4:{i:0;s:2:"35";i:1;s:3:"-14";i:2;s:3:"521";i:3;s:3:"538";}}i:112;a:4:{s:1:"C";s:3:"112";s:2:"WX";s:3:"556";s:1:"N";s:1:"p";s:1:"B";a:4:{i:0;s:2:"58";i:1;s:4:"-207";i:2;s:3:"517";i:3;s:3:"538";}}s:1:"p";a:4:{s:1:"C";s:3:"112";s:2:"WX";s:3:"556";s:1:"N";s:1:"p";s:1:"B";a:4:{i:0;s:2:"58";i:1;s:4:"-207";i:2;s:3:"517";i:3;s:3:"538";}}i:113;a:4:{s:1:"C";s:3:"113";s:2:"WX";s:3:"556";s:1:"N";s:1:"q";s:1:"B";a:4:{i:0;s:2:"35";i:1;s:4:"-207";i:2;s:3:"494";i:3;s:3:"538";}}s:1:"q";a:4:{s:1:"C";s:3:"113";s:2:"WX";s:3:"556";s:1:"N";s:1:"q";s:1:"B";a:4:{i:0;s:2:"35";i:1;s:4:"-207";i:2;s:3:"494";i:3;s:3:"538";}}i:114;a:4:{s:1:"C";s:3:"114";s:2:"WX";s:3:"333";s:1:"N";s:1:"r";s:1:"B";a:4:{i:0;s:2:"77";i:1;s:1:"0";i:2;s:3:"332";i:3;s:3:"538";}}s:1:"r";a:4:{s:1:"C";s:3:"114";s:2:"WX";s:3:"333";s:1:"N";s:1:"r";s:1:"B";a:4:{i:0;s:2:"77";i:1;s:1:"0";i:2;s:3:"332";i:3;s:3:"538";}}i:115;a:4:{s:1:"C";s:3:"115";s:2:"WX";s:3:"500";s:1:"N";s:1:"s";s:1:"B";a:4:{i:0;s:2:"32";i:1;s:3:"-15";i:2;s:3:"464";i:3;s:3:"538";}}s:1:"s";a:4:{s:1:"C";s:3:"115";s:2:"WX";s:3:"500";s:1:"N";s:1:"s";s:1:"B";a:4:{i:0;s:2:"32";i:1;s:3:"-15";i:2;s:3:"464";i:3;s:3:"538";}}i:116;a:4:{s:1:"C";s:3:"116";s:2:"WX";s:3:"278";s:1:"N";s:1:"t";s:1:"B";a:4:{i:0;s:2:"14";i:1;s:2:"-7";i:2;s:3:"257";i:3;s:3:"669";}}s:1:"t";a:4:{s:1:"C";s:3:"116";s:2:"WX";s:3:"278";s:1:"N";s:1:"t";s:1:"B";a:4:{i:0;s:2:"14";i:1;s:2:"-7";i:2;s:3:"257";i:3;s:3:"669";}}i:117;a:4:{s:1:"C";s:3:"117";s:2:"WX";s:3:"556";s:1:"N";s:1:"u";s:1:"B";a:4:{i:0;s:2:"68";i:1;s:3:"-15";i:2;s:3:"489";i:3;s:3:"523";}}s:1:"u";a:4:{s:1:"C";s:3:"117";s:2:"WX";s:3:"556";s:1:"N";s:1:"u";s:1:"B";a:4:{i:0;s:2:"68";i:1;s:3:"-15";i:2;s:3:"489";i:3;s:3:"523";}}i:118;a:4:{s:1:"C";s:3:"118";s:2:"WX";s:3:"500";s:1:"N";s:1:"v";s:1:"B";a:4:{i:0;s:1:"8";i:1;s:1:"0";i:2;s:3:"492";i:3;s:3:"523";}}s:1:"v";a:4:{s:1:"C";s:3:"118";s:2:"WX";s:3:"500";s:1:"N";s:1:"v";s:1:"B";a:4:{i:0;s:1:"8";i:1;s:1:"0";i:2;s:3:"492";i:3;s:3:"523";}}i:119;a:4:{s:1:"C";s:3:"119";s:2:"WX";s:3:"722";s:1:"N";s:1:"w";s:1:"B";a:4:{i:0;s:2:"14";i:1;s:1:"0";i:2;s:3:"709";i:3;s:3:"523";}}s:1:"w";a:4:{s:1:"C";s:3:"119";s:2:"WX";s:3:"722";s:1:"N";s:1:"w";s:1:"B";a:4:{i:0;s:2:"14";i:1;s:1:"0";i:2;s:3:"709";i:3;s:3:"523";}}i:120;a:4:{s:1:"C";s:3:"120";s:2:"WX";s:3:"500";s:1:"N";s:1:"x";s:1:"B";a:4:{i:0;s:2:"11";i:1;s:1:"0";i:2;s:3:"490";i:3;s:3:"523";}}s:1:"x";a:4:{s:1:"C";s:3:"120";s:2:"WX";s:3:"500";s:1:"N";s:1:"x";s:1:"B";a:4:{i:0;s:2:"11";i:1;s:1:"0";i:2;s:3:"490";i:3;s:3:"523";}}i:121;a:4:{s:1:"C";s:3:"121";s:2:"WX";s:3:"500";s:1:"N";s:1:"y";s:1:"B";a:4:{i:0;s:2:"11";i:1;s:4:"-214";i:2;s:3:"489";i:3;s:3:"523";}}s:1:"y";a:4:{s:1:"C";s:3:"121";s:2:"WX";s:3:"500";s:1:"N";s:1:"y";s:1:"B";a:4:{i:0;s:2:"11";i:1;s:4:"-214";i:2;s:3:"489";i:3;s:3:"523";}}i:122;a:4:{s:1:"C";s:3:"122";s:2:"WX";s:3:"500";s:1:"N";s:1:"z";s:1:"B";a:4:{i:0;s:2:"31";i:1;s:1:"0";i:2;s:3:"469";i:3;s:3:"523";}}s:1:"z";a:4:{s:1:"C";s:3:"122";s:2:"WX";s:3:"500";s:1:"N";s:1:"z";s:1:"B";a:4:{i:0;s:2:"31";i:1;s:1:"0";i:2;s:3:"469";i:3;s:3:"523";}}i:123;a:4:{s:1:"C";s:3:"123";s:2:"WX";s:3:"334";s:1:"N";s:9:"braceleft";s:1:"B";a:4:{i:0;s:2:"42";i:1;s:4:"-196";i:2;s:3:"292";i:3;s:3:"722";}}s:9:"braceleft";a:4:{s:1:"C";s:3:"123";s:2:"WX";s:3:"334";s:1:"N";s:9:"braceleft";s:1:"B";a:4:{i:0;s:2:"42";i:1;s:4:"-196";i:2;s:3:"292";i:3;s:3:"722";}}i:124;a:4:{s:1:"C";s:3:"124";s:2:"WX";s:3:"260";s:1:"N";s:3:"bar";s:1:"B";a:4:{i:0;s:2:"94";i:1;s:4:"-225";i:2;s:3:"167";i:3;s:3:"775";}}s:3:"bar";a:4:{s:1:"C";s:3:"124";s:2:"WX";s:3:"260";s:1:"N";s:3:"bar";s:1:"B";a:4:{i:0;s:2:"94";i:1;s:4:"-225";i:2;s:3:"167";i:3;s:3:"775";}}i:125;a:4:{s:1:"C";s:3:"125";s:2:"WX";s:3:"334";s:1:"N";s:10:"braceright";s:1:"B";a:4:{i:0;s:2:"42";i:1;s:4:"-196";i:2;s:3:"292";i:3;s:3:"722";}}s:10:"braceright";a:4:{s:1:"C";s:3:"125";s:2:"WX";s:3:"334";s:1:"N";s:10:"braceright";s:1:"B";a:4:{i:0;s:2:"42";i:1;s:4:"-196";i:2;s:3:"292";i:3;s:3:"722";}}i:126;a:4:{s:1:"C";s:3:"126";s:2:"WX";s:3:"584";s:1:"N";s:10:"asciitilde";s:1:"B";a:4:{i:0;s:2:"61";i:1;s:3:"180";i:2;s:3:"523";i:3;s:3:"326";}}s:10:"asciitilde";a:4:{s:1:"C";s:3:"126";s:2:"WX";s:3:"584";s:1:"N";s:10:"asciitilde";s:1:"B";a:4:{i:0;s:2:"61";i:1;s:3:"180";i:2;s:3:"523";i:3;s:3:"326";}}i:161;a:4:{s:1:"C";s:3:"161";s:2:"WX";s:3:"333";s:1:"N";s:10:"exclamdown";s:1:"B";a:4:{i:0;s:3:"118";i:1;s:4:"-195";i:2;s:3:"215";i:3;s:3:"523";}}s:10:"exclamdown";a:4:{s:1:"C";s:3:"161";s:2:"WX";s:3:"333";s:1:"N";s:10:"exclamdown";s:1:"B";a:4:{i:0;s:3:"118";i:1;s:4:"-195";i:2;s:3:"215";i:3;s:3:"523";}}i:162;a:4:{s:1:"C";s:3:"162";s:2:"WX";s:3:"556";s:1:"N";s:4:"cent";s:1:"B";a:4:{i:0;s:2:"51";i:1;s:4:"-115";i:2;s:3:"513";i:3;s:3:"623";}}s:4:"cent";a:4:{s:1:"C";s:3:"162";s:2:"WX";s:3:"556";s:1:"N";s:4:"cent";s:1:"B";a:4:{i:0;s:2:"51";i:1;s:4:"-115";i:2;s:3:"513";i:3;s:3:"623";}}i:163;a:4:{s:1:"C";s:3:"163";s:2:"WX";s:3:"556";s:1:"N";s:8:"sterling";s:1:"B";a:4:{i:0;s:2:"33";i:1;s:3:"-16";i:2;s:3:"539";i:3;s:3:"718";}}s:8:"sterling";a:4:{s:1:"C";s:3:"163";s:2:"WX";s:3:"556";s:1:"N";s:8:"sterling";s:1:"B";a:4:{i:0;s:2:"33";i:1;s:3:"-16";i:2;s:3:"539";i:3;s:3:"718";}}i:164;a:4:{s:1:"C";s:3:"164";s:2:"WX";s:3:"167";s:1:"N";s:8:"fraction";s:1:"B";a:4:{i:0;s:4:"-166";i:1;s:3:"-19";i:2;s:3:"333";i:3;s:3:"703";}}s:8:"fraction";a:4:{s:1:"C";s:3:"164";s:2:"WX";s:3:"167";s:1:"N";s:8:"fraction";s:1:"B";a:4:{i:0;s:4:"-166";i:1;s:3:"-19";i:2;s:3:"333";i:3;s:3:"703";}}i:165;a:4:{s:1:"C";s:3:"165";s:2:"WX";s:3:"556";s:1:"N";s:3:"yen";s:1:"B";a:4:{i:0;s:1:"3";i:1;s:1:"0";i:2;s:3:"553";i:3;s:3:"688";}}s:3:"yen";a:4:{s:1:"C";s:3:"165";s:2:"WX";s:3:"556";s:1:"N";s:3:"yen";s:1:"B";a:4:{i:0;s:1:"3";i:1;s:1:"0";i:2;s:3:"553";i:3;s:3:"688";}}i:166;a:4:{s:1:"C";s:3:"166";s:2:"WX";s:3:"556";s:1:"N";s:6:"florin";s:1:"B";a:4:{i:0;s:3:"-11";i:1;s:4:"-207";i:2;s:3:"501";i:3;s:3:"737";}}s:6:"florin";a:4:{s:1:"C";s:3:"166";s:2:"WX";s:3:"556";s:1:"N";s:6:"florin";s:1:"B";a:4:{i:0;s:3:"-11";i:1;s:4:"-207";i:2;s:3:"501";i:3;s:3:"737";}}i:167;a:4:{s:1:"C";s:3:"167";s:2:"WX";s:3:"556";s:1:"N";s:7:"section";s:1:"B";a:4:{i:0;s:2:"43";i:1;s:4:"-191";i:2;s:3:"512";i:3;s:3:"737";}}s:7:"section";a:4:{s:1:"C";s:3:"167";s:2:"WX";s:3:"556";s:1:"N";s:7:"section";s:1:"B";a:4:{i:0;s:2:"43";i:1;s:4:"-191";i:2;s:3:"512";i:3;s:3:"737";}}i:168;a:4:{s:1:"C";s:3:"168";s:2:"WX";s:3:"556";s:1:"N";s:8:"currency";s:1:"B";a:4:{i:0;s:2:"28";i:1;s:2:"99";i:2;s:3:"528";i:3;s:3:"603";}}s:8:"currency";a:4:{s:1:"C";s:3:"168";s:2:"WX";s:3:"556";s:1:"N";s:8:"currency";s:1:"B";a:4:{i:0;s:2:"28";i:1;s:2:"99";i:2;s:3:"528";i:3;s:3:"603";}}i:169;a:4:{s:1:"C";s:3:"169";s:2:"WX";s:3:"191";s:1:"N";s:11:"quotesingle";s:1:"B";a:4:{i:0;s:2:"59";i:1;s:3:"463";i:2;s:3:"132";i:3;s:3:"718";}}s:11:"quotesingle";a:4:{s:1:"C";s:3:"169";s:2:"WX";s:3:"191";s:1:"N";s:11:"quotesingle";s:1:"B";a:4:{i:0;s:2:"59";i:1;s:3:"463";i:2;s:3:"132";i:3;s:3:"718";}}i:170;a:4:{s:1:"C";s:3:"170";s:2:"WX";s:3:"333";s:1:"N";s:12:"quotedblleft";s:1:"B";a:4:{i:0;s:2:"38";i:1;s:3:"470";i:2;s:3:"307";i:3;s:3:"725";}}s:12:"quotedblleft";a:4:{s:1:"C";s:3:"170";s:2:"WX";s:3:"333";s:1:"N";s:12:"quotedblleft";s:1:"B";a:4:{i:0;s:2:"38";i:1;s:3:"470";i:2;s:3:"307";i:3;s:3:"725";}}i:171;a:4:{s:1:"C";s:3:"171";s:2:"WX";s:3:"556";s:1:"N";s:13:"guillemotleft";s:1:"B";a:4:{i:0;s:2:"97";i:1;s:3:"108";i:2;s:3:"459";i:3;s:3:"446";}}s:13:"guillemotleft";a:4:{s:1:"C";s:3:"171";s:2:"WX";s:3:"556";s:1:"N";s:13:"guillemotleft";s:1:"B";a:4:{i:0;s:2:"97";i:1;s:3:"108";i:2;s:3:"459";i:3;s:3:"446";}}i:172;a:4:{s:1:"C";s:3:"172";s:2:"WX";s:3:"333";s:1:"N";s:13:"guilsinglleft";s:1:"B";a:4:{i:0;s:2:"88";i:1;s:3:"108";i:2;s:3:"245";i:3;s:3:"446";}}s:13:"guilsinglleft";a:4:{s:1:"C";s:3:"172";s:2:"WX";s:3:"333";s:1:"N";s:13:"guilsinglleft";s:1:"B";a:4:{i:0;s:2:"88";i:1;s:3:"108";i:2;s:3:"245";i:3;s:3:"446";}}i:173;a:4:{s:1:"C";s:3:"173";s:2:"WX";s:3:"333";s:1:"N";s:14:"guilsinglright";s:1:"B";a:4:{i:0;s:2:"88";i:1;s:3:"108";i:2;s:3:"245";i:3;s:3:"446";}}s:14:"guilsinglright";a:4:{s:1:"C";s:3:"173";s:2:"WX";s:3:"333";s:1:"N";s:14:"guilsinglright";s:1:"B";a:4:{i:0;s:2:"88";i:1;s:3:"108";i:2;s:3:"245";i:3;s:3:"446";}}i:174;a:4:{s:1:"C";s:3:"174";s:2:"WX";s:3:"500";s:1:"N";s:2:"fi";s:1:"B";a:4:{i:0;s:2:"14";i:1;s:1:"0";i:2;s:3:"434";i:3;s:3:"728";}}s:2:"fi";a:4:{s:1:"C";s:3:"174";s:2:"WX";s:3:"500";s:1:"N";s:2:"fi";s:1:"B";a:4:{i:0;s:2:"14";i:1;s:1:"0";i:2;s:3:"434";i:3;s:3:"728";}}i:175;a:4:{s:1:"C";s:3:"175";s:2:"WX";s:3:"500";s:1:"N";s:2:"fl";s:1:"B";a:4:{i:0;s:2:"14";i:1;s:1:"0";i:2;s:3:"432";i:3;s:3:"728";}}s:2:"fl";a:4:{s:1:"C";s:3:"175";s:2:"WX";s:3:"500";s:1:"N";s:2:"fl";s:1:"B";a:4:{i:0;s:2:"14";i:1;s:1:"0";i:2;s:3:"432";i:3;s:3:"728";}}i:177;a:4:{s:1:"C";s:3:"177";s:2:"WX";s:3:"556";s:1:"N";s:6:"endash";s:1:"B";a:4:{i:0;s:1:"0";i:1;s:3:"240";i:2;s:3:"556";i:3;s:3:"313";}}s:6:"endash";a:4:{s:1:"C";s:3:"177";s:2:"WX";s:3:"556";s:1:"N";s:6:"endash";s:1:"B";a:4:{i:0;s:1:"0";i:1;s:3:"240";i:2;s:3:"556";i:3;s:3:"313";}}i:178;a:4:{s:1:"C";s:3:"178";s:2:"WX";s:3:"556";s:1:"N";s:6:"dagger";s:1:"B";a:4:{i:0;s:2:"43";i:1;s:4:"-159";i:2;s:3:"514";i:3;s:3:"718";}}s:6:"dagger";a:4:{s:1:"C";s:3:"178";s:2:"WX";s:3:"556";s:1:"N";s:6:"dagger";s:1:"B";a:4:{i:0;s:2:"43";i:1;s:4:"-159";i:2;s:3:"514";i:3;s:3:"718";}}i:179;a:4:{s:1:"C";s:3:"179";s:2:"WX";s:3:"556";s:1:"N";s:9:"daggerdbl";s:1:"B";a:4:{i:0;s:2:"43";i:1;s:4:"-159";i:2;s:3:"514";i:3;s:3:"718";}}s:9:"daggerdbl";a:4:{s:1:"C";s:3:"179";s:2:"WX";s:3:"556";s:1:"N";s:9:"daggerdbl";s:1:"B";a:4:{i:0;s:2:"43";i:1;s:4:"-159";i:2;s:3:"514";i:3;s:3:"718";}}i:180;a:4:{s:1:"C";s:3:"180";s:2:"WX";s:3:"278";s:1:"N";s:14:"periodcentered";s:1:"B";a:4:{i:0;s:2:"77";i:1;s:3:"190";i:2;s:3:"202";i:3;s:3:"315";}}s:14:"periodcentered";a:4:{s:1:"C";s:3:"180";s:2:"WX";s:3:"278";s:1:"N";s:14:"periodcentered";s:1:"B";a:4:{i:0;s:2:"77";i:1;s:3:"190";i:2;s:3:"202";i:3;s:3:"315";}}i:182;a:4:{s:1:"C";s:3:"182";s:2:"WX";s:3:"537";s:1:"N";s:9:"paragraph";s:1:"B";a:4:{i:0;s:2:"18";i:1;s:4:"-173";i:2;s:3:"497";i:3;s:3:"718";}}s:9:"paragraph";a:4:{s:1:"C";s:3:"182";s:2:"WX";s:3:"537";s:1:"N";s:9:"paragraph";s:1:"B";a:4:{i:0;s:2:"18";i:1;s:4:"-173";i:2;s:3:"497";i:3;s:3:"718";}}i:183;a:4:{s:1:"C";s:3:"183";s:2:"WX";s:3:"350";s:1:"N";s:6:"bullet";s:1:"B";a:4:{i:0;s:2:"18";i:1;s:3:"202";i:2;s:3:"333";i:3;s:3:"517";}}s:6:"bullet";a:4:{s:1:"C";s:3:"183";s:2:"WX";s:3:"350";s:1:"N";s:6:"bullet";s:1:"B";a:4:{i:0;s:2:"18";i:1;s:3:"202";i:2;s:3:"333";i:3;s:3:"517";}}i:184;a:4:{s:1:"C";s:3:"184";s:2:"WX";s:3:"222";s:1:"N";s:14:"quotesinglbase";s:1:"B";a:4:{i:0;s:2:"53";i:1;s:4:"-149";i:2;s:3:"157";i:3;s:3:"106";}}s:14:"quotesinglbase";a:4:{s:1:"C";s:3:"184";s:2:"WX";s:3:"222";s:1:"N";s:14:"quotesinglbase";s:1:"B";a:4:{i:0;s:2:"53";i:1;s:4:"-149";i:2;s:3:"157";i:3;s:3:"106";}}i:185;a:4:{s:1:"C";s:3:"185";s:2:"WX";s:3:"333";s:1:"N";s:12:"quotedblbase";s:1:"B";a:4:{i:0;s:2:"26";i:1;s:4:"-149";i:2;s:3:"295";i:3;s:3:"106";}}s:12:"quotedblbase";a:4:{s:1:"C";s:3:"185";s:2:"WX";s:3:"333";s:1:"N";s:12:"quotedblbase";s:1:"B";a:4:{i:0;s:2:"26";i:1;s:4:"-149";i:2;s:3:"295";i:3;s:3:"106";}}i:186;a:4:{s:1:"C";s:3:"186";s:2:"WX";s:3:"333";s:1:"N";s:13:"quotedblright";s:1:"B";a:4:{i:0;s:2:"26";i:1;s:3:"463";i:2;s:3:"295";i:3;s:3:"718";}}s:13:"quotedblright";a:4:{s:1:"C";s:3:"186";s:2:"WX";s:3:"333";s:1:"N";s:13:"quotedblright";s:1:"B";a:4:{i:0;s:2:"26";i:1;s:3:"463";i:2;s:3:"295";i:3;s:3:"718";}}i:187;a:4:{s:1:"C";s:3:"187";s:2:"WX";s:3:"556";s:1:"N";s:14:"guillemotright";s:1:"B";a:4:{i:0;s:2:"97";i:1;s:3:"108";i:2;s:3:"459";i:3;s:3:"446";}}s:14:"guillemotright";a:4:{s:1:"C";s:3:"187";s:2:"WX";s:3:"556";s:1:"N";s:14:"guillemotright";s:1:"B";a:4:{i:0;s:2:"97";i:1;s:3:"108";i:2;s:3:"459";i:3;s:3:"446";}}i:188;a:4:{s:1:"C";s:3:"188";s:2:"WX";s:4:"1000";s:1:"N";s:8:"ellipsis";s:1:"B";a:4:{i:0;s:3:"115";i:1;s:1:"0";i:2;s:3:"885";i:3;s:3:"106";}}s:8:"ellipsis";a:4:{s:1:"C";s:3:"188";s:2:"WX";s:4:"1000";s:1:"N";s:8:"ellipsis";s:1:"B";a:4:{i:0;s:3:"115";i:1;s:1:"0";i:2;s:3:"885";i:3;s:3:"106";}}i:189;a:4:{s:1:"C";s:3:"189";s:2:"WX";s:4:"1000";s:1:"N";s:11:"perthousand";s:1:"B";a:4:{i:0;s:1:"7";i:1;s:3:"-19";i:2;s:3:"994";i:3;s:3:"703";}}s:11:"perthousand";a:4:{s:1:"C";s:3:"189";s:2:"WX";s:4:"1000";s:1:"N";s:11:"perthousand";s:1:"B";a:4:{i:0;s:1:"7";i:1;s:3:"-19";i:2;s:3:"994";i:3;s:3:"703";}}i:191;a:4:{s:1:"C";s:3:"191";s:2:"WX";s:3:"611";s:1:"N";s:12:"questiondown";s:1:"B";a:4:{i:0;s:2:"91";i:1;s:4:"-201";i:2;s:3:"527";i:3;s:3:"525";}}s:12:"questiondown";a:4:{s:1:"C";s:3:"191";s:2:"WX";s:3:"611";s:1:"N";s:12:"questiondown";s:1:"B";a:4:{i:0;s:2:"91";i:1;s:4:"-201";i:2;s:3:"527";i:3;s:3:"525";}}i:193;a:4:{s:1:"C";s:3:"193";s:2:"WX";s:3:"333";s:1:"N";s:5:"grave";s:1:"B";a:4:{i:0;s:2:"14";i:1;s:3:"593";i:2;s:3:"211";i:3;s:3:"734";}}s:5:"grave";a:4:{s:1:"C";s:3:"193";s:2:"WX";s:3:"333";s:1:"N";s:5:"grave";s:1:"B";a:4:{i:0;s:2:"14";i:1;s:3:"593";i:2;s:3:"211";i:3;s:3:"734";}}i:194;a:4:{s:1:"C";s:3:"194";s:2:"WX";s:3:"333";s:1:"N";s:5:"acute";s:1:"B";a:4:{i:0;s:3:"122";i:1;s:3:"593";i:2;s:3:"319";i:3;s:3:"734";}}s:5:"acute";a:4:{s:1:"C";s:3:"194";s:2:"WX";s:3:"333";s:1:"N";s:5:"acute";s:1:"B";a:4:{i:0;s:3:"122";i:1;s:3:"593";i:2;s:3:"319";i:3;s:3:"734";}}i:195;a:4:{s:1:"C";s:3:"195";s:2:"WX";s:3:"333";s:1:"N";s:10:"circumflex";s:1:"B";a:4:{i:0;s:2:"21";i:1;s:3:"593";i:2;s:3:"312";i:3;s:3:"734";}}s:10:"circumflex";a:4:{s:1:"C";s:3:"195";s:2:"WX";s:3:"333";s:1:"N";s:10:"circumflex";s:1:"B";a:4:{i:0;s:2:"21";i:1;s:3:"593";i:2;s:3:"312";i:3;s:3:"734";}}i:196;a:4:{s:1:"C";s:3:"196";s:2:"WX";s:3:"333";s:1:"N";s:5:"tilde";s:1:"B";a:4:{i:0;s:2:"-4";i:1;s:3:"606";i:2;s:3:"337";i:3;s:3:"722";}}s:5:"tilde";a:4:{s:1:"C";s:3:"196";s:2:"WX";s:3:"333";s:1:"N";s:5:"tilde";s:1:"B";a:4:{i:0;s:2:"-4";i:1;s:3:"606";i:2;s:3:"337";i:3;s:3:"722";}}i:197;a:4:{s:1:"C";s:3:"197";s:2:"WX";s:3:"333";s:1:"N";s:6:"macron";s:1:"B";a:4:{i:0;s:2:"10";i:1;s:3:"627";i:2;s:3:"323";i:3;s:3:"684";}}s:6:"macron";a:4:{s:1:"C";s:3:"197";s:2:"WX";s:3:"333";s:1:"N";s:6:"macron";s:1:"B";a:4:{i:0;s:2:"10";i:1;s:3:"627";i:2;s:3:"323";i:3;s:3:"684";}}i:198;a:4:{s:1:"C";s:3:"198";s:2:"WX";s:3:"333";s:1:"N";s:5:"breve";s:1:"B";a:4:{i:0;s:2:"13";i:1;s:3:"595";i:2;s:3:"321";i:3;s:3:"731";}}s:5:"breve";a:4:{s:1:"C";s:3:"198";s:2:"WX";s:3:"333";s:1:"N";s:5:"breve";s:1:"B";a:4:{i:0;s:2:"13";i:1;s:3:"595";i:2;s:3:"321";i:3;s:3:"731";}}i:199;a:4:{s:1:"C";s:3:"199";s:2:"WX";s:3:"333";s:1:"N";s:9:"dotaccent";s:1:"B";a:4:{i:0;s:3:"121";i:1;s:3:"604";i:2;s:3:"212";i:3;s:3:"706";}}s:9:"dotaccent";a:4:{s:1:"C";s:3:"199";s:2:"WX";s:3:"333";s:1:"N";s:9:"dotaccent";s:1:"B";a:4:{i:0;s:3:"121";i:1;s:3:"604";i:2;s:3:"212";i:3;s:3:"706";}}i:200;a:4:{s:1:"C";s:3:"200";s:2:"WX";s:3:"333";s:1:"N";s:8:"dieresis";s:1:"B";a:4:{i:0;s:2:"40";i:1;s:3:"604";i:2;s:3:"293";i:3;s:3:"706";}}s:8:"dieresis";a:4:{s:1:"C";s:3:"200";s:2:"WX";s:3:"333";s:1:"N";s:8:"dieresis";s:1:"B";a:4:{i:0;s:2:"40";i:1;s:3:"604";i:2;s:3:"293";i:3;s:3:"706";}}i:202;a:4:{s:1:"C";s:3:"202";s:2:"WX";s:3:"333";s:1:"N";s:4:"ring";s:1:"B";a:4:{i:0;s:2:"75";i:1;s:3:"572";i:2;s:3:"259";i:3;s:3:"756";}}s:4:"ring";a:4:{s:1:"C";s:3:"202";s:2:"WX";s:3:"333";s:1:"N";s:4:"ring";s:1:"B";a:4:{i:0;s:2:"75";i:1;s:3:"572";i:2;s:3:"259";i:3;s:3:"756";}}i:203;a:4:{s:1:"C";s:3:"203";s:2:"WX";s:3:"333";s:1:"N";s:7:"cedilla";s:1:"B";a:4:{i:0;s:2:"45";i:1;s:4:"-225";i:2;s:3:"259";i:3;s:1:"0";}}s:7:"cedilla";a:4:{s:1:"C";s:3:"203";s:2:"WX";s:3:"333";s:1:"N";s:7:"cedilla";s:1:"B";a:4:{i:0;s:2:"45";i:1;s:4:"-225";i:2;s:3:"259";i:3;s:1:"0";}}i:205;a:4:{s:1:"C";s:3:"205";s:2:"WX";s:3:"333";s:1:"N";s:12:"hungarumlaut";s:1:"B";a:4:{i:0;s:2:"31";i:1;s:3:"593";i:2;s:3:"409";i:3;s:3:"734";}}s:12:"hungarumlaut";a:4:{s:1:"C";s:3:"205";s:2:"WX";s:3:"333";s:1:"N";s:12:"hungarumlaut";s:1:"B";a:4:{i:0;s:2:"31";i:1;s:3:"593";i:2;s:3:"409";i:3;s:3:"734";}}i:206;a:4:{s:1:"C";s:3:"206";s:2:"WX";s:3:"333";s:1:"N";s:6:"ogonek";s:1:"B";a:4:{i:0;s:2:"73";i:1;s:4:"-225";i:2;s:3:"287";i:3;s:1:"0";}}s:6:"ogonek";a:4:{s:1:"C";s:3:"206";s:2:"WX";s:3:"333";s:1:"N";s:6:"ogonek";s:1:"B";a:4:{i:0;s:2:"73";i:1;s:4:"-225";i:2;s:3:"287";i:3;s:1:"0";}}i:207;a:4:{s:1:"C";s:3:"207";s:2:"WX";s:3:"333";s:1:"N";s:5:"caron";s:1:"B";a:4:{i:0;s:2:"21";i:1;s:3:"593";i:2;s:3:"312";i:3;s:3:"734";}}s:5:"caron";a:4:{s:1:"C";s:3:"207";s:2:"WX";s:3:"333";s:1:"N";s:5:"caron";s:1:"B";a:4:{i:0;s:2:"21";i:1;s:3:"593";i:2;s:3:"312";i:3;s:3:"734";}}i:208;a:4:{s:1:"C";s:3:"208";s:2:"WX";s:4:"1000";s:1:"N";s:6:"emdash";s:1:"B";a:4:{i:0;s:1:"0";i:1;s:3:"240";i:2;s:4:"1000";i:3;s:3:"313";}}s:6:"emdash";a:4:{s:1:"C";s:3:"208";s:2:"WX";s:4:"1000";s:1:"N";s:6:"emdash";s:1:"B";a:4:{i:0;s:1:"0";i:1;s:3:"240";i:2;s:4:"1000";i:3;s:3:"313";}}i:225;a:4:{s:1:"C";s:3:"225";s:2:"WX";s:4:"1000";s:1:"N";s:2:"AE";s:1:"B";a:4:{i:0;s:1:"8";i:1;s:1:"0";i:2;s:3:"951";i:3;s:3:"718";}}s:2:"AE";a:4:{s:1:"C";s:3:"225";s:2:"WX";s:4:"1000";s:1:"N";s:2:"AE";s:1:"B";a:4:{i:0;s:1:"8";i:1;s:1:"0";i:2;s:3:"951";i:3;s:3:"718";}}i:227;a:4:{s:1:"C";s:3:"227";s:2:"WX";s:3:"370";s:1:"N";s:11:"ordfeminine";s:1:"B";a:4:{i:0;s:2:"24";i:1;s:3:"405";i:2;s:3:"346";i:3;s:3:"737";}}s:11:"ordfeminine";a:4:{s:1:"C";s:3:"227";s:2:"WX";s:3:"370";s:1:"N";s:11:"ordfeminine";s:1:"B";a:4:{i:0;s:2:"24";i:1;s:3:"405";i:2;s:3:"346";i:3;s:3:"737";}}i:232;a:4:{s:1:"C";s:3:"232";s:2:"WX";s:3:"556";s:1:"N";s:6:"Lslash";s:1:"B";a:4:{i:0;s:3:"-20";i:1;s:1:"0";i:2;s:3:"537";i:3;s:3:"718";}}s:6:"Lslash";a:4:{s:1:"C";s:3:"232";s:2:"WX";s:3:"556";s:1:"N";s:6:"Lslash";s:1:"B";a:4:{i:0;s:3:"-20";i:1;s:1:"0";i:2;s:3:"537";i:3;s:3:"718";}}i:233;a:4:{s:1:"C";s:3:"233";s:2:"WX";s:3:"778";s:1:"N";s:6:"Oslash";s:1:"B";a:4:{i:0;s:2:"39";i:1;s:3:"-19";i:2;s:3:"740";i:3;s:3:"737";}}s:6:"Oslash";a:4:{s:1:"C";s:3:"233";s:2:"WX";s:3:"778";s:1:"N";s:6:"Oslash";s:1:"B";a:4:{i:0;s:2:"39";i:1;s:3:"-19";i:2;s:3:"740";i:3;s:3:"737";}}i:234;a:4:{s:1:"C";s:3:"234";s:2:"WX";s:4:"1000";s:1:"N";s:2:"OE";s:1:"B";a:4:{i:0;s:2:"36";i:1;s:3:"-19";i:2;s:3:"965";i:3;s:3:"737";}}s:2:"OE";a:4:{s:1:"C";s:3:"234";s:2:"WX";s:4:"1000";s:1:"N";s:2:"OE";s:1:"B";a:4:{i:0;s:2:"36";i:1;s:3:"-19";i:2;s:3:"965";i:3;s:3:"737";}}i:235;a:4:{s:1:"C";s:3:"235";s:2:"WX";s:3:"365";s:1:"N";s:12:"ordmasculine";s:1:"B";a:4:{i:0;s:2:"25";i:1;s:3:"405";i:2;s:3:"341";i:3;s:3:"737";}}s:12:"ordmasculine";a:4:{s:1:"C";s:3:"235";s:2:"WX";s:3:"365";s:1:"N";s:12:"ordmasculine";s:1:"B";a:4:{i:0;s:2:"25";i:1;s:3:"405";i:2;s:3:"341";i:3;s:3:"737";}}i:241;a:4:{s:1:"C";s:3:"241";s:2:"WX";s:3:"889";s:1:"N";s:2:"ae";s:1:"B";a:4:{i:0;s:2:"36";i:1;s:3:"-15";i:2;s:3:"847";i:3;s:3:"538";}}s:2:"ae";a:4:{s:1:"C";s:3:"241";s:2:"WX";s:3:"889";s:1:"N";s:2:"ae";s:1:"B";a:4:{i:0;s:2:"36";i:1;s:3:"-15";i:2;s:3:"847";i:3;s:3:"538";}}i:245;a:4:{s:1:"C";s:3:"245";s:2:"WX";s:3:"278";s:1:"N";s:8:"dotlessi";s:1:"B";a:4:{i:0;s:2:"95";i:1;s:1:"0";i:2;s:3:"183";i:3;s:3:"523";}}s:8:"dotlessi";a:4:{s:1:"C";s:3:"245";s:2:"WX";s:3:"278";s:1:"N";s:8:"dotlessi";s:1:"B";a:4:{i:0;s:2:"95";i:1;s:1:"0";i:2;s:3:"183";i:3;s:3:"523";}}i:248;a:4:{s:1:"C";s:3:"248";s:2:"WX";s:3:"222";s:1:"N";s:6:"lslash";s:1:"B";a:4:{i:0;s:3:"-20";i:1;s:1:"0";i:2;s:3:"242";i:3;s:3:"718";}}s:6:"lslash";a:4:{s:1:"C";s:3:"248";s:2:"WX";s:3:"222";s:1:"N";s:6:"lslash";s:1:"B";a:4:{i:0;s:3:"-20";i:1;s:1:"0";i:2;s:3:"242";i:3;s:3:"718";}}i:249;a:4:{s:1:"C";s:3:"249";s:2:"WX";s:3:"611";s:1:"N";s:6:"oslash";s:1:"B";a:4:{i:0;s:2:"28";i:1;s:3:"-22";i:2;s:3:"537";i:3;s:3:"545";}}s:6:"oslash";a:4:{s:1:"C";s:3:"249";s:2:"WX";s:3:"611";s:1:"N";s:6:"oslash";s:1:"B";a:4:{i:0;s:2:"28";i:1;s:3:"-22";i:2;s:3:"537";i:3;s:3:"545";}}i:250;a:4:{s:1:"C";s:3:"250";s:2:"WX";s:3:"944";s:1:"N";s:2:"oe";s:1:"B";a:4:{i:0;s:2:"35";i:1;s:3:"-15";i:2;s:3:"902";i:3;s:3:"538";}}s:2:"oe";a:4:{s:1:"C";s:3:"250";s:2:"WX";s:3:"944";s:1:"N";s:2:"oe";s:1:"B";a:4:{i:0;s:2:"35";i:1;s:3:"-15";i:2;s:3:"902";i:3;s:3:"538";}}i:251;a:4:{s:1:"C";s:3:"251";s:2:"WX";s:3:"611";s:1:"N";s:10:"germandbls";s:1:"B";a:4:{i:0;s:2:"67";i:1;s:3:"-15";i:2;s:3:"571";i:3;s:3:"728";}}s:10:"germandbls";a:4:{s:1:"C";s:3:"251";s:2:"WX";s:3:"611";s:1:"N";s:10:"germandbls";s:1:"B";a:4:{i:0;s:2:"67";i:1;s:3:"-15";i:2;s:3:"571";i:3;s:3:"728";}}s:9:"Idieresis";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"278";s:1:"N";s:9:"Idieresis";s:1:"B";a:4:{i:0;s:2:"13";i:1;s:1:"0";i:2;s:3:"266";i:3;s:3:"901";}}s:6:"eacute";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"556";s:1:"N";s:6:"eacute";s:1:"B";a:4:{i:0;s:2:"40";i:1;s:3:"-15";i:2;s:3:"516";i:3;s:3:"734";}}s:6:"abreve";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"556";s:1:"N";s:6:"abreve";s:1:"B";a:4:{i:0;s:2:"36";i:1;s:3:"-15";i:2;s:3:"530";i:3;s:3:"731";}}s:13:"uhungarumlaut";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"556";s:1:"N";s:13:"uhungarumlaut";s:1:"B";a:4:{i:0;s:2:"68";i:1;s:3:"-15";i:2;s:3:"521";i:3;s:3:"734";}}s:6:"ecaron";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"556";s:1:"N";s:6:"ecaron";s:1:"B";a:4:{i:0;s:2:"40";i:1;s:3:"-15";i:2;s:3:"516";i:3;s:3:"734";}}s:9:"Ydieresis";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"667";s:1:"N";s:9:"Ydieresis";s:1:"B";a:4:{i:0;s:2:"14";i:1;s:1:"0";i:2;s:3:"653";i:3;s:3:"901";}}s:6:"divide";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"584";s:1:"N";s:6:"divide";s:1:"B";a:4:{i:0;s:2:"39";i:1;s:3:"-19";i:2;s:3:"545";i:3;s:3:"524";}}s:6:"Yacute";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"667";s:1:"N";s:6:"Yacute";s:1:"B";a:4:{i:0;s:2:"14";i:1;s:1:"0";i:2;s:3:"653";i:3;s:3:"929";}}s:11:"Acircumflex";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"667";s:1:"N";s:11:"Acircumflex";s:1:"B";a:4:{i:0;s:2:"14";i:1;s:1:"0";i:2;s:3:"654";i:3;s:3:"929";}}s:6:"aacute";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"556";s:1:"N";s:6:"aacute";s:1:"B";a:4:{i:0;s:2:"36";i:1;s:3:"-15";i:2;s:3:"530";i:3;s:3:"734";}}s:11:"Ucircumflex";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"722";s:1:"N";s:11:"Ucircumflex";s:1:"B";a:4:{i:0;s:2:"79";i:1;s:3:"-19";i:2;s:3:"644";i:3;s:3:"929";}}s:6:"yacute";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"500";s:1:"N";s:6:"yacute";s:1:"B";a:4:{i:0;s:2:"11";i:1;s:4:"-214";i:2;s:3:"489";i:3;s:3:"734";}}s:12:"scommaaccent";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"500";s:1:"N";s:12:"scommaaccent";s:1:"B";a:4:{i:0;s:2:"32";i:1;s:4:"-225";i:2;s:3:"464";i:3;s:3:"538";}}s:11:"ecircumflex";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"556";s:1:"N";s:11:"ecircumflex";s:1:"B";a:4:{i:0;s:2:"40";i:1;s:3:"-15";i:2;s:3:"516";i:3;s:3:"734";}}s:5:"Uring";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"722";s:1:"N";s:5:"Uring";s:1:"B";a:4:{i:0;s:2:"79";i:1;s:3:"-19";i:2;s:3:"644";i:3;s:3:"931";}}s:9:"Udieresis";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"722";s:1:"N";s:9:"Udieresis";s:1:"B";a:4:{i:0;s:2:"79";i:1;s:3:"-19";i:2;s:3:"644";i:3;s:3:"901";}}s:7:"aogonek";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"556";s:1:"N";s:7:"aogonek";s:1:"B";a:4:{i:0;s:2:"36";i:1;s:4:"-220";i:2;s:3:"547";i:3;s:3:"538";}}s:6:"Uacute";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"722";s:1:"N";s:6:"Uacute";s:1:"B";a:4:{i:0;s:2:"79";i:1;s:3:"-19";i:2;s:3:"644";i:3;s:3:"929";}}s:7:"uogonek";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"556";s:1:"N";s:7:"uogonek";s:1:"B";a:4:{i:0;s:2:"68";i:1;s:4:"-225";i:2;s:3:"519";i:3;s:3:"523";}}s:9:"Edieresis";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"667";s:1:"N";s:9:"Edieresis";s:1:"B";a:4:{i:0;s:2:"86";i:1;s:1:"0";i:2;s:3:"616";i:3;s:3:"901";}}s:6:"Dcroat";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"722";s:1:"N";s:6:"Dcroat";s:1:"B";a:4:{i:0;s:1:"0";i:1;s:1:"0";i:2;s:3:"674";i:3;s:3:"718";}}s:11:"commaaccent";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"250";s:1:"N";s:11:"commaaccent";s:1:"B";a:4:{i:0;s:2:"87";i:1;s:4:"-225";i:2;s:3:"181";i:3;s:3:"-40";}}s:9:"copyright";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"737";s:1:"N";s:9:"copyright";s:1:"B";a:4:{i:0;s:3:"-14";i:1;s:3:"-19";i:2;s:3:"752";i:3;s:3:"737";}}s:7:"Emacron";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"667";s:1:"N";s:7:"Emacron";s:1:"B";a:4:{i:0;s:2:"86";i:1;s:1:"0";i:2;s:3:"616";i:3;s:3:"879";}}s:6:"ccaron";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"500";s:1:"N";s:6:"ccaron";s:1:"B";a:4:{i:0;s:2:"30";i:1;s:3:"-15";i:2;s:3:"477";i:3;s:3:"734";}}s:5:"aring";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"556";s:1:"N";s:5:"aring";s:1:"B";a:4:{i:0;s:2:"36";i:1;s:3:"-15";i:2;s:3:"530";i:3;s:3:"756";}}s:12:"Ncommaaccent";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"722";s:1:"N";s:12:"Ncommaaccent";s:1:"B";a:4:{i:0;s:2:"76";i:1;s:4:"-225";i:2;s:3:"646";i:3;s:3:"718";}}s:6:"lacute";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"222";s:1:"N";s:6:"lacute";s:1:"B";a:4:{i:0;s:2:"67";i:1;s:1:"0";i:2;s:3:"264";i:3;s:3:"929";}}s:6:"agrave";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"556";s:1:"N";s:6:"agrave";s:1:"B";a:4:{i:0;s:2:"36";i:1;s:3:"-15";i:2;s:3:"530";i:3;s:3:"734";}}s:12:"Tcommaaccent";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"611";s:1:"N";s:12:"Tcommaaccent";s:1:"B";a:4:{i:0;s:2:"14";i:1;s:4:"-225";i:2;s:3:"597";i:3;s:3:"718";}}s:6:"Cacute";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"722";s:1:"N";s:6:"Cacute";s:1:"B";a:4:{i:0;s:2:"44";i:1;s:3:"-19";i:2;s:3:"681";i:3;s:3:"929";}}s:6:"atilde";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"556";s:1:"N";s:6:"atilde";s:1:"B";a:4:{i:0;s:2:"36";i:1;s:3:"-15";i:2;s:3:"530";i:3;s:3:"722";}}s:10:"Edotaccent";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"667";s:1:"N";s:10:"Edotaccent";s:1:"B";a:4:{i:0;s:2:"86";i:1;s:1:"0";i:2;s:3:"616";i:3;s:3:"901";}}s:6:"scaron";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"500";s:1:"N";s:6:"scaron";s:1:"B";a:4:{i:0;s:2:"32";i:1;s:3:"-15";i:2;s:3:"464";i:3;s:3:"734";}}s:8:"scedilla";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"500";s:1:"N";s:8:"scedilla";s:1:"B";a:4:{i:0;s:2:"32";i:1;s:4:"-225";i:2;s:3:"464";i:3;s:3:"538";}}s:6:"iacute";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"278";s:1:"N";s:6:"iacute";s:1:"B";a:4:{i:0;s:2:"95";i:1;s:1:"0";i:2;s:3:"292";i:3;s:3:"734";}}s:7:"lozenge";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"471";s:1:"N";s:7:"lozenge";s:1:"B";a:4:{i:0;s:2:"10";i:1;s:1:"0";i:2;s:3:"462";i:3;s:3:"728";}}s:6:"Rcaron";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"722";s:1:"N";s:6:"Rcaron";s:1:"B";a:4:{i:0;s:2:"88";i:1;s:1:"0";i:2;s:3:"684";i:3;s:3:"929";}}s:12:"Gcommaaccent";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"778";s:1:"N";s:12:"Gcommaaccent";s:1:"B";a:4:{i:0;s:2:"48";i:1;s:4:"-225";i:2;s:3:"704";i:3;s:3:"737";}}s:11:"ucircumflex";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"556";s:1:"N";s:11:"ucircumflex";s:1:"B";a:4:{i:0;s:2:"68";i:1;s:3:"-15";i:2;s:3:"489";i:3;s:3:"734";}}s:11:"acircumflex";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"556";s:1:"N";s:11:"acircumflex";s:1:"B";a:4:{i:0;s:2:"36";i:1;s:3:"-15";i:2;s:3:"530";i:3;s:3:"734";}}s:7:"Amacron";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"667";s:1:"N";s:7:"Amacron";s:1:"B";a:4:{i:0;s:2:"14";i:1;s:1:"0";i:2;s:3:"654";i:3;s:3:"879";}}s:6:"rcaron";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"333";s:1:"N";s:6:"rcaron";s:1:"B";a:4:{i:0;s:2:"61";i:1;s:1:"0";i:2;s:3:"352";i:3;s:3:"734";}}s:8:"ccedilla";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"500";s:1:"N";s:8:"ccedilla";s:1:"B";a:4:{i:0;s:2:"30";i:1;s:4:"-225";i:2;s:3:"477";i:3;s:3:"538";}}s:10:"Zdotaccent";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"611";s:1:"N";s:10:"Zdotaccent";s:1:"B";a:4:{i:0;s:2:"23";i:1;s:1:"0";i:2;s:3:"588";i:3;s:3:"901";}}s:5:"Thorn";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"667";s:1:"N";s:5:"Thorn";s:1:"B";a:4:{i:0;s:2:"86";i:1;s:1:"0";i:2;s:3:"622";i:3;s:3:"718";}}s:7:"Omacron";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"778";s:1:"N";s:7:"Omacron";s:1:"B";a:4:{i:0;s:2:"39";i:1;s:3:"-19";i:2;s:3:"739";i:3;s:3:"879";}}s:6:"Racute";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"722";s:1:"N";s:6:"Racute";s:1:"B";a:4:{i:0;s:2:"88";i:1;s:1:"0";i:2;s:3:"684";i:3;s:3:"929";}}s:6:"Sacute";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"667";s:1:"N";s:6:"Sacute";s:1:"B";a:4:{i:0;s:2:"49";i:1;s:3:"-19";i:2;s:3:"620";i:3;s:3:"929";}}s:6:"dcaron";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"643";s:1:"N";s:6:"dcaron";s:1:"B";a:4:{i:0;s:2:"35";i:1;s:3:"-15";i:2;s:3:"655";i:3;s:3:"718";}}s:7:"Umacron";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"722";s:1:"N";s:7:"Umacron";s:1:"B";a:4:{i:0;s:2:"79";i:1;s:3:"-19";i:2;s:3:"644";i:3;s:3:"879";}}s:5:"uring";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"556";s:1:"N";s:5:"uring";s:1:"B";a:4:{i:0;s:2:"68";i:1;s:3:"-15";i:2;s:3:"489";i:3;s:3:"756";}}s:13:"threesuperior";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"333";s:1:"N";s:13:"threesuperior";s:1:"B";a:4:{i:0;s:1:"5";i:1;s:3:"270";i:2;s:3:"325";i:3;s:3:"703";}}s:6:"Ograve";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"778";s:1:"N";s:6:"Ograve";s:1:"B";a:4:{i:0;s:2:"39";i:1;s:3:"-19";i:2;s:3:"739";i:3;s:3:"929";}}s:6:"Agrave";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"667";s:1:"N";s:6:"Agrave";s:1:"B";a:4:{i:0;s:2:"14";i:1;s:1:"0";i:2;s:3:"654";i:3;s:3:"929";}}s:6:"Abreve";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"667";s:1:"N";s:6:"Abreve";s:1:"B";a:4:{i:0;s:2:"14";i:1;s:1:"0";i:2;s:3:"654";i:3;s:3:"926";}}s:8:"multiply";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"584";s:1:"N";s:8:"multiply";s:1:"B";a:4:{i:0;s:2:"39";i:1;s:1:"0";i:2;s:3:"545";i:3;s:3:"506";}}s:6:"uacute";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"556";s:1:"N";s:6:"uacute";s:1:"B";a:4:{i:0;s:2:"68";i:1;s:3:"-15";i:2;s:3:"489";i:3;s:3:"734";}}s:6:"Tcaron";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"611";s:1:"N";s:6:"Tcaron";s:1:"B";a:4:{i:0;s:2:"14";i:1;s:1:"0";i:2;s:3:"597";i:3;s:3:"929";}}s:11:"partialdiff";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"476";s:1:"N";s:11:"partialdiff";s:1:"B";a:4:{i:0;s:2:"13";i:1;s:3:"-38";i:2;s:3:"463";i:3;s:3:"714";}}s:9:"ydieresis";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"500";s:1:"N";s:9:"ydieresis";s:1:"B";a:4:{i:0;s:2:"11";i:1;s:4:"-214";i:2;s:3:"489";i:3;s:3:"706";}}s:6:"Nacute";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"722";s:1:"N";s:6:"Nacute";s:1:"B";a:4:{i:0;s:2:"76";i:1;s:1:"0";i:2;s:3:"646";i:3;s:3:"929";}}s:11:"icircumflex";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"278";s:1:"N";s:11:"icircumflex";s:1:"B";a:4:{i:0;s:2:"-6";i:1;s:1:"0";i:2;s:3:"285";i:3;s:3:"734";}}s:11:"Ecircumflex";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"667";s:1:"N";s:11:"Ecircumflex";s:1:"B";a:4:{i:0;s:2:"86";i:1;s:1:"0";i:2;s:3:"616";i:3;s:3:"929";}}s:9:"adieresis";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"556";s:1:"N";s:9:"adieresis";s:1:"B";a:4:{i:0;s:2:"36";i:1;s:3:"-15";i:2;s:3:"530";i:3;s:3:"706";}}s:9:"edieresis";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"556";s:1:"N";s:9:"edieresis";s:1:"B";a:4:{i:0;s:2:"40";i:1;s:3:"-15";i:2;s:3:"516";i:3;s:3:"706";}}s:6:"cacute";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"500";s:1:"N";s:6:"cacute";s:1:"B";a:4:{i:0;s:2:"30";i:1;s:3:"-15";i:2;s:3:"477";i:3;s:3:"734";}}s:6:"nacute";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"556";s:1:"N";s:6:"nacute";s:1:"B";a:4:{i:0;s:2:"65";i:1;s:1:"0";i:2;s:3:"491";i:3;s:3:"734";}}s:7:"umacron";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"556";s:1:"N";s:7:"umacron";s:1:"B";a:4:{i:0;s:2:"68";i:1;s:3:"-15";i:2;s:3:"489";i:3;s:3:"684";}}s:6:"Ncaron";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"722";s:1:"N";s:6:"Ncaron";s:1:"B";a:4:{i:0;s:2:"76";i:1;s:1:"0";i:2;s:3:"646";i:3;s:3:"929";}}s:6:"Iacute";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"278";s:1:"N";s:6:"Iacute";s:1:"B";a:4:{i:0;s:2:"91";i:1;s:1:"0";i:2;s:3:"292";i:3;s:3:"929";}}s:9:"plusminus";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"584";s:1:"N";s:9:"plusminus";s:1:"B";a:4:{i:0;s:2:"39";i:1;s:1:"0";i:2;s:3:"545";i:3;s:3:"506";}}s:9:"brokenbar";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"260";s:1:"N";s:9:"brokenbar";s:1:"B";a:4:{i:0;s:2:"94";i:1;s:4:"-150";i:2;s:3:"167";i:3;s:3:"700";}}s:10:"registered";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"737";s:1:"N";s:10:"registered";s:1:"B";a:4:{i:0;s:3:"-14";i:1;s:3:"-19";i:2;s:3:"752";i:3;s:3:"737";}}s:6:"Gbreve";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"778";s:1:"N";s:6:"Gbreve";s:1:"B";a:4:{i:0;s:2:"48";i:1;s:3:"-19";i:2;s:3:"704";i:3;s:3:"926";}}s:10:"Idotaccent";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"278";s:1:"N";s:10:"Idotaccent";s:1:"B";a:4:{i:0;s:2:"91";i:1;s:1:"0";i:2;s:3:"188";i:3;s:3:"901";}}s:9:"summation";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:9:"summation";s:1:"B";a:4:{i:0;s:2:"15";i:1;s:3:"-10";i:2;s:3:"586";i:3;s:3:"706";}}s:6:"Egrave";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"667";s:1:"N";s:6:"Egrave";s:1:"B";a:4:{i:0;s:2:"86";i:1;s:1:"0";i:2;s:3:"616";i:3;s:3:"929";}}s:6:"racute";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"333";s:1:"N";s:6:"racute";s:1:"B";a:4:{i:0;s:2:"77";i:1;s:1:"0";i:2;s:3:"332";i:3;s:3:"734";}}s:7:"omacron";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"556";s:1:"N";s:7:"omacron";s:1:"B";a:4:{i:0;s:2:"35";i:1;s:3:"-14";i:2;s:3:"521";i:3;s:3:"684";}}s:6:"Zacute";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"611";s:1:"N";s:6:"Zacute";s:1:"B";a:4:{i:0;s:2:"23";i:1;s:1:"0";i:2;s:3:"588";i:3;s:3:"929";}}s:6:"Zcaron";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"611";s:1:"N";s:6:"Zcaron";s:1:"B";a:4:{i:0;s:2:"23";i:1;s:1:"0";i:2;s:3:"588";i:3;s:3:"929";}}s:12:"greaterequal";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"549";s:1:"N";s:12:"greaterequal";s:1:"B";a:4:{i:0;s:2:"26";i:1;s:1:"0";i:2;s:3:"523";i:3;s:3:"674";}}s:3:"Eth";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"722";s:1:"N";s:3:"Eth";s:1:"B";a:4:{i:0;s:1:"0";i:1;s:1:"0";i:2;s:3:"674";i:3;s:3:"718";}}s:8:"Ccedilla";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"722";s:1:"N";s:8:"Ccedilla";s:1:"B";a:4:{i:0;s:2:"44";i:1;s:4:"-225";i:2;s:3:"681";i:3;s:3:"737";}}s:12:"lcommaaccent";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"222";s:1:"N";s:12:"lcommaaccent";s:1:"B";a:4:{i:0;s:2:"67";i:1;s:4:"-225";i:2;s:3:"167";i:3;s:3:"718";}}s:6:"tcaron";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"317";s:1:"N";s:6:"tcaron";s:1:"B";a:4:{i:0;s:2:"14";i:1;s:2:"-7";i:2;s:3:"329";i:3;s:3:"808";}}s:7:"eogonek";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"556";s:1:"N";s:7:"eogonek";s:1:"B";a:4:{i:0;s:2:"40";i:1;s:4:"-225";i:2;s:3:"516";i:3;s:3:"538";}}s:7:"Uogonek";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"722";s:1:"N";s:7:"Uogonek";s:1:"B";a:4:{i:0;s:2:"79";i:1;s:4:"-225";i:2;s:3:"644";i:3;s:3:"718";}}s:6:"Aacute";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"667";s:1:"N";s:6:"Aacute";s:1:"B";a:4:{i:0;s:2:"14";i:1;s:1:"0";i:2;s:3:"654";i:3;s:3:"929";}}s:9:"Adieresis";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"667";s:1:"N";s:9:"Adieresis";s:1:"B";a:4:{i:0;s:2:"14";i:1;s:1:"0";i:2;s:3:"654";i:3;s:3:"901";}}s:6:"egrave";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"556";s:1:"N";s:6:"egrave";s:1:"B";a:4:{i:0;s:2:"40";i:1;s:3:"-15";i:2;s:3:"516";i:3;s:3:"734";}}s:6:"zacute";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"500";s:1:"N";s:6:"zacute";s:1:"B";a:4:{i:0;s:2:"31";i:1;s:1:"0";i:2;s:3:"469";i:3;s:3:"734";}}s:7:"iogonek";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"222";s:1:"N";s:7:"iogonek";s:1:"B";a:4:{i:0;s:3:"-31";i:1;s:4:"-225";i:2;s:3:"183";i:3;s:3:"718";}}s:6:"Oacute";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"778";s:1:"N";s:6:"Oacute";s:1:"B";a:4:{i:0;s:2:"39";i:1;s:3:"-19";i:2;s:3:"739";i:3;s:3:"929";}}s:6:"oacute";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"556";s:1:"N";s:6:"oacute";s:1:"B";a:4:{i:0;s:2:"35";i:1;s:3:"-14";i:2;s:3:"521";i:3;s:3:"734";}}s:7:"amacron";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"556";s:1:"N";s:7:"amacron";s:1:"B";a:4:{i:0;s:2:"36";i:1;s:3:"-15";i:2;s:3:"530";i:3;s:3:"684";}}s:6:"sacute";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"500";s:1:"N";s:6:"sacute";s:1:"B";a:4:{i:0;s:2:"32";i:1;s:3:"-15";i:2;s:3:"464";i:3;s:3:"734";}}s:9:"idieresis";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"278";s:1:"N";s:9:"idieresis";s:1:"B";a:4:{i:0;s:2:"13";i:1;s:1:"0";i:2;s:3:"266";i:3;s:3:"706";}}s:11:"Ocircumflex";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"778";s:1:"N";s:11:"Ocircumflex";s:1:"B";a:4:{i:0;s:2:"39";i:1;s:3:"-19";i:2;s:3:"739";i:3;s:3:"929";}}s:6:"Ugrave";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"722";s:1:"N";s:6:"Ugrave";s:1:"B";a:4:{i:0;s:2:"79";i:1;s:3:"-19";i:2;s:3:"644";i:3;s:3:"929";}}s:5:"Delta";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"612";s:1:"N";s:5:"Delta";s:1:"B";a:4:{i:0;s:1:"6";i:1;s:1:"0";i:2;s:3:"608";i:3;s:3:"688";}}s:5:"thorn";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"556";s:1:"N";s:5:"thorn";s:1:"B";a:4:{i:0;s:2:"58";i:1;s:4:"-207";i:2;s:3:"517";i:3;s:3:"718";}}s:11:"twosuperior";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"333";s:1:"N";s:11:"twosuperior";s:1:"B";a:4:{i:0;s:1:"4";i:1;s:3:"281";i:2;s:3:"323";i:3;s:3:"703";}}s:9:"Odieresis";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"778";s:1:"N";s:9:"Odieresis";s:1:"B";a:4:{i:0;s:2:"39";i:1;s:3:"-19";i:2;s:3:"739";i:3;s:3:"901";}}s:2:"mu";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"556";s:1:"N";s:2:"mu";s:1:"B";a:4:{i:0;s:2:"68";i:1;s:4:"-207";i:2;s:3:"489";i:3;s:3:"523";}}s:6:"igrave";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"278";s:1:"N";s:6:"igrave";s:1:"B";a:4:{i:0;s:3:"-13";i:1;s:1:"0";i:2;s:3:"184";i:3;s:3:"734";}}s:13:"ohungarumlaut";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"556";s:1:"N";s:13:"ohungarumlaut";s:1:"B";a:4:{i:0;s:2:"35";i:1;s:3:"-14";i:2;s:3:"521";i:3;s:3:"734";}}s:7:"Eogonek";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"667";s:1:"N";s:7:"Eogonek";s:1:"B";a:4:{i:0;s:2:"86";i:1;s:4:"-220";i:2;s:3:"633";i:3;s:3:"718";}}s:6:"dcroat";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"556";s:1:"N";s:6:"dcroat";s:1:"B";a:4:{i:0;s:2:"35";i:1;s:3:"-15";i:2;s:3:"550";i:3;s:3:"718";}}s:13:"threequarters";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"834";s:1:"N";s:13:"threequarters";s:1:"B";a:4:{i:0;s:2:"45";i:1;s:3:"-19";i:2;s:3:"810";i:3;s:3:"703";}}s:8:"Scedilla";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"667";s:1:"N";s:8:"Scedilla";s:1:"B";a:4:{i:0;s:2:"49";i:1;s:4:"-225";i:2;s:3:"620";i:3;s:3:"737";}}s:6:"lcaron";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"299";s:1:"N";s:6:"lcaron";s:1:"B";a:4:{i:0;s:2:"67";i:1;s:1:"0";i:2;s:3:"311";i:3;s:3:"718";}}s:12:"Kcommaaccent";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"667";s:1:"N";s:12:"Kcommaaccent";s:1:"B";a:4:{i:0;s:2:"76";i:1;s:4:"-225";i:2;s:3:"663";i:3;s:3:"718";}}s:6:"Lacute";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"556";s:1:"N";s:6:"Lacute";s:1:"B";a:4:{i:0;s:2:"76";i:1;s:1:"0";i:2;s:3:"537";i:3;s:3:"929";}}s:9:"trademark";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:4:"1000";s:1:"N";s:9:"trademark";s:1:"B";a:4:{i:0;s:2:"46";i:1;s:3:"306";i:2;s:3:"903";i:3;s:3:"718";}}s:10:"edotaccent";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"556";s:1:"N";s:10:"edotaccent";s:1:"B";a:4:{i:0;s:2:"40";i:1;s:3:"-15";i:2;s:3:"516";i:3;s:3:"706";}}s:6:"Igrave";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"278";s:1:"N";s:6:"Igrave";s:1:"B";a:4:{i:0;s:3:"-13";i:1;s:1:"0";i:2;s:3:"188";i:3;s:3:"929";}}s:7:"Imacron";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"278";s:1:"N";s:7:"Imacron";s:1:"B";a:4:{i:0;s:3:"-17";i:1;s:1:"0";i:2;s:3:"296";i:3;s:3:"879";}}s:6:"Lcaron";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"556";s:1:"N";s:6:"Lcaron";s:1:"B";a:4:{i:0;s:2:"76";i:1;s:1:"0";i:2;s:3:"537";i:3;s:3:"718";}}s:7:"onehalf";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"834";s:1:"N";s:7:"onehalf";s:1:"B";a:4:{i:0;s:2:"43";i:1;s:3:"-19";i:2;s:3:"773";i:3;s:3:"703";}}s:9:"lessequal";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"549";s:1:"N";s:9:"lessequal";s:1:"B";a:4:{i:0;s:2:"26";i:1;s:1:"0";i:2;s:3:"523";i:3;s:3:"674";}}s:11:"ocircumflex";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"556";s:1:"N";s:11:"ocircumflex";s:1:"B";a:4:{i:0;s:2:"35";i:1;s:3:"-14";i:2;s:3:"521";i:3;s:3:"734";}}s:6:"ntilde";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"556";s:1:"N";s:6:"ntilde";s:1:"B";a:4:{i:0;s:2:"65";i:1;s:1:"0";i:2;s:3:"491";i:3;s:3:"722";}}s:13:"Uhungarumlaut";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"722";s:1:"N";s:13:"Uhungarumlaut";s:1:"B";a:4:{i:0;s:2:"79";i:1;s:3:"-19";i:2;s:3:"644";i:3;s:3:"929";}}s:6:"Eacute";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"667";s:1:"N";s:6:"Eacute";s:1:"B";a:4:{i:0;s:2:"86";i:1;s:1:"0";i:2;s:3:"616";i:3;s:3:"929";}}s:7:"emacron";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"556";s:1:"N";s:7:"emacron";s:1:"B";a:4:{i:0;s:2:"40";i:1;s:3:"-15";i:2;s:3:"516";i:3;s:3:"684";}}s:6:"gbreve";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"556";s:1:"N";s:6:"gbreve";s:1:"B";a:4:{i:0;s:2:"40";i:1;s:4:"-220";i:2;s:3:"499";i:3;s:3:"731";}}s:10:"onequarter";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"834";s:1:"N";s:10:"onequarter";s:1:"B";a:4:{i:0;s:2:"73";i:1;s:3:"-19";i:2;s:3:"756";i:3;s:3:"703";}}s:6:"Scaron";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"667";s:1:"N";s:6:"Scaron";s:1:"B";a:4:{i:0;s:2:"49";i:1;s:3:"-19";i:2;s:3:"620";i:3;s:3:"929";}}s:12:"Scommaaccent";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"667";s:1:"N";s:12:"Scommaaccent";s:1:"B";a:4:{i:0;s:2:"49";i:1;s:4:"-225";i:2;s:3:"620";i:3;s:3:"737";}}s:13:"Ohungarumlaut";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"778";s:1:"N";s:13:"Ohungarumlaut";s:1:"B";a:4:{i:0;s:2:"39";i:1;s:3:"-19";i:2;s:3:"739";i:3;s:3:"929";}}s:6:"degree";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"400";s:1:"N";s:6:"degree";s:1:"B";a:4:{i:0;s:2:"54";i:1;s:3:"411";i:2;s:3:"346";i:3;s:3:"703";}}s:6:"ograve";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"556";s:1:"N";s:6:"ograve";s:1:"B";a:4:{i:0;s:2:"35";i:1;s:3:"-14";i:2;s:3:"521";i:3;s:3:"734";}}s:6:"Ccaron";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"722";s:1:"N";s:6:"Ccaron";s:1:"B";a:4:{i:0;s:2:"44";i:1;s:3:"-19";i:2;s:3:"681";i:3;s:3:"929";}}s:6:"ugrave";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"556";s:1:"N";s:6:"ugrave";s:1:"B";a:4:{i:0;s:2:"68";i:1;s:3:"-15";i:2;s:3:"489";i:3;s:3:"734";}}s:7:"radical";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"453";s:1:"N";s:7:"radical";s:1:"B";a:4:{i:0;s:2:"-4";i:1;s:3:"-80";i:2;s:3:"458";i:3;s:3:"762";}}s:6:"Dcaron";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"722";s:1:"N";s:6:"Dcaron";s:1:"B";a:4:{i:0;s:2:"81";i:1;s:1:"0";i:2;s:3:"674";i:3;s:3:"929";}}s:12:"rcommaaccent";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"333";s:1:"N";s:12:"rcommaaccent";s:1:"B";a:4:{i:0;s:2:"77";i:1;s:4:"-225";i:2;s:3:"332";i:3;s:3:"538";}}s:6:"Ntilde";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"722";s:1:"N";s:6:"Ntilde";s:1:"B";a:4:{i:0;s:2:"76";i:1;s:1:"0";i:2;s:3:"646";i:3;s:3:"917";}}s:6:"otilde";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"556";s:1:"N";s:6:"otilde";s:1:"B";a:4:{i:0;s:2:"35";i:1;s:3:"-14";i:2;s:3:"521";i:3;s:3:"722";}}s:12:"Rcommaaccent";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"722";s:1:"N";s:12:"Rcommaaccent";s:1:"B";a:4:{i:0;s:2:"88";i:1;s:4:"-225";i:2;s:3:"684";i:3;s:3:"718";}}s:12:"Lcommaaccent";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"556";s:1:"N";s:12:"Lcommaaccent";s:1:"B";a:4:{i:0;s:2:"76";i:1;s:4:"-225";i:2;s:3:"537";i:3;s:3:"718";}}s:6:"Atilde";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"667";s:1:"N";s:6:"Atilde";s:1:"B";a:4:{i:0;s:2:"14";i:1;s:1:"0";i:2;s:3:"654";i:3;s:3:"917";}}s:7:"Aogonek";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"667";s:1:"N";s:7:"Aogonek";s:1:"B";a:4:{i:0;s:2:"14";i:1;s:4:"-225";i:2;s:3:"654";i:3;s:3:"718";}}s:5:"Aring";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"667";s:1:"N";s:5:"Aring";s:1:"B";a:4:{i:0;s:2:"14";i:1;s:1:"0";i:2;s:3:"654";i:3;s:3:"931";}}s:6:"Otilde";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"778";s:1:"N";s:6:"Otilde";s:1:"B";a:4:{i:0;s:2:"39";i:1;s:3:"-19";i:2;s:3:"739";i:3;s:3:"917";}}s:10:"zdotaccent";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"500";s:1:"N";s:10:"zdotaccent";s:1:"B";a:4:{i:0;s:2:"31";i:1;s:1:"0";i:2;s:3:"469";i:3;s:3:"706";}}s:6:"Ecaron";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"667";s:1:"N";s:6:"Ecaron";s:1:"B";a:4:{i:0;s:2:"86";i:1;s:1:"0";i:2;s:3:"616";i:3;s:3:"929";}}s:7:"Iogonek";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"278";s:1:"N";s:7:"Iogonek";s:1:"B";a:4:{i:0;s:2:"-3";i:1;s:4:"-225";i:2;s:3:"211";i:3;s:3:"718";}}s:12:"kcommaaccent";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"500";s:1:"N";s:12:"kcommaaccent";s:1:"B";a:4:{i:0;s:2:"67";i:1;s:4:"-225";i:2;s:3:"501";i:3;s:3:"718";}}s:5:"minus";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"584";s:1:"N";s:5:"minus";s:1:"B";a:4:{i:0;s:2:"39";i:1;s:3:"216";i:2;s:3:"545";i:3;s:3:"289";}}s:11:"Icircumflex";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"278";s:1:"N";s:11:"Icircumflex";s:1:"B";a:4:{i:0;s:2:"-6";i:1;s:1:"0";i:2;s:3:"285";i:3;s:3:"929";}}s:6:"ncaron";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"556";s:1:"N";s:6:"ncaron";s:1:"B";a:4:{i:0;s:2:"65";i:1;s:1:"0";i:2;s:3:"491";i:3;s:3:"734";}}s:12:"tcommaaccent";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"278";s:1:"N";s:12:"tcommaaccent";s:1:"B";a:4:{i:0;s:2:"14";i:1;s:4:"-225";i:2;s:3:"257";i:3;s:3:"669";}}s:10:"logicalnot";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"584";s:1:"N";s:10:"logicalnot";s:1:"B";a:4:{i:0;s:2:"39";i:1;s:3:"108";i:2;s:3:"545";i:3;s:3:"390";}}s:9:"odieresis";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"556";s:1:"N";s:9:"odieresis";s:1:"B";a:4:{i:0;s:2:"35";i:1;s:3:"-14";i:2;s:3:"521";i:3;s:3:"706";}}s:9:"udieresis";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"556";s:1:"N";s:9:"udieresis";s:1:"B";a:4:{i:0;s:2:"68";i:1;s:3:"-15";i:2;s:3:"489";i:3;s:3:"706";}}s:8:"notequal";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"549";s:1:"N";s:8:"notequal";s:1:"B";a:4:{i:0;s:2:"12";i:1;s:3:"-35";i:2;s:3:"537";i:3;s:3:"551";}}s:12:"gcommaaccent";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"556";s:1:"N";s:12:"gcommaaccent";s:1:"B";a:4:{i:0;s:2:"40";i:1;s:4:"-220";i:2;s:3:"499";i:3;s:3:"822";}}s:3:"eth";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"556";s:1:"N";s:3:"eth";s:1:"B";a:4:{i:0;s:2:"35";i:1;s:3:"-15";i:2;s:3:"522";i:3;s:3:"737";}}s:6:"zcaron";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"500";s:1:"N";s:6:"zcaron";s:1:"B";a:4:{i:0;s:2:"31";i:1;s:1:"0";i:2;s:3:"469";i:3;s:3:"734";}}s:12:"ncommaaccent";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"556";s:1:"N";s:12:"ncommaaccent";s:1:"B";a:4:{i:0;s:2:"65";i:1;s:4:"-225";i:2;s:3:"491";i:3;s:3:"538";}}s:11:"onesuperior";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"333";s:1:"N";s:11:"onesuperior";s:1:"B";a:4:{i:0;s:2:"43";i:1;s:3:"281";i:2;s:3:"222";i:3;s:3:"703";}}s:7:"imacron";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"278";s:1:"N";s:7:"imacron";s:1:"B";a:4:{i:0;s:1:"5";i:1;s:1:"0";i:2;s:3:"272";i:3;s:3:"684";}}s:4:"Euro";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"556";s:1:"N";s:4:"Euro";s:1:"B";a:4:{i:0;s:1:"0";i:1;s:1:"0";i:2;s:1:"0";i:3;s:1:"0";}}}s:3:"KPX";a:138:{s:1:"A";a:48:{s:1:"C";s:3:"-30";s:6:"Cacute";s:3:"-30";s:6:"Ccaron";s:3:"-30";s:8:"Ccedilla";s:3:"-30";s:1:"G";s:3:"-30";s:6:"Gbreve";s:3:"-30";s:12:"Gcommaaccent";s:3:"-30";s:1:"O";s:3:"-30";s:6:"Oacute";s:3:"-30";s:11:"Ocircumflex";s:3:"-30";s:9:"Odieresis";s:3:"-30";s:6:"Ograve";s:3:"-30";s:13:"Ohungarumlaut";s:3:"-30";s:7:"Omacron";s:3:"-30";s:6:"Oslash";s:3:"-30";s:6:"Otilde";s:3:"-30";s:1:"Q";s:3:"-30";s:1:"T";s:4:"-120";s:6:"Tcaron";s:4:"-120";s:12:"Tcommaaccent";s:4:"-120";s:1:"U";s:3:"-50";s:6:"Uacute";s:3:"-50";s:11:"Ucircumflex";s:3:"-50";s:9:"Udieresis";s:3:"-50";s:6:"Ugrave";s:3:"-50";s:13:"Uhungarumlaut";s:3:"-50";s:7:"Umacron";s:3:"-50";s:7:"Uogonek";s:3:"-50";s:5:"Uring";s:3:"-50";s:1:"V";s:3:"-70";s:1:"W";s:3:"-50";s:1:"Y";s:4:"-100";s:6:"Yacute";s:4:"-100";s:9:"Ydieresis";s:4:"-100";s:1:"u";s:3:"-30";s:6:"uacute";s:3:"-30";s:11:"ucircumflex";s:3:"-30";s:9:"udieresis";s:3:"-30";s:6:"ugrave";s:3:"-30";s:13:"uhungarumlaut";s:3:"-30";s:7:"umacron";s:3:"-30";s:7:"uogonek";s:3:"-30";s:5:"uring";s:3:"-30";s:1:"v";s:3:"-40";s:1:"w";s:3:"-40";s:1:"y";s:3:"-40";s:6:"yacute";s:3:"-40";s:9:"ydieresis";s:3:"-40";}s:6:"Aacute";a:48:{s:1:"C";s:3:"-30";s:6:"Cacute";s:3:"-30";s:6:"Ccaron";s:3:"-30";s:8:"Ccedilla";s:3:"-30";s:1:"G";s:3:"-30";s:6:"Gbreve";s:3:"-30";s:12:"Gcommaaccent";s:3:"-30";s:1:"O";s:3:"-30";s:6:"Oacute";s:3:"-30";s:11:"Ocircumflex";s:3:"-30";s:9:"Odieresis";s:3:"-30";s:6:"Ograve";s:3:"-30";s:13:"Ohungarumlaut";s:3:"-30";s:7:"Omacron";s:3:"-30";s:6:"Oslash";s:3:"-30";s:6:"Otilde";s:3:"-30";s:1:"Q";s:3:"-30";s:1:"T";s:4:"-120";s:6:"Tcaron";s:4:"-120";s:12:"Tcommaaccent";s:4:"-120";s:1:"U";s:3:"-50";s:6:"Uacute";s:3:"-50";s:11:"Ucircumflex";s:3:"-50";s:9:"Udieresis";s:3:"-50";s:6:"Ugrave";s:3:"-50";s:13:"Uhungarumlaut";s:3:"-50";s:7:"Umacron";s:3:"-50";s:7:"Uogonek";s:3:"-50";s:5:"Uring";s:3:"-50";s:1:"V";s:3:"-70";s:1:"W";s:3:"-50";s:1:"Y";s:4:"-100";s:6:"Yacute";s:4:"-100";s:9:"Ydieresis";s:4:"-100";s:1:"u";s:3:"-30";s:6:"uacute";s:3:"-30";s:11:"ucircumflex";s:3:"-30";s:9:"udieresis";s:3:"-30";s:6:"ugrave";s:3:"-30";s:13:"uhungarumlaut";s:3:"-30";s:7:"umacron";s:3:"-30";s:7:"uogonek";s:3:"-30";s:5:"uring";s:3:"-30";s:1:"v";s:3:"-40";s:1:"w";s:3:"-40";s:1:"y";s:3:"-40";s:6:"yacute";s:3:"-40";s:9:"ydieresis";s:3:"-40";}s:6:"Abreve";a:48:{s:1:"C";s:3:"-30";s:6:"Cacute";s:3:"-30";s:6:"Ccaron";s:3:"-30";s:8:"Ccedilla";s:3:"-30";s:1:"G";s:3:"-30";s:6:"Gbreve";s:3:"-30";s:12:"Gcommaaccent";s:3:"-30";s:1:"O";s:3:"-30";s:6:"Oacute";s:3:"-30";s:11:"Ocircumflex";s:3:"-30";s:9:"Odieresis";s:3:"-30";s:6:"Ograve";s:3:"-30";s:13:"Ohungarumlaut";s:3:"-30";s:7:"Omacron";s:3:"-30";s:6:"Oslash";s:3:"-30";s:6:"Otilde";s:3:"-30";s:1:"Q";s:3:"-30";s:1:"T";s:4:"-120";s:6:"Tcaron";s:4:"-120";s:12:"Tcommaaccent";s:4:"-120";s:1:"U";s:3:"-50";s:6:"Uacute";s:3:"-50";s:11:"Ucircumflex";s:3:"-50";s:9:"Udieresis";s:3:"-50";s:6:"Ugrave";s:3:"-50";s:13:"Uhungarumlaut";s:3:"-50";s:7:"Umacron";s:3:"-50";s:7:"Uogonek";s:3:"-50";s:5:"Uring";s:3:"-50";s:1:"V";s:3:"-70";s:1:"W";s:3:"-50";s:1:"Y";s:4:"-100";s:6:"Yacute";s:4:"-100";s:9:"Ydieresis";s:4:"-100";s:1:"u";s:3:"-30";s:6:"uacute";s:3:"-30";s:11:"ucircumflex";s:3:"-30";s:9:"udieresis";s:3:"-30";s:6:"ugrave";s:3:"-30";s:13:"uhungarumlaut";s:3:"-30";s:7:"umacron";s:3:"-30";s:7:"uogonek";s:3:"-30";s:5:"uring";s:3:"-30";s:1:"v";s:3:"-40";s:1:"w";s:3:"-40";s:1:"y";s:3:"-40";s:6:"yacute";s:3:"-40";s:9:"ydieresis";s:3:"-40";}s:11:"Acircumflex";a:48:{s:1:"C";s:3:"-30";s:6:"Cacute";s:3:"-30";s:6:"Ccaron";s:3:"-30";s:8:"Ccedilla";s:3:"-30";s:1:"G";s:3:"-30";s:6:"Gbreve";s:3:"-30";s:12:"Gcommaaccent";s:3:"-30";s:1:"O";s:3:"-30";s:6:"Oacute";s:3:"-30";s:11:"Ocircumflex";s:3:"-30";s:9:"Odieresis";s:3:"-30";s:6:"Ograve";s:3:"-30";s:13:"Ohungarumlaut";s:3:"-30";s:7:"Omacron";s:3:"-30";s:6:"Oslash";s:3:"-30";s:6:"Otilde";s:3:"-30";s:1:"Q";s:3:"-30";s:1:"T";s:4:"-120";s:6:"Tcaron";s:4:"-120";s:12:"Tcommaaccent";s:4:"-120";s:1:"U";s:3:"-50";s:6:"Uacute";s:3:"-50";s:11:"Ucircumflex";s:3:"-50";s:9:"Udieresis";s:3:"-50";s:6:"Ugrave";s:3:"-50";s:13:"Uhungarumlaut";s:3:"-50";s:7:"Umacron";s:3:"-50";s:7:"Uogonek";s:3:"-50";s:5:"Uring";s:3:"-50";s:1:"V";s:3:"-70";s:1:"W";s:3:"-50";s:1:"Y";s:4:"-100";s:6:"Yacute";s:4:"-100";s:9:"Ydieresis";s:4:"-100";s:1:"u";s:3:"-30";s:6:"uacute";s:3:"-30";s:11:"ucircumflex";s:3:"-30";s:9:"udieresis";s:3:"-30";s:6:"ugrave";s:3:"-30";s:13:"uhungarumlaut";s:3:"-30";s:7:"umacron";s:3:"-30";s:7:"uogonek";s:3:"-30";s:5:"uring";s:3:"-30";s:1:"v";s:3:"-40";s:1:"w";s:3:"-40";s:1:"y";s:3:"-40";s:6:"yacute";s:3:"-40";s:9:"ydieresis";s:3:"-40";}s:9:"Adieresis";a:48:{s:1:"C";s:3:"-30";s:6:"Cacute";s:3:"-30";s:6:"Ccaron";s:3:"-30";s:8:"Ccedilla";s:3:"-30";s:1:"G";s:3:"-30";s:6:"Gbreve";s:3:"-30";s:12:"Gcommaaccent";s:3:"-30";s:1:"O";s:3:"-30";s:6:"Oacute";s:3:"-30";s:11:"Ocircumflex";s:3:"-30";s:9:"Odieresis";s:3:"-30";s:6:"Ograve";s:3:"-30";s:13:"Ohungarumlaut";s:3:"-30";s:7:"Omacron";s:3:"-30";s:6:"Oslash";s:3:"-30";s:6:"Otilde";s:3:"-30";s:1:"Q";s:3:"-30";s:1:"T";s:4:"-120";s:6:"Tcaron";s:4:"-120";s:12:"Tcommaaccent";s:4:"-120";s:1:"U";s:3:"-50";s:6:"Uacute";s:3:"-50";s:11:"Ucircumflex";s:3:"-50";s:9:"Udieresis";s:3:"-50";s:6:"Ugrave";s:3:"-50";s:13:"Uhungarumlaut";s:3:"-50";s:7:"Umacron";s:3:"-50";s:7:"Uogonek";s:3:"-50";s:5:"Uring";s:3:"-50";s:1:"V";s:3:"-70";s:1:"W";s:3:"-50";s:1:"Y";s:4:"-100";s:6:"Yacute";s:4:"-100";s:9:"Ydieresis";s:4:"-100";s:1:"u";s:3:"-30";s:6:"uacute";s:3:"-30";s:11:"ucircumflex";s:3:"-30";s:9:"udieresis";s:3:"-30";s:6:"ugrave";s:3:"-30";s:13:"uhungarumlaut";s:3:"-30";s:7:"umacron";s:3:"-30";s:7:"uogonek";s:3:"-30";s:5:"uring";s:3:"-30";s:1:"v";s:3:"-40";s:1:"w";s:3:"-40";s:1:"y";s:3:"-40";s:6:"yacute";s:3:"-40";s:9:"ydieresis";s:3:"-40";}s:6:"Agrave";a:48:{s:1:"C";s:3:"-30";s:6:"Cacute";s:3:"-30";s:6:"Ccaron";s:3:"-30";s:8:"Ccedilla";s:3:"-30";s:1:"G";s:3:"-30";s:6:"Gbreve";s:3:"-30";s:12:"Gcommaaccent";s:3:"-30";s:1:"O";s:3:"-30";s:6:"Oacute";s:3:"-30";s:11:"Ocircumflex";s:3:"-30";s:9:"Odieresis";s:3:"-30";s:6:"Ograve";s:3:"-30";s:13:"Ohungarumlaut";s:3:"-30";s:7:"Omacron";s:3:"-30";s:6:"Oslash";s:3:"-30";s:6:"Otilde";s:3:"-30";s:1:"Q";s:3:"-30";s:1:"T";s:4:"-120";s:6:"Tcaron";s:4:"-120";s:12:"Tcommaaccent";s:4:"-120";s:1:"U";s:3:"-50";s:6:"Uacute";s:3:"-50";s:11:"Ucircumflex";s:3:"-50";s:9:"Udieresis";s:3:"-50";s:6:"Ugrave";s:3:"-50";s:13:"Uhungarumlaut";s:3:"-50";s:7:"Umacron";s:3:"-50";s:7:"Uogonek";s:3:"-50";s:5:"Uring";s:3:"-50";s:1:"V";s:3:"-70";s:1:"W";s:3:"-50";s:1:"Y";s:4:"-100";s:6:"Yacute";s:4:"-100";s:9:"Ydieresis";s:4:"-100";s:1:"u";s:3:"-30";s:6:"uacute";s:3:"-30";s:11:"ucircumflex";s:3:"-30";s:9:"udieresis";s:3:"-30";s:6:"ugrave";s:3:"-30";s:13:"uhungarumlaut";s:3:"-30";s:7:"umacron";s:3:"-30";s:7:"uogonek";s:3:"-30";s:5:"uring";s:3:"-30";s:1:"v";s:3:"-40";s:1:"w";s:3:"-40";s:1:"y";s:3:"-40";s:6:"yacute";s:3:"-40";s:9:"ydieresis";s:3:"-40";}s:7:"Amacron";a:48:{s:1:"C";s:3:"-30";s:6:"Cacute";s:3:"-30";s:6:"Ccaron";s:3:"-30";s:8:"Ccedilla";s:3:"-30";s:1:"G";s:3:"-30";s:6:"Gbreve";s:3:"-30";s:12:"Gcommaaccent";s:3:"-30";s:1:"O";s:3:"-30";s:6:"Oacute";s:3:"-30";s:11:"Ocircumflex";s:3:"-30";s:9:"Odieresis";s:3:"-30";s:6:"Ograve";s:3:"-30";s:13:"Ohungarumlaut";s:3:"-30";s:7:"Omacron";s:3:"-30";s:6:"Oslash";s:3:"-30";s:6:"Otilde";s:3:"-30";s:1:"Q";s:3:"-30";s:1:"T";s:4:"-120";s:6:"Tcaron";s:4:"-120";s:12:"Tcommaaccent";s:4:"-120";s:1:"U";s:3:"-50";s:6:"Uacute";s:3:"-50";s:11:"Ucircumflex";s:3:"-50";s:9:"Udieresis";s:3:"-50";s:6:"Ugrave";s:3:"-50";s:13:"Uhungarumlaut";s:3:"-50";s:7:"Umacron";s:3:"-50";s:7:"Uogonek";s:3:"-50";s:5:"Uring";s:3:"-50";s:1:"V";s:3:"-70";s:1:"W";s:3:"-50";s:1:"Y";s:4:"-100";s:6:"Yacute";s:4:"-100";s:9:"Ydieresis";s:4:"-100";s:1:"u";s:3:"-30";s:6:"uacute";s:3:"-30";s:11:"ucircumflex";s:3:"-30";s:9:"udieresis";s:3:"-30";s:6:"ugrave";s:3:"-30";s:13:"uhungarumlaut";s:3:"-30";s:7:"umacron";s:3:"-30";s:7:"uogonek";s:3:"-30";s:5:"uring";s:3:"-30";s:1:"v";s:3:"-40";s:1:"w";s:3:"-40";s:1:"y";s:3:"-40";s:6:"yacute";s:3:"-40";s:9:"ydieresis";s:3:"-40";}s:7:"Aogonek";a:48:{s:1:"C";s:3:"-30";s:6:"Cacute";s:3:"-30";s:6:"Ccaron";s:3:"-30";s:8:"Ccedilla";s:3:"-30";s:1:"G";s:3:"-30";s:6:"Gbreve";s:3:"-30";s:12:"Gcommaaccent";s:3:"-30";s:1:"O";s:3:"-30";s:6:"Oacute";s:3:"-30";s:11:"Ocircumflex";s:3:"-30";s:9:"Odieresis";s:3:"-30";s:6:"Ograve";s:3:"-30";s:13:"Ohungarumlaut";s:3:"-30";s:7:"Omacron";s:3:"-30";s:6:"Oslash";s:3:"-30";s:6:"Otilde";s:3:"-30";s:1:"Q";s:3:"-30";s:1:"T";s:4:"-120";s:6:"Tcaron";s:4:"-120";s:12:"Tcommaaccent";s:4:"-120";s:1:"U";s:3:"-50";s:6:"Uacute";s:3:"-50";s:11:"Ucircumflex";s:3:"-50";s:9:"Udieresis";s:3:"-50";s:6:"Ugrave";s:3:"-50";s:13:"Uhungarumlaut";s:3:"-50";s:7:"Umacron";s:3:"-50";s:7:"Uogonek";s:3:"-50";s:5:"Uring";s:3:"-50";s:1:"V";s:3:"-70";s:1:"W";s:3:"-50";s:1:"Y";s:4:"-100";s:6:"Yacute";s:4:"-100";s:9:"Ydieresis";s:4:"-100";s:1:"u";s:3:"-30";s:6:"uacute";s:3:"-30";s:11:"ucircumflex";s:3:"-30";s:9:"udieresis";s:3:"-30";s:6:"ugrave";s:3:"-30";s:13:"uhungarumlaut";s:3:"-30";s:7:"umacron";s:3:"-30";s:7:"uogonek";s:3:"-30";s:5:"uring";s:3:"-30";s:1:"v";s:3:"-40";s:1:"w";s:3:"-40";s:1:"y";s:3:"-40";s:6:"yacute";s:3:"-40";s:9:"ydieresis";s:3:"-40";}s:5:"Aring";a:48:{s:1:"C";s:3:"-30";s:6:"Cacute";s:3:"-30";s:6:"Ccaron";s:3:"-30";s:8:"Ccedilla";s:3:"-30";s:1:"G";s:3:"-30";s:6:"Gbreve";s:3:"-30";s:12:"Gcommaaccent";s:3:"-30";s:1:"O";s:3:"-30";s:6:"Oacute";s:3:"-30";s:11:"Ocircumflex";s:3:"-30";s:9:"Odieresis";s:3:"-30";s:6:"Ograve";s:3:"-30";s:13:"Ohungarumlaut";s:3:"-30";s:7:"Omacron";s:3:"-30";s:6:"Oslash";s:3:"-30";s:6:"Otilde";s:3:"-30";s:1:"Q";s:3:"-30";s:1:"T";s:4:"-120";s:6:"Tcaron";s:4:"-120";s:12:"Tcommaaccent";s:4:"-120";s:1:"U";s:3:"-50";s:6:"Uacute";s:3:"-50";s:11:"Ucircumflex";s:3:"-50";s:9:"Udieresis";s:3:"-50";s:6:"Ugrave";s:3:"-50";s:13:"Uhungarumlaut";s:3:"-50";s:7:"Umacron";s:3:"-50";s:7:"Uogonek";s:3:"-50";s:5:"Uring";s:3:"-50";s:1:"V";s:3:"-70";s:1:"W";s:3:"-50";s:1:"Y";s:4:"-100";s:6:"Yacute";s:4:"-100";s:9:"Ydieresis";s:4:"-100";s:1:"u";s:3:"-30";s:6:"uacute";s:3:"-30";s:11:"ucircumflex";s:3:"-30";s:9:"udieresis";s:3:"-30";s:6:"ugrave";s:3:"-30";s:13:"uhungarumlaut";s:3:"-30";s:7:"umacron";s:3:"-30";s:7:"uogonek";s:3:"-30";s:5:"uring";s:3:"-30";s:1:"v";s:3:"-40";s:1:"w";s:3:"-40";s:1:"y";s:3:"-40";s:6:"yacute";s:3:"-40";s:9:"ydieresis";s:3:"-40";}s:6:"Atilde";a:48:{s:1:"C";s:3:"-30";s:6:"Cacute";s:3:"-30";s:6:"Ccaron";s:3:"-30";s:8:"Ccedilla";s:3:"-30";s:1:"G";s:3:"-30";s:6:"Gbreve";s:3:"-30";s:12:"Gcommaaccent";s:3:"-30";s:1:"O";s:3:"-30";s:6:"Oacute";s:3:"-30";s:11:"Ocircumflex";s:3:"-30";s:9:"Odieresis";s:3:"-30";s:6:"Ograve";s:3:"-30";s:13:"Ohungarumlaut";s:3:"-30";s:7:"Omacron";s:3:"-30";s:6:"Oslash";s:3:"-30";s:6:"Otilde";s:3:"-30";s:1:"Q";s:3:"-30";s:1:"T";s:4:"-120";s:6:"Tcaron";s:4:"-120";s:12:"Tcommaaccent";s:4:"-120";s:1:"U";s:3:"-50";s:6:"Uacute";s:3:"-50";s:11:"Ucircumflex";s:3:"-50";s:9:"Udieresis";s:3:"-50";s:6:"Ugrave";s:3:"-50";s:13:"Uhungarumlaut";s:3:"-50";s:7:"Umacron";s:3:"-50";s:7:"Uogonek";s:3:"-50";s:5:"Uring";s:3:"-50";s:1:"V";s:3:"-70";s:1:"W";s:3:"-50";s:1:"Y";s:4:"-100";s:6:"Yacute";s:4:"-100";s:9:"Ydieresis";s:4:"-100";s:1:"u";s:3:"-30";s:6:"uacute";s:3:"-30";s:11:"ucircumflex";s:3:"-30";s:9:"udieresis";s:3:"-30";s:6:"ugrave";s:3:"-30";s:13:"uhungarumlaut";s:3:"-30";s:7:"umacron";s:3:"-30";s:7:"uogonek";s:3:"-30";s:5:"uring";s:3:"-30";s:1:"v";s:3:"-40";s:1:"w";s:3:"-40";s:1:"y";s:3:"-40";s:6:"yacute";s:3:"-40";s:9:"ydieresis";s:3:"-40";}s:1:"B";a:11:{s:1:"U";s:3:"-10";s:6:"Uacute";s:3:"-10";s:11:"Ucircumflex";s:3:"-10";s:9:"Udieresis";s:3:"-10";s:6:"Ugrave";s:3:"-10";s:13:"Uhungarumlaut";s:3:"-10";s:7:"Umacron";s:3:"-10";s:7:"Uogonek";s:3:"-10";s:5:"Uring";s:3:"-10";s:5:"comma";s:3:"-20";s:6:"period";s:3:"-20";}s:1:"C";a:2:{s:5:"comma";s:3:"-30";s:6:"period";s:3:"-30";}s:6:"Cacute";a:2:{s:5:"comma";s:3:"-30";s:6:"period";s:3:"-30";}s:6:"Ccaron";a:2:{s:5:"comma";s:3:"-30";s:6:"period";s:3:"-30";}s:8:"Ccedilla";a:2:{s:5:"comma";s:3:"-30";s:6:"period";s:3:"-30";}s:1:"D";a:17:{s:1:"A";s:3:"-40";s:6:"Aacute";s:3:"-40";s:6:"Abreve";s:3:"-40";s:11:"Acircumflex";s:3:"-40";s:9:"Adieresis";s:3:"-40";s:6:"Agrave";s:3:"-40";s:7:"Amacron";s:3:"-40";s:7:"Aogonek";s:3:"-40";s:5:"Aring";s:3:"-40";s:6:"Atilde";s:3:"-40";s:1:"V";s:3:"-70";s:1:"W";s:3:"-40";s:1:"Y";s:3:"-90";s:6:"Yacute";s:3:"-90";s:9:"Ydieresis";s:3:"-90";s:5:"comma";s:3:"-70";s:6:"period";s:3:"-70";}s:6:"Dcaron";a:17:{s:1:"A";s:3:"-40";s:6:"Aacute";s:3:"-40";s:6:"Abreve";s:3:"-40";s:11:"Acircumflex";s:3:"-40";s:9:"Adieresis";s:3:"-40";s:6:"Agrave";s:3:"-40";s:7:"Amacron";s:3:"-40";s:7:"Aogonek";s:3:"-40";s:5:"Aring";s:3:"-40";s:6:"Atilde";s:3:"-40";s:1:"V";s:3:"-70";s:1:"W";s:3:"-40";s:1:"Y";s:3:"-90";s:6:"Yacute";s:3:"-90";s:9:"Ydieresis";s:3:"-90";s:5:"comma";s:3:"-70";s:6:"period";s:3:"-70";}s:6:"Dcroat";a:17:{s:1:"A";s:3:"-40";s:6:"Aacute";s:3:"-40";s:6:"Abreve";s:3:"-40";s:11:"Acircumflex";s:3:"-40";s:9:"Adieresis";s:3:"-40";s:6:"Agrave";s:3:"-40";s:7:"Amacron";s:3:"-40";s:7:"Aogonek";s:3:"-40";s:5:"Aring";s:3:"-40";s:6:"Atilde";s:3:"-40";s:1:"V";s:3:"-70";s:1:"W";s:3:"-40";s:1:"Y";s:3:"-90";s:6:"Yacute";s:3:"-90";s:9:"Ydieresis";s:3:"-90";s:5:"comma";s:3:"-70";s:6:"period";s:3:"-70";}s:1:"F";a:44:{s:1:"A";s:3:"-80";s:6:"Aacute";s:3:"-80";s:6:"Abreve";s:3:"-80";s:11:"Acircumflex";s:3:"-80";s:9:"Adieresis";s:3:"-80";s:6:"Agrave";s:3:"-80";s:7:"Amacron";s:3:"-80";s:7:"Aogonek";s:3:"-80";s:5:"Aring";s:3:"-80";s:6:"Atilde";s:3:"-80";s:1:"a";s:3:"-50";s:6:"aacute";s:3:"-50";s:6:"abreve";s:3:"-50";s:11:"acircumflex";s:3:"-50";s:9:"adieresis";s:3:"-50";s:6:"agrave";s:3:"-50";s:7:"amacron";s:3:"-50";s:7:"aogonek";s:3:"-50";s:5:"aring";s:3:"-50";s:6:"atilde";s:3:"-50";s:5:"comma";s:4:"-150";s:1:"e";s:3:"-30";s:6:"eacute";s:3:"-30";s:6:"ecaron";s:3:"-30";s:11:"ecircumflex";s:3:"-30";s:9:"edieresis";s:3:"-30";s:10:"edotaccent";s:3:"-30";s:6:"egrave";s:3:"-30";s:7:"emacron";s:3:"-30";s:7:"eogonek";s:3:"-30";s:1:"o";s:3:"-30";s:6:"oacute";s:3:"-30";s:11:"ocircumflex";s:3:"-30";s:9:"odieresis";s:3:"-30";s:6:"ograve";s:3:"-30";s:13:"ohungarumlaut";s:3:"-30";s:7:"omacron";s:3:"-30";s:6:"oslash";s:3:"-30";s:6:"otilde";s:3:"-30";s:6:"period";s:4:"-150";s:1:"r";s:3:"-45";s:6:"racute";s:3:"-45";s:6:"rcaron";s:3:"-45";s:12:"rcommaaccent";s:3:"-45";}s:1:"J";a:31:{s:1:"A";s:3:"-20";s:6:"Aacute";s:3:"-20";s:6:"Abreve";s:3:"-20";s:11:"Acircumflex";s:3:"-20";s:9:"Adieresis";s:3:"-20";s:6:"Agrave";s:3:"-20";s:7:"Amacron";s:3:"-20";s:7:"Aogonek";s:3:"-20";s:5:"Aring";s:3:"-20";s:6:"Atilde";s:3:"-20";s:1:"a";s:3:"-20";s:6:"aacute";s:3:"-20";s:6:"abreve";s:3:"-20";s:11:"acircumflex";s:3:"-20";s:9:"adieresis";s:3:"-20";s:6:"agrave";s:3:"-20";s:7:"amacron";s:3:"-20";s:7:"aogonek";s:3:"-20";s:5:"aring";s:3:"-20";s:6:"atilde";s:3:"-20";s:5:"comma";s:3:"-30";s:6:"period";s:3:"-30";s:1:"u";s:3:"-20";s:6:"uacute";s:3:"-20";s:11:"ucircumflex";s:3:"-20";s:9:"udieresis";s:3:"-20";s:6:"ugrave";s:3:"-20";s:13:"uhungarumlaut";s:3:"-20";s:7:"umacron";s:3:"-20";s:7:"uogonek";s:3:"-20";s:5:"uring";s:3:"-20";}s:1:"K";a:39:{s:1:"O";s:3:"-50";s:6:"Oacute";s:3:"-50";s:11:"Ocircumflex";s:3:"-50";s:9:"Odieresis";s:3:"-50";s:6:"Ograve";s:3:"-50";s:13:"Ohungarumlaut";s:3:"-50";s:7:"Omacron";s:3:"-50";s:6:"Oslash";s:3:"-50";s:6:"Otilde";s:3:"-50";s:1:"e";s:3:"-40";s:6:"eacute";s:3:"-40";s:6:"ecaron";s:3:"-40";s:11:"ecircumflex";s:3:"-40";s:9:"edieresis";s:3:"-40";s:10:"edotaccent";s:3:"-40";s:6:"egrave";s:3:"-40";s:7:"emacron";s:3:"-40";s:7:"eogonek";s:3:"-40";s:1:"o";s:3:"-40";s:6:"oacute";s:3:"-40";s:11:"ocircumflex";s:3:"-40";s:9:"odieresis";s:3:"-40";s:6:"ograve";s:3:"-40";s:13:"ohungarumlaut";s:3:"-40";s:7:"omacron";s:3:"-40";s:6:"oslash";s:3:"-40";s:6:"otilde";s:3:"-40";s:1:"u";s:3:"-30";s:6:"uacute";s:3:"-30";s:11:"ucircumflex";s:3:"-30";s:9:"udieresis";s:3:"-30";s:6:"ugrave";s:3:"-30";s:13:"uhungarumlaut";s:3:"-30";s:7:"umacron";s:3:"-30";s:7:"uogonek";s:3:"-30";s:5:"uring";s:3:"-30";s:1:"y";s:3:"-50";s:6:"yacute";s:3:"-50";s:9:"ydieresis";s:3:"-50";}s:12:"Kcommaaccent";a:39:{s:1:"O";s:3:"-50";s:6:"Oacute";s:3:"-50";s:11:"Ocircumflex";s:3:"-50";s:9:"Odieresis";s:3:"-50";s:6:"Ograve";s:3:"-50";s:13:"Ohungarumlaut";s:3:"-50";s:7:"Omacron";s:3:"-50";s:6:"Oslash";s:3:"-50";s:6:"Otilde";s:3:"-50";s:1:"e";s:3:"-40";s:6:"eacute";s:3:"-40";s:6:"ecaron";s:3:"-40";s:11:"ecircumflex";s:3:"-40";s:9:"edieresis";s:3:"-40";s:10:"edotaccent";s:3:"-40";s:6:"egrave";s:3:"-40";s:7:"emacron";s:3:"-40";s:7:"eogonek";s:3:"-40";s:1:"o";s:3:"-40";s:6:"oacute";s:3:"-40";s:11:"ocircumflex";s:3:"-40";s:9:"odieresis";s:3:"-40";s:6:"ograve";s:3:"-40";s:13:"ohungarumlaut";s:3:"-40";s:7:"omacron";s:3:"-40";s:6:"oslash";s:3:"-40";s:6:"otilde";s:3:"-40";s:1:"u";s:3:"-30";s:6:"uacute";s:3:"-30";s:11:"ucircumflex";s:3:"-30";s:9:"udieresis";s:3:"-30";s:6:"ugrave";s:3:"-30";s:13:"uhungarumlaut";s:3:"-30";s:7:"umacron";s:3:"-30";s:7:"uogonek";s:3:"-30";s:5:"uring";s:3:"-30";s:1:"y";s:3:"-50";s:6:"yacute";s:3:"-50";s:9:"ydieresis";s:3:"-50";}s:1:"L";a:13:{s:1:"T";s:4:"-110";s:6:"Tcaron";s:4:"-110";s:12:"Tcommaaccent";s:4:"-110";s:1:"V";s:4:"-110";s:1:"W";s:3:"-70";s:1:"Y";s:4:"-140";s:6:"Yacute";s:4:"-140";s:9:"Ydieresis";s:4:"-140";s:13:"quotedblright";s:4:"-140";s:10:"quoteright";s:4:"-160";s:1:"y";s:3:"-30";s:6:"yacute";s:3:"-30";s:9:"ydieresis";s:3:"-30";}s:6:"Lacute";a:13:{s:1:"T";s:4:"-110";s:6:"Tcaron";s:4:"-110";s:12:"Tcommaaccent";s:4:"-110";s:1:"V";s:4:"-110";s:1:"W";s:3:"-70";s:1:"Y";s:4:"-140";s:6:"Yacute";s:4:"-140";s:9:"Ydieresis";s:4:"-140";s:13:"quotedblright";s:4:"-140";s:10:"quoteright";s:4:"-160";s:1:"y";s:3:"-30";s:6:"yacute";s:3:"-30";s:9:"ydieresis";s:3:"-30";}s:6:"Lcaron";a:13:{s:1:"T";s:4:"-110";s:6:"Tcaron";s:4:"-110";s:12:"Tcommaaccent";s:4:"-110";s:1:"V";s:4:"-110";s:1:"W";s:3:"-70";s:1:"Y";s:4:"-140";s:6:"Yacute";s:4:"-140";s:9:"Ydieresis";s:4:"-140";s:13:"quotedblright";s:4:"-140";s:10:"quoteright";s:4:"-160";s:1:"y";s:3:"-30";s:6:"yacute";s:3:"-30";s:9:"ydieresis";s:3:"-30";}s:12:"Lcommaaccent";a:13:{s:1:"T";s:4:"-110";s:6:"Tcaron";s:4:"-110";s:12:"Tcommaaccent";s:4:"-110";s:1:"V";s:4:"-110";s:1:"W";s:3:"-70";s:1:"Y";s:4:"-140";s:6:"Yacute";s:4:"-140";s:9:"Ydieresis";s:4:"-140";s:13:"quotedblright";s:4:"-140";s:10:"quoteright";s:4:"-160";s:1:"y";s:3:"-30";s:6:"yacute";s:3:"-30";s:9:"ydieresis";s:3:"-30";}s:6:"Lslash";a:13:{s:1:"T";s:4:"-110";s:6:"Tcaron";s:4:"-110";s:12:"Tcommaaccent";s:4:"-110";s:1:"V";s:4:"-110";s:1:"W";s:3:"-70";s:1:"Y";s:4:"-140";s:6:"Yacute";s:4:"-140";s:9:"Ydieresis";s:4:"-140";s:13:"quotedblright";s:4:"-140";s:10:"quoteright";s:4:"-160";s:1:"y";s:3:"-30";s:6:"yacute";s:3:"-30";s:9:"ydieresis";s:3:"-30";}s:1:"O";a:21:{s:1:"A";s:3:"-20";s:6:"Aacute";s:3:"-20";s:6:"Abreve";s:3:"-20";s:11:"Acircumflex";s:3:"-20";s:9:"Adieresis";s:3:"-20";s:6:"Agrave";s:3:"-20";s:7:"Amacron";s:3:"-20";s:7:"Aogonek";s:3:"-20";s:5:"Aring";s:3:"-20";s:6:"Atilde";s:3:"-20";s:1:"T";s:3:"-40";s:6:"Tcaron";s:3:"-40";s:12:"Tcommaaccent";s:3:"-40";s:1:"V";s:3:"-50";s:1:"W";s:3:"-30";s:1:"X";s:3:"-60";s:1:"Y";s:3:"-70";s:6:"Yacute";s:3:"-70";s:9:"Ydieresis";s:3:"-70";s:5:"comma";s:3:"-40";s:6:"period";s:3:"-40";}s:6:"Oacute";a:21:{s:1:"A";s:3:"-20";s:6:"Aacute";s:3:"-20";s:6:"Abreve";s:3:"-20";s:11:"Acircumflex";s:3:"-20";s:9:"Adieresis";s:3:"-20";s:6:"Agrave";s:3:"-20";s:7:"Amacron";s:3:"-20";s:7:"Aogonek";s:3:"-20";s:5:"Aring";s:3:"-20";s:6:"Atilde";s:3:"-20";s:1:"T";s:3:"-40";s:6:"Tcaron";s:3:"-40";s:12:"Tcommaaccent";s:3:"-40";s:1:"V";s:3:"-50";s:1:"W";s:3:"-30";s:1:"X";s:3:"-60";s:1:"Y";s:3:"-70";s:6:"Yacute";s:3:"-70";s:9:"Ydieresis";s:3:"-70";s:5:"comma";s:3:"-40";s:6:"period";s:3:"-40";}s:11:"Ocircumflex";a:21:{s:1:"A";s:3:"-20";s:6:"Aacute";s:3:"-20";s:6:"Abreve";s:3:"-20";s:11:"Acircumflex";s:3:"-20";s:9:"Adieresis";s:3:"-20";s:6:"Agrave";s:3:"-20";s:7:"Amacron";s:3:"-20";s:7:"Aogonek";s:3:"-20";s:5:"Aring";s:3:"-20";s:6:"Atilde";s:3:"-20";s:1:"T";s:3:"-40";s:6:"Tcaron";s:3:"-40";s:12:"Tcommaaccent";s:3:"-40";s:1:"V";s:3:"-50";s:1:"W";s:3:"-30";s:1:"X";s:3:"-60";s:1:"Y";s:3:"-70";s:6:"Yacute";s:3:"-70";s:9:"Ydieresis";s:3:"-70";s:5:"comma";s:3:"-40";s:6:"period";s:3:"-40";}s:9:"Odieresis";a:21:{s:1:"A";s:3:"-20";s:6:"Aacute";s:3:"-20";s:6:"Abreve";s:3:"-20";s:11:"Acircumflex";s:3:"-20";s:9:"Adieresis";s:3:"-20";s:6:"Agrave";s:3:"-20";s:7:"Amacron";s:3:"-20";s:7:"Aogonek";s:3:"-20";s:5:"Aring";s:3:"-20";s:6:"Atilde";s:3:"-20";s:1:"T";s:3:"-40";s:6:"Tcaron";s:3:"-40";s:12:"Tcommaaccent";s:3:"-40";s:1:"V";s:3:"-50";s:1:"W";s:3:"-30";s:1:"X";s:3:"-60";s:1:"Y";s:3:"-70";s:6:"Yacute";s:3:"-70";s:9:"Ydieresis";s:3:"-70";s:5:"comma";s:3:"-40";s:6:"period";s:3:"-40";}s:6:"Ograve";a:21:{s:1:"A";s:3:"-20";s:6:"Aacute";s:3:"-20";s:6:"Abreve";s:3:"-20";s:11:"Acircumflex";s:3:"-20";s:9:"Adieresis";s:3:"-20";s:6:"Agrave";s:3:"-20";s:7:"Amacron";s:3:"-20";s:7:"Aogonek";s:3:"-20";s:5:"Aring";s:3:"-20";s:6:"Atilde";s:3:"-20";s:1:"T";s:3:"-40";s:6:"Tcaron";s:3:"-40";s:12:"Tcommaaccent";s:3:"-40";s:1:"V";s:3:"-50";s:1:"W";s:3:"-30";s:1:"X";s:3:"-60";s:1:"Y";s:3:"-70";s:6:"Yacute";s:3:"-70";s:9:"Ydieresis";s:3:"-70";s:5:"comma";s:3:"-40";s:6:"period";s:3:"-40";}s:13:"Ohungarumlaut";a:21:{s:1:"A";s:3:"-20";s:6:"Aacute";s:3:"-20";s:6:"Abreve";s:3:"-20";s:11:"Acircumflex";s:3:"-20";s:9:"Adieresis";s:3:"-20";s:6:"Agrave";s:3:"-20";s:7:"Amacron";s:3:"-20";s:7:"Aogonek";s:3:"-20";s:5:"Aring";s:3:"-20";s:6:"Atilde";s:3:"-20";s:1:"T";s:3:"-40";s:6:"Tcaron";s:3:"-40";s:12:"Tcommaaccent";s:3:"-40";s:1:"V";s:3:"-50";s:1:"W";s:3:"-30";s:1:"X";s:3:"-60";s:1:"Y";s:3:"-70";s:6:"Yacute";s:3:"-70";s:9:"Ydieresis";s:3:"-70";s:5:"comma";s:3:"-40";s:6:"period";s:3:"-40";}s:7:"Omacron";a:21:{s:1:"A";s:3:"-20";s:6:"Aacute";s:3:"-20";s:6:"Abreve";s:3:"-20";s:11:"Acircumflex";s:3:"-20";s:9:"Adieresis";s:3:"-20";s:6:"Agrave";s:3:"-20";s:7:"Amacron";s:3:"-20";s:7:"Aogonek";s:3:"-20";s:5:"Aring";s:3:"-20";s:6:"Atilde";s:3:"-20";s:1:"T";s:3:"-40";s:6:"Tcaron";s:3:"-40";s:12:"Tcommaaccent";s:3:"-40";s:1:"V";s:3:"-50";s:1:"W";s:3:"-30";s:1:"X";s:3:"-60";s:1:"Y";s:3:"-70";s:6:"Yacute";s:3:"-70";s:9:"Ydieresis";s:3:"-70";s:5:"comma";s:3:"-40";s:6:"period";s:3:"-40";}s:6:"Oslash";a:21:{s:1:"A";s:3:"-20";s:6:"Aacute";s:3:"-20";s:6:"Abreve";s:3:"-20";s:11:"Acircumflex";s:3:"-20";s:9:"Adieresis";s:3:"-20";s:6:"Agrave";s:3:"-20";s:7:"Amacron";s:3:"-20";s:7:"Aogonek";s:3:"-20";s:5:"Aring";s:3:"-20";s:6:"Atilde";s:3:"-20";s:1:"T";s:3:"-40";s:6:"Tcaron";s:3:"-40";s:12:"Tcommaaccent";s:3:"-40";s:1:"V";s:3:"-50";s:1:"W";s:3:"-30";s:1:"X";s:3:"-60";s:1:"Y";s:3:"-70";s:6:"Yacute";s:3:"-70";s:9:"Ydieresis";s:3:"-70";s:5:"comma";s:3:"-40";s:6:"period";s:3:"-40";}s:6:"Otilde";a:21:{s:1:"A";s:3:"-20";s:6:"Aacute";s:3:"-20";s:6:"Abreve";s:3:"-20";s:11:"Acircumflex";s:3:"-20";s:9:"Adieresis";s:3:"-20";s:6:"Agrave";s:3:"-20";s:7:"Amacron";s:3:"-20";s:7:"Aogonek";s:3:"-20";s:5:"Aring";s:3:"-20";s:6:"Atilde";s:3:"-20";s:1:"T";s:3:"-40";s:6:"Tcaron";s:3:"-40";s:12:"Tcommaaccent";s:3:"-40";s:1:"V";s:3:"-50";s:1:"W";s:3:"-30";s:1:"X";s:3:"-60";s:1:"Y";s:3:"-70";s:6:"Yacute";s:3:"-70";s:9:"Ydieresis";s:3:"-70";s:5:"comma";s:3:"-40";s:6:"period";s:3:"-40";}s:1:"P";a:40:{s:1:"A";s:4:"-120";s:6:"Aacute";s:4:"-120";s:6:"Abreve";s:4:"-120";s:11:"Acircumflex";s:4:"-120";s:9:"Adieresis";s:4:"-120";s:6:"Agrave";s:4:"-120";s:7:"Amacron";s:4:"-120";s:7:"Aogonek";s:4:"-120";s:5:"Aring";s:4:"-120";s:6:"Atilde";s:4:"-120";s:1:"a";s:3:"-40";s:6:"aacute";s:3:"-40";s:6:"abreve";s:3:"-40";s:11:"acircumflex";s:3:"-40";s:9:"adieresis";s:3:"-40";s:6:"agrave";s:3:"-40";s:7:"amacron";s:3:"-40";s:7:"aogonek";s:3:"-40";s:5:"aring";s:3:"-40";s:6:"atilde";s:3:"-40";s:5:"comma";s:4:"-180";s:1:"e";s:3:"-50";s:6:"eacute";s:3:"-50";s:6:"ecaron";s:3:"-50";s:11:"ecircumflex";s:3:"-50";s:9:"edieresis";s:3:"-50";s:10:"edotaccent";s:3:"-50";s:6:"egrave";s:3:"-50";s:7:"emacron";s:3:"-50";s:7:"eogonek";s:3:"-50";s:1:"o";s:3:"-50";s:6:"oacute";s:3:"-50";s:11:"ocircumflex";s:3:"-50";s:9:"odieresis";s:3:"-50";s:6:"ograve";s:3:"-50";s:13:"ohungarumlaut";s:3:"-50";s:7:"omacron";s:3:"-50";s:6:"oslash";s:3:"-50";s:6:"otilde";s:3:"-50";s:6:"period";s:4:"-180";}s:1:"Q";a:9:{s:1:"U";s:3:"-10";s:6:"Uacute";s:3:"-10";s:11:"Ucircumflex";s:3:"-10";s:9:"Udieresis";s:3:"-10";s:6:"Ugrave";s:3:"-10";s:13:"Uhungarumlaut";s:3:"-10";s:7:"Umacron";s:3:"-10";s:7:"Uogonek";s:3:"-10";s:5:"Uring";s:3:"-10";}s:1:"R";a:26:{s:1:"O";s:3:"-20";s:6:"Oacute";s:3:"-20";s:11:"Ocircumflex";s:3:"-20";s:9:"Odieresis";s:3:"-20";s:6:"Ograve";s:3:"-20";s:13:"Ohungarumlaut";s:3:"-20";s:7:"Omacron";s:3:"-20";s:6:"Oslash";s:3:"-20";s:6:"Otilde";s:3:"-20";s:1:"T";s:3:"-30";s:6:"Tcaron";s:3:"-30";s:12:"Tcommaaccent";s:3:"-30";s:1:"U";s:3:"-40";s:6:"Uacute";s:3:"-40";s:11:"Ucircumflex";s:3:"-40";s:9:"Udieresis";s:3:"-40";s:6:"Ugrave";s:3:"-40";s:13:"Uhungarumlaut";s:3:"-40";s:7:"Umacron";s:3:"-40";s:7:"Uogonek";s:3:"-40";s:5:"Uring";s:3:"-40";s:1:"V";s:3:"-50";s:1:"W";s:3:"-30";s:1:"Y";s:3:"-50";s:6:"Yacute";s:3:"-50";s:9:"Ydieresis";s:3:"-50";}s:6:"Racute";a:26:{s:1:"O";s:3:"-20";s:6:"Oacute";s:3:"-20";s:11:"Ocircumflex";s:3:"-20";s:9:"Odieresis";s:3:"-20";s:6:"Ograve";s:3:"-20";s:13:"Ohungarumlaut";s:3:"-20";s:7:"Omacron";s:3:"-20";s:6:"Oslash";s:3:"-20";s:6:"Otilde";s:3:"-20";s:1:"T";s:3:"-30";s:6:"Tcaron";s:3:"-30";s:12:"Tcommaaccent";s:3:"-30";s:1:"U";s:3:"-40";s:6:"Uacute";s:3:"-40";s:11:"Ucircumflex";s:3:"-40";s:9:"Udieresis";s:3:"-40";s:6:"Ugrave";s:3:"-40";s:13:"Uhungarumlaut";s:3:"-40";s:7:"Umacron";s:3:"-40";s:7:"Uogonek";s:3:"-40";s:5:"Uring";s:3:"-40";s:1:"V";s:3:"-50";s:1:"W";s:3:"-30";s:1:"Y";s:3:"-50";s:6:"Yacute";s:3:"-50";s:9:"Ydieresis";s:3:"-50";}s:6:"Rcaron";a:26:{s:1:"O";s:3:"-20";s:6:"Oacute";s:3:"-20";s:11:"Ocircumflex";s:3:"-20";s:9:"Odieresis";s:3:"-20";s:6:"Ograve";s:3:"-20";s:13:"Ohungarumlaut";s:3:"-20";s:7:"Omacron";s:3:"-20";s:6:"Oslash";s:3:"-20";s:6:"Otilde";s:3:"-20";s:1:"T";s:3:"-30";s:6:"Tcaron";s:3:"-30";s:12:"Tcommaaccent";s:3:"-30";s:1:"U";s:3:"-40";s:6:"Uacute";s:3:"-40";s:11:"Ucircumflex";s:3:"-40";s:9:"Udieresis";s:3:"-40";s:6:"Ugrave";s:3:"-40";s:13:"Uhungarumlaut";s:3:"-40";s:7:"Umacron";s:3:"-40";s:7:"Uogonek";s:3:"-40";s:5:"Uring";s:3:"-40";s:1:"V";s:3:"-50";s:1:"W";s:3:"-30";s:1:"Y";s:3:"-50";s:6:"Yacute";s:3:"-50";s:9:"Ydieresis";s:3:"-50";}s:12:"Rcommaaccent";a:26:{s:1:"O";s:3:"-20";s:6:"Oacute";s:3:"-20";s:11:"Ocircumflex";s:3:"-20";s:9:"Odieresis";s:3:"-20";s:6:"Ograve";s:3:"-20";s:13:"Ohungarumlaut";s:3:"-20";s:7:"Omacron";s:3:"-20";s:6:"Oslash";s:3:"-20";s:6:"Otilde";s:3:"-20";s:1:"T";s:3:"-30";s:6:"Tcaron";s:3:"-30";s:12:"Tcommaaccent";s:3:"-30";s:1:"U";s:3:"-40";s:6:"Uacute";s:3:"-40";s:11:"Ucircumflex";s:3:"-40";s:9:"Udieresis";s:3:"-40";s:6:"Ugrave";s:3:"-40";s:13:"Uhungarumlaut";s:3:"-40";s:7:"Umacron";s:3:"-40";s:7:"Uogonek";s:3:"-40";s:5:"Uring";s:3:"-40";s:1:"V";s:3:"-50";s:1:"W";s:3:"-30";s:1:"Y";s:3:"-50";s:6:"Yacute";s:3:"-50";s:9:"Ydieresis";s:3:"-50";}s:1:"S";a:2:{s:5:"comma";s:3:"-20";s:6:"period";s:3:"-20";}s:6:"Sacute";a:2:{s:5:"comma";s:3:"-20";s:6:"period";s:3:"-20";}s:6:"Scaron";a:2:{s:5:"comma";s:3:"-20";s:6:"period";s:3:"-20";}s:8:"Scedilla";a:2:{s:5:"comma";s:3:"-20";s:6:"period";s:3:"-20";}s:12:"Scommaaccent";a:2:{s:5:"comma";s:3:"-20";s:6:"period";s:3:"-20";}s:1:"T";a:69:{s:1:"A";s:4:"-120";s:6:"Aacute";s:4:"-120";s:6:"Abreve";s:4:"-120";s:11:"Acircumflex";s:4:"-120";s:9:"Adieresis";s:4:"-120";s:6:"Agrave";s:4:"-120";s:7:"Amacron";s:4:"-120";s:7:"Aogonek";s:4:"-120";s:5:"Aring";s:4:"-120";s:6:"Atilde";s:4:"-120";s:1:"O";s:3:"-40";s:6:"Oacute";s:3:"-40";s:11:"Ocircumflex";s:3:"-40";s:9:"Odieresis";s:3:"-40";s:6:"Ograve";s:3:"-40";s:13:"Ohungarumlaut";s:3:"-40";s:7:"Omacron";s:3:"-40";s:6:"Oslash";s:3:"-40";s:6:"Otilde";s:3:"-40";s:1:"a";s:4:"-120";s:6:"aacute";s:4:"-120";s:6:"abreve";s:3:"-60";s:11:"acircumflex";s:4:"-120";s:9:"adieresis";s:4:"-120";s:6:"agrave";s:4:"-120";s:7:"amacron";s:3:"-60";s:7:"aogonek";s:4:"-120";s:5:"aring";s:4:"-120";s:6:"atilde";s:3:"-60";s:5:"colon";s:3:"-20";s:5:"comma";s:4:"-120";s:1:"e";s:4:"-120";s:6:"eacute";s:4:"-120";s:6:"ecaron";s:4:"-120";s:11:"ecircumflex";s:4:"-120";s:9:"edieresis";s:4:"-120";s:10:"edotaccent";s:4:"-120";s:6:"egrave";s:3:"-60";s:7:"emacron";s:3:"-60";s:7:"eogonek";s:4:"-120";s:6:"hyphen";s:4:"-140";s:1:"o";s:4:"-120";s:6:"oacute";s:4:"-120";s:11:"ocircumflex";s:4:"-120";s:9:"odieresis";s:4:"-120";s:6:"ograve";s:4:"-120";s:13:"ohungarumlaut";s:4:"-120";s:7:"omacron";s:3:"-60";s:6:"oslash";s:4:"-120";s:6:"otilde";s:3:"-60";s:6:"period";s:4:"-120";s:1:"r";s:4:"-120";s:6:"racute";s:4:"-120";s:6:"rcaron";s:4:"-120";s:12:"rcommaaccent";s:4:"-120";s:9:"semicolon";s:3:"-20";s:1:"u";s:4:"-120";s:6:"uacute";s:4:"-120";s:11:"ucircumflex";s:4:"-120";s:9:"udieresis";s:4:"-120";s:6:"ugrave";s:4:"-120";s:13:"uhungarumlaut";s:4:"-120";s:7:"umacron";s:3:"-60";s:7:"uogonek";s:4:"-120";s:5:"uring";s:4:"-120";s:1:"w";s:4:"-120";s:1:"y";s:4:"-120";s:6:"yacute";s:4:"-120";s:9:"ydieresis";s:3:"-60";}s:6:"Tcaron";a:69:{s:1:"A";s:4:"-120";s:6:"Aacute";s:4:"-120";s:6:"Abreve";s:4:"-120";s:11:"Acircumflex";s:4:"-120";s:9:"Adieresis";s:4:"-120";s:6:"Agrave";s:4:"-120";s:7:"Amacron";s:4:"-120";s:7:"Aogonek";s:4:"-120";s:5:"Aring";s:4:"-120";s:6:"Atilde";s:4:"-120";s:1:"O";s:3:"-40";s:6:"Oacute";s:3:"-40";s:11:"Ocircumflex";s:3:"-40";s:9:"Odieresis";s:3:"-40";s:6:"Ograve";s:3:"-40";s:13:"Ohungarumlaut";s:3:"-40";s:7:"Omacron";s:3:"-40";s:6:"Oslash";s:3:"-40";s:6:"Otilde";s:3:"-40";s:1:"a";s:4:"-120";s:6:"aacute";s:4:"-120";s:6:"abreve";s:3:"-60";s:11:"acircumflex";s:4:"-120";s:9:"adieresis";s:4:"-120";s:6:"agrave";s:4:"-120";s:7:"amacron";s:3:"-60";s:7:"aogonek";s:4:"-120";s:5:"aring";s:4:"-120";s:6:"atilde";s:3:"-60";s:5:"colon";s:3:"-20";s:5:"comma";s:4:"-120";s:1:"e";s:4:"-120";s:6:"eacute";s:4:"-120";s:6:"ecaron";s:4:"-120";s:11:"ecircumflex";s:4:"-120";s:9:"edieresis";s:4:"-120";s:10:"edotaccent";s:4:"-120";s:6:"egrave";s:3:"-60";s:7:"emacron";s:3:"-60";s:7:"eogonek";s:4:"-120";s:6:"hyphen";s:4:"-140";s:1:"o";s:4:"-120";s:6:"oacute";s:4:"-120";s:11:"ocircumflex";s:4:"-120";s:9:"odieresis";s:4:"-120";s:6:"ograve";s:4:"-120";s:13:"ohungarumlaut";s:4:"-120";s:7:"omacron";s:3:"-60";s:6:"oslash";s:4:"-120";s:6:"otilde";s:3:"-60";s:6:"period";s:4:"-120";s:1:"r";s:4:"-120";s:6:"racute";s:4:"-120";s:6:"rcaron";s:4:"-120";s:12:"rcommaaccent";s:4:"-120";s:9:"semicolon";s:3:"-20";s:1:"u";s:4:"-120";s:6:"uacute";s:4:"-120";s:11:"ucircumflex";s:4:"-120";s:9:"udieresis";s:4:"-120";s:6:"ugrave";s:4:"-120";s:13:"uhungarumlaut";s:4:"-120";s:7:"umacron";s:3:"-60";s:7:"uogonek";s:4:"-120";s:5:"uring";s:4:"-120";s:1:"w";s:4:"-120";s:1:"y";s:4:"-120";s:6:"yacute";s:4:"-120";s:9:"ydieresis";s:3:"-60";}s:12:"Tcommaaccent";a:69:{s:1:"A";s:4:"-120";s:6:"Aacute";s:4:"-120";s:6:"Abreve";s:4:"-120";s:11:"Acircumflex";s:4:"-120";s:9:"Adieresis";s:4:"-120";s:6:"Agrave";s:4:"-120";s:7:"Amacron";s:4:"-120";s:7:"Aogonek";s:4:"-120";s:5:"Aring";s:4:"-120";s:6:"Atilde";s:4:"-120";s:1:"O";s:3:"-40";s:6:"Oacute";s:3:"-40";s:11:"Ocircumflex";s:3:"-40";s:9:"Odieresis";s:3:"-40";s:6:"Ograve";s:3:"-40";s:13:"Ohungarumlaut";s:3:"-40";s:7:"Omacron";s:3:"-40";s:6:"Oslash";s:3:"-40";s:6:"Otilde";s:3:"-40";s:1:"a";s:4:"-120";s:6:"aacute";s:4:"-120";s:6:"abreve";s:3:"-60";s:11:"acircumflex";s:4:"-120";s:9:"adieresis";s:4:"-120";s:6:"agrave";s:4:"-120";s:7:"amacron";s:3:"-60";s:7:"aogonek";s:4:"-120";s:5:"aring";s:4:"-120";s:6:"atilde";s:3:"-60";s:5:"colon";s:3:"-20";s:5:"comma";s:4:"-120";s:1:"e";s:4:"-120";s:6:"eacute";s:4:"-120";s:6:"ecaron";s:4:"-120";s:11:"ecircumflex";s:4:"-120";s:9:"edieresis";s:4:"-120";s:10:"edotaccent";s:4:"-120";s:6:"egrave";s:3:"-60";s:7:"emacron";s:3:"-60";s:7:"eogonek";s:4:"-120";s:6:"hyphen";s:4:"-140";s:1:"o";s:4:"-120";s:6:"oacute";s:4:"-120";s:11:"ocircumflex";s:4:"-120";s:9:"odieresis";s:4:"-120";s:6:"ograve";s:4:"-120";s:13:"ohungarumlaut";s:4:"-120";s:7:"omacron";s:3:"-60";s:6:"oslash";s:4:"-120";s:6:"otilde";s:3:"-60";s:6:"period";s:4:"-120";s:1:"r";s:4:"-120";s:6:"racute";s:4:"-120";s:6:"rcaron";s:4:"-120";s:12:"rcommaaccent";s:4:"-120";s:9:"semicolon";s:3:"-20";s:1:"u";s:4:"-120";s:6:"uacute";s:4:"-120";s:11:"ucircumflex";s:4:"-120";s:9:"udieresis";s:4:"-120";s:6:"ugrave";s:4:"-120";s:13:"uhungarumlaut";s:4:"-120";s:7:"umacron";s:3:"-60";s:7:"uogonek";s:4:"-120";s:5:"uring";s:4:"-120";s:1:"w";s:4:"-120";s:1:"y";s:4:"-120";s:6:"yacute";s:4:"-120";s:9:"ydieresis";s:3:"-60";}s:1:"U";a:12:{s:1:"A";s:3:"-40";s:6:"Aacute";s:3:"-40";s:6:"Abreve";s:3:"-40";s:11:"Acircumflex";s:3:"-40";s:9:"Adieresis";s:3:"-40";s:6:"Agrave";s:3:"-40";s:7:"Amacron";s:3:"-40";s:7:"Aogonek";s:3:"-40";s:5:"Aring";s:3:"-40";s:6:"Atilde";s:3:"-40";s:5:"comma";s:3:"-40";s:6:"period";s:3:"-40";}s:6:"Uacute";a:12:{s:1:"A";s:3:"-40";s:6:"Aacute";s:3:"-40";s:6:"Abreve";s:3:"-40";s:11:"Acircumflex";s:3:"-40";s:9:"Adieresis";s:3:"-40";s:6:"Agrave";s:3:"-40";s:7:"Amacron";s:3:"-40";s:7:"Aogonek";s:3:"-40";s:5:"Aring";s:3:"-40";s:6:"Atilde";s:3:"-40";s:5:"comma";s:3:"-40";s:6:"period";s:3:"-40";}s:11:"Ucircumflex";a:12:{s:1:"A";s:3:"-40";s:6:"Aacute";s:3:"-40";s:6:"Abreve";s:3:"-40";s:11:"Acircumflex";s:3:"-40";s:9:"Adieresis";s:3:"-40";s:6:"Agrave";s:3:"-40";s:7:"Amacron";s:3:"-40";s:7:"Aogonek";s:3:"-40";s:5:"Aring";s:3:"-40";s:6:"Atilde";s:3:"-40";s:5:"comma";s:3:"-40";s:6:"period";s:3:"-40";}s:9:"Udieresis";a:12:{s:1:"A";s:3:"-40";s:6:"Aacute";s:3:"-40";s:6:"Abreve";s:3:"-40";s:11:"Acircumflex";s:3:"-40";s:9:"Adieresis";s:3:"-40";s:6:"Agrave";s:3:"-40";s:7:"Amacron";s:3:"-40";s:7:"Aogonek";s:3:"-40";s:5:"Aring";s:3:"-40";s:6:"Atilde";s:3:"-40";s:5:"comma";s:3:"-40";s:6:"period";s:3:"-40";}s:6:"Ugrave";a:12:{s:1:"A";s:3:"-40";s:6:"Aacute";s:3:"-40";s:6:"Abreve";s:3:"-40";s:11:"Acircumflex";s:3:"-40";s:9:"Adieresis";s:3:"-40";s:6:"Agrave";s:3:"-40";s:7:"Amacron";s:3:"-40";s:7:"Aogonek";s:3:"-40";s:5:"Aring";s:3:"-40";s:6:"Atilde";s:3:"-40";s:5:"comma";s:3:"-40";s:6:"period";s:3:"-40";}s:13:"Uhungarumlaut";a:12:{s:1:"A";s:3:"-40";s:6:"Aacute";s:3:"-40";s:6:"Abreve";s:3:"-40";s:11:"Acircumflex";s:3:"-40";s:9:"Adieresis";s:3:"-40";s:6:"Agrave";s:3:"-40";s:7:"Amacron";s:3:"-40";s:7:"Aogonek";s:3:"-40";s:5:"Aring";s:3:"-40";s:6:"Atilde";s:3:"-40";s:5:"comma";s:3:"-40";s:6:"period";s:3:"-40";}s:7:"Umacron";a:12:{s:1:"A";s:3:"-40";s:6:"Aacute";s:3:"-40";s:6:"Abreve";s:3:"-40";s:11:"Acircumflex";s:3:"-40";s:9:"Adieresis";s:3:"-40";s:6:"Agrave";s:3:"-40";s:7:"Amacron";s:3:"-40";s:7:"Aogonek";s:3:"-40";s:5:"Aring";s:3:"-40";s:6:"Atilde";s:3:"-40";s:5:"comma";s:3:"-40";s:6:"period";s:3:"-40";}s:7:"Uogonek";a:12:{s:1:"A";s:3:"-40";s:6:"Aacute";s:3:"-40";s:6:"Abreve";s:3:"-40";s:11:"Acircumflex";s:3:"-40";s:9:"Adieresis";s:3:"-40";s:6:"Agrave";s:3:"-40";s:7:"Amacron";s:3:"-40";s:7:"Aogonek";s:3:"-40";s:5:"Aring";s:3:"-40";s:6:"Atilde";s:3:"-40";s:5:"comma";s:3:"-40";s:6:"period";s:3:"-40";}s:5:"Uring";a:12:{s:1:"A";s:3:"-40";s:6:"Aacute";s:3:"-40";s:6:"Abreve";s:3:"-40";s:11:"Acircumflex";s:3:"-40";s:9:"Adieresis";s:3:"-40";s:6:"Agrave";s:3:"-40";s:7:"Amacron";s:3:"-40";s:7:"Aogonek";s:3:"-40";s:5:"Aring";s:3:"-40";s:6:"Atilde";s:3:"-40";s:5:"comma";s:3:"-40";s:6:"period";s:3:"-40";}s:1:"V";a:64:{s:1:"A";s:3:"-80";s:6:"Aacute";s:3:"-80";s:6:"Abreve";s:3:"-80";s:11:"Acircumflex";s:3:"-80";s:9:"Adieresis";s:3:"-80";s:6:"Agrave";s:3:"-80";s:7:"Amacron";s:3:"-80";s:7:"Aogonek";s:3:"-80";s:5:"Aring";s:3:"-80";s:6:"Atilde";s:3:"-80";s:1:"G";s:3:"-40";s:6:"Gbreve";s:3:"-40";s:12:"Gcommaaccent";s:3:"-40";s:1:"O";s:3:"-40";s:6:"Oacute";s:3:"-40";s:11:"Ocircumflex";s:3:"-40";s:9:"Odieresis";s:3:"-40";s:6:"Ograve";s:3:"-40";s:13:"Ohungarumlaut";s:3:"-40";s:7:"Omacron";s:3:"-40";s:6:"Oslash";s:3:"-40";s:6:"Otilde";s:3:"-40";s:1:"a";s:3:"-70";s:6:"aacute";s:3:"-70";s:6:"abreve";s:3:"-70";s:11:"acircumflex";s:3:"-70";s:9:"adieresis";s:3:"-70";s:6:"agrave";s:3:"-70";s:7:"amacron";s:3:"-70";s:7:"aogonek";s:3:"-70";s:5:"aring";s:3:"-70";s:6:"atilde";s:3:"-70";s:5:"colon";s:3:"-40";s:5:"comma";s:4:"-125";s:1:"e";s:3:"-80";s:6:"eacute";s:3:"-80";s:6:"ecaron";s:3:"-80";s:11:"ecircumflex";s:3:"-80";s:9:"edieresis";s:3:"-80";s:10:"edotaccent";s:3:"-80";s:6:"egrave";s:3:"-80";s:7:"emacron";s:3:"-80";s:7:"eogonek";s:3:"-80";s:6:"hyphen";s:3:"-80";s:1:"o";s:3:"-80";s:6:"oacute";s:3:"-80";s:11:"ocircumflex";s:3:"-80";s:9:"odieresis";s:3:"-80";s:6:"ograve";s:3:"-80";s:13:"ohungarumlaut";s:3:"-80";s:7:"omacron";s:3:"-80";s:6:"oslash";s:3:"-80";s:6:"otilde";s:3:"-80";s:6:"period";s:4:"-125";s:9:"semicolon";s:3:"-40";s:1:"u";s:3:"-70";s:6:"uacute";s:3:"-70";s:11:"ucircumflex";s:3:"-70";s:9:"udieresis";s:3:"-70";s:6:"ugrave";s:3:"-70";s:13:"uhungarumlaut";s:3:"-70";s:7:"umacron";s:3:"-70";s:7:"uogonek";s:3:"-70";s:5:"uring";s:3:"-70";}s:1:"W";a:62:{s:1:"A";s:3:"-50";s:6:"Aacute";s:3:"-50";s:6:"Abreve";s:3:"-50";s:11:"Acircumflex";s:3:"-50";s:9:"Adieresis";s:3:"-50";s:6:"Agrave";s:3:"-50";s:7:"Amacron";s:3:"-50";s:7:"Aogonek";s:3:"-50";s:5:"Aring";s:3:"-50";s:6:"Atilde";s:3:"-50";s:1:"O";s:3:"-20";s:6:"Oacute";s:3:"-20";s:11:"Ocircumflex";s:3:"-20";s:9:"Odieresis";s:3:"-20";s:6:"Ograve";s:3:"-20";s:13:"Ohungarumlaut";s:3:"-20";s:7:"Omacron";s:3:"-20";s:6:"Oslash";s:3:"-20";s:6:"Otilde";s:3:"-20";s:1:"a";s:3:"-40";s:6:"aacute";s:3:"-40";s:6:"abreve";s:3:"-40";s:11:"acircumflex";s:3:"-40";s:9:"adieresis";s:3:"-40";s:6:"agrave";s:3:"-40";s:7:"amacron";s:3:"-40";s:7:"aogonek";s:3:"-40";s:5:"aring";s:3:"-40";s:6:"atilde";s:3:"-40";s:5:"comma";s:3:"-80";s:1:"e";s:3:"-30";s:6:"eacute";s:3:"-30";s:6:"ecaron";s:3:"-30";s:11:"ecircumflex";s:3:"-30";s:9:"edieresis";s:3:"-30";s:10:"edotaccent";s:3:"-30";s:6:"egrave";s:3:"-30";s:7:"emacron";s:3:"-30";s:7:"eogonek";s:3:"-30";s:6:"hyphen";s:3:"-40";s:1:"o";s:3:"-30";s:6:"oacute";s:3:"-30";s:11:"ocircumflex";s:3:"-30";s:9:"odieresis";s:3:"-30";s:6:"ograve";s:3:"-30";s:13:"ohungarumlaut";s:3:"-30";s:7:"omacron";s:3:"-30";s:6:"oslash";s:3:"-30";s:6:"otilde";s:3:"-30";s:6:"period";s:3:"-80";s:1:"u";s:3:"-30";s:6:"uacute";s:3:"-30";s:11:"ucircumflex";s:3:"-30";s:9:"udieresis";s:3:"-30";s:6:"ugrave";s:3:"-30";s:13:"uhungarumlaut";s:3:"-30";s:7:"umacron";s:3:"-30";s:7:"uogonek";s:3:"-30";s:5:"uring";s:3:"-30";s:1:"y";s:3:"-20";s:6:"yacute";s:3:"-20";s:9:"ydieresis";s:3:"-20";}s:1:"Y";a:64:{s:1:"A";s:4:"-110";s:6:"Aacute";s:4:"-110";s:6:"Abreve";s:4:"-110";s:11:"Acircumflex";s:4:"-110";s:9:"Adieresis";s:4:"-110";s:6:"Agrave";s:4:"-110";s:7:"Amacron";s:4:"-110";s:7:"Aogonek";s:4:"-110";s:5:"Aring";s:4:"-110";s:6:"Atilde";s:4:"-110";s:1:"O";s:3:"-85";s:6:"Oacute";s:3:"-85";s:11:"Ocircumflex";s:3:"-85";s:9:"Odieresis";s:3:"-85";s:6:"Ograve";s:3:"-85";s:13:"Ohungarumlaut";s:3:"-85";s:7:"Omacron";s:3:"-85";s:6:"Oslash";s:3:"-85";s:6:"Otilde";s:3:"-85";s:1:"a";s:4:"-140";s:6:"aacute";s:4:"-140";s:6:"abreve";s:3:"-70";s:11:"acircumflex";s:4:"-140";s:9:"adieresis";s:4:"-140";s:6:"agrave";s:4:"-140";s:7:"amacron";s:3:"-70";s:7:"aogonek";s:4:"-140";s:5:"aring";s:4:"-140";s:6:"atilde";s:4:"-140";s:5:"colon";s:3:"-60";s:5:"comma";s:4:"-140";s:1:"e";s:4:"-140";s:6:"eacute";s:4:"-140";s:6:"ecaron";s:4:"-140";s:11:"ecircumflex";s:4:"-140";s:9:"edieresis";s:4:"-140";s:10:"edotaccent";s:4:"-140";s:6:"egrave";s:4:"-140";s:7:"emacron";s:3:"-70";s:7:"eogonek";s:4:"-140";s:6:"hyphen";s:4:"-140";s:1:"i";s:3:"-20";s:6:"iacute";s:3:"-20";s:7:"iogonek";s:3:"-20";s:1:"o";s:4:"-140";s:6:"oacute";s:4:"-140";s:11:"ocircumflex";s:4:"-140";s:9:"odieresis";s:4:"-140";s:6:"ograve";s:4:"-140";s:13:"ohungarumlaut";s:4:"-140";s:7:"omacron";s:4:"-140";s:6:"oslash";s:4:"-140";s:6:"otilde";s:4:"-140";s:6:"period";s:4:"-140";s:9:"semicolon";s:3:"-60";s:1:"u";s:4:"-110";s:6:"uacute";s:4:"-110";s:11:"ucircumflex";s:4:"-110";s:9:"udieresis";s:4:"-110";s:6:"ugrave";s:4:"-110";s:13:"uhungarumlaut";s:4:"-110";s:7:"umacron";s:4:"-110";s:7:"uogonek";s:4:"-110";s:5:"uring";s:4:"-110";}s:6:"Yacute";a:64:{s:1:"A";s:4:"-110";s:6:"Aacute";s:4:"-110";s:6:"Abreve";s:4:"-110";s:11:"Acircumflex";s:4:"-110";s:9:"Adieresis";s:4:"-110";s:6:"Agrave";s:4:"-110";s:7:"Amacron";s:4:"-110";s:7:"Aogonek";s:4:"-110";s:5:"Aring";s:4:"-110";s:6:"Atilde";s:4:"-110";s:1:"O";s:3:"-85";s:6:"Oacute";s:3:"-85";s:11:"Ocircumflex";s:3:"-85";s:9:"Odieresis";s:3:"-85";s:6:"Ograve";s:3:"-85";s:13:"Ohungarumlaut";s:3:"-85";s:7:"Omacron";s:3:"-85";s:6:"Oslash";s:3:"-85";s:6:"Otilde";s:3:"-85";s:1:"a";s:4:"-140";s:6:"aacute";s:4:"-140";s:6:"abreve";s:3:"-70";s:11:"acircumflex";s:4:"-140";s:9:"adieresis";s:4:"-140";s:6:"agrave";s:4:"-140";s:7:"amacron";s:3:"-70";s:7:"aogonek";s:4:"-140";s:5:"aring";s:4:"-140";s:6:"atilde";s:3:"-70";s:5:"colon";s:3:"-60";s:5:"comma";s:4:"-140";s:1:"e";s:4:"-140";s:6:"eacute";s:4:"-140";s:6:"ecaron";s:4:"-140";s:11:"ecircumflex";s:4:"-140";s:9:"edieresis";s:4:"-140";s:10:"edotaccent";s:4:"-140";s:6:"egrave";s:4:"-140";s:7:"emacron";s:3:"-70";s:7:"eogonek";s:4:"-140";s:6:"hyphen";s:4:"-140";s:1:"i";s:3:"-20";s:6:"iacute";s:3:"-20";s:7:"iogonek";s:3:"-20";s:1:"o";s:4:"-140";s:6:"oacute";s:4:"-140";s:11:"ocircumflex";s:4:"-140";s:9:"odieresis";s:4:"-140";s:6:"ograve";s:4:"-140";s:13:"ohungarumlaut";s:4:"-140";s:7:"omacron";s:3:"-70";s:6:"oslash";s:4:"-140";s:6:"otilde";s:4:"-140";s:6:"period";s:4:"-140";s:9:"semicolon";s:3:"-60";s:1:"u";s:4:"-110";s:6:"uacute";s:4:"-110";s:11:"ucircumflex";s:4:"-110";s:9:"udieresis";s:4:"-110";s:6:"ugrave";s:4:"-110";s:13:"uhungarumlaut";s:4:"-110";s:7:"umacron";s:4:"-110";s:7:"uogonek";s:4:"-110";s:5:"uring";s:4:"-110";}s:9:"Ydieresis";a:64:{s:1:"A";s:4:"-110";s:6:"Aacute";s:4:"-110";s:6:"Abreve";s:4:"-110";s:11:"Acircumflex";s:4:"-110";s:9:"Adieresis";s:4:"-110";s:6:"Agrave";s:4:"-110";s:7:"Amacron";s:4:"-110";s:7:"Aogonek";s:4:"-110";s:5:"Aring";s:4:"-110";s:6:"Atilde";s:4:"-110";s:1:"O";s:3:"-85";s:6:"Oacute";s:3:"-85";s:11:"Ocircumflex";s:3:"-85";s:9:"Odieresis";s:3:"-85";s:6:"Ograve";s:3:"-85";s:13:"Ohungarumlaut";s:3:"-85";s:7:"Omacron";s:3:"-85";s:6:"Oslash";s:3:"-85";s:6:"Otilde";s:3:"-85";s:1:"a";s:4:"-140";s:6:"aacute";s:4:"-140";s:6:"abreve";s:3:"-70";s:11:"acircumflex";s:4:"-140";s:9:"adieresis";s:4:"-140";s:6:"agrave";s:4:"-140";s:7:"amacron";s:3:"-70";s:7:"aogonek";s:4:"-140";s:5:"aring";s:4:"-140";s:6:"atilde";s:3:"-70";s:5:"colon";s:3:"-60";s:5:"comma";s:4:"-140";s:1:"e";s:4:"-140";s:6:"eacute";s:4:"-140";s:6:"ecaron";s:4:"-140";s:11:"ecircumflex";s:4:"-140";s:9:"edieresis";s:4:"-140";s:10:"edotaccent";s:4:"-140";s:6:"egrave";s:4:"-140";s:7:"emacron";s:3:"-70";s:7:"eogonek";s:4:"-140";s:6:"hyphen";s:4:"-140";s:1:"i";s:3:"-20";s:6:"iacute";s:3:"-20";s:7:"iogonek";s:3:"-20";s:1:"o";s:4:"-140";s:6:"oacute";s:4:"-140";s:11:"ocircumflex";s:4:"-140";s:9:"odieresis";s:4:"-140";s:6:"ograve";s:4:"-140";s:13:"ohungarumlaut";s:4:"-140";s:7:"omacron";s:4:"-140";s:6:"oslash";s:4:"-140";s:6:"otilde";s:4:"-140";s:6:"period";s:4:"-140";s:9:"semicolon";s:3:"-60";s:1:"u";s:4:"-110";s:6:"uacute";s:4:"-110";s:11:"ucircumflex";s:4:"-110";s:9:"udieresis";s:4:"-110";s:6:"ugrave";s:4:"-110";s:13:"uhungarumlaut";s:4:"-110";s:7:"umacron";s:4:"-110";s:7:"uogonek";s:4:"-110";s:5:"uring";s:4:"-110";}s:1:"a";a:5:{s:1:"v";s:3:"-20";s:1:"w";s:3:"-20";s:1:"y";s:3:"-30";s:6:"yacute";s:3:"-30";s:9:"ydieresis";s:3:"-30";}s:6:"aacute";a:5:{s:1:"v";s:3:"-20";s:1:"w";s:3:"-20";s:1:"y";s:3:"-30";s:6:"yacute";s:3:"-30";s:9:"ydieresis";s:3:"-30";}s:6:"abreve";a:5:{s:1:"v";s:3:"-20";s:1:"w";s:3:"-20";s:1:"y";s:3:"-30";s:6:"yacute";s:3:"-30";s:9:"ydieresis";s:3:"-30";}s:11:"acircumflex";a:5:{s:1:"v";s:3:"-20";s:1:"w";s:3:"-20";s:1:"y";s:3:"-30";s:6:"yacute";s:3:"-30";s:9:"ydieresis";s:3:"-30";}s:9:"adieresis";a:5:{s:1:"v";s:3:"-20";s:1:"w";s:3:"-20";s:1:"y";s:3:"-30";s:6:"yacute";s:3:"-30";s:9:"ydieresis";s:3:"-30";}s:6:"agrave";a:5:{s:1:"v";s:3:"-20";s:1:"w";s:3:"-20";s:1:"y";s:3:"-30";s:6:"yacute";s:3:"-30";s:9:"ydieresis";s:3:"-30";}s:7:"amacron";a:5:{s:1:"v";s:3:"-20";s:1:"w";s:3:"-20";s:1:"y";s:3:"-30";s:6:"yacute";s:3:"-30";s:9:"ydieresis";s:3:"-30";}s:7:"aogonek";a:5:{s:1:"v";s:3:"-20";s:1:"w";s:3:"-20";s:1:"y";s:3:"-30";s:6:"yacute";s:3:"-30";s:9:"ydieresis";s:3:"-30";}s:5:"aring";a:5:{s:1:"v";s:3:"-20";s:1:"w";s:3:"-20";s:1:"y";s:3:"-30";s:6:"yacute";s:3:"-30";s:9:"ydieresis";s:3:"-30";}s:6:"atilde";a:5:{s:1:"v";s:3:"-20";s:1:"w";s:3:"-20";s:1:"y";s:3:"-30";s:6:"yacute";s:3:"-30";s:9:"ydieresis";s:3:"-30";}s:1:"b";a:20:{s:1:"b";s:3:"-10";s:5:"comma";s:3:"-40";s:1:"l";s:3:"-20";s:6:"lacute";s:3:"-20";s:12:"lcommaaccent";s:3:"-20";s:6:"lslash";s:3:"-20";s:6:"period";s:3:"-40";s:1:"u";s:3:"-20";s:6:"uacute";s:3:"-20";s:11:"ucircumflex";s:3:"-20";s:9:"udieresis";s:3:"-20";s:6:"ugrave";s:3:"-20";s:13:"uhungarumlaut";s:3:"-20";s:7:"umacron";s:3:"-20";s:7:"uogonek";s:3:"-20";s:5:"uring";s:3:"-20";s:1:"v";s:3:"-20";s:1:"y";s:3:"-20";s:6:"yacute";s:3:"-20";s:9:"ydieresis";s:3:"-20";}s:1:"c";a:3:{s:5:"comma";s:3:"-15";s:1:"k";s:3:"-20";s:12:"kcommaaccent";s:3:"-20";}s:6:"cacute";a:3:{s:5:"comma";s:3:"-15";s:1:"k";s:3:"-20";s:12:"kcommaaccent";s:3:"-20";}s:6:"ccaron";a:3:{s:5:"comma";s:3:"-15";s:1:"k";s:3:"-20";s:12:"kcommaaccent";s:3:"-20";}s:8:"ccedilla";a:3:{s:5:"comma";s:3:"-15";s:1:"k";s:3:"-20";s:12:"kcommaaccent";s:3:"-20";}s:5:"colon";a:1:{s:5:"space";s:3:"-50";}s:5:"comma";a:2:{s:13:"quotedblright";s:4:"-100";s:10:"quoteright";s:4:"-100";}s:1:"e";a:8:{s:5:"comma";s:3:"-15";s:6:"period";s:3:"-15";s:1:"v";s:3:"-30";s:1:"w";s:3:"-20";s:1:"x";s:3:"-30";s:1:"y";s:3:"-20";s:6:"yacute";s:3:"-20";s:9:"ydieresis";s:3:"-20";}s:6:"eacute";a:8:{s:5:"comma";s:3:"-15";s:6:"period";s:3:"-15";s:1:"v";s:3:"-30";s:1:"w";s:3:"-20";s:1:"x";s:3:"-30";s:1:"y";s:3:"-20";s:6:"yacute";s:3:"-20";s:9:"ydieresis";s:3:"-20";}s:6:"ecaron";a:8:{s:5:"comma";s:3:"-15";s:6:"period";s:3:"-15";s:1:"v";s:3:"-30";s:1:"w";s:3:"-20";s:1:"x";s:3:"-30";s:1:"y";s:3:"-20";s:6:"yacute";s:3:"-20";s:9:"ydieresis";s:3:"-20";}s:11:"ecircumflex";a:8:{s:5:"comma";s:3:"-15";s:6:"period";s:3:"-15";s:1:"v";s:3:"-30";s:1:"w";s:3:"-20";s:1:"x";s:3:"-30";s:1:"y";s:3:"-20";s:6:"yacute";s:3:"-20";s:9:"ydieresis";s:3:"-20";}s:9:"edieresis";a:8:{s:5:"comma";s:3:"-15";s:6:"period";s:3:"-15";s:1:"v";s:3:"-30";s:1:"w";s:3:"-20";s:1:"x";s:3:"-30";s:1:"y";s:3:"-20";s:6:"yacute";s:3:"-20";s:9:"ydieresis";s:3:"-20";}s:10:"edotaccent";a:8:{s:5:"comma";s:3:"-15";s:6:"period";s:3:"-15";s:1:"v";s:3:"-30";s:1:"w";s:3:"-20";s:1:"x";s:3:"-30";s:1:"y";s:3:"-20";s:6:"yacute";s:3:"-20";s:9:"ydieresis";s:3:"-20";}s:6:"egrave";a:8:{s:5:"comma";s:3:"-15";s:6:"period";s:3:"-15";s:1:"v";s:3:"-30";s:1:"w";s:3:"-20";s:1:"x";s:3:"-30";s:1:"y";s:3:"-20";s:6:"yacute";s:3:"-20";s:9:"ydieresis";s:3:"-20";}s:7:"emacron";a:8:{s:5:"comma";s:3:"-15";s:6:"period";s:3:"-15";s:1:"v";s:3:"-30";s:1:"w";s:3:"-20";s:1:"x";s:3:"-30";s:1:"y";s:3:"-20";s:6:"yacute";s:3:"-20";s:9:"ydieresis";s:3:"-20";}s:7:"eogonek";a:8:{s:5:"comma";s:3:"-15";s:6:"period";s:3:"-15";s:1:"v";s:3:"-30";s:1:"w";s:3:"-20";s:1:"x";s:3:"-30";s:1:"y";s:3:"-20";s:6:"yacute";s:3:"-20";s:9:"ydieresis";s:3:"-20";}s:1:"f";a:33:{s:1:"a";s:3:"-30";s:6:"aacute";s:3:"-30";s:6:"abreve";s:3:"-30";s:11:"acircumflex";s:3:"-30";s:9:"adieresis";s:3:"-30";s:6:"agrave";s:3:"-30";s:7:"amacron";s:3:"-30";s:7:"aogonek";s:3:"-30";s:5:"aring";s:3:"-30";s:6:"atilde";s:3:"-30";s:5:"comma";s:3:"-30";s:8:"dotlessi";s:3:"-28";s:1:"e";s:3:"-30";s:6:"eacute";s:3:"-30";s:6:"ecaron";s:3:"-30";s:11:"ecircumflex";s:3:"-30";s:9:"edieresis";s:3:"-30";s:10:"edotaccent";s:3:"-30";s:6:"egrave";s:3:"-30";s:7:"emacron";s:3:"-30";s:7:"eogonek";s:3:"-30";s:1:"o";s:3:"-30";s:6:"oacute";s:3:"-30";s:11:"ocircumflex";s:3:"-30";s:9:"odieresis";s:3:"-30";s:6:"ograve";s:3:"-30";s:13:"ohungarumlaut";s:3:"-30";s:7:"omacron";s:3:"-30";s:6:"oslash";s:3:"-30";s:6:"otilde";s:3:"-30";s:6:"period";s:3:"-30";s:13:"quotedblright";s:2:"60";s:10:"quoteright";s:2:"50";}s:1:"g";a:4:{s:1:"r";s:3:"-10";s:6:"racute";s:3:"-10";s:6:"rcaron";s:3:"-10";s:12:"rcommaaccent";s:3:"-10";}s:6:"gbreve";a:4:{s:1:"r";s:3:"-10";s:6:"racute";s:3:"-10";s:6:"rcaron";s:3:"-10";s:12:"rcommaaccent";s:3:"-10";}s:12:"gcommaaccent";a:4:{s:1:"r";s:3:"-10";s:6:"racute";s:3:"-10";s:6:"rcaron";s:3:"-10";s:12:"rcommaaccent";s:3:"-10";}s:1:"h";a:3:{s:1:"y";s:3:"-30";s:6:"yacute";s:3:"-30";s:9:"ydieresis";s:3:"-30";}s:1:"k";a:18:{s:1:"e";s:3:"-20";s:6:"eacute";s:3:"-20";s:6:"ecaron";s:3:"-20";s:11:"ecircumflex";s:3:"-20";s:9:"edieresis";s:3:"-20";s:10:"edotaccent";s:3:"-20";s:6:"egrave";s:3:"-20";s:7:"emacron";s:3:"-20";s:7:"eogonek";s:3:"-20";s:1:"o";s:3:"-20";s:6:"oacute";s:3:"-20";s:11:"ocircumflex";s:3:"-20";s:9:"odieresis";s:3:"-20";s:6:"ograve";s:3:"-20";s:13:"ohungarumlaut";s:3:"-20";s:7:"omacron";s:3:"-20";s:6:"oslash";s:3:"-20";s:6:"otilde";s:3:"-20";}s:12:"kcommaaccent";a:18:{s:1:"e";s:3:"-20";s:6:"eacute";s:3:"-20";s:6:"ecaron";s:3:"-20";s:11:"ecircumflex";s:3:"-20";s:9:"edieresis";s:3:"-20";s:10:"edotaccent";s:3:"-20";s:6:"egrave";s:3:"-20";s:7:"emacron";s:3:"-20";s:7:"eogonek";s:3:"-20";s:1:"o";s:3:"-20";s:6:"oacute";s:3:"-20";s:11:"ocircumflex";s:3:"-20";s:9:"odieresis";s:3:"-20";s:6:"ograve";s:3:"-20";s:13:"ohungarumlaut";s:3:"-20";s:7:"omacron";s:3:"-20";s:6:"oslash";s:3:"-20";s:6:"otilde";s:3:"-20";}s:1:"m";a:12:{s:1:"u";s:3:"-10";s:6:"uacute";s:3:"-10";s:11:"ucircumflex";s:3:"-10";s:9:"udieresis";s:3:"-10";s:6:"ugrave";s:3:"-10";s:13:"uhungarumlaut";s:3:"-10";s:7:"umacron";s:3:"-10";s:7:"uogonek";s:3:"-10";s:5:"uring";s:3:"-10";s:1:"y";s:3:"-15";s:6:"yacute";s:3:"-15";s:9:"ydieresis";s:3:"-15";}s:1:"n";a:13:{s:1:"u";s:3:"-10";s:6:"uacute";s:3:"-10";s:11:"ucircumflex";s:3:"-10";s:9:"udieresis";s:3:"-10";s:6:"ugrave";s:3:"-10";s:13:"uhungarumlaut";s:3:"-10";s:7:"umacron";s:3:"-10";s:7:"uogonek";s:3:"-10";s:5:"uring";s:3:"-10";s:1:"v";s:3:"-20";s:1:"y";s:3:"-15";s:6:"yacute";s:3:"-15";s:9:"ydieresis";s:3:"-15";}s:6:"nacute";a:13:{s:1:"u";s:3:"-10";s:6:"uacute";s:3:"-10";s:11:"ucircumflex";s:3:"-10";s:9:"udieresis";s:3:"-10";s:6:"ugrave";s:3:"-10";s:13:"uhungarumlaut";s:3:"-10";s:7:"umacron";s:3:"-10";s:7:"uogonek";s:3:"-10";s:5:"uring";s:3:"-10";s:1:"v";s:3:"-20";s:1:"y";s:3:"-15";s:6:"yacute";s:3:"-15";s:9:"ydieresis";s:3:"-15";}s:6:"ncaron";a:13:{s:1:"u";s:3:"-10";s:6:"uacute";s:3:"-10";s:11:"ucircumflex";s:3:"-10";s:9:"udieresis";s:3:"-10";s:6:"ugrave";s:3:"-10";s:13:"uhungarumlaut";s:3:"-10";s:7:"umacron";s:3:"-10";s:7:"uogonek";s:3:"-10";s:5:"uring";s:3:"-10";s:1:"v";s:3:"-20";s:1:"y";s:3:"-15";s:6:"yacute";s:3:"-15";s:9:"ydieresis";s:3:"-15";}s:12:"ncommaaccent";a:13:{s:1:"u";s:3:"-10";s:6:"uacute";s:3:"-10";s:11:"ucircumflex";s:3:"-10";s:9:"udieresis";s:3:"-10";s:6:"ugrave";s:3:"-10";s:13:"uhungarumlaut";s:3:"-10";s:7:"umacron";s:3:"-10";s:7:"uogonek";s:3:"-10";s:5:"uring";s:3:"-10";s:1:"v";s:3:"-20";s:1:"y";s:3:"-15";s:6:"yacute";s:3:"-15";s:9:"ydieresis";s:3:"-15";}s:6:"ntilde";a:13:{s:1:"u";s:3:"-10";s:6:"uacute";s:3:"-10";s:11:"ucircumflex";s:3:"-10";s:9:"udieresis";s:3:"-10";s:6:"ugrave";s:3:"-10";s:13:"uhungarumlaut";s:3:"-10";s:7:"umacron";s:3:"-10";s:7:"uogonek";s:3:"-10";s:5:"uring";s:3:"-10";s:1:"v";s:3:"-20";s:1:"y";s:3:"-15";s:6:"yacute";s:3:"-15";s:9:"ydieresis";s:3:"-15";}s:1:"o";a:8:{s:5:"comma";s:3:"-40";s:6:"period";s:3:"-40";s:1:"v";s:3:"-15";s:1:"w";s:3:"-15";s:1:"x";s:3:"-30";s:1:"y";s:3:"-30";s:6:"yacute";s:3:"-30";s:9:"ydieresis";s:3:"-30";}s:6:"oacute";a:8:{s:5:"comma";s:3:"-40";s:6:"period";s:3:"-40";s:1:"v";s:3:"-15";s:1:"w";s:3:"-15";s:1:"x";s:3:"-30";s:1:"y";s:3:"-30";s:6:"yacute";s:3:"-30";s:9:"ydieresis";s:3:"-30";}s:11:"ocircumflex";a:8:{s:5:"comma";s:3:"-40";s:6:"period";s:3:"-40";s:1:"v";s:3:"-15";s:1:"w";s:3:"-15";s:1:"x";s:3:"-30";s:1:"y";s:3:"-30";s:6:"yacute";s:3:"-30";s:9:"ydieresis";s:3:"-30";}s:9:"odieresis";a:8:{s:5:"comma";s:3:"-40";s:6:"period";s:3:"-40";s:1:"v";s:3:"-15";s:1:"w";s:3:"-15";s:1:"x";s:3:"-30";s:1:"y";s:3:"-30";s:6:"yacute";s:3:"-30";s:9:"ydieresis";s:3:"-30";}s:6:"ograve";a:8:{s:5:"comma";s:3:"-40";s:6:"period";s:3:"-40";s:1:"v";s:3:"-15";s:1:"w";s:3:"-15";s:1:"x";s:3:"-30";s:1:"y";s:3:"-30";s:6:"yacute";s:3:"-30";s:9:"ydieresis";s:3:"-30";}s:13:"ohungarumlaut";a:8:{s:5:"comma";s:3:"-40";s:6:"period";s:3:"-40";s:1:"v";s:3:"-15";s:1:"w";s:3:"-15";s:1:"x";s:3:"-30";s:1:"y";s:3:"-30";s:6:"yacute";s:3:"-30";s:9:"ydieresis";s:3:"-30";}s:7:"omacron";a:8:{s:5:"comma";s:3:"-40";s:6:"period";s:3:"-40";s:1:"v";s:3:"-15";s:1:"w";s:3:"-15";s:1:"x";s:3:"-30";s:1:"y";s:3:"-30";s:6:"yacute";s:3:"-30";s:9:"ydieresis";s:3:"-30";}s:6:"oslash";a:94:{s:1:"a";s:3:"-55";s:6:"aacute";s:3:"-55";s:6:"abreve";s:3:"-55";s:11:"acircumflex";s:3:"-55";s:9:"adieresis";s:3:"-55";s:6:"agrave";s:3:"-55";s:7:"amacron";s:3:"-55";s:7:"aogonek";s:3:"-55";s:5:"aring";s:3:"-55";s:6:"atilde";s:3:"-55";s:1:"b";s:3:"-55";s:1:"c";s:3:"-55";s:6:"cacute";s:3:"-55";s:6:"ccaron";s:3:"-55";s:8:"ccedilla";s:3:"-55";s:5:"comma";s:3:"-95";s:1:"d";s:3:"-55";s:6:"dcroat";s:3:"-55";s:1:"e";s:3:"-55";s:6:"eacute";s:3:"-55";s:6:"ecaron";s:3:"-55";s:11:"ecircumflex";s:3:"-55";s:9:"edieresis";s:3:"-55";s:10:"edotaccent";s:3:"-55";s:6:"egrave";s:3:"-55";s:7:"emacron";s:3:"-55";s:7:"eogonek";s:3:"-55";s:1:"f";s:3:"-55";s:1:"g";s:3:"-55";s:6:"gbreve";s:3:"-55";s:12:"gcommaaccent";s:3:"-55";s:1:"h";s:3:"-55";s:1:"i";s:3:"-55";s:6:"iacute";s:3:"-55";s:11:"icircumflex";s:3:"-55";s:9:"idieresis";s:3:"-55";s:6:"igrave";s:3:"-55";s:7:"imacron";s:3:"-55";s:7:"iogonek";s:3:"-55";s:1:"j";s:3:"-55";s:1:"k";s:3:"-55";s:12:"kcommaaccent";s:3:"-55";s:1:"l";s:3:"-55";s:6:"lacute";s:3:"-55";s:12:"lcommaaccent";s:3:"-55";s:6:"lslash";s:3:"-55";s:1:"m";s:3:"-55";s:1:"n";s:3:"-55";s:6:"nacute";s:3:"-55";s:6:"ncaron";s:3:"-55";s:12:"ncommaaccent";s:3:"-55";s:6:"ntilde";s:3:"-55";s:1:"o";s:3:"-55";s:6:"oacute";s:3:"-55";s:11:"ocircumflex";s:3:"-55";s:9:"odieresis";s:3:"-55";s:6:"ograve";s:3:"-55";s:13:"ohungarumlaut";s:3:"-55";s:7:"omacron";s:3:"-55";s:6:"oslash";s:3:"-55";s:6:"otilde";s:3:"-55";s:1:"p";s:3:"-55";s:6:"period";s:3:"-95";s:1:"q";s:3:"-55";s:1:"r";s:3:"-55";s:6:"racute";s:3:"-55";s:6:"rcaron";s:3:"-55";s:12:"rcommaaccent";s:3:"-55";s:1:"s";s:3:"-55";s:6:"sacute";s:3:"-55";s:6:"scaron";s:3:"-55";s:8:"scedilla";s:3:"-55";s:12:"scommaaccent";s:3:"-55";s:1:"t";s:3:"-55";s:12:"tcommaaccent";s:3:"-55";s:1:"u";s:3:"-55";s:6:"uacute";s:3:"-55";s:11:"ucircumflex";s:3:"-55";s:9:"udieresis";s:3:"-55";s:6:"ugrave";s:3:"-55";s:13:"uhungarumlaut";s:3:"-55";s:7:"umacron";s:3:"-55";s:7:"uogonek";s:3:"-55";s:5:"uring";s:3:"-55";s:1:"v";s:3:"-70";s:1:"w";s:3:"-70";s:1:"x";s:3:"-85";s:1:"y";s:3:"-70";s:6:"yacute";s:3:"-70";s:9:"ydieresis";s:3:"-70";s:1:"z";s:3:"-55";s:6:"zacute";s:3:"-55";s:6:"zcaron";s:3:"-55";s:10:"zdotaccent";s:3:"-55";}s:6:"otilde";a:8:{s:5:"comma";s:3:"-40";s:6:"period";s:3:"-40";s:1:"v";s:3:"-15";s:1:"w";s:3:"-15";s:1:"x";s:3:"-30";s:1:"y";s:3:"-30";s:6:"yacute";s:3:"-30";s:9:"ydieresis";s:3:"-30";}s:1:"p";a:5:{s:5:"comma";s:3:"-35";s:6:"period";s:3:"-35";s:1:"y";s:3:"-30";s:6:"yacute";s:3:"-30";s:9:"ydieresis";s:3:"-30";}s:6:"period";a:3:{s:13:"quotedblright";s:4:"-100";s:10:"quoteright";s:4:"-100";s:5:"space";s:3:"-60";}s:13:"quotedblright";a:1:{s:5:"space";s:3:"-40";}s:9:"quoteleft";a:1:{s:9:"quoteleft";s:3:"-57";}s:10:"quoteright";a:13:{s:1:"d";s:3:"-50";s:6:"dcroat";s:3:"-50";s:10:"quoteright";s:3:"-57";s:1:"r";s:3:"-50";s:6:"racute";s:3:"-50";s:6:"rcaron";s:3:"-50";s:12:"rcommaaccent";s:3:"-50";s:1:"s";s:3:"-50";s:6:"sacute";s:3:"-50";s:6:"scaron";s:3:"-50";s:8:"scedilla";s:3:"-50";s:12:"scommaaccent";s:3:"-50";s:5:"space";s:3:"-70";}s:1:"r";a:49:{s:1:"a";s:3:"-10";s:6:"aacute";s:3:"-10";s:6:"abreve";s:3:"-10";s:11:"acircumflex";s:3:"-10";s:9:"adieresis";s:3:"-10";s:6:"agrave";s:3:"-10";s:7:"amacron";s:3:"-10";s:7:"aogonek";s:3:"-10";s:5:"aring";s:3:"-10";s:6:"atilde";s:3:"-10";s:5:"colon";s:2:"30";s:5:"comma";s:3:"-50";s:1:"i";s:2:"15";s:6:"iacute";s:2:"15";s:11:"icircumflex";s:2:"15";s:9:"idieresis";s:2:"15";s:6:"igrave";s:2:"15";s:7:"imacron";s:2:"15";s:7:"iogonek";s:2:"15";s:1:"k";s:2:"15";s:12:"kcommaaccent";s:2:"15";s:1:"l";s:2:"15";s:6:"lacute";s:2:"15";s:12:"lcommaaccent";s:2:"15";s:6:"lslash";s:2:"15";s:1:"m";s:2:"25";s:1:"n";s:2:"25";s:6:"nacute";s:2:"25";s:6:"ncaron";s:2:"25";s:12:"ncommaaccent";s:2:"25";s:6:"ntilde";s:2:"25";s:1:"p";s:2:"30";s:6:"period";s:3:"-50";s:9:"semicolon";s:2:"30";s:1:"t";s:2:"40";s:12:"tcommaaccent";s:2:"40";s:1:"u";s:2:"15";s:6:"uacute";s:2:"15";s:11:"ucircumflex";s:2:"15";s:9:"udieresis";s:2:"15";s:6:"ugrave";s:2:"15";s:13:"uhungarumlaut";s:2:"15";s:7:"umacron";s:2:"15";s:7:"uogonek";s:2:"15";s:5:"uring";s:2:"15";s:1:"v";s:2:"30";s:1:"y";s:2:"30";s:6:"yacute";s:2:"30";s:9:"ydieresis";s:2:"30";}s:6:"racute";a:49:{s:1:"a";s:3:"-10";s:6:"aacute";s:3:"-10";s:6:"abreve";s:3:"-10";s:11:"acircumflex";s:3:"-10";s:9:"adieresis";s:3:"-10";s:6:"agrave";s:3:"-10";s:7:"amacron";s:3:"-10";s:7:"aogonek";s:3:"-10";s:5:"aring";s:3:"-10";s:6:"atilde";s:3:"-10";s:5:"colon";s:2:"30";s:5:"comma";s:3:"-50";s:1:"i";s:2:"15";s:6:"iacute";s:2:"15";s:11:"icircumflex";s:2:"15";s:9:"idieresis";s:2:"15";s:6:"igrave";s:2:"15";s:7:"imacron";s:2:"15";s:7:"iogonek";s:2:"15";s:1:"k";s:2:"15";s:12:"kcommaaccent";s:2:"15";s:1:"l";s:2:"15";s:6:"lacute";s:2:"15";s:12:"lcommaaccent";s:2:"15";s:6:"lslash";s:2:"15";s:1:"m";s:2:"25";s:1:"n";s:2:"25";s:6:"nacute";s:2:"25";s:6:"ncaron";s:2:"25";s:12:"ncommaaccent";s:2:"25";s:6:"ntilde";s:2:"25";s:1:"p";s:2:"30";s:6:"period";s:3:"-50";s:9:"semicolon";s:2:"30";s:1:"t";s:2:"40";s:12:"tcommaaccent";s:2:"40";s:1:"u";s:2:"15";s:6:"uacute";s:2:"15";s:11:"ucircumflex";s:2:"15";s:9:"udieresis";s:2:"15";s:6:"ugrave";s:2:"15";s:13:"uhungarumlaut";s:2:"15";s:7:"umacron";s:2:"15";s:7:"uogonek";s:2:"15";s:5:"uring";s:2:"15";s:1:"v";s:2:"30";s:1:"y";s:2:"30";s:6:"yacute";s:2:"30";s:9:"ydieresis";s:2:"30";}s:6:"rcaron";a:49:{s:1:"a";s:3:"-10";s:6:"aacute";s:3:"-10";s:6:"abreve";s:3:"-10";s:11:"acircumflex";s:3:"-10";s:9:"adieresis";s:3:"-10";s:6:"agrave";s:3:"-10";s:7:"amacron";s:3:"-10";s:7:"aogonek";s:3:"-10";s:5:"aring";s:3:"-10";s:6:"atilde";s:3:"-10";s:5:"colon";s:2:"30";s:5:"comma";s:3:"-50";s:1:"i";s:2:"15";s:6:"iacute";s:2:"15";s:11:"icircumflex";s:2:"15";s:9:"idieresis";s:2:"15";s:6:"igrave";s:2:"15";s:7:"imacron";s:2:"15";s:7:"iogonek";s:2:"15";s:1:"k";s:2:"15";s:12:"kcommaaccent";s:2:"15";s:1:"l";s:2:"15";s:6:"lacute";s:2:"15";s:12:"lcommaaccent";s:2:"15";s:6:"lslash";s:2:"15";s:1:"m";s:2:"25";s:1:"n";s:2:"25";s:6:"nacute";s:2:"25";s:6:"ncaron";s:2:"25";s:12:"ncommaaccent";s:2:"25";s:6:"ntilde";s:2:"25";s:1:"p";s:2:"30";s:6:"period";s:3:"-50";s:9:"semicolon";s:2:"30";s:1:"t";s:2:"40";s:12:"tcommaaccent";s:2:"40";s:1:"u";s:2:"15";s:6:"uacute";s:2:"15";s:11:"ucircumflex";s:2:"15";s:9:"udieresis";s:2:"15";s:6:"ugrave";s:2:"15";s:13:"uhungarumlaut";s:2:"15";s:7:"umacron";s:2:"15";s:7:"uogonek";s:2:"15";s:5:"uring";s:2:"15";s:1:"v";s:2:"30";s:1:"y";s:2:"30";s:6:"yacute";s:2:"30";s:9:"ydieresis";s:2:"30";}s:12:"rcommaaccent";a:49:{s:1:"a";s:3:"-10";s:6:"aacute";s:3:"-10";s:6:"abreve";s:3:"-10";s:11:"acircumflex";s:3:"-10";s:9:"adieresis";s:3:"-10";s:6:"agrave";s:3:"-10";s:7:"amacron";s:3:"-10";s:7:"aogonek";s:3:"-10";s:5:"aring";s:3:"-10";s:6:"atilde";s:3:"-10";s:5:"colon";s:2:"30";s:5:"comma";s:3:"-50";s:1:"i";s:2:"15";s:6:"iacute";s:2:"15";s:11:"icircumflex";s:2:"15";s:9:"idieresis";s:2:"15";s:6:"igrave";s:2:"15";s:7:"imacron";s:2:"15";s:7:"iogonek";s:2:"15";s:1:"k";s:2:"15";s:12:"kcommaaccent";s:2:"15";s:1:"l";s:2:"15";s:6:"lacute";s:2:"15";s:12:"lcommaaccent";s:2:"15";s:6:"lslash";s:2:"15";s:1:"m";s:2:"25";s:1:"n";s:2:"25";s:6:"nacute";s:2:"25";s:6:"ncaron";s:2:"25";s:12:"ncommaaccent";s:2:"25";s:6:"ntilde";s:2:"25";s:1:"p";s:2:"30";s:6:"period";s:3:"-50";s:9:"semicolon";s:2:"30";s:1:"t";s:2:"40";s:12:"tcommaaccent";s:2:"40";s:1:"u";s:2:"15";s:6:"uacute";s:2:"15";s:11:"ucircumflex";s:2:"15";s:9:"udieresis";s:2:"15";s:6:"ugrave";s:2:"15";s:13:"uhungarumlaut";s:2:"15";s:7:"umacron";s:2:"15";s:7:"uogonek";s:2:"15";s:5:"uring";s:2:"15";s:1:"v";s:2:"30";s:1:"y";s:2:"30";s:6:"yacute";s:2:"30";s:9:"ydieresis";s:2:"30";}s:1:"s";a:3:{s:5:"comma";s:3:"-15";s:6:"period";s:3:"-15";s:1:"w";s:3:"-30";}s:6:"sacute";a:3:{s:5:"comma";s:3:"-15";s:6:"period";s:3:"-15";s:1:"w";s:3:"-30";}s:6:"scaron";a:3:{s:5:"comma";s:3:"-15";s:6:"period";s:3:"-15";s:1:"w";s:3:"-30";}s:8:"scedilla";a:3:{s:5:"comma";s:3:"-15";s:6:"period";s:3:"-15";s:1:"w";s:3:"-30";}s:12:"scommaaccent";a:3:{s:5:"comma";s:3:"-15";s:6:"period";s:3:"-15";s:1:"w";s:3:"-30";}s:9:"semicolon";a:1:{s:5:"space";s:3:"-50";}s:5:"space";a:10:{s:1:"T";s:3:"-50";s:6:"Tcaron";s:3:"-50";s:12:"Tcommaaccent";s:3:"-50";s:1:"V";s:3:"-50";s:1:"W";s:3:"-40";s:1:"Y";s:3:"-90";s:6:"Yacute";s:3:"-90";s:9:"Ydieresis";s:3:"-90";s:12:"quotedblleft";s:3:"-30";s:9:"quoteleft";s:3:"-60";}s:1:"v";a:30:{s:1:"a";s:3:"-25";s:6:"aacute";s:3:"-25";s:6:"abreve";s:3:"-25";s:11:"acircumflex";s:3:"-25";s:9:"adieresis";s:3:"-25";s:6:"agrave";s:3:"-25";s:7:"amacron";s:3:"-25";s:7:"aogonek";s:3:"-25";s:5:"aring";s:3:"-25";s:6:"atilde";s:3:"-25";s:5:"comma";s:3:"-80";s:1:"e";s:3:"-25";s:6:"eacute";s:3:"-25";s:6:"ecaron";s:3:"-25";s:11:"ecircumflex";s:3:"-25";s:9:"edieresis";s:3:"-25";s:10:"edotaccent";s:3:"-25";s:6:"egrave";s:3:"-25";s:7:"emacron";s:3:"-25";s:7:"eogonek";s:3:"-25";s:1:"o";s:3:"-25";s:6:"oacute";s:3:"-25";s:11:"ocircumflex";s:3:"-25";s:9:"odieresis";s:3:"-25";s:6:"ograve";s:3:"-25";s:13:"ohungarumlaut";s:3:"-25";s:7:"omacron";s:3:"-25";s:6:"oslash";s:3:"-25";s:6:"otilde";s:3:"-25";s:6:"period";s:3:"-80";}s:1:"w";a:30:{s:1:"a";s:3:"-15";s:6:"aacute";s:3:"-15";s:6:"abreve";s:3:"-15";s:11:"acircumflex";s:3:"-15";s:9:"adieresis";s:3:"-15";s:6:"agrave";s:3:"-15";s:7:"amacron";s:3:"-15";s:7:"aogonek";s:3:"-15";s:5:"aring";s:3:"-15";s:6:"atilde";s:3:"-15";s:5:"comma";s:3:"-60";s:1:"e";s:3:"-10";s:6:"eacute";s:3:"-10";s:6:"ecaron";s:3:"-10";s:11:"ecircumflex";s:3:"-10";s:9:"edieresis";s:3:"-10";s:10:"edotaccent";s:3:"-10";s:6:"egrave";s:3:"-10";s:7:"emacron";s:3:"-10";s:7:"eogonek";s:3:"-10";s:1:"o";s:3:"-10";s:6:"oacute";s:3:"-10";s:11:"ocircumflex";s:3:"-10";s:9:"odieresis";s:3:"-10";s:6:"ograve";s:3:"-10";s:13:"ohungarumlaut";s:3:"-10";s:7:"omacron";s:3:"-10";s:6:"oslash";s:3:"-10";s:6:"otilde";s:3:"-10";s:6:"period";s:3:"-60";}s:1:"x";a:9:{s:1:"e";s:3:"-30";s:6:"eacute";s:3:"-30";s:6:"ecaron";s:3:"-30";s:11:"ecircumflex";s:3:"-30";s:9:"edieresis";s:3:"-30";s:10:"edotaccent";s:3:"-30";s:6:"egrave";s:3:"-30";s:7:"emacron";s:3:"-30";s:7:"eogonek";s:3:"-30";}s:1:"y";a:30:{s:1:"a";s:3:"-20";s:6:"aacute";s:3:"-20";s:6:"abreve";s:3:"-20";s:11:"acircumflex";s:3:"-20";s:9:"adieresis";s:3:"-20";s:6:"agrave";s:3:"-20";s:7:"amacron";s:3:"-20";s:7:"aogonek";s:3:"-20";s:5:"aring";s:3:"-20";s:6:"atilde";s:3:"-20";s:5:"comma";s:4:"-100";s:1:"e";s:3:"-20";s:6:"eacute";s:3:"-20";s:6:"ecaron";s:3:"-20";s:11:"ecircumflex";s:3:"-20";s:9:"edieresis";s:3:"-20";s:10:"edotaccent";s:3:"-20";s:6:"egrave";s:3:"-20";s:7:"emacron";s:3:"-20";s:7:"eogonek";s:3:"-20";s:1:"o";s:3:"-20";s:6:"oacute";s:3:"-20";s:11:"ocircumflex";s:3:"-20";s:9:"odieresis";s:3:"-20";s:6:"ograve";s:3:"-20";s:13:"ohungarumlaut";s:3:"-20";s:7:"omacron";s:3:"-20";s:6:"oslash";s:3:"-20";s:6:"otilde";s:3:"-20";s:6:"period";s:4:"-100";}s:6:"yacute";a:30:{s:1:"a";s:3:"-20";s:6:"aacute";s:3:"-20";s:6:"abreve";s:3:"-20";s:11:"acircumflex";s:3:"-20";s:9:"adieresis";s:3:"-20";s:6:"agrave";s:3:"-20";s:7:"amacron";s:3:"-20";s:7:"aogonek";s:3:"-20";s:5:"aring";s:3:"-20";s:6:"atilde";s:3:"-20";s:5:"comma";s:4:"-100";s:1:"e";s:3:"-20";s:6:"eacute";s:3:"-20";s:6:"ecaron";s:3:"-20";s:11:"ecircumflex";s:3:"-20";s:9:"edieresis";s:3:"-20";s:10:"edotaccent";s:3:"-20";s:6:"egrave";s:3:"-20";s:7:"emacron";s:3:"-20";s:7:"eogonek";s:3:"-20";s:1:"o";s:3:"-20";s:6:"oacute";s:3:"-20";s:11:"ocircumflex";s:3:"-20";s:9:"odieresis";s:3:"-20";s:6:"ograve";s:3:"-20";s:13:"ohungarumlaut";s:3:"-20";s:7:"omacron";s:3:"-20";s:6:"oslash";s:3:"-20";s:6:"otilde";s:3:"-20";s:6:"period";s:4:"-100";}s:9:"ydieresis";a:30:{s:1:"a";s:3:"-20";s:6:"aacute";s:3:"-20";s:6:"abreve";s:3:"-20";s:11:"acircumflex";s:3:"-20";s:9:"adieresis";s:3:"-20";s:6:"agrave";s:3:"-20";s:7:"amacron";s:3:"-20";s:7:"aogonek";s:3:"-20";s:5:"aring";s:3:"-20";s:6:"atilde";s:3:"-20";s:5:"comma";s:4:"-100";s:1:"e";s:3:"-20";s:6:"eacute";s:3:"-20";s:6:"ecaron";s:3:"-20";s:11:"ecircumflex";s:3:"-20";s:9:"edieresis";s:3:"-20";s:10:"edotaccent";s:3:"-20";s:6:"egrave";s:3:"-20";s:7:"emacron";s:3:"-20";s:7:"eogonek";s:3:"-20";s:1:"o";s:3:"-20";s:6:"oacute";s:3:"-20";s:11:"ocircumflex";s:3:"-20";s:9:"odieresis";s:3:"-20";s:6:"ograve";s:3:"-20";s:13:"ohungarumlaut";s:3:"-20";s:7:"omacron";s:3:"-20";s:6:"oslash";s:3:"-20";s:6:"otilde";s:3:"-20";s:6:"period";s:4:"-100";}s:1:"z";a:18:{s:1:"e";s:3:"-15";s:6:"eacute";s:3:"-15";s:6:"ecaron";s:3:"-15";s:11:"ecircumflex";s:3:"-15";s:9:"edieresis";s:3:"-15";s:10:"edotaccent";s:3:"-15";s:6:"egrave";s:3:"-15";s:7:"emacron";s:3:"-15";s:7:"eogonek";s:3:"-15";s:1:"o";s:3:"-15";s:6:"oacute";s:3:"-15";s:11:"ocircumflex";s:3:"-15";s:9:"odieresis";s:3:"-15";s:6:"ograve";s:3:"-15";s:13:"ohungarumlaut";s:3:"-15";s:7:"omacron";s:3:"-15";s:6:"oslash";s:3:"-15";s:6:"otilde";s:3:"-15";}s:6:"zacute";a:18:{s:1:"e";s:3:"-15";s:6:"eacute";s:3:"-15";s:6:"ecaron";s:3:"-15";s:11:"ecircumflex";s:3:"-15";s:9:"edieresis";s:3:"-15";s:10:"edotaccent";s:3:"-15";s:6:"egrave";s:3:"-15";s:7:"emacron";s:3:"-15";s:7:"eogonek";s:3:"-15";s:1:"o";s:3:"-15";s:6:"oacute";s:3:"-15";s:11:"ocircumflex";s:3:"-15";s:9:"odieresis";s:3:"-15";s:6:"ograve";s:3:"-15";s:13:"ohungarumlaut";s:3:"-15";s:7:"omacron";s:3:"-15";s:6:"oslash";s:3:"-15";s:6:"otilde";s:3:"-15";}s:6:"zcaron";a:18:{s:1:"e";s:3:"-15";s:6:"eacute";s:3:"-15";s:6:"ecaron";s:3:"-15";s:11:"ecircumflex";s:3:"-15";s:9:"edieresis";s:3:"-15";s:10:"edotaccent";s:3:"-15";s:6:"egrave";s:3:"-15";s:7:"emacron";s:3:"-15";s:7:"eogonek";s:3:"-15";s:1:"o";s:3:"-15";s:6:"oacute";s:3:"-15";s:11:"ocircumflex";s:3:"-15";s:9:"odieresis";s:3:"-15";s:6:"ograve";s:3:"-15";s:13:"ohungarumlaut";s:3:"-15";s:7:"omacron";s:3:"-15";s:6:"oslash";s:3:"-15";s:6:"otilde";s:3:"-15";}s:10:"zdotaccent";a:18:{s:1:"e";s:3:"-15";s:6:"eacute";s:3:"-15";s:6:"ecaron";s:3:"-15";s:11:"ecircumflex";s:3:"-15";s:9:"edieresis";s:3:"-15";s:10:"edotaccent";s:3:"-15";s:6:"egrave";s:3:"-15";s:7:"emacron";s:3:"-15";s:7:"eogonek";s:3:"-15";s:1:"o";s:3:"-15";s:6:"oacute";s:3:"-15";s:11:"ocircumflex";s:3:"-15";s:9:"odieresis";s:3:"-15";s:6:"ograve";s:3:"-15";s:13:"ohungarumlaut";s:3:"-15";s:7:"omacron";s:3:"-15";s:6:"oslash";s:3:"-15";s:6:"otilde";s:3:"-15";}}s:9:"_version_";i:1;} \ No newline at end of file
diff --git a/admin/survey/Fonts/php_Times-Roman.afm b/admin/survey/Fonts/php_Times-Roman.afm
deleted file mode 100644
index 0f30f29..0000000
--- a/admin/survey/Fonts/php_Times-Roman.afm
+++ /dev/null
@@ -1 +0,0 @@
-a:22:{s:8:"FontName";s:11:"Times-Roman";s:8:"FullName";s:11:"Times Roman";s:10:"FamilyName";s:5:"Times";s:6:"Weight";s:5:"Roman";s:11:"ItalicAngle";s:1:"0";s:12:"IsFixedPitch";s:5:"false";s:12:"CharacterSet";s:13:"ExtendedRoman";s:8:"FontBBox";a:4:{i:0;s:4:"-168";i:1;s:4:"-218";i:2;s:4:"1000";i:3;s:3:"898";}s:17:"UnderlinePosition";s:4:"-100";s:18:"UnderlineThickness";s:2:"50";s:7:"Version";s:7:"002.000";s:14:"EncodingScheme";s:21:"AdobeStandardEncoding";s:9:"CapHeight";s:3:"662";s:7:"XHeight";s:3:"450";s:8:"Ascender";s:3:"683";s:9:"Descender";s:4:"-217";s:5:"StdHW";s:2:"28";s:5:"StdVW";s:2:"84";s:16:"StartCharMetrics";s:3:"315";s:1:"C";a:464:{i:32;a:4:{s:1:"C";s:2:"32";s:2:"WX";s:3:"250";s:1:"N";s:5:"space";s:1:"B";a:4:{i:0;s:1:"0";i:1;s:1:"0";i:2;s:1:"0";i:3;s:1:"0";}}s:5:"space";a:4:{s:1:"C";s:2:"32";s:2:"WX";s:3:"250";s:1:"N";s:5:"space";s:1:"B";a:4:{i:0;s:1:"0";i:1;s:1:"0";i:2;s:1:"0";i:3;s:1:"0";}}i:33;a:4:{s:1:"C";s:2:"33";s:2:"WX";s:3:"333";s:1:"N";s:6:"exclam";s:1:"B";a:4:{i:0;s:3:"130";i:1;s:2:"-9";i:2;s:3:"238";i:3;s:3:"676";}}s:6:"exclam";a:4:{s:1:"C";s:2:"33";s:2:"WX";s:3:"333";s:1:"N";s:6:"exclam";s:1:"B";a:4:{i:0;s:3:"130";i:1;s:2:"-9";i:2;s:3:"238";i:3;s:3:"676";}}i:34;a:4:{s:1:"C";s:2:"34";s:2:"WX";s:3:"408";s:1:"N";s:8:"quotedbl";s:1:"B";a:4:{i:0;s:2:"77";i:1;s:3:"431";i:2;s:3:"331";i:3;s:3:"676";}}s:8:"quotedbl";a:4:{s:1:"C";s:2:"34";s:2:"WX";s:3:"408";s:1:"N";s:8:"quotedbl";s:1:"B";a:4:{i:0;s:2:"77";i:1;s:3:"431";i:2;s:3:"331";i:3;s:3:"676";}}i:35;a:4:{s:1:"C";s:2:"35";s:2:"WX";s:3:"500";s:1:"N";s:10:"numbersign";s:1:"B";a:4:{i:0;s:1:"5";i:1;s:1:"0";i:2;s:3:"496";i:3;s:3:"662";}}s:10:"numbersign";a:4:{s:1:"C";s:2:"35";s:2:"WX";s:3:"500";s:1:"N";s:10:"numbersign";s:1:"B";a:4:{i:0;s:1:"5";i:1;s:1:"0";i:2;s:3:"496";i:3;s:3:"662";}}i:36;a:4:{s:1:"C";s:2:"36";s:2:"WX";s:3:"500";s:1:"N";s:6:"dollar";s:1:"B";a:4:{i:0;s:2:"44";i:1;s:3:"-87";i:2;s:3:"457";i:3;s:3:"727";}}s:6:"dollar";a:4:{s:1:"C";s:2:"36";s:2:"WX";s:3:"500";s:1:"N";s:6:"dollar";s:1:"B";a:4:{i:0;s:2:"44";i:1;s:3:"-87";i:2;s:3:"457";i:3;s:3:"727";}}i:37;a:4:{s:1:"C";s:2:"37";s:2:"WX";s:3:"833";s:1:"N";s:7:"percent";s:1:"B";a:4:{i:0;s:2:"61";i:1;s:3:"-13";i:2;s:3:"772";i:3;s:3:"676";}}s:7:"percent";a:4:{s:1:"C";s:2:"37";s:2:"WX";s:3:"833";s:1:"N";s:7:"percent";s:1:"B";a:4:{i:0;s:2:"61";i:1;s:3:"-13";i:2;s:3:"772";i:3;s:3:"676";}}i:38;a:4:{s:1:"C";s:2:"38";s:2:"WX";s:3:"778";s:1:"N";s:9:"ampersand";s:1:"B";a:4:{i:0;s:2:"42";i:1;s:3:"-13";i:2;s:3:"750";i:3;s:3:"676";}}s:9:"ampersand";a:4:{s:1:"C";s:2:"38";s:2:"WX";s:3:"778";s:1:"N";s:9:"ampersand";s:1:"B";a:4:{i:0;s:2:"42";i:1;s:3:"-13";i:2;s:3:"750";i:3;s:3:"676";}}i:39;a:4:{s:1:"C";s:2:"39";s:2:"WX";s:3:"333";s:1:"N";s:10:"quoteright";s:1:"B";a:4:{i:0;s:2:"79";i:1;s:3:"433";i:2;s:3:"218";i:3;s:3:"676";}}s:10:"quoteright";a:4:{s:1:"C";s:2:"39";s:2:"WX";s:3:"333";s:1:"N";s:10:"quoteright";s:1:"B";a:4:{i:0;s:2:"79";i:1;s:3:"433";i:2;s:3:"218";i:3;s:3:"676";}}i:40;a:4:{s:1:"C";s:2:"40";s:2:"WX";s:3:"333";s:1:"N";s:9:"parenleft";s:1:"B";a:4:{i:0;s:2:"48";i:1;s:4:"-177";i:2;s:3:"304";i:3;s:3:"676";}}s:9:"parenleft";a:4:{s:1:"C";s:2:"40";s:2:"WX";s:3:"333";s:1:"N";s:9:"parenleft";s:1:"B";a:4:{i:0;s:2:"48";i:1;s:4:"-177";i:2;s:3:"304";i:3;s:3:"676";}}i:41;a:4:{s:1:"C";s:2:"41";s:2:"WX";s:3:"333";s:1:"N";s:10:"parenright";s:1:"B";a:4:{i:0;s:2:"29";i:1;s:4:"-177";i:2;s:3:"285";i:3;s:3:"676";}}s:10:"parenright";a:4:{s:1:"C";s:2:"41";s:2:"WX";s:3:"333";s:1:"N";s:10:"parenright";s:1:"B";a:4:{i:0;s:2:"29";i:1;s:4:"-177";i:2;s:3:"285";i:3;s:3:"676";}}i:42;a:4:{s:1:"C";s:2:"42";s:2:"WX";s:3:"500";s:1:"N";s:8:"asterisk";s:1:"B";a:4:{i:0;s:2:"69";i:1;s:3:"265";i:2;s:3:"432";i:3;s:3:"676";}}s:8:"asterisk";a:4:{s:1:"C";s:2:"42";s:2:"WX";s:3:"500";s:1:"N";s:8:"asterisk";s:1:"B";a:4:{i:0;s:2:"69";i:1;s:3:"265";i:2;s:3:"432";i:3;s:3:"676";}}i:43;a:4:{s:1:"C";s:2:"43";s:2:"WX";s:3:"564";s:1:"N";s:4:"plus";s:1:"B";a:4:{i:0;s:2:"30";i:1;s:1:"0";i:2;s:3:"534";i:3;s:3:"506";}}s:4:"plus";a:4:{s:1:"C";s:2:"43";s:2:"WX";s:3:"564";s:1:"N";s:4:"plus";s:1:"B";a:4:{i:0;s:2:"30";i:1;s:1:"0";i:2;s:3:"534";i:3;s:3:"506";}}i:44;a:4:{s:1:"C";s:2:"44";s:2:"WX";s:3:"250";s:1:"N";s:5:"comma";s:1:"B";a:4:{i:0;s:2:"56";i:1;s:4:"-141";i:2;s:3:"195";i:3;s:3:"102";}}s:5:"comma";a:4:{s:1:"C";s:2:"44";s:2:"WX";s:3:"250";s:1:"N";s:5:"comma";s:1:"B";a:4:{i:0;s:2:"56";i:1;s:4:"-141";i:2;s:3:"195";i:3;s:3:"102";}}i:45;a:4:{s:1:"C";s:2:"45";s:2:"WX";s:3:"333";s:1:"N";s:6:"hyphen";s:1:"B";a:4:{i:0;s:2:"39";i:1;s:3:"194";i:2;s:3:"285";i:3;s:3:"257";}}s:6:"hyphen";a:4:{s:1:"C";s:2:"45";s:2:"WX";s:3:"333";s:1:"N";s:6:"hyphen";s:1:"B";a:4:{i:0;s:2:"39";i:1;s:3:"194";i:2;s:3:"285";i:3;s:3:"257";}}i:46;a:4:{s:1:"C";s:2:"46";s:2:"WX";s:3:"250";s:1:"N";s:6:"period";s:1:"B";a:4:{i:0;s:2:"70";i:1;s:3:"-11";i:2;s:3:"181";i:3;s:3:"100";}}s:6:"period";a:4:{s:1:"C";s:2:"46";s:2:"WX";s:3:"250";s:1:"N";s:6:"period";s:1:"B";a:4:{i:0;s:2:"70";i:1;s:3:"-11";i:2;s:3:"181";i:3;s:3:"100";}}i:47;a:4:{s:1:"C";s:2:"47";s:2:"WX";s:3:"278";s:1:"N";s:5:"slash";s:1:"B";a:4:{i:0;s:2:"-9";i:1;s:3:"-14";i:2;s:3:"287";i:3;s:3:"676";}}s:5:"slash";a:4:{s:1:"C";s:2:"47";s:2:"WX";s:3:"278";s:1:"N";s:5:"slash";s:1:"B";a:4:{i:0;s:2:"-9";i:1;s:3:"-14";i:2;s:3:"287";i:3;s:3:"676";}}i:48;a:4:{s:1:"C";s:2:"48";s:2:"WX";s:3:"500";s:1:"N";s:4:"zero";s:1:"B";a:4:{i:0;s:2:"24";i:1;s:3:"-14";i:2;s:3:"476";i:3;s:3:"676";}}s:4:"zero";a:4:{s:1:"C";s:2:"48";s:2:"WX";s:3:"500";s:1:"N";s:4:"zero";s:1:"B";a:4:{i:0;s:2:"24";i:1;s:3:"-14";i:2;s:3:"476";i:3;s:3:"676";}}i:49;a:4:{s:1:"C";s:2:"49";s:2:"WX";s:3:"500";s:1:"N";s:3:"one";s:1:"B";a:4:{i:0;s:3:"111";i:1;s:1:"0";i:2;s:3:"394";i:3;s:3:"676";}}s:3:"one";a:4:{s:1:"C";s:2:"49";s:2:"WX";s:3:"500";s:1:"N";s:3:"one";s:1:"B";a:4:{i:0;s:3:"111";i:1;s:1:"0";i:2;s:3:"394";i:3;s:3:"676";}}i:50;a:4:{s:1:"C";s:2:"50";s:2:"WX";s:3:"500";s:1:"N";s:3:"two";s:1:"B";a:4:{i:0;s:2:"30";i:1;s:1:"0";i:2;s:3:"475";i:3;s:3:"676";}}s:3:"two";a:4:{s:1:"C";s:2:"50";s:2:"WX";s:3:"500";s:1:"N";s:3:"two";s:1:"B";a:4:{i:0;s:2:"30";i:1;s:1:"0";i:2;s:3:"475";i:3;s:3:"676";}}i:51;a:4:{s:1:"C";s:2:"51";s:2:"WX";s:3:"500";s:1:"N";s:5:"three";s:1:"B";a:4:{i:0;s:2:"43";i:1;s:3:"-14";i:2;s:3:"431";i:3;s:3:"676";}}s:5:"three";a:4:{s:1:"C";s:2:"51";s:2:"WX";s:3:"500";s:1:"N";s:5:"three";s:1:"B";a:4:{i:0;s:2:"43";i:1;s:3:"-14";i:2;s:3:"431";i:3;s:3:"676";}}i:52;a:4:{s:1:"C";s:2:"52";s:2:"WX";s:3:"500";s:1:"N";s:4:"four";s:1:"B";a:4:{i:0;s:2:"12";i:1;s:1:"0";i:2;s:3:"472";i:3;s:3:"676";}}s:4:"four";a:4:{s:1:"C";s:2:"52";s:2:"WX";s:3:"500";s:1:"N";s:4:"four";s:1:"B";a:4:{i:0;s:2:"12";i:1;s:1:"0";i:2;s:3:"472";i:3;s:3:"676";}}i:53;a:4:{s:1:"C";s:2:"53";s:2:"WX";s:3:"500";s:1:"N";s:4:"five";s:1:"B";a:4:{i:0;s:2:"32";i:1;s:3:"-14";i:2;s:3:"438";i:3;s:3:"688";}}s:4:"five";a:4:{s:1:"C";s:2:"53";s:2:"WX";s:3:"500";s:1:"N";s:4:"five";s:1:"B";a:4:{i:0;s:2:"32";i:1;s:3:"-14";i:2;s:3:"438";i:3;s:3:"688";}}i:54;a:4:{s:1:"C";s:2:"54";s:2:"WX";s:3:"500";s:1:"N";s:3:"six";s:1:"B";a:4:{i:0;s:2:"34";i:1;s:3:"-14";i:2;s:3:"468";i:3;s:3:"684";}}s:3:"six";a:4:{s:1:"C";s:2:"54";s:2:"WX";s:3:"500";s:1:"N";s:3:"six";s:1:"B";a:4:{i:0;s:2:"34";i:1;s:3:"-14";i:2;s:3:"468";i:3;s:3:"684";}}i:55;a:4:{s:1:"C";s:2:"55";s:2:"WX";s:3:"500";s:1:"N";s:5:"seven";s:1:"B";a:4:{i:0;s:2:"20";i:1;s:2:"-8";i:2;s:3:"449";i:3;s:3:"662";}}s:5:"seven";a:4:{s:1:"C";s:2:"55";s:2:"WX";s:3:"500";s:1:"N";s:5:"seven";s:1:"B";a:4:{i:0;s:2:"20";i:1;s:2:"-8";i:2;s:3:"449";i:3;s:3:"662";}}i:56;a:4:{s:1:"C";s:2:"56";s:2:"WX";s:3:"500";s:1:"N";s:5:"eight";s:1:"B";a:4:{i:0;s:2:"56";i:1;s:3:"-14";i:2;s:3:"445";i:3;s:3:"676";}}s:5:"eight";a:4:{s:1:"C";s:2:"56";s:2:"WX";s:3:"500";s:1:"N";s:5:"eight";s:1:"B";a:4:{i:0;s:2:"56";i:1;s:3:"-14";i:2;s:3:"445";i:3;s:3:"676";}}i:57;a:4:{s:1:"C";s:2:"57";s:2:"WX";s:3:"500";s:1:"N";s:4:"nine";s:1:"B";a:4:{i:0;s:2:"30";i:1;s:3:"-22";i:2;s:3:"459";i:3;s:3:"676";}}s:4:"nine";a:4:{s:1:"C";s:2:"57";s:2:"WX";s:3:"500";s:1:"N";s:4:"nine";s:1:"B";a:4:{i:0;s:2:"30";i:1;s:3:"-22";i:2;s:3:"459";i:3;s:3:"676";}}i:58;a:4:{s:1:"C";s:2:"58";s:2:"WX";s:3:"278";s:1:"N";s:5:"colon";s:1:"B";a:4:{i:0;s:2:"81";i:1;s:3:"-11";i:2;s:3:"192";i:3;s:3:"459";}}s:5:"colon";a:4:{s:1:"C";s:2:"58";s:2:"WX";s:3:"278";s:1:"N";s:5:"colon";s:1:"B";a:4:{i:0;s:2:"81";i:1;s:3:"-11";i:2;s:3:"192";i:3;s:3:"459";}}i:59;a:4:{s:1:"C";s:2:"59";s:2:"WX";s:3:"278";s:1:"N";s:9:"semicolon";s:1:"B";a:4:{i:0;s:2:"80";i:1;s:4:"-141";i:2;s:3:"219";i:3;s:3:"459";}}s:9:"semicolon";a:4:{s:1:"C";s:2:"59";s:2:"WX";s:3:"278";s:1:"N";s:9:"semicolon";s:1:"B";a:4:{i:0;s:2:"80";i:1;s:4:"-141";i:2;s:3:"219";i:3;s:3:"459";}}i:60;a:4:{s:1:"C";s:2:"60";s:2:"WX";s:3:"564";s:1:"N";s:4:"less";s:1:"B";a:4:{i:0;s:2:"28";i:1;s:2:"-8";i:2;s:3:"536";i:3;s:3:"514";}}s:4:"less";a:4:{s:1:"C";s:2:"60";s:2:"WX";s:3:"564";s:1:"N";s:4:"less";s:1:"B";a:4:{i:0;s:2:"28";i:1;s:2:"-8";i:2;s:3:"536";i:3;s:3:"514";}}i:61;a:4:{s:1:"C";s:2:"61";s:2:"WX";s:3:"564";s:1:"N";s:5:"equal";s:1:"B";a:4:{i:0;s:2:"30";i:1;s:3:"120";i:2;s:3:"534";i:3;s:3:"386";}}s:5:"equal";a:4:{s:1:"C";s:2:"61";s:2:"WX";s:3:"564";s:1:"N";s:5:"equal";s:1:"B";a:4:{i:0;s:2:"30";i:1;s:3:"120";i:2;s:3:"534";i:3;s:3:"386";}}i:62;a:4:{s:1:"C";s:2:"62";s:2:"WX";s:3:"564";s:1:"N";s:7:"greater";s:1:"B";a:4:{i:0;s:2:"28";i:1;s:2:"-8";i:2;s:3:"536";i:3;s:3:"514";}}s:7:"greater";a:4:{s:1:"C";s:2:"62";s:2:"WX";s:3:"564";s:1:"N";s:7:"greater";s:1:"B";a:4:{i:0;s:2:"28";i:1;s:2:"-8";i:2;s:3:"536";i:3;s:3:"514";}}i:63;a:4:{s:1:"C";s:2:"63";s:2:"WX";s:3:"444";s:1:"N";s:8:"question";s:1:"B";a:4:{i:0;s:2:"68";i:1;s:2:"-8";i:2;s:3:"414";i:3;s:3:"676";}}s:8:"question";a:4:{s:1:"C";s:2:"63";s:2:"WX";s:3:"444";s:1:"N";s:8:"question";s:1:"B";a:4:{i:0;s:2:"68";i:1;s:2:"-8";i:2;s:3:"414";i:3;s:3:"676";}}i:64;a:4:{s:1:"C";s:2:"64";s:2:"WX";s:3:"921";s:1:"N";s:2:"at";s:1:"B";a:4:{i:0;s:3:"116";i:1;s:3:"-14";i:2;s:3:"809";i:3;s:3:"676";}}s:2:"at";a:4:{s:1:"C";s:2:"64";s:2:"WX";s:3:"921";s:1:"N";s:2:"at";s:1:"B";a:4:{i:0;s:3:"116";i:1;s:3:"-14";i:2;s:3:"809";i:3;s:3:"676";}}i:65;a:4:{s:1:"C";s:2:"65";s:2:"WX";s:3:"722";s:1:"N";s:1:"A";s:1:"B";a:4:{i:0;s:2:"15";i:1;s:1:"0";i:2;s:3:"706";i:3;s:3:"674";}}s:1:"A";a:4:{s:1:"C";s:2:"65";s:2:"WX";s:3:"722";s:1:"N";s:1:"A";s:1:"B";a:4:{i:0;s:2:"15";i:1;s:1:"0";i:2;s:3:"706";i:3;s:3:"674";}}i:66;a:4:{s:1:"C";s:2:"66";s:2:"WX";s:3:"667";s:1:"N";s:1:"B";s:1:"B";a:4:{i:0;s:2:"17";i:1;s:1:"0";i:2;s:3:"593";i:3;s:3:"662";}}s:1:"B";a:4:{s:1:"C";s:2:"66";s:2:"WX";s:3:"667";s:1:"N";s:1:"B";s:1:"B";a:4:{i:0;s:2:"17";i:1;s:1:"0";i:2;s:3:"593";i:3;s:3:"662";}}i:67;a:4:{s:1:"C";s:2:"67";s:2:"WX";s:3:"667";s:1:"N";s:1:"C";s:1:"B";a:4:{i:0;s:2:"28";i:1;s:3:"-14";i:2;s:3:"633";i:3;s:3:"676";}}s:1:"C";a:4:{s:1:"C";s:2:"67";s:2:"WX";s:3:"667";s:1:"N";s:1:"C";s:1:"B";a:4:{i:0;s:2:"28";i:1;s:3:"-14";i:2;s:3:"633";i:3;s:3:"676";}}i:68;a:4:{s:1:"C";s:2:"68";s:2:"WX";s:3:"722";s:1:"N";s:1:"D";s:1:"B";a:4:{i:0;s:2:"16";i:1;s:1:"0";i:2;s:3:"685";i:3;s:3:"662";}}s:1:"D";a:4:{s:1:"C";s:2:"68";s:2:"WX";s:3:"722";s:1:"N";s:1:"D";s:1:"B";a:4:{i:0;s:2:"16";i:1;s:1:"0";i:2;s:3:"685";i:3;s:3:"662";}}i:69;a:4:{s:1:"C";s:2:"69";s:2:"WX";s:3:"611";s:1:"N";s:1:"E";s:1:"B";a:4:{i:0;s:2:"12";i:1;s:1:"0";i:2;s:3:"597";i:3;s:3:"662";}}s:1:"E";a:4:{s:1:"C";s:2:"69";s:2:"WX";s:3:"611";s:1:"N";s:1:"E";s:1:"B";a:4:{i:0;s:2:"12";i:1;s:1:"0";i:2;s:3:"597";i:3;s:3:"662";}}i:70;a:4:{s:1:"C";s:2:"70";s:2:"WX";s:3:"556";s:1:"N";s:1:"F";s:1:"B";a:4:{i:0;s:2:"12";i:1;s:1:"0";i:2;s:3:"546";i:3;s:3:"662";}}s:1:"F";a:4:{s:1:"C";s:2:"70";s:2:"WX";s:3:"556";s:1:"N";s:1:"F";s:1:"B";a:4:{i:0;s:2:"12";i:1;s:1:"0";i:2;s:3:"546";i:3;s:3:"662";}}i:71;a:4:{s:1:"C";s:2:"71";s:2:"WX";s:3:"722";s:1:"N";s:1:"G";s:1:"B";a:4:{i:0;s:2:"32";i:1;s:3:"-14";i:2;s:3:"709";i:3;s:3:"676";}}s:1:"G";a:4:{s:1:"C";s:2:"71";s:2:"WX";s:3:"722";s:1:"N";s:1:"G";s:1:"B";a:4:{i:0;s:2:"32";i:1;s:3:"-14";i:2;s:3:"709";i:3;s:3:"676";}}i:72;a:4:{s:1:"C";s:2:"72";s:2:"WX";s:3:"722";s:1:"N";s:1:"H";s:1:"B";a:4:{i:0;s:2:"19";i:1;s:1:"0";i:2;s:3:"702";i:3;s:3:"662";}}s:1:"H";a:4:{s:1:"C";s:2:"72";s:2:"WX";s:3:"722";s:1:"N";s:1:"H";s:1:"B";a:4:{i:0;s:2:"19";i:1;s:1:"0";i:2;s:3:"702";i:3;s:3:"662";}}i:73;a:4:{s:1:"C";s:2:"73";s:2:"WX";s:3:"333";s:1:"N";s:1:"I";s:1:"B";a:4:{i:0;s:2:"18";i:1;s:1:"0";i:2;s:3:"315";i:3;s:3:"662";}}s:1:"I";a:4:{s:1:"C";s:2:"73";s:2:"WX";s:3:"333";s:1:"N";s:1:"I";s:1:"B";a:4:{i:0;s:2:"18";i:1;s:1:"0";i:2;s:3:"315";i:3;s:3:"662";}}i:74;a:4:{s:1:"C";s:2:"74";s:2:"WX";s:3:"389";s:1:"N";s:1:"J";s:1:"B";a:4:{i:0;s:2:"10";i:1;s:3:"-14";i:2;s:3:"370";i:3;s:3:"662";}}s:1:"J";a:4:{s:1:"C";s:2:"74";s:2:"WX";s:3:"389";s:1:"N";s:1:"J";s:1:"B";a:4:{i:0;s:2:"10";i:1;s:3:"-14";i:2;s:3:"370";i:3;s:3:"662";}}i:75;a:4:{s:1:"C";s:2:"75";s:2:"WX";s:3:"722";s:1:"N";s:1:"K";s:1:"B";a:4:{i:0;s:2:"34";i:1;s:1:"0";i:2;s:3:"723";i:3;s:3:"662";}}s:1:"K";a:4:{s:1:"C";s:2:"75";s:2:"WX";s:3:"722";s:1:"N";s:1:"K";s:1:"B";a:4:{i:0;s:2:"34";i:1;s:1:"0";i:2;s:3:"723";i:3;s:3:"662";}}i:76;a:4:{s:1:"C";s:2:"76";s:2:"WX";s:3:"611";s:1:"N";s:1:"L";s:1:"B";a:4:{i:0;s:2:"12";i:1;s:1:"0";i:2;s:3:"598";i:3;s:3:"662";}}s:1:"L";a:4:{s:1:"C";s:2:"76";s:2:"WX";s:3:"611";s:1:"N";s:1:"L";s:1:"B";a:4:{i:0;s:2:"12";i:1;s:1:"0";i:2;s:3:"598";i:3;s:3:"662";}}i:77;a:4:{s:1:"C";s:2:"77";s:2:"WX";s:3:"889";s:1:"N";s:1:"M";s:1:"B";a:4:{i:0;s:2:"12";i:1;s:1:"0";i:2;s:3:"863";i:3;s:3:"662";}}s:1:"M";a:4:{s:1:"C";s:2:"77";s:2:"WX";s:3:"889";s:1:"N";s:1:"M";s:1:"B";a:4:{i:0;s:2:"12";i:1;s:1:"0";i:2;s:3:"863";i:3;s:3:"662";}}i:78;a:4:{s:1:"C";s:2:"78";s:2:"WX";s:3:"722";s:1:"N";s:1:"N";s:1:"B";a:4:{i:0;s:2:"12";i:1;s:3:"-11";i:2;s:3:"707";i:3;s:3:"662";}}s:1:"N";a:4:{s:1:"C";s:2:"78";s:2:"WX";s:3:"722";s:1:"N";s:1:"N";s:1:"B";a:4:{i:0;s:2:"12";i:1;s:3:"-11";i:2;s:3:"707";i:3;s:3:"662";}}i:79;a:4:{s:1:"C";s:2:"79";s:2:"WX";s:3:"722";s:1:"N";s:1:"O";s:1:"B";a:4:{i:0;s:2:"34";i:1;s:3:"-14";i:2;s:3:"688";i:3;s:3:"676";}}s:1:"O";a:4:{s:1:"C";s:2:"79";s:2:"WX";s:3:"722";s:1:"N";s:1:"O";s:1:"B";a:4:{i:0;s:2:"34";i:1;s:3:"-14";i:2;s:3:"688";i:3;s:3:"676";}}i:80;a:4:{s:1:"C";s:2:"80";s:2:"WX";s:3:"556";s:1:"N";s:1:"P";s:1:"B";a:4:{i:0;s:2:"16";i:1;s:1:"0";i:2;s:3:"542";i:3;s:3:"662";}}s:1:"P";a:4:{s:1:"C";s:2:"80";s:2:"WX";s:3:"556";s:1:"N";s:1:"P";s:1:"B";a:4:{i:0;s:2:"16";i:1;s:1:"0";i:2;s:3:"542";i:3;s:3:"662";}}i:81;a:4:{s:1:"C";s:2:"81";s:2:"WX";s:3:"722";s:1:"N";s:1:"Q";s:1:"B";a:4:{i:0;s:2:"34";i:1;s:4:"-178";i:2;s:3:"701";i:3;s:3:"676";}}s:1:"Q";a:4:{s:1:"C";s:2:"81";s:2:"WX";s:3:"722";s:1:"N";s:1:"Q";s:1:"B";a:4:{i:0;s:2:"34";i:1;s:4:"-178";i:2;s:3:"701";i:3;s:3:"676";}}i:82;a:4:{s:1:"C";s:2:"82";s:2:"WX";s:3:"667";s:1:"N";s:1:"R";s:1:"B";a:4:{i:0;s:2:"17";i:1;s:1:"0";i:2;s:3:"659";i:3;s:3:"662";}}s:1:"R";a:4:{s:1:"C";s:2:"82";s:2:"WX";s:3:"667";s:1:"N";s:1:"R";s:1:"B";a:4:{i:0;s:2:"17";i:1;s:1:"0";i:2;s:3:"659";i:3;s:3:"662";}}i:83;a:4:{s:1:"C";s:2:"83";s:2:"WX";s:3:"556";s:1:"N";s:1:"S";s:1:"B";a:4:{i:0;s:2:"42";i:1;s:3:"-14";i:2;s:3:"491";i:3;s:3:"676";}}s:1:"S";a:4:{s:1:"C";s:2:"83";s:2:"WX";s:3:"556";s:1:"N";s:1:"S";s:1:"B";a:4:{i:0;s:2:"42";i:1;s:3:"-14";i:2;s:3:"491";i:3;s:3:"676";}}i:84;a:4:{s:1:"C";s:2:"84";s:2:"WX";s:3:"611";s:1:"N";s:1:"T";s:1:"B";a:4:{i:0;s:2:"17";i:1;s:1:"0";i:2;s:3:"593";i:3;s:3:"662";}}s:1:"T";a:4:{s:1:"C";s:2:"84";s:2:"WX";s:3:"611";s:1:"N";s:1:"T";s:1:"B";a:4:{i:0;s:2:"17";i:1;s:1:"0";i:2;s:3:"593";i:3;s:3:"662";}}i:85;a:4:{s:1:"C";s:2:"85";s:2:"WX";s:3:"722";s:1:"N";s:1:"U";s:1:"B";a:4:{i:0;s:2:"14";i:1;s:3:"-14";i:2;s:3:"705";i:3;s:3:"662";}}s:1:"U";a:4:{s:1:"C";s:2:"85";s:2:"WX";s:3:"722";s:1:"N";s:1:"U";s:1:"B";a:4:{i:0;s:2:"14";i:1;s:3:"-14";i:2;s:3:"705";i:3;s:3:"662";}}i:86;a:4:{s:1:"C";s:2:"86";s:2:"WX";s:3:"722";s:1:"N";s:1:"V";s:1:"B";a:4:{i:0;s:2:"16";i:1;s:3:"-11";i:2;s:3:"697";i:3;s:3:"662";}}s:1:"V";a:4:{s:1:"C";s:2:"86";s:2:"WX";s:3:"722";s:1:"N";s:1:"V";s:1:"B";a:4:{i:0;s:2:"16";i:1;s:3:"-11";i:2;s:3:"697";i:3;s:3:"662";}}i:87;a:4:{s:1:"C";s:2:"87";s:2:"WX";s:3:"944";s:1:"N";s:1:"W";s:1:"B";a:4:{i:0;s:1:"5";i:1;s:3:"-11";i:2;s:3:"932";i:3;s:3:"662";}}s:1:"W";a:4:{s:1:"C";s:2:"87";s:2:"WX";s:3:"944";s:1:"N";s:1:"W";s:1:"B";a:4:{i:0;s:1:"5";i:1;s:3:"-11";i:2;s:3:"932";i:3;s:3:"662";}}i:88;a:4:{s:1:"C";s:2:"88";s:2:"WX";s:3:"722";s:1:"N";s:1:"X";s:1:"B";a:4:{i:0;s:2:"10";i:1;s:1:"0";i:2;s:3:"704";i:3;s:3:"662";}}s:1:"X";a:4:{s:1:"C";s:2:"88";s:2:"WX";s:3:"722";s:1:"N";s:1:"X";s:1:"B";a:4:{i:0;s:2:"10";i:1;s:1:"0";i:2;s:3:"704";i:3;s:3:"662";}}i:89;a:4:{s:1:"C";s:2:"89";s:2:"WX";s:3:"722";s:1:"N";s:1:"Y";s:1:"B";a:4:{i:0;s:2:"22";i:1;s:1:"0";i:2;s:3:"703";i:3;s:3:"662";}}s:1:"Y";a:4:{s:1:"C";s:2:"89";s:2:"WX";s:3:"722";s:1:"N";s:1:"Y";s:1:"B";a:4:{i:0;s:2:"22";i:1;s:1:"0";i:2;s:3:"703";i:3;s:3:"662";}}i:90;a:4:{s:1:"C";s:2:"90";s:2:"WX";s:3:"611";s:1:"N";s:1:"Z";s:1:"B";a:4:{i:0;s:1:"9";i:1;s:1:"0";i:2;s:3:"597";i:3;s:3:"662";}}s:1:"Z";a:4:{s:1:"C";s:2:"90";s:2:"WX";s:3:"611";s:1:"N";s:1:"Z";s:1:"B";a:4:{i:0;s:1:"9";i:1;s:1:"0";i:2;s:3:"597";i:3;s:3:"662";}}i:91;a:4:{s:1:"C";s:2:"91";s:2:"WX";s:3:"333";s:1:"N";s:11:"bracketleft";s:1:"B";a:4:{i:0;s:2:"88";i:1;s:4:"-156";i:2;s:3:"299";i:3;s:3:"662";}}s:11:"bracketleft";a:4:{s:1:"C";s:2:"91";s:2:"WX";s:3:"333";s:1:"N";s:11:"bracketleft";s:1:"B";a:4:{i:0;s:2:"88";i:1;s:4:"-156";i:2;s:3:"299";i:3;s:3:"662";}}i:92;a:4:{s:1:"C";s:2:"92";s:2:"WX";s:3:"278";s:1:"N";s:9:"backslash";s:1:"B";a:4:{i:0;s:2:"-9";i:1;s:3:"-14";i:2;s:3:"287";i:3;s:3:"676";}}s:9:"backslash";a:4:{s:1:"C";s:2:"92";s:2:"WX";s:3:"278";s:1:"N";s:9:"backslash";s:1:"B";a:4:{i:0;s:2:"-9";i:1;s:3:"-14";i:2;s:3:"287";i:3;s:3:"676";}}i:93;a:4:{s:1:"C";s:2:"93";s:2:"WX";s:3:"333";s:1:"N";s:12:"bracketright";s:1:"B";a:4:{i:0;s:2:"34";i:1;s:4:"-156";i:2;s:3:"245";i:3;s:3:"662";}}s:12:"bracketright";a:4:{s:1:"C";s:2:"93";s:2:"WX";s:3:"333";s:1:"N";s:12:"bracketright";s:1:"B";a:4:{i:0;s:2:"34";i:1;s:4:"-156";i:2;s:3:"245";i:3;s:3:"662";}}i:94;a:4:{s:1:"C";s:2:"94";s:2:"WX";s:3:"469";s:1:"N";s:11:"asciicircum";s:1:"B";a:4:{i:0;s:2:"24";i:1;s:3:"297";i:2;s:3:"446";i:3;s:3:"662";}}s:11:"asciicircum";a:4:{s:1:"C";s:2:"94";s:2:"WX";s:3:"469";s:1:"N";s:11:"asciicircum";s:1:"B";a:4:{i:0;s:2:"24";i:1;s:3:"297";i:2;s:3:"446";i:3;s:3:"662";}}i:95;a:4:{s:1:"C";s:2:"95";s:2:"WX";s:3:"500";s:1:"N";s:10:"underscore";s:1:"B";a:4:{i:0;s:1:"0";i:1;s:4:"-125";i:2;s:3:"500";i:3;s:3:"-75";}}s:10:"underscore";a:4:{s:1:"C";s:2:"95";s:2:"WX";s:3:"500";s:1:"N";s:10:"underscore";s:1:"B";a:4:{i:0;s:1:"0";i:1;s:4:"-125";i:2;s:3:"500";i:3;s:3:"-75";}}i:96;a:4:{s:1:"C";s:2:"96";s:2:"WX";s:3:"333";s:1:"N";s:9:"quoteleft";s:1:"B";a:4:{i:0;s:3:"115";i:1;s:3:"433";i:2;s:3:"254";i:3;s:3:"676";}}s:9:"quoteleft";a:4:{s:1:"C";s:2:"96";s:2:"WX";s:3:"333";s:1:"N";s:9:"quoteleft";s:1:"B";a:4:{i:0;s:3:"115";i:1;s:3:"433";i:2;s:3:"254";i:3;s:3:"676";}}i:97;a:4:{s:1:"C";s:2:"97";s:2:"WX";s:3:"444";s:1:"N";s:1:"a";s:1:"B";a:4:{i:0;s:2:"37";i:1;s:3:"-10";i:2;s:3:"442";i:3;s:3:"460";}}s:1:"a";a:4:{s:1:"C";s:2:"97";s:2:"WX";s:3:"444";s:1:"N";s:1:"a";s:1:"B";a:4:{i:0;s:2:"37";i:1;s:3:"-10";i:2;s:3:"442";i:3;s:3:"460";}}i:98;a:4:{s:1:"C";s:2:"98";s:2:"WX";s:3:"500";s:1:"N";s:1:"b";s:1:"B";a:4:{i:0;s:1:"3";i:1;s:3:"-10";i:2;s:3:"468";i:3;s:3:"683";}}s:1:"b";a:4:{s:1:"C";s:2:"98";s:2:"WX";s:3:"500";s:1:"N";s:1:"b";s:1:"B";a:4:{i:0;s:1:"3";i:1;s:3:"-10";i:2;s:3:"468";i:3;s:3:"683";}}i:99;a:4:{s:1:"C";s:2:"99";s:2:"WX";s:3:"444";s:1:"N";s:1:"c";s:1:"B";a:4:{i:0;s:2:"25";i:1;s:3:"-10";i:2;s:3:"412";i:3;s:3:"460";}}s:1:"c";a:4:{s:1:"C";s:2:"99";s:2:"WX";s:3:"444";s:1:"N";s:1:"c";s:1:"B";a:4:{i:0;s:2:"25";i:1;s:3:"-10";i:2;s:3:"412";i:3;s:3:"460";}}i:100;a:4:{s:1:"C";s:3:"100";s:2:"WX";s:3:"500";s:1:"N";s:1:"d";s:1:"B";a:4:{i:0;s:2:"27";i:1;s:3:"-10";i:2;s:3:"491";i:3;s:3:"683";}}s:1:"d";a:4:{s:1:"C";s:3:"100";s:2:"WX";s:3:"500";s:1:"N";s:1:"d";s:1:"B";a:4:{i:0;s:2:"27";i:1;s:3:"-10";i:2;s:3:"491";i:3;s:3:"683";}}i:101;a:4:{s:1:"C";s:3:"101";s:2:"WX";s:3:"444";s:1:"N";s:1:"e";s:1:"B";a:4:{i:0;s:2:"25";i:1;s:3:"-10";i:2;s:3:"424";i:3;s:3:"460";}}s:1:"e";a:4:{s:1:"C";s:3:"101";s:2:"WX";s:3:"444";s:1:"N";s:1:"e";s:1:"B";a:4:{i:0;s:2:"25";i:1;s:3:"-10";i:2;s:3:"424";i:3;s:3:"460";}}i:102;a:5:{s:1:"C";s:3:"102";s:2:"WX";s:3:"333";s:1:"N";s:1:"f";s:1:"B";a:4:{i:0;s:2:"20";i:1;s:1:"0";i:2;s:3:"383";i:3;s:3:"683";}s:1:"L";a:2:{i:0;s:1:"l";i:1;s:2:"fl";}}s:1:"f";a:5:{s:1:"C";s:3:"102";s:2:"WX";s:3:"333";s:1:"N";s:1:"f";s:1:"B";a:4:{i:0;s:2:"20";i:1;s:1:"0";i:2;s:3:"383";i:3;s:3:"683";}s:1:"L";a:2:{i:0;s:1:"l";i:1;s:2:"fl";}}i:103;a:4:{s:1:"C";s:3:"103";s:2:"WX";s:3:"500";s:1:"N";s:1:"g";s:1:"B";a:4:{i:0;s:2:"28";i:1;s:4:"-218";i:2;s:3:"470";i:3;s:3:"460";}}s:1:"g";a:4:{s:1:"C";s:3:"103";s:2:"WX";s:3:"500";s:1:"N";s:1:"g";s:1:"B";a:4:{i:0;s:2:"28";i:1;s:4:"-218";i:2;s:3:"470";i:3;s:3:"460";}}i:104;a:4:{s:1:"C";s:3:"104";s:2:"WX";s:3:"500";s:1:"N";s:1:"h";s:1:"B";a:4:{i:0;s:1:"9";i:1;s:1:"0";i:2;s:3:"487";i:3;s:3:"683";}}s:1:"h";a:4:{s:1:"C";s:3:"104";s:2:"WX";s:3:"500";s:1:"N";s:1:"h";s:1:"B";a:4:{i:0;s:1:"9";i:1;s:1:"0";i:2;s:3:"487";i:3;s:3:"683";}}i:105;a:4:{s:1:"C";s:3:"105";s:2:"WX";s:3:"278";s:1:"N";s:1:"i";s:1:"B";a:4:{i:0;s:2:"16";i:1;s:1:"0";i:2;s:3:"253";i:3;s:3:"683";}}s:1:"i";a:4:{s:1:"C";s:3:"105";s:2:"WX";s:3:"278";s:1:"N";s:1:"i";s:1:"B";a:4:{i:0;s:2:"16";i:1;s:1:"0";i:2;s:3:"253";i:3;s:3:"683";}}i:106;a:4:{s:1:"C";s:3:"106";s:2:"WX";s:3:"278";s:1:"N";s:1:"j";s:1:"B";a:4:{i:0;s:3:"-70";i:1;s:4:"-218";i:2;s:3:"194";i:3;s:3:"683";}}s:1:"j";a:4:{s:1:"C";s:3:"106";s:2:"WX";s:3:"278";s:1:"N";s:1:"j";s:1:"B";a:4:{i:0;s:3:"-70";i:1;s:4:"-218";i:2;s:3:"194";i:3;s:3:"683";}}i:107;a:4:{s:1:"C";s:3:"107";s:2:"WX";s:3:"500";s:1:"N";s:1:"k";s:1:"B";a:4:{i:0;s:1:"7";i:1;s:1:"0";i:2;s:3:"505";i:3;s:3:"683";}}s:1:"k";a:4:{s:1:"C";s:3:"107";s:2:"WX";s:3:"500";s:1:"N";s:1:"k";s:1:"B";a:4:{i:0;s:1:"7";i:1;s:1:"0";i:2;s:3:"505";i:3;s:3:"683";}}i:108;a:4:{s:1:"C";s:3:"108";s:2:"WX";s:3:"278";s:1:"N";s:1:"l";s:1:"B";a:4:{i:0;s:2:"19";i:1;s:1:"0";i:2;s:3:"257";i:3;s:3:"683";}}s:1:"l";a:4:{s:1:"C";s:3:"108";s:2:"WX";s:3:"278";s:1:"N";s:1:"l";s:1:"B";a:4:{i:0;s:2:"19";i:1;s:1:"0";i:2;s:3:"257";i:3;s:3:"683";}}i:109;a:4:{s:1:"C";s:3:"109";s:2:"WX";s:3:"778";s:1:"N";s:1:"m";s:1:"B";a:4:{i:0;s:2:"16";i:1;s:1:"0";i:2;s:3:"775";i:3;s:3:"460";}}s:1:"m";a:4:{s:1:"C";s:3:"109";s:2:"WX";s:3:"778";s:1:"N";s:1:"m";s:1:"B";a:4:{i:0;s:2:"16";i:1;s:1:"0";i:2;s:3:"775";i:3;s:3:"460";}}i:110;a:4:{s:1:"C";s:3:"110";s:2:"WX";s:3:"500";s:1:"N";s:1:"n";s:1:"B";a:4:{i:0;s:2:"16";i:1;s:1:"0";i:2;s:3:"485";i:3;s:3:"460";}}s:1:"n";a:4:{s:1:"C";s:3:"110";s:2:"WX";s:3:"500";s:1:"N";s:1:"n";s:1:"B";a:4:{i:0;s:2:"16";i:1;s:1:"0";i:2;s:3:"485";i:3;s:3:"460";}}i:111;a:4:{s:1:"C";s:3:"111";s:2:"WX";s:3:"500";s:1:"N";s:1:"o";s:1:"B";a:4:{i:0;s:2:"29";i:1;s:3:"-10";i:2;s:3:"470";i:3;s:3:"460";}}s:1:"o";a:4:{s:1:"C";s:3:"111";s:2:"WX";s:3:"500";s:1:"N";s:1:"o";s:1:"B";a:4:{i:0;s:2:"29";i:1;s:3:"-10";i:2;s:3:"470";i:3;s:3:"460";}}i:112;a:4:{s:1:"C";s:3:"112";s:2:"WX";s:3:"500";s:1:"N";s:1:"p";s:1:"B";a:4:{i:0;s:1:"5";i:1;s:4:"-217";i:2;s:3:"470";i:3;s:3:"460";}}s:1:"p";a:4:{s:1:"C";s:3:"112";s:2:"WX";s:3:"500";s:1:"N";s:1:"p";s:1:"B";a:4:{i:0;s:1:"5";i:1;s:4:"-217";i:2;s:3:"470";i:3;s:3:"460";}}i:113;a:4:{s:1:"C";s:3:"113";s:2:"WX";s:3:"500";s:1:"N";s:1:"q";s:1:"B";a:4:{i:0;s:2:"24";i:1;s:4:"-217";i:2;s:3:"488";i:3;s:3:"460";}}s:1:"q";a:4:{s:1:"C";s:3:"113";s:2:"WX";s:3:"500";s:1:"N";s:1:"q";s:1:"B";a:4:{i:0;s:2:"24";i:1;s:4:"-217";i:2;s:3:"488";i:3;s:3:"460";}}i:114;a:4:{s:1:"C";s:3:"114";s:2:"WX";s:3:"333";s:1:"N";s:1:"r";s:1:"B";a:4:{i:0;s:1:"5";i:1;s:1:"0";i:2;s:3:"335";i:3;s:3:"460";}}s:1:"r";a:4:{s:1:"C";s:3:"114";s:2:"WX";s:3:"333";s:1:"N";s:1:"r";s:1:"B";a:4:{i:0;s:1:"5";i:1;s:1:"0";i:2;s:3:"335";i:3;s:3:"460";}}i:115;a:4:{s:1:"C";s:3:"115";s:2:"WX";s:3:"389";s:1:"N";s:1:"s";s:1:"B";a:4:{i:0;s:2:"51";i:1;s:3:"-10";i:2;s:3:"348";i:3;s:3:"460";}}s:1:"s";a:4:{s:1:"C";s:3:"115";s:2:"WX";s:3:"389";s:1:"N";s:1:"s";s:1:"B";a:4:{i:0;s:2:"51";i:1;s:3:"-10";i:2;s:3:"348";i:3;s:3:"460";}}i:116;a:4:{s:1:"C";s:3:"116";s:2:"WX";s:3:"278";s:1:"N";s:1:"t";s:1:"B";a:4:{i:0;s:2:"13";i:1;s:3:"-10";i:2;s:3:"279";i:3;s:3:"579";}}s:1:"t";a:4:{s:1:"C";s:3:"116";s:2:"WX";s:3:"278";s:1:"N";s:1:"t";s:1:"B";a:4:{i:0;s:2:"13";i:1;s:3:"-10";i:2;s:3:"279";i:3;s:3:"579";}}i:117;a:4:{s:1:"C";s:3:"117";s:2:"WX";s:3:"500";s:1:"N";s:1:"u";s:1:"B";a:4:{i:0;s:1:"9";i:1;s:3:"-10";i:2;s:3:"479";i:3;s:3:"450";}}s:1:"u";a:4:{s:1:"C";s:3:"117";s:2:"WX";s:3:"500";s:1:"N";s:1:"u";s:1:"B";a:4:{i:0;s:1:"9";i:1;s:3:"-10";i:2;s:3:"479";i:3;s:3:"450";}}i:118;a:4:{s:1:"C";s:3:"118";s:2:"WX";s:3:"500";s:1:"N";s:1:"v";s:1:"B";a:4:{i:0;s:2:"19";i:1;s:3:"-14";i:2;s:3:"477";i:3;s:3:"450";}}s:1:"v";a:4:{s:1:"C";s:3:"118";s:2:"WX";s:3:"500";s:1:"N";s:1:"v";s:1:"B";a:4:{i:0;s:2:"19";i:1;s:3:"-14";i:2;s:3:"477";i:3;s:3:"450";}}i:119;a:4:{s:1:"C";s:3:"119";s:2:"WX";s:3:"722";s:1:"N";s:1:"w";s:1:"B";a:4:{i:0;s:2:"21";i:1;s:3:"-14";i:2;s:3:"694";i:3;s:3:"450";}}s:1:"w";a:4:{s:1:"C";s:3:"119";s:2:"WX";s:3:"722";s:1:"N";s:1:"w";s:1:"B";a:4:{i:0;s:2:"21";i:1;s:3:"-14";i:2;s:3:"694";i:3;s:3:"450";}}i:120;a:4:{s:1:"C";s:3:"120";s:2:"WX";s:3:"500";s:1:"N";s:1:"x";s:1:"B";a:4:{i:0;s:2:"17";i:1;s:1:"0";i:2;s:3:"479";i:3;s:3:"450";}}s:1:"x";a:4:{s:1:"C";s:3:"120";s:2:"WX";s:3:"500";s:1:"N";s:1:"x";s:1:"B";a:4:{i:0;s:2:"17";i:1;s:1:"0";i:2;s:3:"479";i:3;s:3:"450";}}i:121;a:4:{s:1:"C";s:3:"121";s:2:"WX";s:3:"500";s:1:"N";s:1:"y";s:1:"B";a:4:{i:0;s:2:"14";i:1;s:4:"-218";i:2;s:3:"475";i:3;s:3:"450";}}s:1:"y";a:4:{s:1:"C";s:3:"121";s:2:"WX";s:3:"500";s:1:"N";s:1:"y";s:1:"B";a:4:{i:0;s:2:"14";i:1;s:4:"-218";i:2;s:3:"475";i:3;s:3:"450";}}i:122;a:4:{s:1:"C";s:3:"122";s:2:"WX";s:3:"444";s:1:"N";s:1:"z";s:1:"B";a:4:{i:0;s:2:"27";i:1;s:1:"0";i:2;s:3:"418";i:3;s:3:"450";}}s:1:"z";a:4:{s:1:"C";s:3:"122";s:2:"WX";s:3:"444";s:1:"N";s:1:"z";s:1:"B";a:4:{i:0;s:2:"27";i:1;s:1:"0";i:2;s:3:"418";i:3;s:3:"450";}}i:123;a:4:{s:1:"C";s:3:"123";s:2:"WX";s:3:"480";s:1:"N";s:9:"braceleft";s:1:"B";a:4:{i:0;s:3:"100";i:1;s:4:"-181";i:2;s:3:"350";i:3;s:3:"680";}}s:9:"braceleft";a:4:{s:1:"C";s:3:"123";s:2:"WX";s:3:"480";s:1:"N";s:9:"braceleft";s:1:"B";a:4:{i:0;s:3:"100";i:1;s:4:"-181";i:2;s:3:"350";i:3;s:3:"680";}}i:124;a:4:{s:1:"C";s:3:"124";s:2:"WX";s:3:"200";s:1:"N";s:3:"bar";s:1:"B";a:4:{i:0;s:2:"67";i:1;s:4:"-218";i:2;s:3:"133";i:3;s:3:"782";}}s:3:"bar";a:4:{s:1:"C";s:3:"124";s:2:"WX";s:3:"200";s:1:"N";s:3:"bar";s:1:"B";a:4:{i:0;s:2:"67";i:1;s:4:"-218";i:2;s:3:"133";i:3;s:3:"782";}}i:125;a:4:{s:1:"C";s:3:"125";s:2:"WX";s:3:"480";s:1:"N";s:10:"braceright";s:1:"B";a:4:{i:0;s:3:"130";i:1;s:4:"-181";i:2;s:3:"380";i:3;s:3:"680";}}s:10:"braceright";a:4:{s:1:"C";s:3:"125";s:2:"WX";s:3:"480";s:1:"N";s:10:"braceright";s:1:"B";a:4:{i:0;s:3:"130";i:1;s:4:"-181";i:2;s:3:"380";i:3;s:3:"680";}}i:126;a:4:{s:1:"C";s:3:"126";s:2:"WX";s:3:"541";s:1:"N";s:10:"asciitilde";s:1:"B";a:4:{i:0;s:2:"40";i:1;s:3:"183";i:2;s:3:"502";i:3;s:3:"323";}}s:10:"asciitilde";a:4:{s:1:"C";s:3:"126";s:2:"WX";s:3:"541";s:1:"N";s:10:"asciitilde";s:1:"B";a:4:{i:0;s:2:"40";i:1;s:3:"183";i:2;s:3:"502";i:3;s:3:"323";}}i:161;a:4:{s:1:"C";s:3:"161";s:2:"WX";s:3:"333";s:1:"N";s:10:"exclamdown";s:1:"B";a:4:{i:0;s:2:"97";i:1;s:4:"-218";i:2;s:3:"205";i:3;s:3:"467";}}s:10:"exclamdown";a:4:{s:1:"C";s:3:"161";s:2:"WX";s:3:"333";s:1:"N";s:10:"exclamdown";s:1:"B";a:4:{i:0;s:2:"97";i:1;s:4:"-218";i:2;s:3:"205";i:3;s:3:"467";}}i:162;a:4:{s:1:"C";s:3:"162";s:2:"WX";s:3:"500";s:1:"N";s:4:"cent";s:1:"B";a:4:{i:0;s:2:"53";i:1;s:4:"-138";i:2;s:3:"448";i:3;s:3:"579";}}s:4:"cent";a:4:{s:1:"C";s:3:"162";s:2:"WX";s:3:"500";s:1:"N";s:4:"cent";s:1:"B";a:4:{i:0;s:2:"53";i:1;s:4:"-138";i:2;s:3:"448";i:3;s:3:"579";}}i:163;a:4:{s:1:"C";s:3:"163";s:2:"WX";s:3:"500";s:1:"N";s:8:"sterling";s:1:"B";a:4:{i:0;s:2:"12";i:1;s:2:"-8";i:2;s:3:"490";i:3;s:3:"676";}}s:8:"sterling";a:4:{s:1:"C";s:3:"163";s:2:"WX";s:3:"500";s:1:"N";s:8:"sterling";s:1:"B";a:4:{i:0;s:2:"12";i:1;s:2:"-8";i:2;s:3:"490";i:3;s:3:"676";}}i:164;a:4:{s:1:"C";s:3:"164";s:2:"WX";s:3:"167";s:1:"N";s:8:"fraction";s:1:"B";a:4:{i:0;s:4:"-168";i:1;s:3:"-14";i:2;s:3:"331";i:3;s:3:"676";}}s:8:"fraction";a:4:{s:1:"C";s:3:"164";s:2:"WX";s:3:"167";s:1:"N";s:8:"fraction";s:1:"B";a:4:{i:0;s:4:"-168";i:1;s:3:"-14";i:2;s:3:"331";i:3;s:3:"676";}}i:165;a:4:{s:1:"C";s:3:"165";s:2:"WX";s:3:"500";s:1:"N";s:3:"yen";s:1:"B";a:4:{i:0;s:3:"-53";i:1;s:1:"0";i:2;s:3:"512";i:3;s:3:"662";}}s:3:"yen";a:4:{s:1:"C";s:3:"165";s:2:"WX";s:3:"500";s:1:"N";s:3:"yen";s:1:"B";a:4:{i:0;s:3:"-53";i:1;s:1:"0";i:2;s:3:"512";i:3;s:3:"662";}}i:166;a:4:{s:1:"C";s:3:"166";s:2:"WX";s:3:"500";s:1:"N";s:6:"florin";s:1:"B";a:4:{i:0;s:1:"7";i:1;s:4:"-189";i:2;s:3:"490";i:3;s:3:"676";}}s:6:"florin";a:4:{s:1:"C";s:3:"166";s:2:"WX";s:3:"500";s:1:"N";s:6:"florin";s:1:"B";a:4:{i:0;s:1:"7";i:1;s:4:"-189";i:2;s:3:"490";i:3;s:3:"676";}}i:167;a:4:{s:1:"C";s:3:"167";s:2:"WX";s:3:"500";s:1:"N";s:7:"section";s:1:"B";a:4:{i:0;s:2:"70";i:1;s:4:"-148";i:2;s:3:"426";i:3;s:3:"676";}}s:7:"section";a:4:{s:1:"C";s:3:"167";s:2:"WX";s:3:"500";s:1:"N";s:7:"section";s:1:"B";a:4:{i:0;s:2:"70";i:1;s:4:"-148";i:2;s:3:"426";i:3;s:3:"676";}}i:168;a:4:{s:1:"C";s:3:"168";s:2:"WX";s:3:"500";s:1:"N";s:8:"currency";s:1:"B";a:4:{i:0;s:3:"-22";i:1;s:2:"58";i:2;s:3:"522";i:3;s:3:"602";}}s:8:"currency";a:4:{s:1:"C";s:3:"168";s:2:"WX";s:3:"500";s:1:"N";s:8:"currency";s:1:"B";a:4:{i:0;s:3:"-22";i:1;s:2:"58";i:2;s:3:"522";i:3;s:3:"602";}}i:169;a:4:{s:1:"C";s:3:"169";s:2:"WX";s:3:"180";s:1:"N";s:11:"quotesingle";s:1:"B";a:4:{i:0;s:2:"48";i:1;s:3:"431";i:2;s:3:"133";i:3;s:3:"676";}}s:11:"quotesingle";a:4:{s:1:"C";s:3:"169";s:2:"WX";s:3:"180";s:1:"N";s:11:"quotesingle";s:1:"B";a:4:{i:0;s:2:"48";i:1;s:3:"431";i:2;s:3:"133";i:3;s:3:"676";}}i:170;a:4:{s:1:"C";s:3:"170";s:2:"WX";s:3:"444";s:1:"N";s:12:"quotedblleft";s:1:"B";a:4:{i:0;s:2:"43";i:1;s:3:"433";i:2;s:3:"414";i:3;s:3:"676";}}s:12:"quotedblleft";a:4:{s:1:"C";s:3:"170";s:2:"WX";s:3:"444";s:1:"N";s:12:"quotedblleft";s:1:"B";a:4:{i:0;s:2:"43";i:1;s:3:"433";i:2;s:3:"414";i:3;s:3:"676";}}i:171;a:4:{s:1:"C";s:3:"171";s:2:"WX";s:3:"500";s:1:"N";s:13:"guillemotleft";s:1:"B";a:4:{i:0;s:2:"42";i:1;s:2:"33";i:2;s:3:"456";i:3;s:3:"416";}}s:13:"guillemotleft";a:4:{s:1:"C";s:3:"171";s:2:"WX";s:3:"500";s:1:"N";s:13:"guillemotleft";s:1:"B";a:4:{i:0;s:2:"42";i:1;s:2:"33";i:2;s:3:"456";i:3;s:3:"416";}}i:172;a:4:{s:1:"C";s:3:"172";s:2:"WX";s:3:"333";s:1:"N";s:13:"guilsinglleft";s:1:"B";a:4:{i:0;s:2:"63";i:1;s:2:"33";i:2;s:3:"285";i:3;s:3:"416";}}s:13:"guilsinglleft";a:4:{s:1:"C";s:3:"172";s:2:"WX";s:3:"333";s:1:"N";s:13:"guilsinglleft";s:1:"B";a:4:{i:0;s:2:"63";i:1;s:2:"33";i:2;s:3:"285";i:3;s:3:"416";}}i:173;a:4:{s:1:"C";s:3:"173";s:2:"WX";s:3:"333";s:1:"N";s:14:"guilsinglright";s:1:"B";a:4:{i:0;s:2:"48";i:1;s:2:"33";i:2;s:3:"270";i:3;s:3:"416";}}s:14:"guilsinglright";a:4:{s:1:"C";s:3:"173";s:2:"WX";s:3:"333";s:1:"N";s:14:"guilsinglright";s:1:"B";a:4:{i:0;s:2:"48";i:1;s:2:"33";i:2;s:3:"270";i:3;s:3:"416";}}i:174;a:4:{s:1:"C";s:3:"174";s:2:"WX";s:3:"556";s:1:"N";s:2:"fi";s:1:"B";a:4:{i:0;s:2:"31";i:1;s:1:"0";i:2;s:3:"521";i:3;s:3:"683";}}s:2:"fi";a:4:{s:1:"C";s:3:"174";s:2:"WX";s:3:"556";s:1:"N";s:2:"fi";s:1:"B";a:4:{i:0;s:2:"31";i:1;s:1:"0";i:2;s:3:"521";i:3;s:3:"683";}}i:175;a:4:{s:1:"C";s:3:"175";s:2:"WX";s:3:"556";s:1:"N";s:2:"fl";s:1:"B";a:4:{i:0;s:2:"32";i:1;s:1:"0";i:2;s:3:"521";i:3;s:3:"683";}}s:2:"fl";a:4:{s:1:"C";s:3:"175";s:2:"WX";s:3:"556";s:1:"N";s:2:"fl";s:1:"B";a:4:{i:0;s:2:"32";i:1;s:1:"0";i:2;s:3:"521";i:3;s:3:"683";}}i:177;a:4:{s:1:"C";s:3:"177";s:2:"WX";s:3:"500";s:1:"N";s:6:"endash";s:1:"B";a:4:{i:0;s:1:"0";i:1;s:3:"201";i:2;s:3:"500";i:3;s:3:"250";}}s:6:"endash";a:4:{s:1:"C";s:3:"177";s:2:"WX";s:3:"500";s:1:"N";s:6:"endash";s:1:"B";a:4:{i:0;s:1:"0";i:1;s:3:"201";i:2;s:3:"500";i:3;s:3:"250";}}i:178;a:4:{s:1:"C";s:3:"178";s:2:"WX";s:3:"500";s:1:"N";s:6:"dagger";s:1:"B";a:4:{i:0;s:2:"59";i:1;s:4:"-149";i:2;s:3:"442";i:3;s:3:"676";}}s:6:"dagger";a:4:{s:1:"C";s:3:"178";s:2:"WX";s:3:"500";s:1:"N";s:6:"dagger";s:1:"B";a:4:{i:0;s:2:"59";i:1;s:4:"-149";i:2;s:3:"442";i:3;s:3:"676";}}i:179;a:4:{s:1:"C";s:3:"179";s:2:"WX";s:3:"500";s:1:"N";s:9:"daggerdbl";s:1:"B";a:4:{i:0;s:2:"58";i:1;s:4:"-153";i:2;s:3:"442";i:3;s:3:"676";}}s:9:"daggerdbl";a:4:{s:1:"C";s:3:"179";s:2:"WX";s:3:"500";s:1:"N";s:9:"daggerdbl";s:1:"B";a:4:{i:0;s:2:"58";i:1;s:4:"-153";i:2;s:3:"442";i:3;s:3:"676";}}i:180;a:4:{s:1:"C";s:3:"180";s:2:"WX";s:3:"250";s:1:"N";s:14:"periodcentered";s:1:"B";a:4:{i:0;s:2:"70";i:1;s:3:"199";i:2;s:3:"181";i:3;s:3:"310";}}s:14:"periodcentered";a:4:{s:1:"C";s:3:"180";s:2:"WX";s:3:"250";s:1:"N";s:14:"periodcentered";s:1:"B";a:4:{i:0;s:2:"70";i:1;s:3:"199";i:2;s:3:"181";i:3;s:3:"310";}}i:182;a:4:{s:1:"C";s:3:"182";s:2:"WX";s:3:"453";s:1:"N";s:9:"paragraph";s:1:"B";a:4:{i:0;s:3:"-22";i:1;s:4:"-154";i:2;s:3:"450";i:3;s:3:"662";}}s:9:"paragraph";a:4:{s:1:"C";s:3:"182";s:2:"WX";s:3:"453";s:1:"N";s:9:"paragraph";s:1:"B";a:4:{i:0;s:3:"-22";i:1;s:4:"-154";i:2;s:3:"450";i:3;s:3:"662";}}i:183;a:4:{s:1:"C";s:3:"183";s:2:"WX";s:3:"350";s:1:"N";s:6:"bullet";s:1:"B";a:4:{i:0;s:2:"40";i:1;s:3:"196";i:2;s:3:"310";i:3;s:3:"466";}}s:6:"bullet";a:4:{s:1:"C";s:3:"183";s:2:"WX";s:3:"350";s:1:"N";s:6:"bullet";s:1:"B";a:4:{i:0;s:2:"40";i:1;s:3:"196";i:2;s:3:"310";i:3;s:3:"466";}}i:184;a:4:{s:1:"C";s:3:"184";s:2:"WX";s:3:"333";s:1:"N";s:14:"quotesinglbase";s:1:"B";a:4:{i:0;s:2:"79";i:1;s:4:"-141";i:2;s:3:"218";i:3;s:3:"102";}}s:14:"quotesinglbase";a:4:{s:1:"C";s:3:"184";s:2:"WX";s:3:"333";s:1:"N";s:14:"quotesinglbase";s:1:"B";a:4:{i:0;s:2:"79";i:1;s:4:"-141";i:2;s:3:"218";i:3;s:3:"102";}}i:185;a:4:{s:1:"C";s:3:"185";s:2:"WX";s:3:"444";s:1:"N";s:12:"quotedblbase";s:1:"B";a:4:{i:0;s:2:"45";i:1;s:4:"-141";i:2;s:3:"416";i:3;s:3:"102";}}s:12:"quotedblbase";a:4:{s:1:"C";s:3:"185";s:2:"WX";s:3:"444";s:1:"N";s:12:"quotedblbase";s:1:"B";a:4:{i:0;s:2:"45";i:1;s:4:"-141";i:2;s:3:"416";i:3;s:3:"102";}}i:186;a:4:{s:1:"C";s:3:"186";s:2:"WX";s:3:"444";s:1:"N";s:13:"quotedblright";s:1:"B";a:4:{i:0;s:2:"30";i:1;s:3:"433";i:2;s:3:"401";i:3;s:3:"676";}}s:13:"quotedblright";a:4:{s:1:"C";s:3:"186";s:2:"WX";s:3:"444";s:1:"N";s:13:"quotedblright";s:1:"B";a:4:{i:0;s:2:"30";i:1;s:3:"433";i:2;s:3:"401";i:3;s:3:"676";}}i:187;a:4:{s:1:"C";s:3:"187";s:2:"WX";s:3:"500";s:1:"N";s:14:"guillemotright";s:1:"B";a:4:{i:0;s:2:"44";i:1;s:2:"33";i:2;s:3:"458";i:3;s:3:"416";}}s:14:"guillemotright";a:4:{s:1:"C";s:3:"187";s:2:"WX";s:3:"500";s:1:"N";s:14:"guillemotright";s:1:"B";a:4:{i:0;s:2:"44";i:1;s:2:"33";i:2;s:3:"458";i:3;s:3:"416";}}i:188;a:4:{s:1:"C";s:3:"188";s:2:"WX";s:4:"1000";s:1:"N";s:8:"ellipsis";s:1:"B";a:4:{i:0;s:3:"111";i:1;s:3:"-11";i:2;s:3:"888";i:3;s:3:"100";}}s:8:"ellipsis";a:4:{s:1:"C";s:3:"188";s:2:"WX";s:4:"1000";s:1:"N";s:8:"ellipsis";s:1:"B";a:4:{i:0;s:3:"111";i:1;s:3:"-11";i:2;s:3:"888";i:3;s:3:"100";}}i:189;a:4:{s:1:"C";s:3:"189";s:2:"WX";s:4:"1000";s:1:"N";s:11:"perthousand";s:1:"B";a:4:{i:0;s:1:"7";i:1;s:3:"-19";i:2;s:3:"994";i:3;s:3:"706";}}s:11:"perthousand";a:4:{s:1:"C";s:3:"189";s:2:"WX";s:4:"1000";s:1:"N";s:11:"perthousand";s:1:"B";a:4:{i:0;s:1:"7";i:1;s:3:"-19";i:2;s:3:"994";i:3;s:3:"706";}}i:191;a:4:{s:1:"C";s:3:"191";s:2:"WX";s:3:"444";s:1:"N";s:12:"questiondown";s:1:"B";a:4:{i:0;s:2:"30";i:1;s:4:"-218";i:2;s:3:"376";i:3;s:3:"466";}}s:12:"questiondown";a:4:{s:1:"C";s:3:"191";s:2:"WX";s:3:"444";s:1:"N";s:12:"questiondown";s:1:"B";a:4:{i:0;s:2:"30";i:1;s:4:"-218";i:2;s:3:"376";i:3;s:3:"466";}}i:193;a:4:{s:1:"C";s:3:"193";s:2:"WX";s:3:"333";s:1:"N";s:5:"grave";s:1:"B";a:4:{i:0;s:2:"19";i:1;s:3:"507";i:2;s:3:"242";i:3;s:3:"678";}}s:5:"grave";a:4:{s:1:"C";s:3:"193";s:2:"WX";s:3:"333";s:1:"N";s:5:"grave";s:1:"B";a:4:{i:0;s:2:"19";i:1;s:3:"507";i:2;s:3:"242";i:3;s:3:"678";}}i:194;a:4:{s:1:"C";s:3:"194";s:2:"WX";s:3:"333";s:1:"N";s:5:"acute";s:1:"B";a:4:{i:0;s:2:"93";i:1;s:3:"507";i:2;s:3:"317";i:3;s:3:"678";}}s:5:"acute";a:4:{s:1:"C";s:3:"194";s:2:"WX";s:3:"333";s:1:"N";s:5:"acute";s:1:"B";a:4:{i:0;s:2:"93";i:1;s:3:"507";i:2;s:3:"317";i:3;s:3:"678";}}i:195;a:4:{s:1:"C";s:3:"195";s:2:"WX";s:3:"333";s:1:"N";s:10:"circumflex";s:1:"B";a:4:{i:0;s:2:"11";i:1;s:3:"507";i:2;s:3:"322";i:3;s:3:"674";}}s:10:"circumflex";a:4:{s:1:"C";s:3:"195";s:2:"WX";s:3:"333";s:1:"N";s:10:"circumflex";s:1:"B";a:4:{i:0;s:2:"11";i:1;s:3:"507";i:2;s:3:"322";i:3;s:3:"674";}}i:196;a:4:{s:1:"C";s:3:"196";s:2:"WX";s:3:"333";s:1:"N";s:5:"tilde";s:1:"B";a:4:{i:0;s:1:"1";i:1;s:3:"532";i:2;s:3:"331";i:3;s:3:"638";}}s:5:"tilde";a:4:{s:1:"C";s:3:"196";s:2:"WX";s:3:"333";s:1:"N";s:5:"tilde";s:1:"B";a:4:{i:0;s:1:"1";i:1;s:3:"532";i:2;s:3:"331";i:3;s:3:"638";}}i:197;a:4:{s:1:"C";s:3:"197";s:2:"WX";s:3:"333";s:1:"N";s:6:"macron";s:1:"B";a:4:{i:0;s:2:"11";i:1;s:3:"547";i:2;s:3:"322";i:3;s:3:"601";}}s:6:"macron";a:4:{s:1:"C";s:3:"197";s:2:"WX";s:3:"333";s:1:"N";s:6:"macron";s:1:"B";a:4:{i:0;s:2:"11";i:1;s:3:"547";i:2;s:3:"322";i:3;s:3:"601";}}i:198;a:4:{s:1:"C";s:3:"198";s:2:"WX";s:3:"333";s:1:"N";s:5:"breve";s:1:"B";a:4:{i:0;s:2:"26";i:1;s:3:"507";i:2;s:3:"307";i:3;s:3:"664";}}s:5:"breve";a:4:{s:1:"C";s:3:"198";s:2:"WX";s:3:"333";s:1:"N";s:5:"breve";s:1:"B";a:4:{i:0;s:2:"26";i:1;s:3:"507";i:2;s:3:"307";i:3;s:3:"664";}}i:199;a:4:{s:1:"C";s:3:"199";s:2:"WX";s:3:"333";s:1:"N";s:9:"dotaccent";s:1:"B";a:4:{i:0;s:3:"118";i:1;s:3:"581";i:2;s:3:"216";i:3;s:3:"681";}}s:9:"dotaccent";a:4:{s:1:"C";s:3:"199";s:2:"WX";s:3:"333";s:1:"N";s:9:"dotaccent";s:1:"B";a:4:{i:0;s:3:"118";i:1;s:3:"581";i:2;s:3:"216";i:3;s:3:"681";}}i:200;a:4:{s:1:"C";s:3:"200";s:2:"WX";s:3:"333";s:1:"N";s:8:"dieresis";s:1:"B";a:4:{i:0;s:2:"18";i:1;s:3:"581";i:2;s:3:"315";i:3;s:3:"681";}}s:8:"dieresis";a:4:{s:1:"C";s:3:"200";s:2:"WX";s:3:"333";s:1:"N";s:8:"dieresis";s:1:"B";a:4:{i:0;s:2:"18";i:1;s:3:"581";i:2;s:3:"315";i:3;s:3:"681";}}i:202;a:4:{s:1:"C";s:3:"202";s:2:"WX";s:3:"333";s:1:"N";s:4:"ring";s:1:"B";a:4:{i:0;s:2:"67";i:1;s:3:"512";i:2;s:3:"266";i:3;s:3:"711";}}s:4:"ring";a:4:{s:1:"C";s:3:"202";s:2:"WX";s:3:"333";s:1:"N";s:4:"ring";s:1:"B";a:4:{i:0;s:2:"67";i:1;s:3:"512";i:2;s:3:"266";i:3;s:3:"711";}}i:203;a:4:{s:1:"C";s:3:"203";s:2:"WX";s:3:"333";s:1:"N";s:7:"cedilla";s:1:"B";a:4:{i:0;s:2:"52";i:1;s:4:"-215";i:2;s:3:"261";i:3;s:1:"0";}}s:7:"cedilla";a:4:{s:1:"C";s:3:"203";s:2:"WX";s:3:"333";s:1:"N";s:7:"cedilla";s:1:"B";a:4:{i:0;s:2:"52";i:1;s:4:"-215";i:2;s:3:"261";i:3;s:1:"0";}}i:205;a:4:{s:1:"C";s:3:"205";s:2:"WX";s:3:"333";s:1:"N";s:12:"hungarumlaut";s:1:"B";a:4:{i:0;s:2:"-3";i:1;s:3:"507";i:2;s:3:"377";i:3;s:3:"678";}}s:12:"hungarumlaut";a:4:{s:1:"C";s:3:"205";s:2:"WX";s:3:"333";s:1:"N";s:12:"hungarumlaut";s:1:"B";a:4:{i:0;s:2:"-3";i:1;s:3:"507";i:2;s:3:"377";i:3;s:3:"678";}}i:206;a:4:{s:1:"C";s:3:"206";s:2:"WX";s:3:"333";s:1:"N";s:6:"ogonek";s:1:"B";a:4:{i:0;s:2:"62";i:1;s:4:"-165";i:2;s:3:"243";i:3;s:1:"0";}}s:6:"ogonek";a:4:{s:1:"C";s:3:"206";s:2:"WX";s:3:"333";s:1:"N";s:6:"ogonek";s:1:"B";a:4:{i:0;s:2:"62";i:1;s:4:"-165";i:2;s:3:"243";i:3;s:1:"0";}}i:207;a:4:{s:1:"C";s:3:"207";s:2:"WX";s:3:"333";s:1:"N";s:5:"caron";s:1:"B";a:4:{i:0;s:2:"11";i:1;s:3:"507";i:2;s:3:"322";i:3;s:3:"674";}}s:5:"caron";a:4:{s:1:"C";s:3:"207";s:2:"WX";s:3:"333";s:1:"N";s:5:"caron";s:1:"B";a:4:{i:0;s:2:"11";i:1;s:3:"507";i:2;s:3:"322";i:3;s:3:"674";}}i:208;a:4:{s:1:"C";s:3:"208";s:2:"WX";s:4:"1000";s:1:"N";s:6:"emdash";s:1:"B";a:4:{i:0;s:1:"0";i:1;s:3:"201";i:2;s:4:"1000";i:3;s:3:"250";}}s:6:"emdash";a:4:{s:1:"C";s:3:"208";s:2:"WX";s:4:"1000";s:1:"N";s:6:"emdash";s:1:"B";a:4:{i:0;s:1:"0";i:1;s:3:"201";i:2;s:4:"1000";i:3;s:3:"250";}}i:225;a:4:{s:1:"C";s:3:"225";s:2:"WX";s:3:"889";s:1:"N";s:2:"AE";s:1:"B";a:4:{i:0;s:1:"0";i:1;s:1:"0";i:2;s:3:"863";i:3;s:3:"662";}}s:2:"AE";a:4:{s:1:"C";s:3:"225";s:2:"WX";s:3:"889";s:1:"N";s:2:"AE";s:1:"B";a:4:{i:0;s:1:"0";i:1;s:1:"0";i:2;s:3:"863";i:3;s:3:"662";}}i:227;a:4:{s:1:"C";s:3:"227";s:2:"WX";s:3:"276";s:1:"N";s:11:"ordfeminine";s:1:"B";a:4:{i:0;s:1:"4";i:1;s:3:"394";i:2;s:3:"270";i:3;s:3:"676";}}s:11:"ordfeminine";a:4:{s:1:"C";s:3:"227";s:2:"WX";s:3:"276";s:1:"N";s:11:"ordfeminine";s:1:"B";a:4:{i:0;s:1:"4";i:1;s:3:"394";i:2;s:3:"270";i:3;s:3:"676";}}i:232;a:4:{s:1:"C";s:3:"232";s:2:"WX";s:3:"611";s:1:"N";s:6:"Lslash";s:1:"B";a:4:{i:0;s:2:"12";i:1;s:1:"0";i:2;s:3:"598";i:3;s:3:"662";}}s:6:"Lslash";a:4:{s:1:"C";s:3:"232";s:2:"WX";s:3:"611";s:1:"N";s:6:"Lslash";s:1:"B";a:4:{i:0;s:2:"12";i:1;s:1:"0";i:2;s:3:"598";i:3;s:3:"662";}}i:233;a:4:{s:1:"C";s:3:"233";s:2:"WX";s:3:"722";s:1:"N";s:6:"Oslash";s:1:"B";a:4:{i:0;s:2:"34";i:1;s:3:"-80";i:2;s:3:"688";i:3;s:3:"734";}}s:6:"Oslash";a:4:{s:1:"C";s:3:"233";s:2:"WX";s:3:"722";s:1:"N";s:6:"Oslash";s:1:"B";a:4:{i:0;s:2:"34";i:1;s:3:"-80";i:2;s:3:"688";i:3;s:3:"734";}}i:234;a:4:{s:1:"C";s:3:"234";s:2:"WX";s:3:"889";s:1:"N";s:2:"OE";s:1:"B";a:4:{i:0;s:2:"30";i:1;s:2:"-6";i:2;s:3:"885";i:3;s:3:"668";}}s:2:"OE";a:4:{s:1:"C";s:3:"234";s:2:"WX";s:3:"889";s:1:"N";s:2:"OE";s:1:"B";a:4:{i:0;s:2:"30";i:1;s:2:"-6";i:2;s:3:"885";i:3;s:3:"668";}}i:235;a:4:{s:1:"C";s:3:"235";s:2:"WX";s:3:"310";s:1:"N";s:12:"ordmasculine";s:1:"B";a:4:{i:0;s:1:"6";i:1;s:3:"394";i:2;s:3:"304";i:3;s:3:"676";}}s:12:"ordmasculine";a:4:{s:1:"C";s:3:"235";s:2:"WX";s:3:"310";s:1:"N";s:12:"ordmasculine";s:1:"B";a:4:{i:0;s:1:"6";i:1;s:3:"394";i:2;s:3:"304";i:3;s:3:"676";}}i:241;a:4:{s:1:"C";s:3:"241";s:2:"WX";s:3:"667";s:1:"N";s:2:"ae";s:1:"B";a:4:{i:0;s:2:"38";i:1;s:3:"-10";i:2;s:3:"632";i:3;s:3:"460";}}s:2:"ae";a:4:{s:1:"C";s:3:"241";s:2:"WX";s:3:"667";s:1:"N";s:2:"ae";s:1:"B";a:4:{i:0;s:2:"38";i:1;s:3:"-10";i:2;s:3:"632";i:3;s:3:"460";}}i:245;a:4:{s:1:"C";s:3:"245";s:2:"WX";s:3:"278";s:1:"N";s:8:"dotlessi";s:1:"B";a:4:{i:0;s:2:"16";i:1;s:1:"0";i:2;s:3:"253";i:3;s:3:"460";}}s:8:"dotlessi";a:4:{s:1:"C";s:3:"245";s:2:"WX";s:3:"278";s:1:"N";s:8:"dotlessi";s:1:"B";a:4:{i:0;s:2:"16";i:1;s:1:"0";i:2;s:3:"253";i:3;s:3:"460";}}i:248;a:4:{s:1:"C";s:3:"248";s:2:"WX";s:3:"278";s:1:"N";s:6:"lslash";s:1:"B";a:4:{i:0;s:2:"19";i:1;s:1:"0";i:2;s:3:"259";i:3;s:3:"683";}}s:6:"lslash";a:4:{s:1:"C";s:3:"248";s:2:"WX";s:3:"278";s:1:"N";s:6:"lslash";s:1:"B";a:4:{i:0;s:2:"19";i:1;s:1:"0";i:2;s:3:"259";i:3;s:3:"683";}}i:249;a:4:{s:1:"C";s:3:"249";s:2:"WX";s:3:"500";s:1:"N";s:6:"oslash";s:1:"B";a:4:{i:0;s:2:"29";i:1;s:4:"-112";i:2;s:3:"470";i:3;s:3:"551";}}s:6:"oslash";a:4:{s:1:"C";s:3:"249";s:2:"WX";s:3:"500";s:1:"N";s:6:"oslash";s:1:"B";a:4:{i:0;s:2:"29";i:1;s:4:"-112";i:2;s:3:"470";i:3;s:3:"551";}}i:250;a:4:{s:1:"C";s:3:"250";s:2:"WX";s:3:"722";s:1:"N";s:2:"oe";s:1:"B";a:4:{i:0;s:2:"30";i:1;s:3:"-10";i:2;s:3:"690";i:3;s:3:"460";}}s:2:"oe";a:4:{s:1:"C";s:3:"250";s:2:"WX";s:3:"722";s:1:"N";s:2:"oe";s:1:"B";a:4:{i:0;s:2:"30";i:1;s:3:"-10";i:2;s:3:"690";i:3;s:3:"460";}}i:251;a:4:{s:1:"C";s:3:"251";s:2:"WX";s:3:"500";s:1:"N";s:10:"germandbls";s:1:"B";a:4:{i:0;s:2:"12";i:1;s:2:"-9";i:2;s:3:"468";i:3;s:3:"683";}}s:10:"germandbls";a:4:{s:1:"C";s:3:"251";s:2:"WX";s:3:"500";s:1:"N";s:10:"germandbls";s:1:"B";a:4:{i:0;s:2:"12";i:1;s:2:"-9";i:2;s:3:"468";i:3;s:3:"683";}}s:9:"Idieresis";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"333";s:1:"N";s:9:"Idieresis";s:1:"B";a:4:{i:0;s:2:"18";i:1;s:1:"0";i:2;s:3:"315";i:3;s:3:"835";}}s:6:"eacute";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"444";s:1:"N";s:6:"eacute";s:1:"B";a:4:{i:0;s:2:"25";i:1;s:3:"-10";i:2;s:3:"424";i:3;s:3:"678";}}s:6:"abreve";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"444";s:1:"N";s:6:"abreve";s:1:"B";a:4:{i:0;s:2:"37";i:1;s:3:"-10";i:2;s:3:"442";i:3;s:3:"664";}}s:13:"uhungarumlaut";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"500";s:1:"N";s:13:"uhungarumlaut";s:1:"B";a:4:{i:0;s:1:"9";i:1;s:3:"-10";i:2;s:3:"501";i:3;s:3:"678";}}s:6:"ecaron";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"444";s:1:"N";s:6:"ecaron";s:1:"B";a:4:{i:0;s:2:"25";i:1;s:3:"-10";i:2;s:3:"424";i:3;s:3:"674";}}s:9:"Ydieresis";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"722";s:1:"N";s:9:"Ydieresis";s:1:"B";a:4:{i:0;s:2:"22";i:1;s:1:"0";i:2;s:3:"703";i:3;s:3:"835";}}s:6:"divide";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"564";s:1:"N";s:6:"divide";s:1:"B";a:4:{i:0;s:2:"30";i:1;s:3:"-10";i:2;s:3:"534";i:3;s:3:"516";}}s:6:"Yacute";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"722";s:1:"N";s:6:"Yacute";s:1:"B";a:4:{i:0;s:2:"22";i:1;s:1:"0";i:2;s:3:"703";i:3;s:3:"890";}}s:11:"Acircumflex";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"722";s:1:"N";s:11:"Acircumflex";s:1:"B";a:4:{i:0;s:2:"15";i:1;s:1:"0";i:2;s:3:"706";i:3;s:3:"886";}}s:6:"aacute";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"444";s:1:"N";s:6:"aacute";s:1:"B";a:4:{i:0;s:2:"37";i:1;s:3:"-10";i:2;s:3:"442";i:3;s:3:"678";}}s:11:"Ucircumflex";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"722";s:1:"N";s:11:"Ucircumflex";s:1:"B";a:4:{i:0;s:2:"14";i:1;s:3:"-14";i:2;s:3:"705";i:3;s:3:"886";}}s:6:"yacute";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"500";s:1:"N";s:6:"yacute";s:1:"B";a:4:{i:0;s:2:"14";i:1;s:4:"-218";i:2;s:3:"475";i:3;s:3:"678";}}s:12:"scommaaccent";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"389";s:1:"N";s:12:"scommaaccent";s:1:"B";a:4:{i:0;s:2:"51";i:1;s:4:"-218";i:2;s:3:"348";i:3;s:3:"460";}}s:11:"ecircumflex";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"444";s:1:"N";s:11:"ecircumflex";s:1:"B";a:4:{i:0;s:2:"25";i:1;s:3:"-10";i:2;s:3:"424";i:3;s:3:"674";}}s:5:"Uring";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"722";s:1:"N";s:5:"Uring";s:1:"B";a:4:{i:0;s:2:"14";i:1;s:3:"-14";i:2;s:3:"705";i:3;s:3:"898";}}s:9:"Udieresis";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"722";s:1:"N";s:9:"Udieresis";s:1:"B";a:4:{i:0;s:2:"14";i:1;s:3:"-14";i:2;s:3:"705";i:3;s:3:"835";}}s:7:"aogonek";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"444";s:1:"N";s:7:"aogonek";s:1:"B";a:4:{i:0;s:2:"37";i:1;s:4:"-165";i:2;s:3:"469";i:3;s:3:"460";}}s:6:"Uacute";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"722";s:1:"N";s:6:"Uacute";s:1:"B";a:4:{i:0;s:2:"14";i:1;s:3:"-14";i:2;s:3:"705";i:3;s:3:"890";}}s:7:"uogonek";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"500";s:1:"N";s:7:"uogonek";s:1:"B";a:4:{i:0;s:1:"9";i:1;s:4:"-155";i:2;s:3:"487";i:3;s:3:"450";}}s:9:"Edieresis";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"611";s:1:"N";s:9:"Edieresis";s:1:"B";a:4:{i:0;s:2:"12";i:1;s:1:"0";i:2;s:3:"597";i:3;s:3:"835";}}s:6:"Dcroat";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"722";s:1:"N";s:6:"Dcroat";s:1:"B";a:4:{i:0;s:2:"16";i:1;s:1:"0";i:2;s:3:"685";i:3;s:3:"662";}}s:11:"commaaccent";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"250";s:1:"N";s:11:"commaaccent";s:1:"B";a:4:{i:0;s:2:"59";i:1;s:4:"-218";i:2;s:3:"184";i:3;s:3:"-50";}}s:9:"copyright";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"760";s:1:"N";s:9:"copyright";s:1:"B";a:4:{i:0;s:2:"38";i:1;s:3:"-14";i:2;s:3:"722";i:3;s:3:"676";}}s:7:"Emacron";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"611";s:1:"N";s:7:"Emacron";s:1:"B";a:4:{i:0;s:2:"12";i:1;s:1:"0";i:2;s:3:"597";i:3;s:3:"813";}}s:6:"ccaron";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"444";s:1:"N";s:6:"ccaron";s:1:"B";a:4:{i:0;s:2:"25";i:1;s:3:"-10";i:2;s:3:"412";i:3;s:3:"674";}}s:5:"aring";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"444";s:1:"N";s:5:"aring";s:1:"B";a:4:{i:0;s:2:"37";i:1;s:3:"-10";i:2;s:3:"442";i:3;s:3:"711";}}s:12:"Ncommaaccent";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"722";s:1:"N";s:12:"Ncommaaccent";s:1:"B";a:4:{i:0;s:2:"12";i:1;s:4:"-198";i:2;s:3:"707";i:3;s:3:"662";}}s:6:"lacute";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"278";s:1:"N";s:6:"lacute";s:1:"B";a:4:{i:0;s:2:"19";i:1;s:1:"0";i:2;s:3:"290";i:3;s:3:"890";}}s:6:"agrave";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"444";s:1:"N";s:6:"agrave";s:1:"B";a:4:{i:0;s:2:"37";i:1;s:3:"-10";i:2;s:3:"442";i:3;s:3:"678";}}s:12:"Tcommaaccent";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"611";s:1:"N";s:12:"Tcommaaccent";s:1:"B";a:4:{i:0;s:2:"17";i:1;s:4:"-218";i:2;s:3:"593";i:3;s:3:"662";}}s:6:"Cacute";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"667";s:1:"N";s:6:"Cacute";s:1:"B";a:4:{i:0;s:2:"28";i:1;s:3:"-14";i:2;s:3:"633";i:3;s:3:"890";}}s:6:"atilde";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"444";s:1:"N";s:6:"atilde";s:1:"B";a:4:{i:0;s:2:"37";i:1;s:3:"-10";i:2;s:3:"442";i:3;s:3:"638";}}s:10:"Edotaccent";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"611";s:1:"N";s:10:"Edotaccent";s:1:"B";a:4:{i:0;s:2:"12";i:1;s:1:"0";i:2;s:3:"597";i:3;s:3:"835";}}s:6:"scaron";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"389";s:1:"N";s:6:"scaron";s:1:"B";a:4:{i:0;s:2:"39";i:1;s:3:"-10";i:2;s:3:"350";i:3;s:3:"674";}}s:8:"scedilla";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"389";s:1:"N";s:8:"scedilla";s:1:"B";a:4:{i:0;s:2:"51";i:1;s:4:"-215";i:2;s:3:"348";i:3;s:3:"460";}}s:6:"iacute";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"278";s:1:"N";s:6:"iacute";s:1:"B";a:4:{i:0;s:2:"16";i:1;s:1:"0";i:2;s:3:"290";i:3;s:3:"678";}}s:7:"lozenge";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"471";s:1:"N";s:7:"lozenge";s:1:"B";a:4:{i:0;s:2:"13";i:1;s:1:"0";i:2;s:3:"459";i:3;s:3:"724";}}s:6:"Rcaron";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"667";s:1:"N";s:6:"Rcaron";s:1:"B";a:4:{i:0;s:2:"17";i:1;s:1:"0";i:2;s:3:"659";i:3;s:3:"886";}}s:12:"Gcommaaccent";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"722";s:1:"N";s:12:"Gcommaaccent";s:1:"B";a:4:{i:0;s:2:"32";i:1;s:4:"-218";i:2;s:3:"709";i:3;s:3:"676";}}s:11:"ucircumflex";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"500";s:1:"N";s:11:"ucircumflex";s:1:"B";a:4:{i:0;s:1:"9";i:1;s:3:"-10";i:2;s:3:"479";i:3;s:3:"674";}}s:11:"acircumflex";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"444";s:1:"N";s:11:"acircumflex";s:1:"B";a:4:{i:0;s:2:"37";i:1;s:3:"-10";i:2;s:3:"442";i:3;s:3:"674";}}s:7:"Amacron";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"722";s:1:"N";s:7:"Amacron";s:1:"B";a:4:{i:0;s:2:"15";i:1;s:1:"0";i:2;s:3:"706";i:3;s:3:"813";}}s:6:"rcaron";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"333";s:1:"N";s:6:"rcaron";s:1:"B";a:4:{i:0;s:1:"5";i:1;s:1:"0";i:2;s:3:"335";i:3;s:3:"674";}}s:8:"ccedilla";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"444";s:1:"N";s:8:"ccedilla";s:1:"B";a:4:{i:0;s:2:"25";i:1;s:4:"-215";i:2;s:3:"412";i:3;s:3:"460";}}s:10:"Zdotaccent";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"611";s:1:"N";s:10:"Zdotaccent";s:1:"B";a:4:{i:0;s:1:"9";i:1;s:1:"0";i:2;s:3:"597";i:3;s:3:"835";}}s:5:"Thorn";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"556";s:1:"N";s:5:"Thorn";s:1:"B";a:4:{i:0;s:2:"16";i:1;s:1:"0";i:2;s:3:"542";i:3;s:3:"662";}}s:7:"Omacron";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"722";s:1:"N";s:7:"Omacron";s:1:"B";a:4:{i:0;s:2:"34";i:1;s:3:"-14";i:2;s:3:"688";i:3;s:3:"813";}}s:6:"Racute";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"667";s:1:"N";s:6:"Racute";s:1:"B";a:4:{i:0;s:2:"17";i:1;s:1:"0";i:2;s:3:"659";i:3;s:3:"890";}}s:6:"Sacute";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"556";s:1:"N";s:6:"Sacute";s:1:"B";a:4:{i:0;s:2:"42";i:1;s:3:"-14";i:2;s:3:"491";i:3;s:3:"890";}}s:6:"dcaron";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"588";s:1:"N";s:6:"dcaron";s:1:"B";a:4:{i:0;s:2:"27";i:1;s:3:"-10";i:2;s:3:"589";i:3;s:3:"695";}}s:7:"Umacron";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"722";s:1:"N";s:7:"Umacron";s:1:"B";a:4:{i:0;s:2:"14";i:1;s:3:"-14";i:2;s:3:"705";i:3;s:3:"813";}}s:5:"uring";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"500";s:1:"N";s:5:"uring";s:1:"B";a:4:{i:0;s:1:"9";i:1;s:3:"-10";i:2;s:3:"479";i:3;s:3:"711";}}s:13:"threesuperior";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"300";s:1:"N";s:13:"threesuperior";s:1:"B";a:4:{i:0;s:2:"15";i:1;s:3:"262";i:2;s:3:"291";i:3;s:3:"676";}}s:6:"Ograve";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"722";s:1:"N";s:6:"Ograve";s:1:"B";a:4:{i:0;s:2:"34";i:1;s:3:"-14";i:2;s:3:"688";i:3;s:3:"890";}}s:6:"Agrave";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"722";s:1:"N";s:6:"Agrave";s:1:"B";a:4:{i:0;s:2:"15";i:1;s:1:"0";i:2;s:3:"706";i:3;s:3:"890";}}s:6:"Abreve";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"722";s:1:"N";s:6:"Abreve";s:1:"B";a:4:{i:0;s:2:"15";i:1;s:1:"0";i:2;s:3:"706";i:3;s:3:"876";}}s:8:"multiply";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"564";s:1:"N";s:8:"multiply";s:1:"B";a:4:{i:0;s:2:"38";i:1;s:1:"8";i:2;s:3:"527";i:3;s:3:"497";}}s:6:"uacute";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"500";s:1:"N";s:6:"uacute";s:1:"B";a:4:{i:0;s:1:"9";i:1;s:3:"-10";i:2;s:3:"479";i:3;s:3:"678";}}s:6:"Tcaron";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"611";s:1:"N";s:6:"Tcaron";s:1:"B";a:4:{i:0;s:2:"17";i:1;s:1:"0";i:2;s:3:"593";i:3;s:3:"886";}}s:11:"partialdiff";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"476";s:1:"N";s:11:"partialdiff";s:1:"B";a:4:{i:0;s:2:"17";i:1;s:3:"-38";i:2;s:3:"459";i:3;s:3:"710";}}s:9:"ydieresis";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"500";s:1:"N";s:9:"ydieresis";s:1:"B";a:4:{i:0;s:2:"14";i:1;s:4:"-218";i:2;s:3:"475";i:3;s:3:"623";}}s:6:"Nacute";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"722";s:1:"N";s:6:"Nacute";s:1:"B";a:4:{i:0;s:2:"12";i:1;s:3:"-11";i:2;s:3:"707";i:3;s:3:"890";}}s:11:"icircumflex";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"278";s:1:"N";s:11:"icircumflex";s:1:"B";a:4:{i:0;s:3:"-16";i:1;s:1:"0";i:2;s:3:"295";i:3;s:3:"674";}}s:11:"Ecircumflex";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"611";s:1:"N";s:11:"Ecircumflex";s:1:"B";a:4:{i:0;s:2:"12";i:1;s:1:"0";i:2;s:3:"597";i:3;s:3:"886";}}s:9:"adieresis";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"444";s:1:"N";s:9:"adieresis";s:1:"B";a:4:{i:0;s:2:"37";i:1;s:3:"-10";i:2;s:3:"442";i:3;s:3:"623";}}s:9:"edieresis";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"444";s:1:"N";s:9:"edieresis";s:1:"B";a:4:{i:0;s:2:"25";i:1;s:3:"-10";i:2;s:3:"424";i:3;s:3:"623";}}s:6:"cacute";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"444";s:1:"N";s:6:"cacute";s:1:"B";a:4:{i:0;s:2:"25";i:1;s:3:"-10";i:2;s:3:"413";i:3;s:3:"678";}}s:6:"nacute";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"500";s:1:"N";s:6:"nacute";s:1:"B";a:4:{i:0;s:2:"16";i:1;s:1:"0";i:2;s:3:"485";i:3;s:3:"678";}}s:7:"umacron";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"500";s:1:"N";s:7:"umacron";s:1:"B";a:4:{i:0;s:1:"9";i:1;s:3:"-10";i:2;s:3:"479";i:3;s:3:"601";}}s:6:"Ncaron";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"722";s:1:"N";s:6:"Ncaron";s:1:"B";a:4:{i:0;s:2:"12";i:1;s:3:"-11";i:2;s:3:"707";i:3;s:3:"886";}}s:6:"Iacute";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"333";s:1:"N";s:6:"Iacute";s:1:"B";a:4:{i:0;s:2:"18";i:1;s:1:"0";i:2;s:3:"317";i:3;s:3:"890";}}s:9:"plusminus";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"564";s:1:"N";s:9:"plusminus";s:1:"B";a:4:{i:0;s:2:"30";i:1;s:1:"0";i:2;s:3:"534";i:3;s:3:"506";}}s:9:"brokenbar";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"200";s:1:"N";s:9:"brokenbar";s:1:"B";a:4:{i:0;s:2:"67";i:1;s:4:"-143";i:2;s:3:"133";i:3;s:3:"707";}}s:10:"registered";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"760";s:1:"N";s:10:"registered";s:1:"B";a:4:{i:0;s:2:"38";i:1;s:3:"-14";i:2;s:3:"722";i:3;s:3:"676";}}s:6:"Gbreve";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"722";s:1:"N";s:6:"Gbreve";s:1:"B";a:4:{i:0;s:2:"32";i:1;s:3:"-14";i:2;s:3:"709";i:3;s:3:"876";}}s:10:"Idotaccent";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"333";s:1:"N";s:10:"Idotaccent";s:1:"B";a:4:{i:0;s:2:"18";i:1;s:1:"0";i:2;s:3:"315";i:3;s:3:"835";}}s:9:"summation";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"600";s:1:"N";s:9:"summation";s:1:"B";a:4:{i:0;s:2:"15";i:1;s:3:"-10";i:2;s:3:"585";i:3;s:3:"706";}}s:6:"Egrave";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"611";s:1:"N";s:6:"Egrave";s:1:"B";a:4:{i:0;s:2:"12";i:1;s:1:"0";i:2;s:3:"597";i:3;s:3:"890";}}s:6:"racute";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"333";s:1:"N";s:6:"racute";s:1:"B";a:4:{i:0;s:1:"5";i:1;s:1:"0";i:2;s:3:"335";i:3;s:3:"678";}}s:7:"omacron";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"500";s:1:"N";s:7:"omacron";s:1:"B";a:4:{i:0;s:2:"29";i:1;s:3:"-10";i:2;s:3:"470";i:3;s:3:"601";}}s:6:"Zacute";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"611";s:1:"N";s:6:"Zacute";s:1:"B";a:4:{i:0;s:1:"9";i:1;s:1:"0";i:2;s:3:"597";i:3;s:3:"890";}}s:6:"Zcaron";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"611";s:1:"N";s:6:"Zcaron";s:1:"B";a:4:{i:0;s:1:"9";i:1;s:1:"0";i:2;s:3:"597";i:3;s:3:"886";}}s:12:"greaterequal";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"549";s:1:"N";s:12:"greaterequal";s:1:"B";a:4:{i:0;s:2:"26";i:1;s:1:"0";i:2;s:3:"523";i:3;s:3:"666";}}s:3:"Eth";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"722";s:1:"N";s:3:"Eth";s:1:"B";a:4:{i:0;s:2:"16";i:1;s:1:"0";i:2;s:3:"685";i:3;s:3:"662";}}s:8:"Ccedilla";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"667";s:1:"N";s:8:"Ccedilla";s:1:"B";a:4:{i:0;s:2:"28";i:1;s:4:"-215";i:2;s:3:"633";i:3;s:3:"676";}}s:12:"lcommaaccent";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"278";s:1:"N";s:12:"lcommaaccent";s:1:"B";a:4:{i:0;s:2:"19";i:1;s:4:"-218";i:2;s:3:"257";i:3;s:3:"683";}}s:6:"tcaron";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"326";s:1:"N";s:6:"tcaron";s:1:"B";a:4:{i:0;s:2:"13";i:1;s:3:"-10";i:2;s:3:"318";i:3;s:3:"722";}}s:7:"eogonek";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"444";s:1:"N";s:7:"eogonek";s:1:"B";a:4:{i:0;s:2:"25";i:1;s:4:"-165";i:2;s:3:"424";i:3;s:3:"460";}}s:7:"Uogonek";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"722";s:1:"N";s:7:"Uogonek";s:1:"B";a:4:{i:0;s:2:"14";i:1;s:4:"-165";i:2;s:3:"705";i:3;s:3:"662";}}s:6:"Aacute";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"722";s:1:"N";s:6:"Aacute";s:1:"B";a:4:{i:0;s:2:"15";i:1;s:1:"0";i:2;s:3:"706";i:3;s:3:"890";}}s:9:"Adieresis";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"722";s:1:"N";s:9:"Adieresis";s:1:"B";a:4:{i:0;s:2:"15";i:1;s:1:"0";i:2;s:3:"706";i:3;s:3:"835";}}s:6:"egrave";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"444";s:1:"N";s:6:"egrave";s:1:"B";a:4:{i:0;s:2:"25";i:1;s:3:"-10";i:2;s:3:"424";i:3;s:3:"678";}}s:6:"zacute";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"444";s:1:"N";s:6:"zacute";s:1:"B";a:4:{i:0;s:2:"27";i:1;s:1:"0";i:2;s:3:"418";i:3;s:3:"678";}}s:7:"iogonek";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"278";s:1:"N";s:7:"iogonek";s:1:"B";a:4:{i:0;s:2:"16";i:1;s:4:"-165";i:2;s:3:"265";i:3;s:3:"683";}}s:6:"Oacute";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"722";s:1:"N";s:6:"Oacute";s:1:"B";a:4:{i:0;s:2:"34";i:1;s:3:"-14";i:2;s:3:"688";i:3;s:3:"890";}}s:6:"oacute";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"500";s:1:"N";s:6:"oacute";s:1:"B";a:4:{i:0;s:2:"29";i:1;s:3:"-10";i:2;s:3:"470";i:3;s:3:"678";}}s:7:"amacron";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"444";s:1:"N";s:7:"amacron";s:1:"B";a:4:{i:0;s:2:"37";i:1;s:3:"-10";i:2;s:3:"442";i:3;s:3:"601";}}s:6:"sacute";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"389";s:1:"N";s:6:"sacute";s:1:"B";a:4:{i:0;s:2:"51";i:1;s:3:"-10";i:2;s:3:"348";i:3;s:3:"678";}}s:9:"idieresis";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"278";s:1:"N";s:9:"idieresis";s:1:"B";a:4:{i:0;s:2:"-9";i:1;s:1:"0";i:2;s:3:"288";i:3;s:3:"623";}}s:11:"Ocircumflex";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"722";s:1:"N";s:11:"Ocircumflex";s:1:"B";a:4:{i:0;s:2:"34";i:1;s:3:"-14";i:2;s:3:"688";i:3;s:3:"886";}}s:6:"Ugrave";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"722";s:1:"N";s:6:"Ugrave";s:1:"B";a:4:{i:0;s:2:"14";i:1;s:3:"-14";i:2;s:3:"705";i:3;s:3:"890";}}s:5:"Delta";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"612";s:1:"N";s:5:"Delta";s:1:"B";a:4:{i:0;s:1:"6";i:1;s:1:"0";i:2;s:3:"608";i:3;s:3:"688";}}s:5:"thorn";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"500";s:1:"N";s:5:"thorn";s:1:"B";a:4:{i:0;s:1:"5";i:1;s:4:"-217";i:2;s:3:"470";i:3;s:3:"683";}}s:11:"twosuperior";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"300";s:1:"N";s:11:"twosuperior";s:1:"B";a:4:{i:0;s:1:"1";i:1;s:3:"270";i:2;s:3:"296";i:3;s:3:"676";}}s:9:"Odieresis";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"722";s:1:"N";s:9:"Odieresis";s:1:"B";a:4:{i:0;s:2:"34";i:1;s:3:"-14";i:2;s:3:"688";i:3;s:3:"835";}}s:2:"mu";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"500";s:1:"N";s:2:"mu";s:1:"B";a:4:{i:0;s:2:"36";i:1;s:4:"-218";i:2;s:3:"512";i:3;s:3:"450";}}s:6:"igrave";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"278";s:1:"N";s:6:"igrave";s:1:"B";a:4:{i:0;s:2:"-8";i:1;s:1:"0";i:2;s:3:"253";i:3;s:3:"678";}}s:13:"ohungarumlaut";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"500";s:1:"N";s:13:"ohungarumlaut";s:1:"B";a:4:{i:0;s:2:"29";i:1;s:3:"-10";i:2;s:3:"491";i:3;s:3:"678";}}s:7:"Eogonek";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"611";s:1:"N";s:7:"Eogonek";s:1:"B";a:4:{i:0;s:2:"12";i:1;s:4:"-165";i:2;s:3:"597";i:3;s:3:"662";}}s:6:"dcroat";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"500";s:1:"N";s:6:"dcroat";s:1:"B";a:4:{i:0;s:2:"27";i:1;s:3:"-10";i:2;s:3:"500";i:3;s:3:"683";}}s:13:"threequarters";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"750";s:1:"N";s:13:"threequarters";s:1:"B";a:4:{i:0;s:2:"15";i:1;s:3:"-14";i:2;s:3:"718";i:3;s:3:"676";}}s:8:"Scedilla";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"556";s:1:"N";s:8:"Scedilla";s:1:"B";a:4:{i:0;s:2:"42";i:1;s:4:"-215";i:2;s:3:"491";i:3;s:3:"676";}}s:6:"lcaron";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"344";s:1:"N";s:6:"lcaron";s:1:"B";a:4:{i:0;s:2:"19";i:1;s:1:"0";i:2;s:3:"347";i:3;s:3:"695";}}s:12:"Kcommaaccent";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"722";s:1:"N";s:12:"Kcommaaccent";s:1:"B";a:4:{i:0;s:2:"34";i:1;s:4:"-198";i:2;s:3:"723";i:3;s:3:"662";}}s:6:"Lacute";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"611";s:1:"N";s:6:"Lacute";s:1:"B";a:4:{i:0;s:2:"12";i:1;s:1:"0";i:2;s:3:"598";i:3;s:3:"890";}}s:9:"trademark";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"980";s:1:"N";s:9:"trademark";s:1:"B";a:4:{i:0;s:2:"30";i:1;s:3:"256";i:2;s:3:"957";i:3;s:3:"662";}}s:10:"edotaccent";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"444";s:1:"N";s:10:"edotaccent";s:1:"B";a:4:{i:0;s:2:"25";i:1;s:3:"-10";i:2;s:3:"424";i:3;s:3:"623";}}s:6:"Igrave";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"333";s:1:"N";s:6:"Igrave";s:1:"B";a:4:{i:0;s:2:"18";i:1;s:1:"0";i:2;s:3:"315";i:3;s:3:"890";}}s:7:"Imacron";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"333";s:1:"N";s:7:"Imacron";s:1:"B";a:4:{i:0;s:2:"11";i:1;s:1:"0";i:2;s:3:"322";i:3;s:3:"813";}}s:6:"Lcaron";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"611";s:1:"N";s:6:"Lcaron";s:1:"B";a:4:{i:0;s:2:"12";i:1;s:1:"0";i:2;s:3:"598";i:3;s:3:"676";}}s:7:"onehalf";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"750";s:1:"N";s:7:"onehalf";s:1:"B";a:4:{i:0;s:2:"31";i:1;s:3:"-14";i:2;s:3:"746";i:3;s:3:"676";}}s:9:"lessequal";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"549";s:1:"N";s:9:"lessequal";s:1:"B";a:4:{i:0;s:2:"26";i:1;s:1:"0";i:2;s:3:"523";i:3;s:3:"666";}}s:11:"ocircumflex";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"500";s:1:"N";s:11:"ocircumflex";s:1:"B";a:4:{i:0;s:2:"29";i:1;s:3:"-10";i:2;s:3:"470";i:3;s:3:"674";}}s:6:"ntilde";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"500";s:1:"N";s:6:"ntilde";s:1:"B";a:4:{i:0;s:2:"16";i:1;s:1:"0";i:2;s:3:"485";i:3;s:3:"638";}}s:13:"Uhungarumlaut";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"722";s:1:"N";s:13:"Uhungarumlaut";s:1:"B";a:4:{i:0;s:2:"14";i:1;s:3:"-14";i:2;s:3:"705";i:3;s:3:"890";}}s:6:"Eacute";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"611";s:1:"N";s:6:"Eacute";s:1:"B";a:4:{i:0;s:2:"12";i:1;s:1:"0";i:2;s:3:"597";i:3;s:3:"890";}}s:7:"emacron";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"444";s:1:"N";s:7:"emacron";s:1:"B";a:4:{i:0;s:2:"25";i:1;s:3:"-10";i:2;s:3:"424";i:3;s:3:"601";}}s:6:"gbreve";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"500";s:1:"N";s:6:"gbreve";s:1:"B";a:4:{i:0;s:2:"28";i:1;s:4:"-218";i:2;s:3:"470";i:3;s:3:"664";}}s:10:"onequarter";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"750";s:1:"N";s:10:"onequarter";s:1:"B";a:4:{i:0;s:2:"37";i:1;s:3:"-14";i:2;s:3:"718";i:3;s:3:"676";}}s:6:"Scaron";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"556";s:1:"N";s:6:"Scaron";s:1:"B";a:4:{i:0;s:2:"42";i:1;s:3:"-14";i:2;s:3:"491";i:3;s:3:"886";}}s:12:"Scommaaccent";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"556";s:1:"N";s:12:"Scommaaccent";s:1:"B";a:4:{i:0;s:2:"42";i:1;s:4:"-218";i:2;s:3:"491";i:3;s:3:"676";}}s:13:"Ohungarumlaut";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"722";s:1:"N";s:13:"Ohungarumlaut";s:1:"B";a:4:{i:0;s:2:"34";i:1;s:3:"-14";i:2;s:3:"688";i:3;s:3:"890";}}s:6:"degree";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"400";s:1:"N";s:6:"degree";s:1:"B";a:4:{i:0;s:2:"57";i:1;s:3:"390";i:2;s:3:"343";i:3;s:3:"676";}}s:6:"ograve";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"500";s:1:"N";s:6:"ograve";s:1:"B";a:4:{i:0;s:2:"29";i:1;s:3:"-10";i:2;s:3:"470";i:3;s:3:"678";}}s:6:"Ccaron";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"667";s:1:"N";s:6:"Ccaron";s:1:"B";a:4:{i:0;s:2:"28";i:1;s:3:"-14";i:2;s:3:"633";i:3;s:3:"886";}}s:6:"ugrave";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"500";s:1:"N";s:6:"ugrave";s:1:"B";a:4:{i:0;s:1:"9";i:1;s:3:"-10";i:2;s:3:"479";i:3;s:3:"678";}}s:7:"radical";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"453";s:1:"N";s:7:"radical";s:1:"B";a:4:{i:0;s:1:"2";i:1;s:3:"-60";i:2;s:3:"452";i:3;s:3:"768";}}s:6:"Dcaron";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"722";s:1:"N";s:6:"Dcaron";s:1:"B";a:4:{i:0;s:2:"16";i:1;s:1:"0";i:2;s:3:"685";i:3;s:3:"886";}}s:12:"rcommaaccent";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"333";s:1:"N";s:12:"rcommaaccent";s:1:"B";a:4:{i:0;s:1:"5";i:1;s:4:"-218";i:2;s:3:"335";i:3;s:3:"460";}}s:6:"Ntilde";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"722";s:1:"N";s:6:"Ntilde";s:1:"B";a:4:{i:0;s:2:"12";i:1;s:3:"-11";i:2;s:3:"707";i:3;s:3:"850";}}s:6:"otilde";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"500";s:1:"N";s:6:"otilde";s:1:"B";a:4:{i:0;s:2:"29";i:1;s:3:"-10";i:2;s:3:"470";i:3;s:3:"638";}}s:12:"Rcommaaccent";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"667";s:1:"N";s:12:"Rcommaaccent";s:1:"B";a:4:{i:0;s:2:"17";i:1;s:4:"-198";i:2;s:3:"659";i:3;s:3:"662";}}s:12:"Lcommaaccent";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"611";s:1:"N";s:12:"Lcommaaccent";s:1:"B";a:4:{i:0;s:2:"12";i:1;s:4:"-218";i:2;s:3:"598";i:3;s:3:"662";}}s:6:"Atilde";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"722";s:1:"N";s:6:"Atilde";s:1:"B";a:4:{i:0;s:2:"15";i:1;s:1:"0";i:2;s:3:"706";i:3;s:3:"850";}}s:7:"Aogonek";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"722";s:1:"N";s:7:"Aogonek";s:1:"B";a:4:{i:0;s:2:"15";i:1;s:4:"-165";i:2;s:3:"738";i:3;s:3:"674";}}s:5:"Aring";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"722";s:1:"N";s:5:"Aring";s:1:"B";a:4:{i:0;s:2:"15";i:1;s:1:"0";i:2;s:3:"706";i:3;s:3:"898";}}s:6:"Otilde";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"722";s:1:"N";s:6:"Otilde";s:1:"B";a:4:{i:0;s:2:"34";i:1;s:3:"-14";i:2;s:3:"688";i:3;s:3:"850";}}s:10:"zdotaccent";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"444";s:1:"N";s:10:"zdotaccent";s:1:"B";a:4:{i:0;s:2:"27";i:1;s:1:"0";i:2;s:3:"418";i:3;s:3:"623";}}s:6:"Ecaron";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"611";s:1:"N";s:6:"Ecaron";s:1:"B";a:4:{i:0;s:2:"12";i:1;s:1:"0";i:2;s:3:"597";i:3;s:3:"886";}}s:7:"Iogonek";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"333";s:1:"N";s:7:"Iogonek";s:1:"B";a:4:{i:0;s:2:"18";i:1;s:4:"-165";i:2;s:3:"315";i:3;s:3:"662";}}s:12:"kcommaaccent";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"500";s:1:"N";s:12:"kcommaaccent";s:1:"B";a:4:{i:0;s:1:"7";i:1;s:4:"-218";i:2;s:3:"505";i:3;s:3:"683";}}s:5:"minus";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"564";s:1:"N";s:5:"minus";s:1:"B";a:4:{i:0;s:2:"30";i:1;s:3:"220";i:2;s:3:"534";i:3;s:3:"286";}}s:11:"Icircumflex";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"333";s:1:"N";s:11:"Icircumflex";s:1:"B";a:4:{i:0;s:2:"11";i:1;s:1:"0";i:2;s:3:"322";i:3;s:3:"886";}}s:6:"ncaron";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"500";s:1:"N";s:6:"ncaron";s:1:"B";a:4:{i:0;s:2:"16";i:1;s:1:"0";i:2;s:3:"485";i:3;s:3:"674";}}s:12:"tcommaaccent";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"278";s:1:"N";s:12:"tcommaaccent";s:1:"B";a:4:{i:0;s:2:"13";i:1;s:4:"-218";i:2;s:3:"279";i:3;s:3:"579";}}s:10:"logicalnot";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"564";s:1:"N";s:10:"logicalnot";s:1:"B";a:4:{i:0;s:2:"30";i:1;s:3:"108";i:2;s:3:"534";i:3;s:3:"386";}}s:9:"odieresis";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"500";s:1:"N";s:9:"odieresis";s:1:"B";a:4:{i:0;s:2:"29";i:1;s:3:"-10";i:2;s:3:"470";i:3;s:3:"623";}}s:9:"udieresis";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"500";s:1:"N";s:9:"udieresis";s:1:"B";a:4:{i:0;s:1:"9";i:1;s:3:"-10";i:2;s:3:"479";i:3;s:3:"623";}}s:8:"notequal";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"549";s:1:"N";s:8:"notequal";s:1:"B";a:4:{i:0;s:2:"12";i:1;s:3:"-31";i:2;s:3:"537";i:3;s:3:"547";}}s:12:"gcommaaccent";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"500";s:1:"N";s:12:"gcommaaccent";s:1:"B";a:4:{i:0;s:2:"28";i:1;s:4:"-218";i:2;s:3:"470";i:3;s:3:"749";}}s:3:"eth";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"500";s:1:"N";s:3:"eth";s:1:"B";a:4:{i:0;s:2:"29";i:1;s:3:"-10";i:2;s:3:"471";i:3;s:3:"686";}}s:6:"zcaron";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"444";s:1:"N";s:6:"zcaron";s:1:"B";a:4:{i:0;s:2:"27";i:1;s:1:"0";i:2;s:3:"418";i:3;s:3:"674";}}s:12:"ncommaaccent";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"500";s:1:"N";s:12:"ncommaaccent";s:1:"B";a:4:{i:0;s:2:"16";i:1;s:4:"-218";i:2;s:3:"485";i:3;s:3:"460";}}s:11:"onesuperior";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"300";s:1:"N";s:11:"onesuperior";s:1:"B";a:4:{i:0;s:2:"57";i:1;s:3:"270";i:2;s:3:"248";i:3;s:3:"676";}}s:7:"imacron";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"278";s:1:"N";s:7:"imacron";s:1:"B";a:4:{i:0;s:1:"6";i:1;s:1:"0";i:2;s:3:"271";i:3;s:3:"601";}}s:4:"Euro";a:4:{s:1:"C";s:2:"-1";s:2:"WX";s:3:"500";s:1:"N";s:4:"Euro";s:1:"B";a:4:{i:0;s:1:"0";i:1;s:1:"0";i:2;s:1:"0";i:3;s:1:"0";}}}s:3:"KPX";a:133:{s:1:"A";a:40:{s:1:"C";s:3:"-40";s:6:"Cacute";s:3:"-40";s:6:"Ccaron";s:3:"-40";s:8:"Ccedilla";s:3:"-40";s:1:"G";s:3:"-40";s:6:"Gbreve";s:3:"-40";s:12:"Gcommaaccent";s:3:"-40";s:1:"O";s:3:"-55";s:6:"Oacute";s:3:"-55";s:11:"Ocircumflex";s:3:"-55";s:9:"Odieresis";s:3:"-55";s:6:"Ograve";s:3:"-55";s:13:"Ohungarumlaut";s:3:"-55";s:7:"Omacron";s:3:"-55";s:6:"Oslash";s:3:"-55";s:6:"Otilde";s:3:"-55";s:1:"Q";s:3:"-55";s:1:"T";s:4:"-111";s:6:"Tcaron";s:4:"-111";s:12:"Tcommaaccent";s:4:"-111";s:1:"U";s:3:"-55";s:6:"Uacute";s:3:"-55";s:11:"Ucircumflex";s:3:"-55";s:9:"Udieresis";s:3:"-55";s:6:"Ugrave";s:3:"-55";s:13:"Uhungarumlaut";s:3:"-55";s:7:"Umacron";s:3:"-55";s:7:"Uogonek";s:3:"-55";s:5:"Uring";s:3:"-55";s:1:"V";s:4:"-135";s:1:"W";s:3:"-90";s:1:"Y";s:4:"-105";s:6:"Yacute";s:4:"-105";s:9:"Ydieresis";s:4:"-105";s:10:"quoteright";s:4:"-111";s:1:"v";s:3:"-74";s:1:"w";s:3:"-92";s:1:"y";s:3:"-92";s:6:"yacute";s:3:"-92";s:9:"ydieresis";s:3:"-92";}s:6:"Aacute";a:40:{s:1:"C";s:3:"-40";s:6:"Cacute";s:3:"-40";s:6:"Ccaron";s:3:"-40";s:8:"Ccedilla";s:3:"-40";s:1:"G";s:3:"-40";s:6:"Gbreve";s:3:"-40";s:12:"Gcommaaccent";s:3:"-40";s:1:"O";s:3:"-55";s:6:"Oacute";s:3:"-55";s:11:"Ocircumflex";s:3:"-55";s:9:"Odieresis";s:3:"-55";s:6:"Ograve";s:3:"-55";s:13:"Ohungarumlaut";s:3:"-55";s:7:"Omacron";s:3:"-55";s:6:"Oslash";s:3:"-55";s:6:"Otilde";s:3:"-55";s:1:"Q";s:3:"-55";s:1:"T";s:4:"-111";s:6:"Tcaron";s:4:"-111";s:12:"Tcommaaccent";s:4:"-111";s:1:"U";s:3:"-55";s:6:"Uacute";s:3:"-55";s:11:"Ucircumflex";s:3:"-55";s:9:"Udieresis";s:3:"-55";s:6:"Ugrave";s:3:"-55";s:13:"Uhungarumlaut";s:3:"-55";s:7:"Umacron";s:3:"-55";s:7:"Uogonek";s:3:"-55";s:5:"Uring";s:3:"-55";s:1:"V";s:4:"-135";s:1:"W";s:3:"-90";s:1:"Y";s:4:"-105";s:6:"Yacute";s:4:"-105";s:9:"Ydieresis";s:4:"-105";s:10:"quoteright";s:4:"-111";s:1:"v";s:3:"-74";s:1:"w";s:3:"-92";s:1:"y";s:3:"-92";s:6:"yacute";s:3:"-92";s:9:"ydieresis";s:3:"-92";}s:6:"Abreve";a:40:{s:1:"C";s:3:"-40";s:6:"Cacute";s:3:"-40";s:6:"Ccaron";s:3:"-40";s:8:"Ccedilla";s:3:"-40";s:1:"G";s:3:"-40";s:6:"Gbreve";s:3:"-40";s:12:"Gcommaaccent";s:3:"-40";s:1:"O";s:3:"-55";s:6:"Oacute";s:3:"-55";s:11:"Ocircumflex";s:3:"-55";s:9:"Odieresis";s:3:"-55";s:6:"Ograve";s:3:"-55";s:13:"Ohungarumlaut";s:3:"-55";s:7:"Omacron";s:3:"-55";s:6:"Oslash";s:3:"-55";s:6:"Otilde";s:3:"-55";s:1:"Q";s:3:"-55";s:1:"T";s:4:"-111";s:6:"Tcaron";s:4:"-111";s:12:"Tcommaaccent";s:4:"-111";s:1:"U";s:3:"-55";s:6:"Uacute";s:3:"-55";s:11:"Ucircumflex";s:3:"-55";s:9:"Udieresis";s:3:"-55";s:6:"Ugrave";s:3:"-55";s:13:"Uhungarumlaut";s:3:"-55";s:7:"Umacron";s:3:"-55";s:7:"Uogonek";s:3:"-55";s:5:"Uring";s:3:"-55";s:1:"V";s:4:"-135";s:1:"W";s:3:"-90";s:1:"Y";s:4:"-105";s:6:"Yacute";s:4:"-105";s:9:"Ydieresis";s:4:"-105";s:10:"quoteright";s:4:"-111";s:1:"v";s:3:"-74";s:1:"w";s:3:"-92";s:1:"y";s:3:"-92";s:6:"yacute";s:3:"-92";s:9:"ydieresis";s:3:"-92";}s:11:"Acircumflex";a:40:{s:1:"C";s:3:"-40";s:6:"Cacute";s:3:"-40";s:6:"Ccaron";s:3:"-40";s:8:"Ccedilla";s:3:"-40";s:1:"G";s:3:"-40";s:6:"Gbreve";s:3:"-40";s:12:"Gcommaaccent";s:3:"-40";s:1:"O";s:3:"-55";s:6:"Oacute";s:3:"-55";s:11:"Ocircumflex";s:3:"-55";s:9:"Odieresis";s:3:"-55";s:6:"Ograve";s:3:"-55";s:13:"Ohungarumlaut";s:3:"-55";s:7:"Omacron";s:3:"-55";s:6:"Oslash";s:3:"-55";s:6:"Otilde";s:3:"-55";s:1:"Q";s:3:"-55";s:1:"T";s:4:"-111";s:6:"Tcaron";s:4:"-111";s:12:"Tcommaaccent";s:4:"-111";s:1:"U";s:3:"-55";s:6:"Uacute";s:3:"-55";s:11:"Ucircumflex";s:3:"-55";s:9:"Udieresis";s:3:"-55";s:6:"Ugrave";s:3:"-55";s:13:"Uhungarumlaut";s:3:"-55";s:7:"Umacron";s:3:"-55";s:7:"Uogonek";s:3:"-55";s:5:"Uring";s:3:"-55";s:1:"V";s:4:"-135";s:1:"W";s:3:"-90";s:1:"Y";s:4:"-105";s:6:"Yacute";s:4:"-105";s:9:"Ydieresis";s:4:"-105";s:10:"quoteright";s:4:"-111";s:1:"v";s:3:"-74";s:1:"w";s:3:"-92";s:1:"y";s:3:"-92";s:6:"yacute";s:3:"-92";s:9:"ydieresis";s:3:"-92";}s:9:"Adieresis";a:40:{s:1:"C";s:3:"-40";s:6:"Cacute";s:3:"-40";s:6:"Ccaron";s:3:"-40";s:8:"Ccedilla";s:3:"-40";s:1:"G";s:3:"-40";s:6:"Gbreve";s:3:"-40";s:12:"Gcommaaccent";s:3:"-40";s:1:"O";s:3:"-55";s:6:"Oacute";s:3:"-55";s:11:"Ocircumflex";s:3:"-55";s:9:"Odieresis";s:3:"-55";s:6:"Ograve";s:3:"-55";s:13:"Ohungarumlaut";s:3:"-55";s:7:"Omacron";s:3:"-55";s:6:"Oslash";s:3:"-55";s:6:"Otilde";s:3:"-55";s:1:"Q";s:3:"-55";s:1:"T";s:4:"-111";s:6:"Tcaron";s:4:"-111";s:12:"Tcommaaccent";s:4:"-111";s:1:"U";s:3:"-55";s:6:"Uacute";s:3:"-55";s:11:"Ucircumflex";s:3:"-55";s:9:"Udieresis";s:3:"-55";s:6:"Ugrave";s:3:"-55";s:13:"Uhungarumlaut";s:3:"-55";s:7:"Umacron";s:3:"-55";s:7:"Uogonek";s:3:"-55";s:5:"Uring";s:3:"-55";s:1:"V";s:4:"-135";s:1:"W";s:3:"-90";s:1:"Y";s:4:"-105";s:6:"Yacute";s:4:"-105";s:9:"Ydieresis";s:4:"-105";s:10:"quoteright";s:4:"-111";s:1:"v";s:3:"-74";s:1:"w";s:3:"-92";s:1:"y";s:3:"-92";s:6:"yacute";s:3:"-92";s:9:"ydieresis";s:3:"-92";}s:6:"Agrave";a:40:{s:1:"C";s:3:"-40";s:6:"Cacute";s:3:"-40";s:6:"Ccaron";s:3:"-40";s:8:"Ccedilla";s:3:"-40";s:1:"G";s:3:"-40";s:6:"Gbreve";s:3:"-40";s:12:"Gcommaaccent";s:3:"-40";s:1:"O";s:3:"-55";s:6:"Oacute";s:3:"-55";s:11:"Ocircumflex";s:3:"-55";s:9:"Odieresis";s:3:"-55";s:6:"Ograve";s:3:"-55";s:13:"Ohungarumlaut";s:3:"-55";s:7:"Omacron";s:3:"-55";s:6:"Oslash";s:3:"-55";s:6:"Otilde";s:3:"-55";s:1:"Q";s:3:"-55";s:1:"T";s:4:"-111";s:6:"Tcaron";s:4:"-111";s:12:"Tcommaaccent";s:4:"-111";s:1:"U";s:3:"-55";s:6:"Uacute";s:3:"-55";s:11:"Ucircumflex";s:3:"-55";s:9:"Udieresis";s:3:"-55";s:6:"Ugrave";s:3:"-55";s:13:"Uhungarumlaut";s:3:"-55";s:7:"Umacron";s:3:"-55";s:7:"Uogonek";s:3:"-55";s:5:"Uring";s:3:"-55";s:1:"V";s:4:"-135";s:1:"W";s:3:"-90";s:1:"Y";s:4:"-105";s:6:"Yacute";s:4:"-105";s:9:"Ydieresis";s:4:"-105";s:10:"quoteright";s:4:"-111";s:1:"v";s:3:"-74";s:1:"w";s:3:"-92";s:1:"y";s:3:"-92";s:6:"yacute";s:3:"-92";s:9:"ydieresis";s:3:"-92";}s:7:"Amacron";a:40:{s:1:"C";s:3:"-40";s:6:"Cacute";s:3:"-40";s:6:"Ccaron";s:3:"-40";s:8:"Ccedilla";s:3:"-40";s:1:"G";s:3:"-40";s:6:"Gbreve";s:3:"-40";s:12:"Gcommaaccent";s:3:"-40";s:1:"O";s:3:"-55";s:6:"Oacute";s:3:"-55";s:11:"Ocircumflex";s:3:"-55";s:9:"Odieresis";s:3:"-55";s:6:"Ograve";s:3:"-55";s:13:"Ohungarumlaut";s:3:"-55";s:7:"Omacron";s:3:"-55";s:6:"Oslash";s:3:"-55";s:6:"Otilde";s:3:"-55";s:1:"Q";s:3:"-55";s:1:"T";s:4:"-111";s:6:"Tcaron";s:4:"-111";s:12:"Tcommaaccent";s:4:"-111";s:1:"U";s:3:"-55";s:6:"Uacute";s:3:"-55";s:11:"Ucircumflex";s:3:"-55";s:9:"Udieresis";s:3:"-55";s:6:"Ugrave";s:3:"-55";s:13:"Uhungarumlaut";s:3:"-55";s:7:"Umacron";s:3:"-55";s:7:"Uogonek";s:3:"-55";s:5:"Uring";s:3:"-55";s:1:"V";s:4:"-135";s:1:"W";s:3:"-90";s:1:"Y";s:4:"-105";s:6:"Yacute";s:4:"-105";s:9:"Ydieresis";s:4:"-105";s:10:"quoteright";s:4:"-111";s:1:"v";s:3:"-74";s:1:"w";s:3:"-92";s:1:"y";s:3:"-92";s:6:"yacute";s:3:"-92";s:9:"ydieresis";s:3:"-92";}s:7:"Aogonek";a:40:{s:1:"C";s:3:"-40";s:6:"Cacute";s:3:"-40";s:6:"Ccaron";s:3:"-40";s:8:"Ccedilla";s:3:"-40";s:1:"G";s:3:"-40";s:6:"Gbreve";s:3:"-40";s:12:"Gcommaaccent";s:3:"-40";s:1:"O";s:3:"-55";s:6:"Oacute";s:3:"-55";s:11:"Ocircumflex";s:3:"-55";s:9:"Odieresis";s:3:"-55";s:6:"Ograve";s:3:"-55";s:13:"Ohungarumlaut";s:3:"-55";s:7:"Omacron";s:3:"-55";s:6:"Oslash";s:3:"-55";s:6:"Otilde";s:3:"-55";s:1:"Q";s:3:"-55";s:1:"T";s:4:"-111";s:6:"Tcaron";s:4:"-111";s:12:"Tcommaaccent";s:4:"-111";s:1:"U";s:3:"-55";s:6:"Uacute";s:3:"-55";s:11:"Ucircumflex";s:3:"-55";s:9:"Udieresis";s:3:"-55";s:6:"Ugrave";s:3:"-55";s:13:"Uhungarumlaut";s:3:"-55";s:7:"Umacron";s:3:"-55";s:7:"Uogonek";s:3:"-55";s:5:"Uring";s:3:"-55";s:1:"V";s:4:"-135";s:1:"W";s:3:"-90";s:1:"Y";s:4:"-105";s:6:"Yacute";s:4:"-105";s:9:"Ydieresis";s:4:"-105";s:10:"quoteright";s:4:"-111";s:1:"v";s:3:"-74";s:1:"w";s:3:"-52";s:1:"y";s:3:"-52";s:6:"yacute";s:3:"-52";s:9:"ydieresis";s:3:"-52";}s:5:"Aring";a:40:{s:1:"C";s:3:"-40";s:6:"Cacute";s:3:"-40";s:6:"Ccaron";s:3:"-40";s:8:"Ccedilla";s:3:"-40";s:1:"G";s:3:"-40";s:6:"Gbreve";s:3:"-40";s:12:"Gcommaaccent";s:3:"-40";s:1:"O";s:3:"-55";s:6:"Oacute";s:3:"-55";s:11:"Ocircumflex";s:3:"-55";s:9:"Odieresis";s:3:"-55";s:6:"Ograve";s:3:"-55";s:13:"Ohungarumlaut";s:3:"-55";s:7:"Omacron";s:3:"-55";s:6:"Oslash";s:3:"-55";s:6:"Otilde";s:3:"-55";s:1:"Q";s:3:"-55";s:1:"T";s:4:"-111";s:6:"Tcaron";s:4:"-111";s:12:"Tcommaaccent";s:4:"-111";s:1:"U";s:3:"-55";s:6:"Uacute";s:3:"-55";s:11:"Ucircumflex";s:3:"-55";s:9:"Udieresis";s:3:"-55";s:6:"Ugrave";s:3:"-55";s:13:"Uhungarumlaut";s:3:"-55";s:7:"Umacron";s:3:"-55";s:7:"Uogonek";s:3:"-55";s:5:"Uring";s:3:"-55";s:1:"V";s:4:"-135";s:1:"W";s:3:"-90";s:1:"Y";s:4:"-105";s:6:"Yacute";s:4:"-105";s:9:"Ydieresis";s:4:"-105";s:10:"quoteright";s:4:"-111";s:1:"v";s:3:"-74";s:1:"w";s:3:"-92";s:1:"y";s:3:"-92";s:6:"yacute";s:3:"-92";s:9:"ydieresis";s:3:"-92";}s:6:"Atilde";a:40:{s:1:"C";s:3:"-40";s:6:"Cacute";s:3:"-40";s:6:"Ccaron";s:3:"-40";s:8:"Ccedilla";s:3:"-40";s:1:"G";s:3:"-40";s:6:"Gbreve";s:3:"-40";s:12:"Gcommaaccent";s:3:"-40";s:1:"O";s:3:"-55";s:6:"Oacute";s:3:"-55";s:11:"Ocircumflex";s:3:"-55";s:9:"Odieresis";s:3:"-55";s:6:"Ograve";s:3:"-55";s:13:"Ohungarumlaut";s:3:"-55";s:7:"Omacron";s:3:"-55";s:6:"Oslash";s:3:"-55";s:6:"Otilde";s:3:"-55";s:1:"Q";s:3:"-55";s:1:"T";s:4:"-111";s:6:"Tcaron";s:4:"-111";s:12:"Tcommaaccent";s:4:"-111";s:1:"U";s:3:"-55";s:6:"Uacute";s:3:"-55";s:11:"Ucircumflex";s:3:"-55";s:9:"Udieresis";s:3:"-55";s:6:"Ugrave";s:3:"-55";s:13:"Uhungarumlaut";s:3:"-55";s:7:"Umacron";s:3:"-55";s:7:"Uogonek";s:3:"-55";s:5:"Uring";s:3:"-55";s:1:"V";s:4:"-135";s:1:"W";s:3:"-90";s:1:"Y";s:4:"-105";s:6:"Yacute";s:4:"-105";s:9:"Ydieresis";s:4:"-105";s:10:"quoteright";s:4:"-111";s:1:"v";s:3:"-74";s:1:"w";s:3:"-92";s:1:"y";s:3:"-92";s:6:"yacute";s:3:"-92";s:9:"ydieresis";s:3:"-92";}s:1:"B";a:19:{s:1:"A";s:3:"-35";s:6:"Aacute";s:3:"-35";s:6:"Abreve";s:3:"-35";s:11:"Acircumflex";s:3:"-35";s:9:"Adieresis";s:3:"-35";s:6:"Agrave";s:3:"-35";s:7:"Amacron";s:3:"-35";s:7:"Aogonek";s:3:"-35";s:5:"Aring";s:3:"-35";s:6:"Atilde";s:3:"-35";s:1:"U";s:3:"-10";s:6:"Uacute";s:3:"-10";s:11:"Ucircumflex";s:3:"-10";s:9:"Udieresis";s:3:"-10";s:6:"Ugrave";s:3:"-10";s:13:"Uhungarumlaut";s:3:"-10";s:7:"Umacron";s:3:"-10";s:7:"Uogonek";s:3:"-10";s:5:"Uring";s:3:"-10";}s:1:"D";a:15:{s:1:"A";s:3:"-40";s:6:"Aacute";s:3:"-40";s:6:"Abreve";s:3:"-40";s:11:"Acircumflex";s:3:"-40";s:9:"Adieresis";s:3:"-40";s:6:"Agrave";s:3:"-40";s:7:"Amacron";s:3:"-40";s:7:"Aogonek";s:3:"-40";s:5:"Aring";s:3:"-40";s:6:"Atilde";s:3:"-40";s:1:"V";s:3:"-40";s:1:"W";s:3:"-30";s:1:"Y";s:3:"-55";s:6:"Yacute";s:3:"-55";s:9:"Ydieresis";s:3:"-55";}s:6:"Dcaron";a:15:{s:1:"A";s:3:"-40";s:6:"Aacute";s:3:"-40";s:6:"Abreve";s:3:"-40";s:11:"Acircumflex";s:3:"-40";s:9:"Adieresis";s:3:"-40";s:6:"Agrave";s:3:"-40";s:7:"Amacron";s:3:"-40";s:7:"Aogonek";s:3:"-40";s:5:"Aring";s:3:"-40";s:6:"Atilde";s:3:"-40";s:1:"V";s:3:"-40";s:1:"W";s:3:"-30";s:1:"Y";s:3:"-55";s:6:"Yacute";s:3:"-55";s:9:"Ydieresis";s:3:"-55";}s:6:"Dcroat";a:15:{s:1:"A";s:3:"-40";s:6:"Aacute";s:3:"-40";s:6:"Abreve";s:3:"-40";s:11:"Acircumflex";s:3:"-40";s:9:"Adieresis";s:3:"-40";s:6:"Agrave";s:3:"-40";s:7:"Amacron";s:3:"-40";s:7:"Aogonek";s:3:"-40";s:5:"Aring";s:3:"-40";s:6:"Atilde";s:3:"-40";s:1:"V";s:3:"-40";s:1:"W";s:3:"-30";s:1:"Y";s:3:"-55";s:6:"Yacute";s:3:"-55";s:9:"Ydieresis";s:3:"-55";}s:1:"F";a:31:{s:1:"A";s:3:"-74";s:6:"Aacute";s:3:"-74";s:6:"Abreve";s:3:"-74";s:11:"Acircumflex";s:3:"-74";s:9:"Adieresis";s:3:"-74";s:6:"Agrave";s:3:"-74";s:7:"Amacron";s:3:"-74";s:7:"Aogonek";s:3:"-74";s:5:"Aring";s:3:"-74";s:6:"Atilde";s:3:"-74";s:1:"a";s:3:"-15";s:6:"aacute";s:3:"-15";s:6:"abreve";s:3:"-15";s:11:"acircumflex";s:3:"-15";s:9:"adieresis";s:3:"-15";s:6:"agrave";s:3:"-15";s:7:"amacron";s:3:"-15";s:7:"aogonek";s:3:"-15";s:5:"aring";s:3:"-15";s:6:"atilde";s:3:"-15";s:5:"comma";s:3:"-80";s:1:"o";s:3:"-15";s:6:"oacute";s:3:"-15";s:11:"ocircumflex";s:3:"-15";s:9:"odieresis";s:3:"-15";s:6:"ograve";s:3:"-15";s:13:"ohungarumlaut";s:3:"-15";s:7:"omacron";s:3:"-15";s:6:"oslash";s:3:"-15";s:6:"otilde";s:3:"-15";s:6:"period";s:3:"-80";}s:1:"J";a:10:{s:1:"A";s:3:"-60";s:6:"Aacute";s:3:"-60";s:6:"Abreve";s:3:"-60";s:11:"Acircumflex";s:3:"-60";s:9:"Adieresis";s:3:"-60";s:6:"Agrave";s:3:"-60";s:7:"Amacron";s:3:"-60";s:7:"Aogonek";s:3:"-60";s:5:"Aring";s:3:"-60";s:6:"Atilde";s:3:"-60";}s:1:"K";a:39:{s:1:"O";s:3:"-30";s:6:"Oacute";s:3:"-30";s:11:"Ocircumflex";s:3:"-30";s:9:"Odieresis";s:3:"-30";s:6:"Ograve";s:3:"-30";s:13:"Ohungarumlaut";s:3:"-30";s:7:"Omacron";s:3:"-30";s:6:"Oslash";s:3:"-30";s:6:"Otilde";s:3:"-30";s:1:"e";s:3:"-25";s:6:"eacute";s:3:"-25";s:6:"ecaron";s:3:"-25";s:11:"ecircumflex";s:3:"-25";s:9:"edieresis";s:3:"-25";s:10:"edotaccent";s:3:"-25";s:6:"egrave";s:3:"-25";s:7:"emacron";s:3:"-25";s:7:"eogonek";s:3:"-25";s:1:"o";s:3:"-35";s:6:"oacute";s:3:"-35";s:11:"ocircumflex";s:3:"-35";s:9:"odieresis";s:3:"-35";s:6:"ograve";s:3:"-35";s:13:"ohungarumlaut";s:3:"-35";s:7:"omacron";s:3:"-35";s:6:"oslash";s:3:"-35";s:6:"otilde";s:3:"-35";s:1:"u";s:3:"-15";s:6:"uacute";s:3:"-15";s:11:"ucircumflex";s:3:"-15";s:9:"udieresis";s:3:"-15";s:6:"ugrave";s:3:"-15";s:13:"uhungarumlaut";s:3:"-15";s:7:"umacron";s:3:"-15";s:7:"uogonek";s:3:"-15";s:5:"uring";s:3:"-15";s:1:"y";s:3:"-25";s:6:"yacute";s:3:"-25";s:9:"ydieresis";s:3:"-25";}s:12:"Kcommaaccent";a:39:{s:1:"O";s:3:"-30";s:6:"Oacute";s:3:"-30";s:11:"Ocircumflex";s:3:"-30";s:9:"Odieresis";s:3:"-30";s:6:"Ograve";s:3:"-30";s:13:"Ohungarumlaut";s:3:"-30";s:7:"Omacron";s:3:"-30";s:6:"Oslash";s:3:"-30";s:6:"Otilde";s:3:"-30";s:1:"e";s:3:"-25";s:6:"eacute";s:3:"-25";s:6:"ecaron";s:3:"-25";s:11:"ecircumflex";s:3:"-25";s:9:"edieresis";s:3:"-25";s:10:"edotaccent";s:3:"-25";s:6:"egrave";s:3:"-25";s:7:"emacron";s:3:"-25";s:7:"eogonek";s:3:"-25";s:1:"o";s:3:"-35";s:6:"oacute";s:3:"-35";s:11:"ocircumflex";s:3:"-35";s:9:"odieresis";s:3:"-35";s:6:"ograve";s:3:"-35";s:13:"ohungarumlaut";s:3:"-35";s:7:"omacron";s:3:"-35";s:6:"oslash";s:3:"-35";s:6:"otilde";s:3:"-35";s:1:"u";s:3:"-15";s:6:"uacute";s:3:"-15";s:11:"ucircumflex";s:3:"-15";s:9:"udieresis";s:3:"-15";s:6:"ugrave";s:3:"-15";s:13:"uhungarumlaut";s:3:"-15";s:7:"umacron";s:3:"-15";s:7:"uogonek";s:3:"-15";s:5:"uring";s:3:"-15";s:1:"y";s:3:"-25";s:6:"yacute";s:3:"-25";s:9:"ydieresis";s:3:"-25";}s:1:"L";a:12:{s:1:"T";s:3:"-92";s:6:"Tcaron";s:3:"-92";s:12:"Tcommaaccent";s:3:"-92";s:1:"V";s:4:"-100";s:1:"W";s:3:"-74";s:1:"Y";s:4:"-100";s:6:"Yacute";s:4:"-100";s:9:"Ydieresis";s:4:"-100";s:10:"quoteright";s:3:"-92";s:1:"y";s:3:"-55";s:6:"yacute";s:3:"-55";s:9:"ydieresis";s:3:"-55";}s:6:"Lacute";a:12:{s:1:"T";s:3:"-92";s:6:"Tcaron";s:3:"-92";s:12:"Tcommaaccent";s:3:"-92";s:1:"V";s:4:"-100";s:1:"W";s:3:"-74";s:1:"Y";s:4:"-100";s:6:"Yacute";s:4:"-100";s:9:"Ydieresis";s:4:"-100";s:10:"quoteright";s:3:"-92";s:1:"y";s:3:"-55";s:6:"yacute";s:3:"-55";s:9:"ydieresis";s:3:"-55";}s:6:"Lcaron";a:4:{s:10:"quoteright";s:3:"-92";s:1:"y";s:3:"-55";s:6:"yacute";s:3:"-55";s:9:"ydieresis";s:3:"-55";}s:12:"Lcommaaccent";a:12:{s:1:"T";s:3:"-92";s:6:"Tcaron";s:3:"-92";s:12:"Tcommaaccent";s:3:"-92";s:1:"V";s:4:"-100";s:1:"W";s:3:"-74";s:1:"Y";s:4:"-100";s:6:"Yacute";s:4:"-100";s:9:"Ydieresis";s:4:"-100";s:10:"quoteright";s:3:"-92";s:1:"y";s:3:"-55";s:6:"yacute";s:3:"-55";s:9:"ydieresis";s:3:"-55";}s:6:"Lslash";a:12:{s:1:"T";s:3:"-92";s:6:"Tcaron";s:3:"-92";s:12:"Tcommaaccent";s:3:"-92";s:1:"V";s:4:"-100";s:1:"W";s:3:"-74";s:1:"Y";s:4:"-100";s:6:"Yacute";s:4:"-100";s:9:"Ydieresis";s:4:"-100";s:10:"quoteright";s:3:"-92";s:1:"y";s:3:"-55";s:6:"yacute";s:3:"-55";s:9:"ydieresis";s:3:"-55";}s:1:"N";a:10:{s:1:"A";s:3:"-35";s:6:"Aacute";s:3:"-35";s:6:"Abreve";s:3:"-35";s:11:"Acircumflex";s:3:"-35";s:9:"Adieresis";s:3:"-35";s:6:"Agrave";s:3:"-35";s:7:"Amacron";s:3:"-35";s:7:"Aogonek";s:3:"-35";s:5:"Aring";s:3:"-35";s:6:"Atilde";s:3:"-35";}s:6:"Nacute";a:10:{s:1:"A";s:3:"-35";s:6:"Aacute";s:3:"-35";s:6:"Abreve";s:3:"-35";s:11:"Acircumflex";s:3:"-35";s:9:"Adieresis";s:3:"-35";s:6:"Agrave";s:3:"-35";s:7:"Amacron";s:3:"-35";s:7:"Aogonek";s:3:"-35";s:5:"Aring";s:3:"-35";s:6:"Atilde";s:3:"-35";}s:6:"Ncaron";a:10:{s:1:"A";s:3:"-35";s:6:"Aacute";s:3:"-35";s:6:"Abreve";s:3:"-35";s:11:"Acircumflex";s:3:"-35";s:9:"Adieresis";s:3:"-35";s:6:"Agrave";s:3:"-35";s:7:"Amacron";s:3:"-35";s:7:"Aogonek";s:3:"-35";s:5:"Aring";s:3:"-35";s:6:"Atilde";s:3:"-35";}s:12:"Ncommaaccent";a:10:{s:1:"A";s:3:"-35";s:6:"Aacute";s:3:"-35";s:6:"Abreve";s:3:"-35";s:11:"Acircumflex";s:3:"-35";s:9:"Adieresis";s:3:"-35";s:6:"Agrave";s:3:"-35";s:7:"Amacron";s:3:"-35";s:7:"Aogonek";s:3:"-35";s:5:"Aring";s:3:"-35";s:6:"Atilde";s:3:"-35";}s:6:"Ntilde";a:10:{s:1:"A";s:3:"-35";s:6:"Aacute";s:3:"-35";s:6:"Abreve";s:3:"-35";s:11:"Acircumflex";s:3:"-35";s:9:"Adieresis";s:3:"-35";s:6:"Agrave";s:3:"-35";s:7:"Amacron";s:3:"-35";s:7:"Aogonek";s:3:"-35";s:5:"Aring";s:3:"-35";s:6:"Atilde";s:3:"-35";}s:1:"O";a:19:{s:1:"A";s:3:"-35";s:6:"Aacute";s:3:"-35";s:6:"Abreve";s:3:"-35";s:11:"Acircumflex";s:3:"-35";s:9:"Adieresis";s:3:"-35";s:6:"Agrave";s:3:"-35";s:7:"Amacron";s:3:"-35";s:7:"Aogonek";s:3:"-35";s:5:"Aring";s:3:"-35";s:6:"Atilde";s:3:"-35";s:1:"T";s:3:"-40";s:6:"Tcaron";s:3:"-40";s:12:"Tcommaaccent";s:3:"-40";s:1:"V";s:3:"-50";s:1:"W";s:3:"-35";s:1:"X";s:3:"-40";s:1:"Y";s:3:"-50";s:6:"Yacute";s:3:"-50";s:9:"Ydieresis";s:3:"-50";}s:6:"Oacute";a:19:{s:1:"A";s:3:"-35";s:6:"Aacute";s:3:"-35";s:6:"Abreve";s:3:"-35";s:11:"Acircumflex";s:3:"-35";s:9:"Adieresis";s:3:"-35";s:6:"Agrave";s:3:"-35";s:7:"Amacron";s:3:"-35";s:7:"Aogonek";s:3:"-35";s:5:"Aring";s:3:"-35";s:6:"Atilde";s:3:"-35";s:1:"T";s:3:"-40";s:6:"Tcaron";s:3:"-40";s:12:"Tcommaaccent";s:3:"-40";s:1:"V";s:3:"-50";s:1:"W";s:3:"-35";s:1:"X";s:3:"-40";s:1:"Y";s:3:"-50";s:6:"Yacute";s:3:"-50";s:9:"Ydieresis";s:3:"-50";}s:11:"Ocircumflex";a:19:{s:1:"A";s:3:"-35";s:6:"Aacute";s:3:"-35";s:6:"Abreve";s:3:"-35";s:11:"Acircumflex";s:3:"-35";s:9:"Adieresis";s:3:"-35";s:6:"Agrave";s:3:"-35";s:7:"Amacron";s:3:"-35";s:7:"Aogonek";s:3:"-35";s:5:"Aring";s:3:"-35";s:6:"Atilde";s:3:"-35";s:1:"T";s:3:"-40";s:6:"Tcaron";s:3:"-40";s:12:"Tcommaaccent";s:3:"-40";s:1:"V";s:3:"-50";s:1:"W";s:3:"-35";s:1:"X";s:3:"-40";s:1:"Y";s:3:"-50";s:6:"Yacute";s:3:"-50";s:9:"Ydieresis";s:3:"-50";}s:9:"Odieresis";a:19:{s:1:"A";s:3:"-35";s:6:"Aacute";s:3:"-35";s:6:"Abreve";s:3:"-35";s:11:"Acircumflex";s:3:"-35";s:9:"Adieresis";s:3:"-35";s:6:"Agrave";s:3:"-35";s:7:"Amacron";s:3:"-35";s:7:"Aogonek";s:3:"-35";s:5:"Aring";s:3:"-35";s:6:"Atilde";s:3:"-35";s:1:"T";s:3:"-40";s:6:"Tcaron";s:3:"-40";s:12:"Tcommaaccent";s:3:"-40";s:1:"V";s:3:"-50";s:1:"W";s:3:"-35";s:1:"X";s:3:"-40";s:1:"Y";s:3:"-50";s:6:"Yacute";s:3:"-50";s:9:"Ydieresis";s:3:"-50";}s:6:"Ograve";a:19:{s:1:"A";s:3:"-35";s:6:"Aacute";s:3:"-35";s:6:"Abreve";s:3:"-35";s:11:"Acircumflex";s:3:"-35";s:9:"Adieresis";s:3:"-35";s:6:"Agrave";s:3:"-35";s:7:"Amacron";s:3:"-35";s:7:"Aogonek";s:3:"-35";s:5:"Aring";s:3:"-35";s:6:"Atilde";s:3:"-35";s:1:"T";s:3:"-40";s:6:"Tcaron";s:3:"-40";s:12:"Tcommaaccent";s:3:"-40";s:1:"V";s:3:"-50";s:1:"W";s:3:"-35";s:1:"X";s:3:"-40";s:1:"Y";s:3:"-50";s:6:"Yacute";s:3:"-50";s:9:"Ydieresis";s:3:"-50";}s:13:"Ohungarumlaut";a:19:{s:1:"A";s:3:"-35";s:6:"Aacute";s:3:"-35";s:6:"Abreve";s:3:"-35";s:11:"Acircumflex";s:3:"-35";s:9:"Adieresis";s:3:"-35";s:6:"Agrave";s:3:"-35";s:7:"Amacron";s:3:"-35";s:7:"Aogonek";s:3:"-35";s:5:"Aring";s:3:"-35";s:6:"Atilde";s:3:"-35";s:1:"T";s:3:"-40";s:6:"Tcaron";s:3:"-40";s:12:"Tcommaaccent";s:3:"-40";s:1:"V";s:3:"-50";s:1:"W";s:3:"-35";s:1:"X";s:3:"-40";s:1:"Y";s:3:"-50";s:6:"Yacute";s:3:"-50";s:9:"Ydieresis";s:3:"-50";}s:7:"Omacron";a:19:{s:1:"A";s:3:"-35";s:6:"Aacute";s:3:"-35";s:6:"Abreve";s:3:"-35";s:11:"Acircumflex";s:3:"-35";s:9:"Adieresis";s:3:"-35";s:6:"Agrave";s:3:"-35";s:7:"Amacron";s:3:"-35";s:7:"Aogonek";s:3:"-35";s:5:"Aring";s:3:"-35";s:6:"Atilde";s:3:"-35";s:1:"T";s:3:"-40";s:6:"Tcaron";s:3:"-40";s:12:"Tcommaaccent";s:3:"-40";s:1:"V";s:3:"-50";s:1:"W";s:3:"-35";s:1:"X";s:3:"-40";s:1:"Y";s:3:"-50";s:6:"Yacute";s:3:"-50";s:9:"Ydieresis";s:3:"-50";}s:6:"Oslash";a:19:{s:1:"A";s:3:"-35";s:6:"Aacute";s:3:"-35";s:6:"Abreve";s:3:"-35";s:11:"Acircumflex";s:3:"-35";s:9:"Adieresis";s:3:"-35";s:6:"Agrave";s:3:"-35";s:7:"Amacron";s:3:"-35";s:7:"Aogonek";s:3:"-35";s:5:"Aring";s:3:"-35";s:6:"Atilde";s:3:"-35";s:1:"T";s:3:"-40";s:6:"Tcaron";s:3:"-40";s:12:"Tcommaaccent";s:3:"-40";s:1:"V";s:3:"-50";s:1:"W";s:3:"-35";s:1:"X";s:3:"-40";s:1:"Y";s:3:"-50";s:6:"Yacute";s:3:"-50";s:9:"Ydieresis";s:3:"-50";}s:6:"Otilde";a:19:{s:1:"A";s:3:"-35";s:6:"Aacute";s:3:"-35";s:6:"Abreve";s:3:"-35";s:11:"Acircumflex";s:3:"-35";s:9:"Adieresis";s:3:"-35";s:6:"Agrave";s:3:"-35";s:7:"Amacron";s:3:"-35";s:7:"Aogonek";s:3:"-35";s:5:"Aring";s:3:"-35";s:6:"Atilde";s:3:"-35";s:1:"T";s:3:"-40";s:6:"Tcaron";s:3:"-40";s:12:"Tcommaaccent";s:3:"-40";s:1:"V";s:3:"-50";s:1:"W";s:3:"-35";s:1:"X";s:3:"-40";s:1:"Y";s:3:"-50";s:6:"Yacute";s:3:"-50";s:9:"Ydieresis";s:3:"-50";}s:1:"P";a:22:{s:1:"A";s:3:"-92";s:6:"Aacute";s:3:"-92";s:6:"Abreve";s:3:"-92";s:11:"Acircumflex";s:3:"-92";s:9:"Adieresis";s:3:"-92";s:6:"Agrave";s:3:"-92";s:7:"Amacron";s:3:"-92";s:7:"Aogonek";s:3:"-92";s:5:"Aring";s:3:"-92";s:6:"Atilde";s:3:"-92";s:1:"a";s:3:"-15";s:6:"aacute";s:3:"-15";s:6:"abreve";s:3:"-15";s:11:"acircumflex";s:3:"-15";s:9:"adieresis";s:3:"-15";s:6:"agrave";s:3:"-15";s:7:"amacron";s:3:"-15";s:7:"aogonek";s:3:"-15";s:5:"aring";s:3:"-15";s:6:"atilde";s:3:"-15";s:5:"comma";s:4:"-111";s:6:"period";s:4:"-111";}s:1:"Q";a:9:{s:1:"U";s:3:"-10";s:6:"Uacute";s:3:"-10";s:11:"Ucircumflex";s:3:"-10";s:9:"Udieresis";s:3:"-10";s:6:"Ugrave";s:3:"-10";s:13:"Uhungarumlaut";s:3:"-10";s:7:"Umacron";s:3:"-10";s:7:"Uogonek";s:3:"-10";s:5:"Uring";s:3:"-10";}s:1:"R";a:26:{s:1:"O";s:3:"-40";s:6:"Oacute";s:3:"-40";s:11:"Ocircumflex";s:3:"-40";s:9:"Odieresis";s:3:"-40";s:6:"Ograve";s:3:"-40";s:13:"Ohungarumlaut";s:3:"-40";s:7:"Omacron";s:3:"-40";s:6:"Oslash";s:3:"-40";s:6:"Otilde";s:3:"-40";s:1:"T";s:3:"-60";s:6:"Tcaron";s:3:"-60";s:12:"Tcommaaccent";s:3:"-60";s:1:"U";s:3:"-40";s:6:"Uacute";s:3:"-40";s:11:"Ucircumflex";s:3:"-40";s:9:"Udieresis";s:3:"-40";s:6:"Ugrave";s:3:"-40";s:13:"Uhungarumlaut";s:3:"-40";s:7:"Umacron";s:3:"-40";s:7:"Uogonek";s:3:"-40";s:5:"Uring";s:3:"-40";s:1:"V";s:3:"-80";s:1:"W";s:3:"-55";s:1:"Y";s:3:"-65";s:6:"Yacute";s:3:"-65";s:9:"Ydieresis";s:3:"-65";}s:6:"Racute";a:26:{s:1:"O";s:3:"-40";s:6:"Oacute";s:3:"-40";s:11:"Ocircumflex";s:3:"-40";s:9:"Odieresis";s:3:"-40";s:6:"Ograve";s:3:"-40";s:13:"Ohungarumlaut";s:3:"-40";s:7:"Omacron";s:3:"-40";s:6:"Oslash";s:3:"-40";s:6:"Otilde";s:3:"-40";s:1:"T";s:3:"-60";s:6:"Tcaron";s:3:"-60";s:12:"Tcommaaccent";s:3:"-60";s:1:"U";s:3:"-40";s:6:"Uacute";s:3:"-40";s:11:"Ucircumflex";s:3:"-40";s:9:"Udieresis";s:3:"-40";s:6:"Ugrave";s:3:"-40";s:13:"Uhungarumlaut";s:3:"-40";s:7:"Umacron";s:3:"-40";s:7:"Uogonek";s:3:"-40";s:5:"Uring";s:3:"-40";s:1:"V";s:3:"-80";s:1:"W";s:3:"-55";s:1:"Y";s:3:"-65";s:6:"Yacute";s:3:"-65";s:9:"Ydieresis";s:3:"-65";}s:6:"Rcaron";a:26:{s:1:"O";s:3:"-40";s:6:"Oacute";s:3:"-40";s:11:"Ocircumflex";s:3:"-40";s:9:"Odieresis";s:3:"-40";s:6:"Ograve";s:3:"-40";s:13:"Ohungarumlaut";s:3:"-40";s:7:"Omacron";s:3:"-40";s:6:"Oslash";s:3:"-40";s:6:"Otilde";s:3:"-40";s:1:"T";s:3:"-60";s:6:"Tcaron";s:3:"-60";s:12:"Tcommaaccent";s:3:"-60";s:1:"U";s:3:"-40";s:6:"Uacute";s:3:"-40";s:11:"Ucircumflex";s:3:"-40";s:9:"Udieresis";s:3:"-40";s:6:"Ugrave";s:3:"-40";s:13:"Uhungarumlaut";s:3:"-40";s:7:"Umacron";s:3:"-40";s:7:"Uogonek";s:3:"-40";s:5:"Uring";s:3:"-40";s:1:"V";s:3:"-80";s:1:"W";s:3:"-55";s:1:"Y";s:3:"-65";s:6:"Yacute";s:3:"-65";s:9:"Ydieresis";s:3:"-65";}s:12:"Rcommaaccent";a:26:{s:1:"O";s:3:"-40";s:6:"Oacute";s:3:"-40";s:11:"Ocircumflex";s:3:"-40";s:9:"Odieresis";s:3:"-40";s:6:"Ograve";s:3:"-40";s:13:"Ohungarumlaut";s:3:"-40";s:7:"Omacron";s:3:"-40";s:6:"Oslash";s:3:"-40";s:6:"Otilde";s:3:"-40";s:1:"T";s:3:"-60";s:6:"Tcaron";s:3:"-60";s:12:"Tcommaaccent";s:3:"-60";s:1:"U";s:3:"-40";s:6:"Uacute";s:3:"-40";s:11:"Ucircumflex";s:3:"-40";s:9:"Udieresis";s:3:"-40";s:6:"Ugrave";s:3:"-40";s:13:"Uhungarumlaut";s:3:"-40";s:7:"Umacron";s:3:"-40";s:7:"Uogonek";s:3:"-40";s:5:"Uring";s:3:"-40";s:1:"V";s:3:"-80";s:1:"W";s:3:"-55";s:1:"Y";s:3:"-65";s:6:"Yacute";s:3:"-65";s:9:"Ydieresis";s:3:"-65";}s:1:"T";a:72:{s:1:"A";s:3:"-93";s:6:"Aacute";s:3:"-93";s:6:"Abreve";s:3:"-93";s:11:"Acircumflex";s:3:"-93";s:9:"Adieresis";s:3:"-93";s:6:"Agrave";s:3:"-93";s:7:"Amacron";s:3:"-93";s:7:"Aogonek";s:3:"-93";s:5:"Aring";s:3:"-93";s:6:"Atilde";s:3:"-93";s:1:"O";s:3:"-18";s:6:"Oacute";s:3:"-18";s:11:"Ocircumflex";s:3:"-18";s:9:"Odieresis";s:3:"-18";s:6:"Ograve";s:3:"-18";s:13:"Ohungarumlaut";s:3:"-18";s:7:"Omacron";s:3:"-18";s:6:"Oslash";s:3:"-18";s:6:"Otilde";s:3:"-18";s:1:"a";s:3:"-80";s:6:"aacute";s:3:"-80";s:6:"abreve";s:3:"-80";s:11:"acircumflex";s:3:"-80";s:9:"adieresis";s:3:"-40";s:6:"agrave";s:3:"-40";s:7:"amacron";s:3:"-40";s:7:"aogonek";s:3:"-80";s:5:"aring";s:3:"-80";s:6:"atilde";s:3:"-40";s:5:"colon";s:3:"-50";s:5:"comma";s:3:"-74";s:1:"e";s:3:"-70";s:6:"eacute";s:3:"-70";s:6:"ecaron";s:3:"-70";s:11:"ecircumflex";s:3:"-70";s:9:"edieresis";s:3:"-30";s:10:"edotaccent";s:3:"-70";s:6:"egrave";s:3:"-70";s:7:"emacron";s:3:"-30";s:7:"eogonek";s:3:"-70";s:6:"hyphen";s:3:"-92";s:1:"i";s:3:"-35";s:6:"iacute";s:3:"-35";s:7:"iogonek";s:3:"-35";s:1:"o";s:3:"-80";s:6:"oacute";s:3:"-80";s:11:"ocircumflex";s:3:"-80";s:9:"odieresis";s:3:"-80";s:6:"ograve";s:3:"-80";s:13:"ohungarumlaut";s:3:"-80";s:7:"omacron";s:3:"-80";s:6:"oslash";s:3:"-80";s:6:"otilde";s:3:"-80";s:6:"period";s:3:"-74";s:1:"r";s:3:"-35";s:6:"racute";s:3:"-35";s:6:"rcaron";s:3:"-35";s:12:"rcommaaccent";s:3:"-35";s:9:"semicolon";s:3:"-55";s:1:"u";s:3:"-45";s:6:"uacute";s:3:"-45";s:11:"ucircumflex";s:3:"-45";s:9:"udieresis";s:3:"-45";s:6:"ugrave";s:3:"-45";s:13:"uhungarumlaut";s:3:"-45";s:7:"umacron";s:3:"-45";s:7:"uogonek";s:3:"-45";s:5:"uring";s:3:"-45";s:1:"w";s:3:"-80";s:1:"y";s:3:"-80";s:6:"yacute";s:3:"-80";s:9:"ydieresis";s:3:"-80";}s:6:"Tcaron";a:72:{s:1:"A";s:3:"-93";s:6:"Aacute";s:3:"-93";s:6:"Abreve";s:3:"-93";s:11:"Acircumflex";s:3:"-93";s:9:"Adieresis";s:3:"-93";s:6:"Agrave";s:3:"-93";s:7:"Amacron";s:3:"-93";s:7:"Aogonek";s:3:"-93";s:5:"Aring";s:3:"-93";s:6:"Atilde";s:3:"-93";s:1:"O";s:3:"-18";s:6:"Oacute";s:3:"-18";s:11:"Ocircumflex";s:3:"-18";s:9:"Odieresis";s:3:"-18";s:6:"Ograve";s:3:"-18";s:13:"Ohungarumlaut";s:3:"-18";s:7:"Omacron";s:3:"-18";s:6:"Oslash";s:3:"-18";s:6:"Otilde";s:3:"-18";s:1:"a";s:3:"-80";s:6:"aacute";s:3:"-80";s:6:"abreve";s:3:"-80";s:11:"acircumflex";s:3:"-80";s:9:"adieresis";s:3:"-40";s:6:"agrave";s:3:"-40";s:7:"amacron";s:3:"-40";s:7:"aogonek";s:3:"-80";s:5:"aring";s:3:"-80";s:6:"atilde";s:3:"-40";s:5:"colon";s:3:"-50";s:5:"comma";s:3:"-74";s:1:"e";s:3:"-70";s:6:"eacute";s:3:"-70";s:6:"ecaron";s:3:"-70";s:11:"ecircumflex";s:3:"-30";s:9:"edieresis";s:3:"-30";s:10:"edotaccent";s:3:"-70";s:6:"egrave";s:3:"-70";s:7:"emacron";s:3:"-30";s:7:"eogonek";s:3:"-70";s:6:"hyphen";s:3:"-92";s:1:"i";s:3:"-35";s:6:"iacute";s:3:"-35";s:7:"iogonek";s:3:"-35";s:1:"o";s:3:"-80";s:6:"oacute";s:3:"-80";s:11:"ocircumflex";s:3:"-80";s:9:"odieresis";s:3:"-80";s:6:"ograve";s:3:"-80";s:13:"ohungarumlaut";s:3:"-80";s:7:"omacron";s:3:"-80";s:6:"oslash";s:3:"-80";s:6:"otilde";s:3:"-80";s:6:"period";s:3:"-74";s:1:"r";s:3:"-35";s:6:"racute";s:3:"-35";s:6:"rcaron";s:3:"-35";s:12:"rcommaaccent";s:3:"-35";s:9:"semicolon";s:3:"-55";s:1:"u";s:3:"-45";s:6:"uacute";s:3:"-45";s:11:"ucircumflex";s:3:"-45";s:9:"udieresis";s:3:"-45";s:6:"ugrave";s:3:"-45";s:13:"uhungarumlaut";s:3:"-45";s:7:"umacron";s:3:"-45";s:7:"uogonek";s:3:"-45";s:5:"uring";s:3:"-45";s:1:"w";s:3:"-80";s:1:"y";s:3:"-80";s:6:"yacute";s:3:"-80";s:9:"ydieresis";s:3:"-80";}s:12:"Tcommaaccent";a:72:{s:1:"A";s:3:"-93";s:6:"Aacute";s:3:"-93";s:6:"Abreve";s:3:"-93";s:11:"Acircumflex";s:3:"-93";s:9:"Adieresis";s:3:"-93";s:6:"Agrave";s:3:"-93";s:7:"Amacron";s:3:"-93";s:7:"Aogonek";s:3:"-93";s:5:"Aring";s:3:"-93";s:6:"Atilde";s:3:"-93";s:1:"O";s:3:"-18";s:6:"Oacute";s:3:"-18";s:11:"Ocircumflex";s:3:"-18";s:9:"Odieresis";s:3:"-18";s:6:"Ograve";s:3:"-18";s:13:"Ohungarumlaut";s:3:"-18";s:7:"Omacron";s:3:"-18";s:6:"Oslash";s:3:"-18";s:6:"Otilde";s:3:"-18";s:1:"a";s:3:"-80";s:6:"aacute";s:3:"-80";s:6:"abreve";s:3:"-80";s:11:"acircumflex";s:3:"-80";s:9:"adieresis";s:3:"-40";s:6:"agrave";s:3:"-40";s:7:"amacron";s:3:"-40";s:7:"aogonek";s:3:"-80";s:5:"aring";s:3:"-80";s:6:"atilde";s:3:"-40";s:5:"colon";s:3:"-50";s:5:"comma";s:3:"-74";s:1:"e";s:3:"-70";s:6:"eacute";s:3:"-70";s:6:"ecaron";s:3:"-70";s:11:"ecircumflex";s:3:"-30";s:9:"edieresis";s:3:"-30";s:10:"edotaccent";s:3:"-70";s:6:"egrave";s:3:"-30";s:7:"emacron";s:3:"-70";s:7:"eogonek";s:3:"-70";s:6:"hyphen";s:3:"-92";s:1:"i";s:3:"-35";s:6:"iacute";s:3:"-35";s:7:"iogonek";s:3:"-35";s:1:"o";s:3:"-80";s:6:"oacute";s:3:"-80";s:11:"ocircumflex";s:3:"-80";s:9:"odieresis";s:3:"-80";s:6:"ograve";s:3:"-80";s:13:"ohungarumlaut";s:3:"-80";s:7:"omacron";s:3:"-80";s:6:"oslash";s:3:"-80";s:6:"otilde";s:3:"-80";s:6:"period";s:3:"-74";s:1:"r";s:3:"-35";s:6:"racute";s:3:"-35";s:6:"rcaron";s:3:"-35";s:12:"rcommaaccent";s:3:"-35";s:9:"semicolon";s:3:"-55";s:1:"u";s:3:"-45";s:6:"uacute";s:3:"-45";s:11:"ucircumflex";s:3:"-45";s:9:"udieresis";s:3:"-45";s:6:"ugrave";s:3:"-45";s:13:"uhungarumlaut";s:3:"-45";s:7:"umacron";s:3:"-45";s:7:"uogonek";s:3:"-45";s:5:"uring";s:3:"-45";s:1:"w";s:3:"-80";s:1:"y";s:3:"-80";s:6:"yacute";s:3:"-80";s:9:"ydieresis";s:3:"-80";}s:1:"U";a:10:{s:1:"A";s:3:"-40";s:6:"Aacute";s:3:"-40";s:6:"Abreve";s:3:"-40";s:11:"Acircumflex";s:3:"-40";s:9:"Adieresis";s:3:"-40";s:6:"Agrave";s:3:"-40";s:7:"Amacron";s:3:"-40";s:7:"Aogonek";s:3:"-40";s:5:"Aring";s:3:"-40";s:6:"Atilde";s:3:"-40";}s:6:"Uacute";a:10:{s:1:"A";s:3:"-40";s:6:"Aacute";s:3:"-40";s:6:"Abreve";s:3:"-40";s:11:"Acircumflex";s:3:"-40";s:9:"Adieresis";s:3:"-40";s:6:"Agrave";s:3:"-40";s:7:"Amacron";s:3:"-40";s:7:"Aogonek";s:3:"-40";s:5:"Aring";s:3:"-40";s:6:"Atilde";s:3:"-40";}s:11:"Ucircumflex";a:10:{s:1:"A";s:3:"-40";s:6:"Aacute";s:3:"-40";s:6:"Abreve";s:3:"-40";s:11:"Acircumflex";s:3:"-40";s:9:"Adieresis";s:3:"-40";s:6:"Agrave";s:3:"-40";s:7:"Amacron";s:3:"-40";s:7:"Aogonek";s:3:"-40";s:5:"Aring";s:3:"-40";s:6:"Atilde";s:3:"-40";}s:9:"Udieresis";a:10:{s:1:"A";s:3:"-40";s:6:"Aacute";s:3:"-40";s:6:"Abreve";s:3:"-40";s:11:"Acircumflex";s:3:"-40";s:9:"Adieresis";s:3:"-40";s:6:"Agrave";s:3:"-40";s:7:"Amacron";s:3:"-40";s:7:"Aogonek";s:3:"-40";s:5:"Aring";s:3:"-40";s:6:"Atilde";s:3:"-40";}s:6:"Ugrave";a:10:{s:1:"A";s:3:"-40";s:6:"Aacute";s:3:"-40";s:6:"Abreve";s:3:"-40";s:11:"Acircumflex";s:3:"-40";s:9:"Adieresis";s:3:"-40";s:6:"Agrave";s:3:"-40";s:7:"Amacron";s:3:"-40";s:7:"Aogonek";s:3:"-40";s:5:"Aring";s:3:"-40";s:6:"Atilde";s:3:"-40";}s:13:"Uhungarumlaut";a:10:{s:1:"A";s:3:"-40";s:6:"Aacute";s:3:"-40";s:6:"Abreve";s:3:"-40";s:11:"Acircumflex";s:3:"-40";s:9:"Adieresis";s:3:"-40";s:6:"Agrave";s:3:"-40";s:7:"Amacron";s:3:"-40";s:7:"Aogonek";s:3:"-40";s:5:"Aring";s:3:"-40";s:6:"Atilde";s:3:"-40";}s:7:"Umacron";a:10:{s:1:"A";s:3:"-40";s:6:"Aacute";s:3:"-40";s:6:"Abreve";s:3:"-40";s:11:"Acircumflex";s:3:"-40";s:9:"Adieresis";s:3:"-40";s:6:"Agrave";s:3:"-40";s:7:"Amacron";s:3:"-40";s:7:"Aogonek";s:3:"-40";s:5:"Aring";s:3:"-40";s:6:"Atilde";s:3:"-40";}s:7:"Uogonek";a:10:{s:1:"A";s:3:"-40";s:6:"Aacute";s:3:"-40";s:6:"Abreve";s:3:"-40";s:11:"Acircumflex";s:3:"-40";s:9:"Adieresis";s:3:"-40";s:6:"Agrave";s:3:"-40";s:7:"Amacron";s:3:"-40";s:7:"Aogonek";s:3:"-40";s:5:"Aring";s:3:"-40";s:6:"Atilde";s:3:"-40";}s:5:"Uring";a:10:{s:1:"A";s:3:"-40";s:6:"Aacute";s:3:"-40";s:6:"Abreve";s:3:"-40";s:11:"Acircumflex";s:3:"-40";s:9:"Adieresis";s:3:"-40";s:6:"Agrave";s:3:"-40";s:7:"Amacron";s:3:"-40";s:7:"Aogonek";s:3:"-40";s:5:"Aring";s:3:"-40";s:6:"Atilde";s:3:"-40";}s:1:"V";a:71:{s:1:"A";s:4:"-135";s:6:"Aacute";s:4:"-135";s:6:"Abreve";s:4:"-135";s:11:"Acircumflex";s:4:"-135";s:9:"Adieresis";s:4:"-135";s:6:"Agrave";s:4:"-135";s:7:"Amacron";s:4:"-135";s:7:"Aogonek";s:4:"-135";s:5:"Aring";s:4:"-135";s:6:"Atilde";s:4:"-135";s:1:"G";s:3:"-15";s:6:"Gbreve";s:3:"-15";s:12:"Gcommaaccent";s:3:"-15";s:1:"O";s:3:"-40";s:6:"Oacute";s:3:"-40";s:11:"Ocircumflex";s:3:"-40";s:9:"Odieresis";s:3:"-40";s:6:"Ograve";s:3:"-40";s:13:"Ohungarumlaut";s:3:"-40";s:7:"Omacron";s:3:"-40";s:6:"Oslash";s:3:"-40";s:6:"Otilde";s:3:"-40";s:1:"a";s:4:"-111";s:6:"aacute";s:4:"-111";s:6:"abreve";s:4:"-111";s:11:"acircumflex";s:3:"-71";s:9:"adieresis";s:3:"-71";s:6:"agrave";s:3:"-71";s:7:"amacron";s:3:"-71";s:7:"aogonek";s:4:"-111";s:5:"aring";s:4:"-111";s:6:"atilde";s:3:"-71";s:5:"colon";s:3:"-74";s:5:"comma";s:4:"-129";s:1:"e";s:4:"-111";s:6:"eacute";s:4:"-111";s:6:"ecaron";s:3:"-71";s:11:"ecircumflex";s:3:"-71";s:9:"edieresis";s:3:"-71";s:10:"edotaccent";s:4:"-111";s:6:"egrave";s:3:"-71";s:7:"emacron";s:3:"-71";s:7:"eogonek";s:4:"-111";s:6:"hyphen";s:4:"-100";s:1:"i";s:3:"-60";s:6:"iacute";s:3:"-60";s:11:"icircumflex";s:3:"-20";s:9:"idieresis";s:3:"-20";s:6:"igrave";s:3:"-20";s:7:"imacron";s:3:"-20";s:7:"iogonek";s:3:"-60";s:1:"o";s:4:"-129";s:6:"oacute";s:4:"-129";s:11:"ocircumflex";s:4:"-129";s:9:"odieresis";s:3:"-89";s:6:"ograve";s:3:"-89";s:13:"ohungarumlaut";s:4:"-129";s:7:"omacron";s:3:"-89";s:6:"oslash";s:4:"-129";s:6:"otilde";s:3:"-89";s:6:"period";s:4:"-129";s:9:"semicolon";s:3:"-74";s:1:"u";s:3:"-75";s:6:"uacute";s:3:"-75";s:11:"ucircumflex";s:3:"-75";s:9:"udieresis";s:3:"-75";s:6:"ugrave";s:3:"-75";s:13:"uhungarumlaut";s:3:"-75";s:7:"umacron";s:3:"-75";s:7:"uogonek";s:3:"-75";s:5:"uring";s:3:"-75";}s:1:"W";a:67:{s:1:"A";s:4:"-120";s:6:"Aacute";s:4:"-120";s:6:"Abreve";s:4:"-120";s:11:"Acircumflex";s:4:"-120";s:9:"Adieresis";s:4:"-120";s:6:"Agrave";s:4:"-120";s:7:"Amacron";s:4:"-120";s:7:"Aogonek";s:4:"-120";s:5:"Aring";s:4:"-120";s:6:"Atilde";s:4:"-120";s:1:"O";s:3:"-10";s:6:"Oacute";s:3:"-10";s:11:"Ocircumflex";s:3:"-10";s:9:"Odieresis";s:3:"-10";s:6:"Ograve";s:3:"-10";s:13:"Ohungarumlaut";s:3:"-10";s:7:"Omacron";s:3:"-10";s:6:"Oslash";s:3:"-10";s:6:"Otilde";s:3:"-10";s:1:"a";s:3:"-80";s:6:"aacute";s:3:"-80";s:6:"abreve";s:3:"-80";s:11:"acircumflex";s:3:"-80";s:9:"adieresis";s:3:"-80";s:6:"agrave";s:3:"-80";s:7:"amacron";s:3:"-80";s:7:"aogonek";s:3:"-80";s:5:"aring";s:3:"-80";s:6:"atilde";s:3:"-80";s:5:"colon";s:3:"-37";s:5:"comma";s:3:"-92";s:1:"e";s:3:"-80";s:6:"eacute";s:3:"-80";s:6:"ecaron";s:3:"-80";s:11:"ecircumflex";s:3:"-80";s:9:"edieresis";s:3:"-40";s:10:"edotaccent";s:3:"-80";s:6:"egrave";s:3:"-40";s:7:"emacron";s:3:"-40";s:7:"eogonek";s:3:"-80";s:6:"hyphen";s:3:"-65";s:1:"i";s:3:"-40";s:6:"iacute";s:3:"-40";s:7:"iogonek";s:3:"-40";s:1:"o";s:3:"-80";s:6:"oacute";s:3:"-80";s:11:"ocircumflex";s:3:"-80";s:9:"odieresis";s:3:"-80";s:6:"ograve";s:3:"-80";s:13:"ohungarumlaut";s:3:"-80";s:7:"omacron";s:3:"-80";s:6:"oslash";s:3:"-80";s:6:"otilde";s:3:"-80";s:6:"period";s:3:"-92";s:9:"semicolon";s:3:"-37";s:1:"u";s:3:"-50";s:6:"uacute";s:3:"-50";s:11:"ucircumflex";s:3:"-50";s:9:"udieresis";s:3:"-50";s:6:"ugrave";s:3:"-50";s:13:"uhungarumlaut";s:3:"-50";s:7:"umacron";s:3:"-50";s:7:"uogonek";s:3:"-50";s:5:"uring";s:3:"-50";s:1:"y";s:3:"-73";s:6:"yacute";s:3:"-73";s:9:"ydieresis";s:3:"-73";}s:1:"Y";a:64:{s:1:"A";s:4:"-120";s:6:"Aacute";s:4:"-120";s:6:"Abreve";s:4:"-120";s:11:"Acircumflex";s:4:"-120";s:9:"Adieresis";s:4:"-120";s:6:"Agrave";s:4:"-120";s:7:"Amacron";s:4:"-120";s:7:"Aogonek";s:4:"-120";s:5:"Aring";s:4:"-120";s:6:"Atilde";s:4:"-120";s:1:"O";s:3:"-30";s:6:"Oacute";s:3:"-30";s:11:"Ocircumflex";s:3:"-30";s:9:"Odieresis";s:3:"-30";s:6:"Ograve";s:3:"-30";s:13:"Ohungarumlaut";s:3:"-30";s:7:"Omacron";s:3:"-30";s:6:"Oslash";s:3:"-30";s:6:"Otilde";s:3:"-30";s:1:"a";s:4:"-100";s:6:"aacute";s:4:"-100";s:6:"abreve";s:4:"-100";s:11:"acircumflex";s:4:"-100";s:9:"adieresis";s:3:"-60";s:6:"agrave";s:3:"-60";s:7:"amacron";s:3:"-60";s:7:"aogonek";s:4:"-100";s:5:"aring";s:4:"-100";s:6:"atilde";s:3:"-60";s:5:"colon";s:3:"-92";s:5:"comma";s:4:"-129";s:1:"e";s:4:"-100";s:6:"eacute";s:4:"-100";s:6:"ecaron";s:4:"-100";s:11:"ecircumflex";s:4:"-100";s:9:"edieresis";s:3:"-60";s:10:"edotaccent";s:4:"-100";s:6:"egrave";s:3:"-60";s:7:"emacron";s:3:"-60";s:7:"eogonek";s:4:"-100";s:6:"hyphen";s:4:"-111";s:1:"i";s:3:"-55";s:6:"iacute";s:3:"-55";s:7:"iogonek";s:3:"-55";s:1:"o";s:4:"-110";s:6:"oacute";s:4:"-110";s:11:"ocircumflex";s:4:"-110";s:9:"odieresis";s:3:"-70";s:6:"ograve";s:3:"-70";s:13:"ohungarumlaut";s:4:"-110";s:7:"omacron";s:3:"-70";s:6:"oslash";s:4:"-110";s:6:"otilde";s:3:"-70";s:6:"period";s:4:"-129";s:9:"semicolon";s:3:"-92";s:1:"u";s:4:"-111";s:6:"uacute";s:4:"-111";s:11:"ucircumflex";s:4:"-111";s:9:"udieresis";s:3:"-71";s:6:"ugrave";s:3:"-71";s:13:"uhungarumlaut";s:4:"-111";s:7:"umacron";s:3:"-71";s:7:"uogonek";s:4:"-111";s:5:"uring";s:4:"-111";}s:6:"Yacute";a:64:{s:1:"A";s:4:"-120";s:6:"Aacute";s:4:"-120";s:6:"Abreve";s:4:"-120";s:11:"Acircumflex";s:4:"-120";s:9:"Adieresis";s:4:"-120";s:6:"Agrave";s:4:"-120";s:7:"Amacron";s:4:"-120";s:7:"Aogonek";s:4:"-120";s:5:"Aring";s:4:"-120";s:6:"Atilde";s:4:"-120";s:1:"O";s:3:"-30";s:6:"Oacute";s:3:"-30";s:11:"Ocircumflex";s:3:"-30";s:9:"Odieresis";s:3:"-30";s:6:"Ograve";s:3:"-30";s:13:"Ohungarumlaut";s:3:"-30";s:7:"Omacron";s:3:"-30";s:6:"Oslash";s:3:"-30";s:6:"Otilde";s:3:"-30";s:1:"a";s:4:"-100";s:6:"aacute";s:4:"-100";s:6:"abreve";s:4:"-100";s:11:"acircumflex";s:4:"-100";s:9:"adieresis";s:3:"-60";s:6:"agrave";s:3:"-60";s:7:"amacron";s:3:"-60";s:7:"aogonek";s:4:"-100";s:5:"aring";s:4:"-100";s:6:"atilde";s:3:"-60";s:5:"colon";s:3:"-92";s:5:"comma";s:4:"-129";s:1:"e";s:4:"-100";s:6:"eacute";s:4:"-100";s:6:"ecaron";s:4:"-100";s:11:"ecircumflex";s:4:"-100";s:9:"edieresis";s:3:"-60";s:10:"edotaccent";s:4:"-100";s:6:"egrave";s:3:"-60";s:7:"emacron";s:3:"-60";s:7:"eogonek";s:4:"-100";s:6:"hyphen";s:4:"-111";s:1:"i";s:3:"-55";s:6:"iacute";s:3:"-55";s:7:"iogonek";s:3:"-55";s:1:"o";s:4:"-110";s:6:"oacute";s:4:"-110";s:11:"ocircumflex";s:4:"-110";s:9:"odieresis";s:3:"-70";s:6:"ograve";s:3:"-70";s:13:"ohungarumlaut";s:4:"-110";s:7:"omacron";s:3:"-70";s:6:"oslash";s:4:"-110";s:6:"otilde";s:3:"-70";s:6:"period";s:4:"-129";s:9:"semicolon";s:3:"-92";s:1:"u";s:4:"-111";s:6:"uacute";s:4:"-111";s:11:"ucircumflex";s:4:"-111";s:9:"udieresis";s:3:"-71";s:6:"ugrave";s:3:"-71";s:13:"uhungarumlaut";s:4:"-111";s:7:"umacron";s:3:"-71";s:7:"uogonek";s:4:"-111";s:5:"uring";s:4:"-111";}s:9:"Ydieresis";a:64:{s:1:"A";s:4:"-120";s:6:"Aacute";s:4:"-120";s:6:"Abreve";s:4:"-120";s:11:"Acircumflex";s:4:"-120";s:9:"Adieresis";s:4:"-120";s:6:"Agrave";s:4:"-120";s:7:"Amacron";s:4:"-120";s:7:"Aogonek";s:4:"-120";s:5:"Aring";s:4:"-120";s:6:"Atilde";s:4:"-120";s:1:"O";s:3:"-30";s:6:"Oacute";s:3:"-30";s:11:"Ocircumflex";s:3:"-30";s:9:"Odieresis";s:3:"-30";s:6:"Ograve";s:3:"-30";s:13:"Ohungarumlaut";s:3:"-30";s:7:"Omacron";s:3:"-30";s:6:"Oslash";s:3:"-30";s:6:"Otilde";s:3:"-30";s:1:"a";s:4:"-100";s:6:"aacute";s:4:"-100";s:6:"abreve";s:4:"-100";s:11:"acircumflex";s:4:"-100";s:9:"adieresis";s:3:"-60";s:6:"agrave";s:3:"-60";s:7:"amacron";s:3:"-60";s:7:"aogonek";s:4:"-100";s:5:"aring";s:4:"-100";s:6:"atilde";s:4:"-100";s:5:"colon";s:3:"-92";s:5:"comma";s:4:"-129";s:1:"e";s:4:"-100";s:6:"eacute";s:4:"-100";s:6:"ecaron";s:4:"-100";s:11:"ecircumflex";s:4:"-100";s:9:"edieresis";s:3:"-60";s:10:"edotaccent";s:4:"-100";s:6:"egrave";s:3:"-60";s:7:"emacron";s:3:"-60";s:7:"eogonek";s:4:"-100";s:6:"hyphen";s:4:"-111";s:1:"i";s:3:"-55";s:6:"iacute";s:3:"-55";s:7:"iogonek";s:3:"-55";s:1:"o";s:4:"-110";s:6:"oacute";s:4:"-110";s:11:"ocircumflex";s:4:"-110";s:9:"odieresis";s:3:"-70";s:6:"ograve";s:3:"-70";s:13:"ohungarumlaut";s:4:"-110";s:7:"omacron";s:3:"-70";s:6:"oslash";s:4:"-110";s:6:"otilde";s:3:"-70";s:6:"period";s:4:"-129";s:9:"semicolon";s:3:"-92";s:1:"u";s:4:"-111";s:6:"uacute";s:4:"-111";s:11:"ucircumflex";s:4:"-111";s:9:"udieresis";s:3:"-71";s:6:"ugrave";s:3:"-71";s:13:"uhungarumlaut";s:4:"-111";s:7:"umacron";s:3:"-71";s:7:"uogonek";s:4:"-111";s:5:"uring";s:4:"-111";}s:1:"a";a:2:{s:1:"v";s:3:"-20";s:1:"w";s:3:"-15";}s:6:"aacute";a:2:{s:1:"v";s:3:"-20";s:1:"w";s:3:"-15";}s:6:"abreve";a:2:{s:1:"v";s:3:"-20";s:1:"w";s:3:"-15";}s:11:"acircumflex";a:2:{s:1:"v";s:3:"-20";s:1:"w";s:3:"-15";}s:9:"adieresis";a:2:{s:1:"v";s:3:"-20";s:1:"w";s:3:"-15";}s:6:"agrave";a:2:{s:1:"v";s:3:"-20";s:1:"w";s:3:"-15";}s:7:"amacron";a:2:{s:1:"v";s:3:"-20";s:1:"w";s:3:"-15";}s:7:"aogonek";a:2:{s:1:"v";s:3:"-20";s:1:"w";s:3:"-15";}s:5:"aring";a:2:{s:1:"v";s:3:"-20";s:1:"w";s:3:"-15";}s:6:"atilde";a:2:{s:1:"v";s:3:"-20";s:1:"w";s:3:"-15";}s:1:"b";a:11:{s:6:"period";s:3:"-40";s:1:"u";s:3:"-20";s:6:"uacute";s:3:"-20";s:11:"ucircumflex";s:3:"-20";s:9:"udieresis";s:3:"-20";s:6:"ugrave";s:3:"-20";s:13:"uhungarumlaut";s:3:"-20";s:7:"umacron";s:3:"-20";s:7:"uogonek";s:3:"-20";s:5:"uring";s:3:"-20";s:1:"v";s:3:"-15";}s:1:"c";a:3:{s:1:"y";s:3:"-15";s:6:"yacute";s:3:"-15";s:9:"ydieresis";s:3:"-15";}s:6:"cacute";a:3:{s:1:"y";s:3:"-15";s:6:"yacute";s:3:"-15";s:9:"ydieresis";s:3:"-15";}s:6:"ccaron";a:3:{s:1:"y";s:3:"-15";s:6:"yacute";s:3:"-15";s:9:"ydieresis";s:3:"-15";}s:8:"ccedilla";a:3:{s:1:"y";s:3:"-15";s:6:"yacute";s:3:"-15";s:9:"ydieresis";s:3:"-15";}s:5:"comma";a:2:{s:13:"quotedblright";s:3:"-70";s:10:"quoteright";s:3:"-70";}s:1:"e";a:9:{s:1:"g";s:3:"-15";s:6:"gbreve";s:3:"-15";s:12:"gcommaaccent";s:3:"-15";s:1:"v";s:3:"-25";s:1:"w";s:3:"-25";s:1:"x";s:3:"-15";s:1:"y";s:3:"-15";s:6:"yacute";s:3:"-15";s:9:"ydieresis";s:3:"-15";}s:6:"eacute";a:9:{s:1:"g";s:3:"-15";s:6:"gbreve";s:3:"-15";s:12:"gcommaaccent";s:3:"-15";s:1:"v";s:3:"-25";s:1:"w";s:3:"-25";s:1:"x";s:3:"-15";s:1:"y";s:3:"-15";s:6:"yacute";s:3:"-15";s:9:"ydieresis";s:3:"-15";}s:6:"ecaron";a:9:{s:1:"g";s:3:"-15";s:6:"gbreve";s:3:"-15";s:12:"gcommaaccent";s:3:"-15";s:1:"v";s:3:"-25";s:1:"w";s:3:"-25";s:1:"x";s:3:"-15";s:1:"y";s:3:"-15";s:6:"yacute";s:3:"-15";s:9:"ydieresis";s:3:"-15";}s:11:"ecircumflex";a:9:{s:1:"g";s:3:"-15";s:6:"gbreve";s:3:"-15";s:12:"gcommaaccent";s:3:"-15";s:1:"v";s:3:"-25";s:1:"w";s:3:"-25";s:1:"x";s:3:"-15";s:1:"y";s:3:"-15";s:6:"yacute";s:3:"-15";s:9:"ydieresis";s:3:"-15";}s:9:"edieresis";a:9:{s:1:"g";s:3:"-15";s:6:"gbreve";s:3:"-15";s:12:"gcommaaccent";s:3:"-15";s:1:"v";s:3:"-25";s:1:"w";s:3:"-25";s:1:"x";s:3:"-15";s:1:"y";s:3:"-15";s:6:"yacute";s:3:"-15";s:9:"ydieresis";s:3:"-15";}s:10:"edotaccent";a:9:{s:1:"g";s:3:"-15";s:6:"gbreve";s:3:"-15";s:12:"gcommaaccent";s:3:"-15";s:1:"v";s:3:"-25";s:1:"w";s:3:"-25";s:1:"x";s:3:"-15";s:1:"y";s:3:"-15";s:6:"yacute";s:3:"-15";s:9:"ydieresis";s:3:"-15";}s:6:"egrave";a:9:{s:1:"g";s:3:"-15";s:6:"gbreve";s:3:"-15";s:12:"gcommaaccent";s:3:"-15";s:1:"v";s:3:"-25";s:1:"w";s:3:"-25";s:1:"x";s:3:"-15";s:1:"y";s:3:"-15";s:6:"yacute";s:3:"-15";s:9:"ydieresis";s:3:"-15";}s:7:"emacron";a:9:{s:1:"g";s:3:"-15";s:6:"gbreve";s:3:"-15";s:12:"gcommaaccent";s:3:"-15";s:1:"v";s:3:"-25";s:1:"w";s:3:"-25";s:1:"x";s:3:"-15";s:1:"y";s:3:"-15";s:6:"yacute";s:3:"-15";s:9:"ydieresis";s:3:"-15";}s:7:"eogonek";a:9:{s:1:"g";s:3:"-15";s:6:"gbreve";s:3:"-15";s:12:"gcommaaccent";s:3:"-15";s:1:"v";s:3:"-25";s:1:"w";s:3:"-25";s:1:"x";s:3:"-15";s:1:"y";s:3:"-15";s:6:"yacute";s:3:"-15";s:9:"ydieresis";s:3:"-15";}s:1:"f";a:15:{s:1:"a";s:3:"-10";s:6:"aacute";s:3:"-10";s:6:"abreve";s:3:"-10";s:11:"acircumflex";s:3:"-10";s:9:"adieresis";s:3:"-10";s:6:"agrave";s:3:"-10";s:7:"amacron";s:3:"-10";s:7:"aogonek";s:3:"-10";s:5:"aring";s:3:"-10";s:6:"atilde";s:3:"-10";s:8:"dotlessi";s:3:"-50";s:1:"f";s:3:"-25";s:1:"i";s:3:"-20";s:6:"iacute";s:3:"-20";s:10:"quoteright";s:2:"55";}s:1:"g";a:10:{s:1:"a";s:2:"-5";s:6:"aacute";s:2:"-5";s:6:"abreve";s:2:"-5";s:11:"acircumflex";s:2:"-5";s:9:"adieresis";s:2:"-5";s:6:"agrave";s:2:"-5";s:7:"amacron";s:2:"-5";s:7:"aogonek";s:2:"-5";s:5:"aring";s:2:"-5";s:6:"atilde";s:2:"-5";}s:6:"gbreve";a:10:{s:1:"a";s:2:"-5";s:6:"aacute";s:2:"-5";s:6:"abreve";s:2:"-5";s:11:"acircumflex";s:2:"-5";s:9:"adieresis";s:2:"-5";s:6:"agrave";s:2:"-5";s:7:"amacron";s:2:"-5";s:7:"aogonek";s:2:"-5";s:5:"aring";s:2:"-5";s:6:"atilde";s:2:"-5";}s:12:"gcommaaccent";a:10:{s:1:"a";s:2:"-5";s:6:"aacute";s:2:"-5";s:6:"abreve";s:2:"-5";s:11:"acircumflex";s:2:"-5";s:9:"adieresis";s:2:"-5";s:6:"agrave";s:2:"-5";s:7:"amacron";s:2:"-5";s:7:"aogonek";s:2:"-5";s:5:"aring";s:2:"-5";s:6:"atilde";s:2:"-5";}s:1:"h";a:3:{s:1:"y";s:2:"-5";s:6:"yacute";s:2:"-5";s:9:"ydieresis";s:2:"-5";}s:1:"i";a:1:{s:1:"v";s:3:"-25";}s:6:"iacute";a:1:{s:1:"v";s:3:"-25";}s:11:"icircumflex";a:1:{s:1:"v";s:3:"-25";}s:9:"idieresis";a:1:{s:1:"v";s:3:"-25";}s:6:"igrave";a:1:{s:1:"v";s:3:"-25";}s:7:"imacron";a:1:{s:1:"v";s:3:"-25";}s:7:"iogonek";a:1:{s:1:"v";s:3:"-25";}s:1:"k";a:21:{s:1:"e";s:3:"-10";s:6:"eacute";s:3:"-10";s:6:"ecaron";s:3:"-10";s:11:"ecircumflex";s:3:"-10";s:9:"edieresis";s:3:"-10";s:10:"edotaccent";s:3:"-10";s:6:"egrave";s:3:"-10";s:7:"emacron";s:3:"-10";s:7:"eogonek";s:3:"-10";s:1:"o";s:3:"-10";s:6:"oacute";s:3:"-10";s:11:"ocircumflex";s:3:"-10";s:9:"odieresis";s:3:"-10";s:6:"ograve";s:3:"-10";s:13:"ohungarumlaut";s:3:"-10";s:7:"omacron";s:3:"-10";s:6:"oslash";s:3:"-10";s:6:"otilde";s:3:"-10";s:1:"y";s:3:"-15";s:6:"yacute";s:3:"-15";s:9:"ydieresis";s:3:"-15";}s:12:"kcommaaccent";a:21:{s:1:"e";s:3:"-10";s:6:"eacute";s:3:"-10";s:6:"ecaron";s:3:"-10";s:11:"ecircumflex";s:3:"-10";s:9:"edieresis";s:3:"-10";s:10:"edotaccent";s:3:"-10";s:6:"egrave";s:3:"-10";s:7:"emacron";s:3:"-10";s:7:"eogonek";s:3:"-10";s:1:"o";s:3:"-10";s:6:"oacute";s:3:"-10";s:11:"ocircumflex";s:3:"-10";s:9:"odieresis";s:3:"-10";s:6:"ograve";s:3:"-10";s:13:"ohungarumlaut";s:3:"-10";s:7:"omacron";s:3:"-10";s:6:"oslash";s:3:"-10";s:6:"otilde";s:3:"-10";s:1:"y";s:3:"-15";s:6:"yacute";s:3:"-15";s:9:"ydieresis";s:3:"-15";}s:1:"l";a:1:{s:1:"w";s:3:"-10";}s:6:"lacute";a:1:{s:1:"w";s:3:"-10";}s:12:"lcommaaccent";a:1:{s:1:"w";s:3:"-10";}s:6:"lslash";a:1:{s:1:"w";s:3:"-10";}s:1:"n";a:4:{s:1:"v";s:3:"-40";s:1:"y";s:3:"-15";s:6:"yacute";s:3:"-15";s:9:"ydieresis";s:3:"-15";}s:6:"nacute";a:4:{s:1:"v";s:3:"-40";s:1:"y";s:3:"-15";s:6:"yacute";s:3:"-15";s:9:"ydieresis";s:3:"-15";}s:6:"ncaron";a:4:{s:1:"v";s:3:"-40";s:1:"y";s:3:"-15";s:6:"yacute";s:3:"-15";s:9:"ydieresis";s:3:"-15";}s:12:"ncommaaccent";a:4:{s:1:"v";s:3:"-40";s:1:"y";s:3:"-15";s:6:"yacute";s:3:"-15";s:9:"ydieresis";s:3:"-15";}s:6:"ntilde";a:4:{s:1:"v";s:3:"-40";s:1:"y";s:3:"-15";s:6:"yacute";s:3:"-15";s:9:"ydieresis";s:3:"-15";}s:1:"o";a:5:{s:1:"v";s:3:"-15";s:1:"w";s:3:"-25";s:1:"y";s:3:"-10";s:6:"yacute";s:3:"-10";s:9:"ydieresis";s:3:"-10";}s:6:"oacute";a:5:{s:1:"v";s:3:"-15";s:1:"w";s:3:"-25";s:1:"y";s:3:"-10";s:6:"yacute";s:3:"-10";s:9:"ydieresis";s:3:"-10";}s:11:"ocircumflex";a:5:{s:1:"v";s:3:"-15";s:1:"w";s:3:"-25";s:1:"y";s:3:"-10";s:6:"yacute";s:3:"-10";s:9:"ydieresis";s:3:"-10";}s:9:"odieresis";a:5:{s:1:"v";s:3:"-15";s:1:"w";s:3:"-25";s:1:"y";s:3:"-10";s:6:"yacute";s:3:"-10";s:9:"ydieresis";s:3:"-10";}s:6:"ograve";a:5:{s:1:"v";s:3:"-15";s:1:"w";s:3:"-25";s:1:"y";s:3:"-10";s:6:"yacute";s:3:"-10";s:9:"ydieresis";s:3:"-10";}s:13:"ohungarumlaut";a:5:{s:1:"v";s:3:"-15";s:1:"w";s:3:"-25";s:1:"y";s:3:"-10";s:6:"yacute";s:3:"-10";s:9:"ydieresis";s:3:"-10";}s:7:"omacron";a:5:{s:1:"v";s:3:"-15";s:1:"w";s:3:"-25";s:1:"y";s:3:"-10";s:6:"yacute";s:3:"-10";s:9:"ydieresis";s:3:"-10";}s:6:"oslash";a:5:{s:1:"v";s:3:"-15";s:1:"w";s:3:"-25";s:1:"y";s:3:"-10";s:6:"yacute";s:3:"-10";s:9:"ydieresis";s:3:"-10";}s:6:"otilde";a:5:{s:1:"v";s:3:"-15";s:1:"w";s:3:"-25";s:1:"y";s:3:"-10";s:6:"yacute";s:3:"-10";s:9:"ydieresis";s:3:"-10";}s:1:"p";a:3:{s:1:"y";s:3:"-10";s:6:"yacute";s:3:"-10";s:9:"ydieresis";s:3:"-10";}s:6:"period";a:2:{s:13:"quotedblright";s:3:"-70";s:10:"quoteright";s:3:"-70";}s:12:"quotedblleft";a:10:{s:1:"A";s:3:"-80";s:6:"Aacute";s:3:"-80";s:6:"Abreve";s:3:"-80";s:11:"Acircumflex";s:3:"-80";s:9:"Adieresis";s:3:"-80";s:6:"Agrave";s:3:"-80";s:7:"Amacron";s:3:"-80";s:7:"Aogonek";s:3:"-80";s:5:"Aring";s:3:"-80";s:6:"Atilde";s:3:"-80";}s:9:"quoteleft";a:11:{s:1:"A";s:3:"-80";s:6:"Aacute";s:3:"-80";s:6:"Abreve";s:3:"-80";s:11:"Acircumflex";s:3:"-80";s:9:"Adieresis";s:3:"-80";s:6:"Agrave";s:3:"-80";s:7:"Amacron";s:3:"-80";s:7:"Aogonek";s:3:"-80";s:5:"Aring";s:3:"-80";s:6:"Atilde";s:3:"-80";s:9:"quoteleft";s:3:"-74";}s:10:"quoteright";a:20:{s:1:"d";s:3:"-50";s:6:"dcroat";s:3:"-50";s:1:"l";s:3:"-10";s:6:"lacute";s:3:"-10";s:12:"lcommaaccent";s:3:"-10";s:6:"lslash";s:3:"-10";s:10:"quoteright";s:3:"-74";s:1:"r";s:3:"-50";s:6:"racute";s:3:"-50";s:6:"rcaron";s:3:"-50";s:12:"rcommaaccent";s:3:"-50";s:1:"s";s:3:"-55";s:6:"sacute";s:3:"-55";s:6:"scaron";s:3:"-55";s:8:"scedilla";s:3:"-55";s:12:"scommaaccent";s:3:"-55";s:5:"space";s:3:"-74";s:1:"t";s:3:"-18";s:12:"tcommaaccent";s:3:"-18";s:1:"v";s:3:"-50";}s:1:"r";a:6:{s:5:"comma";s:3:"-40";s:1:"g";s:3:"-18";s:6:"gbreve";s:3:"-18";s:12:"gcommaaccent";s:3:"-18";s:6:"hyphen";s:3:"-20";s:6:"period";s:3:"-55";}s:6:"racute";a:6:{s:5:"comma";s:3:"-40";s:1:"g";s:3:"-18";s:6:"gbreve";s:3:"-18";s:12:"gcommaaccent";s:3:"-18";s:6:"hyphen";s:3:"-20";s:6:"period";s:3:"-55";}s:6:"rcaron";a:6:{s:5:"comma";s:3:"-40";s:1:"g";s:3:"-18";s:6:"gbreve";s:3:"-18";s:12:"gcommaaccent";s:3:"-18";s:6:"hyphen";s:3:"-20";s:6:"period";s:3:"-55";}s:12:"rcommaaccent";a:6:{s:5:"comma";s:3:"-40";s:1:"g";s:3:"-18";s:6:"gbreve";s:3:"-18";s:12:"gcommaaccent";s:3:"-18";s:6:"hyphen";s:3:"-20";s:6:"period";s:3:"-55";}s:5:"space";a:18:{s:1:"A";s:3:"-55";s:6:"Aacute";s:3:"-55";s:6:"Abreve";s:3:"-55";s:11:"Acircumflex";s:3:"-55";s:9:"Adieresis";s:3:"-55";s:6:"Agrave";s:3:"-55";s:7:"Amacron";s:3:"-55";s:7:"Aogonek";s:3:"-55";s:5:"Aring";s:3:"-55";s:6:"Atilde";s:3:"-55";s:1:"T";s:3:"-18";s:6:"Tcaron";s:3:"-18";s:12:"Tcommaaccent";s:3:"-18";s:1:"V";s:3:"-50";s:1:"W";s:3:"-30";s:1:"Y";s:3:"-90";s:6:"Yacute";s:3:"-90";s:9:"Ydieresis";s:3:"-90";}s:1:"v";a:30:{s:1:"a";s:3:"-25";s:6:"aacute";s:3:"-25";s:6:"abreve";s:3:"-25";s:11:"acircumflex";s:3:"-25";s:9:"adieresis";s:3:"-25";s:6:"agrave";s:3:"-25";s:7:"amacron";s:3:"-25";s:7:"aogonek";s:3:"-25";s:5:"aring";s:3:"-25";s:6:"atilde";s:3:"-25";s:5:"comma";s:3:"-65";s:1:"e";s:3:"-15";s:6:"eacute";s:3:"-15";s:6:"ecaron";s:3:"-15";s:11:"ecircumflex";s:3:"-15";s:9:"edieresis";s:3:"-15";s:10:"edotaccent";s:3:"-15";s:6:"egrave";s:3:"-15";s:7:"emacron";s:3:"-15";s:7:"eogonek";s:3:"-15";s:1:"o";s:3:"-20";s:6:"oacute";s:3:"-20";s:11:"ocircumflex";s:3:"-20";s:9:"odieresis";s:3:"-20";s:6:"ograve";s:3:"-20";s:13:"ohungarumlaut";s:3:"-20";s:7:"omacron";s:3:"-20";s:6:"oslash";s:3:"-20";s:6:"otilde";s:3:"-20";s:6:"period";s:3:"-65";}s:1:"w";a:21:{s:1:"a";s:3:"-10";s:6:"aacute";s:3:"-10";s:6:"abreve";s:3:"-10";s:11:"acircumflex";s:3:"-10";s:9:"adieresis";s:3:"-10";s:6:"agrave";s:3:"-10";s:7:"amacron";s:3:"-10";s:7:"aogonek";s:3:"-10";s:5:"aring";s:3:"-10";s:6:"atilde";s:3:"-10";s:5:"comma";s:3:"-65";s:1:"o";s:3:"-10";s:6:"oacute";s:3:"-10";s:11:"ocircumflex";s:3:"-10";s:9:"odieresis";s:3:"-10";s:6:"ograve";s:3:"-10";s:13:"ohungarumlaut";s:3:"-10";s:7:"omacron";s:3:"-10";s:6:"oslash";s:3:"-10";s:6:"otilde";s:3:"-10";s:6:"period";s:3:"-65";}s:1:"x";a:9:{s:1:"e";s:3:"-15";s:6:"eacute";s:3:"-15";s:6:"ecaron";s:3:"-15";s:11:"ecircumflex";s:3:"-15";s:9:"edieresis";s:3:"-15";s:10:"edotaccent";s:3:"-15";s:6:"egrave";s:3:"-15";s:7:"emacron";s:3:"-15";s:7:"eogonek";s:3:"-15";}s:1:"y";a:2:{s:5:"comma";s:3:"-65";s:6:"period";s:3:"-65";}s:6:"yacute";a:2:{s:5:"comma";s:3:"-65";s:6:"period";s:3:"-65";}s:9:"ydieresis";a:2:{s:5:"comma";s:3:"-65";s:6:"period";s:3:"-65";}}s:9:"_version_";i:1;} \ No newline at end of file
diff --git a/admin/survey/Fonts/tahoma.ttf b/admin/survey/Fonts/tahoma.ttf
deleted file mode 100644
index 59b14a2..0000000
--- a/admin/survey/Fonts/tahoma.ttf
+++ /dev/null
Binary files differ
diff --git a/admin/survey/Help.php b/admin/survey/Help.php
deleted file mode 100644
index 06a5369..0000000
--- a/admin/survey/Help.php
+++ /dev/null
@@ -1,125 +0,0 @@
-<?php
-
-class Help {
-
- /**
- * @desc izpise polje s helpom.
- * ce smo v editmodu se bo prikazal textbox za urejanje helpa
- * ce smo v navadnem modu se bo prikazal help box
- */
- public static function display ($what) {
- global $admin_type, $lang;
-
- $sql = sisplet_query("SELECT help FROM srv_help WHERE what='$what' AND lang='$lang[id]'");
- $row = mysqli_fetch_array($sql);
- $help = $row['help'];
-
- if ($admin_type == 0 && isset($_COOKIE['edithelp'])) {
- return ' <a href="/" id="help_'.$what.'" lang="'.$lang['id'].'" class="edithelp" onclick="return false;" title_txt="">(?)</a>';
- }
- elseif ($help != '') {
- return ' <a href="/" id="help_'.$what.'" lang="'.$lang['id'].'" class="help" onclick="return false;" title_txt="">(?)</a>';
- }
-
- }
-
- /**
- * @desc vkljuci izkljuci editiranje helpa
- */
- static function edit_toggle () {
- global $lang;
-
- if (isset($_COOKIE['edithelp']))
- echo '<label><a href="ajax.php?t=help&a=edit_off" title="'.$lang['help'].'">'.$lang['srv_insend'].'</a></label>';
- else
- echo '<label><a href="ajax.php?t=help&a=edit_on" title="'.$lang['help'].'">'.$lang['start'].'</a></label>';
- }
-
- function ajax () {
-
- if ($_GET['a'] == 'edit_on') {
- $this->ajax_edit_on();
- } elseif ($_GET['a'] == 'edit_off') {
- $this->ajax_edit_off();
- } elseif ($_GET['a'] == 'display_edit_help') {
- $this->ajax_display_edit_help();
- } elseif ($_GET['a'] == 'save_help') {
- $this->ajax_save_help();
- } elseif ($_GET['a'] == 'display_help') {
- $this->ajax_display_help();
- }
- }
-
- /**
- * @desc vklopi editiranje helpa (nastavi cooike)
- */
- function ajax_edit_on () {
-// $anketa = $_GET['anketa'];
-
- setcookie('edithelp', 'on');
-// header("Location: index.php?anketa=$anketa");
- header("Location: index.php?a=nastavitve");
- }
-
- /**
- * @desc izklopi editiranje helpa (nastavi cooike)
- */
- function ajax_edit_off () {
-// $anketa = $_GET['anketa'];
-
- setcookie('edithelp', '', time()-3600);
-// header("Location: index.php?anketa=$anketa");
- header("Location: index.php?a=nastavitve");
- }
-
- /**
- * @desc prikaze formo za urejanje helpa
- */
- function ajax_display_edit_help () {
- global $lang;
-
- $l = (int)$_GET['lang'];
-
- $what = substr($_REQUEST['what'], 5);
-
- $sql = sisplet_query("SELECT help FROM srv_help WHERE what = '$what' AND lang='$l'");
- $row = mysqli_fetch_array($sql);
-
- echo '<textarea id="edithelp_'.$what.'" name="help" style="width:100%; height: 100px">'.$row['help'].'</textarea>';
- echo '<input type="button" value="'.$lang['save'].'" onclick="save_help(\''.$what.'\', \''.$l.'\')" />';
-
- }
-
- /**
- * @desc shrani help
- */
- function ajax_save_help () {
- $l = (int)$_GET['lang'];
-
- $what = $_REQUEST['what'];
- $help = $_POST['help'];
-
- sisplet_query("REPLACE INTO srv_help (what, lang, help) VALUES ('$what', '$l', '$help')");
-
- }
-
- function ajax_display_help() {
-
- $l = (int)$_GET['lang'];
-
- /*
- $regex = "#(help_)(.*)#e";
- $what = preg_replace($regex,"('$2')",$_GET['what']);
- print_r($output);
- */
-
- $what = substr($_REQUEST['what'], 5);
-
- $sql = sisplet_query("SELECT help FROM srv_help WHERE what = '$what' AND lang='$l'");
- $row = mysqli_fetch_array($sql);
-
- echo '<div class="qtip-help">'.nl2br($row['help']).'</div>';
- }
-}
-
-?> \ No newline at end of file
diff --git a/admin/survey/R/TempData/.gitignore b/admin/survey/R/TempData/.gitignore
deleted file mode 100644
index a3a0c8b..0000000
--- a/admin/survey/R/TempData/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-*
-!.gitignore \ No newline at end of file
diff --git a/admin/survey/classes/class.SurveyLanguageTechnology.php b/admin/survey/classes/class.SurveyLanguageTechnology.php
deleted file mode 100644
index 40fcea1..0000000
--- a/admin/survey/classes/class.SurveyLanguageTechnology.php
+++ /dev/null
@@ -1,809 +0,0 @@
-<?php
-ini_set('max_execution_time', 300); //300 seconds = 5 minutes
-#set_time_limit(20);
-ini_set('default_socket_timeout', 60); // 20 Seconds
-/**
- * @author Gorazd Veselič
- * @date July 2014
- *
- */
-class SurveyLanguageTechnology {
-
- protected $anketa;
-
- protected $response;
-
- protected $settings = array(
- 'lt_language' => 'Slo',
- 'lt_min_FWD' => 5000,
- 'lt_min_nNoM' => 9999,
- 'lt_min_vNoM'=> 9999,
- 'lt_special_setting'=> false
- );
-
- public function __construct($anketa) {
- global $lang;
- $this->anketa = $anketa;
- $this->lang = $lang;
- }
-
- public function setup( array $settings) {
- if (isset($settings['lt_language']) && is_string($settings['lt_language']) && in_array(strtolower($settings['lt_language']), array('slo','eng'))) {
- $this->settings['lt_language'] = $settings['lt_language'];
- }
- if (isset($settings['lt_min_FWD']) && is_numeric($settings['lt_min_FWD'])) {
- $this->settings['lt_min_FWD'] = $settings['lt_min_FWD'];
- }
- if (isset($settings['lt_min_nNoM']) && is_numeric($settings['lt_min_nNoM'])) {
- $this->settings['lt_min_nNoM'] = $settings['lt_min_nNoM'];
- }
- if (isset($settings['lt_min_vNoM']) && is_numeric($settings['lt_min_vNoM'])) {
- $this->settings['lt_min_vNoM'] = $settings['lt_min_vNoM'];
- }
- return $this->settings;
- }
-
- public function display() {
- global $lang;
- global $site_url;
- global $admin_type;
- global $global_user_id;
-
- echo '<div id="placeholder" class="language_technology">';
- $this->dispalySettings();
-#$r = $this->sendJson('Na kolokvij se prijavljam kot');
-#print_r("<pre>");
-#print_r($r);
-#print_r("</pre>");
-
- echo '<div id="language_technology" class="branching_new expanded language_technology">';
- ?><script> locked = true; </script><?php
- $lang_admin = $lang;
-
- $lang = $lang_admin;
-
- $b = new Branching($this->anketa);
- $b->displayKomentarji(false);
- $b->branching = '';
- $b->locked = true;
-
- $sql = sisplet_query("SELECT s.id FROM srv_spremenljivka s, srv_grupa g WHERE s.gru_id=g.id AND g.ank_id='$this->anketa' ORDER BY g.vrstni_red ASC, s.vrstni_red ASC");
- if (mysqli_num_rows($sql) > 0 ) {
- while ($row = mysqli_fetch_array($sql)) {
-
- echo '<li id="branching_'.$row['id'].'" class="spr">';
- ob_start();
- $b->vprasanje($row['id']);
- $out1 = ob_get_contents();
- ob_end_clean();
- echo $out1;
- echo '</li>';
- echo '<div class="clr"></div>';
-# print_r("<pre>");
-# print_r(strip_tags($out1));
-# print_r("<pre>");
- }
- }
- echo '</div>'; // branching
- echo '<div id="vprasanje_float_editing" class="language_technology">';
- $this->displayVprasanjeFloatEditing();
- echo '</div>';
- echo '</div>'; // placeholder
-
- }
- private function dispalySettings() {
-
-
- #echo '<div id="language_technology_setting">';
- echo '<div id="topSettingsHolder" class="language_technology" style="margin-bottom:10px;">';
- echo '<div id="additional_navigation">';
- echo '<table class="setting">';
- echo '<tr><td class="lt_table_lang">' . $this->lang['srv_language_technology_language'] . '</td>';
- echo '<td>' . $this->lang['srv_language_technology_flag_words'] . '</td>';
- echo '<td rowspan="2"><button type="button" onclick="cleanLanguageTechnology();">' . $this->lang['srv_language_technology_clean'] . '</button></td>';
- //echo '<td rowspan="2"><label id="lt_export_excel" onclick="lt_export_excel();"><span class="sprites xls_grey_16"></span>' . $this->lang['srv_language_technology_export_excel'] . '</label></td>';
- echo '</tr>';
- echo '<tr>';
- echo '<td><select id="lt_language">';
- if ($this->lang['id'] === '1') {
- echo '<option value="Slo" selected>Slovenščina</option>';
- echo '<option value="Eng">English</option>';
- } else {
- echo '<option value="Slo">Slovenščina</option>';
- echo '<option value="Eng" selected>English</option>';
- }
- echo '</select></td>';
-
- echo '<td>' . $this->lang['srv_language_technology_wf_under'] . '&nbsp;&nbsp;<input id="lt_min_FWD" type="text" value="5000"></td></tr>';
- #echo '<tr>';
- #echo '<td>' . $this->lang['srv_language_technology_verbs_above'] . 'Verbs </td><td><input id="lt_min_vNoM" type="text" value="3"></td></tr>';
- echo '</table>';
- echo '</div>';
- echo '</div>';
- }
-
- private function getMustangResult($sentence, $wordType = null) {
- if (empty($sentence) || trim($sentence) == "") {
- return null;
- }
-
- //$d = '[{"language": "Eng","sentence": "Sometimes it work.","min_FWD": 5000,"min_nNoM": 1,"min_vNoM": 3}]';
- //$d = '[{"language": "Slo","sentence": "S šumniki so težave","min_FWD": 5000,"min_nNoM": 1,"min_vNoM": 3}]';
- #$d = '[{"language": "Slo","sentence": "Na kolokvij se prijavljam kot","min_FWD": 5000,"min_nNoM": 1,"min_vNoM": 3}]';
- //$d = '[{"language": "Slo","sentence": "'.$sentence.'","min_FWD": 5000,"min_nNoM": 0,"min_vNoM": 3}]';
- $d .= '"language": "' . $this->settings['lt_language'] . '",';
- if ($wordType == null) {
- $mustangWordSentance = 'sentence?json=';
- $d .= '"sentence": "' . $sentence . '",';
- } else {
- $mustangWordSentance = 'word?json=';
- $d .= '"word": "' . $sentence . '",';
- $d .= '"Tag": "' . $wordType . '",';
- }
- $d .= '"min_FWD": ' . $this->settings['lt_min_FWD'] . ',';
- $d .= '"min_nNoM": ' . $this->settings['lt_min_nNoM'] . ',';
- $d .= '"min_vNoM": ' . $this->settings['lt_min_vNoM'] ;
- $d = trim($d);
-
- if (false) {
- $d = '[{' . urlencode($d) . '}]';
- } else {
- $d = urlencode('[{' . $d . '}]');
- }
-
- $result = $this->makeMustangRequest($this->settings['lt_language'], $mustangWordSentance . $d);
-
- return $result;
- }
-
- private function makeMustangRequest($language, $mustangString) {
-
- if ( strtolower($language) == 'eng') {
- $url = 'http://mustang.ijs.si:5111/synonym/' . $mustangString ;
- } else {
- $url = 'http://mustang.ijs.si:5112/synonym/' . $mustangString;
- }
-
- try {
- //$r = $this->get_url_contents($url); // na testu ne deluje curl ???
-
- $ctx = stream_context_create(array('http'=>
- array(
- 'timeout' => 20, // 20 Seconds
- )
- ));
-
- $r = (file_get_contents($url, false, $ctx));
- $r = str_replace(array("\r\n", "\n"), "", $r);
- $r = json_decode($r, true);
-
-
- if (is_array($r) && count($r) == 1) {
- $r = $r[0];
- }
-
- } catch(Exception $e) {
-
- $r = null;
- }
- return $r;
- }
-
- private function parseMustangResult($spremenljivka_mustang, $onlyProblematic = true) {
- $result = array();
-
- //$spremenljivka_mustang = $spremenljivka_mustang['sentence'];
- if (is_array($spremenljivka_mustang) && count($spremenljivka_mustang) > 0) {
-
- foreach ($spremenljivka_mustang['sentence'] AS $mustangWordArray) {
- $mw = new MustangWord($mustangWordArray);
- if (($onlyProblematic== true && $mw->isProblematic()) || $onlyProblematic == false)
- {
- $result[] = $mw->getJson();
- }
- }
- }
- return $result;
- }
-
- public function parseSpremenljivka($spremenljivka) {
- // polovimo tekste vprašanja
-
- $spremenljivka_naslov = $this->sanityze($this->getNaslovSpremenljivka($spremenljivka));
- $spremenljivka_mustang = $this->getMustangResult($spremenljivka_naslov);
- $spremenljivkaResult = $this->parseMustangResult($spremenljivka_mustang);
- return array('data' => $spremenljivkaResult );
- /*
- $this->response['mustang']['naslov'] = $spremenljivka_mustang;
-
- //$this->addWords($spremenljivka_naslov);
- $vrednosti = ($this->getVrednostiSpremenljivka($spremenljivka));
- foreach ($vrednosti AS $vrednost) {
- $this->response['mustang']['vrednosti'][] = $this->sendJson($spremenljivka_naslov);
- //$this->response['vrednosti'][] = $this->sanityze($vrednost);
- //$this->addWords($this->sanityze($vrednost));
- }
-
- //echo strip_tags($spremenljivka_naslov);
- #echo 'ank:'.$this->anketa;
- #echo 'spr:'.$spremenljivka;
-
- return $this->response['mustang']['naslov'][0];
- */
- }
-
- /** funkcija počisti string neveljavnih zankov
- *
- * @param unknown_type $string
- */
- private function sanityze($string) {
- // odstranimo html tage
- $string = strip_tags($string);
-
- // odstanimo dvojne narekovaje
- $string = str_replace(array('"', "\n\r", "\n", "/", "-", "\\"), " ", $string);
- $string = preg_replace('!\s+!', ' ', $string);
-
- // odstranimo nepotrebne spejse
- $string = trim($string);
- return $string;
- }
-
- private function addWords($sentance) {
- $words = explode(" ", $sentance);
- if (!empty($words)) {
- foreach ($words AS $word) {
- $word = str_replace(array('"', "\n\r", "\n", "."), "", $word);
- $this->response['words'][$word] = $word;
- }
- }
- }
-
- protected function getNaslovSpremenljivka($spremenljivka) {
- $result = Cache::srv_spremenljivka($spremenljivka,'naslov');
- return $result;
- }
-
- protected function getVrednostiSpremenljivka($spremenljivka) {
- $result = array();
- $sql1 = sisplet_query("SELECT naslov FROM srv_vrednost WHERE spr_id='$spremenljivka'");
- while ($row1 = mysqli_fetch_assoc($sql1)) {
- $result[] = $row1['naslov'];
- }
- return $result;
- }
-
- private function get_url_contents($url) {
- $curl = curl_init();
- $userAgent = 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322)';
-
- //The contents of the "User-Agent: " header to be used in a HTTP request.
- curl_setopt($curl, CURLOPT_USERAGENT, $userAgent);
- curl_setopt($curl, CURLOPT_URL, $url);
- //To fail silently if the HTTP code returned is greater than or equal to 400.
- curl_setopt($curl, CURLOPT_FAILONERROR, TRUE);
- // Removes the headers from the output
- curl_setopt($curl, CURLOPT_HEADER, 0);
- curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
- // Return the output instead of displaying it directly
- curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
- curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 5);
- //To follow any "Location: " header that the server sends as part of the HTTP header.
- curl_setopt($curl, CURLOPT_FOLLOWLOCATION, TRUE);
- //To automatically set the Referer: field in requests where it follows a Location: redirect.
- curl_setopt($curl, CURLOPT_AUTOREFERER, TRUE);
- //The maximum number of seconds to allow cURL functions to execute.
- curl_setopt($curl, CURLOPT_TIMEOUT, 10);
-
- $ret = curl_exec($curl);
- curl_close($curl);
- return $ret;
- }
-
- public function exportLanguageTechnology($lt_data, $language) {
- require_once("./excel/PHPExcel.php");
- require_once("./excel/PHPExcel/IOFactory.php");
-
- $data = $this->prepareExcelData($lt_data, $language);
-
- $cacheMethod = PHPExcel_CachedObjectStorageFactory::cache_in_memory_serialized;
- PHPExcel_Settings::setCacheStorageMethod($cacheMethod);
-
- // Create new PHPExcel object
- $objPHPExcel = new PHPExcel();
- // Create a first sheet, representing sales data
- $objPHPExcel->setActiveSheetIndex(0);
- $aSheet = $objPHPExcel->getActiveSheet();
- // Rename sheet
- $aSheet->setTitle('Relevant meaning');
- $aSheet->getColumnDimension('A')->setWidth(8);
- $aSheet->getColumnDimension('B')->setWidth(20);
- $aSheet->getColumnDimension('C')->setWidth(12);
- $aSheet->getColumnDimension('D')->setWidth(12);
- // first lines
- $aSheet->setCellValue('A1', 'Question');
- $aSheet->setCellValue('B1', 'Original word');
- $aSheet->setCellValue('C1', 'WF');
- $aSheet->setCellValue('D1', 'NoM');
-
- $line = 2;
- //$response = unserialize(file_get_contents('mustangData.dat'));
- // loop po spremenljivkah
-
- foreach ($data['words'] as $spr_id => $words) {
- $spremenljivkaId = $spr_id;
- $spremenljivkaVariable = Cache::srv_spremenljivka($spremenljivkaId, 'variable');
- $naslov = Cache::srv_spremenljivka($spremenljivkaId, 'naslov');
-
-
- $sc = 0;
- foreach ($words as $w_idx => $bData) {
- $word = $data['spremenljivkeData'][$spr_id][$w_idx]['word'];
- $tag = $data['spremenljivkeData'][$spr_id][$w_idx]['Tag'];
- $fwd = $data['spremenljivkeData'][$spr_id][$w_idx]['FWD'];
- $nom = $data['spremenljivkeData'][$spr_id][$w_idx]['NoM'];
- if ($sc == 0) {
- $aSheet->setCellValue('A'.$line, $spremenljivkaVariable . ' - ' . strip_tags ($naslov));
- }
- $sc ++;
- $aSheet->setCellValue('B'.$line, $word);
- $aSheet->setCellValue('C'.$line, $fwd);
- $aSheet->setCellValue('D'.$line, $nom);
- $line++;
- }
- }
-
- #SYNONYMS
- $objPHPExcel->createSheet();
- $objPHPExcel->setActiveSheetIndex(1);
- $aSheet = $objPHPExcel->getActiveSheet();
- $aSheet->setTitle('Synonyms');
-
- $aSheet->getColumnDimension('A')->setWidth(8);
- $aSheet->getColumnDimension('B')->setWidth(20);
- $aSheet->getColumnDimension('C')->setWidth(20);
- $aSheet->getColumnDimension('D')->setWidth(12);
- $aSheet->getColumnDimension('E')->setWidth(12);
-
- $aSheet->setCellValue('A1', 'Question');
- $aSheet->setCellValue('B1', 'Original wording');
- $aSheet->setCellValue('C1', 'Alternative wording');
- $aSheet->setCellValue('D1', 'WF');
- $aSheet->setCellValue('E1', 'NoM');
-
- $line = 2;
- if (count($data['synsets'])) {
- foreach ($data['synsets'] as $spr_id => $wordData) {
- $spremenljivkaId = $spr_id;
- $spremenljivkaVariable = Cache::srv_spremenljivka($spremenljivkaId, 'variable');
- $naslov = Cache::srv_spremenljivka($spremenljivkaId, 'naslov');
-
- $sc = 0;
- foreach ($wordData AS $w_idx => $synsetsData) {
- $wc = 0;
- $word = $data['spremenljivkeData'][$spr_id][$w_idx]['word'];
- foreach ($synsetsData AS $syns_word => $syns_data) {
- if ($sc == 0) {
- $aSheet->setCellValue('A'.$line, $spr_id);
- $aSheet->setCellValue('A'.$line, $spremenljivkaVariable . ' - ' . strip_tags ($naslov));
- }
- $sc++;
- if ($wc == 0) {
- $aSheet->setCellValue('B'.$line, $word);
- }
- $wc++;
- $aSheet->setCellValue('C'.$line, $syns_word);
- $aSheet->setCellValue('D'.$line, $syns_data['freq']);
- $aSheet->setCellValue('E'.$line, $syns_data['nom']);
- $line++;
- }
- }
- }
- }
-
- # HYPERNYMS
- $objPHPExcel->createSheet();
- $objPHPExcel->setActiveSheetIndex(2);
- $aSheet = $objPHPExcel->getActiveSheet();
- // Rename 2nd sheet
- $aSheet->setTitle('Hypernyms');
-
- $aSheet->getColumnDimension('A')->setWidth(8);
- $aSheet->getColumnDimension('B')->setWidth(20);
- $aSheet->getColumnDimension('C')->setWidth(20);
-
- $aSheet->setCellValue('A1', 'Question');
- $aSheet->setCellValue('B1', 'Original wording');
- $aSheet->setCellValue('C1', 'Hypernym');
-
- $line = 2;
- if (count($data['hypernyms'])) {
- foreach ($data['hypernyms'] as $spr_id => $wordData) {
- $spremenljivkaId = $spr_id;
- $spremenljivkaVariable = Cache::srv_spremenljivka($spremenljivkaId, 'variable');
- $naslov = Cache::srv_spremenljivka($spremenljivkaId, 'naslov');
-
- $sc = 0;
- foreach ($wordData AS $w_idx => $hypersData) {
- $wc = 0;
- $word = $data['spremenljivkeData'][$spr_id][$w_idx]['word'];
- foreach ($hypersData AS $syns_word => $hyper_data) {
- if ($sc == 0) {
- $aSheet->setCellValue('A'.$line, $spr_id);
- $aSheet->setCellValue('A'.$line, $spremenljivkaVariable . ' - ' . strip_tags ($naslov));
- }
- $sc++;
- if ($wc == 0) {
- $aSheet->setCellValue('B'.$line, $word);
- }
- $wc++;
- $aSheet->setCellValue('C'.$line, $hyper_data);
- $line++;
- }
- }
- }
- }
- # HYPONYMS
- $objPHPExcel->createSheet();
- $objPHPExcel->setActiveSheetIndex(3);
- $aSheet = $objPHPExcel->getActiveSheet();
- // Rename 2nd sheet
- $aSheet->setTitle('Hyponyms');
-
- $aSheet->getColumnDimension('A')->setWidth(8);
- $aSheet->getColumnDimension('B')->setWidth(20);
- $aSheet->getColumnDimension('C')->setWidth(20);
-
- $aSheet->setCellValue('A1', 'Question');
- $aSheet->setCellValue('B1', 'Original wording');
- $aSheet->setCellValue('C1', 'Hyponym');
-
- $line = 2;
- if (count($data['hyponyms'])) {
- foreach ($data['hyponyms'] as $spr_id => $wordData) {
- $sc = 0;
- foreach ($wordData AS $w_idx => $hypersData) {
- $wc = 0;
- $word = $data['spremenljivkeData'][$spr_id][$w_idx]['word'];
- foreach ($hypersData AS $syns_word => $hyper_data) {
- if ($sc == 0) {
- $aSheet->setCellValue('A'.$line, $spr_id);
- }
- $sc++;
- if ($wc == 0) {
- $aSheet->setCellValue('B'.$line, $word);
- }
- $wc++;
- $aSheet->setCellValue('C'.$line, $hyper_data);
- $line++;
- }
- }
- }
- }
-
- global $site_path;
- $folder = $site_path . EXPORT_FOLDER.'/';
-
- // izberemo random hash, ki se ni v bazi (to more bit, ker je index na fieldu cookie)
- $filename = null;
- $rand = null;
- $x = 0;
- do {
- $rand = md5(mt_rand(1, mt_getrandmax()).'@'.$_SERVER['REMOTE_ADDR']);
- $filename = $folder . "lt_" . $rand . '.xlsx';
- $x++;
- } while (file_exists($filename) === true && $x < 99999); // backup loop
-
- if ($filename != null) {
- $objPHPExcel->setActiveSheetIndex(0);
- $objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel);
- $objWriter->save($filename);
- return $rand;
- } else {
- throw new Exception("Can't create excel report!");
- }
- }
-
-
- public function parseWord($word, $wordType) {
- $spremenljivkaResult = array();
-
- if (in_array($wordType, array('a', 'n', 'v', 'adv', 'e'))) {
- $spremenljivka_mustang = $this->getMustangResult($word, $wordType);
-
-
- $data = array('language'=>$spremenljivka_mustang['language']);
- unset($spremenljivka_mustang['language']);
- $data['sentence'][] = $spremenljivka_mustang;
- // ker delamo posamezne besede ni pomembno da je onlyProblematic
- $spremenljivkaResult = $this->parseMustangResult($data, false);
- }
- return $spremenljivkaResult ;
-
- }
-
- public function getHypoHypernym($synsets) {
- if (!is_array($synsets) || empty($synsets)) {
- return null;
- }
- $hypernyms = array();
- $hyponyms = array();
-
- $_synsets = array();
-
- foreach ($synsets AS $synset) {
- $synset = $synset['synonyms'];
-
- // http://mustang.ijs.si:5111/synonym/hypohypernym?json=
- // [{ "language": "Eng", "": "1. spouse,partner,married person,mate,better half|n|a person's partner in marriage|"}]
-
- $mustangWordSentance = 'hypohypernym?json=';
- $d = '';
- $d .= '"language": "' . $this->settings['lt_language'] . '", ';
- $d .= '"synset": "' . ( $synset) . '"';
- $d = trim($d);
-
- if (false) {
- $d = '[{' . urlencode($d) . '}]';
- } else {
- $d = urlencode('[{' . $d . '}]');
- }
-
- $result = $this->makeMustangRequest($this->settings['lt_language'], $mustangWordSentance . $d);
-
- // nima vsaka beseda hypernymov in hyponimpov takrat mustang vrne specifičen string:
- if (isset($result['hypernym'][0]['hypernym'])
- && ($result['hypernym'][0]['hypernym']== 'blamaža, kiks, zagata'
- || $result['hypernym'][0]['hypernym']== 'blamaža, kiks, zagata'
- || $result['hypernym'][0]['hypernym']== 'happening, occurrence, occurrent, natural event'))
- {
- // beseda nima hypernymov in hyponymov
- $result['hypernym'] = array();
- $result['hyponym'] = array();
- }
-
- if (isset($result['hypernym']) && is_array($result['hypernym']) && count($result['hypernym']) > 0) {
- foreach ($result['hypernym'] AS $_hypernyms) {
- if (isset($_hypernyms['hypernym'])) {
- $__hypernyms = array_map('trim',explode(',', $_hypernyms['hypernym']));
- $hypernyms = array_merge($hypernyms, $__hypernyms);
-
- }
- }
- }
- if (isset($result['hyponym']) && is_array($result['hyponym']) && count($result['hyponym']) > 0) {
- foreach ($result['hyponym'] AS $_hyponyms) {
- $_hyponyms = array_map('trim',explode(',', $_hyponyms));
- $hyponyms = array_merge($hyponyms, $_hyponyms);
- }
- }
- }
- $hypernyms = array_unique($hypernyms);
- $hyponyms = array_unique($hyponyms);
- natsort($hypernyms);
- natsort($hyponyms);
- if(($key = array_search('NO HYPERNYMS', $hypernyms)) !== false) {
- unset($hypernyms[$key]);
- }
- if(($key = array_search('NO HYPONYMS', $hyponyms)) !== false) {
- unset($hyponyms[$key]);
- }
- return array('data' => array('hypernyms' => $hypernyms, 'hyponyms' => $hyponyms), 'synsets' => $_synsets);
- }
-
- private function displayVprasanjeFloatEditing() {
- echo '<p><label>Frekvenca besede je pod: <input type="text" id="lt_min_FWD_spr" value=""></label>';
- echo '</p><p>';
- echo '<label>Nastavi le tej spremenljivki <input type="checkbox" id="lt_special_setting" value=""></label>';
- echo '</p><p>';
- echo '<label><button type="button" onclick="saveLanguageTechnologySetting();">' . $this->lang[''] . 'Nastavi</button>';
- echo '</p><p>';
- echo '<button type="button" onclick="runLanguageTechnology();">' . $this->lang['srv_language_technology_run'] . '</button>';
- echo '</p>';
- echo '</p><p>';
- echo '<label id="lt_export_excel" onclick="lt_export_excel();"><span class="sprites xls_grey_16"></span>' . $this->lang['srv_language_technology_export_excel'] . '</label>';
- echo '</p>';
-
-
- }
-
- private function prepareExcelData($lt_data, $language) {
-
- $result = array();
-
- if (!isset($lt_data['response'])) {
- return $result;
- }
- $spremenljivkeData = $lt_data['response'];
- $result['spremenljivkeData'] = $spremenljivkeData;
- unset($lt_data['response']);
-
- $spremenljivkaWords = array();
- if (isset($lt_data['wordsSynonyms'])) {
- foreach ($lt_data['wordsSynonyms'] as $spr_id => $wordSynData) {
- foreach ($wordSynData as $wordIdx => $synData) {
- foreach ($synData AS $synIdx => $star) {
- if (isset($spremenljivkeData[$spr_id][$wordIdx]['Synset'][$synIdx])) {
- $wordSynsets = $this->parseExcelSynsets($spremenljivkeData[$spr_id][$wordIdx]['Synset'][$synIdx], $language);
- foreach($wordSynsets AS $word => $wordData) {
- if (!isset($result['words'][$spr_id][$wordIdx])) {
- $result['words'][$spr_id][$wordIdx] = true;
- }
- if (!isset($result['synsets'][$spr_id][$wordIdx][$word])) {
- $result['synsets'][$spr_id][$wordIdx][$word] = $wordData;
- }
- }
- }
-
- }
- }
-
- }
- }
-
- if (isset($lt_data['wordsHypernyms'])) {
- foreach ($lt_data['wordsHypernyms'] as $spr_id => $wordHyperData) {
- foreach ($wordHyperData as $wordIdx => $synData) {
- foreach ($synData AS $synIdx => $star) {
- if (isset($spremenljivkeData[$spr_id][$wordIdx]['cleanhypernyms'][$synIdx])) {
- if (!isset($result['words'][$spr_id][$wordIdx])) {
- $result['words'][$spr_id][$wordIdx] = true;
- }
-
- if (!isset($result['hypernyms'][$spr_id][$wordIdx][$synIdx])) {
- $result['hypernyms'][$spr_id][$wordIdx][$synIdx] = $spremenljivkeData[$spr_id][$wordIdx]['cleanhypernyms'][$synIdx];
- }
- }
-
- }
- }
-
- }
- }
-
- if (isset($lt_data['wordsHyponyms'])) {
- foreach ($lt_data['wordsHyponyms'] as $spr_id => $wordHypoData) {
- foreach ($wordHypoData as $wordIdx => $synData) {
- foreach ($synData AS $synIdx => $star) {
- if (isset($spremenljivkeData[$spr_id][$wordIdx]['cleanhyponyms'][$synIdx])) {
- if (!isset($result['words'][$spr_id][$wordIdx])) {
- $result['words'][$spr_id][$wordIdx] = true;
- }
-
- if (!isset($result['hyponyms'][$spr_id][$wordIdx][$synIdx])) {
- $result['hyponyms'][$spr_id][$wordIdx][$synIdx] = $spremenljivkeData[$spr_id][$wordIdx]['cleanhyponyms'][$synIdx];
- }
- }
-
- }
- }
-
- }
- }
-
- return $result;
- }
-
- private function parseExcelSynsets($stringWordSynsets, $language) {
- $result = array();
- $synonyms = $stringWordSynsets['FWDNoM'];
-
- if (strtolower($language) == 'eng') {
- // besede so ločene z vejico
- $words = explode(';', $synonyms);
- foreach ($words AS $word) {
- if ($word == null || trim($word) == "") {
- continue;
- }
- $tmp = explode(':', $word);
- $tmpWord = trim($tmp[0]);
- $tmp = explode(',', $tmp[1]);
- $freq = trim(str_replace(array("FW","=", " "), "", trim($tmp[0])));
- $nom = trim(str_replace(array("NoM","=", " "), "", trim($tmp[1])));
- if (!isset($result[$tmpWord])) {
- $result[$tmpWord] = array('freq'=>$freq, 'nom'=> $nom);
- }
- }
-
- } else {
- // besede so ločene z vejico
- $words = explode(';', $synonyms);
- foreach ($words AS $word) {
- if ($word == null || trim($word) == "") {
- continue;
- }
- $tmp = explode(':', $word);
- $tmpWord = trim($tmp[0]);
- $tmp = explode(',', $tmp[1]);
- $freq = trim(str_replace(array("FW","=", " "), "", trim($tmp[0])));
- $nom = trim(str_replace(array("NoM","=", " "), "", trim($tmp[1])));
- if (!isset($result[$tmpWord])) {
- $result[$tmpWord] = array('freq'=>$freq, 'nom'=> $nom);
- }
- }
- }
- return $result;
- }
-}
-
-class MustangWord {
-
-
- public $word = "";
- private $Tag = ""; // {Do, n, v, adv,
- private $FWD = 0;
- private $NoM = 0;
- private $minFWD = false;
- private $min_nNoM = false;
- private $min_vNoM = false;
- private $Synset = array();
-
- public $problematic;
- private $json;
-
- /**
- *
-{
- "word": "kot",
- "Tag": "Vd",
- "FWD": 467459,
- "NoM": 0,
- "Flag": {
- "minFWD": false,
- "min_nNoM": false,
- "min_vNoM": false
- },
- "Synset": [{
- "synonyms": "enako, kakor, ko, kot, medtem ko, prav tako, tako kot",
- "FWDNoM": "enako NoM: 2 Frek: 14288, kakor NoM: 1 Frek: 37364, ko NoM: 1 Frek: 297690, kot NoM: 6 Frek: 467459, medtem ko NoM: 1 Frek: neznana, prav tako NoM: 1 Frek: neznana, tako kot NoM: 1 Frek: neznana"
- },
- {
- "synonyms": "kot, vogal",
- "FWDNoM": "kot NoM: 6 Frek: 467459, vogal NoM: 5 Frek: 2507"
- },
- {
- "synonyms": "kot, vogal",
- "FWDNoM": "kot NoM: 6 Frek: 467459, vogal NoM: 5 Frek: 2507"
- },
- {
- "synonyms": "kot",
- "FWDNoM": "kot NoM: 6 Frek: 467459"
- },
- {
- "synonyms": "kot, vogal, vogel",
- "FWDNoM": "kot NoM: 6 Frek: 467459, vogal NoM: 5 Frek: 2507, vogel NoM: 2 Frek: 269"
- },
- {
- "synonyms": "kot",
- "FWDNoM": "kot NoM: 6 Frek: 467459"
- }]
-}
- */
- public function __construct($mustangWordArray) {
- $this->json = $mustangWordArray;
-
- $this->word = $mustangWordArray['word'];
- $this->Tag = $mustangWordArray['Tag'];
- $this->FWD = $mustangWordArray['FWD'];
- $this->NoM = $mustangWordArray['NoM'];
-
- $this->minFWD = $mustangWordArray['Flag']['minFWD'];
- $this->min_nNoM = $mustangWordArray['Flag']['min_nNoM'];
- $this->min_vNoM = $mustangWordArray['Flag']['min_vNoM'];
-
- $this->problematic = $this->minFWD || $this->min_nNoM || $this->min_vNoM;
-
-
- }
-
- public function isProblematic() {
-
- return $this->problematic;
- }
-
- public function getJson() {
- return $this->json;
- }
-
-
-} \ No newline at end of file
diff --git a/admin/survey/classes/staticHtml/AnalizaPredogledFrekvence.html b/admin/survey/classes/staticHtml/AnalizaPredogledFrekvence.html
deleted file mode 100644
index 02d8688..0000000
--- a/admin/survey/classes/staticHtml/AnalizaPredogledFrekvence.html
+++ /dev/null
@@ -1,363 +0,0 @@
- <table class="anl_tbl anl_bt anl_br tbl_clps">
- <tbody>
- <tr>
- <td class="anl_bl anl_br anl_bb anl_ac anl_bck_freq_1 anl_w110"><span
- class="anl_variabla"><a href="#"
- </td>
- <td class="anl_br anl_bb anl_al anl_bck_freq_1" colspan="5"><span
- class="anl_variabla_label">Spol</span></td>
- </tr>
- <tr>
- <td class="anl_bl anl_br anl_bb anl_ac anl_bck anl_w110"><span
- class="taCenter printHide iconHide"><a href="#"><span
- class="sprites analysis_sums_gray"
- title="Sumarne frekvence (print, pdf, word, excel)"></span></a><a
- href="#"><span
- class="sprites analysis_sums_new_gray"
- title="Dopolnjene frekvence (print, pdf, word, excel)"></span></a><a
- href="#" ><span
- class="sprites analysis_statistic_gray"
- title="Opisne statistike (print, pdf, word, excel)"></span></a><a
- href="#" ><span
- class="sprites analysis_frequencys"
- title="Osnovne frekvence (print, pdf, word, excel)"></span></a></span></td>
- <td class="anl_br anl_bb anl_ac anl_bck anl_variabla_line">Odgovori</td>
- <td class="anl_br anl_bb anl_ac anl_bck anl_w70 anl_variabla_line">Frekvenca</td>
- <td class="anl_br anl_bb anl_ac anl_bck anl_w70 anl_variabla_line">Odstotek</td>
- <td class="anl_br anl_bb anl_ac anl_bck anl_w70 anl_variabla_line">Veljavni</td>
- <td class="anl_br anl_bb anl_ac anl_bck anl_w70 anl_variabla_line">Kumulativa</td>
- </tr>
- <tr >
- <td class="anl_bl anl_ac anl_br gray">&nbsp;</td>
- <td class="anl_br anl_bck_0_0"><div class="anl_user_text_more">1</div>
- (Moški)</td>
- <td class="anl_ac anl_br anl_bck_0_0">3</td>
- <td class="anl_ar anl_br anl_bck_0_0 anl_pr10">33.3%</td>
- <td class="anl_ar anl_br anl_bck_0_0 anl_pr10">33.3%</td>
- <td class="anl_ar anl_bck_0_0 anl_pr10">33.3%</td>
- </tr>
- <tr >
- <td class="anl_bl anl_ac anl_br gray">&nbsp;</td>
- <td class="anl_br anl_bck_0_1"><div class="anl_user_text_more">2</div>
- (Ženski)</td>
- <td class="anl_ac anl_br anl_bck_0_1">6</td>
- <td class="anl_ar anl_br anl_bck_0_1 anl_pr10">66.7%</td>
- <td class="anl_ar anl_br anl_bck_0_1 anl_pr10">66.7%</td>
- <td class="anl_ar anl_bck_0_1 anl_pr10">100.0%</td>
- </tr>
- <tr class="anl_bb">
- <td class="anl_bl anl_br anl_al gray anl_ti_20 anl_bck_text_1">Veljavni<span
- class="gray" value="0">&nbsp;(<span
- class="sprites plus_orange folder_plusminus"
- style="width: 12px; height: 12px"></span>)
- </span><span
- class="gray displayNone">&nbsp;(<span
- class="sprites minus_orange folder_plusminus"
- style="width: 12px; height: 12px"></span>)
- </span></td>
- <td class="anl_br anl_al anl_ita red anl_bck_text_1">Skupaj</td>
- <td class="anl_ita red anl_br anl_ac anl_bck_text_1">9</td>
- <td class="anl_ita red anl_br anl_ar anl_bck_text_1 anl_pr10">100.0%</td>
- <td class="anl_ita red anl_br anl_ar anl_bck_text_1 anl_pr10">100.0%</td>
- <td class="anl_ita red anl_ac anl_bck_text_1">&nbsp;</td>
- </tr>
- <tr class="anl_dash_red_bb displayNone">
- <td class="anl_bl anl_al anl_br gray anl_ti_20 anl_bck_text_1">Manjkajoči</td>
- <td class="anl_br anl_ita red anl_bck_text_1">Skupaj<span
- class="printHide anl_ita anl_detail_percent">&nbsp;&nbsp;<a
- href="#single_missing_6" > <span
- class="sprites plus_orange folder_plusminus"
- style="width: 12px; height: 12px"></span>
- </a></span><span
- class="printHide anl_ita anl_detail_percent displayNone">&nbsp;&nbsp;<a
- href="#single_missing_6" > <span
- class="sprites minus_orange folder_plusminus"
- style="width: 12px; height: 12px"></span>
- </a></span>
- <div
- class="floatRight anl_w50 anl_dash_bl anl_dash_bt anl_ac anl_detail_percent displayNone">100.0%</div>
- <div
- class="floatRight anl_w30 anl_dash_bt anl_ac anl_detail_percent displayNone"></div>
- </td>
- <td class="anl_ac anl_br anl_detail_cnt anl_ita red anl_bck_text_1">0</td>
- <td class="anl_ar anl_br anl_ita red anl_bck_text_1 anl_pr10">0.0%</td>
- <td class="anl_ar anl_br anl_ita red anl_bck_text_1 anl_pr10"><span
- class="">&nbsp;</span></td>
- <td class="anl_ar anl_ita red anl_bck_text_1 anl_pr10">&nbsp;</td>
- </tr>
- <tr class="displayNone">
- <td
- class="anl_bl anl_ac anl_dash_bt anl_bb red anl_ita anl_bck_text_0">SKUPAJ</td>
- <td class="anl_dash_bt anl_br anl_bb anl_bck_text_0">&nbsp;</td>
- <td
- class="anl_ac anl_dash_bt anl_br anl_bb anl_ita red anl_bck_text_0">9</td>
- <td
- class="anl_ar anl_dash_bt anl_br anl_bb anl_ita red anl_bck_text_0 anl_pr10">100.0%</td>
- <td
- class="anl_ar anl_dash_bt anl_br anl_bb anl_ita red anl_bck_text_0 anl_pr10">&nbsp;</td>
- <td class="anl_ac anl_dash_bt anl_bb anl_ita red anl_bck_text_0">&nbsp;</td>
- </tr>
- </tbody>
- </table>
-
- <br>
- <table class="anl_tbl anl_bt anl_br tbl_clps">
- <tbody>
- <tr>
- <td class="anl_bl anl_br anl_bb anl_ac anl_bck_freq_1 anl_w110"><span
- class="anl_variabla"><a
- href="#">Q2</a></span></td>
- <td colspan="5" class="anl_br anl_bb anl_al anl_bck_freq_1"><span
- class="anl_variabla_label">Dohodek</span></td>
- </tr>
- <tr>
- <td class="anl_bl anl_br anl_bb anl_ac anl_bck anl_w110"><span
- class="taCenter printHide iconHide"><a
- href="#"><span
- title="Sumarne frekvence (print, pdf, word, excel)"
- class="sprites analysis_sums_gray"></span></a><a
- href="#"><span
- title="Opisne statistike (print, pdf, word, excel)"
- class="sprites analysis_statistic_gray"></span></a><a
- href="#"><span
- title="Osnovne frekvence (print, pdf, word, excel)"
- class="sprites analysis_frequencys"></span></a></span></td>
- <td class="anl_br anl_bb anl_ac anl_bck anl_variabla_line">Odgovori</td>
- <td class="anl_br anl_bb anl_ac anl_bck anl_w70 anl_variabla_line">Frekvenca</td>
- <td class="anl_br anl_bb anl_ac anl_bck anl_w70 anl_variabla_line">Odstotek</td>
- <td class="anl_br anl_bb anl_ac anl_bck anl_w70 anl_variabla_line">Kumulativa</td>
- </tr>
- <tr
- <td class="anl_bl anl_ac anl_br gray">&nbsp;</td>
- <td class="anl_br anl_bck_0_0"><div class="anl_user_text_more">900</div></td>
- <td class="anl_ac anl_br anl_bck_0_0">1</td>
- <td class="anl_ar anl_br anl_bck_0_0 anl_pr10">11.1%</td>
- <td class="anl_ar anl_bck_0_0 anl_pr10">11.1%</td>
- </tr>
- <tr
- <td class="anl_bl anl_ac anl_br gray">&nbsp;</td>
- <td class="anl_br anl_bck_0_1"><div class="anl_user_text_more">1000</div></td>
- <td class="anl_ac anl_br anl_bck_0_1">1</td>
- <td class="anl_ar anl_br anl_bck_0_1 anl_pr10">11.1%</td>
- <td class="anl_ar anl_bck_0_1 anl_pr10">22.2%</td>
- </tr>
- <tr
- <td class="anl_bl anl_ac anl_br gray">&nbsp;</td>
- <td class="anl_br anl_bck_0_0"><div class="anl_user_text_more">1300</div></td>
- <td class="anl_ac anl_br anl_bck_0_0">3</td>
- <td class="anl_ar anl_br anl_bck_0_0 anl_pr10">33.3%</td>
- <td class="anl_ar anl_bck_0_0 anl_pr10">55.6%</td>
- </tr>
- <tr
- <td class="anl_bl anl_ac anl_br gray">&nbsp;</td>
- <td class="anl_br anl_bck_0_1"><div class="anl_user_text_more">1500</div></td>
- <td class="anl_ac anl_br anl_bck_0_1">1</td>
- <td class="anl_ar anl_br anl_bck_0_1 anl_pr10">11.1%</td>
- <td class="anl_ar anl_bck_0_1 anl_pr10">66.7%</td>
- </tr>
- <tr
- <td class="anl_bl anl_ac anl_br gray">&nbsp;</td>
- <td class="anl_br anl_bck_0_0"><div class="anl_user_text_more">1600</div></td>
- <td class="anl_ac anl_br anl_bck_0_0">1</td>
- <td class="anl_ar anl_br anl_bck_0_0 anl_pr10">11.1%</td>
- <td class="anl_ar anl_bck_0_0 anl_pr10">77.8%</td>
- </tr>
- <tr
- <td class="anl_bl anl_ac anl_br gray">&nbsp;</td>
- <td class="anl_br anl_bck_0_1"><div class="anl_user_text_more">1700</div></td>
- <td class="anl_ac anl_br anl_bck_0_1">1</td>
- <td class="anl_ar anl_br anl_bck_0_1 anl_pr10">11.1%</td>
- <td class="anl_ar anl_bck_0_1 anl_pr10">88.9%</td>
- </tr>
- <tr
- <td class="anl_bl anl_ac anl_br gray">&nbsp;</td>
- <td class="anl_br anl_bck_0_0"><div class="anl_user_text_more">2000</div></td>
- <td class="anl_ac anl_br anl_bck_0_0">1</td>
- <td class="anl_ar anl_br anl_bck_0_0 anl_pr10">11.1%</td>
- <td class="anl_ar anl_bck_0_0 anl_pr10">100.0%</td>
- </tr>
- <tr class="anl_bb">
- <td class="anl_bl anl_br anl_al gray anl_ti_20 anl_bck_text_1">Veljavni<span
- value="0" class="gray" >&nbsp;(<span
- style="width: 12px; height: 12px"
- class="sprites plus_orange folder_plusminus"></span>)
- </span><span class="anl_gray displayNone"
- >&nbsp;(<span
- style="width: 12px; height: 12px"
- class="sprites minus_orange folder_plusminus"></span>)
- </span></td>
- <td class="anl_br anl_al anl_ita red anl_bck_text_1">Skupaj</td>
- <td class="anl_ita red anl_br anl_ac anl_bck_text_1">9</td>
- <td class="anl_ita red anl_br anl_ar anl_bck_text_1 anl_pr10">100.0%</td>
- <td class="anl_ita red anl_ac anl_bck_text_1">&nbsp;</td>
- </tr>
- <tr class="anl_dash_red_bb displayNone" >
- <td class="anl_bl anl_al anl_br gray anl_ti_20 anl_bck_text_1">Manjkajoči</td>
- <td class="anl_br anl_ita red anl_bck_text_1">Skupaj<span
- class="printHide anl_ita anl_detail_percent"
- >&nbsp;&nbsp;<a
- href="#single_missing_7"> <span
- style="width: 12px; height: 12px"
- class="sprites plus_orange folder_plusminus"></span>
- </a></span><span class="printHide anl_ita anl_detail_percent displayNone"
- >&nbsp;&nbsp;<a
- href="#single_missing_7"> <span
- style="width: 12px; height: 12px"
- class="sprites minus_orange folder_plusminus"></span>
- </a></span>
- <div
- class="floatRight anl_w50 anl_dash_bl anl_dash_bt anl_ac anl_detail_percent displayNone"
- >100.0%</div>
- <div
- class="floatRight anl_w30 anl_dash_bt anl_ac anl_detail_percent displayNone"
- ></div>
- </td>
- <td class="anl_ac anl_br anl_detail_cnt anl_ita red anl_bck_text_1">0</td>
- <td class="anl_ar anl_br anl_ita red anl_bck_text_1 anl_pr10">0.0%</td>
- <td class="anl_ar anl_ita red anl_bck_text_1 anl_pr10">&nbsp;</td>
- </tr>
- <tr class="displayNone" >
- <td
- class="anl_bl anl_ac anl_dash_bt anl_bb red anl_ita anl_bck_text_0">SKUPAJ</td>
- <td class="anl_dash_bt anl_br anl_bb anl_bck_text_0">&nbsp;</td>
- <td
- class="anl_ac anl_dash_bt anl_br anl_bb anl_ita red anl_bck_text_0">9</td>
- <td
- class="anl_ar anl_dash_bt anl_br anl_bb anl_ita red anl_bck_text_0 anl_pr10">100.0%</td>
- <td class="anl_ac anl_dash_bt anl_bb anl_ita red anl_bck_text_0">&nbsp;</td>
- </tr>
- </tbody>
- </table>
- <br>
- <table class="anl_tbl anl_bt anl_br tbl_clps">
- <tbody>
- <tr>
- <td class="anl_bl anl_br anl_bb anl_ac anl_bck_freq_1 anl_w110"><span
- class="anl_variabla"><a
- href="#">Q3</a></span></td>
- <td colspan="5" class="anl_br anl_bb anl_al anl_bck_freq_1"><span
- class="anl_variabla_label">Država</span></td>
- </tr>
- <tr>
- <td class="anl_bl anl_br anl_bb anl_ac anl_bck anl_w110"><span
- class="taCenter printHide iconHide"><a
- href="#"><span
- title="Sumarne frekvence (print, pdf, word, excel)"
- class="sprites analysis_sums_gray"></span></a><a
- href="#"><span
- title="Dopolnjene frekvence (print, pdf, word, excel)"
- class="sprites analysis_sums_new_gray"></span></a><a
- href="#"><span
- title="Opisne statistike (print, pdf, word, excel)"
- class="sprites analysis_statistic_gray"></span></a><a
- href="#"><span
- title="Osnovne frekvence (print, pdf, word, excel)"
- class="sprites analysis_frequencys"></span></a></span></td>
- <td class="anl_br anl_bb anl_ac anl_bck anl_variabla_line">Odgovori</td>
- <td class="anl_br anl_bb anl_ac anl_bck anl_w70 anl_variabla_line">Frekvenca</td>
- <td class="anl_br anl_bb anl_ac anl_bck anl_w70 anl_variabla_line">Odstotek</td>
- <td class="anl_br anl_bb anl_ac anl_bck anl_w70 anl_variabla_line">Veljavni</td>
- <td class="anl_br anl_bb anl_ac anl_bck anl_w70 anl_variabla_line">Kumulativa</td>
- </tr>
- <tr >
- <td class="anl_bl anl_ac anl_br gray">&nbsp;</td>
- <td class="anl_br anl_bck_0_0"><div class="anl_user_text_more">1</div>
- (Slovenija)</td>
- <td class="anl_ac anl_br anl_bck_0_0">2</td>
- <td class="anl_ar anl_br anl_bck_0_0 anl_pr10">22.2%</td>
- <td class="anl_ar anl_br anl_bck_0_0 anl_pr10">22.2%</td>
- <td class="anl_ar anl_bck_0_0 anl_pr10">22.2%</td>
- </tr>
- <tr >
- <td class="anl_bl anl_ac anl_br gray">&nbsp;</td>
- <td class="anl_br anl_bck_0_1"><div class="anl_user_text_more">2</div>
- (Hrvaška)</td>
- <td class="anl_ac anl_br anl_bck_0_1">2</td>
- <td class="anl_ar anl_br anl_bck_0_1 anl_pr10">22.2%</td>
- <td class="anl_ar anl_br anl_bck_0_1 anl_pr10">22.2%</td>
- <td class="anl_ar anl_bck_0_1 anl_pr10">44.4%</td>
- </tr>
- <tr >
- <td class="anl_bl anl_ac anl_br gray">&nbsp;</td>
- <td class="anl_br anl_bck_0_0"><div class="anl_user_text_more">3</div>
- (Avstrija)</td>
- <td class="anl_ac anl_br anl_bck_0_0">2</td>
- <td class="anl_ar anl_br anl_bck_0_0 anl_pr10">22.2%</td>
- <td class="anl_ar anl_br anl_bck_0_0 anl_pr10">22.2%</td>
- <td class="anl_ar anl_bck_0_0 anl_pr10">66.7%</td>
- </tr>
- <tr >
- <td class="anl_bl anl_ac anl_br gray">&nbsp;</td>
- <td class="anl_br anl_bck_0_1"><div class="anl_user_text_more">4</div>
- (Italija)</td>
- <td class="anl_ac anl_br anl_bck_0_1">1</td>
- <td class="anl_ar anl_br anl_bck_0_1 anl_pr10">11.1%</td>
- <td class="anl_ar anl_br anl_bck_0_1 anl_pr10">11.1%</td>
- <td class="anl_ar anl_bck_0_1 anl_pr10">77.8%</td>
- </tr>
- <tr >
- <td class="anl_bl anl_ac anl_br gray">&nbsp;</td>
- <td class="anl_br anl_bck_0_0"><div class="anl_user_text_more">5</div>
- (Madžarska)</td>
- <td class="anl_ac anl_br anl_bck_0_0">2</td>
- <td class="anl_ar anl_br anl_bck_0_0 anl_pr10">22.2%</td>
- <td class="anl_ar anl_br anl_bck_0_0 anl_pr10">22.2%</td>
- <td class="anl_ar anl_bck_0_0 anl_pr10">100.0%</td>
- </tr>
- <tr class="anl_bb" >
- <td class="anl_bl anl_br anl_al gray anl_ti_20 anl_bck_text_1">Veljavni<span
- value="0" class="gray" >&nbsp;(<span
- style="width: 12px; height: 12px"
- class="sprites plus_orange folder_plusminus"></span>)
- </span><span class="anl_gray displayNone"
- >&nbsp;(<span
- style="width: 12px; height: 12px"
- class="sprites minus_orange folder_plusminus"></span>)
- </span></td>
- <td class="anl_br anl_al anl_ita red anl_bck_text_1">Skupaj</td>
- <td class="anl_ita red anl_br anl_ac anl_bck_text_1">9</td>
- <td class="anl_ita red anl_br anl_ar anl_bck_text_1 anl_pr10">100.0%</td>
- <td class="anl_ita red anl_br anl_ar anl_bck_text_1 anl_pr10">100.0%</td>
- <td class="anl_ita red anl_ac anl_bck_text_1">&nbsp;</td>
- </tr>
- <tr class="anl_dash_red_bb displayNone" >
- <td class="anl_bl anl_al anl_br gray anl_ti_20 anl_bck_text_1">Manjkajoči</td>
- <td class="anl_br anl_ita red anl_bck_text_1">Skupaj<span
- class="printHide anl_ita anl_detail_percent"
- >&nbsp;&nbsp;<a
- href="#single_missing_8"> <span
- style="width: 12px; height: 12px"
- class="sprites plus_orange folder_plusminus"></span>
- </a></span><span class="printHide anl_ita anl_detail_percent displayNone"
- >&nbsp;&nbsp;<a
- href="#single_missing_8"> <span
- style="width: 12px; height: 12px"
- class="sprites minus_orange folder_plusminus"></span>
- </a></span>
- <div
- class="floatRight anl_w50 anl_dash_bl anl_dash_bt anl_ac anl_detail_percent displayNone"
- >100.0%</div>
- <div
- class="floatRight anl_w30 anl_dash_bt anl_ac anl_detail_percent displayNone"
- ></div>
- </td>
- <td class="anl_ac anl_br anl_detail_cnt anl_ita red anl_bck_text_1">0</td>
- <td class="anl_ar anl_br anl_ita red anl_bck_text_1 anl_pr10">0.0%</td>
- <td class="anl_ar anl_br anl_ita red anl_bck_text_1 anl_pr10"><span
- >&nbsp;</span></td>
- <td class="anl_ar anl_ita red anl_bck_text_1 anl_pr10">&nbsp;</td>
- </tr>
- <tr class="displayNone" >
- <td
- class="anl_bl anl_ac anl_dash_bt anl_bb red anl_ita anl_bck_text_0">SKUPAJ</td>
- <td class="anl_dash_bt anl_br anl_bb anl_bck_text_0">&nbsp;</td>
- <td
- class="anl_ac anl_dash_bt anl_br anl_bb anl_ita red anl_bck_text_0">9</td>
- <td
- class="anl_ar anl_dash_bt anl_br anl_bb anl_ita red anl_bck_text_0 anl_pr10">100.0%</td>
- <td
- class="anl_ar anl_dash_bt anl_br anl_bb anl_ita red anl_bck_text_0 anl_pr10">&nbsp;</td>
- <td class="anl_ac anl_dash_bt anl_bb anl_ita red anl_bck_text_0">&nbsp;</td>
- </tr>
- </tbody>
- </table> \ No newline at end of file
diff --git a/admin/survey/classes/staticHtml/AnalizaPredogledFrekvence.min.html b/admin/survey/classes/staticHtml/AnalizaPredogledFrekvence.min.html
deleted file mode 100644
index 0ebaca2..0000000
--- a/admin/survey/classes/staticHtml/AnalizaPredogledFrekvence.min.html
+++ /dev/null
@@ -1,2 +0,0 @@
-
-<table class="anl_tbl anl_bt anl_br tbl_clps"><tbody><tr><td class="anl_bl anl_br anl_bb anl_ac anl_bck_freq_1 anl_w110"><span class="anl_variabla"><a href="#" </td><td class="anl_br anl_bb anl_al anl_bck_freq_1" colspan="5"><span class="anl_variabla_label">Spol</span></td></tr><tr><td class="anl_bl anl_br anl_bb anl_ac anl_bck anl_w110"><span class="taCenter printHide iconHide"><a href="#"><span class="sprites analysis_sums_gray" title="Sumarne frekvence (print, pdf, word, excel)"></span></a><a href="#"><span class="sprites analysis_sums_new_gray" title="Dopolnjene frekvence (print, pdf, word, excel)"></span></a><a href="#"><span class="sprites analysis_statistic_gray" title="Opisne statistike (print, pdf, word, excel)"></span></a><a href="#"><span class="sprites analysis_frequencys" title="Osnovne frekvence (print, pdf, word, excel)"></span></a></span></td><td class="anl_br anl_bb anl_ac anl_bck anl_variabla_line">Odgovori</td><td class="anl_br anl_bb anl_ac anl_bck anl_w70 anl_variabla_line">Frekvenca</td><td class="anl_br anl_bb anl_ac anl_bck anl_w70 anl_variabla_line">Odstotek</td><td class="anl_br anl_bb anl_ac anl_bck anl_w70 anl_variabla_line">Veljavni</td><td class="anl_br anl_bb anl_ac anl_bck anl_w70 anl_variabla_line">Kumulativa</td></tr><tr><td class="anl_bl anl_ac anl_br gray">&nbsp;</td><td class="anl_br anl_bck_0_0"><div class="anl_user_text_more">1</div> (Moški)</td><td class="anl_ac anl_br anl_bck_0_0">3</td><td class="anl_ar anl_br anl_bck_0_0 anl_pr10">33.3%</td><td class="anl_ar anl_br anl_bck_0_0 anl_pr10">33.3%</td><td class="anl_ar anl_bck_0_0 anl_pr10">33.3%</td></tr><tr><td class="anl_bl anl_ac anl_br gray">&nbsp;</td><td class="anl_br anl_bck_0_1"><div class="anl_user_text_more">2</div> (Ženski)</td><td class="anl_ac anl_br anl_bck_0_1">6</td><td class="anl_ar anl_br anl_bck_0_1 anl_pr10">66.7%</td><td class="anl_ar anl_br anl_bck_0_1 anl_pr10">66.7%</td><td class="anl_ar anl_bck_0_1 anl_pr10">100.0%</td></tr><tr class="anl_bb"><td class="anl_bl anl_br anl_al gray anl_ti_20 anl_bck_text_1">Veljavni<span class="gray" value="0">&nbsp;(<span class="sprites plus_orange folder_plusminus" style="width: 12px; height: 12px"></span>) </span><span class="gray displayNone">&nbsp;(<span class="sprites minus_orange folder_plusminus" style="width: 12px; height: 12px"></span>) </span></td><td class="anl_br anl_al anl_ita red anl_bck_text_1">Skupaj</td><td class="anl_ita red anl_br anl_ac anl_bck_text_1">9</td><td class="anl_ita red anl_br anl_ar anl_bck_text_1 anl_pr10">100.0%</td><td class="anl_ita red anl_br anl_ar anl_bck_text_1 anl_pr10">100.0%</td><td class="anl_ita red anl_ac anl_bck_text_1">&nbsp;</td></tr><tr class="anl_dash_red_bb displayNone"><td class="anl_bl anl_al anl_br gray anl_ti_20 anl_bck_text_1">Manjkajoči</td><td class="anl_br anl_ita red anl_bck_text_1">Skupaj<span class="printHide anl_ita anl_detail_percent">&nbsp;&nbsp;<a href="#single_missing_6"><span class="sprites plus_orange folder_plusminus" style="width: 12px; height: 12px"></span></a></span><span class="printHide anl_ita anl_detail_percent displayNone">&nbsp;&nbsp;<a href="#single_missing_6"><span class="sprites minus_orange folder_plusminus" style="width: 12px; height: 12px"></span></a></span><div class="floatRight anl_w50 anl_dash_bl anl_dash_bt anl_ac anl_detail_percent displayNone">100.0%</div><div class="floatRight anl_w30 anl_dash_bt anl_ac anl_detail_percent displayNone"></div></td><td class="anl_ac anl_br anl_detail_cnt anl_ita red anl_bck_text_1">0</td><td class="anl_ar anl_br anl_ita red anl_bck_text_1 anl_pr10">0.0%</td><td class="anl_ar anl_br anl_ita red anl_bck_text_1 anl_pr10"><span class="">&nbsp;</span></td><td class="anl_ar anl_ita red anl_bck_text_1 anl_pr10">&nbsp;</td></tr><tr class="displayNone"><td class="anl_bl anl_ac anl_dash_bt anl_bb red anl_ita anl_bck_text_0">SKUPAJ</td><td class="anl_dash_bt anl_br anl_bb anl_bck_text_0">&nbsp;</td><td class="anl_ac anl_dash_bt anl_br anl_bb anl_ita red anl_bck_text_0">9</td><td class="anl_ar anl_dash_bt anl_br anl_bb anl_ita red anl_bck_text_0 anl_pr10">100.0%</td><td class="anl_ar anl_dash_bt anl_br anl_bb anl_ita red anl_bck_text_0 anl_pr10">&nbsp;</td><td class="anl_ac anl_dash_bt anl_bb anl_ita red anl_bck_text_0">&nbsp;</td></tr></tbody></table><br><table class="anl_tbl anl_bt anl_br tbl_clps"><tbody><tr><td class="anl_bl anl_br anl_bb anl_ac anl_bck_freq_1 anl_w110"><span class="anl_variabla"><a href="#">Q2</a></span></td><td colspan="5" class="anl_br anl_bb anl_al anl_bck_freq_1"><span class="anl_variabla_label">Dohodek</span></td></tr><tr><td class="anl_bl anl_br anl_bb anl_ac anl_bck anl_w110"><span class="taCenter printHide iconHide"><a href="#"><span title="Sumarne frekvence (print, pdf, word, excel)" class="sprites analysis_sums_gray"></span></a><a href="#"><span title="Opisne statistike (print, pdf, word, excel)" class="sprites analysis_statistic_gray"></span></a><a href="#"><span title="Osnovne frekvence (print, pdf, word, excel)" class="sprites analysis_frequencys"></span></a></span></td><td class="anl_br anl_bb anl_ac anl_bck anl_variabla_line">Odgovori</td><td class="anl_br anl_bb anl_ac anl_bck anl_w70 anl_variabla_line">Frekvenca</td><td class="anl_br anl_bb anl_ac anl_bck anl_w70 anl_variabla_line">Odstotek</td><td class="anl_br anl_bb anl_ac anl_bck anl_w70 anl_variabla_line">Kumulativa</td></tr><tr <td class="anl_bl anl_ac anl_br gray">&nbsp;</td><td class="anl_br anl_bck_0_0"><div class="anl_user_text_more">900</div></td><td class="anl_ac anl_br anl_bck_0_0">1</td><td class="anl_ar anl_br anl_bck_0_0 anl_pr10">11.1%</td><td class="anl_ar anl_bck_0_0 anl_pr10">11.1%</td></tr><tr <td class="anl_bl anl_ac anl_br gray">&nbsp;</td><td class="anl_br anl_bck_0_1"><div class="anl_user_text_more">1000</div></td><td class="anl_ac anl_br anl_bck_0_1">1</td><td class="anl_ar anl_br anl_bck_0_1 anl_pr10">11.1%</td><td class="anl_ar anl_bck_0_1 anl_pr10">22.2%</td></tr><tr <td class="anl_bl anl_ac anl_br gray">&nbsp;</td><td class="anl_br anl_bck_0_0"><div class="anl_user_text_more">1300</div></td><td class="anl_ac anl_br anl_bck_0_0">3</td><td class="anl_ar anl_br anl_bck_0_0 anl_pr10">33.3%</td><td class="anl_ar anl_bck_0_0 anl_pr10">55.6%</td></tr><tr <td class="anl_bl anl_ac anl_br gray">&nbsp;</td><td class="anl_br anl_bck_0_1"><div class="anl_user_text_more">1500</div></td><td class="anl_ac anl_br anl_bck_0_1">1</td><td class="anl_ar anl_br anl_bck_0_1 anl_pr10">11.1%</td><td class="anl_ar anl_bck_0_1 anl_pr10">66.7%</td></tr><tr <td class="anl_bl anl_ac anl_br gray">&nbsp;</td><td class="anl_br anl_bck_0_0"><div class="anl_user_text_more">1600</div></td><td class="anl_ac anl_br anl_bck_0_0">1</td><td class="anl_ar anl_br anl_bck_0_0 anl_pr10">11.1%</td><td class="anl_ar anl_bck_0_0 anl_pr10">77.8%</td></tr><tr <td class="anl_bl anl_ac anl_br gray">&nbsp;</td><td class="anl_br anl_bck_0_1"><div class="anl_user_text_more">1700</div></td><td class="anl_ac anl_br anl_bck_0_1">1</td><td class="anl_ar anl_br anl_bck_0_1 anl_pr10">11.1%</td><td class="anl_ar anl_bck_0_1 anl_pr10">88.9%</td></tr><tr <td class="anl_bl anl_ac anl_br gray">&nbsp;</td><td class="anl_br anl_bck_0_0"><div class="anl_user_text_more">2000</div></td><td class="anl_ac anl_br anl_bck_0_0">1</td><td class="anl_ar anl_br anl_bck_0_0 anl_pr10">11.1%</td><td class="anl_ar anl_bck_0_0 anl_pr10">100.0%</td></tr><tr class="anl_bb"><td class="anl_bl anl_br anl_al gray anl_ti_20 anl_bck_text_1">Veljavni<span value="0" class="gray">&nbsp;(<span style="width: 12px; height: 12px" class="sprites plus_orange folder_plusminus"></span>) </span><span class="anl_gray displayNone">&nbsp;(<span style="width: 12px; height: 12px" class="sprites minus_orange folder_plusminus"></span>) </span></td><td class="anl_br anl_al anl_ita red anl_bck_text_1">Skupaj</td><td class="anl_ita red anl_br anl_ac anl_bck_text_1">9</td><td class="anl_ita red anl_br anl_ar anl_bck_text_1 anl_pr10">100.0%</td><td class="anl_ita red anl_ac anl_bck_text_1">&nbsp;</td></tr><tr class="anl_dash_red_bb displayNone"><td class="anl_bl anl_al anl_br gray anl_ti_20 anl_bck_text_1">Manjkajoči</td><td class="anl_br anl_ita red anl_bck_text_1">Skupaj<span class="printHide anl_ita anl_detail_percent">&nbsp;&nbsp;<a href="#single_missing_7"><span style="width: 12px; height: 12px" class="sprites plus_orange folder_plusminus"></span></a></span><span class="printHide anl_ita anl_detail_percent displayNone">&nbsp;&nbsp;<a href="#single_missing_7"><span style="width: 12px; height: 12px" class="sprites minus_orange folder_plusminus"></span></a></span><div class="floatRight anl_w50 anl_dash_bl anl_dash_bt anl_ac anl_detail_percent displayNone">100.0%</div><div class="floatRight anl_w30 anl_dash_bt anl_ac anl_detail_percent displayNone"></div></td><td class="anl_ac anl_br anl_detail_cnt anl_ita red anl_bck_text_1">0</td><td class="anl_ar anl_br anl_ita red anl_bck_text_1 anl_pr10">0.0%</td><td class="anl_ar anl_ita red anl_bck_text_1 anl_pr10">&nbsp;</td></tr><tr class="displayNone"><td class="anl_bl anl_ac anl_dash_bt anl_bb red anl_ita anl_bck_text_0">SKUPAJ</td><td class="anl_dash_bt anl_br anl_bb anl_bck_text_0">&nbsp;</td><td class="anl_ac anl_dash_bt anl_br anl_bb anl_ita red anl_bck_text_0">9</td><td class="anl_ar anl_dash_bt anl_br anl_bb anl_ita red anl_bck_text_0 anl_pr10">100.0%</td><td class="anl_ac anl_dash_bt anl_bb anl_ita red anl_bck_text_0">&nbsp;</td></tr></tbody></table><br><table class="anl_tbl anl_bt anl_br tbl_clps"><tbody><tr><td class="anl_bl anl_br anl_bb anl_ac anl_bck_freq_1 anl_w110"><span class="anl_variabla"><a href="#">Q3</a></span></td><td colspan="5" class="anl_br anl_bb anl_al anl_bck_freq_1"><span class="anl_variabla_label">Država</span></td></tr><tr><td class="anl_bl anl_br anl_bb anl_ac anl_bck anl_w110"><span class="taCenter printHide iconHide"><a href="#"><span title="Sumarne frekvence (print, pdf, word, excel)" class="sprites analysis_sums_gray"></span></a><a href="#"><span title="Dopolnjene frekvence (print, pdf, word, excel)" class="sprites analysis_sums_new_gray"></span></a><a href="#"><span title="Opisne statistike (print, pdf, word, excel)" class="sprites analysis_statistic_gray"></span></a><a href="#"><span title="Osnovne frekvence (print, pdf, word, excel)" class="sprites analysis_frequencys"></span></a></span></td><td class="anl_br anl_bb anl_ac anl_bck anl_variabla_line">Odgovori</td><td class="anl_br anl_bb anl_ac anl_bck anl_w70 anl_variabla_line">Frekvenca</td><td class="anl_br anl_bb anl_ac anl_bck anl_w70 anl_variabla_line">Odstotek</td><td class="anl_br anl_bb anl_ac anl_bck anl_w70 anl_variabla_line">Veljavni</td><td class="anl_br anl_bb anl_ac anl_bck anl_w70 anl_variabla_line">Kumulativa</td></tr><tr><td class="anl_bl anl_ac anl_br gray">&nbsp;</td><td class="anl_br anl_bck_0_0"><div class="anl_user_text_more">1</div> (Slovenija)</td><td class="anl_ac anl_br anl_bck_0_0">2</td><td class="anl_ar anl_br anl_bck_0_0 anl_pr10">22.2%</td><td class="anl_ar anl_br anl_bck_0_0 anl_pr10">22.2%</td><td class="anl_ar anl_bck_0_0 anl_pr10">22.2%</td></tr><tr><td class="anl_bl anl_ac anl_br gray">&nbsp;</td><td class="anl_br anl_bck_0_1"><div class="anl_user_text_more">2</div> (Hrvaška)</td><td class="anl_ac anl_br anl_bck_0_1">2</td><td class="anl_ar anl_br anl_bck_0_1 anl_pr10">22.2%</td><td class="anl_ar anl_br anl_bck_0_1 anl_pr10">22.2%</td><td class="anl_ar anl_bck_0_1 anl_pr10">44.4%</td></tr><tr><td class="anl_bl anl_ac anl_br gray">&nbsp;</td><td class="anl_br anl_bck_0_0"><div class="anl_user_text_more">3</div> (Avstrija)</td><td class="anl_ac anl_br anl_bck_0_0">2</td><td class="anl_ar anl_br anl_bck_0_0 anl_pr10">22.2%</td><td class="anl_ar anl_br anl_bck_0_0 anl_pr10">22.2%</td><td class="anl_ar anl_bck_0_0 anl_pr10">66.7%</td></tr><tr><td class="anl_bl anl_ac anl_br gray">&nbsp;</td><td class="anl_br anl_bck_0_1"><div class="anl_user_text_more">4</div> (Italija)</td><td class="anl_ac anl_br anl_bck_0_1">1</td><td class="anl_ar anl_br anl_bck_0_1 anl_pr10">11.1%</td><td class="anl_ar anl_br anl_bck_0_1 anl_pr10">11.1%</td><td class="anl_ar anl_bck_0_1 anl_pr10">77.8%</td></tr><tr><td class="anl_bl anl_ac anl_br gray">&nbsp;</td><td class="anl_br anl_bck_0_0"><div class="anl_user_text_more">5</div> (Madžarska)</td><td class="anl_ac anl_br anl_bck_0_0">2</td><td class="anl_ar anl_br anl_bck_0_0 anl_pr10">22.2%</td><td class="anl_ar anl_br anl_bck_0_0 anl_pr10">22.2%</td><td class="anl_ar anl_bck_0_0 anl_pr10">100.0%</td></tr><tr class="anl_bb"><td class="anl_bl anl_br anl_al gray anl_ti_20 anl_bck_text_1">Veljavni<span value="0" class="gray">&nbsp;(<span style="width: 12px; height: 12px" class="sprites plus_orange folder_plusminus"></span>) </span><span class="anl_gray displayNone">&nbsp;(<span style="width: 12px; height: 12px" class="sprites minus_orange folder_plusminus"></span>) </span></td><td class="anl_br anl_al anl_ita red anl_bck_text_1">Skupaj</td><td class="anl_ita red anl_br anl_ac anl_bck_text_1">9</td><td class="anl_ita red anl_br anl_ar anl_bck_text_1 anl_pr10">100.0%</td><td class="anl_ita red anl_br anl_ar anl_bck_text_1 anl_pr10">100.0%</td><td class="anl_ita red anl_ac anl_bck_text_1">&nbsp;</td></tr><tr class="anl_dash_red_bb displayNone"><td class="anl_bl anl_al anl_br gray anl_ti_20 anl_bck_text_1">Manjkajoči</td><td class="anl_br anl_ita red anl_bck_text_1">Skupaj<span class="printHide anl_ita anl_detail_percent">&nbsp;&nbsp;<a href="#single_missing_8"><span style="width: 12px; height: 12px" class="sprites plus_orange folder_plusminus"></span></a></span><span class="printHide anl_ita anl_detail_percent displayNone">&nbsp;&nbsp;<a href="#single_missing_8"><span style="width: 12px; height: 12px" class="sprites minus_orange folder_plusminus"></span></a></span><div class="floatRight anl_w50 anl_dash_bl anl_dash_bt anl_ac anl_detail_percent displayNone">100.0%</div><div class="floatRight anl_w30 anl_dash_bt anl_ac anl_detail_percent displayNone"></div></td><td class="anl_ac anl_br anl_detail_cnt anl_ita red anl_bck_text_1">0</td><td class="anl_ar anl_br anl_ita red anl_bck_text_1 anl_pr10">0.0%</td><td class="anl_ar anl_br anl_ita red anl_bck_text_1 anl_pr10"><span>&nbsp;</span></td><td class="anl_ar anl_ita red anl_bck_text_1 anl_pr10">&nbsp;</td></tr><tr class="displayNone"><td class="anl_bl anl_ac anl_dash_bt anl_bb red anl_ita anl_bck_text_0">SKUPAJ</td><td class="anl_dash_bt anl_br anl_bb anl_bck_text_0">&nbsp;</td><td class="anl_ac anl_dash_bt anl_br anl_bb anl_ita red anl_bck_text_0">9</td><td class="anl_ar anl_dash_bt anl_br anl_bb anl_ita red anl_bck_text_0 anl_pr10">100.0%</td><td class="anl_ar anl_dash_bt anl_br anl_bb anl_ita red anl_bck_text_0 anl_pr10">&nbsp;</td><td class="anl_ac anl_dash_bt anl_bb anl_ita red anl_bck_text_0">&nbsp;</td></tr></tbody></table> \ No newline at end of file
diff --git a/admin/survey/classes/staticHtml/AnalizaPredogledMultitabele.html b/admin/survey/classes/staticHtml/AnalizaPredogledMultitabele.html
deleted file mode 100644
index ed1252c..0000000
--- a/admin/survey/classes/staticHtml/AnalizaPredogledMultitabele.html
+++ /dev/null
@@ -1,330 +0,0 @@
-<!-- <br>Χ<sup>2</sup> = 4.500--><table gd2="undefined" sp2="149_0" sq2="6" gd1="undefined" sp1="153_0"
- sq1="8" style="padding: 0px; margin: 0px; margin-top: 10px;"
- class="anl_tbl_crosstab fullWidth fullHeight">
- <colgroup>
- <col style="width: auto; min-width: 100px;">
- <col style="width: auto; min-width: 100px;">
- <col style="width: 12%;">
- <col style="width: 12%;">
- <col style="width: 12%;">
- <col style="width: 12%;">
- <col style="width: 12%;">
- <col style="width: 12%;">
- </colgroup>
- <tbody>
- <tr>
- <td rowspan="2" colspan="2">&nbsp;</td>
- <td colspan="6" class="anl_bt anl_bl anl_br anl_ac rsdl_bck_title ctbCll"><span
- class="anl_variabla"><a title="Predogled vprašanja" href="/">Spol&nbsp;(Q2)</a></span>
- </td>
- </tr>
- <tr>
- <td colspan="3" class="anl_bt anl_bl anl_ac rsdl_bck_variable1 ctbCll">Moški<br>
- ( 1 )
- </td>
- <td colspan="3" class="anl_bt anl_bl anl_br anl_ac rsdl_bck_variable1 ctbCll">Ženska<br>
- ( 2 )
- </td>
- </tr>
- <tr>
- <td rowspan="2" colspan="2">&nbsp;</td>
- <td colspan="3" class="anl_bt anl_bl anl_ac rsdl_bck_title ctbCll"><span
- class="anl_variabla"><a title="Predogled vprašanja" href="/">Starost&nbsp;(Q3)</a></span>
- </td>
- <td colspan="3" class="anl_bt anl_bl anl_br anl_ac rsdl_bck_title ctbCll"><span
- class="anl_variabla"><a title="Predogled vprašanja" href="/">Starost&nbsp;(Q3)</a></span>
- </td>
- </tr>
- <tr>
- <td class="anl_bt anl_bl anl_ac rsdl_bck_variable1 ctbCll">pod 20<br>
- ( 1 )
- </td>
- <td class="anl_bt anl_bl anl_ac rsdl_bck_variable1 ctbCll">20 - 40<br>
- ( 2 )
- </td>
- <td class="anl_bt anl_bl anl_ac rsdl_bck_variable1 ctbCll">nad 40<br>
- ( 3 )
- </td>
- <td class="anl_bt anl_bl anl_ac rsdl_bck_variable1 ctbCll">pod 20<br>
- ( 1 )
- </td>
- <td class="anl_bt anl_bl anl_ac rsdl_bck_variable1 ctbCll">20 - 40<br>
- ( 2 )
- </td>
- <td class="anl_bt anl_bl anl_br anl_ac rsdl_bck_variable1 ctbCll">nad 40<br>
- ( 3 )
- </td>
- </tr>
-
-
- <tr>
- <td rowspan="5" class="anl_bt anl_bb anl_bl anl_ac rsdl_bck_title ctbCll"><span
- class="anl_variabla"><a title="Predogled vprašanja" href="/">Država&nbsp;(Q1)</a></span>
- </td>
-
- <td class="anl_bt anl_bl anl_ac rsdl_bck_variable1 ctbCll">Slovenija<br>
- ( 1 )
- </td>
- <td v2="" v1="" n2="Moški" n1="Slovenija" k2="1" k1="1"
- class="ct_in_cell"><table class="ct_in_tbl">
- <tbody>
- <tr>
- <td class="anl_ac rsdl_bck0 ctbCll">1</td>
- </tr>
- </tbody>
- </table></td>
- <td v2="" v1="" n2="Moški" n1="Hrvaška" k2="1" k1="2"
- class="ct_in_cell"><table class="ct_in_tbl">
- <tbody>
- <tr>
- <td class="anl_ac rsdl_bck0 ctbCll">0</td>
- </tr>
- </tbody>
- </table></td>
- <td v2="" v1="" n2="Moški" n1="Avstrija" k2="1" k1="3"
- class="ct_in_cell"><table class="ct_in_tbl">
- <tbody>
- <tr>
- <td class="anl_ac rsdl_bck0 ctbCll">1</td>
- </tr>
- </tbody>
- </table></td>
- <td v2="" v1="" n2="Moški" n1="Italija" k2="1" k1="4"
- class="ct_in_cell"><table class="ct_in_tbl">
- <tbody>
- <tr>
- <td class="anl_ac rsdl_bck0 ctbCll">1</td>
- </tr>
- </tbody>
- </table></td>
- <td v2="" v1="" n2="Moški" n1="Madžarska" k2="1" k1="5"
- class="ct_in_cell"><table class="ct_in_tbl">
- <tbody>
- <tr>
- <td class="anl_ac rsdl_bck0 ctbCll">0</td>
- </tr>
- </tbody>
- </table></td>
- <td v2="" v1="" n2="Moški" n1="Madžarska" k2="1" k1="5"
- class="ct_in_cell anl_br"><table class="ct_in_tbl">
- <tbody>
- <tr>
- <td class="anl_ac rsdl_bck0 ctbCll">0</td>
- </tr>
- </tbody>
- </table></td>
- </tr>
- <tr>
- <td class="anl_bt anl_bl anl_ac rsdl_bck_variable1 ctbCll">Hrvaška<br>
- ( 2 )
- </td>
- <td v2="" v1="" n2="Moški" n1="Slovenija" k2="1" k1="1"
- class="ct_in_cell"><table class="ct_in_tbl">
- <tbody>
- <tr>
- <td class="anl_ac rsdl_bck0 ctbCll">4</td>
- </tr>
- </tbody>
- </table></td>
- <td v2="" v1="" n2="Moški" n1="Hrvaška" k2="1" k1="2"
- class="ct_in_cell"><table class="ct_in_tbl">
- <tbody>
- <tr>
- <td class="anl_ac rsdl_bck0 ctbCll">1</td>
- </tr>
- </tbody>
- </table></td>
- <td v2="" v1="" n2="Moški" n1="Avstrija" k2="1" k1="3"
- class="ct_in_cell"><table class="ct_in_tbl">
- <tbody>
- <tr>
- <td class="anl_ac rsdl_bck0 ctbCll">1</td>
- </tr>
- </tbody>
- </table></td>
- <td v2="" v1="" n2="Moški" n1="Italija" k2="1" k1="4"
- class="ct_in_cell"><table class="ct_in_tbl">
- <tbody>
- <tr>
- <td class="anl_ac rsdl_bck0 ctbCll">2</td>
- </tr>
- </tbody>
- </table></td>
- <td v2="" v1="" n2="Moški" n1="Madžarska" k2="1" k1="5"
- class="ct_in_cell"><table class="ct_in_tbl">
- <tbody>
- <tr>
- <td class="anl_ac rsdl_bck0 ctbCll">0</td>
- </tr>
- </tbody>
- </table></td>
- <td v2="" v1="" n2="Moški" n1="Madžarska" k2="1" k1="5"
- class="ct_in_cell anl_br"><table class="ct_in_tbl">
- <tbody>
- <tr>
- <td class="anl_ac rsdl_bck0 ctbCll">0</td>
- </tr>
- </tbody>
- </table></td>
- </tr>
- <tr>
- <td class="anl_bt anl_bl anl_ac rsdl_bck_variable1 ctbCll">Avstrija<br>
- ( 3 )
- </td>
- <td v2="" v1="" n2="Moški" n1="Slovenija" k2="1" k1="1"
- class="ct_in_cell"><table class="ct_in_tbl">
- <tbody>
- <tr>
- <td class="anl_ac rsdl_bck0 ctbCll">1</td>
- </tr>
- </tbody>
- </table></td>
- <td v2="" v1="" n2="Moški" n1="Hrvaška" k2="1" k1="2"
- class="ct_in_cell"><table class="ct_in_tbl">
- <tbody>
- <tr>
- <td class="anl_ac rsdl_bck0 ctbCll">0</td>
- </tr>
- </tbody>
- </table></td>
- <td v2="" v1="" n2="Moški" n1="Avstrija" k2="1" k1="3"
- class="ct_in_cell"><table class="ct_in_tbl">
- <tbody>
- <tr>
- <td class="anl_ac rsdl_bck0 ctbCll">0</td>
- </tr>
- </tbody>
- </table></td>
- <td v2="" v1="" n2="Moški" n1="Italija" k2="1" k1="4"
- class="ct_in_cell"><table class="ct_in_tbl">
- <tbody>
- <tr>
- <td class="anl_ac rsdl_bck0 ctbCll">0</td>
- </tr>
- </tbody>
- </table></td>
- <td v2="" v1="" n2="Moški" n1="Madžarska" k2="1" k1="5"
- class="ct_in_cell"><table class="ct_in_tbl">
- <tbody>
- <tr>
- <td class="anl_ac rsdl_bck0 ctbCll">2</td>
- </tr>
- </tbody>
- </table></td>
- <td v2="" v1="" n2="Moški" n1="Madžarska" k2="1" k1="5"
- class="ct_in_cell anl_br"><table class="ct_in_tbl">
- <tbody>
- <tr>
- <td class="anl_ac rsdl_bck0 ctbCll">3</td>
- </tr>
- </tbody>
- </table></td>
- </tr>
- <tr>
- <td class="anl_bt anl_bl anl_ac rsdl_bck_variable1 ctbCll">Italija<br>
- ( 4 )
- </td>
- <td v2="" v1="" n2="Moški" n1="Slovenija" k2="1" k1="1"
- class="ct_in_cell"><table class="ct_in_tbl">
- <tbody>
- <tr>
- <td class="anl_ac rsdl_bck0 ctbCll">0</td>
- </tr>
- </tbody>
- </table></td>
- <td v2="" v1="" n2="Moški" n1="Hrvaška" k2="1" k1="2"
- class="ct_in_cell"><table class="ct_in_tbl">
- <tbody>
- <tr>
- <td class="anl_ac rsdl_bck0 ctbCll">0</td>
- </tr>
- </tbody>
- </table></td>
- <td v2="" v1="" n2="Moški" n1="Avstrija" k2="1" k1="3"
- class="ct_in_cell"><table class="ct_in_tbl">
- <tbody>
- <tr>
- <td class="anl_ac rsdl_bck0 ctbCll">0</td>
- </tr>
- </tbody>
- </table></td>
- <td v2="" v1="" n2="Moški" n1="Italija" k2="1" k1="4"
- class="ct_in_cell"><table class="ct_in_tbl">
- <tbody>
- <tr>
- <td class="anl_ac rsdl_bck0 ctbCll">0</td>
- </tr>
- </tbody>
- </table></td>
- <td v2="" v1="" n2="Moški" n1="Madžarska" k2="1" k1="5"
- class="ct_in_cell"><table class="ct_in_tbl">
- <tbody>
- <tr>
- <td class="anl_ac rsdl_bck0 ctbCll">0</td>
- </tr>
- </tbody>
- </table></td>
- <td v2="" v1="" n2="Moški" n1="Madžarska" k2="1" k1="5"
- class="ct_in_cell anl_br"><table class="ct_in_tbl">
- <tbody>
- <tr>
- <td class="anl_ac rsdl_bck0 ctbCll">0</td>
- </tr>
- </tbody>
- </table></td>
- </tr>
- <tr>
- <td class="anl_bt anl_bl anl_ac rsdl_bck_variable1 ctbCll">Madžarska<br>
- ( 5 )
- </td>
- <td v2="" v1="" n2="Moški" n1="Slovenija" k2="1" k1="1"
- class="ct_in_cell anl_bb"><table class="ct_in_tbl">
- <tbody>
- <tr>
- <td class="anl_ac rsdl_bck0 ctbCll">0</td>
- </tr>
- </tbody>
- </table></td>
- <td v2="" v1="" n2="Moški" n1="Hrvaška" k2="1" k1="2"
- class="ct_in_cell anl_bb"><table class="ct_in_tbl">
- <tbody>
- <tr>
- <td class="anl_ac rsdl_bck0 ctbCll">2</td>
- </tr>
- </tbody>
- </table></td>
- <td v2="" v1="" n2="Moški" n1="Avstrija" k2="1" k1="3"
- class="ct_in_cell anl_bb"><table class="ct_in_tbl">
- <tbody>
- <tr>
- <td class="anl_ac rsdl_bck0 ctbCll">1</td>
- </tr>
- </tbody>
- </table></td>
- <td v2="" v1="" n2="Moški" n1="Italija" k2="1" k1="4"
- class="ct_in_cell anl_bb"><table class="ct_in_tbl">
- <tbody>
- <tr>
- <td class="anl_ac rsdl_bck0 ctbCll">0</td>
- </tr>
- </tbody>
- </table></td>
- <td v2="" v1="" n2="Moški" n1="Madžarska" k2="1" k1="5"
- class="ct_in_cell anl_bb"><table class="ct_in_tbl">
- <tbody>
- <tr>
- <td class="anl_ac rsdl_bck0 ctbCll">0</td>
- </tr>
- </tbody>
- </table></td>
- <td v2="" v1="" n2="Moški" n1="Madžarska" k2="1" k1="5"
- class="ct_in_cell anl_br anl_bb"><table class="ct_in_tbl">
- <tbody>
- <tr>
- <td class="anl_ac rsdl_bck0 ctbCll">0</td>
- </tr>
- </tbody>
- </table></td>
- </tr>
- </tbody>
- </table>
diff --git a/admin/survey/classes/staticHtml/AnalizaPredogledMultitabele.min.html b/admin/survey/classes/staticHtml/AnalizaPredogledMultitabele.min.html
deleted file mode 100644
index 801bc2c..0000000
--- a/admin/survey/classes/staticHtml/AnalizaPredogledMultitabele.min.html
+++ /dev/null
@@ -1,2 +0,0 @@
-
-<table gd2="undefined" sp2="149_0" sq2="6" gd1="undefined" sp1="153_0" sq1="8" style="padding: 0px; margin: 0px; margin-top: 10px;" class="anl_tbl_crosstab fullWidth fullHeight"><colgroup><col style="width: auto; min-width: 100px;"><col style="width: auto; min-width: 100px;"><col style="width: 12%;"><col style="width: 12%;"><col style="width: 12%;"><col style="width: 12%;"><col style="width: 12%;"><col style="width: 12%;"></colgroup><tbody><tr><td rowspan="2" colspan="2">&nbsp;</td><td colspan="6" class="anl_bt anl_bl anl_br anl_ac rsdl_bck_title ctbCll"><span class="anl_variabla"><a title="Predogled vprašanja" href="/">Spol&nbsp;(Q2)</a></span></td></tr><tr><td colspan="3" class="anl_bt anl_bl anl_ac rsdl_bck_variable1 ctbCll">Moški<br> ( 1 ) </td><td colspan="3" class="anl_bt anl_bl anl_br anl_ac rsdl_bck_variable1 ctbCll">Ženska<br> ( 2 ) </td></tr><tr><td rowspan="2" colspan="2">&nbsp;</td><td colspan="3" class="anl_bt anl_bl anl_ac rsdl_bck_title ctbCll"><span class="anl_variabla"><a title="Predogled vprašanja" href="/">Starost&nbsp;(Q3)</a></span></td><td colspan="3" class="anl_bt anl_bl anl_br anl_ac rsdl_bck_title ctbCll"><span class="anl_variabla"><a title="Predogled vprašanja" href="/">Starost&nbsp;(Q3)</a></span></td></tr><tr><td class="anl_bt anl_bl anl_ac rsdl_bck_variable1 ctbCll">pod 20<br> ( 1 ) </td><td class="anl_bt anl_bl anl_ac rsdl_bck_variable1 ctbCll">20 - 40<br> ( 2 ) </td><td class="anl_bt anl_bl anl_ac rsdl_bck_variable1 ctbCll">nad 40<br> ( 3 ) </td><td class="anl_bt anl_bl anl_ac rsdl_bck_variable1 ctbCll">pod 20<br> ( 1 ) </td><td class="anl_bt anl_bl anl_ac rsdl_bck_variable1 ctbCll">20 - 40<br> ( 2 ) </td><td class="anl_bt anl_bl anl_br anl_ac rsdl_bck_variable1 ctbCll">nad 40<br> ( 3 ) </td></tr><tr><td rowspan="5" class="anl_bt anl_bb anl_bl anl_ac rsdl_bck_title ctbCll"><span class="anl_variabla"><a title="Predogled vprašanja" href="/">Država&nbsp;(Q1)</a></span></td><td class="anl_bt anl_bl anl_ac rsdl_bck_variable1 ctbCll">Slovenija<br> ( 1 ) </td><td v2="" v1="" n2="Moški" n1="Slovenija" k2="1" k1="1" class="ct_in_cell"><table class="ct_in_tbl"><tbody><tr><td class="anl_ac rsdl_bck0 ctbCll">1</td></tr></tbody></table></td><td v2="" v1="" n2="Moški" n1="Hrvaška" k2="1" k1="2" class="ct_in_cell"><table class="ct_in_tbl"><tbody><tr><td class="anl_ac rsdl_bck0 ctbCll">0</td></tr></tbody></table></td><td v2="" v1="" n2="Moški" n1="Avstrija" k2="1" k1="3" class="ct_in_cell"><table class="ct_in_tbl"><tbody><tr><td class="anl_ac rsdl_bck0 ctbCll">1</td></tr></tbody></table></td><td v2="" v1="" n2="Moški" n1="Italija" k2="1" k1="4" class="ct_in_cell"><table class="ct_in_tbl"><tbody><tr><td class="anl_ac rsdl_bck0 ctbCll">1</td></tr></tbody></table></td><td v2="" v1="" n2="Moški" n1="Madžarska" k2="1" k1="5" class="ct_in_cell"><table class="ct_in_tbl"><tbody><tr><td class="anl_ac rsdl_bck0 ctbCll">0</td></tr></tbody></table></td><td v2="" v1="" n2="Moški" n1="Madžarska" k2="1" k1="5" class="ct_in_cell anl_br"><table class="ct_in_tbl"><tbody><tr><td class="anl_ac rsdl_bck0 ctbCll">0</td></tr></tbody></table></td></tr><tr><td class="anl_bt anl_bl anl_ac rsdl_bck_variable1 ctbCll">Hrvaška<br> ( 2 ) </td><td v2="" v1="" n2="Moški" n1="Slovenija" k2="1" k1="1" class="ct_in_cell"><table class="ct_in_tbl"><tbody><tr><td class="anl_ac rsdl_bck0 ctbCll">4</td></tr></tbody></table></td><td v2="" v1="" n2="Moški" n1="Hrvaška" k2="1" k1="2" class="ct_in_cell"><table class="ct_in_tbl"><tbody><tr><td class="anl_ac rsdl_bck0 ctbCll">1</td></tr></tbody></table></td><td v2="" v1="" n2="Moški" n1="Avstrija" k2="1" k1="3" class="ct_in_cell"><table class="ct_in_tbl"><tbody><tr><td class="anl_ac rsdl_bck0 ctbCll">1</td></tr></tbody></table></td><td v2="" v1="" n2="Moški" n1="Italija" k2="1" k1="4" class="ct_in_cell"><table class="ct_in_tbl"><tbody><tr><td class="anl_ac rsdl_bck0 ctbCll">2</td></tr></tbody></table></td><td v2="" v1="" n2="Moški" n1="Madžarska" k2="1" k1="5" class="ct_in_cell"><table class="ct_in_tbl"><tbody><tr><td class="anl_ac rsdl_bck0 ctbCll">0</td></tr></tbody></table></td><td v2="" v1="" n2="Moški" n1="Madžarska" k2="1" k1="5" class="ct_in_cell anl_br"><table class="ct_in_tbl"><tbody><tr><td class="anl_ac rsdl_bck0 ctbCll">0</td></tr></tbody></table></td></tr><tr><td class="anl_bt anl_bl anl_ac rsdl_bck_variable1 ctbCll">Avstrija<br> ( 3 ) </td><td v2="" v1="" n2="Moški" n1="Slovenija" k2="1" k1="1" class="ct_in_cell"><table class="ct_in_tbl"><tbody><tr><td class="anl_ac rsdl_bck0 ctbCll">1</td></tr></tbody></table></td><td v2="" v1="" n2="Moški" n1="Hrvaška" k2="1" k1="2" class="ct_in_cell"><table class="ct_in_tbl"><tbody><tr><td class="anl_ac rsdl_bck0 ctbCll">0</td></tr></tbody></table></td><td v2="" v1="" n2="Moški" n1="Avstrija" k2="1" k1="3" class="ct_in_cell"><table class="ct_in_tbl"><tbody><tr><td class="anl_ac rsdl_bck0 ctbCll">0</td></tr></tbody></table></td><td v2="" v1="" n2="Moški" n1="Italija" k2="1" k1="4" class="ct_in_cell"><table class="ct_in_tbl"><tbody><tr><td class="anl_ac rsdl_bck0 ctbCll">0</td></tr></tbody></table></td><td v2="" v1="" n2="Moški" n1="Madžarska" k2="1" k1="5" class="ct_in_cell"><table class="ct_in_tbl"><tbody><tr><td class="anl_ac rsdl_bck0 ctbCll">2</td></tr></tbody></table></td><td v2="" v1="" n2="Moški" n1="Madžarska" k2="1" k1="5" class="ct_in_cell anl_br"><table class="ct_in_tbl"><tbody><tr><td class="anl_ac rsdl_bck0 ctbCll">3</td></tr></tbody></table></td></tr><tr><td class="anl_bt anl_bl anl_ac rsdl_bck_variable1 ctbCll">Italija<br> ( 4 ) </td><td v2="" v1="" n2="Moški" n1="Slovenija" k2="1" k1="1" class="ct_in_cell"><table class="ct_in_tbl"><tbody><tr><td class="anl_ac rsdl_bck0 ctbCll">0</td></tr></tbody></table></td><td v2="" v1="" n2="Moški" n1="Hrvaška" k2="1" k1="2" class="ct_in_cell"><table class="ct_in_tbl"><tbody><tr><td class="anl_ac rsdl_bck0 ctbCll">0</td></tr></tbody></table></td><td v2="" v1="" n2="Moški" n1="Avstrija" k2="1" k1="3" class="ct_in_cell"><table class="ct_in_tbl"><tbody><tr><td class="anl_ac rsdl_bck0 ctbCll">0</td></tr></tbody></table></td><td v2="" v1="" n2="Moški" n1="Italija" k2="1" k1="4" class="ct_in_cell"><table class="ct_in_tbl"><tbody><tr><td class="anl_ac rsdl_bck0 ctbCll">0</td></tr></tbody></table></td><td v2="" v1="" n2="Moški" n1="Madžarska" k2="1" k1="5" class="ct_in_cell"><table class="ct_in_tbl"><tbody><tr><td class="anl_ac rsdl_bck0 ctbCll">0</td></tr></tbody></table></td><td v2="" v1="" n2="Moški" n1="Madžarska" k2="1" k1="5" class="ct_in_cell anl_br"><table class="ct_in_tbl"><tbody><tr><td class="anl_ac rsdl_bck0 ctbCll">0</td></tr></tbody></table></td></tr><tr><td class="anl_bt anl_bl anl_ac rsdl_bck_variable1 ctbCll">Madžarska<br> ( 5 ) </td><td v2="" v1="" n2="Moški" n1="Slovenija" k2="1" k1="1" class="ct_in_cell anl_bb"><table class="ct_in_tbl"><tbody><tr><td class="anl_ac rsdl_bck0 ctbCll">0</td></tr></tbody></table></td><td v2="" v1="" n2="Moški" n1="Hrvaška" k2="1" k1="2" class="ct_in_cell anl_bb"><table class="ct_in_tbl"><tbody><tr><td class="anl_ac rsdl_bck0 ctbCll">2</td></tr></tbody></table></td><td v2="" v1="" n2="Moški" n1="Avstrija" k2="1" k1="3" class="ct_in_cell anl_bb"><table class="ct_in_tbl"><tbody><tr><td class="anl_ac rsdl_bck0 ctbCll">1</td></tr></tbody></table></td><td v2="" v1="" n2="Moški" n1="Italija" k2="1" k1="4" class="ct_in_cell anl_bb"><table class="ct_in_tbl"><tbody><tr><td class="anl_ac rsdl_bck0 ctbCll">0</td></tr></tbody></table></td><td v2="" v1="" n2="Moški" n1="Madžarska" k2="1" k1="5" class="ct_in_cell anl_bb"><table class="ct_in_tbl"><tbody><tr><td class="anl_ac rsdl_bck0 ctbCll">0</td></tr></tbody></table></td><td v2="" v1="" n2="Moški" n1="Madžarska" k2="1" k1="5" class="ct_in_cell anl_br anl_bb"><table class="ct_in_tbl"><tbody><tr><td class="anl_ac rsdl_bck0 ctbCll">0</td></tr></tbody></table></td></tr></tbody></table> \ No newline at end of file
diff --git a/admin/survey/classes/staticHtml/AnalizaPredogledNeodgovori.html b/admin/survey/classes/staticHtml/AnalizaPredogledNeodgovori.html
deleted file mode 100644
index bb3736a..0000000
--- a/admin/survey/classes/staticHtml/AnalizaPredogledNeodgovori.html
+++ /dev/null
@@ -1,108 +0,0 @@
- <table class="anl_tbl anl_ba">
- <tbody>
- <tr>
- <td class="anl_br anl_ac anl_bck anl_variabla_line anl_bb anl_w70">Variabla<span></span></td>
- <td class="anl_br anl_ac anl_bck anl_variabla_line anl_bb">Vprašanje<span></span></td>
- <td class="anl_br anl_ac anl_bck anl_variabla_line anl_bb">Veljavni<span></span></td>
- <td class="anl_br anl_ac anl_bck anl_variabla_line anl_bb">-1 (Ni odgovoril)<span></span></td>
- <td class="anl_br anl_ac anl_bck anl_variabla_line anl_bb">-2 (Preskok (if))<span></span></td>
- <td class="anl_br anl_ac anl_bck anl_variabla_line anl_bb">-3 (Prekinjeno)<span></span></td>
- <td class="anl_br anl_ac anl_bck anl_variabla_line anl_bb">-4 (Naknadno vprasanje)<span></span></td>
- <td class="anl_br anl_ac anl_bck anl_variabla_line anl_bb">-5 (Prazna enota)<span></span></td>
- <td class="anl_br anl_ac anl_bck anl_variabla_line anl_bb">-97 (Neustrezno)<span></span></td>
- <td class="anl_br anl_ac anl_bck anl_variabla_line anl_bb">-98 (Zavrnil)<span></span></td>
- <td class="anl_br anl_ac anl_bck anl_variabla_line anl_bb">-99 (Ne vem)<span></span></td>
- <td class="anl_br anl_ac anl_bck anl_variabla_line anl_bb">Ustrezni<span></span></td>
- <td class="anl_br anl_ac anl_bck anl_variabla_line anl_bb">Vse enote<span></span></td>
- <td class="anl_br anl_ac anl_bck anl_variabla_line anl_bb">NS<span></span></td>
- </tr>
-
-
- <tr>
- <td rowspan="2" class=" anl_bck_desc_1 anl_ac anl_br anl_bt"><span class="anl_variabla"><a href="#">Q1</a></span></td>
- <td rowspan="2" class=" anl_bck_desc_1 anl_br anl_bt">Spol</td>
- <td class=" anl_bck_desc_1 anl_br anl_ac anl_bt">10</td>
- <td class=" anl_bck_desc_1 anl_br anl_ac anl_bt">34</td>
- <td class=" anl_bck_desc_1 anl_br anl_ac anl_bt">0</td>
- <td class=" anl_bck_desc_1 anl_br anl_ac anl_bt">0</td>
- <td class=" anl_bck_desc_1 anl_br anl_ac anl_bt">0</td>
- <td class=" anl_bck_desc_1 anl_br anl_ac anl_bt">0</td>
- <td class=" anl_bck_desc_1 anl_br anl_ac anl_bt">0</td>
- <td class=" anl_bck_desc_1 anl_br anl_ac anl_bt">0</td>
- <td class=" anl_bck_desc_1 anl_br anl_ac anl_bt">0</td>
- <td rowspan="2" class=" anl_bck_desc_1 anl_br anl_ac anl_bt">44</td>
- <td rowspan="2" class=" anl_bck_desc_1 anl_br anl_ac anl_bt">53</td>
- <td rowspan="2" class=" anl_bck_desc_1 anl_br anl_ac anl_bt">0.8</td>
- </tr>
- <tr>
- <td class=" anl_bck_desc_1 anl_br anl_ac anl_bt">23%</td>
- <td class=" anl_bck_desc_1 anl_br anl_ac anl_bt">77%</td>
- <td class=" anl_bck_desc_1 anl_br anl_ac anl_bt">0%</td>
- <td class=" anl_bck_desc_1 anl_br anl_ac anl_bt">0%</td>
- <td class=" anl_bck_desc_1 anl_br anl_ac anl_bt">0%</td>
- <td class=" anl_bck_desc_1 anl_br anl_ac anl_bt">0%</td>
- <td class=" anl_bck_desc_1 anl_br anl_ac anl_bt">0%</td>
- <td class=" anl_bck_desc_1 anl_br anl_ac anl_bt">0%</td>
- <td class=" anl_bck_desc_1 anl_br anl_ac anl_bt">0%</td>
- </tr>
-
-
- <tr>
- <td rowspan="2" class=" anl_bck_desc_1 anl_ac anl_br anl_bt"><span class="anl_variabla"><a href="#">Q2</a></span></td>
- <td rowspan="2" class=" anl_bck_desc_1 anl_br anl_bt">Dohodek</td>
- <td class=" anl_bck_desc_1 anl_br anl_ac anl_bt">15</td>
- <td class=" anl_bck_desc_1 anl_br anl_ac anl_bt">29</td>
- <td class=" anl_bck_desc_1 anl_br anl_ac anl_bt">0</td>
- <td class=" anl_bck_desc_1 anl_br anl_ac anl_bt">0</td>
- <td class=" anl_bck_desc_1 anl_br anl_ac anl_bt">0</td>
- <td class=" anl_bck_desc_1 anl_br anl_ac anl_bt">0</td>
- <td class=" anl_bck_desc_1 anl_br anl_ac anl_bt">0</td>
- <td class=" anl_bck_desc_1 anl_br anl_ac anl_bt">0</td>
- <td class=" anl_bck_desc_1 anl_br anl_ac anl_bt">0</td>
- <td rowspan="2" class=" anl_bck_desc_1 anl_br anl_ac anl_bt">44</td>
- <td rowspan="2" class=" anl_bck_desc_1 anl_br anl_ac anl_bt">53</td>
- <td rowspan="2" class=" anl_bck_desc_1 anl_br anl_ac anl_bt">0.7</td>
- </tr>
- <tr>
- <td class=" anl_bck_desc_1 anl_br anl_ac anl_bt">34%</td>
- <td class=" anl_bck_desc_1 anl_br anl_ac anl_bt">66%</td>
- <td class=" anl_bck_desc_1 anl_br anl_ac anl_bt">0%</td>
- <td class=" anl_bck_desc_1 anl_br anl_ac anl_bt">0%</td>
- <td class=" anl_bck_desc_1 anl_br anl_ac anl_bt">0%</td>
- <td class=" anl_bck_desc_1 anl_br anl_ac anl_bt">0%</td>
- <td class=" anl_bck_desc_1 anl_br anl_ac anl_bt">0%</td>
- <td class=" anl_bck_desc_1 anl_br anl_ac anl_bt">0%</td>
- <td class=" anl_bck_desc_1 anl_br anl_ac anl_bt">0%</td>
- </tr>
-
-
- <tr>
- <td rowspan="2" class=" anl_bck_desc_1 anl_ac anl_br anl_bt"><span class="anl_variabla"><a href="#">Q3</a></span></td>
- <td rowspan="2" class=" anl_bck_desc_1 anl_br anl_bt">Država</td>
- <td class=" anl_bck_desc_1 anl_br anl_ac anl_bt">6</td>
- <td class=" anl_bck_desc_1 anl_br anl_ac anl_bt">38</td>
- <td class=" anl_bck_desc_1 anl_br anl_ac anl_bt">0</td>
- <td class=" anl_bck_desc_1 anl_br anl_ac anl_bt">0</td>
- <td class=" anl_bck_desc_1 anl_br anl_ac anl_bt">0</td>
- <td class=" anl_bck_desc_1 anl_br anl_ac anl_bt">0</td>
- <td class=" anl_bck_desc_1 anl_br anl_ac anl_bt">0</td>
- <td class=" anl_bck_desc_1 anl_br anl_ac anl_bt">0</td>
- <td class=" anl_bck_desc_1 anl_br anl_ac anl_bt">0</td>
- <td rowspan="2" class=" anl_bck_desc_1 anl_br anl_ac anl_bt">44</td>
- <td rowspan="2" class=" anl_bck_desc_1 anl_br anl_ac anl_bt">53</td>
- <td rowspan="2" class=" anl_bck_desc_1 anl_br anl_ac anl_bt">0.9</td>
- </tr>
- <tr>
- <td class=" anl_bck_desc_1 anl_br anl_ac anl_bt">14%</td>
- <td class=" anl_bck_desc_1 anl_br anl_ac anl_bt">86%</td>
- <td class=" anl_bck_desc_1 anl_br anl_ac anl_bt">0%</td>
- <td class=" anl_bck_desc_1 anl_br anl_ac anl_bt">0%</td>
- <td class=" anl_bck_desc_1 anl_br anl_ac anl_bt">0%</td>
- <td class=" anl_bck_desc_1 anl_br anl_ac anl_bt">0%</td>
- <td class=" anl_bck_desc_1 anl_br anl_ac anl_bt">0%</td>
- <td class=" anl_bck_desc_1 anl_br anl_ac anl_bt">0%</td>
- <td class=" anl_bck_desc_1 anl_br anl_ac anl_bt">0%</td>
- </tr>
-
- </tbody>
- </table>
diff --git a/admin/survey/classes/staticHtml/AnalizaPredogledNeodgovori.min.html b/admin/survey/classes/staticHtml/AnalizaPredogledNeodgovori.min.html
deleted file mode 100644
index 6625b21..0000000
--- a/admin/survey/classes/staticHtml/AnalizaPredogledNeodgovori.min.html
+++ /dev/null
@@ -1,2 +0,0 @@
-
-<table class="anl_tbl anl_ba"><tbody><tr><td class="anl_br anl_ac anl_bck anl_variabla_line anl_bb anl_w70">Variabla<span></span></td><td class="anl_br anl_ac anl_bck anl_variabla_line anl_bb">Vprašanje<span></span></td><td class="anl_br anl_ac anl_bck anl_variabla_line anl_bb">Veljavni<span></span></td><td class="anl_br anl_ac anl_bck anl_variabla_line anl_bb">-1 (Ni odgovoril)<span></span></td><td class="anl_br anl_ac anl_bck anl_variabla_line anl_bb">-2 (Preskok (if))<span></span></td><td class="anl_br anl_ac anl_bck anl_variabla_line anl_bb">-3 (Prekinjeno)<span></span></td><td class="anl_br anl_ac anl_bck anl_variabla_line anl_bb">-4 (Naknadno vprasanje)<span></span></td><td class="anl_br anl_ac anl_bck anl_variabla_line anl_bb">-5 (Prazna enota)<span></span></td><td class="anl_br anl_ac anl_bck anl_variabla_line anl_bb">-97 (Neustrezno)<span></span></td><td class="anl_br anl_ac anl_bck anl_variabla_line anl_bb">-98 (Zavrnil)<span></span></td><td class="anl_br anl_ac anl_bck anl_variabla_line anl_bb">-99 (Ne vem)<span></span></td><td class="anl_br anl_ac anl_bck anl_variabla_line anl_bb">Ustrezni<span></span></td><td class="anl_br anl_ac anl_bck anl_variabla_line anl_bb">Vse enote<span></span></td><td class="anl_br anl_ac anl_bck anl_variabla_line anl_bb">NS<span></span></td></tr><tr><td rowspan="2" class=" anl_bck_desc_1 anl_ac anl_br anl_bt"><span class="anl_variabla"><a href="#">Q1</a></span></td><td rowspan="2" class=" anl_bck_desc_1 anl_br anl_bt">Spol</td><td class=" anl_bck_desc_1 anl_br anl_ac anl_bt">10</td><td class=" anl_bck_desc_1 anl_br anl_ac anl_bt">34</td><td class=" anl_bck_desc_1 anl_br anl_ac anl_bt">0</td><td class=" anl_bck_desc_1 anl_br anl_ac anl_bt">0</td><td class=" anl_bck_desc_1 anl_br anl_ac anl_bt">0</td><td class=" anl_bck_desc_1 anl_br anl_ac anl_bt">0</td><td class=" anl_bck_desc_1 anl_br anl_ac anl_bt">0</td><td class=" anl_bck_desc_1 anl_br anl_ac anl_bt">0</td><td class=" anl_bck_desc_1 anl_br anl_ac anl_bt">0</td><td rowspan="2" class=" anl_bck_desc_1 anl_br anl_ac anl_bt">44</td><td rowspan="2" class=" anl_bck_desc_1 anl_br anl_ac anl_bt">53</td><td rowspan="2" class=" anl_bck_desc_1 anl_br anl_ac anl_bt">0.8</td></tr><tr><td class=" anl_bck_desc_1 anl_br anl_ac anl_bt">23%</td><td class=" anl_bck_desc_1 anl_br anl_ac anl_bt">77%</td><td class=" anl_bck_desc_1 anl_br anl_ac anl_bt">0%</td><td class=" anl_bck_desc_1 anl_br anl_ac anl_bt">0%</td><td class=" anl_bck_desc_1 anl_br anl_ac anl_bt">0%</td><td class=" anl_bck_desc_1 anl_br anl_ac anl_bt">0%</td><td class=" anl_bck_desc_1 anl_br anl_ac anl_bt">0%</td><td class=" anl_bck_desc_1 anl_br anl_ac anl_bt">0%</td><td class=" anl_bck_desc_1 anl_br anl_ac anl_bt">0%</td></tr><tr><td rowspan="2" class=" anl_bck_desc_1 anl_ac anl_br anl_bt"><span class="anl_variabla"><a href="#">Q2</a></span></td><td rowspan="2" class=" anl_bck_desc_1 anl_br anl_bt">Dohodek</td><td class=" anl_bck_desc_1 anl_br anl_ac anl_bt">15</td><td class=" anl_bck_desc_1 anl_br anl_ac anl_bt">29</td><td class=" anl_bck_desc_1 anl_br anl_ac anl_bt">0</td><td class=" anl_bck_desc_1 anl_br anl_ac anl_bt">0</td><td class=" anl_bck_desc_1 anl_br anl_ac anl_bt">0</td><td class=" anl_bck_desc_1 anl_br anl_ac anl_bt">0</td><td class=" anl_bck_desc_1 anl_br anl_ac anl_bt">0</td><td class=" anl_bck_desc_1 anl_br anl_ac anl_bt">0</td><td class=" anl_bck_desc_1 anl_br anl_ac anl_bt">0</td><td rowspan="2" class=" anl_bck_desc_1 anl_br anl_ac anl_bt">44</td><td rowspan="2" class=" anl_bck_desc_1 anl_br anl_ac anl_bt">53</td><td rowspan="2" class=" anl_bck_desc_1 anl_br anl_ac anl_bt">0.7</td></tr><tr><td class=" anl_bck_desc_1 anl_br anl_ac anl_bt">34%</td><td class=" anl_bck_desc_1 anl_br anl_ac anl_bt">66%</td><td class=" anl_bck_desc_1 anl_br anl_ac anl_bt">0%</td><td class=" anl_bck_desc_1 anl_br anl_ac anl_bt">0%</td><td class=" anl_bck_desc_1 anl_br anl_ac anl_bt">0%</td><td class=" anl_bck_desc_1 anl_br anl_ac anl_bt">0%</td><td class=" anl_bck_desc_1 anl_br anl_ac anl_bt">0%</td><td class=" anl_bck_desc_1 anl_br anl_ac anl_bt">0%</td><td class=" anl_bck_desc_1 anl_br anl_ac anl_bt">0%</td></tr><tr><td rowspan="2" class=" anl_bck_desc_1 anl_ac anl_br anl_bt"><span class="anl_variabla"><a href="#">Q3</a></span></td><td rowspan="2" class=" anl_bck_desc_1 anl_br anl_bt">Država</td><td class=" anl_bck_desc_1 anl_br anl_ac anl_bt">6</td><td class=" anl_bck_desc_1 anl_br anl_ac anl_bt">38</td><td class=" anl_bck_desc_1 anl_br anl_ac anl_bt">0</td><td class=" anl_bck_desc_1 anl_br anl_ac anl_bt">0</td><td class=" anl_bck_desc_1 anl_br anl_ac anl_bt">0</td><td class=" anl_bck_desc_1 anl_br anl_ac anl_bt">0</td><td class=" anl_bck_desc_1 anl_br anl_ac anl_bt">0</td><td class=" anl_bck_desc_1 anl_br anl_ac anl_bt">0</td><td class=" anl_bck_desc_1 anl_br anl_ac anl_bt">0</td><td rowspan="2" class=" anl_bck_desc_1 anl_br anl_ac anl_bt">44</td><td rowspan="2" class=" anl_bck_desc_1 anl_br anl_ac anl_bt">53</td><td rowspan="2" class=" anl_bck_desc_1 anl_br anl_ac anl_bt">0.9</td></tr><tr><td class=" anl_bck_desc_1 anl_br anl_ac anl_bt">14%</td><td class=" anl_bck_desc_1 anl_br anl_ac anl_bt">86%</td><td class=" anl_bck_desc_1 anl_br anl_ac anl_bt">0%</td><td class=" anl_bck_desc_1 anl_br anl_ac anl_bt">0%</td><td class=" anl_bck_desc_1 anl_br anl_ac anl_bt">0%</td><td class=" anl_bck_desc_1 anl_br anl_ac anl_bt">0%</td><td class=" anl_bck_desc_1 anl_br anl_ac anl_bt">0%</td><td class=" anl_bck_desc_1 anl_br anl_ac anl_bt">0%</td><td class=" anl_bck_desc_1 anl_br anl_ac anl_bt">0%</td></tr></tbody></table> \ No newline at end of file
diff --git a/admin/survey/classes/staticHtml/AnalizaPredogledOpisne.html b/admin/survey/classes/staticHtml/AnalizaPredogledOpisne.html
deleted file mode 100644
index 34781b4..0000000
--- a/admin/survey/classes/staticHtml/AnalizaPredogledOpisne.html
+++ /dev/null
@@ -1,106 +0,0 @@
- <table class="anl_tbl anl_ba">
- <tbody>
- <tr>
- <td class="anl_br anl_ac anl_bck anl_variabla_line anl_bb anl_w70">&nbsp;<span></span></td>
- <td class="anl_br anl_ac anl_bck anl_variabla_line anl_bb anl_w110">Spremenljivka<span></span></td>
- <td class="anl_br anl_ac anl_bck anl_variabla_line anl_bb">Vprašanje<span></span></td>
- <td class="anl_br anl_ac anl_bck anl_variabla_line anl_bb">Veljavno<span></span></td>
- <td class="anl_br anl_ac anl_bck anl_variabla_line anl_bb">Št.
- enot<span></span>
- </td>
- <td class="anl_br anl_ac anl_bck anl_variabla_line anl_bb">Povprečje<br>/&nbsp;odstotek<span></span></td>
- <td class="anl_br anl_ac anl_bck anl_variabla_line anl_bb">Std.
- Odklon<span></span>
- </td>
- <td class="anl_br anl_ac anl_bck anl_variabla_line anl_bb">Minimum<span></span></td>
- <td class=" anl_ac anl_bck anl_variabla_line anl_bb">Maksimum<span></span></td>
- </tr>
- <tr>
- <td class="anl_bck anl_ac anl_br anl_bt link_no_decoration"><span
- class="taCenter printHide iconHide"><a
- href="#"><span
- title="Sumarne frekvence (print, pdf, word, excel)"
- class="sprites analysis_sums_gray"></span></a><a
- href="#"><span
- title="Dopolnjene frekvence (print, pdf, word, excel)"
- class="sprites analysis_sums_new_gray"></span></a><a
- href="#"><span
- title="Opisne statistike (print, pdf, word, excel)"
- class="sprites analysis_statistic"></span></a><a
- href="#"><span
- title="Osnovne frekvence (print, pdf, word, excel)"
- class="sprites analysis_frequencys_gray"></span></a></span></td>
- <td class=" anl_bck_desc_1 anl_ac anl_br anl_bt"><span
- class="anl_variabla"><a
- href="#">Q1</a></span></td>
- <td class=" anl_bck_desc_1 anl_br anl_bt">Spol</td>
- <td class=" anl_bck_desc_1 anl_br anl_ac anl_bt">9</td>
- <td class=" anl_bck_desc_1 anl_br anl_ac anl_bt">9</td>
- <td class=" anl_bck_desc_1 anl_br anl_ac anl_bt">1.67</td>
- <td class=" anl_bck_desc_1 anl_br anl_ac anl_bt">0.50</td>
- <td class=" anl_bck_desc_1 anl_br anl_ac anl_bt">1</td>
- <td class=" anl_bck_desc_1 anl_ac anl_bt">2</td>
- </tr>
- <tr>
- <td class="anl_bck anl_ac anl_br anl_bt link_no_decoration"><span
- class="taCenter printHide iconHide"><a
- href="#"><span
- title="Sumarne frekvence (print, pdf, word, excel)"
- class="sprites analysis_sums_gray"></span></a><a
- href="#"><span
- title="Opisne statistike (print, pdf, word, excel)"
- class="sprites analysis_statistic"></span></a><a
- href="#"><span
- title="Osnovne frekvence (print, pdf, word, excel)"
- class="sprites analysis_frequencys_gray"></span></a></span></td>
- <td class=" anl_bck_desc_1 anl_ac anl_br anl_bt"><span
- class="anl_variabla"><a
- href="#">Q2</a></span></td>
- <td class=" anl_bck_desc_1 anl_br anl_bt">Dohodek</td>
- <td class=" anl_bck_desc_1 anl_br anl_ac anl_bt">&nbsp;</td>
- <td class=" anl_bck_desc_1 anl_br anl_ac anl_bt">&nbsp;</td>
- <td class=" anl_bck_desc_1 anl_br anl_ac anl_bt"></td>
- <td class=" anl_bck_desc_1 anl_br anl_ac anl_bt"></td>
- <td class=" anl_bck_desc_1 anl_br anl_ac anl_bt"></td>
- <td class=" anl_bck_desc_1 anl_ac anl_bt"></td>
- </tr>
- <tr>
- <td class="anl_bck anl_ac anl_br link_no_decoration">&nbsp;</td>
- <td
- class=" anl_bck_desc_2 anl_bt_dot anl_ac anl_br link_no_decoration anl_variabla_sub">Q2</td>
- <td class=" anl_bck_desc_2 anl_bt_dot anl_tin anl_br">v €</td>
- <td class=" anl_bck_desc_2 anl_bt_dot anl_br anl_ac">9</td>
- <td class=" anl_bck_desc_2 anl_bt_dot anl_br anl_ac">9</td>
- <td class=" anl_bck_desc_2 anl_bt_dot anl_br anl_ac">1,400.00</td>
- <td class=" anl_bck_desc_2 anl_bt_dot anl_br anl_ac">342.78</td>
- <td class=" anl_bck_desc_2 anl_bt_dot anl_br anl_ac">900</td>
- <td class=" anl_bck_desc_2 anl_bt_dot anl_ac">2000</td>
- </tr>
- <tr>
- <td class="anl_bck anl_ac anl_br anl_bt link_no_decoration"><span
- class="taCenter printHide iconHide"><a
- href="#"><span
- title="Sumarne frekvence (print, pdf, word, excel)"
- class="sprites analysis_sums_gray"></span></a><a
- href="#"><span
- title="Dopolnjene frekvence (print, pdf, word, excel)"
- class="sprites analysis_sums_new_gray"></span></a><a
- href="#"><span
- title="Opisne statistike (print, pdf, word, excel)"
- class="sprites analysis_statistic"></span></a><a
- href="#"><span
- title="Osnovne frekvence (print, pdf, word, excel)"
- class="sprites analysis_frequencys_gray"></span></a></span></td>
- <td class=" anl_bck_desc_1 anl_ac anl_br anl_bt"><span
- class="anl_variabla"><a
- href="#">Q3</a></span></td>
- <td class=" anl_bck_desc_1 anl_br anl_bt">Država</td>
- <td class=" anl_bck_desc_1 anl_br anl_ac anl_bt">9</td>
- <td class=" anl_bck_desc_1 anl_br anl_ac anl_bt">9</td>
- <td class=" anl_bck_desc_1 anl_br anl_ac anl_bt">2.89</td>
- <td class=" anl_bck_desc_1 anl_br anl_ac anl_bt">1.54</td>
- <td class=" anl_bck_desc_1 anl_br anl_ac anl_bt">1</td>
- <td class=" anl_bck_desc_1 anl_ac anl_bt">5</td>
- </tr>
- </tbody>
- </table>
diff --git a/admin/survey/classes/staticHtml/AnalizaPredogledOpisne.min.html b/admin/survey/classes/staticHtml/AnalizaPredogledOpisne.min.html
deleted file mode 100644
index 5d70fd4..0000000
--- a/admin/survey/classes/staticHtml/AnalizaPredogledOpisne.min.html
+++ /dev/null
@@ -1,2 +0,0 @@
-
-<table class="anl_tbl anl_ba"><tbody><tr><td class="anl_br anl_ac anl_bck anl_variabla_line anl_bb anl_w70">&nbsp;<span></span></td><td class="anl_br anl_ac anl_bck anl_variabla_line anl_bb anl_w110">Spremenljivka<span></span></td><td class="anl_br anl_ac anl_bck anl_variabla_line anl_bb">Vprašanje<span></span></td><td class="anl_br anl_ac anl_bck anl_variabla_line anl_bb">Veljavno<span></span></td><td class="anl_br anl_ac anl_bck anl_variabla_line anl_bb">Št. enot<span></span></td><td class="anl_br anl_ac anl_bck anl_variabla_line anl_bb">Povprečje<br>/&nbsp;odstotek<span></span></td><td class="anl_br anl_ac anl_bck anl_variabla_line anl_bb">Std. Odklon<span></span></td><td class="anl_br anl_ac anl_bck anl_variabla_line anl_bb">Minimum<span></span></td><td class=" anl_ac anl_bck anl_variabla_line anl_bb">Maksimum<span></span></td></tr><tr><td class="anl_bck anl_ac anl_br anl_bt link_no_decoration"><span class="taCenter printHide iconHide"><a href="#"><span title="Sumarne frekvence (print, pdf, word, excel)" class="sprites analysis_sums_gray"></span></a><a href="#"><span title="Dopolnjene frekvence (print, pdf, word, excel)" class="sprites analysis_sums_new_gray"></span></a><a href="#"><span title="Opisne statistike (print, pdf, word, excel)" class="sprites analysis_statistic"></span></a><a href="#"><span title="Osnovne frekvence (print, pdf, word, excel)" class="sprites analysis_frequencys_gray"></span></a></span></td><td class=" anl_bck_desc_1 anl_ac anl_br anl_bt"><span class="anl_variabla"><a href="#">Q1</a></span></td><td class=" anl_bck_desc_1 anl_br anl_bt">Spol</td><td class=" anl_bck_desc_1 anl_br anl_ac anl_bt">9</td><td class=" anl_bck_desc_1 anl_br anl_ac anl_bt">9</td><td class=" anl_bck_desc_1 anl_br anl_ac anl_bt">1.67</td><td class=" anl_bck_desc_1 anl_br anl_ac anl_bt">0.50</td><td class=" anl_bck_desc_1 anl_br anl_ac anl_bt">1</td><td class=" anl_bck_desc_1 anl_ac anl_bt">2</td></tr><tr><td class="anl_bck anl_ac anl_br anl_bt link_no_decoration"><span class="taCenter printHide iconHide"><a href="#"><span title="Sumarne frekvence (print, pdf, word, excel)" class="sprites analysis_sums_gray"></span></a><a href="#"><span title="Opisne statistike (print, pdf, word, excel)" class="sprites analysis_statistic"></span></a><a href="#"><span title="Osnovne frekvence (print, pdf, word, excel)" class="sprites analysis_frequencys_gray"></span></a></span></td><td class=" anl_bck_desc_1 anl_ac anl_br anl_bt"><span class="anl_variabla"><a href="#">Q2</a></span></td><td class=" anl_bck_desc_1 anl_br anl_bt">Dohodek</td><td class=" anl_bck_desc_1 anl_br anl_ac anl_bt">&nbsp;</td><td class=" anl_bck_desc_1 anl_br anl_ac anl_bt">&nbsp;</td><td class=" anl_bck_desc_1 anl_br anl_ac anl_bt"></td><td class=" anl_bck_desc_1 anl_br anl_ac anl_bt"></td><td class=" anl_bck_desc_1 anl_br anl_ac anl_bt"></td><td class=" anl_bck_desc_1 anl_ac anl_bt"></td></tr><tr><td class="anl_bck anl_ac anl_br link_no_decoration">&nbsp;</td><td class=" anl_bck_desc_2 anl_bt_dot anl_ac anl_br link_no_decoration anl_variabla_sub">Q2</td><td class=" anl_bck_desc_2 anl_bt_dot anl_tin anl_br">v €</td><td class=" anl_bck_desc_2 anl_bt_dot anl_br anl_ac">9</td><td class=" anl_bck_desc_2 anl_bt_dot anl_br anl_ac">9</td><td class=" anl_bck_desc_2 anl_bt_dot anl_br anl_ac">1,400.00</td><td class=" anl_bck_desc_2 anl_bt_dot anl_br anl_ac">342.78</td><td class=" anl_bck_desc_2 anl_bt_dot anl_br anl_ac">900</td><td class=" anl_bck_desc_2 anl_bt_dot anl_ac">2000</td></tr><tr><td class="anl_bck anl_ac anl_br anl_bt link_no_decoration"><span class="taCenter printHide iconHide"><a href="#"><span title="Sumarne frekvence (print, pdf, word, excel)" class="sprites analysis_sums_gray"></span></a><a href="#"><span title="Dopolnjene frekvence (print, pdf, word, excel)" class="sprites analysis_sums_new_gray"></span></a><a href="#"><span title="Opisne statistike (print, pdf, word, excel)" class="sprites analysis_statistic"></span></a><a href="#"><span title="Osnovne frekvence (print, pdf, word, excel)" class="sprites analysis_frequencys_gray"></span></a></span></td><td class=" anl_bck_desc_1 anl_ac anl_br anl_bt"><span class="anl_variabla"><a href="#">Q3</a></span></td><td class=" anl_bck_desc_1 anl_br anl_bt">Država</td><td class=" anl_bck_desc_1 anl_br anl_ac anl_bt">9</td><td class=" anl_bck_desc_1 anl_br anl_ac anl_bt">9</td><td class=" anl_bck_desc_1 anl_br anl_ac anl_bt">2.89</td><td class=" anl_bck_desc_1 anl_br anl_ac anl_bt">1.54</td><td class=" anl_bck_desc_1 anl_br anl_ac anl_bt">1</td><td class=" anl_bck_desc_1 anl_ac anl_bt">5</td></tr></tbody></table> \ No newline at end of file
diff --git a/admin/survey/classes/staticHtml/AnalizaPredogledPovprecja.html b/admin/survey/classes/staticHtml/AnalizaPredogledPovprecja.html
deleted file mode 100644
index 622cf3d..0000000
--- a/admin/survey/classes/staticHtml/AnalizaPredogledPovprecja.html
+++ /dev/null
@@ -1,43 +0,0 @@
- <table style="margin-top: 10px; min-width:370px" class="anl_tbl_crosstab">
- <colgroup>
- <col style="width: auto; min-width: 30px;">
- <col style="width: auto; min-width: 30px;">
- <col style="width: auto; min-width: 30px;">
- <col style="width: auto; min-width: 30px;">
- </colgroup>
- <tbody>
- <tr>
- <td rowspan="2" class="anl_bt anl_bl anl_ac rsdl_bck_title ctbCll"><span
- class="anl_variabla"><a
- title="Predogled vprašanja" href="/">Spol</a></span></td>
- <td colspan="2"
- class="anl_bt anl_bl anl_br anl_ac rsdl_bck_title ctbCll"><span
- class="anl_variabla"><a
- title="Predogled vprašanja" href="/">Dohodek</a></span><br>cv €</td>
- </tr>
- <tr>
- <td class="anl_bt anl_bl anl_ac rsdl_bck_variable1 ctbCll">Povprečje</td>
- <td
- class="anl_bl anl_bt anl_br anl_ac red anl_ita anl_bck_text_0 rsdl_bck_variable1 ctbCll">Št.
- enot</td>
- </tr>
- <tr>
- <td class="anl_bt anl_bl anl_ac rsdl_bck_variable1 ctbCll">Moški&nbsp;(
- 1 )</td>
- <td v2="" v1="" n2="Moški" n1="" k2="1" k1="" class="ct_in_cell">1,500.000</td>
- <td class="anl_ac anl_bl anl_bt anl_br rsdl_bck0 crostabSuma">3</td>
- </tr>
- <tr>
- <td class="anl_bt anl_bl anl_ac rsdl_bck_variable1 ctbCll">Ženski&nbsp;(
- 2 )</td>
- <td v2="" v1="" n2="Ženski" n1="" k2="2" k1="" class="ct_in_cell">1,350.000</td>
- <td class="anl_ac anl_bl anl_bt anl_br rsdl_bck0 crostabSuma">6</td>
- </tr>
- <tr>
- <td
- class="anl_bb anl_bt anl_bl anl_ac red anl_ita anl_bck_text_0 rsdl_bck_variable1 ctbCll">Skupaj</td>
- <td class="anl_ac anl_bt anl_bl anl_br anl_bb rsdl_bck0 crostabSuma">1,400.000</td>
- <td class="anl_ac anl_bt anl_bl anl_br anl_bb rsdl_bck0 crostabSuma">9</td>
- </tr>
- </tbody>
- </table>
diff --git a/admin/survey/classes/staticHtml/AnalizaPredogledPovprecja.min.html b/admin/survey/classes/staticHtml/AnalizaPredogledPovprecja.min.html
deleted file mode 100644
index ab081a9..0000000
--- a/admin/survey/classes/staticHtml/AnalizaPredogledPovprecja.min.html
+++ /dev/null
@@ -1,2 +0,0 @@
-
-<table style="margin-top: 10px; min-width:370px" class="anl_tbl_crosstab"><colgroup><col style="width: auto; min-width: 30px;"><col style="width: auto; min-width: 30px;"><col style="width: auto; min-width: 30px;"><col style="width: auto; min-width: 30px;"></colgroup><tbody><tr><td rowspan="2" class="anl_bt anl_bl anl_ac rsdl_bck_title ctbCll"><span class="anl_variabla"><a title="Predogled vprašanja" href="/">Spol</a></span></td><td colspan="2" class="anl_bt anl_bl anl_br anl_ac rsdl_bck_title ctbCll"><span class="anl_variabla"><a title="Predogled vprašanja" href="/">Dohodek</a></span><br>cv €</td></tr><tr><td class="anl_bt anl_bl anl_ac rsdl_bck_variable1 ctbCll">Povprečje</td><td class="anl_bl anl_bt anl_br anl_ac red anl_ita anl_bck_text_0 rsdl_bck_variable1 ctbCll">Št. enot</td></tr><tr><td class="anl_bt anl_bl anl_ac rsdl_bck_variable1 ctbCll">Moški&nbsp;( 1 )</td><td v2="" v1="" n2="Moški" n1="" k2="1" k1="" class="ct_in_cell">1,500.000</td><td class="anl_ac anl_bl anl_bt anl_br rsdl_bck0 crostabSuma">3</td></tr><tr><td class="anl_bt anl_bl anl_ac rsdl_bck_variable1 ctbCll">Ženski&nbsp;( 2 )</td><td v2="" v1="" n2="Ženski" n1="" k2="2" k1="" class="ct_in_cell">1,350.000</td><td class="anl_ac anl_bl anl_bt anl_br rsdl_bck0 crostabSuma">6</td></tr><tr><td class="anl_bb anl_bt anl_bl anl_ac red anl_ita anl_bck_text_0 rsdl_bck_variable1 ctbCll">Skupaj</td><td class="anl_ac anl_bt anl_bl anl_br anl_bb rsdl_bck0 crostabSuma">1,400.000</td><td class="anl_ac anl_bt anl_bl anl_br anl_bb rsdl_bck0 crostabSuma">9</td></tr></tbody></table> \ No newline at end of file
diff --git a/admin/survey/classes/staticHtml/AnalizaPredogledRazbitje.html b/admin/survey/classes/staticHtml/AnalizaPredogledRazbitje.html
deleted file mode 100644
index aef5f9c..0000000
--- a/admin/survey/classes/staticHtml/AnalizaPredogledRazbitje.html
+++ /dev/null
@@ -1,62 +0,0 @@
-<div class="breakTableDiv" id="150_0">
- <table>
- <tbody>
- <tr>
- <th rowspan="2"><span class="anl_variabla"><a
- title="" href="#">Spol(Q1)</a></span></th>
- <th colspan="1"><span class="anl_variabla"><a
- title="" href="#">Dohodek(Q2)</a></span></th>
- </tr>
- <tr>
- <th class="sub">v €(Q2)</th>
- </tr>
- <tr>
- <th>Moški</th>
- <td>1,500.00</td>
- </tr>
- <tr>
- <th>Ženski</th>
- <td>1,350.00</td>
- </tr>
- </tbody>
- </table>
-</div>
-<br>
-<div class="breakTableDiv" id="153_0">
- <table>
- <tbody>
- <tr>
- <th rowspan="2"><span class="anl_variabla"><a
- title="" href="#">Spol(Q1)</a></span></th>
- <th colspan="6"><span class="anl_variabla"><a
- title="" href="#">Država(Q3)</a></span></th>
- </tr>
- <tr>
- <th class="sub">Slovenija(1)</th>
- <th class="sub">Hrvaška(2)</th>
- <th class="sub">Avstrija(3)</th>
- <th class="sub">Italija(4)</th>
- <th class="sub">Madžarska(5)</th>
- <th>povprečje</th>
- </tr>
- <tr>
- <th>Moški</th>
- <td>1</td>
- <td>0</td>
- <td>1</td>
- <td>1</td>
- <td>0</td>
- <td>2.67</td>
- </tr>
- <tr>
- <th>Ženski</th>
- <td>1</td>
- <td>2</td>
- <td>1</td>
- <td>0</td>
- <td>2</td>
- <td>3.00</td>
- </tr>
- </tbody>
- </table>
-</div>
diff --git a/admin/survey/classes/staticHtml/AnalizaPredogledRazbitje.min.html b/admin/survey/classes/staticHtml/AnalizaPredogledRazbitje.min.html
deleted file mode 100644
index 46f4e94..0000000
--- a/admin/survey/classes/staticHtml/AnalizaPredogledRazbitje.min.html
+++ /dev/null
@@ -1,2 +0,0 @@
-
-<div class="breakTableDiv" id="150_0"><table><tbody><tr><th rowspan="2"><span class="anl_variabla"><a title="" href="#">Spol(Q1)</a></span></th><th colspan="1"><span class="anl_variabla"><a title="" href="#">Dohodek(Q2)</a></span></th></tr><tr><th class="sub">v €(Q2)</th></tr><tr><th>Moški</th><td>1,500.00</td></tr><tr><th>Ženski</th><td>1,350.00</td></tr></tbody></table></div><br><div class="breakTableDiv" id="153_0"><table><tbody><tr><th rowspan="2"><span class="anl_variabla"><a title="" href="#">Spol(Q1)</a></span></th><th colspan="6"><span class="anl_variabla"><a title="" href="#">Država(Q3)</a></span></th></tr><tr><th class="sub">Slovenija(1)</th><th class="sub">Hrvaška(2)</th><th class="sub">Avstrija(3)</th><th class="sub">Italija(4)</th><th class="sub">Madžarska(5)</th><th>povprečje</th></tr><tr><th>Moški</th><td>1</td><td>0</td><td>1</td><td>1</td><td>0</td><td>2.67</td></tr><tr><th>Ženski</th><td>1</td><td>2</td><td>1</td><td>0</td><td>2</td><td>3.00</td></tr></tbody></table></div> \ No newline at end of file
diff --git a/admin/survey/classes/staticHtml/AnalizaPredogledSumarnik.html b/admin/survey/classes/staticHtml/AnalizaPredogledSumarnik.html
deleted file mode 100644
index 57cabcc..0000000
--- a/admin/survey/classes/staticHtml/AnalizaPredogledSumarnik.html
+++ /dev/null
@@ -1,303 +0,0 @@
-<table class="anl_tbl anl_bt anl_br tbl_clps">
- <tbody>
- <tr>
- <td class="anl_bl anl_br anl_bb anl_ac anl_bck_freq_1 anl_w110"><span
- class="anl_variabla"><a href="#">Q1</a></span></td>
- <td colspan="5" class="anl_br anl_bb anl_al anl_bck_freq_1"><span
- class="anl_variabla_label">Spol</span></td>
- </tr>
- <tr>
- <td class="anl_bl anl_br anl_bb anl_ac anl_bck anl_w110"><span
- class="taCenter printHide iconHide"><a href="#"><span
- title="Sumarne frekvence (print, pdf, word, excel)"
- class="sprites analysis_sums_gray"></span></a><a href="#"><span
- title="Dopolnjene frekvence (print, pdf, word, excel)"
- class="sprites analysis_sums_new"></span></a><a href="#"><span
- title="Opisne statistike (print, pdf, word, excel)"
- class="sprites analysis_statistic_gray"></span></a><a href="#"><span
- title="Osnovne frekvence (print, pdf, word, excel)"
- class="sprites analysis_frequencys_gray"></span></a></span></td>
- <td class="anl_br anl_bb anl_ac anl_bck anl_variabla_line">Odgovori</td>
- <td class="anl_br anl_bb anl_ac anl_bck anl_w70 anl_variabla_line">Frekvenca</td>
- <td class="anl_br anl_bb anl_ac anl_bck anl_w70 anl_variabla_line">Odstotek</td>
- <td class="anl_br anl_bb anl_ac anl_bck anl_w70 anl_variabla_line">Veljavni</td>
- <td class="anl_br anl_bb anl_ac anl_bck anl_w70 anl_variabla_line">Kumulativa</td>
- </tr>
- <tr >
- <td class="anl_bl anl_ac anl_br gray">&nbsp;</td>
- <td class="anl_br anl_bck_0_0"><div class="anl_user_text_more">1</div>
- (Moški)</td>
- <td class="anl_ac anl_br anl_bck_0_0">3</td>
- <td class="anl_ar anl_br anl_bck_0_0 anl_pr10">33.3%</td>
- <td class="anl_ar anl_br anl_bck_0_0 anl_pr10">33.3%</td>
- <td class="anl_ar anl_bck_0_0 anl_pr10">33.3%</td>
- </tr>
- <tr >
- <td class="anl_bl anl_ac anl_br gray">&nbsp;</td>
- <td class="anl_br anl_bck_0_1"><div class="anl_user_text_more">2</div>
- (Ženski)</td>
- <td class="anl_ac anl_br anl_bck_0_1">6</td>
- <td class="anl_ar anl_br anl_bck_0_1 anl_pr10">66.7%</td>
- <td class="anl_ar anl_br anl_bck_0_1 anl_pr10">66.7%</td>
- <td class="anl_ar anl_bck_0_1 anl_pr10">100.0%</td>
- </tr>
- <tr class="anl_bb">
- <td class="anl_bl anl_br anl_al gray anl_ti_20 anl_bck_text_1">Veljavni<span
- value="0" class=" gray" >&nbsp;(<span
- style="width: 12px; height: 12px"
- class="sprites plus_orange folder_plusminus"></span>)
- </span><span class=" gray displayNone"
- >&nbsp;(<span
- style="width: 12px; height: 12px"
- class="sprites minus_orange folder_plusminus"></span>)
- </span></td>
- <td class="anl_br anl_al anl_ita red anl_bck_text_1">Skupaj</td>
- <td class="anl_ita red anl_br anl_ac anl_bck_text_1">9</td>
- <td class="anl_ita red anl_br anl_ar anl_bck_text_1 anl_pr10">100.0%</td>
- <td class="anl_ita red anl_br anl_ar anl_bck_text_1 anl_pr10">100.0%</td>
- <td class="anl_ita red anl_ac anl_bck_text_1">&nbsp;</td>
- </tr>
- <tr class="anl_dash_red_bb displayNone" >
- <td class="anl_bl anl_al anl_br gray anl_ti_20 anl_bck_text_1">Manjkajoči</td>
- <td class="anl_br anl_ita red anl_bck_text_1">Skupaj<span
- class="printHide anl_ita anl_detail_percent" >&nbsp;&nbsp;<a
- href="#single_missing_6"> <span
- style="width: 12px; height: 12px"
- class="sprites plus_orange folder_plusminus"></span>
- </a></span><span class="printHide anl_ita anl_detail_percent displayNone"
- >&nbsp;&nbsp;<a
- href="#single_missing_6"> <span
- style="width: 12px; height: 12px"
- class="sprites minus_orange folder_plusminus"></span>
- </a></span>
- <div
- class="floatRight anl_w50 anl_dash_bl anl_dash_bt anl_ac anl_detail_percent displayNone"
- >100.0%</div>
- <div
- class="floatRight anl_w30 anl_dash_bt anl_ac anl_detail_percent displayNone"
- ></div>
- </td>
- <td class="anl_ac anl_br anl_detail_cnt anl_ita red anl_bck_text_1">0</td>
- <td class="anl_ar anl_br anl_ita red anl_bck_text_1 anl_pr10">0.0%</td>
- <td class="anl_ar anl_br anl_ita red anl_bck_text_1 anl_pr10"><span
- >&nbsp;</span></td>
- <td class="anl_ar anl_ita red anl_bck_text_1 anl_pr10">&nbsp;</td>
- </tr>
- <tr class="displayNone" >
- <td
- class="anl_bl anl_ac anl_dash_bt anl_bb red anl_ita anl_bck_text_0">SKUPAJ</td>
- <td class="anl_dash_bt anl_br anl_bb anl_bck_text_0">&nbsp;</td>
- <td
- class="anl_ac anl_dash_bt anl_br anl_bb anl_ita red anl_bck_text_0">9</td>
- <td
- class="anl_ar anl_dash_bt anl_br anl_bb anl_ita red anl_bck_text_0 anl_pr10">100.0%</td>
- <td
- class="anl_ar anl_dash_bt anl_br anl_bb anl_ita red anl_bck_text_0 anl_pr10">&nbsp;</td>
- <td class="anl_ac anl_dash_bt anl_bb anl_ita red anl_bck_text_0">&nbsp;</td>
- </tr>
- <tr>
- <td colspan="6"
- style="font-size: 1px; height: 2px; line-height: 3px; border-right: 1px solid white;"
- class="cll_clps">&nbsp;</td>
- </tr>
- <tr>
- <td colspan="2" class="anl_br">&nbsp;</td>
- <td
- class="anl_bb anl_bt anl_br anl_p5 anl_ac anl_variabla_line anl_bck">Povprečje</td>
- <td class="anl_bb anl_bt anl_br anl_ac anl_bck">1.67</td>
- <td
- class="anl_bb anl_bt anl_br anl_p5 anl_ac anl_variabla_line anl_bck">Std.
- Odklon</td>
- <td class="anl_bb anl_bt anl_ac anl_bck">0.50</td>
- </tr>
- </tbody>
-</table>
-<br />
-<table class="anl_tbl anl_bt anl_br anl_bb tbl_clps">
- <tbody>
- <tr>
- <td class="anl_bl anl_br anl_bb anl_ac anl_bck_freq_1 anl_w110"><span
- class="anl_variabla"><a href="#">Q2</a></span></td>
- <td colspan="7" class="anl_br anl_bb anl_al anl_bck_freq_1"><span
- class="anl_variabla_label">Dohodek</span></td>
- </tr>
- <tr>
- <td class="anl_bl anl_br anl_bb anl_ac anl_bck"><span
- class="taCenter printHide iconHide"><a href="#"><span
- title="Sumarne frekvence (print, pdf, word, excel)"
- class="sprites analysis_sums"></span></a><a href="#"><span
- title="Opisne statistike (print, pdf, word, excel)"
- class="sprites analysis_statistic_gray"></span></a><a href="#"><span
- title="Osnovne frekvence (print, pdf, word, excel)"
- class="sprites analysis_frequencys_gray"></span></a></span></td>
- <td class="anl_br anl_bb anl_ac anl_bck anl_variabla_line">Podvprašanja</td>
- <td
- class="anl_br anl_ac anl_bck anl_bb anl_w70 anl_legend anl_variabla_line">Veljavno</td>
- <td
- class="anl_br anl_ac anl_bck anl_bb anl_w70 anl_legend anl_variabla_line">Št.
- enot</td>
- <td
- class="anl_br anl_ac anl_bck anl_bb anl_w70 anl_legend anl_variabla_line">Povprečje</td>
- <td
- class="anl_br anl_ac anl_bck anl_bb anl_w70 anl_legend anl_variabla_line">Std.
- Odklon</td>
- <td
- class="anl_br anl_ac anl_bck anl_bb anl_w70 anl_legend anl_variabla_line">Minimum</td>
- <td
- class="anl_bck anl_ac anl_bb anl_w70 anl_legend anl_variabla_line">Maksimum</td>
- </tr>
- <tr>
- <td
- class="anl_bck_desc_2 anl_ac anl_bl anl_br anl_variabla_sub anl_bt_dot">Q2_1</td>
- <td class="anl_bck_desc_2 anl_al anl_br anl_bt_dot">v €</td>
- <td class="anl_bck_desc_2 anl_ac anl_br anl_bl anl_bt_dot">9</td>
- <td class="anl_bck_desc_2 anl_ac anl_br anl_bt_dot">9</td>
- <td class="anl_bck_desc_2 anl_ac anl_br anl_bt_dot">1,400.00</td>
- <td class="anl_bck_desc_2 anl_ac anl_br anl_bt_dot">342.78</td>
- <td class="anl_bck_desc_2 anl_ac anl_br anl_bt_dot">900</td>
- <td class="anl_bck_desc_2 anl_ac anl_br anl_bt_dot">2000</td>
- </tr>
- </tbody>
-</table>
-<br>
-<table class="anl_tbl anl_bt anl_br tbl_clps">
- <tbody>
- <tr>
- <td class="anl_bl anl_br anl_bb anl_ac anl_bck_freq_1 anl_w110"><span
- class="anl_variabla"><a href="#">Q3</a></span></td>
- <td colspan="5" class="anl_br anl_bb anl_al anl_bck_freq_1"><span
- class="anl_variabla_label">Država</span></td>
- </tr>
- <tr>
- <td class="anl_bl anl_br anl_bb anl_ac anl_bck anl_w110"><span
- class="taCenter printHide iconHide"><a href="#"><span
- title="Sumarne frekvence (print, pdf, word, excel)"
- class="sprites analysis_sums_gray"></span></a><a href="#"><span
- title="Dopolnjene frekvence (print, pdf, word, excel)"
- class="sprites analysis_sums_new"></span></a><a href="#"><span
- title="Opisne statistike (print, pdf, word, excel)"
- class="sprites analysis_statistic_gray"></span></a><a href="#"><span
- title="Osnovne frekvence (print, pdf, word, excel)"
- class="sprites analysis_frequencys_gray"></span></a></span></td>
- <td class="anl_br anl_bb anl_ac anl_bck anl_variabla_line">Odgovori</td>
- <td class="anl_br anl_bb anl_ac anl_bck anl_w70 anl_variabla_line">Frekvenca</td>
- <td class="anl_br anl_bb anl_ac anl_bck anl_w70 anl_variabla_line">Odstotek</td>
- <td class="anl_br anl_bb anl_ac anl_bck anl_w70 anl_variabla_line">Veljavni</td>
- <td class="anl_br anl_bb anl_ac anl_bck anl_w70 anl_variabla_line">Kumulativa</td>
- </tr>
- <tr>
- <td class="anl_bl anl_ac anl_br gray">&nbsp;</td>
- <td class="anl_br anl_bck_0_0"><div class="anl_user_text_more">1</div>
- (Slovenija)</td>
- <td class="anl_ac anl_br anl_bck_0_0">2</td>
- <td class="anl_ar anl_br anl_bck_0_0 anl_pr10">22.2%</td>
- <td class="anl_ar anl_br anl_bck_0_0 anl_pr10">22.2%</td>
- <td class="anl_ar anl_bck_0_0 anl_pr10">22.2%</td>
- </tr>
- <tr>
- <td class="anl_bl anl_ac anl_br gray">&nbsp;</td>
- <td class="anl_br anl_bck_0_1"><div class="anl_user_text_more">2</div>
- (Hrvaška)</td>
- <td class="anl_ac anl_br anl_bck_0_1">2</td>
- <td class="anl_ar anl_br anl_bck_0_1 anl_pr10">22.2%</td>
- <td class="anl_ar anl_br anl_bck_0_1 anl_pr10">22.2%</td>
- <td class="anl_ar anl_bck_0_1 anl_pr10">44.4%</td>
- </tr>
- <tr>
- <td class="anl_bl anl_ac anl_br gray">&nbsp;</td>
- <td class="anl_br anl_bck_0_0"><div class="anl_user_text_more">3</div>
- (Avstrija)</td>
- <td class="anl_ac anl_br anl_bck_0_0">2</td>
- <td class="anl_ar anl_br anl_bck_0_0 anl_pr10">22.2%</td>
- <td class="anl_ar anl_br anl_bck_0_0 anl_pr10">22.2%</td>
- <td class="anl_ar anl_bck_0_0 anl_pr10">66.7%</td>
- </tr>
- <tr >
- <td class="anl_bl anl_ac anl_br gray">&nbsp;</td>
- <td class="anl_br anl_bck_0_1"><div class="anl_user_text_more">4</div>
- (Italija)</td>
- <td class="anl_ac anl_br anl_bck_0_1">1</td>
- <td class="anl_ar anl_br anl_bck_0_1 anl_pr10">11.1%</td>
- <td class="anl_ar anl_br anl_bck_0_1 anl_pr10">11.1%</td>
- <td class="anl_ar anl_bck_0_1 anl_pr10">77.8%</td>
- </tr>
- <tr >
- <td class="anl_bl anl_ac anl_br gray">&nbsp;</td>
- <td class="anl_br anl_bck_0_0"><div class="anl_user_text_more">5</div>
- (Madžarska)</td>
- <td class="anl_ac anl_br anl_bck_0_0">2</td>
- <td class="anl_ar anl_br anl_bck_0_0 anl_pr10">22.2%</td>
- <td class="anl_ar anl_br anl_bck_0_0 anl_pr10">22.2%</td>
- <td class="anl_ar anl_bck_0_0 anl_pr10">100.0%</td>
- </tr>
- <tr class="anl_bb" >
- <td class="anl_bl anl_br anl_al gray anl_ti_20 anl_bck_text_1">Veljavni<span
- value="0" class="gray" >&nbsp;(<span
- style="width: 12px; height: 12px"
- class="sprites plus_orange folder_plusminus"></span>)
- </span><span class="gray displayNone"
- >&nbsp;(<span
- style="width: 12px; height: 12px"
- class="sprites minus_orange folder_plusminus"></span>)
- </span></td>
- <td class="anl_br anl_al anl_ita red anl_bck_text_1">Skupaj</td>
- <td class="anl_ita red anl_br anl_ac anl_bck_text_1">9</td>
- <td class="anl_ita red anl_br anl_ar anl_bck_text_1 anl_pr10">100.0%</td>
- <td class="anl_ita red anl_br anl_ar anl_bck_text_1 anl_pr10">100.0%</td>
- <td class="anl_ita red anl_ac anl_bck_text_1">&nbsp;</td>
- </tr>
- <tr class="anl_dash_red_bb displayNone" >
- <td class="anl_bl anl_al anl_br gray anl_ti_20 anl_bck_text_1">Manjkajoči</td>
- <td class="anl_br anl_ita red anl_bck_text_1">Skupaj<span
- class="printHide anl_ita anl_detail_percent" >&nbsp;&nbsp;<a
- href="#single_missing_8"> <span
- style="width: 12px; height: 12px"
- class="sprites plus_orange folder_plusminus"></span>
- </a></span><span class="printHide anl_ita anl_detail_percent displayNone"
- >&nbsp;&nbsp;<a
- href="#single_missing_8"> <span
- style="width: 12px; height: 12px"
- class="sprites minus_orange folder_plusminus"></span>
- </a></span>
- <div
- class="floatRight anl_w50 anl_dash_bl anl_dash_bt anl_ac anl_detail_percent displayNone"
- >100.0%</div>
- <div
- class="floatRight anl_w30 anl_dash_bt anl_ac anl_detail_percent displayNone"
- ></div>
- </td>
- <td class="anl_ac anl_br anl_detail_cnt anl_ita red anl_bck_text_1">0</td>
- <td class="anl_ar anl_br anl_ita red anl_bck_text_1 anl_pr10">0.0%</td>
- <td class="anl_ar anl_br anl_ita red anl_bck_text_1 anl_pr10"><span
- >&nbsp;</span></td>
- <td class="anl_ar anl_ita red anl_bck_text_1 anl_pr10">&nbsp;</td>
- </tr>
- <tr class="displayNone" >
- <td
- class="anl_bl anl_ac anl_dash_bt anl_bb red anl_ita anl_bck_text_0">SKUPAJ</td>
- <td class="anl_dash_bt anl_br anl_bb anl_bck_text_0">&nbsp;</td>
- <td
- class="anl_ac anl_dash_bt anl_br anl_bb anl_ita red anl_bck_text_0">9</td>
- <td
- class="anl_ar anl_dash_bt anl_br anl_bb anl_ita red anl_bck_text_0 anl_pr10">100.0%</td>
- <td
- class="anl_ar anl_dash_bt anl_br anl_bb anl_ita red anl_bck_text_0 anl_pr10">&nbsp;</td>
- <td class="anl_ac anl_dash_bt anl_bb anl_ita red anl_bck_text_0">&nbsp;</td>
- </tr>
- <tr>
- <td colspan="6"
- style="font-size: 1px; height: 2px; line-height: 3px; border-right: 1px solid white;"
- class="cll_clps">&nbsp;</td>
- </tr>
- <tr>
- <td colspan="2" class="anl_br">&nbsp;</td>
- <td
- class="anl_bb anl_bt anl_br anl_p5 anl_ac anl_variabla_line anl_bck">Povprečje</td>
- <td class="anl_bb anl_bt anl_br anl_ac anl_bck">2.89</td>
- <td
- class="anl_bb anl_bt anl_br anl_p5 anl_ac anl_variabla_line anl_bck">Std.
- Odklon</td>
- <td class="anl_bb anl_bt anl_ac anl_bck">1.54</td>
- </tr>
- </tbody>
-</table> \ No newline at end of file
diff --git a/admin/survey/classes/staticHtml/AnalizaPredogledSumarnik.min.html b/admin/survey/classes/staticHtml/AnalizaPredogledSumarnik.min.html
deleted file mode 100644
index 6d2c2a9..0000000
--- a/admin/survey/classes/staticHtml/AnalizaPredogledSumarnik.min.html
+++ /dev/null
@@ -1,2 +0,0 @@
-
-<table class="anl_tbl anl_bt anl_br tbl_clps"><tbody><tr><td class="anl_bl anl_br anl_bb anl_ac anl_bck_freq_1 anl_w110"><span class="anl_variabla"><a href="#">Q1</a></span></td><td colspan="5" class="anl_br anl_bb anl_al anl_bck_freq_1"><span class="anl_variabla_label">Spol</span></td></tr><tr><td class="anl_bl anl_br anl_bb anl_ac anl_bck anl_w110"><span class="taCenter printHide iconHide"><a href="#"><span title="Sumarne frekvence (print, pdf, word, excel)" class="sprites analysis_sums_gray"></span></a><a href="#"><span title="Dopolnjene frekvence (print, pdf, word, excel)" class="sprites analysis_sums_new"></span></a><a href="#"><span title="Opisne statistike (print, pdf, word, excel)" class="sprites analysis_statistic_gray"></span></a><a href="#"><span title="Osnovne frekvence (print, pdf, word, excel)" class="sprites analysis_frequencys_gray"></span></a></span></td><td class="anl_br anl_bb anl_ac anl_bck anl_variabla_line">Odgovori</td><td class="anl_br anl_bb anl_ac anl_bck anl_w70 anl_variabla_line">Frekvenca</td><td class="anl_br anl_bb anl_ac anl_bck anl_w70 anl_variabla_line">Odstotek</td><td class="anl_br anl_bb anl_ac anl_bck anl_w70 anl_variabla_line">Veljavni</td><td class="anl_br anl_bb anl_ac anl_bck anl_w70 anl_variabla_line">Kumulativa</td></tr><tr><td class="anl_bl anl_ac anl_br gray">&nbsp;</td><td class="anl_br anl_bck_0_0"><div class="anl_user_text_more">1</div> (Moški)</td><td class="anl_ac anl_br anl_bck_0_0">3</td><td class="anl_ar anl_br anl_bck_0_0 anl_pr10">33.3%</td><td class="anl_ar anl_br anl_bck_0_0 anl_pr10">33.3%</td><td class="anl_ar anl_bck_0_0 anl_pr10">33.3%</td></tr><tr><td class="anl_bl anl_ac anl_br gray">&nbsp;</td><td class="anl_br anl_bck_0_1"><div class="anl_user_text_more">2</div> (Ženski)</td><td class="anl_ac anl_br anl_bck_0_1">6</td><td class="anl_ar anl_br anl_bck_0_1 anl_pr10">66.7%</td><td class="anl_ar anl_br anl_bck_0_1 anl_pr10">66.7%</td><td class="anl_ar anl_bck_0_1 anl_pr10">100.0%</td></tr><tr class="anl_bb"><td class="anl_bl anl_br anl_al gray anl_ti_20 anl_bck_text_1">Veljavni<span value="0" class=" gray">&nbsp;(<span style="width: 12px; height: 12px" class="sprites plus_orange folder_plusminus"></span>) </span><span class=" gray displayNone">&nbsp;(<span style="width: 12px; height: 12px" class="sprites minus_orange folder_plusminus"></span>) </span></td><td class="anl_br anl_al anl_ita red anl_bck_text_1">Skupaj</td><td class="anl_ita red anl_br anl_ac anl_bck_text_1">9</td><td class="anl_ita red anl_br anl_ar anl_bck_text_1 anl_pr10">100.0%</td><td class="anl_ita red anl_br anl_ar anl_bck_text_1 anl_pr10">100.0%</td><td class="anl_ita red anl_ac anl_bck_text_1">&nbsp;</td></tr><tr class="anl_dash_red_bb displayNone"><td class="anl_bl anl_al anl_br gray anl_ti_20 anl_bck_text_1">Manjkajoči</td><td class="anl_br anl_ita red anl_bck_text_1">Skupaj<span class="printHide anl_ita anl_detail_percent">&nbsp;&nbsp;<a href="#single_missing_6"><span style="width: 12px; height: 12px" class="sprites plus_orange folder_plusminus"></span></a></span><span class="printHide anl_ita anl_detail_percent displayNone">&nbsp;&nbsp;<a href="#single_missing_6"><span style="width: 12px; height: 12px" class="sprites minus_orange folder_plusminus"></span></a></span><div class="floatRight anl_w50 anl_dash_bl anl_dash_bt anl_ac anl_detail_percent displayNone">100.0%</div><div class="floatRight anl_w30 anl_dash_bt anl_ac anl_detail_percent displayNone"></div></td><td class="anl_ac anl_br anl_detail_cnt anl_ita red anl_bck_text_1">0</td><td class="anl_ar anl_br anl_ita red anl_bck_text_1 anl_pr10">0.0%</td><td class="anl_ar anl_br anl_ita red anl_bck_text_1 anl_pr10"><span>&nbsp;</span></td><td class="anl_ar anl_ita red anl_bck_text_1 anl_pr10">&nbsp;</td></tr><tr class="displayNone"><td class="anl_bl anl_ac anl_dash_bt anl_bb red anl_ita anl_bck_text_0">SKUPAJ</td><td class="anl_dash_bt anl_br anl_bb anl_bck_text_0">&nbsp;</td><td class="anl_ac anl_dash_bt anl_br anl_bb anl_ita red anl_bck_text_0">9</td><td class="anl_ar anl_dash_bt anl_br anl_bb anl_ita red anl_bck_text_0 anl_pr10">100.0%</td><td class="anl_ar anl_dash_bt anl_br anl_bb anl_ita red anl_bck_text_0 anl_pr10">&nbsp;</td><td class="anl_ac anl_dash_bt anl_bb anl_ita red anl_bck_text_0">&nbsp;</td></tr><tr><td colspan="6" style="font-size: 1px; height: 2px; line-height: 3px; border-right: 1px solid white;" class="cll_clps">&nbsp;</td></tr><tr><td colspan="2" class="anl_br">&nbsp;</td><td class="anl_bb anl_bt anl_br anl_p5 anl_ac anl_variabla_line anl_bck">Povprečje</td><td class="anl_bb anl_bt anl_br anl_ac anl_bck">1.67</td><td class="anl_bb anl_bt anl_br anl_p5 anl_ac anl_variabla_line anl_bck">Std. Odklon</td><td class="anl_bb anl_bt anl_ac anl_bck">0.50</td></tr></tbody></table><br/><table class="anl_tbl anl_bt anl_br anl_bb tbl_clps"><tbody><tr><td class="anl_bl anl_br anl_bb anl_ac anl_bck_freq_1 anl_w110"><span class="anl_variabla"><a href="#">Q2</a></span></td><td colspan="7" class="anl_br anl_bb anl_al anl_bck_freq_1"><span class="anl_variabla_label">Dohodek</span></td></tr><tr><td class="anl_bl anl_br anl_bb anl_ac anl_bck"><span class="taCenter printHide iconHide"><a href="#"><span title="Sumarne frekvence (print, pdf, word, excel)" class="sprites analysis_sums"></span></a><a href="#"><span title="Opisne statistike (print, pdf, word, excel)" class="sprites analysis_statistic_gray"></span></a><a href="#"><span title="Osnovne frekvence (print, pdf, word, excel)" class="sprites analysis_frequencys_gray"></span></a></span></td><td class="anl_br anl_bb anl_ac anl_bck anl_variabla_line">Podvprašanja</td><td class="anl_br anl_ac anl_bck anl_bb anl_w70 anl_legend anl_variabla_line">Veljavno</td><td class="anl_br anl_ac anl_bck anl_bb anl_w70 anl_legend anl_variabla_line">Št. enot</td><td class="anl_br anl_ac anl_bck anl_bb anl_w70 anl_legend anl_variabla_line">Povprečje</td><td class="anl_br anl_ac anl_bck anl_bb anl_w70 anl_legend anl_variabla_line">Std. Odklon</td><td class="anl_br anl_ac anl_bck anl_bb anl_w70 anl_legend anl_variabla_line">Minimum</td><td class="anl_bck anl_ac anl_bb anl_w70 anl_legend anl_variabla_line">Maksimum</td></tr><tr><td class="anl_bck_desc_2 anl_ac anl_bl anl_br anl_variabla_sub anl_bt_dot">Q2_1</td><td class="anl_bck_desc_2 anl_al anl_br anl_bt_dot">v €</td><td class="anl_bck_desc_2 anl_ac anl_br anl_bl anl_bt_dot">9</td><td class="anl_bck_desc_2 anl_ac anl_br anl_bt_dot">9</td><td class="anl_bck_desc_2 anl_ac anl_br anl_bt_dot">1,400.00</td><td class="anl_bck_desc_2 anl_ac anl_br anl_bt_dot">342.78</td><td class="anl_bck_desc_2 anl_ac anl_br anl_bt_dot">900</td><td class="anl_bck_desc_2 anl_ac anl_br anl_bt_dot">2000</td></tr></tbody></table><br><table class="anl_tbl anl_bt anl_br tbl_clps"><tbody><tr><td class="anl_bl anl_br anl_bb anl_ac anl_bck_freq_1 anl_w110"><span class="anl_variabla"><a href="#">Q3</a></span></td><td colspan="5" class="anl_br anl_bb anl_al anl_bck_freq_1"><span class="anl_variabla_label">Država</span></td></tr><tr><td class="anl_bl anl_br anl_bb anl_ac anl_bck anl_w110"><span class="taCenter printHide iconHide"><a href="#"><span title="Sumarne frekvence (print, pdf, word, excel)" class="sprites analysis_sums_gray"></span></a><a href="#"><span title="Dopolnjene frekvence (print, pdf, word, excel)" class="sprites analysis_sums_new"></span></a><a href="#"><span title="Opisne statistike (print, pdf, word, excel)" class="sprites analysis_statistic_gray"></span></a><a href="#"><span title="Osnovne frekvence (print, pdf, word, excel)" class="sprites analysis_frequencys_gray"></span></a></span></td><td class="anl_br anl_bb anl_ac anl_bck anl_variabla_line">Odgovori</td><td class="anl_br anl_bb anl_ac anl_bck anl_w70 anl_variabla_line">Frekvenca</td><td class="anl_br anl_bb anl_ac anl_bck anl_w70 anl_variabla_line">Odstotek</td><td class="anl_br anl_bb anl_ac anl_bck anl_w70 anl_variabla_line">Veljavni</td><td class="anl_br anl_bb anl_ac anl_bck anl_w70 anl_variabla_line">Kumulativa</td></tr><tr><td class="anl_bl anl_ac anl_br gray">&nbsp;</td><td class="anl_br anl_bck_0_0"><div class="anl_user_text_more">1</div> (Slovenija)</td><td class="anl_ac anl_br anl_bck_0_0">2</td><td class="anl_ar anl_br anl_bck_0_0 anl_pr10">22.2%</td><td class="anl_ar anl_br anl_bck_0_0 anl_pr10">22.2%</td><td class="anl_ar anl_bck_0_0 anl_pr10">22.2%</td></tr><tr><td class="anl_bl anl_ac anl_br gray">&nbsp;</td><td class="anl_br anl_bck_0_1"><div class="anl_user_text_more">2</div> (Hrvaška)</td><td class="anl_ac anl_br anl_bck_0_1">2</td><td class="anl_ar anl_br anl_bck_0_1 anl_pr10">22.2%</td><td class="anl_ar anl_br anl_bck_0_1 anl_pr10">22.2%</td><td class="anl_ar anl_bck_0_1 anl_pr10">44.4%</td></tr><tr><td class="anl_bl anl_ac anl_br gray">&nbsp;</td><td class="anl_br anl_bck_0_0"><div class="anl_user_text_more">3</div> (Avstrija)</td><td class="anl_ac anl_br anl_bck_0_0">2</td><td class="anl_ar anl_br anl_bck_0_0 anl_pr10">22.2%</td><td class="anl_ar anl_br anl_bck_0_0 anl_pr10">22.2%</td><td class="anl_ar anl_bck_0_0 anl_pr10">66.7%</td></tr><tr><td class="anl_bl anl_ac anl_br gray">&nbsp;</td><td class="anl_br anl_bck_0_1"><div class="anl_user_text_more">4</div> (Italija)</td><td class="anl_ac anl_br anl_bck_0_1">1</td><td class="anl_ar anl_br anl_bck_0_1 anl_pr10">11.1%</td><td class="anl_ar anl_br anl_bck_0_1 anl_pr10">11.1%</td><td class="anl_ar anl_bck_0_1 anl_pr10">77.8%</td></tr><tr><td class="anl_bl anl_ac anl_br gray">&nbsp;</td><td class="anl_br anl_bck_0_0"><div class="anl_user_text_more">5</div> (Madžarska)</td><td class="anl_ac anl_br anl_bck_0_0">2</td><td class="anl_ar anl_br anl_bck_0_0 anl_pr10">22.2%</td><td class="anl_ar anl_br anl_bck_0_0 anl_pr10">22.2%</td><td class="anl_ar anl_bck_0_0 anl_pr10">100.0%</td></tr><tr class="anl_bb"><td class="anl_bl anl_br anl_al gray anl_ti_20 anl_bck_text_1">Veljavni<span value="0" class="gray">&nbsp;(<span style="width: 12px; height: 12px" class="sprites plus_orange folder_plusminus"></span>) </span><span class="gray displayNone">&nbsp;(<span style="width: 12px; height: 12px" class="sprites minus_orange folder_plusminus"></span>) </span></td><td class="anl_br anl_al anl_ita red anl_bck_text_1">Skupaj</td><td class="anl_ita red anl_br anl_ac anl_bck_text_1">9</td><td class="anl_ita red anl_br anl_ar anl_bck_text_1 anl_pr10">100.0%</td><td class="anl_ita red anl_br anl_ar anl_bck_text_1 anl_pr10">100.0%</td><td class="anl_ita red anl_ac anl_bck_text_1">&nbsp;</td></tr><tr class="anl_dash_red_bb displayNone"><td class="anl_bl anl_al anl_br gray anl_ti_20 anl_bck_text_1">Manjkajoči</td><td class="anl_br anl_ita red anl_bck_text_1">Skupaj<span class="printHide anl_ita anl_detail_percent">&nbsp;&nbsp;<a href="#single_missing_8"><span style="width: 12px; height: 12px" class="sprites plus_orange folder_plusminus"></span></a></span><span class="printHide anl_ita anl_detail_percent displayNone">&nbsp;&nbsp;<a href="#single_missing_8"><span style="width: 12px; height: 12px" class="sprites minus_orange folder_plusminus"></span></a></span><div class="floatRight anl_w50 anl_dash_bl anl_dash_bt anl_ac anl_detail_percent displayNone">100.0%</div><div class="floatRight anl_w30 anl_dash_bt anl_ac anl_detail_percent displayNone"></div></td><td class="anl_ac anl_br anl_detail_cnt anl_ita red anl_bck_text_1">0</td><td class="anl_ar anl_br anl_ita red anl_bck_text_1 anl_pr10">0.0%</td><td class="anl_ar anl_br anl_ita red anl_bck_text_1 anl_pr10"><span>&nbsp;</span></td><td class="anl_ar anl_ita red anl_bck_text_1 anl_pr10">&nbsp;</td></tr><tr class="displayNone"><td class="anl_bl anl_ac anl_dash_bt anl_bb red anl_ita anl_bck_text_0">SKUPAJ</td><td class="anl_dash_bt anl_br anl_bb anl_bck_text_0">&nbsp;</td><td class="anl_ac anl_dash_bt anl_br anl_bb anl_ita red anl_bck_text_0">9</td><td class="anl_ar anl_dash_bt anl_br anl_bb anl_ita red anl_bck_text_0 anl_pr10">100.0%</td><td class="anl_ar anl_dash_bt anl_br anl_bb anl_ita red anl_bck_text_0 anl_pr10">&nbsp;</td><td class="anl_ac anl_dash_bt anl_bb anl_ita red anl_bck_text_0">&nbsp;</td></tr><tr><td colspan="6" style="font-size: 1px; height: 2px; line-height: 3px; border-right: 1px solid white;" class="cll_clps">&nbsp;</td></tr><tr><td colspan="2" class="anl_br">&nbsp;</td><td class="anl_bb anl_bt anl_br anl_p5 anl_ac anl_variabla_line anl_bck">Povprečje</td><td class="anl_bb anl_bt anl_br anl_ac anl_bck">2.89</td><td class="anl_bb anl_bt anl_br anl_p5 anl_ac anl_variabla_line anl_bck">Std. Odklon</td><td class="anl_bb anl_bt anl_ac anl_bck">1.54</td></tr></tbody></table> \ No newline at end of file
diff --git a/admin/survey/classes/staticHtml/AnalizaPredogledTTest.html b/admin/survey/classes/staticHtml/AnalizaPredogledTTest.html
deleted file mode 100644
index 0503c76..0000000
--- a/admin/survey/classes/staticHtml/AnalizaPredogledTTest.html
+++ /dev/null
@@ -1,41 +0,0 @@
- <table border="0" class="ttestTable">
- <tbody>
- <tr>
- <td rowspan="2" class="lightGreen"><span class="anl_variabla"><a
- href="#">(Q1)Spol</a></span></td>
- <td colspan="8" class="lightGreen"><span class="anl_variabla"><a
- href="#">(Q2) v €</a></span></td>
- </tr>
- <tr>
- <th>n</th>
- <th><span class="avg">x</span></th>
- <th>s²</th>
- <th>se(<span class="avg">x</span>)
- </th>
- <th>±1,96×se(<span class="avg">x</span>)
- </th>
- <th>d</th>
- <th>se(d)</th>
- <th>t</th>
- </tr>
- <tr>
- <td class="lightGreen">Moški</td>
- <td>3</td>
- <td>1,500.000</td>
- <td>200.000</td>
- <td>115.470</td>
- <td>226.321</td>
- <td rowspan="2">150.000</td>
- <td rowspan="2">201.246</td>
- <td rowspan="2">0.745</td>
- </tr>
- <tr>
- <td class="lightGreen">Ženski</td>
- <td>6</td>
- <td>1,350.000</td>
- <td>403.733</td>
- <td>164.823</td>
- <td>323.053</td>
- </tr>
- </tbody>
- </table>
diff --git a/admin/survey/classes/staticHtml/AnalizaPredogledTTest.min.html b/admin/survey/classes/staticHtml/AnalizaPredogledTTest.min.html
deleted file mode 100644
index 44c9216..0000000
--- a/admin/survey/classes/staticHtml/AnalizaPredogledTTest.min.html
+++ /dev/null
@@ -1,2 +0,0 @@
-
-<table border="0" class="ttestTable"><tbody><tr><td rowspan="2" class="lightGreen"><span class="anl_variabla"><a href="#">(Q1)Spol</a></span></td><td colspan="8" class="lightGreen"><span class="anl_variabla"><a href="#">(Q2) v €</a></span></td></tr><tr><th>n</th><th><span class="avg">x</span></th><th>s²</th><th>se(<span class="avg">x</span>) </th><th>±1,96×se(<span class="avg">x</span>) </th><th>d</th><th>se(d)</th><th>t</th></tr><tr><td class="lightGreen">Moški</td><td>3</td><td>1,500.000</td><td>200.000</td><td>115.470</td><td>226.321</td><td rowspan="2">150.000</td><td rowspan="2">201.246</td><td rowspan="2">0.745</td></tr><tr><td class="lightGreen">Ženski</td><td>6</td><td>1,350.000</td><td>403.733</td><td>164.823</td><td>323.053</td></tr></tbody></table> \ No newline at end of file
diff --git a/admin/survey/classes/staticHtml/AnalizaPredogledTabele.html b/admin/survey/classes/staticHtml/AnalizaPredogledTabele.html
deleted file mode 100644
index a24e0aa..0000000
--- a/admin/survey/classes/staticHtml/AnalizaPredogledTabele.html
+++ /dev/null
@@ -1,209 +0,0 @@
-<!-- <br>Χ<sup>2</sup> = 4.500--><table gd2="undefined" sp2="149_0" sq2="6" gd1="undefined" sp1="153_0"
- sq1="8" style="padding: 0px; margin: 0px; margin-top: 10px;"
- class="anl_tbl_crosstab fullWidth fullHeight">
- <colgroup>
- <col style="width: auto; min-width: 100px;">
- <col style="width: 20%;">
- <col style="width: 20%;">
- <col style="width: 20%;">
- <col style="width: 20%;">
- <col style="width: 20%;">
- <col style="width: auto;">
- </colgroup>
- <tbody>
- <tr>
- <td rowspan="2" class="anl_bt anl_bl anl_ac rsdl_bck_title ctbCll"><span
- class="anl_variabla"><a
- title="Predogled vprašanja" href="/">Spol&nbsp;(Q1)</a></span></td>
- <td colspan="5" class="anl_bt anl_bl anl_ac rsdl_bck_title ctbCll"><span
- class="anl_variabla"><a
- title="Predogled vprašanja" href="/">Država&nbsp;(Q3)</a></span></td>
- <td class="anl_bl">&nbsp;</td>
- </tr>
- <tr>
- <td class="anl_bt anl_bl anl_ac rsdl_bck_variable1 ctbCll">Slovenija<br>
- ( 1 )
- </td>
- <td class="anl_bt anl_bl anl_ac rsdl_bck_variable1 ctbCll">Hrvaška<br>
- ( 2 )
- </td>
- <td class="anl_bt anl_bl anl_ac rsdl_bck_variable1 ctbCll">Avstrija<br>
- ( 3 )
- </td>
- <td class="anl_bt anl_bl anl_ac rsdl_bck_variable1 ctbCll">Italija<br>
- ( 4 )
- </td>
- <td class="anl_bt anl_bl anl_ac rsdl_bck_variable1 ctbCll">Madžarska<br>
- ( 5 )
- </td>
- <td
- class="anl_bl anl_bt anl_br anl_ac red anl_ita anl_bck_text_0 rsdl_bck_variable1 ctbCll">Skupaj</td>
- </tr>
- <tr>
- <td class="anl_bt anl_bl anl_ac rsdl_bck_variable1 ctbCll">Moški<br>
- ( 1 )
- </td>
- <td v2="" v1="" n2="Moški" n1="Slovenija" k2="1" k1="1"
- class="ct_in_cell"><table class="ct_in_tbl">
- <tbody>
- <tr>
- <td class="anl_ac rsdl_bck0 ctbCll">1</td>
- </tr>
- </tbody>
- </table></td>
- <td v2="" v1="" n2="Moški" n1="Hrvaška" k2="1" k1="2"
- class="ct_in_cell"><table class="ct_in_tbl">
- <tbody>
- <tr>
- <td class="anl_ac rsdl_bck4 ctbCll">0</td>
- </tr>
- </tbody>
- </table></td>
- <td v2="" v1="" n2="Moški" n1="Avstrija" k2="1" k1="3"
- class="ct_in_cell"><table class="ct_in_tbl">
- <tbody>
- <tr>
- <td class="anl_ac rsdl_bck0 ctbCll">1</td>
- </tr>
- </tbody>
- </table></td>
- <td v2="" v1="" n2="Moški" n1="Italija" k2="1" k1="4"
- class="ct_in_cell"><table class="ct_in_tbl">
- <tbody>
- <tr>
- <td class="anl_ac rsdl_bck1 ctbCll">1</td>
- </tr>
- </tbody>
- </table></td>
- <td v2="" v1="" n2="Moški" n1="Madžarska" k2="1" k1="5"
- class="ct_in_cell"><table class="ct_in_tbl">
- <tbody>
- <tr>
- <td class="anl_ac rsdl_bck4 ctbCll">0</td>
- </tr>
- </tbody>
- </table></td>
- <td class="anl_ac anl_bl anl_bt anl_br rsdl_bck0 anl_bb"><table
- style="padding: 0px; margin: 0px;"
- class="anl_tbl_crosstab fullWidth fullHeight">
- <tbody>
- <tr>
- <td colspan="0" class="anl_ac ctbCll crostabSuma">3</td>
- </tr>
- </tbody>
- </table></td>
- </tr>
- <tr>
- <td class="anl_bt anl_bl anl_ac rsdl_bck_variable1 ctbCll">Ženski<br>
- ( 2 )
- </td>
- <td v2="" v1="" n2="Ženski" n1="Slovenija" k2="2" k1="1"
- class="ct_in_cell"><table class="ct_in_tbl">
- <tbody>
- <tr>
- <td class="anl_ac rsdl_bck0 ctbCll">1</td>
- </tr>
- </tbody>
- </table></td>
- <td v2="" v1="" n2="Ženski" n1="Hrvaška" k2="2" k1="2"
- class="ct_in_cell"><table class="ct_in_tbl">
- <tbody>
- <tr>
- <td class="anl_ac rsdl_bck1 ctbCll">2</td>
- </tr>
- </tbody>
- </table></td>
- <td v2="" v1="" n2="Ženski" n1="Avstrija" k2="2" k1="3"
- class="ct_in_cell"><table class="ct_in_tbl">
- <tbody>
- <tr>
- <td class="anl_ac rsdl_bck0 ctbCll">1</td>
- </tr>
- </tbody>
- </table></td>
- <td v2="" v1="" n2="Ženski" n1="Italija" k2="2" k1="4"
- class="ct_in_cell"><table class="ct_in_tbl">
- <tbody>
- <tr>
- <td class="anl_ac rsdl_bck4 ctbCll">0</td>
- </tr>
- </tbody>
- </table></td>
- <td v2="" v1="" n2="Ženski" n1="Madžarska" k2="2" k1="5"
- class="ct_in_cell"><table class="ct_in_tbl">
- <tbody>
- <tr>
- <td class="anl_ac rsdl_bck1 ctbCll">2</td>
- </tr>
- </tbody>
- </table></td>
- <td class="anl_ac anl_bl anl_bt anl_br rsdl_bck0 anl_bb"><table
- style="padding: 0px; margin: 0px;"
- class="anl_tbl_crosstab fullWidth fullHeight">
- <tbody>
- <tr>
- <td colspan="0" class="anl_ac ctbCll crostabSuma">6</td>
- </tr>
- </tbody>
- </table></td>
- </tr>
- <tr>
- <td
- class="anl_bb anl_bt anl_bl anl_ac red anl_ita anl_bck_text_0 rsdl_bck_variable1 ctbCll">Skupaj</td>
- <td class="anl_ac anl_bb anl_bt anl_bl rsdl_bck0"><table
- style="padding: 0px; margin: 0px;"
- class="anl_tbl_crosstab fullWidth fullHeight">
- <tbody>
- <tr>
- <td colspan="0" class="anl_ac ctbCll crostabSuma">2</td>
- </tr>
- </tbody>
- </table></td>
- <td class="anl_ac anl_bb anl_bt anl_bl rsdl_bck0"><table
- style="padding: 0px; margin: 0px;"
- class="anl_tbl_crosstab fullWidth fullHeight">
- <tbody>
- <tr>
- <td colspan="0" class="anl_ac ctbCll crostabSuma">2</td>
- </tr>
- </tbody>
- </table></td>
- <td class="anl_ac anl_bb anl_bt anl_bl rsdl_bck0"><table
- style="padding: 0px; margin: 0px;"
- class="anl_tbl_crosstab fullWidth fullHeight">
- <tbody>
- <tr>
- <td colspan="0" class="anl_ac ctbCll crostabSuma">2</td>
- </tr>
- </tbody>
- </table></td>
- <td class="anl_ac anl_bb anl_bt anl_bl rsdl_bck0"><table
- style="padding: 0px; margin: 0px;"
- class="anl_tbl_crosstab fullWidth fullHeight">
- <tbody>
- <tr>
- <td colspan="0" class="anl_ac ctbCll crostabSuma">1</td>
- </tr>
- </tbody>
- </table></td>
- <td class="anl_ac anl_bb anl_bt anl_bl rsdl_bck0"><table
- style="padding: 0px; margin: 0px;"
- class="anl_tbl_crosstab fullWidth fullHeight">
- <tbody>
- <tr>
- <td colspan="0" class="anl_ac ctbCll crostabSuma">2</td>
- </tr>
- </tbody>
- </table></td>
- <td class="anl_ac anl_bt anl_bl anl_br anl_bb rsdl_bck0"><table
- style="padding: 0px; margin: 0px;"
- class="anl_tbl_crosstab fullWidth fullHeight">
- <tbody>
- <tr>
- <td colspan="0" class="anl_ac ctbCll crostabSuma">9</td>
- </tr>
- </tbody>
- </table></td>
- </tr>
- </tbody>
- </table>
diff --git a/admin/survey/classes/staticHtml/AnalizaPredogledTabele.min.html b/admin/survey/classes/staticHtml/AnalizaPredogledTabele.min.html
deleted file mode 100644
index d47f095..0000000
--- a/admin/survey/classes/staticHtml/AnalizaPredogledTabele.min.html
+++ /dev/null
@@ -1,2 +0,0 @@
-
-<table gd2="undefined" sp2="149_0" sq2="6" gd1="undefined" sp1="153_0" sq1="8" style="padding: 0px; margin: 0px; margin-top: 10px;" class="anl_tbl_crosstab fullWidth fullHeight"><colgroup><col style="width: auto; min-width: 100px;"><col style="width: 20%;"><col style="width: 20%;"><col style="width: 20%;"><col style="width: 20%;"><col style="width: 20%;"><col style="width: auto;"></colgroup><tbody><tr><td rowspan="2" class="anl_bt anl_bl anl_ac rsdl_bck_title ctbCll"><span class="anl_variabla"><a title="Predogled vprašanja" href="/">Spol&nbsp;(Q1)</a></span></td><td colspan="5" class="anl_bt anl_bl anl_ac rsdl_bck_title ctbCll"><span class="anl_variabla"><a title="Predogled vprašanja" href="/">Država&nbsp;(Q3)</a></span></td><td class="anl_bl">&nbsp;</td></tr><tr><td class="anl_bt anl_bl anl_ac rsdl_bck_variable1 ctbCll">Slovenija<br> ( 1 ) </td><td class="anl_bt anl_bl anl_ac rsdl_bck_variable1 ctbCll">Hrvaška<br> ( 2 ) </td><td class="anl_bt anl_bl anl_ac rsdl_bck_variable1 ctbCll">Avstrija<br> ( 3 ) </td><td class="anl_bt anl_bl anl_ac rsdl_bck_variable1 ctbCll">Italija<br> ( 4 ) </td><td class="anl_bt anl_bl anl_ac rsdl_bck_variable1 ctbCll">Madžarska<br> ( 5 ) </td><td class="anl_bl anl_bt anl_br anl_ac red anl_ita anl_bck_text_0 rsdl_bck_variable1 ctbCll">Skupaj</td></tr><tr><td class="anl_bt anl_bl anl_ac rsdl_bck_variable1 ctbCll">Moški<br> ( 1 ) </td><td v2="" v1="" n2="Moški" n1="Slovenija" k2="1" k1="1" class="ct_in_cell"><table class="ct_in_tbl"><tbody><tr><td class="anl_ac rsdl_bck0 ctbCll">1</td></tr></tbody></table></td><td v2="" v1="" n2="Moški" n1="Hrvaška" k2="1" k1="2" class="ct_in_cell"><table class="ct_in_tbl"><tbody><tr><td class="anl_ac rsdl_bck4 ctbCll">0</td></tr></tbody></table></td><td v2="" v1="" n2="Moški" n1="Avstrija" k2="1" k1="3" class="ct_in_cell"><table class="ct_in_tbl"><tbody><tr><td class="anl_ac rsdl_bck0 ctbCll">1</td></tr></tbody></table></td><td v2="" v1="" n2="Moški" n1="Italija" k2="1" k1="4" class="ct_in_cell"><table class="ct_in_tbl"><tbody><tr><td class="anl_ac rsdl_bck1 ctbCll">1</td></tr></tbody></table></td><td v2="" v1="" n2="Moški" n1="Madžarska" k2="1" k1="5" class="ct_in_cell"><table class="ct_in_tbl"><tbody><tr><td class="anl_ac rsdl_bck4 ctbCll">0</td></tr></tbody></table></td><td class="anl_ac anl_bl anl_bt anl_br rsdl_bck0 anl_bb"><table style="padding: 0px; margin: 0px;" class="anl_tbl_crosstab fullWidth fullHeight"><tbody><tr><td colspan="0" class="anl_ac ctbCll crostabSuma">3</td></tr></tbody></table></td></tr><tr><td class="anl_bt anl_bl anl_ac rsdl_bck_variable1 ctbCll">Ženski<br> ( 2 ) </td><td v2="" v1="" n2="Ženski" n1="Slovenija" k2="2" k1="1" class="ct_in_cell"><table class="ct_in_tbl"><tbody><tr><td class="anl_ac rsdl_bck0 ctbCll">1</td></tr></tbody></table></td><td v2="" v1="" n2="Ženski" n1="Hrvaška" k2="2" k1="2" class="ct_in_cell"><table class="ct_in_tbl"><tbody><tr><td class="anl_ac rsdl_bck1 ctbCll">2</td></tr></tbody></table></td><td v2="" v1="" n2="Ženski" n1="Avstrija" k2="2" k1="3" class="ct_in_cell"><table class="ct_in_tbl"><tbody><tr><td class="anl_ac rsdl_bck0 ctbCll">1</td></tr></tbody></table></td><td v2="" v1="" n2="Ženski" n1="Italija" k2="2" k1="4" class="ct_in_cell"><table class="ct_in_tbl"><tbody><tr><td class="anl_ac rsdl_bck4 ctbCll">0</td></tr></tbody></table></td><td v2="" v1="" n2="Ženski" n1="Madžarska" k2="2" k1="5" class="ct_in_cell"><table class="ct_in_tbl"><tbody><tr><td class="anl_ac rsdl_bck1 ctbCll">2</td></tr></tbody></table></td><td class="anl_ac anl_bl anl_bt anl_br rsdl_bck0 anl_bb"><table style="padding: 0px; margin: 0px;" class="anl_tbl_crosstab fullWidth fullHeight"><tbody><tr><td colspan="0" class="anl_ac ctbCll crostabSuma">6</td></tr></tbody></table></td></tr><tr><td class="anl_bb anl_bt anl_bl anl_ac red anl_ita anl_bck_text_0 rsdl_bck_variable1 ctbCll">Skupaj</td><td class="anl_ac anl_bb anl_bt anl_bl rsdl_bck0"><table style="padding: 0px; margin: 0px;" class="anl_tbl_crosstab fullWidth fullHeight"><tbody><tr><td colspan="0" class="anl_ac ctbCll crostabSuma">2</td></tr></tbody></table></td><td class="anl_ac anl_bb anl_bt anl_bl rsdl_bck0"><table style="padding: 0px; margin: 0px;" class="anl_tbl_crosstab fullWidth fullHeight"><tbody><tr><td colspan="0" class="anl_ac ctbCll crostabSuma">2</td></tr></tbody></table></td><td class="anl_ac anl_bb anl_bt anl_bl rsdl_bck0"><table style="padding: 0px; margin: 0px;" class="anl_tbl_crosstab fullWidth fullHeight"><tbody><tr><td colspan="0" class="anl_ac ctbCll crostabSuma">2</td></tr></tbody></table></td><td class="anl_ac anl_bb anl_bt anl_bl rsdl_bck0"><table style="padding: 0px; margin: 0px;" class="anl_tbl_crosstab fullWidth fullHeight"><tbody><tr><td colspan="0" class="anl_ac ctbCll crostabSuma">1</td></tr></tbody></table></td><td class="anl_ac anl_bb anl_bt anl_bl rsdl_bck0"><table style="padding: 0px; margin: 0px;" class="anl_tbl_crosstab fullWidth fullHeight"><tbody><tr><td colspan="0" class="anl_ac ctbCll crostabSuma">2</td></tr></tbody></table></td><td class="anl_ac anl_bt anl_bl anl_br anl_bb rsdl_bck0"><table style="padding: 0px; margin: 0px;" class="anl_tbl_crosstab fullWidth fullHeight"><tbody><tr><td colspan="0" class="anl_ac ctbCll crostabSuma">9</td></tr></tbody></table></td></tr></tbody></table> \ No newline at end of file
diff --git a/admin/survey/excel/PHPExcel.php b/admin/survey/excel/PHPExcel.php
deleted file mode 100644
index 455f690..0000000
--- a/admin/survey/excel/PHPExcel.php
+++ /dev/null
@@ -1,823 +0,0 @@
-<?php
-/**
- * PHPExcel
- *
- * Copyright (c) 2006 - 2012 PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-
-/** PHPExcel root directory */
-if (!defined('PHPEXCEL_ROOT')) {
- define('PHPEXCEL_ROOT', dirname(__FILE__) . '/');
- require(PHPEXCEL_ROOT . 'PHPExcel/Autoloader.php');
-}
-
-
-/**
- * PHPExcel
- *
- * @category PHPExcel
- * @package PHPExcel
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- */
-class PHPExcel
-{
- /**
- * Document properties
- *
- * @var PHPExcel_DocumentProperties
- */
- private $_properties;
-
- /**
- * Document security
- *
- * @var PHPExcel_DocumentSecurity
- */
- private $_security;
-
- /**
- * Collection of Worksheet objects
- *
- * @var PHPExcel_Worksheet[]
- */
- private $_workSheetCollection = array();
-
- /**
- * Active sheet index
- *
- * @var int
- */
- private $_activeSheetIndex = 0;
-
- /**
- * Named ranges
- *
- * @var PHPExcel_NamedRange[]
- */
- private $_namedRanges = array();
-
- /**
- * CellXf supervisor
- *
- * @var PHPExcel_Style
- */
- private $_cellXfSupervisor;
-
- /**
- * CellXf collection
- *
- * @var PHPExcel_Style[]
- */
- private $_cellXfCollection = array();
-
- /**
- * CellStyleXf collection
- *
- * @var PHPExcel_Style[]
- */
- private $_cellStyleXfCollection = array();
-
- /**
- * Create a new PHPExcel with one Worksheet
- */
- public function __construct()
- {
- // Initialise worksheet collection and add one worksheet
- $this->_workSheetCollection = array();
- $this->_workSheetCollection[] = new PHPExcel_Worksheet($this);
- $this->_activeSheetIndex = 0;
-
- // Create document properties
- $this->_properties = new PHPExcel_DocumentProperties();
-
- // Create document security
- $this->_security = new PHPExcel_DocumentSecurity();
-
- // Set named ranges
- $this->_namedRanges = array();
-
- // Create the cellXf supervisor
- $this->_cellXfSupervisor = new PHPExcel_Style(true);
- $this->_cellXfSupervisor->bindParent($this);
-
- // Create the default style
- $this->addCellXf(new PHPExcel_Style);
- $this->addCellStyleXf(new PHPExcel_Style);
- }
-
-
- /**
- * Disconnect all worksheets from this PHPExcel workbook object,
- * typically so that the PHPExcel object can be unset
- *
- */
- public function disconnectWorksheets() {
- foreach($this->_workSheetCollection as $k => &$worksheet) {
- $worksheet->disconnectCells();
- $this->_workSheetCollection[$k] = null;
- }
- unset($worksheet);
- $this->_workSheetCollection = array();
- }
-
- /**
- * Get properties
- *
- * @return PHPExcel_DocumentProperties
- */
- public function getProperties()
- {
- return $this->_properties;
- }
-
- /**
- * Set properties
- *
- * @param PHPExcel_DocumentProperties $pValue
- */
- public function setProperties(PHPExcel_DocumentProperties $pValue)
- {
- $this->_properties = $pValue;
- }
-
- /**
- * Get security
- *
- * @return PHPExcel_DocumentSecurity
- */
- public function getSecurity()
- {
- return $this->_security;
- }
-
- /**
- * Set security
- *
- * @param PHPExcel_DocumentSecurity $pValue
- */
- public function setSecurity(PHPExcel_DocumentSecurity $pValue)
- {
- $this->_security = $pValue;
- }
-
- /**
- * Get active sheet
- *
- * @return PHPExcel_Worksheet
- */
- public function getActiveSheet()
- {
- return $this->_workSheetCollection[$this->_activeSheetIndex];
- }
-
- /**
- * Create sheet and add it to this workbook
- *
- * @param int|null $iSheetIndex Index where sheet should go (0,1,..., or null for last)
- * @return PHPExcel_Worksheet
- * @throws Exception
- */
- public function createSheet($iSheetIndex = NULL)
- {
- $newSheet = new PHPExcel_Worksheet($this);
- $this->addSheet($newSheet, $iSheetIndex);
- return $newSheet;
- }
-
- /**
- * Chech if a sheet with a specified name already exists
- *
- * @param string $pSheetName Name of the worksheet to check
- * @return boolean
- */
- public function sheetNameExists($pSheetName)
- {
- return ($this->getSheetByName($pSheetName) !== NULL);
- }
-
- /**
- * Add sheet
- *
- * @param PHPExcel_Worksheet $pSheet
- * @param int|null $iSheetIndex Index where sheet should go (0,1,..., or null for last)
- * @return PHPExcel_Worksheet
- * @throws Exception
- */
- public function addSheet(PHPExcel_Worksheet $pSheet, $iSheetIndex = NULL)
- {
- if ($this->sheetNameExists($pSheet->getTitle())) {
- throw new Exception("Workbook already contains a worksheet named '{$pSheet->getTitle()}'. Rename this worksheet first.");
- }
-
- if($iSheetIndex === NULL) {
- if ($this->_activeSheetIndex < 0) {
- $this->_activeSheetIndex = 0;
- }
- $this->_workSheetCollection[] = $pSheet;
- } else {
- // Insert the sheet at the requested index
- array_splice(
- $this->_workSheetCollection,
- $iSheetIndex,
- 0,
- array($pSheet)
- );
-
- // Adjust active sheet index if necessary
- if ($this->_activeSheetIndex >= $iSheetIndex) {
- ++$this->_activeSheetIndex;
- }
- }
- return $pSheet;
- }
-
- /**
- * Remove sheet by index
- *
- * @param int $pIndex Active sheet index
- * @throws Exception
- */
- public function removeSheetByIndex($pIndex = 0)
- {
- if ($pIndex > count($this->_workSheetCollection) - 1) {
- throw new Exception("Sheet index is out of bounds.");
- } else {
- array_splice($this->_workSheetCollection, $pIndex, 1);
- }
- // Adjust active sheet index if necessary
- if (($this->_activeSheetIndex >= $pIndex) &&
- ($pIndex > count($this->_workSheetCollection) - 1)) {
- --$this->_activeSheetIndex;
- }
-
- }
-
- /**
- * Get sheet by index
- *
- * @param int $pIndex Sheet index
- * @return PHPExcel_Worksheet
- * @throws Exception
- */
- public function getSheet($pIndex = 0)
- {
- if ($pIndex > count($this->_workSheetCollection) - 1) {
- throw new Exception("Sheet index is out of bounds.");
- } else {
- return $this->_workSheetCollection[$pIndex];
- }
- }
-
- /**
- * Get all sheets
- *
- * @return PHPExcel_Worksheet[]
- */
- public function getAllSheets()
- {
- return $this->_workSheetCollection;
- }
-
- /**
- * Get sheet by name
- *
- * @param string $pName Sheet name
- * @return PHPExcel_Worksheet
- * @throws Exception
- */
- public function getSheetByName($pName = '')
- {
- $worksheetCount = count($this->_workSheetCollection);
- for ($i = 0; $i < $worksheetCount; ++$i) {
- if ($this->_workSheetCollection[$i]->getTitle() == $pName) {
- return $this->_workSheetCollection[$i];
- }
- }
-
- return null;
- }
-
- /**
- * Get index for sheet
- *
- * @param PHPExcel_Worksheet $pSheet
- * @return Sheet index
- * @throws Exception
- */
- public function getIndex(PHPExcel_Worksheet $pSheet)
- {
- foreach ($this->_workSheetCollection as $key => $value) {
- if ($value->getHashCode() == $pSheet->getHashCode()) {
- return $key;
- }
- }
- }
-
- /**
- * Set index for sheet by sheet name.
- *
- * @param string $sheetName Sheet name to modify index for
- * @param int $newIndex New index for the sheet
- * @return New sheet index
- * @throws Exception
- */
- public function setIndexByName($sheetName, $newIndex)
- {
- $oldIndex = $this->getIndex($this->getSheetByName($sheetName));
- $pSheet = array_splice(
- $this->_workSheetCollection,
- $oldIndex,
- 1
- );
- array_splice(
- $this->_workSheetCollection,
- $newIndex,
- 0,
- $pSheet
- );
- return $newIndex;
- }
-
- /**
- * Get sheet count
- *
- * @return int
- */
- public function getSheetCount()
- {
- return count($this->_workSheetCollection);
- }
-
- /**
- * Get active sheet index
- *
- * @return int Active sheet index
- */
- public function getActiveSheetIndex()
- {
- return $this->_activeSheetIndex;
- }
-
- /**
- * Set active sheet index
- *
- * @param int $pIndex Active sheet index
- * @throws Exception
- * @return PHPExcel_Worksheet
- */
- public function setActiveSheetIndex($pIndex = 0)
- {
- if ($pIndex > count($this->_workSheetCollection) - 1) {
- throw new Exception("Active sheet index is out of bounds.");
- } else {
- $this->_activeSheetIndex = $pIndex;
- }
- return $this->getActiveSheet();
- }
-
- /**
- * Set active sheet index by name
- *
- * @param string $pValue Sheet title
- * @return PHPExcel_Worksheet
- * @throws Exception
- */
- public function setActiveSheetIndexByName($pValue = '')
- {
- if (($worksheet = $this->getSheetByName($pValue)) instanceof PHPExcel_Worksheet) {
- $this->setActiveSheetIndex($this->getIndex($worksheet));
- return $worksheet;
- }
-
- throw new Exception('Workbook does not contain sheet:' . $pValue);
- }
-
- /**
- * Get sheet names
- *
- * @return string[]
- */
- public function getSheetNames()
- {
- $returnValue = array();
- $worksheetCount = $this->getSheetCount();
- for ($i = 0; $i < $worksheetCount; ++$i) {
- $returnValue[] = $this->getSheet($i)->getTitle();
- }
-
- return $returnValue;
- }
-
- /**
- * Add external sheet
- *
- * @param PHPExcel_Worksheet $pSheet External sheet to add
- * @param int|null $iSheetIndex Index where sheet should go (0,1,..., or null for last)
- * @throws Exception
- * @return PHPExcel_Worksheet
- */
- public function addExternalSheet(PHPExcel_Worksheet $pSheet, $iSheetIndex = null) {
- if ($this->sheetNameExists($pSheet->getTitle())) {
- throw new Exception("Workbook already contains a worksheet named '{$pSheet->getTitle()}'. Rename the external sheet first.");
- }
-
- // count how many cellXfs there are in this workbook currently, we will need this below
- $countCellXfs = count($this->_cellXfCollection);
-
- // copy all the shared cellXfs from the external workbook and append them to the current
- foreach ($pSheet->getParent()->getCellXfCollection() as $cellXf) {
- $this->addCellXf(clone $cellXf);
- }
-
- // move sheet to this workbook
- $pSheet->rebindParent($this);
-
- // update the cellXfs
- foreach ($pSheet->getCellCollection(false) as $cellID) {
- $cell = $pSheet->getCell($cellID);
- $cell->setXfIndex( $cell->getXfIndex() + $countCellXfs );
- }
-
- return $this->addSheet($pSheet, $iSheetIndex);
- }
-
- /**
- * Get named ranges
- *
- * @return PHPExcel_NamedRange[]
- */
- public function getNamedRanges() {
- return $this->_namedRanges;
- }
-
- /**
- * Add named range
- *
- * @param PHPExcel_NamedRange $namedRange
- * @return PHPExcel
- */
- public function addNamedRange(PHPExcel_NamedRange $namedRange) {
- if ($namedRange->getScope() == null) {
- // global scope
- $this->_namedRanges[$namedRange->getName()] = $namedRange;
- } else {
- // local scope
- $this->_namedRanges[$namedRange->getScope()->getTitle().'!'.$namedRange->getName()] = $namedRange;
- }
- return true;
- }
-
- /**
- * Get named range
- *
- * @param string $namedRange
- * @param PHPExcel_Worksheet|null $pSheet Scope. Use null for global scope
- * @return PHPExcel_NamedRange|null
- */
- public function getNamedRange($namedRange, PHPExcel_Worksheet $pSheet = null) {
- $returnValue = null;
-
- if ($namedRange != '' && ($namedRange !== NULL)) {
- // first look for global defined name
- if (isset($this->_namedRanges[$namedRange])) {
- $returnValue = $this->_namedRanges[$namedRange];
- }
-
- // then look for local defined name (has priority over global defined name if both names exist)
- if (($pSheet !== NULL) && isset($this->_namedRanges[$pSheet->getTitle() . '!' . $namedRange])) {
- $returnValue = $this->_namedRanges[$pSheet->getTitle() . '!' . $namedRange];
- }
- }
-
- return $returnValue;
- }
-
- /**
- * Remove named range
- *
- * @param string $namedRange
- * @param PHPExcel_Worksheet|null $pSheet Scope: use null for global scope.
- * @return PHPExcel
- */
- public function removeNamedRange($namedRange, PHPExcel_Worksheet $pSheet = null) {
- if ($pSheet === NULL) {
- if (isset($this->_namedRanges[$namedRange])) {
- unset($this->_namedRanges[$namedRange]);
- }
- } else {
- if (isset($this->_namedRanges[$pSheet->getTitle() . '!' . $namedRange])) {
- unset($this->_namedRanges[$pSheet->getTitle() . '!' . $namedRange]);
- }
- }
- return $this;
- }
-
- /**
- * Get worksheet iterator
- *
- * @return PHPExcel_WorksheetIterator
- */
- public function getWorksheetIterator() {
- return new PHPExcel_WorksheetIterator($this);
- }
-
- /**
- * Copy workbook (!= clone!)
- *
- * @return PHPExcel
- */
- public function copy() {
- $copied = clone $this;
-
- $worksheetCount = count($this->_workSheetCollection);
- for ($i = 0; $i < $worksheetCount; ++$i) {
- $this->_workSheetCollection[$i] = $this->_workSheetCollection[$i]->copy();
- $this->_workSheetCollection[$i]->rebindParent($this);
- }
-
- return $copied;
- }
-
- /**
- * Implement PHP __clone to create a deep clone, not just a shallow copy.
- */
- public function __clone() {
- foreach($this as $key => $val) {
- if (is_object($val) || (is_array($val))) {
- $this->{$key} = unserialize(serialize($val));
- }
- }
- }
-
- /**
- * Get the workbook collection of cellXfs
- *
- * @return PHPExcel_Style[]
- */
- public function getCellXfCollection()
- {
- return $this->_cellXfCollection;
- }
-
- /**
- * Get cellXf by index
- *
- * @param int $pIndex
- * @return PHPExcel_Style
- */
- public function getCellXfByIndex($pIndex = 0)
- {
- return $this->_cellXfCollection[$pIndex];
- }
-
- /**
- * Get cellXf by hash code
- *
- * @param string $pValue
- * @return PHPExcel_Style|false
- */
- public function getCellXfByHashCode($pValue = '')
- {
- foreach ($this->_cellXfCollection as $cellXf) {
- if ($cellXf->getHashCode() == $pValue) {
- return $cellXf;
- }
- }
- return false;
- }
-
- /**
- * Get default style
- *
- * @return PHPExcel_Style
- * @throws Exception
- */
- public function getDefaultStyle()
- {
- if (isset($this->_cellXfCollection[0])) {
- return $this->_cellXfCollection[0];
- }
- throw new Exception('No default style found for this workbook');
- }
-
- /**
- * Add a cellXf to the workbook
- *
- * @param PHPExcel_Style $style
- */
- public function addCellXf(PHPExcel_Style $style)
- {
- $this->_cellXfCollection[] = $style;
- $style->setIndex(count($this->_cellXfCollection) - 1);
- }
-
- /**
- * Remove cellXf by index. It is ensured that all cells get their xf index updated.
- *
- * @param int $pIndex Index to cellXf
- * @throws Exception
- */
- public function removeCellXfByIndex($pIndex = 0)
- {
- if ($pIndex > count($this->_cellXfCollection) - 1) {
- throw new Exception("CellXf index is out of bounds.");
- } else {
- // first remove the cellXf
- array_splice($this->_cellXfCollection, $pIndex, 1);
-
- // then update cellXf indexes for cells
- foreach ($this->_workSheetCollection as $worksheet) {
- foreach ($worksheet->getCellCollection(false) as $cellID) {
- $cell = $worksheet->getCell($cellID);
- $xfIndex = $cell->getXfIndex();
- if ($xfIndex > $pIndex ) {
- // decrease xf index by 1
- $cell->setXfIndex($xfIndex - 1);
- } else if ($xfIndex == $pIndex) {
- // set to default xf index 0
- $cell->setXfIndex(0);
- }
- }
- }
- }
- }
-
- /**
- * Get the cellXf supervisor
- *
- * @return PHPExcel_Style
- */
- public function getCellXfSupervisor()
- {
- return $this->_cellXfSupervisor;
- }
-
- /**
- * Get the workbook collection of cellStyleXfs
- *
- * @return PHPExcel_Style[]
- */
- public function getCellStyleXfCollection()
- {
- return $this->_cellStyleXfCollection;
- }
-
- /**
- * Get cellStyleXf by index
- *
- * @param int $pIndex
- * @return PHPExcel_Style
- */
- public function getCellStyleXfByIndex($pIndex = 0)
- {
- return $this->_cellStyleXfCollection[$pIndex];
- }
-
- /**
- * Get cellStyleXf by hash code
- *
- * @param string $pValue
- * @return PHPExcel_Style|false
- */
- public function getCellStyleXfByHashCode($pValue = '')
- {
- foreach ($this->_cellXfStyleCollection as $cellStyleXf) {
- if ($cellStyleXf->getHashCode() == $pValue) {
- return $cellStyleXf;
- }
- }
- return false;
- }
-
- /**
- * Add a cellStyleXf to the workbook
- *
- * @param PHPExcel_Style $pStyle
- */
- public function addCellStyleXf(PHPExcel_Style $pStyle)
- {
- $this->_cellStyleXfCollection[] = $pStyle;
- $pStyle->setIndex(count($this->_cellStyleXfCollection) - 1);
- }
-
- /**
- * Remove cellStyleXf by index
- *
- * @param int $pIndex
- * @throws Exception
- */
- public function removeCellStyleXfByIndex($pIndex = 0)
- {
- if ($pIndex > count($this->_cellStyleXfCollection) - 1) {
- throw new Exception("CellStyleXf index is out of bounds.");
- } else {
- array_splice($this->_cellStyleXfCollection, $pIndex, 1);
- }
- }
-
- /**
- * Eliminate all unneeded cellXf and afterwards update the xfIndex for all cells
- * and columns in the workbook
- */
- public function garbageCollect()
- {
- // how many references are there to each cellXf ?
- $countReferencesCellXf = array();
- foreach ($this->_cellXfCollection as $index => $cellXf) {
- $countReferencesCellXf[$index] = 0;
- }
-
- foreach ($this->getWorksheetIterator() as $sheet) {
-
- // from cells
- foreach ($sheet->getCellCollection(false) as $cellID) {
- $cell = $sheet->getCell($cellID);
- ++$countReferencesCellXf[$cell->getXfIndex()];
- }
-
- // from row dimensions
- foreach ($sheet->getRowDimensions() as $rowDimension) {
- if ($rowDimension->getXfIndex() !== null) {
- ++$countReferencesCellXf[$rowDimension->getXfIndex()];
- }
- }
-
- // from column dimensions
- foreach ($sheet->getColumnDimensions() as $columnDimension) {
- ++$countReferencesCellXf[$columnDimension->getXfIndex()];
- }
- }
-
- // remove cellXfs without references and create mapping so we can update xfIndex
- // for all cells and columns
- $countNeededCellXfs = 0;
- foreach ($this->_cellXfCollection as $index => $cellXf) {
- if ($countReferencesCellXf[$index] > 0 || $index == 0) { // we must never remove the first cellXf
- ++$countNeededCellXfs;
- } else {
- unset($this->_cellXfCollection[$index]);
- }
- $map[$index] = $countNeededCellXfs - 1;
- }
- $this->_cellXfCollection = array_values($this->_cellXfCollection);
-
- // update the index for all cellXfs
- foreach ($this->_cellXfCollection as $i => $cellXf) {
- $cellXf->setIndex($i);
- }
-
- // make sure there is always at least one cellXf (there should be)
- if (empty($this->_cellXfCollection)) {
- $this->_cellXfCollection[] = new PHPExcel_Style();
- }
-
- // update the xfIndex for all cells, row dimensions, column dimensions
- foreach ($this->getWorksheetIterator() as $sheet) {
-
- // for all cells
- foreach ($sheet->getCellCollection(false) as $cellID) {
- $cell = $sheet->getCell($cellID);
- $cell->setXfIndex( $map[$cell->getXfIndex()] );
- }
-
- // for all row dimensions
- foreach ($sheet->getRowDimensions() as $rowDimension) {
- if ($rowDimension->getXfIndex() !== null) {
- $rowDimension->setXfIndex( $map[$rowDimension->getXfIndex()] );
- }
- }
-
- // for all column dimensions
- foreach ($sheet->getColumnDimensions() as $columnDimension) {
- $columnDimension->setXfIndex( $map[$columnDimension->getXfIndex()] );
- }
- }
-
- // also do garbage collection for all the sheets
- foreach ($this->getWorksheetIterator() as $sheet) {
- $sheet->garbageCollect();
- }
- }
-
-}
diff --git a/admin/survey/excel/PHPExcel/Autoloader.php b/admin/survey/excel/PHPExcel/Autoloader.php
deleted file mode 100644
index 65ee9ce..0000000
--- a/admin/survey/excel/PHPExcel/Autoloader.php
+++ /dev/null
@@ -1,85 +0,0 @@
-<?php
-/**
- * PHPExcel
- *
- * Copyright (c) 2006 - 2012 PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-PHPExcel_Autoloader::Register();
-// As we always try to run the autoloader before anything else, we can use it to do a few
-// simple checks and initialisations
-PHPExcel_Shared_ZipStreamWrapper::register();
-// check mbstring.func_overload
-if (ini_get('mbstring.func_overload') & 2) {
- throw new Exception('Multibyte function overloading in PHP must be disabled for string functions (2).');
-}
-PHPExcel_Shared_String::buildCharacterSets();
-
-
-/**
- * PHPExcel_Autoloader
- *
- * @category PHPExcel
- * @package PHPExcel
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- */
-class PHPExcel_Autoloader
-{
- /**
- * Register the Autoloader with SPL
- *
- */
- public static function Register() {
- if (function_exists('__autoload')) {
- // Register any existing autoloader function with SPL, so we don't get any clashes
- spl_autoload_register('__autoload');
- }
- // Register ourselves with SPL
- return spl_autoload_register(array('PHPExcel_Autoloader', 'Load'));
- } // function Register()
-
-
- /**
- * Autoload a class identified by name
- *
- * @param string $pClassName Name of the object to load
- */
- public static function Load($pClassName){
- if ((class_exists($pClassName,FALSE)) || (strpos($pClassName, 'PHPExcel') !== 0)) {
- // Either already loaded, or not a PHPExcel class request
- return FALSE;
- }
-
- $pClassFilePath = PHPEXCEL_ROOT .
- str_replace('_',DIRECTORY_SEPARATOR,$pClassName) .
- '.php';
-
- if ((file_exists($pClassFilePath) === false) || (is_readable($pClassFilePath) === false)) {
- // Can't load
- return FALSE;
- }
-
- require($pClassFilePath);
- } // function Load()
-
-} \ No newline at end of file
diff --git a/admin/survey/excel/PHPExcel/CachedObjectStorage/APC.php b/admin/survey/excel/PHPExcel/CachedObjectStorage/APC.php
deleted file mode 100644
index cda4d3b..0000000
--- a/admin/survey/excel/PHPExcel/CachedObjectStorage/APC.php
+++ /dev/null
@@ -1,280 +0,0 @@
-<?php
-/**
- * PHPExcel
- *
- * Copyright (c) 2006 - 2012 PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel_CachedObjectStorage
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-
-/**
- * PHPExcel_CachedObjectStorage_APC
- *
- * @category PHPExcel
- * @package PHPExcel_CachedObjectStorage
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- */
-class PHPExcel_CachedObjectStorage_APC extends PHPExcel_CachedObjectStorage_CacheBase implements PHPExcel_CachedObjectStorage_ICache {
-
- /**
- * Prefix used to uniquely identify cache data for this worksheet
- *
- * @access private
- * @var string
- */
- private $_cachePrefix = null;
-
- /**
- * Cache timeout
- *
- * @access private
- * @var integer
- */
- private $_cacheTime = 600;
-
-
- /**
- * Store cell data in cache for the current cell object if it's "dirty",
- * and the 'nullify' the current cell object
- *
- * @access private
- * @return void
- * @throws Exception
- */
- private function _storeData() {
- if ($this->_currentCellIsDirty) {
- $this->_currentObject->detach();
-
- if (!apc_store($this->_cachePrefix.$this->_currentObjectID.'.cache',serialize($this->_currentObject),$this->_cacheTime)) {
- $this->__destruct();
- throw new Exception('Failed to store cell '.$this->_currentObjectID.' in APC');
- }
- $this->_currentCellIsDirty = false;
- }
- $this->_currentObjectID = $this->_currentObject = null;
- } // function _storeData()
-
-
- /**
- * Add or Update a cell in cache identified by coordinate address
- *
- * @access public
- * @param string $pCoord Coordinate address of the cell to update
- * @param PHPExcel_Cell $cell Cell to update
- * @return void
- * @throws Exception
- */
- public function addCacheData($pCoord, PHPExcel_Cell $cell) {
- if (($pCoord !== $this->_currentObjectID) && ($this->_currentObjectID !== null)) {
- $this->_storeData();
- }
- $this->_cellCache[$pCoord] = true;
-
- $this->_currentObjectID = $pCoord;
- $this->_currentObject = $cell;
- $this->_currentCellIsDirty = true;
-
- return $cell;
- } // function addCacheData()
-
-
- /**
- * Is a value set in the current PHPExcel_CachedObjectStorage_ICache for an indexed cell?
- *
- * @access public
- * @param string $pCoord Coordinate address of the cell to check
- * @return void
- * @return boolean
- */
- public function isDataSet($pCoord) {
- // Check if the requested entry is the current object, or exists in the cache
- if (parent::isDataSet($pCoord)) {
- if ($this->_currentObjectID == $pCoord) {
- return true;
- }
- // Check if the requested entry still exists in apc
- $success = apc_fetch($this->_cachePrefix.$pCoord.'.cache');
- if ($success === false) {
- // Entry no longer exists in APC, so clear it from the cache array
- parent::deleteCacheData($pCoord);
- throw new Exception('Cell entry '.$pCoord.' no longer exists in APC');
- }
- return true;
- }
- return false;
- } // function isDataSet()
-
-
- /**
- * Get cell at a specific coordinate
- *
- * @access public
- * @param string $pCoord Coordinate of the cell
- * @throws Exception
- * @return PHPExcel_Cell Cell that was found, or null if not found
- */
- public function getCacheData($pCoord) {
- if ($pCoord === $this->_currentObjectID) {
- return $this->_currentObject;
- }
- $this->_storeData();
-
- // Check if the entry that has been requested actually exists
- if (parent::isDataSet($pCoord)) {
- $obj = apc_fetch($this->_cachePrefix.$pCoord.'.cache');
- if ($obj === false) {
- // Entry no longer exists in APC, so clear it from the cache array
- parent::deleteCacheData($pCoord);
- throw new Exception('Cell entry '.$pCoord.' no longer exists in APC');
- }
- } else {
- // Return null if requested entry doesn't exist in cache
- return null;
- }
-
- // Set current entry to the requested entry
- $this->_currentObjectID = $pCoord;
- $this->_currentObject = unserialize($obj);
- // Re-attach the parent worksheet
- $this->_currentObject->attach($this->_parent);
-
- // Return requested entry
- return $this->_currentObject;
- } // function getCacheData()
-
-
- /**
- * Delete a cell in cache identified by coordinate address
- *
- * @access public
- * @param string $pCoord Coordinate address of the cell to delete
- * @throws Exception
- */
- public function deleteCacheData($pCoord) {
- // Delete the entry from APC
- apc_delete($this->_cachePrefix.$pCoord.'.cache');
-
- // Delete the entry from our cell address array
- parent::deleteCacheData($pCoord);
- } // function deleteCacheData()
-
-
- /**
- * Clone the cell collection
- *
- * @access public
- * @param PHPExcel_Worksheet $parent The new worksheet
- * @return void
- */
- public function copyCellCollection(PHPExcel_Worksheet $parent) {
- parent::copyCellCollection($parent);
- // Get a new id for the new file name
- $baseUnique = $this->_getUniqueID();
- $newCachePrefix = substr(md5($baseUnique),0,8).'.';
- $cacheList = $this->getCellList();
- foreach($cacheList as $cellID) {
- if ($cellID != $this->_currentObjectID) {
- $obj = apc_fetch($this->_cachePrefix.$cellID.'.cache');
- if ($obj === false) {
- // Entry no longer exists in APC, so clear it from the cache array
- parent::deleteCacheData($cellID);
- throw new Exception('Cell entry '.$cellID.' no longer exists in APC');
- }
- if (!apc_store($newCachePrefix.$cellID.'.cache',$obj,$this->_cacheTime)) {
- $this->__destruct();
- throw new Exception('Failed to store cell '.$cellID.' in APC');
- }
- }
- }
- $this->_cachePrefix = $newCachePrefix;
- } // function copyCellCollection()
-
-
- /**
- * Clear the cell collection and disconnect from our parent
- *
- * @return void
- */
- public function unsetWorksheetCells() {
- if ($this->_currentObject !== NULL) {
- $this->_currentObject->detach();
- $this->_currentObject = $this->_currentObjectID = null;
- }
-
- // Flush the APC cache
- $this->__destruct();
-
- $this->_cellCache = array();
-
- // detach ourself from the worksheet, so that it can then delete this object successfully
- $this->_parent = null;
- } // function unsetWorksheetCells()
-
-
- /**
- * Initialise this new cell collection
- *
- * @param PHPExcel_Worksheet $parent The worksheet for this cell collection
- * @param array of mixed $arguments Additional initialisation arguments
- */
- public function __construct(PHPExcel_Worksheet $parent, $arguments) {
- $cacheTime = (isset($arguments['cacheTime'])) ? $arguments['cacheTime'] : 600;
-
- if ($this->_cachePrefix === NULL) {
- $baseUnique = $this->_getUniqueID();
- $this->_cachePrefix = substr(md5($baseUnique),0,8).'.';
- $this->_cacheTime = $cacheTime;
-
- parent::__construct($parent);
- }
- } // function __construct()
-
-
- /**
- * Destroy this cell collection
- */
- public function __destruct() {
- $cacheList = $this->getCellList();
- foreach($cacheList as $cellID) {
- apc_delete($this->_cachePrefix.$cellID.'.cache');
- }
- } // function __destruct()
-
-
- /**
- * Identify whether the caching method is currently available
- * Some methods are dependent on the availability of certain extensions being enabled in the PHP build
- *
- * @return boolean
- */
- public static function cacheMethodIsAvailable() {
- if (!function_exists('apc_store')) {
- return false;
- }
- if (apc_sma_info() === false) {
- return false;
- }
-
- return true;
- }
-
-}
diff --git a/admin/survey/excel/PHPExcel/CachedObjectStorage/CacheBase.php b/admin/survey/excel/PHPExcel/CachedObjectStorage/CacheBase.php
deleted file mode 100644
index deaae4c..0000000
--- a/admin/survey/excel/PHPExcel/CachedObjectStorage/CacheBase.php
+++ /dev/null
@@ -1,252 +0,0 @@
-<?php
-/**
- * PHPExcel
- *
- * Copyright (c) 2006 - 2012 PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel_CachedObjectStorage
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-
-/**
- * PHPExcel_CachedObjectStorage_CacheBase
- *
- * @category PHPExcel
- * @package PHPExcel_CachedObjectStorage
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- */
-abstract class PHPExcel_CachedObjectStorage_CacheBase {
-
- /**
- * Parent worksheet
- *
- * @var PHPExcel_Worksheet
- */
- protected $_parent;
-
- /**
- * The currently active Cell
- *
- * @var PHPExcel_Cell
- */
- protected $_currentObject = null;
-
- /**
- * Coordinate address of the currently active Cell
- *
- * @var string
- */
- protected $_currentObjectID = null;
-
-
- /**
- * Flag indicating whether the currently active Cell requires saving
- *
- * @var boolean
- */
- protected $_currentCellIsDirty = true;
-
- /**
- * An array of cells or cell pointers for the worksheet cells held in this cache,
- * and indexed by their coordinate address within the worksheet
- *
- * @var array of mixed
- */
- protected $_cellCache = array();
-
-
- /**
- * Initialise this new cell collection
- *
- * @param PHPExcel_Worksheet $parent The worksheet for this cell collection
- */
- public function __construct(PHPExcel_Worksheet $parent) {
- // Set our parent worksheet.
- // This is maintained within the cache controller to facilitate re-attaching it to PHPExcel_Cell objects when
- // they are woken from a serialized state
- $this->_parent = $parent;
- } // function __construct()
-
-
- /**
- * Is a value set in the current PHPExcel_CachedObjectStorage_ICache for an indexed cell?
- *
- * @param string $pCoord Coordinate address of the cell to check
- * @return boolean
- */
- public function isDataSet($pCoord) {
- if ($pCoord === $this->_currentObjectID) {
- return true;
- }
- // Check if the requested entry exists in the cache
- return isset($this->_cellCache[$pCoord]);
- } // function isDataSet()
-
-
- /**
- * Add or Update a cell in cache
- *
- * @param PHPExcel_Cell $cell Cell to update
- * @return void
- * @throws Exception
- */
- public function updateCacheData(PHPExcel_Cell $cell) {
- return $this->addCacheData($cell->getCoordinate(),$cell);
- } // function updateCacheData()
-
-
- /**
- * Delete a cell in cache identified by coordinate address
- *
- * @param string $pCoord Coordinate address of the cell to delete
- * @throws Exception
- */
- public function deleteCacheData($pCoord) {
- if ($pCoord === $this->_currentObjectID) {
- $this->_currentObject->detach();
- $this->_currentObjectID = $this->_currentObject = null;
- }
-
- if (is_object($this->_cellCache[$pCoord])) {
- $this->_cellCache[$pCoord]->detach();
- unset($this->_cellCache[$pCoord]);
- }
- $this->_currentCellIsDirty = false;
- } // function deleteCacheData()
-
-
- /**
- * Get a list of all cell addresses currently held in cache
- *
- * @return array of string
- */
- public function getCellList() {
- return array_keys($this->_cellCache);
- } // function getCellList()
-
-
- /**
- * Sort the list of all cell addresses currently held in cache by row and column
- *
- * @return void
- */
- public function getSortedCellList() {
- $sortKeys = array();
- foreach ($this->getCellList() as $coord) {
- list($column,$row) = sscanf($coord,'%[A-Z]%d');
- $sortKeys[sprintf('%09d%3s',$row,$column)] = $coord;
- }
- ksort($sortKeys);
-
- return array_values($sortKeys);
- } // function sortCellList()
-
-
-
- /**
- * Get highest worksheet column and highest row that have cell records
- *
- * @return array Highest column name and highest row number
- */
- public function getHighestRowAndColumn()
- {
- // Lookup highest column and highest row
- $col = array('A' => '1A');
- $row = array(1);
- foreach ($this->getCellList() as $coord) {
- list($c,$r) = sscanf($coord,'%[A-Z]%d');
- $row[$r] = $r;
- $col[$c] = strlen($c).$c;
- }
- if (!empty($row)) {
- // Determine highest column and row
- $highestRow = max($row);
- $highestColumn = substr(max($col),1);
- }
-
- return array( 'row' => $highestRow,
- 'column' => $highestColumn
- );
- }
-
-
- /**
- * Get highest worksheet column
- *
- * @return string Highest column name
- */
- public function getHighestColumn()
- {
- $colRow = $this->getHighestRowAndColumn();
- return $colRow['column'];
- }
-
- /**
- * Get highest worksheet row
- *
- * @return int Highest row number
- */
- public function getHighestRow()
- {
- $colRow = $this->getHighestRowAndColumn();
- return $colRow['row'];
- }
-
-
- /**
- * Generate a unique ID for cache referencing
- *
- * @return string Unique Reference
- */
- protected function _getUniqueID() {
- if (function_exists('posix_getpid')) {
- $baseUnique = posix_getpid();
- } else {
- $baseUnique = mt_rand();
- }
- return uniqid($baseUnique,true);
- }
-
- /**
- * Clone the cell collection
- *
- * @param PHPExcel_Worksheet $parent The new worksheet
- * @return void
- */
- public function copyCellCollection(PHPExcel_Worksheet $parent) {
- $this->_parent = $parent;
- if (($this->_currentObject !== NULL) && (is_object($this->_currentObject))) {
- $this->_currentObject->attach($parent);
- }
- } // function copyCellCollection()
-
-
- /**
- * Identify whether the caching method is currently available
- * Some methods are dependent on the availability of certain extensions being enabled in the PHP build
- *
- * @return boolean
- */
- public static function cacheMethodIsAvailable() {
- return true;
- }
-
-}
diff --git a/admin/survey/excel/PHPExcel/CachedObjectStorage/DiscISAM.php b/admin/survey/excel/PHPExcel/CachedObjectStorage/DiscISAM.php
deleted file mode 100644
index d93ab05..0000000
--- a/admin/survey/excel/PHPExcel/CachedObjectStorage/DiscISAM.php
+++ /dev/null
@@ -1,205 +0,0 @@
-<?php
-/**
- * PHPExcel
- *
- * Copyright (c) 2006 - 2012 PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel_CachedObjectStorage
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-
-/**
- * PHPExcel_CachedObjectStorage_DiscISAM
- *
- * @category PHPExcel
- * @package PHPExcel_CachedObjectStorage
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- */
-class PHPExcel_CachedObjectStorage_DiscISAM extends PHPExcel_CachedObjectStorage_CacheBase implements PHPExcel_CachedObjectStorage_ICache {
-
- /**
- * Name of the file for this cache
- *
- * @var string
- */
- private $_fileName = null;
-
- /**
- * File handle for this cache file
- *
- * @var resource
- */
- private $_fileHandle = null;
-
- /**
- * Directory/Folder where the cache file is located
- *
- * @var string
- */
- private $_cacheDirectory = NULL;
-
-
- /**
- * Store cell data in cache for the current cell object if it's "dirty",
- * and the 'nullify' the current cell object
- *
- * @return void
- * @throws Exception
- */
- private function _storeData() {
- if ($this->_currentCellIsDirty) {
- $this->_currentObject->detach();
-
- fseek($this->_fileHandle,0,SEEK_END);
- $offset = ftell($this->_fileHandle);
- fwrite($this->_fileHandle, serialize($this->_currentObject));
- $this->_cellCache[$this->_currentObjectID] = array('ptr' => $offset,
- 'sz' => ftell($this->_fileHandle) - $offset
- );
- $this->_currentCellIsDirty = false;
- }
- $this->_currentObjectID = $this->_currentObject = null;
- } // function _storeData()
-
-
- /**
- * Add or Update a cell in cache identified by coordinate address
- *
- * @param string $pCoord Coordinate address of the cell to update
- * @param PHPExcel_Cell $cell Cell to update
- * @return void
- * @throws Exception
- */
- public function addCacheData($pCoord, PHPExcel_Cell $cell) {
- if (($pCoord !== $this->_currentObjectID) && ($this->_currentObjectID !== null)) {
- $this->_storeData();
- }
-
- $this->_currentObjectID = $pCoord;
- $this->_currentObject = $cell;
- $this->_currentCellIsDirty = true;
-
- return $cell;
- } // function addCacheData()
-
-
- /**
- * Get cell at a specific coordinate
- *
- * @param string $pCoord Coordinate of the cell
- * @throws Exception
- * @return PHPExcel_Cell Cell that was found, or null if not found
- */
- public function getCacheData($pCoord) {
- if ($pCoord === $this->_currentObjectID) {
- return $this->_currentObject;
- }
- $this->_storeData();
-
- // Check if the entry that has been requested actually exists
- if (!isset($this->_cellCache[$pCoord])) {
- // Return null if requested entry doesn't exist in cache
- return null;
- }
-
- // Set current entry to the requested entry
- $this->_currentObjectID = $pCoord;
- fseek($this->_fileHandle,$this->_cellCache[$pCoord]['ptr']);
- $this->_currentObject = unserialize(fread($this->_fileHandle,$this->_cellCache[$pCoord]['sz']));
- // Re-attach the parent worksheet
- $this->_currentObject->attach($this->_parent);
-
- // Return requested entry
- return $this->_currentObject;
- } // function getCacheData()
-
-
- /**
- * Clone the cell collection
- *
- * @param PHPExcel_Worksheet $parent The new worksheet
- * @return void
- */
- public function copyCellCollection(PHPExcel_Worksheet $parent) {
- parent::copyCellCollection($parent);
- // Get a new id for the new file name
- $baseUnique = $this->_getUniqueID();
- $newFileName = $this->_cacheDirectory.'/PHPExcel.'.$baseUnique.'.cache';
- // Copy the existing cell cache file
- copy ($this->_fileName,$newFileName);
- $this->_fileName = $newFileName;
- // Open the copied cell cache file
- $this->_fileHandle = fopen($this->_fileName,'a+');
- } // function copyCellCollection()
-
-
- /**
- * Clear the cell collection and disconnect from our parent
- *
- * @return void
- */
- public function unsetWorksheetCells() {
- if(!is_null($this->_currentObject)) {
- $this->_currentObject->detach();
- $this->_currentObject = $this->_currentObjectID = null;
- }
- $this->_cellCache = array();
-
- // detach ourself from the worksheet, so that it can then delete this object successfully
- $this->_parent = null;
-
- // Close down the temporary cache file
- $this->__destruct();
- } // function unsetWorksheetCells()
-
-
- /**
- * Initialise this new cell collection
- *
- * @param PHPExcel_Worksheet $parent The worksheet for this cell collection
- * @param array of mixed $arguments Additional initialisation arguments
- */
- public function __construct(PHPExcel_Worksheet $parent, $arguments) {
- $this->_cacheDirectory = ((isset($arguments['dir'])) && ($arguments['dir'] !== NULL))
- ? $arguments['dir']
- : PHPExcel_Shared_File::sys_get_temp_dir();
-
- parent::__construct($parent);
- if (is_null($this->_fileHandle)) {
- $baseUnique = $this->_getUniqueID();
- $this->_fileName = $this->_cacheDirectory.'/PHPExcel.'.$baseUnique.'.cache';
- $this->_fileHandle = fopen($this->_fileName,'a+');
- }
- } // function __construct()
-
-
- /**
- * Destroy this cell collection
- */
- public function __destruct() {
- if (!is_null($this->_fileHandle)) {
- fclose($this->_fileHandle);
- unlink($this->_fileName);
- }
- $this->_fileHandle = null;
- } // function __destruct()
-
-}
diff --git a/admin/survey/excel/PHPExcel/CachedObjectStorage/ICache.php b/admin/survey/excel/PHPExcel/CachedObjectStorage/ICache.php
deleted file mode 100644
index fd35e87..0000000
--- a/admin/survey/excel/PHPExcel/CachedObjectStorage/ICache.php
+++ /dev/null
@@ -1,112 +0,0 @@
-<?php
-/**
- * PHPExcel
- *
- * Copyright (c) 2006 - 2012 PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel_CachedObjectStorage
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-
-/**
- * PHPExcel_CachedObjectStorage_ICache
- *
- * @category PHPExcel
- * @package PHPExcel_CachedObjectStorage
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- */
-interface PHPExcel_CachedObjectStorage_ICache
-{
- /**
- * Add or Update a cell in cache identified by coordinate address
- *
- * @param string $pCoord Coordinate address of the cell to update
- * @param PHPExcel_Cell $cell Cell to update
- * @return void
- * @throws Exception
- */
- public function addCacheData($pCoord, PHPExcel_Cell $cell);
-
- /**
- * Add or Update a cell in cache
- *
- * @param PHPExcel_Cell $cell Cell to update
- * @return void
- * @throws Exception
- */
- public function updateCacheData(PHPExcel_Cell $cell);
-
- /**
- * Fetch a cell from cache identified by coordinate address
- *
- * @param string $pCoord Coordinate address of the cell to retrieve
- * @return PHPExcel_Cell Cell that was found, or null if not found
- * @throws Exception
- */
- public function getCacheData($pCoord);
-
- /**
- * Delete a cell in cache identified by coordinate address
- *
- * @param string $pCoord Coordinate address of the cell to delete
- * @throws Exception
- */
- public function deleteCacheData($pCoord);
-
- /**
- * Is a value set in the current PHPExcel_CachedObjectStorage_ICache for an indexed cell?
- *
- * @param string $pCoord Coordinate address of the cell to check
- * @return boolean
- */
- public function isDataSet($pCoord);
-
- /**
- * Get a list of all cell addresses currently held in cache
- *
- * @return array of string
- */
- public function getCellList();
-
- /**
- * Get the list of all cell addresses currently held in cache sorted by column and row
- *
- * @return void
- */
- public function getSortedCellList();
-
- /**
- * Clone the cell collection
- *
- * @param PHPExcel_Worksheet $parent The new worksheet
- * @return void
- */
- public function copyCellCollection(PHPExcel_Worksheet $parent);
-
- /**
- * Identify whether the caching method is currently available
- * Some methods are dependent on the availability of certain extensions being enabled in the PHP build
- *
- * @return boolean
- */
- public static function cacheMethodIsAvailable();
-
-}
diff --git a/admin/survey/excel/PHPExcel/CachedObjectStorage/Igbinary.php b/admin/survey/excel/PHPExcel/CachedObjectStorage/Igbinary.php
deleted file mode 100644
index 5d5daf4..0000000
--- a/admin/survey/excel/PHPExcel/CachedObjectStorage/Igbinary.php
+++ /dev/null
@@ -1,138 +0,0 @@
-<?php
-/**
- * PHPExcel
- *
- * Copyright (c) 2006 - 2012 PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel_CachedObjectStorage
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-
-/**
- * PHPExcel_CachedObjectStorage_Igbinary
- *
- * @category PHPExcel
- * @package PHPExcel_CachedObjectStorage
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- */
-class PHPExcel_CachedObjectStorage_Igbinary extends PHPExcel_CachedObjectStorage_CacheBase implements PHPExcel_CachedObjectStorage_ICache {
-
- /**
- * Store cell data in cache for the current cell object if it's "dirty",
- * and the 'nullify' the current cell object
- *
- * @return void
- * @throws Exception
- */
- private function _storeData() {
- if ($this->_currentCellIsDirty) {
- $this->_currentObject->detach();
-
- $this->_cellCache[$this->_currentObjectID] = igbinary_serialize($this->_currentObject);
- $this->_currentCellIsDirty = false;
- }
- $this->_currentObjectID = $this->_currentObject = null;
- } // function _storeData()
-
-
- /**
- * Add or Update a cell in cache identified by coordinate address
- *
- * @param string $pCoord Coordinate address of the cell to update
- * @param PHPExcel_Cell $cell Cell to update
- * @return void
- * @throws Exception
- */
- public function addCacheData($pCoord, PHPExcel_Cell $cell) {
- if (($pCoord !== $this->_currentObjectID) && ($this->_currentObjectID !== null)) {
- $this->_storeData();
- }
-
- $this->_currentObjectID = $pCoord;
- $this->_currentObject = $cell;
- $this->_currentCellIsDirty = true;
-
- return $cell;
- } // function addCacheData()
-
-
- /**
- * Get cell at a specific coordinate
- *
- * @param string $pCoord Coordinate of the cell
- * @throws Exception
- * @return PHPExcel_Cell Cell that was found, or null if not found
- */
- public function getCacheData($pCoord) {
- if ($pCoord === $this->_currentObjectID) {
- return $this->_currentObject;
- }
- $this->_storeData();
-
- // Check if the entry that has been requested actually exists
- if (!isset($this->_cellCache[$pCoord])) {
- // Return null if requested entry doesn't exist in cache
- return null;
- }
-
- // Set current entry to the requested entry
- $this->_currentObjectID = $pCoord;
- $this->_currentObject = igbinary_unserialize($this->_cellCache[$pCoord]);
- // Re-attach the parent worksheet
- $this->_currentObject->attach($this->_parent);
-
- // Return requested entry
- return $this->_currentObject;
- } // function getCacheData()
-
-
- /**
- * Clear the cell collection and disconnect from our parent
- *
- * @return void
- */
- public function unsetWorksheetCells() {
- if(!is_null($this->_currentObject)) {
- $this->_currentObject->detach();
- $this->_currentObject = $this->_currentObjectID = null;
- }
- $this->_cellCache = array();
-
- // detach ourself from the worksheet, so that it can then delete this object successfully
- $this->_parent = null;
- } // function unsetWorksheetCells()
-
-
- /**
- * Identify whether the caching method is currently available
- * Some methods are dependent on the availability of certain extensions being enabled in the PHP build
- *
- * @return boolean
- */
- public static function cacheMethodIsAvailable() {
- if (!function_exists('igbinary_serialize')) {
- return false;
- }
-
- return true;
- }
-
-}
diff --git a/admin/survey/excel/PHPExcel/CachedObjectStorage/Memcache.php b/admin/survey/excel/PHPExcel/CachedObjectStorage/Memcache.php
deleted file mode 100644
index 3e5fcb4..0000000
--- a/admin/survey/excel/PHPExcel/CachedObjectStorage/Memcache.php
+++ /dev/null
@@ -1,298 +0,0 @@
-<?php
-/**
- * PHPExcel
- *
- * Copyright (c) 2006 - 2012 PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel_CachedObjectStorage
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-
-/**
- * PHPExcel_CachedObjectStorage_Memcache
- *
- * @category PHPExcel
- * @package PHPExcel_CachedObjectStorage
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- */
-class PHPExcel_CachedObjectStorage_Memcache extends PHPExcel_CachedObjectStorage_CacheBase implements PHPExcel_CachedObjectStorage_ICache {
-
- /**
- * Prefix used to uniquely identify cache data for this worksheet
- *
- * @var string
- */
- private $_cachePrefix = null;
-
- /**
- * Cache timeout
- *
- * @var integer
- */
- private $_cacheTime = 600;
-
- /**
- * Memcache interface
- *
- * @var resource
- */
- private $_memcache = null;
-
-
- /**
- * Store cell data in cache for the current cell object if it's "dirty",
- * and the 'nullify' the current cell object
- *
- * @return void
- * @throws Exception
- */
- private function _storeData() {
- if ($this->_currentCellIsDirty) {
- $this->_currentObject->detach();
-
- $obj = serialize($this->_currentObject);
- if (!$this->_memcache->replace($this->_cachePrefix.$this->_currentObjectID.'.cache',$obj,NULL,$this->_cacheTime)) {
- if (!$this->_memcache->add($this->_cachePrefix.$this->_currentObjectID.'.cache',$obj,NULL,$this->_cacheTime)) {
- $this->__destruct();
- throw new Exception('Failed to store cell '.$this->_currentObjectID.' in MemCache');
- }
- }
- $this->_currentCellIsDirty = false;
- }
- $this->_currentObjectID = $this->_currentObject = null;
- } // function _storeData()
-
-
- /**
- * Add or Update a cell in cache identified by coordinate address
- *
- * @param string $pCoord Coordinate address of the cell to update
- * @param PHPExcel_Cell $cell Cell to update
- * @return void
- * @throws Exception
- */
- public function addCacheData($pCoord, PHPExcel_Cell $cell) {
- if (($pCoord !== $this->_currentObjectID) && ($this->_currentObjectID !== null)) {
- $this->_storeData();
- }
- $this->_cellCache[$pCoord] = true;
-
- $this->_currentObjectID = $pCoord;
- $this->_currentObject = $cell;
- $this->_currentCellIsDirty = true;
-
- return $cell;
- } // function addCacheData()
-
-
- /**
- * Is a value set in the current PHPExcel_CachedObjectStorage_ICache for an indexed cell?
- *
- * @param string $pCoord Coordinate address of the cell to check
- * @return void
- * @return boolean
- */
- public function isDataSet($pCoord) {
- // Check if the requested entry is the current object, or exists in the cache
- if (parent::isDataSet($pCoord)) {
- if ($this->_currentObjectID == $pCoord) {
- return true;
- }
- // Check if the requested entry still exists in Memcache
- $success = $this->_memcache->get($this->_cachePrefix.$pCoord.'.cache');
- if ($success === false) {
- // Entry no longer exists in Memcache, so clear it from the cache array
- parent::deleteCacheData($pCoord);
- throw new Exception('Cell entry '.$pCoord.' no longer exists in MemCache');
- }
- return true;
- }
- return false;
- } // function isDataSet()
-
-
- /**
- * Get cell at a specific coordinate
- *
- * @param string $pCoord Coordinate of the cell
- * @throws Exception
- * @return PHPExcel_Cell Cell that was found, or null if not found
- */
- public function getCacheData($pCoord) {
- if ($pCoord === $this->_currentObjectID) {
- return $this->_currentObject;
- }
- $this->_storeData();
-
- // Check if the entry that has been requested actually exists
- if (parent::isDataSet($pCoord)) {
- $obj = $this->_memcache->get($this->_cachePrefix.$pCoord.'.cache');
- if ($obj === false) {
- // Entry no longer exists in Memcache, so clear it from the cache array
- parent::deleteCacheData($pCoord);
- throw new Exception('Cell entry '.$pCoord.' no longer exists in MemCache');
- }
- } else {
- // Return null if requested entry doesn't exist in cache
- return null;
- }
-
- // Set current entry to the requested entry
- $this->_currentObjectID = $pCoord;
- $this->_currentObject = unserialize($obj);
- // Re-attach the parent worksheet
- $this->_currentObject->attach($this->_parent);
-
- // Return requested entry
- return $this->_currentObject;
- } // function getCacheData()
-
-
- /**
- * Delete a cell in cache identified by coordinate address
- *
- * @param string $pCoord Coordinate address of the cell to delete
- * @throws Exception
- */
- public function deleteCacheData($pCoord) {
- // Delete the entry from Memcache
- $this->_memcache->delete($this->_cachePrefix.$pCoord.'.cache');
-
- // Delete the entry from our cell address array
- parent::deleteCacheData($pCoord);
- } // function deleteCacheData()
-
-
- /**
- * Clone the cell collection
- *
- * @param PHPExcel_Worksheet $parent The new worksheet
- * @return void
- */
- public function copyCellCollection(PHPExcel_Worksheet $parent) {
- parent::copyCellCollection($parent);
- // Get a new id for the new file name
- $baseUnique = $this->_getUniqueID();
- $newCachePrefix = substr(md5($baseUnique),0,8).'.';
- $cacheList = $this->getCellList();
- foreach($cacheList as $cellID) {
- if ($cellID != $this->_currentObjectID) {
- $obj = $this->_memcache->get($this->_cachePrefix.$cellID.'.cache');
- if ($obj === false) {
- // Entry no longer exists in Memcache, so clear it from the cache array
- parent::deleteCacheData($cellID);
- throw new Exception('Cell entry '.$cellID.' no longer exists in MemCache');
- }
- if (!$this->_memcache->add($newCachePrefix.$cellID.'.cache',$obj,NULL,$this->_cacheTime)) {
- $this->__destruct();
- throw new Exception('Failed to store cell '.$cellID.' in MemCache');
- }
- }
- }
- $this->_cachePrefix = $newCachePrefix;
- } // function copyCellCollection()
-
-
- /**
- * Clear the cell collection and disconnect from our parent
- *
- * @return void
- */
- public function unsetWorksheetCells() {
- if(!is_null($this->_currentObject)) {
- $this->_currentObject->detach();
- $this->_currentObject = $this->_currentObjectID = null;
- }
-
- // Flush the Memcache cache
- $this->__destruct();
-
- $this->_cellCache = array();
-
- // detach ourself from the worksheet, so that it can then delete this object successfully
- $this->_parent = null;
- } // function unsetWorksheetCells()
-
-
- /**
- * Initialise this new cell collection
- *
- * @param PHPExcel_Worksheet $parent The worksheet for this cell collection
- * @param array of mixed $arguments Additional initialisation arguments
- */
- public function __construct(PHPExcel_Worksheet $parent, $arguments) {
- $memcacheServer = (isset($arguments['memcacheServer'])) ? $arguments['memcacheServer'] : 'localhost';
- $memcachePort = (isset($arguments['memcachePort'])) ? $arguments['memcachePort'] : 11211;
- $cacheTime = (isset($arguments['cacheTime'])) ? $arguments['cacheTime'] : 600;
-
- if (is_null($this->_cachePrefix)) {
- $baseUnique = $this->_getUniqueID();
- $this->_cachePrefix = substr(md5($baseUnique),0,8).'.';
-
- // Set a new Memcache object and connect to the Memcache server
- $this->_memcache = new Memcache();
- if (!$this->_memcache->addServer($memcacheServer, $memcachePort, false, 50, 5, 5, true, array($this, 'failureCallback'))) {
- throw new Exception('Could not connect to MemCache server at '.$memcacheServer.':'.$memcachePort);
- }
- $this->_cacheTime = $cacheTime;
-
- parent::__construct($parent);
- }
- } // function __construct()
-
-
- /**
- * Memcache error handler
- *
- * @param string $host Memcache server
- * @param integer $port Memcache port
- * @throws Exception
- */
- public function failureCallback($host, $port) {
- throw new Exception('memcache '.$host.':'.$port.' failed');
- }
-
-
- /**
- * Destroy this cell collection
- */
- public function __destruct() {
- $cacheList = $this->getCellList();
- foreach($cacheList as $cellID) {
- $this->_memcache->delete($this->_cachePrefix.$cellID.'.cache');
- }
- } // function __destruct()
-
- /**
- * Identify whether the caching method is currently available
- * Some methods are dependent on the availability of certain extensions being enabled in the PHP build
- *
- * @return boolean
- */
- public static function cacheMethodIsAvailable() {
- if (!function_exists('memcache_add')) {
- return false;
- }
-
- return true;
- }
-
-}
diff --git a/admin/survey/excel/PHPExcel/CachedObjectStorage/Memory.php b/admin/survey/excel/PHPExcel/CachedObjectStorage/Memory.php
deleted file mode 100644
index f368e39..0000000
--- a/admin/survey/excel/PHPExcel/CachedObjectStorage/Memory.php
+++ /dev/null
@@ -1,109 +0,0 @@
-<?php
-/**
- * PHPExcel
- *
- * Copyright (c) 2006 - 2012 PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel_CachedObjectStorage
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-
-/**
- * PHPExcel_CachedObjectStorage_Memory
- *
- * @category PHPExcel
- * @package PHPExcel_CachedObjectStorage
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- */
-class PHPExcel_CachedObjectStorage_Memory extends PHPExcel_CachedObjectStorage_CacheBase implements PHPExcel_CachedObjectStorage_ICache {
-
- /**
- * Add or Update a cell in cache identified by coordinate address
- *
- * @param string $pCoord Coordinate address of the cell to update
- * @param PHPExcel_Cell $cell Cell to update
- * @return void
- * @throws Exception
- */
- public function addCacheData($pCoord, PHPExcel_Cell $cell) {
- $this->_cellCache[$pCoord] = $cell;
- return $cell;
- } // function addCacheData()
-
-
- /**
- * Get cell at a specific coordinate
- *
- * @param string $pCoord Coordinate of the cell
- * @throws Exception
- * @return PHPExcel_Cell Cell that was found, or null if not found
- */
- public function getCacheData($pCoord) {
- // Check if the entry that has been requested actually exists
- if (!isset($this->_cellCache[$pCoord])) {
- // Return null if requested entry doesn't exist in cache
- return null;
- }
-
- // Return requested entry
- return $this->_cellCache[$pCoord];
- } // function getCacheData()
-
-
- /**
- * Clone the cell collection
- *
- * @param PHPExcel_Worksheet $parent The new worksheet
- * @return void
- */
- public function copyCellCollection(PHPExcel_Worksheet $parent) {
- parent::copyCellCollection($parent);
-
- $newCollection = array();
- foreach($this->_cellCache as $k => &$cell) {
- $newCollection[$k] = clone $cell;
- $newCollection[$k]->attach($parent);
- }
-
- $this->_cellCache = $newCollection;
- }
-
-
- /**
- * Clear the cell collection and disconnect from our parent
- *
- * @return void
- */
- public function unsetWorksheetCells() {
- // Because cells are all stored as intact objects in memory, we need to detach each one from the parent
- foreach($this->_cellCache as $k => &$cell) {
- $cell->detach();
- $this->_cellCache[$k] = null;
- }
- unset($cell);
-
- $this->_cellCache = array();
-
- // detach ourself from the worksheet, so that it can then delete this object successfully
- $this->_parent = null;
- } // function unsetWorksheetCells()
-
-}
diff --git a/admin/survey/excel/PHPExcel/CachedObjectStorage/MemoryGZip.php b/admin/survey/excel/PHPExcel/CachedObjectStorage/MemoryGZip.php
deleted file mode 100644
index 6941231..0000000
--- a/admin/survey/excel/PHPExcel/CachedObjectStorage/MemoryGZip.php
+++ /dev/null
@@ -1,123 +0,0 @@
-<?php
-/**
- * PHPExcel
- *
- * Copyright (c) 2006 - 2012 PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel_CachedObjectStorage
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-
-/**
- * PHPExcel_CachedObjectStorage_MemoryGZip
- *
- * @category PHPExcel
- * @package PHPExcel_CachedObjectStorage
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- */
-class PHPExcel_CachedObjectStorage_MemoryGZip extends PHPExcel_CachedObjectStorage_CacheBase implements PHPExcel_CachedObjectStorage_ICache {
-
- /**
- * Store cell data in cache for the current cell object if it's "dirty",
- * and the 'nullify' the current cell object
- *
- * @return void
- * @throws Exception
- */
- private function _storeData() {
- if ($this->_currentCellIsDirty) {
- $this->_currentObject->detach();
-
- $this->_cellCache[$this->_currentObjectID] = gzdeflate(serialize($this->_currentObject));
- $this->_currentCellIsDirty = false;
- }
- $this->_currentObjectID = $this->_currentObject = null;
- } // function _storeData()
-
-
- /**
- * Add or Update a cell in cache identified by coordinate address
- *
- * @param string $pCoord Coordinate address of the cell to update
- * @param PHPExcel_Cell $cell Cell to update
- * @return void
- * @throws Exception
- */
- public function addCacheData($pCoord, PHPExcel_Cell $cell) {
- if (($pCoord !== $this->_currentObjectID) && ($this->_currentObjectID !== null)) {
- $this->_storeData();
- }
-
- $this->_currentObjectID = $pCoord;
- $this->_currentObject = $cell;
- $this->_currentCellIsDirty = true;
-
- return $cell;
- } // function addCacheData()
-
-
- /**
- * Get cell at a specific coordinate
- *
- * @param string $pCoord Coordinate of the cell
- * @throws Exception
- * @return PHPExcel_Cell Cell that was found, or null if not found
- */
- public function getCacheData($pCoord) {
- if ($pCoord === $this->_currentObjectID) {
- return $this->_currentObject;
- }
- $this->_storeData();
-
- // Check if the entry that has been requested actually exists
- if (!isset($this->_cellCache[$pCoord])) {
- // Return null if requested entry doesn't exist in cache
- return null;
- }
-
- // Set current entry to the requested entry
- $this->_currentObjectID = $pCoord;
- $this->_currentObject = unserialize(gzinflate($this->_cellCache[$pCoord]));
- // Re-attach the parent worksheet
- $this->_currentObject->attach($this->_parent);
-
- // Return requested entry
- return $this->_currentObject;
- } // function getCacheData()
-
-
- /**
- * Clear the cell collection and disconnect from our parent
- *
- * @return void
- */
- public function unsetWorksheetCells() {
- if(!is_null($this->_currentObject)) {
- $this->_currentObject->detach();
- $this->_currentObject = $this->_currentObjectID = null;
- }
- $this->_cellCache = array();
-
- // detach ourself from the worksheet, so that it can then delete this object successfully
- $this->_parent = null;
- } // function unsetWorksheetCells()
-
-}
diff --git a/admin/survey/excel/PHPExcel/CachedObjectStorage/MemorySerialized.php b/admin/survey/excel/PHPExcel/CachedObjectStorage/MemorySerialized.php
deleted file mode 100644
index 09f3b66..0000000
--- a/admin/survey/excel/PHPExcel/CachedObjectStorage/MemorySerialized.php
+++ /dev/null
@@ -1,123 +0,0 @@
-<?php
-/**
- * PHPExcel
- *
- * Copyright (c) 2006 - 2012 PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel_CachedObjectStorage
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-
-/**
- * PHPExcel_CachedObjectStorage_MemorySerialized
- *
- * @category PHPExcel
- * @package PHPExcel_CachedObjectStorage
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- */
-class PHPExcel_CachedObjectStorage_MemorySerialized extends PHPExcel_CachedObjectStorage_CacheBase implements PHPExcel_CachedObjectStorage_ICache {
-
- /**
- * Store cell data in cache for the current cell object if it's "dirty",
- * and the 'nullify' the current cell object
- *
- * @return void
- * @throws Exception
- */
- private function _storeData() {
- if ($this->_currentCellIsDirty) {
- $this->_currentObject->detach();
-
- $this->_cellCache[$this->_currentObjectID] = serialize($this->_currentObject);
- $this->_currentCellIsDirty = false;
- }
- $this->_currentObjectID = $this->_currentObject = null;
- } // function _storeData()
-
-
- /**
- * Add or Update a cell in cache identified by coordinate address
- *
- * @param string $pCoord Coordinate address of the cell to update
- * @param PHPExcel_Cell $cell Cell to update
- * @return void
- * @throws Exception
- */
- public function addCacheData($pCoord, PHPExcel_Cell $cell) {
- if (($pCoord !== $this->_currentObjectID) && ($this->_currentObjectID !== null)) {
- $this->_storeData();
- }
-
- $this->_currentObjectID = $pCoord;
- $this->_currentObject = $cell;
- $this->_currentCellIsDirty = true;
-
- return $cell;
- } // function addCacheData()
-
-
- /**
- * Get cell at a specific coordinate
- *
- * @param string $pCoord Coordinate of the cell
- * @throws Exception
- * @return PHPExcel_Cell Cell that was found, or null if not found
- */
- public function getCacheData($pCoord) {
- if ($pCoord === $this->_currentObjectID) {
- return $this->_currentObject;
- }
- $this->_storeData();
-
- // Check if the entry that has been requested actually exists
- if (!isset($this->_cellCache[$pCoord])) {
- // Return null if requested entry doesn't exist in cache
- return null;
- }
-
- // Set current entry to the requested entry
- $this->_currentObjectID = $pCoord;
- $this->_currentObject = unserialize($this->_cellCache[$pCoord]);
- // Re-attach the parent worksheet
- $this->_currentObject->attach($this->_parent);
-
- // Return requested entry
- return $this->_currentObject;
- } // function getCacheData()
-
-
- /**
- * Clear the cell collection and disconnect from our parent
- *
- * @return void
- */
- public function unsetWorksheetCells() {
- if(!is_null($this->_currentObject)) {
- $this->_currentObject->detach();
- $this->_currentObject = $this->_currentObjectID = null;
- }
- $this->_cellCache = array();
-
- // detach ourself from the worksheet, so that it can then delete this object successfully
- $this->_parent = null;
- } // function unsetWorksheetCells()
-
-}
diff --git a/admin/survey/excel/PHPExcel/CachedObjectStorage/PHPTemp.php b/admin/survey/excel/PHPExcel/CachedObjectStorage/PHPTemp.php
deleted file mode 100644
index c3f2bd9..0000000
--- a/admin/survey/excel/PHPExcel/CachedObjectStorage/PHPTemp.php
+++ /dev/null
@@ -1,192 +0,0 @@
-<?php
-/**
- * PHPExcel
- *
- * Copyright (c) 2006 - 2012 PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel_CachedObjectStorage
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-
-/**
- * PHPExcel_CachedObjectStorage_PHPTemp
- *
- * @category PHPExcel
- * @package PHPExcel_CachedObjectStorage
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- */
-class PHPExcel_CachedObjectStorage_PHPTemp extends PHPExcel_CachedObjectStorage_CacheBase implements PHPExcel_CachedObjectStorage_ICache {
-
- /**
- * Name of the file for this cache
- *
- * @var string
- */
- private $_fileHandle = null;
-
- /**
- * Memory limit to use before reverting to file cache
- *
- * @var integer
- */
- private $_memoryCacheSize = null;
-
- /**
- * Store cell data in cache for the current cell object if it's "dirty",
- * and the 'nullify' the current cell object
- *
- * @return void
- * @throws Exception
- */
- private function _storeData() {
- if ($this->_currentCellIsDirty) {
- $this->_currentObject->detach();
-
- fseek($this->_fileHandle,0,SEEK_END);
- $offset = ftell($this->_fileHandle);
- fwrite($this->_fileHandle, serialize($this->_currentObject));
- $this->_cellCache[$this->_currentObjectID] = array('ptr' => $offset,
- 'sz' => ftell($this->_fileHandle) - $offset
- );
- $this->_currentCellIsDirty = false;
- }
- $this->_currentObjectID = $this->_currentObject = null;
- } // function _storeData()
-
-
- /**
- * Add or Update a cell in cache identified by coordinate address
- *
- * @param string $pCoord Coordinate address of the cell to update
- * @param PHPExcel_Cell $cell Cell to update
- * @return void
- * @throws Exception
- */
- public function addCacheData($pCoord, PHPExcel_Cell $cell) {
- if (($pCoord !== $this->_currentObjectID) && ($this->_currentObjectID !== null)) {
- $this->_storeData();
- }
-
- $this->_currentObjectID = $pCoord;
- $this->_currentObject = $cell;
- $this->_currentCellIsDirty = true;
-
- return $cell;
- } // function addCacheData()
-
-
- /**
- * Get cell at a specific coordinate
- *
- * @param string $pCoord Coordinate of the cell
- * @throws Exception
- * @return PHPExcel_Cell Cell that was found, or null if not found
- */
- public function getCacheData($pCoord) {
- if ($pCoord === $this->_currentObjectID) {
- return $this->_currentObject;
- }
- $this->_storeData();
-
- // Check if the entry that has been requested actually exists
- if (!isset($this->_cellCache[$pCoord])) {
- // Return null if requested entry doesn't exist in cache
- return null;
- }
-
- // Set current entry to the requested entry
- $this->_currentObjectID = $pCoord;
- fseek($this->_fileHandle,$this->_cellCache[$pCoord]['ptr']);
- $this->_currentObject = unserialize(fread($this->_fileHandle,$this->_cellCache[$pCoord]['sz']));
- // Re-attach the parent worksheet
- $this->_currentObject->attach($this->_parent);
-
- // Return requested entry
- return $this->_currentObject;
- } // function getCacheData()
-
-
- /**
- * Clone the cell collection
- *
- * @param PHPExcel_Worksheet $parent The new worksheet
- * @return void
- */
- public function copyCellCollection(PHPExcel_Worksheet $parent) {
- parent::copyCellCollection($parent);
- // Open a new stream for the cell cache data
- $newFileHandle = fopen('php://temp/maxmemory:'.$this->_memoryCacheSize,'a+');
- // Copy the existing cell cache data to the new stream
- fseek($this->_fileHandle,0);
- while (!feof($this->_fileHandle)) {
- fwrite($newFileHandle,fread($this->_fileHandle, 1024));
- }
- $this->_fileHandle = $newFileHandle;
- } // function copyCellCollection()
-
-
- /**
- * Clear the cell collection and disconnect from our parent
- *
- * @return void
- */
- public function unsetWorksheetCells() {
- if(!is_null($this->_currentObject)) {
- $this->_currentObject->detach();
- $this->_currentObject = $this->_currentObjectID = null;
- }
- $this->_cellCache = array();
-
- // detach ourself from the worksheet, so that it can then delete this object successfully
- $this->_parent = null;
-
- // Close down the php://temp file
- $this->__destruct();
- } // function unsetWorksheetCells()
-
-
- /**
- * Initialise this new cell collection
- *
- * @param PHPExcel_Worksheet $parent The worksheet for this cell collection
- * @param array of mixed $arguments Additional initialisation arguments
- */
- public function __construct(PHPExcel_Worksheet $parent, $arguments) {
- $this->_memoryCacheSize = (isset($arguments['memoryCacheSize'])) ? $arguments['memoryCacheSize'] : '1MB';
-
- parent::__construct($parent);
- if (is_null($this->_fileHandle)) {
- $this->_fileHandle = fopen('php://temp/maxmemory:'.$this->_memoryCacheSize,'a+');
- }
- } // function __construct()
-
-
- /**
- * Destroy this cell collection
- */
- public function __destruct() {
- if (!is_null($this->_fileHandle)) {
- fclose($this->_fileHandle);
- }
- $this->_fileHandle = null;
- } // function __destruct()
-
-}
diff --git a/admin/survey/excel/PHPExcel/CachedObjectStorage/SQLite.php b/admin/survey/excel/PHPExcel/CachedObjectStorage/SQLite.php
deleted file mode 100644
index 515573d..0000000
--- a/admin/survey/excel/PHPExcel/CachedObjectStorage/SQLite.php
+++ /dev/null
@@ -1,270 +0,0 @@
-<?php
-/**
- * PHPExcel
- *
- * Copyright (c) 2006 - 2012 PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel_CachedObjectStorage
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-
-/**
- * PHPExcel_CachedObjectStorage_SQLite
- *
- * @category PHPExcel
- * @package PHPExcel_CachedObjectStorage
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- */
-class PHPExcel_CachedObjectStorage_SQLite extends PHPExcel_CachedObjectStorage_CacheBase implements PHPExcel_CachedObjectStorage_ICache {
-
- /**
- * Database table name
- *
- * @var string
- */
- private $_TableName = null;
-
- /**
- * Database handle
- *
- * @var resource
- */
- private $_DBHandle = null;
-
- /**
- * Store cell data in cache for the current cell object if it's "dirty",
- * and the 'nullify' the current cell object
- *
- * @return void
- * @throws Exception
- */
- private function _storeData() {
- if ($this->_currentCellIsDirty) {
- $this->_currentObject->detach();
-
- if (!$this->_DBHandle->queryExec("INSERT OR REPLACE INTO kvp_".$this->_TableName." VALUES('".$this->_currentObjectID."','".sqlite_escape_string(serialize($this->_currentObject))."')"))
- throw new Exception(sqlite_error_string($this->_DBHandle->lastError()));
- $this->_currentCellIsDirty = false;
- }
- $this->_currentObjectID = $this->_currentObject = null;
- } // function _storeData()
-
-
- /**
- * Add or Update a cell in cache identified by coordinate address
- *
- * @param string $pCoord Coordinate address of the cell to update
- * @param PHPExcel_Cell $cell Cell to update
- * @return void
- * @throws Exception
- */
- public function addCacheData($pCoord, PHPExcel_Cell $cell) {
- if (($pCoord !== $this->_currentObjectID) && ($this->_currentObjectID !== null)) {
- $this->_storeData();
- }
-
- $this->_currentObjectID = $pCoord;
- $this->_currentObject = $cell;
- $this->_currentCellIsDirty = true;
-
- return $cell;
- } // function addCacheData()
-
-
- /**
- * Get cell at a specific coordinate
- *
- * @param string $pCoord Coordinate of the cell
- * @throws Exception
- * @return PHPExcel_Cell Cell that was found, or null if not found
- */
- public function getCacheData($pCoord) {
- if ($pCoord === $this->_currentObjectID) {
- return $this->_currentObject;
- }
- $this->_storeData();
-
- $query = "SELECT value FROM kvp_".$this->_TableName." WHERE id='".$pCoord."'";
- $cellResultSet = $this->_DBHandle->query($query,SQLITE_ASSOC);
- if ($cellResultSet === false) {
- throw new Exception(sqlite_error_string($this->_DBHandle->lastError()));
- } elseif ($cellResultSet->numRows() == 0) {
- // Return null if requested entry doesn't exist in cache
- return null;
- }
-
- // Set current entry to the requested entry
- $this->_currentObjectID = $pCoord;
-
- $cellResult = $cellResultSet->fetchSingle();
- $this->_currentObject = unserialize($cellResult);
- // Re-attach the parent worksheet
- $this->_currentObject->attach($this->_parent);
-
- // Return requested entry
- return $this->_currentObject;
- } // function getCacheData()
-
-
- /**
- * Is a value set for an indexed cell?
- *
- * @param string $pCoord Coordinate address of the cell to check
- * @return boolean
- */
- public function isDataSet($pCoord) {
- if ($pCoord === $this->_currentObjectID) {
- return true;
- }
-
- // Check if the requested entry exists in the cache
- $query = "SELECT id FROM kvp_".$this->_TableName." WHERE id='".$pCoord."'";
- $cellResultSet = $this->_DBHandle->query($query,SQLITE_ASSOC);
- if ($cellResultSet === false) {
- throw new Exception(sqlite_error_string($this->_DBHandle->lastError()));
- } elseif ($cellResultSet->numRows() == 0) {
- // Return null if requested entry doesn't exist in cache
- return false;
- }
- return true;
- } // function isDataSet()
-
-
- /**
- * Delete a cell in cache identified by coordinate address
- *
- * @param string $pCoord Coordinate address of the cell to delete
- * @throws Exception
- */
- public function deleteCacheData($pCoord) {
- if ($pCoord === $this->_currentObjectID) {
- $this->_currentObject->detach();
- $this->_currentObjectID = $this->_currentObject = null;
- }
-
- // Check if the requested entry exists in the cache
- $query = "DELETE FROM kvp_".$this->_TableName." WHERE id='".$pCoord."'";
- if (!$this->_DBHandle->queryExec($query))
- throw new Exception(sqlite_error_string($this->_DBHandle->lastError()));
-
- $this->_currentCellIsDirty = false;
- } // function deleteCacheData()
-
-
- /**
- * Get a list of all cell addresses currently held in cache
- *
- * @return array of string
- */
- public function getCellList() {
- $query = "SELECT id FROM kvp_".$this->_TableName;
- $cellIdsResult = $this->_DBHandle->unbufferedQuery($query,SQLITE_ASSOC);
- if ($cellIdsResult === false)
- throw new Exception(sqlite_error_string($this->_DBHandle->lastError()));
-
- $cellKeys = array();
- foreach($cellIdsResult as $row) {
- $cellKeys[] = $row['id'];
- }
-
- return $cellKeys;
- } // function getCellList()
-
-
- /**
- * Clone the cell collection
- *
- * @param PHPExcel_Worksheet $parent The new worksheet
- * @return void
- */
- public function copyCellCollection(PHPExcel_Worksheet $parent) {
- // Get a new id for the new table name
- $tableName = str_replace('.','_',$this->_getUniqueID());
- if (!$this->_DBHandle->queryExec('CREATE TABLE kvp_'.$tableName.' (id VARCHAR(12) PRIMARY KEY, value BLOB)
- AS SELECT * FROM kvp_'.$this->_TableName))
- throw new Exception(sqlite_error_string($this->_DBHandle->lastError()));
-
- // Copy the existing cell cache file
- $this->_TableName = $tableName;
- } // function copyCellCollection()
-
-
- /**
- * Clear the cell collection and disconnect from our parent
- *
- * @return void
- */
- public function unsetWorksheetCells() {
- if(!is_null($this->_currentObject)) {
- $this->_currentObject->detach();
- $this->_currentObject = $this->_currentObjectID = null;
- }
- // detach ourself from the worksheet, so that it can then delete this object successfully
- $this->_parent = null;
-
- // Close down the temporary cache file
- $this->__destruct();
- } // function unsetWorksheetCells()
-
-
- /**
- * Initialise this new cell collection
- *
- * @param PHPExcel_Worksheet $parent The worksheet for this cell collection
- */
- public function __construct(PHPExcel_Worksheet $parent) {
- parent::__construct($parent);
- if (is_null($this->_DBHandle)) {
- $this->_TableName = str_replace('.','_',$this->_getUniqueID());
- $_DBName = ':memory:';
-
- $this->_DBHandle = new SQLiteDatabase($_DBName);
- if ($this->_DBHandle === false)
- throw new Exception(sqlite_error_string($this->_DBHandle->lastError()));
- if (!$this->_DBHandle->queryExec('CREATE TABLE kvp_'.$this->_TableName.' (id VARCHAR(12) PRIMARY KEY, value BLOB)'))
- throw new Exception(sqlite_error_string($this->_DBHandle->lastError()));
- }
- } // function __construct()
-
-
- /**
- * Destroy this cell collection
- */
- public function __destruct() {
- $this->_DBHandle = null;
- } // function __destruct()
-
-
- /**
- * Identify whether the caching method is currently available
- * Some methods are dependent on the availability of certain extensions being enabled in the PHP build
- *
- * @return boolean
- */
- public static function cacheMethodIsAvailable() {
- if (!function_exists('sqlite_open')) {
- return false;
- }
-
- return true;
- }
-
-}
diff --git a/admin/survey/excel/PHPExcel/CachedObjectStorage/SQLite3.php b/admin/survey/excel/PHPExcel/CachedObjectStorage/SQLite3.php
deleted file mode 100644
index b867b4d..0000000
--- a/admin/survey/excel/PHPExcel/CachedObjectStorage/SQLite3.php
+++ /dev/null
@@ -1,277 +0,0 @@
-<?php
-/**
- * PHPExcel
- *
- * Copyright (c) 2006 - 2012 PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel_CachedObjectStorage
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-
-/**
- * PHPExcel_CachedObjectStorage_SQLite3
- *
- * @category PHPExcel
- * @package PHPExcel_CachedObjectStorage
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- */
-class PHPExcel_CachedObjectStorage_SQLite3 extends PHPExcel_CachedObjectStorage_CacheBase implements PHPExcel_CachedObjectStorage_ICache {
-
- /**
- * Database table name
- *
- * @var string
- */
- private $_TableName = null;
-
- /**
- * Database handle
- *
- * @var resource
- */
- private $_DBHandle = null;
-
- /**
- * Store cell data in cache for the current cell object if it's "dirty",
- * and the 'nullify' the current cell object
- *
- * @return void
- * @throws Exception
- */
- private function _storeData() {
- if ($this->_currentCellIsDirty) {
- $this->_currentObject->detach();
-
- $query = $this->_DBHandle->prepare("INSERT OR REPLACE INTO kvp_".$this->_TableName." VALUES(:id,:data)");
- $query->bindValue('id',$this->_currentObjectID,SQLITE3_TEXT);
- $query->bindValue('data',serialize($this->_currentObject),SQLITE3_BLOB);
- $result = $query->execute();
- if ($result === false)
- throw new Exception($this->_DBHandle->lastErrorMsg());
- $this->_currentCellIsDirty = false;
- }
- $this->_currentObjectID = $this->_currentObject = null;
- } // function _storeData()
-
-
- /**
- * Add or Update a cell in cache identified by coordinate address
- *
- * @param string $pCoord Coordinate address of the cell to update
- * @param PHPExcel_Cell $cell Cell to update
- * @return void
- * @throws Exception
- */
- public function addCacheData($pCoord, PHPExcel_Cell $cell) {
- if (($pCoord !== $this->_currentObjectID) && ($this->_currentObjectID !== null)) {
- $this->_storeData();
- }
-
- $this->_currentObjectID = $pCoord;
- $this->_currentObject = $cell;
- $this->_currentCellIsDirty = true;
-
- return $cell;
- } // function addCacheData()
-
-
- /**
- * Get cell at a specific coordinate
- *
- * @param string $pCoord Coordinate of the cell
- * @throws Exception
- * @return PHPExcel_Cell Cell that was found, or null if not found
- */
- public function getCacheData($pCoord) {
- if ($pCoord === $this->_currentObjectID) {
- return $this->_currentObject;
- }
- $this->_storeData();
-
- $query = "SELECT value FROM kvp_".$this->_TableName." WHERE id='".$pCoord."'";
- $cellResult = $this->_DBHandle->querySingle($query);
- if ($cellResult === false) {
- throw new Exception($this->_DBHandle->lastErrorMsg());
- } elseif (is_null($cellResult)) {
- // Return null if requested entry doesn't exist in cache
- return null;
- }
-
- // Set current entry to the requested entry
- $this->_currentObjectID = $pCoord;
-
- $this->_currentObject = unserialize($cellResult);
- // Re-attach the parent worksheet
- $this->_currentObject->attach($this->_parent);
-
- // Return requested entry
- return $this->_currentObject;
- } // function getCacheData()
-
-
- /**
- * Is a value set for an indexed cell?
- *
- * @param string $pCoord Coordinate address of the cell to check
- * @return boolean
- */
- public function isDataSet($pCoord) {
- if ($pCoord === $this->_currentObjectID) {
- return true;
- }
-
- // Check if the requested entry exists in the cache
- $query = "SELECT id FROM kvp_".$this->_TableName." WHERE id='".$pCoord."'";
- $cellResult = $this->_DBHandle->querySingle($query);
- if ($cellResult === false) {
- throw new Exception($this->_DBHandle->lastErrorMsg());
- } elseif (is_null($cellResult)) {
- // Return null if requested entry doesn't exist in cache
- return false;
- }
- return true;
- } // function isDataSet()
-
-
- /**
- * Delete a cell in cache identified by coordinate address
- *
- * @param string $pCoord Coordinate address of the cell to delete
- * @throws Exception
- */
- public function deleteCacheData($pCoord) {
- if ($pCoord === $this->_currentObjectID) {
- $this->_currentObject->detach();
- $this->_currentObjectID = $this->_currentObject = null;
- }
-
- // Check if the requested entry exists in the cache
- $query = "DELETE FROM kvp_".$this->_TableName." WHERE id='".$pCoord."'";
- $result = $this->_DBHandle->exec($query);
- if ($result === false)
- throw new Exception($this->_DBHandle->lastErrorMsg());
-
- $this->_currentCellIsDirty = false;
- } // function deleteCacheData()
-
-
- /**
- * Get a list of all cell addresses currently held in cache
- *
- * @return array of string
- */
- public function getCellList() {
- $query = "SELECT id FROM kvp_".$this->_TableName;
- $cellIdsResult = $this->_DBHandle->query($query);
- if ($cellIdsResult === false)
- throw new Exception($this->_DBHandle->lastErrorMsg());
-
- $cellKeys = array();
- while ($row = $cellIdsResult->fetchArray(SQLITE3_ASSOC)) {
- $cellKeys[] = $row['id'];
- }
-
- return $cellKeys;
- } // function getCellList()
-
-
- /**
- * Clone the cell collection
- *
- * @param PHPExcel_Worksheet $parent The new worksheet
- * @return void
- */
- public function copyCellCollection(PHPExcel_Worksheet $parent) {
- // Get a new id for the new table name
- $tableName = str_replace('.','_',$this->_getUniqueID());
- if (!$this->_DBHandle->exec('CREATE TABLE kvp_'.$tableName.' (id VARCHAR(12) PRIMARY KEY, value BLOB)
- AS SELECT * FROM kvp_'.$this->_TableName))
- throw new Exception($this->_DBHandle->lastErrorMsg());
-
- // Copy the existing cell cache file
- $this->_TableName = $tableName;
- } // function copyCellCollection()
-
-
- /**
- * Clear the cell collection and disconnect from our parent
- *
- * @return void
- */
- public function unsetWorksheetCells() {
- if(!is_null($this->_currentObject)) {
- $this->_currentObject->detach();
- $this->_currentObject = $this->_currentObjectID = null;
- }
- // detach ourself from the worksheet, so that it can then delete this object successfully
- $this->_parent = null;
-
- // Close down the temporary cache file
- $this->__destruct();
- } // function unsetWorksheetCells()
-
-
- /**
- * Initialise this new cell collection
- *
- * @param PHPExcel_Worksheet $parent The worksheet for this cell collection
- */
- public function __construct(PHPExcel_Worksheet $parent) {
- parent::__construct($parent);
- if (is_null($this->_DBHandle)) {
- $this->_TableName = str_replace('.','_',$this->_getUniqueID());
- $_DBName = ':memory:';
-
- $this->_DBHandle = new SQLite3($_DBName);
- if ($this->_DBHandle === false)
- throw new Exception($this->_DBHandle->lastErrorMsg());
- if (!$this->_DBHandle->exec('CREATE TABLE kvp_'.$this->_TableName.' (id VARCHAR(12) PRIMARY KEY, value BLOB)'))
- throw new Exception($this->_DBHandle->lastErrorMsg());
- }
- } // function __construct()
-
-
- /**
- * Destroy this cell collection
- */
- public function __destruct() {
- if (!is_null($this->_DBHandle)) {
- $this->_DBHandle->close();
- }
- $this->_DBHandle = null;
- } // function __destruct()
-
-
- /**
- * Identify whether the caching method is currently available
- * Some methods are dependent on the availability of certain extensions being enabled in the PHP build
- *
- * @return boolean
- */
- public static function cacheMethodIsAvailable() {
- if (!class_exists('SQLite3',FALSE)) {
- return false;
- }
-
- return true;
- }
-
-}
diff --git a/admin/survey/excel/PHPExcel/CachedObjectStorage/Wincache.php b/admin/survey/excel/PHPExcel/CachedObjectStorage/Wincache.php
deleted file mode 100644
index 1534448..0000000
--- a/admin/survey/excel/PHPExcel/CachedObjectStorage/Wincache.php
+++ /dev/null
@@ -1,280 +0,0 @@
-<?php
-/**
- * PHPExcel
- *
- * Copyright (c) 2006 - 2012 PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel_CachedObjectStorage
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-
-/**
- * PHPExcel_CachedObjectStorage_Wincache
- *
- * @category PHPExcel
- * @package PHPExcel_CachedObjectStorage
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- */
-class PHPExcel_CachedObjectStorage_Wincache extends PHPExcel_CachedObjectStorage_CacheBase implements PHPExcel_CachedObjectStorage_ICache {
-
- /**
- * Prefix used to uniquely identify cache data for this worksheet
- *
- * @var string
- */
- private $_cachePrefix = null;
-
- /**
- * Cache timeout
- *
- * @var integer
- */
- private $_cacheTime = 600;
-
-
- /**
- * Store cell data in cache for the current cell object if it's "dirty",
- * and the 'nullify' the current cell object
- *
- * @return void
- * @throws Exception
- */
- private function _storeData() {
- if ($this->_currentCellIsDirty) {
- $this->_currentObject->detach();
-
- $obj = serialize($this->_currentObject);
- if (wincache_ucache_exists($this->_cachePrefix.$this->_currentObjectID.'.cache')) {
- if (!wincache_ucache_set($this->_cachePrefix.$this->_currentObjectID.'.cache', $obj, $this->_cacheTime)) {
- $this->__destruct();
- throw new Exception('Failed to store cell '.$this->_currentObjectID.' in WinCache');
- }
- } else {
- if (!wincache_ucache_add($this->_cachePrefix.$this->_currentObjectID.'.cache', $obj, $this->_cacheTime)) {
- $this->__destruct();
- throw new Exception('Failed to store cell '.$this->_currentObjectID.' in WinCache');
- }
- }
- $this->_currentCellIsDirty = false;
- }
-
- $this->_currentObjectID = $this->_currentObject = null;
- } // function _storeData()
-
-
- /**
- * Add or Update a cell in cache identified by coordinate address
- *
- * @param string $pCoord Coordinate address of the cell to update
- * @param PHPExcel_Cell $cell Cell to update
- * @return void
- * @throws Exception
- */
- public function addCacheData($pCoord, PHPExcel_Cell $cell) {
- if (($pCoord !== $this->_currentObjectID) && ($this->_currentObjectID !== null)) {
- $this->_storeData();
- }
- $this->_cellCache[$pCoord] = true;
-
- $this->_currentObjectID = $pCoord;
- $this->_currentObject = $cell;
- $this->_currentCellIsDirty = true;
-
- return $cell;
- } // function addCacheData()
-
-
- /**
- * Is a value set in the current PHPExcel_CachedObjectStorage_ICache for an indexed cell?
- *
- * @param string $pCoord Coordinate address of the cell to check
- * @return boolean
- */
- public function isDataSet($pCoord) {
- // Check if the requested entry is the current object, or exists in the cache
- if (parent::isDataSet($pCoord)) {
- if ($this->_currentObjectID == $pCoord) {
- return true;
- }
- // Check if the requested entry still exists in cache
- $success = wincache_ucache_exists($this->_cachePrefix.$pCoord.'.cache');
- if ($success === false) {
- // Entry no longer exists in Wincache, so clear it from the cache array
- parent::deleteCacheData($pCoord);
- throw new Exception('Cell entry '.$pCoord.' no longer exists in WinCache');
- }
- return true;
- }
- return false;
- } // function isDataSet()
-
-
- /**
- * Get cell at a specific coordinate
- *
- * @param string $pCoord Coordinate of the cell
- * @throws Exception
- * @return PHPExcel_Cell Cell that was found, or null if not found
- */
- public function getCacheData($pCoord) {
- if ($pCoord === $this->_currentObjectID) {
- return $this->_currentObject;
- }
- $this->_storeData();
-
- // Check if the entry that has been requested actually exists
- $obj = null;
- if (parent::isDataSet($pCoord)) {
- $success = false;
- $obj = wincache_ucache_get($this->_cachePrefix.$pCoord.'.cache', $success);
- if ($success === false) {
- // Entry no longer exists in WinCache, so clear it from the cache array
- parent::deleteCacheData($pCoord);
- throw new Exception('Cell entry '.$pCoord.' no longer exists in WinCache');
- }
- } else {
- // Return null if requested entry doesn't exist in cache
- return null;
- }
-
- // Set current entry to the requested entry
- $this->_currentObjectID = $pCoord;
- $this->_currentObject = unserialize($obj);
- // Re-attach the parent worksheet
- $this->_currentObject->attach($this->_parent);
-
- // Return requested entry
- return $this->_currentObject;
- } // function getCacheData()
-
-
- /**
- * Delete a cell in cache identified by coordinate address
- *
- * @param string $pCoord Coordinate address of the cell to delete
- * @throws Exception
- */
- public function deleteCacheData($pCoord) {
- // Delete the entry from Wincache
- wincache_ucache_delete($this->_cachePrefix.$pCoord.'.cache');
-
- // Delete the entry from our cell address array
- parent::deleteCacheData($pCoord);
- } // function deleteCacheData()
-
-
- /**
- * Clone the cell collection
- *
- * @param PHPExcel_Worksheet $parent The new worksheet
- * @return void
- */
- public function copyCellCollection(PHPExcel_Worksheet $parent) {
- parent::copyCellCollection($parent);
- // Get a new id for the new file name
- $baseUnique = $this->_getUniqueID();
- $newCachePrefix = substr(md5($baseUnique),0,8).'.';
- $cacheList = $this->getCellList();
- foreach($cacheList as $cellID) {
- if ($cellID != $this->_currentObjectID) {
- $success = false;
- $obj = wincache_ucache_get($this->_cachePrefix.$cellID.'.cache', $success);
- if ($success === false) {
- // Entry no longer exists in WinCache, so clear it from the cache array
- parent::deleteCacheData($cellID);
- throw new Exception('Cell entry '.$cellID.' no longer exists in Wincache');
- }
- if (!wincache_ucache_add($newCachePrefix.$cellID.'.cache', $obj, $this->_cacheTime)) {
- $this->__destruct();
- throw new Exception('Failed to store cell '.$cellID.' in Wincache');
- }
- }
- }
- $this->_cachePrefix = $newCachePrefix;
- } // function copyCellCollection()
-
-
- /**
- * Clear the cell collection and disconnect from our parent
- *
- * @return void
- */
- public function unsetWorksheetCells() {
- if(!is_null($this->_currentObject)) {
- $this->_currentObject->detach();
- $this->_currentObject = $this->_currentObjectID = null;
- }
-
- // Flush the WinCache cache
- $this->__destruct();
-
- $this->_cellCache = array();
-
- // detach ourself from the worksheet, so that it can then delete this object successfully
- $this->_parent = null;
- } // function unsetWorksheetCells()
-
-
- /**
- * Initialise this new cell collection
- *
- * @param PHPExcel_Worksheet $parent The worksheet for this cell collection
- * @param array of mixed $arguments Additional initialisation arguments
- */
- public function __construct(PHPExcel_Worksheet $parent, $arguments) {
- $cacheTime = (isset($arguments['cacheTime'])) ? $arguments['cacheTime'] : 600;
-
- if (is_null($this->_cachePrefix)) {
- $baseUnique = $this->_getUniqueID();
- $this->_cachePrefix = substr(md5($baseUnique),0,8).'.';
- $this->_cacheTime = $cacheTime;
-
- parent::__construct($parent);
- }
- } // function __construct()
-
-
- /**
- * Destroy this cell collection
- */
- public function __destruct() {
- $cacheList = $this->getCellList();
- foreach($cacheList as $cellID) {
- wincache_ucache_delete($this->_cachePrefix.$cellID.'.cache');
- }
- } // function __destruct()
-
-
- /**
- * Identify whether the caching method is currently available
- * Some methods are dependent on the availability of certain extensions being enabled in the PHP build
- *
- * @return boolean
- */
- public static function cacheMethodIsAvailable() {
- if (!function_exists('wincache_ucache_add')) {
- return false;
- }
-
- return true;
- }
-
-}
diff --git a/admin/survey/excel/PHPExcel/CachedObjectStorageFactory.php b/admin/survey/excel/PHPExcel/CachedObjectStorageFactory.php
deleted file mode 100644
index d523a20..0000000
--- a/admin/survey/excel/PHPExcel/CachedObjectStorageFactory.php
+++ /dev/null
@@ -1,239 +0,0 @@
-<?php
-
-/**
- * PHPExcel
- *
- * Copyright (c) 2006 - 2012 PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-
-/**
- * PHPExcel_CachedObjectStorageFactory
- *
- * @category PHPExcel
- * @package PHPExcel_CachedObjectStorage
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- */
-class PHPExcel_CachedObjectStorageFactory
-{
- const cache_in_memory = 'Memory';
- const cache_in_memory_gzip = 'MemoryGZip';
- const cache_in_memory_serialized = 'MemorySerialized';
- const cache_igbinary = 'Igbinary';
- const cache_to_discISAM = 'DiscISAM';
- const cache_to_apc = 'APC';
- const cache_to_memcache = 'Memcache';
- const cache_to_phpTemp = 'PHPTemp';
- const cache_to_wincache = 'Wincache';
- const cache_to_sqlite = 'SQLite';
- const cache_to_sqlite3 = 'SQLite3';
-
-
- /**
- * Name of the method used for cell cacheing
- *
- * @var string
- */
- private static $_cacheStorageMethod = NULL;
-
- /**
- * Name of the class used for cell cacheing
- *
- * @var string
- */
- private static $_cacheStorageClass = NULL;
-
-
- /**
- * List of all possible cache storage methods
- *
- * @var string[]
- */
- private static $_storageMethods = array(
- self::cache_in_memory,
- self::cache_in_memory_gzip,
- self::cache_in_memory_serialized,
- self::cache_igbinary,
- self::cache_to_phpTemp,
- self::cache_to_discISAM,
- self::cache_to_apc,
- self::cache_to_memcache,
- self::cache_to_wincache,
- self::cache_to_sqlite,
- self::cache_to_sqlite3,
- );
-
-
- /**
- * Default arguments for each cache storage method
- *
- * @var array of mixed array
- */
- private static $_storageMethodDefaultParameters = array(
- self::cache_in_memory => array(
- ),
- self::cache_in_memory_gzip => array(
- ),
- self::cache_in_memory_serialized => array(
- ),
- self::cache_igbinary => array(
- ),
- self::cache_to_phpTemp => array( 'memoryCacheSize' => '1MB'
- ),
- self::cache_to_discISAM => array( 'dir' => NULL
- ),
- self::cache_to_apc => array( 'cacheTime' => 600
- ),
- self::cache_to_memcache => array( 'memcacheServer' => 'localhost',
- 'memcachePort' => 11211,
- 'cacheTime' => 600
- ),
- self::cache_to_wincache => array( 'cacheTime' => 600
- ),
- self::cache_to_sqlite => array(
- ),
- self::cache_to_sqlite3 => array(
- ),
- );
-
-
- /**
- * Arguments for the active cache storage method
- *
- * @var array of mixed array
- */
- private static $_storageMethodParameters = array();
-
-
- /**
- * Return the current cache storage method
- *
- * @return string|NULL
- **/
- public static function getCacheStorageMethod()
- {
- return self::$_cacheStorageMethod;
- } // function getCacheStorageMethod()
-
-
- /**
- * Return the current cache storage class
- *
- * @return PHPExcel_CachedObjectStorage_ICache|NULL
- **/
- public static function getCacheStorageClass()
- {
- return self::$_cacheStorageClass;
- } // function getCacheStorageClass()
-
-
- /**
- * Return the list of all possible cache storage methods
- *
- * @return string[]
- **/
- public static function getAllCacheStorageMethods()
- {
- return self::$_storageMethods;
- } // function getCacheStorageMethods()
-
-
- /**
- * Return the list of all available cache storage methods
- *
- * @return string[]
- **/
- public static function getCacheStorageMethods()
- {
- $activeMethods = array();
- foreach(self::$_storageMethods as $storageMethod) {
- $cacheStorageClass = 'PHPExcel_CachedObjectStorage_' . $storageMethod;
- if (call_user_func(array($cacheStorageClass, 'cacheMethodIsAvailable'))) {
- $activeMethods[] = $storageMethod;
- }
- }
- return $activeMethods;
- } // function getCacheStorageMethods()
-
-
- /**
- * Identify the cache storage method to use
- *
- * @param string $method Name of the method to use for cell cacheing
- * @param array of mixed $arguments Additional arguments to pass to the cell caching class
- * when instantiating
- * @return boolean
- **/
- public static function initialize($method = self::cache_in_memory, $arguments = array())
- {
- if (!in_array($method,self::$_storageMethods)) {
- return FALSE;
- }
-
- $cacheStorageClass = 'PHPExcel_CachedObjectStorage_'.$method;
- if (!call_user_func(array( $cacheStorageClass,
- 'cacheMethodIsAvailable'))) {
- return FALSE;
- }
-
- self::$_storageMethodParameters[$method] = self::$_storageMethodDefaultParameters[$method];
- foreach($arguments as $k => $v) {
- if (isset(self::$_storageMethodParameters[$method][$k])) {
- self::$_storageMethodParameters[$method][$k] = $v;
- }
- }
-
- if (self::$_cacheStorageMethod === NULL) {
- self::$_cacheStorageClass = 'PHPExcel_CachedObjectStorage_' . $method;
- self::$_cacheStorageMethod = $method;
- }
- return TRUE;
- } // function initialize()
-
-
- /**
- * Initialise the cache storage
- *
- * @param PHPExcel_Worksheet $parent Enable cell caching for this worksheet
- * @return PHPExcel_CachedObjectStorage_ICache
- **/
- public static function getInstance(PHPExcel_Worksheet $parent)
- {
- $cacheMethodIsAvailable = TRUE;
- if (self::$_cacheStorageMethod === NULL) {
- $cacheMethodIsAvailable = self::initialize();
- }
-
- if ($cacheMethodIsAvailable) {
- $instance = new self::$_cacheStorageClass( $parent,
- self::$_storageMethodParameters[self::$_cacheStorageMethod]
- );
- if ($instance !== NULL) {
- return $instance;
- }
- }
-
- return FALSE;
- } // function getInstance()
-
-} \ No newline at end of file
diff --git a/admin/survey/excel/PHPExcel/Calculation.php b/admin/survey/excel/PHPExcel/Calculation.php
deleted file mode 100644
index a1fe291..0000000
--- a/admin/survey/excel/PHPExcel/Calculation.php
+++ /dev/null
@@ -1,3811 +0,0 @@
-<?php
-/**
- * PHPExcel
- *
- * Copyright (c) 2006 - 2012 PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel_Calculation
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-
-/** PHPExcel root directory */
-if (!defined('PHPEXCEL_ROOT')) {
- /**
- * @ignore
- */
- define('PHPEXCEL_ROOT', dirname(__FILE__) . '/../');
- require(PHPEXCEL_ROOT . 'PHPExcel/Autoloader.php');
-}
-
-
-if (!defined('CALCULATION_REGEXP_CELLREF')) {
- // Test for support of \P (multibyte options) in PCRE
- if(defined('PREG_BAD_UTF8_ERROR')) {
- // Cell reference (cell or range of cells, with or without a sheet reference)
- define('CALCULATION_REGEXP_CELLREF','((([^\s,!&%^\/\*\+<>=-]*)|(\'[^\']*\')|(\"[^\"]*\"))!)?\$?([a-z]{1,3})\$?(\d{1,7})');
- // Named Range of cells
- define('CALCULATION_REGEXP_NAMEDRANGE','((([^\s,!&%^\/\*\+<>=-]*)|(\'[^\']*\')|(\"[^\"]*\"))!)?([_A-Z][_A-Z0-9\.]*)');
- } else {
- // Cell reference (cell or range of cells, with or without a sheet reference)
- define('CALCULATION_REGEXP_CELLREF','(((\w*)|(\'[^\']*\')|(\"[^\"]*\"))!)?\$?([a-z]{1,3})\$?(\d+)');
- // Named Range of cells
- define('CALCULATION_REGEXP_NAMEDRANGE','(((\w*)|(\'.*\')|(\".*\"))!)?([_A-Z][_A-Z0-9\.]*)');
- }
-}
-
-
-/**
- * PHPExcel_Calculation (Singleton)
- *
- * @category PHPExcel
- * @package PHPExcel_Calculation
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- */
-class PHPExcel_Calculation {
-
- /** Constants */
- /** Regular Expressions */
- // Numeric operand
- const CALCULATION_REGEXP_NUMBER = '[-+]?\d*\.?\d+(e[-+]?\d+)?';
- // String operand
- const CALCULATION_REGEXP_STRING = '"(?:[^"]|"")*"';
- // Opening bracket
- const CALCULATION_REGEXP_OPENBRACE = '\(';
- // Function (allow for the old @ symbol that could be used to prefix a function, but we'll ignore it)
- const CALCULATION_REGEXP_FUNCTION = '@?([A-Z][A-Z0-9\.]*)[\s]*\(';
- // Cell reference (cell or range of cells, with or without a sheet reference)
- const CALCULATION_REGEXP_CELLREF = CALCULATION_REGEXP_CELLREF;
- // Named Range of cells
- const CALCULATION_REGEXP_NAMEDRANGE = CALCULATION_REGEXP_NAMEDRANGE;
- // Error
- const CALCULATION_REGEXP_ERROR = '\#[A-Z][A-Z0_\/]*[!\?]?';
-
-
- /** constants */
- const RETURN_ARRAY_AS_ERROR = 'error';
- const RETURN_ARRAY_AS_VALUE = 'value';
- const RETURN_ARRAY_AS_ARRAY = 'array';
-
- private static $returnArrayAsType = self::RETURN_ARRAY_AS_VALUE;
-
-
- /**
- * Instance of this class
- *
- * @access private
- * @var PHPExcel_Calculation
- */
- private static $_instance;
-
-
- /**
- * Calculation cache
- *
- * @access private
- * @var array
- */
- private static $_calculationCache = array ();
-
-
- /**
- * Calculation cache enabled
- *
- * @access private
- * @var boolean
- */
- private static $_calculationCacheEnabled = true;
-
-
- /**
- * Calculation cache expiration time
- *
- * @access private
- * @var float
- */
- private static $_calculationCacheExpirationTime = 15;
-
-
- /**
- * List of operators that can be used within formulae
- * The true/false value indicates whether it is a binary operator or a unary operator
- *
- * @access private
- * @var array
- */
- private static $_operators = array('+' => true, '-' => true, '*' => true, '/' => true,
- '^' => true, '&' => true, '%' => false, '~' => false,
- '>' => true, '<' => true, '=' => true, '>=' => true,
- '<=' => true, '<>' => true, '|' => true, ':' => true
- );
-
-
- /**
- * List of binary operators (those that expect two operands)
- *
- * @access private
- * @var array
- */
- private static $_binaryOperators = array('+' => true, '-' => true, '*' => true, '/' => true,
- '^' => true, '&' => true, '>' => true, '<' => true,
- '=' => true, '>=' => true, '<=' => true, '<>' => true,
- '|' => true, ':' => true
- );
-
- /**
- * Flag to determine how formula errors should be handled
- * If true, then a user error will be triggered
- * If false, then an exception will be thrown
- *
- * @access public
- * @var boolean
- *
- */
- public $suppressFormulaErrors = false;
-
- /**
- * Error message for any error that was raised/thrown by the calculation engine
- *
- * @access public
- * @var string
- *
- */
- public $formulaError = null;
-
- /**
- * Flag to determine whether a debug log should be generated by the calculation engine
- * If true, then a debug log will be generated
- * If false, then a debug log will not be generated
- *
- * @access public
- * @var boolean
- *
- */
- public $writeDebugLog = false;
-
- /**
- * Flag to determine whether a debug log should be echoed by the calculation engine
- * If true, then a debug log will be echoed
- * If false, then a debug log will not be echoed
- * A debug log can only be echoed if it is generated
- *
- * @access public
- * @var boolean
- *
- */
- public $echoDebugLog = false;
-
-
- /**
- * An array of the nested cell references accessed by the calculation engine, used for the debug log
- *
- * @access private
- * @var array of string
- *
- */
- private $debugLogStack = array();
-
- /**
- * The debug log generated by the calculation engine
- *
- * @access public
- * @var array of string
- *
- */
- public $debugLog = array();
- private $_cyclicFormulaCount = 0;
- private $_cyclicFormulaCell = '';
- public $cyclicFormulaCount = 0;
-
-
- private $_savedPrecision = 12;
-
-
- private static $_localeLanguage = 'en_us'; // US English (default locale)
- private static $_validLocaleLanguages = array( 'en' // English (default language)
- );
- private static $_localeArgumentSeparator = ',';
- private static $_localeFunctions = array();
- public static $_localeBoolean = array( 'TRUE' => 'TRUE',
- 'FALSE' => 'FALSE',
- 'NULL' => 'NULL'
- );
-
-
- // Constant conversion from text name/value to actual (datatyped) value
- private static $_ExcelConstants = array('TRUE' => true,
- 'FALSE' => false,
- 'NULL' => null
- );
-
- // PHPExcel functions
- private static $_PHPExcelFunctions = array( // PHPExcel functions
- 'ABS' => array('category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG,
- 'functionCall' => 'abs',
- 'argumentCount' => '1'
- ),
- 'ACCRINT' => array('category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL,
- 'functionCall' => 'PHPExcel_Calculation_Financial::ACCRINT',
- 'argumentCount' => '4-7'
- ),
- 'ACCRINTM' => array('category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL,
- 'functionCall' => 'PHPExcel_Calculation_Financial::ACCRINTM',
- 'argumentCount' => '3-5'
- ),
- 'ACOS' => array('category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG,
- 'functionCall' => 'acos',
- 'argumentCount' => '1'
- ),
- 'ACOSH' => array('category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG,
- 'functionCall' => 'acosh',
- 'argumentCount' => '1'
- ),
- 'ADDRESS' => array('category' => PHPExcel_Calculation_Function::CATEGORY_LOOKUP_AND_REFERENCE,
- 'functionCall' => 'PHPExcel_Calculation_LookupRef::CELL_ADDRESS',
- 'argumentCount' => '2-5'
- ),
- 'AMORDEGRC' => array('category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL,
- 'functionCall' => 'PHPExcel_Calculation_Financial::AMORDEGRC',
- 'argumentCount' => '6,7'
- ),
- 'AMORLINC' => array('category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL,
- 'functionCall' => 'PHPExcel_Calculation_Financial::AMORLINC',
- 'argumentCount' => '6,7'
- ),
- 'AND' => array('category' => PHPExcel_Calculation_Function::CATEGORY_LOGICAL,
- 'functionCall' => 'PHPExcel_Calculation_Logical::LOGICAL_AND',
- 'argumentCount' => '1+'
- ),
- 'AREAS' => array('category' => PHPExcel_Calculation_Function::CATEGORY_LOOKUP_AND_REFERENCE,
- 'functionCall' => 'PHPExcel_Calculation_Functions::DUMMY',
- 'argumentCount' => '1'
- ),
- 'ASC' => array('category' => PHPExcel_Calculation_Function::CATEGORY_TEXT_AND_DATA,
- 'functionCall' => 'PHPExcel_Calculation_Functions::DUMMY',
- 'argumentCount' => '1'
- ),
- 'ASIN' => array('category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG,
- 'functionCall' => 'asin',
- 'argumentCount' => '1'
- ),
- 'ASINH' => array('category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG,
- 'functionCall' => 'asinh',
- 'argumentCount' => '1'
- ),
- 'ATAN' => array('category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG,
- 'functionCall' => 'atan',
- 'argumentCount' => '1'
- ),
- 'ATAN2' => array('category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG,
- 'functionCall' => 'PHPExcel_Calculation_MathTrig::ATAN2',
- 'argumentCount' => '2'
- ),
- 'ATANH' => array('category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG,
- 'functionCall' => 'atanh',
- 'argumentCount' => '1'
- ),
- 'AVEDEV' => array('category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,
- 'functionCall' => 'PHPExcel_Calculation_Statistical::AVEDEV',
- 'argumentCount' => '1+'
- ),
- 'AVERAGE' => array('category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,
- 'functionCall' => 'PHPExcel_Calculation_Statistical::AVERAGE',
- 'argumentCount' => '1+'
- ),
- 'AVERAGEA' => array('category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,
- 'functionCall' => 'PHPExcel_Calculation_Statistical::AVERAGEA',
- 'argumentCount' => '1+'
- ),
- 'AVERAGEIF' => array('category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,
- 'functionCall' => 'PHPExcel_Calculation_Statistical::AVERAGEIF',
- 'argumentCount' => '2,3'
- ),
- 'AVERAGEIFS' => array('category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,
- 'functionCall' => 'PHPExcel_Calculation_Functions::DUMMY',
- 'argumentCount' => '3+'
- ),
- 'BAHTTEXT' => array('category' => PHPExcel_Calculation_Function::CATEGORY_TEXT_AND_DATA,
- 'functionCall' => 'PHPExcel_Calculation_Functions::DUMMY',
- 'argumentCount' => '1'
- ),
- 'BESSELI' => array('category' => PHPExcel_Calculation_Function::CATEGORY_ENGINEERING,
- 'functionCall' => 'PHPExcel_Calculation_Engineering::BESSELI',
- 'argumentCount' => '2'
- ),
- 'BESSELJ' => array('category' => PHPExcel_Calculation_Function::CATEGORY_ENGINEERING,
- 'functionCall' => 'PHPExcel_Calculation_Engineering::BESSELJ',
- 'argumentCount' => '2'
- ),
- 'BESSELK' => array('category' => PHPExcel_Calculation_Function::CATEGORY_ENGINEERING,
- 'functionCall' => 'PHPExcel_Calculation_Engineering::BESSELK',
- 'argumentCount' => '2'
- ),
- 'BESSELY' => array('category' => PHPExcel_Calculation_Function::CATEGORY_ENGINEERING,
- 'functionCall' => 'PHPExcel_Calculation_Engineering::BESSELY',
- 'argumentCount' => '2'
- ),
- 'BETADIST' => array('category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,
- 'functionCall' => 'PHPExcel_Calculation_Statistical::BETADIST',
- 'argumentCount' => '3-5'
- ),
- 'BETAINV' => array('category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,
- 'functionCall' => 'PHPExcel_Calculation_Statistical::BETAINV',
- 'argumentCount' => '3-5'
- ),
- 'BIN2DEC' => array('category' => PHPExcel_Calculation_Function::CATEGORY_ENGINEERING,
- 'functionCall' => 'PHPExcel_Calculation_Engineering::BINTODEC',
- 'argumentCount' => '1'
- ),
- 'BIN2HEX' => array('category' => PHPExcel_Calculation_Function::CATEGORY_ENGINEERING,
- 'functionCall' => 'PHPExcel_Calculation_Engineering::BINTOHEX',
- 'argumentCount' => '1,2'
- ),
- 'BIN2OCT' => array('category' => PHPExcel_Calculation_Function::CATEGORY_ENGINEERING,
- 'functionCall' => 'PHPExcel_Calculation_Engineering::BINTOOCT',
- 'argumentCount' => '1,2'
- ),
- 'BINOMDIST' => array('category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,
- 'functionCall' => 'PHPExcel_Calculation_Statistical::BINOMDIST',
- 'argumentCount' => '4'
- ),
- 'CEILING' => array('category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG,
- 'functionCall' => 'PHPExcel_Calculation_MathTrig::CEILING',
- 'argumentCount' => '2'
- ),
- 'CELL' => array('category' => PHPExcel_Calculation_Function::CATEGORY_INFORMATION,
- 'functionCall' => 'PHPExcel_Calculation_Functions::DUMMY',
- 'argumentCount' => '1,2'
- ),
- 'CHAR' => array('category' => PHPExcel_Calculation_Function::CATEGORY_TEXT_AND_DATA,
- 'functionCall' => 'PHPExcel_Calculation_TextData::CHARACTER',
- 'argumentCount' => '1'
- ),
- 'CHIDIST' => array('category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,
- 'functionCall' => 'PHPExcel_Calculation_Statistical::CHIDIST',
- 'argumentCount' => '2'
- ),
- 'CHIINV' => array('category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,
- 'functionCall' => 'PHPExcel_Calculation_Statistical::CHIINV',
- 'argumentCount' => '2'
- ),
- 'CHITEST' => array('category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,
- 'functionCall' => 'PHPExcel_Calculation_Functions::DUMMY',
- 'argumentCount' => '2'
- ),
- 'CHOOSE' => array('category' => PHPExcel_Calculation_Function::CATEGORY_LOOKUP_AND_REFERENCE,
- 'functionCall' => 'PHPExcel_Calculation_LookupRef::CHOOSE',
- 'argumentCount' => '2+'
- ),
- 'CLEAN' => array('category' => PHPExcel_Calculation_Function::CATEGORY_TEXT_AND_DATA,
- 'functionCall' => 'PHPExcel_Calculation_TextData::TRIMNONPRINTABLE',
- 'argumentCount' => '1'
- ),
- 'CODE' => array('category' => PHPExcel_Calculation_Function::CATEGORY_TEXT_AND_DATA,
- 'functionCall' => 'PHPExcel_Calculation_TextData::ASCIICODE',
- 'argumentCount' => '1'
- ),
- 'COLUMN' => array('category' => PHPExcel_Calculation_Function::CATEGORY_LOOKUP_AND_REFERENCE,
- 'functionCall' => 'PHPExcel_Calculation_LookupRef::COLUMN',
- 'argumentCount' => '-1',
- 'passByReference' => array(true)
- ),
- 'COLUMNS' => array('category' => PHPExcel_Calculation_Function::CATEGORY_LOOKUP_AND_REFERENCE,
- 'functionCall' => 'PHPExcel_Calculation_LookupRef::COLUMNS',
- 'argumentCount' => '1'
- ),
- 'COMBIN' => array('category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG,
- 'functionCall' => 'PHPExcel_Calculation_MathTrig::COMBIN',
- 'argumentCount' => '2'
- ),
- 'COMPLEX' => array('category' => PHPExcel_Calculation_Function::CATEGORY_ENGINEERING,
- 'functionCall' => 'PHPExcel_Calculation_Engineering::COMPLEX',
- 'argumentCount' => '2,3'
- ),
- 'CONCATENATE' => array('category' => PHPExcel_Calculation_Function::CATEGORY_TEXT_AND_DATA,
- 'functionCall' => 'PHPExcel_Calculation_TextData::CONCATENATE',
- 'argumentCount' => '1+'
- ),
- 'CONFIDENCE' => array('category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,
- 'functionCall' => 'PHPExcel_Calculation_Statistical::CONFIDENCE',
- 'argumentCount' => '3'
- ),
- 'CONVERT' => array('category' => PHPExcel_Calculation_Function::CATEGORY_ENGINEERING,
- 'functionCall' => 'PHPExcel_Calculation_Engineering::CONVERTUOM',
- 'argumentCount' => '3'
- ),
- 'CORREL' => array('category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,
- 'functionCall' => 'PHPExcel_Calculation_Statistical::CORREL',
- 'argumentCount' => '2'
- ),
- 'COS' => array('category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG,
- 'functionCall' => 'cos',
- 'argumentCount' => '1'
- ),
- 'COSH' => array('category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG,
- 'functionCall' => 'cosh',
- 'argumentCount' => '1'
- ),
- 'COUNT' => array('category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,
- 'functionCall' => 'PHPExcel_Calculation_Statistical::COUNT',
- 'argumentCount' => '1+'
- ),
- 'COUNTA' => array('category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,
- 'functionCall' => 'PHPExcel_Calculation_Statistical::COUNTA',
- 'argumentCount' => '1+'
- ),
- 'COUNTBLANK' => array('category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,
- 'functionCall' => 'PHPExcel_Calculation_Statistical::COUNTBLANK',
- 'argumentCount' => '1'
- ),
- 'COUNTIF' => array('category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,
- 'functionCall' => 'PHPExcel_Calculation_Statistical::COUNTIF',
- 'argumentCount' => '2'
- ),
- 'COUNTIFS' => array('category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,
- 'functionCall' => 'PHPExcel_Calculation_Functions::DUMMY',
- 'argumentCount' => '2'
- ),
- 'COUPDAYBS' => array('category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL,
- 'functionCall' => 'PHPExcel_Calculation_Financial::COUPDAYBS',
- 'argumentCount' => '3,4'
- ),
- 'COUPDAYS' => array('category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL,
- 'functionCall' => 'PHPExcel_Calculation_Financial::COUPDAYS',
- 'argumentCount' => '3,4'
- ),
- 'COUPDAYSNC' => array('category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL,
- 'functionCall' => 'PHPExcel_Calculation_Financial::COUPDAYSNC',
- 'argumentCount' => '3,4'
- ),
- 'COUPNCD' => array('category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL,
- 'functionCall' => 'PHPExcel_Calculation_Financial::COUPNCD',
- 'argumentCount' => '3,4'
- ),
- 'COUPNUM' => array('category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL,
- 'functionCall' => 'PHPExcel_Calculation_Financial::COUPNUM',
- 'argumentCount' => '3,4'
- ),
- 'COUPPCD' => array('category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL,
- 'functionCall' => 'PHPExcel_Calculation_Financial::COUPPCD',
- 'argumentCount' => '3,4'
- ),
- 'COVAR' => array('category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,
- 'functionCall' => 'PHPExcel_Calculation_Statistical::COVAR',
- 'argumentCount' => '2'
- ),
- 'CRITBINOM' => array('category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,
- 'functionCall' => 'PHPExcel_Calculation_Statistical::CRITBINOM',
- 'argumentCount' => '3'
- ),
- 'CUBEKPIMEMBER' => array('category' => PHPExcel_Calculation_Function::CATEGORY_CUBE,
- 'functionCall' => 'PHPExcel_Calculation_Functions::DUMMY',
- 'argumentCount' => '?'
- ),
- 'CUBEMEMBER' => array('category' => PHPExcel_Calculation_Function::CATEGORY_CUBE,
- 'functionCall' => 'PHPExcel_Calculation_Functions::DUMMY',
- 'argumentCount' => '?'
- ),
- 'CUBEMEMBERPROPERTY' => array('category' => PHPExcel_Calculation_Function::CATEGORY_CUBE,
- 'functionCall' => 'PHPExcel_Calculation_Functions::DUMMY',
- 'argumentCount' => '?'
- ),
- 'CUBERANKEDMEMBER' => array('category' => PHPExcel_Calculation_Function::CATEGORY_CUBE,
- 'functionCall' => 'PHPExcel_Calculation_Functions::DUMMY',
- 'argumentCount' => '?'
- ),
- 'CUBESET' => array('category' => PHPExcel_Calculation_Function::CATEGORY_CUBE,
- 'functionCall' => 'PHPExcel_Calculation_Functions::DUMMY',
- 'argumentCount' => '?'
- ),
- 'CUBESETCOUNT' => array('category' => PHPExcel_Calculation_Function::CATEGORY_CUBE,
- 'functionCall' => 'PHPExcel_Calculation_Functions::DUMMY',
- 'argumentCount' => '?'
- ),
- 'CUBEVALUE' => array('category' => PHPExcel_Calculation_Function::CATEGORY_CUBE,
- 'functionCall' => 'PHPExcel_Calculation_Functions::DUMMY',
- 'argumentCount' => '?'
- ),
- 'CUMIPMT' => array('category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL,
- 'functionCall' => 'PHPExcel_Calculation_Financial::CUMIPMT',
- 'argumentCount' => '6'
- ),
- 'CUMPRINC' => array('category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL,
- 'functionCall' => 'PHPExcel_Calculation_Financial::CUMPRINC',
- 'argumentCount' => '6'
- ),
- 'DATE' => array('category' => PHPExcel_Calculation_Function::CATEGORY_DATE_AND_TIME,
- 'functionCall' => 'PHPExcel_Calculation_DateTime::DATE',
- 'argumentCount' => '3'
- ),
- 'DATEDIF' => array('category' => PHPExcel_Calculation_Function::CATEGORY_DATE_AND_TIME,
- 'functionCall' => 'PHPExcel_Calculation_DateTime::DATEDIF',
- 'argumentCount' => '2,3'
- ),
- 'DATEVALUE' => array('category' => PHPExcel_Calculation_Function::CATEGORY_DATE_AND_TIME,
- 'functionCall' => 'PHPExcel_Calculation_DateTime::DATEVALUE',
- 'argumentCount' => '1'
- ),
- 'DAVERAGE' => array('category' => PHPExcel_Calculation_Function::CATEGORY_DATABASE,
- 'functionCall' => 'PHPExcel_Calculation_Database::DAVERAGE',
- 'argumentCount' => '3'
- ),
- 'DAY' => array('category' => PHPExcel_Calculation_Function::CATEGORY_DATE_AND_TIME,
- 'functionCall' => 'PHPExcel_Calculation_DateTime::DAYOFMONTH',
- 'argumentCount' => '1'
- ),
- 'DAYS360' => array('category' => PHPExcel_Calculation_Function::CATEGORY_DATE_AND_TIME,
- 'functionCall' => 'PHPExcel_Calculation_DateTime::DAYS360',
- 'argumentCount' => '2,3'
- ),
- 'DB' => array('category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL,
- 'functionCall' => 'PHPExcel_Calculation_Financial::DB',
- 'argumentCount' => '4,5'
- ),
- 'DCOUNT' => array('category' => PHPExcel_Calculation_Function::CATEGORY_DATABASE,
- 'functionCall' => 'PHPExcel_Calculation_Database::DCOUNT',
- 'argumentCount' => '3'
- ),
- 'DCOUNTA' => array('category' => PHPExcel_Calculation_Function::CATEGORY_DATABASE,
- 'functionCall' => 'PHPExcel_Calculation_Database::DCOUNTA',
- 'argumentCount' => '3'
- ),
- 'DDB' => array('category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL,
- 'functionCall' => 'PHPExcel_Calculation_Financial::DDB',
- 'argumentCount' => '4,5'
- ),
- 'DEC2BIN' => array('category' => PHPExcel_Calculation_Function::CATEGORY_ENGINEERING,
- 'functionCall' => 'PHPExcel_Calculation_Engineering::DECTOBIN',
- 'argumentCount' => '1,2'
- ),
- 'DEC2HEX' => array('category' => PHPExcel_Calculation_Function::CATEGORY_ENGINEERING,
- 'functionCall' => 'PHPExcel_Calculation_Engineering::DECTOHEX',
- 'argumentCount' => '1,2'
- ),
- 'DEC2OCT' => array('category' => PHPExcel_Calculation_Function::CATEGORY_ENGINEERING,
- 'functionCall' => 'PHPExcel_Calculation_Engineering::DECTOOCT',
- 'argumentCount' => '1,2'
- ),
- 'DEGREES' => array('category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG,
- 'functionCall' => 'rad2deg',
- 'argumentCount' => '1'
- ),
- 'DELTA' => array('category' => PHPExcel_Calculation_Function::CATEGORY_ENGINEERING,
- 'functionCall' => 'PHPExcel_Calculation_Engineering::DELTA',
- 'argumentCount' => '1,2'
- ),
- 'DEVSQ' => array('category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,
- 'functionCall' => 'PHPExcel_Calculation_Statistical::DEVSQ',
- 'argumentCount' => '1+'
- ),
- 'DGET' => array('category' => PHPExcel_Calculation_Function::CATEGORY_DATABASE,
- 'functionCall' => 'PHPExcel_Calculation_Database::DGET',
- 'argumentCount' => '3'
- ),
- 'DISC' => array('category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL,
- 'functionCall' => 'PHPExcel_Calculation_Financial::DISC',
- 'argumentCount' => '4,5'
- ),
- 'DMAX' => array('category' => PHPExcel_Calculation_Function::CATEGORY_DATABASE,
- 'functionCall' => 'PHPExcel_Calculation_Database::DMAX',
- 'argumentCount' => '3'
- ),
- 'DMIN' => array('category' => PHPExcel_Calculation_Function::CATEGORY_DATABASE,
- 'functionCall' => 'PHPExcel_Calculation_Database::DMIN',
- 'argumentCount' => '3'
- ),
- 'DOLLAR' => array('category' => PHPExcel_Calculation_Function::CATEGORY_TEXT_AND_DATA,
- 'functionCall' => 'PHPExcel_Calculation_TextData::DOLLAR',
- 'argumentCount' => '1,2'
- ),
- 'DOLLARDE' => array('category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL,
- 'functionCall' => 'PHPExcel_Calculation_Financial::DOLLARDE',
- 'argumentCount' => '2'
- ),
- 'DOLLARFR' => array('category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL,
- 'functionCall' => 'PHPExcel_Calculation_Financial::DOLLARFR',
- 'argumentCount' => '2'
- ),
- 'DPRODUCT' => array('category' => PHPExcel_Calculation_Function::CATEGORY_DATABASE,
- 'functionCall' => 'PHPExcel_Calculation_Database::DPRODUCT',
- 'argumentCount' => '3'
- ),
- 'DSTDEV' => array('category' => PHPExcel_Calculation_Function::CATEGORY_DATABASE,
- 'functionCall' => 'PHPExcel_Calculation_Database::DSTDEV',
- 'argumentCount' => '3'
- ),
- 'DSTDEVP' => array('category' => PHPExcel_Calculation_Function::CATEGORY_DATABASE,
- 'functionCall' => 'PHPExcel_Calculation_Database::DSTDEVP',
- 'argumentCount' => '3'
- ),
- 'DSUM' => array('category' => PHPExcel_Calculation_Function::CATEGORY_DATABASE,
- 'functionCall' => 'PHPExcel_Calculation_Database::DSUM',
- 'argumentCount' => '3'
- ),
- 'DURATION' => array('category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL,
- 'functionCall' => 'PHPExcel_Calculation_Functions::DUMMY',
- 'argumentCount' => '5,6'
- ),
- 'DVAR' => array('category' => PHPExcel_Calculation_Function::CATEGORY_DATABASE,
- 'functionCall' => 'PHPExcel_Calculation_Database::DVAR',
- 'argumentCount' => '3'
- ),
- 'DVARP' => array('category' => PHPExcel_Calculation_Function::CATEGORY_DATABASE,
- 'functionCall' => 'PHPExcel_Calculation_Database::DVARP',
- 'argumentCount' => '3'
- ),
- 'EDATE' => array('category' => PHPExcel_Calculation_Function::CATEGORY_DATE_AND_TIME,
- 'functionCall' => 'PHPExcel_Calculation_DateTime::EDATE',
- 'argumentCount' => '2'
- ),
- 'EFFECT' => array('category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL,
- 'functionCall' => 'PHPExcel_Calculation_Financial::EFFECT',
- 'argumentCount' => '2'
- ),
- 'EOMONTH' => array('category' => PHPExcel_Calculation_Function::CATEGORY_DATE_AND_TIME,
- 'functionCall' => 'PHPExcel_Calculation_DateTime::EOMONTH',
- 'argumentCount' => '2'
- ),
- 'ERF' => array('category' => PHPExcel_Calculation_Function::CATEGORY_ENGINEERING,
- 'functionCall' => 'PHPExcel_Calculation_Engineering::ERF',
- 'argumentCount' => '1,2'
- ),
- 'ERFC' => array('category' => PHPExcel_Calculation_Function::CATEGORY_ENGINEERING,
- 'functionCall' => 'PHPExcel_Calculation_Engineering::ERFC',
- 'argumentCount' => '1'
- ),
- 'ERROR.TYPE' => array('category' => PHPExcel_Calculation_Function::CATEGORY_INFORMATION,
- 'functionCall' => 'PHPExcel_Calculation_Functions::ERROR_TYPE',
- 'argumentCount' => '1'
- ),
- 'EVEN' => array('category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG,
- 'functionCall' => 'PHPExcel_Calculation_MathTrig::EVEN',
- 'argumentCount' => '1'
- ),
- 'EXACT' => array('category' => PHPExcel_Calculation_Function::CATEGORY_TEXT_AND_DATA,
- 'functionCall' => 'PHPExcel_Calculation_Functions::DUMMY',
- 'argumentCount' => '2'
- ),
- 'EXP' => array('category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG,
- 'functionCall' => 'exp',
- 'argumentCount' => '1'
- ),
- 'EXPONDIST' => array('category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,
- 'functionCall' => 'PHPExcel_Calculation_Statistical::EXPONDIST',
- 'argumentCount' => '3'
- ),
- 'FACT' => array('category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG,
- 'functionCall' => 'PHPExcel_Calculation_MathTrig::FACT',
- 'argumentCount' => '1'
- ),
- 'FACTDOUBLE' => array('category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG,
- 'functionCall' => 'PHPExcel_Calculation_MathTrig::FACTDOUBLE',
- 'argumentCount' => '1'
- ),
- 'FALSE' => array('category' => PHPExcel_Calculation_Function::CATEGORY_LOGICAL,
- 'functionCall' => 'PHPExcel_Calculation_Logical::FALSE',
- 'argumentCount' => '0'
- ),
- 'FDIST' => array('category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,
- 'functionCall' => 'PHPExcel_Calculation_Functions::DUMMY',
- 'argumentCount' => '3'
- ),
- 'FIND' => array('category' => PHPExcel_Calculation_Function::CATEGORY_TEXT_AND_DATA,
- 'functionCall' => 'PHPExcel_Calculation_TextData::SEARCHSENSITIVE',
- 'argumentCount' => '2,3'
- ),
- 'FINDB' => array('category' => PHPExcel_Calculation_Function::CATEGORY_TEXT_AND_DATA,
- 'functionCall' => 'PHPExcel_Calculation_TextData::SEARCHSENSITIVE',
- 'argumentCount' => '2,3'
- ),
- 'FINV' => array('category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,
- 'functionCall' => 'PHPExcel_Calculation_Functions::DUMMY',
- 'argumentCount' => '3'
- ),
- 'FISHER' => array('category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,
- 'functionCall' => 'PHPExcel_Calculation_Statistical::FISHER',
- 'argumentCount' => '1'
- ),
- 'FISHERINV' => array('category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,
- 'functionCall' => 'PHPExcel_Calculation_Statistical::FISHERINV',
- 'argumentCount' => '1'
- ),
- 'FIXED' => array('category' => PHPExcel_Calculation_Function::CATEGORY_TEXT_AND_DATA,
- 'functionCall' => 'PHPExcel_Calculation_TextData::FIXEDFORMAT',
- 'argumentCount' => '1-3'
- ),
- 'FLOOR' => array('category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG,
- 'functionCall' => 'PHPExcel_Calculation_MathTrig::FLOOR',
- 'argumentCount' => '2'
- ),
- 'FORECAST' => array('category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,
- 'functionCall' => 'PHPExcel_Calculation_Statistical::FORECAST',
- 'argumentCount' => '3'
- ),
- 'FREQUENCY' => array('category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,
- 'functionCall' => 'PHPExcel_Calculation_Functions::DUMMY',
- 'argumentCount' => '2'
- ),
- 'FTEST' => array('category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,
- 'functionCall' => 'PHPExcel_Calculation_Functions::DUMMY',
- 'argumentCount' => '2'
- ),
- 'FV' => array('category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL,
- 'functionCall' => 'PHPExcel_Calculation_Financial::FV',
- 'argumentCount' => '3-5'
- ),
- 'FVSCHEDULE' => array('category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL,
- 'functionCall' => 'PHPExcel_Calculation_Financial::FVSCHEDULE',
- 'argumentCount' => '2'
- ),
- 'GAMMADIST' => array('category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,
- 'functionCall' => 'PHPExcel_Calculation_Statistical::GAMMADIST',
- 'argumentCount' => '4'
- ),
- 'GAMMAINV' => array('category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,
- 'functionCall' => 'PHPExcel_Calculation_Statistical::GAMMAINV',
- 'argumentCount' => '3'
- ),
- 'GAMMALN' => array('category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,
- 'functionCall' => 'PHPExcel_Calculation_Statistical::GAMMALN',
- 'argumentCount' => '1'
- ),
- 'GCD' => array('category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG,
- 'functionCall' => 'PHPExcel_Calculation_MathTrig::GCD',
- 'argumentCount' => '1+'
- ),
- 'GEOMEAN' => array('category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,
- 'functionCall' => 'PHPExcel_Calculation_Statistical::GEOMEAN',
- 'argumentCount' => '1+'
- ),
- 'GESTEP' => array('category' => PHPExcel_Calculation_Function::CATEGORY_ENGINEERING,
- 'functionCall' => 'PHPExcel_Calculation_Engineering::GESTEP',
- 'argumentCount' => '1,2'
- ),
- 'GETPIVOTDATA' => array('category' => PHPExcel_Calculation_Function::CATEGORY_LOOKUP_AND_REFERENCE,
- 'functionCall' => 'PHPExcel_Calculation_Functions::DUMMY',
- 'argumentCount' => '2+'
- ),
- 'GROWTH' => array('category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,
- 'functionCall' => 'PHPExcel_Calculation_Statistical::GROWTH',
- 'argumentCount' => '1-4'
- ),
- 'HARMEAN' => array('category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,
- 'functionCall' => 'PHPExcel_Calculation_Statistical::HARMEAN',
- 'argumentCount' => '1+'
- ),
- 'HEX2BIN' => array('category' => PHPExcel_Calculation_Function::CATEGORY_ENGINEERING,
- 'functionCall' => 'PHPExcel_Calculation_Engineering::HEXTOBIN',
- 'argumentCount' => '1,2'
- ),
- 'HEX2DEC' => array('category' => PHPExcel_Calculation_Function::CATEGORY_ENGINEERING,
- 'functionCall' => 'PHPExcel_Calculation_Engineering::HEXTODEC',
- 'argumentCount' => '1'
- ),
- 'HEX2OCT' => array('category' => PHPExcel_Calculation_Function::CATEGORY_ENGINEERING,
- 'functionCall' => 'PHPExcel_Calculation_Engineering::HEXTOOCT',
- 'argumentCount' => '1,2'
- ),
- 'HLOOKUP' => array('category' => PHPExcel_Calculation_Function::CATEGORY_LOOKUP_AND_REFERENCE,
- 'functionCall' => 'PHPExcel_Calculation_Functions::DUMMY',
- 'argumentCount' => '3,4'
- ),
- 'HOUR' => array('category' => PHPExcel_Calculation_Function::CATEGORY_DATE_AND_TIME,
- 'functionCall' => 'PHPExcel_Calculation_DateTime::HOUROFDAY',
- 'argumentCount' => '1'
- ),
- 'HYPERLINK' => array('category' => PHPExcel_Calculation_Function::CATEGORY_LOOKUP_AND_REFERENCE,
- 'functionCall' => 'PHPExcel_Calculation_LookupRef::HYPERLINK',
- 'argumentCount' => '1,2',
- 'passCellReference'=> true
- ),
- 'HYPGEOMDIST' => array('category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,
- 'functionCall' => 'PHPExcel_Calculation_Statistical::HYPGEOMDIST',
- 'argumentCount' => '4'
- ),
- 'IF' => array('category' => PHPExcel_Calculation_Function::CATEGORY_LOGICAL,
- 'functionCall' => 'PHPExcel_Calculation_Logical::STATEMENT_IF',
- 'argumentCount' => '1-3'
- ),
- 'IFERROR' => array('category' => PHPExcel_Calculation_Function::CATEGORY_LOGICAL,
- 'functionCall' => 'PHPExcel_Calculation_Logical::IFERROR',
- 'argumentCount' => '2'
- ),
- 'IMABS' => array('category' => PHPExcel_Calculation_Function::CATEGORY_ENGINEERING,
- 'functionCall' => 'PHPExcel_Calculation_Engineering::IMABS',
- 'argumentCount' => '1'
- ),
- 'IMAGINARY' => array('category' => PHPExcel_Calculation_Function::CATEGORY_ENGINEERING,
- 'functionCall' => 'PHPExcel_Calculation_Engineering::IMAGINARY',
- 'argumentCount' => '1'
- ),
- 'IMARGUMENT' => array('category' => PHPExcel_Calculation_Function::CATEGORY_ENGINEERING,
- 'functionCall' => 'PHPExcel_Calculation_Engineering::IMARGUMENT',
- 'argumentCount' => '1'
- ),
- 'IMCONJUGATE' => array('category' => PHPExcel_Calculation_Function::CATEGORY_ENGINEERING,
- 'functionCall' => 'PHPExcel_Calculation_Engineering::IMCONJUGATE',
- 'argumentCount' => '1'
- ),
- 'IMCOS' => array('category' => PHPExcel_Calculation_Function::CATEGORY_ENGINEERING,
- 'functionCall' => 'PHPExcel_Calculation_Engineering::IMCOS',
- 'argumentCount' => '1'
- ),
- 'IMDIV' => array('category' => PHPExcel_Calculation_Function::CATEGORY_ENGINEERING,
- 'functionCall' => 'PHPExcel_Calculation_Engineering::IMDIV',
- 'argumentCount' => '2'
- ),
- 'IMEXP' => array('category' => PHPExcel_Calculation_Function::CATEGORY_ENGINEERING,
- 'functionCall' => 'PHPExcel_Calculation_Engineering::IMEXP',
- 'argumentCount' => '1'
- ),
- 'IMLN' => array('category' => PHPExcel_Calculation_Function::CATEGORY_ENGINEERING,
- 'functionCall' => 'PHPExcel_Calculation_Engineering::IMLN',
- 'argumentCount' => '1'
- ),
- 'IMLOG10' => array('category' => PHPExcel_Calculation_Function::CATEGORY_ENGINEERING,
- 'functionCall' => 'PHPExcel_Calculation_Engineering::IMLOG10',
- 'argumentCount' => '1'
- ),
- 'IMLOG2' => array('category' => PHPExcel_Calculation_Function::CATEGORY_ENGINEERING,
- 'functionCall' => 'PHPExcel_Calculation_Engineering::IMLOG2',
- 'argumentCount' => '1'
- ),
- 'IMPOWER' => array('category' => PHPExcel_Calculation_Function::CATEGORY_ENGINEERING,
- 'functionCall' => 'PHPExcel_Calculation_Engineering::IMPOWER',
- 'argumentCount' => '2'
- ),
- 'IMPRODUCT' => array('category' => PHPExcel_Calculation_Function::CATEGORY_ENGINEERING,
- 'functionCall' => 'PHPExcel_Calculation_Engineering::IMPRODUCT',
- 'argumentCount' => '1+'
- ),
- 'IMREAL' => array('category' => PHPExcel_Calculation_Function::CATEGORY_ENGINEERING,
- 'functionCall' => 'PHPExcel_Calculation_Engineering::IMREAL',
- 'argumentCount' => '1'
- ),
- 'IMSIN' => array('category' => PHPExcel_Calculation_Function::CATEGORY_ENGINEERING,
- 'functionCall' => 'PHPExcel_Calculation_Engineering::IMSIN',
- 'argumentCount' => '1'
- ),
- 'IMSQRT' => array('category' => PHPExcel_Calculation_Function::CATEGORY_ENGINEERING,
- 'functionCall' => 'PHPExcel_Calculation_Engineering::IMSQRT',
- 'argumentCount' => '1'
- ),
- 'IMSUB' => array('category' => PHPExcel_Calculation_Function::CATEGORY_ENGINEERING,
- 'functionCall' => 'PHPExcel_Calculation_Engineering::IMSUB',
- 'argumentCount' => '2'
- ),
- 'IMSUM' => array('category' => PHPExcel_Calculation_Function::CATEGORY_ENGINEERING,
- 'functionCall' => 'PHPExcel_Calculation_Engineering::IMSUM',
- 'argumentCount' => '1+'
- ),
- 'INDEX' => array('category' => PHPExcel_Calculation_Function::CATEGORY_LOOKUP_AND_REFERENCE,
- 'functionCall' => 'PHPExcel_Calculation_LookupRef::INDEX',
- 'argumentCount' => '1-4'
- ),
- 'INDIRECT' => array('category' => PHPExcel_Calculation_Function::CATEGORY_LOOKUP_AND_REFERENCE,
- 'functionCall' => 'PHPExcel_Calculation_LookupRef::INDIRECT',
- 'argumentCount' => '1,2',
- 'passCellReference'=> true
- ),
- 'INFO' => array('category' => PHPExcel_Calculation_Function::CATEGORY_INFORMATION,
- 'functionCall' => 'PHPExcel_Calculation_Functions::DUMMY',
- 'argumentCount' => '1'
- ),
- 'INT' => array('category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG,
- 'functionCall' => 'PHPExcel_Calculation_MathTrig::INT',
- 'argumentCount' => '1'
- ),
- 'INTERCEPT' => array('category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,
- 'functionCall' => 'PHPExcel_Calculation_Statistical::INTERCEPT',
- 'argumentCount' => '2'
- ),
- 'INTRATE' => array('category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL,
- 'functionCall' => 'PHPExcel_Calculation_Financial::INTRATE',
- 'argumentCount' => '4,5'
- ),
- 'IPMT' => array('category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL,
- 'functionCall' => 'PHPExcel_Calculation_Financial::IPMT',
- 'argumentCount' => '4-6'
- ),
- 'IRR' => array('category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL,
- 'functionCall' => 'PHPExcel_Calculation_Financial::IRR',
- 'argumentCount' => '1,2'
- ),
- 'ISBLANK' => array('category' => PHPExcel_Calculation_Function::CATEGORY_INFORMATION,
- 'functionCall' => 'PHPExcel_Calculation_Functions::IS_BLANK',
- 'argumentCount' => '1'
- ),
- 'ISERR' => array('category' => PHPExcel_Calculation_Function::CATEGORY_INFORMATION,
- 'functionCall' => 'PHPExcel_Calculation_Functions::IS_ERR',
- 'argumentCount' => '1'
- ),
- 'ISERROR' => array('category' => PHPExcel_Calculation_Function::CATEGORY_INFORMATION,
- 'functionCall' => 'PHPExcel_Calculation_Functions::IS_ERROR',
- 'argumentCount' => '1'
- ),
- 'ISEVEN' => array('category' => PHPExcel_Calculation_Function::CATEGORY_INFORMATION,
- 'functionCall' => 'PHPExcel_Calculation_Functions::IS_EVEN',
- 'argumentCount' => '1'
- ),
- 'ISLOGICAL' => array('category' => PHPExcel_Calculation_Function::CATEGORY_INFORMATION,
- 'functionCall' => 'PHPExcel_Calculation_Functions::IS_LOGICAL',
- 'argumentCount' => '1'
- ),
- 'ISNA' => array('category' => PHPExcel_Calculation_Function::CATEGORY_INFORMATION,
- 'functionCall' => 'PHPExcel_Calculation_Functions::IS_NA',
- 'argumentCount' => '1'
- ),
- 'ISNONTEXT' => array('category' => PHPExcel_Calculation_Function::CATEGORY_INFORMATION,
- 'functionCall' => 'PHPExcel_Calculation_Functions::IS_NONTEXT',
- 'argumentCount' => '1'
- ),
- 'ISNUMBER' => array('category' => PHPExcel_Calculation_Function::CATEGORY_INFORMATION,
- 'functionCall' => 'PHPExcel_Calculation_Functions::IS_NUMBER',
- 'argumentCount' => '1'
- ),
- 'ISODD' => array('category' => PHPExcel_Calculation_Function::CATEGORY_INFORMATION,
- 'functionCall' => 'PHPExcel_Calculation_Functions::IS_ODD',
- 'argumentCount' => '1'
- ),
- 'ISPMT' => array('category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL,
- 'functionCall' => 'PHPExcel_Calculation_Financial::ISPMT',
- 'argumentCount' => '4'
- ),
- 'ISREF' => array('category' => PHPExcel_Calculation_Function::CATEGORY_INFORMATION,
- 'functionCall' => 'PHPExcel_Calculation_Functions::DUMMY',
- 'argumentCount' => '1'
- ),
- 'ISTEXT' => array('category' => PHPExcel_Calculation_Function::CATEGORY_INFORMATION,
- 'functionCall' => 'PHPExcel_Calculation_Functions::IS_TEXT',
- 'argumentCount' => '1'
- ),
- 'JIS' => array('category' => PHPExcel_Calculation_Function::CATEGORY_TEXT_AND_DATA,
- 'functionCall' => 'PHPExcel_Calculation_Functions::DUMMY',
- 'argumentCount' => '1'
- ),
- 'KURT' => array('category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,
- 'functionCall' => 'PHPExcel_Calculation_Statistical::KURT',
- 'argumentCount' => '1+'
- ),
- 'LARGE' => array('category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,
- 'functionCall' => 'PHPExcel_Calculation_Statistical::LARGE',
- 'argumentCount' => '2'
- ),
- 'LCM' => array('category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG,
- 'functionCall' => 'PHPExcel_Calculation_MathTrig::LCM',
- 'argumentCount' => '1+'
- ),
- 'LEFT' => array('category' => PHPExcel_Calculation_Function::CATEGORY_TEXT_AND_DATA,
- 'functionCall' => 'PHPExcel_Calculation_TextData::LEFT',
- 'argumentCount' => '1,2'
- ),
- 'LEFTB' => array('category' => PHPExcel_Calculation_Function::CATEGORY_TEXT_AND_DATA,
- 'functionCall' => 'PHPExcel_Calculation_TextData::LEFT',
- 'argumentCount' => '1,2'
- ),
- 'LEN' => array('category' => PHPExcel_Calculation_Function::CATEGORY_TEXT_AND_DATA,
- 'functionCall' => 'PHPExcel_Calculation_TextData::STRINGLENGTH',
- 'argumentCount' => '1'
- ),
- 'LENB' => array('category' => PHPExcel_Calculation_Function::CATEGORY_TEXT_AND_DATA,
- 'functionCall' => 'PHPExcel_Calculation_TextData::STRINGLENGTH',
- 'argumentCount' => '1'
- ),
- 'LINEST' => array('category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,
- 'functionCall' => 'PHPExcel_Calculation_Statistical::LINEST',
- 'argumentCount' => '1-4'
- ),
- 'LN' => array('category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG,
- 'functionCall' => 'log',
- 'argumentCount' => '1'
- ),
- 'LOG' => array('category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG,
- 'functionCall' => 'PHPExcel_Calculation_MathTrig::LOG_BASE',
- 'argumentCount' => '1,2'
- ),
- 'LOG10' => array('category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG,
- 'functionCall' => 'log10',
- 'argumentCount' => '1'
- ),
- 'LOGEST' => array('category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,
- 'functionCall' => 'PHPExcel_Calculation_Statistical::LOGEST',
- 'argumentCount' => '1-4'
- ),
- 'LOGINV' => array('category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,
- 'functionCall' => 'PHPExcel_Calculation_Statistical::LOGINV',
- 'argumentCount' => '3'
- ),
- 'LOGNORMDIST' => array('category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,
- 'functionCall' => 'PHPExcel_Calculation_Statistical::LOGNORMDIST',
- 'argumentCount' => '3'
- ),
- 'LOOKUP' => array('category' => PHPExcel_Calculation_Function::CATEGORY_LOOKUP_AND_REFERENCE,
- 'functionCall' => 'PHPExcel_Calculation_LookupRef::LOOKUP',
- 'argumentCount' => '2,3'
- ),
- 'LOWER' => array('category' => PHPExcel_Calculation_Function::CATEGORY_TEXT_AND_DATA,
- 'functionCall' => 'PHPExcel_Calculation_TextData::LOWERCASE',
- 'argumentCount' => '1'
- ),
- 'MATCH' => array('category' => PHPExcel_Calculation_Function::CATEGORY_LOOKUP_AND_REFERENCE,
- 'functionCall' => 'PHPExcel_Calculation_LookupRef::MATCH',
- 'argumentCount' => '2,3'
- ),
- 'MAX' => array('category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,
- 'functionCall' => 'PHPExcel_Calculation_Statistical::MAX',
- 'argumentCount' => '1+'
- ),
- 'MAXA' => array('category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,
- 'functionCall' => 'PHPExcel_Calculation_Statistical::MAXA',
- 'argumentCount' => '1+'
- ),
- 'MAXIF' => array('category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,
- 'functionCall' => 'PHPExcel_Calculation_Statistical::MAXIF',
- 'argumentCount' => '2+'
- ),
- 'MDETERM' => array('category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG,
- 'functionCall' => 'PHPExcel_Calculation_MathTrig::MDETERM',
- 'argumentCount' => '1'
- ),
- 'MDURATION' => array('category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL,
- 'functionCall' => 'PHPExcel_Calculation_Functions::DUMMY',
- 'argumentCount' => '5,6'
- ),
- 'MEDIAN' => array('category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,
- 'functionCall' => 'PHPExcel_Calculation_Statistical::MEDIAN',
- 'argumentCount' => '1+'
- ),
- 'MEDIANIF' => array('category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,
- 'functionCall' => 'PHPExcel_Calculation_Functions::DUMMY',
- 'argumentCount' => '2+'
- ),
- 'MID' => array('category' => PHPExcel_Calculation_Function::CATEGORY_TEXT_AND_DATA,
- 'functionCall' => 'PHPExcel_Calculation_TextData::MID',
- 'argumentCount' => '3'
- ),
- 'MIDB' => array('category' => PHPExcel_Calculation_Function::CATEGORY_TEXT_AND_DATA,
- 'functionCall' => 'PHPExcel_Calculation_TextData::MID',
- 'argumentCount' => '3'
- ),
- 'MIN' => array('category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,
- 'functionCall' => 'PHPExcel_Calculation_Statistical::MIN',
- 'argumentCount' => '1+'
- ),
- 'MINA' => array('category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,
- 'functionCall' => 'PHPExcel_Calculation_Statistical::MINA',
- 'argumentCount' => '1+'
- ),
- 'MINIF' => array('category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,
- 'functionCall' => 'PHPExcel_Calculation_Statistical::MINIF',
- 'argumentCount' => '2+'
- ),
- 'MINUTE' => array('category' => PHPExcel_Calculation_Function::CATEGORY_DATE_AND_TIME,
- 'functionCall' => 'PHPExcel_Calculation_DateTime::MINUTEOFHOUR',
- 'argumentCount' => '1'
- ),
- 'MINVERSE' => array('category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG,
- 'functionCall' => 'PHPExcel_Calculation_MathTrig::MINVERSE',
- 'argumentCount' => '1'
- ),
- 'MIRR' => array('category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL,
- 'functionCall' => 'PHPExcel_Calculation_Financial::MIRR',
- 'argumentCount' => '3'
- ),
- 'MMULT' => array('category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG,
- 'functionCall' => 'PHPExcel_Calculation_MathTrig::MMULT',
- 'argumentCount' => '2'
- ),
- 'MOD' => array('category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG,
- 'functionCall' => 'PHPExcel_Calculation_MathTrig::MOD',
- 'argumentCount' => '2'
- ),
- 'MODE' => array('category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,
- 'functionCall' => 'PHPExcel_Calculation_Statistical::MODE',
- 'argumentCount' => '1+'
- ),
- 'MONTH' => array('category' => PHPExcel_Calculation_Function::CATEGORY_DATE_AND_TIME,
- 'functionCall' => 'PHPExcel_Calculation_DateTime::MONTHOFYEAR',
- 'argumentCount' => '1'
- ),
- 'MROUND' => array('category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG,
- 'functionCall' => 'PHPExcel_Calculation_MathTrig::MROUND',
- 'argumentCount' => '2'
- ),
- 'MULTINOMIAL' => array('category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG,
- 'functionCall' => 'PHPExcel_Calculation_MathTrig::MULTINOMIAL',
- 'argumentCount' => '1+'
- ),
- 'N' => array('category' => PHPExcel_Calculation_Function::CATEGORY_INFORMATION,
- 'functionCall' => 'PHPExcel_Calculation_Functions::N',
- 'argumentCount' => '1'
- ),
- 'NA' => array('category' => PHPExcel_Calculation_Function::CATEGORY_INFORMATION,
- 'functionCall' => 'PHPExcel_Calculation_Functions::NA',
- 'argumentCount' => '0'
- ),
- 'NEGBINOMDIST' => array('category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,
- 'functionCall' => 'PHPExcel_Calculation_Statistical::NEGBINOMDIST',
- 'argumentCount' => '3'
- ),
- 'NETWORKDAYS' => array('category' => PHPExcel_Calculation_Function::CATEGORY_DATE_AND_TIME,
- 'functionCall' => 'PHPExcel_Calculation_DateTime::NETWORKDAYS',
- 'argumentCount' => '2+'
- ),
- 'NOMINAL' => array('category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL,
- 'functionCall' => 'PHPExcel_Calculation_Financial::NOMINAL',
- 'argumentCount' => '2'
- ),
- 'NORMDIST' => array('category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,
- 'functionCall' => 'PHPExcel_Calculation_Statistical::NORMDIST',
- 'argumentCount' => '4'
- ),
- 'NORMINV' => array('category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,
- 'functionCall' => 'PHPExcel_Calculation_Statistical::NORMINV',
- 'argumentCount' => '3'
- ),
- 'NORMSDIST' => array('category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,
- 'functionCall' => 'PHPExcel_Calculation_Statistical::NORMSDIST',
- 'argumentCount' => '1'
- ),
- 'NORMSINV' => array('category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,
- 'functionCall' => 'PHPExcel_Calculation_Statistical::NORMSINV',
- 'argumentCount' => '1'
- ),
- 'NOT' => array('category' => PHPExcel_Calculation_Function::CATEGORY_LOGICAL,
- 'functionCall' => 'PHPExcel_Calculation_Logical::NOT',
- 'argumentCount' => '1'
- ),
- 'NOW' => array('category' => PHPExcel_Calculation_Function::CATEGORY_DATE_AND_TIME,
- 'functionCall' => 'PHPExcel_Calculation_DateTime::DATETIMENOW',
- 'argumentCount' => '0'
- ),
- 'NPER' => array('category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL,
- 'functionCall' => 'PHPExcel_Calculation_Financial::NPER',
- 'argumentCount' => '3-5'
- ),
- 'NPV' => array('category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL,
- 'functionCall' => 'PHPExcel_Calculation_Financial::NPV',
- 'argumentCount' => '2+'
- ),
- 'OCT2BIN' => array('category' => PHPExcel_Calculation_Function::CATEGORY_ENGINEERING,
- 'functionCall' => 'PHPExcel_Calculation_Engineering::OCTTOBIN',
- 'argumentCount' => '1,2'
- ),
- 'OCT2DEC' => array('category' => PHPExcel_Calculation_Function::CATEGORY_ENGINEERING,
- 'functionCall' => 'PHPExcel_Calculation_Engineering::OCTTODEC',
- 'argumentCount' => '1'
- ),
- 'OCT2HEX' => array('category' => PHPExcel_Calculation_Function::CATEGORY_ENGINEERING,
- 'functionCall' => 'PHPExcel_Calculation_Engineering::OCTTOHEX',
- 'argumentCount' => '1,2'
- ),
- 'ODD' => array('category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG,
- 'functionCall' => 'PHPExcel_Calculation_MathTrig::ODD',
- 'argumentCount' => '1'
- ),
- 'ODDFPRICE' => array('category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL,
- 'functionCall' => 'PHPExcel_Calculation_Functions::DUMMY',
- 'argumentCount' => '8,9'
- ),
- 'ODDFYIELD' => array('category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL,
- 'functionCall' => 'PHPExcel_Calculation_Functions::DUMMY',
- 'argumentCount' => '8,9'
- ),
- 'ODDLPRICE' => array('category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL,
- 'functionCall' => 'PHPExcel_Calculation_Functions::DUMMY',
- 'argumentCount' => '7,8'
- ),
- 'ODDLYIELD' => array('category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL,
- 'functionCall' => 'PHPExcel_Calculation_Functions::DUMMY',
- 'argumentCount' => '7,8'
- ),
- 'OFFSET' => array('category' => PHPExcel_Calculation_Function::CATEGORY_LOOKUP_AND_REFERENCE,
- 'functionCall' => 'PHPExcel_Calculation_LookupRef::OFFSET',
- 'argumentCount' => '3,5',
- 'passCellReference'=> true,
- 'passByReference' => array(true)
- ),
- 'OR' => array('category' => PHPExcel_Calculation_Function::CATEGORY_LOGICAL,
- 'functionCall' => 'PHPExcel_Calculation_Logical::LOGICAL_OR',
- 'argumentCount' => '1+'
- ),
- 'PEARSON' => array('category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,
- 'functionCall' => 'PHPExcel_Calculation_Statistical::CORREL',
- 'argumentCount' => '2'
- ),
- 'PERCENTILE' => array('category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,
- 'functionCall' => 'PHPExcel_Calculation_Statistical::PERCENTILE',
- 'argumentCount' => '2'
- ),
- 'PERCENTRANK' => array('category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,
- 'functionCall' => 'PHPExcel_Calculation_Statistical::PERCENTRANK',
- 'argumentCount' => '2,3'
- ),
- 'PERMUT' => array('category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,
- 'functionCall' => 'PHPExcel_Calculation_Statistical::PERMUT',
- 'argumentCount' => '2'
- ),
- 'PHONETIC' => array('category' => PHPExcel_Calculation_Function::CATEGORY_TEXT_AND_DATA,
- 'functionCall' => 'PHPExcel_Calculation_Functions::DUMMY',
- 'argumentCount' => '1'
- ),
- 'PI' => array('category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG,
- 'functionCall' => 'pi',
- 'argumentCount' => '0'
- ),
- 'PMT' => array('category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL,
- 'functionCall' => 'PHPExcel_Calculation_Financial::PMT',
- 'argumentCount' => '3-5'
- ),
- 'POISSON' => array('category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,
- 'functionCall' => 'PHPExcel_Calculation_Statistical::POISSON',
- 'argumentCount' => '3'
- ),
- 'POWER' => array('category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG,
- 'functionCall' => 'PHPExcel_Calculation_MathTrig::POWER',
- 'argumentCount' => '2'
- ),
- 'PPMT' => array('category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL,
- 'functionCall' => 'PHPExcel_Calculation_Financial::PPMT',
- 'argumentCount' => '4-6'
- ),
- 'PRICE' => array('category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL,
- 'functionCall' => 'PHPExcel_Calculation_Financial::PRICE',
- 'argumentCount' => '6,7'
- ),
- 'PRICEDISC' => array('category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL,
- 'functionCall' => 'PHPExcel_Calculation_Financial::PRICEDISC',
- 'argumentCount' => '4,5'
- ),
- 'PRICEMAT' => array('category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL,
- 'functionCall' => 'PHPExcel_Calculation_Financial::PRICEMAT',
- 'argumentCount' => '5,6'
- ),
- 'PROB' => array('category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,
- 'functionCall' => 'PHPExcel_Calculation_Functions::DUMMY',
- 'argumentCount' => '3,4'
- ),
- 'PRODUCT' => array('category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG,
- 'functionCall' => 'PHPExcel_Calculation_MathTrig::PRODUCT',
- 'argumentCount' => '1+'
- ),
- 'PROPER' => array('category' => PHPExcel_Calculation_Function::CATEGORY_TEXT_AND_DATA,
- 'functionCall' => 'PHPExcel_Calculation_TextData::PROPERCASE',
- 'argumentCount' => '1'
- ),
- 'PV' => array('category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL,
- 'functionCall' => 'PHPExcel_Calculation_Financial::PV',
- 'argumentCount' => '3-5'
- ),
- 'QUARTILE' => array('category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,
- 'functionCall' => 'PHPExcel_Calculation_Statistical::QUARTILE',
- 'argumentCount' => '2'
- ),
- 'QUOTIENT' => array('category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG,
- 'functionCall' => 'PHPExcel_Calculation_MathTrig::QUOTIENT',
- 'argumentCount' => '2'
- ),
- 'RADIANS' => array('category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG,
- 'functionCall' => 'deg2rad',
- 'argumentCount' => '1'
- ),
- 'RAND' => array('category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG,
- 'functionCall' => 'PHPExcel_Calculation_MathTrig::RAND',
- 'argumentCount' => '0'
- ),
- 'RANDBETWEEN' => array('category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG,
- 'functionCall' => 'PHPExcel_Calculation_MathTrig::RAND',
- 'argumentCount' => '2'
- ),
- 'RANK' => array('category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,
- 'functionCall' => 'PHPExcel_Calculation_Statistical::RANK',
- 'argumentCount' => '2,3'
- ),
- 'RATE' => array('category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL,
- 'functionCall' => 'PHPExcel_Calculation_Financial::RATE',
- 'argumentCount' => '3-6'
- ),
- 'RECEIVED' => array('category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL,
- 'functionCall' => 'PHPExcel_Calculation_Financial::RECEIVED',
- 'argumentCount' => '4-5'
- ),
- 'REPLACE' => array('category' => PHPExcel_Calculation_Function::CATEGORY_TEXT_AND_DATA,
- 'functionCall' => 'PHPExcel_Calculation_TextData::REPLACE',
- 'argumentCount' => '4'
- ),
- 'REPLACEB' => array('category' => PHPExcel_Calculation_Function::CATEGORY_TEXT_AND_DATA,
- 'functionCall' => 'PHPExcel_Calculation_TextData::REPLACE',
- 'argumentCount' => '4'
- ),
- 'REPT' => array('category' => PHPExcel_Calculation_Function::CATEGORY_TEXT_AND_DATA,
- 'functionCall' => 'str_repeat',
- 'argumentCount' => '2'
- ),
- 'RIGHT' => array('category' => PHPExcel_Calculation_Function::CATEGORY_TEXT_AND_DATA,
- 'functionCall' => 'PHPExcel_Calculation_TextData::RIGHT',
- 'argumentCount' => '1,2'
- ),
- 'RIGHTB' => array('category' => PHPExcel_Calculation_Function::CATEGORY_TEXT_AND_DATA,
- 'functionCall' => 'PHPExcel_Calculation_TextData::RIGHT',
- 'argumentCount' => '1,2'
- ),
- 'ROMAN' => array('category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG,
- 'functionCall' => 'PHPExcel_Calculation_MathTrig::ROMAN',
- 'argumentCount' => '1,2'
- ),
- 'ROUND' => array('category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG,
- 'functionCall' => 'round',
- 'argumentCount' => '2'
- ),
- 'ROUNDDOWN' => array('category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG,
- 'functionCall' => 'PHPExcel_Calculation_MathTrig::ROUNDDOWN',
- 'argumentCount' => '2'
- ),
- 'ROUNDUP' => array('category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG,
- 'functionCall' => 'PHPExcel_Calculation_MathTrig::ROUNDUP',
- 'argumentCount' => '2'
- ),
- 'ROW' => array('category' => PHPExcel_Calculation_Function::CATEGORY_LOOKUP_AND_REFERENCE,
- 'functionCall' => 'PHPExcel_Calculation_LookupRef::ROW',
- 'argumentCount' => '-1',
- 'passByReference' => array(true)
- ),
- 'ROWS' => array('category' => PHPExcel_Calculation_Function::CATEGORY_LOOKUP_AND_REFERENCE,
- 'functionCall' => 'PHPExcel_Calculation_LookupRef::ROWS',
- 'argumentCount' => '1'
- ),
- 'RSQ' => array('category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,
- 'functionCall' => 'PHPExcel_Calculation_Statistical::RSQ',
- 'argumentCount' => '2'
- ),
- 'RTD' => array('category' => PHPExcel_Calculation_Function::CATEGORY_LOOKUP_AND_REFERENCE,
- 'functionCall' => 'PHPExcel_Calculation_Functions::DUMMY',
- 'argumentCount' => '1+'
- ),
- 'SEARCH' => array('category' => PHPExcel_Calculation_Function::CATEGORY_TEXT_AND_DATA,
- 'functionCall' => 'PHPExcel_Calculation_TextData::SEARCHINSENSITIVE',
- 'argumentCount' => '2,3'
- ),
- 'SEARCHB' => array('category' => PHPExcel_Calculation_Function::CATEGORY_TEXT_AND_DATA,
- 'functionCall' => 'PHPExcel_Calculation_TextData::SEARCHINSENSITIVE',
- 'argumentCount' => '2,3'
- ),
- 'SECOND' => array('category' => PHPExcel_Calculation_Function::CATEGORY_DATE_AND_TIME,
- 'functionCall' => 'PHPExcel_Calculation_DateTime::SECONDOFMINUTE',
- 'argumentCount' => '1'
- ),
- 'SERIESSUM' => array('category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG,
- 'functionCall' => 'PHPExcel_Calculation_MathTrig::SERIESSUM',
- 'argumentCount' => '4'
- ),
- 'SIGN' => array('category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG,
- 'functionCall' => 'PHPExcel_Calculation_MathTrig::SIGN',
- 'argumentCount' => '1'
- ),
- 'SIN' => array('category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG,
- 'functionCall' => 'sin',
- 'argumentCount' => '1'
- ),
- 'SINH' => array('category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG,
- 'functionCall' => 'sinh',
- 'argumentCount' => '1'
- ),
- 'SKEW' => array('category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,
- 'functionCall' => 'PHPExcel_Calculation_Statistical::SKEW',
- 'argumentCount' => '1+'
- ),
- 'SLN' => array('category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL,
- 'functionCall' => 'PHPExcel_Calculation_Financial::SLN',
- 'argumentCount' => '3'
- ),
- 'SLOPE' => array('category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,
- 'functionCall' => 'PHPExcel_Calculation_Statistical::SLOPE',
- 'argumentCount' => '2'
- ),
- 'SMALL' => array('category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,
- 'functionCall' => 'PHPExcel_Calculation_Statistical::SMALL',
- 'argumentCount' => '2'
- ),
- 'SQRT' => array('category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG,
- 'functionCall' => 'sqrt',
- 'argumentCount' => '1'
- ),
- 'SQRTPI' => array('category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG,
- 'functionCall' => 'PHPExcel_Calculation_MathTrig::SQRTPI',
- 'argumentCount' => '1'
- ),
- 'STANDARDIZE' => array('category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,
- 'functionCall' => 'PHPExcel_Calculation_Statistical::STANDARDIZE',
- 'argumentCount' => '3'
- ),
- 'STDEV' => array('category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,
- 'functionCall' => 'PHPExcel_Calculation_Statistical::STDEV',
- 'argumentCount' => '1+'
- ),
- 'STDEVA' => array('category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,
- 'functionCall' => 'PHPExcel_Calculation_Statistical::STDEVA',
- 'argumentCount' => '1+'
- ),
- 'STDEVP' => array('category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,
- 'functionCall' => 'PHPExcel_Calculation_Statistical::STDEVP',
- 'argumentCount' => '1+'
- ),
- 'STDEVPA' => array('category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,
- 'functionCall' => 'PHPExcel_Calculation_Statistical::STDEVPA',
- 'argumentCount' => '1+'
- ),
- 'STEYX' => array('category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,
- 'functionCall' => 'PHPExcel_Calculation_Statistical::STEYX',
- 'argumentCount' => '2'
- ),
- 'SUBSTITUTE' => array('category' => PHPExcel_Calculation_Function::CATEGORY_TEXT_AND_DATA,
- 'functionCall' => 'PHPExcel_Calculation_TextData::SUBSTITUTE',
- 'argumentCount' => '3,4'
- ),
- 'SUBTOTAL' => array('category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG,
- 'functionCall' => 'PHPExcel_Calculation_MathTrig::SUBTOTAL',
- 'argumentCount' => '2+'
- ),
- 'SUM' => array('category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG,
- 'functionCall' => 'PHPExcel_Calculation_MathTrig::SUM',
- 'argumentCount' => '1+'
- ),
- 'SUMIF' => array('category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG,
- 'functionCall' => 'PHPExcel_Calculation_MathTrig::SUMIF',
- 'argumentCount' => '2,3'
- ),
- 'SUMIFS' => array('category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG,
- 'functionCall' => 'PHPExcel_Calculation_Functions::DUMMY',
- 'argumentCount' => '?'
- ),
- 'SUMPRODUCT' => array('category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG,
- 'functionCall' => 'PHPExcel_Calculation_MathTrig::SUMPRODUCT',
- 'argumentCount' => '1+'
- ),
- 'SUMSQ' => array('category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG,
- 'functionCall' => 'PHPExcel_Calculation_MathTrig::SUMSQ',
- 'argumentCount' => '1+'
- ),
- 'SUMX2MY2' => array('category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG,
- 'functionCall' => 'PHPExcel_Calculation_MathTrig::SUMX2MY2',
- 'argumentCount' => '2'
- ),
- 'SUMX2PY2' => array('category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG,
- 'functionCall' => 'PHPExcel_Calculation_MathTrig::SUMX2PY2',
- 'argumentCount' => '2'
- ),
- 'SUMXMY2' => array('category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG,
- 'functionCall' => 'PHPExcel_Calculation_MathTrig::SUMXMY2',
- 'argumentCount' => '2'
- ),
- 'SYD' => array('category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL,
- 'functionCall' => 'PHPExcel_Calculation_Financial::SYD',
- 'argumentCount' => '4'
- ),
- 'T' => array('category' => PHPExcel_Calculation_Function::CATEGORY_TEXT_AND_DATA,
- 'functionCall' => 'PHPExcel_Calculation_TextData::RETURNSTRING',
- 'argumentCount' => '1'
- ),
- 'TAN' => array('category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG,
- 'functionCall' => 'tan',
- 'argumentCount' => '1'
- ),
- 'TANH' => array('category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG,
- 'functionCall' => 'tanh',
- 'argumentCount' => '1'
- ),
- 'TBILLEQ' => array('category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL,
- 'functionCall' => 'PHPExcel_Calculation_Financial::TBILLEQ',
- 'argumentCount' => '3'
- ),
- 'TBILLPRICE' => array('category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL,
- 'functionCall' => 'PHPExcel_Calculation_Financial::TBILLPRICE',
- 'argumentCount' => '3'
- ),
- 'TBILLYIELD' => array('category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL,
- 'functionCall' => 'PHPExcel_Calculation_Financial::TBILLYIELD',
- 'argumentCount' => '3'
- ),
- 'TDIST' => array('category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,
- 'functionCall' => 'PHPExcel_Calculation_Statistical::TDIST',
- 'argumentCount' => '3'
- ),
- 'TEXT' => array('category' => PHPExcel_Calculation_Function::CATEGORY_TEXT_AND_DATA,
- 'functionCall' => 'PHPExcel_Calculation_TextData::TEXTFORMAT',
- 'argumentCount' => '2'
- ),
- 'TIME' => array('category' => PHPExcel_Calculation_Function::CATEGORY_DATE_AND_TIME,
- 'functionCall' => 'PHPExcel_Calculation_DateTime::TIME',
- 'argumentCount' => '3'
- ),
- 'TIMEVALUE' => array('category' => PHPExcel_Calculation_Function::CATEGORY_DATE_AND_TIME,
- 'functionCall' => 'PHPExcel_Calculation_DateTime::TIMEVALUE',
- 'argumentCount' => '1'
- ),
- 'TINV' => array('category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,
- 'functionCall' => 'PHPExcel_Calculation_Statistical::TINV',
- 'argumentCount' => '2'
- ),
- 'TODAY' => array('category' => PHPExcel_Calculation_Function::CATEGORY_DATE_AND_TIME,
- 'functionCall' => 'PHPExcel_Calculation_DateTime::DATENOW',
- 'argumentCount' => '0'
- ),
- 'TRANSPOSE' => array('category' => PHPExcel_Calculation_Function::CATEGORY_LOOKUP_AND_REFERENCE,
- 'functionCall' => 'PHPExcel_Calculation_LookupRef::TRANSPOSE',
- 'argumentCount' => '1'
- ),
- 'TREND' => array('category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,
- 'functionCall' => 'PHPExcel_Calculation_Statistical::TREND',
- 'argumentCount' => '1-4'
- ),
- 'TRIM' => array('category' => PHPExcel_Calculation_Function::CATEGORY_TEXT_AND_DATA,
- 'functionCall' => 'PHPExcel_Calculation_TextData::TRIMSPACES',
- 'argumentCount' => '1'
- ),
- 'TRIMMEAN' => array('category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,
- 'functionCall' => 'PHPExcel_Calculation_Statistical::TRIMMEAN',
- 'argumentCount' => '2'
- ),
- 'TRUE' => array('category' => PHPExcel_Calculation_Function::CATEGORY_LOGICAL,
- 'functionCall' => 'PHPExcel_Calculation_Logical::TRUE',
- 'argumentCount' => '0'
- ),
- 'TRUNC' => array('category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG,
- 'functionCall' => 'PHPExcel_Calculation_MathTrig::TRUNC',
- 'argumentCount' => '1,2'
- ),
- 'TTEST' => array('category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,
- 'functionCall' => 'PHPExcel_Calculation_Functions::DUMMY',
- 'argumentCount' => '4'
- ),
- 'TYPE' => array('category' => PHPExcel_Calculation_Function::CATEGORY_INFORMATION,
- 'functionCall' => 'PHPExcel_Calculation_Functions::TYPE',
- 'argumentCount' => '1'
- ),
- 'UPPER' => array('category' => PHPExcel_Calculation_Function::CATEGORY_TEXT_AND_DATA,
- 'functionCall' => 'PHPExcel_Calculation_TextData::UPPERCASE',
- 'argumentCount' => '1'
- ),
- 'USDOLLAR' => array('category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL,
- 'functionCall' => 'PHPExcel_Calculation_Functions::DUMMY',
- 'argumentCount' => '2'
- ),
- 'VALUE' => array('category' => PHPExcel_Calculation_Function::CATEGORY_TEXT_AND_DATA,
- 'functionCall' => 'PHPExcel_Calculation_Functions::DUMMY',
- 'argumentCount' => '1'
- ),
- 'VAR' => array('category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,
- 'functionCall' => 'PHPExcel_Calculation_Statistical::VARFunc',
- 'argumentCount' => '1+'
- ),
- 'VARA' => array('category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,
- 'functionCall' => 'PHPExcel_Calculation_Statistical::VARA',
- 'argumentCount' => '1+'
- ),
- 'VARP' => array('category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,
- 'functionCall' => 'PHPExcel_Calculation_Statistical::VARP',
- 'argumentCount' => '1+'
- ),
- 'VARPA' => array('category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,
- 'functionCall' => 'PHPExcel_Calculation_Statistical::VARPA',
- 'argumentCount' => '1+'
- ),
- 'VDB' => array('category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL,
- 'functionCall' => 'PHPExcel_Calculation_Functions::DUMMY',
- 'argumentCount' => '5-7'
- ),
- 'VERSION' => array('category' => PHPExcel_Calculation_Function::CATEGORY_INFORMATION,
- 'functionCall' => 'PHPExcel_Calculation_Functions::VERSION',
- 'argumentCount' => '0'
- ),
- 'VLOOKUP' => array('category' => PHPExcel_Calculation_Function::CATEGORY_LOOKUP_AND_REFERENCE,
- 'functionCall' => 'PHPExcel_Calculation_LookupRef::VLOOKUP',
- 'argumentCount' => '3,4'
- ),
- 'WEEKDAY' => array('category' => PHPExcel_Calculation_Function::CATEGORY_DATE_AND_TIME,
- 'functionCall' => 'PHPExcel_Calculation_DateTime::DAYOFWEEK',
- 'argumentCount' => '1,2'
- ),
- 'WEEKNUM' => array('category' => PHPExcel_Calculation_Function::CATEGORY_DATE_AND_TIME,
- 'functionCall' => 'PHPExcel_Calculation_DateTime::WEEKOFYEAR',
- 'argumentCount' => '1,2'
- ),
- 'WEIBULL' => array('category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,
- 'functionCall' => 'PHPExcel_Calculation_Statistical::WEIBULL',
- 'argumentCount' => '4'
- ),
- 'WORKDAY' => array('category' => PHPExcel_Calculation_Function::CATEGORY_DATE_AND_TIME,
- 'functionCall' => 'PHPExcel_Calculation_DateTime::WORKDAY',
- 'argumentCount' => '2+'
- ),
- 'XIRR' => array('category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL,
- 'functionCall' => 'PHPExcel_Calculation_Financial::XIRR',
- 'argumentCount' => '2,3'
- ),
- 'XNPV' => array('category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL,
- 'functionCall' => 'PHPExcel_Calculation_Financial::XNPV',
- 'argumentCount' => '3'
- ),
- 'YEAR' => array('category' => PHPExcel_Calculation_Function::CATEGORY_DATE_AND_TIME,
- 'functionCall' => 'PHPExcel_Calculation_DateTime::YEAR',
- 'argumentCount' => '1'
- ),
- 'YEARFRAC' => array('category' => PHPExcel_Calculation_Function::CATEGORY_DATE_AND_TIME,
- 'functionCall' => 'PHPExcel_Calculation_DateTime::YEARFRAC',
- 'argumentCount' => '2,3'
- ),
- 'YIELD' => array('category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL,
- 'functionCall' => 'PHPExcel_Calculation_Functions::DUMMY',
- 'argumentCount' => '6,7'
- ),
- 'YIELDDISC' => array('category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL,
- 'functionCall' => 'PHPExcel_Calculation_Financial::YIELDDISC',
- 'argumentCount' => '4,5'
- ),
- 'YIELDMAT' => array('category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL,
- 'functionCall' => 'PHPExcel_Calculation_Financial::YIELDMAT',
- 'argumentCount' => '5,6'
- ),
- 'ZTEST' => array('category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,
- 'functionCall' => 'PHPExcel_Calculation_Statistical::ZTEST',
- 'argumentCount' => '2-3'
- )
- );
-
-
- // Internal functions used for special control purposes
- private static $_controlFunctions = array(
- 'MKMATRIX' => array('argumentCount' => '*',
- 'functionCall' => 'self::_mkMatrix'
- )
- );
-
-
-
-
- private function __construct() {
- $localeFileDirectory = PHPEXCEL_ROOT.'PHPExcel/locale/';
- foreach (glob($localeFileDirectory.'/*',GLOB_ONLYDIR) as $filename) {
- $filename = substr($filename,strlen($localeFileDirectory)+1);
- if ($filename != 'en') {
- self::$_validLocaleLanguages[] = $filename;
- }
- }
-
- $setPrecision = (PHP_INT_SIZE == 4) ? 12 : 16;
- $this->_savedPrecision = ini_get('precision');
- if ($this->_savedPrecision < $setPrecision) {
- ini_set('precision',$setPrecision);
- }
- } // function __construct()
-
-
- public function __destruct() {
- if ($this->_savedPrecision != ini_get('precision')) {
- ini_set('precision',$this->_savedPrecision);
- }
- }
-
- /**
- * Get an instance of this class
- *
- * @access public
- * @return PHPExcel_Calculation
- */
- public static function getInstance() {
- if (!isset(self::$_instance) || (self::$_instance === NULL)) {
- self::$_instance = new PHPExcel_Calculation();
- }
-
- return self::$_instance;
- } // function getInstance()
-
-
- /**
- * Flush the calculation cache for any existing instance of this class
- * but only if a PHPExcel_Calculation instance exists
- *
- * @access public
- * @return null
- */
- public static function flushInstance() {
- if (isset(self::$_instance) && (self::$_instance !== NULL)) {
- self::$_instance->clearCalculationCache();
- }
- } // function flushInstance()
-
-
- /**
- * __clone implementation. Cloning should not be allowed in a Singleton!
- *
- * @access public
- * @throws Exception
- */
- public final function __clone() {
- throw new Exception ('Cloning a Singleton is not allowed!');
- } // function __clone()
-
-
- /**
- * Return the locale-specific translation of TRUE
- *
- * @access public
- * @return string locale-specific translation of TRUE
- */
- public static function getTRUE() {
- return self::$_localeBoolean['TRUE'];
- }
-
- /**
- * Return the locale-specific translation of FALSE
- *
- * @access public
- * @return string locale-specific translation of FALSE
- */
- public static function getFALSE() {
- return self::$_localeBoolean['FALSE'];
- }
-
- /**
- * Set the Array Return Type (Array or Value of first element in the array)
- *
- * @access public
- * @param string $returnType Array return type
- * @return boolean Success or failure
- */
- public static function setArrayReturnType($returnType) {
- if (($returnType == self::RETURN_ARRAY_AS_VALUE) ||
- ($returnType == self::RETURN_ARRAY_AS_ERROR) ||
- ($returnType == self::RETURN_ARRAY_AS_ARRAY)) {
- self::$returnArrayAsType = $returnType;
- return true;
- }
- return false;
- } // function setExcelCalendar()
-
-
- /**
- * Return the Array Return Type (Array or Value of first element in the array)
- *
- * @access public
- * @return string $returnType Array return type
- */
- public static function getArrayReturnType() {
- return self::$returnArrayAsType;
- } // function getExcelCalendar()
-
-
- /**
- * Is calculation caching enabled?
- *
- * @access public
- * @return boolean
- */
- public function getCalculationCacheEnabled() {
- return self::$_calculationCacheEnabled;
- } // function getCalculationCacheEnabled()
-
-
- /**
- * Enable/disable calculation cache
- *
- * @access public
- * @param boolean $pValue
- */
- public function setCalculationCacheEnabled($pValue = true) {
- self::$_calculationCacheEnabled = $pValue;
- $this->clearCalculationCache();
- } // function setCalculationCacheEnabled()
-
-
- /**
- * Enable calculation cache
- */
- public function enableCalculationCache() {
- $this->setCalculationCacheEnabled(true);
- } // function enableCalculationCache()
-
-
- /**
- * Disable calculation cache
- */
- public function disableCalculationCache() {
- $this->setCalculationCacheEnabled(false);
- } // function disableCalculationCache()
-
-
- /**
- * Clear calculation cache
- */
- public function clearCalculationCache() {
- self::$_calculationCache = array();
- } // function clearCalculationCache()
-
-
- /**
- * Get calculation cache expiration time
- *
- * @return float
- */
- public function getCalculationCacheExpirationTime() {
- return self::$_calculationCacheExpirationTime;
- } // getCalculationCacheExpirationTime()
-
-
- /**
- * Set calculation cache expiration time
- *
- * @param float $pValue
- */
- public function setCalculationCacheExpirationTime($pValue = 15) {
- self::$_calculationCacheExpirationTime = $pValue;
- } // function setCalculationCacheExpirationTime()
-
-
-
-
- /**
- * Get the currently defined locale code
- *
- * @return string
- */
- public function getLocale() {
- return self::$_localeLanguage;
- } // function getLocale()
-
-
- /**
- * Set the locale code
- *
- * @return boolean
- */
- public function setLocale($locale='en_us') {
- // Identify our locale and language
- $language = $locale = strtolower($locale);
- if (strpos($locale,'_') !== false) {
- list($language) = explode('_',$locale);
- }
-
- // Test whether we have any language data for this language (any locale)
- if (in_array($language,self::$_validLocaleLanguages)) {
- // initialise language/locale settings
- self::$_localeFunctions = array();
- self::$_localeArgumentSeparator = ',';
- self::$_localeBoolean = array('TRUE' => 'TRUE', 'FALSE' => 'FALSE', 'NULL' => 'NULL');
- // Default is English, if user isn't requesting english, then read the necessary data from the locale files
- if ($locale != 'en_us') {
- // Search for a file with a list of function names for locale
- $functionNamesFile = PHPEXCEL_ROOT . 'PHPExcel'.DIRECTORY_SEPARATOR.'locale'.DIRECTORY_SEPARATOR.str_replace('_',DIRECTORY_SEPARATOR,$locale).DIRECTORY_SEPARATOR.'functions';
- if (!file_exists($functionNamesFile)) {
- // If there isn't a locale specific function file, look for a language specific function file
- $functionNamesFile = PHPEXCEL_ROOT . 'PHPExcel'.DIRECTORY_SEPARATOR.'locale'.DIRECTORY_SEPARATOR.$language.DIRECTORY_SEPARATOR.'functions';
- if (!file_exists($functionNamesFile)) {
- return false;
- }
- }
- // Retrieve the list of locale or language specific function names
- $localeFunctions = file($functionNamesFile,FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
- foreach ($localeFunctions as $localeFunction) {
- list($localeFunction) = explode('##',$localeFunction); // Strip out comments
- if (strpos($localeFunction,'=') !== false) {
- list($fName,$lfName) = explode('=',$localeFunction);
- $fName = trim($fName);
- $lfName = trim($lfName);
- if ((isset(self::$_PHPExcelFunctions[$fName])) && ($lfName != '') && ($fName != $lfName)) {
- self::$_localeFunctions[$fName] = $lfName;
- }
- }
- }
- // Default the TRUE and FALSE constants to the locale names of the TRUE() and FALSE() functions
- if (isset(self::$_localeFunctions['TRUE'])) { self::$_localeBoolean['TRUE'] = self::$_localeFunctions['TRUE']; }
- if (isset(self::$_localeFunctions['FALSE'])) { self::$_localeBoolean['FALSE'] = self::$_localeFunctions['FALSE']; }
-
- $configFile = PHPEXCEL_ROOT . 'PHPExcel'.DIRECTORY_SEPARATOR.'locale'.DIRECTORY_SEPARATOR.str_replace('_',DIRECTORY_SEPARATOR,$locale).DIRECTORY_SEPARATOR.'config';
- if (!file_exists($configFile)) {
- $configFile = PHPEXCEL_ROOT . 'PHPExcel'.DIRECTORY_SEPARATOR.'locale'.DIRECTORY_SEPARATOR.$language.DIRECTORY_SEPARATOR.'config';
- }
- if (file_exists($configFile)) {
- $localeSettings = file($configFile,FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
- foreach ($localeSettings as $localeSetting) {
- list($localeSetting) = explode('##',$localeSetting); // Strip out comments
- if (strpos($localeSetting,'=') !== false) {
- list($settingName,$settingValue) = explode('=',$localeSetting);
- $settingName = strtoupper(trim($settingName));
- switch ($settingName) {
- case 'ARGUMENTSEPARATOR' :
- self::$_localeArgumentSeparator = trim($settingValue);
- break;
- }
- }
- }
- }
- }
-
- self::$functionReplaceFromExcel = self::$functionReplaceToExcel =
- self::$functionReplaceFromLocale = self::$functionReplaceToLocale = null;
- self::$_localeLanguage = $locale;
- return true;
- }
- return false;
- } // function setLocale()
-
-
-
- public static function _translateSeparator($fromSeparator,$toSeparator,$formula,&$inBraces) {
- $strlen = mb_strlen($formula);
- for ($i = 0; $i < $strlen; ++$i) {
- $chr = mb_substr($formula,$i,1);
- switch ($chr) {
- case '{' : $inBraces = true;
- break;
- case '}' : $inBraces = false;
- break;
- case $fromSeparator :
- if (!$inBraces) {
- $formula = mb_substr($formula,0,$i).$toSeparator.mb_substr($formula,$i+1);
- }
- }
- }
- return $formula;
- }
-
- private static function _translateFormula($from,$to,$formula,$fromSeparator,$toSeparator) {
- // Convert any Excel function names to the required language
- if (self::$_localeLanguage !== 'en_us') {
- $inBraces = false;
- // If there is the possibility of braces within a quoted string, then we don't treat those as matrix indicators
- if (strpos($formula,'"') !== false) {
- // So instead we skip replacing in any quoted strings by only replacing in every other array element after we've exploded
- // the formula
- $temp = explode('"',$formula);
- $i = false;
- foreach($temp as &$value) {
- // Only count/replace in alternating array entries
- if ($i = !$i) {
- $value = preg_replace($from,$to,$value);
- $value = self::_translateSeparator($fromSeparator,$toSeparator,$value,$inBraces);
- }
- }
- unset($value);
- // Then rebuild the formula string
- $formula = implode('"',$temp);
- } else {
- // If there's no quoted strings, then we do a simple count/replace
- $formula = preg_replace($from,$to,$formula);
- $formula = self::_translateSeparator($fromSeparator,$toSeparator,$formula,$inBraces);
- }
- }
-
- return $formula;
- }
-
- private static $functionReplaceFromExcel = null;
- private static $functionReplaceToLocale = null;
-
- public function _translateFormulaToLocale($formula) {
- if (self::$functionReplaceFromExcel === NULL) {
- self::$functionReplaceFromExcel = array();
- foreach(array_keys(self::$_localeFunctions) as $excelFunctionName) {
- self::$functionReplaceFromExcel[] = '/(@?[^\w\.])'.preg_quote($excelFunctionName).'([\s]*\()/Ui';
- }
- foreach(array_keys(self::$_localeBoolean) as $excelBoolean) {
- self::$functionReplaceFromExcel[] = '/(@?[^\w\.])'.preg_quote($excelBoolean).'([^\w\.])/Ui';
- }
-
- }
-
- if (self::$functionReplaceToLocale === NULL) {
- self::$functionReplaceToLocale = array();
- foreach(array_values(self::$_localeFunctions) as $localeFunctionName) {
- self::$functionReplaceToLocale[] = '$1'.trim($localeFunctionName).'$2';
- }
- foreach(array_values(self::$_localeBoolean) as $localeBoolean) {
- self::$functionReplaceToLocale[] = '$1'.trim($localeBoolean).'$2';
- }
- }
-
- return self::_translateFormula(self::$functionReplaceFromExcel,self::$functionReplaceToLocale,$formula,',',self::$_localeArgumentSeparator);
- } // function _translateFormulaToLocale()
-
-
- private static $functionReplaceFromLocale = null;
- private static $functionReplaceToExcel = null;
-
- public function _translateFormulaToEnglish($formula) {
- if (self::$functionReplaceFromLocale === NULL) {
- self::$functionReplaceFromLocale = array();
- foreach(array_values(self::$_localeFunctions) as $localeFunctionName) {
- self::$functionReplaceFromLocale[] = '/(@?[^\w\.])'.preg_quote($localeFunctionName).'([\s]*\()/Ui';
- }
- foreach(array_values(self::$_localeBoolean) as $excelBoolean) {
- self::$functionReplaceFromLocale[] = '/(@?[^\w\.])'.preg_quote($excelBoolean).'([^\w\.])/Ui';
- }
- }
-
- if (self::$functionReplaceToExcel === NULL) {
- self::$functionReplaceToExcel = array();
- foreach(array_keys(self::$_localeFunctions) as $excelFunctionName) {
- self::$functionReplaceToExcel[] = '$1'.trim($excelFunctionName).'$2';
- }
- foreach(array_keys(self::$_localeBoolean) as $excelBoolean) {
- self::$functionReplaceToExcel[] = '$1'.trim($excelBoolean).'$2';
- }
- }
-
- return self::_translateFormula(self::$functionReplaceFromLocale,self::$functionReplaceToExcel,$formula,self::$_localeArgumentSeparator,',');
- } // function _translateFormulaToEnglish()
-
-
- public static function _localeFunc($function) {
- if (self::$_localeLanguage !== 'en_us') {
- $functionName = trim($function,'(');
- if (isset(self::$_localeFunctions[$functionName])) {
- $brace = ($functionName != $function);
- $function = self::$_localeFunctions[$functionName];
- if ($brace) { $function .= '('; }
- }
- }
- return $function;
- }
-
-
-
-
- /**
- * Wrap string values in quotes
- *
- * @param mixed $value
- * @return mixed
- */
- public static function _wrapResult($value) {
- if (is_string($value)) {
- // Error values cannot be "wrapped"
- if (preg_match('/^'.self::CALCULATION_REGEXP_ERROR.'$/i', $value, $match)) {
- // Return Excel errors "as is"
- return $value;
- }
- // Return strings wrapped in quotes
- return '"'.$value.'"';
- // Convert numeric errors to NaN error
- } else if((is_float($value)) && ((is_nan($value)) || (is_infinite($value)))) {
- return PHPExcel_Calculation_Functions::NaN();
- }
-
- return $value;
- } // function _wrapResult()
-
-
- /**
- * Remove quotes used as a wrapper to identify string values
- *
- * @param mixed $value
- * @return mixed
- */
- public static function _unwrapResult($value) {
- if (is_string($value)) {
- if ((isset($value{0})) && ($value{0} == '"') && (substr($value,-1) == '"')) {
- return substr($value,1,-1);
- }
- // Convert numeric errors to NaN error
- } else if((is_float($value)) && ((is_nan($value)) || (is_infinite($value)))) {
- return PHPExcel_Calculation_Functions::NaN();
- }
- return $value;
- } // function _unwrapResult()
-
-
-
-
- /**
- * Calculate cell value (using formula from a cell ID)
- * Retained for backward compatibility
- *
- * @access public
- * @param PHPExcel_Cell $pCell Cell to calculate
- * @return mixed
- * @throws Exception
- */
- public function calculate(PHPExcel_Cell $pCell = null) {
- try {
- return $this->calculateCellValue($pCell);
- } catch (Exception $e) {
- throw(new Exception($e->getMessage()));
- }
- } // function calculate()
-
-
- /**
- * Calculate the value of a cell formula
- *
- * @access public
- * @param PHPExcel_Cell $pCell Cell to calculate
- * @param Boolean $resetLog Flag indicating whether the debug log should be reset or not
- * @return mixed
- * @throws Exception
- */
- public function calculateCellValue(PHPExcel_Cell $pCell = null, $resetLog = true) {
- if ($resetLog) {
- // Initialise the logging settings if requested
- $this->formulaError = null;
- $this->debugLog = $this->debugLogStack = array();
- $this->_cyclicFormulaCount = 1;
-
- $returnArrayAsType = self::$returnArrayAsType;
- self::$returnArrayAsType = self::RETURN_ARRAY_AS_ARRAY;
- }
-
- // Read the formula from the cell
- if ($pCell === NULL) {
- return NULL;
- }
-
- if ($resetLog) {
- self::$returnArrayAsType = $returnArrayAsType;
- }
- // Execute the calculation for the cell formula
- try {
- $result = self::_unwrapResult($this->_calculateFormulaValue($pCell->getValue(), $pCell->getCoordinate(), $pCell));
- } catch (Exception $e) {
- throw(new Exception($e->getMessage()));
- }
-
- if ((is_array($result)) && (self::$returnArrayAsType != self::RETURN_ARRAY_AS_ARRAY)) {
- $testResult = PHPExcel_Calculation_Functions::flattenArray($result);
- if (self::$returnArrayAsType == self::RETURN_ARRAY_AS_ERROR) {
- return PHPExcel_Calculation_Functions::VALUE();
- }
- // If there's only a single cell in the array, then we allow it
- if (count($testResult) != 1) {
- // If keys are numeric, then it's a matrix result rather than a cell range result, so we permit it
- $r = array_keys($result);
- $r = array_shift($r);
- if (!is_numeric($r)) { return PHPExcel_Calculation_Functions::VALUE(); }
- if (is_array($result[$r])) {
- $c = array_keys($result[$r]);
- $c = array_shift($c);
- if (!is_numeric($c)) {
- return PHPExcel_Calculation_Functions::VALUE();
- }
- }
- }
- $result = array_shift($testResult);
- }
-
- if ($result === NULL) {
- return 0;
- } elseif((is_float($result)) && ((is_nan($result)) || (is_infinite($result)))) {
- return PHPExcel_Calculation_Functions::NaN();
- }
- return $result;
- } // function calculateCellValue(
-
-
- /**
- * Validate and parse a formula string
- *
- * @param string $formula Formula to parse
- * @return array
- * @throws Exception
- */
- public function parseFormula($formula) {
- // Basic validation that this is indeed a formula
- // We return an empty array if not
- $formula = trim($formula);
- if ((!isset($formula{0})) || ($formula{0} != '=')) return array();
- $formula = ltrim(substr($formula,1));
- if (!isset($formula{0})) return array();
-
- // Parse the formula and return the token stack
- return $this->_parseFormula($formula);
- } // function parseFormula()
-
-
- /**
- * Calculate the value of a formula
- *
- * @param string $formula Formula to parse
- * @return mixed
- * @throws Exception
- */
- public function calculateFormula($formula, $cellID=null, PHPExcel_Cell $pCell = null) {
- // Initialise the logging settings
- $this->formulaError = null;
- $this->debugLog = $this->debugLogStack = array();
-
- // Disable calculation cacheing because it only applies to cell calculations, not straight formulae
- // But don't actually flush any cache
- $resetCache = $this->getCalculationCacheEnabled();
- self::$_calculationCacheEnabled = false;
- // Execute the calculation
- try {
- $result = self::_unwrapResult($this->_calculateFormulaValue($formula, $cellID, $pCell));
- } catch (Exception $e) {
- throw(new Exception($e->getMessage()));
- }
-
- // Reset calculation cacheing to its previous state
- self::$_calculationCacheEnabled = $resetCache;
-
- return $result;
- } // function calculateFormula()
-
-
- /**
- * Parse a cell formula and calculate its value
- *
- * @param string $formula The formula to parse and calculate
- * @param string $cellID The ID (e.g. A3) of the cell that we are calculating
- * @param PHPExcel_Cell $pCell Cell to calculate
- * @return mixed
- * @throws Exception
- */
- public function _calculateFormulaValue($formula, $cellID=null, PHPExcel_Cell $pCell = null) {
-// echo '<b>'.$cellID.'</b><br />';
- $cellValue = '';
-
- // Basic validation that this is indeed a formula
- // We simply return the "cell value" (formula) if not
- $formula = trim($formula);
- if ($formula{0} != '=') return self::_wrapResult($formula);
- $formula = ltrim(substr($formula,1));
- if (!isset($formula{0})) return self::_wrapResult($formula);
-
- $wsTitle = "\x00Wrk";
- if ($pCell !== NULL) {
- $pCellParent = $pCell->getParent();
- if ($pCellParent !== NULL) {
- $wsTitle = $pCellParent->getTitle();
- }
- }
- // Is calculation cacheing enabled?
- if ($cellID !== NULL) {
- if (self::$_calculationCacheEnabled) {
- // Is the value present in calculation cache?
-// echo 'Testing cache value<br />';
- if (isset(self::$_calculationCache[$wsTitle][$cellID])) {
-// echo 'Value is in cache<br />';
- $this->_writeDebug('Testing cache value for cell '.$cellID);
- // Is cache still valid?
- if ((microtime(true) - self::$_calculationCache[$wsTitle][$cellID]['time']) < self::$_calculationCacheExpirationTime) {
-// echo 'Cache time is still valid<br />';
- $this->_writeDebug('Retrieving value for '.$cellID.' from cache');
- // Return the cached result
- $returnValue = self::$_calculationCache[$wsTitle][$cellID]['data'];
-// echo 'Retrieving data value of '.$returnValue.' for '.$cellID.' from cache<br />';
- if (is_array($returnValue)) {
- $returnValue = PHPExcel_Calculation_Functions::flattenArray($returnValue);
- return array_shift($returnValue);
- }
- return $returnValue;
- } else {
-// echo 'Cache has expired<br />';
- $this->_writeDebug('Cache value for '.$cellID.' has expired');
- // Clear the cache if it's no longer valid
- unset(self::$_calculationCache[$wsTitle][$cellID]);
- }
- }
- }
- }
-
- if ((in_array($wsTitle.'!'.$cellID,$this->debugLogStack)) && ($wsTitle != "\x00Wrk")) {
- if ($this->cyclicFormulaCount <= 0) {
- return $this->_raiseFormulaError('Cyclic Reference in Formula');
- } elseif (($this->_cyclicFormulaCount >= $this->cyclicFormulaCount) &&
- ($this->_cyclicFormulaCell == $wsTitle.'!'.$cellID)) {
- return $cellValue;
- } elseif ($this->_cyclicFormulaCell == $wsTitle.'!'.$cellID) {
- ++$this->_cyclicFormulaCount;
- if ($this->_cyclicFormulaCount >= $this->cyclicFormulaCount) {
- return $cellValue;
- }
- } elseif ($this->_cyclicFormulaCell == '') {
- $this->_cyclicFormulaCell = $wsTitle.'!'.$cellID;
- if ($this->_cyclicFormulaCount >= $this->cyclicFormulaCount) {
- return $cellValue;
- }
- }
- }
- $this->debugLogStack[] = $wsTitle.'!'.$cellID;
- // Parse the formula onto the token stack and calculate the value
- $cellValue = $this->_processTokenStack($this->_parseFormula($formula, $pCell), $cellID, $pCell);
- array_pop($this->debugLogStack);
-
- // Save to calculation cache
- if ($cellID !== NULL) {
- if (self::$_calculationCacheEnabled) {
- self::$_calculationCache[$wsTitle][$cellID]['time'] = microtime(true);
- self::$_calculationCache[$wsTitle][$cellID]['data'] = $cellValue;
- }
- }
-
- // Return the calculated value
- return $cellValue;
- } // function _calculateFormulaValue()
-
-
- /**
- * Ensure that paired matrix operands are both matrices and of the same size
- *
- * @param mixed &$operand1 First matrix operand
- * @param mixed &$operand2 Second matrix operand
- * @param integer $resize Flag indicating whether the matrices should be resized to match
- * and (if so), whether the smaller dimension should grow or the
- * larger should shrink.
- * 0 = no resize
- * 1 = shrink to fit
- * 2 = extend to fit
- */
- private static function _checkMatrixOperands(&$operand1,&$operand2,$resize = 1) {
- // Examine each of the two operands, and turn them into an array if they aren't one already
- // Note that this function should only be called if one or both of the operand is already an array
- if (!is_array($operand1)) {
- list($matrixRows,$matrixColumns) = self::_getMatrixDimensions($operand2);
- $operand1 = array_fill(0,$matrixRows,array_fill(0,$matrixColumns,$operand1));
- $resize = 0;
- } elseif (!is_array($operand2)) {
- list($matrixRows,$matrixColumns) = self::_getMatrixDimensions($operand1);
- $operand2 = array_fill(0,$matrixRows,array_fill(0,$matrixColumns,$operand2));
- $resize = 0;
- }
-
- list($matrix1Rows,$matrix1Columns) = self::_getMatrixDimensions($operand1);
- list($matrix2Rows,$matrix2Columns) = self::_getMatrixDimensions($operand2);
- if (($matrix1Rows == $matrix2Columns) && ($matrix2Rows == $matrix1Columns)) {
- $resize = 1;
- }
-
- if ($resize == 2) {
- // Given two matrices of (potentially) unequal size, convert the smaller in each dimension to match the larger
- self::_resizeMatricesExtend($operand1,$operand2,$matrix1Rows,$matrix1Columns,$matrix2Rows,$matrix2Columns);
- } elseif ($resize == 1) {
- // Given two matrices of (potentially) unequal size, convert the larger in each dimension to match the smaller
- self::_resizeMatricesShrink($operand1,$operand2,$matrix1Rows,$matrix1Columns,$matrix2Rows,$matrix2Columns);
- }
- return array( $matrix1Rows,$matrix1Columns,$matrix2Rows,$matrix2Columns);
- } // function _checkMatrixOperands()
-
-
- /**
- * Read the dimensions of a matrix, and re-index it with straight numeric keys starting from row 0, column 0
- *
- * @param mixed &$matrix matrix operand
- * @return array An array comprising the number of rows, and number of columns
- */
- public static function _getMatrixDimensions(&$matrix) {
- $matrixRows = count($matrix);
- $matrixColumns = 0;
- foreach($matrix as $rowKey => $rowValue) {
- $matrixColumns = max(count($rowValue),$matrixColumns);
- if (!is_array($rowValue)) {
- $matrix[$rowKey] = array($rowValue);
- } else {
- $matrix[$rowKey] = array_values($rowValue);
- }
- }
- $matrix = array_values($matrix);
- return array($matrixRows,$matrixColumns);
- } // function _getMatrixDimensions()
-
-
- /**
- * Ensure that paired matrix operands are both matrices of the same size
- *
- * @param mixed &$matrix1 First matrix operand
- * @param mixed &$matrix2 Second matrix operand
- */
- private static function _resizeMatricesShrink(&$matrix1,&$matrix2,$matrix1Rows,$matrix1Columns,$matrix2Rows,$matrix2Columns) {
- if (($matrix2Columns < $matrix1Columns) || ($matrix2Rows < $matrix1Rows)) {
- if ($matrix2Columns < $matrix1Columns) {
- for ($i = 0; $i < $matrix1Rows; ++$i) {
- for ($j = $matrix2Columns; $j < $matrix1Columns; ++$j) {
- unset($matrix1[$i][$j]);
- }
- }
- }
- if ($matrix2Rows < $matrix1Rows) {
- for ($i = $matrix2Rows; $i < $matrix1Rows; ++$i) {
- unset($matrix1[$i]);
- }
- }
- }
-
- if (($matrix1Columns < $matrix2Columns) || ($matrix1Rows < $matrix2Rows)) {
- if ($matrix1Columns < $matrix2Columns) {
- for ($i = 0; $i < $matrix2Rows; ++$i) {
- for ($j = $matrix1Columns; $j < $matrix2Columns; ++$j) {
- unset($matrix2[$i][$j]);
- }
- }
- }
- if ($matrix1Rows < $matrix2Rows) {
- for ($i = $matrix1Rows; $i < $matrix2Rows; ++$i) {
- unset($matrix2[$i]);
- }
- }
- }
- } // function _resizeMatricesShrink()
-
-
- /**
- * Ensure that paired matrix operands are both matrices of the same size
- *
- * @param mixed &$matrix1 First matrix operand
- * @param mixed &$matrix2 Second matrix operand
- */
- private static function _resizeMatricesExtend(&$matrix1,&$matrix2,$matrix1Rows,$matrix1Columns,$matrix2Rows,$matrix2Columns) {
- if (($matrix2Columns < $matrix1Columns) || ($matrix2Rows < $matrix1Rows)) {
- if ($matrix2Columns < $matrix1Columns) {
- for ($i = 0; $i < $matrix2Rows; ++$i) {
- $x = $matrix2[$i][$matrix2Columns-1];
- for ($j = $matrix2Columns; $j < $matrix1Columns; ++$j) {
- $matrix2[$i][$j] = $x;
- }
- }
- }
- if ($matrix2Rows < $matrix1Rows) {
- $x = $matrix2[$matrix2Rows-1];
- for ($i = 0; $i < $matrix1Rows; ++$i) {
- $matrix2[$i] = $x;
- }
- }
- }
-
- if (($matrix1Columns < $matrix2Columns) || ($matrix1Rows < $matrix2Rows)) {
- if ($matrix1Columns < $matrix2Columns) {
- for ($i = 0; $i < $matrix1Rows; ++$i) {
- $x = $matrix1[$i][$matrix1Columns-1];
- for ($j = $matrix1Columns; $j < $matrix2Columns; ++$j) {
- $matrix1[$i][$j] = $x;
- }
- }
- }
- if ($matrix1Rows < $matrix2Rows) {
- $x = $matrix1[$matrix1Rows-1];
- for ($i = 0; $i < $matrix2Rows; ++$i) {
- $matrix1[$i] = $x;
- }
- }
- }
- } // function _resizeMatricesExtend()
-
-
- /**
- * Format details of an operand for display in the log (based on operand type)
- *
- * @param mixed $value First matrix operand
- * @return mixed
- */
- private function _showValue($value) {
- if ($this->writeDebugLog) {
- $testArray = PHPExcel_Calculation_Functions::flattenArray($value);
- if (count($testArray) == 1) {
- $value = array_pop($testArray);
- }
-
- if (is_array($value)) {
- $returnMatrix = array();
- $pad = $rpad = ', ';
- foreach($value as $row) {
- if (is_array($row)) {
- $returnMatrix[] = implode($pad,array_map(array($this,'_showValue'),$row));
- $rpad = '; ';
- } else {
- $returnMatrix[] = $this->_showValue($row);
- }
- }
- return '{ '.implode($rpad,$returnMatrix).' }';
- } elseif(is_string($value) && (trim($value,'"') == $value)) {
- return '"'.$value.'"';
- } elseif(is_bool($value)) {
- return ($value) ? self::$_localeBoolean['TRUE'] : self::$_localeBoolean['FALSE'];
- }
- }
- return PHPExcel_Calculation_Functions::flattenSingleValue($value);
- } // function _showValue()
-
-
- /**
- * Format type and details of an operand for display in the log (based on operand type)
- *
- * @param mixed $value First matrix operand
- * @return mixed
- */
- private function _showTypeDetails($value) {
- if ($this->writeDebugLog) {
- $testArray = PHPExcel_Calculation_Functions::flattenArray($value);
- if (count($testArray) == 1) {
- $value = array_pop($testArray);
- }
-
- if ($value === NULL) {
- return 'a NULL value';
- } elseif (is_float($value)) {
- $typeString = 'a floating point number';
- } elseif(is_int($value)) {
- $typeString = 'an integer number';
- } elseif(is_bool($value)) {
- $typeString = 'a boolean';
- } elseif(is_array($value)) {
- $typeString = 'a matrix';
- } else {
- if ($value == '') {
- return 'an empty string';
- } elseif ($value{0} == '#') {
- return 'a '.$value.' error';
- } else {
- $typeString = 'a string';
- }
- }
- return $typeString.' with a value of '.$this->_showValue($value);
- }
- } // function _showTypeDetails()
-
-
- private static function _convertMatrixReferences($formula) {
- static $matrixReplaceFrom = array('{',';','}');
- static $matrixReplaceTo = array('MKMATRIX(MKMATRIX(','),MKMATRIX(','))');
-
- // Convert any Excel matrix references to the MKMATRIX() function
- if (strpos($formula,'{') !== false) {
- // If there is the possibility of braces within a quoted string, then we don't treat those as matrix indicators
- if (strpos($formula,'"') !== false) {
- // So instead we skip replacing in any quoted strings by only replacing in every other array element after we've exploded
- // the formula
- $temp = explode('"',$formula);
- // Open and Closed counts used for trapping mismatched braces in the formula
- $openCount = $closeCount = 0;
- $i = false;
- foreach($temp as &$value) {
- // Only count/replace in alternating array entries
- if ($i = !$i) {
- $openCount += substr_count($value,'{');
- $closeCount += substr_count($value,'}');
- $value = str_replace($matrixReplaceFrom,$matrixReplaceTo,$value);
- }
- }
- unset($value);
- // Then rebuild the formula string
- $formula = implode('"',$temp);
- } else {
- // If there's no quoted strings, then we do a simple count/replace
- $openCount = substr_count($formula,'{');
- $closeCount = substr_count($formula,'}');
- $formula = str_replace($matrixReplaceFrom,$matrixReplaceTo,$formula);
- }
- // Trap for mismatched braces and trigger an appropriate error
- if ($openCount < $closeCount) {
- if ($openCount > 0) {
- return $this->_raiseFormulaError("Formula Error: Mismatched matrix braces '}'");
- } else {
- return $this->_raiseFormulaError("Formula Error: Unexpected '}' encountered");
- }
- } elseif ($openCount > $closeCount) {
- if ($closeCount > 0) {
- return $this->_raiseFormulaError("Formula Error: Mismatched matrix braces '{'");
- } else {
- return $this->_raiseFormulaError("Formula Error: Unexpected '{' encountered");
- }
- }
- }
-
- return $formula;
- } // function _convertMatrixReferences()
-
-
- private static function _mkMatrix() {
- return func_get_args();
- } // function _mkMatrix()
-
-
- // Convert infix to postfix notation
- private function _parseFormula($formula, PHPExcel_Cell $pCell = null) {
- if (($formula = self::_convertMatrixReferences(trim($formula))) === false) {
- return FALSE;
- }
-
- // If we're using cell caching, then $pCell may well be flushed back to the cache (which detaches the parent worksheet),
- // so we store the parent worksheet so that we can re-attach it when necessary
- $pCellParent = ($pCell !== NULL) ? $pCell->getParent() : NULL;
-
- // Binary Operators
- // These operators always work on two values
- // Array key is the operator, the value indicates whether this is a left or right associative operator
- $operatorAssociativity = array('^' => 0, // Exponentiation
- '*' => 0, '/' => 0, // Multiplication and Division
- '+' => 0, '-' => 0, // Addition and Subtraction
- '&' => 0, // Concatenation
- '|' => 0, ':' => 0, // Intersect and Range
- '>' => 0, '<' => 0, '=' => 0, '>=' => 0, '<=' => 0, '<>' => 0 // Comparison
- );
- // Comparison (Boolean) Operators
- // These operators work on two values, but always return a boolean result
- $comparisonOperators = array('>' => true, '<' => true, '=' => true, '>=' => true, '<=' => true, '<>' => true);
-
- // Operator Precedence
- // This list includes all valid operators, whether binary (including boolean) or unary (such as %)
- // Array key is the operator, the value is its precedence
- $operatorPrecedence = array(':' => 8, // Range
- '|' => 7, // Intersect
- '~' => 6, // Negation
- '%' => 5, // Percentage
- '^' => 4, // Exponentiation
- '*' => 3, '/' => 3, // Multiplication and Division
- '+' => 2, '-' => 2, // Addition and Subtraction
- '&' => 1, // Concatenation
- '>' => 0, '<' => 0, '=' => 0, '>=' => 0, '<=' => 0, '<>' => 0 // Comparison
- );
-
- $regexpMatchString = '/^('.self::CALCULATION_REGEXP_FUNCTION.
- '|'.self::CALCULATION_REGEXP_NUMBER.
- '|'.self::CALCULATION_REGEXP_STRING.
- '|'.self::CALCULATION_REGEXP_OPENBRACE.
- '|'.self::CALCULATION_REGEXP_CELLREF.
- '|'.self::CALCULATION_REGEXP_NAMEDRANGE.
- '|'.self::CALCULATION_REGEXP_ERROR.
- ')/si';
-
- // Start with initialisation
- $index = 0;
- $stack = new PHPExcel_Calculation_Token_Stack;
- $output = array();
- $expectingOperator = false; // We use this test in syntax-checking the expression to determine when a
- // - is a negation or + is a positive operator rather than an operation
- $expectingOperand = false; // We use this test in syntax-checking the expression to determine whether an operand
- // should be null in a function call
- // The guts of the lexical parser
- // Loop through the formula extracting each operator and operand in turn
- while(true) {
-// echo 'Assessing Expression <b>'.substr($formula, $index).'</b><br />';
- $opCharacter = $formula{$index}; // Get the first character of the value at the current index position
-// echo 'Initial character of expression block is '.$opCharacter.'<br />';
- if ((isset($comparisonOperators[$opCharacter])) && (strlen($formula) > $index) && (isset($comparisonOperators[$formula{$index+1}]))) {
- $opCharacter .= $formula{++$index};
-// echo 'Initial character of expression block is comparison operator '.$opCharacter.'<br />';
- }
-
- // Find out if we're currently at the beginning of a number, variable, cell reference, function, parenthesis or operand
- $isOperandOrFunction = preg_match($regexpMatchString, substr($formula, $index), $match);
-// echo '$isOperandOrFunction is '.(($isOperandOrFunction) ? 'True' : 'False').'<br />';
-// var_dump($match);
-
- if ($opCharacter == '-' && !$expectingOperator) { // Is it a negation instead of a minus?
-// echo 'Element is a Negation operator<br />';
- $stack->push('Unary Operator','~'); // Put a negation on the stack
- ++$index; // and drop the negation symbol
- } elseif ($opCharacter == '%' && $expectingOperator) {
-// echo 'Element is a Percentage operator<br />';
- $stack->push('Unary Operator','%'); // Put a percentage on the stack
- ++$index;
- } elseif ($opCharacter == '+' && !$expectingOperator) { // Positive (unary plus rather than binary operator plus) can be discarded?
-// echo 'Element is a Positive number, not Plus operator<br />';
- ++$index; // Drop the redundant plus symbol
- } elseif ((($opCharacter == '~') || ($opCharacter == '|')) && (!$isOperandOrFunction)) { // We have to explicitly deny a tilde or pipe, because they are legal
- return $this->_raiseFormulaError("Formula Error: Illegal character '~'"); // on the stack but not in the input expression
-
- } elseif ((isset(self::$_operators[$opCharacter]) or $isOperandOrFunction) && $expectingOperator) { // Are we putting an operator on the stack?
-// echo 'Element with value '.$opCharacter.' is an Operator<br />';
- while($stack->count() > 0 &&
- ($o2 = $stack->last()) &&
- isset(self::$_operators[$o2['value']]) &&
- @($operatorAssociativity[$opCharacter] ? $operatorPrecedence[$opCharacter] < $operatorPrecedence[$o2['value']] : $operatorPrecedence[$opCharacter] <= $operatorPrecedence[$o2['value']])) {
- $output[] = $stack->pop(); // Swap operands and higher precedence operators from the stack to the output
- }
- $stack->push('Binary Operator',$opCharacter); // Finally put our current operator onto the stack
- ++$index;
- $expectingOperator = false;
-
- } elseif ($opCharacter == ')' && $expectingOperator) { // Are we expecting to close a parenthesis?
-// echo 'Element is a Closing bracket<br />';
- $expectingOperand = false;
- while (($o2 = $stack->pop()) && $o2['value'] != '(') { // Pop off the stack back to the last (
- if ($o2 === NULL) return $this->_raiseFormulaError('Formula Error: Unexpected closing brace ")"');
- else $output[] = $o2;
- }
- $d = $stack->last(2);
- if (preg_match('/^'.self::CALCULATION_REGEXP_FUNCTION.'$/i', $d['value'], $matches)) { // Did this parenthesis just close a function?
- $functionName = $matches[1]; // Get the function name
-// echo 'Closed Function is '.$functionName.'<br />';
- $d = $stack->pop();
- $argumentCount = $d['value']; // See how many arguments there were (argument count is the next value stored on the stack)
-// if ($argumentCount == 0) {
-// echo 'With no arguments<br />';
-// } elseif ($argumentCount == 1) {
-// echo 'With 1 argument<br />';
-// } else {
-// echo 'With '.$argumentCount.' arguments<br />';
-// }
- $output[] = $d; // Dump the argument count on the output
- $output[] = $stack->pop(); // Pop the function and push onto the output
- if (isset(self::$_controlFunctions[$functionName])) {
-// echo 'Built-in function '.$functionName.'<br />';
- $expectedArgumentCount = self::$_controlFunctions[$functionName]['argumentCount'];
- $functionCall = self::$_controlFunctions[$functionName]['functionCall'];
- } elseif (isset(self::$_PHPExcelFunctions[$functionName])) {
-// echo 'PHPExcel function '.$functionName.'<br />';
- $expectedArgumentCount = self::$_PHPExcelFunctions[$functionName]['argumentCount'];
- $functionCall = self::$_PHPExcelFunctions[$functionName]['functionCall'];
- } else { // did we somehow push a non-function on the stack? this should never happen
- return $this->_raiseFormulaError("Formula Error: Internal error, non-function on stack");
- }
- // Check the argument count
- $argumentCountError = false;
- if (is_numeric($expectedArgumentCount)) {
- if ($expectedArgumentCount < 0) {
-// echo '$expectedArgumentCount is between 0 and '.abs($expectedArgumentCount).'<br />';
- if ($argumentCount > abs($expectedArgumentCount)) {
- $argumentCountError = true;
- $expectedArgumentCountString = 'no more than '.abs($expectedArgumentCount);
- }
- } else {
-// echo '$expectedArgumentCount is numeric '.$expectedArgumentCount.'<br />';
- if ($argumentCount != $expectedArgumentCount) {
- $argumentCountError = true;
- $expectedArgumentCountString = $expectedArgumentCount;
- }
- }
- } elseif ($expectedArgumentCount != '*') {
- $isOperandOrFunction = preg_match('/(\d*)([-+,])(\d*)/',$expectedArgumentCount,$argMatch);
-// print_r($argMatch);
-// echo '<br />';
- switch ($argMatch[2]) {
- case '+' :
- if ($argumentCount < $argMatch[1]) {
- $argumentCountError = true;
- $expectedArgumentCountString = $argMatch[1].' or more ';
- }
- break;
- case '-' :
- if (($argumentCount < $argMatch[1]) || ($argumentCount > $argMatch[3])) {
- $argumentCountError = true;
- $expectedArgumentCountString = 'between '.$argMatch[1].' and '.$argMatch[3];
- }
- break;
- case ',' :
- if (($argumentCount != $argMatch[1]) && ($argumentCount != $argMatch[3])) {
- $argumentCountError = true;
- $expectedArgumentCountString = 'either '.$argMatch[1].' or '.$argMatch[3];
- }
- break;
- }
- }
- if ($argumentCountError) {
- return $this->_raiseFormulaError("Formula Error: Wrong number of arguments for $functionName() function: $argumentCount given, ".$expectedArgumentCountString." expected");
- }
- }
- ++$index;
-
- } elseif ($opCharacter == ',') { // Is this the separator for function arguments?
-// echo 'Element is a Function argument separator<br />';
- while (($o2 = $stack->pop()) && $o2['value'] != '(') { // Pop off the stack back to the last (
- if ($o2 === NULL) return $this->_raiseFormulaError("Formula Error: Unexpected ,");
- else $output[] = $o2; // pop the argument expression stuff and push onto the output
- }
- // If we've a comma when we're expecting an operand, then what we actually have is a null operand;
- // so push a null onto the stack
- if (($expectingOperand) || (!$expectingOperator)) {
- $output[] = array('type' => 'NULL Value', 'value' => self::$_ExcelConstants['NULL'], 'reference' => null);
- }
- // make sure there was a function
- $d = $stack->last(2);
- if (!preg_match('/^'.self::CALCULATION_REGEXP_FUNCTION.'$/i', $d['value'], $matches))
- return $this->_raiseFormulaError("Formula Error: Unexpected ,");
- $d = $stack->pop();
- $stack->push($d['type'],++$d['value'],$d['reference']); // increment the argument count
- $stack->push('Brace', '('); // put the ( back on, we'll need to pop back to it again
- $expectingOperator = false;
- $expectingOperand = true;
- ++$index;
-
- } elseif ($opCharacter == '(' && !$expectingOperator) {
-// echo 'Element is an Opening Bracket<br />';
- $stack->push('Brace', '(');
- ++$index;
-
- } elseif ($isOperandOrFunction && !$expectingOperator) { // do we now have a function/variable/number?
- $expectingOperator = true;
- $expectingOperand = false;
- $val = $match[1];
- $length = strlen($val);
-// echo 'Element with value '.$val.' is an Operand, Variable, Constant, String, Number, Cell Reference or Function<br />';
-
- if (preg_match('/^'.self::CALCULATION_REGEXP_FUNCTION.'$/i', $val, $matches)) {
- $val = preg_replace('/\s/','',$val);
-// echo 'Element '.$val.' is a Function<br />';
- if (isset(self::$_PHPExcelFunctions[strtoupper($matches[1])]) || isset(self::$_controlFunctions[strtoupper($matches[1])])) { // it's a function
- $stack->push('Function', strtoupper($val));
- $ax = preg_match('/^\s*(\s*\))/i', substr($formula, $index+$length), $amatch);
- if ($ax) {
- $stack->push('Operand Count for Function '.strtoupper($val).')', 0);
- $expectingOperator = true;
- } else {
- $stack->push('Operand Count for Function '.strtoupper($val).')', 1);
- $expectingOperator = false;
- }
- $stack->push('Brace', '(');
- } else { // it's a var w/ implicit multiplication
- $output[] = array('type' => 'Value', 'value' => $matches[1], 'reference' => null);
- }
- } elseif (preg_match('/^'.self::CALCULATION_REGEXP_CELLREF.'$/i', $val, $matches)) {
-// echo 'Element '.$val.' is a Cell reference<br />';
- // Watch for this case-change when modifying to allow cell references in different worksheets...
- // Should only be applied to the actual cell column, not the worksheet name
-
- // If the last entry on the stack was a : operator, then we have a cell range reference
- $testPrevOp = $stack->last(1);
- if ($testPrevOp['value'] == ':') {
- // If we have a worksheet reference, then we're playing with a 3D reference
- if ($matches[2] == '') {
- // Otherwise, we 'inherit' the worksheet reference from the start cell reference
- // The start of the cell range reference should be the last entry in $output
- $startCellRef = $output[count($output)-1]['value'];
- preg_match('/^'.self::CALCULATION_REGEXP_CELLREF.'$/i', $startCellRef, $startMatches);
- if ($startMatches[2] > '') {
- $val = $startMatches[2].'!'.$val;
- }
- } else {
- return $this->_raiseFormulaError("3D Range references are not yet supported");
- }
- }
-
- $output[] = array('type' => 'Cell Reference', 'value' => $val, 'reference' => $val);
-// $expectingOperator = false;
- } else { // it's a variable, constant, string, number or boolean
-// echo 'Element is a Variable, Constant, String, Number or Boolean<br />';
- // If the last entry on the stack was a : operator, then we may have a row or column range reference
- $testPrevOp = $stack->last(1);
- if ($testPrevOp['value'] == ':') {
- $startRowColRef = $output[count($output)-1]['value'];
- $rangeWS1 = '';
- if (strpos('!',$startRowColRef) !== false) {
- list($rangeWS1,$startRowColRef) = explode('!',$startRowColRef);
- }
- if ($rangeWS1 != '') $rangeWS1 .= '!';
- $rangeWS2 = $rangeWS1;
- if (strpos('!',$val) !== false) {
- list($rangeWS2,$val) = explode('!',$val);
- }
- if ($rangeWS2 != '') $rangeWS2 .= '!';
- if ((is_integer($startRowColRef)) && (ctype_digit($val)) &&
- ($startRowColRef <= 1048576) && ($val <= 1048576)) {
- // Row range
- $endRowColRef = ($pCellParent !== NULL) ? $pCellParent->getHighestColumn() : 'XFD'; // Max 16,384 columns for Excel2007
- $output[count($output)-1]['value'] = $rangeWS1.'A'.$startRowColRef;
- $val = $rangeWS2.$endRowColRef.$val;
- } elseif ((ctype_alpha($startRowColRef)) && (ctype_alpha($val)) &&
- (strlen($startRowColRef) <= 3) && (strlen($val) <= 3)) {
- // Column range
- $endRowColRef = ($pCellParent !== NULL) ? $pCellParent->getHighestRow() : 1048576; // Max 1,048,576 rows for Excel2007
- $output[count($output)-1]['value'] = $rangeWS1.strtoupper($startRowColRef).'1';
- $val = $rangeWS2.$val.$endRowColRef;
- }
- }
-
- $localeConstant = false;
- if ($opCharacter == '"') {
-// echo 'Element is a String<br />';
- // UnEscape any quotes within the string
- $val = self::_wrapResult(str_replace('""','"',self::_unwrapResult($val)));
- } elseif (is_numeric($val)) {
-// echo 'Element is a Number<br />';
- if ((strpos($val,'.') !== false) || (stripos($val,'e') !== false) || ($val > PHP_INT_MAX) || ($val < -PHP_INT_MAX)) {
-// echo 'Casting '.$val.' to float<br />';
- $val = (float) $val;
- } else {
-// echo 'Casting '.$val.' to integer<br />';
- $val = (integer) $val;
- }
- } elseif (isset(self::$_ExcelConstants[trim(strtoupper($val))])) {
- $excelConstant = trim(strtoupper($val));
-// echo 'Element '.$excelConstant.' is an Excel Constant<br />';
- $val = self::$_ExcelConstants[$excelConstant];
- } elseif (($localeConstant = array_search(trim(strtoupper($val)), self::$_localeBoolean)) !== false) {
-// echo 'Element '.$localeConstant.' is an Excel Constant<br />';
- $val = self::$_ExcelConstants[$localeConstant];
- }
- $details = array('type' => 'Value', 'value' => $val, 'reference' => null);
- if ($localeConstant) { $details['localeValue'] = $localeConstant; }
- $output[] = $details;
- }
- $index += $length;
-
- } elseif ($opCharacter == '$') { // absolute row or column range
- ++$index;
- } elseif ($opCharacter == ')') { // miscellaneous error checking
- if ($expectingOperand) {
- $output[] = array('type' => 'NULL Value', 'value' => self::$_ExcelConstants['NULL'], 'reference' => null);
- $expectingOperand = false;
- $expectingOperator = true;
- } else {
- return $this->_raiseFormulaError("Formula Error: Unexpected ')'");
- }
- } elseif (isset(self::$_operators[$opCharacter]) && !$expectingOperator) {
- return $this->_raiseFormulaError("Formula Error: Unexpected operator '$opCharacter'");
- } else { // I don't even want to know what you did to get here
- return $this->_raiseFormulaError("Formula Error: An unexpected error occured");
- }
- // Test for end of formula string
- if ($index == strlen($formula)) {
- // Did we end with an operator?.
- // Only valid for the % unary operator
- if ((isset(self::$_operators[$opCharacter])) && ($opCharacter != '%')) {
- return $this->_raiseFormulaError("Formula Error: Operator '$opCharacter' has no operands");
- } else {
- break;
- }
- }
- // Ignore white space
- while (($formula{$index} == "\n") || ($formula{$index} == "\r")) {
- ++$index;
- }
- if ($formula{$index} == ' ') {
- while ($formula{$index} == ' ') {
- ++$index;
- }
- // If we're expecting an operator, but only have a space between the previous and next operands (and both are
- // Cell References) then we have an INTERSECTION operator
-// echo 'Possible Intersect Operator<br />';
- if (($expectingOperator) && (preg_match('/^'.self::CALCULATION_REGEXP_CELLREF.'.*/Ui', substr($formula, $index), $match)) &&
- ($output[count($output)-1]['type'] == 'Cell Reference')) {
-// echo 'Element is an Intersect Operator<br />';
- while($stack->count() > 0 &&
- ($o2 = $stack->last()) &&
- isset(self::$_operators[$o2['value']]) &&
- @($operatorAssociativity[$opCharacter] ? $operatorPrecedence[$opCharacter] < $operatorPrecedence[$o2['value']] : $operatorPrecedence[$opCharacter] <= $operatorPrecedence[$o2['value']])) {
- $output[] = $stack->pop(); // Swap operands and higher precedence operators from the stack to the output
- }
- $stack->push('Binary Operator','|'); // Put an Intersect Operator on the stack
- $expectingOperator = false;
- }
- }
- }
-
- while (($op = $stack->pop()) !== NULL) { // pop everything off the stack and push onto output
- if ((is_array($opCharacter) && $opCharacter['value'] == '(') || ($opCharacter === '('))
- return $this->_raiseFormulaError("Formula Error: Expecting ')'"); // if there are any opening braces on the stack, then braces were unbalanced
- $output[] = $op;
- }
- return $output;
- } // function _parseFormula()
-
-
- private static function _dataTestReference(&$operandData)
- {
- $operand = $operandData['value'];
- if (($operandData['reference'] === NULL) && (is_array($operand))) {
- $rKeys = array_keys($operand);
- $rowKey = array_shift($rKeys);
- $cKeys = array_keys(array_keys($operand[$rowKey]));
- $colKey = array_shift($cKeys);
- if (ctype_upper($colKey)) {
- $operandData['reference'] = $colKey.$rowKey;
- }
- }
- return $operand;
- }
-
- // evaluate postfix notation
- private function _processTokenStack($tokens, $cellID = null, PHPExcel_Cell $pCell = null) {
- if ($tokens == false) return false;
-
- // If we're using cell caching, then $pCell may well be flushed back to the cache (which detaches the parent worksheet),
- // so we store the parent worksheet so that we can re-attach it when necessary
- $pCellParent = ($pCell !== NULL) ? $pCell->getParent() : null;
- $stack = new PHPExcel_Calculation_Token_Stack;
-
- // Loop through each token in turn
- foreach ($tokens as $tokenData) {
-// print_r($tokenData);
-// echo '<br />';
- $token = $tokenData['value'];
-// echo '<b>Token is '.$token.'</b><br />';
- // if the token is a binary operator, pop the top two values off the stack, do the operation, and push the result back on the stack
- if (isset(self::$_binaryOperators[$token])) {
-// echo 'Token is a binary operator<br />';
- // We must have two operands, error if we don't
- if (($operand2Data = $stack->pop()) === NULL) return $this->_raiseFormulaError('Internal error - Operand value missing from stack');
- if (($operand1Data = $stack->pop()) === NULL) return $this->_raiseFormulaError('Internal error - Operand value missing from stack');
-
- $operand1 = self::_dataTestReference($operand1Data);
- $operand2 = self::_dataTestReference($operand2Data);
-
- // Log what we're doing
- if ($token == ':') {
- $this->_writeDebug('Evaluating Range '.$this->_showValue($operand1Data['reference']).$token.$this->_showValue($operand2Data['reference']));
- } else {
- $this->_writeDebug('Evaluating '.$this->_showValue($operand1).' '.$token.' '.$this->_showValue($operand2));
- }
-
- // Process the operation in the appropriate manner
- switch ($token) {
- // Comparison (Boolean) Operators
- case '>' : // Greater than
- case '<' : // Less than
- case '>=' : // Greater than or Equal to
- case '<=' : // Less than or Equal to
- case '=' : // Equality
- case '<>' : // Inequality
- $this->_executeBinaryComparisonOperation($cellID,$operand1,$operand2,$token,$stack);
- break;
- // Binary Operators
- case ':' : // Range
- $sheet1 = $sheet2 = '';
- if (strpos($operand1Data['reference'],'!') !== false) {
- list($sheet1,$operand1Data['reference']) = explode('!',$operand1Data['reference']);
- } else {
- $sheet1 = ($pCellParent !== NULL) ? $pCellParent->getTitle() : '';
- }
- if (strpos($operand2Data['reference'],'!') !== false) {
- list($sheet2,$operand2Data['reference']) = explode('!',$operand2Data['reference']);
- } else {
- $sheet2 = $sheet1;
- }
- if ($sheet1 == $sheet2) {
- if ($operand1Data['reference'] === NULL) {
- if ((trim($operand1Data['value']) != '') && (is_numeric($operand1Data['value']))) {
- $operand1Data['reference'] = $pCell->getColumn().$operand1Data['value'];
- } elseif (trim($operand1Data['reference']) == '') {
- $operand1Data['reference'] = $pCell->getCoordinate();
- } else {
- $operand1Data['reference'] = $operand1Data['value'].$pCell->getRow();
- }
- }
- if ($operand2Data['reference'] === NULL) {
- if ((trim($operand2Data['value']) != '') && (is_numeric($operand2Data['value']))) {
- $operand2Data['reference'] = $pCell->getColumn().$operand2Data['value'];
- } elseif (trim($operand2Data['reference']) == '') {
- $operand2Data['reference'] = $pCell->getCoordinate();
- } else {
- $operand2Data['reference'] = $operand2Data['value'].$pCell->getRow();
- }
- }
-
- $oData = array_merge(explode(':',$operand1Data['reference']),explode(':',$operand2Data['reference']));
- $oCol = $oRow = array();
- foreach($oData as $oDatum) {
- $oCR = PHPExcel_Cell::coordinateFromString($oDatum);
- $oCol[] = PHPExcel_Cell::columnIndexFromString($oCR[0]) - 1;
- $oRow[] = $oCR[1];
- }
- $cellRef = PHPExcel_Cell::stringFromColumnIndex(min($oCol)).min($oRow).':'.PHPExcel_Cell::stringFromColumnIndex(max($oCol)).max($oRow);
- if ($pCellParent !== NULL) {
- $cellValue = $this->extractCellRange($cellRef, $pCellParent->getParent()->getSheetByName($sheet1), false);
- } else {
- return $this->_raiseFormulaError('Unable to access Cell Reference');
- }
- $stack->push('Cell Reference',$cellValue,$cellRef);
- } else {
- $stack->push('Error',PHPExcel_Calculation_Functions::REF(),null);
- }
-
- break;
- case '+' : // Addition
- $this->_executeNumericBinaryOperation($cellID,$operand1,$operand2,$token,'plusEquals',$stack);
- break;
- case '-' : // Subtraction
- $this->_executeNumericBinaryOperation($cellID,$operand1,$operand2,$token,'minusEquals',$stack);
- break;
- case '*' : // Multiplication
- $this->_executeNumericBinaryOperation($cellID,$operand1,$operand2,$token,'arrayTimesEquals',$stack);
- break;
- case '/' : // Division
- $this->_executeNumericBinaryOperation($cellID,$operand1,$operand2,$token,'arrayRightDivide',$stack);
- break;
- case '^' : // Exponential
- $this->_executeNumericBinaryOperation($cellID,$operand1,$operand2,$token,'power',$stack);
- break;
- case '&' : // Concatenation
- // If either of the operands is a matrix, we need to treat them both as matrices
- // (converting the other operand to a matrix if need be); then perform the required
- // matrix operation
- if (is_bool($operand1)) {
- $operand1 = ($operand1) ? self::$_localeBoolean['TRUE'] : self::$_localeBoolean['FALSE'];
- }
- if (is_bool($operand2)) {
- $operand2 = ($operand2) ? self::$_localeBoolean['TRUE'] : self::$_localeBoolean['FALSE'];
- }
- if ((is_array($operand1)) || (is_array($operand2))) {
- // Ensure that both operands are arrays/matrices
- self::_checkMatrixOperands($operand1,$operand2,2);
- try {
- // Convert operand 1 from a PHP array to a matrix
- $matrix = new PHPExcel_Shared_JAMA_Matrix($operand1);
- // Perform the required operation against the operand 1 matrix, passing in operand 2
- $matrixResult = $matrix->concat($operand2);
- $result = $matrixResult->getArray();
- } catch (Exception $ex) {
- $this->_writeDebug('JAMA Matrix Exception: '.$ex->getMessage());
- $result = '#VALUE!';
- }
- } else {
- $result = '"'.str_replace('""','"',self::_unwrapResult($operand1,'"').self::_unwrapResult($operand2,'"')).'"';
- }
- $this->_writeDebug('Evaluation Result is '.$this->_showTypeDetails($result));
- $stack->push('Value',$result);
- break;
- case '|' : // Intersect
- $rowIntersect = array_intersect_key($operand1,$operand2);
- $cellIntersect = $oCol = $oRow = array();
- foreach(array_keys($rowIntersect) as $row) {
- $oRow[] = $row;
- foreach($rowIntersect[$row] as $col => $data) {
- $oCol[] = PHPExcel_Cell::columnIndexFromString($col) - 1;
- $cellIntersect[$row] = array_intersect_key($operand1[$row],$operand2[$row]);
- }
- }
- $cellRef = PHPExcel_Cell::stringFromColumnIndex(min($oCol)).min($oRow).':'.PHPExcel_Cell::stringFromColumnIndex(max($oCol)).max($oRow);
- $this->_writeDebug('Evaluation Result is '.$this->_showTypeDetails($cellIntersect));
- $stack->push('Value',$cellIntersect,$cellRef);
- break;
- }
-
- // if the token is a unary operator, pop one value off the stack, do the operation, and push it back on
- } elseif (($token === '~') || ($token === '%')) {
-// echo 'Token is a unary operator<br />';
- if (($arg = $stack->pop()) === NULL) return $this->_raiseFormulaError('Internal error - Operand value missing from stack');
- $arg = $arg['value'];
- if ($token === '~') {
-// echo 'Token is a negation operator<br />';
- $this->_writeDebug('Evaluating Negation of '.$this->_showValue($arg));
- $multiplier = -1;
- } else {
-// echo 'Token is a percentile operator<br />';
- $this->_writeDebug('Evaluating Percentile of '.$this->_showValue($arg));
- $multiplier = 0.01;
- }
- if (is_array($arg)) {
- self::_checkMatrixOperands($arg,$multiplier,2);
- try {
- $matrix1 = new PHPExcel_Shared_JAMA_Matrix($arg);
- $matrixResult = $matrix1->arrayTimesEquals($multiplier);
- $result = $matrixResult->getArray();
- } catch (Exception $ex) {
- $this->_writeDebug('JAMA Matrix Exception: '.$ex->getMessage());
- $result = '#VALUE!';
- }
- $this->_writeDebug('Evaluation Result is '.$this->_showTypeDetails($result));
- $stack->push('Value',$result);
- } else {
- $this->_executeNumericBinaryOperation($cellID,$multiplier,$arg,'*','arrayTimesEquals',$stack);
- }
-
- } elseif (preg_match('/^'.self::CALCULATION_REGEXP_CELLREF.'$/i', $token, $matches)) {
- $cellRef = null;
-// echo 'Element '.$token.' is a Cell reference<br />';
- if (isset($matches[8])) {
-// echo 'Reference is a Range of cells<br />';
- if ($pCell === NULL) {
-// We can't access the range, so return a REF error
- $cellValue = PHPExcel_Calculation_Functions::REF();
- } else {
- $cellRef = $matches[6].$matches[7].':'.$matches[9].$matches[10];
- if ($matches[2] > '') {
- $matches[2] = trim($matches[2],"\"'");
- if ((strpos($matches[2],'[') !== false) || (strpos($matches[2],']') !== false)) {
- // It's a Reference to an external workbook (not currently supported)
- return $this->_raiseFormulaError('Unable to access External Workbook');
- }
- $matches[2] = trim($matches[2],"\"'");
-// echo '$cellRef='.$cellRef.' in worksheet '.$matches[2].'<br />';
- $this->_writeDebug('Evaluating Cell Range '.$cellRef.' in worksheet '.$matches[2]);
- if ($pCellParent !== NULL) {
- $cellValue = $this->extractCellRange($cellRef, $pCellParent->getParent()->getSheetByName($matches[2]), false);
- } else {
- return $this->_raiseFormulaError('Unable to access Cell Reference');
- }
- $this->_writeDebug('Evaluation Result for cells '.$cellRef.' in worksheet '.$matches[2].' is '.$this->_showTypeDetails($cellValue));
-// $cellRef = $matches[2].'!'.$cellRef;
- } else {
-// echo '$cellRef='.$cellRef.' in current worksheet<br />';
- $this->_writeDebug('Evaluating Cell Range '.$cellRef.' in current worksheet');
- if ($pCellParent !== NULL) {
- $cellValue = $this->extractCellRange($cellRef, $pCellParent, false);
- } else {
- return $this->_raiseFormulaError('Unable to access Cell Reference');
- }
- $this->_writeDebug('Evaluation Result for cells '.$cellRef.' is '.$this->_showTypeDetails($cellValue));
- }
- }
- } else {
-// echo 'Reference is a single Cell<br />';
- if ($pCell === NULL) {
-// We can't access the cell, so return a REF error
- $cellValue = PHPExcel_Calculation_Functions::REF();
- } else {
- $cellRef = $matches[6].$matches[7];
- if ($matches[2] > '') {
- $matches[2] = trim($matches[2],"\"'");
- if ((strpos($matches[2],'[') !== false) || (strpos($matches[2],']') !== false)) {
- // It's a Reference to an external workbook (not currently supported)
- return $this->_raiseFormulaError('Unable to access External Workbook');
- }
-// echo '$cellRef='.$cellRef.' in worksheet '.$matches[2].'<br />';
- $this->_writeDebug('Evaluating Cell '.$cellRef.' in worksheet '.$matches[2]);
- if ($pCellParent !== NULL) {
- if ($pCellParent->getParent()->getSheetByName($matches[2])->cellExists($cellRef)) {
- $cellValue = $this->extractCellRange($cellRef, $pCellParent->getParent()->getSheetByName($matches[2]), false);
- $pCell->attach($pCellParent);
- } else {
- $cellValue = null;
- }
- } else {
- return $this->_raiseFormulaError('Unable to access Cell Reference');
- }
- $this->_writeDebug('Evaluation Result for cell '.$cellRef.' in worksheet '.$matches[2].' is '.$this->_showTypeDetails($cellValue));
-// $cellRef = $matches[2].'!'.$cellRef;
- } else {
-// echo '$cellRef='.$cellRef.' in current worksheet<br />';
- $this->_writeDebug('Evaluating Cell '.$cellRef.' in current worksheet');
- if ($pCellParent->cellExists($cellRef)) {
- $cellValue = $this->extractCellRange($cellRef, $pCellParent, false);
- $pCell->attach($pCellParent);
- } else {
- $cellValue = null;
- }
- $this->_writeDebug('Evaluation Result for cell '.$cellRef.' is '.$this->_showTypeDetails($cellValue));
- }
- }
- }
- $stack->push('Value',$cellValue,$cellRef);
-
- // if the token is a function, pop arguments off the stack, hand them to the function, and push the result back on
- } elseif (preg_match('/^'.self::CALCULATION_REGEXP_FUNCTION.'$/i', $token, $matches)) {
-// echo 'Token is a function<br />';
- $functionName = $matches[1];
- $argCount = $stack->pop();
- $argCount = $argCount['value'];
- if ($functionName != 'MKMATRIX') {
- $this->_writeDebug('Evaluating Function '.self::_localeFunc($functionName).'() with '.(($argCount == 0) ? 'no' : $argCount).' argument'.(($argCount == 1) ? '' : 's'));
- }
- if ((isset(self::$_PHPExcelFunctions[$functionName])) || (isset(self::$_controlFunctions[$functionName]))) { // function
- if (isset(self::$_PHPExcelFunctions[$functionName])) {
- $functionCall = self::$_PHPExcelFunctions[$functionName]['functionCall'];
- $passByReference = isset(self::$_PHPExcelFunctions[$functionName]['passByReference']);
- $passCellReference = isset(self::$_PHPExcelFunctions[$functionName]['passCellReference']);
- } elseif (isset(self::$_controlFunctions[$functionName])) {
- $functionCall = self::$_controlFunctions[$functionName]['functionCall'];
- $passByReference = isset(self::$_controlFunctions[$functionName]['passByReference']);
- $passCellReference = isset(self::$_controlFunctions[$functionName]['passCellReference']);
- }
- // get the arguments for this function
-// echo 'Function '.$functionName.' expects '.$argCount.' arguments<br />';
- $args = $argArrayVals = array();
- for ($i = 0; $i < $argCount; ++$i) {
- $arg = $stack->pop();
- $a = $argCount - $i - 1;
- if (($passByReference) &&
- (isset(self::$_PHPExcelFunctions[$functionName]['passByReference'][$a])) &&
- (self::$_PHPExcelFunctions[$functionName]['passByReference'][$a])) {
- if ($arg['reference'] === NULL) {
- $args[] = $cellID;
- if ($functionName != 'MKMATRIX') { $argArrayVals[] = $this->_showValue($cellID); }
- } else {
- $args[] = $arg['reference'];
- if ($functionName != 'MKMATRIX') { $argArrayVals[] = $this->_showValue($arg['reference']); }
- }
- } else {
- $args[] = self::_unwrapResult($arg['value']);
- if ($functionName != 'MKMATRIX') { $argArrayVals[] = $this->_showValue($arg['value']); }
- }
- }
- // Reverse the order of the arguments
- krsort($args);
- if (($passByReference) && ($argCount == 0)) {
- $args[] = $cellID;
- $argArrayVals[] = $this->_showValue($cellID);
- }
-// echo 'Arguments are: ';
-// print_r($args);
-// echo '<br />';
- if ($functionName != 'MKMATRIX') {
- if ($this->writeDebugLog) {
- krsort($argArrayVals);
- $this->_writeDebug('Evaluating '. self::_localeFunc($functionName).'( '.implode(self::$_localeArgumentSeparator.' ',PHPExcel_Calculation_Functions::flattenArray($argArrayVals)).' )');
- }
- }
- // Process each argument in turn, building the return value as an array
-// if (($argCount == 1) && (is_array($args[1])) && ($functionName != 'MKMATRIX')) {
-// $operand1 = $args[1];
-// $this->_writeDebug('Argument is a matrix: '.$this->_showValue($operand1));
-// $result = array();
-// $row = 0;
-// foreach($operand1 as $args) {
-// if (is_array($args)) {
-// foreach($args as $arg) {
-// $this->_writeDebug('Evaluating '.self::_localeFunc($functionName).'( '.$this->_showValue($arg).' )');
-// $r = call_user_func_array($functionCall,$arg);
-// $this->_writeDebug('Evaluation Result for '.self::_localeFunc($functionName).'() function call is '.$this->_showTypeDetails($r));
-// $result[$row][] = $r;
-// }
-// ++$row;
-// } else {
-// $this->_writeDebug('Evaluating '.self::_localeFunc($functionName).'( '.$this->_showValue($args).' )');
-// $r = call_user_func_array($functionCall,$args);
-// $this->_writeDebug('Evaluation Result for '.self::_localeFunc($functionName).'() function call is '.$this->_showTypeDetails($r));
-// $result[] = $r;
-// }
-// }
-// } else {
- // Process the argument with the appropriate function call
- if ($passCellReference) {
- $args[] = $pCell;
- }
- if (strpos($functionCall,'::') !== false) {
- $result = call_user_func_array(explode('::',$functionCall),$args);
- } else {
- foreach($args as &$arg) {
- $arg = PHPExcel_Calculation_Functions::flattenSingleValue($arg);
- }
- unset($arg);
- $result = call_user_func_array($functionCall,$args);
- }
-// }
- if ($functionName != 'MKMATRIX') {
- $this->_writeDebug('Evaluation Result for '.self::_localeFunc($functionName).'() function call is '.$this->_showTypeDetails($result));
- }
- $stack->push('Value',self::_wrapResult($result));
- }
-
- } else {
- // if the token is a number, boolean, string or an Excel error, push it onto the stack
- if (isset(self::$_ExcelConstants[strtoupper($token)])) {
- $excelConstant = strtoupper($token);
-// echo 'Token is a PHPExcel constant: '.$excelConstant.'<br />';
- $stack->push('Constant Value',self::$_ExcelConstants[$excelConstant]);
- $this->_writeDebug('Evaluating Constant '.$excelConstant.' as '.$this->_showTypeDetails(self::$_ExcelConstants[$excelConstant]));
- } elseif ((is_numeric($token)) || ($token === NULL) || (is_bool($token)) || ($token == '') || ($token{0} == '"') || ($token{0} == '#')) {
-// echo 'Token is a number, boolean, string, null or an Excel error<br />';
- $stack->push('Value',$token);
- // if the token is a named range, push the named range name onto the stack
- } elseif (preg_match('/^'.self::CALCULATION_REGEXP_NAMEDRANGE.'$/i', $token, $matches)) {
-// echo 'Token is a named range<br />';
- $namedRange = $matches[6];
-// echo 'Named Range is '.$namedRange.'<br />';
- $this->_writeDebug('Evaluating Named Range '.$namedRange);
- $cellValue = $this->extractNamedRange($namedRange, ((null !== $pCell) ? $pCellParent : null), false);
- $pCell->attach($pCellParent);
- $this->_writeDebug('Evaluation Result for named range '.$namedRange.' is '.$this->_showTypeDetails($cellValue));
- $stack->push('Named Range',$cellValue,$namedRange);
- } else {
- return $this->_raiseFormulaError("undefined variable '$token'");
- }
- }
- }
- // when we're out of tokens, the stack should have a single element, the final result
- if ($stack->count() != 1) return $this->_raiseFormulaError("internal error");
- $output = $stack->pop();
- $output = $output['value'];
-
-// if ((is_array($output)) && (self::$returnArrayAsType != self::RETURN_ARRAY_AS_ARRAY)) {
-// return array_shift(PHPExcel_Calculation_Functions::flattenArray($output));
-// }
- return $output;
- } // function _processTokenStack()
-
-
- private function _validateBinaryOperand($cellID,&$operand,&$stack) {
- // Numbers, matrices and booleans can pass straight through, as they're already valid
- if (is_string($operand)) {
- // We only need special validations for the operand if it is a string
- // Start by stripping off the quotation marks we use to identify true excel string values internally
- if ($operand > '' && $operand{0} == '"') { $operand = self::_unwrapResult($operand); }
- // If the string is a numeric value, we treat it as a numeric, so no further testing
- if (!is_numeric($operand)) {
- // If not a numeric, test to see if the value is an Excel error, and so can't be used in normal binary operations
- if ($operand > '' && $operand{0} == '#') {
- $stack->push('Value', $operand);
- $this->_writeDebug('Evaluation Result is '.$this->_showTypeDetails($operand));
- return false;
- } elseif (!PHPExcel_Shared_String::convertToNumberIfFraction($operand)) {
- // If not a numeric or a fraction, then it's a text string, and so can't be used in mathematical binary operations
- $stack->push('Value', '#VALUE!');
- $this->_writeDebug('Evaluation Result is a '.$this->_showTypeDetails('#VALUE!'));
- return false;
- }
- }
- }
-
- // return a true if the value of the operand is one that we can use in normal binary operations
- return true;
- } // function _validateBinaryOperand()
-
-
- private function _executeBinaryComparisonOperation($cellID,$operand1,$operand2,$operation,&$stack,$recursingArrays=false) {
- // If we're dealing with matrix operations, we want a matrix result
- if ((is_array($operand1)) || (is_array($operand2))) {
- $result = array();
- if ((is_array($operand1)) && (!is_array($operand2))) {
- foreach($operand1 as $x => $operandData) {
- $this->_writeDebug('Evaluating Comparison '.$this->_showValue($operandData).' '.$operation.' '.$this->_showValue($operand2));
- $this->_executeBinaryComparisonOperation($cellID,$operandData,$operand2,$operation,$stack);
- $r = $stack->pop();
- $result[$x] = $r['value'];
- }
- } elseif ((!is_array($operand1)) && (is_array($operand2))) {
- foreach($operand2 as $x => $operandData) {
- $this->_writeDebug('Evaluating Comparison '.$this->_showValue($operand1).' '.$operation.' '.$this->_showValue($operandData));
- $this->_executeBinaryComparisonOperation($cellID,$operand1,$operandData,$operation,$stack);
- $r = $stack->pop();
- $result[$x] = $r['value'];
- }
- } else {
- if (!$recursingArrays) { self::_checkMatrixOperands($operand1,$operand2,2); }
- foreach($operand1 as $x => $operandData) {
- $this->_writeDebug('Evaluating Comparison '.$this->_showValue($operandData).' '.$operation.' '.$this->_showValue($operand2[$x]));
- $this->_executeBinaryComparisonOperation($cellID,$operandData,$operand2[$x],$operation,$stack,true);
- $r = $stack->pop();
- $result[$x] = $r['value'];
- }
- }
- // Log the result details
- $this->_writeDebug('Comparison Evaluation Result is '.$this->_showTypeDetails($result));
- // And push the result onto the stack
- $stack->push('Array',$result);
- return true;
- }
-
- // Simple validate the two operands if they are string values
- if (is_string($operand1) && $operand1 > '' && $operand1{0} == '"') { $operand1 = self::_unwrapResult($operand1); }
- if (is_string($operand2) && $operand2 > '' && $operand2{0} == '"') { $operand2 = self::_unwrapResult($operand2); }
-
- // execute the necessary operation
- switch ($operation) {
- // Greater than
- case '>':
- $result = ($operand1 > $operand2);
- break;
- // Less than
- case '<':
- $result = ($operand1 < $operand2);
- break;
- // Equality
- case '=':
- $result = ($operand1 == $operand2);
- break;
- // Greater than or equal
- case '>=':
- $result = ($operand1 >= $operand2);
- break;
- // Less than or equal
- case '<=':
- $result = ($operand1 <= $operand2);
- break;
- // Inequality
- case '<>':
- $result = ($operand1 != $operand2);
- break;
- }
-
- // Log the result details
- $this->_writeDebug('Evaluation Result is '.$this->_showTypeDetails($result));
- // And push the result onto the stack
- $stack->push('Value',$result);
- return true;
- } // function _executeBinaryComparisonOperation()
-
-
- private function _executeNumericBinaryOperation($cellID,$operand1,$operand2,$operation,$matrixFunction,&$stack) {
- // Validate the two operands
- if (!$this->_validateBinaryOperand($cellID,$operand1,$stack)) return false;
- if (!$this->_validateBinaryOperand($cellID,$operand2,$stack)) return false;
-
- $executeMatrixOperation = false;
- // If either of the operands is a matrix, we need to treat them both as matrices
- // (converting the other operand to a matrix if need be); then perform the required
- // matrix operation
- if ((is_array($operand1)) || (is_array($operand2))) {
- // Ensure that both operands are arrays/matrices
- $executeMatrixOperation = true;
- $mSize = array();
- list($mSize[],$mSize[],$mSize[],$mSize[]) = self::_checkMatrixOperands($operand1,$operand2,2);
-
- // But if they're both single cell matrices, then we can treat them as simple values
- if (array_sum($mSize) == 4) {
- $executeMatrixOperation = false;
- $operand1 = $operand1[0][0];
- $operand2 = $operand2[0][0];
- }
- }
-
- if ($executeMatrixOperation) {
- try {
- // Convert operand 1 from a PHP array to a matrix
- $matrix = new PHPExcel_Shared_JAMA_Matrix($operand1);
- // Perform the required operation against the operand 1 matrix, passing in operand 2
- $matrixResult = $matrix->$matrixFunction($operand2);
- $result = $matrixResult->getArray();
- } catch (Exception $ex) {
- $this->_writeDebug('JAMA Matrix Exception: '.$ex->getMessage());
- $result = '#VALUE!';
- }
- } else {
- if ((PHPExcel_Calculation_Functions::getCompatibilityMode() != PHPExcel_Calculation_Functions::COMPATIBILITY_OPENOFFICE) &&
- ((is_string($operand1) && !is_numeric($operand1)) || (is_string($operand2) && !is_numeric($operand2)))) {
- $result = PHPExcel_Calculation_Functions::VALUE();
- } else {
- // If we're dealing with non-matrix operations, execute the necessary operation
- switch ($operation) {
- // Addition
- case '+':
- $result = $operand1+$operand2;
- break;
- // Subtraction
- case '-':
- $result = $operand1-$operand2;
- break;
- // Multiplication
- case '*':
- $result = $operand1*$operand2;
- break;
- // Division
- case '/':
- if ($operand2 == 0) {
- // Trap for Divide by Zero error
- $stack->push('Value','#DIV/0!');
- $this->_writeDebug('Evaluation Result is '.$this->_showTypeDetails('#DIV/0!'));
- return false;
- } else {
- $result = $operand1/$operand2;
- }
- break;
- // Power
- case '^':
- $result = pow($operand1,$operand2);
- break;
- }
- }
- }
-
- // Log the result details
- $this->_writeDebug('Evaluation Result is '.$this->_showTypeDetails($result));
- // And push the result onto the stack
- $stack->push('Value',$result);
- return true;
- } // function _executeNumericBinaryOperation()
-
-
- private function _writeDebug($message) {
- // Only write the debug log if logging is enabled
- if ($this->writeDebugLog) {
- if ($this->echoDebugLog) {
- echo implode(' -> ',$this->debugLogStack).' -> '.$message,'<br />';
- }
- $this->debugLog[] = implode(' -> ',$this->debugLogStack).' -> '.$message;
- }
- } // function _writeDebug()
-
-
- // trigger an error, but nicely, if need be
- protected function _raiseFormulaError($errorMessage) {
- $this->formulaError = $errorMessage;
- $this->debugLogStack = array();
- if (!$this->suppressFormulaErrors) throw new Exception($errorMessage);
- trigger_error($errorMessage, E_USER_ERROR);
- } // function _raiseFormulaError()
-
-
- /**
- * Extract range values
- *
- * @param string &$pRange String based range representation
- * @param PHPExcel_Worksheet $pSheet Worksheet
- * @return mixed Array of values in range if range contains more than one element. Otherwise, a single value is returned.
- * @throws Exception
- */
- public function extractCellRange(&$pRange = 'A1', PHPExcel_Worksheet $pSheet = null, $resetLog=true) {
- // Return value
- $returnValue = array ();
-
-// echo 'extractCellRange('.$pRange.')<br />';
- if ($pSheet !== NULL) {
-// echo 'Passed sheet name is '.$pSheet->getTitle().'<br />';
-// echo 'Range reference is '.$pRange.'<br />';
- if (strpos ($pRange, '!') !== false) {
-// echo '$pRange reference includes sheet reference<br />';
- $worksheetReference = PHPExcel_Worksheet::extractSheetTitle($pRange, true);
- $pSheet = $pSheet->getParent()->getSheetByName($worksheetReference[0]);
-// echo 'New sheet name is '.$pSheet->getTitle().'<br />';
- $pRange = $worksheetReference[1];
-// echo 'Adjusted Range reference is '.$pRange.'<br />';
- }
-
- // Extract range
- $aReferences = PHPExcel_Cell::extractAllCellReferencesInRange($pRange);
- $pRange = $pSheet->getTitle().'!'.$pRange;
- if (!isset($aReferences[1])) {
- // Single cell in range
- list($currentCol,$currentRow) = sscanf($aReferences[0],'%[A-Z]%d');
- if ($pSheet->cellExists($aReferences[0])) {
- $returnValue[$currentRow][$currentCol] = $pSheet->getCell($aReferences[0])->getCalculatedValue($resetLog);
- } else {
- $returnValue[$currentRow][$currentCol] = null;
- }
- } else {
- // Extract cell data for all cells in the range
- foreach ($aReferences as $reference) {
- // Extract range
- list($currentCol,$currentRow) = sscanf($reference,'%[A-Z]%d');
-
- if ($pSheet->cellExists($reference)) {
- $returnValue[$currentRow][$currentCol] = $pSheet->getCell($reference)->getCalculatedValue($resetLog);
- } else {
- $returnValue[$currentRow][$currentCol] = null;
- }
- }
- }
- }
-
- // Return
- return $returnValue;
- } // function extractCellRange()
-
-
- /**
- * Extract range values
- *
- * @param string &$pRange String based range representation
- * @param PHPExcel_Worksheet $pSheet Worksheet
- * @return mixed Array of values in range if range contains more than one element. Otherwise, a single value is returned.
- * @throws Exception
- */
- public function extractNamedRange(&$pRange = 'A1', PHPExcel_Worksheet $pSheet = null, $resetLog=true) {
- // Return value
- $returnValue = array ();
-
-// echo 'extractNamedRange('.$pRange.')<br />';
- if ($pSheet !== NULL) {
-// echo 'Current sheet name is '.$pSheet->getTitle().'<br />';
-// echo 'Range reference is '.$pRange.'<br />';
- if (strpos ($pRange, '!') !== false) {
-// echo '$pRange reference includes sheet reference<br />';
- $worksheetReference = PHPExcel_Worksheet::extractSheetTitle($pRange, true);
- $pSheet = $pSheet->getParent()->getSheetByName($worksheetReference[0]);
-// echo 'New sheet name is '.$pSheet->getTitle().'<br />';
- $pRange = $worksheetReference[1];
-// echo 'Adjusted Range reference is '.$pRange.'<br />';
- }
-
- // Named range?
- $namedRange = PHPExcel_NamedRange::resolveRange($pRange, $pSheet);
- if ($namedRange !== NULL) {
- $pSheet = $namedRange->getWorksheet();
-// echo 'Named Range '.$pRange.' (';
- $pRange = $namedRange->getRange();
- $splitRange = PHPExcel_Cell::splitRange($pRange);
- // Convert row and column references
- if (ctype_alpha($splitRange[0][0])) {
- $pRange = $splitRange[0][0] . '1:' . $splitRange[0][1] . $namedRange->getWorksheet()->getHighestRow();
- } elseif(ctype_digit($splitRange[0][0])) {
- $pRange = 'A' . $splitRange[0][0] . ':' . $namedRange->getWorksheet()->getHighestColumn() . $splitRange[0][1];
- }
-// echo $pRange.') is in sheet '.$namedRange->getWorksheet()->getTitle().'<br />';
-
-// if ($pSheet->getTitle() != $namedRange->getWorksheet()->getTitle()) {
-// if (!$namedRange->getLocalOnly()) {
-// $pSheet = $namedRange->getWorksheet();
-// } else {
-// return $returnValue;
-// }
-// }
- } else {
- return PHPExcel_Calculation_Functions::REF();
- }
-
- // Extract range
- $aReferences = PHPExcel_Cell::extractAllCellReferencesInRange($pRange);
-// var_dump($aReferences);
- if (!isset($aReferences[1])) {
- // Single cell (or single column or row) in range
- list($currentCol,$currentRow) = PHPExcel_Cell::coordinateFromString($aReferences[0]);
- if ($pSheet->cellExists($aReferences[0])) {
- $returnValue[$currentRow][$currentCol] = $pSheet->getCell($aReferences[0])->getCalculatedValue($resetLog);
- } else {
- $returnValue[$currentRow][$currentCol] = null;
- }
- } else {
- // Extract cell data for all cells in the range
- foreach ($aReferences as $reference) {
- // Extract range
- list($currentCol,$currentRow) = PHPExcel_Cell::coordinateFromString($reference);
-// echo 'NAMED RANGE: $currentCol='.$currentCol.' $currentRow='.$currentRow.'<br />';
- if ($pSheet->cellExists($reference)) {
- $returnValue[$currentRow][$currentCol] = $pSheet->getCell($reference)->getCalculatedValue($resetLog);
- } else {
- $returnValue[$currentRow][$currentCol] = null;
- }
- }
- }
-// print_r($returnValue);
-// echo '<br />';
- }
-
- // Return
- return $returnValue;
- } // function extractNamedRange()
-
-
- /**
- * Is a specific function implemented?
- *
- * @param string $pFunction Function Name
- * @return boolean
- */
- public function isImplemented($pFunction = '') {
- $pFunction = strtoupper ($pFunction);
- if (isset(self::$_PHPExcelFunctions[$pFunction])) {
- return (self::$_PHPExcelFunctions[$pFunction]['functionCall'] != 'PHPExcel_Calculation_Functions::DUMMY');
- } else {
- return false;
- }
- } // function isImplemented()
-
-
- /**
- * Get a list of all implemented functions as an array of function objects
- *
- * @return array of PHPExcel_Calculation_Function
- */
- public function listFunctions() {
- // Return value
- $returnValue = array();
- // Loop functions
- foreach(self::$_PHPExcelFunctions as $functionName => $function) {
- if ($function['functionCall'] != 'PHPExcel_Calculation_Functions::DUMMY') {
- $returnValue[$functionName] = new PHPExcel_Calculation_Function($function['category'],
- $functionName,
- $function['functionCall']
- );
- }
- }
-
- // Return
- return $returnValue;
- } // function listFunctions()
-
-
- /**
- * Get a list of all Excel function names
- *
- * @return array
- */
- public function listAllFunctionNames() {
- return array_keys(self::$_PHPExcelFunctions);
- } // function listAllFunctionNames()
-
- /**
- * Get a list of implemented Excel function names
- *
- * @return array
- */
- public function listFunctionNames() {
- // Return value
- $returnValue = array();
- // Loop functions
- foreach(self::$_PHPExcelFunctions as $functionName => $function) {
- if ($function['functionCall'] != 'PHPExcel_Calculation_Functions::DUMMY') {
- $returnValue[] = $functionName;
- }
- }
-
- // Return
- return $returnValue;
- } // function listFunctionNames()
-
-} // class PHPExcel_Calculation
-
diff --git a/admin/survey/excel/PHPExcel/Calculation/Database.php b/admin/survey/excel/PHPExcel/Calculation/Database.php
deleted file mode 100644
index 8159896..0000000
--- a/admin/survey/excel/PHPExcel/Calculation/Database.php
+++ /dev/null
@@ -1,725 +0,0 @@
-<?php
-/**
- * PHPExcel
- *
- * Copyright (c) 2006 - 2012 PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel_Calculation
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-
-/** PHPExcel root directory */
-if (!defined('PHPEXCEL_ROOT')) {
- /**
- * @ignore
- */
- define('PHPEXCEL_ROOT', dirname(__FILE__) . '/../../');
- require(PHPEXCEL_ROOT . 'PHPExcel/Autoloader.php');
-}
-
-
-/**
- * PHPExcel_Calculation_Database
- *
- * @category PHPExcel
- * @package PHPExcel_Calculation
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- */
-class PHPExcel_Calculation_Database {
-
-
- /**
- * __fieldExtract
- *
- * Extracts the column ID to use for the data field.
- *
- * @access private
- * @param mixed[] $database The range of cells that makes up the list or database.
- * A database is a list of related data in which rows of related
- * information are records, and columns of data are fields. The
- * first row of the list contains labels for each column.
- * @param mixed $field Indicates which column is used in the function. Enter the
- * column label enclosed between double quotation marks, such as
- * "Age" or "Yield," or a number (without quotation marks) that
- * represents the position of the column within the list: 1 for
- * the first column, 2 for the second column, and so on.
- * @return string|NULL
- *
- */
- private static function __fieldExtract($database,$field) {
- $field = strtoupper(PHPExcel_Calculation_Functions::flattenSingleValue($field));
- $fieldNames = array_map('strtoupper',array_shift($database));
-
- if (is_numeric($field)) {
- $keys = array_keys($fieldNames);
- return $keys[$field-1];
- }
- $key = array_search($field,$fieldNames);
- return ($key) ? $key : NULL;
- }
-
- /**
- * __filter
- *
- * Parses the selection criteria, extracts the database rows that match those criteria, and
- * returns that subset of rows.
- *
- * @access private
- * @param mixed[] $database The range of cells that makes up the list or database.
- * A database is a list of related data in which rows of related
- * information are records, and columns of data are fields. The
- * first row of the list contains labels for each column.
- * @param mixed[] $criteria The range of cells that contains the conditions you specify.
- * You can use any range for the criteria argument, as long as it
- * includes at least one column label and at least one cell below
- * the column label in which you specify a condition for the
- * column.
- * @return array of mixed
- *
- */
- private static function __filter($database,$criteria) {
- $fieldNames = array_shift($database);
- $criteriaNames = array_shift($criteria);
-
- // Convert the criteria into a set of AND/OR conditions with [:placeholders]
- $testConditions = $testValues = array();
- $testConditionsCount = 0;
- foreach($criteriaNames as $key => $criteriaName) {
- $testCondition = array();
- $testConditionCount = 0;
- foreach($criteria as $row => $criterion) {
- if ($criterion[$key] > '') {
- $testCondition[] = '[:'.$criteriaName.']'.PHPExcel_Calculation_Functions::_ifCondition($criterion[$key]);
- $testConditionCount++;
- }
- }
- if ($testConditionCount > 1) {
- $testConditions[] = 'OR('.implode(',',$testCondition).')';
- $testConditionsCount++;
- } elseif($testConditionCount == 1) {
- $testConditions[] = $testCondition[0];
- $testConditionsCount++;
- }
- }
-
- if ($testConditionsCount > 1) {
- $testConditionSet = 'AND('.implode(',',$testConditions).')';
- } elseif($testConditionsCount == 1) {
- $testConditionSet = $testConditions[0];
- }
-
- // Loop through each row of the database
- foreach($database as $dataRow => $dataValues) {
- // Substitute actual values from the database row for our [:placeholders]
- $testConditionList = $testConditionSet;
- foreach($criteriaNames as $key => $criteriaName) {
- $k = array_search($criteriaName,$fieldNames);
- if (isset($dataValues[$k])) {
- $dataValue = $dataValues[$k];
- $dataValue = (is_string($dataValue)) ? PHPExcel_Calculation::_wrapResult(strtoupper($dataValue)) : $dataValue;
- $testConditionList = str_replace('[:'.$criteriaName.']',$dataValue,$testConditionList);
- }
- }
- // evaluate the criteria against the row data
- $result = PHPExcel_Calculation::getInstance()->_calculateFormulaValue('='.$testConditionList);
- // If the row failed to meet the criteria, remove it from the database
- if (!$result) {
- unset($database[$dataRow]);
- }
- }
-
- return $database;
- }
-
-
- /**
- * DAVERAGE
- *
- * Averages the values in a column of a list or database that match conditions you specify.
- *
- * Excel Function:
- * DAVERAGE(database,field,criteria)
- *
- * @access public
- * @category Database Functions
- * @param mixed[] $database The range of cells that makes up the list or database.
- * A database is a list of related data in which rows of related
- * information are records, and columns of data are fields. The
- * first row of the list contains labels for each column.
- * @param string|integer $field Indicates which column is used in the function. Enter the
- * column label enclosed between double quotation marks, such as
- * "Age" or "Yield," or a number (without quotation marks) that
- * represents the position of the column within the list: 1 for
- * the first column, 2 for the second column, and so on.
- * @param mixed[] $criteria The range of cells that contains the conditions you specify.
- * You can use any range for the criteria argument, as long as it
- * includes at least one column label and at least one cell below
- * the column label in which you specify a condition for the
- * column.
- * @return float
- *
- */
- public static function DAVERAGE($database,$field,$criteria) {
- $field = self::__fieldExtract($database,$field);
- if (is_null($field)) {
- return NULL;
- }
- // reduce the database to a set of rows that match all the criteria
- $database = self::__filter($database,$criteria);
- // extract an array of values for the requested column
- $colData = array();
- foreach($database as $row) {
- $colData[] = $row[$field];
- }
-
- // Return
- return PHPExcel_Calculation_Statistical::AVERAGE($colData);
- } // function DAVERAGE()
-
-
- /**
- * DCOUNT
- *
- * Counts the cells that contain numbers in a column of a list or database that match conditions
- * that you specify.
- *
- * Excel Function:
- * DCOUNT(database,[field],criteria)
- *
- * Excel Function:
- * DAVERAGE(database,field,criteria)
- *
- * @access public
- * @category Database Functions
- * @param mixed[] $database The range of cells that makes up the list or database.
- * A database is a list of related data in which rows of related
- * information are records, and columns of data are fields. The
- * first row of the list contains labels for each column.
- * @param string|integer $field Indicates which column is used in the function. Enter the
- * column label enclosed between double quotation marks, such as
- * "Age" or "Yield," or a number (without quotation marks) that
- * represents the position of the column within the list: 1 for
- * the first column, 2 for the second column, and so on.
- * @param mixed[] $criteria The range of cells that contains the conditions you specify.
- * You can use any range for the criteria argument, as long as it
- * includes at least one column label and at least one cell below
- * the column label in which you specify a condition for the
- * column.
- * @return integer
- *
- * @TODO The field argument is optional. If field is omitted, DCOUNT counts all records in the
- * database that match the criteria.
- *
- */
- public static function DCOUNT($database,$field,$criteria) {
- $field = self::__fieldExtract($database,$field);
- if (is_null($field)) {
- return NULL;
- }
-
- // reduce the database to a set of rows that match all the criteria
- $database = self::__filter($database,$criteria);
- // extract an array of values for the requested column
- $colData = array();
- foreach($database as $row) {
- $colData[] = $row[$field];
- }
-
- // Return
- return PHPExcel_Calculation_Statistical::COUNT($colData);
- } // function DCOUNT()
-
-
- /**
- * DCOUNTA
- *
- * Counts the nonblank cells in a column of a list or database that match conditions that you specify.
- *
- * Excel Function:
- * DCOUNTA(database,[field],criteria)
- *
- * @access public
- * @category Database Functions
- * @param mixed[] $database The range of cells that makes up the list or database.
- * A database is a list of related data in which rows of related
- * information are records, and columns of data are fields. The
- * first row of the list contains labels for each column.
- * @param string|integer $field Indicates which column is used in the function. Enter the
- * column label enclosed between double quotation marks, such as
- * "Age" or "Yield," or a number (without quotation marks) that
- * represents the position of the column within the list: 1 for
- * the first column, 2 for the second column, and so on.
- * @param mixed[] $criteria The range of cells that contains the conditions you specify.
- * You can use any range for the criteria argument, as long as it
- * includes at least one column label and at least one cell below
- * the column label in which you specify a condition for the
- * column.
- * @return integer
- *
- * @TODO The field argument is optional. If field is omitted, DCOUNTA counts all records in the
- * database that match the criteria.
- *
- */
- public static function DCOUNTA($database,$field,$criteria) {
- $field = self::__fieldExtract($database,$field);
- if (is_null($field)) {
- return NULL;
- }
-
- // reduce the database to a set of rows that match all the criteria
- $database = self::__filter($database,$criteria);
- // extract an array of values for the requested column
- $colData = array();
- foreach($database as $row) {
- $colData[] = $row[$field];
- }
-
- // Return
- return PHPExcel_Calculation_Statistical::COUNTA($colData);
- } // function DCOUNTA()
-
-
- /**
- * DGET
- *
- * Extracts a single value from a column of a list or database that matches conditions that you
- * specify.
- *
- * Excel Function:
- * DGET(database,field,criteria)
- *
- * @access public
- * @category Database Functions
- * @param mixed[] $database The range of cells that makes up the list or database.
- * A database is a list of related data in which rows of related
- * information are records, and columns of data are fields. The
- * first row of the list contains labels for each column.
- * @param string|integer $field Indicates which column is used in the function. Enter the
- * column label enclosed between double quotation marks, such as
- * "Age" or "Yield," or a number (without quotation marks) that
- * represents the position of the column within the list: 1 for
- * the first column, 2 for the second column, and so on.
- * @param mixed[] $criteria The range of cells that contains the conditions you specify.
- * You can use any range for the criteria argument, as long as it
- * includes at least one column label and at least one cell below
- * the column label in which you specify a condition for the
- * column.
- * @return mixed
- *
- */
- public static function DGET($database,$field,$criteria) {
- $field = self::__fieldExtract($database,$field);
- if (is_null($field)) {
- return NULL;
- }
-
- // reduce the database to a set of rows that match all the criteria
- $database = self::__filter($database,$criteria);
- // extract an array of values for the requested column
- $colData = array();
- foreach($database as $row) {
- $colData[] = $row[$field];
- }
-
- // Return
- if (count($colData) > 1) {
- return PHPExcel_Calculation_Functions::NaN();
- }
-
- return $colData[0];
- } // function DGET()
-
-
- /**
- * DMAX
- *
- * Returns the largest number in a column of a list or database that matches conditions you that
- * specify.
- *
- * Excel Function:
- * DMAX(database,field,criteria)
- *
- * @access public
- * @category Database Functions
- * @param mixed[] $database The range of cells that makes up the list or database.
- * A database is a list of related data in which rows of related
- * information are records, and columns of data are fields. The
- * first row of the list contains labels for each column.
- * @param string|integer $field Indicates which column is used in the function. Enter the
- * column label enclosed between double quotation marks, such as
- * "Age" or "Yield," or a number (without quotation marks) that
- * represents the position of the column within the list: 1 for
- * the first column, 2 for the second column, and so on.
- * @param mixed[] $criteria The range of cells that contains the conditions you specify.
- * You can use any range for the criteria argument, as long as it
- * includes at least one column label and at least one cell below
- * the column label in which you specify a condition for the
- * column.
- * @return float
- *
- */
- public static function DMAX($database,$field,$criteria) {
- $field = self::__fieldExtract($database,$field);
- if (is_null($field)) {
- return NULL;
- }
-
- // reduce the database to a set of rows that match all the criteria
- $database = self::__filter($database,$criteria);
- // extract an array of values for the requested column
- $colData = array();
- foreach($database as $row) {
- $colData[] = $row[$field];
- }
-
- // Return
- return PHPExcel_Calculation_Statistical::MAX($colData);
- } // function DMAX()
-
-
- /**
- * DMIN
- *
- * Returns the smallest number in a column of a list or database that matches conditions you that
- * specify.
- *
- * Excel Function:
- * DMIN(database,field,criteria)
- *
- * @access public
- * @category Database Functions
- * @param mixed[] $database The range of cells that makes up the list or database.
- * A database is a list of related data in which rows of related
- * information are records, and columns of data are fields. The
- * first row of the list contains labels for each column.
- * @param string|integer $field Indicates which column is used in the function. Enter the
- * column label enclosed between double quotation marks, such as
- * "Age" or "Yield," or a number (without quotation marks) that
- * represents the position of the column within the list: 1 for
- * the first column, 2 for the second column, and so on.
- * @param mixed[] $criteria The range of cells that contains the conditions you specify.
- * You can use any range for the criteria argument, as long as it
- * includes at least one column label and at least one cell below
- * the column label in which you specify a condition for the
- * column.
- * @return float
- *
- */
- public static function DMIN($database,$field,$criteria) {
- $field = self::__fieldExtract($database,$field);
- if (is_null($field)) {
- return NULL;
- }
-
- // reduce the database to a set of rows that match all the criteria
- $database = self::__filter($database,$criteria);
- // extract an array of values for the requested column
- $colData = array();
- foreach($database as $row) {
- $colData[] = $row[$field];
- }
-
- // Return
- return PHPExcel_Calculation_Statistical::MIN($colData);
- } // function DMIN()
-
-
- /**
- * DPRODUCT
- *
- * Multiplies the values in a column of a list or database that match conditions that you specify.
- *
- * Excel Function:
- * DPRODUCT(database,field,criteria)
- *
- * @access public
- * @category Database Functions
- * @param mixed[] $database The range of cells that makes up the list or database.
- * A database is a list of related data in which rows of related
- * information are records, and columns of data are fields. The
- * first row of the list contains labels for each column.
- * @param string|integer $field Indicates which column is used in the function. Enter the
- * column label enclosed between double quotation marks, such as
- * "Age" or "Yield," or a number (without quotation marks) that
- * represents the position of the column within the list: 1 for
- * the first column, 2 for the second column, and so on.
- * @param mixed[] $criteria The range of cells that contains the conditions you specify.
- * You can use any range for the criteria argument, as long as it
- * includes at least one column label and at least one cell below
- * the column label in which you specify a condition for the
- * column.
- * @return float
- *
- */
- public static function DPRODUCT($database,$field,$criteria) {
- $field = self::__fieldExtract($database,$field);
- if (is_null($field)) {
- return NULL;
- }
-
- // reduce the database to a set of rows that match all the criteria
- $database = self::__filter($database,$criteria);
- // extract an array of values for the requested column
- $colData = array();
- foreach($database as $row) {
- $colData[] = $row[$field];
- }
-
- // Return
- return PHPExcel_Calculation_MathTrig::PRODUCT($colData);
- } // function DPRODUCT()
-
-
- /**
- * DSTDEV
- *
- * Estimates the standard deviation of a population based on a sample by using the numbers in a
- * column of a list or database that match conditions that you specify.
- *
- * Excel Function:
- * DSTDEV(database,field,criteria)
- *
- * @access public
- * @category Database Functions
- * @param mixed[] $database The range of cells that makes up the list or database.
- * A database is a list of related data in which rows of related
- * information are records, and columns of data are fields. The
- * first row of the list contains labels for each column.
- * @param string|integer $field Indicates which column is used in the function. Enter the
- * column label enclosed between double quotation marks, such as
- * "Age" or "Yield," or a number (without quotation marks) that
- * represents the position of the column within the list: 1 for
- * the first column, 2 for the second column, and so on.
- * @param mixed[] $criteria The range of cells that contains the conditions you specify.
- * You can use any range for the criteria argument, as long as it
- * includes at least one column label and at least one cell below
- * the column label in which you specify a condition for the
- * column.
- * @return float
- *
- */
- public static function DSTDEV($database,$field,$criteria) {
- $field = self::__fieldExtract($database,$field);
- if (is_null($field)) {
- return NULL;
- }
-
- // reduce the database to a set of rows that match all the criteria
- $database = self::__filter($database,$criteria);
- // extract an array of values for the requested column
- $colData = array();
- foreach($database as $row) {
- $colData[] = $row[$field];
- }
-
- // Return
- return PHPExcel_Calculation_Statistical::STDEV($colData);
- } // function DSTDEV()
-
-
- /**
- * DSTDEVP
- *
- * Calculates the standard deviation of a population based on the entire population by using the
- * numbers in a column of a list or database that match conditions that you specify.
- *
- * Excel Function:
- * DSTDEVP(database,field,criteria)
- *
- * @access public
- * @category Database Functions
- * @param mixed[] $database The range of cells that makes up the list or database.
- * A database is a list of related data in which rows of related
- * information are records, and columns of data are fields. The
- * first row of the list contains labels for each column.
- * @param string|integer $field Indicates which column is used in the function. Enter the
- * column label enclosed between double quotation marks, such as
- * "Age" or "Yield," or a number (without quotation marks) that
- * represents the position of the column within the list: 1 for
- * the first column, 2 for the second column, and so on.
- * @param mixed[] $criteria The range of cells that contains the conditions you specify.
- * You can use any range for the criteria argument, as long as it
- * includes at least one column label and at least one cell below
- * the column label in which you specify a condition for the
- * column.
- * @return float
- *
- */
- public static function DSTDEVP($database,$field,$criteria) {
- $field = self::__fieldExtract($database,$field);
- if (is_null($field)) {
- return NULL;
- }
-
- // reduce the database to a set of rows that match all the criteria
- $database = self::__filter($database,$criteria);
- // extract an array of values for the requested column
- $colData = array();
- foreach($database as $row) {
- $colData[] = $row[$field];
- }
-
- // Return
- return PHPExcel_Calculation_Statistical::STDEVP($colData);
- } // function DSTDEVP()
-
-
- /**
- * DSUM
- *
- * Adds the numbers in a column of a list or database that match conditions that you specify.
- *
- * Excel Function:
- * DSUM(database,field,criteria)
- *
- * @access public
- * @category Database Functions
- * @param mixed[] $database The range of cells that makes up the list or database.
- * A database is a list of related data in which rows of related
- * information are records, and columns of data are fields. The
- * first row of the list contains labels for each column.
- * @param string|integer $field Indicates which column is used in the function. Enter the
- * column label enclosed between double quotation marks, such as
- * "Age" or "Yield," or a number (without quotation marks) that
- * represents the position of the column within the list: 1 for
- * the first column, 2 for the second column, and so on.
- * @param mixed[] $criteria The range of cells that contains the conditions you specify.
- * You can use any range for the criteria argument, as long as it
- * includes at least one column label and at least one cell below
- * the column label in which you specify a condition for the
- * column.
- * @return float
- *
- */
- public static function DSUM($database,$field,$criteria) {
- $field = self::__fieldExtract($database,$field);
- if (is_null($field)) {
- return NULL;
- }
-
- // reduce the database to a set of rows that match all the criteria
- $database = self::__filter($database,$criteria);
- // extract an array of values for the requested column
- $colData = array();
- foreach($database as $row) {
- $colData[] = $row[$field];
- }
-
- // Return
- return PHPExcel_Calculation_MathTrig::SUM($colData);
- } // function DSUM()
-
-
- /**
- * DVAR
- *
- * Estimates the variance of a population based on a sample by using the numbers in a column
- * of a list or database that match conditions that you specify.
- *
- * Excel Function:
- * DVAR(database,field,criteria)
- *
- * @access public
- * @category Database Functions
- * @param mixed[] $database The range of cells that makes up the list or database.
- * A database is a list of related data in which rows of related
- * information are records, and columns of data are fields. The
- * first row of the list contains labels for each column.
- * @param string|integer $field Indicates which column is used in the function. Enter the
- * column label enclosed between double quotation marks, such as
- * "Age" or "Yield," or a number (without quotation marks) that
- * represents the position of the column within the list: 1 for
- * the first column, 2 for the second column, and so on.
- * @param mixed[] $criteria The range of cells that contains the conditions you specify.
- * You can use any range for the criteria argument, as long as it
- * includes at least one column label and at least one cell below
- * the column label in which you specify a condition for the
- * column.
- * @return float
- *
- */
- public static function DVAR($database,$field,$criteria) {
- $field = self::__fieldExtract($database,$field);
- if (is_null($field)) {
- return NULL;
- }
-
- // reduce the database to a set of rows that match all the criteria
- $database = self::__filter($database,$criteria);
- // extract an array of values for the requested column
- $colData = array();
- foreach($database as $row) {
- $colData[] = $row[$field];
- }
-
- // Return
- return PHPExcel_Calculation_Statistical::VARFunc($colData);
- } // function DVAR()
-
-
- /**
- * DVARP
- *
- * Calculates the variance of a population based on the entire population by using the numbers
- * in a column of a list or database that match conditions that you specify.
- *
- * Excel Function:
- * DVARP(database,field,criteria)
- *
- * @access public
- * @category Database Functions
- * @param mixed[] $database The range of cells that makes up the list or database.
- * A database is a list of related data in which rows of related
- * information are records, and columns of data are fields. The
- * first row of the list contains labels for each column.
- * @param string|integer $field Indicates which column is used in the function. Enter the
- * column label enclosed between double quotation marks, such as
- * "Age" or "Yield," or a number (without quotation marks) that
- * represents the position of the column within the list: 1 for
- * the first column, 2 for the second column, and so on.
- * @param mixed[] $criteria The range of cells that contains the conditions you specify.
- * You can use any range for the criteria argument, as long as it
- * includes at least one column label and at least one cell below
- * the column label in which you specify a condition for the
- * column.
- * @return float
- *
- */
- public static function DVARP($database,$field,$criteria) {
- $field = self::__fieldExtract($database,$field);
- if (is_null($field)) {
- return NULL;
- }
-
- // reduce the database to a set of rows that match all the criteria
- $database = self::__filter($database,$criteria);
- // extract an array of values for the requested column
- $colData = array();
- foreach($database as $row) {
- $colData[] = $row[$field];
- }
-
- // Return
- return PHPExcel_Calculation_Statistical::VARP($colData);
- } // function DVARP()
-
-
-} // class PHPExcel_Calculation_Database
diff --git a/admin/survey/excel/PHPExcel/Calculation/DateTime.php b/admin/survey/excel/PHPExcel/Calculation/DateTime.php
deleted file mode 100644
index d6e50cc..0000000
--- a/admin/survey/excel/PHPExcel/Calculation/DateTime.php
+++ /dev/null
@@ -1,1447 +0,0 @@
-<?php
-/**
- * PHPExcel
- *
- * Copyright (c) 2006 - 2012 PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel_Calculation
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-
-/** PHPExcel root directory */
-if (!defined('PHPEXCEL_ROOT')) {
- /**
- * @ignore
- */
- define('PHPEXCEL_ROOT', dirname(__FILE__) . '/../../');
- require(PHPEXCEL_ROOT . 'PHPExcel/Autoloader.php');
-}
-
-
-/**
- * PHPExcel_Calculation_DateTime
- *
- * @category PHPExcel
- * @package PHPExcel_Calculation
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- */
-class PHPExcel_Calculation_DateTime {
-
- /**
- * Identify if a year is a leap year or not
- *
- * @param integer $year The year to test
- * @return boolean TRUE if the year is a leap year, otherwise FALSE
- */
- public static function _isLeapYear($year) {
- return ((($year % 4) == 0) && (($year % 100) != 0) || (($year % 400) == 0));
- } // function _isLeapYear()
-
-
- private static function _dateDiff360($startDay, $startMonth, $startYear, $endDay, $endMonth, $endYear, $methodUS) {
- if ($startDay == 31) {
- --$startDay;
- } elseif ($methodUS && ($startMonth == 2 && ($startDay == 29 || ($startDay == 28 && !self::_isLeapYear($startYear))))) {
- $startDay = 30;
- }
- if ($endDay == 31) {
- if ($methodUS && $startDay != 30) {
- $endDay = 1;
- if ($endMonth == 12) {
- ++$endYear;
- $endMonth = 1;
- } else {
- ++$endMonth;
- }
- } else {
- $endDay = 30;
- }
- }
-
- return $endDay + $endMonth * 30 + $endYear * 360 - $startDay - $startMonth * 30 - $startYear * 360;
- } // function _dateDiff360()
-
-
- /**
- * _getDateValue
- *
- * @param string $dateValue
- * @return mixed Excel date/time serial value, or string if error
- */
- public static function _getDateValue($dateValue) {
- if (!is_numeric($dateValue)) {
- if ((is_string($dateValue)) &&
- (PHPExcel_Calculation_Functions::getCompatibilityMode() == PHPExcel_Calculation_Functions::COMPATIBILITY_GNUMERIC)) {
- return PHPExcel_Calculation_Functions::VALUE();
- }
- if ((is_object($dateValue)) && ($dateValue instanceof PHPExcel_Shared_Date::$dateTimeObjectType)) {
- $dateValue = PHPExcel_Shared_Date::PHPToExcel($dateValue);
- } else {
- $saveReturnDateType = PHPExcel_Calculation_Functions::getReturnDateType();
- PHPExcel_Calculation_Functions::setReturnDateType(PHPExcel_Calculation_Functions::RETURNDATE_EXCEL);
- $dateValue = self::DATEVALUE($dateValue);
- PHPExcel_Calculation_Functions::setReturnDateType($saveReturnDateType);
- }
- }
- return $dateValue;
- } // function _getDateValue()
-
-
- /**
- * _getTimeValue
- *
- * @param string $timeValue
- * @return mixed Excel date/time serial value, or string if error
- */
- private static function _getTimeValue($timeValue) {
- $saveReturnDateType = PHPExcel_Calculation_Functions::getReturnDateType();
- PHPExcel_Calculation_Functions::setReturnDateType(PHPExcel_Calculation_Functions::RETURNDATE_EXCEL);
- $timeValue = self::TIMEVALUE($timeValue);
- PHPExcel_Calculation_Functions::setReturnDateType($saveReturnDateType);
- return $timeValue;
- } // function _getTimeValue()
-
-
- private static function _adjustDateByMonths($dateValue = 0, $adjustmentMonths = 0) {
- // Execute function
- $PHPDateObject = PHPExcel_Shared_Date::ExcelToPHPObject($dateValue);
- $oMonth = (int) $PHPDateObject->format('m');
- $oYear = (int) $PHPDateObject->format('Y');
-
- $adjustmentMonthsString = (string) $adjustmentMonths;
- if ($adjustmentMonths > 0) {
- $adjustmentMonthsString = '+'.$adjustmentMonths;
- }
- if ($adjustmentMonths != 0) {
- $PHPDateObject->modify($adjustmentMonthsString.' months');
- }
- $nMonth = (int) $PHPDateObject->format('m');
- $nYear = (int) $PHPDateObject->format('Y');
-
- $monthDiff = ($nMonth - $oMonth) + (($nYear - $oYear) * 12);
- if ($monthDiff != $adjustmentMonths) {
- $adjustDays = (int) $PHPDateObject->format('d');
- $adjustDaysString = '-'.$adjustDays.' days';
- $PHPDateObject->modify($adjustDaysString);
- }
- return $PHPDateObject;
- } // function _adjustDateByMonths()
-
-
- /**
- * DATETIMENOW
- *
- * Returns the current date and time.
- * The NOW function is useful when you need to display the current date and time on a worksheet or
- * calculate a value based on the current date and time, and have that value updated each time you
- * open the worksheet.
- *
- * NOTE: When used in a Cell Formula, MS Excel changes the cell format so that it matches the date
- * and time format of your regional settings. PHPExcel does not change cell formatting in this way.
- *
- * Excel Function:
- * NOW()
- *
- * @access public
- * @category Date/Time Functions
- * @return mixed Excel date/time serial value, PHP date/time serial value or PHP date/time object,
- * depending on the value of the ReturnDateType flag
- */
- public static function DATETIMENOW() {
- $saveTimeZone = date_default_timezone_get();
- date_default_timezone_set('UTC');
- $retValue = False;
- switch (PHPExcel_Calculation_Functions::getReturnDateType()) {
- case PHPExcel_Calculation_Functions::RETURNDATE_EXCEL :
- $retValue = (float) PHPExcel_Shared_Date::PHPToExcel(time());
- break;
- case PHPExcel_Calculation_Functions::RETURNDATE_PHP_NUMERIC :
- $retValue = (integer) time();
- break;
- case PHPExcel_Calculation_Functions::RETURNDATE_PHP_OBJECT :
- $retValue = new DateTime();
- break;
- }
- date_default_timezone_set($saveTimeZone);
-
- return $retValue;
- } // function DATETIMENOW()
-
-
- /**
- * DATENOW
- *
- * Returns the current date.
- * The NOW function is useful when you need to display the current date and time on a worksheet or
- * calculate a value based on the current date and time, and have that value updated each time you
- * open the worksheet.
- *
- * NOTE: When used in a Cell Formula, MS Excel changes the cell format so that it matches the date
- * and time format of your regional settings. PHPExcel does not change cell formatting in this way.
- *
- * Excel Function:
- * TODAY()
- *
- * @access public
- * @category Date/Time Functions
- * @return mixed Excel date/time serial value, PHP date/time serial value or PHP date/time object,
- * depending on the value of the ReturnDateType flag
- */
- public static function DATENOW() {
- $saveTimeZone = date_default_timezone_get();
- date_default_timezone_set('UTC');
- $retValue = False;
- $excelDateTime = floor(PHPExcel_Shared_Date::PHPToExcel(time()));
- switch (PHPExcel_Calculation_Functions::getReturnDateType()) {
- case PHPExcel_Calculation_Functions::RETURNDATE_EXCEL :
- $retValue = (float) $excelDateTime;
- break;
- case PHPExcel_Calculation_Functions::RETURNDATE_PHP_NUMERIC :
- $retValue = (integer) PHPExcel_Shared_Date::ExcelToPHP($excelDateTime);
- break;
- case PHPExcel_Calculation_Functions::RETURNDATE_PHP_OBJECT :
- $retValue = PHPExcel_Shared_Date::ExcelToPHPObject($excelDateTime);
- break;
- }
- date_default_timezone_set($saveTimeZone);
-
- return $retValue;
- } // function DATENOW()
-
-
- /**
- * DATE
- *
- * The DATE function returns a value that represents a particular date.
- *
- * NOTE: When used in a Cell Formula, MS Excel changes the cell format so that it matches the date
- * format of your regional settings. PHPExcel does not change cell formatting in this way.
- *
- * Excel Function:
- * DATE(year,month,day)
- *
- * @access public
- * @category Date/Time Functions
- * @param integer $year The value of the year argument can include one to four digits.
- * Excel interprets the year argument according to the configured
- * date system: 1900 or 1904.
- * If year is between 0 (zero) and 1899 (inclusive), Excel adds that
- * value to 1900 to calculate the year. For example, DATE(108,1,2)
- * returns January 2, 2008 (1900+108).
- * If year is between 1900 and 9999 (inclusive), Excel uses that
- * value as the year. For example, DATE(2008,1,2) returns January 2,
- * 2008.
- * If year is less than 0 or is 10000 or greater, Excel returns the
- * #NUM! error value.
- * @param integer $month A positive or negative integer representing the month of the year
- * from 1 to 12 (January to December).
- * If month is greater than 12, month adds that number of months to
- * the first month in the year specified. For example, DATE(2008,14,2)
- * returns the serial number representing February 2, 2009.
- * If month is less than 1, month subtracts the magnitude of that
- * number of months, plus 1, from the first month in the year
- * specified. For example, DATE(2008,-3,2) returns the serial number
- * representing September 2, 2007.
- * @param integer $day A positive or negative integer representing the day of the month
- * from 1 to 31.
- * If day is greater than the number of days in the month specified,
- * day adds that number of days to the first day in the month. For
- * example, DATE(2008,1,35) returns the serial number representing
- * February 4, 2008.
- * If day is less than 1, day subtracts the magnitude that number of
- * days, plus one, from the first day of the month specified. For
- * example, DATE(2008,1,-15) returns the serial number representing
- * December 16, 2007.
- * @return mixed Excel date/time serial value, PHP date/time serial value or PHP date/time object,
- * depending on the value of the ReturnDateType flag
- */
- public static function DATE($year = 0, $month = 1, $day = 1) {
- $year = PHPExcel_Calculation_Functions::flattenSingleValue($year);
- $month = PHPExcel_Calculation_Functions::flattenSingleValue($month);
- $day = PHPExcel_Calculation_Functions::flattenSingleValue($day);
-
- $year = ($year !== NULL) ? PHPExcel_Shared_String::testStringAsNumeric($year) : 0;
- $month = ($month !== NULL) ? PHPExcel_Shared_String::testStringAsNumeric($month) : 0;
- $day = ($day !== NULL) ? PHPExcel_Shared_String::testStringAsNumeric($day) : 0;
- if ((!is_numeric($year)) ||
- (!is_numeric($month)) ||
- (!is_numeric($day))) {
- return PHPExcel_Calculation_Functions::VALUE();
- }
- $year = (integer) $year;
- $month = (integer) $month;
- $day = (integer) $day;
-
- $baseYear = PHPExcel_Shared_Date::getExcelCalendar();
- // Validate parameters
- if ($year < ($baseYear-1900)) {
- return PHPExcel_Calculation_Functions::NaN();
- }
- if ((($baseYear-1900) != 0) && ($year < $baseYear) && ($year >= 1900)) {
- return PHPExcel_Calculation_Functions::NaN();
- }
-
- if (($year < $baseYear) && ($year >= ($baseYear-1900))) {
- $year += 1900;
- }
-
- if ($month < 1) {
- // Handle year/month adjustment if month < 1
- --$month;
- $year += ceil($month / 12) - 1;
- $month = 13 - abs($month % 12);
- } elseif ($month > 12) {
- // Handle year/month adjustment if month > 12
- $year += floor($month / 12);
- $month = ($month % 12);
- }
-
- // Re-validate the year parameter after adjustments
- if (($year < $baseYear) || ($year >= 10000)) {
- return PHPExcel_Calculation_Functions::NaN();
- }
-
- // Execute function
- $excelDateValue = PHPExcel_Shared_Date::FormattedPHPToExcel($year, $month, $day);
- switch (PHPExcel_Calculation_Functions::getReturnDateType()) {
- case PHPExcel_Calculation_Functions::RETURNDATE_EXCEL :
- return (float) $excelDateValue;
- case PHPExcel_Calculation_Functions::RETURNDATE_PHP_NUMERIC :
- return (integer) PHPExcel_Shared_Date::ExcelToPHP($excelDateValue);
- case PHPExcel_Calculation_Functions::RETURNDATE_PHP_OBJECT :
- return PHPExcel_Shared_Date::ExcelToPHPObject($excelDateValue);
- }
- } // function DATE()
-
-
- /**
- * TIME
- *
- * The TIME function returns a value that represents a particular time.
- *
- * NOTE: When used in a Cell Formula, MS Excel changes the cell format so that it matches the time
- * format of your regional settings. PHPExcel does not change cell formatting in this way.
- *
- * Excel Function:
- * TIME(hour,minute,second)
- *
- * @access public
- * @category Date/Time Functions
- * @param integer $hour A number from 0 (zero) to 32767 representing the hour.
- * Any value greater than 23 will be divided by 24 and the remainder
- * will be treated as the hour value. For example, TIME(27,0,0) =
- * TIME(3,0,0) = .125 or 3:00 AM.
- * @param integer $minute A number from 0 to 32767 representing the minute.
- * Any value greater than 59 will be converted to hours and minutes.
- * For example, TIME(0,750,0) = TIME(12,30,0) = .520833 or 12:30 PM.
- * @param integer $second A number from 0 to 32767 representing the second.
- * Any value greater than 59 will be converted to hours, minutes,
- * and seconds. For example, TIME(0,0,2000) = TIME(0,33,22) = .023148
- * or 12:33:20 AM
- * @return mixed Excel date/time serial value, PHP date/time serial value or PHP date/time object,
- * depending on the value of the ReturnDateType flag
- */
- public static function TIME($hour = 0, $minute = 0, $second = 0) {
- $hour = PHPExcel_Calculation_Functions::flattenSingleValue($hour);
- $minute = PHPExcel_Calculation_Functions::flattenSingleValue($minute);
- $second = PHPExcel_Calculation_Functions::flattenSingleValue($second);
-
- if ($hour == '') { $hour = 0; }
- if ($minute == '') { $minute = 0; }
- if ($second == '') { $second = 0; }
-
- if ((!is_numeric($hour)) || (!is_numeric($minute)) || (!is_numeric($second))) {
- return PHPExcel_Calculation_Functions::VALUE();
- }
- $hour = (integer) $hour;
- $minute = (integer) $minute;
- $second = (integer) $second;
-
- if ($second < 0) {
- $minute += floor($second / 60);
- $second = 60 - abs($second % 60);
- if ($second == 60) { $second = 0; }
- } elseif ($second >= 60) {
- $minute += floor($second / 60);
- $second = $second % 60;
- }
- if ($minute < 0) {
- $hour += floor($minute / 60);
- $minute = 60 - abs($minute % 60);
- if ($minute == 60) { $minute = 0; }
- } elseif ($minute >= 60) {
- $hour += floor($minute / 60);
- $minute = $minute % 60;
- }
-
- if ($hour > 23) {
- $hour = $hour % 24;
- } elseif ($hour < 0) {
- return PHPExcel_Calculation_Functions::NaN();
- }
-
- // Execute function
- switch (PHPExcel_Calculation_Functions::getReturnDateType()) {
- case PHPExcel_Calculation_Functions::RETURNDATE_EXCEL :
- $date = 0;
- $calendar = PHPExcel_Shared_Date::getExcelCalendar();
- if ($calendar != PHPExcel_Shared_Date::CALENDAR_WINDOWS_1900) {
- $date = 1;
- }
- return (float) PHPExcel_Shared_Date::FormattedPHPToExcel($calendar, 1, $date, $hour, $minute, $second);
- case PHPExcel_Calculation_Functions::RETURNDATE_PHP_NUMERIC :
- return (integer) PHPExcel_Shared_Date::ExcelToPHP(PHPExcel_Shared_Date::FormattedPHPToExcel(1970, 1, 1, $hour, $minute, $second)); // -2147468400; // -2147472000 + 3600
- case PHPExcel_Calculation_Functions::RETURNDATE_PHP_OBJECT :
- $dayAdjust = 0;
- if ($hour < 0) {
- $dayAdjust = floor($hour / 24);
- $hour = 24 - abs($hour % 24);
- if ($hour == 24) { $hour = 0; }
- } elseif ($hour >= 24) {
- $dayAdjust = floor($hour / 24);
- $hour = $hour % 24;
- }
- $phpDateObject = new DateTime('1900-01-01 '.$hour.':'.$minute.':'.$second);
- if ($dayAdjust != 0) {
- $phpDateObject->modify($dayAdjust.' days');
- }
- return $phpDateObject;
- }
- } // function TIME()
-
-
- /**
- * DATEVALUE
- *
- * Returns a value that represents a particular date.
- * Use DATEVALUE to convert a date represented by a text string to an Excel or PHP date/time stamp
- * value.
- *
- * NOTE: When used in a Cell Formula, MS Excel changes the cell format so that it matches the date
- * format of your regional settings. PHPExcel does not change cell formatting in this way.
- *
- * Excel Function:
- * DATEVALUE(dateValue)
- *
- * @access public
- * @category Date/Time Functions
- * @param string $dateValue Text that represents a date in a Microsoft Excel date format.
- * For example, "1/30/2008" or "30-Jan-2008" are text strings within
- * quotation marks that represent dates. Using the default date
- * system in Excel for Windows, date_text must represent a date from
- * January 1, 1900, to December 31, 9999. Using the default date
- * system in Excel for the Macintosh, date_text must represent a date
- * from January 1, 1904, to December 31, 9999. DATEVALUE returns the
- * #VALUE! error value if date_text is out of this range.
- * @return mixed Excel date/time serial value, PHP date/time serial value or PHP date/time object,
- * depending on the value of the ReturnDateType flag
- */
- public static function DATEVALUE($dateValue = 1) {
- $dateValue = trim(PHPExcel_Calculation_Functions::flattenSingleValue($dateValue),'"');
- // Strip any ordinals because they're allowed in Excel (English only)
- $dateValue = preg_replace('/(\d)(st|nd|rd|th)([ -\/])/Ui','$1$3',$dateValue);
- // Convert separators (/ . or space) to hyphens (should also handle dot used for ordinals in some countries, e.g. Denmark, Germany)
- $dateValue = str_replace(array('/','.','-',' '),array(' ',' ',' ',' '),$dateValue);
-
- $yearFound = false;
- $t1 = explode(' ',$dateValue);
- foreach($t1 as &$t) {
- if ((is_numeric($t)) && ($t > 31)) {
- if ($yearFound) {
- return PHPExcel_Calculation_Functions::VALUE();
- } else {
- if ($t < 100) { $t += 1900; }
- $yearFound = true;
- }
- }
- }
- if ((count($t1) == 1) && (strpos($t,':') != false)) {
- // We've been fed a time value without any date
- return 0.0;
- } elseif (count($t1) == 2) {
- // We only have two parts of the date: either day/month or month/year
- if ($yearFound) {
- array_unshift($t1,1);
- } else {
- array_push($t1,date('Y'));
- }
- }
- unset($t);
- $dateValue = implode(' ',$t1);
-
- $PHPDateArray = date_parse($dateValue);
- if (($PHPDateArray === False) || ($PHPDateArray['error_count'] > 0)) {
- $testVal1 = strtok($dateValue,'- ');
- if ($testVal1 !== False) {
- $testVal2 = strtok('- ');
- if ($testVal2 !== False) {
- $testVal3 = strtok('- ');
- if ($testVal3 === False) {
- $testVal3 = strftime('%Y');
- }
- } else {
- return PHPExcel_Calculation_Functions::VALUE();
- }
- } else {
- return PHPExcel_Calculation_Functions::VALUE();
- }
- $PHPDateArray = date_parse($testVal1.'-'.$testVal2.'-'.$testVal3);
- if (($PHPDateArray === False) || ($PHPDateArray['error_count'] > 0)) {
- $PHPDateArray = date_parse($testVal2.'-'.$testVal1.'-'.$testVal3);
- if (($PHPDateArray === False) || ($PHPDateArray['error_count'] > 0)) {
- return PHPExcel_Calculation_Functions::VALUE();
- }
- }
- }
-
- if (($PHPDateArray !== False) && ($PHPDateArray['error_count'] == 0)) {
- // Execute function
- if ($PHPDateArray['year'] == '') { $PHPDateArray['year'] = strftime('%Y'); }
- if ($PHPDateArray['year'] < 1900)
- return PHPExcel_Calculation_Functions::VALUE();
- if ($PHPDateArray['month'] == '') { $PHPDateArray['month'] = strftime('%m'); }
- if ($PHPDateArray['day'] == '') { $PHPDateArray['day'] = strftime('%d'); }
- $excelDateValue = floor(PHPExcel_Shared_Date::FormattedPHPToExcel($PHPDateArray['year'],$PHPDateArray['month'],$PHPDateArray['day'],$PHPDateArray['hour'],$PHPDateArray['minute'],$PHPDateArray['second']));
-
- switch (PHPExcel_Calculation_Functions::getReturnDateType()) {
- case PHPExcel_Calculation_Functions::RETURNDATE_EXCEL :
- return (float) $excelDateValue;
- case PHPExcel_Calculation_Functions::RETURNDATE_PHP_NUMERIC :
- return (integer) PHPExcel_Shared_Date::ExcelToPHP($excelDateValue);
- case PHPExcel_Calculation_Functions::RETURNDATE_PHP_OBJECT :
- return new DateTime($PHPDateArray['year'].'-'.$PHPDateArray['month'].'-'.$PHPDateArray['day'].' 00:00:00');
- }
- }
- return PHPExcel_Calculation_Functions::VALUE();
- } // function DATEVALUE()
-
-
- /**
- * TIMEVALUE
- *
- * Returns a value that represents a particular time.
- * Use TIMEVALUE to convert a time represented by a text string to an Excel or PHP date/time stamp
- * value.
- *
- * NOTE: When used in a Cell Formula, MS Excel changes the cell format so that it matches the time
- * format of your regional settings. PHPExcel does not change cell formatting in this way.
- *
- * Excel Function:
- * TIMEVALUE(timeValue)
- *
- * @access public
- * @category Date/Time Functions
- * @param string $timeValue A text string that represents a time in any one of the Microsoft
- * Excel time formats; for example, "6:45 PM" and "18:45" text strings
- * within quotation marks that represent time.
- * Date information in time_text is ignored.
- * @return mixed Excel date/time serial value, PHP date/time serial value or PHP date/time object,
- * depending on the value of the ReturnDateType flag
- */
- public static function TIMEVALUE($timeValue) {
- $timeValue = trim(PHPExcel_Calculation_Functions::flattenSingleValue($timeValue),'"');
- $timeValue = str_replace(array('/','.'),array('-','-'),$timeValue);
-
- $PHPDateArray = date_parse($timeValue);
- if (($PHPDateArray !== False) && ($PHPDateArray['error_count'] == 0)) {
- if (PHPExcel_Calculation_Functions::getCompatibilityMode() == PHPExcel_Calculation_Functions::COMPATIBILITY_OPENOFFICE) {
- $excelDateValue = PHPExcel_Shared_Date::FormattedPHPToExcel($PHPDateArray['year'],$PHPDateArray['month'],$PHPDateArray['day'],$PHPDateArray['hour'],$PHPDateArray['minute'],$PHPDateArray['second']);
- } else {
- $excelDateValue = PHPExcel_Shared_Date::FormattedPHPToExcel(1900,1,1,$PHPDateArray['hour'],$PHPDateArray['minute'],$PHPDateArray['second']) - 1;
- }
-
- switch (PHPExcel_Calculation_Functions::getReturnDateType()) {
- case PHPExcel_Calculation_Functions::RETURNDATE_EXCEL :
- return (float) $excelDateValue;
- case PHPExcel_Calculation_Functions::RETURNDATE_PHP_NUMERIC :
- return (integer) $phpDateValue = PHPExcel_Shared_Date::ExcelToPHP($excelDateValue+25569) - 3600;;
- case PHPExcel_Calculation_Functions::RETURNDATE_PHP_OBJECT :
- return new DateTime('1900-01-01 '.$PHPDateArray['hour'].':'.$PHPDateArray['minute'].':'.$PHPDateArray['second']);
- }
- }
- return PHPExcel_Calculation_Functions::VALUE();
- } // function TIMEVALUE()
-
-
- /**
- * DATEDIF
- *
- * @param mixed $startDate Excel date serial value, PHP date/time stamp, PHP DateTime object
- * or a standard date string
- * @param mixed $endDate Excel date serial value, PHP date/time stamp, PHP DateTime object
- * or a standard date string
- * @param string $unit
- * @return integer Interval between the dates
- */
- public static function DATEDIF($startDate = 0, $endDate = 0, $unit = 'D') {
- $startDate = PHPExcel_Calculation_Functions::flattenSingleValue($startDate);
- $endDate = PHPExcel_Calculation_Functions::flattenSingleValue($endDate);
- $unit = strtoupper(PHPExcel_Calculation_Functions::flattenSingleValue($unit));
-
- if (is_string($startDate = self::_getDateValue($startDate))) {
- return PHPExcel_Calculation_Functions::VALUE();
- }
- if (is_string($endDate = self::_getDateValue($endDate))) {
- return PHPExcel_Calculation_Functions::VALUE();
- }
-
- // Validate parameters
- if ($startDate >= $endDate) {
- return PHPExcel_Calculation_Functions::NaN();
- }
-
- // Execute function
- $difference = $endDate - $startDate;
-
- $PHPStartDateObject = PHPExcel_Shared_Date::ExcelToPHPObject($startDate);
- $startDays = $PHPStartDateObject->format('j');
- $startMonths = $PHPStartDateObject->format('n');
- $startYears = $PHPStartDateObject->format('Y');
-
- $PHPEndDateObject = PHPExcel_Shared_Date::ExcelToPHPObject($endDate);
- $endDays = $PHPEndDateObject->format('j');
- $endMonths = $PHPEndDateObject->format('n');
- $endYears = $PHPEndDateObject->format('Y');
-
- $retVal = PHPExcel_Calculation_Functions::NaN();
- switch ($unit) {
- case 'D':
- $retVal = intval($difference);
- break;
- case 'M':
- $retVal = intval($endMonths - $startMonths) + (intval($endYears - $startYears) * 12);
- // We're only interested in full months
- if ($endDays < $startDays) {
- --$retVal;
- }
- break;
- case 'Y':
- $retVal = intval($endYears - $startYears);
- // We're only interested in full months
- if ($endMonths < $startMonths) {
- --$retVal;
- } elseif (($endMonths == $startMonths) && ($endDays < $startDays)) {
- --$retVal;
- }
- break;
- case 'MD':
- if ($endDays < $startDays) {
- $retVal = $endDays;
- $PHPEndDateObject->modify('-'.$endDays.' days');
- $adjustDays = $PHPEndDateObject->format('j');
- if ($adjustDays > $startDays) {
- $retVal += ($adjustDays - $startDays);
- }
- } else {
- $retVal = $endDays - $startDays;
- }
- break;
- case 'YM':
- $retVal = intval($endMonths - $startMonths);
- if ($retVal < 0) $retVal = 12 + $retVal;
- // We're only interested in full months
- if ($endDays < $startDays) {
- --$retVal;
- }
- break;
- case 'YD':
- $retVal = intval($difference);
- if ($endYears > $startYears) {
- while ($endYears > $startYears) {
- $PHPEndDateObject->modify('-1 year');
- $endYears = $PHPEndDateObject->format('Y');
- }
- $retVal = $PHPEndDateObject->format('z') - $PHPStartDateObject->format('z');
- if ($retVal < 0) { $retVal += 365; }
- }
- break;
- default:
- $retVal = PHPExcel_Calculation_Functions::NaN();
- }
- return $retVal;
- } // function DATEDIF()
-
-
- /**
- * DAYS360
- *
- * Returns the number of days between two dates based on a 360-day year (twelve 30-day months),
- * which is used in some accounting calculations. Use this function to help compute payments if
- * your accounting system is based on twelve 30-day months.
- *
- * Excel Function:
- * DAYS360(startDate,endDate[,method])
- *
- * @access public
- * @category Date/Time Functions
- * @param mixed $startDate Excel date serial value (float), PHP date timestamp (integer),
- * PHP DateTime object, or a standard date string
- * @param mixed $endDate Excel date serial value (float), PHP date timestamp (integer),
- * PHP DateTime object, or a standard date string
- * @param boolean $method US or European Method
- * FALSE or omitted: U.S. (NASD) method. If the starting date is
- * the last day of a month, it becomes equal to the 30th of the
- * same month. If the ending date is the last day of a month and
- * the starting date is earlier than the 30th of a month, the
- * ending date becomes equal to the 1st of the next month;
- * otherwise the ending date becomes equal to the 30th of the
- * same month.
- * TRUE: European method. Starting dates and ending dates that
- * occur on the 31st of a month become equal to the 30th of the
- * same month.
- * @return integer Number of days between start date and end date
- */
- public static function DAYS360($startDate = 0, $endDate = 0, $method = false) {
- $startDate = PHPExcel_Calculation_Functions::flattenSingleValue($startDate);
- $endDate = PHPExcel_Calculation_Functions::flattenSingleValue($endDate);
-
- if (is_string($startDate = self::_getDateValue($startDate))) {
- return PHPExcel_Calculation_Functions::VALUE();
- }
- if (is_string($endDate = self::_getDateValue($endDate))) {
- return PHPExcel_Calculation_Functions::VALUE();
- }
-
- // Execute function
- $PHPStartDateObject = PHPExcel_Shared_Date::ExcelToPHPObject($startDate);
- $startDay = $PHPStartDateObject->format('j');
- $startMonth = $PHPStartDateObject->format('n');
- $startYear = $PHPStartDateObject->format('Y');
-
- $PHPEndDateObject = PHPExcel_Shared_Date::ExcelToPHPObject($endDate);
- $endDay = $PHPEndDateObject->format('j');
- $endMonth = $PHPEndDateObject->format('n');
- $endYear = $PHPEndDateObject->format('Y');
-
- return self::_dateDiff360($startDay, $startMonth, $startYear, $endDay, $endMonth, $endYear, !$method);
- } // function DAYS360()
-
-
- /**
- * YEARFRAC
- *
- * Calculates the fraction of the year represented by the number of whole days between two dates
- * (the start_date and the end_date).
- * Use the YEARFRAC worksheet function to identify the proportion of a whole year's benefits or
- * obligations to assign to a specific term.
- *
- * Excel Function:
- * YEARFRAC(startDate,endDate[,method])
- *
- * @access public
- * @category Date/Time Functions
- * @param mixed $startDate Excel date serial value (float), PHP date timestamp (integer),
- * PHP DateTime object, or a standard date string
- * @param mixed $endDate Excel date serial value (float), PHP date timestamp (integer),
- * PHP DateTime object, or a standard date string
- * @param integer $method Method used for the calculation
- * 0 or omitted US (NASD) 30/360
- * 1 Actual/actual
- * 2 Actual/360
- * 3 Actual/365
- * 4 European 30/360
- * @return float fraction of the year
- */
- public static function YEARFRAC($startDate = 0, $endDate = 0, $method = 0) {
- $startDate = PHPExcel_Calculation_Functions::flattenSingleValue($startDate);
- $endDate = PHPExcel_Calculation_Functions::flattenSingleValue($endDate);
- $method = PHPExcel_Calculation_Functions::flattenSingleValue($method);
-
- if (is_string($startDate = self::_getDateValue($startDate))) {
- return PHPExcel_Calculation_Functions::VALUE();
- }
- if (is_string($endDate = self::_getDateValue($endDate))) {
- return PHPExcel_Calculation_Functions::VALUE();
- }
-
- if (((is_numeric($method)) && (!is_string($method))) || ($method == '')) {
- switch($method) {
- case 0 :
- return self::DAYS360($startDate,$endDate) / 360;
- case 1 :
- $days = self::DATEDIF($startDate,$endDate);
- $startYear = self::YEAR($startDate);
- $endYear = self::YEAR($endDate);
- $years = $endYear - $startYear + 1;
- $leapDays = 0;
- if ($years == 1) {
- if (self::_isLeapYear($endYear)) {
- $startMonth = self::MONTHOFYEAR($startDate);
- $endMonth = self::MONTHOFYEAR($endDate);
- $endDay = self::DAYOFMONTH($endDate);
- if (($startMonth < 3) ||
- (($endMonth * 100 + $endDay) >= (2 * 100 + 29))) {
- $leapDays += 1;
- }
- }
- } else {
- for($year = $startYear; $year <= $endYear; ++$year) {
- if ($year == $startYear) {
- $startMonth = self::MONTHOFYEAR($startDate);
- $startDay = self::DAYOFMONTH($startDate);
- if ($startMonth < 3) {
- $leapDays += (self::_isLeapYear($year)) ? 1 : 0;
- }
- } elseif($year == $endYear) {
- $endMonth = self::MONTHOFYEAR($endDate);
- $endDay = self::DAYOFMONTH($endDate);
- if (($endMonth * 100 + $endDay) >= (2 * 100 + 29)) {
- $leapDays += (self::_isLeapYear($year)) ? 1 : 0;
- }
- } else {
- $leapDays += (self::_isLeapYear($year)) ? 1 : 0;
- }
- }
- if ($years == 2) {
- if (($leapDays == 0) && (self::_isLeapYear($startYear)) && ($days > 365)) {
- $leapDays = 1;
- } elseif ($days < 366) {
- $years = 1;
- }
- }
- $leapDays /= $years;
- }
- return $days / (365 + $leapDays);
- case 2 :
- return self::DATEDIF($startDate,$endDate) / 360;
- case 3 :
- return self::DATEDIF($startDate,$endDate) / 365;
- case 4 :
- return self::DAYS360($startDate,$endDate,True) / 360;
- }
- }
- return PHPExcel_Calculation_Functions::VALUE();
- } // function YEARFRAC()
-
-
- /**
- * NETWORKDAYS
- *
- * Returns the number of whole working days between start_date and end_date. Working days
- * exclude weekends and any dates identified in holidays.
- * Use NETWORKDAYS to calculate employee benefits that accrue based on the number of days
- * worked during a specific term.
- *
- * Excel Function:
- * NETWORKDAYS(startDate,endDate[,holidays[,holiday[,...]]])
- *
- * @access public
- * @category Date/Time Functions
- * @param mixed $startDate Excel date serial value (float), PHP date timestamp (integer),
- * PHP DateTime object, or a standard date string
- * @param mixed $endDate Excel date serial value (float), PHP date timestamp (integer),
- * PHP DateTime object, or a standard date string
- * @param mixed $holidays,... Optional series of Excel date serial value (float), PHP date
- * timestamp (integer), PHP DateTime object, or a standard date
- * strings that will be excluded from the working calendar, such
- * as state and federal holidays and floating holidays.
- * @return integer Interval between the dates
- */
- public static function NETWORKDAYS($startDate,$endDate) {
- // Retrieve the mandatory start and end date that are referenced in the function definition
- $startDate = PHPExcel_Calculation_Functions::flattenSingleValue($startDate);
- $endDate = PHPExcel_Calculation_Functions::flattenSingleValue($endDate);
- // Flush the mandatory start and end date that are referenced in the function definition, and get the optional days
- $dateArgs = PHPExcel_Calculation_Functions::flattenArray(func_get_args());
- array_shift($dateArgs);
- array_shift($dateArgs);
-
- // Validate the start and end dates
- if (is_string($startDate = $sDate = self::_getDateValue($startDate))) {
- return PHPExcel_Calculation_Functions::VALUE();
- }
- $startDate = (float) floor($startDate);
- if (is_string($endDate = $eDate = self::_getDateValue($endDate))) {
- return PHPExcel_Calculation_Functions::VALUE();
- }
- $endDate = (float) floor($endDate);
-
- if ($sDate > $eDate) {
- $startDate = $eDate;
- $endDate = $sDate;
- }
-
- // Execute function
- $startDoW = 6 - self::DAYOFWEEK($startDate,2);
- if ($startDoW < 0) { $startDoW = 0; }
- $endDoW = self::DAYOFWEEK($endDate,2);
- if ($endDoW >= 6) { $endDoW = 0; }
-
- $wholeWeekDays = floor(($endDate - $startDate) / 7) * 5;
- $partWeekDays = $endDoW + $startDoW;
- if ($partWeekDays > 5) {
- $partWeekDays -= 5;
- }
-
- // Test any extra holiday parameters
- $holidayCountedArray = array();
- foreach ($dateArgs as $holidayDate) {
- if (is_string($holidayDate = self::_getDateValue($holidayDate))) {
- return PHPExcel_Calculation_Functions::VALUE();
- }
- if (($holidayDate >= $startDate) && ($holidayDate <= $endDate)) {
- if ((self::DAYOFWEEK($holidayDate,2) < 6) && (!in_array($holidayDate,$holidayCountedArray))) {
- --$partWeekDays;
- $holidayCountedArray[] = $holidayDate;
- }
- }
- }
-
- if ($sDate > $eDate) {
- return 0 - ($wholeWeekDays + $partWeekDays);
- }
- return $wholeWeekDays + $partWeekDays;
- } // function NETWORKDAYS()
-
-
- /**
- * WORKDAY
- *
- * Returns the date that is the indicated number of working days before or after a date (the
- * starting date). Working days exclude weekends and any dates identified as holidays.
- * Use WORKDAY to exclude weekends or holidays when you calculate invoice due dates, expected
- * delivery times, or the number of days of work performed.
- *
- * Excel Function:
- * WORKDAY(startDate,endDays[,holidays[,holiday[,...]]])
- *
- * @access public
- * @category Date/Time Functions
- * @param mixed $startDate Excel date serial value (float), PHP date timestamp (integer),
- * PHP DateTime object, or a standard date string
- * @param integer $endDays The number of nonweekend and nonholiday days before or after
- * startDate. A positive value for days yields a future date; a
- * negative value yields a past date.
- * @param mixed $holidays,... Optional series of Excel date serial value (float), PHP date
- * timestamp (integer), PHP DateTime object, or a standard date
- * strings that will be excluded from the working calendar, such
- * as state and federal holidays and floating holidays.
- * @return mixed Excel date/time serial value, PHP date/time serial value or PHP date/time object,
- * depending on the value of the ReturnDateType flag
- */
- public static function WORKDAY($startDate,$endDays) {
- // Retrieve the mandatory start date and days that are referenced in the function definition
- $startDate = PHPExcel_Calculation_Functions::flattenSingleValue($startDate);
- $endDays = PHPExcel_Calculation_Functions::flattenSingleValue($endDays);
- // Flush the mandatory start date and days that are referenced in the function definition, and get the optional days
- $dateArgs = PHPExcel_Calculation_Functions::flattenArray(func_get_args());
- array_shift($dateArgs);
- array_shift($dateArgs);
-
- if ((is_string($startDate = self::_getDateValue($startDate))) || (!is_numeric($endDays))) {
- return PHPExcel_Calculation_Functions::VALUE();
- }
- $startDate = (float) floor($startDate);
- $endDays = (int) floor($endDays);
- // If endDays is 0, we always return startDate
- if ($endDays == 0) { return $startDate; }
-
- $decrementing = ($endDays < 0) ? True : False;
-
- // Adjust the start date if it falls over a weekend
-
- $startDoW = self::DAYOFWEEK($startDate,3);
- if (self::DAYOFWEEK($startDate,3) >= 5) {
- $startDate += ($decrementing) ? -$startDoW + 4: 7 - $startDoW;
- ($decrementing) ? $endDays++ : $endDays--;
- }
-
- // Add endDays
- $endDate = (float) $startDate + (intval($endDays / 5) * 7) + ($endDays % 5);
-
- // Adjust the calculated end date if it falls over a weekend
- $endDoW = self::DAYOFWEEK($endDate,3);
- if ($endDoW >= 5) {
- $endDate += ($decrementing) ? -$endDoW + 4: 7 - $endDoW;
- }
-
- // Test any extra holiday parameters
- if (!empty($dateArgs)) {
- $holidayCountedArray = $holidayDates = array();
- foreach ($dateArgs as $holidayDate) {
- if (($holidayDate !== NULL) && (trim($holidayDate) > '')) {
- if (is_string($holidayDate = self::_getDateValue($holidayDate))) {
- return PHPExcel_Calculation_Functions::VALUE();
- }
- if (self::DAYOFWEEK($holidayDate,3) < 5) {
- $holidayDates[] = $holidayDate;
- }
- }
- }
- if ($decrementing) {
- rsort($holidayDates, SORT_NUMERIC);
- } else {
- sort($holidayDates, SORT_NUMERIC);
- }
- foreach ($holidayDates as $holidayDate) {
- if ($decrementing) {
- if (($holidayDate <= $startDate) && ($holidayDate >= $endDate)) {
- if (!in_array($holidayDate,$holidayCountedArray)) {
- --$endDate;
- $holidayCountedArray[] = $holidayDate;
- }
- }
- } else {
- if (($holidayDate >= $startDate) && ($holidayDate <= $endDate)) {
- if (!in_array($holidayDate,$holidayCountedArray)) {
- ++$endDate;
- $holidayCountedArray[] = $holidayDate;
- }
- }
- }
- // Adjust the calculated end date if it falls over a weekend
- $endDoW = self::DAYOFWEEK($endDate,3);
- if ($endDoW >= 5) {
- $endDate += ($decrementing) ? -$endDoW + 4: 7 - $endDoW;
- }
-
- }
- }
-
- switch (PHPExcel_Calculation_Functions::getReturnDateType()) {
- case PHPExcel_Calculation_Functions::RETURNDATE_EXCEL :
- return (float) $endDate;
- case PHPExcel_Calculation_Functions::RETURNDATE_PHP_NUMERIC :
- return (integer) PHPExcel_Shared_Date::ExcelToPHP($endDate);
- case PHPExcel_Calculation_Functions::RETURNDATE_PHP_OBJECT :
- return PHPExcel_Shared_Date::ExcelToPHPObject($endDate);
- }
- } // function WORKDAY()
-
-
- /**
- * DAYOFMONTH
- *
- * Returns the day of the month, for a specified date. The day is given as an integer
- * ranging from 1 to 31.
- *
- * Excel Function:
- * DAY(dateValue)
- *
- * @param mixed $dateValue Excel date serial value (float), PHP date timestamp (integer),
- * PHP DateTime object, or a standard date string
- * @return int Day of the month
- */
- public static function DAYOFMONTH($dateValue = 1) {
- $dateValue = PHPExcel_Calculation_Functions::flattenSingleValue($dateValue);
-
- if (is_string($dateValue = self::_getDateValue($dateValue))) {
- return PHPExcel_Calculation_Functions::VALUE();
- } elseif ($dateValue == 0.0) {
- return 0;
- } elseif ($dateValue < 0.0) {
- return PHPExcel_Calculation_Functions::NaN();
- }
-
- // Execute function
- $PHPDateObject = PHPExcel_Shared_Date::ExcelToPHPObject($dateValue);
-
- return (int) $PHPDateObject->format('j');
- } // function DAYOFMONTH()
-
-
- /**
- * DAYOFWEEK
- *
- * Returns the day of the week for a specified date. The day is given as an integer
- * ranging from 0 to 7 (dependent on the requested style).
- *
- * Excel Function:
- * WEEKDAY(dateValue[,style])
- *
- * @param mixed $dateValue Excel date serial value (float), PHP date timestamp (integer),
- * PHP DateTime object, or a standard date string
- * @param int $style A number that determines the type of return value
- * 1 or omitted Numbers 1 (Sunday) through 7 (Saturday).
- * 2 Numbers 1 (Monday) through 7 (Sunday).
- * 3 Numbers 0 (Monday) through 6 (Sunday).
- * @return int Day of the week value
- */
- public static function DAYOFWEEK($dateValue = 1, $style = 1) {
- $dateValue = PHPExcel_Calculation_Functions::flattenSingleValue($dateValue);
- $style = PHPExcel_Calculation_Functions::flattenSingleValue($style);
-
- if (!is_numeric($style)) {
- return PHPExcel_Calculation_Functions::VALUE();
- } elseif (($style < 1) || ($style > 3)) {
- return PHPExcel_Calculation_Functions::NaN();
- }
- $style = floor($style);
-
- if (is_string($dateValue = self::_getDateValue($dateValue))) {
- return PHPExcel_Calculation_Functions::VALUE();
- } elseif ($dateValue < 0.0) {
- return PHPExcel_Calculation_Functions::NaN();
- }
-
- // Execute function
- $PHPDateObject = PHPExcel_Shared_Date::ExcelToPHPObject($dateValue);
- $DoW = $PHPDateObject->format('w');
-
- $firstDay = 1;
- switch ($style) {
- case 1: ++$DoW;
- break;
- case 2: if ($DoW == 0) { $DoW = 7; }
- break;
- case 3: if ($DoW == 0) { $DoW = 7; }
- $firstDay = 0;
- --$DoW;
- break;
- }
- if (PHPExcel_Calculation_Functions::getCompatibilityMode() == PHPExcel_Calculation_Functions::COMPATIBILITY_EXCEL) {
- // Test for Excel's 1900 leap year, and introduce the error as required
- if (($PHPDateObject->format('Y') == 1900) && ($PHPDateObject->format('n') <= 2)) {
- --$DoW;
- if ($DoW < $firstDay) {
- $DoW += 7;
- }
- }
- }
-
- return (int) $DoW;
- } // function DAYOFWEEK()
-
-
- /**
- * WEEKOFYEAR
- *
- * Returns the week of the year for a specified date.
- * The WEEKNUM function considers the week containing January 1 to be the first week of the year.
- * However, there is a European standard that defines the first week as the one with the majority
- * of days (four or more) falling in the new year. This means that for years in which there are
- * three days or less in the first week of January, the WEEKNUM function returns week numbers
- * that are incorrect according to the European standard.
- *
- * Excel Function:
- * WEEKNUM(dateValue[,style])
- *
- * @param mixed $dateValue Excel date serial value (float), PHP date timestamp (integer),
- * PHP DateTime object, or a standard date string
- * @param boolean $method Week begins on Sunday or Monday
- * 1 or omitted Week begins on Sunday.
- * 2 Week begins on Monday.
- * @return int Week Number
- */
- public static function WEEKOFYEAR($dateValue = 1, $method = 1) {
- $dateValue = PHPExcel_Calculation_Functions::flattenSingleValue($dateValue);
- $method = PHPExcel_Calculation_Functions::flattenSingleValue($method);
-
- if (!is_numeric($method)) {
- return PHPExcel_Calculation_Functions::VALUE();
- } elseif (($method < 1) || ($method > 2)) {
- return PHPExcel_Calculation_Functions::NaN();
- }
- $method = floor($method);
-
- if (is_string($dateValue = self::_getDateValue($dateValue))) {
- return PHPExcel_Calculation_Functions::VALUE();
- } elseif ($dateValue < 0.0) {
- return PHPExcel_Calculation_Functions::NaN();
- }
-
- // Execute function
- $PHPDateObject = PHPExcel_Shared_Date::ExcelToPHPObject($dateValue);
- $dayOfYear = $PHPDateObject->format('z');
- $dow = $PHPDateObject->format('w');
- $PHPDateObject->modify('-'.$dayOfYear.' days');
- $dow = $PHPDateObject->format('w');
- $daysInFirstWeek = 7 - (($dow + (2 - $method)) % 7);
- $dayOfYear -= $daysInFirstWeek;
- $weekOfYear = ceil($dayOfYear / 7) + 1;
-
- return (int) $weekOfYear;
- } // function WEEKOFYEAR()
-
-
- /**
- * MONTHOFYEAR
- *
- * Returns the month of a date represented by a serial number.
- * The month is given as an integer, ranging from 1 (January) to 12 (December).
- *
- * Excel Function:
- * MONTH(dateValue)
- *
- * @param mixed $dateValue Excel date serial value (float), PHP date timestamp (integer),
- * PHP DateTime object, or a standard date string
- * @return int Month of the year
- */
- public static function MONTHOFYEAR($dateValue = 1) {
- $dateValue = PHPExcel_Calculation_Functions::flattenSingleValue($dateValue);
-
- if (is_string($dateValue = self::_getDateValue($dateValue))) {
- return PHPExcel_Calculation_Functions::VALUE();
- } elseif ($dateValue < 0.0) {
- return PHPExcel_Calculation_Functions::NaN();
- }
-
- // Execute function
- $PHPDateObject = PHPExcel_Shared_Date::ExcelToPHPObject($dateValue);
-
- return (int) $PHPDateObject->format('n');
- } // function MONTHOFYEAR()
-
-
- /**
- * YEAR
- *
- * Returns the year corresponding to a date.
- * The year is returned as an integer in the range 1900-9999.
- *
- * Excel Function:
- * YEAR(dateValue)
- *
- * @param mixed $dateValue Excel date serial value (float), PHP date timestamp (integer),
- * PHP DateTime object, or a standard date string
- * @return int Year
- */
- public static function YEAR($dateValue = 1) {
- $dateValue = PHPExcel_Calculation_Functions::flattenSingleValue($dateValue);
-
- if (is_string($dateValue = self::_getDateValue($dateValue))) {
- return PHPExcel_Calculation_Functions::VALUE();
- } elseif ($dateValue < 0.0) {
- return PHPExcel_Calculation_Functions::NaN();
- }
-
- // Execute function
- $PHPDateObject = PHPExcel_Shared_Date::ExcelToPHPObject($dateValue);
-
- return (int) $PHPDateObject->format('Y');
- } // function YEAR()
-
-
- /**
- * HOUROFDAY
- *
- * Returns the hour of a time value.
- * The hour is given as an integer, ranging from 0 (12:00 A.M.) to 23 (11:00 P.M.).
- *
- * Excel Function:
- * HOUR(timeValue)
- *
- * @param mixed $timeValue Excel date serial value (float), PHP date timestamp (integer),
- * PHP DateTime object, or a standard time string
- * @return int Hour
- */
- public static function HOUROFDAY($timeValue = 0) {
- $timeValue = PHPExcel_Calculation_Functions::flattenSingleValue($timeValue);
-
- if (!is_numeric($timeValue)) {
- if (PHPExcel_Calculation_Functions::getCompatibilityMode() == PHPExcel_Calculation_Functions::COMPATIBILITY_GNUMERIC) {
- $testVal = strtok($timeValue,'/-: ');
- if (strlen($testVal) < strlen($timeValue)) {
- return PHPExcel_Calculation_Functions::VALUE();
- }
- }
- $timeValue = self::_getTimeValue($timeValue);
- if (is_string($timeValue)) {
- return PHPExcel_Calculation_Functions::VALUE();
- }
- }
- // Execute function
- if ($timeValue >= 1) {
- $timeValue = fmod($timeValue,1);
- } elseif ($timeValue < 0.0) {
- return PHPExcel_Calculation_Functions::NaN();
- }
- $timeValue = PHPExcel_Shared_Date::ExcelToPHP($timeValue);
-
- return (int) gmdate('G',$timeValue);
- } // function HOUROFDAY()
-
-
- /**
- * MINUTEOFHOUR
- *
- * Returns the minutes of a time value.
- * The minute is given as an integer, ranging from 0 to 59.
- *
- * Excel Function:
- * MINUTE(timeValue)
- *
- * @param mixed $timeValue Excel date serial value (float), PHP date timestamp (integer),
- * PHP DateTime object, or a standard time string
- * @return int Minute
- */
- public static function MINUTEOFHOUR($timeValue = 0) {
- $timeValue = $timeTester = PHPExcel_Calculation_Functions::flattenSingleValue($timeValue);
-
- if (!is_numeric($timeValue)) {
- if (PHPExcel_Calculation_Functions::getCompatibilityMode() == PHPExcel_Calculation_Functions::COMPATIBILITY_GNUMERIC) {
- $testVal = strtok($timeValue,'/-: ');
- if (strlen($testVal) < strlen($timeValue)) {
- return PHPExcel_Calculation_Functions::VALUE();
- }
- }
- $timeValue = self::_getTimeValue($timeValue);
- if (is_string($timeValue)) {
- return PHPExcel_Calculation_Functions::VALUE();
- }
- }
- // Execute function
- if ($timeValue >= 1) {
- $timeValue = fmod($timeValue,1);
- } elseif ($timeValue < 0.0) {
- return PHPExcel_Calculation_Functions::NaN();
- }
- $timeValue = PHPExcel_Shared_Date::ExcelToPHP($timeValue);
-
- return (int) gmdate('i',$timeValue);
- } // function MINUTEOFHOUR()
-
-
- /**
- * SECONDOFMINUTE
- *
- * Returns the seconds of a time value.
- * The second is given as an integer in the range 0 (zero) to 59.
- *
- * Excel Function:
- * SECOND(timeValue)
- *
- * @param mixed $timeValue Excel date serial value (float), PHP date timestamp (integer),
- * PHP DateTime object, or a standard time string
- * @return int Second
- */
- public static function SECONDOFMINUTE($timeValue = 0) {
- $timeValue = PHPExcel_Calculation_Functions::flattenSingleValue($timeValue);
-
- if (!is_numeric($timeValue)) {
- if (PHPExcel_Calculation_Functions::getCompatibilityMode() == PHPExcel_Calculation_Functions::COMPATIBILITY_GNUMERIC) {
- $testVal = strtok($timeValue,'/-: ');
- if (strlen($testVal) < strlen($timeValue)) {
- return PHPExcel_Calculation_Functions::VALUE();
- }
- }
- $timeValue = self::_getTimeValue($timeValue);
- if (is_string($timeValue)) {
- return PHPExcel_Calculation_Functions::VALUE();
- }
- }
- // Execute function
- if ($timeValue >= 1) {
- $timeValue = fmod($timeValue,1);
- } elseif ($timeValue < 0.0) {
- return PHPExcel_Calculation_Functions::NaN();
- }
- $timeValue = PHPExcel_Shared_Date::ExcelToPHP($timeValue);
-
- return (int) gmdate('s',$timeValue);
- } // function SECONDOFMINUTE()
-
-
- /**
- * EDATE
- *
- * Returns the serial number that represents the date that is the indicated number of months
- * before or after a specified date (the start_date).
- * Use EDATE to calculate maturity dates or due dates that fall on the same day of the month
- * as the date of issue.
- *
- * Excel Function:
- * EDATE(dateValue,adjustmentMonths)
- *
- * @param mixed $dateValue Excel date serial value (float), PHP date timestamp (integer),
- * PHP DateTime object, or a standard date string
- * @param int $adjustmentMonths The number of months before or after start_date.
- * A positive value for months yields a future date;
- * a negative value yields a past date.
- * @return mixed Excel date/time serial value, PHP date/time serial value or PHP date/time object,
- * depending on the value of the ReturnDateType flag
- */
- public static function EDATE($dateValue = 1, $adjustmentMonths = 0) {
- $dateValue = PHPExcel_Calculation_Functions::flattenSingleValue($dateValue);
- $adjustmentMonths = PHPExcel_Calculation_Functions::flattenSingleValue($adjustmentMonths);
-
- if (!is_numeric($adjustmentMonths)) {
- return PHPExcel_Calculation_Functions::VALUE();
- }
- $adjustmentMonths = floor($adjustmentMonths);
-
- if (is_string($dateValue = self::_getDateValue($dateValue))) {
- return PHPExcel_Calculation_Functions::VALUE();
- }
-
- // Execute function
- $PHPDateObject = self::_adjustDateByMonths($dateValue,$adjustmentMonths);
-
- switch (PHPExcel_Calculation_Functions::getReturnDateType()) {
- case PHPExcel_Calculation_Functions::RETURNDATE_EXCEL :
- return (float) PHPExcel_Shared_Date::PHPToExcel($PHPDateObject);
- case PHPExcel_Calculation_Functions::RETURNDATE_PHP_NUMERIC :
- return (integer) PHPExcel_Shared_Date::ExcelToPHP(PHPExcel_Shared_Date::PHPToExcel($PHPDateObject));
- case PHPExcel_Calculation_Functions::RETURNDATE_PHP_OBJECT :
- return $PHPDateObject;
- }
- } // function EDATE()
-
-
- /**
- * EOMONTH
- *
- * Returns the date value for the last day of the month that is the indicated number of months
- * before or after start_date.
- * Use EOMONTH to calculate maturity dates or due dates that fall on the last day of the month.
- *
- * Excel Function:
- * EOMONTH(dateValue,adjustmentMonths)
- *
- * @param mixed $dateValue Excel date serial value (float), PHP date timestamp (integer),
- * PHP DateTime object, or a standard date string
- * @param int $adjustmentMonths The number of months before or after start_date.
- * A positive value for months yields a future date;
- * a negative value yields a past date.
- * @return mixed Excel date/time serial value, PHP date/time serial value or PHP date/time object,
- * depending on the value of the ReturnDateType flag
- */
- public static function EOMONTH($dateValue = 1, $adjustmentMonths = 0) {
- $dateValue = PHPExcel_Calculation_Functions::flattenSingleValue($dateValue);
- $adjustmentMonths = PHPExcel_Calculation_Functions::flattenSingleValue($adjustmentMonths);
-
- if (!is_numeric($adjustmentMonths)) {
- return PHPExcel_Calculation_Functions::VALUE();
- }
- $adjustmentMonths = floor($adjustmentMonths);
-
- if (is_string($dateValue = self::_getDateValue($dateValue))) {
- return PHPExcel_Calculation_Functions::VALUE();
- }
-
- // Execute function
- $PHPDateObject = self::_adjustDateByMonths($dateValue,$adjustmentMonths+1);
- $adjustDays = (int) $PHPDateObject->format('d');
- $adjustDaysString = '-'.$adjustDays.' days';
- $PHPDateObject->modify($adjustDaysString);
-
- switch (PHPExcel_Calculation_Functions::getReturnDateType()) {
- case PHPExcel_Calculation_Functions::RETURNDATE_EXCEL :
- return (float) PHPExcel_Shared_Date::PHPToExcel($PHPDateObject);
- case PHPExcel_Calculation_Functions::RETURNDATE_PHP_NUMERIC :
- return (integer) PHPExcel_Shared_Date::ExcelToPHP(PHPExcel_Shared_Date::PHPToExcel($PHPDateObject));
- case PHPExcel_Calculation_Functions::RETURNDATE_PHP_OBJECT :
- return $PHPDateObject;
- }
- } // function EOMONTH()
-
-} // class PHPExcel_Calculation_DateTime
-
diff --git a/admin/survey/excel/PHPExcel/Calculation/Engineering.php b/admin/survey/excel/PHPExcel/Calculation/Engineering.php
deleted file mode 100644
index fb4bc7d..0000000
--- a/admin/survey/excel/PHPExcel/Calculation/Engineering.php
+++ /dev/null
@@ -1,2502 +0,0 @@
-<?php
-/**
- * PHPExcel
- *
- * Copyright (c) 2006 - 2012 PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel_Calculation
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-
-/** PHPExcel root directory */
-if (!defined('PHPEXCEL_ROOT')) {
- /**
- * @ignore
- */
- define('PHPEXCEL_ROOT', dirname(__FILE__) . '/../../');
- require(PHPEXCEL_ROOT . 'PHPExcel/Autoloader.php');
-}
-
-
-/** EULER */
-define('EULER', 2.71828182845904523536);
-
-
-/**
- * PHPExcel_Calculation_Engineering
- *
- * @category PHPExcel
- * @package PHPExcel_Calculation
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- */
-class PHPExcel_Calculation_Engineering {
-
- /**
- * Details of the Units of measure that can be used in CONVERTUOM()
- *
- * @var mixed[]
- */
- private static $_conversionUnits = array( 'g' => array( 'Group' => 'Mass', 'Unit Name' => 'Gram', 'AllowPrefix' => True ),
- 'sg' => array( 'Group' => 'Mass', 'Unit Name' => 'Slug', 'AllowPrefix' => False ),
- 'lbm' => array( 'Group' => 'Mass', 'Unit Name' => 'Pound mass (avoirdupois)', 'AllowPrefix' => False ),
- 'u' => array( 'Group' => 'Mass', 'Unit Name' => 'U (atomic mass unit)', 'AllowPrefix' => True ),
- 'ozm' => array( 'Group' => 'Mass', 'Unit Name' => 'Ounce mass (avoirdupois)', 'AllowPrefix' => False ),
- 'm' => array( 'Group' => 'Distance', 'Unit Name' => 'Meter', 'AllowPrefix' => True ),
- 'mi' => array( 'Group' => 'Distance', 'Unit Name' => 'Statute mile', 'AllowPrefix' => False ),
- 'Nmi' => array( 'Group' => 'Distance', 'Unit Name' => 'Nautical mile', 'AllowPrefix' => False ),
- 'in' => array( 'Group' => 'Distance', 'Unit Name' => 'Inch', 'AllowPrefix' => False ),
- 'ft' => array( 'Group' => 'Distance', 'Unit Name' => 'Foot', 'AllowPrefix' => False ),
- 'yd' => array( 'Group' => 'Distance', 'Unit Name' => 'Yard', 'AllowPrefix' => False ),
- 'ang' => array( 'Group' => 'Distance', 'Unit Name' => 'Angstrom', 'AllowPrefix' => True ),
- 'Pica' => array( 'Group' => 'Distance', 'Unit Name' => 'Pica (1/72 in)', 'AllowPrefix' => False ),
- 'yr' => array( 'Group' => 'Time', 'Unit Name' => 'Year', 'AllowPrefix' => False ),
- 'day' => array( 'Group' => 'Time', 'Unit Name' => 'Day', 'AllowPrefix' => False ),
- 'hr' => array( 'Group' => 'Time', 'Unit Name' => 'Hour', 'AllowPrefix' => False ),
- 'mn' => array( 'Group' => 'Time', 'Unit Name' => 'Minute', 'AllowPrefix' => False ),
- 'sec' => array( 'Group' => 'Time', 'Unit Name' => 'Second', 'AllowPrefix' => True ),
- 'Pa' => array( 'Group' => 'Pressure', 'Unit Name' => 'Pascal', 'AllowPrefix' => True ),
- 'p' => array( 'Group' => 'Pressure', 'Unit Name' => 'Pascal', 'AllowPrefix' => True ),
- 'atm' => array( 'Group' => 'Pressure', 'Unit Name' => 'Atmosphere', 'AllowPrefix' => True ),
- 'at' => array( 'Group' => 'Pressure', 'Unit Name' => 'Atmosphere', 'AllowPrefix' => True ),
- 'mmHg' => array( 'Group' => 'Pressure', 'Unit Name' => 'mm of Mercury', 'AllowPrefix' => True ),
- 'N' => array( 'Group' => 'Force', 'Unit Name' => 'Newton', 'AllowPrefix' => True ),
- 'dyn' => array( 'Group' => 'Force', 'Unit Name' => 'Dyne', 'AllowPrefix' => True ),
- 'dy' => array( 'Group' => 'Force', 'Unit Name' => 'Dyne', 'AllowPrefix' => True ),
- 'lbf' => array( 'Group' => 'Force', 'Unit Name' => 'Pound force', 'AllowPrefix' => False ),
- 'J' => array( 'Group' => 'Energy', 'Unit Name' => 'Joule', 'AllowPrefix' => True ),
- 'e' => array( 'Group' => 'Energy', 'Unit Name' => 'Erg', 'AllowPrefix' => True ),
- 'c' => array( 'Group' => 'Energy', 'Unit Name' => 'Thermodynamic calorie', 'AllowPrefix' => True ),
- 'cal' => array( 'Group' => 'Energy', 'Unit Name' => 'IT calorie', 'AllowPrefix' => True ),
- 'eV' => array( 'Group' => 'Energy', 'Unit Name' => 'Electron volt', 'AllowPrefix' => True ),
- 'ev' => array( 'Group' => 'Energy', 'Unit Name' => 'Electron volt', 'AllowPrefix' => True ),
- 'HPh' => array( 'Group' => 'Energy', 'Unit Name' => 'Horsepower-hour', 'AllowPrefix' => False ),
- 'hh' => array( 'Group' => 'Energy', 'Unit Name' => 'Horsepower-hour', 'AllowPrefix' => False ),
- 'Wh' => array( 'Group' => 'Energy', 'Unit Name' => 'Watt-hour', 'AllowPrefix' => True ),
- 'wh' => array( 'Group' => 'Energy', 'Unit Name' => 'Watt-hour', 'AllowPrefix' => True ),
- 'flb' => array( 'Group' => 'Energy', 'Unit Name' => 'Foot-pound', 'AllowPrefix' => False ),
- 'BTU' => array( 'Group' => 'Energy', 'Unit Name' => 'BTU', 'AllowPrefix' => False ),
- 'btu' => array( 'Group' => 'Energy', 'Unit Name' => 'BTU', 'AllowPrefix' => False ),
- 'HP' => array( 'Group' => 'Power', 'Unit Name' => 'Horsepower', 'AllowPrefix' => False ),
- 'h' => array( 'Group' => 'Power', 'Unit Name' => 'Horsepower', 'AllowPrefix' => False ),
- 'W' => array( 'Group' => 'Power', 'Unit Name' => 'Watt', 'AllowPrefix' => True ),
- 'w' => array( 'Group' => 'Power', 'Unit Name' => 'Watt', 'AllowPrefix' => True ),
- 'T' => array( 'Group' => 'Magnetism', 'Unit Name' => 'Tesla', 'AllowPrefix' => True ),
- 'ga' => array( 'Group' => 'Magnetism', 'Unit Name' => 'Gauss', 'AllowPrefix' => True ),
- 'C' => array( 'Group' => 'Temperature', 'Unit Name' => 'Celsius', 'AllowPrefix' => False ),
- 'cel' => array( 'Group' => 'Temperature', 'Unit Name' => 'Celsius', 'AllowPrefix' => False ),
- 'F' => array( 'Group' => 'Temperature', 'Unit Name' => 'Fahrenheit', 'AllowPrefix' => False ),
- 'fah' => array( 'Group' => 'Temperature', 'Unit Name' => 'Fahrenheit', 'AllowPrefix' => False ),
- 'K' => array( 'Group' => 'Temperature', 'Unit Name' => 'Kelvin', 'AllowPrefix' => False ),
- 'kel' => array( 'Group' => 'Temperature', 'Unit Name' => 'Kelvin', 'AllowPrefix' => False ),
- 'tsp' => array( 'Group' => 'Liquid', 'Unit Name' => 'Teaspoon', 'AllowPrefix' => False ),
- 'tbs' => array( 'Group' => 'Liquid', 'Unit Name' => 'Tablespoon', 'AllowPrefix' => False ),
- 'oz' => array( 'Group' => 'Liquid', 'Unit Name' => 'Fluid Ounce', 'AllowPrefix' => False ),
- 'cup' => array( 'Group' => 'Liquid', 'Unit Name' => 'Cup', 'AllowPrefix' => False ),
- 'pt' => array( 'Group' => 'Liquid', 'Unit Name' => 'U.S. Pint', 'AllowPrefix' => False ),
- 'us_pt' => array( 'Group' => 'Liquid', 'Unit Name' => 'U.S. Pint', 'AllowPrefix' => False ),
- 'uk_pt' => array( 'Group' => 'Liquid', 'Unit Name' => 'U.K. Pint', 'AllowPrefix' => False ),
- 'qt' => array( 'Group' => 'Liquid', 'Unit Name' => 'Quart', 'AllowPrefix' => False ),
- 'gal' => array( 'Group' => 'Liquid', 'Unit Name' => 'Gallon', 'AllowPrefix' => False ),
- 'l' => array( 'Group' => 'Liquid', 'Unit Name' => 'Litre', 'AllowPrefix' => True ),
- 'lt' => array( 'Group' => 'Liquid', 'Unit Name' => 'Litre', 'AllowPrefix' => True )
- );
-
- /**
- * Details of the Multiplier prefixes that can be used with Units of Measure in CONVERTUOM()
- *
- * @var mixed[]
- */
- private static $_conversionMultipliers = array( 'Y' => array( 'multiplier' => 1E24, 'name' => 'yotta' ),
- 'Z' => array( 'multiplier' => 1E21, 'name' => 'zetta' ),
- 'E' => array( 'multiplier' => 1E18, 'name' => 'exa' ),
- 'P' => array( 'multiplier' => 1E15, 'name' => 'peta' ),
- 'T' => array( 'multiplier' => 1E12, 'name' => 'tera' ),
- 'G' => array( 'multiplier' => 1E9, 'name' => 'giga' ),
- 'M' => array( 'multiplier' => 1E6, 'name' => 'mega' ),
- 'k' => array( 'multiplier' => 1E3, 'name' => 'kilo' ),
- 'h' => array( 'multiplier' => 1E2, 'name' => 'hecto' ),
- 'e' => array( 'multiplier' => 1E1, 'name' => 'deka' ),
- 'd' => array( 'multiplier' => 1E-1, 'name' => 'deci' ),
- 'c' => array( 'multiplier' => 1E-2, 'name' => 'centi' ),
- 'm' => array( 'multiplier' => 1E-3, 'name' => 'milli' ),
- 'u' => array( 'multiplier' => 1E-6, 'name' => 'micro' ),
- 'n' => array( 'multiplier' => 1E-9, 'name' => 'nano' ),
- 'p' => array( 'multiplier' => 1E-12, 'name' => 'pico' ),
- 'f' => array( 'multiplier' => 1E-15, 'name' => 'femto' ),
- 'a' => array( 'multiplier' => 1E-18, 'name' => 'atto' ),
- 'z' => array( 'multiplier' => 1E-21, 'name' => 'zepto' ),
- 'y' => array( 'multiplier' => 1E-24, 'name' => 'yocto' )
- );
-
- /**
- * Details of the Units of measure conversion factors, organised by group
- *
- * @var mixed[]
- */
- private static $_unitConversions = array( 'Mass' => array( 'g' => array( 'g' => 1.0,
- 'sg' => 6.85220500053478E-05,
- 'lbm' => 2.20462291469134E-03,
- 'u' => 6.02217000000000E+23,
- 'ozm' => 3.52739718003627E-02
- ),
- 'sg' => array( 'g' => 1.45938424189287E+04,
- 'sg' => 1.0,
- 'lbm' => 3.21739194101647E+01,
- 'u' => 8.78866000000000E+27,
- 'ozm' => 5.14782785944229E+02
- ),
- 'lbm' => array( 'g' => 4.5359230974881148E+02,
- 'sg' => 3.10810749306493E-02,
- 'lbm' => 1.0,
- 'u' => 2.73161000000000E+26,
- 'ozm' => 1.60000023429410E+01
- ),
- 'u' => array( 'g' => 1.66053100460465E-24,
- 'sg' => 1.13782988532950E-28,
- 'lbm' => 3.66084470330684E-27,
- 'u' => 1.0,
- 'ozm' => 5.85735238300524E-26
- ),
- 'ozm' => array( 'g' => 2.83495152079732E+01,
- 'sg' => 1.94256689870811E-03,
- 'lbm' => 6.24999908478882E-02,
- 'u' => 1.70725600000000E+25,
- 'ozm' => 1.0
- )
- ),
- 'Distance' => array( 'm' => array( 'm' => 1.0,
- 'mi' => 6.21371192237334E-04,
- 'Nmi' => 5.39956803455724E-04,
- 'in' => 3.93700787401575E+01,
- 'ft' => 3.28083989501312E+00,
- 'yd' => 1.09361329797891E+00,
- 'ang' => 1.00000000000000E+10,
- 'Pica' => 2.83464566929116E+03
- ),
- 'mi' => array( 'm' => 1.60934400000000E+03,
- 'mi' => 1.0,
- 'Nmi' => 8.68976241900648E-01,
- 'in' => 6.33600000000000E+04,
- 'ft' => 5.28000000000000E+03,
- 'yd' => 1.76000000000000E+03,
- 'ang' => 1.60934400000000E+13,
- 'Pica' => 4.56191999999971E+06
- ),
- 'Nmi' => array( 'm' => 1.85200000000000E+03,
- 'mi' => 1.15077944802354E+00,
- 'Nmi' => 1.0,
- 'in' => 7.29133858267717E+04,
- 'ft' => 6.07611548556430E+03,
- 'yd' => 2.02537182785694E+03,
- 'ang' => 1.85200000000000E+13,
- 'Pica' => 5.24976377952723E+06
- ),
- 'in' => array( 'm' => 2.54000000000000E-02,
- 'mi' => 1.57828282828283E-05,
- 'Nmi' => 1.37149028077754E-05,
- 'in' => 1.0,
- 'ft' => 8.33333333333333E-02,
- 'yd' => 2.77777777686643E-02,
- 'ang' => 2.54000000000000E+08,
- 'Pica' => 7.19999999999955E+01
- ),
- 'ft' => array( 'm' => 3.04800000000000E-01,
- 'mi' => 1.89393939393939E-04,
- 'Nmi' => 1.64578833693305E-04,
- 'in' => 1.20000000000000E+01,
- 'ft' => 1.0,
- 'yd' => 3.33333333223972E-01,
- 'ang' => 3.04800000000000E+09,
- 'Pica' => 8.63999999999946E+02
- ),
- 'yd' => array( 'm' => 9.14400000300000E-01,
- 'mi' => 5.68181818368230E-04,
- 'Nmi' => 4.93736501241901E-04,
- 'in' => 3.60000000118110E+01,
- 'ft' => 3.00000000000000E+00,
- 'yd' => 1.0,
- 'ang' => 9.14400000300000E+09,
- 'Pica' => 2.59200000085023E+03
- ),
- 'ang' => array( 'm' => 1.00000000000000E-10,
- 'mi' => 6.21371192237334E-14,
- 'Nmi' => 5.39956803455724E-14,
- 'in' => 3.93700787401575E-09,
- 'ft' => 3.28083989501312E-10,
- 'yd' => 1.09361329797891E-10,
- 'ang' => 1.0,
- 'Pica' => 2.83464566929116E-07
- ),
- 'Pica' => array( 'm' => 3.52777777777800E-04,
- 'mi' => 2.19205948372629E-07,
- 'Nmi' => 1.90484761219114E-07,
- 'in' => 1.38888888888898E-02,
- 'ft' => 1.15740740740748E-03,
- 'yd' => 3.85802469009251E-04,
- 'ang' => 3.52777777777800E+06,
- 'Pica' => 1.0
- )
- ),
- 'Time' => array( 'yr' => array( 'yr' => 1.0,
- 'day' => 365.25,
- 'hr' => 8766.0,
- 'mn' => 525960.0,
- 'sec' => 31557600.0
- ),
- 'day' => array( 'yr' => 2.73785078713210E-03,
- 'day' => 1.0,
- 'hr' => 24.0,
- 'mn' => 1440.0,
- 'sec' => 86400.0
- ),
- 'hr' => array( 'yr' => 1.14077116130504E-04,
- 'day' => 4.16666666666667E-02,
- 'hr' => 1.0,
- 'mn' => 60.0,
- 'sec' => 3600.0
- ),
- 'mn' => array( 'yr' => 1.90128526884174E-06,
- 'day' => 6.94444444444444E-04,
- 'hr' => 1.66666666666667E-02,
- 'mn' => 1.0,
- 'sec' => 60.0
- ),
- 'sec' => array( 'yr' => 3.16880878140289E-08,
- 'day' => 1.15740740740741E-05,
- 'hr' => 2.77777777777778E-04,
- 'mn' => 1.66666666666667E-02,
- 'sec' => 1.0
- )
- ),
- 'Pressure' => array( 'Pa' => array( 'Pa' => 1.0,
- 'p' => 1.0,
- 'atm' => 9.86923299998193E-06,
- 'at' => 9.86923299998193E-06,
- 'mmHg' => 7.50061707998627E-03
- ),
- 'p' => array( 'Pa' => 1.0,
- 'p' => 1.0,
- 'atm' => 9.86923299998193E-06,
- 'at' => 9.86923299998193E-06,
- 'mmHg' => 7.50061707998627E-03
- ),
- 'atm' => array( 'Pa' => 1.01324996583000E+05,
- 'p' => 1.01324996583000E+05,
- 'atm' => 1.0,
- 'at' => 1.0,
- 'mmHg' => 760.0
- ),
- 'at' => array( 'Pa' => 1.01324996583000E+05,
- 'p' => 1.01324996583000E+05,
- 'atm' => 1.0,
- 'at' => 1.0,
- 'mmHg' => 760.0
- ),
- 'mmHg' => array( 'Pa' => 1.33322363925000E+02,
- 'p' => 1.33322363925000E+02,
- 'atm' => 1.31578947368421E-03,
- 'at' => 1.31578947368421E-03,
- 'mmHg' => 1.0
- )
- ),
- 'Force' => array( 'N' => array( 'N' => 1.0,
- 'dyn' => 1.0E+5,
- 'dy' => 1.0E+5,
- 'lbf' => 2.24808923655339E-01
- ),
- 'dyn' => array( 'N' => 1.0E-5,
- 'dyn' => 1.0,
- 'dy' => 1.0,
- 'lbf' => 2.24808923655339E-06
- ),
- 'dy' => array( 'N' => 1.0E-5,
- 'dyn' => 1.0,
- 'dy' => 1.0,
- 'lbf' => 2.24808923655339E-06
- ),
- 'lbf' => array( 'N' => 4.448222,
- 'dyn' => 4.448222E+5,
- 'dy' => 4.448222E+5,
- 'lbf' => 1.0
- )
- ),
- 'Energy' => array( 'J' => array( 'J' => 1.0,
- 'e' => 9.99999519343231E+06,
- 'c' => 2.39006249473467E-01,
- 'cal' => 2.38846190642017E-01,
- 'eV' => 6.24145700000000E+18,
- 'ev' => 6.24145700000000E+18,
- 'HPh' => 3.72506430801000E-07,
- 'hh' => 3.72506430801000E-07,
- 'Wh' => 2.77777916238711E-04,
- 'wh' => 2.77777916238711E-04,
- 'flb' => 2.37304222192651E+01,
- 'BTU' => 9.47815067349015E-04,
- 'btu' => 9.47815067349015E-04
- ),
- 'e' => array( 'J' => 1.00000048065700E-07,
- 'e' => 1.0,
- 'c' => 2.39006364353494E-08,
- 'cal' => 2.38846305445111E-08,
- 'eV' => 6.24146000000000E+11,
- 'ev' => 6.24146000000000E+11,
- 'HPh' => 3.72506609848824E-14,
- 'hh' => 3.72506609848824E-14,
- 'Wh' => 2.77778049754611E-11,
- 'wh' => 2.77778049754611E-11,
- 'flb' => 2.37304336254586E-06,
- 'BTU' => 9.47815522922962E-11,
- 'btu' => 9.47815522922962E-11
- ),
- 'c' => array( 'J' => 4.18399101363672E+00,
- 'e' => 4.18398900257312E+07,
- 'c' => 1.0,
- 'cal' => 9.99330315287563E-01,
- 'eV' => 2.61142000000000E+19,
- 'ev' => 2.61142000000000E+19,
- 'HPh' => 1.55856355899327E-06,
- 'hh' => 1.55856355899327E-06,
- 'Wh' => 1.16222030532950E-03,
- 'wh' => 1.16222030532950E-03,
- 'flb' => 9.92878733152102E+01,
- 'BTU' => 3.96564972437776E-03,
- 'btu' => 3.96564972437776E-03
- ),
- 'cal' => array( 'J' => 4.18679484613929E+00,
- 'e' => 4.18679283372801E+07,
- 'c' => 1.00067013349059E+00,
- 'cal' => 1.0,
- 'eV' => 2.61317000000000E+19,
- 'ev' => 2.61317000000000E+19,
- 'HPh' => 1.55960800463137E-06,
- 'hh' => 1.55960800463137E-06,
- 'Wh' => 1.16299914807955E-03,
- 'wh' => 1.16299914807955E-03,
- 'flb' => 9.93544094443283E+01,
- 'BTU' => 3.96830723907002E-03,
- 'btu' => 3.96830723907002E-03
- ),
- 'eV' => array( 'J' => 1.60219000146921E-19,
- 'e' => 1.60218923136574E-12,
- 'c' => 3.82933423195043E-20,
- 'cal' => 3.82676978535648E-20,
- 'eV' => 1.0,
- 'ev' => 1.0,
- 'HPh' => 5.96826078912344E-26,
- 'hh' => 5.96826078912344E-26,
- 'Wh' => 4.45053000026614E-23,
- 'wh' => 4.45053000026614E-23,
- 'flb' => 3.80206452103492E-18,
- 'BTU' => 1.51857982414846E-22,
- 'btu' => 1.51857982414846E-22
- ),
- 'ev' => array( 'J' => 1.60219000146921E-19,
- 'e' => 1.60218923136574E-12,
- 'c' => 3.82933423195043E-20,
- 'cal' => 3.82676978535648E-20,
- 'eV' => 1.0,
- 'ev' => 1.0,
- 'HPh' => 5.96826078912344E-26,
- 'hh' => 5.96826078912344E-26,
- 'Wh' => 4.45053000026614E-23,
- 'wh' => 4.45053000026614E-23,
- 'flb' => 3.80206452103492E-18,
- 'BTU' => 1.51857982414846E-22,
- 'btu' => 1.51857982414846E-22
- ),
- 'HPh' => array( 'J' => 2.68451741316170E+06,
- 'e' => 2.68451612283024E+13,
- 'c' => 6.41616438565991E+05,
- 'cal' => 6.41186757845835E+05,
- 'eV' => 1.67553000000000E+25,
- 'ev' => 1.67553000000000E+25,
- 'HPh' => 1.0,
- 'hh' => 1.0,
- 'Wh' => 7.45699653134593E+02,
- 'wh' => 7.45699653134593E+02,
- 'flb' => 6.37047316692964E+07,
- 'BTU' => 2.54442605275546E+03,
- 'btu' => 2.54442605275546E+03
- ),
- 'hh' => array( 'J' => 2.68451741316170E+06,
- 'e' => 2.68451612283024E+13,
- 'c' => 6.41616438565991E+05,
- 'cal' => 6.41186757845835E+05,
- 'eV' => 1.67553000000000E+25,
- 'ev' => 1.67553000000000E+25,
- 'HPh' => 1.0,
- 'hh' => 1.0,
- 'Wh' => 7.45699653134593E+02,
- 'wh' => 7.45699653134593E+02,
- 'flb' => 6.37047316692964E+07,
- 'BTU' => 2.54442605275546E+03,
- 'btu' => 2.54442605275546E+03
- ),
- 'Wh' => array( 'J' => 3.59999820554720E+03,
- 'e' => 3.59999647518369E+10,
- 'c' => 8.60422069219046E+02,
- 'cal' => 8.59845857713046E+02,
- 'eV' => 2.24692340000000E+22,
- 'ev' => 2.24692340000000E+22,
- 'HPh' => 1.34102248243839E-03,
- 'hh' => 1.34102248243839E-03,
- 'Wh' => 1.0,
- 'wh' => 1.0,
- 'flb' => 8.54294774062316E+04,
- 'BTU' => 3.41213254164705E+00,
- 'btu' => 3.41213254164705E+00
- ),
- 'wh' => array( 'J' => 3.59999820554720E+03,
- 'e' => 3.59999647518369E+10,
- 'c' => 8.60422069219046E+02,
- 'cal' => 8.59845857713046E+02,
- 'eV' => 2.24692340000000E+22,
- 'ev' => 2.24692340000000E+22,
- 'HPh' => 1.34102248243839E-03,
- 'hh' => 1.34102248243839E-03,
- 'Wh' => 1.0,
- 'wh' => 1.0,
- 'flb' => 8.54294774062316E+04,
- 'BTU' => 3.41213254164705E+00,
- 'btu' => 3.41213254164705E+00
- ),
- 'flb' => array( 'J' => 4.21400003236424E-02,
- 'e' => 4.21399800687660E+05,
- 'c' => 1.00717234301644E-02,
- 'cal' => 1.00649785509554E-02,
- 'eV' => 2.63015000000000E+17,
- 'ev' => 2.63015000000000E+17,
- 'HPh' => 1.56974211145130E-08,
- 'hh' => 1.56974211145130E-08,
- 'Wh' => 1.17055614802000E-05,
- 'wh' => 1.17055614802000E-05,
- 'flb' => 1.0,
- 'BTU' => 3.99409272448406E-05,
- 'btu' => 3.99409272448406E-05
- ),
- 'BTU' => array( 'J' => 1.05505813786749E+03,
- 'e' => 1.05505763074665E+10,
- 'c' => 2.52165488508168E+02,
- 'cal' => 2.51996617135510E+02,
- 'eV' => 6.58510000000000E+21,
- 'ev' => 6.58510000000000E+21,
- 'HPh' => 3.93015941224568E-04,
- 'hh' => 3.93015941224568E-04,
- 'Wh' => 2.93071851047526E-01,
- 'wh' => 2.93071851047526E-01,
- 'flb' => 2.50369750774671E+04,
- 'BTU' => 1.0,
- 'btu' => 1.0,
- ),
- 'btu' => array( 'J' => 1.05505813786749E+03,
- 'e' => 1.05505763074665E+10,
- 'c' => 2.52165488508168E+02,
- 'cal' => 2.51996617135510E+02,
- 'eV' => 6.58510000000000E+21,
- 'ev' => 6.58510000000000E+21,
- 'HPh' => 3.93015941224568E-04,
- 'hh' => 3.93015941224568E-04,
- 'Wh' => 2.93071851047526E-01,
- 'wh' => 2.93071851047526E-01,
- 'flb' => 2.50369750774671E+04,
- 'BTU' => 1.0,
- 'btu' => 1.0,
- )
- ),
- 'Power' => array( 'HP' => array( 'HP' => 1.0,
- 'h' => 1.0,
- 'W' => 7.45701000000000E+02,
- 'w' => 7.45701000000000E+02
- ),
- 'h' => array( 'HP' => 1.0,
- 'h' => 1.0,
- 'W' => 7.45701000000000E+02,
- 'w' => 7.45701000000000E+02
- ),
- 'W' => array( 'HP' => 1.34102006031908E-03,
- 'h' => 1.34102006031908E-03,
- 'W' => 1.0,
- 'w' => 1.0
- ),
- 'w' => array( 'HP' => 1.34102006031908E-03,
- 'h' => 1.34102006031908E-03,
- 'W' => 1.0,
- 'w' => 1.0
- )
- ),
- 'Magnetism' => array( 'T' => array( 'T' => 1.0,
- 'ga' => 10000.0
- ),
- 'ga' => array( 'T' => 0.0001,
- 'ga' => 1.0
- )
- ),
- 'Liquid' => array( 'tsp' => array( 'tsp' => 1.0,
- 'tbs' => 3.33333333333333E-01,
- 'oz' => 1.66666666666667E-01,
- 'cup' => 2.08333333333333E-02,
- 'pt' => 1.04166666666667E-02,
- 'us_pt' => 1.04166666666667E-02,
- 'uk_pt' => 8.67558516821960E-03,
- 'qt' => 5.20833333333333E-03,
- 'gal' => 1.30208333333333E-03,
- 'l' => 4.92999408400710E-03,
- 'lt' => 4.92999408400710E-03
- ),
- 'tbs' => array( 'tsp' => 3.00000000000000E+00,
- 'tbs' => 1.0,
- 'oz' => 5.00000000000000E-01,
- 'cup' => 6.25000000000000E-02,
- 'pt' => 3.12500000000000E-02,
- 'us_pt' => 3.12500000000000E-02,
- 'uk_pt' => 2.60267555046588E-02,
- 'qt' => 1.56250000000000E-02,
- 'gal' => 3.90625000000000E-03,
- 'l' => 1.47899822520213E-02,
- 'lt' => 1.47899822520213E-02
- ),
- 'oz' => array( 'tsp' => 6.00000000000000E+00,
- 'tbs' => 2.00000000000000E+00,
- 'oz' => 1.0,
- 'cup' => 1.25000000000000E-01,
- 'pt' => 6.25000000000000E-02,
- 'us_pt' => 6.25000000000000E-02,
- 'uk_pt' => 5.20535110093176E-02,
- 'qt' => 3.12500000000000E-02,
- 'gal' => 7.81250000000000E-03,
- 'l' => 2.95799645040426E-02,
- 'lt' => 2.95799645040426E-02
- ),
- 'cup' => array( 'tsp' => 4.80000000000000E+01,
- 'tbs' => 1.60000000000000E+01,
- 'oz' => 8.00000000000000E+00,
- 'cup' => 1.0,
- 'pt' => 5.00000000000000E-01,
- 'us_pt' => 5.00000000000000E-01,
- 'uk_pt' => 4.16428088074541E-01,
- 'qt' => 2.50000000000000E-01,
- 'gal' => 6.25000000000000E-02,
- 'l' => 2.36639716032341E-01,
- 'lt' => 2.36639716032341E-01
- ),
- 'pt' => array( 'tsp' => 9.60000000000000E+01,
- 'tbs' => 3.20000000000000E+01,
- 'oz' => 1.60000000000000E+01,
- 'cup' => 2.00000000000000E+00,
- 'pt' => 1.0,
- 'us_pt' => 1.0,
- 'uk_pt' => 8.32856176149081E-01,
- 'qt' => 5.00000000000000E-01,
- 'gal' => 1.25000000000000E-01,
- 'l' => 4.73279432064682E-01,
- 'lt' => 4.73279432064682E-01
- ),
- 'us_pt' => array( 'tsp' => 9.60000000000000E+01,
- 'tbs' => 3.20000000000000E+01,
- 'oz' => 1.60000000000000E+01,
- 'cup' => 2.00000000000000E+00,
- 'pt' => 1.0,
- 'us_pt' => 1.0,
- 'uk_pt' => 8.32856176149081E-01,
- 'qt' => 5.00000000000000E-01,
- 'gal' => 1.25000000000000E-01,
- 'l' => 4.73279432064682E-01,
- 'lt' => 4.73279432064682E-01
- ),
- 'uk_pt' => array( 'tsp' => 1.15266000000000E+02,
- 'tbs' => 3.84220000000000E+01,
- 'oz' => 1.92110000000000E+01,
- 'cup' => 2.40137500000000E+00,
- 'pt' => 1.20068750000000E+00,
- 'us_pt' => 1.20068750000000E+00,
- 'uk_pt' => 1.0,
- 'qt' => 6.00343750000000E-01,
- 'gal' => 1.50085937500000E-01,
- 'l' => 5.68260698087162E-01,
- 'lt' => 5.68260698087162E-01
- ),
- 'qt' => array( 'tsp' => 1.92000000000000E+02,
- 'tbs' => 6.40000000000000E+01,
- 'oz' => 3.20000000000000E+01,
- 'cup' => 4.00000000000000E+00,
- 'pt' => 2.00000000000000E+00,
- 'us_pt' => 2.00000000000000E+00,
- 'uk_pt' => 1.66571235229816E+00,
- 'qt' => 1.0,
- 'gal' => 2.50000000000000E-01,
- 'l' => 9.46558864129363E-01,
- 'lt' => 9.46558864129363E-01
- ),
- 'gal' => array( 'tsp' => 7.68000000000000E+02,
- 'tbs' => 2.56000000000000E+02,
- 'oz' => 1.28000000000000E+02,
- 'cup' => 1.60000000000000E+01,
- 'pt' => 8.00000000000000E+00,
- 'us_pt' => 8.00000000000000E+00,
- 'uk_pt' => 6.66284940919265E+00,
- 'qt' => 4.00000000000000E+00,
- 'gal' => 1.0,
- 'l' => 3.78623545651745E+00,
- 'lt' => 3.78623545651745E+00
- ),
- 'l' => array( 'tsp' => 2.02840000000000E+02,
- 'tbs' => 6.76133333333333E+01,
- 'oz' => 3.38066666666667E+01,
- 'cup' => 4.22583333333333E+00,
- 'pt' => 2.11291666666667E+00,
- 'us_pt' => 2.11291666666667E+00,
- 'uk_pt' => 1.75975569552166E+00,
- 'qt' => 1.05645833333333E+00,
- 'gal' => 2.64114583333333E-01,
- 'l' => 1.0,
- 'lt' => 1.0
- ),
- 'lt' => array( 'tsp' => 2.02840000000000E+02,
- 'tbs' => 6.76133333333333E+01,
- 'oz' => 3.38066666666667E+01,
- 'cup' => 4.22583333333333E+00,
- 'pt' => 2.11291666666667E+00,
- 'us_pt' => 2.11291666666667E+00,
- 'uk_pt' => 1.75975569552166E+00,
- 'qt' => 1.05645833333333E+00,
- 'gal' => 2.64114583333333E-01,
- 'l' => 1.0,
- 'lt' => 1.0
- )
- )
- );
-
-
- /**
- * _parseComplex
- *
- * Parses a complex number into its real and imaginary parts, and an I or J suffix
- *
- * @param string $complexNumber The complex number
- * @return string[] Indexed on "real", "imaginary" and "suffix"
- */
- public static function _parseComplex($complexNumber) {
- $workString = (string) $complexNumber;
-
- $realNumber = $imaginary = 0;
- // Extract the suffix, if there is one
- $suffix = substr($workString,-1);
- if (!is_numeric($suffix)) {
- $workString = substr($workString,0,-1);
- } else {
- $suffix = '';
- }
-
- // Split the input into its Real and Imaginary components
- $leadingSign = 0;
- if (strlen($workString) > 0) {
- $leadingSign = (($workString{0} == '+') || ($workString{0} == '-')) ? 1 : 0;
- }
- $power = '';
- $realNumber = strtok($workString, '+-');
- if (strtoupper(substr($realNumber,-1)) == 'E') {
- $power = strtok('+-');
- ++$leadingSign;
- }
-
- $realNumber = substr($workString,0,strlen($realNumber)+strlen($power)+$leadingSign);
-
- if ($suffix != '') {
- $imaginary = substr($workString,strlen($realNumber));
-
- if (($imaginary == '') && (($realNumber == '') || ($realNumber == '+') || ($realNumber == '-'))) {
- $imaginary = $realNumber.'1';
- $realNumber = '0';
- } else if ($imaginary == '') {
- $imaginary = $realNumber;
- $realNumber = '0';
- } elseif (($imaginary == '+') || ($imaginary == '-')) {
- $imaginary .= '1';
- }
- }
-
- return array( 'real' => $realNumber,
- 'imaginary' => $imaginary,
- 'suffix' => $suffix
- );
- } // function _parseComplex()
-
-
- /**
- * _cleanComplex
- *
- * Cleans the leading characters in a complex number string
- *
- * @param string $complexNumber The complex number to clean
- * @return string The "cleaned" complex number
- */
- private static function _cleanComplex($complexNumber) {
- if ($complexNumber{0} == '+') $complexNumber = substr($complexNumber,1);
- if ($complexNumber{0} == '0') $complexNumber = substr($complexNumber,1);
- if ($complexNumber{0} == '.') $complexNumber = '0'.$complexNumber;
- if ($complexNumber{0} == '+') $complexNumber = substr($complexNumber,1);
- return $complexNumber;
- }
-
-
- private static function _nbrConversionFormat($xVal,$places) {
- if (!is_null($places)) {
- if (strlen($xVal) <= $places) {
- return substr(str_pad($xVal,$places,'0',STR_PAD_LEFT),-10);
- } else {
- return PHPExcel_Calculation_Functions::NaN();
- }
- }
-
- return substr($xVal,-10);
- } // function _nbrConversionFormat()
-
-
- /**
- * BESSELI
- *
- * Returns the modified Bessel function In(x), which is equivalent to the Bessel function evaluated
- * for purely imaginary arguments
- *
- * Excel Function:
- * BESSELI(x,ord)
- *
- * @access public
- * @category Engineering Functions
- * @param float $x The value at which to evaluate the function.
- * If x is nonnumeric, BESSELI returns the #VALUE! error value.
- * @param integer $ord The order of the Bessel function.
- * If ord is not an integer, it is truncated.
- * If $ord is nonnumeric, BESSELI returns the #VALUE! error value.
- * If $ord < 0, BESSELI returns the #NUM! error value.
- * @return float
- *
- */
- public static function BESSELI($x, $ord) {
- $x = (is_null($x)) ? 0.0 : PHPExcel_Calculation_Functions::flattenSingleValue($x);
- $ord = (is_null($ord)) ? 0.0 : PHPExcel_Calculation_Functions::flattenSingleValue($ord);
-
- if ((is_numeric($x)) && (is_numeric($ord))) {
- $ord = floor($ord);
- if ($ord < 0) {
- return PHPExcel_Calculation_Functions::NaN();
- }
-
- if (abs($x) <= 30) {
- $fResult = $fTerm = pow($x / 2, $ord) / PHPExcel_Calculation_MathTrig::FACT($ord);
- $ordK = 1;
- $fSqrX = ($x * $x) / 4;
- do {
- $fTerm *= $fSqrX;
- $fTerm /= ($ordK * ($ordK + $ord));
- $fResult += $fTerm;
- } while ((abs($fTerm) > 1e-12) && (++$ordK < 100));
- } else {
- $f_2_PI = 2 * M_PI;
-
- $fXAbs = abs($x);
- $fResult = exp($fXAbs) / sqrt($f_2_PI * $fXAbs);
- if (($ord & 1) && ($x < 0)) {
- $fResult = -$fResult;
- }
- }
- return (is_nan($fResult)) ? PHPExcel_Calculation_Functions::NaN() : $fResult;
- }
- return PHPExcel_Calculation_Functions::VALUE();
- } // function BESSELI()
-
-
- /**
- * BESSELJ
- *
- * Returns the Bessel function
- *
- * Excel Function:
- * BESSELJ(x,ord)
- *
- * @access public
- * @category Engineering Functions
- * @param float $x The value at which to evaluate the function.
- * If x is nonnumeric, BESSELJ returns the #VALUE! error value.
- * @param integer $ord The order of the Bessel function. If n is not an integer, it is truncated.
- * If $ord is nonnumeric, BESSELJ returns the #VALUE! error value.
- * If $ord < 0, BESSELJ returns the #NUM! error value.
- * @return float
- *
- */
- public static function BESSELJ($x, $ord) {
- $x = (is_null($x)) ? 0.0 : PHPExcel_Calculation_Functions::flattenSingleValue($x);
- $ord = (is_null($ord)) ? 0.0 : PHPExcel_Calculation_Functions::flattenSingleValue($ord);
-
- if ((is_numeric($x)) && (is_numeric($ord))) {
- $ord = floor($ord);
- if ($ord < 0) {
- return PHPExcel_Calculation_Functions::NaN();
- }
-
- $fResult = 0;
- if (abs($x) <= 30) {
- $fResult = $fTerm = pow($x / 2, $ord) / PHPExcel_Calculation_MathTrig::FACT($ord);
- $ordK = 1;
- $fSqrX = ($x * $x) / -4;
- do {
- $fTerm *= $fSqrX;
- $fTerm /= ($ordK * ($ordK + $ord));
- $fResult += $fTerm;
- } while ((abs($fTerm) > 1e-12) && (++$ordK < 100));
- } else {
- $f_PI_DIV_2 = M_PI / 2;
- $f_PI_DIV_4 = M_PI / 4;
-
- $fXAbs = abs($x);
- $fResult = sqrt(M_2DIVPI / $fXAbs) * cos($fXAbs - $ord * $f_PI_DIV_2 - $f_PI_DIV_4);
- if (($ord & 1) && ($x < 0)) {
- $fResult = -$fResult;
- }
- }
- return (is_nan($fResult)) ? PHPExcel_Calculation_Functions::NaN() : $fResult;
- }
- return PHPExcel_Calculation_Functions::VALUE();
- } // function BESSELJ()
-
-
- private static function _Besselk0($fNum) {
- if ($fNum <= 2) {
- $fNum2 = $fNum * 0.5;
- $y = ($fNum2 * $fNum2);
- $fRet = -log($fNum2) * self::BESSELI($fNum, 0) +
- (-0.57721566 + $y * (0.42278420 + $y * (0.23069756 + $y * (0.3488590e-1 + $y * (0.262698e-2 + $y *
- (0.10750e-3 + $y * 0.74e-5))))));
- } else {
- $y = 2 / $fNum;
- $fRet = exp(-$fNum) / sqrt($fNum) *
- (1.25331414 + $y * (-0.7832358e-1 + $y * (0.2189568e-1 + $y * (-0.1062446e-1 + $y *
- (0.587872e-2 + $y * (-0.251540e-2 + $y * 0.53208e-3))))));
- }
- return $fRet;
- } // function _Besselk0()
-
-
- private static function _Besselk1($fNum) {
- if ($fNum <= 2) {
- $fNum2 = $fNum * 0.5;
- $y = ($fNum2 * $fNum2);
- $fRet = log($fNum2) * self::BESSELI($fNum, 1) +
- (1 + $y * (0.15443144 + $y * (-0.67278579 + $y * (-0.18156897 + $y * (-0.1919402e-1 + $y *
- (-0.110404e-2 + $y * (-0.4686e-4))))))) / $fNum;
- } else {
- $y = 2 / $fNum;
- $fRet = exp(-$fNum) / sqrt($fNum) *
- (1.25331414 + $y * (0.23498619 + $y * (-0.3655620e-1 + $y * (0.1504268e-1 + $y * (-0.780353e-2 + $y *
- (0.325614e-2 + $y * (-0.68245e-3)))))));
- }
- return $fRet;
- } // function _Besselk1()
-
-
- /**
- * BESSELK
- *
- * Returns the modified Bessel function Kn(x), which is equivalent to the Bessel functions evaluated
- * for purely imaginary arguments.
- *
- * Excel Function:
- * BESSELK(x,ord)
- *
- * @access public
- * @category Engineering Functions
- * @param float $x The value at which to evaluate the function.
- * If x is nonnumeric, BESSELK returns the #VALUE! error value.
- * @param integer $ord The order of the Bessel function. If n is not an integer, it is truncated.
- * If $ord is nonnumeric, BESSELK returns the #VALUE! error value.
- * If $ord < 0, BESSELK returns the #NUM! error value.
- * @return float
- *
- */
- public static function BESSELK($x, $ord) {
- $x = (is_null($x)) ? 0.0 : PHPExcel_Calculation_Functions::flattenSingleValue($x);
- $ord = (is_null($ord)) ? 0.0 : PHPExcel_Calculation_Functions::flattenSingleValue($ord);
-
- if ((is_numeric($x)) && (is_numeric($ord))) {
- if (($ord < 0) || ($x == 0.0)) {
- return PHPExcel_Calculation_Functions::NaN();
- }
-
- switch(floor($ord)) {
- case 0 : return self::_Besselk0($x);
- break;
- case 1 : return self::_Besselk1($x);
- break;
- default : $fTox = 2 / $x;
- $fBkm = self::_Besselk0($x);
- $fBk = self::_Besselk1($x);
- for ($n = 1; $n < $ord; ++$n) {
- $fBkp = $fBkm + $n * $fTox * $fBk;
- $fBkm = $fBk;
- $fBk = $fBkp;
- }
- }
- return (is_nan($fBk)) ? PHPExcel_Calculation_Functions::NaN() : $fBk;
- }
- return PHPExcel_Calculation_Functions::VALUE();
- } // function BESSELK()
-
-
- private static function _Bessely0($fNum) {
- if ($fNum < 8.0) {
- $y = ($fNum * $fNum);
- $f1 = -2957821389.0 + $y * (7062834065.0 + $y * (-512359803.6 + $y * (10879881.29 + $y * (-86327.92757 + $y * 228.4622733))));
- $f2 = 40076544269.0 + $y * (745249964.8 + $y * (7189466.438 + $y * (47447.26470 + $y * (226.1030244 + $y))));
- $fRet = $f1 / $f2 + 0.636619772 * self::BESSELJ($fNum, 0) * log($fNum);
- } else {
- $z = 8.0 / $fNum;
- $y = ($z * $z);
- $xx = $fNum - 0.785398164;
- $f1 = 1 + $y * (-0.1098628627e-2 + $y * (0.2734510407e-4 + $y * (-0.2073370639e-5 + $y * 0.2093887211e-6)));
- $f2 = -0.1562499995e-1 + $y * (0.1430488765e-3 + $y * (-0.6911147651e-5 + $y * (0.7621095161e-6 + $y * (-0.934945152e-7))));
- $fRet = sqrt(0.636619772 / $fNum) * (sin($xx) * $f1 + $z * cos($xx) * $f2);
- }
- return $fRet;
- } // function _Bessely0()
-
-
- private static function _Bessely1($fNum) {
- if ($fNum < 8.0) {
- $y = ($fNum * $fNum);
- $f1 = $fNum * (-0.4900604943e13 + $y * (0.1275274390e13 + $y * (-0.5153438139e11 + $y * (0.7349264551e9 + $y *
- (-0.4237922726e7 + $y * 0.8511937935e4)))));
- $f2 = 0.2499580570e14 + $y * (0.4244419664e12 + $y * (0.3733650367e10 + $y * (0.2245904002e8 + $y *
- (0.1020426050e6 + $y * (0.3549632885e3 + $y)))));
- $fRet = $f1 / $f2 + 0.636619772 * ( self::BESSELJ($fNum, 1) * log($fNum) - 1 / $fNum);
- } else {
- $fRet = sqrt(0.636619772 / $fNum) * sin($fNum - 2.356194491);
- }
- return $fRet;
- } // function _Bessely1()
-
-
- /**
- * BESSELY
- *
- * Returns the Bessel function, which is also called the Weber function or the Neumann function.
- *
- * Excel Function:
- * BESSELY(x,ord)
- *
- * @access public
- * @category Engineering Functions
- * @param float $x The value at which to evaluate the function.
- * If x is nonnumeric, BESSELK returns the #VALUE! error value.
- * @param integer $ord The order of the Bessel function. If n is not an integer, it is truncated.
- * If $ord is nonnumeric, BESSELK returns the #VALUE! error value.
- * If $ord < 0, BESSELK returns the #NUM! error value.
- *
- * @return float
- */
- public static function BESSELY($x, $ord) {
- $x = (is_null($x)) ? 0.0 : PHPExcel_Calculation_Functions::flattenSingleValue($x);
- $ord = (is_null($ord)) ? 0.0 : PHPExcel_Calculation_Functions::flattenSingleValue($ord);
-
- if ((is_numeric($x)) && (is_numeric($ord))) {
- if (($ord < 0) || ($x == 0.0)) {
- return PHPExcel_Calculation_Functions::NaN();
- }
-
- switch(floor($ord)) {
- case 0 : return self::_Bessely0($x);
- break;
- case 1 : return self::_Bessely1($x);
- break;
- default: $fTox = 2 / $x;
- $fBym = self::_Bessely0($x);
- $fBy = self::_Bessely1($x);
- for ($n = 1; $n < $ord; ++$n) {
- $fByp = $n * $fTox * $fBy - $fBym;
- $fBym = $fBy;
- $fBy = $fByp;
- }
- }
- return (is_nan($fBy)) ? PHPExcel_Calculation_Functions::NaN() : $fBy;
- }
- return PHPExcel_Calculation_Functions::VALUE();
- } // function BESSELY()
-
-
- /**
- * BINTODEC
- *
- * Return a binary value as decimal.
- *
- * Excel Function:
- * BIN2DEC(x)
- *
- * @access public
- * @category Engineering Functions
- * @param string $x The binary number (as a string) that you want to convert. The number
- * cannot contain more than 10 characters (10 bits). The most significant
- * bit of number is the sign bit. The remaining 9 bits are magnitude bits.
- * Negative numbers are represented using two's-complement notation.
- * If number is not a valid binary number, or if number contains more than
- * 10 characters (10 bits), BIN2DEC returns the #NUM! error value.
- * @return string
- */
- public static function BINTODEC($x) {
- $x = PHPExcel_Calculation_Functions::flattenSingleValue($x);
-
- if (is_bool($x)) {
- if (PHPExcel_Calculation_Functions::getCompatibilityMode() == PHPExcel_Calculation_Functions::COMPATIBILITY_OPENOFFICE) {
- $x = (int) $x;
- } else {
- return PHPExcel_Calculation_Functions::VALUE();
- }
- }
- if (PHPExcel_Calculation_Functions::getCompatibilityMode() == PHPExcel_Calculation_Functions::COMPATIBILITY_GNUMERIC) {
- $x = floor($x);
- }
- $x = (string) $x;
- if (strlen($x) > preg_match_all('/[01]/',$x,$out)) {
- return PHPExcel_Calculation_Functions::NaN();
- }
- if (strlen($x) > 10) {
- return PHPExcel_Calculation_Functions::NaN();
- } elseif (strlen($x) == 10) {
- // Two's Complement
- $x = substr($x,-9);
- return '-'.(512-bindec($x));
- }
- return bindec($x);
- } // function BINTODEC()
-
-
- /**
- * BINTOHEX
- *
- * Return a binary value as hex.
- *
- * Excel Function:
- * BIN2HEX(x[,places])
- *
- * @access public
- * @category Engineering Functions
- * @param string $x The binary number (as a string) that you want to convert. The number
- * cannot contain more than 10 characters (10 bits). The most significant
- * bit of number is the sign bit. The remaining 9 bits are magnitude bits.
- * Negative numbers are represented using two's-complement notation.
- * If number is not a valid binary number, or if number contains more than
- * 10 characters (10 bits), BIN2HEX returns the #NUM! error value.
- * @param integer $places The number of characters to use. If places is omitted, BIN2HEX uses the
- * minimum number of characters necessary. Places is useful for padding the
- * return value with leading 0s (zeros).
- * If places is not an integer, it is truncated.
- * If places is nonnumeric, BIN2HEX returns the #VALUE! error value.
- * If places is negative, BIN2HEX returns the #NUM! error value.
- * @return string
- */
- public static function BINTOHEX($x, $places=NULL) {
- $x = PHPExcel_Calculation_Functions::flattenSingleValue($x);
- $places = PHPExcel_Calculation_Functions::flattenSingleValue($places);
-
- if (is_bool($x)) {
- if (PHPExcel_Calculation_Functions::getCompatibilityMode() == PHPExcel_Calculation_Functions::COMPATIBILITY_OPENOFFICE) {
- $x = (int) $x;
- } else {
- return PHPExcel_Calculation_Functions::VALUE();
- }
- }
- if (PHPExcel_Calculation_Functions::getCompatibilityMode() == PHPExcel_Calculation_Functions::COMPATIBILITY_GNUMERIC) {
- $x = floor($x);
- }
- $x = (string) $x;
- if (strlen($x) > preg_match_all('/[01]/',$x,$out)) {
- return PHPExcel_Calculation_Functions::NaN();
- }
- if (strlen($x) > 10) {
- return PHPExcel_Calculation_Functions::NaN();
- } elseif (strlen($x) == 10) {
- // Two's Complement
- return str_repeat('F',8).substr(strtoupper(dechex(bindec(substr($x,-9)))),-2);
- }
- $hexVal = (string) strtoupper(dechex(bindec($x)));
-
- return self::_nbrConversionFormat($hexVal,$places);
- } // function BINTOHEX()
-
-
- /**
- * BINTOOCT
- *
- * Return a binary value as octal.
- *
- * Excel Function:
- * BIN2OCT(x[,places])
- *
- * @access public
- * @category Engineering Functions
- * @param string $x The binary number (as a string) that you want to convert. The number
- * cannot contain more than 10 characters (10 bits). The most significant
- * bit of number is the sign bit. The remaining 9 bits are magnitude bits.
- * Negative numbers are represented using two's-complement notation.
- * If number is not a valid binary number, or if number contains more than
- * 10 characters (10 bits), BIN2OCT returns the #NUM! error value.
- * @param integer $places The number of characters to use. If places is omitted, BIN2OCT uses the
- * minimum number of characters necessary. Places is useful for padding the
- * return value with leading 0s (zeros).
- * If places is not an integer, it is truncated.
- * If places is nonnumeric, BIN2OCT returns the #VALUE! error value.
- * If places is negative, BIN2OCT returns the #NUM! error value.
- * @return string
- */
- public static function BINTOOCT($x, $places=NULL) {
- $x = PHPExcel_Calculation_Functions::flattenSingleValue($x);
- $places = PHPExcel_Calculation_Functions::flattenSingleValue($places);
-
- if (is_bool($x)) {
- if (PHPExcel_Calculation_Functions::getCompatibilityMode() == PHPExcel_Calculation_Functions::COMPATIBILITY_OPENOFFICE) {
- $x = (int) $x;
- } else {
- return PHPExcel_Calculation_Functions::VALUE();
- }
- }
- if (PHPExcel_Calculation_Functions::getCompatibilityMode() == PHPExcel_Calculation_Functions::COMPATIBILITY_GNUMERIC) {
- $x = floor($x);
- }
- $x = (string) $x;
- if (strlen($x) > preg_match_all('/[01]/',$x,$out)) {
- return PHPExcel_Calculation_Functions::NaN();
- }
- if (strlen($x) > 10) {
- return PHPExcel_Calculation_Functions::NaN();
- } elseif (strlen($x) == 10) {
- // Two's Complement
- return str_repeat('7',7).substr(strtoupper(decoct(bindec(substr($x,-9)))),-3);
- }
- $octVal = (string) decoct(bindec($x));
-
- return self::_nbrConversionFormat($octVal,$places);
- } // function BINTOOCT()
-
-
- /**
- * DECTOBIN
- *
- * Return a decimal value as binary.
- *
- * Excel Function:
- * DEC2BIN(x[,places])
- *
- * @access public
- * @category Engineering Functions
- * @param string $x The decimal integer you want to convert. If number is negative,
- * valid place values are ignored and DEC2BIN returns a 10-character
- * (10-bit) binary number in which the most significant bit is the sign
- * bit. The remaining 9 bits are magnitude bits. Negative numbers are
- * represented using two's-complement notation.
- * If number < -512 or if number > 511, DEC2BIN returns the #NUM! error
- * value.
- * If number is nonnumeric, DEC2BIN returns the #VALUE! error value.
- * If DEC2BIN requires more than places characters, it returns the #NUM!
- * error value.
- * @param integer $places The number of characters to use. If places is omitted, DEC2BIN uses
- * the minimum number of characters necessary. Places is useful for
- * padding the return value with leading 0s (zeros).
- * If places is not an integer, it is truncated.
- * If places is nonnumeric, DEC2BIN returns the #VALUE! error value.
- * If places is zero or negative, DEC2BIN returns the #NUM! error value.
- * @return string
- */
- public static function DECTOBIN($x, $places=NULL) {
- $x = PHPExcel_Calculation_Functions::flattenSingleValue($x);
- $places = PHPExcel_Calculation_Functions::flattenSingleValue($places);
-
- if (is_bool($x)) {
- if (PHPExcel_Calculation_Functions::getCompatibilityMode() == PHPExcel_Calculation_Functions::COMPATIBILITY_OPENOFFICE) {
- $x = (int) $x;
- } else {
- return PHPExcel_Calculation_Functions::VALUE();
- }
- }
- $x = (string) $x;
- if (strlen($x) > preg_match_all('/[-0123456789.]/',$x,$out)) {
- return PHPExcel_Calculation_Functions::VALUE();
- }
- $x = (string) floor($x);
- $r = decbin($x);
- if (strlen($r) == 32) {
- // Two's Complement
- $r = substr($r,-10);
- } elseif (strlen($r) > 11) {
- return PHPExcel_Calculation_Functions::NaN();
- }
-
- return self::_nbrConversionFormat($r,$places);
- } // function DECTOBIN()
-
-
- /**
- * DECTOHEX
- *
- * Return a decimal value as hex.
- *
- * Excel Function:
- * DEC2HEX(x[,places])
- *
- * @access public
- * @category Engineering Functions
- * @param string $x The decimal integer you want to convert. If number is negative,
- * places is ignored and DEC2HEX returns a 10-character (40-bit)
- * hexadecimal number in which the most significant bit is the sign
- * bit. The remaining 39 bits are magnitude bits. Negative numbers
- * are represented using two's-complement notation.
- * If number < -549,755,813,888 or if number > 549,755,813,887,
- * DEC2HEX returns the #NUM! error value.
- * If number is nonnumeric, DEC2HEX returns the #VALUE! error value.
- * If DEC2HEX requires more than places characters, it returns the
- * #NUM! error value.
- * @param integer $places The number of characters to use. If places is omitted, DEC2HEX uses
- * the minimum number of characters necessary. Places is useful for
- * padding the return value with leading 0s (zeros).
- * If places is not an integer, it is truncated.
- * If places is nonnumeric, DEC2HEX returns the #VALUE! error value.
- * If places is zero or negative, DEC2HEX returns the #NUM! error value.
- * @return string
- */
- public static function DECTOHEX($x, $places=null) {
- $x = PHPExcel_Calculation_Functions::flattenSingleValue($x);
- $places = PHPExcel_Calculation_Functions::flattenSingleValue($places);
-
- if (is_bool($x)) {
- if (PHPExcel_Calculation_Functions::getCompatibilityMode() == PHPExcel_Calculation_Functions::COMPATIBILITY_OPENOFFICE) {
- $x = (int) $x;
- } else {
- return PHPExcel_Calculation_Functions::VALUE();
- }
- }
- $x = (string) $x;
- if (strlen($x) > preg_match_all('/[-0123456789.]/',$x,$out)) {
- return PHPExcel_Calculation_Functions::VALUE();
- }
- $x = (string) floor($x);
- $r = strtoupper(dechex($x));
- if (strlen($r) == 8) {
- // Two's Complement
- $r = 'FF'.$r;
- }
-
- return self::_nbrConversionFormat($r,$places);
- } // function DECTOHEX()
-
-
- /**
- * DECTOOCT
- *
- * Return an decimal value as octal.
- *
- * Excel Function:
- * DEC2OCT(x[,places])
- *
- * @access public
- * @category Engineering Functions
- * @param string $x The decimal integer you want to convert. If number is negative,
- * places is ignored and DEC2OCT returns a 10-character (30-bit)
- * octal number in which the most significant bit is the sign bit.
- * The remaining 29 bits are magnitude bits. Negative numbers are
- * represented using two's-complement notation.
- * If number < -536,870,912 or if number > 536,870,911, DEC2OCT
- * returns the #NUM! error value.
- * If number is nonnumeric, DEC2OCT returns the #VALUE! error value.
- * If DEC2OCT requires more than places characters, it returns the
- * #NUM! error value.
- * @param integer $places The number of characters to use. If places is omitted, DEC2OCT uses
- * the minimum number of characters necessary. Places is useful for
- * padding the return value with leading 0s (zeros).
- * If places is not an integer, it is truncated.
- * If places is nonnumeric, DEC2OCT returns the #VALUE! error value.
- * If places is zero or negative, DEC2OCT returns the #NUM! error value.
- * @return string
- */
- public static function DECTOOCT($x, $places=null) {
- $x = PHPExcel_Calculation_Functions::flattenSingleValue($x);
- $places = PHPExcel_Calculation_Functions::flattenSingleValue($places);
-
- if (is_bool($x)) {
- if (PHPExcel_Calculation_Functions::getCompatibilityMode() == PHPExcel_Calculation_Functions::COMPATIBILITY_OPENOFFICE) {
- $x = (int) $x;
- } else {
- return PHPExcel_Calculation_Functions::VALUE();
- }
- }
- $x = (string) $x;
- if (strlen($x) > preg_match_all('/[-0123456789.]/',$x,$out)) {
- return PHPExcel_Calculation_Functions::VALUE();
- }
- $x = (string) floor($x);
- $r = decoct($x);
- if (strlen($r) == 11) {
- // Two's Complement
- $r = substr($r,-10);
- }
-
- return self::_nbrConversionFormat($r,$places);
- } // function DECTOOCT()
-
-
- /**
- * HEXTOBIN
- *
- * Return a hex value as binary.
- *
- * Excel Function:
- * HEX2BIN(x[,places])
- *
- * @access public
- * @category Engineering Functions
- * @param string $x the hexadecimal number you want to convert. Number cannot
- * contain more than 10 characters. The most significant bit of
- * number is the sign bit (40th bit from the right). The remaining
- * 9 bits are magnitude bits. Negative numbers are represented
- * using two's-complement notation.
- * If number is negative, HEX2BIN ignores places and returns a
- * 10-character binary number.
- * If number is negative, it cannot be less than FFFFFFFE00, and
- * if number is positive, it cannot be greater than 1FF.
- * If number is not a valid hexadecimal number, HEX2BIN returns
- * the #NUM! error value.
- * If HEX2BIN requires more than places characters, it returns
- * the #NUM! error value.
- * @param integer $places The number of characters to use. If places is omitted,
- * HEX2BIN uses the minimum number of characters necessary. Places
- * is useful for padding the return value with leading 0s (zeros).
- * If places is not an integer, it is truncated.
- * If places is nonnumeric, HEX2BIN returns the #VALUE! error value.
- * If places is negative, HEX2BIN returns the #NUM! error value.
- * @return string
- */
- public static function HEXTOBIN($x, $places=null) {
- $x = PHPExcel_Calculation_Functions::flattenSingleValue($x);
- $places = PHPExcel_Calculation_Functions::flattenSingleValue($places);
-
- if (is_bool($x)) {
- return PHPExcel_Calculation_Functions::VALUE();
- }
- $x = (string) $x;
- if (strlen($x) > preg_match_all('/[0123456789ABCDEF]/',strtoupper($x),$out)) {
- return PHPExcel_Calculation_Functions::NaN();
- }
- $binVal = decbin(hexdec($x));
-
- return substr(self::_nbrConversionFormat($binVal,$places),-10);
- } // function HEXTOBIN()
-
-
- /**
- * HEXTODEC
- *
- * Return a hex value as decimal.
- *
- * Excel Function:
- * HEX2DEC(x)
- *
- * @access public
- * @category Engineering Functions
- * @param string $x The hexadecimal number you want to convert. This number cannot
- * contain more than 10 characters (40 bits). The most significant
- * bit of number is the sign bit. The remaining 39 bits are magnitude
- * bits. Negative numbers are represented using two's-complement
- * notation.
- * If number is not a valid hexadecimal number, HEX2DEC returns the
- * #NUM! error value.
- * @return string
- */
- public static function HEXTODEC($x) {
- $x = PHPExcel_Calculation_Functions::flattenSingleValue($x);
-
- if (is_bool($x)) {
- return PHPExcel_Calculation_Functions::VALUE();
- }
- $x = (string) $x;
- if (strlen($x) > preg_match_all('/[0123456789ABCDEF]/',strtoupper($x),$out)) {
- return PHPExcel_Calculation_Functions::NaN();
- }
- return hexdec($x);
- } // function HEXTODEC()
-
-
- /**
- * HEXTOOCT
- *
- * Return a hex value as octal.
- *
- * Excel Function:
- * HEX2OCT(x[,places])
- *
- * @access public
- * @category Engineering Functions
- * @param string $x The hexadecimal number you want to convert. Number cannot
- * contain more than 10 characters. The most significant bit of
- * number is the sign bit. The remaining 39 bits are magnitude
- * bits. Negative numbers are represented using two's-complement
- * notation.
- * If number is negative, HEX2OCT ignores places and returns a
- * 10-character octal number.
- * If number is negative, it cannot be less than FFE0000000, and
- * if number is positive, it cannot be greater than 1FFFFFFF.
- * If number is not a valid hexadecimal number, HEX2OCT returns
- * the #NUM! error value.
- * If HEX2OCT requires more than places characters, it returns
- * the #NUM! error value.
- * @param integer $places The number of characters to use. If places is omitted, HEX2OCT
- * uses the minimum number of characters necessary. Places is
- * useful for padding the return value with leading 0s (zeros).
- * If places is not an integer, it is truncated.
- * If places is nonnumeric, HEX2OCT returns the #VALUE! error
- * value.
- * If places is negative, HEX2OCT returns the #NUM! error value.
- * @return string
- */
- public static function HEXTOOCT($x, $places=null) {
- $x = PHPExcel_Calculation_Functions::flattenSingleValue($x);
- $places = PHPExcel_Calculation_Functions::flattenSingleValue($places);
-
- if (is_bool($x)) {
- return PHPExcel_Calculation_Functions::VALUE();
- }
- $x = (string) $x;
- if (strlen($x) > preg_match_all('/[0123456789ABCDEF]/',strtoupper($x),$out)) {
- return PHPExcel_Calculation_Functions::NaN();
- }
- $octVal = decoct(hexdec($x));
-
- return self::_nbrConversionFormat($octVal,$places);
- } // function HEXTOOCT()
-
-
- /**
- * OCTTOBIN
- *
- * Return an octal value as binary.
- *
- * Excel Function:
- * OCT2BIN(x[,places])
- *
- * @access public
- * @category Engineering Functions
- * @param string $x The octal number you want to convert. Number may not
- * contain more than 10 characters. The most significant
- * bit of number is the sign bit. The remaining 29 bits
- * are magnitude bits. Negative numbers are represented
- * using two's-complement notation.
- * If number is negative, OCT2BIN ignores places and returns
- * a 10-character binary number.
- * If number is negative, it cannot be less than 7777777000,
- * and if number is positive, it cannot be greater than 777.
- * If number is not a valid octal number, OCT2BIN returns
- * the #NUM! error value.
- * If OCT2BIN requires more than places characters, it
- * returns the #NUM! error value.
- * @param integer $places The number of characters to use. If places is omitted,
- * OCT2BIN uses the minimum number of characters necessary.
- * Places is useful for padding the return value with
- * leading 0s (zeros).
- * If places is not an integer, it is truncated.
- * If places is nonnumeric, OCT2BIN returns the #VALUE!
- * error value.
- * If places is negative, OCT2BIN returns the #NUM! error
- * value.
- * @return string
- */
- public static function OCTTOBIN($x, $places=null) {
- $x = PHPExcel_Calculation_Functions::flattenSingleValue($x);
- $places = PHPExcel_Calculation_Functions::flattenSingleValue($places);
-
- if (is_bool($x)) {
- return PHPExcel_Calculation_Functions::VALUE();
- }
- $x = (string) $x;
- if (preg_match_all('/[01234567]/',$x,$out) != strlen($x)) {
- return PHPExcel_Calculation_Functions::NaN();
- }
- $r = decbin(octdec($x));
-
- return self::_nbrConversionFormat($r,$places);
- } // function OCTTOBIN()
-
-
- /**
- * OCTTODEC
- *
- * Return an octal value as decimal.
- *
- * Excel Function:
- * OCT2DEC(x)
- *
- * @access public
- * @category Engineering Functions
- * @param string $x The octal number you want to convert. Number may not contain
- * more than 10 octal characters (30 bits). The most significant
- * bit of number is the sign bit. The remaining 29 bits are
- * magnitude bits. Negative numbers are represented using
- * two's-complement notation.
- * If number is not a valid octal number, OCT2DEC returns the
- * #NUM! error value.
- * @return string
- */
- public static function OCTTODEC($x) {
- $x = PHPExcel_Calculation_Functions::flattenSingleValue($x);
-
- if (is_bool($x)) {
- return PHPExcel_Calculation_Functions::VALUE();
- }
- $x = (string) $x;
- if (preg_match_all('/[01234567]/',$x,$out) != strlen($x)) {
- return PHPExcel_Calculation_Functions::NaN();
- }
- return octdec($x);
- } // function OCTTODEC()
-
-
- /**
- * OCTTOHEX
- *
- * Return an octal value as hex.
- *
- * Excel Function:
- * OCT2HEX(x[,places])
- *
- * @access public
- * @category Engineering Functions
- * @param string $x The octal number you want to convert. Number may not contain
- * more than 10 octal characters (30 bits). The most significant
- * bit of number is the sign bit. The remaining 29 bits are
- * magnitude bits. Negative numbers are represented using
- * two's-complement notation.
- * If number is negative, OCT2HEX ignores places and returns a
- * 10-character hexadecimal number.
- * If number is not a valid octal number, OCT2HEX returns the
- * #NUM! error value.
- * If OCT2HEX requires more than places characters, it returns
- * the #NUM! error value.
- * @param integer $places The number of characters to use. If places is omitted, OCT2HEX
- * uses the minimum number of characters necessary. Places is useful
- * for padding the return value with leading 0s (zeros).
- * If places is not an integer, it is truncated.
- * If places is nonnumeric, OCT2HEX returns the #VALUE! error value.
- * If places is negative, OCT2HEX returns the #NUM! error value.
- * @return string
- */
- public static function OCTTOHEX($x, $places=null) {
- $x = PHPExcel_Calculation_Functions::flattenSingleValue($x);
- $places = PHPExcel_Calculation_Functions::flattenSingleValue($places);
-
- if (is_bool($x)) {
- return PHPExcel_Calculation_Functions::VALUE();
- }
- $x = (string) $x;
- if (preg_match_all('/[01234567]/',$x,$out) != strlen($x)) {
- return PHPExcel_Calculation_Functions::NaN();
- }
- $hexVal = strtoupper(dechex(octdec($x)));
-
- return self::_nbrConversionFormat($hexVal,$places);
- } // function OCTTOHEX()
-
-
- /**
- * COMPLEX
- *
- * Converts real and imaginary coefficients into a complex number of the form x + yi or x + yj.
- *
- * Excel Function:
- * COMPLEX(realNumber,imaginary[,places])
- *
- * @access public
- * @category Engineering Functions
- * @param float $realNumber The real coefficient of the complex number.
- * @param float $imaginary The imaginary coefficient of the complex number.
- * @param string $suffix The suffix for the imaginary component of the complex number.
- * If omitted, the suffix is assumed to be "i".
- * @return string
- */
- public static function COMPLEX($realNumber=0.0, $imaginary=0.0, $suffix='i') {
- $realNumber = (is_null($realNumber)) ? 0.0 : PHPExcel_Calculation_Functions::flattenSingleValue($realNumber);
- $imaginary = (is_null($imaginary)) ? 0.0 : PHPExcel_Calculation_Functions::flattenSingleValue($imaginary);
- $suffix = (is_null($suffix)) ? 'i' : PHPExcel_Calculation_Functions::flattenSingleValue($suffix);
-
- if (((is_numeric($realNumber)) && (is_numeric($imaginary))) &&
- (($suffix == 'i') || ($suffix == 'j') || ($suffix == ''))) {
- $realNumber = (float) $realNumber;
- $imaginary = (float) $imaginary;
-
- if ($suffix == '') $suffix = 'i';
- if ($realNumber == 0.0) {
- if ($imaginary == 0.0) {
- return (string) '0';
- } elseif ($imaginary == 1.0) {
- return (string) $suffix;
- } elseif ($imaginary == -1.0) {
- return (string) '-'.$suffix;
- }
- return (string) $imaginary.$suffix;
- } elseif ($imaginary == 0.0) {
- return (string) $realNumber;
- } elseif ($imaginary == 1.0) {
- return (string) $realNumber.'+'.$suffix;
- } elseif ($imaginary == -1.0) {
- return (string) $realNumber.'-'.$suffix;
- }
- if ($imaginary > 0) { $imaginary = (string) '+'.$imaginary; }
- return (string) $realNumber.$imaginary.$suffix;
- }
-
- return PHPExcel_Calculation_Functions::VALUE();
- } // function COMPLEX()
-
-
- /**
- * IMAGINARY
- *
- * Returns the imaginary coefficient of a complex number in x + yi or x + yj text format.
- *
- * Excel Function:
- * IMAGINARY(complexNumber)
- *
- * @access public
- * @category Engineering Functions
- * @param string $complexNumber The complex number for which you want the imaginary
- * coefficient.
- * @return float
- */
- public static function IMAGINARY($complexNumber) {
- $complexNumber = PHPExcel_Calculation_Functions::flattenSingleValue($complexNumber);
-
- $parsedComplex = self::_parseComplex($complexNumber);
- return $parsedComplex['imaginary'];
- } // function IMAGINARY()
-
-
- /**
- * IMREAL
- *
- * Returns the real coefficient of a complex number in x + yi or x + yj text format.
- *
- * Excel Function:
- * IMREAL(complexNumber)
- *
- * @access public
- * @category Engineering Functions
- * @param string $complexNumber The complex number for which you want the real coefficient.
- * @return float
- */
- public static function IMREAL($complexNumber) {
- $complexNumber = PHPExcel_Calculation_Functions::flattenSingleValue($complexNumber);
-
- $parsedComplex = self::_parseComplex($complexNumber);
- return $parsedComplex['real'];
- } // function IMREAL()
-
-
- /**
- * IMABS
- *
- * Returns the absolute value (modulus) of a complex number in x + yi or x + yj text format.
- *
- * Excel Function:
- * IMABS(complexNumber)
- *
- * @param string $complexNumber The complex number for which you want the absolute value.
- * @return float
- */
- public static function IMABS($complexNumber) {
- $complexNumber = PHPExcel_Calculation_Functions::flattenSingleValue($complexNumber);
-
- $parsedComplex = self::_parseComplex($complexNumber);
-
- return sqrt(($parsedComplex['real'] * $parsedComplex['real']) + ($parsedComplex['imaginary'] * $parsedComplex['imaginary']));
- } // function IMABS()
-
-
- /**
- * IMARGUMENT
- *
- * Returns the argument theta of a complex number, i.e. the angle in radians from the real
- * axis to the representation of the number in polar coordinates.
- *
- * Excel Function:
- * IMARGUMENT(complexNumber)
- *
- * @param string $complexNumber The complex number for which you want the argument theta.
- * @return float
- */
- public static function IMARGUMENT($complexNumber) {
- $complexNumber = PHPExcel_Calculation_Functions::flattenSingleValue($complexNumber);
-
- $parsedComplex = self::_parseComplex($complexNumber);
-
- if ($parsedComplex['real'] == 0.0) {
- if ($parsedComplex['imaginary'] == 0.0) {
- return 0.0;
- } elseif($parsedComplex['imaginary'] < 0.0) {
- return M_PI / -2;
- } else {
- return M_PI / 2;
- }
- } elseif ($parsedComplex['real'] > 0.0) {
- return atan($parsedComplex['imaginary'] / $parsedComplex['real']);
- } elseif ($parsedComplex['imaginary'] < 0.0) {
- return 0 - (M_PI - atan(abs($parsedComplex['imaginary']) / abs($parsedComplex['real'])));
- } else {
- return M_PI - atan($parsedComplex['imaginary'] / abs($parsedComplex['real']));
- }
- } // function IMARGUMENT()
-
-
- /**
- * IMCONJUGATE
- *
- * Returns the complex conjugate of a complex number in x + yi or x + yj text format.
- *
- * Excel Function:
- * IMCONJUGATE(complexNumber)
- *
- * @param string $complexNumber The complex number for which you want the conjugate.
- * @return string
- */
- public static function IMCONJUGATE($complexNumber) {
- $complexNumber = PHPExcel_Calculation_Functions::flattenSingleValue($complexNumber);
-
- $parsedComplex = self::_parseComplex($complexNumber);
-
- if ($parsedComplex['imaginary'] == 0.0) {
- return $parsedComplex['real'];
- } else {
- return self::_cleanComplex( self::COMPLEX( $parsedComplex['real'],
- 0 - $parsedComplex['imaginary'],
- $parsedComplex['suffix']
- )
- );
- }
- } // function IMCONJUGATE()
-
-
- /**
- * IMCOS
- *
- * Returns the cosine of a complex number in x + yi or x + yj text format.
- *
- * Excel Function:
- * IMCOS(complexNumber)
- *
- * @param string $complexNumber The complex number for which you want the cosine.
- * @return string|float
- */
- public static function IMCOS($complexNumber) {
- $complexNumber = PHPExcel_Calculation_Functions::flattenSingleValue($complexNumber);
-
- $parsedComplex = self::_parseComplex($complexNumber);
-
- if ($parsedComplex['imaginary'] == 0.0) {
- return cos($parsedComplex['real']);
- } else {
- return self::IMCONJUGATE(self::COMPLEX(cos($parsedComplex['real']) * cosh($parsedComplex['imaginary']),sin($parsedComplex['real']) * sinh($parsedComplex['imaginary']),$parsedComplex['suffix']));
- }
- } // function IMCOS()
-
-
- /**
- * IMSIN
- *
- * Returns the sine of a complex number in x + yi or x + yj text format.
- *
- * Excel Function:
- * IMSIN(complexNumber)
- *
- * @param string $complexNumber The complex number for which you want the sine.
- * @return string|float
- */
- public static function IMSIN($complexNumber) {
- $complexNumber = PHPExcel_Calculation_Functions::flattenSingleValue($complexNumber);
-
- $parsedComplex = self::_parseComplex($complexNumber);
-
- if ($parsedComplex['imaginary'] == 0.0) {
- return sin($parsedComplex['real']);
- } else {
- return self::COMPLEX(sin($parsedComplex['real']) * cosh($parsedComplex['imaginary']),cos($parsedComplex['real']) * sinh($parsedComplex['imaginary']),$parsedComplex['suffix']);
- }
- } // function IMSIN()
-
-
- /**
- * IMSQRT
- *
- * Returns the square root of a complex number in x + yi or x + yj text format.
- *
- * Excel Function:
- * IMSQRT(complexNumber)
- *
- * @param string $complexNumber The complex number for which you want the square root.
- * @return string
- */
- public static function IMSQRT($complexNumber) {
- $complexNumber = PHPExcel_Calculation_Functions::flattenSingleValue($complexNumber);
-
- $parsedComplex = self::_parseComplex($complexNumber);
-
- $theta = self::IMARGUMENT($complexNumber);
- $d1 = cos($theta / 2);
- $d2 = sin($theta / 2);
- $r = sqrt(sqrt(($parsedComplex['real'] * $parsedComplex['real']) + ($parsedComplex['imaginary'] * $parsedComplex['imaginary'])));
-
- if ($parsedComplex['suffix'] == '') {
- return self::COMPLEX($d1 * $r,$d2 * $r);
- } else {
- return self::COMPLEX($d1 * $r,$d2 * $r,$parsedComplex['suffix']);
- }
- } // function IMSQRT()
-
-
- /**
- * IMLN
- *
- * Returns the natural logarithm of a complex number in x + yi or x + yj text format.
- *
- * Excel Function:
- * IMLN(complexNumber)
- *
- * @param string $complexNumber The complex number for which you want the natural logarithm.
- * @return string
- */
- public static function IMLN($complexNumber) {
- $complexNumber = PHPExcel_Calculation_Functions::flattenSingleValue($complexNumber);
-
- $parsedComplex = self::_parseComplex($complexNumber);
-
- if (($parsedComplex['real'] == 0.0) && ($parsedComplex['imaginary'] == 0.0)) {
- return PHPExcel_Calculation_Functions::NaN();
- }
-
- $logR = log(sqrt(($parsedComplex['real'] * $parsedComplex['real']) + ($parsedComplex['imaginary'] * $parsedComplex['imaginary'])));
- $t = self::IMARGUMENT($complexNumber);
-
- if ($parsedComplex['suffix'] == '') {
- return self::COMPLEX($logR,$t);
- } else {
- return self::COMPLEX($logR,$t,$parsedComplex['suffix']);
- }
- } // function IMLN()
-
-
- /**
- * IMLOG10
- *
- * Returns the common logarithm (base 10) of a complex number in x + yi or x + yj text format.
- *
- * Excel Function:
- * IMLOG10(complexNumber)
- *
- * @param string $complexNumber The complex number for which you want the common logarithm.
- * @return string
- */
- public static function IMLOG10($complexNumber) {
- $complexNumber = PHPExcel_Calculation_Functions::flattenSingleValue($complexNumber);
-
- $parsedComplex = self::_parseComplex($complexNumber);
-
- if (($parsedComplex['real'] == 0.0) && ($parsedComplex['imaginary'] == 0.0)) {
- return PHPExcel_Calculation_Functions::NaN();
- } elseif (($parsedComplex['real'] > 0.0) && ($parsedComplex['imaginary'] == 0.0)) {
- return log10($parsedComplex['real']);
- }
-
- return self::IMPRODUCT(log10(EULER),self::IMLN($complexNumber));
- } // function IMLOG10()
-
-
- /**
- * IMLOG2
- *
- * Returns the common logarithm (base 10) of a complex number in x + yi or x + yj text format.
- *
- * Excel Function:
- * IMLOG2(complexNumber)
- *
- * @param string $complexNumber The complex number for which you want the base-2 logarithm.
- * @return string
- */
- public static function IMLOG2($complexNumber) {
- $complexNumber = PHPExcel_Calculation_Functions::flattenSingleValue($complexNumber);
-
- $parsedComplex = self::_parseComplex($complexNumber);
-
- if (($parsedComplex['real'] == 0.0) && ($parsedComplex['imaginary'] == 0.0)) {
- return PHPExcel_Calculation_Functions::NaN();
- } elseif (($parsedComplex['real'] > 0.0) && ($parsedComplex['imaginary'] == 0.0)) {
- return log($parsedComplex['real'],2);
- }
-
- return self::IMPRODUCT(log(EULER,2),self::IMLN($complexNumber));
- } // function IMLOG2()
-
-
- /**
- * IMEXP
- *
- * Returns the exponential of a complex number in x + yi or x + yj text format.
- *
- * Excel Function:
- * IMEXP(complexNumber)
- *
- * @param string $complexNumber The complex number for which you want the exponential.
- * @return string
- */
- public static function IMEXP($complexNumber) {
- $complexNumber = PHPExcel_Calculation_Functions::flattenSingleValue($complexNumber);
-
- $parsedComplex = self::_parseComplex($complexNumber);
-
- if (($parsedComplex['real'] == 0.0) && ($parsedComplex['imaginary'] == 0.0)) {
- return '1';
- }
-
- $e = exp($parsedComplex['real']);
- $eX = $e * cos($parsedComplex['imaginary']);
- $eY = $e * sin($parsedComplex['imaginary']);
-
- if ($parsedComplex['suffix'] == '') {
- return self::COMPLEX($eX,$eY);
- } else {
- return self::COMPLEX($eX,$eY,$parsedComplex['suffix']);
- }
- } // function IMEXP()
-
-
- /**
- * IMPOWER
- *
- * Returns a complex number in x + yi or x + yj text format raised to a power.
- *
- * Excel Function:
- * IMPOWER(complexNumber,realNumber)
- *
- * @param string $complexNumber The complex number you want to raise to a power.
- * @param float $realNumber The power to which you want to raise the complex number.
- * @return string
- */
- public static function IMPOWER($complexNumber,$realNumber) {
- $complexNumber = PHPExcel_Calculation_Functions::flattenSingleValue($complexNumber);
- $realNumber = PHPExcel_Calculation_Functions::flattenSingleValue($realNumber);
-
- if (!is_numeric($realNumber)) {
- return PHPExcel_Calculation_Functions::VALUE();
- }
-
- $parsedComplex = self::_parseComplex($complexNumber);
-
- $r = sqrt(($parsedComplex['real'] * $parsedComplex['real']) + ($parsedComplex['imaginary'] * $parsedComplex['imaginary']));
- $rPower = pow($r,$realNumber);
- $theta = self::IMARGUMENT($complexNumber) * $realNumber;
- if ($theta == 0) {
- return 1;
- } elseif ($parsedComplex['imaginary'] == 0.0) {
- return self::COMPLEX($rPower * cos($theta),$rPower * sin($theta),$parsedComplex['suffix']);
- } else {
- return self::COMPLEX($rPower * cos($theta),$rPower * sin($theta),$parsedComplex['suffix']);
- }
- } // function IMPOWER()
-
-
- /**
- * IMDIV
- *
- * Returns the quotient of two complex numbers in x + yi or x + yj text format.
- *
- * Excel Function:
- * IMDIV(complexDividend,complexDivisor)
- *
- * @param string $complexDividend The complex numerator or dividend.
- * @param string $complexDivisor The complex denominator or divisor.
- * @return string
- */
- public static function IMDIV($complexDividend,$complexDivisor) {
- $complexDividend = PHPExcel_Calculation_Functions::flattenSingleValue($complexDividend);
- $complexDivisor = PHPExcel_Calculation_Functions::flattenSingleValue($complexDivisor);
-
- $parsedComplexDividend = self::_parseComplex($complexDividend);
- $parsedComplexDivisor = self::_parseComplex($complexDivisor);
-
- if (($parsedComplexDividend['suffix'] != '') && ($parsedComplexDivisor['suffix'] != '') &&
- ($parsedComplexDividend['suffix'] != $parsedComplexDivisor['suffix'])) {
- return PHPExcel_Calculation_Functions::NaN();
- }
- if (($parsedComplexDividend['suffix'] != '') && ($parsedComplexDivisor['suffix'] == '')) {
- $parsedComplexDivisor['suffix'] = $parsedComplexDividend['suffix'];
- }
-
- $d1 = ($parsedComplexDividend['real'] * $parsedComplexDivisor['real']) + ($parsedComplexDividend['imaginary'] * $parsedComplexDivisor['imaginary']);
- $d2 = ($parsedComplexDividend['imaginary'] * $parsedComplexDivisor['real']) - ($parsedComplexDividend['real'] * $parsedComplexDivisor['imaginary']);
- $d3 = ($parsedComplexDivisor['real'] * $parsedComplexDivisor['real']) + ($parsedComplexDivisor['imaginary'] * $parsedComplexDivisor['imaginary']);
-
- $r = $d1/$d3;
- $i = $d2/$d3;
-
- if ($i > 0.0) {
- return self::_cleanComplex($r.'+'.$i.$parsedComplexDivisor['suffix']);
- } elseif ($i < 0.0) {
- return self::_cleanComplex($r.$i.$parsedComplexDivisor['suffix']);
- } else {
- return $r;
- }
- } // function IMDIV()
-
-
- /**
- * IMSUB
- *
- * Returns the difference of two complex numbers in x + yi or x + yj text format.
- *
- * Excel Function:
- * IMSUB(complexNumber1,complexNumber2)
- *
- * @param string $complexNumber1 The complex number from which to subtract complexNumber2.
- * @param string $complexNumber2 The complex number to subtract from complexNumber1.
- * @return string
- */
- public static function IMSUB($complexNumber1,$complexNumber2) {
- $complexNumber1 = PHPExcel_Calculation_Functions::flattenSingleValue($complexNumber1);
- $complexNumber2 = PHPExcel_Calculation_Functions::flattenSingleValue($complexNumber2);
-
- $parsedComplex1 = self::_parseComplex($complexNumber1);
- $parsedComplex2 = self::_parseComplex($complexNumber2);
-
- if ((($parsedComplex1['suffix'] != '') && ($parsedComplex2['suffix'] != '')) &&
- ($parsedComplex1['suffix'] != $parsedComplex2['suffix'])) {
- return PHPExcel_Calculation_Functions::NaN();
- } elseif (($parsedComplex1['suffix'] == '') && ($parsedComplex2['suffix'] != '')) {
- $parsedComplex1['suffix'] = $parsedComplex2['suffix'];
- }
-
- $d1 = $parsedComplex1['real'] - $parsedComplex2['real'];
- $d2 = $parsedComplex1['imaginary'] - $parsedComplex2['imaginary'];
-
- return self::COMPLEX($d1,$d2,$parsedComplex1['suffix']);
- } // function IMSUB()
-
-
- /**
- * IMSUM
- *
- * Returns the sum of two or more complex numbers in x + yi or x + yj text format.
- *
- * Excel Function:
- * IMSUM(complexNumber[,complexNumber[,...]])
- *
- * @param string $complexNumber,... Series of complex numbers to add
- * @return string
- */
- public static function IMSUM() {
- // Return value
- $returnValue = self::_parseComplex('0');
- $activeSuffix = '';
-
- // Loop through the arguments
- $aArgs = PHPExcel_Calculation_Functions::flattenArray(func_get_args());
- foreach ($aArgs as $arg) {
- $parsedComplex = self::_parseComplex($arg);
-
- if ($activeSuffix == '') {
- $activeSuffix = $parsedComplex['suffix'];
- } elseif (($parsedComplex['suffix'] != '') && ($activeSuffix != $parsedComplex['suffix'])) {
- return PHPExcel_Calculation_Functions::VALUE();
- }
-
- $returnValue['real'] += $parsedComplex['real'];
- $returnValue['imaginary'] += $parsedComplex['imaginary'];
- }
-
- if ($returnValue['imaginary'] == 0.0) { $activeSuffix = ''; }
- return self::COMPLEX($returnValue['real'],$returnValue['imaginary'],$activeSuffix);
- } // function IMSUM()
-
-
- /**
- * IMPRODUCT
- *
- * Returns the product of two or more complex numbers in x + yi or x + yj text format.
- *
- * Excel Function:
- * IMPRODUCT(complexNumber[,complexNumber[,...]])
- *
- * @param string $complexNumber,... Series of complex numbers to multiply
- * @return string
- */
- public static function IMPRODUCT() {
- // Return value
- $returnValue = self::_parseComplex('1');
- $activeSuffix = '';
-
- // Loop through the arguments
- $aArgs = PHPExcel_Calculation_Functions::flattenArray(func_get_args());
- foreach ($aArgs as $arg) {
- $parsedComplex = self::_parseComplex($arg);
-
- $workValue = $returnValue;
- if (($parsedComplex['suffix'] != '') && ($activeSuffix == '')) {
- $activeSuffix = $parsedComplex['suffix'];
- } elseif (($parsedComplex['suffix'] != '') && ($activeSuffix != $parsedComplex['suffix'])) {
- return PHPExcel_Calculation_Functions::NaN();
- }
- $returnValue['real'] = ($workValue['real'] * $parsedComplex['real']) - ($workValue['imaginary'] * $parsedComplex['imaginary']);
- $returnValue['imaginary'] = ($workValue['real'] * $parsedComplex['imaginary']) + ($workValue['imaginary'] * $parsedComplex['real']);
- }
-
- if ($returnValue['imaginary'] == 0.0) { $activeSuffix = ''; }
- return self::COMPLEX($returnValue['real'],$returnValue['imaginary'],$activeSuffix);
- } // function IMPRODUCT()
-
-
- /**
- * DELTA
- *
- * Tests whether two values are equal. Returns 1 if number1 = number2; returns 0 otherwise.
- * Use this function to filter a set of values. For example, by summing several DELTA
- * functions you calculate the count of equal pairs. This function is also known as the
- * Kronecker Delta function.
- *
- * Excel Function:
- * DELTA(a[,b])
- *
- * @param float $a The first number.
- * @param float $b The second number. If omitted, b is assumed to be zero.
- * @return int
- */
- public static function DELTA($a, $b=0) {
- $a = PHPExcel_Calculation_Functions::flattenSingleValue($a);
- $b = PHPExcel_Calculation_Functions::flattenSingleValue($b);
-
- return (int) ($a == $b);
- } // function DELTA()
-
-
- /**
- * GESTEP
- *
- * Excel Function:
- * GESTEP(number[,step])
- *
- * Returns 1 if number >= step; returns 0 (zero) otherwise
- * Use this function to filter a set of values. For example, by summing several GESTEP
- * functions you calculate the count of values that exceed a threshold.
- *
- * @param float $number The value to test against step.
- * @param float $step The threshold value.
- * If you omit a value for step, GESTEP uses zero.
- * @return int
- */
- public static function GESTEP($number, $step=0) {
- $number = PHPExcel_Calculation_Functions::flattenSingleValue($number);
- $step = PHPExcel_Calculation_Functions::flattenSingleValue($step);
-
- return (int) ($number >= $step);
- } // function GESTEP()
-
-
- //
- // Private method to calculate the erf value
- //
- private static $_two_sqrtpi = 1.128379167095512574;
-
- public static function _erfVal($x) {
- if (abs($x) > 2.2) {
- return 1 - self::_erfcVal($x);
- }
- $sum = $term = $x;
- $xsqr = ($x * $x);
- $j = 1;
- do {
- $term *= $xsqr / $j;
- $sum -= $term / (2 * $j + 1);
- ++$j;
- $term *= $xsqr / $j;
- $sum += $term / (2 * $j + 1);
- ++$j;
- if ($sum == 0.0) {
- break;
- }
- } while (abs($term / $sum) > PRECISION);
- return self::$_two_sqrtpi * $sum;
- } // function _erfVal()
-
-
- /**
- * ERF
- *
- * Returns the error function integrated between the lower and upper bound arguments.
- *
- * Note: In Excel 2007 or earlier, if you input a negative value for the upper or lower bound arguments,
- * the function would return a #NUM! error. However, in Excel 2010, the function algorithm was
- * improved, so that it can now calculate the function for both positive and negative ranges.
- * PHPExcel follows Excel 2010 behaviour, and accepts nagative arguments.
- *
- * Excel Function:
- * ERF(lower[,upper])
- *
- * @param float $lower lower bound for integrating ERF
- * @param float $upper upper bound for integrating ERF.
- * If omitted, ERF integrates between zero and lower_limit
- * @return float
- */
- public static function ERF($lower, $upper = NULL) {
- $lower = PHPExcel_Calculation_Functions::flattenSingleValue($lower);
- $upper = PHPExcel_Calculation_Functions::flattenSingleValue($upper);
-
- if (is_numeric($lower)) {
- if (is_null($upper)) {
- return self::_erfVal($lower);
- }
- if (is_numeric($upper)) {
- return self::_erfVal($upper) - self::_erfVal($lower);
- }
- }
- return PHPExcel_Calculation_Functions::VALUE();
- } // function ERF()
-
-
- //
- // Private method to calculate the erfc value
- //
- private static $_one_sqrtpi = 0.564189583547756287;
-
- private static function _erfcVal($x) {
- if (abs($x) < 2.2) {
- return 1 - self::_erfVal($x);
- }
- if ($x < 0) {
- return 2 - self::ERFC(-$x);
- }
- $a = $n = 1;
- $b = $c = $x;
- $d = ($x * $x) + 0.5;
- $q1 = $q2 = $b / $d;
- $t = 0;
- do {
- $t = $a * $n + $b * $x;
- $a = $b;
- $b = $t;
- $t = $c * $n + $d * $x;
- $c = $d;
- $d = $t;
- $n += 0.5;
- $q1 = $q2;
- $q2 = $b / $d;
- } while ((abs($q1 - $q2) / $q2) > PRECISION);
- return self::$_one_sqrtpi * exp(-$x * $x) * $q2;
- } // function _erfcVal()
-
-
- /**
- * ERFC
- *
- * Returns the complementary ERF function integrated between x and infinity
- *
- * Note: In Excel 2007 or earlier, if you input a negative value for the lower bound argument,
- * the function would return a #NUM! error. However, in Excel 2010, the function algorithm was
- * improved, so that it can now calculate the function for both positive and negative x values.
- * PHPExcel follows Excel 2010 behaviour, and accepts nagative arguments.
- *
- * Excel Function:
- * ERFC(x)
- *
- * @param float $x The lower bound for integrating ERFC
- * @return float
- */
- public static function ERFC($x) {
- $x = PHPExcel_Calculation_Functions::flattenSingleValue($x);
-
- if (is_numeric($x)) {
- return self::_erfcVal($x);
- }
- return PHPExcel_Calculation_Functions::VALUE();
- } // function ERFC()
-
-
- /**
- * getConversionGroups
- * Returns a list of the different conversion groups for UOM conversions
- *
- * @return array
- */
- public static function getConversionGroups() {
- $conversionGroups = array();
- foreach(self::$_conversionUnits as $conversionUnit) {
- $conversionGroups[] = $conversionUnit['Group'];
- }
- return array_merge(array_unique($conversionGroups));
- } // function getConversionGroups()
-
-
- /**
- * getConversionGroupUnits
- * Returns an array of units of measure, for a specified conversion group, or for all groups
- *
- * @param string $group The group whose units of measure you want to retrieve
- *
- * @return array
- */
- public static function getConversionGroupUnits($group = NULL) {
- $conversionGroups = array();
- foreach(self::$_conversionUnits as $conversionUnit => $conversionGroup) {
- if ((is_null($group)) || ($conversionGroup['Group'] == $group)) {
- $conversionGroups[$conversionGroup['Group']][] = $conversionUnit;
- }
- }
- return $conversionGroups;
- } // function getConversionGroupUnits()
-
-
- /**
- * getConversionGroupUnitDetails
- *
- * @return array
- */
- public static function getConversionGroupUnitDetails($group = NULL) {
- $conversionGroups = array();
- foreach(self::$_conversionUnits as $conversionUnit => $conversionGroup) {
- if ((is_null($group)) || ($conversionGroup['Group'] == $group)) {
- $conversionGroups[$conversionGroup['Group']][] = array( 'unit' => $conversionUnit,
- 'description' => $conversionGroup['Unit Name']
- );
- }
- }
- return $conversionGroups;
- } // function getConversionGroupUnitDetails()
-
-
- /**
- * getConversionMultipliers
- * Returns an array of the Multiplier prefixes that can be used with Units of Measure in CONVERTUOM()
- *
- * @return array of mixed
- */
- public static function getConversionMultipliers() {
- return self::$_conversionMultipliers;
- } // function getConversionGroups()
-
-
- /**
- * CONVERTUOM
- *
- * Converts a number from one measurement system to another.
- * For example, CONVERT can translate a table of distances in miles to a table of distances
- * in kilometers.
- *
- * Excel Function:
- * CONVERT(value,fromUOM,toUOM)
- *
- * @param float $value The value in fromUOM to convert.
- * @param string $fromUOM The units for value.
- * @param string $toUOM The units for the result.
- *
- * @return float
- */
- public static function CONVERTUOM($value, $fromUOM, $toUOM) {
- $value = PHPExcel_Calculation_Functions::flattenSingleValue($value);
- $fromUOM = PHPExcel_Calculation_Functions::flattenSingleValue($fromUOM);
- $toUOM = PHPExcel_Calculation_Functions::flattenSingleValue($toUOM);
-
- if (!is_numeric($value)) {
- return PHPExcel_Calculation_Functions::VALUE();
- }
- $fromMultiplier = 1.0;
- if (isset(self::$_conversionUnits[$fromUOM])) {
- $unitGroup1 = self::$_conversionUnits[$fromUOM]['Group'];
- } else {
- $fromMultiplier = substr($fromUOM,0,1);
- $fromUOM = substr($fromUOM,1);
- if (isset(self::$_conversionMultipliers[$fromMultiplier])) {
- $fromMultiplier = self::$_conversionMultipliers[$fromMultiplier]['multiplier'];
- } else {
- return PHPExcel_Calculation_Functions::NA();
- }
- if ((isset(self::$_conversionUnits[$fromUOM])) && (self::$_conversionUnits[$fromUOM]['AllowPrefix'])) {
- $unitGroup1 = self::$_conversionUnits[$fromUOM]['Group'];
- } else {
- return PHPExcel_Calculation_Functions::NA();
- }
- }
- $value *= $fromMultiplier;
-
- $toMultiplier = 1.0;
- if (isset(self::$_conversionUnits[$toUOM])) {
- $unitGroup2 = self::$_conversionUnits[$toUOM]['Group'];
- } else {
- $toMultiplier = substr($toUOM,0,1);
- $toUOM = substr($toUOM,1);
- if (isset(self::$_conversionMultipliers[$toMultiplier])) {
- $toMultiplier = self::$_conversionMultipliers[$toMultiplier]['multiplier'];
- } else {
- return PHPExcel_Calculation_Functions::NA();
- }
- if ((isset(self::$_conversionUnits[$toUOM])) && (self::$_conversionUnits[$toUOM]['AllowPrefix'])) {
- $unitGroup2 = self::$_conversionUnits[$toUOM]['Group'];
- } else {
- return PHPExcel_Calculation_Functions::NA();
- }
- }
- if ($unitGroup1 != $unitGroup2) {
- return PHPExcel_Calculation_Functions::NA();
- }
-
- if (($fromUOM == $toUOM) && ($fromMultiplier == $toMultiplier)) {
- // We've already factored $fromMultiplier into the value, so we need
- // to reverse it again
- return $value / $fromMultiplier;
- } elseif ($unitGroup1 == 'Temperature') {
- if (($fromUOM == 'F') || ($fromUOM == 'fah')) {
- if (($toUOM == 'F') || ($toUOM == 'fah')) {
- return $value;
- } else {
- $value = (($value - 32) / 1.8);
- if (($toUOM == 'K') || ($toUOM == 'kel')) {
- $value += 273.15;
- }
- return $value;
- }
- } elseif ((($fromUOM == 'K') || ($fromUOM == 'kel')) &&
- (($toUOM == 'K') || ($toUOM == 'kel'))) {
- return $value;
- } elseif ((($fromUOM == 'C') || ($fromUOM == 'cel')) &&
- (($toUOM == 'C') || ($toUOM == 'cel'))) {
- return $value;
- }
- if (($toUOM == 'F') || ($toUOM == 'fah')) {
- if (($fromUOM == 'K') || ($fromUOM == 'kel')) {
- $value -= 273.15;
- }
- return ($value * 1.8) + 32;
- }
- if (($toUOM == 'C') || ($toUOM == 'cel')) {
- return $value - 273.15;
- }
- return $value + 273.15;
- }
- return ($value * self::$_unitConversions[$unitGroup1][$fromUOM][$toUOM]) / $toMultiplier;
- } // function CONVERTUOM()
-
-} // class PHPExcel_Calculation_Engineering
diff --git a/admin/survey/excel/PHPExcel/Calculation/Exception.php b/admin/survey/excel/PHPExcel/Calculation/Exception.php
deleted file mode 100644
index 5247105..0000000
--- a/admin/survey/excel/PHPExcel/Calculation/Exception.php
+++ /dev/null
@@ -1,52 +0,0 @@
-<?php
-/**
- * PHPExcel
- *
- * Copyright (c) 2006 - 2012 PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel_Calculation
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-
-/**
- * PHPExcel_Calculation_Exception
- *
- * @category PHPExcel
- * @package PHPExcel_Calculation
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- */
-class PHPExcel_Calculation_Exception extends Exception {
- /**
- * Error handler callback
- *
- * @param mixed $code
- * @param mixed $string
- * @param mixed $file
- * @param mixed $line
- * @param mixed $context
- */
- public static function errorHandlerCallback($code, $string, $file, $line, $context) {
- $e = new self($string, $code);
- $e->line = $line;
- $e->file = $file;
- throw $e;
- }
-}
diff --git a/admin/survey/excel/PHPExcel/Calculation/ExceptionHandler.php b/admin/survey/excel/PHPExcel/Calculation/ExceptionHandler.php
deleted file mode 100644
index 118cf7d..0000000
--- a/admin/survey/excel/PHPExcel/Calculation/ExceptionHandler.php
+++ /dev/null
@@ -1,49 +0,0 @@
-<?php
-/**
- * PHPExcel
- *
- * Copyright (c) 2006 - 2012 PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel_Calculation
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-/**
- * PHPExcel_Calculation_ExceptionHandler
- *
- * @category PHPExcel
- * @package PHPExcel_Calculation
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- */
-class PHPExcel_Calculation_ExceptionHandler {
- /**
- * Register errorhandler
- */
- public function __construct() {
- set_error_handler(array('PHPExcel_Calculation_Exception', 'errorHandlerCallback'), E_ALL);
- }
-
- /**
- * Unregister errorhandler
- */
- public function __destruct() {
- restore_error_handler();
- }
-}
diff --git a/admin/survey/excel/PHPExcel/Calculation/Financial.php b/admin/survey/excel/PHPExcel/Calculation/Financial.php
deleted file mode 100644
index a6f1e55..0000000
--- a/admin/survey/excel/PHPExcel/Calculation/Financial.php
+++ /dev/null
@@ -1,2248 +0,0 @@
-<?php
-/**
- * PHPExcel
- *
- * Copyright (c) 2006 - 2012 PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel_Calculation
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-
-/** PHPExcel root directory */
-if (!defined('PHPEXCEL_ROOT')) {
- /**
- * @ignore
- */
- define('PHPEXCEL_ROOT', dirname(__FILE__) . '/../../');
- require(PHPEXCEL_ROOT . 'PHPExcel/Autoloader.php');
-}
-
-
-/** FINANCIAL_MAX_ITERATIONS */
-define('FINANCIAL_MAX_ITERATIONS', 128);
-
-/** FINANCIAL_PRECISION */
-define('FINANCIAL_PRECISION', 1.0e-08);
-
-
-/**
- * PHPExcel_Calculation_Financial
- *
- * @category PHPExcel
- * @package PHPExcel_Calculation
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- */
-class PHPExcel_Calculation_Financial {
-
- /**
- * _lastDayOfMonth
- *
- * Returns a boolean TRUE/FALSE indicating if this date is the last date of the month
- *
- * @param DateTime $testDate The date for testing
- * @return boolean
- */
- private static function _lastDayOfMonth($testDate)
- {
- return ($testDate->format('d') == $testDate->format('t'));
- } // function _lastDayOfMonth()
-
-
- /**
- * _firstDayOfMonth
- *
- * Returns a boolean TRUE/FALSE indicating if this date is the first date of the month
- *
- * @param DateTime $testDate The date for testing
- * @return boolean
- */
- private static function _firstDayOfMonth($testDate)
- {
- return ($testDate->format('d') == 1);
- } // function _firstDayOfMonth()
-
-
- private static function _coupFirstPeriodDate($settlement, $maturity, $frequency, $next)
- {
- $months = 12 / $frequency;
-
- $result = PHPExcel_Shared_Date::ExcelToPHPObject($maturity);
- $eom = self::_lastDayOfMonth($result);
-
- while ($settlement < PHPExcel_Shared_Date::PHPToExcel($result)) {
- $result->modify('-'.$months.' months');
- }
- if ($next) {
- $result->modify('+'.$months.' months');
- }
-
- if ($eom) {
- $result->modify('-1 day');
- }
-
- return PHPExcel_Shared_Date::PHPToExcel($result);
- } // function _coupFirstPeriodDate()
-
-
- private static function _validFrequency($frequency)
- {
- if (($frequency == 1) || ($frequency == 2) || ($frequency == 4)) {
- return true;
- }
- if ((PHPExcel_Calculation_Functions::getCompatibilityMode() == PHPExcel_Calculation_Functions::COMPATIBILITY_GNUMERIC) &&
- (($frequency == 6) || ($frequency == 12))) {
- return true;
- }
- return false;
- } // function _validFrequency()
-
-
- /**
- * _daysPerYear
- *
- * Returns the number of days in a specified year, as defined by the "basis" value
- *
- * @param integer $year The year against which we're testing
- * @param integer $basis The type of day count:
- * 0 or omitted US (NASD) 360
- * 1 Actual (365 or 366 in a leap year)
- * 2 360
- * 3 365
- * 4 European 360
- * @return integer
- */
- private static function _daysPerYear($year, $basis=0)
- {
- switch ($basis) {
- case 0 :
- case 2 :
- case 4 :
- $daysPerYear = 360;
- break;
- case 3 :
- $daysPerYear = 365;
- break;
- case 1 :
- $daysPerYear = (PHPExcel_Calculation_DateTime::_isLeapYear($year)) ? 366 : 365;
- break;
- default :
- return PHPExcel_Calculation_Functions::NaN();
- }
- return $daysPerYear;
- } // function _daysPerYear()
-
-
- private static function _interestAndPrincipal($rate=0, $per=0, $nper=0, $pv=0, $fv=0, $type=0)
- {
- $pmt = self::PMT($rate, $nper, $pv, $fv, $type);
- $capital = $pv;
- for ($i = 1; $i<= $per; ++$i) {
- $interest = ($type && $i == 1) ? 0 : -$capital * $rate;
- $principal = $pmt - $interest;
- $capital += $principal;
- }
- return array($interest, $principal);
- } // function _interestAndPrincipal()
-
-
- /**
- * ACCRINT
- *
- * Returns the accrued interest for a security that pays periodic interest.
- *
- * Excel Function:
- * ACCRINT(issue,firstinterest,settlement,rate,par,frequency[,basis])
- *
- * @access public
- * @category Financial Functions
- * @param mixed $issue The security's issue date.
- * @param mixed $firstinterest The security's first interest date.
- * @param mixed $settlement The security's settlement date.
- * The security settlement date is the date after the issue date
- * when the security is traded to the buyer.
- * @param float $rate The security's annual coupon rate.
- * @param float $par The security's par value.
- * If you omit par, ACCRINT uses $1,000.
- * @param integer $frequency the number of coupon payments per year.
- * Valid frequency values are:
- * 1 Annual
- * 2 Semi-Annual
- * 4 Quarterly
- * If working in Gnumeric Mode, the following frequency options are
- * also available
- * 6 Bimonthly
- * 12 Monthly
- * @param integer $basis The type of day count to use.
- * 0 or omitted US (NASD) 30/360
- * 1 Actual/actual
- * 2 Actual/360
- * 3 Actual/365
- * 4 European 30/360
- * @return float
- */
- public static function ACCRINT($issue, $firstinterest, $settlement, $rate, $par=1000, $frequency=1, $basis=0)
- {
- $issue = PHPExcel_Calculation_Functions::flattenSingleValue($issue);
- $firstinterest = PHPExcel_Calculation_Functions::flattenSingleValue($firstinterest);
- $settlement = PHPExcel_Calculation_Functions::flattenSingleValue($settlement);
- $rate = PHPExcel_Calculation_Functions::flattenSingleValue($rate);
- $par = (is_null($par)) ? 1000 : PHPExcel_Calculation_Functions::flattenSingleValue($par);
- $frequency = (is_null($frequency)) ? 1 : PHPExcel_Calculation_Functions::flattenSingleValue($frequency);
- $basis = (is_null($basis)) ? 0 : PHPExcel_Calculation_Functions::flattenSingleValue($basis);
-
- // Validate
- if ((is_numeric($rate)) && (is_numeric($par))) {
- $rate = (float) $rate;
- $par = (float) $par;
- if (($rate <= 0) || ($par <= 0)) {
- return PHPExcel_Calculation_Functions::NaN();
- }
- $daysBetweenIssueAndSettlement = PHPExcel_Calculation_DateTime::YEARFRAC($issue, $settlement, $basis);
- if (!is_numeric($daysBetweenIssueAndSettlement)) {
- // return date error
- return $daysBetweenIssueAndSettlement;
- }
-
- return $par * $rate * $daysBetweenIssueAndSettlement;
- }
- return PHPExcel_Calculation_Functions::VALUE();
- } // function ACCRINT()
-
-
- /**
- * ACCRINTM
- *
- * Returns the accrued interest for a security that pays interest at maturity.
- *
- * Excel Function:
- * ACCRINTM(issue,settlement,rate[,par[,basis]])
- *
- * @access public
- * @category Financial Functions
- * @param mixed issue The security's issue date.
- * @param mixed settlement The security's settlement (or maturity) date.
- * @param float rate The security's annual coupon rate.
- * @param float par The security's par value.
- * If you omit par, ACCRINT uses $1,000.
- * @param integer basis The type of day count to use.
- * 0 or omitted US (NASD) 30/360
- * 1 Actual/actual
- * 2 Actual/360
- * 3 Actual/365
- * 4 European 30/360
- * @return float
- */
- public static function ACCRINTM($issue, $settlement, $rate, $par=1000, $basis=0) {
- $issue = PHPExcel_Calculation_Functions::flattenSingleValue($issue);
- $settlement = PHPExcel_Calculation_Functions::flattenSingleValue($settlement);
- $rate = PHPExcel_Calculation_Functions::flattenSingleValue($rate);
- $par = (is_null($par)) ? 1000 : PHPExcel_Calculation_Functions::flattenSingleValue($par);
- $basis = (is_null($basis)) ? 0 : PHPExcel_Calculation_Functions::flattenSingleValue($basis);
-
- // Validate
- if ((is_numeric($rate)) && (is_numeric($par))) {
- $rate = (float) $rate;
- $par = (float) $par;
- if (($rate <= 0) || ($par <= 0)) {
- return PHPExcel_Calculation_Functions::NaN();
- }
- $daysBetweenIssueAndSettlement = PHPExcel_Calculation_DateTime::YEARFRAC($issue, $settlement, $basis);
- if (!is_numeric($daysBetweenIssueAndSettlement)) {
- // return date error
- return $daysBetweenIssueAndSettlement;
- }
- return $par * $rate * $daysBetweenIssueAndSettlement;
- }
- return PHPExcel_Calculation_Functions::VALUE();
- } // function ACCRINTM()
-
-
- /**
- * AMORDEGRC
- *
- * Returns the depreciation for each accounting period.
- * This function is provided for the French accounting system. If an asset is purchased in
- * the middle of the accounting period, the prorated depreciation is taken into account.
- * The function is similar to AMORLINC, except that a depreciation coefficient is applied in
- * the calculation depending on the life of the assets.
- * This function will return the depreciation until the last period of the life of the assets
- * or until the cumulated value of depreciation is greater than the cost of the assets minus
- * the salvage value.
- *
- * Excel Function:
- * AMORDEGRC(cost,purchased,firstPeriod,salvage,period,rate[,basis])
- *
- * @access public
- * @category Financial Functions
- * @param float cost The cost of the asset.
- * @param mixed purchased Date of the purchase of the asset.
- * @param mixed firstPeriod Date of the end of the first period.
- * @param mixed salvage The salvage value at the end of the life of the asset.
- * @param float period The period.
- * @param float rate Rate of depreciation.
- * @param integer basis The type of day count to use.
- * 0 or omitted US (NASD) 30/360
- * 1 Actual/actual
- * 2 Actual/360
- * 3 Actual/365
- * 4 European 30/360
- * @return float
- */
- public static function AMORDEGRC($cost, $purchased, $firstPeriod, $salvage, $period, $rate, $basis=0) {
- $cost = PHPExcel_Calculation_Functions::flattenSingleValue($cost);
- $purchased = PHPExcel_Calculation_Functions::flattenSingleValue($purchased);
- $firstPeriod = PHPExcel_Calculation_Functions::flattenSingleValue($firstPeriod);
- $salvage = PHPExcel_Calculation_Functions::flattenSingleValue($salvage);
- $period = floor(PHPExcel_Calculation_Functions::flattenSingleValue($period));
- $rate = PHPExcel_Calculation_Functions::flattenSingleValue($rate);
- $basis = (is_null($basis)) ? 0 : (int) PHPExcel_Calculation_Functions::flattenSingleValue($basis);
-
- // The depreciation coefficients are:
- // Life of assets (1/rate) Depreciation coefficient
- // Less than 3 years 1
- // Between 3 and 4 years 1.5
- // Between 5 and 6 years 2
- // More than 6 years 2.5
- $fUsePer = 1.0 / $rate;
- if ($fUsePer < 3.0) {
- $amortiseCoeff = 1.0;
- } elseif ($fUsePer < 5.0) {
- $amortiseCoeff = 1.5;
- } elseif ($fUsePer <= 6.0) {
- $amortiseCoeff = 2.0;
- } else {
- $amortiseCoeff = 2.5;
- }
-
- $rate *= $amortiseCoeff;
- $fNRate = round(PHPExcel_Calculation_DateTime::YEARFRAC($purchased, $firstPeriod, $basis) * $rate * $cost,0);
- $cost -= $fNRate;
- $fRest = $cost - $salvage;
-
- for ($n = 0; $n < $period; ++$n) {
- $fNRate = round($rate * $cost,0);
- $fRest -= $fNRate;
-
- if ($fRest < 0.0) {
- switch ($period - $n) {
- case 0 :
- case 1 : return round($cost * 0.5, 0);
- break;
- default : return 0.0;
- break;
- }
- }
- $cost -= $fNRate;
- }
- return $fNRate;
- } // function AMORDEGRC()
-
-
- /**
- * AMORLINC
- *
- * Returns the depreciation for each accounting period.
- * This function is provided for the French accounting system. If an asset is purchased in
- * the middle of the accounting period, the prorated depreciation is taken into account.
- *
- * Excel Function:
- * AMORLINC(cost,purchased,firstPeriod,salvage,period,rate[,basis])
- *
- * @access public
- * @category Financial Functions
- * @param float cost The cost of the asset.
- * @param mixed purchased Date of the purchase of the asset.
- * @param mixed firstPeriod Date of the end of the first period.
- * @param mixed salvage The salvage value at the end of the life of the asset.
- * @param float period The period.
- * @param float rate Rate of depreciation.
- * @param integer basis The type of day count to use.
- * 0 or omitted US (NASD) 30/360
- * 1 Actual/actual
- * 2 Actual/360
- * 3 Actual/365
- * 4 European 30/360
- * @return float
- */
- public static function AMORLINC($cost, $purchased, $firstPeriod, $salvage, $period, $rate, $basis=0) {
- $cost = PHPExcel_Calculation_Functions::flattenSingleValue($cost);
- $purchased = PHPExcel_Calculation_Functions::flattenSingleValue($purchased);
- $firstPeriod = PHPExcel_Calculation_Functions::flattenSingleValue($firstPeriod);
- $salvage = PHPExcel_Calculation_Functions::flattenSingleValue($salvage);
- $period = PHPExcel_Calculation_Functions::flattenSingleValue($period);
- $rate = PHPExcel_Calculation_Functions::flattenSingleValue($rate);
- $basis = (is_null($basis)) ? 0 : (int) PHPExcel_Calculation_Functions::flattenSingleValue($basis);
-
- $fOneRate = $cost * $rate;
- $fCostDelta = $cost - $salvage;
- // Note, quirky variation for leap years on the YEARFRAC for this function
- $purchasedYear = PHPExcel_Calculation_DateTime::YEAR($purchased);
- $yearFrac = PHPExcel_Calculation_DateTime::YEARFRAC($purchased, $firstPeriod, $basis);
-
- if (($basis == 1) && ($yearFrac < 1) && (PHPExcel_Calculation_DateTime::_isLeapYear($purchasedYear))) {
- $yearFrac *= 365 / 366;
- }
-
- $f0Rate = $yearFrac * $rate * $cost;
- $nNumOfFullPeriods = intval(($cost - $salvage - $f0Rate) / $fOneRate);
-
- if ($period == 0) {
- return $f0Rate;
- } elseif ($period <= $nNumOfFullPeriods) {
- return $fOneRate;
- } elseif ($period == ($nNumOfFullPeriods + 1)) {
- return ($fCostDelta - $fOneRate * $nNumOfFullPeriods - $f0Rate);
- } else {
- return 0.0;
- }
- } // function AMORLINC()
-
-
- /**
- * COUPDAYBS
- *
- * Returns the number of days from the beginning of the coupon period to the settlement date.
- *
- * Excel Function:
- * COUPDAYBS(settlement,maturity,frequency[,basis])
- *
- * @access public
- * @category Financial Functions
- * @param mixed settlement The security's settlement date.
- * The security settlement date is the date after the issue
- * date when the security is traded to the buyer.
- * @param mixed maturity The security's maturity date.
- * The maturity date is the date when the security expires.
- * @param mixed frequency the number of coupon payments per year.
- * Valid frequency values are:
- * 1 Annual
- * 2 Semi-Annual
- * 4 Quarterly
- * If working in Gnumeric Mode, the following frequency options are
- * also available
- * 6 Bimonthly
- * 12 Monthly
- * @param integer basis The type of day count to use.
- * 0 or omitted US (NASD) 30/360
- * 1 Actual/actual
- * 2 Actual/360
- * 3 Actual/365
- * 4 European 30/360
- * @return float
- */
- public static function COUPDAYBS($settlement, $maturity, $frequency, $basis=0) {
- $settlement = PHPExcel_Calculation_Functions::flattenSingleValue($settlement);
- $maturity = PHPExcel_Calculation_Functions::flattenSingleValue($maturity);
- $frequency = (int) PHPExcel_Calculation_Functions::flattenSingleValue($frequency);
- $basis = (is_null($basis)) ? 0 : (int) PHPExcel_Calculation_Functions::flattenSingleValue($basis);
-
- if (is_string($settlement = PHPExcel_Calculation_DateTime::_getDateValue($settlement))) {
- return PHPExcel_Calculation_Functions::VALUE();
- }
- if (is_string($maturity = PHPExcel_Calculation_DateTime::_getDateValue($maturity))) {
- return PHPExcel_Calculation_Functions::VALUE();
- }
-
- if (($settlement > $maturity) ||
- (!self::_validFrequency($frequency)) ||
- (($basis < 0) || ($basis > 4))) {
- return PHPExcel_Calculation_Functions::NaN();
- }
-
- $daysPerYear = self::_daysPerYear(PHPExcel_Calculation_DateTime::YEAR($settlement),$basis);
- $prev = self::_coupFirstPeriodDate($settlement, $maturity, $frequency, False);
-
- return PHPExcel_Calculation_DateTime::YEARFRAC($prev, $settlement, $basis) * $daysPerYear;
- } // function COUPDAYBS()
-
-
- /**
- * COUPDAYS
- *
- * Returns the number of days in the coupon period that contains the settlement date.
- *
- * Excel Function:
- * COUPDAYS(settlement,maturity,frequency[,basis])
- *
- * @access public
- * @category Financial Functions
- * @param mixed settlement The security's settlement date.
- * The security settlement date is the date after the issue
- * date when the security is traded to the buyer.
- * @param mixed maturity The security's maturity date.
- * The maturity date is the date when the security expires.
- * @param mixed frequency the number of coupon payments per year.
- * Valid frequency values are:
- * 1 Annual
- * 2 Semi-Annual
- * 4 Quarterly
- * If working in Gnumeric Mode, the following frequency options are
- * also available
- * 6 Bimonthly
- * 12 Monthly
- * @param integer basis The type of day count to use.
- * 0 or omitted US (NASD) 30/360
- * 1 Actual/actual
- * 2 Actual/360
- * 3 Actual/365
- * 4 European 30/360
- * @return float
- */
- public static function COUPDAYS($settlement, $maturity, $frequency, $basis=0) {
- $settlement = PHPExcel_Calculation_Functions::flattenSingleValue($settlement);
- $maturity = PHPExcel_Calculation_Functions::flattenSingleValue($maturity);
- $frequency = (int) PHPExcel_Calculation_Functions::flattenSingleValue($frequency);
- $basis = (is_null($basis)) ? 0 : (int) PHPExcel_Calculation_Functions::flattenSingleValue($basis);
-
- if (is_string($settlement = PHPExcel_Calculation_DateTime::_getDateValue($settlement))) {
- return PHPExcel_Calculation_Functions::VALUE();
- }
- if (is_string($maturity = PHPExcel_Calculation_DateTime::_getDateValue($maturity))) {
- return PHPExcel_Calculation_Functions::VALUE();
- }
-
- if (($settlement > $maturity) ||
- (!self::_validFrequency($frequency)) ||
- (($basis < 0) || ($basis > 4))) {
- return PHPExcel_Calculation_Functions::NaN();
- }
-
- switch ($basis) {
- case 3: // Actual/365
- return 365 / $frequency;
- case 1: // Actual/actual
- if ($frequency == 1) {
- $daysPerYear = self::_daysPerYear(PHPExcel_Calculation_DateTime::YEAR($maturity),$basis);
- return ($daysPerYear / $frequency);
- } else {
- $prev = self::_coupFirstPeriodDate($settlement, $maturity, $frequency, False);
- $next = self::_coupFirstPeriodDate($settlement, $maturity, $frequency, True);
- return ($next - $prev);
- }
- default: // US (NASD) 30/360, Actual/360 or European 30/360
- return 360 / $frequency;
- }
- return PHPExcel_Calculation_Functions::VALUE();
- } // function COUPDAYS()
-
-
- /**
- * COUPDAYSNC
- *
- * Returns the number of days from the settlement date to the next coupon date.
- *
- * Excel Function:
- * COUPDAYSNC(settlement,maturity,frequency[,basis])
- *
- * @access public
- * @category Financial Functions
- * @param mixed settlement The security's settlement date.
- * The security settlement date is the date after the issue
- * date when the security is traded to the buyer.
- * @param mixed maturity The security's maturity date.
- * The maturity date is the date when the security expires.
- * @param mixed frequency the number of coupon payments per year.
- * Valid frequency values are:
- * 1 Annual
- * 2 Semi-Annual
- * 4 Quarterly
- * If working in Gnumeric Mode, the following frequency options are
- * also available
- * 6 Bimonthly
- * 12 Monthly
- * @param integer basis The type of day count to use.
- * 0 or omitted US (NASD) 30/360
- * 1 Actual/actual
- * 2 Actual/360
- * 3 Actual/365
- * 4 European 30/360
- * @return float
- */
- public static function COUPDAYSNC($settlement, $maturity, $frequency, $basis=0) {
- $settlement = PHPExcel_Calculation_Functions::flattenSingleValue($settlement);
- $maturity = PHPExcel_Calculation_Functions::flattenSingleValue($maturity);
- $frequency = (int) PHPExcel_Calculation_Functions::flattenSingleValue($frequency);
- $basis = (is_null($basis)) ? 0 : (int) PHPExcel_Calculation_Functions::flattenSingleValue($basis);
-
- if (is_string($settlement = PHPExcel_Calculation_DateTime::_getDateValue($settlement))) {
- return PHPExcel_Calculation_Functions::VALUE();
- }
- if (is_string($maturity = PHPExcel_Calculation_DateTime::_getDateValue($maturity))) {
- return PHPExcel_Calculation_Functions::VALUE();
- }
-
- if (($settlement > $maturity) ||
- (!self::_validFrequency($frequency)) ||
- (($basis < 0) || ($basis > 4))) {
- return PHPExcel_Calculation_Functions::NaN();
- }
-
- $daysPerYear = self::_daysPerYear(PHPExcel_Calculation_DateTime::YEAR($settlement),$basis);
- $next = self::_coupFirstPeriodDate($settlement, $maturity, $frequency, True);
-
- return PHPExcel_Calculation_DateTime::YEARFRAC($settlement, $next, $basis) * $daysPerYear;
- } // function COUPDAYSNC()
-
-
- /**
- * COUPNCD
- *
- * Returns the next coupon date after the settlement date.
- *
- * Excel Function:
- * COUPNCD(settlement,maturity,frequency[,basis])
- *
- * @access public
- * @category Financial Functions
- * @param mixed settlement The security's settlement date.
- * The security settlement date is the date after the issue
- * date when the security is traded to the buyer.
- * @param mixed maturity The security's maturity date.
- * The maturity date is the date when the security expires.
- * @param mixed frequency the number of coupon payments per year.
- * Valid frequency values are:
- * 1 Annual
- * 2 Semi-Annual
- * 4 Quarterly
- * If working in Gnumeric Mode, the following frequency options are
- * also available
- * 6 Bimonthly
- * 12 Monthly
- * @param integer basis The type of day count to use.
- * 0 or omitted US (NASD) 30/360
- * 1 Actual/actual
- * 2 Actual/360
- * 3 Actual/365
- * 4 European 30/360
- * @return mixed Excel date/time serial value, PHP date/time serial value or PHP date/time object,
- * depending on the value of the ReturnDateType flag
- */
- public static function COUPNCD($settlement, $maturity, $frequency, $basis=0) {
- $settlement = PHPExcel_Calculation_Functions::flattenSingleValue($settlement);
- $maturity = PHPExcel_Calculation_Functions::flattenSingleValue($maturity);
- $frequency = (int) PHPExcel_Calculation_Functions::flattenSingleValue($frequency);
- $basis = (is_null($basis)) ? 0 : (int) PHPExcel_Calculation_Functions::flattenSingleValue($basis);
-
- if (is_string($settlement = PHPExcel_Calculation_DateTime::_getDateValue($settlement))) {
- return PHPExcel_Calculation_Functions::VALUE();
- }
- if (is_string($maturity = PHPExcel_Calculation_DateTime::_getDateValue($maturity))) {
- return PHPExcel_Calculation_Functions::VALUE();
- }
-
- if (($settlement > $maturity) ||
- (!self::_validFrequency($frequency)) ||
- (($basis < 0) || ($basis > 4))) {
- return PHPExcel_Calculation_Functions::NaN();
- }
-
- return self::_coupFirstPeriodDate($settlement, $maturity, $frequency, True);
- } // function COUPNCD()
-
-
- /**
- * COUPNUM
- *
- * Returns the number of coupons payable between the settlement date and maturity date,
- * rounded up to the nearest whole coupon.
- *
- * Excel Function:
- * COUPNUM(settlement,maturity,frequency[,basis])
- *
- * @access public
- * @category Financial Functions
- * @param mixed settlement The security's settlement date.
- * The security settlement date is the date after the issue
- * date when the security is traded to the buyer.
- * @param mixed maturity The security's maturity date.
- * The maturity date is the date when the security expires.
- * @param mixed frequency the number of coupon payments per year.
- * Valid frequency values are:
- * 1 Annual
- * 2 Semi-Annual
- * 4 Quarterly
- * If working in Gnumeric Mode, the following frequency options are
- * also available
- * 6 Bimonthly
- * 12 Monthly
- * @param integer basis The type of day count to use.
- * 0 or omitted US (NASD) 30/360
- * 1 Actual/actual
- * 2 Actual/360
- * 3 Actual/365
- * 4 European 30/360
- * @return integer
- */
- public static function COUPNUM($settlement, $maturity, $frequency, $basis=0) {
- $settlement = PHPExcel_Calculation_Functions::flattenSingleValue($settlement);
- $maturity = PHPExcel_Calculation_Functions::flattenSingleValue($maturity);
- $frequency = (int) PHPExcel_Calculation_Functions::flattenSingleValue($frequency);
- $basis = (is_null($basis)) ? 0 : (int) PHPExcel_Calculation_Functions::flattenSingleValue($basis);
-
- if (is_string($settlement = PHPExcel_Calculation_DateTime::_getDateValue($settlement))) {
- return PHPExcel_Calculation_Functions::VALUE();
- }
- if (is_string($maturity = PHPExcel_Calculation_DateTime::_getDateValue($maturity))) {
- return PHPExcel_Calculation_Functions::VALUE();
- }
-
- if (($settlement > $maturity) ||
- (!self::_validFrequency($frequency)) ||
- (($basis < 0) || ($basis > 4))) {
- return PHPExcel_Calculation_Functions::NaN();
- }
-
- $settlement = self::_coupFirstPeriodDate($settlement, $maturity, $frequency, True);
- $daysBetweenSettlementAndMaturity = PHPExcel_Calculation_DateTime::YEARFRAC($settlement, $maturity, $basis) * 365;
-
- switch ($frequency) {
- case 1: // annual payments
- return ceil($daysBetweenSettlementAndMaturity / 360);
- case 2: // half-yearly
- return ceil($daysBetweenSettlementAndMaturity / 180);
- case 4: // quarterly
- return ceil($daysBetweenSettlementAndMaturity / 90);
- case 6: // bimonthly
- return ceil($daysBetweenSettlementAndMaturity / 60);
- case 12: // monthly
- return ceil($daysBetweenSettlementAndMaturity / 30);
- }
- return PHPExcel_Calculation_Functions::VALUE();
- } // function COUPNUM()
-
-
- /**
- * COUPPCD
- *
- * Returns the previous coupon date before the settlement date.
- *
- * Excel Function:
- * COUPPCD(settlement,maturity,frequency[,basis])
- *
- * @access public
- * @category Financial Functions
- * @param mixed settlement The security's settlement date.
- * The security settlement date is the date after the issue
- * date when the security is traded to the buyer.
- * @param mixed maturity The security's maturity date.
- * The maturity date is the date when the security expires.
- * @param mixed frequency the number of coupon payments per year.
- * Valid frequency values are:
- * 1 Annual
- * 2 Semi-Annual
- * 4 Quarterly
- * If working in Gnumeric Mode, the following frequency options are
- * also available
- * 6 Bimonthly
- * 12 Monthly
- * @param integer basis The type of day count to use.
- * 0 or omitted US (NASD) 30/360
- * 1 Actual/actual
- * 2 Actual/360
- * 3 Actual/365
- * 4 European 30/360
- * @return mixed Excel date/time serial value, PHP date/time serial value or PHP date/time object,
- * depending on the value of the ReturnDateType flag
- */
- public static function COUPPCD($settlement, $maturity, $frequency, $basis=0) {
- $settlement = PHPExcel_Calculation_Functions::flattenSingleValue($settlement);
- $maturity = PHPExcel_Calculation_Functions::flattenSingleValue($maturity);
- $frequency = (int) PHPExcel_Calculation_Functions::flattenSingleValue($frequency);
- $basis = (is_null($basis)) ? 0 : (int) PHPExcel_Calculation_Functions::flattenSingleValue($basis);
-
- if (is_string($settlement = PHPExcel_Calculation_DateTime::_getDateValue($settlement))) {
- return PHPExcel_Calculation_Functions::VALUE();
- }
- if (is_string($maturity = PHPExcel_Calculation_DateTime::_getDateValue($maturity))) {
- return PHPExcel_Calculation_Functions::VALUE();
- }
-
- if (($settlement > $maturity) ||
- (!self::_validFrequency($frequency)) ||
- (($basis < 0) || ($basis > 4))) {
- return PHPExcel_Calculation_Functions::NaN();
- }
-
- return self::_coupFirstPeriodDate($settlement, $maturity, $frequency, False);
- } // function COUPPCD()
-
-
- /**
- * CUMIPMT
- *
- * Returns the cumulative interest paid on a loan between the start and end periods.
- *
- * Excel Function:
- * CUMIPMT(rate,nper,pv,start,end[,type])
- *
- * @access public
- * @category Financial Functions
- * @param float $rate The Interest rate
- * @param integer $nper The total number of payment periods
- * @param float $pv Present Value
- * @param integer $start The first period in the calculation.
- * Payment periods are numbered beginning with 1.
- * @param integer $end The last period in the calculation.
- * @param integer $type A number 0 or 1 and indicates when payments are due:
- * 0 or omitted At the end of the period.
- * 1 At the beginning of the period.
- * @return float
- */
- public static function CUMIPMT($rate, $nper, $pv, $start, $end, $type = 0) {
- $rate = PHPExcel_Calculation_Functions::flattenSingleValue($rate);
- $nper = (int) PHPExcel_Calculation_Functions::flattenSingleValue($nper);
- $pv = PHPExcel_Calculation_Functions::flattenSingleValue($pv);
- $start = (int) PHPExcel_Calculation_Functions::flattenSingleValue($start);
- $end = (int) PHPExcel_Calculation_Functions::flattenSingleValue($end);
- $type = (int) PHPExcel_Calculation_Functions::flattenSingleValue($type);
-
- // Validate parameters
- if ($type != 0 && $type != 1) {
- return PHPExcel_Calculation_Functions::NaN();
- }
- if ($start < 1 || $start > $end) {
- return PHPExcel_Calculation_Functions::VALUE();
- }
-
- // Calculate
- $interest = 0;
- for ($per = $start; $per <= $end; ++$per) {
- $interest += self::IPMT($rate, $per, $nper, $pv, 0, $type);
- }
-
- return $interest;
- } // function CUMIPMT()
-
-
- /**
- * CUMPRINC
- *
- * Returns the cumulative principal paid on a loan between the start and end periods.
- *
- * Excel Function:
- * CUMPRINC(rate,nper,pv,start,end[,type])
- *
- * @access public
- * @category Financial Functions
- * @param float $rate The Interest rate
- * @param integer $nper The total number of payment periods
- * @param float $pv Present Value
- * @param integer $start The first period in the calculation.
- * Payment periods are numbered beginning with 1.
- * @param integer $end The last period in the calculation.
- * @param integer $type A number 0 or 1 and indicates when payments are due:
- * 0 or omitted At the end of the period.
- * 1 At the beginning of the period.
- * @return float
- */
- public static function CUMPRINC($rate, $nper, $pv, $start, $end, $type = 0) {
- $rate = PHPExcel_Calculation_Functions::flattenSingleValue($rate);
- $nper = (int) PHPExcel_Calculation_Functions::flattenSingleValue($nper);
- $pv = PHPExcel_Calculation_Functions::flattenSingleValue($pv);
- $start = (int) PHPExcel_Calculation_Functions::flattenSingleValue($start);
- $end = (int) PHPExcel_Calculation_Functions::flattenSingleValue($end);
- $type = (int) PHPExcel_Calculation_Functions::flattenSingleValue($type);
-
- // Validate parameters
- if ($type != 0 && $type != 1) {
- return PHPExcel_Calculation_Functions::NaN();
- }
- if ($start < 1 || $start > $end) {
- return PHPExcel_Calculation_Functions::VALUE();
- }
-
- // Calculate
- $principal = 0;
- for ($per = $start; $per <= $end; ++$per) {
- $principal += self::PPMT($rate, $per, $nper, $pv, 0, $type);
- }
-
- return $principal;
- } // function CUMPRINC()
-
-
- /**
- * DB
- *
- * Returns the depreciation of an asset for a specified period using the
- * fixed-declining balance method.
- * This form of depreciation is used if you want to get a higher depreciation value
- * at the beginning of the depreciation (as opposed to linear depreciation). The
- * depreciation value is reduced with every depreciation period by the depreciation
- * already deducted from the initial cost.
- *
- * Excel Function:
- * DB(cost,salvage,life,period[,month])
- *
- * @access public
- * @category Financial Functions
- * @param float cost Initial cost of the asset.
- * @param float salvage Value at the end of the depreciation.
- * (Sometimes called the salvage value of the asset)
- * @param integer life Number of periods over which the asset is depreciated.
- * (Sometimes called the useful life of the asset)
- * @param integer period The period for which you want to calculate the
- * depreciation. Period must use the same units as life.
- * @param integer month Number of months in the first year. If month is omitted,
- * it defaults to 12.
- * @return float
- */
- public static function DB($cost, $salvage, $life, $period, $month=12) {
- $cost = PHPExcel_Calculation_Functions::flattenSingleValue($cost);
- $salvage = PHPExcel_Calculation_Functions::flattenSingleValue($salvage);
- $life = PHPExcel_Calculation_Functions::flattenSingleValue($life);
- $period = PHPExcel_Calculation_Functions::flattenSingleValue($period);
- $month = PHPExcel_Calculation_Functions::flattenSingleValue($month);
-
- // Validate
- if ((is_numeric($cost)) && (is_numeric($salvage)) && (is_numeric($life)) && (is_numeric($period)) && (is_numeric($month))) {
- $cost = (float) $cost;
- $salvage = (float) $salvage;
- $life = (int) $life;
- $period = (int) $period;
- $month = (int) $month;
- if ($cost == 0) {
- return 0.0;
- } elseif (($cost < 0) || (($salvage / $cost) < 0) || ($life <= 0) || ($period < 1) || ($month < 1)) {
- return PHPExcel_Calculation_Functions::NaN();
- }
- // Set Fixed Depreciation Rate
- $fixedDepreciationRate = 1 - pow(($salvage / $cost), (1 / $life));
- $fixedDepreciationRate = round($fixedDepreciationRate, 3);
-
- // Loop through each period calculating the depreciation
- $previousDepreciation = 0;
- for ($per = 1; $per <= $period; ++$per) {
- if ($per == 1) {
- $depreciation = $cost * $fixedDepreciationRate * $month / 12;
- } elseif ($per == ($life + 1)) {
- $depreciation = ($cost - $previousDepreciation) * $fixedDepreciationRate * (12 - $month) / 12;
- } else {
- $depreciation = ($cost - $previousDepreciation) * $fixedDepreciationRate;
- }
- $previousDepreciation += $depreciation;
- }
- if (PHPExcel_Calculation_Functions::getCompatibilityMode() == PHPExcel_Calculation_Functions::COMPATIBILITY_GNUMERIC) {
- $depreciation = round($depreciation,2);
- }
- return $depreciation;
- }
- return PHPExcel_Calculation_Functions::VALUE();
- } // function DB()
-
-
- /**
- * DDB
- *
- * Returns the depreciation of an asset for a specified period using the
- * double-declining balance method or some other method you specify.
- *
- * Excel Function:
- * DDB(cost,salvage,life,period[,factor])
- *
- * @access public
- * @category Financial Functions
- * @param float cost Initial cost of the asset.
- * @param float salvage Value at the end of the depreciation.
- * (Sometimes called the salvage value of the asset)
- * @param integer life Number of periods over which the asset is depreciated.
- * (Sometimes called the useful life of the asset)
- * @param integer period The period for which you want to calculate the
- * depreciation. Period must use the same units as life.
- * @param float factor The rate at which the balance declines.
- * If factor is omitted, it is assumed to be 2 (the
- * double-declining balance method).
- * @return float
- */
- public static function DDB($cost, $salvage, $life, $period, $factor=2.0) {
- $cost = PHPExcel_Calculation_Functions::flattenSingleValue($cost);
- $salvage = PHPExcel_Calculation_Functions::flattenSingleValue($salvage);
- $life = PHPExcel_Calculation_Functions::flattenSingleValue($life);
- $period = PHPExcel_Calculation_Functions::flattenSingleValue($period);
- $factor = PHPExcel_Calculation_Functions::flattenSingleValue($factor);
-
- // Validate
- if ((is_numeric($cost)) && (is_numeric($salvage)) && (is_numeric($life)) && (is_numeric($period)) && (is_numeric($factor))) {
- $cost = (float) $cost;
- $salvage = (float) $salvage;
- $life = (int) $life;
- $period = (int) $period;
- $factor = (float) $factor;
- if (($cost <= 0) || (($salvage / $cost) < 0) || ($life <= 0) || ($period < 1) || ($factor <= 0.0) || ($period > $life)) {
- return PHPExcel_Calculation_Functions::NaN();
- }
- // Set Fixed Depreciation Rate
- $fixedDepreciationRate = 1 - pow(($salvage / $cost), (1 / $life));
- $fixedDepreciationRate = round($fixedDepreciationRate, 3);
-
- // Loop through each period calculating the depreciation
- $previousDepreciation = 0;
- for ($per = 1; $per <= $period; ++$per) {
- $depreciation = min( ($cost - $previousDepreciation) * ($factor / $life), ($cost - $salvage - $previousDepreciation) );
- $previousDepreciation += $depreciation;
- }
- if (PHPExcel_Calculation_Functions::getCompatibilityMode() == PHPExcel_Calculation_Functions::COMPATIBILITY_GNUMERIC) {
- $depreciation = round($depreciation,2);
- }
- return $depreciation;
- }
- return PHPExcel_Calculation_Functions::VALUE();
- } // function DDB()
-
-
- /**
- * DISC
- *
- * Returns the discount rate for a security.
- *
- * Excel Function:
- * DISC(settlement,maturity,price,redemption[,basis])
- *
- * @access public
- * @category Financial Functions
- * @param mixed settlement The security's settlement date.
- * The security settlement date is the date after the issue
- * date when the security is traded to the buyer.
- * @param mixed maturity The security's maturity date.
- * The maturity date is the date when the security expires.
- * @param integer price The security's price per $100 face value.
- * @param integer redemption The security's redemption value per $100 face value.
- * @param integer basis The type of day count to use.
- * 0 or omitted US (NASD) 30/360
- * 1 Actual/actual
- * 2 Actual/360
- * 3 Actual/365
- * 4 European 30/360
- * @return float
- */
- public static function DISC($settlement, $maturity, $price, $redemption, $basis=0) {
- $settlement = PHPExcel_Calculation_Functions::flattenSingleValue($settlement);
- $maturity = PHPExcel_Calculation_Functions::flattenSingleValue($maturity);
- $price = PHPExcel_Calculation_Functions::flattenSingleValue($price);
- $redemption = PHPExcel_Calculation_Functions::flattenSingleValue($redemption);
- $basis = PHPExcel_Calculation_Functions::flattenSingleValue($basis);
-
- // Validate
- if ((is_numeric($price)) && (is_numeric($redemption)) && (is_numeric($basis))) {
- $price = (float) $price;
- $redemption = (float) $redemption;
- $basis = (int) $basis;
- if (($price <= 0) || ($redemption <= 0)) {
- return PHPExcel_Calculation_Functions::NaN();
- }
- $daysBetweenSettlementAndMaturity = PHPExcel_Calculation_DateTime::YEARFRAC($settlement, $maturity, $basis);
- if (!is_numeric($daysBetweenSettlementAndMaturity)) {
- // return date error
- return $daysBetweenSettlementAndMaturity;
- }
-
- return ((1 - $price / $redemption) / $daysBetweenSettlementAndMaturity);
- }
- return PHPExcel_Calculation_Functions::VALUE();
- } // function DISC()
-
-
- /**
- * DOLLARDE
- *
- * Converts a dollar price expressed as an integer part and a fraction
- * part into a dollar price expressed as a decimal number.
- * Fractional dollar numbers are sometimes used for security prices.
- *
- * Excel Function:
- * DOLLARDE(fractional_dollar,fraction)
- *
- * @access public
- * @category Financial Functions
- * @param float $fractional_dollar Fractional Dollar
- * @param integer $fraction Fraction
- * @return float
- */
- public static function DOLLARDE($fractional_dollar = Null, $fraction = 0) {
- $fractional_dollar = PHPExcel_Calculation_Functions::flattenSingleValue($fractional_dollar);
- $fraction = (int)PHPExcel_Calculation_Functions::flattenSingleValue($fraction);
-
- // Validate parameters
- if (is_null($fractional_dollar) || $fraction < 0) {
- return PHPExcel_Calculation_Functions::NaN();
- }
- if ($fraction == 0) {
- return PHPExcel_Calculation_Functions::DIV0();
- }
-
- $dollars = floor($fractional_dollar);
- $cents = fmod($fractional_dollar,1);
- $cents /= $fraction;
- $cents *= pow(10,ceil(log10($fraction)));
- return $dollars + $cents;
- } // function DOLLARDE()
-
-
- /**
- * DOLLARFR
- *
- * Converts a dollar price expressed as a decimal number into a dollar price
- * expressed as a fraction.
- * Fractional dollar numbers are sometimes used for security prices.
- *
- * Excel Function:
- * DOLLARFR(decimal_dollar,fraction)
- *
- * @access public
- * @category Financial Functions
- * @param float $decimal_dollar Decimal Dollar
- * @param integer $fraction Fraction
- * @return float
- */
- public static function DOLLARFR($decimal_dollar = Null, $fraction = 0) {
- $decimal_dollar = PHPExcel_Calculation_Functions::flattenSingleValue($decimal_dollar);
- $fraction = (int)PHPExcel_Calculation_Functions::flattenSingleValue($fraction);
-
- // Validate parameters
- if (is_null($decimal_dollar) || $fraction < 0) {
- return PHPExcel_Calculation_Functions::NaN();
- }
- if ($fraction == 0) {
- return PHPExcel_Calculation_Functions::DIV0();
- }
-
- $dollars = floor($decimal_dollar);
- $cents = fmod($decimal_dollar,1);
- $cents *= $fraction;
- $cents *= pow(10,-ceil(log10($fraction)));
- return $dollars + $cents;
- } // function DOLLARFR()
-
-
- /**
- * EFFECT
- *
- * Returns the effective interest rate given the nominal rate and the number of
- * compounding payments per year.
- *
- * Excel Function:
- * EFFECT(nominal_rate,npery)
- *
- * @access public
- * @category Financial Functions
- * @param float $nominal_rate Nominal interest rate
- * @param integer $npery Number of compounding payments per year
- * @return float
- */
- public static function EFFECT($nominal_rate = 0, $npery = 0) {
- $nominal_rate = PHPExcel_Calculation_Functions::flattenSingleValue($nominal_rate);
- $npery = (int)PHPExcel_Calculation_Functions::flattenSingleValue($npery);
-
- // Validate parameters
- if ($nominal_rate <= 0 || $npery < 1) {
- return PHPExcel_Calculation_Functions::NaN();
- }
-
- return pow((1 + $nominal_rate / $npery), $npery) - 1;
- } // function EFFECT()
-
-
- /**
- * FV
- *
- * Returns the Future Value of a cash flow with constant payments and interest rate (annuities).
- *
- * Excel Function:
- * FV(rate,nper,pmt[,pv[,type]])
- *
- * @access public
- * @category Financial Functions
- * @param float $rate The interest rate per period
- * @param int $nper Total number of payment periods in an annuity
- * @param float $pmt The payment made each period: it cannot change over the
- * life of the annuity. Typically, pmt contains principal
- * and interest but no other fees or taxes.
- * @param float $pv Present Value, or the lump-sum amount that a series of
- * future payments is worth right now.
- * @param integer $type A number 0 or 1 and indicates when payments are due:
- * 0 or omitted At the end of the period.
- * 1 At the beginning of the period.
- * @return float
- */
- public static function FV($rate = 0, $nper = 0, $pmt = 0, $pv = 0, $type = 0) {
- $rate = PHPExcel_Calculation_Functions::flattenSingleValue($rate);
- $nper = PHPExcel_Calculation_Functions::flattenSingleValue($nper);
- $pmt = PHPExcel_Calculation_Functions::flattenSingleValue($pmt);
- $pv = PHPExcel_Calculation_Functions::flattenSingleValue($pv);
- $type = PHPExcel_Calculation_Functions::flattenSingleValue($type);
-
- // Validate parameters
- if ($type != 0 && $type != 1) {
- return PHPExcel_Calculation_Functions::NaN();
- }
-
- // Calculate
- if (!is_null($rate) && $rate != 0) {
- return -$pv * pow(1 + $rate, $nper) - $pmt * (1 + $rate * $type) * (pow(1 + $rate, $nper) - 1) / $rate;
- } else {
- return -$pv - $pmt * $nper;
- }
- } // function FV()
-
-
- /**
- * FVSCHEDULE
- *
- */
- public static function FVSCHEDULE($principal, $schedule) {
- $principal = PHPExcel_Calculation_Functions::flattenSingleValue($principal);
- $schedule = PHPExcel_Calculation_Functions::flattenArray($schedule);
-
- foreach($schedule as $n) {
- $principal *= 1 + $n;
- }
-
- return $principal;
- } // function FVSCHEDULE()
-
-
- /**
- * INTRATE
- *
- * Returns the interest rate for a fully invested security.
- *
- * Excel Function:
- * INTRATE(settlement,maturity,investment,redemption[,basis])
- *
- * @param mixed settlement The security's settlement date.
- * The security settlement date is the date after the issue date when the security is traded to the buyer.
- * @param mixed maturity The security's maturity date.
- * The maturity date is the date when the security expires.
- * @param integer investment The amount invested in the security.
- * @param integer redemption The amount to be received at maturity.
- * @param integer basis The type of day count to use.
- * 0 or omitted US (NASD) 30/360
- * 1 Actual/actual
- * 2 Actual/360
- * 3 Actual/365
- * 4 European 30/360
- * @return float
- */
- public static function INTRATE($settlement, $maturity, $investment, $redemption, $basis=0) {
- $settlement = PHPExcel_Calculation_Functions::flattenSingleValue($settlement);
- $maturity = PHPExcel_Calculation_Functions::flattenSingleValue($maturity);
- $investment = PHPExcel_Calculation_Functions::flattenSingleValue($investment);
- $redemption = PHPExcel_Calculation_Functions::flattenSingleValue($redemption);
- $basis = PHPExcel_Calculation_Functions::flattenSingleValue($basis);
-
- // Validate
- if ((is_numeric($investment)) && (is_numeric($redemption)) && (is_numeric($basis))) {
- $investment = (float) $investment;
- $redemption = (float) $redemption;
- $basis = (int) $basis;
- if (($investment <= 0) || ($redemption <= 0)) {
- return PHPExcel_Calculation_Functions::NaN();
- }
- $daysBetweenSettlementAndMaturity = PHPExcel_Calculation_DateTime::YEARFRAC($settlement, $maturity, $basis);
- if (!is_numeric($daysBetweenSettlementAndMaturity)) {
- // return date error
- return $daysBetweenSettlementAndMaturity;
- }
-
- return (($redemption / $investment) - 1) / ($daysBetweenSettlementAndMaturity);
- }
- return PHPExcel_Calculation_Functions::VALUE();
- } // function INTRATE()
-
-
- /**
- * IPMT
- *
- * Returns the interest payment for a given period for an investment based on periodic, constant payments and a constant interest rate.
- *
- * @param float $rate Interest rate per period
- * @param int $per Period for which we want to find the interest
- * @param int $nper Number of periods
- * @param float $pv Present Value
- * @param float $fv Future Value
- * @param int $type Payment type: 0 = at the end of each period, 1 = at the beginning of each period
- * @return float
- */
- public static function IPMT($rate, $per, $nper, $pv, $fv = 0, $type = 0) {
- $rate = PHPExcel_Calculation_Functions::flattenSingleValue($rate);
- $per = (int) PHPExcel_Calculation_Functions::flattenSingleValue($per);
- $nper = (int) PHPExcel_Calculation_Functions::flattenSingleValue($nper);
- $pv = PHPExcel_Calculation_Functions::flattenSingleValue($pv);
- $fv = PHPExcel_Calculation_Functions::flattenSingleValue($fv);
- $type = (int) PHPExcel_Calculation_Functions::flattenSingleValue($type);
-
- // Validate parameters
- if ($type != 0 && $type != 1) {
- return PHPExcel_Calculation_Functions::NaN();
- }
- if ($per <= 0 || $per > $nper) {
- return PHPExcel_Calculation_Functions::VALUE();
- }
-
- // Calculate
- $interestAndPrincipal = self::_interestAndPrincipal($rate, $per, $nper, $pv, $fv, $type);
- return $interestAndPrincipal[0];
- } // function IPMT()
-
-
- public static function IRR($values, $guess = 0.1) {
- if (!is_array($values)) return PHPExcel_Calculation_Functions::VALUE();
- $values = PHPExcel_Calculation_Functions::flattenArray($values);
- $guess = PHPExcel_Calculation_Functions::flattenSingleValue($guess);
-
- // create an initial range, with a root somewhere between 0 and guess
- $x1 = 0.0;
- $x2 = $guess;
- $f1 = self::NPV($x1, $values);
- $f2 = self::NPV($x2, $values);
- for ($i = 0; $i < FINANCIAL_MAX_ITERATIONS; ++$i) {
- if (($f1 * $f2) < 0.0) break;
- if (abs($f1) < abs($f2)) {
- $f1 = self::NPV($x1 += 1.6 * ($x1 - $x2), $values);
- } else {
- $f2 = self::NPV($x2 += 1.6 * ($x2 - $x1), $values);
- }
- }
- if (($f1 * $f2) > 0.0) return PHPExcel_Calculation_Functions::VALUE();
-
- $f = self::NPV($x1, $values);
- if ($f < 0.0) {
- $rtb = $x1;
- $dx = $x2 - $x1;
- } else {
- $rtb = $x2;
- $dx = $x1 - $x2;
- }
-
- for ($i = 0; $i < FINANCIAL_MAX_ITERATIONS; ++$i) {
- $dx *= 0.5;
- $x_mid = $rtb + $dx;
- $f_mid = self::NPV($x_mid, $values);
- if ($f_mid <= 0.0) $rtb = $x_mid;
- if ((abs($f_mid) < FINANCIAL_PRECISION) || (abs($dx) < FINANCIAL_PRECISION)) return $x_mid;
- }
- return PHPExcel_Calculation_Functions::VALUE();
- } // function IRR()
-
-
- /**
- * ISPMT
- *
- * Returns the interest payment for an investment based on an interest rate and a constant payment schedule.
- *
- * Excel Function:
- * =ISPMT(interest_rate, period, number_payments, PV)
- *
- * interest_rate is the interest rate for the investment
- *
- * period is the period to calculate the interest rate. It must be betweeen 1 and number_payments.
- *
- * number_payments is the number of payments for the annuity
- *
- * PV is the loan amount or present value of the payments
- */
- public static function ISPMT() {
- // Return value
- $returnValue = 0;
-
- // Get the parameters
- $aArgs = PHPExcel_Calculation_Functions::flattenArray(func_get_args());
- $interestRate = array_shift($aArgs);
- $period = array_shift($aArgs);
- $numberPeriods = array_shift($aArgs);
- $principleRemaining = array_shift($aArgs);
-
- // Calculate
- $principlePayment = ($principleRemaining * 1.0) / ($numberPeriods * 1.0);
- for($i=0; $i <= $period; ++$i) {
- $returnValue = $interestRate * $principleRemaining * -1;
- $principleRemaining -= $principlePayment;
- // principle needs to be 0 after the last payment, don't let floating point screw it up
- if($i == $numberPeriods) {
- $returnValue = 0;
- }
- }
- return($returnValue);
- } // function ISPMT()
-
-
- public static function MIRR($values, $finance_rate, $reinvestment_rate) {
- if (!is_array($values)) return PHPExcel_Calculation_Functions::VALUE();
- $values = PHPExcel_Calculation_Functions::flattenArray($values);
- $finance_rate = PHPExcel_Calculation_Functions::flattenSingleValue($finance_rate);
- $reinvestment_rate = PHPExcel_Calculation_Functions::flattenSingleValue($reinvestment_rate);
- $n = count($values);
-
- $rr = 1.0 + $reinvestment_rate;
- $fr = 1.0 + $finance_rate;
-
- $npv_pos = $npv_neg = 0.0;
- foreach($values as $i => $v) {
- if ($v >= 0) {
- $npv_pos += $v / pow($rr, $i);
- } else {
- $npv_neg += $v / pow($fr, $i);
- }
- }
-
- if (($npv_neg == 0) || ($npv_pos == 0) || ($reinvestment_rate <= -1)) {
- return PHPExcel_Calculation_Functions::VALUE();
- }
-
- $mirr = pow((-$npv_pos * pow($rr, $n))
- / ($npv_neg * ($rr)), (1.0 / ($n - 1))) - 1.0;
-
- return (is_finite($mirr) ? $mirr : PHPExcel_Calculation_Functions::VALUE());
- } // function MIRR()
-
-
- /**
- * NOMINAL
- *
- * Returns the nominal interest rate given the effective rate and the number of compounding payments per year.
- *
- * @param float $effect_rate Effective interest rate
- * @param int $npery Number of compounding payments per year
- * @return float
- */
- public static function NOMINAL($effect_rate = 0, $npery = 0) {
- $effect_rate = PHPExcel_Calculation_Functions::flattenSingleValue($effect_rate);
- $npery = (int)PHPExcel_Calculation_Functions::flattenSingleValue($npery);
-
- // Validate parameters
- if ($effect_rate <= 0 || $npery < 1) {
- return PHPExcel_Calculation_Functions::NaN();
- }
-
- // Calculate
- return $npery * (pow($effect_rate + 1, 1 / $npery) - 1);
- } // function NOMINAL()
-
-
- /**
- * NPER
- *
- * Returns the number of periods for a cash flow with constant periodic payments (annuities), and interest rate.
- *
- * @param float $rate Interest rate per period
- * @param int $pmt Periodic payment (annuity)
- * @param float $pv Present Value
- * @param float $fv Future Value
- * @param int $type Payment type: 0 = at the end of each period, 1 = at the beginning of each period
- * @return float
- */
- public static function NPER($rate = 0, $pmt = 0, $pv = 0, $fv = 0, $type = 0) {
- $rate = PHPExcel_Calculation_Functions::flattenSingleValue($rate);
- $pmt = PHPExcel_Calculation_Functions::flattenSingleValue($pmt);
- $pv = PHPExcel_Calculation_Functions::flattenSingleValue($pv);
- $fv = PHPExcel_Calculation_Functions::flattenSingleValue($fv);
- $type = PHPExcel_Calculation_Functions::flattenSingleValue($type);
-
- // Validate parameters
- if ($type != 0 && $type != 1) {
- return PHPExcel_Calculation_Functions::NaN();
- }
-
- // Calculate
- if (!is_null($rate) && $rate != 0) {
- if ($pmt == 0 && $pv == 0) {
- return PHPExcel_Calculation_Functions::NaN();
- }
- return log(($pmt * (1 + $rate * $type) / $rate - $fv) / ($pv + $pmt * (1 + $rate * $type) / $rate)) / log(1 + $rate);
- } else {
- if ($pmt == 0) {
- return PHPExcel_Calculation_Functions::NaN();
- }
- return (-$pv -$fv) / $pmt;
- }
- } // function NPER()
-
-
- /**
- * NPV
- *
- * Returns the Net Present Value of a cash flow series given a discount rate.
- *
- * @param float Discount interest rate
- * @param array Cash flow series
- * @return float
- */
- public static function NPV() {
- // Return value
- $returnValue = 0;
-
- // Loop through arguments
- $aArgs = PHPExcel_Calculation_Functions::flattenArray(func_get_args());
-
- // Calculate
- $rate = array_shift($aArgs);
- for ($i = 1; $i <= count($aArgs); ++$i) {
- // Is it a numeric value?
- if (is_numeric($aArgs[$i - 1])) {
- $returnValue += $aArgs[$i - 1] / pow(1 + $rate, $i);
- }
- }
-
- // Return
- return $returnValue;
- } // function NPV()
-
-
- /**
- * PMT
- *
- * Returns the constant payment (annuity) for a cash flow with a constant interest rate.
- *
- * @param float $rate Interest rate per period
- * @param int $nper Number of periods
- * @param float $pv Present Value
- * @param float $fv Future Value
- * @param int $type Payment type: 0 = at the end of each period, 1 = at the beginning of each period
- * @return float
- */
- public static function PMT($rate = 0, $nper = 0, $pv = 0, $fv = 0, $type = 0) {
- $rate = PHPExcel_Calculation_Functions::flattenSingleValue($rate);
- $nper = PHPExcel_Calculation_Functions::flattenSingleValue($nper);
- $pv = PHPExcel_Calculation_Functions::flattenSingleValue($pv);
- $fv = PHPExcel_Calculation_Functions::flattenSingleValue($fv);
- $type = PHPExcel_Calculation_Functions::flattenSingleValue($type);
-
- // Validate parameters
- if ($type != 0 && $type != 1) {
- return PHPExcel_Calculation_Functions::NaN();
- }
-
- // Calculate
- if (!is_null($rate) && $rate != 0) {
- return (-$fv - $pv * pow(1 + $rate, $nper)) / (1 + $rate * $type) / ((pow(1 + $rate, $nper) - 1) / $rate);
- } else {
- return (-$pv - $fv) / $nper;
- }
- } // function PMT()
-
-
- /**
- * PPMT
- *
- * Returns the interest payment for a given period for an investment based on periodic, constant payments and a constant interest rate.
- *
- * @param float $rate Interest rate per period
- * @param int $per Period for which we want to find the interest
- * @param int $nper Number of periods
- * @param float $pv Present Value
- * @param float $fv Future Value
- * @param int $type Payment type: 0 = at the end of each period, 1 = at the beginning of each period
- * @return float
- */
- public static function PPMT($rate, $per, $nper, $pv, $fv = 0, $type = 0) {
- $rate = PHPExcel_Calculation_Functions::flattenSingleValue($rate);
- $per = (int) PHPExcel_Calculation_Functions::flattenSingleValue($per);
- $nper = (int) PHPExcel_Calculation_Functions::flattenSingleValue($nper);
- $pv = PHPExcel_Calculation_Functions::flattenSingleValue($pv);
- $fv = PHPExcel_Calculation_Functions::flattenSingleValue($fv);
- $type = (int) PHPExcel_Calculation_Functions::flattenSingleValue($type);
-
- // Validate parameters
- if ($type != 0 && $type != 1) {
- return PHPExcel_Calculation_Functions::NaN();
- }
- if ($per <= 0 || $per > $nper) {
- return PHPExcel_Calculation_Functions::VALUE();
- }
-
- // Calculate
- $interestAndPrincipal = self::_interestAndPrincipal($rate, $per, $nper, $pv, $fv, $type);
- return $interestAndPrincipal[1];
- } // function PPMT()
-
-
- public static function PRICE($settlement, $maturity, $rate, $yield, $redemption, $frequency, $basis=0) {
- $settlement = PHPExcel_Calculation_Functions::flattenSingleValue($settlement);
- $maturity = PHPExcel_Calculation_Functions::flattenSingleValue($maturity);
- $rate = (float) PHPExcel_Calculation_Functions::flattenSingleValue($rate);
- $yield = (float) PHPExcel_Calculation_Functions::flattenSingleValue($yield);
- $redemption = (float) PHPExcel_Calculation_Functions::flattenSingleValue($redemption);
- $frequency = (int) PHPExcel_Calculation_Functions::flattenSingleValue($frequency);
- $basis = (is_null($basis)) ? 0 : (int) PHPExcel_Calculation_Functions::flattenSingleValue($basis);
-
- if (is_string($settlement = PHPExcel_Calculation_DateTime::_getDateValue($settlement))) {
- return PHPExcel_Calculation_Functions::VALUE();
- }
- if (is_string($maturity = PHPExcel_Calculation_DateTime::_getDateValue($maturity))) {
- return PHPExcel_Calculation_Functions::VALUE();
- }
-
- if (($settlement > $maturity) ||
- (!self::_validFrequency($frequency)) ||
- (($basis < 0) || ($basis > 4))) {
- return PHPExcel_Calculation_Functions::NaN();
- }
-
- $dsc = self::COUPDAYSNC($settlement, $maturity, $frequency, $basis);
- $e = self::COUPDAYS($settlement, $maturity, $frequency, $basis);
- $n = self::COUPNUM($settlement, $maturity, $frequency, $basis);
- $a = self::COUPDAYBS($settlement, $maturity, $frequency, $basis);
-
- $baseYF = 1.0 + ($yield / $frequency);
- $rfp = 100 * ($rate / $frequency);
- $de = $dsc / $e;
-
- $result = $redemption / pow($baseYF, (--$n + $de));
- for($k = 0; $k <= $n; ++$k) {
- $result += $rfp / (pow($baseYF, ($k + $de)));
- }
- $result -= $rfp * ($a / $e);
-
- return $result;
- } // function PRICE()
-
-
- /**
- * PRICEDISC
- *
- * Returns the price per $100 face value of a discounted security.
- *
- * @param mixed settlement The security's settlement date.
- * The security settlement date is the date after the issue date when the security is traded to the buyer.
- * @param mixed maturity The security's maturity date.
- * The maturity date is the date when the security expires.
- * @param int discount The security's discount rate.
- * @param int redemption The security's redemption value per $100 face value.
- * @param int basis The type of day count to use.
- * 0 or omitted US (NASD) 30/360
- * 1 Actual/actual
- * 2 Actual/360
- * 3 Actual/365
- * 4 European 30/360
- * @return float
- */
- public static function PRICEDISC($settlement, $maturity, $discount, $redemption, $basis=0) {
- $settlement = PHPExcel_Calculation_Functions::flattenSingleValue($settlement);
- $maturity = PHPExcel_Calculation_Functions::flattenSingleValue($maturity);
- $discount = (float) PHPExcel_Calculation_Functions::flattenSingleValue($discount);
- $redemption = (float) PHPExcel_Calculation_Functions::flattenSingleValue($redemption);
- $basis = (int) PHPExcel_Calculation_Functions::flattenSingleValue($basis);
-
- // Validate
- if ((is_numeric($discount)) && (is_numeric($redemption)) && (is_numeric($basis))) {
- if (($discount <= 0) || ($redemption <= 0)) {
- return PHPExcel_Calculation_Functions::NaN();
- }
- $daysBetweenSettlementAndMaturity = PHPExcel_Calculation_DateTime::YEARFRAC($settlement, $maturity, $basis);
- if (!is_numeric($daysBetweenSettlementAndMaturity)) {
- // return date error
- return $daysBetweenSettlementAndMaturity;
- }
-
- return $redemption * (1 - $discount * $daysBetweenSettlementAndMaturity);
- }
- return PHPExcel_Calculation_Functions::VALUE();
- } // function PRICEDISC()
-
-
- /**
- * PRICEMAT
- *
- * Returns the price per $100 face value of a security that pays interest at maturity.
- *
- * @param mixed settlement The security's settlement date.
- * The security's settlement date is the date after the issue date when the security is traded to the buyer.
- * @param mixed maturity The security's maturity date.
- * The maturity date is the date when the security expires.
- * @param mixed issue The security's issue date.
- * @param int rate The security's interest rate at date of issue.
- * @param int yield The security's annual yield.
- * @param int basis The type of day count to use.
- * 0 or omitted US (NASD) 30/360
- * 1 Actual/actual
- * 2 Actual/360
- * 3 Actual/365
- * 4 European 30/360
- * @return float
- */
- public static function PRICEMAT($settlement, $maturity, $issue, $rate, $yield, $basis=0) {
- $settlement = PHPExcel_Calculation_Functions::flattenSingleValue($settlement);
- $maturity = PHPExcel_Calculation_Functions::flattenSingleValue($maturity);
- $issue = PHPExcel_Calculation_Functions::flattenSingleValue($issue);
- $rate = PHPExcel_Calculation_Functions::flattenSingleValue($rate);
- $yield = PHPExcel_Calculation_Functions::flattenSingleValue($yield);
- $basis = (int) PHPExcel_Calculation_Functions::flattenSingleValue($basis);
-
- // Validate
- if (is_numeric($rate) && is_numeric($yield)) {
- if (($rate <= 0) || ($yield <= 0)) {
- return PHPExcel_Calculation_Functions::NaN();
- }
- $daysPerYear = self::_daysPerYear(PHPExcel_Calculation_DateTime::YEAR($settlement),$basis);
- if (!is_numeric($daysPerYear)) {
- return $daysPerYear;
- }
- $daysBetweenIssueAndSettlement = PHPExcel_Calculation_DateTime::YEARFRAC($issue, $settlement, $basis);
- if (!is_numeric($daysBetweenIssueAndSettlement)) {
- // return date error
- return $daysBetweenIssueAndSettlement;
- }
- $daysBetweenIssueAndSettlement *= $daysPerYear;
- $daysBetweenIssueAndMaturity = PHPExcel_Calculation_DateTime::YEARFRAC($issue, $maturity, $basis);
- if (!is_numeric($daysBetweenIssueAndMaturity)) {
- // return date error
- return $daysBetweenIssueAndMaturity;
- }
- $daysBetweenIssueAndMaturity *= $daysPerYear;
- $daysBetweenSettlementAndMaturity = PHPExcel_Calculation_DateTime::YEARFRAC($settlement, $maturity, $basis);
- if (!is_numeric($daysBetweenSettlementAndMaturity)) {
- // return date error
- return $daysBetweenSettlementAndMaturity;
- }
- $daysBetweenSettlementAndMaturity *= $daysPerYear;
-
- return ((100 + (($daysBetweenIssueAndMaturity / $daysPerYear) * $rate * 100)) /
- (1 + (($daysBetweenSettlementAndMaturity / $daysPerYear) * $yield)) -
- (($daysBetweenIssueAndSettlement / $daysPerYear) * $rate * 100));
- }
- return PHPExcel_Calculation_Functions::VALUE();
- } // function PRICEMAT()
-
-
- /**
- * PV
- *
- * Returns the Present Value of a cash flow with constant payments and interest rate (annuities).
- *
- * @param float $rate Interest rate per period
- * @param int $nper Number of periods
- * @param float $pmt Periodic payment (annuity)
- * @param float $fv Future Value
- * @param int $type Payment type: 0 = at the end of each period, 1 = at the beginning of each period
- * @return float
- */
- public static function PV($rate = 0, $nper = 0, $pmt = 0, $fv = 0, $type = 0) {
- $rate = PHPExcel_Calculation_Functions::flattenSingleValue($rate);
- $nper = PHPExcel_Calculation_Functions::flattenSingleValue($nper);
- $pmt = PHPExcel_Calculation_Functions::flattenSingleValue($pmt);
- $fv = PHPExcel_Calculation_Functions::flattenSingleValue($fv);
- $type = PHPExcel_Calculation_Functions::flattenSingleValue($type);
-
- // Validate parameters
- if ($type != 0 && $type != 1) {
- return PHPExcel_Calculation_Functions::NaN();
- }
-
- // Calculate
- if (!is_null($rate) && $rate != 0) {
- return (-$pmt * (1 + $rate * $type) * ((pow(1 + $rate, $nper) - 1) / $rate) - $fv) / pow(1 + $rate, $nper);
- } else {
- return -$fv - $pmt * $nper;
- }
- } // function PV()
-
-
- /**
- * RATE
- *
- * Returns the interest rate per period of an annuity.
- * RATE is calculated by iteration and can have zero or more solutions.
- * If the successive results of RATE do not converge to within 0.0000001 after 20 iterations,
- * RATE returns the #NUM! error value.
- *
- * Excel Function:
- * RATE(nper,pmt,pv[,fv[,type[,guess]]])
- *
- * @access public
- * @category Financial Functions
- * @param float nper The total number of payment periods in an annuity.
- * @param float pmt The payment made each period and cannot change over the life
- * of the annuity.
- * Typically, pmt includes principal and interest but no other
- * fees or taxes.
- * @param float pv The present value - the total amount that a series of future
- * payments is worth now.
- * @param float fv The future value, or a cash balance you want to attain after
- * the last payment is made. If fv is omitted, it is assumed
- * to be 0 (the future value of a loan, for example, is 0).
- * @param integer type A number 0 or 1 and indicates when payments are due:
- * 0 or omitted At the end of the period.
- * 1 At the beginning of the period.
- * @param float guess Your guess for what the rate will be.
- * If you omit guess, it is assumed to be 10 percent.
- * @return float
- **/
- public static function RATE($nper, $pmt, $pv, $fv = 0.0, $type = 0, $guess = 0.1) {
- $nper = (int) PHPExcel_Calculation_Functions::flattenSingleValue($nper);
- $pmt = PHPExcel_Calculation_Functions::flattenSingleValue($pmt);
- $pv = PHPExcel_Calculation_Functions::flattenSingleValue($pv);
- $fv = (is_null($fv)) ? 0.0 : PHPExcel_Calculation_Functions::flattenSingleValue($fv);
- $type = (is_null($type)) ? 0 : (int) PHPExcel_Calculation_Functions::flattenSingleValue($type);
- $guess = (is_null($guess)) ? 0.1 : PHPExcel_Calculation_Functions::flattenSingleValue($guess);
-
- $rate = $guess;
- if (abs($rate) < FINANCIAL_PRECISION) {
- $y = $pv * (1 + $nper * $rate) + $pmt * (1 + $rate * $type) * $nper + $fv;
- } else {
- $f = exp($nper * log(1 + $rate));
- $y = $pv * $f + $pmt * (1 / $rate + $type) * ($f - 1) + $fv;
- }
- $y0 = $pv + $pmt * $nper + $fv;
- $y1 = $pv * $f + $pmt * (1 / $rate + $type) * ($f - 1) + $fv;
-
- // find root by secant method
- $i = $x0 = 0.0;
- $x1 = $rate;
- while ((abs($y0 - $y1) > FINANCIAL_PRECISION) && ($i < FINANCIAL_MAX_ITERATIONS)) {
- $rate = ($y1 * $x0 - $y0 * $x1) / ($y1 - $y0);
- $x0 = $x1;
- $x1 = $rate;
- if (($nper * abs($pmt)) > ($pv - $fv))
- $x1 = abs($x1);
-
- if (abs($rate) < FINANCIAL_PRECISION) {
- $y = $pv * (1 + $nper * $rate) + $pmt * (1 + $rate * $type) * $nper + $fv;
- } else {
- $f = exp($nper * log(1 + $rate));
- $y = $pv * $f + $pmt * (1 / $rate + $type) * ($f - 1) + $fv;
- }
-
- $y0 = $y1;
- $y1 = $y;
- ++$i;
- }
- return $rate;
- } // function RATE()
-
-
- /**
- * RECEIVED
- *
- * Returns the price per $100 face value of a discounted security.
- *
- * @param mixed settlement The security's settlement date.
- * The security settlement date is the date after the issue date when the security is traded to the buyer.
- * @param mixed maturity The security's maturity date.
- * The maturity date is the date when the security expires.
- * @param int investment The amount invested in the security.
- * @param int discount The security's discount rate.
- * @param int basis The type of day count to use.
- * 0 or omitted US (NASD) 30/360
- * 1 Actual/actual
- * 2 Actual/360
- * 3 Actual/365
- * 4 European 30/360
- * @return float
- */
- public static function RECEIVED($settlement, $maturity, $investment, $discount, $basis=0) {
- $settlement = PHPExcel_Calculation_Functions::flattenSingleValue($settlement);
- $maturity = PHPExcel_Calculation_Functions::flattenSingleValue($maturity);
- $investment = (float) PHPExcel_Calculation_Functions::flattenSingleValue($investment);
- $discount = (float) PHPExcel_Calculation_Functions::flattenSingleValue($discount);
- $basis = (int) PHPExcel_Calculation_Functions::flattenSingleValue($basis);
-
- // Validate
- if ((is_numeric($investment)) && (is_numeric($discount)) && (is_numeric($basis))) {
- if (($investment <= 0) || ($discount <= 0)) {
- return PHPExcel_Calculation_Functions::NaN();
- }
- $daysBetweenSettlementAndMaturity = PHPExcel_Calculation_DateTime::YEARFRAC($settlement, $maturity, $basis);
- if (!is_numeric($daysBetweenSettlementAndMaturity)) {
- // return date error
- return $daysBetweenSettlementAndMaturity;
- }
-
- return $investment / ( 1 - ($discount * $daysBetweenSettlementAndMaturity));
- }
- return PHPExcel_Calculation_Functions::VALUE();
- } // function RECEIVED()
-
-
- /**
- * SLN
- *
- * Returns the straight-line depreciation of an asset for one period
- *
- * @param cost Initial cost of the asset
- * @param salvage Value at the end of the depreciation
- * @param life Number of periods over which the asset is depreciated
- * @return float
- */
- public static function SLN($cost, $salvage, $life) {
- $cost = PHPExcel_Calculation_Functions::flattenSingleValue($cost);
- $salvage = PHPExcel_Calculation_Functions::flattenSingleValue($salvage);
- $life = PHPExcel_Calculation_Functions::flattenSingleValue($life);
-
- // Calculate
- if ((is_numeric($cost)) && (is_numeric($salvage)) && (is_numeric($life))) {
- if ($life < 0) {
- return PHPExcel_Calculation_Functions::NaN();
- }
- return ($cost - $salvage) / $life;
- }
- return PHPExcel_Calculation_Functions::VALUE();
- } // function SLN()
-
-
- /**
- * SYD
- *
- * Returns the sum-of-years' digits depreciation of an asset for a specified period.
- *
- * @param cost Initial cost of the asset
- * @param salvage Value at the end of the depreciation
- * @param life Number of periods over which the asset is depreciated
- * @param period Period
- * @return float
- */
- public static function SYD($cost, $salvage, $life, $period) {
- $cost = PHPExcel_Calculation_Functions::flattenSingleValue($cost);
- $salvage = PHPExcel_Calculation_Functions::flattenSingleValue($salvage);
- $life = PHPExcel_Calculation_Functions::flattenSingleValue($life);
- $period = PHPExcel_Calculation_Functions::flattenSingleValue($period);
-
- // Calculate
- if ((is_numeric($cost)) && (is_numeric($salvage)) && (is_numeric($life)) && (is_numeric($period))) {
- if (($life < 1) || ($period > $life)) {
- return PHPExcel_Calculation_Functions::NaN();
- }
- return (($cost - $salvage) * ($life - $period + 1) * 2) / ($life * ($life + 1));
- }
- return PHPExcel_Calculation_Functions::VALUE();
- } // function SYD()
-
-
- /**
- * TBILLEQ
- *
- * Returns the bond-equivalent yield for a Treasury bill.
- *
- * @param mixed settlement The Treasury bill's settlement date.
- * The Treasury bill's settlement date is the date after the issue date when the Treasury bill is traded to the buyer.
- * @param mixed maturity The Treasury bill's maturity date.
- * The maturity date is the date when the Treasury bill expires.
- * @param int discount The Treasury bill's discount rate.
- * @return float
- */
- public static function TBILLEQ($settlement, $maturity, $discount) {
- $settlement = PHPExcel_Calculation_Functions::flattenSingleValue($settlement);
- $maturity = PHPExcel_Calculation_Functions::flattenSingleValue($maturity);
- $discount = PHPExcel_Calculation_Functions::flattenSingleValue($discount);
-
- // Use TBILLPRICE for validation
- $testValue = self::TBILLPRICE($settlement, $maturity, $discount);
- if (is_string($testValue)) {
- return $testValue;
- }
-
- if (is_string($maturity = PHPExcel_Calculation_DateTime::_getDateValue($maturity))) {
- return PHPExcel_Calculation_Functions::VALUE();
- }
-
- if (PHPExcel_Calculation_Functions::getCompatibilityMode() == PHPExcel_Calculation_Functions::COMPATIBILITY_OPENOFFICE) {
- ++$maturity;
- $daysBetweenSettlementAndMaturity = PHPExcel_Calculation_DateTime::YEARFRAC($settlement, $maturity) * 360;
- } else {
- $daysBetweenSettlementAndMaturity = (PHPExcel_Calculation_DateTime::_getDateValue($maturity) - PHPExcel_Calculation_DateTime::_getDateValue($settlement));
- }
-
- return (365 * $discount) / (360 - $discount * $daysBetweenSettlementAndMaturity);
- } // function TBILLEQ()
-
-
- /**
- * TBILLPRICE
- *
- * Returns the yield for a Treasury bill.
- *
- * @param mixed settlement The Treasury bill's settlement date.
- * The Treasury bill's settlement date is the date after the issue date when the Treasury bill is traded to the buyer.
- * @param mixed maturity The Treasury bill's maturity date.
- * The maturity date is the date when the Treasury bill expires.
- * @param int discount The Treasury bill's discount rate.
- * @return float
- */
- public static function TBILLPRICE($settlement, $maturity, $discount) {
- $settlement = PHPExcel_Calculation_Functions::flattenSingleValue($settlement);
- $maturity = PHPExcel_Calculation_Functions::flattenSingleValue($maturity);
- $discount = PHPExcel_Calculation_Functions::flattenSingleValue($discount);
-
- if (is_string($maturity = PHPExcel_Calculation_DateTime::_getDateValue($maturity))) {
- return PHPExcel_Calculation_Functions::VALUE();
- }
-
- // Validate
- if (is_numeric($discount)) {
- if ($discount <= 0) {
- return PHPExcel_Calculation_Functions::NaN();
- }
-
- if (PHPExcel_Calculation_Functions::getCompatibilityMode() == PHPExcel_Calculation_Functions::COMPATIBILITY_OPENOFFICE) {
- ++$maturity;
- $daysBetweenSettlementAndMaturity = PHPExcel_Calculation_DateTime::YEARFRAC($settlement, $maturity) * 360;
- if (!is_numeric($daysBetweenSettlementAndMaturity)) {
- // return date error
- return $daysBetweenSettlementAndMaturity;
- }
- } else {
- $daysBetweenSettlementAndMaturity = (PHPExcel_Calculation_DateTime::_getDateValue($maturity) - PHPExcel_Calculation_DateTime::_getDateValue($settlement));
- }
-
- if ($daysBetweenSettlementAndMaturity > 360) {
- return PHPExcel_Calculation_Functions::NaN();
- }
-
- $price = 100 * (1 - (($discount * $daysBetweenSettlementAndMaturity) / 360));
- if ($price <= 0) {
- return PHPExcel_Calculation_Functions::NaN();
- }
- return $price;
- }
- return PHPExcel_Calculation_Functions::VALUE();
- } // function TBILLPRICE()
-
-
- /**
- * TBILLYIELD
- *
- * Returns the yield for a Treasury bill.
- *
- * @param mixed settlement The Treasury bill's settlement date.
- * The Treasury bill's settlement date is the date after the issue date when the Treasury bill is traded to the buyer.
- * @param mixed maturity The Treasury bill's maturity date.
- * The maturity date is the date when the Treasury bill expires.
- * @param int price The Treasury bill's price per $100 face value.
- * @return float
- */
- public static function TBILLYIELD($settlement, $maturity, $price) {
- $settlement = PHPExcel_Calculation_Functions::flattenSingleValue($settlement);
- $maturity = PHPExcel_Calculation_Functions::flattenSingleValue($maturity);
- $price = PHPExcel_Calculation_Functions::flattenSingleValue($price);
-
- // Validate
- if (is_numeric($price)) {
- if ($price <= 0) {
- return PHPExcel_Calculation_Functions::NaN();
- }
-
- if (PHPExcel_Calculation_Functions::getCompatibilityMode() == PHPExcel_Calculation_Functions::COMPATIBILITY_OPENOFFICE) {
- ++$maturity;
- $daysBetweenSettlementAndMaturity = PHPExcel_Calculation_DateTime::YEARFRAC($settlement, $maturity) * 360;
- if (!is_numeric($daysBetweenSettlementAndMaturity)) {
- // return date error
- return $daysBetweenSettlementAndMaturity;
- }
- } else {
- $daysBetweenSettlementAndMaturity = (PHPExcel_Calculation_DateTime::_getDateValue($maturity) - PHPExcel_Calculation_DateTime::_getDateValue($settlement));
- }
-
- if ($daysBetweenSettlementAndMaturity > 360) {
- return PHPExcel_Calculation_Functions::NaN();
- }
-
- return ((100 - $price) / $price) * (360 / $daysBetweenSettlementAndMaturity);
- }
- return PHPExcel_Calculation_Functions::VALUE();
- } // function TBILLYIELD()
-
-
- public static function XIRR($values, $dates, $guess = 0.1) {
- if ((!is_array($values)) && (!is_array($dates))) return PHPExcel_Calculation_Functions::VALUE();
- $values = PHPExcel_Calculation_Functions::flattenArray($values);
- $dates = PHPExcel_Calculation_Functions::flattenArray($dates);
- $guess = PHPExcel_Calculation_Functions::flattenSingleValue($guess);
- if (count($values) != count($dates)) return PHPExcel_Calculation_Functions::NaN();
-
- // create an initial range, with a root somewhere between 0 and guess
- $x1 = 0.0;
- $x2 = $guess;
- $f1 = self::XNPV($x1, $values, $dates);
- $f2 = self::XNPV($x2, $values, $dates);
- for ($i = 0; $i < FINANCIAL_MAX_ITERATIONS; ++$i) {
- if (($f1 * $f2) < 0.0) break;
- if (abs($f1) < abs($f2)) {
- $f1 = self::XNPV($x1 += 1.6 * ($x1 - $x2), $values, $dates);
- } else {
- $f2 = self::XNPV($x2 += 1.6 * ($x2 - $x1), $values, $dates);
- }
- }
- if (($f1 * $f2) > 0.0) return PHPExcel_Calculation_Functions::VALUE();
-
- $f = self::XNPV($x1, $values, $dates);
- if ($f < 0.0) {
- $rtb = $x1;
- $dx = $x2 - $x1;
- } else {
- $rtb = $x2;
- $dx = $x1 - $x2;
- }
-
- for ($i = 0; $i < FINANCIAL_MAX_ITERATIONS; ++$i) {
- $dx *= 0.5;
- $x_mid = $rtb + $dx;
- $f_mid = self::XNPV($x_mid, $values, $dates);
- if ($f_mid <= 0.0) $rtb = $x_mid;
- if ((abs($f_mid) < FINANCIAL_PRECISION) || (abs($dx) < FINANCIAL_PRECISION)) return $x_mid;
- }
- return PHPExcel_Calculation_Functions::VALUE();
- }
-
-
- /**
- * XNPV
- *
- * Returns the net present value for a schedule of cash flows that is not necessarily periodic.
- * To calculate the net present value for a series of cash flows that is periodic, use the NPV function.
- *
- * Excel Function:
- * =XNPV(rate,values,dates)
- *
- * @param float $rate The discount rate to apply to the cash flows.
- * @param array of float $values A series of cash flows that corresponds to a schedule of payments in dates. The first payment is optional and corresponds to a cost or payment that occurs at the beginning of the investment. If the first value is a cost or payment, it must be a negative value. All succeeding payments are discounted based on a 365-day year. The series of values must contain at least one positive value and one negative value.
- * @param array of mixed $dates A schedule of payment dates that corresponds to the cash flow payments. The first payment date indicates the beginning of the schedule of payments. All other dates must be later than this date, but they may occur in any order.
- * @return float
- */
- public static function XNPV($rate, $values, $dates) {
- $rate = PHPExcel_Calculation_Functions::flattenSingleValue($rate);
- if (!is_numeric($rate)) return PHPExcel_Calculation_Functions::VALUE();
- if ((!is_array($values)) || (!is_array($dates))) return PHPExcel_Calculation_Functions::VALUE();
- $values = PHPExcel_Calculation_Functions::flattenArray($values);
- $dates = PHPExcel_Calculation_Functions::flattenArray($dates);
- $valCount = count($values);
- if ($valCount != count($dates)) return PHPExcel_Calculation_Functions::NaN();
- if ((min($values) > 0) || (max($values) < 0)) return PHPExcel_Calculation_Functions::VALUE();
-
- $xnpv = 0.0;
- for ($i = 0; $i < $valCount; ++$i) {
- if (!is_numeric($values[$i])) return PHPExcel_Calculation_Functions::VALUE();
- $xnpv += $values[$i] / pow(1 + $rate, PHPExcel_Calculation_DateTime::DATEDIF($dates[0],$dates[$i],'d') / 365);
- }
- return (is_finite($xnpv)) ? $xnpv : PHPExcel_Calculation_Functions::VALUE();
- } // function XNPV()
-
-
- /**
- * YIELDDISC
- *
- * Returns the annual yield of a security that pays interest at maturity.
- *
- * @param mixed settlement The security's settlement date.
- * The security's settlement date is the date after the issue date when the security is traded to the buyer.
- * @param mixed maturity The security's maturity date.
- * The maturity date is the date when the security expires.
- * @param int price The security's price per $100 face value.
- * @param int redemption The security's redemption value per $100 face value.
- * @param int basis The type of day count to use.
- * 0 or omitted US (NASD) 30/360
- * 1 Actual/actual
- * 2 Actual/360
- * 3 Actual/365
- * 4 European 30/360
- * @return float
- */
- public static function YIELDDISC($settlement, $maturity, $price, $redemption, $basis=0) {
- $settlement = PHPExcel_Calculation_Functions::flattenSingleValue($settlement);
- $maturity = PHPExcel_Calculation_Functions::flattenSingleValue($maturity);
- $price = PHPExcel_Calculation_Functions::flattenSingleValue($price);
- $redemption = PHPExcel_Calculation_Functions::flattenSingleValue($redemption);
- $basis = (int) PHPExcel_Calculation_Functions::flattenSingleValue($basis);
-
- // Validate
- if (is_numeric($price) && is_numeric($redemption)) {
- if (($price <= 0) || ($redemption <= 0)) {
- return PHPExcel_Calculation_Functions::NaN();
- }
- $daysPerYear = self::_daysPerYear(PHPExcel_Calculation_DateTime::YEAR($settlement),$basis);
- if (!is_numeric($daysPerYear)) {
- return $daysPerYear;
- }
- $daysBetweenSettlementAndMaturity = PHPExcel_Calculation_DateTime::YEARFRAC($settlement, $maturity,$basis);
- if (!is_numeric($daysBetweenSettlementAndMaturity)) {
- // return date error
- return $daysBetweenSettlementAndMaturity;
- }
- $daysBetweenSettlementAndMaturity *= $daysPerYear;
-
- return (($redemption - $price) / $price) * ($daysPerYear / $daysBetweenSettlementAndMaturity);
- }
- return PHPExcel_Calculation_Functions::VALUE();
- } // function YIELDDISC()
-
-
- /**
- * YIELDMAT
- *
- * Returns the annual yield of a security that pays interest at maturity.
- *
- * @param mixed settlement The security's settlement date.
- * The security's settlement date is the date after the issue date when the security is traded to the buyer.
- * @param mixed maturity The security's maturity date.
- * The maturity date is the date when the security expires.
- * @param mixed issue The security's issue date.
- * @param int rate The security's interest rate at date of issue.
- * @param int price The security's price per $100 face value.
- * @param int basis The type of day count to use.
- * 0 or omitted US (NASD) 30/360
- * 1 Actual/actual
- * 2 Actual/360
- * 3 Actual/365
- * 4 European 30/360
- * @return float
- */
- public static function YIELDMAT($settlement, $maturity, $issue, $rate, $price, $basis=0) {
- $settlement = PHPExcel_Calculation_Functions::flattenSingleValue($settlement);
- $maturity = PHPExcel_Calculation_Functions::flattenSingleValue($maturity);
- $issue = PHPExcel_Calculation_Functions::flattenSingleValue($issue);
- $rate = PHPExcel_Calculation_Functions::flattenSingleValue($rate);
- $price = PHPExcel_Calculation_Functions::flattenSingleValue($price);
- $basis = (int) PHPExcel_Calculation_Functions::flattenSingleValue($basis);
-
- // Validate
- if (is_numeric($rate) && is_numeric($price)) {
- if (($rate <= 0) || ($price <= 0)) {
- return PHPExcel_Calculation_Functions::NaN();
- }
- $daysPerYear = self::_daysPerYear(PHPExcel_Calculation_DateTime::YEAR($settlement),$basis);
- if (!is_numeric($daysPerYear)) {
- return $daysPerYear;
- }
- $daysBetweenIssueAndSettlement = PHPExcel_Calculation_DateTime::YEARFRAC($issue, $settlement, $basis);
- if (!is_numeric($daysBetweenIssueAndSettlement)) {
- // return date error
- return $daysBetweenIssueAndSettlement;
- }
- $daysBetweenIssueAndSettlement *= $daysPerYear;
- $daysBetweenIssueAndMaturity = PHPExcel_Calculation_DateTime::YEARFRAC($issue, $maturity, $basis);
- if (!is_numeric($daysBetweenIssueAndMaturity)) {
- // return date error
- return $daysBetweenIssueAndMaturity;
- }
- $daysBetweenIssueAndMaturity *= $daysPerYear;
- $daysBetweenSettlementAndMaturity = PHPExcel_Calculation_DateTime::YEARFRAC($settlement, $maturity, $basis);
- if (!is_numeric($daysBetweenSettlementAndMaturity)) {
- // return date error
- return $daysBetweenSettlementAndMaturity;
- }
- $daysBetweenSettlementAndMaturity *= $daysPerYear;
-
- return ((1 + (($daysBetweenIssueAndMaturity / $daysPerYear) * $rate) - (($price / 100) + (($daysBetweenIssueAndSettlement / $daysPerYear) * $rate))) /
- (($price / 100) + (($daysBetweenIssueAndSettlement / $daysPerYear) * $rate))) *
- ($daysPerYear / $daysBetweenSettlementAndMaturity);
- }
- return PHPExcel_Calculation_Functions::VALUE();
- } // function YIELDMAT()
-
-} // class PHPExcel_Calculation_Financial
diff --git a/admin/survey/excel/PHPExcel/Calculation/FormulaParser.php b/admin/survey/excel/PHPExcel/Calculation/FormulaParser.php
deleted file mode 100644
index bdc66ca..0000000
--- a/admin/survey/excel/PHPExcel/Calculation/FormulaParser.php
+++ /dev/null
@@ -1,614 +0,0 @@
-<?php
-/**
- * PHPExcel
- *
- * Copyright (c) 2006 - 2012 PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel_Calculation
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-
-/*
-PARTLY BASED ON:
- Copyright (c) 2007 E. W. Bachtal, Inc.
-
- Permission is hereby granted, free of charge, to any person obtaining a copy of this software
- and associated documentation files (the "Software"), to deal in the Software without restriction,
- including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense,
- and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so,
- subject to the following conditions:
-
- The above copyright notice and this permission notice shall be included in all copies or substantial
- portions of the Software.
-
- The software is provided "as is", without warranty of any kind, express or implied, including but not
- limited to the warranties of merchantability, fitness for a particular purpose and noninfringement. In
- no event shall the authors or copyright holders be liable for any claim, damages or other liability,
- whether in an action of contract, tort or otherwise, arising from, out of or in connection with the
- software or the use or other dealings in the software.
-
- http://ewbi.blogs.com/develops/2007/03/excel_formula_p.html
- http://ewbi.blogs.com/develops/2004/12/excel_formula_p.html
-*/
-
-/**
- * PHPExcel_Calculation_FormulaParser
- *
- * @category PHPExcel
- * @package PHPExcel_Calculation
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- */
-class PHPExcel_Calculation_FormulaParser {
- /* Character constants */
- const QUOTE_DOUBLE = '"';
- const QUOTE_SINGLE = '\'';
- const BRACKET_CLOSE = ']';
- const BRACKET_OPEN = '[';
- const BRACE_OPEN = '{';
- const BRACE_CLOSE = '}';
- const PAREN_OPEN = '(';
- const PAREN_CLOSE = ')';
- const SEMICOLON = ';';
- const WHITESPACE = ' ';
- const COMMA = ',';
- const ERROR_START = '#';
-
- const OPERATORS_SN = "+-";
- const OPERATORS_INFIX = "+-*/^&=><";
- const OPERATORS_POSTFIX = "%";
-
- /**
- * Formula
- *
- * @var string
- */
- private $_formula;
-
- /**
- * Tokens
- *
- * @var PHPExcel_Calculation_FormulaToken[]
- */
- private $_tokens = array();
-
- /**
- * Create a new PHPExcel_Calculation_FormulaParser
- *
- * @param string $pFormula Formula to parse
- * @throws Exception
- */
- public function __construct($pFormula = '')
- {
- // Check parameters
- if (is_null($pFormula)) {
- throw new Exception("Invalid parameter passed: formula");
- }
-
- // Initialise values
- $this->_formula = trim($pFormula);
- // Parse!
- $this->_parseToTokens();
- }
-
- /**
- * Get Formula
- *
- * @return string
- */
- public function getFormula() {
- return $this->_formula;
- }
-
- /**
- * Get Token
- *
- * @param int $pId Token id
- * @return string
- * @throws Exception
- */
- public function getToken($pId = 0) {
- if (isset($this->_tokens[$pId])) {
- return $this->_tokens[$pId];
- } else {
- throw new Exception("Token with id $pId does not exist.");
- }
- }
-
- /**
- * Get Token count
- *
- * @return string
- */
- public function getTokenCount() {
- return count($this->_tokens);
- }
-
- /**
- * Get Tokens
- *
- * @return PHPExcel_Calculation_FormulaToken[]
- */
- public function getTokens() {
- return $this->_tokens;
- }
-
- /**
- * Parse to tokens
- */
- private function _parseToTokens() {
- // No attempt is made to verify formulas; assumes formulas are derived from Excel, where
- // they can only exist if valid; stack overflows/underflows sunk as nulls without exceptions.
-
- // Check if the formula has a valid starting =
- $formulaLength = strlen($this->_formula);
- if ($formulaLength < 2 || $this->_formula{0} != '=') return;
-
- // Helper variables
- $tokens1 = $tokens2 = $stack = array();
- $inString = $inPath = $inRange = $inError = false;
- $token = $previousToken = $nextToken = null;
-
- $index = 1;
- $value = '';
-
- $ERRORS = array("#NULL!", "#DIV/0!", "#VALUE!", "#REF!", "#NAME?", "#NUM!", "#N/A");
- $COMPARATORS_MULTI = array(">=", "<=", "<>");
-
- while ($index < $formulaLength) {
- // state-dependent character evaluation (order is important)
-
- // double-quoted strings
- // embeds are doubled
- // end marks token
- if ($inString) {
- if ($this->_formula{$index} == PHPExcel_Calculation_FormulaParser::QUOTE_DOUBLE) {
- if ((($index + 2) <= $formulaLength) && ($this->_formula{$index + 1} == PHPExcel_Calculation_FormulaParser::QUOTE_DOUBLE)) {
- $value .= PHPExcel_Calculation_FormulaParser::QUOTE_DOUBLE;
- ++$index;
- } else {
- $inString = false;
- $tokens1[] = new PHPExcel_Calculation_FormulaToken($value, PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_OPERAND, PHPExcel_Calculation_FormulaToken::TOKEN_SUBTYPE_TEXT);
- $value = "";
- }
- } else {
- $value .= $this->_formula{$index};
- }
- ++$index;
- continue;
- }
-
- // single-quoted strings (links)
- // embeds are double
- // end does not mark a token
- if ($inPath) {
- if ($this->_formula{$index} == PHPExcel_Calculation_FormulaParser::QUOTE_SINGLE) {
- if ((($index + 2) <= $formulaLength) && ($this->_formula{$index + 1} == PHPExcel_Calculation_FormulaParser::QUOTE_SINGLE)) {
- $value .= PHPExcel_Calculation_FormulaParser::QUOTE_SINGLE;
- ++$index;
- } else {
- $inPath = false;
- }
- } else {
- $value .= $this->_formula{$index};
- }
- ++$index;
- continue;
- }
-
- // bracked strings (R1C1 range index or linked workbook name)
- // no embeds (changed to "()" by Excel)
- // end does not mark a token
- if ($inRange) {
- if ($this->_formula{$index} == PHPExcel_Calculation_FormulaParser::BRACKET_CLOSE) {
- $inRange = false;
- }
- $value .= $this->_formula{$index};
- ++$index;
- continue;
- }
-
- // error values
- // end marks a token, determined from absolute list of values
- if ($inError) {
- $value .= $this->_formula{$index};
- ++$index;
- if (in_array($value, $ERRORS)) {
- $inError = false;
- $tokens1[] = new PHPExcel_Calculation_FormulaToken($value, PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_OPERAND, PHPExcel_Calculation_FormulaToken::TOKEN_SUBTYPE_ERROR);
- $value = "";
- }
- continue;
- }
-
- // scientific notation check
- if (strpos(PHPExcel_Calculation_FormulaParser::OPERATORS_SN, $this->_formula{$index}) !== false) {
- if (strlen($value) > 1) {
- if (preg_match("/^[1-9]{1}(\.[0-9]+)?E{1}$/", $this->_formula{$index}) != 0) {
- $value .= $this->_formula{$index};
- ++$index;
- continue;
- }
- }
- }
-
- // independent character evaluation (order not important)
-
- // establish state-dependent character evaluations
- if ($this->_formula{$index} == PHPExcel_Calculation_FormulaParser::QUOTE_DOUBLE) {
- if (strlen($value > 0)) { // unexpected
- $tokens1[] = new PHPExcel_Calculation_FormulaToken($value, PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_UNKNOWN);
- $value = "";
- }
- $inString = true;
- ++$index;
- continue;
- }
-
- if ($this->_formula{$index} == PHPExcel_Calculation_FormulaParser::QUOTE_SINGLE) {
- if (strlen($value) > 0) { // unexpected
- $tokens1[] = new PHPExcel_Calculation_FormulaToken($value, PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_UNKNOWN);
- $value = "";
- }
- $inPath = true;
- ++$index;
- continue;
- }
-
- if ($this->_formula{$index} == PHPExcel_Calculation_FormulaParser::BRACKET_OPEN) {
- $inRange = true;
- $value .= PHPExcel_Calculation_FormulaParser::BRACKET_OPEN;
- ++$index;
- continue;
- }
-
- if ($this->_formula{$index} == PHPExcel_Calculation_FormulaParser::ERROR_START) {
- if (strlen($value) > 0) { // unexpected
- $tokens1[] = new PHPExcel_Calculation_FormulaToken($value, PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_UNKNOWN);
- $value = "";
- }
- $inError = true;
- $value .= PHPExcel_Calculation_FormulaParser::ERROR_START;
- ++$index;
- continue;
- }
-
- // mark start and end of arrays and array rows
- if ($this->_formula{$index} == PHPExcel_Calculation_FormulaParser::BRACE_OPEN) {
- if (strlen($value) > 0) { // unexpected
- $tokens1[] = new PHPExcel_Calculation_FormulaToken($value, PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_UNKNOWN);
- $value = "";
- }
-
- $tmp = new PHPExcel_Calculation_FormulaToken("ARRAY", PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_FUNCTION, PHPExcel_Calculation_FormulaToken::TOKEN_SUBTYPE_START);
- $tokens1[] = $tmp;
- $stack[] = clone $tmp;
-
- $tmp = new PHPExcel_Calculation_FormulaToken("ARRAYROW", PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_FUNCTION, PHPExcel_Calculation_FormulaToken::TOKEN_SUBTYPE_START);
- $tokens1[] = $tmp;
- $stack[] = clone $tmp;
-
- ++$index;
- continue;
- }
-
- if ($this->_formula{$index} == PHPExcel_Calculation_FormulaParser::SEMICOLON) {
- if (strlen($value) > 0) {
- $tokens1[] = new PHPExcel_Calculation_FormulaToken($value, PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_OPERAND);
- $value = "";
- }
-
- $tmp = array_pop($stack);
- $tmp->setValue("");
- $tmp->setTokenSubType(PHPExcel_Calculation_FormulaToken::TOKEN_SUBTYPE_STOP);
- $tokens1[] = $tmp;
-
- $tmp = new PHPExcel_Calculation_FormulaToken(",", PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_ARGUMENT);
- $tokens1[] = $tmp;
-
- $tmp = new PHPExcel_Calculation_FormulaToken("ARRAYROW", PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_FUNCTION, PHPExcel_Calculation_FormulaToken::TOKEN_SUBTYPE_START);
- $tokens1[] = $tmp;
- $stack[] = clone $tmp;
-
- ++$index;
- continue;
- }
-
- if ($this->_formula{$index} == PHPExcel_Calculation_FormulaParser::BRACE_CLOSE) {
- if (strlen($value) > 0) {
- $tokens1[] = new PHPExcel_Calculation_FormulaToken($value, PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_OPERAND);
- $value = "";
- }
-
- $tmp = array_pop($stack);
- $tmp->setValue("");
- $tmp->setTokenSubType(PHPExcel_Calculation_FormulaToken::TOKEN_SUBTYPE_STOP);
- $tokens1[] = $tmp;
-
- $tmp = array_pop($stack);
- $tmp->setValue("");
- $tmp->setTokenSubType(PHPExcel_Calculation_FormulaToken::TOKEN_SUBTYPE_STOP);
- $tokens1[] = $tmp;
-
- ++$index;
- continue;
- }
-
- // trim white-space
- if ($this->_formula{$index} == PHPExcel_Calculation_FormulaParser::WHITESPACE) {
- if (strlen($value) > 0) {
- $tokens1[] = new PHPExcel_Calculation_FormulaToken($value, PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_OPERAND);
- $value = "";
- }
- $tokens1[] = new PHPExcel_Calculation_FormulaToken("", PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_WHITESPACE);
- ++$index;
- while (($this->_formula{$index} == PHPExcel_Calculation_FormulaParser::WHITESPACE) && ($index < $formulaLength)) {
- ++$index;
- }
- continue;
- }
-
- // multi-character comparators
- if (($index + 2) <= $formulaLength) {
- if (in_array(substr($this->_formula, $index, 2), $COMPARATORS_MULTI)) {
- if (strlen($value) > 0) {
- $tokens1[] = new PHPExcel_Calculation_FormulaToken($value, PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_OPERAND);
- $value = "";
- }
- $tokens1[] = new PHPExcel_Calculation_FormulaToken(substr($this->_formula, $index, 2), PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_OPERATORINFIX, PHPExcel_Calculation_FormulaToken::TOKEN_SUBTYPE_LOGICAL);
- $index += 2;
- continue;
- }
- }
-
- // standard infix operators
- if (strpos(PHPExcel_Calculation_FormulaParser::OPERATORS_INFIX, $this->_formula{$index}) !== false) {
- if (strlen($value) > 0) {
- $tokens1[] =new PHPExcel_Calculation_FormulaToken($value, PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_OPERAND);
- $value = "";
- }
- $tokens1[] = new PHPExcel_Calculation_FormulaToken($this->_formula{$index}, PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_OPERATORINFIX);
- ++$index;
- continue;
- }
-
- // standard postfix operators (only one)
- if (strpos(PHPExcel_Calculation_FormulaParser::OPERATORS_POSTFIX, $this->_formula{$index}) !== false) {
- if (strlen($value) > 0) {
- $tokens1[] = new PHPExcel_Calculation_FormulaToken($value, PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_OPERAND);
- $value = "";
- }
- $tokens1[] = new PHPExcel_Calculation_FormulaToken($this->_formula{$index}, PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_OPERATORPOSTFIX);
- ++$index;
- continue;
- }
-
- // start subexpression or function
- if ($this->_formula{$index} == PHPExcel_Calculation_FormulaParser::PAREN_OPEN) {
- if (strlen($value) > 0) {
- $tmp = new PHPExcel_Calculation_FormulaToken($value, PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_FUNCTION, PHPExcel_Calculation_FormulaToken::TOKEN_SUBTYPE_START);
- $tokens1[] = $tmp;
- $stack[] = clone $tmp;
- $value = "";
- } else {
- $tmp = new PHPExcel_Calculation_FormulaToken("", PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_SUBEXPRESSION, PHPExcel_Calculation_FormulaToken::TOKEN_SUBTYPE_START);
- $tokens1[] = $tmp;
- $stack[] = clone $tmp;
- }
- ++$index;
- continue;
- }
-
- // function, subexpression, or array parameters, or operand unions
- if ($this->_formula{$index} == PHPExcel_Calculation_FormulaParser::COMMA) {
- if (strlen($value) > 0) {
- $tokens1[] = new PHPExcel_Calculation_FormulaToken($value, PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_OPERAND);
- $value = "";
- }
-
- $tmp = array_pop($stack);
- $tmp->setValue("");
- $tmp->setTokenSubType(PHPExcel_Calculation_FormulaToken::TOKEN_SUBTYPE_STOP);
- $stack[] = $tmp;
-
- if ($tmp->getTokenType() == PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_FUNCTION) {
- $tokens1[] = new PHPExcel_Calculation_FormulaToken(",", PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_OPERATORINFIX, PHPExcel_Calculation_FormulaToken::TOKEN_SUBTYPE_UNION);
- } else {
- $tokens1[] = new PHPExcel_Calculation_FormulaToken(",", PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_ARGUMENT);
- }
- ++$index;
- continue;
- }
-
- // stop subexpression
- if ($this->_formula{$index} == PHPExcel_Calculation_FormulaParser::PAREN_CLOSE) {
- if (strlen($value) > 0) {
- $tokens1[] = new PHPExcel_Calculation_FormulaToken($value, PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_OPERAND);
- $value = "";
- }
-
- $tmp = array_pop($stack);
- $tmp->setValue("");
- $tmp->setTokenSubType(PHPExcel_Calculation_FormulaToken::TOKEN_SUBTYPE_STOP);
- $tokens1[] = $tmp;
-
- ++$index;
- continue;
- }
-
- // token accumulation
- $value .= $this->_formula{$index};
- ++$index;
- }
-
- // dump remaining accumulation
- if (strlen($value) > 0) {
- $tokens1[] = new PHPExcel_Calculation_FormulaToken($value, PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_OPERAND);
- }
-
- // move tokenList to new set, excluding unnecessary white-space tokens and converting necessary ones to intersections
- $tokenCount = count($tokens1);
- for ($i = 0; $i < $tokenCount; ++$i) {
- $token = $tokens1[$i];
- if (isset($tokens1[$i - 1])) {
- $previousToken = $tokens1[$i - 1];
- } else {
- $previousToken = null;
- }
- if (isset($tokens1[$i + 1])) {
- $nextToken = $tokens1[$i + 1];
- } else {
- $nextToken = null;
- }
-
- if (is_null($token)) {
- continue;
- }
-
- if ($token->getTokenType() != PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_WHITESPACE) {
- $tokens2[] = $token;
- continue;
- }
-
- if (is_null($previousToken)) {
- continue;
- }
-
- if (! (
- (($previousToken->getTokenType() == PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_FUNCTION) && ($previousToken->getTokenSubType() == PHPExcel_Calculation_FormulaToken::TOKEN_SUBTYPE_STOP)) ||
- (($previousToken->getTokenType() == PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_SUBEXPRESSION) && ($previousToken->getTokenSubType() == PHPExcel_Calculation_FormulaToken::TOKEN_SUBTYPE_STOP)) ||
- ($previousToken->getTokenType() == PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_OPERAND)
- ) ) {
- continue;
- }
-
- if (is_null($nextToken)) {
- continue;
- }
-
- if (! (
- (($nextToken->getTokenType() == PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_FUNCTION) && ($nextToken->getTokenSubType() == PHPExcel_Calculation_FormulaToken::TOKEN_SUBTYPE_START)) ||
- (($nextToken->getTokenType() == PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_SUBEXPRESSION) && ($nextToken->getTokenSubType() == PHPExcel_Calculation_FormulaToken::TOKEN_SUBTYPE_START)) ||
- ($nextToken->getTokenType() == PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_OPERAND)
- ) ) {
- continue;
- }
-
- $tokens2[] = new PHPExcel_Calculation_FormulaToken($value, PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_OPERATORINFIX, PHPExcel_Calculation_FormulaToken::TOKEN_SUBTYPE_INTERSECTION);
- }
-
- // move tokens to final list, switching infix "-" operators to prefix when appropriate, switching infix "+" operators
- // to noop when appropriate, identifying operand and infix-operator subtypes, and pulling "@" from function names
- $this->_tokens = array();
-
- $tokenCount = count($tokens2);
- for ($i = 0; $i < $tokenCount; ++$i) {
- $token = $tokens2[$i];
- if (isset($tokens2[$i - 1])) {
- $previousToken = $tokens2[$i - 1];
- } else {
- $previousToken = null;
- }
- if (isset($tokens2[$i + 1])) {
- $nextToken = $tokens2[$i + 1];
- } else {
- $nextToken = null;
- }
-
- if (is_null($token)) {
- continue;
- }
-
- if ($token->getTokenType() == PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_OPERATORINFIX && $token->getValue() == "-") {
- if ($i == 0) {
- $token->setTokenType(PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_OPERATORPREFIX);
- } else if (
- (($previousToken->getTokenType() == PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_FUNCTION) && ($previousToken->getTokenSubType() == PHPExcel_Calculation_FormulaToken::TOKEN_SUBTYPE_STOP)) ||
- (($previousToken->getTokenType() == PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_SUBEXPRESSION) && ($previousToken->getTokenSubType() == PHPExcel_Calculation_FormulaToken::TOKEN_SUBTYPE_STOP)) ||
- ($previousToken->getTokenType() == PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_OPERATORPOSTFIX) ||
- ($previousToken->getTokenType() == PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_OPERAND)
- ) {
- $token->setTokenSubType(PHPExcel_Calculation_FormulaToken::TOKEN_SUBTYPE_MATH);
- } else {
- $token->setTokenType(PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_OPERATORPREFIX);
- }
-
- $this->_tokens[] = $token;
- continue;
- }
-
- if ($token->getTokenType() == PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_OPERATORINFIX && $token->getValue() == "+") {
- if ($i == 0) {
- continue;
- } else if (
- (($previousToken->getTokenType() == PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_FUNCTION) && ($previousToken->getTokenSubType() == PHPExcel_Calculation_FormulaToken::TOKEN_SUBTYPE_STOP)) ||
- (($previousToken->getTokenType() == PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_SUBEXPRESSION) && ($previousToken->getTokenSubType() == PHPExcel_Calculation_FormulaToken::TOKEN_SUBTYPE_STOP)) ||
- ($previousToken->getTokenType() == PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_OPERATORPOSTFIX) ||
- ($previousToken->getTokenType() == PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_OPERAND)
- ) {
- $token->setTokenSubType(PHPExcel_Calculation_FormulaToken::TOKEN_SUBTYPE_MATH);
- } else {
- continue;
- }
-
- $this->_tokens[] = $token;
- continue;
- }
-
- if ($token->getTokenType() == PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_OPERATORINFIX && $token->getTokenSubType() == PHPExcel_Calculation_FormulaToken::TOKEN_SUBTYPE_NOTHING) {
- if (strpos("<>=", substr($token->getValue(), 0, 1)) !== false) {
- $token->setTokenSubType(PHPExcel_Calculation_FormulaToken::TOKEN_SUBTYPE_LOGICAL);
- } else if ($token->getValue() == "&") {
- $token->setTokenSubType(PHPExcel_Calculation_FormulaToken::TOKEN_SUBTYPE_CONCATENATION);
- } else {
- $token->setTokenSubType(PHPExcel_Calculation_FormulaToken::TOKEN_SUBTYPE_MATH);
- }
-
- $this->_tokens[] = $token;
- continue;
- }
-
- if ($token->getTokenType() == PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_OPERAND && $token->getTokenSubType() == PHPExcel_Calculation_FormulaToken::TOKEN_SUBTYPE_NOTHING) {
- if (!is_numeric($token->getValue())) {
- if (strtoupper($token->getValue()) == "TRUE" || strtoupper($token->getValue() == "FALSE")) {
- $token->setTokenSubType(PHPExcel_Calculation_FormulaToken::TOKEN_SUBTYPE_LOGICAL);
- } else {
- $token->setTokenSubType(PHPExcel_Calculation_FormulaToken::TOKEN_SUBTYPE_RANGE);
- }
- } else {
- $token->setTokenSubType(PHPExcel_Calculation_FormulaToken::TOKEN_SUBTYPE_NUMBER);
- }
-
- $this->_tokens[] = $token;
- continue;
- }
-
- if ($token->getTokenType() == PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_FUNCTION) {
- if (strlen($token->getValue() > 0)) {
- if (substr($token->getValue(), 0, 1) == "@") {
- $token->setValue(substr($token->getValue(), 1));
- }
- }
- }
-
- $this->_tokens[] = $token;
- }
- }
-}
diff --git a/admin/survey/excel/PHPExcel/Calculation/FormulaToken.php b/admin/survey/excel/PHPExcel/Calculation/FormulaToken.php
deleted file mode 100644
index 7fe7d5a..0000000
--- a/admin/survey/excel/PHPExcel/Calculation/FormulaToken.php
+++ /dev/null
@@ -1,176 +0,0 @@
-<?php
-/**
- * PHPExcel
- *
- * Copyright (c) 2006 - 2012 PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel_Calculation
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-
-/*
-PARTLY BASED ON:
- Copyright (c) 2007 E. W. Bachtal, Inc.
-
- Permission is hereby granted, free of charge, to any person obtaining a copy of this software
- and associated documentation files (the "Software"), to deal in the Software without restriction,
- including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense,
- and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so,
- subject to the following conditions:
-
- The above copyright notice and this permission notice shall be included in all copies or substantial
- portions of the Software.
-
- The software is provided "as is", without warranty of any kind, express or implied, including but not
- limited to the warranties of merchantability, fitness for a particular purpose and noninfringement. In
- no event shall the authors or copyright holders be liable for any claim, damages or other liability,
- whether in an action of contract, tort or otherwise, arising from, out of or in connection with the
- software or the use or other dealings in the software.
-
- http://ewbi.blogs.com/develops/2007/03/excel_formula_p.html
- http://ewbi.blogs.com/develops/2004/12/excel_formula_p.html
-*/
-
-
-/**
- * PHPExcel_Calculation_FormulaToken
- *
- * @category PHPExcel
- * @package PHPExcel_Calculation
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- */
-class PHPExcel_Calculation_FormulaToken {
- /* Token types */
- const TOKEN_TYPE_NOOP = 'Noop';
- const TOKEN_TYPE_OPERAND = 'Operand';
- const TOKEN_TYPE_FUNCTION = 'Function';
- const TOKEN_TYPE_SUBEXPRESSION = 'Subexpression';
- const TOKEN_TYPE_ARGUMENT = 'Argument';
- const TOKEN_TYPE_OPERATORPREFIX = 'OperatorPrefix';
- const TOKEN_TYPE_OPERATORINFIX = 'OperatorInfix';
- const TOKEN_TYPE_OPERATORPOSTFIX = 'OperatorPostfix';
- const TOKEN_TYPE_WHITESPACE = 'Whitespace';
- const TOKEN_TYPE_UNKNOWN = 'Unknown';
-
- /* Token subtypes */
- const TOKEN_SUBTYPE_NOTHING = 'Nothing';
- const TOKEN_SUBTYPE_START = 'Start';
- const TOKEN_SUBTYPE_STOP = 'Stop';
- const TOKEN_SUBTYPE_TEXT = 'Text';
- const TOKEN_SUBTYPE_NUMBER = 'Number';
- const TOKEN_SUBTYPE_LOGICAL = 'Logical';
- const TOKEN_SUBTYPE_ERROR = 'Error';
- const TOKEN_SUBTYPE_RANGE = 'Range';
- const TOKEN_SUBTYPE_MATH = 'Math';
- const TOKEN_SUBTYPE_CONCATENATION = 'Concatenation';
- const TOKEN_SUBTYPE_INTERSECTION = 'Intersection';
- const TOKEN_SUBTYPE_UNION = 'Union';
-
- /**
- * Value
- *
- * @var string
- */
- private $_value;
-
- /**
- * Token Type (represented by TOKEN_TYPE_*)
- *
- * @var string
- */
- private $_tokenType;
-
- /**
- * Token SubType (represented by TOKEN_SUBTYPE_*)
- *
- * @var string
- */
- private $_tokenSubType;
-
- /**
- * Create a new PHPExcel_Calculation_FormulaToken
- *
- * @param string $pValue
- * @param string $pTokenType Token type (represented by TOKEN_TYPE_*)
- * @param string $pTokenSubType Token Subtype (represented by TOKEN_SUBTYPE_*)
- */
- public function __construct($pValue, $pTokenType = PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_UNKNOWN, $pTokenSubType = PHPExcel_Calculation_FormulaToken::TOKEN_SUBTYPE_NOTHING)
- {
- // Initialise values
- $this->_value = $pValue;
- $this->_tokenType = $pTokenType;
- $this->_tokenSubType = $pTokenSubType;
- }
-
- /**
- * Get Value
- *
- * @return string
- */
- public function getValue() {
- return $this->_value;
- }
-
- /**
- * Set Value
- *
- * @param string $value
- */
- public function setValue($value) {
- $this->_value = $value;
- }
-
- /**
- * Get Token Type (represented by TOKEN_TYPE_*)
- *
- * @return string
- */
- public function getTokenType() {
- return $this->_tokenType;
- }
-
- /**
- * Set Token Type
- *
- * @param string $value
- */
- public function setTokenType($value = PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_UNKNOWN) {
- $this->_tokenType = $value;
- }
-
- /**
- * Get Token SubType (represented by TOKEN_SUBTYPE_*)
- *
- * @return string
- */
- public function getTokenSubType() {
- return $this->_tokenSubType;
- }
-
- /**
- * Set Token SubType
- *
- * @param string $value
- */
- public function setTokenSubType($value = PHPExcel_Calculation_FormulaToken::TOKEN_SUBTYPE_NOTHING) {
- $this->_tokenSubType = $value;
- }
-}
diff --git a/admin/survey/excel/PHPExcel/Calculation/Function.php b/admin/survey/excel/PHPExcel/Calculation/Function.php
deleted file mode 100644
index 92e6dbc..0000000
--- a/admin/survey/excel/PHPExcel/Calculation/Function.php
+++ /dev/null
@@ -1,149 +0,0 @@
-<?php
-/**
- * PHPExcel
- *
- * Copyright (c) 2006 - 2012 PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel_Calculation
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-
-/**
- * PHPExcel_Calculation_Function
- *
- * @category PHPExcel
- * @package PHPExcel_Calculation
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- */
-class PHPExcel_Calculation_Function {
- /* Function categories */
- const CATEGORY_CUBE = 'Cube';
- const CATEGORY_DATABASE = 'Database';
- const CATEGORY_DATE_AND_TIME = 'Date and Time';
- const CATEGORY_ENGINEERING = 'Engineering';
- const CATEGORY_FINANCIAL = 'Financial';
- const CATEGORY_INFORMATION = 'Information';
- const CATEGORY_LOGICAL = 'Logical';
- const CATEGORY_LOOKUP_AND_REFERENCE = 'Lookup and Reference';
- const CATEGORY_MATH_AND_TRIG = 'Math and Trig';
- const CATEGORY_STATISTICAL = 'Statistical';
- const CATEGORY_TEXT_AND_DATA = 'Text and Data';
-
- /**
- * Category (represented by CATEGORY_*)
- *
- * @var string
- */
- private $_category;
-
- /**
- * Excel name
- *
- * @var string
- */
- private $_excelName;
-
- /**
- * PHPExcel name
- *
- * @var string
- */
- private $_phpExcelName;
-
- /**
- * Create a new PHPExcel_Calculation_Function
- *
- * @param string $pCategory Category (represented by CATEGORY_*)
- * @param string $pExcelName Excel function name
- * @param string $pPHPExcelName PHPExcel function mapping
- * @throws Exception
- */
- public function __construct($pCategory = NULL, $pExcelName = NULL, $pPHPExcelName = NULL)
- {
- if (($pCategory !== NULL) && ($pExcelName !== NULL) && ($pPHPExcelName !== NULL)) {
- // Initialise values
- $this->_category = $pCategory;
- $this->_excelName = $pExcelName;
- $this->_phpExcelName = $pPHPExcelName;
- } else {
- throw new Exception("Invalid parameters passed.");
- }
- }
-
- /**
- * Get Category (represented by CATEGORY_*)
- *
- * @return string
- */
- public function getCategory() {
- return $this->_category;
- }
-
- /**
- * Set Category (represented by CATEGORY_*)
- *
- * @param string $value
- * @throws Exception
- */
- public function setCategory($value = null) {
- if (!is_null($value)) {
- $this->_category = $value;
- } else {
- throw new Exception("Invalid parameter passed.");
- }
- }
-
- /**
- * Get Excel name
- *
- * @return string
- */
- public function getExcelName() {
- return $this->_excelName;
- }
-
- /**
- * Set Excel name
- *
- * @param string $value
- */
- public function setExcelName($value) {
- $this->_excelName = $value;
- }
-
- /**
- * Get PHPExcel name
- *
- * @return string
- */
- public function getPHPExcelName() {
- return $this->_phpExcelName;
- }
-
- /**
- * Set PHPExcel name
- *
- * @param string $value
- */
- public function setPHPExcelName($value) {
- $this->_phpExcelName = $value;
- }
-}
diff --git a/admin/survey/excel/PHPExcel/Calculation/Functions.php b/admin/survey/excel/PHPExcel/Calculation/Functions.php
deleted file mode 100644
index 6ea33fa..0000000
--- a/admin/survey/excel/PHPExcel/Calculation/Functions.php
+++ /dev/null
@@ -1,813 +0,0 @@
-<?php
-/**
- * PHPExcel
- *
- * Copyright (c) 2006 - 2012 PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel_Calculation
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-
-/** PHPExcel root directory */
-if (!defined('PHPEXCEL_ROOT')) {
- /**
- * @ignore
- */
- define('PHPEXCEL_ROOT', dirname(__FILE__) . '/../../');
- require(PHPEXCEL_ROOT . 'PHPExcel/Autoloader.php');
-}
-
-
-/** MAX_VALUE */
-define('MAX_VALUE', 1.2e308);
-
-/** 2 / PI */
-define('M_2DIVPI', 0.63661977236758134307553505349006);
-
-/** MAX_ITERATIONS */
-define('MAX_ITERATIONS', 256);
-
-/** PRECISION */
-define('PRECISION', 8.88E-016);
-
-
-/**
- * PHPExcel_Calculation_Functions
- *
- * @category PHPExcel
- * @package PHPExcel_Calculation
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- */
-class PHPExcel_Calculation_Functions {
-
- /** constants */
- const COMPATIBILITY_EXCEL = 'Excel';
- const COMPATIBILITY_GNUMERIC = 'Gnumeric';
- const COMPATIBILITY_OPENOFFICE = 'OpenOfficeCalc';
-
- const RETURNDATE_PHP_NUMERIC = 'P';
- const RETURNDATE_PHP_OBJECT = 'O';
- const RETURNDATE_EXCEL = 'E';
-
-
- /**
- * Compatibility mode to use for error checking and responses
- *
- * @access private
- * @var string
- */
- protected static $compatibilityMode = self::COMPATIBILITY_EXCEL;
-
- /**
- * Data Type to use when returning date values
- *
- * @access private
- * @var string
- */
- protected static $ReturnDateType = self::RETURNDATE_EXCEL;
-
- /**
- * List of error codes
- *
- * @access private
- * @var array
- */
- protected static $_errorCodes = array( 'null' => '#NULL!',
- 'divisionbyzero' => '#DIV/0!',
- 'value' => '#VALUE!',
- 'reference' => '#REF!',
- 'name' => '#NAME?',
- 'num' => '#NUM!',
- 'na' => '#N/A',
- 'gettingdata' => '#GETTING_DATA'
- );
-
-
- /**
- * Set the Compatibility Mode
- *
- * @access public
- * @category Function Configuration
- * @param string $compatibilityMode Compatibility Mode
- * Permitted values are:
- * PHPExcel_Calculation_Functions::COMPATIBILITY_EXCEL 'Excel'
- * PHPExcel_Calculation_Functions::COMPATIBILITY_GNUMERIC 'Gnumeric'
- * PHPExcel_Calculation_Functions::COMPATIBILITY_OPENOFFICE 'OpenOfficeCalc'
- * @return boolean (Success or Failure)
- */
- public static function setCompatibilityMode($compatibilityMode) {
- if (($compatibilityMode == self::COMPATIBILITY_EXCEL) ||
- ($compatibilityMode == self::COMPATIBILITY_GNUMERIC) ||
- ($compatibilityMode == self::COMPATIBILITY_OPENOFFICE)) {
- self::$compatibilityMode = $compatibilityMode;
- return True;
- }
- return False;
- } // function setCompatibilityMode()
-
-
- /**
- * Return the current Compatibility Mode
- *
- * @access public
- * @category Function Configuration
- * @return string Compatibility Mode
- * Possible Return values are:
- * PHPExcel_Calculation_Functions::COMPATIBILITY_EXCEL 'Excel'
- * PHPExcel_Calculation_Functions::COMPATIBILITY_GNUMERIC 'Gnumeric'
- * PHPExcel_Calculation_Functions::COMPATIBILITY_OPENOFFICE 'OpenOfficeCalc'
- */
- public static function getCompatibilityMode() {
- return self::$compatibilityMode;
- } // function getCompatibilityMode()
-
-
- /**
- * Set the Return Date Format used by functions that return a date/time (Excel, PHP Serialized Numeric or PHP Object)
- *
- * @access public
- * @category Function Configuration
- * @param string $returnDateType Return Date Format
- * Permitted values are:
- * PHPExcel_Calculation_Functions::RETURNDATE_PHP_NUMERIC 'P'
- * PHPExcel_Calculation_Functions::RETURNDATE_PHP_OBJECT 'O'
- * PHPExcel_Calculation_Functions::RETURNDATE_EXCEL 'E'
- * @return boolean Success or failure
- */
- public static function setReturnDateType($returnDateType) {
- if (($returnDateType == self::RETURNDATE_PHP_NUMERIC) ||
- ($returnDateType == self::RETURNDATE_PHP_OBJECT) ||
- ($returnDateType == self::RETURNDATE_EXCEL)) {
- self::$ReturnDateType = $returnDateType;
- return True;
- }
- return False;
- } // function setReturnDateType()
-
-
- /**
- * Return the current Return Date Format for functions that return a date/time (Excel, PHP Serialized Numeric or PHP Object)
- *
- * @access public
- * @category Function Configuration
- * @return string Return Date Format
- * Possible Return values are:
- * PHPExcel_Calculation_Functions::RETURNDATE_PHP_NUMERIC 'P'
- * PHPExcel_Calculation_Functions::RETURNDATE_PHP_OBJECT 'O'
- * PHPExcel_Calculation_Functions::RETURNDATE_EXCEL 'E'
- */
- public static function getReturnDateType() {
- return self::$ReturnDateType;
- } // function getReturnDateType()
-
-
- /**
- * DUMMY
- *
- * @access public
- * @category Error Returns
- * @return string #Not Yet Implemented
- */
- public static function DUMMY() {
- return '#Not Yet Implemented';
- } // function DUMMY()
-
-
- /**
- * DIV0
- *
- * @access public
- * @category Error Returns
- * @return string #Not Yet Implemented
- */
- public static function DIV0() {
- return self::$_errorCodes['divisionbyzero'];
- } // function DIV0()
-
-
- /**
- * NA
- *
- * Excel Function:
- * =NA()
- *
- * Returns the error value #N/A
- * #N/A is the error value that means "no value is available."
- *
- * @access public
- * @category Logical Functions
- * @return string #N/A!
- */
- public static function NA() {
- return self::$_errorCodes['na'];
- } // function NA()
-
-
- /**
- * NaN
- *
- * Returns the error value #NUM!
- *
- * @access public
- * @category Error Returns
- * @return string #NUM!
- */
- public static function NaN() {
- return self::$_errorCodes['num'];
- } // function NaN()
-
-
- /**
- * NAME
- *
- * Returns the error value #NAME?
- *
- * @access public
- * @category Error Returns
- * @return string #NAME?
- */
- public static function NAME() {
- return self::$_errorCodes['name'];
- } // function NAME()
-
-
- /**
- * REF
- *
- * Returns the error value #REF!
- *
- * @access public
- * @category Error Returns
- * @return string #REF!
- */
- public static function REF() {
- return self::$_errorCodes['reference'];
- } // function REF()
-
-
- /**
- * NULL
- *
- * Returns the error value #NULL!
- *
- * @access public
- * @category Error Returns
- * @return string #REF!
- */
- public static function NULL() {
- return self::$_errorCodes['null'];
- } // function NULL()
-
-
- /**
- * VALUE
- *
- * Returns the error value #VALUE!
- *
- * @access public
- * @category Error Returns
- * @return string #VALUE!
- */
- public static function VALUE() {
- return self::$_errorCodes['value'];
- } // function VALUE()
-
-
- public static function isMatrixValue($idx) {
- return ((substr_count($idx,'.') <= 1) || (preg_match('/\.[A-Z]/',$idx) > 0));
- }
-
-
- public static function isValue($idx) {
- return (substr_count($idx,'.') == 0);
- }
-
-
- public static function isCellValue($idx) {
- return (substr_count($idx,'.') > 1);
- }
-
-
- public static function _ifCondition($condition) {
- $condition = PHPExcel_Calculation_Functions::flattenSingleValue($condition);
- if (!in_array($condition{0},array('>', '<', '='))) {
- if (!is_numeric($condition)) { $condition = PHPExcel_Calculation::_wrapResult(strtoupper($condition)); }
- return '='.$condition;
- } else {
- preg_match('/([<>=]+)(.*)/',$condition,$matches);
- list(,$operator,$operand) = $matches;
- if (!is_numeric($operand)) { $operand = PHPExcel_Calculation::_wrapResult(strtoupper($operand)); }
- return $operator.$operand;
- }
- } // function _ifCondition()
-
-
- /**
- * ERROR_TYPE
- *
- * @param mixed $value Value to check
- * @return boolean
- */
- public static function ERROR_TYPE($value = '') {
- $value = self::flattenSingleValue($value);
-
- $i = 1;
- foreach(self::$_errorCodes as $errorCode) {
- if ($value === $errorCode) {
- return $i;
- }
- ++$i;
- }
- return self::NA();
- } // function ERROR_TYPE()
-
-
- /**
- * IS_BLANK
- *
- * @param mixed $value Value to check
- * @return boolean
- */
- public static function IS_BLANK($value = NULL) {
- if (!is_null($value)) {
- $value = self::flattenSingleValue($value);
- }
-
- return is_null($value);
- } // function IS_BLANK()
-
-
- /**
- * IS_ERR
- *
- * @param mixed $value Value to check
- * @return boolean
- */
- public static function IS_ERR($value = '') {
- $value = self::flattenSingleValue($value);
-
- return self::IS_ERROR($value) && (!self::IS_NA($value));
- } // function IS_ERR()
-
-
- /**
- * IS_ERROR
- *
- * @param mixed $value Value to check
- * @return boolean
- */
- public static function IS_ERROR($value = '') {
- $value = self::flattenSingleValue($value);
-
- if (!is_string($value))
- return false;
- return in_array($value, array_values(self::$_errorCodes));
- } // function IS_ERROR()
-
-
- /**
- * IS_NA
- *
- * @param mixed $value Value to check
- * @return boolean
- */
- public static function IS_NA($value = '') {
- $value = self::flattenSingleValue($value);
-
- return ($value === self::NA());
- } // function IS_NA()
-
-
- /**
- * IS_EVEN
- *
- * @param mixed $value Value to check
- * @return boolean
- */
- public static function IS_EVEN($value = NULL) {
- $value = self::flattenSingleValue($value);
-
- if ($value === NULL)
- return self::NAME();
- if ((is_bool($value)) || ((is_string($value)) && (!is_numeric($value))))
- return self::VALUE();
- return ($value % 2 == 0);
- } // function IS_EVEN()
-
-
- /**
- * IS_ODD
- *
- * @param mixed $value Value to check
- * @return boolean
- */
- public static function IS_ODD($value = NULL) {
- $value = self::flattenSingleValue($value);
-
- if ($value === NULL)
- return self::NAME();
- if ((is_bool($value)) || ((is_string($value)) && (!is_numeric($value))))
- return self::VALUE();
- return (abs($value) % 2 == 1);
- } // function IS_ODD()
-
-
- /**
- * IS_NUMBER
- *
- * @param mixed $value Value to check
- * @return boolean
- */
- public static function IS_NUMBER($value = NULL) {
- $value = self::flattenSingleValue($value);
-
- if (is_string($value)) {
- return False;
- }
- return is_numeric($value);
- } // function IS_NUMBER()
-
-
- /**
- * IS_LOGICAL
- *
- * @param mixed $value Value to check
- * @return boolean
- */
- public static function IS_LOGICAL($value = NULL) {
- $value = self::flattenSingleValue($value);
-
- return is_bool($value);
- } // function IS_LOGICAL()
-
-
- /**
- * IS_TEXT
- *
- * @param mixed $value Value to check
- * @return boolean
- */
- public static function IS_TEXT($value = NULL) {
- $value = self::flattenSingleValue($value);
-
- return (is_string($value) && !self::IS_ERROR($value));
- } // function IS_TEXT()
-
-
- /**
- * IS_NONTEXT
- *
- * @param mixed $value Value to check
- * @return boolean
- */
- public static function IS_NONTEXT($value = NULL) {
- return !self::IS_TEXT($value);
- } // function IS_NONTEXT()
-
-
- /**
- * VERSION
- *
- * @return string Version information
- */
- public static function VERSION() {
- return 'PHPExcel 1.7.8, 2012-10-12';
- } // function VERSION()
-
-
- /**
- * N
- *
- * Returns a value converted to a number
- *
- * @param value The value you want converted
- * @return number N converts values listed in the following table
- * If value is or refers to N returns
- * A number That number
- * A date The serial number of that date
- * TRUE 1
- * FALSE 0
- * An error value The error value
- * Anything else 0
- */
- public static function N($value = NULL) {
- while (is_array($value)) {
- $value = array_shift($value);
- }
-
- switch (gettype($value)) {
- case 'double' :
- case 'float' :
- case 'integer' :
- return $value;
- break;
- case 'boolean' :
- return (integer) $value;
- break;
- case 'string' :
- // Errors
- if ((strlen($value) > 0) && ($value{0} == '#')) {
- return $value;
- }
- break;
- }
- return 0;
- } // function N()
-
-
- /**
- * TYPE
- *
- * Returns a number that identifies the type of a value
- *
- * @param value The value you want tested
- * @return number N converts values listed in the following table
- * If value is or refers to N returns
- * A number 1
- * Text 2
- * Logical Value 4
- * An error value 16
- * Array or Matrix 64
- */
- public static function TYPE($value = NULL) {
- $value = self::flattenArrayIndexed($value);
- if (is_array($value) && (count($value) > 1)) {
- $a = array_keys($value);
- $a = array_pop($a);
- // Range of cells is an error
- if (self::isCellValue($a)) {
- return 16;
- // Test for Matrix
- } elseif (self::isMatrixValue($a)) {
- return 64;
- }
- } elseif(empty($value)) {
- // Empty Cell
- return 1;
- }
- $value = self::flattenSingleValue($value);
-
- if (($value === NULL) || (is_float($value)) || (is_int($value))) {
- return 1;
- } elseif(is_bool($value)) {
- return 4;
- } elseif(is_array($value)) {
- return 64;
- break;
- } elseif(is_string($value)) {
- // Errors
- if ((strlen($value) > 0) && ($value{0} == '#')) {
- return 16;
- }
- return 2;
- }
- return 0;
- } // function TYPE()
-
-
- /**
- * Convert a multi-dimensional array to a simple 1-dimensional array
- *
- * @param array $array Array to be flattened
- * @return array Flattened array
- */
- public static function flattenArray($array) {
- if (!is_array($array)) {
- return (array) $array;
- }
-
- $arrayValues = array();
- foreach ($array as $value) {
- if (is_array($value)) {
- foreach ($value as $val) {
- if (is_array($val)) {
- foreach ($val as $v) {
- $arrayValues[] = $v;
- }
- } else {
- $arrayValues[] = $val;
- }
- }
- } else {
- $arrayValues[] = $value;
- }
- }
-
- return $arrayValues;
- } // function flattenArray()
-
-
- /**
- * Convert a multi-dimensional array to a simple 1-dimensional array, but retain an element of indexing
- *
- * @param array $array Array to be flattened
- * @return array Flattened array
- */
- public static function flattenArrayIndexed($array) {
- if (!is_array($array)) {
- return (array) $array;
- }
-
- $arrayValues = array();
- foreach ($array as $k1 => $value) {
- if (is_array($value)) {
- foreach ($value as $k2 => $val) {
- if (is_array($val)) {
- foreach ($val as $k3 => $v) {
- $arrayValues[$k1.'.'.$k2.'.'.$k3] = $v;
- }
- } else {
- $arrayValues[$k1.'.'.$k2] = $val;
- }
- }
- } else {
- $arrayValues[$k1] = $value;
- }
- }
-
- return $arrayValues;
- } // function flattenArrayIndexed()
-
-
- /**
- * Convert an array to a single scalar value by extracting the first element
- *
- * @param mixed $value Array or scalar value
- * @return mixed
- */
- public static function flattenSingleValue($value = '') {
- while (is_array($value)) {
- $value = array_pop($value);
- }
-
- return $value;
- } // function flattenSingleValue()
-
-} // class PHPExcel_Calculation_Functions
-
-
-//
-// There are a few mathematical functions that aren't available on all versions of PHP for all platforms
-// These functions aren't available in Windows implementations of PHP prior to version 5.3.0
-// So we test if they do exist for this version of PHP/operating platform; and if not we create them
-//
-if (!function_exists('acosh')) {
- function acosh($x) {
- return 2 * log(sqrt(($x + 1) / 2) + sqrt(($x - 1) / 2));
- } // function acosh()
-}
-
-if (!function_exists('asinh')) {
- function asinh($x) {
- return log($x + sqrt(1 + $x * $x));
- } // function asinh()
-}
-
-if (!function_exists('atanh')) {
- function atanh($x) {
- return (log(1 + $x) - log(1 - $x)) / 2;
- } // function atanh()
-}
-
-if (!function_exists('money_format')) {
- function money_format($format, $number) {
- $regex = array( '/%((?:[\^!\-]|\+|\(|\=.)*)([0-9]+)?(?:#([0-9]+))?',
- '(?:\.([0-9]+))?([in%])/'
- );
- $regex = implode('', $regex);
- if (setlocale(LC_MONETARY, null) == '') {
- setlocale(LC_MONETARY, '');
- }
- $locale = localeconv();
- $number = floatval($number);
- if (!preg_match($regex, $format, $fmatch)) {
- trigger_error("No format specified or invalid format", E_USER_WARNING);
- return $number;
- }
- $flags = array( 'fillchar' => preg_match('/\=(.)/', $fmatch[1], $match) ? $match[1] : ' ',
- 'nogroup' => preg_match('/\^/', $fmatch[1]) > 0,
- 'usesignal' => preg_match('/\+|\(/', $fmatch[1], $match) ? $match[0] : '+',
- 'nosimbol' => preg_match('/\!/', $fmatch[1]) > 0,
- 'isleft' => preg_match('/\-/', $fmatch[1]) > 0
- );
- $width = trim($fmatch[2]) ? (int)$fmatch[2] : 0;
- $left = trim($fmatch[3]) ? (int)$fmatch[3] : 0;
- $right = trim($fmatch[4]) ? (int)$fmatch[4] : $locale['int_frac_digits'];
- $conversion = $fmatch[5];
- $positive = true;
- if ($number < 0) {
- $positive = false;
- $number *= -1;
- }
- $letter = $positive ? 'p' : 'n';
- $prefix = $suffix = $cprefix = $csuffix = $signal = '';
- if (!$positive) {
- $signal = $locale['negative_sign'];
- switch (true) {
- case $locale['n_sign_posn'] == 0 || $flags['usesignal'] == '(':
- $prefix = '(';
- $suffix = ')';
- break;
- case $locale['n_sign_posn'] == 1:
- $prefix = $signal;
- break;
- case $locale['n_sign_posn'] == 2:
- $suffix = $signal;
- break;
- case $locale['n_sign_posn'] == 3:
- $cprefix = $signal;
- break;
- case $locale['n_sign_posn'] == 4:
- $csuffix = $signal;
- break;
- }
- }
- if (!$flags['nosimbol']) {
- $currency = $cprefix;
- $currency .= ($conversion == 'i' ? $locale['int_curr_symbol'] : $locale['currency_symbol']);
- $currency .= $csuffix;
- $currency = iconv('ISO-8859-1','UTF-8',$currency);
- } else {
- $currency = '';
- }
- $space = $locale["{$letter}_sep_by_space"] ? ' ' : '';
-
- if (!isset($locale['mon_decimal_point']) || empty($locale['mon_decimal_point'])) {
- $locale['mon_decimal_point'] = (!isset($locale['decimal_point']) || empty($locale['decimal_point'])) ?
- $locale['decimal_point'] :
- '.';
- }
-
- $number = number_format($number, $right, $locale['mon_decimal_point'], $flags['nogroup'] ? '' : $locale['mon_thousands_sep'] );
- $number = explode($locale['mon_decimal_point'], $number);
-
- $n = strlen($prefix) + strlen($currency);
- if ($left > 0 && $left > $n) {
- if ($flags['isleft']) {
- $number[0] .= str_repeat($flags['fillchar'], $left - $n);
- } else {
- $number[0] = str_repeat($flags['fillchar'], $left - $n) . $number[0];
- }
- }
- $number = implode($locale['mon_decimal_point'], $number);
- if ($locale["{$letter}_cs_precedes"]) {
- $number = $prefix . $currency . $space . $number . $suffix;
- } else {
- $number = $prefix . $number . $space . $currency . $suffix;
- }
- if ($width > 0) {
- $number = str_pad($number, $width, $flags['fillchar'], $flags['isleft'] ? STR_PAD_RIGHT : STR_PAD_LEFT);
- }
- $format = str_replace($fmatch[0], $number, $format);
- return $format;
- } // function money_format()
-}
-
-
-//
-// Strangely, PHP doesn't have a mb_str_replace multibyte function
-// As we'll only ever use this function with UTF-8 characters, we can simply "hard-code" the character set
-//
-if ((!function_exists('mb_str_replace')) &&
- (function_exists('mb_substr')) && (function_exists('mb_strlen')) && (function_exists('mb_strpos'))) {
- function mb_str_replace($search, $replace, $subject) {
- if(is_array($subject)) {
- $ret = array();
- foreach($subject as $key => $val) {
- $ret[$key] = mb_str_replace($search, $replace, $val);
- }
- return $ret;
- }
-
- foreach((array) $search as $key => $s) {
- if($s == '') {
- continue;
- }
- $r = !is_array($replace) ? $replace : (array_key_exists($key, $replace) ? $replace[$key] : '');
- $pos = mb_strpos($subject, $s, 0, 'UTF-8');
- while($pos !== false) {
- $subject = mb_substr($subject, 0, $pos, 'UTF-8') . $r . mb_substr($subject, $pos + mb_strlen($s, 'UTF-8'), 65535, 'UTF-8');
- $pos = mb_strpos($subject, $s, $pos + mb_strlen($r, 'UTF-8'), 'UTF-8');
- }
- }
- return $subject;
- }
-}
diff --git a/admin/survey/excel/PHPExcel/Calculation/Logical.php b/admin/survey/excel/PHPExcel/Calculation/Logical.php
deleted file mode 100644
index 5d5b4f3..0000000
--- a/admin/survey/excel/PHPExcel/Calculation/Logical.php
+++ /dev/null
@@ -1,288 +0,0 @@
-<?php
-/**
- * PHPExcel
- *
- * Copyright (c) 2006 - 2012 PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel_Calculation
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-
-/** PHPExcel root directory */
-if (!defined('PHPEXCEL_ROOT')) {
- /**
- * @ignore
- */
- define('PHPEXCEL_ROOT', dirname(__FILE__) . '/../../');
- require(PHPEXCEL_ROOT . 'PHPExcel/Autoloader.php');
-}
-
-
-/**
- * PHPExcel_Calculation_Logical
- *
- * @category PHPExcel
- * @package PHPExcel_Calculation
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- */
-class PHPExcel_Calculation_Logical {
-
- /**
- * TRUE
- *
- * Returns the boolean TRUE.
- *
- * Excel Function:
- * =TRUE()
- *
- * @access public
- * @category Logical Functions
- * @return boolean True
- */
- public static function TRUE() {
- return TRUE;
- } // function TRUE()
-
-
- /**
- * FALSE
- *
- * Returns the boolean FALSE.
- *
- * Excel Function:
- * =FALSE()
- *
- * @access public
- * @category Logical Functions
- * @return boolean False
- */
- public static function FALSE() {
- return FALSE;
- } // function FALSE()
-
-
- /**
- * LOGICAL_AND
- *
- * Returns boolean TRUE if all its arguments are TRUE; returns FALSE if one or more argument is FALSE.
- *
- * Excel Function:
- * =AND(logical1[,logical2[, ...]])
- *
- * The arguments must evaluate to logical values such as TRUE or FALSE, or the arguments must be arrays
- * or references that contain logical values.
- *
- * Boolean arguments are treated as True or False as appropriate
- * Integer or floating point arguments are treated as True, except for 0 or 0.0 which are False
- * If any argument value is a string, or a Null, the function returns a #VALUE! error, unless the string holds
- * the value TRUE or FALSE, in which case it is evaluated as the corresponding boolean value
- *
- * @access public
- * @category Logical Functions
- * @param mixed $arg,... Data values
- * @return boolean The logical AND of the arguments.
- */
- public static function LOGICAL_AND() {
- // Return value
- $returnValue = TRUE;
-
- // Loop through the arguments
- $aArgs = PHPExcel_Calculation_Functions::flattenArray(func_get_args());
- $argCount = -1;
- foreach ($aArgs as $argCount => $arg) {
- // Is it a boolean value?
- if (is_bool($arg)) {
- $returnValue = $returnValue && $arg;
- } elseif ((is_numeric($arg)) && (!is_string($arg))) {
- $returnValue = $returnValue && ($arg != 0);
- } elseif (is_string($arg)) {
- $arg = strtoupper($arg);
- if (($arg == 'TRUE') || ($arg == PHPExcel_Calculation::getTRUE())) {
- $arg = TRUE;
- } elseif (($arg == 'FALSE') || ($arg == PHPExcel_Calculation::getFALSE())) {
- $arg = FALSE;
- } else {
- return PHPExcel_Calculation_Functions::VALUE();
- }
- $returnValue = $returnValue && ($arg != 0);
- }
- }
-
- // Return
- if ($argCount < 0) {
- return PHPExcel_Calculation_Functions::VALUE();
- }
- return $returnValue;
- } // function LOGICAL_AND()
-
-
- /**
- * LOGICAL_OR
- *
- * Returns boolean TRUE if any argument is TRUE; returns FALSE if all arguments are FALSE.
- *
- * Excel Function:
- * =OR(logical1[,logical2[, ...]])
- *
- * The arguments must evaluate to logical values such as TRUE or FALSE, or the arguments must be arrays
- * or references that contain logical values.
- *
- * Boolean arguments are treated as True or False as appropriate
- * Integer or floating point arguments are treated as True, except for 0 or 0.0 which are False
- * If any argument value is a string, or a Null, the function returns a #VALUE! error, unless the string holds
- * the value TRUE or FALSE, in which case it is evaluated as the corresponding boolean value
- *
- * @access public
- * @category Logical Functions
- * @param mixed $arg,... Data values
- * @return boolean The logical OR of the arguments.
- */
- public static function LOGICAL_OR() {
- // Return value
- $returnValue = FALSE;
-
- // Loop through the arguments
- $aArgs = PHPExcel_Calculation_Functions::flattenArray(func_get_args());
- $argCount = -1;
- foreach ($aArgs as $argCount => $arg) {
- // Is it a boolean value?
- if (is_bool($arg)) {
- $returnValue = $returnValue || $arg;
- } elseif ((is_numeric($arg)) && (!is_string($arg))) {
- $returnValue = $returnValue || ($arg != 0);
- } elseif (is_string($arg)) {
- $arg = strtoupper($arg);
- if (($arg == 'TRUE') || ($arg == PHPExcel_Calculation::getTRUE())) {
- $arg = TRUE;
- } elseif (($arg == 'FALSE') || ($arg == PHPExcel_Calculation::getFALSE())) {
- $arg = FALSE;
- } else {
- return PHPExcel_Calculation_Functions::VALUE();
- }
- $returnValue = $returnValue || ($arg != 0);
- }
- }
-
- // Return
- if ($argCount < 0) {
- return PHPExcel_Calculation_Functions::VALUE();
- }
- return $returnValue;
- } // function LOGICAL_OR()
-
-
- /**
- * NOT
- *
- * Returns the boolean inverse of the argument.
- *
- * Excel Function:
- * =NOT(logical)
- *
- * The argument must evaluate to a logical value such as TRUE or FALSE
- *
- * Boolean arguments are treated as True or False as appropriate
- * Integer or floating point arguments are treated as True, except for 0 or 0.0 which are False
- * If any argument value is a string, or a Null, the function returns a #VALUE! error, unless the string holds
- * the value TRUE or FALSE, in which case it is evaluated as the corresponding boolean value
- *
- * @access public
- * @category Logical Functions
- * @param mixed $logical A value or expression that can be evaluated to TRUE or FALSE
- * @return boolean The boolean inverse of the argument.
- */
- public static function NOT($logical=FALSE) {
- $logical = PHPExcel_Calculation_Functions::flattenSingleValue($logical);
- if (is_string($logical)) {
- $logical = strtoupper($logical);
- if (($logical == 'TRUE') || ($logical == PHPExcel_Calculation::getTRUE())) {
- return FALSE;
- } elseif (($logical == 'FALSE') || ($logical == PHPExcel_Calculation::getFALSE())) {
- return TRUE;
- } else {
- return PHPExcel_Calculation_Functions::VALUE();
- }
- }
-
- return !$logical;
- } // function NOT()
-
- /**
- * STATEMENT_IF
- *
- * Returns one value if a condition you specify evaluates to TRUE and another value if it evaluates to FALSE.
- *
- * Excel Function:
- * =IF(condition[,returnIfTrue[,returnIfFalse]])
- *
- * Condition is any value or expression that can be evaluated to TRUE or FALSE.
- * For example, A10=100 is a logical expression; if the value in cell A10 is equal to 100,
- * the expression evaluates to TRUE. Otherwise, the expression evaluates to FALSE.
- * This argument can use any comparison calculation operator.
- * ReturnIfTrue is the value that is returned if condition evaluates to TRUE.
- * For example, if this argument is the text string "Within budget" and the condition argument evaluates to TRUE,
- * then the IF function returns the text "Within budget"
- * If condition is TRUE and ReturnIfTrue is blank, this argument returns 0 (zero). To display the word TRUE, use
- * the logical value TRUE for this argument.
- * ReturnIfTrue can be another formula.
- * ReturnIfFalse is the value that is returned if condition evaluates to FALSE.
- * For example, if this argument is the text string "Over budget" and the condition argument evaluates to FALSE,
- * then the IF function returns the text "Over budget".
- * If condition is FALSE and ReturnIfFalse is omitted, then the logical value FALSE is returned.
- * If condition is FALSE and ReturnIfFalse is blank, then the value 0 (zero) is returned.
- * ReturnIfFalse can be another formula.
- *
- * @access public
- * @category Logical Functions
- * @param mixed $condition Condition to evaluate
- * @param mixed $returnIfTrue Value to return when condition is true
- * @param mixed $returnIfFalse Optional value to return when condition is false
- * @return mixed The value of returnIfTrue or returnIfFalse determined by condition
- */
- public static function STATEMENT_IF($condition = TRUE, $returnIfTrue = 0, $returnIfFalse = FALSE) {
- $condition = (is_null($condition)) ? TRUE : (boolean) PHPExcel_Calculation_Functions::flattenSingleValue($condition);
- $returnIfTrue = (is_null($returnIfTrue)) ? 0 : PHPExcel_Calculation_Functions::flattenSingleValue($returnIfTrue);
- $returnIfFalse = (is_null($returnIfFalse)) ? FALSE : PHPExcel_Calculation_Functions::flattenSingleValue($returnIfFalse);
-
- return ($condition) ? $returnIfTrue : $returnIfFalse;
- } // function STATEMENT_IF()
-
-
- /**
- * IFERROR
- *
- * Excel Function:
- * =IFERROR(testValue,errorpart)
- *
- * @access public
- * @category Logical Functions
- * @param mixed $testValue Value to check, is also the value returned when no error
- * @param mixed $errorpart Value to return when testValue is an error condition
- * @return mixed The value of errorpart or testValue determined by error condition
- */
- public static function IFERROR($testValue = '', $errorpart = '') {
- $testValue = (is_null($testValue)) ? '' : PHPExcel_Calculation_Functions::flattenSingleValue($testValue);
- $errorpart = (is_null($errorpart)) ? '' : PHPExcel_Calculation_Functions::flattenSingleValue($errorpart);
-
- return self::STATEMENT_IF(PHPExcel_Calculation_Functions::IS_ERROR($testValue), $errorpart, $testValue);
- } // function IFERROR()
-
-} // class PHPExcel_Calculation_Logical
diff --git a/admin/survey/excel/PHPExcel/Calculation/LookupRef.php b/admin/survey/excel/PHPExcel/Calculation/LookupRef.php
deleted file mode 100644
index e0092e9..0000000
--- a/admin/survey/excel/PHPExcel/Calculation/LookupRef.php
+++ /dev/null
@@ -1,808 +0,0 @@
-<?php
-/**
- * PHPExcel
- *
- * Copyright (c) 2006 - 2012 PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel_Calculation
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-
-/** PHPExcel root directory */
-if (!defined('PHPEXCEL_ROOT')) {
- /**
- * @ignore
- */
- define('PHPEXCEL_ROOT', dirname(__FILE__) . '/../../');
- require(PHPEXCEL_ROOT . 'PHPExcel/Autoloader.php');
-}
-
-
-/**
- * PHPExcel_Calculation_LookupRef
- *
- * @category PHPExcel
- * @package PHPExcel_Calculation
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- */
-class PHPExcel_Calculation_LookupRef {
-
-
- /**
- * CELL_ADDRESS
- *
- * Creates a cell address as text, given specified row and column numbers.
- *
- * Excel Function:
- * =ADDRESS(row, column, [relativity], [referenceStyle], [sheetText])
- *
- * @param row Row number to use in the cell reference
- * @param column Column number to use in the cell reference
- * @param relativity Flag indicating the type of reference to return
- * 1 or omitted Absolute
- * 2 Absolute row; relative column
- * 3 Relative row; absolute column
- * 4 Relative
- * @param referenceStyle A logical value that specifies the A1 or R1C1 reference style.
- * TRUE or omitted CELL_ADDRESS returns an A1-style reference
- * FALSE CELL_ADDRESS returns an R1C1-style reference
- * @param sheetText Optional Name of worksheet to use
- * @return string
- */
- public static function CELL_ADDRESS($row, $column, $relativity=1, $referenceStyle=True, $sheetText='') {
- $row = PHPExcel_Calculation_Functions::flattenSingleValue($row);
- $column = PHPExcel_Calculation_Functions::flattenSingleValue($column);
- $relativity = PHPExcel_Calculation_Functions::flattenSingleValue($relativity);
- $sheetText = PHPExcel_Calculation_Functions::flattenSingleValue($sheetText);
-
- if (($row < 1) || ($column < 1)) {
- return PHPExcel_Calculation_Functions::VALUE();
- }
-
- if ($sheetText > '') {
- if (strpos($sheetText,' ') !== False) { $sheetText = "'".$sheetText."'"; }
- $sheetText .='!';
- }
- if ((!is_bool($referenceStyle)) || $referenceStyle) {
- $rowRelative = $columnRelative = '$';
- $column = PHPExcel_Cell::stringFromColumnIndex($column-1);
- if (($relativity == 2) || ($relativity == 4)) { $columnRelative = ''; }
- if (($relativity == 3) || ($relativity == 4)) { $rowRelative = ''; }
- return $sheetText.$columnRelative.$column.$rowRelative.$row;
- } else {
- if (($relativity == 2) || ($relativity == 4)) { $column = '['.$column.']'; }
- if (($relativity == 3) || ($relativity == 4)) { $row = '['.$row.']'; }
- return $sheetText.'R'.$row.'C'.$column;
- }
- } // function CELL_ADDRESS()
-
-
- /**
- * COLUMN
- *
- * Returns the column number of the given cell reference
- * If the cell reference is a range of cells, COLUMN returns the column numbers of each column in the reference as a horizontal array.
- * If cell reference is omitted, and the function is being called through the calculation engine, then it is assumed to be the
- * reference of the cell in which the COLUMN function appears; otherwise this function returns 0.
- *
- * Excel Function:
- * =COLUMN([cellAddress])
- *
- * @param cellAddress A reference to a range of cells for which you want the column numbers
- * @return integer or array of integer
- */
- public static function COLUMN($cellAddress=Null) {
- if (is_null($cellAddress) || trim($cellAddress) === '') { return 0; }
-
- if (is_array($cellAddress)) {
- foreach($cellAddress as $columnKey => $value) {
- $columnKey = preg_replace('/[^a-z]/i','',$columnKey);
- return (integer) PHPExcel_Cell::columnIndexFromString($columnKey);
- }
- } else {
- if (strpos($cellAddress,'!') !== false) {
- list($sheet,$cellAddress) = explode('!',$cellAddress);
- }
- if (strpos($cellAddress,':') !== false) {
- list($startAddress,$endAddress) = explode(':',$cellAddress);
- $startAddress = preg_replace('/[^a-z]/i','',$startAddress);
- $endAddress = preg_replace('/[^a-z]/i','',$endAddress);
- $returnValue = array();
- do {
- $returnValue[] = (integer) PHPExcel_Cell::columnIndexFromString($startAddress);
- } while ($startAddress++ != $endAddress);
- return $returnValue;
- } else {
- $cellAddress = preg_replace('/[^a-z]/i','',$cellAddress);
- return (integer) PHPExcel_Cell::columnIndexFromString($cellAddress);
- }
- }
- } // function COLUMN()
-
-
- /**
- * COLUMNS
- *
- * Returns the number of columns in an array or reference.
- *
- * Excel Function:
- * =COLUMNS(cellAddress)
- *
- * @param cellAddress An array or array formula, or a reference to a range of cells for which you want the number of columns
- * @return integer The number of columns in cellAddress
- */
- public static function COLUMNS($cellAddress=Null) {
- if (is_null($cellAddress) || $cellAddress === '') {
- return 1;
- } elseif (!is_array($cellAddress)) {
- return PHPExcel_Calculation_Functions::VALUE();
- }
-
- $x = array_keys($cellAddress);
- $x = array_shift($x);
- $isMatrix = (is_numeric($x));
- list($columns,$rows) = PHPExcel_Calculation::_getMatrixDimensions($cellAddress);
-
- if ($isMatrix) {
- return $rows;
- } else {
- return $columns;
- }
- } // function COLUMNS()
-
-
- /**
- * ROW
- *
- * Returns the row number of the given cell reference
- * If the cell reference is a range of cells, ROW returns the row numbers of each row in the reference as a vertical array.
- * If cell reference is omitted, and the function is being called through the calculation engine, then it is assumed to be the
- * reference of the cell in which the ROW function appears; otherwise this function returns 0.
- *
- * Excel Function:
- * =ROW([cellAddress])
- *
- * @param cellAddress A reference to a range of cells for which you want the row numbers
- * @return integer or array of integer
- */
- public static function ROW($cellAddress=Null) {
- if (is_null($cellAddress) || trim($cellAddress) === '') { return 0; }
-
- if (is_array($cellAddress)) {
- foreach($cellAddress as $columnKey => $rowValue) {
- foreach($rowValue as $rowKey => $cellValue) {
- return (integer) preg_replace('/[^0-9]/i','',$rowKey);
- }
- }
- } else {
- if (strpos($cellAddress,'!') !== false) {
- list($sheet,$cellAddress) = explode('!',$cellAddress);
- }
- if (strpos($cellAddress,':') !== false) {
- list($startAddress,$endAddress) = explode(':',$cellAddress);
- $startAddress = preg_replace('/[^0-9]/','',$startAddress);
- $endAddress = preg_replace('/[^0-9]/','',$endAddress);
- $returnValue = array();
- do {
- $returnValue[][] = (integer) $startAddress;
- } while ($startAddress++ != $endAddress);
- return $returnValue;
- } else {
- list($cellAddress) = explode(':',$cellAddress);
- return (integer) preg_replace('/[^0-9]/','',$cellAddress);
- }
- }
- } // function ROW()
-
-
- /**
- * ROWS
- *
- * Returns the number of rows in an array or reference.
- *
- * Excel Function:
- * =ROWS(cellAddress)
- *
- * @param cellAddress An array or array formula, or a reference to a range of cells for which you want the number of rows
- * @return integer The number of rows in cellAddress
- */
- public static function ROWS($cellAddress=Null) {
- if (is_null($cellAddress) || $cellAddress === '') {
- return 1;
- } elseif (!is_array($cellAddress)) {
- return PHPExcel_Calculation_Functions::VALUE();
- }
-
- $i = array_keys($cellAddress);
- $isMatrix = (is_numeric(array_shift($i)));
- list($columns,$rows) = PHPExcel_Calculation::_getMatrixDimensions($cellAddress);
-
- if ($isMatrix) {
- return $columns;
- } else {
- return $rows;
- }
- } // function ROWS()
-
-
- /**
- * HYPERLINK
- *
- * Excel Function:
- * =HYPERLINK(linkURL,displayName)
- *
- * @access public
- * @category Logical Functions
- * @param string $linkURL Value to check, is also the value returned when no error
- * @param string $displayName Value to return when testValue is an error condition
- * @return mixed The value of $displayName (or $linkURL if $displayName was blank)
- */
- public static function HYPERLINK($linkURL = '', $displayName = null, PHPExcel_Cell $pCell = null) {
- $args = func_get_args();
- $pCell = array_pop($args);
-
- $linkURL = (is_null($linkURL)) ? '' : PHPExcel_Calculation_Functions::flattenSingleValue($linkURL);
- $displayName = (is_null($displayName)) ? '' : PHPExcel_Calculation_Functions::flattenSingleValue($displayName);
-
- if ((!is_object($pCell)) || (trim($linkURL) == '')) {
- return PHPExcel_Calculation_Functions::REF();
- }
-
- if ((is_object($displayName)) || trim($displayName) == '') {
- $displayName = $linkURL;
- }
-
- $pCell->getHyperlink()->setUrl($linkURL);
-
- return $displayName;
- } // function HYPERLINK()
-
-
- /**
- * INDIRECT
- *
- * Returns the reference specified by a text string.
- * References are immediately evaluated to display their contents.
- *
- * Excel Function:
- * =INDIRECT(cellAddress)
- *
- * NOTE - INDIRECT() does not yet support the optional a1 parameter introduced in Excel 2010
- *
- * @param cellAddress An array or array formula, or a reference to a range of cells for which you want the number of rows
- * @return mixed The cells referenced by cellAddress
- *
- * @todo Support for the optional a1 parameter introduced in Excel 2010
- *
- */
- public static function INDIRECT($cellAddress=Null, PHPExcel_Cell $pCell = null) {
- $cellAddress = PHPExcel_Calculation_Functions::flattenSingleValue($cellAddress);
- if (is_null($cellAddress) || $cellAddress === '') {
- return PHPExcel_Calculation_Functions::REF();
- }
-
- $cellAddress1 = $cellAddress;
- $cellAddress2 = NULL;
- if (strpos($cellAddress,':') !== false) {
- list($cellAddress1,$cellAddress2) = explode(':',$cellAddress);
- }
-
- if ((!preg_match('/^'.PHPExcel_Calculation::CALCULATION_REGEXP_CELLREF.'$/i', $cellAddress1, $matches)) ||
- ((!is_null($cellAddress2)) && (!preg_match('/^'.PHPExcel_Calculation::CALCULATION_REGEXP_CELLREF.'$/i', $cellAddress2, $matches)))) {
-
- if (!preg_match('/^'.PHPExcel_Calculation::CALCULATION_REGEXP_NAMEDRANGE.'$/i', $cellAddress1, $matches)) {
- return PHPExcel_Calculation_Functions::REF();
- }
-
- if (strpos($cellAddress,'!') !== false) {
- list($sheetName,$cellAddress) = explode('!',$cellAddress);
- $pSheet = $pCell->getParent()->getParent()->getSheetByName($sheetName);
- } else {
- $pSheet = $pCell->getParent();
- }
-
- return PHPExcel_Calculation::getInstance()->extractNamedRange($cellAddress, $pSheet, False);
- }
-
- if (strpos($cellAddress,'!') !== false) {
- list($sheetName,$cellAddress) = explode('!',$cellAddress);
- $pSheet = $pCell->getParent()->getParent()->getSheetByName($sheetName);
- } else {
- $pSheet = $pCell->getParent();
- }
-
- return PHPExcel_Calculation::getInstance()->extractCellRange($cellAddress, $pSheet, False);
- } // function INDIRECT()
-
-
- /**
- * OFFSET
- *
- * Returns a reference to a range that is a specified number of rows and columns from a cell or range of cells.
- * The reference that is returned can be a single cell or a range of cells. You can specify the number of rows and
- * the number of columns to be returned.
- *
- * Excel Function:
- * =OFFSET(cellAddress, rows, cols, [height], [width])
- *
- * @param cellAddress The reference from which you want to base the offset. Reference must refer to a cell or
- * range of adjacent cells; otherwise, OFFSET returns the #VALUE! error value.
- * @param rows The number of rows, up or down, that you want the upper-left cell to refer to.
- * Using 5 as the rows argument specifies that the upper-left cell in the reference is
- * five rows below reference. Rows can be positive (which means below the starting reference)
- * or negative (which means above the starting reference).
- * @param cols The number of columns, to the left or right, that you want the upper-left cell of the result
- * to refer to. Using 5 as the cols argument specifies that the upper-left cell in the
- * reference is five columns to the right of reference. Cols can be positive (which means
- * to the right of the starting reference) or negative (which means to the left of the
- * starting reference).
- * @param height The height, in number of rows, that you want the returned reference to be. Height must be a positive number.
- * @param width The width, in number of columns, that you want the returned reference to be. Width must be a positive number.
- * @return string A reference to a cell or range of cells
- */
- public static function OFFSET($cellAddress=Null,$rows=0,$columns=0,$height=null,$width=null) {
- $rows = PHPExcel_Calculation_Functions::flattenSingleValue($rows);
- $columns = PHPExcel_Calculation_Functions::flattenSingleValue($columns);
- $height = PHPExcel_Calculation_Functions::flattenSingleValue($height);
- $width = PHPExcel_Calculation_Functions::flattenSingleValue($width);
- if ($cellAddress == Null) {
- return 0;
- }
-
- $args = func_get_args();
- $pCell = array_pop($args);
- if (!is_object($pCell)) {
- return PHPExcel_Calculation_Functions::REF();
- }
-
- $sheetName = null;
- if (strpos($cellAddress,"!")) {
- list($sheetName,$cellAddress) = explode("!",$cellAddress);
- }
- if (strpos($cellAddress,":")) {
- list($startCell,$endCell) = explode(":",$cellAddress);
- } else {
- $startCell = $endCell = $cellAddress;
- }
- list($startCellColumn,$startCellRow) = PHPExcel_Cell::coordinateFromString($startCell);
- list($endCellColumn,$endCellRow) = PHPExcel_Cell::coordinateFromString($endCell);
-
- $startCellRow += $rows;
- $startCellColumn = PHPExcel_Cell::columnIndexFromString($startCellColumn) - 1;
- $startCellColumn += $columns;
-
- if (($startCellRow <= 0) || ($startCellColumn < 0)) {
- return PHPExcel_Calculation_Functions::REF();
- }
- $endCellColumn = PHPExcel_Cell::columnIndexFromString($endCellColumn) - 1;
- if (($width != null) && (!is_object($width))) {
- $endCellColumn = $startCellColumn + $width - 1;
- } else {
- $endCellColumn += $columns;
- }
- $startCellColumn = PHPExcel_Cell::stringFromColumnIndex($startCellColumn);
-
- if (($height != null) && (!is_object($height))) {
- $endCellRow = $startCellRow + $height - 1;
- } else {
- $endCellRow += $rows;
- }
-
- if (($endCellRow <= 0) || ($endCellColumn < 0)) {
- return PHPExcel_Calculation_Functions::REF();
- }
- $endCellColumn = PHPExcel_Cell::stringFromColumnIndex($endCellColumn);
-
- $cellAddress = $startCellColumn.$startCellRow;
- if (($startCellColumn != $endCellColumn) || ($startCellRow != $endCellRow)) {
- $cellAddress .= ':'.$endCellColumn.$endCellRow;
- }
-
- if ($sheetName !== null) {
- $pSheet = $pCell->getParent()->getParent()->getSheetByName($sheetName);
- } else {
- $pSheet = $pCell->getParent();
- }
-
- return PHPExcel_Calculation::getInstance()->extractCellRange($cellAddress, $pSheet, False);
- } // function OFFSET()
-
-
- /**
- * CHOOSE
- *
- * Uses lookup_value to return a value from the list of value arguments.
- * Use CHOOSE to select one of up to 254 values based on the lookup_value.
- *
- * Excel Function:
- * =CHOOSE(index_num, value1, [value2], ...)
- *
- * @param index_num Specifies which value argument is selected.
- * Index_num must be a number between 1 and 254, or a formula or reference to a cell containing a number
- * between 1 and 254.
- * @param value1... Value1 is required, subsequent values are optional.
- * Between 1 to 254 value arguments from which CHOOSE selects a value or an action to perform based on
- * index_num. The arguments can be numbers, cell references, defined names, formulas, functions, or
- * text.
- * @return mixed The selected value
- */
- public static function CHOOSE() {
- $chooseArgs = func_get_args();
- $chosenEntry = PHPExcel_Calculation_Functions::flattenArray(array_shift($chooseArgs));
- $entryCount = count($chooseArgs) - 1;
-
- if(is_array($chosenEntry)) {
- $chosenEntry = array_shift($chosenEntry);
- }
- if ((is_numeric($chosenEntry)) && (!is_bool($chosenEntry))) {
- --$chosenEntry;
- } else {
- return PHPExcel_Calculation_Functions::VALUE();
- }
- $chosenEntry = floor($chosenEntry);
- if (($chosenEntry <= 0) || ($chosenEntry > $entryCount)) {
- return PHPExcel_Calculation_Functions::VALUE();
- }
-
- if (is_array($chooseArgs[$chosenEntry])) {
- return PHPExcel_Calculation_Functions::flattenArray($chooseArgs[$chosenEntry]);
- } else {
- return $chooseArgs[$chosenEntry];
- }
- } // function CHOOSE()
-
-
- /**
- * MATCH
- *
- * The MATCH function searches for a specified item in a range of cells
- *
- * Excel Function:
- * =MATCH(lookup_value, lookup_array, [match_type])
- *
- * @param lookup_value The value that you want to match in lookup_array
- * @param lookup_array The range of cells being searched
- * @param match_type The number -1, 0, or 1. -1 means above, 0 means exact match, 1 means below. If match_type is 1 or -1, the list has to be ordered.
- * @return integer The relative position of the found item
- */
- public static function MATCH($lookup_value, $lookup_array, $match_type=1) {
- $lookup_array = PHPExcel_Calculation_Functions::flattenArray($lookup_array);
- $lookup_value = PHPExcel_Calculation_Functions::flattenSingleValue($lookup_value);
- $match_type = (is_null($match_type)) ? 1 : (int) PHPExcel_Calculation_Functions::flattenSingleValue($match_type);
- // MATCH is not case sensitive
- $lookup_value = strtolower($lookup_value);
-
- // lookup_value type has to be number, text, or logical values
- if ((!is_numeric($lookup_value)) && (!is_string($lookup_value)) && (!is_bool($lookup_value))) {
- return PHPExcel_Calculation_Functions::NA();
- }
-
- // match_type is 0, 1 or -1
- if (($match_type !== 0) && ($match_type !== -1) && ($match_type !== 1)) {
- return PHPExcel_Calculation_Functions::NA();
- }
-
- // lookup_array should not be empty
- $lookupArraySize = count($lookup_array);
- if ($lookupArraySize <= 0) {
- return PHPExcel_Calculation_Functions::NA();
- }
-
- // lookup_array should contain only number, text, or logical values, or empty (null) cells
- foreach($lookup_array as $i => $lookupArrayValue) {
- // check the type of the value
- if ((!is_numeric($lookupArrayValue)) && (!is_string($lookupArrayValue)) &&
- (!is_bool($lookupArrayValue)) && (!is_null($lookupArrayValue))) {
- return PHPExcel_Calculation_Functions::NA();
- }
- // convert strings to lowercase for case-insensitive testing
- if (is_string($lookupArrayValue)) {
- $lookup_array[$i] = strtolower($lookupArrayValue);
- }
- if ((is_null($lookupArrayValue)) && (($match_type == 1) || ($match_type == -1))) {
- $lookup_array = array_slice($lookup_array,0,$i-1);
- }
- }
-
- // if match_type is 1 or -1, the list has to be ordered
- if ($match_type == 1) {
- asort($lookup_array);
- $keySet = array_keys($lookup_array);
- } elseif($match_type == -1) {
- arsort($lookup_array);
- $keySet = array_keys($lookup_array);
- }
-
- // **
- // find the match
- // **
- // loop on the cells
-// var_dump($lookup_array);
-// echo '<br />';
- foreach($lookup_array as $i => $lookupArrayValue) {
- if (($match_type == 0) && ($lookupArrayValue == $lookup_value)) {
- // exact match
- return ++$i;
- } elseif (($match_type == -1) && ($lookupArrayValue <= $lookup_value)) {
-// echo '$i = '.$i.' => ';
-// var_dump($lookupArrayValue);
-// echo '<br />';
-// echo 'Keyset = ';
-// var_dump($keySet);
-// echo '<br />';
- $i = array_search($i,$keySet);
-// echo '$i='.$i.'<br />';
- // if match_type is -1 <=> find the smallest value that is greater than or equal to lookup_value
- if ($i < 1){
- // 1st cell was allready smaller than the lookup_value
- break;
- } else {
- // the previous cell was the match
- return $keySet[$i-1]+1;
- }
- } elseif (($match_type == 1) && ($lookupArrayValue >= $lookup_value)) {
-// echo '$i = '.$i.' => ';
-// var_dump($lookupArrayValue);
-// echo '<br />';
-// echo 'Keyset = ';
-// var_dump($keySet);
-// echo '<br />';
- $i = array_search($i,$keySet);
-// echo '$i='.$i.'<br />';
- // if match_type is 1 <=> find the largest value that is less than or equal to lookup_value
- if ($i < 1){
- // 1st cell was allready bigger than the lookup_value
- break;
- } else {
- // the previous cell was the match
- return $keySet[$i-1]+1;
- }
- }
- }
-
- // unsuccessful in finding a match, return #N/A error value
- return PHPExcel_Calculation_Functions::NA();
- } // function MATCH()
-
-
- /**
- * INDEX
- *
- * Uses an index to choose a value from a reference or array
- *
- * Excel Function:
- * =INDEX(range_array, row_num, [column_num])
- *
- * @param range_array A range of cells or an array constant
- * @param row_num The row in array from which to return a value. If row_num is omitted, column_num is required.
- * @param column_num The column in array from which to return a value. If column_num is omitted, row_num is required.
- * @return mixed the value of a specified cell or array of cells
- */
- public static function INDEX($arrayValues,$rowNum = 0,$columnNum = 0) {
-
- if (($rowNum < 0) || ($columnNum < 0)) {
- return PHPExcel_Calculation_Functions::VALUE();
- }
-
- if (!is_array($arrayValues)) {
- return PHPExcel_Calculation_Functions::REF();
- }
-
- $rowKeys = array_keys($arrayValues);
- $columnKeys = @array_keys($arrayValues[$rowKeys[0]]);
-
- if ($columnNum > count($columnKeys)) {
- return PHPExcel_Calculation_Functions::VALUE();
- } elseif ($columnNum == 0) {
- if ($rowNum == 0) {
- return $arrayValues;
- }
- $rowNum = $rowKeys[--$rowNum];
- $returnArray = array();
- foreach($arrayValues as $arrayColumn) {
- if (is_array($arrayColumn)) {
- if (isset($arrayColumn[$rowNum])) {
- $returnArray[] = $arrayColumn[$rowNum];
- } else {
- return $arrayValues[$rowNum];
- }
- } else {
- return $arrayValues[$rowNum];
- }
- }
- return $returnArray;
- }
- $columnNum = $columnKeys[--$columnNum];
- if ($rowNum > count($rowKeys)) {
- return PHPExcel_Calculation_Functions::VALUE();
- } elseif ($rowNum == 0) {
- return $arrayValues[$columnNum];
- }
- $rowNum = $rowKeys[--$rowNum];
-
- return $arrayValues[$rowNum][$columnNum];
- } // function INDEX()
-
-
- /**
- * TRANSPOSE
- *
- * @param array $matrixData A matrix of values
- * @return array
- *
- * Unlike the Excel TRANSPOSE function, which will only work on a single row or column, this function will transpose a full matrix.
- */
- public static function TRANSPOSE($matrixData) {
- $returnMatrix = array();
- if (!is_array($matrixData)) { $matrixData = array(array($matrixData)); }
-
- $column = 0;
- foreach($matrixData as $matrixRow) {
- $row = 0;
- foreach($matrixRow as $matrixCell) {
- $returnMatrix[$row][$column] = $matrixCell;
- ++$row;
- }
- ++$column;
- }
- return $returnMatrix;
- } // function TRANSPOSE()
-
-
- private static function _vlookupSort($a,$b) {
- $f = array_keys($a);
- $firstColumn = array_shift($f);
- if (strtolower($a[$firstColumn]) == strtolower($b[$firstColumn])) {
- return 0;
- }
- return (strtolower($a[$firstColumn]) < strtolower($b[$firstColumn])) ? -1 : 1;
- } // function _vlookupSort()
-
-
- /**
- * VLOOKUP
- * The VLOOKUP function searches for value in the left-most column of lookup_array and returns the value in the same row based on the index_number.
- * @param lookup_value The value that you want to match in lookup_array
- * @param lookup_array The range of cells being searched
- * @param index_number The column number in table_array from which the matching value must be returned. The first column is 1.
- * @param not_exact_match Determines if you are looking for an exact match based on lookup_value.
- * @return mixed The value of the found cell
- */
- public static function VLOOKUP($lookup_value, $lookup_array, $index_number, $not_exact_match=true) {
- $lookup_value = PHPExcel_Calculation_Functions::flattenSingleValue($lookup_value);
- $index_number = PHPExcel_Calculation_Functions::flattenSingleValue($index_number);
- $not_exact_match = PHPExcel_Calculation_Functions::flattenSingleValue($not_exact_match);
-
- // index_number must be greater than or equal to 1
- if ($index_number < 1) {
- return PHPExcel_Calculation_Functions::VALUE();
- }
-
- // index_number must be less than or equal to the number of columns in lookup_array
- if ((!is_array($lookup_array)) || (empty($lookup_array))) {
- return PHPExcel_Calculation_Functions::REF();
- } else {
- $f = array_keys($lookup_array);
- $firstRow = array_pop($f);
- if ((!is_array($lookup_array[$firstRow])) || ($index_number > count($lookup_array[$firstRow]))) {
- return PHPExcel_Calculation_Functions::REF();
- } else {
- $columnKeys = array_keys($lookup_array[$firstRow]);
- $returnColumn = $columnKeys[--$index_number];
- $firstColumn = array_shift($columnKeys);
- }
- }
-
- if (!$not_exact_match) {
- uasort($lookup_array,array('self','_vlookupSort'));
- }
-
- $rowNumber = $rowValue = False;
- foreach($lookup_array as $rowKey => $rowData) {
- if (strtolower($rowData[$firstColumn]) > strtolower($lookup_value)) {
- break;
- }
- $rowNumber = $rowKey;
- $rowValue = $rowData[$firstColumn];
- }
-
- if ($rowNumber !== false) {
- if ((!$not_exact_match) && ($rowValue != $lookup_value)) {
- // if an exact match is required, we have what we need to return an appropriate response
- return PHPExcel_Calculation_Functions::NA();
- } else {
- // otherwise return the appropriate value
- return $lookup_array[$rowNumber][$returnColumn];
- }
- }
-
- return PHPExcel_Calculation_Functions::NA();
- } // function VLOOKUP()
-
-
- /**
- * LOOKUP
- * The LOOKUP function searches for value either from a one-row or one-column range or from an array.
- * @param lookup_value The value that you want to match in lookup_array
- * @param lookup_vector The range of cells being searched
- * @param result_vector The column from which the matching value must be returned
- * @return mixed The value of the found cell
- */
- public static function LOOKUP($lookup_value, $lookup_vector, $result_vector=null) {
- $lookup_value = PHPExcel_Calculation_Functions::flattenSingleValue($lookup_value);
-
- if (!is_array($lookup_vector)) {
- return PHPExcel_Calculation_Functions::NA();
- }
- $lookupRows = count($lookup_vector);
- $l = array_keys($lookup_vector);
- $l = array_shift($l);
- $lookupColumns = count($lookup_vector[$l]);
- if ((($lookupRows == 1) && ($lookupColumns > 1)) || (($lookupRows == 2) && ($lookupColumns != 2))) {
- $lookup_vector = self::TRANSPOSE($lookup_vector);
- $lookupRows = count($lookup_vector);
- $l = array_keys($lookup_vector);
- $lookupColumns = count($lookup_vector[array_shift($l)]);
- }
-
- if (is_null($result_vector)) {
- $result_vector = $lookup_vector;
- }
- $resultRows = count($result_vector);
- $l = array_keys($result_vector);
- $l = array_shift($l);
- $resultColumns = count($result_vector[$l]);
- if ((($resultRows == 1) && ($resultColumns > 1)) || (($resultRows == 2) && ($resultColumns != 2))) {
- $result_vector = self::TRANSPOSE($result_vector);
- $resultRows = count($result_vector);
- $r = array_keys($result_vector);
- $resultColumns = count($result_vector[array_shift($r)]);
- }
-
- if ($lookupRows == 2) {
- $result_vector = array_pop($lookup_vector);
- $lookup_vector = array_shift($lookup_vector);
- }
- if ($lookupColumns != 2) {
- foreach($lookup_vector as &$value) {
- if (is_array($value)) {
- $k = array_keys($value);
- $key1 = $key2 = array_shift($k);
- $key2++;
- $dataValue1 = $value[$key1];
- } else {
- $key1 = 0;
- $key2 = 1;
- $dataValue1 = $value;
- }
- $dataValue2 = array_shift($result_vector);
- if (is_array($dataValue2)) {
- $dataValue2 = array_shift($dataValue2);
- }
- $value = array($key1 => $dataValue1, $key2 => $dataValue2);
- }
- unset($value);
- }
-
- return self::VLOOKUP($lookup_value,$lookup_vector,2);
- } // function LOOKUP()
-
-} // class PHPExcel_Calculation_LookupRef
diff --git a/admin/survey/excel/PHPExcel/Calculation/MathTrig.php b/admin/survey/excel/PHPExcel/Calculation/MathTrig.php
deleted file mode 100644
index 614e4f1..0000000
--- a/admin/survey/excel/PHPExcel/Calculation/MathTrig.php
+++ /dev/null
@@ -1,1366 +0,0 @@
-<?php
-/**
- * PHPExcel
- *
- * Copyright (c) 2006 - 2012 PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel_Calculation
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-
-/** PHPExcel root directory */
-if (!defined('PHPEXCEL_ROOT')) {
- /**
- * @ignore
- */
- define('PHPEXCEL_ROOT', dirname(__FILE__) . '/../../');
- require(PHPEXCEL_ROOT . 'PHPExcel/Autoloader.php');
-}
-
-
-/**
- * PHPExcel_Calculation_MathTrig
- *
- * @category PHPExcel
- * @package PHPExcel_Calculation
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- */
-class PHPExcel_Calculation_MathTrig {
-
- //
- // Private method to return an array of the factors of the input value
- //
- private static function _factors($value) {
- $startVal = floor(sqrt($value));
-
- $factorArray = array();
- for ($i = $startVal; $i > 1; --$i) {
- if (($value % $i) == 0) {
- $factorArray = array_merge($factorArray,self::_factors($value / $i));
- $factorArray = array_merge($factorArray,self::_factors($i));
- if ($i <= sqrt($value)) {
- break;
- }
- }
- }
- if (!empty($factorArray)) {
- rsort($factorArray);
- return $factorArray;
- } else {
- return array((integer) $value);
- }
- } // function _factors()
-
-
- private static function _romanCut($num, $n) {
- return ($num - ($num % $n ) ) / $n;
- } // function _romanCut()
-
-
- /**
- * ATAN2
- *
- * This function calculates the arc tangent of the two variables x and y. It is similar to
- * calculating the arc tangent of y x, except that the signs of both arguments are used
- * to determine the quadrant of the result.
- * The arctangent is the angle from the x-axis to a line containing the origin (0, 0) and a
- * point with coordinates (xCoordinate, yCoordinate). The angle is given in radians between
- * -pi and pi, excluding -pi.
- *
- * Note that the Excel ATAN2() function accepts its arguments in the reverse order to the standard
- * PHP atan2() function, so we need to reverse them here before calling the PHP atan() function.
- *
- * Excel Function:
- * ATAN2(xCoordinate,yCoordinate)
- *
- * @access public
- * @category Mathematical and Trigonometric Functions
- * @param float $xCoordinate The x-coordinate of the point.
- * @param float $yCoordinate The y-coordinate of the point.
- * @return float The inverse tangent of the specified x- and y-coordinates.
- */
- public static function ATAN2($xCoordinate = NULL, $yCoordinate = NULL) {
- $xCoordinate = PHPExcel_Calculation_Functions::flattenSingleValue($xCoordinate);
- $yCoordinate = PHPExcel_Calculation_Functions::flattenSingleValue($yCoordinate);
-
- $xCoordinate = ($xCoordinate !== NULL) ? $xCoordinate : 0.0;
- $yCoordinate = ($yCoordinate !== NULL) ? $yCoordinate : 0.0;
-
- if (((is_numeric($xCoordinate)) || (is_bool($xCoordinate))) &&
- ((is_numeric($yCoordinate))) || (is_bool($yCoordinate))) {
- $xCoordinate = (float) $xCoordinate;
- $yCoordinate = (float) $yCoordinate;
-
- if (($xCoordinate == 0) && ($yCoordinate == 0)) {
- return PHPExcel_Calculation_Functions::DIV0();
- }
-
- return atan2($yCoordinate, $xCoordinate);
- }
- return PHPExcel_Calculation_Functions::VALUE();
- } // function ATAN2()
-
-
- /**
- * CEILING
- *
- * Returns number rounded up, away from zero, to the nearest multiple of significance.
- * For example, if you want to avoid using pennies in your prices and your product is
- * priced at $4.42, use the formula =CEILING(4.42,0.05) to round prices up to the
- * nearest nickel.
- *
- * Excel Function:
- * CEILING(number[,significance])
- *
- * @access public
- * @category Mathematical and Trigonometric Functions
- * @param float $number The number you want to round.
- * @param float $significance The multiple to which you want to round.
- * @return float Rounded Number
- */
- public static function CEILING($number, $significance = NULL) {
- $number = PHPExcel_Calculation_Functions::flattenSingleValue($number);
- $significance = PHPExcel_Calculation_Functions::flattenSingleValue($significance);
-
- if ((is_null($significance)) &&
- (PHPExcel_Calculation_Functions::getCompatibilityMode() == PHPExcel_Calculation_Functions::COMPATIBILITY_GNUMERIC)) {
- $significance = $number/abs($number);
- }
-
- if ((is_numeric($number)) && (is_numeric($significance))) {
- if ($significance == 0.0) {
- return 0.0;
- } elseif (self::SIGN($number) == self::SIGN($significance)) {
- return ceil($number / $significance) * $significance;
- } else {
- return PHPExcel_Calculation_Functions::NaN();
- }
- }
- return PHPExcel_Calculation_Functions::VALUE();
- } // function CEILING()
-
-
- /**
- * COMBIN
- *
- * Returns the number of combinations for a given number of items. Use COMBIN to
- * determine the total possible number of groups for a given number of items.
- *
- * Excel Function:
- * COMBIN(numObjs,numInSet)
- *
- * @access public
- * @category Mathematical and Trigonometric Functions
- * @param int $numObjs Number of different objects
- * @param int $numInSet Number of objects in each combination
- * @return int Number of combinations
- */
- public static function COMBIN($numObjs, $numInSet) {
- $numObjs = PHPExcel_Calculation_Functions::flattenSingleValue($numObjs);
- $numInSet = PHPExcel_Calculation_Functions::flattenSingleValue($numInSet);
-
- if ((is_numeric($numObjs)) && (is_numeric($numInSet))) {
- if ($numObjs < $numInSet) {
- return PHPExcel_Calculation_Functions::NaN();
- } elseif ($numInSet < 0) {
- return PHPExcel_Calculation_Functions::NaN();
- }
- return round(self::FACT($numObjs) / self::FACT($numObjs - $numInSet)) / self::FACT($numInSet);
- }
- return PHPExcel_Calculation_Functions::VALUE();
- } // function COMBIN()
-
-
- /**
- * EVEN
- *
- * Returns number rounded up to the nearest even integer.
- * You can use this function for processing items that come in twos. For example,
- * a packing crate accepts rows of one or two items. The crate is full when
- * the number of items, rounded up to the nearest two, matches the crate's
- * capacity.
- *
- * Excel Function:
- * EVEN(number)
- *
- * @access public
- * @category Mathematical and Trigonometric Functions
- * @param float $number Number to round
- * @return int Rounded Number
- */
- public static function EVEN($number) {
- $number = PHPExcel_Calculation_Functions::flattenSingleValue($number);
-
- if (is_null($number)) {
- return 0;
- } elseif (is_bool($number)) {
- $number = (int) $number;
- }
-
- if (is_numeric($number)) {
- $significance = 2 * self::SIGN($number);
- return (int) self::CEILING($number,$significance);
- }
- return PHPExcel_Calculation_Functions::VALUE();
- } // function EVEN()
-
-
- /**
- * FACT
- *
- * Returns the factorial of a number.
- * The factorial of a number is equal to 1*2*3*...* number.
- *
- * Excel Function:
- * FACT(factVal)
- *
- * @access public
- * @category Mathematical and Trigonometric Functions
- * @param float $factVal Factorial Value
- * @return int Factorial
- */
- public static function FACT($factVal) {
- $factVal = PHPExcel_Calculation_Functions::flattenSingleValue($factVal);
-
- if (is_numeric($factVal)) {
- if ($factVal < 0) {
- return PHPExcel_Calculation_Functions::NaN();
- }
- $factLoop = floor($factVal);
- if (PHPExcel_Calculation_Functions::getCompatibilityMode() == PHPExcel_Calculation_Functions::COMPATIBILITY_GNUMERIC) {
- if ($factVal > $factLoop) {
- return PHPExcel_Calculation_Functions::NaN();
- }
- }
-
- $factorial = 1;
- while ($factLoop > 1) {
- $factorial *= $factLoop--;
- }
- return $factorial ;
- }
- return PHPExcel_Calculation_Functions::VALUE();
- } // function FACT()
-
-
- /**
- * FACTDOUBLE
- *
- * Returns the double factorial of a number.
- *
- * Excel Function:
- * FACTDOUBLE(factVal)
- *
- * @access public
- * @category Mathematical and Trigonometric Functions
- * @param float $factVal Factorial Value
- * @return int Double Factorial
- */
- public static function FACTDOUBLE($factVal) {
- $factLoop = PHPExcel_Calculation_Functions::flattenSingleValue($factVal);
-
- if (is_numeric($factLoop)) {
- $factLoop = floor($factLoop);
- if ($factVal < 0) {
- return PHPExcel_Calculation_Functions::NaN();
- }
- $factorial = 1;
- while ($factLoop > 1) {
- $factorial *= $factLoop--;
- --$factLoop;
- }
- return $factorial ;
- }
- return PHPExcel_Calculation_Functions::VALUE();
- } // function FACTDOUBLE()
-
-
- /**
- * FLOOR
- *
- * Rounds number down, toward zero, to the nearest multiple of significance.
- *
- * Excel Function:
- * FLOOR(number[,significance])
- *
- * @access public
- * @category Mathematical and Trigonometric Functions
- * @param float $number Number to round
- * @param float $significance Significance
- * @return float Rounded Number
- */
- public static function FLOOR($number, $significance = NULL) {
- $number = PHPExcel_Calculation_Functions::flattenSingleValue($number);
- $significance = PHPExcel_Calculation_Functions::flattenSingleValue($significance);
-
- if ((is_null($significance)) && (PHPExcel_Calculation_Functions::getCompatibilityMode() == PHPExcel_Calculation_Functions::COMPATIBILITY_GNUMERIC)) {
- $significance = $number/abs($number);
- }
-
- if ((is_numeric($number)) && (is_numeric($significance))) {
- if ((float) $significance == 0.0) {
- return PHPExcel_Calculation_Functions::DIV0();
- }
- if (self::SIGN($number) == self::SIGN($significance)) {
- return floor($number / $significance) * $significance;
- } else {
- return PHPExcel_Calculation_Functions::NaN();
- }
- }
- return PHPExcel_Calculation_Functions::VALUE();
- } // function FLOOR()
-
-
- /**
- * GCD
- *
- * Returns the greatest common divisor of a series of numbers.
- * The greatest common divisor is the largest integer that divides both
- * number1 and number2 without a remainder.
- *
- * Excel Function:
- * GCD(number1[,number2[, ...]])
- *
- * @access public
- * @category Mathematical and Trigonometric Functions
- * @param mixed $arg,... Data values
- * @return integer Greatest Common Divisor
- */
- public static function GCD() {
- $returnValue = 1;
- $allValuesFactors = array();
- // Loop through arguments
- foreach(PHPExcel_Calculation_Functions::flattenArray(func_get_args()) as $value) {
- if (!is_numeric($value)) {
- return PHPExcel_Calculation_Functions::VALUE();
- } elseif ($value == 0) {
- continue;
- } elseif($value < 0) {
- return PHPExcel_Calculation_Functions::NaN();
- }
- $myFactors = self::_factors($value);
- $myCountedFactors = array_count_values($myFactors);
- $allValuesFactors[] = $myCountedFactors;
- }
- $allValuesCount = count($allValuesFactors);
- if ($allValuesCount == 0) {
- return 0;
- }
-
- $mergedArray = $allValuesFactors[0];
- for ($i=1;$i < $allValuesCount; ++$i) {
- $mergedArray = array_intersect_key($mergedArray,$allValuesFactors[$i]);
- }
- $mergedArrayValues = count($mergedArray);
- if ($mergedArrayValues == 0) {
- return $returnValue;
- } elseif ($mergedArrayValues > 1) {
- foreach($mergedArray as $mergedKey => $mergedValue) {
- foreach($allValuesFactors as $highestPowerTest) {
- foreach($highestPowerTest as $testKey => $testValue) {
- if (($testKey == $mergedKey) && ($testValue < $mergedValue)) {
- $mergedArray[$mergedKey] = $testValue;
- $mergedValue = $testValue;
- }
- }
- }
- }
-
- $returnValue = 1;
- foreach($mergedArray as $key => $value) {
- $returnValue *= pow($key,$value);
- }
- return $returnValue;
- } else {
- $keys = array_keys($mergedArray);
- $key = $keys[0];
- $value = $mergedArray[$key];
- foreach($allValuesFactors as $testValue) {
- foreach($testValue as $mergedKey => $mergedValue) {
- if (($mergedKey == $key) && ($mergedValue < $value)) {
- $value = $mergedValue;
- }
- }
- }
- return pow($key,$value);
- }
- } // function GCD()
-
-
- /**
- * INT
- *
- * Casts a floating point value to an integer
- *
- * Excel Function:
- * INT(number)
- *
- * @access public
- * @category Mathematical and Trigonometric Functions
- * @param float $number Number to cast to an integer
- * @return integer Integer value
- */
- public static function INT($number) {
- $number = PHPExcel_Calculation_Functions::flattenSingleValue($number);
-
- if (is_null($number)) {
- return 0;
- } elseif (is_bool($number)) {
- return (int) $number;
- }
- if (is_numeric($number)) {
- return (int) floor($number);
- }
- return PHPExcel_Calculation_Functions::VALUE();
- } // function INT()
-
-
- /**
- * LCM
- *
- * Returns the lowest common multiplier of a series of numbers
- * The least common multiple is the smallest positive integer that is a multiple
- * of all integer arguments number1, number2, and so on. Use LCM to add fractions
- * with different denominators.
- *
- * Excel Function:
- * LCM(number1[,number2[, ...]])
- *
- * @access public
- * @category Mathematical and Trigonometric Functions
- * @param mixed $arg,... Data values
- * @return int Lowest Common Multiplier
- */
- public static function LCM() {
- $returnValue = 1;
- $allPoweredFactors = array();
- // Loop through arguments
- foreach(PHPExcel_Calculation_Functions::flattenArray(func_get_args()) as $value) {
- if (!is_numeric($value)) {
- return PHPExcel_Calculation_Functions::VALUE();
- }
- if ($value == 0) {
- return 0;
- } elseif ($value < 0) {
- return PHPExcel_Calculation_Functions::NaN();
- }
- $myFactors = self::_factors(floor($value));
- $myCountedFactors = array_count_values($myFactors);
- $myPoweredFactors = array();
- foreach($myCountedFactors as $myCountedFactor => $myCountedPower) {
- $myPoweredFactors[$myCountedFactor] = pow($myCountedFactor,$myCountedPower);
- }
- foreach($myPoweredFactors as $myPoweredValue => $myPoweredFactor) {
- if (array_key_exists($myPoweredValue,$allPoweredFactors)) {
- if ($allPoweredFactors[$myPoweredValue] < $myPoweredFactor) {
- $allPoweredFactors[$myPoweredValue] = $myPoweredFactor;
- }
- } else {
- $allPoweredFactors[$myPoweredValue] = $myPoweredFactor;
- }
- }
- }
- foreach($allPoweredFactors as $allPoweredFactor) {
- $returnValue *= (integer) $allPoweredFactor;
- }
- return $returnValue;
- } // function LCM()
-
-
- /**
- * LOG_BASE
- *
- * Returns the logarithm of a number to a specified base. The default base is 10.
- *
- * Excel Function:
- * LOG(number[,base])
- *
- * @access public
- * @category Mathematical and Trigonometric Functions
- * @param float $value The positive real number for which you want the logarithm
- * @param float $base The base of the logarithm. If base is omitted, it is assumed to be 10.
- * @return float
- */
- public static function LOG_BASE($number = NULL, $base = 10) {
- $number = PHPExcel_Calculation_Functions::flattenSingleValue($number);
- $base = (is_null($base)) ? 10 : (float) PHPExcel_Calculation_Functions::flattenSingleValue($base);
-
- if ((!is_numeric($base)) || (!is_numeric($number)))
- return PHPExcel_Calculation_Functions::VALUE();
- if (($base <= 0) || ($number <= 0))
- return PHPExcel_Calculation_Functions::NaN();
- return log($number, $base);
- } // function LOG_BASE()
-
-
- /**
- * MDETERM
- *
- * Returns the matrix determinant of an array.
- *
- * Excel Function:
- * MDETERM(array)
- *
- * @access public
- * @category Mathematical and Trigonometric Functions
- * @param array $matrixValues A matrix of values
- * @return float
- */
- public static function MDETERM($matrixValues) {
- $matrixData = array();
- if (!is_array($matrixValues)) { $matrixValues = array(array($matrixValues)); }
-
- $row = $maxColumn = 0;
- foreach($matrixValues as $matrixRow) {
- if (!is_array($matrixRow)) { $matrixRow = array($matrixRow); }
- $column = 0;
- foreach($matrixRow as $matrixCell) {
- if ((is_string($matrixCell)) || ($matrixCell === null)) {
- return PHPExcel_Calculation_Functions::VALUE();
- }
- $matrixData[$column][$row] = $matrixCell;
- ++$column;
- }
- if ($column > $maxColumn) { $maxColumn = $column; }
- ++$row;
- }
- if ($row != $maxColumn) { return PHPExcel_Calculation_Functions::VALUE(); }
-
- try {
- $matrix = new PHPExcel_Shared_JAMA_Matrix($matrixData);
- return $matrix->det();
- } catch (Exception $ex) {
- return PHPExcel_Calculation_Functions::VALUE();
- }
- } // function MDETERM()
-
-
- /**
- * MINVERSE
- *
- * Returns the inverse matrix for the matrix stored in an array.
- *
- * Excel Function:
- * MINVERSE(array)
- *
- * @access public
- * @category Mathematical and Trigonometric Functions
- * @param array $matrixValues A matrix of values
- * @return array
- */
- public static function MINVERSE($matrixValues) {
- $matrixData = array();
- if (!is_array($matrixValues)) { $matrixValues = array(array($matrixValues)); }
-
- $row = $maxColumn = 0;
- foreach($matrixValues as $matrixRow) {
- if (!is_array($matrixRow)) { $matrixRow = array($matrixRow); }
- $column = 0;
- foreach($matrixRow as $matrixCell) {
- if ((is_string($matrixCell)) || ($matrixCell === null)) {
- return PHPExcel_Calculation_Functions::VALUE();
- }
- $matrixData[$column][$row] = $matrixCell;
- ++$column;
- }
- if ($column > $maxColumn) { $maxColumn = $column; }
- ++$row;
- }
- if ($row != $maxColumn) { return PHPExcel_Calculation_Functions::VALUE(); }
-
- try {
- $matrix = new PHPExcel_Shared_JAMA_Matrix($matrixData);
- return $matrix->inverse()->getArray();
- } catch (Exception $ex) {
- return PHPExcel_Calculation_Functions::VALUE();
- }
- } // function MINVERSE()
-
-
- /**
- * MMULT
- *
- * @param array $matrixData1 A matrix of values
- * @param array $matrixData2 A matrix of values
- * @return array
- */
- public static function MMULT($matrixData1,$matrixData2) {
- $matrixAData = $matrixBData = array();
- if (!is_array($matrixData1)) { $matrixData1 = array(array($matrixData1)); }
- if (!is_array($matrixData2)) { $matrixData2 = array(array($matrixData2)); }
-
- $rowA = 0;
- foreach($matrixData1 as $matrixRow) {
- if (!is_array($matrixRow)) { $matrixRow = array($matrixRow); }
- $columnA = 0;
- foreach($matrixRow as $matrixCell) {
- if ((is_string($matrixCell)) || ($matrixCell === null)) {
- return PHPExcel_Calculation_Functions::VALUE();
- }
- $matrixAData[$rowA][$columnA] = $matrixCell;
- ++$columnA;
- }
- ++$rowA;
- }
- try {
- $matrixA = new PHPExcel_Shared_JAMA_Matrix($matrixAData);
- $rowB = 0;
- foreach($matrixData2 as $matrixRow) {
- if (!is_array($matrixRow)) { $matrixRow = array($matrixRow); }
- $columnB = 0;
- foreach($matrixRow as $matrixCell) {
- if ((is_string($matrixCell)) || ($matrixCell === null)) {
- return PHPExcel_Calculation_Functions::VALUE();
- }
- $matrixBData[$rowB][$columnB] = $matrixCell;
- ++$columnB;
- }
- ++$rowB;
- }
- $matrixB = new PHPExcel_Shared_JAMA_Matrix($matrixBData);
-
- if (($rowA != $columnB) || ($rowB != $columnA)) {
- return PHPExcel_Calculation_Functions::VALUE();
- }
-
- return $matrixA->times($matrixB)->getArray();
- } catch (Exception $ex) {
- return PHPExcel_Calculation_Functions::VALUE();
- }
- } // function MMULT()
-
-
- /**
- * MOD
- *
- * @param int $a Dividend
- * @param int $b Divisor
- * @return int Remainder
- */
- public static function MOD($a = 1, $b = 1) {
- $a = PHPExcel_Calculation_Functions::flattenSingleValue($a);
- $b = PHPExcel_Calculation_Functions::flattenSingleValue($b);
-
- if ($b == 0.0) {
- return PHPExcel_Calculation_Functions::DIV0();
- } elseif (($a < 0.0) && ($b > 0.0)) {
- return $b - fmod(abs($a),$b);
- } elseif (($a > 0.0) && ($b < 0.0)) {
- return $b + fmod($a,abs($b));
- }
-
- return fmod($a,$b);
- } // function MOD()
-
-
- /**
- * MROUND
- *
- * Rounds a number to the nearest multiple of a specified value
- *
- * @param float $number Number to round
- * @param int $multiple Multiple to which you want to round $number
- * @return float Rounded Number
- */
- public static function MROUND($number,$multiple) {
- $number = PHPExcel_Calculation_Functions::flattenSingleValue($number);
- $multiple = PHPExcel_Calculation_Functions::flattenSingleValue($multiple);
-
- if ((is_numeric($number)) && (is_numeric($multiple))) {
- if ($multiple == 0) {
- return 0;
- }
- if ((self::SIGN($number)) == (self::SIGN($multiple))) {
- $multiplier = 1 / $multiple;
- return round($number * $multiplier) / $multiplier;
- }
- return PHPExcel_Calculation_Functions::NaN();
- }
- return PHPExcel_Calculation_Functions::VALUE();
- } // function MROUND()
-
-
- /**
- * MULTINOMIAL
- *
- * Returns the ratio of the factorial of a sum of values to the product of factorials.
- *
- * @param array of mixed Data Series
- * @return float
- */
- public static function MULTINOMIAL() {
- $summer = 0;
- $divisor = 1;
- // Loop through arguments
- foreach (PHPExcel_Calculation_Functions::flattenArray(func_get_args()) as $arg) {
- // Is it a numeric value?
- if (is_numeric($arg)) {
- if ($arg < 1) {
- return PHPExcel_Calculation_Functions::NaN();
- }
- $summer += floor($arg);
- $divisor *= self::FACT($arg);
- } else {
- return PHPExcel_Calculation_Functions::VALUE();
- }
- }
-
- // Return
- if ($summer > 0) {
- $summer = self::FACT($summer);
- return $summer / $divisor;
- }
- return 0;
- } // function MULTINOMIAL()
-
-
- /**
- * ODD
- *
- * Returns number rounded up to the nearest odd integer.
- *
- * @param float $number Number to round
- * @return int Rounded Number
- */
- public static function ODD($number) {
- $number = PHPExcel_Calculation_Functions::flattenSingleValue($number);
-
- if (is_null($number)) {
- return 1;
- } elseif (is_bool($number)) {
- $number = (int) $number;
- }
-
- if (is_numeric($number)) {
- $significance = self::SIGN($number);
- if ($significance == 0) {
- return 1;
- }
-
- $result = self::CEILING($number,$significance);
- if ($result == self::EVEN($result)) {
- $result += $significance;
- }
-
- return (int) $result;
- }
- return PHPExcel_Calculation_Functions::VALUE();
- } // function ODD()
-
-
- /**
- * POWER
- *
- * Computes x raised to the power y.
- *
- * @param float $x
- * @param float $y
- * @return float
- */
- public static function POWER($x = 0, $y = 2) {
- $x = PHPExcel_Calculation_Functions::flattenSingleValue($x);
- $y = PHPExcel_Calculation_Functions::flattenSingleValue($y);
-
- // Validate parameters
- if ($x == 0.0 && $y == 0.0) {
- return PHPExcel_Calculation_Functions::NaN();
- } elseif ($x == 0.0 && $y < 0.0) {
- return PHPExcel_Calculation_Functions::DIV0();
- }
-
- // Return
- $result = pow($x, $y);
- return (!is_nan($result) && !is_infinite($result)) ? $result : PHPExcel_Calculation_Functions::NaN();
- } // function POWER()
-
-
- /**
- * PRODUCT
- *
- * PRODUCT returns the product of all the values and cells referenced in the argument list.
- *
- * Excel Function:
- * PRODUCT(value1[,value2[, ...]])
- *
- * @access public
- * @category Mathematical and Trigonometric Functions
- * @param mixed $arg,... Data values
- * @return float
- */
- public static function PRODUCT() {
- // Return value
- $returnValue = null;
-
- // Loop through arguments
- foreach (PHPExcel_Calculation_Functions::flattenArray(func_get_args()) as $arg) {
- // Is it a numeric value?
- if ((is_numeric($arg)) && (!is_string($arg))) {
- if (is_null($returnValue)) {
- $returnValue = $arg;
- } else {
- $returnValue *= $arg;
- }
- }
- }
-
- // Return
- if (is_null($returnValue)) {
- return 0;
- }
- return $returnValue;
- } // function PRODUCT()
-
-
- /**
- * QUOTIENT
- *
- * QUOTIENT function returns the integer portion of a division. Numerator is the divided number
- * and denominator is the divisor.
- *
- * Excel Function:
- * QUOTIENT(value1[,value2[, ...]])
- *
- * @access public
- * @category Mathematical and Trigonometric Functions
- * @param mixed $arg,... Data values
- * @return float
- */
- public static function QUOTIENT() {
- // Return value
- $returnValue = null;
-
- // Loop through arguments
- foreach (PHPExcel_Calculation_Functions::flattenArray(func_get_args()) as $arg) {
- // Is it a numeric value?
- if ((is_numeric($arg)) && (!is_string($arg))) {
- if (is_null($returnValue)) {
- $returnValue = ($arg == 0) ? 0 : $arg;
- } else {
- if (($returnValue == 0) || ($arg == 0)) {
- $returnValue = 0;
- } else {
- $returnValue /= $arg;
- }
- }
- }
- }
-
- // Return
- return intval($returnValue);
- } // function QUOTIENT()
-
-
- /**
- * RAND
- *
- * @param int $min Minimal value
- * @param int $max Maximal value
- * @return int Random number
- */
- public static function RAND($min = 0, $max = 0) {
- $min = PHPExcel_Calculation_Functions::flattenSingleValue($min);
- $max = PHPExcel_Calculation_Functions::flattenSingleValue($max);
-
- if ($min == 0 && $max == 0) {
- return (rand(0,10000000)) / 10000000;
- } else {
- return rand($min, $max);
- }
- } // function RAND()
-
-
- public static function ROMAN($aValue, $style=0) {
- $aValue = PHPExcel_Calculation_Functions::flattenSingleValue($aValue);
- $style = (is_null($style)) ? 0 : (integer) PHPExcel_Calculation_Functions::flattenSingleValue($style);
- if ((!is_numeric($aValue)) || ($aValue < 0) || ($aValue >= 4000)) {
- return PHPExcel_Calculation_Functions::VALUE();
- }
- $aValue = (integer) $aValue;
- if ($aValue == 0) {
- return '';
- }
-
- $mill = Array('', 'M', 'MM', 'MMM', 'MMMM', 'MMMMM');
- $cent = Array('', 'C', 'CC', 'CCC', 'CD', 'D', 'DC', 'DCC', 'DCCC', 'CM');
- $tens = Array('', 'X', 'XX', 'XXX', 'XL', 'L', 'LX', 'LXX', 'LXXX', 'XC');
- $ones = Array('', 'I', 'II', 'III', 'IV', 'V', 'VI', 'VII', 'VIII', 'IX');
-
- $roman = '';
- while ($aValue > 5999) {
- $roman .= 'M';
- $aValue -= 1000;
- }
- $m = self::_romanCut($aValue, 1000); $aValue %= 1000;
- $c = self::_romanCut($aValue, 100); $aValue %= 100;
- $t = self::_romanCut($aValue, 10); $aValue %= 10;
-
- return $roman.$mill[$m].$cent[$c].$tens[$t].$ones[$aValue];
- } // function ROMAN()
-
-
- /**
- * ROUNDUP
- *
- * Rounds a number up to a specified number of decimal places
- *
- * @param float $number Number to round
- * @param int $digits Number of digits to which you want to round $number
- * @return float Rounded Number
- */
- public static function ROUNDUP($number,$digits) {
- $number = PHPExcel_Calculation_Functions::flattenSingleValue($number);
- $digits = PHPExcel_Calculation_Functions::flattenSingleValue($digits);
-
- if ((is_numeric($number)) && (is_numeric($digits))) {
- $significance = pow(10,(int) $digits);
- if ($number < 0.0) {
- return floor($number * $significance) / $significance;
- } else {
- return ceil($number * $significance) / $significance;
- }
- }
- return PHPExcel_Calculation_Functions::VALUE();
- } // function ROUNDUP()
-
-
- /**
- * ROUNDDOWN
- *
- * Rounds a number down to a specified number of decimal places
- *
- * @param float $number Number to round
- * @param int $digits Number of digits to which you want to round $number
- * @return float Rounded Number
- */
- public static function ROUNDDOWN($number,$digits) {
- $number = PHPExcel_Calculation_Functions::flattenSingleValue($number);
- $digits = PHPExcel_Calculation_Functions::flattenSingleValue($digits);
-
- if ((is_numeric($number)) && (is_numeric($digits))) {
- $significance = pow(10,(int) $digits);
- if ($number < 0.0) {
- return ceil($number * $significance) / $significance;
- } else {
- return floor($number * $significance) / $significance;
- }
- }
- return PHPExcel_Calculation_Functions::VALUE();
- } // function ROUNDDOWN()
-
-
- /**
- * SERIESSUM
- *
- * Returns the sum of a power series
- *
- * @param float $x Input value to the power series
- * @param float $n Initial power to which you want to raise $x
- * @param float $m Step by which to increase $n for each term in the series
- * @param array of mixed Data Series
- * @return float
- */
- public static function SERIESSUM() {
- // Return value
- $returnValue = 0;
-
- // Loop through arguments
- $aArgs = PHPExcel_Calculation_Functions::flattenArray(func_get_args());
-
- $x = array_shift($aArgs);
- $n = array_shift($aArgs);
- $m = array_shift($aArgs);
-
- if ((is_numeric($x)) && (is_numeric($n)) && (is_numeric($m))) {
- // Calculate
- $i = 0;
- foreach($aArgs as $arg) {
- // Is it a numeric value?
- if ((is_numeric($arg)) && (!is_string($arg))) {
- $returnValue += $arg * pow($x,$n + ($m * $i++));
- } else {
- return PHPExcel_Calculation_Functions::VALUE();
- }
- }
- // Return
- return $returnValue;
- }
- return PHPExcel_Calculation_Functions::VALUE();
- } // function SERIESSUM()
-
-
- /**
- * SIGN
- *
- * Determines the sign of a number. Returns 1 if the number is positive, zero (0)
- * if the number is 0, and -1 if the number is negative.
- *
- * @param float $number Number to round
- * @return int sign value
- */
- public static function SIGN($number) {
- $number = PHPExcel_Calculation_Functions::flattenSingleValue($number);
-
- if (is_bool($number))
- return (int) $number;
- if (is_numeric($number)) {
- if ($number == 0.0) {
- return 0;
- }
- return $number / abs($number);
- }
- return PHPExcel_Calculation_Functions::VALUE();
- } // function SIGN()
-
-
- /**
- * SQRTPI
- *
- * Returns the square root of (number * pi).
- *
- * @param float $number Number
- * @return float Square Root of Number * Pi
- */
- public static function SQRTPI($number) {
- $number = PHPExcel_Calculation_Functions::flattenSingleValue($number);
-
- if (is_numeric($number)) {
- if ($number < 0) {
- return PHPExcel_Calculation_Functions::NaN();
- }
- return sqrt($number * M_PI) ;
- }
- return PHPExcel_Calculation_Functions::VALUE();
- } // function SQRTPI()
-
-
- /**
- * SUBTOTAL
- *
- * Returns a subtotal in a list or database.
- *
- * @param int the number 1 to 11 that specifies which function to
- * use in calculating subtotals within a list.
- * @param array of mixed Data Series
- * @return float
- */
- public static function SUBTOTAL() {
- $aArgs = PHPExcel_Calculation_Functions::flattenArray(func_get_args());
-
- // Calculate
- $subtotal = array_shift($aArgs);
-
- if ((is_numeric($subtotal)) && (!is_string($subtotal))) {
- switch($subtotal) {
- case 1 :
- return PHPExcel_Calculation_Statistical::AVERAGE($aArgs);
- break;
- case 2 :
- return PHPExcel_Calculation_Statistical::COUNT($aArgs);
- break;
- case 3 :
- return PHPExcel_Calculation_Statistical::COUNTA($aArgs);
- break;
- case 4 :
- return PHPExcel_Calculation_Statistical::MAX($aArgs);
- break;
- case 5 :
- return PHPExcel_Calculation_Statistical::MIN($aArgs);
- break;
- case 6 :
- return self::PRODUCT($aArgs);
- break;
- case 7 :
- return PHPExcel_Calculation_Statistical::STDEV($aArgs);
- break;
- case 8 :
- return PHPExcel_Calculation_Statistical::STDEVP($aArgs);
- break;
- case 9 :
- return self::SUM($aArgs);
- break;
- case 10 :
- return PHPExcel_Calculation_Statistical::VARFunc($aArgs);
- break;
- case 11 :
- return PHPExcel_Calculation_Statistical::VARP($aArgs);
- break;
- }
- }
- return PHPExcel_Calculation_Functions::VALUE();
- } // function SUBTOTAL()
-
-
- /**
- * SUM
- *
- * SUM computes the sum of all the values and cells referenced in the argument list.
- *
- * Excel Function:
- * SUM(value1[,value2[, ...]])
- *
- * @access public
- * @category Mathematical and Trigonometric Functions
- * @param mixed $arg,... Data values
- * @return float
- */
- public static function SUM() {
- // Return value
- $returnValue = 0;
-
- // Loop through the arguments
- foreach (PHPExcel_Calculation_Functions::flattenArray(func_get_args()) as $arg) {
- // Is it a numeric value?
- if ((is_numeric($arg)) && (!is_string($arg))) {
- $returnValue += $arg;
- }
- }
-
- // Return
- return $returnValue;
- } // function SUM()
-
-
- /**
- * SUMIF
- *
- * Counts the number of cells that contain numbers within the list of arguments
- *
- * Excel Function:
- * SUMIF(value1[,value2[, ...]],condition)
- *
- * @access public
- * @category Mathematical and Trigonometric Functions
- * @param mixed $arg,... Data values
- * @param string $condition The criteria that defines which cells will be summed.
- * @return float
- */
- public static function SUMIF($aArgs,$condition,$sumArgs = array()) {
- // Return value
- $returnValue = 0;
-
- $aArgs = PHPExcel_Calculation_Functions::flattenArray($aArgs);
- $sumArgs = PHPExcel_Calculation_Functions::flattenArray($sumArgs);
- if (empty($sumArgs)) {
- $sumArgs = $aArgs;
- }
- $condition = PHPExcel_Calculation_Functions::_ifCondition($condition);
- // Loop through arguments
- foreach ($aArgs as $key => $arg) {
- if (!is_numeric($arg)) { $arg = PHPExcel_Calculation::_wrapResult(strtoupper($arg)); }
- $testCondition = '='.$arg.$condition;
- if (PHPExcel_Calculation::getInstance()->_calculateFormulaValue($testCondition)) {
- // Is it a value within our criteria
- $returnValue += $sumArgs[$key];
- }
- }
-
- // Return
- return $returnValue;
- } // function SUMIF()
-
-
- /**
- * SUMPRODUCT
- *
- * Excel Function:
- * SUMPRODUCT(value1[,value2[, ...]])
- *
- * @access public
- * @category Mathematical and Trigonometric Functions
- * @param mixed $arg,... Data values
- * @return float
- */
- public static function SUMPRODUCT() {
- $arrayList = func_get_args();
-
- $wrkArray = PHPExcel_Calculation_Functions::flattenArray(array_shift($arrayList));
- $wrkCellCount = count($wrkArray);
-
- for ($i=0; $i< $wrkCellCount; ++$i) {
- if ((!is_numeric($wrkArray[$i])) || (is_string($wrkArray[$i]))) {
- $wrkArray[$i] = 0;
- }
- }
-
- foreach($arrayList as $matrixData) {
- $array2 = PHPExcel_Calculation_Functions::flattenArray($matrixData);
- $count = count($array2);
- if ($wrkCellCount != $count) {
- return PHPExcel_Calculation_Functions::VALUE();
- }
-
- foreach ($array2 as $i => $val) {
- if ((!is_numeric($val)) || (is_string($val))) {
- $val = 0;
- }
- $wrkArray[$i] *= $val;
- }
- }
-
- return array_sum($wrkArray);
- } // function SUMPRODUCT()
-
-
- /**
- * SUMSQ
- *
- * SUMSQ returns the sum of the squares of the arguments
- *
- * Excel Function:
- * SUMSQ(value1[,value2[, ...]])
- *
- * @access public
- * @category Mathematical and Trigonometric Functions
- * @param mixed $arg,... Data values
- * @return float
- */
- public static function SUMSQ() {
- // Return value
- $returnValue = 0;
-
- // Loop through arguments
- foreach (PHPExcel_Calculation_Functions::flattenArray(func_get_args()) as $arg) {
- // Is it a numeric value?
- if ((is_numeric($arg)) && (!is_string($arg))) {
- $returnValue += ($arg * $arg);
- }
- }
-
- // Return
- return $returnValue;
- } // function SUMSQ()
-
-
- /**
- * SUMX2MY2
- *
- * @param mixed $value Value to check
- * @return float
- */
- public static function SUMX2MY2($matrixData1,$matrixData2) {
- $array1 = PHPExcel_Calculation_Functions::flattenArray($matrixData1);
- $array2 = PHPExcel_Calculation_Functions::flattenArray($matrixData2);
- $count1 = count($array1);
- $count2 = count($array2);
- if ($count1 < $count2) {
- $count = $count1;
- } else {
- $count = $count2;
- }
-
- $result = 0;
- for ($i = 0; $i < $count; ++$i) {
- if (((is_numeric($array1[$i])) && (!is_string($array1[$i]))) &&
- ((is_numeric($array2[$i])) && (!is_string($array2[$i])))) {
- $result += ($array1[$i] * $array1[$i]) - ($array2[$i] * $array2[$i]);
- }
- }
-
- return $result;
- } // function SUMX2MY2()
-
-
- /**
- * SUMX2PY2
- *
- * @param mixed $value Value to check
- * @return float
- */
- public static function SUMX2PY2($matrixData1,$matrixData2) {
- $array1 = PHPExcel_Calculation_Functions::flattenArray($matrixData1);
- $array2 = PHPExcel_Calculation_Functions::flattenArray($matrixData2);
- $count1 = count($array1);
- $count2 = count($array2);
- if ($count1 < $count2) {
- $count = $count1;
- } else {
- $count = $count2;
- }
-
- $result = 0;
- for ($i = 0; $i < $count; ++$i) {
- if (((is_numeric($array1[$i])) && (!is_string($array1[$i]))) &&
- ((is_numeric($array2[$i])) && (!is_string($array2[$i])))) {
- $result += ($array1[$i] * $array1[$i]) + ($array2[$i] * $array2[$i]);
- }
- }
-
- return $result;
- } // function SUMX2PY2()
-
-
- /**
- * SUMXMY2
- *
- * @param mixed $value Value to check
- * @return float
- */
- public static function SUMXMY2($matrixData1,$matrixData2) {
- $array1 = PHPExcel_Calculation_Functions::flattenArray($matrixData1);
- $array2 = PHPExcel_Calculation_Functions::flattenArray($matrixData2);
- $count1 = count($array1);
- $count2 = count($array2);
- if ($count1 < $count2) {
- $count = $count1;
- } else {
- $count = $count2;
- }
-
- $result = 0;
- for ($i = 0; $i < $count; ++$i) {
- if (((is_numeric($array1[$i])) && (!is_string($array1[$i]))) &&
- ((is_numeric($array2[$i])) && (!is_string($array2[$i])))) {
- $result += ($array1[$i] - $array2[$i]) * ($array1[$i] - $array2[$i]);
- }
- }
-
- return $result;
- } // function SUMXMY2()
-
-
- /**
- * TRUNC
- *
- * Truncates value to the number of fractional digits by number_digits.
- *
- * @param float $value
- * @param int $digits
- * @return float Truncated value
- */
- public static function TRUNC($value = 0, $digits = 0) {
- $value = PHPExcel_Calculation_Functions::flattenSingleValue($value);
- $digits = PHPExcel_Calculation_Functions::flattenSingleValue($digits);
-
- // Validate parameters
- if ((!is_numeric($value)) || (!is_numeric($digits)))
- return PHPExcel_Calculation_Functions::VALUE();
- $digits = floor($digits);
-
- // Truncate
- $adjust = pow(10, $digits);
-
- if (($digits > 0) && (rtrim(intval((abs($value) - abs(intval($value))) * $adjust),'0') < $adjust/10))
- return $value;
-
- return (intval($value * $adjust)) / $adjust;
- } // function TRUNC()
-
-} // class PHPExcel_Calculation_MathTrig
diff --git a/admin/survey/excel/PHPExcel/Calculation/Statistical.php b/admin/survey/excel/PHPExcel/Calculation/Statistical.php
deleted file mode 100644
index b2a4f43..0000000
--- a/admin/survey/excel/PHPExcel/Calculation/Statistical.php
+++ /dev/null
@@ -1,3644 +0,0 @@
-<?php
-/**
- * PHPExcel
- *
- * Copyright (c) 2006 - 2012 PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel_Calculation
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-
-/** PHPExcel root directory */
-if (!defined('PHPEXCEL_ROOT')) {
- /**
- * @ignore
- */
- define('PHPEXCEL_ROOT', dirname(__FILE__) . '/../../');
- require(PHPEXCEL_ROOT . 'PHPExcel/Autoloader.php');
-}
-
-
-require_once PHPEXCEL_ROOT . 'PHPExcel/Shared/trend/trendClass.php';
-
-
-/** LOG_GAMMA_X_MAX_VALUE */
-define('LOG_GAMMA_X_MAX_VALUE', 2.55e305);
-
-/** XMININ */
-define('XMININ', 2.23e-308);
-
-/** EPS */
-define('EPS', 2.22e-16);
-
-/** SQRT2PI */
-define('SQRT2PI', 2.5066282746310005024157652848110452530069867406099);
-
-
-/**
- * PHPExcel_Calculation_Statistical
- *
- * @category PHPExcel
- * @package PHPExcel_Calculation
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- */
-class PHPExcel_Calculation_Statistical {
-
-
- private static function _checkTrendArrays(&$array1,&$array2) {
- if (!is_array($array1)) { $array1 = array($array1); }
- if (!is_array($array2)) { $array2 = array($array2); }
-
- $array1 = PHPExcel_Calculation_Functions::flattenArray($array1);
- $array2 = PHPExcel_Calculation_Functions::flattenArray($array2);
- foreach($array1 as $key => $value) {
- if ((is_bool($value)) || (is_string($value)) || (is_null($value))) {
- unset($array1[$key]);
- unset($array2[$key]);
- }
- }
- foreach($array2 as $key => $value) {
- if ((is_bool($value)) || (is_string($value)) || (is_null($value))) {
- unset($array1[$key]);
- unset($array2[$key]);
- }
- }
- $array1 = array_merge($array1);
- $array2 = array_merge($array2);
-
- return True;
- } // function _checkTrendArrays()
-
-
- /**
- * Beta function.
- *
- * @author Jaco van Kooten
- *
- * @param p require p>0
- * @param q require q>0
- * @return 0 if p<=0, q<=0 or p+q>2.55E305 to avoid errors and over/underflow
- */
- private static function _beta($p, $q) {
- if ($p <= 0.0 || $q <= 0.0 || ($p + $q) > LOG_GAMMA_X_MAX_VALUE) {
- return 0.0;
- } else {
- return exp(self::_logBeta($p, $q));
- }
- } // function _beta()
-
-
- /**
- * Incomplete beta function
- *
- * @author Jaco van Kooten
- * @author Paul Meagher
- *
- * The computation is based on formulas from Numerical Recipes, Chapter 6.4 (W.H. Press et al, 1992).
- * @param x require 0<=x<=1
- * @param p require p>0
- * @param q require q>0
- * @return 0 if x<0, p<=0, q<=0 or p+q>2.55E305 and 1 if x>1 to avoid errors and over/underflow
- */
- private static function _incompleteBeta($x, $p, $q) {
- if ($x <= 0.0) {
- return 0.0;
- } elseif ($x >= 1.0) {
- return 1.0;
- } elseif (($p <= 0.0) || ($q <= 0.0) || (($p + $q) > LOG_GAMMA_X_MAX_VALUE)) {
- return 0.0;
- }
- $beta_gam = exp((0 - self::_logBeta($p, $q)) + $p * log($x) + $q * log(1.0 - $x));
- if ($x < ($p + 1.0) / ($p + $q + 2.0)) {
- return $beta_gam * self::_betaFraction($x, $p, $q) / $p;
- } else {
- return 1.0 - ($beta_gam * self::_betaFraction(1 - $x, $q, $p) / $q);
- }
- } // function _incompleteBeta()
-
-
- // Function cache for _logBeta function
- private static $_logBetaCache_p = 0.0;
- private static $_logBetaCache_q = 0.0;
- private static $_logBetaCache_result = 0.0;
-
- /**
- * The natural logarithm of the beta function.
- *
- * @param p require p>0
- * @param q require q>0
- * @return 0 if p<=0, q<=0 or p+q>2.55E305 to avoid errors and over/underflow
- * @author Jaco van Kooten
- */
- private static function _logBeta($p, $q) {
- if ($p != self::$_logBetaCache_p || $q != self::$_logBetaCache_q) {
- self::$_logBetaCache_p = $p;
- self::$_logBetaCache_q = $q;
- if (($p <= 0.0) || ($q <= 0.0) || (($p + $q) > LOG_GAMMA_X_MAX_VALUE)) {
- self::$_logBetaCache_result = 0.0;
- } else {
- self::$_logBetaCache_result = self::_logGamma($p) + self::_logGamma($q) - self::_logGamma($p + $q);
- }
- }
- return self::$_logBetaCache_result;
- } // function _logBeta()
-
-
- /**
- * Evaluates of continued fraction part of incomplete beta function.
- * Based on an idea from Numerical Recipes (W.H. Press et al, 1992).
- * @author Jaco van Kooten
- */
- private static function _betaFraction($x, $p, $q) {
- $c = 1.0;
- $sum_pq = $p + $q;
- $p_plus = $p + 1.0;
- $p_minus = $p - 1.0;
- $h = 1.0 - $sum_pq * $x / $p_plus;
- if (abs($h) < XMININ) {
- $h = XMININ;
- }
- $h = 1.0 / $h;
- $frac = $h;
- $m = 1;
- $delta = 0.0;
- while ($m <= MAX_ITERATIONS && abs($delta-1.0) > PRECISION ) {
- $m2 = 2 * $m;
- // even index for d
- $d = $m * ($q - $m) * $x / ( ($p_minus + $m2) * ($p + $m2));
- $h = 1.0 + $d * $h;
- if (abs($h) < XMININ) {
- $h = XMININ;
- }
- $h = 1.0 / $h;
- $c = 1.0 + $d / $c;
- if (abs($c) < XMININ) {
- $c = XMININ;
- }
- $frac *= $h * $c;
- // odd index for d
- $d = -($p + $m) * ($sum_pq + $m) * $x / (($p + $m2) * ($p_plus + $m2));
- $h = 1.0 + $d * $h;
- if (abs($h) < XMININ) {
- $h = XMININ;
- }
- $h = 1.0 / $h;
- $c = 1.0 + $d / $c;
- if (abs($c) < XMININ) {
- $c = XMININ;
- }
- $delta = $h * $c;
- $frac *= $delta;
- ++$m;
- }
- return $frac;
- } // function _betaFraction()
-
-
- /**
- * logGamma function
- *
- * @version 1.1
- * @author Jaco van Kooten
- *
- * Original author was Jaco van Kooten. Ported to PHP by Paul Meagher.
- *
- * The natural logarithm of the gamma function. <br />
- * Based on public domain NETLIB (Fortran) code by W. J. Cody and L. Stoltz <br />
- * Applied Mathematics Division <br />
- * Argonne National Laboratory <br />
- * Argonne, IL 60439 <br />
- * <p>
- * References:
- * <ol>
- * <li>W. J. Cody and K. E. Hillstrom, 'Chebyshev Approximations for the Natural
- * Logarithm of the Gamma Function,' Math. Comp. 21, 1967, pp. 198-203.</li>
- * <li>K. E. Hillstrom, ANL/AMD Program ANLC366S, DGAMMA/DLGAMA, May, 1969.</li>
- * <li>Hart, Et. Al., Computer Approximations, Wiley and sons, New York, 1968.</li>
- * </ol>
- * </p>
- * <p>
- * From the original documentation:
- * </p>
- * <p>
- * This routine calculates the LOG(GAMMA) function for a positive real argument X.
- * Computation is based on an algorithm outlined in references 1 and 2.
- * The program uses rational functions that theoretically approximate LOG(GAMMA)
- * to at least 18 significant decimal digits. The approximation for X > 12 is from
- * reference 3, while approximations for X < 12.0 are similar to those in reference
- * 1, but are unpublished. The accuracy achieved depends on the arithmetic system,
- * the compiler, the intrinsic functions, and proper selection of the
- * machine-dependent constants.
- * </p>
- * <p>
- * Error returns: <br />
- * The program returns the value XINF for X .LE. 0.0 or when overflow would occur.
- * The computation is believed to be free of underflow and overflow.
- * </p>
- * @return MAX_VALUE for x < 0.0 or when overflow would occur, i.e. x > 2.55E305
- */
-
- // Function cache for logGamma
- private static $_logGammaCache_result = 0.0;
- private static $_logGammaCache_x = 0.0;
-
- private static function _logGamma($x) {
- // Log Gamma related constants
- static $lg_d1 = -0.5772156649015328605195174;
- static $lg_d2 = 0.4227843350984671393993777;
- static $lg_d4 = 1.791759469228055000094023;
-
- static $lg_p1 = array( 4.945235359296727046734888,
- 201.8112620856775083915565,
- 2290.838373831346393026739,
- 11319.67205903380828685045,
- 28557.24635671635335736389,
- 38484.96228443793359990269,
- 26377.48787624195437963534,
- 7225.813979700288197698961 );
- static $lg_p2 = array( 4.974607845568932035012064,
- 542.4138599891070494101986,
- 15506.93864978364947665077,
- 184793.2904445632425417223,
- 1088204.76946882876749847,
- 3338152.967987029735917223,
- 5106661.678927352456275255,
- 3074109.054850539556250927 );
- static $lg_p4 = array( 14745.02166059939948905062,
- 2426813.369486704502836312,
- 121475557.4045093227939592,
- 2663432449.630976949898078,
- 29403789566.34553899906876,
- 170266573776.5398868392998,
- 492612579337.743088758812,
- 560625185622.3951465078242 );
-
- static $lg_q1 = array( 67.48212550303777196073036,
- 1113.332393857199323513008,
- 7738.757056935398733233834,
- 27639.87074403340708898585,
- 54993.10206226157329794414,
- 61611.22180066002127833352,
- 36351.27591501940507276287,
- 8785.536302431013170870835 );
- static $lg_q2 = array( 183.0328399370592604055942,
- 7765.049321445005871323047,
- 133190.3827966074194402448,
- 1136705.821321969608938755,
- 5267964.117437946917577538,
- 13467014.54311101692290052,
- 17827365.30353274213975932,
- 9533095.591844353613395747 );
- static $lg_q4 = array( 2690.530175870899333379843,
- 639388.5654300092398984238,
- 41355999.30241388052042842,
- 1120872109.61614794137657,
- 14886137286.78813811542398,
- 101680358627.2438228077304,
- 341747634550.7377132798597,
- 446315818741.9713286462081 );
-
- static $lg_c = array( -0.001910444077728,
- 8.4171387781295e-4,
- -5.952379913043012e-4,
- 7.93650793500350248e-4,
- -0.002777777777777681622553,
- 0.08333333333333333331554247,
- 0.0057083835261 );
-
- // Rough estimate of the fourth root of logGamma_xBig
- static $lg_frtbig = 2.25e76;
- static $pnt68 = 0.6796875;
-
-
- if ($x == self::$_logGammaCache_x) {
- return self::$_logGammaCache_result;
- }
- $y = $x;
- if ($y > 0.0 && $y <= LOG_GAMMA_X_MAX_VALUE) {
- if ($y <= EPS) {
- $res = -log(y);
- } elseif ($y <= 1.5) {
- // ---------------------
- // EPS .LT. X .LE. 1.5
- // ---------------------
- if ($y < $pnt68) {
- $corr = -log($y);
- $xm1 = $y;
- } else {
- $corr = 0.0;
- $xm1 = $y - 1.0;
- }
- if ($y <= 0.5 || $y >= $pnt68) {
- $xden = 1.0;
- $xnum = 0.0;
- for ($i = 0; $i < 8; ++$i) {
- $xnum = $xnum * $xm1 + $lg_p1[$i];
- $xden = $xden * $xm1 + $lg_q1[$i];
- }
- $res = $corr + $xm1 * ($lg_d1 + $xm1 * ($xnum / $xden));
- } else {
- $xm2 = $y - 1.0;
- $xden = 1.0;
- $xnum = 0.0;
- for ($i = 0; $i < 8; ++$i) {
- $xnum = $xnum * $xm2 + $lg_p2[$i];
- $xden = $xden * $xm2 + $lg_q2[$i];
- }
- $res = $corr + $xm2 * ($lg_d2 + $xm2 * ($xnum / $xden));
- }
- } elseif ($y <= 4.0) {
- // ---------------------
- // 1.5 .LT. X .LE. 4.0
- // ---------------------
- $xm2 = $y - 2.0;
- $xden = 1.0;
- $xnum = 0.0;
- for ($i = 0; $i < 8; ++$i) {
- $xnum = $xnum * $xm2 + $lg_p2[$i];
- $xden = $xden * $xm2 + $lg_q2[$i];
- }
- $res = $xm2 * ($lg_d2 + $xm2 * ($xnum / $xden));
- } elseif ($y <= 12.0) {
- // ----------------------
- // 4.0 .LT. X .LE. 12.0
- // ----------------------
- $xm4 = $y - 4.0;
- $xden = -1.0;
- $xnum = 0.0;
- for ($i = 0; $i < 8; ++$i) {
- $xnum = $xnum * $xm4 + $lg_p4[$i];
- $xden = $xden * $xm4 + $lg_q4[$i];
- }
- $res = $lg_d4 + $xm4 * ($xnum / $xden);
- } else {
- // ---------------------------------
- // Evaluate for argument .GE. 12.0
- // ---------------------------------
- $res = 0.0;
- if ($y <= $lg_frtbig) {
- $res = $lg_c[6];
- $ysq = $y * $y;
- for ($i = 0; $i < 6; ++$i)
- $res = $res / $ysq + $lg_c[$i];
- }
- $res /= $y;
- $corr = log($y);
- $res = $res + log(SQRT2PI) - 0.5 * $corr;
- $res += $y * ($corr - 1.0);
- }
- } else {
- // --------------------------
- // Return for bad arguments
- // --------------------------
- $res = MAX_VALUE;
- }
- // ------------------------------
- // Final adjustments and return
- // ------------------------------
- self::$_logGammaCache_x = $x;
- self::$_logGammaCache_result = $res;
- return $res;
- } // function _logGamma()
-
-
- //
- // Private implementation of the incomplete Gamma function
- //
- private static function _incompleteGamma($a,$x) {
- static $max = 32;
- $summer = 0;
- for ($n=0; $n<=$max; ++$n) {
- $divisor = $a;
- for ($i=1; $i<=$n; ++$i) {
- $divisor *= ($a + $i);
- }
- $summer += (pow($x,$n) / $divisor);
- }
- return pow($x,$a) * exp(0-$x) * $summer;
- } // function _incompleteGamma()
-
-
- //
- // Private implementation of the Gamma function
- //
- private static function _gamma($data) {
- if ($data == 0.0) return 0;
-
- static $p0 = 1.000000000190015;
- static $p = array ( 1 => 76.18009172947146,
- 2 => -86.50532032941677,
- 3 => 24.01409824083091,
- 4 => -1.231739572450155,
- 5 => 1.208650973866179e-3,
- 6 => -5.395239384953e-6
- );
-
- $y = $x = $data;
- $tmp = $x + 5.5;
- $tmp -= ($x + 0.5) * log($tmp);
-
- $summer = $p0;
- for ($j=1;$j<=6;++$j) {
- $summer += ($p[$j] / ++$y);
- }
- return exp(0 - $tmp + log(SQRT2PI * $summer / $x));
- } // function _gamma()
-
-
- /***************************************************************************
- * inverse_ncdf.php
- * -------------------
- * begin : Friday, January 16, 2004
- * copyright : (C) 2004 Michael Nickerson
- * email : nickersonm@yahoo.com
- *
- ***************************************************************************/
- private static function _inverse_ncdf($p) {
- // Inverse ncdf approximation by Peter J. Acklam, implementation adapted to
- // PHP by Michael Nickerson, using Dr. Thomas Ziegler's C implementation as
- // a guide. http://home.online.no/~pjacklam/notes/invnorm/index.html
- // I have not checked the accuracy of this implementation. Be aware that PHP
- // will truncate the coeficcients to 14 digits.
-
- // You have permission to use and distribute this function freely for
- // whatever purpose you want, but please show common courtesy and give credit
- // where credit is due.
-
- // Input paramater is $p - probability - where 0 < p < 1.
-
- // Coefficients in rational approximations
- static $a = array( 1 => -3.969683028665376e+01,
- 2 => 2.209460984245205e+02,
- 3 => -2.759285104469687e+02,
- 4 => 1.383577518672690e+02,
- 5 => -3.066479806614716e+01,
- 6 => 2.506628277459239e+00
- );
-
- static $b = array( 1 => -5.447609879822406e+01,
- 2 => 1.615858368580409e+02,
- 3 => -1.556989798598866e+02,
- 4 => 6.680131188771972e+01,
- 5 => -1.328068155288572e+01
- );
-
- static $c = array( 1 => -7.784894002430293e-03,
- 2 => -3.223964580411365e-01,
- 3 => -2.400758277161838e+00,
- 4 => -2.549732539343734e+00,
- 5 => 4.374664141464968e+00,
- 6 => 2.938163982698783e+00
- );
-
- static $d = array( 1 => 7.784695709041462e-03,
- 2 => 3.224671290700398e-01,
- 3 => 2.445134137142996e+00,
- 4 => 3.754408661907416e+00
- );
-
- // Define lower and upper region break-points.
- $p_low = 0.02425; //Use lower region approx. below this
- $p_high = 1 - $p_low; //Use upper region approx. above this
-
- if (0 < $p && $p < $p_low) {
- // Rational approximation for lower region.
- $q = sqrt(-2 * log($p));
- return ((((($c[1] * $q + $c[2]) * $q + $c[3]) * $q + $c[4]) * $q + $c[5]) * $q + $c[6]) /
- (((($d[1] * $q + $d[2]) * $q + $d[3]) * $q + $d[4]) * $q + 1);
- } elseif ($p_low <= $p && $p <= $p_high) {
- // Rational approximation for central region.
- $q = $p - 0.5;
- $r = $q * $q;
- return ((((($a[1] * $r + $a[2]) * $r + $a[3]) * $r + $a[4]) * $r + $a[5]) * $r + $a[6]) * $q /
- ((((($b[1] * $r + $b[2]) * $r + $b[3]) * $r + $b[4]) * $r + $b[5]) * $r + 1);
- } elseif ($p_high < $p && $p < 1) {
- // Rational approximation for upper region.
- $q = sqrt(-2 * log(1 - $p));
- return -((((($c[1] * $q + $c[2]) * $q + $c[3]) * $q + $c[4]) * $q + $c[5]) * $q + $c[6]) /
- (((($d[1] * $q + $d[2]) * $q + $d[3]) * $q + $d[4]) * $q + 1);
- }
- // If 0 < p < 1, return a null value
- return PHPExcel_Calculation_Functions::NULL();
- } // function _inverse_ncdf()
-
-
- private static function _inverse_ncdf2($prob) {
- // Approximation of inverse standard normal CDF developed by
- // B. Moro, "The Full Monte," Risk 8(2), Feb 1995, 57-58.
-
- $a1 = 2.50662823884;
- $a2 = -18.61500062529;
- $a3 = 41.39119773534;
- $a4 = -25.44106049637;
-
- $b1 = -8.4735109309;
- $b2 = 23.08336743743;
- $b3 = -21.06224101826;
- $b4 = 3.13082909833;
-
- $c1 = 0.337475482272615;
- $c2 = 0.976169019091719;
- $c3 = 0.160797971491821;
- $c4 = 2.76438810333863E-02;
- $c5 = 3.8405729373609E-03;
- $c6 = 3.951896511919E-04;
- $c7 = 3.21767881768E-05;
- $c8 = 2.888167364E-07;
- $c9 = 3.960315187E-07;
-
- $y = $prob - 0.5;
- if (abs($y) < 0.42) {
- $z = ($y * $y);
- $z = $y * ((($a4 * $z + $a3) * $z + $a2) * $z + $a1) / (((($b4 * $z + $b3) * $z + $b2) * $z + $b1) * $z + 1);
- } else {
- if ($y > 0) {
- $z = log(-log(1 - $prob));
- } else {
- $z = log(-log($prob));
- }
- $z = $c1 + $z * ($c2 + $z * ($c3 + $z * ($c4 + $z * ($c5 + $z * ($c6 + $z * ($c7 + $z * ($c8 + $z * $c9)))))));
- if ($y < 0) {
- $z = -$z;
- }
- }
- return $z;
- } // function _inverse_ncdf2()
-
-
- private static function _inverse_ncdf3($p) {
- // ALGORITHM AS241 APPL. STATIST. (1988) VOL. 37, NO. 3.
- // Produces the normal deviate Z corresponding to a given lower
- // tail area of P; Z is accurate to about 1 part in 10**16.
- //
- // This is a PHP version of the original FORTRAN code that can
- // be found at http://lib.stat.cmu.edu/apstat/
- $split1 = 0.425;
- $split2 = 5;
- $const1 = 0.180625;
- $const2 = 1.6;
-
- // coefficients for p close to 0.5
- $a0 = 3.3871328727963666080;
- $a1 = 1.3314166789178437745E+2;
- $a2 = 1.9715909503065514427E+3;
- $a3 = 1.3731693765509461125E+4;
- $a4 = 4.5921953931549871457E+4;
- $a5 = 6.7265770927008700853E+4;
- $a6 = 3.3430575583588128105E+4;
- $a7 = 2.5090809287301226727E+3;
-
- $b1 = 4.2313330701600911252E+1;
- $b2 = 6.8718700749205790830E+2;
- $b3 = 5.3941960214247511077E+3;
- $b4 = 2.1213794301586595867E+4;
- $b5 = 3.9307895800092710610E+4;
- $b6 = 2.8729085735721942674E+4;
- $b7 = 5.2264952788528545610E+3;
-
- // coefficients for p not close to 0, 0.5 or 1.
- $c0 = 1.42343711074968357734;
- $c1 = 4.63033784615654529590;
- $c2 = 5.76949722146069140550;
- $c3 = 3.64784832476320460504;
- $c4 = 1.27045825245236838258;
- $c5 = 2.41780725177450611770E-1;
- $c6 = 2.27238449892691845833E-2;
- $c7 = 7.74545014278341407640E-4;
-
- $d1 = 2.05319162663775882187;
- $d2 = 1.67638483018380384940;
- $d3 = 6.89767334985100004550E-1;
- $d4 = 1.48103976427480074590E-1;
- $d5 = 1.51986665636164571966E-2;
- $d6 = 5.47593808499534494600E-4;
- $d7 = 1.05075007164441684324E-9;
-
- // coefficients for p near 0 or 1.
- $e0 = 6.65790464350110377720;
- $e1 = 5.46378491116411436990;
- $e2 = 1.78482653991729133580;
- $e3 = 2.96560571828504891230E-1;
- $e4 = 2.65321895265761230930E-2;
- $e5 = 1.24266094738807843860E-3;
- $e6 = 2.71155556874348757815E-5;
- $e7 = 2.01033439929228813265E-7;
-
- $f1 = 5.99832206555887937690E-1;
- $f2 = 1.36929880922735805310E-1;
- $f3 = 1.48753612908506148525E-2;
- $f4 = 7.86869131145613259100E-4;
- $f5 = 1.84631831751005468180E-5;
- $f6 = 1.42151175831644588870E-7;
- $f7 = 2.04426310338993978564E-15;
-
- $q = $p - 0.5;
-
- // computation for p close to 0.5
- if (abs($q) <= split1) {
- $R = $const1 - $q * $q;
- $z = $q * ((((((($a7 * $R + $a6) * $R + $a5) * $R + $a4) * $R + $a3) * $R + $a2) * $R + $a1) * $R + $a0) /
- ((((((($b7 * $R + $b6) * $R + $b5) * $R + $b4) * $R + $b3) * $R + $b2) * $R + $b1) * $R + 1);
- } else {
- if ($q < 0) {
- $R = $p;
- } else {
- $R = 1 - $p;
- }
- $R = pow(-log($R),2);
-
- // computation for p not close to 0, 0.5 or 1.
- If ($R <= $split2) {
- $R = $R - $const2;
- $z = ((((((($c7 * $R + $c6) * $R + $c5) * $R + $c4) * $R + $c3) * $R + $c2) * $R + $c1) * $R + $c0) /
- ((((((($d7 * $R + $d6) * $R + $d5) * $R + $d4) * $R + $d3) * $R + $d2) * $R + $d1) * $R + 1);
- } else {
- // computation for p near 0 or 1.
- $R = $R - $split2;
- $z = ((((((($e7 * $R + $e6) * $R + $e5) * $R + $e4) * $R + $e3) * $R + $e2) * $R + $e1) * $R + $e0) /
- ((((((($f7 * $R + $f6) * $R + $f5) * $R + $f4) * $R + $f3) * $R + $f2) * $R + $f1) * $R + 1);
- }
- if ($q < 0) {
- $z = -$z;
- }
- }
- return $z;
- } // function _inverse_ncdf3()
-
-
- /**
- * AVEDEV
- *
- * Returns the average of the absolute deviations of data points from their mean.
- * AVEDEV is a measure of the variability in a data set.
- *
- * Excel Function:
- * AVEDEV(value1[,value2[, ...]])
- *
- * @access public
- * @category Statistical Functions
- * @param mixed $arg,... Data values
- * @return float
- */
- public static function AVEDEV() {
- $aArgs = PHPExcel_Calculation_Functions::flattenArrayIndexed(func_get_args());
-
- // Return value
- $returnValue = null;
-
- $aMean = self::AVERAGE($aArgs);
- if ($aMean != PHPExcel_Calculation_Functions::DIV0()) {
- $aCount = 0;
- foreach ($aArgs as $k => $arg) {
- if ((is_bool($arg)) &&
- ((!PHPExcel_Calculation_Functions::isCellValue($k)) || (PHPExcel_Calculation_Functions::getCompatibilityMode() == PHPExcel_Calculation_Functions::COMPATIBILITY_OPENOFFICE))) {
- $arg = (integer) $arg;
- }
- // Is it a numeric value?
- if ((is_numeric($arg)) && (!is_string($arg))) {
- if (is_null($returnValue)) {
- $returnValue = abs($arg - $aMean);
- } else {
- $returnValue += abs($arg - $aMean);
- }
- ++$aCount;
- }
- }
-
- // Return
- if ($aCount == 0) {
- return PHPExcel_Calculation_Functions::DIV0();
- }
- return $returnValue / $aCount;
- }
- return PHPExcel_Calculation_Functions::NaN();
- } // function AVEDEV()
-
-
- /**
- * AVERAGE
- *
- * Returns the average (arithmetic mean) of the arguments
- *
- * Excel Function:
- * AVERAGE(value1[,value2[, ...]])
- *
- * @access public
- * @category Statistical Functions
- * @param mixed $arg,... Data values
- * @return float
- */
- public static function AVERAGE() {
- $returnValue = $aCount = 0;
-
- // Loop through arguments
- foreach (PHPExcel_Calculation_Functions::flattenArrayIndexed(func_get_args()) as $k => $arg) {
- if ((is_bool($arg)) &&
- ((!PHPExcel_Calculation_Functions::isCellValue($k)) || (PHPExcel_Calculation_Functions::getCompatibilityMode() == PHPExcel_Calculation_Functions::COMPATIBILITY_OPENOFFICE))) {
- $arg = (integer) $arg;
- }
- // Is it a numeric value?
- if ((is_numeric($arg)) && (!is_string($arg))) {
- if (is_null($returnValue)) {
- $returnValue = $arg;
- } else {
- $returnValue += $arg;
- }
- ++$aCount;
- }
- }
-
- // Return
- if ($aCount > 0) {
- return $returnValue / $aCount;
- } else {
- return PHPExcel_Calculation_Functions::DIV0();
- }
- } // function AVERAGE()
-
-
- /**
- * AVERAGEA
- *
- * Returns the average of its arguments, including numbers, text, and logical values
- *
- * Excel Function:
- * AVERAGEA(value1[,value2[, ...]])
- *
- * @access public
- * @category Statistical Functions
- * @param mixed $arg,... Data values
- * @return float
- */
- public static function AVERAGEA() {
- // Return value
- $returnValue = null;
-
- $aCount = 0;
- // Loop through arguments
- foreach (PHPExcel_Calculation_Functions::flattenArrayIndexed(func_get_args()) as $k => $arg) {
- if ((is_bool($arg)) &&
- (!PHPExcel_Calculation_Functions::isMatrixValue($k))) {
- } else {
- if ((is_numeric($arg)) || (is_bool($arg)) || ((is_string($arg) && ($arg != '')))) {
- if (is_bool($arg)) {
- $arg = (integer) $arg;
- } elseif (is_string($arg)) {
- $arg = 0;
- }
- if (is_null($returnValue)) {
- $returnValue = $arg;
- } else {
- $returnValue += $arg;
- }
- ++$aCount;
- }
- }
- }
-
- // Return
- if ($aCount > 0) {
- return $returnValue / $aCount;
- } else {
- return PHPExcel_Calculation_Functions::DIV0();
- }
- } // function AVERAGEA()
-
-
- /**
- * AVERAGEIF
- *
- * Returns the average value from a range of cells that contain numbers within the list of arguments
- *
- * Excel Function:
- * AVERAGEIF(value1[,value2[, ...]],condition)
- *
- * @access public
- * @category Mathematical and Trigonometric Functions
- * @param mixed $arg,... Data values
- * @param string $condition The criteria that defines which cells will be checked.
- * @return float
- */
- public static function AVERAGEIF($aArgs,$condition,$averageArgs = array()) {
- // Return value
- $returnValue = 0;
-
- $aArgs = PHPExcel_Calculation_Functions::flattenArray($aArgs);
- $averageArgs = PHPExcel_Calculation_Functions::flattenArray($averageArgs);
- if (empty($averageArgs)) {
- $averageArgs = $aArgs;
- }
- $condition = PHPExcel_Calculation_Functions::_ifCondition($condition);
- // Loop through arguments
- $aCount = 0;
- foreach ($aArgs as $key => $arg) {
- if (!is_numeric($arg)) { $arg = PHPExcel_Calculation::_wrapResult(strtoupper($arg)); }
- $testCondition = '='.$arg.$condition;
- if (PHPExcel_Calculation::getInstance()->_calculateFormulaValue($testCondition)) {
- if ((is_null($returnValue)) || ($arg > $returnValue)) {
- $returnValue += $arg;
- ++$aCount;
- }
- }
- }
-
- // Return
- if ($aCount > 0) {
- return $returnValue / $aCount;
- } else {
- return PHPExcel_Calculation_Functions::DIV0();
- }
- } // function AVERAGEIF()
-
-
- /**
- * BETADIST
- *
- * Returns the beta distribution.
- *
- * @param float $value Value at which you want to evaluate the distribution
- * @param float $alpha Parameter to the distribution
- * @param float $beta Parameter to the distribution
- * @param boolean $cumulative
- * @return float
- *
- */
- public static function BETADIST($value,$alpha,$beta,$rMin=0,$rMax=1) {
- $value = PHPExcel_Calculation_Functions::flattenSingleValue($value);
- $alpha = PHPExcel_Calculation_Functions::flattenSingleValue($alpha);
- $beta = PHPExcel_Calculation_Functions::flattenSingleValue($beta);
- $rMin = PHPExcel_Calculation_Functions::flattenSingleValue($rMin);
- $rMax = PHPExcel_Calculation_Functions::flattenSingleValue($rMax);
-
- if ((is_numeric($value)) && (is_numeric($alpha)) && (is_numeric($beta)) && (is_numeric($rMin)) && (is_numeric($rMax))) {
- if (($value < $rMin) || ($value > $rMax) || ($alpha <= 0) || ($beta <= 0) || ($rMin == $rMax)) {
- return PHPExcel_Calculation_Functions::NaN();
- }
- if ($rMin > $rMax) {
- $tmp = $rMin;
- $rMin = $rMax;
- $rMax = $tmp;
- }
- $value -= $rMin;
- $value /= ($rMax - $rMin);
- return self::_incompleteBeta($value,$alpha,$beta);
- }
- return PHPExcel_Calculation_Functions::VALUE();
- } // function BETADIST()
-
-
- /**
- * BETAINV
- *
- * Returns the inverse of the beta distribution.
- *
- * @param float $probability Probability at which you want to evaluate the distribution
- * @param float $alpha Parameter to the distribution
- * @param float $beta Parameter to the distribution
- * @param boolean $cumulative
- * @return float
- *
- */
- public static function BETAINV($probability,$alpha,$beta,$rMin=0,$rMax=1) {
- $probability = PHPExcel_Calculation_Functions::flattenSingleValue($probability);
- $alpha = PHPExcel_Calculation_Functions::flattenSingleValue($alpha);
- $beta = PHPExcel_Calculation_Functions::flattenSingleValue($beta);
- $rMin = PHPExcel_Calculation_Functions::flattenSingleValue($rMin);
- $rMax = PHPExcel_Calculation_Functions::flattenSingleValue($rMax);
-
- if ((is_numeric($probability)) && (is_numeric($alpha)) && (is_numeric($beta)) && (is_numeric($rMin)) && (is_numeric($rMax))) {
- if (($alpha <= 0) || ($beta <= 0) || ($rMin == $rMax) || ($probability <= 0) || ($probability > 1)) {
- return PHPExcel_Calculation_Functions::NaN();
- }
- if ($rMin > $rMax) {
- $tmp = $rMin;
- $rMin = $rMax;
- $rMax = $tmp;
- }
- $a = 0;
- $b = 2;
-
- $i = 0;
- while ((($b - $a) > PRECISION) && ($i++ < MAX_ITERATIONS)) {
- $guess = ($a + $b) / 2;
- $result = self::BETADIST($guess, $alpha, $beta);
- if (($result == $probability) || ($result == 0)) {
- $b = $a;
- } elseif ($result > $probability) {
- $b = $guess;
- } else {
- $a = $guess;
- }
- }
- if ($i == MAX_ITERATIONS) {
- return PHPExcel_Calculation_Functions::NA();
- }
- return round($rMin + $guess * ($rMax - $rMin),12);
- }
- return PHPExcel_Calculation_Functions::VALUE();
- } // function BETAINV()
-
-
- /**
- * BINOMDIST
- *
- * Returns the individual term binomial distribution probability. Use BINOMDIST in problems with
- * a fixed number of tests or trials, when the outcomes of any trial are only success or failure,
- * when trials are independent, and when the probability of success is constant throughout the
- * experiment. For example, BINOMDIST can calculate the probability that two of the next three
- * babies born are male.
- *
- * @param float $value Number of successes in trials
- * @param float $trials Number of trials
- * @param float $probability Probability of success on each trial
- * @param boolean $cumulative
- * @return float
- *
- * @todo Cumulative distribution function
- *
- */
- public static function BINOMDIST($value, $trials, $probability, $cumulative) {
- $value = floor(PHPExcel_Calculation_Functions::flattenSingleValue($value));
- $trials = floor(PHPExcel_Calculation_Functions::flattenSingleValue($trials));
- $probability = PHPExcel_Calculation_Functions::flattenSingleValue($probability);
-
- if ((is_numeric($value)) && (is_numeric($trials)) && (is_numeric($probability))) {
- if (($value < 0) || ($value > $trials)) {
- return PHPExcel_Calculation_Functions::NaN();
- }
- if (($probability < 0) || ($probability > 1)) {
- return PHPExcel_Calculation_Functions::NaN();
- }
- if ((is_numeric($cumulative)) || (is_bool($cumulative))) {
- if ($cumulative) {
- $summer = 0;
- for ($i = 0; $i <= $value; ++$i) {
- $summer += PHPExcel_Calculation_MathTrig::COMBIN($trials,$i) * pow($probability,$i) * pow(1 - $probability,$trials - $i);
- }
- return $summer;
- } else {
- return PHPExcel_Calculation_MathTrig::COMBIN($trials,$value) * pow($probability,$value) * pow(1 - $probability,$trials - $value) ;
- }
- }
- }
- return PHPExcel_Calculation_Functions::VALUE();
- } // function BINOMDIST()
-
-
- /**
- * CHIDIST
- *
- * Returns the one-tailed probability of the chi-squared distribution.
- *
- * @param float $value Value for the function
- * @param float $degrees degrees of freedom
- * @return float
- */
- public static function CHIDIST($value, $degrees) {
- $value = PHPExcel_Calculation_Functions::flattenSingleValue($value);
- $degrees = floor(PHPExcel_Calculation_Functions::flattenSingleValue($degrees));
-
- if ((is_numeric($value)) && (is_numeric($degrees))) {
- if ($degrees < 1) {
- return PHPExcel_Calculation_Functions::NaN();
- }
- if ($value < 0) {
- if (PHPExcel_Calculation_Functions::getCompatibilityMode() == PHPExcel_Calculation_Functions::COMPATIBILITY_GNUMERIC) {
- return 1;
- }
- return PHPExcel_Calculation_Functions::NaN();
- }
- return 1 - (self::_incompleteGamma($degrees/2,$value/2) / self::_gamma($degrees/2));
- }
- return PHPExcel_Calculation_Functions::VALUE();
- } // function CHIDIST()
-
-
- /**
- * CHIINV
- *
- * Returns the one-tailed probability of the chi-squared distribution.
- *
- * @param float $probability Probability for the function
- * @param float $degrees degrees of freedom
- * @return float
- */
- public static function CHIINV($probability, $degrees) {
- $probability = PHPExcel_Calculation_Functions::flattenSingleValue($probability);
- $degrees = floor(PHPExcel_Calculation_Functions::flattenSingleValue($degrees));
-
- if ((is_numeric($probability)) && (is_numeric($degrees))) {
-
- $xLo = 100;
- $xHi = 0;
-
- $x = $xNew = 1;
- $dx = 1;
- $i = 0;
-
- while ((abs($dx) > PRECISION) && ($i++ < MAX_ITERATIONS)) {
- // Apply Newton-Raphson step
- $result = self::CHIDIST($x, $degrees);
- $error = $result - $probability;
- if ($error == 0.0) {
- $dx = 0;
- } elseif ($error < 0.0) {
- $xLo = $x;
- } else {
- $xHi = $x;
- }
- // Avoid division by zero
- if ($result != 0.0) {
- $dx = $error / $result;
- $xNew = $x - $dx;
- }
- // If the NR fails to converge (which for example may be the
- // case if the initial guess is too rough) we apply a bisection
- // step to determine a more narrow interval around the root.
- if (($xNew < $xLo) || ($xNew > $xHi) || ($result == 0.0)) {
- $xNew = ($xLo + $xHi) / 2;
- $dx = $xNew - $x;
- }
- $x = $xNew;
- }
- if ($i == MAX_ITERATIONS) {
- return PHPExcel_Calculation_Functions::NA();
- }
- return round($x,12);
- }
- return PHPExcel_Calculation_Functions::VALUE();
- } // function CHIINV()
-
-
- /**
- * CONFIDENCE
- *
- * Returns the confidence interval for a population mean
- *
- * @param float $alpha
- * @param float $stdDev Standard Deviation
- * @param float $size
- * @return float
- *
- */
- public static function CONFIDENCE($alpha,$stdDev,$size) {
- $alpha = PHPExcel_Calculation_Functions::flattenSingleValue($alpha);
- $stdDev = PHPExcel_Calculation_Functions::flattenSingleValue($stdDev);
- $size = floor(PHPExcel_Calculation_Functions::flattenSingleValue($size));
-
- if ((is_numeric($alpha)) && (is_numeric($stdDev)) && (is_numeric($size))) {
- if (($alpha <= 0) || ($alpha >= 1)) {
- return PHPExcel_Calculation_Functions::NaN();
- }
- if (($stdDev <= 0) || ($size < 1)) {
- return PHPExcel_Calculation_Functions::NaN();
- }
- return self::NORMSINV(1 - $alpha / 2) * $stdDev / sqrt($size);
- }
- return PHPExcel_Calculation_Functions::VALUE();
- } // function CONFIDENCE()
-
-
- /**
- * CORREL
- *
- * Returns covariance, the average of the products of deviations for each data point pair.
- *
- * @param array of mixed Data Series Y
- * @param array of mixed Data Series X
- * @return float
- */
- public static function CORREL($yValues,$xValues=null) {
- if ((is_null($xValues)) || (!is_array($yValues)) || (!is_array($xValues))) {
- return PHPExcel_Calculation_Functions::VALUE();
- }
- if (!self::_checkTrendArrays($yValues,$xValues)) {
- return PHPExcel_Calculation_Functions::VALUE();
- }
- $yValueCount = count($yValues);
- $xValueCount = count($xValues);
-
- if (($yValueCount == 0) || ($yValueCount != $xValueCount)) {
- return PHPExcel_Calculation_Functions::NA();
- } elseif ($yValueCount == 1) {
- return PHPExcel_Calculation_Functions::DIV0();
- }
-
- $bestFitLinear = trendClass::calculate(trendClass::TREND_LINEAR,$yValues,$xValues);
- return $bestFitLinear->getCorrelation();
- } // function CORREL()
-
-
- /**
- * COUNT
- *
- * Counts the number of cells that contain numbers within the list of arguments
- *
- * Excel Function:
- * COUNT(value1[,value2[, ...]])
- *
- * @access public
- * @category Statistical Functions
- * @param mixed $arg,... Data values
- * @return int
- */
- public static function COUNT() {
- // Return value
- $returnValue = 0;
-
- // Loop through arguments
- $aArgs = PHPExcel_Calculation_Functions::flattenArrayIndexed(func_get_args());
- foreach ($aArgs as $k => $arg) {
- if ((is_bool($arg)) &&
- ((!PHPExcel_Calculation_Functions::isCellValue($k)) || (PHPExcel_Calculation_Functions::getCompatibilityMode() == PHPExcel_Calculation_Functions::COMPATIBILITY_OPENOFFICE))) {
- $arg = (integer) $arg;
- }
- // Is it a numeric value?
- if ((is_numeric($arg)) && (!is_string($arg))) {
- ++$returnValue;
- }
- }
-
- // Return
- return $returnValue;
- } // function COUNT()
-
-
- /**
- * COUNTA
- *
- * Counts the number of cells that are not empty within the list of arguments
- *
- * Excel Function:
- * COUNTA(value1[,value2[, ...]])
- *
- * @access public
- * @category Statistical Functions
- * @param mixed $arg,... Data values
- * @return int
- */
- public static function COUNTA() {
- // Return value
- $returnValue = 0;
-
- // Loop through arguments
- $aArgs = PHPExcel_Calculation_Functions::flattenArray(func_get_args());
- foreach ($aArgs as $arg) {
- // Is it a numeric, boolean or string value?
- if ((is_numeric($arg)) || (is_bool($arg)) || ((is_string($arg) && ($arg != '')))) {
- ++$returnValue;
- }
- }
-
- // Return
- return $returnValue;
- } // function COUNTA()
-
-
- /**
- * COUNTBLANK
- *
- * Counts the number of empty cells within the list of arguments
- *
- * Excel Function:
- * COUNTBLANK(value1[,value2[, ...]])
- *
- * @access public
- * @category Statistical Functions
- * @param mixed $arg,... Data values
- * @return int
- */
- public static function COUNTBLANK() {
- // Return value
- $returnValue = 0;
-
- // Loop through arguments
- $aArgs = PHPExcel_Calculation_Functions::flattenArray(func_get_args());
- foreach ($aArgs as $arg) {
- // Is it a blank cell?
- if ((is_null($arg)) || ((is_string($arg)) && ($arg == ''))) {
- ++$returnValue;
- }
- }
-
- // Return
- return $returnValue;
- } // function COUNTBLANK()
-
-
- /**
- * COUNTIF
- *
- * Counts the number of cells that contain numbers within the list of arguments
- *
- * Excel Function:
- * COUNTIF(value1[,value2[, ...]],condition)
- *
- * @access public
- * @category Statistical Functions
- * @param mixed $arg,... Data values
- * @param string $condition The criteria that defines which cells will be counted.
- * @return int
- */
- public static function COUNTIF($aArgs,$condition) {
- // Return value
- $returnValue = 0;
-
- $aArgs = PHPExcel_Calculation_Functions::flattenArray($aArgs);
- $condition = PHPExcel_Calculation_Functions::_ifCondition($condition);
- // Loop through arguments
- foreach ($aArgs as $arg) {
- if (!is_numeric($arg)) { $arg = PHPExcel_Calculation::_wrapResult(strtoupper($arg)); }
- $testCondition = '='.$arg.$condition;
- if (PHPExcel_Calculation::getInstance()->_calculateFormulaValue($testCondition)) {
- // Is it a value within our criteria
- ++$returnValue;
- }
- }
-
- // Return
- return $returnValue;
- } // function COUNTIF()
-
-
- /**
- * COVAR
- *
- * Returns covariance, the average of the products of deviations for each data point pair.
- *
- * @param array of mixed Data Series Y
- * @param array of mixed Data Series X
- * @return float
- */
- public static function COVAR($yValues,$xValues) {
- if (!self::_checkTrendArrays($yValues,$xValues)) {
- return PHPExcel_Calculation_Functions::VALUE();
- }
- $yValueCount = count($yValues);
- $xValueCount = count($xValues);
-
- if (($yValueCount == 0) || ($yValueCount != $xValueCount)) {
- return PHPExcel_Calculation_Functions::NA();
- } elseif ($yValueCount == 1) {
- return PHPExcel_Calculation_Functions::DIV0();
- }
-
- $bestFitLinear = trendClass::calculate(trendClass::TREND_LINEAR,$yValues,$xValues);
- return $bestFitLinear->getCovariance();
- } // function COVAR()
-
-
- /**
- * CRITBINOM
- *
- * Returns the smallest value for which the cumulative binomial distribution is greater
- * than or equal to a criterion value
- *
- * See http://support.microsoft.com/kb/828117/ for details of the algorithm used
- *
- * @param float $trials number of Bernoulli trials
- * @param float $probability probability of a success on each trial
- * @param float $alpha criterion value
- * @return int
- *
- * @todo Warning. This implementation differs from the algorithm detailed on the MS
- * web site in that $CumPGuessMinus1 = $CumPGuess - 1 rather than $CumPGuess - $PGuess
- * This eliminates a potential endless loop error, but may have an adverse affect on the
- * accuracy of the function (although all my tests have so far returned correct results).
- *
- */
- public static function CRITBINOM($trials, $probability, $alpha) {
- $trials = floor(PHPExcel_Calculation_Functions::flattenSingleValue($trials));
- $probability = PHPExcel_Calculation_Functions::flattenSingleValue($probability);
- $alpha = PHPExcel_Calculation_Functions::flattenSingleValue($alpha);
-
- if ((is_numeric($trials)) && (is_numeric($probability)) && (is_numeric($alpha))) {
- if ($trials < 0) {
- return PHPExcel_Calculation_Functions::NaN();
- }
- if (($probability < 0) || ($probability > 1)) {
- return PHPExcel_Calculation_Functions::NaN();
- }
- if (($alpha < 0) || ($alpha > 1)) {
- return PHPExcel_Calculation_Functions::NaN();
- }
- if ($alpha <= 0.5) {
- $t = sqrt(log(1 / ($alpha * $alpha)));
- $trialsApprox = 0 - ($t + (2.515517 + 0.802853 * $t + 0.010328 * $t * $t) / (1 + 1.432788 * $t + 0.189269 * $t * $t + 0.001308 * $t * $t * $t));
- } else {
- $t = sqrt(log(1 / pow(1 - $alpha,2)));
- $trialsApprox = $t - (2.515517 + 0.802853 * $t + 0.010328 * $t * $t) / (1 + 1.432788 * $t + 0.189269 * $t * $t + 0.001308 * $t * $t * $t);
- }
- $Guess = floor($trials * $probability + $trialsApprox * sqrt($trials * $probability * (1 - $probability)));
- if ($Guess < 0) {
- $Guess = 0;
- } elseif ($Guess > $trials) {
- $Guess = $trials;
- }
-
- $TotalUnscaledProbability = $UnscaledPGuess = $UnscaledCumPGuess = 0.0;
- $EssentiallyZero = 10e-12;
-
- $m = floor($trials * $probability);
- ++$TotalUnscaledProbability;
- if ($m == $Guess) { ++$UnscaledPGuess; }
- if ($m <= $Guess) { ++$UnscaledCumPGuess; }
-
- $PreviousValue = 1;
- $Done = False;
- $k = $m + 1;
- while ((!$Done) && ($k <= $trials)) {
- $CurrentValue = $PreviousValue * ($trials - $k + 1) * $probability / ($k * (1 - $probability));
- $TotalUnscaledProbability += $CurrentValue;
- if ($k == $Guess) { $UnscaledPGuess += $CurrentValue; }
- if ($k <= $Guess) { $UnscaledCumPGuess += $CurrentValue; }
- if ($CurrentValue <= $EssentiallyZero) { $Done = True; }
- $PreviousValue = $CurrentValue;
- ++$k;
- }
-
- $PreviousValue = 1;
- $Done = False;
- $k = $m - 1;
- while ((!$Done) && ($k >= 0)) {
- $CurrentValue = $PreviousValue * $k + 1 * (1 - $probability) / (($trials - $k) * $probability);
- $TotalUnscaledProbability += $CurrentValue;
- if ($k == $Guess) { $UnscaledPGuess += $CurrentValue; }
- if ($k <= $Guess) { $UnscaledCumPGuess += $CurrentValue; }
- if ($CurrentValue <= $EssentiallyZero) { $Done = True; }
- $PreviousValue = $CurrentValue;
- --$k;
- }
-
- $PGuess = $UnscaledPGuess / $TotalUnscaledProbability;
- $CumPGuess = $UnscaledCumPGuess / $TotalUnscaledProbability;
-
-// $CumPGuessMinus1 = $CumPGuess - $PGuess;
- $CumPGuessMinus1 = $CumPGuess - 1;
-
- while (True) {
- if (($CumPGuessMinus1 < $alpha) && ($CumPGuess >= $alpha)) {
- return $Guess;
- } elseif (($CumPGuessMinus1 < $alpha) && ($CumPGuess < $alpha)) {
- $PGuessPlus1 = $PGuess * ($trials - $Guess) * $probability / $Guess / (1 - $probability);
- $CumPGuessMinus1 = $CumPGuess;
- $CumPGuess = $CumPGuess + $PGuessPlus1;
- $PGuess = $PGuessPlus1;
- ++$Guess;
- } elseif (($CumPGuessMinus1 >= $alpha) && ($CumPGuess >= $alpha)) {
- $PGuessMinus1 = $PGuess * $Guess * (1 - $probability) / ($trials - $Guess + 1) / $probability;
- $CumPGuess = $CumPGuessMinus1;
- $CumPGuessMinus1 = $CumPGuessMinus1 - $PGuess;
- $PGuess = $PGuessMinus1;
- --$Guess;
- }
- }
- }
- return PHPExcel_Calculation_Functions::VALUE();
- } // function CRITBINOM()
-
-
- /**
- * DEVSQ
- *
- * Returns the sum of squares of deviations of data points from their sample mean.
- *
- * Excel Function:
- * DEVSQ(value1[,value2[, ...]])
- *
- * @access public
- * @category Statistical Functions
- * @param mixed $arg,... Data values
- * @return float
- */
- public static function DEVSQ() {
- $aArgs = PHPExcel_Calculation_Functions::flattenArrayIndexed(func_get_args());
-
- // Return value
- $returnValue = null;
-
- $aMean = self::AVERAGE($aArgs);
- if ($aMean != PHPExcel_Calculation_Functions::DIV0()) {
- $aCount = -1;
- foreach ($aArgs as $k => $arg) {
- // Is it a numeric value?
- if ((is_bool($arg)) &&
- ((!PHPExcel_Calculation_Functions::isCellValue($k)) || (PHPExcel_Calculation_Functions::getCompatibilityMode() == PHPExcel_Calculation_Functions::COMPATIBILITY_OPENOFFICE))) {
- $arg = (integer) $arg;
- }
- if ((is_numeric($arg)) && (!is_string($arg))) {
- if (is_null($returnValue)) {
- $returnValue = pow(($arg - $aMean),2);
- } else {
- $returnValue += pow(($arg - $aMean),2);
- }
- ++$aCount;
- }
- }
-
- // Return
- if (is_null($returnValue)) {
- return PHPExcel_Calculation_Functions::NaN();
- } else {
- return $returnValue;
- }
- }
- return self::NA();
- } // function DEVSQ()
-
-
- /**
- * EXPONDIST
- *
- * Returns the exponential distribution. Use EXPONDIST to model the time between events,
- * such as how long an automated bank teller takes to deliver cash. For example, you can
- * use EXPONDIST to determine the probability that the process takes at most 1 minute.
- *
- * @param float $value Value of the function
- * @param float $lambda The parameter value
- * @param boolean $cumulative
- * @return float
- */
- public static function EXPONDIST($value, $lambda, $cumulative) {
- $value = PHPExcel_Calculation_Functions::flattenSingleValue($value);
- $lambda = PHPExcel_Calculation_Functions::flattenSingleValue($lambda);
- $cumulative = PHPExcel_Calculation_Functions::flattenSingleValue($cumulative);
-
- if ((is_numeric($value)) && (is_numeric($lambda))) {
- if (($value < 0) || ($lambda < 0)) {
- return PHPExcel_Calculation_Functions::NaN();
- }
- if ((is_numeric($cumulative)) || (is_bool($cumulative))) {
- if ($cumulative) {
- return 1 - exp(0-$value*$lambda);
- } else {
- return $lambda * exp(0-$value*$lambda);
- }
- }
- }
- return PHPExcel_Calculation_Functions::VALUE();
- } // function EXPONDIST()
-
-
- /**
- * FISHER
- *
- * Returns the Fisher transformation at x. This transformation produces a function that
- * is normally distributed rather than skewed. Use this function to perform hypothesis
- * testing on the correlation coefficient.
- *
- * @param float $value
- * @return float
- */
- public static function FISHER($value) {
- $value = PHPExcel_Calculation_Functions::flattenSingleValue($value);
-
- if (is_numeric($value)) {
- if (($value <= -1) || ($value >= 1)) {
- return PHPExcel_Calculation_Functions::NaN();
- }
- return 0.5 * log((1+$value)/(1-$value));
- }
- return PHPExcel_Calculation_Functions::VALUE();
- } // function FISHER()
-
-
- /**
- * FISHERINV
- *
- * Returns the inverse of the Fisher transformation. Use this transformation when
- * analyzing correlations between ranges or arrays of data. If y = FISHER(x), then
- * FISHERINV(y) = x.
- *
- * @param float $value
- * @return float
- */
- public static function FISHERINV($value) {
- $value = PHPExcel_Calculation_Functions::flattenSingleValue($value);
-
- if (is_numeric($value)) {
- return (exp(2 * $value) - 1) / (exp(2 * $value) + 1);
- }
- return PHPExcel_Calculation_Functions::VALUE();
- } // function FISHERINV()
-
-
- /**
- * FORECAST
- *
- * Calculates, or predicts, a future value by using existing values. The predicted value is a y-value for a given x-value.
- *
- * @param float Value of X for which we want to find Y
- * @param array of mixed Data Series Y
- * @param array of mixed Data Series X
- * @return float
- */
- public static function FORECAST($xValue,$yValues,$xValues) {
- $xValue = PHPExcel_Calculation_Functions::flattenSingleValue($xValue);
- if (!is_numeric($xValue)) {
- return PHPExcel_Calculation_Functions::VALUE();
- }
-
- if (!self::_checkTrendArrays($yValues,$xValues)) {
- return PHPExcel_Calculation_Functions::VALUE();
- }
- $yValueCount = count($yValues);
- $xValueCount = count($xValues);
-
- if (($yValueCount == 0) || ($yValueCount != $xValueCount)) {
- return PHPExcel_Calculation_Functions::NA();
- } elseif ($yValueCount == 1) {
- return PHPExcel_Calculation_Functions::DIV0();
- }
-
- $bestFitLinear = trendClass::calculate(trendClass::TREND_LINEAR,$yValues,$xValues);
- return $bestFitLinear->getValueOfYForX($xValue);
- } // function FORECAST()
-
-
- /**
- * GAMMADIST
- *
- * Returns the gamma distribution.
- *
- * @param float $value Value at which you want to evaluate the distribution
- * @param float $a Parameter to the distribution
- * @param float $b Parameter to the distribution
- * @param boolean $cumulative
- * @return float
- *
- */
- public static function GAMMADIST($value,$a,$b,$cumulative) {
- $value = PHPExcel_Calculation_Functions::flattenSingleValue($value);
- $a = PHPExcel_Calculation_Functions::flattenSingleValue($a);
- $b = PHPExcel_Calculation_Functions::flattenSingleValue($b);
-
- if ((is_numeric($value)) && (is_numeric($a)) && (is_numeric($b))) {
- if (($value < 0) || ($a <= 0) || ($b <= 0)) {
- return PHPExcel_Calculation_Functions::NaN();
- }
- if ((is_numeric($cumulative)) || (is_bool($cumulative))) {
- if ($cumulative) {
- return self::_incompleteGamma($a,$value / $b) / self::_gamma($a);
- } else {
- return (1 / (pow($b,$a) * self::_gamma($a))) * pow($value,$a-1) * exp(0-($value / $b));
- }
- }
- }
- return PHPExcel_Calculation_Functions::VALUE();
- } // function GAMMADIST()
-
-
- /**
- * GAMMAINV
- *
- * Returns the inverse of the beta distribution.
- *
- * @param float $probability Probability at which you want to evaluate the distribution
- * @param float $alpha Parameter to the distribution
- * @param float $beta Parameter to the distribution
- * @return float
- *
- */
- public static function GAMMAINV($probability,$alpha,$beta) {
- $probability = PHPExcel_Calculation_Functions::flattenSingleValue($probability);
- $alpha = PHPExcel_Calculation_Functions::flattenSingleValue($alpha);
- $beta = PHPExcel_Calculation_Functions::flattenSingleValue($beta);
-
- if ((is_numeric($probability)) && (is_numeric($alpha)) && (is_numeric($beta))) {
- if (($alpha <= 0) || ($beta <= 0) || ($probability < 0) || ($probability > 1)) {
- return PHPExcel_Calculation_Functions::NaN();
- }
-
- $xLo = 0;
- $xHi = $alpha * $beta * 5;
-
- $x = $xNew = 1;
- $error = $pdf = 0;
- $dx = 1024;
- $i = 0;
-
- while ((abs($dx) > PRECISION) && ($i++ < MAX_ITERATIONS)) {
- // Apply Newton-Raphson step
- $error = self::GAMMADIST($x, $alpha, $beta, True) - $probability;
- if ($error < 0.0) {
- $xLo = $x;
- } else {
- $xHi = $x;
- }
- $pdf = self::GAMMADIST($x, $alpha, $beta, False);
- // Avoid division by zero
- if ($pdf != 0.0) {
- $dx = $error / $pdf;
- $xNew = $x - $dx;
- }
- // If the NR fails to converge (which for example may be the
- // case if the initial guess is too rough) we apply a bisection
- // step to determine a more narrow interval around the root.
- if (($xNew < $xLo) || ($xNew > $xHi) || ($pdf == 0.0)) {
- $xNew = ($xLo + $xHi) / 2;
- $dx = $xNew - $x;
- }
- $x = $xNew;
- }
- if ($i == MAX_ITERATIONS) {
- return PHPExcel_Calculation_Functions::NA();
- }
- return $x;
- }
- return PHPExcel_Calculation_Functions::VALUE();
- } // function GAMMAINV()
-
-
- /**
- * GAMMALN
- *
- * Returns the natural logarithm of the gamma function.
- *
- * @param float $value
- * @return float
- */
- public static function GAMMALN($value) {
- $value = PHPExcel_Calculation_Functions::flattenSingleValue($value);
-
- if (is_numeric($value)) {
- if ($value <= 0) {
- return PHPExcel_Calculation_Functions::NaN();
- }
- return log(self::_gamma($value));
- }
- return PHPExcel_Calculation_Functions::VALUE();
- } // function GAMMALN()
-
-
- /**
- * GEOMEAN
- *
- * Returns the geometric mean of an array or range of positive data. For example, you
- * can use GEOMEAN to calculate average growth rate given compound interest with
- * variable rates.
- *
- * Excel Function:
- * GEOMEAN(value1[,value2[, ...]])
- *
- * @access public
- * @category Statistical Functions
- * @param mixed $arg,... Data values
- * @return float
- */
- public static function GEOMEAN() {
- $aArgs = PHPExcel_Calculation_Functions::flattenArray(func_get_args());
-
- $aMean = PHPExcel_Calculation_MathTrig::PRODUCT($aArgs);
- if (is_numeric($aMean) && ($aMean > 0)) {
- $aCount = self::COUNT($aArgs) ;
- if (self::MIN($aArgs) > 0) {
- return pow($aMean, (1 / $aCount));
- }
- }
- return PHPExcel_Calculation_Functions::NaN();
- } // GEOMEAN()
-
-
- /**
- * GROWTH
- *
- * Returns values along a predicted emponential trend
- *
- * @param array of mixed Data Series Y
- * @param array of mixed Data Series X
- * @param array of mixed Values of X for which we want to find Y
- * @param boolean A logical value specifying whether to force the intersect to equal 0.
- * @return array of float
- */
- public static function GROWTH($yValues,$xValues=array(),$newValues=array(),$const=True) {
- $yValues = PHPExcel_Calculation_Functions::flattenArray($yValues);
- $xValues = PHPExcel_Calculation_Functions::flattenArray($xValues);
- $newValues = PHPExcel_Calculation_Functions::flattenArray($newValues);
- $const = (is_null($const)) ? True : (boolean) PHPExcel_Calculation_Functions::flattenSingleValue($const);
-
- $bestFitExponential = trendClass::calculate(trendClass::TREND_EXPONENTIAL,$yValues,$xValues,$const);
- if (empty($newValues)) {
- $newValues = $bestFitExponential->getXValues();
- }
-
- $returnArray = array();
- foreach($newValues as $xValue) {
- $returnArray[0][] = $bestFitExponential->getValueOfYForX($xValue);
- }
-
- return $returnArray;
- } // function GROWTH()
-
-
- /**
- * HARMEAN
- *
- * Returns the harmonic mean of a data set. The harmonic mean is the reciprocal of the
- * arithmetic mean of reciprocals.
- *
- * Excel Function:
- * HARMEAN(value1[,value2[, ...]])
- *
- * @access public
- * @category Statistical Functions
- * @param mixed $arg,... Data values
- * @return float
- */
- public static function HARMEAN() {
- // Return value
- $returnValue = PHPExcel_Calculation_Functions::NA();
-
- // Loop through arguments
- $aArgs = PHPExcel_Calculation_Functions::flattenArray(func_get_args());
- if (self::MIN($aArgs) < 0) {
- return PHPExcel_Calculation_Functions::NaN();
- }
- $aCount = 0;
- foreach ($aArgs as $arg) {
- // Is it a numeric value?
- if ((is_numeric($arg)) && (!is_string($arg))) {
- if ($arg <= 0) {
- return PHPExcel_Calculation_Functions::NaN();
- }
- if (is_null($returnValue)) {
- $returnValue = (1 / $arg);
- } else {
- $returnValue += (1 / $arg);
- }
- ++$aCount;
- }
- }
-
- // Return
- if ($aCount > 0) {
- return 1 / ($returnValue / $aCount);
- } else {
- return $returnValue;
- }
- } // function HARMEAN()
-
-
- /**
- * HYPGEOMDIST
- *
- * Returns the hypergeometric distribution. HYPGEOMDIST returns the probability of a given number of
- * sample successes, given the sample size, population successes, and population size.
- *
- * @param float $sampleSuccesses Number of successes in the sample
- * @param float $sampleNumber Size of the sample
- * @param float $populationSuccesses Number of successes in the population
- * @param float $populationNumber Population size
- * @return float
- *
- */
- public static function HYPGEOMDIST($sampleSuccesses, $sampleNumber, $populationSuccesses, $populationNumber) {
- $sampleSuccesses = floor(PHPExcel_Calculation_Functions::flattenSingleValue($sampleSuccesses));
- $sampleNumber = floor(PHPExcel_Calculation_Functions::flattenSingleValue($sampleNumber));
- $populationSuccesses = floor(PHPExcel_Calculation_Functions::flattenSingleValue($populationSuccesses));
- $populationNumber = floor(PHPExcel_Calculation_Functions::flattenSingleValue($populationNumber));
-
- if ((is_numeric($sampleSuccesses)) && (is_numeric($sampleNumber)) && (is_numeric($populationSuccesses)) && (is_numeric($populationNumber))) {
- if (($sampleSuccesses < 0) || ($sampleSuccesses > $sampleNumber) || ($sampleSuccesses > $populationSuccesses)) {
- return PHPExcel_Calculation_Functions::NaN();
- }
- if (($sampleNumber <= 0) || ($sampleNumber > $populationNumber)) {
- return PHPExcel_Calculation_Functions::NaN();
- }
- if (($populationSuccesses <= 0) || ($populationSuccesses > $populationNumber)) {
- return PHPExcel_Calculation_Functions::NaN();
- }
- return PHPExcel_Calculation_MathTrig::COMBIN($populationSuccesses,$sampleSuccesses) *
- PHPExcel_Calculation_MathTrig::COMBIN($populationNumber - $populationSuccesses,$sampleNumber - $sampleSuccesses) /
- PHPExcel_Calculation_MathTrig::COMBIN($populationNumber,$sampleNumber);
- }
- return PHPExcel_Calculation_Functions::VALUE();
- } // function HYPGEOMDIST()
-
-
- /**
- * INTERCEPT
- *
- * Calculates the point at which a line will intersect the y-axis by using existing x-values and y-values.
- *
- * @param array of mixed Data Series Y
- * @param array of mixed Data Series X
- * @return float
- */
- public static function INTERCEPT($yValues,$xValues) {
- if (!self::_checkTrendArrays($yValues,$xValues)) {
- return PHPExcel_Calculation_Functions::VALUE();
- }
- $yValueCount = count($yValues);
- $xValueCount = count($xValues);
-
- if (($yValueCount == 0) || ($yValueCount != $xValueCount)) {
- return PHPExcel_Calculation_Functions::NA();
- } elseif ($yValueCount == 1) {
- return PHPExcel_Calculation_Functions::DIV0();
- }
-
- $bestFitLinear = trendClass::calculate(trendClass::TREND_LINEAR,$yValues,$xValues);
- return $bestFitLinear->getIntersect();
- } // function INTERCEPT()
-
-
- /**
- * KURT
- *
- * Returns the kurtosis of a data set. Kurtosis characterizes the relative peakedness
- * or flatness of a distribution compared with the normal distribution. Positive
- * kurtosis indicates a relatively peaked distribution. Negative kurtosis indicates a
- * relatively flat distribution.
- *
- * @param array Data Series
- * @return float
- */
- public static function KURT() {
- $aArgs = PHPExcel_Calculation_Functions::flattenArrayIndexed(func_get_args());
- $mean = self::AVERAGE($aArgs);
- $stdDev = self::STDEV($aArgs);
-
- if ($stdDev > 0) {
- $count = $summer = 0;
- // Loop through arguments
- foreach ($aArgs as $k => $arg) {
- if ((is_bool($arg)) &&
- (!PHPExcel_Calculation_Functions::isMatrixValue($k))) {
- } else {
- // Is it a numeric value?
- if ((is_numeric($arg)) && (!is_string($arg))) {
- $summer += pow((($arg - $mean) / $stdDev),4) ;
- ++$count;
- }
- }
- }
-
- // Return
- if ($count > 3) {
- return $summer * ($count * ($count+1) / (($count-1) * ($count-2) * ($count-3))) - (3 * pow($count-1,2) / (($count-2) * ($count-3)));
- }
- }
- return PHPExcel_Calculation_Functions::DIV0();
- } // function KURT()
-
-
- /**
- * LARGE
- *
- * Returns the nth largest value in a data set. You can use this function to
- * select a value based on its relative standing.
- *
- * Excel Function:
- * LARGE(value1[,value2[, ...]],entry)
- *
- * @access public
- * @category Statistical Functions
- * @param mixed $arg,... Data values
- * @param int $entry Position (ordered from the largest) in the array or range of data to return
- * @return float
- *
- */
- public static function LARGE() {
- $aArgs = PHPExcel_Calculation_Functions::flattenArray(func_get_args());
-
- // Calculate
- $entry = floor(array_pop($aArgs));
-
- if ((is_numeric($entry)) && (!is_string($entry))) {
- $mArgs = array();
- foreach ($aArgs as $arg) {
- // Is it a numeric value?
- if ((is_numeric($arg)) && (!is_string($arg))) {
- $mArgs[] = $arg;
- }
- }
- $count = self::COUNT($mArgs);
- $entry = floor(--$entry);
- if (($entry < 0) || ($entry >= $count) || ($count == 0)) {
- return PHPExcel_Calculation_Functions::NaN();
- }
- rsort($mArgs);
- return $mArgs[$entry];
- }
- return PHPExcel_Calculation_Functions::VALUE();
- } // function LARGE()
-
-
- /**
- * LINEST
- *
- * Calculates the statistics for a line by using the "least squares" method to calculate a straight line that best fits your data,
- * and then returns an array that describes the line.
- *
- * @param array of mixed Data Series Y
- * @param array of mixed Data Series X
- * @param boolean A logical value specifying whether to force the intersect to equal 0.
- * @param boolean A logical value specifying whether to return additional regression statistics.
- * @return array
- */
- public static function LINEST($yValues,$xValues=null,$const=True,$stats=False) {
- $const = (is_null($const)) ? True : (boolean) PHPExcel_Calculation_Functions::flattenSingleValue($const);
- $stats = (is_null($stats)) ? False : (boolean) PHPExcel_Calculation_Functions::flattenSingleValue($stats);
- if (is_null($xValues)) $xValues = range(1,count(PHPExcel_Calculation_Functions::flattenArray($yValues)));
-
- if (!self::_checkTrendArrays($yValues,$xValues)) {
- return PHPExcel_Calculation_Functions::VALUE();
- }
- $yValueCount = count($yValues);
- $xValueCount = count($xValues);
-
-
- if (($yValueCount == 0) || ($yValueCount != $xValueCount)) {
- return PHPExcel_Calculation_Functions::NA();
- } elseif ($yValueCount == 1) {
- return 0;
- }
-
- $bestFitLinear = trendClass::calculate(trendClass::TREND_LINEAR,$yValues,$xValues,$const);
- if ($stats) {
- return array( array( $bestFitLinear->getSlope(),
- $bestFitLinear->getSlopeSE(),
- $bestFitLinear->getGoodnessOfFit(),
- $bestFitLinear->getF(),
- $bestFitLinear->getSSRegression(),
- ),
- array( $bestFitLinear->getIntersect(),
- $bestFitLinear->getIntersectSE(),
- $bestFitLinear->getStdevOfResiduals(),
- $bestFitLinear->getDFResiduals(),
- $bestFitLinear->getSSResiduals()
- )
- );
- } else {
- return array( $bestFitLinear->getSlope(),
- $bestFitLinear->getIntersect()
- );
- }
- } // function LINEST()
-
-
- /**
- * LOGEST
- *
- * Calculates an exponential curve that best fits the X and Y data series,
- * and then returns an array that describes the line.
- *
- * @param array of mixed Data Series Y
- * @param array of mixed Data Series X
- * @param boolean A logical value specifying whether to force the intersect to equal 0.
- * @param boolean A logical value specifying whether to return additional regression statistics.
- * @return array
- */
- public static function LOGEST($yValues,$xValues=null,$const=True,$stats=False) {
- $const = (is_null($const)) ? True : (boolean) PHPExcel_Calculation_Functions::flattenSingleValue($const);
- $stats = (is_null($stats)) ? False : (boolean) PHPExcel_Calculation_Functions::flattenSingleValue($stats);
- if (is_null($xValues)) $xValues = range(1,count(PHPExcel_Calculation_Functions::flattenArray($yValues)));
-
- if (!self::_checkTrendArrays($yValues,$xValues)) {
- return PHPExcel_Calculation_Functions::VALUE();
- }
- $yValueCount = count($yValues);
- $xValueCount = count($xValues);
-
- foreach($yValues as $value) {
- if ($value <= 0.0) {
- return PHPExcel_Calculation_Functions::NaN();
- }
- }
-
-
- if (($yValueCount == 0) || ($yValueCount != $xValueCount)) {
- return PHPExcel_Calculation_Functions::NA();
- } elseif ($yValueCount == 1) {
- return 1;
- }
-
- $bestFitExponential = trendClass::calculate(trendClass::TREND_EXPONENTIAL,$yValues,$xValues,$const);
- if ($stats) {
- return array( array( $bestFitExponential->getSlope(),
- $bestFitExponential->getSlopeSE(),
- $bestFitExponential->getGoodnessOfFit(),
- $bestFitExponential->getF(),
- $bestFitExponential->getSSRegression(),
- ),
- array( $bestFitExponential->getIntersect(),
- $bestFitExponential->getIntersectSE(),
- $bestFitExponential->getStdevOfResiduals(),
- $bestFitExponential->getDFResiduals(),
- $bestFitExponential->getSSResiduals()
- )
- );
- } else {
- return array( $bestFitExponential->getSlope(),
- $bestFitExponential->getIntersect()
- );
- }
- } // function LOGEST()
-
-
- /**
- * LOGINV
- *
- * Returns the inverse of the normal cumulative distribution
- *
- * @param float $value
- * @return float
- *
- * @todo Try implementing P J Acklam's refinement algorithm for greater
- * accuracy if I can get my head round the mathematics
- * (as described at) http://home.online.no/~pjacklam/notes/invnorm/
- */
- public static function LOGINV($probability, $mean, $stdDev) {
- $probability = PHPExcel_Calculation_Functions::flattenSingleValue($probability);
- $mean = PHPExcel_Calculation_Functions::flattenSingleValue($mean);
- $stdDev = PHPExcel_Calculation_Functions::flattenSingleValue($stdDev);
-
- if ((is_numeric($probability)) && (is_numeric($mean)) && (is_numeric($stdDev))) {
- if (($probability < 0) || ($probability > 1) || ($stdDev <= 0)) {
- return PHPExcel_Calculation_Functions::NaN();
- }
- return exp($mean + $stdDev * self::NORMSINV($probability));
- }
- return PHPExcel_Calculation_Functions::VALUE();
- } // function LOGINV()
-
-
- /**
- * LOGNORMDIST
- *
- * Returns the cumulative lognormal distribution of x, where ln(x) is normally distributed
- * with parameters mean and standard_dev.
- *
- * @param float $value
- * @return float
- */
- public static function LOGNORMDIST($value, $mean, $stdDev) {
- $value = PHPExcel_Calculation_Functions::flattenSingleValue($value);
- $mean = PHPExcel_Calculation_Functions::flattenSingleValue($mean);
- $stdDev = PHPExcel_Calculation_Functions::flattenSingleValue($stdDev);
-
- if ((is_numeric($value)) && (is_numeric($mean)) && (is_numeric($stdDev))) {
- if (($value <= 0) || ($stdDev <= 0)) {
- return PHPExcel_Calculation_Functions::NaN();
- }
- return self::NORMSDIST((log($value) - $mean) / $stdDev);
- }
- return PHPExcel_Calculation_Functions::VALUE();
- } // function LOGNORMDIST()
-
-
- /**
- * MAX
- *
- * MAX returns the value of the element of the values passed that has the highest value,
- * with negative numbers considered smaller than positive numbers.
- *
- * Excel Function:
- * MAX(value1[,value2[, ...]])
- *
- * @access public
- * @category Statistical Functions
- * @param mixed $arg,... Data values
- * @return float
- */
- public static function MAX() {
- // Return value
- $returnValue = null;
-
- // Loop through arguments
- $aArgs = PHPExcel_Calculation_Functions::flattenArray(func_get_args());
- foreach ($aArgs as $arg) {
- // Is it a numeric value?
- if ((is_numeric($arg)) && (!is_string($arg))) {
- if ((is_null($returnValue)) || ($arg > $returnValue)) {
- $returnValue = $arg;
- }
- }
- }
-
- // Return
- if(is_null($returnValue)) {
- return 0;
- }
- return $returnValue;
- } // function MAX()
-
-
- /**
- * MAXA
- *
- * Returns the greatest value in a list of arguments, including numbers, text, and logical values
- *
- * Excel Function:
- * MAXA(value1[,value2[, ...]])
- *
- * @access public
- * @category Statistical Functions
- * @param mixed $arg,... Data values
- * @return float
- */
- public static function MAXA() {
- // Return value
- $returnValue = null;
-
- // Loop through arguments
- $aArgs = PHPExcel_Calculation_Functions::flattenArray(func_get_args());
- foreach ($aArgs as $arg) {
- // Is it a numeric value?
- if ((is_numeric($arg)) || (is_bool($arg)) || ((is_string($arg) && ($arg != '')))) {
- if (is_bool($arg)) {
- $arg = (integer) $arg;
- } elseif (is_string($arg)) {
- $arg = 0;
- }
- if ((is_null($returnValue)) || ($arg > $returnValue)) {
- $returnValue = $arg;
- }
- }
- }
-
- // Return
- if(is_null($returnValue)) {
- return 0;
- }
- return $returnValue;
- } // function MAXA()
-
-
- /**
- * MAXIF
- *
- * Counts the maximum value within a range of cells that contain numbers within the list of arguments
- *
- * Excel Function:
- * MAXIF(value1[,value2[, ...]],condition)
- *
- * @access public
- * @category Mathematical and Trigonometric Functions
- * @param mixed $arg,... Data values
- * @param string $condition The criteria that defines which cells will be checked.
- * @return float
- */
- public static function MAXIF($aArgs,$condition,$sumArgs = array()) {
- // Return value
- $returnValue = null;
-
- $aArgs = PHPExcel_Calculation_Functions::flattenArray($aArgs);
- $sumArgs = PHPExcel_Calculation_Functions::flattenArray($sumArgs);
- if (empty($sumArgs)) {
- $sumArgs = $aArgs;
- }
- $condition = PHPExcel_Calculation_Functions::_ifCondition($condition);
- // Loop through arguments
- foreach ($aArgs as $key => $arg) {
- if (!is_numeric($arg)) { $arg = PHPExcel_Calculation::_wrapResult(strtoupper($arg)); }
- $testCondition = '='.$arg.$condition;
- if (PHPExcel_Calculation::getInstance()->_calculateFormulaValue($testCondition)) {
- if ((is_null($returnValue)) || ($arg > $returnValue)) {
- $returnValue = $arg;
- }
- }
- }
-
- // Return
- return $returnValue;
- } // function MAXIF()
-
-
- /**
- * MEDIAN
- *
- * Returns the median of the given numbers. The median is the number in the middle of a set of numbers.
- *
- * Excel Function:
- * MEDIAN(value1[,value2[, ...]])
- *
- * @access public
- * @category Statistical Functions
- * @param mixed $arg,... Data values
- * @return float
- */
- public static function MEDIAN() {
- // Return value
- $returnValue = PHPExcel_Calculation_Functions::NaN();
-
- $mArgs = array();
- // Loop through arguments
- $aArgs = PHPExcel_Calculation_Functions::flattenArray(func_get_args());
- foreach ($aArgs as $arg) {
- // Is it a numeric value?
- if ((is_numeric($arg)) && (!is_string($arg))) {
- $mArgs[] = $arg;
- }
- }
-
- $mValueCount = count($mArgs);
- if ($mValueCount > 0) {
- sort($mArgs,SORT_NUMERIC);
- $mValueCount = $mValueCount / 2;
- if ($mValueCount == floor($mValueCount)) {
- $returnValue = ($mArgs[$mValueCount--] + $mArgs[$mValueCount]) / 2;
- } else {
- $mValueCount == floor($mValueCount);
- $returnValue = $mArgs[$mValueCount];
- }
- }
-
- // Return
- return $returnValue;
- } // function MEDIAN()
-
-
- /**
- * MIN
- *
- * MIN returns the value of the element of the values passed that has the smallest value,
- * with negative numbers considered smaller than positive numbers.
- *
- * Excel Function:
- * MIN(value1[,value2[, ...]])
- *
- * @access public
- * @category Statistical Functions
- * @param mixed $arg,... Data values
- * @return float
- */
- public static function MIN() {
- // Return value
- $returnValue = null;
-
- // Loop through arguments
- $aArgs = PHPExcel_Calculation_Functions::flattenArray(func_get_args());
- foreach ($aArgs as $arg) {
- // Is it a numeric value?
- if ((is_numeric($arg)) && (!is_string($arg))) {
- if ((is_null($returnValue)) || ($arg < $returnValue)) {
- $returnValue = $arg;
- }
- }
- }
-
- // Return
- if(is_null($returnValue)) {
- return 0;
- }
- return $returnValue;
- } // function MIN()
-
-
- /**
- * MINA
- *
- * Returns the smallest value in a list of arguments, including numbers, text, and logical values
- *
- * Excel Function:
- * MINA(value1[,value2[, ...]])
- *
- * @access public
- * @category Statistical Functions
- * @param mixed $arg,... Data values
- * @return float
- */
- public static function MINA() {
- // Return value
- $returnValue = null;
-
- // Loop through arguments
- $aArgs = PHPExcel_Calculation_Functions::flattenArray(func_get_args());
- foreach ($aArgs as $arg) {
- // Is it a numeric value?
- if ((is_numeric($arg)) || (is_bool($arg)) || ((is_string($arg) && ($arg != '')))) {
- if (is_bool($arg)) {
- $arg = (integer) $arg;
- } elseif (is_string($arg)) {
- $arg = 0;
- }
- if ((is_null($returnValue)) || ($arg < $returnValue)) {
- $returnValue = $arg;
- }
- }
- }
-
- // Return
- if(is_null($returnValue)) {
- return 0;
- }
- return $returnValue;
- } // function MINA()
-
-
- /**
- * MINIF
- *
- * Returns the minimum value within a range of cells that contain numbers within the list of arguments
- *
- * Excel Function:
- * MINIF(value1[,value2[, ...]],condition)
- *
- * @access public
- * @category Mathematical and Trigonometric Functions
- * @param mixed $arg,... Data values
- * @param string $condition The criteria that defines which cells will be checked.
- * @return float
- */
- public static function MINIF($aArgs,$condition,$sumArgs = array()) {
- // Return value
- $returnValue = null;
-
- $aArgs = PHPExcel_Calculation_Functions::flattenArray($aArgs);
- $sumArgs = PHPExcel_Calculation_Functions::flattenArray($sumArgs);
- if (empty($sumArgs)) {
- $sumArgs = $aArgs;
- }
- $condition = PHPExcel_Calculation_Functions::_ifCondition($condition);
- // Loop through arguments
- foreach ($aArgs as $key => $arg) {
- if (!is_numeric($arg)) { $arg = PHPExcel_Calculation::_wrapResult(strtoupper($arg)); }
- $testCondition = '='.$arg.$condition;
- if (PHPExcel_Calculation::getInstance()->_calculateFormulaValue($testCondition)) {
- if ((is_null($returnValue)) || ($arg < $returnValue)) {
- $returnValue = $arg;
- }
- }
- }
-
- // Return
- return $returnValue;
- } // function MINIF()
-
-
- //
- // Special variant of array_count_values that isn't limited to strings and integers,
- // but can work with floating point numbers as values
- //
- private static function _modeCalc($data) {
- $frequencyArray = array();
- foreach($data as $datum) {
- $found = False;
- foreach($frequencyArray as $key => $value) {
- if ((string) $value['value'] == (string) $datum) {
- ++$frequencyArray[$key]['frequency'];
- $found = True;
- break;
- }
- }
- if (!$found) {
- $frequencyArray[] = array('value' => $datum,
- 'frequency' => 1 );
- }
- }
-
- foreach($frequencyArray as $key => $value) {
- $frequencyList[$key] = $value['frequency'];
- $valueList[$key] = $value['value'];
- }
- array_multisort($frequencyList, SORT_DESC, $valueList, SORT_ASC, SORT_NUMERIC, $frequencyArray);
-
- if ($frequencyArray[0]['frequency'] == 1) {
- return PHPExcel_Calculation_Functions::NA();
- }
- return $frequencyArray[0]['value'];
- } // function _modeCalc()
-
-
- /**
- * MODE
- *
- * Returns the most frequently occurring, or repetitive, value in an array or range of data
- *
- * Excel Function:
- * MODE(value1[,value2[, ...]])
- *
- * @access public
- * @category Statistical Functions
- * @param mixed $arg,... Data values
- * @return float
- */
- public static function MODE() {
- // Return value
- $returnValue = PHPExcel_Calculation_Functions::NA();
-
- // Loop through arguments
- $aArgs = PHPExcel_Calculation_Functions::flattenArray(func_get_args());
-
- $mArgs = array();
- foreach ($aArgs as $arg) {
- // Is it a numeric value?
- if ((is_numeric($arg)) && (!is_string($arg))) {
- $mArgs[] = $arg;
- }
- }
-
- if (!empty($mArgs)) {
- return self::_modeCalc($mArgs);
- }
-
- // Return
- return $returnValue;
- } // function MODE()
-
-
- /**
- * NEGBINOMDIST
- *
- * Returns the negative binomial distribution. NEGBINOMDIST returns the probability that
- * there will be number_f failures before the number_s-th success, when the constant
- * probability of a success is probability_s. This function is similar to the binomial
- * distribution, except that the number of successes is fixed, and the number of trials is
- * variable. Like the binomial, trials are assumed to be independent.
- *
- * @param float $failures Number of Failures
- * @param float $successes Threshold number of Successes
- * @param float $probability Probability of success on each trial
- * @return float
- *
- */
- public static function NEGBINOMDIST($failures, $successes, $probability) {
- $failures = floor(PHPExcel_Calculation_Functions::flattenSingleValue($failures));
- $successes = floor(PHPExcel_Calculation_Functions::flattenSingleValue($successes));
- $probability = PHPExcel_Calculation_Functions::flattenSingleValue($probability);
-
- if ((is_numeric($failures)) && (is_numeric($successes)) && (is_numeric($probability))) {
- if (($failures < 0) || ($successes < 1)) {
- return PHPExcel_Calculation_Functions::NaN();
- }
- if (($probability < 0) || ($probability > 1)) {
- return PHPExcel_Calculation_Functions::NaN();
- }
- if (PHPExcel_Calculation_Functions::getCompatibilityMode() == PHPExcel_Calculation_Functions::COMPATIBILITY_GNUMERIC) {
- if (($failures + $successes - 1) <= 0) {
- return PHPExcel_Calculation_Functions::NaN();
- }
- }
- return (PHPExcel_Calculation_MathTrig::COMBIN($failures + $successes - 1,$successes - 1)) * (pow($probability,$successes)) * (pow(1 - $probability,$failures)) ;
- }
- return PHPExcel_Calculation_Functions::VALUE();
- } // function NEGBINOMDIST()
-
-
- /**
- * NORMDIST
- *
- * Returns the normal distribution for the specified mean and standard deviation. This
- * function has a very wide range of applications in statistics, including hypothesis
- * testing.
- *
- * @param float $value
- * @param float $mean Mean Value
- * @param float $stdDev Standard Deviation
- * @param boolean $cumulative
- * @return float
- *
- */
- public static function NORMDIST($value, $mean, $stdDev, $cumulative) {
- $value = PHPExcel_Calculation_Functions::flattenSingleValue($value);
- $mean = PHPExcel_Calculation_Functions::flattenSingleValue($mean);
- $stdDev = PHPExcel_Calculation_Functions::flattenSingleValue($stdDev);
-
- if ((is_numeric($value)) && (is_numeric($mean)) && (is_numeric($stdDev))) {
- if ($stdDev < 0) {
- return PHPExcel_Calculation_Functions::NaN();
- }
- if ((is_numeric($cumulative)) || (is_bool($cumulative))) {
- if ($cumulative) {
- return 0.5 * (1 + PHPExcel_Calculation_Engineering::_erfVal(($value - $mean) / ($stdDev * sqrt(2))));
- } else {
- return (1 / (SQRT2PI * $stdDev)) * exp(0 - (pow($value - $mean,2) / (2 * ($stdDev * $stdDev))));
- }
- }
- }
- return PHPExcel_Calculation_Functions::VALUE();
- } // function NORMDIST()
-
-
- /**
- * NORMINV
- *
- * Returns the inverse of the normal cumulative distribution for the specified mean and standard deviation.
- *
- * @param float $value
- * @param float $mean Mean Value
- * @param float $stdDev Standard Deviation
- * @return float
- *
- */
- public static function NORMINV($probability,$mean,$stdDev) {
- $probability = PHPExcel_Calculation_Functions::flattenSingleValue($probability);
- $mean = PHPExcel_Calculation_Functions::flattenSingleValue($mean);
- $stdDev = PHPExcel_Calculation_Functions::flattenSingleValue($stdDev);
-
- if ((is_numeric($probability)) && (is_numeric($mean)) && (is_numeric($stdDev))) {
- if (($probability < 0) || ($probability > 1)) {
- return PHPExcel_Calculation_Functions::NaN();
- }
- if ($stdDev < 0) {
- return PHPExcel_Calculation_Functions::NaN();
- }
- return (self::_inverse_ncdf($probability) * $stdDev) + $mean;
- }
- return PHPExcel_Calculation_Functions::VALUE();
- } // function NORMINV()
-
-
- /**
- * NORMSDIST
- *
- * Returns the standard normal cumulative distribution function. The distribution has
- * a mean of 0 (zero) and a standard deviation of one. Use this function in place of a
- * table of standard normal curve areas.
- *
- * @param float $value
- * @return float
- */
- public static function NORMSDIST($value) {
- $value = PHPExcel_Calculation_Functions::flattenSingleValue($value);
-
- return self::NORMDIST($value, 0, 1, True);
- } // function NORMSDIST()
-
-
- /**
- * NORMSINV
- *
- * Returns the inverse of the standard normal cumulative distribution
- *
- * @param float $value
- * @return float
- */
- public static function NORMSINV($value) {
- return self::NORMINV($value, 0, 1);
- } // function NORMSINV()
-
-
- /**
- * PERCENTILE
- *
- * Returns the nth percentile of values in a range..
- *
- * Excel Function:
- * PERCENTILE(value1[,value2[, ...]],entry)
- *
- * @access public
- * @category Statistical Functions
- * @param mixed $arg,... Data values
- * @param float $entry Percentile value in the range 0..1, inclusive.
- * @return float
- */
- public static function PERCENTILE() {
- $aArgs = PHPExcel_Calculation_Functions::flattenArray(func_get_args());
-
- // Calculate
- $entry = array_pop($aArgs);
-
- if ((is_numeric($entry)) && (!is_string($entry))) {
- if (($entry < 0) || ($entry > 1)) {
- return PHPExcel_Calculation_Functions::NaN();
- }
- $mArgs = array();
- foreach ($aArgs as $arg) {
- // Is it a numeric value?
- if ((is_numeric($arg)) && (!is_string($arg))) {
- $mArgs[] = $arg;
- }
- }
- $mValueCount = count($mArgs);
- if ($mValueCount > 0) {
- sort($mArgs);
- $count = self::COUNT($mArgs);
- $index = $entry * ($count-1);
- $iBase = floor($index);
- if ($index == $iBase) {
- return $mArgs[$index];
- } else {
- $iNext = $iBase + 1;
- $iProportion = $index - $iBase;
- return $mArgs[$iBase] + (($mArgs[$iNext] - $mArgs[$iBase]) * $iProportion) ;
- }
- }
- }
- return PHPExcel_Calculation_Functions::VALUE();
- } // function PERCENTILE()
-
-
- /**
- * PERCENTRANK
- *
- * Returns the rank of a value in a data set as a percentage of the data set.
- *
- * @param array of number An array of, or a reference to, a list of numbers.
- * @param number The number whose rank you want to find.
- * @param number The number of significant digits for the returned percentage value.
- * @return float
- */
- public static function PERCENTRANK($valueSet,$value,$significance=3) {
- $valueSet = PHPExcel_Calculation_Functions::flattenArray($valueSet);
- $value = PHPExcel_Calculation_Functions::flattenSingleValue($value);
- $significance = (is_null($significance)) ? 3 : (integer) PHPExcel_Calculation_Functions::flattenSingleValue($significance);
-
- foreach($valueSet as $key => $valueEntry) {
- if (!is_numeric($valueEntry)) {
- unset($valueSet[$key]);
- }
- }
- sort($valueSet,SORT_NUMERIC);
- $valueCount = count($valueSet);
- if ($valueCount == 0) {
- return PHPExcel_Calculation_Functions::NaN();
- }
-
- $valueAdjustor = $valueCount - 1;
- if (($value < $valueSet[0]) || ($value > $valueSet[$valueAdjustor])) {
- return PHPExcel_Calculation_Functions::NA();
- }
-
- $pos = array_search($value,$valueSet);
- if ($pos === False) {
- $pos = 0;
- $testValue = $valueSet[0];
- while ($testValue < $value) {
- $testValue = $valueSet[++$pos];
- }
- --$pos;
- $pos += (($value - $valueSet[$pos]) / ($testValue - $valueSet[$pos]));
- }
-
- return round($pos / $valueAdjustor,$significance);
- } // function PERCENTRANK()
-
-
- /**
- * PERMUT
- *
- * Returns the number of permutations for a given number of objects that can be
- * selected from number objects. A permutation is any set or subset of objects or
- * events where internal order is significant. Permutations are different from
- * combinations, for which the internal order is not significant. Use this function
- * for lottery-style probability calculations.
- *
- * @param int $numObjs Number of different objects
- * @param int $numInSet Number of objects in each permutation
- * @return int Number of permutations
- */
- public static function PERMUT($numObjs,$numInSet) {
- $numObjs = PHPExcel_Calculation_Functions::flattenSingleValue($numObjs);
- $numInSet = PHPExcel_Calculation_Functions::flattenSingleValue($numInSet);
-
- if ((is_numeric($numObjs)) && (is_numeric($numInSet))) {
- $numInSet = floor($numInSet);
- if ($numObjs < $numInSet) {
- return PHPExcel_Calculation_Functions::NaN();
- }
- return round(PHPExcel_Calculation_MathTrig::FACT($numObjs) / PHPExcel_Calculation_MathTrig::FACT($numObjs - $numInSet));
- }
- return PHPExcel_Calculation_Functions::VALUE();
- } // function PERMUT()
-
-
- /**
- * POISSON
- *
- * Returns the Poisson distribution. A common application of the Poisson distribution
- * is predicting the number of events over a specific time, such as the number of
- * cars arriving at a toll plaza in 1 minute.
- *
- * @param float $value
- * @param float $mean Mean Value
- * @param boolean $cumulative
- * @return float
- *
- */
- public static function POISSON($value, $mean, $cumulative) {
- $value = PHPExcel_Calculation_Functions::flattenSingleValue($value);
- $mean = PHPExcel_Calculation_Functions::flattenSingleValue($mean);
-
- if ((is_numeric($value)) && (is_numeric($mean))) {
- if (($value <= 0) || ($mean <= 0)) {
- return PHPExcel_Calculation_Functions::NaN();
- }
- if ((is_numeric($cumulative)) || (is_bool($cumulative))) {
- if ($cumulative) {
- $summer = 0;
- for ($i = 0; $i <= floor($value); ++$i) {
- $summer += pow($mean,$i) / PHPExcel_Calculation_MathTrig::FACT($i);
- }
- return exp(0-$mean) * $summer;
- } else {
- return (exp(0-$mean) * pow($mean,$value)) / PHPExcel_Calculation_MathTrig::FACT($value);
- }
- }
- }
- return PHPExcel_Calculation_Functions::VALUE();
- } // function POISSON()
-
-
- /**
- * QUARTILE
- *
- * Returns the quartile of a data set.
- *
- * Excel Function:
- * QUARTILE(value1[,value2[, ...]],entry)
- *
- * @access public
- * @category Statistical Functions
- * @param mixed $arg,... Data values
- * @param int $entry Quartile value in the range 1..3, inclusive.
- * @return float
- */
- public static function QUARTILE() {
- $aArgs = PHPExcel_Calculation_Functions::flattenArray(func_get_args());
-
- // Calculate
- $entry = floor(array_pop($aArgs));
-
- if ((is_numeric($entry)) && (!is_string($entry))) {
- $entry /= 4;
- if (($entry < 0) || ($entry > 1)) {
- return PHPExcel_Calculation_Functions::NaN();
- }
- return self::PERCENTILE($aArgs,$entry);
- }
- return PHPExcel_Calculation_Functions::VALUE();
- } // function QUARTILE()
-
-
- /**
- * RANK
- *
- * Returns the rank of a number in a list of numbers.
- *
- * @param number The number whose rank you want to find.
- * @param array of number An array of, or a reference to, a list of numbers.
- * @param mixed Order to sort the values in the value set
- * @return float
- */
- public static function RANK($value,$valueSet,$order=0) {
- $value = PHPExcel_Calculation_Functions::flattenSingleValue($value);
- $valueSet = PHPExcel_Calculation_Functions::flattenArray($valueSet);
- $order = (is_null($order)) ? 0 : (integer) PHPExcel_Calculation_Functions::flattenSingleValue($order);
-
- foreach($valueSet as $key => $valueEntry) {
- if (!is_numeric($valueEntry)) {
- unset($valueSet[$key]);
- }
- }
-
- if ($order == 0) {
- rsort($valueSet,SORT_NUMERIC);
- } else {
- sort($valueSet,SORT_NUMERIC);
- }
- $pos = array_search($value,$valueSet);
- if ($pos === False) {
- return PHPExcel_Calculation_Functions::NA();
- }
-
- return ++$pos;
- } // function RANK()
-
-
- /**
- * RSQ
- *
- * Returns the square of the Pearson product moment correlation coefficient through data points in known_y's and known_x's.
- *
- * @param array of mixed Data Series Y
- * @param array of mixed Data Series X
- * @return float
- */
- public static function RSQ($yValues,$xValues) {
- if (!self::_checkTrendArrays($yValues,$xValues)) {
- return PHPExcel_Calculation_Functions::VALUE();
- }
- $yValueCount = count($yValues);
- $xValueCount = count($xValues);
-
- if (($yValueCount == 0) || ($yValueCount != $xValueCount)) {
- return PHPExcel_Calculation_Functions::NA();
- } elseif ($yValueCount == 1) {
- return PHPExcel_Calculation_Functions::DIV0();
- }
-
- $bestFitLinear = trendClass::calculate(trendClass::TREND_LINEAR,$yValues,$xValues);
- return $bestFitLinear->getGoodnessOfFit();
- } // function RSQ()
-
-
- /**
- * SKEW
- *
- * Returns the skewness of a distribution. Skewness characterizes the degree of asymmetry
- * of a distribution around its mean. Positive skewness indicates a distribution with an
- * asymmetric tail extending toward more positive values. Negative skewness indicates a
- * distribution with an asymmetric tail extending toward more negative values.
- *
- * @param array Data Series
- * @return float
- */
- public static function SKEW() {
- $aArgs = PHPExcel_Calculation_Functions::flattenArrayIndexed(func_get_args());
- $mean = self::AVERAGE($aArgs);
- $stdDev = self::STDEV($aArgs);
-
- $count = $summer = 0;
- // Loop through arguments
- foreach ($aArgs as $k => $arg) {
- if ((is_bool($arg)) &&
- (!PHPExcel_Calculation_Functions::isMatrixValue($k))) {
- } else {
- // Is it a numeric value?
- if ((is_numeric($arg)) && (!is_string($arg))) {
- $summer += pow((($arg - $mean) / $stdDev),3) ;
- ++$count;
- }
- }
- }
-
- // Return
- if ($count > 2) {
- return $summer * ($count / (($count-1) * ($count-2)));
- }
- return PHPExcel_Calculation_Functions::DIV0();
- } // function SKEW()
-
-
- /**
- * SLOPE
- *
- * Returns the slope of the linear regression line through data points in known_y's and known_x's.
- *
- * @param array of mixed Data Series Y
- * @param array of mixed Data Series X
- * @return float
- */
- public static function SLOPE($yValues,$xValues) {
- if (!self::_checkTrendArrays($yValues,$xValues)) {
- return PHPExcel_Calculation_Functions::VALUE();
- }
- $yValueCount = count($yValues);
- $xValueCount = count($xValues);
-
- if (($yValueCount == 0) || ($yValueCount != $xValueCount)) {
- return PHPExcel_Calculation_Functions::NA();
- } elseif ($yValueCount == 1) {
- return PHPExcel_Calculation_Functions::DIV0();
- }
-
- $bestFitLinear = trendClass::calculate(trendClass::TREND_LINEAR,$yValues,$xValues);
- return $bestFitLinear->getSlope();
- } // function SLOPE()
-
-
- /**
- * SMALL
- *
- * Returns the nth smallest value in a data set. You can use this function to
- * select a value based on its relative standing.
- *
- * Excel Function:
- * SMALL(value1[,value2[, ...]],entry)
- *
- * @access public
- * @category Statistical Functions
- * @param mixed $arg,... Data values
- * @param int $entry Position (ordered from the smallest) in the array or range of data to return
- * @return float
- */
- public static function SMALL() {
- $aArgs = PHPExcel_Calculation_Functions::flattenArray(func_get_args());
-
- // Calculate
- $entry = array_pop($aArgs);
-
- if ((is_numeric($entry)) && (!is_string($entry))) {
- $mArgs = array();
- foreach ($aArgs as $arg) {
- // Is it a numeric value?
- if ((is_numeric($arg)) && (!is_string($arg))) {
- $mArgs[] = $arg;
- }
- }
- $count = self::COUNT($mArgs);
- $entry = floor(--$entry);
- if (($entry < 0) || ($entry >= $count) || ($count == 0)) {
- return PHPExcel_Calculation_Functions::NaN();
- }
- sort($mArgs);
- return $mArgs[$entry];
- }
- return PHPExcel_Calculation_Functions::VALUE();
- } // function SMALL()
-
-
- /**
- * STANDARDIZE
- *
- * Returns a normalized value from a distribution characterized by mean and standard_dev.
- *
- * @param float $value Value to normalize
- * @param float $mean Mean Value
- * @param float $stdDev Standard Deviation
- * @return float Standardized value
- */
- public static function STANDARDIZE($value,$mean,$stdDev) {
- $value = PHPExcel_Calculation_Functions::flattenSingleValue($value);
- $mean = PHPExcel_Calculation_Functions::flattenSingleValue($mean);
- $stdDev = PHPExcel_Calculation_Functions::flattenSingleValue($stdDev);
-
- if ((is_numeric($value)) && (is_numeric($mean)) && (is_numeric($stdDev))) {
- if ($stdDev <= 0) {
- return PHPExcel_Calculation_Functions::NaN();
- }
- return ($value - $mean) / $stdDev ;
- }
- return PHPExcel_Calculation_Functions::VALUE();
- } // function STANDARDIZE()
-
-
- /**
- * STDEV
- *
- * Estimates standard deviation based on a sample. The standard deviation is a measure of how
- * widely values are dispersed from the average value (the mean).
- *
- * Excel Function:
- * STDEV(value1[,value2[, ...]])
- *
- * @access public
- * @category Statistical Functions
- * @param mixed $arg,... Data values
- * @return float
- */
- public static function STDEV() {
- $aArgs = PHPExcel_Calculation_Functions::flattenArrayIndexed(func_get_args());
-
- // Return value
- $returnValue = null;
-
- $aMean = self::AVERAGE($aArgs);
- if (!is_null($aMean)) {
- $aCount = -1;
- foreach ($aArgs as $k => $arg) {
- if ((is_bool($arg)) &&
- ((!PHPExcel_Calculation_Functions::isCellValue($k)) || (PHPExcel_Calculation_Functions::getCompatibilityMode() == PHPExcel_Calculation_Functions::COMPATIBILITY_OPENOFFICE))) {
- $arg = (integer) $arg;
- }
- // Is it a numeric value?
- if ((is_numeric($arg)) && (!is_string($arg))) {
- if (is_null($returnValue)) {
- $returnValue = pow(($arg - $aMean),2);
- } else {
- $returnValue += pow(($arg - $aMean),2);
- }
- ++$aCount;
- }
- }
-
- // Return
- if (($aCount > 0) && ($returnValue >= 0)) {
- return sqrt($returnValue / $aCount);
- }
- }
- return PHPExcel_Calculation_Functions::DIV0();
- } // function STDEV()
-
-
- /**
- * STDEVA
- *
- * Estimates standard deviation based on a sample, including numbers, text, and logical values
- *
- * Excel Function:
- * STDEVA(value1[,value2[, ...]])
- *
- * @access public
- * @category Statistical Functions
- * @param mixed $arg,... Data values
- * @return float
- */
- public static function STDEVA() {
- $aArgs = PHPExcel_Calculation_Functions::flattenArrayIndexed(func_get_args());
-
- // Return value
- $returnValue = null;
-
- $aMean = self::AVERAGEA($aArgs);
- if (!is_null($aMean)) {
- $aCount = -1;
- foreach ($aArgs as $k => $arg) {
- if ((is_bool($arg)) &&
- (!PHPExcel_Calculation_Functions::isMatrixValue($k))) {
- } else {
- // Is it a numeric value?
- if ((is_numeric($arg)) || (is_bool($arg)) || ((is_string($arg) & ($arg != '')))) {
- if (is_bool($arg)) {
- $arg = (integer) $arg;
- } elseif (is_string($arg)) {
- $arg = 0;
- }
- if (is_null($returnValue)) {
- $returnValue = pow(($arg - $aMean),2);
- } else {
- $returnValue += pow(($arg - $aMean),2);
- }
- ++$aCount;
- }
- }
- }
-
- // Return
- if (($aCount > 0) && ($returnValue >= 0)) {
- return sqrt($returnValue / $aCount);
- }
- }
- return PHPExcel_Calculation_Functions::DIV0();
- } // function STDEVA()
-
-
- /**
- * STDEVP
- *
- * Calculates standard deviation based on the entire population
- *
- * Excel Function:
- * STDEVP(value1[,value2[, ...]])
- *
- * @access public
- * @category Statistical Functions
- * @param mixed $arg,... Data values
- * @return float
- */
- public static function STDEVP() {
- $aArgs = PHPExcel_Calculation_Functions::flattenArrayIndexed(func_get_args());
-
- // Return value
- $returnValue = null;
-
- $aMean = self::AVERAGE($aArgs);
- if (!is_null($aMean)) {
- $aCount = 0;
- foreach ($aArgs as $k => $arg) {
- if ((is_bool($arg)) &&
- ((!PHPExcel_Calculation_Functions::isCellValue($k)) || (PHPExcel_Calculation_Functions::getCompatibilityMode() == PHPExcel_Calculation_Functions::COMPATIBILITY_OPENOFFICE))) {
- $arg = (integer) $arg;
- }
- // Is it a numeric value?
- if ((is_numeric($arg)) && (!is_string($arg))) {
- if (is_null($returnValue)) {
- $returnValue = pow(($arg - $aMean),2);
- } else {
- $returnValue += pow(($arg - $aMean),2);
- }
- ++$aCount;
- }
- }
-
- // Return
- if (($aCount > 0) && ($returnValue >= 0)) {
- return sqrt($returnValue / $aCount);
- }
- }
- return PHPExcel_Calculation_Functions::DIV0();
- } // function STDEVP()
-
-
- /**
- * STDEVPA
- *
- * Calculates standard deviation based on the entire population, including numbers, text, and logical values
- *
- * Excel Function:
- * STDEVPA(value1[,value2[, ...]])
- *
- * @access public
- * @category Statistical Functions
- * @param mixed $arg,... Data values
- * @return float
- */
- public static function STDEVPA() {
- $aArgs = PHPExcel_Calculation_Functions::flattenArrayIndexed(func_get_args());
-
- // Return value
- $returnValue = null;
-
- $aMean = self::AVERAGEA($aArgs);
- if (!is_null($aMean)) {
- $aCount = 0;
- foreach ($aArgs as $k => $arg) {
- if ((is_bool($arg)) &&
- (!PHPExcel_Calculation_Functions::isMatrixValue($k))) {
- } else {
- // Is it a numeric value?
- if ((is_numeric($arg)) || (is_bool($arg)) || ((is_string($arg) & ($arg != '')))) {
- if (is_bool($arg)) {
- $arg = (integer) $arg;
- } elseif (is_string($arg)) {
- $arg = 0;
- }
- if (is_null($returnValue)) {
- $returnValue = pow(($arg - $aMean),2);
- } else {
- $returnValue += pow(($arg - $aMean),2);
- }
- ++$aCount;
- }
- }
- }
-
- // Return
- if (($aCount > 0) && ($returnValue >= 0)) {
- return sqrt($returnValue / $aCount);
- }
- }
- return PHPExcel_Calculation_Functions::DIV0();
- } // function STDEVPA()
-
-
- /**
- * STEYX
- *
- * Returns the standard error of the predicted y-value for each x in the regression.
- *
- * @param array of mixed Data Series Y
- * @param array of mixed Data Series X
- * @return float
- */
- public static function STEYX($yValues,$xValues) {
- if (!self::_checkTrendArrays($yValues,$xValues)) {
- return PHPExcel_Calculation_Functions::VALUE();
- }
- $yValueCount = count($yValues);
- $xValueCount = count($xValues);
-
- if (($yValueCount == 0) || ($yValueCount != $xValueCount)) {
- return PHPExcel_Calculation_Functions::NA();
- } elseif ($yValueCount == 1) {
- return PHPExcel_Calculation_Functions::DIV0();
- }
-
- $bestFitLinear = trendClass::calculate(trendClass::TREND_LINEAR,$yValues,$xValues);
- return $bestFitLinear->getStdevOfResiduals();
- } // function STEYX()
-
-
- /**
- * TDIST
- *
- * Returns the probability of Student's T distribution.
- *
- * @param float $value Value for the function
- * @param float $degrees degrees of freedom
- * @param float $tails number of tails (1 or 2)
- * @return float
- */
- public static function TDIST($value, $degrees, $tails) {
- $value = PHPExcel_Calculation_Functions::flattenSingleValue($value);
- $degrees = floor(PHPExcel_Calculation_Functions::flattenSingleValue($degrees));
- $tails = floor(PHPExcel_Calculation_Functions::flattenSingleValue($tails));
-
- if ((is_numeric($value)) && (is_numeric($degrees)) && (is_numeric($tails))) {
- if (($value < 0) || ($degrees < 1) || ($tails < 1) || ($tails > 2)) {
- return PHPExcel_Calculation_Functions::NaN();
- }
- // tdist, which finds the probability that corresponds to a given value
- // of t with k degrees of freedom. This algorithm is translated from a
- // pascal function on p81 of "Statistical Computing in Pascal" by D
- // Cooke, A H Craven & G M Clark (1985: Edward Arnold (Pubs.) Ltd:
- // London). The above Pascal algorithm is itself a translation of the
- // fortran algoritm "AS 3" by B E Cooper of the Atlas Computer
- // Laboratory as reported in (among other places) "Applied Statistics
- // Algorithms", editied by P Griffiths and I D Hill (1985; Ellis
- // Horwood Ltd.; W. Sussex, England).
- $tterm = $degrees;
- $ttheta = atan2($value,sqrt($tterm));
- $tc = cos($ttheta);
- $ts = sin($ttheta);
- $tsum = 0;
-
- if (($degrees % 2) == 1) {
- $ti = 3;
- $tterm = $tc;
- } else {
- $ti = 2;
- $tterm = 1;
- }
-
- $tsum = $tterm;
- while ($ti < $degrees) {
- $tterm *= $tc * $tc * ($ti - 1) / $ti;
- $tsum += $tterm;
- $ti += 2;
- }
- $tsum *= $ts;
- if (($degrees % 2) == 1) { $tsum = M_2DIVPI * ($tsum + $ttheta); }
- $tValue = 0.5 * (1 + $tsum);
- if ($tails == 1) {
- return 1 - abs($tValue);
- } else {
- return 1 - abs((1 - $tValue) - $tValue);
- }
- }
- return PHPExcel_Calculation_Functions::VALUE();
- } // function TDIST()
-
-
- /**
- * TINV
- *
- * Returns the one-tailed probability of the chi-squared distribution.
- *
- * @param float $probability Probability for the function
- * @param float $degrees degrees of freedom
- * @return float
- */
- public static function TINV($probability, $degrees) {
- $probability = PHPExcel_Calculation_Functions::flattenSingleValue($probability);
- $degrees = floor(PHPExcel_Calculation_Functions::flattenSingleValue($degrees));
-
- if ((is_numeric($probability)) && (is_numeric($degrees))) {
- $xLo = 100;
- $xHi = 0;
-
- $x = $xNew = 1;
- $dx = 1;
- $i = 0;
-
- while ((abs($dx) > PRECISION) && ($i++ < MAX_ITERATIONS)) {
- // Apply Newton-Raphson step
- $result = self::TDIST($x, $degrees, 2);
- $error = $result - $probability;
- if ($error == 0.0) {
- $dx = 0;
- } elseif ($error < 0.0) {
- $xLo = $x;
- } else {
- $xHi = $x;
- }
- // Avoid division by zero
- if ($result != 0.0) {
- $dx = $error / $result;
- $xNew = $x - $dx;
- }
- // If the NR fails to converge (which for example may be the
- // case if the initial guess is too rough) we apply a bisection
- // step to determine a more narrow interval around the root.
- if (($xNew < $xLo) || ($xNew > $xHi) || ($result == 0.0)) {
- $xNew = ($xLo + $xHi) / 2;
- $dx = $xNew - $x;
- }
- $x = $xNew;
- }
- if ($i == MAX_ITERATIONS) {
- return PHPExcel_Calculation_Functions::NA();
- }
- return round($x,12);
- }
- return PHPExcel_Calculation_Functions::VALUE();
- } // function TINV()
-
-
- /**
- * TREND
- *
- * Returns values along a linear trend
- *
- * @param array of mixed Data Series Y
- * @param array of mixed Data Series X
- * @param array of mixed Values of X for which we want to find Y
- * @param boolean A logical value specifying whether to force the intersect to equal 0.
- * @return array of float
- */
- public static function TREND($yValues,$xValues=array(),$newValues=array(),$const=True) {
- $yValues = PHPExcel_Calculation_Functions::flattenArray($yValues);
- $xValues = PHPExcel_Calculation_Functions::flattenArray($xValues);
- $newValues = PHPExcel_Calculation_Functions::flattenArray($newValues);
- $const = (is_null($const)) ? True : (boolean) PHPExcel_Calculation_Functions::flattenSingleValue($const);
-
- $bestFitLinear = trendClass::calculate(trendClass::TREND_LINEAR,$yValues,$xValues,$const);
- if (empty($newValues)) {
- $newValues = $bestFitLinear->getXValues();
- }
-
- $returnArray = array();
- foreach($newValues as $xValue) {
- $returnArray[0][] = $bestFitLinear->getValueOfYForX($xValue);
- }
-
- return $returnArray;
- } // function TREND()
-
-
- /**
- * TRIMMEAN
- *
- * Returns the mean of the interior of a data set. TRIMMEAN calculates the mean
- * taken by excluding a percentage of data points from the top and bottom tails
- * of a data set.
- *
- * Excel Function:
- * TRIMEAN(value1[,value2[, ...]],$discard)
- *
- * @access public
- * @category Statistical Functions
- * @param mixed $arg,... Data values
- * @param float $discard Percentage to discard
- * @return float
- */
- public static function TRIMMEAN() {
- $aArgs = PHPExcel_Calculation_Functions::flattenArray(func_get_args());
-
- // Calculate
- $percent = array_pop($aArgs);
-
- if ((is_numeric($percent)) && (!is_string($percent))) {
- if (($percent < 0) || ($percent > 1)) {
- return PHPExcel_Calculation_Functions::NaN();
- }
- $mArgs = array();
- foreach ($aArgs as $arg) {
- // Is it a numeric value?
- if ((is_numeric($arg)) && (!is_string($arg))) {
- $mArgs[] = $arg;
- }
- }
- $discard = floor(self::COUNT($mArgs) * $percent / 2);
- sort($mArgs);
- for ($i=0; $i < $discard; ++$i) {
- array_pop($mArgs);
- array_shift($mArgs);
- }
- return self::AVERAGE($mArgs);
- }
- return PHPExcel_Calculation_Functions::VALUE();
- } // function TRIMMEAN()
-
-
- /**
- * VARFunc
- *
- * Estimates variance based on a sample.
- *
- * Excel Function:
- * VAR(value1[,value2[, ...]])
- *
- * @access public
- * @category Statistical Functions
- * @param mixed $arg,... Data values
- * @return float
- */
- public static function VARFunc() {
- // Return value
- $returnValue = PHPExcel_Calculation_Functions::DIV0();
-
- $summerA = $summerB = 0;
-
- // Loop through arguments
- $aArgs = PHPExcel_Calculation_Functions::flattenArray(func_get_args());
- $aCount = 0;
- foreach ($aArgs as $arg) {
- if (is_bool($arg)) { $arg = (integer) $arg; }
- // Is it a numeric value?
- if ((is_numeric($arg)) && (!is_string($arg))) {
- $summerA += ($arg * $arg);
- $summerB += $arg;
- ++$aCount;
- }
- }
-
- // Return
- if ($aCount > 1) {
- $summerA *= $aCount;
- $summerB *= $summerB;
- $returnValue = ($summerA - $summerB) / ($aCount * ($aCount - 1));
- }
- return $returnValue;
- } // function VARFunc()
-
-
- /**
- * VARA
- *
- * Estimates variance based on a sample, including numbers, text, and logical values
- *
- * Excel Function:
- * VARA(value1[,value2[, ...]])
- *
- * @access public
- * @category Statistical Functions
- * @param mixed $arg,... Data values
- * @return float
- */
- public static function VARA() {
- // Return value
- $returnValue = PHPExcel_Calculation_Functions::DIV0();
-
- $summerA = $summerB = 0;
-
- // Loop through arguments
- $aArgs = PHPExcel_Calculation_Functions::flattenArrayIndexed(func_get_args());
- $aCount = 0;
- foreach ($aArgs as $k => $arg) {
- if ((is_string($arg)) &&
- (PHPExcel_Calculation_Functions::isValue($k))) {
- return PHPExcel_Calculation_Functions::VALUE();
- } elseif ((is_string($arg)) &&
- (!PHPExcel_Calculation_Functions::isMatrixValue($k))) {
- } else {
- // Is it a numeric value?
- if ((is_numeric($arg)) || (is_bool($arg)) || ((is_string($arg) & ($arg != '')))) {
- if (is_bool($arg)) {
- $arg = (integer) $arg;
- } elseif (is_string($arg)) {
- $arg = 0;
- }
- $summerA += ($arg * $arg);
- $summerB += $arg;
- ++$aCount;
- }
- }
- }
-
- // Return
- if ($aCount > 1) {
- $summerA *= $aCount;
- $summerB *= $summerB;
- $returnValue = ($summerA - $summerB) / ($aCount * ($aCount - 1));
- }
- return $returnValue;
- } // function VARA()
-
-
- /**
- * VARP
- *
- * Calculates variance based on the entire population
- *
- * Excel Function:
- * VARP(value1[,value2[, ...]])
- *
- * @access public
- * @category Statistical Functions
- * @param mixed $arg,... Data values
- * @return float
- */
- public static function VARP() {
- // Return value
- $returnValue = PHPExcel_Calculation_Functions::DIV0();
-
- $summerA = $summerB = 0;
-
- // Loop through arguments
- $aArgs = PHPExcel_Calculation_Functions::flattenArray(func_get_args());
- $aCount = 0;
- foreach ($aArgs as $arg) {
- if (is_bool($arg)) { $arg = (integer) $arg; }
- // Is it a numeric value?
- if ((is_numeric($arg)) && (!is_string($arg))) {
- $summerA += ($arg * $arg);
- $summerB += $arg;
- ++$aCount;
- }
- }
-
- // Return
- if ($aCount > 0) {
- $summerA *= $aCount;
- $summerB *= $summerB;
- $returnValue = ($summerA - $summerB) / ($aCount * $aCount);
- }
- return $returnValue;
- } // function VARP()
-
-
- /**
- * VARPA
- *
- * Calculates variance based on the entire population, including numbers, text, and logical values
- *
- * Excel Function:
- * VARPA(value1[,value2[, ...]])
- *
- * @access public
- * @category Statistical Functions
- * @param mixed $arg,... Data values
- * @return float
- */
- public static function VARPA() {
- // Return value
- $returnValue = PHPExcel_Calculation_Functions::DIV0();
-
- $summerA = $summerB = 0;
-
- // Loop through arguments
- $aArgs = PHPExcel_Calculation_Functions::flattenArrayIndexed(func_get_args());
- $aCount = 0;
- foreach ($aArgs as $k => $arg) {
- if ((is_string($arg)) &&
- (PHPExcel_Calculation_Functions::isValue($k))) {
- return PHPExcel_Calculation_Functions::VALUE();
- } elseif ((is_string($arg)) &&
- (!PHPExcel_Calculation_Functions::isMatrixValue($k))) {
- } else {
- // Is it a numeric value?
- if ((is_numeric($arg)) || (is_bool($arg)) || ((is_string($arg) & ($arg != '')))) {
- if (is_bool($arg)) {
- $arg = (integer) $arg;
- } elseif (is_string($arg)) {
- $arg = 0;
- }
- $summerA += ($arg * $arg);
- $summerB += $arg;
- ++$aCount;
- }
- }
- }
-
- // Return
- if ($aCount > 0) {
- $summerA *= $aCount;
- $summerB *= $summerB;
- $returnValue = ($summerA - $summerB) / ($aCount * $aCount);
- }
- return $returnValue;
- } // function VARPA()
-
-
- /**
- * WEIBULL
- *
- * Returns the Weibull distribution. Use this distribution in reliability
- * analysis, such as calculating a device's mean time to failure.
- *
- * @param float $value
- * @param float $alpha Alpha Parameter
- * @param float $beta Beta Parameter
- * @param boolean $cumulative
- * @return float
- *
- */
- public static function WEIBULL($value, $alpha, $beta, $cumulative) {
- $value = PHPExcel_Calculation_Functions::flattenSingleValue($value);
- $alpha = PHPExcel_Calculation_Functions::flattenSingleValue($alpha);
- $beta = PHPExcel_Calculation_Functions::flattenSingleValue($beta);
-
- if ((is_numeric($value)) && (is_numeric($alpha)) && (is_numeric($beta))) {
- if (($value < 0) || ($alpha <= 0) || ($beta <= 0)) {
- return PHPExcel_Calculation_Functions::NaN();
- }
- if ((is_numeric($cumulative)) || (is_bool($cumulative))) {
- if ($cumulative) {
- return 1 - exp(0 - pow($value / $beta,$alpha));
- } else {
- return ($alpha / pow($beta,$alpha)) * pow($value,$alpha - 1) * exp(0 - pow($value / $beta,$alpha));
- }
- }
- }
- return PHPExcel_Calculation_Functions::VALUE();
- } // function WEIBULL()
-
-
- /**
- * ZTEST
- *
- * Returns the Weibull distribution. Use this distribution in reliability
- * analysis, such as calculating a device's mean time to failure.
- *
- * @param float $value
- * @param float $alpha Alpha Parameter
- * @param float $beta Beta Parameter
- * @param boolean $cumulative
- * @return float
- *
- */
- public static function ZTEST($dataSet, $m0, $sigma=null) {
- $dataSet = PHPExcel_Calculation_Functions::flattenArrayIndexed($dataSet);
- $m0 = PHPExcel_Calculation_Functions::flattenSingleValue($m0);
- $sigma = PHPExcel_Calculation_Functions::flattenSingleValue($sigma);
-
- if (is_null($sigma)) {
- $sigma = self::STDEV($dataSet);
- }
- $n = count($dataSet);
-
- return 1 - self::NORMSDIST((self::AVERAGE($dataSet) - $m0)/($sigma/SQRT($n)));
- } // function ZTEST()
-
-} // class PHPExcel_Calculation_Statistical
diff --git a/admin/survey/excel/PHPExcel/Calculation/TextData.php b/admin/survey/excel/PHPExcel/Calculation/TextData.php
deleted file mode 100644
index 9baa8ef..0000000
--- a/admin/survey/excel/PHPExcel/Calculation/TextData.php
+++ /dev/null
@@ -1,598 +0,0 @@
-<?php
-/**
- * PHPExcel
- *
- * Copyright (c) 2006 - 2012 PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel_Calculation
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-
-/** PHPExcel root directory */
-if (!defined('PHPEXCEL_ROOT')) {
- /**
- * @ignore
- */
- define('PHPEXCEL_ROOT', dirname(__FILE__) . '/../../');
- require(PHPEXCEL_ROOT . 'PHPExcel/Autoloader.php');
-}
-
-
-/**
- * PHPExcel_Calculation_TextData
- *
- * @category PHPExcel
- * @package PHPExcel_Calculation
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- */
-class PHPExcel_Calculation_TextData {
-
- private static $_invalidChars = Null;
-
- private static function _uniord($c) {
- if (ord($c{0}) >=0 && ord($c{0}) <= 127)
- return ord($c{0});
- if (ord($c{0}) >= 192 && ord($c{0}) <= 223)
- return (ord($c{0})-192)*64 + (ord($c{1})-128);
- if (ord($c{0}) >= 224 && ord($c{0}) <= 239)
- return (ord($c{0})-224)*4096 + (ord($c{1})-128)*64 + (ord($c{2})-128);
- if (ord($c{0}) >= 240 && ord($c{0}) <= 247)
- return (ord($c{0})-240)*262144 + (ord($c{1})-128)*4096 + (ord($c{2})-128)*64 + (ord($c{3})-128);
- if (ord($c{0}) >= 248 && ord($c{0}) <= 251)
- return (ord($c{0})-248)*16777216 + (ord($c{1})-128)*262144 + (ord($c{2})-128)*4096 + (ord($c{3})-128)*64 + (ord($c{4})-128);
- if (ord($c{0}) >= 252 && ord($c{0}) <= 253)
- return (ord($c{0})-252)*1073741824 + (ord($c{1})-128)*16777216 + (ord($c{2})-128)*262144 + (ord($c{3})-128)*4096 + (ord($c{4})-128)*64 + (ord($c{5})-128);
- if (ord($c{0}) >= 254 && ord($c{0}) <= 255) //error
- return PHPExcel_Calculation_Functions::VALUE();
- return 0;
- } // function _uniord()
-
- /**
- * CHARACTER
- *
- * @param string $character Value
- * @return int
- */
- public static function CHARACTER($character) {
- $character = PHPExcel_Calculation_Functions::flattenSingleValue($character);
-
- if ((!is_numeric($character)) || ($character < 0)) {
- return PHPExcel_Calculation_Functions::VALUE();
- }
-
- if (function_exists('mb_convert_encoding')) {
- return mb_convert_encoding('&#'.intval($character).';', 'UTF-8', 'HTML-ENTITIES');
- } else {
- return chr(intval($character));
- }
- }
-
-
- /**
- * TRIMNONPRINTABLE
- *
- * @param mixed $value Value to check
- * @return string
- */
- public static function TRIMNONPRINTABLE($stringValue = '') {
- $stringValue = PHPExcel_Calculation_Functions::flattenSingleValue($stringValue);
-
- if (is_bool($stringValue)) {
- return ($stringValue) ? PHPExcel_Calculation::getTRUE() : PHPExcel_Calculation::getFALSE();
- }
-
- if (self::$_invalidChars == Null) {
- self::$_invalidChars = range(chr(0),chr(31));
- }
-
- if (is_string($stringValue) || is_numeric($stringValue)) {
- return str_replace(self::$_invalidChars,'',trim($stringValue,"\x00..\x1F"));
- }
- return NULL;
- } // function TRIMNONPRINTABLE()
-
-
- /**
- * TRIMSPACES
- *
- * @param mixed $value Value to check
- * @return string
- */
- public static function TRIMSPACES($stringValue = '') {
- $stringValue = PHPExcel_Calculation_Functions::flattenSingleValue($stringValue);
-
- if (is_bool($stringValue)) {
- return ($stringValue) ? PHPExcel_Calculation::getTRUE() : PHPExcel_Calculation::getFALSE();
- }
-
- if (is_string($stringValue) || is_numeric($stringValue)) {
- return trim(preg_replace('/ +/',' ',trim($stringValue,' ')));
- }
- return NULL;
- } // function TRIMSPACES()
-
-
- /**
- * ASCIICODE
- *
- * @param string $character Value
- * @return int
- */
- public static function ASCIICODE($characters) {
- if (($characters === NULL) || ($characters === ''))
- return PHPExcel_Calculation_Functions::VALUE();
- $characters = PHPExcel_Calculation_Functions::flattenSingleValue($characters);
- if (is_bool($characters)) {
- if (PHPExcel_Calculation_Functions::getCompatibilityMode() == PHPExcel_Calculation_Functions::COMPATIBILITY_OPENOFFICE) {
- $characters = (int) $characters;
- } else {
- $characters = ($characters) ? PHPExcel_Calculation::getTRUE() : PHPExcel_Calculation::getFALSE();
- }
- }
-
- $character = $characters;
- if ((function_exists('mb_strlen')) && (function_exists('mb_substr'))) {
- if (mb_strlen($characters, 'UTF-8') > 1) { $character = mb_substr($characters, 0, 1, 'UTF-8'); }
- return self::_uniord($character);
- } else {
- if (strlen($characters) > 0) { $character = substr($characters, 0, 1); }
- return ord($character);
- }
- } // function ASCIICODE()
-
-
- /**
- * CONCATENATE
- *
- * @return string
- */
- public static function CONCATENATE() {
- // Return value
- $returnValue = '';
-
- // Loop through arguments
- $aArgs = PHPExcel_Calculation_Functions::flattenArray(func_get_args());
- foreach ($aArgs as $arg) {
- if (is_bool($arg)) {
- if (PHPExcel_Calculation_Functions::getCompatibilityMode() == PHPExcel_Calculation_Functions::COMPATIBILITY_OPENOFFICE) {
- $arg = (int) $arg;
- } else {
- $arg = ($arg) ? PHPExcel_Calculation::getTRUE() : PHPExcel_Calculation::getFALSE();
- }
- }
- $returnValue .= $arg;
- }
-
- // Return
- return $returnValue;
- } // function CONCATENATE()
-
-
- /**
- * DOLLAR
- *
- * This function converts a number to text using currency format, with the decimals rounded to the specified place.
- * The format used is $#,##0.00_);($#,##0.00)..
- *
- * @param float $value The value to format
- * @param int $decimals The number of digits to display to the right of the decimal point.
- * If decimals is negative, number is rounded to the left of the decimal point.
- * If you omit decimals, it is assumed to be 2
- * @return string
- */
- public static function DOLLAR($value = 0, $decimals = 2) {
- $value = PHPExcel_Calculation_Functions::flattenSingleValue($value);
- $decimals = is_null($decimals) ? 0 : PHPExcel_Calculation_Functions::flattenSingleValue($decimals);
-
- // Validate parameters
- if (!is_numeric($value) || !is_numeric($decimals)) {
- return PHPExcel_Calculation_Functions::NaN();
- }
- $decimals = floor($decimals);
-
- if ($decimals > 0) {
- return money_format('%.'.$decimals.'n',$value);
- } else {
- $round = pow(10,abs($decimals));
- if ($value < 0) { $round = 0-$round; }
- $value = PHPExcel_Calculation_MathTrig::MROUND($value,$round);
- // The implementation of money_format used if the standard PHP function is not available can't handle decimal places of 0,
- // so we display to 1 dp and chop off that character and the decimal separator using substr
- return substr(money_format('%.1n',$value),0,-2);
- }
- } // function DOLLAR()
-
-
- /**
- * SEARCHSENSITIVE
- *
- * @param string $needle The string to look for
- * @param string $haystack The string in which to look
- * @param int $offset Offset within $haystack
- * @return string
- */
- public static function SEARCHSENSITIVE($needle,$haystack,$offset=1) {
- $needle = PHPExcel_Calculation_Functions::flattenSingleValue($needle);
- $haystack = PHPExcel_Calculation_Functions::flattenSingleValue($haystack);
- $offset = PHPExcel_Calculation_Functions::flattenSingleValue($offset);
-
- if (!is_bool($needle)) {
- if (is_bool($haystack)) {
- $haystack = ($haystack) ? PHPExcel_Calculation::getTRUE() : PHPExcel_Calculation::getFALSE();
- }
-
- if (($offset > 0) && (PHPExcel_Shared_String::CountCharacters($haystack) > $offset)) {
- if (PHPExcel_Shared_String::CountCharacters($needle) == 0) {
- return $offset;
- }
- if (function_exists('mb_strpos')) {
- $pos = mb_strpos($haystack, $needle, --$offset, 'UTF-8');
- } else {
- $pos = strpos($haystack, $needle, --$offset);
- }
- if ($pos !== false) {
- return ++$pos;
- }
- }
- }
- return PHPExcel_Calculation_Functions::VALUE();
- } // function SEARCHSENSITIVE()
-
-
- /**
- * SEARCHINSENSITIVE
- *
- * @param string $needle The string to look for
- * @param string $haystack The string in which to look
- * @param int $offset Offset within $haystack
- * @return string
- */
- public static function SEARCHINSENSITIVE($needle,$haystack,$offset=1) {
- $needle = PHPExcel_Calculation_Functions::flattenSingleValue($needle);
- $haystack = PHPExcel_Calculation_Functions::flattenSingleValue($haystack);
- $offset = PHPExcel_Calculation_Functions::flattenSingleValue($offset);
-
- if (!is_bool($needle)) {
- if (is_bool($haystack)) {
- $haystack = ($haystack) ? PHPExcel_Calculation::getTRUE() : PHPExcel_Calculation::getFALSE();
- }
-
- if (($offset > 0) && (PHPExcel_Shared_String::CountCharacters($haystack) > $offset)) {
- if (PHPExcel_Shared_String::CountCharacters($needle) == 0) {
- return $offset;
- }
- if (function_exists('mb_stripos')) {
- $pos = mb_stripos($haystack, $needle, --$offset,'UTF-8');
- } else {
- $pos = stripos($haystack, $needle, --$offset);
- }
- if ($pos !== false) {
- return ++$pos;
- }
- }
- }
- return PHPExcel_Calculation_Functions::VALUE();
- } // function SEARCHINSENSITIVE()
-
-
- /**
- * FIXEDFORMAT
- *
- * @param mixed $value Value to check
- * @return boolean
- */
- public static function FIXEDFORMAT($value, $decimals = 2, $no_commas = FALSE) {
- $value = PHPExcel_Calculation_Functions::flattenSingleValue($value);
- $decimals = PHPExcel_Calculation_Functions::flattenSingleValue($decimals);
- $no_commas = PHPExcel_Calculation_Functions::flattenSingleValue($no_commas);
-
- // Validate parameters
- if (!is_numeric($value) || !is_numeric($decimals)) {
- return PHPExcel_Calculation_Functions::NaN();
- }
- $decimals = floor($decimals);
-
- $valueResult = round($value,$decimals);
- if ($decimals < 0) { $decimals = 0; }
- if (!$no_commas) {
- $valueResult = number_format($valueResult,$decimals);
- }
-
- return (string) $valueResult;
- } // function FIXEDFORMAT()
-
-
- /**
- * LEFT
- *
- * @param string $value Value
- * @param int $chars Number of characters
- * @return string
- */
- public static function LEFT($value = '', $chars = 1) {
- $value = PHPExcel_Calculation_Functions::flattenSingleValue($value);
- $chars = PHPExcel_Calculation_Functions::flattenSingleValue($chars);
-
- if ($chars < 0) {
- return PHPExcel_Calculation_Functions::VALUE();
- }
-
- if (is_bool($value)) {
- $value = ($value) ? PHPExcel_Calculation::getTRUE() : PHPExcel_Calculation::getFALSE();
- }
-
- if (function_exists('mb_substr')) {
- return mb_substr($value, 0, $chars, 'UTF-8');
- } else {
- return substr($value, 0, $chars);
- }
- } // function LEFT()
-
-
- /**
- * MID
- *
- * @param string $value Value
- * @param int $start Start character
- * @param int $chars Number of characters
- * @return string
- */
- public static function MID($value = '', $start = 1, $chars = null) {
- $value = PHPExcel_Calculation_Functions::flattenSingleValue($value);
- $start = PHPExcel_Calculation_Functions::flattenSingleValue($start);
- $chars = PHPExcel_Calculation_Functions::flattenSingleValue($chars);
-
- if (($start < 1) || ($chars < 0)) {
- return PHPExcel_Calculation_Functions::VALUE();
- }
-
- if (is_bool($value)) {
- $value = ($value) ? PHPExcel_Calculation::getTRUE() : PHPExcel_Calculation::getFALSE();
- }
-
- if (function_exists('mb_substr')) {
- return mb_substr($value, --$start, $chars, 'UTF-8');
- } else {
- return substr($value, --$start, $chars);
- }
- } // function MID()
-
-
- /**
- * RIGHT
- *
- * @param string $value Value
- * @param int $chars Number of characters
- * @return string
- */
- public static function RIGHT($value = '', $chars = 1) {
- $value = PHPExcel_Calculation_Functions::flattenSingleValue($value);
- $chars = PHPExcel_Calculation_Functions::flattenSingleValue($chars);
-
- if ($chars < 0) {
- return PHPExcel_Calculation_Functions::VALUE();
- }
-
- if (is_bool($value)) {
- $value = ($value) ? PHPExcel_Calculation::getTRUE() : PHPExcel_Calculation::getFALSE();
- }
-
- if ((function_exists('mb_substr')) && (function_exists('mb_strlen'))) {
- return mb_substr($value, mb_strlen($value, 'UTF-8') - $chars, $chars, 'UTF-8');
- } else {
- return substr($value, strlen($value) - $chars);
- }
- } // function RIGHT()
-
-
- /**
- * STRINGLENGTH
- *
- * @param string $value Value
- * @param int $chars Number of characters
- * @return string
- */
- public static function STRINGLENGTH($value = '') {
- $value = PHPExcel_Calculation_Functions::flattenSingleValue($value);
-
- if (is_bool($value)) {
- $value = ($value) ? PHPExcel_Calculation::getTRUE() : PHPExcel_Calculation::getFALSE();
- }
-
- if (function_exists('mb_strlen')) {
- return mb_strlen($value, 'UTF-8');
- } else {
- return strlen($value);
- }
- } // function STRINGLENGTH()
-
-
- /**
- * LOWERCASE
- *
- * Converts a string value to upper case.
- *
- * @param string $mixedCaseString
- * @return string
- */
- public static function LOWERCASE($mixedCaseString) {
- $mixedCaseString = PHPExcel_Calculation_Functions::flattenSingleValue($mixedCaseString);
-
- if (is_bool($mixedCaseString)) {
- $mixedCaseString = ($mixedCaseString) ? PHPExcel_Calculation::getTRUE() : PHPExcel_Calculation::getFALSE();
- }
-
- if (function_exists('mb_convert_case')) {
- return mb_convert_case($mixedCaseString, MB_CASE_LOWER, 'UTF-8');
- } else {
- return strtoupper($mixedCaseString);
- }
- } // function LOWERCASE()
-
-
- /**
- * UPPERCASE
- *
- * Converts a string value to upper case.
- *
- * @param string $mixedCaseString
- * @return string
- */
- public static function UPPERCASE($mixedCaseString) {
- $mixedCaseString = PHPExcel_Calculation_Functions::flattenSingleValue($mixedCaseString);
-
- if (is_bool($mixedCaseString)) {
- $mixedCaseString = ($mixedCaseString) ? PHPExcel_Calculation::getTRUE() : PHPExcel_Calculation::getFALSE();
- }
-
- if (function_exists('mb_convert_case')) {
- return mb_convert_case($mixedCaseString, MB_CASE_UPPER, 'UTF-8');
- } else {
- return strtoupper($mixedCaseString);
- }
- } // function UPPERCASE()
-
-
- /**
- * PROPERCASE
- *
- * Converts a string value to upper case.
- *
- * @param string $mixedCaseString
- * @return string
- */
- public static function PROPERCASE($mixedCaseString) {
- $mixedCaseString = PHPExcel_Calculation_Functions::flattenSingleValue($mixedCaseString);
-
- if (is_bool($mixedCaseString)) {
- $mixedCaseString = ($mixedCaseString) ? PHPExcel_Calculation::getTRUE() : PHPExcel_Calculation::getFALSE();
- }
-
- if (function_exists('mb_convert_case')) {
- return mb_convert_case($mixedCaseString, MB_CASE_TITLE, 'UTF-8');
- } else {
- return ucwords($mixedCaseString);
- }
- } // function PROPERCASE()
-
-
- /**
- * REPLACE
- *
- * @param string $value Value
- * @param int $start Start character
- * @param int $chars Number of characters
- * @return string
- */
- public static function REPLACE($oldText = '', $start = 1, $chars = null, $newText) {
- $oldText = PHPExcel_Calculation_Functions::flattenSingleValue($oldText);
- $start = PHPExcel_Calculation_Functions::flattenSingleValue($start);
- $chars = PHPExcel_Calculation_Functions::flattenSingleValue($chars);
- $newText = PHPExcel_Calculation_Functions::flattenSingleValue($newText);
-
- $left = self::LEFT($oldText,$start-1);
- $right = self::RIGHT($oldText,self::STRINGLENGTH($oldText)-($start+$chars)+1);
-
- return $left.$newText.$right;
- } // function REPLACE()
-
-
- /**
- * SUBSTITUTE
- *
- * @param string $text Value
- * @param string $fromText From Value
- * @param string $toText To Value
- * @param integer $instance Instance Number
- * @return string
- */
- public static function SUBSTITUTE($text = '', $fromText = '', $toText = '', $instance = 0) {
- $text = PHPExcel_Calculation_Functions::flattenSingleValue($text);
- $fromText = PHPExcel_Calculation_Functions::flattenSingleValue($fromText);
- $toText = PHPExcel_Calculation_Functions::flattenSingleValue($toText);
- $instance = floor(PHPExcel_Calculation_Functions::flattenSingleValue($instance));
-
- if ($instance == 0) {
- if(function_exists('mb_str_replace')) {
- return mb_str_replace($fromText,$toText,$text);
- } else {
- return str_replace($fromText,$toText,$text);
- }
- } else {
- $pos = -1;
- while($instance > 0) {
- if (function_exists('mb_strpos')) {
- $pos = mb_strpos($text, $fromText, $pos+1, 'UTF-8');
- } else {
- $pos = strpos($text, $fromText, $pos+1);
- }
- if ($pos === false) {
- break;
- }
- --$instance;
- }
- if ($pos !== false) {
- if (function_exists('mb_strlen')) {
- return self::REPLACE($text,++$pos,mb_strlen($fromText, 'UTF-8'),$toText);
- } else {
- return self::REPLACE($text,++$pos,strlen($fromText),$toText);
- }
- }
- }
-
- return $text;
- } // function SUBSTITUTE()
-
-
- /**
- * RETURNSTRING
- *
- * @param mixed $value Value to check
- * @return boolean
- */
- public static function RETURNSTRING($testValue = '') {
- $testValue = PHPExcel_Calculation_Functions::flattenSingleValue($testValue);
-
- if (is_string($testValue)) {
- return $testValue;
- }
- return Null;
- } // function RETURNSTRING()
-
-
- /**
- * TEXTFORMAT
- *
- * @param mixed $value Value to check
- * @return boolean
- */
- public static function TEXTFORMAT($value,$format) {
- $value = PHPExcel_Calculation_Functions::flattenSingleValue($value);
- $format = PHPExcel_Calculation_Functions::flattenSingleValue($format);
-
- if ((is_string($value)) && (!is_numeric($value)) && PHPExcel_Shared_Date::isDateTimeFormatCode($format)) {
- $value = PHPExcel_Calculation_DateTime::DATEVALUE($value);
- }
-
- return (string) PHPExcel_Style_NumberFormat::toFormattedString($value,$format);
- } // function TEXTFORMAT()
-
-} // class PHPExcel_Calculation_TextData
diff --git a/admin/survey/excel/PHPExcel/Calculation/Token/Stack.php b/admin/survey/excel/PHPExcel/Calculation/Token/Stack.php
deleted file mode 100644
index bd79c48..0000000
--- a/admin/survey/excel/PHPExcel/Calculation/Token/Stack.php
+++ /dev/null
@@ -1,73 +0,0 @@
-<?php
-/**
- * PHPExcel
- *
- * Copyright (c) 2006 - 2012 PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel_Calculation
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-
-class PHPExcel_Calculation_Token_Stack {
-
- private $_stack = array();
- private $_count = 0;
-
-
- public function count() {
- return $this->_count;
- } // function count()
-
-
- public function push($type,$value,$reference=null) {
- $this->_stack[$this->_count++] = array('type' => $type,
- 'value' => $value,
- 'reference' => $reference
- );
- if ($type == 'Function') {
- $localeFunction = PHPExcel_Calculation::_localeFunc($value);
- if ($localeFunction != $value) {
- $this->_stack[($this->_count - 1)]['localeValue'] = $localeFunction;
- }
- }
- } // function push()
-
-
- public function pop() {
- if ($this->_count > 0) {
- return $this->_stack[--$this->_count];
- }
- return null;
- } // function pop()
-
-
- public function last($n=1) {
- if ($this->_count-$n < 0) {
- return null;
- }
- return $this->_stack[$this->_count-$n];
- } // function last()
-
-
- function __construct() {
- }
-
-} // class PHPExcel_Calculation_Token_Stack
diff --git a/admin/survey/excel/PHPExcel/Calculation/functionlist.txt b/admin/survey/excel/PHPExcel/Calculation/functionlist.txt
deleted file mode 100644
index e90a2f8..0000000
--- a/admin/survey/excel/PHPExcel/Calculation/functionlist.txt
+++ /dev/null
@@ -1,351 +0,0 @@
-ABS
-ACCRINT
-ACCRINTM
-ACOS
-ACOSH
-ADDRESS
-AMORDEGRC
-AMORLINC
-AND
-AREAS
-ASC
-ASIN
-ASINH
-ATAN
-ATAN2
-ATANH
-AVEDEV
-AVERAGE
-AVERAGEA
-AVERAGEIF
-AVERAGEIFS
-BAHTTEXT
-BESSELI
-BESSELJ
-BESSELK
-BESSELY
-BETADIST
-BETAINV
-BIN2DEC
-BIN2HEX
-BIN2OCT
-BINOMDIST
-CEILING
-CELL
-CHAR
-CHIDIST
-CHIINV
-CHITEST
-CHOOSE
-CLEAN
-CODE
-COLUMN
-COLUMNS
-COMBIN
-COMPLEX
-CONCATENATE
-CONFIDENCE
-CONVERT
-CORREL
-COS
-COSH
-COUNT
-COUNTA
-COUNTBLANK
-COUNTIF
-COUNTIFS
-COUPDAYBS
-COUPDAYBS
-COUPDAYSNC
-COUPNCD
-COUPNUM
-COUPPCD
-COVAR
-CRITBINOM
-CUBEKPIMEMBER
-CUBEMEMBER
-CUBEMEMBERPROPERTY
-CUBERANKEDMEMBER
-CUBESET
-CUBESETCOUNT
-CUBEVALUE
-CUMIPMT
-CUMPRINC
-DATE
-DATEDIF
-DATEVALUE
-DAVERAGE
-DAY
-DAYS360
-DB
-DCOUNT
-DCOUNTA
-DDB
-DEC2BIN
-DEC2HEX
-DEC2OCT
-DEGREES
-DELTA
-DEVSQ
-DGET
-DISC
-DMAX
-DMIN
-DOLLAR
-DOLLARDE
-DOLLARFR
-DPRODUCT
-DSTDEV
-DSTDEVP
-DSUM
-DURATION
-DVAR
-DVARP
-EDATE
-EFFECT
-EOMONTH
-ERF
-ERFC
-ERROR.TYPE
-EVEN
-EXACT
-EXP
-EXPONDIST
-FACT
-FACTDOUBLE
-FALSE
-FDIST
-FIND
-FINDB
-FINV
-FISHER
-FISHERINV
-FIXED
-FLOOR
-FORECAST
-FREQUENCY
-FTEST
-FV
-FVSCHEDULE
-GAMAMDIST
-GAMMAINV
-GAMMALN
-GCD
-GEOMEAN
-GESTEP
-GETPIVOTDATA
-GROWTH
-HARMEAN
-HEX2BIN
-HEX2OCT
-HLOOKUP
-HOUR
-HYPERLINK
-HYPGEOMDIST
-IF
-IFERROR
-IMABS
-IMAGINARY
-IMARGUMENT
-IMCONJUGATE
-IMCOS
-IMEXP
-IMLN
-IMLOG10
-IMLOG2
-IMPOWER
-IMPRODUCT
-IMREAL
-IMSIN
-IMSQRT
-IMSUB
-IMSUM
-INDEX
-INDIRECT
-INFO
-INT
-INTERCEPT
-INTRATE
-IPMT
-IRR
-ISBLANK
-ISERR
-ISERROR
-ISEVEN
-ISLOGICAL
-ISNA
-ISNONTEXT
-ISNUMBER
-ISODD
-ISPMT
-ISREF
-ISTEXT
-JIS
-KURT
-LARGE
-LCM
-LEFT
-LEFTB
-LEN
-LENB
-LINEST
-LN
-LOG
-LOG10
-LOGEST
-LOGINV
-LOGNORMDIST
-LOOKUP
-LOWER
-MATCH
-MAX
-MAXA
-MDETERM
-MDURATION
-MEDIAN
-MID
-MIDB
-MIN
-MINA
-MINUTE
-MINVERSE
-MIRR
-MMULT
-MOD
-MODE
-MONTH
-MROUND
-MULTINOMIAL
-N
-NA
-NEGBINOMDIST
-NETWORKDAYS
-NOMINAL
-NORMDIST
-NORMINV
-NORMSDIST
-NORMSINV
-NOT
-NOW
-NPER
-NPV
-OCT2BIN
-OCT2DEC
-OCT2HEX
-ODD
-ODDFPRICE
-ODDFYIELD
-ODDLPRICE
-ODDLYIELD
-OFFSET
-OR
-PEARSON
-PERCENTILE
-PERCENTRANK
-PERMUT
-PHONETIC
-PI
-PMT
-POISSON
-POWER
-PPMT
-PRICE
-PRICEDISC
-PRICEMAT
-PROB
-PRODUCT
-PROPER
-PV
-QUARTILE
-QUOTIENT
-RADIANS
-RAND
-RANDBETWEEN
-RANK
-RATE
-RECEIVED
-REPLACE
-REPLACEB
-REPT
-RIGHT
-RIGHTB
-ROMAN
-ROUND
-ROUNDDOWN
-ROUNDUP
-ROW
-ROWS
-RSQ
-RTD
-SEARCH
-SEARCHB
-SECOND
-SERIESSUM
-SIGN
-SIN
-SINH
-SKEW
-SLN
-SLOPE
-SMALL
-SQRT
-SQRTPI
-STANDARDIZE
-STDEV
-STDEVA
-STDEVP
-STDEVPA
-STEYX
-SUBSTITUTE
-SUBTOTAL
-SUM
-SUMIF
-SUMIFS
-SUMPRODUCT
-SUMSQ
-SUMX2MY2
-SUMX2PY2
-SUMXMY2
-SYD
-T
-TAN
-TANH
-TBILLEQ
-TBILLPRICE
-TBILLYIELD
-TDIST
-TEXT
-TIME
-TIMEVALUE
-TINV
-TODAY
-TRANSPOSE
-TREND
-TRIM
-TRIMMEAN
-TRUE
-TRUNC
-TTEST
-TYPE
-UPPER
-USDOLLAR
-VALUE
-VAR
-VARA
-VARP
-VARPA
-VDB
-VERSION
-VLOOKUP
-WEEKDAY
-WEEKNUM
-WEIBULL
-WORKDAY
-XIRR
-XNPV
-YEAR
-YEARFRAC
-YIELD
-YIELDDISC
-YIELDMAT
-ZTEST
diff --git a/admin/survey/excel/PHPExcel/Cell.php b/admin/survey/excel/PHPExcel/Cell.php
deleted file mode 100644
index d0f5231..0000000
--- a/admin/survey/excel/PHPExcel/Cell.php
+++ /dev/null
@@ -1,972 +0,0 @@
-<?php
-/**
- * PHPExcel
- *
- * Copyright (c) 2006 - 2012 PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel_Cell
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-
-/**
- * PHPExcel_Cell
- *
- * @category PHPExcel
- * @package PHPExcel_Cell
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- */
-class PHPExcel_Cell
-{
-
- /**
- * Default range variable constant
- *
- * @var string
- */
- const DEFAULT_RANGE = 'A1:A1';
-
- /**
- * Value binder to use
- *
- * @var PHPExcel_Cell_IValueBinder
- */
- private static $_valueBinder = NULL;
-
- /**
- * Column of the cell
- *
- * @var string
- */
- private $_column;
-
- /**
- * Row of the cell
- *
- * @var int
- */
- private $_row;
-
- /**
- * Value of the cell
- *
- * @var mixed
- */
- private $_value;
-
- /**
- * Calculated value of the cell (used for caching)
- * This returns the value last calculated by MS Excel or whichever spreadsheet program was used to
- * create the original spreadsheet file.
- * Note that this value is not guaranteed to reflect the actual calculated value because it is
- * possible that auto-calculation was disabled in the original spreadsheet, and underlying data
- * values used by the formula have changed since it was last calculated.
- *
- * @var mixed
- */
- private $_calculatedValue = NULL;
-
- /**
- * Type of the cell data
- *
- * @var string
- */
- private $_dataType;
-
- /**
- * Parent worksheet
- *
- * @var PHPExcel_Worksheet
- */
- private $_parent;
-
- /**
- * Index to cellXf
- *
- * @var int
- */
- private $_xfIndex;
-
- /**
- * Attributes of the formula
- *
- */
- private $_formulaAttributes;
-
-
- /**
- * Send notification to the cache controller
- *
- * @return void
- **/
- public function notifyCacheController() {
- $this->_parent->getCellCacheController()->updateCacheData($this);
- return $this;
- }
-
- public function detach() {
- $this->_parent = NULL;
- }
-
- public function attach($parent) {
- $this->_parent = $parent;
- }
-
-
- /**
- * Create a new Cell
- *
- * @param string $pColumn
- * @param int $pRow
- * @param mixed $pValue
- * @param string $pDataType
- * @param PHPExcel_Worksheet $pSheet
- * @throws PHPExcel_Exception
- */
- public function __construct($pColumn = 'A', $pRow = 1, $pValue = NULL, $pDataType = NULL, PHPExcel_Worksheet $pSheet = NULL)
- {
- // Initialise cell coordinate
- $this->_column = strtoupper($pColumn);
- $this->_row = $pRow;
-
- // Initialise cell value
- $this->_value = $pValue;
-
- // Set worksheet
- $this->_parent = $pSheet;
-
- // Set datatype?
- if ($pDataType !== NULL) {
- if ($pDataType == PHPExcel_Cell_DataType::TYPE_STRING2)
- $pDataType = PHPExcel_Cell_DataType::TYPE_STRING;
- $this->_dataType = $pDataType;
- } else {
- if (!self::getValueBinder()->bindValue($this, $pValue)) {
- throw new PHPExcel_Exception("Value could not be bound to cell.");
- }
- }
-
- // set default index to cellXf
- $this->_xfIndex = 0;
- }
-
- /**
- * Get cell coordinate column
- *
- * @return string
- */
- public function getColumn()
- {
- return $this->_column;
- }
-
- /**
- * Get cell coordinate row
- *
- * @return int
- */
- public function getRow()
- {
- return $this->_row;
- }
-
- /**
- * Get cell coordinate
- *
- * @return string
- */
- public function getCoordinate()
- {
- return $this->_column . $this->_row;
- }
-
- /**
- * Get cell value
- *
- * @return mixed
- */
- public function getValue()
- {
- return $this->_value;
- }
-
- /**
- * Get cell value with formatting
- *
- * @return string
- */
- public function getFormattedValue()
- {
- return (string) PHPExcel_Style_NumberFormat::toFormattedString(
- $this->getCalculatedValue(),
- $this->_parent->getParent()->getCellXfByIndex($this->getXfIndex())
- ->getNumberFormat()->getFormatCode()
- );
- }
-
- /**
- * Set cell value
- *
- * Sets the value for a cell, automatically determining the datatype using the value binder
- *
- * @param mixed $pValue Value
- * @return PHPExcel_Cell
- * @throws PHPExcel_Exception
- */
- public function setValue($pValue = NULL)
- {
- if (!self::getValueBinder()->bindValue($this, $pValue)) {
- throw new PHPExcel_Exception("Value could not be bound to cell.");
- }
- return $this;
- }
-
- /**
- * Set the value for a cell, with the explicit data type passed to the method (bypassing any use of the value binder)
- *
- * @param mixed $pValue Value
- * @param string $pDataType Explicit data type
- * @return PHPExcel_Cell
- * @throws PHPExcel_Exception
- */
- public function setValueExplicit($pValue = NULL, $pDataType = PHPExcel_Cell_DataType::TYPE_STRING)
- {
- // set the value according to data type
- switch ($pDataType) {
- case PHPExcel_Cell_DataType::TYPE_STRING2:
- $pDataType = PHPExcel_Cell_DataType::TYPE_STRING;
- case PHPExcel_Cell_DataType::TYPE_STRING:
- case PHPExcel_Cell_DataType::TYPE_NULL:
- case PHPExcel_Cell_DataType::TYPE_INLINE:
- $this->_value = PHPExcel_Cell_DataType::checkString($pValue);
- break;
- case PHPExcel_Cell_DataType::TYPE_NUMERIC:
- $this->_value = (float)$pValue;
- break;
- case PHPExcel_Cell_DataType::TYPE_FORMULA:
- $this->_value = (string)$pValue;
- break;
- case PHPExcel_Cell_DataType::TYPE_BOOL:
- $this->_value = (bool)$pValue;
- break;
- case PHPExcel_Cell_DataType::TYPE_ERROR:
- $this->_value = PHPExcel_Cell_DataType::checkErrorCode($pValue);
- break;
- default:
- throw new PHPExcel_Exception('Invalid datatype: ' . $pDataType);
- break;
- }
-
- // set the datatype
- $this->_dataType = $pDataType;
-
- return $this->notifyCacheController();
- }
-
- /**
- * Get calculated cell value
- *
- * @deprecated Since version 1.7.8 for planned changes to cell for array formula handling
- *
- * @return mixed
- * @throws PHPExcel_Exception
- */
- public function getCalculatedValue($resetLog = TRUE)
- {
-// echo 'Cell '.$this->getCoordinate().' value is a '.$this->_dataType.' with a value of '.$this->getValue().'<br />';
- if ($this->_dataType == PHPExcel_Cell_DataType::TYPE_FORMULA) {
- try {
-// echo 'Cell value for '.$this->getCoordinate().' is a formula: Calculating value<br />';
- $result = PHPExcel_Calculation::getInstance()->calculateCellValue($this,$resetLog);
-// echo $this->getCoordinate().' calculation result is '.$result.'<br />';
- } catch ( Exception $ex ) {
- if (($ex->getMessage() === 'Unable to access External Workbook') && ($this->_calculatedValue !== NULL)) {
-// echo 'Returning fallback value of '.$this->_calculatedValue.' for cell '.$this->getCoordinate().'<br />';
- return $this->_calculatedValue; // Fallback for calculations referencing external files.
- }
-// echo 'Calculation Exception: '.$ex->getMessage().'<br />';
- $result = '#N/A';
- throw(
- new PHPExcel_Exception(
- $this->getParent()->getTitle().'!'.$this->getCoordinate().' -> '.$ex->getMessage()
- )
- );
- }
-
- if ($result === '#Not Yet Implemented') {
-// echo 'Returning fallback value of '.$this->_calculatedValue.' for cell '.$this->getCoordinate().'<br />';
- return $this->_calculatedValue; // Fallback if calculation engine does not support the formula.
- }
-// echo 'Returning calculated value of '.$result.' for cell '.$this->getCoordinate().'<br />';
- return $result;
- }
-
-// if ($this->_value === NULL) {
-// echo 'Cell '.$this->getCoordinate().' has no value, formula or otherwise<br />';
-// return NULL;
-// }
-// echo 'Cell value for '.$this->getCoordinate().' is not a formula: Returning data value of '.$this->_value.'<br />';
- return $this->_value;
- }
-
- /**
- * Set old calculated value (cached)
- *
- * @param mixed $pValue Value
- * @return PHPExcel_Cell
- */
- public function setCalculatedValue($pValue = NULL)
- {
- if ($pValue !== NULL) {
- $this->_calculatedValue = (is_numeric($pValue)) ? (float) $pValue : $pValue;
- }
-
- return $this->notifyCacheController();
- }
-
- /**
- * Get old calculated value (cached)
- * This returns the value last calculated by MS Excel or whichever spreadsheet program was used to
- * create the original spreadsheet file.
- * Note that this value is not guaranteed to refelect the actual calculated value because it is
- * possible that auto-calculation was disabled in the original spreadsheet, and underlying data
- * values used by the formula have changed since it was last calculated.
- *
- * @return mixed
- */
- public function getOldCalculatedValue()
- {
- return $this->_calculatedValue;
- }
-
- /**
- * Get cell data type
- *
- * @return string
- */
- public function getDataType()
- {
- return $this->_dataType;
- }
-
- /**
- * Set cell data type
- *
- * @param string $pDataType
- * @return PHPExcel_Cell
- */
- public function setDataType($pDataType = PHPExcel_Cell_DataType::TYPE_STRING)
- {
- if ($pDataType == PHPExcel_Cell_DataType::TYPE_STRING2)
- $pDataType = PHPExcel_Cell_DataType::TYPE_STRING;
-
- $this->_dataType = $pDataType;
-
- return $this->notifyCacheController();
- }
-
- /**
- * Does this cell contain Data validation rules?
- *
- * @return boolean
- * @throws PHPExcel_Exception
- */
- public function hasDataValidation()
- {
- if (!isset($this->_parent)) {
- throw new PHPExcel_Exception('Cannot check for data validation when cell is not bound to a worksheet');
- }
-
- return $this->_parent->dataValidationExists($this->getCoordinate());
- }
-
- /**
- * Get Data validation rules
- *
- * @return PHPExcel_Cell_DataValidation
- * @throws PHPExcel_Exception
- */
- public function getDataValidation()
- {
- if (!isset($this->_parent)) {
- throw new PHPExcel_Exception('Cannot get data validation for cell that is not bound to a worksheet');
- }
-
- return $this->_parent->getDataValidation($this->getCoordinate());
- }
-
- /**
- * Set Data validation rules
- *
- * @param PHPExcel_Cell_DataValidation $pDataValidation
- * @return PHPExcel_Cell
- * @throws PHPExcel_Exception
- */
- public function setDataValidation(PHPExcel_Cell_DataValidation $pDataValidation = NULL)
- {
- if (!isset($this->_parent)) {
- throw new PHPExcel_Exception('Cannot set data validation for cell that is not bound to a worksheet');
- }
-
- $this->_parent->setDataValidation($this->getCoordinate(), $pDataValidation);
-
- return $this->notifyCacheController();
- }
-
- /**
- * Does this cell contain a Hyperlink?
- *
- * @return boolean
- * @throws PHPExcel_Exception
- */
- public function hasHyperlink()
- {
- if (!isset($this->_parent)) {
- throw new PHPExcel_Exception('Cannot check for hyperlink when cell is not bound to a worksheet');
- }
-
- return $this->_parent->hyperlinkExists($this->getCoordinate());
- }
-
- /**
- * Get Hyperlink
- *
- * @return PHPExcel_Cell_Hyperlink
- * @throws PHPExcel_Exception
- */
- public function getHyperlink()
- {
- if (!isset($this->_parent)) {
- throw new PHPExcel_Exception('Cannot get hyperlink for cell that is not bound to a worksheet');
- }
-
- return $this->_parent->getHyperlink($this->getCoordinate());
- }
-
- /**
- * Set Hyperlink
- *
- * @param PHPExcel_Cell_Hyperlink $pHyperlink
- * @return PHPExcel_Cell
- * @throws PHPExcel_Exception
- */
- public function setHyperlink(PHPExcel_Cell_Hyperlink $pHyperlink = NULL)
- {
- if (!isset($this->_parent)) {
- throw new PHPExcel_Exception('Cannot set hyperlink for cell that is not bound to a worksheet');
- }
-
- $this->_parent->setHyperlink($this->getCoordinate(), $pHyperlink);
-
- return $this->notifyCacheController();
- }
-
- /**
- * Get parent worksheet
- *
- * @return PHPExcel_Worksheet
- */
- public function getParent() {
- return $this->_parent;
- }
-
- /**
- * Re-bind parent
- *
- * @param PHPExcel_Worksheet $parent
- * @return PHPExcel_Cell
- */
- public function rebindParent(PHPExcel_Worksheet $parent) {
- $this->_parent = $parent;
-
- return $this->notifyCacheController();
- }
-
- /**
- * Is cell in a specific range?
- *
- * @param string $pRange Cell range (e.g. A1:A1)
- * @return boolean
- */
- public function isInRange($pRange = 'A1:A1')
- {
- list($rangeStart,$rangeEnd) = self::rangeBoundaries($pRange);
-
- // Translate properties
- $myColumn = self::columnIndexFromString($this->getColumn());
- $myRow = $this->getRow();
-
- // Verify if cell is in range
- return (($rangeStart[0] <= $myColumn) && ($rangeEnd[0] >= $myColumn) &&
- ($rangeStart[1] <= $myRow) && ($rangeEnd[1] >= $myRow)
- );
- }
-
- /**
- * Coordinate from string
- *
- * @param string $pCoordinateString
- * @return array Array containing column and row (indexes 0 and 1)
- * @throws PHPExcel_Exception
- */
- public static function coordinateFromString($pCoordinateString = 'A1')
- {
- if (preg_match("/^([$]?[A-Z]{1,3})([$]?\d{1,7})$/", $pCoordinateString, $matches)) {
- return array($matches[1],$matches[2]);
- } elseif ((strpos($pCoordinateString,':') !== FALSE) || (strpos($pCoordinateString,',') !== FALSE)) {
- throw new PHPExcel_Exception('Cell coordinate string can not be a range of cells');
- } elseif ($pCoordinateString == '') {
- throw new PHPExcel_Exception('Cell coordinate can not be zero-length string');
- }
-
- throw new PHPExcel_Exception('Invalid cell coordinate '.$pCoordinateString);
- }
-
- /**
- * Make string row, column or cell coordinate absolute
- *
- * @param string $pCoordinateString e.g. 'A' or '1' or 'A1'
- * Note that this value can be a row or column reference as well as a cell reference
- * @return string Absolute coordinate e.g. '$A' or '$1' or '$A$1'
- * @throws PHPExcel_Exception
- */
- public static function absoluteReference($pCoordinateString = 'A1')
- {
- if (strpos($pCoordinateString,':') === FALSE && strpos($pCoordinateString,',') === FALSE) {
- // Split out any worksheet name from the reference
- $worksheet = '';
- $cellAddress = explode('!',$pCoordinateString);
- if (count($cellAddress) > 1) {
- list($worksheet,$pCoordinateString) = $cellAddress;
- }
- if ($worksheet > '') $worksheet .= '!';
-
- // Create absolute coordinate
- if (ctype_digit($pCoordinateString)) {
- return $worksheet . '$' . $pCoordinateString;
- } elseif (ctype_alpha($pCoordinateString)) {
- return $worksheet . '$' . strtoupper($pCoordinateString);
- }
- return $worksheet . self::absoluteCoordinate($pCoordinateString);
- }
-
- throw new PHPExcel_Exception('Cell coordinate string can not be a range of cells');
- }
-
- /**
- * Make string coordinate absolute
- *
- * @param string $pCoordinateString e.g. 'A1'
- * @return string Absolute coordinate e.g. '$A$1'
- * @throws PHPExcel_Exception
- */
- public static function absoluteCoordinate($pCoordinateString = 'A1')
- {
- if (strpos($pCoordinateString,':') === FALSE && strpos($pCoordinateString,',') === FALSE) {
- // Split out any worksheet name from the coordinate
- $worksheet = '';
- $cellAddress = explode('!',$pCoordinateString);
- if (count($cellAddress) > 1) {
- list($worksheet,$pCoordinateString) = $cellAddress;
- }
- if ($worksheet > '') $worksheet .= '!';
-
- // Create absolute coordinate
- list($column, $row) = self::coordinateFromString($pCoordinateString);
- $column = ltrim($column,'$');
- $row = ltrim($row,'$');
- return $worksheet . '$' . $column . '$' . $row;
- }
-
- throw new PHPExcel_Exception('Cell coordinate string can not be a range of cells');
- }
-
- /**
- * Split range into coordinate strings
- *
- * @param string $pRange e.g. 'B4:D9' or 'B4:D9,H2:O11' or 'B4'
- * @return array Array containg one or more arrays containing one or two coordinate strings
- * e.g. array('B4','D9') or array(array('B4','D9'),array('H2','O11'))
- * or array('B4')
- */
- public static function splitRange($pRange = 'A1:A1')
- {
- // Ensure $pRange is a valid range
- if(empty($pRange)) {
- $pRange = self::DEFAULT_RANGE;
- }
-
- $exploded = explode(',', $pRange);
- $counter = count($exploded);
- for ($i = 0; $i < $counter; ++$i) {
- $exploded[$i] = explode(':', $exploded[$i]);
- }
- return $exploded;
- }
-
- /**
- * Build range from coordinate strings
- *
- * @param array $pRange Array containg one or more arrays containing one or two coordinate strings
- * @return string String representation of $pRange
- * @throws PHPExcel_Exception
- */
- public static function buildRange($pRange)
- {
- // Verify range
- if (!is_array($pRange) || empty($pRange) || !is_array($pRange[0])) {
- throw new PHPExcel_Exception('Range does not contain any information');
- }
-
- // Build range
- $imploded = array();
- $counter = count($pRange);
- for ($i = 0; $i < $counter; ++$i) {
- $pRange[$i] = implode(':', $pRange[$i]);
- }
- $imploded = implode(',', $pRange);
-
- return $imploded;
- }
-
- /**
- * Calculate range boundaries
- *
- * @param string $pRange Cell range (e.g. A1:A1)
- * @return array Range coordinates array(Start Cell, End Cell)
- * where Start Cell and End Cell are arrays (Column Number, Row Number)
- */
- public static function rangeBoundaries($pRange = 'A1:A1')
- {
- // Ensure $pRange is a valid range
- if(empty($pRange)) {
- $pRange = self::DEFAULT_RANGE;
- }
-
- // Uppercase coordinate
- $pRange = strtoupper($pRange);
-
- // Extract range
- if (strpos($pRange, ':') === FALSE) {
- $rangeA = $rangeB = $pRange;
- } else {
- list($rangeA, $rangeB) = explode(':', $pRange);
- }
-
- // Calculate range outer borders
- $rangeStart = self::coordinateFromString($rangeA);
- $rangeEnd = self::coordinateFromString($rangeB);
-
- // Translate column into index
- $rangeStart[0] = self::columnIndexFromString($rangeStart[0]);
- $rangeEnd[0] = self::columnIndexFromString($rangeEnd[0]);
-
- return array($rangeStart, $rangeEnd);
- }
-
- /**
- * Calculate range dimension
- *
- * @param string $pRange Cell range (e.g. A1:A1)
- * @return array Range dimension (width, height)
- */
- public static function rangeDimension($pRange = 'A1:A1')
- {
- // Calculate range outer borders
- list($rangeStart,$rangeEnd) = self::rangeBoundaries($pRange);
-
- return array( ($rangeEnd[0] - $rangeStart[0] + 1), ($rangeEnd[1] - $rangeStart[1] + 1) );
- }
-
- /**
- * Calculate range boundaries
- *
- * @param string $pRange Cell range (e.g. A1:A1)
- * @return array Range coordinates array(Start Cell, End Cell)
- * where Start Cell and End Cell are arrays (Column ID, Row Number)
- */
- public static function getRangeBoundaries($pRange = 'A1:A1')
- {
- // Ensure $pRange is a valid range
- if(empty($pRange)) {
- $pRange = self::DEFAULT_RANGE;
- }
-
- // Uppercase coordinate
- $pRange = strtoupper($pRange);
-
- // Extract range
- if (strpos($pRange, ':') === FALSE) {
- $rangeA = $rangeB = $pRange;
- } else {
- list($rangeA, $rangeB) = explode(':', $pRange);
- }
-
- return array( self::coordinateFromString($rangeA), self::coordinateFromString($rangeB));
- }
-
- /**
- * Column index from string
- *
- * @param string $pString
- * @return int Column index (base 1 !!!)
- * @throws Exception
- */
- public static function columnIndexFromString($pString = 'A')
- {
- // Using a lookup cache adds a slight memory overhead, but boosts speed
- // caching using a static within the method is faster than a class static,
- // though it's additional memory overhead
- static $_indexCache = array();
-
- if (isset($_indexCache[$pString]))
- return $_indexCache[$pString];
-
- // It's surprising how costly the strtoupper() and ord() calls actually are, so we use a lookup array rather than use ord()
- // and make it case insensitive to get rid of the strtoupper() as well. Because it's a static, there's no significant
- // memory overhead either
- static $_columnLookup = array(
- 'A' => 1, 'B' => 2, 'C' => 3, 'D' => 4, 'E' => 5, 'F' => 6, 'G' => 7, 'H' => 8, 'I' => 9, 'J' => 10, 'K' => 11, 'L' => 12, 'M' => 13,
- 'N' => 14, 'O' => 15, 'P' => 16, 'Q' => 17, 'R' => 18, 'S' => 19, 'T' => 20, 'U' => 21, 'V' => 22, 'W' => 23, 'X' => 24, 'Y' => 25, 'Z' => 26,
- 'a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5, 'f' => 6, 'g' => 7, 'h' => 8, 'i' => 9, 'j' => 10, 'k' => 11, 'l' => 12, 'm' => 13,
- 'n' => 14, 'o' => 15, 'p' => 16, 'q' => 17, 'r' => 18, 's' => 19, 't' => 20, 'u' => 21, 'v' => 22, 'w' => 23, 'x' => 24, 'y' => 25, 'z' => 26
- );
-
- // We also use the language construct isset() rather than the more costly strlen() function to match the length of $pString
- // for improved performance
- if (isset($pString{0})) {
- if (!isset($pString{1})) {
- $_indexCache[$pString] = $_columnLookup[$pString];
- return $_indexCache[$pString];
- } elseif(!isset($pString{2})) {
- $_indexCache[$pString] = $_columnLookup[$pString{0}] * 26 + $_columnLookup[$pString{1}];
- return $_indexCache[$pString];
- } elseif(!isset($pString{3})) {
- $_indexCache[$pString] = $_columnLookup[$pString{0}] * 676 + $_columnLookup[$pString{1}] * 26 + $_columnLookup[$pString{2}];
- return $_indexCache[$pString];
- }
- }
- throw new PHPExcel_Exception("Column string index can not be " . ((isset($pString{0})) ? "longer than 3 characters" : "empty"));
- }
-
- /**
- * String from columnindex
- *
- * @param int $pColumnIndex Column index (base 0 !!!)
- * @return string
- */
- public static function stringFromColumnIndex($pColumnIndex = 0)
- {
- // Using a lookup cache adds a slight memory overhead, but boosts speed
- // caching using a static within the method is faster than a class static,
- // though it's additional memory overhead
- static $_indexCache = array();
-
- if (!isset($_indexCache[$pColumnIndex])) {
- // Determine column string
- if ($pColumnIndex < 26) {
- $_indexCache[$pColumnIndex] = chr(65 + $pColumnIndex);
- } elseif ($pColumnIndex < 702) {
- $_indexCache[$pColumnIndex] = chr(64 + ($pColumnIndex / 26)) .
- chr(65 + $pColumnIndex % 26);
- } else {
- $_indexCache[$pColumnIndex] = chr(64 + (($pColumnIndex - 26) / 676)) .
- chr(65 + ((($pColumnIndex - 26) % 676) / 26)) .
- chr(65 + $pColumnIndex % 26);
- }
- }
- return $_indexCache[$pColumnIndex];
- }
-
- /**
- * Extract all cell references in range
- *
- * @param string $pRange Range (e.g. A1 or A1:C10 or A1:E10 A20:E25)
- * @return array Array containing single cell references
- */
- public static function extractAllCellReferencesInRange($pRange = 'A1') {
- // Returnvalue
- $returnValue = array();
-
- // Explode spaces
- $cellBlocks = explode(' ', str_replace('$', '', strtoupper($pRange)));
- foreach ($cellBlocks as $cellBlock) {
- // Single cell?
- if (strpos($cellBlock,':') === FALSE && strpos($cellBlock,',') === FALSE) {
- $returnValue[] = $cellBlock;
- continue;
- }
-
- // Range...
- $ranges = self::splitRange($cellBlock);
- foreach($ranges as $range) {
- // Single cell?
- if (!isset($range[1])) {
- $returnValue[] = $range[0];
- continue;
- }
-
- // Range...
- list($rangeStart, $rangeEnd) = $range;
- list($startCol, $startRow) = sscanf($rangeStart,'%[A-Z]%d');
- list($endCol, $endRow) = sscanf($rangeEnd,'%[A-Z]%d');
- $endCol++;
-
- // Current data
- $currentCol = $startCol;
- $currentRow = $startRow;
-
- // Loop cells
- while ($currentCol != $endCol) {
- while ($currentRow <= $endRow) {
- $returnValue[] = $currentCol.$currentRow;
- ++$currentRow;
- }
- ++$currentCol;
- $currentRow = $startRow;
- }
- }
- }
-
- // Sort the result by column and row
- $sortKeys = array();
- foreach (array_unique($returnValue) as $coord) {
- list($column,$row) = sscanf($coord,'%[A-Z]%d');
- $sortKeys[sprintf('%3s%09d',$column,$row)] = $coord;
- }
- ksort($sortKeys);
-
- // Return value
- return array_values($sortKeys);
- }
-
- /**
- * Compare 2 cells
- *
- * @param PHPExcel_Cell $a Cell a
- * @param PHPExcel_Cell $a Cell b
- * @return int Result of comparison (always -1 or 1, never zero!)
- */
- public static function compareCells(PHPExcel_Cell $a, PHPExcel_Cell $b)
- {
- if ($a->_row < $b->_row) {
- return -1;
- } elseif ($a->_row > $b->_row) {
- return 1;
- } elseif (self::columnIndexFromString($a->_column) < self::columnIndexFromString($b->_column)) {
- return -1;
- } else {
- return 1;
- }
- }
-
- /**
- * Get value binder to use
- *
- * @return PHPExcel_Cell_IValueBinder
- */
- public static function getValueBinder() {
- if (self::$_valueBinder === NULL) {
- self::$_valueBinder = new PHPExcel_Cell_DefaultValueBinder();
- }
-
- return self::$_valueBinder;
- }
-
- /**
- * Set value binder to use
- *
- * @param PHPExcel_Cell_IValueBinder $binder
- * @throws Exception
- */
- public static function setValueBinder(PHPExcel_Cell_IValueBinder $binder = NULL) {
- if ($binder === NULL) {
- throw new Exception("A PHPExcel_Cell_IValueBinder is required for PHPExcel to function correctly.");
- }
-
- self::$_valueBinder = $binder;
- }
-
- /**
- * Implement PHP __clone to create a deep clone, not just a shallow copy.
- */
- public function __clone() {
- $vars = get_object_vars($this);
- foreach ($vars as $key => $value) {
- if ((is_object($value)) && ($key != '_parent')) {
- $this->$key = clone $value;
- } else {
- $this->$key = $value;
- }
- }
- }
-
- /**
- * Get index to cellXf
- *
- * @return int
- */
- public function getXfIndex()
- {
- return $this->_xfIndex;
- }
-
- /**
- * Set index to cellXf
- *
- * @param int $pValue
- * @return PHPExcel_Cell
- */
- public function setXfIndex($pValue = 0)
- {
- $this->_xfIndex = $pValue;
-
- return $this->notifyCacheController();
- }
-
- /**
- * @deprecated Since version 1.7.8 for planned changes to cell for array formula handling
- */
- public function setFormulaAttributes($pAttributes)
- {
- $this->_formulaAttributes = $pAttributes;
- return $this;
- }
-
- /**
- * @deprecated Since version 1.7.8 for planned changes to cell for array formula handling
- */
- public function getFormulaAttributes()
- {
- return $this->_formulaAttributes;
- }
-
- /**
- * Convert to string
- *
- * @return string
- */
- public function __toString()
- {
- return (string) $this->getValue();
- }
-
-}
-
diff --git a/admin/survey/excel/PHPExcel/Cell/AdvancedValueBinder.php b/admin/survey/excel/PHPExcel/Cell/AdvancedValueBinder.php
deleted file mode 100644
index 021d0a7..0000000
--- a/admin/survey/excel/PHPExcel/Cell/AdvancedValueBinder.php
+++ /dev/null
@@ -1,190 +0,0 @@
-<?php
-/**
- * PHPExcel
- *
- * Copyright (c) 2006 - 2012 PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel_Cell
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-
-/** PHPExcel root directory */
-if (!defined('PHPEXCEL_ROOT')) {
- /**
- * @ignore
- */
- define('PHPEXCEL_ROOT', dirname(__FILE__) . '/../../');
- require(PHPEXCEL_ROOT . 'PHPExcel/Autoloader.php');
-}
-
-
-/**
- * PHPExcel_Cell_AdvancedValueBinder
- *
- * @category PHPExcel
- * @package PHPExcel_Cell
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- */
-class PHPExcel_Cell_AdvancedValueBinder extends PHPExcel_Cell_DefaultValueBinder implements PHPExcel_Cell_IValueBinder
-{
- /**
- * Bind value to a cell
- *
- * @param PHPExcel_Cell $cell Cell to bind value to
- * @param mixed $value Value to bind in cell
- * @return boolean
- */
- public function bindValue(PHPExcel_Cell $cell, $value = null)
- {
- // sanitize UTF-8 strings
- if (is_string($value)) {
- $value = PHPExcel_Shared_String::SanitizeUTF8($value);
- }
-
- // Find out data type
- $dataType = parent::dataTypeForValue($value);
-
- // Style logic - strings
- if ($dataType === PHPExcel_Cell_DataType::TYPE_STRING && !$value instanceof PHPExcel_RichText) {
- // Test for booleans using locale-setting
- if ($value == PHPExcel_Calculation::getTRUE()) {
- $cell->setValueExplicit( TRUE, PHPExcel_Cell_DataType::TYPE_BOOL);
- return true;
- } elseif($value == PHPExcel_Calculation::getFALSE()) {
- $cell->setValueExplicit( FALSE, PHPExcel_Cell_DataType::TYPE_BOOL);
- return true;
- }
-
- // Check for number in scientific format
- if (preg_match('/^'.PHPExcel_Calculation::CALCULATION_REGEXP_NUMBER.'$/', $value)) {
- $cell->setValueExplicit( (float) $value, PHPExcel_Cell_DataType::TYPE_NUMERIC);
- return true;
- }
-
- // Check for fraction
- if (preg_match('/^([+-]?) *([0-9]*)\s?\/\s*([0-9]*)$/', $value, $matches)) {
- // Convert value to number
- $value = $matches[2] / $matches[3];
- if ($matches[1] == '-') $value = 0 - $value;
- $cell->setValueExplicit( (float) $value, PHPExcel_Cell_DataType::TYPE_NUMERIC);
- // Set style
- $cell->getParent()->getStyle( $cell->getCoordinate() )
- ->getNumberFormat()->setFormatCode( '??/??' );
- return true;
- } elseif (preg_match('/^([+-]?)([0-9]*) +([0-9]*)\s?\/\s*([0-9]*)$/', $value, $matches)) {
- // Convert value to number
- $value = $matches[2] + ($matches[3] / $matches[4]);
- if ($matches[1] == '-') $value = 0 - $value;
- $cell->setValueExplicit( (float) $value, PHPExcel_Cell_DataType::TYPE_NUMERIC);
- // Set style
- $cell->getParent()->getStyle( $cell->getCoordinate() )
- ->getNumberFormat()->setFormatCode( '# ??/??' );
- return true;
- }
-
- // Check for percentage
- if (preg_match('/^\-?[0-9]*\.?[0-9]*\s?\%$/', $value)) {
- // Convert value to number
- $value = (float) str_replace('%', '', $value) / 100;
- $cell->setValueExplicit( $value, PHPExcel_Cell_DataType::TYPE_NUMERIC);
- // Set style
- $cell->getParent()->getStyle( $cell->getCoordinate() )
- ->getNumberFormat()->setFormatCode( PHPExcel_Style_NumberFormat::FORMAT_PERCENTAGE_00 );
- return true;
- }
-
- // Check for currency
- $currencyCode = PHPExcel_Shared_String::getCurrencyCode();
- if (preg_match('/^'.preg_quote($currencyCode).' *(\d{1,3}(\,\d{3})*|(\d+))(\.\d{2})?$/', $value)) {
- // Convert value to number
- $value = (float) trim(str_replace(array($currencyCode,','), '', $value));
- $cell->setValueExplicit( $value, PHPExcel_Cell_DataType::TYPE_NUMERIC);
- // Set style
- $cell->getParent()->getStyle( $cell->getCoordinate() )
- ->getNumberFormat()->setFormatCode(
- str_replace('$', $currencyCode, PHPExcel_Style_NumberFormat::FORMAT_CURRENCY_USD_SIMPLE )
- );
- return true;
- } elseif (preg_match('/^\$ *(\d{1,3}(\,\d{3})*|(\d+))(\.\d{2})?$/', $value)) {
- // Convert value to number
- $value = (float) trim(str_replace(array('$',','), '', $value));
- $cell->setValueExplicit( $value, PHPExcel_Cell_DataType::TYPE_NUMERIC);
- // Set style
- $cell->getParent()->getStyle( $cell->getCoordinate() )
- ->getNumberFormat()->setFormatCode( PHPExcel_Style_NumberFormat::FORMAT_CURRENCY_USD_SIMPLE );
- return true;
- }
-
- // Check for time without seconds e.g. '9:45', '09:45'
- if (preg_match('/^(\d|[0-1]\d|2[0-3]):[0-5]\d$/', $value)) {
- // Convert value to number
- list($h, $m) = explode(':', $value);
- $days = $h / 24 + $m / 1440;
- $cell->setValueExplicit($days, PHPExcel_Cell_DataType::TYPE_NUMERIC);
- // Set style
- $cell->getParent()->getStyle( $cell->getCoordinate() )
- ->getNumberFormat()->setFormatCode( PHPExcel_Style_NumberFormat::FORMAT_DATE_TIME3 );
- return true;
- }
-
- // Check for time with seconds '9:45:59', '09:45:59'
- if (preg_match('/^(\d|[0-1]\d|2[0-3]):[0-5]\d:[0-5]\d$/', $value)) {
- // Convert value to number
- list($h, $m, $s) = explode(':', $value);
- $days = $h / 24 + $m / 1440 + $s / 86400;
- // Convert value to number
- $cell->setValueExplicit($days, PHPExcel_Cell_DataType::TYPE_NUMERIC);
- // Set style
- $cell->getParent()->getStyle( $cell->getCoordinate() )
- ->getNumberFormat()->setFormatCode( PHPExcel_Style_NumberFormat::FORMAT_DATE_TIME4 );
- return true;
- }
-
- // Check for datetime, e.g. '2008-12-31', '2008-12-31 15:59', '2008-12-31 15:59:10'
- if (($d = PHPExcel_Shared_Date::stringToExcel($value)) !== false) {
- // Convert value to number
- $cell->setValueExplicit($d, PHPExcel_Cell_DataType::TYPE_NUMERIC);
- // Determine style. Either there is a time part or not. Look for ':'
- if (strpos($value, ':') !== false) {
- $formatCode = 'yyyy-mm-dd h:mm';
- } else {
- $formatCode = 'yyyy-mm-dd';
- }
- $cell->getParent()->getStyle( $cell->getCoordinate() )
- ->getNumberFormat()->setFormatCode($formatCode);
- return true;
- }
-
- // Check for newline character "\n"
- if (strpos($value, "\n") !== FALSE) {
- $value = PHPExcel_Shared_String::SanitizeUTF8($value);
- $cell->setValueExplicit($value, PHPExcel_Cell_DataType::TYPE_STRING);
- // Set style
- $cell->getParent()->getStyle( $cell->getCoordinate() )
- ->getAlignment()->setWrapText(TRUE);
- return true;
- }
- }
-
- // Not bound yet? Use parent...
- return parent::bindValue($cell, $value);
- }
-}
diff --git a/admin/survey/excel/PHPExcel/Cell/DataType.php b/admin/survey/excel/PHPExcel/Cell/DataType.php
deleted file mode 100644
index 5466851..0000000
--- a/admin/survey/excel/PHPExcel/Cell/DataType.php
+++ /dev/null
@@ -1,114 +0,0 @@
-<?php
-/**
- * PHPExcel
- *
- * Copyright (c) 2006 - 2012 PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel_Cell
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-
-/**
- * PHPExcel_Cell_DataType
- *
- * @category PHPExcel
- * @package PHPExcel_Cell
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- */
-class PHPExcel_Cell_DataType
-{
- /* Data types */
- const TYPE_STRING2 = 'str';
- const TYPE_STRING = 's';
- const TYPE_FORMULA = 'f';
- const TYPE_NUMERIC = 'n';
- const TYPE_BOOL = 'b';
- const TYPE_NULL = 'null';
- const TYPE_INLINE = 'inlineStr';
- const TYPE_ERROR = 'e';
-
- /**
- * List of error codes
- *
- * @var array
- */
- private static $_errorCodes = array('#NULL!' => 0, '#DIV/0!' => 1, '#VALUE!' => 2, '#REF!' => 3, '#NAME?' => 4, '#NUM!' => 5, '#N/A' => 6);
-
- /**
- * Get list of error codes
- *
- * @return array
- */
- public static function getErrorCodes() {
- return self::$_errorCodes;
- }
-
- /**
- * DataType for value
- *
- * @deprecated Replaced by PHPExcel_Cell_IValueBinder infrastructure
- * @param mixed $pValue
- * @return int
- */
- public static function dataTypeForValue($pValue = null) {
- return PHPExcel_Cell_DefaultValueBinder::dataTypeForValue($pValue);
- }
-
- /**
- * Check a string that it satisfies Excel requirements
- *
- * @param mixed Value to sanitize to an Excel string
- * @return mixed Sanitized value
- */
- public static function checkString($pValue = null)
- {
- if ($pValue instanceof PHPExcel_RichText) {
- // TODO: Sanitize Rich-Text string (max. character count is 32,767)
- return $pValue;
- }
-
- // string must never be longer than 32,767 characters, truncate if necessary
- $pValue = PHPExcel_Shared_String::Substring($pValue, 0, 32767);
-
- // we require that newline is represented as "\n" in core, not as "\r\n" or "\r"
- $pValue = str_replace(array("\r\n", "\r"), "\n", $pValue);
-
- return $pValue;
- }
-
- /**
- * Check a value that it is a valid error code
- *
- * @param mixed Value to sanitize to an Excel error code
- * @return string Sanitized value
- */
- public static function checkErrorCode($pValue = null)
- {
- $pValue = (string)$pValue;
-
- if ( !array_key_exists($pValue, self::$_errorCodes) ) {
- $pValue = '#NULL!';
- }
-
- return $pValue;
- }
-
-}
diff --git a/admin/survey/excel/PHPExcel/Cell/DataValidation.php b/admin/survey/excel/PHPExcel/Cell/DataValidation.php
deleted file mode 100644
index 603a8b7..0000000
--- a/admin/survey/excel/PHPExcel/Cell/DataValidation.php
+++ /dev/null
@@ -1,474 +0,0 @@
-<?php
-/**
- * PHPExcel
- *
- * Copyright (c) 2006 - 2012 PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel_Cell
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-
-/**
- * PHPExcel_Cell_DataValidation
- *
- * @category PHPExcel
- * @package PHPExcel_Cell
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- */
-class PHPExcel_Cell_DataValidation
-{
- /* Data validation types */
- const TYPE_NONE = 'none';
- const TYPE_CUSTOM = 'custom';
- const TYPE_DATE = 'date';
- const TYPE_DECIMAL = 'decimal';
- const TYPE_LIST = 'list';
- const TYPE_TEXTLENGTH = 'textLength';
- const TYPE_TIME = 'time';
- const TYPE_WHOLE = 'whole';
-
- /* Data validation error styles */
- const STYLE_STOP = 'stop';
- const STYLE_WARNING = 'warning';
- const STYLE_INFORMATION = 'information';
-
- /* Data validation operators */
- const OPERATOR_BETWEEN = 'between';
- const OPERATOR_EQUAL = 'equal';
- const OPERATOR_GREATERTHAN = 'greaterThan';
- const OPERATOR_GREATERTHANOREQUAL = 'greaterThanOrEqual';
- const OPERATOR_LESSTHAN = 'lessThan';
- const OPERATOR_LESSTHANOREQUAL = 'lessThanOrEqual';
- const OPERATOR_NOTBETWEEN = 'notBetween';
- const OPERATOR_NOTEQUAL = 'notEqual';
-
- /**
- * Formula 1
- *
- * @var string
- */
- private $_formula1;
-
- /**
- * Formula 2
- *
- * @var string
- */
- private $_formula2;
-
- /**
- * Type
- *
- * @var string
- */
- private $_type = PHPExcel_Cell_DataValidation::TYPE_NONE;
-
- /**
- * Error style
- *
- * @var string
- */
- private $_errorStyle = PHPExcel_Cell_DataValidation::STYLE_STOP;
-
- /**
- * Operator
- *
- * @var string
- */
- private $_operator;
-
- /**
- * Allow Blank
- *
- * @var boolean
- */
- private $_allowBlank;
-
- /**
- * Show DropDown
- *
- * @var boolean
- */
- private $_showDropDown;
-
- /**
- * Show InputMessage
- *
- * @var boolean
- */
- private $_showInputMessage;
-
- /**
- * Show ErrorMessage
- *
- * @var boolean
- */
- private $_showErrorMessage;
-
- /**
- * Error title
- *
- * @var string
- */
- private $_errorTitle;
-
- /**
- * Error
- *
- * @var string
- */
- private $_error;
-
- /**
- * Prompt title
- *
- * @var string
- */
- private $_promptTitle;
-
- /**
- * Prompt
- *
- * @var string
- */
- private $_prompt;
-
- /**
- * Create a new PHPExcel_Cell_DataValidation
- *
- * @throws Exception
- */
- public function __construct()
- {
- // Initialise member variables
- $this->_formula1 = '';
- $this->_formula2 = '';
- $this->_type = PHPExcel_Cell_DataValidation::TYPE_NONE;
- $this->_errorStyle = PHPExcel_Cell_DataValidation::STYLE_STOP;
- $this->_operator = '';
- $this->_allowBlank = false;
- $this->_showDropDown = false;
- $this->_showInputMessage = false;
- $this->_showErrorMessage = false;
- $this->_errorTitle = '';
- $this->_error = '';
- $this->_promptTitle = '';
- $this->_prompt = '';
- }
-
- /**
- * Get Formula 1
- *
- * @return string
- */
- public function getFormula1() {
- return $this->_formula1;
- }
-
- /**
- * Set Formula 1
- *
- * @param string $value
- * @return PHPExcel_Cell_DataValidation
- */
- public function setFormula1($value = '') {
- $this->_formula1 = $value;
- return $this;
- }
-
- /**
- * Get Formula 2
- *
- * @return string
- */
- public function getFormula2() {
- return $this->_formula2;
- }
-
- /**
- * Set Formula 2
- *
- * @param string $value
- * @return PHPExcel_Cell_DataValidation
- */
- public function setFormula2($value = '') {
- $this->_formula2 = $value;
- return $this;
- }
-
- /**
- * Get Type
- *
- * @return string
- */
- public function getType() {
- return $this->_type;
- }
-
- /**
- * Set Type
- *
- * @param string $value
- * @return PHPExcel_Cell_DataValidation
- */
- public function setType($value = PHPExcel_Cell_DataValidation::TYPE_NONE) {
- $this->_type = $value;
- return $this;
- }
-
- /**
- * Get Error style
- *
- * @return string
- */
- public function getErrorStyle() {
- return $this->_errorStyle;
- }
-
- /**
- * Set Error style
- *
- * @param string $value
- * @return PHPExcel_Cell_DataValidation
- */
- public function setErrorStyle($value = PHPExcel_Cell_DataValidation::STYLE_STOP) {
- $this->_errorStyle = $value;
- return $this;
- }
-
- /**
- * Get Operator
- *
- * @return string
- */
- public function getOperator() {
- return $this->_operator;
- }
-
- /**
- * Set Operator
- *
- * @param string $value
- * @return PHPExcel_Cell_DataValidation
- */
- public function setOperator($value = '') {
- $this->_operator = $value;
- return $this;
- }
-
- /**
- * Get Allow Blank
- *
- * @return boolean
- */
- public function getAllowBlank() {
- return $this->_allowBlank;
- }
-
- /**
- * Set Allow Blank
- *
- * @param boolean $value
- * @return PHPExcel_Cell_DataValidation
- */
- public function setAllowBlank($value = false) {
- $this->_allowBlank = $value;
- return $this;
- }
-
- /**
- * Get Show DropDown
- *
- * @return boolean
- */
- public function getShowDropDown() {
- return $this->_showDropDown;
- }
-
- /**
- * Set Show DropDown
- *
- * @param boolean $value
- * @return PHPExcel_Cell_DataValidation
- */
- public function setShowDropDown($value = false) {
- $this->_showDropDown = $value;
- return $this;
- }
-
- /**
- * Get Show InputMessage
- *
- * @return boolean
- */
- public function getShowInputMessage() {
- return $this->_showInputMessage;
- }
-
- /**
- * Set Show InputMessage
- *
- * @param boolean $value
- * @return PHPExcel_Cell_DataValidation
- */
- public function setShowInputMessage($value = false) {
- $this->_showInputMessage = $value;
- return $this;
- }
-
- /**
- * Get Show ErrorMessage
- *
- * @return boolean
- */
- public function getShowErrorMessage() {
- return $this->_showErrorMessage;
- }
-
- /**
- * Set Show ErrorMessage
- *
- * @param boolean $value
- * @return PHPExcel_Cell_DataValidation
- */
- public function setShowErrorMessage($value = false) {
- $this->_showErrorMessage = $value;
- return $this;
- }
-
- /**
- * Get Error title
- *
- * @return string
- */
- public function getErrorTitle() {
- return $this->_errorTitle;
- }
-
- /**
- * Set Error title
- *
- * @param string $value
- * @return PHPExcel_Cell_DataValidation
- */
- public function setErrorTitle($value = '') {
- $this->_errorTitle = $value;
- return $this;
- }
-
- /**
- * Get Error
- *
- * @return string
- */
- public function getError() {
- return $this->_error;
- }
-
- /**
- * Set Error
- *
- * @param string $value
- * @return PHPExcel_Cell_DataValidation
- */
- public function setError($value = '') {
- $this->_error = $value;
- return $this;
- }
-
- /**
- * Get Prompt title
- *
- * @return string
- */
- public function getPromptTitle() {
- return $this->_promptTitle;
- }
-
- /**
- * Set Prompt title
- *
- * @param string $value
- * @return PHPExcel_Cell_DataValidation
- */
- public function setPromptTitle($value = '') {
- $this->_promptTitle = $value;
- return $this;
- }
-
- /**
- * Get Prompt
- *
- * @return string
- */
- public function getPrompt() {
- return $this->_prompt;
- }
-
- /**
- * Set Prompt
- *
- * @param string $value
- * @return PHPExcel_Cell_DataValidation
- */
- public function setPrompt($value = '') {
- $this->_prompt = $value;
- return $this;
- }
-
- /**
- * Get hash code
- *
- * @return string Hash code
- */
- public function getHashCode() {
- return md5(
- $this->_formula1
- . $this->_formula2
- . $this->_type = PHPExcel_Cell_DataValidation::TYPE_NONE
- . $this->_errorStyle = PHPExcel_Cell_DataValidation::STYLE_STOP
- . $this->_operator
- . ($this->_allowBlank ? 't' : 'f')
- . ($this->_showDropDown ? 't' : 'f')
- . ($this->_showInputMessage ? 't' : 'f')
- . ($this->_showErrorMessage ? 't' : 'f')
- . $this->_errorTitle
- . $this->_error
- . $this->_promptTitle
- . $this->_prompt
- . __CLASS__
- );
- }
-
- /**
- * Implement PHP __clone to create a deep clone, not just a shallow copy.
- */
- public function __clone() {
- $vars = get_object_vars($this);
- foreach ($vars as $key => $value) {
- if (is_object($value)) {
- $this->$key = clone $value;
- } else {
- $this->$key = $value;
- }
- }
- }
-}
diff --git a/admin/survey/excel/PHPExcel/Cell/DefaultValueBinder.php b/admin/survey/excel/PHPExcel/Cell/DefaultValueBinder.php
deleted file mode 100644
index 26750f5..0000000
--- a/admin/survey/excel/PHPExcel/Cell/DefaultValueBinder.php
+++ /dev/null
@@ -1,106 +0,0 @@
-<?php
-/**
- * PHPExcel
- *
- * Copyright (c) 2006 - 2012 PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel_Cell
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-
-/** PHPExcel root directory */
-if (!defined('PHPEXCEL_ROOT')) {
- /**
- * @ignore
- */
- define('PHPEXCEL_ROOT', dirname(__FILE__) . '/../../');
- require(PHPEXCEL_ROOT . 'PHPExcel/Autoloader.php');
-}
-
-
-/**
- * PHPExcel_Cell_DefaultValueBinder
- *
- * @category PHPExcel
- * @package PHPExcel_Cell
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- */
-class PHPExcel_Cell_DefaultValueBinder implements PHPExcel_Cell_IValueBinder
-{
- /**
- * Bind value to a cell
- *
- * @param PHPExcel_Cell $cell Cell to bind value to
- * @param mixed $value Value to bind in cell
- * @return boolean
- */
- public function bindValue(PHPExcel_Cell $cell, $value = null)
- {
- // sanitize UTF-8 strings
- if (is_string($value)) {
- $value = PHPExcel_Shared_String::SanitizeUTF8($value);
- }
-
- // Set value explicit
- $cell->setValueExplicit( $value, self::dataTypeForValue($value) );
-
- // Done!
- return true;
- }
-
- /**
- * DataType for value
- *
- * @param mixed $pValue
- * @return int
- */
- public static function dataTypeForValue($pValue = null) {
- // Match the value against a few data types
- if (is_null($pValue)) {
- return PHPExcel_Cell_DataType::TYPE_NULL;
-
- } elseif ($pValue === '') {
- return PHPExcel_Cell_DataType::TYPE_STRING;
-
- } elseif ($pValue instanceof PHPExcel_RichText) {
- return PHPExcel_Cell_DataType::TYPE_INLINE;
-
- } elseif ($pValue{0} === '=' && strlen($pValue) > 1) {
- return PHPExcel_Cell_DataType::TYPE_FORMULA;
-
- } elseif (is_bool($pValue)) {
- return PHPExcel_Cell_DataType::TYPE_BOOL;
-
- } elseif (is_float($pValue) || is_int($pValue)) {
- return PHPExcel_Cell_DataType::TYPE_NUMERIC;
-
- } elseif (preg_match('/^\-?([0-9]+\\.?[0-9]*|[0-9]*\\.?[0-9]+)$/', $pValue)) {
- return PHPExcel_Cell_DataType::TYPE_NUMERIC;
-
- } elseif (is_string($pValue) && array_key_exists($pValue, PHPExcel_Cell_DataType::getErrorCodes())) {
- return PHPExcel_Cell_DataType::TYPE_ERROR;
-
- } else {
- return PHPExcel_Cell_DataType::TYPE_STRING;
-
- }
- }
-}
diff --git a/admin/survey/excel/PHPExcel/Cell/Hyperlink.php b/admin/survey/excel/PHPExcel/Cell/Hyperlink.php
deleted file mode 100644
index be52d40..0000000
--- a/admin/survey/excel/PHPExcel/Cell/Hyperlink.php
+++ /dev/null
@@ -1,127 +0,0 @@
-<?php
-/**
- * PHPExcel
- *
- * Copyright (c) 2006 - 2012 PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel_Cell
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-
-/**
- * PHPExcel_Cell_Hyperlink
- *
- * @category PHPExcel
- * @package PHPExcel_Cell
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- */
-class PHPExcel_Cell_Hyperlink
-{
- /**
- * URL to link the cell to
- *
- * @var string
- */
- private $_url;
-
- /**
- * Tooltip to display on the hyperlink
- *
- * @var string
- */
- private $_tooltip;
-
- /**
- * Create a new PHPExcel_Cell_Hyperlink
- *
- * @param string $pUrl Url to link the cell to
- * @param string $pTooltip Tooltip to display on the hyperlink
- * @throws Exception
- */
- public function __construct($pUrl = '', $pTooltip = '')
- {
- // Initialise member variables
- $this->_url = $pUrl;
- $this->_tooltip = $pTooltip;
- }
-
- /**
- * Get URL
- *
- * @return string
- */
- public function getUrl() {
- return $this->_url;
- }
-
- /**
- * Set URL
- *
- * @param string $value
- * @return PHPExcel_Cell_Hyperlink
- */
- public function setUrl($value = '') {
- $this->_url = $value;
- return $this;
- }
-
- /**
- * Get tooltip
- *
- * @return string
- */
- public function getTooltip() {
- return $this->_tooltip;
- }
-
- /**
- * Set tooltip
- *
- * @param string $value
- * @return PHPExcel_Cell_Hyperlink
- */
- public function setTooltip($value = '') {
- $this->_tooltip = $value;
- return $this;
- }
-
- /**
- * Is this hyperlink internal? (to another sheet)
- *
- * @return boolean
- */
- public function isInternal() {
- return strpos($this->_url, 'sheet://') !== false;
- }
-
- /**
- * Get hash code
- *
- * @return string Hash code
- */
- public function getHashCode() {
- return md5(
- $this->_url
- . $this->_tooltip
- . __CLASS__
- );
- }
-}
diff --git a/admin/survey/excel/PHPExcel/Cell/IValueBinder.php b/admin/survey/excel/PHPExcel/Cell/IValueBinder.php
deleted file mode 100644
index d869ec9..0000000
--- a/admin/survey/excel/PHPExcel/Cell/IValueBinder.php
+++ /dev/null
@@ -1,46 +0,0 @@
-<?php
-/**
- * PHPExcel
- *
- * Copyright (c) 2006 - 2012 PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel_Cell
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-
-/**
- * PHPExcel_Cell_IValueBinder
- *
- * @category PHPExcel
- * @package PHPExcel_Cell
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- */
-interface PHPExcel_Cell_IValueBinder
-{
- /**
- * Bind value to a cell
- *
- * @param PHPExcel_Cell $cell Cell to bind value to
- * @param mixed $value Value to bind in cell
- * @return boolean
- */
- public function bindValue(PHPExcel_Cell $cell, $value = null);
-}
diff --git a/admin/survey/excel/PHPExcel/Chart.php b/admin/survey/excel/PHPExcel/Chart.php
deleted file mode 100644
index e4b7630..0000000
--- a/admin/survey/excel/PHPExcel/Chart.php
+++ /dev/null
@@ -1,527 +0,0 @@
-<?php
-/**
- * PHPExcel
- *
- * Copyright (c) 2006 - 2012 PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel_Chart
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-
-/**
- * PHPExcel_Chart
- *
- * @category PHPExcel
- * @package PHPExcel_Chart
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- */
-class PHPExcel_Chart
-{
- /**
- * Chart Name
- *
- * @var string
- */
- private $_name = '';
-
- /**
- * Worksheet
- *
- * @var PHPExcel_Worksheet
- */
- private $_worksheet = null;
-
- /**
- * Chart Title
- *
- * @var PHPExcel_Chart_Title
- */
- private $_title = null;
-
- /**
- * Chart Legend
- *
- * @var PHPExcel_Chart_Legend
- */
- private $_legend = null;
-
- /**
- * X-Axis Label
- *
- * @var PHPExcel_Chart_Title
- */
- private $_xAxisLabel = null;
-
- /**
- * Y-Axis Label
- *
- * @var PHPExcel_Chart_Title
- */
- private $_yAxisLabel = null;
-
- /**
- * Chart Plot Area
- *
- * @var PHPExcel_Chart_PlotArea
- */
- private $_plotArea = null;
-
- /**
- * Plot Visible Only
- *
- * @var boolean
- */
- private $_plotVisibleOnly = true;
-
- /**
- * Display Blanks as
- *
- * @var string
- */
- private $_displayBlanksAs = '0';
-
-
- /**
- * Top-Left Cell Position
- *
- * @var string
- */
- private $_topLeftCellRef = 'A1';
-
-
- /**
- * Top-Left X-Offset
- *
- * @var integer
- */
- private $_topLeftXOffset = 0;
-
-
- /**
- * Top-Left Y-Offset
- *
- * @var integer
- */
- private $_topLeftYOffset = 0;
-
-
- /**
- * Bottom-Right Cell Position
- *
- * @var string
- */
- private $_bottomRightCellRef = 'A1';
-
-
- /**
- * Bottom-Right X-Offset
- *
- * @var integer
- */
- private $_bottomRightXOffset = 10;
-
-
- /**
- * Bottom-Right Y-Offset
- *
- * @var integer
- */
- private $_bottomRightYOffset = 10;
-
-
- /**
- * Create a new PHPExcel_Chart
- */
- public function __construct($name, PHPExcel_Chart_Title $title = null, PHPExcel_Chart_Legend $legend = null, PHPExcel_Chart_PlotArea $plotArea = null, $plotVisibleOnly = true, $displayBlanksAs = '0', PHPExcel_Chart_Title $xAxisLabel = null, PHPExcel_Chart_Title $yAxisLabel = null)
- {
- $this->_name = $name;
- $this->_title = $title;
- $this->_legend = $legend;
- $this->_xAxisLabel = $xAxisLabel;
- $this->_yAxisLabel = $yAxisLabel;
- $this->_plotArea = $plotArea;
- $this->_plotVisibleOnly = $plotVisibleOnly;
- $this->_displayBlanksAs = $displayBlanksAs;
- }
-
- /**
- * Get Name
- *
- * @return string
- */
- public function getName() {
- return $this->_name;
- }
-
- /**
- * Get Worksheet
- *
- * @return PHPExcel_Worksheet
- */
- public function getWorksheet() {
- return $this->_worksheet;
- }
-
- /**
- * Set Worksheet
- *
- * @param PHPExcel_Worksheet $pValue
- * @throws Exception
- * @return PHPExcel_Chart
- */
- public function setWorksheet(PHPExcel_Worksheet $pValue = null) {
- $this->_worksheet = $pValue;
-
- return $this;
- }
-
- /**
- * Get Title
- *
- * @return PHPExcel_Chart_Title
- */
- public function getTitle() {
- return $this->_title;
- }
-
- /**
- * Set Title
- *
- * @param PHPExcel_Chart_Title $title
- * @return PHPExcel_Chart
- */
- public function setTitle(PHPExcel_Chart_Title $title) {
- $this->_title = $title;
-
- return $this;
- }
-
- /**
- * Get Legend
- *
- * @return PHPExcel_Chart_Legend
- */
- public function getLegend() {
- return $this->_legend;
- }
-
- /**
- * Set Legend
- *
- * @param PHPExcel_Chart_Legend $legend
- * @return PHPExcel_Chart
- */
- public function setLegend(PHPExcel_Chart_Legend $legend) {
- $this->_legend = $legend;
-
- return $this;
- }
-
- /**
- * Get X-Axis Label
- *
- * @return PHPExcel_Chart_Title
- */
- public function getXAxisLabel() {
- return $this->_xAxisLabel;
- }
-
- /**
- * Set X-Axis Label
- *
- * @param PHPExcel_Chart_Title $label
- * @return PHPExcel_Chart
- */
- public function setXAxisLabel(PHPExcel_Chart_Title $label) {
- $this->_xAxisLabel = $label;
-
- return $this;
- }
-
- /**
- * Get Y-Axis Label
- *
- * @return PHPExcel_Chart_Title
- */
- public function getYAxisLabel() {
- return $this->_yAxisLabel;
- }
-
- /**
- * Set Y-Axis Label
- *
- * @param PHPExcel_Chart_Title $label
- * @return PHPExcel_Chart
- */
- public function setYAxisLabel(PHPExcel_Chart_Title $label) {
- $this->_yAxisLabel = $label;
-
- return $this;
- }
-
- /**
- * Get Plot Area
- *
- * @return PHPExcel_Chart_PlotArea
- */
- public function getPlotArea() {
- return $this->_plotArea;
- }
-
- /**
- * Get Plot Visible Only
- *
- * @return boolean
- */
- public function getPlotVisibleOnly() {
- return $this->_plotVisibleOnly;
- }
-
- /**
- * Set Plot Visible Only
- *
- * @param boolean $plotVisibleOnly
- * @return PHPExcel_Chart
- */
- public function setPlotVisibleOnly($plotVisibleOnly = true) {
- $this->_plotVisibleOnly = $plotVisibleOnly;
-
- return $this;
- }
-
- /**
- * Get Display Blanks as
- *
- * @return string
- */
- public function getDisplayBlanksAs() {
- return $this->_displayBlanksAs;
- }
-
- /**
- * Set Display Blanks as
- *
- * @param string $displayBlanksAs
- * @return PHPExcel_Chart
- */
- public function setDisplayBlanksAs($displayBlanksAs = '0') {
- $this->_displayBlanksAs = $displayBlanksAs;
- }
-
-
- /**
- * Set the Top Left position for the chart
- *
- * @param string $cell
- * @param integer $xOffset
- * @param integer $yOffset
- * @return PHPExcel_Chart
- */
- public function setTopLeftPosition($cell, $xOffset=null, $yOffset=null) {
- $this->_topLeftCellRef = $cell;
- if (!is_null($xOffset))
- $this->setTopLeftXOffset($xOffset);
- if (!is_null($yOffset))
- $this->setTopLeftYOffset($yOffset);
-
- return $this;
- }
-
- /**
- * Get the top left position of the chart
- *
- * @return array an associative array containing the cell address, X-Offset and Y-Offset from the top left of that cell
- */
- public function getTopLeftPosition() {
- return array( 'cell' => $this->_topLeftCellRef,
- 'xOffset' => $this->_topLeftXOffset,
- 'yOffset' => $this->_topLeftYOffset
- );
- }
-
- /**
- * Get the cell address where the top left of the chart is fixed
- *
- * @return string
- */
- public function getTopLeftCell() {
- return $this->_topLeftCellRef;
- }
-
- /**
- * Set the Top Left cell position for the chart
- *
- * @param string $cell
- * @return PHPExcel_Chart
- */
- public function setTopLeftCell($cell) {
- $this->_topLeftCellRef = $cell;
-
- return $this;
- }
-
- public function setTopLeftOffset($xOffset=null,$yOffset=null) {
- if (!is_null($xOffset))
- $this->setTopLeftXOffset($xOffset);
- if (!is_null($yOffset))
- $this->setTopLeftYOffset($yOffset);
-
- return $this;
- }
-
- public function getTopLeftOffset() {
- return array( 'X' => $this->_topLeftXOffset,
- 'Y' => $this->_topLeftYOffset
- );
- }
-
- public function setTopLeftXOffset($xOffset) {
- $this->_topLeftXOffset = $xOffset;
-
- return $this;
- }
-
- public function getTopLeftXOffset() {
- return $this->_topLeftXOffset;
- }
-
- public function setTopLeftYOffset($yOffset) {
- $this->_topLeftYOffset = $yOffset;
-
- return $this;
- }
-
- public function getTopLeftYOffset() {
- return $this->_topLeftYOffset;
- }
-
- /**
- * Set the Bottom Right position of the chart
- *
- * @param string $cell
- * @param integer $xOffset
- * @param integer $yOffset
- * @return PHPExcel_Chart
- */
- public function setBottomRightPosition($cell, $xOffset=null, $yOffset=null) {
- $this->_bottomRightCellRef = $cell;
- if (!is_null($xOffset))
- $this->setBottomRightXOffset($xOffset);
- if (!is_null($yOffset))
- $this->setBottomRightYOffset($yOffset);
-
- return $this;
- }
-
- /**
- * Get the bottom right position of the chart
- *
- * @return array an associative array containing the cell address, X-Offset and Y-Offset from the top left of that cell
- */
- public function getBottomRightPosition() {
- return array( 'cell' => $this->_bottomRightCellRef,
- 'xOffset' => $this->_bottomRightXOffset,
- 'yOffset' => $this->_bottomRightYOffset
- );
- }
-
- public function setBottomRightCell($cell) {
- $this->_bottomRightCellRef = $cell;
-
- return $this;
- }
-
- /**
- * Get the cell address where the bottom right of the chart is fixed
- *
- * @return string
- */
- public function getBottomRightCell() {
- return $this->_bottomRightCellRef;
- }
-
- public function setBottomRightOffset($xOffset=null,$yOffset=null) {
- if (!is_null($xOffset))
- $this->setBottomRightXOffset($xOffset);
- if (!is_null($yOffset))
- $this->setBottomRightYOffset($yOffset);
-
- return $this;
- }
-
- public function getBottomRightOffset() {
- return array( 'X' => $this->_bottomRightXOffset,
- 'Y' => $this->_bottomRightYOffset
- );
- }
-
- public function setBottomRightXOffset($xOffset) {
- $this->_bottomRightXOffset = $xOffset;
-
- return $this;
- }
-
- public function getBottomRightXOffset() {
- return $this->_bottomRightXOffset;
- }
-
- public function setBottomRightYOffset($yOffset) {
- $this->_bottomRightYOffset = $yOffset;
-
- return $this;
- }
-
- public function getBottomRightYOffset() {
- return $this->_bottomRightYOffset;
- }
-
-
- public function refresh() {
- if ($this->_worksheet !== NULL) {
- $this->_plotArea->refresh($this->_worksheet);
- }
- }
-
- public function render($outputDestination = null) {
- $libraryName = PHPExcel_Settings::getChartRendererName();
- if (is_null($libraryName)) {
- return false;
- }
- // Ensure that data series values are up-to-date before we render
- $this->refresh();
-
- $libraryPath = PHPExcel_Settings::getChartRendererPath();
- $includePath = str_replace('\\','/',get_include_path());
- $rendererPath = str_replace('\\','/',$libraryPath);
- if (strpos($rendererPath,$includePath) === false) {
- set_include_path(get_include_path() . PATH_SEPARATOR . $libraryPath);
- }
-
- $rendererName = 'PHPExcel_Chart_Renderer_'.$libraryName;
- $renderer = new $rendererName($this);
-
- if ($outputDestination == 'php://output') {
- $outputDestination = null;
- }
- return $renderer->render($outputDestination);
- }
-
-}
diff --git a/admin/survey/excel/PHPExcel/Chart/DataSeries.php b/admin/survey/excel/PHPExcel/Chart/DataSeries.php
deleted file mode 100644
index 69c7d51..0000000
--- a/admin/survey/excel/PHPExcel/Chart/DataSeries.php
+++ /dev/null
@@ -1,354 +0,0 @@
-<?php
-/**
- * PHPExcel
- *
- * Copyright (c) 2006 - 2012 PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel_Chart
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-
-/**
- * PHPExcel_Chart_DataSeries
- *
- * @category PHPExcel
- * @package PHPExcel_Chart
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- */
-class PHPExcel_Chart_DataSeries
-{
-
- const TYPE_BARCHART = 'barChart';
- const TYPE_BARCHART_3D = 'bar3DChart';
- const TYPE_LINECHART = 'lineChart';
- const TYPE_LINECHART_3D = 'line3DChart';
- const TYPE_AREACHART = 'areaChart';
- const TYPE_AREACHART_3D = 'area3DChart';
- const TYPE_PIECHART = 'pieChart';
- const TYPE_PIECHART_3D = 'pie3DChart';
- const TYPE_DOUGHTNUTCHART = 'doughnutChart';
- const TYPE_DONUTCHART = self::TYPE_DOUGHTNUTCHART; // Synonym
- const TYPE_SCATTERCHART = 'scatterChart';
- const TYPE_SURFACECHART = 'surfaceChart';
- const TYPE_SURFACECHART_3D = 'surface3DChart';
- const TYPE_RADARCHART = 'radarChart';
- const TYPE_BUBBLECHART = 'bubbleChart';
- const TYPE_STOCKCHART = 'stockChart';
-
- const GROUPING_CLUSTERED = 'clustered';
- const GROUPING_STACKED = 'stacked';
- const GROUPING_PERCENT_STACKED = 'percentStacked';
- const GROUPING_STANDARD = 'standard';
-
- const DIRECTION_BAR = 'bar';
- const DIRECTION_HORIZONTAL = self::DIRECTION_BAR;
- const DIRECTION_COL = 'col';
- const DIRECTION_COLUMN = self::DIRECTION_COL;
- const DIRECTION_VERTICAL = self::DIRECTION_COL;
-
- const STYLE_LINEMARKER = 'lineMarker';
- const STYLE_SMOOTHMARKER = 'smoothMarker';
- const STYLE_MARKER = 'marker';
- const STYLE_FILLED = 'filled';
-
-
- /**
- * Series Plot Type
- *
- * @var string
- */
- private $_plotType = null;
-
- /**
- * Plot Grouping Type
- *
- * @var boolean
- */
- private $_plotGrouping = null;
-
- /**
- * Plot Direction
- *
- * @var boolean
- */
- private $_plotDirection = null;
-
- /**
- * Plot Style
- *
- * @var string
- */
- private $_plotStyle = null;
-
- /**
- * Order of plots in Series
- *
- * @var array of integer
- */
- private $_plotOrder = array();
-
- /**
- * Plot Label
- *
- * @var array of PHPExcel_Chart_DataSeriesValues
- */
- private $_plotLabel = array();
-
- /**
- * Plot Category
- *
- * @var array of PHPExcel_Chart_DataSeriesValues
- */
- private $_plotCategory = array();
-
- /**
- * Smooth Line
- *
- * @var string
- */
- private $_smoothLine = null;
-
- /**
- * Plot Values
- *
- * @var array of PHPExcel_Chart_DataSeriesValues
- */
- private $_plotValues = array();
-
- /**
- * Create a new PHPExcel_Chart_DataSeries
- */
- public function __construct($plotType = null, $plotGrouping = null, $plotOrder = array(), $plotLabel = array(), $plotCategory = array(), $plotValues = array(), $smoothLine = null, $plotStyle = null)
- {
- $this->_plotType = $plotType;
- $this->_plotGrouping = $plotGrouping;
- $this->_plotOrder = $plotOrder;
- $keys = array_keys($plotValues);
- $this->_plotValues = $plotValues;
- if ((count($plotLabel) == 0) || (is_null($plotLabel[$keys[0]]))) {
- $plotLabel[$keys[0]] = new PHPExcel_Chart_DataSeriesValues();
- }
-
- $this->_plotLabel = $plotLabel;
- if ((count($plotCategory) == 0) || (is_null($plotCategory[$keys[0]]))) {
- $plotCategory[$keys[0]] = new PHPExcel_Chart_DataSeriesValues();
- }
- $this->_plotCategory = $plotCategory;
- $this->_smoothLine = $smoothLine;
- $this->_plotStyle = $plotStyle;
- }
-
- /**
- * Get Plot Type
- *
- * @return string
- */
- public function getPlotType() {
- return $this->_plotType;
- }
-
- /**
- * Set Plot Type
- *
- * @param string $plotType
- */
- public function setPlotType($plotType = '') {
- $this->_plotType = $plotType;
- }
-
- /**
- * Get Plot Grouping Type
- *
- * @return string
- */
- public function getPlotGrouping() {
- return $this->_plotGrouping;
- }
-
- /**
- * Set Plot Grouping Type
- *
- * @param string $groupingType
- */
- public function setPlotGrouping($groupingType = null) {
- $this->_plotGrouping = $groupingType;
- }
-
- /**
- * Get Plot Direction
- *
- * @return string
- */
- public function getPlotDirection() {
- return $this->_plotDirection;
- }
-
- /**
- * Set Plot Direction
- *
- * @param string $plotDirection
- */
- public function setPlotDirection($plotDirection = null) {
- $this->_plotDirection = $plotDirection;
- }
-
- /**
- * Get Plot Order
- *
- * @return string
- */
- public function getPlotOrder() {
- return $this->_plotOrder;
- }
-
- /**
- * Get Plot Labels
- *
- * @return array of PHPExcel_Chart_DataSeriesValues
- */
- public function getPlotLabels() {
- return $this->_plotLabel;
- }
-
- /**
- * Get Plot Label by Index
- *
- * @return PHPExcel_Chart_DataSeriesValues
- */
- public function getPlotLabelByIndex($index) {
- $keys = array_keys($this->_plotLabel);
- if (in_array($index,$keys)) {
- return $this->_plotLabel[$index];
- } elseif(isset($keys[$index])) {
- return $this->_plotLabel[$keys[$index]];
- }
- return false;
- }
-
- /**
- * Get Plot Categories
- *
- * @return array of PHPExcel_Chart_DataSeriesValues
- */
- public function getPlotCategories() {
- return $this->_plotCategory;
- }
-
- /**
- * Get Plot Category by Index
- *
- * @return PHPExcel_Chart_DataSeriesValues
- */
- public function getPlotCategoryByIndex($index) {
- $keys = array_keys($this->_plotCategory);
- if (in_array($index,$keys)) {
- return $this->_plotCategory[$index];
- } elseif(isset($keys[$index])) {
- return $this->_plotCategory[$keys[$index]];
- }
- return false;
- }
-
- /**
- * Get Plot Style
- *
- * @return string
- */
- public function getPlotStyle() {
- return $this->_plotStyle;
- }
-
- /**
- * Set Plot Style
- *
- * @param string $plotStyle
- */
- public function setPlotStyle($plotStyle = null) {
- $this->_plotStyle = $plotStyle;
- }
-
- /**
- * Get Plot Values
- *
- * @return array of PHPExcel_Chart_DataSeriesValues
- */
- public function getPlotValues() {
- return $this->_plotValues;
- }
-
- /**
- * Get Plot Values by Index
- *
- * @return PHPExcel_Chart_DataSeriesValues
- */
- public function getPlotValuesByIndex($index) {
- $keys = array_keys($this->_plotValues);
- if (in_array($index,$keys)) {
- return $this->_plotValues[$index];
- } elseif(isset($keys[$index])) {
- return $this->_plotValues[$keys[$index]];
- }
- return false;
- }
-
- /**
- * Get Number of Plot Series
- *
- * @return integer
- */
- public function getPlotSeriesCount() {
- return count($this->_plotValues);
- }
-
- /**
- * Get Smooth Line
- *
- * @return boolean
- */
- public function getSmoothLine() {
- return $this->_smoothLine;
- }
-
- /**
- * Set Smooth Line
- *
- * @param boolean $smoothLine
- */
- public function setSmoothLine($smoothLine = TRUE) {
- $this->_smoothLine = $smoothLine;
- }
-
- public function refresh(PHPExcel_Worksheet $worksheet) {
- foreach($this->_plotValues as $plotValues) {
- if ($plotValues !== NULL)
- $plotValues->refresh($worksheet, TRUE);
- }
- foreach($this->_plotLabel as $plotValues) {
- if ($plotValues !== NULL)
- $plotValues->refresh($worksheet, TRUE);
- }
- foreach($this->_plotCategory as $plotValues) {
- if ($plotValues !== NULL)
- $plotValues->refresh($worksheet, FALSE);
- }
- }
-
-}
diff --git a/admin/survey/excel/PHPExcel/Chart/DataSeriesValues.php b/admin/survey/excel/PHPExcel/Chart/DataSeriesValues.php
deleted file mode 100644
index 223aa82..0000000
--- a/admin/survey/excel/PHPExcel/Chart/DataSeriesValues.php
+++ /dev/null
@@ -1,321 +0,0 @@
-<?php
-/**
- * PHPExcel
- *
- * Copyright (c) 2006 - 2012 PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel_Chart
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-
-/**
- * PHPExcel_Chart_DataSeriesValues
- *
- * @category PHPExcel
- * @package PHPExcel_Chart
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- */
-class PHPExcel_Chart_DataSeriesValues
-{
-
- const DATASERIES_TYPE_STRING = 'String';
- const DATASERIES_TYPE_NUMBER = 'Number';
-
- private static $_dataTypeValues = array(
- self::DATASERIES_TYPE_STRING,
- self::DATASERIES_TYPE_NUMBER,
- );
-
- /**
- * Series Data Type
- *
- * @var string
- */
- private $_dataType = null;
-
- /**
- * Series Data Source
- *
- * @var string
- */
- private $_dataSource = null;
-
- /**
- * Format Code
- *
- * @var string
- */
- private $_formatCode = null;
-
- /**
- * Series Point Marker
- *
- * @var string
- */
- private $_marker = null;
-
- /**
- * Point Count (The number of datapoints in the dataseries)
- *
- * @var integer
- */
- private $_pointCount = 0;
-
- /**
- * Data Values
- *
- * @var array of mixed
- */
- private $_dataValues = array();
-
- /**
- * Create a new PHPExcel_Chart_DataSeriesValues object
- */
- public function __construct($dataType = self::DATASERIES_TYPE_NUMBER, $dataSource = null, $formatCode = null, $pointCount = 0, $dataValues = array(), $marker = null)
- {
- $this->setDataType($dataType);
- $this->_dataSource = $dataSource;
- $this->_formatCode = $formatCode;
- $this->_pointCount = $pointCount;
- $this->_dataValues = $dataValues;
- $this->_marker = $marker;
- }
-
- /**
- * Get Series Data Type
- *
- * @return string
- */
- public function getDataType() {
- return $this->_dataType;
- }
-
- /**
- * Set Series Data Type
- *
- * @param string $dataType Datatype of this data series
- * Typical values are:
- * PHPExcel_Chart_DataSeriesValues::DATASERIES_TYPE_STRING
- * Normally used for axis point values
- * PHPExcel_Chart_DataSeriesValues::DATASERIES_TYPE_NUMBER
- * Normally used for chart data values
- * @return PHPExcel_Chart_DataSeriesValues
- */
- public function setDataType($dataType = self::DATASERIES_TYPE_NUMBER) {
- if (!in_array($dataType, self::$_dataTypeValues)) {
- throw new PHPExcel_Chart_Exception('Invalid datatype for chart data series values');
- }
- $this->_dataType = $dataType;
-
- return $this;
- }
-
- /**
- * Get Series Data Source (formula)
- *
- * @return string
- */
- public function getDataSource() {
- return $this->_dataSource;
- }
-
- /**
- * Set Series Data Source (formula)
- *
- * @param string $dataSource
- * @return PHPExcel_Chart_DataSeriesValues
- */
- public function setDataSource($dataSource = null, $refreshDataValues = true) {
- $this->_dataSource = $dataSource;
-
- if ($refreshDataValues) {
- // TO DO
- }
-
- return $this;
- }
-
- /**
- * Get Point Marker
- *
- * @return string
- */
- public function getPointMarker() {
- return $this->_marker;
- }
-
- /**
- * Set Point Marker
- *
- * @param string $marker
- * @return PHPExcel_Chart_DataSeriesValues
- */
- public function setPointMarker($marker = null) {
- $this->_marker = $marker;
-
- return $this;
- }
-
- /**
- * Get Series Format Code
- *
- * @return string
- */
- public function getFormatCode() {
- return $this->_formatCode;
- }
-
- /**
- * Set Series Format Code
- *
- * @param string $formatCode
- * @return PHPExcel_Chart_DataSeriesValues
- */
- public function setFormatCode($formatCode = null) {
- $this->_formatCode = $formatCode;
-
- return $this;
- }
-
- /**
- * Get Series Point Count
- *
- * @return integer
- */
- public function getPointCount() {
- return $this->_pointCount;
- }
-
- /**
- * Identify if the Data Series is a multi-level or a simple series
- *
- * @return boolean
- */
- public function isMultiLevelSeries() {
- if (count($this->_dataValues) > 0) {
- return is_array($this->_dataValues[0]);
- }
- return null;
- }
-
- /**
- * Return the level count of a multi-level Data Series
- *
- * @return boolean
- */
- public function multiLevelCount() {
- $levelCount = 0;
- foreach($this->_dataValues as $dataValueSet) {
- $levelCount = max($levelCount,count($dataValueSet));
- }
- return $levelCount;
- }
-
- /**
- * Get Series Data Values
- *
- * @return array of mixed
- */
- public function getDataValues() {
- return $this->_dataValues;
- }
-
- /**
- * Get the first Series Data value
- *
- * @return mixed
- */
- public function getDataValue() {
- $count = count($this->_dataValues);
- if ($count == 0) {
- return null;
- } elseif ($count == 1) {
- return $this->_dataValues[0];
- }
- return $this->_dataValues;
- }
-
- /**
- * Set Series Data Values
- *
- * @param array $dataValues
- * @param boolean $refreshDataSource
- * TRUE - refresh the value of _dataSource based on the values of $dataValues
- * FALSE - don't change the value of _dataSource
- * @return PHPExcel_Chart_DataSeriesValues
- */
- public function setDataValues($dataValues = array(), $refreshDataSource = TRUE) {
- $this->_dataValues = PHPExcel_Calculation_Functions::flattenArray($dataValues);
- $this->_pointCount = count($dataValues);
-
- if ($refreshDataSource) {
- // TO DO
- }
-
- return $this;
- }
-
- private function _stripNulls($var) {
- return $var !== NULL;
- }
-
- public function refresh(PHPExcel_Worksheet $worksheet, $flatten = TRUE) {
- if ($this->_dataSource !== NULL) {
- $calcEngine = PHPExcel_Calculation::getInstance();
- $newDataValues = PHPExcel_Calculation::_unwrapResult(
- $calcEngine->_calculateFormulaValue(
- '='.$this->_dataSource,
- NULL,
- $worksheet->getCell('A1')
- )
- );
- if ($flatten) {
- $this->_dataValues = PHPExcel_Calculation_Functions::flattenArray($newDataValues);
- } else {
- $cellRange = explode('!',$this->_dataSource);
- if (count($cellRange) > 1) {
- list(,$cellRange) = $cellRange;
- }
-
- $dimensions = PHPExcel_Cell::rangeDimension(str_replace('$','',$cellRange));
- if (($dimensions[0] == 1) || ($dimensions[1] == 1)) {
- $this->_dataValues = PHPExcel_Calculation_Functions::flattenArray($newDataValues);
- } else {
- $newArray = array_values(array_shift($newDataValues));
- foreach($newArray as $i => $newDataSet) {
- $newArray[$i] = array($newDataSet);
- }
-
- foreach($newDataValues as $newDataSet) {
- $i = 0;
- foreach($newDataSet as $newDataVal) {
- array_unshift($newArray[$i++],$newDataVal);
- }
- }
- $this->_dataValues = $newArray;
- }
- }
- $this->_pointCount = count($this->_dataValues);
- }
-
- }
-
-}
diff --git a/admin/survey/excel/PHPExcel/Chart/Exception.php b/admin/survey/excel/PHPExcel/Chart/Exception.php
deleted file mode 100644
index 920033a..0000000
--- a/admin/survey/excel/PHPExcel/Chart/Exception.php
+++ /dev/null
@@ -1,52 +0,0 @@
-<?php
-/**
- * PHPExcel
- *
- * Copyright (c) 2006 - 2012 PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel_Chart
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-
-/**
- * PHPExcel_Chart_Exception
- *
- * @category PHPExcel
- * @package PHPExcel_Chart
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- */
-class PHPExcel_Chart_Exception extends Exception {
- /**
- * Error handler callback
- *
- * @param mixed $code
- * @param mixed $string
- * @param mixed $file
- * @param mixed $line
- * @param mixed $context
- */
- public static function errorHandlerCallback($code, $string, $file, $line, $context) {
- $e = new self($string, $code);
- $e->line = $line;
- $e->file = $file;
- throw $e;
- }
-}
diff --git a/admin/survey/excel/PHPExcel/Chart/Layout.php b/admin/survey/excel/PHPExcel/Chart/Layout.php
deleted file mode 100644
index e0dece4..0000000
--- a/admin/survey/excel/PHPExcel/Chart/Layout.php
+++ /dev/null
@@ -1,417 +0,0 @@
-<?php
-/**
- * PHPExcel
- *
- * Copyright (c) 2006 - 2012 PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel_Chart
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-
-/**
- * PHPExcel_Chart_Layout
- *
- * @category PHPExcel
- * @package PHPExcel_Chart
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- */
-class PHPExcel_Chart_Layout
-{
- /**
- * layoutTarget
- *
- * @var string
- */
- private $_layoutTarget = NULL;
-
- /**
- * X Mode
- *
- * @var string
- */
- private $_xMode = NULL;
-
- /**
- * Y Mode
- *
- * @var string
- */
- private $_yMode = NULL;
-
- /**
- * X-Position
- *
- * @var float
- */
- private $_xPos = NULL;
-
- /**
- * Y-Position
- *
- * @var float
- */
- private $_yPos = NULL;
-
- /**
- * width
- *
- * @var float
- */
- private $_width = NULL;
-
- /**
- * height
- *
- * @var float
- */
- private $_height = NULL;
-
- /**
- * show legend key
- * Specifies that legend keys should be shown in data labels
- *
- * @var boolean
- */
- private $_showLegendKey = NULL;
-
- /**
- * show value
- * Specifies that the value should be shown in a data label.
- *
- * @var boolean
- */
- private $_showVal = NULL;
-
- /**
- * show category name
- * Specifies that the category name should be shown in the data label.
- *
- * @var boolean
- */
- private $_showCatName = NULL;
-
- /**
- * show data series name
- * Specifies that the series name should be shown in the data label.
- *
- * @var boolean
- */
- private $_showSerName = NULL;
-
- /**
- * show percentage
- * Specifies that the percentage should be shown in the data label.
- *
- * @var boolean
- */
- private $_showPercent = NULL;
-
- /**
- * show bubble size
- *
- * @var boolean
- */
- private $_showBubbleSize = NULL;
-
- /**
- * show leader lines
- * Specifies that leader lines should be shown for the data label.
- *
- * @var boolean
- */
- private $_showLeaderLines = NULL;
-
-
- /**
- * Create a new PHPExcel_Chart_Layout
- */
- public function __construct($layout=array())
- {
- if (isset($layout['layoutTarget'])) { $this->_layoutTarget = $layout['layoutTarget']; }
- if (isset($layout['xMode'])) { $this->_xMode = $layout['xMode']; }
- if (isset($layout['yMode'])) { $this->_yMode = $layout['yMode']; }
- if (isset($layout['x'])) { $this->_xPos = (float) $layout['x']; }
- if (isset($layout['y'])) { $this->_yPos = (float) $layout['y']; }
- if (isset($layout['w'])) { $this->_width = (float) $layout['w']; }
- if (isset($layout['h'])) { $this->_height = (float) $layout['h']; }
- }
-
- /**
- * Get Layout Target
- *
- * @return string
- */
- public function getLayoutTarget() {
- return $this->_layoutTarget;
- }
-
- /**
- * Set Layout Target
- *
- * @param Layout Target $value
- */
- public function setLayoutTarget($value) {
- $this->_layoutTarget = $value;
- }
-
- /**
- * Get X-Mode
- *
- * @return string
- */
- public function getXMode() {
- return $this->_xMode;
- }
-
- /**
- * Set X-Mode
- *
- * @param X-Mode $value
- */
- public function setXMode($value) {
- $this->_xMode = $value;
- }
-
- /**
- * Get Y-Mode
- *
- * @return string
- */
- public function getYMode() {
- return $this->_xMode;
- }
-
- /**
- * Set Y-Mode
- *
- * @param Y-Mode $value
- */
- public function setYMode($value) {
- $this->_xMode = $value;
- }
-
- /**
- * Get X-Position
- *
- * @return number
- */
- public function getXPosition() {
- return $this->_xPos;
- }
-
- /**
- * Set X-Position
- *
- * @param X-Position $value
- */
- public function setXPosition($value) {
- $this->_xPos = $value;
- }
-
- /**
- * Get Y-Position
- *
- * @return number
- */
- public function getYPosition() {
- return $this->_yPos;
- }
-
- /**
- * Set Y-Position
- *
- * @param Y-Position $value
- */
- public function setYPosition($value) {
- $this->_yPos = $value;
- }
-
- /**
- * Get Width
- *
- * @return number
- */
- public function getWidth() {
- return $this->_width;
- }
-
- /**
- * Set Width
- *
- * @param Width $value
- */
- public function setWidth($value) {
- $this->_width = $value;
- }
-
- /**
- * Get Height
- *
- * @return number
- */
- public function getHeight() {
- return $this->_height;
- }
-
- /**
- * Set Height
- *
- * @param Height $value
- */
- public function setHeight($value) {
- $this->_height = $value;
- }
-
-
- /**
- * Get show legend key
- *
- * @return boolean
- */
- public function getShowLegendKey() {
- return $this->_showLegendKey;
- }
-
- /**
- * Set show legend key
- * Specifies that legend keys should be shown in data labels.
- *
- * @param boolean $value Show legend key
- */
- public function setShowLegendKey($value) {
- $this->_showLegendKey = $value;
- }
-
- /**
- * Get show value
- *
- * @return boolean
- */
- public function getShowVal() {
- return $this->_showVal;
- }
-
- /**
- * Set show val
- * Specifies that the value should be shown in data labels.
- *
- * @param boolean $value Show val
- */
- public function setShowVal($value) {
- $this->_showVal = $value;
- }
-
- /**
- * Get show category name
- *
- * @return boolean
- */
- public function getShowCatName() {
- return $this->_showCatName;
- }
-
- /**
- * Set show cat name
- * Specifies that the category name should be shown in data labels.
- *
- * @param boolean $value Show cat name
- */
- public function setShowCatName($value) {
- $this->_showCatName = $value;
- }
-
- /**
- * Get show data series name
- *
- * @return boolean
- */
- public function getShowSerName() {
- return $this->_showSerName;
- }
-
- /**
- * Set show ser name
- * Specifies that the series name should be shown in data labels.
- *
- * @param boolean $value Show ser name
- */
- public function setShowSerName($value) {
- $this->_showSerName = $value;
- }
-
- /**
- * Get show percentage
- *
- * @return boolean
- */
- public function getShowPercent() {
- return $this->_showPercent;
- }
-
- /**
- * Set show percentage
- * Specifies that the percentage should be shown in data labels.
- *
- * @param boolean $value Show percentage
- */
- public function setShowPercent($value) {
- $this->_showPercent = $value;
- }
-
- /**
- * Get show bubble size
- *
- * @return boolean
- */
- public function getShowBubbleSize() {
- return $this->_showBubbleSize;
- }
-
- /**
- * Set show bubble size
- * Specifies that the bubble size should be shown in data labels.
- *
- * @param boolean $value Show bubble size
- */
- public function setShowBubbleSize($value) {
- $this->_showBubbleSize = $value;
- }
-
- /**
- * Get show leader lines
- *
- * @return boolean
- */
- public function getShowLeaderLines() {
- return $this->_showLeaderLines;
- }
-
- /**
- * Set show leader lines
- * Specifies that leader lines should be shown in data labels.
- *
- * @param boolean $value Show leader lines
- */
- public function setShowLeaderLines($value) {
- $this->_showLeaderLines = $value;
- }
-
-}
diff --git a/admin/survey/excel/PHPExcel/Chart/Legend.php b/admin/survey/excel/PHPExcel/Chart/Legend.php
deleted file mode 100644
index 676859e..0000000
--- a/admin/survey/excel/PHPExcel/Chart/Legend.php
+++ /dev/null
@@ -1,171 +0,0 @@
-<?php
-/**
- * PHPExcel
- *
- * Copyright (c) 2006 - 2012 PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel_Chart
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-
-/**
- * PHPExcel_Chart_Legend
- *
- * @category PHPExcel
- * @package PHPExcel_Chart
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- */
-class PHPExcel_Chart_Legend
-{
- /** Legend positions */
- const xlLegendPositionBottom = -4107; // Below the chart.
- const xlLegendPositionCorner = 2; // In the upper right-hand corner of the chart border.
- const xlLegendPositionCustom = -4161; // A custom position.
- const xlLegendPositionLeft = -4131; // Left of the chart.
- const xlLegendPositionRight = -4152; // Right of the chart.
- const xlLegendPositionTop = -4160; // Above the chart.
-
- const POSITION_RIGHT = 'r';
- const POSITION_LEFT = 'l';
- const POSITION_BOTTOM = 'b';
- const POSITION_TOP = 't';
- const POSITION_TOPRIGHT = 'tr';
-
- private static $_positionXLref = array( self::xlLegendPositionBottom => self::POSITION_BOTTOM,
- self::xlLegendPositionCorner => self::POSITION_TOPRIGHT,
- self::xlLegendPositionCustom => '??',
- self::xlLegendPositionLeft => self::POSITION_LEFT,
- self::xlLegendPositionRight => self::POSITION_RIGHT,
- self::xlLegendPositionTop => self::POSITION_TOP
- );
-
- /**
- * Legend position
- *
- * @var string
- */
- private $_position = self::POSITION_RIGHT;
-
- /**
- * Allow overlay of other elements?
- *
- * @var boolean
- */
- private $_overlay = TRUE;
-
- /**
- * Legend Layout
- *
- * @var PHPExcel_Chart_Layout
- */
- private $_layout = NULL;
-
-
- /**
- * Create a new PHPExcel_Chart_Legend
- */
- public function __construct($position = self::POSITION_RIGHT, PHPExcel_Chart_Layout $layout = NULL, $overlay = FALSE)
- {
- $this->setPosition($position);
- $this->_layout = $layout;
- $this->setOverlay($overlay);
- }
-
- /**
- * Get legend position as an excel string value
- *
- * @return string
- */
- public function getPosition() {
- return $this->_position;
- }
-
- /**
- * Get legend position using an excel string value
- *
- * @param string $position
- */
- public function setPosition($position = self::POSITION_RIGHT) {
- if (!in_array($position,self::$_positionXLref)) {
- return false;
- }
-
- $this->_position = $position;
- return true;
- }
-
- /**
- * Get legend position as an Excel internal numeric value
- *
- * @return number
- */
- public function getPositionXL() {
- return array_search($this->_position,self::$_positionXLref);
- }
-
- /**
- * Set legend position using an Excel internal numeric value
- *
- * @param number $positionXL
- */
- public function setPositionXL($positionXL = self::xlLegendPositionRight) {
- if (!array_key_exists($positionXL,self::$_positionXLref)) {
- return false;
- }
-
- $this->_position = self::$_positionXLref[$positionXL];
- return true;
- }
-
- /**
- * Get allow overlay of other elements?
- *
- * @return boolean
- */
- public function getOverlay() {
- return $this->_overlay;
- }
-
- /**
- * Set allow overlay of other elements?
- *
- * @param boolean $overlay
- * @return boolean
- */
- public function setOverlay($overlay = FALSE) {
- if (!is_bool($overlay)) {
- return false;
- }
-
- $this->_overlay = $overlay;
- return true;
- }
-
- /**
- * Get Layout
- *
- * @return PHPExcel_Chart_Layout
- */
- public function getLayout() {
- return $this->_layout;
- }
-
-}
diff --git a/admin/survey/excel/PHPExcel/Chart/PlotArea.php b/admin/survey/excel/PHPExcel/Chart/PlotArea.php
deleted file mode 100644
index aefb44e..0000000
--- a/admin/survey/excel/PHPExcel/Chart/PlotArea.php
+++ /dev/null
@@ -1,125 +0,0 @@
-<?php
-/**
- * PHPExcel
- *
- * Copyright (c) 2006 - 2012 PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel_Chart
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-
-/**
- * PHPExcel_Chart_PlotArea
- *
- * @category PHPExcel
- * @package PHPExcel_Chart
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- */
-class PHPExcel_Chart_PlotArea
-{
- /**
- * PlotArea Layout
- *
- * @var PHPExcel_Chart_Layout
- */
- private $_layout = null;
-
- /**
- * Plot Series
- *
- * @var array of PHPExcel_Chart_DataSeries
- */
- private $_plotSeries = array();
-
- /**
- * Create a new PHPExcel_Chart_PlotArea
- */
- public function __construct(PHPExcel_Chart_Layout $layout = null, $plotSeries = array())
- {
- $this->_layout = $layout;
- $this->_plotSeries = $plotSeries;
- }
-
- /**
- * Get Layout
- *
- * @return PHPExcel_Chart_Layout
- */
- public function getLayout() {
- return $this->_layout;
- }
-
- /**
- * Get Number of Plot Groups
- *
- * @return array of PHPExcel_Chart_DataSeries
- */
- public function getPlotGroupCount() {
- return count($this->_plotSeries);
- }
-
- /**
- * Get Number of Plot Series
- *
- * @return integer
- */
- public function getPlotSeriesCount() {
- $seriesCount = 0;
- foreach($this->_plotSeries as $plot) {
- $seriesCount += $plot->getPlotSeriesCount();
- }
- return $seriesCount;
- }
-
- /**
- * Get Plot Series
- *
- * @return array of PHPExcel_Chart_DataSeries
- */
- public function getPlotGroup() {
- return $this->_plotSeries;
- }
-
- /**
- * Get Plot Series by Index
- *
- * @return PHPExcel_Chart_DataSeries
- */
- public function getPlotGroupByIndex($index) {
- return $this->_plotSeries[$index];
- }
-
- /**
- * Set Plot Series
- *
- * @param array of PHPExcel_Chart_DataSeries
- */
- public function setPlotSeries($plotSeries = array()) {
- $this->_plotSeries = $plotSeries;
- }
-
- public function refresh(PHPExcel_Worksheet $worksheet) {
- foreach($this->_plotSeries as $plotSeries) {
- $plotSeries->refresh($worksheet);
- }
- }
-
-}
diff --git a/admin/survey/excel/PHPExcel/Chart/Renderer/PHP Charting Libraries.txt b/admin/survey/excel/PHPExcel/Chart/Renderer/PHP Charting Libraries.txt
deleted file mode 100644
index 20a8258..0000000
--- a/admin/survey/excel/PHPExcel/Chart/Renderer/PHP Charting Libraries.txt
+++ /dev/null
@@ -1,17 +0,0 @@
-ChartDirector
- http://www.advsofteng.com/cdphp.html
-
-GraPHPite
- http://graphpite.sourceforge.net/
-
-JpGraph
- http://www.aditus.nu/jpgraph/
-
-LibChart
- http://naku.dohcrew.com/libchart/pages/introduction/
-
-pChart
- http://pchart.sourceforge.net/
-
-TeeChart
- http://www.steema.com/products/teechart/overview.html
diff --git a/admin/survey/excel/PHPExcel/Chart/Renderer/jpgraph.php b/admin/survey/excel/PHPExcel/Chart/Renderer/jpgraph.php
deleted file mode 100644
index 6fb3aad..0000000
--- a/admin/survey/excel/PHPExcel/Chart/Renderer/jpgraph.php
+++ /dev/null
@@ -1,839 +0,0 @@
-<?php
-
-/**
- * PHPExcel
- *
- * Copyright (c) 2006 - 2012 PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel_Chart
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-
-require_once(PHPExcel_Settings::getChartRendererPath().'/jpgraph.php');
-
-
-/**
- * PHPExcel_Chart_Renderer_jpgraph
- *
- * @category PHPExcel
- * @package PHPExcel_Chart_Renderer
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- */
-class PHPExcel_Chart_Renderer_jpgraph
-{
- private static $_width = 640;
-
- private static $_height = 480;
-
- private static $_colourSet = array( 'mediumpurple1', 'palegreen3', 'gold1', 'cadetblue1',
- 'darkmagenta', 'coral', 'dodgerblue3', 'eggplant',
- 'mediumblue', 'magenta', 'sandybrown', 'cyan',
- 'firebrick1', 'forestgreen', 'deeppink4', 'darkolivegreen',
- 'goldenrod2'
- );
-
- private static $_markSet = array( 'diamond' => MARK_DIAMOND,
- 'square' => MARK_SQUARE,
- 'triangle' => MARK_UTRIANGLE,
- 'x' => MARK_X,
- 'star' => MARK_STAR,
- 'dot' => MARK_FILLEDCIRCLE,
- 'dash' => MARK_DTRIANGLE,
- 'circle' => MARK_CIRCLE,
- 'plus' => MARK_CROSS
- );
-
-
- private $_chart = null;
-
- private $_graph = null;
-
- private static $_plotColour = 0;
-
- private static $_plotMark = 0;
-
-
- private function _formatPointMarker($seriesPlot,$markerID) {
- $plotMarkKeys = array_keys(self::$_markSet);
- if (is_null($markerID)) {
- // Use default plot marker (next marker in the series)
- self::$_plotMark %= count(self::$_markSet);
- $seriesPlot->mark->SetType(self::$_markSet[$plotMarkKeys[self::$_plotMark++]]);
- } elseif ($markerID !== 'none') {
- // Use specified plot marker (if it exists)
- if (isset(self::$_markSet[$markerID])) {
- $seriesPlot->mark->SetType(self::$_markSet[$markerID]);
- } else {
- // If the specified plot marker doesn't exist, use default plot marker (next marker in the series)
- self::$_plotMark %= count(self::$_markSet);
- $seriesPlot->mark->SetType(self::$_markSet[$plotMarkKeys[self::$_plotMark++]]);
- }
- } else {
- // Hide plot marker
- $seriesPlot->mark->Hide();
- }
- $seriesPlot->mark->SetColor(self::$_colourSet[self::$_plotColour]);
- $seriesPlot->mark->SetFillColor(self::$_colourSet[self::$_plotColour]);
- $seriesPlot->SetColor(self::$_colourSet[self::$_plotColour++]);
-
- return $seriesPlot;
- } // function _formatPointMarker()
-
-
- private function _formatDataSetLabels($groupID, $datasetLabels, $labelCount, $rotation = '') {
- $datasetLabelFormatCode = $this->_chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotCategoryByIndex(0)->getFormatCode();
- if (!is_null($datasetLabelFormatCode)) {
- // Retrieve any label formatting code
- $datasetLabelFormatCode = stripslashes($datasetLabelFormatCode);
- }
-
- $testCurrentIndex = 0;
- foreach($datasetLabels as $i => $datasetLabel) {
- array_reverse($datasetLabel);
-
- if (is_array($datasetLabel)) {
- if ($rotation == 'bar') {
- $datasetLabel = array_reverse($datasetLabel);
- $datasetLabels[$i] = implode(" ",$datasetLabel);
- } else {
- $datasetLabels[$i] = implode("\n",$datasetLabel);
- }
- } else {
- // Format labels according to any formatting code
- if (!is_null($datasetLabelFormatCode)) {
- $datasetLabels[$i] = PHPExcel_Style_NumberFormat::toFormattedString($datasetLabel,$datasetLabelFormatCode);
- }
- }
- ++$testCurrentIndex;
- }
-
- return $datasetLabels;
- } // function _formatDataSetLabels()
-
-
- private function _percentageSumCalculation($groupID,$seriesCount) {
- // Adjust our values to a percentage value across all series in the group
- for($i = 0; $i < $seriesCount; ++$i) {
- if ($i == 0) {
- $sumValues = $this->_chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotValuesByIndex($i)->getDataValues();
- } else {
- $nextValues = $this->_chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotValuesByIndex($i)->getDataValues();
- foreach($nextValues as $k => $value) {
- if (isset($sumValues[$k])) {
- $sumValues[$k] += $value;
- } else {
- $sumValues[$k] = $value;
- }
- }
- }
- }
-
- return $sumValues;
- } // function _percentageSumCalculation()
-
-
- private function _percentageAdjustValues($dataValues,$sumValues) {
- foreach($dataValues as $k => $dataValue) {
- $dataValues[$k] = $dataValue / $sumValues[$k] * 100;
- }
-
- return $dataValues;
- } // function _percentageAdjustValues()
-
-
- private function _getCaption($captionElement) {
- // Read any caption
- $caption = (!is_null($captionElement)) ? $captionElement->getCaption() : NULL;
- // Test if we have a title caption to display
- if (!is_null($caption)) {
- // If we do, it could be a plain string or an array
- if (is_array($caption)) {
- // Implode an array to a plain string
- $caption = implode('',$caption);
- }
- }
- return $caption;
- } // function _getCaption()
-
-
- private function _renderTitle() {
- $title = $this->_getCaption($this->_chart->getTitle());
- if (!is_null($title)) {
- $this->_graph->title->Set($title);
- }
- } // function _renderTitle()
-
-
- private function _renderLegend() {
- $legend = $this->_chart->getLegend();
- if (!is_null($legend)) {
- $legendPosition = $legend->getPosition();
- $legendOverlay = $legend->getOverlay();
- switch ($legendPosition) {
- case 'r' :
- $this->_graph->legend->SetPos(0.01,0.5,'right','center'); // right
- $this->_graph->legend->SetColumns(1);
- break;
- case 'l' :
- $this->_graph->legend->SetPos(0.01,0.5,'left','center'); // left
- $this->_graph->legend->SetColumns(1);
- break;
- case 't' :
- $this->_graph->legend->SetPos(0.5,0.01,'center','top'); // top
- break;
- case 'b' :
- $this->_graph->legend->SetPos(0.5,0.99,'center','bottom'); // bottom
- break;
- default :
- $this->_graph->legend->SetPos(0.01,0.01,'right','top'); // top-right
- $this->_graph->legend->SetColumns(1);
- break;
- }
- } else {
- $this->_graph->legend->Hide();
- }
- } // function _renderLegend()
-
-
- private function _renderCartesianPlotArea($type='textlin') {
- $this->_graph = new Graph(self::$_width,self::$_height);
- $this->_graph->SetScale($type);
-
- $this->_renderTitle();
-
- // Rotate for bar rather than column chart
- $rotation = $this->_chart->getPlotArea()->getPlotGroupByIndex(0)->getPlotDirection();
- $reverse = ($rotation == 'bar') ? true : false;
-
- $xAxisLabel = $this->_chart->getXAxisLabel();
- if (!is_null($xAxisLabel)) {
- $title = $this->_getCaption($xAxisLabel);
- if (!is_null($title)) {
- $this->_graph->xaxis->SetTitle($title,'center');
- $this->_graph->xaxis->title->SetMargin(35);
- if ($reverse) {
- $this->_graph->xaxis->title->SetAngle(90);
- $this->_graph->xaxis->title->SetMargin(90);
- }
- }
- }
-
- $yAxisLabel = $this->_chart->getYAxisLabel();
- if (!is_null($yAxisLabel)) {
- $title = $this->_getCaption($yAxisLabel);
- if (!is_null($title)) {
- $this->_graph->yaxis->SetTitle($title,'center');
- if ($reverse) {
- $this->_graph->yaxis->title->SetAngle(0);
- $this->_graph->yaxis->title->SetMargin(-55);
- }
- }
- }
- } // function _renderCartesianPlotArea()
-
-
- private function _renderPiePlotArea($doughnut = False) {
- $this->_graph = new PieGraph(self::$_width,self::$_height);
-
- $this->_renderTitle();
- } // function _renderPiePlotArea()
-
-
- private function _renderRadarPlotArea() {
- $this->_graph = new RadarGraph(self::$_width,self::$_height);
- $this->_graph->SetScale('lin');
-
- $this->_renderTitle();
- } // function _renderRadarPlotArea()
-
-
- private function _renderPlotLine($groupID, $filled = false, $combination = false, $dimensions = '2d') {
- $grouping = $this->_chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotGrouping();
-
- $labelCount = count($this->_chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotValuesByIndex(0)->getPointCount());
- if ($labelCount > 0) {
- $datasetLabels = $this->_chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotCategoryByIndex(0)->getDataValues();
- $datasetLabels = $this->_formatDataSetLabels($groupID, $datasetLabels, $labelCount);
- $this->_graph->xaxis->SetTickLabels($datasetLabels);
- }
-
- $seriesCount = $this->_chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotSeriesCount();
- $seriesPlots = array();
- if ($grouping == 'percentStacked') {
- $sumValues = $this->_percentageSumCalculation($groupID,$seriesCount);
- }
-
- // Loop through each data series in turn
- for($i = 0; $i < $seriesCount; ++$i) {
- $dataValues = $this->_chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotValuesByIndex($i)->getDataValues();
- $marker = $this->_chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotValuesByIndex($i)->getPointMarker();
-
- if ($grouping == 'percentStacked') {
- $dataValues = $this->_percentageAdjustValues($dataValues,$sumValues);
- }
-
- // Fill in any missing values in the $dataValues array
- $testCurrentIndex = 0;
- foreach($dataValues as $k => $dataValue) {
- while($k != $testCurrentIndex) {
- $dataValues[$testCurrentIndex] = null;
- ++$testCurrentIndex;
- }
- ++$testCurrentIndex;
- }
-
- $seriesPlot = new LinePlot($dataValues);
- if ($combination) {
- $seriesPlot->SetBarCenter();
- }
-
- if ($filled) {
- $seriesPlot->SetFilled(true);
- $seriesPlot->SetColor('black');
- $seriesPlot->SetFillColor(self::$_colourSet[self::$_plotColour++]);
- } else {
- // Set the appropriate plot marker
- $this->_formatPointMarker($seriesPlot,$marker);
- }
- $dataLabel = $this->_chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotLabelByIndex($i)->getDataValue();
- $seriesPlot->SetLegend($dataLabel);
-
- $seriesPlots[] = $seriesPlot;
- }
-
- if ($grouping == 'standard') {
- $groupPlot = $seriesPlots;
- } else {
- $groupPlot = new AccLinePlot($seriesPlots);
- }
- $this->_graph->Add($groupPlot);
- } // function _renderPlotLine()
-
-
- private function _renderPlotBar($groupID, $dimensions = '2d') {
- $rotation = $this->_chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotDirection();
- // Rotate for bar rather than column chart
- if (($groupID == 0) && ($rotation == 'bar')) {
- $this->_graph->Set90AndMargin();
- }
- $grouping = $this->_chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotGrouping();
-
- $labelCount = count($this->_chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotValuesByIndex(0)->getPointCount());
- if ($labelCount > 0) {
- $datasetLabels = $this->_chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotCategoryByIndex(0)->getDataValues();
- $datasetLabels = $this->_formatDataSetLabels($groupID, $datasetLabels, $labelCount, $rotation);
- // Rotate for bar rather than column chart
- if ($rotation == 'bar') {
- $datasetLabels = array_reverse($datasetLabels);
- $this->_graph->yaxis->SetPos('max');
- $this->_graph->yaxis->SetLabelAlign('center','top');
- $this->_graph->yaxis->SetLabelSide(SIDE_RIGHT);
- }
- $this->_graph->xaxis->SetTickLabels($datasetLabels);
- }
-
-
- $seriesCount = $this->_chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotSeriesCount();
- $seriesPlots = array();
- if ($grouping == 'percentStacked') {
- $sumValues = $this->_percentageSumCalculation($groupID,$seriesCount);
- }
-
- // Loop through each data series in turn
- for($j = 0; $j < $seriesCount; ++$j) {
- $dataValues = $this->_chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotValuesByIndex($j)->getDataValues();
- if ($grouping == 'percentStacked') {
- $dataValues = $this->_percentageAdjustValues($dataValues,$sumValues);
- }
-
- // Fill in any missing values in the $dataValues array
- $testCurrentIndex = 0;
- foreach($dataValues as $k => $dataValue) {
- while($k != $testCurrentIndex) {
- $dataValues[$testCurrentIndex] = null;
- ++$testCurrentIndex;
- }
- ++$testCurrentIndex;
- }
-
- // Reverse the $dataValues order for bar rather than column chart
- if ($rotation == 'bar') {
- $dataValues = array_reverse($dataValues);
- }
- $seriesPlot = new BarPlot($dataValues);
- $seriesPlot->SetColor('black');
- $seriesPlot->SetFillColor(self::$_colourSet[self::$_plotColour++]);
- if ($dimensions == '3d') {
- $seriesPlot->SetShadow();
- }
- if (!$this->_chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotLabelByIndex($j)) {
- $dataLabel = '';
- } else {
- $dataLabel = $this->_chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotLabelByIndex($j)->getDataValue();
- }
- $seriesPlot->SetLegend($dataLabel);
-
- $seriesPlots[] = $seriesPlot;
- }
- // Reverse the plot order for bar rather than column chart
- if (($rotation == 'bar') && (!($grouping == 'percentStacked'))) {
- $seriesPlots = array_reverse($seriesPlots);
- }
-
- if ($grouping == 'clustered') {
- $groupPlot = new GroupBarPlot($seriesPlots);
- } elseif ($grouping == 'standard') {
- $groupPlot = new GroupBarPlot($seriesPlots);
- } else {
- $groupPlot = new AccBarPlot($seriesPlots);
- if ($dimensions == '3d') {
- $groupPlot->SetShadow();
- }
- }
-
- $this->_graph->Add($groupPlot);
- } // function _renderPlotBar()
-
-
- private function _renderPlotScatter($groupID,$bubble) {
- $grouping = $this->_chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotGrouping();
- $scatterStyle = $bubbleSize = $this->_chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotStyle();
-
- $seriesCount = $this->_chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotSeriesCount();
- $seriesPlots = array();
-
- // Loop through each data series in turn
- for($i = 0; $i < $seriesCount; ++$i) {
- $dataValuesY = $this->_chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotCategoryByIndex($i)->getDataValues();
- $dataValuesX = $this->_chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotValuesByIndex($i)->getDataValues();
-
- foreach($dataValuesY as $k => $dataValueY) {
- $dataValuesY[$k] = $k;
- }
-
- $seriesPlot = new ScatterPlot($dataValuesX,$dataValuesY);
- if ($scatterStyle == 'lineMarker') {
- $seriesPlot->SetLinkPoints();
- $seriesPlot->link->SetColor(self::$_colourSet[self::$_plotColour]);
- } elseif ($scatterStyle == 'smoothMarker') {
- $spline = new Spline($dataValuesY,$dataValuesX);
- list($splineDataY,$splineDataX) = $spline->Get(count($dataValuesX) * self::$_width / 20);
- $lplot = new LinePlot($splineDataX,$splineDataY);
- $lplot->SetColor(self::$_colourSet[self::$_plotColour]);
-
- $this->_graph->Add($lplot);
- }
-
- if ($bubble) {
- $this->_formatPointMarker($seriesPlot,'dot');
- $seriesPlot->mark->SetColor('black');
- $seriesPlot->mark->SetSize($bubbleSize);
- } else {
- $marker = $this->_chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotValuesByIndex($i)->getPointMarker();
- $this->_formatPointMarker($seriesPlot,$marker);
- }
- $dataLabel = $this->_chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotLabelByIndex($i)->getDataValue();
- $seriesPlot->SetLegend($dataLabel);
-
- $this->_graph->Add($seriesPlot);
- }
- } // function _renderPlotScatter()
-
-
- private function _renderPlotRadar($groupID) {
- $radarStyle = $this->_chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotStyle();
-
- $seriesCount = $this->_chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotSeriesCount();
- $seriesPlots = array();
-
- // Loop through each data series in turn
- for($i = 0; $i < $seriesCount; ++$i) {
- $dataValuesY = $this->_chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotCategoryByIndex($i)->getDataValues();
- $dataValuesX = $this->_chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotValuesByIndex($i)->getDataValues();
- $marker = $this->_chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotValuesByIndex($i)->getPointMarker();
-
- $dataValues = array();
- foreach($dataValuesY as $k => $dataValueY) {
- $dataValues[$k] = implode(' ',array_reverse($dataValueY));
- }
- $tmp = array_shift($dataValues);
- $dataValues[] = $tmp;
- $tmp = array_shift($dataValuesX);
- $dataValuesX[] = $tmp;
-
- $this->_graph->SetTitles(array_reverse($dataValues));
-
- $seriesPlot = new RadarPlot(array_reverse($dataValuesX));
-
- $dataLabel = $this->_chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotLabelByIndex($i)->getDataValue();
- $seriesPlot->SetColor(self::$_colourSet[self::$_plotColour++]);
- if ($radarStyle == 'filled') {
- $seriesPlot->SetFillColor(self::$_colourSet[self::$_plotColour]);
- }
- $this->_formatPointMarker($seriesPlot,$marker);
- $seriesPlot->SetLegend($dataLabel);
-
- $this->_graph->Add($seriesPlot);
- }
- } // function _renderPlotRadar()
-
-
- private function _renderPlotContour($groupID) {
- $contourStyle = $this->_chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotStyle();
-
- $seriesCount = $this->_chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotSeriesCount();
- $seriesPlots = array();
-
- $dataValues = array();
- // Loop through each data series in turn
- for($i = 0; $i < $seriesCount; ++$i) {
- $dataValuesY = $this->_chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotCategoryByIndex($i)->getDataValues();
- $dataValuesX = $this->_chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotValuesByIndex($i)->getDataValues();
-
- $dataValues[$i] = $dataValuesX;
- }
- $seriesPlot = new ContourPlot($dataValues);
-
- $this->_graph->Add($seriesPlot);
- } // function _renderPlotContour()
-
-
- private function _renderPlotStock($groupID) {
- $seriesCount = $this->_chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotSeriesCount();
- $plotOrder = $this->_chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotOrder();
- $seriesPlots = array();
-
- $dataValues = array();
- // Loop through each data series in turn
- for($i = 0; $i < $seriesCount; ++$i) {
- $dataValuesY = $this->_chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotCategoryByIndex($i)->getDataValues();
- $dataValuesX = $this->_chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotValuesByIndex($i)->getDataValues();
-
- foreach($dataValuesX as $j => $dataValueX)
- $dataValues[$j][$plotOrder[$i]] = $dataValueX;
- }
-
- $seriesPlot = new StockPlot($dataValues);
-
- $this->_graph->Add($seriesPlot);
- } // function _renderPlotStock()
-
-
- private function _renderAreaChart($groupCount, $dimensions = '2d') {
- require_once('jpgraph_line.php');
-
- $this->_renderCartesianPlotArea();
-
- for($i = 0; $i < $groupCount; ++$i) {
- $this->_renderPlotLine($i,True,False,$dimensions);
- }
- } // function _renderAreaChart()
-
-
- private function _renderLineChart($groupCount, $dimensions = '2d') {
- require_once('jpgraph_line.php');
-
- $this->_renderCartesianPlotArea();
-
- for($i = 0; $i < $groupCount; ++$i) {
- $this->_renderPlotLine($i,False,False,$dimensions);
- }
- } // function _renderLineChart()
-
-
- private function _renderBarChart($groupCount, $dimensions = '2d') {
- require_once('jpgraph_bar.php');
-
- $this->_renderCartesianPlotArea();
-
- for($i = 0; $i < $groupCount; ++$i) {
- $this->_renderPlotBar($i,$dimensions);
- }
- } // function _renderBarChart()
-
-
- private function _renderScatterChart($groupCount) {
- require_once('jpgraph_scatter.php');
- require_once('jpgraph_regstat.php');
- require_once('jpgraph_line.php');
-
- $this->_renderCartesianPlotArea('linlin');
-
- for($i = 0; $i < $groupCount; ++$i) {
- $this->_renderPlotScatter($i,false);
- }
- } // function _renderScatterChart()
-
-
- private function _renderBubbleChart($groupCount) {
- require_once('jpgraph_scatter.php');
-
- $this->_renderCartesianPlotArea('linlin');
-
- for($i = 0; $i < $groupCount; ++$i) {
- $this->_renderPlotScatter($i,true);
- }
- } // function _renderBubbleChart()
-
-
- private function _renderPieChart($groupCount, $dimensions = '2d', $doughnut = False, $multiplePlots = False) {
- require_once('jpgraph_pie.php');
- if ($dimensions == '3d') {
- require_once('jpgraph_pie3d.php');
- }
-
- $this->_renderPiePlotArea($doughnut);
-
- $iLimit = ($multiplePlots) ? $groupCount : 1;
- for($groupID = 0; $groupID < $iLimit; ++$groupID) {
- $grouping = $this->_chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotGrouping();
- $exploded = $this->_chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotStyle();
- if ($groupID == 0) {
- $labelCount = count($this->_chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotValuesByIndex(0)->getPointCount());
- if ($labelCount > 0) {
- $datasetLabels = $this->_chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotCategoryByIndex(0)->getDataValues();
- $datasetLabels = $this->_formatDataSetLabels($groupID, $datasetLabels, $labelCount);
- }
- }
-
- $seriesCount = $this->_chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotSeriesCount();
- $seriesPlots = array();
- // For pie charts, we only display the first series: doughnut charts generally display all series
- $jLimit = ($multiplePlots) ? $seriesCount : 1;
- // Loop through each data series in turn
- for($j = 0; $j < $jLimit; ++$j) {
- $dataValues = $this->_chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotValuesByIndex($j)->getDataValues();
-
- // Fill in any missing values in the $dataValues array
- $testCurrentIndex = 0;
- foreach($dataValues as $k => $dataValue) {
- while($k != $testCurrentIndex) {
- $dataValues[$testCurrentIndex] = null;
- ++$testCurrentIndex;
- }
- ++$testCurrentIndex;
- }
-
- if ($dimensions == '3d') {
- $seriesPlot = new PiePlot3D($dataValues);
- } else {
- if ($doughnut) {
- $seriesPlot = new PiePlotC($dataValues);
- } else {
- $seriesPlot = new PiePlot($dataValues);
- }
- }
-
- if ($multiplePlots) {
- $seriesPlot->SetSize(($jLimit-$j) / ($jLimit * 4));
- }
-
- if ($doughnut) {
- $seriesPlot->SetMidColor('white');
- }
-
- $seriesPlot->SetColor(self::$_colourSet[self::$_plotColour++]);
- if (count($datasetLabels) > 0)
- $seriesPlot->SetLabels(array_fill(0,count($datasetLabels),''));
- if ($dimensions != '3d') {
- $seriesPlot->SetGuideLines(false);
- }
- if ($j == 0) {
- if ($exploded) {
- $seriesPlot->ExplodeAll();
- }
- $seriesPlot->SetLegends($datasetLabels);
- }
-
- $this->_graph->Add($seriesPlot);
- }
- }
- } // function _renderPieChart()
-
-
- private function _renderRadarChart($groupCount) {
- require_once('jpgraph_radar.php');
-
- $this->_renderRadarPlotArea();
-
- for($groupID = 0; $groupID < $groupCount; ++$groupID) {
- $this->_renderPlotRadar($groupID);
- }
- } // function _renderRadarChart()
-
-
- private function _renderStockChart($groupCount) {
- require_once('jpgraph_stock.php');
-
- $this->_renderCartesianPlotArea();
-
- for($groupID = 0; $groupID < $groupCount; ++$i) {
- $this->_renderPlotStock($groupID);
- }
- } // function _renderStockChart()
-
-
- private function _renderContourChart($groupCount,$dimensions) {
- require_once('jpgraph_contour.php');
-
- $this->_renderCartesianPlotArea('intint');
-
- for($i = 0; $i < $groupCount; ++$i) {
- $this->_renderPlotContour($i);
- }
- } // function _renderContourChart()
-
-
- private function _renderCombinationChart($groupCount,$dimensions,$outputDestination) {
- require_once('jpgraph_line.php');
- require_once('jpgraph_bar.php');
- require_once('jpgraph_scatter.php');
- require_once('jpgraph_regstat.php');
- require_once('jpgraph_line.php');
-
- $this->_renderCartesianPlotArea();
-
- for($i = 0; $i < $groupCount; ++$i) {
- $dimensions = null;
- $chartType = $this->_chart->getPlotArea()->getPlotGroupByIndex($i)->getPlotType();
- switch ($chartType) {
- case 'area3DChart' :
- $dimensions = '3d';
- case 'areaChart' :
- $this->_renderPlotLine($i,True,True,$dimensions);
- break;
- case 'bar3DChart' :
- $dimensions = '3d';
- case 'barChart' :
- $this->_renderPlotBar($i,$dimensions);
- break;
- case 'line3DChart' :
- $dimensions = '3d';
- case 'lineChart' :
- $this->_renderPlotLine($i,False,True,$dimensions);
- break;
- case 'scatterChart' :
- $this->_renderPlotScatter($i,false);
- break;
- case 'bubbleChart' :
- $this->_renderPlotScatter($i,true);
- break;
- default :
- $this->_graph = null;
- return false;
- }
- }
-
- $this->_renderLegend();
-
- $this->_graph->Stroke($outputDestination);
- return true;
- } // function _renderCombinationChart()
-
-
- public function render($outputDestination) {
- self::$_plotColour = 0;
-
- $groupCount = $this->_chart->getPlotArea()->getPlotGroupCount();
-
- $dimensions = null;
- if ($groupCount == 1) {
- $chartType = $this->_chart->getPlotArea()->getPlotGroupByIndex(0)->getPlotType();
- } else {
- $chartTypes = array();
- for($i = 0; $i < $groupCount; ++$i) {
- $chartTypes[] = $this->_chart->getPlotArea()->getPlotGroupByIndex($i)->getPlotType();
- }
- $chartTypes = array_unique($chartTypes);
- if (count($chartTypes) == 1) {
- $chartType = array_pop($chartTypes);
- } elseif (count($chartTypes) == 0) {
- echo 'Chart is not yet implemented<br />';
- return false;
- } else {
- return $this->_renderCombinationChart($groupCount,$dimensions,$outputDestination);
- }
- }
-
- switch ($chartType) {
- case 'area3DChart' :
- $dimensions = '3d';
- case 'areaChart' :
- $this->_renderAreaChart($groupCount,$dimensions);
- break;
- case 'bar3DChart' :
- $dimensions = '3d';
- case 'barChart' :
- $this->_renderBarChart($groupCount,$dimensions);
- break;
- case 'line3DChart' :
- $dimensions = '3d';
- case 'lineChart' :
- $this->_renderLineChart($groupCount,$dimensions);
- break;
- case 'pie3DChart' :
- $dimensions = '3d';
- case 'pieChart' :
- $this->_renderPieChart($groupCount,$dimensions,False,False);
- break;
- case 'doughnut3DChart' :
- $dimensions = '3d';
- case 'doughnutChart' :
- $this->_renderPieChart($groupCount,$dimensions,True,True);
- break;
- case 'scatterChart' :
- $this->_renderScatterChart($groupCount);
- break;
- case 'bubbleChart' :
- $this->_renderBubbleChart($groupCount);
- break;
- case 'radarChart' :
- $this->_renderRadarChart($groupCount);
- break;
- case 'surface3DChart' :
- $dimensions = '3d';
- case 'surfaceChart' :
- $this->_renderContourChart($groupCount,$dimensions);
- break;
- case 'stockChart' :
- $this->_renderStockChart($groupCount,$dimensions);
- break;
- default :
- echo $chartType.' is not yet implemented<br />';
- return false;
- }
- $this->_renderLegend();
-
- $this->_graph->Stroke($outputDestination);
- return true;
- } // function render()
-
-
- /**
- * Create a new PHPExcel_Chart_Renderer_jpgraph
- */
- public function __construct(PHPExcel_Chart $chart)
- {
- $this->_graph = null;
- $this->_chart = $chart;
- } // function __construct()
-
-} // PHPExcel_Chart_Renderer_jpgraph
diff --git a/admin/survey/excel/PHPExcel/Chart/Title.php b/admin/survey/excel/PHPExcel/Chart/Title.php
deleted file mode 100644
index 0fe23ee..0000000
--- a/admin/survey/excel/PHPExcel/Chart/Title.php
+++ /dev/null
@@ -1,89 +0,0 @@
-<?php
-/**
- * PHPExcel
- *
- * Copyright (c) 2006 - 2012 PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel_Chart
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-
-/**
- * PHPExcel_Chart_Title
- *
- * @category PHPExcel
- * @package PHPExcel_Chart
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- */
-class PHPExcel_Chart_Title
-{
-
- /**
- * Title Caption
- *
- * @var string
- */
- private $_caption = null;
-
- /**
- * Title Layout
- *
- * @var PHPExcel_Chart_Layout
- */
- private $_layout = null;
-
- /**
- * Create a new PHPExcel_Chart_Title
- */
- public function __construct($caption = null, PHPExcel_Chart_Layout $layout = null)
- {
- $this->_caption = $caption;
- $this->_layout = $layout;
- }
-
- /**
- * Get caption
- *
- * @return string
- */
- public function getCaption() {
- return $this->_caption;
- }
-
- /**
- * Set caption
- *
- * @param string $caption
- */
- public function setCaption($caption = null) {
- $this->_caption = $caption;
- }
-
- /**
- * Get Layout
- *
- * @return PHPExcel_Chart_Layout
- */
- public function getLayout() {
- return $this->_layout;
- }
-
-}
diff --git a/admin/survey/excel/PHPExcel/Comment.php b/admin/survey/excel/PHPExcel/Comment.php
deleted file mode 100644
index 665d4fd..0000000
--- a/admin/survey/excel/PHPExcel/Comment.php
+++ /dev/null
@@ -1,317 +0,0 @@
-<?php
-/**
- * PHPExcel
- *
- * Copyright (c) 2006 - 2012 PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-
-/**
- * PHPExcel_Comment
- *
- * @category PHPExcel
- * @package PHPExcel
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- */
-class PHPExcel_Comment implements PHPExcel_IComparable
-{
- /**
- * Author
- *
- * @var string
- */
- private $_author;
-
- /**
- * Rich text comment
- *
- * @var PHPExcel_RichText
- */
- private $_text;
-
- /**
- * Comment width (CSS style, i.e. XXpx or YYpt)
- *
- * @var string
- */
- private $_width = '96pt';
-
- /**
- * Left margin (CSS style, i.e. XXpx or YYpt)
- *
- * @var string
- */
- private $_marginLeft = '59.25pt';
-
- /**
- * Top margin (CSS style, i.e. XXpx or YYpt)
- *
- * @var string
- */
- private $_marginTop = '1.5pt';
-
- /**
- * Visible
- *
- * @var boolean
- */
- private $_visible = false;
-
- /**
- * Comment height (CSS style, i.e. XXpx or YYpt)
- *
- * @var string
- */
- private $_height = '55.5pt';
-
- /**
- * Comment fill color
- *
- * @var PHPExcel_Style_Color
- */
- private $_fillColor;
-
- /**
- * Alignment
- *
- * @var string
- */
- private $_alignment;
-
- /**
- * Create a new PHPExcel_Comment
- *
- * @throws Exception
- */
- public function __construct()
- {
- // Initialise variables
- $this->_author = 'Author';
- $this->_text = new PHPExcel_RichText();
- $this->_fillColor = new PHPExcel_Style_Color('FFFFFFE1');
- $this->_alignment = PHPExcel_Style_Alignment::HORIZONTAL_GENERAL;
- }
-
- /**
- * Get Author
- *
- * @return string
- */
- public function getAuthor() {
- return $this->_author;
- }
-
- /**
- * Set Author
- *
- * @param string $pValue
- * @return PHPExcel_Comment
- */
- public function setAuthor($pValue = '') {
- $this->_author = $pValue;
- return $this;
- }
-
- /**
- * Get Rich text comment
- *
- * @return PHPExcel_RichText
- */
- public function getText() {
- return $this->_text;
- }
-
- /**
- * Set Rich text comment
- *
- * @param PHPExcel_RichText $pValue
- * @return PHPExcel_Comment
- */
- public function setText(PHPExcel_RichText $pValue) {
- $this->_text = $pValue;
- return $this;
- }
-
- /**
- * Get comment width (CSS style, i.e. XXpx or YYpt)
- *
- * @return string
- */
- public function getWidth() {
- return $this->_width;
- }
-
- /**
- * Set comment width (CSS style, i.e. XXpx or YYpt)
- *
- * @param string $value
- * @return PHPExcel_Comment
- */
- public function setWidth($value = '96pt') {
- $this->_width = $value;
- return $this;
- }
-
- /**
- * Get comment height (CSS style, i.e. XXpx or YYpt)
- *
- * @return string
- */
- public function getHeight() {
- return $this->_height;
- }
-
- /**
- * Set comment height (CSS style, i.e. XXpx or YYpt)
- *
- * @param string $value
- * @return PHPExcel_Comment
- */
- public function setHeight($value = '55.5pt') {
- $this->_height = $value;
- return $this;
- }
-
- /**
- * Get left margin (CSS style, i.e. XXpx or YYpt)
- *
- * @return string
- */
- public function getMarginLeft() {
- return $this->_marginLeft;
- }
-
- /**
- * Set left margin (CSS style, i.e. XXpx or YYpt)
- *
- * @param string $value
- * @return PHPExcel_Comment
- */
- public function setMarginLeft($value = '59.25pt') {
- $this->_marginLeft = $value;
- return $this;
- }
-
- /**
- * Get top margin (CSS style, i.e. XXpx or YYpt)
- *
- * @return string
- */
- public function getMarginTop() {
- return $this->_marginTop;
- }
-
- /**
- * Set top margin (CSS style, i.e. XXpx or YYpt)
- *
- * @param string $value
- * @return PHPExcel_Comment
- */
- public function setMarginTop($value = '1.5pt') {
- $this->_marginTop = $value;
- return $this;
- }
-
- /**
- * Is the comment visible by default?
- *
- * @return boolean
- */
- public function getVisible() {
- return $this->_visible;
- }
-
- /**
- * Set comment default visibility
- *
- * @param boolean $value
- * @return PHPExcel_Comment
- */
- public function setVisible($value = false) {
- $this->_visible = $value;
- return $this;
- }
-
- /**
- * Get fill color
- *
- * @return PHPExcel_Style_Color
- */
- public function getFillColor() {
- return $this->_fillColor;
- }
-
- /**
- * Set Alignment
- *
- * @param string $pValue
- * @return PHPExcel_Comment
- */
- public function setAlignment($pValue = PHPExcel_Style_Alignment::HORIZONTAL_GENERAL) {
- $this->_alignment = $pValue;
- return $this;
- }
-
- /**
- * Get Alignment
- *
- * @return string
- */
- public function getAlignment() {
- return $this->_alignment;
- }
-
- /**
- * Get hash code
- *
- * @return string Hash code
- */
- public function getHashCode() {
- return md5(
- $this->_author
- . $this->_text->getHashCode()
- . $this->_width
- . $this->_height
- . $this->_marginLeft
- . $this->_marginTop
- . ($this->_visible ? 1 : 0)
- . $this->_fillColor->getHashCode()
- . $this->_alignment
- . __CLASS__
- );
- }
-
- /**
- * Implement PHP __clone to create a deep clone, not just a shallow copy.
- */
- public function __clone() {
- $vars = get_object_vars($this);
- foreach ($vars as $key => $value) {
- if (is_object($value)) {
- $this->$key = clone $value;
- } else {
- $this->$key = $value;
- }
- }
- }
-}
diff --git a/admin/survey/excel/PHPExcel/DocumentProperties.php b/admin/survey/excel/PHPExcel/DocumentProperties.php
deleted file mode 100644
index e04edcc..0000000
--- a/admin/survey/excel/PHPExcel/DocumentProperties.php
+++ /dev/null
@@ -1,588 +0,0 @@
-<?php
-/**
- * PHPExcel
- *
- * Copyright (c) 2006 - 2012 PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-
-/**
- * PHPExcel_DocumentProperties
- *
- * @category PHPExcel
- * @package PHPExcel
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- */
-class PHPExcel_DocumentProperties
-{
- /** constants */
- const PROPERTY_TYPE_BOOLEAN = 'b';
- const PROPERTY_TYPE_INTEGER = 'i';
- const PROPERTY_TYPE_FLOAT = 'f';
- const PROPERTY_TYPE_DATE = 'd';
- const PROPERTY_TYPE_STRING = 's';
- const PROPERTY_TYPE_UNKNOWN = 'u';
-
-
- /**
- * Creator
- *
- * @var string
- */
- private $_creator = 'Unknown Creator';
-
- /**
- * LastModifiedBy
- *
- * @var string
- */
- private $_lastModifiedBy;
-
- /**
- * Created
- *
- * @var datetime
- */
- private $_created;
-
- /**
- * Modified
- *
- * @var datetime
- */
- private $_modified;
-
- /**
- * Title
- *
- * @var string
- */
- private $_title = 'Untitled Spreadsheet';
-
- /**
- * Description
- *
- * @var string
- */
- private $_description = '';
-
- /**
- * Subject
- *
- * @var string
- */
- private $_subject = '';
-
- /**
- * Keywords
- *
- * @var string
- */
- private $_keywords = '';
-
- /**
- * Category
- *
- * @var string
- */
- private $_category = '';
-
- /**
- * Manager
- *
- * @var string
- */
- private $_manager = '';
-
- /**
- * Company
- *
- * @var string
- */
- private $_company = 'Microsoft Corporation';
-
- /**
- * Custom Properties
- *
- * @var string
- */
- private $_customProperties = array();
-
-
- /**
- * Create a new PHPExcel_DocumentProperties
- */
- public function __construct()
- {
- // Initialise values
- $this->_lastModifiedBy = $this->_creator;
- $this->_created = time();
- $this->_modified = time();
- }
-
- /**
- * Get Creator
- *
- * @return string
- */
- public function getCreator() {
- return $this->_creator;
- }
-
- /**
- * Set Creator
- *
- * @param string $pValue
- * @return PHPExcel_DocumentProperties
- */
- public function setCreator($pValue = '') {
- $this->_creator = $pValue;
- return $this;
- }
-
- /**
- * Get Last Modified By
- *
- * @return string
- */
- public function getLastModifiedBy() {
- return $this->_lastModifiedBy;
- }
-
- /**
- * Set Last Modified By
- *
- * @param string $pValue
- * @return PHPExcel_DocumentProperties
- */
- public function setLastModifiedBy($pValue = '') {
- $this->_lastModifiedBy = $pValue;
- return $this;
- }
-
- /**
- * Get Created
- *
- * @return datetime
- */
- public function getCreated() {
- return $this->_created;
- }
-
- /**
- * Set Created
- *
- * @param datetime $pValue
- * @return PHPExcel_DocumentProperties
- */
- public function setCreated($pValue = null) {
- if ($pValue === NULL) {
- $pValue = time();
- } elseif (is_string($pValue)) {
- if (is_numeric($pValue)) {
- $pValue = intval($pValue);
- } else {
- $pValue = strtotime($pValue);
- }
- }
-
- $this->_created = $pValue;
- return $this;
- }
-
- /**
- * Get Modified
- *
- * @return datetime
- */
- public function getModified() {
- return $this->_modified;
- }
-
- /**
- * Set Modified
- *
- * @param datetime $pValue
- * @return PHPExcel_DocumentProperties
- */
- public function setModified($pValue = null) {
- if ($pValue === NULL) {
- $pValue = time();
- } elseif (is_string($pValue)) {
- if (is_numeric($pValue)) {
- $pValue = intval($pValue);
- } else {
- $pValue = strtotime($pValue);
- }
- }
-
- $this->_modified = $pValue;
- return $this;
- }
-
- /**
- * Get Title
- *
- * @return string
- */
- public function getTitle() {
- return $this->_title;
- }
-
- /**
- * Set Title
- *
- * @param string $pValue
- * @return PHPExcel_DocumentProperties
- */
- public function setTitle($pValue = '') {
- $this->_title = $pValue;
- return $this;
- }
-
- /**
- * Get Description
- *
- * @return string
- */
- public function getDescription() {
- return $this->_description;
- }
-
- /**
- * Set Description
- *
- * @param string $pValue
- * @return PHPExcel_DocumentProperties
- */
- public function setDescription($pValue = '') {
- $this->_description = $pValue;
- return $this;
- }
-
- /**
- * Get Subject
- *
- * @return string
- */
- public function getSubject() {
- return $this->_subject;
- }
-
- /**
- * Set Subject
- *
- * @param string $pValue
- * @return PHPExcel_DocumentProperties
- */
- public function setSubject($pValue = '') {
- $this->_subject = $pValue;
- return $this;
- }
-
- /**
- * Get Keywords
- *
- * @return string
- */
- public function getKeywords() {
- return $this->_keywords;
- }
-
- /**
- * Set Keywords
- *
- * @param string $pValue
- * @return PHPExcel_DocumentProperties
- */
- public function setKeywords($pValue = '') {
- $this->_keywords = $pValue;
- return $this;
- }
-
- /**
- * Get Category
- *
- * @return string
- */
- public function getCategory() {
- return $this->_category;
- }
-
- /**
- * Set Category
- *
- * @param string $pValue
- * @return PHPExcel_DocumentProperties
- */
- public function setCategory($pValue = '') {
- $this->_category = $pValue;
- return $this;
- }
-
- /**
- * Get Company
- *
- * @return string
- */
- public function getCompany() {
- return $this->_company;
- }
-
- /**
- * Set Company
- *
- * @param string $pValue
- * @return PHPExcel_DocumentProperties
- */
- public function setCompany($pValue = '') {
- $this->_company = $pValue;
- return $this;
- }
-
- /**
- * Get Manager
- *
- * @return string
- */
- public function getManager() {
- return $this->_manager;
- }
-
- /**
- * Set Manager
- *
- * @param string $pValue
- * @return PHPExcel_DocumentProperties
- */
- public function setManager($pValue = '') {
- $this->_manager = $pValue;
- return $this;
- }
-
- /**
- * Get a List of Custom Property Names
- *
- * @return array of string
- */
- public function getCustomProperties() {
- return array_keys($this->_customProperties);
- }
-
- /**
- * Check if a Custom Property is defined
- *
- * @param string $propertyName
- * @return boolean
- */
- public function isCustomPropertySet($propertyName) {
- return isset($this->_customProperties[$propertyName]);
- }
-
- /**
- * Get a Custom Property Value
- *
- * @param string $propertyName
- * @return string
- */
- public function getCustomPropertyValue($propertyName) {
- if (isset($this->_customProperties[$propertyName])) {
- return $this->_customProperties[$propertyName]['value'];
- }
-
- }
-
- /**
- * Get a Custom Property Type
- *
- * @param string $propertyName
- * @return string
- */
- public function getCustomPropertyType($propertyName) {
- if (isset($this->_customProperties[$propertyName])) {
- return $this->_customProperties[$propertyName]['type'];
- }
-
- }
-
- /**
- * Set a Custom Property
- *
- * @param string $propertyName
- * @param mixed $propertyValue
- * @param string $propertyType
- * 'i' : Integer
- * 'f' : Floating Point
- * 's' : String
- * 'd' : Date/Time
- * 'b' : Boolean
- * @return PHPExcel_DocumentProperties
- */
- public function setCustomProperty($propertyName,$propertyValue='',$propertyType=NULL) {
- if (($propertyType === NULL) || (!in_array($propertyType,array(self::PROPERTY_TYPE_INTEGER,
- self::PROPERTY_TYPE_FLOAT,
- self::PROPERTY_TYPE_STRING,
- self::PROPERTY_TYPE_DATE,
- self::PROPERTY_TYPE_BOOLEAN)))) {
- if ($propertyValue === NULL) {
- $propertyType = self::PROPERTY_TYPE_STRING;
- } elseif (is_float($propertyValue)) {
- $propertyType = self::PROPERTY_TYPE_FLOAT;
- } elseif(is_int($propertyValue)) {
- $propertyType = self::PROPERTY_TYPE_INTEGER;
- } elseif (is_bool($propertyValue)) {
- $propertyType = self::PROPERTY_TYPE_BOOLEAN;
- } else {
- $propertyType = self::PROPERTY_TYPE_STRING;
- }
- }
-
- $this->_customProperties[$propertyName] = array('value' => $propertyValue, 'type' => $propertyType);
- return $this;
- }
-
- /**
- * Implement PHP __clone to create a deep clone, not just a shallow copy.
- */
- public function __clone() {
- $vars = get_object_vars($this);
- foreach ($vars as $key => $value) {
- if (is_object($value)) {
- $this->$key = clone $value;
- } else {
- $this->$key = $value;
- }
- }
- }
-
- public static function convertProperty($propertyValue,$propertyType) {
- switch ($propertyType) {
- case 'empty' : // Empty
- return '';
- break;
- case 'null' : // Null
- return NULL;
- break;
- case 'i1' : // 1-Byte Signed Integer
- case 'i2' : // 2-Byte Signed Integer
- case 'i4' : // 4-Byte Signed Integer
- case 'i8' : // 8-Byte Signed Integer
- case 'int' : // Integer
- return (int) $propertyValue;
- break;
- case 'ui1' : // 1-Byte Unsigned Integer
- case 'ui2' : // 2-Byte Unsigned Integer
- case 'ui4' : // 4-Byte Unsigned Integer
- case 'ui8' : // 8-Byte Unsigned Integer
- case 'uint' : // Unsigned Integer
- return abs((int) $propertyValue);
- break;
- case 'r4' : // 4-Byte Real Number
- case 'r8' : // 8-Byte Real Number
- case 'decimal' : // Decimal
- return (float) $propertyValue;
- break;
- case 'lpstr' : // LPSTR
- case 'lpwstr' : // LPWSTR
- case 'bstr' : // Basic String
- return $propertyValue;
- break;
- case 'date' : // Date and Time
- case 'filetime' : // File Time
- return strtotime($propertyValue);
- break;
- case 'bool' : // Boolean
- return ($propertyValue == 'true') ? True : False;
- break;
- case 'cy' : // Currency
- case 'error' : // Error Status Code
- case 'vector' : // Vector
- case 'array' : // Array
- case 'blob' : // Binary Blob
- case 'oblob' : // Binary Blob Object
- case 'stream' : // Binary Stream
- case 'ostream' : // Binary Stream Object
- case 'storage' : // Binary Storage
- case 'ostorage' : // Binary Storage Object
- case 'vstream' : // Binary Versioned Stream
- case 'clsid' : // Class ID
- case 'cf' : // Clipboard Data
- return $propertyValue;
- break;
- }
- return $propertyValue;
- }
-
- public static function convertPropertyType($propertyType) {
- switch ($propertyType) {
- case 'i1' : // 1-Byte Signed Integer
- case 'i2' : // 2-Byte Signed Integer
- case 'i4' : // 4-Byte Signed Integer
- case 'i8' : // 8-Byte Signed Integer
- case 'int' : // Integer
- case 'ui1' : // 1-Byte Unsigned Integer
- case 'ui2' : // 2-Byte Unsigned Integer
- case 'ui4' : // 4-Byte Unsigned Integer
- case 'ui8' : // 8-Byte Unsigned Integer
- case 'uint' : // Unsigned Integer
- return self::PROPERTY_TYPE_INTEGER;
- break;
- case 'r4' : // 4-Byte Real Number
- case 'r8' : // 8-Byte Real Number
- case 'decimal' : // Decimal
- return self::PROPERTY_TYPE_FLOAT;
- break;
- case 'empty' : // Empty
- case 'null' : // Null
- case 'lpstr' : // LPSTR
- case 'lpwstr' : // LPWSTR
- case 'bstr' : // Basic String
- return self::PROPERTY_TYPE_STRING;
- break;
- case 'date' : // Date and Time
- case 'filetime' : // File Time
- return self::PROPERTY_TYPE_DATE;
- break;
- case 'bool' : // Boolean
- return self::PROPERTY_TYPE_BOOLEAN;
- break;
- case 'cy' : // Currency
- case 'error' : // Error Status Code
- case 'vector' : // Vector
- case 'array' : // Array
- case 'blob' : // Binary Blob
- case 'oblob' : // Binary Blob Object
- case 'stream' : // Binary Stream
- case 'ostream' : // Binary Stream Object
- case 'storage' : // Binary Storage
- case 'ostorage' : // Binary Storage Object
- case 'vstream' : // Binary Versioned Stream
- case 'clsid' : // Class ID
- case 'cf' : // Clipboard Data
- return self::PROPERTY_TYPE_UNKNOWN;
- break;
- }
- return self::PROPERTY_TYPE_UNKNOWN;
- }
-
-}
diff --git a/admin/survey/excel/PHPExcel/DocumentSecurity.php b/admin/survey/excel/PHPExcel/DocumentSecurity.php
deleted file mode 100644
index ff98c45..0000000
--- a/admin/survey/excel/PHPExcel/DocumentSecurity.php
+++ /dev/null
@@ -1,218 +0,0 @@
-<?php
-/**
- * PHPExcel
- *
- * Copyright (c) 2006 - 2012 PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-
-/**
- * PHPExcel_DocumentSecurity
- *
- * @category PHPExcel
- * @package PHPExcel
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- */
-class PHPExcel_DocumentSecurity
-{
- /**
- * LockRevision
- *
- * @var boolean
- */
- private $_lockRevision;
-
- /**
- * LockStructure
- *
- * @var boolean
- */
- private $_lockStructure;
-
- /**
- * LockWindows
- *
- * @var boolean
- */
- private $_lockWindows;
-
- /**
- * RevisionsPassword
- *
- * @var string
- */
- private $_revisionsPassword;
-
- /**
- * WorkbookPassword
- *
- * @var string
- */
- private $_workbookPassword;
-
- /**
- * Create a new PHPExcel_DocumentSecurity
- */
- public function __construct()
- {
- // Initialise values
- $this->_lockRevision = false;
- $this->_lockStructure = false;
- $this->_lockWindows = false;
- $this->_revisionsPassword = '';
- $this->_workbookPassword = '';
- }
-
- /**
- * Is some sort of dcument security enabled?
- *
- * @return boolean
- */
- function isSecurityEnabled() {
- return $this->_lockRevision ||
- $this->_lockStructure ||
- $this->_lockWindows;
- }
-
- /**
- * Get LockRevision
- *
- * @return boolean
- */
- function getLockRevision() {
- return $this->_lockRevision;
- }
-
- /**
- * Set LockRevision
- *
- * @param boolean $pValue
- * @return PHPExcel_DocumentSecurity
- */
- function setLockRevision($pValue = false) {
- $this->_lockRevision = $pValue;
- return $this;
- }
-
- /**
- * Get LockStructure
- *
- * @return boolean
- */
- function getLockStructure() {
- return $this->_lockStructure;
- }
-
- /**
- * Set LockStructure
- *
- * @param boolean $pValue
- * @return PHPExcel_DocumentSecurity
- */
- function setLockStructure($pValue = false) {
- $this->_lockStructure = $pValue;
- return $this;
- }
-
- /**
- * Get LockWindows
- *
- * @return boolean
- */
- function getLockWindows() {
- return $this->_lockWindows;
- }
-
- /**
- * Set LockWindows
- *
- * @param boolean $pValue
- * @return PHPExcel_DocumentSecurity
- */
- function setLockWindows($pValue = false) {
- $this->_lockWindows = $pValue;
- return $this;
- }
-
- /**
- * Get RevisionsPassword (hashed)
- *
- * @return string
- */
- function getRevisionsPassword() {
- return $this->_revisionsPassword;
- }
-
- /**
- * Set RevisionsPassword
- *
- * @param string $pValue
- * @param boolean $pAlreadyHashed If the password has already been hashed, set this to true
- * @return PHPExcel_DocumentSecurity
- */
- function setRevisionsPassword($pValue = '', $pAlreadyHashed = false) {
- if (!$pAlreadyHashed) {
- $pValue = PHPExcel_Shared_PasswordHasher::hashPassword($pValue);
- }
- $this->_revisionsPassword = $pValue;
- return $this;
- }
-
- /**
- * Get WorkbookPassword (hashed)
- *
- * @return string
- */
- function getWorkbookPassword() {
- return $this->_workbookPassword;
- }
-
- /**
- * Set WorkbookPassword
- *
- * @param string $pValue
- * @param boolean $pAlreadyHashed If the password has already been hashed, set this to true
- * @return PHPExcel_DocumentSecurity
- */
- function setWorkbookPassword($pValue = '', $pAlreadyHashed = false) {
- if (!$pAlreadyHashed) {
- $pValue = PHPExcel_Shared_PasswordHasher::hashPassword($pValue);
- }
- $this->_workbookPassword = $pValue;
- return $this;
- }
-
- /**
- * Implement PHP __clone to create a deep clone, not just a shallow copy.
- */
- public function __clone() {
- $vars = get_object_vars($this);
- foreach ($vars as $key => $value) {
- if (is_object($value)) {
- $this->$key = clone $value;
- } else {
- $this->$key = $value;
- }
- }
- }
-}
diff --git a/admin/survey/excel/PHPExcel/Exception.php b/admin/survey/excel/PHPExcel/Exception.php
deleted file mode 100644
index 5e2da22..0000000
--- a/admin/survey/excel/PHPExcel/Exception.php
+++ /dev/null
@@ -1,52 +0,0 @@
-<?php
-/**
- * PHPExcel
- *
- * Copyright (c) 2006 - 2012 PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-
-/**
- * PHPExcel_Exception
- *
- * @category PHPExcel
- * @package PHPExcel
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- */
-class PHPExcel_Exception extends Exception {
- /**
- * Error handler callback
- *
- * @param mixed $code
- * @param mixed $string
- * @param mixed $file
- * @param mixed $line
- * @param mixed $context
- */
- public static function errorHandlerCallback($code, $string, $file, $line, $context) {
- $e = new self($string, $code);
- $e->line = $line;
- $e->file = $file;
- throw $e;
- }
-}
diff --git a/admin/survey/excel/PHPExcel/HashTable.php b/admin/survey/excel/PHPExcel/HashTable.php
deleted file mode 100644
index 6011ed5..0000000
--- a/admin/survey/excel/PHPExcel/HashTable.php
+++ /dev/null
@@ -1,202 +0,0 @@
-<?php
-/**
- * PHPExcel
- *
- * Copyright (c) 2006 - 2012 PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-
-/**
- * PHPExcel_HashTable
- *
- * @category PHPExcel
- * @package PHPExcel
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- */
-class PHPExcel_HashTable
-{
- /**
- * HashTable elements
- *
- * @var array
- */
- public $_items = array();
-
- /**
- * HashTable key map
- *
- * @var array
- */
- public $_keyMap = array();
-
- /**
- * Create a new PHPExcel_HashTable
- *
- * @param PHPExcel_IComparable[] $pSource Optional source array to create HashTable from
- * @throws Exception
- */
- public function __construct($pSource = null)
- {
- if ($pSource !== NULL) {
- // Create HashTable
- $this->addFromSource($pSource);
- }
- }
-
- /**
- * Add HashTable items from source
- *
- * @param PHPExcel_IComparable[] $pSource Source array to create HashTable from
- * @throws Exception
- */
- public function addFromSource($pSource = null) {
- // Check if an array was passed
- if ($pSource == null) {
- return;
- } else if (!is_array($pSource)) {
- throw new Exception('Invalid array parameter passed.');
- }
-
- foreach ($pSource as $item) {
- $this->add($item);
- }
- }
-
- /**
- * Add HashTable item
- *
- * @param PHPExcel_IComparable $pSource Item to add
- * @throws Exception
- */
- public function add(PHPExcel_IComparable $pSource = null) {
- $hash = $pSource->getHashCode();
- if (!isset($this->_items[$hash])) {
- $this->_items[$hash] = $pSource;
- $this->_keyMap[count($this->_items) - 1] = $hash;
- }
- }
-
- /**
- * Remove HashTable item
- *
- * @param PHPExcel_IComparable $pSource Item to remove
- * @throws Exception
- */
- public function remove(PHPExcel_IComparable $pSource = null) {
- $hash = $pSource->getHashCode();
- if (isset($this->_items[$hash])) {
- unset($this->_items[$hash]);
-
- $deleteKey = -1;
- foreach ($this->_keyMap as $key => $value) {
- if ($deleteKey >= 0) {
- $this->_keyMap[$key - 1] = $value;
- }
-
- if ($value == $hash) {
- $deleteKey = $key;
- }
- }
- unset($this->_keyMap[count($this->_keyMap) - 1]);
- }
- }
-
- /**
- * Clear HashTable
- *
- */
- public function clear() {
- $this->_items = array();
- $this->_keyMap = array();
- }
-
- /**
- * Count
- *
- * @return int
- */
- public function count() {
- return count($this->_items);
- }
-
- /**
- * Get index for hash code
- *
- * @param string $pHashCode
- * @return int Index
- */
- public function getIndexForHashCode($pHashCode = '') {
- return array_search($pHashCode, $this->_keyMap);
- }
-
- /**
- * Get by index
- *
- * @param int $pIndex
- * @return PHPExcel_IComparable
- *
- */
- public function getByIndex($pIndex = 0) {
- if (isset($this->_keyMap[$pIndex])) {
- return $this->getByHashCode( $this->_keyMap[$pIndex] );
- }
-
- return null;
- }
-
- /**
- * Get by hashcode
- *
- * @param string $pHashCode
- * @return PHPExcel_IComparable
- *
- */
- public function getByHashCode($pHashCode = '') {
- if (isset($this->_items[$pHashCode])) {
- return $this->_items[$pHashCode];
- }
-
- return null;
- }
-
- /**
- * HashTable to array
- *
- * @return PHPExcel_IComparable[]
- */
- public function toArray() {
- return $this->_items;
- }
-
- /**
- * Implement PHP __clone to create a deep clone, not just a shallow copy.
- */
- public function __clone() {
- $vars = get_object_vars($this);
- foreach ($vars as $key => $value) {
- if (is_object($value)) {
- $this->$key = clone $value;
- }
- }
- }
-}
diff --git a/admin/survey/excel/PHPExcel/IComparable.php b/admin/survey/excel/PHPExcel/IComparable.php
deleted file mode 100644
index 5180abc..0000000
--- a/admin/survey/excel/PHPExcel/IComparable.php
+++ /dev/null
@@ -1,43 +0,0 @@
-<?php
-/**
- * PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-
-/**
- * PHPExcel_IComparable
- *
- * @category PHPExcel
- * @package PHPExcel
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- */
-interface PHPExcel_IComparable
-{
- /**
- * Get hash code
- *
- * @return string Hash code
- */
- public function getHashCode();
-
-}
diff --git a/admin/survey/excel/PHPExcel/IOFactory.php b/admin/survey/excel/PHPExcel/IOFactory.php
deleted file mode 100644
index 17a1b4f..0000000
--- a/admin/survey/excel/PHPExcel/IOFactory.php
+++ /dev/null
@@ -1,288 +0,0 @@
-<?php
-/**
- * PHPExcel
- *
- * Copyright (c) 2006 - 2012 PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-
-/** PHPExcel root directory */
-if (!defined('PHPEXCEL_ROOT')) {
- /**
- * @ignore
- */
- define('PHPEXCEL_ROOT', dirname(__FILE__) . '/../');
- require(PHPEXCEL_ROOT . 'PHPExcel/Autoloader.php');
-}
-
-/**
- * PHPExcel_IOFactory
- *
- * @category PHPExcel
- * @package PHPExcel
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- */
-class PHPExcel_IOFactory
-{
- /**
- * Search locations
- *
- * @var array
- * @access private
- * @static
- */
- private static $_searchLocations = array(
- array( 'type' => 'IWriter', 'path' => 'PHPExcel/Writer/{0}.php', 'class' => 'PHPExcel_Writer_{0}' ),
- array( 'type' => 'IReader', 'path' => 'PHPExcel/Reader/{0}.php', 'class' => 'PHPExcel_Reader_{0}' )
- );
-
- /**
- * Autoresolve classes
- *
- * @var array
- * @access private
- * @static
- */
- private static $_autoResolveClasses = array(
- 'Excel2007',
- 'Excel5',
- 'Excel2003XML',
- 'OOCalc',
- 'SYLK',
- 'Gnumeric',
- 'HTML',
- 'CSV',
- );
-
- /**
- * Private constructor for PHPExcel_IOFactory
- */
- private function __construct() { }
-
- /**
- * Get search locations
- *
- * @static
- * @access public
- * @return array
- */
- public static function getSearchLocations() {
- return self::$_searchLocations;
- } // function getSearchLocations()
-
- /**
- * Set search locations
- *
- * @static
- * @access public
- * @param array $value
- * @throws Exception
- */
- public static function setSearchLocations($value) {
- if (is_array($value)) {
- self::$_searchLocations = $value;
- } else {
- throw new Exception('Invalid parameter passed.');
- }
- } // function setSearchLocations()
-
- /**
- * Add search location
- *
- * @static
- * @access public
- * @param string $type Example: IWriter
- * @param string $location Example: PHPExcel/Writer/{0}.php
- * @param string $classname Example: PHPExcel_Writer_{0}
- */
- public static function addSearchLocation($type = '', $location = '', $classname = '') {
- self::$_searchLocations[] = array( 'type' => $type, 'path' => $location, 'class' => $classname );
- } // function addSearchLocation()
-
- /**
- * Create PHPExcel_Writer_IWriter
- *
- * @static
- * @access public
- * @param PHPExcel $phpExcel
- * @param string $writerType Example: Excel2007
- * @return PHPExcel_Writer_IWriter
- * @throws Exception
- */
- public static function createWriter(PHPExcel $phpExcel, $writerType = '') {
- // Search type
- $searchType = 'IWriter';
-
- // Include class
- foreach (self::$_searchLocations as $searchLocation) {
- if ($searchLocation['type'] == $searchType) {
- $className = str_replace('{0}', $writerType, $searchLocation['class']);
-
- $instance = new $className($phpExcel);
- if ($instance !== NULL) {
- return $instance;
- }
- }
- }
-
- // Nothing found...
- throw new Exception("No $searchType found for type $writerType");
- } // function createWriter()
-
- /**
- * Create PHPExcel_Reader_IReader
- *
- * @static
- * @access public
- * @param string $readerType Example: Excel2007
- * @return PHPExcel_Reader_IReader
- * @throws Exception
- */
- public static function createReader($readerType = '') {
- // Search type
- $searchType = 'IReader';
-
- // Include class
- foreach (self::$_searchLocations as $searchLocation) {
- if ($searchLocation['type'] == $searchType) {
- $className = str_replace('{0}', $readerType, $searchLocation['class']);
-
- $instance = new $className();
- if ($instance !== NULL) {
- return $instance;
- }
- }
- }
-
- // Nothing found...
- throw new Exception("No $searchType found for type $readerType");
- } // function createReader()
-
- /**
- * Loads PHPExcel from file using automatic PHPExcel_Reader_IReader resolution
- *
- * @static
- * @access public
- * @param string $pFileName The name of the spreadsheet file
- * @return PHPExcel
- * @throws Exception
- */
- public static function load($pFilename) {
- $reader = self::createReaderForFile($pFilename);
- return $reader->load($pFilename);
- } // function load()
-
- /**
- * Identify file type using automatic PHPExcel_Reader_IReader resolution
- *
- * @static
- * @access public
- * @param string $pFileName The name of the spreadsheet file to identify
- * @return string
- * @throws Exception
- */
- public static function identify($pFilename) {
- $reader = self::createReaderForFile($pFilename);
- $className = get_class($reader);
- $classType = explode('_',$className);
- unset($reader);
- return array_pop($classType);
- } // function identify()
-
- /**
- * Create PHPExcel_Reader_IReader for file using automatic PHPExcel_Reader_IReader resolution
- *
- * @static
- * @access public
- * @param string $pFileName The name of the spreadsheet file
- * @return PHPExcel_Reader_IReader
- * @throws Exception
- */
- public static function createReaderForFile($pFilename) {
-
- // First, lucky guess by inspecting file extension
- $pathinfo = pathinfo($pFilename);
-
- $extensionType = NULL;
- if (isset($pathinfo['extension'])) {
- switch (strtolower($pathinfo['extension'])) {
- case 'xlsx': // Excel (OfficeOpenXML) Spreadsheet
- case 'xlsm': // Excel (OfficeOpenXML) Macro Spreadsheet (macros will be discarded)
- case 'xltx': // Excel (OfficeOpenXML) Template
- case 'xltm': // Excel (OfficeOpenXML) Macro Template (macros will be discarded)
- $extensionType = 'Excel2007';
- break;
- case 'xls': // Excel (BIFF) Spreadsheet
- case 'xlt': // Excel (BIFF) Template
- $extensionType = 'Excel5';
- break;
- case 'ods': // Open/Libre Offic Calc
- case 'ots': // Open/Libre Offic Calc Template
- $extensionType = 'OOCalc';
- break;
- case 'slk':
- $extensionType = 'SYLK';
- break;
- case 'xml': // Excel 2003 SpreadSheetML
- $extensionType = 'Excel2003XML';
- break;
- case 'gnumeric':
- $extensionType = 'Gnumeric';
- break;
- case 'htm':
- case 'html':
- $extensionType = 'HTML';
- break;
- case 'csv':
- // Do nothing
- // We must not try to use CSV reader since it loads
- // all files including Excel files etc.
- break;
- default:
- break;
- }
-
- if ($extensionType !== NULL) {
- $reader = self::createReader($extensionType);
- // Let's see if we are lucky
- if (isset($reader) && $reader->canRead($pFilename)) {
- return $reader;
- }
- }
- }
-
- // If we reach here then "lucky guess" didn't give any result
- // Try walking through all the options in self::$_autoResolveClasses
- foreach (self::$_autoResolveClasses as $autoResolveClass) {
- // Ignore our original guess, we know that won't work
- if ($autoResolveClass !== $extensionType) {
- $reader = self::createReader($autoResolveClass);
- if ($reader->canRead($pFilename)) {
- return $reader;
- }
- }
- }
-
- throw new Exception('Unable to identify a reader for this file');
- } // function createReaderForFile()
-}
diff --git a/admin/survey/excel/PHPExcel/NamedRange.php b/admin/survey/excel/PHPExcel/NamedRange.php
deleted file mode 100644
index 05b6835..0000000
--- a/admin/survey/excel/PHPExcel/NamedRange.php
+++ /dev/null
@@ -1,245 +0,0 @@
-<?php
-/**
- * PHPExcel
- *
- * Copyright (c) 2006 - 2012 PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-
-/**
- * PHPExcel_NamedRange
- *
- * @category PHPExcel
- * @package PHPExcel
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- */
-class PHPExcel_NamedRange
-{
- /**
- * Range name
- *
- * @var string
- */
- private $_name;
-
- /**
- * Worksheet on which the named range can be resolved
- *
- * @var PHPExcel_Worksheet
- */
- private $_worksheet;
-
- /**
- * Range of the referenced cells
- *
- * @var string
- */
- private $_range;
-
- /**
- * Is the named range local? (i.e. can only be used on $this->_worksheet)
- *
- * @var bool
- */
- private $_localOnly;
-
- /**
- * Scope
- *
- * @var PHPExcel_Worksheet
- */
- private $_scope;
-
- /**
- * Create a new NamedRange
- *
- * @param string $pName
- * @param PHPExcel_Worksheet $pWorksheet
- * @param string $pRange
- * @param bool $pLocalOnly
- * @param PHPExcel_Worksheet|null $pScope Scope. Only applies when $pLocalOnly = true. Null for global scope.
- */
- public function __construct($pName = null, PHPExcel_Worksheet $pWorksheet, $pRange = 'A1', $pLocalOnly = false, $pScope = null)
- {
- // Validate data
- if (($pName === NULL) || ($pWorksheet === NULL) || ($pRange === NULL)) {
- throw new Exception('Parameters can not be null.');
- }
-
- // Set local members
- $this->_name = $pName;
- $this->_worksheet = $pWorksheet;
- $this->_range = $pRange;
- $this->_localOnly = $pLocalOnly;
- $this->_scope = ($pLocalOnly == true) ?
- (($pScope == null) ? $pWorksheet : $pScope) : null;
- }
-
- /**
- * Get name
- *
- * @return string
- */
- public function getName() {
- return $this->_name;
- }
-
- /**
- * Set name
- *
- * @param string $value
- * @return PHPExcel_NamedRange
- */
- public function setName($value = null) {
- if ($value !== NULL) {
- // Old title
- $oldTitle = $this->_name;
-
- // Re-attach
- if ($this->_worksheet !== NULL) {
- $this->_worksheet->getParent()->removeNamedRange($this->_name,$this->_worksheet);
- }
- $this->_name = $value;
-
- if ($this->_worksheet !== NULL) {
- $this->_worksheet->getParent()->addNamedRange($this);
- }
-
- // New title
- $newTitle = $this->_name;
- PHPExcel_ReferenceHelper::getInstance()->updateNamedFormulas($this->_worksheet->getParent(), $oldTitle, $newTitle);
- }
- return $this;
- }
-
- /**
- * Get worksheet
- *
- * @return PHPExcel_Worksheet
- */
- public function getWorksheet() {
- return $this->_worksheet;
- }
-
- /**
- * Set worksheet
- *
- * @param PHPExcel_Worksheet $value
- * @return PHPExcel_NamedRange
- */
- public function setWorksheet(PHPExcel_Worksheet $value = null) {
- if ($value !== NULL) {
- $this->_worksheet = $value;
- }
- return $this;
- }
-
- /**
- * Get range
- *
- * @return string
- */
- public function getRange() {
- return $this->_range;
- }
-
- /**
- * Set range
- *
- * @param string $value
- * @return PHPExcel_NamedRange
- */
- public function setRange($value = null) {
- if ($value !== NULL) {
- $this->_range = $value;
- }
- return $this;
- }
-
- /**
- * Get localOnly
- *
- * @return bool
- */
- public function getLocalOnly() {
- return $this->_localOnly;
- }
-
- /**
- * Set localOnly
- *
- * @param bool $value
- * @return PHPExcel_NamedRange
- */
- public function setLocalOnly($value = false) {
- $this->_localOnly = $value;
- $this->_scope = $value ? $this->_worksheet : null;
- return $this;
- }
-
- /**
- * Get scope
- *
- * @return PHPExcel_Worksheet|null
- */
- public function getScope() {
- return $this->_scope;
- }
-
- /**
- * Set scope
- *
- * @param PHPExcel_Worksheet|null $value
- * @return PHPExcel_NamedRange
- */
- public function setScope(PHPExcel_Worksheet $value = null) {
- $this->_scope = $value;
- $this->_localOnly = ($value == null) ? false : true;
- return $this;
- }
-
- /**
- * Resolve a named range to a regular cell range
- *
- * @param string $pNamedRange Named range
- * @param PHPExcel_Worksheet|null $pSheet Scope. Use null for global scope
- * @return PHPExcel_NamedRange
- */
- public static function resolveRange($pNamedRange = '', PHPExcel_Worksheet $pSheet) {
- return $pSheet->getParent()->getNamedRange($pNamedRange, $pSheet);
- }
-
- /**
- * Implement PHP __clone to create a deep clone, not just a shallow copy.
- */
- public function __clone() {
- $vars = get_object_vars($this);
- foreach ($vars as $key => $value) {
- if (is_object($value)) {
- $this->$key = clone $value;
- } else {
- $this->$key = $value;
- }
- }
- }
-}
diff --git a/admin/survey/excel/PHPExcel/Reader/CSV.php b/admin/survey/excel/PHPExcel/Reader/CSV.php
deleted file mode 100644
index 4115df5..0000000
--- a/admin/survey/excel/PHPExcel/Reader/CSV.php
+++ /dev/null
@@ -1,505 +0,0 @@
-<?php
-/**
- * PHPExcel
- *
- * Copyright (c) 2006 - 2012 PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel_Reader
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-
-/** PHPExcel root directory */
-if (!defined('PHPEXCEL_ROOT')) {
- /**
- * @ignore
- */
- define('PHPEXCEL_ROOT', dirname(__FILE__) . '/../../');
- require(PHPEXCEL_ROOT . 'PHPExcel/Autoloader.php');
-}
-
-/**
- * PHPExcel_Reader_CSV
- *
- * @category PHPExcel
- * @package PHPExcel_Reader
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- */
-class PHPExcel_Reader_CSV implements PHPExcel_Reader_IReader
-{
- /**
- * Input encoding
- *
- * @access private
- * @var string
- */
- private $_inputEncoding = 'UTF-8';
-
- /**
- * Delimiter
- *
- * @access private
- * @var string
- */
- private $_delimiter = ',';
-
- /**
- * Enclosure
- *
- * @access private
- * @var string
- */
- private $_enclosure = '"';
-
- /**
- * Line ending
- *
- * @access private
- * @var string
- */
- private $_lineEnding = PHP_EOL;
-
- /**
- * Sheet index to read
- *
- * @access private
- * @var int
- */
- private $_sheetIndex = 0;
-
- /**
- * Load rows contiguously
- *
- * @access private
- * @var int
- */
- private $_contiguous = false;
-
-
- /**
- * Row counter for loading rows contiguously
- *
- * @access private
- * @var int
- */
- private $_contiguousRow = -1;
-
- /**
- * PHPExcel_Reader_IReadFilter instance
- *
- * @access private
- * @var PHPExcel_Reader_IReadFilter
- */
- private $_readFilter = null;
-
-
- /**
- * Create a new PHPExcel_Reader_CSV
- */
- public function __construct() {
- $this->_readFilter = new PHPExcel_Reader_DefaultReadFilter();
- } // function __construct()
-
-
- /**
- * Can the current PHPExcel_Reader_IReader read the file?
- *
- * @access public
- * @param string $pFileName
- * @return boolean
- * @throws Exception
- */
- public function canRead($pFilename)
- {
- // Check if file exists
- if (!file_exists($pFilename)) {
- throw new Exception("Could not open " . $pFilename . " for reading! File does not exist.");
- }
-
- return true;
- } // function canRead()
-
-
- /**
- * Read filter
- *
- * @access public
- * @return PHPExcel_Reader_IReadFilter
- */
- public function getReadFilter() {
- return $this->_readFilter;
- } // function getReadFilter()
-
-
- /**
- * Set read filter
- *
- * @access public
- * @param PHPExcel_Reader_IReadFilter $pValue
- */
- public function setReadFilter(PHPExcel_Reader_IReadFilter $pValue) {
- $this->_readFilter = $pValue;
- return $this;
- } // function setReadFilter()
-
-
- /**
- * Set input encoding
- *
- * @access public
- * @param string $pValue Input encoding
- */
- public function setInputEncoding($pValue = 'UTF-8')
- {
- $this->_inputEncoding = $pValue;
- return $this;
- } // function setInputEncoding()
-
-
- /**
- * Get input encoding
- *
- * @access public
- * @return string
- */
- public function getInputEncoding()
- {
- return $this->_inputEncoding;
- } // function getInputEncoding()
-
-
- /**
- * Return worksheet info (Name, Last Column Letter, Last Column Index, Total Rows, Total Columns)
- *
- * @access public
- * @param string $pFilename
- * @throws Exception
- */
- public function listWorksheetInfo($pFilename)
- {
- // Check if file exists
- if (!file_exists($pFilename)) {
- throw new Exception("Could not open " . $pFilename . " for reading! File does not exist.");
- }
-
- // Open file
- $fileHandle = fopen($pFilename, 'r');
- if ($fileHandle === false) {
- throw new Exception("Could not open file " . $pFilename . " for reading.");
- }
-
- // Skip BOM, if any
- switch ($this->_inputEncoding) {
- case 'UTF-8':
- fgets($fileHandle, 4) == "\xEF\xBB\xBF" ?
- fseek($fileHandle, 3) : fseek($fileHandle, 0);
- break;
- case 'UTF-16LE':
- fgets($fileHandle, 3) == "\xFF\xFE" ?
- fseek($fileHandle, 2) : fseek($fileHandle, 0);
- break;
- case 'UTF-16BE':
- fgets($fileHandle, 3) == "\xFE\xFF" ?
- fseek($fileHandle, 2) : fseek($fileHandle, 0);
- break;
- case 'UTF-32LE':
- fgets($fileHandle, 5) == "\xFF\xFE\x00\x00" ?
- fseek($fileHandle, 4) : fseek($fileHandle, 0);
- break;
- case 'UTF-32BE':
- fgets($fileHandle, 5) == "\x00\x00\xFE\xFF" ?
- fseek($fileHandle, 4) : fseek($fileHandle, 0);
- break;
- default:
- break;
- }
-
- $escapeEnclosures = array( "\\" . $this->_enclosure, $this->_enclosure . $this->_enclosure );
-
- $worksheetInfo = array();
- $worksheetInfo[0]['worksheetName'] = 'Worksheet';
- $worksheetInfo[0]['lastColumnLetter'] = 'A';
- $worksheetInfo[0]['lastColumnIndex'] = 0;
- $worksheetInfo[0]['totalRows'] = 0;
- $worksheetInfo[0]['totalColumns'] = 0;
-
- // Loop through each line of the file in turn
- while (($rowData = fgetcsv($fileHandle, 0, $this->_delimiter, $this->_enclosure)) !== FALSE) {
- $worksheetInfo[0]['totalRows']++;
- $worksheetInfo[0]['lastColumnIndex'] = max($worksheetInfo[0]['lastColumnIndex'], count($rowData) - 1);
- }
-
- $worksheetInfo[0]['lastColumnLetter'] = PHPExcel_Cell::stringFromColumnIndex($worksheetInfo[0]['lastColumnIndex']);
- $worksheetInfo[0]['totalColumns'] = $worksheetInfo[0]['lastColumnIndex'] + 1;
-
- // Close file
- fclose($fileHandle);
-
- return $worksheetInfo;
- }
-
-
- /**
- * Loads PHPExcel from file
- *
- * @access public
- * @param string $pFilename
- * @return PHPExcel
- * @throws Exception
- */
- public function load($pFilename)
- {
- // Create new PHPExcel
- $objPHPExcel = new PHPExcel();
-
- // Load into this instance
- return $this->loadIntoExisting($pFilename, $objPHPExcel);
- } // function load()
-
-
- /**
- * Loads PHPExcel from file into PHPExcel instance
- *
- * @access public
- * @param string $pFilename
- * @param PHPExcel $objPHPExcel
- * @return PHPExcel
- * @throws Exception
- */
- public function loadIntoExisting($pFilename, PHPExcel $objPHPExcel)
- {
- // Check if file exists
- if (!file_exists($pFilename)) {
- throw new Exception("Could not open " . $pFilename . " for reading! File does not exist.");
- }
-
- // Create new PHPExcel
- while ($objPHPExcel->getSheetCount() <= $this->_sheetIndex) {
- $objPHPExcel->createSheet();
- }
- $sheet = $objPHPExcel->setActiveSheetIndex( $this->_sheetIndex );
-
- $lineEnding = ini_get('auto_detect_line_endings');
- ini_set('auto_detect_line_endings', true);
-
- // Open file
- $fileHandle = fopen($pFilename, 'r');
- if ($fileHandle === false) {
- throw new Exception("Could not open file $pFilename for reading.");
- }
-
- // Skip BOM, if any
- switch ($this->_inputEncoding) {
- case 'UTF-8':
- fgets($fileHandle, 4) == "\xEF\xBB\xBF" ?
- fseek($fileHandle, 3) : fseek($fileHandle, 0);
- break;
- case 'UTF-16LE':
- fgets($fileHandle, 3) == "\xFF\xFE" ?
- fseek($fileHandle, 2) : fseek($fileHandle, 0);
- break;
- case 'UTF-16BE':
- fgets($fileHandle, 3) == "\xFE\xFF" ?
- fseek($fileHandle, 2) : fseek($fileHandle, 0);
- break;
- case 'UTF-32LE':
- fgets($fileHandle, 5) == "\xFF\xFE\x00\x00" ?
- fseek($fileHandle, 4) : fseek($fileHandle, 0);
- break;
- case 'UTF-32BE':
- fgets($fileHandle, 5) == "\x00\x00\xFE\xFF" ?
- fseek($fileHandle, 4) : fseek($fileHandle, 0);
- break;
- default:
- break;
- }
-
- $escapeEnclosures = array( "\\" . $this->_enclosure,
- $this->_enclosure . $this->_enclosure
- );
-
- // Set our starting row based on whether we're in contiguous mode or not
- $currentRow = 1;
- if ($this->_contiguous) {
- $currentRow = ($this->_contiguousRow == -1) ? $sheet->getHighestRow(): $this->_contiguousRow;
- }
-
- // Loop through each line of the file in turn
- while (($rowData = fgetcsv($fileHandle, 0, $this->_delimiter, $this->_enclosure)) !== FALSE) {
- $columnLetter = 'A';
- foreach($rowData as $rowDatum) {
- if ($rowDatum != '' && $this->_readFilter->readCell($columnLetter, $currentRow)) {
- // Unescape enclosures
- $rowDatum = str_replace($escapeEnclosures, $this->_enclosure, $rowDatum);
-
- // Convert encoding if necessary
- if ($this->_inputEncoding !== 'UTF-8') {
- $rowDatum = PHPExcel_Shared_String::ConvertEncoding($rowDatum, 'UTF-8', $this->_inputEncoding);
- }
-
- // Set cell value
- $sheet->getCell($columnLetter . $currentRow)->setValue($rowDatum);
- }
- ++$columnLetter;
- }
- ++$currentRow;
- }
-
- // Close file
- fclose($fileHandle);
-
- if ($this->_contiguous) {
- $this->_contiguousRow = $currentRow;
- }
-
- ini_set('auto_detect_line_endings', $lineEnding);
-
- // Return
- return $objPHPExcel;
- } // function loadIntoExisting()
-
-
- /**
- * Get delimiter
- *
- * @access public
- * @return string
- */
- public function getDelimiter() {
- return $this->_delimiter;
- } // function getDelimiter()
-
-
- /**
- * Set delimiter
- *
- * @access public
- * @param string $pValue Delimiter, defaults to ,
- * @return PHPExcel_Reader_CSV
- */
- public function setDelimiter($pValue = ',') {
- $this->_delimiter = $pValue;
- return $this;
- } // function setDelimiter()
-
-
- /**
- * Get enclosure
- *
- * @access public
- * @return string
- */
- public function getEnclosure() {
- return $this->_enclosure;
- } // function getEnclosure()
-
-
- /**
- * Set enclosure
- *
- * @access public
- * @param string $pValue Enclosure, defaults to "
- * @return PHPExcel_Reader_CSV
- */
- public function setEnclosure($pValue = '"') {
- if ($pValue == '') {
- $pValue = '"';
- }
- $this->_enclosure = $pValue;
- return $this;
- } // function setEnclosure()
-
-
- /**
- * Get line ending
- *
- * @access public
- * @return string
- */
- public function getLineEnding() {
- return $this->_lineEnding;
- } // function getLineEnding()
-
-
- /**
- * Set line ending
- *
- * @access public
- * @param string $pValue Line ending, defaults to OS line ending (PHP_EOL)
- * @return PHPExcel_Reader_CSV
- */
- public function setLineEnding($pValue = PHP_EOL) {
- $this->_lineEnding = $pValue;
- return $this;
- } // function setLineEnding()
-
-
- /**
- * Get sheet index
- *
- * @access public
- * @return int
- */
- public function getSheetIndex() {
- return $this->_sheetIndex;
- } // function getSheetIndex()
-
-
- /**
- * Set sheet index
- *
- * @access public
- * @param int $pValue Sheet index
- * @return PHPExcel_Reader_CSV
- */
- public function setSheetIndex($pValue = 0) {
- $this->_sheetIndex = $pValue;
- return $this;
- } // function setSheetIndex()
-
-
- /**
- * Set Contiguous
- *
- * @access public
- * @param string $pValue Input encoding
- */
- public function setContiguous($contiguous = false)
- {
- $this->_contiguous = (bool)$contiguous;
- if (!$contiguous) {
- $this->_contiguousRow = -1;
- }
-
- return $this;
- } // function setInputEncoding()
-
-
- /**
- * Get Contiguous
- *
- * @access public
- * @return boolean
- */
- public function getContiguous() {
- return $this->_contiguous;
- } // function getSheetIndex()
-
-}
diff --git a/admin/survey/excel/PHPExcel/Reader/DefaultReadFilter.php b/admin/survey/excel/PHPExcel/Reader/DefaultReadFilter.php
deleted file mode 100644
index 8de4402..0000000
--- a/admin/survey/excel/PHPExcel/Reader/DefaultReadFilter.php
+++ /dev/null
@@ -1,58 +0,0 @@
-<?php
-/**
- * PHPExcel
- *
- * Copyright (c) 2006 - 2012 PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel_Reader
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-
-/** PHPExcel root directory */
-if (!defined('PHPEXCEL_ROOT')) {
- /**
- * @ignore
- */
- define('PHPEXCEL_ROOT', dirname(__FILE__) . '/../../');
- require(PHPEXCEL_ROOT . 'PHPExcel/Autoloader.php');
-}
-
-/**
- * PHPExcel_Reader_DefaultReadFilter
- *
- * @category PHPExcel
- * @package PHPExcel_Reader
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- */
-class PHPExcel_Reader_DefaultReadFilter implements PHPExcel_Reader_IReadFilter
-{
- /**
- * Should this cell be read?
- *
- * @param $column String column index
- * @param $row Row index
- * @param $worksheetName Optional worksheet name
- * @return boolean
- */
- public function readCell($column, $row, $worksheetName = '') {
- return true;
- }
-}
diff --git a/admin/survey/excel/PHPExcel/Reader/Excel2003XML.php b/admin/survey/excel/PHPExcel/Reader/Excel2003XML.php
deleted file mode 100644
index 42ccf92..0000000
--- a/admin/survey/excel/PHPExcel/Reader/Excel2003XML.php
+++ /dev/null
@@ -1,906 +0,0 @@
-<?php
-/**
- * PHPExcel
- *
- * Copyright (c) 2006 - 2012 PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel_Reader
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-
-/** PHPExcel root directory */
-if (!defined('PHPEXCEL_ROOT')) {
- /**
- * @ignore
- */
- define('PHPEXCEL_ROOT', dirname(__FILE__) . '/../../');
- require(PHPEXCEL_ROOT . 'PHPExcel/Autoloader.php');
-}
-
-/**
- * PHPExcel_Reader_Excel2003XML
- *
- * @category PHPExcel
- * @package PHPExcel_Reader
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- */
-class PHPExcel_Reader_Excel2003XML implements PHPExcel_Reader_IReader
-{
- /**
- * Read data only?
- *
- * @var boolean
- */
- private $_readDataOnly = false;
-
- /**
- * Restict which sheets should be loaded?
- *
- * @var array
- */
- private $_loadSheetsOnly = null;
-
- /**
- * Formats
- *
- * @var array
- */
- private $_styles = array();
-
- /**
- * PHPExcel_Reader_IReadFilter instance
- *
- * @var PHPExcel_Reader_IReadFilter
- */
- private $_readFilter = null;
-
- /**
- * Character set used in the file
- *
- * @var string
- */
- private $_charSet = 'UTF-8';
-
-
- /**
- * Create a new PHPExcel_Reader_Excel2003XML
- */
- public function __construct() {
- $this->_readFilter = new PHPExcel_Reader_DefaultReadFilter();
- }
-
-
- /**
- * Read data only?
- *
- * @return boolean
- */
- public function getReadDataOnly() {
- return $this->_readDataOnly;
- }
-
-
- /**
- * Set read data only
- *
- * @param boolean $pValue
- * @return PHPExcel_Reader_Excel2003XML
- */
- public function setReadDataOnly($pValue = false) {
- $this->_readDataOnly = $pValue;
- return $this;
- }
-
-
- /**
- * Get which sheets to load
- *
- * @return mixed
- */
- public function getLoadSheetsOnly()
- {
- return $this->_loadSheetsOnly;
- }
-
-
- /**
- * Set which sheets to load
- *
- * @param mixed $value
- * @return PHPExcel_Reader_Excel2003XML
- */
- public function setLoadSheetsOnly($value = null)
- {
- $this->_loadSheetsOnly = is_array($value) ?
- $value : array($value);
- return $this;
- }
-
-
- /**
- * Set all sheets to load
- *
- * @return PHPExcel_Reader_Excel2003XML
- */
- public function setLoadAllSheets()
- {
- $this->_loadSheetsOnly = null;
- return $this;
- }
-
-
- /**
- * Read filter
- *
- * @return PHPExcel_Reader_IReadFilter
- */
- public function getReadFilter() {
- return $this->_readFilter;
- }
-
-
- /**
- * Set read filter
- *
- * @param PHPExcel_Reader_IReadFilter $pValue
- * @return PHPExcel_Reader_Excel2003XML
- */
- public function setReadFilter(PHPExcel_Reader_IReadFilter $pValue) {
- $this->_readFilter = $pValue;
- return $this;
- }
-
-
- /**
- * Can the current PHPExcel_Reader_IReader read the file?
- *
- * @param string $pFileName
- * @return boolean
- * @throws Exception
- */
- public function canRead($pFilename)
- {
-
- // Office xmlns:o="urn:schemas-microsoft-com:office:office"
- // Excel xmlns:x="urn:schemas-microsoft-com:office:excel"
- // XML Spreadsheet xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet"
- // Spreadsheet component xmlns:c="urn:schemas-microsoft-com:office:component:spreadsheet"
- // XML schema xmlns:s="uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882"
- // XML data type xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882"
- // MS-persist recordset xmlns:rs="urn:schemas-microsoft-com:rowset"
- // Rowset xmlns:z="#RowsetSchema"
- //
-
- $signature = array(
- '<?xml version="1.0"',
- '<?mso-application progid="Excel.Sheet"?>'
- );
-
- // Check if file exists
- if (!file_exists($pFilename)) {
- throw new Exception("Could not open " . $pFilename . " for reading! File does not exist.");
- }
-
- // Read sample data (first 2 KB will do)
- $fh = fopen($pFilename, 'r');
- $data = fread($fh, 2048);
- fclose($fh);
-
- $valid = true;
- foreach($signature as $match) {
- // every part of the signature must be present
- if (strpos($data, $match) === false) {
- $valid = false;
- break;
- }
- }
-
- // Retrieve charset encoding
- if(preg_match('/<?xml.*encoding=[\'"](.*?)[\'"].*?>/um',$data,$matches)) {
- $this->_charSet = strtoupper($matches[1]);
- }
-// echo 'Character Set is ',$this->_charSet,'<br />';
-
- return $valid;
- }
-
-
- /**
- * Reads names of the worksheets from a file, without parsing the whole file to a PHPExcel object
- *
- * @param string $pFilename
- * @throws Exception
- */
- public function listWorksheetNames($pFilename)
- {
- // Check if file exists
- if (!file_exists($pFilename)) {
- throw new Exception("Could not open " . $pFilename . " for reading! File does not exist.");
- }
- if (!$this->canRead($pFilename)) {
- throw new Exception($pFilename . " is an Invalid Spreadsheet file.");
- }
-
- $worksheetNames = array();
-
- $xml = simplexml_load_file($pFilename);
- $namespaces = $xml->getNamespaces(true);
-
- $xml_ss = $xml->children($namespaces['ss']);
- foreach($xml_ss->Worksheet as $worksheet) {
- $worksheet_ss = $worksheet->attributes($namespaces['ss']);
- $worksheetNames[] = self::_convertStringEncoding((string) $worksheet_ss['Name'],$this->_charSet);
- }
-
- return $worksheetNames;
- }
-
-
- /**
- * Return worksheet info (Name, Last Column Letter, Last Column Index, Total Rows, Total Columns)
- *
- * @param string $pFilename
- * @throws Exception
- */
- public function listWorksheetInfo($pFilename)
- {
- // Check if file exists
- if (!file_exists($pFilename)) {
- throw new Exception("Could not open " . $pFilename . " for reading! File does not exist.");
- }
-
- $worksheetInfo = array();
-
- $xml = simplexml_load_file($pFilename);
- $namespaces = $xml->getNamespaces(true);
-
- $worksheetID = 1;
- $xml_ss = $xml->children($namespaces['ss']);
- foreach($xml_ss->Worksheet as $worksheet) {
- $worksheet_ss = $worksheet->attributes($namespaces['ss']);
-
- $tmpInfo = array();
- $tmpInfo['worksheetName'] = '';
- $tmpInfo['lastColumnLetter'] = 'A';
- $tmpInfo['lastColumnIndex'] = 0;
- $tmpInfo['totalRows'] = 0;
- $tmpInfo['totalColumns'] = 0;
-
- if (isset($worksheet_ss['Name'])) {
- $tmpInfo['worksheetName'] = (string) $worksheet_ss['Name'];
- } else {
- $tmpInfo['worksheetName'] = "Worksheet_{$worksheetID}";
- }
-
- if (isset($worksheet->Table->Row)) {
- $rowIndex = 0;
-
- foreach($worksheet->Table->Row as $rowData) {
- $columnIndex = 0;
- $rowHasData = false;
-
- foreach($rowData->Cell as $cell) {
- if (isset($cell->Data)) {
- $tmpInfo['lastColumnIndex'] = max($tmpInfo['lastColumnIndex'], $columnIndex);
- $rowHasData = true;
- }
-
- ++$columnIndex;
- }
-
- ++$rowIndex;
-
- if ($rowHasData) {
- $tmpInfo['totalRows'] = max($tmpInfo['totalRows'], $rowIndex);
- }
- }
- }
-
- $tmpInfo['lastColumnLetter'] = PHPExcel_Cell::stringFromColumnIndex($tmpInfo['lastColumnIndex']);
- $tmpInfo['totalColumns'] = $tmpInfo['lastColumnIndex'] + 1;
-
- $worksheetInfo[] = $tmpInfo;
- ++$worksheetID;
- }
-
- return $worksheetInfo;
- }
-
-
- /**
- * Loads PHPExcel from file
- *
- * @param string $pFilename
- * @return PHPExcel
- * @throws Exception
- */
- public function load($pFilename)
- {
- // Create new PHPExcel
- $objPHPExcel = new PHPExcel();
-
- // Load into this instance
- return $this->loadIntoExisting($pFilename, $objPHPExcel);
- }
-
-
- private static function identifyFixedStyleValue($styleList,&$styleAttributeValue) {
- $styleAttributeValue = strtolower($styleAttributeValue);
- foreach($styleList as $style) {
- if ($styleAttributeValue == strtolower($style)) {
- $styleAttributeValue = $style;
- return true;
- }
- }
- return false;
- }
-
-
- /**
- * pixel units to excel width units(units of 1/256th of a character width)
- * @param pxs
- * @return
- */
- private static function _pixel2WidthUnits($pxs) {
- $UNIT_OFFSET_MAP = array(0, 36, 73, 109, 146, 182, 219);
-
- $widthUnits = 256 * ($pxs / 7);
- $widthUnits += $UNIT_OFFSET_MAP[($pxs % 7)];
- return $widthUnits;
- }
-
-
- /**
- * excel width units(units of 1/256th of a character width) to pixel units
- * @param widthUnits
- * @return
- */
- private static function _widthUnits2Pixel($widthUnits) {
- $pixels = ($widthUnits / 256) * 7;
- $offsetWidthUnits = $widthUnits % 256;
- $pixels += round($offsetWidthUnits / (256 / 7));
- return $pixels;
- }
-
-
- private static function _hex2str($hex) {
- return chr(hexdec($hex[1]));
- }
-
-
- /**
- * Loads PHPExcel from file into PHPExcel instance
- *
- * @param string $pFilename
- * @param PHPExcel $objPHPExcel
- * @return PHPExcel
- * @throws Exception
- */
- public function loadIntoExisting($pFilename, PHPExcel $objPHPExcel)
- {
- $fromFormats = array('\-', '\ ');
- $toFormats = array('-', ' ');
-
- $underlineStyles = array (
- PHPExcel_Style_Font::UNDERLINE_NONE,
- PHPExcel_Style_Font::UNDERLINE_DOUBLE,
- PHPExcel_Style_Font::UNDERLINE_DOUBLEACCOUNTING,
- PHPExcel_Style_Font::UNDERLINE_SINGLE,
- PHPExcel_Style_Font::UNDERLINE_SINGLEACCOUNTING
- );
- $verticalAlignmentStyles = array (
- PHPExcel_Style_Alignment::VERTICAL_BOTTOM,
- PHPExcel_Style_Alignment::VERTICAL_TOP,
- PHPExcel_Style_Alignment::VERTICAL_CENTER,
- PHPExcel_Style_Alignment::VERTICAL_JUSTIFY
- );
- $horizontalAlignmentStyles = array (
- PHPExcel_Style_Alignment::HORIZONTAL_GENERAL,
- PHPExcel_Style_Alignment::HORIZONTAL_LEFT,
- PHPExcel_Style_Alignment::HORIZONTAL_RIGHT,
- PHPExcel_Style_Alignment::HORIZONTAL_CENTER,
- PHPExcel_Style_Alignment::HORIZONTAL_CENTER_CONTINUOUS,
- PHPExcel_Style_Alignment::HORIZONTAL_JUSTIFY
- );
-
- $timezoneObj = new DateTimeZone('Europe/London');
- $GMT = new DateTimeZone('UTC');
-
-
- // Check if file exists
- if (!file_exists($pFilename)) {
- throw new Exception("Could not open " . $pFilename . " for reading! File does not exist.");
- }
-
- if (!$this->canRead($pFilename)) {
- throw new Exception($pFilename . " is an Invalid Spreadsheet file.");
- }
-
- $xml = simplexml_load_file($pFilename);
- $namespaces = $xml->getNamespaces(true);
-
- $docProps = $objPHPExcel->getProperties();
- if (isset($xml->DocumentProperties[0])) {
- foreach($xml->DocumentProperties[0] as $propertyName => $propertyValue) {
- switch ($propertyName) {
- case 'Title' :
- $docProps->setTitle(self::_convertStringEncoding($propertyValue,$this->_charSet));
- break;
- case 'Subject' :
- $docProps->setSubject(self::_convertStringEncoding($propertyValue,$this->_charSet));
- break;
- case 'Author' :
- $docProps->setCreator(self::_convertStringEncoding($propertyValue,$this->_charSet));
- break;
- case 'Created' :
- $creationDate = strtotime($propertyValue);
- $docProps->setCreated($creationDate);
- break;
- case 'LastAuthor' :
- $docProps->setLastModifiedBy(self::_convertStringEncoding($propertyValue,$this->_charSet));
- break;
- case 'LastSaved' :
- $lastSaveDate = strtotime($propertyValue);
- $docProps->setModified($lastSaveDate);
- break;
- case 'Company' :
- $docProps->setCompany(self::_convertStringEncoding($propertyValue,$this->_charSet));
- break;
- case 'Category' :
- $docProps->setCategory(self::_convertStringEncoding($propertyValue,$this->_charSet));
- break;
- case 'Manager' :
- $docProps->setManager(self::_convertStringEncoding($propertyValue,$this->_charSet));
- break;
- case 'Keywords' :
- $docProps->setKeywords(self::_convertStringEncoding($propertyValue,$this->_charSet));
- break;
- case 'Description' :
- $docProps->setDescription(self::_convertStringEncoding($propertyValue,$this->_charSet));
- break;
- }
- }
- }
- if (isset($xml->CustomDocumentProperties)) {
- foreach($xml->CustomDocumentProperties[0] as $propertyName => $propertyValue) {
- $propertyAttributes = $propertyValue->attributes($namespaces['dt']);
- $propertyName = preg_replace_callback('/_x([0-9a-z]{4})_/','PHPExcel_Reader_Excel2003XML::_hex2str',$propertyName);
- $propertyType = PHPExcel_DocumentProperties::PROPERTY_TYPE_UNKNOWN;
- switch((string) $propertyAttributes) {
- case 'string' :
- $propertyType = PHPExcel_DocumentProperties::PROPERTY_TYPE_STRING;
- $propertyValue = trim($propertyValue);
- break;
- case 'boolean' :
- $propertyType = PHPExcel_DocumentProperties::PROPERTY_TYPE_BOOLEAN;
- $propertyValue = (bool) $propertyValue;
- break;
- case 'integer' :
- $propertyType = PHPExcel_DocumentProperties::PROPERTY_TYPE_INTEGER;
- $propertyValue = intval($propertyValue);
- break;
- case 'float' :
- $propertyType = PHPExcel_DocumentProperties::PROPERTY_TYPE_FLOAT;
- $propertyValue = floatval($propertyValue);
- break;
- case 'dateTime.tz' :
- $propertyType = PHPExcel_DocumentProperties::PROPERTY_TYPE_DATE;
- $propertyValue = strtotime(trim($propertyValue));
- break;
- }
- $docProps->setCustomProperty($propertyName,$propertyValue,$propertyType);
- }
- }
-
- foreach($xml->Styles[0] as $style) {
- $style_ss = $style->attributes($namespaces['ss']);
- $styleID = (string) $style_ss['ID'];
-// echo 'Style ID = '.$styleID.'<br />';
- if ($styleID == 'Default') {
- $this->_styles['Default'] = array();
- } else {
- $this->_styles[$styleID] = $this->_styles['Default'];
- }
- foreach ($style as $styleType => $styleData) {
- $styleAttributes = $styleData->attributes($namespaces['ss']);
-// echo $styleType.'<br />';
- switch ($styleType) {
- case 'Alignment' :
- foreach($styleAttributes as $styleAttributeKey => $styleAttributeValue) {
-// echo $styleAttributeKey.' = '.$styleAttributeValue.'<br />';
- $styleAttributeValue = (string) $styleAttributeValue;
- switch ($styleAttributeKey) {
- case 'Vertical' :
- if (self::identifyFixedStyleValue($verticalAlignmentStyles,$styleAttributeValue)) {
- $this->_styles[$styleID]['alignment']['vertical'] = $styleAttributeValue;
- }
- break;
- case 'Horizontal' :
- if (self::identifyFixedStyleValue($horizontalAlignmentStyles,$styleAttributeValue)) {
- $this->_styles[$styleID]['alignment']['horizontal'] = $styleAttributeValue;
- }
- break;
- case 'WrapText' :
- $this->_styles[$styleID]['alignment']['wrap'] = true;
- break;
- }
- }
- break;
- case 'Borders' :
- foreach($styleData->Border as $borderStyle) {
- $borderAttributes = $borderStyle->attributes($namespaces['ss']);
- $thisBorder = array();
- foreach($borderAttributes as $borderStyleKey => $borderStyleValue) {
-// echo $borderStyleKey.' = '.$borderStyleValue.'<br />';
- switch ($borderStyleKey) {
- case 'LineStyle' :
- $thisBorder['style'] = PHPExcel_Style_Border::BORDER_MEDIUM;
-// $thisBorder['style'] = $borderStyleValue;
- break;
- case 'Weight' :
-// $thisBorder['style'] = $borderStyleValue;
- break;
- case 'Position' :
- $borderPosition = strtolower($borderStyleValue);
- break;
- case 'Color' :
- $borderColour = substr($borderStyleValue,1);
- $thisBorder['color']['rgb'] = $borderColour;
- break;
- }
- }
- if (!empty($thisBorder)) {
- if (($borderPosition == 'left') || ($borderPosition == 'right') || ($borderPosition == 'top') || ($borderPosition == 'bottom')) {
- $this->_styles[$styleID]['borders'][$borderPosition] = $thisBorder;
- }
- }
- }
- break;
- case 'Font' :
- foreach($styleAttributes as $styleAttributeKey => $styleAttributeValue) {
-// echo $styleAttributeKey.' = '.$styleAttributeValue.'<br />';
- $styleAttributeValue = (string) $styleAttributeValue;
- switch ($styleAttributeKey) {
- case 'FontName' :
- $this->_styles[$styleID]['font']['name'] = $styleAttributeValue;
- break;
- case 'Size' :
- $this->_styles[$styleID]['font']['size'] = $styleAttributeValue;
- break;
- case 'Color' :
- $this->_styles[$styleID]['font']['color']['rgb'] = substr($styleAttributeValue,1);
- break;
- case 'Bold' :
- $this->_styles[$styleID]['font']['bold'] = true;
- break;
- case 'Italic' :
- $this->_styles[$styleID]['font']['italic'] = true;
- break;
- case 'Underline' :
- if (self::identifyFixedStyleValue($underlineStyles,$styleAttributeValue)) {
- $this->_styles[$styleID]['font']['underline'] = $styleAttributeValue;
- }
- break;
- }
- }
- break;
- case 'Interior' :
- foreach($styleAttributes as $styleAttributeKey => $styleAttributeValue) {
-// echo $styleAttributeKey.' = '.$styleAttributeValue.'<br />';
- switch ($styleAttributeKey) {
- case 'Color' :
- $this->_styles[$styleID]['fill']['color']['rgb'] = substr($styleAttributeValue,1);
- break;
- }
- }
- break;
- case 'NumberFormat' :
- foreach($styleAttributes as $styleAttributeKey => $styleAttributeValue) {
-// echo $styleAttributeKey.' = '.$styleAttributeValue.'<br />';
- $styleAttributeValue = str_replace($fromFormats,$toFormats,$styleAttributeValue);
- switch ($styleAttributeValue) {
- case 'Short Date' :
- $styleAttributeValue = 'dd/mm/yyyy';
- break;
- }
- if ($styleAttributeValue > '') {
- $this->_styles[$styleID]['numberformat']['code'] = $styleAttributeValue;
- }
- }
- break;
- case 'Protection' :
- foreach($styleAttributes as $styleAttributeKey => $styleAttributeValue) {
-// echo $styleAttributeKey.' = '.$styleAttributeValue.'<br />';
- }
- break;
- }
- }
-// print_r($this->_styles[$styleID]);
-// echo '<hr />';
- }
-// echo '<hr />';
-
- $worksheetID = 0;
- $xml_ss = $xml->children($namespaces['ss']);
-
- foreach($xml_ss->Worksheet as $worksheet) {
- $worksheet_ss = $worksheet->attributes($namespaces['ss']);
-
- if ((isset($this->_loadSheetsOnly)) && (isset($worksheet_ss['Name'])) &&
- (!in_array($worksheet_ss['Name'], $this->_loadSheetsOnly))) {
- continue;
- }
-
-// echo '<h3>Worksheet: ',$worksheet_ss['Name'],'<h3>';
-//
- // Create new Worksheet
- $objPHPExcel->createSheet();
- $objPHPExcel->setActiveSheetIndex($worksheetID);
- if (isset($worksheet_ss['Name'])) {
- $worksheetName = self::_convertStringEncoding((string) $worksheet_ss['Name'],$this->_charSet);
- // Use false for $updateFormulaCellReferences to prevent adjustment of worksheet references in
- // formula cells... during the load, all formulae should be correct, and we're simply bringing
- // the worksheet name in line with the formula, not the reverse
- $objPHPExcel->getActiveSheet()->setTitle($worksheetName,false);
- }
-
- $columnID = 'A';
- if (isset($worksheet->Table->Column)) {
- foreach($worksheet->Table->Column as $columnData) {
- $columnData_ss = $columnData->attributes($namespaces['ss']);
- if (isset($columnData_ss['Index'])) {
- $columnID = PHPExcel_Cell::stringFromColumnIndex($columnData_ss['Index']-1);
- }
- if (isset($columnData_ss['Width'])) {
- $columnWidth = $columnData_ss['Width'];
-// echo '<b>Setting column width for '.$columnID.' to '.$columnWidth.'</b><br />';
- $objPHPExcel->getActiveSheet()->getColumnDimension($columnID)->setWidth($columnWidth / 5.4);
- }
- ++$columnID;
- }
- }
-
- $rowID = 1;
- if (isset($worksheet->Table->Row)) {
- foreach($worksheet->Table->Row as $rowData) {
- $rowHasData = false;
- $row_ss = $rowData->attributes($namespaces['ss']);
- if (isset($row_ss['Index'])) {
- $rowID = (integer) $row_ss['Index'];
- }
-// echo '<b>Row '.$rowID.'</b><br />';
-
- $columnID = 'A';
- foreach($rowData->Cell as $cell) {
-
- $cell_ss = $cell->attributes($namespaces['ss']);
- if (isset($cell_ss['Index'])) {
- $columnID = PHPExcel_Cell::stringFromColumnIndex($cell_ss['Index']-1);
- }
- $cellRange = $columnID.$rowID;
-
- if ($this->getReadFilter() !== NULL) {
- if (!$this->getReadFilter()->readCell($columnID, $rowID, $worksheetName)) {
- continue;
- }
- }
-
- if ((isset($cell_ss['MergeAcross'])) || (isset($cell_ss['MergeDown']))) {
- $columnTo = $columnID;
- if (isset($cell_ss['MergeAcross'])) {
- $columnTo = PHPExcel_Cell::stringFromColumnIndex(PHPExcel_Cell::columnIndexFromString($columnID) + $cell_ss['MergeAcross'] -1);
- }
- $rowTo = $rowID;
- if (isset($cell_ss['MergeDown'])) {
- $rowTo = $rowTo + $cell_ss['MergeDown'];
- }
- $cellRange .= ':'.$columnTo.$rowTo;
- $objPHPExcel->getActiveSheet()->mergeCells($cellRange);
- }
-
- $cellIsSet = $hasCalculatedValue = false;
- $cellDataFormula = '';
- if (isset($cell_ss['Formula'])) {
- $cellDataFormula = $cell_ss['Formula'];
- // added this as a check for array formulas
- if (isset($cell_ss['ArrayRange'])) {
- $cellDataCSEFormula = $cell_ss['ArrayRange'];
-// echo "found an array formula at ".$columnID.$rowID."<br />";
- }
- $hasCalculatedValue = true;
- }
- if (isset($cell->Data)) {
- $cellValue = $cellData = $cell->Data;
- $type = PHPExcel_Cell_DataType::TYPE_NULL;
- $cellData_ss = $cellData->attributes($namespaces['ss']);
- if (isset($cellData_ss['Type'])) {
- $cellDataType = $cellData_ss['Type'];
- switch ($cellDataType) {
- /*
- const TYPE_STRING = 's';
- const TYPE_FORMULA = 'f';
- const TYPE_NUMERIC = 'n';
- const TYPE_BOOL = 'b';
- const TYPE_NULL = 'null';
- const TYPE_INLINE = 'inlineStr';
- const TYPE_ERROR = 'e';
- */
- case 'String' :
- $cellValue = self::_convertStringEncoding($cellValue,$this->_charSet);
- $type = PHPExcel_Cell_DataType::TYPE_STRING;
- break;
- case 'Number' :
- $type = PHPExcel_Cell_DataType::TYPE_NUMERIC;
- $cellValue = (float) $cellValue;
- if (floor($cellValue) == $cellValue) {
- $cellValue = (integer) $cellValue;
- }
- break;
- case 'Boolean' :
- $type = PHPExcel_Cell_DataType::TYPE_BOOL;
- $cellValue = ($cellValue != 0);
- break;
- case 'DateTime' :
- $type = PHPExcel_Cell_DataType::TYPE_NUMERIC;
- $cellValue = PHPExcel_Shared_Date::PHPToExcel(strtotime($cellValue));
- break;
- case 'Error' :
- $type = PHPExcel_Cell_DataType::TYPE_ERROR;
- break;
- }
- }
-
- if ($hasCalculatedValue) {
-// echo 'FORMULA<br />';
- $type = PHPExcel_Cell_DataType::TYPE_FORMULA;
- $columnNumber = PHPExcel_Cell::columnIndexFromString($columnID);
- if (substr($cellDataFormula,0,3) == 'of:') {
- $cellDataFormula = substr($cellDataFormula,3);
-// echo 'Before: ',$cellDataFormula,'<br />';
- $temp = explode('"',$cellDataFormula);
- $key = false;
- foreach($temp as &$value) {
- // Only replace in alternate array entries (i.e. non-quoted blocks)
- if ($key = !$key) {
- $value = str_replace(array('[.','.',']'),'',$value);
- }
- }
- } else {
- // Convert R1C1 style references to A1 style references (but only when not quoted)
-// echo 'Before: ',$cellDataFormula,'<br />';
- $temp = explode('"',$cellDataFormula);
- $key = false;
- foreach($temp as &$value) {
- // Only replace in alternate array entries (i.e. non-quoted blocks)
- if ($key = !$key) {
- preg_match_all('/(R(\[?-?\d*\]?))(C(\[?-?\d*\]?))/',$value, $cellReferences,PREG_SET_ORDER+PREG_OFFSET_CAPTURE);
- // Reverse the matches array, otherwise all our offsets will become incorrect if we modify our way
- // through the formula from left to right. Reversing means that we work right to left.through
- // the formula
- $cellReferences = array_reverse($cellReferences);
- // Loop through each R1C1 style reference in turn, converting it to its A1 style equivalent,
- // then modify the formula to use that new reference
- foreach($cellReferences as $cellReference) {
- $rowReference = $cellReference[2][0];
- // Empty R reference is the current row
- if ($rowReference == '') $rowReference = $rowID;
- // Bracketed R references are relative to the current row
- if ($rowReference{0} == '[') $rowReference = $rowID + trim($rowReference,'[]');
- $columnReference = $cellReference[4][0];
- // Empty C reference is the current column
- if ($columnReference == '') $columnReference = $columnNumber;
- // Bracketed C references are relative to the current column
- if ($columnReference{0} == '[') $columnReference = $columnNumber + trim($columnReference,'[]');
- $A1CellReference = PHPExcel_Cell::stringFromColumnIndex($columnReference-1).$rowReference;
- $value = substr_replace($value,$A1CellReference,$cellReference[0][1],strlen($cellReference[0][0]));
- }
- }
- }
- }
- unset($value);
- // Then rebuild the formula string
- $cellDataFormula = implode('"',$temp);
-// echo 'After: ',$cellDataFormula,'<br />';
- }
-
-// echo 'Cell '.$columnID.$rowID.' is a '.$type.' with a value of '.(($hasCalculatedValue) ? $cellDataFormula : $cellValue).'<br />';
-//
- $objPHPExcel->getActiveSheet()->getCell($columnID.$rowID)->setValueExplicit((($hasCalculatedValue) ? $cellDataFormula : $cellValue),$type);
- if ($hasCalculatedValue) {
-// echo 'Formula result is '.$cellValue.'<br />';
- $objPHPExcel->getActiveSheet()->getCell($columnID.$rowID)->setCalculatedValue($cellValue);
- }
- $cellIsSet = $rowHasData = true;
- }
-
- if (isset($cell->Comment)) {
-// echo '<b>comment found</b><br />';
- $commentAttributes = $cell->Comment->attributes($namespaces['ss']);
- $author = 'unknown';
- if (isset($commentAttributes->Author)) {
- $author = (string)$commentAttributes->Author;
-// echo 'Author: ',$author,'<br />';
- }
- $node = $cell->Comment->Data->asXML();
-// $annotation = str_replace('html:','',substr($node,49,-10));
-// echo $annotation,'<br />';
- $annotation = strip_tags($node);
-// echo 'Annotation: ',$annotation,'<br />';
- $objPHPExcel->getActiveSheet()->getComment( $columnID.$rowID )
- ->setAuthor(self::_convertStringEncoding($author ,$this->_charSet))
- ->setText($this->_parseRichText($annotation) );
- }
-
- if (($cellIsSet) && (isset($cell_ss['StyleID']))) {
- $style = (string) $cell_ss['StyleID'];
-// echo 'Cell style for '.$columnID.$rowID.' is '.$style.'<br />';
- if ((isset($this->_styles[$style])) && (!empty($this->_styles[$style]))) {
-// echo 'Cell '.$columnID.$rowID.'<br />';
-// print_r($this->_styles[$style]);
-// echo '<br />';
- if (!$objPHPExcel->getActiveSheet()->cellExists($columnID.$rowID)) {
- $objPHPExcel->getActiveSheet()->getCell($columnID.$rowID)->setValue(NULL);
- }
- $objPHPExcel->getActiveSheet()->getStyle($cellRange)->applyFromArray($this->_styles[$style]);
- }
- }
- ++$columnID;
- }
-
- if ($rowHasData) {
- if (isset($row_ss['StyleID'])) {
- $rowStyle = $row_ss['StyleID'];
- }
- if (isset($row_ss['Height'])) {
- $rowHeight = $row_ss['Height'];
-// echo '<b>Setting row height to '.$rowHeight.'</b><br />';
- $objPHPExcel->getActiveSheet()->getRowDimension($rowID)->setRowHeight($rowHeight);
- }
- }
-
- ++$rowID;
- }
- }
- ++$worksheetID;
- }
-
- // Return
- return $objPHPExcel;
- }
-
-
- private static function _convertStringEncoding($string,$charset) {
- if ($charset != 'UTF-8') {
- return PHPExcel_Shared_String::ConvertEncoding($string,'UTF-8',$charset);
- }
- return $string;
- }
-
-
- private function _parseRichText($is = '') {
- $value = new PHPExcel_RichText();
-
- $value->createText(self::_convertStringEncoding($is,$this->_charSet));
-
- return $value;
- }
-
-}
diff --git a/admin/survey/excel/PHPExcel/Reader/Excel2007.php b/admin/survey/excel/PHPExcel/Reader/Excel2007.php
deleted file mode 100644
index 9494a0e..0000000
--- a/admin/survey/excel/PHPExcel/Reader/Excel2007.php
+++ /dev/null
@@ -1,2112 +0,0 @@
-<?php
-/**
- * PHPExcel
- *
- * Copyright (c) 2006 - 2012 PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel_Reader
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-
-/** PHPExcel root directory */
-if (!defined('PHPEXCEL_ROOT')) {
- /**
- * @ignore
- */
- define('PHPEXCEL_ROOT', dirname(__FILE__) . '/../../');
- require(PHPEXCEL_ROOT . 'PHPExcel/Autoloader.php');
-}
-
-/**
- * PHPExcel_Reader_Excel2007
- *
- * @category PHPExcel
- * @package PHPExcel_Reader
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- */
-class PHPExcel_Reader_Excel2007 implements PHPExcel_Reader_IReader
-{
- /**
- * Read data only?
- * Identifies whether the Reader should only read data values for cells, and ignore any formatting information;
- * or whether it should read both data and formatting
- *
- * @var boolean
- */
- private $_readDataOnly = FALSE;
-
- /**
- * Read charts that are defined in the workbook?
- * Identifies whether the Reader should read the definitions for any charts that exist in the workbook;
- *
- * @var boolean
- */
- private $_includeCharts = FALSE;
-
- /**
- * Restrict which sheets should be loaded?
- * This property holds an array of worksheet names to be loaded. If null, then all worksheets will be loaded.
- *
- * @var array of string
- */
- private $_loadSheetsOnly = NULL;
-
- /**
- * PHPExcel_Reader_IReadFilter instance
- *
- * @var PHPExcel_Reader_IReadFilter
- */
- private $_readFilter = NULL;
-
- /**
- * PHPExcel_ReferenceHelper instance
- *
- * @var PHPExcel_ReferenceHelper
- */
- private $_referenceHelper = NULL;
-
- /**
- * PHPExcel_Reader_Excel2007_Theme instance
- *
- * @var PHPExcel_Reader_Excel2007_Theme
- */
- private static $_theme = NULL;
-
-
- /**
- * Create a new PHPExcel_Reader_Excel2007 instance
- */
- public function __construct() {
- $this->_readFilter = new PHPExcel_Reader_DefaultReadFilter();
- $this->_referenceHelper = PHPExcel_ReferenceHelper::getInstance();
- }
-
-
- /**
- * Read data only?
- * If this is true, then the Reader will only read data values for cells, it will not read any formatting information.
- * If false (the default) it will read data and formatting.
- *
- * @return boolean
- */
- public function getReadDataOnly() {
- return $this->_readDataOnly;
- }
-
-
- /**
- * Set read data only
- * Set to true, to advise the Reader only to read data values for cells, and to ignore any formatting information.
- * Set to false (the default) to advise the Reader to read both data and formatting for cells.
- *
- * @param boolean $pValue
- *
- * @return PHPExcel_Reader_Excel2007
- */
- public function setReadDataOnly($pValue = FALSE) {
- $this->_readDataOnly = $pValue;
- return $this;
- }
-
-
- /**
- * Read charts in workbook?
- * If this is true, then the Reader will include any charts that exist in the workbook.
- * Note that a ReadDataOnly value of false overrides, and charts won't be read regardless of the IncludeCharts value.
- * If false (the default) it will ignore any charts defined in the workbook file.
- *
- * @return boolean
- */
- public function getIncludeCharts() {
- return $this->_includeCharts;
- }
-
-
- /**
- * Set read charts in workbook
- * Set to true, to advise the Reader to include any charts that exist in the workbook.
- * Note that a ReadDataOnly value of false overrides, and charts won't be read regardless of the IncludeCharts value.
- * Set to false (the default) to discard charts.
- *
- * @param boolean $pValue
- *
- * @return PHPExcel_Reader_Excel2007
- */
- public function setIncludeCharts($pValue = FALSE) {
- $this->_includeCharts = (boolean) $pValue;
- return $this;
- }
-
-
- /**
- * Get which sheets to load
- * Returns either an array of worksheet names (the list of worksheets that should be loaded), or a null
- * indicating that all worksheets in the workbook should be loaded.
- *
- * @return mixed
- */
- public function getLoadSheetsOnly()
- {
- return $this->_loadSheetsOnly;
- }
-
-
- /**
- * Set which sheets to load
- *
- * @param mixed $value
- * This should be either an array of worksheet names to be loaded, or a string containing a single worksheet name.
- * If NULL, then it tells the Reader to read all worksheets in the workbook
- *
- * @return PHPExcel_Reader_Excel2007
- */
- public function setLoadSheetsOnly($value = NULL)
- {
- $this->_loadSheetsOnly = is_array($value) ?
- $value : array($value);
- return $this;
- }
-
-
- /**
- * Set all sheets to load
- * Tells the Reader to load all worksheets from the workbook.
- *
- * @return PHPExcel_Reader_Excel2007
- */
- public function setLoadAllSheets()
- {
- $this->_loadSheetsOnly = NULL;
- return $this;
- }
-
-
- /**
- * Read filter
- *
- * @return PHPExcel_Reader_IReadFilter
- */
- public function getReadFilter() {
- return $this->_readFilter;
- }
-
-
- /**
- * Set read filter
- *
- * @param PHPExcel_Reader_IReadFilter $pValue
- * @return PHPExcel_Reader_Excel2007
- */
- public function setReadFilter(PHPExcel_Reader_IReadFilter $pValue) {
- $this->_readFilter = $pValue;
- return $this;
- }
-
-
- /**
- * Can the current PHPExcel_Reader_IReader read the file?
- *
- * @param string $pFileName
- * @return boolean
- * @throws Exception
- */
- public function canRead($pFilename)
- {
- // Check if file exists
- if (!file_exists($pFilename)) {
- throw new Exception("Could not open " . $pFilename . " for reading! File does not exist.");
- }
-
- // Check if zip class exists
- if (!class_exists('ZipArchive',FALSE)) {
- throw new Exception("ZipArchive library is not enabled");
- }
-
- $xl = false;
- // Load file
- $zip = new ZipArchive;
- if ($zip->open($pFilename) === true) {
- // check if it is an OOXML archive
- $rels = simplexml_load_string($this->_getFromZipArchive($zip, "_rels/.rels"));
- if ($rels !== false) {
- foreach ($rels->Relationship as $rel) {
- switch ($rel["Type"]) {
- case "http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument":
- if (basename($rel["Target"]) == 'workbook.xml') {
- $xl = true;
- }
- break;
-
- }
- }
- }
- $zip->close();
- }
-
- return $xl;
- }
-
-
- /**
- * Return worksheet info (Name, Last Column Letter, Last Column Index, Total Rows, Total Columns)
- *
- * @param string $pFilename
- * @throws Exception
- */
- public function listWorksheetInfo($pFilename)
- {
- // Check if file exists
- if (!file_exists($pFilename)) {
- throw new Exception("Could not open " . $pFilename . " for reading! File does not exist.");
- }
-
- $worksheetInfo = array();
-
- $zip = new ZipArchive;
- $zip->open($pFilename);
-
- $rels = simplexml_load_string($this->_getFromZipArchive($zip, "_rels/.rels")); //~ http://schemas.openxmlformats.org/package/2006/relationships");
- foreach ($rels->Relationship as $rel) {
- if ($rel["Type"] == "http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument") {
- $dir = dirname($rel["Target"]);
- $relsWorkbook = simplexml_load_string($this->_getFromZipArchive($zip, "$dir/_rels/" . basename($rel["Target"]) . ".rels")); //~ http://schemas.openxmlformats.org/package/2006/relationships");
- $relsWorkbook->registerXPathNamespace("rel", "http://schemas.openxmlformats.org/package/2006/relationships");
-
- $worksheets = array();
- foreach ($relsWorkbook->Relationship as $ele) {
- if ($ele["Type"] == "http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet") {
- $worksheets[(string) $ele["Id"]] = $ele["Target"];
- }
- }
-
- $xmlWorkbook = simplexml_load_string($this->_getFromZipArchive($zip, "{$rel['Target']}")); //~ http://schemas.openxmlformats.org/spreadsheetml/2006/main");
- if ($xmlWorkbook->sheets) {
- $dir = dirname($rel["Target"]);
- foreach ($xmlWorkbook->sheets->sheet as $eleSheet) {
- $tmpInfo = array();
- $tmpInfo['worksheetName'] = (string) $eleSheet["name"];
- $tmpInfo['lastColumnLetter'] = 'A';
- $tmpInfo['lastColumnIndex'] = 0;
- $tmpInfo['totalRows'] = 0;
- $tmpInfo['totalColumns'] = 0;
-
- $fileWorksheet = $worksheets[(string) self::array_item($eleSheet->attributes("http://schemas.openxmlformats.org/officeDocument/2006/relationships"), "id")];
- $xmlSheet = simplexml_load_string($this->_getFromZipArchive($zip, "$dir/$fileWorksheet")); //~ http://schemas.openxmlformats.org/spreadsheetml/2006/main");
- if ($xmlSheet && $xmlSheet->sheetData && $xmlSheet->sheetData->row) {
- foreach ($xmlSheet->sheetData->row as $row) {
- foreach ($row->c as $c) {
- $r = (string) $c["r"];
- $coordinates = PHPExcel_Cell::coordinateFromString($r);
-
- $rowIndex = $coordinates[1];
- $columnIndex = PHPExcel_Cell::columnIndexFromString($coordinates[0]) - 1;
-
- $tmpInfo['totalRows'] = max($tmpInfo['totalRows'], $rowIndex);
- $tmpInfo['lastColumnIndex'] = max($tmpInfo['lastColumnIndex'], $columnIndex);
- }
- }
- }
-
- $tmpInfo['lastColumnLetter'] = PHPExcel_Cell::stringFromColumnIndex($tmpInfo['lastColumnIndex']);
- $tmpInfo['totalColumns'] = $tmpInfo['lastColumnIndex'] + 1;
-
- $worksheetInfo[] = $tmpInfo;
- }
- }
- }
- }
-
- $zip->close();
-
- return $worksheetInfo;
- }
-
-
- private static function _castToBool($c) {
-// echo 'Initial Cast to Boolean<br />';
- $value = isset($c->v) ? (string) $c->v : NULL;
- if ($value == '0') {
- return FALSE;
- } elseif ($value == '1') {
- return TRUE;
- } else {
- return (bool)$c->v;
- }
- return $value;
- } // function _castToBool()
-
-
- private static function _castToError($c) {
-// echo 'Initial Cast to Error<br />';
- return isset($c->v) ? (string) $c->v : NULL;
- } // function _castToError()
-
-
- private static function _castToString($c) {
-// echo 'Initial Cast to String<br />';
- return isset($c->v) ? (string) $c->v : NULL;
- } // function _castToString()
-
-
- private function _castToFormula($c,$r,&$cellDataType,&$value,&$calculatedValue,&$sharedFormulas,$castBaseType) {
-// echo 'Formula<br />';
-// echo '$c->f is '.$c->f.'<br />';
- $cellDataType = 'f';
- $value = "={$c->f}";
- $calculatedValue = self::$castBaseType($c);
-
- // Shared formula?
- if (isset($c->f['t']) && strtolower((string)$c->f['t']) == 'shared') {
-// echo 'SHARED FORMULA<br />';
- $instance = (string)$c->f['si'];
-
-// echo 'Instance ID = '.$instance.'<br />';
-//
-// echo 'Shared Formula Array:<pre>';
-// print_r($sharedFormulas);
-// echo '</pre>';
- if (!isset($sharedFormulas[(string)$c->f['si']])) {
-// echo 'SETTING NEW SHARED FORMULA<br />';
-// echo 'Master is '.$r.'<br />';
-// echo 'Formula is '.$value.'<br />';
- $sharedFormulas[$instance] = array( 'master' => $r,
- 'formula' => $value
- );
-// echo 'New Shared Formula Array:<pre>';
-// print_r($sharedFormulas);
-// echo '</pre>';
- } else {
-// echo 'GETTING SHARED FORMULA<br />';
-// echo 'Master is '.$sharedFormulas[$instance]['master'].'<br />';
-// echo 'Formula is '.$sharedFormulas[$instance]['formula'].'<br />';
- $master = PHPExcel_Cell::coordinateFromString($sharedFormulas[$instance]['master']);
- $current = PHPExcel_Cell::coordinateFromString($r);
-
- $difference = array(0, 0);
- $difference[0] = PHPExcel_Cell::columnIndexFromString($current[0]) - PHPExcel_Cell::columnIndexFromString($master[0]);
- $difference[1] = $current[1] - $master[1];
-
- $value = $this->_referenceHelper->updateFormulaReferences( $sharedFormulas[$instance]['formula'],
- 'A1',
- $difference[0],
- $difference[1]
- );
-// echo 'Adjusted Formula is '.$value.'<br />';
- }
- }
- }
-
-
- public function _getFromZipArchive(ZipArchive $archive, $fileName = '')
- {
- // Root-relative paths
- if (strpos($fileName, '//') !== false)
- {
- $fileName = substr($fileName, strpos($fileName, '//') + 1);
- }
- $fileName = PHPExcel_Shared_File::realpath($fileName);
-
- // Apache POI fixes
- $contents = $archive->getFromName($fileName);
- if ($contents === false)
- {
- $contents = $archive->getFromName(substr($fileName, 1));
- }
-
- return $contents;
- }
-
-
- /**
- * Reads names of the worksheets from a file, without parsing the whole file to a PHPExcel object
- *
- * @param string $pFilename
- * @throws Exception
- */
- public function listWorksheetNames($pFilename)
- {
- // Check if file exists
- if (!file_exists($pFilename)) {
- throw new Exception("Could not open " . $pFilename . " for reading! File does not exist.");
- }
-
- $worksheetNames = array();
-
- $zip = new ZipArchive;
- $zip->open($pFilename);
-
- $rels = simplexml_load_string($this->_getFromZipArchive($zip, "_rels/.rels")); //~ http://schemas.openxmlformats.org/package/2006/relationships");
- foreach ($rels->Relationship as $rel) {
- switch ($rel["Type"]) {
- case "http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument":
- $xmlWorkbook = simplexml_load_string($this->_getFromZipArchive($zip, "{$rel['Target']}")); //~ http://schemas.openxmlformats.org/spreadsheetml/2006/main");
-
- if ($xmlWorkbook->sheets) {
- foreach ($xmlWorkbook->sheets->sheet as $eleSheet) {
- // Check if sheet should be skipped
- $worksheetNames[] = (string) $eleSheet["name"];
- }
- }
- }
- }
-
- $zip->close();
-
- return $worksheetNames;
- }
-
-
- /**
- * Loads PHPExcel from file
- *
- * @param string $pFilename
- * @throws Exception
- */
- public function load($pFilename)
- {
- // Check if file exists
- if (!file_exists($pFilename)) {
- throw new Exception("Could not open " . $pFilename . " for reading! File does not exist.");
- }
-
- // Initialisations
- $excel = new PHPExcel;
- $excel->removeSheetByIndex(0);
- if (!$this->_readDataOnly) {
- $excel->removeCellStyleXfByIndex(0); // remove the default style
- $excel->removeCellXfByIndex(0); // remove the default style
- }
- $zip = new ZipArchive;
- $zip->open($pFilename);
-
- // Read the theme first, because we need the colour scheme when reading the styles
- $wbRels = simplexml_load_string($this->_getFromZipArchive($zip, "xl/_rels/workbook.xml.rels")); //~ http://schemas.openxmlformats.org/package/2006/relationships");
- foreach ($wbRels->Relationship as $rel) {
- switch ($rel["Type"]) {
- case "http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme":
- $themeOrderArray = array('lt1','dk1','lt2','dk2');
- $themeOrderAdditional = count($themeOrderArray);
-
- $xmlTheme = simplexml_load_string($this->_getFromZipArchive($zip, "xl/{$rel['Target']}"));
- if (is_object($xmlTheme)) {
- $xmlThemeName = $xmlTheme->attributes();
- $xmlTheme = $xmlTheme->children("http://schemas.openxmlformats.org/drawingml/2006/main");
- $themeName = (string)$xmlThemeName['name'];
-
- $colourScheme = $xmlTheme->themeElements->clrScheme->attributes();
- $colourSchemeName = (string)$colourScheme['name'];
- $colourScheme = $xmlTheme->themeElements->clrScheme->children("http://schemas.openxmlformats.org/drawingml/2006/main");
-
- $themeColours = array();
- foreach ($colourScheme as $k => $xmlColour) {
- $themePos = array_search($k,$themeOrderArray);
- if ($themePos === false) {
- $themePos = $themeOrderAdditional++;
- }
- if (isset($xmlColour->sysClr)) {
- $xmlColourData = $xmlColour->sysClr->attributes();
- $themeColours[$themePos] = $xmlColourData['lastClr'];
- } elseif (isset($xmlColour->srgbClr)) {
- $xmlColourData = $xmlColour->srgbClr->attributes();
- $themeColours[$themePos] = $xmlColourData['val'];
- }
- }
- self::$_theme = new PHPExcel_Reader_Excel2007_Theme($themeName,$colourSchemeName,$themeColours);
- }
- break;
- }
- }
-
- $rels = simplexml_load_string($this->_getFromZipArchive($zip, "_rels/.rels")); //~ http://schemas.openxmlformats.org/package/2006/relationships");
- foreach ($rels->Relationship as $rel) {
- switch ($rel["Type"]) {
- case "http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties":
- $xmlCore = simplexml_load_string($this->_getFromZipArchive($zip, "{$rel['Target']}"));
- if (is_object($xmlCore)) {
- $xmlCore->registerXPathNamespace("dc", "http://purl.org/dc/elements/1.1/");
- $xmlCore->registerXPathNamespace("dcterms", "http://purl.org/dc/terms/");
- $xmlCore->registerXPathNamespace("cp", "http://schemas.openxmlformats.org/package/2006/metadata/core-properties");
- $docProps = $excel->getProperties();
- $docProps->setCreator((string) self::array_item($xmlCore->xpath("dc:creator")));
- $docProps->setLastModifiedBy((string) self::array_item($xmlCore->xpath("cp:lastModifiedBy")));
- $docProps->setCreated(strtotime(self::array_item($xmlCore->xpath("dcterms:created")))); //! respect xsi:type
- $docProps->setModified(strtotime(self::array_item($xmlCore->xpath("dcterms:modified")))); //! respect xsi:type
- $docProps->setTitle((string) self::array_item($xmlCore->xpath("dc:title")));
- $docProps->setDescription((string) self::array_item($xmlCore->xpath("dc:description")));
- $docProps->setSubject((string) self::array_item($xmlCore->xpath("dc:subject")));
- $docProps->setKeywords((string) self::array_item($xmlCore->xpath("cp:keywords")));
- $docProps->setCategory((string) self::array_item($xmlCore->xpath("cp:category")));
- }
- break;
-
- case "http://schemas.openxmlformats.org/officeDocument/2006/relationships/extended-properties":
- $xmlCore = simplexml_load_string($this->_getFromZipArchive($zip, "{$rel['Target']}"));
- if (is_object($xmlCore)) {
- $docProps = $excel->getProperties();
- if (isset($xmlCore->Company))
- $docProps->setCompany((string) $xmlCore->Company);
- if (isset($xmlCore->Manager))
- $docProps->setManager((string) $xmlCore->Manager);
- }
- break;
-
- case "http://schemas.openxmlformats.org/officeDocument/2006/relationships/custom-properties":
- $xmlCore = simplexml_load_string($this->_getFromZipArchive($zip, "{$rel['Target']}"));
- if (is_object($xmlCore)) {
- $docProps = $excel->getProperties();
- foreach ($xmlCore as $xmlProperty) {
- $cellDataOfficeAttributes = $xmlProperty->attributes();
- if (isset($cellDataOfficeAttributes['name'])) {
- $propertyName = (string) $cellDataOfficeAttributes['name'];
- $cellDataOfficeChildren = $xmlProperty->children('http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes');
- $attributeType = $cellDataOfficeChildren->getName();
- $attributeValue = (string) $cellDataOfficeChildren->{$attributeType};
- $attributeValue = PHPExcel_DocumentProperties::convertProperty($attributeValue,$attributeType);
- $attributeType = PHPExcel_DocumentProperties::convertPropertyType($attributeType);
- $docProps->setCustomProperty($propertyName,$attributeValue,$attributeType);
- }
- }
- }
- break;
-
- case "http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument":
- $dir = dirname($rel["Target"]);
- $relsWorkbook = simplexml_load_string($this->_getFromZipArchive($zip, "$dir/_rels/" . basename($rel["Target"]) . ".rels")); //~ http://schemas.openxmlformats.org/package/2006/relationships");
- $relsWorkbook->registerXPathNamespace("rel", "http://schemas.openxmlformats.org/package/2006/relationships");
-
- $sharedStrings = array();
- $xpath = self::array_item($relsWorkbook->xpath("rel:Relationship[@Type='http://schemas.openxmlformats.org/officeDocument/2006/relationships/sharedStrings']"));
- $xmlStrings = simplexml_load_string($this->_getFromZipArchive($zip, "$dir/$xpath[Target]")); //~ http://schemas.openxmlformats.org/spreadsheetml/2006/main");
- if (isset($xmlStrings) && isset($xmlStrings->si)) {
- foreach ($xmlStrings->si as $val) {
- if (isset($val->t)) {
- $sharedStrings[] = PHPExcel_Shared_String::ControlCharacterOOXML2PHP( (string) $val->t );
- } elseif (isset($val->r)) {
- $sharedStrings[] = $this->_parseRichText($val);
- }
- }
- }
-
- $worksheets = array();
- foreach ($relsWorkbook->Relationship as $ele) {
- if ($ele["Type"] == "http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet") {
- $worksheets[(string) $ele["Id"]] = $ele["Target"];
- }
- }
-
- $styles = array();
- $cellStyles = array();
- $xpath = self::array_item($relsWorkbook->xpath("rel:Relationship[@Type='http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles']"));
- $xmlStyles = simplexml_load_string($this->_getFromZipArchive($zip, "$dir/$xpath[Target]")); //~ http://schemas.openxmlformats.org/spreadsheetml/2006/main");
- $numFmts = null;
- if ($xmlStyles && $xmlStyles->numFmts[0]) {
- $numFmts = $xmlStyles->numFmts[0];
- }
- if (isset($numFmts) && ($numFmts !== NULL)) {
- $numFmts->registerXPathNamespace("sml", "http://schemas.openxmlformats.org/spreadsheetml/2006/main");
- }
- if (!$this->_readDataOnly && $xmlStyles) {
- foreach ($xmlStyles->cellXfs->xf as $xf) {
- $numFmt = PHPExcel_Style_NumberFormat::FORMAT_GENERAL;
-
- if ($xf["numFmtId"]) {
- if (isset($numFmts)) {
- $tmpNumFmt = self::array_item($numFmts->xpath("sml:numFmt[@numFmtId=$xf[numFmtId]]"));
-
- if (isset($tmpNumFmt["formatCode"])) {
- $numFmt = (string) $tmpNumFmt["formatCode"];
- }
- }
-
- if ((int)$xf["numFmtId"] < 164) {
- $numFmt = PHPExcel_Style_NumberFormat::builtInFormatCode((int)$xf["numFmtId"]);
- }
- }
- //$numFmt = str_replace('mm', 'i', $numFmt);
- //$numFmt = str_replace('h', 'H', $numFmt);
-
- $style = (object) array(
- "numFmt" => $numFmt,
- "font" => $xmlStyles->fonts->font[intval($xf["fontId"])],
- "fill" => $xmlStyles->fills->fill[intval($xf["fillId"])],
- "border" => $xmlStyles->borders->border[intval($xf["borderId"])],
- "alignment" => $xf->alignment,
- "protection" => $xf->protection,
- );
- $styles[] = $style;
-
- // add style to cellXf collection
- $objStyle = new PHPExcel_Style;
- self::_readStyle($objStyle, $style);
- $excel->addCellXf($objStyle);
- }
-
- foreach ($xmlStyles->cellStyleXfs->xf as $xf) {
- $numFmt = PHPExcel_Style_NumberFormat::FORMAT_GENERAL;
- if ($numFmts && $xf["numFmtId"]) {
- $tmpNumFmt = self::array_item($numFmts->xpath("sml:numFmt[@numFmtId=$xf[numFmtId]]"));
- if (isset($tmpNumFmt["formatCode"])) {
- $numFmt = (string) $tmpNumFmt["formatCode"];
- } else if ((int)$xf["numFmtId"] < 165) {
- $numFmt = PHPExcel_Style_NumberFormat::builtInFormatCode((int)$xf["numFmtId"]);
- }
- }
-
- $cellStyle = (object) array(
- "numFmt" => $numFmt,
- "font" => $xmlStyles->fonts->font[intval($xf["fontId"])],
- "fill" => $xmlStyles->fills->fill[intval($xf["fillId"])],
- "border" => $xmlStyles->borders->border[intval($xf["borderId"])],
- "alignment" => $xf->alignment,
- "protection" => $xf->protection,
- );
- $cellStyles[] = $cellStyle;
-
- // add style to cellStyleXf collection
- $objStyle = new PHPExcel_Style;
- self::_readStyle($objStyle, $cellStyle);
- $excel->addCellStyleXf($objStyle);
- }
- }
-
- $dxfs = array();
- if (!$this->_readDataOnly && $xmlStyles) {
- // Conditional Styles
- if ($xmlStyles->dxfs) {
- foreach ($xmlStyles->dxfs->dxf as $dxf) {
- $style = new PHPExcel_Style(FALSE, TRUE);
- self::_readStyle($style, $dxf);
- $dxfs[] = $style;
- }
- }
- // Cell Styles
- if ($xmlStyles->cellStyles) {
- foreach ($xmlStyles->cellStyles->cellStyle as $cellStyle) {
- if (intval($cellStyle['builtinId']) == 0) {
- if (isset($cellStyles[intval($cellStyle['xfId'])])) {
- // Set default style
- $style = new PHPExcel_Style;
- self::_readStyle($style, $cellStyles[intval($cellStyle['xfId'])]);
-
- // normal style, currently not using it for anything
- }
- }
- }
- }
- }
-
- $xmlWorkbook = simplexml_load_string($this->_getFromZipArchive($zip, "{$rel['Target']}")); //~ http://schemas.openxmlformats.org/spreadsheetml/2006/main");
-
- // Set base date
- if ($xmlWorkbook->workbookPr) {
- PHPExcel_Shared_Date::setExcelCalendar(PHPExcel_Shared_Date::CALENDAR_WINDOWS_1900);
- if (isset($xmlWorkbook->workbookPr['date1904'])) {
- $date1904 = (string)$xmlWorkbook->workbookPr['date1904'];
- if ($date1904 == "true" || $date1904 == "1") {
- PHPExcel_Shared_Date::setExcelCalendar(PHPExcel_Shared_Date::CALENDAR_MAC_1904);
- }
- }
- }
-
- $sheetId = 0; // keep track of new sheet id in final workbook
- $oldSheetId = -1; // keep track of old sheet id in final workbook
- $countSkippedSheets = 0; // keep track of number of skipped sheets
- $mapSheetId = array(); // mapping of sheet ids from old to new
-
-
- $charts = $chartDetails = array();
-
- if ($xmlWorkbook->sheets) {
- foreach ($xmlWorkbook->sheets->sheet as $eleSheet) {
- ++$oldSheetId;
-
- // Check if sheet should be skipped
- if (isset($this->_loadSheetsOnly) && !in_array((string) $eleSheet["name"], $this->_loadSheetsOnly)) {
- ++$countSkippedSheets;
- $mapSheetId[$oldSheetId] = null;
- continue;
- }
-
- // Map old sheet id in original workbook to new sheet id.
- // They will differ if loadSheetsOnly() is being used
- $mapSheetId[$oldSheetId] = $oldSheetId - $countSkippedSheets;
-
- // Load sheet
- $docSheet = $excel->createSheet();
- // Use false for $updateFormulaCellReferences to prevent adjustment of worksheet
- // references in formula cells... during the load, all formulae should be correct,
- // and we're simply bringing the worksheet name in line with the formula, not the
- // reverse
- $docSheet->setTitle((string) $eleSheet["name"],false);
- $fileWorksheet = $worksheets[(string) self::array_item($eleSheet->attributes("http://schemas.openxmlformats.org/officeDocument/2006/relationships"), "id")];
- $xmlSheet = simplexml_load_string($this->_getFromZipArchive($zip, "$dir/$fileWorksheet")); //~ http://schemas.openxmlformats.org/spreadsheetml/2006/main");
-
- $sharedFormulas = array();
-
- if (isset($eleSheet["state"]) && (string) $eleSheet["state"] != '') {
- $docSheet->setSheetState( (string) $eleSheet["state"] );
- }
-
- if (isset($xmlSheet->sheetViews) && isset($xmlSheet->sheetViews->sheetView)) {
- if (isset($xmlSheet->sheetViews->sheetView['zoomScale'])) {
- $docSheet->getSheetView()->setZoomScale( intval($xmlSheet->sheetViews->sheetView['zoomScale']) );
- }
-
- if (isset($xmlSheet->sheetViews->sheetView['zoomScaleNormal'])) {
- $docSheet->getSheetView()->setZoomScaleNormal( intval($xmlSheet->sheetViews->sheetView['zoomScaleNormal']) );
- }
-
- if (isset($xmlSheet->sheetViews->sheetView['view'])) {
- $docSheet->getSheetView()->setView((string) $xmlSheet->sheetViews->sheetView['view']);
- }
-
- if (isset($xmlSheet->sheetViews->sheetView['showGridLines'])) {
- $docSheet->setShowGridLines((string)$xmlSheet->sheetViews->sheetView['showGridLines'] ? true : false);
- }
-
- if (isset($xmlSheet->sheetViews->sheetView['showRowColHeaders'])) {
- $docSheet->setShowRowColHeaders((string)$xmlSheet->sheetViews->sheetView['showRowColHeaders'] ? true : false);
- }
-
- if (isset($xmlSheet->sheetViews->sheetView['rightToLeft'])) {
- $docSheet->setRightToLeft((string)$xmlSheet->sheetViews->sheetView['rightToLeft'] ? true : false);
- }
-
- if (isset($xmlSheet->sheetViews->sheetView->pane)) {
- if (isset($xmlSheet->sheetViews->sheetView->pane['topLeftCell'])) {
- $docSheet->freezePane( (string)$xmlSheet->sheetViews->sheetView->pane['topLeftCell'] );
- } else {
- $xSplit = 0;
- $ySplit = 0;
-
- if (isset($xmlSheet->sheetViews->sheetView->pane['xSplit'])) {
- $xSplit = 1 + intval($xmlSheet->sheetViews->sheetView->pane['xSplit']);
- }
-
- if (isset($xmlSheet->sheetViews->sheetView->pane['ySplit'])) {
- $ySplit = 1 + intval($xmlSheet->sheetViews->sheetView->pane['ySplit']);
- }
-
- $docSheet->freezePaneByColumnAndRow($xSplit, $ySplit);
- }
- }
-
- if (isset($xmlSheet->sheetViews->sheetView->selection)) {
- if (isset($xmlSheet->sheetViews->sheetView->selection['sqref'])) {
- $sqref = (string)$xmlSheet->sheetViews->sheetView->selection['sqref'];
- $sqref = explode(' ', $sqref);
- $sqref = $sqref[0];
- $docSheet->setSelectedCells($sqref);
- }
- }
-
- }
-
- if (isset($xmlSheet->sheetPr) && isset($xmlSheet->sheetPr->tabColor)) {
- if (isset($xmlSheet->sheetPr->tabColor['rgb'])) {
- $docSheet->getTabColor()->setARGB( (string)$xmlSheet->sheetPr->tabColor['rgb'] );
- }
- }
-
- if (isset($xmlSheet->sheetPr) && isset($xmlSheet->sheetPr->outlinePr)) {
- if (isset($xmlSheet->sheetPr->outlinePr['summaryRight']) && $xmlSheet->sheetPr->outlinePr['summaryRight'] == false) {
- $docSheet->setShowSummaryRight(false);
- } else {
- $docSheet->setShowSummaryRight(true);
- }
-
- if (isset($xmlSheet->sheetPr->outlinePr['summaryBelow']) && $xmlSheet->sheetPr->outlinePr['summaryBelow'] == false) {
- $docSheet->setShowSummaryBelow(false);
- } else {
- $docSheet->setShowSummaryBelow(true);
- }
- }
-
- if (isset($xmlSheet->sheetPr) && isset($xmlSheet->sheetPr->pageSetUpPr)) {
- if (isset($xmlSheet->sheetPr->pageSetUpPr['fitToPage']) && $xmlSheet->sheetPr->pageSetUpPr['fitToPage'] == false) {
- $docSheet->getPageSetup()->setFitToPage(false);
- } else {
- $docSheet->getPageSetup()->setFitToPage(true);
- }
- }
-
- if (isset($xmlSheet->sheetFormatPr)) {
- if (isset($xmlSheet->sheetFormatPr['customHeight']) && ((string)$xmlSheet->sheetFormatPr['customHeight'] == '1' || strtolower((string)$xmlSheet->sheetFormatPr['customHeight']) == 'true') && isset($xmlSheet->sheetFormatPr['defaultRowHeight'])) {
- $docSheet->getDefaultRowDimension()->setRowHeight( (float)$xmlSheet->sheetFormatPr['defaultRowHeight'] );
- }
- if (isset($xmlSheet->sheetFormatPr['defaultColWidth'])) {
- $docSheet->getDefaultColumnDimension()->setWidth( (float)$xmlSheet->sheetFormatPr['defaultColWidth'] );
- }
- if (isset($xmlSheet->sheetFormatPr['zeroHeight']) &&
- ((string)$xmlSheet->sheetFormatPr['zeroHeight'] == '1')) {
- $docSheet->getDefaultRowDimension()->setzeroHeight(true);
- }
- }
-
- if (isset($xmlSheet->cols) && !$this->_readDataOnly) {
- foreach ($xmlSheet->cols->col as $col) {
- for ($i = intval($col["min"]) - 1; $i < intval($col["max"]); ++$i) {
- if ($col["style"] && !$this->_readDataOnly) {
- $docSheet->getColumnDimension(PHPExcel_Cell::stringFromColumnIndex($i))->setXfIndex(intval($col["style"]));
- }
- if ($col["bestFit"]) {
- //$docSheet->getColumnDimension(PHPExcel_Cell::stringFromColumnIndex($i))->setAutoSize(true);
- }
- if ($col["hidden"]) {
- $docSheet->getColumnDimension(PHPExcel_Cell::stringFromColumnIndex($i))->setVisible(false);
- }
- if ($col["collapsed"]) {
- $docSheet->getColumnDimension(PHPExcel_Cell::stringFromColumnIndex($i))->setCollapsed(true);
- }
- if ($col["outlineLevel"] > 0) {
- $docSheet->getColumnDimension(PHPExcel_Cell::stringFromColumnIndex($i))->setOutlineLevel(intval($col["outlineLevel"]));
- }
- $docSheet->getColumnDimension(PHPExcel_Cell::stringFromColumnIndex($i))->setWidth(floatval($col["width"]));
-
- if (intval($col["max"]) == 16384) {
- break;
- }
- }
- }
- }
-
- if (isset($xmlSheet->printOptions) && !$this->_readDataOnly) {
- if ($xmlSheet->printOptions['gridLinesSet'] == 'true' && $xmlSheet->printOptions['gridLinesSet'] == '1') {
- $docSheet->setShowGridlines(true);
- }
-
- if ($xmlSheet->printOptions['gridLines'] == 'true' || $xmlSheet->printOptions['gridLines'] == '1') {
- $docSheet->setPrintGridlines(true);
- }
-
- if ($xmlSheet->printOptions['horizontalCentered']) {
- $docSheet->getPageSetup()->setHorizontalCentered(true);
- }
- if ($xmlSheet->printOptions['verticalCentered']) {
- $docSheet->getPageSetup()->setVerticalCentered(true);
- }
- }
-
- if ($xmlSheet && $xmlSheet->sheetData && $xmlSheet->sheetData->row) {
- foreach ($xmlSheet->sheetData->row as $row) {
- if ($row["ht"] && !$this->_readDataOnly) {
- $docSheet->getRowDimension(intval($row["r"]))->setRowHeight(floatval($row["ht"]));
- }
- if ($row["hidden"] && !$this->_readDataOnly) {
- $docSheet->getRowDimension(intval($row["r"]))->setVisible(false);
- }
- if ($row["collapsed"]) {
- $docSheet->getRowDimension(intval($row["r"]))->setCollapsed(true);
- }
- if ($row["outlineLevel"] > 0) {
- $docSheet->getRowDimension(intval($row["r"]))->setOutlineLevel(intval($row["outlineLevel"]));
- }
- if ($row["s"] && !$this->_readDataOnly) {
- $docSheet->getRowDimension(intval($row["r"]))->setXfIndex(intval($row["s"]));
- }
-
- foreach ($row->c as $c) {
- $r = (string) $c["r"];
- $cellDataType = (string) $c["t"];
- $value = null;
- $calculatedValue = null;
-
- // Read cell?
- if ($this->getReadFilter() !== NULL) {
- $coordinates = PHPExcel_Cell::coordinateFromString($r);
-
- if (!$this->getReadFilter()->readCell($coordinates[0], $coordinates[1], $docSheet->getTitle())) {
- continue;
- }
- }
-
- // echo '<b>Reading cell '.$coordinates[0].$coordinates[1].'</b><br />';
- // print_r($c);
- // echo '<br />';
- // echo 'Cell Data Type is '.$cellDataType.': ';
- //
- // Read cell!
- switch ($cellDataType) {
- case "s":
- // echo 'String<br />';
- if ((string)$c->v != '') {
- $value = $sharedStrings[intval($c->v)];
-
- if ($value instanceof PHPExcel_RichText) {
- $value = clone $value;
- }
- } else {
- $value = '';
- }
-
- break;
- case "b":
- // echo 'Boolean<br />';
- if (!isset($c->f)) {
- $value = self::_castToBool($c);
- } else {
- // Formula
- $this->_castToFormula($c,$r,$cellDataType,$value,$calculatedValue,$sharedFormulas,'_castToBool');
- if (isset($c->f['t'])) {
- $att = array();
- $att = $c->f;
- $docSheet->getCell($r)->setFormulaAttributes($att);
- }
- // echo '$calculatedValue = '.$calculatedValue.'<br />';
- }
- break;
- case "inlineStr":
- // echo 'Inline String<br />';
- $value = $this->_parseRichText($c->is);
-
- break;
- case "e":
- // echo 'Error<br />';
- if (!isset($c->f)) {
- $value = self::_castToError($c);
- } else {
- // Formula
- $this->_castToFormula($c,$r,$cellDataType,$value,$calculatedValue,$sharedFormulas,'_castToError');
- // echo '$calculatedValue = '.$calculatedValue.'<br />';
- }
-
- break;
-
- default:
- // echo 'Default<br />';
- if (!isset($c->f)) {
- // echo 'Not a Formula<br />';
- $value = self::_castToString($c);
- } else {
- // echo 'Treat as Formula<br />';
- // Formula
- $this->_castToFormula($c,$r,$cellDataType,$value,$calculatedValue,$sharedFormulas,'_castToString');
- // echo '$calculatedValue = '.$calculatedValue.'<br />';
- }
-
- break;
- }
- // echo 'Value is '.$value.'<br />';
-
- // Check for numeric values
- if (is_numeric($value) && $cellDataType != 's') {
- if ($value == (int)$value) $value = (int)$value;
- elseif ($value == (float)$value) $value = (float)$value;
- elseif ($value == (double)$value) $value = (double)$value;
- }
-
- // Rich text?
- if ($value instanceof PHPExcel_RichText && $this->_readDataOnly) {
- $value = $value->getPlainText();
- }
-
- $cell = $docSheet->getCell($r);
- // Assign value
- if ($cellDataType != '') {
- $cell->setValueExplicit($value, $cellDataType);
- } else {
- $cell->setValue($value);
- }
- if ($calculatedValue !== NULL) {
- $cell->setCalculatedValue($calculatedValue);
- }
-
- // Style information?
- if ($c["s"] && !$this->_readDataOnly) {
- // no style index means 0, it seems
- $cell->setXfIndex(isset($styles[intval($c["s"])]) ?
- intval($c["s"]) : 0);
- }
- }
- }
- }
-
- $conditionals = array();
- if (!$this->_readDataOnly && $xmlSheet && $xmlSheet->conditionalFormatting) {
- foreach ($xmlSheet->conditionalFormatting as $conditional) {
- foreach ($conditional->cfRule as $cfRule) {
- if (
- (
- (string)$cfRule["type"] == PHPExcel_Style_Conditional::CONDITION_NONE ||
- (string)$cfRule["type"] == PHPExcel_Style_Conditional::CONDITION_CELLIS ||
- (string)$cfRule["type"] == PHPExcel_Style_Conditional::CONDITION_CONTAINSTEXT ||
- (string)$cfRule["type"] == PHPExcel_Style_Conditional::CONDITION_EXPRESSION
- ) && isset($dxfs[intval($cfRule["dxfId"])])
- ) {
- $conditionals[(string) $conditional["sqref"]][intval($cfRule["priority"])] = $cfRule;
- }
- }
- }
-
- foreach ($conditionals as $ref => $cfRules) {
- ksort($cfRules);
- $conditionalStyles = array();
- foreach ($cfRules as $cfRule) {
- $objConditional = new PHPExcel_Style_Conditional();
- $objConditional->setConditionType((string)$cfRule["type"]);
- $objConditional->setOperatorType((string)$cfRule["operator"]);
-
- if ((string)$cfRule["text"] != '') {
- $objConditional->setText((string)$cfRule["text"]);
- }
-
- if (count($cfRule->formula) > 1) {
- foreach ($cfRule->formula as $formula) {
- $objConditional->addCondition((string)$formula);
- }
- } else {
- $objConditional->addCondition((string)$cfRule->formula);
- }
- $objConditional->setStyle(clone $dxfs[intval($cfRule["dxfId"])]);
- $conditionalStyles[] = $objConditional;
- }
-
- // Extract all cell references in $ref
- $aReferences = PHPExcel_Cell::extractAllCellReferencesInRange($ref);
- foreach ($aReferences as $reference) {
- $docSheet->getStyle($reference)->setConditionalStyles($conditionalStyles);
- }
- }
- }
-
- $aKeys = array("sheet", "objects", "scenarios", "formatCells", "formatColumns", "formatRows", "insertColumns", "insertRows", "insertHyperlinks", "deleteColumns", "deleteRows", "selectLockedCells", "sort", "autoFilter", "pivotTables", "selectUnlockedCells");
- if (!$this->_readDataOnly && $xmlSheet && $xmlSheet->sheetProtection) {
- foreach ($aKeys as $key) {
- $method = "set" . ucfirst($key);
- $docSheet->getProtection()->$method($xmlSheet->sheetProtection[$key] == "true");
- }
- }
-
- if (!$this->_readDataOnly && $xmlSheet && $xmlSheet->sheetProtection) {
- $docSheet->getProtection()->setPassword((string) $xmlSheet->sheetProtection["password"], true);
- if ($xmlSheet->protectedRanges->protectedRange) {
- foreach ($xmlSheet->protectedRanges->protectedRange as $protectedRange) {
- $docSheet->protectCells((string) $protectedRange["sqref"], (string) $protectedRange["password"], true);
- }
- }
- }
-
- if ($xmlSheet && $xmlSheet->autoFilter && !$this->_readDataOnly) {
- $autoFilter = $docSheet->getAutoFilter();
- $autoFilter->setRange((string) $xmlSheet->autoFilter["ref"]);
- foreach ($xmlSheet->autoFilter->filterColumn as $filterColumn) {
- $column = $autoFilter->getColumnByOffset((integer) $filterColumn["colId"]);
- // Check for standard filters
- if ($filterColumn->filters) {
- $column->setFilterType(PHPExcel_Worksheet_AutoFilter_Column::AUTOFILTER_FILTERTYPE_FILTER);
- $filters = $filterColumn->filters;
- if ((isset($filters["blank"])) && ($filters["blank"] == 1)) {
- $column->createRule()->setRule(
- NULL, // Operator is undefined, but always treated as EQUAL
- ''
- )
- ->setRuleType(PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_FILTER);
- }
- // Standard filters are always an OR join, so no join rule needs to be set
- // Entries can be either filter elements
- foreach ($filters->filter as $filterRule) {
- $column->createRule()->setRule(
- NULL, // Operator is undefined, but always treated as EQUAL
- (string) $filterRule["val"]
- )
- ->setRuleType(PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_FILTER);
- }
- // Or Date Group elements
- foreach ($filters->dateGroupItem as $dateGroupItem) {
- $column->createRule()->setRule(
- NULL, // Operator is undefined, but always treated as EQUAL
- array(
- 'year' => (string) $dateGroupItem["year"],
- 'month' => (string) $dateGroupItem["month"],
- 'day' => (string) $dateGroupItem["day"],
- 'hour' => (string) $dateGroupItem["hour"],
- 'minute' => (string) $dateGroupItem["minute"],
- 'second' => (string) $dateGroupItem["second"],
- ),
- (string) $dateGroupItem["dateTimeGrouping"]
- )
- ->setRuleType(PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DATEGROUP);
- }
- }
- // Check for custom filters
- if ($filterColumn->customFilters) {
- $column->setFilterType(PHPExcel_Worksheet_AutoFilter_Column::AUTOFILTER_FILTERTYPE_CUSTOMFILTER);
- $customFilters = $filterColumn->customFilters;
- // Custom filters can an AND or an OR join;
- // and there should only ever be one or two entries
- if ((isset($customFilters["and"])) && ($customFilters["and"] == 1)) {
- $column->setJoin(PHPExcel_Worksheet_AutoFilter_Column::AUTOFILTER_COLUMN_JOIN_AND);
- }
- foreach ($customFilters->customFilter as $filterRule) {
- $column->createRule()->setRule(
- (string) $filterRule["operator"],
- (string) $filterRule["val"]
- )
- ->setRuleType(PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_CUSTOMFILTER);
- }
- }
- // Check for dynamic filters
- if ($filterColumn->dynamicFilter) {
- $column->setFilterType(PHPExcel_Worksheet_AutoFilter_Column::AUTOFILTER_FILTERTYPE_DYNAMICFILTER);
- // We should only ever have one dynamic filter
- foreach ($filterColumn->dynamicFilter as $filterRule) {
- $column->createRule()->setRule(
- NULL, // Operator is undefined, but always treated as EQUAL
- (string) $filterRule["val"],
- (string) $filterRule["type"]
- )
- ->setRuleType(PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DYNAMICFILTER);
- if (isset($filterRule["val"])) {
- $column->setAttribute('val',(string) $filterRule["val"]);
- }
- if (isset($filterRule["maxVal"])) {
- $column->setAttribute('maxVal',(string) $filterRule["maxVal"]);
- }
- }
- }
- // Check for dynamic filters
- if ($filterColumn->top10) {
- $column->setFilterType(PHPExcel_Worksheet_AutoFilter_Column::AUTOFILTER_FILTERTYPE_TOPTENFILTER);
- // We should only ever have one top10 filter
- foreach ($filterColumn->top10 as $filterRule) {
- $column->createRule()->setRule(
- (((isset($filterRule["percent"])) && ($filterRule["percent"] == 1))
- ? PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_COLUMN_RULE_TOPTEN_PERCENT
- : PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_COLUMN_RULE_TOPTEN_BY_VALUE
- ),
- (string) $filterRule["val"],
- (((isset($filterRule["top"])) && ($filterRule["top"] == 1))
- ? PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_COLUMN_RULE_TOPTEN_TOP
- : PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_COLUMN_RULE_TOPTEN_BOTTOM
- )
- )
- ->setRuleType(PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_TOPTENFILTER);
- }
- }
- }
- }
-
- if ($xmlSheet && $xmlSheet->mergeCells && $xmlSheet->mergeCells->mergeCell && !$this->_readDataOnly) {
- foreach ($xmlSheet->mergeCells->mergeCell as $mergeCell) {
- $mergeRef = (string) $mergeCell["ref"];
- if (strpos($mergeRef,':') !== FALSE) {
- $docSheet->mergeCells((string) $mergeCell["ref"]);
- }
- }
- }
-
- if ($xmlSheet && $xmlSheet->pageMargins && !$this->_readDataOnly) {
- $docPageMargins = $docSheet->getPageMargins();
- $docPageMargins->setLeft(floatval($xmlSheet->pageMargins["left"]));
- $docPageMargins->setRight(floatval($xmlSheet->pageMargins["right"]));
- $docPageMargins->setTop(floatval($xmlSheet->pageMargins["top"]));
- $docPageMargins->setBottom(floatval($xmlSheet->pageMargins["bottom"]));
- $docPageMargins->setHeader(floatval($xmlSheet->pageMargins["header"]));
- $docPageMargins->setFooter(floatval($xmlSheet->pageMargins["footer"]));
- }
-
- if ($xmlSheet && $xmlSheet->pageSetup && !$this->_readDataOnly) {
- $docPageSetup = $docSheet->getPageSetup();
-
- if (isset($xmlSheet->pageSetup["orientation"])) {
- $docPageSetup->setOrientation((string) $xmlSheet->pageSetup["orientation"]);
- }
- if (isset($xmlSheet->pageSetup["paperSize"])) {
- $docPageSetup->setPaperSize(intval($xmlSheet->pageSetup["paperSize"]));
- }
- if (isset($xmlSheet->pageSetup["scale"])) {
- $docPageSetup->setScale(intval($xmlSheet->pageSetup["scale"]), false);
- }
- if (isset($xmlSheet->pageSetup["fitToHeight"]) && intval($xmlSheet->pageSetup["fitToHeight"]) >= 0) {
- $docPageSetup->setFitToHeight(intval($xmlSheet->pageSetup["fitToHeight"]), false);
- }
- if (isset($xmlSheet->pageSetup["fitToWidth"]) && intval($xmlSheet->pageSetup["fitToWidth"]) >= 0) {
- $docPageSetup->setFitToWidth(intval($xmlSheet->pageSetup["fitToWidth"]), false);
- }
- if (isset($xmlSheet->pageSetup["firstPageNumber"]) && isset($xmlSheet->pageSetup["useFirstPageNumber"]) &&
- ((string)$xmlSheet->pageSetup["useFirstPageNumber"] == 'true' || (string)$xmlSheet->pageSetup["useFirstPageNumber"] == '1')) {
- $docPageSetup->setFirstPageNumber(intval($xmlSheet->pageSetup["firstPageNumber"]));
- }
- }
-
- if ($xmlSheet && $xmlSheet->headerFooter && !$this->_readDataOnly) {
- $docHeaderFooter = $docSheet->getHeaderFooter();
-
- if (isset($xmlSheet->headerFooter["differentOddEven"]) &&
- ((string)$xmlSheet->headerFooter["differentOddEven"] == 'true' || (string)$xmlSheet->headerFooter["differentOddEven"] == '1')) {
- $docHeaderFooter->setDifferentOddEven(true);
- } else {
- $docHeaderFooter->setDifferentOddEven(false);
- }
- if (isset($xmlSheet->headerFooter["differentFirst"]) &&
- ((string)$xmlSheet->headerFooter["differentFirst"] == 'true' || (string)$xmlSheet->headerFooter["differentFirst"] == '1')) {
- $docHeaderFooter->setDifferentFirst(true);
- } else {
- $docHeaderFooter->setDifferentFirst(false);
- }
- if (isset($xmlSheet->headerFooter["scaleWithDoc"]) &&
- ((string)$xmlSheet->headerFooter["scaleWithDoc"] == 'false' || (string)$xmlSheet->headerFooter["scaleWithDoc"] == '0')) {
- $docHeaderFooter->setScaleWithDocument(false);
- } else {
- $docHeaderFooter->setScaleWithDocument(true);
- }
- if (isset($xmlSheet->headerFooter["alignWithMargins"]) &&
- ((string)$xmlSheet->headerFooter["alignWithMargins"] == 'false' || (string)$xmlSheet->headerFooter["alignWithMargins"] == '0')) {
- $docHeaderFooter->setAlignWithMargins(false);
- } else {
- $docHeaderFooter->setAlignWithMargins(true);
- }
-
- $docHeaderFooter->setOddHeader((string) $xmlSheet->headerFooter->oddHeader);
- $docHeaderFooter->setOddFooter((string) $xmlSheet->headerFooter->oddFooter);
- $docHeaderFooter->setEvenHeader((string) $xmlSheet->headerFooter->evenHeader);
- $docHeaderFooter->setEvenFooter((string) $xmlSheet->headerFooter->evenFooter);
- $docHeaderFooter->setFirstHeader((string) $xmlSheet->headerFooter->firstHeader);
- $docHeaderFooter->setFirstFooter((string) $xmlSheet->headerFooter->firstFooter);
- }
-
- if ($xmlSheet && $xmlSheet->rowBreaks && $xmlSheet->rowBreaks->brk && !$this->_readDataOnly) {
- foreach ($xmlSheet->rowBreaks->brk as $brk) {
- if ($brk["man"]) {
- $docSheet->setBreak("A$brk[id]", PHPExcel_Worksheet::BREAK_ROW);
- }
- }
- }
- if ($xmlSheet && $xmlSheet->colBreaks && $xmlSheet->colBreaks->brk && !$this->_readDataOnly) {
- foreach ($xmlSheet->colBreaks->brk as $brk) {
- if ($brk["man"]) {
- $docSheet->setBreak(PHPExcel_Cell::stringFromColumnIndex((string) $brk["id"]) . "1", PHPExcel_Worksheet::BREAK_COLUMN);
- }
- }
- }
-
- if ($xmlSheet && $xmlSheet->dataValidations && !$this->_readDataOnly) {
- foreach ($xmlSheet->dataValidations->dataValidation as $dataValidation) {
- // Uppercase coordinate
- $range = strtoupper($dataValidation["sqref"]);
- $rangeSet = explode(' ',$range);
- foreach($rangeSet as $range) {
- $stRange = $docSheet->shrinkRangeToFit($range);
-
- // Extract all cell references in $range
- $aReferences = PHPExcel_Cell::extractAllCellReferencesInRange($stRange);
- foreach ($aReferences as $reference) {
- // Create validation
- $docValidation = $docSheet->getCell($reference)->getDataValidation();
- $docValidation->setType((string) $dataValidation["type"]);
- $docValidation->setErrorStyle((string) $dataValidation["errorStyle"]);
- $docValidation->setOperator((string) $dataValidation["operator"]);
- $docValidation->setAllowBlank($dataValidation["allowBlank"] != 0);
- $docValidation->setShowDropDown($dataValidation["showDropDown"] == 0);
- $docValidation->setShowInputMessage($dataValidation["showInputMessage"] != 0);
- $docValidation->setShowErrorMessage($dataValidation["showErrorMessage"] != 0);
- $docValidation->setErrorTitle((string) $dataValidation["errorTitle"]);
- $docValidation->setError((string) $dataValidation["error"]);
- $docValidation->setPromptTitle((string) $dataValidation["promptTitle"]);
- $docValidation->setPrompt((string) $dataValidation["prompt"]);
- $docValidation->setFormula1((string) $dataValidation->formula1);
- $docValidation->setFormula2((string) $dataValidation->formula2);
- }
- }
- }
- }
-
- // Add hyperlinks
- $hyperlinks = array();
- if (!$this->_readDataOnly) {
- // Locate hyperlink relations
- if ($zip->locateName(dirname("$dir/$fileWorksheet") . "/_rels/" . basename($fileWorksheet) . ".rels")) {
- $relsWorksheet = simplexml_load_string($this->_getFromZipArchive($zip, dirname("$dir/$fileWorksheet") . "/_rels/" . basename($fileWorksheet) . ".rels") ); //~ http://schemas.openxmlformats.org/package/2006/relationships");
- foreach ($relsWorksheet->Relationship as $ele) {
- if ($ele["Type"] == "http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink") {
- $hyperlinks[(string)$ele["Id"]] = (string)$ele["Target"];
- }
- }
- }
-
- // Loop through hyperlinks
- if ($xmlSheet && $xmlSheet->hyperlinks) {
- foreach ($xmlSheet->hyperlinks->hyperlink as $hyperlink) {
- // Link url
- $linkRel = $hyperlink->attributes('http://schemas.openxmlformats.org/officeDocument/2006/relationships');
-
- foreach (PHPExcel_Cell::extractAllCellReferencesInRange($hyperlink['ref']) as $cellReference) {
- $cell = $docSheet->getCell( $cellReference );
- if (isset($linkRel['id'])) {
- $cell->getHyperlink()->setUrl( $hyperlinks[ (string)$linkRel['id'] ] );
- }
- if (isset($hyperlink['location'])) {
- $cell->getHyperlink()->setUrl( 'sheet://' . (string)$hyperlink['location'] );
- }
-
- // Tooltip
- if (isset($hyperlink['tooltip'])) {
- $cell->getHyperlink()->setTooltip( (string)$hyperlink['tooltip'] );
- }
- }
- }
- }
- }
-
- // Add comments
- $comments = array();
- $vmlComments = array();
- if (!$this->_readDataOnly) {
- // Locate comment relations
- if ($zip->locateName(dirname("$dir/$fileWorksheet") . "/_rels/" . basename($fileWorksheet) . ".rels")) {
- $relsWorksheet = simplexml_load_string($this->_getFromZipArchive($zip, dirname("$dir/$fileWorksheet") . "/_rels/" . basename($fileWorksheet) . ".rels") ); //~ http://schemas.openxmlformats.org/package/2006/relationships");
- foreach ($relsWorksheet->Relationship as $ele) {
- if ($ele["Type"] == "http://schemas.openxmlformats.org/officeDocument/2006/relationships/comments") {
- $comments[(string)$ele["Id"]] = (string)$ele["Target"];
- }
- if ($ele["Type"] == "http://schemas.openxmlformats.org/officeDocument/2006/relationships/vmlDrawing") {
- $vmlComments[(string)$ele["Id"]] = (string)$ele["Target"];
- }
- }
- }
-
- // Loop through comments
- foreach ($comments as $relName => $relPath) {
- // Load comments file
- $relPath = PHPExcel_Shared_File::realpath(dirname("$dir/$fileWorksheet") . "/" . $relPath);
- $commentsFile = simplexml_load_string($this->_getFromZipArchive($zip, $relPath) );
-
- // Utility variables
- $authors = array();
-
- // Loop through authors
- foreach ($commentsFile->authors->author as $author) {
- $authors[] = (string)$author;
- }
-
- // Loop through contents
- foreach ($commentsFile->commentList->comment as $comment) {
- $docSheet->getComment( (string)$comment['ref'] )->setAuthor( $authors[(string)$comment['authorId']] );
- $docSheet->getComment( (string)$comment['ref'] )->setText( $this->_parseRichText($comment->text) );
- }
- }
-
- // Loop through VML comments
- foreach ($vmlComments as $relName => $relPath) {
- // Load VML comments file
- $relPath = PHPExcel_Shared_File::realpath(dirname("$dir/$fileWorksheet") . "/" . $relPath);
- $vmlCommentsFile = simplexml_load_string( $this->_getFromZipArchive($zip, $relPath) );
- $vmlCommentsFile->registerXPathNamespace('v', 'urn:schemas-microsoft-com:vml');
-
- $shapes = $vmlCommentsFile->xpath('//v:shape');
- foreach ($shapes as $shape) {
- $shape->registerXPathNamespace('v', 'urn:schemas-microsoft-com:vml');
-
- if (isset($shape['style'])) {
- $style = (string)$shape['style'];
- $fillColor = strtoupper( substr( (string)$shape['fillcolor'], 1 ) );
- $column = null;
- $row = null;
-
- $clientData = $shape->xpath('.//x:ClientData');
- if (is_array($clientData) && !empty($clientData)) {
- $clientData = $clientData[0];
-
- if ( isset($clientData['ObjectType']) && (string)$clientData['ObjectType'] == 'Note' ) {
- $temp = $clientData->xpath('.//x:Row');
- if (is_array($temp)) $row = $temp[0];
-
- $temp = $clientData->xpath('.//x:Column');
- if (is_array($temp)) $column = $temp[0];
- }
- }
-
- if (($column !== NULL) && ($row !== NULL)) {
- // Set comment properties
- $comment = $docSheet->getCommentByColumnAndRow((string) $column, $row + 1);
- $comment->getFillColor()->setRGB( $fillColor );
-
- // Parse style
- $styleArray = explode(';', str_replace(' ', '', $style));
- foreach ($styleArray as $stylePair) {
- $stylePair = explode(':', $stylePair);
-
- if ($stylePair[0] == 'margin-left') $comment->setMarginLeft($stylePair[1]);
- if ($stylePair[0] == 'margin-top') $comment->setMarginTop($stylePair[1]);
- if ($stylePair[0] == 'width') $comment->setWidth($stylePair[1]);
- if ($stylePair[0] == 'height') $comment->setHeight($stylePair[1]);
- if ($stylePair[0] == 'visibility') $comment->setVisible( $stylePair[1] == 'visible' );
-
- }
- }
- }
- }
- }
-
- // Header/footer images
- if ($xmlSheet && $xmlSheet->legacyDrawingHF && !$this->_readDataOnly) {
- if ($zip->locateName(dirname("$dir/$fileWorksheet") . "/_rels/" . basename($fileWorksheet) . ".rels")) {
- $relsWorksheet = simplexml_load_string($this->_getFromZipArchive($zip, dirname("$dir/$fileWorksheet") . "/_rels/" . basename($fileWorksheet) . ".rels") ); //~ http://schemas.openxmlformats.org/package/2006/relationships");
- $vmlRelationship = '';
-
- foreach ($relsWorksheet->Relationship as $ele) {
- if ($ele["Type"] == "http://schemas.openxmlformats.org/officeDocument/2006/relationships/vmlDrawing") {
- $vmlRelationship = self::dir_add("$dir/$fileWorksheet", $ele["Target"]);
- }
- }
-
- if ($vmlRelationship != '') {
- // Fetch linked images
- $relsVML = simplexml_load_string($this->_getFromZipArchive($zip, dirname($vmlRelationship) . '/_rels/' . basename($vmlRelationship) . '.rels' )); //~ http://schemas.openxmlformats.org/package/2006/relationships");
- $drawings = array();
- foreach ($relsVML->Relationship as $ele) {
- if ($ele["Type"] == "http://schemas.openxmlformats.org/officeDocument/2006/relationships/image") {
- $drawings[(string) $ele["Id"]] = self::dir_add($vmlRelationship, $ele["Target"]);
- }
- }
-
- // Fetch VML document
- $vmlDrawing = simplexml_load_string($this->_getFromZipArchive($zip, $vmlRelationship));
- $vmlDrawing->registerXPathNamespace('v', 'urn:schemas-microsoft-com:vml');
-
- $hfImages = array();
-
- $shapes = $vmlDrawing->xpath('//v:shape');
- foreach ($shapes as $shape) {
- $shape->registerXPathNamespace('v', 'urn:schemas-microsoft-com:vml');
- $imageData = $shape->xpath('//v:imagedata');
- $imageData = $imageData[0];
-
- $imageData = $imageData->attributes('urn:schemas-microsoft-com:office:office');
- $style = self::toCSSArray( (string)$shape['style'] );
-
- $hfImages[ (string)$shape['id'] ] = new PHPExcel_Worksheet_HeaderFooterDrawing();
- if (isset($imageData['title'])) {
- $hfImages[ (string)$shape['id'] ]->setName( (string)$imageData['title'] );
- }
-
- $hfImages[ (string)$shape['id'] ]->setPath("zip://$pFilename#" . $drawings[(string)$imageData['relid']], false);
- $hfImages[ (string)$shape['id'] ]->setResizeProportional(false);
- $hfImages[ (string)$shape['id'] ]->setWidth($style['width']);
- $hfImages[ (string)$shape['id'] ]->setHeight($style['height']);
- $hfImages[ (string)$shape['id'] ]->setOffsetX($style['margin-left']);
- $hfImages[ (string)$shape['id'] ]->setOffsetY($style['margin-top']);
- $hfImages[ (string)$shape['id'] ]->setResizeProportional(true);
- }
-
- $docSheet->getHeaderFooter()->setImages($hfImages);
- }
- }
- }
-
- }
-
-// TODO: Autoshapes from twoCellAnchors!
- if ($zip->locateName(dirname("$dir/$fileWorksheet") . "/_rels/" . basename($fileWorksheet) . ".rels")) {
- $relsWorksheet = simplexml_load_string($this->_getFromZipArchive($zip, dirname("$dir/$fileWorksheet") . "/_rels/" . basename($fileWorksheet) . ".rels") ); //~ http://schemas.openxmlformats.org/package/2006/relationships");
- $drawings = array();
- foreach ($relsWorksheet->Relationship as $ele) {
- if ($ele["Type"] == "http://schemas.openxmlformats.org/officeDocument/2006/relationships/drawing") {
- $drawings[(string) $ele["Id"]] = self::dir_add("$dir/$fileWorksheet", $ele["Target"]);
- }
- }
- if ($xmlSheet->drawing && !$this->_readDataOnly) {
- foreach ($xmlSheet->drawing as $drawing) {
- $fileDrawing = $drawings[(string) self::array_item($drawing->attributes("http://schemas.openxmlformats.org/officeDocument/2006/relationships"), "id")];
- $relsDrawing = simplexml_load_string($this->_getFromZipArchive($zip, dirname($fileDrawing) . "/_rels/" . basename($fileDrawing) . ".rels") ); //~ http://schemas.openxmlformats.org/package/2006/relationships");
- $images = array();
-
- if ($relsDrawing && $relsDrawing->Relationship) {
- foreach ($relsDrawing->Relationship as $ele) {
- if ($ele["Type"] == "http://schemas.openxmlformats.org/officeDocument/2006/relationships/image") {
- $images[(string) $ele["Id"]] = self::dir_add($fileDrawing, $ele["Target"]);
- } elseif ($ele["Type"] == "http://schemas.openxmlformats.org/officeDocument/2006/relationships/chart") {
- if ($this->_includeCharts) {
- $charts[self::dir_add($fileDrawing, $ele["Target"])] = array('id' => (string) $ele["Id"],
- 'sheet' => $docSheet->getTitle()
- );
- }
- }
- }
- }
- $xmlDrawing = simplexml_load_string($this->_getFromZipArchive($zip, $fileDrawing))->children("http://schemas.openxmlformats.org/drawingml/2006/spreadsheetDrawing");
-
- if ($xmlDrawing->oneCellAnchor) {
- foreach ($xmlDrawing->oneCellAnchor as $oneCellAnchor) {
- if ($oneCellAnchor->pic->blipFill) {
- $blip = $oneCellAnchor->pic->blipFill->children("http://schemas.openxmlformats.org/drawingml/2006/main")->blip;
- $xfrm = $oneCellAnchor->pic->spPr->children("http://schemas.openxmlformats.org/drawingml/2006/main")->xfrm;
- $outerShdw = $oneCellAnchor->pic->spPr->children("http://schemas.openxmlformats.org/drawingml/2006/main")->effectLst->outerShdw;
- $objDrawing = new PHPExcel_Worksheet_Drawing;
- $objDrawing->setName((string) self::array_item($oneCellAnchor->pic->nvPicPr->cNvPr->attributes(), "name"));
- $objDrawing->setDescription((string) self::array_item($oneCellAnchor->pic->nvPicPr->cNvPr->attributes(), "descr"));
- $objDrawing->setPath("zip://$pFilename#" . $images[(string) self::array_item($blip->attributes("http://schemas.openxmlformats.org/officeDocument/2006/relationships"), "embed")], false);
- $objDrawing->setCoordinates(PHPExcel_Cell::stringFromColumnIndex((string) $oneCellAnchor->from->col) . ($oneCellAnchor->from->row + 1));
- $objDrawing->setOffsetX(PHPExcel_Shared_Drawing::EMUToPixels($oneCellAnchor->from->colOff));
- $objDrawing->setOffsetY(PHPExcel_Shared_Drawing::EMUToPixels($oneCellAnchor->from->rowOff));
- $objDrawing->setResizeProportional(false);
- $objDrawing->setWidth(PHPExcel_Shared_Drawing::EMUToPixels(self::array_item($oneCellAnchor->ext->attributes(), "cx")));
- $objDrawing->setHeight(PHPExcel_Shared_Drawing::EMUToPixels(self::array_item($oneCellAnchor->ext->attributes(), "cy")));
- if ($xfrm) {
- $objDrawing->setRotation(PHPExcel_Shared_Drawing::angleToDegrees(self::array_item($xfrm->attributes(), "rot")));
- }
- if ($outerShdw) {
- $shadow = $objDrawing->getShadow();
- $shadow->setVisible(true);
- $shadow->setBlurRadius(PHPExcel_Shared_Drawing::EMUTopixels(self::array_item($outerShdw->attributes(), "blurRad")));
- $shadow->setDistance(PHPExcel_Shared_Drawing::EMUTopixels(self::array_item($outerShdw->attributes(), "dist")));
- $shadow->setDirection(PHPExcel_Shared_Drawing::angleToDegrees(self::array_item($outerShdw->attributes(), "dir")));
- $shadow->setAlignment((string) self::array_item($outerShdw->attributes(), "algn"));
- $shadow->getColor()->setRGB(self::array_item($outerShdw->srgbClr->attributes(), "val"));
- $shadow->setAlpha(self::array_item($outerShdw->srgbClr->alpha->attributes(), "val") / 1000);
- }
- $objDrawing->setWorksheet($docSheet);
- } else {
- // ? Can charts be positioned with a oneCellAnchor ?
- $coordinates = PHPExcel_Cell::stringFromColumnIndex((string) $oneCellAnchor->from->col) . ($oneCellAnchor->from->row + 1);
- $offsetX = PHPExcel_Shared_Drawing::EMUToPixels($oneCellAnchor->from->colOff);
- $offsetY = PHPExcel_Shared_Drawing::EMUToPixels($oneCellAnchor->from->rowOff);
- $width = PHPExcel_Shared_Drawing::EMUToPixels(self::array_item($oneCellAnchor->ext->attributes(), "cx"));
- $height = PHPExcel_Shared_Drawing::EMUToPixels(self::array_item($oneCellAnchor->ext->attributes(), "cy"));
- }
- }
- }
- if ($xmlDrawing->twoCellAnchor) {
- foreach ($xmlDrawing->twoCellAnchor as $twoCellAnchor) {
- if ($twoCellAnchor->pic->blipFill) {
- $blip = $twoCellAnchor->pic->blipFill->children("http://schemas.openxmlformats.org/drawingml/2006/main")->blip;
- $xfrm = $twoCellAnchor->pic->spPr->children("http://schemas.openxmlformats.org/drawingml/2006/main")->xfrm;
- $outerShdw = $twoCellAnchor->pic->spPr->children("http://schemas.openxmlformats.org/drawingml/2006/main")->effectLst->outerShdw;
- $objDrawing = new PHPExcel_Worksheet_Drawing;
- $objDrawing->setName((string) self::array_item($twoCellAnchor->pic->nvPicPr->cNvPr->attributes(), "name"));
- $objDrawing->setDescription((string) self::array_item($twoCellAnchor->pic->nvPicPr->cNvPr->attributes(), "descr"));
- $objDrawing->setPath("zip://$pFilename#" . $images[(string) self::array_item($blip->attributes("http://schemas.openxmlformats.org/officeDocument/2006/relationships"), "embed")], false);
- $objDrawing->setCoordinates(PHPExcel_Cell::stringFromColumnIndex((string) $twoCellAnchor->from->col) . ($twoCellAnchor->from->row + 1));
- $objDrawing->setOffsetX(PHPExcel_Shared_Drawing::EMUToPixels($twoCellAnchor->from->colOff));
- $objDrawing->setOffsetY(PHPExcel_Shared_Drawing::EMUToPixels($twoCellAnchor->from->rowOff));
- $objDrawing->setResizeProportional(false);
-
- $objDrawing->setWidth(PHPExcel_Shared_Drawing::EMUToPixels(self::array_item($xfrm->ext->attributes(), "cx")));
- $objDrawing->setHeight(PHPExcel_Shared_Drawing::EMUToPixels(self::array_item($xfrm->ext->attributes(), "cy")));
-
- if ($xfrm) {
- $objDrawing->setRotation(PHPExcel_Shared_Drawing::angleToDegrees(self::array_item($xfrm->attributes(), "rot")));
- }
- if ($outerShdw) {
- $shadow = $objDrawing->getShadow();
- $shadow->setVisible(true);
- $shadow->setBlurRadius(PHPExcel_Shared_Drawing::EMUTopixels(self::array_item($outerShdw->attributes(), "blurRad")));
- $shadow->setDistance(PHPExcel_Shared_Drawing::EMUTopixels(self::array_item($outerShdw->attributes(), "dist")));
- $shadow->setDirection(PHPExcel_Shared_Drawing::angleToDegrees(self::array_item($outerShdw->attributes(), "dir")));
- $shadow->setAlignment((string) self::array_item($outerShdw->attributes(), "algn"));
- $shadow->getColor()->setRGB(self::array_item($outerShdw->srgbClr->attributes(), "val"));
- $shadow->setAlpha(self::array_item($outerShdw->srgbClr->alpha->attributes(), "val") / 1000);
- }
- $objDrawing->setWorksheet($docSheet);
- } elseif(($this->_includeCharts) && ($twoCellAnchor->graphicFrame)) {
- $fromCoordinate = PHPExcel_Cell::stringFromColumnIndex((string) $twoCellAnchor->from->col) . ($twoCellAnchor->from->row + 1);
- $fromOffsetX = PHPExcel_Shared_Drawing::EMUToPixels($twoCellAnchor->from->colOff);
- $fromOffsetY = PHPExcel_Shared_Drawing::EMUToPixels($twoCellAnchor->from->rowOff);
- $toCoordinate = PHPExcel_Cell::stringFromColumnIndex((string) $twoCellAnchor->to->col) . ($twoCellAnchor->to->row + 1);
- $toOffsetX = PHPExcel_Shared_Drawing::EMUToPixels($twoCellAnchor->to->colOff);
- $toOffsetY = PHPExcel_Shared_Drawing::EMUToPixels($twoCellAnchor->to->rowOff);
- $graphic = $twoCellAnchor->graphicFrame->children("http://schemas.openxmlformats.org/drawingml/2006/main")->graphic;
- $chartRef = $graphic->graphicData->children("http://schemas.openxmlformats.org/drawingml/2006/chart")->chart;
- $thisChart = (string) $chartRef->attributes("http://schemas.openxmlformats.org/officeDocument/2006/relationships");
-
- $chartDetails[$docSheet->getTitle().'!'.$thisChart] =
- array( 'fromCoordinate' => $fromCoordinate,
- 'fromOffsetX' => $fromOffsetX,
- 'fromOffsetY' => $fromOffsetY,
- 'toCoordinate' => $toCoordinate,
- 'toOffsetX' => $toOffsetX,
- 'toOffsetY' => $toOffsetY,
- 'worksheetTitle' => $docSheet->getTitle()
- );
- }
- }
- }
-
- }
- }
- }
-
- // Loop through definedNames
- if ($xmlWorkbook->definedNames) {
- foreach ($xmlWorkbook->definedNames->definedName as $definedName) {
- // Extract range
- $extractedRange = (string)$definedName;
- $extractedRange = preg_replace('/\'(\w+)\'\!/', '', $extractedRange);
- if (($spos = strpos($extractedRange,'!')) !== false) {
- $extractedRange = substr($extractedRange,0,$spos).str_replace('$', '', substr($extractedRange,$spos));
- } else {
- $extractedRange = str_replace('$', '', $extractedRange);
- }
-
- // Valid range?
- if (stripos((string)$definedName, '#REF!') !== FALSE || $extractedRange == '') {
- continue;
- }
-
- // Some definedNames are only applicable if we are on the same sheet...
- if ((string)$definedName['localSheetId'] != '' && (string)$definedName['localSheetId'] == $sheetId) {
- // Switch on type
- switch ((string)$definedName['name']) {
-
- case '_xlnm._FilterDatabase':
- if ((string)$definedName['hidden'] !== '1') {
- $docSheet->getAutoFilter()->setRange($extractedRange);
- }
- break;
-
- case '_xlnm.Print_Titles':
- // Split $extractedRange
- $extractedRange = explode(',', $extractedRange);
-
- // Set print titles
- foreach ($extractedRange as $range) {
- $matches = array();
-
- // check for repeating columns, e g. 'A:A' or 'A:D'
- if (preg_match('/^([A-Z]+)\:([A-Z]+)$/', $range, $matches)) {
- $docSheet->getPageSetup()->setColumnsToRepeatAtLeft(array($matches[1], $matches[2]));
- }
- // check for repeating rows, e.g. '1:1' or '1:5'
- elseif (preg_match('/^(\d+)\:(\d+)$/', $range, $matches)) {
- $docSheet->getPageSetup()->setRowsToRepeatAtTop(array($matches[1], $matches[2]));
- }
- }
- break;
-
- case '_xlnm.Print_Area':
- $rangeSets = explode(',', $extractedRange); // FIXME: what if sheetname contains comma?
- $newRangeSets = array();
- foreach($rangeSets as $rangeSet) {
- $range = explode('!', $rangeSet); // FIXME: what if sheetname contains exclamation mark?
- $rangeSet = isset($range[1]) ? $range[1] : $range[0];
- $newRangeSets[] = str_replace('$', '', $rangeSet);
- }
- $docSheet->getPageSetup()->setPrintArea(implode(',',$newRangeSets));
- break;
-
- default:
- break;
- }
- }
- }
- }
-
- // Next sheet id
- ++$sheetId;
- }
-
- // Loop through definedNames
- if ($xmlWorkbook->definedNames) {
- foreach ($xmlWorkbook->definedNames->definedName as $definedName) {
- // Extract range
- $extractedRange = (string)$definedName;
- $extractedRange = preg_replace('/\'(\w+)\'\!/', '', $extractedRange);
- if (($spos = strpos($extractedRange,'!')) !== false) {
- $extractedRange = substr($extractedRange,0,$spos).str_replace('$', '', substr($extractedRange,$spos));
- } else {
- $extractedRange = str_replace('$', '', $extractedRange);
- }
-
- // Valid range?
- if (stripos((string)$definedName, '#REF!') !== false || $extractedRange == '') {
- continue;
- }
-
- // Some definedNames are only applicable if we are on the same sheet...
- if ((string)$definedName['localSheetId'] != '') {
- // Local defined name
- // Switch on type
- switch ((string)$definedName['name']) {
-
- case '_xlnm._FilterDatabase':
- case '_xlnm.Print_Titles':
- case '_xlnm.Print_Area':
- break;
-
- default:
- $range = explode('!', (string)$definedName);
- if (count($range) == 2) {
- $range[0] = str_replace("''", "'", $range[0]);
- $range[0] = str_replace("'", "", $range[0]);
- if ($worksheet = $docSheet->getParent()->getSheetByName($range[0])) {
- $extractedRange = str_replace('$', '', $range[1]);
- $scope = $docSheet->getParent()->getSheet((string)$definedName['localSheetId']);
-
- $excel->addNamedRange( new PHPExcel_NamedRange((string)$definedName['name'], $worksheet, $extractedRange, true, $scope) );
- }
- }
- break;
- }
- } else if (!isset($definedName['localSheetId'])) {
- // "Global" definedNames
- $locatedSheet = null;
- $extractedSheetName = '';
- if (strpos( (string)$definedName, '!' ) !== false) {
- // Extract sheet name
- $extractedSheetName = PHPExcel_Worksheet::extractSheetTitle( (string)$definedName, true );
- $extractedSheetName = $extractedSheetName[0];
-
- // Locate sheet
- $locatedSheet = $excel->getSheetByName($extractedSheetName);
-
- // Modify range
- $range = explode('!', $extractedRange);
- $extractedRange = isset($range[1]) ? $range[1] : $range[0];
- }
-
- if ($locatedSheet !== NULL) {
- $excel->addNamedRange( new PHPExcel_NamedRange((string)$definedName['name'], $locatedSheet, $extractedRange, false) );
- }
- }
- }
- }
- }
-
- if (!$this->_readDataOnly) {
- // active sheet index
- $activeTab = intval($xmlWorkbook->bookViews->workbookView["activeTab"]); // refers to old sheet index
-
- // keep active sheet index if sheet is still loaded, else first sheet is set as the active
- if (isset($mapSheetId[$activeTab]) && $mapSheetId[$activeTab] !== null) {
- $excel->setActiveSheetIndex($mapSheetId[$activeTab]);
- } else {
- if ($excel->getSheetCount() == 0) {
- $excel->createSheet();
- }
- $excel->setActiveSheetIndex(0);
- }
- }
- break;
- }
-
- }
-
-
- if (!$this->_readDataOnly) {
- $contentTypes = simplexml_load_string($this->_getFromZipArchive($zip, "[Content_Types].xml"));
- foreach ($contentTypes->Override as $contentType) {
- switch ($contentType["ContentType"]) {
- case "application/vnd.openxmlformats-officedocument.drawingml.chart+xml":
- if ($this->_includeCharts) {
- $chartEntryRef = ltrim($contentType['PartName'],'/');
- $chartElements = simplexml_load_string($this->_getFromZipArchive($zip, $chartEntryRef));
- $objChart = PHPExcel_Reader_Excel2007_Chart::readChart($chartElements,basename($chartEntryRef,'.xml'));
-
-// echo 'Chart ',$chartEntryRef,'<br />';
-// var_dump($charts[$chartEntryRef]);
-//
- if (isset($charts[$chartEntryRef])) {
- $chartPositionRef = $charts[$chartEntryRef]['sheet'].'!'.$charts[$chartEntryRef]['id'];
-// echo 'Position Ref ',$chartPositionRef,'<br />';
- if (isset($chartDetails[$chartPositionRef])) {
-// var_dump($chartDetails[$chartPositionRef]);
-
- $excel->getSheetByName($charts[$chartEntryRef]['sheet'])->addChart($objChart);
- $objChart->setWorksheet($excel->getSheetByName($charts[$chartEntryRef]['sheet']));
- $objChart->setTopLeftPosition( $chartDetails[$chartPositionRef]['fromCoordinate'],
- $chartDetails[$chartPositionRef]['fromOffsetX'],
- $chartDetails[$chartPositionRef]['fromOffsetY']
- );
- $objChart->setBottomRightPosition( $chartDetails[$chartPositionRef]['toCoordinate'],
- $chartDetails[$chartPositionRef]['toOffsetX'],
- $chartDetails[$chartPositionRef]['toOffsetY']
- );
- }
- }
- }
- }
- }
- }
-
- $zip->close();
-
- return $excel;
- }
-
-
- private static function _readColor($color, $background=FALSE) {
- if (isset($color["rgb"])) {
- return (string)$color["rgb"];
- } else if (isset($color["indexed"])) {
- return PHPExcel_Style_Color::indexedColor($color["indexed"]-7,$background)->getARGB();
- } else if (isset($color["theme"])) {
- if (self::$_theme !== NULL) {
- $returnColour = self::$_theme->getColourByIndex((int)$color["theme"]);
- if (isset($color["tint"])) {
- $tintAdjust = (float) $color["tint"];
- $returnColour = PHPExcel_Style_Color::changeBrightness($returnColour, $tintAdjust);
- }
- return 'FF'.$returnColour;
- }
- }
-
- if ($background) {
- return 'FFFFFFFF';
- }
- return 'FF000000';
- }
-
-
- private static function _readStyle($docStyle, $style) {
- // format code
-// if (isset($style->numFmt)) {
-// if (isset($style->numFmt['formatCode'])) {
-// $docStyle->getNumberFormat()->setFormatCode((string) $style->numFmt['formatCode']);
-// } else {
- $docStyle->getNumberFormat()->setFormatCode($style->numFmt);
-// }
-// }
-
- // font
- if (isset($style->font)) {
- $docStyle->getFont()->setName((string) $style->font->name["val"]);
- $docStyle->getFont()->setSize((string) $style->font->sz["val"]);
- if (isset($style->font->b)) {
- $docStyle->getFont()->setBold(!isset($style->font->b["val"]) || $style->font->b["val"] == 'true' || $style->font->b["val"] == '1');
- }
- if (isset($style->font->i)) {
- $docStyle->getFont()->setItalic(!isset($style->font->i["val"]) || $style->font->i["val"] == 'true' || $style->font->i["val"] == '1');
- }
- if (isset($style->font->strike)) {
- $docStyle->getFont()->setStrikethrough(!isset($style->font->strike["val"]) || $style->font->strike["val"] == 'true' || $style->font->strike["val"] == '1');
- }
- $docStyle->getFont()->getColor()->setARGB(self::_readColor($style->font->color));
-
- if (isset($style->font->u) && !isset($style->font->u["val"])) {
- $docStyle->getFont()->setUnderline(PHPExcel_Style_Font::UNDERLINE_SINGLE);
- } else if (isset($style->font->u) && isset($style->font->u["val"])) {
- $docStyle->getFont()->setUnderline((string)$style->font->u["val"]);
- }
-
- if (isset($style->font->vertAlign) && isset($style->font->vertAlign["val"])) {
- $vertAlign = strtolower((string)$style->font->vertAlign["val"]);
- if ($vertAlign == 'superscript') {
- $docStyle->getFont()->setSuperScript(true);
- }
- if ($vertAlign == 'subscript') {
- $docStyle->getFont()->setSubScript(true);
- }
- }
- }
-
- // fill
- if (isset($style->fill)) {
- if ($style->fill->gradientFill) {
- $gradientFill = $style->fill->gradientFill[0];
- if(!empty($gradientFill["type"])) {
- $docStyle->getFill()->setFillType((string) $gradientFill["type"]);
- }
- $docStyle->getFill()->setRotation(floatval($gradientFill["degree"]));
- $gradientFill->registerXPathNamespace("sml", "http://schemas.openxmlformats.org/spreadsheetml/2006/main");
- $docStyle->getFill()->getStartColor()->setARGB(self::_readColor( self::array_item($gradientFill->xpath("sml:stop[@position=0]"))->color) );
- $docStyle->getFill()->getEndColor()->setARGB(self::_readColor( self::array_item($gradientFill->xpath("sml:stop[@position=1]"))->color) );
- } elseif ($style->fill->patternFill) {
- $patternType = (string)$style->fill->patternFill["patternType"] != '' ? (string)$style->fill->patternFill["patternType"] : 'solid';
- $docStyle->getFill()->setFillType($patternType);
- if ($style->fill->patternFill->fgColor) {
- $docStyle->getFill()->getStartColor()->setARGB(self::_readColor($style->fill->patternFill->fgColor,true));
- } else {
- $docStyle->getFill()->getStartColor()->setARGB('FF000000');
- }
- if ($style->fill->patternFill->bgColor) {
- $docStyle->getFill()->getEndColor()->setARGB(self::_readColor($style->fill->patternFill->bgColor,true));
- }
- }
- }
-
- // border
- if (isset($style->border)) {
- $diagonalUp = false;
- $diagonalDown = false;
- if ($style->border["diagonalUp"] == 'true' || $style->border["diagonalUp"] == 1) {
- $diagonalUp = true;
- }
- if ($style->border["diagonalDown"] == 'true' || $style->border["diagonalDown"] == 1) {
- $diagonalDown = true;
- }
- if ($diagonalUp == false && $diagonalDown == false) {
- $docStyle->getBorders()->setDiagonalDirection(PHPExcel_Style_Borders::DIAGONAL_NONE);
- } elseif ($diagonalUp == true && $diagonalDown == false) {
- $docStyle->getBorders()->setDiagonalDirection(PHPExcel_Style_Borders::DIAGONAL_UP);
- } elseif ($diagonalUp == false && $diagonalDown == true) {
- $docStyle->getBorders()->setDiagonalDirection(PHPExcel_Style_Borders::DIAGONAL_DOWN);
- } elseif ($diagonalUp == true && $diagonalDown == true) {
- $docStyle->getBorders()->setDiagonalDirection(PHPExcel_Style_Borders::DIAGONAL_BOTH);
- }
- self::_readBorder($docStyle->getBorders()->getLeft(), $style->border->left);
- self::_readBorder($docStyle->getBorders()->getRight(), $style->border->right);
- self::_readBorder($docStyle->getBorders()->getTop(), $style->border->top);
- self::_readBorder($docStyle->getBorders()->getBottom(), $style->border->bottom);
- self::_readBorder($docStyle->getBorders()->getDiagonal(), $style->border->diagonal);
- }
-
- // alignment
- if (isset($style->alignment)) {
- $docStyle->getAlignment()->setHorizontal((string) $style->alignment["horizontal"]);
- $docStyle->getAlignment()->setVertical((string) $style->alignment["vertical"]);
-
- $textRotation = 0;
- if ((int)$style->alignment["textRotation"] <= 90) {
- $textRotation = (int)$style->alignment["textRotation"];
- } else if ((int)$style->alignment["textRotation"] > 90) {
- $textRotation = 90 - (int)$style->alignment["textRotation"];
- }
-
- $docStyle->getAlignment()->setTextRotation(intval($textRotation));
- $docStyle->getAlignment()->setWrapText( (string)$style->alignment["wrapText"] == "true" || (string)$style->alignment["wrapText"] == "1" );
- $docStyle->getAlignment()->setShrinkToFit( (string)$style->alignment["shrinkToFit"] == "true" || (string)$style->alignment["shrinkToFit"] == "1" );
- $docStyle->getAlignment()->setIndent( intval((string)$style->alignment["indent"]) > 0 ? intval((string)$style->alignment["indent"]) : 0 );
- }
-
- // protection
- if (isset($style->protection)) {
- if (isset($style->protection['locked'])) {
- if ((string)$style->protection['locked'] == 'true') {
- $docStyle->getProtection()->setLocked(PHPExcel_Style_Protection::PROTECTION_PROTECTED);
- } else {
- $docStyle->getProtection()->setLocked(PHPExcel_Style_Protection::PROTECTION_UNPROTECTED);
- }
- }
-
- if (isset($style->protection['hidden'])) {
- if ((string)$style->protection['hidden'] == 'true') {
- $docStyle->getProtection()->setHidden(PHPExcel_Style_Protection::PROTECTION_PROTECTED);
- } else {
- $docStyle->getProtection()->setHidden(PHPExcel_Style_Protection::PROTECTION_UNPROTECTED);
- }
- }
- }
- }
-
-
- private static function _readBorder($docBorder, $eleBorder) {
- if (isset($eleBorder["style"])) {
- $docBorder->setBorderStyle((string) $eleBorder["style"]);
- }
- if (isset($eleBorder->color)) {
- $docBorder->getColor()->setARGB(self::_readColor($eleBorder->color));
- }
- }
-
-
- private function _parseRichText($is = null) {
- $value = new PHPExcel_RichText();
-
- if (isset($is->t)) {
- $value->createText( PHPExcel_Shared_String::ControlCharacterOOXML2PHP( (string) $is->t ) );
- } else {
- foreach ($is->r as $run) {
- if (!isset($run->rPr)) {
- $objText = $value->createText( PHPExcel_Shared_String::ControlCharacterOOXML2PHP( (string) $run->t ) );
-
- } else {
- $objText = $value->createTextRun( PHPExcel_Shared_String::ControlCharacterOOXML2PHP( (string) $run->t ) );
-
- if (isset($run->rPr->rFont["val"])) {
- $objText->getFont()->setName((string) $run->rPr->rFont["val"]);
- }
-
- if (isset($run->rPr->sz["val"])) {
- $objText->getFont()->setSize((string) $run->rPr->sz["val"]);
- }
-
- if (isset($run->rPr->color)) {
- $objText->getFont()->setColor( new PHPExcel_Style_Color( self::_readColor($run->rPr->color) ) );
- }
-
- if ( (isset($run->rPr->b["val"]) && ((string) $run->rPr->b["val"] == 'true' || (string) $run->rPr->b["val"] == '1'))
- || (isset($run->rPr->b) && !isset($run->rPr->b["val"])) ) {
- $objText->getFont()->setBold(true);
- }
-
- if ( (isset($run->rPr->i["val"]) && ((string) $run->rPr->i["val"] == 'true' || (string) $run->rPr->i["val"] == '1'))
- || (isset($run->rPr->i) && !isset($run->rPr->i["val"])) ) {
- $objText->getFont()->setItalic(true);
- }
-
- if (isset($run->rPr->vertAlign) && isset($run->rPr->vertAlign["val"])) {
- $vertAlign = strtolower((string)$run->rPr->vertAlign["val"]);
- if ($vertAlign == 'superscript') {
- $objText->getFont()->setSuperScript(true);
- }
- if ($vertAlign == 'subscript') {
- $objText->getFont()->setSubScript(true);
- }
- }
-
- if (isset($run->rPr->u) && !isset($run->rPr->u["val"])) {
- $objText->getFont()->setUnderline(PHPExcel_Style_Font::UNDERLINE_SINGLE);
- } else if (isset($run->rPr->u) && isset($run->rPr->u["val"])) {
- $objText->getFont()->setUnderline((string)$run->rPr->u["val"]);
- }
-
- if ( (isset($run->rPr->strike["val"]) && ((string) $run->rPr->strike["val"] == 'true' || (string) $run->rPr->strike["val"] == '1'))
- || (isset($run->rPr->strike) && !isset($run->rPr->strike["val"])) ) {
- $objText->getFont()->setStrikethrough(true);
- }
- }
- }
- }
-
- return $value;
- }
-
-
- private static function array_item($array, $key = 0) {
- return (isset($array[$key]) ? $array[$key] : null);
- }
-
-
- private static function dir_add($base, $add) {
- return preg_replace('~[^/]+/\.\./~', '', dirname($base) . "/$add");
- }
-
-
- private static function toCSSArray($style) {
- $style = str_replace(array("\r","\n"), "", $style);
-
- $temp = explode(';', $style);
- $style = array();
- foreach ($temp as $item) {
- $item = explode(':', $item);
-
- if (strpos($item[1], 'px') !== false) {
- $item[1] = str_replace('px', '', $item[1]);
- }
- if (strpos($item[1], 'pt') !== false) {
- $item[1] = str_replace('pt', '', $item[1]);
- $item[1] = PHPExcel_Shared_Font::fontSizeToPixels($item[1]);
- }
- if (strpos($item[1], 'in') !== false) {
- $item[1] = str_replace('in', '', $item[1]);
- $item[1] = PHPExcel_Shared_Font::inchSizeToPixels($item[1]);
- }
- if (strpos($item[1], 'cm') !== false) {
- $item[1] = str_replace('cm', '', $item[1]);
- $item[1] = PHPExcel_Shared_Font::centimeterSizeToPixels($item[1]);
- }
-
- $style[$item[0]] = $item[1];
- }
-
- return $style;
- }
-}
diff --git a/admin/survey/excel/PHPExcel/Reader/Excel2007/Chart.php b/admin/survey/excel/PHPExcel/Reader/Excel2007/Chart.php
deleted file mode 100644
index a6cf431..0000000
--- a/admin/survey/excel/PHPExcel/Reader/Excel2007/Chart.php
+++ /dev/null
@@ -1,513 +0,0 @@
-<?php
-/**
- * PHPExcel
- *
- * Copyright (c) 2006 - 2012 PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel_Reader_Excel5
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-/**
- * PHPExcel_Reader_Excel2007_Chart
- *
- * @category PHPExcel
- * @package PHPExcel_Reader_Excel2007
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- */
-class PHPExcel_Reader_Excel2007_Chart
-{
- private static function _getAttribute($component, $name, $format) {
- $attributes = $component->attributes();
- if (isset($attributes[$name])) {
- if ($format == 'string') {
- return (string) $attributes[$name];
- } elseif ($format == 'integer') {
- return (integer) $attributes[$name];
- } elseif ($format == 'boolean') {
- return (boolean) ($attributes[$name] == '0') ? false : true;
- } else {
- return (float) $attributes[$name];
- }
- }
- return null;
- } // function _getAttribute()
-
-
- private static function _readColor($color,$background=false) {
- if (isset($color["rgb"])) {
- return (string)$color["rgb"];
- } else if (isset($color["indexed"])) {
- return PHPExcel_Style_Color::indexedColor($color["indexed"]-7,$background)->getARGB();
- }
- }
-
-
- public static function readChart($chartElements,$chartName) {
- $namespacesChartMeta = $chartElements->getNamespaces(true);
- $chartElementsC = $chartElements->children($namespacesChartMeta['c']);
-
- $XaxisLabel = $YaxisLabel = $legend = $title = NULL;
- $dispBlanksAs = $plotVisOnly = NULL;
-
- foreach($chartElementsC as $chartElementKey => $chartElement) {
- switch ($chartElementKey) {
- case "chart":
- foreach($chartElement as $chartDetailsKey => $chartDetails) {
- $chartDetailsC = $chartDetails->children($namespacesChartMeta['c']);
- switch ($chartDetailsKey) {
- case "plotArea":
- $plotAreaLayout = $XaxisLable = $YaxisLable = null;
- $plotSeries = $plotAttributes = array();
- foreach($chartDetails as $chartDetailKey => $chartDetail) {
- switch ($chartDetailKey) {
- case "layout":
- $plotAreaLayout = self::_chartLayoutDetails($chartDetail,$namespacesChartMeta,'plotArea');
- break;
- case "catAx":
- if (isset($chartDetail->title)) {
- $XaxisLabel = self::_chartTitle($chartDetail->title->children($namespacesChartMeta['c']),$namespacesChartMeta,'cat');
- }
- break;
- case "dateAx":
- if (isset($chartDetail->title)) {
- $XaxisLabel = self::_chartTitle($chartDetail->title->children($namespacesChartMeta['c']),$namespacesChartMeta,'cat');
- }
- break;
- case "valAx":
- if (isset($chartDetail->title)) {
- $YaxisLabel = self::_chartTitle($chartDetail->title->children($namespacesChartMeta['c']),$namespacesChartMeta,'cat');
- }
- break;
- case "barChart":
- case "bar3DChart":
- $barDirection = self::_getAttribute($chartDetail->barDir, 'val', 'string');
- $plotSer = self::_chartDataSeries($chartDetail,$namespacesChartMeta,$chartDetailKey);
- $plotSer->setPlotDirection($barDirection);
- $plotSeries[] = $plotSer;
- $plotAttributes = self::_readChartAttributes($chartDetail);
- break;
- case "lineChart":
- case "line3DChart":
- $plotSeries[] = self::_chartDataSeries($chartDetail,$namespacesChartMeta,$chartDetailKey);
- $plotAttributes = self::_readChartAttributes($chartDetail);
- break;
- case "areaChart":
- case "area3DChart":
- $plotSeries[] = self::_chartDataSeries($chartDetail,$namespacesChartMeta,$chartDetailKey);
- $plotAttributes = self::_readChartAttributes($chartDetail);
- break;
- case "doughnutChart":
- case "pieChart":
- case "pie3DChart":
- $explosion = isset($chartDetail->ser->explosion);
- $plotSer = self::_chartDataSeries($chartDetail,$namespacesChartMeta,$chartDetailKey);
- $plotSer->setPlotStyle($explosion);
- $plotSeries[] = $plotSer;
- $plotAttributes = self::_readChartAttributes($chartDetail);
- break;
- case "scatterChart":
- $scatterStyle = self::_getAttribute($chartDetail->scatterStyle, 'val', 'string');
- $plotSer = self::_chartDataSeries($chartDetail,$namespacesChartMeta,$chartDetailKey);
- $plotSer->setPlotStyle($scatterStyle);
- $plotSeries[] = $plotSer;
- $plotAttributes = self::_readChartAttributes($chartDetail);
- break;
- case "bubbleChart":
- $bubbleScale = self::_getAttribute($chartDetail->bubbleScale, 'val', 'integer');
- $plotSer = self::_chartDataSeries($chartDetail,$namespacesChartMeta,$chartDetailKey);
- $plotSer->setPlotStyle($bubbleScale);
- $plotSeries[] = $plotSer;
- $plotAttributes = self::_readChartAttributes($chartDetail);
- break;
- case "radarChart":
- $radarStyle = self::_getAttribute($chartDetail->radarStyle, 'val', 'string');
- $plotSer = self::_chartDataSeries($chartDetail,$namespacesChartMeta,$chartDetailKey);
- $plotSer->setPlotStyle($radarStyle);
- $plotSeries[] = $plotSer;
- $plotAttributes = self::_readChartAttributes($chartDetail);
- break;
- case "surfaceChart":
- case "surface3DChart":
- $wireFrame = self::_getAttribute($chartDetail->wireframe, 'val', 'boolean');
- $plotSer = self::_chartDataSeries($chartDetail,$namespacesChartMeta,$chartDetailKey);
- $plotSer->setPlotStyle($wireFrame);
- $plotSeries[] = $plotSer;
- $plotAttributes = self::_readChartAttributes($chartDetail);
- break;
- case "stockChart":
- $plotSeries[] = self::_chartDataSeries($chartDetail,$namespacesChartMeta,$chartDetailKey);
- $plotAttributes = self::_readChartAttributes($plotAreaLayout);
- break;
- }
- }
- if ($plotAreaLayout == NULL) {
- $plotAreaLayout = new PHPExcel_Chart_Layout();
- }
- $plotArea = new PHPExcel_Chart_PlotArea($plotAreaLayout,$plotSeries);
- self::_setChartAttributes($plotAreaLayout,$plotAttributes);
- break;
- case "plotVisOnly":
- $plotVisOnly = self::_getAttribute($chartDetails, 'val', 'string');
- break;
- case "dispBlanksAs":
- $dispBlanksAs = self::_getAttribute($chartDetails, 'val', 'string');
- break;
- case "title":
- $title = self::_chartTitle($chartDetails,$namespacesChartMeta,'title');
- break;
- case "legend":
- $legendPos = 'r';
- $legendLayout = null;
- $legendOverlay = false;
- foreach($chartDetails as $chartDetailKey => $chartDetail) {
- switch ($chartDetailKey) {
- case "legendPos":
- $legendPos = self::_getAttribute($chartDetail, 'val', 'string');
- break;
- case "overlay":
- $legendOverlay = self::_getAttribute($chartDetail, 'val', 'boolean');
- break;
- case "layout":
- $legendLayout = self::_chartLayoutDetails($chartDetail,$namespacesChartMeta,'legend');
- break;
- }
- }
- $legend = new PHPExcel_Chart_Legend($legendPos, $legendLayout, $legendOverlay);
- break;
- }
- }
- }
- }
- $chart = new PHPExcel_Chart($chartName,$title,$legend,$plotArea,$plotVisOnly,$dispBlanksAs,$XaxisLabel,$YaxisLabel);
-
- return $chart;
- } // function readChart()
-
-
- private static function _chartTitle($titleDetails,$namespacesChartMeta,$type) {
- $caption = array();
- $titleLayout = null;
- foreach($titleDetails as $titleDetailKey => $chartDetail) {
- switch ($titleDetailKey) {
- case "tx":
- $titleDetails = $chartDetail->rich->children($namespacesChartMeta['a']);
- foreach($titleDetails as $titleKey => $titleDetail) {
- switch ($titleKey) {
- case "p":
- $titleDetailPart = $titleDetail->children($namespacesChartMeta['a']);
- $caption[] = self::_parseRichText($titleDetailPart);
- }
- }
- break;
- case "layout":
- $titleLayout = self::_chartLayoutDetails($chartDetail,$namespacesChartMeta);
- break;
- }
- }
-
- return new PHPExcel_Chart_Title($caption, $titleLayout);
- } // function _chartTitle()
-
-
- private static function _chartLayoutDetails($chartDetail,$namespacesChartMeta) {
- if (!isset($chartDetail->manualLayout)) {
- return null;
- }
- $details = $chartDetail->manualLayout->children($namespacesChartMeta['c']);
- if (is_null($details)) {
- return null;
- }
- $layout = array();
- foreach($details as $detailKey => $detail) {
-// echo $detailKey,' => ',self::_getAttribute($detail, 'val', 'string'),PHP_EOL;
- $layout[$detailKey] = self::_getAttribute($detail, 'val', 'string');
- }
- return new PHPExcel_Chart_Layout($layout);
- } // function _chartLayoutDetails()
-
-
- private static function _chartDataSeries($chartDetail,$namespacesChartMeta,$plotType) {
- $multiSeriesType = NULL;
- $smoothLine = false;
- $seriesLabel = $seriesCategory = $seriesValues = $plotOrder = array();
-
- $seriesDetailSet = $chartDetail->children($namespacesChartMeta['c']);
- foreach($seriesDetailSet as $seriesDetailKey => $seriesDetails) {
- switch ($seriesDetailKey) {
- case "grouping":
- $multiSeriesType = self::_getAttribute($chartDetail->grouping, 'val', 'string');
- break;
- case "ser":
- $marker = NULL;
- foreach($seriesDetails as $seriesKey => $seriesDetail) {
- switch ($seriesKey) {
- case "idx":
- $seriesIndex = self::_getAttribute($seriesDetail, 'val', 'integer');
- break;
- case "order":
- $seriesOrder = self::_getAttribute($seriesDetail, 'val', 'integer');
- $plotOrder[$seriesIndex] = $seriesOrder;
- break;
- case "tx":
- $seriesLabel[$seriesIndex] = self::_chartDataSeriesValueSet($seriesDetail,$namespacesChartMeta);
- break;
- case "marker":
- $marker = self::_getAttribute($seriesDetail->symbol, 'val', 'string');
- break;
- case "smooth":
- $smoothLine = self::_getAttribute($seriesDetail, 'val', 'boolean');
- break;
- case "cat":
- $seriesCategory[$seriesIndex] = self::_chartDataSeriesValueSet($seriesDetail,$namespacesChartMeta);
- break;
- case "val":
- $seriesValues[$seriesIndex] = self::_chartDataSeriesValueSet($seriesDetail,$namespacesChartMeta,$marker);
- break;
- case "xVal":
- $seriesCategory[$seriesIndex] = self::_chartDataSeriesValueSet($seriesDetail,$namespacesChartMeta,$marker);
- break;
- case "yVal":
- $seriesValues[$seriesIndex] = self::_chartDataSeriesValueSet($seriesDetail,$namespacesChartMeta,$marker);
- break;
- }
- }
- }
- }
- return new PHPExcel_Chart_DataSeries($plotType,$multiSeriesType,$plotOrder,$seriesLabel,$seriesCategory,$seriesValues,$smoothLine);
- } // function _chartDataSeries()
-
-
- private static function _chartDataSeriesValueSet($seriesDetail, $namespacesChartMeta, $marker = null, $smoothLine = false) {
- if (isset($seriesDetail->strRef)) {
- $seriesSource = (string) $seriesDetail->strRef->f;
- $seriesData = self::_chartDataSeriesValues($seriesDetail->strRef->strCache->children($namespacesChartMeta['c']),'s');
-
- return new PHPExcel_Chart_DataSeriesValues('String',$seriesSource,$seriesData['formatCode'],$seriesData['pointCount'],$seriesData['dataValues'],$marker,$smoothLine);
- } elseif (isset($seriesDetail->numRef)) {
- $seriesSource = (string) $seriesDetail->numRef->f;
- $seriesData = self::_chartDataSeriesValues($seriesDetail->numRef->numCache->children($namespacesChartMeta['c']));
-
- return new PHPExcel_Chart_DataSeriesValues('Number',$seriesSource,$seriesData['formatCode'],$seriesData['pointCount'],$seriesData['dataValues'],$marker,$smoothLine);
- } elseif (isset($seriesDetail->multiLvlStrRef)) {
- $seriesSource = (string) $seriesDetail->multiLvlStrRef->f;
- $seriesData = self::_chartDataSeriesValuesMultiLevel($seriesDetail->multiLvlStrRef->multiLvlStrCache->children($namespacesChartMeta['c']),'s');
- $seriesData['pointCount'] = count($seriesData['dataValues']);
-
- return new PHPExcel_Chart_DataSeriesValues('String',$seriesSource,$seriesData['formatCode'],$seriesData['pointCount'],$seriesData['dataValues'],$marker,$smoothLine);
- } elseif (isset($seriesDetail->multiLvlNumRef)) {
- $seriesSource = (string) $seriesDetail->multiLvlNumRef->f;
- $seriesData = self::_chartDataSeriesValuesMultiLevel($seriesDetail->multiLvlNumRef->multiLvlNumCache->children($namespacesChartMeta['c']),'s');
- $seriesData['pointCount'] = count($seriesData['dataValues']);
-
- return new PHPExcel_Chart_DataSeriesValues('String',$seriesSource,$seriesData['formatCode'],$seriesData['pointCount'],$seriesData['dataValues'],$marker,$smoothLine);
- }
- return null;
- } // function _chartDataSeriesValueSet()
-
-
- private static function _chartDataSeriesValues($seriesValueSet,$dataType='n') {
- $seriesVal = array();
- $formatCode = '';
- $pointCount = 0;
-
- foreach($seriesValueSet as $seriesValueIdx => $seriesValue) {
- switch ($seriesValueIdx) {
- case 'ptCount':
- $pointCount = self::_getAttribute($seriesValue, 'val', 'integer');
- break;
- case 'formatCode':
- $formatCode = (string) $seriesValue;
- break;
- case 'pt':
- $pointVal = self::_getAttribute($seriesValue, 'idx', 'integer');
- if ($dataType == 's') {
- $seriesVal[$pointVal] = (string) $seriesValue->v;
- } else {
- $seriesVal[$pointVal] = (float) $seriesValue->v;
- }
- break;
- }
- }
-
- return array( 'formatCode' => $formatCode,
- 'pointCount' => $pointCount,
- 'dataValues' => $seriesVal
- );
- } // function _chartDataSeriesValues()
-
-
- private static function _chartDataSeriesValuesMultiLevel($seriesValueSet,$dataType='n') {
- $seriesVal = array();
- $formatCode = '';
- $pointCount = 0;
-
- foreach($seriesValueSet->lvl as $seriesLevelIdx => $seriesLevel) {
- foreach($seriesLevel as $seriesValueIdx => $seriesValue) {
- switch ($seriesValueIdx) {
- case 'ptCount':
- $pointCount = self::_getAttribute($seriesValue, 'val', 'integer');
- break;
- case 'formatCode':
- $formatCode = (string) $seriesValue;
- break;
- case 'pt':
- $pointVal = self::_getAttribute($seriesValue, 'idx', 'integer');
- if ($dataType == 's') {
- $seriesVal[$pointVal][] = (string) $seriesValue->v;
- } else {
- $seriesVal[$pointVal][] = (float) $seriesValue->v;
- }
- break;
- }
- }
- }
-
- return array( 'formatCode' => $formatCode,
- 'pointCount' => $pointCount,
- 'dataValues' => $seriesVal
- );
- } // function _chartDataSeriesValuesMultiLevel()
-
- private static function _parseRichText($titleDetailPart = null) {
- $value = new PHPExcel_RichText();
-
- foreach($titleDetailPart as $titleDetailElementKey => $titleDetailElement) {
- if (isset($titleDetailElement->t)) {
- $objText = $value->createTextRun( (string) $titleDetailElement->t );
- }
- if (isset($titleDetailElement->rPr)) {
- if (isset($titleDetailElement->rPr->rFont["val"])) {
- $objText->getFont()->setName((string) $titleDetailElement->rPr->rFont["val"]);
- }
-
- $fontSize = (self::_getAttribute($titleDetailElement->rPr, 'sz', 'integer'));
- if (!is_null($fontSize)) {
- $objText->getFont()->setSize(floor($fontSize / 100));
- }
-
- $fontColor = (self::_getAttribute($titleDetailElement->rPr, 'color', 'string'));
- if (!is_null($fontColor)) {
- $objText->getFont()->setColor( new PHPExcel_Style_Color( self::_readColor($fontColor) ) );
- }
-
- $bold = self::_getAttribute($titleDetailElement->rPr, 'b', 'boolean');
- if (!is_null($bold)) {
- $objText->getFont()->setBold($bold);
- }
-
- $italic = self::_getAttribute($titleDetailElement->rPr, 'i', 'boolean');
- if (!is_null($italic)) {
- $objText->getFont()->setItalic($italic);
- }
-
- $baseline = self::_getAttribute($titleDetailElement->rPr, 'baseline', 'integer');
- if (!is_null($baseline)) {
- if ($baseline > 0) {
- $objText->getFont()->setSuperScript(true);
- } elseif($baseline < 0) {
- $objText->getFont()->setSubScript(true);
- }
- }
-
- $underscore = (self::_getAttribute($titleDetailElement->rPr, 'u', 'string'));
- if (!is_null($underscore)) {
- if ($underscore == 'sng') {
- $objText->getFont()->setUnderline(PHPExcel_Style_Font::UNDERLINE_SINGLE);
- } elseif($underscore == 'dbl') {
- $objText->getFont()->setUnderline(PHPExcel_Style_Font::UNDERLINE_DOUBLE);
- } else {
- $objText->getFont()->setUnderline(PHPExcel_Style_Font::UNDERLINE_NONE);
- }
- }
-
- $strikethrough = (self::_getAttribute($titleDetailElement->rPr, 's', 'string'));
- if (!is_null($strikethrough)) {
- if ($strikethrough == 'noStrike') {
- $objText->getFont()->setStrikethrough(false);
- } else {
- $objText->getFont()->setStrikethrough(true);
- }
- }
- }
- }
-
- return $value;
- }
-
- private static function _readChartAttributes($chartDetail) {
- $plotAttributes = array();
- if (isset($chartDetail->dLbls)) {
- if (isset($chartDetail->dLbls->howLegendKey)) {
- $plotAttributes['showLegendKey'] = self::_getAttribute($chartDetail->dLbls->showLegendKey, 'val', 'string');
- }
- if (isset($chartDetail->dLbls->showVal)) {
- $plotAttributes['showVal'] = self::_getAttribute($chartDetail->dLbls->showVal, 'val', 'string');
- }
- if (isset($chartDetail->dLbls->showCatName)) {
- $plotAttributes['showCatName'] = self::_getAttribute($chartDetail->dLbls->showCatName, 'val', 'string');
- }
- if (isset($chartDetail->dLbls->showSerName)) {
- $plotAttributes['showSerName'] = self::_getAttribute($chartDetail->dLbls->showSerName, 'val', 'string');
- }
- if (isset($chartDetail->dLbls->showPercent)) {
- $plotAttributes['showPercent'] = self::_getAttribute($chartDetail->dLbls->showPercent, 'val', 'string');
- }
- if (isset($chartDetail->dLbls->showBubbleSize)) {
- $plotAttributes['showBubbleSize'] = self::_getAttribute($chartDetail->dLbls->showBubbleSize, 'val', 'string');
- }
- if (isset($chartDetail->dLbls->showLeaderLines)) {
- $plotAttributes['showLeaderLines'] = self::_getAttribute($chartDetail->dLbls->showLeaderLines, 'val', 'string');
- }
- }
-
- return $plotAttributes;
- }
-
- private static function _setChartAttributes($plotArea,$plotAttributes)
- {
- foreach($plotAttributes as $plotAttributeKey => $plotAttributeValue) {
- switch($plotAttributeKey) {
- case 'showLegendKey' :
- $plotArea->setShowLegendKey($plotAttributeValue);
- break;
- case 'showVal' :
- $plotArea->setShowVal($plotAttributeValue);
- break;
- case 'showCatName' :
- $plotArea->setShowCatName($plotAttributeValue);
- break;
- case 'showSerName' :
- $plotArea->setShowSerName($plotAttributeValue);
- break;
- case 'showPercent' :
- $plotArea->setShowPercent($plotAttributeValue);
- break;
- case 'showBubbleSize' :
- $plotArea->setShowBubbleSize($plotAttributeValue);
- break;
- case 'showLeaderLines' :
- $plotArea->setShowLeaderLines($plotAttributeValue);
- break;
- }
- }
- }
-
-}
diff --git a/admin/survey/excel/PHPExcel/Reader/Excel2007/Theme.php b/admin/survey/excel/PHPExcel/Reader/Excel2007/Theme.php
deleted file mode 100644
index e4855ce..0000000
--- a/admin/survey/excel/PHPExcel/Reader/Excel2007/Theme.php
+++ /dev/null
@@ -1,124 +0,0 @@
-<?php
-/**
- * PHPExcel
- *
- * Copyright (c) 2006 - 2012 PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel_Reader_Excel2007
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-
-/**
- * PHPExcel_Reader_Excel2007_Theme
- *
- * @category PHPExcel
- * @package PHPExcel_Reader_Excel2007
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- */
-class PHPExcel_Reader_Excel2007_Theme
-{
- /**
- * Theme Name
- *
- * @var string
- */
- private $_themeName;
-
- /**
- * Colour Scheme Name
- *
- * @var string
- */
- private $_colourSchemeName;
-
- /**
- * Colour Map indexed by position
- *
- * @var array of string
- */
- private $_colourMapValues;
-
-
- /**
- * Colour Map
- *
- * @var array of string
- */
- private $_colourMap;
-
-
- /**
- * Create a new PHPExcel_Theme
- *
- */
- public function __construct($themeName,$colourSchemeName,$colourMap)
- {
- // Initialise values
- $this->_themeName = $themeName;
- $this->_colourSchemeName = $colourSchemeName;
- $this->_colourMap = $colourMap;
- }
-
- /**
- * Get Theme Name
- *
- * @return string
- */
- public function getThemeName()
- {
- return $this->_themeName;
- }
-
- /**
- * Get colour Scheme Name
- *
- * @return string
- */
- public function getColourSchemeName() {
- return $this->_colourSchemeName;
- }
-
- /**
- * Get colour Map Value by Position
- *
- * @return string
- */
- public function getColourByIndex($index=0) {
- if (isset($this->_colourMap[$index])) {
- return $this->_colourMap[$index];
- }
- return null;
- }
-
- /**
- * Implement PHP __clone to create a deep clone, not just a shallow copy.
- */
- public function __clone() {
- $vars = get_object_vars($this);
- foreach ($vars as $key => $value) {
- if ((is_object($value)) && ($key != '_parent')) {
- $this->$key = clone $value;
- } else {
- $this->$key = $value;
- }
- }
- }
-}
diff --git a/admin/survey/excel/PHPExcel/Reader/Excel5.php b/admin/survey/excel/PHPExcel/Reader/Excel5.php
deleted file mode 100644
index 238d17c..0000000
--- a/admin/survey/excel/PHPExcel/Reader/Excel5.php
+++ /dev/null
@@ -1,6890 +0,0 @@
-<?php
-/**
- * PHPExcel
- *
- * Copyright (c) 2006 - 2012 PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel_Reader_Excel5
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-// Original file header of ParseXL (used as the base for this class):
-// --------------------------------------------------------------------------------
-// Adapted from Excel_Spreadsheet_Reader developed by users bizon153,
-// trex005, and mmp11 (SourceForge.net)
-// http://sourceforge.net/projects/phpexcelreader/
-// Primary changes made by canyoncasa (dvc) for ParseXL 1.00 ...
-// Modelled moreso after Perl Excel Parse/Write modules
-// Added Parse_Excel_Spreadsheet object
-// Reads a whole worksheet or tab as row,column array or as
-// associated hash of indexed rows and named column fields
-// Added variables for worksheet (tab) indexes and names
-// Added an object call for loading individual woorksheets
-// Changed default indexing defaults to 0 based arrays
-// Fixed date/time and percent formats
-// Includes patches found at SourceForge...
-// unicode patch by nobody
-// unpack("d") machine depedency patch by matchy
-// boundsheet utf16 patch by bjaenichen
-// Renamed functions for shorter names
-// General code cleanup and rigor, including <80 column width
-// Included a testcase Excel file and PHP example calls
-// Code works for PHP 5.x
-
-// Primary changes made by canyoncasa (dvc) for ParseXL 1.10 ...
-// http://sourceforge.net/tracker/index.php?func=detail&aid=1466964&group_id=99160&atid=623334
-// Decoding of formula conditions, results, and tokens.
-// Support for user-defined named cells added as an array "namedcells"
-// Patch code for user-defined named cells supports single cells only.
-// NOTE: this patch only works for BIFF8 as BIFF5-7 use a different
-// external sheet reference structure
-
-
-/** PHPExcel root directory */
-if (!defined('PHPEXCEL_ROOT')) {
- /**
- * @ignore
- */
- define('PHPEXCEL_ROOT', dirname(__FILE__) . '/../../');
- require(PHPEXCEL_ROOT . 'PHPExcel/Autoloader.php');
-}
-
-/**
- * PHPExcel_Reader_Excel5
- *
- * This class uses {@link http://sourceforge.net/projects/phpexcelreader/parseXL}
- *
- * @category PHPExcel
- * @package PHPExcel_Reader_Excel5
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- */
-class PHPExcel_Reader_Excel5 implements PHPExcel_Reader_IReader
-{
- // ParseXL definitions
- const XLS_BIFF8 = 0x0600;
- const XLS_BIFF7 = 0x0500;
- const XLS_WorkbookGlobals = 0x0005;
- const XLS_Worksheet = 0x0010;
-
- // record identifiers
- const XLS_Type_FORMULA = 0x0006;
- const XLS_Type_EOF = 0x000a;
- const XLS_Type_PROTECT = 0x0012;
- const XLS_Type_OBJECTPROTECT = 0x0063;
- const XLS_Type_SCENPROTECT = 0x00dd;
- const XLS_Type_PASSWORD = 0x0013;
- const XLS_Type_HEADER = 0x0014;
- const XLS_Type_FOOTER = 0x0015;
- const XLS_Type_EXTERNSHEET = 0x0017;
- const XLS_Type_DEFINEDNAME = 0x0018;
- const XLS_Type_VERTICALPAGEBREAKS = 0x001a;
- const XLS_Type_HORIZONTALPAGEBREAKS = 0x001b;
- const XLS_Type_NOTE = 0x001c;
- const XLS_Type_SELECTION = 0x001d;
- const XLS_Type_DATEMODE = 0x0022;
- const XLS_Type_EXTERNNAME = 0x0023;
- const XLS_Type_LEFTMARGIN = 0x0026;
- const XLS_Type_RIGHTMARGIN = 0x0027;
- const XLS_Type_TOPMARGIN = 0x0028;
- const XLS_Type_BOTTOMMARGIN = 0x0029;
- const XLS_Type_PRINTGRIDLINES = 0x002b;
- const XLS_Type_FILEPASS = 0x002f;
- const XLS_Type_FONT = 0x0031;
- const XLS_Type_CONTINUE = 0x003c;
- const XLS_Type_PANE = 0x0041;
- const XLS_Type_CODEPAGE = 0x0042;
- const XLS_Type_DEFCOLWIDTH = 0x0055;
- const XLS_Type_OBJ = 0x005d;
- const XLS_Type_COLINFO = 0x007d;
- const XLS_Type_IMDATA = 0x007f;
- const XLS_Type_SHEETPR = 0x0081;
- const XLS_Type_HCENTER = 0x0083;
- const XLS_Type_VCENTER = 0x0084;
- const XLS_Type_SHEET = 0x0085;
- const XLS_Type_PALETTE = 0x0092;
- const XLS_Type_SCL = 0x00a0;
- const XLS_Type_PAGESETUP = 0x00a1;
- const XLS_Type_MULRK = 0x00bd;
- const XLS_Type_MULBLANK = 0x00be;
- const XLS_Type_DBCELL = 0x00d7;
- const XLS_Type_XF = 0x00e0;
- const XLS_Type_MERGEDCELLS = 0x00e5;
- const XLS_Type_MSODRAWINGGROUP = 0x00eb;
- const XLS_Type_MSODRAWING = 0x00ec;
- const XLS_Type_SST = 0x00fc;
- const XLS_Type_LABELSST = 0x00fd;
- const XLS_Type_EXTSST = 0x00ff;
- const XLS_Type_EXTERNALBOOK = 0x01ae;
- const XLS_Type_DATAVALIDATIONS = 0x01b2;
- const XLS_Type_TXO = 0x01b6;
- const XLS_Type_HYPERLINK = 0x01b8;
- const XLS_Type_DATAVALIDATION = 0x01be;
- const XLS_Type_DIMENSION = 0x0200;
- const XLS_Type_BLANK = 0x0201;
- const XLS_Type_NUMBER = 0x0203;
- const XLS_Type_LABEL = 0x0204;
- const XLS_Type_BOOLERR = 0x0205;
- const XLS_Type_STRING = 0x0207;
- const XLS_Type_ROW = 0x0208;
- const XLS_Type_INDEX = 0x020b;
- const XLS_Type_ARRAY = 0x0221;
- const XLS_Type_DEFAULTROWHEIGHT = 0x0225;
- const XLS_Type_WINDOW2 = 0x023e;
- const XLS_Type_RK = 0x027e;
- const XLS_Type_STYLE = 0x0293;
- const XLS_Type_FORMAT = 0x041e;
- const XLS_Type_SHAREDFMLA = 0x04bc;
- const XLS_Type_BOF = 0x0809;
- const XLS_Type_SHEETPROTECTION = 0x0867;
- const XLS_Type_RANGEPROTECTION = 0x0868;
- const XLS_Type_SHEETLAYOUT = 0x0862;
- const XLS_Type_XFEXT = 0x087d;
- const XLS_Type_UNKNOWN = 0xffff;
-
-
- /**
- * Read data only?
- * Identifies whether the Reader should only read data values for cells, and ignore any formatting information;
- * or whether it should read both data and formatting
- *
- * @var boolean
- */
- private $_readDataOnly = false;
-
- /**
- * Restrict which sheets should be loaded?
- * This property holds an array of worksheet names to be loaded. If null, then all worksheets will be loaded.
- *
- * @var array of string
- */
- private $_loadSheetsOnly = null;
-
- /**
- * PHPExcel_Reader_IReadFilter instance
- *
- * @var PHPExcel_Reader_IReadFilter
- */
- private $_readFilter = null;
-
- /**
- * Summary Information stream data.
- *
- * @var string
- */
- private $_summaryInformation;
-
- /**
- * Extended Summary Information stream data.
- *
- * @var string
- */
- private $_documentSummaryInformation;
-
- /**
- * User-Defined Properties stream data.
- *
- * @var string
- */
- private $_userDefinedProperties;
-
- /**
- * Workbook stream data. (Includes workbook globals substream as well as sheet substreams)
- *
- * @var string
- */
- private $_data;
-
- /**
- * Size in bytes of $this->_data
- *
- * @var int
- */
- private $_dataSize;
-
- /**
- * Current position in stream
- *
- * @var integer
- */
- private $_pos;
-
- /**
- * Workbook to be returned by the reader.
- *
- * @var PHPExcel
- */
- private $_phpExcel;
-
- /**
- * Worksheet that is currently being built by the reader.
- *
- * @var PHPExcel_Worksheet
- */
- private $_phpSheet;
-
- /**
- * BIFF version
- *
- * @var int
- */
- private $_version;
-
- /**
- * Codepage set in the Excel file being read. Only important for BIFF5 (Excel 5.0 - Excel 95)
- * For BIFF8 (Excel 97 - Excel 2003) this will always have the value 'UTF-16LE'
- *
- * @var string
- */
- private $_codepage;
-
- /**
- * Shared formats
- *
- * @var array
- */
- private $_formats;
-
- /**
- * Shared fonts
- *
- * @var array
- */
- private $_objFonts;
-
- /**
- * Color palette
- *
- * @var array
- */
- private $_palette;
-
- /**
- * Worksheets
- *
- * @var array
- */
- private $_sheets;
-
- /**
- * External books
- *
- * @var array
- */
- private $_externalBooks;
-
- /**
- * REF structures. Only applies to BIFF8.
- *
- * @var array
- */
- private $_ref;
-
- /**
- * External names
- *
- * @var array
- */
- private $_externalNames;
-
- /**
- * Defined names
- *
- * @var array
- */
- private $_definedname;
-
- /**
- * Shared strings. Only applies to BIFF8.
- *
- * @var array
- */
- private $_sst;
-
- /**
- * Panes are frozen? (in sheet currently being read). See WINDOW2 record.
- *
- * @var boolean
- */
- private $_frozen;
-
- /**
- * Fit printout to number of pages? (in sheet currently being read). See SHEETPR record.
- *
- * @var boolean
- */
- private $_isFitToPages;
-
- /**
- * Objects. One OBJ record contributes with one entry.
- *
- * @var array
- */
- private $_objs;
-
- /**
- * Text Objects. One TXO record corresponds with one entry.
- *
- * @var array
- */
- private $_textObjects;
-
- /**
- * Cell Annotations (BIFF8)
- *
- * @var array
- */
- private $_cellNotes;
-
- /**
- * The combined MSODRAWINGGROUP data
- *
- * @var string
- */
- private $_drawingGroupData;
-
- /**
- * The combined MSODRAWING data (per sheet)
- *
- * @var string
- */
- private $_drawingData;
-
- /**
- * Keep track of XF index
- *
- * @var int
- */
- private $_xfIndex;
-
- /**
- * Mapping of XF index (that is a cell XF) to final index in cellXf collection
- *
- * @var array
- */
- private $_mapCellXfIndex;
-
- /**
- * Mapping of XF index (that is a style XF) to final index in cellStyleXf collection
- *
- * @var array
- */
- private $_mapCellStyleXfIndex;
-
- /**
- * The shared formulas in a sheet. One SHAREDFMLA record contributes with one value.
- *
- * @var array
- */
- private $_sharedFormulas;
-
- /**
- * The shared formula parts in a sheet. One FORMULA record contributes with one value if it
- * refers to a shared formula.
- *
- * @var array
- */
- private $_sharedFormulaParts;
-
-
- /**
- * Create a new PHPExcel_Reader_Excel5 instance
- */
- public function __construct() {
- $this->_readFilter = new PHPExcel_Reader_DefaultReadFilter();
- }
-
-
- /**
- * Read data only?
- * If this is true, then the Reader will only read data values for cells, it will not read any formatting information.
- * If false (the default) it will read data and formatting.
- *
- * @return boolean
- */
- public function getReadDataOnly()
- {
- return $this->_readDataOnly;
- }
-
-
- /**
- * Set read data only
- * Set to true, to advise the Reader only to read data values for cells, and to ignore any formatting information.
- * Set to false (the default) to advise the Reader to read both data and formatting for cells.
- *
- * @param boolean $pValue
- *
- * @return PHPExcel_Reader_Excel5
- */
- public function setReadDataOnly($pValue = false)
- {
- $this->_readDataOnly = $pValue;
- return $this;
- }
-
-
- /**
- * Get which sheets to load
- * Returns either an array of worksheet names (the list of worksheets that should be loaded), or a null
- * indicating that all worksheets in the workbook should be loaded.
- *
- * @return mixed
- */
- public function getLoadSheetsOnly()
- {
- return $this->_loadSheetsOnly;
- }
-
-
- /**
- * Set which sheets to load
- *
- * @param mixed $value
- * This should be either an array of worksheet names to be loaded, or a string containing a single worksheet name.
- * If NULL, then it tells the Reader to read all worksheets in the workbook
- *
- * @return PHPExcel_Reader_Excel5
- */
- public function setLoadSheetsOnly($value = null)
- {
- $this->_loadSheetsOnly = is_array($value) ?
- $value : array($value);
- return $this;
- }
-
-
- /**
- * Set all sheets to load
- * Tells the Reader to load all worksheets from the workbook.
- *
- * @return PHPExcel_Reader_Excel5
- */
- public function setLoadAllSheets()
- {
- $this->_loadSheetsOnly = null;
- return $this;
- }
-
-
- /**
- * Read filter
- *
- * @return PHPExcel_Reader_IReadFilter
- */
- public function getReadFilter() {
- return $this->_readFilter;
- }
-
-
- /**
- * Set read filter
- *
- * @param PHPExcel_Reader_IReadFilter $pValue
- * @return PHPExcel_Reader_Excel5
- */
- public function setReadFilter(PHPExcel_Reader_IReadFilter $pValue) {
- $this->_readFilter = $pValue;
- return $this;
- }
-
-
- /**
- * Can the current PHPExcel_Reader_IReader read the file?
- *
- * @param string $pFileName
- * @return boolean
- * @throws Exception
- */
- public function canRead($pFilename)
- {
- // Check if file exists
- if (!file_exists($pFilename)) {
- throw new Exception("Could not open " . $pFilename . " for reading! File does not exist.");
- }
-
- try {
- // Use ParseXL for the hard work.
- $ole = new PHPExcel_Shared_OLERead();
-
- // get excel data
- $res = $ole->read($pFilename);
- return true;
-
- } catch (Exception $e) {
- return false;
- }
- }
-
-
- /**
- * Reads names of the worksheets from a file, without parsing the whole file to a PHPExcel object
- *
- * @param string $pFilename
- * @throws Exception
- */
- public function listWorksheetNames($pFilename)
- {
- // Check if file exists
- if (!file_exists($pFilename)) {
- throw new Exception("Could not open " . $pFilename . " for reading! File does not exist.");
- }
-
- $worksheetNames = array();
-
- // Read the OLE file
- $this->_loadOLE($pFilename);
-
- // total byte size of Excel data (workbook global substream + sheet substreams)
- $this->_dataSize = strlen($this->_data);
-
- $this->_pos = 0;
- $this->_sheets = array();
-
- // Parse Workbook Global Substream
- while ($this->_pos < $this->_dataSize) {
- $code = self::_GetInt2d($this->_data, $this->_pos);
-
- switch ($code) {
- case self::XLS_Type_BOF: $this->_readBof(); break;
- case self::XLS_Type_SHEET: $this->_readSheet(); break;
- case self::XLS_Type_EOF: $this->_readDefault(); break 2;
- default: $this->_readDefault(); break;
- }
- }
-
- foreach ($this->_sheets as $sheet) {
- if ($sheet['sheetType'] != 0x00) {
- // 0x00: Worksheet, 0x02: Chart, 0x06: Visual Basic module
- continue;
- }
-
- $worksheetNames[] = $sheet['name'];
- }
-
- return $worksheetNames;
- }
-
-
- /**
- * Return worksheet info (Name, Last Column Letter, Last Column Index, Total Rows, Total Columns)
- *
- * @param string $pFilename
- * @throws Exception
- */
- public function listWorksheetInfo($pFilename)
- {
- // Check if file exists
- if (!file_exists($pFilename)) {
- throw new Exception("Could not open " . $pFilename . " for reading! File does not exist.");
- }
-
- $worksheetInfo = array();
-
- // Read the OLE file
- $this->_loadOLE($pFilename);
-
- // total byte size of Excel data (workbook global substream + sheet substreams)
- $this->_dataSize = strlen($this->_data);
-
- // initialize
- $this->_pos = 0;
- $this->_sheets = array();
-
- // Parse Workbook Global Substream
- while ($this->_pos < $this->_dataSize) {
- $code = self::_GetInt2d($this->_data, $this->_pos);
-
- switch ($code) {
- case self::XLS_Type_BOF: $this->_readBof(); break;
- case self::XLS_Type_SHEET: $this->_readSheet(); break;
- case self::XLS_Type_EOF: $this->_readDefault(); break 2;
- default: $this->_readDefault(); break;
- }
- }
-
- // Parse the individual sheets
- foreach ($this->_sheets as $sheet) {
-
- if ($sheet['sheetType'] != 0x00) {
- // 0x00: Worksheet
- // 0x02: Chart
- // 0x06: Visual Basic module
- continue;
- }
-
- $tmpInfo = array();
- $tmpInfo['worksheetName'] = $sheet['name'];
- $tmpInfo['lastColumnLetter'] = 'A';
- $tmpInfo['lastColumnIndex'] = 0;
- $tmpInfo['totalRows'] = 0;
- $tmpInfo['totalColumns'] = 0;
-
- $this->_pos = $sheet['offset'];
-
- while ($this->_pos <= $this->_dataSize - 4) {
- $code = self::_GetInt2d($this->_data, $this->_pos);
-
- switch ($code) {
- case self::XLS_Type_RK:
- case self::XLS_Type_LABELSST:
- case self::XLS_Type_NUMBER:
- case self::XLS_Type_FORMULA:
- case self::XLS_Type_BOOLERR:
- case self::XLS_Type_LABEL:
- $length = self::_GetInt2d($this->_data, $this->_pos + 2);
- $recordData = substr($this->_data, $this->_pos + 4, $length);
-
- // move stream pointer to next record
- $this->_pos += 4 + $length;
-
- $rowIndex = self::_GetInt2d($recordData, 0) + 1;
- $columnIndex = self::_GetInt2d($recordData, 2);
-
- $tmpInfo['totalRows'] = max($tmpInfo['totalRows'], $rowIndex);
- $tmpInfo['lastColumnIndex'] = max($tmpInfo['lastColumnIndex'], $columnIndex);
- break;
- case self::XLS_Type_BOF: $this->_readBof(); break;
- case self::XLS_Type_EOF: $this->_readDefault(); break 2;
- default: $this->_readDefault(); break;
- }
- }
-
- $tmpInfo['lastColumnLetter'] = PHPExcel_Cell::stringFromColumnIndex($tmpInfo['lastColumnIndex']);
- $tmpInfo['totalColumns'] = $tmpInfo['lastColumnIndex'] + 1;
-
- $worksheetInfo[] = $tmpInfo;
- }
-
- return $worksheetInfo;
- }
-
-
- /**
- * Loads PHPExcel from file
- *
- * @param string $pFilename
- * @return PHPExcel
- * @throws Exception
- */
- public function load($pFilename)
- {
- // Read the OLE file
- $this->_loadOLE($pFilename);
-
- // Initialisations
- $this->_phpExcel = new PHPExcel;
- $this->_phpExcel->removeSheetByIndex(0); // remove 1st sheet
- if (!$this->_readDataOnly) {
- $this->_phpExcel->removeCellStyleXfByIndex(0); // remove the default style
- $this->_phpExcel->removeCellXfByIndex(0); // remove the default style
- }
-
- // Read the summary information stream (containing meta data)
- $this->_readSummaryInformation();
-
- // Read the Additional document summary information stream (containing application-specific meta data)
- $this->_readDocumentSummaryInformation();
-
- // total byte size of Excel data (workbook global substream + sheet substreams)
- $this->_dataSize = strlen($this->_data);
-
- // initialize
- $this->_pos = 0;
- $this->_codepage = 'CP1252';
- $this->_formats = array();
- $this->_objFonts = array();
- $this->_palette = array();
- $this->_sheets = array();
- $this->_externalBooks = array();
- $this->_ref = array();
- $this->_definedname = array();
- $this->_sst = array();
- $this->_drawingGroupData = '';
- $this->_xfIndex = '';
- $this->_mapCellXfIndex = array();
- $this->_mapCellStyleXfIndex = array();
-
- // Parse Workbook Global Substream
- while ($this->_pos < $this->_dataSize) {
- $code = self::_GetInt2d($this->_data, $this->_pos);
-
- switch ($code) {
- case self::XLS_Type_BOF: $this->_readBof(); break;
- case self::XLS_Type_FILEPASS: $this->_readFilepass(); break;
- case self::XLS_Type_CODEPAGE: $this->_readCodepage(); break;
- case self::XLS_Type_DATEMODE: $this->_readDateMode(); break;
- case self::XLS_Type_FONT: $this->_readFont(); break;
- case self::XLS_Type_FORMAT: $this->_readFormat(); break;
- case self::XLS_Type_XF: $this->_readXf(); break;
- case self::XLS_Type_XFEXT: $this->_readXfExt(); break;
- case self::XLS_Type_STYLE: $this->_readStyle(); break;
- case self::XLS_Type_PALETTE: $this->_readPalette(); break;
- case self::XLS_Type_SHEET: $this->_readSheet(); break;
- case self::XLS_Type_EXTERNALBOOK: $this->_readExternalBook(); break;
- case self::XLS_Type_EXTERNNAME: $this->_readExternName(); break;
- case self::XLS_Type_EXTERNSHEET: $this->_readExternSheet(); break;
- case self::XLS_Type_DEFINEDNAME: $this->_readDefinedName(); break;
- case self::XLS_Type_MSODRAWINGGROUP: $this->_readMsoDrawingGroup(); break;
- case self::XLS_Type_SST: $this->_readSst(); break;
- case self::XLS_Type_EOF: $this->_readDefault(); break 2;
- default: $this->_readDefault(); break;
- }
- }
-
- // Resolve indexed colors for font, fill, and border colors
- // Cannot be resolved already in XF record, because PALETTE record comes afterwards
- if (!$this->_readDataOnly) {
- foreach ($this->_objFonts as $objFont) {
- if (isset($objFont->colorIndex)) {
- $color = self::_readColor($objFont->colorIndex,$this->_palette,$this->_version);
- $objFont->getColor()->setRGB($color['rgb']);
- }
- }
-
- foreach ($this->_phpExcel->getCellXfCollection() as $objStyle) {
- // fill start and end color
- $fill = $objStyle->getFill();
-
- if (isset($fill->startcolorIndex)) {
- $startColor = self::_readColor($fill->startcolorIndex,$this->_palette,$this->_version);
- $fill->getStartColor()->setRGB($startColor['rgb']);
- }
-
- if (isset($fill->endcolorIndex)) {
- $endColor = self::_readColor($fill->endcolorIndex,$this->_palette,$this->_version);
- $fill->getEndColor()->setRGB($endColor['rgb']);
- }
-
- // border colors
- $top = $objStyle->getBorders()->getTop();
- $right = $objStyle->getBorders()->getRight();
- $bottom = $objStyle->getBorders()->getBottom();
- $left = $objStyle->getBorders()->getLeft();
- $diagonal = $objStyle->getBorders()->getDiagonal();
-
- if (isset($top->colorIndex)) {
- $borderTopColor = self::_readColor($top->colorIndex,$this->_palette,$this->_version);
- $top->getColor()->setRGB($borderTopColor['rgb']);
- }
-
- if (isset($right->colorIndex)) {
- $borderRightColor = self::_readColor($right->colorIndex,$this->_palette,$this->_version);
- $right->getColor()->setRGB($borderRightColor['rgb']);
- }
-
- if (isset($bottom->colorIndex)) {
- $borderBottomColor = self::_readColor($bottom->colorIndex,$this->_palette,$this->_version);
- $bottom->getColor()->setRGB($borderBottomColor['rgb']);
- }
-
- if (isset($left->colorIndex)) {
- $borderLeftColor = self::_readColor($left->colorIndex,$this->_palette,$this->_version);
- $left->getColor()->setRGB($borderLeftColor['rgb']);
- }
-
- if (isset($diagonal->colorIndex)) {
- $borderDiagonalColor = self::_readColor($diagonal->colorIndex,$this->_palette,$this->_version);
- $diagonal->getColor()->setRGB($borderDiagonalColor['rgb']);
- }
- }
- }
-
- // treat MSODRAWINGGROUP records, workbook-level Escher
- if (!$this->_readDataOnly && $this->_drawingGroupData) {
- $escherWorkbook = new PHPExcel_Shared_Escher();
- $reader = new PHPExcel_Reader_Excel5_Escher($escherWorkbook);
- $escherWorkbook = $reader->load($this->_drawingGroupData);
-
- // debug Escher stream
- //$debug = new Debug_Escher(new PHPExcel_Shared_Escher());
- //$debug->load($this->_drawingGroupData);
- }
-
- // Parse the individual sheets
- foreach ($this->_sheets as $sheet) {
-
- if ($sheet['sheetType'] != 0x00) {
- // 0x00: Worksheet, 0x02: Chart, 0x06: Visual Basic module
- continue;
- }
-
- // check if sheet should be skipped
- if (isset($this->_loadSheetsOnly) && !in_array($sheet['name'], $this->_loadSheetsOnly)) {
- continue;
- }
-
- // add sheet to PHPExcel object
- $this->_phpSheet = $this->_phpExcel->createSheet();
- // Use false for $updateFormulaCellReferences to prevent adjustment of worksheet references in formula
- // cells... during the load, all formulae should be correct, and we're simply bringing the worksheet
- // name in line with the formula, not the reverse
- $this->_phpSheet->setTitle($sheet['name'],false);
- $this->_phpSheet->setSheetState($sheet['sheetState']);
-
- $this->_pos = $sheet['offset'];
-
- // Initialize isFitToPages. May change after reading SHEETPR record.
- $this->_isFitToPages = false;
-
- // Initialize drawingData
- $this->_drawingData = '';
-
- // Initialize objs
- $this->_objs = array();
-
- // Initialize shared formula parts
- $this->_sharedFormulaParts = array();
-
- // Initialize shared formulas
- $this->_sharedFormulas = array();
-
- // Initialize text objs
- $this->_textObjects = array();
-
- // Initialize cell annotations
- $this->_cellNotes = array();
- $this->textObjRef = -1;
-
- while ($this->_pos <= $this->_dataSize - 4) {
- $code = self::_GetInt2d($this->_data, $this->_pos);
-
- switch ($code) {
- case self::XLS_Type_BOF: $this->_readBof(); break;
- case self::XLS_Type_PRINTGRIDLINES: $this->_readPrintGridlines(); break;
- case self::XLS_Type_DEFAULTROWHEIGHT: $this->_readDefaultRowHeight(); break;
- case self::XLS_Type_SHEETPR: $this->_readSheetPr(); break;
- case self::XLS_Type_HORIZONTALPAGEBREAKS: $this->_readHorizontalPageBreaks(); break;
- case self::XLS_Type_VERTICALPAGEBREAKS: $this->_readVerticalPageBreaks(); break;
- case self::XLS_Type_HEADER: $this->_readHeader(); break;
- case self::XLS_Type_FOOTER: $this->_readFooter(); break;
- case self::XLS_Type_HCENTER: $this->_readHcenter(); break;
- case self::XLS_Type_VCENTER: $this->_readVcenter(); break;
- case self::XLS_Type_LEFTMARGIN: $this->_readLeftMargin(); break;
- case self::XLS_Type_RIGHTMARGIN: $this->_readRightMargin(); break;
- case self::XLS_Type_TOPMARGIN: $this->_readTopMargin(); break;
- case self::XLS_Type_BOTTOMMARGIN: $this->_readBottomMargin(); break;
- case self::XLS_Type_PAGESETUP: $this->_readPageSetup(); break;
- case self::XLS_Type_PROTECT: $this->_readProtect(); break;
- case self::XLS_Type_SCENPROTECT: $this->_readScenProtect(); break;
- case self::XLS_Type_OBJECTPROTECT: $this->_readObjectProtect(); break;
- case self::XLS_Type_PASSWORD: $this->_readPassword(); break;
- case self::XLS_Type_DEFCOLWIDTH: $this->_readDefColWidth(); break;
- case self::XLS_Type_COLINFO: $this->_readColInfo(); break;
- case self::XLS_Type_DIMENSION: $this->_readDefault(); break;
- case self::XLS_Type_ROW: $this->_readRow(); break;
- case self::XLS_Type_DBCELL: $this->_readDefault(); break;
- case self::XLS_Type_RK: $this->_readRk(); break;
- case self::XLS_Type_LABELSST: $this->_readLabelSst(); break;
- case self::XLS_Type_MULRK: $this->_readMulRk(); break;
- case self::XLS_Type_NUMBER: $this->_readNumber(); break;
- case self::XLS_Type_FORMULA: $this->_readFormula(); break;
- case self::XLS_Type_SHAREDFMLA: $this->_readSharedFmla(); break;
- case self::XLS_Type_BOOLERR: $this->_readBoolErr(); break;
- case self::XLS_Type_MULBLANK: $this->_readMulBlank(); break;
- case self::XLS_Type_LABEL: $this->_readLabel(); break;
- case self::XLS_Type_BLANK: $this->_readBlank(); break;
- case self::XLS_Type_MSODRAWING: $this->_readMsoDrawing(); break;
- case self::XLS_Type_OBJ: $this->_readObj(); break;
- case self::XLS_Type_WINDOW2: $this->_readWindow2(); break;
- case self::XLS_Type_SCL: $this->_readScl(); break;
- case self::XLS_Type_PANE: $this->_readPane(); break;
- case self::XLS_Type_SELECTION: $this->_readSelection(); break;
- case self::XLS_Type_MERGEDCELLS: $this->_readMergedCells(); break;
- case self::XLS_Type_HYPERLINK: $this->_readHyperLink(); break;
- case self::XLS_Type_DATAVALIDATIONS: $this->_readDataValidations(); break;
- case self::XLS_Type_DATAVALIDATION: $this->_readDataValidation(); break;
- case self::XLS_Type_SHEETLAYOUT: $this->_readSheetLayout(); break;
- case self::XLS_Type_SHEETPROTECTION: $this->_readSheetProtection(); break;
- case self::XLS_Type_RANGEPROTECTION: $this->_readRangeProtection(); break;
- case self::XLS_Type_NOTE: $this->_readNote(); break;
- //case self::XLS_Type_IMDATA: $this->_readImData(); break;
- case self::XLS_Type_TXO: $this->_readTextObject(); break;
- case self::XLS_Type_CONTINUE: $this->_readContinue(); break;
- case self::XLS_Type_EOF: $this->_readDefault(); break 2;
- default: $this->_readDefault(); break;
- }
-
- }
-
- // treat MSODRAWING records, sheet-level Escher
- if (!$this->_readDataOnly && $this->_drawingData) {
- $escherWorksheet = new PHPExcel_Shared_Escher();
- $reader = new PHPExcel_Reader_Excel5_Escher($escherWorksheet);
- $escherWorksheet = $reader->load($this->_drawingData);
-
- // debug Escher stream
- //$debug = new Debug_Escher(new PHPExcel_Shared_Escher());
- //$debug->load($this->_drawingData);
-
- // get all spContainers in one long array, so they can be mapped to OBJ records
- $allSpContainers = $escherWorksheet->getDgContainer()->getSpgrContainer()->getAllSpContainers();
- }
-
- // treat OBJ records
- foreach ($this->_objs as $n => $obj) {
-// echo '<hr /><b>Object</b> reference is ',$n,'<br />';
-// var_dump($obj);
-// echo '<br />';
-
- // the first shape container never has a corresponding OBJ record, hence $n + 1
- if (isset($allSpContainers[$n + 1]) && is_object($allSpContainers[$n + 1])) {
- $spContainer = $allSpContainers[$n + 1];
-
- // we skip all spContainers that are a part of a group shape since we cannot yet handle those
- if ($spContainer->getNestingLevel() > 1) {
- continue;
- }
-
- // calculate the width and height of the shape
- list($startColumn, $startRow) = PHPExcel_Cell::coordinateFromString($spContainer->getStartCoordinates());
- list($endColumn, $endRow) = PHPExcel_Cell::coordinateFromString($spContainer->getEndCoordinates());
-
- $startOffsetX = $spContainer->getStartOffsetX();
- $startOffsetY = $spContainer->getStartOffsetY();
- $endOffsetX = $spContainer->getEndOffsetX();
- $endOffsetY = $spContainer->getEndOffsetY();
-
- $width = PHPExcel_Shared_Excel5::getDistanceX($this->_phpSheet, $startColumn, $startOffsetX, $endColumn, $endOffsetX);
- $height = PHPExcel_Shared_Excel5::getDistanceY($this->_phpSheet, $startRow, $startOffsetY, $endRow, $endOffsetY);
-
- // calculate offsetX and offsetY of the shape
- $offsetX = $startOffsetX * PHPExcel_Shared_Excel5::sizeCol($this->_phpSheet, $startColumn) / 1024;
- $offsetY = $startOffsetY * PHPExcel_Shared_Excel5::sizeRow($this->_phpSheet, $startRow) / 256;
-
- switch ($obj['otObjType']) {
- case 0x19:
- // Note
-// echo 'Cell Annotation Object<br />';
-// echo 'Object ID is ',$obj['idObjID'],'<br />';
-//
- if (isset($this->_cellNotes[$obj['idObjID']])) {
- $cellNote = $this->_cellNotes[$obj['idObjID']];
-
- if (isset($this->_textObjects[$obj['idObjID']])) {
- $textObject = $this->_textObjects[$obj['idObjID']];
- $this->_cellNotes[$obj['idObjID']]['objTextData'] = $textObject;
- }
- }
- break;
-
- case 0x08:
-// echo 'Picture Object<br />';
- // picture
-
- // get index to BSE entry (1-based)
- $BSEindex = $spContainer->getOPT(0x0104);
- $BSECollection = $escherWorkbook->getDggContainer()->getBstoreContainer()->getBSECollection();
- $BSE = $BSECollection[$BSEindex - 1];
- $blipType = $BSE->getBlipType();
-
- // need check because some blip types are not supported by Escher reader such as EMF
- if ($blip = $BSE->getBlip()) {
- $ih = imagecreatefromstring($blip->getData());
- $drawing = new PHPExcel_Worksheet_MemoryDrawing();
- $drawing->setImageResource($ih);
-
- // width, height, offsetX, offsetY
- $drawing->setResizeProportional(false);
- $drawing->setWidth($width);
- $drawing->setHeight($height);
- $drawing->setOffsetX($offsetX);
- $drawing->setOffsetY($offsetY);
-
- switch ($blipType) {
- case PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE::BLIPTYPE_JPEG:
- $drawing->setRenderingFunction(PHPExcel_Worksheet_MemoryDrawing::RENDERING_JPEG);
- $drawing->setMimeType(PHPExcel_Worksheet_MemoryDrawing::MIMETYPE_JPEG);
- break;
-
- case PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE::BLIPTYPE_PNG:
- $drawing->setRenderingFunction(PHPExcel_Worksheet_MemoryDrawing::RENDERING_PNG);
- $drawing->setMimeType(PHPExcel_Worksheet_MemoryDrawing::MIMETYPE_PNG);
- break;
- }
-
- $drawing->setWorksheet($this->_phpSheet);
- $drawing->setCoordinates($spContainer->getStartCoordinates());
- }
-
- break;
-
- default:
- // other object type
- break;
-
- }
- }
- }
-
- // treat SHAREDFMLA records
- if ($this->_version == self::XLS_BIFF8) {
- foreach ($this->_sharedFormulaParts as $cell => $baseCell) {
- list($column, $row) = PHPExcel_Cell::coordinateFromString($cell);
- if (($this->getReadFilter() !== NULL) && $this->getReadFilter()->readCell($column, $row, $this->_phpSheet->getTitle()) ) {
- $formula = $this->_getFormulaFromStructure($this->_sharedFormulas[$baseCell], $cell);
- $this->_phpSheet->getCell($cell)->setValueExplicit('=' . $formula, PHPExcel_Cell_DataType::TYPE_FORMULA);
- }
- }
- }
-
- if (!empty($this->_cellNotes)) {
- foreach($this->_cellNotes as $note => $noteDetails) {
- if (!isset($noteDetails['objTextData'])) {
- if (isset($this->_textObjects[$note])) {
- $textObject = $this->_textObjects[$note];
- $noteDetails['objTextData'] = $textObject;
- } else {
- $noteDetails['objTextData']['text'] = '';
- }
- }
-// echo '<b>Cell annotation ',$note,'</b><br />';
-// var_dump($noteDetails);
-// echo '<br />';
- $cellAddress = str_replace('$','',$noteDetails['cellRef']);
- $this->_phpSheet->getComment( $cellAddress )
- ->setAuthor( $noteDetails['author'] )
- ->setText($this->_parseRichText($noteDetails['objTextData']['text']) );
- }
- }
- }
-
- // add the named ranges (defined names)
- foreach ($this->_definedname as $definedName) {
- if ($definedName['isBuiltInName']) {
- switch ($definedName['name']) {
-
- case pack('C', 0x06):
- // print area
- // in general, formula looks like this: Foo!$C$7:$J$66,Bar!$A$1:$IV$2
-
- $ranges = explode(',', $definedName['formula']); // FIXME: what if sheetname contains comma?
-
- $extractedRanges = array();
- foreach ($ranges as $range) {
- // $range should look like one of these
- // Foo!$C$7:$J$66
- // Bar!$A$1:$IV$2
-
- $explodes = explode('!', $range); // FIXME: what if sheetname contains exclamation mark?
- $sheetName = $explodes[0];
-
- if (count($explodes) == 2) {
- $extractedRanges[] = str_replace('$', '', $explodes[1]); // C7:J66
- }
- }
- if ($docSheet = $this->_phpExcel->getSheetByName($sheetName)) {
- $docSheet->getPageSetup()->setPrintArea(implode(',', $extractedRanges)); // C7:J66,A1:IV2
- }
- break;
-
- case pack('C', 0x07):
- // print titles (repeating rows)
- // Assuming BIFF8, there are 3 cases
- // 1. repeating rows
- // formula looks like this: Sheet!$A$1:$IV$2
- // rows 1-2 repeat
- // 2. repeating columns
- // formula looks like this: Sheet!$A$1:$B$65536
- // columns A-B repeat
- // 3. both repeating rows and repeating columns
- // formula looks like this: Sheet!$A$1:$B$65536,Sheet!$A$1:$IV$2
-
- $ranges = explode(',', $definedName['formula']); // FIXME: what if sheetname contains comma?
-
- foreach ($ranges as $range) {
- // $range should look like this one of these
- // Sheet!$A$1:$B$65536
- // Sheet!$A$1:$IV$2
-
- $explodes = explode('!', $range);
-
- if (count($explodes) == 2) {
- if ($docSheet = $this->_phpExcel->getSheetByName($explodes[0])) {
-
- $extractedRange = $explodes[1];
- $extractedRange = str_replace('$', '', $extractedRange);
-
- $coordinateStrings = explode(':', $extractedRange);
- if (count($coordinateStrings) == 2) {
- list($firstColumn, $firstRow) = PHPExcel_Cell::coordinateFromString($coordinateStrings[0]);
- list($lastColumn, $lastRow) = PHPExcel_Cell::coordinateFromString($coordinateStrings[1]);
-
- if ($firstColumn == 'A' and $lastColumn == 'IV') {
- // then we have repeating rows
- $docSheet->getPageSetup()->setRowsToRepeatAtTop(array($firstRow, $lastRow));
- } elseif ($firstRow == 1 and $lastRow == 65536) {
- // then we have repeating columns
- $docSheet->getPageSetup()->setColumnsToRepeatAtLeft(array($firstColumn, $lastColumn));
- }
- }
- }
- }
- }
- break;
-
- }
- } else {
- // Extract range
- $explodes = explode('!', $definedName['formula']);
-
- if (count($explodes) == 2) {
- if (($docSheet = $this->_phpExcel->getSheetByName($explodes[0])) ||
- ($docSheet = $this->_phpExcel->getSheetByName(trim($explodes[0],"'")))) {
- $extractedRange = $explodes[1];
- $extractedRange = str_replace('$', '', $extractedRange);
-
- $localOnly = ($definedName['scope'] == 0) ? false : true;
-
- $scope = ($definedName['scope'] == 0) ?
- null : $this->_phpExcel->getSheetByName($this->_sheets[$definedName['scope'] - 1]['name']);
-
- $this->_phpExcel->addNamedRange( new PHPExcel_NamedRange((string)$definedName['name'], $docSheet, $extractedRange, $localOnly, $scope) );
- }
- } else {
- // Named Value
- // TODO Provide support for named values
- }
- }
- }
-
- return $this->_phpExcel;
- }
-
-
- /**
- * Use OLE reader to extract the relevant data streams from the OLE file
- *
- * @param string $pFilename
- */
- private function _loadOLE($pFilename)
- {
- // OLE reader
- $ole = new PHPExcel_Shared_OLERead();
-
- // get excel data,
- $res = $ole->read($pFilename);
- // Get workbook data: workbook stream + sheet streams
- $this->_data = $ole->getStream($ole->wrkbook);
-
- // Get summary information data
- $this->_summaryInformation = $ole->getStream($ole->summaryInformation);
-
- // Get additional document summary information data
- $this->_documentSummaryInformation = $ole->getStream($ole->documentSummaryInformation);
-
- // Get user-defined property data
-// $this->_userDefinedProperties = $ole->getUserDefinedProperties();
- }
-
-
- /**
- * Read summary information
- */
- private function _readSummaryInformation()
- {
- if (!isset($this->_summaryInformation)) {
- return;
- }
-
- // offset: 0; size: 2; must be 0xFE 0xFF (UTF-16 LE byte order mark)
- // offset: 2; size: 2;
- // offset: 4; size: 2; OS version
- // offset: 6; size: 2; OS indicator
- // offset: 8; size: 16
- // offset: 24; size: 4; section count
- $secCount = self::_GetInt4d($this->_summaryInformation, 24);
-
- // offset: 28; size: 16; first section's class id: e0 85 9f f2 f9 4f 68 10 ab 91 08 00 2b 27 b3 d9
- // offset: 44; size: 4
- $secOffset = self::_GetInt4d($this->_summaryInformation, 44);
-
- // section header
- // offset: $secOffset; size: 4; section length
- $secLength = self::_GetInt4d($this->_summaryInformation, $secOffset);
-
- // offset: $secOffset+4; size: 4; property count
- $countProperties = self::_GetInt4d($this->_summaryInformation, $secOffset+4);
-
- // initialize code page (used to resolve string values)
- $codePage = 'CP1252';
-
- // offset: ($secOffset+8); size: var
- // loop through property decarations and properties
- for ($i = 0; $i < $countProperties; ++$i) {
-
- // offset: ($secOffset+8) + (8 * $i); size: 4; property ID
- $id = self::_GetInt4d($this->_summaryInformation, ($secOffset+8) + (8 * $i));
-
- // Use value of property id as appropriate
- // offset: ($secOffset+12) + (8 * $i); size: 4; offset from beginning of section (48)
- $offset = self::_GetInt4d($this->_summaryInformation, ($secOffset+12) + (8 * $i));
-
- $type = self::_GetInt4d($this->_summaryInformation, $secOffset + $offset);
-
- // initialize property value
- $value = null;
-
- // extract property value based on property type
- switch ($type) {
- case 0x02: // 2 byte signed integer
- $value = self::_GetInt2d($this->_summaryInformation, $secOffset + 4 + $offset);
- break;
-
- case 0x03: // 4 byte signed integer
- $value = self::_GetInt4d($this->_summaryInformation, $secOffset + 4 + $offset);
- break;
-
- case 0x13: // 4 byte unsigned integer
- // not needed yet, fix later if necessary
- break;
-
- case 0x1E: // null-terminated string prepended by dword string length
- $byteLength = self::_GetInt4d($this->_summaryInformation, $secOffset + 4 + $offset);
- $value = substr($this->_summaryInformation, $secOffset + 8 + $offset, $byteLength);
- $value = PHPExcel_Shared_String::ConvertEncoding($value, 'UTF-8', $codePage);
- $value = rtrim($value);
- break;
-
- case 0x40: // Filetime (64-bit value representing the number of 100-nanosecond intervals since January 1, 1601)
- // PHP-time
- $value = PHPExcel_Shared_OLE::OLE2LocalDate(substr($this->_summaryInformation, $secOffset + 4 + $offset, 8));
- break;
-
- case 0x47: // Clipboard format
- // not needed yet, fix later if necessary
- break;
- }
-
- switch ($id) {
- case 0x01: // Code Page
- $codePage = PHPExcel_Shared_CodePage::NumberToName($value);
- break;
-
- case 0x02: // Title
- $this->_phpExcel->getProperties()->setTitle($value);
- break;
-
- case 0x03: // Subject
- $this->_phpExcel->getProperties()->setSubject($value);
- break;
-
- case 0x04: // Author (Creator)
- $this->_phpExcel->getProperties()->setCreator($value);
- break;
-
- case 0x05: // Keywords
- $this->_phpExcel->getProperties()->setKeywords($value);
- break;
-
- case 0x06: // Comments (Description)
- $this->_phpExcel->getProperties()->setDescription($value);
- break;
-
- case 0x07: // Template
- // Not supported by PHPExcel
- break;
-
- case 0x08: // Last Saved By (LastModifiedBy)
- $this->_phpExcel->getProperties()->setLastModifiedBy($value);
- break;
-
- case 0x09: // Revision
- // Not supported by PHPExcel
- break;
-
- case 0x0A: // Total Editing Time
- // Not supported by PHPExcel
- break;
-
- case 0x0B: // Last Printed
- // Not supported by PHPExcel
- break;
-
- case 0x0C: // Created Date/Time
- $this->_phpExcel->getProperties()->setCreated($value);
- break;
-
- case 0x0D: // Modified Date/Time
- $this->_phpExcel->getProperties()->setModified($value);
- break;
-
- case 0x0E: // Number of Pages
- // Not supported by PHPExcel
- break;
-
- case 0x0F: // Number of Words
- // Not supported by PHPExcel
- break;
-
- case 0x10: // Number of Characters
- // Not supported by PHPExcel
- break;
-
- case 0x11: // Thumbnail
- // Not supported by PHPExcel
- break;
-
- case 0x12: // Name of creating application
- // Not supported by PHPExcel
- break;
-
- case 0x13: // Security
- // Not supported by PHPExcel
- break;
-
- }
- }
- }
-
-
- /**
- * Read additional document summary information
- */
- private function _readDocumentSummaryInformation()
- {
- if (!isset($this->_documentSummaryInformation)) {
- return;
- }
-
- // offset: 0; size: 2; must be 0xFE 0xFF (UTF-16 LE byte order mark)
- // offset: 2; size: 2;
- // offset: 4; size: 2; OS version
- // offset: 6; size: 2; OS indicator
- // offset: 8; size: 16
- // offset: 24; size: 4; section count
- $secCount = self::_GetInt4d($this->_documentSummaryInformation, 24);
-// echo '$secCount = ',$secCount,'<br />';
-
- // offset: 28; size: 16; first section's class id: 02 d5 cd d5 9c 2e 1b 10 93 97 08 00 2b 2c f9 ae
- // offset: 44; size: 4; first section offset
- $secOffset = self::_GetInt4d($this->_documentSummaryInformation, 44);
-// echo '$secOffset = ',$secOffset,'<br />';
-
- // section header
- // offset: $secOffset; size: 4; section length
- $secLength = self::_GetInt4d($this->_documentSummaryInformation, $secOffset);
-// echo '$secLength = ',$secLength,'<br />';
-
- // offset: $secOffset+4; size: 4; property count
- $countProperties = self::_GetInt4d($this->_documentSummaryInformation, $secOffset+4);
-// echo '$countProperties = ',$countProperties,'<br />';
-
- // initialize code page (used to resolve string values)
- $codePage = 'CP1252';
-
- // offset: ($secOffset+8); size: var
- // loop through property decarations and properties
- for ($i = 0; $i < $countProperties; ++$i) {
-// echo 'Property ',$i,'<br />';
- // offset: ($secOffset+8) + (8 * $i); size: 4; property ID
- $id = self::_GetInt4d($this->_documentSummaryInformation, ($secOffset+8) + (8 * $i));
-// echo 'ID is ',$id,'<br />';
-
- // Use value of property id as appropriate
- // offset: 60 + 8 * $i; size: 4; offset from beginning of section (48)
- $offset = self::_GetInt4d($this->_documentSummaryInformation, ($secOffset+12) + (8 * $i));
-
- $type = self::_GetInt4d($this->_documentSummaryInformation, $secOffset + $offset);
-// echo 'Type is ',$type,', ';
-
- // initialize property value
- $value = null;
-
- // extract property value based on property type
- switch ($type) {
- case 0x02: // 2 byte signed integer
- $value = self::_GetInt2d($this->_documentSummaryInformation, $secOffset + 4 + $offset);
- break;
-
- case 0x03: // 4 byte signed integer
- $value = self::_GetInt4d($this->_documentSummaryInformation, $secOffset + 4 + $offset);
- break;
-
- case 0x0B: // Boolean
- $value = self::_GetInt2d($this->_documentSummaryInformation, $secOffset + 4 + $offset);
- $value = ($value == 0 ? false : true);
- break;
-
- case 0x13: // 4 byte unsigned integer
- // not needed yet, fix later if necessary
- break;
-
- case 0x1E: // null-terminated string prepended by dword string length
- $byteLength = self::_GetInt4d($this->_documentSummaryInformation, $secOffset + 4 + $offset);
- $value = substr($this->_documentSummaryInformation, $secOffset + 8 + $offset, $byteLength);
- $value = PHPExcel_Shared_String::ConvertEncoding($value, 'UTF-8', $codePage);
- $value = rtrim($value);
- break;
-
- case 0x40: // Filetime (64-bit value representing the number of 100-nanosecond intervals since January 1, 1601)
- // PHP-Time
- $value = PHPExcel_Shared_OLE::OLE2LocalDate(substr($this->_documentSummaryInformation, $secOffset + 4 + $offset, 8));
- break;
-
- case 0x47: // Clipboard format
- // not needed yet, fix later if necessary
- break;
- }
-
- switch ($id) {
- case 0x01: // Code Page
- $codePage = PHPExcel_Shared_CodePage::NumberToName($value);
- break;
-
- case 0x02: // Category
- $this->_phpExcel->getProperties()->setCategory($value);
- break;
-
- case 0x03: // Presentation Target
- // Not supported by PHPExcel
- break;
-
- case 0x04: // Bytes
- // Not supported by PHPExcel
- break;
-
- case 0x05: // Lines
- // Not supported by PHPExcel
- break;
-
- case 0x06: // Paragraphs
- // Not supported by PHPExcel
- break;
-
- case 0x07: // Slides
- // Not supported by PHPExcel
- break;
-
- case 0x08: // Notes
- // Not supported by PHPExcel
- break;
-
- case 0x09: // Hidden Slides
- // Not supported by PHPExcel
- break;
-
- case 0x0A: // MM Clips
- // Not supported by PHPExcel
- break;
-
- case 0x0B: // Scale Crop
- // Not supported by PHPExcel
- break;
-
- case 0x0C: // Heading Pairs
- // Not supported by PHPExcel
- break;
-
- case 0x0D: // Titles of Parts
- // Not supported by PHPExcel
- break;
-
- case 0x0E: // Manager
- $this->_phpExcel->getProperties()->setManager($value);
- break;
-
- case 0x0F: // Company
- $this->_phpExcel->getProperties()->setCompany($value);
- break;
-
- case 0x10: // Links up-to-date
- // Not supported by PHPExcel
- break;
-
- }
- }
- }
-
-
- /**
- * Reads a general type of BIFF record. Does nothing except for moving stream pointer forward to next record.
- */
- private function _readDefault()
- {
- $length = self::_GetInt2d($this->_data, $this->_pos + 2);
-// $recordData = substr($this->_data, $this->_pos + 4, $length);
-
- // move stream pointer to next record
- $this->_pos += 4 + $length;
- }
-
-
- /**
- * The NOTE record specifies a comment associated with a particular cell. In Excel 95 (BIFF7) and earlier versions,
- * this record stores a note (cell note). This feature was significantly enhanced in Excel 97.
- */
- private function _readNote()
- {
-// echo '<b>Read Cell Annotation</b><br />';
- $length = self::_GetInt2d($this->_data, $this->_pos + 2);
- $recordData = substr($this->_data, $this->_pos + 4, $length);
-
- // move stream pointer to next record
- $this->_pos += 4 + $length;
-
- if ($this->_readDataOnly) {
- return;
- }
-
- $cellAddress = $this->_readBIFF8CellAddress(substr($recordData, 0, 4));
- if ($this->_version == self::XLS_BIFF8) {
- $noteObjID = self::_GetInt2d($recordData, 6);
- $noteAuthor = self::_readUnicodeStringLong(substr($recordData, 8));
- $noteAuthor = $noteAuthor['value'];
-// echo 'Note Address=',$cellAddress,'<br />';
-// echo 'Note Object ID=',$noteObjID,'<br />';
-// echo 'Note Author=',$noteAuthor,'<hr />';
-//
- $this->_cellNotes[$noteObjID] = array('cellRef' => $cellAddress,
- 'objectID' => $noteObjID,
- 'author' => $noteAuthor
- );
- } else {
- $extension = false;
- if ($cellAddress == '$B$65536') {
- // If the address row is -1 and the column is 0, (which translates as $B$65536) then this is a continuation
- // note from the previous cell annotation. We're not yet handling this, so annotations longer than the
- // max 2048 bytes will probably throw a wobbly.
- $row = self::_GetInt2d($recordData, 0);
- $extension = true;
- $cellAddress = array_pop(array_keys($this->_phpSheet->getComments()));
- }
-// echo 'Note Address=',$cellAddress,'<br />';
-
- $cellAddress = str_replace('$','',$cellAddress);
- $noteLength = self::_GetInt2d($recordData, 4);
- $noteText = trim(substr($recordData, 6));
-// echo 'Note Length=',$noteLength,'<br />';
-// echo 'Note Text=',$noteText,'<br />';
-
- if ($extension) {
- // Concatenate this extension with the currently set comment for the cell
- $comment = $this->_phpSheet->getComment( $cellAddress );
- $commentText = $comment->getText()->getPlainText();
- $comment->setText($this->_parseRichText($commentText.$noteText) );
- } else {
- // Set comment for the cell
- $this->_phpSheet->getComment( $cellAddress )
-// ->setAuthor( $author )
- ->setText($this->_parseRichText($noteText) );
- }
- }
-
- }
-
-
- /**
- * The TEXT Object record contains the text associated with a cell annotation.
- */
- private function _readTextObject()
- {
- $length = self::_GetInt2d($this->_data, $this->_pos + 2);
- $recordData = substr($this->_data, $this->_pos + 4, $length);
-
- // move stream pointer to next record
- $this->_pos += 4 + $length;
-
- if ($this->_readDataOnly) {
- return;
- }
-
- // recordData consists of an array of subrecords looking like this:
- // grbit: 2 bytes; Option Flags
- // rot: 2 bytes; rotation
- // cchText: 2 bytes; length of the text (in the first continue record)
- // cbRuns: 2 bytes; length of the formatting (in the second continue record)
- // followed by the continuation records containing the actual text and formatting
- $grbitOpts = self::_GetInt2d($recordData, 0);
- $rot = self::_GetInt2d($recordData, 2);
- $cchText = self::_GetInt2d($recordData, 10);
- $cbRuns = self::_GetInt2d($recordData, 12);
- $text = $this->_getSplicedRecordData();
-
- $this->_textObjects[$this->textObjRef] = array(
- 'text' => substr($text["recordData"],$text["spliceOffsets"][0]+1,$cchText),
- 'format' => substr($text["recordData"],$text["spliceOffsets"][1],$cbRuns),
- 'alignment' => $grbitOpts,
- 'rotation' => $rot
- );
-
-// echo '<b>_readTextObject()</b><br />';
-// var_dump($this->_textObjects[$this->textObjRef]);
-// echo '<br />';
- }
-
-
- /**
- * Read BOF
- */
- private function _readBof()
- {
- $length = self::_GetInt2d($this->_data, $this->_pos + 2);
- $recordData = substr($this->_data, $this->_pos + 4, $length);
-
- // move stream pointer to next record
- $this->_pos += 4 + $length;
-
- // offset: 2; size: 2; type of the following data
- $substreamType = self::_GetInt2d($recordData, 2);
-
- switch ($substreamType) {
- case self::XLS_WorkbookGlobals:
- $version = self::_GetInt2d($recordData, 0);
- if (($version != self::XLS_BIFF8) && ($version != self::XLS_BIFF7)) {
- throw new Exception('Cannot read this Excel file. Version is too old.');
- }
- $this->_version = $version;
- break;
-
- case self::XLS_Worksheet:
- // do not use this version information for anything
- // it is unreliable (OpenOffice doc, 5.8), use only version information from the global stream
- break;
-
- default:
- // substream, e.g. chart
- // just skip the entire substream
- do {
- $code = self::_GetInt2d($this->_data, $this->_pos);
- $this->_readDefault();
- } while ($code != self::XLS_Type_EOF && $this->_pos < $this->_dataSize);
- break;
- }
- }
-
-
- /**
- * FILEPASS
- *
- * This record is part of the File Protection Block. It
- * contains information about the read/write password of the
- * file. All record contents following this record will be
- * encrypted.
- *
- * -- "OpenOffice.org's Documentation of the Microsoft
- * Excel File Format"
- */
- private function _readFilepass()
- {
- $length = self::_GetInt2d($this->_data, $this->_pos + 2);
-// $recordData = substr($this->_data, $this->_pos + 4, $length);
-
- // move stream pointer to next record
- $this->_pos += 4 + $length;
-
- throw new Exception('Cannot read encrypted file');
- }
-
-
- /**
- * CODEPAGE
- *
- * This record stores the text encoding used to write byte
- * strings, stored as MS Windows code page identifier.
- *
- * -- "OpenOffice.org's Documentation of the Microsoft
- * Excel File Format"
- */
- private function _readCodepage()
- {
- $length = self::_GetInt2d($this->_data, $this->_pos + 2);
- $recordData = substr($this->_data, $this->_pos + 4, $length);
-
- // move stream pointer to next record
- $this->_pos += 4 + $length;
-
- // offset: 0; size: 2; code page identifier
- $codepage = self::_GetInt2d($recordData, 0);
-
- $this->_codepage = PHPExcel_Shared_CodePage::NumberToName($codepage);
- }
-
-
- /**
- * DATEMODE
- *
- * This record specifies the base date for displaying date
- * values. All dates are stored as count of days past this
- * base date. In BIFF2-BIFF4 this record is part of the
- * Calculation Settings Block. In BIFF5-BIFF8 it is
- * stored in the Workbook Globals Substream.
- *
- * -- "OpenOffice.org's Documentation of the Microsoft
- * Excel File Format"
- */
- private function _readDateMode()
- {
- $length = self::_GetInt2d($this->_data, $this->_pos + 2);
- $recordData = substr($this->_data, $this->_pos + 4, $length);
-
- // move stream pointer to next record
- $this->_pos += 4 + $length;
-
- // offset: 0; size: 2; 0 = base 1900, 1 = base 1904
- PHPExcel_Shared_Date::setExcelCalendar(PHPExcel_Shared_Date::CALENDAR_WINDOWS_1900);
- if (ord($recordData{0}) == 1) {
- PHPExcel_Shared_Date::setExcelCalendar(PHPExcel_Shared_Date::CALENDAR_MAC_1904);
- }
- }
-
-
- /**
- * Read a FONT record
- */
- private function _readFont()
- {
- $length = self::_GetInt2d($this->_data, $this->_pos + 2);
- $recordData = substr($this->_data, $this->_pos + 4, $length);
-
- // move stream pointer to next record
- $this->_pos += 4 + $length;
-
- if (!$this->_readDataOnly) {
- $objFont = new PHPExcel_Style_Font();
-
- // offset: 0; size: 2; height of the font (in twips = 1/20 of a point)
- $size = self::_GetInt2d($recordData, 0);
- $objFont->setSize($size / 20);
-
- // offset: 2; size: 2; option flags
- // bit: 0; mask 0x0001; bold (redundant in BIFF5-BIFF8)
- // bit: 1; mask 0x0002; italic
- $isItalic = (0x0002 & self::_GetInt2d($recordData, 2)) >> 1;
- if ($isItalic) $objFont->setItalic(true);
-
- // bit: 2; mask 0x0004; underlined (redundant in BIFF5-BIFF8)
- // bit: 3; mask 0x0008; strike
- $isStrike = (0x0008 & self::_GetInt2d($recordData, 2)) >> 3;
- if ($isStrike) $objFont->setStrikethrough(true);
-
- // offset: 4; size: 2; colour index
- $colorIndex = self::_GetInt2d($recordData, 4);
- $objFont->colorIndex = $colorIndex;
-
- // offset: 6; size: 2; font weight
- $weight = self::_GetInt2d($recordData, 6);
- switch ($weight) {
- case 0x02BC:
- $objFont->setBold(true);
- break;
- }
-
- // offset: 8; size: 2; escapement type
- $escapement = self::_GetInt2d($recordData, 8);
- switch ($escapement) {
- case 0x0001:
- $objFont->setSuperScript(true);
- break;
- case 0x0002:
- $objFont->setSubScript(true);
- break;
- }
-
- // offset: 10; size: 1; underline type
- $underlineType = ord($recordData{10});
- switch ($underlineType) {
- case 0x00:
- break; // no underline
- case 0x01:
- $objFont->setUnderline(PHPExcel_Style_Font::UNDERLINE_SINGLE);
- break;
- case 0x02:
- $objFont->setUnderline(PHPExcel_Style_Font::UNDERLINE_DOUBLE);
- break;
- case 0x21:
- $objFont->setUnderline(PHPExcel_Style_Font::UNDERLINE_SINGLEACCOUNTING);
- break;
- case 0x22:
- $objFont->setUnderline(PHPExcel_Style_Font::UNDERLINE_DOUBLEACCOUNTING);
- break;
- }
-
- // offset: 11; size: 1; font family
- // offset: 12; size: 1; character set
- // offset: 13; size: 1; not used
- // offset: 14; size: var; font name
- if ($this->_version == self::XLS_BIFF8) {
- $string = self::_readUnicodeStringShort(substr($recordData, 14));
- } else {
- $string = $this->_readByteStringShort(substr($recordData, 14));
- }
- $objFont->setName($string['value']);
-
- $this->_objFonts[] = $objFont;
- }
- }
-
-
- /**
- * FORMAT
- *
- * This record contains information about a number format.
- * All FORMAT records occur together in a sequential list.
- *
- * In BIFF2-BIFF4 other records referencing a FORMAT record
- * contain a zero-based index into this list. From BIFF5 on
- * the FORMAT record contains the index itself that will be
- * used by other records.
- *
- * -- "OpenOffice.org's Documentation of the Microsoft
- * Excel File Format"
- */
- private function _readFormat()
- {
- $length = self::_GetInt2d($this->_data, $this->_pos + 2);
- $recordData = substr($this->_data, $this->_pos + 4, $length);
-
- // move stream pointer to next record
- $this->_pos += 4 + $length;
-
- if (!$this->_readDataOnly) {
- $indexCode = self::_GetInt2d($recordData, 0);
-
- if ($this->_version == self::XLS_BIFF8) {
- $string = self::_readUnicodeStringLong(substr($recordData, 2));
- } else {
- // BIFF7
- $string = $this->_readByteStringShort(substr($recordData, 2));
- }
-
- $formatString = $string['value'];
- $this->_formats[$indexCode] = $formatString;
- }
- }
-
-
- /**
- * XF - Extended Format
- *
- * This record contains formatting information for cells, rows, columns or styles.
- * According to http://support.microsoft.com/kb/147732 there are always at least 15 cell style XF
- * and 1 cell XF.
- * Inspection of Excel files generated by MS Office Excel shows that XF records 0-14 are cell style XF
- * and XF record 15 is a cell XF
- * We only read the first cell style XF and skip the remaining cell style XF records
- * We read all cell XF records.
- *
- * -- "OpenOffice.org's Documentation of the Microsoft
- * Excel File Format"
- */
- private function _readXf()
- {
- $length = self::_GetInt2d($this->_data, $this->_pos + 2);
- $recordData = substr($this->_data, $this->_pos + 4, $length);
-
- // move stream pointer to next record
- $this->_pos += 4 + $length;
-
- $objStyle = new PHPExcel_Style();
-
- if (!$this->_readDataOnly) {
- // offset: 0; size: 2; Index to FONT record
- if (self::_GetInt2d($recordData, 0) < 4) {
- $fontIndex = self::_GetInt2d($recordData, 0);
- } else {
- // this has to do with that index 4 is omitted in all BIFF versions for some strange reason
- // check the OpenOffice documentation of the FONT record
- $fontIndex = self::_GetInt2d($recordData, 0) - 1;
- }
- $objStyle->setFont($this->_objFonts[$fontIndex]);
-
- // offset: 2; size: 2; Index to FORMAT record
- $numberFormatIndex = self::_GetInt2d($recordData, 2);
- if (isset($this->_formats[$numberFormatIndex])) {
- // then we have user-defined format code
- $numberformat = array('code' => $this->_formats[$numberFormatIndex]);
- } elseif (($code = PHPExcel_Style_NumberFormat::builtInFormatCode($numberFormatIndex)) !== '') {
- // then we have built-in format code
- $numberformat = array('code' => $code);
- } else {
- // we set the general format code
- $numberformat = array('code' => 'General');
- }
- $objStyle->getNumberFormat()->setFormatCode($numberformat['code']);
-
- // offset: 4; size: 2; XF type, cell protection, and parent style XF
- // bit 2-0; mask 0x0007; XF_TYPE_PROT
- $xfTypeProt = self::_GetInt2d($recordData, 4);
- // bit 0; mask 0x01; 1 = cell is locked
- $isLocked = (0x01 & $xfTypeProt) >> 0;
- $objStyle->getProtection()->setLocked($isLocked ?
- PHPExcel_Style_Protection::PROTECTION_INHERIT : PHPExcel_Style_Protection::PROTECTION_UNPROTECTED);
-
- // bit 1; mask 0x02; 1 = Formula is hidden
- $isHidden = (0x02 & $xfTypeProt) >> 1;
- $objStyle->getProtection()->setHidden($isHidden ?
- PHPExcel_Style_Protection::PROTECTION_PROTECTED : PHPExcel_Style_Protection::PROTECTION_UNPROTECTED);
-
- // bit 2; mask 0x04; 0 = Cell XF, 1 = Cell Style XF
- $isCellStyleXf = (0x04 & $xfTypeProt) >> 2;
-
- // offset: 6; size: 1; Alignment and text break
- // bit 2-0, mask 0x07; horizontal alignment
- $horAlign = (0x07 & ord($recordData{6})) >> 0;
- switch ($horAlign) {
- case 0:
- $objStyle->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_GENERAL);
- break;
- case 1:
- $objStyle->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_LEFT);
- break;
- case 2:
- $objStyle->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
- break;
- case 3:
- $objStyle->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_RIGHT);
- break;
- case 5:
- $objStyle->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_JUSTIFY);
- break;
- case 6:
- $objStyle->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER_CONTINUOUS);
- break;
- }
- // bit 3, mask 0x08; wrap text
- $wrapText = (0x08 & ord($recordData{6})) >> 3;
- switch ($wrapText) {
- case 0:
- $objStyle->getAlignment()->setWrapText(false);
- break;
- case 1:
- $objStyle->getAlignment()->setWrapText(true);
- break;
- }
- // bit 6-4, mask 0x70; vertical alignment
- $vertAlign = (0x70 & ord($recordData{6})) >> 4;
- switch ($vertAlign) {
- case 0:
- $objStyle->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_TOP);
- break;
- case 1:
- $objStyle->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);
- break;
- case 2:
- $objStyle->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_BOTTOM);
- break;
- case 3:
- $objStyle->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_JUSTIFY);
- break;
- }
-
- if ($this->_version == self::XLS_BIFF8) {
- // offset: 7; size: 1; XF_ROTATION: Text rotation angle
- $angle = ord($recordData{7});
- $rotation = 0;
- if ($angle <= 90) {
- $rotation = $angle;
- } else if ($angle <= 180) {
- $rotation = 90 - $angle;
- } else if ($angle == 255) {
- $rotation = -165;
- }
- $objStyle->getAlignment()->setTextRotation($rotation);
-
- // offset: 8; size: 1; Indentation, shrink to cell size, and text direction
- // bit: 3-0; mask: 0x0F; indent level
- $indent = (0x0F & ord($recordData{8})) >> 0;
- $objStyle->getAlignment()->setIndent($indent);
-
- // bit: 4; mask: 0x10; 1 = shrink content to fit into cell
- $shrinkToFit = (0x10 & ord($recordData{8})) >> 4;
- switch ($shrinkToFit) {
- case 0:
- $objStyle->getAlignment()->setShrinkToFit(false);
- break;
- case 1:
- $objStyle->getAlignment()->setShrinkToFit(true);
- break;
- }
-
- // offset: 9; size: 1; Flags used for attribute groups
-
- // offset: 10; size: 4; Cell border lines and background area
- // bit: 3-0; mask: 0x0000000F; left style
- if ($bordersLeftStyle = self::_mapBorderStyle((0x0000000F & self::_GetInt4d($recordData, 10)) >> 0)) {
- $objStyle->getBorders()->getLeft()->setBorderStyle($bordersLeftStyle);
- }
- // bit: 7-4; mask: 0x000000F0; right style
- if ($bordersRightStyle = self::_mapBorderStyle((0x000000F0 & self::_GetInt4d($recordData, 10)) >> 4)) {
- $objStyle->getBorders()->getRight()->setBorderStyle($bordersRightStyle);
- }
- // bit: 11-8; mask: 0x00000F00; top style
- if ($bordersTopStyle = self::_mapBorderStyle((0x00000F00 & self::_GetInt4d($recordData, 10)) >> 8)) {
- $objStyle->getBorders()->getTop()->setBorderStyle($bordersTopStyle);
- }
- // bit: 15-12; mask: 0x0000F000; bottom style
- if ($bordersBottomStyle = self::_mapBorderStyle((0x0000F000 & self::_GetInt4d($recordData, 10)) >> 12)) {
- $objStyle->getBorders()->getBottom()->setBorderStyle($bordersBottomStyle);
- }
- // bit: 22-16; mask: 0x007F0000; left color
- $objStyle->getBorders()->getLeft()->colorIndex = (0x007F0000 & self::_GetInt4d($recordData, 10)) >> 16;
-
- // bit: 29-23; mask: 0x3F800000; right color
- $objStyle->getBorders()->getRight()->colorIndex = (0x3F800000 & self::_GetInt4d($recordData, 10)) >> 23;
-
- // bit: 30; mask: 0x40000000; 1 = diagonal line from top left to right bottom
- $diagonalDown = (0x40000000 & self::_GetInt4d($recordData, 10)) >> 30 ?
- true : false;
-
- // bit: 31; mask: 0x80000000; 1 = diagonal line from bottom left to top right
- $diagonalUp = (0x80000000 & self::_GetInt4d($recordData, 10)) >> 31 ?
- true : false;
-
- if ($diagonalUp == false && $diagonalDown == false) {
- $objStyle->getBorders()->setDiagonalDirection(PHPExcel_Style_Borders::DIAGONAL_NONE);
- } elseif ($diagonalUp == true && $diagonalDown == false) {
- $objStyle->getBorders()->setDiagonalDirection(PHPExcel_Style_Borders::DIAGONAL_UP);
- } elseif ($diagonalUp == false && $diagonalDown == true) {
- $objStyle->getBorders()->setDiagonalDirection(PHPExcel_Style_Borders::DIAGONAL_DOWN);
- } elseif ($diagonalUp == true && $diagonalDown == true) {
- $objStyle->getBorders()->setDiagonalDirection(PHPExcel_Style_Borders::DIAGONAL_BOTH);
- }
-
- // offset: 14; size: 4;
- // bit: 6-0; mask: 0x0000007F; top color
- $objStyle->getBorders()->getTop()->colorIndex = (0x0000007F & self::_GetInt4d($recordData, 14)) >> 0;
-
- // bit: 13-7; mask: 0x00003F80; bottom color
- $objStyle->getBorders()->getBottom()->colorIndex = (0x00003F80 & self::_GetInt4d($recordData, 14)) >> 7;
-
- // bit: 20-14; mask: 0x001FC000; diagonal color
- $objStyle->getBorders()->getDiagonal()->colorIndex = (0x001FC000 & self::_GetInt4d($recordData, 14)) >> 14;
-
- // bit: 24-21; mask: 0x01E00000; diagonal style
- if ($bordersDiagonalStyle = self::_mapBorderStyle((0x01E00000 & self::_GetInt4d($recordData, 14)) >> 21)) {
- $objStyle->getBorders()->getDiagonal()->setBorderStyle($bordersDiagonalStyle);
- }
-
- // bit: 31-26; mask: 0xFC000000 fill pattern
- if ($fillType = self::_mapFillPattern((0xFC000000 & self::_GetInt4d($recordData, 14)) >> 26)) {
- $objStyle->getFill()->setFillType($fillType);
- }
- // offset: 18; size: 2; pattern and background colour
- // bit: 6-0; mask: 0x007F; color index for pattern color
- $objStyle->getFill()->startcolorIndex = (0x007F & self::_GetInt2d($recordData, 18)) >> 0;
-
- // bit: 13-7; mask: 0x3F80; color index for pattern background
- $objStyle->getFill()->endcolorIndex = (0x3F80 & self::_GetInt2d($recordData, 18)) >> 7;
- } else {
- // BIFF5
-
- // offset: 7; size: 1; Text orientation and flags
- $orientationAndFlags = ord($recordData{7});
-
- // bit: 1-0; mask: 0x03; XF_ORIENTATION: Text orientation
- $xfOrientation = (0x03 & $orientationAndFlags) >> 0;
- switch ($xfOrientation) {
- case 0:
- $objStyle->getAlignment()->setTextRotation(0);
- break;
- case 1:
- $objStyle->getAlignment()->setTextRotation(-165);
- break;
- case 2:
- $objStyle->getAlignment()->setTextRotation(90);
- break;
- case 3:
- $objStyle->getAlignment()->setTextRotation(-90);
- break;
- }
-
- // offset: 8; size: 4; cell border lines and background area
- $borderAndBackground = self::_GetInt4d($recordData, 8);
-
- // bit: 6-0; mask: 0x0000007F; color index for pattern color
- $objStyle->getFill()->startcolorIndex = (0x0000007F & $borderAndBackground) >> 0;
-
- // bit: 13-7; mask: 0x00003F80; color index for pattern background
- $objStyle->getFill()->endcolorIndex = (0x00003F80 & $borderAndBackground) >> 7;
-
- // bit: 21-16; mask: 0x003F0000; fill pattern
- $objStyle->getFill()->setFillType(self::_mapFillPattern((0x003F0000 & $borderAndBackground) >> 16));
-
- // bit: 24-22; mask: 0x01C00000; bottom line style
- $objStyle->getBorders()->getBottom()->setBorderStyle(self::_mapBorderStyle((0x01C00000 & $borderAndBackground) >> 22));
-
- // bit: 31-25; mask: 0xFE000000; bottom line color
- $objStyle->getBorders()->getBottom()->colorIndex = (0xFE000000 & $borderAndBackground) >> 25;
-
- // offset: 12; size: 4; cell border lines
- $borderLines = self::_GetInt4d($recordData, 12);
-
- // bit: 2-0; mask: 0x00000007; top line style
- $objStyle->getBorders()->getTop()->setBorderStyle(self::_mapBorderStyle((0x00000007 & $borderLines) >> 0));
-
- // bit: 5-3; mask: 0x00000038; left line style
- $objStyle->getBorders()->getLeft()->setBorderStyle(self::_mapBorderStyle((0x00000038 & $borderLines) >> 3));
-
- // bit: 8-6; mask: 0x000001C0; right line style
- $objStyle->getBorders()->getRight()->setBorderStyle(self::_mapBorderStyle((0x000001C0 & $borderLines) >> 6));
-
- // bit: 15-9; mask: 0x0000FE00; top line color index
- $objStyle->getBorders()->getTop()->colorIndex = (0x0000FE00 & $borderLines) >> 9;
-
- // bit: 22-16; mask: 0x007F0000; left line color index
- $objStyle->getBorders()->getLeft()->colorIndex = (0x007F0000 & $borderLines) >> 16;
-
- // bit: 29-23; mask: 0x3F800000; right line color index
- $objStyle->getBorders()->getRight()->colorIndex = (0x3F800000 & $borderLines) >> 23;
- }
-
- // add cellStyleXf or cellXf and update mapping
- if ($isCellStyleXf) {
- // we only read one style XF record which is always the first
- if ($this->_xfIndex == 0) {
- $this->_phpExcel->addCellStyleXf($objStyle);
- $this->_mapCellStyleXfIndex[$this->_xfIndex] = 0;
- }
- } else {
- // we read all cell XF records
- $this->_phpExcel->addCellXf($objStyle);
- $this->_mapCellXfIndex[$this->_xfIndex] = count($this->_phpExcel->getCellXfCollection()) - 1;
- }
-
- // update XF index for when we read next record
- ++$this->_xfIndex;
- }
- }
-
-
- /**
- *
- */
- private function _readXfExt()
- {
- $length = self::_GetInt2d($this->_data, $this->_pos + 2);
- $recordData = substr($this->_data, $this->_pos + 4, $length);
-
- // move stream pointer to next record
- $this->_pos += 4 + $length;
-
- if (!$this->_readDataOnly) {
- // offset: 0; size: 2; 0x087D = repeated header
-
- // offset: 2; size: 2
-
- // offset: 4; size: 8; not used
-
- // offset: 12; size: 2; record version
-
- // offset: 14; size: 2; index to XF record which this record modifies
- $ixfe = self::_GetInt2d($recordData, 14);
-
- // offset: 16; size: 2; not used
-
- // offset: 18; size: 2; number of extension properties that follow
- $cexts = self::_GetInt2d($recordData, 18);
-
- // start reading the actual extension data
- $offset = 20;
- while ($offset < $length) {
- // extension type
- $extType = self::_GetInt2d($recordData, $offset);
-
- // extension length
- $cb = self::_GetInt2d($recordData, $offset + 2);
-
- // extension data
- $extData = substr($recordData, $offset + 4, $cb);
-
- switch ($extType) {
- case 4: // fill start color
- $xclfType = self::_GetInt2d($extData, 0); // color type
- $xclrValue = substr($extData, 4, 4); // color value (value based on color type)
-
- if ($xclfType == 2) {
- $rgb = sprintf('%02X%02X%02X', ord($xclrValue{0}), ord($xclrValue{1}), ord($xclrValue{2}));
-
- // modify the relevant style property
- if ( isset($this->_mapCellXfIndex[$ixfe]) ) {
- $fill = $this->_phpExcel->getCellXfByIndex($this->_mapCellXfIndex[$ixfe])->getFill();
- $fill->getStartColor()->setRGB($rgb);
- unset($fill->startcolorIndex); // normal color index does not apply, discard
- }
- }
- break;
-
- case 5: // fill end color
- $xclfType = self::_GetInt2d($extData, 0); // color type
- $xclrValue = substr($extData, 4, 4); // color value (value based on color type)
-
- if ($xclfType == 2) {
- $rgb = sprintf('%02X%02X%02X', ord($xclrValue{0}), ord($xclrValue{1}), ord($xclrValue{2}));
-
- // modify the relevant style property
- if ( isset($this->_mapCellXfIndex[$ixfe]) ) {
- $fill = $this->_phpExcel->getCellXfByIndex($this->_mapCellXfIndex[$ixfe])->getFill();
- $fill->getEndColor()->setRGB($rgb);
- unset($fill->endcolorIndex); // normal color index does not apply, discard
- }
- }
- break;
-
- case 7: // border color top
- $xclfType = self::_GetInt2d($extData, 0); // color type
- $xclrValue = substr($extData, 4, 4); // color value (value based on color type)
-
- if ($xclfType == 2) {
- $rgb = sprintf('%02X%02X%02X', ord($xclrValue{0}), ord($xclrValue{1}), ord($xclrValue{2}));
-
- // modify the relevant style property
- if ( isset($this->_mapCellXfIndex[$ixfe]) ) {
- $top = $this->_phpExcel->getCellXfByIndex($this->_mapCellXfIndex[$ixfe])->getBorders()->getTop();
- $top->getColor()->setRGB($rgb);
- unset($top->colorIndex); // normal color index does not apply, discard
- }
- }
- break;
-
- case 8: // border color bottom
- $xclfType = self::_GetInt2d($extData, 0); // color type
- $xclrValue = substr($extData, 4, 4); // color value (value based on color type)
-
- if ($xclfType == 2) {
- $rgb = sprintf('%02X%02X%02X', ord($xclrValue{0}), ord($xclrValue{1}), ord($xclrValue{2}));
-
- // modify the relevant style property
- if ( isset($this->_mapCellXfIndex[$ixfe]) ) {
- $bottom = $this->_phpExcel->getCellXfByIndex($this->_mapCellXfIndex[$ixfe])->getBorders()->getBottom();
- $bottom->getColor()->setRGB($rgb);
- unset($bottom->colorIndex); // normal color index does not apply, discard
- }
- }
- break;
-
- case 9: // border color left
- $xclfType = self::_GetInt2d($extData, 0); // color type
- $xclrValue = substr($extData, 4, 4); // color value (value based on color type)
-
- if ($xclfType == 2) {
- $rgb = sprintf('%02X%02X%02X', ord($xclrValue{0}), ord($xclrValue{1}), ord($xclrValue{2}));
-
- // modify the relevant style property
- if ( isset($this->_mapCellXfIndex[$ixfe]) ) {
- $left = $this->_phpExcel->getCellXfByIndex($this->_mapCellXfIndex[$ixfe])->getBorders()->getLeft();
- $left->getColor()->setRGB($rgb);
- unset($left->colorIndex); // normal color index does not apply, discard
- }
- }
- break;
-
- case 10: // border color right
- $xclfType = self::_GetInt2d($extData, 0); // color type
- $xclrValue = substr($extData, 4, 4); // color value (value based on color type)
-
- if ($xclfType == 2) {
- $rgb = sprintf('%02X%02X%02X', ord($xclrValue{0}), ord($xclrValue{1}), ord($xclrValue{2}));
-
- // modify the relevant style property
- if ( isset($this->_mapCellXfIndex[$ixfe]) ) {
- $right = $this->_phpExcel->getCellXfByIndex($this->_mapCellXfIndex[$ixfe])->getBorders()->getRight();
- $right->getColor()->setRGB($rgb);
- unset($right->colorIndex); // normal color index does not apply, discard
- }
- }
- break;
-
- case 11: // border color diagonal
- $xclfType = self::_GetInt2d($extData, 0); // color type
- $xclrValue = substr($extData, 4, 4); // color value (value based on color type)
-
- if ($xclfType == 2) {
- $rgb = sprintf('%02X%02X%02X', ord($xclrValue{0}), ord($xclrValue{1}), ord($xclrValue{2}));
-
- // modify the relevant style property
- if ( isset($this->_mapCellXfIndex[$ixfe]) ) {
- $diagonal = $this->_phpExcel->getCellXfByIndex($this->_mapCellXfIndex[$ixfe])->getBorders()->getDiagonal();
- $diagonal->getColor()->setRGB($rgb);
- unset($diagonal->colorIndex); // normal color index does not apply, discard
- }
- }
- break;
-
- case 13: // font color
- $xclfType = self::_GetInt2d($extData, 0); // color type
- $xclrValue = substr($extData, 4, 4); // color value (value based on color type)
-
- if ($xclfType == 2) {
- $rgb = sprintf('%02X%02X%02X', ord($xclrValue{0}), ord($xclrValue{1}), ord($xclrValue{2}));
-
- // modify the relevant style property
- if ( isset($this->_mapCellXfIndex[$ixfe]) ) {
- $font = $this->_phpExcel->getCellXfByIndex($this->_mapCellXfIndex[$ixfe])->getFont();
- $font->getColor()->setRGB($rgb);
- unset($font->colorIndex); // normal color index does not apply, discard
- }
- }
- break;
- }
-
- $offset += $cb;
- }
- }
-
- }
-
-
- /**
- * Read STYLE record
- */
- private function _readStyle()
- {
- $length = self::_GetInt2d($this->_data, $this->_pos + 2);
- $recordData = substr($this->_data, $this->_pos + 4, $length);
-
- // move stream pointer to next record
- $this->_pos += 4 + $length;
-
- if (!$this->_readDataOnly) {
- // offset: 0; size: 2; index to XF record and flag for built-in style
- $ixfe = self::_GetInt2d($recordData, 0);
-
- // bit: 11-0; mask 0x0FFF; index to XF record
- $xfIndex = (0x0FFF & $ixfe) >> 0;
-
- // bit: 15; mask 0x8000; 0 = user-defined style, 1 = built-in style
- $isBuiltIn = (bool) ((0x8000 & $ixfe) >> 15);
-
- if ($isBuiltIn) {
- // offset: 2; size: 1; identifier for built-in style
- $builtInId = ord($recordData{2});
-
- switch ($builtInId) {
- case 0x00:
- // currently, we are not using this for anything
- break;
-
- default:
- break;
- }
-
- } else {
- // user-defined; not supported by PHPExcel
- }
- }
- }
-
-
- /**
- * Read PALETTE record
- */
- private function _readPalette()
- {
- $length = self::_GetInt2d($this->_data, $this->_pos + 2);
- $recordData = substr($this->_data, $this->_pos + 4, $length);
-
- // move stream pointer to next record
- $this->_pos += 4 + $length;
-
- if (!$this->_readDataOnly) {
- // offset: 0; size: 2; number of following colors
- $nm = self::_GetInt2d($recordData, 0);
-
- // list of RGB colors
- for ($i = 0; $i < $nm; ++$i) {
- $rgb = substr($recordData, 2 + 4 * $i, 4);
- $this->_palette[] = self::_readRGB($rgb);
- }
- }
- }
-
-
- /**
- * SHEET
- *
- * This record is located in the Workbook Globals
- * Substream and represents a sheet inside the workbook.
- * One SHEET record is written for each sheet. It stores the
- * sheet name and a stream offset to the BOF record of the
- * respective Sheet Substream within the Workbook Stream.
- *
- * -- "OpenOffice.org's Documentation of the Microsoft
- * Excel File Format"
- */
- private function _readSheet()
- {
- $length = self::_GetInt2d($this->_data, $this->_pos + 2);
- $recordData = substr($this->_data, $this->_pos + 4, $length);
-
- // move stream pointer to next record
- $this->_pos += 4 + $length;
-
- // offset: 0; size: 4; absolute stream position of the BOF record of the sheet
- $rec_offset = self::_GetInt4d($recordData, 0);
-
- // offset: 4; size: 1; sheet state
- switch (ord($recordData{4})) {
- case 0x00: $sheetState = PHPExcel_Worksheet::SHEETSTATE_VISIBLE; break;
- case 0x01: $sheetState = PHPExcel_Worksheet::SHEETSTATE_HIDDEN; break;
- case 0x02: $sheetState = PHPExcel_Worksheet::SHEETSTATE_VERYHIDDEN; break;
- default: $sheetState = PHPExcel_Worksheet::SHEETSTATE_VISIBLE; break;
- }
-
- // offset: 5; size: 1; sheet type
- $sheetType = ord($recordData{5});
-
- // offset: 6; size: var; sheet name
- if ($this->_version == self::XLS_BIFF8) {
- $string = self::_readUnicodeStringShort(substr($recordData, 6));
- $rec_name = $string['value'];
- } elseif ($this->_version == self::XLS_BIFF7) {
- $string = $this->_readByteStringShort(substr($recordData, 6));
- $rec_name = $string['value'];
- }
-
- $this->_sheets[] = array(
- 'name' => $rec_name,
- 'offset' => $rec_offset,
- 'sheetState' => $sheetState,
- 'sheetType' => $sheetType,
- );
- }
-
-
- /**
- * Read EXTERNALBOOK record
- */
- private function _readExternalBook()
- {
- $length = self::_GetInt2d($this->_data, $this->_pos + 2);
- $recordData = substr($this->_data, $this->_pos + 4, $length);
-
- // move stream pointer to next record
- $this->_pos += 4 + $length;
-
- // offset within record data
- $offset = 0;
-
- // there are 4 types of records
- if (strlen($recordData) > 4) {
- // external reference
- // offset: 0; size: 2; number of sheet names ($nm)
- $nm = self::_GetInt2d($recordData, 0);
- $offset += 2;
-
- // offset: 2; size: var; encoded URL without sheet name (Unicode string, 16-bit length)
- $encodedUrlString = self::_readUnicodeStringLong(substr($recordData, 2));
- $offset += $encodedUrlString['size'];
-
- // offset: var; size: var; list of $nm sheet names (Unicode strings, 16-bit length)
- $externalSheetNames = array();
- for ($i = 0; $i < $nm; ++$i) {
- $externalSheetNameString = self::_readUnicodeStringLong(substr($recordData, $offset));
- $externalSheetNames[] = $externalSheetNameString['value'];
- $offset += $externalSheetNameString['size'];
- }
-
- // store the record data
- $this->_externalBooks[] = array(
- 'type' => 'external',
- 'encodedUrl' => $encodedUrlString['value'],
- 'externalSheetNames' => $externalSheetNames,
- );
-
- } elseif (substr($recordData, 2, 2) == pack('CC', 0x01, 0x04)) {
- // internal reference
- // offset: 0; size: 2; number of sheet in this document
- // offset: 2; size: 2; 0x01 0x04
- $this->_externalBooks[] = array(
- 'type' => 'internal',
- );
- } elseif (substr($recordData, 0, 4) == pack('vCC', 0x0001, 0x01, 0x3A)) {
- // add-in function
- // offset: 0; size: 2; 0x0001
- $this->_externalBooks[] = array(
- 'type' => 'addInFunction',
- );
- } elseif (substr($recordData, 0, 2) == pack('v', 0x0000)) {
- // DDE links, OLE links
- // offset: 0; size: 2; 0x0000
- // offset: 2; size: var; encoded source document name
- $this->_externalBooks[] = array(
- 'type' => 'DDEorOLE',
- );
- }
- }
-
-
- /**
- * Read EXTERNNAME record.
- */
- private function _readExternName()
- {
- $length = self::_GetInt2d($this->_data, $this->_pos + 2);
- $recordData = substr($this->_data, $this->_pos + 4, $length);
-
- // move stream pointer to next record
- $this->_pos += 4 + $length;
-
- // external sheet references provided for named cells
- if ($this->_version == self::XLS_BIFF8) {
- // offset: 0; size: 2; options
- $options = self::_GetInt2d($recordData, 0);
-
- // offset: 2; size: 2;
-
- // offset: 4; size: 2; not used
-
- // offset: 6; size: var
- $nameString = self::_readUnicodeStringShort(substr($recordData, 6));
-
- // offset: var; size: var; formula data
- $offset = 6 + $nameString['size'];
- $formula = $this->_getFormulaFromStructure(substr($recordData, $offset));
-
- $this->_externalNames[] = array(
- 'name' => $nameString['value'],
- 'formula' => $formula,
- );
- }
- }
-
-
- /**
- * Read EXTERNSHEET record
- */
- private function _readExternSheet()
- {
- $length = self::_GetInt2d($this->_data, $this->_pos + 2);
- $recordData = substr($this->_data, $this->_pos + 4, $length);
-
- // move stream pointer to next record
- $this->_pos += 4 + $length;
-
- // external sheet references provided for named cells
- if ($this->_version == self::XLS_BIFF8) {
- // offset: 0; size: 2; number of following ref structures
- $nm = self::_GetInt2d($recordData, 0);
- for ($i = 0; $i < $nm; ++$i) {
- $this->_ref[] = array(
- // offset: 2 + 6 * $i; index to EXTERNALBOOK record
- 'externalBookIndex' => self::_GetInt2d($recordData, 2 + 6 * $i),
- // offset: 4 + 6 * $i; index to first sheet in EXTERNALBOOK record
- 'firstSheetIndex' => self::_GetInt2d($recordData, 4 + 6 * $i),
- // offset: 6 + 6 * $i; index to last sheet in EXTERNALBOOK record
- 'lastSheetIndex' => self::_GetInt2d($recordData, 6 + 6 * $i),
- );
- }
- }
- }
-
-
- /**
- * DEFINEDNAME
- *
- * This record is part of a Link Table. It contains the name
- * and the token array of an internal defined name. Token
- * arrays of defined names contain tokens with aberrant
- * token classes.
- *
- * -- "OpenOffice.org's Documentation of the Microsoft
- * Excel File Format"
- */
- private function _readDefinedName()
- {
- $length = self::_GetInt2d($this->_data, $this->_pos + 2);
- $recordData = substr($this->_data, $this->_pos + 4, $length);
-
- // move stream pointer to next record
- $this->_pos += 4 + $length;
-
- if ($this->_version == self::XLS_BIFF8) {
- // retrieves named cells
-
- // offset: 0; size: 2; option flags
- $opts = self::_GetInt2d($recordData, 0);
-
- // bit: 5; mask: 0x0020; 0 = user-defined name, 1 = built-in-name
- $isBuiltInName = (0x0020 & $opts) >> 5;
-
- // offset: 2; size: 1; keyboard shortcut
-
- // offset: 3; size: 1; length of the name (character count)
- $nlen = ord($recordData{3});
-
- // offset: 4; size: 2; size of the formula data (it can happen that this is zero)
- // note: there can also be additional data, this is not included in $flen
- $flen = self::_GetInt2d($recordData, 4);
-
- // offset: 8; size: 2; 0=Global name, otherwise index to sheet (1-based)
- $scope = self::_GetInt2d($recordData, 8);
-
- // offset: 14; size: var; Name (Unicode string without length field)
- $string = self::_readUnicodeString(substr($recordData, 14), $nlen);
-
- // offset: var; size: $flen; formula data
- $offset = 14 + $string['size'];
- $formulaStructure = pack('v', $flen) . substr($recordData, $offset);
-
- try {
- $formula = $this->_getFormulaFromStructure($formulaStructure);
- } catch (Exception $e) {
- $formula = '';
- }
-
- $this->_definedname[] = array(
- 'isBuiltInName' => $isBuiltInName,
- 'name' => $string['value'],
- 'formula' => $formula,
- 'scope' => $scope,
- );
- }
- }
-
-
- /**
- * Read MSODRAWINGGROUP record
- */
- private function _readMsoDrawingGroup()
- {
- $length = self::_GetInt2d($this->_data, $this->_pos + 2);
-
- // get spliced record data
- $splicedRecordData = $this->_getSplicedRecordData();
- $recordData = $splicedRecordData['recordData'];
-
- $this->_drawingGroupData .= $recordData;
- }
-
-
- /**
- * SST - Shared String Table
- *
- * This record contains a list of all strings used anywhere
- * in the workbook. Each string occurs only once. The
- * workbook uses indexes into the list to reference the
- * strings.
- *
- * -- "OpenOffice.org's Documentation of the Microsoft
- * Excel File Format"
- **/
- private function _readSst()
- {
- // offset within (spliced) record data
- $pos = 0;
-
- // get spliced record data
- $splicedRecordData = $this->_getSplicedRecordData();
-
- $recordData = $splicedRecordData['recordData'];
- $spliceOffsets = $splicedRecordData['spliceOffsets'];
-
- // offset: 0; size: 4; total number of strings in the workbook
- $pos += 4;
-
- // offset: 4; size: 4; number of following strings ($nm)
- $nm = self::_GetInt4d($recordData, 4);
- $pos += 4;
-
- // loop through the Unicode strings (16-bit length)
- for ($i = 0; $i < $nm; ++$i) {
-
- // number of characters in the Unicode string
- $numChars = self::_GetInt2d($recordData, $pos);
- $pos += 2;
-
- // option flags
- $optionFlags = ord($recordData{$pos});
- ++$pos;
-
- // bit: 0; mask: 0x01; 0 = compressed; 1 = uncompressed
- $isCompressed = (($optionFlags & 0x01) == 0) ;
-
- // bit: 2; mask: 0x02; 0 = ordinary; 1 = Asian phonetic
- $hasAsian = (($optionFlags & 0x04) != 0);
-
- // bit: 3; mask: 0x03; 0 = ordinary; 1 = Rich-Text
- $hasRichText = (($optionFlags & 0x08) != 0);
-
- if ($hasRichText) {
- // number of Rich-Text formatting runs
- $formattingRuns = self::_GetInt2d($recordData, $pos);
- $pos += 2;
- }
-
- if ($hasAsian) {
- // size of Asian phonetic setting
- $extendedRunLength = self::_GetInt4d($recordData, $pos);
- $pos += 4;
- }
-
- // expected byte length of character array if not split
- $len = ($isCompressed) ? $numChars : $numChars * 2;
-
- // look up limit position
- foreach ($spliceOffsets as $spliceOffset) {
- // it can happen that the string is empty, therefore we need
- // <= and not just <
- if ($pos <= $spliceOffset) {
- $limitpos = $spliceOffset;
- break;
- }
- }
-
- if ($pos + $len <= $limitpos) {
- // character array is not split between records
-
- $retstr = substr($recordData, $pos, $len);
- $pos += $len;
-
- } else {
- // character array is split between records
-
- // first part of character array
- $retstr = substr($recordData, $pos, $limitpos - $pos);
-
- $bytesRead = $limitpos - $pos;
-
- // remaining characters in Unicode string
- $charsLeft = $numChars - (($isCompressed) ? $bytesRead : ($bytesRead / 2));
-
- $pos = $limitpos;
-
- // keep reading the characters
- while ($charsLeft > 0) {
-
- // look up next limit position, in case the string span more than one continue record
- foreach ($spliceOffsets as $spliceOffset) {
- if ($pos < $spliceOffset) {
- $limitpos = $spliceOffset;
- break;
- }
- }
-
- // repeated option flags
- // OpenOffice.org documentation 5.21
- $option = ord($recordData{$pos});
- ++$pos;
-
- if ($isCompressed && ($option == 0)) {
- // 1st fragment compressed
- // this fragment compressed
- $len = min($charsLeft, $limitpos - $pos);
- $retstr .= substr($recordData, $pos, $len);
- $charsLeft -= $len;
- $isCompressed = true;
-
- } elseif (!$isCompressed && ($option != 0)) {
- // 1st fragment uncompressed
- // this fragment uncompressed
- $len = min($charsLeft * 2, $limitpos - $pos);
- $retstr .= substr($recordData, $pos, $len);
- $charsLeft -= $len / 2;
- $isCompressed = false;
-
- } elseif (!$isCompressed && ($option == 0)) {
- // 1st fragment uncompressed
- // this fragment compressed
- $len = min($charsLeft, $limitpos - $pos);
- for ($j = 0; $j < $len; ++$j) {
- $retstr .= $recordData{$pos + $j} . chr(0);
- }
- $charsLeft -= $len;
- $isCompressed = false;
-
- } else {
- // 1st fragment compressed
- // this fragment uncompressed
- $newstr = '';
- for ($j = 0; $j < strlen($retstr); ++$j) {
- $newstr .= $retstr[$j] . chr(0);
- }
- $retstr = $newstr;
- $len = min($charsLeft * 2, $limitpos - $pos);
- $retstr .= substr($recordData, $pos, $len);
- $charsLeft -= $len / 2;
- $isCompressed = false;
- }
-
- $pos += $len;
- }
- }
-
- // convert to UTF-8
- $retstr = self::_encodeUTF16($retstr, $isCompressed);
-
- // read additional Rich-Text information, if any
- $fmtRuns = array();
- if ($hasRichText) {
- // list of formatting runs
- for ($j = 0; $j < $formattingRuns; ++$j) {
- // first formatted character; zero-based
- $charPos = self::_GetInt2d($recordData, $pos + $j * 4);
-
- // index to font record
- $fontIndex = self::_GetInt2d($recordData, $pos + 2 + $j * 4);
-
- $fmtRuns[] = array(
- 'charPos' => $charPos,
- 'fontIndex' => $fontIndex,
- );
- }
- $pos += 4 * $formattingRuns;
- }
-
- // read additional Asian phonetics information, if any
- if ($hasAsian) {
- // For Asian phonetic settings, we skip the extended string data
- $pos += $extendedRunLength;
- }
-
- // store the shared sting
- $this->_sst[] = array(
- 'value' => $retstr,
- 'fmtRuns' => $fmtRuns,
- );
- }
-
- // _getSplicedRecordData() takes care of moving current position in data stream
- }
-
-
- /**
- * Read PRINTGRIDLINES record
- */
- private function _readPrintGridlines()
- {
- $length = self::_GetInt2d($this->_data, $this->_pos + 2);
- $recordData = substr($this->_data, $this->_pos + 4, $length);
-
- // move stream pointer to next record
- $this->_pos += 4 + $length;
-
- if ($this->_version == self::XLS_BIFF8 && !$this->_readDataOnly) {
- // offset: 0; size: 2; 0 = do not print sheet grid lines; 1 = print sheet gridlines
- $printGridlines = (bool) self::_GetInt2d($recordData, 0);
- $this->_phpSheet->setPrintGridlines($printGridlines);
- }
- }
-
-
- /**
- * Read DEFAULTROWHEIGHT record
- */
- private function _readDefaultRowHeight()
- {
- $length = self::_GetInt2d($this->_data, $this->_pos + 2);
- $recordData = substr($this->_data, $this->_pos + 4, $length);
-
- // move stream pointer to next record
- $this->_pos += 4 + $length;
-
- // offset: 0; size: 2; option flags
- // offset: 2; size: 2; default height for unused rows, (twips 1/20 point)
- $height = self::_GetInt2d($recordData, 2);
- $this->_phpSheet->getDefaultRowDimension()->setRowHeight($height / 20);
- }
-
-
- /**
- * Read SHEETPR record
- */
- private function _readSheetPr()
- {
- $length = self::_GetInt2d($this->_data, $this->_pos + 2);
- $recordData = substr($this->_data, $this->_pos + 4, $length);
-
- // move stream pointer to next record
- $this->_pos += 4 + $length;
-
- // offset: 0; size: 2
-
- // bit: 6; mask: 0x0040; 0 = outline buttons above outline group
- $isSummaryBelow = (0x0040 & self::_GetInt2d($recordData, 0)) >> 6;
- $this->_phpSheet->setShowSummaryBelow($isSummaryBelow);
-
- // bit: 7; mask: 0x0080; 0 = outline buttons left of outline group
- $isSummaryRight = (0x0080 & self::_GetInt2d($recordData, 0)) >> 7;
- $this->_phpSheet->setShowSummaryRight($isSummaryRight);
-
- // bit: 8; mask: 0x100; 0 = scale printout in percent, 1 = fit printout to number of pages
- // this corresponds to radio button setting in page setup dialog in Excel
- $this->_isFitToPages = (bool) ((0x0100 & self::_GetInt2d($recordData, 0)) >> 8);
- }
-
-
- /**
- * Read HORIZONTALPAGEBREAKS record
- */
- private function _readHorizontalPageBreaks()
- {
- $length = self::_GetInt2d($this->_data, $this->_pos + 2);
- $recordData = substr($this->_data, $this->_pos + 4, $length);
-
- // move stream pointer to next record
- $this->_pos += 4 + $length;
-
- if ($this->_version == self::XLS_BIFF8 && !$this->_readDataOnly) {
-
- // offset: 0; size: 2; number of the following row index structures
- $nm = self::_GetInt2d($recordData, 0);
-
- // offset: 2; size: 6 * $nm; list of $nm row index structures
- for ($i = 0; $i < $nm; ++$i) {
- $r = self::_GetInt2d($recordData, 2 + 6 * $i);
- $cf = self::_GetInt2d($recordData, 2 + 6 * $i + 2);
- $cl = self::_GetInt2d($recordData, 2 + 6 * $i + 4);
-
- // not sure why two column indexes are necessary?
- $this->_phpSheet->setBreakByColumnAndRow($cf, $r, PHPExcel_Worksheet::BREAK_ROW);
- }
- }
- }
-
-
- /**
- * Read VERTICALPAGEBREAKS record
- */
- private function _readVerticalPageBreaks()
- {
- $length = self::_GetInt2d($this->_data, $this->_pos + 2);
- $recordData = substr($this->_data, $this->_pos + 4, $length);
-
- // move stream pointer to next record
- $this->_pos += 4 + $length;
-
- if ($this->_version == self::XLS_BIFF8 && !$this->_readDataOnly) {
- // offset: 0; size: 2; number of the following column index structures
- $nm = self::_GetInt2d($recordData, 0);
-
- // offset: 2; size: 6 * $nm; list of $nm row index structures
- for ($i = 0; $i < $nm; ++$i) {
- $c = self::_GetInt2d($recordData, 2 + 6 * $i);
- $rf = self::_GetInt2d($recordData, 2 + 6 * $i + 2);
- $rl = self::_GetInt2d($recordData, 2 + 6 * $i + 4);
-
- // not sure why two row indexes are necessary?
- $this->_phpSheet->setBreakByColumnAndRow($c, $rf, PHPExcel_Worksheet::BREAK_COLUMN);
- }
- }
- }
-
-
- /**
- * Read HEADER record
- */
- private function _readHeader()
- {
- $length = self::_GetInt2d($this->_data, $this->_pos + 2);
- $recordData = substr($this->_data, $this->_pos + 4, $length);
-
- // move stream pointer to next record
- $this->_pos += 4 + $length;
-
- if (!$this->_readDataOnly) {
- // offset: 0; size: var
- // realized that $recordData can be empty even when record exists
- if ($recordData) {
- if ($this->_version == self::XLS_BIFF8) {
- $string = self::_readUnicodeStringLong($recordData);
- } else {
- $string = $this->_readByteStringShort($recordData);
- }
-
- $this->_phpSheet->getHeaderFooter()->setOddHeader($string['value']);
- $this->_phpSheet->getHeaderFooter()->setEvenHeader($string['value']);
- }
- }
- }
-
-
- /**
- * Read FOOTER record
- */
- private function _readFooter()
- {
- $length = self::_GetInt2d($this->_data, $this->_pos + 2);
- $recordData = substr($this->_data, $this->_pos + 4, $length);
-
- // move stream pointer to next record
- $this->_pos += 4 + $length;
-
- if (!$this->_readDataOnly) {
- // offset: 0; size: var
- // realized that $recordData can be empty even when record exists
- if ($recordData) {
- if ($this->_version == self::XLS_BIFF8) {
- $string = self::_readUnicodeStringLong($recordData);
- } else {
- $string = $this->_readByteStringShort($recordData);
- }
- $this->_phpSheet->getHeaderFooter()->setOddFooter($string['value']);
- $this->_phpSheet->getHeaderFooter()->setEvenFooter($string['value']);
- }
- }
- }
-
-
- /**
- * Read HCENTER record
- */
- private function _readHcenter()
- {
- $length = self::_GetInt2d($this->_data, $this->_pos + 2);
- $recordData = substr($this->_data, $this->_pos + 4, $length);
-
- // move stream pointer to next record
- $this->_pos += 4 + $length;
-
- if (!$this->_readDataOnly) {
- // offset: 0; size: 2; 0 = print sheet left aligned, 1 = print sheet centered horizontally
- $isHorizontalCentered = (bool) self::_GetInt2d($recordData, 0);
-
- $this->_phpSheet->getPageSetup()->setHorizontalCentered($isHorizontalCentered);
- }
- }
-
-
- /**
- * Read VCENTER record
- */
- private function _readVcenter()
- {
- $length = self::_GetInt2d($this->_data, $this->_pos + 2);
- $recordData = substr($this->_data, $this->_pos + 4, $length);
-
- // move stream pointer to next record
- $this->_pos += 4 + $length;
-
- if (!$this->_readDataOnly) {
- // offset: 0; size: 2; 0 = print sheet aligned at top page border, 1 = print sheet vertically centered
- $isVerticalCentered = (bool) self::_GetInt2d($recordData, 0);
-
- $this->_phpSheet->getPageSetup()->setVerticalCentered($isVerticalCentered);
- }
- }
-
-
- /**
- * Read LEFTMARGIN record
- */
- private function _readLeftMargin()
- {
- $length = self::_GetInt2d($this->_data, $this->_pos + 2);
- $recordData = substr($this->_data, $this->_pos + 4, $length);
-
- // move stream pointer to next record
- $this->_pos += 4 + $length;
-
- if (!$this->_readDataOnly) {
- // offset: 0; size: 8
- $this->_phpSheet->getPageMargins()->setLeft(self::_extractNumber($recordData));
- }
- }
-
-
- /**
- * Read RIGHTMARGIN record
- */
- private function _readRightMargin()
- {
- $length = self::_GetInt2d($this->_data, $this->_pos + 2);
- $recordData = substr($this->_data, $this->_pos + 4, $length);
-
- // move stream pointer to next record
- $this->_pos += 4 + $length;
-
- if (!$this->_readDataOnly) {
- // offset: 0; size: 8
- $this->_phpSheet->getPageMargins()->setRight(self::_extractNumber($recordData));
- }
- }
-
-
- /**
- * Read TOPMARGIN record
- */
- private function _readTopMargin()
- {
- $length = self::_GetInt2d($this->_data, $this->_pos + 2);
- $recordData = substr($this->_data, $this->_pos + 4, $length);
-
- // move stream pointer to next record
- $this->_pos += 4 + $length;
-
- if (!$this->_readDataOnly) {
- // offset: 0; size: 8
- $this->_phpSheet->getPageMargins()->setTop(self::_extractNumber($recordData));
- }
- }
-
-
- /**
- * Read BOTTOMMARGIN record
- */
- private function _readBottomMargin()
- {
- $length = self::_GetInt2d($this->_data, $this->_pos + 2);
- $recordData = substr($this->_data, $this->_pos + 4, $length);
-
- // move stream pointer to next record
- $this->_pos += 4 + $length;
-
- if (!$this->_readDataOnly) {
- // offset: 0; size: 8
- $this->_phpSheet->getPageMargins()->setBottom(self::_extractNumber($recordData));
- }
- }
-
-
- /**
- * Read PAGESETUP record
- */
- private function _readPageSetup()
- {
- $length = self::_GetInt2d($this->_data, $this->_pos + 2);
- $recordData = substr($this->_data, $this->_pos + 4, $length);
-
- // move stream pointer to next record
- $this->_pos += 4 + $length;
-
- if (!$this->_readDataOnly) {
- // offset: 0; size: 2; paper size
- $paperSize = self::_GetInt2d($recordData, 0);
-
- // offset: 2; size: 2; scaling factor
- $scale = self::_GetInt2d($recordData, 2);
-
- // offset: 6; size: 2; fit worksheet width to this number of pages, 0 = use as many as needed
- $fitToWidth = self::_GetInt2d($recordData, 6);
-
- // offset: 8; size: 2; fit worksheet height to this number of pages, 0 = use as many as needed
- $fitToHeight = self::_GetInt2d($recordData, 8);
-
- // offset: 10; size: 2; option flags
-
- // bit: 1; mask: 0x0002; 0=landscape, 1=portrait
- $isPortrait = (0x0002 & self::_GetInt2d($recordData, 10)) >> 1;
-
- // bit: 2; mask: 0x0004; 1= paper size, scaling factor, paper orient. not init
- // when this bit is set, do not use flags for those properties
- $isNotInit = (0x0004 & self::_GetInt2d($recordData, 10)) >> 2;
-
- if (!$isNotInit) {
- $this->_phpSheet->getPageSetup()->setPaperSize($paperSize);
- switch ($isPortrait) {
- case 0: $this->_phpSheet->getPageSetup()->setOrientation(PHPExcel_Worksheet_PageSetup::ORIENTATION_LANDSCAPE); break;
- case 1: $this->_phpSheet->getPageSetup()->setOrientation(PHPExcel_Worksheet_PageSetup::ORIENTATION_PORTRAIT); break;
- }
-
- $this->_phpSheet->getPageSetup()->setScale($scale, false);
- $this->_phpSheet->getPageSetup()->setFitToPage((bool) $this->_isFitToPages);
- $this->_phpSheet->getPageSetup()->setFitToWidth($fitToWidth, false);
- $this->_phpSheet->getPageSetup()->setFitToHeight($fitToHeight, false);
- }
-
- // offset: 16; size: 8; header margin (IEEE 754 floating-point value)
- $marginHeader = self::_extractNumber(substr($recordData, 16, 8));
- $this->_phpSheet->getPageMargins()->setHeader($marginHeader);
-
- // offset: 24; size: 8; footer margin (IEEE 754 floating-point value)
- $marginFooter = self::_extractNumber(substr($recordData, 24, 8));
- $this->_phpSheet->getPageMargins()->setFooter($marginFooter);
- }
- }
-
-
- /**
- * PROTECT - Sheet protection (BIFF2 through BIFF8)
- * if this record is omitted, then it also means no sheet protection
- */
- private function _readProtect()
- {
- $length = self::_GetInt2d($this->_data, $this->_pos + 2);
- $recordData = substr($this->_data, $this->_pos + 4, $length);
-
- // move stream pointer to next record
- $this->_pos += 4 + $length;
-
- if ($this->_readDataOnly) {
- return;
- }
-
- // offset: 0; size: 2;
-
- // bit 0, mask 0x01; 1 = sheet is protected
- $bool = (0x01 & self::_GetInt2d($recordData, 0)) >> 0;
- $this->_phpSheet->getProtection()->setSheet((bool)$bool);
- }
-
-
- /**
- * SCENPROTECT
- */
- private function _readScenProtect()
- {
- $length = self::_GetInt2d($this->_data, $this->_pos + 2);
- $recordData = substr($this->_data, $this->_pos + 4, $length);
-
- // move stream pointer to next record
- $this->_pos += 4 + $length;
-
- if ($this->_readDataOnly) {
- return;
- }
-
- // offset: 0; size: 2;
-
- // bit: 0, mask 0x01; 1 = scenarios are protected
- $bool = (0x01 & self::_GetInt2d($recordData, 0)) >> 0;
-
- $this->_phpSheet->getProtection()->setScenarios((bool)$bool);
- }
-
-
- /**
- * OBJECTPROTECT
- */
- private function _readObjectProtect()
- {
- $length = self::_GetInt2d($this->_data, $this->_pos + 2);
- $recordData = substr($this->_data, $this->_pos + 4, $length);
-
- // move stream pointer to next record
- $this->_pos += 4 + $length;
-
- if ($this->_readDataOnly) {
- return;
- }
-
- // offset: 0; size: 2;
-
- // bit: 0, mask 0x01; 1 = objects are protected
- $bool = (0x01 & self::_GetInt2d($recordData, 0)) >> 0;
-
- $this->_phpSheet->getProtection()->setObjects((bool)$bool);
- }
-
-
- /**
- * PASSWORD - Sheet protection (hashed) password (BIFF2 through BIFF8)
- */
- private function _readPassword()
- {
- $length = self::_GetInt2d($this->_data, $this->_pos + 2);
- $recordData = substr($this->_data, $this->_pos + 4, $length);
-
- // move stream pointer to next record
- $this->_pos += 4 + $length;
-
- if (!$this->_readDataOnly) {
- // offset: 0; size: 2; 16-bit hash value of password
- $password = strtoupper(dechex(self::_GetInt2d($recordData, 0))); // the hashed password
- $this->_phpSheet->getProtection()->setPassword($password, true);
- }
- }
-
-
- /**
- * Read DEFCOLWIDTH record
- */
- private function _readDefColWidth()
- {
- $length = self::_GetInt2d($this->_data, $this->_pos + 2);
- $recordData = substr($this->_data, $this->_pos + 4, $length);
-
- // move stream pointer to next record
- $this->_pos += 4 + $length;
-
- // offset: 0; size: 2; default column width
- $width = self::_GetInt2d($recordData, 0);
- if ($width != 8) {
- $this->_phpSheet->getDefaultColumnDimension()->setWidth($width);
- }
- }
-
-
- /**
- * Read COLINFO record
- */
- private function _readColInfo()
- {
- $length = self::_GetInt2d($this->_data, $this->_pos + 2);
- $recordData = substr($this->_data, $this->_pos + 4, $length);
-
- // move stream pointer to next record
- $this->_pos += 4 + $length;
-
- if (!$this->_readDataOnly) {
- // offset: 0; size: 2; index to first column in range
- $fc = self::_GetInt2d($recordData, 0); // first column index
-
- // offset: 2; size: 2; index to last column in range
- $lc = self::_GetInt2d($recordData, 2); // first column index
-
- // offset: 4; size: 2; width of the column in 1/256 of the width of the zero character
- $width = self::_GetInt2d($recordData, 4);
-
- // offset: 6; size: 2; index to XF record for default column formatting
- $xfIndex = self::_GetInt2d($recordData, 6);
-
- // offset: 8; size: 2; option flags
-
- // bit: 0; mask: 0x0001; 1= columns are hidden
- $isHidden = (0x0001 & self::_GetInt2d($recordData, 8)) >> 0;
-
- // bit: 10-8; mask: 0x0700; outline level of the columns (0 = no outline)
- $level = (0x0700 & self::_GetInt2d($recordData, 8)) >> 8;
-
- // bit: 12; mask: 0x1000; 1 = collapsed
- $isCollapsed = (0x1000 & self::_GetInt2d($recordData, 8)) >> 12;
-
- // offset: 10; size: 2; not used
-
- for ($i = $fc; $i <= $lc; ++$i) {
- if ($lc == 255 || $lc == 256) {
- $this->_phpSheet->getDefaultColumnDimension()->setWidth($width / 256);
- break;
- }
- $this->_phpSheet->getColumnDimensionByColumn($i)->setWidth($width / 256);
- $this->_phpSheet->getColumnDimensionByColumn($i)->setVisible(!$isHidden);
- $this->_phpSheet->getColumnDimensionByColumn($i)->setOutlineLevel($level);
- $this->_phpSheet->getColumnDimensionByColumn($i)->setCollapsed($isCollapsed);
- $this->_phpSheet->getColumnDimensionByColumn($i)->setXfIndex($this->_mapCellXfIndex[$xfIndex]);
- }
- }
- }
-
-
- /**
- * ROW
- *
- * This record contains the properties of a single row in a
- * sheet. Rows and cells in a sheet are divided into blocks
- * of 32 rows.
- *
- * -- "OpenOffice.org's Documentation of the Microsoft
- * Excel File Format"
- */
- private function _readRow()
- {
- $length = self::_GetInt2d($this->_data, $this->_pos + 2);
- $recordData = substr($this->_data, $this->_pos + 4, $length);
-
- // move stream pointer to next record
- $this->_pos += 4 + $length;
-
- if (!$this->_readDataOnly) {
- // offset: 0; size: 2; index of this row
- $r = self::_GetInt2d($recordData, 0);
-
- // offset: 2; size: 2; index to column of the first cell which is described by a cell record
-
- // offset: 4; size: 2; index to column of the last cell which is described by a cell record, increased by 1
-
- // offset: 6; size: 2;
-
- // bit: 14-0; mask: 0x7FFF; height of the row, in twips = 1/20 of a point
- $height = (0x7FFF & self::_GetInt2d($recordData, 6)) >> 0;
-
- // bit: 15: mask: 0x8000; 0 = row has custom height; 1= row has default height
- $useDefaultHeight = (0x8000 & self::_GetInt2d($recordData, 6)) >> 15;
-
- if (!$useDefaultHeight) {
- $this->_phpSheet->getRowDimension($r + 1)->setRowHeight($height / 20);
- }
-
- // offset: 8; size: 2; not used
-
- // offset: 10; size: 2; not used in BIFF5-BIFF8
-
- // offset: 12; size: 4; option flags and default row formatting
-
- // bit: 2-0: mask: 0x00000007; outline level of the row
- $level = (0x00000007 & self::_GetInt4d($recordData, 12)) >> 0;
- $this->_phpSheet->getRowDimension($r + 1)->setOutlineLevel($level);
-
- // bit: 4; mask: 0x00000010; 1 = outline group start or ends here... and is collapsed
- $isCollapsed = (0x00000010 & self::_GetInt4d($recordData, 12)) >> 4;
- $this->_phpSheet->getRowDimension($r + 1)->setCollapsed($isCollapsed);
-
- // bit: 5; mask: 0x00000020; 1 = row is hidden
- $isHidden = (0x00000020 & self::_GetInt4d($recordData, 12)) >> 5;
- $this->_phpSheet->getRowDimension($r + 1)->setVisible(!$isHidden);
-
- // bit: 7; mask: 0x00000080; 1 = row has explicit format
- $hasExplicitFormat = (0x00000080 & self::_GetInt4d($recordData, 12)) >> 7;
-
- // bit: 27-16; mask: 0x0FFF0000; only applies when hasExplicitFormat = 1; index to XF record
- $xfIndex = (0x0FFF0000 & self::_GetInt4d($recordData, 12)) >> 16;
-
- if ($hasExplicitFormat) {
- $this->_phpSheet->getRowDimension($r + 1)->setXfIndex($this->_mapCellXfIndex[$xfIndex]);
- }
- }
- }
-
-
- /**
- * Read RK record
- * This record represents a cell that contains an RK value
- * (encoded integer or floating-point value). If a
- * floating-point value cannot be encoded to an RK value,
- * a NUMBER record will be written. This record replaces the
- * record INTEGER written in BIFF2.
- *
- * -- "OpenOffice.org's Documentation of the Microsoft
- * Excel File Format"
- */
- private function _readRk()
- {
- $length = self::_GetInt2d($this->_data, $this->_pos + 2);
- $recordData = substr($this->_data, $this->_pos + 4, $length);
-
- // move stream pointer to next record
- $this->_pos += 4 + $length;
-
- // offset: 0; size: 2; index to row
- $row = self::_GetInt2d($recordData, 0);
-
- // offset: 2; size: 2; index to column
- $column = self::_GetInt2d($recordData, 2);
- $columnString = PHPExcel_Cell::stringFromColumnIndex($column);
-
- // Read cell?
- if (($this->getReadFilter() !== NULL) && $this->getReadFilter()->readCell($columnString, $row + 1, $this->_phpSheet->getTitle()) ) {
- // offset: 4; size: 2; index to XF record
- $xfIndex = self::_GetInt2d($recordData, 4);
-
- // offset: 6; size: 4; RK value
- $rknum = self::_GetInt4d($recordData, 6);
- $numValue = self::_GetIEEE754($rknum);
-
- $cell = $this->_phpSheet->getCell($columnString . ($row + 1));
- if (!$this->_readDataOnly) {
- // add style information
- $cell->setXfIndex($this->_mapCellXfIndex[$xfIndex]);
- }
-
- // add cell
- $cell->setValueExplicit($numValue, PHPExcel_Cell_DataType::TYPE_NUMERIC);
- }
- }
-
-
- /**
- * Read LABELSST record
- * This record represents a cell that contains a string. It
- * replaces the LABEL record and RSTRING record used in
- * BIFF2-BIFF5.
- *
- * -- "OpenOffice.org's Documentation of the Microsoft
- * Excel File Format"
- */
- private function _readLabelSst()
- {
- $length = self::_GetInt2d($this->_data, $this->_pos + 2);
- $recordData = substr($this->_data, $this->_pos + 4, $length);
-
- // move stream pointer to next record
- $this->_pos += 4 + $length;
-
- // offset: 0; size: 2; index to row
- $row = self::_GetInt2d($recordData, 0);
-
- // offset: 2; size: 2; index to column
- $column = self::_GetInt2d($recordData, 2);
- $columnString = PHPExcel_Cell::stringFromColumnIndex($column);
-
- // Read cell?
- if (($this->getReadFilter() !== NULL) && $this->getReadFilter()->readCell($columnString, $row + 1, $this->_phpSheet->getTitle()) ) {
- // offset: 4; size: 2; index to XF record
- $xfIndex = self::_GetInt2d($recordData, 4);
-
- // offset: 6; size: 4; index to SST record
- $index = self::_GetInt4d($recordData, 6);
-
- // add cell
- if (($fmtRuns = $this->_sst[$index]['fmtRuns']) && !$this->_readDataOnly) {
- // then we should treat as rich text
- $richText = new PHPExcel_RichText();
- $charPos = 0;
- $sstCount = count($this->_sst[$index]['fmtRuns']);
- for ($i = 0; $i <= $sstCount; ++$i) {
- if (isset($fmtRuns[$i])) {
- $text = PHPExcel_Shared_String::Substring($this->_sst[$index]['value'], $charPos, $fmtRuns[$i]['charPos'] - $charPos);
- $charPos = $fmtRuns[$i]['charPos'];
- } else {
- $text = PHPExcel_Shared_String::Substring($this->_sst[$index]['value'], $charPos, PHPExcel_Shared_String::CountCharacters($this->_sst[$index]['value']));
- }
-
- if (PHPExcel_Shared_String::CountCharacters($text) > 0) {
- if ($i == 0) { // first text run, no style
- $richText->createText($text);
- } else {
- $textRun = $richText->createTextRun($text);
- if (isset($fmtRuns[$i - 1])) {
- if ($fmtRuns[$i - 1]['fontIndex'] < 4) {
- $fontIndex = $fmtRuns[$i - 1]['fontIndex'];
- } else {
- // this has to do with that index 4 is omitted in all BIFF versions for some strange reason
- // check the OpenOffice documentation of the FONT record
- $fontIndex = $fmtRuns[$i - 1]['fontIndex'] - 1;
- }
- $textRun->setFont(clone $this->_objFonts[$fontIndex]);
- }
- }
- }
- }
- $cell = $this->_phpSheet->getCell($columnString . ($row + 1));
- $cell->setValueExplicit($richText, PHPExcel_Cell_DataType::TYPE_STRING);
- } else {
- $cell = $this->_phpSheet->getCell($columnString . ($row + 1));
- $cell->setValueExplicit($this->_sst[$index]['value'], PHPExcel_Cell_DataType::TYPE_STRING);
- }
-
- if (!$this->_readDataOnly) {
- // add style information
- $cell->setXfIndex($this->_mapCellXfIndex[$xfIndex]);
- }
- }
- }
-
-
- /**
- * Read MULRK record
- * This record represents a cell range containing RK value
- * cells. All cells are located in the same row.
- *
- * -- "OpenOffice.org's Documentation of the Microsoft
- * Excel File Format"
- */
- private function _readMulRk()
- {
- $length = self::_GetInt2d($this->_data, $this->_pos + 2);
- $recordData = substr($this->_data, $this->_pos + 4, $length);
-
- // move stream pointer to next record
- $this->_pos += 4 + $length;
-
- // offset: 0; size: 2; index to row
- $row = self::_GetInt2d($recordData, 0);
-
- // offset: 2; size: 2; index to first column
- $colFirst = self::_GetInt2d($recordData, 2);
-
- // offset: var; size: 2; index to last column
- $colLast = self::_GetInt2d($recordData, $length - 2);
- $columns = $colLast - $colFirst + 1;
-
- // offset within record data
- $offset = 4;
-
- for ($i = 0; $i < $columns; ++$i) {
- $columnString = PHPExcel_Cell::stringFromColumnIndex($colFirst + $i);
-
- // Read cell?
- if (($this->getReadFilter() !== NULL) && $this->getReadFilter()->readCell($columnString, $row + 1, $this->_phpSheet->getTitle()) ) {
-
- // offset: var; size: 2; index to XF record
- $xfIndex = self::_GetInt2d($recordData, $offset);
-
- // offset: var; size: 4; RK value
- $numValue = self::_GetIEEE754(self::_GetInt4d($recordData, $offset + 2));
- $cell = $this->_phpSheet->getCell($columnString . ($row + 1));
- if (!$this->_readDataOnly) {
- // add style
- $cell->setXfIndex($this->_mapCellXfIndex[$xfIndex]);
- }
-
- // add cell value
- $cell->setValueExplicit($numValue, PHPExcel_Cell_DataType::TYPE_NUMERIC);
- }
-
- $offset += 6;
- }
- }
-
-
- /**
- * Read NUMBER record
- * This record represents a cell that contains a
- * floating-point value.
- *
- * -- "OpenOffice.org's Documentation of the Microsoft
- * Excel File Format"
- */
- private function _readNumber()
- {
- $length = self::_GetInt2d($this->_data, $this->_pos + 2);
- $recordData = substr($this->_data, $this->_pos + 4, $length);
-
- // move stream pointer to next record
- $this->_pos += 4 + $length;
-
- // offset: 0; size: 2; index to row
- $row = self::_GetInt2d($recordData, 0);
-
- // offset: 2; size 2; index to column
- $column = self::_GetInt2d($recordData, 2);
- $columnString = PHPExcel_Cell::stringFromColumnIndex($column);
-
- // Read cell?
- if (($this->getReadFilter() !== NULL) && $this->getReadFilter()->readCell($columnString, $row + 1, $this->_phpSheet->getTitle()) ) {
- // offset 4; size: 2; index to XF record
- $xfIndex = self::_GetInt2d($recordData, 4);
-
- $numValue = self::_extractNumber(substr($recordData, 6, 8));
-
- $cell = $this->_phpSheet->getCell($columnString . ($row + 1));
- if (!$this->_readDataOnly) {
- // add cell style
- $cell->setXfIndex($this->_mapCellXfIndex[$xfIndex]);
- }
-
- // add cell value
- $cell->setValueExplicit($numValue, PHPExcel_Cell_DataType::TYPE_NUMERIC);
- }
- }
-
-
- /**
- * Read FORMULA record + perhaps a following STRING record if formula result is a string
- * This record contains the token array and the result of a
- * formula cell.
- *
- * -- "OpenOffice.org's Documentation of the Microsoft
- * Excel File Format"
- */
- private function _readFormula()
- {
- $length = self::_GetInt2d($this->_data, $this->_pos + 2);
- $recordData = substr($this->_data, $this->_pos + 4, $length);
-
- // move stream pointer to next record
- $this->_pos += 4 + $length;
-
- // offset: 0; size: 2; row index
- $row = self::_GetInt2d($recordData, 0);
-
- // offset: 2; size: 2; col index
- $column = self::_GetInt2d($recordData, 2);
- $columnString = PHPExcel_Cell::stringFromColumnIndex($column);
-
- // offset: 20: size: variable; formula structure
- $formulaStructure = substr($recordData, 20);
-
- // offset: 14: size: 2; option flags, recalculate always, recalculate on open etc.
- $options = self::_GetInt2d($recordData, 14);
-
- // bit: 0; mask: 0x0001; 1 = recalculate always
- // bit: 1; mask: 0x0002; 1 = calculate on open
- // bit: 2; mask: 0x0008; 1 = part of a shared formula
- $isPartOfSharedFormula = (bool) (0x0008 & $options);
-
- // WARNING:
- // We can apparently not rely on $isPartOfSharedFormula. Even when $isPartOfSharedFormula = true
- // the formula data may be ordinary formula data, therefore we need to check
- // explicitly for the tExp token (0x01)
- $isPartOfSharedFormula = $isPartOfSharedFormula && ord($formulaStructure{2}) == 0x01;
-
- if ($isPartOfSharedFormula) {
- // part of shared formula which means there will be a formula with a tExp token and nothing else
- // get the base cell, grab tExp token
- $baseRow = self::_GetInt2d($formulaStructure, 3);
- $baseCol = self::_GetInt2d($formulaStructure, 5);
- $this->_baseCell = PHPExcel_Cell::stringFromColumnIndex($baseCol). ($baseRow + 1);
- }
-
- // Read cell?
- if (($this->getReadFilter() !== NULL) && $this->getReadFilter()->readCell($columnString, $row + 1, $this->_phpSheet->getTitle()) ) {
-
- if ($isPartOfSharedFormula) {
- // formula is added to this cell after the sheet has been read
- $this->_sharedFormulaParts[$columnString . ($row + 1)] = $this->_baseCell;
- }
-
- // offset: 16: size: 4; not used
-
- // offset: 4; size: 2; XF index
- $xfIndex = self::_GetInt2d($recordData, 4);
-
- // offset: 6; size: 8; result of the formula
- if ( (ord($recordData{6}) == 0)
- && (ord($recordData{12}) == 255)
- && (ord($recordData{13}) == 255) ) {
-
- // String formula. Result follows in appended STRING record
- $dataType = PHPExcel_Cell_DataType::TYPE_STRING;
-
- // read possible SHAREDFMLA record
- $code = self::_GetInt2d($this->_data, $this->_pos);
- if ($code == self::XLS_Type_SHAREDFMLA) {
- $this->_readSharedFmla();
- }
-
- // read STRING record
- $value = $this->_readString();
-
- } elseif ((ord($recordData{6}) == 1)
- && (ord($recordData{12}) == 255)
- && (ord($recordData{13}) == 255)) {
-
- // Boolean formula. Result is in +2; 0=false, 1=true
- $dataType = PHPExcel_Cell_DataType::TYPE_BOOL;
- $value = (bool) ord($recordData{8});
-
- } elseif ((ord($recordData{6}) == 2)
- && (ord($recordData{12}) == 255)
- && (ord($recordData{13}) == 255)) {
-
- // Error formula. Error code is in +2
- $dataType = PHPExcel_Cell_DataType::TYPE_ERROR;
- $value = self::_mapErrorCode(ord($recordData{8}));
-
- } elseif ((ord($recordData{6}) == 3)
- && (ord($recordData{12}) == 255)
- && (ord($recordData{13}) == 255)) {
-
- // Formula result is a null string
- $dataType = PHPExcel_Cell_DataType::TYPE_NULL;
- $value = '';
-
- } else {
-
- // forumla result is a number, first 14 bytes like _NUMBER record
- $dataType = PHPExcel_Cell_DataType::TYPE_NUMERIC;
- $value = self::_extractNumber(substr($recordData, 6, 8));
-
- }
-
- $cell = $this->_phpSheet->getCell($columnString . ($row + 1));
- if (!$this->_readDataOnly) {
- // add cell style
- $cell->setXfIndex($this->_mapCellXfIndex[$xfIndex]);
- }
-
- // store the formula
- if (!$isPartOfSharedFormula) {
- // not part of shared formula
- // add cell value. If we can read formula, populate with formula, otherwise just used cached value
- try {
- if ($this->_version != self::XLS_BIFF8) {
- throw new Exception('Not BIFF8. Can only read BIFF8 formulas');
- }
- $formula = $this->_getFormulaFromStructure($formulaStructure); // get formula in human language
- $cell->setValueExplicit('=' . $formula, PHPExcel_Cell_DataType::TYPE_FORMULA);
-
- } catch (Exception $e) {
- $cell->setValueExplicit($value, $dataType);
- }
- } else {
- if ($this->_version == self::XLS_BIFF8) {
- // do nothing at this point, formula id added later in the code
- } else {
- $cell->setValueExplicit($value, $dataType);
- }
- }
-
- // store the cached calculated value
- $cell->setCalculatedValue($value);
- }
- }
-
-
- /**
- * Read a SHAREDFMLA record. This function just stores the binary shared formula in the reader,
- * which usually contains relative references.
- * These will be used to construct the formula in each shared formula part after the sheet is read.
- */
- private function _readSharedFmla()
- {
- $length = self::_GetInt2d($this->_data, $this->_pos + 2);
- $recordData = substr($this->_data, $this->_pos + 4, $length);
-
- // move stream pointer to next record
- $this->_pos += 4 + $length;
-
- // offset: 0, size: 6; cell range address of the area used by the shared formula, not used for anything
- $cellRange = substr($recordData, 0, 6);
- $cellRange = $this->_readBIFF5CellRangeAddressFixed($cellRange); // note: even BIFF8 uses BIFF5 syntax
-
- // offset: 6, size: 1; not used
-
- // offset: 7, size: 1; number of existing FORMULA records for this shared formula
- $no = ord($recordData{7});
-
- // offset: 8, size: var; Binary token array of the shared formula
- $formula = substr($recordData, 8);
-
- // at this point we only store the shared formula for later use
- $this->_sharedFormulas[$this->_baseCell] = $formula;
-
- }
-
-
- /**
- * Read a STRING record from current stream position and advance the stream pointer to next record
- * This record is used for storing result from FORMULA record when it is a string, and
- * it occurs directly after the FORMULA record
- *
- * @return string The string contents as UTF-8
- */
- private function _readString()
- {
- $length = self::_GetInt2d($this->_data, $this->_pos + 2);
- $recordData = substr($this->_data, $this->_pos + 4, $length);
-
- // move stream pointer to next record
- $this->_pos += 4 + $length;
-
- if ($this->_version == self::XLS_BIFF8) {
- $string = self::_readUnicodeStringLong($recordData);
- $value = $string['value'];
- } else {
- $string = $this->_readByteStringLong($recordData);
- $value = $string['value'];
- }
-
- return $value;
- }
-
-
- /**
- * Read BOOLERR record
- * This record represents a Boolean value or error value
- * cell.
- *
- * -- "OpenOffice.org's Documentation of the Microsoft
- * Excel File Format"
- */
- private function _readBoolErr()
- {
- $length = self::_GetInt2d($this->_data, $this->_pos + 2);
- $recordData = substr($this->_data, $this->_pos + 4, $length);
-
- // move stream pointer to next record
- $this->_pos += 4 + $length;
-
- // offset: 0; size: 2; row index
- $row = self::_GetInt2d($recordData, 0);
-
- // offset: 2; size: 2; column index
- $column = self::_GetInt2d($recordData, 2);
- $columnString = PHPExcel_Cell::stringFromColumnIndex($column);
-
- // Read cell?
- if (($this->getReadFilter() !== NULL) && $this->getReadFilter()->readCell($columnString, $row + 1, $this->_phpSheet->getTitle()) ) {
- // offset: 4; size: 2; index to XF record
- $xfIndex = self::_GetInt2d($recordData, 4);
-
- // offset: 6; size: 1; the boolean value or error value
- $boolErr = ord($recordData{6});
-
- // offset: 7; size: 1; 0=boolean; 1=error
- $isError = ord($recordData{7});
-
- $cell = $this->_phpSheet->getCell($columnString . ($row + 1));
- switch ($isError) {
- case 0: // boolean
- $value = (bool) $boolErr;
-
- // add cell value
- $cell->setValueExplicit($value, PHPExcel_Cell_DataType::TYPE_BOOL);
- break;
-
- case 1: // error type
- $value = self::_mapErrorCode($boolErr);
-
- // add cell value
- $cell->setValueExplicit($value, PHPExcel_Cell_DataType::TYPE_ERROR);
- break;
- }
-
- if (!$this->_readDataOnly) {
- // add cell style
- $cell->setXfIndex($this->_mapCellXfIndex[$xfIndex]);
- }
- }
- }
-
-
- /**
- * Read MULBLANK record
- * This record represents a cell range of empty cells. All
- * cells are located in the same row
- *
- * -- "OpenOffice.org's Documentation of the Microsoft
- * Excel File Format"
- */
- private function _readMulBlank()
- {
- $length = self::_GetInt2d($this->_data, $this->_pos + 2);
- $recordData = substr($this->_data, $this->_pos + 4, $length);
-
- // move stream pointer to next record
- $this->_pos += 4 + $length;
-
- // offset: 0; size: 2; index to row
- $row = self::_GetInt2d($recordData, 0);
-
- // offset: 2; size: 2; index to first column
- $fc = self::_GetInt2d($recordData, 2);
-
- // offset: 4; size: 2 x nc; list of indexes to XF records
- // add style information
- if (!$this->_readDataOnly) {
- for ($i = 0; $i < $length / 2 - 3; ++$i) {
- $columnString = PHPExcel_Cell::stringFromColumnIndex($fc + $i);
-
- // Read cell?
- if (($this->getReadFilter() !== NULL) && $this->getReadFilter()->readCell($columnString, $row + 1, $this->_phpSheet->getTitle()) ) {
- $xfIndex = self::_GetInt2d($recordData, 4 + 2 * $i);
- $this->_phpSheet->getCell($columnString . ($row + 1))->setXfIndex($this->_mapCellXfIndex[$xfIndex]);
- }
- }
- }
-
- // offset: 6; size 2; index to last column (not needed)
- }
-
-
- /**
- * Read LABEL record
- * This record represents a cell that contains a string. In
- * BIFF8 it is usually replaced by the LABELSST record.
- * Excel still uses this record, if it copies unformatted
- * text cells to the clipboard.
- *
- * -- "OpenOffice.org's Documentation of the Microsoft
- * Excel File Format"
- */
- private function _readLabel()
- {
- $length = self::_GetInt2d($this->_data, $this->_pos + 2);
- $recordData = substr($this->_data, $this->_pos + 4, $length);
-
- // move stream pointer to next record
- $this->_pos += 4 + $length;
-
- // offset: 0; size: 2; index to row
- $row = self::_GetInt2d($recordData, 0);
-
- // offset: 2; size: 2; index to column
- $column = self::_GetInt2d($recordData, 2);
- $columnString = PHPExcel_Cell::stringFromColumnIndex($column);
-
- // Read cell?
- if (($this->getReadFilter() !== NULL) && $this->getReadFilter()->readCell($columnString, $row + 1, $this->_phpSheet->getTitle()) ) {
- // offset: 4; size: 2; XF index
- $xfIndex = self::_GetInt2d($recordData, 4);
-
- // add cell value
- // todo: what if string is very long? continue record
- if ($this->_version == self::XLS_BIFF8) {
- $string = self::_readUnicodeStringLong(substr($recordData, 6));
- $value = $string['value'];
- } else {
- $string = $this->_readByteStringLong(substr($recordData, 6));
- $value = $string['value'];
- }
- $cell = $this->_phpSheet->getCell($columnString . ($row + 1));
- $cell->setValueExplicit($value, PHPExcel_Cell_DataType::TYPE_STRING);
-
- if (!$this->_readDataOnly) {
- // add cell style
- $cell->setXfIndex($this->_mapCellXfIndex[$xfIndex]);
- }
- }
- }
-
-
- /**
- * Read BLANK record
- */
- private function _readBlank()
- {
- $length = self::_GetInt2d($this->_data, $this->_pos + 2);
- $recordData = substr($this->_data, $this->_pos + 4, $length);
-
- // move stream pointer to next record
- $this->_pos += 4 + $length;
-
- // offset: 0; size: 2; row index
- $row = self::_GetInt2d($recordData, 0);
-
- // offset: 2; size: 2; col index
- $col = self::_GetInt2d($recordData, 2);
- $columnString = PHPExcel_Cell::stringFromColumnIndex($col);
-
- // Read cell?
- if (($this->getReadFilter() !== NULL) && $this->getReadFilter()->readCell($columnString, $row + 1, $this->_phpSheet->getTitle()) ) {
- // offset: 4; size: 2; XF index
- $xfIndex = self::_GetInt2d($recordData, 4);
-
- // add style information
- if (!$this->_readDataOnly) {
- $this->_phpSheet->getCell($columnString . ($row + 1))->setXfIndex($this->_mapCellXfIndex[$xfIndex]);
- }
- }
-
- }
-
-
- /**
- * Read MSODRAWING record
- */
- private function _readMsoDrawing()
- {
- $length = self::_GetInt2d($this->_data, $this->_pos + 2);
-
- // get spliced record data
- $splicedRecordData = $this->_getSplicedRecordData();
- $recordData = $splicedRecordData['recordData'];
-
- $this->_drawingData .= $recordData;
- }
-
-
- /**
- * Read OBJ record
- */
- private function _readObj()
- {
- $length = self::_GetInt2d($this->_data, $this->_pos + 2);
- $recordData = substr($this->_data, $this->_pos + 4, $length);
-
- // move stream pointer to next record
- $this->_pos += 4 + $length;
-
- if ($this->_readDataOnly || $this->_version != self::XLS_BIFF8) {
- return;
- }
-
- // recordData consists of an array of subrecords looking like this:
- // ft: 2 bytes; ftCmo type (0x15)
- // cb: 2 bytes; size in bytes of ftCmo data
- // ot: 2 bytes; Object Type
- // id: 2 bytes; Object id number
- // grbit: 2 bytes; Option Flags
- // data: var; subrecord data
-
- // for now, we are just interested in the second subrecord containing the object type
- $ftCmoType = self::_GetInt2d($recordData, 0);
- $cbCmoSize = self::_GetInt2d($recordData, 2);
- $otObjType = self::_GetInt2d($recordData, 4);
- $idObjID = self::_GetInt2d($recordData, 6);
- $grbitOpts = self::_GetInt2d($recordData, 6);
-
- $this->_objs[] = array(
- 'ftCmoType' => $ftCmoType,
- 'cbCmoSize' => $cbCmoSize,
- 'otObjType' => $otObjType,
- 'idObjID' => $idObjID,
- 'grbitOpts' => $grbitOpts
- );
- $this->textObjRef = $idObjID;
-
-// echo '<b>_readObj()</b><br />';
-// var_dump(end($this->_objs));
-// echo '<br />';
- }
-
-
- /**
- * Read WINDOW2 record
- */
- private function _readWindow2()
- {
- $length = self::_GetInt2d($this->_data, $this->_pos + 2);
- $recordData = substr($this->_data, $this->_pos + 4, $length);
-
- // move stream pointer to next record
- $this->_pos += 4 + $length;
-
- // offset: 0; size: 2; option flags
- $options = self::_GetInt2d($recordData, 0);
-
- // bit: 1; mask: 0x0002; 0 = do not show gridlines, 1 = show gridlines
- $showGridlines = (bool) ((0x0002 & $options) >> 1);
- $this->_phpSheet->setShowGridlines($showGridlines);
-
- // bit: 2; mask: 0x0004; 0 = do not show headers, 1 = show headers
- $showRowColHeaders = (bool) ((0x0004 & $options) >> 2);
- $this->_phpSheet->setShowRowColHeaders($showRowColHeaders);
-
- // bit: 3; mask: 0x0008; 0 = panes are not frozen, 1 = panes are frozen
- $this->_frozen = (bool) ((0x0008 & $options) >> 3);
-
- // bit: 6; mask: 0x0040; 0 = columns from left to right, 1 = columns from right to left
- $this->_phpSheet->setRightToLeft((bool)((0x0040 & $options) >> 6));
-
- // bit: 10; mask: 0x0400; 0 = sheet not active, 1 = sheet active
- $isActive = (bool) ((0x0400 & $options) >> 10);
- if ($isActive) {
- $this->_phpExcel->setActiveSheetIndex($this->_phpExcel->getIndex($this->_phpSheet));
- }
- }
-
-
- /**
- * Read SCL record
- */
- private function _readScl()
- {
- $length = self::_GetInt2d($this->_data, $this->_pos + 2);
- $recordData = substr($this->_data, $this->_pos + 4, $length);
-
- // move stream pointer to next record
- $this->_pos += 4 + $length;
-
- // offset: 0; size: 2; numerator of the view magnification
- $numerator = self::_GetInt2d($recordData, 0);
-
- // offset: 2; size: 2; numerator of the view magnification
- $denumerator = self::_GetInt2d($recordData, 2);
-
- // set the zoom scale (in percent)
- $this->_phpSheet->getSheetView()->setZoomScale($numerator * 100 / $denumerator);
- }
-
-
- /**
- * Read PANE record
- */
- private function _readPane()
- {
- $length = self::_GetInt2d($this->_data, $this->_pos + 2);
- $recordData = substr($this->_data, $this->_pos + 4, $length);
-
- // move stream pointer to next record
- $this->_pos += 4 + $length;
-
- if (!$this->_readDataOnly) {
- // offset: 0; size: 2; position of vertical split
- $px = self::_GetInt2d($recordData, 0);
-
- // offset: 2; size: 2; position of horizontal split
- $py = self::_GetInt2d($recordData, 2);
-
- if ($this->_frozen) {
- // frozen panes
- $this->_phpSheet->freezePane(PHPExcel_Cell::stringFromColumnIndex($px) . ($py + 1));
- } else {
- // unfrozen panes; split windows; not supported by PHPExcel core
- }
- }
- }
-
-
- /**
- * Read SELECTION record. There is one such record for each pane in the sheet.
- */
- private function _readSelection()
- {
- $length = self::_GetInt2d($this->_data, $this->_pos + 2);
- $recordData = substr($this->_data, $this->_pos + 4, $length);
-
- // move stream pointer to next record
- $this->_pos += 4 + $length;
-
- if (!$this->_readDataOnly) {
- // offset: 0; size: 1; pane identifier
- $paneId = ord($recordData{0});
-
- // offset: 1; size: 2; index to row of the active cell
- $r = self::_GetInt2d($recordData, 1);
-
- // offset: 3; size: 2; index to column of the active cell
- $c = self::_GetInt2d($recordData, 3);
-
- // offset: 5; size: 2; index into the following cell range list to the
- // entry that contains the active cell
- $index = self::_GetInt2d($recordData, 5);
-
- // offset: 7; size: var; cell range address list containing all selected cell ranges
- $data = substr($recordData, 7);
- $cellRangeAddressList = $this->_readBIFF5CellRangeAddressList($data); // note: also BIFF8 uses BIFF5 syntax
-
- $selectedCells = $cellRangeAddressList['cellRangeAddresses'][0];
-
- // first row '1' + last row '16384' indicates that full column is selected (apparently also in BIFF8!)
- if (preg_match('/^([A-Z]+1\:[A-Z]+)16384$/', $selectedCells)) {
- $selectedCells = preg_replace('/^([A-Z]+1\:[A-Z]+)16384$/', '${1}1048576', $selectedCells);
- }
-
- // first row '1' + last row '65536' indicates that full column is selected
- if (preg_match('/^([A-Z]+1\:[A-Z]+)65536$/', $selectedCells)) {
- $selectedCells = preg_replace('/^([A-Z]+1\:[A-Z]+)65536$/', '${1}1048576', $selectedCells);
- }
-
- // first column 'A' + last column 'IV' indicates that full row is selected
- if (preg_match('/^(A[0-9]+\:)IV([0-9]+)$/', $selectedCells)) {
- $selectedCells = preg_replace('/^(A[0-9]+\:)IV([0-9]+)$/', '${1}XFD${2}', $selectedCells);
- }
-
- $this->_phpSheet->setSelectedCells($selectedCells);
- }
- }
-
-
- private function _includeCellRangeFiltered($cellRangeAddress)
- {
- $includeCellRange = true;
- if ($this->getReadFilter() !== NULL) {
- $includeCellRange = false;
- $rangeBoundaries = PHPExcel_Cell::getRangeBoundaries($cellRangeAddress);
- $rangeBoundaries[1][0]++;
- for ($row = $rangeBoundaries[0][1]; $row <= $rangeBoundaries[1][1]; $row++) {
- for ($column = $rangeBoundaries[0][0]; $column != $rangeBoundaries[1][0]; $column++) {
- if ($this->getReadFilter()->readCell($column, $row, $this->_phpSheet->getTitle())) {
- $includeCellRange = true;
- break 2;
- }
- }
- }
- }
- return $includeCellRange;
- }
-
-
- /**
- * MERGEDCELLS
- *
- * This record contains the addresses of merged cell ranges
- * in the current sheet.
- *
- * -- "OpenOffice.org's Documentation of the Microsoft
- * Excel File Format"
- */
- private function _readMergedCells()
- {
- $length = self::_GetInt2d($this->_data, $this->_pos + 2);
- $recordData = substr($this->_data, $this->_pos + 4, $length);
-
- // move stream pointer to next record
- $this->_pos += 4 + $length;
-
- if ($this->_version == self::XLS_BIFF8 && !$this->_readDataOnly) {
- $cellRangeAddressList = $this->_readBIFF8CellRangeAddressList($recordData);
- foreach ($cellRangeAddressList['cellRangeAddresses'] as $cellRangeAddress) {
- if ((strpos($cellRangeAddress,':') !== FALSE) &&
- ($this->_includeCellRangeFiltered($cellRangeAddress))) {
- $this->_phpSheet->mergeCells($cellRangeAddress);
- }
- }
- }
- }
-
-
- /**
- * Read HYPERLINK record
- */
- private function _readHyperLink()
- {
- $length = self::_GetInt2d($this->_data, $this->_pos + 2);
- $recordData = substr($this->_data, $this->_pos + 4, $length);
-
- // move stream pointer forward to next record
- $this->_pos += 4 + $length;
-
- if (!$this->_readDataOnly) {
- // offset: 0; size: 8; cell range address of all cells containing this hyperlink
- try {
- $cellRange = $this->_readBIFF8CellRangeAddressFixed($recordData, 0, 8);
- } catch (Exception $e) {
- return;
- }
-
- // offset: 8, size: 16; GUID of StdLink
-
- // offset: 24, size: 4; unknown value
-
- // offset: 28, size: 4; option flags
-
- // bit: 0; mask: 0x00000001; 0 = no link or extant, 1 = file link or URL
- $isFileLinkOrUrl = (0x00000001 & self::_GetInt2d($recordData, 28)) >> 0;
-
- // bit: 1; mask: 0x00000002; 0 = relative path, 1 = absolute path or URL
- $isAbsPathOrUrl = (0x00000001 & self::_GetInt2d($recordData, 28)) >> 1;
-
- // bit: 2 (and 4); mask: 0x00000014; 0 = no description
- $hasDesc = (0x00000014 & self::_GetInt2d($recordData, 28)) >> 2;
-
- // bit: 3; mask: 0x00000008; 0 = no text, 1 = has text
- $hasText = (0x00000008 & self::_GetInt2d($recordData, 28)) >> 3;
-
- // bit: 7; mask: 0x00000080; 0 = no target frame, 1 = has target frame
- $hasFrame = (0x00000080 & self::_GetInt2d($recordData, 28)) >> 7;
-
- // bit: 8; mask: 0x00000100; 0 = file link or URL, 1 = UNC path (inc. server name)
- $isUNC = (0x00000100 & self::_GetInt2d($recordData, 28)) >> 8;
-
- // offset within record data
- $offset = 32;
-
- if ($hasDesc) {
- // offset: 32; size: var; character count of description text
- $dl = self::_GetInt4d($recordData, 32);
- // offset: 36; size: var; character array of description text, no Unicode string header, always 16-bit characters, zero terminated
- $desc = self::_encodeUTF16(substr($recordData, 36, 2 * ($dl - 1)), false);
- $offset += 4 + 2 * $dl;
- }
- if ($hasFrame) {
- $fl = self::_GetInt4d($recordData, $offset);
- $offset += 4 + 2 * $fl;
- }
-
- // detect type of hyperlink (there are 4 types)
- $hyperlinkType = null;
-
- if ($isUNC) {
- $hyperlinkType = 'UNC';
- } else if (!$isFileLinkOrUrl) {
- $hyperlinkType = 'workbook';
- } else if (ord($recordData{$offset}) == 0x03) {
- $hyperlinkType = 'local';
- } else if (ord($recordData{$offset}) == 0xE0) {
- $hyperlinkType = 'URL';
- }
-
- switch ($hyperlinkType) {
- case 'URL':
- // section 5.58.2: Hyperlink containing a URL
- // e.g. http://example.org/index.php
-
- // offset: var; size: 16; GUID of URL Moniker
- $offset += 16;
- // offset: var; size: 4; size (in bytes) of character array of the URL including trailing zero word
- $us = self::_GetInt4d($recordData, $offset);
- $offset += 4;
- // offset: var; size: $us; character array of the URL, no Unicode string header, always 16-bit characters, zero-terminated
- $url = self::_encodeUTF16(substr($recordData, $offset, $us - 2), false);
- $url .= $hasText ? '#' : '';
- $offset += $us;
- break;
-
- case 'local':
- // section 5.58.3: Hyperlink to local file
- // examples:
- // mydoc.txt
- // ../../somedoc.xls#Sheet!A1
-
- // offset: var; size: 16; GUI of File Moniker
- $offset += 16;
-
- // offset: var; size: 2; directory up-level count.
- $upLevelCount = self::_GetInt2d($recordData, $offset);
- $offset += 2;
-
- // offset: var; size: 4; character count of the shortened file path and name, including trailing zero word
- $sl = self::_GetInt4d($recordData, $offset);
- $offset += 4;
-
- // offset: var; size: sl; character array of the shortened file path and name in 8.3-DOS-format (compressed Unicode string)
- $shortenedFilePath = substr($recordData, $offset, $sl);
- $shortenedFilePath = self::_encodeUTF16($shortenedFilePath, true);
- $shortenedFilePath = substr($shortenedFilePath, 0, -1); // remove trailing zero
-
- $offset += $sl;
-
- // offset: var; size: 24; unknown sequence
- $offset += 24;
-
- // extended file path
- // offset: var; size: 4; size of the following file link field including string lenth mark
- $sz = self::_GetInt4d($recordData, $offset);
- $offset += 4;
-
- // only present if $sz > 0
- if ($sz > 0) {
- // offset: var; size: 4; size of the character array of the extended file path and name
- $xl = self::_GetInt4d($recordData, $offset);
- $offset += 4;
-
- // offset: var; size 2; unknown
- $offset += 2;
-
- // offset: var; size $xl; character array of the extended file path and name.
- $extendedFilePath = substr($recordData, $offset, $xl);
- $extendedFilePath = self::_encodeUTF16($extendedFilePath, false);
- $offset += $xl;
- }
-
- // construct the path
- $url = str_repeat('..\\', $upLevelCount);
- $url .= ($sz > 0) ?
- $extendedFilePath : $shortenedFilePath; // use extended path if available
- $url .= $hasText ? '#' : '';
-
- break;
-
-
- case 'UNC':
- // section 5.58.4: Hyperlink to a File with UNC (Universal Naming Convention) Path
- // todo: implement
- return;
-
- case 'workbook':
- // section 5.58.5: Hyperlink to the Current Workbook
- // e.g. Sheet2!B1:C2, stored in text mark field
- $url = 'sheet://';
- break;
-
- default:
- return;
-
- }
-
- if ($hasText) {
- // offset: var; size: 4; character count of text mark including trailing zero word
- $tl = self::_GetInt4d($recordData, $offset);
- $offset += 4;
- // offset: var; size: var; character array of the text mark without the # sign, no Unicode header, always 16-bit characters, zero-terminated
- $text = self::_encodeUTF16(substr($recordData, $offset, 2 * ($tl - 1)), false);
- $url .= $text;
- }
-
- // apply the hyperlink to all the relevant cells
- foreach (PHPExcel_Cell::extractAllCellReferencesInRange($cellRange) as $coordinate) {
- $this->_phpSheet->getCell($coordinate)->getHyperLink()->setUrl($url);
- }
- }
- }
-
-
- /**
- * Read DATAVALIDATIONS record
- */
- private function _readDataValidations()
- {
- $length = self::_GetInt2d($this->_data, $this->_pos + 2);
- $recordData = substr($this->_data, $this->_pos + 4, $length);
-
- // move stream pointer forward to next record
- $this->_pos += 4 + $length;
- }
-
-
- /**
- * Read DATAVALIDATION record
- */
- private function _readDataValidation()
- {
- $length = self::_GetInt2d($this->_data, $this->_pos + 2);
- $recordData = substr($this->_data, $this->_pos + 4, $length);
-
- // move stream pointer forward to next record
- $this->_pos += 4 + $length;
-
- if ($this->_readDataOnly) {
- return;
- }
-
- // offset: 0; size: 4; Options
- $options = self::_GetInt4d($recordData, 0);
-
- // bit: 0-3; mask: 0x0000000F; type
- $type = (0x0000000F & $options) >> 0;
- switch ($type) {
- case 0x00: $type = PHPExcel_Cell_DataValidation::TYPE_NONE; break;
- case 0x01: $type = PHPExcel_Cell_DataValidation::TYPE_WHOLE; break;
- case 0x02: $type = PHPExcel_Cell_DataValidation::TYPE_DECIMAL; break;
- case 0x03: $type = PHPExcel_Cell_DataValidation::TYPE_LIST; break;
- case 0x04: $type = PHPExcel_Cell_DataValidation::TYPE_DATE; break;
- case 0x05: $type = PHPExcel_Cell_DataValidation::TYPE_TIME; break;
- case 0x06: $type = PHPExcel_Cell_DataValidation::TYPE_TEXTLENGTH; break;
- case 0x07: $type = PHPExcel_Cell_DataValidation::TYPE_CUSTOM; break;
- }
-
- // bit: 4-6; mask: 0x00000070; error type
- $errorStyle = (0x00000070 & $options) >> 4;
- switch ($errorStyle) {
- case 0x00: $errorStyle = PHPExcel_Cell_DataValidation::STYLE_STOP; break;
- case 0x01: $errorStyle = PHPExcel_Cell_DataValidation::STYLE_WARNING; break;
- case 0x02: $errorStyle = PHPExcel_Cell_DataValidation::STYLE_INFORMATION; break;
- }
-
- // bit: 7; mask: 0x00000080; 1= formula is explicit (only applies to list)
- // I have only seen cases where this is 1
- $explicitFormula = (0x00000080 & $options) >> 7;
-
- // bit: 8; mask: 0x00000100; 1= empty cells allowed
- $allowBlank = (0x00000100 & $options) >> 8;
-
- // bit: 9; mask: 0x00000200; 1= suppress drop down arrow in list type validity
- $suppressDropDown = (0x00000200 & $options) >> 9;
-
- // bit: 18; mask: 0x00040000; 1= show prompt box if cell selected
- $showInputMessage = (0x00040000 & $options) >> 18;
-
- // bit: 19; mask: 0x00080000; 1= show error box if invalid values entered
- $showErrorMessage = (0x00080000 & $options) >> 19;
-
- // bit: 20-23; mask: 0x00F00000; condition operator
- $operator = (0x00F00000 & $options) >> 20;
- switch ($operator) {
- case 0x00: $operator = PHPExcel_Cell_DataValidation::OPERATOR_BETWEEN ; break;
- case 0x01: $operator = PHPExcel_Cell_DataValidation::OPERATOR_NOTBETWEEN ; break;
- case 0x02: $operator = PHPExcel_Cell_DataValidation::OPERATOR_EQUAL ; break;
- case 0x03: $operator = PHPExcel_Cell_DataValidation::OPERATOR_NOTEQUAL ; break;
- case 0x04: $operator = PHPExcel_Cell_DataValidation::OPERATOR_GREATERTHAN ; break;
- case 0x05: $operator = PHPExcel_Cell_DataValidation::OPERATOR_LESSTHAN ; break;
- case 0x06: $operator = PHPExcel_Cell_DataValidation::OPERATOR_GREATERTHANOREQUAL; break;
- case 0x07: $operator = PHPExcel_Cell_DataValidation::OPERATOR_LESSTHANOREQUAL ; break;
- }
-
- // offset: 4; size: var; title of the prompt box
- $offset = 4;
- $string = self::_readUnicodeStringLong(substr($recordData, $offset));
- $promptTitle = $string['value'] !== chr(0) ?
- $string['value'] : '';
- $offset += $string['size'];
-
- // offset: var; size: var; title of the error box
- $string = self::_readUnicodeStringLong(substr($recordData, $offset));
- $errorTitle = $string['value'] !== chr(0) ?
- $string['value'] : '';
- $offset += $string['size'];
-
- // offset: var; size: var; text of the prompt box
- $string = self::_readUnicodeStringLong(substr($recordData, $offset));
- $prompt = $string['value'] !== chr(0) ?
- $string['value'] : '';
- $offset += $string['size'];
-
- // offset: var; size: var; text of the error box
- $string = self::_readUnicodeStringLong(substr($recordData, $offset));
- $error = $string['value'] !== chr(0) ?
- $string['value'] : '';
- $offset += $string['size'];
-
- // offset: var; size: 2; size of the formula data for the first condition
- $sz1 = self::_GetInt2d($recordData, $offset);
- $offset += 2;
-
- // offset: var; size: 2; not used
- $offset += 2;
-
- // offset: var; size: $sz1; formula data for first condition (without size field)
- $formula1 = substr($recordData, $offset, $sz1);
- $formula1 = pack('v', $sz1) . $formula1; // prepend the length
- try {
- $formula1 = $this->_getFormulaFromStructure($formula1);
-
- // in list type validity, null characters are used as item separators
- if ($type == PHPExcel_Cell_DataValidation::TYPE_LIST) {
- $formula1 = str_replace(chr(0), ',', $formula1);
- }
- } catch (Exception $e) {
- return;
- }
- $offset += $sz1;
-
- // offset: var; size: 2; size of the formula data for the first condition
- $sz2 = self::_GetInt2d($recordData, $offset);
- $offset += 2;
-
- // offset: var; size: 2; not used
- $offset += 2;
-
- // offset: var; size: $sz2; formula data for second condition (without size field)
- $formula2 = substr($recordData, $offset, $sz2);
- $formula2 = pack('v', $sz2) . $formula2; // prepend the length
- try {
- $formula2 = $this->_getFormulaFromStructure($formula2);
- } catch (Exception $e) {
- return;
- }
- $offset += $sz2;
-
- // offset: var; size: var; cell range address list with
- $cellRangeAddressList = $this->_readBIFF8CellRangeAddressList(substr($recordData, $offset));
- $cellRangeAddresses = $cellRangeAddressList['cellRangeAddresses'];
-
- foreach ($cellRangeAddresses as $cellRange) {
- $stRange = $this->_phpSheet->shrinkRangeToFit($cellRange);
- $stRange = PHPExcel_Cell::extractAllCellReferencesInRange($stRange);
- foreach ($stRange as $coordinate) {
- $objValidation = $this->_phpSheet->getCell($coordinate)->getDataValidation();
- $objValidation->setType($type);
- $objValidation->setErrorStyle($errorStyle);
- $objValidation->setAllowBlank((bool)$allowBlank);
- $objValidation->setShowInputMessage((bool)$showInputMessage);
- $objValidation->setShowErrorMessage((bool)$showErrorMessage);
- $objValidation->setShowDropDown(!$suppressDropDown);
- $objValidation->setOperator($operator);
- $objValidation->setErrorTitle($errorTitle);
- $objValidation->setError($error);
- $objValidation->setPromptTitle($promptTitle);
- $objValidation->setPrompt($prompt);
- $objValidation->setFormula1($formula1);
- $objValidation->setFormula2($formula2);
- }
- }
-
- }
-
-
- /**
- * Read SHEETLAYOUT record. Stores sheet tab color information.
- */
- private function _readSheetLayout()
- {
- $length = self::_GetInt2d($this->_data, $this->_pos + 2);
- $recordData = substr($this->_data, $this->_pos + 4, $length);
-
- // move stream pointer to next record
- $this->_pos += 4 + $length;
-
- // local pointer in record data
- $offset = 0;
-
- if (!$this->_readDataOnly) {
- // offset: 0; size: 2; repeated record identifier 0x0862
-
- // offset: 2; size: 10; not used
-
- // offset: 12; size: 4; size of record data
- // Excel 2003 uses size of 0x14 (documented), Excel 2007 uses size of 0x28 (not documented?)
- $sz = self::_GetInt4d($recordData, 12);
-
- switch ($sz) {
- case 0x14:
- // offset: 16; size: 2; color index for sheet tab
- $colorIndex = self::_GetInt2d($recordData, 16);
- $color = self::_readColor($colorIndex,$this->_palette,$this->_version);
- $this->_phpSheet->getTabColor()->setRGB($color['rgb']);
- break;
-
- case 0x28:
- // TODO: Investigate structure for .xls SHEETLAYOUT record as saved by MS Office Excel 2007
- return;
- break;
- }
- }
- }
-
-
- /**
- * Read SHEETPROTECTION record (FEATHEADR)
- */
- private function _readSheetProtection()
- {
- $length = self::_GetInt2d($this->_data, $this->_pos + 2);
- $recordData = substr($this->_data, $this->_pos + 4, $length);
-
- // move stream pointer to next record
- $this->_pos += 4 + $length;
-
- if ($this->_readDataOnly) {
- return;
- }
-
- // offset: 0; size: 2; repeated record header
-
- // offset: 2; size: 2; FRT cell reference flag (=0 currently)
-
- // offset: 4; size: 8; Currently not used and set to 0
-
- // offset: 12; size: 2; Shared feature type index (2=Enhanced Protetion, 4=SmartTag)
- $isf = self::_GetInt2d($recordData, 12);
- if ($isf != 2) {
- return;
- }
-
- // offset: 14; size: 1; =1 since this is a feat header
-
- // offset: 15; size: 4; size of rgbHdrSData
-
- // rgbHdrSData, assume "Enhanced Protection"
- // offset: 19; size: 2; option flags
- $options = self::_GetInt2d($recordData, 19);
-
- // bit: 0; mask 0x0001; 1 = user may edit objects, 0 = users must not edit objects
- $bool = (0x0001 & $options) >> 0;
- $this->_phpSheet->getProtection()->setObjects(!$bool);
-
- // bit: 1; mask 0x0002; edit scenarios
- $bool = (0x0002 & $options) >> 1;
- $this->_phpSheet->getProtection()->setScenarios(!$bool);
-
- // bit: 2; mask 0x0004; format cells
- $bool = (0x0004 & $options) >> 2;
- $this->_phpSheet->getProtection()->setFormatCells(!$bool);
-
- // bit: 3; mask 0x0008; format columns
- $bool = (0x0008 & $options) >> 3;
- $this->_phpSheet->getProtection()->setFormatColumns(!$bool);
-
- // bit: 4; mask 0x0010; format rows
- $bool = (0x0010 & $options) >> 4;
- $this->_phpSheet->getProtection()->setFormatRows(!$bool);
-
- // bit: 5; mask 0x0020; insert columns
- $bool = (0x0020 & $options) >> 5;
- $this->_phpSheet->getProtection()->setInsertColumns(!$bool);
-
- // bit: 6; mask 0x0040; insert rows
- $bool = (0x0040 & $options) >> 6;
- $this->_phpSheet->getProtection()->setInsertRows(!$bool);
-
- // bit: 7; mask 0x0080; insert hyperlinks
- $bool = (0x0080 & $options) >> 7;
- $this->_phpSheet->getProtection()->setInsertHyperlinks(!$bool);
-
- // bit: 8; mask 0x0100; delete columns
- $bool = (0x0100 & $options) >> 8;
- $this->_phpSheet->getProtection()->setDeleteColumns(!$bool);
-
- // bit: 9; mask 0x0200; delete rows
- $bool = (0x0200 & $options) >> 9;
- $this->_phpSheet->getProtection()->setDeleteRows(!$bool);
-
- // bit: 10; mask 0x0400; select locked cells
- $bool = (0x0400 & $options) >> 10;
- $this->_phpSheet->getProtection()->setSelectLockedCells(!$bool);
-
- // bit: 11; mask 0x0800; sort cell range
- $bool = (0x0800 & $options) >> 11;
- $this->_phpSheet->getProtection()->setSort(!$bool);
-
- // bit: 12; mask 0x1000; auto filter
- $bool = (0x1000 & $options) >> 12;
- $this->_phpSheet->getProtection()->setAutoFilter(!$bool);
-
- // bit: 13; mask 0x2000; pivot tables
- $bool = (0x2000 & $options) >> 13;
- $this->_phpSheet->getProtection()->setPivotTables(!$bool);
-
- // bit: 14; mask 0x4000; select unlocked cells
- $bool = (0x4000 & $options) >> 14;
- $this->_phpSheet->getProtection()->setSelectUnlockedCells(!$bool);
-
- // offset: 21; size: 2; not used
- }
-
-
- /**
- * Read RANGEPROTECTION record
- * Reading of this record is based on Microsoft Office Excel 97-2000 Binary File Format Specification,
- * where it is referred to as FEAT record
- */
- private function _readRangeProtection()
- {
- $length = self::_GetInt2d($this->_data, $this->_pos + 2);
- $recordData = substr($this->_data, $this->_pos + 4, $length);
-
- // move stream pointer to next record
- $this->_pos += 4 + $length;
-
- // local pointer in record data
- $offset = 0;
-
- if (!$this->_readDataOnly) {
- $offset += 12;
-
- // offset: 12; size: 2; shared feature type, 2 = enhanced protection, 4 = smart tag
- $isf = self::_GetInt2d($recordData, 12);
- if ($isf != 2) {
- // we only read FEAT records of type 2
- return;
- }
- $offset += 2;
-
- $offset += 5;
-
- // offset: 19; size: 2; count of ref ranges this feature is on
- $cref = self::_GetInt2d($recordData, 19);
- $offset += 2;
-
- $offset += 6;
-
- // offset: 27; size: 8 * $cref; list of cell ranges (like in hyperlink record)
- $cellRanges = array();
- for ($i = 0; $i < $cref; ++$i) {
- try {
- $cellRange = $this->_readBIFF8CellRangeAddressFixed(substr($recordData, 27 + 8 * $i, 8));
- } catch (Exception $e) {
- return;
- }
- $cellRanges[] = $cellRange;
- $offset += 8;
- }
-
- // offset: var; size: var; variable length of feature specific data
- $rgbFeat = substr($recordData, $offset);
- $offset += 4;
-
- // offset: var; size: 4; the encrypted password (only 16-bit although field is 32-bit)
- $wPassword = self::_GetInt4d($recordData, $offset);
- $offset += 4;
-
- // Apply range protection to sheet
- if ($cellRanges) {
- $this->_phpSheet->protectCells(implode(' ', $cellRanges), strtoupper(dechex($wPassword)), true);
- }
- }
- }
-
-
- /**
- * Read IMDATA record
- */
- private function _readImData()
- {
- $length = self::_GetInt2d($this->_data, $this->_pos + 2);
-
- // get spliced record data
- $splicedRecordData = $this->_getSplicedRecordData();
- $recordData = $splicedRecordData['recordData'];
-
- // UNDER CONSTRUCTION
-
- // offset: 0; size: 2; image format
- $cf = self::_GetInt2d($recordData, 0);
-
- // offset: 2; size: 2; environment from which the file was written
- $env = self::_GetInt2d($recordData, 2);
-
- // offset: 4; size: 4; length of the image data
- $lcb = self::_GetInt4d($recordData, 4);
-
- // offset: 8; size: var; image data
- $iData = substr($recordData, 8);
-
- switch ($cf) {
- case 0x09: // Windows bitmap format
- // BITMAPCOREINFO
- // 1. BITMAPCOREHEADER
- // offset: 0; size: 4; bcSize, Specifies the number of bytes required by the structure
- $bcSize = self::_GetInt4d($iData, 0);
-// var_dump($bcSize);
-
- // offset: 4; size: 2; bcWidth, specifies the width of the bitmap, in pixels
- $bcWidth = self::_GetInt2d($iData, 4);
-// var_dump($bcWidth);
-
- // offset: 6; size: 2; bcHeight, specifies the height of the bitmap, in pixels.
- $bcHeight = self::_GetInt2d($iData, 6);
-// var_dump($bcHeight);
- $ih = imagecreatetruecolor($bcWidth, $bcHeight);
-
- // offset: 8; size: 2; bcPlanes, specifies the number of planes for the target device. This value must be 1
-
- // offset: 10; size: 2; bcBitCount specifies the number of bits-per-pixel. This value must be 1, 4, 8, or 24
- $bcBitCount = self::_GetInt2d($iData, 10);
-// var_dump($bcBitCount);
-
- $rgbString = substr($iData, 12);
- $rgbTriples = array();
- while (strlen($rgbString) > 0) {
- $rgbTriples[] = unpack('Cb/Cg/Cr', $rgbString);
- $rgbString = substr($rgbString, 3);
- }
- $x = 0;
- $y = 0;
- foreach ($rgbTriples as $i => $rgbTriple) {
- $color = imagecolorallocate($ih, $rgbTriple['r'], $rgbTriple['g'], $rgbTriple['b']);
- imagesetpixel($ih, $x, $bcHeight - 1 - $y, $color);
- $x = ($x + 1) % $bcWidth;
- $y = $y + floor(($x + 1) / $bcWidth);
- }
- //imagepng($ih, 'image.png');
-
- $drawing = new PHPExcel_Worksheet_Drawing();
- $drawing->setPath($filename);
- $drawing->setWorksheet($this->_phpSheet);
-
- break;
-
- case 0x02: // Windows metafile or Macintosh PICT format
- case 0x0e: // native format
- default;
- break;
-
- }
-
- // _getSplicedRecordData() takes care of moving current position in data stream
- }
-
-
- /**
- * Read a free CONTINUE record. Free CONTINUE record may be a camouflaged MSODRAWING record
- * When MSODRAWING data on a sheet exceeds 8224 bytes, CONTINUE records are used instead. Undocumented.
- * In this case, we must treat the CONTINUE record as a MSODRAWING record
- */
- private function _readContinue()
- {
- $length = self::_GetInt2d($this->_data, $this->_pos + 2);
- $recordData = substr($this->_data, $this->_pos + 4, $length);
-
- // check if we are reading drawing data
- // this is in case a free CONTINUE record occurs in other circumstances we are unaware of
- if ($this->_drawingData == '') {
- // move stream pointer to next record
- $this->_pos += 4 + $length;
-
- return;
- }
-
- // check if record data is at least 4 bytes long, otherwise there is no chance this is MSODRAWING data
- if ($length < 4) {
- // move stream pointer to next record
- $this->_pos += 4 + $length;
-
- return;
- }
-
- // dirty check to see if CONTINUE record could be a camouflaged MSODRAWING record
- // look inside CONTINUE record to see if it looks like a part of an Escher stream
- // we know that Escher stream may be split at least at
- // 0xF003 MsofbtSpgrContainer
- // 0xF004 MsofbtSpContainer
- // 0xF00D MsofbtClientTextbox
- $validSplitPoints = array(0xF003, 0xF004, 0xF00D); // add identifiers if we find more
-
- $splitPoint = self::_GetInt2d($recordData, 2);
- if (in_array($splitPoint, $validSplitPoints)) {
- // get spliced record data (and move pointer to next record)
- $splicedRecordData = $this->_getSplicedRecordData();
- $this->_drawingData .= $splicedRecordData['recordData'];
-
- return;
- }
-
- // move stream pointer to next record
- $this->_pos += 4 + $length;
-
- }
-
-
- /**
- * Reads a record from current position in data stream and continues reading data as long as CONTINUE
- * records are found. Splices the record data pieces and returns the combined string as if record data
- * is in one piece.
- * Moves to next current position in data stream to start of next record different from a CONtINUE record
- *
- * @return array
- */
- private function _getSplicedRecordData()
- {
- $data = '';
- $spliceOffsets = array();
-
- $i = 0;
- $spliceOffsets[0] = 0;
-
- do {
- ++$i;
-
- // offset: 0; size: 2; identifier
- $identifier = self::_GetInt2d($this->_data, $this->_pos);
- // offset: 2; size: 2; length
- $length = self::_GetInt2d($this->_data, $this->_pos + 2);
- $data .= substr($this->_data, $this->_pos + 4, $length);
-
- $spliceOffsets[$i] = $spliceOffsets[$i - 1] + $length;
-
- $this->_pos += 4 + $length;
- $nextIdentifier = self::_GetInt2d($this->_data, $this->_pos);
- }
- while ($nextIdentifier == self::XLS_Type_CONTINUE);
-
- $splicedData = array(
- 'recordData' => $data,
- 'spliceOffsets' => $spliceOffsets,
- );
-
- return $splicedData;
-
- }
-
-
- /**
- * Convert formula structure into human readable Excel formula like 'A3+A5*5'
- *
- * @param string $formulaStructure The complete binary data for the formula
- * @param string $baseCell Base cell, only needed when formula contains tRefN tokens, e.g. with shared formulas
- * @return string Human readable formula
- */
- private function _getFormulaFromStructure($formulaStructure, $baseCell = 'A1')
- {
- // offset: 0; size: 2; size of the following formula data
- $sz = self::_GetInt2d($formulaStructure, 0);
-
- // offset: 2; size: sz
- $formulaData = substr($formulaStructure, 2, $sz);
-
- // for debug: dump the formula data
- //echo '<xmp>';
- //echo 'size: ' . $sz . "\n";
- //echo 'the entire formula data: ';
- //Debug::dump($formulaData);
- //echo "\n----\n";
-
- // offset: 2 + sz; size: variable (optional)
- if (strlen($formulaStructure) > 2 + $sz) {
- $additionalData = substr($formulaStructure, 2 + $sz);
-
- // for debug: dump the additional data
- //echo 'the entire additional data: ';
- //Debug::dump($additionalData);
- //echo "\n----\n";
-
- } else {
- $additionalData = '';
- }
-
- return $this->_getFormulaFromData($formulaData, $additionalData, $baseCell);
- }
-
-
- /**
- * Take formula data and additional data for formula and return human readable formula
- *
- * @param string $formulaData The binary data for the formula itself
- * @param string $additionalData Additional binary data going with the formula
- * @param string $baseCell Base cell, only needed when formula contains tRefN tokens, e.g. with shared formulas
- * @return string Human readable formula
- */
- private function _getFormulaFromData($formulaData, $additionalData = '', $baseCell = 'A1')
- {
- // start parsing the formula data
- $tokens = array();
-
- while (strlen($formulaData) > 0 and $token = $this->_getNextToken($formulaData, $baseCell)) {
- $tokens[] = $token;
- $formulaData = substr($formulaData, $token['size']);
-
- // for debug: dump the token
- //var_dump($token);
- }
-
- $formulaString = $this->_createFormulaFromTokens($tokens, $additionalData);
-
- return $formulaString;
- }
-
-
- /**
- * Take array of tokens together with additional data for formula and return human readable formula
- *
- * @param array $tokens
- * @param array $additionalData Additional binary data going with the formula
- * @param string $baseCell Base cell, only needed when formula contains tRefN tokens, e.g. with shared formulas
- * @return string Human readable formula
- */
- private function _createFormulaFromTokens($tokens, $additionalData)
- {
- // empty formula?
- if (empty($tokens)) {
- return '';
- }
-
- $formulaStrings = array();
- foreach ($tokens as $token) {
- // initialize spaces
- $space0 = isset($space0) ? $space0 : ''; // spaces before next token, not tParen
- $space1 = isset($space1) ? $space1 : ''; // carriage returns before next token, not tParen
- $space2 = isset($space2) ? $space2 : ''; // spaces before opening parenthesis
- $space3 = isset($space3) ? $space3 : ''; // carriage returns before opening parenthesis
- $space4 = isset($space4) ? $space4 : ''; // spaces before closing parenthesis
- $space5 = isset($space5) ? $space5 : ''; // carriage returns before closing parenthesis
-
- switch ($token['name']) {
- case 'tAdd': // addition
- case 'tConcat': // addition
- case 'tDiv': // division
- case 'tEQ': // equality
- case 'tGE': // greater than or equal
- case 'tGT': // greater than
- case 'tIsect': // intersection
- case 'tLE': // less than or equal
- case 'tList': // less than or equal
- case 'tLT': // less than
- case 'tMul': // multiplication
- case 'tNE': // multiplication
- case 'tPower': // power
- case 'tRange': // range
- case 'tSub': // subtraction
- $op2 = array_pop($formulaStrings);
- $op1 = array_pop($formulaStrings);
- $formulaStrings[] = "$op1$space1$space0{$token['data']}$op2";
- unset($space0, $space1);
- break;
- case 'tUplus': // unary plus
- case 'tUminus': // unary minus
- $op = array_pop($formulaStrings);
- $formulaStrings[] = "$space1$space0{$token['data']}$op";
- unset($space0, $space1);
- break;
- case 'tPercent': // percent sign
- $op = array_pop($formulaStrings);
- $formulaStrings[] = "$op$space1$space0{$token['data']}";
- unset($space0, $space1);
- break;
- case 'tAttrVolatile': // indicates volatile function
- case 'tAttrIf':
- case 'tAttrSkip':
- case 'tAttrChoose':
- // token is only important for Excel formula evaluator
- // do nothing
- break;
- case 'tAttrSpace': // space / carriage return
- // space will be used when next token arrives, do not alter formulaString stack
- switch ($token['data']['spacetype']) {
- case 'type0':
- $space0 = str_repeat(' ', $token['data']['spacecount']);
- break;
- case 'type1':
- $space1 = str_repeat("\n", $token['data']['spacecount']);
- break;
- case 'type2':
- $space2 = str_repeat(' ', $token['data']['spacecount']);
- break;
- case 'type3':
- $space3 = str_repeat("\n", $token['data']['spacecount']);
- break;
- case 'type4':
- $space4 = str_repeat(' ', $token['data']['spacecount']);
- break;
- case 'type5':
- $space5 = str_repeat("\n", $token['data']['spacecount']);
- break;
- }
- break;
- case 'tAttrSum': // SUM function with one parameter
- $op = array_pop($formulaStrings);
- $formulaStrings[] = "{$space1}{$space0}SUM($op)";
- unset($space0, $space1);
- break;
- case 'tFunc': // function with fixed number of arguments
- case 'tFuncV': // function with variable number of arguments
- if ($token['data']['function'] != '') {
- // normal function
- $ops = array(); // array of operators
- for ($i = 0; $i < $token['data']['args']; ++$i) {
- $ops[] = array_pop($formulaStrings);
- }
- $ops = array_reverse($ops);
- $formulaStrings[] = "$space1$space0{$token['data']['function']}(" . implode(',', $ops) . ")";
- unset($space0, $space1);
- } else {
- // add-in function
- $ops = array(); // array of operators
- for ($i = 0; $i < $token['data']['args'] - 1; ++$i) {
- $ops[] = array_pop($formulaStrings);
- }
- $ops = array_reverse($ops);
- $function = array_pop($formulaStrings);
- $formulaStrings[] = "$space1$space0$function(" . implode(',', $ops) . ")";
- unset($space0, $space1);
- }
- break;
- case 'tParen': // parenthesis
- $expression = array_pop($formulaStrings);
- $formulaStrings[] = "$space3$space2($expression$space5$space4)";
- unset($space2, $space3, $space4, $space5);
- break;
- case 'tArray': // array constant
- $constantArray = self::_readBIFF8ConstantArray($additionalData);
- $formulaStrings[] = $space1 . $space0 . $constantArray['value'];
- $additionalData = substr($additionalData, $constantArray['size']); // bite of chunk of additional data
- unset($space0, $space1);
- break;
- case 'tMemArea':
- // bite off chunk of additional data
- $cellRangeAddressList = $this->_readBIFF8CellRangeAddressList($additionalData);
- $additionalData = substr($additionalData, $cellRangeAddressList['size']);
- $formulaStrings[] = "$space1$space0{$token['data']}";
- unset($space0, $space1);
- break;
- case 'tArea': // cell range address
- case 'tBool': // boolean
- case 'tErr': // error code
- case 'tInt': // integer
- case 'tMemErr':
- case 'tMemFunc':
- case 'tMissArg':
- case 'tName':
- case 'tNameX':
- case 'tNum': // number
- case 'tRef': // single cell reference
- case 'tRef3d': // 3d cell reference
- case 'tArea3d': // 3d cell range reference
- case 'tRefN':
- case 'tAreaN':
- case 'tStr': // string
- $formulaStrings[] = "$space1$space0{$token['data']}";
- unset($space0, $space1);
- break;
- }
- }
- $formulaString = $formulaStrings[0];
-
- // for debug: dump the human readable formula
- //echo '----' . "\n";
- //echo 'Formula: ' . $formulaString;
-
- return $formulaString;
- }
-
-
- /**
- * Fetch next token from binary formula data
- *
- * @param string Formula data
- * @param string $baseCell Base cell, only needed when formula contains tRefN tokens, e.g. with shared formulas
- * @return array
- * @throws Exception
- */
- private function _getNextToken($formulaData, $baseCell = 'A1')
- {
- // offset: 0; size: 1; token id
- $id = ord($formulaData[0]); // token id
- $name = false; // initialize token name
-
- switch ($id) {
- case 0x03: $name = 'tAdd'; $size = 1; $data = '+'; break;
- case 0x04: $name = 'tSub'; $size = 1; $data = '-'; break;
- case 0x05: $name = 'tMul'; $size = 1; $data = '*'; break;
- case 0x06: $name = 'tDiv'; $size = 1; $data = '/'; break;
- case 0x07: $name = 'tPower'; $size = 1; $data = '^'; break;
- case 0x08: $name = 'tConcat'; $size = 1; $data = '&'; break;
- case 0x09: $name = 'tLT'; $size = 1; $data = '<'; break;
- case 0x0A: $name = 'tLE'; $size = 1; $data = '<='; break;
- case 0x0B: $name = 'tEQ'; $size = 1; $data = '='; break;
- case 0x0C: $name = 'tGE'; $size = 1; $data = '>='; break;
- case 0x0D: $name = 'tGT'; $size = 1; $data = '>'; break;
- case 0x0E: $name = 'tNE'; $size = 1; $data = '<>'; break;
- case 0x0F: $name = 'tIsect'; $size = 1; $data = ' '; break;
- case 0x10: $name = 'tList'; $size = 1; $data = ','; break;
- case 0x11: $name = 'tRange'; $size = 1; $data = ':'; break;
- case 0x12: $name = 'tUplus'; $size = 1; $data = '+'; break;
- case 0x13: $name = 'tUminus'; $size = 1; $data = '-'; break;
- case 0x14: $name = 'tPercent'; $size = 1; $data = '%'; break;
- case 0x15: // parenthesis
- $name = 'tParen';
- $size = 1;
- $data = null;
- break;
- case 0x16: // missing argument
- $name = 'tMissArg';
- $size = 1;
- $data = '';
- break;
- case 0x17: // string
- $name = 'tStr';
- // offset: 1; size: var; Unicode string, 8-bit string length
- $string = self::_readUnicodeStringShort(substr($formulaData, 1));
- $size = 1 + $string['size'];
- $data = self::_UTF8toExcelDoubleQuoted($string['value']);
- break;
- case 0x19: // Special attribute
- // offset: 1; size: 1; attribute type flags:
- switch (ord($formulaData[1])) {
- case 0x01:
- $name = 'tAttrVolatile';
- $size = 4;
- $data = null;
- break;
- case 0x02:
- $name = 'tAttrIf';
- $size = 4;
- $data = null;
- break;
- case 0x04:
- $name = 'tAttrChoose';
- // offset: 2; size: 2; number of choices in the CHOOSE function ($nc, number of parameters decreased by 1)
- $nc = self::_GetInt2d($formulaData, 2);
- // offset: 4; size: 2 * $nc
- // offset: 4 + 2 * $nc; size: 2
- $size = 2 * $nc + 6;
- $data = null;
- break;
- case 0x08:
- $name = 'tAttrSkip';
- $size = 4;
- $data = null;
- break;
- case 0x10:
- $name = 'tAttrSum';
- $size = 4;
- $data = null;
- break;
- case 0x40:
- case 0x41:
- $name = 'tAttrSpace';
- $size = 4;
- // offset: 2; size: 2; space type and position
- switch (ord($formulaData[2])) {
- case 0x00:
- $spacetype = 'type0';
- break;
- case 0x01:
- $spacetype = 'type1';
- break;
- case 0x02:
- $spacetype = 'type2';
- break;
- case 0x03:
- $spacetype = 'type3';
- break;
- case 0x04:
- $spacetype = 'type4';
- break;
- case 0x05:
- $spacetype = 'type5';
- break;
- default:
- throw new Exception('Unrecognized space type in tAttrSpace token');
- break;
- }
- // offset: 3; size: 1; number of inserted spaces/carriage returns
- $spacecount = ord($formulaData[3]);
-
- $data = array('spacetype' => $spacetype, 'spacecount' => $spacecount);
- break;
- default:
- throw new Exception('Unrecognized attribute flag in tAttr token');
- break;
- }
- break;
- case 0x1C: // error code
- // offset: 1; size: 1; error code
- $name = 'tErr';
- $size = 2;
- $data = self::_mapErrorCode(ord($formulaData[1]));
- break;
- case 0x1D: // boolean
- // offset: 1; size: 1; 0 = false, 1 = true;
- $name = 'tBool';
- $size = 2;
- $data = ord($formulaData[1]) ? 'TRUE' : 'FALSE';
- break;
- case 0x1E: // integer
- // offset: 1; size: 2; unsigned 16-bit integer
- $name = 'tInt';
- $size = 3;
- $data = self::_GetInt2d($formulaData, 1);
- break;
- case 0x1F: // number
- // offset: 1; size: 8;
- $name = 'tNum';
- $size = 9;
- $data = self::_extractNumber(substr($formulaData, 1));
- $data = str_replace(',', '.', (string)$data); // in case non-English locale
- break;
- case 0x20: // array constant
- case 0x40:
- case 0x60:
- // offset: 1; size: 7; not used
- $name = 'tArray';
- $size = 8;
- $data = null;
- break;
- case 0x21: // function with fixed number of arguments
- case 0x41:
- case 0x61:
- $name = 'tFunc';
- $size = 3;
- // offset: 1; size: 2; index to built-in sheet function
- switch (self::_GetInt2d($formulaData, 1)) {
- case 2: $function = 'ISNA'; $args = 1; break;
- case 3: $function = 'ISERROR'; $args = 1; break;
- case 10: $function = 'NA'; $args = 0; break;
- case 15: $function = 'SIN'; $args = 1; break;
- case 16: $function = 'COS'; $args = 1; break;
- case 17: $function = 'TAN'; $args = 1; break;
- case 18: $function = 'ATAN'; $args = 1; break;
- case 19: $function = 'PI'; $args = 0; break;
- case 20: $function = 'SQRT'; $args = 1; break;
- case 21: $function = 'EXP'; $args = 1; break;
- case 22: $function = 'LN'; $args = 1; break;
- case 23: $function = 'LOG10'; $args = 1; break;
- case 24: $function = 'ABS'; $args = 1; break;
- case 25: $function = 'INT'; $args = 1; break;
- case 26: $function = 'SIGN'; $args = 1; break;
- case 27: $function = 'ROUND'; $args = 2; break;
- case 30: $function = 'REPT'; $args = 2; break;
- case 31: $function = 'MID'; $args = 3; break;
- case 32: $function = 'LEN'; $args = 1; break;
- case 33: $function = 'VALUE'; $args = 1; break;
- case 34: $function = 'TRUE'; $args = 0; break;
- case 35: $function = 'FALSE'; $args = 0; break;
- case 38: $function = 'NOT'; $args = 1; break;
- case 39: $function = 'MOD'; $args = 2; break;
- case 40: $function = 'DCOUNT'; $args = 3; break;
- case 41: $function = 'DSUM'; $args = 3; break;
- case 42: $function = 'DAVERAGE'; $args = 3; break;
- case 43: $function = 'DMIN'; $args = 3; break;
- case 44: $function = 'DMAX'; $args = 3; break;
- case 45: $function = 'DSTDEV'; $args = 3; break;
- case 48: $function = 'TEXT'; $args = 2; break;
- case 61: $function = 'MIRR'; $args = 3; break;
- case 63: $function = 'RAND'; $args = 0; break;
- case 65: $function = 'DATE'; $args = 3; break;
- case 66: $function = 'TIME'; $args = 3; break;
- case 67: $function = 'DAY'; $args = 1; break;
- case 68: $function = 'MONTH'; $args = 1; break;
- case 69: $function = 'YEAR'; $args = 1; break;
- case 71: $function = 'HOUR'; $args = 1; break;
- case 72: $function = 'MINUTE'; $args = 1; break;
- case 73: $function = 'SECOND'; $args = 1; break;
- case 74: $function = 'NOW'; $args = 0; break;
- case 75: $function = 'AREAS'; $args = 1; break;
- case 76: $function = 'ROWS'; $args = 1; break;
- case 77: $function = 'COLUMNS'; $args = 1; break;
- case 83: $function = 'TRANSPOSE'; $args = 1; break;
- case 86: $function = 'TYPE'; $args = 1; break;
- case 97: $function = 'ATAN2'; $args = 2; break;
- case 98: $function = 'ASIN'; $args = 1; break;
- case 99: $function = 'ACOS'; $args = 1; break;
- case 105: $function = 'ISREF'; $args = 1; break;
- case 111: $function = 'CHAR'; $args = 1; break;
- case 112: $function = 'LOWER'; $args = 1; break;
- case 113: $function = 'UPPER'; $args = 1; break;
- case 114: $function = 'PROPER'; $args = 1; break;
- case 117: $function = 'EXACT'; $args = 2; break;
- case 118: $function = 'TRIM'; $args = 1; break;
- case 119: $function = 'REPLACE'; $args = 4; break;
- case 121: $function = 'CODE'; $args = 1; break;
- case 126: $function = 'ISERR'; $args = 1; break;
- case 127: $function = 'ISTEXT'; $args = 1; break;
- case 128: $function = 'ISNUMBER'; $args = 1; break;
- case 129: $function = 'ISBLANK'; $args = 1; break;
- case 130: $function = 'T'; $args = 1; break;
- case 131: $function = 'N'; $args = 1; break;
- case 140: $function = 'DATEVALUE'; $args = 1; break;
- case 141: $function = 'TIMEVALUE'; $args = 1; break;
- case 142: $function = 'SLN'; $args = 3; break;
- case 143: $function = 'SYD'; $args = 4; break;
- case 162: $function = 'CLEAN'; $args = 1; break;
- case 163: $function = 'MDETERM'; $args = 1; break;
- case 164: $function = 'MINVERSE'; $args = 1; break;
- case 165: $function = 'MMULT'; $args = 2; break;
- case 184: $function = 'FACT'; $args = 1; break;
- case 189: $function = 'DPRODUCT'; $args = 3; break;
- case 190: $function = 'ISNONTEXT'; $args = 1; break;
- case 195: $function = 'DSTDEVP'; $args = 3; break;
- case 196: $function = 'DVARP'; $args = 3; break;
- case 198: $function = 'ISLOGICAL'; $args = 1; break;
- case 199: $function = 'DCOUNTA'; $args = 3; break;
- case 207: $function = 'REPLACEB'; $args = 4; break;
- case 210: $function = 'MIDB'; $args = 3; break;
- case 211: $function = 'LENB'; $args = 1; break;
- case 212: $function = 'ROUNDUP'; $args = 2; break;
- case 213: $function = 'ROUNDDOWN'; $args = 2; break;
- case 214: $function = 'ASC'; $args = 1; break;
- case 215: $function = 'DBCS'; $args = 1; break;
- case 221: $function = 'TODAY'; $args = 0; break;
- case 229: $function = 'SINH'; $args = 1; break;
- case 230: $function = 'COSH'; $args = 1; break;
- case 231: $function = 'TANH'; $args = 1; break;
- case 232: $function = 'ASINH'; $args = 1; break;
- case 233: $function = 'ACOSH'; $args = 1; break;
- case 234: $function = 'ATANH'; $args = 1; break;
- case 235: $function = 'DGET'; $args = 3; break;
- case 244: $function = 'INFO'; $args = 1; break;
- case 252: $function = 'FREQUENCY'; $args = 2; break;
- case 261: $function = 'ERROR.TYPE'; $args = 1; break;
- case 271: $function = 'GAMMALN'; $args = 1; break;
- case 273: $function = 'BINOMDIST'; $args = 4; break;
- case 274: $function = 'CHIDIST'; $args = 2; break;
- case 275: $function = 'CHIINV'; $args = 2; break;
- case 276: $function = 'COMBIN'; $args = 2; break;
- case 277: $function = 'CONFIDENCE'; $args = 3; break;
- case 278: $function = 'CRITBINOM'; $args = 3; break;
- case 279: $function = 'EVEN'; $args = 1; break;
- case 280: $function = 'EXPONDIST'; $args = 3; break;
- case 281: $function = 'FDIST'; $args = 3; break;
- case 282: $function = 'FINV'; $args = 3; break;
- case 283: $function = 'FISHER'; $args = 1; break;
- case 284: $function = 'FISHERINV'; $args = 1; break;
- case 285: $function = 'FLOOR'; $args = 2; break;
- case 286: $function = 'GAMMADIST'; $args = 4; break;
- case 287: $function = 'GAMMAINV'; $args = 3; break;
- case 288: $function = 'CEILING'; $args = 2; break;
- case 289: $function = 'HYPGEOMDIST'; $args = 4; break;
- case 290: $function = 'LOGNORMDIST'; $args = 3; break;
- case 291: $function = 'LOGINV'; $args = 3; break;
- case 292: $function = 'NEGBINOMDIST'; $args = 3; break;
- case 293: $function = 'NORMDIST'; $args = 4; break;
- case 294: $function = 'NORMSDIST'; $args = 1; break;
- case 295: $function = 'NORMINV'; $args = 3; break;
- case 296: $function = 'NORMSINV'; $args = 1; break;
- case 297: $function = 'STANDARDIZE'; $args = 3; break;
- case 298: $function = 'ODD'; $args = 1; break;
- case 299: $function = 'PERMUT'; $args = 2; break;
- case 300: $function = 'POISSON'; $args = 3; break;
- case 301: $function = 'TDIST'; $args = 3; break;
- case 302: $function = 'WEIBULL'; $args = 4; break;
- case 303: $function = 'SUMXMY2'; $args = 2; break;
- case 304: $function = 'SUMX2MY2'; $args = 2; break;
- case 305: $function = 'SUMX2PY2'; $args = 2; break;
- case 306: $function = 'CHITEST'; $args = 2; break;
- case 307: $function = 'CORREL'; $args = 2; break;
- case 308: $function = 'COVAR'; $args = 2; break;
- case 309: $function = 'FORECAST'; $args = 3; break;
- case 310: $function = 'FTEST'; $args = 2; break;
- case 311: $function = 'INTERCEPT'; $args = 2; break;
- case 312: $function = 'PEARSON'; $args = 2; break;
- case 313: $function = 'RSQ'; $args = 2; break;
- case 314: $function = 'STEYX'; $args = 2; break;
- case 315: $function = 'SLOPE'; $args = 2; break;
- case 316: $function = 'TTEST'; $args = 4; break;
- case 325: $function = 'LARGE'; $args = 2; break;
- case 326: $function = 'SMALL'; $args = 2; break;
- case 327: $function = 'QUARTILE'; $args = 2; break;
- case 328: $function = 'PERCENTILE'; $args = 2; break;
- case 331: $function = 'TRIMMEAN'; $args = 2; break;
- case 332: $function = 'TINV'; $args = 2; break;
- case 337: $function = 'POWER'; $args = 2; break;
- case 342: $function = 'RADIANS'; $args = 1; break;
- case 343: $function = 'DEGREES'; $args = 1; break;
- case 346: $function = 'COUNTIF'; $args = 2; break;
- case 347: $function = 'COUNTBLANK'; $args = 1; break;
- case 350: $function = 'ISPMT'; $args = 4; break;
- case 351: $function = 'DATEDIF'; $args = 3; break;
- case 352: $function = 'DATESTRING'; $args = 1; break;
- case 353: $function = 'NUMBERSTRING'; $args = 2; break;
- case 360: $function = 'PHONETIC'; $args = 1; break;
- case 368: $function = 'BAHTTEXT'; $args = 1; break;
- default:
- throw new Exception('Unrecognized function in formula');
- break;
- }
- $data = array('function' => $function, 'args' => $args);
- break;
- case 0x22: // function with variable number of arguments
- case 0x42:
- case 0x62:
- $name = 'tFuncV';
- $size = 4;
- // offset: 1; size: 1; number of arguments
- $args = ord($formulaData[1]);
- // offset: 2: size: 2; index to built-in sheet function
- $index = self::_GetInt2d($formulaData, 2);
- switch ($index) {
- case 0: $function = 'COUNT'; break;
- case 1: $function = 'IF'; break;
- case 4: $function = 'SUM'; break;
- case 5: $function = 'AVERAGE'; break;
- case 6: $function = 'MIN'; break;
- case 7: $function = 'MAX'; break;
- case 8: $function = 'ROW'; break;
- case 9: $function = 'COLUMN'; break;
- case 11: $function = 'NPV'; break;
- case 12: $function = 'STDEV'; break;
- case 13: $function = 'DOLLAR'; break;
- case 14: $function = 'FIXED'; break;
- case 28: $function = 'LOOKUP'; break;
- case 29: $function = 'INDEX'; break;
- case 36: $function = 'AND'; break;
- case 37: $function = 'OR'; break;
- case 46: $function = 'VAR'; break;
- case 49: $function = 'LINEST'; break;
- case 50: $function = 'TREND'; break;
- case 51: $function = 'LOGEST'; break;
- case 52: $function = 'GROWTH'; break;
- case 56: $function = 'PV'; break;
- case 57: $function = 'FV'; break;
- case 58: $function = 'NPER'; break;
- case 59: $function = 'PMT'; break;
- case 60: $function = 'RATE'; break;
- case 62: $function = 'IRR'; break;
- case 64: $function = 'MATCH'; break;
- case 70: $function = 'WEEKDAY'; break;
- case 78: $function = 'OFFSET'; break;
- case 82: $function = 'SEARCH'; break;
- case 100: $function = 'CHOOSE'; break;
- case 101: $function = 'HLOOKUP'; break;
- case 102: $function = 'VLOOKUP'; break;
- case 109: $function = 'LOG'; break;
- case 115: $function = 'LEFT'; break;
- case 116: $function = 'RIGHT'; break;
- case 120: $function = 'SUBSTITUTE'; break;
- case 124: $function = 'FIND'; break;
- case 125: $function = 'CELL'; break;
- case 144: $function = 'DDB'; break;
- case 148: $function = 'INDIRECT'; break;
- case 167: $function = 'IPMT'; break;
- case 168: $function = 'PPMT'; break;
- case 169: $function = 'COUNTA'; break;
- case 183: $function = 'PRODUCT'; break;
- case 193: $function = 'STDEVP'; break;
- case 194: $function = 'VARP'; break;
- case 197: $function = 'TRUNC'; break;
- case 204: $function = 'USDOLLAR'; break;
- case 205: $function = 'FINDB'; break;
- case 206: $function = 'SEARCHB'; break;
- case 208: $function = 'LEFTB'; break;
- case 209: $function = 'RIGHTB'; break;
- case 216: $function = 'RANK'; break;
- case 219: $function = 'ADDRESS'; break;
- case 220: $function = 'DAYS360'; break;
- case 222: $function = 'VDB'; break;
- case 227: $function = 'MEDIAN'; break;
- case 228: $function = 'SUMPRODUCT'; break;
- case 247: $function = 'DB'; break;
- case 255: $function = ''; break;
- case 269: $function = 'AVEDEV'; break;
- case 270: $function = 'BETADIST'; break;
- case 272: $function = 'BETAINV'; break;
- case 317: $function = 'PROB'; break;
- case 318: $function = 'DEVSQ'; break;
- case 319: $function = 'GEOMEAN'; break;
- case 320: $function = 'HARMEAN'; break;
- case 321: $function = 'SUMSQ'; break;
- case 322: $function = 'KURT'; break;
- case 323: $function = 'SKEW'; break;
- case 324: $function = 'ZTEST'; break;
- case 329: $function = 'PERCENTRANK'; break;
- case 330: $function = 'MODE'; break;
- case 336: $function = 'CONCATENATE'; break;
- case 344: $function = 'SUBTOTAL'; break;
- case 345: $function = 'SUMIF'; break;
- case 354: $function = 'ROMAN'; break;
- case 358: $function = 'GETPIVOTDATA'; break;
- case 359: $function = 'HYPERLINK'; break;
- case 361: $function = 'AVERAGEA'; break;
- case 362: $function = 'MAXA'; break;
- case 363: $function = 'MINA'; break;
- case 364: $function = 'STDEVPA'; break;
- case 365: $function = 'VARPA'; break;
- case 366: $function = 'STDEVA'; break;
- case 367: $function = 'VARA'; break;
- default:
- throw new Exception('Unrecognized function in formula');
- break;
- }
- $data = array('function' => $function, 'args' => $args);
- break;
- case 0x23: // index to defined name
- case 0x43:
- case 0x63:
- $name = 'tName';
- $size = 5;
- // offset: 1; size: 2; one-based index to definedname record
- $definedNameIndex = self::_GetInt2d($formulaData, 1) - 1;
- // offset: 2; size: 2; not used
- $data = $this->_definedname[$definedNameIndex]['name'];
- break;
- case 0x24: // single cell reference e.g. A5
- case 0x44:
- case 0x64:
- $name = 'tRef';
- $size = 5;
- $data = $this->_readBIFF8CellAddress(substr($formulaData, 1, 4));
- break;
- case 0x25: // cell range reference to cells in the same sheet (2d)
- case 0x45:
- case 0x65:
- $name = 'tArea';
- $size = 9;
- $data = $this->_readBIFF8CellRangeAddress(substr($formulaData, 1, 8));
- break;
- case 0x26: // Constant reference sub-expression
- case 0x46:
- case 0x66:
- $name = 'tMemArea';
- // offset: 1; size: 4; not used
- // offset: 5; size: 2; size of the following subexpression
- $subSize = self::_GetInt2d($formulaData, 5);
- $size = 7 + $subSize;
- $data = $this->_getFormulaFromData(substr($formulaData, 7, $subSize));
- break;
- case 0x27: // Deleted constant reference sub-expression
- case 0x47:
- case 0x67:
- $name = 'tMemErr';
- // offset: 1; size: 4; not used
- // offset: 5; size: 2; size of the following subexpression
- $subSize = self::_GetInt2d($formulaData, 5);
- $size = 7 + $subSize;
- $data = $this->_getFormulaFromData(substr($formulaData, 7, $subSize));
- break;
- case 0x29: // Variable reference sub-expression
- case 0x49:
- case 0x69:
- $name = 'tMemFunc';
- // offset: 1; size: 2; size of the following sub-expression
- $subSize = self::_GetInt2d($formulaData, 1);
- $size = 3 + $subSize;
- $data = $this->_getFormulaFromData(substr($formulaData, 3, $subSize));
- break;
-
- case 0x2C: // Relative 2d cell reference reference, used in shared formulas and some other places
- case 0x4C:
- case 0x6C:
- $name = 'tRefN';
- $size = 5;
- $data = $this->_readBIFF8CellAddressB(substr($formulaData, 1, 4), $baseCell);
- break;
-
- case 0x2D: // Relative 2d range reference
- case 0x4D:
- case 0x6D:
- $name = 'tAreaN';
- $size = 9;
- $data = $this->_readBIFF8CellRangeAddressB(substr($formulaData, 1, 8), $baseCell);
- break;
-
- case 0x39: // External name
- case 0x59:
- case 0x79:
- $name = 'tNameX';
- $size = 7;
- // offset: 1; size: 2; index to REF entry in EXTERNSHEET record
- // offset: 3; size: 2; one-based index to DEFINEDNAME or EXTERNNAME record
- $index = self::_GetInt2d($formulaData, 3);
- // assume index is to EXTERNNAME record
- $data = $this->_externalNames[$index - 1]['name'];
- // offset: 5; size: 2; not used
- break;
-
- case 0x3A: // 3d reference to cell
- case 0x5A:
- case 0x7A:
- $name = 'tRef3d';
- $size = 7;
-
- try {
- // offset: 1; size: 2; index to REF entry
- $sheetRange = $this->_readSheetRangeByRefIndex(self::_GetInt2d($formulaData, 1));
- // offset: 3; size: 4; cell address
- $cellAddress = $this->_readBIFF8CellAddress(substr($formulaData, 3, 4));
-
- $data = "$sheetRange!$cellAddress";
- } catch (Exception $e) {
- // deleted sheet reference
- $data = '#REF!';
- }
-
- break;
- case 0x3B: // 3d reference to cell range
- case 0x5B:
- case 0x7B:
- $name = 'tArea3d';
- $size = 11;
-
- try {
- // offset: 1; size: 2; index to REF entry
- $sheetRange = $this->_readSheetRangeByRefIndex(self::_GetInt2d($formulaData, 1));
- // offset: 3; size: 8; cell address
- $cellRangeAddress = $this->_readBIFF8CellRangeAddress(substr($formulaData, 3, 8));
-
- $data = "$sheetRange!$cellRangeAddress";
- } catch (Exception $e) {
- // deleted sheet reference
- $data = '#REF!';
- }
-
- break;
- // Unknown cases // don't know how to deal with
- default:
- throw new Exception('Unrecognized token ' . sprintf('%02X', $id) . ' in formula');
- break;
- }
-
- return array(
- 'id' => $id,
- 'name' => $name,
- 'size' => $size,
- 'data' => $data,
- );
- }
-
-
- /**
- * Reads a cell address in BIFF8 e.g. 'A2' or '$A$2'
- * section 3.3.4
- *
- * @param string $cellAddressStructure
- * @return string
- */
- private function _readBIFF8CellAddress($cellAddressStructure)
- {
- // offset: 0; size: 2; index to row (0... 65535) (or offset (-32768... 32767))
- $row = self::_GetInt2d($cellAddressStructure, 0) + 1;
-
- // offset: 2; size: 2; index to column or column offset + relative flags
-
- // bit: 7-0; mask 0x00FF; column index
- $column = PHPExcel_Cell::stringFromColumnIndex(0x00FF & self::_GetInt2d($cellAddressStructure, 2));
-
- // bit: 14; mask 0x4000; (1 = relative column index, 0 = absolute column index)
- if (!(0x4000 & self::_GetInt2d($cellAddressStructure, 2))) {
- $column = '$' . $column;
- }
- // bit: 15; mask 0x8000; (1 = relative row index, 0 = absolute row index)
- if (!(0x8000 & self::_GetInt2d($cellAddressStructure, 2))) {
- $row = '$' . $row;
- }
-
- return $column . $row;
- }
-
-
- /**
- * Reads a cell address in BIFF8 for shared formulas. Uses positive and negative values for row and column
- * to indicate offsets from a base cell
- * section 3.3.4
- *
- * @param string $cellAddressStructure
- * @param string $baseCell Base cell, only needed when formula contains tRefN tokens, e.g. with shared formulas
- * @return string
- */
- private function _readBIFF8CellAddressB($cellAddressStructure, $baseCell = 'A1')
- {
- list($baseCol, $baseRow) = PHPExcel_Cell::coordinateFromString($baseCell);
- $baseCol = PHPExcel_Cell::columnIndexFromString($baseCol) - 1;
-
- // offset: 0; size: 2; index to row (0... 65535) (or offset (-32768... 32767))
- $rowIndex = self::_GetInt2d($cellAddressStructure, 0);
- $row = self::_GetInt2d($cellAddressStructure, 0) + 1;
-
- // offset: 2; size: 2; index to column or column offset + relative flags
-
- // bit: 7-0; mask 0x00FF; column index
- $colIndex = 0x00FF & self::_GetInt2d($cellAddressStructure, 2);
-
- // bit: 14; mask 0x4000; (1 = relative column index, 0 = absolute column index)
- if (!(0x4000 & self::_GetInt2d($cellAddressStructure, 2))) {
- $column = PHPExcel_Cell::stringFromColumnIndex($colIndex);
- $column = '$' . $column;
- } else {
- $colIndex = ($colIndex <= 127) ? $colIndex : $colIndex - 256;
- $column = PHPExcel_Cell::stringFromColumnIndex($baseCol + $colIndex);
- }
-
- // bit: 15; mask 0x8000; (1 = relative row index, 0 = absolute row index)
- if (!(0x8000 & self::_GetInt2d($cellAddressStructure, 2))) {
- $row = '$' . $row;
- } else {
- $rowIndex = ($rowIndex <= 32767) ? $rowIndex : $rowIndex - 65536;
- $row = $baseRow + $rowIndex;
- }
-
- return $column . $row;
- }
-
-
- /**
- * Reads a cell range address in BIFF5 e.g. 'A2:B6' or 'A1'
- * always fixed range
- * section 2.5.14
- *
- * @param string $subData
- * @return string
- * @throws Exception
- */
- private function _readBIFF5CellRangeAddressFixed($subData)
- {
- // offset: 0; size: 2; index to first row
- $fr = self::_GetInt2d($subData, 0) + 1;
-
- // offset: 2; size: 2; index to last row
- $lr = self::_GetInt2d($subData, 2) + 1;
-
- // offset: 4; size: 1; index to first column
- $fc = ord($subData{4});
-
- // offset: 5; size: 1; index to last column
- $lc = ord($subData{5});
-
- // check values
- if ($fr > $lr || $fc > $lc) {
- throw new Exception('Not a cell range address');
- }
-
- // column index to letter
- $fc = PHPExcel_Cell::stringFromColumnIndex($fc);
- $lc = PHPExcel_Cell::stringFromColumnIndex($lc);
-
- if ($fr == $lr and $fc == $lc) {
- return "$fc$fr";
- }
- return "$fc$fr:$lc$lr";
- }
-
-
- /**
- * Reads a cell range address in BIFF8 e.g. 'A2:B6' or 'A1'
- * always fixed range
- * section 2.5.14
- *
- * @param string $subData
- * @return string
- * @throws Exception
- */
- private function _readBIFF8CellRangeAddressFixed($subData)
- {
- // offset: 0; size: 2; index to first row
- $fr = self::_GetInt2d($subData, 0) + 1;
-
- // offset: 2; size: 2; index to last row
- $lr = self::_GetInt2d($subData, 2) + 1;
-
- // offset: 4; size: 2; index to first column
- $fc = self::_GetInt2d($subData, 4);
-
- // offset: 6; size: 2; index to last column
- $lc = self::_GetInt2d($subData, 6);
-
- // check values
- if ($fr > $lr || $fc > $lc) {
- throw new Exception('Not a cell range address');
- }
-
- // column index to letter
- $fc = PHPExcel_Cell::stringFromColumnIndex($fc);
- $lc = PHPExcel_Cell::stringFromColumnIndex($lc);
-
- if ($fr == $lr and $fc == $lc) {
- return "$fc$fr";
- }
- return "$fc$fr:$lc$lr";
- }
-
-
- /**
- * Reads a cell range address in BIFF8 e.g. 'A2:B6' or '$A$2:$B$6'
- * there are flags indicating whether column/row index is relative
- * section 3.3.4
- *
- * @param string $subData
- * @return string
- */
- private function _readBIFF8CellRangeAddress($subData)
- {
- // todo: if cell range is just a single cell, should this funciton
- // not just return e.g. 'A1' and not 'A1:A1' ?
-
- // offset: 0; size: 2; index to first row (0... 65535) (or offset (-32768... 32767))
- $fr = self::_GetInt2d($subData, 0) + 1;
-
- // offset: 2; size: 2; index to last row (0... 65535) (or offset (-32768... 32767))
- $lr = self::_GetInt2d($subData, 2) + 1;
-
- // offset: 4; size: 2; index to first column or column offset + relative flags
-
- // bit: 7-0; mask 0x00FF; column index
- $fc = PHPExcel_Cell::stringFromColumnIndex(0x00FF & self::_GetInt2d($subData, 4));
-
- // bit: 14; mask 0x4000; (1 = relative column index, 0 = absolute column index)
- if (!(0x4000 & self::_GetInt2d($subData, 4))) {
- $fc = '$' . $fc;
- }
-
- // bit: 15; mask 0x8000; (1 = relative row index, 0 = absolute row index)
- if (!(0x8000 & self::_GetInt2d($subData, 4))) {
- $fr = '$' . $fr;
- }
-
- // offset: 6; size: 2; index to last column or column offset + relative flags
-
- // bit: 7-0; mask 0x00FF; column index
- $lc = PHPExcel_Cell::stringFromColumnIndex(0x00FF & self::_GetInt2d($subData, 6));
-
- // bit: 14; mask 0x4000; (1 = relative column index, 0 = absolute column index)
- if (!(0x4000 & self::_GetInt2d($subData, 6))) {
- $lc = '$' . $lc;
- }
-
- // bit: 15; mask 0x8000; (1 = relative row index, 0 = absolute row index)
- if (!(0x8000 & self::_GetInt2d($subData, 6))) {
- $lr = '$' . $lr;
- }
-
- return "$fc$fr:$lc$lr";
- }
-
-
- /**
- * Reads a cell range address in BIFF8 for shared formulas. Uses positive and negative values for row and column
- * to indicate offsets from a base cell
- * section 3.3.4
- *
- * @param string $subData
- * @param string $baseCell Base cell
- * @return string Cell range address
- */
- private function _readBIFF8CellRangeAddressB($subData, $baseCell = 'A1')
- {
- list($baseCol, $baseRow) = PHPExcel_Cell::coordinateFromString($baseCell);
- $baseCol = PHPExcel_Cell::columnIndexFromString($baseCol) - 1;
-
- // TODO: if cell range is just a single cell, should this funciton
- // not just return e.g. 'A1' and not 'A1:A1' ?
-
- // offset: 0; size: 2; first row
- $frIndex = self::_GetInt2d($subData, 0); // adjust below
-
- // offset: 2; size: 2; relative index to first row (0... 65535) should be treated as offset (-32768... 32767)
- $lrIndex = self::_GetInt2d($subData, 2); // adjust below
-
- // offset: 4; size: 2; first column with relative/absolute flags
-
- // bit: 7-0; mask 0x00FF; column index
- $fcIndex = 0x00FF & self::_GetInt2d($subData, 4);
-
- // bit: 14; mask 0x4000; (1 = relative column index, 0 = absolute column index)
- if (!(0x4000 & self::_GetInt2d($subData, 4))) {
- // absolute column index
- $fc = PHPExcel_Cell::stringFromColumnIndex($fcIndex);
- $fc = '$' . $fc;
- } else {
- // column offset
- $fcIndex = ($fcIndex <= 127) ? $fcIndex : $fcIndex - 256;
- $fc = PHPExcel_Cell::stringFromColumnIndex($baseCol + $fcIndex);
- }
-
- // bit: 15; mask 0x8000; (1 = relative row index, 0 = absolute row index)
- if (!(0x8000 & self::_GetInt2d($subData, 4))) {
- // absolute row index
- $fr = $frIndex + 1;
- $fr = '$' . $fr;
- } else {
- // row offset
- $frIndex = ($frIndex <= 32767) ? $frIndex : $frIndex - 65536;
- $fr = $baseRow + $frIndex;
- }
-
- // offset: 6; size: 2; last column with relative/absolute flags
-
- // bit: 7-0; mask 0x00FF; column index
- $lcIndex = 0x00FF & self::_GetInt2d($subData, 6);
- $lcIndex = ($lcIndex <= 127) ? $lcIndex : $lcIndex - 256;
- $lc = PHPExcel_Cell::stringFromColumnIndex($baseCol + $lcIndex);
-
- // bit: 14; mask 0x4000; (1 = relative column index, 0 = absolute column index)
- if (!(0x4000 & self::_GetInt2d($subData, 6))) {
- // absolute column index
- $lc = PHPExcel_Cell::stringFromColumnIndex($lcIndex);
- $lc = '$' . $lc;
- } else {
- // column offset
- $lcIndex = ($lcIndex <= 127) ? $lcIndex : $lcIndex - 256;
- $lc = PHPExcel_Cell::stringFromColumnIndex($baseCol + $lcIndex);
- }
-
- // bit: 15; mask 0x8000; (1 = relative row index, 0 = absolute row index)
- if (!(0x8000 & self::_GetInt2d($subData, 6))) {
- // absolute row index
- $lr = $lrIndex + 1;
- $lr = '$' . $lr;
- } else {
- // row offset
- $lrIndex = ($lrIndex <= 32767) ? $lrIndex : $lrIndex - 65536;
- $lr = $baseRow + $lrIndex;
- }
-
- return "$fc$fr:$lc$lr";
- }
-
-
- /**
- * Read BIFF8 cell range address list
- * section 2.5.15
- *
- * @param string $subData
- * @return array
- */
- private function _readBIFF8CellRangeAddressList($subData)
- {
- $cellRangeAddresses = array();
-
- // offset: 0; size: 2; number of the following cell range addresses
- $nm = self::_GetInt2d($subData, 0);
-
- $offset = 2;
- // offset: 2; size: 8 * $nm; list of $nm (fixed) cell range addresses
- for ($i = 0; $i < $nm; ++$i) {
- $cellRangeAddresses[] = $this->_readBIFF8CellRangeAddressFixed(substr($subData, $offset, 8));
- $offset += 8;
- }
-
- return array(
- 'size' => 2 + 8 * $nm,
- 'cellRangeAddresses' => $cellRangeAddresses,
- );
- }
-
-
- /**
- * Read BIFF5 cell range address list
- * section 2.5.15
- *
- * @param string $subData
- * @return array
- */
- private function _readBIFF5CellRangeAddressList($subData)
- {
- $cellRangeAddresses = array();
-
- // offset: 0; size: 2; number of the following cell range addresses
- $nm = self::_GetInt2d($subData, 0);
-
- $offset = 2;
- // offset: 2; size: 6 * $nm; list of $nm (fixed) cell range addresses
- for ($i = 0; $i < $nm; ++$i) {
- $cellRangeAddresses[] = $this->_readBIFF5CellRangeAddressFixed(substr($subData, $offset, 6));
- $offset += 6;
- }
-
- return array(
- 'size' => 2 + 6 * $nm,
- 'cellRangeAddresses' => $cellRangeAddresses,
- );
- }
-
-
- /**
- * Get a sheet range like Sheet1:Sheet3 from REF index
- * Note: If there is only one sheet in the range, one gets e.g Sheet1
- * It can also happen that the REF structure uses the -1 (FFFF) code to indicate deleted sheets,
- * in which case an exception is thrown
- *
- * @param int $index
- * @return string|false
- * @throws Exception
- */
- private function _readSheetRangeByRefIndex($index)
- {
- if (isset($this->_ref[$index])) {
-
- $type = $this->_externalBooks[$this->_ref[$index]['externalBookIndex']]['type'];
-
- switch ($type) {
- case 'internal':
- // check if we have a deleted 3d reference
- if ($this->_ref[$index]['firstSheetIndex'] == 0xFFFF or $this->_ref[$index]['lastSheetIndex'] == 0xFFFF) {
- throw new Exception('Deleted sheet reference');
- }
-
- // we have normal sheet range (collapsed or uncollapsed)
- $firstSheetName = $this->_sheets[$this->_ref[$index]['firstSheetIndex']]['name'];
- $lastSheetName = $this->_sheets[$this->_ref[$index]['lastSheetIndex']]['name'];
-
- if ($firstSheetName == $lastSheetName) {
- // collapsed sheet range
- $sheetRange = $firstSheetName;
- } else {
- $sheetRange = "$firstSheetName:$lastSheetName";
- }
-
- // escape the single-quotes
- $sheetRange = str_replace("'", "''", $sheetRange);
-
- // if there are special characters, we need to enclose the range in single-quotes
- // todo: check if we have identified the whole set of special characters
- // it seems that the following characters are not accepted for sheet names
- // and we may assume that they are not present: []*/:\?
- if (preg_match("/[ !\"@#£$%&{()}<>=+'|^,;-]/", $sheetRange)) {
- $sheetRange = "'$sheetRange'";
- }
-
- return $sheetRange;
- break;
-
- default:
- // TODO: external sheet support
- throw new Exception('Excel5 reader only supports internal sheets in fomulas');
- break;
- }
- }
- return false;
- }
-
-
- /**
- * read BIFF8 constant value array from array data
- * returns e.g. array('value' => '{1,2;3,4}', 'size' => 40}
- * section 2.5.8
- *
- * @param string $arrayData
- * @return array
- */
- private static function _readBIFF8ConstantArray($arrayData)
- {
- // offset: 0; size: 1; number of columns decreased by 1
- $nc = ord($arrayData[0]);
-
- // offset: 1; size: 2; number of rows decreased by 1
- $nr = self::_GetInt2d($arrayData, 1);
- $size = 3; // initialize
- $arrayData = substr($arrayData, 3);
-
- // offset: 3; size: var; list of ($nc + 1) * ($nr + 1) constant values
- $matrixChunks = array();
- for ($r = 1; $r <= $nr + 1; ++$r) {
- $items = array();
- for ($c = 1; $c <= $nc + 1; ++$c) {
- $constant = self::_readBIFF8Constant($arrayData);
- $items[] = $constant['value'];
- $arrayData = substr($arrayData, $constant['size']);
- $size += $constant['size'];
- }
- $matrixChunks[] = implode(',', $items); // looks like e.g. '1,"hello"'
- }
- $matrix = '{' . implode(';', $matrixChunks) . '}';
-
- return array(
- 'value' => $matrix,
- 'size' => $size,
- );
- }
-
-
- /**
- * read BIFF8 constant value which may be 'Empty Value', 'Number', 'String Value', 'Boolean Value', 'Error Value'
- * section 2.5.7
- * returns e.g. array('value' => '5', 'size' => 9)
- *
- * @param string $valueData
- * @return array
- */
- private static function _readBIFF8Constant($valueData)
- {
- // offset: 0; size: 1; identifier for type of constant
- $identifier = ord($valueData[0]);
-
- switch ($identifier) {
- case 0x00: // empty constant (what is this?)
- $value = '';
- $size = 9;
- break;
- case 0x01: // number
- // offset: 1; size: 8; IEEE 754 floating-point value
- $value = self::_extractNumber(substr($valueData, 1, 8));
- $size = 9;
- break;
- case 0x02: // string value
- // offset: 1; size: var; Unicode string, 16-bit string length
- $string = self::_readUnicodeStringLong(substr($valueData, 1));
- $value = '"' . $string['value'] . '"';
- $size = 1 + $string['size'];
- break;
- case 0x04: // boolean
- // offset: 1; size: 1; 0 = FALSE, 1 = TRUE
- if (ord($valueData[1])) {
- $value = 'TRUE';
- } else {
- $value = 'FALSE';
- }
- $size = 9;
- break;
- case 0x10: // error code
- // offset: 1; size: 1; error code
- $value = self::_mapErrorCode(ord($valueData[1]));
- $size = 9;
- break;
- }
- return array(
- 'value' => $value,
- 'size' => $size,
- );
- }
-
-
- /**
- * Extract RGB color
- * OpenOffice.org's Documentation of the Microsoft Excel File Format, section 2.5.4
- *
- * @param string $rgb Encoded RGB value (4 bytes)
- * @return array
- */
- private static function _readRGB($rgb)
- {
- // offset: 0; size 1; Red component
- $r = ord($rgb{0});
-
- // offset: 1; size: 1; Green component
- $g = ord($rgb{1});
-
- // offset: 2; size: 1; Blue component
- $b = ord($rgb{2});
-
- // HEX notation, e.g. 'FF00FC'
- $rgb = sprintf('%02X%02X%02X', $r, $g, $b);
-
- return array('rgb' => $rgb);
- }
-
-
- /**
- * Read byte string (8-bit string length)
- * OpenOffice documentation: 2.5.2
- *
- * @param string $subData
- * @return array
- */
- private function _readByteStringShort($subData)
- {
- // offset: 0; size: 1; length of the string (character count)
- $ln = ord($subData[0]);
-
- // offset: 1: size: var; character array (8-bit characters)
- $value = $this->_decodeCodepage(substr($subData, 1, $ln));
-
- return array(
- 'value' => $value,
- 'size' => 1 + $ln, // size in bytes of data structure
- );
- }
-
-
- /**
- * Read byte string (16-bit string length)
- * OpenOffice documentation: 2.5.2
- *
- * @param string $subData
- * @return array
- */
- private function _readByteStringLong($subData)
- {
- // offset: 0; size: 2; length of the string (character count)
- $ln = self::_GetInt2d($subData, 0);
-
- // offset: 2: size: var; character array (8-bit characters)
- $value = $this->_decodeCodepage(substr($subData, 2));
-
- //return $string;
- return array(
- 'value' => $value,
- 'size' => 2 + $ln, // size in bytes of data structure
- );
- }
-
-
- /**
- * Extracts an Excel Unicode short string (8-bit string length)
- * OpenOffice documentation: 2.5.3
- * function will automatically find out where the Unicode string ends.
- *
- * @param string $subData
- * @return array
- */
- private static function _readUnicodeStringShort($subData)
- {
- $value = '';
-
- // offset: 0: size: 1; length of the string (character count)
- $characterCount = ord($subData[0]);
-
- $string = self::_readUnicodeString(substr($subData, 1), $characterCount);
-
- // add 1 for the string length
- $string['size'] += 1;
-
- return $string;
- }
-
-
- /**
- * Extracts an Excel Unicode long string (16-bit string length)
- * OpenOffice documentation: 2.5.3
- * this function is under construction, needs to support rich text, and Asian phonetic settings
- *
- * @param string $subData
- * @return array
- */
- private static function _readUnicodeStringLong($subData)
- {
- $value = '';
-
- // offset: 0: size: 2; length of the string (character count)
- $characterCount = self::_GetInt2d($subData, 0);
-
- $string = self::_readUnicodeString(substr($subData, 2), $characterCount);
-
- // add 2 for the string length
- $string['size'] += 2;
-
- return $string;
- }
-
-
- /**
- * Read Unicode string with no string length field, but with known character count
- * this function is under construction, needs to support rich text, and Asian phonetic settings
- * OpenOffice.org's Documentation of the Microsoft Excel File Format, section 2.5.3
- *
- * @param string $subData
- * @param int $characterCount
- * @return array
- */
- private static function _readUnicodeString($subData, $characterCount)
- {
- $value = '';
-
- // offset: 0: size: 1; option flags
-
- // bit: 0; mask: 0x01; character compression (0 = compressed 8-bit, 1 = uncompressed 16-bit)
- $isCompressed = !((0x01 & ord($subData[0])) >> 0);
-
- // bit: 2; mask: 0x04; Asian phonetic settings
- $hasAsian = (0x04) & ord($subData[0]) >> 2;
-
- // bit: 3; mask: 0x08; Rich-Text settings
- $hasRichText = (0x08) & ord($subData[0]) >> 3;
-
- // offset: 1: size: var; character array
- // this offset assumes richtext and Asian phonetic settings are off which is generally wrong
- // needs to be fixed
- $value = self::_encodeUTF16(substr($subData, 1, $isCompressed ? $characterCount : 2 * $characterCount), $isCompressed);
-
- return array(
- 'value' => $value,
- 'size' => $isCompressed ? 1 + $characterCount : 1 + 2 * $characterCount, // the size in bytes including the option flags
- );
- }
-
-
- /**
- * Convert UTF-8 string to string surounded by double quotes. Used for explicit string tokens in formulas.
- * Example: hello"world --> "hello""world"
- *
- * @param string $value UTF-8 encoded string
- * @return string
- */
- private static function _UTF8toExcelDoubleQuoted($value)
- {
- return '"' . str_replace('"', '""', $value) . '"';
- }
-
-
- /**
- * Reads first 8 bytes of a string and return IEEE 754 float
- *
- * @param string $data Binary string that is at least 8 bytes long
- * @return float
- */
- private static function _extractNumber($data)
- {
- $rknumhigh = self::_GetInt4d($data, 4);
- $rknumlow = self::_GetInt4d($data, 0);
- $sign = ($rknumhigh & 0x80000000) >> 31;
- $exp = (($rknumhigh & 0x7ff00000) >> 20) - 1023;
- $mantissa = (0x100000 | ($rknumhigh & 0x000fffff));
- $mantissalow1 = ($rknumlow & 0x80000000) >> 31;
- $mantissalow2 = ($rknumlow & 0x7fffffff);
- $value = $mantissa / pow( 2 , (20 - $exp));
-
- if ($mantissalow1 != 0) {
- $value += 1 / pow (2 , (21 - $exp));
- }
-
- $value += $mantissalow2 / pow (2 , (52 - $exp));
- if ($sign) {
- $value *= -1;
- }
-
- return $value;
- }
-
-
- private static function _GetIEEE754($rknum)
- {
- if (($rknum & 0x02) != 0) {
- $value = $rknum >> 2;
- } else {
- // changes by mmp, info on IEEE754 encoding from
- // research.microsoft.com/~hollasch/cgindex/coding/ieeefloat.html
- // The RK format calls for using only the most significant 30 bits
- // of the 64 bit floating point value. The other 34 bits are assumed
- // to be 0 so we use the upper 30 bits of $rknum as follows...
- $sign = ($rknum & 0x80000000) >> 31;
- $exp = ($rknum & 0x7ff00000) >> 20;
- $mantissa = (0x100000 | ($rknum & 0x000ffffc));
- $value = $mantissa / pow( 2 , (20- ($exp - 1023)));
- if ($sign) {
- $value = -1 * $value;
- }
- //end of changes by mmp
- }
- if (($rknum & 0x01) != 0) {
- $value /= 100;
- }
- return $value;
- }
-
-
- /**
- * Get UTF-8 string from (compressed or uncompressed) UTF-16 string
- *
- * @param string $string
- * @param bool $compressed
- * @return string
- */
- private static function _encodeUTF16($string, $compressed = '')
- {
- if ($compressed) {
- $string = self::_uncompressByteString($string);
- }
-
- return PHPExcel_Shared_String::ConvertEncoding($string, 'UTF-8', 'UTF-16LE');
- }
-
-
- /**
- * Convert UTF-16 string in compressed notation to uncompressed form. Only used for BIFF8.
- *
- * @param string $string
- * @return string
- */
- private static function _uncompressByteString($string)
- {
- $uncompressedString = '';
- $strLen = strlen($string);
- for ($i = 0; $i < $strLen; ++$i) {
- $uncompressedString .= $string[$i] . "\0";
- }
-
- return $uncompressedString;
- }
-
-
- /**
- * Convert string to UTF-8. Only used for BIFF5.
- *
- * @param string $string
- * @return string
- */
- private function _decodeCodepage($string)
- {
- return PHPExcel_Shared_String::ConvertEncoding($string, 'UTF-8', $this->_codepage);
- }
-
-
- /**
- * Read 16-bit unsigned integer
- *
- * @param string $data
- * @param int $pos
- * @return int
- */
- public static function _GetInt2d($data, $pos)
- {
- return ord($data[$pos]) | (ord($data[$pos+1]) << 8);
- }
-
-
- /**
- * Read 32-bit signed integer
- *
- * @param string $data
- * @param int $pos
- * @return int
- */
- public static function _GetInt4d($data, $pos)
- {
- // FIX: represent numbers correctly on 64-bit system
- // http://sourceforge.net/tracker/index.php?func=detail&aid=1487372&group_id=99160&atid=623334
- // Hacked by Andreas Rehm 2006 to ensure correct result of the <<24 block on 32 and 64bit systems
- $_or_24 = ord($data[$pos + 3]);
- if ($_or_24 >= 128) {
- // negative number
- $_ord_24 = -abs((256 - $_or_24) << 24);
- } else {
- $_ord_24 = ($_or_24 & 127) << 24;
- }
- return ord($data[$pos]) | (ord($data[$pos+1]) << 8) | (ord($data[$pos+2]) << 16) | $_ord_24;
- }
-
-
- /**
- * Read color
- *
- * @param int $color Indexed color
- * @param array $palette Color palette
- * @return array RGB color value, example: array('rgb' => 'FF0000')
- */
- private static function _readColor($color,$palette,$version)
- {
- if ($color <= 0x07 || $color >= 0x40) {
- // special built-in color
- return self::_mapBuiltInColor($color);
- } elseif (isset($palette) && isset($palette[$color - 8])) {
- // palette color, color index 0x08 maps to pallete index 0
- return $palette[$color - 8];
- } else {
- // default color table
- if ($version == self::XLS_BIFF8) {
- return self::_mapColor($color);
- } else {
- // BIFF5
- return self::_mapColorBIFF5($color);
- }
- }
-
- return $color;
- }
-
-
- /**
- * Map border style
- * OpenOffice documentation: 2.5.11
- *
- * @param int $index
- * @return string
- */
- private static function _mapBorderStyle($index)
- {
- switch ($index) {
- case 0x00: return PHPExcel_Style_Border::BORDER_NONE;
- case 0x01: return PHPExcel_Style_Border::BORDER_THIN;
- case 0x02: return PHPExcel_Style_Border::BORDER_MEDIUM;
- case 0x03: return PHPExcel_Style_Border::BORDER_DASHED;
- case 0x04: return PHPExcel_Style_Border::BORDER_DOTTED;
- case 0x05: return PHPExcel_Style_Border::BORDER_THICK;
- case 0x06: return PHPExcel_Style_Border::BORDER_DOUBLE;
- case 0x07: return PHPExcel_Style_Border::BORDER_HAIR;
- case 0x08: return PHPExcel_Style_Border::BORDER_MEDIUMDASHED;
- case 0x09: return PHPExcel_Style_Border::BORDER_DASHDOT;
- case 0x0A: return PHPExcel_Style_Border::BORDER_MEDIUMDASHDOT;
- case 0x0B: return PHPExcel_Style_Border::BORDER_DASHDOTDOT;
- case 0x0C: return PHPExcel_Style_Border::BORDER_MEDIUMDASHDOTDOT;
- case 0x0D: return PHPExcel_Style_Border::BORDER_SLANTDASHDOT;
- default: return PHPExcel_Style_Border::BORDER_NONE;
- }
- }
-
-
- /**
- * Get fill pattern from index
- * OpenOffice documentation: 2.5.12
- *
- * @param int $index
- * @return string
- */
- private static function _mapFillPattern($index)
- {
- switch ($index) {
- case 0x00: return PHPExcel_Style_Fill::FILL_NONE;
- case 0x01: return PHPExcel_Style_Fill::FILL_SOLID;
- case 0x02: return PHPExcel_Style_Fill::FILL_PATTERN_MEDIUMGRAY;
- case 0x03: return PHPExcel_Style_Fill::FILL_PATTERN_DARKGRAY;
- case 0x04: return PHPExcel_Style_Fill::FILL_PATTERN_LIGHTGRAY;
- case 0x05: return PHPExcel_Style_Fill::FILL_PATTERN_DARKHORIZONTAL;
- case 0x06: return PHPExcel_Style_Fill::FILL_PATTERN_DARKVERTICAL;
- case 0x07: return PHPExcel_Style_Fill::FILL_PATTERN_DARKDOWN;
- case 0x08: return PHPExcel_Style_Fill::FILL_PATTERN_DARKUP;
- case 0x09: return PHPExcel_Style_Fill::FILL_PATTERN_DARKGRID;
- case 0x0A: return PHPExcel_Style_Fill::FILL_PATTERN_DARKTRELLIS;
- case 0x0B: return PHPExcel_Style_Fill::FILL_PATTERN_LIGHTHORIZONTAL;
- case 0x0C: return PHPExcel_Style_Fill::FILL_PATTERN_LIGHTVERTICAL;
- case 0x0D: return PHPExcel_Style_Fill::FILL_PATTERN_LIGHTDOWN;
- case 0x0E: return PHPExcel_Style_Fill::FILL_PATTERN_LIGHTUP;
- case 0x0F: return PHPExcel_Style_Fill::FILL_PATTERN_LIGHTGRID;
- case 0x10: return PHPExcel_Style_Fill::FILL_PATTERN_LIGHTTRELLIS;
- case 0x11: return PHPExcel_Style_Fill::FILL_PATTERN_GRAY125;
- case 0x12: return PHPExcel_Style_Fill::FILL_PATTERN_GRAY0625;
- default: return PHPExcel_Style_Fill::FILL_NONE;
- }
- }
-
-
- /**
- * Map error code, e.g. '#N/A'
- *
- * @param int $subData
- * @return string
- */
- private static function _mapErrorCode($subData)
- {
- switch ($subData) {
- case 0x00: return '#NULL!'; break;
- case 0x07: return '#DIV/0!'; break;
- case 0x0F: return '#VALUE!'; break;
- case 0x17: return '#REF!'; break;
- case 0x1D: return '#NAME?'; break;
- case 0x24: return '#NUM!'; break;
- case 0x2A: return '#N/A'; break;
- default: return false;
- }
- }
-
-
- /**
- * Map built-in color to RGB value
- *
- * @param int $color Indexed color
- * @return array
- */
- private static function _mapBuiltInColor($color)
- {
- switch ($color) {
- case 0x00: return array('rgb' => '000000');
- case 0x01: return array('rgb' => 'FFFFFF');
- case 0x02: return array('rgb' => 'FF0000');
- case 0x03: return array('rgb' => '00FF00');
- case 0x04: return array('rgb' => '0000FF');
- case 0x05: return array('rgb' => 'FFFF00');
- case 0x06: return array('rgb' => 'FF00FF');
- case 0x07: return array('rgb' => '00FFFF');
- case 0x40: return array('rgb' => '000000'); // system window text color
- case 0x41: return array('rgb' => 'FFFFFF'); // system window background color
- default: return array('rgb' => '000000');
- }
- }
-
-
- /**
- * Map color array from BIFF5 built-in color index
- *
- * @param int $subData
- * @return array
- */
- private static function _mapColorBIFF5($subData)
- {
- switch ($subData) {
- case 0x08: return array('rgb' => '000000');
- case 0x09: return array('rgb' => 'FFFFFF');
- case 0x0A: return array('rgb' => 'FF0000');
- case 0x0B: return array('rgb' => '00FF00');
- case 0x0C: return array('rgb' => '0000FF');
- case 0x0D: return array('rgb' => 'FFFF00');
- case 0x0E: return array('rgb' => 'FF00FF');
- case 0x0F: return array('rgb' => '00FFFF');
- case 0x10: return array('rgb' => '800000');
- case 0x11: return array('rgb' => '008000');
- case 0x12: return array('rgb' => '000080');
- case 0x13: return array('rgb' => '808000');
- case 0x14: return array('rgb' => '800080');
- case 0x15: return array('rgb' => '008080');
- case 0x16: return array('rgb' => 'C0C0C0');
- case 0x17: return array('rgb' => '808080');
- case 0x18: return array('rgb' => '8080FF');
- case 0x19: return array('rgb' => '802060');
- case 0x1A: return array('rgb' => 'FFFFC0');
- case 0x1B: return array('rgb' => 'A0E0F0');
- case 0x1C: return array('rgb' => '600080');
- case 0x1D: return array('rgb' => 'FF8080');
- case 0x1E: return array('rgb' => '0080C0');
- case 0x1F: return array('rgb' => 'C0C0FF');
- case 0x20: return array('rgb' => '000080');
- case 0x21: return array('rgb' => 'FF00FF');
- case 0x22: return array('rgb' => 'FFFF00');
- case 0x23: return array('rgb' => '00FFFF');
- case 0x24: return array('rgb' => '800080');
- case 0x25: return array('rgb' => '800000');
- case 0x26: return array('rgb' => '008080');
- case 0x27: return array('rgb' => '0000FF');
- case 0x28: return array('rgb' => '00CFFF');
- case 0x29: return array('rgb' => '69FFFF');
- case 0x2A: return array('rgb' => 'E0FFE0');
- case 0x2B: return array('rgb' => 'FFFF80');
- case 0x2C: return array('rgb' => 'A6CAF0');
- case 0x2D: return array('rgb' => 'DD9CB3');
- case 0x2E: return array('rgb' => 'B38FEE');
- case 0x2F: return array('rgb' => 'E3E3E3');
- case 0x30: return array('rgb' => '2A6FF9');
- case 0x31: return array('rgb' => '3FB8CD');
- case 0x32: return array('rgb' => '488436');
- case 0x33: return array('rgb' => '958C41');
- case 0x34: return array('rgb' => '8E5E42');
- case 0x35: return array('rgb' => 'A0627A');
- case 0x36: return array('rgb' => '624FAC');
- case 0x37: return array('rgb' => '969696');
- case 0x38: return array('rgb' => '1D2FBE');
- case 0x39: return array('rgb' => '286676');
- case 0x3A: return array('rgb' => '004500');
- case 0x3B: return array('rgb' => '453E01');
- case 0x3C: return array('rgb' => '6A2813');
- case 0x3D: return array('rgb' => '85396A');
- case 0x3E: return array('rgb' => '4A3285');
- case 0x3F: return array('rgb' => '424242');
- default: return array('rgb' => '000000');
- }
- }
-
-
- /**
- * Map color array from BIFF8 built-in color index
- *
- * @param int $subData
- * @return array
- */
- private static function _mapColor($subData)
- {
- switch ($subData) {
- case 0x08: return array('rgb' => '000000');
- case 0x09: return array('rgb' => 'FFFFFF');
- case 0x0A: return array('rgb' => 'FF0000');
- case 0x0B: return array('rgb' => '00FF00');
- case 0x0C: return array('rgb' => '0000FF');
- case 0x0D: return array('rgb' => 'FFFF00');
- case 0x0E: return array('rgb' => 'FF00FF');
- case 0x0F: return array('rgb' => '00FFFF');
- case 0x10: return array('rgb' => '800000');
- case 0x11: return array('rgb' => '008000');
- case 0x12: return array('rgb' => '000080');
- case 0x13: return array('rgb' => '808000');
- case 0x14: return array('rgb' => '800080');
- case 0x15: return array('rgb' => '008080');
- case 0x16: return array('rgb' => 'C0C0C0');
- case 0x17: return array('rgb' => '808080');
- case 0x18: return array('rgb' => '9999FF');
- case 0x19: return array('rgb' => '993366');
- case 0x1A: return array('rgb' => 'FFFFCC');
- case 0x1B: return array('rgb' => 'CCFFFF');
- case 0x1C: return array('rgb' => '660066');
- case 0x1D: return array('rgb' => 'FF8080');
- case 0x1E: return array('rgb' => '0066CC');
- case 0x1F: return array('rgb' => 'CCCCFF');
- case 0x20: return array('rgb' => '000080');
- case 0x21: return array('rgb' => 'FF00FF');
- case 0x22: return array('rgb' => 'FFFF00');
- case 0x23: return array('rgb' => '00FFFF');
- case 0x24: return array('rgb' => '800080');
- case 0x25: return array('rgb' => '800000');
- case 0x26: return array('rgb' => '008080');
- case 0x27: return array('rgb' => '0000FF');
- case 0x28: return array('rgb' => '00CCFF');
- case 0x29: return array('rgb' => 'CCFFFF');
- case 0x2A: return array('rgb' => 'CCFFCC');
- case 0x2B: return array('rgb' => 'FFFF99');
- case 0x2C: return array('rgb' => '99CCFF');
- case 0x2D: return array('rgb' => 'FF99CC');
- case 0x2E: return array('rgb' => 'CC99FF');
- case 0x2F: return array('rgb' => 'FFCC99');
- case 0x30: return array('rgb' => '3366FF');
- case 0x31: return array('rgb' => '33CCCC');
- case 0x32: return array('rgb' => '99CC00');
- case 0x33: return array('rgb' => 'FFCC00');
- case 0x34: return array('rgb' => 'FF9900');
- case 0x35: return array('rgb' => 'FF6600');
- case 0x36: return array('rgb' => '666699');
- case 0x37: return array('rgb' => '969696');
- case 0x38: return array('rgb' => '003366');
- case 0x39: return array('rgb' => '339966');
- case 0x3A: return array('rgb' => '003300');
- case 0x3B: return array('rgb' => '333300');
- case 0x3C: return array('rgb' => '993300');
- case 0x3D: return array('rgb' => '993366');
- case 0x3E: return array('rgb' => '333399');
- case 0x3F: return array('rgb' => '333333');
- default: return array('rgb' => '000000');
- }
- }
-
-
- private function _parseRichText($is = '') {
- $value = new PHPExcel_RichText();
-
- $value->createText($is);
-
- return $value;
- }
-
-}
diff --git a/admin/survey/excel/PHPExcel/Reader/Excel5/Escher.php b/admin/survey/excel/PHPExcel/Reader/Excel5/Escher.php
deleted file mode 100644
index cd9b1cd..0000000
--- a/admin/survey/excel/PHPExcel/Reader/Excel5/Escher.php
+++ /dev/null
@@ -1,640 +0,0 @@
-<?php
-/**
- * PHPExcel
- *
- * Copyright (c) 2006 - 2012 PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel_Reader_Excel5
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-/**
- * PHPExcel_Reader_Excel5_Escher
- *
- * @category PHPExcel
- * @package PHPExcel_Reader_Excel5
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- */
-class PHPExcel_Reader_Excel5_Escher
-{
- const DGGCONTAINER = 0xF000;
- const BSTORECONTAINER = 0xF001;
- const DGCONTAINER = 0xF002;
- const SPGRCONTAINER = 0xF003;
- const SPCONTAINER = 0xF004;
- const DGG = 0xF006;
- const BSE = 0xF007;
- const DG = 0xF008;
- const SPGR = 0xF009;
- const SP = 0xF00A;
- const OPT = 0xF00B;
- const CLIENTTEXTBOX = 0xF00D;
- const CLIENTANCHOR = 0xF010;
- const CLIENTDATA = 0xF011;
- const BLIPJPEG = 0xF01D;
- const BLIPPNG = 0xF01E;
- const SPLITMENUCOLORS = 0xF11E;
- const TERTIARYOPT = 0xF122;
-
- /**
- * Escher stream data (binary)
- *
- * @var string
- */
- private $_data;
-
- /**
- * Size in bytes of the Escher stream data
- *
- * @var int
- */
- private $_dataSize;
-
- /**
- * Current position of stream pointer in Escher stream data
- *
- * @var int
- */
- private $_pos;
-
- /**
- * The object to be returned by the reader. Modified during load.
- *
- * @var mixed
- */
- private $_object;
-
- /**
- * Create a new PHPExcel_Reader_Excel5_Escher instance
- *
- * @param mixed $object
- */
- public function __construct($object)
- {
- $this->_object = $object;
- }
-
- /**
- * Load Escher stream data. May be a partial Escher stream.
- *
- * @param string $data
- */
- public function load($data)
- {
- $this->_data = $data;
-
- // total byte size of Excel data (workbook global substream + sheet substreams)
- $this->_dataSize = strlen($this->_data);
-
- $this->_pos = 0;
-
- // Parse Escher stream
- while ($this->_pos < $this->_dataSize) {
-
- // offset: 2; size: 2: Record Type
- $fbt = PHPExcel_Reader_Excel5::_GetInt2d($this->_data, $this->_pos + 2);
-
- switch ($fbt) {
- case self::DGGCONTAINER: $this->_readDggContainer(); break;
- case self::DGG: $this->_readDgg(); break;
- case self::BSTORECONTAINER: $this->_readBstoreContainer(); break;
- case self::BSE: $this->_readBSE(); break;
- case self::BLIPJPEG: $this->_readBlipJPEG(); break;
- case self::BLIPPNG: $this->_readBlipPNG(); break;
- case self::OPT: $this->_readOPT(); break;
- case self::TERTIARYOPT: $this->_readTertiaryOPT(); break;
- case self::SPLITMENUCOLORS: $this->_readSplitMenuColors(); break;
- case self::DGCONTAINER: $this->_readDgContainer(); break;
- case self::DG: $this->_readDg(); break;
- case self::SPGRCONTAINER: $this->_readSpgrContainer(); break;
- case self::SPCONTAINER: $this->_readSpContainer(); break;
- case self::SPGR: $this->_readSpgr(); break;
- case self::SP: $this->_readSp(); break;
- case self::CLIENTTEXTBOX: $this->_readClientTextbox(); break;
- case self::CLIENTANCHOR: $this->_readClientAnchor(); break;
- case self::CLIENTDATA: $this->_readClientData(); break;
- default: $this->_readDefault(); break;
- }
- }
-
- return $this->_object;
- }
-
- /**
- * Read a generic record
- */
- private function _readDefault()
- {
- // offset 0; size: 2; recVer and recInstance
- $verInstance = PHPExcel_Reader_Excel5::_GetInt2d($this->_data, $this->_pos);
-
- // offset: 2; size: 2: Record Type
- $fbt = PHPExcel_Reader_Excel5::_GetInt2d($this->_data, $this->_pos + 2);
-
- // bit: 0-3; mask: 0x000F; recVer
- $recVer = (0x000F & $verInstance) >> 0;
-
- $length = PHPExcel_Reader_Excel5::_GetInt4d($this->_data, $this->_pos + 4);
- $recordData = substr($this->_data, $this->_pos + 8, $length);
-
- // move stream pointer to next record
- $this->_pos += 8 + $length;
- }
-
- /**
- * Read DggContainer record (Drawing Group Container)
- */
- private function _readDggContainer()
- {
- $length = PHPExcel_Reader_Excel5::_GetInt4d($this->_data, $this->_pos + 4);
- $recordData = substr($this->_data, $this->_pos + 8, $length);
-
- // move stream pointer to next record
- $this->_pos += 8 + $length;
-
- // record is a container, read contents
- $dggContainer = new PHPExcel_Shared_Escher_DggContainer();
- $this->_object->setDggContainer($dggContainer);
- $reader = new PHPExcel_Reader_Excel5_Escher($dggContainer);
- $reader->load($recordData);
- }
-
- /**
- * Read Dgg record (Drawing Group)
- */
- private function _readDgg()
- {
- $length = PHPExcel_Reader_Excel5::_GetInt4d($this->_data, $this->_pos + 4);
- $recordData = substr($this->_data, $this->_pos + 8, $length);
-
- // move stream pointer to next record
- $this->_pos += 8 + $length;
- }
-
- /**
- * Read BstoreContainer record (Blip Store Container)
- */
- private function _readBstoreContainer()
- {
- $length = PHPExcel_Reader_Excel5::_GetInt4d($this->_data, $this->_pos + 4);
- $recordData = substr($this->_data, $this->_pos + 8, $length);
-
- // move stream pointer to next record
- $this->_pos += 8 + $length;
-
- // record is a container, read contents
- $bstoreContainer = new PHPExcel_Shared_Escher_DggContainer_BstoreContainer();
- $this->_object->setBstoreContainer($bstoreContainer);
- $reader = new PHPExcel_Reader_Excel5_Escher($bstoreContainer);
- $reader->load($recordData);
- }
-
- /**
- * Read BSE record
- */
- private function _readBSE()
- {
- // offset: 0; size: 2; recVer and recInstance
-
- // bit: 4-15; mask: 0xFFF0; recInstance
- $recInstance = (0xFFF0 & PHPExcel_Reader_Excel5::_GetInt2d($this->_data, $this->_pos)) >> 4;
-
- $length = PHPExcel_Reader_Excel5::_GetInt4d($this->_data, $this->_pos + 4);
- $recordData = substr($this->_data, $this->_pos + 8, $length);
-
- // move stream pointer to next record
- $this->_pos += 8 + $length;
-
- // add BSE to BstoreContainer
- $BSE = new PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE();
- $this->_object->addBSE($BSE);
-
- $BSE->setBLIPType($recInstance);
-
- // offset: 0; size: 1; btWin32 (MSOBLIPTYPE)
- $btWin32 = ord($recordData[0]);
-
- // offset: 1; size: 1; btWin32 (MSOBLIPTYPE)
- $btMacOS = ord($recordData[1]);
-
- // offset: 2; size: 16; MD4 digest
- $rgbUid = substr($recordData, 2, 16);
-
- // offset: 18; size: 2; tag
- $tag = PHPExcel_Reader_Excel5::_GetInt2d($recordData, 18);
-
- // offset: 20; size: 4; size of BLIP in bytes
- $size = PHPExcel_Reader_Excel5::_GetInt4d($recordData, 20);
-
- // offset: 24; size: 4; number of references to this BLIP
- $cRef = PHPExcel_Reader_Excel5::_GetInt4d($recordData, 24);
-
- // offset: 28; size: 4; MSOFO file offset
- $foDelay = PHPExcel_Reader_Excel5::_GetInt4d($recordData, 28);
-
- // offset: 32; size: 1; unused1
- $unused1 = ord($recordData{32});
-
- // offset: 33; size: 1; size of nameData in bytes (including null terminator)
- $cbName = ord($recordData{33});
-
- // offset: 34; size: 1; unused2
- $unused2 = ord($recordData{34});
-
- // offset: 35; size: 1; unused3
- $unused3 = ord($recordData{35});
-
- // offset: 36; size: $cbName; nameData
- $nameData = substr($recordData, 36, $cbName);
-
- // offset: 36 + $cbName, size: var; the BLIP data
- $blipData = substr($recordData, 36 + $cbName);
-
- // record is a container, read contents
- $reader = new PHPExcel_Reader_Excel5_Escher($BSE);
- $reader->load($blipData);
- }
-
- /**
- * Read BlipJPEG record. Holds raw JPEG image data
- */
- private function _readBlipJPEG()
- {
- // offset: 0; size: 2; recVer and recInstance
-
- // bit: 4-15; mask: 0xFFF0; recInstance
- $recInstance = (0xFFF0 & PHPExcel_Reader_Excel5::_GetInt2d($this->_data, $this->_pos)) >> 4;
-
- $length = PHPExcel_Reader_Excel5::_GetInt4d($this->_data, $this->_pos + 4);
- $recordData = substr($this->_data, $this->_pos + 8, $length);
-
- // move stream pointer to next record
- $this->_pos += 8 + $length;
-
- $pos = 0;
-
- // offset: 0; size: 16; rgbUid1 (MD4 digest of)
- $rgbUid1 = substr($recordData, 0, 16);
- $pos += 16;
-
- // offset: 16; size: 16; rgbUid2 (MD4 digest), only if $recInstance = 0x46B or 0x6E3
- if (in_array($recInstance, array(0x046B, 0x06E3))) {
- $rgbUid2 = substr($recordData, 16, 16);
- $pos += 16;
- }
-
- // offset: var; size: 1; tag
- $tag = ord($recordData{$pos});
- $pos += 1;
-
- // offset: var; size: var; the raw image data
- $data = substr($recordData, $pos);
-
- $blip = new PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE_Blip();
- $blip->setData($data);
-
- $this->_object->setBlip($blip);
- }
-
- /**
- * Read BlipPNG record. Holds raw PNG image data
- */
- private function _readBlipPNG()
- {
- // offset: 0; size: 2; recVer and recInstance
-
- // bit: 4-15; mask: 0xFFF0; recInstance
- $recInstance = (0xFFF0 & PHPExcel_Reader_Excel5::_GetInt2d($this->_data, $this->_pos)) >> 4;
-
- $length = PHPExcel_Reader_Excel5::_GetInt4d($this->_data, $this->_pos + 4);
- $recordData = substr($this->_data, $this->_pos + 8, $length);
-
- // move stream pointer to next record
- $this->_pos += 8 + $length;
-
- $pos = 0;
-
- // offset: 0; size: 16; rgbUid1 (MD4 digest of)
- $rgbUid1 = substr($recordData, 0, 16);
- $pos += 16;
-
- // offset: 16; size: 16; rgbUid2 (MD4 digest), only if $recInstance = 0x46B or 0x6E3
- if ($recInstance == 0x06E1) {
- $rgbUid2 = substr($recordData, 16, 16);
- $pos += 16;
- }
-
- // offset: var; size: 1; tag
- $tag = ord($recordData{$pos});
- $pos += 1;
-
- // offset: var; size: var; the raw image data
- $data = substr($recordData, $pos);
-
- $blip = new PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE_Blip();
- $blip->setData($data);
-
- $this->_object->setBlip($blip);
- }
-
- /**
- * Read OPT record. This record may occur within DggContainer record or SpContainer
- */
- private function _readOPT()
- {
- // offset: 0; size: 2; recVer and recInstance
-
- // bit: 4-15; mask: 0xFFF0; recInstance
- $recInstance = (0xFFF0 & PHPExcel_Reader_Excel5::_GetInt2d($this->_data, $this->_pos)) >> 4;
-
- $length = PHPExcel_Reader_Excel5::_GetInt4d($this->_data, $this->_pos + 4);
- $recordData = substr($this->_data, $this->_pos + 8, $length);
-
- // move stream pointer to next record
- $this->_pos += 8 + $length;
-
- $this->_readOfficeArtRGFOPTE($recordData, $recInstance);
- }
-
- /**
- * Read TertiaryOPT record
- */
- private function _readTertiaryOPT()
- {
- // offset: 0; size: 2; recVer and recInstance
-
- // bit: 4-15; mask: 0xFFF0; recInstance
- $recInstance = (0xFFF0 & PHPExcel_Reader_Excel5::_GetInt2d($this->_data, $this->_pos)) >> 4;
-
- $length = PHPExcel_Reader_Excel5::_GetInt4d($this->_data, $this->_pos + 4);
- $recordData = substr($this->_data, $this->_pos + 8, $length);
-
- // move stream pointer to next record
- $this->_pos += 8 + $length;
- }
-
- /**
- * Read SplitMenuColors record
- */
- private function _readSplitMenuColors()
- {
- $length = PHPExcel_Reader_Excel5::_GetInt4d($this->_data, $this->_pos + 4);
- $recordData = substr($this->_data, $this->_pos + 8, $length);
-
- // move stream pointer to next record
- $this->_pos += 8 + $length;
- }
-
- /**
- * Read DgContainer record (Drawing Container)
- */
- private function _readDgContainer()
- {
- $length = PHPExcel_Reader_Excel5::_GetInt4d($this->_data, $this->_pos + 4);
- $recordData = substr($this->_data, $this->_pos + 8, $length);
-
- // move stream pointer to next record
- $this->_pos += 8 + $length;
-
- // record is a container, read contents
- $dgContainer = new PHPExcel_Shared_Escher_DgContainer();
- $this->_object->setDgContainer($dgContainer);
- $reader = new PHPExcel_Reader_Excel5_Escher($dgContainer);
- $escher = $reader->load($recordData);
- }
-
- /**
- * Read Dg record (Drawing)
- */
- private function _readDg()
- {
- $length = PHPExcel_Reader_Excel5::_GetInt4d($this->_data, $this->_pos + 4);
- $recordData = substr($this->_data, $this->_pos + 8, $length);
-
- // move stream pointer to next record
- $this->_pos += 8 + $length;
- }
-
- /**
- * Read SpgrContainer record (Shape Group Container)
- */
- private function _readSpgrContainer()
- {
- // context is either context DgContainer or SpgrContainer
-
- $length = PHPExcel_Reader_Excel5::_GetInt4d($this->_data, $this->_pos + 4);
- $recordData = substr($this->_data, $this->_pos + 8, $length);
-
- // move stream pointer to next record
- $this->_pos += 8 + $length;
-
- // record is a container, read contents
- $spgrContainer = new PHPExcel_Shared_Escher_DgContainer_SpgrContainer();
-
- if ($this->_object instanceof PHPExcel_Shared_Escher_DgContainer) {
- // DgContainer
- $this->_object->setSpgrContainer($spgrContainer);
- } else {
- // SpgrContainer
- $this->_object->addChild($spgrContainer);
- }
-
- $reader = new PHPExcel_Reader_Excel5_Escher($spgrContainer);
- $escher = $reader->load($recordData);
- }
-
- /**
- * Read SpContainer record (Shape Container)
- */
- private function _readSpContainer()
- {
- $length = PHPExcel_Reader_Excel5::_GetInt4d($this->_data, $this->_pos + 4);
- $recordData = substr($this->_data, $this->_pos + 8, $length);
-
- // add spContainer to spgrContainer
- $spContainer = new PHPExcel_Shared_Escher_DgContainer_SpgrContainer_SpContainer();
- $this->_object->addChild($spContainer);
-
- // move stream pointer to next record
- $this->_pos += 8 + $length;
-
- // record is a container, read contents
- $reader = new PHPExcel_Reader_Excel5_Escher($spContainer);
- $escher = $reader->load($recordData);
- }
-
- /**
- * Read Spgr record (Shape Group)
- */
- private function _readSpgr()
- {
- $length = PHPExcel_Reader_Excel5::_GetInt4d($this->_data, $this->_pos + 4);
- $recordData = substr($this->_data, $this->_pos + 8, $length);
-
- // move stream pointer to next record
- $this->_pos += 8 + $length;
- }
-
- /**
- * Read Sp record (Shape)
- */
- private function _readSp()
- {
- // offset: 0; size: 2; recVer and recInstance
-
- // bit: 4-15; mask: 0xFFF0; recInstance
- $recInstance = (0xFFF0 & PHPExcel_Reader_Excel5::_GetInt2d($this->_data, $this->_pos)) >> 4;
-
- $length = PHPExcel_Reader_Excel5::_GetInt4d($this->_data, $this->_pos + 4);
- $recordData = substr($this->_data, $this->_pos + 8, $length);
-
- // move stream pointer to next record
- $this->_pos += 8 + $length;
- }
-
- /**
- * Read ClientTextbox record
- */
- private function _readClientTextbox()
- {
- // offset: 0; size: 2; recVer and recInstance
-
- // bit: 4-15; mask: 0xFFF0; recInstance
- $recInstance = (0xFFF0 & PHPExcel_Reader_Excel5::_GetInt2d($this->_data, $this->_pos)) >> 4;
-
- $length = PHPExcel_Reader_Excel5::_GetInt4d($this->_data, $this->_pos + 4);
- $recordData = substr($this->_data, $this->_pos + 8, $length);
-
- // move stream pointer to next record
- $this->_pos += 8 + $length;
- }
-
- /**
- * Read ClientAnchor record. This record holds information about where the shape is anchored in worksheet
- */
- private function _readClientAnchor()
- {
- $length = PHPExcel_Reader_Excel5::_GetInt4d($this->_data, $this->_pos + 4);
- $recordData = substr($this->_data, $this->_pos + 8, $length);
-
- // move stream pointer to next record
- $this->_pos += 8 + $length;
-
- // offset: 2; size: 2; upper-left corner column index (0-based)
- $c1 = PHPExcel_Reader_Excel5::_GetInt2d($recordData, 2);
-
- // offset: 4; size: 2; upper-left corner horizontal offset in 1/1024 of column width
- $startOffsetX = PHPExcel_Reader_Excel5::_GetInt2d($recordData, 4);
-
- // offset: 6; size: 2; upper-left corner row index (0-based)
- $r1 = PHPExcel_Reader_Excel5::_GetInt2d($recordData, 6);
-
- // offset: 8; size: 2; upper-left corner vertical offset in 1/256 of row height
- $startOffsetY = PHPExcel_Reader_Excel5::_GetInt2d($recordData, 8);
-
- // offset: 10; size: 2; bottom-right corner column index (0-based)
- $c2 = PHPExcel_Reader_Excel5::_GetInt2d($recordData, 10);
-
- // offset: 12; size: 2; bottom-right corner horizontal offset in 1/1024 of column width
- $endOffsetX = PHPExcel_Reader_Excel5::_GetInt2d($recordData, 12);
-
- // offset: 14; size: 2; bottom-right corner row index (0-based)
- $r2 = PHPExcel_Reader_Excel5::_GetInt2d($recordData, 14);
-
- // offset: 16; size: 2; bottom-right corner vertical offset in 1/256 of row height
- $endOffsetY = PHPExcel_Reader_Excel5::_GetInt2d($recordData, 16);
-
- // set the start coordinates
- $this->_object->setStartCoordinates(PHPExcel_Cell::stringFromColumnIndex($c1) . ($r1 + 1));
-
- // set the start offsetX
- $this->_object->setStartOffsetX($startOffsetX);
-
- // set the start offsetY
- $this->_object->setStartOffsetY($startOffsetY);
-
- // set the end coordinates
- $this->_object->setEndCoordinates(PHPExcel_Cell::stringFromColumnIndex($c2) . ($r2 + 1));
-
- // set the end offsetX
- $this->_object->setEndOffsetX($endOffsetX);
-
- // set the end offsetY
- $this->_object->setEndOffsetY($endOffsetY);
- }
-
- /**
- * Read ClientData record
- */
- private function _readClientData()
- {
- $length = PHPExcel_Reader_Excel5::_GetInt4d($this->_data, $this->_pos + 4);
- $recordData = substr($this->_data, $this->_pos + 8, $length);
-
- // move stream pointer to next record
- $this->_pos += 8 + $length;
- }
-
- /**
- * Read OfficeArtRGFOPTE table of property-value pairs
- *
- * @param string $data Binary data
- * @param int $n Number of properties
- */
- private function _readOfficeArtRGFOPTE($data, $n) {
-
- $splicedComplexData = substr($data, 6 * $n);
-
- // loop through property-value pairs
- for ($i = 0; $i < $n; ++$i) {
- // read 6 bytes at a time
- $fopte = substr($data, 6 * $i, 6);
-
- // offset: 0; size: 2; opid
- $opid = PHPExcel_Reader_Excel5::_GetInt2d($fopte, 0);
-
- // bit: 0-13; mask: 0x3FFF; opid.opid
- $opidOpid = (0x3FFF & $opid) >> 0;
-
- // bit: 14; mask 0x4000; 1 = value in op field is BLIP identifier
- $opidFBid = (0x4000 & $opid) >> 14;
-
- // bit: 15; mask 0x8000; 1 = this is a complex property, op field specifies size of complex data
- $opidFComplex = (0x8000 & $opid) >> 15;
-
- // offset: 2; size: 4; the value for this property
- $op = PHPExcel_Reader_Excel5::_GetInt4d($fopte, 2);
-
- if ($opidFComplex) {
- $complexData = substr($splicedComplexData, 0, $op);
- $splicedComplexData = substr($splicedComplexData, $op);
-
- // we store string value with complex data
- $value = $complexData;
- } else {
- // we store integer value
- $value = $op;
- }
-
- $this->_object->setOPT($opidOpid, $value);
- }
- }
-
-}
diff --git a/admin/survey/excel/PHPExcel/Reader/Gnumeric.php b/admin/survey/excel/PHPExcel/Reader/Gnumeric.php
deleted file mode 100644
index 031321c..0000000
--- a/admin/survey/excel/PHPExcel/Reader/Gnumeric.php
+++ /dev/null
@@ -1,982 +0,0 @@
-<?php
-/**
- * PHPExcel
- *
- * Copyright (c) 2006 - 2012 PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel_Reader
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-
-/** PHPExcel root directory */
-if (!defined('PHPEXCEL_ROOT')) {
- /**
- * @ignore
- */
- define('PHPEXCEL_ROOT', dirname(__FILE__) . '/../../');
- require(PHPEXCEL_ROOT . 'PHPExcel/Autoloader.php');
-}
-
-/**
- * PHPExcel_Reader_Gnumeric
- *
- * @category PHPExcel
- * @package PHPExcel_Reader
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- */
-class PHPExcel_Reader_Gnumeric implements PHPExcel_Reader_IReader
-{
- /**
- * Read data only?
- * Identifies whether the Reader should only read data values for cells, and ignore any formatting information;
- * or whether it should read both data and formatting
- *
- * @var boolean
- */
- private $_readDataOnly = false;
-
- /**
- * Restrict which sheets should be loaded?
- * This property holds an array of worksheet names to be loaded. If null, then all worksheets will be loaded.
- *
- * @var array of string
- */
- private $_loadSheetsOnly = null;
-
- /**
- * Formats
- *
- * @var array
- */
- private $_styles = array();
-
- /**
- * Shared Expressions
- *
- * @var array
- */
- private $_expressions = array();
-
- private $_referenceHelper = null;
-
- /**
- * PHPExcel_Reader_IReadFilter instance
- *
- * @var PHPExcel_Reader_IReadFilter
- */
- private $_readFilter = null;
-
-
- /**
- * Create a new PHPExcel_Reader_Gnumeric
- */
- public function __construct() {
- $this->_readFilter = new PHPExcel_Reader_DefaultReadFilter();
- $this->_referenceHelper = PHPExcel_ReferenceHelper::getInstance();
- }
-
-
- /**
- * Read data only?
- * If this is true, then the Reader will only read data values for cells, it will not read any formatting information.
- * If false (the default) it will read data and formatting.
- *
- * @return boolean
- */
- public function getReadDataOnly() {
- return $this->_readDataOnly;
- }
-
-
- /**
- * Set read data only
- * Set to true, to advise the Reader only to read data values for cells, and to ignore any formatting information.
- * Set to false (the default) to advise the Reader to read both data and formatting for cells.
- *
- * @param boolean $pValue
- *
- * @return PHPExcel_Reader_Gnumeric
- */
- public function setReadDataOnly($pValue = false) {
- $this->_readDataOnly = $pValue;
- return $this;
- }
-
-
- /**
- * Get which sheets to load
- * Returns either an array of worksheet names (the list of worksheets that should be loaded), or a null
- * indicating that all worksheets in the workbook should be loaded.
- *
- * @return mixed
- */
- public function getLoadSheetsOnly()
- {
- return $this->_loadSheetsOnly;
- }
-
-
- /**
- * Set which sheets to load
- *
- * @param mixed $value
- * This should be either an array of worksheet names to be loaded, or a string containing a single worksheet name.
- * If NULL, then it tells the Reader to read all worksheets in the workbook
- *
- * @return PHPExcel_Reader_Gnumeric
- */
- public function setLoadSheetsOnly($value = null)
- {
- $this->_loadSheetsOnly = is_array($value) ?
- $value : array($value);
- return $this;
- }
-
-
- /**
- * Set all sheets to load
- * Tells the Reader to load all worksheets from the workbook.
- *
- * @return PHPExcel_Reader_Gnumeric
- */
- public function setLoadAllSheets()
- {
- $this->_loadSheetsOnly = null;
- return $this;
- }
-
-
- /**
- * Read filter
- *
- * @return PHPExcel_Reader_IReadFilter
- */
- public function getReadFilter() {
- return $this->_readFilter;
- }
-
-
- /**
- * Set read filter
- *
- * @param PHPExcel_Reader_IReadFilter $pValue
- * @return PHPExcel_Reader_Gnumeric
- */
- public function setReadFilter(PHPExcel_Reader_IReadFilter $pValue) {
- $this->_readFilter = $pValue;
- return $this;
- }
-
-
- /**
- * Can the current PHPExcel_Reader_IReader read the file?
- *
- * @param string $pFileName
- * @return boolean
- * @throws Exception
- */
- public function canRead($pFilename)
- {
- // Check if file exists
- if (!file_exists($pFilename)) {
- throw new Exception("Could not open " . $pFilename . " for reading! File does not exist.");
- }
-
- // Check if gzlib functions are available
- if (!function_exists('gzread')) {
- throw new Exception("gzlib library is not enabled");
- }
-
- // Read signature data (first 3 bytes)
- $fh = fopen($pFilename, 'r');
- $data = fread($fh, 2);
- fclose($fh);
-
- if ($data != chr(0x1F).chr(0x8B)) {
- return false;
- }
-
- return true;
- }
-
-
- /**
- * Return worksheet info (Name, Last Column Letter, Last Column Index, Total Rows, Total Columns)
- *
- * @param string $pFilename
- * @throws Exception
- */
- public function listWorksheetInfo($pFilename)
- {
- // Check if file exists
- if (!file_exists($pFilename)) {
- throw new Exception("Could not open " . $pFilename . " for reading! File does not exist.");
- }
-
- $gFileData = $this->_gzfileGetContents($pFilename);
-
- $xml = simplexml_load_string($gFileData);
- $namespacesMeta = $xml->getNamespaces(true);
-
- $gnmXML = $xml->children($namespacesMeta['gnm']);
-
- $worksheetInfo = array();
-
- foreach ($gnmXML->Sheets->Sheet as $sheet) {
- $tmpInfo = array();
- $tmpInfo['worksheetName'] = (string) $sheet->Name;
- $tmpInfo['lastColumnLetter'] = 'A';
- $tmpInfo['lastColumnIndex'] = 0;
- $tmpInfo['totalRows'] = 0;
- $tmpInfo['totalColumns'] = 0;
-
- foreach ($sheet->Cells->Cell as $cell) {
- $cellAttributes = $cell->attributes();
-
- $rowIndex = (int) $cellAttributes->Row + 1;
- $columnIndex = (int) $cellAttributes->Col;
-
- $tmpInfo['totalRows'] = max($tmpInfo['totalRows'], $rowIndex);
- $tmpInfo['lastColumnIndex'] = max($tmpInfo['lastColumnIndex'], $columnIndex);
- }
-
- $tmpInfo['lastColumnLetter'] = PHPExcel_Cell::stringFromColumnIndex($tmpInfo['lastColumnIndex']);
- $tmpInfo['totalColumns'] = $tmpInfo['lastColumnIndex'] + 1;
-
- $worksheetInfo[] = $tmpInfo;
- }
-
- return $worksheetInfo;
- }
-
-
- private function _gzfileGetContents($filename) {
- $file = @gzopen($filename, 'rb');
- if ($file !== false) {
- $data = '';
- while (!gzeof($file)) {
- $data .= gzread($file, 1024);
- }
- gzclose($file);
- }
- return $data;
- }
-
-
- /**
- * Loads PHPExcel from file
- *
- * @param string $pFilename
- * @return PHPExcel
- * @throws Exception
- */
- public function load($pFilename)
- {
- // Create new PHPExcel
- $objPHPExcel = new PHPExcel();
-
- // Load into this instance
- return $this->loadIntoExisting($pFilename, $objPHPExcel);
- }
-
-
- /**
- * Reads names of the worksheets from a file, without parsing the whole file to a PHPExcel object
- *
- * @param string $pFilename
- * @throws Exception
- */
- public function listWorksheetNames($pFilename)
- {
- // Check if file exists
- if (!file_exists($pFilename)) {
- throw new Exception("Could not open " . $pFilename . " for reading! File does not exist.");
- }
-
- $gFileData = $this->_gzfileGetContents($pFilename);
-
- $xml = simplexml_load_string($gFileData);
- $namespacesMeta = $xml->getNamespaces(true);
-
- $gnmXML = $xml->children($namespacesMeta['gnm']);
-
- $worksheetNames = array();
-
- foreach($gnmXML->Sheets->Sheet as $sheet) {
- $worksheetNames[] = (string) $sheet->Name;
- }
-
- return $worksheetNames;
- }
-
-
- /**
- * Loads PHPExcel from file into PHPExcel instance
- *
- * @param string $pFilename
- * @param PHPExcel $objPHPExcel
- * @return PHPExcel
- * @throws Exception
- */
- public function loadIntoExisting($pFilename, PHPExcel $objPHPExcel)
- {
- // Check if file exists
- if (!file_exists($pFilename)) {
- throw new Exception("Could not open " . $pFilename . " for reading! File does not exist.");
- }
-
- $timezoneObj = new DateTimeZone('Europe/London');
- $GMT = new DateTimeZone('UTC');
-
- $gFileData = $this->_gzfileGetContents($pFilename);
-
-// echo '<pre>';
-// echo htmlentities($gFileData,ENT_QUOTES,'UTF-8');
-// echo '</pre><hr />';
-//
- $xml = simplexml_load_string($gFileData);
- $namespacesMeta = $xml->getNamespaces(true);
-
-// var_dump($namespacesMeta);
-//
- $gnmXML = $xml->children($namespacesMeta['gnm']);
-
- $docProps = $objPHPExcel->getProperties();
- // Document Properties are held differently, depending on the version of Gnumeric
- if (isset($namespacesMeta['office'])) {
- $officeXML = $xml->children($namespacesMeta['office']);
- $officeDocXML = $officeXML->{'document-meta'};
- $officeDocMetaXML = $officeDocXML->meta;
-
- foreach($officeDocMetaXML as $officePropertyData) {
-
- $officePropertyDC = array();
- if (isset($namespacesMeta['dc'])) {
- $officePropertyDC = $officePropertyData->children($namespacesMeta['dc']);
- }
- foreach($officePropertyDC as $propertyName => $propertyValue) {
- $propertyValue = (string) $propertyValue;
- switch ($propertyName) {
- case 'title' :
- $docProps->setTitle(trim($propertyValue));
- break;
- case 'subject' :
- $docProps->setSubject(trim($propertyValue));
- break;
- case 'creator' :
- $docProps->setCreator(trim($propertyValue));
- $docProps->setLastModifiedBy(trim($propertyValue));
- break;
- case 'date' :
- $creationDate = strtotime(trim($propertyValue));
- $docProps->setCreated($creationDate);
- $docProps->setModified($creationDate);
- break;
- case 'description' :
- $docProps->setDescription(trim($propertyValue));
- break;
- }
- }
- $officePropertyMeta = array();
- if (isset($namespacesMeta['meta'])) {
- $officePropertyMeta = $officePropertyData->children($namespacesMeta['meta']);
- }
- foreach($officePropertyMeta as $propertyName => $propertyValue) {
- $attributes = $propertyValue->attributes($namespacesMeta['meta']);
- $propertyValue = (string) $propertyValue;
- switch ($propertyName) {
- case 'keyword' :
- $docProps->setKeywords(trim($propertyValue));
- break;
- case 'initial-creator' :
- $docProps->setCreator(trim($propertyValue));
- $docProps->setLastModifiedBy(trim($propertyValue));
- break;
- case 'creation-date' :
- $creationDate = strtotime(trim($propertyValue));
- $docProps->setCreated($creationDate);
- $docProps->setModified($creationDate);
- break;
- case 'user-defined' :
- list(,$attrName) = explode(':',$attributes['name']);
- switch ($attrName) {
- case 'publisher' :
- $docProps->setCompany(trim($propertyValue));
- break;
- case 'category' :
- $docProps->setCategory(trim($propertyValue));
- break;
- case 'manager' :
- $docProps->setManager(trim($propertyValue));
- break;
- }
- break;
- }
- }
- }
- } elseif (isset($gnmXML->Summary)) {
- foreach($gnmXML->Summary->Item as $summaryItem) {
- $propertyName = $summaryItem->name;
- $propertyValue = $summaryItem->{'val-string'};
- switch ($propertyName) {
- case 'title' :
- $docProps->setTitle(trim($propertyValue));
- break;
- case 'comments' :
- $docProps->setDescription(trim($propertyValue));
- break;
- case 'keywords' :
- $docProps->setKeywords(trim($propertyValue));
- break;
- case 'category' :
- $docProps->setCategory(trim($propertyValue));
- break;
- case 'manager' :
- $docProps->setManager(trim($propertyValue));
- break;
- case 'author' :
- $docProps->setCreator(trim($propertyValue));
- $docProps->setLastModifiedBy(trim($propertyValue));
- break;
- case 'company' :
- $docProps->setCompany(trim($propertyValue));
- break;
- }
- }
- }
-
- $worksheetID = 0;
- foreach($gnmXML->Sheets->Sheet as $sheet) {
- $worksheetName = (string) $sheet->Name;
-// echo '<b>Worksheet: ',$worksheetName,'</b><br />';
- if ((isset($this->_loadSheetsOnly)) && (!in_array($worksheetName, $this->_loadSheetsOnly))) {
- continue;
- }
-
- $maxRow = $maxCol = 0;
-
- // Create new Worksheet
- $objPHPExcel->createSheet();
- $objPHPExcel->setActiveSheetIndex($worksheetID);
- // Use false for $updateFormulaCellReferences to prevent adjustment of worksheet references in formula
- // cells... during the load, all formulae should be correct, and we're simply bringing the worksheet
- // name in line with the formula, not the reverse
- $objPHPExcel->getActiveSheet()->setTitle($worksheetName,false);
-
- if ((!$this->_readDataOnly) && (isset($sheet->PrintInformation))) {
- if (isset($sheet->PrintInformation->Margins)) {
- foreach($sheet->PrintInformation->Margins->children('gnm',TRUE) as $key => $margin) {
- $marginAttributes = $margin->attributes();
- $marginSize = 72 / 100; // Default
- switch($marginAttributes['PrefUnit']) {
- case 'mm' :
- $marginSize = intval($marginAttributes['Points']) / 100;
- break;
- }
- switch($key) {
- case 'top' :
- $objPHPExcel->getActiveSheet()->getPageMargins()->setTop($marginSize);
- break;
- case 'bottom' :
- $objPHPExcel->getActiveSheet()->getPageMargins()->setBottom($marginSize);
- break;
- case 'left' :
- $objPHPExcel->getActiveSheet()->getPageMargins()->setLeft($marginSize);
- break;
- case 'right' :
- $objPHPExcel->getActiveSheet()->getPageMargins()->setRight($marginSize);
- break;
- case 'header' :
- $objPHPExcel->getActiveSheet()->getPageMargins()->setHeader($marginSize);
- break;
- case 'footer' :
- $objPHPExcel->getActiveSheet()->getPageMargins()->setFooter($marginSize);
- break;
- }
- }
- }
- }
-
- foreach($sheet->Cells->Cell as $cell) {
- $cellAttributes = $cell->attributes();
- $row = (int) $cellAttributes->Row + 1;
- $column = (int) $cellAttributes->Col;
-
- if ($row > $maxRow) $maxRow = $row;
- if ($column > $maxCol) $maxCol = $column;
-
- $column = PHPExcel_Cell::stringFromColumnIndex($column);
-
- // Read cell?
- if ($this->getReadFilter() !== NULL) {
- if (!$this->getReadFilter()->readCell($column, $row, $worksheetName)) {
- continue;
- }
- }
-
- $ValueType = $cellAttributes->ValueType;
- $ExprID = (string) $cellAttributes->ExprID;
-// echo 'Cell ',$column,$row,'<br />';
-// echo 'Type is ',$ValueType,'<br />';
-// echo 'Value is ',$cell,'<br />';
- $type = PHPExcel_Cell_DataType::TYPE_FORMULA;
- if ($ExprID > '') {
- if (((string) $cell) > '') {
-
- $this->_expressions[$ExprID] = array( 'column' => $cellAttributes->Col,
- 'row' => $cellAttributes->Row,
- 'formula' => (string) $cell
- );
-// echo 'NEW EXPRESSION ',$ExprID,'<br />';
- } else {
- $expression = $this->_expressions[$ExprID];
-
- $cell = $this->_referenceHelper->updateFormulaReferences( $expression['formula'],
- 'A1',
- $cellAttributes->Col - $expression['column'],
- $cellAttributes->Row - $expression['row'],
- $worksheetName
- );
-// echo 'SHARED EXPRESSION ',$ExprID,'<br />';
-// echo 'New Value is ',$cell,'<br />';
- }
- $type = PHPExcel_Cell_DataType::TYPE_FORMULA;
- } else {
- switch($ValueType) {
- case '10' : // NULL
- $type = PHPExcel_Cell_DataType::TYPE_NULL;
- break;
- case '20' : // Boolean
- $type = PHPExcel_Cell_DataType::TYPE_BOOL;
- $cell = ($cell == 'TRUE') ? True : False;
- break;
- case '30' : // Integer
- $cell = intval($cell);
- case '40' : // Float
- $type = PHPExcel_Cell_DataType::TYPE_NUMERIC;
- break;
- case '50' : // Error
- $type = PHPExcel_Cell_DataType::TYPE_ERROR;
- break;
- case '60' : // String
- $type = PHPExcel_Cell_DataType::TYPE_STRING;
- break;
- case '70' : // Cell Range
- case '80' : // Array
- }
- }
- $objPHPExcel->getActiveSheet()->getCell($column.$row)->setValueExplicit($cell,$type);
- }
-
- if ((!$this->_readDataOnly) && (isset($sheet->Objects))) {
- foreach($sheet->Objects->children('gnm',TRUE) as $key => $comment) {
- $commentAttributes = $comment->attributes();
- // Only comment objects are handled at the moment
- if ($commentAttributes->Text) {
- $objPHPExcel->getActiveSheet()->getComment( (string)$commentAttributes->ObjectBound )
- ->setAuthor( (string)$commentAttributes->Author )
- ->setText($this->_parseRichText((string)$commentAttributes->Text) );
- }
- }
- }
-// echo '$maxCol=',$maxCol,'; $maxRow=',$maxRow,'<br />';
-//
- foreach($sheet->Styles->StyleRegion as $styleRegion) {
- $styleAttributes = $styleRegion->attributes();
- if (($styleAttributes['startRow'] <= $maxRow) &&
- ($styleAttributes['startCol'] <= $maxCol)) {
-
- $startColumn = PHPExcel_Cell::stringFromColumnIndex((int) $styleAttributes['startCol']);
- $startRow = $styleAttributes['startRow'] + 1;
-
- $endColumn = ($styleAttributes['endCol'] > $maxCol) ? $maxCol : (int) $styleAttributes['endCol'];
- $endColumn = PHPExcel_Cell::stringFromColumnIndex($endColumn);
- $endRow = ($styleAttributes['endRow'] > $maxRow) ? $maxRow : $styleAttributes['endRow'];
- $endRow += 1;
- $cellRange = $startColumn.$startRow.':'.$endColumn.$endRow;
-// echo $cellRange,'<br />';
-
- $styleAttributes = $styleRegion->Style->attributes();
-// var_dump($styleAttributes);
-// echo '<br />';
-
- // We still set the number format mask for date/time values, even if _readDataOnly is true
- if ((!$this->_readDataOnly) ||
- (PHPExcel_Shared_Date::isDateTimeFormatCode($styleArray['numberformat']['code']))) {
- $styleArray = array();
- $styleArray['numberformat']['code'] = (string) $styleAttributes['Format'];
- // If _readDataOnly is false, we set all formatting information
- if (!$this->_readDataOnly) {
- switch($styleAttributes['HAlign']) {
- case '1' :
- $styleArray['alignment']['horizontal'] = PHPExcel_Style_Alignment::HORIZONTAL_GENERAL;
- break;
- case '2' :
- $styleArray['alignment']['horizontal'] = PHPExcel_Style_Alignment::HORIZONTAL_LEFT;
- break;
- case '4' :
- $styleArray['alignment']['horizontal'] = PHPExcel_Style_Alignment::HORIZONTAL_RIGHT;
- break;
- case '8' :
- $styleArray['alignment']['horizontal'] = PHPExcel_Style_Alignment::HORIZONTAL_CENTER;
- break;
- case '16' :
- case '64' :
- $styleArray['alignment']['horizontal'] = PHPExcel_Style_Alignment::HORIZONTAL_CENTER_CONTINUOUS;
- break;
- case '32' :
- $styleArray['alignment']['horizontal'] = PHPExcel_Style_Alignment::HORIZONTAL_JUSTIFY;
- break;
- }
-
- switch($styleAttributes['VAlign']) {
- case '1' :
- $styleArray['alignment']['vertical'] = PHPExcel_Style_Alignment::VERTICAL_TOP;
- break;
- case '2' :
- $styleArray['alignment']['vertical'] = PHPExcel_Style_Alignment::VERTICAL_BOTTOM;
- break;
- case '4' :
- $styleArray['alignment']['vertical'] = PHPExcel_Style_Alignment::VERTICAL_CENTER;
- break;
- case '8' :
- $styleArray['alignment']['vertical'] = PHPExcel_Style_Alignment::VERTICAL_JUSTIFY;
- break;
- }
-
- $styleArray['alignment']['wrap'] = ($styleAttributes['WrapText'] == '1') ? True : False;
- $styleArray['alignment']['shrinkToFit'] = ($styleAttributes['ShrinkToFit'] == '1') ? True : False;
- $styleArray['alignment']['indent'] = (intval($styleAttributes["Indent"]) > 0) ? $styleAttributes["indent"] : 0;
-
- $RGB = self::_parseGnumericColour($styleAttributes["Fore"]);
- $styleArray['font']['color']['rgb'] = $RGB;
- $RGB = self::_parseGnumericColour($styleAttributes["Back"]);
- $shade = $styleAttributes["Shade"];
- if (($RGB != '000000') || ($shade != '0')) {
- $styleArray['fill']['color']['rgb'] = $styleArray['fill']['startcolor']['rgb'] = $RGB;
- $RGB2 = self::_parseGnumericColour($styleAttributes["PatternColor"]);
- $styleArray['fill']['endcolor']['rgb'] = $RGB2;
- switch($shade) {
- case '1' :
- $styleArray['fill']['type'] = PHPExcel_Style_Fill::FILL_SOLID;
- break;
- case '2' :
- $styleArray['fill']['type'] = PHPExcel_Style_Fill::FILL_GRADIENT_LINEAR;
- break;
- case '3' :
- $styleArray['fill']['type'] = PHPExcel_Style_Fill::FILL_GRADIENT_PATH;
- break;
- case '4' :
- $styleArray['fill']['type'] = PHPExcel_Style_Fill::FILL_PATTERN_DARKDOWN;
- break;
- case '5' :
- $styleArray['fill']['type'] = PHPExcel_Style_Fill::FILL_PATTERN_DARKGRAY;
- break;
- case '6' :
- $styleArray['fill']['type'] = PHPExcel_Style_Fill::FILL_PATTERN_DARKGRID;
- break;
- case '7' :
- $styleArray['fill']['type'] = PHPExcel_Style_Fill::FILL_PATTERN_DARKHORIZONTAL;
- break;
- case '8' :
- $styleArray['fill']['type'] = PHPExcel_Style_Fill::FILL_PATTERN_DARKTRELLIS;
- break;
- case '9' :
- $styleArray['fill']['type'] = PHPExcel_Style_Fill::FILL_PATTERN_DARKUP;
- break;
- case '10' :
- $styleArray['fill']['type'] = PHPExcel_Style_Fill::FILL_PATTERN_DARKVERTICAL;
- break;
- case '11' :
- $styleArray['fill']['type'] = PHPExcel_Style_Fill::FILL_PATTERN_GRAY0625;
- break;
- case '12' :
- $styleArray['fill']['type'] = PHPExcel_Style_Fill::FILL_PATTERN_GRAY125;
- break;
- case '13' :
- $styleArray['fill']['type'] = PHPExcel_Style_Fill::FILL_PATTERN_LIGHTDOWN;
- break;
- case '14' :
- $styleArray['fill']['type'] = PHPExcel_Style_Fill::FILL_PATTERN_LIGHTGRAY;
- break;
- case '15' :
- $styleArray['fill']['type'] = PHPExcel_Style_Fill::FILL_PATTERN_LIGHTGRID;
- break;
- case '16' :
- $styleArray['fill']['type'] = PHPExcel_Style_Fill::FILL_PATTERN_LIGHTHORIZONTAL;
- break;
- case '17' :
- $styleArray['fill']['type'] = PHPExcel_Style_Fill::FILL_PATTERN_LIGHTTRELLIS;
- break;
- case '18' :
- $styleArray['fill']['type'] = PHPExcel_Style_Fill::FILL_PATTERN_LIGHTUP;
- break;
- case '19' :
- $styleArray['fill']['type'] = PHPExcel_Style_Fill::FILL_PATTERN_LIGHTVERTICAL;
- break;
- case '20' :
- $styleArray['fill']['type'] = PHPExcel_Style_Fill::FILL_PATTERN_MEDIUMGRAY;
- break;
- }
- }
-
- $fontAttributes = $styleRegion->Style->Font->attributes();
-// var_dump($fontAttributes);
-// echo '<br />';
- $styleArray['font']['name'] = (string) $styleRegion->Style->Font;
- $styleArray['font']['size'] = intval($fontAttributes['Unit']);
- $styleArray['font']['bold'] = ($fontAttributes['Bold'] == '1') ? True : False;
- $styleArray['font']['italic'] = ($fontAttributes['Italic'] == '1') ? True : False;
- $styleArray['font']['strike'] = ($fontAttributes['StrikeThrough'] == '1') ? True : False;
- switch($fontAttributes['Underline']) {
- case '1' :
- $styleArray['font']['underline'] = PHPExcel_Style_Font::UNDERLINE_SINGLE;
- break;
- case '2' :
- $styleArray['font']['underline'] = PHPExcel_Style_Font::UNDERLINE_DOUBLE;
- break;
- case '3' :
- $styleArray['font']['underline'] = PHPExcel_Style_Font::UNDERLINE_SINGLEACCOUNTING;
- break;
- case '4' :
- $styleArray['font']['underline'] = PHPExcel_Style_Font::UNDERLINE_DOUBLEACCOUNTING;
- break;
- default :
- $styleArray['font']['underline'] = PHPExcel_Style_Font::UNDERLINE_NONE;
- break;
- }
- switch($fontAttributes['Script']) {
- case '1' :
- $styleArray['font']['superScript'] = True;
- break;
- case '-1' :
- $styleArray['font']['subScript'] = True;
- break;
- }
-
- if (isset($styleRegion->Style->StyleBorder)) {
- if (isset($styleRegion->Style->StyleBorder->Top)) {
- $styleArray['borders']['top'] = self::_parseBorderAttributes($styleRegion->Style->StyleBorder->Top->attributes());
- }
- if (isset($styleRegion->Style->StyleBorder->Bottom)) {
- $styleArray['borders']['bottom'] = self::_parseBorderAttributes($styleRegion->Style->StyleBorder->Bottom->attributes());
- }
- if (isset($styleRegion->Style->StyleBorder->Left)) {
- $styleArray['borders']['left'] = self::_parseBorderAttributes($styleRegion->Style->StyleBorder->Left->attributes());
- }
- if (isset($styleRegion->Style->StyleBorder->Right)) {
- $styleArray['borders']['right'] = self::_parseBorderAttributes($styleRegion->Style->StyleBorder->Right->attributes());
- }
- if ((isset($styleRegion->Style->StyleBorder->Diagonal)) && (isset($styleRegion->Style->StyleBorder->{'Rev-Diagonal'}))) {
- $styleArray['borders']['diagonal'] = self::_parseBorderAttributes($styleRegion->Style->StyleBorder->Diagonal->attributes());
- $styleArray['borders']['diagonaldirection'] = PHPExcel_Style_Borders::DIAGONAL_BOTH;
- } elseif (isset($styleRegion->Style->StyleBorder->Diagonal)) {
- $styleArray['borders']['diagonal'] = self::_parseBorderAttributes($styleRegion->Style->StyleBorder->Diagonal->attributes());
- $styleArray['borders']['diagonaldirection'] = PHPExcel_Style_Borders::DIAGONAL_UP;
- } elseif (isset($styleRegion->Style->StyleBorder->{'Rev-Diagonal'})) {
- $styleArray['borders']['diagonal'] = self::_parseBorderAttributes($styleRegion->Style->StyleBorder->{'Rev-Diagonal'}->attributes());
- $styleArray['borders']['diagonaldirection'] = PHPExcel_Style_Borders::DIAGONAL_DOWN;
- }
- }
- if (isset($styleRegion->Style->HyperLink)) {
- // TO DO
- $hyperlink = $styleRegion->Style->HyperLink->attributes();
- }
- }
-// var_dump($styleArray);
-// echo '<br />';
- $objPHPExcel->getActiveSheet()->getStyle($cellRange)->applyFromArray($styleArray);
- }
- }
- }
-
- if ((!$this->_readDataOnly) && (isset($sheet->Cols))) {
- // Column Widths
- $columnAttributes = $sheet->Cols->attributes();
- $defaultWidth = $columnAttributes['DefaultSizePts'] / 5.4;
- $c = 0;
- foreach($sheet->Cols->ColInfo as $columnOverride) {
- $columnAttributes = $columnOverride->attributes();
- $column = $columnAttributes['No'];
- $columnWidth = $columnAttributes['Unit'] / 5.4;
- $hidden = ((isset($columnAttributes['Hidden'])) && ($columnAttributes['Hidden'] == '1')) ? true : false;
- $columnCount = (isset($columnAttributes['Count'])) ? $columnAttributes['Count'] : 1;
- while ($c < $column) {
- $objPHPExcel->getActiveSheet()->getColumnDimension(PHPExcel_Cell::stringFromColumnIndex($c))->setWidth($defaultWidth);
- ++$c;
- }
- while (($c < ($column+$columnCount)) && ($c <= $maxCol)) {
- $objPHPExcel->getActiveSheet()->getColumnDimension(PHPExcel_Cell::stringFromColumnIndex($c))->setWidth($columnWidth);
- if ($hidden) {
- $objPHPExcel->getActiveSheet()->getColumnDimension(PHPExcel_Cell::stringFromColumnIndex($c))->setVisible(false);
- }
- ++$c;
- }
- }
- while ($c <= $maxCol) {
- $objPHPExcel->getActiveSheet()->getColumnDimension(PHPExcel_Cell::stringFromColumnIndex($c))->setWidth($defaultWidth);
- ++$c;
- }
- }
-
- if ((!$this->_readDataOnly) && (isset($sheet->Rows))) {
- // Row Heights
- $rowAttributes = $sheet->Rows->attributes();
- $defaultHeight = $rowAttributes['DefaultSizePts'];
- $r = 0;
-
- foreach($sheet->Rows->RowInfo as $rowOverride) {
- $rowAttributes = $rowOverride->attributes();
- $row = $rowAttributes['No'];
- $rowHeight = $rowAttributes['Unit'];
- $hidden = ((isset($rowAttributes['Hidden'])) && ($rowAttributes['Hidden'] == '1')) ? true : false;
- $rowCount = (isset($rowAttributes['Count'])) ? $rowAttributes['Count'] : 1;
- while ($r < $row) {
- ++$r;
- $objPHPExcel->getActiveSheet()->getRowDimension($r)->setRowHeight($defaultHeight);
- }
- while (($r < ($row+$rowCount)) && ($r < $maxRow)) {
- ++$r;
- $objPHPExcel->getActiveSheet()->getRowDimension($r)->setRowHeight($rowHeight);
- if ($hidden) {
- $objPHPExcel->getActiveSheet()->getRowDimension($r)->setVisible(false);
- }
- }
- }
- while ($r < $maxRow) {
- ++$r;
- $objPHPExcel->getActiveSheet()->getRowDimension($r)->setRowHeight($defaultHeight);
- }
- }
-
- // Handle Merged Cells in this worksheet
- if (isset($sheet->MergedRegions)) {
- foreach($sheet->MergedRegions->Merge as $mergeCells) {
- if (strpos($mergeCells,':') !== FALSE) {
- $objPHPExcel->getActiveSheet()->mergeCells($mergeCells);
- }
- }
- }
-
- $worksheetID++;
- }
-
- // Loop through definedNames (global named ranges)
- if (isset($gnmXML->Names)) {
- foreach($gnmXML->Names->Name as $namedRange) {
- $name = (string) $namedRange->name;
- $range = (string) $namedRange->value;
- if (stripos($range, '#REF!') !== false) {
- continue;
- }
-
- $range = explode('!',$range);
- $range[0] = trim($range[0],"'");;
- if ($worksheet = $objPHPExcel->getSheetByName($range[0])) {
- $extractedRange = str_replace('$', '', $range[1]);
- $objPHPExcel->addNamedRange( new PHPExcel_NamedRange($name, $worksheet, $extractedRange) );
- }
- }
- }
-
-
- // Return
- return $objPHPExcel;
- }
-
-
- private static function _parseBorderAttributes($borderAttributes)
- {
- $styleArray = array();
-
- if (isset($borderAttributes["Color"])) {
- $RGB = self::_parseGnumericColour($borderAttributes["Color"]);
- $styleArray['color']['rgb'] = $RGB;
- }
-
- switch ($borderAttributes["Style"]) {
- case '0' :
- $styleArray['style'] = PHPExcel_Style_Border::BORDER_NONE;
- break;
- case '1' :
- $styleArray['style'] = PHPExcel_Style_Border::BORDER_THIN;
- break;
- case '2' :
- $styleArray['style'] = PHPExcel_Style_Border::BORDER_MEDIUM;
- break;
- case '4' :
- $styleArray['style'] = PHPExcel_Style_Border::BORDER_DASHED;
- break;
- case '5' :
- $styleArray['style'] = PHPExcel_Style_Border::BORDER_THICK;
- break;
- case '6' :
- $styleArray['style'] = PHPExcel_Style_Border::BORDER_DOUBLE;
- break;
- case '7' :
- $styleArray['style'] = PHPExcel_Style_Border::BORDER_DOTTED;
- break;
- case '9' :
- $styleArray['style'] = PHPExcel_Style_Border::BORDER_DASHDOT;
- break;
- case '10' :
- $styleArray['style'] = PHPExcel_Style_Border::BORDER_MEDIUMDASHDOT;
- break;
- case '11' :
- $styleArray['style'] = PHPExcel_Style_Border::BORDER_DASHDOTDOT;
- break;
- case '12' :
- $styleArray['style'] = PHPExcel_Style_Border::BORDER_MEDIUMDASHDOTDOT;
- break;
- case '13' :
- $styleArray['style'] = PHPExcel_Style_Border::BORDER_MEDIUMDASHDOTDOT;
- break;
- case '3' :
- $styleArray['style'] = PHPExcel_Style_Border::BORDER_SLANTDASHDOT;
- break;
- case '8' :
- $styleArray['style'] = PHPExcel_Style_Border::BORDER_MEDIUMDASHED;
- break;
- }
- return $styleArray;
- }
-
-
- private function _parseRichText($is = '') {
- $value = new PHPExcel_RichText();
-
- $value->createText($is);
-
- return $value;
- }
-
-
- private static function _parseGnumericColour($gnmColour) {
- list($gnmR,$gnmG,$gnmB) = explode(':',$gnmColour);
- $gnmR = substr(str_pad($gnmR,4,'0',STR_PAD_RIGHT),0,2);
- $gnmG = substr(str_pad($gnmG,4,'0',STR_PAD_RIGHT),0,2);
- $gnmB = substr(str_pad($gnmB,4,'0',STR_PAD_RIGHT),0,2);
- $RGB = $gnmR.$gnmG.$gnmB;
-// echo 'Excel Colour: ',$RGB,'<br />';
- return $RGB;
- }
-
-}
diff --git a/admin/survey/excel/PHPExcel/Reader/HTML.php b/admin/survey/excel/PHPExcel/Reader/HTML.php
deleted file mode 100644
index 056ff22..0000000
--- a/admin/survey/excel/PHPExcel/Reader/HTML.php
+++ /dev/null
@@ -1,499 +0,0 @@
-<?php
-/**
- * PHPExcel
- *
- * Copyright (c) 2006 - 2012 PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel_Reader
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-
-/** PHPExcel root directory */
-if (!defined('PHPEXCEL_ROOT')) {
- /**
- * @ignore
- */
- define('PHPEXCEL_ROOT', dirname(__FILE__) . '/../../');
- require(PHPEXCEL_ROOT . 'PHPExcel/Autoloader.php');
-}
-
-/**
- * PHPExcel_Reader_HTML
- *
- * @category PHPExcel
- * @package PHPExcel_Reader
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- */
-class PHPExcel_Reader_HTML implements PHPExcel_Reader_IReader
-{
- /**
- * Input encoding
- *
- * @var string
- */
- private $_inputEncoding = 'ANSI';
-
- /**
- * Sheet index to read
- *
- * @var int
- */
- private $_sheetIndex = 0;
-
- /**
- * Formats
- *
- * @var array
- */
- private $_formats = array( 'h1' => array( 'font' => array( 'bold' => true,
- 'size' => 24,
- ),
- ), // Bold, 24pt
- 'h2' => array( 'font' => array( 'bold' => true,
- 'size' => 18,
- ),
- ), // Bold, 18pt
- 'h3' => array( 'font' => array( 'bold' => true,
- 'size' => 13.5,
- ),
- ), // Bold, 13.5pt
- 'h4' => array( 'font' => array( 'bold' => true,
- 'size' => 12,
- ),
- ), // Bold, 12pt
- 'h5' => array( 'font' => array( 'bold' => true,
- 'size' => 10,
- ),
- ), // Bold, 10pt
- 'h6' => array( 'font' => array( 'bold' => true,
- 'size' => 7.5,
- ),
- ), // Bold, 7.5pt
- 'a' => array( 'font' => array( 'underline' => true,
- 'color' => array( 'argb' => PHPExcel_Style_Color::COLOR_BLUE,
- ),
- ),
- ), // Blue underlined
- 'hr' => array( 'borders' => array( 'bottom' => array( 'style' => PHPExcel_Style_Border::BORDER_THIN,
- 'color' => array( PHPExcel_Style_Color::COLOR_BLACK,
- ),
- ),
- ),
- ), // Bottom border
- );
-
- /**
- * PHPExcel_Reader_IReadFilter instance
- *
- * @var PHPExcel_Reader_IReadFilter
- */
- private $_readFilter = null;
-
-
- /**
- * Create a new PHPExcel_Reader_HTML
- */
- public function __construct() {
- $this->_readFilter = new PHPExcel_Reader_DefaultReadFilter();
- }
-
- /**
- * Can the current PHPExcel_Reader_IReader read the file?
- *
- * @param string $pFileName
- * @return boolean
- * @throws Exception
- */
- public function canRead($pFilename)
- {
- // Check if file exists
- if (!file_exists($pFilename)) {
- throw new Exception("Could not open " . $pFilename . " for reading! File does not exist.");
- }
-
- // Read sample data (first 2 KB will do)
- $fh = fopen($pFilename, 'r');
- $data = fread($fh, 2048);
- fclose($fh);
-
- return true;
- }
-
- /**
- * Loads PHPExcel from file
- *
- * @param string $pFilename
- * @return PHPExcel
- * @throws Exception
- */
- public function load($pFilename)
- {
- // Create new PHPExcel
- $objPHPExcel = new PHPExcel();
-
- // Load into this instance
- return $this->loadIntoExisting($pFilename, $objPHPExcel);
- }
-
- /**
- * Read filter
- *
- * @return PHPExcel_Reader_IReadFilter
- */
- public function getReadFilter() {
- return $this->_readFilter;
- }
-
- /**
- * Set read filter
- *
- * @param PHPExcel_Reader_IReadFilter $pValue
- */
- public function setReadFilter(PHPExcel_Reader_IReadFilter $pValue) {
- $this->_readFilter = $pValue;
- return $this;
- }
-
- /**
- * Set input encoding
- *
- * @param string $pValue Input encoding
- */
- public function setInputEncoding($pValue = 'ANSI')
- {
- $this->_inputEncoding = $pValue;
- return $this;
- }
-
- /**
- * Get input encoding
- *
- * @return string
- */
- public function getInputEncoding()
- {
- return $this->_inputEncoding;
- }
-
- // Data Array used for testing only, should write to PHPExcel object on completion of tests
- private $_dataArray = array();
-
- private $_tableLevel = 0;
- private $_nestedColumn = array('A');
-
- private function _setTableStartColumn($column) {
- if ($this->_tableLevel == 0)
- $column = 'A';
- ++$this->_tableLevel;
- $this->_nestedColumn[$this->_tableLevel] = $column;
-
- return $this->_nestedColumn[$this->_tableLevel];
- }
-
- private function _getTableStartColumn() {
- return $this->_nestedColumn[$this->_tableLevel];
- }
-
- private function _releaseTableStartColumn() {
- --$this->_tableLevel;
- return array_pop($this->_nestedColumn);
- }
-
- private function _flushCell($sheet,$column,$row,&$cellContent) {
- if (is_string($cellContent)) {
- // Simple String content
- if (trim($cellContent) > '') {
- // Only actually write it if there's content in the string
- echo 'FLUSH CELL: ' , $column , $row , ' => ' , $cellContent , '<br />';
- // Write to worksheet to be done here...
- // ... we return the cell so we can mess about with styles more easily
- $cell = $sheet->setCellValue($column.$row,$cellContent,true);
- $this->_dataArray[$row][$column] = $cellContent;
- }
- } else {
- // We have a Rich Text run
- // TODO
- $this->_dataArray[$row][$column] = 'RICH TEXT: ' . $cellContent;
- }
- $cellContent = (string) '';
- }
-
- private function _processDomElement(DOMNode $element, $sheet, &$row, &$column, &$cellContent){
- foreach($element->childNodes as $child){
- if ($child instanceOf DOMText) {
- $domText = preg_replace('/\s+/',' ',trim($child->nodeValue));
- if (is_string($cellContent)) {
- // simply append the text if the cell content is a plain text string
- $cellContent .= $domText;
- } else {
- // but if we have a rich text run instead, we need to append it correctly
- // TODO
- }
- } elseif($child instanceOf DOMElement) {
- echo '<b>DOM ELEMENT: </b>' , strtoupper($child->nodeName) , '<br />';
-
- $attributeArray = array();
- foreach($child->attributes as $attribute) {
- echo '<b>ATTRIBUTE: </b>' , $attribute->name , ' => ' , $attribute->value , '<br />';
- $attributeArray[$attribute->name] = $attribute->value;
- }
-
- switch($child->nodeName) {
- case 'meta' :
- foreach($attributeArray as $attributeName => $attributeValue) {
- switch($attributeName) {
- case 'content':
- // TODO
- // Extract character set, so we can convert to UTF-8 if required
- break;
- }
- }
- $this->_processDomElement($child,$sheet,$row,$column,$cellContent);
- break;
- case 'title' :
- $this->_processDomElement($child,$sheet,$row,$column,$cellContent);
- $sheet->setTitle($cellContent);
- $cellContent = '';
- break;
- case 'span' :
- case 'div' :
- case 'font' :
- case 'i' :
- case 'em' :
- case 'strong':
- case 'b' :
- echo 'STYLING, SPAN OR DIV<br />';
- if ($cellContent > '')
- $cellContent .= ' ';
- $this->_processDomElement($child,$sheet,$row,$column,$cellContent);
- if ($cellContent > '')
- $cellContent .= ' ';
- echo 'END OF STYLING, SPAN OR DIV<br />';
- break;
- case 'hr' :
- $this->_flushCell($sheet,$column,$row,$cellContent);
- ++$row;
- if (isset($this->_formats[$child->nodeName])) {
- $sheet->getStyle($column.$row)->applyFromArray($this->_formats[$child->nodeName]);
- } else {
- $cellContent = '----------';
- $this->_flushCell($sheet,$column,$row,$cellContent);
- }
- ++$row;
- case 'br' :
- if ($this->_tableLevel > 0) {
- // If we're inside a table, replace with a \n
- $cellContent .= "\n";
- } else {
- // Otherwise flush our existing content and move the row cursor on
- $this->_flushCell($sheet,$column,$row,$cellContent);
- ++$row;
- }
- echo 'HARD LINE BREAK: ' , '<br />';
- break;
- case 'a' :
- echo 'START OF HYPERLINK: ' , '<br />';
- foreach($attributeArray as $attributeName => $attributeValue) {
- switch($attributeName) {
- case 'href':
- echo 'Link to ' , $attributeValue , '<br />';
- $sheet->getCell($column.$row)->getHyperlink()->setUrl($attributeValue);
- if (isset($this->_formats[$child->nodeName])) {
- $sheet->getStyle($column.$row)->applyFromArray($this->_formats[$child->nodeName]);
- }
- break;
- }
- }
- $cellContent .= ' ';
- $this->_processDomElement($child,$sheet,$row,$column,$cellContent);
- echo 'END OF HYPERLINK:' , '<br />';
- break;
- case 'h1' :
- case 'h2' :
- case 'h3' :
- case 'h4' :
- case 'h5' :
- case 'h6' :
- case 'ol' :
- case 'ul' :
- case 'p' :
- if ($this->_tableLevel > 0) {
- // If we're inside a table, replace with a \n
- $cellContent .= "\n";
- echo 'LIST ENTRY: ' , '<br />';
- $this->_processDomElement($child,$sheet,$row,$column,$cellContent);
- echo 'END OF LIST ENTRY:' , '<br />';
- } else {
- if ($cellContent > '') {
- $this->_flushCell($sheet,$column,$row,$cellContent);
- $row += 2;
- }
- echo 'START OF PARAGRAPH: ' , '<br />';
- $this->_processDomElement($child,$sheet,$row,$column,$cellContent);
- echo 'END OF PARAGRAPH:' , '<br />';
- $this->_flushCell($sheet,$column,$row,$cellContent);
-
- if (isset($this->_formats[$child->nodeName])) {
- $sheet->getStyle($column.$row)->applyFromArray($this->_formats[$child->nodeName]);
- }
-
- $row += 2;
- $column = 'A';
- }
- break;
- case 'li' :
- if ($this->_tableLevel > 0) {
- // If we're inside a table, replace with a \n
- $cellContent .= "\n";
- echo 'LIST ENTRY: ' , '<br />';
- $this->_processDomElement($child,$sheet,$row,$column,$cellContent);
- echo 'END OF LIST ENTRY:' , '<br />';
- } else {
- if ($cellContent > '') {
- $this->_flushCell($sheet,$column,$row,$cellContent);
- }
- ++$row;
- echo 'LIST ENTRY: ' , '<br />';
- $this->_processDomElement($child,$sheet,$row,$column,$cellContent);
- echo 'END OF LIST ENTRY:' , '<br />';
- $this->_flushCell($sheet,$column,$row,$cellContent);
- $column = 'A';
- }
- break;
- case 'table' :
- $this->_flushCell($sheet,$column,$row,$cellContent);
- $column = $this->_setTableStartColumn($column);
- echo 'START OF TABLE LEVEL ' , $this->_tableLevel , '<br />';
- if ($this->_tableLevel > 1)
- --$row;
- $this->_processDomElement($child,$sheet,$row,$column,$cellContent);
- echo 'END OF TABLE LEVEL ' , $this->_tableLevel , '<br />';
- $column = $this->_releaseTableStartColumn();
- if ($this->_tableLevel > 1) {
- ++$column;
- } else {
- ++$row;
- }
- break;
- case 'thead' :
- case 'tbody' :
- $this->_processDomElement($child,$sheet,$row,$column,$cellContent);
- break;
- case 'tr' :
- ++$row;
- $column = $this->_getTableStartColumn();
- $cellContent = '';
- echo 'START OF TABLE ' , $this->_tableLevel , ' ROW<br />';
- $this->_processDomElement($child,$sheet,$row,$column,$cellContent);
- echo 'END OF TABLE ' , $this->_tableLevel , ' ROW<br />';
- break;
- case 'th' :
- case 'td' :
- echo 'START OF TABLE ' , $this->_tableLevel , ' CELL<br />';
- $this->_processDomElement($child,$sheet,$row,$column,$cellContent);
- echo 'END OF TABLE ' , $this->_tableLevel , ' CELL<br />';
- $this->_flushCell($sheet,$column,$row,$cellContent);
- ++$column;
- break;
- case 'body' :
- $row = 1;
- $column = 'A';
- $content = '';
- $this->_tableLevel = 0;
- $this->_processDomElement($child,$sheet,$row,$column,$cellContent);
- break;
- default:
- $this->_processDomElement($child,$sheet,$row,$column,$cellContent);
- }
- }
- }
- }
-
- /**
- * Loads PHPExcel from file into PHPExcel instance
- *
- * @param string $pFilename
- * @param PHPExcel $objPHPExcel
- * @return PHPExcel
- * @throws Exception
- */
- public function loadIntoExisting($pFilename, PHPExcel $objPHPExcel)
- {
- // Check if file exists
- if (!file_exists($pFilename)) {
- throw new Exception("Could not open " . $pFilename . " for reading! File does not exist.");
- }
-
- if (!is_file($pFilename)) {
- throw new Exception("Could not open " . $pFilename . " for reading! The given file is not a regular file.");
- }
-
- // Create new PHPExcel
- while ($objPHPExcel->getSheetCount() <= $this->_sheetIndex) {
- $objPHPExcel->createSheet();
- }
- $objPHPExcel->setActiveSheetIndex( $this->_sheetIndex );
-
- // Create a new DOM object
- $dom = new domDocument;
- // Load the HTML file into the DOM object
- $loaded = $dom->loadHTMLFile($pFilename);
- if ($loaded === false) {
- throw new Exception('Failed to load ',$pFilename,' as a DOM Document');
- }
-
- // Discard white space
- $dom->preserveWhiteSpace = false;
-
-
- $row = 0;
- $column = 'A';
- $content = '';
- $this->_processDomElement($dom,$objPHPExcel->getActiveSheet(),$row,$column,$content);
-
- echo '<hr />';
- var_dump($this->_dataArray);
-
- // Return
- return $objPHPExcel;
- }
-
- /**
- * Get sheet index
- *
- * @return int
- */
- public function getSheetIndex() {
- return $this->_sheetIndex;
- }
-
- /**
- * Set sheet index
- *
- * @param int $pValue Sheet index
- * @return PHPExcel_Reader_HTML
- */
- public function setSheetIndex($pValue = 0) {
- $this->_sheetIndex = $pValue;
- return $this;
- }
-
-}
diff --git a/admin/survey/excel/PHPExcel/Reader/IReadFilter.php b/admin/survey/excel/PHPExcel/Reader/IReadFilter.php
deleted file mode 100644
index ba8095b..0000000
--- a/admin/survey/excel/PHPExcel/Reader/IReadFilter.php
+++ /dev/null
@@ -1,47 +0,0 @@
-<?php
-/**
- * PHPExcel
- *
- * Copyright (c) 2006 - 2012 PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel_Reader
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-
-/**
- * PHPExcel_Reader_IReadFilter
- *
- * @category PHPExcel
- * @package PHPExcel_Reader
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- */
-interface PHPExcel_Reader_IReadFilter
-{
- /**
- * Should this cell be read?
- *
- * @param $column String column index
- * @param $row Row index
- * @param $worksheetName Optional worksheet name
- * @return boolean
- */
- public function readCell($column, $row, $worksheetName = '');
-}
diff --git a/admin/survey/excel/PHPExcel/Reader/IReader.php b/admin/survey/excel/PHPExcel/Reader/IReader.php
deleted file mode 100644
index 7db2597..0000000
--- a/admin/survey/excel/PHPExcel/Reader/IReader.php
+++ /dev/null
@@ -1,53 +0,0 @@
-<?php
-/**
- * PHPExcel
- *
- * Copyright (c) 2006 - 2012 PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel_Reader
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-
-/**
- * PHPExcel_Reader_IReader
- *
- * @category PHPExcel
- * @package PHPExcel_Reader
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- */
-interface PHPExcel_Reader_IReader
-{
- /**
- * Can the current PHPExcel_Reader_IReader read the file?
- *
- * @param string $pFileName
- * @return boolean
- */
- public function canRead($pFilename);
-
- /**
- * Loads PHPExcel from file
- *
- * @param string $pFileName
- * @throws Exception
- */
- public function load($pFilename);
-}
diff --git a/admin/survey/excel/PHPExcel/Reader/OOCalc.php b/admin/survey/excel/PHPExcel/Reader/OOCalc.php
deleted file mode 100644
index b6233d1..0000000
--- a/admin/survey/excel/PHPExcel/Reader/OOCalc.php
+++ /dev/null
@@ -1,733 +0,0 @@
-<?php
-/**
- * PHPExcel
- *
- * Copyright (c) 2006 - 2012 PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel_Reader
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-
-/** PHPExcel root directory */
-if (!defined('PHPEXCEL_ROOT')) {
- /**
- * @ignore
- */
- define('PHPEXCEL_ROOT', dirname(__FILE__) . '/../../');
- require(PHPEXCEL_ROOT . 'PHPExcel/Autoloader.php');
-}
-
-/**
- * PHPExcel_Reader_OOCalc
- *
- * @category PHPExcel
- * @package PHPExcel_Reader
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- */
-class PHPExcel_Reader_OOCalc implements PHPExcel_Reader_IReader
-{
- /**
- * Read data only?
- * Identifies whether the Reader should only read data values for cells, and ignore any formatting information;
- * or whether it should read both data and formatting
- *
- * @var boolean
- */
- private $_readDataOnly = false;
-
- /**
- * Restrict which sheets should be loaded?
- * This property holds an array of worksheet names to be loaded. If null, then all worksheets will be loaded.
- *
- * @var array of string
- */
- private $_loadSheetsOnly = null;
-
- /**
- * Formats
- *
- * @var array
- */
- private $_styles = array();
-
- /**
- * PHPExcel_Reader_IReadFilter instance
- *
- * @var PHPExcel_Reader_IReadFilter
- */
- private $_readFilter = null;
-
-
- /**
- * Create a new PHPExcel_Reader_OOCalc
- */
- public function __construct() {
- $this->_readFilter = new PHPExcel_Reader_DefaultReadFilter();
- }
-
-
- /**
- * Read data only?
- * If this is true, then the Reader will only read data values for cells, it will not read any formatting information.
- * If false (the default) it will read data and formatting.
- *
- * @return boolean
- */
- public function getReadDataOnly() {
- return $this->_readDataOnly;
- }
-
-
- /**
- * Set read data only
- * Set to true, to advise the Reader only to read data values for cells, and to ignore any formatting information.
- * Set to false (the default) to advise the Reader to read both data and formatting for cells.
- *
- * @param boolean $pValue
- * @return PHPExcel_Reader_OOCalc
- */
- public function setReadDataOnly($pValue = false) {
- $this->_readDataOnly = $pValue;
- return $this;
- }
-
-
- /**
- * Get which sheets to load
- * Returns either an array of worksheet names (the list of worksheets that should be loaded), or a null
- * indicating that all worksheets in the workbook should be loaded.
- *
- * @return mixed
- */
- public function getLoadSheetsOnly()
- {
- return $this->_loadSheetsOnly;
- }
-
-
- /**
- * Set which sheets to load
- *
- * @param mixed $value
- * This should be either an array of worksheet names to be loaded, or a string containing a single worksheet name.
- * If NULL, then it tells the Reader to read all worksheets in the workbook
- *
- * @return PHPExcel_Reader_OOCalc
- */
- public function setLoadSheetsOnly($value = null)
- {
- $this->_loadSheetsOnly = is_array($value) ?
- $value : array($value);
- return $this;
- }
-
-
- /**
- * Set all sheets to load
- * Tells the Reader to load all worksheets from the workbook.
- *
- * @return PHPExcel_Reader_OOCalc
- */
- public function setLoadAllSheets()
- {
- $this->_loadSheetsOnly = null;
- return $this;
- }
-
-
- /**
- * Read filter
- *
- * @return PHPExcel_Reader_IReadFilter
- */
- public function getReadFilter() {
- return $this->_readFilter;
- }
-
-
- /**
- * Set read filter
- *
- * @param PHPExcel_Reader_IReadFilter $pValue
- * @return PHPExcel_Reader_OOCalc
- */
- public function setReadFilter(PHPExcel_Reader_IReadFilter $pValue) {
- $this->_readFilter = $pValue;
- return $this;
- }
-
-
- /**
- * Can the current PHPExcel_Reader_IReader read the file?
- *
- * @param string $pFileName
- * @return boolean
- * @throws Exception
- */
- public function canRead($pFilename)
- {
- // Check if file exists
- if (!file_exists($pFilename)) {
- throw new Exception("Could not open " . $pFilename . " for reading! File does not exist.");
- }
-
- // Check if zip class exists
- if (!class_exists('ZipArchive',FALSE)) {
- throw new Exception("ZipArchive library is not enabled");
- }
-
- // Load file
- $zip = new ZipArchive;
- if ($zip->open($pFilename) === true) {
- // check if it is an OOXML archive
- $stat = $zip->statName('mimetype');
- if ($stat && ($stat['size'] <= 255)) {
- $mimeType = $zip->getFromName($stat['name']);
- } else {
- $zip->close();
- return FALSE;
- }
-
- $zip->close();
-
- return ($mimeType === 'application/vnd.oasis.opendocument.spreadsheet');
- }
-
- return FALSE;
- }
-
-
- /**
- * Reads names of the worksheets from a file, without parsing the whole file to a PHPExcel object
- *
- * @param string $pFilename
- * @throws Exception
- */
- public function listWorksheetNames($pFilename)
- {
- // Check if file exists
- if (!file_exists($pFilename)) {
- throw new Exception("Could not open " . $pFilename . " for reading! File does not exist.");
- }
-
- $worksheetNames = array();
-
- $zip = new ZipArchive;
- if ($zip->open($pFilename) === true) {
-
- $xml = simplexml_load_string($zip->getFromName("content.xml"));
- $namespacesContent = $xml->getNamespaces(true);
-
- $workbook = $xml->children($namespacesContent['office']);
- foreach($workbook->body->spreadsheet as $workbookData) {
- $workbookData = $workbookData->children($namespacesContent['table']);
- foreach($workbookData->table as $worksheetDataSet) {
- $worksheetDataAttributes = $worksheetDataSet->attributes($namespacesContent['table']);
-
- $worksheetNames[] = $worksheetDataAttributes['name'];
- }
- }
- }
-
- return $worksheetNames;
- }
-
-
- /**
- * Loads PHPExcel from file
- *
- * @param string $pFilename
- * @return PHPExcel
- * @throws Exception
- */
- public function load($pFilename)
- {
- // Create new PHPExcel
- $objPHPExcel = new PHPExcel();
-
- // Load into this instance
- return $this->loadIntoExisting($pFilename, $objPHPExcel);
- }
-
-
- private static function identifyFixedStyleValue($styleList,&$styleAttributeValue) {
- $styleAttributeValue = strtolower($styleAttributeValue);
- foreach($styleList as $style) {
- if ($styleAttributeValue == strtolower($style)) {
- $styleAttributeValue = $style;
- return true;
- }
- }
- return false;
- }
-
-
- /**
- * Return worksheet info (Name, Last Column Letter, Last Column Index, Total Rows, Total Columns)
- *
- * @param string $pFilename
- * @throws Exception
- */
- public function listWorksheetInfo($pFilename)
- {
- // Check if file exists
- if (!file_exists($pFilename)) {
- throw new Exception("Could not open " . $pFilename . " for reading! File does not exist.");
- }
-
- $worksheetInfo = array();
-
- $zip = new ZipArchive;
- if ($zip->open($pFilename) === true) {
-
- $xml = simplexml_load_string($zip->getFromName("content.xml"));
- $namespacesContent = $xml->getNamespaces(true);
-
- $workbook = $xml->children($namespacesContent['office']);
- foreach($workbook->body->spreadsheet as $workbookData) {
- $workbookData = $workbookData->children($namespacesContent['table']);
- foreach($workbookData->table as $worksheetDataSet) {
- $worksheetData = $worksheetDataSet->children($namespacesContent['table']);
- $worksheetDataAttributes = $worksheetDataSet->attributes($namespacesContent['table']);
-
- $tmpInfo = array();
- $tmpInfo['worksheetName'] = (string) $worksheetDataAttributes['name'];
- $tmpInfo['lastColumnLetter'] = 'A';
- $tmpInfo['lastColumnIndex'] = 0;
- $tmpInfo['totalRows'] = 0;
- $tmpInfo['totalColumns'] = 0;
-
- $rowIndex = 0;
- foreach ($worksheetData as $key => $rowData) {
- switch ($key) {
- case 'table-row' :
- $rowDataTableAttributes = $rowData->attributes($namespacesContent['table']);
- $rowRepeats = (isset($rowDataTableAttributes['number-rows-repeated'])) ?
- $rowDataTableAttributes['number-rows-repeated'] : 1;
- $columnIndex = 0;
-
- foreach ($rowData as $key => $cellData) {
- $cellDataTableAttributes = $cellData->attributes($namespacesContent['table']);
- $colRepeats = (isset($cellDataTableAttributes['number-columns-repeated'])) ?
- $cellDataTableAttributes['number-columns-repeated'] : 1;
- $cellDataOfficeAttributes = $cellData->attributes($namespacesContent['office']);
- if (isset($cellDataOfficeAttributes['value-type'])) {
- $tmpInfo['lastColumnIndex'] = max($tmpInfo['lastColumnIndex'], $columnIndex + $colRepeats - 1);
- $tmpInfo['totalRows'] = max($tmpInfo['totalRows'], $rowIndex + $rowRepeats);
- }
- $columnIndex += $colRepeats;
- }
- $rowIndex += $rowRepeats;
- break;
- }
- }
-
- $tmpInfo['lastColumnLetter'] = PHPExcel_Cell::stringFromColumnIndex($tmpInfo['lastColumnIndex']);
- $tmpInfo['totalColumns'] = $tmpInfo['lastColumnIndex'] + 1;
-
- $worksheetInfo[] = $tmpInfo;
- }
- }
- }
-
- return $worksheetInfo;
- }
-
-
- /**
- * Loads PHPExcel from file into PHPExcel instance
- *
- * @param string $pFilename
- * @param PHPExcel $objPHPExcel
- * @return PHPExcel
- * @throws Exception
- */
- public function loadIntoExisting($pFilename, PHPExcel $objPHPExcel)
- {
- // Check if file exists
- if (!file_exists($pFilename)) {
- throw new Exception("Could not open " . $pFilename . " for reading! File does not exist.");
- }
-
- $timezoneObj = new DateTimeZone('Europe/London');
- $GMT = new DateTimeZone('UTC');
-
- $zip = new ZipArchive;
- if ($zip->open($pFilename) === true) {
-// echo '<h1>Meta Information</h1>';
- $xml = simplexml_load_string($zip->getFromName("meta.xml"));
- $namespacesMeta = $xml->getNamespaces(true);
-// echo '<pre>';
-// print_r($namespacesMeta);
-// echo '</pre><hr />';
-
- $docProps = $objPHPExcel->getProperties();
- $officeProperty = $xml->children($namespacesMeta['office']);
- foreach($officeProperty as $officePropertyData) {
- $officePropertyDC = array();
- if (isset($namespacesMeta['dc'])) {
- $officePropertyDC = $officePropertyData->children($namespacesMeta['dc']);
- }
- foreach($officePropertyDC as $propertyName => $propertyValue) {
- switch ($propertyName) {
- case 'title' :
- $docProps->setTitle($propertyValue);
- break;
- case 'subject' :
- $docProps->setSubject($propertyValue);
- break;
- case 'creator' :
- $docProps->setCreator($propertyValue);
- $docProps->setLastModifiedBy($propertyValue);
- break;
- case 'date' :
- $creationDate = strtotime($propertyValue);
- $docProps->setCreated($creationDate);
- $docProps->setModified($creationDate);
- break;
- case 'description' :
- $docProps->setDescription($propertyValue);
- break;
- }
- }
- $officePropertyMeta = array();
- if (isset($namespacesMeta['dc'])) {
- $officePropertyMeta = $officePropertyData->children($namespacesMeta['meta']);
- }
- foreach($officePropertyMeta as $propertyName => $propertyValue) {
- $propertyValueAttributes = $propertyValue->attributes($namespacesMeta['meta']);
- switch ($propertyName) {
- case 'initial-creator' :
- $docProps->setCreator($propertyValue);
- break;
- case 'keyword' :
- $docProps->setKeywords($propertyValue);
- break;
- case 'creation-date' :
- $creationDate = strtotime($propertyValue);
- $docProps->setCreated($creationDate);
- break;
- case 'user-defined' :
- $propertyValueType = PHPExcel_DocumentProperties::PROPERTY_TYPE_STRING;
- foreach ($propertyValueAttributes as $key => $value) {
- if ($key == 'name') {
- $propertyValueName = (string) $value;
- } elseif($key == 'value-type') {
- switch ($value) {
- case 'date' :
- $propertyValue = PHPExcel_DocumentProperties::convertProperty($propertyValue,'date');
- $propertyValueType = PHPExcel_DocumentProperties::PROPERTY_TYPE_DATE;
- break;
- case 'boolean' :
- $propertyValue = PHPExcel_DocumentProperties::convertProperty($propertyValue,'bool');
- $propertyValueType = PHPExcel_DocumentProperties::PROPERTY_TYPE_BOOLEAN;
- break;
- case 'float' :
- $propertyValue = PHPExcel_DocumentProperties::convertProperty($propertyValue,'r4');
- $propertyValueType = PHPExcel_DocumentProperties::PROPERTY_TYPE_FLOAT;
- break;
- default :
- $propertyValueType = PHPExcel_DocumentProperties::PROPERTY_TYPE_STRING;
- }
- }
- }
- $docProps->setCustomProperty($propertyValueName,$propertyValue,$propertyValueType);
- break;
- }
- }
- }
-
-
-// echo '<h1>Workbook Content</h1>';
- $xml = simplexml_load_string($zip->getFromName("content.xml"));
- $namespacesContent = $xml->getNamespaces(true);
-// echo '<pre>';
-// print_r($namespacesContent);
-// echo '</pre><hr />';
-
- $workbook = $xml->children($namespacesContent['office']);
- foreach($workbook->body->spreadsheet as $workbookData) {
- $workbookData = $workbookData->children($namespacesContent['table']);
- $worksheetID = 0;
- foreach($workbookData->table as $worksheetDataSet) {
- $worksheetData = $worksheetDataSet->children($namespacesContent['table']);
-// print_r($worksheetData);
-// echo '<br />';
- $worksheetDataAttributes = $worksheetDataSet->attributes($namespacesContent['table']);
-// print_r($worksheetDataAttributes);
-// echo '<br />';
- if ((isset($this->_loadSheetsOnly)) && (isset($worksheetDataAttributes['name'])) &&
- (!in_array($worksheetDataAttributes['name'], $this->_loadSheetsOnly))) {
- continue;
- }
-
-// echo '<h2>Worksheet '.$worksheetDataAttributes['name'].'</h2>';
- // Create new Worksheet
- $objPHPExcel->createSheet();
- $objPHPExcel->setActiveSheetIndex($worksheetID);
- if (isset($worksheetDataAttributes['name'])) {
- $worksheetName = (string) $worksheetDataAttributes['name'];
- // Use false for $updateFormulaCellReferences to prevent adjustment of worksheet references in
- // formula cells... during the load, all formulae should be correct, and we're simply
- // bringing the worksheet name in line with the formula, not the reverse
- $objPHPExcel->getActiveSheet()->setTitle($worksheetName,false);
- }
-
- $rowID = 1;
- foreach($worksheetData as $key => $rowData) {
-// echo '<b>'.$key.'</b><br />';
- switch ($key) {
- case 'table-header-rows':
- foreach ($rowData as $key=>$cellData) {
- $rowData = $cellData;
- break;
- }
- case 'table-row' :
- $rowDataTableAttributes = $rowData->attributes($namespacesContent['table']);
- $rowRepeats = (isset($rowDataTableAttributes['number-rows-repeated'])) ?
- $rowDataTableAttributes['number-rows-repeated'] : 1;
- $columnID = 'A';
- foreach($rowData as $key => $cellData) {
- if ($this->getReadFilter() !== NULL) {
- if (!$this->getReadFilter()->readCell($columnID, $rowID, $worksheetName)) {
- continue;
- }
- }
-
-// echo '<b>'.$columnID.$rowID.'</b><br />';
- $cellDataText = (isset($namespacesContent['text'])) ?
- $cellData->children($namespacesContent['text']) :
- '';
- $cellDataOffice = $cellData->children($namespacesContent['office']);
- $cellDataOfficeAttributes = $cellData->attributes($namespacesContent['office']);
- $cellDataTableAttributes = $cellData->attributes($namespacesContent['table']);
-
-// echo 'Office Attributes: ';
-// print_r($cellDataOfficeAttributes);
-// echo '<br />Table Attributes: ';
-// print_r($cellDataTableAttributes);
-// echo '<br />Cell Data Text';
-// print_r($cellDataText);
-// echo '<br />';
-//
- $type = $formatting = $hyperlink = null;
- $hasCalculatedValue = false;
- $cellDataFormula = '';
- if (isset($cellDataTableAttributes['formula'])) {
- $cellDataFormula = $cellDataTableAttributes['formula'];
- $hasCalculatedValue = true;
- }
-
- if (isset($cellDataOffice->annotation)) {
-// echo 'Cell has comment<br />';
- $annotationText = $cellDataOffice->annotation->children($namespacesContent['text']);
- $textArray = array();
- foreach($annotationText as $t) {
- foreach($t->span as $text) {
- $textArray[] = (string)$text;
- }
- }
- $text = implode("\n",$textArray);
-// echo $text,'<br />';
- $objPHPExcel->getActiveSheet()->getComment( $columnID.$rowID )
-// ->setAuthor( $author )
- ->setText($this->_parseRichText($text) );
- }
-
- if (isset($cellDataText->p)) {
- // Consolidate if there are multiple p records (maybe with spans as well)
- $dataArray = array();
- // Text can have multiple text:p and within those, multiple text:span.
- // text:p newlines, but text:span does not.
- // Also, here we assume there is no text data is span fields are specified, since
- // we have no way of knowing proper positioning anyway.
- foreach ($cellDataText->p as $pData) {
- if (isset($pData->span)) {
- // span sections do not newline, so we just create one large string here
- $spanSection = "";
- foreach ($pData->span as $spanData) {
- $spanSection .= $spanData;
- }
- array_push($dataArray, $spanSection);
- } else {
- array_push($dataArray, $pData);
- }
- }
- $allCellDataText = implode($dataArray, "\n");
-
-// echo 'Value Type is '.$cellDataOfficeAttributes['value-type'].'<br />';
- switch ($cellDataOfficeAttributes['value-type']) {
- case 'string' :
- $type = PHPExcel_Cell_DataType::TYPE_STRING;
- $dataValue = $allCellDataText;
- if (isset($dataValue->a)) {
- $dataValue = $dataValue->a;
- $cellXLinkAttributes = $dataValue->attributes($namespacesContent['xlink']);
- $hyperlink = $cellXLinkAttributes['href'];
- }
- break;
- case 'boolean' :
- $type = PHPExcel_Cell_DataType::TYPE_BOOL;
- $dataValue = ($allCellDataText == 'TRUE') ? True : False;
- break;
- case 'percentage' :
- $type = PHPExcel_Cell_DataType::TYPE_NUMERIC;
- $dataValue = (float) $cellDataOfficeAttributes['value'];
- if (floor($dataValue) == $dataValue) {
- $dataValue = (integer) $dataValue;
- }
- $formatting = PHPExcel_Style_NumberFormat::FORMAT_PERCENTAGE_00;
- break;
- case 'currency' :
- $type = PHPExcel_Cell_DataType::TYPE_NUMERIC;
- $dataValue = (float) $cellDataOfficeAttributes['value'];
- if (floor($dataValue) == $dataValue) {
- $dataValue = (integer) $dataValue;
- }
- $formatting = PHPExcel_Style_NumberFormat::FORMAT_CURRENCY_USD_SIMPLE;
- break;
- case 'float' :
- $type = PHPExcel_Cell_DataType::TYPE_NUMERIC;
- $dataValue = (float) $cellDataOfficeAttributes['value'];
- if (floor($dataValue) == $dataValue) {
- if ($dataValue = (integer) $dataValue)
- $dataValue = (integer) $dataValue;
- else
- $dataValue = (float) $dataValue;
- }
- break;
- case 'date' :
- $type = PHPExcel_Cell_DataType::TYPE_NUMERIC;
- $dateObj = new DateTime($cellDataOfficeAttributes['date-value'], $GMT);
- $dateObj->setTimeZone($timezoneObj);
- list($year,$month,$day,$hour,$minute,$second) = explode(' ',$dateObj->format('Y m d H i s'));
- $dataValue = PHPExcel_Shared_Date::FormattedPHPToExcel($year,$month,$day,$hour,$minute,$second);
- if ($dataValue != floor($dataValue)) {
- $formatting = PHPExcel_Style_NumberFormat::FORMAT_DATE_XLSX15.' '.PHPExcel_Style_NumberFormat::FORMAT_DATE_TIME4;
- } else {
- $formatting = PHPExcel_Style_NumberFormat::FORMAT_DATE_XLSX15;
- }
- break;
- case 'time' :
- $type = PHPExcel_Cell_DataType::TYPE_NUMERIC;
- $dataValue = PHPExcel_Shared_Date::PHPToExcel(strtotime('01-01-1970 '.implode(':',sscanf($cellDataOfficeAttributes['time-value'],'PT%dH%dM%dS'))));
- $formatting = PHPExcel_Style_NumberFormat::FORMAT_DATE_TIME4;
- break;
- }
-// echo 'Data value is '.$dataValue.'<br />';
-// if ($hyperlink !== NULL) {
-// echo 'Hyperlink is '.$hyperlink.'<br />';
-// }
- } else {
- $type = PHPExcel_Cell_DataType::TYPE_NULL;
- $dataValue = NULL;
- }
-
- if ($hasCalculatedValue) {
- $type = PHPExcel_Cell_DataType::TYPE_FORMULA;
-// echo 'Formula: '.$cellDataFormula.'<br />';
- $cellDataFormula = substr($cellDataFormula,strpos($cellDataFormula,':=')+1);
- $temp = explode('"',$cellDataFormula);
- $tKey = false;
- foreach($temp as &$value) {
- // Only replace in alternate array entries (i.e. non-quoted blocks)
- if ($tKey = !$tKey) {
- $value = preg_replace('/\[\.(.*):\.(.*)\]/Ui','$1:$2',$value);
- $value = preg_replace('/\[\.(.*)\]/Ui','$1',$value);
- $value = PHPExcel_Calculation::_translateSeparator(';',',',$value,$inBraces);
- }
- }
- unset($value);
- // Then rebuild the formula string
- $cellDataFormula = implode('"',$temp);
-// echo 'Adjusted Formula: '.$cellDataFormula.'<br />';
- }
-
- $colRepeats = (isset($cellDataTableAttributes['number-columns-repeated'])) ?
- $cellDataTableAttributes['number-columns-repeated'] : 1;
- if ($type !== NULL) {
- for ($i = 0; $i < $colRepeats; ++$i) {
- if ($i > 0) {
- ++$columnID;
- }
- if ($type !== PHPExcel_Cell_DataType::TYPE_NULL) {
- for ($rowAdjust = 0; $rowAdjust < $rowRepeats; ++$rowAdjust) {
- $rID = $rowID + $rowAdjust;
- $objPHPExcel->getActiveSheet()->getCell($columnID.$rID)->setValueExplicit((($hasCalculatedValue) ? $cellDataFormula : $dataValue),$type);
- if ($hasCalculatedValue) {
-// echo 'Forumla result is '.$dataValue.'<br />';
- $objPHPExcel->getActiveSheet()->getCell($columnID.$rID)->setCalculatedValue($dataValue);
- }
- if ($formatting !== NULL) {
- $objPHPExcel->getActiveSheet()->getStyle($columnID.$rID)->getNumberFormat()->setFormatCode($formatting);
- } else {
- $objPHPExcel->getActiveSheet()->getStyle($columnID.$rID)->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_GENERAL);
- }
- if ($hyperlink !== NULL) {
- $objPHPExcel->getActiveSheet()->getCell($columnID.$rID)->getHyperlink()->setUrl($hyperlink);
- }
- }
- }
- }
- }
-
- // Merged cells
- if ((isset($cellDataTableAttributes['number-columns-spanned'])) || (isset($cellDataTableAttributes['number-rows-spanned']))) {
- if (($type !== PHPExcel_Cell_DataType::TYPE_NULL) || (!$this->_readDataOnly)) {
- $columnTo = $columnID;
- if (isset($cellDataTableAttributes['number-columns-spanned'])) {
- $columnTo = PHPExcel_Cell::stringFromColumnIndex(PHPExcel_Cell::columnIndexFromString($columnID) + $cellDataTableAttributes['number-columns-spanned'] -2);
- }
- $rowTo = $rowID;
- if (isset($cellDataTableAttributes['number-rows-spanned'])) {
- $rowTo = $rowTo + $cellDataTableAttributes['number-rows-spanned'] - 1;
- }
- $cellRange = $columnID.$rowID.':'.$columnTo.$rowTo;
- $objPHPExcel->getActiveSheet()->mergeCells($cellRange);
- }
- }
-
- ++$columnID;
- }
- $rowID += $rowRepeats;
- break;
- }
- }
- ++$worksheetID;
- }
- }
-
- }
-
- // Return
- return $objPHPExcel;
- }
-
-
- private function _parseRichText($is = '') {
- $value = new PHPExcel_RichText();
-
- $value->createText($is);
-
- return $value;
- }
-
-}
diff --git a/admin/survey/excel/PHPExcel/Reader/SYLK.php b/admin/survey/excel/PHPExcel/Reader/SYLK.php
deleted file mode 100644
index cfae98f..0000000
--- a/admin/survey/excel/PHPExcel/Reader/SYLK.php
+++ /dev/null
@@ -1,498 +0,0 @@
-<?php
-/**
- * PHPExcel
- *
- * Copyright (c) 2006 - 2012 PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel_Reader
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-
-/** PHPExcel root directory */
-if (!defined('PHPEXCEL_ROOT')) {
- /**
- * @ignore
- */
- define('PHPEXCEL_ROOT', dirname(__FILE__) . '/../../');
- require(PHPEXCEL_ROOT . 'PHPExcel/Autoloader.php');
-}
-
-/**
- * PHPExcel_Reader_SYLK
- *
- * @category PHPExcel
- * @package PHPExcel_Reader
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- */
-class PHPExcel_Reader_SYLK implements PHPExcel_Reader_IReader
-{
- /**
- * Input encoding
- *
- * @var string
- */
- private $_inputEncoding = 'ANSI';
-
- /**
- * Sheet index to read
- *
- * @var int
- */
- private $_sheetIndex = 0;
-
- /**
- * Formats
- *
- * @var array
- */
- private $_formats = array();
-
- /**
- * Format Count
- *
- * @var int
- */
- private $_format = 0;
-
- /**
- * PHPExcel_Reader_IReadFilter instance
- *
- * @var PHPExcel_Reader_IReadFilter
- */
- private $_readFilter = null;
-
-
- /**
- * Create a new PHPExcel_Reader_SYLK
- */
- public function __construct() {
- $this->_readFilter = new PHPExcel_Reader_DefaultReadFilter();
- }
-
-
- /**
- * Can the current PHPExcel_Reader_IReader read the file?
- *
- * @param string $pFileName
- * @return boolean
- * @throws Exception
- */
- public function canRead($pFilename)
- {
- // Check if file exists
- if (!file_exists($pFilename)) {
- throw new Exception("Could not open " . $pFilename . " for reading! File does not exist.");
- }
-
- // Read sample data (first 2 KB will do)
- $fh = fopen($pFilename, 'r');
- $data = fread($fh, 2048);
- fclose($fh);
-
- // Count delimiters in file
- $delimiterCount = substr_count($data, ';');
- if ($delimiterCount < 1) {
- return false;
- }
-
- // Analyze first line looking for ID; signature
- $lines = explode("\n", $data);
- if (substr($lines[0],0,4) != 'ID;P') {
- return false;
- }
-
- return true;
- }
-
-
- /**
- * Read filter
- *
- * @return PHPExcel_Reader_IReadFilter
- */
- public function getReadFilter() {
- return $this->_readFilter;
- }
-
-
- /**
- * Set read filter
- *
- * @param PHPExcel_Reader_IReadFilter $pValue
- */
- public function setReadFilter(PHPExcel_Reader_IReadFilter $pValue) {
- $this->_readFilter = $pValue;
- return $this;
- }
-
-
- /**
- * Set input encoding
- *
- * @param string $pValue Input encoding
- */
- public function setInputEncoding($pValue = 'ANSI')
- {
- $this->_inputEncoding = $pValue;
- return $this;
- }
-
-
- /**
- * Get input encoding
- *
- * @return string
- */
- public function getInputEncoding()
- {
- return $this->_inputEncoding;
- }
-
-
- /**
- * Return worksheet info (Name, Last Column Letter, Last Column Index, Total Rows, Total Columns)
- *
- * @param string $pFilename
- * @throws Exception
- */
- public function listWorksheetInfo($pFilename)
- {
- // Check if file exists
- if (!file_exists($pFilename)) {
- throw new Exception("Could not open " . $pFilename . " for reading! File does not exist.");
- }
-
- // Open file
- $fileHandle = fopen($pFilename, 'r');
- if ($fileHandle === false) {
- throw new Exception("Could not open file " . $pFilename . " for reading.");
- }
-
- $worksheetInfo = array();
- $worksheetInfo[0]['worksheetName'] = 'Worksheet';
- $worksheetInfo[0]['lastColumnLetter'] = 'A';
- $worksheetInfo[0]['lastColumnIndex'] = 0;
- $worksheetInfo[0]['totalRows'] = 0;
- $worksheetInfo[0]['totalColumns'] = 0;
-
- // Loop through file
- $rowData = array();
-
- // loop through one row (line) at a time in the file
- $rowIndex = 0;
- while (($rowData = fgets($fileHandle)) !== FALSE) {
- $columnIndex = 0;
-
- // convert SYLK encoded $rowData to UTF-8
- $rowData = PHPExcel_Shared_String::SYLKtoUTF8($rowData);
-
- // explode each row at semicolons while taking into account that literal semicolon (;)
- // is escaped like this (;;)
- $rowData = explode("\t",str_replace('?',';',str_replace(';',"\t",str_replace(';;','?',rtrim($rowData)))));
-
- $dataType = array_shift($rowData);
- if ($dataType == 'C') {
- // Read cell value data
- foreach($rowData as $rowDatum) {
- switch($rowDatum{0}) {
- case 'C' :
- case 'X' :
- $columnIndex = substr($rowDatum,1) - 1;
- break;
- case 'R' :
- case 'Y' :
- $rowIndex = substr($rowDatum,1);
- break;
- }
-
- $worksheetInfo[0]['totalRows'] = max($worksheetInfo[0]['totalRows'], $rowIndex);
- $worksheetInfo[0]['lastColumnIndex'] = max($worksheetInfo[0]['lastColumnIndex'], $columnIndex);
- }
- }
- }
-
- $worksheetInfo[0]['lastColumnLetter'] = PHPExcel_Cell::stringFromColumnIndex($worksheetInfo[0]['lastColumnIndex']);
- $worksheetInfo[0]['totalColumns'] = $worksheetInfo[0]['lastColumnIndex'] + 1;
-
- // Close file
- fclose($fileHandle);
-
- return $worksheetInfo;
- }
-
-
- /**
- * Loads PHPExcel from file
- *
- * @param string $pFilename
- * @return PHPExcel
- * @throws Exception
- */
- public function load($pFilename)
- {
- // Create new PHPExcel
- $objPHPExcel = new PHPExcel();
-
- // Load into this instance
- return $this->loadIntoExisting($pFilename, $objPHPExcel);
- }
-
-
- /**
- * Loads PHPExcel from file into PHPExcel instance
- *
- * @param string $pFilename
- * @param PHPExcel $objPHPExcel
- * @return PHPExcel
- * @throws Exception
- */
- public function loadIntoExisting($pFilename, PHPExcel $objPHPExcel)
- {
- // Check if file exists
- if (!file_exists($pFilename)) {
- throw new Exception("Could not open " . $pFilename . " for reading! File does not exist.");
- }
-
- // Create new PHPExcel
- while ($objPHPExcel->getSheetCount() <= $this->_sheetIndex) {
- $objPHPExcel->createSheet();
- }
- $objPHPExcel->setActiveSheetIndex( $this->_sheetIndex );
-
- $fromFormats = array('\-', '\ ');
- $toFormats = array('-', ' ');
-
- // Open file
- $fileHandle = fopen($pFilename, 'r');
- if ($fileHandle === false) {
- throw new Exception("Could not open file $pFilename for reading.");
- }
-
- // Loop through file
- $rowData = array();
- $column = $row = '';
-
- // loop through one row (line) at a time in the file
- while (($rowData = fgets($fileHandle)) !== FALSE) {
-
- // convert SYLK encoded $rowData to UTF-8
- $rowData = PHPExcel_Shared_String::SYLKtoUTF8($rowData);
-
- // explode each row at semicolons while taking into account that literal semicolon (;)
- // is escaped like this (;;)
- $rowData = explode("\t",str_replace('¤',';',str_replace(';',"\t",str_replace(';;','¤',rtrim($rowData)))));
-
- $dataType = array_shift($rowData);
- // Read shared styles
- if ($dataType == 'P') {
- $formatArray = array();
- foreach($rowData as $rowDatum) {
- switch($rowDatum{0}) {
- case 'P' : $formatArray['numberformat']['code'] = str_replace($fromFormats,$toFormats,substr($rowDatum,1));
- break;
- case 'E' :
- case 'F' : $formatArray['font']['name'] = substr($rowDatum,1);
- break;
- case 'L' : $formatArray['font']['size'] = substr($rowDatum,1);
- break;
- case 'S' : $styleSettings = substr($rowDatum,1);
- for ($i=0;$i<strlen($styleSettings);++$i) {
- switch ($styleSettings{$i}) {
- case 'I' : $formatArray['font']['italic'] = true;
- break;
- case 'D' : $formatArray['font']['bold'] = true;
- break;
- case 'T' : $formatArray['borders']['top']['style'] = PHPExcel_Style_Border::BORDER_THIN;
- break;
- case 'B' : $formatArray['borders']['bottom']['style'] = PHPExcel_Style_Border::BORDER_THIN;
- break;
- case 'L' : $formatArray['borders']['left']['style'] = PHPExcel_Style_Border::BORDER_THIN;
- break;
- case 'R' : $formatArray['borders']['right']['style'] = PHPExcel_Style_Border::BORDER_THIN;
- break;
- }
- }
- break;
- }
- }
- $this->_formats['P'.$this->_format++] = $formatArray;
- // Read cell value data
- } elseif ($dataType == 'C') {
- $hasCalculatedValue = false;
- $cellData = $cellDataFormula = '';
- foreach($rowData as $rowDatum) {
- switch($rowDatum{0}) {
- case 'C' :
- case 'X' : $column = substr($rowDatum,1);
- break;
- case 'R' :
- case 'Y' : $row = substr($rowDatum,1);
- break;
- case 'K' : $cellData = substr($rowDatum,1);
- break;
- case 'E' : $cellDataFormula = '='.substr($rowDatum,1);
- // Convert R1C1 style references to A1 style references (but only when not quoted)
- $temp = explode('"',$cellDataFormula);
- $key = false;
- foreach($temp as &$value) {
- // Only count/replace in alternate array entries
- if ($key = !$key) {
- preg_match_all('/(R(\[?-?\d*\]?))(C(\[?-?\d*\]?))/',$value, $cellReferences,PREG_SET_ORDER+PREG_OFFSET_CAPTURE);
- // Reverse the matches array, otherwise all our offsets will become incorrect if we modify our way
- // through the formula from left to right. Reversing means that we work right to left.through
- // the formula
- $cellReferences = array_reverse($cellReferences);
- // Loop through each R1C1 style reference in turn, converting it to its A1 style equivalent,
- // then modify the formula to use that new reference
- foreach($cellReferences as $cellReference) {
- $rowReference = $cellReference[2][0];
- // Empty R reference is the current row
- if ($rowReference == '') $rowReference = $row;
- // Bracketed R references are relative to the current row
- if ($rowReference{0} == '[') $rowReference = $row + trim($rowReference,'[]');
- $columnReference = $cellReference[4][0];
- // Empty C reference is the current column
- if ($columnReference == '') $columnReference = $column;
- // Bracketed C references are relative to the current column
- if ($columnReference{0} == '[') $columnReference = $column + trim($columnReference,'[]');
- $A1CellReference = PHPExcel_Cell::stringFromColumnIndex($columnReference-1).$rowReference;
-
- $value = substr_replace($value,$A1CellReference,$cellReference[0][1],strlen($cellReference[0][0]));
- }
- }
- }
- unset($value);
- // Then rebuild the formula string
- $cellDataFormula = implode('"',$temp);
- $hasCalculatedValue = true;
- break;
- }
- }
- $columnLetter = PHPExcel_Cell::stringFromColumnIndex($column-1);
- $cellData = PHPExcel_Calculation::_unwrapResult($cellData);
-
- // Set cell value
- $objPHPExcel->getActiveSheet()->getCell($columnLetter.$row)->setValue(($hasCalculatedValue) ? $cellDataFormula : $cellData);
- if ($hasCalculatedValue) {
- $cellData = PHPExcel_Calculation::_unwrapResult($cellData);
- $objPHPExcel->getActiveSheet()->getCell($columnLetter.$row)->setCalculatedValue($cellData);
- }
- // Read cell formatting
- } elseif ($dataType == 'F') {
- $formatStyle = $columnWidth = $styleSettings = '';
- $styleData = array();
- foreach($rowData as $rowDatum) {
- switch($rowDatum{0}) {
- case 'C' :
- case 'X' : $column = substr($rowDatum,1);
- break;
- case 'R' :
- case 'Y' : $row = substr($rowDatum,1);
- break;
- case 'P' : $formatStyle = $rowDatum;
- break;
- case 'W' : list($startCol,$endCol,$columnWidth) = explode(' ',substr($rowDatum,1));
- break;
- case 'S' : $styleSettings = substr($rowDatum,1);
- for ($i=0;$i<strlen($styleSettings);++$i) {
- switch ($styleSettings{$i}) {
- case 'I' : $styleData['font']['italic'] = true;
- break;
- case 'D' : $styleData['font']['bold'] = true;
- break;
- case 'T' : $styleData['borders']['top']['style'] = PHPExcel_Style_Border::BORDER_THIN;
- break;
- case 'B' : $styleData['borders']['bottom']['style'] = PHPExcel_Style_Border::BORDER_THIN;
- break;
- case 'L' : $styleData['borders']['left']['style'] = PHPExcel_Style_Border::BORDER_THIN;
- break;
- case 'R' : $styleData['borders']['right']['style'] = PHPExcel_Style_Border::BORDER_THIN;
- break;
- }
- }
- break;
- }
- }
- if (($formatStyle > '') && ($column > '') && ($row > '')) {
- $columnLetter = PHPExcel_Cell::stringFromColumnIndex($column-1);
- $objPHPExcel->getActiveSheet()->getStyle($columnLetter.$row)->applyFromArray($this->_formats[$formatStyle]);
- }
- if ((!empty($styleData)) && ($column > '') && ($row > '')) {
- $columnLetter = PHPExcel_Cell::stringFromColumnIndex($column-1);
- $objPHPExcel->getActiveSheet()->getStyle($columnLetter.$row)->applyFromArray($styleData);
- }
- if ($columnWidth > '') {
- if ($startCol == $endCol) {
- $startCol = PHPExcel_Cell::stringFromColumnIndex($startCol-1);
- $objPHPExcel->getActiveSheet()->getColumnDimension($startCol)->setWidth($columnWidth);
- } else {
- $startCol = PHPExcel_Cell::stringFromColumnIndex($startCol-1);
- $endCol = PHPExcel_Cell::stringFromColumnIndex($endCol-1);
- $objPHPExcel->getActiveSheet()->getColumnDimension($startCol)->setWidth($columnWidth);
- do {
- $objPHPExcel->getActiveSheet()->getColumnDimension(++$startCol)->setWidth($columnWidth);
- } while ($startCol != $endCol);
- }
- }
- } else {
- foreach($rowData as $rowDatum) {
- switch($rowDatum{0}) {
- case 'C' :
- case 'X' : $column = substr($rowDatum,1);
- break;
- case 'R' :
- case 'Y' : $row = substr($rowDatum,1);
- break;
- }
- }
- }
- }
-
- // Close file
- fclose($fileHandle);
-
- // Return
- return $objPHPExcel;
- }
-
-
- /**
- * Get sheet index
- *
- * @return int
- */
- public function getSheetIndex() {
- return $this->_sheetIndex;
- }
-
-
- /**
- * Set sheet index
- *
- * @param int $pValue Sheet index
- * @return PHPExcel_Reader_SYLK
- */
- public function setSheetIndex($pValue = 0) {
- $this->_sheetIndex = $pValue;
- return $this;
- }
-
-}
diff --git a/admin/survey/excel/PHPExcel/ReferenceHelper.php b/admin/survey/excel/PHPExcel/ReferenceHelper.php
deleted file mode 100644
index 28b6318..0000000
--- a/admin/survey/excel/PHPExcel/ReferenceHelper.php
+++ /dev/null
@@ -1,685 +0,0 @@
-<?php
-/**
- * PHPExcel
- *
- * Copyright (c) 2006 - 2012 PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-
-/**
- * PHPExcel_ReferenceHelper (Singleton)
- *
- * @category PHPExcel
- * @package PHPExcel
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- */
-class PHPExcel_ReferenceHelper
-{
- /** Constants */
- /** Regular Expressions */
- const REFHELPER_REGEXP_CELLREF = '((\w*|\'[^!]*\')!)?(?<![:a-z\$])(\$?[a-z]{1,3}\$?\d+)(?=[^:!\d\'])';
- const REFHELPER_REGEXP_CELLRANGE = '((\w*|\'[^!]*\')!)?(\$?[a-z]{1,3}\$?\d+):(\$?[a-z]{1,3}\$?\d+)';
- const REFHELPER_REGEXP_ROWRANGE = '((\w*|\'[^!]*\')!)?(\$?\d+):(\$?\d+)';
- const REFHELPER_REGEXP_COLRANGE = '((\w*|\'[^!]*\')!)?(\$?[a-z]{1,3}):(\$?[a-z]{1,3})';
-
- /**
- * Instance of this class
- *
- * @var PHPExcel_ReferenceHelper
- */
- private static $_instance;
-
- /**
- * Get an instance of this class
- *
- * @return PHPExcel_ReferenceHelper
- */
- public static function getInstance() {
- if (!isset(self::$_instance) || (self::$_instance === NULL)) {
- self::$_instance = new PHPExcel_ReferenceHelper();
- }
-
- return self::$_instance;
- }
-
- /**
- * Create a new PHPExcel_ReferenceHelper
- */
- protected function __construct() {
- }
-
- /**
- * Insert a new column, updating all possible related data
- *
- * @param int $pBefore Insert before this one
- * @param int $pNumCols Number of columns to insert
- * @param int $pNumRows Number of rows to insert
- * @throws Exception
- */
- public function insertNewBefore($pBefore = 'A1', $pNumCols = 0, $pNumRows = 0, PHPExcel_Worksheet $pSheet = null) {
- $aCellCollection = $pSheet->getCellCollection();
-
- // Get coordinates of $pBefore
- $beforeColumn = 'A';
- $beforeRow = 1;
- list($beforeColumn, $beforeRow) = PHPExcel_Cell::coordinateFromString( $pBefore );
-
-
- // Clear cells if we are removing columns or rows
- $highestColumn = $pSheet->getHighestColumn();
- $highestRow = $pSheet->getHighestRow();
-
- // 1. Clear column strips if we are removing columns
- if ($pNumCols < 0 && PHPExcel_Cell::columnIndexFromString($beforeColumn) - 2 + $pNumCols > 0) {
- for ($i = 1; $i <= $highestRow - 1; ++$i) {
- for ($j = PHPExcel_Cell::columnIndexFromString($beforeColumn) - 1 + $pNumCols; $j <= PHPExcel_Cell::columnIndexFromString($beforeColumn) - 2; ++$j) {
- $coordinate = PHPExcel_Cell::stringFromColumnIndex($j) . $i;
- $pSheet->removeConditionalStyles($coordinate);
- if ($pSheet->cellExists($coordinate)) {
- $pSheet->getCell($coordinate)->setValueExplicit('', PHPExcel_Cell_DataType::TYPE_NULL);
- $pSheet->getCell($coordinate)->setXfIndex(0);
- }
- }
- }
- }
-
- // 2. Clear row strips if we are removing rows
- if ($pNumRows < 0 && $beforeRow - 1 + $pNumRows > 0) {
- for ($i = PHPExcel_Cell::columnIndexFromString($beforeColumn) - 1; $i <= PHPExcel_Cell::columnIndexFromString($highestColumn) - 1; ++$i) {
- for ($j = $beforeRow + $pNumRows; $j <= $beforeRow - 1; ++$j) {
- $coordinate = PHPExcel_Cell::stringFromColumnIndex($i) . $j;
- $pSheet->removeConditionalStyles($coordinate);
- if ($pSheet->cellExists($coordinate)) {
- $pSheet->getCell($coordinate)->setValueExplicit('', PHPExcel_Cell_DataType::TYPE_NULL);
- $pSheet->getCell($coordinate)->setXfIndex(0);
- }
- }
- }
- }
-
-
- // Loop through cells, bottom-up, and change cell coordinates
- while (($cellID = ($pNumCols < 0 || $pNumRows < 0) ? array_shift($aCellCollection) : array_pop($aCellCollection))) {
- $cell = $pSheet->getCell($cellID);
-
- // New coordinates
- $newCoordinates = PHPExcel_Cell::stringFromColumnIndex( PHPExcel_Cell::columnIndexFromString($cell->getColumn()) - 1 + $pNumCols ) . ($cell->getRow() + $pNumRows);
-
- // Should the cell be updated? Move value and cellXf index from one cell to another.
- if ((PHPExcel_Cell::columnIndexFromString( $cell->getColumn() ) >= PHPExcel_Cell::columnIndexFromString($beforeColumn)) &&
- ($cell->getRow() >= $beforeRow)) {
-
- // Update cell styles
- $pSheet->getCell($newCoordinates)->setXfIndex($cell->getXfIndex());
- $cell->setXfIndex(0);
-
- // Insert this cell at its new location
- if ($cell->getDataType() == PHPExcel_Cell_DataType::TYPE_FORMULA) {
- // Formula should be adjusted
- $pSheet->getCell($newCoordinates)
- ->setValue($this->updateFormulaReferences($cell->getValue(),
- $pBefore, $pNumCols, $pNumRows, $pSheet->getTitle()));
- } else {
- // Formula should not be adjusted
- $pSheet->getCell($newCoordinates)->setValue($cell->getValue());
- }
-
- // Clear the original cell
- $pSheet->getCell($cell->getCoordinate())->setValue('');
-
- } else {
- /* We don't need to update styles for rows/columns before our insertion position,
- but we do still need to adjust any formulae in those cells */
- if ($cell->getDataType() == PHPExcel_Cell_DataType::TYPE_FORMULA) {
- // Formula should be adjusted
- $cell->setValue($this->updateFormulaReferences($cell->getValue(),
- $pBefore, $pNumCols, $pNumRows, $pSheet->getTitle()));
- }
-
- }
- }
-
-
- // Duplicate styles for the newly inserted cells
- $highestColumn = $pSheet->getHighestColumn();
- $highestRow = $pSheet->getHighestRow();
-
- if ($pNumCols > 0 && PHPExcel_Cell::columnIndexFromString($beforeColumn) - 2 > 0) {
- for ($i = $beforeRow; $i <= $highestRow - 1; ++$i) {
-
- // Style
- $coordinate = PHPExcel_Cell::stringFromColumnIndex( PHPExcel_Cell::columnIndexFromString($beforeColumn) - 2 ) . $i;
- if ($pSheet->cellExists($coordinate)) {
- $xfIndex = $pSheet->getCell($coordinate)->getXfIndex();
- $conditionalStyles = $pSheet->conditionalStylesExists($coordinate) ?
- $pSheet->getConditionalStyles($coordinate) : false;
- for ($j = PHPExcel_Cell::columnIndexFromString($beforeColumn) - 1; $j <= PHPExcel_Cell::columnIndexFromString($beforeColumn) - 2 + $pNumCols; ++$j) {
- $pSheet->getCellByColumnAndRow($j, $i)->setXfIndex($xfIndex);
- if ($conditionalStyles) {
- $cloned = array();
- foreach ($conditionalStyles as $conditionalStyle) {
- $cloned[] = clone $conditionalStyle;
- }
- $pSheet->setConditionalStyles(PHPExcel_Cell::stringFromColumnIndex($j) . $i, $cloned);
- }
- }
- }
-
- }
- }
-
- if ($pNumRows > 0 && $beforeRow - 1 > 0) {
- for ($i = PHPExcel_Cell::columnIndexFromString($beforeColumn) - 1; $i <= PHPExcel_Cell::columnIndexFromString($highestColumn) - 1; ++$i) {
-
- // Style
- $coordinate = PHPExcel_Cell::stringFromColumnIndex($i) . ($beforeRow - 1);
- if ($pSheet->cellExists($coordinate)) {
- $xfIndex = $pSheet->getCell($coordinate)->getXfIndex();
- $conditionalStyles = $pSheet->conditionalStylesExists($coordinate) ?
- $pSheet->getConditionalStyles($coordinate) : false;
- for ($j = $beforeRow; $j <= $beforeRow - 1 + $pNumRows; ++$j) {
- $pSheet->getCell(PHPExcel_Cell::stringFromColumnIndex($i) . $j)->setXfIndex($xfIndex);
- if ($conditionalStyles) {
- $cloned = array();
- foreach ($conditionalStyles as $conditionalStyle) {
- $cloned[] = clone $conditionalStyle;
- }
- $pSheet->setConditionalStyles(PHPExcel_Cell::stringFromColumnIndex($i) . $j, $cloned);
- }
- }
- }
- }
- }
-
-
- // Update worksheet: column dimensions
- $aColumnDimensions = array_reverse($pSheet->getColumnDimensions(), true);
- if (!empty($aColumnDimensions)) {
- foreach ($aColumnDimensions as $objColumnDimension) {
- $newReference = $this->updateCellReference($objColumnDimension->getColumnIndex() . '1', $pBefore, $pNumCols, $pNumRows);
- list($newReference) = PHPExcel_Cell::coordinateFromString($newReference);
- if ($objColumnDimension->getColumnIndex() != $newReference) {
- $objColumnDimension->setColumnIndex($newReference);
- }
- }
- $pSheet->refreshColumnDimensions();
- }
-
-
- // Update worksheet: row dimensions
- $aRowDimensions = array_reverse($pSheet->getRowDimensions(), true);
- if (!empty($aRowDimensions)) {
- foreach ($aRowDimensions as $objRowDimension) {
- $newReference = $this->updateCellReference('A' . $objRowDimension->getRowIndex(), $pBefore, $pNumCols, $pNumRows);
- list(, $newReference) = PHPExcel_Cell::coordinateFromString($newReference);
- if ($objRowDimension->getRowIndex() != $newReference) {
- $objRowDimension->setRowIndex($newReference);
- }
- }
- $pSheet->refreshRowDimensions();
-
- $copyDimension = $pSheet->getRowDimension($beforeRow - 1);
- for ($i = $beforeRow; $i <= $beforeRow - 1 + $pNumRows; ++$i) {
- $newDimension = $pSheet->getRowDimension($i);
- $newDimension->setRowHeight($copyDimension->getRowHeight());
- $newDimension->setVisible($copyDimension->getVisible());
- $newDimension->setOutlineLevel($copyDimension->getOutlineLevel());
- $newDimension->setCollapsed($copyDimension->getCollapsed());
- }
- }
-
-
- // Update worksheet: breaks
- $aBreaks = array_reverse($pSheet->getBreaks(), true);
- foreach ($aBreaks as $key => $value) {
- $newReference = $this->updateCellReference($key, $pBefore, $pNumCols, $pNumRows);
- if ($key != $newReference) {
- $pSheet->setBreak( $newReference, $value );
- $pSheet->setBreak( $key, PHPExcel_Worksheet::BREAK_NONE );
- }
- }
-
- // Update worksheet: comments
- $aComments = $pSheet->getComments();
- $aNewComments = array(); // the new array of all comments
- foreach ($aComments as $key => &$value) {
- $newReference = $this->updateCellReference($key, $pBefore, $pNumCols, $pNumRows);
- $aNewComments[$newReference] = $value;
- }
- $pSheet->setComments($aNewComments); // replace the comments array
-
- // Update worksheet: hyperlinks
- $aHyperlinkCollection = array_reverse($pSheet->getHyperlinkCollection(), true);
- foreach ($aHyperlinkCollection as $key => $value) {
- $newReference = $this->updateCellReference($key, $pBefore, $pNumCols, $pNumRows);
- if ($key != $newReference) {
- $pSheet->setHyperlink( $newReference, $value );
- $pSheet->setHyperlink( $key, null );
- }
- }
-
-
- // Update worksheet: data validations
- $aDataValidationCollection = array_reverse($pSheet->getDataValidationCollection(), true);
- foreach ($aDataValidationCollection as $key => $value) {
- $newReference = $this->updateCellReference($key, $pBefore, $pNumCols, $pNumRows);
- if ($key != $newReference) {
- $pSheet->setDataValidation( $newReference, $value );
- $pSheet->setDataValidation( $key, null );
- }
- }
-
-
- // Update worksheet: merge cells
- $aMergeCells = $pSheet->getMergeCells();
- $aNewMergeCells = array(); // the new array of all merge cells
- foreach ($aMergeCells as $key => &$value) {
- $newReference = $this->updateCellReference($key, $pBefore, $pNumCols, $pNumRows);
- $aNewMergeCells[$newReference] = $newReference;
- }
- $pSheet->setMergeCells($aNewMergeCells); // replace the merge cells array
-
-
- // Update worksheet: protected cells
- $aProtectedCells = array_reverse($pSheet->getProtectedCells(), true);
- foreach ($aProtectedCells as $key => $value) {
- $newReference = $this->updateCellReference($key, $pBefore, $pNumCols, $pNumRows);
- if ($key != $newReference) {
- $pSheet->protectCells( $newReference, $value, true );
- $pSheet->unprotectCells( $key );
- }
- }
-
-
- // Update worksheet: autofilter
- $autoFilter = $pSheet->getAutoFilter();
- $autoFilterRange = $autoFilter->getRange();
- if (!empty($autoFilterRange)) {
- if ($pNumCols != 0) {
- $autoFilterColumns = array_keys($autoFilter->getColumns());
- if (count($autoFilterColumns) > 0) {
- list($column,$row) = sscanf($pBefore,'%[A-Z]%d');
- $columnIndex = PHPExcel_Cell::columnIndexFromString($column);
- list($rangeStart,$rangeEnd) = PHPExcel_Cell::rangeBoundaries($autoFilterRange);
- if ($columnIndex <= $rangeEnd[0]) {
- if ($pNumCols < 0) {
- // If we're actually deleting any columns that fall within the autofilter range,
- // then we delete any rules for those columns
- $deleteColumn = $columnIndex + $pNumCols - 1;
- $deleteCount = abs($pNumCols);
- for ($i = 1; $i <= $deleteCount; ++$i) {
- if (in_array(PHPExcel_Cell::stringFromColumnIndex($deleteColumn),$autoFilterColumns)) {
- $autoFilter->clearColumn(PHPExcel_Cell::stringFromColumnIndex($deleteColumn));
- }
- ++$deleteColumn;
- }
- }
- $startCol = ($columnIndex > $rangeStart[0]) ? $columnIndex : $rangeStart[0];
-
- // Shuffle columns in autofilter range
- if ($pNumCols > 0) {
- // For insert, we shuffle from end to beginning to avoid overwriting
- $startColID = PHPExcel_Cell::stringFromColumnIndex($startCol-1);
- $toColID = PHPExcel_Cell::stringFromColumnIndex($startCol+$pNumCols-1);
- $endColID = PHPExcel_Cell::stringFromColumnIndex($rangeEnd[0]);
-
- $startColRef = $startCol;
- $endColRef = $rangeEnd[0];
- $toColRef = $rangeEnd[0]+$pNumCols;
-
- do {
- $autoFilter->shiftColumn(PHPExcel_Cell::stringFromColumnIndex($endColRef-1),PHPExcel_Cell::stringFromColumnIndex($toColRef-1));
- --$endColRef;
- --$toColRef;
- } while ($startColRef <= $endColRef);
- } else {
- // For delete, we shuffle from beginning to end to avoid overwriting
- $startColID = PHPExcel_Cell::stringFromColumnIndex($startCol-1);
- $toColID = PHPExcel_Cell::stringFromColumnIndex($startCol+$pNumCols-1);
- $endColID = PHPExcel_Cell::stringFromColumnIndex($rangeEnd[0]);
- do {
- $autoFilter->shiftColumn($startColID,$toColID);
- ++$startColID;
- ++$toColID;
- } while ($startColID != $endColID);
- }
- }
- }
- }
- $pSheet->setAutoFilter( $this->updateCellReference($autoFilterRange, $pBefore, $pNumCols, $pNumRows) );
- }
-
-
- // Update worksheet: freeze pane
- if ($pSheet->getFreezePane() != '') {
- $pSheet->freezePane( $this->updateCellReference($pSheet->getFreezePane(), $pBefore, $pNumCols, $pNumRows) );
- }
-
-
- // Page setup
- if ($pSheet->getPageSetup()->isPrintAreaSet()) {
- $pSheet->getPageSetup()->setPrintArea( $this->updateCellReference($pSheet->getPageSetup()->getPrintArea(), $pBefore, $pNumCols, $pNumRows) );
- }
-
-
- // Update worksheet: drawings
- $aDrawings = $pSheet->getDrawingCollection();
- foreach ($aDrawings as $objDrawing) {
- $newReference = $this->updateCellReference($objDrawing->getCoordinates(), $pBefore, $pNumCols, $pNumRows);
- if ($objDrawing->getCoordinates() != $newReference) {
- $objDrawing->setCoordinates($newReference);
- }
- }
-
-
- // Update workbook: named ranges
- if (count($pSheet->getParent()->getNamedRanges()) > 0) {
- foreach ($pSheet->getParent()->getNamedRanges() as $namedRange) {
- if ($namedRange->getWorksheet()->getHashCode() == $pSheet->getHashCode()) {
- $namedRange->setRange(
- $this->updateCellReference($namedRange->getRange(), $pBefore, $pNumCols, $pNumRows)
- );
- }
- }
- }
-
- // Garbage collect
- $pSheet->garbageCollect();
- }
-
- /**
- * Update references within formulas
- *
- * @param string $pFormula Formula to update
- * @param int $pBefore Insert before this one
- * @param int $pNumCols Number of columns to insert
- * @param int $pNumRows Number of rows to insert
- * @return string Updated formula
- * @throws Exception
- */
- public function updateFormulaReferences($pFormula = '', $pBefore = 'A1', $pNumCols = 0, $pNumRows = 0, $sheetName = '') {
- // Update cell references in the formula
- $formulaBlocks = explode('"',$pFormula);
- $i = false;
- foreach($formulaBlocks as &$formulaBlock) {
- // Ignore blocks that were enclosed in quotes (alternating entries in the $formulaBlocks array after the explode)
- if ($i = !$i) {
- $adjustCount = 0;
- $newCellTokens = $cellTokens = array();
- // Search for row ranges (e.g. 'Sheet1'!3:5 or 3:5) with or without $ absolutes (e.g. $3:5)
- $matchCount = preg_match_all('/'.self::REFHELPER_REGEXP_ROWRANGE.'/i', ' '.$formulaBlock.' ', $matches, PREG_SET_ORDER);
- if ($matchCount > 0) {
- foreach($matches as $match) {
- $fromString = ($match[2] > '') ? $match[2].'!' : '';
- $fromString .= $match[3].':'.$match[4];
- $modified3 = substr($this->updateCellReference('$A'.$match[3],$pBefore,$pNumCols,$pNumRows),2);
- $modified4 = substr($this->updateCellReference('$A'.$match[4],$pBefore,$pNumCols,$pNumRows),2);
-
- if ($match[3].':'.$match[4] !== $modified3.':'.$modified4) {
- if (($match[2] == '') || (trim($match[2],"'") == $sheetName)) {
- $toString = ($match[2] > '') ? $match[2].'!' : '';
- $toString .= $modified3.':'.$modified4;
- // Max worksheet size is 1,048,576 rows by 16,384 columns in Excel 2007, so our adjustments need to be at least one digit more
- $column = 100000;
- $row = 10000000+trim($match[3],'$');
- $cellIndex = $column.$row;
-
- $newCellTokens[$cellIndex] = preg_quote($toString);
- $cellTokens[$cellIndex] = '/(?<!\d)'.preg_quote($fromString).'(?!\d)/i';
- ++$adjustCount;
- }
- }
- }
- }
- // Search for column ranges (e.g. 'Sheet1'!C:E or C:E) with or without $ absolutes (e.g. $C:E)
- $matchCount = preg_match_all('/'.self::REFHELPER_REGEXP_COLRANGE.'/i', ' '.$formulaBlock.' ', $matches, PREG_SET_ORDER);
- if ($matchCount > 0) {
- foreach($matches as $match) {
- $fromString = ($match[2] > '') ? $match[2].'!' : '';
- $fromString .= $match[3].':'.$match[4];
- $modified3 = substr($this->updateCellReference($match[3].'$1',$pBefore,$pNumCols,$pNumRows),0,-2);
- $modified4 = substr($this->updateCellReference($match[4].'$1',$pBefore,$pNumCols,$pNumRows),0,-2);
-
- if ($match[3].':'.$match[4] !== $modified3.':'.$modified4) {
- if (($match[2] == '') || (trim($match[2],"'") == $sheetName)) {
- $toString = ($match[2] > '') ? $match[2].'!' : '';
- $toString .= $modified3.':'.$modified4;
- // Max worksheet size is 1,048,576 rows by 16,384 columns in Excel 2007, so our adjustments need to be at least one digit more
- $column = PHPExcel_Cell::columnIndexFromString(trim($match[3],'$')) + 100000;
- $row = 10000000;
- $cellIndex = $column.$row;
-
- $newCellTokens[$cellIndex] = preg_quote($toString);
- $cellTokens[$cellIndex] = '/(?<![A-Z])'.preg_quote($fromString).'(?![A-Z])/i';
- ++$adjustCount;
- }
- }
- }
- }
- // Search for cell ranges (e.g. 'Sheet1'!A3:C5 or A3:C5) with or without $ absolutes (e.g. $A1:C$5)
- $matchCount = preg_match_all('/'.self::REFHELPER_REGEXP_CELLRANGE.'/i', ' '.$formulaBlock.' ', $matches, PREG_SET_ORDER);
- if ($matchCount > 0) {
- foreach($matches as $match) {
- $fromString = ($match[2] > '') ? $match[2].'!' : '';
- $fromString .= $match[3].':'.$match[4];
- $modified3 = $this->updateCellReference($match[3],$pBefore,$pNumCols,$pNumRows);
- $modified4 = $this->updateCellReference($match[4],$pBefore,$pNumCols,$pNumRows);
-
- if ($match[3].$match[4] !== $modified3.$modified4) {
- if (($match[2] == '') || (trim($match[2],"'") == $sheetName)) {
- $toString = ($match[2] > '') ? $match[2].'!' : '';
- $toString .= $modified3.':'.$modified4;
- list($column,$row) = PHPExcel_Cell::coordinateFromString($match[3]);
- // Max worksheet size is 1,048,576 rows by 16,384 columns in Excel 2007, so our adjustments need to be at least one digit more
- $column = PHPExcel_Cell::columnIndexFromString(trim($column,'$')) + 100000;
- $row = trim($row,'$') + 10000000;
- $cellIndex = $column.$row;
-
- $newCellTokens[$cellIndex] = preg_quote($toString);
- $cellTokens[$cellIndex] = '/(?<![A-Z])'.preg_quote($fromString).'(?!\d)/i';
- ++$adjustCount;
- }
- }
- }
- }
- // Search for cell references (e.g. 'Sheet1'!A3 or C5) with or without $ absolutes (e.g. $A1 or C$5)
- $matchCount = preg_match_all('/'.self::REFHELPER_REGEXP_CELLREF.'/i', ' '.$formulaBlock.' ', $matches, PREG_SET_ORDER);
- if ($matchCount > 0) {
- foreach($matches as $match) {
- $fromString = ($match[2] > '') ? $match[2].'!' : '';
- $fromString .= $match[3];
- $modified3 = $this->updateCellReference($match[3],$pBefore,$pNumCols,$pNumRows);
-
- if ($match[3] !== $modified3) {
- if (($match[2] == '') || (trim($match[2],"'") == $sheetName)) {
- $toString = ($match[2] > '') ? $match[2].'!' : '';
- $toString .= $modified3;
- list($column,$row) = PHPExcel_Cell::coordinateFromString($match[3]);
- // Max worksheet size is 1,048,576 rows by 16,384 columns in Excel 2007, so our adjustments need to be at least one digit more
- $column = PHPExcel_Cell::columnIndexFromString(trim($column,'$')) + 100000;
- $row = trim($row,'$') + 10000000;
- $cellIndex = $column.$row;
-
- $newCellTokens[$cellIndex] = preg_quote($toString);
- $cellTokens[$cellIndex] = '/(?<![A-Z])'.preg_quote($fromString).'(?!\d)/i';
- ++$adjustCount;
- }
- }
- }
- }
- if ($adjustCount > 0) {
- krsort($cellTokens);
- krsort($newCellTokens);
- // Update cell references in the formula
- $formulaBlock = str_replace('\\','',preg_replace($cellTokens,$newCellTokens,$formulaBlock));
- }
- }
- }
- unset($formulaBlock);
-
- // Then rebuild the formula string
- return implode('"',$formulaBlocks);
- }
-
- /**
- * Update cell reference
- *
- * @param string $pCellRange Cell range
- * @param int $pBefore Insert before this one
- * @param int $pNumCols Number of columns to increment
- * @param int $pNumRows Number of rows to increment
- * @return string Updated cell range
- * @throws Exception
- */
- public function updateCellReference($pCellRange = 'A1', $pBefore = 'A1', $pNumCols = 0, $pNumRows = 0) {
- // Is it in another worksheet? Will not have to update anything.
- if (strpos($pCellRange, "!") !== false) {
- return $pCellRange;
- // Is it a range or a single cell?
- } elseif (strpos($pCellRange, ':') === false && strpos($pCellRange, ',') === false) {
- // Single cell
- return $this->_updateSingleCellReference($pCellRange, $pBefore, $pNumCols, $pNumRows);
- } elseif (strpos($pCellRange, ':') !== false || strpos($pCellRange, ',') !== false) {
- // Range
- return $this->_updateCellRange($pCellRange, $pBefore, $pNumCols, $pNumRows);
- } else {
- // Return original
- return $pCellRange;
- }
- }
-
- /**
- * Update named formulas (i.e. containing worksheet references / named ranges)
- *
- * @param PHPExcel $pPhpExcel Object to update
- * @param string $oldName Old name (name to replace)
- * @param string $newName New name
- */
- public function updateNamedFormulas(PHPExcel $pPhpExcel, $oldName = '', $newName = '') {
- if ($oldName == '') {
- return;
- }
-
- foreach ($pPhpExcel->getWorksheetIterator() as $sheet) {
- foreach ($sheet->getCellCollection(false) as $cellID) {
- $cell = $sheet->getCell($cellID);
- if (($cell !== NULL) && ($cell->getDataType() == PHPExcel_Cell_DataType::TYPE_FORMULA)) {
- $formula = $cell->getValue();
- if (strpos($formula, $oldName) !== false) {
- $formula = str_replace("'" . $oldName . "'!", "'" . $newName . "'!", $formula);
- $formula = str_replace($oldName . "!", $newName . "!", $formula);
- $cell->setValueExplicit($formula, PHPExcel_Cell_DataType::TYPE_FORMULA);
- }
- }
- }
- }
- }
-
- /**
- * Update cell range
- *
- * @param string $pCellRange Cell range (e.g. 'B2:D4', 'B:C' or '2:3')
- * @param int $pBefore Insert before this one
- * @param int $pNumCols Number of columns to increment
- * @param int $pNumRows Number of rows to increment
- * @return string Updated cell range
- * @throws Exception
- */
- private function _updateCellRange($pCellRange = 'A1:A1', $pBefore = 'A1', $pNumCols = 0, $pNumRows = 0) {
- if (strpos($pCellRange,':') !== false || strpos($pCellRange, ',') !== false) {
- // Update range
- $range = PHPExcel_Cell::splitRange($pCellRange);
- $ic = count($range);
- for ($i = 0; $i < $ic; ++$i) {
- $jc = count($range[$i]);
- for ($j = 0; $j < $jc; ++$j) {
- if (ctype_alpha($range[$i][$j])) {
- $r = PHPExcel_Cell::coordinateFromString($this->_updateSingleCellReference($range[$i][$j].'1', $pBefore, $pNumCols, $pNumRows));
- $range[$i][$j] = $r[0];
- } elseif(ctype_digit($range[$i][$j])) {
- $r = PHPExcel_Cell::coordinateFromString($this->_updateSingleCellReference('A'.$range[$i][$j], $pBefore, $pNumCols, $pNumRows));
- $range[$i][$j] = $r[1];
- } else {
- $range[$i][$j] = $this->_updateSingleCellReference($range[$i][$j], $pBefore, $pNumCols, $pNumRows);
- }
- }
- }
-
- // Recreate range string
- return PHPExcel_Cell::buildRange($range);
- } else {
- throw new Exception("Only cell ranges may be passed to this method.");
- }
- }
-
- /**
- * Update single cell reference
- *
- * @param string $pCellReference Single cell reference
- * @param int $pBefore Insert before this one
- * @param int $pNumCols Number of columns to increment
- * @param int $pNumRows Number of rows to increment
- * @return string Updated cell reference
- * @throws Exception
- */
- private function _updateSingleCellReference($pCellReference = 'A1', $pBefore = 'A1', $pNumCols = 0, $pNumRows = 0) {
- if (strpos($pCellReference, ':') === false && strpos($pCellReference, ',') === false) {
- // Get coordinates of $pBefore
- list($beforeColumn, $beforeRow) = PHPExcel_Cell::coordinateFromString( $pBefore );
-
- // Get coordinates of $pCellReference
- list($newColumn, $newRow) = PHPExcel_Cell::coordinateFromString( $pCellReference );
-
- // Verify which parts should be updated
- $updateColumn = (($newColumn{0} != '$') && ($beforeColumn{0} != '$') &&
- PHPExcel_Cell::columnIndexFromString($newColumn) >= PHPExcel_Cell::columnIndexFromString($beforeColumn));
-
- $updateRow = (($newRow{0} != '$') && ($beforeRow{0} != '$') &&
- $newRow >= $beforeRow);
-
- // Create new column reference
- if ($updateColumn) {
- $newColumn = PHPExcel_Cell::stringFromColumnIndex( PHPExcel_Cell::columnIndexFromString($newColumn) - 1 + $pNumCols );
- }
-
- // Create new row reference
- if ($updateRow) {
- $newRow = $newRow + $pNumRows;
- }
-
- // Return new reference
- return $newColumn . $newRow;
- } else {
- throw new Exception("Only single cell references may be passed to this method.");
- }
- }
-
- /**
- * __clone implementation. Cloning should not be allowed in a Singleton!
- *
- * @throws Exception
- */
- public final function __clone() {
- throw new Exception("Cloning a Singleton is not allowed!");
- }
-}
diff --git a/admin/survey/excel/PHPExcel/RichText.php b/admin/survey/excel/PHPExcel/RichText.php
deleted file mode 100644
index e8f5310..0000000
--- a/admin/survey/excel/PHPExcel/RichText.php
+++ /dev/null
@@ -1,196 +0,0 @@
-<?php
-/**
- * PHPExcel
- *
- * Copyright (c) 2006 - 2012 PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel_RichText
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-
-/**
- * PHPExcel_RichText
- *
- * @category PHPExcel
- * @package PHPExcel_RichText
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- */
-class PHPExcel_RichText implements PHPExcel_IComparable
-{
- /**
- * Rich text elements
- *
- * @var PHPExcel_RichText_ITextElement[]
- */
- private $_richTextElements;
-
- /**
- * Create a new PHPExcel_RichText instance
- *
- * @param PHPExcel_Cell $pParent
- * @throws Exception
- */
- public function __construct(PHPExcel_Cell $pCell = null)
- {
- // Initialise variables
- $this->_richTextElements = array();
-
- // Rich-Text string attached to cell?
- if ($pCell !== NULL) {
- // Add cell text and style
- if ($pCell->getValue() != "") {
- $objRun = new PHPExcel_RichText_Run($pCell->getValue());
- $objRun->setFont(clone $pCell->getParent()->getStyle($pCell->getCoordinate())->getFont());
- $this->addText($objRun);
- }
-
- // Set parent value
- $pCell->setValueExplicit($this, PHPExcel_Cell_DataType::TYPE_STRING);
- }
- }
-
- /**
- * Add text
- *
- * @param PHPExcel_RichText_ITextElement $pText Rich text element
- * @throws Exception
- * @return PHPExcel_RichText
- */
- public function addText(PHPExcel_RichText_ITextElement $pText = null)
- {
- $this->_richTextElements[] = $pText;
- return $this;
- }
-
- /**
- * Create text
- *
- * @param string $pText Text
- * @return PHPExcel_RichText_TextElement
- * @throws Exception
- */
- public function createText($pText = '')
- {
- $objText = new PHPExcel_RichText_TextElement($pText);
- $this->addText($objText);
- return $objText;
- }
-
- /**
- * Create text run
- *
- * @param string $pText Text
- * @return PHPExcel_RichText_Run
- * @throws Exception
- */
- public function createTextRun($pText = '')
- {
- $objText = new PHPExcel_RichText_Run($pText);
- $this->addText($objText);
- return $objText;
- }
-
- /**
- * Get plain text
- *
- * @return string
- */
- public function getPlainText()
- {
- // Return value
- $returnValue = '';
-
- // Loop through all PHPExcel_RichText_ITextElement
- foreach ($this->_richTextElements as $text) {
- $returnValue .= $text->getText();
- }
-
- // Return
- return $returnValue;
- }
-
- /**
- * Convert to string
- *
- * @return string
- */
- public function __toString() {
- return $this->getPlainText();
- }
-
- /**
- * Get Rich Text elements
- *
- * @return PHPExcel_RichText_ITextElement[]
- */
- public function getRichTextElements()
- {
- return $this->_richTextElements;
- }
-
- /**
- * Set Rich Text elements
- *
- * @param PHPExcel_RichText_ITextElement[] $pElements Array of elements
- * @throws Exception
- * @return PHPExcel_RichText
- */
- public function setRichTextElements($pElements = null)
- {
- if (is_array($pElements)) {
- $this->_richTextElements = $pElements;
- } else {
- throw new Exception("Invalid PHPExcel_RichText_ITextElement[] array passed.");
- }
- return $this;
- }
-
- /**
- * Get hash code
- *
- * @return string Hash code
- */
- public function getHashCode() {
- $hashElements = '';
- foreach ($this->_richTextElements as $element) {
- $hashElements .= $element->getHashCode();
- }
-
- return md5(
- $hashElements
- . __CLASS__
- );
- }
-
- /**
- * Implement PHP __clone to create a deep clone, not just a shallow copy.
- */
- public function __clone() {
- $vars = get_object_vars($this);
- foreach ($vars as $key => $value) {
- if (is_object($value)) {
- $this->$key = clone $value;
- } else {
- $this->$key = $value;
- }
- }
- }
-}
diff --git a/admin/survey/excel/PHPExcel/RichText/ITextElement.php b/admin/survey/excel/PHPExcel/RichText/ITextElement.php
deleted file mode 100644
index 57fa43c..0000000
--- a/admin/survey/excel/PHPExcel/RichText/ITextElement.php
+++ /dev/null
@@ -1,64 +0,0 @@
-<?php
-/**
- * PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel_RichText
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-
-/**
- * PHPExcel_RichText_ITextElement
- *
- * @category PHPExcel
- * @package PHPExcel_RichText
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- */
-interface PHPExcel_RichText_ITextElement
-{
- /**
- * Get text
- *
- * @return string Text
- */
- public function getText();
-
- /**
- * Set text
- *
- * @param $pText string Text
- * @return PHPExcel_RichText_ITextElement
- */
- public function setText($pText = '');
-
- /**
- * Get font
- *
- * @return PHPExcel_Style_Font
- */
- public function getFont();
-
- /**
- * Get hash code
- *
- * @return string Hash code
- */
- public function getHashCode();
-}
diff --git a/admin/survey/excel/PHPExcel/RichText/Run.php b/admin/survey/excel/PHPExcel/RichText/Run.php
deleted file mode 100644
index 1e0442e..0000000
--- a/admin/survey/excel/PHPExcel/RichText/Run.php
+++ /dev/null
@@ -1,102 +0,0 @@
-<?php
-/**
- * PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel_RichText
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-
-/**
- * PHPExcel_RichText_Run
- *
- * @category PHPExcel
- * @package PHPExcel_RichText
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- */
-class PHPExcel_RichText_Run extends PHPExcel_RichText_TextElement implements PHPExcel_RichText_ITextElement
-{
- /**
- * Font
- *
- * @var PHPExcel_Style_Font
- */
- private $_font;
-
- /**
- * Create a new PHPExcel_RichText_Run instance
- *
- * @param string $pText Text
- */
- public function __construct($pText = '')
- {
- // Initialise variables
- $this->setText($pText);
- $this->_font = new PHPExcel_Style_Font();
- }
-
- /**
- * Get font
- *
- * @return PHPExcel_Style_Font
- */
- public function getFont() {
- return $this->_font;
- }
-
- /**
- * Set font
- *
- * @param PHPExcel_Style_Font $pFont Font
- * @throws Exception
- * @return PHPExcel_RichText_ITextElement
- */
- public function setFont(PHPExcel_Style_Font $pFont = null) {
- $this->_font = $pFont;
- return $this;
- }
-
- /**
- * Get hash code
- *
- * @return string Hash code
- */
- public function getHashCode() {
- return md5(
- $this->getText()
- . $this->_font->getHashCode()
- . __CLASS__
- );
- }
-
- /**
- * Implement PHP __clone to create a deep clone, not just a shallow copy.
- */
- public function __clone() {
- $vars = get_object_vars($this);
- foreach ($vars as $key => $value) {
- if (is_object($value)) {
- $this->$key = clone $value;
- } else {
- $this->$key = $value;
- }
- }
- }
-}
diff --git a/admin/survey/excel/PHPExcel/RichText/TextElement.php b/admin/survey/excel/PHPExcel/RichText/TextElement.php
deleted file mode 100644
index 0d6e7be..0000000
--- a/admin/survey/excel/PHPExcel/RichText/TextElement.php
+++ /dev/null
@@ -1,108 +0,0 @@
-<?php
-/**
- * PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel_RichText
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-
-/**
- * PHPExcel_RichText_TextElement
- *
- * @category PHPExcel
- * @package PHPExcel_RichText
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- */
-class PHPExcel_RichText_TextElement implements PHPExcel_RichText_ITextElement
-{
- /**
- * Text
- *
- * @var string
- */
- private $_text;
-
- /**
- * Create a new PHPExcel_RichText_TextElement instance
- *
- * @param string $pText Text
- */
- public function __construct($pText = '')
- {
- // Initialise variables
- $this->_text = $pText;
- }
-
- /**
- * Get text
- *
- * @return string Text
- */
- public function getText() {
- return $this->_text;
- }
-
- /**
- * Set text
- *
- * @param $pText string Text
- * @return PHPExcel_RichText_ITextElement
- */
- public function setText($pText = '') {
- $this->_text = $pText;
- return $this;
- }
-
- /**
- * Get font
- *
- * @return PHPExcel_Style_Font
- */
- public function getFont() {
- return null;
- }
-
- /**
- * Get hash code
- *
- * @return string Hash code
- */
- public function getHashCode() {
- return md5(
- $this->_text
- . __CLASS__
- );
- }
-
- /**
- * Implement PHP __clone to create a deep clone, not just a shallow copy.
- */
- public function __clone() {
- $vars = get_object_vars($this);
- foreach ($vars as $key => $value) {
- if (is_object($value)) {
- $this->$key = clone $value;
- } else {
- $this->$key = $value;
- }
- }
- }
-}
diff --git a/admin/survey/excel/PHPExcel/Shared/CodePage.php b/admin/survey/excel/PHPExcel/Shared/CodePage.php
deleted file mode 100644
index 1b99347..0000000
--- a/admin/survey/excel/PHPExcel/Shared/CodePage.php
+++ /dev/null
@@ -1,101 +0,0 @@
-<?php
-/**
- * PHPExcel
- *
- * Copyright (c) 2006 - 2012 PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel_Shared
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-
-/**
- * PHPExcel_Shared_CodePage
- *
- * @category PHPExcel
- * @package PHPExcel_Shared
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- */
-class PHPExcel_Shared_CodePage
-{
- /**
- * Convert Microsoft Code Page Identifier to Code Page Name which iconv
- * and mbstring understands
- *
- * @param int $number Microsoft Code Page Indentifier
- * @return string Code Page Name
- * @throws Exception
- */
- public static function NumberToName($codePage = '1252')
- {
- switch ($codePage) {
- case 367: return 'ASCII'; break; // ASCII
- case 437: return 'CP437'; break; // OEM US
- case 720: throw new Exception('Code page 720 not supported.');
- break; // OEM Arabic
- case 737: return 'CP737'; break; // OEM Greek
- case 775: return 'CP775'; break; // OEM Baltic
- case 850: return 'CP850'; break; // OEM Latin I
- case 852: return 'CP852'; break; // OEM Latin II (Central European)
- case 855: return 'CP855'; break; // OEM Cyrillic
- case 857: return 'CP857'; break; // OEM Turkish
- case 858: return 'CP858'; break; // OEM Multilingual Latin I with Euro
- case 860: return 'CP860'; break; // OEM Portugese
- case 861: return 'CP861'; break; // OEM Icelandic
- case 862: return 'CP862'; break; // OEM Hebrew
- case 863: return 'CP863'; break; // OEM Canadian (French)
- case 864: return 'CP864'; break; // OEM Arabic
- case 865: return 'CP865'; break; // OEM Nordic
- case 866: return 'CP866'; break; // OEM Cyrillic (Russian)
- case 869: return 'CP869'; break; // OEM Greek (Modern)
- case 874: return 'CP874'; break; // ANSI Thai
- case 932: return 'CP932'; break; // ANSI Japanese Shift-JIS
- case 936: return 'CP936'; break; // ANSI Chinese Simplified GBK
- case 949: return 'CP949'; break; // ANSI Korean (Wansung)
- case 950: return 'CP950'; break; // ANSI Chinese Traditional BIG5
- case 1200: return 'UTF-16LE'; break; // UTF-16 (BIFF8)
- case 1250: return 'CP1250'; break; // ANSI Latin II (Central European)
- case 1251: return 'CP1251'; break; // ANSI Cyrillic
- case 0: // CodePage is not always correctly set when the xls file was saved by Apple's Numbers program
- case 1252: return 'CP1252'; break; // ANSI Latin I (BIFF4-BIFF7)
- case 1253: return 'CP1253'; break; // ANSI Greek
- case 1254: return 'CP1254'; break; // ANSI Turkish
- case 1255: return 'CP1255'; break; // ANSI Hebrew
- case 1256: return 'CP1256'; break; // ANSI Arabic
- case 1257: return 'CP1257'; break; // ANSI Baltic
- case 1258: return 'CP1258'; break; // ANSI Vietnamese
- case 1361: return 'CP1361'; break; // ANSI Korean (Johab)
- case 10000: return 'MAC'; break; // Apple Roman
- case 10006: return 'MACGREEK'; break; // Macintosh Greek
- case 10007: return 'MACCYRILLIC'; break; // Macintosh Cyrillic
- case 10029: return 'MACCENTRALEUROPE'; break; // Macintosh Central Europe
- case 10079: return 'MACICELAND'; break; // Macintosh Icelandic
- case 10081: return 'MACTURKISH'; break; // Macintosh Turkish
- case 32768: return 'MAC'; break; // Apple Roman
- case 32769: throw new Exception('Code page 32769 not supported.');
- break; // ANSI Latin I (BIFF2-BIFF3)
- case 65000: return 'UTF-7'; break; // Unicode (UTF-7)
- case 65001: return 'UTF-8'; break; // Unicode (UTF-8)
- }
-
- throw new Exception('Unknown codepage: ' . $codePage);
- }
-
-}
diff --git a/admin/survey/excel/PHPExcel/Shared/Date.php b/admin/survey/excel/PHPExcel/Shared/Date.php
deleted file mode 100644
index 600d54c..0000000
--- a/admin/survey/excel/PHPExcel/Shared/Date.php
+++ /dev/null
@@ -1,356 +0,0 @@
-<?php
-
-/**
- * PHPExcel
- *
- * Copyright (c) 2006 - 2012 PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel_Shared
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-
-/**
- * PHPExcel_Shared_Date
- *
- * @category PHPExcel
- * @package PHPExcel_Shared
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- */
-class PHPExcel_Shared_Date
-{
- /** constants */
- const CALENDAR_WINDOWS_1900 = 1900; // Base date of 1st Jan 1900 = 1.0
- const CALENDAR_MAC_1904 = 1904; // Base date of 2nd Jan 1904 = 1.0
-
- /*
- * Names of the months of the year, indexed by shortname
- * Planned usage for locale settings
- *
- * @public
- * @var string[]
- */
- public static $_monthNames = array( 'Jan' => 'January',
- 'Feb' => 'February',
- 'Mar' => 'March',
- 'Apr' => 'April',
- 'May' => 'May',
- 'Jun' => 'June',
- 'Jul' => 'July',
- 'Aug' => 'August',
- 'Sep' => 'September',
- 'Oct' => 'October',
- 'Nov' => 'November',
- 'Dec' => 'December'
- );
-
- /*
- * Base calendar year to use for calculations
- *
- * @private
- * @var int
- */
- private static $ExcelBaseDate = self::CALENDAR_WINDOWS_1900;
-
- /*
- * Object type for PHP Date/Time values
- *
- * @private
- * @var string
- */
- public static $dateTimeObjectType = 'DateTime';
-
-
- /**
- * Set the Excel calendar (Windows 1900 or Mac 1904)
- *
- * @param integer $baseDate Excel base date
- * @return boolean Success or failure
- */
- public static function setExcelCalendar($baseDate) {
- if (($baseDate == self::CALENDAR_WINDOWS_1900) ||
- ($baseDate == self::CALENDAR_MAC_1904)) {
- self::$ExcelBaseDate = $baseDate;
- return TRUE;
- }
- return FALSE;
- } // function setExcelCalendar()
-
-
- /**
- * Return the Excel calendar (Windows 1900 or Mac 1904)
- *
- * @return integer $baseDate Excel base date
- */
- public static function getExcelCalendar() {
- return self::$ExcelBaseDate;
- } // function getExcelCalendar()
-
-
- /**
- * Convert a date from Excel to PHP
- *
- * @param long $dateValue Excel date/time value
- * @return long PHP serialized date/time
- */
- public static function ExcelToPHP($dateValue = 0) {
- if (self::$ExcelBaseDate == self::CALENDAR_WINDOWS_1900) {
- $myExcelBaseDate = 25569;
- // Adjust for the spurious 29-Feb-1900 (Day 60)
- if ($dateValue < 60) {
- --$myExcelBaseDate;
- }
- } else {
- $myExcelBaseDate = 24107;
- }
-
- // Perform conversion
- if ($dateValue >= 1) {
- $utcDays = $dateValue - $myExcelBaseDate;
- $returnValue = round($utcDays * 86400);
- if (($returnValue <= PHP_INT_MAX) && ($returnValue >= -PHP_INT_MAX)) {
- $returnValue = (integer) $returnValue;
- }
- } else {
- $hours = round($dateValue * 24);
- $mins = round($dateValue * 1440) - round($hours * 60);
- $secs = round($dateValue * 86400) - round($hours * 3600) - round($mins * 60);
- $returnValue = (integer) gmmktime($hours, $mins, $secs);
- }
-
- // Return
- return $returnValue;
- } // function ExcelToPHP()
-
-
- /**
- * Convert a date from Excel to a PHP Date/Time object
- *
- * @param long $dateValue Excel date/time value
- * @return long PHP date/time object
- */
- public static function ExcelToPHPObject($dateValue = 0) {
- $dateTime = self::ExcelToPHP($dateValue);
- $days = floor($dateTime / 86400);
- $time = round((($dateTime / 86400) - $days) * 86400);
- $hours = round($time / 3600);
- $minutes = round($time / 60) - ($hours * 60);
- $seconds = round($time) - ($hours * 3600) - ($minutes * 60);
-
- $dateObj = date_create('1-Jan-1970+'.$days.' days');
- $dateObj->setTime($hours,$minutes,$seconds);
-
- return $dateObj;
- } // function ExcelToPHPObject()
-
-
- /**
- * Convert a date from PHP to Excel
- *
- * @param mixed $dateValue PHP serialized date/time or date object
- * @return mixed Excel date/time value
- * or boolean FALSE on failure
- */
- public static function PHPToExcel($dateValue = 0) {
- $saveTimeZone = date_default_timezone_get();
- date_default_timezone_set('UTC');
- $retValue = FALSE;
- if ((is_object($dateValue)) && ($dateValue instanceof self::$dateTimeObjectType)) {
- $retValue = self::FormattedPHPToExcel( $dateValue->format('Y'), $dateValue->format('m'), $dateValue->format('d'),
- $dateValue->format('H'), $dateValue->format('i'), $dateValue->format('s')
- );
- } elseif (is_numeric($dateValue)) {
- $retValue = self::FormattedPHPToExcel( date('Y',$dateValue), date('m',$dateValue), date('d',$dateValue),
- date('H',$dateValue), date('i',$dateValue), date('s',$dateValue)
- );
- }
- date_default_timezone_set($saveTimeZone);
-
- return $retValue;
- } // function PHPToExcel()
-
-
- /**
- * FormattedPHPToExcel
- *
- * @param long $year
- * @param long $month
- * @param long $day
- * @param long $hours
- * @param long $minutes
- * @param long $seconds
- * @return long Excel date/time value
- */
- public static function FormattedPHPToExcel($year, $month, $day, $hours=0, $minutes=0, $seconds=0) {
- if (self::$ExcelBaseDate == self::CALENDAR_WINDOWS_1900) {
- //
- // Fudge factor for the erroneous fact that the year 1900 is treated as a Leap Year in MS Excel
- // This affects every date following 28th February 1900
- //
- $excel1900isLeapYear = TRUE;
- if (($year == 1900) && ($month <= 2)) { $excel1900isLeapYear = FALSE; }
- $myExcelBaseDate = 2415020;
- } else {
- $myExcelBaseDate = 2416481;
- $excel1900isLeapYear = FALSE;
- }
-
- // Julian base date Adjustment
- if ($month > 2) {
- $month -= 3;
- } else {
- $month += 9;
- --$year;
- }
-
- // Calculate the Julian Date, then subtract the Excel base date (JD 2415020 = 31-Dec-1899 Giving Excel Date of 0)
- $century = substr($year,0,2);
- $decade = substr($year,2,2);
- $excelDate = floor((146097 * $century) / 4) + floor((1461 * $decade) / 4) + floor((153 * $month + 2) / 5) + $day + 1721119 - $myExcelBaseDate + $excel1900isLeapYear;
-
- $excelTime = (($hours * 3600) + ($minutes * 60) + $seconds) / 86400;
-
- return (float) $excelDate + $excelTime;
- } // function FormattedPHPToExcel()
-
-
- /**
- * Is a given cell a date/time?
- *
- * @param PHPExcel_Cell $pCell
- * @return boolean
- */
- public static function isDateTime(PHPExcel_Cell $pCell) {
- return self::isDateTimeFormat(
- $pCell->getParent()->getStyle(
- $pCell->getCoordinate()
- )->getNumberFormat()
- );
- } // function isDateTime()
-
-
- /**
- * Is a given number format a date/time?
- *
- * @param PHPExcel_Style_NumberFormat $pFormat
- * @return boolean
- */
- public static function isDateTimeFormat(PHPExcel_Style_NumberFormat $pFormat) {
- return self::isDateTimeFormatCode($pFormat->getFormatCode());
- } // function isDateTimeFormat()
-
-
- private static $possibleDateFormatCharacters = 'eymdHs';
-
- /**
- * Is a given number format code a date/time?
- *
- * @param string $pFormatCode
- * @return boolean
- */
- public static function isDateTimeFormatCode($pFormatCode = '') {
- // Switch on formatcode
- switch ($pFormatCode) {
- // General contains an epoch letter 'e', so we trap for it explicitly here
- case PHPExcel_Style_NumberFormat::FORMAT_GENERAL:
- return FALSE;
- // Explicitly defined date formats
- case PHPExcel_Style_NumberFormat::FORMAT_DATE_YYYYMMDD:
- case PHPExcel_Style_NumberFormat::FORMAT_DATE_YYYYMMDD2:
- case PHPExcel_Style_NumberFormat::FORMAT_DATE_DDMMYYYY:
- case PHPExcel_Style_NumberFormat::FORMAT_DATE_DMYSLASH:
- case PHPExcel_Style_NumberFormat::FORMAT_DATE_DMYMINUS:
- case PHPExcel_Style_NumberFormat::FORMAT_DATE_DMMINUS:
- case PHPExcel_Style_NumberFormat::FORMAT_DATE_MYMINUS:
- case PHPExcel_Style_NumberFormat::FORMAT_DATE_DATETIME:
- case PHPExcel_Style_NumberFormat::FORMAT_DATE_TIME1:
- case PHPExcel_Style_NumberFormat::FORMAT_DATE_TIME2:
- case PHPExcel_Style_NumberFormat::FORMAT_DATE_TIME3:
- case PHPExcel_Style_NumberFormat::FORMAT_DATE_TIME4:
- case PHPExcel_Style_NumberFormat::FORMAT_DATE_TIME5:
- case PHPExcel_Style_NumberFormat::FORMAT_DATE_TIME6:
- case PHPExcel_Style_NumberFormat::FORMAT_DATE_TIME7:
- case PHPExcel_Style_NumberFormat::FORMAT_DATE_TIME8:
- case PHPExcel_Style_NumberFormat::FORMAT_DATE_YYYYMMDDSLASH:
- case PHPExcel_Style_NumberFormat::FORMAT_DATE_XLSX14:
- case PHPExcel_Style_NumberFormat::FORMAT_DATE_XLSX15:
- case PHPExcel_Style_NumberFormat::FORMAT_DATE_XLSX16:
- case PHPExcel_Style_NumberFormat::FORMAT_DATE_XLSX17:
- case PHPExcel_Style_NumberFormat::FORMAT_DATE_XLSX22:
- return TRUE;
- }
-
- // Typically number, currency or accounting (or occasionally fraction) formats
- if ((substr($pFormatCode,0,1) == '_') || (substr($pFormatCode,0,2) == '0 ')) {
- return FALSE;
- }
- // Try checking for any of the date formatting characters that don't appear within square braces
- if (preg_match('/(^|\])[^\[]*['.self::$possibleDateFormatCharacters.']/i',$pFormatCode)) {
- // We might also have a format mask containing quoted strings...
- // we don't want to test for any of our characters within the quoted blocks
- if (strpos($pFormatCode,'"') !== FALSE) {
- $i = FALSE;
- foreach(explode('"',$pFormatCode) as $subVal) {
- // Only test in alternate array entries (the non-quoted blocks)
- if (($i = !$i) && (preg_match('/(^|\])[^\[]*['.self::$possibleDateFormatCharacters.']/i',$subVal))) {
- return TRUE;
- }
- }
- return FALSE;
- }
- return TRUE;
- }
-
- // No date...
- return FALSE;
- } // function isDateTimeFormatCode()
-
-
- /**
- * Convert a date/time string to Excel time
- *
- * @param string $dateValue Examples: '2009-12-31', '2009-12-31 15:59', '2009-12-31 15:59:10'
- * @return float|FALSE Excel date/time serial value
- */
- public static function stringToExcel($dateValue = '') {
- if (strlen($dateValue) < 2)
- return FALSE;
- if (!preg_match('/^(\d{1,4}[ \.\/\-][A-Z]{3,9}([ \.\/\-]\d{1,4})?|[A-Z]{3,9}[ \.\/\-]\d{1,4}([ \.\/\-]\d{1,4})?|\d{1,4}[ \.\/\-]\d{1,4}([ \.\/\-]\d{1,4})?)( \d{1,2}:\d{1,2}(:\d{1,2})?)?$/iu', $dateValue))
- return FALSE;
-
- $dateValueNew = PHPExcel_Calculation_DateTime::DATEVALUE($dateValue);
-
- if ($dateValueNew === PHPExcel_Calculation_Functions::VALUE()) {
- return FALSE;
- } else {
- if (strpos($dateValue, ':') !== FALSE) {
- $timeValue = PHPExcel_Calculation_DateTime::TIMEVALUE($dateValue);
- if ($timeValue === PHPExcel_Calculation_Functions::VALUE()) {
- return FALSE;
- }
- $dateValueNew += $timeValue;
- }
- return $dateValueNew;
- }
-
-
- }
-
-}
diff --git a/admin/survey/excel/PHPExcel/Shared/Drawing.php b/admin/survey/excel/PHPExcel/Shared/Drawing.php
deleted file mode 100644
index e8bf4a1..0000000
--- a/admin/survey/excel/PHPExcel/Shared/Drawing.php
+++ /dev/null
@@ -1,272 +0,0 @@
-<?php
-/**
- * PHPExcel
- *
- * Copyright (c) 2006 - 2012 PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel_Shared
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-
-/**
- * PHPExcel_Shared_Drawing
- *
- * @category PHPExcel
- * @package PHPExcel_Shared
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- */
-class PHPExcel_Shared_Drawing
-{
- /**
- * Convert pixels to EMU
- *
- * @param int $pValue Value in pixels
- * @return int Value in EMU
- */
- public static function pixelsToEMU($pValue = 0) {
- return round($pValue * 9525);
- }
-
- /**
- * Convert EMU to pixels
- *
- * @param int $pValue Value in EMU
- * @return int Value in pixels
- */
- public static function EMUToPixels($pValue = 0) {
- if ($pValue != 0) {
- return round($pValue / 9525);
- } else {
- return 0;
- }
- }
-
- /**
- * Convert pixels to column width. Exact algorithm not known.
- * By inspection of a real Excel file using Calibri 11, one finds 1000px ~ 142.85546875
- * This gives a conversion factor of 7. Also, we assume that pixels and font size are proportional.
- *
- * @param int $pValue Value in pixels
- * @param PHPExcel_Style_Font $pDefaultFont Default font of the workbook
- * @return int Value in cell dimension
- */
- public static function pixelsToCellDimension($pValue = 0, PHPExcel_Style_Font $pDefaultFont) {
- // Font name and size
- $name = $pDefaultFont->getName();
- $size = $pDefaultFont->getSize();
-
- if (isset(PHPExcel_Shared_Font::$defaultColumnWidths[$name][$size])) {
- // Exact width can be determined
- $colWidth = $pValue
- * PHPExcel_Shared_Font::$defaultColumnWidths[$name][$size]['width']
- / PHPExcel_Shared_Font::$defaultColumnWidths[$name][$size]['px'];
- } else {
- // We don't have data for this particular font and size, use approximation by
- // extrapolating from Calibri 11
- $colWidth = $pValue * 11
- * PHPExcel_Shared_Font::$defaultColumnWidths['Calibri'][11]['width']
- / PHPExcel_Shared_Font::$defaultColumnWidths['Calibri'][11]['px'] / $size;
- }
-
- return $colWidth;
- }
-
- /**
- * Convert column width from (intrinsic) Excel units to pixels
- *
- * @param float $pValue Value in cell dimension
- * @param PHPExcel_Style_Font $pDefaultFont Default font of the workbook
- * @return int Value in pixels
- */
- public static function cellDimensionToPixels($pValue = 0, PHPExcel_Style_Font $pDefaultFont) {
- // Font name and size
- $name = $pDefaultFont->getName();
- $size = $pDefaultFont->getSize();
-
- if (isset(PHPExcel_Shared_Font::$defaultColumnWidths[$name][$size])) {
- // Exact width can be determined
- $colWidth = $pValue
- * PHPExcel_Shared_Font::$defaultColumnWidths[$name][$size]['px']
- / PHPExcel_Shared_Font::$defaultColumnWidths[$name][$size]['width'];
-
- } else {
- // We don't have data for this particular font and size, use approximation by
- // extrapolating from Calibri 11
- $colWidth = $pValue * $size
- * PHPExcel_Shared_Font::$defaultColumnWidths['Calibri'][11]['px']
- / PHPExcel_Shared_Font::$defaultColumnWidths['Calibri'][11]['width'] / 11;
- }
-
- // Round pixels to closest integer
- $colWidth = (int) round($colWidth);
-
- return $colWidth;
- }
-
- /**
- * Convert pixels to points
- *
- * @param int $pValue Value in pixels
- * @return int Value in points
- */
- public static function pixelsToPoints($pValue = 0) {
- return $pValue * 0.67777777;
- }
-
- /**
- * Convert points to pixels
- *
- * @param int $pValue Value in points
- * @return int Value in pixels
- */
- public static function pointsToPixels($pValue = 0) {
- if ($pValue != 0) {
- return (int) ceil($pValue * 1.333333333);
- } else {
- return 0;
- }
- }
-
- /**
- * Convert degrees to angle
- *
- * @param int $pValue Degrees
- * @return int Angle
- */
- public static function degreesToAngle($pValue = 0) {
- return (int)round($pValue * 60000);
- }
-
- /**
- * Convert angle to degrees
- *
- * @param int $pValue Angle
- * @return int Degrees
- */
- public static function angleToDegrees($pValue = 0) {
- if ($pValue != 0) {
- return round($pValue / 60000);
- } else {
- return 0;
- }
- }
-
- /**
- * Create a new image from file. By alexander at alexauto dot nl
- *
- * @link http://www.php.net/manual/en/function.imagecreatefromwbmp.php#86214
- * @param string $filename Path to Windows DIB (BMP) image
- * @return resource
- */
- public static function imagecreatefrombmp($p_sFile)
- {
- // Load the image into a string
- $file = fopen($p_sFile,"rb");
- $read = fread($file,10);
- while(!feof($file)&&($read<>""))
- $read .= fread($file,1024);
-
- $temp = unpack("H*",$read);
- $hex = $temp[1];
- $header = substr($hex,0,108);
-
- // Process the header
- // Structure: http://www.fastgraph.com/help/bmp_header_format.html
- if (substr($header,0,4)=="424d")
- {
- // Cut it in parts of 2 bytes
- $header_parts = str_split($header,2);
-
- // Get the width 4 bytes
- $width = hexdec($header_parts[19].$header_parts[18]);
-
- // Get the height 4 bytes
- $height = hexdec($header_parts[23].$header_parts[22]);
-
- // Unset the header params
- unset($header_parts);
- }
-
- // Define starting X and Y
- $x = 0;
- $y = 1;
-
- // Create newimage
- $image = imagecreatetruecolor($width,$height);
-
- // Grab the body from the image
- $body = substr($hex,108);
-
- // Calculate if padding at the end-line is needed
- // Divided by two to keep overview.
- // 1 byte = 2 HEX-chars
- $body_size = (strlen($body)/2);
- $header_size = ($width*$height);
-
- // Use end-line padding? Only when needed
- $usePadding = ($body_size>($header_size*3)+4);
-
- // Using a for-loop with index-calculation instaid of str_split to avoid large memory consumption
- // Calculate the next DWORD-position in the body
- for ($i=0;$i<$body_size;$i+=3)
- {
- // Calculate line-ending and padding
- if ($x>=$width)
- {
- // If padding needed, ignore image-padding
- // Shift i to the ending of the current 32-bit-block
- if ($usePadding)
- $i += $width%4;
-
- // Reset horizontal position
- $x = 0;
-
- // Raise the height-position (bottom-up)
- $y++;
-
- // Reached the image-height? Break the for-loop
- if ($y>$height)
- break;
- }
-
- // Calculation of the RGB-pixel (defined as BGR in image-data)
- // Define $i_pos as absolute position in the body
- $i_pos = $i*2;
- $r = hexdec($body[$i_pos+4].$body[$i_pos+5]);
- $g = hexdec($body[$i_pos+2].$body[$i_pos+3]);
- $b = hexdec($body[$i_pos].$body[$i_pos+1]);
-
- // Calculate and draw the pixel
- $color = imagecolorallocate($image,$r,$g,$b);
- imagesetpixel($image,$x,$height-$y,$color);
-
- // Raise the horizontal position
- $x++;
- }
-
- // Unset the body / free the memory
- unset($body);
-
- // Return image-object
- return $image;
- }
-
-}
diff --git a/admin/survey/excel/PHPExcel/Shared/Escher.php b/admin/survey/excel/PHPExcel/Shared/Escher.php
deleted file mode 100644
index 64c11c2..0000000
--- a/admin/survey/excel/PHPExcel/Shared/Escher.php
+++ /dev/null
@@ -1,91 +0,0 @@
-<?php
-/**
- * PHPExcel
- *
- * Copyright (c) 2006 - 2012 PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel_Shared_Escher
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-/**
- * PHPExcel_Shared_Escher
- *
- * @category PHPExcel
- * @package PHPExcel_Shared_Escher
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- */
-class PHPExcel_Shared_Escher
-{
- /**
- * Drawing Group Container
- *
- * @var PHPExcel_Shared_Escher_DggContainer
- */
- private $_dggContainer;
-
- /**
- * Drawing Container
- *
- * @var PHPExcel_Shared_Escher_DgContainer
- */
- private $_dgContainer;
-
- /**
- * Get Drawing Group Container
- *
- * @return PHPExcel_Shared_Escher_DgContainer
- */
- public function getDggContainer()
- {
- return $this->_dggContainer;
- }
-
- /**
- * Set Drawing Group Container
- *
- * @param PHPExcel_Shared_Escher_DggContainer $dggContainer
- */
- public function setDggContainer($dggContainer)
- {
- return $this->_dggContainer = $dggContainer;
- }
-
- /**
- * Get Drawing Container
- *
- * @return PHPExcel_Shared_Escher_DgContainer
- */
- public function getDgContainer()
- {
- return $this->_dgContainer;
- }
-
- /**
- * Set Drawing Container
- *
- * @param PHPExcel_Shared_Escher_DgContainer $dgContainer
- */
- public function setDgContainer($dgContainer)
- {
- return $this->_dgContainer = $dgContainer;
- }
-
-}
diff --git a/admin/survey/excel/PHPExcel/Shared/Escher/DgContainer.php b/admin/survey/excel/PHPExcel/Shared/Escher/DgContainer.php
deleted file mode 100644
index c2e9e42..0000000
--- a/admin/survey/excel/PHPExcel/Shared/Escher/DgContainer.php
+++ /dev/null
@@ -1,83 +0,0 @@
-<?php
-/**
- * PHPExcel
- *
- * Copyright (c) 2006 - 2012 PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel_Shared_Escher
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-/**
- * PHPExcel_Shared_Escher_DgContainer
- *
- * @category PHPExcel
- * @package PHPExcel_Shared_Escher
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- */
-class PHPExcel_Shared_Escher_DgContainer
-{
- /**
- * Drawing index, 1-based.
- *
- * @var int
- */
- private $_dgId;
-
- /**
- * Last shape index in this drawing
- *
- * @var int
- */
- private $_lastSpId;
-
- private $_spgrContainer = null;
-
- public function getDgId()
- {
- return $this->_dgId;
- }
-
- public function setDgId($value)
- {
- $this->_dgId = $value;
- }
-
- public function getLastSpId()
- {
- return $this->_lastSpId;
- }
-
- public function setLastSpId($value)
- {
- $this->_lastSpId = $value;
- }
-
- public function getSpgrContainer()
- {
- return $this->_spgrContainer;
- }
-
- public function setSpgrContainer($spgrContainer)
- {
- return $this->_spgrContainer = $spgrContainer;
- }
-
-}
diff --git a/admin/survey/excel/PHPExcel/Shared/Escher/DgContainer/SpgrContainer.php b/admin/survey/excel/PHPExcel/Shared/Escher/DgContainer/SpgrContainer.php
deleted file mode 100644
index a33e4e4..0000000
--- a/admin/survey/excel/PHPExcel/Shared/Escher/DgContainer/SpgrContainer.php
+++ /dev/null
@@ -1,109 +0,0 @@
-<?php
-/**
- * PHPExcel
- *
- * Copyright (c) 2006 - 2012 PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel_Shared_Escher
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-/**
- * PHPExcel_Shared_Escher_DgContainer_SpgrContainer
- *
- * @category PHPExcel
- * @package PHPExcel_Shared_Escher
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- */
-class PHPExcel_Shared_Escher_DgContainer_SpgrContainer
-{
- /**
- * Parent Shape Group Container
- *
- * @var PHPExcel_Shared_Escher_DgContainer_SpgrContainer
- */
- private $_parent;
-
- /**
- * Shape Container collection
- *
- * @var array
- */
- private $_children = array();
-
- /**
- * Set parent Shape Group Container
- *
- * @param PHPExcel_Shared_Escher_DgContainer_SpgrContainer $parent
- */
- public function setParent($parent)
- {
- $this->_parent = $parent;
- }
-
- /**
- * Get the parent Shape Group Container if any
- *
- * @return PHPExcel_Shared_Escher_DgContainer_SpgrContainer|null
- */
- public function getParent()
- {
- return $this->_parent;
- }
-
- /**
- * Add a child. This will be either spgrContainer or spContainer
- *
- * @param mixed $child
- */
- public function addChild($child)
- {
- $this->_children[] = $child;
- $child->setParent($this);
- }
-
- /**
- * Get collection of Shape Containers
- */
- public function getChildren()
- {
- return $this->_children;
- }
-
- /**
- * Recursively get all spContainers within this spgrContainer
- *
- * @return PHPExcel_Shared_Escher_DgContainer_SpgrContainer_SpContainer[]
- */
- public function getAllSpContainers()
- {
- $allSpContainers = array();
-
- foreach ($this->_children as $child) {
- if ($child instanceof PHPExcel_Shared_Escher_DgContainer_SpgrContainer) {
- $allSpContainers = array_merge($allSpContainers, $child->getAllSpContainers());
- } else {
- $allSpContainers[] = $child;
- }
- }
-
- return $allSpContainers;
- }
-}
diff --git a/admin/survey/excel/PHPExcel/Shared/Escher/DgContainer/SpgrContainer/SpContainer.php b/admin/survey/excel/PHPExcel/Shared/Escher/DgContainer/SpgrContainer/SpContainer.php
deleted file mode 100644
index b8ee537..0000000
--- a/admin/survey/excel/PHPExcel/Shared/Escher/DgContainer/SpgrContainer/SpContainer.php
+++ /dev/null
@@ -1,395 +0,0 @@
-<?php
-/**
- * PHPExcel
- *
- * Copyright (c) 2006 - 2012 PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel_Shared_Escher
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-/**
- * PHPExcel_Shared_Escher_DgContainer_SpgrContainer_SpContainer
- *
- * @category PHPExcel
- * @package PHPExcel_Shared_Escher
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- */
-class PHPExcel_Shared_Escher_DgContainer_SpgrContainer_SpContainer
-{
- /**
- * Parent Shape Group Container
- *
- * @var PHPExcel_Shared_Escher_DgContainer_SpgrContainer
- */
- private $_parent;
-
- /**
- * Is this a group shape?
- *
- * @var boolean
- */
- private $_spgr = false;
-
- /**
- * Shape type
- *
- * @var int
- */
- private $_spType;
-
- /**
- * Shape flag
- *
- * @var int
- */
- private $_spFlag;
-
- /**
- * Shape index (usually group shape has index 0, and the rest: 1,2,3...)
- *
- * @var boolean
- */
- private $_spId;
-
- /**
- * Array of options
- *
- * @var array
- */
- private $_OPT;
-
- /**
- * Cell coordinates of upper-left corner of shape, e.g. 'A1'
- *
- * @var string
- */
- private $_startCoordinates;
-
- /**
- * Horizontal offset of upper-left corner of shape measured in 1/1024 of column width
- *
- * @var int
- */
- private $_startOffsetX;
-
- /**
- * Vertical offset of upper-left corner of shape measured in 1/256 of row height
- *
- * @var int
- */
- private $_startOffsetY;
-
- /**
- * Cell coordinates of bottom-right corner of shape, e.g. 'B2'
- *
- * @var string
- */
- private $_endCoordinates;
-
- /**
- * Horizontal offset of bottom-right corner of shape measured in 1/1024 of column width
- *
- * @var int
- */
- private $_endOffsetX;
-
- /**
- * Vertical offset of bottom-right corner of shape measured in 1/256 of row height
- *
- * @var int
- */
- private $_endOffsetY;
-
- /**
- * Set parent Shape Group Container
- *
- * @param PHPExcel_Shared_Escher_DgContainer_SpgrContainer $parent
- */
- public function setParent($parent)
- {
- $this->_parent = $parent;
- }
-
- /**
- * Get the parent Shape Group Container
- *
- * @return PHPExcel_Shared_Escher_DgContainer_SpgrContainer
- */
- public function getParent()
- {
- return $this->_parent;
- }
-
- /**
- * Set whether this is a group shape
- *
- * @param boolean $value
- */
- public function setSpgr($value = false)
- {
- $this->_spgr = $value;
- }
-
- /**
- * Get whether this is a group shape
- *
- * @return boolean
- */
- public function getSpgr()
- {
- return $this->_spgr;
- }
-
- /**
- * Set the shape type
- *
- * @param int $value
- */
- public function setSpType($value)
- {
- $this->_spType = $value;
- }
-
- /**
- * Get the shape type
- *
- * @return int
- */
- public function getSpType()
- {
- return $this->_spType;
- }
-
- /**
- * Set the shape flag
- *
- * @param int $value
- */
- public function setSpFlag($value)
- {
- $this->_spFlag = $value;
- }
-
- /**
- * Get the shape flag
- *
- * @return int
- */
- public function getSpFlag()
- {
- return $this->_spFlag;
- }
-
- /**
- * Set the shape index
- *
- * @param int $value
- */
- public function setSpId($value)
- {
- $this->_spId = $value;
- }
-
- /**
- * Get the shape index
- *
- * @return int
- */
- public function getSpId()
- {
- return $this->_spId;
- }
-
- /**
- * Set an option for the Shape Group Container
- *
- * @param int $property The number specifies the option
- * @param mixed $value
- */
- public function setOPT($property, $value)
- {
- $this->_OPT[$property] = $value;
- }
-
- /**
- * Get an option for the Shape Group Container
- *
- * @param int $property The number specifies the option
- * @return mixed
- */
- public function getOPT($property)
- {
- if (isset($this->_OPT[$property])) {
- return $this->_OPT[$property];
- }
- return null;
- }
-
- /**
- * Get the collection of options
- *
- * @return array
- */
- public function getOPTCollection()
- {
- return $this->_OPT;
- }
-
- /**
- * Set cell coordinates of upper-left corner of shape
- *
- * @param string $value
- */
- public function setStartCoordinates($value = 'A1')
- {
- $this->_startCoordinates = $value;
- }
-
- /**
- * Get cell coordinates of upper-left corner of shape
- *
- * @return string
- */
- public function getStartCoordinates()
- {
- return $this->_startCoordinates;
- }
-
- /**
- * Set offset in x-direction of upper-left corner of shape measured in 1/1024 of column width
- *
- * @param int $startOffsetX
- */
- public function setStartOffsetX($startOffsetX = 0)
- {
- $this->_startOffsetX = $startOffsetX;
- }
-
- /**
- * Get offset in x-direction of upper-left corner of shape measured in 1/1024 of column width
- *
- * @return int
- */
- public function getStartOffsetX()
- {
- return $this->_startOffsetX;
- }
-
- /**
- * Set offset in y-direction of upper-left corner of shape measured in 1/256 of row height
- *
- * @param int $startOffsetY
- */
- public function setStartOffsetY($startOffsetY = 0)
- {
- $this->_startOffsetY = $startOffsetY;
- }
-
- /**
- * Get offset in y-direction of upper-left corner of shape measured in 1/256 of row height
- *
- * @return int
- */
- public function getStartOffsetY()
- {
- return $this->_startOffsetY;
- }
-
- /**
- * Set cell coordinates of bottom-right corner of shape
- *
- * @param string $value
- */
- public function setEndCoordinates($value = 'A1')
- {
- $this->_endCoordinates = $value;
- }
-
- /**
- * Get cell coordinates of bottom-right corner of shape
- *
- * @return string
- */
- public function getEndCoordinates()
- {
- return $this->_endCoordinates;
- }
-
- /**
- * Set offset in x-direction of bottom-right corner of shape measured in 1/1024 of column width
- *
- * @param int $startOffsetX
- */
- public function setEndOffsetX($endOffsetX = 0)
- {
- $this->_endOffsetX = $endOffsetX;
- }
-
- /**
- * Get offset in x-direction of bottom-right corner of shape measured in 1/1024 of column width
- *
- * @return int
- */
- public function getEndOffsetX()
- {
- return $this->_endOffsetX;
- }
-
- /**
- * Set offset in y-direction of bottom-right corner of shape measured in 1/256 of row height
- *
- * @param int $endOffsetY
- */
- public function setEndOffsetY($endOffsetY = 0)
- {
- $this->_endOffsetY = $endOffsetY;
- }
-
- /**
- * Get offset in y-direction of bottom-right corner of shape measured in 1/256 of row height
- *
- * @return int
- */
- public function getEndOffsetY()
- {
- return $this->_endOffsetY;
- }
-
- /**
- * Get the nesting level of this spContainer. This is the number of spgrContainers between this spContainer and
- * the dgContainer. A value of 1 = immediately within first spgrContainer
- * Higher nesting level occurs if and only if spContainer is part of a shape group
- *
- * @return int Nesting level
- */
- public function getNestingLevel()
- {
- $nestingLevel = 0;
-
- $parent = $this->getParent();
- while ($parent instanceof PHPExcel_Shared_Escher_DgContainer_SpgrContainer) {
- ++$nestingLevel;
- $parent = $parent->getParent();
- }
-
- return $nestingLevel;
- }
-}
diff --git a/admin/survey/excel/PHPExcel/Shared/Escher/DggContainer.php b/admin/survey/excel/PHPExcel/Shared/Escher/DggContainer.php
deleted file mode 100644
index b84da41..0000000
--- a/admin/survey/excel/PHPExcel/Shared/Escher/DggContainer.php
+++ /dev/null
@@ -1,203 +0,0 @@
-<?php
-/**
- * PHPExcel
- *
- * Copyright (c) 2006 - 2012 PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel_Shared_Escher
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-/**
- * PHPExcel_Shared_Escher_DggContainer
- *
- * @category PHPExcel
- * @package PHPExcel_Shared_Escher
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- */
-class PHPExcel_Shared_Escher_DggContainer
-{
- /**
- * Maximum shape index of all shapes in all drawings increased by one
- *
- * @var int
- */
- private $_spIdMax;
-
- /**
- * Total number of drawings saved
- *
- * @var int
- */
- private $_cDgSaved;
-
- /**
- * Total number of shapes saved (including group shapes)
- *
- * @var int
- */
- private $_cSpSaved;
-
- /**
- * BLIP Store Container
- *
- * @var PHPExcel_Shared_Escher_DggContainer_BstoreContainer
- */
- private $_bstoreContainer;
-
- /**
- * Array of options for the drawing group
- *
- * @var array
- */
- private $_OPT = array();
-
- /**
- * Array of identifier clusters containg information about the maximum shape identifiers
- *
- * @var array
- */
- private $_IDCLs = array();
-
- /**
- * Get maximum shape index of all shapes in all drawings (plus one)
- *
- * @return int
- */
- public function getSpIdMax()
- {
- return $this->_spIdMax;
- }
-
- /**
- * Set maximum shape index of all shapes in all drawings (plus one)
- *
- * @param int
- */
- public function setSpIdMax($value)
- {
- $this->_spIdMax = $value;
- }
-
- /**
- * Get total number of drawings saved
- *
- * @return int
- */
- public function getCDgSaved()
- {
- return $this->_cDgSaved;
- }
-
- /**
- * Set total number of drawings saved
- *
- * @param int
- */
- public function setCDgSaved($value)
- {
- $this->_cDgSaved = $value;
- }
-
- /**
- * Get total number of shapes saved (including group shapes)
- *
- * @return int
- */
- public function getCSpSaved()
- {
- return $this->_cSpSaved;
- }
-
- /**
- * Set total number of shapes saved (including group shapes)
- *
- * @param int
- */
- public function setCSpSaved($value)
- {
- $this->_cSpSaved = $value;
- }
-
- /**
- * Get BLIP Store Container
- *
- * @return PHPExcel_Shared_Escher_DggContainer_BstoreContainer
- */
- public function getBstoreContainer()
- {
- return $this->_bstoreContainer;
- }
-
- /**
- * Set BLIP Store Container
- *
- * @param PHPExcel_Shared_Escher_DggContainer_BstoreContainer $bstoreContainer
- */
- public function setBstoreContainer($bstoreContainer)
- {
- $this->_bstoreContainer = $bstoreContainer;
- }
-
- /**
- * Set an option for the drawing group
- *
- * @param int $property The number specifies the option
- * @param mixed $value
- */
- public function setOPT($property, $value)
- {
- $this->_OPT[$property] = $value;
- }
-
- /**
- * Get an option for the drawing group
- *
- * @param int $property The number specifies the option
- * @return mixed
- */
- public function getOPT($property)
- {
- if (isset($this->_OPT[$property])) {
- return $this->_OPT[$property];
- }
- return null;
- }
-
- /**
- * Get identifier clusters
- *
- * @return array
- */
- public function getIDCLs()
- {
- return $this->_IDCLs;
- }
-
- /**
- * Set identifier clusters. array(<drawingId> => <max shape id>, ...)
- *
- * @param array $pValue
- */
- public function setIDCLs($pValue)
- {
- $this->_IDCLs = $pValue;
- }
-}
diff --git a/admin/survey/excel/PHPExcel/Shared/Escher/DggContainer/BstoreContainer.php b/admin/survey/excel/PHPExcel/Shared/Escher/DggContainer/BstoreContainer.php
deleted file mode 100644
index 24d7ba3..0000000
--- a/admin/survey/excel/PHPExcel/Shared/Escher/DggContainer/BstoreContainer.php
+++ /dev/null
@@ -1,65 +0,0 @@
-<?php
-/**
- * PHPExcel
- *
- * Copyright (c) 2006 - 2012 PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel_Shared_Escher
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-/**
- * PHPExcel_Shared_Escher_DggContainer_BstoreContainer
- *
- * @category PHPExcel
- * @package PHPExcel_Shared_Escher
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- */
-class PHPExcel_Shared_Escher_DggContainer_BstoreContainer
-{
- /**
- * BLIP Store Entries. Each of them holds one BLIP (Big Large Image or Picture)
- *
- * @var array
- */
- private $_BSECollection = array();
-
- /**
- * Add a BLIP Store Entry
- *
- * @param PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE $BSE
- */
- public function addBSE($BSE)
- {
- $this->_BSECollection[] = $BSE;
- $BSE->setParent($this);
- }
-
- /**
- * Get the collection of BLIP Store Entries
- *
- * @return PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE[]
- */
- public function getBSECollection()
- {
- return $this->_BSECollection;
- }
-
-}
diff --git a/admin/survey/excel/PHPExcel/Shared/Escher/DggContainer/BstoreContainer/BSE.php b/admin/survey/excel/PHPExcel/Shared/Escher/DggContainer/BstoreContainer/BSE.php
deleted file mode 100644
index 80a9ef0..0000000
--- a/admin/survey/excel/PHPExcel/Shared/Escher/DggContainer/BstoreContainer/BSE.php
+++ /dev/null
@@ -1,120 +0,0 @@
-<?php
-/**
- * PHPExcel
- *
- * Copyright (c) 2006 - 2012 PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel_Shared_Escher
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-/**
- * PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE
- *
- * @category PHPExcel
- * @package PHPExcel_Shared_Escher
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- */
-class PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE
-{
- const BLIPTYPE_ERROR = 0x00;
- const BLIPTYPE_UNKNOWN = 0x01;
- const BLIPTYPE_EMF = 0x02;
- const BLIPTYPE_WMF = 0x03;
- const BLIPTYPE_PICT = 0x04;
- const BLIPTYPE_JPEG = 0x05;
- const BLIPTYPE_PNG = 0x06;
- const BLIPTYPE_DIB = 0x07;
- const BLIPTYPE_TIFF = 0x11;
- const BLIPTYPE_CMYKJPEG = 0x12;
-
- /**
- * The parent BLIP Store Entry Container
- *
- * @var PHPExcel_Shared_Escher_DggContainer_BstoreContainer
- */
- private $_parent;
-
- /**
- * The BLIP (Big Large Image or Picture)
- *
- * @var PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE_Blip
- */
- private $_blip;
-
- /**
- * The BLIP type
- *
- * @var int
- */
- private $_blipType;
-
- /**
- * Set parent BLIP Store Entry Container
- *
- * @param PHPExcel_Shared_Escher_DggContainer_BstoreContainer $parent
- */
- public function setParent($parent)
- {
- $this->_parent = $parent;
- }
-
- /**
- * Get the BLIP
- *
- * @return PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE_Blip
- */
- public function getBlip()
- {
- return $this->_blip;
- }
-
- /**
- * Set the BLIP
- *
- * @param PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE_Blip $blip
- */
- public function setBlip($blip)
- {
- $this->_blip = $blip;
- $blip->setParent($this);
- }
-
- /**
- * Get the BLIP type
- *
- * @return int
- */
- public function getBlipType()
- {
- return $this->_blipType;
- }
-
- /**
- * Set the BLIP type
- *
- * @param int
- */
- public function setBlipType($blipType)
- {
- $this->_blipType = $blipType;
- }
-
-}
diff --git a/admin/survey/excel/PHPExcel/Shared/Escher/DggContainer/BstoreContainer/BSE/Blip.php b/admin/survey/excel/PHPExcel/Shared/Escher/DggContainer/BstoreContainer/BSE/Blip.php
deleted file mode 100644
index 46bfb16..0000000
--- a/admin/survey/excel/PHPExcel/Shared/Escher/DggContainer/BstoreContainer/BSE/Blip.php
+++ /dev/null
@@ -1,91 +0,0 @@
-<?php
-/**
- * PHPExcel
- *
- * Copyright (c) 2006 - 2012 PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel_Shared_Escher
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-/**
- * PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE_Blip
- *
- * @category PHPExcel
- * @package PHPExcel_Shared_Escher
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- */
-class PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE_Blip
-{
- /**
- * The parent BSE
- *
- * @var PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE
- */
- private $_parent;
-
- /**
- * Raw image data
- *
- * @var string
- */
- private $_data;
-
- /**
- * Get the raw image data
- *
- * @return string
- */
- public function getData()
- {
- return $this->_data;
- }
-
- /**
- * Set the raw image data
- *
- * @param string
- */
- public function setData($data)
- {
- $this->_data = $data;
- }
-
- /**
- * Set parent BSE
- *
- * @param PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE $parent
- */
- public function setParent($parent)
- {
- $this->_parent = $parent;
- }
-
- /**
- * Get parent BSE
- *
- * @return PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE $parent
- */
- public function getParent()
- {
- return $this->_parent;
- }
-
-}
diff --git a/admin/survey/excel/PHPExcel/Shared/Excel5.php b/admin/survey/excel/PHPExcel/Shared/Excel5.php
deleted file mode 100644
index 55e9f72..0000000
--- a/admin/survey/excel/PHPExcel/Shared/Excel5.php
+++ /dev/null
@@ -1,317 +0,0 @@
-<?php
-/**
- * PHPExcel
- *
- * Copyright (c) 2006 - 2012 PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel_Shared
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-/**
- * PHPExcel_Shared_Excel5
- *
- * @category PHPExcel
- * @package PHPExcel_Shared
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- */
-class PHPExcel_Shared_Excel5
-{
- /**
- * Get the width of a column in pixels. We use the relationship y = ceil(7x) where
- * x is the width in intrinsic Excel units (measuring width in number of normal characters)
- * This holds for Arial 10
- *
- * @param PHPExcel_Worksheet $sheet The sheet
- * @param integer $col The column
- * @return integer The width in pixels
- */
- public static function sizeCol($sheet, $col = 'A')
- {
- // default font of the workbook
- $font = $sheet->getParent()->getDefaultStyle()->getFont();
-
- $columnDimensions = $sheet->getColumnDimensions();
-
- // first find the true column width in pixels (uncollapsed and unhidden)
- if ( isset($columnDimensions[$col]) and $columnDimensions[$col]->getWidth() != -1 ) {
-
- // then we have column dimension with explicit width
- $columnDimension = $columnDimensions[$col];
- $width = $columnDimension->getWidth();
- $pixelWidth = PHPExcel_Shared_Drawing::cellDimensionToPixels($width, $font);
-
- } else if ($sheet->getDefaultColumnDimension()->getWidth() != -1) {
-
- // then we have default column dimension with explicit width
- $defaultColumnDimension = $sheet->getDefaultColumnDimension();
- $width = $defaultColumnDimension->getWidth();
- $pixelWidth = PHPExcel_Shared_Drawing::cellDimensionToPixels($width, $font);
-
- } else {
-
- // we don't even have any default column dimension. Width depends on default font
- $pixelWidth = PHPExcel_Shared_Font::getDefaultColumnWidthByFont($font, true);
- }
-
- // now find the effective column width in pixels
- if (isset($columnDimensions[$col]) and !$columnDimensions[$col]->getVisible()) {
- $effectivePixelWidth = 0;
- } else {
- $effectivePixelWidth = $pixelWidth;
- }
-
- return $effectivePixelWidth;
- }
-
- /**
- * Convert the height of a cell from user's units to pixels. By interpolation
- * the relationship is: y = 4/3x. If the height hasn't been set by the user we
- * use the default value. If the row is hidden we use a value of zero.
- *
- * @param PHPExcel_Worksheet $sheet The sheet
- * @param integer $row The row index (1-based)
- * @return integer The width in pixels
- */
- public static function sizeRow($sheet, $row = 1)
- {
- // default font of the workbook
- $font = $sheet->getParent()->getDefaultStyle()->getFont();
-
- $rowDimensions = $sheet->getRowDimensions();
-
- // first find the true row height in pixels (uncollapsed and unhidden)
- if ( isset($rowDimensions[$row]) and $rowDimensions[$row]->getRowHeight() != -1) {
-
- // then we have a row dimension
- $rowDimension = $rowDimensions[$row];
- $rowHeight = $rowDimension->getRowHeight();
- $pixelRowHeight = (int) ceil(4 * $rowHeight / 3); // here we assume Arial 10
-
- } else if ($sheet->getDefaultRowDimension()->getRowHeight() != -1) {
-
- // then we have a default row dimension with explicit height
- $defaultRowDimension = $sheet->getDefaultRowDimension();
- $rowHeight = $defaultRowDimension->getRowHeight();
- $pixelRowHeight = PHPExcel_Shared_Drawing::pointsToPixels($rowHeight);
-
- } else {
-
- // we don't even have any default row dimension. Height depends on default font
- $pointRowHeight = PHPExcel_Shared_Font::getDefaultRowHeightByFont($font);
- $pixelRowHeight = PHPExcel_Shared_Font::fontSizeToPixels($pointRowHeight);
-
- }
-
- // now find the effective row height in pixels
- if ( isset($rowDimensions[$row]) and !$rowDimensions[$row]->getVisible() ) {
- $effectivePixelRowHeight = 0;
- } else {
- $effectivePixelRowHeight = $pixelRowHeight;
- }
-
- return $effectivePixelRowHeight;
- }
-
- /**
- * Get the horizontal distance in pixels between two anchors
- * The distanceX is found as sum of all the spanning columns widths minus correction for the two offsets
- *
- * @param PHPExcel_Worksheet $sheet
- * @param string $startColumn
- * @param integer $startOffset Offset within start cell measured in 1/1024 of the cell width
- * @param string $endColumn
- * @param integer $endOffset Offset within end cell measured in 1/1024 of the cell width
- * @return integer Horizontal measured in pixels
- */
- public static function getDistanceX(PHPExcel_Worksheet $sheet, $startColumn = 'A', $startOffsetX = 0, $endColumn = 'A', $endOffsetX = 0)
- {
- $distanceX = 0;
-
- // add the widths of the spanning columns
- $startColumnIndex = PHPExcel_Cell::columnIndexFromString($startColumn) - 1; // 1-based
- $endColumnIndex = PHPExcel_Cell::columnIndexFromString($endColumn) - 1; // 1-based
- for ($i = $startColumnIndex; $i <= $endColumnIndex; ++$i) {
- $distanceX += self::sizeCol($sheet, PHPExcel_Cell::stringFromColumnIndex($i));
- }
-
- // correct for offsetX in startcell
- $distanceX -= (int) floor(self::sizeCol($sheet, $startColumn) * $startOffsetX / 1024);
-
- // correct for offsetX in endcell
- $distanceX -= (int) floor(self::sizeCol($sheet, $endColumn) * (1 - $endOffsetX / 1024));
-
- return $distanceX;
- }
-
- /**
- * Get the vertical distance in pixels between two anchors
- * The distanceY is found as sum of all the spanning rows minus two offsets
- *
- * @param PHPExcel_Worksheet $sheet
- * @param string $startRow (1-based)
- * @param integer $startOffset Offset within start cell measured in 1/256 of the cell height
- * @param string $endRow (1-based)
- * @param integer $endOffset Offset within end cell measured in 1/256 of the cell height
- * @return integer Vertical distance measured in pixels
- */
- public static function getDistanceY(PHPExcel_Worksheet $sheet, $startRow = 1, $startOffsetY = 0, $endRow = 1, $endOffsetY = 0)
- {
- $distanceY = 0;
-
- // add the widths of the spanning rows
- for ($row = $startRow; $row <= $endRow; ++$row) {
- $distanceY += self::sizeRow($sheet, $row);
- }
-
- // correct for offsetX in startcell
- $distanceY -= (int) floor(self::sizeRow($sheet, $startRow) * $startOffsetY / 256);
-
- // correct for offsetX in endcell
- $distanceY -= (int) floor(self::sizeRow($sheet, $endRow) * (1 - $endOffsetY / 256));
-
- return $distanceY;
- }
-
- /**
- * Convert 1-cell anchor coordinates to 2-cell anchor coordinates
- * This function is ported from PEAR Spreadsheet_Writer_Excel with small modifications
- *
- * Calculate the vertices that define the position of the image as required by
- * the OBJ record.
- *
- * +------------+------------+
- * | A | B |
- * +-----+------------+------------+
- * | |(x1,y1) | |
- * | 1 |(A1)._______|______ |
- * | | | | |
- * | | | | |
- * +-----+----| BITMAP |-----+
- * | | | | |
- * | 2 | |______________. |
- * | | | (B2)|
- * | | | (x2,y2)|
- * +---- +------------+------------+
- *
- * Example of a bitmap that covers some of the area from cell A1 to cell B2.
- *
- * Based on the width and height of the bitmap we need to calculate 8 vars:
- * $col_start, $row_start, $col_end, $row_end, $x1, $y1, $x2, $y2.
- * The width and height of the cells are also variable and have to be taken into
- * account.
- * The values of $col_start and $row_start are passed in from the calling
- * function. The values of $col_end and $row_end are calculated by subtracting
- * the width and height of the bitmap from the width and height of the
- * underlying cells.
- * The vertices are expressed as a percentage of the underlying cell width as
- * follows (rhs values are in pixels):
- *
- * x1 = X / W *1024
- * y1 = Y / H *256
- * x2 = (X-1) / W *1024
- * y2 = (Y-1) / H *256
- *
- * Where: X is distance from the left side of the underlying cell
- * Y is distance from the top of the underlying cell
- * W is the width of the cell
- * H is the height of the cell
- *
- * @param PHPExcel_Worksheet $sheet
- * @param string $coordinates E.g. 'A1'
- * @param integer $offsetX Horizontal offset in pixels
- * @param integer $offsetY Vertical offset in pixels
- * @param integer $width Width in pixels
- * @param integer $height Height in pixels
- * @return array
- */
- public static function oneAnchor2twoAnchor($sheet, $coordinates, $offsetX, $offsetY, $width, $height)
- {
- list($column, $row) = PHPExcel_Cell::coordinateFromString($coordinates);
- $col_start = PHPExcel_Cell::columnIndexFromString($column) - 1;
- $row_start = $row - 1;
-
- $x1 = $offsetX;
- $y1 = $offsetY;
-
- // Initialise end cell to the same as the start cell
- $col_end = $col_start; // Col containing lower right corner of object
- $row_end = $row_start; // Row containing bottom right corner of object
-
- // Zero the specified offset if greater than the cell dimensions
- if ($x1 >= self::sizeCol($sheet, PHPExcel_Cell::stringFromColumnIndex($col_start))) {
- $x1 = 0;
- }
- if ($y1 >= self::sizeRow($sheet, $row_start + 1)) {
- $y1 = 0;
- }
-
- $width = $width + $x1 -1;
- $height = $height + $y1 -1;
-
- // Subtract the underlying cell widths to find the end cell of the image
- while ($width >= self::sizeCol($sheet, PHPExcel_Cell::stringFromColumnIndex($col_end))) {
- $width -= self::sizeCol($sheet, PHPExcel_Cell::stringFromColumnIndex($col_end));
- ++$col_end;
- }
-
- // Subtract the underlying cell heights to find the end cell of the image
- while ($height >= self::sizeRow($sheet, $row_end + 1)) {
- $height -= self::sizeRow($sheet, $row_end + 1);
- ++$row_end;
- }
-
- // Bitmap isn't allowed to start or finish in a hidden cell, i.e. a cell
- // with zero height or width.
- if (self::sizeCol($sheet, PHPExcel_Cell::stringFromColumnIndex($col_start)) == 0) {
- return;
- }
- if (self::sizeCol($sheet, PHPExcel_Cell::stringFromColumnIndex($col_end)) == 0) {
- return;
- }
- if (self::sizeRow($sheet, $row_start + 1) == 0) {
- return;
- }
- if (self::sizeRow($sheet, $row_end + 1) == 0) {
- return;
- }
-
- // Convert the pixel values to the percentage value expected by Excel
- $x1 = $x1 / self::sizeCol($sheet, PHPExcel_Cell::stringFromColumnIndex($col_start)) * 1024;
- $y1 = $y1 / self::sizeRow($sheet, $row_start + 1) * 256;
- $x2 = ($width + 1) / self::sizeCol($sheet, PHPExcel_Cell::stringFromColumnIndex($col_end)) * 1024; // Distance to right side of object
- $y2 = ($height + 1) / self::sizeRow($sheet, $row_end + 1) * 256; // Distance to bottom of object
-
- $startCoordinates = PHPExcel_Cell::stringFromColumnIndex($col_start) . ($row_start + 1);
- $endCoordinates = PHPExcel_Cell::stringFromColumnIndex($col_end) . ($row_end + 1);
-
- $twoAnchor = array(
- 'startCoordinates' => $startCoordinates,
- 'startOffsetX' => $x1,
- 'startOffsetY' => $y1,
- 'endCoordinates' => $endCoordinates,
- 'endOffsetX' => $x2,
- 'endOffsetY' => $y2,
- );
-
- return $twoAnchor;
- }
-
-}
diff --git a/admin/survey/excel/PHPExcel/Shared/File.php b/admin/survey/excel/PHPExcel/Shared/File.php
deleted file mode 100644
index f6314ef..0000000
--- a/admin/survey/excel/PHPExcel/Shared/File.php
+++ /dev/null
@@ -1,139 +0,0 @@
-<?php
-/**
- * PHPExcel
- *
- * Copyright (c) 2006 - 2012 PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel_Shared
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-
-/**
- * PHPExcel_Shared_File
- *
- * @category PHPExcel
- * @package PHPExcel_Shared
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- */
-class PHPExcel_Shared_File
-{
- /**
- * Verify if a file exists
- *
- * @param string $pFilename Filename
- * @return bool
- */
- public static function file_exists($pFilename) {
- // Sick construction, but it seems that
- // file_exists returns strange values when
- // doing the original file_exists on ZIP archives...
- if ( strtolower(substr($pFilename, 0, 3)) == 'zip' ) {
- // Open ZIP file and verify if the file exists
- $zipFile = substr($pFilename, 6, strpos($pFilename, '#') - 6);
- $archiveFile = substr($pFilename, strpos($pFilename, '#') + 1);
-
- $zip = new ZipArchive();
- if ($zip->open($zipFile) === true) {
- $returnValue = ($zip->getFromName($archiveFile) !== false);
- $zip->close();
- return $returnValue;
- } else {
- return false;
- }
- } else {
- // Regular file_exists
- return file_exists($pFilename);
- }
- }
-
- /**
- * Returns canonicalized absolute pathname, also for ZIP archives
- *
- * @param string $pFilename
- * @return string
- */
- public static function realpath($pFilename) {
- // Returnvalue
- $returnValue = '';
-
- // Try using realpath()
- if (file_exists($pFilename)) {
- $returnValue = realpath($pFilename);
- }
-
- // Found something?
- if ($returnValue == '' || ($returnValue === NULL)) {
- $pathArray = explode('/' , $pFilename);
- while(in_array('..', $pathArray) && $pathArray[0] != '..') {
- for ($i = 0; $i < count($pathArray); ++$i) {
- if ($pathArray[$i] == '..' && $i > 0) {
- unset($pathArray[$i]);
- unset($pathArray[$i - 1]);
- break;
- }
- }
- }
- $returnValue = implode('/', $pathArray);
- }
-
- // Return
- return $returnValue;
- }
-
- /**
- * Get the systems temporary directory.
- *
- * @return string
- */
- public static function sys_get_temp_dir()
- {
- // sys_get_temp_dir is only available since PHP 5.2.1
- // http://php.net/manual/en/function.sys-get-temp-dir.php#94119
-
- if ( !function_exists('sys_get_temp_dir')) {
- if ($temp = getenv('TMP') ) {
- if ((!empty($temp)) && (file_exists($temp))) { return realpath($temp); }
- }
- if ($temp = getenv('TEMP') ) {
- if ((!empty($temp)) && (file_exists($temp))) { return realpath($temp); }
- }
- if ($temp = getenv('TMPDIR') ) {
- if ((!empty($temp)) && (file_exists($temp))) { return realpath($temp); }
- }
-
- // trick for creating a file in system's temporary dir
- // without knowing the path of the system's temporary dir
- $temp = tempnam(__FILE__, '');
- if (file_exists($temp)) {
- unlink($temp);
- return realpath(dirname($temp));
- }
-
- return null;
- }
-
- // use ordinary built-in PHP function
- // There should be no problem with the 5.2.4 Suhosin realpath() bug, because this line should only
- // be called if we're running 5.2.1 or earlier
- return realpath(sys_get_temp_dir());
- }
-
-}
diff --git a/admin/survey/excel/PHPExcel/Shared/Font.php b/admin/survey/excel/PHPExcel/Shared/Font.php
deleted file mode 100644
index 9414463..0000000
--- a/admin/survey/excel/PHPExcel/Shared/Font.php
+++ /dev/null
@@ -1,775 +0,0 @@
-<?php
-/**
- * PHPExcel
- *
- * Copyright (c) 2006 - 2012 PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel_Shared
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-
-/**
- * PHPExcel_Shared_Font
- *
- * @category PHPExcel
- * @package PHPExcel_Shared
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- */
-class PHPExcel_Shared_Font
-{
- /* Methods for resolving autosize value */
- const AUTOSIZE_METHOD_APPROX = 'approx';
- const AUTOSIZE_METHOD_EXACT = 'exact';
-
- private static $_autoSizeMethods = array(
- self::AUTOSIZE_METHOD_APPROX,
- self::AUTOSIZE_METHOD_EXACT,
- );
-
- /** Character set codes used by BIFF5-8 in Font records */
- const CHARSET_ANSI_LATIN = 0x00;
- const CHARSET_SYSTEM_DEFAULT = 0x01;
- const CHARSET_SYMBOL = 0x02;
- const CHARSET_APPLE_ROMAN = 0x4D;
- const CHARSET_ANSI_JAPANESE_SHIFTJIS = 0x80;
- const CHARSET_ANSI_KOREAN_HANGUL = 0x81;
- const CHARSET_ANSI_KOREAN_JOHAB = 0x82;
- const CHARSET_ANSI_CHINESE_SIMIPLIFIED = 0x86; // gb2312
- const CHARSET_ANSI_CHINESE_TRADITIONAL = 0x88; // big5
- const CHARSET_ANSI_GREEK = 0xA1;
- const CHARSET_ANSI_TURKISH = 0xA2;
- const CHARSET_ANSI_VIETNAMESE = 0xA3;
- const CHARSET_ANSI_HEBREW = 0xB1;
- const CHARSET_ANSI_ARABIC = 0xB2;
- const CHARSET_ANSI_BALTIC = 0xBA;
- const CHARSET_ANSI_CYRILLIC = 0xCC;
- const CHARSET_ANSI_THAI = 0xDD;
- const CHARSET_ANSI_LATIN_II = 0xEE;
- const CHARSET_OEM_LATIN_I = 0xFF;
-
- // XXX: Constants created!
- /** Font filenames */
- const ARIAL = 'arial.ttf';
- const ARIAL_BOLD = 'arialbd.ttf';
- const ARIAL_ITALIC = 'ariali.ttf';
- const ARIAL_BOLD_ITALIC = 'arialbi.ttf';
-
- const CALIBRI = 'CALIBRI.TTF';
- const CALIBRI_BOLD = 'CALIBRIB.TTF';
- const CALIBRI_ITALIC = 'CALIBRII.TTF';
- const CALIBRI_BOLD_ITALIC = 'CALIBRIZ.TTF';
-
- const COMIC_SANS_MS = 'comic.ttf';
- const COMIC_SANS_MS_BOLD = 'comicbd.ttf';
-
- const COURIER_NEW = 'cour.ttf';
- const COURIER_NEW_BOLD = 'courbd.ttf';
- const COURIER_NEW_ITALIC = 'couri.ttf';
- const COURIER_NEW_BOLD_ITALIC = 'courbi.ttf';
-
- const GEORGIA = 'georgia.ttf';
- const GEORGIA_BOLD = 'georgiab.ttf';
- const GEORGIA_ITALIC = 'georgiai.ttf';
- const GEORGIA_BOLD_ITALIC = 'georgiaz.ttf';
-
- const IMPACT = 'impact.ttf';
-
- const LIBERATION_SANS = 'LiberationSans-Regular.ttf';
- const LIBERATION_SANS_BOLD = 'LiberationSans-Bold.ttf';
- const LIBERATION_SANS_ITALIC = 'LiberationSans-Italic.ttf';
- const LIBERATION_SANS_BOLD_ITALIC = 'LiberationSans-BoldItalic.ttf';
-
- const LUCIDA_CONSOLE = 'lucon.ttf';
- const LUCIDA_SANS_UNICODE = 'l_10646.ttf';
-
- const MICROSOFT_SANS_SERIF = 'micross.ttf';
-
- const PALATINO_LINOTYPE = 'pala.ttf';
- const PALATINO_LINOTYPE_BOLD = 'palab.ttf';
- const PALATINO_LINOTYPE_ITALIC = 'palai.ttf';
- const PALATINO_LINOTYPE_BOLD_ITALIC = 'palabi.ttf';
-
- const SYMBOL = 'symbol.ttf';
-
- const TAHOMA = 'tahoma.ttf';
- const TAHOMA_BOLD = 'tahomabd.ttf';
-
- const TIMES_NEW_ROMAN = 'times.ttf';
- const TIMES_NEW_ROMAN_BOLD = 'timesbd.ttf';
- const TIMES_NEW_ROMAN_ITALIC = 'timesi.ttf';
- const TIMES_NEW_ROMAN_BOLD_ITALIC = 'timesbi.ttf';
-
- const TREBUCHET_MS = 'trebuc.ttf';
- const TREBUCHET_MS_BOLD = 'trebucbd.ttf';
- const TREBUCHET_MS_ITALIC = 'trebucit.ttf';
- const TREBUCHET_MS_BOLD_ITALIC = 'trebucbi.ttf';
-
- const VERDANA = 'verdana.ttf';
- const VERDANA_BOLD = 'verdanab.ttf';
- const VERDANA_ITALIC = 'verdanai.ttf';
- const VERDANA_BOLD_ITALIC = 'verdanaz.ttf';
-
- /**
- * AutoSize method
- *
- * @var string
- */
- private static $autoSizeMethod = self::AUTOSIZE_METHOD_APPROX;
-
- /**
- * Path to folder containing TrueType font .ttf files
- *
- * @var string
- */
- private static $trueTypeFontPath = null;
-
- /**
- * How wide is a default column for a given default font and size?
- * Empirical data found by inspecting real Excel files and reading off the pixel width
- * in Microsoft Office Excel 2007.
- *
- * @var array
- */
- public static $defaultColumnWidths = array(
- 'Arial' => array(
- 1 => array('px' => 24, 'width' => 12.00000000),
- 2 => array('px' => 24, 'width' => 12.00000000),
- 3 => array('px' => 32, 'width' => 10.66406250),
- 4 => array('px' => 32, 'width' => 10.66406250),
- 5 => array('px' => 40, 'width' => 10.00000000),
- 6 => array('px' => 48, 'width' => 9.59765625),
- 7 => array('px' => 48, 'width' => 9.59765625),
- 8 => array('px' => 56, 'width' => 9.33203125),
- 9 => array('px' => 64, 'width' => 9.14062500),
- 10 => array('px' => 64, 'width' => 9.14062500),
- ),
- 'Calibri' => array(
- 1 => array('px' => 24, 'width' => 12.00000000),
- 2 => array('px' => 24, 'width' => 12.00000000),
- 3 => array('px' => 32, 'width' => 10.66406250),
- 4 => array('px' => 32, 'width' => 10.66406250),
- 5 => array('px' => 40, 'width' => 10.00000000),
- 6 => array('px' => 48, 'width' => 9.59765625),
- 7 => array('px' => 48, 'width' => 9.59765625),
- 8 => array('px' => 56, 'width' => 9.33203125),
- 9 => array('px' => 56, 'width' => 9.33203125),
- 10 => array('px' => 64, 'width' => 9.14062500),
- 11 => array('px' => 64, 'width' => 9.14062500),
- ),
- 'Verdana' => array(
- 1 => array('px' => 24, 'width' => 12.00000000),
- 2 => array('px' => 24, 'width' => 12.00000000),
- 3 => array('px' => 32, 'width' => 10.66406250),
- 4 => array('px' => 32, 'width' => 10.66406250),
- 5 => array('px' => 40, 'width' => 10.00000000),
- 6 => array('px' => 48, 'width' => 9.59765625),
- 7 => array('px' => 48, 'width' => 9.59765625),
- 8 => array('px' => 64, 'width' => 9.14062500),
- 9 => array('px' => 72, 'width' => 9.00000000),
- 10 => array('px' => 72, 'width' => 9.00000000),
- ),
- );
-
- /**
- * Set autoSize method
- *
- * @param string $pValue
- * @return boolean Success or failure
- */
- public static function setAutoSizeMethod($pValue = self::AUTOSIZE_METHOD_APPROX)
- {
- if (!in_array($pValue,self::$_autoSizeMethods)) {
- return FALSE;
- }
-
- self::$autoSizeMethod = $pValue;
-
- return TRUE;
- }
-
- /**
- * Get autoSize method
- *
- * @return string
- */
- public static function getAutoSizeMethod()
- {
- return self::$autoSizeMethod;
- }
-
- /**
- * Set the path to the folder containing .ttf files. There should be a trailing slash.
- * Typical locations on variout some platforms:
- * <ul>
- * <li>C:/Windows/Fonts/</li>
- * <li>/usr/share/fonts/truetype/</li>
- * <li>~/.fonts/</li>
- * </ul>
- *
- * @param string $pValue
- */
- public static function setTrueTypeFontPath($pValue = '')
- {
- self::$trueTypeFontPath = $pValue;
- }
-
- /**
- * Get the path to the folder containing .ttf files.
- *
- * @return string
- */
- public static function getTrueTypeFontPath()
- {
- return self::$trueTypeFontPath;
- }
-
- /**
- * Calculate an (approximate) OpenXML column width, based on font size and text contained
- *
- * @param int $fontSize Font size (in pixels or points)
- * @param bool $fontSizeInPixels Is the font size specified in pixels (true) or in points (false) ?
- * @param string $cellText Text to calculate width
- * @param int $rotation Rotation angle
- * @return int Column width
- */
- public static function calculateColumnWidth(PHPExcel_Style_Font $font, $cellText = '', $rotation = 0, PHPExcel_Style_Font $defaultFont = null) {
-
- // If it is rich text, use plain text
- if ($cellText instanceof PHPExcel_RichText) {
- $cellText = $cellText->getPlainText();
- }
-
- // Special case if there are one or more newline characters ("\n")
- if (strpos($cellText, "\n") !== false) {
- $lineTexts = explode("\n", $cellText);
- $lineWitdhs = array();
- foreach ($lineTexts as $lineText) {
- $lineWidths[] = self::calculateColumnWidth($font, $lineText, $rotation = 0, $defaultFont);
- }
- return max($lineWidths); // width of longest line in cell
- }
-
- // Try to get the exact text width in pixels
- try {
- // If autosize method is set to 'approx', use approximation
- if (self::$autoSizeMethod == self::AUTOSIZE_METHOD_APPROX) {
- throw new Exception('AutoSize method is set to approx');
- }
-
- // Width of text in pixels excl. padding
- $columnWidth = self::getTextWidthPixelsExact($cellText, $font, $rotation);
-
- // Excel adds some padding, use 1.07 of the width of an 'n' glyph
- $columnWidth += ceil(self::getTextWidthPixelsExact('0', $font, 0) * 1.07); // pixels incl. padding
-
- } catch (Exception $e) {
- // Width of text in pixels excl. padding, approximation
- $columnWidth = self::getTextWidthPixelsApprox($cellText, $font, $rotation);
-
- // Excel adds some padding, just use approx width of 'n' glyph
- $columnWidth += self::getTextWidthPixelsApprox('n', $font, 0);
- }
-
- // Convert from pixel width to column width
- $columnWidth = PHPExcel_Shared_Drawing::pixelsToCellDimension($columnWidth, $defaultFont);
-
- // Return
- return round($columnWidth, 6);
- }
-
- /**
- * Get GD text width in pixels for a string of text in a certain font at a certain rotation angle
- *
- * @param string $text
- * @param PHPExcel_Style_Font
- * @param int $rotation
- * @return int
- * @throws Exception
- */
- public static function getTextWidthPixelsExact($text, PHPExcel_Style_Font $font, $rotation = 0) {
- if (!function_exists('imagettfbbox')) {
- throw new Exception('GD library needs to be enabled');
- }
-
- // font size should really be supplied in pixels in GD2,
- // but since GD2 seems to assume 72dpi, pixels and points are the same
- $fontFile = self::getTrueTypeFontFileFromFont($font);
- $textBox = imagettfbbox($font->getSize(), $rotation, $fontFile, $text);
-
- // Get corners positions
- $lowerLeftCornerX = $textBox[0];
- $lowerLeftCornerY = $textBox[1];
- $lowerRightCornerX = $textBox[2];
- $lowerRightCornerY = $textBox[3];
- $upperRightCornerX = $textBox[4];
- $upperRightCornerY = $textBox[5];
- $upperLeftCornerX = $textBox[6];
- $upperLeftCornerY = $textBox[7];
-
- // Consider the rotation when calculating the width
- $textWidth = max($lowerRightCornerX - $upperLeftCornerX, $upperRightCornerX - $lowerLeftCornerX);
-
- return $textWidth;
- }
-
- /**
- * Get approximate width in pixels for a string of text in a certain font at a certain rotation angle
- *
- * @param string $columnText
- * @param PHPExcel_Style_Font $font
- * @param int $rotation
- * @return int Text width in pixels (no padding added)
- */
- public static function getTextWidthPixelsApprox($columnText, PHPExcel_Style_Font $font = null, $rotation = 0)
- {
- $fontName = $font->getName();
- $fontSize = $font->getSize();
-
- // Calculate column width in pixels. We assume fixed glyph width. Result varies with font name and size.
- switch ($fontName) {
- case 'Calibri':
- // value 8.26 was found via interpolation by inspecting real Excel files with Calibri 11 font.
- $columnWidth = (int) (8.26 * PHPExcel_Shared_String::CountCharacters($columnText));
- $columnWidth = $columnWidth * $fontSize / 11; // extrapolate from font size
- break;
-
- case 'Arial':
- // value 7 was found via interpolation by inspecting real Excel files with Arial 10 font.
- $columnWidth = (int) (7 * PHPExcel_Shared_String::CountCharacters($columnText));
- $columnWidth = $columnWidth * $fontSize / 10; // extrapolate from font size
- break;
-
- case 'Verdana':
- // value 8 was found via interpolation by inspecting real Excel files with Verdana 10 font.
- $columnWidth = (int) (8 * PHPExcel_Shared_String::CountCharacters($columnText));
- $columnWidth = $columnWidth * $fontSize / 10; // extrapolate from font size
- break;
-
- default:
- // just assume Calibri
- $columnWidth = (int) (8.26 * PHPExcel_Shared_String::CountCharacters($columnText));
- $columnWidth = $columnWidth * $fontSize / 11; // extrapolate from font size
- break;
- }
-
- // Calculate approximate rotated column width
- if ($rotation !== 0) {
- if ($rotation == -165) {
- // stacked text
- $columnWidth = 4; // approximation
- } else {
- // rotated text
- $columnWidth = $columnWidth * cos(deg2rad($rotation))
- + $fontSize * abs(sin(deg2rad($rotation))) / 5; // approximation
- }
- }
-
- // pixel width is an integer
- $columnWidth = (int) $columnWidth;
- return $columnWidth;
- }
-
- /**
- * Calculate an (approximate) pixel size, based on a font points size
- *
- * @param int $fontSizeInPoints Font size (in points)
- * @return int Font size (in pixels)
- */
- public static function fontSizeToPixels($fontSizeInPoints = 11) {
- return (int) ((4 / 3) * $fontSizeInPoints);
- }
-
- /**
- * Calculate an (approximate) pixel size, based on inch size
- *
- * @param int $sizeInInch Font size (in inch)
- * @return int Size (in pixels)
- */
- public static function inchSizeToPixels($sizeInInch = 1) {
- return ($sizeInInch * 96);
- }
-
- /**
- * Calculate an (approximate) pixel size, based on centimeter size
- *
- * @param int $sizeInCm Font size (in centimeters)
- * @return int Size (in pixels)
- */
- public static function centimeterSizeToPixels($sizeInCm = 1) {
- return ($sizeInCm * 37.795275591);
- }
-
- /**
- * Returns the font path given the font
- *
- * @param PHPExcel_Style_Font
- * @return string Path to TrueType font file
- */
- public static function getTrueTypeFontFileFromFont($font) {
- if (!file_exists(self::$trueTypeFontPath) || !is_dir(self::$trueTypeFontPath)) {
- throw new Exception('Valid directory to TrueType Font files not specified');
- }
-
- $name = $font->getName();
- $bold = $font->getBold();
- $italic = $font->getItalic();
-
- // Check if we can map font to true type font file
- switch ($name) {
- case 'Arial':
- $fontFile = (
- $bold ? ($italic ? self::ARIAL_BOLD_ITALIC : self::ARIAL_BOLD)
- : ($italic ? self::ARIAL_ITALIC : self::ARIAL)
- );
- break;
-
- case 'Calibri':
- $fontFile = (
- $bold ? ($italic ? self::CALIBRI_BOLD_ITALIC : self::CALIBRI_BOLD)
- : ($italic ? self::CALIBRI_ITALIC : self::CALIBRI)
- );
- break;
-
- case 'Courier New':
- $fontFile = (
- $bold ? ($italic ? self::COURIER_NEW_BOLD_ITALIC : self::COURIER_NEW_BOLD)
- : ($italic ? self::COURIER_NEW_ITALIC : self::COURIER_NEW)
- );
- break;
-
- case 'Comic Sans MS':
- $fontFile = (
- $bold ? self::COMIC_SANS_MS_BOLD : self::COMIC_SANS_MS
- );
- break;
-
- case 'Georgia':
- $fontFile = (
- $bold ? ($italic ? self::GEORGIA_BOLD_ITALIC : self::GEORGIA_BOLD)
- : ($italic ? self::GEORGIA_ITALIC : self::GEORGIA)
- );
- break;
-
- case 'Impact':
- $fontFile = self::IMPACT;
- break;
-
- case 'Liberation Sans':
- $fontFile = (
- $bold ? ($italic ? self::LIBERATION_SANS_BOLD_ITALIC : self::LIBERATION_SANS_BOLD)
- : ($italic ? self::LIBERATION_SANS_ITALIC : self::LIBERATION_SANS)
- );
- break;
-
- case 'Lucida Console':
- $fontFile = self::LUCIDA_CONSOLE;
- break;
-
- case 'Lucida Sans Unicode':
- $fontFile = self::LUCIDA_SANS_UNICODE;
- break;
-
- case 'Microsoft Sans Serif':
- $fontFile = self::MICROSOFT_SANS_SERIF;
- break;
-
- case 'Palatino Linotype':
- $fontFile = (
- $bold ? ($italic ? self::PALATINO_LINOTYPE_BOLD_ITALIC : self::PALATINO_LINOTYPE_BOLD)
- : ($italic ? self::PALATINO_LINOTYPE_ITALIC : self::PALATINO_LINOTYPE)
- );
- break;
-
- case 'Symbol':
- $fontFile = self::SYMBOL;
- break;
-
- case 'Tahoma':
- $fontFile = (
- $bold ? self::TAHOMA_BOLD : self::TAHOMA
- );
- break;
-
- case 'Times New Roman':
- $fontFile = (
- $bold ? ($italic ? self::TIMES_NEW_ROMAN_BOLD_ITALIC : self::TIMES_NEW_ROMAN_BOLD)
- : ($italic ? self::TIMES_NEW_ROMAN_ITALIC : self::TIMES_NEW_ROMAN)
- );
- break;
-
- case 'Trebuchet MS':
- $fontFile = (
- $bold ? ($italic ? self::TREBUCHET_MS_BOLD_ITALIC : self::TREBUCHET_MS_BOLD)
- : ($italic ? self::TREBUCHET_MS_ITALIC : self::TREBUCHET_MS)
- );
- break;
-
- case 'Verdana':
- $fontFile = (
- $bold ? ($italic ? self::VERDANA_BOLD_ITALIC : self::VERDANA_BOLD)
- : ($italic ? self::VERDANA_ITALIC : self::VERDANA)
- );
- break;
-
- default:
- throw new Exception('Unknown font name "'. $name .'". Cannot map to TrueType font file');
- break;
- }
-
- $fontFile = self::$trueTypeFontPath . $fontFile;
-
- // Check if file actually exists
- if (!file_exists($fontFile)) {
- throw New Exception('TrueType Font file not found');
- }
-
- return $fontFile;
- }
-
- /**
- * Returns the associated charset for the font name.
- *
- * @param string $name Font name
- * @return int Character set code
- */
- public static function getCharsetFromFontName($name)
- {
- switch ($name) {
- // Add more cases. Check FONT records in real Excel files.
- case 'EucrosiaUPC': return self::CHARSET_ANSI_THAI;
- case 'Wingdings': return self::CHARSET_SYMBOL;
- case 'Wingdings 2': return self::CHARSET_SYMBOL;
- case 'Wingdings 3': return self::CHARSET_SYMBOL;
- default: return self::CHARSET_ANSI_LATIN;
- }
- }
-
- /**
- * Get the effective column width for columns without a column dimension or column with width -1
- * For example, for Calibri 11 this is 9.140625 (64 px)
- *
- * @param PHPExcel_Style_Font $font The workbooks default font
- * @param boolean $pPixels true = return column width in pixels, false = return in OOXML units
- * @return mixed Column width
- */
- public static function getDefaultColumnWidthByFont(PHPExcel_Style_Font $font, $pPixels = false)
- {
- if (isset(self::$defaultColumnWidths[$font->getName()][$font->getSize()])) {
- // Exact width can be determined
- $columnWidth = $pPixels ?
- self::$defaultColumnWidths[$font->getName()][$font->getSize()]['px']
- : self::$defaultColumnWidths[$font->getName()][$font->getSize()]['width'];
-
- } else {
- // We don't have data for this particular font and size, use approximation by
- // extrapolating from Calibri 11
- $columnWidth = $pPixels ?
- self::$defaultColumnWidths['Calibri'][11]['px']
- : self::$defaultColumnWidths['Calibri'][11]['width'];
- $columnWidth = $columnWidth * $font->getSize() / 11;
-
- // Round pixels to closest integer
- if ($pPixels) {
- $columnWidth = (int) round($columnWidth);
- }
- }
-
- return $columnWidth;
- }
-
- /**
- * Get the effective row height for rows without a row dimension or rows with height -1
- * For example, for Calibri 11 this is 15 points
- *
- * @param PHPExcel_Style_Font $font The workbooks default font
- * @return float Row height in points
- */
- public static function getDefaultRowHeightByFont(PHPExcel_Style_Font $font)
- {
- switch ($font->getName()) {
- case 'Arial':
- switch ($font->getSize()) {
- case 10:
- // inspection of Arial 10 workbook says 12.75pt ~17px
- $rowHeight = 12.75;
- break;
-
- case 9:
- // inspection of Arial 9 workbook says 12.00pt ~16px
- $rowHeight = 12;
- break;
-
- case 8:
- // inspection of Arial 8 workbook says 11.25pt ~15px
- $rowHeight = 11.25;
- break;
-
- case 7:
- // inspection of Arial 7 workbook says 9.00pt ~12px
- $rowHeight = 9;
- break;
-
- case 6:
- case 5:
- // inspection of Arial 5,6 workbook says 8.25pt ~11px
- $rowHeight = 8.25;
- break;
-
- case 4:
- // inspection of Arial 4 workbook says 6.75pt ~9px
- $rowHeight = 6.75;
- break;
-
- case 3:
- // inspection of Arial 3 workbook says 6.00pt ~8px
- $rowHeight = 6;
- break;
-
- case 2:
- case 1:
- // inspection of Arial 1,2 workbook says 5.25pt ~7px
- $rowHeight = 5.25;
- break;
-
- default:
- // use Arial 10 workbook as an approximation, extrapolation
- $rowHeight = 12.75 * $font->getSize() / 10;
- break;
- }
- break;
-
- case 'Calibri':
- switch ($font->getSize()) {
- case 11:
- // inspection of Calibri 11 workbook says 15.00pt ~20px
- $rowHeight = 15;
- break;
-
- case 10:
- // inspection of Calibri 10 workbook says 12.75pt ~17px
- $rowHeight = 12.75;
- break;
-
- case 9:
- // inspection of Calibri 9 workbook says 12.00pt ~16px
- $rowHeight = 12;
- break;
-
- case 8:
- // inspection of Calibri 8 workbook says 11.25pt ~15px
- $rowHeight = 11.25;
- break;
-
- case 7:
- // inspection of Calibri 7 workbook says 9.00pt ~12px
- $rowHeight = 9;
- break;
-
- case 6:
- case 5:
- // inspection of Calibri 5,6 workbook says 8.25pt ~11px
- $rowHeight = 8.25;
- break;
-
- case 4:
- // inspection of Calibri 4 workbook says 6.75pt ~9px
- $rowHeight = 6.75;
- break;
-
- case 3:
- // inspection of Calibri 3 workbook says 6.00pt ~8px
- $rowHeight = 6.00;
- break;
-
- case 2:
- case 1:
- // inspection of Calibri 1,2 workbook says 5.25pt ~7px
- $rowHeight = 5.25;
- break;
-
- default:
- // use Calibri 11 workbook as an approximation, extrapolation
- $rowHeight = 15 * $font->getSize() / 11;
- break;
- }
- break;
-
- case 'Verdana':
- switch ($font->getSize()) {
- case 10:
- // inspection of Verdana 10 workbook says 12.75pt ~17px
- $rowHeight = 12.75;
- break;
-
- case 9:
- // inspection of Verdana 9 workbook says 11.25pt ~15px
- $rowHeight = 11.25;
- break;
-
- case 8:
- // inspection of Verdana 8 workbook says 10.50pt ~14px
- $rowHeight = 10.50;
- break;
-
- case 7:
- // inspection of Verdana 7 workbook says 9.00pt ~12px
- $rowHeight = 9.00;
- break;
-
- case 6:
- case 5:
- // inspection of Verdana 5,6 workbook says 8.25pt ~11px
- $rowHeight = 8.25;
- break;
-
- case 4:
- // inspection of Verdana 4 workbook says 6.75pt ~9px
- $rowHeight = 6.75;
- break;
-
- case 3:
- // inspection of Verdana 3 workbook says 6.00pt ~8px
- $rowHeight = 6;
- break;
-
- case 2:
- case 1:
- // inspection of Verdana 1,2 workbook says 5.25pt ~7px
- $rowHeight = 5.25;
- break;
-
- default:
- // use Verdana 10 workbook as an approximation, extrapolation
- $rowHeight = 12.75 * $font->getSize() / 10;
- break;
- }
- break;
-
- default:
- // just use Calibri as an approximation
- $rowHeight = 15 * $font->getSize() / 11;
- break;
- }
-
- return $rowHeight;
- }
-
-}
diff --git a/admin/survey/excel/PHPExcel/Shared/JAMA/CHANGELOG.TXT b/admin/survey/excel/PHPExcel/Shared/JAMA/CHANGELOG.TXT
deleted file mode 100644
index 2fc9cd4..0000000
--- a/admin/survey/excel/PHPExcel/Shared/JAMA/CHANGELOG.TXT
+++ /dev/null
@@ -1,16 +0,0 @@
-Mar 1, 2005 11:15 AST by PM
-
-+ For consistency, renamed Math.php to Maths.java, utils to util,
- tests to test, docs to doc -
-
-+ Removed conditional logic from top of Matrix class.
-
-+ Switched to using hypo function in Maths.php for all php-hypot calls.
- NOTE TO SELF: Need to make sure that all decompositions have been
- switched over to using the bundled hypo.
-
-Feb 25, 2005 at 10:00 AST by PM
-
-+ Recommend using simpler Error.php instead of JAMA_Error.php but
- can be persuaded otherwise.
-
diff --git a/admin/survey/excel/PHPExcel/Shared/JAMA/CholeskyDecomposition.php b/admin/survey/excel/PHPExcel/Shared/JAMA/CholeskyDecomposition.php
deleted file mode 100644
index 2d1fdfb..0000000
--- a/admin/survey/excel/PHPExcel/Shared/JAMA/CholeskyDecomposition.php
+++ /dev/null
@@ -1,149 +0,0 @@
-<?php
-/**
- * @package JAMA
- *
- * Cholesky decomposition class
- *
- * For a symmetric, positive definite matrix A, the Cholesky decomposition
- * is an lower triangular matrix L so that A = L*L'.
- *
- * If the matrix is not symmetric or positive definite, the constructor
- * returns a partial decomposition and sets an internal flag that may
- * be queried by the isSPD() method.
- *
- * @author Paul Meagher
- * @author Michael Bommarito
- * @version 1.2
- */
-class CholeskyDecomposition {
-
- /**
- * Decomposition storage
- * @var array
- * @access private
- */
- private $L = array();
-
- /**
- * Matrix row and column dimension
- * @var int
- * @access private
- */
- private $m;
-
- /**
- * Symmetric positive definite flag
- * @var boolean
- * @access private
- */
- private $isspd = true;
-
-
- /**
- * CholeskyDecomposition
- *
- * Class constructor - decomposes symmetric positive definite matrix
- * @param mixed Matrix square symmetric positive definite matrix
- */
- public function __construct($A = null) {
- if ($A instanceof Matrix) {
- $this->L = $A->getArray();
- $this->m = $A->getRowDimension();
-
- for($i = 0; $i < $this->m; ++$i) {
- for($j = $i; $j < $this->m; ++$j) {
- for($sum = $this->L[$i][$j], $k = $i - 1; $k >= 0; --$k) {
- $sum -= $this->L[$i][$k] * $this->L[$j][$k];
- }
- if ($i == $j) {
- if ($sum >= 0) {
- $this->L[$i][$i] = sqrt($sum);
- } else {
- $this->isspd = false;
- }
- } else {
- if ($this->L[$i][$i] != 0) {
- $this->L[$j][$i] = $sum / $this->L[$i][$i];
- }
- }
- }
-
- for ($k = $i+1; $k < $this->m; ++$k) {
- $this->L[$i][$k] = 0.0;
- }
- }
- } else {
- throw new Exception(JAMAError(ArgumentTypeException));
- }
- } // function __construct()
-
-
- /**
- * Is the matrix symmetric and positive definite?
- *
- * @return boolean
- */
- public function isSPD() {
- return $this->isspd;
- } // function isSPD()
-
-
- /**
- * getL
- *
- * Return triangular factor.
- * @return Matrix Lower triangular matrix
- */
- public function getL() {
- return new Matrix($this->L);
- } // function getL()
-
-
- /**
- * Solve A*X = B
- *
- * @param $B Row-equal matrix
- * @return Matrix L * L' * X = B
- */
- public function solve($B = null) {
- if ($B instanceof Matrix) {
- if ($B->getRowDimension() == $this->m) {
- if ($this->isspd) {
- $X = $B->getArrayCopy();
- $nx = $B->getColumnDimension();
-
- for ($k = 0; $k < $this->m; ++$k) {
- for ($i = $k + 1; $i < $this->m; ++$i) {
- for ($j = 0; $j < $nx; ++$j) {
- $X[$i][$j] -= $X[$k][$j] * $this->L[$i][$k];
- }
- }
- for ($j = 0; $j < $nx; ++$j) {
- $X[$k][$j] /= $this->L[$k][$k];
- }
- }
-
- for ($k = $this->m - 1; $k >= 0; --$k) {
- for ($j = 0; $j < $nx; ++$j) {
- $X[$k][$j] /= $this->L[$k][$k];
- }
- for ($i = 0; $i < $k; ++$i) {
- for ($j = 0; $j < $nx; ++$j) {
- $X[$i][$j] -= $X[$k][$j] * $this->L[$k][$i];
- }
- }
- }
-
- return new Matrix($X, $this->m, $nx);
- } else {
- throw new Exception(JAMAError(MatrixSPDException));
- }
- } else {
- throw new Exception(JAMAError(MatrixDimensionException));
- }
- } else {
- throw new Exception(JAMAError(ArgumentTypeException));
- }
- } // function solve()
-
-} // class CholeskyDecomposition
diff --git a/admin/survey/excel/PHPExcel/Shared/JAMA/EigenvalueDecomposition.php b/admin/survey/excel/PHPExcel/Shared/JAMA/EigenvalueDecomposition.php
deleted file mode 100644
index 716af82..0000000
--- a/admin/survey/excel/PHPExcel/Shared/JAMA/EigenvalueDecomposition.php
+++ /dev/null
@@ -1,862 +0,0 @@
-<?php
-/**
- * @package JAMA
- *
- * Class to obtain eigenvalues and eigenvectors of a real matrix.
- *
- * If A is symmetric, then A = V*D*V' where the eigenvalue matrix D
- * is diagonal and the eigenvector matrix V is orthogonal (i.e.
- * A = V.times(D.times(V.transpose())) and V.times(V.transpose())
- * equals the identity matrix).
- *
- * If A is not symmetric, then the eigenvalue matrix D is block diagonal
- * with the real eigenvalues in 1-by-1 blocks and any complex eigenvalues,
- * lambda + i*mu, in 2-by-2 blocks, [lambda, mu; -mu, lambda]. The
- * columns of V represent the eigenvectors in the sense that A*V = V*D,
- * i.e. A.times(V) equals V.times(D). The matrix V may be badly
- * conditioned, or even singular, so the validity of the equation
- * A = V*D*inverse(V) depends upon V.cond().
- *
- * @author Paul Meagher
- * @license PHP v3.0
- * @version 1.1
- */
-class EigenvalueDecomposition {
-
- /**
- * Row and column dimension (square matrix).
- * @var int
- */
- private $n;
-
- /**
- * Internal symmetry flag.
- * @var int
- */
- private $issymmetric;
-
- /**
- * Arrays for internal storage of eigenvalues.
- * @var array
- */
- private $d = array();
- private $e = array();
-
- /**
- * Array for internal storage of eigenvectors.
- * @var array
- */
- private $V = array();
-
- /**
- * Array for internal storage of nonsymmetric Hessenberg form.
- * @var array
- */
- private $H = array();
-
- /**
- * Working storage for nonsymmetric algorithm.
- * @var array
- */
- private $ort;
-
- /**
- * Used for complex scalar division.
- * @var float
- */
- private $cdivr;
- private $cdivi;
-
-
- /**
- * Symmetric Householder reduction to tridiagonal form.
- *
- * @access private
- */
- private function tred2 () {
- // This is derived from the Algol procedures tred2 by
- // Bowdler, Martin, Reinsch, and Wilkinson, Handbook for
- // Auto. Comp., Vol.ii-Linear Algebra, and the corresponding
- // Fortran subroutine in EISPACK.
- $this->d = $this->V[$this->n-1];
- // Householder reduction to tridiagonal form.
- for ($i = $this->n-1; $i > 0; --$i) {
- $i_ = $i -1;
- // Scale to avoid under/overflow.
- $h = $scale = 0.0;
- $scale += array_sum(array_map(abs, $this->d));
- if ($scale == 0.0) {
- $this->e[$i] = $this->d[$i_];
- $this->d = array_slice($this->V[$i_], 0, $i_);
- for ($j = 0; $j < $i; ++$j) {
- $this->V[$j][$i] = $this->V[$i][$j] = 0.0;
- }
- } else {
- // Generate Householder vector.
- for ($k = 0; $k < $i; ++$k) {
- $this->d[$k] /= $scale;
- $h += pow($this->d[$k], 2);
- }
- $f = $this->d[$i_];
- $g = sqrt($h);
- if ($f > 0) {
- $g = -$g;
- }
- $this->e[$i] = $scale * $g;
- $h = $h - $f * $g;
- $this->d[$i_] = $f - $g;
- for ($j = 0; $j < $i; ++$j) {
- $this->e[$j] = 0.0;
- }
- // Apply similarity transformation to remaining columns.
- for ($j = 0; $j < $i; ++$j) {
- $f = $this->d[$j];
- $this->V[$j][$i] = $f;
- $g = $this->e[$j] + $this->V[$j][$j] * $f;
- for ($k = $j+1; $k <= $i_; ++$k) {
- $g += $this->V[$k][$j] * $this->d[$k];
- $this->e[$k] += $this->V[$k][$j] * $f;
- }
- $this->e[$j] = $g;
- }
- $f = 0.0;
- for ($j = 0; $j < $i; ++$j) {
- $this->e[$j] /= $h;
- $f += $this->e[$j] * $this->d[$j];
- }
- $hh = $f / (2 * $h);
- for ($j=0; $j < $i; ++$j) {
- $this->e[$j] -= $hh * $this->d[$j];
- }
- for ($j = 0; $j < $i; ++$j) {
- $f = $this->d[$j];
- $g = $this->e[$j];
- for ($k = $j; $k <= $i_; ++$k) {
- $this->V[$k][$j] -= ($f * $this->e[$k] + $g * $this->d[$k]);
- }
- $this->d[$j] = $this->V[$i-1][$j];
- $this->V[$i][$j] = 0.0;
- }
- }
- $this->d[$i] = $h;
- }
-
- // Accumulate transformations.
- for ($i = 0; $i < $this->n-1; ++$i) {
- $this->V[$this->n-1][$i] = $this->V[$i][$i];
- $this->V[$i][$i] = 1.0;
- $h = $this->d[$i+1];
- if ($h != 0.0) {
- for ($k = 0; $k <= $i; ++$k) {
- $this->d[$k] = $this->V[$k][$i+1] / $h;
- }
- for ($j = 0; $j <= $i; ++$j) {
- $g = 0.0;
- for ($k = 0; $k <= $i; ++$k) {
- $g += $this->V[$k][$i+1] * $this->V[$k][$j];
- }
- for ($k = 0; $k <= $i; ++$k) {
- $this->V[$k][$j] -= $g * $this->d[$k];
- }
- }
- }
- for ($k = 0; $k <= $i; ++$k) {
- $this->V[$k][$i+1] = 0.0;
- }
- }
-
- $this->d = $this->V[$this->n-1];
- $this->V[$this->n-1] = array_fill(0, $j, 0.0);
- $this->V[$this->n-1][$this->n-1] = 1.0;
- $this->e[0] = 0.0;
- }
-
-
- /**
- * Symmetric tridiagonal QL algorithm.
- *
- * This is derived from the Algol procedures tql2, by
- * Bowdler, Martin, Reinsch, and Wilkinson, Handbook for
- * Auto. Comp., Vol.ii-Linear Algebra, and the corresponding
- * Fortran subroutine in EISPACK.
- *
- * @access private
- */
- private function tql2() {
- for ($i = 1; $i < $this->n; ++$i) {
- $this->e[$i-1] = $this->e[$i];
- }
- $this->e[$this->n-1] = 0.0;
- $f = 0.0;
- $tst1 = 0.0;
- $eps = pow(2.0,-52.0);
-
- for ($l = 0; $l < $this->n; ++$l) {
- // Find small subdiagonal element
- $tst1 = max($tst1, abs($this->d[$l]) + abs($this->e[$l]));
- $m = $l;
- while ($m < $this->n) {
- if (abs($this->e[$m]) <= $eps * $tst1)
- break;
- ++$m;
- }
- // If m == l, $this->d[l] is an eigenvalue,
- // otherwise, iterate.
- if ($m > $l) {
- $iter = 0;
- do {
- // Could check iteration count here.
- $iter += 1;
- // Compute implicit shift
- $g = $this->d[$l];
- $p = ($this->d[$l+1] - $g) / (2.0 * $this->e[$l]);
- $r = hypo($p, 1.0);
- if ($p < 0)
- $r *= -1;
- $this->d[$l] = $this->e[$l] / ($p + $r);
- $this->d[$l+1] = $this->e[$l] * ($p + $r);
- $dl1 = $this->d[$l+1];
- $h = $g - $this->d[$l];
- for ($i = $l + 2; $i < $this->n; ++$i)
- $this->d[$i] -= $h;
- $f += $h;
- // Implicit QL transformation.
- $p = $this->d[$m];
- $c = 1.0;
- $c2 = $c3 = $c;
- $el1 = $this->e[$l + 1];
- $s = $s2 = 0.0;
- for ($i = $m-1; $i >= $l; --$i) {
- $c3 = $c2;
- $c2 = $c;
- $s2 = $s;
- $g = $c * $this->e[$i];
- $h = $c * $p;
- $r = hypo($p, $this->e[$i]);
- $this->e[$i+1] = $s * $r;
- $s = $this->e[$i] / $r;
- $c = $p / $r;
- $p = $c * $this->d[$i] - $s * $g;
- $this->d[$i+1] = $h + $s * ($c * $g + $s * $this->d[$i]);
- // Accumulate transformation.
- for ($k = 0; $k < $this->n; ++$k) {
- $h = $this->V[$k][$i+1];
- $this->V[$k][$i+1] = $s * $this->V[$k][$i] + $c * $h;
- $this->V[$k][$i] = $c * $this->V[$k][$i] - $s * $h;
- }
- }
- $p = -$s * $s2 * $c3 * $el1 * $this->e[$l] / $dl1;
- $this->e[$l] = $s * $p;
- $this->d[$l] = $c * $p;
- // Check for convergence.
- } while (abs($this->e[$l]) > $eps * $tst1);
- }
- $this->d[$l] = $this->d[$l] + $f;
- $this->e[$l] = 0.0;
- }
-
- // Sort eigenvalues and corresponding vectors.
- for ($i = 0; $i < $this->n - 1; ++$i) {
- $k = $i;
- $p = $this->d[$i];
- for ($j = $i+1; $j < $this->n; ++$j) {
- if ($this->d[$j] < $p) {
- $k = $j;
- $p = $this->d[$j];
- }
- }
- if ($k != $i) {
- $this->d[$k] = $this->d[$i];
- $this->d[$i] = $p;
- for ($j = 0; $j < $this->n; ++$j) {
- $p = $this->V[$j][$i];
- $this->V[$j][$i] = $this->V[$j][$k];
- $this->V[$j][$k] = $p;
- }
- }
- }
- }
-
-
- /**
- * Nonsymmetric reduction to Hessenberg form.
- *
- * This is derived from the Algol procedures orthes and ortran,
- * by Martin and Wilkinson, Handbook for Auto. Comp.,
- * Vol.ii-Linear Algebra, and the corresponding
- * Fortran subroutines in EISPACK.
- *
- * @access private
- */
- private function orthes () {
- $low = 0;
- $high = $this->n-1;
-
- for ($m = $low+1; $m <= $high-1; ++$m) {
- // Scale column.
- $scale = 0.0;
- for ($i = $m; $i <= $high; ++$i) {
- $scale = $scale + abs($this->H[$i][$m-1]);
- }
- if ($scale != 0.0) {
- // Compute Householder transformation.
- $h = 0.0;
- for ($i = $high; $i >= $m; --$i) {
- $this->ort[$i] = $this->H[$i][$m-1] / $scale;
- $h += $this->ort[$i] * $this->ort[$i];
- }
- $g = sqrt($h);
- if ($this->ort[$m] > 0) {
- $g *= -1;
- }
- $h -= $this->ort[$m] * $g;
- $this->ort[$m] -= $g;
- // Apply Householder similarity transformation
- // H = (I -u * u' / h) * H * (I -u * u') / h)
- for ($j = $m; $j < $this->n; ++$j) {
- $f = 0.0;
- for ($i = $high; $i >= $m; --$i) {
- $f += $this->ort[$i] * $this->H[$i][$j];
- }
- $f /= $h;
- for ($i = $m; $i <= $high; ++$i) {
- $this->H[$i][$j] -= $f * $this->ort[$i];
- }
- }
- for ($i = 0; $i <= $high; ++$i) {
- $f = 0.0;
- for ($j = $high; $j >= $m; --$j) {
- $f += $this->ort[$j] * $this->H[$i][$j];
- }
- $f = $f / $h;
- for ($j = $m; $j <= $high; ++$j) {
- $this->H[$i][$j] -= $f * $this->ort[$j];
- }
- }
- $this->ort[$m] = $scale * $this->ort[$m];
- $this->H[$m][$m-1] = $scale * $g;
- }
- }
-
- // Accumulate transformations (Algol's ortran).
- for ($i = 0; $i < $this->n; ++$i) {
- for ($j = 0; $j < $this->n; ++$j) {
- $this->V[$i][$j] = ($i == $j ? 1.0 : 0.0);
- }
- }
- for ($m = $high-1; $m >= $low+1; --$m) {
- if ($this->H[$m][$m-1] != 0.0) {
- for ($i = $m+1; $i <= $high; ++$i) {
- $this->ort[$i] = $this->H[$i][$m-1];
- }
- for ($j = $m; $j <= $high; ++$j) {
- $g = 0.0;
- for ($i = $m; $i <= $high; ++$i) {
- $g += $this->ort[$i] * $this->V[$i][$j];
- }
- // Double division avoids possible underflow
- $g = ($g / $this->ort[$m]) / $this->H[$m][$m-1];
- for ($i = $m; $i <= $high; ++$i) {
- $this->V[$i][$j] += $g * $this->ort[$i];
- }
- }
- }
- }
- }
-
-
- /**
- * Performs complex division.
- *
- * @access private
- */
- private function cdiv($xr, $xi, $yr, $yi) {
- if (abs($yr) > abs($yi)) {
- $r = $yi / $yr;
- $d = $yr + $r * $yi;
- $this->cdivr = ($xr + $r * $xi) / $d;
- $this->cdivi = ($xi - $r * $xr) / $d;
- } else {
- $r = $yr / $yi;
- $d = $yi + $r * $yr;
- $this->cdivr = ($r * $xr + $xi) / $d;
- $this->cdivi = ($r * $xi - $xr) / $d;
- }
- }
-
-
- /**
- * Nonsymmetric reduction from Hessenberg to real Schur form.
- *
- * Code is derived from the Algol procedure hqr2,
- * by Martin and Wilkinson, Handbook for Auto. Comp.,
- * Vol.ii-Linear Algebra, and the corresponding
- * Fortran subroutine in EISPACK.
- *
- * @access private
- */
- private function hqr2 () {
- // Initialize
- $nn = $this->n;
- $n = $nn - 1;
- $low = 0;
- $high = $nn - 1;
- $eps = pow(2.0, -52.0);
- $exshift = 0.0;
- $p = $q = $r = $s = $z = 0;
- // Store roots isolated by balanc and compute matrix norm
- $norm = 0.0;
-
- for ($i = 0; $i < $nn; ++$i) {
- if (($i < $low) OR ($i > $high)) {
- $this->d[$i] = $this->H[$i][$i];
- $this->e[$i] = 0.0;
- }
- for ($j = max($i-1, 0); $j < $nn; ++$j) {
- $norm = $norm + abs($this->H[$i][$j]);
- }
- }
-
- // Outer loop over eigenvalue index
- $iter = 0;
- while ($n >= $low) {
- // Look for single small sub-diagonal element
- $l = $n;
- while ($l > $low) {
- $s = abs($this->H[$l-1][$l-1]) + abs($this->H[$l][$l]);
- if ($s == 0.0) {
- $s = $norm;
- }
- if (abs($this->H[$l][$l-1]) < $eps * $s) {
- break;
- }
- --$l;
- }
- // Check for convergence
- // One root found
- if ($l == $n) {
- $this->H[$n][$n] = $this->H[$n][$n] + $exshift;
- $this->d[$n] = $this->H[$n][$n];
- $this->e[$n] = 0.0;
- --$n;
- $iter = 0;
- // Two roots found
- } else if ($l == $n-1) {
- $w = $this->H[$n][$n-1] * $this->H[$n-1][$n];
- $p = ($this->H[$n-1][$n-1] - $this->H[$n][$n]) / 2.0;
- $q = $p * $p + $w;
- $z = sqrt(abs($q));
- $this->H[$n][$n] = $this->H[$n][$n] + $exshift;
- $this->H[$n-1][$n-1] = $this->H[$n-1][$n-1] + $exshift;
- $x = $this->H[$n][$n];
- // Real pair
- if ($q >= 0) {
- if ($p >= 0) {
- $z = $p + $z;
- } else {
- $z = $p - $z;
- }
- $this->d[$n-1] = $x + $z;
- $this->d[$n] = $this->d[$n-1];
- if ($z != 0.0) {
- $this->d[$n] = $x - $w / $z;
- }
- $this->e[$n-1] = 0.0;
- $this->e[$n] = 0.0;
- $x = $this->H[$n][$n-1];
- $s = abs($x) + abs($z);
- $p = $x / $s;
- $q = $z / $s;
- $r = sqrt($p * $p + $q * $q);
- $p = $p / $r;
- $q = $q / $r;
- // Row modification
- for ($j = $n-1; $j < $nn; ++$j) {
- $z = $this->H[$n-1][$j];
- $this->H[$n-1][$j] = $q * $z + $p * $this->H[$n][$j];
- $this->H[$n][$j] = $q * $this->H[$n][$j] - $p * $z;
- }
- // Column modification
- for ($i = 0; $i <= n; ++$i) {
- $z = $this->H[$i][$n-1];
- $this->H[$i][$n-1] = $q * $z + $p * $this->H[$i][$n];
- $this->H[$i][$n] = $q * $this->H[$i][$n] - $p * $z;
- }
- // Accumulate transformations
- for ($i = $low; $i <= $high; ++$i) {
- $z = $this->V[$i][$n-1];
- $this->V[$i][$n-1] = $q * $z + $p * $this->V[$i][$n];
- $this->V[$i][$n] = $q * $this->V[$i][$n] - $p * $z;
- }
- // Complex pair
- } else {
- $this->d[$n-1] = $x + $p;
- $this->d[$n] = $x + $p;
- $this->e[$n-1] = $z;
- $this->e[$n] = -$z;
- }
- $n = $n - 2;
- $iter = 0;
- // No convergence yet
- } else {
- // Form shift
- $x = $this->H[$n][$n];
- $y = 0.0;
- $w = 0.0;
- if ($l < $n) {
- $y = $this->H[$n-1][$n-1];
- $w = $this->H[$n][$n-1] * $this->H[$n-1][$n];
- }
- // Wilkinson's original ad hoc shift
- if ($iter == 10) {
- $exshift += $x;
- for ($i = $low; $i <= $n; ++$i) {
- $this->H[$i][$i] -= $x;
- }
- $s = abs($this->H[$n][$n-1]) + abs($this->H[$n-1][$n-2]);
- $x = $y = 0.75 * $s;
- $w = -0.4375 * $s * $s;
- }
- // MATLAB's new ad hoc shift
- if ($iter == 30) {
- $s = ($y - $x) / 2.0;
- $s = $s * $s + $w;
- if ($s > 0) {
- $s = sqrt($s);
- if ($y < $x) {
- $s = -$s;
- }
- $s = $x - $w / (($y - $x) / 2.0 + $s);
- for ($i = $low; $i <= $n; ++$i) {
- $this->H[$i][$i] -= $s;
- }
- $exshift += $s;
- $x = $y = $w = 0.964;
- }
- }
- // Could check iteration count here.
- $iter = $iter + 1;
- // Look for two consecutive small sub-diagonal elements
- $m = $n - 2;
- while ($m >= $l) {
- $z = $this->H[$m][$m];
- $r = $x - $z;
- $s = $y - $z;
- $p = ($r * $s - $w) / $this->H[$m+1][$m] + $this->H[$m][$m+1];
- $q = $this->H[$m+1][$m+1] - $z - $r - $s;
- $r = $this->H[$m+2][$m+1];
- $s = abs($p) + abs($q) + abs($r);
- $p = $p / $s;
- $q = $q / $s;
- $r = $r / $s;
- if ($m == $l) {
- break;
- }
- if (abs($this->H[$m][$m-1]) * (abs($q) + abs($r)) <
- $eps * (abs($p) * (abs($this->H[$m-1][$m-1]) + abs($z) + abs($this->H[$m+1][$m+1])))) {
- break;
- }
- --$m;
- }
- for ($i = $m + 2; $i <= $n; ++$i) {
- $this->H[$i][$i-2] = 0.0;
- if ($i > $m+2) {
- $this->H[$i][$i-3] = 0.0;
- }
- }
- // Double QR step involving rows l:n and columns m:n
- for ($k = $m; $k <= $n-1; ++$k) {
- $notlast = ($k != $n-1);
- if ($k != $m) {
- $p = $this->H[$k][$k-1];
- $q = $this->H[$k+1][$k-1];
- $r = ($notlast ? $this->H[$k+2][$k-1] : 0.0);
- $x = abs($p) + abs($q) + abs($r);
- if ($x != 0.0) {
- $p = $p / $x;
- $q = $q / $x;
- $r = $r / $x;
- }
- }
- if ($x == 0.0) {
- break;
- }
- $s = sqrt($p * $p + $q * $q + $r * $r);
- if ($p < 0) {
- $s = -$s;
- }
- if ($s != 0) {
- if ($k != $m) {
- $this->H[$k][$k-1] = -$s * $x;
- } elseif ($l != $m) {
- $this->H[$k][$k-1] = -$this->H[$k][$k-1];
- }
- $p = $p + $s;
- $x = $p / $s;
- $y = $q / $s;
- $z = $r / $s;
- $q = $q / $p;
- $r = $r / $p;
- // Row modification
- for ($j = $k; $j < $nn; ++$j) {
- $p = $this->H[$k][$j] + $q * $this->H[$k+1][$j];
- if ($notlast) {
- $p = $p + $r * $this->H[$k+2][$j];
- $this->H[$k+2][$j] = $this->H[$k+2][$j] - $p * $z;
- }
- $this->H[$k][$j] = $this->H[$k][$j] - $p * $x;
- $this->H[$k+1][$j] = $this->H[$k+1][$j] - $p * $y;
- }
- // Column modification
- for ($i = 0; $i <= min($n, $k+3); ++$i) {
- $p = $x * $this->H[$i][$k] + $y * $this->H[$i][$k+1];
- if ($notlast) {
- $p = $p + $z * $this->H[$i][$k+2];
- $this->H[$i][$k+2] = $this->H[$i][$k+2] - $p * $r;
- }
- $this->H[$i][$k] = $this->H[$i][$k] - $p;
- $this->H[$i][$k+1] = $this->H[$i][$k+1] - $p * $q;
- }
- // Accumulate transformations
- for ($i = $low; $i <= $high; ++$i) {
- $p = $x * $this->V[$i][$k] + $y * $this->V[$i][$k+1];
- if ($notlast) {
- $p = $p + $z * $this->V[$i][$k+2];
- $this->V[$i][$k+2] = $this->V[$i][$k+2] - $p * $r;
- }
- $this->V[$i][$k] = $this->V[$i][$k] - $p;
- $this->V[$i][$k+1] = $this->V[$i][$k+1] - $p * $q;
- }
- } // ($s != 0)
- } // k loop
- } // check convergence
- } // while ($n >= $low)
-
- // Backsubstitute to find vectors of upper triangular form
- if ($norm == 0.0) {
- return;
- }
-
- for ($n = $nn-1; $n >= 0; --$n) {
- $p = $this->d[$n];
- $q = $this->e[$n];
- // Real vector
- if ($q == 0) {
- $l = $n;
- $this->H[$n][$n] = 1.0;
- for ($i = $n-1; $i >= 0; --$i) {
- $w = $this->H[$i][$i] - $p;
- $r = 0.0;
- for ($j = $l; $j <= $n; ++$j) {
- $r = $r + $this->H[$i][$j] * $this->H[$j][$n];
- }
- if ($this->e[$i] < 0.0) {
- $z = $w;
- $s = $r;
- } else {
- $l = $i;
- if ($this->e[$i] == 0.0) {
- if ($w != 0.0) {
- $this->H[$i][$n] = -$r / $w;
- } else {
- $this->H[$i][$n] = -$r / ($eps * $norm);
- }
- // Solve real equations
- } else {
- $x = $this->H[$i][$i+1];
- $y = $this->H[$i+1][$i];
- $q = ($this->d[$i] - $p) * ($this->d[$i] - $p) + $this->e[$i] * $this->e[$i];
- $t = ($x * $s - $z * $r) / $q;
- $this->H[$i][$n] = $t;
- if (abs($x) > abs($z)) {
- $this->H[$i+1][$n] = (-$r - $w * $t) / $x;
- } else {
- $this->H[$i+1][$n] = (-$s - $y * $t) / $z;
- }
- }
- // Overflow control
- $t = abs($this->H[$i][$n]);
- if (($eps * $t) * $t > 1) {
- for ($j = $i; $j <= $n; ++$j) {
- $this->H[$j][$n] = $this->H[$j][$n] / $t;
- }
- }
- }
- }
- // Complex vector
- } else if ($q < 0) {
- $l = $n-1;
- // Last vector component imaginary so matrix is triangular
- if (abs($this->H[$n][$n-1]) > abs($this->H[$n-1][$n])) {
- $this->H[$n-1][$n-1] = $q / $this->H[$n][$n-1];
- $this->H[$n-1][$n] = -($this->H[$n][$n] - $p) / $this->H[$n][$n-1];
- } else {
- $this->cdiv(0.0, -$this->H[$n-1][$n], $this->H[$n-1][$n-1] - $p, $q);
- $this->H[$n-1][$n-1] = $this->cdivr;
- $this->H[$n-1][$n] = $this->cdivi;
- }
- $this->H[$n][$n-1] = 0.0;
- $this->H[$n][$n] = 1.0;
- for ($i = $n-2; $i >= 0; --$i) {
- // double ra,sa,vr,vi;
- $ra = 0.0;
- $sa = 0.0;
- for ($j = $l; $j <= $n; ++$j) {
- $ra = $ra + $this->H[$i][$j] * $this->H[$j][$n-1];
- $sa = $sa + $this->H[$i][$j] * $this->H[$j][$n];
- }
- $w = $this->H[$i][$i] - $p;
- if ($this->e[$i] < 0.0) {
- $z = $w;
- $r = $ra;
- $s = $sa;
- } else {
- $l = $i;
- if ($this->e[$i] == 0) {
- $this->cdiv(-$ra, -$sa, $w, $q);
- $this->H[$i][$n-1] = $this->cdivr;
- $this->H[$i][$n] = $this->cdivi;
- } else {
- // Solve complex equations
- $x = $this->H[$i][$i+1];
- $y = $this->H[$i+1][$i];
- $vr = ($this->d[$i] - $p) * ($this->d[$i] - $p) + $this->e[$i] * $this->e[$i] - $q * $q;
- $vi = ($this->d[$i] - $p) * 2.0 * $q;
- if ($vr == 0.0 & $vi == 0.0) {
- $vr = $eps * $norm * (abs($w) + abs($q) + abs($x) + abs($y) + abs($z));
- }
- $this->cdiv($x * $r - $z * $ra + $q * $sa, $x * $s - $z * $sa - $q * $ra, $vr, $vi);
- $this->H[$i][$n-1] = $this->cdivr;
- $this->H[$i][$n] = $this->cdivi;
- if (abs($x) > (abs($z) + abs($q))) {
- $this->H[$i+1][$n-1] = (-$ra - $w * $this->H[$i][$n-1] + $q * $this->H[$i][$n]) / $x;
- $this->H[$i+1][$n] = (-$sa - $w * $this->H[$i][$n] - $q * $this->H[$i][$n-1]) / $x;
- } else {
- $this->cdiv(-$r - $y * $this->H[$i][$n-1], -$s - $y * $this->H[$i][$n], $z, $q);
- $this->H[$i+1][$n-1] = $this->cdivr;
- $this->H[$i+1][$n] = $this->cdivi;
- }
- }
- // Overflow control
- $t = max(abs($this->H[$i][$n-1]),abs($this->H[$i][$n]));
- if (($eps * $t) * $t > 1) {
- for ($j = $i; $j <= $n; ++$j) {
- $this->H[$j][$n-1] = $this->H[$j][$n-1] / $t;
- $this->H[$j][$n] = $this->H[$j][$n] / $t;
- }
- }
- } // end else
- } // end for
- } // end else for complex case
- } // end for
-
- // Vectors of isolated roots
- for ($i = 0; $i < $nn; ++$i) {
- if ($i < $low | $i > $high) {
- for ($j = $i; $j < $nn; ++$j) {
- $this->V[$i][$j] = $this->H[$i][$j];
- }
- }
- }
-
- // Back transformation to get eigenvectors of original matrix
- for ($j = $nn-1; $j >= $low; --$j) {
- for ($i = $low; $i <= $high; ++$i) {
- $z = 0.0;
- for ($k = $low; $k <= min($j,$high); ++$k) {
- $z = $z + $this->V[$i][$k] * $this->H[$k][$j];
- }
- $this->V[$i][$j] = $z;
- }
- }
- } // end hqr2
-
-
- /**
- * Constructor: Check for symmetry, then construct the eigenvalue decomposition
- *
- * @access public
- * @param A Square matrix
- * @return Structure to access D and V.
- */
- public function __construct($Arg) {
- $this->A = $Arg->getArray();
- $this->n = $Arg->getColumnDimension();
-
- $issymmetric = true;
- for ($j = 0; ($j < $this->n) & $issymmetric; ++$j) {
- for ($i = 0; ($i < $this->n) & $issymmetric; ++$i) {
- $issymmetric = ($this->A[$i][$j] == $this->A[$j][$i]);
- }
- }
-
- if ($issymmetric) {
- $this->V = $this->A;
- // Tridiagonalize.
- $this->tred2();
- // Diagonalize.
- $this->tql2();
- } else {
- $this->H = $this->A;
- $this->ort = array();
- // Reduce to Hessenberg form.
- $this->orthes();
- // Reduce Hessenberg to real Schur form.
- $this->hqr2();
- }
- }
-
-
- /**
- * Return the eigenvector matrix
- *
- * @access public
- * @return V
- */
- public function getV() {
- return new Matrix($this->V, $this->n, $this->n);
- }
-
-
- /**
- * Return the real parts of the eigenvalues
- *
- * @access public
- * @return real(diag(D))
- */
- public function getRealEigenvalues() {
- return $this->d;
- }
-
-
- /**
- * Return the imaginary parts of the eigenvalues
- *
- * @access public
- * @return imag(diag(D))
- */
- public function getImagEigenvalues() {
- return $this->e;
- }
-
-
- /**
- * Return the block diagonal eigenvalue matrix
- *
- * @access public
- * @return D
- */
- public function getD() {
- for ($i = 0; $i < $this->n; ++$i) {
- $D[$i] = array_fill(0, $this->n, 0.0);
- $D[$i][$i] = $this->d[$i];
- if ($this->e[$i] == 0) {
- continue;
- }
- $o = ($this->e[$i] > 0) ? $i + 1 : $i - 1;
- $D[$i][$o] = $this->e[$i];
- }
- return new Matrix($D);
- }
-
-} // class EigenvalueDecomposition
diff --git a/admin/survey/excel/PHPExcel/Shared/JAMA/LUDecomposition.php b/admin/survey/excel/PHPExcel/Shared/JAMA/LUDecomposition.php
deleted file mode 100644
index 98e918c..0000000
--- a/admin/survey/excel/PHPExcel/Shared/JAMA/LUDecomposition.php
+++ /dev/null
@@ -1,258 +0,0 @@
-<?php
-/**
- * @package JAMA
- *
- * For an m-by-n matrix A with m >= n, the LU decomposition is an m-by-n
- * unit lower triangular matrix L, an n-by-n upper triangular matrix U,
- * and a permutation vector piv of length m so that A(piv,:) = L*U.
- * If m < n, then L is m-by-m and U is m-by-n.
- *
- * The LU decompostion with pivoting always exists, even if the matrix is
- * singular, so the constructor will never fail. The primary use of the
- * LU decomposition is in the solution of square systems of simultaneous
- * linear equations. This will fail if isNonsingular() returns false.
- *
- * @author Paul Meagher
- * @author Bartosz Matosiuk
- * @author Michael Bommarito
- * @version 1.1
- * @license PHP v3.0
- */
-class PHPExcel_Shared_JAMA_LUDecomposition {
-
- const MatrixSingularException = "Can only perform operation on singular matrix.";
- const MatrixSquareException = "Mismatched Row dimension";
-
- /**
- * Decomposition storage
- * @var array
- */
- private $LU = array();
-
- /**
- * Row dimension.
- * @var int
- */
- private $m;
-
- /**
- * Column dimension.
- * @var int
- */
- private $n;
-
- /**
- * Pivot sign.
- * @var int
- */
- private $pivsign;
-
- /**
- * Internal storage of pivot vector.
- * @var array
- */
- private $piv = array();
-
-
- /**
- * LU Decomposition constructor.
- *
- * @param $A Rectangular matrix
- * @return Structure to access L, U and piv.
- */
- public function __construct($A) {
- if ($A instanceof PHPExcel_Shared_JAMA_Matrix) {
- // Use a "left-looking", dot-product, Crout/Doolittle algorithm.
- $this->LU = $A->getArray();
- $this->m = $A->getRowDimension();
- $this->n = $A->getColumnDimension();
- for ($i = 0; $i < $this->m; ++$i) {
- $this->piv[$i] = $i;
- }
- $this->pivsign = 1;
- $LUrowi = $LUcolj = array();
-
- // Outer loop.
- for ($j = 0; $j < $this->n; ++$j) {
- // Make a copy of the j-th column to localize references.
- for ($i = 0; $i < $this->m; ++$i) {
- $LUcolj[$i] = &$this->LU[$i][$j];
- }
- // Apply previous transformations.
- for ($i = 0; $i < $this->m; ++$i) {
- $LUrowi = $this->LU[$i];
- // Most of the time is spent in the following dot product.
- $kmax = min($i,$j);
- $s = 0.0;
- for ($k = 0; $k < $kmax; ++$k) {
- $s += $LUrowi[$k] * $LUcolj[$k];
- }
- $LUrowi[$j] = $LUcolj[$i] -= $s;
- }
- // Find pivot and exchange if necessary.
- $p = $j;
- for ($i = $j+1; $i < $this->m; ++$i) {
- if (abs($LUcolj[$i]) > abs($LUcolj[$p])) {
- $p = $i;
- }
- }
- if ($p != $j) {
- for ($k = 0; $k < $this->n; ++$k) {
- $t = $this->LU[$p][$k];
- $this->LU[$p][$k] = $this->LU[$j][$k];
- $this->LU[$j][$k] = $t;
- }
- $k = $this->piv[$p];
- $this->piv[$p] = $this->piv[$j];
- $this->piv[$j] = $k;
- $this->pivsign = $this->pivsign * -1;
- }
- // Compute multipliers.
- if (($j < $this->m) && ($this->LU[$j][$j] != 0.0)) {
- for ($i = $j+1; $i < $this->m; ++$i) {
- $this->LU[$i][$j] /= $this->LU[$j][$j];
- }
- }
- }
- } else {
- throw new Exception(PHPExcel_Shared_JAMA_Matrix::ArgumentTypeException);
- }
- } // function __construct()
-
-
- /**
- * Get lower triangular factor.
- *
- * @return array Lower triangular factor
- */
- public function getL() {
- for ($i = 0; $i < $this->m; ++$i) {
- for ($j = 0; $j < $this->n; ++$j) {
- if ($i > $j) {
- $L[$i][$j] = $this->LU[$i][$j];
- } elseif ($i == $j) {
- $L[$i][$j] = 1.0;
- } else {
- $L[$i][$j] = 0.0;
- }
- }
- }
- return new PHPExcel_Shared_JAMA_Matrix($L);
- } // function getL()
-
-
- /**
- * Get upper triangular factor.
- *
- * @return array Upper triangular factor
- */
- public function getU() {
- for ($i = 0; $i < $this->n; ++$i) {
- for ($j = 0; $j < $this->n; ++$j) {
- if ($i <= $j) {
- $U[$i][$j] = $this->LU[$i][$j];
- } else {
- $U[$i][$j] = 0.0;
- }
- }
- }
- return new PHPExcel_Shared_JAMA_Matrix($U);
- } // function getU()
-
-
- /**
- * Return pivot permutation vector.
- *
- * @return array Pivot vector
- */
- public function getPivot() {
- return $this->piv;
- } // function getPivot()
-
-
- /**
- * Alias for getPivot
- *
- * @see getPivot
- */
- public function getDoublePivot() {
- return $this->getPivot();
- } // function getDoublePivot()
-
-
- /**
- * Is the matrix nonsingular?
- *
- * @return true if U, and hence A, is nonsingular.
- */
- public function isNonsingular() {
- for ($j = 0; $j < $this->n; ++$j) {
- if ($this->LU[$j][$j] == 0) {
- return false;
- }
- }
- return true;
- } // function isNonsingular()
-
-
- /**
- * Count determinants
- *
- * @return array d matrix deterninat
- */
- public function det() {
- if ($this->m == $this->n) {
- $d = $this->pivsign;
- for ($j = 0; $j < $this->n; ++$j) {
- $d *= $this->LU[$j][$j];
- }
- return $d;
- } else {
- throw new Exception(PHPExcel_Shared_JAMA_Matrix::MatrixDimensionException);
- }
- } // function det()
-
-
- /**
- * Solve A*X = B
- *
- * @param $B A Matrix with as many rows as A and any number of columns.
- * @return X so that L*U*X = B(piv,:)
- * @exception IllegalArgumentException Matrix row dimensions must agree.
- * @exception RuntimeException Matrix is singular.
- */
- public function solve($B) {
- if ($B->getRowDimension() == $this->m) {
- if ($this->isNonsingular()) {
- // Copy right hand side with pivoting
- $nx = $B->getColumnDimension();
- $X = $B->getMatrix($this->piv, 0, $nx-1);
- // Solve L*Y = B(piv,:)
- for ($k = 0; $k < $this->n; ++$k) {
- for ($i = $k+1; $i < $this->n; ++$i) {
- for ($j = 0; $j < $nx; ++$j) {
- $X->A[$i][$j] -= $X->A[$k][$j] * $this->LU[$i][$k];
- }
- }
- }
- // Solve U*X = Y;
- for ($k = $this->n-1; $k >= 0; --$k) {
- for ($j = 0; $j < $nx; ++$j) {
- $X->A[$k][$j] /= $this->LU[$k][$k];
- }
- for ($i = 0; $i < $k; ++$i) {
- for ($j = 0; $j < $nx; ++$j) {
- $X->A[$i][$j] -= $X->A[$k][$j] * $this->LU[$i][$k];
- }
- }
- }
- return $X;
- } else {
- throw new Exception(self::MatrixSingularException);
- }
- } else {
- throw new Exception(self::MatrixSquareException);
- }
- } // function solve()
-
-} // class PHPExcel_Shared_JAMA_LUDecomposition
diff --git a/admin/survey/excel/PHPExcel/Shared/JAMA/Matrix.php b/admin/survey/excel/PHPExcel/Shared/JAMA/Matrix.php
deleted file mode 100644
index e66e8e0..0000000
--- a/admin/survey/excel/PHPExcel/Shared/JAMA/Matrix.php
+++ /dev/null
@@ -1,1059 +0,0 @@
-<?php
-/**
- * @package JAMA
- */
-
-/** PHPExcel root directory */
-if (!defined('PHPEXCEL_ROOT')) {
- /**
- * @ignore
- */
- define('PHPEXCEL_ROOT', dirname(__FILE__) . '/../../../');
- require(PHPEXCEL_ROOT . 'PHPExcel/Autoloader.php');
-}
-
-
-/*
- * Matrix class
- *
- * @author Paul Meagher
- * @author Michael Bommarito
- * @author Lukasz Karapuda
- * @author Bartek Matosiuk
- * @version 1.8
- * @license PHP v3.0
- * @see http://math.nist.gov/javanumerics/jama/
- */
-class PHPExcel_Shared_JAMA_Matrix {
-
-
- const PolymorphicArgumentException = "Invalid argument pattern for polymorphic function.";
- const ArgumentTypeException = "Invalid argument type.";
- const ArgumentBoundsException = "Invalid argument range.";
- const MatrixDimensionException = "Matrix dimensions are not equal.";
- const ArrayLengthException = "Array length must be a multiple of m.";
-
- /**
- * Matrix storage
- *
- * @var array
- * @access public
- */
- public $A = array();
-
- /**
- * Matrix row dimension
- *
- * @var int
- * @access private
- */
- private $m;
-
- /**
- * Matrix column dimension
- *
- * @var int
- * @access private
- */
- private $n;
-
-
- /**
- * Polymorphic constructor
- *
- * As PHP has no support for polymorphic constructors, we hack our own sort of polymorphism using func_num_args, func_get_arg, and gettype. In essence, we're just implementing a simple RTTI filter and calling the appropriate constructor.
- */
- public function __construct() {
- if (func_num_args() > 0) {
- $args = func_get_args();
- $match = implode(",", array_map('gettype', $args));
-
- switch($match) {
- //Rectangular matrix - m x n initialized from 2D array
- case 'array':
- $this->m = count($args[0]);
- $this->n = count($args[0][0]);
- $this->A = $args[0];
- break;
- //Square matrix - n x n
- case 'integer':
- $this->m = $args[0];
- $this->n = $args[0];
- $this->A = array_fill(0, $this->m, array_fill(0, $this->n, 0));
- break;
- //Rectangular matrix - m x n
- case 'integer,integer':
- $this->m = $args[0];
- $this->n = $args[1];
- $this->A = array_fill(0, $this->m, array_fill(0, $this->n, 0));
- break;
- //Rectangular matrix - m x n initialized from packed array
- case 'array,integer':
- $this->m = $args[1];
- if ($this->m != 0) {
- $this->n = count($args[0]) / $this->m;
- } else {
- $this->n = 0;
- }
- if (($this->m * $this->n) == count($args[0])) {
- for($i = 0; $i < $this->m; ++$i) {
- for($j = 0; $j < $this->n; ++$j) {
- $this->A[$i][$j] = $args[0][$i + $j * $this->m];
- }
- }
- } else {
- throw new Exception(self::ArrayLengthException);
- }
- break;
- default:
- throw new Exception(self::PolymorphicArgumentException);
- break;
- }
- } else {
- throw new Exception(self::PolymorphicArgumentException);
- }
- } // function __construct()
-
-
- /**
- * getArray
- *
- * @return array Matrix array
- */
- public function getArray() {
- return $this->A;
- } // function getArray()
-
-
- /**
- * getRowDimension
- *
- * @return int Row dimension
- */
- public function getRowDimension() {
- return $this->m;
- } // function getRowDimension()
-
-
- /**
- * getColumnDimension
- *
- * @return int Column dimension
- */
- public function getColumnDimension() {
- return $this->n;
- } // function getColumnDimension()
-
-
- /**
- * get
- *
- * Get the i,j-th element of the matrix.
- * @param int $i Row position
- * @param int $j Column position
- * @return mixed Element (int/float/double)
- */
- public function get($i = null, $j = null) {
- return $this->A[$i][$j];
- } // function get()
-
-
- /**
- * getMatrix
- *
- * Get a submatrix
- * @param int $i0 Initial row index
- * @param int $iF Final row index
- * @param int $j0 Initial column index
- * @param int $jF Final column index
- * @return Matrix Submatrix
- */
- public function getMatrix() {
- if (func_num_args() > 0) {
- $args = func_get_args();
- $match = implode(",", array_map('gettype', $args));
-
- switch($match) {
- //A($i0...; $j0...)
- case 'integer,integer':
- list($i0, $j0) = $args;
- if ($i0 >= 0) { $m = $this->m - $i0; } else { throw new Exception(self::ArgumentBoundsException); }
- if ($j0 >= 0) { $n = $this->n - $j0; } else { throw new Exception(self::ArgumentBoundsException); }
- $R = new PHPExcel_Shared_JAMA_Matrix($m, $n);
- for($i = $i0; $i < $this->m; ++$i) {
- for($j = $j0; $j < $this->n; ++$j) {
- $R->set($i, $j, $this->A[$i][$j]);
- }
- }
- return $R;
- break;
- //A($i0...$iF; $j0...$jF)
- case 'integer,integer,integer,integer':
- list($i0, $iF, $j0, $jF) = $args;
- if (($iF > $i0) && ($this->m >= $iF) && ($i0 >= 0)) { $m = $iF - $i0; } else { throw new Exception(self::ArgumentBoundsException); }
- if (($jF > $j0) && ($this->n >= $jF) && ($j0 >= 0)) { $n = $jF - $j0; } else { throw new Exception(self::ArgumentBoundsException); }
- $R = new PHPExcel_Shared_JAMA_Matrix($m+1, $n+1);
- for($i = $i0; $i <= $iF; ++$i) {
- for($j = $j0; $j <= $jF; ++$j) {
- $R->set($i - $i0, $j - $j0, $this->A[$i][$j]);
- }
- }
- return $R;
- break;
- //$R = array of row indices; $C = array of column indices
- case 'array,array':
- list($RL, $CL) = $args;
- if (count($RL) > 0) { $m = count($RL); } else { throw new Exception(self::ArgumentBoundsException); }
- if (count($CL) > 0) { $n = count($CL); } else { throw new Exception(self::ArgumentBoundsException); }
- $R = new PHPExcel_Shared_JAMA_Matrix($m, $n);
- for($i = 0; $i < $m; ++$i) {
- for($j = 0; $j < $n; ++$j) {
- $R->set($i - $i0, $j - $j0, $this->A[$RL[$i]][$CL[$j]]);
- }
- }
- return $R;
- break;
- //$RL = array of row indices; $CL = array of column indices
- case 'array,array':
- list($RL, $CL) = $args;
- if (count($RL) > 0) { $m = count($RL); } else { throw new Exception(self::ArgumentBoundsException); }
- if (count($CL) > 0) { $n = count($CL); } else { throw new Exception(self::ArgumentBoundsException); }
- $R = new PHPExcel_Shared_JAMA_Matrix($m, $n);
- for($i = 0; $i < $m; ++$i) {
- for($j = 0; $j < $n; ++$j) {
- $R->set($i, $j, $this->A[$RL[$i]][$CL[$j]]);
- }
- }
- return $R;
- break;
- //A($i0...$iF); $CL = array of column indices
- case 'integer,integer,array':
- list($i0, $iF, $CL) = $args;
- if (($iF > $i0) && ($this->m >= $iF) && ($i0 >= 0)) { $m = $iF - $i0; } else { throw new Exception(self::ArgumentBoundsException); }
- if (count($CL) > 0) { $n = count($CL); } else { throw new Exception(self::ArgumentBoundsException); }
- $R = new PHPExcel_Shared_JAMA_Matrix($m, $n);
- for($i = $i0; $i < $iF; ++$i) {
- for($j = 0; $j < $n; ++$j) {
- $R->set($i - $i0, $j, $this->A[$RL[$i]][$j]);
- }
- }
- return $R;
- break;
- //$RL = array of row indices
- case 'array,integer,integer':
- list($RL, $j0, $jF) = $args;
- if (count($RL) > 0) { $m = count($RL); } else { throw new Exception(self::ArgumentBoundsException); }
- if (($jF >= $j0) && ($this->n >= $jF) && ($j0 >= 0)) { $n = $jF - $j0; } else { throw new Exception(self::ArgumentBoundsException); }
- $R = new PHPExcel_Shared_JAMA_Matrix($m, $n+1);
- for($i = 0; $i < $m; ++$i) {
- for($j = $j0; $j <= $jF; ++$j) {
- $R->set($i, $j - $j0, $this->A[$RL[$i]][$j]);
- }
- }
- return $R;
- break;
- default:
- throw new Exception(self::PolymorphicArgumentException);
- break;
- }
- } else {
- throw new Exception(self::PolymorphicArgumentException);
- }
- } // function getMatrix()
-
-
- /**
- * checkMatrixDimensions
- *
- * Is matrix B the same size?
- * @param Matrix $B Matrix B
- * @return boolean
- */
- public function checkMatrixDimensions($B = null) {
- if ($B instanceof PHPExcel_Shared_JAMA_Matrix) {
- if (($this->m == $B->getRowDimension()) && ($this->n == $B->getColumnDimension())) {
- return true;
- } else {
- throw new Exception(self::MatrixDimensionException);
- }
- } else {
- throw new Exception(self::ArgumentTypeException);
- }
- } // function checkMatrixDimensions()
-
-
-
- /**
- * set
- *
- * Set the i,j-th element of the matrix.
- * @param int $i Row position
- * @param int $j Column position
- * @param mixed $c Int/float/double value
- * @return mixed Element (int/float/double)
- */
- public function set($i = null, $j = null, $c = null) {
- // Optimized set version just has this
- $this->A[$i][$j] = $c;
- } // function set()
-
-
- /**
- * identity
- *
- * Generate an identity matrix.
- * @param int $m Row dimension
- * @param int $n Column dimension
- * @return Matrix Identity matrix
- */
- public function identity($m = null, $n = null) {
- return $this->diagonal($m, $n, 1);
- } // function identity()
-
-
- /**
- * diagonal
- *
- * Generate a diagonal matrix
- * @param int $m Row dimension
- * @param int $n Column dimension
- * @param mixed $c Diagonal value
- * @return Matrix Diagonal matrix
- */
- public function diagonal($m = null, $n = null, $c = 1) {
- $R = new PHPExcel_Shared_JAMA_Matrix($m, $n);
- for($i = 0; $i < $m; ++$i) {
- $R->set($i, $i, $c);
- }
- return $R;
- } // function diagonal()
-
-
- /**
- * getMatrixByRow
- *
- * Get a submatrix by row index/range
- * @param int $i0 Initial row index
- * @param int $iF Final row index
- * @return Matrix Submatrix
- */
- public function getMatrixByRow($i0 = null, $iF = null) {
- if (is_int($i0)) {
- if (is_int($iF)) {
- return $this->getMatrix($i0, 0, $iF + 1, $this->n);
- } else {
- return $this->getMatrix($i0, 0, $i0 + 1, $this->n);
- }
- } else {
- throw new Exception(self::ArgumentTypeException);
- }
- } // function getMatrixByRow()
-
-
- /**
- * getMatrixByCol
- *
- * Get a submatrix by column index/range
- * @param int $i0 Initial column index
- * @param int $iF Final column index
- * @return Matrix Submatrix
- */
- public function getMatrixByCol($j0 = null, $jF = null) {
- if (is_int($j0)) {
- if (is_int($jF)) {
- return $this->getMatrix(0, $j0, $this->m, $jF + 1);
- } else {
- return $this->getMatrix(0, $j0, $this->m, $j0 + 1);
- }
- } else {
- throw new Exception(self::ArgumentTypeException);
- }
- } // function getMatrixByCol()
-
-
- /**
- * transpose
- *
- * Tranpose matrix
- * @return Matrix Transposed matrix
- */
- public function transpose() {
- $R = new PHPExcel_Shared_JAMA_Matrix($this->n, $this->m);
- for($i = 0; $i < $this->m; ++$i) {
- for($j = 0; $j < $this->n; ++$j) {
- $R->set($j, $i, $this->A[$i][$j]);
- }
- }
- return $R;
- } // function transpose()
-
-
- /**
- * trace
- *
- * Sum of diagonal elements
- * @return float Sum of diagonal elements
- */
- public function trace() {
- $s = 0;
- $n = min($this->m, $this->n);
- for($i = 0; $i < $n; ++$i) {
- $s += $this->A[$i][$i];
- }
- return $s;
- } // function trace()
-
-
- /**
- * uminus
- *
- * Unary minus matrix -A
- * @return Matrix Unary minus matrix
- */
- public function uminus() {
- } // function uminus()
-
-
- /**
- * plus
- *
- * A + B
- * @param mixed $B Matrix/Array
- * @return Matrix Sum
- */
- public function plus() {
- if (func_num_args() > 0) {
- $args = func_get_args();
- $match = implode(",", array_map('gettype', $args));
-
- switch($match) {
- case 'object':
- if ($args[0] instanceof PHPExcel_Shared_JAMA_Matrix) { $M = $args[0]; } else { throw new Exception(self::ArgumentTypeException); }
- break;
- case 'array':
- $M = new PHPExcel_Shared_JAMA_Matrix($args[0]);
- break;
- default:
- throw new Exception(self::PolymorphicArgumentException);
- break;
- }
- $this->checkMatrixDimensions($M);
- for($i = 0; $i < $this->m; ++$i) {
- for($j = 0; $j < $this->n; ++$j) {
- $M->set($i, $j, $M->get($i, $j) + $this->A[$i][$j]);
- }
- }
- return $M;
- } else {
- throw new Exception(self::PolymorphicArgumentException);
- }
- } // function plus()
-
-
- /**
- * plusEquals
- *
- * A = A + B
- * @param mixed $B Matrix/Array
- * @return Matrix Sum
- */
- public function plusEquals() {
- if (func_num_args() > 0) {
- $args = func_get_args();
- $match = implode(",", array_map('gettype', $args));
-
- switch($match) {
- case 'object':
- if ($args[0] instanceof PHPExcel_Shared_JAMA_Matrix) { $M = $args[0]; } else { throw new Exception(self::ArgumentTypeException); }
- break;
- case 'array':
- $M = new PHPExcel_Shared_JAMA_Matrix($args[0]);
- break;
- default:
- throw new Exception(self::PolymorphicArgumentException);
- break;
- }
- $this->checkMatrixDimensions($M);
- for($i = 0; $i < $this->m; ++$i) {
- for($j = 0; $j < $this->n; ++$j) {
- $validValues = True;
- $value = $M->get($i, $j);
- if ((is_string($this->A[$i][$j])) && (strlen($this->A[$i][$j]) > 0) && (!is_numeric($this->A[$i][$j]))) {
- $this->A[$i][$j] = trim($this->A[$i][$j],'"');
- $validValues &= PHPExcel_Shared_String::convertToNumberIfFraction($this->A[$i][$j]);
- }
- if ((is_string($value)) && (strlen($value) > 0) && (!is_numeric($value))) {
- $value = trim($value,'"');
- $validValues &= PHPExcel_Shared_String::convertToNumberIfFraction($value);
- }
- if ($validValues) {
- $this->A[$i][$j] += $value;
- } else {
- $this->A[$i][$j] = PHPExcel_Calculation_Functions::NaN();
- }
- }
- }
- return $this;
- } else {
- throw new Exception(self::PolymorphicArgumentException);
- }
- } // function plusEquals()
-
-
- /**
- * minus
- *
- * A - B
- * @param mixed $B Matrix/Array
- * @return Matrix Sum
- */
- public function minus() {
- if (func_num_args() > 0) {
- $args = func_get_args();
- $match = implode(",", array_map('gettype', $args));
-
- switch($match) {
- case 'object':
- if ($args[0] instanceof PHPExcel_Shared_JAMA_Matrix) { $M = $args[0]; } else { throw new Exception(self::ArgumentTypeException); }
- break;
- case 'array':
- $M = new PHPExcel_Shared_JAMA_Matrix($args[0]);
- break;
- default:
- throw new Exception(self::PolymorphicArgumentException);
- break;
- }
- $this->checkMatrixDimensions($M);
- for($i = 0; $i < $this->m; ++$i) {
- for($j = 0; $j < $this->n; ++$j) {
- $M->set($i, $j, $M->get($i, $j) - $this->A[$i][$j]);
- }
- }
- return $M;
- } else {
- throw new Exception(self::PolymorphicArgumentException);
- }
- } // function minus()
-
-
- /**
- * minusEquals
- *
- * A = A - B
- * @param mixed $B Matrix/Array
- * @return Matrix Sum
- */
- public function minusEquals() {
- if (func_num_args() > 0) {
- $args = func_get_args();
- $match = implode(",", array_map('gettype', $args));
-
- switch($match) {
- case 'object':
- if ($args[0] instanceof PHPExcel_Shared_JAMA_Matrix) { $M = $args[0]; } else { throw new Exception(self::ArgumentTypeException); }
- break;
- case 'array':
- $M = new PHPExcel_Shared_JAMA_Matrix($args[0]);
- break;
- default:
- throw new Exception(self::PolymorphicArgumentException);
- break;
- }
- $this->checkMatrixDimensions($M);
- for($i = 0; $i < $this->m; ++$i) {
- for($j = 0; $j < $this->n; ++$j) {
- $validValues = True;
- $value = $M->get($i, $j);
- if ((is_string($this->A[$i][$j])) && (strlen($this->A[$i][$j]) > 0) && (!is_numeric($this->A[$i][$j]))) {
- $this->A[$i][$j] = trim($this->A[$i][$j],'"');
- $validValues &= PHPExcel_Shared_String::convertToNumberIfFraction($this->A[$i][$j]);
- }
- if ((is_string($value)) && (strlen($value) > 0) && (!is_numeric($value))) {
- $value = trim($value,'"');
- $validValues &= PHPExcel_Shared_String::convertToNumberIfFraction($value);
- }
- if ($validValues) {
- $this->A[$i][$j] -= $value;
- } else {
- $this->A[$i][$j] = PHPExcel_Calculation_Functions::NaN();
- }
- }
- }
- return $this;
- } else {
- throw new Exception(self::PolymorphicArgumentException);
- }
- } // function minusEquals()
-
-
- /**
- * arrayTimes
- *
- * Element-by-element multiplication
- * Cij = Aij * Bij
- * @param mixed $B Matrix/Array
- * @return Matrix Matrix Cij
- */
- public function arrayTimes() {
- if (func_num_args() > 0) {
- $args = func_get_args();
- $match = implode(",", array_map('gettype', $args));
-
- switch($match) {
- case 'object':
- if ($args[0] instanceof PHPExcel_Shared_JAMA_Matrix) { $M = $args[0]; } else { throw new Exception(self::ArgumentTypeException); }
- break;
- case 'array':
- $M = new PHPExcel_Shared_JAMA_Matrix($args[0]);
- break;
- default:
- throw new Exception(self::PolymorphicArgumentException);
- break;
- }
- $this->checkMatrixDimensions($M);
- for($i = 0; $i < $this->m; ++$i) {
- for($j = 0; $j < $this->n; ++$j) {
- $M->set($i, $j, $M->get($i, $j) * $this->A[$i][$j]);
- }
- }
- return $M;
- } else {
- throw new Exception(self::PolymorphicArgumentException);
- }
- } // function arrayTimes()
-
-
- /**
- * arrayTimesEquals
- *
- * Element-by-element multiplication
- * Aij = Aij * Bij
- * @param mixed $B Matrix/Array
- * @return Matrix Matrix Aij
- */
- public function arrayTimesEquals() {
- if (func_num_args() > 0) {
- $args = func_get_args();
- $match = implode(",", array_map('gettype', $args));
-
- switch($match) {
- case 'object':
- if ($args[0] instanceof PHPExcel_Shared_JAMA_Matrix) { $M = $args[0]; } else { throw new Exception(self::ArgumentTypeException); }
- break;
- case 'array':
- $M = new PHPExcel_Shared_JAMA_Matrix($args[0]);
- break;
- default:
- throw new Exception(self::PolymorphicArgumentException);
- break;
- }
- $this->checkMatrixDimensions($M);
- for($i = 0; $i < $this->m; ++$i) {
- for($j = 0; $j < $this->n; ++$j) {
- $validValues = True;
- $value = $M->get($i, $j);
- if ((is_string($this->A[$i][$j])) && (strlen($this->A[$i][$j]) > 0) && (!is_numeric($this->A[$i][$j]))) {
- $this->A[$i][$j] = trim($this->A[$i][$j],'"');
- $validValues &= PHPExcel_Shared_String::convertToNumberIfFraction($this->A[$i][$j]);
- }
- if ((is_string($value)) && (strlen($value) > 0) && (!is_numeric($value))) {
- $value = trim($value,'"');
- $validValues &= PHPExcel_Shared_String::convertToNumberIfFraction($value);
- }
- if ($validValues) {
- $this->A[$i][$j] *= $value;
- } else {
- $this->A[$i][$j] = PHPExcel_Calculation_Functions::NaN();
- }
- }
- }
- return $this;
- } else {
- throw new Exception(self::PolymorphicArgumentException);
- }
- } // function arrayTimesEquals()
-
-
- /**
- * arrayRightDivide
- *
- * Element-by-element right division
- * A / B
- * @param Matrix $B Matrix B
- * @return Matrix Division result
- */
- public function arrayRightDivide() {
- if (func_num_args() > 0) {
- $args = func_get_args();
- $match = implode(",", array_map('gettype', $args));
-
- switch($match) {
- case 'object':
- if ($args[0] instanceof PHPExcel_Shared_JAMA_Matrix) { $M = $args[0]; } else { throw new Exception(self::ArgumentTypeException); }
- break;
- case 'array':
- $M = new PHPExcel_Shared_JAMA_Matrix($args[0]);
- break;
- default:
- throw new Exception(self::PolymorphicArgumentException);
- break;
- }
- $this->checkMatrixDimensions($M);
- for($i = 0; $i < $this->m; ++$i) {
- for($j = 0; $j < $this->n; ++$j) {
- $validValues = True;
- $value = $M->get($i, $j);
- if ((is_string($this->A[$i][$j])) && (strlen($this->A[$i][$j]) > 0) && (!is_numeric($this->A[$i][$j]))) {
- $this->A[$i][$j] = trim($this->A[$i][$j],'"');
- $validValues &= PHPExcel_Shared_String::convertToNumberIfFraction($this->A[$i][$j]);
- }
- if ((is_string($value)) && (strlen($value) > 0) && (!is_numeric($value))) {
- $value = trim($value,'"');
- $validValues &= PHPExcel_Shared_String::convertToNumberIfFraction($value);
- }
- if ($validValues) {
- if ($value == 0) {
- // Trap for Divide by Zero error
- $M->set($i, $j, '#DIV/0!');
- } else {
- $M->set($i, $j, $this->A[$i][$j] / $value);
- }
- } else {
- $M->set($i, $j, PHPExcel_Calculation_Functions::NaN());
- }
- }
- }
- return $M;
- } else {
- throw new Exception(self::PolymorphicArgumentException);
- }
- } // function arrayRightDivide()
-
-
- /**
- * arrayRightDivideEquals
- *
- * Element-by-element right division
- * Aij = Aij / Bij
- * @param mixed $B Matrix/Array
- * @return Matrix Matrix Aij
- */
- public function arrayRightDivideEquals() {
- if (func_num_args() > 0) {
- $args = func_get_args();
- $match = implode(",", array_map('gettype', $args));
-
- switch($match) {
- case 'object':
- if ($args[0] instanceof PHPExcel_Shared_JAMA_Matrix) { $M = $args[0]; } else { throw new Exception(self::ArgumentTypeException); }
- break;
- case 'array':
- $M = new PHPExcel_Shared_JAMA_Matrix($args[0]);
- break;
- default:
- throw new Exception(self::PolymorphicArgumentException);
- break;
- }
- $this->checkMatrixDimensions($M);
- for($i = 0; $i < $this->m; ++$i) {
- for($j = 0; $j < $this->n; ++$j) {
- $this->A[$i][$j] = $this->A[$i][$j] / $M->get($i, $j);
- }
- }
- return $M;
- } else {
- throw new Exception(self::PolymorphicArgumentException);
- }
- } // function arrayRightDivideEquals()
-
-
- /**
- * arrayLeftDivide
- *
- * Element-by-element Left division
- * A / B
- * @param Matrix $B Matrix B
- * @return Matrix Division result
- */
- public function arrayLeftDivide() {
- if (func_num_args() > 0) {
- $args = func_get_args();
- $match = implode(",", array_map('gettype', $args));
-
- switch($match) {
- case 'object':
- if ($args[0] instanceof PHPExcel_Shared_JAMA_Matrix) { $M = $args[0]; } else { throw new Exception(self::ArgumentTypeException); }
- break;
- case 'array':
- $M = new PHPExcel_Shared_JAMA_Matrix($args[0]);
- break;
- default:
- throw new Exception(self::PolymorphicArgumentException);
- break;
- }
- $this->checkMatrixDimensions($M);
- for($i = 0; $i < $this->m; ++$i) {
- for($j = 0; $j < $this->n; ++$j) {
- $M->set($i, $j, $M->get($i, $j) / $this->A[$i][$j]);
- }
- }
- return $M;
- } else {
- throw new Exception(self::PolymorphicArgumentException);
- }
- } // function arrayLeftDivide()
-
-
- /**
- * arrayLeftDivideEquals
- *
- * Element-by-element Left division
- * Aij = Aij / Bij
- * @param mixed $B Matrix/Array
- * @return Matrix Matrix Aij
- */
- public function arrayLeftDivideEquals() {
- if (func_num_args() > 0) {
- $args = func_get_args();
- $match = implode(",", array_map('gettype', $args));
-
- switch($match) {
- case 'object':
- if ($args[0] instanceof PHPExcel_Shared_JAMA_Matrix) { $M = $args[0]; } else { throw new Exception(self::ArgumentTypeException); }
- break;
- case 'array':
- $M = new PHPExcel_Shared_JAMA_Matrix($args[0]);
- break;
- default:
- throw new Exception(self::PolymorphicArgumentException);
- break;
- }
- $this->checkMatrixDimensions($M);
- for($i = 0; $i < $this->m; ++$i) {
- for($j = 0; $j < $this->n; ++$j) {
- $this->A[$i][$j] = $M->get($i, $j) / $this->A[$i][$j];
- }
- }
- return $M;
- } else {
- throw new Exception(self::PolymorphicArgumentException);
- }
- } // function arrayLeftDivideEquals()
-
-
- /**
- * times
- *
- * Matrix multiplication
- * @param mixed $n Matrix/Array/Scalar
- * @return Matrix Product
- */
- public function times() {
- if (func_num_args() > 0) {
- $args = func_get_args();
- $match = implode(",", array_map('gettype', $args));
-
- switch($match) {
- case 'object':
- if ($args[0] instanceof PHPExcel_Shared_JAMA_Matrix) { $B = $args[0]; } else { throw new Exception(self::ArgumentTypeException); }
- if ($this->n == $B->m) {
- $C = new PHPExcel_Shared_JAMA_Matrix($this->m, $B->n);
- for($j = 0; $j < $B->n; ++$j) {
- for ($k = 0; $k < $this->n; ++$k) {
- $Bcolj[$k] = $B->A[$k][$j];
- }
- for($i = 0; $i < $this->m; ++$i) {
- $Arowi = $this->A[$i];
- $s = 0;
- for($k = 0; $k < $this->n; ++$k) {
- $s += $Arowi[$k] * $Bcolj[$k];
- }
- $C->A[$i][$j] = $s;
- }
- }
- return $C;
- } else {
- throw new Exception(JAMAError(MatrixDimensionMismatch));
- }
- break;
- case 'array':
- $B = new PHPExcel_Shared_JAMA_Matrix($args[0]);
- if ($this->n == $B->m) {
- $C = new PHPExcel_Shared_JAMA_Matrix($this->m, $B->n);
- for($i = 0; $i < $C->m; ++$i) {
- for($j = 0; $j < $C->n; ++$j) {
- $s = "0";
- for($k = 0; $k < $C->n; ++$k) {
- $s += $this->A[$i][$k] * $B->A[$k][$j];
- }
- $C->A[$i][$j] = $s;
- }
- }
- return $C;
- } else {
- throw new Exception(JAMAError(MatrixDimensionMismatch));
- }
- return $M;
- break;
- case 'integer':
- $C = new PHPExcel_Shared_JAMA_Matrix($this->A);
- for($i = 0; $i < $C->m; ++$i) {
- for($j = 0; $j < $C->n; ++$j) {
- $C->A[$i][$j] *= $args[0];
- }
- }
- return $C;
- break;
- case 'double':
- $C = new PHPExcel_Shared_JAMA_Matrix($this->m, $this->n);
- for($i = 0; $i < $C->m; ++$i) {
- for($j = 0; $j < $C->n; ++$j) {
- $C->A[$i][$j] = $args[0] * $this->A[$i][$j];
- }
- }
- return $C;
- break;
- case 'float':
- $C = new PHPExcel_Shared_JAMA_Matrix($this->A);
- for($i = 0; $i < $C->m; ++$i) {
- for($j = 0; $j < $C->n; ++$j) {
- $C->A[$i][$j] *= $args[0];
- }
- }
- return $C;
- break;
- default:
- throw new Exception(self::PolymorphicArgumentException);
- break;
- }
- } else {
- throw new Exception(self::PolymorphicArgumentException);
- }
- } // function times()
-
-
- /**
- * power
- *
- * A = A ^ B
- * @param mixed $B Matrix/Array
- * @return Matrix Sum
- */
- public function power() {
- if (func_num_args() > 0) {
- $args = func_get_args();
- $match = implode(",", array_map('gettype', $args));
-
- switch($match) {
- case 'object':
- if ($args[0] instanceof PHPExcel_Shared_JAMA_Matrix) { $M = $args[0]; } else { throw new Exception(self::ArgumentTypeException); }
- break;
- case 'array':
- $M = new PHPExcel_Shared_JAMA_Matrix($args[0]);
- break;
- default:
- throw new Exception(self::PolymorphicArgumentException);
- break;
- }
- $this->checkMatrixDimensions($M);
- for($i = 0; $i < $this->m; ++$i) {
- for($j = 0; $j < $this->n; ++$j) {
- $validValues = True;
- $value = $M->get($i, $j);
- if ((is_string($this->A[$i][$j])) && (strlen($this->A[$i][$j]) > 0) && (!is_numeric($this->A[$i][$j]))) {
- $this->A[$i][$j] = trim($this->A[$i][$j],'"');
- $validValues &= PHPExcel_Shared_String::convertToNumberIfFraction($this->A[$i][$j]);
- }
- if ((is_string($value)) && (strlen($value) > 0) && (!is_numeric($value))) {
- $value = trim($value,'"');
- $validValues &= PHPExcel_Shared_String::convertToNumberIfFraction($value);
- }
- if ($validValues) {
- $this->A[$i][$j] = pow($this->A[$i][$j],$value);
- } else {
- $this->A[$i][$j] = PHPExcel_Calculation_Functions::NaN();
- }
- }
- }
- return $this;
- } else {
- throw new Exception(self::PolymorphicArgumentException);
- }
- } // function power()
-
-
- /**
- * concat
- *
- * A = A & B
- * @param mixed $B Matrix/Array
- * @return Matrix Sum
- */
- public function concat() {
- if (func_num_args() > 0) {
- $args = func_get_args();
- $match = implode(",", array_map('gettype', $args));
-
- switch($match) {
- case 'object':
- if ($args[0] instanceof PHPExcel_Shared_JAMA_Matrix) { $M = $args[0]; } else { throw new Exception(self::ArgumentTypeException); }
- case 'array':
- $M = new PHPExcel_Shared_JAMA_Matrix($args[0]);
- break;
- default:
- throw new Exception(self::PolymorphicArgumentException);
- break;
- }
- $this->checkMatrixDimensions($M);
- for($i = 0; $i < $this->m; ++$i) {
- for($j = 0; $j < $this->n; ++$j) {
- $this->A[$i][$j] = trim($this->A[$i][$j],'"').trim($M->get($i, $j),'"');
- }
- }
- return $this;
- } else {
- throw new Exception(self::PolymorphicArgumentException);
- }
- } // function concat()
-
-
- /**
- * Solve A*X = B.
- *
- * @param Matrix $B Right hand side
- * @return Matrix ... Solution if A is square, least squares solution otherwise
- */
- public function solve($B) {
- if ($this->m == $this->n) {
- $LU = new PHPExcel_Shared_JAMA_LUDecomposition($this);
- return $LU->solve($B);
- } else {
- $QR = new QRDecomposition($this);
- return $QR->solve($B);
- }
- } // function solve()
-
-
- /**
- * Matrix inverse or pseudoinverse.
- *
- * @return Matrix ... Inverse(A) if A is square, pseudoinverse otherwise.
- */
- public function inverse() {
- return $this->solve($this->identity($this->m, $this->m));
- } // function inverse()
-
-
- /**
- * det
- *
- * Calculate determinant
- * @return float Determinant
- */
- public function det() {
- $L = new PHPExcel_Shared_JAMA_LUDecomposition($this);
- return $L->det();
- } // function det()
-
-
-} // class PHPExcel_Shared_JAMA_Matrix
diff --git a/admin/survey/excel/PHPExcel/Shared/JAMA/QRDecomposition.php b/admin/survey/excel/PHPExcel/Shared/JAMA/QRDecomposition.php
deleted file mode 100644
index 4492fa5..0000000
--- a/admin/survey/excel/PHPExcel/Shared/JAMA/QRDecomposition.php
+++ /dev/null
@@ -1,234 +0,0 @@
-<?php
-/**
- * @package JAMA
- *
- * For an m-by-n matrix A with m >= n, the QR decomposition is an m-by-n
- * orthogonal matrix Q and an n-by-n upper triangular matrix R so that
- * A = Q*R.
- *
- * The QR decompostion always exists, even if the matrix does not have
- * full rank, so the constructor will never fail. The primary use of the
- * QR decomposition is in the least squares solution of nonsquare systems
- * of simultaneous linear equations. This will fail if isFullRank()
- * returns false.
- *
- * @author Paul Meagher
- * @license PHP v3.0
- * @version 1.1
- */
-class PHPExcel_Shared_JAMA_QRDecomposition {
-
- const MatrixRankException = "Can only perform operation on full-rank matrix.";
-
- /**
- * Array for internal storage of decomposition.
- * @var array
- */
- private $QR = array();
-
- /**
- * Row dimension.
- * @var integer
- */
- private $m;
-
- /**
- * Column dimension.
- * @var integer
- */
- private $n;
-
- /**
- * Array for internal storage of diagonal of R.
- * @var array
- */
- private $Rdiag = array();
-
-
- /**
- * QR Decomposition computed by Householder reflections.
- *
- * @param matrix $A Rectangular matrix
- * @return Structure to access R and the Householder vectors and compute Q.
- */
- public function __construct($A) {
- if($A instanceof PHPExcel_Shared_JAMA_Matrix) {
- // Initialize.
- $this->QR = $A->getArrayCopy();
- $this->m = $A->getRowDimension();
- $this->n = $A->getColumnDimension();
- // Main loop.
- for ($k = 0; $k < $this->n; ++$k) {
- // Compute 2-norm of k-th column without under/overflow.
- $nrm = 0.0;
- for ($i = $k; $i < $this->m; ++$i) {
- $nrm = hypo($nrm, $this->QR[$i][$k]);
- }
- if ($nrm != 0.0) {
- // Form k-th Householder vector.
- if ($this->QR[$k][$k] < 0) {
- $nrm = -$nrm;
- }
- for ($i = $k; $i < $this->m; ++$i) {
- $this->QR[$i][$k] /= $nrm;
- }
- $this->QR[$k][$k] += 1.0;
- // Apply transformation to remaining columns.
- for ($j = $k+1; $j < $this->n; ++$j) {
- $s = 0.0;
- for ($i = $k; $i < $this->m; ++$i) {
- $s += $this->QR[$i][$k] * $this->QR[$i][$j];
- }
- $s = -$s/$this->QR[$k][$k];
- for ($i = $k; $i < $this->m; ++$i) {
- $this->QR[$i][$j] += $s * $this->QR[$i][$k];
- }
- }
- }
- $this->Rdiag[$k] = -$nrm;
- }
- } else {
- throw new Exception(PHPExcel_Shared_JAMA_Matrix::ArgumentTypeException);
- }
- } // function __construct()
-
-
- /**
- * Is the matrix full rank?
- *
- * @return boolean true if R, and hence A, has full rank, else false.
- */
- public function isFullRank() {
- for ($j = 0; $j < $this->n; ++$j) {
- if ($this->Rdiag[$j] == 0) {
- return false;
- }
- }
- return true;
- } // function isFullRank()
-
-
- /**
- * Return the Householder vectors
- *
- * @return Matrix Lower trapezoidal matrix whose columns define the reflections
- */
- public function getH() {
- for ($i = 0; $i < $this->m; ++$i) {
- for ($j = 0; $j < $this->n; ++$j) {
- if ($i >= $j) {
- $H[$i][$j] = $this->QR[$i][$j];
- } else {
- $H[$i][$j] = 0.0;
- }
- }
- }
- return new PHPExcel_Shared_JAMA_Matrix($H);
- } // function getH()
-
-
- /**
- * Return the upper triangular factor
- *
- * @return Matrix upper triangular factor
- */
- public function getR() {
- for ($i = 0; $i < $this->n; ++$i) {
- for ($j = 0; $j < $this->n; ++$j) {
- if ($i < $j) {
- $R[$i][$j] = $this->QR[$i][$j];
- } elseif ($i == $j) {
- $R[$i][$j] = $this->Rdiag[$i];
- } else {
- $R[$i][$j] = 0.0;
- }
- }
- }
- return new PHPExcel_Shared_JAMA_Matrix($R);
- } // function getR()
-
-
- /**
- * Generate and return the (economy-sized) orthogonal factor
- *
- * @return Matrix orthogonal factor
- */
- public function getQ() {
- for ($k = $this->n-1; $k >= 0; --$k) {
- for ($i = 0; $i < $this->m; ++$i) {
- $Q[$i][$k] = 0.0;
- }
- $Q[$k][$k] = 1.0;
- for ($j = $k; $j < $this->n; ++$j) {
- if ($this->QR[$k][$k] != 0) {
- $s = 0.0;
- for ($i = $k; $i < $this->m; ++$i) {
- $s += $this->QR[$i][$k] * $Q[$i][$j];
- }
- $s = -$s/$this->QR[$k][$k];
- for ($i = $k; $i < $this->m; ++$i) {
- $Q[$i][$j] += $s * $this->QR[$i][$k];
- }
- }
- }
- }
- /*
- for($i = 0; $i < count($Q); ++$i) {
- for($j = 0; $j < count($Q); ++$j) {
- if(! isset($Q[$i][$j]) ) {
- $Q[$i][$j] = 0;
- }
- }
- }
- */
- return new PHPExcel_Shared_JAMA_Matrix($Q);
- } // function getQ()
-
-
- /**
- * Least squares solution of A*X = B
- *
- * @param Matrix $B A Matrix with as many rows as A and any number of columns.
- * @return Matrix Matrix that minimizes the two norm of Q*R*X-B.
- */
- public function solve($B) {
- if ($B->getRowDimension() == $this->m) {
- if ($this->isFullRank()) {
- // Copy right hand side
- $nx = $B->getColumnDimension();
- $X = $B->getArrayCopy();
- // Compute Y = transpose(Q)*B
- for ($k = 0; $k < $this->n; ++$k) {
- for ($j = 0; $j < $nx; ++$j) {
- $s = 0.0;
- for ($i = $k; $i < $this->m; ++$i) {
- $s += $this->QR[$i][$k] * $X[$i][$j];
- }
- $s = -$s/$this->QR[$k][$k];
- for ($i = $k; $i < $this->m; ++$i) {
- $X[$i][$j] += $s * $this->QR[$i][$k];
- }
- }
- }
- // Solve R*X = Y;
- for ($k = $this->n-1; $k >= 0; --$k) {
- for ($j = 0; $j < $nx; ++$j) {
- $X[$k][$j] /= $this->Rdiag[$k];
- }
- for ($i = 0; $i < $k; ++$i) {
- for ($j = 0; $j < $nx; ++$j) {
- $X[$i][$j] -= $X[$k][$j]* $this->QR[$i][$k];
- }
- }
- }
- $X = new PHPExcel_Shared_JAMA_Matrix($X);
- return ($X->getMatrix(0, $this->n-1, 0, $nx));
- } else {
- throw new Exception(self::MatrixRankException);
- }
- } else {
- throw new Exception(PHPExcel_Shared_JAMA_Matrix::MatrixDimensionException);
- }
- } // function solve()
-
-} // PHPExcel_Shared_JAMA_class QRDecomposition
diff --git a/admin/survey/excel/PHPExcel/Shared/JAMA/SingularValueDecomposition.php b/admin/survey/excel/PHPExcel/Shared/JAMA/SingularValueDecomposition.php
deleted file mode 100644
index ecfb0cd..0000000
--- a/admin/survey/excel/PHPExcel/Shared/JAMA/SingularValueDecomposition.php
+++ /dev/null
@@ -1,526 +0,0 @@
-<?php
-/**
- * @package JAMA
- *
- * For an m-by-n matrix A with m >= n, the singular value decomposition is
- * an m-by-n orthogonal matrix U, an n-by-n diagonal matrix S, and
- * an n-by-n orthogonal matrix V so that A = U*S*V'.
- *
- * The singular values, sigma[$k] = S[$k][$k], are ordered so that
- * sigma[0] >= sigma[1] >= ... >= sigma[n-1].
- *
- * The singular value decompostion always exists, so the constructor will
- * never fail. The matrix condition number and the effective numerical
- * rank can be computed from this decomposition.
- *
- * @author Paul Meagher
- * @license PHP v3.0
- * @version 1.1
- */
-class SingularValueDecomposition {
-
- /**
- * Internal storage of U.
- * @var array
- */
- private $U = array();
-
- /**
- * Internal storage of V.
- * @var array
- */
- private $V = array();
-
- /**
- * Internal storage of singular values.
- * @var array
- */
- private $s = array();
-
- /**
- * Row dimension.
- * @var int
- */
- private $m;
-
- /**
- * Column dimension.
- * @var int
- */
- private $n;
-
-
- /**
- * Construct the singular value decomposition
- *
- * Derived from LINPACK code.
- *
- * @param $A Rectangular matrix
- * @return Structure to access U, S and V.
- */
- public function __construct($Arg) {
-
- // Initialize.
- $A = $Arg->getArrayCopy();
- $this->m = $Arg->getRowDimension();
- $this->n = $Arg->getColumnDimension();
- $nu = min($this->m, $this->n);
- $e = array();
- $work = array();
- $wantu = true;
- $wantv = true;
- $nct = min($this->m - 1, $this->n);
- $nrt = max(0, min($this->n - 2, $this->m));
-
- // Reduce A to bidiagonal form, storing the diagonal elements
- // in s and the super-diagonal elements in e.
- for ($k = 0; $k < max($nct,$nrt); ++$k) {
-
- if ($k < $nct) {
- // Compute the transformation for the k-th column and
- // place the k-th diagonal in s[$k].
- // Compute 2-norm of k-th column without under/overflow.
- $this->s[$k] = 0;
- for ($i = $k; $i < $this->m; ++$i) {
- $this->s[$k] = hypo($this->s[$k], $A[$i][$k]);
- }
- if ($this->s[$k] != 0.0) {
- if ($A[$k][$k] < 0.0) {
- $this->s[$k] = -$this->s[$k];
- }
- for ($i = $k; $i < $this->m; ++$i) {
- $A[$i][$k] /= $this->s[$k];
- }
- $A[$k][$k] += 1.0;
- }
- $this->s[$k] = -$this->s[$k];
- }
-
- for ($j = $k + 1; $j < $this->n; ++$j) {
- if (($k < $nct) & ($this->s[$k] != 0.0)) {
- // Apply the transformation.
- $t = 0;
- for ($i = $k; $i < $this->m; ++$i) {
- $t += $A[$i][$k] * $A[$i][$j];
- }
- $t = -$t / $A[$k][$k];
- for ($i = $k; $i < $this->m; ++$i) {
- $A[$i][$j] += $t * $A[$i][$k];
- }
- // Place the k-th row of A into e for the
- // subsequent calculation of the row transformation.
- $e[$j] = $A[$k][$j];
- }
- }
-
- if ($wantu AND ($k < $nct)) {
- // Place the transformation in U for subsequent back
- // multiplication.
- for ($i = $k; $i < $this->m; ++$i) {
- $this->U[$i][$k] = $A[$i][$k];
- }
- }
-
- if ($k < $nrt) {
- // Compute the k-th row transformation and place the
- // k-th super-diagonal in e[$k].
- // Compute 2-norm without under/overflow.
- $e[$k] = 0;
- for ($i = $k + 1; $i < $this->n; ++$i) {
- $e[$k] = hypo($e[$k], $e[$i]);
- }
- if ($e[$k] != 0.0) {
- if ($e[$k+1] < 0.0) {
- $e[$k] = -$e[$k];
- }
- for ($i = $k + 1; $i < $this->n; ++$i) {
- $e[$i] /= $e[$k];
- }
- $e[$k+1] += 1.0;
- }
- $e[$k] = -$e[$k];
- if (($k+1 < $this->m) AND ($e[$k] != 0.0)) {
- // Apply the transformation.
- for ($i = $k+1; $i < $this->m; ++$i) {
- $work[$i] = 0.0;
- }
- for ($j = $k+1; $j < $this->n; ++$j) {
- for ($i = $k+1; $i < $this->m; ++$i) {
- $work[$i] += $e[$j] * $A[$i][$j];
- }
- }
- for ($j = $k + 1; $j < $this->n; ++$j) {
- $t = -$e[$j] / $e[$k+1];
- for ($i = $k + 1; $i < $this->m; ++$i) {
- $A[$i][$j] += $t * $work[$i];
- }
- }
- }
- if ($wantv) {
- // Place the transformation in V for subsequent
- // back multiplication.
- for ($i = $k + 1; $i < $this->n; ++$i) {
- $this->V[$i][$k] = $e[$i];
- }
- }
- }
- }
-
- // Set up the final bidiagonal matrix or order p.
- $p = min($this->n, $this->m + 1);
- if ($nct < $this->n) {
- $this->s[$nct] = $A[$nct][$nct];
- }
- if ($this->m < $p) {
- $this->s[$p-1] = 0.0;
- }
- if ($nrt + 1 < $p) {
- $e[$nrt] = $A[$nrt][$p-1];
- }
- $e[$p-1] = 0.0;
- // If required, generate U.
- if ($wantu) {
- for ($j = $nct; $j < $nu; ++$j) {
- for ($i = 0; $i < $this->m; ++$i) {
- $this->U[$i][$j] = 0.0;
- }
- $this->U[$j][$j] = 1.0;
- }
- for ($k = $nct - 1; $k >= 0; --$k) {
- if ($this->s[$k] != 0.0) {
- for ($j = $k + 1; $j < $nu; ++$j) {
- $t = 0;
- for ($i = $k; $i < $this->m; ++$i) {
- $t += $this->U[$i][$k] * $this->U[$i][$j];
- }
- $t = -$t / $this->U[$k][$k];
- for ($i = $k; $i < $this->m; ++$i) {
- $this->U[$i][$j] += $t * $this->U[$i][$k];
- }
- }
- for ($i = $k; $i < $this->m; ++$i ) {
- $this->U[$i][$k] = -$this->U[$i][$k];
- }
- $this->U[$k][$k] = 1.0 + $this->U[$k][$k];
- for ($i = 0; $i < $k - 1; ++$i) {
- $this->U[$i][$k] = 0.0;
- }
- } else {
- for ($i = 0; $i < $this->m; ++$i) {
- $this->U[$i][$k] = 0.0;
- }
- $this->U[$k][$k] = 1.0;
- }
- }
- }
-
- // If required, generate V.
- if ($wantv) {
- for ($k = $this->n - 1; $k >= 0; --$k) {
- if (($k < $nrt) AND ($e[$k] != 0.0)) {
- for ($j = $k + 1; $j < $nu; ++$j) {
- $t = 0;
- for ($i = $k + 1; $i < $this->n; ++$i) {
- $t += $this->V[$i][$k]* $this->V[$i][$j];
- }
- $t = -$t / $this->V[$k+1][$k];
- for ($i = $k + 1; $i < $this->n; ++$i) {
- $this->V[$i][$j] += $t * $this->V[$i][$k];
- }
- }
- }
- for ($i = 0; $i < $this->n; ++$i) {
- $this->V[$i][$k] = 0.0;
- }
- $this->V[$k][$k] = 1.0;
- }
- }
-
- // Main iteration loop for the singular values.
- $pp = $p - 1;
- $iter = 0;
- $eps = pow(2.0, -52.0);
-
- while ($p > 0) {
- // Here is where a test for too many iterations would go.
- // This section of the program inspects for negligible
- // elements in the s and e arrays. On completion the
- // variables kase and k are set as follows:
- // kase = 1 if s(p) and e[k-1] are negligible and k<p
- // kase = 2 if s(k) is negligible and k<p
- // kase = 3 if e[k-1] is negligible, k<p, and
- // s(k), ..., s(p) are not negligible (qr step).
- // kase = 4 if e(p-1) is negligible (convergence).
- for ($k = $p - 2; $k >= -1; --$k) {
- if ($k == -1) {
- break;
- }
- if (abs($e[$k]) <= $eps * (abs($this->s[$k]) + abs($this->s[$k+1]))) {
- $e[$k] = 0.0;
- break;
- }
- }
- if ($k == $p - 2) {
- $kase = 4;
- } else {
- for ($ks = $p - 1; $ks >= $k; --$ks) {
- if ($ks == $k) {
- break;
- }
- $t = ($ks != $p ? abs($e[$ks]) : 0.) + ($ks != $k + 1 ? abs($e[$ks-1]) : 0.);
- if (abs($this->s[$ks]) <= $eps * $t) {
- $this->s[$ks] = 0.0;
- break;
- }
- }
- if ($ks == $k) {
- $kase = 3;
- } else if ($ks == $p-1) {
- $kase = 1;
- } else {
- $kase = 2;
- $k = $ks;
- }
- }
- ++$k;
-
- // Perform the task indicated by kase.
- switch ($kase) {
- // Deflate negligible s(p).
- case 1:
- $f = $e[$p-2];
- $e[$p-2] = 0.0;
- for ($j = $p - 2; $j >= $k; --$j) {
- $t = hypo($this->s[$j],$f);
- $cs = $this->s[$j] / $t;
- $sn = $f / $t;
- $this->s[$j] = $t;
- if ($j != $k) {
- $f = -$sn * $e[$j-1];
- $e[$j-1] = $cs * $e[$j-1];
- }
- if ($wantv) {
- for ($i = 0; $i < $this->n; ++$i) {
- $t = $cs * $this->V[$i][$j] + $sn * $this->V[$i][$p-1];
- $this->V[$i][$p-1] = -$sn * $this->V[$i][$j] + $cs * $this->V[$i][$p-1];
- $this->V[$i][$j] = $t;
- }
- }
- }
- break;
- // Split at negligible s(k).
- case 2:
- $f = $e[$k-1];
- $e[$k-1] = 0.0;
- for ($j = $k; $j < $p; ++$j) {
- $t = hypo($this->s[$j], $f);
- $cs = $this->s[$j] / $t;
- $sn = $f / $t;
- $this->s[$j] = $t;
- $f = -$sn * $e[$j];
- $e[$j] = $cs * $e[$j];
- if ($wantu) {
- for ($i = 0; $i < $this->m; ++$i) {
- $t = $cs * $this->U[$i][$j] + $sn * $this->U[$i][$k-1];
- $this->U[$i][$k-1] = -$sn * $this->U[$i][$j] + $cs * $this->U[$i][$k-1];
- $this->U[$i][$j] = $t;
- }
- }
- }
- break;
- // Perform one qr step.
- case 3:
- // Calculate the shift.
- $scale = max(max(max(max(
- abs($this->s[$p-1]),abs($this->s[$p-2])),abs($e[$p-2])),
- abs($this->s[$k])), abs($e[$k]));
- $sp = $this->s[$p-1] / $scale;
- $spm1 = $this->s[$p-2] / $scale;
- $epm1 = $e[$p-2] / $scale;
- $sk = $this->s[$k] / $scale;
- $ek = $e[$k] / $scale;
- $b = (($spm1 + $sp) * ($spm1 - $sp) + $epm1 * $epm1) / 2.0;
- $c = ($sp * $epm1) * ($sp * $epm1);
- $shift = 0.0;
- if (($b != 0.0) || ($c != 0.0)) {
- $shift = sqrt($b * $b + $c);
- if ($b < 0.0) {
- $shift = -$shift;
- }
- $shift = $c / ($b + $shift);
- }
- $f = ($sk + $sp) * ($sk - $sp) + $shift;
- $g = $sk * $ek;
- // Chase zeros.
- for ($j = $k; $j < $p-1; ++$j) {
- $t = hypo($f,$g);
- $cs = $f/$t;
- $sn = $g/$t;
- if ($j != $k) {
- $e[$j-1] = $t;
- }
- $f = $cs * $this->s[$j] + $sn * $e[$j];
- $e[$j] = $cs * $e[$j] - $sn * $this->s[$j];
- $g = $sn * $this->s[$j+1];
- $this->s[$j+1] = $cs * $this->s[$j+1];
- if ($wantv) {
- for ($i = 0; $i < $this->n; ++$i) {
- $t = $cs * $this->V[$i][$j] + $sn * $this->V[$i][$j+1];
- $this->V[$i][$j+1] = -$sn * $this->V[$i][$j] + $cs * $this->V[$i][$j+1];
- $this->V[$i][$j] = $t;
- }
- }
- $t = hypo($f,$g);
- $cs = $f/$t;
- $sn = $g/$t;
- $this->s[$j] = $t;
- $f = $cs * $e[$j] + $sn * $this->s[$j+1];
- $this->s[$j+1] = -$sn * $e[$j] + $cs * $this->s[$j+1];
- $g = $sn * $e[$j+1];
- $e[$j+1] = $cs * $e[$j+1];
- if ($wantu && ($j < $this->m - 1)) {
- for ($i = 0; $i < $this->m; ++$i) {
- $t = $cs * $this->U[$i][$j] + $sn * $this->U[$i][$j+1];
- $this->U[$i][$j+1] = -$sn * $this->U[$i][$j] + $cs * $this->U[$i][$j+1];
- $this->U[$i][$j] = $t;
- }
- }
- }
- $e[$p-2] = $f;
- $iter = $iter + 1;
- break;
- // Convergence.
- case 4:
- // Make the singular values positive.
- if ($this->s[$k] <= 0.0) {
- $this->s[$k] = ($this->s[$k] < 0.0 ? -$this->s[$k] : 0.0);
- if ($wantv) {
- for ($i = 0; $i <= $pp; ++$i) {
- $this->V[$i][$k] = -$this->V[$i][$k];
- }
- }
- }
- // Order the singular values.
- while ($k < $pp) {
- if ($this->s[$k] >= $this->s[$k+1]) {
- break;
- }
- $t = $this->s[$k];
- $this->s[$k] = $this->s[$k+1];
- $this->s[$k+1] = $t;
- if ($wantv AND ($k < $this->n - 1)) {
- for ($i = 0; $i < $this->n; ++$i) {
- $t = $this->V[$i][$k+1];
- $this->V[$i][$k+1] = $this->V[$i][$k];
- $this->V[$i][$k] = $t;
- }
- }
- if ($wantu AND ($k < $this->m-1)) {
- for ($i = 0; $i < $this->m; ++$i) {
- $t = $this->U[$i][$k+1];
- $this->U[$i][$k+1] = $this->U[$i][$k];
- $this->U[$i][$k] = $t;
- }
- }
- ++$k;
- }
- $iter = 0;
- --$p;
- break;
- } // end switch
- } // end while
-
- } // end constructor
-
-
- /**
- * Return the left singular vectors
- *
- * @access public
- * @return U
- */
- public function getU() {
- return new Matrix($this->U, $this->m, min($this->m + 1, $this->n));
- }
-
-
- /**
- * Return the right singular vectors
- *
- * @access public
- * @return V
- */
- public function getV() {
- return new Matrix($this->V);
- }
-
-
- /**
- * Return the one-dimensional array of singular values
- *
- * @access public
- * @return diagonal of S.
- */
- public function getSingularValues() {
- return $this->s;
- }
-
-
- /**
- * Return the diagonal matrix of singular values
- *
- * @access public
- * @return S
- */
- public function getS() {
- for ($i = 0; $i < $this->n; ++$i) {
- for ($j = 0; $j < $this->n; ++$j) {
- $S[$i][$j] = 0.0;
- }
- $S[$i][$i] = $this->s[$i];
- }
- return new Matrix($S);
- }
-
-
- /**
- * Two norm
- *
- * @access public
- * @return max(S)
- */
- public function norm2() {
- return $this->s[0];
- }
-
-
- /**
- * Two norm condition number
- *
- * @access public
- * @return max(S)/min(S)
- */
- public function cond() {
- return $this->s[0] / $this->s[min($this->m, $this->n) - 1];
- }
-
-
- /**
- * Effective numerical matrix rank
- *
- * @access public
- * @return Number of nonnegligible singular values.
- */
- public function rank() {
- $eps = pow(2.0, -52.0);
- $tol = max($this->m, $this->n) * $this->s[0] * $eps;
- $r = 0;
- for ($i = 0; $i < count($this->s); ++$i) {
- if ($this->s[$i] > $tol) {
- ++$r;
- }
- }
- return $r;
- }
-
-} // class SingularValueDecomposition
diff --git a/admin/survey/excel/PHPExcel/Shared/JAMA/examples/LMQuadTest.php b/admin/survey/excel/PHPExcel/Shared/JAMA/examples/LMQuadTest.php
deleted file mode 100644
index 706d9e9..0000000
--- a/admin/survey/excel/PHPExcel/Shared/JAMA/examples/LMQuadTest.php
+++ /dev/null
@@ -1,116 +0,0 @@
-<?php
-/**
- * quadratic (p-o)'S'S(p-o)
- * solve for o, S
- * S is a single scale factor
- */
-class LMQuadTest {
-
- /**
- * @param array[] $x
- * @param array[] $a
- */
- function val($x, $a) {
- if (count($a) != 3) die ("Wrong number of elements in array a");
- if (count($x) != 2) die ("Wrong number of elements in array x");
-
- $ox = $a[0];
- $oy = $a[1];
- $s = $a[2];
-
- $sdx = $s * ($x[0] - $ox);
- $sdy = $s * ($x[1] - $oy);
-
- return ($sdx * $sdx) + ($sdy * $sdy);
- } // function val()
-
-
- /**
- * z = (p-o)'S'S(p-o)
- * dz/dp = 2S'S(p-o)
- *
- * z = (s*(px-ox))^2 + (s*(py-oy))^2
- * dz/dox = -2(s*(px-ox))*s
- * dz/ds = 2*s*[(px-ox)^2 + (py-oy)^2]
- *
- * z = (s*dx)^2 + (s*dy)^2
- * dz/ds = 2(s*dx)*dx + 2(s*dy)*dy
- *
- * @param array[] $x
- * @param array[] $a
- * @param int $a_k
- * @param array[] $a
- */
- function grad($x, $a, $a_k) {
- if (count($a) != 3) die ("Wrong number of elements in array a");
- if (count($x) != 2) die ("Wrong number of elements in array x");
- if ($a_k < 3) die ("a_k=".$a_k);
-
- $ox = $a[0];
- $oy = $a[1];
- $s = $a[2];
-
- $dx = ($x[0] - $ox);
- $dy = ($x[1] - $oy);
-
- if ($a_k == 0)
- return -2.*$s*$s*$dx;
- elseif ($a_k == 1)
- return -2.*$s*$s*$dy;
- else
- return 2.*$s*($dx*$dx + $dy*$dy);
- } // function grad()
-
-
- /**
- * @return array[] $a
- */
- function initial() {
- $a[0] = 0.05;
- $a[1] = 0.1;
- $a[2] = 1.0;
-
- return $a;
- } // function initial()
-
-
- /**
- * @return Object[] $a
- */
- function testdata() {
- $npts = 25;
-
- $a[0] = 0.;
- $a[1] = 0.;
- $a[2] = 0.9;
-
- $i = 0;
-
- for ($r = -2; $r <= 2; ++$r) {
- for ($c = -2; $c <= 2; ++$c) {
- $x[$i][0] = $c;
- $x[$i][1] = $r;
- $y[$i] = $this->val($x[$i], $a);
- print("Quad ".$c.",".$r." -> ".$y[$i]."<br />");
- $s[$i] = 1.;
- ++$i;
- }
- }
- print("quad x= ");
-
- $qx = new Matrix($x);
- $qx->print(10, 2);
-
- print("quad y= ");
- $qy = new Matrix($y, $npts);
- $qy->print(10, 2);
-
- $o[0] = $x;
- $o[1] = $a;
- $o[2] = $y;
- $o[3] = $s;
-
- return $o;
- } // function testdata()
-
-} // class LMQuadTest
diff --git a/admin/survey/excel/PHPExcel/Shared/JAMA/examples/LagrangeInterpolation.php b/admin/survey/excel/PHPExcel/Shared/JAMA/examples/LagrangeInterpolation.php
deleted file mode 100644
index 27c8937..0000000
--- a/admin/survey/excel/PHPExcel/Shared/JAMA/examples/LagrangeInterpolation.php
+++ /dev/null
@@ -1,59 +0,0 @@
-<?php
-
-require_once "../Matrix.php";
-
-/**
- * Given n points (x0,y0)...(xn-1,yn-1), the following methid computes
- * the polynomial factors of the n-1't degree polynomial passing through
- * the n points.
- *
- * Example: Passing in three points (2,3) (1,4) and (3,7) will produce
- * the results [2.5, -8.5, 10] which means that the points are on the
- * curve y = 2.5x² - 8.5x + 10.
- *
- * @see http://geosoft.no/software/lagrange/LagrangeInterpolation.java.html
- * @author Jacob Dreyer
- * @author Paul Meagher (port to PHP and minor changes)
- *
- * @param x[] float
- * @param y[] float
- */
-class LagrangeInterpolation {
-
- public function findPolynomialFactors($x, $y) {
- $n = count($x);
-
- $data = array(); // double[n][n];
- $rhs = array(); // double[n];
-
- for ($i = 0; $i < $n; ++$i) {
- $v = 1;
- for ($j = 0; $j < $n; ++$j) {
- $data[$i][$n-$j-1] = $v;
- $v *= $x[$i];
- }
- $rhs[$i] = $y[$i];
- }
-
- // Solve m * s = b
- $m = new Matrix($data);
- $b = new Matrix($rhs, $n);
-
- $s = $m->solve($b);
-
- return $s->getRowPackedCopy();
- } // function findPolynomialFactors()
-
-} // class LagrangeInterpolation
-
-
-$x = array(2.0, 1.0, 3.0);
-$y = array(3.0, 4.0, 7.0);
-
-$li = new LagrangeInterpolation;
-$f = $li->findPolynomialFactors($x, $y);
-
-
-for ($i = 0; $i < 3; ++$i) {
- echo $f[$i]."<br />";
-}
diff --git a/admin/survey/excel/PHPExcel/Shared/JAMA/examples/LagrangeInterpolation2.php b/admin/survey/excel/PHPExcel/Shared/JAMA/examples/LagrangeInterpolation2.php
deleted file mode 100644
index cd9cb9a..0000000
--- a/admin/survey/excel/PHPExcel/Shared/JAMA/examples/LagrangeInterpolation2.php
+++ /dev/null
@@ -1,59 +0,0 @@
-<?php
-
-require_once "../Matrix.php";
-
-/**
- * Given n points (x0,y0)...(xn-1,yn-1), the following method computes
- * the polynomial factors of the n-1't degree polynomial passing through
- * the n points.
- *
- * Example: Passing in three points (2,3) (1,4) and (3,7) will produce
- * the results [2.5, -8.5, 10] which means that the points are on the
- * curve y = 2.5x² - 8.5x + 10.
- *
- * @see http://geosoft.no/software/lagrange/LagrangeInterpolation.java.html
- * @see http://source.freehep.org/jcvsweb/ilc/LCSIM/wdview/lcsim/src/org/lcsim/fit/polynomial/PolynomialFitter.java
- * @author Jacob Dreyer
- * @author Paul Meagher (port to PHP and minor changes)
- *
- * @param x[] float
- * @param y[] float
- */
-class LagrangeInterpolation {
-
- public function findPolynomialFactors($x, $y) {
- $n = count($x);
-
- $data = array(); // double[n][n];
- $rhs = array(); // double[n];
-
- for ($i = 0; $i < $n; ++$i) {
- $v = 1;
- for ($j = 0; $j < $n; ++$j) {
- $data[$i][$n-$j-1] = $v;
- $v *= $x[$i];
- }
- $rhs[$i] = $y[$i];
- }
-
- // Solve m * s = b
- $m = new Matrix($data);
- $b = new Matrix($rhs, $n);
-
- $s = $m->solve($b);
-
- return $s->getRowPackedCopy();
- } // function findPolynomialFactors()
-
-} // class LagrangeInterpolation
-
-
-$x = array(2.0, 1.0, 3.0);
-$y = array(3.0, 4.0, 7.0);
-
-$li = new LagrangeInterpolation;
-$f = $li->findPolynomialFactors($x, $y);
-
-for ($i = 0; $i < 3; ++$i) {
- echo $f[$i]."<br />";
-}
diff --git a/admin/survey/excel/PHPExcel/Shared/JAMA/examples/LevenbergMarquardt.php b/admin/survey/excel/PHPExcel/Shared/JAMA/examples/LevenbergMarquardt.php
deleted file mode 100644
index 01c4acc..0000000
--- a/admin/survey/excel/PHPExcel/Shared/JAMA/examples/LevenbergMarquardt.php
+++ /dev/null
@@ -1,185 +0,0 @@
-<?php
-
-// Levenberg-Marquardt in PHP
-
-// http://www.idiom.com/~zilla/Computer/Javanumeric/LM.java
-
-class LevenbergMarquardt {
-
- /**
- * Calculate the current sum-squared-error
- *
- * Chi-squared is the distribution of squared Gaussian errors,
- * thus the name.
- *
- * @param double[][] $x
- * @param double[] $a
- * @param double[] $y,
- * @param double[] $s,
- * @param object $f
- */
- function chiSquared($x, $a, $y, $s, $f) {
- $npts = count($y);
- $sum = 0.0;
-
- for ($i = 0; $i < $npts; ++$i) {
- $d = $y[$i] - $f->val($x[$i], $a);
- $d = $d / $s[$i];
- $sum = $sum + ($d*$d);
- }
-
- return $sum;
- } // function chiSquared()
-
-
- /**
- * Minimize E = sum {(y[k] - f(x[k],a)) / s[k]}^2
- * The individual errors are optionally scaled by s[k].
- * Note that LMfunc implements the value and gradient of f(x,a),
- * NOT the value and gradient of E with respect to a!
- *
- * @param x array of domain points, each may be multidimensional
- * @param y corresponding array of values
- * @param a the parameters/state of the model
- * @param vary false to indicate the corresponding a[k] is to be held fixed
- * @param s2 sigma^2 for point i
- * @param lambda blend between steepest descent (lambda high) and
- * jump to bottom of quadratic (lambda zero).
- * Start with 0.001.
- * @param termepsilon termination accuracy (0.01)
- * @param maxiter stop and return after this many iterations if not done
- * @param verbose set to zero (no prints), 1, 2
- *
- * @return the new lambda for future iterations.
- * Can use this and maxiter to interleave the LM descent with some other
- * task, setting maxiter to something small.
- */
- function solve($x, $a, $y, $s, $vary, $f, $lambda, $termepsilon, $maxiter, $verbose) {
- $npts = count($y);
- $nparm = count($a);
-
- if ($verbose > 0) {
- print("solve x[".count($x)."][".count($x[0])."]");
- print(" a[".count($a)."]");
- println(" y[".count(length)."]");
- }
-
- $e0 = $this->chiSquared($x, $a, $y, $s, $f);
-
- //double lambda = 0.001;
- $done = false;
-
- // g = gradient, H = hessian, d = step to minimum
- // H d = -g, solve for d
- $H = array();
- $g = array();
-
- //double[] d = new double[nparm];
-
- $oos2 = array();
-
- for($i = 0; $i < $npts; ++$i) {
- $oos2[$i] = 1./($s[$i]*$s[$i]);
- }
- $iter = 0;
- $term = 0; // termination count test
-
- do {
- ++$iter;
-
- // hessian approximation
- for( $r = 0; $r < $nparm; ++$r) {
- for( $c = 0; $c < $nparm; ++$c) {
- for( $i = 0; $i < $npts; ++$i) {
- if ($i == 0) $H[$r][$c] = 0.;
- $xi = $x[$i];
- $H[$r][$c] += ($oos2[$i] * $f->grad($xi, $a, $r) * $f->grad($xi, $a, $c));
- } //npts
- } //c
- } //r
-
- // boost diagonal towards gradient descent
- for( $r = 0; $r < $nparm; ++$r)
- $H[$r][$r] *= (1. + $lambda);
-
- // gradient
- for( $r = 0; $r < $nparm; ++$r) {
- for( $i = 0; $i < $npts; ++$i) {
- if ($i == 0) $g[$r] = 0.;
- $xi = $x[$i];
- $g[$r] += ($oos2[$i] * ($y[$i]-$f->val($xi,$a)) * $f->grad($xi, $a, $r));
- }
- } //npts
-
- // scale (for consistency with NR, not necessary)
- if ($false) {
- for( $r = 0; $r < $nparm; ++$r) {
- $g[$r] = -0.5 * $g[$r];
- for( $c = 0; $c < $nparm; ++$c) {
- $H[$r][$c] *= 0.5;
- }
- }
- }
-
- // solve H d = -g, evaluate error at new location
- //double[] d = DoubleMatrix.solve(H, g);
-// double[] d = (new Matrix(H)).lu().solve(new Matrix(g, nparm)).getRowPackedCopy();
- //double[] na = DoubleVector.add(a, d);
-// double[] na = (new Matrix(a, nparm)).plus(new Matrix(d, nparm)).getRowPackedCopy();
-// double e1 = chiSquared(x, na, y, s, f);
-
-// if (verbose > 0) {
-// System.out.println("\n\niteration "+iter+" lambda = "+lambda);
-// System.out.print("a = ");
-// (new Matrix(a, nparm)).print(10, 2);
-// if (verbose > 1) {
-// System.out.print("H = ");
-// (new Matrix(H)).print(10, 2);
-// System.out.print("g = ");
-// (new Matrix(g, nparm)).print(10, 2);
-// System.out.print("d = ");
-// (new Matrix(d, nparm)).print(10, 2);
-// }
-// System.out.print("e0 = " + e0 + ": ");
-// System.out.print("moved from ");
-// (new Matrix(a, nparm)).print(10, 2);
-// System.out.print("e1 = " + e1 + ": ");
-// if (e1 < e0) {
-// System.out.print("to ");
-// (new Matrix(na, nparm)).print(10, 2);
-// } else {
-// System.out.println("move rejected");
-// }
-// }
-
- // termination test (slightly different than NR)
-// if (Math.abs(e1-e0) > termepsilon) {
-// term = 0;
-// } else {
-// term++;
-// if (term == 4) {
-// System.out.println("terminating after " + iter + " iterations");
-// done = true;
-// }
-// }
-// if (iter >= maxiter) done = true;
-
- // in the C++ version, found that changing this to e1 >= e0
- // was not a good idea. See comment there.
- //
-// if (e1 > e0 || Double.isNaN(e1)) { // new location worse than before
-// lambda *= 10.;
-// } else { // new location better, accept new parameters
-// lambda *= 0.1;
-// e0 = e1;
-// // simply assigning a = na will not get results copied back to caller
-// for( int i = 0; i < nparm; i++ ) {
-// if (vary[i]) a[i] = na[i];
-// }
-// }
- } while(!$done);
-
- return $lambda;
- } // function solve()
-
-} // class LevenbergMarquardt
diff --git a/admin/survey/excel/PHPExcel/Shared/JAMA/examples/MagicSquareExample.php b/admin/survey/excel/PHPExcel/Shared/JAMA/examples/MagicSquareExample.php
deleted file mode 100644
index 8a66903..0000000
--- a/admin/survey/excel/PHPExcel/Shared/JAMA/examples/MagicSquareExample.php
+++ /dev/null
@@ -1,182 +0,0 @@
-<?php
-/**
-* @package JAMA
-*/
-
-require_once "../Matrix.php";
-
-/**
-* Example of use of Matrix Class, featuring magic squares.
-*/
-class MagicSquareExample {
-
- /**
- * Generate magic square test matrix.
- * @param int n dimension of matrix
- */
- function magic($n) {
-
- // Odd order
-
- if (($n % 2) == 1) {
- $a = ($n+1)/2;
- $b = ($n+1);
- for ($j = 0; $j < $n; ++$j)
- for ($i = 0; $i < $n; ++$i)
- $M[$i][$j] = $n*(($i+$j+$a) % $n) + (($i+2*$j+$b) % $n) + 1;
-
- // Doubly Even Order
-
- } else if (($n % 4) == 0) {
- for ($j = 0; $j < $n; ++$j) {
- for ($i = 0; $i < $n; ++$i) {
- if ((($i+1)/2)%2 == (($j+1)/2)%2)
- $M[$i][$j] = $n*$n-$n*$i-$j;
- else
- $M[$i][$j] = $n*$i+$j+1;
- }
- }
-
- // Singly Even Order
-
- } else {
-
- $p = $n/2;
- $k = ($n-2)/4;
- $A = $this->magic($p);
- $M = array();
- for ($j = 0; $j < $p; ++$j) {
- for ($i = 0; $i < $p; ++$i) {
- $aij = $A->get($i,$j);
- $M[$i][$j] = $aij;
- $M[$i][$j+$p] = $aij + 2*$p*$p;
- $M[$i+$p][$j] = $aij + 3*$p*$p;
- $M[$i+$p][$j+$p] = $aij + $p*$p;
- }
- }
-
- for ($i = 0; $i < $p; ++$i) {
- for ($j = 0; $j < $k; ++$j) {
- $t = $M[$i][$j];
- $M[$i][$j] = $M[$i+$p][$j];
- $M[$i+$p][$j] = $t;
- }
- for ($j = $n-$k+1; $j < $n; ++$j) {
- $t = $M[$i][$j];
- $M[$i][$j] = $M[$i+$p][$j];
- $M[$i+$p][$j] = $t;
- }
- }
-
- $t = $M[$k][0]; $M[$k][0] = $M[$k+$p][0]; $M[$k+$p][0] = $t;
- $t = $M[$k][$k]; $M[$k][$k] = $M[$k+$p][$k]; $M[$k+$p][$k] = $t;
-
- }
-
- return new Matrix($M);
-
- }
-
- /**
- * Simple function to replicate PHP 5 behaviour
- */
- function microtime_float() {
- list($usec, $sec) = explode(" ", microtime());
- return ((float)$usec + (float)$sec);
- }
-
- /**
- * Tests LU, QR, SVD and symmetric Eig decompositions.
- *
- * n = order of magic square.
- * trace = diagonal sum, should be the magic sum, (n^3 + n)/2.
- * max_eig = maximum eigenvalue of (A + A')/2, should equal trace.
- * rank = linear algebraic rank, should equal n if n is odd,
- * be less than n if n is even.
- * cond = L_2 condition number, ratio of singular values.
- * lu_res = test of LU factorization, norm1(L*U-A(p,:))/(n*eps).
- * qr_res = test of QR factorization, norm1(Q*R-A)/(n*eps).
- */
- function main() {
- ?>
- <p>Test of Matrix Class, using magic squares.</p>
- <p>See MagicSquareExample.main() for an explanation.</p>
- <table border='1' cellspacing='0' cellpadding='4'>
- <tr>
- <th>n</th>
- <th>trace</th>
- <th>max_eig</th>
- <th>rank</th>
- <th>cond</th>
- <th>lu_res</th>
- <th>qr_res</th>
- </tr>
- <?php
- $start_time = $this->microtime_float();
- $eps = pow(2.0,-52.0);
- for ($n = 3; $n <= 6; ++$n) {
- echo "<tr>";
-
- echo "<td align='right'>$n</td>";
-
- $M = $this->magic($n);
- $t = (int) $M->trace();
-
- echo "<td align='right'>$t</td>";
-
- $O = $M->plus($M->transpose());
- $E = new EigenvalueDecomposition($O->times(0.5));
- $d = $E->getRealEigenvalues();
-
- echo "<td align='right'>".$d[$n-1]."</td>";
-
- $r = $M->rank();
-
- echo "<td align='right'>".$r."</td>";
-
- $c = $M->cond();
-
- if ($c < 1/$eps)
- echo "<td align='right'>".sprintf("%.3f",$c)."</td>";
- else
- echo "<td align='right'>Inf</td>";
-
- $LU = new LUDecomposition($M);
- $L = $LU->getL();
- $U = $LU->getU();
- $p = $LU->getPivot();
- // Java version: R = L.times(U).minus(M.getMatrix(p,0,n-1));
- $S = $L->times($U);
- $R = $S->minus($M->getMatrix($p,0,$n-1));
- $res = $R->norm1()/($n*$eps);
-
- echo "<td align='right'>".sprintf("%.3f",$res)."</td>";
-
- $QR = new QRDecomposition($M);
- $Q = $QR->getQ();
- $R = $QR->getR();
- $S = $Q->times($R);
- $R = $S->minus($M);
- $res = $R->norm1()/($n*$eps);
-
- echo "<td align='right'>".sprintf("%.3f",$res)."</td>";
-
- echo "</tr>";
-
- }
- echo "<table>";
- echo "<br />";
-
- $stop_time = $this->microtime_float();
- $etime = $stop_time - $start_time;
-
- echo "<p>Elapsed time is ". sprintf("%.4f",$etime) ." seconds.</p>";
-
- }
-
-}
-
-$magic = new MagicSquareExample();
-$magic->main();
-
-?>
diff --git a/admin/survey/excel/PHPExcel/Shared/JAMA/examples/Stats.php b/admin/survey/excel/PHPExcel/Shared/JAMA/examples/Stats.php
deleted file mode 100644
index 7d1359b..0000000
--- a/admin/survey/excel/PHPExcel/Shared/JAMA/examples/Stats.php
+++ /dev/null
@@ -1,1605 +0,0 @@
-<?php
-//
-// +----------------------------------------------------------------------+
-// | PHP Version 4 |
-// +----------------------------------------------------------------------+
-// | Copyright (c) 1997-2003 The PHP Group |
-// +----------------------------------------------------------------------+
-// | This source file is subject to version 2.0 of the PHP license, |
-// | that is bundled with this package in the file LICENSE, and is |
-// | available at through the world-wide-web at |
-// | http://www.php.net/license/2_02.txt. |
-// | If you did not receive a copy of the PHP license and are unable to |
-// | obtain it through the world-wide-web, please send a note to |
-// | license@php.net so we can mail you a copy immediately. |
-// +----------------------------------------------------------------------+
-// | Authors: Jesus M. Castagnetto <jmcastagnetto@php.net> |
-// +----------------------------------------------------------------------+
-//
-// $Id: Stats.php,v 1.15 2003/06/01 11:40:30 jmcastagnetto Exp $
-//
-
-include_once 'PEAR.php';
-
-/**
-* @package Math_Stats
-*/
-
-// Constants for defining the statistics to calculate /*{{{*/
-/**
-* STATS_BASIC to generate the basic descriptive statistics
-*/
-define('STATS_BASIC', 1);
-/**
-* STATS_FULL to generate also higher moments, mode, median, etc.
-*/
-define('STATS_FULL', 2);
-/*}}}*/
-
-// Constants describing the data set format /*{{{*/
-/**
-* STATS_DATA_SIMPLE for an array of numeric values. This is the default.
-* e.g. $data = array(2,3,4,5,1,1,6);
-*/
-define('STATS_DATA_SIMPLE', 0);
-/**
-* STATS_DATA_CUMMULATIVE for an associative array of frequency values,
-* where in each array entry, the index is the data point and the
-* value the count (frequency):
-* e.g. $data = array(3=>4, 2.3=>5, 1.25=>6, 0.5=>3)
-*/
-define('STATS_DATA_CUMMULATIVE', 1);
-/*}}}*/
-
-// Constants defining how to handle nulls /*{{{*/
-/**
-* STATS_REJECT_NULL, reject data sets with null values. This is the default.
-* Any non-numeric value is considered a null in this context.
-*/
-define('STATS_REJECT_NULL', -1);
-/**
-* STATS_IGNORE_NULL, ignore null values and prune them from the data.
-* Any non-numeric value is considered a null in this context.
-*/
-define('STATS_IGNORE_NULL', -2);
-/**
-* STATS_USE_NULL_AS_ZERO, assign the value of 0 (zero) to null values.
-* Any non-numeric value is considered a null in this context.
-*/
-define('STATS_USE_NULL_AS_ZERO', -3);
-/*}}}*/
-
-/**
-* A class to calculate descriptive statistics from a data set.
-* Data sets can be simple arrays of data, or a cummulative hash.
-* The second form is useful when passing large data set,
-* for example the data set:
-*
-* <pre>
-* $data1 = array (1,2,1,1,1,1,3,3,4.1,3,2,2,4.1,1,1,2,3,3,2,2,1,1,2,2);
-* </pre>
-*
-* can be epxressed more compactly as:
-*
-* <pre>
-* $data2 = array('1'=>9, '2'=>8, '3'=>5, '4.1'=>2);
-* </pre>
-*
-* Example of use:
-*
-* <pre>
-* include_once 'Math/Stats.php';
-* $s = new Math_Stats();
-* $s->setData($data1);
-* // or
-* // $s->setData($data2, STATS_DATA_CUMMULATIVE);
-* $stats = $s->calcBasic();
-* echo 'Mean: '.$stats['mean'].' StDev: '.$stats['stdev'].' <br />\n';
-*
-* // using data with nulls
-* // first ignoring them:
-* $data3 = array(1.2, 'foo', 2.4, 3.1, 4.2, 3.2, null, 5.1, 6.2);
-* $s->setNullOption(STATS_IGNORE_NULL);
-* $s->setData($data3);
-* $stats3 = $s->calcFull();
-*
-* // and then assuming nulls == 0
-* $s->setNullOption(STATS_USE_NULL_AS_ZERO);
-* $s->setData($data3);
-* $stats3 = $s->calcFull();
-* </pre>
-*
-* Originally this class was part of NumPHP (Numeric PHP package)
-*
-* @author Jesus M. Castagnetto <jmcastagnetto@php.net>
-* @version 0.8
-* @access public
-* @package Math_Stats
-*/
-class Base {/*{{{*/
- // properties /*{{{*/
-
- /**
- * The simple or cummulative data set.
- * Null by default.
- *
- * @access private
- * @var array
- */
- public $_data = null;
-
- /**
- * Expanded data set. Only set when cummulative data
- * is being used. Null by default.
- *
- * @access private
- * @var array
- */
- public $_dataExpanded = null;
-
- /**
- * Flag for data type, one of STATS_DATA_SIMPLE or
- * STATS_DATA_CUMMULATIVE. Null by default.
- *
- * @access private
- * @var int
- */
- public $_dataOption = null;
-
- /**
- * Flag for null handling options. One of STATS_REJECT_NULL,
- * STATS_IGNORE_NULL or STATS_USE_NULL_AS_ZERO
- *
- * @access private
- * @var int
- */
- public $_nullOption;
-
- /**
- * Array for caching result values, should be reset
- * when using setData()
- *
- * @access private
- * @var array
- */
- public $_calculatedValues = array();
-
- /*}}}*/
-
- /**
- * Constructor for the class
- *
- * @access public
- * @param optional int $nullOption how to handle null values
- * @return object Math_Stats
- */
- function Math_Stats($nullOption=STATS_REJECT_NULL) {/*{{{*/
- $this->_nullOption = $nullOption;
- }/*}}}*/
-
- /**
- * Sets and verifies the data, checking for nulls and using
- * the current null handling option
- *
- * @access public
- * @param array $arr the data set
- * @param optional int $opt data format: STATS_DATA_CUMMULATIVE or STATS_DATA_SIMPLE (default)
- * @return mixed true on success, a PEAR_Error object otherwise
- */
- function setData($arr, $opt=STATS_DATA_SIMPLE) {/*{{{*/
- if (!is_array($arr)) {
- return PEAR::raiseError('invalid data, an array of numeric data was expected');
- }
- $this->_data = null;
- $this->_dataExpanded = null;
- $this->_dataOption = null;
- $this->_calculatedValues = array();
- if ($opt == STATS_DATA_SIMPLE) {
- $this->_dataOption = $opt;
- $this->_data = array_values($arr);
- } else if ($opt == STATS_DATA_CUMMULATIVE) {
- $this->_dataOption = $opt;
- $this->_data = $arr;
- $this->_dataExpanded = array();
- }
- return $this->_validate();
- }/*}}}*/
-
- /**
- * Returns the data which might have been modified
- * according to the current null handling options.
- *
- * @access public
- * @param boolean $expanded whether to return a expanded list, default is false
- * @return mixed array of data on success, a PEAR_Error object otherwise
- * @see _validate()
- */
- function getData($expanded=false) {/*{{{*/
- if ($this->_data == null) {
- return PEAR::raiseError('data has not been set');
- }
- if ($this->_dataOption == STATS_DATA_CUMMULATIVE && $expanded) {
- return $this->_dataExpanded;
- } else {
- return $this->_data;
- }
- }/*}}}*/
-
- /**
- * Sets the null handling option.
- * Must be called before assigning a new data set containing null values
- *
- * @access public
- * @return mixed true on success, a PEAR_Error object otherwise
- * @see _validate()
- */
- function setNullOption($nullOption) {/*{{{*/
- if ($nullOption == STATS_REJECT_NULL
- || $nullOption == STATS_IGNORE_NULL
- || $nullOption == STATS_USE_NULL_AS_ZERO) {
- $this->_nullOption = $nullOption;
- return true;
- } else {
- return PEAR::raiseError('invalid null handling option expecting: '.
- 'STATS_REJECT_NULL, STATS_IGNORE_NULL or STATS_USE_NULL_AS_ZERO');
- }
- }/*}}}*/
-
- /**
- * Transforms the data by substracting each entry from the mean and
- * dividing by its standard deviation. This will reset all pre-calculated
- * values to their original (unset) defaults.
- *
- * @access public
- * @return mixed true on success, a PEAR_Error object otherwise
- * @see mean()
- * @see stDev()
- * @see setData()
- */
- function studentize() {/*{{{*/
- $mean = $this->mean();
- if (PEAR::isError($mean)) {
- return $mean;
- }
- $std = $this->stDev();
- if (PEAR::isError($std)) {
- return $std;
- }
- if ($std == 0) {
- return PEAR::raiseError('cannot studentize data, standard deviation is zero.');
- }
- $arr = array();
- if ($this->_dataOption == STATS_DATA_CUMMULATIVE) {
- foreach ($this->_data as $val=>$freq) {
- $newval = ($val - $mean) / $std;
- $arr["$newval"] = $freq;
- }
- } else {
- foreach ($this->_data as $val) {
- $newval = ($val - $mean) / $std;
- $arr[] = $newval;
- }
- }
- return $this->setData($arr, $this->_dataOption);
- }/*}}}*/
-
- /**
- * Transforms the data by substracting each entry from the mean.
- * This will reset all pre-calculated values to their original (unset) defaults.
- *
- * @access public
- * @return mixed true on success, a PEAR_Error object otherwise
- * @see mean()
- * @see setData()
- */
- function center() {/*{{{*/
- $mean = $this->mean();
- if (PEAR::isError($mean)) {
- return $mean;
- }
- $arr = array();
- if ($this->_dataOption == STATS_DATA_CUMMULATIVE) {
- foreach ($this->_data as $val=>$freq) {
- $newval = $val - $mean;
- $arr["$newval"] = $freq;
- }
- } else {
- foreach ($this->_data as $val) {
- $newval = $val - $mean;
- $arr[] = $newval;
- }
- }
- return $this->setData($arr, $this->_dataOption);
- }/*}}}*/
-
- /**
- * Calculates the basic or full statistics for the data set
- *
- * @access public
- * @param int $mode one of STATS_BASIC or STATS_FULL
- * @param boolean $returnErrorObject whether the raw PEAR_Error (when true, default),
- * or only the error message will be returned (when false), if an error happens.
- * @return mixed an associative array of statistics on success, a PEAR_Error object otherwise
- * @see calcBasic()
- * @see calcFull()
- */
- function calc($mode, $returnErrorObject=true) {/*{{{*/
- if ($this->_data == null) {
- return PEAR::raiseError('data has not been set');
- }
- if ($mode == STATS_BASIC) {
- return $this->calcBasic($returnErrorObject);
- } elseif ($mode == STATS_FULL) {
- return $this->calcFull($returnErrorObject);
- } else {
- return PEAR::raiseError('incorrect mode, expected STATS_BASIC or STATS_FULL');
- }
- }/*}}}*/
-
- /**
- * Calculates a basic set of statistics
- *
- * @access public
- * @param boolean $returnErrorObject whether the raw PEAR_Error (when true, default),
- * or only the error message will be returned (when false), if an error happens.
- * @return mixed an associative array of statistics on success, a PEAR_Error object otherwise
- * @see calc()
- * @see calcFull()
- */
- function calcBasic($returnErrorObject=true) {/*{{{*/
- return array (
- 'min' => $this->__format($this->min(), $returnErrorObject),
- 'max' => $this->__format($this->max(), $returnErrorObject),
- 'sum' => $this->__format($this->sum(), $returnErrorObject),
- 'sum2' => $this->__format($this->sum2(), $returnErrorObject),
- 'count' => $this->__format($this->count(), $returnErrorObject),
- 'mean' => $this->__format($this->mean(), $returnErrorObject),
- 'stdev' => $this->__format($this->stDev(), $returnErrorObject),
- 'variance' => $this->__format($this->variance(), $returnErrorObject),
- 'range' => $this->__format($this->range(), $returnErrorObject)
- );
- }/*}}}*/
-
- /**
- * Calculates a full set of statistics
- *
- * @access public
- * @param boolean $returnErrorObject whether the raw PEAR_Error (when true, default),
- * or only the error message will be returned (when false), if an error happens.
- * @return mixed an associative array of statistics on success, a PEAR_Error object otherwise
- * @see calc()
- * @see calcBasic()
- */
- function calcFull($returnErrorObject=true) {/*{{{*/
- return array (
- 'min' => $this->__format($this->min(), $returnErrorObject),
- 'max' => $this->__format($this->max(), $returnErrorObject),
- 'sum' => $this->__format($this->sum(), $returnErrorObject),
- 'sum2' => $this->__format($this->sum2(), $returnErrorObject),
- 'count' => $this->__format($this->count(), $returnErrorObject),
- 'mean' => $this->__format($this->mean(), $returnErrorObject),
- 'median' => $this->__format($this->median(), $returnErrorObject),
- 'mode' => $this->__format($this->mode(), $returnErrorObject),
- 'midrange' => $this->__format($this->midrange(), $returnErrorObject),
- 'geometric_mean' => $this->__format($this->geometricMean(), $returnErrorObject),
- 'harmonic_mean' => $this->__format($this->harmonicMean(), $returnErrorObject),
- 'stdev' => $this->__format($this->stDev(), $returnErrorObject),
- 'absdev' => $this->__format($this->absDev(), $returnErrorObject),
- 'variance' => $this->__format($this->variance(), $returnErrorObject),
- 'range' => $this->__format($this->range(), $returnErrorObject),
- 'std_error_of_mean' => $this->__format($this->stdErrorOfMean(), $returnErrorObject),
- 'skewness' => $this->__format($this->skewness(), $returnErrorObject),
- 'kurtosis' => $this->__format($this->kurtosis(), $returnErrorObject),
- 'coeff_of_variation' => $this->__format($this->coeffOfVariation(), $returnErrorObject),
- 'sample_central_moments' => array (
- 1 => $this->__format($this->sampleCentralMoment(1), $returnErrorObject),
- 2 => $this->__format($this->sampleCentralMoment(2), $returnErrorObject),
- 3 => $this->__format($this->sampleCentralMoment(3), $returnErrorObject),
- 4 => $this->__format($this->sampleCentralMoment(4), $returnErrorObject),
- 5 => $this->__format($this->sampleCentralMoment(5), $returnErrorObject)
- ),
- 'sample_raw_moments' => array (
- 1 => $this->__format($this->sampleRawMoment(1), $returnErrorObject),
- 2 => $this->__format($this->sampleRawMoment(2), $returnErrorObject),
- 3 => $this->__format($this->sampleRawMoment(3), $returnErrorObject),
- 4 => $this->__format($this->sampleRawMoment(4), $returnErrorObject),
- 5 => $this->__format($this->sampleRawMoment(5), $returnErrorObject)
- ),
- 'frequency' => $this->__format($this->frequency(), $returnErrorObject),
- 'quartiles' => $this->__format($this->quartiles(), $returnErrorObject),
- 'interquartile_range' => $this->__format($this->interquartileRange(), $returnErrorObject),
- 'interquartile_mean' => $this->__format($this->interquartileMean(), $returnErrorObject),
- 'quartile_deviation' => $this->__format($this->quartileDeviation(), $returnErrorObject),
- 'quartile_variation_coefficient' => $this->__format($this->quartileVariationCoefficient(), $returnErrorObject),
- 'quartile_skewness_coefficient' => $this->__format($this->quartileSkewnessCoefficient(), $returnErrorObject)
- );
- }/*}}}*/
-
- /**
- * Calculates the minimum of a data set.
- * Handles cummulative data sets correctly
- *
- * @access public
- * @return mixed the minimum value on success, a PEAR_Error object otherwise
- * @see calc()
- * @see max()
- */
- function min() {/*{{{*/
- if ($this->_data == null) {
- return PEAR::raiseError('data has not been set');
- }
- if (!array_key_exists('min', $this->_calculatedValues)) {
- if ($this->_dataOption == STATS_DATA_CUMMULATIVE) {
- $min = min(array_keys($this->_data));
- } else {
- $min = min($this->_data);
- }
- $this->_calculatedValues['min'] = $min;
- }
- return $this->_calculatedValues['min'];
- }/*}}}*/
-
- /**
- * Calculates the maximum of a data set.
- * Handles cummulative data sets correctly
- *
- * @access public
- * @return mixed the maximum value on success, a PEAR_Error object otherwise
- * @see calc()
- * @see min()
- */
- function max() {/*{{{*/
- if ($this->_data == null) {
- return PEAR::raiseError('data has not been set');
- }
- if (!array_key_exists('max', $this->_calculatedValues)) {
- if ($this->_dataOption == STATS_DATA_CUMMULATIVE) {
- $max = max(array_keys($this->_data));
- } else {
- $max = max($this->_data);
- }
- $this->_calculatedValues['max'] = $max;
- }
- return $this->_calculatedValues['max'];
- }/*}}}*/
-
- /**
- * Calculates SUM { xi }
- * Handles cummulative data sets correctly
- *
- * @access public
- * @return mixed the sum on success, a PEAR_Error object otherwise
- * @see calc()
- * @see sum2()
- * @see sumN()
- */
- function sum() {/*{{{*/
- if (!array_key_exists('sum', $this->_calculatedValues)) {
- $sum = $this->sumN(1);
- if (PEAR::isError($sum)) {
- return $sum;
- } else {
- $this->_calculatedValues['sum'] = $sum;
- }
- }
- return $this->_calculatedValues['sum'];
- }/*}}}*/
-
- /**
- * Calculates SUM { (xi)^2 }
- * Handles cummulative data sets correctly
- *
- * @access public
- * @return mixed the sum on success, a PEAR_Error object otherwise
- * @see calc()
- * @see sum()
- * @see sumN()
- */
- function sum2() {/*{{{*/
- if (!array_key_exists('sum2', $this->_calculatedValues)) {
- $sum2 = $this->sumN(2);
- if (PEAR::isError($sum2)) {
- return $sum2;
- } else {
- $this->_calculatedValues['sum2'] = $sum2;
- }
- }
- return $this->_calculatedValues['sum2'];
- }/*}}}*/
-
- /**
- * Calculates SUM { (xi)^n }
- * Handles cummulative data sets correctly
- *
- * @access public
- * @param numeric $n the exponent
- * @return mixed the sum on success, a PEAR_Error object otherwise
- * @see calc()
- * @see sum()
- * @see sum2()
- */
- function sumN($n) {/*{{{*/
- if ($this->_data == null) {
- return PEAR::raiseError('data has not been set');
- }
- $sumN = 0;
- if ($this->_dataOption == STATS_DATA_CUMMULATIVE) {
- foreach($this->_data as $val=>$freq) {
- $sumN += $freq * pow((double)$val, (double)$n);
- }
- } else {
- foreach($this->_data as $val) {
- $sumN += pow((double)$val, (double)$n);
- }
- }
- return $sumN;
- }/*}}}*/
-
- /**
- * Calculates PROD { (xi) }, (the product of all observations)
- * Handles cummulative data sets correctly
- *
- * @access public
- * @return mixed the product on success, a PEAR_Error object otherwise
- * @see productN()
- */
- function product() {/*{{{*/
- if (!array_key_exists('product', $this->_calculatedValues)) {
- $product = $this->productN(1);
- if (PEAR::isError($product)) {
- return $product;
- } else {
- $this->_calculatedValues['product'] = $product;
- }
- }
- return $this->_calculatedValues['product'];
- }/*}}}*/
-
- /**
- * Calculates PROD { (xi)^n }, which is the product of all observations
- * Handles cummulative data sets correctly
- *
- * @access public
- * @param numeric $n the exponent
- * @return mixed the product on success, a PEAR_Error object otherwise
- * @see product()
- */
- function productN($n) {/*{{{*/
- if ($this->_data == null) {
- return PEAR::raiseError('data has not been set');
- }
- $prodN = 1.0;
- if ($this->_dataOption == STATS_DATA_CUMMULATIVE) {
- foreach($this->_data as $val=>$freq) {
- if ($val == 0) {
- return 0.0;
- }
- $prodN *= $freq * pow((double)$val, (double)$n);
- }
- } else {
- foreach($this->_data as $val) {
- if ($val == 0) {
- return 0.0;
- }
- $prodN *= pow((double)$val, (double)$n);
- }
- }
- return $prodN;
-
- }/*}}}*/
-
- /**
- * Calculates the number of data points in the set
- * Handles cummulative data sets correctly
- *
- * @access public
- * @return mixed the count on success, a PEAR_Error object otherwise
- * @see calc()
- */
- function count() {/*{{{*/
- if ($this->_data == null) {
- return PEAR::raiseError('data has not been set');
- }
- if (!array_key_exists('count', $this->_calculatedValues)) {
- if ($this->_dataOption == STATS_DATA_CUMMULATIVE) {
- $count = count($this->_dataExpanded);
- } else {
- $count = count($this->_data);
- }
- $this->_calculatedValues['count'] = $count;
- }
- return $this->_calculatedValues['count'];
- }/*}}}*/
-
- /**
- * Calculates the mean (average) of the data points in the set
- * Handles cummulative data sets correctly
- *
- * @access public
- * @return mixed the mean value on success, a PEAR_Error object otherwise
- * @see calc()
- * @see sum()
- * @see count()
- */
- function mean() {/*{{{*/
- if (!array_key_exists('mean', $this->_calculatedValues)) {
- $sum = $this->sum();
- if (PEAR::isError($sum)) {
- return $sum;
- }
- $count = $this->count();
- if (PEAR::isError($count)) {
- return $count;
- }
- $this->_calculatedValues['mean'] = $sum / $count;
- }
- return $this->_calculatedValues['mean'];
- }/*}}}*/
-
- /**
- * Calculates the range of the data set = max - min
- *
- * @access public
- * @return mixed the value of the range on success, a PEAR_Error object otherwise.
- */
- function range() {/*{{{*/
- if (!array_key_exists('range', $this->_calculatedValues)) {
- $min = $this->min();
- if (PEAR::isError($min)) {
- return $min;
- }
- $max = $this->max();
- if (PEAR::isError($max)) {
- return $max;
- }
- $this->_calculatedValues['range'] = $max - $min;
- }
- return $this->_calculatedValues['range'];
-
- }/*}}}*/
-
- /**
- * Calculates the variance (unbiased) of the data points in the set
- * Handles cummulative data sets correctly
- *
- * @access public
- * @return mixed the variance value on success, a PEAR_Error object otherwise
- * @see calc()
- * @see __sumdiff()
- * @see count()
- */
- function variance() {/*{{{*/
- if (!array_key_exists('variance', $this->_calculatedValues)) {
- $variance = $this->__calcVariance();
- if (PEAR::isError($variance)) {
- return $variance;
- }
- $this->_calculatedValues['variance'] = $variance;
- }
- return $this->_calculatedValues['variance'];
- }/*}}}*/
-
- /**
- * Calculates the standard deviation (unbiased) of the data points in the set
- * Handles cummulative data sets correctly
- *
- * @access public
- * @return mixed the standard deviation on success, a PEAR_Error object otherwise
- * @see calc()
- * @see variance()
- */
- function stDev() {/*{{{*/
- if (!array_key_exists('stDev', $this->_calculatedValues)) {
- $variance = $this->variance();
- if (PEAR::isError($variance)) {
- return $variance;
- }
- $this->_calculatedValues['stDev'] = sqrt($variance);
- }
- return $this->_calculatedValues['stDev'];
- }/*}}}*/
-
- /**
- * Calculates the variance (unbiased) of the data points in the set
- * given a fixed mean (average) value. Not used in calcBasic(), calcFull()
- * or calc().
- * Handles cummulative data sets correctly
- *
- * @access public
- * @param numeric $mean the fixed mean value
- * @return mixed the variance on success, a PEAR_Error object otherwise
- * @see __sumdiff()
- * @see count()
- * @see variance()
- */
- function varianceWithMean($mean) {/*{{{*/
- return $this->__calcVariance($mean);
- }/*}}}*/
-
- /**
- * Calculates the standard deviation (unbiased) of the data points in the set
- * given a fixed mean (average) value. Not used in calcBasic(), calcFull()
- * or calc().
- * Handles cummulative data sets correctly
- *
- * @access public
- * @param numeric $mean the fixed mean value
- * @return mixed the standard deviation on success, a PEAR_Error object otherwise
- * @see varianceWithMean()
- * @see stDev()
- */
- function stDevWithMean($mean) {/*{{{*/
- $varianceWM = $this->varianceWithMean($mean);
- if (PEAR::isError($varianceWM)) {
- return $varianceWM;
- }
- return sqrt($varianceWM);
- }/*}}}*/
-
- /**
- * Calculates the absolute deviation of the data points in the set
- * Handles cummulative data sets correctly
- *
- * @access public
- * @return mixed the absolute deviation on success, a PEAR_Error object otherwise
- * @see calc()
- * @see __sumabsdev()
- * @see count()
- * @see absDevWithMean()
- */
- function absDev() {/*{{{*/
- if (!array_key_exists('absDev', $this->_calculatedValues)) {
- $absDev = $this->__calcAbsoluteDeviation();
- if (PEAR::isError($absdev)) {
- return $absdev;
- }
- $this->_calculatedValues['absDev'] = $absDev;
- }
- return $this->_calculatedValues['absDev'];
- }/*}}}*/
-
- /**
- * Calculates the absolute deviation of the data points in the set
- * given a fixed mean (average) value. Not used in calcBasic(), calcFull()
- * or calc().
- * Handles cummulative data sets correctly
- *
- * @access public
- * @param numeric $mean the fixed mean value
- * @return mixed the absolute deviation on success, a PEAR_Error object otherwise
- * @see __sumabsdev()
- * @see absDev()
- */
- function absDevWithMean($mean) {/*{{{*/
- return $this->__calcAbsoluteDeviation($mean);
- }/*}}}*/
-
- /**
- * Calculates the skewness of the data distribution in the set
- * The skewness measures the degree of asymmetry of a distribution,
- * and is related to the third central moment of a distribution.
- * A normal distribution has a skewness = 0
- * A distribution with a tail off towards the high end of the scale
- * (positive skew) has a skewness > 0
- * A distribution with a tail off towards the low end of the scale
- * (negative skew) has a skewness < 0
- * Handles cummulative data sets correctly
- *
- * @access public
- * @return mixed the skewness value on success, a PEAR_Error object otherwise
- * @see __sumdiff()
- * @see count()
- * @see stDev()
- * @see calc()
- */
- function skewness() {/*{{{*/
- if (!array_key_exists('skewness', $this->_calculatedValues)) {
- $count = $this->count();
- if (PEAR::isError($count)) {
- return $count;
- }
- $stDev = $this->stDev();
- if (PEAR::isError($stDev)) {
- return $stDev;
- }
- $sumdiff3 = $this->__sumdiff(3);
- if (PEAR::isError($sumdiff3)) {
- return $sumdiff3;
- }
- $this->_calculatedValues['skewness'] = ($sumdiff3 / ($count * pow($stDev, 3)));
- }
- return $this->_calculatedValues['skewness'];
- }/*}}}*/
-
- /**
- * Calculates the kurtosis of the data distribution in the set
- * The kurtosis measures the degrees of peakedness of a distribution.
- * It is also called the "excess" or "excess coefficient", and is
- * a normalized form of the fourth central moment of a distribution.
- * A normal distributions has kurtosis = 0
- * A narrow and peaked (leptokurtic) distribution has a
- * kurtosis > 0
- * A flat and wide (platykurtic) distribution has a kurtosis < 0
- * Handles cummulative data sets correctly
- *
- * @access public
- * @return mixed the kurtosis value on success, a PEAR_Error object otherwise
- * @see __sumdiff()
- * @see count()
- * @see stDev()
- * @see calc()
- */
- function kurtosis() {/*{{{*/
- if (!array_key_exists('kurtosis', $this->_calculatedValues)) {
- $count = $this->count();
- if (PEAR::isError($count)) {
- return $count;
- }
- $stDev = $this->stDev();
- if (PEAR::isError($stDev)) {
- return $stDev;
- }
- $sumdiff4 = $this->__sumdiff(4);
- if (PEAR::isError($sumdiff4)) {
- return $sumdiff4;
- }
- $this->_calculatedValues['kurtosis'] = ($sumdiff4 / ($count * pow($stDev, 4))) - 3;
- }
- return $this->_calculatedValues['kurtosis'];
- }/*}}}*/
-
- /**
- * Calculates the median of a data set.
- * The median is the value such that half of the points are below it
- * in a sorted data set.
- * If the number of values is odd, it is the middle item.
- * If the number of values is even, is the average of the two middle items.
- * Handles cummulative data sets correctly
- *
- * @access public
- * @return mixed the median value on success, a PEAR_Error object otherwise
- * @see count()
- * @see calc()
- */
- function median() {/*{{{*/
- if ($this->_data == null) {
- return PEAR::raiseError('data has not been set');
- }
- if (!array_key_exists('median', $this->_calculatedValues)) {
- if ($this->_dataOption == STATS_DATA_CUMMULATIVE) {
- $arr =& $this->_dataExpanded;
- } else {
- $arr =& $this->_data;
- }
- $n = $this->count();
- if (PEAR::isError($n)) {
- return $n;
- }
- $h = intval($n / 2);
- if ($n % 2 == 0) {
- $median = ($arr[$h] + $arr[$h - 1]) / 2;
- } else {
- $median = $arr[$h + 1];
- }
- $this->_calculatedValues['median'] = $median;
- }
- return $this->_calculatedValues['median'];
- }/*}}}*/
-
- /**
- * Calculates the mode of a data set.
- * The mode is the value with the highest frequency in the data set.
- * There can be more than one mode.
- * Handles cummulative data sets correctly
- *
- * @access public
- * @return mixed an array of mode value on success, a PEAR_Error object otherwise
- * @see frequency()
- * @see calc()
- */
- function mode() {/*{{{*/
- if ($this->_data == null) {
- return PEAR::raiseError('data has not been set');
- }
- if (!array_key_exists('mode', $this->_calculatedValues)) {
- if ($this->_dataOption == STATS_DATA_CUMMULATIVE) {
- $arr = $this->_data;
- } else {
- $arr = $this->frequency();
- }
- arsort($arr);
- $mcount = 1;
- foreach ($arr as $val=>$freq) {
- if ($mcount == 1) {
- $mode = array($val);
- $mfreq = $freq;
- ++$mcount;
- continue;
- }
- if ($mfreq == $freq)
- $mode[] = $val;
- if ($mfreq > $freq)
- break;
- }
- $this->_calculatedValues['mode'] = $mode;
- }
- return $this->_calculatedValues['mode'];
- }/*}}}*/
-
- /**
- * Calculates the midrange of a data set.
- * The midrange is the average of the minimum and maximum of the data set.
- * Handles cummulative data sets correctly
- *
- * @access public
- * @return mixed the midrange value on success, a PEAR_Error object otherwise
- * @see min()
- * @see max()
- * @see calc()
- */
- function midrange() {/*{{{*/
- if (!array_key_exists('midrange', $this->_calculatedValues)) {
- $min = $this->min();
- if (PEAR::isError($min)) {
- return $min;
- }
- $max = $this->max();
- if (PEAR::isError($max)) {
- return $max;
- }
- $this->_calculatedValues['midrange'] = (($max + $min) / 2);
- }
- return $this->_calculatedValues['midrange'];
- }/*}}}*/
-
- /**
- * Calculates the geometrical mean of the data points in the set
- * Handles cummulative data sets correctly
- *
- * @access public
- * @return mixed the geometrical mean value on success, a PEAR_Error object otherwise
- * @see calc()
- * @see product()
- * @see count()
- */
- function geometricMean() {/*{{{*/
- if (!array_key_exists('geometricMean', $this->_calculatedValues)) {
- $count = $this->count();
- if (PEAR::isError($count)) {
- return $count;
- }
- $prod = $this->product();
- if (PEAR::isError($prod)) {
- return $prod;
- }
- if ($prod == 0.0) {
- return 0.0;
- }
- if ($prod < 0) {
- return PEAR::raiseError('The product of the data set is negative, geometric mean undefined.');
- }
- $this->_calculatedValues['geometricMean'] = pow($prod , 1 / $count);
- }
- return $this->_calculatedValues['geometricMean'];
- }/*}}}*/
-
- /**
- * Calculates the harmonic mean of the data points in the set
- * Handles cummulative data sets correctly
- *
- * @access public
- * @return mixed the harmonic mean value on success, a PEAR_Error object otherwise
- * @see calc()
- * @see count()
- */
- function harmonicMean() {/*{{{*/
- if ($this->_data == null) {
- return PEAR::raiseError('data has not been set');
- }
- if (!array_key_exists('harmonicMean', $this->_calculatedValues)) {
- $count = $this->count();
- if (PEAR::isError($count)) {
- return $count;
- }
- $invsum = 0.0;
- if ($this->_dataOption == STATS_DATA_CUMMULATIVE) {
- foreach($this->_data as $val=>$freq) {
- if ($val == 0) {
- return PEAR::raiseError('cannot calculate a '.
- 'harmonic mean with data values of zero.');
- }
- $invsum += $freq / $val;
- }
- } else {
- foreach($this->_data as $val) {
- if ($val == 0) {
- return PEAR::raiseError('cannot calculate a '.
- 'harmonic mean with data values of zero.');
- }
- $invsum += 1 / $val;
- }
- }
- $this->_calculatedValues['harmonicMean'] = $count / $invsum;
- }
- return $this->_calculatedValues['harmonicMean'];
- }/*}}}*/
-
- /**
- * Calculates the nth central moment (m{n}) of a data set.
- *
- * The definition of a sample central moment is:
- *
- * m{n} = 1/N * SUM { (xi - avg)^n }
- *
- * where: N = sample size, avg = sample mean.
- *
- * @access public
- * @param integer $n moment to calculate
- * @return mixed the numeric value of the moment on success, PEAR_Error otherwise
- */
- function sampleCentralMoment($n) {/*{{{*/
- if (!is_int($n) || $n < 1) {
- return PEAR::isError('moment must be a positive integer >= 1.');
- }
-
- if ($n == 1) {
- return 0;
- }
- $count = $this->count();
- if (PEAR::isError($count)) {
- return $count;
- }
- if ($count == 0) {
- return PEAR::raiseError("Cannot calculate {$n}th sample moment, ".
- 'there are zero data entries');
- }
- $sum = $this->__sumdiff($n);
- if (PEAR::isError($sum)) {
- return $sum;
- }
- return ($sum / $count);
- }/*}}}*/
-
- /**
- * Calculates the nth raw moment (m{n}) of a data set.
- *
- * The definition of a sample central moment is:
- *
- * m{n} = 1/N * SUM { xi^n }
- *
- * where: N = sample size, avg = sample mean.
- *
- * @access public
- * @param integer $n moment to calculate
- * @return mixed the numeric value of the moment on success, PEAR_Error otherwise
- */
- function sampleRawMoment($n) {/*{{{*/
- if (!is_int($n) || $n < 1) {
- return PEAR::isError('moment must be a positive integer >= 1.');
- }
-
- $count = $this->count();
- if (PEAR::isError($count)) {
- return $count;
- }
- if ($count == 0) {
- return PEAR::raiseError("Cannot calculate {$n}th raw moment, ".
- 'there are zero data entries.');
- }
- $sum = $this->sumN($n);
- if (PEAR::isError($sum)) {
- return $sum;
- }
- return ($sum / $count);
- }/*}}}*/
-
-
- /**
- * Calculates the coefficient of variation of a data set.
- * The coefficient of variation measures the spread of a set of data
- * as a proportion of its mean. It is often expressed as a percentage.
- * Handles cummulative data sets correctly
- *
- * @access public
- * @return mixed the coefficient of variation on success, a PEAR_Error object otherwise
- * @see stDev()
- * @see mean()
- * @see calc()
- */
- function coeffOfVariation() {/*{{{*/
- if (!array_key_exists('coeffOfVariation', $this->_calculatedValues)) {
- $mean = $this->mean();
- if (PEAR::isError($mean)) {
- return $mean;
- }
- if ($mean == 0.0) {
- return PEAR::raiseError('cannot calculate the coefficient '.
- 'of variation, mean of sample is zero');
- }
- $stDev = $this->stDev();
- if (PEAR::isError($stDev)) {
- return $stDev;
- }
-
- $this->_calculatedValues['coeffOfVariation'] = $stDev / $mean;
- }
- return $this->_calculatedValues['coeffOfVariation'];
- }/*}}}*/
-
- /**
- * Calculates the standard error of the mean.
- * It is the standard deviation of the sampling distribution of
- * the mean. The formula is:
- *
- * S.E. Mean = SD / (N)^(1/2)
- *
- * This formula does not assume a normal distribution, and shows
- * that the size of the standard error of the mean is inversely
- * proportional to the square root of the sample size.
- *
- * @access public
- * @return mixed the standard error of the mean on success, a PEAR_Error object otherwise
- * @see stDev()
- * @see count()
- * @see calc()
- */
- function stdErrorOfMean() {/*{{{*/
- if (!array_key_exists('stdErrorOfMean', $this->_calculatedValues)) {
- $count = $this->count();
- if (PEAR::isError($count)) {
- return $count;
- }
- $stDev = $this->stDev();
- if (PEAR::isError($stDev)) {
- return $stDev;
- }
- $this->_calculatedValues['stdErrorOfMean'] = $stDev / sqrt($count);
- }
- return $this->_calculatedValues['stdErrorOfMean'];
- }/*}}}*/
-
- /**
- * Calculates the value frequency table of a data set.
- * Handles cummulative data sets correctly
- *
- * @access public
- * @return mixed an associative array of value=>frequency items on success, a PEAR_Error object otherwise
- * @see min()
- * @see max()
- * @see calc()
- */
- function frequency() {/*{{{*/
- if ($this->_data == null) {
- return PEAR::raiseError('data has not been set');
- }
- if (!array_key_exists('frequency', $this->_calculatedValues)) {
- if ($this->_dataOption == STATS_DATA_CUMMULATIVE) {
- $freq = $this->_data;
- } else {
- $freq = array();
- foreach ($this->_data as $val) {
- $freq["$val"]++;
- }
- ksort($freq);
- }
- $this->_calculatedValues['frequency'] = $freq;
- }
- return $this->_calculatedValues['frequency'];
- }/*}}}*/
-
- /**
- * The quartiles are defined as the values that divide a sorted
- * data set into four equal-sized subsets, and correspond to the
- * 25th, 50th, and 75th percentiles.
- *
- * @access public
- * @return mixed an associative array of quartiles on success, a PEAR_Error otherwise
- * @see percentile()
- */
- function quartiles() {/*{{{*/
- if (!array_key_exists('quartiles', $this->_calculatedValues)) {
- $q1 = $this->percentile(25);
- if (PEAR::isError($q1)) {
- return $q1;
- }
- $q2 = $this->percentile(50);
- if (PEAR::isError($q2)) {
- return $q2;
- }
- $q3 = $this->percentile(75);
- if (PEAR::isError($q3)) {
- return $q3;
- }
- $this->_calculatedValues['quartiles'] = array (
- '25' => $q1,
- '50' => $q2,
- '75' => $q3
- );
- }
- return $this->_calculatedValues['quartiles'];
- }/*}}}*/
-
- /**
- * The interquartile mean is defined as the mean of the values left
- * after discarding the lower 25% and top 25% ranked values, i.e.:
- *
- * interquart mean = mean(<P(25),P(75)>)
- *
- * where: P = percentile
- *
- * @todo need to double check the equation
- * @access public
- * @return mixed a numeric value on success, a PEAR_Error otherwise
- * @see quartiles()
- */
- function interquartileMean() {/*{{{*/
- if (!array_key_exists('interquartileMean', $this->_calculatedValues)) {
- $quart = $this->quartiles();
- if (PEAR::isError($quart)) {
- return $quart;
- }
- $q3 = $quart['75'];
- $q1 = $quart['25'];
- $sum = 0;
- $n = 0;
- foreach ($this->getData(true) as $val) {
- if ($val >= $q1 && $val <= $q3) {
- $sum += $val;
- ++$n;
- }
- }
- if ($n == 0) {
- return PEAR::raiseError('error calculating interquartile mean, '.
- 'empty interquartile range of values.');
- }
- $this->_calculatedValues['interquartileMean'] = $sum / $n;
- }
- return $this->_calculatedValues['interquartileMean'];
- }/*}}}*/
-
- /**
- * The interquartile range is the distance between the 75th and 25th
- * percentiles. Basically the range of the middle 50% of the data set,
- * and thus is not affected by outliers or extreme values.
- *
- * interquart range = P(75) - P(25)
- *
- * where: P = percentile
- *
- * @access public
- * @return mixed a numeric value on success, a PEAR_Error otherwise
- * @see quartiles()
- */
- function interquartileRange() {/*{{{*/
- if (!array_key_exists('interquartileRange', $this->_calculatedValues)) {
- $quart = $this->quartiles();
- if (PEAR::isError($quart)) {
- return $quart;
- }
- $q3 = $quart['75'];
- $q1 = $quart['25'];
- $this->_calculatedValues['interquartileRange'] = $q3 - $q1;
- }
- return $this->_calculatedValues['interquartileRange'];
- }/*}}}*/
-
- /**
- * The quartile deviation is half of the interquartile range value
- *
- * quart dev = (P(75) - P(25)) / 2
- *
- * where: P = percentile
- *
- * @access public
- * @return mixed a numeric value on success, a PEAR_Error otherwise
- * @see quartiles()
- * @see interquartileRange()
- */
- function quartileDeviation() {/*{{{*/
- if (!array_key_exists('quartileDeviation', $this->_calculatedValues)) {
- $iqr = $this->interquartileRange();
- if (PEAR::isError($iqr)) {
- return $iqr;
- }
- $this->_calculatedValues['quartileDeviation'] = $iqr / 2;
- }
- return $this->_calculatedValues['quartileDeviation'];
- }/*}}}*/
-
- /**
- * The quartile variation coefficient is defines as follows:
- *
- * quart var coeff = 100 * (P(75) - P(25)) / (P(75) + P(25))
- *
- * where: P = percentile
- *
- * @todo need to double check the equation
- * @access public
- * @return mixed a numeric value on success, a PEAR_Error otherwise
- * @see quartiles()
- */
- function quartileVariationCoefficient() {/*{{{*/
- if (!array_key_exists('quartileVariationCoefficient', $this->_calculatedValues)) {
- $quart = $this->quartiles();
- if (PEAR::isError($quart)) {
- return $quart;
- }
- $q3 = $quart['75'];
- $q1 = $quart['25'];
- $d = $q3 - $q1;
- $s = $q3 + $q1;
- $this->_calculatedValues['quartileVariationCoefficient'] = 100 * $d / $s;
- }
- return $this->_calculatedValues['quartileVariationCoefficient'];
- }/*}}}*/
-
- /**
- * The quartile skewness coefficient (also known as Bowley Skewness),
- * is defined as follows:
- *
- * quart skewness coeff = (P(25) - 2*P(50) + P(75)) / (P(75) - P(25))
- *
- * where: P = percentile
- *
- * @todo need to double check the equation
- * @access public
- * @return mixed a numeric value on success, a PEAR_Error otherwise
- * @see quartiles()
- */
- function quartileSkewnessCoefficient() {/*{{{*/
- if (!array_key_exists('quartileSkewnessCoefficient', $this->_calculatedValues)) {
- $quart = $this->quartiles();
- if (PEAR::isError($quart)) {
- return $quart;
- }
- $q3 = $quart['75'];
- $q2 = $quart['50'];
- $q1 = $quart['25'];
- $d = $q3 - 2*$q2 + $q1;
- $s = $q3 - $q1;
- $this->_calculatedValues['quartileSkewnessCoefficient'] = $d / $s;
- }
- return $this->_calculatedValues['quartileSkewnessCoefficient'];
- }/*}}}*/
-
- /**
- * The pth percentile is the value such that p% of the a sorted data set
- * is smaller than it, and (100 - p)% of the data is larger.
- *
- * A quick algorithm to pick the appropriate value from a sorted data
- * set is as follows:
- *
- * - Count the number of values: n
- * - Calculate the position of the value in the data list: i = p * (n + 1)
- * - if i is an integer, return the data at that position
- * - if i < 1, return the minimum of the data set
- * - if i > n, return the maximum of the data set
- * - otherwise, average the entries at adjacent positions to i
- *
- * The median is the 50th percentile value.
- *
- * @todo need to double check generality of the algorithm
- *
- * @access public
- * @param numeric $p the percentile to estimate, e.g. 25 for 25th percentile
- * @return mixed a numeric value on success, a PEAR_Error otherwise
- * @see quartiles()
- * @see median()
- */
- function percentile($p) {/*{{{*/
- $count = $this->count();
- if (PEAR::isError($count)) {
- return $count;
- }
- if ($this->_dataOption == STATS_DATA_CUMMULATIVE) {
- $data =& $this->_dataExpanded;
- } else {
- $data =& $this->_data;
- }
- $obsidx = $p * ($count + 1) / 100;
- if (intval($obsidx) == $obsidx) {
- return $data[($obsidx - 1)];
- } elseif ($obsidx < 1) {
- return $data[0];
- } elseif ($obsidx > $count) {
- return $data[($count - 1)];
- } else {
- $left = floor($obsidx - 1);
- $right = ceil($obsidx - 1);
- return ($data[$left] + $data[$right]) / 2;
- }
- }/*}}}*/
-
- // private methods
-
- /**
- * Utility function to calculate: SUM { (xi - mean)^n }
- *
- * @access private
- * @param numeric $power the exponent
- * @param optional double $mean the data set mean value
- * @return mixed the sum on success, a PEAR_Error object otherwise
- *
- * @see stDev()
- * @see variaceWithMean();
- * @see skewness();
- * @see kurtosis();
- */
- function __sumdiff($power, $mean=null) {/*{{{*/
- if ($this->_data == null) {
- return PEAR::raiseError('data has not been set');
- }
- if (is_null($mean)) {
- $mean = $this->mean();
- if (PEAR::isError($mean)) {
- return $mean;
- }
- }
- $sdiff = 0;
- if ($this->_dataOption == STATS_DATA_CUMMULATIVE) {
- foreach ($this->_data as $val=>$freq) {
- $sdiff += $freq * pow((double)($val - $mean), (double)$power);
- }
- } else {
- foreach ($this->_data as $val)
- $sdiff += pow((double)($val - $mean), (double)$power);
- }
- return $sdiff;
- }/*}}}*/
-
- /**
- * Utility function to calculate the variance with or without
- * a fixed mean
- *
- * @access private
- * @param $mean the fixed mean to use, null as default
- * @return mixed a numeric value on success, a PEAR_Error otherwise
- * @see variance()
- * @see varianceWithMean()
- */
- function __calcVariance($mean = null) {/*{{{*/
- if ($this->_data == null) {
- return PEAR::raiseError('data has not been set');
- }
- $sumdiff2 = $this->__sumdiff(2, $mean);
- if (PEAR::isError($sumdiff2)) {
- return $sumdiff2;
- }
- $count = $this->count();
- if (PEAR::isError($count)) {
- return $count;
- }
- if ($count == 1) {
- return PEAR::raiseError('cannot calculate variance of a singe data point');
- }
- return ($sumdiff2 / ($count - 1));
- }/*}}}*/
-
- /**
- * Utility function to calculate the absolute deviation with or without
- * a fixed mean
- *
- * @access private
- * @param $mean the fixed mean to use, null as default
- * @return mixed a numeric value on success, a PEAR_Error otherwise
- * @see absDev()
- * @see absDevWithMean()
- */
- function __calcAbsoluteDeviation($mean = null) {/*{{{*/
- if ($this->_data == null) {
- return PEAR::raiseError('data has not been set');
- }
- $count = $this->count();
- if (PEAR::isError($count)) {
- return $count;
- }
- $sumabsdev = $this->__sumabsdev($mean);
- if (PEAR::isError($sumabsdev)) {
- return $sumabsdev;
- }
- return $sumabsdev / $count;
- }/*}}}*/
-
- /**
- * Utility function to calculate: SUM { | xi - mean | }
- *
- * @access private
- * @param optional double $mean the mean value for the set or population
- * @return mixed the sum on success, a PEAR_Error object otherwise
- *
- * @see absDev()
- * @see absDevWithMean()
- */
- function __sumabsdev($mean=null) {/*{{{*/
- if ($this->_data == null) {
- return PEAR::raiseError('data has not been set');
- }
- if (is_null($mean)) {
- $mean = $this->mean();
- }
- $sdev = 0;
- if ($this->_dataOption == STATS_DATA_CUMMULATIVE) {
- foreach ($this->_data as $val=>$freq) {
- $sdev += $freq * abs($val - $mean);
- }
- } else {
- foreach ($this->_data as $val) {
- $sdev += abs($val - $mean);
- }
- }
- return $sdev;
- }/*}}}*/
-
- /**
- * Utility function to format a PEAR_Error to be used by calc(),
- * calcBasic() and calcFull()
- *
- * @access private
- * @param mixed $v value to be formatted
- * @param boolean $returnErrorObject whether the raw PEAR_Error (when true, default),
- * or only the error message will be returned (when false)
- * @return mixed if the value is a PEAR_Error object, and $useErrorObject
- * is false, then a string with the error message will be returned,
- * otherwise the value will not be modified and returned as passed.
- */
- function __format($v, $useErrorObject=true) {/*{{{*/
- if (PEAR::isError($v) && $useErrorObject == false) {
- return $v->getMessage();
- } else {
- return $v;
- }
- }/*}}}*/
-
- /**
- * Utility function to validate the data and modify it
- * according to the current null handling option
- *
- * @access private
- * @return mixed true on success, a PEAR_Error object otherwise
- *
- * @see setData()
- */
- function _validate() {/*{{{*/
- $flag = ($this->_dataOption == STATS_DATA_CUMMULATIVE);
- foreach ($this->_data as $key=>$value) {
- $d = ($flag) ? $key : $value;
- $v = ($flag) ? $value : $key;
- if (!is_numeric($d)) {
- switch ($this->_nullOption) {
- case STATS_IGNORE_NULL :
- unset($this->_data["$key"]);
- break;
- case STATS_USE_NULL_AS_ZERO:
- if ($flag) {
- unset($this->_data["$key"]);
- $this->_data[0] += $v;
- } else {
- $this->_data[$key] = 0;
- }
- break;
- case STATS_REJECT_NULL :
- default:
- return PEAR::raiseError('data rejected, contains NULL values');
- break;
- }
- }
- }
- if ($flag) {
- ksort($this->_data);
- $this->_dataExpanded = array();
- foreach ($this->_data as $val=>$freq) {
- $this->_dataExpanded = array_pad($this->_dataExpanded, count($this->_dataExpanded) + $freq, $val);
- }
- sort($this->_dataExpanded);
- } else {
- sort($this->_data);
- }
- return true;
- }/*}}}*/
-
-}/*}}}*/
-
-// vim: ts=4:sw=4:et:
-// vim6: fdl=1: fdm=marker:
-
-?>
diff --git a/admin/survey/excel/PHPExcel/Shared/JAMA/examples/benchmark.php b/admin/survey/excel/PHPExcel/Shared/JAMA/examples/benchmark.php
deleted file mode 100644
index 42a4884..0000000
--- a/admin/survey/excel/PHPExcel/Shared/JAMA/examples/benchmark.php
+++ /dev/null
@@ -1,263 +0,0 @@
-<?php
-
-error_reporting(E_ALL);
-
-/**
- * @package JAMA
- */
-
-require_once '../Matrix.php';
-require_once 'Stats.php';
-
-
-/**
- * Example of use of Matrix Class, featuring magic squares.
- */
-class Benchmark {
- public $stat;
-
-
- /**
- * Simple function to replicate PHP 5 behaviour
- */
- function microtime_float() {
- list($usec, $sec) = explode(" ", microtime());
-
- return ((float)$usec + (float)$sec);
- } // function microtime_float()
-
-
- function displayStats($times = null) {
- $this->stat->setData($times);
- $stats = $this->stat->calcFull();
-
- echo '<table style="margin-left:32px;">';
- echo '<tr><td style="text-align:right;"><b>n:</b><td style="text-align:right;">' . $stats['count'] . ' </td></tr>';
- echo '<tr><td style="text-align:right;"><b>Mean:</b><td style="text-align:right;">' . $stats['mean'] . ' </td></tr>';
- echo '<tr><td style="text-align:right;"><b>Min.:</b><td style="text-align:right;">' . $stats['min'] . ' </td></tr>';
- echo '<tr><td style="text-align:right;"><b>Max.:</b><td style="text-align:right;">' . $stats['max'] . ' </td></tr>';
- echo '<tr><td style="text-align:right;"><b>&sigma;:</b><td style="text-align:right;">' . $stats['stdev'] . ' </td></tr>';
- echo '<tr><td style="text-align:right;"><b>Variance:</b><td style="text-align:right;">' . $stats['variance'] . ' </td></tr>';
- echo '<tr><td style="text-align:right;"><b>Range:</b><td style="text-align:right;">' . $stats['range'] . ' </td></tr>';
- echo '</table>';
-
- return $stats;
- } // function displayStats()
-
-
- function runEig($n = 4, $t = 100) {
- $times = array();
-
- for ($i = 0; $i < $t; ++$i) {
- $M = Matrix::random($n, $n);
- $start_time = $this->microtime_float();
- $E = new EigenvalueDecomposition($M);
- $stop_time = $this->microtime_float();
- $times[] = $stop_time - $start_time;
- }
-
- return $times;
- } // function runEig()
-
-
- function runLU($n = 4, $t = 100) {
- $times = array();
-
- for ($i = 0; $i < $t; ++$i) {
- $M = Matrix::random($n, $n);
- $start_time = $this->microtime_float();
- $E = new LUDecomposition($M);
- $stop_time = $this->microtime_float();
- $times[] = $stop_time - $start_time;
- }
-
- return $times;
- } // function runLU()
-
-
- function runQR($n = 4, $t = 100) {
- $times = array();
-
- for ($i = 0; $i < $t; ++$i) {
- $M = Matrix::random($n, $n);
- $start_time = $this->microtime_float();
- $E = new QRDecomposition($M);
- $stop_time = $this->microtime_float();
- $times[] = $stop_time - $start_time;
- }
-
- return $times;
- } // function runQR()
-
-
- function runCholesky($n = 4, $t = 100) {
- $times = array();
-
- for ($i = 0; $i < $t; ++$i) {
- $M = Matrix::random($n, $n);
- $start_time = $this->microtime_float();
- $E = new CholeskyDecomposition($M);
- $stop_time = $this->microtime_float();
- $times[] = $stop_time - $start_time;
- }
-
- return $times;
- } // function runCholesky()
-
-
- function runSVD($n = 4, $t = 100) {
- $times = array();
-
- for ($i = 0; $i < $t; ++$i) {
- $M = Matrix::random($n, $n);
- $start_time = $this->microtime_float();
- $E = new SingularValueDecomposition($M);
- $stop_time = $this->microtime_float();
- $times[] = $stop_time - $start_time;
- }
-
- return $times;
- } // function runSVD()
-
-
- function run() {
- $n = 8;
- $t = 16;
- $sum = 0;
- echo "<b>Cholesky decomposition: $t random {$n}x{$n} matrices</b><br />";
- $r = $this->displayStats($this->runCholesky($n, $t));
- $sum += $r['mean'] * $n;
-
- echo '<hr />';
-
- echo "<b>Eigenvalue decomposition: $t random {$n}x{$n} matrices</b><br />";
- $r = $this->displayStats($this->runEig($n, $t));
- $sum += $r['mean'] * $n;
-
- echo '<hr />';
-
- echo "<b>LU decomposition: $t random {$n}x{$n} matrices</b><br />";
- $r = $this->displayStats($this->runLU($n, $t));
- $sum += $r['mean'] * $n;
-
- echo '<hr />';
-
- echo "<b>QR decomposition: $t random {$n}x{$n} matrices</b><br />";
- $r = $this->displayStats($this->runQR($n, $t));
- $sum += $r['mean'] * $n;
-
- echo '<hr />';
-
- echo "<b>Singular Value decomposition: $t random {$n}x{$n} matrices</b><br />";
- $r = $this->displayStats($this->runSVD($n, $t));
- $sum += $r['mean'] * $n;
-
- return $sum;
- } // function run()
-
-
- public function __construct() {
- $this->stat = new Base();
- } // function Benchmark()
-
-} // class Benchmark (end MagicSquareExample)
-
-
-$benchmark = new Benchmark();
-
-switch($_REQUEST['decomposition']) {
- case 'cholesky':
- $m = array();
- for ($i = 2; $i <= 8; $i *= 2) {
- $t = 32 / $i;
- echo "<b>Cholesky decomposition: $t random {$i}x{$i} matrices</b><br />";
- $s = $benchmark->displayStats($benchmark->runCholesky($i, $t));
- $m[$i] = $s['mean'];
- echo "<br />";
- }
- echo '<pre>';
- foreach($m as $x => $y) {
- echo "$x\t" . 1000*$y . "\n";
- }
- echo '</pre>';
- break;
- case 'eigenvalue':
- $m = array();
- for ($i = 2; $i <= 8; $i *= 2) {
- $t = 32 / $i;
- echo "<b>Eigenvalue decomposition: $t random {$i}x{$i} matrices</b><br />";
- $s = $benchmark->displayStats($benchmark->runEig($i, $t));
- $m[$i] = $s['mean'];
- echo "<br />";
- }
- echo '<pre>';
- foreach($m as $x => $y) {
- echo "$x\t" . 1000*$y . "\n";
- }
- echo '</pre>';
- break;
- case 'lu':
- $m = array();
- for ($i = 2; $i <= 8; $i *= 2) {
- $t = 32 / $i;
- echo "<b>LU decomposition: $t random {$i}x{$i} matrices</b><br />";
- $s = $benchmark->displayStats($benchmark->runLU($i, $t));
- $m[$i] = $s['mean'];
- echo "<br />";
- }
- echo '<pre>';
- foreach($m as $x => $y) {
- echo "$x\t" . 1000*$y . "\n";
- }
- echo '</pre>';
- break;
- case 'qr':
- $m = array();
- for ($i = 2; $i <= 8; $i *= 2) {
- $t = 32 / $i;
- echo "<b>QR decomposition: $t random {$i}x{$i} matrices</b><br />";
- $s = $benchmark->displayStats($benchmark->runQR($i, $t));
- $m[$i] = $s['mean'];
- echo "<br />";
- }
- echo '<pre>';
- foreach($m as $x => $y) {
- echo "$x\t" . 1000*$y . "\n";
- }
- echo '</pre>';
- break;
- case 'svd':
- $m = array();
- for($i = 2; $i <= 8; $i *= 2) {
- $t = 32 / $i;
- echo "<b>Singular value decomposition: $t random {$i}x{$i} matrices</b><br />";
- $s = $benchmark->displayStats($benchmark->runSVD($i, $t));
- $m[$i] = $s['mean'];
- echo "<br />";
- }
- echo '<pre>';
- foreach($m as $x => $y) {
- echo "$x\t" . 1000*$y . "\n";
- }
- echo '</pre>';
- break;
- case 'all':
- $s = $benchmark->run();
- print("<br /><b>Total<b>: {$s}s<br />");
- break;
- default:
- ?>
- <ul>
- <li><a href="benchmark.php?decomposition=all">Complete Benchmark</a>
- <ul>
- <li><a href="benchmark.php?decomposition=cholesky">Cholesky</a></li>
- <li><a href="benchmark.php?decomposition=eigenvalue">Eigenvalue</a></li>
- <li><a href="benchmark.php?decomposition=lu">LU</a></li>
- <li><a href="benchmark.php?decomposition=qr">QR</a></li>
- <li><a href="benchmark.php?decomposition=svd">Singular Value</a></li>
- </ul>
- </li>
- </ul>
- <?php
- break;
-}
diff --git a/admin/survey/excel/PHPExcel/Shared/JAMA/examples/polyfit.php b/admin/survey/excel/PHPExcel/Shared/JAMA/examples/polyfit.php
deleted file mode 100644
index fffc864..0000000
--- a/admin/survey/excel/PHPExcel/Shared/JAMA/examples/polyfit.php
+++ /dev/null
@@ -1,73 +0,0 @@
-<?php
-require_once "../Matrix.php";
-/*
-* @package JAMA
-* @author Michael Bommarito
-* @author Paul Meagher
-* @version 0.1
-*
-* Function to fit an order n polynomial function through
-* a series of x-y data points using least squares.
-*
-* @param $X array x values
-* @param $Y array y values
-* @param $n int order of polynomial to be used for fitting
-* @returns array $coeffs of polynomial coefficients
-* Pre-Conditions: the system is not underdetermined: sizeof($X) > $n+1
-*/
-function polyfit($X, $Y, $n) {
- for ($i = 0; $i < sizeof($X); ++$i)
- for ($j = 0; $j <= $n; ++$j)
- $A[$i][$j] = pow($X[$i], $j);
- for ($i=0; $i < sizeof($Y); ++$i)
- $B[$i] = array($Y[$i]);
- $matrixA = new Matrix($A);
- $matrixB = new Matrix($B);
- $C = $matrixA->solve($matrixB);
- return $C->getMatrix(0, $n, 0, 1);
-}
-
-function printpoly( $C = null ) {
- for($i = $C->m - 1; $i >= 0; --$i) {
- $r = $C->get($i, 0);
- if ( abs($r) <= pow(10, -9) )
- $r = 0;
- if ($i == $C->m - 1)
- echo $r . "x<sup>$i</sup>";
- else if ($i < $C->m - 1)
- echo " + " . $r . "x<sup>$i</sup>";
- else if ($i == 0)
- echo " + " . $r;
- }
-}
-
-$X = array(0,1,2,3,4,5);
-$Y = array(4,3,12,67,228, 579);
-$points = new Matrix(array($X, $Y));
-$points->toHTML();
-printpoly(polyfit($X, $Y, 4));
-
-echo '<hr />';
-
-$X = array(0,1,2,3,4,5);
-$Y = array(1,2,5,10,17, 26);
-$points = new Matrix(array($X, $Y));
-$points->toHTML();
-printpoly(polyfit($X, $Y, 2));
-
-echo '<hr />';
-
-$X = array(0,1,2,3,4,5,6);
-$Y = array(-90,-104,-178,-252,-26, 1160, 4446);
-$points = new Matrix(array($X, $Y));
-$points->toHTML();
-printpoly(polyfit($X, $Y, 5));
-
-echo '<hr />';
-
-$X = array(0,1,2,3,4);
-$Y = array(mt_rand(0, 10), mt_rand(40, 80), mt_rand(240, 400), mt_rand(1800, 2215), mt_rand(8000, 9000));
-$points = new Matrix(array($X, $Y));
-$points->toHTML();
-printpoly(polyfit($X, $Y, 3));
-?>
diff --git a/admin/survey/excel/PHPExcel/Shared/JAMA/examples/tile.php b/admin/survey/excel/PHPExcel/Shared/JAMA/examples/tile.php
deleted file mode 100644
index b5c48e1..0000000
--- a/admin/survey/excel/PHPExcel/Shared/JAMA/examples/tile.php
+++ /dev/null
@@ -1,78 +0,0 @@
-<?php
-
-include "../Matrix.php";
-
-/**
-* Tiling of matrix X in [rowWise by colWise] dimension. Tiling
-* creates a larger matrix than the original data X. Example, if
-* X is to be tiled in a [3 x 4] manner, then:
-*
-* / \
-* | X X X X |
-* C = | X X X X |
-* | X X X X |
-* \ /
-*
-* @param X Matrix
-* @param rowWise int
-* @param colWise int
-* @return Matrix
-*/
-
-function tile(&$X, $rowWise, $colWise){
-
- $xArray = $X->getArray();
- print_r($xArray);
-
- $countRow = 0;
- $countColumn = 0;
-
- $m = $X->getRowDimension();
- $n = $X->getColumnDimension();
-
- if( $rowWise<1 || $colWise<1 ){
- die("tile : Array index is out-of-bound.");
- }
-
- $newRowDim = $m*$rowWise;
- $newColDim = $n*$colWise;
-
- $result = array();
-
- for($i=0 ; $i<$newRowDim; ++$i) {
-
- $holder = array();
-
- for($j=0 ; $j<$newColDim ; ++$j) {
-
- $holder[$j] = $xArray[$countRow][$countColumn++];
-
- // reset the column-index to zero to avoid reference to out-of-bound index in xArray[][]
-
- if($countColumn == $n) { $countColumn = 0; }
-
- } // end for
-
- ++$countRow;
-
- // reset the row-index to zero to avoid reference to out-of-bound index in xArray[][]
-
- if($countRow == $m) { $countRow = 0; }
-
- $result[$i] = $holder;
-
- } // end for
-
- return new Matrix($result);
-
-}
-
-
-$X =array(1,2,3,4,5,6,7,8,9);
-$nRow = 3;
-$nCol = 3;
-$tiled_matrix = tile(new Matrix($X), $nRow, $nCol);
-echo "<pre>";
-print_r($tiled_matrix);
-echo "</pre>";
-?>
diff --git a/admin/survey/excel/PHPExcel/Shared/JAMA/tests/TestMatrix.php b/admin/survey/excel/PHPExcel/Shared/JAMA/tests/TestMatrix.php
deleted file mode 100644
index cf8128b..0000000
--- a/admin/survey/excel/PHPExcel/Shared/JAMA/tests/TestMatrix.php
+++ /dev/null
@@ -1,415 +0,0 @@
-<?php
-
-require_once "../Matrix.php";
-
-class TestMatrix {
-
- function TestMatrix() {
-
- // define test variables
-
- $errorCount = 0;
- $warningCount = 0;
- $columnwise = array(1.,2.,3.,4.,5.,6.,7.,8.,9.,10.,11.,12.);
- $rowwise = array(1.,4.,7.,10.,2.,5.,8.,11.,3.,6.,9.,12.);
- $avals = array(array(1.,4.,7.,10.),array(2.,5.,8.,11.),array(3.,6.,9.,12.));
- $rankdef = $avals;
- $tvals = array(array(1.,2.,3.),array(4.,5.,6.),array(7.,8.,9.),array(10.,11.,12.));
- $subavals = array(array(5.,8.,11.),array(6.,9.,12.));
- $rvals = array(array(1.,4.,7.),array(2.,5.,8.,11.),array(3.,6.,9.,12.));
- $pvals = array(array(1.,1.,1.),array(1.,2.,3.),array(1.,3.,6.));
- $ivals = array(array(1.,0.,0.,0.),array(0.,1.,0.,0.),array(0.,0.,1.,0.));
- $evals = array(array(0.,1.,0.,0.),array(1.,0.,2.e-7,0.),array(0.,-2.e-7,0.,1.),array(0.,0.,1.,0.));
- $square = array(array(166.,188.,210.),array(188.,214.,240.),array(210.,240.,270.));
- $sqSolution = array(array(13.),array(15.));
- $condmat = array(array(1.,3.),array(7.,9.));
- $rows = 3;
- $cols = 4;
- $invalidID = 5; /* should trigger bad shape for construction with val */
- $raggedr = 0; /* (raggedr,raggedc) should be out of bounds in ragged array */
- $raggedc = 4;
- $validID = 3; /* leading dimension of intended test Matrices */
- $nonconformld = 4; /* leading dimension which is valid, but nonconforming */
- $ib = 1; /* index ranges for sub Matrix */
- $ie = 2;
- $jb = 1;
- $je = 3;
- $rowindexset = array(1,2);
- $badrowindexset = array(1,3);
- $columnindexset = array(1,2,3);
- $badcolumnindexset = array(1,2,4);
- $columnsummax = 33.;
- $rowsummax = 30.;
- $sumofdiagonals = 15;
- $sumofsquares = 650;
-
- /**
- * Test matrix methods
- */
-
- /**
- * Constructors and constructor-like methods:
- *
- * Matrix(double[], int)
- * Matrix(double[][])
- * Matrix(int, int)
- * Matrix(int, int, double)
- * Matrix(int, int, double[][])
- * constructWithCopy(double[][])
- * random(int,int)
- * identity(int)
- */
- echo "<p>Testing constructors and constructor-like methods...</p>";
-
- $A = new Matrix($columnwise, 3);
- if($A instanceof Matrix) {
- $this->try_success("Column-packed constructor...");
- } else
- $errorCount = $this->try_failure($errorCount, "Column-packed constructor...", "Unable to construct Matrix");
-
- $T = new Matrix($tvals);
- if($T instanceof Matrix)
- $this->try_success("2D array constructor...");
- else
- $errorCount = $this->try_failure($errorCount, "2D array constructor...", "Unable to construct Matrix");
-
- $A = new Matrix($columnwise, $validID);
- $B = new Matrix($avals);
- $tmp = $B->get(0,0);
- $avals[0][0] = 0.0;
- $C = $B->minus($A);
- $avals[0][0] = $tmp;
- $B = Matrix::constructWithCopy($avals);
- $tmp = $B->get(0,0);
- $avals[0][0] = 0.0;
- /** check that constructWithCopy behaves properly **/
- if ( ( $tmp - $B->get(0,0) ) != 0.0 )
- $errorCount = $this->try_failure($errorCount,"constructWithCopy... ","copy not effected... data visible outside");
- else
- $this->try_success("constructWithCopy... ","");
-
- $I = new Matrix($ivals);
- if ( $this->checkMatrices($I,Matrix::identity(3,4)) )
- $this->try_success("identity... ","");
- else
- $errorCount = $this->try_failure($errorCount,"identity... ","identity Matrix not successfully created");
-
- /**
- * Access Methods:
- *
- * getColumnDimension()
- * getRowDimension()
- * getArray()
- * getArrayCopy()
- * getColumnPackedCopy()
- * getRowPackedCopy()
- * get(int,int)
- * getMatrix(int,int,int,int)
- * getMatrix(int,int,int[])
- * getMatrix(int[],int,int)
- * getMatrix(int[],int[])
- * set(int,int,double)
- * setMatrix(int,int,int,int,Matrix)
- * setMatrix(int,int,int[],Matrix)
- * setMatrix(int[],int,int,Matrix)
- * setMatrix(int[],int[],Matrix)
- */
- print "<p>Testing access methods...</p>";
-
- $B = new Matrix($avals);
- if($B->getRowDimension() == $rows)
- $this->try_success("getRowDimension...");
- else
- $errorCount = $this->try_failure($errorCount, "getRowDimension...");
-
- if($B->getColumnDimension() == $cols)
- $this->try_success("getColumnDimension...");
- else
- $errorCount = $this->try_failure($errorCount, "getColumnDimension...");
-
- $barray = $B->getArray();
- if($this->checkArrays($barray, $avals))
- $this->try_success("getArray...");
- else
- $errorCount = $this->try_failure($errorCount, "getArray...");
-
- $bpacked = $B->getColumnPackedCopy();
- if($this->checkArrays($bpacked, $columnwise))
- $this->try_success("getColumnPackedCopy...");
- else
- $errorCount = $this->try_failure($errorCount, "getColumnPackedCopy...");
-
- $bpacked = $B->getRowPackedCopy();
- if($this->checkArrays($bpacked, $rowwise))
- $this->try_success("getRowPackedCopy...");
- else
- $errorCount = $this->try_failure($errorCount, "getRowPackedCopy...");
-
- /**
- * Array-like methods:
- * minus
- * minusEquals
- * plus
- * plusEquals
- * arrayLeftDivide
- * arrayLeftDivideEquals
- * arrayRightDivide
- * arrayRightDivideEquals
- * arrayTimes
- * arrayTimesEquals
- * uminus
- */
- print "<p>Testing array-like methods...</p>";
-
- /**
- * I/O methods:
- * read
- * print
- * serializable:
- * writeObject
- * readObject
- */
- print "<p>Testing I/O methods...</p>";
-
- /**
- * Test linear algebra methods
- */
- echo "<p>Testing linear algebra methods...<p>";
-
- $A = new Matrix($columnwise, 3);
- if( $this->checkMatrices($A->transpose(), $T) )
- $this->try_success("Transpose check...");
- else
- $errorCount = $this->try_failure($errorCount, "Transpose check...", "Matrices are not equal");
-
- if($this->checkScalars($A->norm1(), $columnsummax))
- $this->try_success("Maximum column sum...");
- else
- $errorCount = $this->try_failure($errorCount, "Maximum column sum...", "Incorrect: " . $A->norm1() . " != " . $columnsummax);
-
- if($this->checkScalars($A->normInf(), $rowsummax))
- $this->try_success("Maximum row sum...");
- else
- $errorCount = $this->try_failure($errorCount, "Maximum row sum...", "Incorrect: " . $A->normInf() . " != " . $rowsummax );
-
- if($this->checkScalars($A->normF(), sqrt($sumofsquares)))
- $this->try_success("Frobenius norm...");
- else
- $errorCount = $this->try_failure($errorCount, "Frobenius norm...", "Incorrect:" . $A->normF() . " != " . sqrt($sumofsquares));
-
- if($this->checkScalars($A->trace(), $sumofdiagonals))
- $this->try_success("Matrix trace...");
- else
- $errorCount = $this->try_failure($errorCount, "Matrix trace...", "Incorrect: " . $A->trace() . " != " . $sumofdiagonals);
-
- $B = $A->getMatrix(0, $A->getRowDimension(), 0, $A->getRowDimension());
- if( $B->det() == 0 )
- $this->try_success("Matrix determinant...");
- else
- $errorCount = $this->try_failure($errorCount, "Matrix determinant...", "Incorrect: " . $B->det() . " != " . 0);
-
- $A = new Matrix($columnwise,3);
- $SQ = new Matrix($square);
- if ($this->checkMatrices($SQ, $A->times($A->transpose())))
- $this->try_success("times(Matrix)...");
- else {
- $errorCount = $this->try_failure($errorCount, "times(Matrix)...", "Unable to multiply matrices");
- $SQ->toHTML();
- $AT->toHTML();
- }
-
- $A = new Matrix($columnwise, 4);
-
- $QR = $A->qr();
- $R = $QR->getR();
- $Q = $QR->getQ();
- if($this->checkMatrices($A, $Q->times($R)))
- $this->try_success("QRDecomposition...","");
- else
- $errorCount = $this->try_failure($errorCount,"QRDecomposition...","incorrect qr decomposition calculation");
-
- $A = new Matrix($columnwise, 4);
- $SVD = $A->svd();
- $U = $SVD->getU();
- $S = $SVD->getS();
- $V = $SVD->getV();
- if ($this->checkMatrices($A, $U->times($S->times($V->transpose()))))
- $this->try_success("SingularValueDecomposition...","");
- else
- $errorCount = $this->try_failure($errorCount,"SingularValueDecomposition...","incorrect singular value decomposition calculation");
-
- $n = $A->getColumnDimension();
- $A = $A->getMatrix(0,$n-1,0,$n-1);
- $A->set(0,0,0.);
-
- $LU = $A->lu();
- $L = $LU->getL();
- if ( $this->checkMatrices($A->getMatrix($LU->getPivot(),0,$n-1), $L->times($LU->getU())) )
- $this->try_success("LUDecomposition...","");
- else
- $errorCount = $this->try_failure($errorCount,"LUDecomposition...","incorrect LU decomposition calculation");
-
- $X = $A->inverse();
- if ( $this->checkMatrices($A->times($X),Matrix::identity(3,3)) )
- $this->try_success("inverse()...","");
- else
- $errorCount = $this->try_failure($errorCount, "inverse()...","incorrect inverse calculation");
-
- $DEF = new Matrix($rankdef);
- if($this->checkScalars($DEF->rank(), min($DEF->getRowDimension(), $DEF->getColumnDimension())-1))
- $this->try_success("Rank...");
- else
- $this->try_failure("Rank...", "incorrect rank calculation");
-
- $B = new Matrix($condmat);
- $SVD = $B->svd();
- $singularvalues = $SVD->getSingularValues();
- if($this->checkScalars($B->cond(), $singularvalues[0]/$singularvalues[min($B->getRowDimension(), $B->getColumnDimension())-1]))
- $this->try_success("Condition number...");
- else
- $this->try_failure("Condition number...", "incorrect condition number calculation");
-
- $SUB = new Matrix($subavals);
- $O = new Matrix($SUB->getRowDimension(),1,1.0);
- $SOL = new Matrix($sqSolution);
- $SQ = $SUB->getMatrix(0,$SUB->getRowDimension()-1,0,$SUB->getRowDimension()-1);
- if ( $this->checkMatrices($SQ->solve($SOL),$O) )
- $this->try_success("solve()...","");
- else
- $errorCount = $this->try_failure($errorCount,"solve()...","incorrect lu solve calculation");
-
- $A = new Matrix($pvals);
- $Chol = $A->chol();
- $L = $Chol->getL();
- if ( $this->checkMatrices($A, $L->times($L->transpose())) )
- $this->try_success("CholeskyDecomposition...","");
- else
- $errorCount = $this->try_failure($errorCount,"CholeskyDecomposition...","incorrect Cholesky decomposition calculation");
-
- $X = $Chol->solve(Matrix::identity(3,3));
- if ( $this->checkMatrices($A->times($X), Matrix::identity(3,3)) )
- $this->try_success("CholeskyDecomposition solve()...","");
- else
- $errorCount = $this->try_failure($errorCount,"CholeskyDecomposition solve()...","incorrect Choleskydecomposition solve calculation");
-
- $Eig = $A->eig();
- $D = $Eig->getD();
- $V = $Eig->getV();
- if( $this->checkMatrices($A->times($V),$V->times($D)) )
- $this->try_success("EigenvalueDecomposition (symmetric)...","");
- else
- $errorCount = $this->try_failure($errorCount,"EigenvalueDecomposition (symmetric)...","incorrect symmetric Eigenvalue decomposition calculation");
-
- $A = new Matrix($evals);
- $Eig = $A->eig();
- $D = $Eig->getD();
- $V = $Eig->getV();
- if ( $this->checkMatrices($A->times($V),$V->times($D)) )
- $this->try_success("EigenvalueDecomposition (nonsymmetric)...","");
- else
- $errorCount = $this->try_failure($errorCount,"EigenvalueDecomposition (nonsymmetric)...","incorrect nonsymmetric Eigenvalue decomposition calculation");
-
- print("<b>{$errorCount} total errors</b>.");
- }
-
- /**
- * Print appropriate messages for successful outcome try
- * @param string $s
- * @param string $e
- */
- function try_success($s, $e = "") {
- print "> ". $s ."success<br />";
- if ($e != "")
- print "> Message: ". $e ."<br />";
- }
-
- /**
- * Print appropriate messages for unsuccessful outcome try
- * @param int $count
- * @param string $s
- * @param string $e
- * @return int incremented counter
- */
- function try_failure($count, $s, $e="") {
- print "> ". $s ."*** failure ***<br />> Message: ". $e ."<br />";
- return ++$count;
- }
-
- /**
- * Print appropriate messages for unsuccessful outcome try
- * @param int $count
- * @param string $s
- * @param string $e
- * @return int incremented counter
- */
- function try_warning($count, $s, $e="") {
- print "> ". $s ."*** warning ***<br />> Message: ". $e ."<br />";
- return ++$count;
- }
-
- /**
- * Check magnitude of difference of "scalars".
- * @param float $x
- * @param float $y
- */
- function checkScalars($x, $y) {
- $eps = pow(2.0,-52.0);
- if ($x == 0 & abs($y) < 10*$eps) return;
- if ($y == 0 & abs($x) < 10*$eps) return;
- if (abs($x-$y) > 10 * $eps * max(abs($x),abs($y)))
- return false;
- else
- return true;
- }
-
- /**
- * Check norm of difference of "vectors".
- * @param float $x[]
- * @param float $y[]
- */
- function checkVectors($x, $y) {
- $nx = count($x);
- $ny = count($y);
- if ($nx == $ny)
- for($i=0; $i < $nx; ++$i)
- $this->checkScalars($x[$i],$y[$i]);
- else
- die("Attempt to compare vectors of different lengths");
- }
-
- /**
- * Check norm of difference of "arrays".
- * @param float $x[][]
- * @param float $y[][]
- */
- function checkArrays($x, $y) {
- $A = new Matrix($x);
- $B = new Matrix($y);
- return $this->checkMatrices($A,$B);
- }
-
- /**
- * Check norm of difference of "matrices".
- * @param matrix $X
- * @param matrix $Y
- */
- function checkMatrices($X = null, $Y = null) {
- if( $X == null || $Y == null )
- return false;
-
- $eps = pow(2.0,-52.0);
- if ($X->norm1() == 0. & $Y->norm1() < 10*$eps) return true;
- if ($Y->norm1() == 0. & $X->norm1() < 10*$eps) return true;
-
- $A = $X->minus($Y);
-
- if ($A->norm1() > 1000 * $eps * max($X->norm1(),$Y->norm1()))
- die("The norm of (X-Y) is too large: ".$A->norm1());
- else
- return true;
- }
-
-}
-
-$test = new TestMatrix;
-?>
diff --git a/admin/survey/excel/PHPExcel/Shared/JAMA/utils/Error.php b/admin/survey/excel/PHPExcel/Shared/JAMA/utils/Error.php
deleted file mode 100644
index c895aa9..0000000
--- a/admin/survey/excel/PHPExcel/Shared/JAMA/utils/Error.php
+++ /dev/null
@@ -1,82 +0,0 @@
-<?php
-/**
- * @package JAMA
- *
- * Error handling
- * @author Michael Bommarito
- * @version 01292005
- */
-
-//Language constant
-define('JAMALANG', 'EN');
-
-
-//All errors may be defined by the following format:
-//define('ExceptionName', N);
-//$error['lang'][ExceptionName] = 'Error message';
-$error = array();
-
-/*
-I've used Babelfish and a little poor knowledge of Romance/Germanic languages for the translations here.
-Feel free to correct anything that looks amiss to you.
-*/
-
-define('PolymorphicArgumentException', -1);
-$error['EN'][PolymorphicArgumentException] = "Invalid argument pattern for polymorphic function.";
-$error['FR'][PolymorphicArgumentException] = "Modèle inadmissible d'argument pour la fonction polymorphe.".
-$error['DE'][PolymorphicArgumentException] = "Unzulässiges Argumentmuster für polymorphe Funktion.";
-
-define('ArgumentTypeException', -2);
-$error['EN'][ArgumentTypeException] = "Invalid argument type.";
-$error['FR'][ArgumentTypeException] = "Type inadmissible d'argument.";
-$error['DE'][ArgumentTypeException] = "Unzulässige Argumentart.";
-
-define('ArgumentBoundsException', -3);
-$error['EN'][ArgumentBoundsException] = "Invalid argument range.";
-$error['FR'][ArgumentBoundsException] = "Gamme inadmissible d'argument.";
-$error['DE'][ArgumentBoundsException] = "Unzulässige Argumentstrecke.";
-
-define('MatrixDimensionException', -4);
-$error['EN'][MatrixDimensionException] = "Matrix dimensions are not equal.";
-$error['FR'][MatrixDimensionException] = "Les dimensions de Matrix ne sont pas égales.";
-$error['DE'][MatrixDimensionException] = "Matrixmaße sind nicht gleich.";
-
-define('PrecisionLossException', -5);
-$error['EN'][PrecisionLossException] = "Significant precision loss detected.";
-$error['FR'][PrecisionLossException] = "Perte significative de précision détectée.";
-$error['DE'][PrecisionLossException] = "Bedeutender Präzision Verlust ermittelte.";
-
-define('MatrixSPDException', -6);
-$error['EN'][MatrixSPDException] = "Can only perform operation on symmetric positive definite matrix.";
-$error['FR'][MatrixSPDException] = "Perte significative de précision détectée.";
-$error['DE'][MatrixSPDException] = "Bedeutender Präzision Verlust ermittelte.";
-
-define('MatrixSingularException', -7);
-$error['EN'][MatrixSingularException] = "Can only perform operation on singular matrix.";
-
-define('MatrixRankException', -8);
-$error['EN'][MatrixRankException] = "Can only perform operation on full-rank matrix.";
-
-define('ArrayLengthException', -9);
-$error['EN'][ArrayLengthException] = "Array length must be a multiple of m.";
-
-define('RowLengthException', -10);
-$error['EN'][RowLengthException] = "All rows must have the same length.";
-
-/**
- * Custom error handler
- * @param int $num Error number
- */
-function JAMAError($errorNumber = null) {
- global $error;
-
- if (isset($errorNumber)) {
- if (isset($error[JAMALANG][$errorNumber])) {
- return $error[JAMALANG][$errorNumber];
- } else {
- return $error['EN'][$errorNumber];
- }
- } else {
- return ("Invalid argument to JAMAError()");
- }
-}
diff --git a/admin/survey/excel/PHPExcel/Shared/JAMA/utils/Maths.php b/admin/survey/excel/PHPExcel/Shared/JAMA/utils/Maths.php
deleted file mode 100644
index 5488e00..0000000
--- a/admin/survey/excel/PHPExcel/Shared/JAMA/utils/Maths.php
+++ /dev/null
@@ -1,43 +0,0 @@
-<?php
-/**
- * @package JAMA
- *
- * Pythagorean Theorem:
- *
- * a = 3
- * b = 4
- * r = sqrt(square(a) + square(b))
- * r = 5
- *
- * r = sqrt(a^2 + b^2) without under/overflow.
- */
-function hypo($a, $b) {
- if (abs($a) > abs($b)) {
- $r = $b / $a;
- $r = abs($a) * sqrt(1 + $r * $r);
- } elseif ($b != 0) {
- $r = $a / $b;
- $r = abs($b) * sqrt(1 + $r * $r);
- } else {
- $r = 0.0;
- }
- return $r;
-} // function hypo()
-
-
-/**
- * Mike Bommarito's version.
- * Compute n-dimensional hyotheneuse.
- *
-function hypot() {
- $s = 0;
- foreach (func_get_args() as $d) {
- if (is_numeric($d)) {
- $s += pow($d, 2);
- } else {
- throw new Exception(JAMAError(ArgumentTypeException));
- }
- }
- return sqrt($s);
-}
-*/
diff --git a/admin/survey/excel/PHPExcel/Shared/OLE.php b/admin/survey/excel/PHPExcel/Shared/OLE.php
deleted file mode 100644
index 0f6222b..0000000
--- a/admin/survey/excel/PHPExcel/Shared/OLE.php
+++ /dev/null
@@ -1,531 +0,0 @@
-<?php
-/* vim: set expandtab tabstop=4 shiftwidth=4: */
-// +----------------------------------------------------------------------+
-// | PHP Version 4 |
-// +----------------------------------------------------------------------+
-// | Copyright (c) 1997-2002 The PHP Group |
-// +----------------------------------------------------------------------+
-// | This source file is subject to version 2.02 of the PHP license, |
-// | that is bundled with this package in the file LICENSE, and is |
-// | available at through the world-wide-web at |
-// | http://www.php.net/license/2_02.txt. |
-// | If you did not receive a copy of the PHP license and are unable to |
-// | obtain it through the world-wide-web, please send a note to |
-// | license@php.net so we can mail you a copy immediately. |
-// +----------------------------------------------------------------------+
-// | Author: Xavier Noguer <xnoguer@php.net> |
-// | Based on OLE::Storage_Lite by Kawai, Takanori |
-// +----------------------------------------------------------------------+
-//
-// $Id: OLE.php,v 1.13 2007/03/07 14:38:25 schmidt Exp $
-
-
-/**
-* Array for storing OLE instances that are accessed from
-* OLE_ChainedBlockStream::stream_open().
-* @var array
-*/
-$GLOBALS['_OLE_INSTANCES'] = array();
-
-/**
-* OLE package base class.
-*
-* @author Xavier Noguer <xnoguer@php.net>
-* @author Christian Schmidt <schmidt@php.net>
-* @category PHPExcel
-* @package PHPExcel_Shared_OLE
-*/
-class PHPExcel_Shared_OLE
-{
- const OLE_PPS_TYPE_ROOT = 5;
- const OLE_PPS_TYPE_DIR = 1;
- const OLE_PPS_TYPE_FILE = 2;
- const OLE_DATA_SIZE_SMALL = 0x1000;
- const OLE_LONG_INT_SIZE = 4;
- const OLE_PPS_SIZE = 0x80;
-
- /**
- * The file handle for reading an OLE container
- * @var resource
- */
- public $_file_handle;
-
- /**
- * Array of PPS's found on the OLE container
- * @var array
- */
- public $_list = array();
-
- /**
- * Root directory of OLE container
- * @var OLE_PPS_Root
- */
- public $root;
-
- /**
- * Big Block Allocation Table
- * @var array (blockId => nextBlockId)
- */
- public $bbat;
-
- /**
- * Short Block Allocation Table
- * @var array (blockId => nextBlockId)
- */
- public $sbat;
-
- /**
- * Size of big blocks. This is usually 512.
- * @var int number of octets per block.
- */
- public $bigBlockSize;
-
- /**
- * Size of small blocks. This is usually 64.
- * @var int number of octets per block
- */
- public $smallBlockSize;
-
- /**
- * Reads an OLE container from the contents of the file given.
- *
- * @acces public
- * @param string $file
- * @return mixed true on success, PEAR_Error on failure
- */
- public function read($file)
- {
- $fh = fopen($file, "r");
- if (!$fh) {
- throw new Exception("Can't open file $file");
- }
- $this->_file_handle = $fh;
-
- $signature = fread($fh, 8);
- if ("\xD0\xCF\x11\xE0\xA1\xB1\x1A\xE1" != $signature) {
- throw new Exception("File doesn't seem to be an OLE container.");
- }
- fseek($fh, 28);
- if (fread($fh, 2) != "\xFE\xFF") {
- // This shouldn't be a problem in practice
- throw new Exception("Only Little-Endian encoding is supported.");
- }
- // Size of blocks and short blocks in bytes
- $this->bigBlockSize = pow(2, self::_readInt2($fh));
- $this->smallBlockSize = pow(2, self::_readInt2($fh));
-
- // Skip UID, revision number and version number
- fseek($fh, 44);
- // Number of blocks in Big Block Allocation Table
- $bbatBlockCount = self::_readInt4($fh);
-
- // Root chain 1st block
- $directoryFirstBlockId = self::_readInt4($fh);
-
- // Skip unused bytes
- fseek($fh, 56);
- // Streams shorter than this are stored using small blocks
- $this->bigBlockThreshold = self::_readInt4($fh);
- // Block id of first sector in Short Block Allocation Table
- $sbatFirstBlockId = self::_readInt4($fh);
- // Number of blocks in Short Block Allocation Table
- $sbbatBlockCount = self::_readInt4($fh);
- // Block id of first sector in Master Block Allocation Table
- $mbatFirstBlockId = self::_readInt4($fh);
- // Number of blocks in Master Block Allocation Table
- $mbbatBlockCount = self::_readInt4($fh);
- $this->bbat = array();
-
- // Remaining 4 * 109 bytes of current block is beginning of Master
- // Block Allocation Table
- $mbatBlocks = array();
- for ($i = 0; $i < 109; ++$i) {
- $mbatBlocks[] = self::_readInt4($fh);
- }
-
- // Read rest of Master Block Allocation Table (if any is left)
- $pos = $this->_getBlockOffset($mbatFirstBlockId);
- for ($i = 0; $i < $mbbatBlockCount; ++$i) {
- fseek($fh, $pos);
- for ($j = 0; $j < $this->bigBlockSize / 4 - 1; ++$j) {
- $mbatBlocks[] = self::_readInt4($fh);
- }
- // Last block id in each block points to next block
- $pos = $this->_getBlockOffset(self::_readInt4($fh));
- }
-
- // Read Big Block Allocation Table according to chain specified by
- // $mbatBlocks
- for ($i = 0; $i < $bbatBlockCount; ++$i) {
- $pos = $this->_getBlockOffset($mbatBlocks[$i]);
- fseek($fh, $pos);
- for ($j = 0 ; $j < $this->bigBlockSize / 4; ++$j) {
- $this->bbat[] = self::_readInt4($fh);
- }
- }
-
- // Read short block allocation table (SBAT)
- $this->sbat = array();
- $shortBlockCount = $sbbatBlockCount * $this->bigBlockSize / 4;
- $sbatFh = $this->getStream($sbatFirstBlockId);
- for ($blockId = 0; $blockId < $shortBlockCount; ++$blockId) {
- $this->sbat[$blockId] = self::_readInt4($sbatFh);
- }
- fclose($sbatFh);
-
- $this->_readPpsWks($directoryFirstBlockId);
-
- return true;
- }
-
- /**
- * @param int block id
- * @param int byte offset from beginning of file
- * @access public
- */
- public function _getBlockOffset($blockId)
- {
- return 512 + $blockId * $this->bigBlockSize;
- }
-
- /**
- * Returns a stream for use with fread() etc. External callers should
- * use PHPExcel_Shared_OLE_PPS_File::getStream().
- * @param int|PPS block id or PPS
- * @return resource read-only stream
- */
- public function getStream($blockIdOrPps)
- {
- static $isRegistered = false;
- if (!$isRegistered) {
- stream_wrapper_register('ole-chainedblockstream',
- 'PHPExcel_Shared_OLE_ChainedBlockStream');
- $isRegistered = true;
- }
-
- // Store current instance in global array, so that it can be accessed
- // in OLE_ChainedBlockStream::stream_open().
- // Object is removed from self::$instances in OLE_Stream::close().
- $GLOBALS['_OLE_INSTANCES'][] = $this;
- $instanceId = end(array_keys($GLOBALS['_OLE_INSTANCES']));
-
- $path = 'ole-chainedblockstream://oleInstanceId=' . $instanceId;
- if ($blockIdOrPps instanceof PHPExcel_Shared_OLE_PPS) {
- $path .= '&blockId=' . $blockIdOrPps->_StartBlock;
- $path .= '&size=' . $blockIdOrPps->Size;
- } else {
- $path .= '&blockId=' . $blockIdOrPps;
- }
- return fopen($path, 'r');
- }
-
- /**
- * Reads a signed char.
- * @param resource file handle
- * @return int
- * @access public
- */
- private static function _readInt1($fh)
- {
- list(, $tmp) = unpack("c", fread($fh, 1));
- return $tmp;
- }
-
- /**
- * Reads an unsigned short (2 octets).
- * @param resource file handle
- * @return int
- * @access public
- */
- private static function _readInt2($fh)
- {
- list(, $tmp) = unpack("v", fread($fh, 2));
- return $tmp;
- }
-
- /**
- * Reads an unsigned long (4 octets).
- * @param resource file handle
- * @return int
- * @access public
- */
- private static function _readInt4($fh)
- {
- list(, $tmp) = unpack("V", fread($fh, 4));
- return $tmp;
- }
-
- /**
- * Gets information about all PPS's on the OLE container from the PPS WK's
- * creates an OLE_PPS object for each one.
- *
- * @access public
- * @param integer the block id of the first block
- * @return mixed true on success, PEAR_Error on failure
- */
- public function _readPpsWks($blockId)
- {
- $fh = $this->getStream($blockId);
- for ($pos = 0; ; $pos += 128) {
- fseek($fh, $pos, SEEK_SET);
- $nameUtf16 = fread($fh, 64);
- $nameLength = self::_readInt2($fh);
- $nameUtf16 = substr($nameUtf16, 0, $nameLength - 2);
- // Simple conversion from UTF-16LE to ISO-8859-1
- $name = str_replace("\x00", "", $nameUtf16);
- $type = self::_readInt1($fh);
- switch ($type) {
- case self::OLE_PPS_TYPE_ROOT:
- $pps = new PHPExcel_Shared_OLE_PPS_Root(null, null, array());
- $this->root = $pps;
- break;
- case self::OLE_PPS_TYPE_DIR:
- $pps = new PHPExcel_Shared_OLE_PPS(null, null, null, null, null,
- null, null, null, null, array());
- break;
- case self::OLE_PPS_TYPE_FILE:
- $pps = new PHPExcel_Shared_OLE_PPS_File($name);
- break;
- default:
- continue;
- }
- fseek($fh, 1, SEEK_CUR);
- $pps->Type = $type;
- $pps->Name = $name;
- $pps->PrevPps = self::_readInt4($fh);
- $pps->NextPps = self::_readInt4($fh);
- $pps->DirPps = self::_readInt4($fh);
- fseek($fh, 20, SEEK_CUR);
- $pps->Time1st = self::OLE2LocalDate(fread($fh, 8));
- $pps->Time2nd = self::OLE2LocalDate(fread($fh, 8));
- $pps->_StartBlock = self::_readInt4($fh);
- $pps->Size = self::_readInt4($fh);
- $pps->No = count($this->_list);
- $this->_list[] = $pps;
-
- // check if the PPS tree (starting from root) is complete
- if (isset($this->root) &&
- $this->_ppsTreeComplete($this->root->No)) {
-
- break;
- }
- }
- fclose($fh);
-
- // Initialize $pps->children on directories
- foreach ($this->_list as $pps) {
- if ($pps->Type == self::OLE_PPS_TYPE_DIR || $pps->Type == self::OLE_PPS_TYPE_ROOT) {
- $nos = array($pps->DirPps);
- $pps->children = array();
- while ($nos) {
- $no = array_pop($nos);
- if ($no != -1) {
- $childPps = $this->_list[$no];
- $nos[] = $childPps->PrevPps;
- $nos[] = $childPps->NextPps;
- $pps->children[] = $childPps;
- }
- }
- }
- }
-
- return true;
- }
-
- /**
- * It checks whether the PPS tree is complete (all PPS's read)
- * starting with the given PPS (not necessarily root)
- *
- * @access public
- * @param integer $index The index of the PPS from which we are checking
- * @return boolean Whether the PPS tree for the given PPS is complete
- */
- public function _ppsTreeComplete($index)
- {
- return isset($this->_list[$index]) &&
- ($pps = $this->_list[$index]) &&
- ($pps->PrevPps == -1 ||
- $this->_ppsTreeComplete($pps->PrevPps)) &&
- ($pps->NextPps == -1 ||
- $this->_ppsTreeComplete($pps->NextPps)) &&
- ($pps->DirPps == -1 ||
- $this->_ppsTreeComplete($pps->DirPps));
- }
-
- /**
- * Checks whether a PPS is a File PPS or not.
- * If there is no PPS for the index given, it will return false.
- *
- * @access public
- * @param integer $index The index for the PPS
- * @return bool true if it's a File PPS, false otherwise
- */
- public function isFile($index)
- {
- if (isset($this->_list[$index])) {
- return ($this->_list[$index]->Type == self::OLE_PPS_TYPE_FILE);
- }
- return false;
- }
-
- /**
- * Checks whether a PPS is a Root PPS or not.
- * If there is no PPS for the index given, it will return false.
- *
- * @access public
- * @param integer $index The index for the PPS.
- * @return bool true if it's a Root PPS, false otherwise
- */
- public function isRoot($index)
- {
- if (isset($this->_list[$index])) {
- return ($this->_list[$index]->Type == self::OLE_PPS_TYPE_ROOT);
- }
- return false;
- }
-
- /**
- * Gives the total number of PPS's found in the OLE container.
- *
- * @access public
- * @return integer The total number of PPS's found in the OLE container
- */
- public function ppsTotal()
- {
- return count($this->_list);
- }
-
- /**
- * Gets data from a PPS
- * If there is no PPS for the index given, it will return an empty string.
- *
- * @access public
- * @param integer $index The index for the PPS
- * @param integer $position The position from which to start reading
- * (relative to the PPS)
- * @param integer $length The amount of bytes to read (at most)
- * @return string The binary string containing the data requested
- * @see OLE_PPS_File::getStream()
- */
- public function getData($index, $position, $length)
- {
- // if position is not valid return empty string
- if (!isset($this->_list[$index]) || ($position >= $this->_list[$index]->Size) || ($position < 0)) {
- return '';
- }
- $fh = $this->getStream($this->_list[$index]);
- $data = stream_get_contents($fh, $length, $position);
- fclose($fh);
- return $data;
- }
-
- /**
- * Gets the data length from a PPS
- * If there is no PPS for the index given, it will return 0.
- *
- * @access public
- * @param integer $index The index for the PPS
- * @return integer The amount of bytes in data the PPS has
- */
- public function getDataLength($index)
- {
- if (isset($this->_list[$index])) {
- return $this->_list[$index]->Size;
- }
- return 0;
- }
-
- /**
- * Utility function to transform ASCII text to Unicode
- *
- * @access public
- * @static
- * @param string $ascii The ASCII string to transform
- * @return string The string in Unicode
- */
- public static function Asc2Ucs($ascii)
- {
- $rawname = '';
- for ($i = 0; $i < strlen($ascii); ++$i) {
- $rawname .= $ascii{$i} . "\x00";
- }
- return $rawname;
- }
-
- /**
- * Utility function
- * Returns a string for the OLE container with the date given
- *
- * @access public
- * @static
- * @param integer $date A timestamp
- * @return string The string for the OLE container
- */
- public static function LocalDate2OLE($date = null)
- {
- if (!isset($date)) {
- return "\x00\x00\x00\x00\x00\x00\x00\x00";
- }
-
- // factor used for separating numbers into 4 bytes parts
- $factor = pow(2, 32);
-
- // days from 1-1-1601 until the beggining of UNIX era
- $days = 134774;
- // calculate seconds
- $big_date = $days*24*3600 + gmmktime(date("H",$date),date("i",$date),date("s",$date),
- date("m",$date),date("d",$date),date("Y",$date));
- // multiply just to make MS happy
- $big_date *= 10000000;
-
- $high_part = floor($big_date / $factor);
- // lower 4 bytes
- $low_part = floor((($big_date / $factor) - $high_part) * $factor);
-
- // Make HEX string
- $res = '';
-
- for ($i = 0; $i < 4; ++$i) {
- $hex = $low_part % 0x100;
- $res .= pack('c', $hex);
- $low_part /= 0x100;
- }
- for ($i = 0; $i < 4; ++$i) {
- $hex = $high_part % 0x100;
- $res .= pack('c', $hex);
- $high_part /= 0x100;
- }
- return $res;
- }
-
- /**
- * Returns a timestamp from an OLE container's date
- *
- * @access public
- * @static
- * @param integer $string A binary string with the encoded date
- * @return string The timestamp corresponding to the string
- */
- public static function OLE2LocalDate($string)
- {
- if (strlen($string) != 8) {
- return new PEAR_Error("Expecting 8 byte string");
- }
-
- // factor used for separating numbers into 4 bytes parts
- $factor = pow(2,32);
- list(, $high_part) = unpack('V', substr($string, 4, 4));
- list(, $low_part) = unpack('V', substr($string, 0, 4));
-
- $big_date = ($high_part * $factor) + $low_part;
- // translate to seconds
- $big_date /= 10000000;
-
- // days from 1-1-1601 until the beggining of UNIX era
- $days = 134774;
-
- // translate to seconds from beggining of UNIX era
- $big_date -= $days * 24 * 3600;
- return floor($big_date);
- }
-}
diff --git a/admin/survey/excel/PHPExcel/Shared/OLE/ChainedBlockStream.php b/admin/survey/excel/PHPExcel/Shared/OLE/ChainedBlockStream.php
deleted file mode 100644
index 286e834..0000000
--- a/admin/survey/excel/PHPExcel/Shared/OLE/ChainedBlockStream.php
+++ /dev/null
@@ -1,229 +0,0 @@
-<?php
-/**
- * PHPExcel
- *
- * Copyright (C) 2006 - 2012 PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel_Shared_OLE
- * @copyright Copyright (c) 2006 - 2007 Christian Schmidt
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-/**
- * PHPExcel_Shared_OLE_ChainedBlockStream
- *
- * Stream wrapper for reading data stored in an OLE file. Implements methods
- * for PHP's stream_wrapper_register(). For creating streams using this
- * wrapper, use PHPExcel_Shared_OLE_PPS_File::getStream().
- *
- * @category PHPExcel
- * @package PHPExcel_Shared_OLE
- */
-class PHPExcel_Shared_OLE_ChainedBlockStream
-{
- /**
- * The OLE container of the file that is being read.
- * @var OLE
- */
- public $ole;
-
- /**
- * Parameters specified by fopen().
- * @var array
- */
- public $params;
-
- /**
- * The binary data of the file.
- * @var string
- */
- public $data;
-
- /**
- * The file pointer.
- * @var int byte offset
- */
- public $pos;
-
- /**
- * Implements support for fopen().
- * For creating streams using this wrapper, use OLE_PPS_File::getStream().
- *
- * @param string $path resource name including scheme, e.g.
- * ole-chainedblockstream://oleInstanceId=1
- * @param string $mode only "r" is supported
- * @param int $options mask of STREAM_REPORT_ERRORS and STREAM_USE_PATH
- * @param string &$openedPath absolute path of the opened stream (out parameter)
- * @return bool true on success
- */
- public function stream_open($path, $mode, $options, &$openedPath)
- {
- if ($mode != 'r') {
- if ($options & STREAM_REPORT_ERRORS) {
- trigger_error('Only reading is supported', E_USER_WARNING);
- }
- return false;
- }
-
- // 25 is length of "ole-chainedblockstream://"
- parse_str(substr($path, 25), $this->params);
- if (!isset($this->params['oleInstanceId'],
- $this->params['blockId'],
- $GLOBALS['_OLE_INSTANCES'][$this->params['oleInstanceId']])) {
-
- if ($options & STREAM_REPORT_ERRORS) {
- trigger_error('OLE stream not found', E_USER_WARNING);
- }
- return false;
- }
- $this->ole = $GLOBALS['_OLE_INSTANCES'][$this->params['oleInstanceId']];
-
- $blockId = $this->params['blockId'];
- $this->data = '';
- if (isset($this->params['size']) &&
- $this->params['size'] < $this->ole->bigBlockThreshold &&
- $blockId != $this->ole->root->_StartBlock) {
-
- // Block id refers to small blocks
- $rootPos = $this->ole->_getBlockOffset($this->ole->root->_StartBlock);
- while ($blockId != -2) {
- $pos = $rootPos + $blockId * $this->ole->bigBlockSize;
- $blockId = $this->ole->sbat[$blockId];
- fseek($this->ole->_file_handle, $pos);
- $this->data .= fread($this->ole->_file_handle, $this->ole->bigBlockSize);
- }
- } else {
- // Block id refers to big blocks
- while ($blockId != -2) {
- $pos = $this->ole->_getBlockOffset($blockId);
- fseek($this->ole->_file_handle, $pos);
- $this->data .= fread($this->ole->_file_handle, $this->ole->bigBlockSize);
- $blockId = $this->ole->bbat[$blockId];
- }
- }
- if (isset($this->params['size'])) {
- $this->data = substr($this->data, 0, $this->params['size']);
- }
-
- if ($options & STREAM_USE_PATH) {
- $openedPath = $path;
- }
-
- return true;
- }
-
- /**
- * Implements support for fclose().
- *
- */
- public function stream_close()
- {
- $this->ole = null;
- unset($GLOBALS['_OLE_INSTANCES']);
- }
-
- /**
- * Implements support for fread(), fgets() etc.
- *
- * @param int $count maximum number of bytes to read
- * @return string
- */
- public function stream_read($count)
- {
- if ($this->stream_eof()) {
- return false;
- }
- $s = substr($this->data, $this->pos, $count);
- $this->pos += $count;
- return $s;
- }
-
- /**
- * Implements support for feof().
- *
- * @return bool TRUE if the file pointer is at EOF; otherwise FALSE
- */
- public function stream_eof()
- {
- $eof = $this->pos >= strlen($this->data);
- // Workaround for bug in PHP 5.0.x: http://bugs.php.net/27508
- if (version_compare(PHP_VERSION, '5.0', '>=') &&
- version_compare(PHP_VERSION, '5.1', '<')) {
-
- $eof = !$eof;
- }
- return $eof;
- }
-
- /**
- * Returns the position of the file pointer, i.e. its offset into the file
- * stream. Implements support for ftell().
- *
- * @return int
- */
- public function stream_tell()
- {
- return $this->pos;
- }
-
- /**
- * Implements support for fseek().
- *
- * @param int $offset byte offset
- * @param int $whence SEEK_SET, SEEK_CUR or SEEK_END
- * @return bool
- */
- public function stream_seek($offset, $whence)
- {
- if ($whence == SEEK_SET && $offset >= 0) {
- $this->pos = $offset;
- } elseif ($whence == SEEK_CUR && -$offset <= $this->pos) {
- $this->pos += $offset;
- } elseif ($whence == SEEK_END && -$offset <= sizeof($this->data)) {
- $this->pos = strlen($this->data) + $offset;
- } else {
- return false;
- }
- return true;
- }
-
- /**
- * Implements support for fstat(). Currently the only supported field is
- * "size".
- * @return array
- */
- public function stream_stat()
- {
- return array(
- 'size' => strlen($this->data),
- );
- }
-
- // Methods used by stream_wrapper_register() that are not implemented:
- // bool stream_flush ( void )
- // int stream_write ( string data )
- // bool rename ( string path_from, string path_to )
- // bool mkdir ( string path, int mode, int options )
- // bool rmdir ( string path, int options )
- // bool dir_opendir ( string path, int options )
- // array url_stat ( string path, int flags )
- // string dir_readdir ( void )
- // bool dir_rewinddir ( void )
- // bool dir_closedir ( void )
-}
diff --git a/admin/survey/excel/PHPExcel/Shared/OLE/PPS.php b/admin/survey/excel/PHPExcel/Shared/OLE/PPS.php
deleted file mode 100644
index 6e3a689..0000000
--- a/admin/survey/excel/PHPExcel/Shared/OLE/PPS.php
+++ /dev/null
@@ -1,230 +0,0 @@
-<?php
-/* vim: set expandtab tabstop=4 shiftwidth=4: */
-// +----------------------------------------------------------------------+
-// | PHP Version 4 |
-// +----------------------------------------------------------------------+
-// | Copyright (c) 1997-2002 The PHP Group |
-// +----------------------------------------------------------------------+
-// | This source file is subject to version 2.02 of the PHP license, |
-// | that is bundled with this package in the file LICENSE, and is |
-// | available at through the world-wide-web at |
-// | http://www.php.net/license/2_02.txt. |
-// | If you did not receive a copy of the PHP license and are unable to |
-// | obtain it through the world-wide-web, please send a note to |
-// | license@php.net so we can mail you a copy immediately. |
-// +----------------------------------------------------------------------+
-// | Author: Xavier Noguer <xnoguer@php.net> |
-// | Based on OLE::Storage_Lite by Kawai, Takanori |
-// +----------------------------------------------------------------------+
-//
-// $Id: PPS.php,v 1.7 2007/02/13 21:00:42 schmidt Exp $
-
-
-/**
-* Class for creating PPS's for OLE containers
-*
-* @author Xavier Noguer <xnoguer@php.net>
-* @category PHPExcel
-* @package PHPExcel_Shared_OLE
-*/
-class PHPExcel_Shared_OLE_PPS
-{
- /**
- * The PPS index
- * @var integer
- */
- public $No;
-
- /**
- * The PPS name (in Unicode)
- * @var string
- */
- public $Name;
-
- /**
- * The PPS type. Dir, Root or File
- * @var integer
- */
- public $Type;
-
- /**
- * The index of the previous PPS
- * @var integer
- */
- public $PrevPps;
-
- /**
- * The index of the next PPS
- * @var integer
- */
- public $NextPps;
-
- /**
- * The index of it's first child if this is a Dir or Root PPS
- * @var integer
- */
- public $DirPps;
-
- /**
- * A timestamp
- * @var integer
- */
- public $Time1st;
-
- /**
- * A timestamp
- * @var integer
- */
- public $Time2nd;
-
- /**
- * Starting block (small or big) for this PPS's data inside the container
- * @var integer
- */
- public $_StartBlock;
-
- /**
- * The size of the PPS's data (in bytes)
- * @var integer
- */
- public $Size;
-
- /**
- * The PPS's data (only used if it's not using a temporary file)
- * @var string
- */
- public $_data;
-
- /**
- * Array of child PPS's (only used by Root and Dir PPS's)
- * @var array
- */
- public $children = array();
-
- /**
- * Pointer to OLE container
- * @var OLE
- */
- public $ole;
-
- /**
- * The constructor
- *
- * @access public
- * @param integer $No The PPS index
- * @param string $name The PPS name
- * @param integer $type The PPS type. Dir, Root or File
- * @param integer $prev The index of the previous PPS
- * @param integer $next The index of the next PPS
- * @param integer $dir The index of it's first child if this is a Dir or Root PPS
- * @param integer $time_1st A timestamp
- * @param integer $time_2nd A timestamp
- * @param string $data The (usually binary) source data of the PPS
- * @param array $children Array containing children PPS for this PPS
- */
- public function __construct($No, $name, $type, $prev, $next, $dir, $time_1st, $time_2nd, $data, $children)
- {
- $this->No = $No;
- $this->Name = $name;
- $this->Type = $type;
- $this->PrevPps = $prev;
- $this->NextPps = $next;
- $this->DirPps = $dir;
- $this->Time1st = $time_1st;
- $this->Time2nd = $time_2nd;
- $this->_data = $data;
- $this->children = $children;
- if ($data != '') {
- $this->Size = strlen($data);
- } else {
- $this->Size = 0;
- }
- }
-
- /**
- * Returns the amount of data saved for this PPS
- *
- * @access public
- * @return integer The amount of data (in bytes)
- */
- public function _DataLen()
- {
- if (!isset($this->_data)) {
- return 0;
- }
- //if (isset($this->_PPS_FILE)) {
- // fseek($this->_PPS_FILE, 0);
- // $stats = fstat($this->_PPS_FILE);
- // return $stats[7];
- //} else {
- return strlen($this->_data);
- //}
- }
-
- /**
- * Returns a string with the PPS's WK (What is a WK?)
- *
- * @access public
- * @return string The binary string
- */
- public function _getPpsWk()
- {
- $ret = str_pad($this->Name,64,"\x00");
-
- $ret .= pack("v", strlen($this->Name) + 2) // 66
- . pack("c", $this->Type) // 67
- . pack("c", 0x00) //UK // 68
- . pack("V", $this->PrevPps) //Prev // 72
- . pack("V", $this->NextPps) //Next // 76
- . pack("V", $this->DirPps) //Dir // 80
- . "\x00\x09\x02\x00" // 84
- . "\x00\x00\x00\x00" // 88
- . "\xc0\x00\x00\x00" // 92
- . "\x00\x00\x00\x46" // 96 // Seems to be ok only for Root
- . "\x00\x00\x00\x00" // 100
- . PHPExcel_Shared_OLE::LocalDate2OLE($this->Time1st) // 108
- . PHPExcel_Shared_OLE::LocalDate2OLE($this->Time2nd) // 116
- . pack("V", isset($this->_StartBlock)?
- $this->_StartBlock:0) // 120
- . pack("V", $this->Size) // 124
- . pack("V", 0); // 128
- return $ret;
- }
-
- /**
- * Updates index and pointers to previous, next and children PPS's for this
- * PPS. I don't think it'll work with Dir PPS's.
- *
- * @access public
- * @param array &$raList Reference to the array of PPS's for the whole OLE
- * container
- * @return integer The index for this PPS
- */
- public static function _savePpsSetPnt(&$raList, $to_save, $depth = 0)
- {
- if ( !is_array($to_save) || (empty($to_save)) ) {
- return 0xFFFFFFFF;
- } elseif( count($to_save) == 1 ) {
- $cnt = count($raList);
- // If the first entry, it's the root... Don't clone it!
- $raList[$cnt] = ( $depth == 0 ) ? $to_save[0] : clone $to_save[0];
- $raList[$cnt]->No = $cnt;
- $raList[$cnt]->PrevPps = 0xFFFFFFFF;
- $raList[$cnt]->NextPps = 0xFFFFFFFF;
- $raList[$cnt]->DirPps = self::_savePpsSetPnt($raList, @$raList[$cnt]->children, $depth++);
- } else {
- $iPos = floor(count($to_save) / 2);
- $aPrev = array_slice($to_save, 0, $iPos);
- $aNext = array_slice($to_save, $iPos + 1);
- $cnt = count($raList);
- // If the first entry, it's the root... Don't clone it!
- $raList[$cnt] = ( $depth == 0 ) ? $to_save[$iPos] : clone $to_save[$iPos];
- $raList[$cnt]->No = $cnt;
- $raList[$cnt]->PrevPps = self::_savePpsSetPnt($raList, $aPrev, $depth++);
- $raList[$cnt]->NextPps = self::_savePpsSetPnt($raList, $aNext, $depth++);
- $raList[$cnt]->DirPps = self::_savePpsSetPnt($raList, @$raList[$cnt]->children, $depth++);
-
- }
- return $cnt;
- }
-}
diff --git a/admin/survey/excel/PHPExcel/Shared/OLE/PPS/File.php b/admin/survey/excel/PHPExcel/Shared/OLE/PPS/File.php
deleted file mode 100644
index 3d651af..0000000
--- a/admin/survey/excel/PHPExcel/Shared/OLE/PPS/File.php
+++ /dev/null
@@ -1,84 +0,0 @@
-<?php
-/* vim: set expandtab tabstop=4 shiftwidth=4: */
-// +----------------------------------------------------------------------+
-// | PHP Version 4 |
-// +----------------------------------------------------------------------+
-// | Copyright (c) 1997-2002 The PHP Group |
-// +----------------------------------------------------------------------+
-// | This source file is subject to version 2.02 of the PHP license, |
-// | that is bundled with this package in the file LICENSE, and is |
-// | available at through the world-wide-web at |
-// | http://www.php.net/license/2_02.txt. |
-// | If you did not receive a copy of the PHP license and are unable to |
-// | obtain it through the world-wide-web, please send a note to |
-// | license@php.net so we can mail you a copy immediately. |
-// +----------------------------------------------------------------------+
-// | Author: Xavier Noguer <xnoguer@php.net> |
-// | Based on OLE::Storage_Lite by Kawai, Takanori |
-// +----------------------------------------------------------------------+
-//
-// $Id: File.php,v 1.11 2007/02/13 21:00:42 schmidt Exp $
-
-
-/**
-* Class for creating File PPS's for OLE containers
-*
-* @author Xavier Noguer <xnoguer@php.net>
-* @category PHPExcel
-* @package PHPExcel_Shared_OLE
-*/
-class PHPExcel_Shared_OLE_PPS_File extends PHPExcel_Shared_OLE_PPS
- {
- /**
- * The constructor
- *
- * @access public
- * @param string $name The name of the file (in Unicode)
- * @see OLE::Asc2Ucs()
- */
- public function __construct($name)
- {
- parent::__construct(
- null,
- $name,
- PHPExcel_Shared_OLE::OLE_PPS_TYPE_FILE,
- null,
- null,
- null,
- null,
- null,
- '',
- array());
- }
-
- /**
- * Initialization method. Has to be called right after OLE_PPS_File().
- *
- * @access public
- * @return mixed true on success
- */
- public function init()
- {
- return true;
- }
-
- /**
- * Append data to PPS
- *
- * @access public
- * @param string $data The data to append
- */
- public function append($data)
- {
- $this->_data .= $data;
- }
-
- /**
- * Returns a stream for reading this file using fread() etc.
- * @return resource a read-only stream
- */
- public function getStream()
- {
- $this->ole->getStream($this);
- }
-}
diff --git a/admin/survey/excel/PHPExcel/Shared/OLE/PPS/Root.php b/admin/survey/excel/PHPExcel/Shared/OLE/PPS/Root.php
deleted file mode 100644
index 82cf9d1..0000000
--- a/admin/survey/excel/PHPExcel/Shared/OLE/PPS/Root.php
+++ /dev/null
@@ -1,467 +0,0 @@
-<?php
-/* vim: set expandtab tabstop=4 shiftwidth=4: */
-// +----------------------------------------------------------------------+
-// | PHP Version 4 |
-// +----------------------------------------------------------------------+
-// | Copyright (c) 1997-2002 The PHP Group |
-// +----------------------------------------------------------------------+
-// | This source file is subject to version 2.02 of the PHP license, |
-// | that is bundled with this package in the file LICENSE, and is |
-// | available at through the world-wide-web at |
-// | http://www.php.net/license/2_02.txt. |
-// | If you did not receive a copy of the PHP license and are unable to |
-// | obtain it through the world-wide-web, please send a note to |
-// | license@php.net so we can mail you a copy immediately. |
-// +----------------------------------------------------------------------+
-// | Author: Xavier Noguer <xnoguer@php.net> |
-// | Based on OLE::Storage_Lite by Kawai, Takanori |
-// +----------------------------------------------------------------------+
-//
-// $Id: Root.php,v 1.9 2005/04/23 21:53:49 dufuz Exp $
-
-
-/**
-* Class for creating Root PPS's for OLE containers
-*
-* @author Xavier Noguer <xnoguer@php.net>
-* @category PHPExcel
-* @package PHPExcel_Shared_OLE
-*/
-class PHPExcel_Shared_OLE_PPS_Root extends PHPExcel_Shared_OLE_PPS
- {
-
- /**
- * Directory for temporary files
- * @var string
- */
- protected $_tmp_dir = NULL;
-
- /**
- * @param integer $time_1st A timestamp
- * @param integer $time_2nd A timestamp
- */
- public function __construct($time_1st, $time_2nd, $raChild)
- {
- $this->_tempDir = PHPExcel_Shared_File::sys_get_temp_dir();
-
- parent::__construct(
- null,
- PHPExcel_Shared_OLE::Asc2Ucs('Root Entry'),
- PHPExcel_Shared_OLE::OLE_PPS_TYPE_ROOT,
- null,
- null,
- null,
- $time_1st,
- $time_2nd,
- null,
- $raChild);
- }
-
- /**
- * Method for saving the whole OLE container (including files).
- * In fact, if called with an empty argument (or '-'), it saves to a
- * temporary file and then outputs it's contents to stdout.
- * If a resource pointer to a stream created by fopen() is passed
- * it will be used, but you have to close such stream by yourself.
- *
- * @param string|resource $filename The name of the file or stream where to save the OLE container.
- * @access public
- * @return mixed true on success
- */
- public function save($filename)
- {
- // Initial Setting for saving
- $this->_BIG_BLOCK_SIZE = pow(2,
- ((isset($this->_BIG_BLOCK_SIZE))? self::_adjust2($this->_BIG_BLOCK_SIZE) : 9));
- $this->_SMALL_BLOCK_SIZE= pow(2,
- ((isset($this->_SMALL_BLOCK_SIZE))? self::_adjust2($this->_SMALL_BLOCK_SIZE): 6));
-
- if (is_resource($filename)) {
- $this->_FILEH_ = $filename;
- } else if ($filename == '-' || $filename == '') {
- if ($this->_tmp_dir === NULL)
- $this->_tmp_dir = PHPExcel_Shared_File::sys_get_temp_dir();
- $this->_tmp_filename = tempnam($this->_tmp_dir, "OLE_PPS_Root");
- $this->_FILEH_ = fopen($this->_tmp_filename,"w+b");
- if ($this->_FILEH_ == false) {
- throw new Exception("Can't create temporary file.");
- }
- } else {
- $this->_FILEH_ = fopen($filename, "wb");
- }
- if ($this->_FILEH_ == false) {
- throw new Exception("Can't open $filename. It may be in use or protected.");
- }
- // Make an array of PPS's (for Save)
- $aList = array();
- PHPExcel_Shared_OLE_PPS::_savePpsSetPnt($aList, array($this));
- // calculate values for header
- list($iSBDcnt, $iBBcnt, $iPPScnt) = $this->_calcSize($aList); //, $rhInfo);
- // Save Header
- $this->_saveHeader($iSBDcnt, $iBBcnt, $iPPScnt);
-
- // Make Small Data string (write SBD)
- $this->_data = $this->_makeSmallData($aList);
-
- // Write BB
- $this->_saveBigData($iSBDcnt, $aList);
- // Write PPS
- $this->_savePps($aList);
- // Write Big Block Depot and BDList and Adding Header informations
- $this->_saveBbd($iSBDcnt, $iBBcnt, $iPPScnt);
-
- if (!is_resource($filename)) {
- fclose($this->_FILEH_);
- }
-
- return true;
- }
-
- /**
- * Calculate some numbers
- *
- * @access public
- * @param array $raList Reference to an array of PPS's
- * @return array The array of numbers
- */
- public function _calcSize(&$raList)
- {
- // Calculate Basic Setting
- list($iSBDcnt, $iBBcnt, $iPPScnt) = array(0,0,0);
- $iSmallLen = 0;
- $iSBcnt = 0;
- $iCount = count($raList);
- for ($i = 0; $i < $iCount; ++$i) {
- if ($raList[$i]->Type == PHPExcel_Shared_OLE::OLE_PPS_TYPE_FILE) {
- $raList[$i]->Size = $raList[$i]->_DataLen();
- if ($raList[$i]->Size < PHPExcel_Shared_OLE::OLE_DATA_SIZE_SMALL) {
- $iSBcnt += floor($raList[$i]->Size / $this->_SMALL_BLOCK_SIZE)
- + (($raList[$i]->Size % $this->_SMALL_BLOCK_SIZE)? 1: 0);
- } else {
- $iBBcnt += (floor($raList[$i]->Size / $this->_BIG_BLOCK_SIZE) +
- (($raList[$i]->Size % $this->_BIG_BLOCK_SIZE)? 1: 0));
- }
- }
- }
- $iSmallLen = $iSBcnt * $this->_SMALL_BLOCK_SIZE;
- $iSlCnt = floor($this->_BIG_BLOCK_SIZE / PHPExcel_Shared_OLE::OLE_LONG_INT_SIZE);
- $iSBDcnt = floor($iSBcnt / $iSlCnt) + (($iSBcnt % $iSlCnt)? 1:0);
- $iBBcnt += (floor($iSmallLen / $this->_BIG_BLOCK_SIZE) +
- (( $iSmallLen % $this->_BIG_BLOCK_SIZE)? 1: 0));
- $iCnt = count($raList);
- $iBdCnt = $this->_BIG_BLOCK_SIZE / PHPExcel_Shared_OLE::OLE_PPS_SIZE;
- $iPPScnt = (floor($iCnt/$iBdCnt) + (($iCnt % $iBdCnt)? 1: 0));
-
- return array($iSBDcnt, $iBBcnt, $iPPScnt);
- }
-
- /**
- * Helper function for caculating a magic value for block sizes
- *
- * @access public
- * @param integer $i2 The argument
- * @see save()
- * @return integer
- */
- private static function _adjust2($i2)
- {
- $iWk = log($i2)/log(2);
- return ($iWk > floor($iWk))? floor($iWk)+1:$iWk;
- }
-
- /**
- * Save OLE header
- *
- * @access public
- * @param integer $iSBDcnt
- * @param integer $iBBcnt
- * @param integer $iPPScnt
- */
- public function _saveHeader($iSBDcnt, $iBBcnt, $iPPScnt)
- {
- $FILE = $this->_FILEH_;
-
- // Calculate Basic Setting
- $iBlCnt = $this->_BIG_BLOCK_SIZE / PHPExcel_Shared_OLE::OLE_LONG_INT_SIZE;
- $i1stBdL = ($this->_BIG_BLOCK_SIZE - 0x4C) / PHPExcel_Shared_OLE::OLE_LONG_INT_SIZE;
-
- $iBdExL = 0;
- $iAll = $iBBcnt + $iPPScnt + $iSBDcnt;
- $iAllW = $iAll;
- $iBdCntW = floor($iAllW / $iBlCnt) + (($iAllW % $iBlCnt)? 1: 0);
- $iBdCnt = floor(($iAll + $iBdCntW) / $iBlCnt) + ((($iAllW+$iBdCntW) % $iBlCnt)? 1: 0);
-
- // Calculate BD count
- if ($iBdCnt > $i1stBdL) {
- while (1) {
- ++$iBdExL;
- ++$iAllW;
- $iBdCntW = floor($iAllW / $iBlCnt) + (($iAllW % $iBlCnt)? 1: 0);
- $iBdCnt = floor(($iAllW + $iBdCntW) / $iBlCnt) + ((($iAllW+$iBdCntW) % $iBlCnt)? 1: 0);
- if ($iBdCnt <= ($iBdExL*$iBlCnt+ $i1stBdL)) {
- break;
- }
- }
- }
-
- // Save Header
- fwrite($FILE,
- "\xD0\xCF\x11\xE0\xA1\xB1\x1A\xE1"
- . "\x00\x00\x00\x00"
- . "\x00\x00\x00\x00"
- . "\x00\x00\x00\x00"
- . "\x00\x00\x00\x00"
- . pack("v", 0x3b)
- . pack("v", 0x03)
- . pack("v", -2)
- . pack("v", 9)
- . pack("v", 6)
- . pack("v", 0)
- . "\x00\x00\x00\x00"
- . "\x00\x00\x00\x00"
- . pack("V", $iBdCnt)
- . pack("V", $iBBcnt+$iSBDcnt) //ROOT START
- . pack("V", 0)
- . pack("V", 0x1000)
- . pack("V", $iSBDcnt ? 0 : -2) //Small Block Depot
- . pack("V", $iSBDcnt)
- );
- // Extra BDList Start, Count
- if ($iBdCnt < $i1stBdL) {
- fwrite($FILE,
- pack("V", -2) // Extra BDList Start
- . pack("V", 0) // Extra BDList Count
- );
- } else {
- fwrite($FILE, pack("V", $iAll+$iBdCnt) . pack("V", $iBdExL));
- }
-
- // BDList
- for ($i = 0; $i < $i1stBdL && $i < $iBdCnt; ++$i) {
- fwrite($FILE, pack("V", $iAll+$i));
- }
- if ($i < $i1stBdL) {
- $jB = $i1stBdL - $i;
- for ($j = 0; $j < $jB; ++$j) {
- fwrite($FILE, (pack("V", -1)));
- }
- }
- }
-
- /**
- * Saving big data (PPS's with data bigger than PHPExcel_Shared_OLE::OLE_DATA_SIZE_SMALL)
- *
- * @access public
- * @param integer $iStBlk
- * @param array &$raList Reference to array of PPS's
- */
- public function _saveBigData($iStBlk, &$raList)
- {
- $FILE = $this->_FILEH_;
-
- // cycle through PPS's
- $iCount = count($raList);
- for ($i = 0; $i < $iCount; ++$i) {
- if ($raList[$i]->Type != PHPExcel_Shared_OLE::OLE_PPS_TYPE_DIR) {
- $raList[$i]->Size = $raList[$i]->_DataLen();
- if (($raList[$i]->Size >= PHPExcel_Shared_OLE::OLE_DATA_SIZE_SMALL) ||
- (($raList[$i]->Type == PHPExcel_Shared_OLE::OLE_PPS_TYPE_ROOT) && isset($raList[$i]->_data)))
- {
- // Write Data
- //if (isset($raList[$i]->_PPS_FILE)) {
- // $iLen = 0;
- // fseek($raList[$i]->_PPS_FILE, 0); // To The Top
- // while($sBuff = fread($raList[$i]->_PPS_FILE, 4096)) {
- // $iLen += strlen($sBuff);
- // fwrite($FILE, $sBuff);
- // }
- //} else {
- fwrite($FILE, $raList[$i]->_data);
- //}
-
- if ($raList[$i]->Size % $this->_BIG_BLOCK_SIZE) {
- fwrite($FILE, str_repeat("\x00", $this->_BIG_BLOCK_SIZE - ($raList[$i]->Size % $this->_BIG_BLOCK_SIZE)));
- }
- // Set For PPS
- $raList[$i]->_StartBlock = $iStBlk;
- $iStBlk +=
- (floor($raList[$i]->Size / $this->_BIG_BLOCK_SIZE) +
- (($raList[$i]->Size % $this->_BIG_BLOCK_SIZE)? 1: 0));
- }
- // Close file for each PPS, and unlink it
- //if (isset($raList[$i]->_PPS_FILE)) {
- // fclose($raList[$i]->_PPS_FILE);
- // $raList[$i]->_PPS_FILE = null;
- // unlink($raList[$i]->_tmp_filename);
- //}
- }
- }
- }
-
- /**
- * get small data (PPS's with data smaller than PHPExcel_Shared_OLE::OLE_DATA_SIZE_SMALL)
- *
- * @access public
- * @param array &$raList Reference to array of PPS's
- */
- public function _makeSmallData(&$raList)
- {
- $sRes = '';
- $FILE = $this->_FILEH_;
- $iSmBlk = 0;
-
- $iCount = count($raList);
- for ($i = 0; $i < $iCount; ++$i) {
- // Make SBD, small data string
- if ($raList[$i]->Type == PHPExcel_Shared_OLE::OLE_PPS_TYPE_FILE) {
- if ($raList[$i]->Size <= 0) {
- continue;
- }
- if ($raList[$i]->Size < PHPExcel_Shared_OLE::OLE_DATA_SIZE_SMALL) {
- $iSmbCnt = floor($raList[$i]->Size / $this->_SMALL_BLOCK_SIZE)
- + (($raList[$i]->Size % $this->_SMALL_BLOCK_SIZE)? 1: 0);
- // Add to SBD
- $jB = $iSmbCnt - 1;
- for ($j = 0; $j < $jB; ++$j) {
- fwrite($FILE, pack("V", $j+$iSmBlk+1));
- }
- fwrite($FILE, pack("V", -2));
-
- //// Add to Data String(this will be written for RootEntry)
- //if ($raList[$i]->_PPS_FILE) {
- // fseek($raList[$i]->_PPS_FILE, 0); // To The Top
- // while ($sBuff = fread($raList[$i]->_PPS_FILE, 4096)) {
- // $sRes .= $sBuff;
- // }
- //} else {
- $sRes .= $raList[$i]->_data;
- //}
- if ($raList[$i]->Size % $this->_SMALL_BLOCK_SIZE) {
- $sRes .= str_repeat("\x00",$this->_SMALL_BLOCK_SIZE - ($raList[$i]->Size % $this->_SMALL_BLOCK_SIZE));
- }
- // Set for PPS
- $raList[$i]->_StartBlock = $iSmBlk;
- $iSmBlk += $iSmbCnt;
- }
- }
- }
- $iSbCnt = floor($this->_BIG_BLOCK_SIZE / PHPExcel_Shared_OLE::OLE_LONG_INT_SIZE);
- if ($iSmBlk % $iSbCnt) {
- $iB = $iSbCnt - ($iSmBlk % $iSbCnt);
- for ($i = 0; $i < $iB; ++$i) {
- fwrite($FILE, pack("V", -1));
- }
- }
- return $sRes;
- }
-
- /**
- * Saves all the PPS's WKs
- *
- * @access public
- * @param array $raList Reference to an array with all PPS's
- */
- public function _savePps(&$raList)
- {
- // Save each PPS WK
- $iC = count($raList);
- for ($i = 0; $i < $iC; ++$i) {
- fwrite($this->_FILEH_, $raList[$i]->_getPpsWk());
- }
- // Adjust for Block
- $iCnt = count($raList);
- $iBCnt = $this->_BIG_BLOCK_SIZE / PHPExcel_Shared_OLE::OLE_PPS_SIZE;
- if ($iCnt % $iBCnt) {
- fwrite($this->_FILEH_, str_repeat("\x00",($iBCnt - ($iCnt % $iBCnt)) * PHPExcel_Shared_OLE::OLE_PPS_SIZE));
- }
- }
-
- /**
- * Saving Big Block Depot
- *
- * @access public
- * @param integer $iSbdSize
- * @param integer $iBsize
- * @param integer $iPpsCnt
- */
- public function _saveBbd($iSbdSize, $iBsize, $iPpsCnt)
- {
- $FILE = $this->_FILEH_;
- // Calculate Basic Setting
- $iBbCnt = $this->_BIG_BLOCK_SIZE / PHPExcel_Shared_OLE::OLE_LONG_INT_SIZE;
- $i1stBdL = ($this->_BIG_BLOCK_SIZE - 0x4C) / PHPExcel_Shared_OLE::OLE_LONG_INT_SIZE;
-
- $iBdExL = 0;
- $iAll = $iBsize + $iPpsCnt + $iSbdSize;
- $iAllW = $iAll;
- $iBdCntW = floor($iAllW / $iBbCnt) + (($iAllW % $iBbCnt)? 1: 0);
- $iBdCnt = floor(($iAll + $iBdCntW) / $iBbCnt) + ((($iAllW+$iBdCntW) % $iBbCnt)? 1: 0);
- // Calculate BD count
- if ($iBdCnt >$i1stBdL) {
- while (1) {
- ++$iBdExL;
- ++$iAllW;
- $iBdCntW = floor($iAllW / $iBbCnt) + (($iAllW % $iBbCnt)? 1: 0);
- $iBdCnt = floor(($iAllW + $iBdCntW) / $iBbCnt) + ((($iAllW+$iBdCntW) % $iBbCnt)? 1: 0);
- if ($iBdCnt <= ($iBdExL*$iBbCnt+ $i1stBdL)) {
- break;
- }
- }
- }
-
- // Making BD
- // Set for SBD
- if ($iSbdSize > 0) {
- for ($i = 0; $i < ($iSbdSize - 1); ++$i) {
- fwrite($FILE, pack("V", $i+1));
- }
- fwrite($FILE, pack("V", -2));
- }
- // Set for B
- for ($i = 0; $i < ($iBsize - 1); ++$i) {
- fwrite($FILE, pack("V", $i+$iSbdSize+1));
- }
- fwrite($FILE, pack("V", -2));
-
- // Set for PPS
- for ($i = 0; $i < ($iPpsCnt - 1); ++$i) {
- fwrite($FILE, pack("V", $i+$iSbdSize+$iBsize+1));
- }
- fwrite($FILE, pack("V", -2));
- // Set for BBD itself ( 0xFFFFFFFD : BBD)
- for ($i = 0; $i < $iBdCnt; ++$i) {
- fwrite($FILE, pack("V", 0xFFFFFFFD));
- }
- // Set for ExtraBDList
- for ($i = 0; $i < $iBdExL; ++$i) {
- fwrite($FILE, pack("V", 0xFFFFFFFC));
- }
- // Adjust for Block
- if (($iAllW + $iBdCnt) % $iBbCnt) {
- $iBlock = ($iBbCnt - (($iAllW + $iBdCnt) % $iBbCnt));
- for ($i = 0; $i < $iBlock; ++$i) {
- fwrite($FILE, pack("V", -1));
- }
- }
- // Extra BDList
- if ($iBdCnt > $i1stBdL) {
- $iN=0;
- $iNb=0;
- for ($i = $i1stBdL;$i < $iBdCnt; $i++, ++$iN) {
- if ($iN >= ($iBbCnt - 1)) {
- $iN = 0;
- ++$iNb;
- fwrite($FILE, pack("V", $iAll+$iBdCnt+$iNb));
- }
- fwrite($FILE, pack("V", $iBsize+$iSbdSize+$iPpsCnt+$i));
- }
- if (($iBdCnt-$i1stBdL) % ($iBbCnt-1)) {
- $iB = ($iBbCnt - 1) - (($iBdCnt - $i1stBdL) % ($iBbCnt - 1));
- for ($i = 0; $i < $iB; ++$i) {
- fwrite($FILE, pack("V", -1));
- }
- }
- fwrite($FILE, pack("V", -2));
- }
- }
-}
diff --git a/admin/survey/excel/PHPExcel/Shared/OLERead.php b/admin/survey/excel/PHPExcel/Shared/OLERead.php
deleted file mode 100644
index 1c2c0ac..0000000
--- a/admin/survey/excel/PHPExcel/Shared/OLERead.php
+++ /dev/null
@@ -1,317 +0,0 @@
-<?php
-/**
- * PHPExcel
- *
- * Copyright (c) 2006 - 2012 PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel_Shared
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-define('IDENTIFIER_OLE', pack('CCCCCCCC', 0xd0, 0xcf, 0x11, 0xe0, 0xa1, 0xb1, 0x1a, 0xe1));
-
-class PHPExcel_Shared_OLERead {
- private $data = '';
-
- // OLE identifier
- const IDENTIFIER_OLE = IDENTIFIER_OLE;
-
- // Size of a sector = 512 bytes
- const BIG_BLOCK_SIZE = 0x200;
-
- // Size of a short sector = 64 bytes
- const SMALL_BLOCK_SIZE = 0x40;
-
- // Size of a directory entry always = 128 bytes
- const PROPERTY_STORAGE_BLOCK_SIZE = 0x80;
-
- // Minimum size of a standard stream = 4096 bytes, streams smaller than this are stored as short streams
- const SMALL_BLOCK_THRESHOLD = 0x1000;
-
- // header offsets
- const NUM_BIG_BLOCK_DEPOT_BLOCKS_POS = 0x2c;
- const ROOT_START_BLOCK_POS = 0x30;
- const SMALL_BLOCK_DEPOT_BLOCK_POS = 0x3c;
- const EXTENSION_BLOCK_POS = 0x44;
- const NUM_EXTENSION_BLOCK_POS = 0x48;
- const BIG_BLOCK_DEPOT_BLOCKS_POS = 0x4c;
-
- // property storage offsets (directory offsets)
- const SIZE_OF_NAME_POS = 0x40;
- const TYPE_POS = 0x42;
- const START_BLOCK_POS = 0x74;
- const SIZE_POS = 0x78;
-
-
-
- public $wrkbook = null;
- public $summaryInformation = null;
- public $documentSummaryInformation = null;
-
-
- /**
- * Read the file
- *
- * @param $sFileName string Filename
- * @throws Exception
- */
- public function read($sFileName)
- {
- // Check if file exists and is readable
- if(!is_readable($sFileName)) {
- throw new Exception("Could not open " . $sFileName . " for reading! File does not exist, or it is not readable.");
- }
-
- // Get the file data
- $this->data = file_get_contents($sFileName);
-
- // Check OLE identifier
- if (substr($this->data, 0, 8) != self::IDENTIFIER_OLE) {
- throw new Exception('The filename ' . $sFileName . ' is not recognised as an OLE file');
- }
-
- // Total number of sectors used for the SAT
- $this->numBigBlockDepotBlocks = self::_GetInt4d($this->data, self::NUM_BIG_BLOCK_DEPOT_BLOCKS_POS);
-
- // SecID of the first sector of the directory stream
- $this->rootStartBlock = self::_GetInt4d($this->data, self::ROOT_START_BLOCK_POS);
-
- // SecID of the first sector of the SSAT (or -2 if not extant)
- $this->sbdStartBlock = self::_GetInt4d($this->data, self::SMALL_BLOCK_DEPOT_BLOCK_POS);
-
- // SecID of the first sector of the MSAT (or -2 if no additional sectors are used)
- $this->extensionBlock = self::_GetInt4d($this->data, self::EXTENSION_BLOCK_POS);
-
- // Total number of sectors used by MSAT
- $this->numExtensionBlocks = self::_GetInt4d($this->data, self::NUM_EXTENSION_BLOCK_POS);
-
- $bigBlockDepotBlocks = array();
- $pos = self::BIG_BLOCK_DEPOT_BLOCKS_POS;
-
- $bbdBlocks = $this->numBigBlockDepotBlocks;
-
- if ($this->numExtensionBlocks != 0) {
- $bbdBlocks = (self::BIG_BLOCK_SIZE - self::BIG_BLOCK_DEPOT_BLOCKS_POS)/4;
- }
-
- for ($i = 0; $i < $bbdBlocks; ++$i) {
- $bigBlockDepotBlocks[$i] = self::_GetInt4d($this->data, $pos);
- $pos += 4;
- }
-
- for ($j = 0; $j < $this->numExtensionBlocks; ++$j) {
- $pos = ($this->extensionBlock + 1) * self::BIG_BLOCK_SIZE;
- $blocksToRead = min($this->numBigBlockDepotBlocks - $bbdBlocks, self::BIG_BLOCK_SIZE / 4 - 1);
-
- for ($i = $bbdBlocks; $i < $bbdBlocks + $blocksToRead; ++$i) {
- $bigBlockDepotBlocks[$i] = self::_GetInt4d($this->data, $pos);
- $pos += 4;
- }
-
- $bbdBlocks += $blocksToRead;
- if ($bbdBlocks < $this->numBigBlockDepotBlocks) {
- $this->extensionBlock = self::_GetInt4d($this->data, $pos);
- }
- }
-
- $pos = $index = 0;
- $this->bigBlockChain = array();
-
- $bbs = self::BIG_BLOCK_SIZE / 4;
- for ($i = 0; $i < $this->numBigBlockDepotBlocks; ++$i) {
- $pos = ($bigBlockDepotBlocks[$i] + 1) * self::BIG_BLOCK_SIZE;
-
- for ($j = 0 ; $j < $bbs; ++$j) {
- $this->bigBlockChain[$index] = self::_GetInt4d($this->data, $pos);
- $pos += 4 ;
- ++$index;
- }
- }
-
- $pos = $index = 0;
- $sbdBlock = $this->sbdStartBlock;
- $this->smallBlockChain = array();
-
- while ($sbdBlock != -2) {
- $pos = ($sbdBlock + 1) * self::BIG_BLOCK_SIZE;
-
- for ($j = 0; $j < $bbs; ++$j) {
- $this->smallBlockChain[$index] = self::_GetInt4d($this->data, $pos);
- $pos += 4;
- ++$index;
- }
-
- $sbdBlock = $this->bigBlockChain[$sbdBlock];
- }
-
- // read the directory stream
- $block = $this->rootStartBlock;
- $this->entry = $this->_readData($block);
-
- $this->_readPropertySets();
- }
-
- /**
- * Extract binary stream data
- *
- * @return string
- */
- public function getStream($stream)
- {
- if ($stream === NULL) {
- return null;
- }
-
- $streamData = '';
-
- if ($this->props[$stream]['size'] < self::SMALL_BLOCK_THRESHOLD) {
- $rootdata = $this->_readData($this->props[$this->rootentry]['startBlock']);
-
- $block = $this->props[$stream]['startBlock'];
-
- while ($block != -2) {
- $pos = $block * self::SMALL_BLOCK_SIZE;
- $streamData .= substr($rootdata, $pos, self::SMALL_BLOCK_SIZE);
-
- $block = $this->smallBlockChain[$block];
- }
-
- return $streamData;
- } else {
- $numBlocks = $this->props[$stream]['size'] / self::BIG_BLOCK_SIZE;
- if ($this->props[$stream]['size'] % self::BIG_BLOCK_SIZE != 0) {
- ++$numBlocks;
- }
-
- if ($numBlocks == 0) return '';
-
- $block = $this->props[$stream]['startBlock'];
-
- while ($block != -2) {
- $pos = ($block + 1) * self::BIG_BLOCK_SIZE;
- $streamData .= substr($this->data, $pos, self::BIG_BLOCK_SIZE);
- $block = $this->bigBlockChain[$block];
- }
-
- return $streamData;
- }
- }
-
- /**
- * Read a standard stream (by joining sectors using information from SAT)
- *
- * @param int $bl Sector ID where the stream starts
- * @return string Data for standard stream
- */
- private function _readData($bl)
- {
- $block = $bl;
- $data = '';
-
- while ($block != -2) {
- $pos = ($block + 1) * self::BIG_BLOCK_SIZE;
- $data .= substr($this->data, $pos, self::BIG_BLOCK_SIZE);
- $block = $this->bigBlockChain[$block];
- }
- return $data;
- }
-
- /**
- * Read entries in the directory stream.
- */
- private function _readPropertySets() {
- $offset = 0;
-
- // loop through entires, each entry is 128 bytes
- $entryLen = strlen($this->entry);
- while ($offset < $entryLen) {
- // entry data (128 bytes)
- $d = substr($this->entry, $offset, self::PROPERTY_STORAGE_BLOCK_SIZE);
-
- // size in bytes of name
- $nameSize = ord($d[self::SIZE_OF_NAME_POS]) | (ord($d[self::SIZE_OF_NAME_POS+1]) << 8);
-
- // type of entry
- $type = ord($d[self::TYPE_POS]);
-
- // sectorID of first sector or short sector, if this entry refers to a stream (the case with workbook)
- // sectorID of first sector of the short-stream container stream, if this entry is root entry
- $startBlock = self::_GetInt4d($d, self::START_BLOCK_POS);
-
- $size = self::_GetInt4d($d, self::SIZE_POS);
-
- $name = str_replace("\x00", "", substr($d,0,$nameSize));
-
- $this->props[] = array (
- 'name' => $name,
- 'type' => $type,
- 'startBlock' => $startBlock,
- 'size' => $size);
-
- // Workbook directory entry (BIFF5 uses Book, BIFF8 uses Workbook)
- if (($name == 'Workbook') || ($name == 'Book') || ($name == 'WORKBOOK') || ($name == 'BOOK')) {
- $this->wrkbook = count($this->props) - 1;
- }
-
- // Root entry
- if ($name == 'Root Entry' || $name == 'ROOT ENTRY' || $name == 'R') {
- $this->rootentry = count($this->props) - 1;
- }
-
- // Summary information
- if ($name == chr(5) . 'SummaryInformation') {
-// echo 'Summary Information<br />';
- $this->summaryInformation = count($this->props) - 1;
- }
-
- // Additional Document Summary information
- if ($name == chr(5) . 'DocumentSummaryInformation') {
-// echo 'Document Summary Information<br />';
- $this->documentSummaryInformation = count($this->props) - 1;
- }
-
- $offset += self::PROPERTY_STORAGE_BLOCK_SIZE;
- }
-
- }
-
- /**
- * Read 4 bytes of data at specified position
- *
- * @param string $data
- * @param int $pos
- * @return int
- */
- private static function _GetInt4d($data, $pos)
- {
- // FIX: represent numbers correctly on 64-bit system
- // http://sourceforge.net/tracker/index.php?func=detail&aid=1487372&group_id=99160&atid=623334
- // Hacked by Andreas Rehm 2006 to ensure correct result of the <<24 block on 32 and 64bit systems
- $_or_24 = ord($data[$pos + 3]);
- if ($_or_24 >= 128) {
- // negative number
- $_ord_24 = -abs((256 - $_or_24) << 24);
- } else {
- $_ord_24 = ($_or_24 & 127) << 24;
- }
- return ord($data[$pos]) | (ord($data[$pos + 1]) << 8) | (ord($data[$pos + 2]) << 16) | $_ord_24;
- }
-
-}
diff --git a/admin/survey/excel/PHPExcel/Shared/PCLZip/gnu-lgpl.txt b/admin/survey/excel/PHPExcel/Shared/PCLZip/gnu-lgpl.txt
deleted file mode 100644
index cbee875..0000000
--- a/admin/survey/excel/PHPExcel/Shared/PCLZip/gnu-lgpl.txt
+++ /dev/null
@@ -1,504 +0,0 @@
- GNU LESSER GENERAL PUBLIC LICENSE
- Version 2.1, February 1999
-
- Copyright (C) 1991, 1999 Free Software Foundation, Inc.
- 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-[This is the first released version of the Lesser GPL. It also counts
- as the successor of the GNU Library Public License, version 2, hence
- the version number 2.1.]
-
- Preamble
-
- The licenses for most software are designed to take away your
-freedom to share and change it. By contrast, the GNU General Public
-Licenses are intended to guarantee your freedom to share and change
-free software--to make sure the software is free for all its users.
-
- This license, the Lesser General Public License, applies to some
-specially designated software packages--typically libraries--of the
-Free Software Foundation and other authors who decide to use it. You
-can use it too, but we suggest you first think carefully about whether
-this license or the ordinary General Public License is the better
-strategy to use in any particular case, based on the explanations below.
-
- When we speak of free software, we are referring to freedom of use,
-not price. Our General Public Licenses are designed to make sure that
-you have the freedom to distribute copies of free software (and charge
-for this service if you wish); that you receive source code or can get
-it if you want it; that you can change the software and use pieces of
-it in new free programs; and that you are informed that you can do
-these things.
-
- To protect your rights, we need to make restrictions that forbid
-distributors to deny you these rights or to ask you to surrender these
-rights. These restrictions translate to certain responsibilities for
-you if you distribute copies of the library or if you modify it.
-
- For example, if you distribute copies of the library, whether gratis
-or for a fee, you must give the recipients all the rights that we gave
-you. You must make sure that they, too, receive or can get the source
-code. If you link other code with the library, you must provide
-complete object files to the recipients, so that they can relink them
-with the library after making changes to the library and recompiling
-it. And you must show them these terms so they know their rights.
-
- We protect your rights with a two-step method: (1) we copyright the
-library, and (2) we offer you this license, which gives you legal
-permission to copy, distribute and/or modify the library.
-
- To protect each distributor, we want to make it very clear that
-there is no warranty for the free library. Also, if the library is
-modified by someone else and passed on, the recipients should know
-that what they have is not the original version, so that the original
-author's reputation will not be affected by problems that might be
-introduced by others.
-
- Finally, software patents pose a constant threat to the existence of
-any free program. We wish to make sure that a company cannot
-effectively restrict the users of a free program by obtaining a
-restrictive license from a patent holder. Therefore, we insist that
-any patent license obtained for a version of the library must be
-consistent with the full freedom of use specified in this license.
-
- Most GNU software, including some libraries, is covered by the
-ordinary GNU General Public License. This license, the GNU Lesser
-General Public License, applies to certain designated libraries, and
-is quite different from the ordinary General Public License. We use
-this license for certain libraries in order to permit linking those
-libraries into non-free programs.
-
- When a program is linked with a library, whether statically or using
-a shared library, the combination of the two is legally speaking a
-combined work, a derivative of the original library. The ordinary
-General Public License therefore permits such linking only if the
-entire combination fits its criteria of freedom. The Lesser General
-Public License permits more lax criteria for linking other code with
-the library.
-
- We call this license the "Lesser" General Public License because it
-does Less to protect the user's freedom than the ordinary General
-Public License. It also provides other free software developers Less
-of an advantage over competing non-free programs. These disadvantages
-are the reason we use the ordinary General Public License for many
-libraries. However, the Lesser license provides advantages in certain
-special circumstances.
-
- For example, on rare occasions, there may be a special need to
-encourage the widest possible use of a certain library, so that it becomes
-a de-facto standard. To achieve this, non-free programs must be
-allowed to use the library. A more frequent case is that a free
-library does the same job as widely used non-free libraries. In this
-case, there is little to gain by limiting the free library to free
-software only, so we use the Lesser General Public License.
-
- In other cases, permission to use a particular library in non-free
-programs enables a greater number of people to use a large body of
-free software. For example, permission to use the GNU C Library in
-non-free programs enables many more people to use the whole GNU
-operating system, as well as its variant, the GNU/Linux operating
-system.
-
- Although the Lesser General Public License is Less protective of the
-users' freedom, it does ensure that the user of a program that is
-linked with the Library has the freedom and the wherewithal to run
-that program using a modified version of the Library.
-
- The precise terms and conditions for copying, distribution and
-modification follow. Pay close attention to the difference between a
-"work based on the library" and a "work that uses the library". The
-former contains code derived from the library, whereas the latter must
-be combined with the library in order to run.
-
- GNU LESSER GENERAL PUBLIC LICENSE
- TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
- 0. This License Agreement applies to any software library or other
-program which contains a notice placed by the copyright holder or
-other authorized party saying it may be distributed under the terms of
-this Lesser General Public License (also called "this License").
-Each licensee is addressed as "you".
-
- A "library" means a collection of software functions and/or data
-prepared so as to be conveniently linked with application programs
-(which use some of those functions and data) to form executables.
-
- The "Library", below, refers to any such software library or work
-which has been distributed under these terms. A "work based on the
-Library" means either the Library or any derivative work under
-copyright law: that is to say, a work containing the Library or a
-portion of it, either verbatim or with modifications and/or translated
-straightforwardly into another language. (Hereinafter, translation is
-included without limitation in the term "modification".)
-
- "Source code" for a work means the preferred form of the work for
-making modifications to it. For a library, complete source code means
-all the source code for all modules it contains, plus any associated
-interface definition files, plus the scripts used to control compilation
-and installation of the library.
-
- Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope. The act of
-running a program using the Library is not restricted, and output from
-such a program is covered only if its contents constitute a work based
-on the Library (independent of the use of the Library in a tool for
-writing it). Whether that is true depends on what the Library does
-and what the program that uses the Library does.
-
- 1. You may copy and distribute verbatim copies of the Library's
-complete source code as you receive it, in any medium, provided that
-you conspicuously and appropriately publish on each copy an
-appropriate copyright notice and disclaimer of warranty; keep intact
-all the notices that refer to this License and to the absence of any
-warranty; and distribute a copy of this License along with the
-Library.
-
- You may charge a fee for the physical act of transferring a copy,
-and you may at your option offer warranty protection in exchange for a
-fee.
-
- 2. You may modify your copy or copies of the Library or any portion
-of it, thus forming a work based on the Library, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
- a) The modified work must itself be a software library.
-
- b) You must cause the files modified to carry prominent notices
- stating that you changed the files and the date of any change.
-
- c) You must cause the whole of the work to be licensed at no
- charge to all third parties under the terms of this License.
-
- d) If a facility in the modified Library refers to a function or a
- table of data to be supplied by an application program that uses
- the facility, other than as an argument passed when the facility
- is invoked, then you must make a good faith effort to ensure that,
- in the event an application does not supply such function or
- table, the facility still operates, and performs whatever part of
- its purpose remains meaningful.
-
- (For example, a function in a library to compute square roots has
- a purpose that is entirely well-defined independent of the
- application. Therefore, Subsection 2d requires that any
- application-supplied function or table used by this function must
- be optional: if the application does not supply it, the square
- root function must still compute square roots.)
-
-These requirements apply to the modified work as a whole. If
-identifiable sections of that work are not derived from the Library,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works. But when you
-distribute the same sections as part of a whole which is a work based
-on the Library, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote
-it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Library.
-
-In addition, mere aggregation of another work not based on the Library
-with the Library (or with a work based on the Library) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
- 3. You may opt to apply the terms of the ordinary GNU General Public
-License instead of this License to a given copy of the Library. To do
-this, you must alter all the notices that refer to this License, so
-that they refer to the ordinary GNU General Public License, version 2,
-instead of to this License. (If a newer version than version 2 of the
-ordinary GNU General Public License has appeared, then you can specify
-that version instead if you wish.) Do not make any other change in
-these notices.
-
- Once this change is made in a given copy, it is irreversible for
-that copy, so the ordinary GNU General Public License applies to all
-subsequent copies and derivative works made from that copy.
-
- This option is useful when you wish to copy part of the code of
-the Library into a program that is not a library.
-
- 4. You may copy and distribute the Library (or a portion or
-derivative of it, under Section 2) in object code or executable form
-under the terms of Sections 1 and 2 above provided that you accompany
-it with the complete corresponding machine-readable source code, which
-must be distributed under the terms of Sections 1 and 2 above on a
-medium customarily used for software interchange.
-
- If distribution of object code is made by offering access to copy
-from a designated place, then offering equivalent access to copy the
-source code from the same place satisfies the requirement to
-distribute the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
- 5. A program that contains no derivative of any portion of the
-Library, but is designed to work with the Library by being compiled or
-linked with it, is called a "work that uses the Library". Such a
-work, in isolation, is not a derivative work of the Library, and
-therefore falls outside the scope of this License.
-
- However, linking a "work that uses the Library" with the Library
-creates an executable that is a derivative of the Library (because it
-contains portions of the Library), rather than a "work that uses the
-library". The executable is therefore covered by this License.
-Section 6 states terms for distribution of such executables.
-
- When a "work that uses the Library" uses material from a header file
-that is part of the Library, the object code for the work may be a
-derivative work of the Library even though the source code is not.
-Whether this is true is especially significant if the work can be
-linked without the Library, or if the work is itself a library. The
-threshold for this to be true is not precisely defined by law.
-
- If such an object file uses only numerical parameters, data
-structure layouts and accessors, and small macros and small inline
-functions (ten lines or less in length), then the use of the object
-file is unrestricted, regardless of whether it is legally a derivative
-work. (Executables containing this object code plus portions of the
-Library will still fall under Section 6.)
-
- Otherwise, if the work is a derivative of the Library, you may
-distribute the object code for the work under the terms of Section 6.
-Any executables containing that work also fall under Section 6,
-whether or not they are linked directly with the Library itself.
-
- 6. As an exception to the Sections above, you may also combine or
-link a "work that uses the Library" with the Library to produce a
-work containing portions of the Library, and distribute that work
-under terms of your choice, provided that the terms permit
-modification of the work for the customer's own use and reverse
-engineering for debugging such modifications.
-
- You must give prominent notice with each copy of the work that the
-Library is used in it and that the Library and its use are covered by
-this License. You must supply a copy of this License. If the work
-during execution displays copyright notices, you must include the
-copyright notice for the Library among them, as well as a reference
-directing the user to the copy of this License. Also, you must do one
-of these things:
-
- a) Accompany the work with the complete corresponding
- machine-readable source code for the Library including whatever
- changes were used in the work (which must be distributed under
- Sections 1 and 2 above); and, if the work is an executable linked
- with the Library, with the complete machine-readable "work that
- uses the Library", as object code and/or source code, so that the
- user can modify the Library and then relink to produce a modified
- executable containing the modified Library. (It is understood
- that the user who changes the contents of definitions files in the
- Library will not necessarily be able to recompile the application
- to use the modified definitions.)
-
- b) Use a suitable shared library mechanism for linking with the
- Library. A suitable mechanism is one that (1) uses at run time a
- copy of the library already present on the user's computer system,
- rather than copying library functions into the executable, and (2)
- will operate properly with a modified version of the library, if
- the user installs one, as long as the modified version is
- interface-compatible with the version that the work was made with.
-
- c) Accompany the work with a written offer, valid for at
- least three years, to give the same user the materials
- specified in Subsection 6a, above, for a charge no more
- than the cost of performing this distribution.
-
- d) If distribution of the work is made by offering access to copy
- from a designated place, offer equivalent access to copy the above
- specified materials from the same place.
-
- e) Verify that the user has already received a copy of these
- materials or that you have already sent this user a copy.
-
- For an executable, the required form of the "work that uses the
-Library" must include any data and utility programs needed for
-reproducing the executable from it. However, as a special exception,
-the materials to be distributed need not include anything that is
-normally distributed (in either source or binary form) with the major
-components (compiler, kernel, and so on) of the operating system on
-which the executable runs, unless that component itself accompanies
-the executable.
-
- It may happen that this requirement contradicts the license
-restrictions of other proprietary libraries that do not normally
-accompany the operating system. Such a contradiction means you cannot
-use both them and the Library together in an executable that you
-distribute.
-
- 7. You may place library facilities that are a work based on the
-Library side-by-side in a single library together with other library
-facilities not covered by this License, and distribute such a combined
-library, provided that the separate distribution of the work based on
-the Library and of the other library facilities is otherwise
-permitted, and provided that you do these two things:
-
- a) Accompany the combined library with a copy of the same work
- based on the Library, uncombined with any other library
- facilities. This must be distributed under the terms of the
- Sections above.
-
- b) Give prominent notice with the combined library of the fact
- that part of it is a work based on the Library, and explaining
- where to find the accompanying uncombined form of the same work.
-
- 8. You may not copy, modify, sublicense, link with, or distribute
-the Library except as expressly provided under this License. Any
-attempt otherwise to copy, modify, sublicense, link with, or
-distribute the Library is void, and will automatically terminate your
-rights under this License. However, parties who have received copies,
-or rights, from you under this License will not have their licenses
-terminated so long as such parties remain in full compliance.
-
- 9. You are not required to accept this License, since you have not
-signed it. However, nothing else grants you permission to modify or
-distribute the Library or its derivative works. These actions are
-prohibited by law if you do not accept this License. Therefore, by
-modifying or distributing the Library (or any work based on the
-Library), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Library or works based on it.
-
- 10. Each time you redistribute the Library (or any work based on the
-Library), the recipient automatically receives a license from the
-original licensor to copy, distribute, link with or modify the Library
-subject to these terms and conditions. You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties with
-this License.
-
- 11. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License. If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Library at all. For example, if a patent
-license would not permit royalty-free redistribution of the Library by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Library.
-
-If any portion of this section is held invalid or unenforceable under any
-particular circumstance, the balance of the section is intended to apply,
-and the section as a whole is intended to apply in other circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system which is
-implemented by public license practices. Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
- 12. If the distribution and/or use of the Library is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Library under this License may add
-an explicit geographical distribution limitation excluding those countries,
-so that distribution is permitted only in or among countries not thus
-excluded. In such case, this License incorporates the limitation as if
-written in the body of this License.
-
- 13. The Free Software Foundation may publish revised and/or new
-versions of the Lesser General Public License from time to time.
-Such new versions will be similar in spirit to the present version,
-but may differ in detail to address new problems or concerns.
-
-Each version is given a distinguishing version number. If the Library
-specifies a version number of this License which applies to it and
-"any later version", you have the option of following the terms and
-conditions either of that version or of any later version published by
-the Free Software Foundation. If the Library does not specify a
-license version number, you may choose any version ever published by
-the Free Software Foundation.
-
- 14. If you wish to incorporate parts of the Library into other free
-programs whose distribution conditions are incompatible with these,
-write to the author to ask for permission. For software which is
-copyrighted by the Free Software Foundation, write to the Free
-Software Foundation; we sometimes make exceptions for this. Our
-decision will be guided by the two goals of preserving the free status
-of all derivatives of our free software and of promoting the sharing
-and reuse of software generally.
-
- NO WARRANTY
-
- 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
-WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
-EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
-OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
-KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
-LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
-THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
-
- 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
-WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
-AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
-FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
-CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
-LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
-RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
-FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
-SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
-DAMAGES.
-
- END OF TERMS AND CONDITIONS
-
- How to Apply These Terms to Your New Libraries
-
- If you develop a new library, and you want it to be of the greatest
-possible use to the public, we recommend making it free software that
-everyone can redistribute and change. You can do so by permitting
-redistribution under these terms (or, alternatively, under the terms of the
-ordinary General Public License).
-
- To apply these terms, attach the following notices to the library. It is
-safest to attach them to the start of each source file to most effectively
-convey the exclusion of warranty; and each file should have at least the
-"copyright" line and a pointer to where the full notice is found.
-
- <one line to give the library's name and a brief idea of what it does.>
- Copyright (C) <year> <name of author>
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
-Also add information on how to contact you by electronic and paper mail.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a "copyright disclaimer" for the library, if
-necessary. Here is a sample; alter the names:
-
- Yoyodyne, Inc., hereby disclaims all copyright interest in the
- library `Frob' (a library for tweaking knobs) written by James Random Hacker.
-
- <signature of Ty Coon>, 1 April 1990
- Ty Coon, President of Vice
-
-That's all there is to it!
-
-
diff --git a/admin/survey/excel/PHPExcel/Shared/PCLZip/pclzip.lib.php b/admin/survey/excel/PHPExcel/Shared/PCLZip/pclzip.lib.php
deleted file mode 100644
index 4bf05a5..0000000
--- a/admin/survey/excel/PHPExcel/Shared/PCLZip/pclzip.lib.php
+++ /dev/null
@@ -1,5694 +0,0 @@
-<?php
-// --------------------------------------------------------------------------------
-// PhpConcept Library - Zip Module 2.8.2
-// --------------------------------------------------------------------------------
-// License GNU/LGPL - Vincent Blavet - August 2009
-// http://www.phpconcept.net
-// --------------------------------------------------------------------------------
-//
-// Presentation :
-// PclZip is a PHP library that manage ZIP archives.
-// So far tests show that archives generated by PclZip are readable by
-// WinZip application and other tools.
-//
-// Description :
-// See readme.txt and http://www.phpconcept.net
-//
-// Warning :
-// This library and the associated files are non commercial, non professional
-// work.
-// It should not have unexpected results. However if any damage is caused by
-// this software the author can not be responsible.
-// The use of this software is at the risk of the user.
-//
-// --------------------------------------------------------------------------------
-// $Id: pclzip.lib.php,v 1.60 2009/09/30 21:01:04 vblavet Exp $
-// --------------------------------------------------------------------------------
-
- // ----- Constants
- if (!defined('PCLZIP_READ_BLOCK_SIZE')) {
- define( 'PCLZIP_READ_BLOCK_SIZE', 2048 );
- }
-
- // ----- File list separator
- // In version 1.x of PclZip, the separator for file list is a space
- // (which is not a very smart choice, specifically for windows paths !).
- // A better separator should be a comma (,). This constant gives you the
- // abilty to change that.
- // However notice that changing this value, may have impact on existing
- // scripts, using space separated filenames.
- // Recommanded values for compatibility with older versions :
- //define( 'PCLZIP_SEPARATOR', ' ' );
- // Recommanded values for smart separation of filenames.
- if (!defined('PCLZIP_SEPARATOR')) {
- define( 'PCLZIP_SEPARATOR', ',' );
- }
-
- // ----- Error configuration
- // 0 : PclZip Class integrated error handling
- // 1 : PclError external library error handling. By enabling this
- // you must ensure that you have included PclError library.
- // [2,...] : reserved for futur use
- if (!defined('PCLZIP_ERROR_EXTERNAL')) {
- define( 'PCLZIP_ERROR_EXTERNAL', 0 );
- }
-
- // ----- Optional static temporary directory
- // By default temporary files are generated in the script current
- // path.
- // If defined :
- // - MUST BE terminated by a '/'.
- // - MUST be a valid, already created directory
- // Samples :
- // define( 'PCLZIP_TEMPORARY_DIR', '/temp/' );
- // define( 'PCLZIP_TEMPORARY_DIR', 'C:/Temp/' );
- if (!defined('PCLZIP_TEMPORARY_DIR')) {
- define( 'PCLZIP_TEMPORARY_DIR', '' );
- }
-
- // ----- Optional threshold ratio for use of temporary files
- // Pclzip sense the size of the file to add/extract and decide to
- // use or not temporary file. The algorythm is looking for
- // memory_limit of PHP and apply a ratio.
- // threshold = memory_limit * ratio.
- // Recommended values are under 0.5. Default 0.47.
- // Samples :
- // define( 'PCLZIP_TEMPORARY_FILE_RATIO', 0.5 );
- if (!defined('PCLZIP_TEMPORARY_FILE_RATIO')) {
- define( 'PCLZIP_TEMPORARY_FILE_RATIO', 0.47 );
- }
-
-// --------------------------------------------------------------------------------
-// ***** UNDER THIS LINE NOTHING NEEDS TO BE MODIFIED *****
-// --------------------------------------------------------------------------------
-
- // ----- Global variables
- $g_pclzip_version = "2.8.2";
-
- // ----- Error codes
- // -1 : Unable to open file in binary write mode
- // -2 : Unable to open file in binary read mode
- // -3 : Invalid parameters
- // -4 : File does not exist
- // -5 : Filename is too long (max. 255)
- // -6 : Not a valid zip file
- // -7 : Invalid extracted file size
- // -8 : Unable to create directory
- // -9 : Invalid archive extension
- // -10 : Invalid archive format
- // -11 : Unable to delete file (unlink)
- // -12 : Unable to rename file (rename)
- // -13 : Invalid header checksum
- // -14 : Invalid archive size
- define( 'PCLZIP_ERR_USER_ABORTED', 2 );
- define( 'PCLZIP_ERR_NO_ERROR', 0 );
- define( 'PCLZIP_ERR_WRITE_OPEN_FAIL', -1 );
- define( 'PCLZIP_ERR_READ_OPEN_FAIL', -2 );
- define( 'PCLZIP_ERR_INVALID_PARAMETER', -3 );
- define( 'PCLZIP_ERR_MISSING_FILE', -4 );
- define( 'PCLZIP_ERR_FILENAME_TOO_LONG', -5 );
- define( 'PCLZIP_ERR_INVALID_ZIP', -6 );
- define( 'PCLZIP_ERR_BAD_EXTRACTED_FILE', -7 );
- define( 'PCLZIP_ERR_DIR_CREATE_FAIL', -8 );
- define( 'PCLZIP_ERR_BAD_EXTENSION', -9 );
- define( 'PCLZIP_ERR_BAD_FORMAT', -10 );
- define( 'PCLZIP_ERR_DELETE_FILE_FAIL', -11 );
- define( 'PCLZIP_ERR_RENAME_FILE_FAIL', -12 );
- define( 'PCLZIP_ERR_BAD_CHECKSUM', -13 );
- define( 'PCLZIP_ERR_INVALID_ARCHIVE_ZIP', -14 );
- define( 'PCLZIP_ERR_MISSING_OPTION_VALUE', -15 );
- define( 'PCLZIP_ERR_INVALID_OPTION_VALUE', -16 );
- define( 'PCLZIP_ERR_ALREADY_A_DIRECTORY', -17 );
- define( 'PCLZIP_ERR_UNSUPPORTED_COMPRESSION', -18 );
- define( 'PCLZIP_ERR_UNSUPPORTED_ENCRYPTION', -19 );
- define( 'PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE', -20 );
- define( 'PCLZIP_ERR_DIRECTORY_RESTRICTION', -21 );
-
- // ----- Options values
- define( 'PCLZIP_OPT_PATH', 77001 );
- define( 'PCLZIP_OPT_ADD_PATH', 77002 );
- define( 'PCLZIP_OPT_REMOVE_PATH', 77003 );
- define( 'PCLZIP_OPT_REMOVE_ALL_PATH', 77004 );
- define( 'PCLZIP_OPT_SET_CHMOD', 77005 );
- define( 'PCLZIP_OPT_EXTRACT_AS_STRING', 77006 );
- define( 'PCLZIP_OPT_NO_COMPRESSION', 77007 );
- define( 'PCLZIP_OPT_BY_NAME', 77008 );
- define( 'PCLZIP_OPT_BY_INDEX', 77009 );
- define( 'PCLZIP_OPT_BY_EREG', 77010 );
- define( 'PCLZIP_OPT_BY_PREG', 77011 );
- define( 'PCLZIP_OPT_COMMENT', 77012 );
- define( 'PCLZIP_OPT_ADD_COMMENT', 77013 );
- define( 'PCLZIP_OPT_PREPEND_COMMENT', 77014 );
- define( 'PCLZIP_OPT_EXTRACT_IN_OUTPUT', 77015 );
- define( 'PCLZIP_OPT_REPLACE_NEWER', 77016 );
- define( 'PCLZIP_OPT_STOP_ON_ERROR', 77017 );
- // Having big trouble with crypt. Need to multiply 2 long int
- // which is not correctly supported by PHP ...
- //define( 'PCLZIP_OPT_CRYPT', 77018 );
- define( 'PCLZIP_OPT_EXTRACT_DIR_RESTRICTION', 77019 );
- define( 'PCLZIP_OPT_TEMP_FILE_THRESHOLD', 77020 );
- define( 'PCLZIP_OPT_ADD_TEMP_FILE_THRESHOLD', 77020 ); // alias
- define( 'PCLZIP_OPT_TEMP_FILE_ON', 77021 );
- define( 'PCLZIP_OPT_ADD_TEMP_FILE_ON', 77021 ); // alias
- define( 'PCLZIP_OPT_TEMP_FILE_OFF', 77022 );
- define( 'PCLZIP_OPT_ADD_TEMP_FILE_OFF', 77022 ); // alias
-
- // ----- File description attributes
- define( 'PCLZIP_ATT_FILE_NAME', 79001 );
- define( 'PCLZIP_ATT_FILE_NEW_SHORT_NAME', 79002 );
- define( 'PCLZIP_ATT_FILE_NEW_FULL_NAME', 79003 );
- define( 'PCLZIP_ATT_FILE_MTIME', 79004 );
- define( 'PCLZIP_ATT_FILE_CONTENT', 79005 );
- define( 'PCLZIP_ATT_FILE_COMMENT', 79006 );
-
- // ----- Call backs values
- define( 'PCLZIP_CB_PRE_EXTRACT', 78001 );
- define( 'PCLZIP_CB_POST_EXTRACT', 78002 );
- define( 'PCLZIP_CB_PRE_ADD', 78003 );
- define( 'PCLZIP_CB_POST_ADD', 78004 );
- /* For futur use
- define( 'PCLZIP_CB_PRE_LIST', 78005 );
- define( 'PCLZIP_CB_POST_LIST', 78006 );
- define( 'PCLZIP_CB_PRE_DELETE', 78007 );
- define( 'PCLZIP_CB_POST_DELETE', 78008 );
- */
-
- // --------------------------------------------------------------------------------
- // Class : PclZip
- // Description :
- // PclZip is the class that represent a Zip archive.
- // The public methods allow the manipulation of the archive.
- // Attributes :
- // Attributes must not be accessed directly.
- // Methods :
- // PclZip() : Object creator
- // create() : Creates the Zip archive
- // listContent() : List the content of the Zip archive
- // extract() : Extract the content of the archive
- // properties() : List the properties of the archive
- // --------------------------------------------------------------------------------
- class PclZip
- {
- // ----- Filename of the zip file
- var $zipname = '';
-
- // ----- File descriptor of the zip file
- var $zip_fd = 0;
-
- // ----- Internal error handling
- var $error_code = 1;
- var $error_string = '';
-
- // ----- Current status of the magic_quotes_runtime
- // This value store the php configuration for magic_quotes
- // The class can then disable the magic_quotes and reset it after
- var $magic_quotes_status;
-
- // --------------------------------------------------------------------------------
- // Function : PclZip()
- // Description :
- // Creates a PclZip object and set the name of the associated Zip archive
- // filename.
- // Note that no real action is taken, if the archive does not exist it is not
- // created. Use create() for that.
- // --------------------------------------------------------------------------------
- function PclZip($p_zipname)
- {
-
- // ----- Tests the zlib
- if (!function_exists('gzopen'))
- {
- die('Abort '.basename(__FILE__).' : Missing zlib extensions');
- }
-
- // ----- Set the attributes
- $this->zipname = $p_zipname;
- $this->zip_fd = 0;
- $this->magic_quotes_status = -1;
-
- // ----- Return
- return;
- }
- // --------------------------------------------------------------------------------
-
- // --------------------------------------------------------------------------------
- // Function :
- // create($p_filelist, $p_add_dir="", $p_remove_dir="")
- // create($p_filelist, $p_option, $p_option_value, ...)
- // Description :
- // This method supports two different synopsis. The first one is historical.
- // This method creates a Zip Archive. The Zip file is created in the
- // filesystem. The files and directories indicated in $p_filelist
- // are added in the archive. See the parameters description for the
- // supported format of $p_filelist.
- // When a directory is in the list, the directory and its content is added
- // in the archive.
- // In this synopsis, the function takes an optional variable list of
- // options. See bellow the supported options.
- // Parameters :
- // $p_filelist : An array containing file or directory names, or
- // a string containing one filename or one directory name, or
- // a string containing a list of filenames and/or directory
- // names separated by spaces.
- // $p_add_dir : A path to add before the real path of the archived file,
- // in order to have it memorized in the archive.
- // $p_remove_dir : A path to remove from the real path of the file to archive,
- // in order to have a shorter path memorized in the archive.
- // When $p_add_dir and $p_remove_dir are set, $p_remove_dir
- // is removed first, before $p_add_dir is added.
- // Options :
- // PCLZIP_OPT_ADD_PATH :
- // PCLZIP_OPT_REMOVE_PATH :
- // PCLZIP_OPT_REMOVE_ALL_PATH :
- // PCLZIP_OPT_COMMENT :
- // PCLZIP_CB_PRE_ADD :
- // PCLZIP_CB_POST_ADD :
- // Return Values :
- // 0 on failure,
- // The list of the added files, with a status of the add action.
- // (see PclZip::listContent() for list entry format)
- // --------------------------------------------------------------------------------
- function create($p_filelist)
- {
- $v_result=1;
-
- // ----- Reset the error handler
- $this->privErrorReset();
-
- // ----- Set default values
- $v_options = array();
- $v_options[PCLZIP_OPT_NO_COMPRESSION] = FALSE;
-
- // ----- Look for variable options arguments
- $v_size = func_num_args();
-
- // ----- Look for arguments
- if ($v_size > 1) {
- // ----- Get the arguments
- $v_arg_list = func_get_args();
-
- // ----- Remove from the options list the first argument
- array_shift($v_arg_list);
- $v_size--;
-
- // ----- Look for first arg
- if ((is_integer($v_arg_list[0])) && ($v_arg_list[0] > 77000)) {
-
- // ----- Parse the options
- $v_result = $this->privParseOptions($v_arg_list, $v_size, $v_options,
- array (PCLZIP_OPT_REMOVE_PATH => 'optional',
- PCLZIP_OPT_REMOVE_ALL_PATH => 'optional',
- PCLZIP_OPT_ADD_PATH => 'optional',
- PCLZIP_CB_PRE_ADD => 'optional',
- PCLZIP_CB_POST_ADD => 'optional',
- PCLZIP_OPT_NO_COMPRESSION => 'optional',
- PCLZIP_OPT_COMMENT => 'optional',
- PCLZIP_OPT_TEMP_FILE_THRESHOLD => 'optional',
- PCLZIP_OPT_TEMP_FILE_ON => 'optional',
- PCLZIP_OPT_TEMP_FILE_OFF => 'optional'
- //, PCLZIP_OPT_CRYPT => 'optional'
- ));
- if ($v_result != 1) {
- return 0;
- }
- }
-
- // ----- Look for 2 args
- // Here we need to support the first historic synopsis of the
- // method.
- else {
-
- // ----- Get the first argument
- $v_options[PCLZIP_OPT_ADD_PATH] = $v_arg_list[0];
-
- // ----- Look for the optional second argument
- if ($v_size == 2) {
- $v_options[PCLZIP_OPT_REMOVE_PATH] = $v_arg_list[1];
- }
- else if ($v_size > 2) {
- PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER,
- "Invalid number / type of arguments");
- return 0;
- }
- }
- }
-
- // ----- Look for default option values
- $this->privOptionDefaultThreshold($v_options);
-
- // ----- Init
- $v_string_list = array();
- $v_att_list = array();
- $v_filedescr_list = array();
- $p_result_list = array();
-
- // ----- Look if the $p_filelist is really an array
- if (is_array($p_filelist)) {
-
- // ----- Look if the first element is also an array
- // This will mean that this is a file description entry
- if (isset($p_filelist[0]) && is_array($p_filelist[0])) {
- $v_att_list = $p_filelist;
- }
-
- // ----- The list is a list of string names
- else {
- $v_string_list = $p_filelist;
- }
- }
-
- // ----- Look if the $p_filelist is a string
- else if (is_string($p_filelist)) {
- // ----- Create a list from the string
- $v_string_list = explode(PCLZIP_SEPARATOR, $p_filelist);
- }
-
- // ----- Invalid variable type for $p_filelist
- else {
- PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid variable type p_filelist");
- return 0;
- }
-
- // ----- Reformat the string list
- if (sizeof($v_string_list) != 0) {
- foreach ($v_string_list as $v_string) {
- if ($v_string != '') {
- $v_att_list[][PCLZIP_ATT_FILE_NAME] = $v_string;
- }
- else {
- }
- }
- }
-
- // ----- For each file in the list check the attributes
- $v_supported_attributes
- = array ( PCLZIP_ATT_FILE_NAME => 'mandatory'
- ,PCLZIP_ATT_FILE_NEW_SHORT_NAME => 'optional'
- ,PCLZIP_ATT_FILE_NEW_FULL_NAME => 'optional'
- ,PCLZIP_ATT_FILE_MTIME => 'optional'
- ,PCLZIP_ATT_FILE_CONTENT => 'optional'
- ,PCLZIP_ATT_FILE_COMMENT => 'optional'
- );
- foreach ($v_att_list as $v_entry) {
- $v_result = $this->privFileDescrParseAtt($v_entry,
- $v_filedescr_list[],
- $v_options,
- $v_supported_attributes);
- if ($v_result != 1) {
- return 0;
- }
- }
-
- // ----- Expand the filelist (expand directories)
- $v_result = $this->privFileDescrExpand($v_filedescr_list, $v_options);
- if ($v_result != 1) {
- return 0;
- }
-
- // ----- Call the create fct
- $v_result = $this->privCreate($v_filedescr_list, $p_result_list, $v_options);
- if ($v_result != 1) {
- return 0;
- }
-
- // ----- Return
- return $p_result_list;
- }
- // --------------------------------------------------------------------------------
-
- // --------------------------------------------------------------------------------
- // Function :
- // add($p_filelist, $p_add_dir="", $p_remove_dir="")
- // add($p_filelist, $p_option, $p_option_value, ...)
- // Description :
- // This method supports two synopsis. The first one is historical.
- // This methods add the list of files in an existing archive.
- // If a file with the same name already exists, it is added at the end of the
- // archive, the first one is still present.
- // If the archive does not exist, it is created.
- // Parameters :
- // $p_filelist : An array containing file or directory names, or
- // a string containing one filename or one directory name, or
- // a string containing a list of filenames and/or directory
- // names separated by spaces.
- // $p_add_dir : A path to add before the real path of the archived file,
- // in order to have it memorized in the archive.
- // $p_remove_dir : A path to remove from the real path of the file to archive,
- // in order to have a shorter path memorized in the archive.
- // When $p_add_dir and $p_remove_dir are set, $p_remove_dir
- // is removed first, before $p_add_dir is added.
- // Options :
- // PCLZIP_OPT_ADD_PATH :
- // PCLZIP_OPT_REMOVE_PATH :
- // PCLZIP_OPT_REMOVE_ALL_PATH :
- // PCLZIP_OPT_COMMENT :
- // PCLZIP_OPT_ADD_COMMENT :
- // PCLZIP_OPT_PREPEND_COMMENT :
- // PCLZIP_CB_PRE_ADD :
- // PCLZIP_CB_POST_ADD :
- // Return Values :
- // 0 on failure,
- // The list of the added files, with a status of the add action.
- // (see PclZip::listContent() for list entry format)
- // --------------------------------------------------------------------------------
- function add($p_filelist)
- {
- $v_result=1;
-
- // ----- Reset the error handler
- $this->privErrorReset();
-
- // ----- Set default values
- $v_options = array();
- $v_options[PCLZIP_OPT_NO_COMPRESSION] = FALSE;
-
- // ----- Look for variable options arguments
- $v_size = func_num_args();
-
- // ----- Look for arguments
- if ($v_size > 1) {
- // ----- Get the arguments
- $v_arg_list = func_get_args();
-
- // ----- Remove form the options list the first argument
- array_shift($v_arg_list);
- $v_size--;
-
- // ----- Look for first arg
- if ((is_integer($v_arg_list[0])) && ($v_arg_list[0] > 77000)) {
-
- // ----- Parse the options
- $v_result = $this->privParseOptions($v_arg_list, $v_size, $v_options,
- array (PCLZIP_OPT_REMOVE_PATH => 'optional',
- PCLZIP_OPT_REMOVE_ALL_PATH => 'optional',
- PCLZIP_OPT_ADD_PATH => 'optional',
- PCLZIP_CB_PRE_ADD => 'optional',
- PCLZIP_CB_POST_ADD => 'optional',
- PCLZIP_OPT_NO_COMPRESSION => 'optional',
- PCLZIP_OPT_COMMENT => 'optional',
- PCLZIP_OPT_ADD_COMMENT => 'optional',
- PCLZIP_OPT_PREPEND_COMMENT => 'optional',
- PCLZIP_OPT_TEMP_FILE_THRESHOLD => 'optional',
- PCLZIP_OPT_TEMP_FILE_ON => 'optional',
- PCLZIP_OPT_TEMP_FILE_OFF => 'optional'
- //, PCLZIP_OPT_CRYPT => 'optional'
- ));
- if ($v_result != 1) {
- return 0;
- }
- }
-
- // ----- Look for 2 args
- // Here we need to support the first historic synopsis of the
- // method.
- else {
-
- // ----- Get the first argument
- $v_options[PCLZIP_OPT_ADD_PATH] = $v_add_path = $v_arg_list[0];
-
- // ----- Look for the optional second argument
- if ($v_size == 2) {
- $v_options[PCLZIP_OPT_REMOVE_PATH] = $v_arg_list[1];
- }
- else if ($v_size > 2) {
- // ----- Error log
- PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid number / type of arguments");
-
- // ----- Return
- return 0;
- }
- }
- }
-
- // ----- Look for default option values
- $this->privOptionDefaultThreshold($v_options);
-
- // ----- Init
- $v_string_list = array();
- $v_att_list = array();
- $v_filedescr_list = array();
- $p_result_list = array();
-
- // ----- Look if the $p_filelist is really an array
- if (is_array($p_filelist)) {
-
- // ----- Look if the first element is also an array
- // This will mean that this is a file description entry
- if (isset($p_filelist[0]) && is_array($p_filelist[0])) {
- $v_att_list = $p_filelist;
- }
-
- // ----- The list is a list of string names
- else {
- $v_string_list = $p_filelist;
- }
- }
-
- // ----- Look if the $p_filelist is a string
- else if (is_string($p_filelist)) {
- // ----- Create a list from the string
- $v_string_list = explode(PCLZIP_SEPARATOR, $p_filelist);
- }
-
- // ----- Invalid variable type for $p_filelist
- else {
- PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid variable type '".gettype($p_filelist)."' for p_filelist");
- return 0;
- }
-
- // ----- Reformat the string list
- if (sizeof($v_string_list) != 0) {
- foreach ($v_string_list as $v_string) {
- $v_att_list[][PCLZIP_ATT_FILE_NAME] = $v_string;
- }
- }
-
- // ----- For each file in the list check the attributes
- $v_supported_attributes
- = array ( PCLZIP_ATT_FILE_NAME => 'mandatory'
- ,PCLZIP_ATT_FILE_NEW_SHORT_NAME => 'optional'
- ,PCLZIP_ATT_FILE_NEW_FULL_NAME => 'optional'
- ,PCLZIP_ATT_FILE_MTIME => 'optional'
- ,PCLZIP_ATT_FILE_CONTENT => 'optional'
- ,PCLZIP_ATT_FILE_COMMENT => 'optional'
- );
- foreach ($v_att_list as $v_entry) {
- $v_result = $this->privFileDescrParseAtt($v_entry,
- $v_filedescr_list[],
- $v_options,
- $v_supported_attributes);
- if ($v_result != 1) {
- return 0;
- }
- }
-
- // ----- Expand the filelist (expand directories)
- $v_result = $this->privFileDescrExpand($v_filedescr_list, $v_options);
- if ($v_result != 1) {
- return 0;
- }
-
- // ----- Call the create fct
- $v_result = $this->privAdd($v_filedescr_list, $p_result_list, $v_options);
- if ($v_result != 1) {
- return 0;
- }
-
- // ----- Return
- return $p_result_list;
- }
- // --------------------------------------------------------------------------------
-
- // --------------------------------------------------------------------------------
- // Function : listContent()
- // Description :
- // This public method, gives the list of the files and directories, with their
- // properties.
- // The properties of each entries in the list are (used also in other functions) :
- // filename : Name of the file. For a create or add action it is the filename
- // given by the user. For an extract function it is the filename
- // of the extracted file.
- // stored_filename : Name of the file / directory stored in the archive.
- // size : Size of the stored file.
- // compressed_size : Size of the file's data compressed in the archive
- // (without the headers overhead)
- // mtime : Last known modification date of the file (UNIX timestamp)
- // comment : Comment associated with the file
- // folder : true | false
- // index : index of the file in the archive
- // status : status of the action (depending of the action) :
- // Values are :
- // ok : OK !
- // filtered : the file / dir is not extracted (filtered by user)
- // already_a_directory : the file can not be extracted because a
- // directory with the same name already exists
- // write_protected : the file can not be extracted because a file
- // with the same name already exists and is
- // write protected
- // newer_exist : the file was not extracted because a newer file exists
- // path_creation_fail : the file is not extracted because the folder
- // does not exist and can not be created
- // write_error : the file was not extracted because there was a
- // error while writing the file
- // read_error : the file was not extracted because there was a error
- // while reading the file
- // invalid_header : the file was not extracted because of an archive
- // format error (bad file header)
- // Note that each time a method can continue operating when there
- // is an action error on a file, the error is only logged in the file status.
- // Return Values :
- // 0 on an unrecoverable failure,
- // The list of the files in the archive.
- // --------------------------------------------------------------------------------
- function listContent()
- {
- $v_result=1;
-
- // ----- Reset the error handler
- $this->privErrorReset();
-
- // ----- Check archive
- if (!$this->privCheckFormat()) {
- return(0);
- }
-
- // ----- Call the extracting fct
- $p_list = array();
- if (($v_result = $this->privList($p_list)) != 1)
- {
- unset($p_list);
- return(0);
- }
-
- // ----- Return
- return $p_list;
- }
- // --------------------------------------------------------------------------------
-
- // --------------------------------------------------------------------------------
- // Function :
- // extract($p_path="./", $p_remove_path="")
- // extract([$p_option, $p_option_value, ...])
- // Description :
- // This method supports two synopsis. The first one is historical.
- // This method extract all the files / directories from the archive to the
- // folder indicated in $p_path.
- // If you want to ignore the 'root' part of path of the memorized files
- // you can indicate this in the optional $p_remove_path parameter.
- // By default, if a newer file with the same name already exists, the
- // file is not extracted.
- //
- // If both PCLZIP_OPT_PATH and PCLZIP_OPT_ADD_PATH aoptions
- // are used, the path indicated in PCLZIP_OPT_ADD_PATH is append
- // at the end of the path value of PCLZIP_OPT_PATH.
- // Parameters :
- // $p_path : Path where the files and directories are to be extracted
- // $p_remove_path : First part ('root' part) of the memorized path
- // (if any similar) to remove while extracting.
- // Options :
- // PCLZIP_OPT_PATH :
- // PCLZIP_OPT_ADD_PATH :
- // PCLZIP_OPT_REMOVE_PATH :
- // PCLZIP_OPT_REMOVE_ALL_PATH :
- // PCLZIP_CB_PRE_EXTRACT :
- // PCLZIP_CB_POST_EXTRACT :
- // Return Values :
- // 0 or a negative value on failure,
- // The list of the extracted files, with a status of the action.
- // (see PclZip::listContent() for list entry format)
- // --------------------------------------------------------------------------------
- function extract()
- {
- $v_result=1;
-
- // ----- Reset the error handler
- $this->privErrorReset();
-
- // ----- Check archive
- if (!$this->privCheckFormat()) {
- return(0);
- }
-
- // ----- Set default values
- $v_options = array();
-// $v_path = "./";
- $v_path = '';
- $v_remove_path = "";
- $v_remove_all_path = false;
-
- // ----- Look for variable options arguments
- $v_size = func_num_args();
-
- // ----- Default values for option
- $v_options[PCLZIP_OPT_EXTRACT_AS_STRING] = FALSE;
-
- // ----- Look for arguments
- if ($v_size > 0) {
- // ----- Get the arguments
- $v_arg_list = func_get_args();
-
- // ----- Look for first arg
- if ((is_integer($v_arg_list[0])) && ($v_arg_list[0] > 77000)) {
-
- // ----- Parse the options
- $v_result = $this->privParseOptions($v_arg_list, $v_size, $v_options,
- array (PCLZIP_OPT_PATH => 'optional',
- PCLZIP_OPT_REMOVE_PATH => 'optional',
- PCLZIP_OPT_REMOVE_ALL_PATH => 'optional',
- PCLZIP_OPT_ADD_PATH => 'optional',
- PCLZIP_CB_PRE_EXTRACT => 'optional',
- PCLZIP_CB_POST_EXTRACT => 'optional',
- PCLZIP_OPT_SET_CHMOD => 'optional',
- PCLZIP_OPT_BY_NAME => 'optional',
- PCLZIP_OPT_BY_EREG => 'optional',
- PCLZIP_OPT_BY_PREG => 'optional',
- PCLZIP_OPT_BY_INDEX => 'optional',
- PCLZIP_OPT_EXTRACT_AS_STRING => 'optional',
- PCLZIP_OPT_EXTRACT_IN_OUTPUT => 'optional',
- PCLZIP_OPT_REPLACE_NEWER => 'optional'
- ,PCLZIP_OPT_STOP_ON_ERROR => 'optional'
- ,PCLZIP_OPT_EXTRACT_DIR_RESTRICTION => 'optional',
- PCLZIP_OPT_TEMP_FILE_THRESHOLD => 'optional',
- PCLZIP_OPT_TEMP_FILE_ON => 'optional',
- PCLZIP_OPT_TEMP_FILE_OFF => 'optional'
- ));
- if ($v_result != 1) {
- return 0;
- }
-
- // ----- Set the arguments
- if (isset($v_options[PCLZIP_OPT_PATH])) {
- $v_path = $v_options[PCLZIP_OPT_PATH];
- }
- if (isset($v_options[PCLZIP_OPT_REMOVE_PATH])) {
- $v_remove_path = $v_options[PCLZIP_OPT_REMOVE_PATH];
- }
- if (isset($v_options[PCLZIP_OPT_REMOVE_ALL_PATH])) {
- $v_remove_all_path = $v_options[PCLZIP_OPT_REMOVE_ALL_PATH];
- }
- if (isset($v_options[PCLZIP_OPT_ADD_PATH])) {
- // ----- Check for '/' in last path char
- if ((strlen($v_path) > 0) && (substr($v_path, -1) != '/')) {
- $v_path .= '/';
- }
- $v_path .= $v_options[PCLZIP_OPT_ADD_PATH];
- }
- }
-
- // ----- Look for 2 args
- // Here we need to support the first historic synopsis of the
- // method.
- else {
-
- // ----- Get the first argument
- $v_path = $v_arg_list[0];
-
- // ----- Look for the optional second argument
- if ($v_size == 2) {
- $v_remove_path = $v_arg_list[1];
- }
- else if ($v_size > 2) {
- // ----- Error log
- PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid number / type of arguments");
-
- // ----- Return
- return 0;
- }
- }
- }
-
- // ----- Look for default option values
- $this->privOptionDefaultThreshold($v_options);
-
- // ----- Trace
-
- // ----- Call the extracting fct
- $p_list = array();
- $v_result = $this->privExtractByRule($p_list, $v_path, $v_remove_path,
- $v_remove_all_path, $v_options);
- if ($v_result < 1) {
- unset($p_list);
- return(0);
- }
-
- // ----- Return
- return $p_list;
- }
- // --------------------------------------------------------------------------------
-
-
- // --------------------------------------------------------------------------------
- // Function :
- // extractByIndex($p_index, $p_path="./", $p_remove_path="")
- // extractByIndex($p_index, [$p_option, $p_option_value, ...])
- // Description :
- // This method supports two synopsis. The first one is historical.
- // This method is doing a partial extract of the archive.
- // The extracted files or folders are identified by their index in the
- // archive (from 0 to n).
- // Note that if the index identify a folder, only the folder entry is
- // extracted, not all the files included in the archive.
- // Parameters :
- // $p_index : A single index (integer) or a string of indexes of files to
- // extract. The form of the string is "0,4-6,8-12" with only numbers
- // and '-' for range or ',' to separate ranges. No spaces or ';'
- // are allowed.
- // $p_path : Path where the files and directories are to be extracted
- // $p_remove_path : First part ('root' part) of the memorized path
- // (if any similar) to remove while extracting.
- // Options :
- // PCLZIP_OPT_PATH :
- // PCLZIP_OPT_ADD_PATH :
- // PCLZIP_OPT_REMOVE_PATH :
- // PCLZIP_OPT_REMOVE_ALL_PATH :
- // PCLZIP_OPT_EXTRACT_AS_STRING : The files are extracted as strings and
- // not as files.
- // The resulting content is in a new field 'content' in the file
- // structure.
- // This option must be used alone (any other options are ignored).
- // PCLZIP_CB_PRE_EXTRACT :
- // PCLZIP_CB_POST_EXTRACT :
- // Return Values :
- // 0 on failure,
- // The list of the extracted files, with a status of the action.
- // (see PclZip::listContent() for list entry format)
- // --------------------------------------------------------------------------------
- //function extractByIndex($p_index, options...)
- function extractByIndex($p_index)
- {
- $v_result=1;
-
- // ----- Reset the error handler
- $this->privErrorReset();
-
- // ----- Check archive
- if (!$this->privCheckFormat()) {
- return(0);
- }
-
- // ----- Set default values
- $v_options = array();
-// $v_path = "./";
- $v_path = '';
- $v_remove_path = "";
- $v_remove_all_path = false;
-
- // ----- Look for variable options arguments
- $v_size = func_num_args();
-
- // ----- Default values for option
- $v_options[PCLZIP_OPT_EXTRACT_AS_STRING] = FALSE;
-
- // ----- Look for arguments
- if ($v_size > 1) {
- // ----- Get the arguments
- $v_arg_list = func_get_args();
-
- // ----- Remove form the options list the first argument
- array_shift($v_arg_list);
- $v_size--;
-
- // ----- Look for first arg
- if ((is_integer($v_arg_list[0])) && ($v_arg_list[0] > 77000)) {
-
- // ----- Parse the options
- $v_result = $this->privParseOptions($v_arg_list, $v_size, $v_options,
- array (PCLZIP_OPT_PATH => 'optional',
- PCLZIP_OPT_REMOVE_PATH => 'optional',
- PCLZIP_OPT_REMOVE_ALL_PATH => 'optional',
- PCLZIP_OPT_EXTRACT_AS_STRING => 'optional',
- PCLZIP_OPT_ADD_PATH => 'optional',
- PCLZIP_CB_PRE_EXTRACT => 'optional',
- PCLZIP_CB_POST_EXTRACT => 'optional',
- PCLZIP_OPT_SET_CHMOD => 'optional',
- PCLZIP_OPT_REPLACE_NEWER => 'optional'
- ,PCLZIP_OPT_STOP_ON_ERROR => 'optional'
- ,PCLZIP_OPT_EXTRACT_DIR_RESTRICTION => 'optional',
- PCLZIP_OPT_TEMP_FILE_THRESHOLD => 'optional',
- PCLZIP_OPT_TEMP_FILE_ON => 'optional',
- PCLZIP_OPT_TEMP_FILE_OFF => 'optional'
- ));
- if ($v_result != 1) {
- return 0;
- }
-
- // ----- Set the arguments
- if (isset($v_options[PCLZIP_OPT_PATH])) {
- $v_path = $v_options[PCLZIP_OPT_PATH];
- }
- if (isset($v_options[PCLZIP_OPT_REMOVE_PATH])) {
- $v_remove_path = $v_options[PCLZIP_OPT_REMOVE_PATH];
- }
- if (isset($v_options[PCLZIP_OPT_REMOVE_ALL_PATH])) {
- $v_remove_all_path = $v_options[PCLZIP_OPT_REMOVE_ALL_PATH];
- }
- if (isset($v_options[PCLZIP_OPT_ADD_PATH])) {
- // ----- Check for '/' in last path char
- if ((strlen($v_path) > 0) && (substr($v_path, -1) != '/')) {
- $v_path .= '/';
- }
- $v_path .= $v_options[PCLZIP_OPT_ADD_PATH];
- }
- if (!isset($v_options[PCLZIP_OPT_EXTRACT_AS_STRING])) {
- $v_options[PCLZIP_OPT_EXTRACT_AS_STRING] = FALSE;
- }
- else {
- }
- }
-
- // ----- Look for 2 args
- // Here we need to support the first historic synopsis of the
- // method.
- else {
-
- // ----- Get the first argument
- $v_path = $v_arg_list[0];
-
- // ----- Look for the optional second argument
- if ($v_size == 2) {
- $v_remove_path = $v_arg_list[1];
- }
- else if ($v_size > 2) {
- // ----- Error log
- PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid number / type of arguments");
-
- // ----- Return
- return 0;
- }
- }
- }
-
- // ----- Trace
-
- // ----- Trick
- // Here I want to reuse extractByRule(), so I need to parse the $p_index
- // with privParseOptions()
- $v_arg_trick = array (PCLZIP_OPT_BY_INDEX, $p_index);
- $v_options_trick = array();
- $v_result = $this->privParseOptions($v_arg_trick, sizeof($v_arg_trick), $v_options_trick,
- array (PCLZIP_OPT_BY_INDEX => 'optional' ));
- if ($v_result != 1) {
- return 0;
- }
- $v_options[PCLZIP_OPT_BY_INDEX] = $v_options_trick[PCLZIP_OPT_BY_INDEX];
-
- // ----- Look for default option values
- $this->privOptionDefaultThreshold($v_options);
-
- // ----- Call the extracting fct
- if (($v_result = $this->privExtractByRule($p_list, $v_path, $v_remove_path, $v_remove_all_path, $v_options)) < 1) {
- return(0);
- }
-
- // ----- Return
- return $p_list;
- }
- // --------------------------------------------------------------------------------
-
- // --------------------------------------------------------------------------------
- // Function :
- // delete([$p_option, $p_option_value, ...])
- // Description :
- // This method removes files from the archive.
- // If no parameters are given, then all the archive is emptied.
- // Parameters :
- // None or optional arguments.
- // Options :
- // PCLZIP_OPT_BY_INDEX :
- // PCLZIP_OPT_BY_NAME :
- // PCLZIP_OPT_BY_EREG :
- // PCLZIP_OPT_BY_PREG :
- // Return Values :
- // 0 on failure,
- // The list of the files which are still present in the archive.
- // (see PclZip::listContent() for list entry format)
- // --------------------------------------------------------------------------------
- function delete()
- {
- $v_result=1;
-
- // ----- Reset the error handler
- $this->privErrorReset();
-
- // ----- Check archive
- if (!$this->privCheckFormat()) {
- return(0);
- }
-
- // ----- Set default values
- $v_options = array();
-
- // ----- Look for variable options arguments
- $v_size = func_num_args();
-
- // ----- Look for arguments
- if ($v_size > 0) {
- // ----- Get the arguments
- $v_arg_list = func_get_args();
-
- // ----- Parse the options
- $v_result = $this->privParseOptions($v_arg_list, $v_size, $v_options,
- array (PCLZIP_OPT_BY_NAME => 'optional',
- PCLZIP_OPT_BY_EREG => 'optional',
- PCLZIP_OPT_BY_PREG => 'optional',
- PCLZIP_OPT_BY_INDEX => 'optional' ));
- if ($v_result != 1) {
- return 0;
- }
- }
-
- // ----- Magic quotes trick
- $this->privDisableMagicQuotes();
-
- // ----- Call the delete fct
- $v_list = array();
- if (($v_result = $this->privDeleteByRule($v_list, $v_options)) != 1) {
- $this->privSwapBackMagicQuotes();
- unset($v_list);
- return(0);
- }
-
- // ----- Magic quotes trick
- $this->privSwapBackMagicQuotes();
-
- // ----- Return
- return $v_list;
- }
- // --------------------------------------------------------------------------------
-
- // --------------------------------------------------------------------------------
- // Function : deleteByIndex()
- // Description :
- // ***** Deprecated *****
- // delete(PCLZIP_OPT_BY_INDEX, $p_index) should be prefered.
- // --------------------------------------------------------------------------------
- function deleteByIndex($p_index)
- {
-
- $p_list = $this->delete(PCLZIP_OPT_BY_INDEX, $p_index);
-
- // ----- Return
- return $p_list;
- }
- // --------------------------------------------------------------------------------
-
- // --------------------------------------------------------------------------------
- // Function : properties()
- // Description :
- // This method gives the properties of the archive.
- // The properties are :
- // nb : Number of files in the archive
- // comment : Comment associated with the archive file
- // status : not_exist, ok
- // Parameters :
- // None
- // Return Values :
- // 0 on failure,
- // An array with the archive properties.
- // --------------------------------------------------------------------------------
- function properties()
- {
-
- // ----- Reset the error handler
- $this->privErrorReset();
-
- // ----- Magic quotes trick
- $this->privDisableMagicQuotes();
-
- // ----- Check archive
- if (!$this->privCheckFormat()) {
- $this->privSwapBackMagicQuotes();
- return(0);
- }
-
- // ----- Default properties
- $v_prop = array();
- $v_prop['comment'] = '';
- $v_prop['nb'] = 0;
- $v_prop['status'] = 'not_exist';
-
- // ----- Look if file exists
- if (@is_file($this->zipname))
- {
- // ----- Open the zip file
- if (($this->zip_fd = @fopen($this->zipname, 'rb')) == 0)
- {
- $this->privSwapBackMagicQuotes();
-
- // ----- Error log
- PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open archive \''.$this->zipname.'\' in binary read mode');
-
- // ----- Return
- return 0;
- }
-
- // ----- Read the central directory informations
- $v_central_dir = array();
- if (($v_result = $this->privReadEndCentralDir($v_central_dir)) != 1)
- {
- $this->privSwapBackMagicQuotes();
- return 0;
- }
-
- // ----- Close the zip file
- $this->privCloseFd();
-
- // ----- Set the user attributes
- $v_prop['comment'] = $v_central_dir['comment'];
- $v_prop['nb'] = $v_central_dir['entries'];
- $v_prop['status'] = 'ok';
- }
-
- // ----- Magic quotes trick
- $this->privSwapBackMagicQuotes();
-
- // ----- Return
- return $v_prop;
- }
- // --------------------------------------------------------------------------------
-
- // --------------------------------------------------------------------------------
- // Function : duplicate()
- // Description :
- // This method creates an archive by copying the content of an other one. If
- // the archive already exist, it is replaced by the new one without any warning.
- // Parameters :
- // $p_archive : The filename of a valid archive, or
- // a valid PclZip object.
- // Return Values :
- // 1 on success.
- // 0 or a negative value on error (error code).
- // --------------------------------------------------------------------------------
- function duplicate($p_archive)
- {
- $v_result = 1;
-
- // ----- Reset the error handler
- $this->privErrorReset();
-
- // ----- Look if the $p_archive is a PclZip object
- if ((is_object($p_archive)) && (get_class($p_archive) == 'pclzip'))
- {
-
- // ----- Duplicate the archive
- $v_result = $this->privDuplicate($p_archive->zipname);
- }
-
- // ----- Look if the $p_archive is a string (so a filename)
- else if (is_string($p_archive))
- {
-
- // ----- Check that $p_archive is a valid zip file
- // TBC : Should also check the archive format
- if (!is_file($p_archive)) {
- // ----- Error log
- PclZip::privErrorLog(PCLZIP_ERR_MISSING_FILE, "No file with filename '".$p_archive."'");
- $v_result = PCLZIP_ERR_MISSING_FILE;
- }
- else {
- // ----- Duplicate the archive
- $v_result = $this->privDuplicate($p_archive);
- }
- }
-
- // ----- Invalid variable
- else
- {
- // ----- Error log
- PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid variable type p_archive_to_add");
- $v_result = PCLZIP_ERR_INVALID_PARAMETER;
- }
-
- // ----- Return
- return $v_result;
- }
- // --------------------------------------------------------------------------------
-
- // --------------------------------------------------------------------------------
- // Function : merge()
- // Description :
- // This method merge the $p_archive_to_add archive at the end of the current
- // one ($this).
- // If the archive ($this) does not exist, the merge becomes a duplicate.
- // If the $p_archive_to_add archive does not exist, the merge is a success.
- // Parameters :
- // $p_archive_to_add : It can be directly the filename of a valid zip archive,
- // or a PclZip object archive.
- // Return Values :
- // 1 on success,
- // 0 or negative values on error (see below).
- // --------------------------------------------------------------------------------
- function merge($p_archive_to_add)
- {
- $v_result = 1;
-
- // ----- Reset the error handler
- $this->privErrorReset();
-
- // ----- Check archive
- if (!$this->privCheckFormat()) {
- return(0);
- }
-
- // ----- Look if the $p_archive_to_add is a PclZip object
- if ((is_object($p_archive_to_add)) && (get_class($p_archive_to_add) == 'pclzip'))
- {
-
- // ----- Merge the archive
- $v_result = $this->privMerge($p_archive_to_add);
- }
-
- // ----- Look if the $p_archive_to_add is a string (so a filename)
- else if (is_string($p_archive_to_add))
- {
-
- // ----- Create a temporary archive
- $v_object_archive = new PclZip($p_archive_to_add);
-
- // ----- Merge the archive
- $v_result = $this->privMerge($v_object_archive);
- }
-
- // ----- Invalid variable
- else
- {
- // ----- Error log
- PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid variable type p_archive_to_add");
- $v_result = PCLZIP_ERR_INVALID_PARAMETER;
- }
-
- // ----- Return
- return $v_result;
- }
- // --------------------------------------------------------------------------------
-
-
-
- // --------------------------------------------------------------------------------
- // Function : errorCode()
- // Description :
- // Parameters :
- // --------------------------------------------------------------------------------
- function errorCode()
- {
- if (PCLZIP_ERROR_EXTERNAL == 1) {
- return(PclErrorCode());
- }
- else {
- return($this->error_code);
- }
- }
- // --------------------------------------------------------------------------------
-
- // --------------------------------------------------------------------------------
- // Function : errorName()
- // Description :
- // Parameters :
- // --------------------------------------------------------------------------------
- function errorName($p_with_code=false)
- {
- $v_name = array ( PCLZIP_ERR_NO_ERROR => 'PCLZIP_ERR_NO_ERROR',
- PCLZIP_ERR_WRITE_OPEN_FAIL => 'PCLZIP_ERR_WRITE_OPEN_FAIL',
- PCLZIP_ERR_READ_OPEN_FAIL => 'PCLZIP_ERR_READ_OPEN_FAIL',
- PCLZIP_ERR_INVALID_PARAMETER => 'PCLZIP_ERR_INVALID_PARAMETER',
- PCLZIP_ERR_MISSING_FILE => 'PCLZIP_ERR_MISSING_FILE',
- PCLZIP_ERR_FILENAME_TOO_LONG => 'PCLZIP_ERR_FILENAME_TOO_LONG',
- PCLZIP_ERR_INVALID_ZIP => 'PCLZIP_ERR_INVALID_ZIP',
- PCLZIP_ERR_BAD_EXTRACTED_FILE => 'PCLZIP_ERR_BAD_EXTRACTED_FILE',
- PCLZIP_ERR_DIR_CREATE_FAIL => 'PCLZIP_ERR_DIR_CREATE_FAIL',
- PCLZIP_ERR_BAD_EXTENSION => 'PCLZIP_ERR_BAD_EXTENSION',
- PCLZIP_ERR_BAD_FORMAT => 'PCLZIP_ERR_BAD_FORMAT',
- PCLZIP_ERR_DELETE_FILE_FAIL => 'PCLZIP_ERR_DELETE_FILE_FAIL',
- PCLZIP_ERR_RENAME_FILE_FAIL => 'PCLZIP_ERR_RENAME_FILE_FAIL',
- PCLZIP_ERR_BAD_CHECKSUM => 'PCLZIP_ERR_BAD_CHECKSUM',
- PCLZIP_ERR_INVALID_ARCHIVE_ZIP => 'PCLZIP_ERR_INVALID_ARCHIVE_ZIP',
- PCLZIP_ERR_MISSING_OPTION_VALUE => 'PCLZIP_ERR_MISSING_OPTION_VALUE',
- PCLZIP_ERR_INVALID_OPTION_VALUE => 'PCLZIP_ERR_INVALID_OPTION_VALUE',
- PCLZIP_ERR_UNSUPPORTED_COMPRESSION => 'PCLZIP_ERR_UNSUPPORTED_COMPRESSION',
- PCLZIP_ERR_UNSUPPORTED_ENCRYPTION => 'PCLZIP_ERR_UNSUPPORTED_ENCRYPTION'
- ,PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE => 'PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE'
- ,PCLZIP_ERR_DIRECTORY_RESTRICTION => 'PCLZIP_ERR_DIRECTORY_RESTRICTION'
- );
-
- if (isset($v_name[$this->error_code])) {
- $v_value = $v_name[$this->error_code];
- }
- else {
- $v_value = 'NoName';
- }
-
- if ($p_with_code) {
- return($v_value.' ('.$this->error_code.')');
- }
- else {
- return($v_value);
- }
- }
- // --------------------------------------------------------------------------------
-
- // --------------------------------------------------------------------------------
- // Function : errorInfo()
- // Description :
- // Parameters :
- // --------------------------------------------------------------------------------
- function errorInfo($p_full=false)
- {
- if (PCLZIP_ERROR_EXTERNAL == 1) {
- return(PclErrorString());
- }
- else {
- if ($p_full) {
- return($this->errorName(true)." : ".$this->error_string);
- }
- else {
- return($this->error_string." [code ".$this->error_code."]");
- }
- }
- }
- // --------------------------------------------------------------------------------
-
-
-// --------------------------------------------------------------------------------
-// ***** UNDER THIS LINE ARE DEFINED PRIVATE INTERNAL FUNCTIONS *****
-// ***** *****
-// ***** THESES FUNCTIONS MUST NOT BE USED DIRECTLY *****
-// --------------------------------------------------------------------------------
-
-
-
- // --------------------------------------------------------------------------------
- // Function : privCheckFormat()
- // Description :
- // This method check that the archive exists and is a valid zip archive.
- // Several level of check exists. (futur)
- // Parameters :
- // $p_level : Level of check. Default 0.
- // 0 : Check the first bytes (magic codes) (default value))
- // 1 : 0 + Check the central directory (futur)
- // 2 : 1 + Check each file header (futur)
- // Return Values :
- // true on success,
- // false on error, the error code is set.
- // --------------------------------------------------------------------------------
- function privCheckFormat($p_level=0)
- {
- $v_result = true;
-
- // ----- Reset the file system cache
- clearstatcache();
-
- // ----- Reset the error handler
- $this->privErrorReset();
-
- // ----- Look if the file exits
- if (!is_file($this->zipname)) {
- // ----- Error log
- PclZip::privErrorLog(PCLZIP_ERR_MISSING_FILE, "Missing archive file '".$this->zipname."'");
- return(false);
- }
-
- // ----- Check that the file is readeable
- if (!is_readable($this->zipname)) {
- // ----- Error log
- PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, "Unable to read archive '".$this->zipname."'");
- return(false);
- }
-
- // ----- Check the magic code
- // TBC
-
- // ----- Check the central header
- // TBC
-
- // ----- Check each file header
- // TBC
-
- // ----- Return
- return $v_result;
- }
- // --------------------------------------------------------------------------------
-
- // --------------------------------------------------------------------------------
- // Function : privParseOptions()
- // Description :
- // This internal methods reads the variable list of arguments ($p_options_list,
- // $p_size) and generate an array with the options and values ($v_result_list).
- // $v_requested_options contains the options that can be present and those that
- // must be present.
- // $v_requested_options is an array, with the option value as key, and 'optional',
- // or 'mandatory' as value.
- // Parameters :
- // See above.
- // Return Values :
- // 1 on success.
- // 0 on failure.
- // --------------------------------------------------------------------------------
- function privParseOptions(&$p_options_list, $p_size, &$v_result_list, $v_requested_options=false)
- {
- $v_result=1;
-
- // ----- Read the options
- $i=0;
- while ($i<$p_size) {
-
- // ----- Check if the option is supported
- if (!isset($v_requested_options[$p_options_list[$i]])) {
- // ----- Error log
- PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid optional parameter '".$p_options_list[$i]."' for this method");
-
- // ----- Return
- return PclZip::errorCode();
- }
-
- // ----- Look for next option
- switch ($p_options_list[$i]) {
- // ----- Look for options that request a path value
- case PCLZIP_OPT_PATH :
- case PCLZIP_OPT_REMOVE_PATH :
- case PCLZIP_OPT_ADD_PATH :
- // ----- Check the number of parameters
- if (($i+1) >= $p_size) {
- // ----- Error log
- PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'");
-
- // ----- Return
- return PclZip::errorCode();
- }
-
- // ----- Get the value
- $v_result_list[$p_options_list[$i]] = PclZipUtilTranslateWinPath($p_options_list[$i+1], FALSE);
- $i++;
- break;
-
- case PCLZIP_OPT_TEMP_FILE_THRESHOLD :
- // ----- Check the number of parameters
- if (($i+1) >= $p_size) {
- PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'");
- return PclZip::errorCode();
- }
-
- // ----- Check for incompatible options
- if (isset($v_result_list[PCLZIP_OPT_TEMP_FILE_OFF])) {
- PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Option '".PclZipUtilOptionText($p_options_list[$i])."' can not be used with option 'PCLZIP_OPT_TEMP_FILE_OFF'");
- return PclZip::errorCode();
- }
-
- // ----- Check the value
- $v_value = $p_options_list[$i+1];
- if ((!is_integer($v_value)) || ($v_value<0)) {
- PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE, "Integer expected for option '".PclZipUtilOptionText($p_options_list[$i])."'");
- return PclZip::errorCode();
- }
-
- // ----- Get the value (and convert it in bytes)
- $v_result_list[$p_options_list[$i]] = $v_value*1048576;
- $i++;
- break;
-
- case PCLZIP_OPT_TEMP_FILE_ON :
- // ----- Check for incompatible options
- if (isset($v_result_list[PCLZIP_OPT_TEMP_FILE_OFF])) {
- PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Option '".PclZipUtilOptionText($p_options_list[$i])."' can not be used with option 'PCLZIP_OPT_TEMP_FILE_OFF'");
- return PclZip::errorCode();
- }
-
- $v_result_list[$p_options_list[$i]] = true;
- break;
-
- case PCLZIP_OPT_TEMP_FILE_OFF :
- // ----- Check for incompatible options
- if (isset($v_result_list[PCLZIP_OPT_TEMP_FILE_ON])) {
- PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Option '".PclZipUtilOptionText($p_options_list[$i])."' can not be used with option 'PCLZIP_OPT_TEMP_FILE_ON'");
- return PclZip::errorCode();
- }
- // ----- Check for incompatible options
- if (isset($v_result_list[PCLZIP_OPT_TEMP_FILE_THRESHOLD])) {
- PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Option '".PclZipUtilOptionText($p_options_list[$i])."' can not be used with option 'PCLZIP_OPT_TEMP_FILE_THRESHOLD'");
- return PclZip::errorCode();
- }
-
- $v_result_list[$p_options_list[$i]] = true;
- break;
-
- case PCLZIP_OPT_EXTRACT_DIR_RESTRICTION :
- // ----- Check the number of parameters
- if (($i+1) >= $p_size) {
- // ----- Error log
- PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'");
-
- // ----- Return
- return PclZip::errorCode();
- }
-
- // ----- Get the value
- if ( is_string($p_options_list[$i+1])
- && ($p_options_list[$i+1] != '')) {
- $v_result_list[$p_options_list[$i]] = PclZipUtilTranslateWinPath($p_options_list[$i+1], FALSE);
- $i++;
- }
- else {
- }
- break;
-
- // ----- Look for options that request an array of string for value
- case PCLZIP_OPT_BY_NAME :
- // ----- Check the number of parameters
- if (($i+1) >= $p_size) {
- // ----- Error log
- PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'");
-
- // ----- Return
- return PclZip::errorCode();
- }
-
- // ----- Get the value
- if (is_string($p_options_list[$i+1])) {
- $v_result_list[$p_options_list[$i]][0] = $p_options_list[$i+1];
- }
- else if (is_array($p_options_list[$i+1])) {
- $v_result_list[$p_options_list[$i]] = $p_options_list[$i+1];
- }
- else {
- // ----- Error log
- PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE, "Wrong parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'");
-
- // ----- Return
- return PclZip::errorCode();
- }
- $i++;
- break;
-
- // ----- Look for options that request an EREG or PREG expression
- case PCLZIP_OPT_BY_EREG :
- // ereg() is deprecated starting with PHP 5.3. Move PCLZIP_OPT_BY_EREG
- // to PCLZIP_OPT_BY_PREG
- $p_options_list[$i] = PCLZIP_OPT_BY_PREG;
- case PCLZIP_OPT_BY_PREG :
- //case PCLZIP_OPT_CRYPT :
- // ----- Check the number of parameters
- if (($i+1) >= $p_size) {
- // ----- Error log
- PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'");
-
- // ----- Return
- return PclZip::errorCode();
- }
-
- // ----- Get the value
- if (is_string($p_options_list[$i+1])) {
- $v_result_list[$p_options_list[$i]] = $p_options_list[$i+1];
- }
- else {
- // ----- Error log
- PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE, "Wrong parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'");
-
- // ----- Return
- return PclZip::errorCode();
- }
- $i++;
- break;
-
- // ----- Look for options that takes a string
- case PCLZIP_OPT_COMMENT :
- case PCLZIP_OPT_ADD_COMMENT :
- case PCLZIP_OPT_PREPEND_COMMENT :
- // ----- Check the number of parameters
- if (($i+1) >= $p_size) {
- // ----- Error log
- PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE,
- "Missing parameter value for option '"
- .PclZipUtilOptionText($p_options_list[$i])
- ."'");
-
- // ----- Return
- return PclZip::errorCode();
- }
-
- // ----- Get the value
- if (is_string($p_options_list[$i+1])) {
- $v_result_list[$p_options_list[$i]] = $p_options_list[$i+1];
- }
- else {
- // ----- Error log
- PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE,
- "Wrong parameter value for option '"
- .PclZipUtilOptionText($p_options_list[$i])
- ."'");
-
- // ----- Return
- return PclZip::errorCode();
- }
- $i++;
- break;
-
- // ----- Look for options that request an array of index
- case PCLZIP_OPT_BY_INDEX :
- // ----- Check the number of parameters
- if (($i+1) >= $p_size) {
- // ----- Error log
- PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'");
-
- // ----- Return
- return PclZip::errorCode();
- }
-
- // ----- Get the value
- $v_work_list = array();
- if (is_string($p_options_list[$i+1])) {
-
- // ----- Remove spaces
- $p_options_list[$i+1] = strtr($p_options_list[$i+1], ' ', '');
-
- // ----- Parse items
- $v_work_list = explode(",", $p_options_list[$i+1]);
- }
- else if (is_integer($p_options_list[$i+1])) {
- $v_work_list[0] = $p_options_list[$i+1].'-'.$p_options_list[$i+1];
- }
- else if (is_array($p_options_list[$i+1])) {
- $v_work_list = $p_options_list[$i+1];
- }
- else {
- // ----- Error log
- PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE, "Value must be integer, string or array for option '".PclZipUtilOptionText($p_options_list[$i])."'");
-
- // ----- Return
- return PclZip::errorCode();
- }
-
- // ----- Reduce the index list
- // each index item in the list must be a couple with a start and
- // an end value : [0,3], [5-5], [8-10], ...
- // ----- Check the format of each item
- $v_sort_flag=false;
- $v_sort_value=0;
- for ($j=0; $j<sizeof($v_work_list); $j++) {
- // ----- Explode the item
- $v_item_list = explode("-", $v_work_list[$j]);
- $v_size_item_list = sizeof($v_item_list);
-
- // ----- TBC : Here we might check that each item is a
- // real integer ...
-
- // ----- Look for single value
- if ($v_size_item_list == 1) {
- // ----- Set the option value
- $v_result_list[$p_options_list[$i]][$j]['start'] = $v_item_list[0];
- $v_result_list[$p_options_list[$i]][$j]['end'] = $v_item_list[0];
- }
- elseif ($v_size_item_list == 2) {
- // ----- Set the option value
- $v_result_list[$p_options_list[$i]][$j]['start'] = $v_item_list[0];
- $v_result_list[$p_options_list[$i]][$j]['end'] = $v_item_list[1];
- }
- else {
- // ----- Error log
- PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE, "Too many values in index range for option '".PclZipUtilOptionText($p_options_list[$i])."'");
-
- // ----- Return
- return PclZip::errorCode();
- }
-
-
- // ----- Look for list sort
- if ($v_result_list[$p_options_list[$i]][$j]['start'] < $v_sort_value) {
- $v_sort_flag=true;
-
- // ----- TBC : An automatic sort should be writen ...
- // ----- Error log
- PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE, "Invalid order of index range for option '".PclZipUtilOptionText($p_options_list[$i])."'");
-
- // ----- Return
- return PclZip::errorCode();
- }
- $v_sort_value = $v_result_list[$p_options_list[$i]][$j]['start'];
- }
-
- // ----- Sort the items
- if ($v_sort_flag) {
- // TBC : To Be Completed
- }
-
- // ----- Next option
- $i++;
- break;
-
- // ----- Look for options that request no value
- case PCLZIP_OPT_REMOVE_ALL_PATH :
- case PCLZIP_OPT_EXTRACT_AS_STRING :
- case PCLZIP_OPT_NO_COMPRESSION :
- case PCLZIP_OPT_EXTRACT_IN_OUTPUT :
- case PCLZIP_OPT_REPLACE_NEWER :
- case PCLZIP_OPT_STOP_ON_ERROR :
- $v_result_list[$p_options_list[$i]] = true;
- break;
-
- // ----- Look for options that request an octal value
- case PCLZIP_OPT_SET_CHMOD :
- // ----- Check the number of parameters
- if (($i+1) >= $p_size) {
- // ----- Error log
- PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'");
-
- // ----- Return
- return PclZip::errorCode();
- }
-
- // ----- Get the value
- $v_result_list[$p_options_list[$i]] = $p_options_list[$i+1];
- $i++;
- break;
-
- // ----- Look for options that request a call-back
- case PCLZIP_CB_PRE_EXTRACT :
- case PCLZIP_CB_POST_EXTRACT :
- case PCLZIP_CB_PRE_ADD :
- case PCLZIP_CB_POST_ADD :
- /* for futur use
- case PCLZIP_CB_PRE_DELETE :
- case PCLZIP_CB_POST_DELETE :
- case PCLZIP_CB_PRE_LIST :
- case PCLZIP_CB_POST_LIST :
- */
- // ----- Check the number of parameters
- if (($i+1) >= $p_size) {
- // ----- Error log
- PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'");
-
- // ----- Return
- return PclZip::errorCode();
- }
-
- // ----- Get the value
- $v_function_name = $p_options_list[$i+1];
-
- // ----- Check that the value is a valid existing function
- if (!function_exists($v_function_name)) {
- // ----- Error log
- PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE, "Function '".$v_function_name."()' is not an existing function for option '".PclZipUtilOptionText($p_options_list[$i])."'");
-
- // ----- Return
- return PclZip::errorCode();
- }
-
- // ----- Set the attribute
- $v_result_list[$p_options_list[$i]] = $v_function_name;
- $i++;
- break;
-
- default :
- // ----- Error log
- PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER,
- "Unknown parameter '"
- .$p_options_list[$i]."'");
-
- // ----- Return
- return PclZip::errorCode();
- }
-
- // ----- Next options
- $i++;
- }
-
- // ----- Look for mandatory options
- if ($v_requested_options !== false) {
- for ($key=reset($v_requested_options); $key=key($v_requested_options); $key=next($v_requested_options)) {
- // ----- Look for mandatory option
- if ($v_requested_options[$key] == 'mandatory') {
- // ----- Look if present
- if (!isset($v_result_list[$key])) {
- // ----- Error log
- PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Missing mandatory parameter ".PclZipUtilOptionText($key)."(".$key.")");
-
- // ----- Return
- return PclZip::errorCode();
- }
- }
- }
- }
-
- // ----- Look for default values
- if (!isset($v_result_list[PCLZIP_OPT_TEMP_FILE_THRESHOLD])) {
-
- }
-
- // ----- Return
- return $v_result;
- }
- // --------------------------------------------------------------------------------
-
- // --------------------------------------------------------------------------------
- // Function : privOptionDefaultThreshold()
- // Description :
- // Parameters :
- // Return Values :
- // --------------------------------------------------------------------------------
- function privOptionDefaultThreshold(&$p_options)
- {
- $v_result=1;
-
- if (isset($p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD])
- || isset($p_options[PCLZIP_OPT_TEMP_FILE_OFF])) {
- return $v_result;
- }
-
- // ----- Get 'memory_limit' configuration value
- $v_memory_limit = ini_get('memory_limit');
- $v_memory_limit = trim($v_memory_limit);
- $last = strtolower(substr($v_memory_limit, -1));
-
- if($last == 'g')
- //$v_memory_limit = $v_memory_limit*1024*1024*1024;
- $v_memory_limit = $v_memory_limit*1073741824;
- if($last == 'm')
- //$v_memory_limit = $v_memory_limit*1024*1024;
- $v_memory_limit = $v_memory_limit*1048576;
- if($last == 'k')
- $v_memory_limit = $v_memory_limit*1024;
-
- $p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD] = floor($v_memory_limit*PCLZIP_TEMPORARY_FILE_RATIO);
-
-
- // ----- Sanity check : No threshold if value lower than 1M
- if ($p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD] < 1048576) {
- unset($p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD]);
- }
-
- // ----- Return
- return $v_result;
- }
- // --------------------------------------------------------------------------------
-
- // --------------------------------------------------------------------------------
- // Function : privFileDescrParseAtt()
- // Description :
- // Parameters :
- // Return Values :
- // 1 on success.
- // 0 on failure.
- // --------------------------------------------------------------------------------
- function privFileDescrParseAtt(&$p_file_list, &$p_filedescr, $v_options, $v_requested_options=false)
- {
- $v_result=1;
-
- // ----- For each file in the list check the attributes
- foreach ($p_file_list as $v_key => $v_value) {
-
- // ----- Check if the option is supported
- if (!isset($v_requested_options[$v_key])) {
- // ----- Error log
- PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid file attribute '".$v_key."' for this file");
-
- // ----- Return
- return PclZip::errorCode();
- }
-
- // ----- Look for attribute
- switch ($v_key) {
- case PCLZIP_ATT_FILE_NAME :
- if (!is_string($v_value)) {
- PclZip::privErrorLog(PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE, "Invalid type ".gettype($v_value).". String expected for attribute '".PclZipUtilOptionText($v_key)."'");
- return PclZip::errorCode();
- }
-
- $p_filedescr['filename'] = PclZipUtilPathReduction($v_value);
-
- if ($p_filedescr['filename'] == '') {
- PclZip::privErrorLog(PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE, "Invalid empty filename for attribute '".PclZipUtilOptionText($v_key)."'");
- return PclZip::errorCode();
- }
-
- break;
-
- case PCLZIP_ATT_FILE_NEW_SHORT_NAME :
- if (!is_string($v_value)) {
- PclZip::privErrorLog(PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE, "Invalid type ".gettype($v_value).". String expected for attribute '".PclZipUtilOptionText($v_key)."'");
- return PclZip::errorCode();
- }
-
- $p_filedescr['new_short_name'] = PclZipUtilPathReduction($v_value);
-
- if ($p_filedescr['new_short_name'] == '') {
- PclZip::privErrorLog(PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE, "Invalid empty short filename for attribute '".PclZipUtilOptionText($v_key)."'");
- return PclZip::errorCode();
- }
- break;
-
- case PCLZIP_ATT_FILE_NEW_FULL_NAME :
- if (!is_string($v_value)) {
- PclZip::privErrorLog(PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE, "Invalid type ".gettype($v_value).". String expected for attribute '".PclZipUtilOptionText($v_key)."'");
- return PclZip::errorCode();
- }
-
- $p_filedescr['new_full_name'] = PclZipUtilPathReduction($v_value);
-
- if ($p_filedescr['new_full_name'] == '') {
- PclZip::privErrorLog(PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE, "Invalid empty full filename for attribute '".PclZipUtilOptionText($v_key)."'");
- return PclZip::errorCode();
- }
- break;
-
- // ----- Look for options that takes a string
- case PCLZIP_ATT_FILE_COMMENT :
- if (!is_string($v_value)) {
- PclZip::privErrorLog(PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE, "Invalid type ".gettype($v_value).". String expected for attribute '".PclZipUtilOptionText($v_key)."'");
- return PclZip::errorCode();
- }
-
- $p_filedescr['comment'] = $v_value;
- break;
-
- case PCLZIP_ATT_FILE_MTIME :
- if (!is_integer($v_value)) {
- PclZip::privErrorLog(PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE, "Invalid type ".gettype($v_value).". Integer expected for attribute '".PclZipUtilOptionText($v_key)."'");
- return PclZip::errorCode();
- }
-
- $p_filedescr['mtime'] = $v_value;
- break;
-
- case PCLZIP_ATT_FILE_CONTENT :
- $p_filedescr['content'] = $v_value;
- break;
-
- default :
- // ----- Error log
- PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER,
- "Unknown parameter '".$v_key."'");
-
- // ----- Return
- return PclZip::errorCode();
- }
-
- // ----- Look for mandatory options
- if ($v_requested_options !== false) {
- for ($key=reset($v_requested_options); $key=key($v_requested_options); $key=next($v_requested_options)) {
- // ----- Look for mandatory option
- if ($v_requested_options[$key] == 'mandatory') {
- // ----- Look if present
- if (!isset($p_file_list[$key])) {
- PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Missing mandatory parameter ".PclZipUtilOptionText($key)."(".$key.")");
- return PclZip::errorCode();
- }
- }
- }
- }
-
- // end foreach
- }
-
- // ----- Return
- return $v_result;
- }
- // --------------------------------------------------------------------------------
-
- // --------------------------------------------------------------------------------
- // Function : privFileDescrExpand()
- // Description :
- // This method look for each item of the list to see if its a file, a folder
- // or a string to be added as file. For any other type of files (link, other)
- // just ignore the item.
- // Then prepare the information that will be stored for that file.
- // When its a folder, expand the folder with all the files that are in that
- // folder (recursively).
- // Parameters :
- // Return Values :
- // 1 on success.
- // 0 on failure.
- // --------------------------------------------------------------------------------
- function privFileDescrExpand(&$p_filedescr_list, &$p_options)
- {
- $v_result=1;
-
- // ----- Create a result list
- $v_result_list = array();
-
- // ----- Look each entry
- for ($i=0; $i<sizeof($p_filedescr_list); $i++) {
-
- // ----- Get filedescr
- $v_descr = $p_filedescr_list[$i];
-
- // ----- Reduce the filename
- $v_descr['filename'] = PclZipUtilTranslateWinPath($v_descr['filename'], false);
- $v_descr['filename'] = PclZipUtilPathReduction($v_descr['filename']);
-
- // ----- Look for real file or folder
- if (file_exists($v_descr['filename'])) {
- if (@is_file($v_descr['filename'])) {
- $v_descr['type'] = 'file';
- }
- else if (@is_dir($v_descr['filename'])) {
- $v_descr['type'] = 'folder';
- }
- else if (@is_link($v_descr['filename'])) {
- // skip
- continue;
- }
- else {
- // skip
- continue;
- }
- }
-
- // ----- Look for string added as file
- else if (isset($v_descr['content'])) {
- $v_descr['type'] = 'virtual_file';
- }
-
- // ----- Missing file
- else {
- // ----- Error log
- PclZip::privErrorLog(PCLZIP_ERR_MISSING_FILE, "File '".$v_descr['filename']."' does not exist");
-
- // ----- Return
- return PclZip::errorCode();
- }
-
- // ----- Calculate the stored filename
- $this->privCalculateStoredFilename($v_descr, $p_options);
-
- // ----- Add the descriptor in result list
- $v_result_list[sizeof($v_result_list)] = $v_descr;
-
- // ----- Look for folder
- if ($v_descr['type'] == 'folder') {
- // ----- List of items in folder
- $v_dirlist_descr = array();
- $v_dirlist_nb = 0;
- if ($v_folder_handler = @opendir($v_descr['filename'])) {
- while (($v_item_handler = @readdir($v_folder_handler)) !== false) {
-
- // ----- Skip '.' and '..'
- if (($v_item_handler == '.') || ($v_item_handler == '..')) {
- continue;
- }
-
- // ----- Compose the full filename
- $v_dirlist_descr[$v_dirlist_nb]['filename'] = $v_descr['filename'].'/'.$v_item_handler;
-
- // ----- Look for different stored filename
- // Because the name of the folder was changed, the name of the
- // files/sub-folders also change
- if (($v_descr['stored_filename'] != $v_descr['filename'])
- && (!isset($p_options[PCLZIP_OPT_REMOVE_ALL_PATH]))) {
- if ($v_descr['stored_filename'] != '') {
- $v_dirlist_descr[$v_dirlist_nb]['new_full_name'] = $v_descr['stored_filename'].'/'.$v_item_handler;
- }
- else {
- $v_dirlist_descr[$v_dirlist_nb]['new_full_name'] = $v_item_handler;
- }
- }
-
- $v_dirlist_nb++;
- }
-
- @closedir($v_folder_handler);
- }
- else {
- // TBC : unable to open folder in read mode
- }
-
- // ----- Expand each element of the list
- if ($v_dirlist_nb != 0) {
- // ----- Expand
- if (($v_result = $this->privFileDescrExpand($v_dirlist_descr, $p_options)) != 1) {
- return $v_result;
- }
-
- // ----- Concat the resulting list
- $v_result_list = array_merge($v_result_list, $v_dirlist_descr);
- }
- else {
- }
-
- // ----- Free local array
- unset($v_dirlist_descr);
- }
- }
-
- // ----- Get the result list
- $p_filedescr_list = $v_result_list;
-
- // ----- Return
- return $v_result;
- }
- // --------------------------------------------------------------------------------
-
- // --------------------------------------------------------------------------------
- // Function : privCreate()
- // Description :
- // Parameters :
- // Return Values :
- // --------------------------------------------------------------------------------
- function privCreate($p_filedescr_list, &$p_result_list, &$p_options)
- {
- $v_result=1;
- $v_list_detail = array();
-
- // ----- Magic quotes trick
- $this->privDisableMagicQuotes();
-
- // ----- Open the file in write mode
- if (($v_result = $this->privOpenFd('wb')) != 1)
- {
- // ----- Return
- return $v_result;
- }
-
- // ----- Add the list of files
- $v_result = $this->privAddList($p_filedescr_list, $p_result_list, $p_options);
-
- // ----- Close
- $this->privCloseFd();
-
- // ----- Magic quotes trick
- $this->privSwapBackMagicQuotes();
-
- // ----- Return
- return $v_result;
- }
- // --------------------------------------------------------------------------------
-
- // --------------------------------------------------------------------------------
- // Function : privAdd()
- // Description :
- // Parameters :
- // Return Values :
- // --------------------------------------------------------------------------------
- function privAdd($p_filedescr_list, &$p_result_list, &$p_options)
- {
- $v_result=1;
- $v_list_detail = array();
-
- // ----- Look if the archive exists or is empty
- if ((!is_file($this->zipname)) || (filesize($this->zipname) == 0))
- {
-
- // ----- Do a create
- $v_result = $this->privCreate($p_filedescr_list, $p_result_list, $p_options);
-
- // ----- Return
- return $v_result;
- }
- // ----- Magic quotes trick
- $this->privDisableMagicQuotes();
-
- // ----- Open the zip file
- if (($v_result=$this->privOpenFd('rb')) != 1)
- {
- // ----- Magic quotes trick
- $this->privSwapBackMagicQuotes();
-
- // ----- Return
- return $v_result;
- }
-
- // ----- Read the central directory informations
- $v_central_dir = array();
- if (($v_result = $this->privReadEndCentralDir($v_central_dir)) != 1)
- {
- $this->privCloseFd();
- $this->privSwapBackMagicQuotes();
- return $v_result;
- }
-
- // ----- Go to beginning of File
- @rewind($this->zip_fd);
-
- // ----- Creates a temporay file
- $v_zip_temp_name = PCLZIP_TEMPORARY_DIR.uniqid('pclzip-').'.tmp';
-
- // ----- Open the temporary file in write mode
- if (($v_zip_temp_fd = @fopen($v_zip_temp_name, 'wb')) == 0)
- {
- $this->privCloseFd();
- $this->privSwapBackMagicQuotes();
-
- PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open temporary file \''.$v_zip_temp_name.'\' in binary write mode');
-
- // ----- Return
- return PclZip::errorCode();
- }
-
- // ----- Copy the files from the archive to the temporary file
- // TBC : Here I should better append the file and go back to erase the central dir
- $v_size = $v_central_dir['offset'];
- while ($v_size != 0)
- {
- $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE);
- $v_buffer = fread($this->zip_fd, $v_read_size);
- @fwrite($v_zip_temp_fd, $v_buffer, $v_read_size);
- $v_size -= $v_read_size;
- }
-
- // ----- Swap the file descriptor
- // Here is a trick : I swap the temporary fd with the zip fd, in order to use
- // the following methods on the temporary fil and not the real archive
- $v_swap = $this->zip_fd;
- $this->zip_fd = $v_zip_temp_fd;
- $v_zip_temp_fd = $v_swap;
-
- // ----- Add the files
- $v_header_list = array();
- if (($v_result = $this->privAddFileList($p_filedescr_list, $v_header_list, $p_options)) != 1)
- {
- fclose($v_zip_temp_fd);
- $this->privCloseFd();
- @unlink($v_zip_temp_name);
- $this->privSwapBackMagicQuotes();
-
- // ----- Return
- return $v_result;
- }
-
- // ----- Store the offset of the central dir
- $v_offset = @ftell($this->zip_fd);
-
- // ----- Copy the block of file headers from the old archive
- $v_size = $v_central_dir['size'];
- while ($v_size != 0)
- {
- $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE);
- $v_buffer = @fread($v_zip_temp_fd, $v_read_size);
- @fwrite($this->zip_fd, $v_buffer, $v_read_size);
- $v_size -= $v_read_size;
- }
-
- // ----- Create the Central Dir files header
- for ($i=0, $v_count=0; $i<sizeof($v_header_list); $i++)
- {
- // ----- Create the file header
- if ($v_header_list[$i]['status'] == 'ok') {
- if (($v_result = $this->privWriteCentralFileHeader($v_header_list[$i])) != 1) {
- fclose($v_zip_temp_fd);
- $this->privCloseFd();
- @unlink($v_zip_temp_name);
- $this->privSwapBackMagicQuotes();
-
- // ----- Return
- return $v_result;
- }
- $v_count++;
- }
-
- // ----- Transform the header to a 'usable' info
- $this->privConvertHeader2FileInfo($v_header_list[$i], $p_result_list[$i]);
- }
-
- // ----- Zip file comment
- $v_comment = $v_central_dir['comment'];
- if (isset($p_options[PCLZIP_OPT_COMMENT])) {
- $v_comment = $p_options[PCLZIP_OPT_COMMENT];
- }
- if (isset($p_options[PCLZIP_OPT_ADD_COMMENT])) {
- $v_comment = $v_comment.$p_options[PCLZIP_OPT_ADD_COMMENT];
- }
- if (isset($p_options[PCLZIP_OPT_PREPEND_COMMENT])) {
- $v_comment = $p_options[PCLZIP_OPT_PREPEND_COMMENT].$v_comment;
- }
-
- // ----- Calculate the size of the central header
- $v_size = @ftell($this->zip_fd)-$v_offset;
-
- // ----- Create the central dir footer
- if (($v_result = $this->privWriteCentralHeader($v_count+$v_central_dir['entries'], $v_size, $v_offset, $v_comment)) != 1)
- {
- // ----- Reset the file list
- unset($v_header_list);
- $this->privSwapBackMagicQuotes();
-
- // ----- Return
- return $v_result;
- }
-
- // ----- Swap back the file descriptor
- $v_swap = $this->zip_fd;
- $this->zip_fd = $v_zip_temp_fd;
- $v_zip_temp_fd = $v_swap;
-
- // ----- Close
- $this->privCloseFd();
-
- // ----- Close the temporary file
- @fclose($v_zip_temp_fd);
-
- // ----- Magic quotes trick
- $this->privSwapBackMagicQuotes();
-
- // ----- Delete the zip file
- // TBC : I should test the result ...
- @unlink($this->zipname);
-
- // ----- Rename the temporary file
- // TBC : I should test the result ...
- //@rename($v_zip_temp_name, $this->zipname);
- PclZipUtilRename($v_zip_temp_name, $this->zipname);
-
- // ----- Return
- return $v_result;
- }
- // --------------------------------------------------------------------------------
-
- // --------------------------------------------------------------------------------
- // Function : privOpenFd()
- // Description :
- // Parameters :
- // --------------------------------------------------------------------------------
- function privOpenFd($p_mode)
- {
- $v_result=1;
-
- // ----- Look if already open
- if ($this->zip_fd != 0)
- {
- // ----- Error log
- PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Zip file \''.$this->zipname.'\' already open');
-
- // ----- Return
- return PclZip::errorCode();
- }
-
- // ----- Open the zip file
- if (($this->zip_fd = @fopen($this->zipname, $p_mode)) == 0)
- {
- // ----- Error log
- PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open archive \''.$this->zipname.'\' in '.$p_mode.' mode');
-
- // ----- Return
- return PclZip::errorCode();
- }
-
- // ----- Return
- return $v_result;
- }
- // --------------------------------------------------------------------------------
-
- // --------------------------------------------------------------------------------
- // Function : privCloseFd()
- // Description :
- // Parameters :
- // --------------------------------------------------------------------------------
- function privCloseFd()
- {
- $v_result=1;
-
- if ($this->zip_fd != 0)
- @fclose($this->zip_fd);
- $this->zip_fd = 0;
-
- // ----- Return
- return $v_result;
- }
- // --------------------------------------------------------------------------------
-
- // --------------------------------------------------------------------------------
- // Function : privAddList()
- // Description :
- // $p_add_dir and $p_remove_dir will give the ability to memorize a path which is
- // different from the real path of the file. This is usefull if you want to have PclTar
- // running in any directory, and memorize relative path from an other directory.
- // Parameters :
- // $p_list : An array containing the file or directory names to add in the tar
- // $p_result_list : list of added files with their properties (specially the status field)
- // $p_add_dir : Path to add in the filename path archived
- // $p_remove_dir : Path to remove in the filename path archived
- // Return Values :
- // --------------------------------------------------------------------------------
-// function privAddList($p_list, &$p_result_list, $p_add_dir, $p_remove_dir, $p_remove_all_dir, &$p_options)
- function privAddList($p_filedescr_list, &$p_result_list, &$p_options)
- {
- $v_result=1;
-
- // ----- Add the files
- $v_header_list = array();
- if (($v_result = $this->privAddFileList($p_filedescr_list, $v_header_list, $p_options)) != 1)
- {
- // ----- Return
- return $v_result;
- }
-
- // ----- Store the offset of the central dir
- $v_offset = @ftell($this->zip_fd);
-
- // ----- Create the Central Dir files header
- for ($i=0,$v_count=0; $i<sizeof($v_header_list); $i++)
- {
- // ----- Create the file header
- if ($v_header_list[$i]['status'] == 'ok') {
- if (($v_result = $this->privWriteCentralFileHeader($v_header_list[$i])) != 1) {
- // ----- Return
- return $v_result;
- }
- $v_count++;
- }
-
- // ----- Transform the header to a 'usable' info
- $this->privConvertHeader2FileInfo($v_header_list[$i], $p_result_list[$i]);
- }
-
- // ----- Zip file comment
- $v_comment = '';
- if (isset($p_options[PCLZIP_OPT_COMMENT])) {
- $v_comment = $p_options[PCLZIP_OPT_COMMENT];
- }
-
- // ----- Calculate the size of the central header
- $v_size = @ftell($this->zip_fd)-$v_offset;
-
- // ----- Create the central dir footer
- if (($v_result = $this->privWriteCentralHeader($v_count, $v_size, $v_offset, $v_comment)) != 1)
- {
- // ----- Reset the file list
- unset($v_header_list);
-
- // ----- Return
- return $v_result;
- }
-
- // ----- Return
- return $v_result;
- }
- // --------------------------------------------------------------------------------
-
- // --------------------------------------------------------------------------------
- // Function : privAddFileList()
- // Description :
- // Parameters :
- // $p_filedescr_list : An array containing the file description
- // or directory names to add in the zip
- // $p_result_list : list of added files with their properties (specially the status field)
- // Return Values :
- // --------------------------------------------------------------------------------
- function privAddFileList($p_filedescr_list, &$p_result_list, &$p_options)
- {
- $v_result=1;
- $v_header = array();
-
- // ----- Recuperate the current number of elt in list
- $v_nb = sizeof($p_result_list);
-
- // ----- Loop on the files
- for ($j=0; ($j<sizeof($p_filedescr_list)) && ($v_result==1); $j++) {
- // ----- Format the filename
- $p_filedescr_list[$j]['filename']
- = PclZipUtilTranslateWinPath($p_filedescr_list[$j]['filename'], false);
-
-
- // ----- Skip empty file names
- // TBC : Can this be possible ? not checked in DescrParseAtt ?
- if ($p_filedescr_list[$j]['filename'] == "") {
- continue;
- }
-
- // ----- Check the filename
- if ( ($p_filedescr_list[$j]['type'] != 'virtual_file')
- && (!file_exists($p_filedescr_list[$j]['filename']))) {
- PclZip::privErrorLog(PCLZIP_ERR_MISSING_FILE, "File '".$p_filedescr_list[$j]['filename']."' does not exist");
- return PclZip::errorCode();
- }
-
- // ----- Look if it is a file or a dir with no all path remove option
- // or a dir with all its path removed
-// if ( (is_file($p_filedescr_list[$j]['filename']))
-// || ( is_dir($p_filedescr_list[$j]['filename'])
- if ( ($p_filedescr_list[$j]['type'] == 'file')
- || ($p_filedescr_list[$j]['type'] == 'virtual_file')
- || ( ($p_filedescr_list[$j]['type'] == 'folder')
- && ( !isset($p_options[PCLZIP_OPT_REMOVE_ALL_PATH])
- || !$p_options[PCLZIP_OPT_REMOVE_ALL_PATH]))
- ) {
-
- // ----- Add the file
- $v_result = $this->privAddFile($p_filedescr_list[$j], $v_header,
- $p_options);
- if ($v_result != 1) {
- return $v_result;
- }
-
- // ----- Store the file infos
- $p_result_list[$v_nb++] = $v_header;
- }
- }
-
- // ----- Return
- return $v_result;
- }
- // --------------------------------------------------------------------------------
-
- // --------------------------------------------------------------------------------
- // Function : privAddFile()
- // Description :
- // Parameters :
- // Return Values :
- // --------------------------------------------------------------------------------
- function privAddFile($p_filedescr, &$p_header, &$p_options)
- {
- $v_result=1;
-
- // ----- Working variable
- $p_filename = $p_filedescr['filename'];
-
- // TBC : Already done in the fileAtt check ... ?
- if ($p_filename == "") {
- // ----- Error log
- PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid file list parameter (invalid or empty list)");
-
- // ----- Return
- return PclZip::errorCode();
- }
-
- // ----- Look for a stored different filename
- /* TBC : Removed
- if (isset($p_filedescr['stored_filename'])) {
- $v_stored_filename = $p_filedescr['stored_filename'];
- }
- else {
- $v_stored_filename = $p_filedescr['stored_filename'];
- }
- */
-
- // ----- Set the file properties
- clearstatcache();
- $p_header['version'] = 20;
- $p_header['version_extracted'] = 10;
- $p_header['flag'] = 0;
- $p_header['compression'] = 0;
- $p_header['crc'] = 0;
- $p_header['compressed_size'] = 0;
- $p_header['filename_len'] = strlen($p_filename);
- $p_header['extra_len'] = 0;
- $p_header['disk'] = 0;
- $p_header['internal'] = 0;
- $p_header['offset'] = 0;
- $p_header['filename'] = $p_filename;
-// TBC : Removed $p_header['stored_filename'] = $v_stored_filename;
- $p_header['stored_filename'] = $p_filedescr['stored_filename'];
- $p_header['extra'] = '';
- $p_header['status'] = 'ok';
- $p_header['index'] = -1;
-
- // ----- Look for regular file
- if ($p_filedescr['type']=='file') {
- $p_header['external'] = 0x00000000;
- $p_header['size'] = filesize($p_filename);
- }
-
- // ----- Look for regular folder
- else if ($p_filedescr['type']=='folder') {
- $p_header['external'] = 0x00000010;
- $p_header['mtime'] = filemtime($p_filename);
- $p_header['size'] = filesize($p_filename);
- }
-
- // ----- Look for virtual file
- else if ($p_filedescr['type'] == 'virtual_file') {
- $p_header['external'] = 0x00000000;
- $p_header['size'] = strlen($p_filedescr['content']);
- }
-
-
- // ----- Look for filetime
- if (isset($p_filedescr['mtime'])) {
- $p_header['mtime'] = $p_filedescr['mtime'];
- }
- else if ($p_filedescr['type'] == 'virtual_file') {
- $p_header['mtime'] = time();
- }
- else {
- $p_header['mtime'] = filemtime($p_filename);
- }
-
- // ------ Look for file comment
- if (isset($p_filedescr['comment'])) {
- $p_header['comment_len'] = strlen($p_filedescr['comment']);
- $p_header['comment'] = $p_filedescr['comment'];
- }
- else {
- $p_header['comment_len'] = 0;
- $p_header['comment'] = '';
- }
-
- // ----- Look for pre-add callback
- if (isset($p_options[PCLZIP_CB_PRE_ADD])) {
-
- // ----- Generate a local information
- $v_local_header = array();
- $this->privConvertHeader2FileInfo($p_header, $v_local_header);
-
- // ----- Call the callback
- // Here I do not use call_user_func() because I need to send a reference to the
- // header.
-// eval('$v_result = '.$p_options[PCLZIP_CB_PRE_ADD].'(PCLZIP_CB_PRE_ADD, $v_local_header);');
- $v_result = $p_options[PCLZIP_CB_PRE_ADD](PCLZIP_CB_PRE_ADD, $v_local_header);
- if ($v_result == 0) {
- // ----- Change the file status
- $p_header['status'] = "skipped";
- $v_result = 1;
- }
-
- // ----- Update the informations
- // Only some fields can be modified
- if ($p_header['stored_filename'] != $v_local_header['stored_filename']) {
- $p_header['stored_filename'] = PclZipUtilPathReduction($v_local_header['stored_filename']);
- }
- }
-
- // ----- Look for empty stored filename
- if ($p_header['stored_filename'] == "") {
- $p_header['status'] = "filtered";
- }
-
- // ----- Check the path length
- if (strlen($p_header['stored_filename']) > 0xFF) {
- $p_header['status'] = 'filename_too_long';
- }
-
- // ----- Look if no error, or file not skipped
- if ($p_header['status'] == 'ok') {
-
- // ----- Look for a file
- if ($p_filedescr['type'] == 'file') {
- // ----- Look for using temporary file to zip
- if ( (!isset($p_options[PCLZIP_OPT_TEMP_FILE_OFF]))
- && (isset($p_options[PCLZIP_OPT_TEMP_FILE_ON])
- || (isset($p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD])
- && ($p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD] <= $p_header['size'])) ) ) {
- $v_result = $this->privAddFileUsingTempFile($p_filedescr, $p_header, $p_options);
- if ($v_result < PCLZIP_ERR_NO_ERROR) {
- return $v_result;
- }
- }
-
- // ----- Use "in memory" zip algo
- else {
-
- // ----- Open the source file
- if (($v_file = @fopen($p_filename, "rb")) == 0) {
- PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, "Unable to open file '$p_filename' in binary read mode");
- return PclZip::errorCode();
- }
-
- // ----- Read the file content
- $v_content = @fread($v_file, $p_header['size']);
-
- // ----- Close the file
- @fclose($v_file);
-
- // ----- Calculate the CRC
- $p_header['crc'] = @crc32($v_content);
-
- // ----- Look for no compression
- if ($p_options[PCLZIP_OPT_NO_COMPRESSION]) {
- // ----- Set header parameters
- $p_header['compressed_size'] = $p_header['size'];
- $p_header['compression'] = 0;
- }
-
- // ----- Look for normal compression
- else {
- // ----- Compress the content
- $v_content = @gzdeflate($v_content);
-
- // ----- Set header parameters
- $p_header['compressed_size'] = strlen($v_content);
- $p_header['compression'] = 8;
- }
-
- // ----- Call the header generation
- if (($v_result = $this->privWriteFileHeader($p_header)) != 1) {
- @fclose($v_file);
- return $v_result;
- }
-
- // ----- Write the compressed (or not) content
- @fwrite($this->zip_fd, $v_content, $p_header['compressed_size']);
-
- }
-
- }
-
- // ----- Look for a virtual file (a file from string)
- else if ($p_filedescr['type'] == 'virtual_file') {
-
- $v_content = $p_filedescr['content'];
-
- // ----- Calculate the CRC
- $p_header['crc'] = @crc32($v_content);
-
- // ----- Look for no compression
- if ($p_options[PCLZIP_OPT_NO_COMPRESSION]) {
- // ----- Set header parameters
- $p_header['compressed_size'] = $p_header['size'];
- $p_header['compression'] = 0;
- }
-
- // ----- Look for normal compression
- else {
- // ----- Compress the content
- $v_content = @gzdeflate($v_content);
-
- // ----- Set header parameters
- $p_header['compressed_size'] = strlen($v_content);
- $p_header['compression'] = 8;
- }
-
- // ----- Call the header generation
- if (($v_result = $this->privWriteFileHeader($p_header)) != 1) {
- @fclose($v_file);
- return $v_result;
- }
-
- // ----- Write the compressed (or not) content
- @fwrite($this->zip_fd, $v_content, $p_header['compressed_size']);
- }
-
- // ----- Look for a directory
- else if ($p_filedescr['type'] == 'folder') {
- // ----- Look for directory last '/'
- if (@substr($p_header['stored_filename'], -1) != '/') {
- $p_header['stored_filename'] .= '/';
- }
-
- // ----- Set the file properties
- $p_header['size'] = 0;
- //$p_header['external'] = 0x41FF0010; // Value for a folder : to be checked
- $p_header['external'] = 0x00000010; // Value for a folder : to be checked
-
- // ----- Call the header generation
- if (($v_result = $this->privWriteFileHeader($p_header)) != 1)
- {
- return $v_result;
- }
- }
- }
-
- // ----- Look for post-add callback
- if (isset($p_options[PCLZIP_CB_POST_ADD])) {
-
- // ----- Generate a local information
- $v_local_header = array();
- $this->privConvertHeader2FileInfo($p_header, $v_local_header);
-
- // ----- Call the callback
- // Here I do not use call_user_func() because I need to send a reference to the
- // header.
-// eval('$v_result = '.$p_options[PCLZIP_CB_POST_ADD].'(PCLZIP_CB_POST_ADD, $v_local_header);');
- $v_result = $p_options[PCLZIP_CB_POST_ADD](PCLZIP_CB_POST_ADD, $v_local_header);
- if ($v_result == 0) {
- // ----- Ignored
- $v_result = 1;
- }
-
- // ----- Update the informations
- // Nothing can be modified
- }
-
- // ----- Return
- return $v_result;
- }
- // --------------------------------------------------------------------------------
-
- // --------------------------------------------------------------------------------
- // Function : privAddFileUsingTempFile()
- // Description :
- // Parameters :
- // Return Values :
- // --------------------------------------------------------------------------------
- function privAddFileUsingTempFile($p_filedescr, &$p_header, &$p_options)
- {
- $v_result=PCLZIP_ERR_NO_ERROR;
-
- // ----- Working variable
- $p_filename = $p_filedescr['filename'];
-
-
- // ----- Open the source file
- if (($v_file = @fopen($p_filename, "rb")) == 0) {
- PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, "Unable to open file '$p_filename' in binary read mode");
- return PclZip::errorCode();
- }
-
- // ----- Creates a compressed temporary file
- $v_gzip_temp_name = PCLZIP_TEMPORARY_DIR.uniqid('pclzip-').'.gz';
- if (($v_file_compressed = @gzopen($v_gzip_temp_name, "wb")) == 0) {
- fclose($v_file);
- PclZip::privErrorLog(PCLZIP_ERR_WRITE_OPEN_FAIL, 'Unable to open temporary file \''.$v_gzip_temp_name.'\' in binary write mode');
- return PclZip::errorCode();
- }
-
- // ----- Read the file by PCLZIP_READ_BLOCK_SIZE octets blocks
- $v_size = filesize($p_filename);
- while ($v_size != 0) {
- $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE);
- $v_buffer = @fread($v_file, $v_read_size);
- //$v_binary_data = pack('a'.$v_read_size, $v_buffer);
- @gzputs($v_file_compressed, $v_buffer, $v_read_size);
- $v_size -= $v_read_size;
- }
-
- // ----- Close the file
- @fclose($v_file);
- @gzclose($v_file_compressed);
-
- // ----- Check the minimum file size
- if (filesize($v_gzip_temp_name) < 18) {
- PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, 'gzip temporary file \''.$v_gzip_temp_name.'\' has invalid filesize - should be minimum 18 bytes');
- return PclZip::errorCode();
- }
-
- // ----- Extract the compressed attributes
- if (($v_file_compressed = @fopen($v_gzip_temp_name, "rb")) == 0) {
- PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open temporary file \''.$v_gzip_temp_name.'\' in binary read mode');
- return PclZip::errorCode();
- }
-
- // ----- Read the gzip file header
- $v_binary_data = @fread($v_file_compressed, 10);
- $v_data_header = unpack('a1id1/a1id2/a1cm/a1flag/Vmtime/a1xfl/a1os', $v_binary_data);
-
- // ----- Check some parameters
- $v_data_header['os'] = bin2hex($v_data_header['os']);
-
- // ----- Read the gzip file footer
- @fseek($v_file_compressed, filesize($v_gzip_temp_name)-8);
- $v_binary_data = @fread($v_file_compressed, 8);
- $v_data_footer = unpack('Vcrc/Vcompressed_size', $v_binary_data);
-
- // ----- Set the attributes
- $p_header['compression'] = ord($v_data_header['cm']);
- //$p_header['mtime'] = $v_data_header['mtime'];
- $p_header['crc'] = $v_data_footer['crc'];
- $p_header['compressed_size'] = filesize($v_gzip_temp_name)-18;
-
- // ----- Close the file
- @fclose($v_file_compressed);
-
- // ----- Call the header generation
- if (($v_result = $this->privWriteFileHeader($p_header)) != 1) {
- return $v_result;
- }
-
- // ----- Add the compressed data
- if (($v_file_compressed = @fopen($v_gzip_temp_name, "rb")) == 0)
- {
- PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open temporary file \''.$v_gzip_temp_name.'\' in binary read mode');
- return PclZip::errorCode();
- }
-
- // ----- Read the file by PCLZIP_READ_BLOCK_SIZE octets blocks
- fseek($v_file_compressed, 10);
- $v_size = $p_header['compressed_size'];
- while ($v_size != 0)
- {
- $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE);
- $v_buffer = @fread($v_file_compressed, $v_read_size);
- //$v_binary_data = pack('a'.$v_read_size, $v_buffer);
- @fwrite($this->zip_fd, $v_buffer, $v_read_size);
- $v_size -= $v_read_size;
- }
-
- // ----- Close the file
- @fclose($v_file_compressed);
-
- // ----- Unlink the temporary file
- @unlink($v_gzip_temp_name);
-
- // ----- Return
- return $v_result;
- }
- // --------------------------------------------------------------------------------
-
- // --------------------------------------------------------------------------------
- // Function : privCalculateStoredFilename()
- // Description :
- // Based on file descriptor properties and global options, this method
- // calculate the filename that will be stored in the archive.
- // Parameters :
- // Return Values :
- // --------------------------------------------------------------------------------
- function privCalculateStoredFilename(&$p_filedescr, &$p_options)
- {
- $v_result=1;
-
- // ----- Working variables
- $p_filename = $p_filedescr['filename'];
- if (isset($p_options[PCLZIP_OPT_ADD_PATH])) {
- $p_add_dir = $p_options[PCLZIP_OPT_ADD_PATH];
- }
- else {
- $p_add_dir = '';
- }
- if (isset($p_options[PCLZIP_OPT_REMOVE_PATH])) {
- $p_remove_dir = $p_options[PCLZIP_OPT_REMOVE_PATH];
- }
- else {
- $p_remove_dir = '';
- }
- if (isset($p_options[PCLZIP_OPT_REMOVE_ALL_PATH])) {
- $p_remove_all_dir = $p_options[PCLZIP_OPT_REMOVE_ALL_PATH];
- }
- else {
- $p_remove_all_dir = 0;
- }
-
-
- // ----- Look for full name change
- if (isset($p_filedescr['new_full_name'])) {
- // ----- Remove drive letter if any
- $v_stored_filename = PclZipUtilTranslateWinPath($p_filedescr['new_full_name']);
- }
-
- // ----- Look for path and/or short name change
- else {
-
- // ----- Look for short name change
- // Its when we cahnge just the filename but not the path
- if (isset($p_filedescr['new_short_name'])) {
- $v_path_info = pathinfo($p_filename);
- $v_dir = '';
- if ($v_path_info['dirname'] != '') {
- $v_dir = $v_path_info['dirname'].'/';
- }
- $v_stored_filename = $v_dir.$p_filedescr['new_short_name'];
- }
- else {
- // ----- Calculate the stored filename
- $v_stored_filename = $p_filename;
- }
-
- // ----- Look for all path to remove
- if ($p_remove_all_dir) {
- $v_stored_filename = basename($p_filename);
- }
- // ----- Look for partial path remove
- else if ($p_remove_dir != "") {
- if (substr($p_remove_dir, -1) != '/')
- $p_remove_dir .= "/";
-
- if ( (substr($p_filename, 0, 2) == "./")
- || (substr($p_remove_dir, 0, 2) == "./")) {
-
- if ( (substr($p_filename, 0, 2) == "./")
- && (substr($p_remove_dir, 0, 2) != "./")) {
- $p_remove_dir = "./".$p_remove_dir;
- }
- if ( (substr($p_filename, 0, 2) != "./")
- && (substr($p_remove_dir, 0, 2) == "./")) {
- $p_remove_dir = substr($p_remove_dir, 2);
- }
- }
-
- $v_compare = PclZipUtilPathInclusion($p_remove_dir,
- $v_stored_filename);
- if ($v_compare > 0) {
- if ($v_compare == 2) {
- $v_stored_filename = "";
- }
- else {
- $v_stored_filename = substr($v_stored_filename,
- strlen($p_remove_dir));
- }
- }
- }
-
- // ----- Remove drive letter if any
- $v_stored_filename = PclZipUtilTranslateWinPath($v_stored_filename);
-
- // ----- Look for path to add
- if ($p_add_dir != "") {
- if (substr($p_add_dir, -1) == "/")
- $v_stored_filename = $p_add_dir.$v_stored_filename;
- else
- $v_stored_filename = $p_add_dir."/".$v_stored_filename;
- }
- }
-
- // ----- Filename (reduce the path of stored name)
- $v_stored_filename = PclZipUtilPathReduction($v_stored_filename);
- $p_filedescr['stored_filename'] = $v_stored_filename;
-
- // ----- Return
- return $v_result;
- }
- // --------------------------------------------------------------------------------
-
- // --------------------------------------------------------------------------------
- // Function : privWriteFileHeader()
- // Description :
- // Parameters :
- // Return Values :
- // --------------------------------------------------------------------------------
- function privWriteFileHeader(&$p_header)
- {
- $v_result=1;
-
- // ----- Store the offset position of the file
- $p_header['offset'] = ftell($this->zip_fd);
-
- // ----- Transform UNIX mtime to DOS format mdate/mtime
- $v_date = getdate($p_header['mtime']);
- $v_mtime = ($v_date['hours']<<11) + ($v_date['minutes']<<5) + $v_date['seconds']/2;
- $v_mdate = (($v_date['year']-1980)<<9) + ($v_date['mon']<<5) + $v_date['mday'];
-
- // ----- Packed data
- $v_binary_data = pack("VvvvvvVVVvv", 0x04034b50,
- $p_header['version_extracted'], $p_header['flag'],
- $p_header['compression'], $v_mtime, $v_mdate,
- $p_header['crc'], $p_header['compressed_size'],
- $p_header['size'],
- strlen($p_header['stored_filename']),
- $p_header['extra_len']);
-
- // ----- Write the first 148 bytes of the header in the archive
- fputs($this->zip_fd, $v_binary_data, 30);
-
- // ----- Write the variable fields
- if (strlen($p_header['stored_filename']) != 0)
- {
- fputs($this->zip_fd, $p_header['stored_filename'], strlen($p_header['stored_filename']));
- }
- if ($p_header['extra_len'] != 0)
- {
- fputs($this->zip_fd, $p_header['extra'], $p_header['extra_len']);
- }
-
- // ----- Return
- return $v_result;
- }
- // --------------------------------------------------------------------------------
-
- // --------------------------------------------------------------------------------
- // Function : privWriteCentralFileHeader()
- // Description :
- // Parameters :
- // Return Values :
- // --------------------------------------------------------------------------------
- function privWriteCentralFileHeader(&$p_header)
- {
- $v_result=1;
-
- // TBC
- //for(reset($p_header); $key = key($p_header); next($p_header)) {
- //}
-
- // ----- Transform UNIX mtime to DOS format mdate/mtime
- $v_date = getdate($p_header['mtime']);
- $v_mtime = ($v_date['hours']<<11) + ($v_date['minutes']<<5) + $v_date['seconds']/2;
- $v_mdate = (($v_date['year']-1980)<<9) + ($v_date['mon']<<5) + $v_date['mday'];
-
-
- // ----- Packed data
- $v_binary_data = pack("VvvvvvvVVVvvvvvVV", 0x02014b50,
- $p_header['version'], $p_header['version_extracted'],
- $p_header['flag'], $p_header['compression'],
- $v_mtime, $v_mdate, $p_header['crc'],
- $p_header['compressed_size'], $p_header['size'],
- strlen($p_header['stored_filename']),
- $p_header['extra_len'], $p_header['comment_len'],
- $p_header['disk'], $p_header['internal'],
- $p_header['external'], $p_header['offset']);
-
- // ----- Write the 42 bytes of the header in the zip file
- fputs($this->zip_fd, $v_binary_data, 46);
-
- // ----- Write the variable fields
- if (strlen($p_header['stored_filename']) != 0)
- {
- fputs($this->zip_fd, $p_header['stored_filename'], strlen($p_header['stored_filename']));
- }
- if ($p_header['extra_len'] != 0)
- {
- fputs($this->zip_fd, $p_header['extra'], $p_header['extra_len']);
- }
- if ($p_header['comment_len'] != 0)
- {
- fputs($this->zip_fd, $p_header['comment'], $p_header['comment_len']);
- }
-
- // ----- Return
- return $v_result;
- }
- // --------------------------------------------------------------------------------
-
- // --------------------------------------------------------------------------------
- // Function : privWriteCentralHeader()
- // Description :
- // Parameters :
- // Return Values :
- // --------------------------------------------------------------------------------
- function privWriteCentralHeader($p_nb_entries, $p_size, $p_offset, $p_comment)
- {
- $v_result=1;
-
- // ----- Packed data
- $v_binary_data = pack("VvvvvVVv", 0x06054b50, 0, 0, $p_nb_entries,
- $p_nb_entries, $p_size,
- $p_offset, strlen($p_comment));
-
- // ----- Write the 22 bytes of the header in the zip file
- fputs($this->zip_fd, $v_binary_data, 22);
-
- // ----- Write the variable fields
- if (strlen($p_comment) != 0)
- {
- fputs($this->zip_fd, $p_comment, strlen($p_comment));
- }
-
- // ----- Return
- return $v_result;
- }
- // --------------------------------------------------------------------------------
-
- // --------------------------------------------------------------------------------
- // Function : privList()
- // Description :
- // Parameters :
- // Return Values :
- // --------------------------------------------------------------------------------
- function privList(&$p_list)
- {
- $v_result=1;
-
- // ----- Magic quotes trick
- $this->privDisableMagicQuotes();
-
- // ----- Open the zip file
- if (($this->zip_fd = @fopen($this->zipname, 'rb')) == 0)
- {
- // ----- Magic quotes trick
- $this->privSwapBackMagicQuotes();
-
- // ----- Error log
- PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open archive \''.$this->zipname.'\' in binary read mode');
-
- // ----- Return
- return PclZip::errorCode();
- }
-
- // ----- Read the central directory informations
- $v_central_dir = array();
- if (($v_result = $this->privReadEndCentralDir($v_central_dir)) != 1)
- {
- $this->privSwapBackMagicQuotes();
- return $v_result;
- }
-
- // ----- Go to beginning of Central Dir
- @rewind($this->zip_fd);
- if (@fseek($this->zip_fd, $v_central_dir['offset']))
- {
- $this->privSwapBackMagicQuotes();
-
- // ----- Error log
- PclZip::privErrorLog(PCLZIP_ERR_INVALID_ARCHIVE_ZIP, 'Invalid archive size');
-
- // ----- Return
- return PclZip::errorCode();
- }
-
- // ----- Read each entry
- for ($i=0; $i<$v_central_dir['entries']; $i++)
- {
- // ----- Read the file header
- if (($v_result = $this->privReadCentralFileHeader($v_header)) != 1)
- {
- $this->privSwapBackMagicQuotes();
- return $v_result;
- }
- $v_header['index'] = $i;
-
- // ----- Get the only interesting attributes
- $this->privConvertHeader2FileInfo($v_header, $p_list[$i]);
- unset($v_header);
- }
-
- // ----- Close the zip file
- $this->privCloseFd();
-
- // ----- Magic quotes trick
- $this->privSwapBackMagicQuotes();
-
- // ----- Return
- return $v_result;
- }
- // --------------------------------------------------------------------------------
-
- // --------------------------------------------------------------------------------
- // Function : privConvertHeader2FileInfo()
- // Description :
- // This function takes the file informations from the central directory
- // entries and extract the interesting parameters that will be given back.
- // The resulting file infos are set in the array $p_info
- // $p_info['filename'] : Filename with full path. Given by user (add),
- // extracted in the filesystem (extract).
- // $p_info['stored_filename'] : Stored filename in the archive.
- // $p_info['size'] = Size of the file.
- // $p_info['compressed_size'] = Compressed size of the file.
- // $p_info['mtime'] = Last modification date of the file.
- // $p_info['comment'] = Comment associated with the file.
- // $p_info['folder'] = true/false : indicates if the entry is a folder or not.
- // $p_info['status'] = status of the action on the file.
- // $p_info['crc'] = CRC of the file content.
- // Parameters :
- // Return Values :
- // --------------------------------------------------------------------------------
- function privConvertHeader2FileInfo($p_header, &$p_info)
- {
- $v_result=1;
-
- // ----- Get the interesting attributes
- $v_temp_path = PclZipUtilPathReduction($p_header['filename']);
- $p_info['filename'] = $v_temp_path;
- $v_temp_path = PclZipUtilPathReduction($p_header['stored_filename']);
- $p_info['stored_filename'] = $v_temp_path;
- $p_info['size'] = $p_header['size'];
- $p_info['compressed_size'] = $p_header['compressed_size'];
- $p_info['mtime'] = $p_header['mtime'];
- $p_info['comment'] = $p_header['comment'];
- $p_info['folder'] = (($p_header['external']&0x00000010)==0x00000010);
- $p_info['index'] = $p_header['index'];
- $p_info['status'] = $p_header['status'];
- $p_info['crc'] = $p_header['crc'];
-
- // ----- Return
- return $v_result;
- }
- // --------------------------------------------------------------------------------
-
- // --------------------------------------------------------------------------------
- // Function : privExtractByRule()
- // Description :
- // Extract a file or directory depending of rules (by index, by name, ...)
- // Parameters :
- // $p_file_list : An array where will be placed the properties of each
- // extracted file
- // $p_path : Path to add while writing the extracted files
- // $p_remove_path : Path to remove (from the file memorized path) while writing the
- // extracted files. If the path does not match the file path,
- // the file is extracted with its memorized path.
- // $p_remove_path does not apply to 'list' mode.
- // $p_path and $p_remove_path are commulative.
- // Return Values :
- // 1 on success,0 or less on error (see error code list)
- // --------------------------------------------------------------------------------
- function privExtractByRule(&$p_file_list, $p_path, $p_remove_path, $p_remove_all_path, &$p_options)
- {
- $v_result=1;
-
- // ----- Magic quotes trick
- $this->privDisableMagicQuotes();
-
- // ----- Check the path
- if ( ($p_path == "")
- || ( (substr($p_path, 0, 1) != "/")
- && (substr($p_path, 0, 3) != "../")
- && (substr($p_path,1,2)!=":/")))
- $p_path = "./".$p_path;
-
- // ----- Reduce the path last (and duplicated) '/'
- if (($p_path != "./") && ($p_path != "/"))
- {
- // ----- Look for the path end '/'
- while (substr($p_path, -1) == "/")
- {
- $p_path = substr($p_path, 0, strlen($p_path)-1);
- }
- }
-
- // ----- Look for path to remove format (should end by /)
- if (($p_remove_path != "") && (substr($p_remove_path, -1) != '/'))
- {
- $p_remove_path .= '/';
- }
- $p_remove_path_size = strlen($p_remove_path);
-
- // ----- Open the zip file
- if (($v_result = $this->privOpenFd('rb')) != 1)
- {
- $this->privSwapBackMagicQuotes();
- return $v_result;
- }
-
- // ----- Read the central directory informations
- $v_central_dir = array();
- if (($v_result = $this->privReadEndCentralDir($v_central_dir)) != 1)
- {
- // ----- Close the zip file
- $this->privCloseFd();
- $this->privSwapBackMagicQuotes();
-
- return $v_result;
- }
-
- // ----- Start at beginning of Central Dir
- $v_pos_entry = $v_central_dir['offset'];
-
- // ----- Read each entry
- $j_start = 0;
- for ($i=0, $v_nb_extracted=0; $i<$v_central_dir['entries']; $i++)
- {
-
- // ----- Read next Central dir entry
- @rewind($this->zip_fd);
- if (@fseek($this->zip_fd, $v_pos_entry))
- {
- // ----- Close the zip file
- $this->privCloseFd();
- $this->privSwapBackMagicQuotes();
-
- // ----- Error log
- PclZip::privErrorLog(PCLZIP_ERR_INVALID_ARCHIVE_ZIP, 'Invalid archive size');
-
- // ----- Return
- return PclZip::errorCode();
- }
-
- // ----- Read the file header
- $v_header = array();
- if (($v_result = $this->privReadCentralFileHeader($v_header)) != 1)
- {
- // ----- Close the zip file
- $this->privCloseFd();
- $this->privSwapBackMagicQuotes();
-
- return $v_result;
- }
-
- // ----- Store the index
- $v_header['index'] = $i;
-
- // ----- Store the file position
- $v_pos_entry = ftell($this->zip_fd);
-
- // ----- Look for the specific extract rules
- $v_extract = false;
-
- // ----- Look for extract by name rule
- if ( (isset($p_options[PCLZIP_OPT_BY_NAME]))
- && ($p_options[PCLZIP_OPT_BY_NAME] != 0)) {
-
- // ----- Look if the filename is in the list
- for ($j=0; ($j<sizeof($p_options[PCLZIP_OPT_BY_NAME])) && (!$v_extract); $j++) {
-
- // ----- Look for a directory
- if (substr($p_options[PCLZIP_OPT_BY_NAME][$j], -1) == "/") {
-
- // ----- Look if the directory is in the filename path
- if ( (strlen($v_header['stored_filename']) > strlen($p_options[PCLZIP_OPT_BY_NAME][$j]))
- && (substr($v_header['stored_filename'], 0, strlen($p_options[PCLZIP_OPT_BY_NAME][$j])) == $p_options[PCLZIP_OPT_BY_NAME][$j])) {
- $v_extract = true;
- }
- }
- // ----- Look for a filename
- elseif ($v_header['stored_filename'] == $p_options[PCLZIP_OPT_BY_NAME][$j]) {
- $v_extract = true;
- }
- }
- }
-
- // ----- Look for extract by ereg rule
- // ereg() is deprecated with PHP 5.3
- /*
- else if ( (isset($p_options[PCLZIP_OPT_BY_EREG]))
- && ($p_options[PCLZIP_OPT_BY_EREG] != "")) {
-
- if (ereg($p_options[PCLZIP_OPT_BY_EREG], $v_header['stored_filename'])) {
- $v_extract = true;
- }
- }
- */
-
- // ----- Look for extract by preg rule
- else if ( (isset($p_options[PCLZIP_OPT_BY_PREG]))
- && ($p_options[PCLZIP_OPT_BY_PREG] != "")) {
-
- if (preg_match($p_options[PCLZIP_OPT_BY_PREG], $v_header['stored_filename'])) {
- $v_extract = true;
- }
- }
-
- // ----- Look for extract by index rule
- else if ( (isset($p_options[PCLZIP_OPT_BY_INDEX]))
- && ($p_options[PCLZIP_OPT_BY_INDEX] != 0)) {
-
- // ----- Look if the index is in the list
- for ($j=$j_start; ($j<sizeof($p_options[PCLZIP_OPT_BY_INDEX])) && (!$v_extract); $j++) {
-
- if (($i>=$p_options[PCLZIP_OPT_BY_INDEX][$j]['start']) && ($i<=$p_options[PCLZIP_OPT_BY_INDEX][$j]['end'])) {
- $v_extract = true;
- }
- if ($i>=$p_options[PCLZIP_OPT_BY_INDEX][$j]['end']) {
- $j_start = $j+1;
- }
-
- if ($p_options[PCLZIP_OPT_BY_INDEX][$j]['start']>$i) {
- break;
- }
- }
- }
-
- // ----- Look for no rule, which means extract all the archive
- else {
- $v_extract = true;
- }
-
- // ----- Check compression method
- if ( ($v_extract)
- && ( ($v_header['compression'] != 8)
- && ($v_header['compression'] != 0))) {
- $v_header['status'] = 'unsupported_compression';
-
- // ----- Look for PCLZIP_OPT_STOP_ON_ERROR
- if ( (isset($p_options[PCLZIP_OPT_STOP_ON_ERROR]))
- && ($p_options[PCLZIP_OPT_STOP_ON_ERROR]===true)) {
-
- $this->privSwapBackMagicQuotes();
-
- PclZip::privErrorLog(PCLZIP_ERR_UNSUPPORTED_COMPRESSION,
- "Filename '".$v_header['stored_filename']."' is "
- ."compressed by an unsupported compression "
- ."method (".$v_header['compression'].") ");
-
- return PclZip::errorCode();
- }
- }
-
- // ----- Check encrypted files
- if (($v_extract) && (($v_header['flag'] & 1) == 1)) {
- $v_header['status'] = 'unsupported_encryption';
-
- // ----- Look for PCLZIP_OPT_STOP_ON_ERROR
- if ( (isset($p_options[PCLZIP_OPT_STOP_ON_ERROR]))
- && ($p_options[PCLZIP_OPT_STOP_ON_ERROR]===true)) {
-
- $this->privSwapBackMagicQuotes();
-
- PclZip::privErrorLog(PCLZIP_ERR_UNSUPPORTED_ENCRYPTION,
- "Unsupported encryption for "
- ." filename '".$v_header['stored_filename']
- ."'");
-
- return PclZip::errorCode();
- }
- }
-
- // ----- Look for real extraction
- if (($v_extract) && ($v_header['status'] != 'ok')) {
- $v_result = $this->privConvertHeader2FileInfo($v_header,
- $p_file_list[$v_nb_extracted++]);
- if ($v_result != 1) {
- $this->privCloseFd();
- $this->privSwapBackMagicQuotes();
- return $v_result;
- }
-
- $v_extract = false;
- }
-
- // ----- Look for real extraction
- if ($v_extract)
- {
-
- // ----- Go to the file position
- @rewind($this->zip_fd);
- if (@fseek($this->zip_fd, $v_header['offset']))
- {
- // ----- Close the zip file
- $this->privCloseFd();
-
- $this->privSwapBackMagicQuotes();
-
- // ----- Error log
- PclZip::privErrorLog(PCLZIP_ERR_INVALID_ARCHIVE_ZIP, 'Invalid archive size');
-
- // ----- Return
- return PclZip::errorCode();
- }
-
- // ----- Look for extraction as string
- if ($p_options[PCLZIP_OPT_EXTRACT_AS_STRING]) {
-
- $v_string = '';
-
- // ----- Extracting the file
- $v_result1 = $this->privExtractFileAsString($v_header, $v_string, $p_options);
- if ($v_result1 < 1) {
- $this->privCloseFd();
- $this->privSwapBackMagicQuotes();
- return $v_result1;
- }
-
- // ----- Get the only interesting attributes
- if (($v_result = $this->privConvertHeader2FileInfo($v_header, $p_file_list[$v_nb_extracted])) != 1)
- {
- // ----- Close the zip file
- $this->privCloseFd();
- $this->privSwapBackMagicQuotes();
-
- return $v_result;
- }
-
- // ----- Set the file content
- $p_file_list[$v_nb_extracted]['content'] = $v_string;
-
- // ----- Next extracted file
- $v_nb_extracted++;
-
- // ----- Look for user callback abort
- if ($v_result1 == 2) {
- break;
- }
- }
- // ----- Look for extraction in standard output
- elseif ( (isset($p_options[PCLZIP_OPT_EXTRACT_IN_OUTPUT]))
- && ($p_options[PCLZIP_OPT_EXTRACT_IN_OUTPUT])) {
- // ----- Extracting the file in standard output
- $v_result1 = $this->privExtractFileInOutput($v_header, $p_options);
- if ($v_result1 < 1) {
- $this->privCloseFd();
- $this->privSwapBackMagicQuotes();
- return $v_result1;
- }
-
- // ----- Get the only interesting attributes
- if (($v_result = $this->privConvertHeader2FileInfo($v_header, $p_file_list[$v_nb_extracted++])) != 1) {
- $this->privCloseFd();
- $this->privSwapBackMagicQuotes();
- return $v_result;
- }
-
- // ----- Look for user callback abort
- if ($v_result1 == 2) {
- break;
- }
- }
- // ----- Look for normal extraction
- else {
- // ----- Extracting the file
- $v_result1 = $this->privExtractFile($v_header,
- $p_path, $p_remove_path,
- $p_remove_all_path,
- $p_options);
- if ($v_result1 < 1) {
- $this->privCloseFd();
- $this->privSwapBackMagicQuotes();
- return $v_result1;
- }
-
- // ----- Get the only interesting attributes
- if (($v_result = $this->privConvertHeader2FileInfo($v_header, $p_file_list[$v_nb_extracted++])) != 1)
- {
- // ----- Close the zip file
- $this->privCloseFd();
- $this->privSwapBackMagicQuotes();
-
- return $v_result;
- }
-
- // ----- Look for user callback abort
- if ($v_result1 == 2) {
- break;
- }
- }
- }
- }
-
- // ----- Close the zip file
- $this->privCloseFd();
- $this->privSwapBackMagicQuotes();
-
- // ----- Return
- return $v_result;
- }
- // --------------------------------------------------------------------------------
-
- // --------------------------------------------------------------------------------
- // Function : privExtractFile()
- // Description :
- // Parameters :
- // Return Values :
- //
- // 1 : ... ?
- // PCLZIP_ERR_USER_ABORTED(2) : User ask for extraction stop in callback
- // --------------------------------------------------------------------------------
- function privExtractFile(&$p_entry, $p_path, $p_remove_path, $p_remove_all_path, &$p_options)
- {
- $v_result=1;
-
- // ----- Read the file header
- if (($v_result = $this->privReadFileHeader($v_header)) != 1)
- {
- // ----- Return
- return $v_result;
- }
-
-
- // ----- Check that the file header is coherent with $p_entry info
- if ($this->privCheckFileHeaders($v_header, $p_entry) != 1) {
- // TBC
- }
-
- // ----- Look for all path to remove
- if ($p_remove_all_path == true) {
- // ----- Look for folder entry that not need to be extracted
- if (($p_entry['external']&0x00000010)==0x00000010) {
-
- $p_entry['status'] = "filtered";
-
- return $v_result;
- }
-
- // ----- Get the basename of the path
- $p_entry['filename'] = basename($p_entry['filename']);
- }
-
- // ----- Look for path to remove
- else if ($p_remove_path != "")
- {
- if (PclZipUtilPathInclusion($p_remove_path, $p_entry['filename']) == 2)
- {
-
- // ----- Change the file status
- $p_entry['status'] = "filtered";
-
- // ----- Return
- return $v_result;
- }
-
- $p_remove_path_size = strlen($p_remove_path);
- if (substr($p_entry['filename'], 0, $p_remove_path_size) == $p_remove_path)
- {
-
- // ----- Remove the path
- $p_entry['filename'] = substr($p_entry['filename'], $p_remove_path_size);
-
- }
- }
-
- // ----- Add the path
- if ($p_path != '') {
- $p_entry['filename'] = $p_path."/".$p_entry['filename'];
- }
-
- // ----- Check a base_dir_restriction
- if (isset($p_options[PCLZIP_OPT_EXTRACT_DIR_RESTRICTION])) {
- $v_inclusion
- = PclZipUtilPathInclusion($p_options[PCLZIP_OPT_EXTRACT_DIR_RESTRICTION],
- $p_entry['filename']);
- if ($v_inclusion == 0) {
-
- PclZip::privErrorLog(PCLZIP_ERR_DIRECTORY_RESTRICTION,
- "Filename '".$p_entry['filename']."' is "
- ."outside PCLZIP_OPT_EXTRACT_DIR_RESTRICTION");
-
- return PclZip::errorCode();
- }
- }
-
- // ----- Look for pre-extract callback
- if (isset($p_options[PCLZIP_CB_PRE_EXTRACT])) {
-
- // ----- Generate a local information
- $v_local_header = array();
- $this->privConvertHeader2FileInfo($p_entry, $v_local_header);
-
- // ----- Call the callback
- // Here I do not use call_user_func() because I need to send a reference to the
- // header.
-// eval('$v_result = '.$p_options[PCLZIP_CB_PRE_EXTRACT].'(PCLZIP_CB_PRE_EXTRACT, $v_local_header);');
- $v_result = $p_options[PCLZIP_CB_PRE_EXTRACT](PCLZIP_CB_PRE_EXTRACT, $v_local_header);
- if ($v_result == 0) {
- // ----- Change the file status
- $p_entry['status'] = "skipped";
- $v_result = 1;
- }
-
- // ----- Look for abort result
- if ($v_result == 2) {
- // ----- This status is internal and will be changed in 'skipped'
- $p_entry['status'] = "aborted";
- $v_result = PCLZIP_ERR_USER_ABORTED;
- }
-
- // ----- Update the informations
- // Only some fields can be modified
- $p_entry['filename'] = $v_local_header['filename'];
- }
-
-
- // ----- Look if extraction should be done
- if ($p_entry['status'] == 'ok') {
-
- // ----- Look for specific actions while the file exist
- if (file_exists($p_entry['filename']))
- {
-
- // ----- Look if file is a directory
- if (is_dir($p_entry['filename']))
- {
-
- // ----- Change the file status
- $p_entry['status'] = "already_a_directory";
-
- // ----- Look for PCLZIP_OPT_STOP_ON_ERROR
- // For historical reason first PclZip implementation does not stop
- // when this kind of error occurs.
- if ( (isset($p_options[PCLZIP_OPT_STOP_ON_ERROR]))
- && ($p_options[PCLZIP_OPT_STOP_ON_ERROR]===true)) {
-
- PclZip::privErrorLog(PCLZIP_ERR_ALREADY_A_DIRECTORY,
- "Filename '".$p_entry['filename']."' is "
- ."already used by an existing directory");
-
- return PclZip::errorCode();
- }
- }
- // ----- Look if file is write protected
- else if (!is_writeable($p_entry['filename']))
- {
-
- // ----- Change the file status
- $p_entry['status'] = "write_protected";
-
- // ----- Look for PCLZIP_OPT_STOP_ON_ERROR
- // For historical reason first PclZip implementation does not stop
- // when this kind of error occurs.
- if ( (isset($p_options[PCLZIP_OPT_STOP_ON_ERROR]))
- && ($p_options[PCLZIP_OPT_STOP_ON_ERROR]===true)) {
-
- PclZip::privErrorLog(PCLZIP_ERR_WRITE_OPEN_FAIL,
- "Filename '".$p_entry['filename']."' exists "
- ."and is write protected");
-
- return PclZip::errorCode();
- }
- }
-
- // ----- Look if the extracted file is older
- else if (filemtime($p_entry['filename']) > $p_entry['mtime'])
- {
- // ----- Change the file status
- if ( (isset($p_options[PCLZIP_OPT_REPLACE_NEWER]))
- && ($p_options[PCLZIP_OPT_REPLACE_NEWER]===true)) {
- }
- else {
- $p_entry['status'] = "newer_exist";
-
- // ----- Look for PCLZIP_OPT_STOP_ON_ERROR
- // For historical reason first PclZip implementation does not stop
- // when this kind of error occurs.
- if ( (isset($p_options[PCLZIP_OPT_STOP_ON_ERROR]))
- && ($p_options[PCLZIP_OPT_STOP_ON_ERROR]===true)) {
-
- PclZip::privErrorLog(PCLZIP_ERR_WRITE_OPEN_FAIL,
- "Newer version of '".$p_entry['filename']."' exists "
- ."and option PCLZIP_OPT_REPLACE_NEWER is not selected");
-
- return PclZip::errorCode();
- }
- }
- }
- else {
- }
- }
-
- // ----- Check the directory availability and create it if necessary
- else {
- if ((($p_entry['external']&0x00000010)==0x00000010) || (substr($p_entry['filename'], -1) == '/'))
- $v_dir_to_check = $p_entry['filename'];
- else if (!strstr($p_entry['filename'], "/"))
- $v_dir_to_check = "";
- else
- $v_dir_to_check = dirname($p_entry['filename']);
-
- if (($v_result = $this->privDirCheck($v_dir_to_check, (($p_entry['external']&0x00000010)==0x00000010))) != 1) {
-
- // ----- Change the file status
- $p_entry['status'] = "path_creation_fail";
-
- // ----- Return
- //return $v_result;
- $v_result = 1;
- }
- }
- }
-
- // ----- Look if extraction should be done
- if ($p_entry['status'] == 'ok') {
-
- // ----- Do the extraction (if not a folder)
- if (!(($p_entry['external']&0x00000010)==0x00000010))
- {
- // ----- Look for not compressed file
- if ($p_entry['compression'] == 0) {
-
- // ----- Opening destination file
- if (($v_dest_file = @fopen($p_entry['filename'], 'wb')) == 0)
- {
-
- // ----- Change the file status
- $p_entry['status'] = "write_error";
-
- // ----- Return
- return $v_result;
- }
-
-
- // ----- Read the file by PCLZIP_READ_BLOCK_SIZE octets blocks
- $v_size = $p_entry['compressed_size'];
- while ($v_size != 0)
- {
- $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE);
- $v_buffer = @fread($this->zip_fd, $v_read_size);
- /* Try to speed up the code
- $v_binary_data = pack('a'.$v_read_size, $v_buffer);
- @fwrite($v_dest_file, $v_binary_data, $v_read_size);
- */
- @fwrite($v_dest_file, $v_buffer, $v_read_size);
- $v_size -= $v_read_size;
- }
-
- // ----- Closing the destination file
- fclose($v_dest_file);
-
- // ----- Change the file mtime
- touch($p_entry['filename'], $p_entry['mtime']);
-
-
- }
- else {
- // ----- TBC
- // Need to be finished
- if (($p_entry['flag'] & 1) == 1) {
- PclZip::privErrorLog(PCLZIP_ERR_UNSUPPORTED_ENCRYPTION, 'File \''.$p_entry['filename'].'\' is encrypted. Encrypted files are not supported.');
- return PclZip::errorCode();
- }
-
-
- // ----- Look for using temporary file to unzip
- if ( (!isset($p_options[PCLZIP_OPT_TEMP_FILE_OFF]))
- && (isset($p_options[PCLZIP_OPT_TEMP_FILE_ON])
- || (isset($p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD])
- && ($p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD] <= $p_entry['size'])) ) ) {
- $v_result = $this->privExtractFileUsingTempFile($p_entry, $p_options);
- if ($v_result < PCLZIP_ERR_NO_ERROR) {
- return $v_result;
- }
- }
-
- // ----- Look for extract in memory
- else {
-
-
- // ----- Read the compressed file in a buffer (one shot)
- $v_buffer = @fread($this->zip_fd, $p_entry['compressed_size']);
-
- // ----- Decompress the file
- $v_file_content = @gzinflate($v_buffer);
- unset($v_buffer);
- if ($v_file_content === FALSE) {
-
- // ----- Change the file status
- // TBC
- $p_entry['status'] = "error";
-
- return $v_result;
- }
-
- // ----- Opening destination file
- if (($v_dest_file = @fopen($p_entry['filename'], 'wb')) == 0) {
-
- // ----- Change the file status
- $p_entry['status'] = "write_error";
-
- return $v_result;
- }
-
- // ----- Write the uncompressed data
- @fwrite($v_dest_file, $v_file_content, $p_entry['size']);
- unset($v_file_content);
-
- // ----- Closing the destination file
- @fclose($v_dest_file);
-
- }
-
- // ----- Change the file mtime
- @touch($p_entry['filename'], $p_entry['mtime']);
- }
-
- // ----- Look for chmod option
- if (isset($p_options[PCLZIP_OPT_SET_CHMOD])) {
-
- // ----- Change the mode of the file
- @chmod($p_entry['filename'], $p_options[PCLZIP_OPT_SET_CHMOD]);
- }
-
- }
- }
-
- // ----- Change abort status
- if ($p_entry['status'] == "aborted") {
- $p_entry['status'] = "skipped";
- }
-
- // ----- Look for post-extract callback
- elseif (isset($p_options[PCLZIP_CB_POST_EXTRACT])) {
-
- // ----- Generate a local information
- $v_local_header = array();
- $this->privConvertHeader2FileInfo($p_entry, $v_local_header);
-
- // ----- Call the callback
- // Here I do not use call_user_func() because I need to send a reference to the
- // header.
-// eval('$v_result = '.$p_options[PCLZIP_CB_POST_EXTRACT].'(PCLZIP_CB_POST_EXTRACT, $v_local_header);');
- $v_result = $p_options[PCLZIP_CB_POST_EXTRACT](PCLZIP_CB_POST_EXTRACT, $v_local_header);
-
- // ----- Look for abort result
- if ($v_result == 2) {
- $v_result = PCLZIP_ERR_USER_ABORTED;
- }
- }
-
- // ----- Return
- return $v_result;
- }
- // --------------------------------------------------------------------------------
-
- // --------------------------------------------------------------------------------
- // Function : privExtractFileUsingTempFile()
- // Description :
- // Parameters :
- // Return Values :
- // --------------------------------------------------------------------------------
- function privExtractFileUsingTempFile(&$p_entry, &$p_options)
- {
- $v_result=1;
-
- // ----- Creates a temporary file
- $v_gzip_temp_name = PCLZIP_TEMPORARY_DIR.uniqid('pclzip-').'.gz';
- if (($v_dest_file = @fopen($v_gzip_temp_name, "wb")) == 0) {
- fclose($v_file);
- PclZip::privErrorLog(PCLZIP_ERR_WRITE_OPEN_FAIL, 'Unable to open temporary file \''.$v_gzip_temp_name.'\' in binary write mode');
- return PclZip::errorCode();
- }
-
-
- // ----- Write gz file format header
- $v_binary_data = pack('va1a1Va1a1', 0x8b1f, Chr($p_entry['compression']), Chr(0x00), time(), Chr(0x00), Chr(3));
- @fwrite($v_dest_file, $v_binary_data, 10);
-
- // ----- Read the file by PCLZIP_READ_BLOCK_SIZE octets blocks
- $v_size = $p_entry['compressed_size'];
- while ($v_size != 0)
- {
- $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE);
- $v_buffer = @fread($this->zip_fd, $v_read_size);
- //$v_binary_data = pack('a'.$v_read_size, $v_buffer);
- @fwrite($v_dest_file, $v_buffer, $v_read_size);
- $v_size -= $v_read_size;
- }
-
- // ----- Write gz file format footer
- $v_binary_data = pack('VV', $p_entry['crc'], $p_entry['size']);
- @fwrite($v_dest_file, $v_binary_data, 8);
-
- // ----- Close the temporary file
- @fclose($v_dest_file);
-
- // ----- Opening destination file
- if (($v_dest_file = @fopen($p_entry['filename'], 'wb')) == 0) {
- $p_entry['status'] = "write_error";
- return $v_result;
- }
-
- // ----- Open the temporary gz file
- if (($v_src_file = @gzopen($v_gzip_temp_name, 'rb')) == 0) {
- @fclose($v_dest_file);
- $p_entry['status'] = "read_error";
- PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open temporary file \''.$v_gzip_temp_name.'\' in binary read mode');
- return PclZip::errorCode();
- }
-
-
- // ----- Read the file by PCLZIP_READ_BLOCK_SIZE octets blocks
- $v_size = $p_entry['size'];
- while ($v_size != 0) {
- $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE);
- $v_buffer = @gzread($v_src_file, $v_read_size);
- //$v_binary_data = pack('a'.$v_read_size, $v_buffer);
- @fwrite($v_dest_file, $v_buffer, $v_read_size);
- $v_size -= $v_read_size;
- }
- @fclose($v_dest_file);
- @gzclose($v_src_file);
-
- // ----- Delete the temporary file
- @unlink($v_gzip_temp_name);
-
- // ----- Return
- return $v_result;
- }
- // --------------------------------------------------------------------------------
-
- // --------------------------------------------------------------------------------
- // Function : privExtractFileInOutput()
- // Description :
- // Parameters :
- // Return Values :
- // --------------------------------------------------------------------------------
- function privExtractFileInOutput(&$p_entry, &$p_options)
- {
- $v_result=1;
-
- // ----- Read the file header
- if (($v_result = $this->privReadFileHeader($v_header)) != 1) {
- return $v_result;
- }
-
-
- // ----- Check that the file header is coherent with $p_entry info
- if ($this->privCheckFileHeaders($v_header, $p_entry) != 1) {
- // TBC
- }
-
- // ----- Look for pre-extract callback
- if (isset($p_options[PCLZIP_CB_PRE_EXTRACT])) {
-
- // ----- Generate a local information
- $v_local_header = array();
- $this->privConvertHeader2FileInfo($p_entry, $v_local_header);
-
- // ----- Call the callback
- // Here I do not use call_user_func() because I need to send a reference to the
- // header.
-// eval('$v_result = '.$p_options[PCLZIP_CB_PRE_EXTRACT].'(PCLZIP_CB_PRE_EXTRACT, $v_local_header);');
- $v_result = $p_options[PCLZIP_CB_PRE_EXTRACT](PCLZIP_CB_PRE_EXTRACT, $v_local_header);
- if ($v_result == 0) {
- // ----- Change the file status
- $p_entry['status'] = "skipped";
- $v_result = 1;
- }
-
- // ----- Look for abort result
- if ($v_result == 2) {
- // ----- This status is internal and will be changed in 'skipped'
- $p_entry['status'] = "aborted";
- $v_result = PCLZIP_ERR_USER_ABORTED;
- }
-
- // ----- Update the informations
- // Only some fields can be modified
- $p_entry['filename'] = $v_local_header['filename'];
- }
-
- // ----- Trace
-
- // ----- Look if extraction should be done
- if ($p_entry['status'] == 'ok') {
-
- // ----- Do the extraction (if not a folder)
- if (!(($p_entry['external']&0x00000010)==0x00000010)) {
- // ----- Look for not compressed file
- if ($p_entry['compressed_size'] == $p_entry['size']) {
-
- // ----- Read the file in a buffer (one shot)
- $v_buffer = @fread($this->zip_fd, $p_entry['compressed_size']);
-
- // ----- Send the file to the output
- echo $v_buffer;
- unset($v_buffer);
- }
- else {
-
- // ----- Read the compressed file in a buffer (one shot)
- $v_buffer = @fread($this->zip_fd, $p_entry['compressed_size']);
-
- // ----- Decompress the file
- $v_file_content = gzinflate($v_buffer);
- unset($v_buffer);
-
- // ----- Send the file to the output
- echo $v_file_content;
- unset($v_file_content);
- }
- }
- }
-
- // ----- Change abort status
- if ($p_entry['status'] == "aborted") {
- $p_entry['status'] = "skipped";
- }
-
- // ----- Look for post-extract callback
- elseif (isset($p_options[PCLZIP_CB_POST_EXTRACT])) {
-
- // ----- Generate a local information
- $v_local_header = array();
- $this->privConvertHeader2FileInfo($p_entry, $v_local_header);
-
- // ----- Call the callback
- // Here I do not use call_user_func() because I need to send a reference to the
- // header.
-// eval('$v_result = '.$p_options[PCLZIP_CB_POST_EXTRACT].'(PCLZIP_CB_POST_EXTRACT, $v_local_header);');
- $v_result = $p_options[PCLZIP_CB_POST_EXTRACT](PCLZIP_CB_POST_EXTRACT, $v_local_header);
-
- // ----- Look for abort result
- if ($v_result == 2) {
- $v_result = PCLZIP_ERR_USER_ABORTED;
- }
- }
-
- return $v_result;
- }
- // --------------------------------------------------------------------------------
-
- // --------------------------------------------------------------------------------
- // Function : privExtractFileAsString()
- // Description :
- // Parameters :
- // Return Values :
- // --------------------------------------------------------------------------------
- function privExtractFileAsString(&$p_entry, &$p_string, &$p_options)
- {
- $v_result=1;
-
- // ----- Read the file header
- $v_header = array();
- if (($v_result = $this->privReadFileHeader($v_header)) != 1)
- {
- // ----- Return
- return $v_result;
- }
-
-
- // ----- Check that the file header is coherent with $p_entry info
- if ($this->privCheckFileHeaders($v_header, $p_entry) != 1) {
- // TBC
- }
-
- // ----- Look for pre-extract callback
- if (isset($p_options[PCLZIP_CB_PRE_EXTRACT])) {
-
- // ----- Generate a local information
- $v_local_header = array();
- $this->privConvertHeader2FileInfo($p_entry, $v_local_header);
-
- // ----- Call the callback
- // Here I do not use call_user_func() because I need to send a reference to the
- // header.
-// eval('$v_result = '.$p_options[PCLZIP_CB_PRE_EXTRACT].'(PCLZIP_CB_PRE_EXTRACT, $v_local_header);');
- $v_result = $p_options[PCLZIP_CB_PRE_EXTRACT](PCLZIP_CB_PRE_EXTRACT, $v_local_header);
- if ($v_result == 0) {
- // ----- Change the file status
- $p_entry['status'] = "skipped";
- $v_result = 1;
- }
-
- // ----- Look for abort result
- if ($v_result == 2) {
- // ----- This status is internal and will be changed in 'skipped'
- $p_entry['status'] = "aborted";
- $v_result = PCLZIP_ERR_USER_ABORTED;
- }
-
- // ----- Update the informations
- // Only some fields can be modified
- $p_entry['filename'] = $v_local_header['filename'];
- }
-
-
- // ----- Look if extraction should be done
- if ($p_entry['status'] == 'ok') {
-
- // ----- Do the extraction (if not a folder)
- if (!(($p_entry['external']&0x00000010)==0x00000010)) {
- // ----- Look for not compressed file
- // if ($p_entry['compressed_size'] == $p_entry['size'])
- if ($p_entry['compression'] == 0) {
-
- // ----- Reading the file
- $p_string = @fread($this->zip_fd, $p_entry['compressed_size']);
- }
- else {
-
- // ----- Reading the file
- $v_data = @fread($this->zip_fd, $p_entry['compressed_size']);
-
- // ----- Decompress the file
- if (($p_string = @gzinflate($v_data)) === FALSE) {
- // TBC
- }
- }
-
- // ----- Trace
- }
- else {
- // TBC : error : can not extract a folder in a string
- }
-
- }
-
- // ----- Change abort status
- if ($p_entry['status'] == "aborted") {
- $p_entry['status'] = "skipped";
- }
-
- // ----- Look for post-extract callback
- elseif (isset($p_options[PCLZIP_CB_POST_EXTRACT])) {
-
- // ----- Generate a local information
- $v_local_header = array();
- $this->privConvertHeader2FileInfo($p_entry, $v_local_header);
-
- // ----- Swap the content to header
- $v_local_header['content'] = $p_string;
- $p_string = '';
-
- // ----- Call the callback
- // Here I do not use call_user_func() because I need to send a reference to the
- // header.
-// eval('$v_result = '.$p_options[PCLZIP_CB_POST_EXTRACT].'(PCLZIP_CB_POST_EXTRACT, $v_local_header);');
- $v_result = $p_options[PCLZIP_CB_POST_EXTRACT](PCLZIP_CB_POST_EXTRACT, $v_local_header);
-
- // ----- Swap back the content to header
- $p_string = $v_local_header['content'];
- unset($v_local_header['content']);
-
- // ----- Look for abort result
- if ($v_result == 2) {
- $v_result = PCLZIP_ERR_USER_ABORTED;
- }
- }
-
- // ----- Return
- return $v_result;
- }
- // --------------------------------------------------------------------------------
-
- // --------------------------------------------------------------------------------
- // Function : privReadFileHeader()
- // Description :
- // Parameters :
- // Return Values :
- // --------------------------------------------------------------------------------
- function privReadFileHeader(&$p_header)
- {
- $v_result=1;
-
- // ----- Read the 4 bytes signature
- $v_binary_data = @fread($this->zip_fd, 4);
- $v_data = unpack('Vid', $v_binary_data);
-
- // ----- Check signature
- if ($v_data['id'] != 0x04034b50)
- {
-
- // ----- Error log
- PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, 'Invalid archive structure');
-
- // ----- Return
- return PclZip::errorCode();
- }
-
- // ----- Read the first 42 bytes of the header
- $v_binary_data = fread($this->zip_fd, 26);
-
- // ----- Look for invalid block size
- if (strlen($v_binary_data) != 26)
- {
- $p_header['filename'] = "";
- $p_header['status'] = "invalid_header";
-
- // ----- Error log
- PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, "Invalid block size : ".strlen($v_binary_data));
-
- // ----- Return
- return PclZip::errorCode();
- }
-
- // ----- Extract the values
- $v_data = unpack('vversion/vflag/vcompression/vmtime/vmdate/Vcrc/Vcompressed_size/Vsize/vfilename_len/vextra_len', $v_binary_data);
-
- // ----- Get filename
- $p_header['filename'] = fread($this->zip_fd, $v_data['filename_len']);
-
- // ----- Get extra_fields
- if ($v_data['extra_len'] != 0) {
- $p_header['extra'] = fread($this->zip_fd, $v_data['extra_len']);
- }
- else {
- $p_header['extra'] = '';
- }
-
- // ----- Extract properties
- $p_header['version_extracted'] = $v_data['version'];
- $p_header['compression'] = $v_data['compression'];
- $p_header['size'] = $v_data['size'];
- $p_header['compressed_size'] = $v_data['compressed_size'];
- $p_header['crc'] = $v_data['crc'];
- $p_header['flag'] = $v_data['flag'];
- $p_header['filename_len'] = $v_data['filename_len'];
-
- // ----- Recuperate date in UNIX format
- $p_header['mdate'] = $v_data['mdate'];
- $p_header['mtime'] = $v_data['mtime'];
- if ($p_header['mdate'] && $p_header['mtime'])
- {
- // ----- Extract time
- $v_hour = ($p_header['mtime'] & 0xF800) >> 11;
- $v_minute = ($p_header['mtime'] & 0x07E0) >> 5;
- $v_seconde = ($p_header['mtime'] & 0x001F)*2;
-
- // ----- Extract date
- $v_year = (($p_header['mdate'] & 0xFE00) >> 9) + 1980;
- $v_month = ($p_header['mdate'] & 0x01E0) >> 5;
- $v_day = $p_header['mdate'] & 0x001F;
-
- // ----- Get UNIX date format
- $p_header['mtime'] = @mktime($v_hour, $v_minute, $v_seconde, $v_month, $v_day, $v_year);
-
- }
- else
- {
- $p_header['mtime'] = time();
- }
-
- // TBC
- //for(reset($v_data); $key = key($v_data); next($v_data)) {
- //}
-
- // ----- Set the stored filename
- $p_header['stored_filename'] = $p_header['filename'];
-
- // ----- Set the status field
- $p_header['status'] = "ok";
-
- // ----- Return
- return $v_result;
- }
- // --------------------------------------------------------------------------------
-
- // --------------------------------------------------------------------------------
- // Function : privReadCentralFileHeader()
- // Description :
- // Parameters :
- // Return Values :
- // --------------------------------------------------------------------------------
- function privReadCentralFileHeader(&$p_header)
- {
- $v_result=1;
-
- // ----- Read the 4 bytes signature
- $v_binary_data = @fread($this->zip_fd, 4);
- $v_data = unpack('Vid', $v_binary_data);
-
- // ----- Check signature
- if ($v_data['id'] != 0x02014b50)
- {
-
- // ----- Error log
- PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, 'Invalid archive structure');
-
- // ----- Return
- return PclZip::errorCode();
- }
-
- // ----- Read the first 42 bytes of the header
- $v_binary_data = fread($this->zip_fd, 42);
-
- // ----- Look for invalid block size
- if (strlen($v_binary_data) != 42)
- {
- $p_header['filename'] = "";
- $p_header['status'] = "invalid_header";
-
- // ----- Error log
- PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, "Invalid block size : ".strlen($v_binary_data));
-
- // ----- Return
- return PclZip::errorCode();
- }
-
- // ----- Extract the values
- $p_header = unpack('vversion/vversion_extracted/vflag/vcompression/vmtime/vmdate/Vcrc/Vcompressed_size/Vsize/vfilename_len/vextra_len/vcomment_len/vdisk/vinternal/Vexternal/Voffset', $v_binary_data);
-
- // ----- Get filename
- if ($p_header['filename_len'] != 0)
- $p_header['filename'] = fread($this->zip_fd, $p_header['filename_len']);
- else
- $p_header['filename'] = '';
-
- // ----- Get extra
- if ($p_header['extra_len'] != 0)
- $p_header['extra'] = fread($this->zip_fd, $p_header['extra_len']);
- else
- $p_header['extra'] = '';
-
- // ----- Get comment
- if ($p_header['comment_len'] != 0)
- $p_header['comment'] = fread($this->zip_fd, $p_header['comment_len']);
- else
- $p_header['comment'] = '';
-
- // ----- Extract properties
-
- // ----- Recuperate date in UNIX format
- //if ($p_header['mdate'] && $p_header['mtime'])
- // TBC : bug : this was ignoring time with 0/0/0
- if (1)
- {
- // ----- Extract time
- $v_hour = ($p_header['mtime'] & 0xF800) >> 11;
- $v_minute = ($p_header['mtime'] & 0x07E0) >> 5;
- $v_seconde = ($p_header['mtime'] & 0x001F)*2;
-
- // ----- Extract date
- $v_year = (($p_header['mdate'] & 0xFE00) >> 9) + 1980;
- $v_month = ($p_header['mdate'] & 0x01E0) >> 5;
- $v_day = $p_header['mdate'] & 0x001F;
-
- // ----- Get UNIX date format
- $p_header['mtime'] = @mktime($v_hour, $v_minute, $v_seconde, $v_month, $v_day, $v_year);
-
- }
- else
- {
- $p_header['mtime'] = time();
- }
-
- // ----- Set the stored filename
- $p_header['stored_filename'] = $p_header['filename'];
-
- // ----- Set default status to ok
- $p_header['status'] = 'ok';
-
- // ----- Look if it is a directory
- if (substr($p_header['filename'], -1) == '/') {
- //$p_header['external'] = 0x41FF0010;
- $p_header['external'] = 0x00000010;
- }
-
-
- // ----- Return
- return $v_result;
- }
- // --------------------------------------------------------------------------------
-
- // --------------------------------------------------------------------------------
- // Function : privCheckFileHeaders()
- // Description :
- // Parameters :
- // Return Values :
- // 1 on success,
- // 0 on error;
- // --------------------------------------------------------------------------------
- function privCheckFileHeaders(&$p_local_header, &$p_central_header)
- {
- $v_result=1;
-
- // ----- Check the static values
- // TBC
- if ($p_local_header['filename'] != $p_central_header['filename']) {
- }
- if ($p_local_header['version_extracted'] != $p_central_header['version_extracted']) {
- }
- if ($p_local_header['flag'] != $p_central_header['flag']) {
- }
- if ($p_local_header['compression'] != $p_central_header['compression']) {
- }
- if ($p_local_header['mtime'] != $p_central_header['mtime']) {
- }
- if ($p_local_header['filename_len'] != $p_central_header['filename_len']) {
- }
-
- // ----- Look for flag bit 3
- if (($p_local_header['flag'] & 8) == 8) {
- $p_local_header['size'] = $p_central_header['size'];
- $p_local_header['compressed_size'] = $p_central_header['compressed_size'];
- $p_local_header['crc'] = $p_central_header['crc'];
- }
-
- // ----- Return
- return $v_result;
- }
- // --------------------------------------------------------------------------------
-
- // --------------------------------------------------------------------------------
- // Function : privReadEndCentralDir()
- // Description :
- // Parameters :
- // Return Values :
- // --------------------------------------------------------------------------------
- function privReadEndCentralDir(&$p_central_dir)
- {
- $v_result=1;
-
- // ----- Go to the end of the zip file
- $v_size = filesize($this->zipname);
- @fseek($this->zip_fd, $v_size);
- if (@ftell($this->zip_fd) != $v_size)
- {
- // ----- Error log
- PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, 'Unable to go to the end of the archive \''.$this->zipname.'\'');
-
- // ----- Return
- return PclZip::errorCode();
- }
-
- // ----- First try : look if this is an archive with no commentaries (most of the time)
- // in this case the end of central dir is at 22 bytes of the file end
- $v_found = 0;
- if ($v_size > 26) {
- @fseek($this->zip_fd, $v_size-22);
- if (($v_pos = @ftell($this->zip_fd)) != ($v_size-22))
- {
- // ----- Error log
- PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, 'Unable to seek back to the middle of the archive \''.$this->zipname.'\'');
-
- // ----- Return
- return PclZip::errorCode();
- }
-
- // ----- Read for bytes
- $v_binary_data = @fread($this->zip_fd, 4);
- $v_data = @unpack('Vid', $v_binary_data);
-
- // ----- Check signature
- if ($v_data['id'] == 0x06054b50) {
- $v_found = 1;
- }
-
- $v_pos = ftell($this->zip_fd);
- }
-
- // ----- Go back to the maximum possible size of the Central Dir End Record
- if (!$v_found) {
- $v_maximum_size = 65557; // 0xFFFF + 22;
- if ($v_maximum_size > $v_size)
- $v_maximum_size = $v_size;
- @fseek($this->zip_fd, $v_size-$v_maximum_size);
- if (@ftell($this->zip_fd) != ($v_size-$v_maximum_size))
- {
- // ----- Error log
- PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, 'Unable to seek back to the middle of the archive \''.$this->zipname.'\'');
-
- // ----- Return
- return PclZip::errorCode();
- }
-
- // ----- Read byte per byte in order to find the signature
- $v_pos = ftell($this->zip_fd);
- $v_bytes = 0x00000000;
- while ($v_pos < $v_size)
- {
- // ----- Read a byte
- $v_byte = @fread($this->zip_fd, 1);
-
- // ----- Add the byte
- //$v_bytes = ($v_bytes << 8) | Ord($v_byte);
- // Note we mask the old value down such that once shifted we can never end up with more than a 32bit number
- // Otherwise on systems where we have 64bit integers the check below for the magic number will fail.
- $v_bytes = ( ($v_bytes & 0xFFFFFF) << 8) | Ord($v_byte);
-
- // ----- Compare the bytes
- if ($v_bytes == 0x504b0506)
- {
- $v_pos++;
- break;
- }
-
- $v_pos++;
- }
-
- // ----- Look if not found end of central dir
- if ($v_pos == $v_size)
- {
-
- // ----- Error log
- PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, "Unable to find End of Central Dir Record signature");
-
- // ----- Return
- return PclZip::errorCode();
- }
- }
-
- // ----- Read the first 18 bytes of the header
- $v_binary_data = fread($this->zip_fd, 18);
-
- // ----- Look for invalid block size
- if (strlen($v_binary_data) != 18)
- {
-
- // ----- Error log
- PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, "Invalid End of Central Dir Record size : ".strlen($v_binary_data));
-
- // ----- Return
- return PclZip::errorCode();
- }
-
- // ----- Extract the values
- $v_data = unpack('vdisk/vdisk_start/vdisk_entries/ventries/Vsize/Voffset/vcomment_size', $v_binary_data);
-
- // ----- Check the global size
- if (($v_pos + $v_data['comment_size'] + 18) != $v_size) {
-
- // ----- Removed in release 2.2 see readme file
- // The check of the file size is a little too strict.
- // Some bugs where found when a zip is encrypted/decrypted with 'crypt'.
- // While decrypted, zip has training 0 bytes
- if (0) {
- // ----- Error log
- PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT,
- 'The central dir is not at the end of the archive.'
- .' Some trailing bytes exists after the archive.');
-
- // ----- Return
- return PclZip::errorCode();
- }
- }
-
- // ----- Get comment
- if ($v_data['comment_size'] != 0) {
- $p_central_dir['comment'] = fread($this->zip_fd, $v_data['comment_size']);
- }
- else
- $p_central_dir['comment'] = '';
-
- $p_central_dir['entries'] = $v_data['entries'];
- $p_central_dir['disk_entries'] = $v_data['disk_entries'];
- $p_central_dir['offset'] = $v_data['offset'];
- $p_central_dir['size'] = $v_data['size'];
- $p_central_dir['disk'] = $v_data['disk'];
- $p_central_dir['disk_start'] = $v_data['disk_start'];
-
- // TBC
- //for(reset($p_central_dir); $key = key($p_central_dir); next($p_central_dir)) {
- //}
-
- // ----- Return
- return $v_result;
- }
- // --------------------------------------------------------------------------------
-
- // --------------------------------------------------------------------------------
- // Function : privDeleteByRule()
- // Description :
- // Parameters :
- // Return Values :
- // --------------------------------------------------------------------------------
- function privDeleteByRule(&$p_result_list, &$p_options)
- {
- $v_result=1;
- $v_list_detail = array();
-
- // ----- Open the zip file
- if (($v_result=$this->privOpenFd('rb')) != 1)
- {
- // ----- Return
- return $v_result;
- }
-
- // ----- Read the central directory informations
- $v_central_dir = array();
- if (($v_result = $this->privReadEndCentralDir($v_central_dir)) != 1)
- {
- $this->privCloseFd();
- return $v_result;
- }
-
- // ----- Go to beginning of File
- @rewind($this->zip_fd);
-
- // ----- Scan all the files
- // ----- Start at beginning of Central Dir
- $v_pos_entry = $v_central_dir['offset'];
- @rewind($this->zip_fd);
- if (@fseek($this->zip_fd, $v_pos_entry))
- {
- // ----- Close the zip file
- $this->privCloseFd();
-
- // ----- Error log
- PclZip::privErrorLog(PCLZIP_ERR_INVALID_ARCHIVE_ZIP, 'Invalid archive size');
-
- // ----- Return
- return PclZip::errorCode();
- }
-
- // ----- Read each entry
- $v_header_list = array();
- $j_start = 0;
- for ($i=0, $v_nb_extracted=0; $i<$v_central_dir['entries']; $i++)
- {
-
- // ----- Read the file header
- $v_header_list[$v_nb_extracted] = array();
- if (($v_result = $this->privReadCentralFileHeader($v_header_list[$v_nb_extracted])) != 1)
- {
- // ----- Close the zip file
- $this->privCloseFd();
-
- return $v_result;
- }
-
-
- // ----- Store the index
- $v_header_list[$v_nb_extracted]['index'] = $i;
-
- // ----- Look for the specific extract rules
- $v_found = false;
-
- // ----- Look for extract by name rule
- if ( (isset($p_options[PCLZIP_OPT_BY_NAME]))
- && ($p_options[PCLZIP_OPT_BY_NAME] != 0)) {
-
- // ----- Look if the filename is in the list
- for ($j=0; ($j<sizeof($p_options[PCLZIP_OPT_BY_NAME])) && (!$v_found); $j++) {
-
- // ----- Look for a directory
- if (substr($p_options[PCLZIP_OPT_BY_NAME][$j], -1) == "/") {
-
- // ----- Look if the directory is in the filename path
- if ( (strlen($v_header_list[$v_nb_extracted]['stored_filename']) > strlen($p_options[PCLZIP_OPT_BY_NAME][$j]))
- && (substr($v_header_list[$v_nb_extracted]['stored_filename'], 0, strlen($p_options[PCLZIP_OPT_BY_NAME][$j])) == $p_options[PCLZIP_OPT_BY_NAME][$j])) {
- $v_found = true;
- }
- elseif ( (($v_header_list[$v_nb_extracted]['external']&0x00000010)==0x00000010) /* Indicates a folder */
- && ($v_header_list[$v_nb_extracted]['stored_filename'].'/' == $p_options[PCLZIP_OPT_BY_NAME][$j])) {
- $v_found = true;
- }
- }
- // ----- Look for a filename
- elseif ($v_header_list[$v_nb_extracted]['stored_filename'] == $p_options[PCLZIP_OPT_BY_NAME][$j]) {
- $v_found = true;
- }
- }
- }
-
- // ----- Look for extract by ereg rule
- // ereg() is deprecated with PHP 5.3
- /*
- else if ( (isset($p_options[PCLZIP_OPT_BY_EREG]))
- && ($p_options[PCLZIP_OPT_BY_EREG] != "")) {
-
- if (ereg($p_options[PCLZIP_OPT_BY_EREG], $v_header_list[$v_nb_extracted]['stored_filename'])) {
- $v_found = true;
- }
- }
- */
-
- // ----- Look for extract by preg rule
- else if ( (isset($p_options[PCLZIP_OPT_BY_PREG]))
- && ($p_options[PCLZIP_OPT_BY_PREG] != "")) {
-
- if (preg_match($p_options[PCLZIP_OPT_BY_PREG], $v_header_list[$v_nb_extracted]['stored_filename'])) {
- $v_found = true;
- }
- }
-
- // ----- Look for extract by index rule
- else if ( (isset($p_options[PCLZIP_OPT_BY_INDEX]))
- && ($p_options[PCLZIP_OPT_BY_INDEX] != 0)) {
-
- // ----- Look if the index is in the list
- for ($j=$j_start; ($j<sizeof($p_options[PCLZIP_OPT_BY_INDEX])) && (!$v_found); $j++) {
-
- if (($i>=$p_options[PCLZIP_OPT_BY_INDEX][$j]['start']) && ($i<=$p_options[PCLZIP_OPT_BY_INDEX][$j]['end'])) {
- $v_found = true;
- }
- if ($i>=$p_options[PCLZIP_OPT_BY_INDEX][$j]['end']) {
- $j_start = $j+1;
- }
-
- if ($p_options[PCLZIP_OPT_BY_INDEX][$j]['start']>$i) {
- break;
- }
- }
- }
- else {
- $v_found = true;
- }
-
- // ----- Look for deletion
- if ($v_found)
- {
- unset($v_header_list[$v_nb_extracted]);
- }
- else
- {
- $v_nb_extracted++;
- }
- }
-
- // ----- Look if something need to be deleted
- if ($v_nb_extracted > 0) {
-
- // ----- Creates a temporay file
- $v_zip_temp_name = PCLZIP_TEMPORARY_DIR.uniqid('pclzip-').'.tmp';
-
- // ----- Creates a temporary zip archive
- $v_temp_zip = new PclZip($v_zip_temp_name);
-
- // ----- Open the temporary zip file in write mode
- if (($v_result = $v_temp_zip->privOpenFd('wb')) != 1) {
- $this->privCloseFd();
-
- // ----- Return
- return $v_result;
- }
-
- // ----- Look which file need to be kept
- for ($i=0; $i<sizeof($v_header_list); $i++) {
-
- // ----- Calculate the position of the header
- @rewind($this->zip_fd);
- if (@fseek($this->zip_fd, $v_header_list[$i]['offset'])) {
- // ----- Close the zip file
- $this->privCloseFd();
- $v_temp_zip->privCloseFd();
- @unlink($v_zip_temp_name);
-
- // ----- Error log
- PclZip::privErrorLog(PCLZIP_ERR_INVALID_ARCHIVE_ZIP, 'Invalid archive size');
-
- // ----- Return
- return PclZip::errorCode();
- }
-
- // ----- Read the file header
- $v_local_header = array();
- if (($v_result = $this->privReadFileHeader($v_local_header)) != 1) {
- // ----- Close the zip file
- $this->privCloseFd();
- $v_temp_zip->privCloseFd();
- @unlink($v_zip_temp_name);
-
- // ----- Return
- return $v_result;
- }
-
- // ----- Check that local file header is same as central file header
- if ($this->privCheckFileHeaders($v_local_header,
- $v_header_list[$i]) != 1) {
- // TBC
- }
- unset($v_local_header);
-
- // ----- Write the file header
- if (($v_result = $v_temp_zip->privWriteFileHeader($v_header_list[$i])) != 1) {
- // ----- Close the zip file
- $this->privCloseFd();
- $v_temp_zip->privCloseFd();
- @unlink($v_zip_temp_name);
-
- // ----- Return
- return $v_result;
- }
-
- // ----- Read/write the data block
- if (($v_result = PclZipUtilCopyBlock($this->zip_fd, $v_temp_zip->zip_fd, $v_header_list[$i]['compressed_size'])) != 1) {
- // ----- Close the zip file
- $this->privCloseFd();
- $v_temp_zip->privCloseFd();
- @unlink($v_zip_temp_name);
-
- // ----- Return
- return $v_result;
- }
- }
-
- // ----- Store the offset of the central dir
- $v_offset = @ftell($v_temp_zip->zip_fd);
-
- // ----- Re-Create the Central Dir files header
- for ($i=0; $i<sizeof($v_header_list); $i++) {
- // ----- Create the file header
- if (($v_result = $v_temp_zip->privWriteCentralFileHeader($v_header_list[$i])) != 1) {
- $v_temp_zip->privCloseFd();
- $this->privCloseFd();
- @unlink($v_zip_temp_name);
-
- // ----- Return
- return $v_result;
- }
-
- // ----- Transform the header to a 'usable' info
- $v_temp_zip->privConvertHeader2FileInfo($v_header_list[$i], $p_result_list[$i]);
- }
-
-
- // ----- Zip file comment
- $v_comment = '';
- if (isset($p_options[PCLZIP_OPT_COMMENT])) {
- $v_comment = $p_options[PCLZIP_OPT_COMMENT];
- }
-
- // ----- Calculate the size of the central header
- $v_size = @ftell($v_temp_zip->zip_fd)-$v_offset;
-
- // ----- Create the central dir footer
- if (($v_result = $v_temp_zip->privWriteCentralHeader(sizeof($v_header_list), $v_size, $v_offset, $v_comment)) != 1) {
- // ----- Reset the file list
- unset($v_header_list);
- $v_temp_zip->privCloseFd();
- $this->privCloseFd();
- @unlink($v_zip_temp_name);
-
- // ----- Return
- return $v_result;
- }
-
- // ----- Close
- $v_temp_zip->privCloseFd();
- $this->privCloseFd();
-
- // ----- Delete the zip file
- // TBC : I should test the result ...
- @unlink($this->zipname);
-
- // ----- Rename the temporary file
- // TBC : I should test the result ...
- //@rename($v_zip_temp_name, $this->zipname);
- PclZipUtilRename($v_zip_temp_name, $this->zipname);
-
- // ----- Destroy the temporary archive
- unset($v_temp_zip);
- }
-
- // ----- Remove every files : reset the file
- else if ($v_central_dir['entries'] != 0) {
- $this->privCloseFd();
-
- if (($v_result = $this->privOpenFd('wb')) != 1) {
- return $v_result;
- }
-
- if (($v_result = $this->privWriteCentralHeader(0, 0, 0, '')) != 1) {
- return $v_result;
- }
-
- $this->privCloseFd();
- }
-
- // ----- Return
- return $v_result;
- }
- // --------------------------------------------------------------------------------
-
- // --------------------------------------------------------------------------------
- // Function : privDirCheck()
- // Description :
- // Check if a directory exists, if not it creates it and all the parents directory
- // which may be useful.
- // Parameters :
- // $p_dir : Directory path to check.
- // Return Values :
- // 1 : OK
- // -1 : Unable to create directory
- // --------------------------------------------------------------------------------
- function privDirCheck($p_dir, $p_is_dir=false)
- {
- $v_result = 1;
-
-
- // ----- Remove the final '/'
- if (($p_is_dir) && (substr($p_dir, -1)=='/'))
- {
- $p_dir = substr($p_dir, 0, strlen($p_dir)-1);
- }
-
- // ----- Check the directory availability
- if ((is_dir($p_dir)) || ($p_dir == ""))
- {
- return 1;
- }
-
- // ----- Extract parent directory
- $p_parent_dir = dirname($p_dir);
-
- // ----- Just a check
- if ($p_parent_dir != $p_dir)
- {
- // ----- Look for parent directory
- if ($p_parent_dir != "")
- {
- if (($v_result = $this->privDirCheck($p_parent_dir)) != 1)
- {
- return $v_result;
- }
- }
- }
-
- // ----- Create the directory
- if (!@mkdir($p_dir, 0777))
- {
- // ----- Error log
- PclZip::privErrorLog(PCLZIP_ERR_DIR_CREATE_FAIL, "Unable to create directory '$p_dir'");
-
- // ----- Return
- return PclZip::errorCode();
- }
-
- // ----- Return
- return $v_result;
- }
- // --------------------------------------------------------------------------------
-
- // --------------------------------------------------------------------------------
- // Function : privMerge()
- // Description :
- // If $p_archive_to_add does not exist, the function exit with a success result.
- // Parameters :
- // Return Values :
- // --------------------------------------------------------------------------------
- function privMerge(&$p_archive_to_add)
- {
- $v_result=1;
-
- // ----- Look if the archive_to_add exists
- if (!is_file($p_archive_to_add->zipname))
- {
-
- // ----- Nothing to merge, so merge is a success
- $v_result = 1;
-
- // ----- Return
- return $v_result;
- }
-
- // ----- Look if the archive exists
- if (!is_file($this->zipname))
- {
-
- // ----- Do a duplicate
- $v_result = $this->privDuplicate($p_archive_to_add->zipname);
-
- // ----- Return
- return $v_result;
- }
-
- // ----- Open the zip file
- if (($v_result=$this->privOpenFd('rb')) != 1)
- {
- // ----- Return
- return $v_result;
- }
-
- // ----- Read the central directory informations
- $v_central_dir = array();
- if (($v_result = $this->privReadEndCentralDir($v_central_dir)) != 1)
- {
- $this->privCloseFd();
- return $v_result;
- }
-
- // ----- Go to beginning of File
- @rewind($this->zip_fd);
-
- // ----- Open the archive_to_add file
- if (($v_result=$p_archive_to_add->privOpenFd('rb')) != 1)
- {
- $this->privCloseFd();
-
- // ----- Return
- return $v_result;
- }
-
- // ----- Read the central directory informations
- $v_central_dir_to_add = array();
- if (($v_result = $p_archive_to_add->privReadEndCentralDir($v_central_dir_to_add)) != 1)
- {
- $this->privCloseFd();
- $p_archive_to_add->privCloseFd();
-
- return $v_result;
- }
-
- // ----- Go to beginning of File
- @rewind($p_archive_to_add->zip_fd);
-
- // ----- Creates a temporay file
- $v_zip_temp_name = PCLZIP_TEMPORARY_DIR.uniqid('pclzip-').'.tmp';
-
- // ----- Open the temporary file in write mode
- if (($v_zip_temp_fd = @fopen($v_zip_temp_name, 'wb')) == 0)
- {
- $this->privCloseFd();
- $p_archive_to_add->privCloseFd();
-
- PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open temporary file \''.$v_zip_temp_name.'\' in binary write mode');
-
- // ----- Return
- return PclZip::errorCode();
- }
-
- // ----- Copy the files from the archive to the temporary file
- // TBC : Here I should better append the file and go back to erase the central dir
- $v_size = $v_central_dir['offset'];
- while ($v_size != 0)
- {
- $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE);
- $v_buffer = fread($this->zip_fd, $v_read_size);
- @fwrite($v_zip_temp_fd, $v_buffer, $v_read_size);
- $v_size -= $v_read_size;
- }
-
- // ----- Copy the files from the archive_to_add into the temporary file
- $v_size = $v_central_dir_to_add['offset'];
- while ($v_size != 0)
- {
- $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE);
- $v_buffer = fread($p_archive_to_add->zip_fd, $v_read_size);
- @fwrite($v_zip_temp_fd, $v_buffer, $v_read_size);
- $v_size -= $v_read_size;
- }
-
- // ----- Store the offset of the central dir
- $v_offset = @ftell($v_zip_temp_fd);
-
- // ----- Copy the block of file headers from the old archive
- $v_size = $v_central_dir['size'];
- while ($v_size != 0)
- {
- $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE);
- $v_buffer = @fread($this->zip_fd, $v_read_size);
- @fwrite($v_zip_temp_fd, $v_buffer, $v_read_size);
- $v_size -= $v_read_size;
- }
-
- // ----- Copy the block of file headers from the archive_to_add
- $v_size = $v_central_dir_to_add['size'];
- while ($v_size != 0)
- {
- $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE);
- $v_buffer = @fread($p_archive_to_add->zip_fd, $v_read_size);
- @fwrite($v_zip_temp_fd, $v_buffer, $v_read_size);
- $v_size -= $v_read_size;
- }
-
- // ----- Merge the file comments
- $v_comment = $v_central_dir['comment'].' '.$v_central_dir_to_add['comment'];
-
- // ----- Calculate the size of the (new) central header
- $v_size = @ftell($v_zip_temp_fd)-$v_offset;
-
- // ----- Swap the file descriptor
- // Here is a trick : I swap the temporary fd with the zip fd, in order to use
- // the following methods on the temporary fil and not the real archive fd
- $v_swap = $this->zip_fd;
- $this->zip_fd = $v_zip_temp_fd;
- $v_zip_temp_fd = $v_swap;
-
- // ----- Create the central dir footer
- if (($v_result = $this->privWriteCentralHeader($v_central_dir['entries']+$v_central_dir_to_add['entries'], $v_size, $v_offset, $v_comment)) != 1)
- {
- $this->privCloseFd();
- $p_archive_to_add->privCloseFd();
- @fclose($v_zip_temp_fd);
- $this->zip_fd = null;
-
- // ----- Reset the file list
- unset($v_header_list);
-
- // ----- Return
- return $v_result;
- }
-
- // ----- Swap back the file descriptor
- $v_swap = $this->zip_fd;
- $this->zip_fd = $v_zip_temp_fd;
- $v_zip_temp_fd = $v_swap;
-
- // ----- Close
- $this->privCloseFd();
- $p_archive_to_add->privCloseFd();
-
- // ----- Close the temporary file
- @fclose($v_zip_temp_fd);
-
- // ----- Delete the zip file
- // TBC : I should test the result ...
- @unlink($this->zipname);
-
- // ----- Rename the temporary file
- // TBC : I should test the result ...
- //@rename($v_zip_temp_name, $this->zipname);
- PclZipUtilRename($v_zip_temp_name, $this->zipname);
-
- // ----- Return
- return $v_result;
- }
- // --------------------------------------------------------------------------------
-
- // --------------------------------------------------------------------------------
- // Function : privDuplicate()
- // Description :
- // Parameters :
- // Return Values :
- // --------------------------------------------------------------------------------
- function privDuplicate($p_archive_filename)
- {
- $v_result=1;
-
- // ----- Look if the $p_archive_filename exists
- if (!is_file($p_archive_filename))
- {
-
- // ----- Nothing to duplicate, so duplicate is a success.
- $v_result = 1;
-
- // ----- Return
- return $v_result;
- }
-
- // ----- Open the zip file
- if (($v_result=$this->privOpenFd('wb')) != 1)
- {
- // ----- Return
- return $v_result;
- }
-
- // ----- Open the temporary file in write mode
- if (($v_zip_temp_fd = @fopen($p_archive_filename, 'rb')) == 0)
- {
- $this->privCloseFd();
-
- PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open archive file \''.$p_archive_filename.'\' in binary write mode');
-
- // ----- Return
- return PclZip::errorCode();
- }
-
- // ----- Copy the files from the archive to the temporary file
- // TBC : Here I should better append the file and go back to erase the central dir
- $v_size = filesize($p_archive_filename);
- while ($v_size != 0)
- {
- $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE);
- $v_buffer = fread($v_zip_temp_fd, $v_read_size);
- @fwrite($this->zip_fd, $v_buffer, $v_read_size);
- $v_size -= $v_read_size;
- }
-
- // ----- Close
- $this->privCloseFd();
-
- // ----- Close the temporary file
- @fclose($v_zip_temp_fd);
-
- // ----- Return
- return $v_result;
- }
- // --------------------------------------------------------------------------------
-
- // --------------------------------------------------------------------------------
- // Function : privErrorLog()
- // Description :
- // Parameters :
- // --------------------------------------------------------------------------------
- function privErrorLog($p_error_code=0, $p_error_string='')
- {
- if (PCLZIP_ERROR_EXTERNAL == 1) {
- PclError($p_error_code, $p_error_string);
- }
- else {
- $this->error_code = $p_error_code;
- $this->error_string = $p_error_string;
- }
- }
- // --------------------------------------------------------------------------------
-
- // --------------------------------------------------------------------------------
- // Function : privErrorReset()
- // Description :
- // Parameters :
- // --------------------------------------------------------------------------------
- function privErrorReset()
- {
- if (PCLZIP_ERROR_EXTERNAL == 1) {
- PclErrorReset();
- }
- else {
- $this->error_code = 0;
- $this->error_string = '';
- }
- }
- // --------------------------------------------------------------------------------
-
- // --------------------------------------------------------------------------------
- // Function : privDisableMagicQuotes()
- // Description :
- // Parameters :
- // Return Values :
- // --------------------------------------------------------------------------------
- function privDisableMagicQuotes()
- {
- $v_result=1;
-
- // ----- Look if function exists
- if ( (!function_exists("get_magic_quotes_runtime"))
- || (!function_exists("set_magic_quotes_runtime"))) {
- return $v_result;
- }
-
- // ----- Look if already done
- if ($this->magic_quotes_status != -1) {
- return $v_result;
- }
-
- // ----- Get and memorize the magic_quote value
- $this->magic_quotes_status = @get_magic_quotes_runtime();
-
- // ----- Disable magic_quotes
- if ($this->magic_quotes_status == 1) {
- @set_magic_quotes_runtime(0);
- }
-
- // ----- Return
- return $v_result;
- }
- // --------------------------------------------------------------------------------
-
- // --------------------------------------------------------------------------------
- // Function : privSwapBackMagicQuotes()
- // Description :
- // Parameters :
- // Return Values :
- // --------------------------------------------------------------------------------
- function privSwapBackMagicQuotes()
- {
- $v_result=1;
-
- // ----- Look if function exists
- if ( (!function_exists("get_magic_quotes_runtime"))
- || (!function_exists("set_magic_quotes_runtime"))) {
- return $v_result;
- }
-
- // ----- Look if something to do
- if ($this->magic_quotes_status != -1) {
- return $v_result;
- }
-
- // ----- Swap back magic_quotes
- if ($this->magic_quotes_status == 1) {
- @set_magic_quotes_runtime($this->magic_quotes_status);
- }
-
- // ----- Return
- return $v_result;
- }
- // --------------------------------------------------------------------------------
-
- }
- // End of class
- // --------------------------------------------------------------------------------
-
- // --------------------------------------------------------------------------------
- // Function : PclZipUtilPathReduction()
- // Description :
- // Parameters :
- // Return Values :
- // --------------------------------------------------------------------------------
- function PclZipUtilPathReduction($p_dir)
- {
- $v_result = "";
-
- // ----- Look for not empty path
- if ($p_dir != "") {
- // ----- Explode path by directory names
- $v_list = explode("/", $p_dir);
-
- // ----- Study directories from last to first
- $v_skip = 0;
- for ($i=sizeof($v_list)-1; $i>=0; $i--) {
- // ----- Look for current path
- if ($v_list[$i] == ".") {
- // ----- Ignore this directory
- // Should be the first $i=0, but no check is done
- }
- else if ($v_list[$i] == "..") {
- $v_skip++;
- }
- else if ($v_list[$i] == "") {
- // ----- First '/' i.e. root slash
- if ($i == 0) {
- $v_result = "/".$v_result;
- if ($v_skip > 0) {
- // ----- It is an invalid path, so the path is not modified
- // TBC
- $v_result = $p_dir;
- $v_skip = 0;
- }
- }
- // ----- Last '/' i.e. indicates a directory
- else if ($i == (sizeof($v_list)-1)) {
- $v_result = $v_list[$i];
- }
- // ----- Double '/' inside the path
- else {
- // ----- Ignore only the double '//' in path,
- // but not the first and last '/'
- }
- }
- else {
- // ----- Look for item to skip
- if ($v_skip > 0) {
- $v_skip--;
- }
- else {
- $v_result = $v_list[$i].($i!=(sizeof($v_list)-1)?"/".$v_result:"");
- }
- }
- }
-
- // ----- Look for skip
- if ($v_skip > 0) {
- while ($v_skip > 0) {
- $v_result = '../'.$v_result;
- $v_skip--;
- }
- }
- }
-
- // ----- Return
- return $v_result;
- }
- // --------------------------------------------------------------------------------
-
- // --------------------------------------------------------------------------------
- // Function : PclZipUtilPathInclusion()
- // Description :
- // This function indicates if the path $p_path is under the $p_dir tree. Or,
- // said in an other way, if the file or sub-dir $p_path is inside the dir
- // $p_dir.
- // The function indicates also if the path is exactly the same as the dir.
- // This function supports path with duplicated '/' like '//', but does not
- // support '.' or '..' statements.
- // Parameters :
- // Return Values :
- // 0 if $p_path is not inside directory $p_dir
- // 1 if $p_path is inside directory $p_dir
- // 2 if $p_path is exactly the same as $p_dir
- // --------------------------------------------------------------------------------
- function PclZipUtilPathInclusion($p_dir, $p_path)
- {
- $v_result = 1;
-
- // ----- Look for path beginning by ./
- if ( ($p_dir == '.')
- || ((strlen($p_dir) >=2) && (substr($p_dir, 0, 2) == './'))) {
- $p_dir = PclZipUtilTranslateWinPath(getcwd(), FALSE).'/'.substr($p_dir, 1);
- }
- if ( ($p_path == '.')
- || ((strlen($p_path) >=2) && (substr($p_path, 0, 2) == './'))) {
- $p_path = PclZipUtilTranslateWinPath(getcwd(), FALSE).'/'.substr($p_path, 1);
- }
-
- // ----- Explode dir and path by directory separator
- $v_list_dir = explode("/", $p_dir);
- $v_list_dir_size = sizeof($v_list_dir);
- $v_list_path = explode("/", $p_path);
- $v_list_path_size = sizeof($v_list_path);
-
- // ----- Study directories paths
- $i = 0;
- $j = 0;
- while (($i < $v_list_dir_size) && ($j < $v_list_path_size) && ($v_result)) {
-
- // ----- Look for empty dir (path reduction)
- if ($v_list_dir[$i] == '') {
- $i++;
- continue;
- }
- if ($v_list_path[$j] == '') {
- $j++;
- continue;
- }
-
- // ----- Compare the items
- if (($v_list_dir[$i] != $v_list_path[$j]) && ($v_list_dir[$i] != '') && ( $v_list_path[$j] != '')) {
- $v_result = 0;
- }
-
- // ----- Next items
- $i++;
- $j++;
- }
-
- // ----- Look if everything seems to be the same
- if ($v_result) {
- // ----- Skip all the empty items
- while (($j < $v_list_path_size) && ($v_list_path[$j] == '')) $j++;
- while (($i < $v_list_dir_size) && ($v_list_dir[$i] == '')) $i++;
-
- if (($i >= $v_list_dir_size) && ($j >= $v_list_path_size)) {
- // ----- There are exactly the same
- $v_result = 2;
- }
- else if ($i < $v_list_dir_size) {
- // ----- The path is shorter than the dir
- $v_result = 0;
- }
- }
-
- // ----- Return
- return $v_result;
- }
- // --------------------------------------------------------------------------------
-
- // --------------------------------------------------------------------------------
- // Function : PclZipUtilCopyBlock()
- // Description :
- // Parameters :
- // $p_mode : read/write compression mode
- // 0 : src & dest normal
- // 1 : src gzip, dest normal
- // 2 : src normal, dest gzip
- // 3 : src & dest gzip
- // Return Values :
- // --------------------------------------------------------------------------------
- function PclZipUtilCopyBlock($p_src, $p_dest, $p_size, $p_mode=0)
- {
- $v_result = 1;
-
- if ($p_mode==0)
- {
- while ($p_size != 0)
- {
- $v_read_size = ($p_size < PCLZIP_READ_BLOCK_SIZE ? $p_size : PCLZIP_READ_BLOCK_SIZE);
- $v_buffer = @fread($p_src, $v_read_size);
- @fwrite($p_dest, $v_buffer, $v_read_size);
- $p_size -= $v_read_size;
- }
- }
- else if ($p_mode==1)
- {
- while ($p_size != 0)
- {
- $v_read_size = ($p_size < PCLZIP_READ_BLOCK_SIZE ? $p_size : PCLZIP_READ_BLOCK_SIZE);
- $v_buffer = @gzread($p_src, $v_read_size);
- @fwrite($p_dest, $v_buffer, $v_read_size);
- $p_size -= $v_read_size;
- }
- }
- else if ($p_mode==2)
- {
- while ($p_size != 0)
- {
- $v_read_size = ($p_size < PCLZIP_READ_BLOCK_SIZE ? $p_size : PCLZIP_READ_BLOCK_SIZE);
- $v_buffer = @fread($p_src, $v_read_size);
- @gzwrite($p_dest, $v_buffer, $v_read_size);
- $p_size -= $v_read_size;
- }
- }
- else if ($p_mode==3)
- {
- while ($p_size != 0)
- {
- $v_read_size = ($p_size < PCLZIP_READ_BLOCK_SIZE ? $p_size : PCLZIP_READ_BLOCK_SIZE);
- $v_buffer = @gzread($p_src, $v_read_size);
- @gzwrite($p_dest, $v_buffer, $v_read_size);
- $p_size -= $v_read_size;
- }
- }
-
- // ----- Return
- return $v_result;
- }
- // --------------------------------------------------------------------------------
-
- // --------------------------------------------------------------------------------
- // Function : PclZipUtilRename()
- // Description :
- // This function tries to do a simple rename() function. If it fails, it
- // tries to copy the $p_src file in a new $p_dest file and then unlink the
- // first one.
- // Parameters :
- // $p_src : Old filename
- // $p_dest : New filename
- // Return Values :
- // 1 on success, 0 on failure.
- // --------------------------------------------------------------------------------
- function PclZipUtilRename($p_src, $p_dest)
- {
- $v_result = 1;
-
- // ----- Try to rename the files
- if (!@rename($p_src, $p_dest)) {
-
- // ----- Try to copy & unlink the src
- if (!@copy($p_src, $p_dest)) {
- $v_result = 0;
- }
- else if (!@unlink($p_src)) {
- $v_result = 0;
- }
- }
-
- // ----- Return
- return $v_result;
- }
- // --------------------------------------------------------------------------------
-
- // --------------------------------------------------------------------------------
- // Function : PclZipUtilOptionText()
- // Description :
- // Translate option value in text. Mainly for debug purpose.
- // Parameters :
- // $p_option : the option value.
- // Return Values :
- // The option text value.
- // --------------------------------------------------------------------------------
- function PclZipUtilOptionText($p_option)
- {
-
- $v_list = get_defined_constants();
- for (reset($v_list); $v_key = key($v_list); next($v_list)) {
- $v_prefix = substr($v_key, 0, 10);
- if (( ($v_prefix == 'PCLZIP_OPT')
- || ($v_prefix == 'PCLZIP_CB_')
- || ($v_prefix == 'PCLZIP_ATT'))
- && ($v_list[$v_key] == $p_option)) {
- return $v_key;
- }
- }
-
- $v_result = 'Unknown';
-
- return $v_result;
- }
- // --------------------------------------------------------------------------------
-
- // --------------------------------------------------------------------------------
- // Function : PclZipUtilTranslateWinPath()
- // Description :
- // Translate windows path by replacing '\' by '/' and optionally removing
- // drive letter.
- // Parameters :
- // $p_path : path to translate.
- // $p_remove_disk_letter : true | false
- // Return Values :
- // The path translated.
- // --------------------------------------------------------------------------------
- function PclZipUtilTranslateWinPath($p_path, $p_remove_disk_letter=true)
- {
- if (stristr(php_uname(), 'windows')) {
- // ----- Look for potential disk letter
- if (($p_remove_disk_letter) && (($v_position = strpos($p_path, ':')) != false)) {
- $p_path = substr($p_path, $v_position+1);
- }
- // ----- Change potential windows directory separator
- if ((strpos($p_path, '\\') > 0) || (substr($p_path, 0,1) == '\\')) {
- $p_path = strtr($p_path, '\\', '/');
- }
- }
- return $p_path;
- }
- // --------------------------------------------------------------------------------
-
-
-?>
diff --git a/admin/survey/excel/PHPExcel/Shared/PCLZip/readme.txt b/admin/survey/excel/PHPExcel/Shared/PCLZip/readme.txt
deleted file mode 100644
index 6ed8839..0000000
--- a/admin/survey/excel/PHPExcel/Shared/PCLZip/readme.txt
+++ /dev/null
@@ -1,421 +0,0 @@
-// --------------------------------------------------------------------------------
-// PclZip 2.8.2 - readme.txt
-// --------------------------------------------------------------------------------
-// License GNU/LGPL - August 2009
-// Vincent Blavet - vincent@phpconcept.net
-// http://www.phpconcept.net
-// --------------------------------------------------------------------------------
-// $Id: readme.txt,v 1.60 2009/09/30 20:35:21 vblavet Exp $
-// --------------------------------------------------------------------------------
-
-
-
-0 - Sommaire
-============
- 1 - Introduction
- 2 - What's new
- 3 - Corrected bugs
- 4 - Known bugs or limitations
- 5 - License
- 6 - Warning
- 7 - Documentation
- 8 - Author
- 9 - Contribute
-
-1 - Introduction
-================
-
- PclZip is a library that allow you to manage a Zip archive.
-
- Full documentation about PclZip can be found here : http://www.phpconcept.net/pclzip
-
-2 - What's new
-==============
-
- Version 2.8.2 :
- - PCLZIP_CB_PRE_EXTRACT and PCLZIP_CB_POST_EXTRACT are now supported with
- extraction as a string (PCLZIP_OPT_EXTRACT_AS_STRING). The string
- can also be modified in the post-extract call back.
- **Bugs correction :
- - PCLZIP_OPT_REMOVE_ALL_PATH was not working correctly
- - Remove use of eval() and do direct call to callback functions
- - Correct support of 64bits systems (Thanks to WordPress team)
-
- Version 2.8.1 :
- - Move option PCLZIP_OPT_BY_EREG to PCLZIP_OPT_BY_PREG because ereg() is
- deprecated in PHP 5.3. When using option PCLZIP_OPT_BY_EREG, PclZip will
- automatically replace it by PCLZIP_OPT_BY_PREG.
-
- Version 2.8 :
- - Improve extraction of zip archive for large files by using temporary files
- This feature is working like the one defined in r2.7.
- Options are renamed : PCLZIP_OPT_TEMP_FILE_ON, PCLZIP_OPT_TEMP_FILE_OFF,
- PCLZIP_OPT_TEMP_FILE_THRESHOLD
- - Add a ratio constant PCLZIP_TEMPORARY_FILE_RATIO to configure the auto
- sense of temporary file use.
- - Bug correction : Reduce filepath in returned file list to remove ennoying
- './/' preambule in file path.
-
- Version 2.7 :
- - Improve creation of zip archive for large files :
- PclZip will now autosense the configured memory and use temporary files
- when large file is suspected.
- This feature can also ne triggered by manual options in create() and add()
- methods. 'PCLZIP_OPT_ADD_TEMP_FILE_ON' force the use of temporary files,
- 'PCLZIP_OPT_ADD_TEMP_FILE_OFF' disable the autosense technic,
- 'PCLZIP_OPT_ADD_TEMP_FILE_THRESHOLD' allow for configuration of a size
- threshold to use temporary files.
- Using "temporary files" rather than "memory" might take more time, but
- might give the ability to zip very large files :
- Tested on my win laptop with a 88Mo file :
- Zip "in-memory" : 18sec (max_execution_time=30, memory_limit=180Mo)
- Zip "tmporary-files" : 23sec (max_execution_time=30, memory_limit=30Mo)
- - Replace use of mktime() by time() to limit the E_STRICT error messages.
- - Bug correction : When adding files with full windows path (drive letter)
- PclZip is now working. Before, if the drive letter is not the default
- path, PclZip was not able to add the file.
-
- Version 2.6 :
- - Code optimisation
- - New attributes PCLZIP_ATT_FILE_COMMENT gives the ability to
- add a comment for a specific file. (Don't really know if this is usefull)
- - New attribute PCLZIP_ATT_FILE_CONTENT gives the ability to add a string
- as a file.
- - New attribute PCLZIP_ATT_FILE_MTIME modify the timestamp associated with
- a file.
- - Correct a bug. Files archived with a timestamp with 0h0m0s were extracted
- with current time
- - Add CRC value in the informations returned back for each file after an
- action.
- - Add missing closedir() statement.
- - When adding a folder, and removing the path of this folder, files were
- incorrectly added with a '/' at the beginning. Which means files are
- related to root in unix systems. Corrected.
- - Add conditional if before constant definition. This will allow users
- to redefine constants without changing the file, and then improve
- upgrade of pclzip code for new versions.
-
- Version 2.5 :
- - Introduce the ability to add file/folder with individual properties (file descriptor).
- This gives for example the ability to change the filename of a zipped file.
- . Able to add files individually
- . Able to change full name
- . Able to change short name
- . Compatible with global options
- - New attributes : PCLZIP_ATT_FILE_NAME, PCLZIP_ATT_FILE_NEW_SHORT_NAME, PCLZIP_ATT_FILE_NEW_FULL_NAME
- - New error code : PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE
- - Add a security control feature. PclZip can extract any file in any folder
- of a system. People may use this to upload a zip file and try to override
- a system file. The PCLZIP_OPT_EXTRACT_DIR_RESTRICTION will give the
- ability to forgive any directory transversal behavior.
- - New PCLZIP_OPT_EXTRACT_DIR_RESTRICTION : check extraction path
- - New error code : PCLZIP_ERR_DIRECTORY_RESTRICTION
- - Modification in PclZipUtilPathInclusion() : dir and path beginning with ./ will be prepend
- by current path (getcwd())
-
- Version 2.4 :
- - Code improvment : try to speed up the code by removing unusefull call to pack()
- - Correct bug in delete() : delete() should be called with no argument. This was not
- the case in 2.3. This is corrected in 2.4.
- - Correct a bug in path_inclusion function. When the path has several '../../', the
- result was bad.
- - Add a check for magic_quotes_runtime configuration. If enabled, PclZip will
- disable it while working and det it back to its original value.
- This resolve a lots of bad formated archive errors.
- - Bug correction : PclZip now correctly unzip file in some specific situation,
- when compressed content has same size as uncompressed content.
- - Bug correction : When selecting option 'PCLZIP_OPT_REMOVE_ALL_PATH',
- directories are not any more created.
- - Code improvment : correct unclosed opendir(), better handling of . and .. in
- loops.
-
-
- Version 2.3 :
- - Correct a bug with PHP5 : affecting the value 0xFE49FFE0 to a variable does not
- give the same result in PHP4 and PHP5 ....
-
- Version 2.2 :
- - Try development of PCLZIP_OPT_CRYPT .....
- However this becomes to a stop. To crypt/decrypt I need to multiply 2 long integers,
- the result (greater than a long) is not supported by PHP. Even the use of bcmath
- functions does not help. I did not find yet a solution ...;
- - Add missing '/' at end of directory entries
- - Check is a file is encrypted or not. Returns status 'unsupported_encryption' and/or
- error code PCLZIP_ERR_UNSUPPORTED_ENCRYPTION.
- - Corrected : Bad "version need to extract" field in local file header
- - Add private method privCheckFileHeaders() in order to check local and central
- file headers. PclZip is now supporting purpose bit flag bit 3. Purpose bit flag bit 3 gives
- the ability to have a local file header without size, compressed size and crc filled.
- - Add a generic status 'error' for file status
- - Add control of compression type. PclZip only support deflate compression method.
- Before v2.2, PclZip does not check the compression method used in an archive while
- extracting. With v2.2 PclZip returns a new error status for a file using an unsupported
- compression method. New status is "unsupported_compression". New error code is
- PCLZIP_ERR_UNSUPPORTED_COMPRESSION.
- - Add optional attribute PCLZIP_OPT_STOP_ON_ERROR. This will stop the extract of files
- when errors like 'a folder with same name exists' or 'a newer file exists' or
- 'a write protected file' exists, rather than set a status for the concerning file
- and resume the extract of the zip.
- - Add optional attribute PCLZIP_OPT_REPLACE_NEWER. This will force, during an extract' the
- replacement of the file, even if a newer version of the file exists.
- Note that today if a file with the same name already exists but is older it will be
- replaced by the extracted one.
- - Improve PclZipUtilOption()
- - Support of zip archive with trailing bytes. Before 2.2, PclZip checks that the central
- directory structure is the last data in the archive. Crypt encryption/decryption of
- zip archive put trailing 0 bytes after decryption. PclZip is now supporting this.
-
- Version 2.1 :
- - Add the ability to abort the extraction by using a user callback function.
- The user can now return the value '2' in its callback which indicates to stop the
- extraction. For a pre call-back extract is stopped before the extration of the current
- file. For a post call back, the extraction is stopped after.
- - Add the ability to extract a file (or several files) directly in the standard output.
- This is done by the new parameter PCLZIP_OPT_EXTRACT_IN_OUTPUT with method extract().
- - Add support for parameters PCLZIP_OPT_COMMENT, PCLZIP_OPT_ADD_COMMENT,
- PCLZIP_OPT_PREPEND_COMMENT. This will create, replace, add, or prepend comments
- in the zip archive.
- - When merging two archives, the comments are not any more lost, but merged, with a
- blank space separator.
- - Corrected bug : Files are not deleted when all files are asked to be deleted.
- - Corrected bug : Folders with name '0' made PclZip to abort the create or add feature.
-
-
- Version 2.0 :
- ***** Warning : Some new features may break the backward compatibility for your scripts.
- Please carefully read the readme file.
- - Add the ability to delete by Index, name and regular expression. This feature is
- performed by the method delete(), which uses the optional parameters
- PCLZIP_OPT_BY_INDEX, PCLZIP_OPT_BY_NAME, PCLZIP_OPT_BY_EREG or PCLZIP_OPT_BY_PREG.
- - Add the ability to extract by regular expression. To extract by regexp you must use the method
- extract(), with the option PCLZIP_OPT_BY_EREG or PCLZIP_OPT_BY_PREG
- (depending if you want to use ereg() or preg_match() syntax) followed by the
- regular expression pattern.
- - Add the ability to extract by index, directly with the extract() method. This is a
- code improvment of the extractByIndex() method.
- - Add the ability to extract by name. To extract by name you must use the method
- extract(), with the option PCLZIP_OPT_BY_NAME followed by the filename to
- extract or an array of filenames to extract. To extract all a folder, use the folder
- name rather than the filename with a '/' at the end.
- - Add the ability to add files without compression. This is done with a new attribute
- which is PCLZIP_OPT_NO_COMPRESSION.
- - Add the attribute PCLZIP_OPT_EXTRACT_AS_STRING, which allow to extract a file directly
- in a string without using any file (or temporary file).
- - Add constant PCLZIP_SEPARATOR for static configuration of filename separators in a single string.
- The default separator is now a comma (,) and not any more a blank space.
- THIS BREAK THE BACKWARD COMPATIBILITY : Please check if this may have an impact with
- your script.
- - Improve algorythm performance by removing the use of temporary files when adding or
- extracting files in an archive.
- - Add (correct) detection of empty filename zipping. This can occurs when the removed
- path is the same
- as a zipped dir. The dir is not zipped (['status'] = filtered), only its content.
- - Add better support for windows paths (thanks for help from manus@manusfreedom.com).
- - Corrected bug : When the archive file already exists with size=0, the add() method
- fails. Corrected in 2.0.
- - Remove the use of OS_WINDOWS constant. Use php_uname() function rather.
- - Control the order of index ranges in extract by index feature.
- - Change the internal management of folders (better handling of internal flag).
-
-
- Version 1.3 :
- - Removing the double include check. This is now done by include_once() and require_once()
- PHP directives.
- - Changing the error handling mecanism : Remove the use of an external error library.
- The former PclError...() functions are replaced by internal equivalent methods.
- By changing the environment variable PCLZIP_ERROR_EXTERNAL you can still use the former library.
- Introducing the use of constants for error codes rather than integer values. This will help
- in futur improvment.
- Introduction of error handling functions like errorCode(), errorName() and errorInfo().
- - Remove the deprecated use of calling function with arguments passed by reference.
- - Add the calling of extract(), extractByIndex(), create() and add() functions
- with variable options rather than fixed arguments.
- - Add the ability to remove all the file path while extracting or adding,
- without any need to specify the path to remove.
- This is available for extract(), extractByIndex(), create() and add() functionS by using
- the new variable options parameters :
- - PCLZIP_OPT_REMOVE_ALL_PATH : by indicating this option while calling the fct.
- - Ability to change the mode of a file after the extraction (chmod()).
- This is available for extract() and extractByIndex() functionS by using
- the new variable options parameters.
- - PCLZIP_OPT_SET_CHMOD : by setting the value of this option.
- - Ability to definition call-back options. These call-back will be called during the adding,
- or the extracting of file (extract(), extractByIndex(), create() and add() functions) :
- - PCLZIP_CB_PRE_EXTRACT : will be called before each extraction of a file. The user
- can trigerred the change the filename of the extracted file. The user can triggered the
- skip of the extraction. This is adding a 'skipped' status in the file list result value.
- - PCLZIP_CB_POST_EXTRACT : will be called after each extraction of a file.
- Nothing can be triggered from that point.
- - PCLZIP_CB_PRE_ADD : will be called before each add of a file. The user
- can trigerred the change the stored filename of the added file. The user can triggered the
- skip of the add. This is adding a 'skipped' status in the file list result value.
- - PCLZIP_CB_POST_ADD : will be called after each add of a file.
- Nothing can be triggered from that point.
- - Two status are added in the file list returned as function result : skipped & filename_too_long
- 'skipped' is used when a call-back function ask for skipping the file.
- 'filename_too_long' is used while adding a file with a too long filename to archive (the file is
- not added)
- - Adding the function PclZipUtilPathInclusion(), that check the inclusion of a path into
- a directory.
- - Add a check of the presence of the archive file before some actions (like list, ...)
- - Add the initialisation of field "index" in header array. This means that by
- default index will be -1 when not explicitly set by the methods.
-
- Version 1.2 :
- - Adding a duplicate function.
- - Adding a merge function. The merge function is a "quick merge" function,
- it just append the content of an archive at the end of the first one. There
- is no check for duplicate files or more recent files.
- - Improve the search of the central directory end.
-
- Version 1.1.2 :
-
- - Changing the license of PclZip. PclZip is now released under the GNU / LGPL license
- (see License section).
- - Adding the optional support of a static temporary directory. You will need to configure
- the constant PCLZIP_TEMPORARY_DIR if you want to use this feature.
- - Improving the rename() function. In some cases rename() does not work (different
- Filesystems), so it will be replaced by a copy() + unlink() functions.
-
- Version 1.1.1 :
-
- - Maintenance release, no new feature.
-
- Version 1.1 :
-
- - New method Add() : adding files in the archive
- - New method ExtractByIndex() : partial extract of the archive, files are identified by
- their index in the archive
- - New method DeleteByIndex() : delete some files/folder entries from the archive,
- files are identified by their index in the archive.
- - Adding a test of the zlib extension presence. If not present abort the script.
-
- Version 1.0.1 :
-
- - No new feature
-
-
-3 - Corrected bugs
-==================
-
- Corrected in Version 2.0 :
- - Corrected : During an extraction, if a call-back fucntion is used and try to skip
- a file, all the extraction process is stopped.
-
- Corrected in Version 1.3 :
- - Corrected : Support of static synopsis for method extract() is broken.
- - Corrected : invalid size of archive content field (0xFF) should be (0xFFFF).
- - Corrected : When an extract is done with a remove_path parameter, the entry for
- the directory with exactly the same path is not skipped/filtered.
- - Corrected : extractByIndex() and deleteByIndex() were not managing index in the
- right way. For example indexes '1,3-5,11' will only extract files 1 and 11. This
- is due to a sort of the index resulting table that puts 11 before 3-5 (sort on
- string and not interger). The sort is temporarilly removed, this means that
- you must provide a sorted list of index ranges.
-
- Corrected in Version 1.2 :
-
- - Nothing.
-
- Corrected in Version 1.1.2 :
-
- - Corrected : Winzip is unable to delete or add new files in a PclZip created archives.
-
- Corrected in Version 1.1.1 :
-
- - Corrected : When archived file is not compressed (0% compression), the
- extract method fails.
-
- Corrected in Version 1.1 :
-
- - Corrected : Adding a complete tree of folder may result in a bad archive
- creation.
-
- Corrected in Version 1.0.1 :
-
- - Corrected : Error while compressing files greater than PCLZIP_READ_BLOCK_SIZE (default=1024).
-
-
-4 - Known bugs or limitations
-=============================
-
- Please publish bugs reports in SourceForge :
- http://sourceforge.net/tracker/?group_id=40254&atid=427564
-
- In Version 2.x :
- - PclZip does only support file uncompressed or compressed with deflate (compression method 8)
- - PclZip does not support password protected zip archive
- - Some concern were seen when changing mtime of a file while archiving.
- Seems to be linked to Daylight Saving Time (PclTest_changing_mtime).
-
- In Version 1.2 :
-
- - merge() methods does not check for duplicate files or last date of modifications.
-
- In Version 1.1 :
-
- - Limitation : Using 'extract' fields in the file header in the zip archive is not supported.
- - WinZip is unable to delete a single file in a PclZip created archive. It is also unable to
- add a file in a PclZip created archive. (Corrected in v.1.2)
-
- In Version 1.0.1 :
-
- - Adding a complete tree of folder may result in a bad archive
- creation. (Corrected in V.1.1).
- - Path given to methods must be in the unix format (/) and not the Windows format (\).
- Workaround : Use only / directory separators.
- - PclZip is using temporary files that are sometime the name of the file with a .tmp or .gz
- added suffix. Files with these names may already exist and may be overwritten.
- Workaround : none.
- - PclZip does not check if the zlib extension is present. If it is absent, the zip
- file is not created and the lib abort without warning.
- Workaround : enable the zlib extension on the php install
-
- In Version 1.0 :
-
- - Error while compressing files greater than PCLZIP_READ_BLOCK_SIZE (default=1024).
- (Corrected in v.1.0.1)
- - Limitation : Multi-disk zip archive are not supported.
-
-
-5 - License
-===========
-
- Since version 1.1.2, PclZip Library is released under GNU/LGPL license.
- This library is free, so you can use it at no cost.
-
- HOWEVER, if you release a script, an application, a library or any kind of
- code using PclZip library (or a part of it), YOU MUST :
- - Indicate in the documentation (or a readme file), that your work
- uses PclZip Library, and make a reference to the author and the web site
- http://www.phpconcept.net
- - Gives the ability to the final user to update the PclZip libary.
-
- I will also appreciate that you send me a mail (vincent@phpconcept.net), just to
- be aware that someone is using PclZip.
-
- For more information about GNU/LGPL license : http://www.gnu.org
-
-6 - Warning
-=================
-
- This library and the associated files are non commercial, non professional work.
- It should not have unexpected results. However if any damage is caused by this software
- the author can not be responsible.
- The use of this software is at the risk of the user.
-
-7 - Documentation
-=================
- PclZip User Manuel is available in English on PhpConcept : http://www.phpconcept.net/pclzip/man/en/index.php
- A Russian translation was done by Feskov Kuzma : http://php.russofile.ru/ru/authors/unsort/zip/
-
-8 - Author
-==========
-
- This software was written by Vincent Blavet (vincent@phpconcept.net) on its leasure time.
-
-9 - Contribute
-==============
- If you want to contribute to the development of PclZip, please contact vincent@phpconcept.net.
- If you can help in financing PhpConcept hosting service, please go to
- http://www.phpconcept.net/soutien.php
diff --git a/admin/survey/excel/PHPExcel/Shared/PasswordHasher.php b/admin/survey/excel/PHPExcel/Shared/PasswordHasher.php
deleted file mode 100644
index 9c8a3b4..0000000
--- a/admin/survey/excel/PHPExcel/Shared/PasswordHasher.php
+++ /dev/null
@@ -1,67 +0,0 @@
-<?php
-/**
- * PHPExcel
- *
- * Copyright (c) 2006 - 2012 PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel_Shared
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-
-/**
- * PHPExcel_Shared_PasswordHasher
- *
- * @category PHPExcel
- * @package PHPExcel_Shared
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- */
-class PHPExcel_Shared_PasswordHasher
-{
- /**
- * Create a password hash from a given string.
- *
- * This method is based on the algorithm provided by
- * Daniel Rentz of OpenOffice and the PEAR package
- * Spreadsheet_Excel_Writer by Xavier Noguer <xnoguer@rezebra.com>.
- *
- * @param string $pPassword Password to hash
- * @return string Hashed password
- */
- public static function hashPassword($pPassword = '') {
- $password = 0x0000;
- $i = 1; // char position
-
- // split the plain text password in its component characters
- $chars = preg_split('//', $pPassword, -1, PREG_SPLIT_NO_EMPTY);
- foreach ($chars as $char) {
- $value = ord($char) << $i; // shifted ASCII value
- $rotated_bits = $value >> 15; // rotated bits beyond bit 15
- $value &= 0x7fff; // first 15 bits
- $password ^= ($value | $rotated_bits);
- ++$i;
- }
-
- $password ^= strlen($pPassword);
- $password ^= 0xCE4B;
-
- return(strtoupper(dechex($password)));
- }
-}
diff --git a/admin/survey/excel/PHPExcel/Shared/String.php b/admin/survey/excel/PHPExcel/Shared/String.php
deleted file mode 100644
index 3dac3e5..0000000
--- a/admin/survey/excel/PHPExcel/Shared/String.php
+++ /dev/null
@@ -1,730 +0,0 @@
-<?php
-/**
- * PHPExcel
- *
- * Copyright (c) 2006 - 2012 PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel_Shared
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-
-/**
- * PHPExcel_Shared_String
- *
- * @category PHPExcel
- * @package PHPExcel_Shared
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- */
-class PHPExcel_Shared_String
-{
- /** Constants */
- /** Regular Expressions */
- // Fraction
- const STRING_REGEXP_FRACTION = '(-?)(\d+)\s+(\d+\/\d+)';
-
-
- /**
- * Control characters array
- *
- * @var string[]
- */
- private static $_controlCharacters = array();
-
- /**
- * SYLK Characters array
- *
- * $var array
- */
- private static $_SYLKCharacters = array();
-
- /**
- * Decimal separator
- *
- * @var string
- */
- private static $_decimalSeparator;
-
- /**
- * Thousands separator
- *
- * @var string
- */
- private static $_thousandsSeparator;
-
- /**
- * Currency code
- *
- * @var string
- */
- private static $_currencyCode;
-
- /**
- * Is mbstring extension avalable?
- *
- * @var boolean
- */
- private static $_isMbstringEnabled;
-
- /**
- * Is iconv extension avalable?
- *
- * @var boolean
- */
- private static $_isIconvEnabled;
-
- /**
- * Build control characters array
- */
- private static function _buildControlCharacters() {
- for ($i = 0; $i <= 31; ++$i) {
- if ($i != 9 && $i != 10 && $i != 13) {
- $find = '_x' . sprintf('%04s' , strtoupper(dechex($i))) . '_';
- $replace = chr($i);
- self::$_controlCharacters[$find] = $replace;
- }
- }
- }
-
- /**
- * Build SYLK characters array
- */
- private static function _buildSYLKCharacters()
- {
- self::$_SYLKCharacters = array(
- "\x1B 0" => chr(0),
- "\x1B 1" => chr(1),
- "\x1B 2" => chr(2),
- "\x1B 3" => chr(3),
- "\x1B 4" => chr(4),
- "\x1B 5" => chr(5),
- "\x1B 6" => chr(6),
- "\x1B 7" => chr(7),
- "\x1B 8" => chr(8),
- "\x1B 9" => chr(9),
- "\x1B :" => chr(10),
- "\x1B ;" => chr(11),
- "\x1B <" => chr(12),
- "\x1B :" => chr(13),
- "\x1B >" => chr(14),
- "\x1B ?" => chr(15),
- "\x1B!0" => chr(16),
- "\x1B!1" => chr(17),
- "\x1B!2" => chr(18),
- "\x1B!3" => chr(19),
- "\x1B!4" => chr(20),
- "\x1B!5" => chr(21),
- "\x1B!6" => chr(22),
- "\x1B!7" => chr(23),
- "\x1B!8" => chr(24),
- "\x1B!9" => chr(25),
- "\x1B!:" => chr(26),
- "\x1B!;" => chr(27),
- "\x1B!<" => chr(28),
- "\x1B!=" => chr(29),
- "\x1B!>" => chr(30),
- "\x1B!?" => chr(31),
- "\x1B'?" => chr(127),
- "\x1B(0" => '€', // 128 in CP1252
- "\x1B(2" => '‚', // 130 in CP1252
- "\x1B(3" => 'ƒ', // 131 in CP1252
- "\x1B(4" => '„', // 132 in CP1252
- "\x1B(5" => '…', // 133 in CP1252
- "\x1B(6" => '†', // 134 in CP1252
- "\x1B(7" => '‡', // 135 in CP1252
- "\x1B(8" => 'ˆ', // 136 in CP1252
- "\x1B(9" => '‰', // 137 in CP1252
- "\x1B(:" => 'Š', // 138 in CP1252
- "\x1B(;" => '‹', // 139 in CP1252
- "\x1BNj" => 'Œ', // 140 in CP1252
- "\x1B(>" => 'Ž', // 142 in CP1252
- "\x1B)1" => '‘', // 145 in CP1252
- "\x1B)2" => '’', // 146 in CP1252
- "\x1B)3" => '“', // 147 in CP1252
- "\x1B)4" => '”', // 148 in CP1252
- "\x1B)5" => '•', // 149 in CP1252
- "\x1B)6" => '–', // 150 in CP1252
- "\x1B)7" => '—', // 151 in CP1252
- "\x1B)8" => '˜', // 152 in CP1252
- "\x1B)9" => '™', // 153 in CP1252
- "\x1B):" => 'š', // 154 in CP1252
- "\x1B);" => '›', // 155 in CP1252
- "\x1BNz" => 'œ', // 156 in CP1252
- "\x1B)>" => 'ž', // 158 in CP1252
- "\x1B)?" => 'Ÿ', // 159 in CP1252
- "\x1B*0" => ' ', // 160 in CP1252
- "\x1BN!" => '¡', // 161 in CP1252
- "\x1BN\"" => '¢', // 162 in CP1252
- "\x1BN#" => '£', // 163 in CP1252
- "\x1BN(" => '¤', // 164 in CP1252
- "\x1BN%" => '¥', // 165 in CP1252
- "\x1B*6" => '¦', // 166 in CP1252
- "\x1BN'" => '§', // 167 in CP1252
- "\x1BNH " => '¨', // 168 in CP1252
- "\x1BNS" => '©', // 169 in CP1252
- "\x1BNc" => 'ª', // 170 in CP1252
- "\x1BN+" => '«', // 171 in CP1252
- "\x1B*<" => '¬', // 172 in CP1252
- "\x1B*=" => '­', // 173 in CP1252
- "\x1BNR" => '®', // 174 in CP1252
- "\x1B*?" => '¯', // 175 in CP1252
- "\x1BN0" => '°', // 176 in CP1252
- "\x1BN1" => '±', // 177 in CP1252
- "\x1BN2" => '²', // 178 in CP1252
- "\x1BN3" => '³', // 179 in CP1252
- "\x1BNB " => '´', // 180 in CP1252
- "\x1BN5" => 'µ', // 181 in CP1252
- "\x1BN6" => '¶', // 182 in CP1252
- "\x1BN7" => '·', // 183 in CP1252
- "\x1B+8" => '¸', // 184 in CP1252
- "\x1BNQ" => '¹', // 185 in CP1252
- "\x1BNk" => 'º', // 186 in CP1252
- "\x1BN;" => '»', // 187 in CP1252
- "\x1BN<" => '¼', // 188 in CP1252
- "\x1BN=" => '½', // 189 in CP1252
- "\x1BN>" => '¾', // 190 in CP1252
- "\x1BN?" => '¿', // 191 in CP1252
- "\x1BNAA" => 'À', // 192 in CP1252
- "\x1BNBA" => 'Á', // 193 in CP1252
- "\x1BNCA" => 'Â', // 194 in CP1252
- "\x1BNDA" => 'Ã', // 195 in CP1252
- "\x1BNHA" => 'Ä', // 196 in CP1252
- "\x1BNJA" => 'Å', // 197 in CP1252
- "\x1BNa" => 'Æ', // 198 in CP1252
- "\x1BNKC" => 'Ç', // 199 in CP1252
- "\x1BNAE" => 'È', // 200 in CP1252
- "\x1BNBE" => 'É', // 201 in CP1252
- "\x1BNCE" => 'Ê', // 202 in CP1252
- "\x1BNHE" => 'Ë', // 203 in CP1252
- "\x1BNAI" => 'Ì', // 204 in CP1252
- "\x1BNBI" => 'Í', // 205 in CP1252
- "\x1BNCI" => 'Î', // 206 in CP1252
- "\x1BNHI" => 'Ï', // 207 in CP1252
- "\x1BNb" => 'Ð', // 208 in CP1252
- "\x1BNDN" => 'Ñ', // 209 in CP1252
- "\x1BNAO" => 'Ò', // 210 in CP1252
- "\x1BNBO" => 'Ó', // 211 in CP1252
- "\x1BNCO" => 'Ô', // 212 in CP1252
- "\x1BNDO" => 'Õ', // 213 in CP1252
- "\x1BNHO" => 'Ö', // 214 in CP1252
- "\x1B-7" => '×', // 215 in CP1252
- "\x1BNi" => 'Ø', // 216 in CP1252
- "\x1BNAU" => 'Ù', // 217 in CP1252
- "\x1BNBU" => 'Ú', // 218 in CP1252
- "\x1BNCU" => 'Û', // 219 in CP1252
- "\x1BNHU" => 'Ü', // 220 in CP1252
- "\x1B-=" => 'Ý', // 221 in CP1252
- "\x1BNl" => 'Þ', // 222 in CP1252
- "\x1BN{" => 'ß', // 223 in CP1252
- "\x1BNAa" => 'à', // 224 in CP1252
- "\x1BNBa" => 'á', // 225 in CP1252
- "\x1BNCa" => 'â', // 226 in CP1252
- "\x1BNDa" => 'ã', // 227 in CP1252
- "\x1BNHa" => 'ä', // 228 in CP1252
- "\x1BNJa" => 'å', // 229 in CP1252
- "\x1BNq" => 'æ', // 230 in CP1252
- "\x1BNKc" => 'ç', // 231 in CP1252
- "\x1BNAe" => 'è', // 232 in CP1252
- "\x1BNBe" => 'é', // 233 in CP1252
- "\x1BNCe" => 'ê', // 234 in CP1252
- "\x1BNHe" => 'ë', // 235 in CP1252
- "\x1BNAi" => 'ì', // 236 in CP1252
- "\x1BNBi" => 'í', // 237 in CP1252
- "\x1BNCi" => 'î', // 238 in CP1252
- "\x1BNHi" => 'ï', // 239 in CP1252
- "\x1BNs" => 'ð', // 240 in CP1252
- "\x1BNDn" => 'ñ', // 241 in CP1252
- "\x1BNAo" => 'ò', // 242 in CP1252
- "\x1BNBo" => 'ó', // 243 in CP1252
- "\x1BNCo" => 'ô', // 244 in CP1252
- "\x1BNDo" => 'õ', // 245 in CP1252
- "\x1BNHo" => 'ö', // 246 in CP1252
- "\x1B/7" => '÷', // 247 in CP1252
- "\x1BNy" => 'ø', // 248 in CP1252
- "\x1BNAu" => 'ù', // 249 in CP1252
- "\x1BNBu" => 'ú', // 250 in CP1252
- "\x1BNCu" => 'û', // 251 in CP1252
- "\x1BNHu" => 'ü', // 252 in CP1252
- "\x1B/=" => 'ý', // 253 in CP1252
- "\x1BN|" => 'þ', // 254 in CP1252
- "\x1BNHy" => 'ÿ', // 255 in CP1252
- );
- }
-
- /**
- * Get whether mbstring extension is available
- *
- * @return boolean
- */
- public static function getIsMbstringEnabled()
- {
- if (isset(self::$_isMbstringEnabled)) {
- return self::$_isMbstringEnabled;
- }
-
- self::$_isMbstringEnabled = function_exists('mb_convert_encoding') ?
- true : false;
-
- return self::$_isMbstringEnabled;
- }
-
- /**
- * Get whether iconv extension is available
- *
- * @return boolean
- */
- public static function getIsIconvEnabled()
- {
- if (isset(self::$_isIconvEnabled)) {
- return self::$_isIconvEnabled;
- }
-
- // Fail if iconv doesn't exist
- if (!function_exists('iconv')) {
- self::$_isIconvEnabled = false;
- return false;
- }
-
- // Sometimes iconv is not working, and e.g. iconv('UTF-8', 'UTF-16LE', 'x') just returns false,
- if (!@iconv('UTF-8', 'UTF-16LE', 'x')) {
- self::$_isIconvEnabled = false;
- return false;
- }
-
- // Sometimes iconv_substr('A', 0, 1, 'UTF-8') just returns false in PHP 5.2.0
- // we cannot use iconv in that case either (http://bugs.php.net/bug.php?id=37773)
- if (!@iconv_substr('A', 0, 1, 'UTF-8')) {
- self::$_isIconvEnabled = false;
- return false;
- }
-
- // CUSTOM: IBM AIX iconv() does not work
- if ( defined('PHP_OS') && @stristr(PHP_OS, 'AIX')
- && defined('ICONV_IMPL') && (@strcasecmp(ICONV_IMPL, 'unknown') == 0)
- && defined('ICONV_VERSION') && (@strcasecmp(ICONV_VERSION, 'unknown') == 0) )
- {
- self::$_isIconvEnabled = false;
- return false;
- }
-
- // If we reach here no problems were detected with iconv
- self::$_isIconvEnabled = true;
- return true;
- }
-
- public static function buildCharacterSets() {
- if(empty(self::$_controlCharacters)) {
- self::_buildControlCharacters();
- }
- if(empty(self::$_SYLKCharacters)) {
- self::_buildSYLKCharacters();
- }
- }
-
- /**
- * Convert from OpenXML escaped control character to PHP control character
- *
- * Excel 2007 team:
- * ----------------
- * That's correct, control characters are stored directly in the shared-strings table.
- * We do encode characters that cannot be represented in XML using the following escape sequence:
- * _xHHHH_ where H represents a hexadecimal character in the character's value...
- * So you could end up with something like _x0008_ in a string (either in a cell value (<v>)
- * element or in the shared string <t> element.
- *
- * @param string $value Value to unescape
- * @return string
- */
- public static function ControlCharacterOOXML2PHP($value = '') {
- return str_replace( array_keys(self::$_controlCharacters), array_values(self::$_controlCharacters), $value );
- }
-
- /**
- * Convert from PHP control character to OpenXML escaped control character
- *
- * Excel 2007 team:
- * ----------------
- * That's correct, control characters are stored directly in the shared-strings table.
- * We do encode characters that cannot be represented in XML using the following escape sequence:
- * _xHHHH_ where H represents a hexadecimal character in the character's value...
- * So you could end up with something like _x0008_ in a string (either in a cell value (<v>)
- * element or in the shared string <t> element.
- *
- * @param string $value Value to escape
- * @return string
- */
- public static function ControlCharacterPHP2OOXML($value = '') {
- return str_replace( array_values(self::$_controlCharacters), array_keys(self::$_controlCharacters), $value );
- }
-
- /**
- * Try to sanitize UTF8, stripping invalid byte sequences. Not perfect. Does not surrogate characters.
- *
- * @param string $value
- * @return string
- */
- public static function SanitizeUTF8($value)
- {
- if (self::getIsIconvEnabled()) {
- $value = @iconv('UTF-8', 'UTF-8', $value);
- return $value;
- }
-
- if (self::getIsMbstringEnabled()) {
- $value = mb_convert_encoding($value, 'UTF-8', 'UTF-8');
- return $value;
- }
-
- // else, no conversion
- return $value;
- }
-
- /**
- * Check if a string contains UTF8 data
- *
- * @param string $value
- * @return boolean
- */
- public static function IsUTF8($value = '') {
- return utf8_encode(utf8_decode($value)) === $value;
- }
-
- /**
- * Formats a numeric value as a string for output in various output writers forcing
- * point as decimal separator in case locale is other than English.
- *
- * @param mixed $value
- * @return string
- */
- public static function FormatNumber($value) {
- if (is_float($value)) {
- return str_replace(',', '.', $value);
- }
- return (string) $value;
- }
-
- /**
- * Converts a UTF-8 string into BIFF8 Unicode string data (8-bit string length)
- * Writes the string using uncompressed notation, no rich text, no Asian phonetics
- * If mbstring extension is not available, ASCII is assumed, and compressed notation is used
- * although this will give wrong results for non-ASCII strings
- * see OpenOffice.org's Documentation of the Microsoft Excel File Format, sect. 2.5.3
- *
- * @param string $value UTF-8 encoded string
- * @return string
- */
- public static function UTF8toBIFF8UnicodeShort($value, $arrcRuns = array())
- {
- // character count
- $ln = self::CountCharacters($value, 'UTF-8');
-
- // option flags
- if(empty($arrcRuns)){
- $opt = (self::getIsIconvEnabled() || self::getIsMbstringEnabled()) ?
- 0x0001 : 0x0000;
- $data = pack('CC', $ln, $opt);
- // characters
- $data .= self::ConvertEncoding($value, 'UTF-16LE', 'UTF-8');
- }
- else {
- $data = pack('vC', $ln, 0x08);
- $data .= pack('v', count($arrcRuns));
- // characters
- $data .= $value;
- foreach ($arrcRuns as $cRun){
- $data .= pack('v', $cRun['strlen']);
- $data .= pack('v', $cRun['fontidx']);
- }
- }
- return $data;
- }
-
- /**
- * Converts a UTF-8 string into BIFF8 Unicode string data (16-bit string length)
- * Writes the string using uncompressed notation, no rich text, no Asian phonetics
- * If mbstring extension is not available, ASCII is assumed, and compressed notation is used
- * although this will give wrong results for non-ASCII strings
- * see OpenOffice.org's Documentation of the Microsoft Excel File Format, sect. 2.5.3
- *
- * @param string $value UTF-8 encoded string
- * @return string
- */
- public static function UTF8toBIFF8UnicodeLong($value)
- {
- // character count
- $ln = self::CountCharacters($value, 'UTF-8');
-
- // option flags
- $opt = (self::getIsIconvEnabled() || self::getIsMbstringEnabled()) ?
- 0x0001 : 0x0000;
-
- // characters
- $chars = self::ConvertEncoding($value, 'UTF-16LE', 'UTF-8');
-
- $data = pack('vC', $ln, $opt) . $chars;
- return $data;
- }
-
- /**
- * Convert string from one encoding to another. First try iconv, then mbstring, or no convertion
- *
- * @param string $value
- * @param string $to Encoding to convert to, e.g. 'UTF-8'
- * @param string $from Encoding to convert from, e.g. 'UTF-16LE'
- * @return string
- */
- public static function ConvertEncoding($value, $to, $from)
- {
- if (self::getIsIconvEnabled()) {
- $value = iconv($from, $to, $value);
- return $value;
- }
-
- if (self::getIsMbstringEnabled()) {
- $value = mb_convert_encoding($value, $to, $from);
- return $value;
- }
- if($from == 'UTF-16LE'){
- return self::utf16_decode($value, false);
- }else if($from == 'UTF-16BE'){
- return self::utf16_decode($value);
- }
- // else, no conversion
- return $value;
- }
-
- /**
- * Decode UTF-16 encoded strings.
- *
- * Can handle both BOM'ed data and un-BOM'ed data.
- * Assumes Big-Endian byte order if no BOM is available.
- * This function was taken from http://php.net/manual/en/function.utf8-decode.php
- * and $bom_be parameter added.
- *
- * @param string $str UTF-16 encoded data to decode.
- * @return string UTF-8 / ISO encoded data.
- * @access public
- * @version 0.2 / 2010-05-13
- * @author Rasmus Andersson {@link http://rasmusandersson.se/}
- * @author vadik56
- */
- public static function utf16_decode( $str, $bom_be=true ) {
- if( strlen($str) < 2 ) return $str;
- $c0 = ord($str{0});
- $c1 = ord($str{1});
- if( $c0 == 0xfe && $c1 == 0xff ) { $str = substr($str,2); }
- elseif( $c0 == 0xff && $c1 == 0xfe ) { $str = substr($str,2); $bom_be = false; }
- $len = strlen($str);
- $newstr = '';
- for($i=0;$i<$len;$i+=2) {
- if( $bom_be ) { $val = ord($str{$i}) << 4; $val += ord($str{$i+1}); }
- else { $val = ord($str{$i+1}) << 4; $val += ord($str{$i}); }
- $newstr .= ($val == 0x228) ? "\n" : chr($val);
- }
- return $newstr;
- }
-
- /**
- * Get character count. First try mbstring, then iconv, finally strlen
- *
- * @param string $value
- * @param string $enc Encoding
- * @return int Character count
- */
- public static function CountCharacters($value, $enc = 'UTF-8')
- {
- if (self::getIsIconvEnabled()) {
- return iconv_strlen($value, $enc);
- }
-
- if (self::getIsMbstringEnabled()) {
- return mb_strlen($value, $enc);
- }
-
- // else strlen
- return strlen($value);
- }
-
- /**
- * Get a substring of a UTF-8 encoded string
- *
- * @param string $pValue UTF-8 encoded string
- * @param int $start Start offset
- * @param int $length Maximum number of characters in substring
- * @return string
- */
- public static function Substring($pValue = '', $pStart = 0, $pLength = 0)
- {
- if (self::getIsIconvEnabled()) {
- return iconv_substr($pValue, $pStart, $pLength, 'UTF-8');
- }
-
- if (self::getIsMbstringEnabled()) {
- return mb_substr($pValue, $pStart, $pLength, 'UTF-8');
- }
-
- // else substr
- return substr($pValue, $pStart, $pLength);
- }
-
-
- /**
- * Identify whether a string contains a fractional numeric value,
- * and convert it to a numeric if it is
- *
- * @param string &$operand string value to test
- * @return boolean
- */
- public static function convertToNumberIfFraction(&$operand) {
- if (preg_match('/^'.self::STRING_REGEXP_FRACTION.'$/i', $operand, $match)) {
- $sign = ($match[1] == '-') ? '-' : '+';
- $fractionFormula = '='.$sign.$match[2].$sign.$match[3];
- $operand = PHPExcel_Calculation::getInstance()->_calculateFormulaValue($fractionFormula);
- return true;
- }
- return false;
- } // function convertToNumberIfFraction()
-
- /**
- * Get the decimal separator. If it has not yet been set explicitly, try to obtain number
- * formatting information from locale.
- *
- * @return string
- */
- public static function getDecimalSeparator()
- {
- if (!isset(self::$_decimalSeparator)) {
- $localeconv = localeconv();
- self::$_decimalSeparator = ($localeconv['decimal_point'] != '')
- ? $localeconv['decimal_point'] : $localeconv['mon_decimal_point'];
-
- if (self::$_decimalSeparator == '') {
- // Default to .
- self::$_decimalSeparator = '.';
- }
- }
- return self::$_decimalSeparator;
- }
-
- /**
- * Set the decimal separator. Only used by PHPExcel_Style_NumberFormat::toFormattedString()
- * to format output by PHPExcel_Writer_HTML and PHPExcel_Writer_PDF
- *
- * @param string $pValue Character for decimal separator
- */
- public static function setDecimalSeparator($pValue = '.')
- {
- self::$_decimalSeparator = $pValue;
- }
-
- /**
- * Get the thousands separator. If it has not yet been set explicitly, try to obtain number
- * formatting information from locale.
- *
- * @return string
- */
- public static function getThousandsSeparator()
- {
- if (!isset(self::$_thousandsSeparator)) {
- $localeconv = localeconv();
- self::$_thousandsSeparator = ($localeconv['thousands_sep'] != '')
- ? $localeconv['thousands_sep'] : $localeconv['mon_thousands_sep'];
- }
- return self::$_thousandsSeparator;
- }
-
- /**
- * Set the thousands separator. Only used by PHPExcel_Style_NumberFormat::toFormattedString()
- * to format output by PHPExcel_Writer_HTML and PHPExcel_Writer_PDF
- *
- * @param string $pValue Character for thousands separator
- */
- public static function setThousandsSeparator($pValue = ',')
- {
- self::$_thousandsSeparator = $pValue;
- }
-
- /**
- * Get the currency code. If it has not yet been set explicitly, try to obtain the
- * symbol information from locale.
- *
- * @return string
- */
- public static function getCurrencyCode()
- {
- if (!isset(self::$_currencyCode)) {
- $localeconv = localeconv();
- self::$_currencyCode = ($localeconv['currency_symbol'] != '')
- ? $localeconv['currency_symbol'] : $localeconv['int_curr_symbol'];
-
- if (self::$_currencyCode == '') {
- // Default to $
- self::$_currencyCode = '$';
- }
- }
- return self::$_currencyCode;
- }
-
- /**
- * Set the currency code. Only used by PHPExcel_Style_NumberFormat::toFormattedString()
- * to format output by PHPExcel_Writer_HTML and PHPExcel_Writer_PDF
- *
- * @param string $pValue Character for currency code
- */
- public static function setCurrencyCode($pValue = '$')
- {
- self::$_currencyCode = $pValue;
- }
-
- /**
- * Convert SYLK encoded string to UTF-8
- *
- * @param string $pValue
- * @return string UTF-8 encoded string
- */
- public static function SYLKtoUTF8($pValue = '')
- {
- // If there is no escape character in the string there is nothing to do
- if (strpos($pValue, '') === false) {
- return $pValue;
- }
-
- foreach (self::$_SYLKCharacters as $k => $v) {
- $pValue = str_replace($k, $v, $pValue);
- }
-
- return $pValue;
- }
-
- /**
- * Retrieve any leading numeric part of a string, or return the full string if no leading numeric
- * (handles basic integer or float, but not exponent or non decimal)
- *
- * @param string $value
- * @return mixed string or only the leading numeric part of the string
- */
- public static function testStringAsNumeric($value)
- {
- if (is_numeric($value))
- return $value;
- $v = floatval($value);
- return (is_numeric(substr($value,0,strlen($v)))) ? $v : $value;
- }
-}
diff --git a/admin/survey/excel/PHPExcel/Shared/XMLWriter.php b/admin/survey/excel/PHPExcel/Shared/XMLWriter.php
deleted file mode 100644
index c601019..0000000
--- a/admin/survey/excel/PHPExcel/Shared/XMLWriter.php
+++ /dev/null
@@ -1,127 +0,0 @@
-<?php
-/**
- * PHPExcel
- *
- * Copyright (c) 2006 - 2012 PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel_Shared
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-if (!defined('DATE_W3C')) {
- define('DATE_W3C', 'Y-m-d\TH:i:sP');
-}
-
-if (!defined('DEBUGMODE_ENABLED')) {
- define('DEBUGMODE_ENABLED', false);
-}
-
-
-/**
- * PHPExcel_Shared_XMLWriter
- *
- * @category PHPExcel
- * @package PHPExcel_Shared
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- */
-class PHPExcel_Shared_XMLWriter extends XMLWriter {
- /** Temporary storage method */
- const STORAGE_MEMORY = 1;
- const STORAGE_DISK = 2;
-
- /**
- * Temporary filename
- *
- * @var string
- */
- private $_tempFileName = '';
-
- /**
- * Create a new PHPExcel_Shared_XMLWriter instance
- *
- * @param int $pTemporaryStorage Temporary storage location
- * @param string $pTemporaryStorageFolder Temporary storage folder
- */
- public function __construct($pTemporaryStorage = self::STORAGE_MEMORY, $pTemporaryStorageFolder = NULL) {
- // Open temporary storage
- if ($pTemporaryStorage == self::STORAGE_MEMORY) {
- $this->openMemory();
- } else {
- // Create temporary filename
- if ($pTemporaryStorageFolder === NULL)
- $pTemporaryStorageFolder = PHPExcel_Shared_File::sys_get_temp_dir();
- $this->_tempFileName = @tempnam($pTemporaryStorageFolder, 'xml');
-
- // Open storage
- if ($this->openUri($this->_tempFileName) === false) {
- // Fallback to memory...
- $this->openMemory();
- }
- }
-
- // Set default values
- if (DEBUGMODE_ENABLED) {
- $this->setIndent(true);
- }
- }
-
- /**
- * Destructor
- */
- public function __destruct() {
- // Unlink temporary files
- if ($this->_tempFileName != '') {
- @unlink($this->_tempFileName);
- }
- }
-
- /**
- * Get written data
- *
- * @return $data
- */
- public function getData() {
- if ($this->_tempFileName == '') {
- return $this->outputMemory(true);
- } else {
- $this->flush();
- return file_get_contents($this->_tempFileName);
- }
- }
-
- /**
- * Fallback method for writeRaw, introduced in PHP 5.2
- *
- * @param string $text
- * @return string
- */
- public function writeRawData($text)
- {
- if (is_array($text)) {
- $text = implode("\n",$text);
- }
-
- if (method_exists($this, 'writeRaw')) {
- return $this->writeRaw(htmlspecialchars($text));
- }
-
- return $this->text($text);
- }
-}
diff --git a/admin/survey/excel/PHPExcel/Shared/ZipArchive.php b/admin/survey/excel/PHPExcel/Shared/ZipArchive.php
deleted file mode 100644
index b9eae98..0000000
--- a/admin/survey/excel/PHPExcel/Shared/ZipArchive.php
+++ /dev/null
@@ -1,114 +0,0 @@
-<?php
-/**
- * PHPExcel
- *
- * Copyright (c) 2006 - 2012 PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel_Shared_ZipArchive
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-if (!defined('PCLZIP_TEMPORARY_DIR')) {
- define('PCLZIP_TEMPORARY_DIR', PHPExcel_Shared_File::sys_get_temp_dir());
-}
-require_once PHPEXCEL_ROOT . 'PHPExcel/Shared/PCLZip/pclzip.lib.php';
-
-
-/**
- * PHPExcel_Shared_ZipArchive
- *
- * @category PHPExcel
- * @package PHPExcel_Shared_ZipArchive
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- */
-class PHPExcel_Shared_ZipArchive
-{
-
- /** constants */
- const OVERWRITE = 'OVERWRITE';
- const CREATE = 'CREATE';
-
-
- /**
- * Temporary storage directory
- *
- * @var string
- */
- private $_tempDir;
-
- /**
- * Zip Archive Stream Handle
- *
- * @var string
- */
- private $_zip;
-
-
- /**
- * Open a new zip archive
- *
- * @param string $fileName Filename for the zip archive
- * @return boolean
- */
- public function open($fileName)
- {
- $this->_tempDir = PHPExcel_Shared_File::sys_get_temp_dir();
-
- $this->_zip = new PclZip($fileName);
-
- return true;
- }
-
-
- /**
- * Close this zip archive
- *
- */
- public function close()
- {
- }
-
-
- /**
- * Add a new file to the zip archive from a string of raw data.
- *
- * @param string $localname Directory/Name of the file to add to the zip archive
- * @param string $contents String of data to add to the zip archive
- */
- public function addFromString($localname, $contents)
- {
- $filenameParts = pathinfo($localname);
-
- $handle = fopen($this->_tempDir.'/'.$filenameParts["basename"], "wb");
- fwrite($handle, $contents);
- fclose($handle);
-
- $res = $this->_zip->add($this->_tempDir.'/'.$filenameParts["basename"],
- PCLZIP_OPT_REMOVE_PATH, $this->_tempDir,
- PCLZIP_OPT_ADD_PATH, $filenameParts["dirname"]
- );
- if ($res == 0) {
- throw new Exception("Error zipping files : " . $this->_zip->errorInfo(true));
- }
-
- unlink($this->_tempDir.'/'.$filenameParts["basename"]);
- }
-
-}
diff --git a/admin/survey/excel/PHPExcel/Shared/ZipStreamWrapper.php b/admin/survey/excel/PHPExcel/Shared/ZipStreamWrapper.php
deleted file mode 100644
index 8c55884..0000000
--- a/admin/survey/excel/PHPExcel/Shared/ZipStreamWrapper.php
+++ /dev/null
@@ -1,183 +0,0 @@
-<?php
-/**
- * PHPExcel
- *
- * Copyright (c) 2006 - 2012 PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel_Shared
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-
-/**
- * PHPExcel_Shared_ZipStreamWrapper
- *
- * @category PHPExcel
- * @package PHPExcel_Shared
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- */
-class PHPExcel_Shared_ZipStreamWrapper {
- /**
- * Internal ZipAcrhive
- *
- * @var ZipAcrhive
- */
- private $_archive;
-
- /**
- * Filename in ZipAcrhive
- *
- * @var string
- */
- private $_fileNameInArchive = '';
-
- /**
- * Position in file
- *
- * @var int
- */
- private $_position = 0;
-
- /**
- * Data
- *
- * @var mixed
- */
- private $_data = '';
-
- /**
- * Register wrapper
- */
- public static function register() {
- @stream_wrapper_unregister("zip");
- @stream_wrapper_register("zip", __CLASS__);
- }
-
- /**
- * Implements support for fopen().
- *
- * @param string $path resource name including scheme, e.g.
- * @param string $mode only "r" is supported
- * @param int $options mask of STREAM_REPORT_ERRORS and STREAM_USE_PATH
- * @param string &$openedPath absolute path of the opened stream (out parameter)
- * @return bool true on success
- */
- public function stream_open($path, $mode, $options, &$opened_path) {
- // Check for mode
- if ($mode{0} != 'r') {
- throw new Exception('Mode ' . $mode . ' is not supported. Only read mode is supported.');
- }
-
- $pos = strrpos($path, '#');
- $url['host'] = substr($path, 6, $pos - 6); // 6: strlen('zip://')
- $url['fragment'] = substr($path, $pos + 1);
-
- // Open archive
- $this->_archive = new ZipArchive();
- $this->_archive->open($url['host']);
-
- $this->_fileNameInArchive = $url['fragment'];
- $this->_position = 0;
- $this->_data = $this->_archive->getFromName( $this->_fileNameInArchive );
-
- return true;
- }
-
- /**
- * Implements support for fstat().
- *
- * @return boolean
- */
- public function stream_stat() {
- return $this->_archive->statName( $this->_fileNameInArchive );
- }
-
- /**
- * Implements support for fread(), fgets() etc.
- *
- * @param int $count maximum number of bytes to read
- * @return string
- */
- function stream_read($count) {
- $ret = substr($this->_data, $this->_position, $count);
- $this->_position += strlen($ret);
- return $ret;
- }
-
- /**
- * Returns the position of the file pointer, i.e. its offset into the file
- * stream. Implements support for ftell().
- *
- * @return int
- */
- public function stream_tell() {
- return $this->_position;
- }
-
- /**
- * EOF stream
- *
- * @return bool
- */
- public function stream_eof() {
- return $this->_position >= strlen($this->_data);
- }
-
- /**
- * Seek stream
- *
- * @param int $offset byte offset
- * @param int $whence SEEK_SET, SEEK_CUR or SEEK_END
- * @return bool
- */
- public function stream_seek($offset, $whence) {
- switch ($whence) {
- case SEEK_SET:
- if ($offset < strlen($this->_data) && $offset >= 0) {
- $this->_position = $offset;
- return true;
- } else {
- return false;
- }
- break;
-
- case SEEK_CUR:
- if ($offset >= 0) {
- $this->_position += $offset;
- return true;
- } else {
- return false;
- }
- break;
-
- case SEEK_END:
- if (strlen($this->_data) + $offset >= 0) {
- $this->_position = strlen($this->_data) + $offset;
- return true;
- } else {
- return false;
- }
- break;
-
- default:
- return false;
- }
- }
-}
diff --git a/admin/survey/excel/PHPExcel/Shared/trend/bestFitClass.php b/admin/survey/excel/PHPExcel/Shared/trend/bestFitClass.php
deleted file mode 100644
index dd2c094..0000000
--- a/admin/survey/excel/PHPExcel/Shared/trend/bestFitClass.php
+++ /dev/null
@@ -1,432 +0,0 @@
-<?php
-/**
- * PHPExcel
- *
- * Copyright (c) 2006 - 2012 PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel_Shared_Trend
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-
-/**
- * PHPExcel_Best_Fit
- *
- * @category PHPExcel
- * @package PHPExcel_Shared_Trend
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- */
-class PHPExcel_Best_Fit
-{
- /**
- * Indicator flag for a calculation error
- *
- * @var boolean
- **/
- protected $_error = False;
-
- /**
- * Algorithm type to use for best-fit
- *
- * @var string
- **/
- protected $_bestFitType = 'undetermined';
-
- /**
- * Number of entries in the sets of x- and y-value arrays
- *
- * @var int
- **/
- protected $_valueCount = 0;
-
- /**
- * X-value dataseries of values
- *
- * @var float[]
- **/
- protected $_xValues = array();
-
- /**
- * Y-value dataseries of values
- *
- * @var float[]
- **/
- protected $_yValues = array();
-
- /**
- * Flag indicating whether values should be adjusted to Y=0
- *
- * @var boolean
- **/
- protected $_adjustToZero = False;
-
- /**
- * Y-value series of best-fit values
- *
- * @var float[]
- **/
- protected $_yBestFitValues = array();
-
- protected $_goodnessOfFit = 1;
-
- protected $_stdevOfResiduals = 0;
-
- protected $_covariance = 0;
-
- protected $_correlation = 0;
-
- protected $_SSRegression = 0;
-
- protected $_SSResiduals = 0;
-
- protected $_DFResiduals = 0;
-
- protected $_F = 0;
-
- protected $_slope = 0;
-
- protected $_slopeSE = 0;
-
- protected $_intersect = 0;
-
- protected $_intersectSE = 0;
-
- protected $_Xoffset = 0;
-
- protected $_Yoffset = 0;
-
-
- public function getError() {
- return $this->_error;
- } // function getBestFitType()
-
-
- public function getBestFitType() {
- return $this->_bestFitType;
- } // function getBestFitType()
-
-
- /**
- * Return the Y-Value for a specified value of X
- *
- * @param float $xValue X-Value
- * @return float Y-Value
- */
- public function getValueOfYForX($xValue) {
- return False;
- } // function getValueOfYForX()
-
-
- /**
- * Return the X-Value for a specified value of Y
- *
- * @param float $yValue Y-Value
- * @return float X-Value
- */
- public function getValueOfXForY($yValue) {
- return False;
- } // function getValueOfXForY()
-
-
- /**
- * Return the original set of X-Values
- *
- * @return float[] X-Values
- */
- public function getXValues() {
- return $this->_xValues;
- } // function getValueOfXForY()
-
-
- /**
- * Return the Equation of the best-fit line
- *
- * @param int $dp Number of places of decimal precision to display
- * @return string
- */
- public function getEquation($dp=0) {
- return False;
- } // function getEquation()
-
-
- /**
- * Return the Slope of the line
- *
- * @param int $dp Number of places of decimal precision to display
- * @return string
- */
- public function getSlope($dp=0) {
- if ($dp != 0) {
- return round($this->_slope,$dp);
- }
- return $this->_slope;
- } // function getSlope()
-
-
- /**
- * Return the standard error of the Slope
- *
- * @param int $dp Number of places of decimal precision to display
- * @return string
- */
- public function getSlopeSE($dp=0) {
- if ($dp != 0) {
- return round($this->_slopeSE,$dp);
- }
- return $this->_slopeSE;
- } // function getSlopeSE()
-
-
- /**
- * Return the Value of X where it intersects Y = 0
- *
- * @param int $dp Number of places of decimal precision to display
- * @return string
- */
- public function getIntersect($dp=0) {
- if ($dp != 0) {
- return round($this->_intersect,$dp);
- }
- return $this->_intersect;
- } // function getIntersect()
-
-
- /**
- * Return the standard error of the Intersect
- *
- * @param int $dp Number of places of decimal precision to display
- * @return string
- */
- public function getIntersectSE($dp=0) {
- if ($dp != 0) {
- return round($this->_intersectSE,$dp);
- }
- return $this->_intersectSE;
- } // function getIntersectSE()
-
-
- /**
- * Return the goodness of fit for this regression
- *
- * @param int $dp Number of places of decimal precision to return
- * @return float
- */
- public function getGoodnessOfFit($dp=0) {
- if ($dp != 0) {
- return round($this->_goodnessOfFit,$dp);
- }
- return $this->_goodnessOfFit;
- } // function getGoodnessOfFit()
-
-
- public function getGoodnessOfFitPercent($dp=0) {
- if ($dp != 0) {
- return round($this->_goodnessOfFit * 100,$dp);
- }
- return $this->_goodnessOfFit * 100;
- } // function getGoodnessOfFitPercent()
-
-
- /**
- * Return the standard deviation of the residuals for this regression
- *
- * @param int $dp Number of places of decimal precision to return
- * @return float
- */
- public function getStdevOfResiduals($dp=0) {
- if ($dp != 0) {
- return round($this->_stdevOfResiduals,$dp);
- }
- return $this->_stdevOfResiduals;
- } // function getStdevOfResiduals()
-
-
- public function getSSRegression($dp=0) {
- if ($dp != 0) {
- return round($this->_SSRegression,$dp);
- }
- return $this->_SSRegression;
- } // function getSSRegression()
-
-
- public function getSSResiduals($dp=0) {
- if ($dp != 0) {
- return round($this->_SSResiduals,$dp);
- }
- return $this->_SSResiduals;
- } // function getSSResiduals()
-
-
- public function getDFResiduals($dp=0) {
- if ($dp != 0) {
- return round($this->_DFResiduals,$dp);
- }
- return $this->_DFResiduals;
- } // function getDFResiduals()
-
-
- public function getF($dp=0) {
- if ($dp != 0) {
- return round($this->_F,$dp);
- }
- return $this->_F;
- } // function getF()
-
-
- public function getCovariance($dp=0) {
- if ($dp != 0) {
- return round($this->_covariance,$dp);
- }
- return $this->_covariance;
- } // function getCovariance()
-
-
- public function getCorrelation($dp=0) {
- if ($dp != 0) {
- return round($this->_correlation,$dp);
- }
- return $this->_correlation;
- } // function getCorrelation()
-
-
- public function getYBestFitValues() {
- return $this->_yBestFitValues;
- } // function getYBestFitValues()
-
-
- protected function _calculateGoodnessOfFit($sumX,$sumY,$sumX2,$sumY2,$sumXY,$meanX,$meanY, $const) {
- $SSres = $SScov = $SScor = $SStot = $SSsex = 0.0;
- foreach($this->_xValues as $xKey => $xValue) {
- $bestFitY = $this->_yBestFitValues[$xKey] = $this->getValueOfYForX($xValue);
-
- $SSres += ($this->_yValues[$xKey] - $bestFitY) * ($this->_yValues[$xKey] - $bestFitY);
- if ($const) {
- $SStot += ($this->_yValues[$xKey] - $meanY) * ($this->_yValues[$xKey] - $meanY);
- } else {
- $SStot += $this->_yValues[$xKey] * $this->_yValues[$xKey];
- }
- $SScov += ($this->_xValues[$xKey] - $meanX) * ($this->_yValues[$xKey] - $meanY);
- if ($const) {
- $SSsex += ($this->_xValues[$xKey] - $meanX) * ($this->_xValues[$xKey] - $meanX);
- } else {
- $SSsex += $this->_xValues[$xKey] * $this->_xValues[$xKey];
- }
- }
-
- $this->_SSResiduals = $SSres;
- $this->_DFResiduals = $this->_valueCount - 1 - $const;
-
- if ($this->_DFResiduals == 0.0) {
- $this->_stdevOfResiduals = 0.0;
- } else {
- $this->_stdevOfResiduals = sqrt($SSres / $this->_DFResiduals);
- }
- if (($SStot == 0.0) || ($SSres == $SStot)) {
- $this->_goodnessOfFit = 1;
- } else {
- $this->_goodnessOfFit = 1 - ($SSres / $SStot);
- }
-
- $this->_SSRegression = $this->_goodnessOfFit * $SStot;
- $this->_covariance = $SScov / $this->_valueCount;
- $this->_correlation = ($this->_valueCount * $sumXY - $sumX * $sumY) / sqrt(($this->_valueCount * $sumX2 - pow($sumX,2)) * ($this->_valueCount * $sumY2 - pow($sumY,2)));
- $this->_slopeSE = $this->_stdevOfResiduals / sqrt($SSsex);
- $this->_intersectSE = $this->_stdevOfResiduals * sqrt(1 / ($this->_valueCount - ($sumX * $sumX) / $sumX2));
- if ($this->_SSResiduals != 0.0) {
- if ($this->_DFResiduals == 0.0) {
- $this->_F = 0.0;
- } else {
- $this->_F = $this->_SSRegression / ($this->_SSResiduals / $this->_DFResiduals);
- }
- } else {
- if ($this->_DFResiduals == 0.0) {
- $this->_F = 0.0;
- } else {
- $this->_F = $this->_SSRegression / $this->_DFResiduals;
- }
- }
- } // function _calculateGoodnessOfFit()
-
-
- protected function _leastSquareFit($yValues, $xValues, $const) {
- // calculate sums
- $x_sum = array_sum($xValues);
- $y_sum = array_sum($yValues);
- $meanX = $x_sum / $this->_valueCount;
- $meanY = $y_sum / $this->_valueCount;
- $mBase = $mDivisor = $xx_sum = $xy_sum = $yy_sum = 0.0;
- for($i = 0; $i < $this->_valueCount; ++$i) {
- $xy_sum += $xValues[$i] * $yValues[$i];
- $xx_sum += $xValues[$i] * $xValues[$i];
- $yy_sum += $yValues[$i] * $yValues[$i];
-
- if ($const) {
- $mBase += ($xValues[$i] - $meanX) * ($yValues[$i] - $meanY);
- $mDivisor += ($xValues[$i] - $meanX) * ($xValues[$i] - $meanX);
- } else {
- $mBase += $xValues[$i] * $yValues[$i];
- $mDivisor += $xValues[$i] * $xValues[$i];
- }
- }
-
- // calculate slope
-// $this->_slope = (($this->_valueCount * $xy_sum) - ($x_sum * $y_sum)) / (($this->_valueCount * $xx_sum) - ($x_sum * $x_sum));
- $this->_slope = $mBase / $mDivisor;
-
- // calculate intersect
-// $this->_intersect = ($y_sum - ($this->_slope * $x_sum)) / $this->_valueCount;
- if ($const) {
- $this->_intersect = $meanY - ($this->_slope * $meanX);
- } else {
- $this->_intersect = 0;
- }
-
- $this->_calculateGoodnessOfFit($x_sum,$y_sum,$xx_sum,$yy_sum,$xy_sum,$meanX,$meanY,$const);
- } // function _leastSquareFit()
-
-
- /**
- * Define the regression
- *
- * @param float[] $yValues The set of Y-values for this regression
- * @param float[] $xValues The set of X-values for this regression
- * @param boolean $const
- */
- function __construct($yValues, $xValues=array(), $const=True) {
- // Calculate number of points
- $nY = count($yValues);
- $nX = count($xValues);
-
- // Define X Values if necessary
- if ($nX == 0) {
- $xValues = range(1,$nY);
- $nX = $nY;
- } elseif ($nY != $nX) {
- // Ensure both arrays of points are the same size
- $this->_error = True;
- return False;
- }
-
- $this->_valueCount = $nY;
- $this->_xValues = $xValues;
- $this->_yValues = $yValues;
- } // function __construct()
-
-} // class bestFit
diff --git a/admin/survey/excel/PHPExcel/Shared/trend/exponentialBestFitClass.php b/admin/survey/excel/PHPExcel/Shared/trend/exponentialBestFitClass.php
deleted file mode 100644
index 6cc8201..0000000
--- a/admin/survey/excel/PHPExcel/Shared/trend/exponentialBestFitClass.php
+++ /dev/null
@@ -1,148 +0,0 @@
-<?php
-/**
- * PHPExcel
- *
- * Copyright (c) 2006 - 2012 PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel_Shared_Trend
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-
-require_once(PHPEXCEL_ROOT . 'PHPExcel/Shared/trend/bestFitClass.php');
-
-
-/**
- * PHPExcel_Exponential_Best_Fit
- *
- * @category PHPExcel
- * @package PHPExcel_Shared_Trend
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- */
-class PHPExcel_Exponential_Best_Fit extends PHPExcel_Best_Fit
-{
- /**
- * Algorithm type to use for best-fit
- * (Name of this trend class)
- *
- * @var string
- **/
- protected $_bestFitType = 'exponential';
-
-
- /**
- * Return the Y-Value for a specified value of X
- *
- * @param float $xValue X-Value
- * @return float Y-Value
- **/
- public function getValueOfYForX($xValue) {
- return $this->getIntersect() * pow($this->getSlope(),($xValue - $this->_Xoffset));
- } // function getValueOfYForX()
-
-
- /**
- * Return the X-Value for a specified value of Y
- *
- * @param float $yValue Y-Value
- * @return float X-Value
- **/
- public function getValueOfXForY($yValue) {
- return log(($yValue + $this->_Yoffset) / $this->getIntersect()) / log($this->getSlope());
- } // function getValueOfXForY()
-
-
- /**
- * Return the Equation of the best-fit line
- *
- * @param int $dp Number of places of decimal precision to display
- * @return string
- **/
- public function getEquation($dp=0) {
- $slope = $this->getSlope($dp);
- $intersect = $this->getIntersect($dp);
-
- return 'Y = '.$intersect.' * '.$slope.'^X';
- } // function getEquation()
-
-
- /**
- * Return the Slope of the line
- *
- * @param int $dp Number of places of decimal precision to display
- * @return string
- **/
- public function getSlope($dp=0) {
- if ($dp != 0) {
- return round(exp($this->_slope),$dp);
- }
- return exp($this->_slope);
- } // function getSlope()
-
-
- /**
- * Return the Value of X where it intersects Y = 0
- *
- * @param int $dp Number of places of decimal precision to display
- * @return string
- **/
- public function getIntersect($dp=0) {
- if ($dp != 0) {
- return round(exp($this->_intersect),$dp);
- }
- return exp($this->_intersect);
- } // function getIntersect()
-
-
- /**
- * Execute the regression and calculate the goodness of fit for a set of X and Y data values
- *
- * @param float[] $yValues The set of Y-values for this regression
- * @param float[] $xValues The set of X-values for this regression
- * @param boolean $const
- */
- private function _exponential_regression($yValues, $xValues, $const) {
- foreach($yValues as &$value) {
- if ($value < 0.0) {
- $value = 0 - log(abs($value));
- } elseif ($value > 0.0) {
- $value = log($value);
- }
- }
- unset($value);
-
- $this->_leastSquareFit($yValues, $xValues, $const);
- } // function _exponential_regression()
-
-
- /**
- * Define the regression and calculate the goodness of fit for a set of X and Y data values
- *
- * @param float[] $yValues The set of Y-values for this regression
- * @param float[] $xValues The set of X-values for this regression
- * @param boolean $const
- */
- function __construct($yValues, $xValues=array(), $const=True) {
- if (parent::__construct($yValues, $xValues) !== False) {
- $this->_exponential_regression($yValues, $xValues, $const);
- }
- } // function __construct()
-
-} // class exponentialBestFit \ No newline at end of file
diff --git a/admin/survey/excel/PHPExcel/Shared/trend/linearBestFitClass.php b/admin/survey/excel/PHPExcel/Shared/trend/linearBestFitClass.php
deleted file mode 100644
index 0fe62b1..0000000
--- a/admin/survey/excel/PHPExcel/Shared/trend/linearBestFitClass.php
+++ /dev/null
@@ -1,111 +0,0 @@
-<?php
-/**
- * PHPExcel
- *
- * Copyright (c) 2006 - 2012 PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel_Shared_Trend
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-
-require_once(PHPEXCEL_ROOT . 'PHPExcel/Shared/trend/bestFitClass.php');
-
-
-/**
- * PHPExcel_Linear_Best_Fit
- *
- * @category PHPExcel
- * @package PHPExcel_Shared_Trend
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- */
-class PHPExcel_Linear_Best_Fit extends PHPExcel_Best_Fit
-{
- /**
- * Algorithm type to use for best-fit
- * (Name of this trend class)
- *
- * @var string
- **/
- protected $_bestFitType = 'linear';
-
-
- /**
- * Return the Y-Value for a specified value of X
- *
- * @param float $xValue X-Value
- * @return float Y-Value
- **/
- public function getValueOfYForX($xValue) {
- return $this->getIntersect() + $this->getSlope() * $xValue;
- } // function getValueOfYForX()
-
-
- /**
- * Return the X-Value for a specified value of Y
- *
- * @param float $yValue Y-Value
- * @return float X-Value
- **/
- public function getValueOfXForY($yValue) {
- return ($yValue - $this->getIntersect()) / $this->getSlope();
- } // function getValueOfXForY()
-
-
- /**
- * Return the Equation of the best-fit line
- *
- * @param int $dp Number of places of decimal precision to display
- * @return string
- **/
- public function getEquation($dp=0) {
- $slope = $this->getSlope($dp);
- $intersect = $this->getIntersect($dp);
-
- return 'Y = '.$intersect.' + '.$slope.' * X';
- } // function getEquation()
-
-
- /**
- * Execute the regression and calculate the goodness of fit for a set of X and Y data values
- *
- * @param float[] $yValues The set of Y-values for this regression
- * @param float[] $xValues The set of X-values for this regression
- * @param boolean $const
- */
- private function _linear_regression($yValues, $xValues, $const) {
- $this->_leastSquareFit($yValues, $xValues,$const);
- } // function _linear_regression()
-
-
- /**
- * Define the regression and calculate the goodness of fit for a set of X and Y data values
- *
- * @param float[] $yValues The set of Y-values for this regression
- * @param float[] $xValues The set of X-values for this regression
- * @param boolean $const
- */
- function __construct($yValues, $xValues=array(), $const=True) {
- if (parent::__construct($yValues, $xValues) !== False) {
- $this->_linear_regression($yValues, $xValues, $const);
- }
- } // function __construct()
-
-} // class linearBestFit \ No newline at end of file
diff --git a/admin/survey/excel/PHPExcel/Shared/trend/logarithmicBestFitClass.php b/admin/survey/excel/PHPExcel/Shared/trend/logarithmicBestFitClass.php
deleted file mode 100644
index acccc53..0000000
--- a/admin/survey/excel/PHPExcel/Shared/trend/logarithmicBestFitClass.php
+++ /dev/null
@@ -1,120 +0,0 @@
-<?php
-/**
- * PHPExcel
- *
- * Copyright (c) 2006 - 2012 PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel_Shared_Trend
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-
-require_once(PHPEXCEL_ROOT . 'PHPExcel/Shared/trend/bestFitClass.php');
-
-
-/**
- * PHPExcel_Logarithmic_Best_Fit
- *
- * @category PHPExcel
- * @package PHPExcel_Shared_Trend
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- */
-class PHPExcel_Logarithmic_Best_Fit extends PHPExcel_Best_Fit
-{
- /**
- * Algorithm type to use for best-fit
- * (Name of this trend class)
- *
- * @var string
- **/
- protected $_bestFitType = 'logarithmic';
-
-
- /**
- * Return the Y-Value for a specified value of X
- *
- * @param float $xValue X-Value
- * @return float Y-Value
- **/
- public function getValueOfYForX($xValue) {
- return $this->getIntersect() + $this->getSlope() * log($xValue - $this->_Xoffset);
- } // function getValueOfYForX()
-
-
- /**
- * Return the X-Value for a specified value of Y
- *
- * @param float $yValue Y-Value
- * @return float X-Value
- **/
- public function getValueOfXForY($yValue) {
- return exp(($yValue - $this->getIntersect()) / $this->getSlope());
- } // function getValueOfXForY()
-
-
- /**
- * Return the Equation of the best-fit line
- *
- * @param int $dp Number of places of decimal precision to display
- * @return string
- **/
- public function getEquation($dp=0) {
- $slope = $this->getSlope($dp);
- $intersect = $this->getIntersect($dp);
-
- return 'Y = '.$intersect.' + '.$slope.' * log(X)';
- } // function getEquation()
-
-
- /**
- * Execute the regression and calculate the goodness of fit for a set of X and Y data values
- *
- * @param float[] $yValues The set of Y-values for this regression
- * @param float[] $xValues The set of X-values for this regression
- * @param boolean $const
- */
- private function _logarithmic_regression($yValues, $xValues, $const) {
- foreach($xValues as &$value) {
- if ($value < 0.0) {
- $value = 0 - log(abs($value));
- } elseif ($value > 0.0) {
- $value = log($value);
- }
- }
- unset($value);
-
- $this->_leastSquareFit($yValues, $xValues, $const);
- } // function _logarithmic_regression()
-
-
- /**
- * Define the regression and calculate the goodness of fit for a set of X and Y data values
- *
- * @param float[] $yValues The set of Y-values for this regression
- * @param float[] $xValues The set of X-values for this regression
- * @param boolean $const
- */
- function __construct($yValues, $xValues=array(), $const=True) {
- if (parent::__construct($yValues, $xValues) !== False) {
- $this->_logarithmic_regression($yValues, $xValues, $const);
- }
- } // function __construct()
-
-} // class logarithmicBestFit \ No newline at end of file
diff --git a/admin/survey/excel/PHPExcel/Shared/trend/polynomialBestFitClass.php b/admin/survey/excel/PHPExcel/Shared/trend/polynomialBestFitClass.php
deleted file mode 100644
index eef0060..0000000
--- a/admin/survey/excel/PHPExcel/Shared/trend/polynomialBestFitClass.php
+++ /dev/null
@@ -1,224 +0,0 @@
-<?php
-/**
- * PHPExcel
- *
- * Copyright (c) 2006 - 2012 PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel_Shared_Trend
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-
-require_once PHPEXCEL_ROOT . 'PHPExcel/Shared/trend/bestFitClass.php';
-require_once PHPEXCEL_ROOT . 'PHPExcel/Shared/JAMA/Matrix.php';
-
-
-/**
- * PHPExcel_Polynomial_Best_Fit
- *
- * @category PHPExcel
- * @package PHPExcel_Shared_Trend
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- */
-class PHPExcel_Polynomial_Best_Fit extends PHPExcel_Best_Fit
-{
- /**
- * Algorithm type to use for best-fit
- * (Name of this trend class)
- *
- * @var string
- **/
- protected $_bestFitType = 'polynomial';
-
- /**
- * Polynomial order
- *
- * @protected
- * @var int
- **/
- protected $_order = 0;
-
-
- /**
- * Return the order of this polynomial
- *
- * @return int
- **/
- public function getOrder() {
- return $this->_order;
- } // function getOrder()
-
-
- /**
- * Return the Y-Value for a specified value of X
- *
- * @param float $xValue X-Value
- * @return float Y-Value
- **/
- public function getValueOfYForX($xValue) {
- $retVal = $this->getIntersect();
- $slope = $this->getSlope();
- foreach($slope as $key => $value) {
- if ($value != 0.0) {
- $retVal += $value * pow($xValue, $key + 1);
- }
- }
- return $retVal;
- } // function getValueOfYForX()
-
-
- /**
- * Return the X-Value for a specified value of Y
- *
- * @param float $yValue Y-Value
- * @return float X-Value
- **/
- public function getValueOfXForY($yValue) {
- return ($yValue - $this->getIntersect()) / $this->getSlope();
- } // function getValueOfXForY()
-
-
- /**
- * Return the Equation of the best-fit line
- *
- * @param int $dp Number of places of decimal precision to display
- * @return string
- **/
- public function getEquation($dp=0) {
- $slope = $this->getSlope($dp);
- $intersect = $this->getIntersect($dp);
-
- $equation = 'Y = '.$intersect;
- foreach($slope as $key => $value) {
- if ($value != 0.0) {
- $equation .= ' + '.$value.' * X';
- if ($key > 0) {
- $equation .= '^'.($key + 1);
- }
- }
- }
- return $equation;
- } // function getEquation()
-
-
- /**
- * Return the Slope of the line
- *
- * @param int $dp Number of places of decimal precision to display
- * @return string
- **/
- public function getSlope($dp=0) {
- if ($dp != 0) {
- $coefficients = array();
- foreach($this->_slope as $coefficient) {
- $coefficients[] = round($coefficient,$dp);
- }
- return $coefficients;
- }
- return $this->_slope;
- } // function getSlope()
-
-
- public function getCoefficients($dp=0) {
- return array_merge(array($this->getIntersect($dp)),$this->getSlope($dp));
- } // function getCoefficients()
-
-
- /**
- * Execute the regression and calculate the goodness of fit for a set of X and Y data values
- *
- * @param int $order Order of Polynomial for this regression
- * @param float[] $yValues The set of Y-values for this regression
- * @param float[] $xValues The set of X-values for this regression
- * @param boolean $const
- */
- private function _polynomial_regression($order, $yValues, $xValues, $const) {
- // calculate sums
- $x_sum = array_sum($xValues);
- $y_sum = array_sum($yValues);
- $xx_sum = $xy_sum = 0;
- for($i = 0; $i < $this->_valueCount; ++$i) {
- $xy_sum += $xValues[$i] * $yValues[$i];
- $xx_sum += $xValues[$i] * $xValues[$i];
- $yy_sum += $yValues[$i] * $yValues[$i];
- }
- /*
- * This routine uses logic from the PHP port of polyfit version 0.1
- * written by Michael Bommarito and Paul Meagher
- *
- * The function fits a polynomial function of order $order through
- * a series of x-y data points using least squares.
- *
- */
- for ($i = 0; $i < $this->_valueCount; ++$i) {
- for ($j = 0; $j <= $order; ++$j) {
- $A[$i][$j] = pow($xValues[$i], $j);
- }
- }
- for ($i=0; $i < $this->_valueCount; ++$i) {
- $B[$i] = array($yValues[$i]);
- }
- $matrixA = new Matrix($A);
- $matrixB = new Matrix($B);
- $C = $matrixA->solve($matrixB);
-
- $coefficients = array();
- for($i = 0; $i < $C->m; ++$i) {
- $r = $C->get($i, 0);
- if (abs($r) <= pow(10, -9)) {
- $r = 0;
- }
- $coefficients[] = $r;
- }
-
- $this->_intersect = array_shift($coefficients);
- $this->_slope = $coefficients;
-
- $this->_calculateGoodnessOfFit($x_sum,$y_sum,$xx_sum,$yy_sum,$xy_sum);
- foreach($this->_xValues as $xKey => $xValue) {
- $this->_yBestFitValues[$xKey] = $this->getValueOfYForX($xValue);
- }
- } // function _polynomial_regression()
-
-
- /**
- * Define the regression and calculate the goodness of fit for a set of X and Y data values
- *
- * @param int $order Order of Polynomial for this regression
- * @param float[] $yValues The set of Y-values for this regression
- * @param float[] $xValues The set of X-values for this regression
- * @param boolean $const
- */
- function __construct($order, $yValues, $xValues=array(), $const=True) {
- if (parent::__construct($yValues, $xValues) !== False) {
- if ($order < $this->_valueCount) {
- $this->_bestFitType .= '_'.$order;
- $this->_order = $order;
- $this->_polynomial_regression($order, $yValues, $xValues, $const);
- if (($this->getGoodnessOfFit() < 0.0) || ($this->getGoodnessOfFit() > 1.0)) {
- $this->_error = True;
- }
- } else {
- $this->_error = True;
- }
- }
- } // function __construct()
-
-} // class polynomialBestFit \ No newline at end of file
diff --git a/admin/survey/excel/PHPExcel/Shared/trend/powerBestFitClass.php b/admin/survey/excel/PHPExcel/Shared/trend/powerBestFitClass.php
deleted file mode 100644
index 22c23d7..0000000
--- a/admin/survey/excel/PHPExcel/Shared/trend/powerBestFitClass.php
+++ /dev/null
@@ -1,142 +0,0 @@
-<?php
-/**
- * PHPExcel
- *
- * Copyright (c) 2006 - 2012 PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel_Shared_Trend
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-
-require_once PHPEXCEL_ROOT . 'PHPExcel/Shared/trend/bestFitClass.php';
-
-
-/**
- * PHPExcel_Power_Best_Fit
- *
- * @category PHPExcel
- * @package PHPExcel_Shared_Trend
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- */
-class PHPExcel_Power_Best_Fit extends PHPExcel_Best_Fit
-{
- /**
- * Algorithm type to use for best-fit
- * (Name of this trend class)
- *
- * @var string
- **/
- protected $_bestFitType = 'power';
-
-
- /**
- * Return the Y-Value for a specified value of X
- *
- * @param float $xValue X-Value
- * @return float Y-Value
- **/
- public function getValueOfYForX($xValue) {
- return $this->getIntersect() * pow(($xValue - $this->_Xoffset),$this->getSlope());
- } // function getValueOfYForX()
-
-
- /**
- * Return the X-Value for a specified value of Y
- *
- * @param float $yValue Y-Value
- * @return float X-Value
- **/
- public function getValueOfXForY($yValue) {
- return pow((($yValue + $this->_Yoffset) / $this->getIntersect()),(1 / $this->getSlope()));
- } // function getValueOfXForY()
-
-
- /**
- * Return the Equation of the best-fit line
- *
- * @param int $dp Number of places of decimal precision to display
- * @return string
- **/
- public function getEquation($dp=0) {
- $slope = $this->getSlope($dp);
- $intersect = $this->getIntersect($dp);
-
- return 'Y = '.$intersect.' * X^'.$slope;
- } // function getEquation()
-
-
- /**
- * Return the Value of X where it intersects Y = 0
- *
- * @param int $dp Number of places of decimal precision to display
- * @return string
- **/
- public function getIntersect($dp=0) {
- if ($dp != 0) {
- return round(exp($this->_intersect),$dp);
- }
- return exp($this->_intersect);
- } // function getIntersect()
-
-
- /**
- * Execute the regression and calculate the goodness of fit for a set of X and Y data values
- *
- * @param float[] $yValues The set of Y-values for this regression
- * @param float[] $xValues The set of X-values for this regression
- * @param boolean $const
- */
- private function _power_regression($yValues, $xValues, $const) {
- foreach($xValues as &$value) {
- if ($value < 0.0) {
- $value = 0 - log(abs($value));
- } elseif ($value > 0.0) {
- $value = log($value);
- }
- }
- unset($value);
- foreach($yValues as &$value) {
- if ($value < 0.0) {
- $value = 0 - log(abs($value));
- } elseif ($value > 0.0) {
- $value = log($value);
- }
- }
- unset($value);
-
- $this->_leastSquareFit($yValues, $xValues, $const);
- } // function _power_regression()
-
-
- /**
- * Define the regression and calculate the goodness of fit for a set of X and Y data values
- *
- * @param float[] $yValues The set of Y-values for this regression
- * @param float[] $xValues The set of X-values for this regression
- * @param boolean $const
- */
- function __construct($yValues, $xValues=array(), $const=True) {
- if (parent::__construct($yValues, $xValues) !== False) {
- $this->_power_regression($yValues, $xValues, $const);
- }
- } // function __construct()
-
-} // class powerBestFit \ No newline at end of file
diff --git a/admin/survey/excel/PHPExcel/Shared/trend/trendClass.php b/admin/survey/excel/PHPExcel/Shared/trend/trendClass.php
deleted file mode 100644
index 59d1b1f..0000000
--- a/admin/survey/excel/PHPExcel/Shared/trend/trendClass.php
+++ /dev/null
@@ -1,156 +0,0 @@
-<?php
-/**
- * PHPExcel
- *
- * Copyright (c) 2006 - 2012 PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel_Shared_Trend
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-
-require_once PHPEXCEL_ROOT . 'PHPExcel/Shared/trend/linearBestFitClass.php';
-require_once PHPEXCEL_ROOT . 'PHPExcel/Shared/trend/logarithmicBestFitClass.php';
-require_once PHPEXCEL_ROOT . 'PHPExcel/Shared/trend/exponentialBestFitClass.php';
-require_once PHPEXCEL_ROOT . 'PHPExcel/Shared/trend/powerBestFitClass.php';
-require_once PHPEXCEL_ROOT . 'PHPExcel/Shared/trend/polynomialBestFitClass.php';
-
-
-/**
- * PHPExcel_trendClass
- *
- * @category PHPExcel
- * @package PHPExcel_Shared_Trend
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- */
-class trendClass
-{
- const TREND_LINEAR = 'Linear';
- const TREND_LOGARITHMIC = 'Logarithmic';
- const TREND_EXPONENTIAL = 'Exponential';
- const TREND_POWER = 'Power';
- const TREND_POLYNOMIAL_2 = 'Polynomial_2';
- const TREND_POLYNOMIAL_3 = 'Polynomial_3';
- const TREND_POLYNOMIAL_4 = 'Polynomial_4';
- const TREND_POLYNOMIAL_5 = 'Polynomial_5';
- const TREND_POLYNOMIAL_6 = 'Polynomial_6';
- const TREND_BEST_FIT = 'Bestfit';
- const TREND_BEST_FIT_NO_POLY = 'Bestfit_no_Polynomials';
-
- /**
- * Names of the best-fit trend analysis methods
- *
- * @var string[]
- **/
- private static $_trendTypes = array( self::TREND_LINEAR,
- self::TREND_LOGARITHMIC,
- self::TREND_EXPONENTIAL,
- self::TREND_POWER
- );
- /**
- * Names of the best-fit trend polynomial orders
- *
- * @var string[]
- **/
- private static $_trendTypePolyOrders = array( self::TREND_POLYNOMIAL_2,
- self::TREND_POLYNOMIAL_3,
- self::TREND_POLYNOMIAL_4,
- self::TREND_POLYNOMIAL_5,
- self::TREND_POLYNOMIAL_6
- );
-
- /**
- * Cached results for each method when trying to identify which provides the best fit
- *
- * @var PHPExcel_Best_Fit[]
- **/
- private static $_trendCache = array();
-
-
- public static function calculate($trendType=self::TREND_BEST_FIT, $yValues, $xValues=array(), $const=True) {
- // Calculate number of points in each dataset
- $nY = count($yValues);
- $nX = count($xValues);
-
- // Define X Values if necessary
- if ($nX == 0) {
- $xValues = range(1,$nY);
- $nX = $nY;
- } elseif ($nY != $nX) {
- // Ensure both arrays of points are the same size
- trigger_error("trend(): Number of elements in coordinate arrays do not match.", E_USER_ERROR);
- }
-
- $key = md5($trendType.$const.serialize($yValues).serialize($xValues));
- // Determine which trend method has been requested
- switch ($trendType) {
- // Instantiate and return the class for the requested trend method
- case self::TREND_LINEAR :
- case self::TREND_LOGARITHMIC :
- case self::TREND_EXPONENTIAL :
- case self::TREND_POWER :
- if (!isset(self::$_trendCache[$key])) {
- $className = 'PHPExcel_'.$trendType.'_Best_Fit';
- self::$_trendCache[$key] = new $className($yValues,$xValues,$const);
- }
- return self::$_trendCache[$key];
- break;
- case self::TREND_POLYNOMIAL_2 :
- case self::TREND_POLYNOMIAL_3 :
- case self::TREND_POLYNOMIAL_4 :
- case self::TREND_POLYNOMIAL_5 :
- case self::TREND_POLYNOMIAL_6 :
- if (!isset(self::$_trendCache[$key])) {
- $order = substr($trendType,-1);
- self::$_trendCache[$key] = new PHPExcel_Polynomial_Best_Fit($order,$yValues,$xValues,$const);
- }
- return self::$_trendCache[$key];
- break;
- case self::TREND_BEST_FIT :
- case self::TREND_BEST_FIT_NO_POLY :
- // If the request is to determine the best fit regression, then we test each trend line in turn
- // Start by generating an instance of each available trend method
- foreach(self::$_trendTypes as $trendMethod) {
- $className = 'PHPExcel_'.$trendMethod.'BestFit';
- $bestFit[$trendMethod] = new $className($yValues,$xValues,$const);
- $bestFitValue[$trendMethod] = $bestFit[$trendMethod]->getGoodnessOfFit();
- }
- if ($trendType != self::TREND_BEST_FIT_NO_POLY) {
- foreach(self::$_trendTypePolyOrders as $trendMethod) {
- $order = substr($trendMethod,-1);
- $bestFit[$trendMethod] = new PHPExcel_Polynomial_Best_Fit($order,$yValues,$xValues,$const);
- if ($bestFit[$trendMethod]->getError()) {
- unset($bestFit[$trendMethod]);
- } else {
- $bestFitValue[$trendMethod] = $bestFit[$trendMethod]->getGoodnessOfFit();
- }
- }
- }
- // Determine which of our trend lines is the best fit, and then we return the instance of that trend class
- arsort($bestFitValue);
- $bestFitType = key($bestFitValue);
- return $bestFit[$bestFitType];
- break;
- default :
- return false;
- }
- } // function calculate()
-
-} // class trendClass \ No newline at end of file
diff --git a/admin/survey/excel/PHPExcel/Style.php b/admin/survey/excel/PHPExcel/Style.php
deleted file mode 100644
index 269a8cd..0000000
--- a/admin/survey/excel/PHPExcel/Style.php
+++ /dev/null
@@ -1,684 +0,0 @@
-<?php
-/**
- * PHPExcel
- *
- * Copyright (c) 2006 - 2012 PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel_Style
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-
-/**
- * PHPExcel_Style
- *
- * @category PHPExcel
- * @package PHPExcel_Style
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- */
-class PHPExcel_Style implements PHPExcel_IComparable
-{
- /**
- * Font
- *
- * @var PHPExcel_Style_Font
- */
- private $_font;
-
- /**
- * Fill
- *
- * @var PHPExcel_Style_Fill
- */
- private $_fill;
-
- /**
- * Borders
- *
- * @var PHPExcel_Style_Borders
- */
- private $_borders;
-
- /**
- * Alignment
- *
- * @var PHPExcel_Style_Alignment
- */
- private $_alignment;
-
- /**
- * Number Format
- *
- * @var PHPExcel_Style_NumberFormat
- */
- private $_numberFormat;
-
- /**
- * Conditional styles
- *
- * @var PHPExcel_Style_Conditional[]
- */
- private $_conditionalStyles;
-
- /**
- * Protection
- *
- * @var PHPExcel_Style_Protection
- */
- private $_protection;
-
- /**
- * Style supervisor?
- *
- * @var boolean
- */
- private $_isSupervisor;
-
- /**
- * Parent. Only used for style supervisor
- *
- * @var PHPExcel
- */
- private $_parent;
-
- /**
- * Index of style in collection. Only used for real style.
- *
- * @var int
- */
- private $_index;
-
- /**
- * Create a new PHPExcel_Style
- *
- * @param boolean $isSupervisor Flag indicating if this is a supervisor or not
- * Leave this value at default unless you understand exactly what
- * its ramifications are
- * @param boolean $isConditional Flag indicating if this is a conditional style or not
- * Leave this value at default unless you understand exactly what
- * its ramifications are
- */
- public function __construct($isSupervisor = false, $isConditional = false)
- {
- // Supervisor?
- $this->_isSupervisor = $isSupervisor;
-
- // Initialise values
- $this->_conditionalStyles = array();
- $this->_font = new PHPExcel_Style_Font($isSupervisor, $isConditional);
- $this->_fill = new PHPExcel_Style_Fill($isSupervisor, $isConditional);
- $this->_borders = new PHPExcel_Style_Borders($isSupervisor, $isConditional);
- $this->_alignment = new PHPExcel_Style_Alignment($isSupervisor, $isConditional);
- $this->_numberFormat = new PHPExcel_Style_NumberFormat($isSupervisor, $isConditional);
- $this->_protection = new PHPExcel_Style_Protection($isSupervisor, $isConditional);
-
- // bind parent if we are a supervisor
- if ($isSupervisor) {
- $this->_font->bindParent($this);
- $this->_fill->bindParent($this);
- $this->_borders->bindParent($this);
- $this->_alignment->bindParent($this);
- $this->_numberFormat->bindParent($this);
- $this->_protection->bindParent($this);
- }
- }
-
- /**
- * Bind parent. Only used for supervisor
- *
- * @param PHPExcel $parent
- * @return PHPExcel_Style
- */
- public function bindParent($parent)
- {
- $this->_parent = $parent;
- return $this;
- }
-
- /**
- * Is this a supervisor or a real style component?
- *
- * @return boolean
- */
- public function getIsSupervisor()
- {
- return $this->_isSupervisor;
- }
-
- /**
- * Get the shared style component for the currently active cell in currently active sheet.
- * Only used for style supervisor
- *
- * @return PHPExcel_Style
- */
- public function getSharedComponent()
- {
- $activeSheet = $this->getActiveSheet();
- $selectedCell = $this->getActiveCell(); // e.g. 'A1'
-
- if ($activeSheet->cellExists($selectedCell)) {
- $xfIndex = $activeSheet->getCell($selectedCell)->getXfIndex();
- } else {
- $xfIndex = 0;
- }
-
- return $this->_parent->getCellXfByIndex($xfIndex);
- }
-
- /**
- * Get the currently active sheet. Only used for supervisor
- *
- * @return PHPExcel_Worksheet
- */
- public function getActiveSheet()
- {
- return $this->_parent->getActiveSheet();
- }
-
- /**
- * Get the currently active cell coordinate in currently active sheet.
- * Only used for supervisor
- *
- * @return string E.g. 'A1'
- */
- public function getSelectedCells()
- {
- return $this->_parent->getActiveSheet()->getSelectedCells();
- }
-
- /**
- * Get the currently active cell coordinate in currently active sheet.
- * Only used for supervisor
- *
- * @return string E.g. 'A1'
- */
- public function getActiveCell()
- {
- return $this->_parent->getActiveSheet()->getActiveCell();
- }
-
- /**
- * Get parent. Only used for style supervisor
- *
- * @return PHPExcel
- */
- public function getParent()
- {
- return $this->_parent;
- }
-
- /**
- * Apply styles from array
- *
- * <code>
- * $objPHPExcel->getActiveSheet()->getStyle('B2')->applyFromArray(
- * array(
- * 'font' => array(
- * 'name' => 'Arial',
- * 'bold' => true,
- * 'italic' => false,
- * 'underline' => PHPExcel_Style_Font::UNDERLINE_DOUBLE,
- * 'strike' => false,
- * 'color' => array(
- * 'rgb' => '808080'
- * )
- * ),
- * 'borders' => array(
- * 'bottom' => array(
- * 'style' => PHPExcel_Style_Border::BORDER_DASHDOT,
- * 'color' => array(
- * 'rgb' => '808080'
- * )
- * ),
- * 'top' => array(
- * 'style' => PHPExcel_Style_Border::BORDER_DASHDOT,
- * 'color' => array(
- * 'rgb' => '808080'
- * )
- * )
- * )
- * )
- * );
- * </code>
- *
- * @param array $pStyles Array containing style information
- * @param boolean $pAdvanced Advanced mode for setting borders.
- * @throws Exception
- * @return PHPExcel_Style
- */
- public function applyFromArray($pStyles = null, $pAdvanced = true) {
- if (is_array($pStyles)) {
- if ($this->_isSupervisor) {
-
- $pRange = $this->getSelectedCells();
-
- // Uppercase coordinate
- $pRange = strtoupper($pRange);
-
- // Is it a cell range or a single cell?
- if (strpos($pRange, ':') === false) {
- $rangeA = $pRange;
- $rangeB = $pRange;
- } else {
- list($rangeA, $rangeB) = explode(':', $pRange);
- }
-
- // Calculate range outer borders
- $rangeStart = PHPExcel_Cell::coordinateFromString($rangeA);
- $rangeEnd = PHPExcel_Cell::coordinateFromString($rangeB);
-
- // Translate column into index
- $rangeStart[0] = PHPExcel_Cell::columnIndexFromString($rangeStart[0]) - 1;
- $rangeEnd[0] = PHPExcel_Cell::columnIndexFromString($rangeEnd[0]) - 1;
-
- // Make sure we can loop upwards on rows and columns
- if ($rangeStart[0] > $rangeEnd[0] && $rangeStart[1] > $rangeEnd[1]) {
- $tmp = $rangeStart;
- $rangeStart = $rangeEnd;
- $rangeEnd = $tmp;
- }
-
- // ADVANCED MODE:
-
- if ($pAdvanced && isset($pStyles['borders'])) {
-
- // 'allborders' is a shorthand property for 'outline' and 'inside' and
- // it applies to components that have not been set explicitly
- if (isset($pStyles['borders']['allborders'])) {
- foreach (array('outline', 'inside') as $component) {
- if (!isset($pStyles['borders'][$component])) {
- $pStyles['borders'][$component] = $pStyles['borders']['allborders'];
- }
- }
- unset($pStyles['borders']['allborders']); // not needed any more
- }
-
- // 'outline' is a shorthand property for 'top', 'right', 'bottom', 'left'
- // it applies to components that have not been set explicitly
- if (isset($pStyles['borders']['outline'])) {
- foreach (array('top', 'right', 'bottom', 'left') as $component) {
- if (!isset($pStyles['borders'][$component])) {
- $pStyles['borders'][$component] = $pStyles['borders']['outline'];
- }
- }
- unset($pStyles['borders']['outline']); // not needed any more
- }
-
- // 'inside' is a shorthand property for 'vertical' and 'horizontal'
- // it applies to components that have not been set explicitly
- if (isset($pStyles['borders']['inside'])) {
- foreach (array('vertical', 'horizontal') as $component) {
- if (!isset($pStyles['borders'][$component])) {
- $pStyles['borders'][$component] = $pStyles['borders']['inside'];
- }
- }
- unset($pStyles['borders']['inside']); // not needed any more
- }
-
- // width and height characteristics of selection, 1, 2, or 3 (for 3 or more)
- $xMax = min($rangeEnd[0] - $rangeStart[0] + 1, 3);
- $yMax = min($rangeEnd[1] - $rangeStart[1] + 1, 3);
-
- // loop through up to 3 x 3 = 9 regions
- for ($x = 1; $x <= $xMax; ++$x) {
- // start column index for region
- $colStart = ($x == 3) ?
- PHPExcel_Cell::stringFromColumnIndex($rangeEnd[0])
- : PHPExcel_Cell::stringFromColumnIndex($rangeStart[0] + $x - 1);
-
- // end column index for region
- $colEnd = ($x == 1) ?
- PHPExcel_Cell::stringFromColumnIndex($rangeStart[0])
- : PHPExcel_Cell::stringFromColumnIndex($rangeEnd[0] - $xMax + $x);
-
- for ($y = 1; $y <= $yMax; ++$y) {
-
- // which edges are touching the region
- $edges = array();
-
- // are we at left edge
- if ($x == 1) {
- $edges[] = 'left';
- }
-
- // are we at right edge
- if ($x == $xMax) {
- $edges[] = 'right';
- }
-
- // are we at top edge?
- if ($y == 1) {
- $edges[] = 'top';
- }
-
- // are we at bottom edge?
- if ($y == $yMax) {
- $edges[] = 'bottom';
- }
-
- // start row index for region
- $rowStart = ($y == 3) ?
- $rangeEnd[1] : $rangeStart[1] + $y - 1;
-
- // end row index for region
- $rowEnd = ($y == 1) ?
- $rangeStart[1] : $rangeEnd[1] - $yMax + $y;
-
- // build range for region
- $range = $colStart . $rowStart . ':' . $colEnd . $rowEnd;
-
- // retrieve relevant style array for region
- $regionStyles = $pStyles;
- unset($regionStyles['borders']['inside']);
-
- // what are the inner edges of the region when looking at the selection
- $innerEdges = array_diff( array('top', 'right', 'bottom', 'left'), $edges );
-
- // inner edges that are not touching the region should take the 'inside' border properties if they have been set
- foreach ($innerEdges as $innerEdge) {
- switch ($innerEdge) {
- case 'top':
- case 'bottom':
- // should pick up 'horizontal' border property if set
- if (isset($pStyles['borders']['horizontal'])) {
- $regionStyles['borders'][$innerEdge] = $pStyles['borders']['horizontal'];
- } else {
- unset($regionStyles['borders'][$innerEdge]);
- }
- break;
- case 'left':
- case 'right':
- // should pick up 'vertical' border property if set
- if (isset($pStyles['borders']['vertical'])) {
- $regionStyles['borders'][$innerEdge] = $pStyles['borders']['vertical'];
- } else {
- unset($regionStyles['borders'][$innerEdge]);
- }
- break;
- }
- }
-
- // apply region style to region by calling applyFromArray() in simple mode
- $this->getActiveSheet()->getStyle($range)->applyFromArray($regionStyles, false);
- }
- }
- return $this;
- }
-
- // SIMPLE MODE:
-
- // Selection type, inspect
- if (preg_match('/^[A-Z]+1:[A-Z]+1048576$/', $pRange)) {
- $selectionType = 'COLUMN';
- } else if (preg_match('/^A[0-9]+:XFD[0-9]+$/', $pRange)) {
- $selectionType = 'ROW';
- } else {
- $selectionType = 'CELL';
- }
-
- // First loop through columns, rows, or cells to find out which styles are affected by this operation
- switch ($selectionType) {
- case 'COLUMN':
- $oldXfIndexes = array();
- for ($col = $rangeStart[0]; $col <= $rangeEnd[0]; ++$col) {
- $oldXfIndexes[$this->getActiveSheet()->getColumnDimensionByColumn($col)->getXfIndex()] = true;
- }
- break;
-
- case 'ROW':
- $oldXfIndexes = array();
- for ($row = $rangeStart[1]; $row <= $rangeEnd[1]; ++$row) {
- if ($this->getActiveSheet()->getRowDimension($row)->getXfIndex() == null) {
- $oldXfIndexes[0] = true; // row without explicit style should be formatted based on default style
- } else {
- $oldXfIndexes[$this->getActiveSheet()->getRowDimension($row)->getXfIndex()] = true;
- }
- }
- break;
-
- case 'CELL':
- $oldXfIndexes = array();
- for ($col = $rangeStart[0]; $col <= $rangeEnd[0]; ++$col) {
- for ($row = $rangeStart[1]; $row <= $rangeEnd[1]; ++$row) {
- $oldXfIndexes[$this->getActiveSheet()->getCellByColumnAndRow($col, $row)->getXfIndex()] = true;
- }
- }
- break;
- }
-
- // clone each of the affected styles, apply the style arrray, and add the new styles to the workbook
- $workbook = $this->getActiveSheet()->getParent();
- foreach ($oldXfIndexes as $oldXfIndex => $dummy) {
- $style = $workbook->getCellXfByIndex($oldXfIndex);
- $newStyle = clone $style;
- $newStyle->applyFromArray($pStyles);
-
- if ($existingStyle = $workbook->getCellXfByHashCode($newStyle->getHashCode())) {
- // there is already such cell Xf in our collection
- $newXfIndexes[$oldXfIndex] = $existingStyle->getIndex();
- } else {
- // we don't have such a cell Xf, need to add
- $workbook->addCellXf($newStyle);
- $newXfIndexes[$oldXfIndex] = $newStyle->getIndex();
- }
- }
-
- // Loop through columns, rows, or cells again and update the XF index
- switch ($selectionType) {
- case 'COLUMN':
- for ($col = $rangeStart[0]; $col <= $rangeEnd[0]; ++$col) {
- $columnDimension = $this->getActiveSheet()->getColumnDimensionByColumn($col);
- $oldXfIndex = $columnDimension->getXfIndex();
- $columnDimension->setXfIndex($newXfIndexes[$oldXfIndex]);
- }
- break;
-
- case 'ROW':
- for ($row = $rangeStart[1]; $row <= $rangeEnd[1]; ++$row) {
- $rowDimension = $this->getActiveSheet()->getRowDimension($row);
- $oldXfIndex = $rowDimension->getXfIndex() === null ?
- 0 : $rowDimension->getXfIndex(); // row without explicit style should be formatted based on default style
- $rowDimension->setXfIndex($newXfIndexes[$oldXfIndex]);
- }
- break;
-
- case 'CELL':
- for ($col = $rangeStart[0]; $col <= $rangeEnd[0]; ++$col) {
- for ($row = $rangeStart[1]; $row <= $rangeEnd[1]; ++$row) {
- $cell = $this->getActiveSheet()->getCellByColumnAndRow($col, $row);
- $oldXfIndex = $cell->getXfIndex();
- $cell->setXfIndex($newXfIndexes[$oldXfIndex]);
- }
- }
- break;
- }
-
- } else {
- // not a supervisor, just apply the style array directly on style object
- if (array_key_exists('fill', $pStyles)) {
- $this->getFill()->applyFromArray($pStyles['fill']);
- }
- if (array_key_exists('font', $pStyles)) {
- $this->getFont()->applyFromArray($pStyles['font']);
- }
- if (array_key_exists('borders', $pStyles)) {
- $this->getBorders()->applyFromArray($pStyles['borders']);
- }
- if (array_key_exists('alignment', $pStyles)) {
- $this->getAlignment()->applyFromArray($pStyles['alignment']);
- }
- if (array_key_exists('numberformat', $pStyles)) {
- $this->getNumberFormat()->applyFromArray($pStyles['numberformat']);
- }
- if (array_key_exists('protection', $pStyles)) {
- $this->getProtection()->applyFromArray($pStyles['protection']);
- }
- }
- } else {
- throw new Exception("Invalid style array passed.");
- }
- return $this;
- }
-
- /**
- * Get Fill
- *
- * @return PHPExcel_Style_Fill
- */
- public function getFill() {
- return $this->_fill;
- }
-
- /**
- * Get Font
- *
- * @return PHPExcel_Style_Font
- */
- public function getFont() {
- return $this->_font;
- }
-
- /**
- * Set font
- *
- * @param PHPExcel_Style_Font $font
- * @return PHPExcel_Style
- */
- public function setFont(PHPExcel_Style_Font $font)
- {
- $this->_font = $font;
- return $this;
- }
-
- /**
- * Get Borders
- *
- * @return PHPExcel_Style_Borders
- */
- public function getBorders() {
- return $this->_borders;
- }
-
- /**
- * Get Alignment
- *
- * @return PHPExcel_Style_Alignment
- */
- public function getAlignment() {
- return $this->_alignment;
- }
-
- /**
- * Get Number Format
- *
- * @return PHPExcel_Style_NumberFormat
- */
- public function getNumberFormat() {
- return $this->_numberFormat;
- }
-
- /**
- * Get Conditional Styles. Only used on supervisor.
- *
- * @return PHPExcel_Style_Conditional[]
- */
- public function getConditionalStyles() {
- return $this->getActiveSheet()->getConditionalStyles($this->getActiveCell());
- }
-
- /**
- * Set Conditional Styles. Only used on supervisor.
- *
- * @param PHPExcel_Style_Conditional[] $pValue Array of condtional styles
- * @return PHPExcel_Style
- */
- public function setConditionalStyles($pValue = null) {
- if (is_array($pValue)) {
- $this->getActiveSheet()->setConditionalStyles($this->getSelectedCells(), $pValue);
- }
- return $this;
- }
-
- /**
- * Get Protection
- *
- * @return PHPExcel_Style_Protection
- */
- public function getProtection() {
- return $this->_protection;
- }
-
- /**
- * Get hash code
- *
- * @return string Hash code
- */
- public function getHashCode() {
- $hashConditionals = '';
- foreach ($this->_conditionalStyles as $conditional) {
- $hashConditionals .= $conditional->getHashCode();
- }
-
- return md5(
- $this->_fill->getHashCode()
- . $this->_font->getHashCode()
- . $this->_borders->getHashCode()
- . $this->_alignment->getHashCode()
- . $this->_numberFormat->getHashCode()
- . $hashConditionals
- . $this->_protection->getHashCode()
- . __CLASS__
- );
- }
-
- /**
- * Get own index in style collection
- *
- * @return int
- */
- public function getIndex()
- {
- return $this->_index;
- }
-
- /**
- * Set own index in style collection
- *
- * @param int $pValue
- */
- public function setIndex($pValue)
- {
- $this->_index = $pValue;
- }
-
- /**
- * Implement PHP __clone to create a deep clone, not just a shallow copy.
- */
- public function __clone() {
- $vars = get_object_vars($this);
- foreach ($vars as $key => $value) {
- if ((is_object($value)) && ($key != '_parent')) {
- $this->$key = clone $value;
- } else {
- $this->$key = $value;
- }
- }
- }
-}
diff --git a/admin/survey/excel/PHPExcel/Style/Alignment.php b/admin/survey/excel/PHPExcel/Style/Alignment.php
deleted file mode 100644
index ac8b837..0000000
--- a/admin/survey/excel/PHPExcel/Style/Alignment.php
+++ /dev/null
@@ -1,494 +0,0 @@
-<?php
-/**
- * PHPExcel
- *
- * Copyright (c) 2006 - 2012 PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel_Style
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-
-/**
- * PHPExcel_Style_Alignment
- *
- * @category PHPExcel
- * @package PHPExcel_Style
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- */
-class PHPExcel_Style_Alignment implements PHPExcel_IComparable
-{
- /* Horizontal alignment styles */
- const HORIZONTAL_GENERAL = 'general';
- const HORIZONTAL_LEFT = 'left';
- const HORIZONTAL_RIGHT = 'right';
- const HORIZONTAL_CENTER = 'center';
- const HORIZONTAL_CENTER_CONTINUOUS = 'centerContinuous';
- const HORIZONTAL_JUSTIFY = 'justify';
-
- /* Vertical alignment styles */
- const VERTICAL_BOTTOM = 'bottom';
- const VERTICAL_TOP = 'top';
- const VERTICAL_CENTER = 'center';
- const VERTICAL_JUSTIFY = 'justify';
-
- /**
- * Horizontal
- *
- * @var string
- */
- private $_horizontal = PHPExcel_Style_Alignment::HORIZONTAL_GENERAL;
-
- /**
- * Vertical
- *
- * @var string
- */
- private $_vertical = PHPExcel_Style_Alignment::VERTICAL_BOTTOM;
-
- /**
- * Text rotation
- *
- * @var int
- */
- private $_textRotation = 0;
-
- /**
- * Wrap text
- *
- * @var boolean
- */
- private $_wrapText = false;
-
- /**
- * Shrink to fit
- *
- * @var boolean
- */
- private $_shrinkToFit = false;
-
- /**
- * Indent - only possible with horizontal alignment left and right
- *
- * @var int
- */
- private $_indent = 0;
-
- /**
- * Parent Borders
- *
- * @var _parentPropertyName string
- */
- private $_parentPropertyName;
-
- /**
- * Supervisor?
- *
- * @var boolean
- */
- private $_isSupervisor;
-
- /**
- * Parent. Only used for supervisor
- *
- * @var PHPExcel_Style
- */
- private $_parent;
-
- /**
- * Create a new PHPExcel_Style_Alignment
- *
- * @param boolean $isSupervisor Flag indicating if this is a supervisor or not
- * Leave this value at default unless you understand exactly what
- * its ramifications are
- * @param boolean $isConditional Flag indicating if this is a conditional style or not
- * Leave this value at default unless you understand exactly what
- * its ramifications are
- */
- public function __construct($isSupervisor = false, $isConditional = false)
- {
- // Supervisor?
- $this->_isSupervisor = $isSupervisor;
-
- if ($isConditional) {
- $this->_horizontal = NULL;
- $this->_vertical = NULL;
- $this->_textRotation = NULL;
- }
- }
-
- /**
- * Bind parent. Only used for supervisor
- *
- * @param PHPExcel $parent
- * @return PHPExcel_Style_Alignment
- */
- public function bindParent($parent)
- {
- $this->_parent = $parent;
- return $this;
- }
-
- /**
- * Is this a supervisor or a real style component?
- *
- * @return boolean
- */
- public function getIsSupervisor()
- {
- return $this->_isSupervisor;
- }
-
- /**
- * Get the shared style component for the currently active cell in currently active sheet.
- * Only used for style supervisor
- *
- * @return PHPExcel_Style_Alignment
- */
- public function getSharedComponent()
- {
- return $this->_parent->getSharedComponent()->getAlignment();
- }
-
- /**
- * Get the currently active sheet. Only used for supervisor
- *
- * @return PHPExcel_Worksheet
- */
- public function getActiveSheet()
- {
- return $this->_parent->getActiveSheet();
- }
-
- /**
- * Get the currently active cell coordinate in currently active sheet.
- * Only used for supervisor
- *
- * @return string E.g. 'A1'
- */
- public function getSelectedCells()
- {
- return $this->getActiveSheet()->getSelectedCells();
- }
-
- /**
- * Get the currently active cell coordinate in currently active sheet.
- * Only used for supervisor
- *
- * @return string E.g. 'A1'
- */
- public function getActiveCell()
- {
- return $this->getActiveSheet()->getActiveCell();
- }
-
- /**
- * Build style array from subcomponents
- *
- * @param array $array
- * @return array
- */
- public function getStyleArray($array)
- {
- return array('alignment' => $array);
- }
-
- /**
- * Apply styles from array
- *
- * <code>
- * $objPHPExcel->getActiveSheet()->getStyle('B2')->getAlignment()->applyFromArray(
- * array(
- * 'horizontal' => PHPExcel_Style_Alignment::HORIZONTAL_CENTER,
- * 'vertical' => PHPExcel_Style_Alignment::VERTICAL_CENTER,
- * 'rotation' => 0,
- * 'wrap' => true
- * )
- * );
- * </code>
- *
- * @param array $pStyles Array containing style information
- * @throws Exception
- * @return PHPExcel_Style_Alignment
- */
- public function applyFromArray($pStyles = null) {
- if (is_array($pStyles)) {
- if ($this->_isSupervisor) {
- $this->getActiveSheet()->getStyle($this->getSelectedCells())->applyFromArray($this->getStyleArray($pStyles));
- } else {
- if (array_key_exists('horizontal', $pStyles)) {
- $this->setHorizontal($pStyles['horizontal']);
- }
- if (array_key_exists('vertical', $pStyles)) {
- $this->setVertical($pStyles['vertical']);
- }
- if (array_key_exists('rotation', $pStyles)) {
- $this->setTextRotation($pStyles['rotation']);
- }
- if (array_key_exists('wrap', $pStyles)) {
- $this->setWrapText($pStyles['wrap']);
- }
- if (array_key_exists('shrinkToFit', $pStyles)) {
- $this->setShrinkToFit($pStyles['shrinkToFit']);
- }
- if (array_key_exists('indent', $pStyles)) {
- $this->setIndent($pStyles['indent']);
- }
- }
- } else {
- throw new Exception("Invalid style array passed.");
- }
- return $this;
- }
-
- /**
- * Get Horizontal
- *
- * @return string
- */
- public function getHorizontal() {
- if ($this->_isSupervisor) {
- return $this->getSharedComponent()->getHorizontal();
- }
- return $this->_horizontal;
- }
-
- /**
- * Set Horizontal
- *
- * @param string $pValue
- * @return PHPExcel_Style_Alignment
- */
- public function setHorizontal($pValue = PHPExcel_Style_Alignment::HORIZONTAL_GENERAL) {
- if ($pValue == '') {
- $pValue = PHPExcel_Style_Alignment::HORIZONTAL_GENERAL;
- }
-
- if ($this->_isSupervisor) {
- $styleArray = $this->getStyleArray(array('horizontal' => $pValue));
- $this->getActiveSheet()->getStyle($this->getSelectedCells())->applyFromArray($styleArray);
- }
- else {
- $this->_horizontal = $pValue;
- }
- return $this;
- }
-
- /**
- * Get Vertical
- *
- * @return string
- */
- public function getVertical() {
- if ($this->_isSupervisor) {
- return $this->getSharedComponent()->getVertical();
- }
- return $this->_vertical;
- }
-
- /**
- * Set Vertical
- *
- * @param string $pValue
- * @return PHPExcel_Style_Alignment
- */
- public function setVertical($pValue = PHPExcel_Style_Alignment::VERTICAL_BOTTOM) {
- if ($pValue == '') {
- $pValue = PHPExcel_Style_Alignment::VERTICAL_BOTTOM;
- }
-
- if ($this->_isSupervisor) {
- $styleArray = $this->getStyleArray(array('vertical' => $pValue));
- $this->getActiveSheet()->getStyle($this->getSelectedCells())->applyFromArray($styleArray);
- } else {
- $this->_vertical = $pValue;
- }
- return $this;
- }
-
- /**
- * Get TextRotation
- *
- * @return int
- */
- public function getTextRotation() {
- if ($this->_isSupervisor) {
- return $this->getSharedComponent()->getTextRotation();
- }
- return $this->_textRotation;
- }
-
- /**
- * Set TextRotation
- *
- * @param int $pValue
- * @throws Exception
- * @return PHPExcel_Style_Alignment
- */
- public function setTextRotation($pValue = 0) {
- // Excel2007 value 255 => PHPExcel value -165
- if ($pValue == 255) {
- $pValue = -165;
- }
-
- // Set rotation
- if ( ($pValue >= -90 && $pValue <= 90) || $pValue == -165 ) {
- if ($this->_isSupervisor) {
- $styleArray = $this->getStyleArray(array('rotation' => $pValue));
- $this->getActiveSheet()->getStyle($this->getSelectedCells())->applyFromArray($styleArray);
- } else {
- $this->_textRotation = $pValue;
- }
- } else {
- throw new Exception("Text rotation should be a value between -90 and 90.");
- }
-
- return $this;
- }
-
- /**
- * Get Wrap Text
- *
- * @return boolean
- */
- public function getWrapText() {
- if ($this->_isSupervisor) {
- return $this->getSharedComponent()->getWrapText();
- }
- return $this->_wrapText;
- }
-
- /**
- * Set Wrap Text
- *
- * @param boolean $pValue
- * @return PHPExcel_Style_Alignment
- */
- public function setWrapText($pValue = false) {
- if ($pValue == '') {
- $pValue = false;
- }
- if ($this->_isSupervisor) {
- $styleArray = $this->getStyleArray(array('wrap' => $pValue));
- $this->getActiveSheet()->getStyle($this->getSelectedCells())->applyFromArray($styleArray);
- } else {
- $this->_wrapText = $pValue;
- }
- return $this;
- }
-
- /**
- * Get Shrink to fit
- *
- * @return boolean
- */
- public function getShrinkToFit() {
- if ($this->_isSupervisor) {
- return $this->getSharedComponent()->getShrinkToFit();
- }
- return $this->_shrinkToFit;
- }
-
- /**
- * Set Shrink to fit
- *
- * @param boolean $pValue
- * @return PHPExcel_Style_Alignment
- */
- public function setShrinkToFit($pValue = false) {
- if ($pValue == '') {
- $pValue = false;
- }
- if ($this->_isSupervisor) {
- $styleArray = $this->getStyleArray(array('shrinkToFit' => $pValue));
- $this->getActiveSheet()->getStyle($this->getSelectedCells())->applyFromArray($styleArray);
- } else {
- $this->_shrinkToFit = $pValue;
- }
- return $this;
- }
-
- /**
- * Get indent
- *
- * @return int
- */
- public function getIndent() {
- if ($this->_isSupervisor) {
- return $this->getSharedComponent()->getIndent();
- }
- return $this->_indent;
- }
-
- /**
- * Set indent
- *
- * @param int $pValue
- * @return PHPExcel_Style_Alignment
- */
- public function setIndent($pValue = 0) {
- if ($pValue > 0) {
- if ($this->getHorizontal() != self::HORIZONTAL_GENERAL && $this->getHorizontal() != self::HORIZONTAL_LEFT && $this->getHorizontal() != self::HORIZONTAL_RIGHT) {
- $pValue = 0; // indent not supported
- }
- }
- if ($this->_isSupervisor) {
- $styleArray = $this->getStyleArray(array('indent' => $pValue));
- $this->getActiveSheet()->getStyle($this->getSelectedCells())->applyFromArray($styleArray);
- } else {
- $this->_indent = $pValue;
- }
- return $this;
- }
-
- /**
- * Get hash code
- *
- * @return string Hash code
- */
- public function getHashCode() {
- if ($this->_isSupervisor) {
- return $this->getSharedComponent()->getHashCode();
- }
- return md5(
- $this->_horizontal
- . $this->_vertical
- . $this->_textRotation
- . ($this->_wrapText ? 't' : 'f')
- . ($this->_shrinkToFit ? 't' : 'f')
- . $this->_indent
- . __CLASS__
- );
- }
-
- /**
- * Implement PHP __clone to create a deep clone, not just a shallow copy.
- */
- public function __clone() {
- $vars = get_object_vars($this);
- foreach ($vars as $key => $value) {
- if ((is_object($value)) && ($key != '_parent')) {
- $this->$key = clone $value;
- } else {
- $this->$key = $value;
- }
- }
- }
-}
diff --git a/admin/survey/excel/PHPExcel/Style/Border.php b/admin/survey/excel/PHPExcel/Style/Border.php
deleted file mode 100644
index 1bd4b13..0000000
--- a/admin/survey/excel/PHPExcel/Style/Border.php
+++ /dev/null
@@ -1,388 +0,0 @@
-<?php
-/**
- * PHPExcel
- *
- * Copyright (c) 2006 - 2012 PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel_Style
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-
-/**
- * PHPExcel_Style_Border
- *
- * @category PHPExcel
- * @package PHPExcel_Style
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- */
-class PHPExcel_Style_Border implements PHPExcel_IComparable
-{
- /* Border style */
- const BORDER_NONE = 'none';
- const BORDER_DASHDOT = 'dashDot';
- const BORDER_DASHDOTDOT = 'dashDotDot';
- const BORDER_DASHED = 'dashed';
- const BORDER_DOTTED = 'dotted';
- const BORDER_DOUBLE = 'double';
- const BORDER_HAIR = 'hair';
- const BORDER_MEDIUM = 'medium';
- const BORDER_MEDIUMDASHDOT = 'mediumDashDot';
- const BORDER_MEDIUMDASHDOTDOT = 'mediumDashDotDot';
- const BORDER_MEDIUMDASHED = 'mediumDashed';
- const BORDER_SLANTDASHDOT = 'slantDashDot';
- const BORDER_THICK = 'thick';
- const BORDER_THIN = 'thin';
-
- /**
- * Border style
- *
- * @var string
- */
- private $_borderStyle = PHPExcel_Style_Border::BORDER_NONE;
-
- /**
- * Border color
- *
- * @var PHPExcel_Style_Color
- */
- private $_color;
-
- /**
- * Supervisor?
- *
- * @var boolean
- */
- private $_isSupervisor;
-
- /**
- * Parent. Only used for supervisor
- *
- * @var PHPExcel_Style_Borders
- */
- private $_parent;
-
- /**
- * Parent property name
- *
- * @var string
- */
- private $_parentPropertyName;
-
- /**
- * Create a new PHPExcel_Style_Border
- *
- * @param boolean $isSupervisor Flag indicating if this is a supervisor or not
- * Leave this value at default unless you understand exactly what
- * its ramifications are
- * @param boolean $isConditional Flag indicating if this is a conditional style or not
- * Leave this value at default unless you understand exactly what
- * its ramifications are
- */
- public function __construct($isSupervisor = false, $isConditional = false)
- {
- // Supervisor?
- $this->_isSupervisor = $isSupervisor;
-
- // Initialise values
- $this->_color = new PHPExcel_Style_Color(PHPExcel_Style_Color::COLOR_BLACK, $isSupervisor);
-
- // bind parent if we are a supervisor
- if ($isSupervisor) {
- $this->_color->bindParent($this, '_color');
- }
- }
-
- /**
- * Bind parent. Only used for supervisor
- *
- * @param PHPExcel_Style_Borders $parent
- * @param string $parentPropertyName
- * @return PHPExcel_Style_Border
- */
- public function bindParent($parent, $parentPropertyName)
- {
- $this->_parent = $parent;
- $this->_parentPropertyName = $parentPropertyName;
- return $this;
- }
-
- /**
- * Is this a supervisor or a real style component?
- *
- * @return boolean
- */
- public function getIsSupervisor()
- {
- return $this->_isSupervisor;
- }
-
- /**
- * Get the shared style component for the currently active cell in currently active sheet.
- * Only used for style supervisor
- *
- * @return PHPExcel_Style_Border
- * @throws Exception
- */
- public function getSharedComponent()
- {
- switch ($this->_parentPropertyName) {
- case '_allBorders':
- case '_horizontal':
- case '_inside':
- case '_outline':
- case '_vertical':
- throw new Exception('Cannot get shared component for a pseudo-border.');
- break;
-
- case '_bottom':
- return $this->_parent->getSharedComponent()->getBottom();
- break;
-
- case '_diagonal':
- return $this->_parent->getSharedComponent()->getDiagonal();
- break;
-
- case '_left':
- return $this->_parent->getSharedComponent()->getLeft();
- break;
-
- case '_right':
- return $this->_parent->getSharedComponent()->getRight();
- break;
-
- case '_top':
- return $this->_parent->getSharedComponent()->getTop();
- break;
-
- }
- }
-
- /**
- * Get the currently active sheet. Only used for supervisor
- *
- * @return PHPExcel_Worksheet
- */
- public function getActiveSheet()
- {
- return $this->_parent->getActiveSheet();
- }
-
- /**
- * Get the currently active cell coordinate in currently active sheet.
- * Only used for supervisor
- *
- * @return string E.g. 'A1'
- */
- public function getSelectedCells()
- {
- return $this->getActiveSheet()->getSelectedCells();
- }
-
- /**
- * Get the currently active cell coordinate in currently active sheet.
- * Only used for supervisor
- *
- * @return string E.g. 'A1'
- */
- public function getActiveCell()
- {
- return $this->getActiveSheet()->getActiveCell();
- }
-
- /**
- * Build style array from subcomponents
- *
- * @param array $array
- * @return array
- */
- public function getStyleArray($array)
- {
- switch ($this->_parentPropertyName) {
- case '_allBorders':
- $key = 'allborders';
- break;
-
- case '_bottom':
- $key = 'bottom';
- break;
-
- case '_diagonal':
- $key = 'diagonal';
- break;
-
- case '_horizontal':
- $key = 'horizontal';
- break;
-
- case '_inside':
- $key = 'inside';
- break;
-
- case '_left':
- $key = 'left';
- break;
-
- case '_outline':
- $key = 'outline';
- break;
-
- case '_right':
- $key = 'right';
- break;
-
- case '_top':
- $key = 'top';
- break;
-
- case '_vertical':
- $key = 'vertical';
- break;
- }
- return $this->_parent->getStyleArray(array($key => $array));
- }
-
- /**
- * Apply styles from array
- *
- * <code>
- * $objPHPExcel->getActiveSheet()->getStyle('B2')->getBorders()->getTop()->applyFromArray(
- * array(
- * 'style' => PHPExcel_Style_Border::BORDER_DASHDOT,
- * 'color' => array(
- * 'rgb' => '808080'
- * )
- * )
- * );
- * </code>
- *
- * @param array $pStyles Array containing style information
- * @throws Exception
- * @return PHPExcel_Style_Border
- */
- public function applyFromArray($pStyles = null) {
- if (is_array($pStyles)) {
- if ($this->_isSupervisor) {
- $this->getActiveSheet()->getStyle($this->getSelectedCells())->applyFromArray($this->getStyleArray($pStyles));
- } else {
- if (array_key_exists('style', $pStyles)) {
- $this->setBorderStyle($pStyles['style']);
- }
- if (array_key_exists('color', $pStyles)) {
- $this->getColor()->applyFromArray($pStyles['color']);
- }
- }
- } else {
- throw new Exception("Invalid style array passed.");
- }
- return $this;
- }
-
- /**
- * Get Border style
- *
- * @return string
- */
- public function getBorderStyle() {
- if ($this->_isSupervisor) {
- return $this->getSharedComponent()->getBorderStyle();
- }
- return $this->_borderStyle;
- }
-
- /**
- * Set Border style
- *
- * @param string $pValue
- * @return PHPExcel_Style_Border
- */
- public function setBorderStyle($pValue = PHPExcel_Style_Border::BORDER_NONE) {
-
- if ($pValue == '') {
- $pValue = PHPExcel_Style_Border::BORDER_NONE;
- }
- if ($this->_isSupervisor) {
- $styleArray = $this->getStyleArray(array('style' => $pValue));
- $this->getActiveSheet()->getStyle($this->getSelectedCells())->applyFromArray($styleArray);
- } else {
- $this->_borderStyle = $pValue;
- }
- return $this;
- }
-
- /**
- * Get Border Color
- *
- * @return PHPExcel_Style_Color
- */
- public function getColor() {
- return $this->_color;
- }
-
- /**
- * Set Border Color
- *
- * @param PHPExcel_Style_Color $pValue
- * @throws Exception
- * @return PHPExcel_Style_Border
- */
- public function setColor(PHPExcel_Style_Color $pValue = null) {
- // make sure parameter is a real color and not a supervisor
- $color = $pValue->getIsSupervisor() ? $pValue->getSharedComponent() : $pValue;
-
- if ($this->_isSupervisor) {
- $styleArray = $this->getColor()->getStyleArray(array('argb' => $color->getARGB()));
- $this->getActiveSheet()->getStyle($this->getSelectedCells())->applyFromArray($styleArray);
- } else {
- $this->_color = $color;
- }
- return $this;
- }
-
- /**
- * Get hash code
- *
- * @return string Hash code
- */
- public function getHashCode() {
- if ($this->_isSupervisor) {
- return $this->getSharedComponent()->getHashCode();
- }
- return md5(
- $this->_borderStyle
- . $this->_color->getHashCode()
- . __CLASS__
- );
- }
-
- /**
- * Implement PHP __clone to create a deep clone, not just a shallow copy.
- */
- public function __clone() {
- $vars = get_object_vars($this);
- foreach ($vars as $key => $value) {
- if ((is_object($value)) && ($key != '_parent')) {
- $this->$key = clone $value;
- } else {
- $this->$key = $value;
- }
- }
- }
-}
diff --git a/admin/survey/excel/PHPExcel/Style/Borders.php b/admin/survey/excel/PHPExcel/Style/Borders.php
deleted file mode 100644
index e5d55bd..0000000
--- a/admin/survey/excel/PHPExcel/Style/Borders.php
+++ /dev/null
@@ -1,512 +0,0 @@
-<?php
-/**
- * PHPExcel
- *
- * Copyright (c) 2006 - 2012 PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel_Style
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-
-/**
- * PHPExcel_Style_Borders
- *
- * @category PHPExcel
- * @package PHPExcel_Style
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- */
-class PHPExcel_Style_Borders implements PHPExcel_IComparable
-{
- /* Diagonal directions */
- const DIAGONAL_NONE = 0;
- const DIAGONAL_UP = 1;
- const DIAGONAL_DOWN = 2;
- const DIAGONAL_BOTH = 3;
-
- /**
- * Left
- *
- * @var PHPExcel_Style_Border
- */
- private $_left;
-
- /**
- * Right
- *
- * @var PHPExcel_Style_Border
- */
- private $_right;
-
- /**
- * Top
- *
- * @var PHPExcel_Style_Border
- */
- private $_top;
-
- /**
- * Bottom
- *
- * @var PHPExcel_Style_Border
- */
- private $_bottom;
-
- /**
- * Diagonal
- *
- * @var PHPExcel_Style_Border
- */
- private $_diagonal;
-
- /**
- * DiagonalDirection
- *
- * @var int
- */
- private $_diagonalDirection;
-
- /**
- * All borders psedo-border. Only applies to supervisor.
- *
- * @var PHPExcel_Style_Border
- */
- private $_allBorders;
-
- /**
- * Outline psedo-border. Only applies to supervisor.
- *
- * @var PHPExcel_Style_Border
- */
- private $_outline;
-
- /**
- * Inside psedo-border. Only applies to supervisor.
- *
- * @var PHPExcel_Style_Border
- */
- private $_inside;
-
- /**
- * Vertical pseudo-border. Only applies to supervisor.
- *
- * @var PHPExcel_Style_Border
- */
- private $_vertical;
-
- /**
- * Horizontal pseudo-border. Only applies to supervisor.
- *
- * @var PHPExcel_Style_Border
- */
- private $_horizontal;
-
- /**
- * Parent Borders
- *
- * @var _parentPropertyName string
- */
- private $_parentPropertyName;
-
- /**
- * Supervisor?
- *
- * @var boolean
- */
- private $_isSupervisor;
-
- /**
- * Parent. Only used for supervisor
- *
- * @var PHPExcel_Style
- */
- private $_parent;
-
- /**
- * Create a new PHPExcel_Style_Borders
- *
- * @param boolean $isSupervisor Flag indicating if this is a supervisor or not
- * Leave this value at default unless you understand exactly what
- * its ramifications are
- * @param boolean $isConditional Flag indicating if this is a conditional style or not
- * Leave this value at default unless you understand exactly what
- * its ramifications are
- */
- public function __construct($isSupervisor = false, $isConditional = false)
- {
- // Supervisor?
- $this->_isSupervisor = $isSupervisor;
-
- // Initialise values
- $this->_left = new PHPExcel_Style_Border($isSupervisor, $isConditional);
- $this->_right = new PHPExcel_Style_Border($isSupervisor, $isConditional);
- $this->_top = new PHPExcel_Style_Border($isSupervisor, $isConditional);
- $this->_bottom = new PHPExcel_Style_Border($isSupervisor, $isConditional);
- $this->_diagonal = new PHPExcel_Style_Border($isSupervisor, $isConditional);
- $this->_diagonalDirection = PHPExcel_Style_Borders::DIAGONAL_NONE;
-
- // Specially for supervisor
- if ($isSupervisor) {
- // Initialize pseudo-borders
- $this->_allBorders = new PHPExcel_Style_Border(true);
- $this->_outline = new PHPExcel_Style_Border(true);
- $this->_inside = new PHPExcel_Style_Border(true);
- $this->_vertical = new PHPExcel_Style_Border(true);
- $this->_horizontal = new PHPExcel_Style_Border(true);
-
- // bind parent if we are a supervisor
- $this->_left->bindParent($this, '_left');
- $this->_right->bindParent($this, '_right');
- $this->_top->bindParent($this, '_top');
- $this->_bottom->bindParent($this, '_bottom');
- $this->_diagonal->bindParent($this, '_diagonal');
- $this->_allBorders->bindParent($this, '_allBorders');
- $this->_outline->bindParent($this, '_outline');
- $this->_inside->bindParent($this, '_inside');
- $this->_vertical->bindParent($this, '_vertical');
- $this->_horizontal->bindParent($this, '_horizontal');
- }
- }
-
- /**
- * Bind parent. Only used for supervisor
- *
- * @param PHPExcel_Style $parent
- * @return PHPExcel_Style_Borders
- */
- public function bindParent($parent)
- {
- $this->_parent = $parent;
- return $this;
- }
-
- /**
- * Is this a supervisor or a real style component?
- *
- * @return boolean
- */
- public function getIsSupervisor()
- {
- return $this->_isSupervisor;
- }
-
- /**
- * Get the shared style component for the currently active cell in currently active sheet.
- * Only used for style supervisor
- *
- * @return PHPExcel_Style_Borders
- */
- public function getSharedComponent()
- {
- return $this->_parent->getSharedComponent()->getBorders();
- }
-
- /**
- * Get the currently active sheet. Only used for supervisor
- *
- * @return PHPExcel_Worksheet
- */
- public function getActiveSheet()
- {
- return $this->_parent->getActiveSheet();
- }
-
- /**
- * Get the currently active cell coordinate in currently active sheet.
- * Only used for supervisor
- *
- * @return string E.g. 'A1'
- */
- public function getSelectedCells()
- {
- return $this->getActiveSheet()->getSelectedCells();
- }
-
- /**
- * Get the currently active cell coordinate in currently active sheet.
- * Only used for supervisor
- *
- * @return string E.g. 'A1'
- */
- public function getActiveCell()
- {
- return $this->getActiveSheet()->getActiveCell();
- }
-
- /**
- * Build style array from subcomponents
- *
- * @param array $array
- * @return array
- */
- public function getStyleArray($array)
- {
- return array('borders' => $array);
- }
-
- /**
- * Apply styles from array
- *
- * <code>
- * $objPHPExcel->getActiveSheet()->getStyle('B2')->getBorders()->applyFromArray(
- * array(
- * 'bottom' => array(
- * 'style' => PHPExcel_Style_Border::BORDER_DASHDOT,
- * 'color' => array(
- * 'rgb' => '808080'
- * )
- * ),
- * 'top' => array(
- * 'style' => PHPExcel_Style_Border::BORDER_DASHDOT,
- * 'color' => array(
- * 'rgb' => '808080'
- * )
- * )
- * )
- * );
- * </code>
- * <code>
- * $objPHPExcel->getActiveSheet()->getStyle('B2')->getBorders()->applyFromArray(
- * array(
- * 'allborders' => array(
- * 'style' => PHPExcel_Style_Border::BORDER_DASHDOT,
- * 'color' => array(
- * 'rgb' => '808080'
- * )
- * )
- * )
- * );
- * </code>
- *
- * @param array $pStyles Array containing style information
- * @throws Exception
- * @return PHPExcel_Style_Borders
- */
- public function applyFromArray($pStyles = null) {
- if (is_array($pStyles)) {
- if ($this->_isSupervisor) {
- $this->getActiveSheet()->getStyle($this->getSelectedCells())->applyFromArray($this->getStyleArray($pStyles));
- } else {
- if (array_key_exists('left', $pStyles)) {
- $this->getLeft()->applyFromArray($pStyles['left']);
- }
- if (array_key_exists('right', $pStyles)) {
- $this->getRight()->applyFromArray($pStyles['right']);
- }
- if (array_key_exists('top', $pStyles)) {
- $this->getTop()->applyFromArray($pStyles['top']);
- }
- if (array_key_exists('bottom', $pStyles)) {
- $this->getBottom()->applyFromArray($pStyles['bottom']);
- }
- if (array_key_exists('diagonal', $pStyles)) {
- $this->getDiagonal()->applyFromArray($pStyles['diagonal']);
- }
- if (array_key_exists('diagonaldirection', $pStyles)) {
- $this->setDiagonalDirection($pStyles['diagonaldirection']);
- }
- if (array_key_exists('allborders', $pStyles)) {
- $this->getLeft()->applyFromArray($pStyles['allborders']);
- $this->getRight()->applyFromArray($pStyles['allborders']);
- $this->getTop()->applyFromArray($pStyles['allborders']);
- $this->getBottom()->applyFromArray($pStyles['allborders']);
- }
- }
- } else {
- throw new Exception("Invalid style array passed.");
- }
- return $this;
- }
-
- /**
- * Get Left
- *
- * @return PHPExcel_Style_Border
- */
- public function getLeft() {
- return $this->_left;
- }
-
- /**
- * Get Right
- *
- * @return PHPExcel_Style_Border
- */
- public function getRight() {
- return $this->_right;
- }
-
- /**
- * Get Top
- *
- * @return PHPExcel_Style_Border
- */
- public function getTop() {
- return $this->_top;
- }
-
- /**
- * Get Bottom
- *
- * @return PHPExcel_Style_Border
- */
- public function getBottom() {
- return $this->_bottom;
- }
-
- /**
- * Get Diagonal
- *
- * @return PHPExcel_Style_Border
- */
- public function getDiagonal() {
- return $this->_diagonal;
- }
-
- /**
- * Get AllBorders (pseudo-border). Only applies to supervisor.
- *
- * @return PHPExcel_Style_Border
- * @throws Exception
- */
- public function getAllBorders() {
- if (!$this->_isSupervisor) {
- throw new Exception('Can only get pseudo-border for supervisor.');
- }
- return $this->_allBorders;
- }
-
- /**
- * Get Outline (pseudo-border). Only applies to supervisor.
- *
- * @return boolean
- * @throws Exception
- */
- public function getOutline() {
- if (!$this->_isSupervisor) {
- throw new Exception('Can only get pseudo-border for supervisor.');
- }
- return $this->_outline;
- }
-
- /**
- * Get Inside (pseudo-border). Only applies to supervisor.
- *
- * @return boolean
- * @throws Exception
- */
- public function getInside() {
- if (!$this->_isSupervisor) {
- throw new Exception('Can only get pseudo-border for supervisor.');
- }
- return $this->_inside;
- }
-
- /**
- * Get Vertical (pseudo-border). Only applies to supervisor.
- *
- * @return PHPExcel_Style_Border
- * @throws Exception
- */
- public function getVertical() {
- if (!$this->_isSupervisor) {
- throw new Exception('Can only get pseudo-border for supervisor.');
- }
- return $this->_vertical;
- }
-
- /**
- * Get Horizontal (pseudo-border). Only applies to supervisor.
- *
- * @return PHPExcel_Style_Border
- * @throws Exception
- */
- public function getHorizontal() {
- if (!$this->_isSupervisor) {
- throw new Exception('Can only get pseudo-border for supervisor.');
- }
- return $this->_horizontal;
- }
-
- /**
- * Get DiagonalDirection
- *
- * @return int
- */
- public function getDiagonalDirection() {
- if ($this->_isSupervisor) {
- return $this->getSharedComponent()->getDiagonalDirection();
- }
- return $this->_diagonalDirection;
- }
-
- /**
- * Set DiagonalDirection
- *
- * @param int $pValue
- * @return PHPExcel_Style_Borders
- */
- public function setDiagonalDirection($pValue = PHPExcel_Style_Borders::DIAGONAL_NONE) {
- if ($pValue == '') {
- $pValue = PHPExcel_Style_Borders::DIAGONAL_NONE;
- }
- if ($this->_isSupervisor) {
- $styleArray = $this->getStyleArray(array('diagonaldirection' => $pValue));
- $this->getActiveSheet()->getStyle($this->getSelectedCells())->applyFromArray($styleArray);
- } else {
- $this->_diagonalDirection = $pValue;
- }
- return $this;
- }
-
- /**
- * Get hash code
- *
- * @return string Hash code
- */
- public function getHashCode() {
- if ($this->_isSupervisor) {
- return $this->getSharedComponent()->getHashcode();
- }
- return md5(
- $this->getLeft()->getHashCode()
- . $this->getRight()->getHashCode()
- . $this->getTop()->getHashCode()
- . $this->getBottom()->getHashCode()
- . $this->getDiagonal()->getHashCode()
- . $this->getDiagonalDirection()
- . __CLASS__
- );
- }
-
- /**
- * Implement PHP __clone to create a deep clone, not just a shallow copy.
- */
- public function __clone() {
- $vars = get_object_vars($this);
- foreach ($vars as $key => $value) {
- if ((is_object($value)) && ($key != '_parent')) {
- $this->$key = clone $value;
- } else {
- $this->$key = $value;
- }
- }
- }
-}
diff --git a/admin/survey/excel/PHPExcel/Style/Color.php b/admin/survey/excel/PHPExcel/Style/Color.php
deleted file mode 100644
index 6956878..0000000
--- a/admin/survey/excel/PHPExcel/Style/Color.php
+++ /dev/null
@@ -1,510 +0,0 @@
-<?php
-/**
- * PHPExcel
- *
- * Copyright (c) 2006 - 2012 PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel_Style
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-
-/**
- * PHPExcel_Style_Color
- *
- * @category PHPExcel
- * @package PHPExcel_Style
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- */
-class PHPExcel_Style_Color implements PHPExcel_IComparable
-{
- /* Colors */
- const COLOR_BLACK = 'FF000000';
- const COLOR_WHITE = 'FFFFFFFF';
- const COLOR_RED = 'FFFF0000';
- const COLOR_DARKRED = 'FF800000';
- const COLOR_BLUE = 'FF0000FF';
- const COLOR_DARKBLUE = 'FF000080';
- const COLOR_GREEN = 'FF00FF00';
- const COLOR_DARKGREEN = 'FF008000';
- const COLOR_YELLOW = 'FFFFFF00';
- const COLOR_DARKYELLOW = 'FF808000';
-
- /**
- * Indexed colors array
- *
- * @var array
- */
- private static $_indexedColors;
-
- /**
- * ARGB - Alpha RGB
- *
- * @var string
- */
- private $_argb = NULL;
-
- /**
- * Supervisor?
- *
- * @var boolean
- */
- private $_isSupervisor;
-
- /**
- * Parent. Only used for supervisor
- *
- * @var mixed
- */
- private $_parent;
-
- /**
- * Parent property name
- *
- * @var string
- */
- private $_parentPropertyName;
-
-
- /**
- * Create a new PHPExcel_Style_Color
- *
- * @param string $pARGB ARGB value for the colour
- * @param boolean $isSupervisor Flag indicating if this is a supervisor or not
- * Leave this value at default unless you understand exactly what
- * its ramifications are
- * @param boolean $isConditional Flag indicating if this is a conditional style or not
- * Leave this value at default unless you understand exactly what
- * its ramifications are
- */
- public function __construct($pARGB = PHPExcel_Style_Color::COLOR_BLACK, $isSupervisor = false, $isConditional = false)
- {
- // Supervisor?
- $this->_isSupervisor = $isSupervisor;
-
- // Initialise values
- if (!$isConditional) {
- $this->_argb = $pARGB;
- }
- }
-
- /**
- * Bind parent. Only used for supervisor
- *
- * @param mixed $parent
- * @param string $parentPropertyName
- * @return PHPExcel_Style_Color
- */
- public function bindParent($parent, $parentPropertyName)
- {
- $this->_parent = $parent;
- $this->_parentPropertyName = $parentPropertyName;
- return $this;
- }
-
- /**
- * Is this a supervisor or a real style component?
- *
- * @return boolean
- */
- public function getIsSupervisor()
- {
- return $this->_isSupervisor;
- }
-
- /**
- * Get the shared style component for the currently active cell in currently active sheet.
- * Only used for style supervisor
- *
- * @return PHPExcel_Style_Color
- */
- public function getSharedComponent()
- {
- switch ($this->_parentPropertyName) {
- case '_endColor':
- return $this->_parent->getSharedComponent()->getEndColor(); break;
- case '_color':
- return $this->_parent->getSharedComponent()->getColor(); break;
- case '_startColor':
- return $this->_parent->getSharedComponent()->getStartColor(); break;
- }
- }
-
- /**
- * Get the currently active sheet. Only used for supervisor
- *
- * @return PHPExcel_Worksheet
- */
- public function getActiveSheet()
- {
- return $this->_parent->getActiveSheet();
- }
-
- /**
- * Get the currently active cell coordinate in currently active sheet.
- * Only used for supervisor
- *
- * @return string E.g. 'A1'
- */
- public function getSelectedCells()
- {
- return $this->getActiveSheet()->getSelectedCells();
- }
-
- /**
- * Get the currently active cell coordinate in currently active sheet.
- * Only used for supervisor
- *
- * @return string E.g. 'A1'
- */
- public function getActiveCell()
- {
- return $this->getActiveSheet()->getActiveCell();
- }
-
- /**
- * Build style array from subcomponents
- *
- * @param array $array
- * @return array
- */
- public function getStyleArray($array)
- {
- switch ($this->_parentPropertyName) {
- case '_endColor':
- $key = 'endcolor';
- break;
- case '_color':
- $key = 'color';
- break;
- case '_startColor':
- $key = 'startcolor';
- break;
-
- }
- return $this->_parent->getStyleArray(array($key => $array));
- }
-
- /**
- * Apply styles from array
- *
- * <code>
- * $objPHPExcel->getActiveSheet()->getStyle('B2')->getFont()->getColor()->applyFromArray( array('rgb' => '808080') );
- * </code>
- *
- * @param array $pStyles Array containing style information
- * @throws Exception
- * @return PHPExcel_Style_Color
- */
- public function applyFromArray($pStyles = NULL) {
- if (is_array($pStyles)) {
- if ($this->_isSupervisor) {
- $this->getActiveSheet()->getStyle($this->getSelectedCells())->applyFromArray($this->getStyleArray($pStyles));
- } else {
- if (array_key_exists('rgb', $pStyles)) {
- $this->setRGB($pStyles['rgb']);
- }
- if (array_key_exists('argb', $pStyles)) {
- $this->setARGB($pStyles['argb']);
- }
- }
- } else {
- throw new Exception("Invalid style array passed.");
- }
- return $this;
- }
-
- /**
- * Get ARGB
- *
- * @return string
- */
- public function getARGB() {
- if ($this->_isSupervisor) {
- return $this->getSharedComponent()->getARGB();
- }
- return $this->_argb;
- }
-
- /**
- * Set ARGB
- *
- * @param string $pValue
- * @return PHPExcel_Style_Color
- */
- public function setARGB($pValue = PHPExcel_Style_Color::COLOR_BLACK) {
- if ($pValue == '') {
- $pValue = PHPExcel_Style_Color::COLOR_BLACK;
- }
- if ($this->_isSupervisor) {
- $styleArray = $this->getStyleArray(array('argb' => $pValue));
- $this->getActiveSheet()->getStyle($this->getSelectedCells())->applyFromArray($styleArray);
- } else {
- $this->_argb = $pValue;
- }
- return $this;
- }
-
- /**
- * Get RGB
- *
- * @return string
- */
- public function getRGB() {
- if ($this->_isSupervisor) {
- return $this->getSharedComponent()->getRGB();
- }
- return substr($this->_argb, 2);
- }
-
- /**
- * Set RGB
- *
- * @param string $pValue RGB value
- * @return PHPExcel_Style_Color
- */
- public function setRGB($pValue = '000000') {
- if ($pValue == '') {
- $pValue = '000000';
- }
- if ($this->_isSupervisor) {
- $styleArray = $this->getStyleArray(array('argb' => 'FF' . $pValue));
- $this->getActiveSheet()->getStyle($this->getSelectedCells())->applyFromArray($styleArray);
- } else {
- $this->_argb = 'FF' . $pValue;
- }
- return $this;
- }
-
- /**
- * Get a specified colour component of an RGB value
- *
- * @private
- * @param string $RGB The colour as an RGB value (e.g. FF00CCCC or CCDDEE
- * @param int $offset Position within the RGB value to extract
- * @param boolean $hex Flag indicating whether the component should be returned as a hex or a
- * decimal value
- * @return string The extracted colour component
- */
- private static function _getColourComponent($RGB,$offset,$hex=TRUE) {
- $colour = substr($RGB, $offset, 2);
- if (!$hex)
- $colour = hexdec($colour);
- return $colour;
- }
-
- /**
- * Get the red colour component of an RGB value
- *
- * @param string $RGB The colour as an RGB value (e.g. FF00CCCC or CCDDEE
- * @param boolean $hex Flag indicating whether the component should be returned as a hex or a
- * decimal value
- * @return string The red colour component
- */
- public static function getRed($RGB,$hex=TRUE) {
- if (strlen($RGB) == 8) {
- return self::_getColourComponent($RGB, 2, $hex);
- } elseif (strlen($RGB) == 6) {
- return self::_getColourComponent($RGB, 0, $hex);
- }
- }
-
- /**
- * Get the green colour component of an RGB value
- *
- * @param string $RGB The colour as an RGB value (e.g. FF00CCCC or CCDDEE
- * @param boolean $hex Flag indicating whether the component should be returned as a hex or a
- * decimal value
- * @return string The green colour component
- */
- public static function getGreen($RGB,$hex=TRUE) {
- if (strlen($RGB) == 8) {
- return self::_getColourComponent($RGB, 4, $hex);
- } elseif (strlen($RGB) == 6) {
- return self::_getColourComponent($RGB, 2, $hex);
- }
- }
-
- /**
- * Get the blue colour component of an RGB value
- *
- * @param string $RGB The colour as an RGB value (e.g. FF00CCCC or CCDDEE
- * @param boolean $hex Flag indicating whether the component should be returned as a hex or a
- * decimal value
- * @return string The blue colour component
- */
- public static function getBlue($RGB,$hex=TRUE) {
- if (strlen($RGB) == 8) {
- return self::_getColourComponent($RGB, 6, $hex);
- } elseif (strlen($RGB) == 6) {
- return self::_getColourComponent($RGB, 4, $hex);
- }
- }
-
- /**
- * Adjust the brightness of a color
- *
- * @param string $hex The colour as an RGBA or RGB value (e.g. FF00CCCC or CCDDEE)
- * @param float $adjustPercentage The percentage by which to adjust the colour as a float from -1 to 1
- * @return string The adjusted colour as an RGBA or RGB value (e.g. FF00CCCC or CCDDEE)
- */
- public static function changeBrightness($hex, $adjustPercentage) {
- $rgba = (strlen($hex) == 8);
-
- $red = self::getRed($hex, FALSE);
- $green = self::getGreen($hex, FALSE);
- $blue = self::getBlue($hex, FALSE);
- if ($adjustPercentage > 0) {
- $red += (255 - $red) * $adjustPercentage;
- $green += (255 - $green) * $adjustPercentage;
- $blue += (255 - $blue) * $adjustPercentage;
- } else {
- $red += $red * $adjustPercentage;
- $green += $green * $adjustPercentage;
- $blue += $blue * $adjustPercentage;
- }
-
- if ($red < 0) $red = 0;
- elseif ($red > 255) $red = 255;
- if ($green < 0) $green = 0;
- elseif ($green > 255) $green = 255;
- if ($blue < 0) $blue = 0;
- elseif ($blue > 255) $blue = 255;
-
- $rgb = strtoupper( str_pad(dechex($red), 2, '0', 0) .
- str_pad(dechex($green), 2, '0', 0) .
- str_pad(dechex($blue), 2, '0', 0)
- );
- return (($rgba) ? 'FF' : '') . $rgb;
- }
-
- /**
- * Get indexed color
- *
- * @param int $pIndex Index entry point into the colour array
- * @param boolean $background Flag to indicate whether default background or foreground colour
- * should be returned if the indexed colour doesn't exist
- * @return PHPExcel_Style_Color
- */
- public static function indexedColor($pIndex, $background=FALSE) {
- // Clean parameter
- $pIndex = intval($pIndex);
-
- // Indexed colors
- if (is_null(self::$_indexedColors)) {
- self::$_indexedColors = array(
- 1 => 'FF000000', // System Colour #1 - Black
- 2 => 'FFFFFFFF', // System Colour #2 - White
- 3 => 'FFFF0000', // System Colour #3 - Red
- 4 => 'FF00FF00', // System Colour #4 - Green
- 5 => 'FF0000FF', // System Colour #5 - Blue
- 6 => 'FFFFFF00', // System Colour #6 - Yellow
- 7 => 'FFFF00FF', // System Colour #7- Magenta
- 8 => 'FF00FFFF', // System Colour #8- Cyan
- 9 => 'FF800000', // Standard Colour #9
- 10 => 'FF008000', // Standard Colour #10
- 11 => 'FF000080', // Standard Colour #11
- 12 => 'FF808000', // Standard Colour #12
- 13 => 'FF800080', // Standard Colour #13
- 14 => 'FF008080', // Standard Colour #14
- 15 => 'FFC0C0C0', // Standard Colour #15
- 16 => 'FF808080', // Standard Colour #16
- 17 => 'FF9999FF', // Chart Fill Colour #17
- 18 => 'FF993366', // Chart Fill Colour #18
- 19 => 'FFFFFFCC', // Chart Fill Colour #19
- 20 => 'FFCCFFFF', // Chart Fill Colour #20
- 21 => 'FF660066', // Chart Fill Colour #21
- 22 => 'FFFF8080', // Chart Fill Colour #22
- 23 => 'FF0066CC', // Chart Fill Colour #23
- 24 => 'FFCCCCFF', // Chart Fill Colour #24
- 25 => 'FF000080', // Chart Line Colour #25
- 26 => 'FFFF00FF', // Chart Line Colour #26
- 27 => 'FFFFFF00', // Chart Line Colour #27
- 28 => 'FF00FFFF', // Chart Line Colour #28
- 29 => 'FF800080', // Chart Line Colour #29
- 30 => 'FF800000', // Chart Line Colour #30
- 31 => 'FF008080', // Chart Line Colour #31
- 32 => 'FF0000FF', // Chart Line Colour #32
- 33 => 'FF00CCFF', // Standard Colour #33
- 34 => 'FFCCFFFF', // Standard Colour #34
- 35 => 'FFCCFFCC', // Standard Colour #35
- 36 => 'FFFFFF99', // Standard Colour #36
- 37 => 'FF99CCFF', // Standard Colour #37
- 38 => 'FFFF99CC', // Standard Colour #38
- 39 => 'FFCC99FF', // Standard Colour #39
- 40 => 'FFFFCC99', // Standard Colour #40
- 41 => 'FF3366FF', // Standard Colour #41
- 42 => 'FF33CCCC', // Standard Colour #42
- 43 => 'FF99CC00', // Standard Colour #43
- 44 => 'FFFFCC00', // Standard Colour #44
- 45 => 'FFFF9900', // Standard Colour #45
- 46 => 'FFFF6600', // Standard Colour #46
- 47 => 'FF666699', // Standard Colour #47
- 48 => 'FF969696', // Standard Colour #48
- 49 => 'FF003366', // Standard Colour #49
- 50 => 'FF339966', // Standard Colour #50
- 51 => 'FF003300', // Standard Colour #51
- 52 => 'FF333300', // Standard Colour #52
- 53 => 'FF993300', // Standard Colour #53
- 54 => 'FF993366', // Standard Colour #54
- 55 => 'FF333399', // Standard Colour #55
- 56 => 'FF333333' // Standard Colour #56
- );
- }
-
- if (array_key_exists($pIndex, self::$_indexedColors)) {
- return new PHPExcel_Style_Color(self::$_indexedColors[$pIndex]);
- }
-
- if ($background) {
- return new PHPExcel_Style_Color('FFFFFFFF');
- }
- return new PHPExcel_Style_Color('FF000000');
- }
-
- /**
- * Get hash code
- *
- * @return string Hash code
- */
- public function getHashCode() {
- if ($this->_isSupervisor) {
- return $this->getSharedComponent()->getHashCode();
- }
- return md5(
- $this->_argb
- . __CLASS__
- );
- }
-
- /**
- * Implement PHP __clone to create a deep clone, not just a shallow copy.
- */
- public function __clone() {
- $vars = get_object_vars($this);
- foreach ($vars as $key => $value) {
- if ((is_object($value)) && ($key != '_parent')) {
- $this->$key = clone $value;
- } else {
- $this->$key = $value;
- }
- }
- }
-}
diff --git a/admin/survey/excel/PHPExcel/Style/Conditional.php b/admin/survey/excel/PHPExcel/Style/Conditional.php
deleted file mode 100644
index c9dd52f..0000000
--- a/admin/survey/excel/PHPExcel/Style/Conditional.php
+++ /dev/null
@@ -1,277 +0,0 @@
-<?php
-/**
- * PHPExcel
- *
- * Copyright (c) 2006 - 2012 PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel_Style
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-
-/**
- * PHPExcel_Style_Conditional
- *
- * @category PHPExcel
- * @package PHPExcel_Style
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- */
-class PHPExcel_Style_Conditional implements PHPExcel_IComparable
-{
- /* Condition types */
- const CONDITION_NONE = 'none';
- const CONDITION_CELLIS = 'cellIs';
- const CONDITION_CONTAINSTEXT = 'containsText';
- const CONDITION_EXPRESSION = 'expression';
-
- /* Operator types */
- const OPERATOR_NONE = '';
- const OPERATOR_BEGINSWITH = 'beginsWith';
- const OPERATOR_ENDSWITH = 'endsWith';
- const OPERATOR_EQUAL = 'equal';
- const OPERATOR_GREATERTHAN = 'greaterThan';
- const OPERATOR_GREATERTHANOREQUAL = 'greaterThanOrEqual';
- const OPERATOR_LESSTHAN = 'lessThan';
- const OPERATOR_LESSTHANOREQUAL = 'lessThanOrEqual';
- const OPERATOR_NOTEQUAL = 'notEqual';
- const OPERATOR_CONTAINSTEXT = 'containsText';
- const OPERATOR_NOTCONTAINS = 'notContains';
- const OPERATOR_BETWEEN = 'between';
-
- /**
- * Condition type
- *
- * @var int
- */
- private $_conditionType;
-
- /**
- * Operator type
- *
- * @var int
- */
- private $_operatorType;
-
- /**
- * Text
- *
- * @var string
- */
- private $_text;
-
- /**
- * Condition
- *
- * @var string[]
- */
- private $_condition = array();
-
- /**
- * Style
- *
- * @var PHPExcel_Style
- */
- private $_style;
-
- /**
- * Create a new PHPExcel_Style_Conditional
- */
- public function __construct()
- {
- // Initialise values
- $this->_conditionType = PHPExcel_Style_Conditional::CONDITION_NONE;
- $this->_operatorType = PHPExcel_Style_Conditional::OPERATOR_NONE;
- $this->_text = null;
- $this->_condition = array();
- $this->_style = new PHPExcel_Style(FALSE, TRUE);
- }
-
- /**
- * Get Condition type
- *
- * @return string
- */
- public function getConditionType() {
- return $this->_conditionType;
- }
-
- /**
- * Set Condition type
- *
- * @param string $pValue PHPExcel_Style_Conditional condition type
- * @return PHPExcel_Style_Conditional
- */
- public function setConditionType($pValue = PHPExcel_Style_Conditional::CONDITION_NONE) {
- $this->_conditionType = $pValue;
- return $this;
- }
-
- /**
- * Get Operator type
- *
- * @return string
- */
- public function getOperatorType() {
- return $this->_operatorType;
- }
-
- /**
- * Set Operator type
- *
- * @param string $pValue PHPExcel_Style_Conditional operator type
- * @return PHPExcel_Style_Conditional
- */
- public function setOperatorType($pValue = PHPExcel_Style_Conditional::OPERATOR_NONE) {
- $this->_operatorType = $pValue;
- return $this;
- }
-
- /**
- * Get text
- *
- * @return string
- */
- public function getText() {
- return $this->_text;
- }
-
- /**
- * Set text
- *
- * @param string $value
- * @return PHPExcel_Style_Conditional
- */
- public function setText($value = null) {
- $this->_text = $value;
- return $this;
- }
-
- /**
- * Get Condition
- *
- * @deprecated Deprecated, use getConditions instead
- * @return string
- */
- public function getCondition() {
- if (isset($this->_condition[0])) {
- return $this->_condition[0];
- }
-
- return '';
- }
-
- /**
- * Set Condition
- *
- * @deprecated Deprecated, use setConditions instead
- * @param string $pValue Condition
- * @return PHPExcel_Style_Conditional
- */
- public function setCondition($pValue = '') {
- if (!is_array($pValue))
- $pValue = array($pValue);
-
- return $this->setConditions($pValue);
- }
-
- /**
- * Get Conditions
- *
- * @return string[]
- */
- public function getConditions() {
- return $this->_condition;
- }
-
- /**
- * Set Conditions
- *
- * @param string[] $pValue Condition
- * @return PHPExcel_Style_Conditional
- */
- public function setConditions($pValue) {
- if (!is_array($pValue))
- $pValue = array($pValue);
-
- $this->_condition = $pValue;
- return $this;
- }
-
- /**
- * Add Condition
- *
- * @param string $pValue Condition
- * @return PHPExcel_Style_Conditional
- */
- public function addCondition($pValue = '') {
- $this->_condition[] = $pValue;
- return $this;
- }
-
- /**
- * Get Style
- *
- * @return PHPExcel_Style
- */
- public function getStyle() {
- return $this->_style;
- }
-
- /**
- * Set Style
- *
- * @param PHPExcel_Style $pValue
- * @throws Exception
- * @return PHPExcel_Style_Conditional
- */
- public function setStyle(PHPExcel_Style $pValue = null) {
- $this->_style = $pValue;
- return $this;
- }
-
- /**
- * Get hash code
- *
- * @return string Hash code
- */
- public function getHashCode() {
- return md5(
- $this->_conditionType
- . $this->_operatorType
- . implode(';', $this->_condition)
- . $this->_style->getHashCode()
- . __CLASS__
- );
- }
-
- /**
- * Implement PHP __clone to create a deep clone, not just a shallow copy.
- */
- public function __clone() {
- $vars = get_object_vars($this);
- foreach ($vars as $key => $value) {
- if (is_object($value)) {
- $this->$key = clone $value;
- } else {
- $this->$key = $value;
- }
- }
- }
-}
diff --git a/admin/survey/excel/PHPExcel/Style/Fill.php b/admin/survey/excel/PHPExcel/Style/Fill.php
deleted file mode 100644
index 66ec2cf..0000000
--- a/admin/survey/excel/PHPExcel/Style/Fill.php
+++ /dev/null
@@ -1,409 +0,0 @@
-<?php
-/**
- * PHPExcel
- *
- * Copyright (c) 2006 - 2012 PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel_Style
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-
-/**
- * PHPExcel_Style_Fill
- *
- * @category PHPExcel
- * @package PHPExcel_Style
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- */
-class PHPExcel_Style_Fill implements PHPExcel_IComparable
-{
- /* Fill types */
- const FILL_NONE = 'none';
- const FILL_SOLID = 'solid';
- const FILL_GRADIENT_LINEAR = 'linear';
- const FILL_GRADIENT_PATH = 'path';
- const FILL_PATTERN_DARKDOWN = 'darkDown';
- const FILL_PATTERN_DARKGRAY = 'darkGray';
- const FILL_PATTERN_DARKGRID = 'darkGrid';
- const FILL_PATTERN_DARKHORIZONTAL = 'darkHorizontal';
- const FILL_PATTERN_DARKTRELLIS = 'darkTrellis';
- const FILL_PATTERN_DARKUP = 'darkUp';
- const FILL_PATTERN_DARKVERTICAL = 'darkVertical';
- const FILL_PATTERN_GRAY0625 = 'gray0625';
- const FILL_PATTERN_GRAY125 = 'gray125';
- const FILL_PATTERN_LIGHTDOWN = 'lightDown';
- const FILL_PATTERN_LIGHTGRAY = 'lightGray';
- const FILL_PATTERN_LIGHTGRID = 'lightGrid';
- const FILL_PATTERN_LIGHTHORIZONTAL = 'lightHorizontal';
- const FILL_PATTERN_LIGHTTRELLIS = 'lightTrellis';
- const FILL_PATTERN_LIGHTUP = 'lightUp';
- const FILL_PATTERN_LIGHTVERTICAL = 'lightVertical';
- const FILL_PATTERN_MEDIUMGRAY = 'mediumGray';
-
- /**
- * Fill type
- *
- * @var string
- */
- private $_fillType = PHPExcel_Style_Fill::FILL_NONE;
-
- /**
- * Rotation
- *
- * @var double
- */
- private $_rotation = 0;
-
- /**
- * Start color
- *
- * @var PHPExcel_Style_Color
- */
- private $_startColor;
-
- /**
- * End color
- *
- * @var PHPExcel_Style_Color
- */
- private $_endColor;
-
- /**
- * Parent Borders
- *
- * @var _parentPropertyName string
- */
- private $_parentPropertyName;
-
- /**
- * Supervisor?
- *
- * @var boolean
- */
- private $_isSupervisor;
-
- /**
- * Parent. Only used for supervisor
- *
- * @var PHPExcel_Style
- */
- private $_parent;
-
- /**
- * Create a new PHPExcel_Style_Fill
- *
- * @param boolean $isSupervisor Flag indicating if this is a supervisor or not
- * Leave this value at default unless you understand exactly what
- * its ramifications are
- * @param boolean $isConditional Flag indicating if this is a conditional style or not
- * Leave this value at default unless you understand exactly what
- * its ramifications are
- */
- public function __construct($isSupervisor = false, $isConditional = false)
- {
- // Supervisor?
- $this->_isSupervisor = $isSupervisor;
-
- // Initialise values
- if ($isConditional) {
- $this->_fillType = NULL;
- }
- $this->_startColor = new PHPExcel_Style_Color(PHPExcel_Style_Color::COLOR_WHITE, $isSupervisor, $isConditional);
- $this->_endColor = new PHPExcel_Style_Color(PHPExcel_Style_Color::COLOR_BLACK, $isSupervisor, $isConditional);
-
- // bind parent if we are a supervisor
- if ($isSupervisor) {
- $this->_startColor->bindParent($this, '_startColor');
- $this->_endColor->bindParent($this, '_endColor');
- }
- }
-
- /**
- * Bind parent. Only used for supervisor
- *
- * @param PHPExcel_Style $parent
- * @return PHPExcel_Style_Fill
- */
- public function bindParent($parent)
- {
- $this->_parent = $parent;
- return $this;
- }
-
- /**
- * Is this a supervisor or a real style component?
- *
- * @return boolean
- */
- public function getIsSupervisor()
- {
- return $this->_isSupervisor;
- }
-
- /**
- * Get the shared style component for the currently active cell in currently active sheet.
- * Only used for style supervisor
- *
- * @return PHPExcel_Style_Fill
- */
- public function getSharedComponent()
- {
- return $this->_parent->getSharedComponent()->getFill();
- }
-
- /**
- * Get the currently active sheet. Only used for supervisor
- *
- * @return PHPExcel_Worksheet
- */
- public function getActiveSheet()
- {
- return $this->_parent->getActiveSheet();
- }
-
- /**
- * Get the currently active cell coordinate in currently active sheet.
- * Only used for supervisor
- *
- * @return string E.g. 'A1'
- */
- public function getSelectedCells()
- {
- return $this->getActiveSheet()->getSelectedCells();
- }
-
- /**
- * Get the currently active cell coordinate in currently active sheet.
- * Only used for supervisor
- *
- * @return string E.g. 'A1'
- */
- public function getActiveCell()
- {
- return $this->getActiveSheet()->getActiveCell();
- }
-
- /**
- * Build style array from subcomponents
- *
- * @param array $array
- * @return array
- */
- public function getStyleArray($array)
- {
- return array('fill' => $array);
- }
-
- /**
- * Apply styles from array
- *
- * <code>
- * $objPHPExcel->getActiveSheet()->getStyle('B2')->getFill()->applyFromArray(
- * array(
- * 'type' => PHPExcel_Style_Fill::FILL_GRADIENT_LINEAR,
- * 'rotation' => 0,
- * 'startcolor' => array(
- * 'rgb' => '000000'
- * ),
- * 'endcolor' => array(
- * 'argb' => 'FFFFFFFF'
- * )
- * )
- * );
- * </code>
- *
- * @param array $pStyles Array containing style information
- * @throws Exception
- * @return PHPExcel_Style_Fill
- */
- public function applyFromArray($pStyles = null) {
- if (is_array($pStyles)) {
- if ($this->_isSupervisor) {
- $this->getActiveSheet()->getStyle($this->getSelectedCells())->applyFromArray($this->getStyleArray($pStyles));
- } else {
- if (array_key_exists('type', $pStyles)) {
- $this->setFillType($pStyles['type']);
- }
- if (array_key_exists('rotation', $pStyles)) {
- $this->setRotation($pStyles['rotation']);
- }
- if (array_key_exists('startcolor', $pStyles)) {
- $this->getStartColor()->applyFromArray($pStyles['startcolor']);
- }
- if (array_key_exists('endcolor', $pStyles)) {
- $this->getEndColor()->applyFromArray($pStyles['endcolor']);
- }
- if (array_key_exists('color', $pStyles)) {
- $this->getStartColor()->applyFromArray($pStyles['color']);
- }
- }
- } else {
- throw new Exception("Invalid style array passed.");
- }
- return $this;
- }
-
- /**
- * Get Fill Type
- *
- * @return string
- */
- public function getFillType() {
- if ($this->_isSupervisor) {
- return $this->getSharedComponent()->getFillType();
- }
- return $this->_fillType;
- }
-
- /**
- * Set Fill Type
- *
- * @param string $pValue PHPExcel_Style_Fill fill type
- * @return PHPExcel_Style_Fill
- */
- public function setFillType($pValue = PHPExcel_Style_Fill::FILL_NONE) {
- if ($this->_isSupervisor) {
- $styleArray = $this->getStyleArray(array('type' => $pValue));
- $this->getActiveSheet()->getStyle($this->getSelectedCells())->applyFromArray($styleArray);
- } else {
- $this->_fillType = $pValue;
- }
- return $this;
- }
-
- /**
- * Get Rotation
- *
- * @return double
- */
- public function getRotation() {
- if ($this->_isSupervisor) {
- return $this->getSharedComponent()->getRotation();
- }
- return $this->_rotation;
- }
-
- /**
- * Set Rotation
- *
- * @param double $pValue
- * @return PHPExcel_Style_Fill
- */
- public function setRotation($pValue = 0) {
- if ($this->_isSupervisor) {
- $styleArray = $this->getStyleArray(array('rotation' => $pValue));
- $this->getActiveSheet()->getStyle($this->getSelectedCells())->applyFromArray($styleArray);
- } else {
- $this->_rotation = $pValue;
- }
- return $this;
- }
-
- /**
- * Get Start Color
- *
- * @return PHPExcel_Style_Color
- */
- public function getStartColor() {
- return $this->_startColor;
- }
-
- /**
- * Set Start Color
- *
- * @param PHPExcel_Style_Color $pValue
- * @throws Exception
- * @return PHPExcel_Style_Fill
- */
- public function setStartColor(PHPExcel_Style_Color $pValue = null) {
- // make sure parameter is a real color and not a supervisor
- $color = $pValue->getIsSupervisor() ? $pValue->getSharedComponent() : $pValue;
-
- if ($this->_isSupervisor) {
- $styleArray = $this->getStartColor()->getStyleArray(array('argb' => $color->getARGB()));
- $this->getActiveSheet()->getStyle($this->getSelectedCells())->applyFromArray($styleArray);
- } else {
- $this->_startColor = $color;
- }
- return $this;
- }
-
- /**
- * Get End Color
- *
- * @return PHPExcel_Style_Color
- */
- public function getEndColor() {
- return $this->_endColor;
- }
-
- /**
- * Set End Color
- *
- * @param PHPExcel_Style_Color $pValue
- * @throws Exception
- * @return PHPExcel_Style_Fill
- */
- public function setEndColor(PHPExcel_Style_Color $pValue = null) {
- // make sure parameter is a real color and not a supervisor
- $color = $pValue->getIsSupervisor() ? $pValue->getSharedComponent() : $pValue;
-
- if ($this->_isSupervisor) {
- $styleArray = $this->getEndColor()->getStyleArray(array('argb' => $color->getARGB()));
- $this->getActiveSheet()->getStyle($this->getSelectedCells())->applyFromArray($styleArray);
- } else {
- $this->_endColor = $color;
- }
- return $this;
- }
-
- /**
- * Get hash code
- *
- * @return string Hash code
- */
- public function getHashCode() {
- if ($this->_isSupervisor) {
- return $this->getSharedComponent()->getHashCode();
- }
- return md5(
- $this->getFillType()
- . $this->getRotation()
- . $this->getStartColor()->getHashCode()
- . $this->getEndColor()->getHashCode()
- . __CLASS__
- );
- }
-
- /**
- * Implement PHP __clone to create a deep clone, not just a shallow copy.
- */
- public function __clone() {
- $vars = get_object_vars($this);
- foreach ($vars as $key => $value) {
- if ((is_object($value)) && ($key != '_parent')) {
- $this->$key = clone $value;
- } else {
- $this->$key = $value;
- }
- }
- }
-}
diff --git a/admin/survey/excel/PHPExcel/Style/Font.php b/admin/survey/excel/PHPExcel/Style/Font.php
deleted file mode 100644
index 848f556..0000000
--- a/admin/survey/excel/PHPExcel/Style/Font.php
+++ /dev/null
@@ -1,640 +0,0 @@
-<?php
-/**
- * PHPExcel
- *
- * Copyright (c) 2006 - 2012 PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel_Style
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-
-/**
- * PHPExcel_Style_Font
- *
- * @category PHPExcel
- * @package PHPExcel_Style
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- */
-class PHPExcel_Style_Font implements PHPExcel_IComparable
-{
- /* Underline types */
- const UNDERLINE_NONE = 'none';
- const UNDERLINE_DOUBLE = 'double';
- const UNDERLINE_DOUBLEACCOUNTING = 'doubleAccounting';
- const UNDERLINE_SINGLE = 'single';
- const UNDERLINE_SINGLEACCOUNTING = 'singleAccounting';
-
- /**
- * Font Name
- *
- * @var string
- */
- private $_name = 'Calibri';
-
- /**
- * Font Size
- *
- * @var float
- */
- private $_size = 11;
-
- /**
- * Bold
- *
- * @var boolean
- */
- private $_bold = false;
-
- /**
- * Italic
- *
- * @var boolean
- */
- private $_italic = false;
-
- /**
- * Superscript
- *
- * @var boolean
- */
- private $_superScript = false;
-
- /**
- * Subscript
- *
- * @var boolean
- */
- private $_subScript = false;
-
- /**
- * Underline
- *
- * @var string
- */
- private $_underline = self::UNDERLINE_NONE;
-
- /**
- * Strikethrough
- *
- * @var boolean
- */
- private $_strikethrough = false;
-
- /**
- * Foreground color
- *
- * @var PHPExcel_Style_Color
- */
- private $_color;
-
- /**
- * Parent Borders
- *
- * @var _parentPropertyName string
- */
- private $_parentPropertyName;
-
- /**
- * Supervisor?
- *
- * @var boolean
- */
- private $_isSupervisor;
-
- /**
- * Parent. Only used for supervisor
- *
- * @var PHPExcel_Style
- */
- private $_parent;
-
- /**
- * Create a new PHPExcel_Style_Font
- *
- * @param boolean $isSupervisor Flag indicating if this is a supervisor or not
- * Leave this value at default unless you understand exactly what
- * its ramifications are
- * @param boolean $isConditional Flag indicating if this is a conditional style or not
- * Leave this value at default unless you understand exactly what
- * its ramifications are
- */
- public function __construct($isSupervisor = false, $isConditional = false)
- {
- // Supervisor?
- $this->_isSupervisor = $isSupervisor;
-
- // Initialise values
- if ($isConditional) {
- $this->_name = NULL;
- $this->_size = NULL;
- $this->_bold = NULL;
- $this->_italic = NULL;
- $this->_superScript = NULL;
- $this->_subScript = NULL;
- $this->_underline = NULL;
- $this->_strikethrough = NULL;
- $this->_color = new PHPExcel_Style_Color(PHPExcel_Style_Color::COLOR_BLACK, $isSupervisor, $isConditional);
- } else {
- $this->_color = new PHPExcel_Style_Color(PHPExcel_Style_Color::COLOR_BLACK, $isSupervisor);
- }
- // bind parent if we are a supervisor
- if ($isSupervisor) {
- $this->_color->bindParent($this, '_color');
- }
- }
-
- /**
- * Bind parent. Only used for supervisor
- *
- * @param PHPExcel_Style $parent
- * @return PHPExcel_Style_Font
- */
- public function bindParent($parent)
- {
- $this->_parent = $parent;
- }
-
- /**
- * Is this a supervisor or a real style component?
- *
- * @return boolean
- */
- public function getIsSupervisor()
- {
- return $this->_isSupervisor;
- }
-
- /**
- * Get the shared style component for the currently active cell in currently active sheet.
- * Only used for style supervisor
- *
- * @return PHPExcel_Style_Font
- */
- public function getSharedComponent()
- {
- return $this->_parent->getSharedComponent()->getFont();
- }
-
- /**
- * Get the currently active sheet. Only used for supervisor
- *
- * @return PHPExcel_Worksheet
- */
- public function getActiveSheet()
- {
- return $this->_parent->getActiveSheet();
- }
-
- /**
- * Get the currently active cell coordinate in currently active sheet.
- * Only used for supervisor
- *
- * @return string E.g. 'A1'
- */
- public function getSelectedCells()
- {
- return $this->getActiveSheet()->getSelectedCells();
- }
-
- /**
- * Get the currently active cell coordinate in currently active sheet.
- * Only used for supervisor
- *
- * @return string E.g. 'A1'
- */
- public function getActiveCell()
- {
- return $this->getActiveSheet()->getActiveCell();
- }
-
- /**
- * Build style array from subcomponents
- *
- * @param array $array
- * @return array
- */
- public function getStyleArray($array)
- {
- return array('font' => $array);
- }
-
- /**
- * Apply styles from array
- *
- * <code>
- * $objPHPExcel->getActiveSheet()->getStyle('B2')->getFont()->applyFromArray(
- * array(
- * 'name' => 'Arial',
- * 'bold' => true,
- * 'italic' => false,
- * 'underline' => PHPExcel_Style_Font::UNDERLINE_DOUBLE,
- * 'strike' => false,
- * 'color' => array(
- * 'rgb' => '808080'
- * )
- * )
- * );
- * </code>
- *
- * @param array $pStyles Array containing style information
- * @throws Exception
- * @return PHPExcel_Style_Font
- */
- public function applyFromArray($pStyles = null) {
- if (is_array($pStyles)) {
- if ($this->_isSupervisor) {
- $this->getActiveSheet()->getStyle($this->getSelectedCells())->applyFromArray($this->getStyleArray($pStyles));
- } else {
- if (array_key_exists('name', $pStyles)) {
- $this->setName($pStyles['name']);
- }
- if (array_key_exists('bold', $pStyles)) {
- $this->setBold($pStyles['bold']);
- }
- if (array_key_exists('italic', $pStyles)) {
- $this->setItalic($pStyles['italic']);
- }
- if (array_key_exists('superScript', $pStyles)) {
- $this->setSuperScript($pStyles['superScript']);
- }
- if (array_key_exists('subScript', $pStyles)) {
- $this->setSubScript($pStyles['subScript']);
- }
- if (array_key_exists('underline', $pStyles)) {
- $this->setUnderline($pStyles['underline']);
- }
- if (array_key_exists('strike', $pStyles)) {
- $this->setStrikethrough($pStyles['strike']);
- }
- if (array_key_exists('color', $pStyles)) {
- $this->getColor()->applyFromArray($pStyles['color']);
- }
- if (array_key_exists('size', $pStyles)) {
- $this->setSize($pStyles['size']);
- }
- }
- } else {
- throw new Exception("Invalid style array passed.");
- }
- return $this;
- }
-
- /**
- * Get Name
- *
- * @return string
- */
- public function getName() {
- if ($this->_isSupervisor) {
- return $this->getSharedComponent()->getName();
- }
- return $this->_name;
- }
-
- /**
- * Set Name
- *
- * @param string $pValue
- * @return PHPExcel_Style_Font
- */
- public function setName($pValue = 'Calibri') {
- if ($pValue == '') {
- $pValue = 'Calibri';
- }
- if ($this->_isSupervisor) {
- $styleArray = $this->getStyleArray(array('name' => $pValue));
- $this->getActiveSheet()->getStyle($this->getSelectedCells())->applyFromArray($styleArray);
- } else {
- $this->_name = $pValue;
- }
- return $this;
- }
-
- /**
- * Get Size
- *
- * @return double
- */
- public function getSize() {
- if ($this->_isSupervisor) {
- return $this->getSharedComponent()->getSize();
- }
- return $this->_size;
- }
-
- /**
- * Set Size
- *
- * @param double $pValue
- * @return PHPExcel_Style_Font
- */
- public function setSize($pValue = 10) {
- if ($pValue == '') {
- $pValue = 10;
- }
- if ($this->_isSupervisor) {
- $styleArray = $this->getStyleArray(array('size' => $pValue));
- $this->getActiveSheet()->getStyle($this->getSelectedCells())->applyFromArray($styleArray);
- } else {
- $this->_size = $pValue;
- }
- return $this;
- }
-
- /**
- * Get Bold
- *
- * @return boolean
- */
- public function getBold() {
- if ($this->_isSupervisor) {
- return $this->getSharedComponent()->getBold();
- }
- return $this->_bold;
- }
-
- /**
- * Set Bold
- *
- * @param boolean $pValue
- * @return PHPExcel_Style_Font
- */
- public function setBold($pValue = false) {
- if ($pValue == '') {
- $pValue = false;
- }
- if ($this->_isSupervisor) {
- $styleArray = $this->getStyleArray(array('bold' => $pValue));
- $this->getActiveSheet()->getStyle($this->getSelectedCells())->applyFromArray($styleArray);
- } else {
- $this->_bold = $pValue;
- }
- return $this;
- }
-
- /**
- * Get Italic
- *
- * @return boolean
- */
- public function getItalic() {
- if ($this->_isSupervisor) {
- return $this->getSharedComponent()->getItalic();
- }
- return $this->_italic;
- }
-
- /**
- * Set Italic
- *
- * @param boolean $pValue
- * @return PHPExcel_Style_Font
- */
- public function setItalic($pValue = false) {
- if ($pValue == '') {
- $pValue = false;
- }
- if ($this->_isSupervisor) {
- $styleArray = $this->getStyleArray(array('italic' => $pValue));
- $this->getActiveSheet()->getStyle($this->getSelectedCells())->applyFromArray($styleArray);
- } else {
- $this->_italic = $pValue;
- }
- return $this;
- }
-
- /**
- * Get SuperScript
- *
- * @return boolean
- */
- public function getSuperScript() {
- if ($this->_isSupervisor) {
- return $this->getSharedComponent()->getSuperScript();
- }
- return $this->_superScript;
- }
-
- /**
- * Set SuperScript
- *
- * @param boolean $pValue
- * @return PHPExcel_Style_Font
- */
- public function setSuperScript($pValue = false) {
- if ($pValue == '') {
- $pValue = false;
- }
- if ($this->_isSupervisor) {
- $styleArray = $this->getStyleArray(array('superScript' => $pValue));
- $this->getActiveSheet()->getStyle($this->getSelectedCells())->applyFromArray($styleArray);
- } else {
- $this->_superScript = $pValue;
- $this->_subScript = !$pValue;
- }
- return $this;
- }
-
- /**
- * Get SubScript
- *
- * @return boolean
- */
- public function getSubScript() {
- if ($this->_isSupervisor) {
- return $this->getSharedComponent()->getSubScript();
- }
- return $this->_subScript;
- }
-
- /**
- * Set SubScript
- *
- * @param boolean $pValue
- * @return PHPExcel_Style_Font
- */
- public function setSubScript($pValue = false) {
- if ($pValue == '') {
- $pValue = false;
- }
- if ($this->_isSupervisor) {
- $styleArray = $this->getStyleArray(array('subScript' => $pValue));
- $this->getActiveSheet()->getStyle($this->getSelectedCells())->applyFromArray($styleArray);
- } else {
- $this->_subScript = $pValue;
- $this->_superScript = !$pValue;
- }
- return $this;
- }
-
- /**
- * Get Underline
- *
- * @return string
- */
- public function getUnderline() {
- if ($this->_isSupervisor) {
- return $this->getSharedComponent()->getUnderline();
- }
- return $this->_underline;
- }
-
- /**
- * Set Underline
- *
- * @param string|boolean $pValue PHPExcel_Style_Font underline type
- * If a boolean is passed, then true equates to UNDERLINE_SINGLE,
- * false equates to UNDERLINE_NONE
- * @return PHPExcel_Style_Font
- */
- public function setUnderline($pValue = self::UNDERLINE_NONE) {
- if (is_bool($pValue)) {
- $pValue = ($pValue) ? self::UNDERLINE_SINGLE : self::UNDERLINE_NONE;
- } elseif ($pValue == '') {
- $pValue = self::UNDERLINE_NONE;
- }
- if ($this->_isSupervisor) {
- $styleArray = $this->getStyleArray(array('underline' => $pValue));
- $this->getActiveSheet()->getStyle($this->getSelectedCells())->applyFromArray($styleArray);
- } else {
- $this->_underline = $pValue;
- }
- return $this;
- }
-
- /**
- * Get Striketrough
- *
- * @deprecated Use getStrikethrough() instead.
- * @return boolean
- */
- public function getStriketrough() {
- return $this->getStrikethrough();
- }
-
- /**
- * Set Striketrough
- *
- * @deprecated Use setStrikethrough() instead.
- * @param boolean $pValue
- * @return PHPExcel_Style_Font
- */
- public function setStriketrough($pValue = false) {
- return $this->setStrikethrough($pValue);
- }
-
- /**
- * Get Strikethrough
- *
- * @return boolean
- */
- public function getStrikethrough() {
- if ($this->_isSupervisor) {
- return $this->getSharedComponent()->getStrikethrough();
- }
- return $this->_strikethrough;
- }
-
- /**
- * Set Strikethrough
- *
- * @param boolean $pValue
- * @return PHPExcel_Style_Font
- */
- public function setStrikethrough($pValue = false) {
- if ($pValue == '') {
- $pValue = false;
- }
- if ($this->_isSupervisor) {
- $styleArray = $this->getStyleArray(array('strike' => $pValue));
- $this->getActiveSheet()->getStyle($this->getSelectedCells())->applyFromArray($styleArray);
- } else {
- $this->_strikethrough = $pValue;
- }
- return $this;
- }
-
- /**
- * Get Color
- *
- * @return PHPExcel_Style_Color
- */
- public function getColor() {
- return $this->_color;
- }
-
- /**
- * Set Color
- *
- * @param PHPExcel_Style_Color $pValue
- * @throws Exception
- * @return PHPExcel_Style_Font
- */
- public function setColor(PHPExcel_Style_Color $pValue = null) {
- // make sure parameter is a real color and not a supervisor
- $color = $pValue->getIsSupervisor() ? $pValue->getSharedComponent() : $pValue;
-
- if ($this->_isSupervisor) {
- $styleArray = $this->getColor()->getStyleArray(array('argb' => $color->getARGB()));
- $this->getActiveSheet()->getStyle($this->getSelectedCells())->applyFromArray($styleArray);
- } else {
- $this->_color = $color;
- }
- return $this;
- }
-
- /**
- * Get hash code
- *
- * @return string Hash code
- */
- public function getHashCode() {
- if ($this->_isSupervisor) {
- return $this->getSharedComponent()->getHashCode();
- }
- return md5(
- $this->_name
- . $this->_size
- . ($this->_bold ? 't' : 'f')
- . ($this->_italic ? 't' : 'f')
- . ($this->_superScript ? 't' : 'f')
- . ($this->_subScript ? 't' : 'f')
- . $this->_underline
- . ($this->_strikethrough ? 't' : 'f')
- . $this->_color->getHashCode()
- . __CLASS__
- );
- }
-
- /**
- * Implement PHP __clone to create a deep clone, not just a shallow copy.
- */
- public function __clone() {
- $vars = get_object_vars($this);
- foreach ($vars as $key => $value) {
- if ((is_object($value)) && ($key != '_parent')) {
- $this->$key = clone $value;
- } else {
- $this->$key = $value;
- }
- }
- }
-}
diff --git a/admin/survey/excel/PHPExcel/Style/NumberFormat.php b/admin/survey/excel/PHPExcel/Style/NumberFormat.php
deleted file mode 100644
index 509c041..0000000
--- a/admin/survey/excel/PHPExcel/Style/NumberFormat.php
+++ /dev/null
@@ -1,741 +0,0 @@
-<?php
-/**
- * PHPExcel
- *
- * Copyright (c) 2006 - 2012 PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel_Style
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-
-/**
- * PHPExcel_Style_NumberFormat
- *
- * @category PHPExcel
- * @package PHPExcel_Style
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- */
-class PHPExcel_Style_NumberFormat implements PHPExcel_IComparable
-{
- /* Pre-defined formats */
- const FORMAT_GENERAL = 'General';
-
- const FORMAT_TEXT = '@';
-
- const FORMAT_NUMBER = '0';
- const FORMAT_NUMBER_00 = '0.00';
- const FORMAT_NUMBER_COMMA_SEPARATED1 = '#,##0.00';
- const FORMAT_NUMBER_COMMA_SEPARATED2 = '#,##0.00_-';
-
- const FORMAT_PERCENTAGE = '0%';
- const FORMAT_PERCENTAGE_00 = '0.00%';
-
- const FORMAT_DATE_YYYYMMDD2 = 'yyyy-mm-dd';
- const FORMAT_DATE_YYYYMMDD = 'yy-mm-dd';
- const FORMAT_DATE_DDMMYYYY = 'dd/mm/yy';
- const FORMAT_DATE_DMYSLASH = 'd/m/y';
- const FORMAT_DATE_DMYMINUS = 'd-m-y';
- const FORMAT_DATE_DMMINUS = 'd-m';
- const FORMAT_DATE_MYMINUS = 'm-y';
- const FORMAT_DATE_XLSX14 = 'mm-dd-yy';
- const FORMAT_DATE_XLSX15 = 'd-mmm-yy';
- const FORMAT_DATE_XLSX16 = 'd-mmm';
- const FORMAT_DATE_XLSX17 = 'mmm-yy';
- const FORMAT_DATE_XLSX22 = 'm/d/yy h:mm';
- const FORMAT_DATE_DATETIME = 'd/m/y h:mm';
- const FORMAT_DATE_TIME1 = 'h:mm AM/PM';
- const FORMAT_DATE_TIME2 = 'h:mm:ss AM/PM';
- const FORMAT_DATE_TIME3 = 'h:mm';
- const FORMAT_DATE_TIME4 = 'h:mm:ss';
- const FORMAT_DATE_TIME5 = 'mm:ss';
- const FORMAT_DATE_TIME6 = 'h:mm:ss';
- const FORMAT_DATE_TIME7 = 'i:s.S';
- const FORMAT_DATE_TIME8 = 'h:mm:ss;@';
- const FORMAT_DATE_YYYYMMDDSLASH = 'yy/mm/dd;@';
-
- const FORMAT_CURRENCY_USD_SIMPLE = '"$"#,##0.00_-';
- const FORMAT_CURRENCY_USD = '$#,##0_-';
- const FORMAT_CURRENCY_EUR_SIMPLE = '[$EUR ]#,##0.00_-';
-
- /**
- * Excel built-in number formats
- *
- * @var array
- */
- private static $_builtInFormats;
-
- /**
- * Excel built-in number formats (flipped, for faster lookups)
- *
- * @var array
- */
- private static $_flippedBuiltInFormats;
-
- /**
- * Format Code
- *
- * @var string
- */
- private $_formatCode = PHPExcel_Style_NumberFormat::FORMAT_GENERAL;
-
- /**
- * Built-in format Code
- *
- * @var string
- */
- private $_builtInFormatCode = 0;
-
- /**
- * Parent Borders
- *
- * @var _parentPropertyName string
- */
- private $_parentPropertyName;
-
- /**
- * Supervisor?
- *
- * @var boolean
- */
- private $_isSupervisor;
-
- /**
- * Parent. Only used for supervisor
- *
- * @var PHPExcel_Style
- */
- private $_parent;
-
- /**
- * Create a new PHPExcel_Style_NumberFormat
- *
- * @param boolean $isSupervisor Flag indicating if this is a supervisor or not
- * Leave this value at default unless you understand exactly what
- * its ramifications are
- * @param boolean $isConditional Flag indicating if this is a conditional style or not
- * Leave this value at default unless you understand exactly what
- * its ramifications are
- */
- public function __construct($isSupervisor = false, $isConditional = false)
- {
- // Supervisor?
- $this->_isSupervisor = $isSupervisor;
-
- if ($isConditional) {
- $this->_formatCode = NULL;
- }
- }
-
- /**
- * Bind parent. Only used for supervisor
- *
- * @param PHPExcel_Style $parent
- * @return PHPExcel_Style_NumberFormat
- */
- public function bindParent($parent)
- {
- $this->_parent = $parent;
- }
-
- /**
- * Is this a supervisor or a real style component?
- *
- * @return boolean
- */
- public function getIsSupervisor()
- {
- return $this->_isSupervisor;
- }
-
- /**
- * Get the shared style component for the currently active cell in currently active sheet.
- * Only used for style supervisor
- *
- * @return PHPExcel_Style_NumberFormat
- */
- public function getSharedComponent()
- {
- return $this->_parent->getSharedComponent()->getNumberFormat();
- }
-
- /**
- * Get the currently active sheet. Only used for supervisor
- *
- * @return PHPExcel_Worksheet
- */
- public function getActiveSheet()
- {
- return $this->_parent->getActiveSheet();
- }
-
- /**
- * Get the currently active cell coordinate in currently active sheet.
- * Only used for supervisor
- *
- * @return string E.g. 'A1'
- */
- public function getSelectedCells()
- {
- return $this->getActiveSheet()->getSelectedCells();
- }
-
- /**
- * Get the currently active cell coordinate in currently active sheet.
- * Only used for supervisor
- *
- * @return string E.g. 'A1'
- */
- public function getActiveCell()
- {
- return $this->getActiveSheet()->getActiveCell();
- }
-
- /**
- * Build style array from subcomponents
- *
- * @param array $array
- * @return array
- */
- public function getStyleArray($array)
- {
- return array('numberformat' => $array);
- }
-
- /**
- * Apply styles from array
- *
- * <code>
- * $objPHPExcel->getActiveSheet()->getStyle('B2')->getNumberFormat()->applyFromArray(
- * array(
- * 'code' => PHPExcel_Style_NumberFormat::FORMAT_CURRENCY_EUR_SIMPLE
- * )
- * );
- * </code>
- *
- * @param array $pStyles Array containing style information
- * @throws Exception
- * @return PHPExcel_Style_NumberFormat
- */
- public function applyFromArray($pStyles = null)
- {
- if (is_array($pStyles)) {
- if ($this->_isSupervisor) {
- $this->getActiveSheet()->getStyle($this->getSelectedCells())->applyFromArray($this->getStyleArray($pStyles));
- } else {
- if (array_key_exists('code', $pStyles)) {
- $this->setFormatCode($pStyles['code']);
- }
- }
- } else {
- throw new Exception("Invalid style array passed.");
- }
- return $this;
- }
-
- /**
- * Get Format Code
- *
- * @return string
- */
- public function getFormatCode()
- {
- if ($this->_isSupervisor) {
- return $this->getSharedComponent()->getFormatCode();
- }
- if ($this->_builtInFormatCode !== false)
- {
- return self::builtInFormatCode($this->_builtInFormatCode);
- }
- return $this->_formatCode;
- }
-
- /**
- * Set Format Code
- *
- * @param string $pValue
- * @return PHPExcel_Style_NumberFormat
- */
- public function setFormatCode($pValue = PHPExcel_Style_NumberFormat::FORMAT_GENERAL)
- {
- if ($pValue == '') {
- $pValue = PHPExcel_Style_NumberFormat::FORMAT_GENERAL;
- }
- if ($this->_isSupervisor) {
- $styleArray = $this->getStyleArray(array('code' => $pValue));
- $this->getActiveSheet()->getStyle($this->getSelectedCells())->applyFromArray($styleArray);
- } else {
- $this->_formatCode = $pValue;
- $this->_builtInFormatCode = self::builtInFormatCodeIndex($pValue);
- }
- return $this;
- }
-
- /**
- * Get Built-In Format Code
- *
- * @return int
- */
- public function getBuiltInFormatCode()
- {
- if ($this->_isSupervisor) {
- return $this->getSharedComponent()->getBuiltInFormatCode();
- }
- return $this->_builtInFormatCode;
- }
-
- /**
- * Set Built-In Format Code
- *
- * @param int $pValue
- * @return PHPExcel_Style_NumberFormat
- */
- public function setBuiltInFormatCode($pValue = 0)
- {
-
- if ($this->_isSupervisor) {
- $styleArray = $this->getStyleArray(array('code' => self::builtInFormatCode($pValue)));
- $this->getActiveSheet()->getStyle($this->getSelectedCells())->applyFromArray($styleArray);
- } else {
- $this->_builtInFormatCode = $pValue;
- $this->_formatCode = self::builtInFormatCode($pValue);
- }
- return $this;
- }
-
- /**
- * Fill built-in format codes
- */
- private static function fillBuiltInFormatCodes()
- {
- // Built-in format codes
- if (is_null(self::$_builtInFormats)) {
- self::$_builtInFormats = array();
-
- // General
- self::$_builtInFormats[0] = PHPExcel_Style_NumberFormat::FORMAT_GENERAL;
- self::$_builtInFormats[1] = '0';
- self::$_builtInFormats[2] = '0.00';
- self::$_builtInFormats[3] = '#,##0';
- self::$_builtInFormats[4] = '#,##0.00';
-
- self::$_builtInFormats[9] = '0%';
- self::$_builtInFormats[10] = '0.00%';
- self::$_builtInFormats[11] = '0.00E+00';
- self::$_builtInFormats[12] = '# ?/?';
- self::$_builtInFormats[13] = '# ??/??';
- self::$_builtInFormats[14] = 'mm-dd-yy';
- self::$_builtInFormats[15] = 'd-mmm-yy';
- self::$_builtInFormats[16] = 'd-mmm';
- self::$_builtInFormats[17] = 'mmm-yy';
- self::$_builtInFormats[18] = 'h:mm AM/PM';
- self::$_builtInFormats[19] = 'h:mm:ss AM/PM';
- self::$_builtInFormats[20] = 'h:mm';
- self::$_builtInFormats[21] = 'h:mm:ss';
- self::$_builtInFormats[22] = 'm/d/yy h:mm';
-
- self::$_builtInFormats[37] = '#,##0 ;(#,##0)';
- self::$_builtInFormats[38] = '#,##0 ;[Red](#,##0)';
- self::$_builtInFormats[39] = '#,##0.00;(#,##0.00)';
- self::$_builtInFormats[40] = '#,##0.00;[Red](#,##0.00)';
-
- self::$_builtInFormats[44] = '_("$"* #,##0.00_);_("$"* \(#,##0.00\);_("$"* "-"??_);_(@_)';
- self::$_builtInFormats[45] = 'mm:ss';
- self::$_builtInFormats[46] = '[h]:mm:ss';
- self::$_builtInFormats[47] = 'mmss.0';
- self::$_builtInFormats[48] = '##0.0E+0';
- self::$_builtInFormats[49] = '@';
-
- // CHT
- self::$_builtInFormats[27] = '[$-404]e/m/d';
- self::$_builtInFormats[30] = 'm/d/yy';
- self::$_builtInFormats[36] = '[$-404]e/m/d';
- self::$_builtInFormats[50] = '[$-404]e/m/d';
- self::$_builtInFormats[57] = '[$-404]e/m/d';
-
- // THA
- self::$_builtInFormats[59] = 't0';
- self::$_builtInFormats[60] = 't0.00';
- self::$_builtInFormats[61] = 't#,##0';
- self::$_builtInFormats[62] = 't#,##0.00';
- self::$_builtInFormats[67] = 't0%';
- self::$_builtInFormats[68] = 't0.00%';
- self::$_builtInFormats[69] = 't# ?/?';
- self::$_builtInFormats[70] = 't# ??/??';
-
- // Flip array (for faster lookups)
- self::$_flippedBuiltInFormats = array_flip(self::$_builtInFormats);
- }
- }
-
- /**
- * Get built-in format code
- *
- * @param int $pIndex
- * @return string
- */
- public static function builtInFormatCode($pIndex)
- {
- // Clean parameter
- $pIndex = intval($pIndex);
-
- // Ensure built-in format codes are available
- self::fillBuiltInFormatCodes();
-
- // Lookup format code
- if (isset(self::$_builtInFormats[$pIndex])) {
- return self::$_builtInFormats[$pIndex];
- }
-
- return '';
- }
-
- /**
- * Get built-in format code index
- *
- * @param string $formatCode
- * @return int|boolean
- */
- public static function builtInFormatCodeIndex($formatCode)
- {
- // Ensure built-in format codes are available
- self::fillBuiltInFormatCodes();
-
- // Lookup format code
- if (isset(self::$_flippedBuiltInFormats[$formatCode])) {
- return self::$_flippedBuiltInFormats[$formatCode];
- }
-
- return false;
- }
-
- /**
- * Get hash code
- *
- * @return string Hash code
- */
- public function getHashCode()
- {
- if ($this->_isSupervisor) {
- return $this->getSharedComponent()->getHashCode();
- }
- return md5(
- $this->_formatCode
- . $this->_builtInFormatCode
- . __CLASS__
- );
- }
-
- /**
- * Implement PHP __clone to create a deep clone, not just a shallow copy.
- */
- public function __clone()
- {
- $vars = get_object_vars($this);
- foreach ($vars as $key => $value) {
- if ((is_object($value)) && ($key != '_parent')) {
- $this->$key = clone $value;
- } else {
- $this->$key = $value;
- }
- }
- }
-
- /**
- * Search/replace values to convert Excel date/time format masks to PHP format masks
- *
- * @var array
- */
- private static $_dateFormatReplacements = array(
- // first remove escapes related to non-format characters
- '\\' => '',
- // 12-hour suffix
- 'am/pm' => 'A',
- // 4-digit year
- 'e' => 'Y',
- 'yyyy' => 'Y',
- // 2-digit year
- 'yy' => 'y',
- // first letter of month - no php equivalent
- 'mmmmm' => 'M',
- // full month name
- 'mmmm' => 'F',
- // short month name
- 'mmm' => 'M',
- // mm is minutes if time or month w/leading zero
- ':mm' => ':i',
- // month leading zero
- 'mm' => 'm',
- // month no leading zero
- 'm' => 'n',
- // full day of week name
- 'dddd' => 'l',
- // short day of week name
- 'ddd' => 'D',
- // days leading zero
- 'dd' => 'd',
- // days no leading zero
- 'd' => 'j',
- // seconds
- 'ss' => 's',
- // fractional seconds - no php equivalent
- '.s' => ''
- );
- /**
- * Search/replace values to convert Excel date/time format masks hours to PHP format masks (24 hr clock)
- *
- * @var array
- */
- private static $_dateFormatReplacements24 = array(
- 'hh' => 'H',
- 'h' => 'G'
- );
- /**
- * Search/replace values to convert Excel date/time format masks hours to PHP format masks (12 hr clock)
- *
- * @var array
- */
- private static $_dateFormatReplacements12 = array(
- 'hh' => 'h',
- 'h' => 'g'
- );
-
- /**
- * Convert a value in a pre-defined format to a PHP string
- *
- * @param mixed $value Value to format
- * @param string $format Format code
- * @param array $callBack Callback function for additional formatting of string
- * @return string Formatted string
- */
- public static function toFormattedString($value = '', $format = '', $callBack = null)
- {
- // For now we do not treat strings although section 4 of a format code affects strings
- if (!is_numeric($value)) return $value;
-
- // For 'General' format code, we just pass the value although this is not entirely the way Excel does it,
- // it seems to round numbers to a total of 10 digits.
- if (($format === PHPExcel_Style_NumberFormat::FORMAT_GENERAL) || ($format === PHPExcel_Style_NumberFormat::FORMAT_TEXT)) {
- return $value;
- }
-
- // Get the sections, there can be up to four sections
- $sections = explode(';', $format);
-
- // Fetch the relevant section depending on whether number is positive, negative, or zero?
- // Text not supported yet.
- // Here is how the sections apply to various values in Excel:
- // 1 section: [POSITIVE/NEGATIVE/ZERO/TEXT]
- // 2 sections: [POSITIVE/ZERO/TEXT] [NEGATIVE]
- // 3 sections: [POSITIVE/TEXT] [NEGATIVE] [ZERO]
- // 4 sections: [POSITIVE] [NEGATIVE] [ZERO] [TEXT]
- switch (count($sections)) {
- case 1:
- $format = $sections[0];
- break;
-
- case 2:
- $format = ($value >= 0) ? $sections[0] : $sections[1];
- $value = abs($value); // Use the absolute value
- break;
-
- case 3:
- $format = ($value > 0) ?
- $sections[0] : ( ($value < 0) ?
- $sections[1] : $sections[2]);
- $value = abs($value); // Use the absolute value
- break;
-
- case 4:
- $format = ($value > 0) ?
- $sections[0] : ( ($value < 0) ?
- $sections[1] : $sections[2]);
- $value = abs($value); // Use the absolute value
- break;
-
- default:
- // something is wrong, just use first section
- $format = $sections[0];
- break;
- }
-
- // Save format with color information for later use below
- $formatColor = $format;
-
- // Strip color information
- $color_regex = '/^\\[[a-zA-Z]+\\]/';
- $format = preg_replace($color_regex, '', $format);
-
- // Let's begin inspecting the format and converting the value to a formatted string
- if (preg_match('/^(\[\$[A-Z]*-[0-9A-F]*\])*[hmsdy]/i', $format)) { // datetime format
- // dvc: convert Excel formats to PHP date formats
-
- // strip off first part containing e.g. [$-F800] or [$USD-409]
- // general syntax: [$<Currency string>-<language info>]
- // language info is in hexadecimal
- $format = preg_replace('/^(\[\$[A-Z]*-[0-9A-F]*\])/i', '', $format);
-
- // OpenOffice.org uses upper-case number formats, e.g. 'YYYY', convert to lower-case
- $format = strtolower($format);
-
- $format = strtr($format,self::$_dateFormatReplacements);
- if (!strpos($format,'A')) { // 24-hour time format
- $format = strtr($format,self::$_dateFormatReplacements24);
- } else { // 12-hour time format
- $format = strtr($format,self::$_dateFormatReplacements12);
- }
-
- $dateObj = PHPExcel_Shared_Date::ExcelToPHPObject($value);
- $value = $dateObj->format($format);
-
- } else if (preg_match('/%$/', $format)) { // % number format
- if ($format === self::FORMAT_PERCENTAGE) {
- $value = round( (100 * $value), 0) . '%';
- } else {
- if (preg_match('/\.[#0]+/i', $format, $m)) {
- $s = substr($m[0], 0, 1) . (strlen($m[0]) - 1);
- $format = str_replace($m[0], $s, $format);
- }
- if (preg_match('/^[#0]+/', $format, $m)) {
- $format = str_replace($m[0], strlen($m[0]), $format);
- }
- $format = '%' . str_replace('%', 'f%%', $format);
-
- $value = sprintf($format, 100 * $value);
- }
-
- } else {
- if ($format === self::FORMAT_CURRENCY_EUR_SIMPLE) {
- $value = 'EUR ' . sprintf('%1.2f', $value);
-
- } else {
- // In Excel formats, "_" is used to add spacing, which we can't do in HTML
- $format = preg_replace('/_./', '', $format);
-
- // Some non-number characters are escaped with \, which we don't need
- $format = preg_replace("/\\\\/", '', $format);
-
- // Some non-number strings are quoted, so we'll get rid of the quotes, likewise any positional * symbols
- $format = str_replace(array('"','*'), '', $format);
-
- // Find out if we need thousands separator
- // This is indicated by a comma enclosed by a digit placeholder:
- // #,# or 0,0
- $useThousands = preg_match('/(#,#|0,0)/', $format);
- if ($useThousands) {
- $format = preg_replace('/0,0/', '00', $format);
- $format = preg_replace('/#,#/', '##', $format);
- }
-
- // Scale thousands, millions,...
- // This is indicated by a number of commas after a digit placeholder:
- // #, or 0.0,,
- $scale = 1; // same as no scale
- $matches = array();
- if (preg_match('/(#|0)(,+)/', $format, $matches)) {
- $scale = pow(1000, strlen($matches[2]));
-
- // strip the commas
- $format = preg_replace('/0,+/', '0', $format);
- $format = preg_replace('/#,+/', '#', $format);
- }
-
- if (preg_match('/#?.*\?\/\?/', $format, $m)) {
- //echo 'Format mask is fractional '.$format.' <br />';
- if ($value != (int)$value) {
- $sign = ($value < 0) ? '-' : '';
-
- $integerPart = floor(abs($value));
- $decimalPart = trim(fmod(abs($value),1),'0.');
- $decimalLength = strlen($decimalPart);
- $decimalDivisor = pow(10,$decimalLength);
-
- $GCD = PHPExcel_Calculation_MathTrig::GCD($decimalPart,$decimalDivisor);
-
- $adjustedDecimalPart = $decimalPart/$GCD;
- $adjustedDecimalDivisor = $decimalDivisor/$GCD;
-
- if ((strpos($format,'0') !== false) || (strpos($format,'#') !== false) || (substr($format,0,3) == '? ?')) {
- if ($integerPart == 0) { $integerPart = ''; }
- $value = "$sign$integerPart $adjustedDecimalPart/$adjustedDecimalDivisor";
- } else {
- $adjustedDecimalPart += $integerPart * $adjustedDecimalDivisor;
- $value = "$sign$adjustedDecimalPart/$adjustedDecimalDivisor";
- }
- }
-
- } else {
- // Handle the number itself
-
- // scale number
- $value = $value / $scale;
-
- // Strip #
- $format = preg_replace('/\\#/', '', $format);
-
- $n = "/\[[^\]]+\]/";
- $m = preg_replace($n, '', $format);
- $number_regex = "/(0+)(\.?)(0*)/";
- if (preg_match($number_regex, $m, $matches)) {
- $left = $matches[1];
- $dec = $matches[2];
- $right = $matches[3];
-
- // minimun width of formatted number (including dot)
- $minWidth = strlen($left) + strlen($dec) + strlen($right);
-
- if ($useThousands) {
- $value = number_format(
- $value
- , strlen($right)
- , PHPExcel_Shared_String::getDecimalSeparator()
- , PHPExcel_Shared_String::getThousandsSeparator()
- );
- } else {
- $sprintf_pattern = "%0$minWidth." . strlen($right) . "f";
- $value = sprintf($sprintf_pattern, $value);
- }
-
- $value = preg_replace($number_regex, $value, $format);
- }
- }
- if (preg_match('/\[\$(.*)\]/u', $format, $m)) {
- // Currency or Accounting
- $currencyFormat = $m[0];
- $currencyCode = $m[1];
- list($currencyCode) = explode('-',$currencyCode);
- if ($currencyCode == '') {
- $currencyCode = PHPExcel_Shared_String::getCurrencyCode();
- }
- $value = preg_replace('/\[\$([^\]]*)\]/u',$currencyCode,$value);
- }
- }
- }
-
- // Additional formatting provided by callback function
- if ($callBack !== null) {
- list($writerInstance, $function) = $callBack;
- $value = $writerInstance->$function($value, $formatColor);
- }
-
- return $value;
- }
-
-}
diff --git a/admin/survey/excel/PHPExcel/Style/Protection.php b/admin/survey/excel/PHPExcel/Style/Protection.php
deleted file mode 100644
index 3ccb3c5..0000000
--- a/admin/survey/excel/PHPExcel/Style/Protection.php
+++ /dev/null
@@ -1,290 +0,0 @@
-<?php
-/**
- * PHPExcel
- *
- * Copyright (c) 2006 - 2012 PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel_Style
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.4.5, 2007-08-23
- */
-
-
-/**
- * PHPExcel_Style_Protection
- *
- * @category PHPExcel
- * @package PHPExcel_Style
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- */
-class PHPExcel_Style_Protection implements PHPExcel_IComparable
-{
- /** Protection styles */
- const PROTECTION_INHERIT = 'inherit';
- const PROTECTION_PROTECTED = 'protected';
- const PROTECTION_UNPROTECTED = 'unprotected';
-
- /**
- * Locked
- *
- * @var string
- */
- private $_locked;
-
- /**
- * Hidden
- *
- * @var string
- */
- private $_hidden;
-
- /**
- * Parent Borders
- *
- * @var _parentPropertyName string
- */
- private $_parentPropertyName;
-
- /**
- * Supervisor?
- *
- * @var boolean
- */
- private $_isSupervisor;
-
- /**
- * Parent. Only used for supervisor
- *
- * @var PHPExcel_Style
- */
- private $_parent;
-
- /**
- * Create a new PHPExcel_Style_Protection
- *
- * @param boolean $isSupervisor Flag indicating if this is a supervisor or not
- * Leave this value at default unless you understand exactly what
- * its ramifications are
- * @param boolean $isConditional Flag indicating if this is a conditional style or not
- * Leave this value at default unless you understand exactly what
- * its ramifications are
- */
- public function __construct($isSupervisor = false, $isConditional = false)
- {
- // Supervisor?
- $this->_isSupervisor = $isSupervisor;
-
- // Initialise values
- if (!$isConditional) {
- $this->_locked = self::PROTECTION_INHERIT;
- $this->_hidden = self::PROTECTION_INHERIT;
- }
- }
-
- /**
- * Bind parent. Only used for supervisor
- *
- * @param PHPExcel_Style $parent
- * @return PHPExcel_Style_Protection
- */
- public function bindParent($parent)
- {
- $this->_parent = $parent;
- return $this;
- }
-
- /**
- * Is this a supervisor or a real style component?
- *
- * @return boolean
- */
- public function getIsSupervisor()
- {
- return $this->_isSupervisor;
- }
-
- /**
- * Get the shared style component for the currently active cell in currently active sheet.
- * Only used for style supervisor
- *
- * @return PHPExcel_Style_Protection
- */
- public function getSharedComponent()
- {
- return $this->_parent->getSharedComponent()->getProtection();
- }
-
- /**
- * Get the currently active sheet. Only used for supervisor
- *
- * @return PHPExcel_Worksheet
- */
- public function getActiveSheet()
- {
- return $this->_parent->getActiveSheet();
- }
-
- /**
- * Get the currently active cell coordinate in currently active sheet.
- * Only used for supervisor
- *
- * @return string E.g. 'A1'
- */
- public function getSelectedCells()
- {
- return $this->getActiveSheet()->getSelectedCells();
- }
-
- /**
- * Get the currently active cell coordinate in currently active sheet.
- * Only used for supervisor
- *
- * @return string E.g. 'A1'
- */
- public function getActiveCell()
- {
- return $this->getActiveSheet()->getActiveCell();
- }
-
- /**
- * Build style array from subcomponents
- *
- * @param array $array
- * @return array
- */
- public function getStyleArray($array)
- {
- return array('protection' => $array);
- }
-
- /**
- * Apply styles from array
- *
- * <code>
- * $objPHPExcel->getActiveSheet()->getStyle('B2')->getLocked()->applyFromArray( array('locked' => true, 'hidden' => false) );
- * </code>
- *
- * @param array $pStyles Array containing style information
- * @throws Exception
- * @return PHPExcel_Style_Protection
- */
- public function applyFromArray($pStyles = null) {
- if (is_array($pStyles)) {
- if ($this->_isSupervisor) {
- $this->getActiveSheet()->getStyle($this->getSelectedCells())->applyFromArray($this->getStyleArray($pStyles));
- } else {
- if (array_key_exists('locked', $pStyles)) {
- $this->setLocked($pStyles['locked']);
- }
- if (array_key_exists('hidden', $pStyles)) {
- $this->setHidden($pStyles['hidden']);
- }
- }
- } else {
- throw new Exception("Invalid style array passed.");
- }
- return $this;
- }
-
- /**
- * Get locked
- *
- * @return string
- */
- public function getLocked() {
- if ($this->_isSupervisor) {
- return $this->getSharedComponent()->getLocked();
- }
- return $this->_locked;
- }
-
- /**
- * Set locked
- *
- * @param string $pValue
- * @return PHPExcel_Style_Protection
- */
- public function setLocked($pValue = self::PROTECTION_INHERIT) {
- if ($this->_isSupervisor) {
- $styleArray = $this->getStyleArray(array('locked' => $pValue));
- $this->getActiveSheet()->getStyle($this->getSelectedCells())->applyFromArray($styleArray);
- } else {
- $this->_locked = $pValue;
- }
- return $this;
- }
-
- /**
- * Get hidden
- *
- * @return string
- */
- public function getHidden() {
- if ($this->_isSupervisor) {
- return $this->getSharedComponent()->getHidden();
- }
- return $this->_hidden;
- }
-
- /**
- * Set hidden
- *
- * @param string $pValue
- * @return PHPExcel_Style_Protection
- */
- public function setHidden($pValue = self::PROTECTION_INHERIT) {
- if ($this->_isSupervisor) {
- $styleArray = $this->getStyleArray(array('hidden' => $pValue));
- $this->getActiveSheet()->getStyle($this->getSelectedCells())->applyFromArray($styleArray);
- } else {
- $this->_hidden = $pValue;
- }
- return $this;
- }
-
- /**
- * Get hash code
- *
- * @return string Hash code
- */
- public function getHashCode() {
- if ($this->_isSupervisor) {
- return $this->getSharedComponent()->getHashCode();
- }
- return md5(
- $this->_locked
- . $this->_hidden
- . __CLASS__
- );
- }
-
- /**
- * Implement PHP __clone to create a deep clone, not just a shallow copy.
- */
- public function __clone() {
- $vars = get_object_vars($this);
- foreach ($vars as $key => $value) {
- if ((is_object($value)) && ($key != '_parent')) {
- $this->$key = clone $value;
- } else {
- $this->$key = $value;
- }
- }
- }
-}
diff --git a/admin/survey/excel/PHPExcel/Worksheet.php b/admin/survey/excel/PHPExcel/Worksheet.php
deleted file mode 100644
index 19a346b..0000000
--- a/admin/survey/excel/PHPExcel/Worksheet.php
+++ /dev/null
@@ -1,2795 +0,0 @@
-<?php
-/**
- * PHPExcel
- *
- * Copyright (c) 2006 - 2012 PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel_Worksheet
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-
-/**
- * PHPExcel_Worksheet
- *
- * @category PHPExcel
- * @package PHPExcel_Worksheet
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- */
-class PHPExcel_Worksheet implements PHPExcel_IComparable
-{
- /* Break types */
- const BREAK_NONE = 0;
- const BREAK_ROW = 1;
- const BREAK_COLUMN = 2;
-
- /* Sheet state */
- const SHEETSTATE_VISIBLE = 'visible';
- const SHEETSTATE_HIDDEN = 'hidden';
- const SHEETSTATE_VERYHIDDEN = 'veryHidden';
-
- /**
- * Invalid characters in sheet title
- *
- * @var array
- */
- private static $_invalidCharacters = array('*', ':', '/', '\\', '?', '[', ']');
-
- /**
- * Parent spreadsheet
- *
- * @var PHPExcel
- */
- private $_parent;
-
- /**
- * Cacheable collection of cells
- *
- * @var PHPExcel_CachedObjectStorage_xxx
- */
- private $_cellCollection = null;
-
- /**
- * Collection of row dimensions
- *
- * @var PHPExcel_Worksheet_RowDimension[]
- */
- private $_rowDimensions = array();
-
- /**
- * Default row dimension
- *
- * @var PHPExcel_Worksheet_RowDimension
- */
- private $_defaultRowDimension = null;
-
- /**
- * Collection of column dimensions
- *
- * @var PHPExcel_Worksheet_ColumnDimension[]
- */
- private $_columnDimensions = array();
-
- /**
- * Default column dimension
- *
- * @var PHPExcel_Worksheet_ColumnDimension
- */
- private $_defaultColumnDimension = null;
-
- /**
- * Collection of drawings
- *
- * @var PHPExcel_Worksheet_BaseDrawing[]
- */
- private $_drawingCollection = null;
-
- /**
- * Collection of Chart objects
- *
- * @var PHPExcel_Chart[]
- */
- private $_chartCollection = array();
-
- /**
- * Worksheet title
- *
- * @var string
- */
- private $_title;
-
- /**
- * Sheet state
- *
- * @var string
- */
- private $_sheetState;
-
- /**
- * Page setup
- *
- * @var PHPExcel_Worksheet_PageSetup
- */
- private $_pageSetup;
-
- /**
- * Page margins
- *
- * @var PHPExcel_Worksheet_PageMargins
- */
- private $_pageMargins;
-
- /**
- * Page header/footer
- *
- * @var PHPExcel_Worksheet_HeaderFooter
- */
- private $_headerFooter;
-
- /**
- * Sheet view
- *
- * @var PHPExcel_Worksheet_SheetView
- */
- private $_sheetView;
-
- /**
- * Protection
- *
- * @var PHPExcel_Worksheet_Protection
- */
- private $_protection;
-
- /**
- * Collection of styles
- *
- * @var PHPExcel_Style[]
- */
- private $_styles = array();
-
- /**
- * Conditional styles. Indexed by cell coordinate, e.g. 'A1'
- *
- * @var array
- */
- private $_conditionalStylesCollection = array();
-
- /**
- * Is the current cell collection sorted already?
- *
- * @var boolean
- */
- private $_cellCollectionIsSorted = false;
-
- /**
- * Collection of breaks
- *
- * @var array
- */
- private $_breaks = array();
-
- /**
- * Collection of merged cell ranges
- *
- * @var array
- */
- private $_mergeCells = array();
-
- /**
- * Collection of protected cell ranges
- *
- * @var array
- */
- private $_protectedCells = array();
-
- /**
- * Autofilter Range and selection
- *
- * @var PHPExcel_Worksheet_AutoFilter
- */
- private $_autoFilter = NULL;
-
- /**
- * Freeze pane
- *
- * @var string
- */
- private $_freezePane = '';
-
- /**
- * Show gridlines?
- *
- * @var boolean
- */
- private $_showGridlines = true;
-
- /**
- * Print gridlines?
- *
- * @var boolean
- */
- private $_printGridlines = false;
-
- /**
- * Show row and column headers?
- *
- * @var boolean
- */
- private $_showRowColHeaders = true;
-
- /**
- * Show summary below? (Row/Column outline)
- *
- * @var boolean
- */
- private $_showSummaryBelow = true;
-
- /**
- * Show summary right? (Row/Column outline)
- *
- * @var boolean
- */
- private $_showSummaryRight = true;
-
- /**
- * Collection of comments
- *
- * @var PHPExcel_Comment[]
- */
- private $_comments = array();
-
- /**
- * Active cell. (Only one!)
- *
- * @var string
- */
- private $_activeCell = 'A1';
-
- /**
- * Selected cells
- *
- * @var string
- */
- private $_selectedCells = 'A1';
-
- /**
- * Cached highest column
- *
- * @var string
- */
- private $_cachedHighestColumn = 'A';
-
- /**
- * Cached highest row
- *
- * @var int
- */
- private $_cachedHighestRow = 1;
-
- /**
- * Right-to-left?
- *
- * @var boolean
- */
- private $_rightToLeft = false;
-
- /**
- * Hyperlinks. Indexed by cell coordinate, e.g. 'A1'
- *
- * @var array
- */
- private $_hyperlinkCollection = array();
-
- /**
- * Data validation objects. Indexed by cell coordinate, e.g. 'A1'
- *
- * @var array
- */
- private $_dataValidationCollection = array();
-
- /**
- * Tab color
- *
- * @var PHPExcel_Style_Color
- */
- private $_tabColor;
-
- /**
- * Dirty flag
- *
- * @var boolean
- */
- private $_dirty = true;
-
- /**
- * Hash
- *
- * @var string
- */
- private $_hash = null;
-
- /**
- * Create a new worksheet
- *
- * @param PHPExcel $pParent
- * @param string $pTitle
- */
- public function __construct(PHPExcel $pParent = null, $pTitle = 'Worksheet')
- {
- // Set parent and title
- $this->_parent = $pParent;
- $this->setTitle($pTitle, FALSE);
- $this->setSheetState(PHPExcel_Worksheet::SHEETSTATE_VISIBLE);
-
- $this->_cellCollection = PHPExcel_CachedObjectStorageFactory::getInstance($this);
-
- // Set page setup
- $this->_pageSetup = new PHPExcel_Worksheet_PageSetup();
-
- // Set page margins
- $this->_pageMargins = new PHPExcel_Worksheet_PageMargins();
-
- // Set page header/footer
- $this->_headerFooter = new PHPExcel_Worksheet_HeaderFooter();
-
- // Set sheet view
- $this->_sheetView = new PHPExcel_Worksheet_SheetView();
-
- // Drawing collection
- $this->_drawingCollection = new ArrayObject();
-
- // Chart collection
- $this->_chartCollection = new ArrayObject();
-
- // Protection
- $this->_protection = new PHPExcel_Worksheet_Protection();
-
- // Default row dimension
- $this->_defaultRowDimension = new PHPExcel_Worksheet_RowDimension(NULL);
-
- // Default column dimension
- $this->_defaultColumnDimension = new PHPExcel_Worksheet_ColumnDimension(NULL);
-
- $this->_autoFilter = new PHPExcel_Worksheet_AutoFilter(NULL, $this);
- }
-
-
- /**
- * Disconnect all cells from this PHPExcel_Worksheet object,
- * typically so that the worksheet object can be unset
- *
- */
- public function disconnectCells() {
- $this->_cellCollection->unsetWorksheetCells();
- $this->_cellCollection = null;
-
- // detach ourself from the workbook, so that it can then delete this worksheet successfully
- $this->_parent = null;
- }
-
- /**
- * Return the cache controller for the cell collection
- *
- * @return PHPExcel_CachedObjectStorage_xxx
- */
- public function getCellCacheController() {
- return $this->_cellCollection;
- } // function getCellCacheController()
-
-
- /**
- * Get array of invalid characters for sheet title
- *
- * @return array
- */
- public static function getInvalidCharacters()
- {
- return self::$_invalidCharacters;
- }
-
- /**
- * Check sheet title for valid Excel syntax
- *
- * @param string $pValue The string to check
- * @return string The valid string
- * @throws Exception
- */
- private static function _checkSheetTitle($pValue)
- {
- // Some of the printable ASCII characters are invalid: * : / \ ? [ ]
- if (str_replace(self::$_invalidCharacters, '', $pValue) !== $pValue) {
- throw new Exception('Invalid character found in sheet title');
- }
-
- // Maximum 31 characters allowed for sheet title
- if (PHPExcel_Shared_String::CountCharacters($pValue) > 31) {
- throw new Exception('Maximum 31 characters allowed in sheet title.');
- }
-
- return $pValue;
- }
-
- /**
- * Get collection of cells
- *
- * @param boolean $pSorted Also sort the cell collection?
- * @return PHPExcel_Cell[]
- */
- public function getCellCollection($pSorted = true)
- {
- if ($pSorted) {
- // Re-order cell collection
- return $this->sortCellCollection();
- }
- if ($this->_cellCollection !== NULL) {
- return $this->_cellCollection->getCellList();
- }
- return array();
- }
-
- /**
- * Sort collection of cells
- *
- * @return PHPExcel_Worksheet
- */
- public function sortCellCollection()
- {
- if ($this->_cellCollection !== NULL) {
- return $this->_cellCollection->getSortedCellList();
- }
- return array();
- }
-
- /**
- * Get collection of row dimensions
- *
- * @return PHPExcel_Worksheet_RowDimension[]
- */
- public function getRowDimensions()
- {
- return $this->_rowDimensions;
- }
-
- /**
- * Get default row dimension
- *
- * @return PHPExcel_Worksheet_RowDimension
- */
- public function getDefaultRowDimension()
- {
- return $this->_defaultRowDimension;
- }
-
- /**
- * Get collection of column dimensions
- *
- * @return PHPExcel_Worksheet_ColumnDimension[]
- */
- public function getColumnDimensions()
- {
- return $this->_columnDimensions;
- }
-
- /**
- * Get default column dimension
- *
- * @return PHPExcel_Worksheet_ColumnDimension
- */
- public function getDefaultColumnDimension()
- {
- return $this->_defaultColumnDimension;
- }
-
- /**
- * Get collection of drawings
- *
- * @return PHPExcel_Worksheet_BaseDrawing[]
- */
- public function getDrawingCollection()
- {
- return $this->_drawingCollection;
- }
-
- /**
- * Get collection of charts
- *
- * @return PHPExcel_Chart[]
- */
- public function getChartCollection()
- {
- return $this->_chartCollection;
- }
-
- /**
- * Add chart
- *
- * @param PHPExcel_Chart $pChart
- * @param int|null $iChartIndex Index where chart should go (0,1,..., or null for last)
- * @return PHPExcel_Chart
- * @throws Exception
- */
- public function addChart(PHPExcel_Chart $pChart = null, $iChartIndex = null)
- {
- $pChart->setWorksheet($this);
- if (is_null($iChartIndex)) {
- $this->_chartCollection[] = $pChart;
- } else {
- // Insert the chart at the requested index
- array_splice($this->_chartCollection, $iChartIndex, 0, array($pChart));
- }
-
- return $pChart;
- }
-
- /**
- * Return the count of charts on this worksheet
- *
- * @return int The number of charts
- * @throws Exception
- */
- public function getChartCount()
- {
- return count($this->_chartCollection);
- }
-
- /**
- * Get a chart by its index position
- *
- * @param string $index Chart index position
- * @return false|PHPExcel_Chart
- * @throws Exception
- */
- public function getChartByIndex($index = null)
- {
- $chartCount = count($this->_chartCollection);
- if ($chartCount == 0) {
- return false;
- }
- if (is_null($index)) {
- $index = --$chartCount;
- }
- if (!isset($this->_chartCollection[$index])) {
- return false;
- }
-
- return $this->_chartCollection[$index];
- }
-
- /**
- * Return an array of the names of charts on this worksheet
- *
- * @return string[] The names of charts
- * @throws Exception
- */
- public function getChartNames()
- {
- $chartNames = array();
- foreach($this->_chartCollection as $chart) {
- $chartNames[] = $chart->getName();
- }
- return $chartNames;
- }
-
- /**
- * Get a chart by name
- *
- * @param string $chartName Chart name
- * @return false|PHPExcel_Chart
- * @throws Exception
- */
- public function getChartByName($chartName = '')
- {
- $chartCount = count($this->_chartCollection);
- if ($chartCount == 0) {
- return false;
- }
- foreach($this->_chartCollection as $index => $chart) {
- if ($chart->getName() == $chartName) {
- return $this->_chartCollection[$index];
- }
- }
- return false;
- }
-
- /**
- * Refresh column dimensions
- *
- * @return PHPExcel_Worksheet
- */
- public function refreshColumnDimensions()
- {
- $currentColumnDimensions = $this->getColumnDimensions();
- $newColumnDimensions = array();
-
- foreach ($currentColumnDimensions as $objColumnDimension) {
- $newColumnDimensions[$objColumnDimension->getColumnIndex()] = $objColumnDimension;
- }
-
- $this->_columnDimensions = $newColumnDimensions;
-
- return $this;
- }
-
- /**
- * Refresh row dimensions
- *
- * @return PHPExcel_Worksheet
- */
- public function refreshRowDimensions()
- {
- $currentRowDimensions = $this->getRowDimensions();
- $newRowDimensions = array();
-
- foreach ($currentRowDimensions as $objRowDimension) {
- $newRowDimensions[$objRowDimension->getRowIndex()] = $objRowDimension;
- }
-
- $this->_rowDimensions = $newRowDimensions;
-
- return $this;
- }
-
- /**
- * Calculate worksheet dimension
- *
- * @return string String containing the dimension of this worksheet
- */
- public function calculateWorksheetDimension()
- {
- // Return
- return 'A1' . ':' . $this->getHighestColumn() . $this->getHighestRow();
- }
-
- /**
- * Calculate worksheet data dimension
- *
- * @return string String containing the dimension of this worksheet that actually contain data
- */
- public function calculateWorksheetDataDimension()
- {
- // Return
- return 'A1' . ':' . $this->getHighestDataColumn() . $this->getHighestDataRow();
- }
-
- /**
- * Calculate widths for auto-size columns
- *
- * @param boolean $calculateMergeCells Calculate merge cell width
- * @return PHPExcel_Worksheet;
- */
- public function calculateColumnWidths($calculateMergeCells = false)
- {
- // initialize $autoSizes array
- $autoSizes = array();
- foreach ($this->getColumnDimensions() as $colDimension) {
- if ($colDimension->getAutoSize()) {
- $autoSizes[$colDimension->getColumnIndex()] = -1;
- }
- }
-
- // There is only something to do if there are some auto-size columns
- if (!empty($autoSizes)) {
-
- // build list of cells references that participate in a merge
- $isMergeCell = array();
- foreach ($this->getMergeCells() as $cells) {
- foreach (PHPExcel_Cell::extractAllCellReferencesInRange($cells) as $cellReference) {
- $isMergeCell[$cellReference] = true;
- }
- }
-
- // loop through all cells in the worksheet
- foreach ($this->getCellCollection(false) as $cellID) {
- $cell = $this->getCell($cellID);
- if (isset($autoSizes[$cell->getColumn()])) {
- // Determine width if cell does not participate in a merge
- if (!isset($isMergeCell[$cell->getCoordinate()])) {
- // Calculated value
- $cellValue = $cell->getCalculatedValue();
-
- // To formatted string
- $cellValue = PHPExcel_Style_NumberFormat::toFormattedString($cellValue, $this->getParent()->getCellXfByIndex($cell->getXfIndex())->getNumberFormat()->getFormatCode());
-
- $autoSizes[$cell->getColumn()] = max(
- (float)$autoSizes[$cell->getColumn()],
- (float)PHPExcel_Shared_Font::calculateColumnWidth(
- $this->getParent()->getCellXfByIndex($cell->getXfIndex())->getFont(),
- $cellValue,
- $this->getParent()->getCellXfByIndex($cell->getXfIndex())->getAlignment()->getTextRotation(),
- $this->getDefaultStyle()->getFont()
- )
- );
- }
- }
- }
-
- // adjust column widths
- foreach ($autoSizes as $columnIndex => $width) {
- if ($width == -1) $width = $this->getDefaultColumnDimension()->getWidth();
- $this->getColumnDimension($columnIndex)->setWidth($width);
- }
- }
-
- return $this;
- }
-
- /**
- * Get parent
- *
- * @return PHPExcel
- */
- public function getParent() {
- return $this->_parent;
- }
-
- /**
- * Re-bind parent
- *
- * @param PHPExcel $parent
- * @return PHPExcel_Worksheet
- */
- public function rebindParent(PHPExcel $parent) {
- $namedRanges = $this->_parent->getNamedRanges();
- foreach ($namedRanges as $namedRange) {
- $parent->addNamedRange($namedRange);
- }
-
- $this->_parent->removeSheetByIndex(
- $this->_parent->getIndex($this)
- );
- $this->_parent = $parent;
-
- return $this;
- }
-
- /**
- * Get title
- *
- * @return string
- */
- public function getTitle()
- {
- return $this->_title;
- }
-
- /**
- * Set title
- *
- * @param string $pValue String containing the dimension of this worksheet
- * @param string $updateFormulaCellReferences boolean Flag indicating whether cell references in formulae should
- * be updated to reflect the new sheet name.
- * This should be left as the default true, unless you are
- * certain that no formula cells on any worksheet contain
- * references to this worksheet
- * @return PHPExcel_Worksheet
- */
- public function setTitle($pValue = 'Worksheet', $updateFormulaCellReferences = true)
- {
- // Is this a 'rename' or not?
- if ($this->getTitle() == $pValue) {
- return $this;
- }
-
- // Syntax check
- self::_checkSheetTitle($pValue);
-
- // Old title
- $oldTitle = $this->getTitle();
-
- if ($this->getParent()) {
- // Is there already such sheet name?
- if ($this->getParent()->sheetNameExists($pValue)) {
- // Use name, but append with lowest possible integer
-
- if (PHPExcel_Shared_String::CountCharacters($pValue) > 29) {
- $pValue = PHPExcel_Shared_String::Substring($pValue,0,29);
- }
- $i = 1;
- while ($this->getParent()->sheetNameExists($pValue . ' ' . $i)) {
- ++$i;
- if ($i == 10) {
- if (PHPExcel_Shared_String::CountCharacters($pValue) > 28) {
- $pValue = PHPExcel_Shared_String::Substring($pValue,0,28);
- }
- } elseif ($i == 100) {
- if (PHPExcel_Shared_String::CountCharacters($pValue) > 27) {
- $pValue = PHPExcel_Shared_String::Substring($pValue,0,27);
- }
- }
- }
-
- $altTitle = $pValue . ' ' . $i;
- return $this->setTitle($altTitle,$updateFormulaCellReferences);
- }
- }
-
- // Set title
- $this->_title = $pValue;
- $this->_dirty = true;
-
- if ($this->getParent()) {
- // New title
- $newTitle = $this->getTitle();
- if ($updateFormulaCellReferences)
- PHPExcel_ReferenceHelper::getInstance()->updateNamedFormulas($this->getParent(), $oldTitle, $newTitle);
- }
-
- return $this;
- }
-
- /**
- * Get sheet state
- *
- * @return string Sheet state (visible, hidden, veryHidden)
- */
- public function getSheetState() {
- return $this->_sheetState;
- }
-
- /**
- * Set sheet state
- *
- * @param string $value Sheet state (visible, hidden, veryHidden)
- * @return PHPExcel_Worksheet
- */
- public function setSheetState($value = PHPExcel_Worksheet::SHEETSTATE_VISIBLE) {
- $this->_sheetState = $value;
- return $this;
- }
-
- /**
- * Get page setup
- *
- * @return PHPExcel_Worksheet_PageSetup
- */
- public function getPageSetup()
- {
- return $this->_pageSetup;
- }
-
- /**
- * Set page setup
- *
- * @param PHPExcel_Worksheet_PageSetup $pValue
- * @return PHPExcel_Worksheet
- */
- public function setPageSetup(PHPExcel_Worksheet_PageSetup $pValue)
- {
- $this->_pageSetup = $pValue;
- return $this;
- }
-
- /**
- * Get page margins
- *
- * @return PHPExcel_Worksheet_PageMargins
- */
- public function getPageMargins()
- {
- return $this->_pageMargins;
- }
-
- /**
- * Set page margins
- *
- * @param PHPExcel_Worksheet_PageMargins $pValue
- * @return PHPExcel_Worksheet
- */
- public function setPageMargins(PHPExcel_Worksheet_PageMargins $pValue)
- {
- $this->_pageMargins = $pValue;
- return $this;
- }
-
- /**
- * Get page header/footer
- *
- * @return PHPExcel_Worksheet_HeaderFooter
- */
- public function getHeaderFooter()
- {
- return $this->_headerFooter;
- }
-
- /**
- * Set page header/footer
- *
- * @param PHPExcel_Worksheet_HeaderFooter $pValue
- * @return PHPExcel_Worksheet
- */
- public function setHeaderFooter(PHPExcel_Worksheet_HeaderFooter $pValue)
- {
- $this->_headerFooter = $pValue;
- return $this;
- }
-
- /**
- * Get sheet view
- *
- * @return PHPExcel_Worksheet_HeaderFooter
- */
- public function getSheetView()
- {
- return $this->_sheetView;
- }
-
- /**
- * Set sheet view
- *
- * @param PHPExcel_Worksheet_SheetView $pValue
- * @return PHPExcel_Worksheet
- */
- public function setSheetView(PHPExcel_Worksheet_SheetView $pValue)
- {
- $this->_sheetView = $pValue;
- return $this;
- }
-
- /**
- * Get Protection
- *
- * @return PHPExcel_Worksheet_Protection
- */
- public function getProtection()
- {
- return $this->_protection;
- }
-
- /**
- * Set Protection
- *
- * @param PHPExcel_Worksheet_Protection $pValue
- * @return PHPExcel_Worksheet
- */
- public function setProtection(PHPExcel_Worksheet_Protection $pValue)
- {
- $this->_protection = $pValue;
- $this->_dirty = true;
-
- return $this;
- }
-
- /**
- * Get highest worksheet column
- *
- * @return string Highest column name
- */
- public function getHighestColumn()
- {
- return $this->_cachedHighestColumn;
- }
-
- /**
- * Get highest worksheet column that contains data
- *
- * @return string Highest column name that contains data
- */
- public function getHighestDataColumn()
- {
- return $this->_cellCollection->getHighestColumn();
- }
-
- /**
- * Get highest worksheet row
- *
- * @return int Highest row number
- */
- public function getHighestRow()
- {
- return $this->_cachedHighestRow;
- }
-
- /**
- * Get highest worksheet row that contains data
- *
- * @return string Highest row number that contains data
- */
- public function getHighestDataRow()
- {
- return $this->_cellCollection->getHighestRow();
- }
-
- /**
- * Get highest worksheet column and highest row that have cell records
- *
- * @return array Highest column name and highest row number
- */
- public function getHighestRowAndColumn()
- {
- return $this->_cellCollection->getHighestRowAndColumn();
- }
-
- /**
- * Set a cell value
- *
- * @param string $pCoordinate Coordinate of the cell
- * @param mixed $pValue Value of the cell
- * @param bool $returnCell Return the worksheet (false, default) or the cell (true)
- * @return PHPExcel_Worksheet|PHPExcel_Cell Depending on the last parameter being specified
- */
- public function setCellValue($pCoordinate = 'A1', $pValue = null, $returnCell = false)
- {
- $cell = $this->getCell($pCoordinate)->setValue($pValue);
- return ($returnCell) ? $cell : $this;
- }
-
- /**
- * Set a cell value by using numeric cell coordinates
- *
- * @param string $pColumn Numeric column coordinate of the cell
- * @param string $pRow Numeric row coordinate of the cell
- * @param mixed $pValue Value of the cell
- * @param bool $returnCell Return the worksheet (false, default) or the cell (true)
- * @return PHPExcel_Worksheet|PHPExcel_Cell Depending on the last parameter being specified
- */
- public function setCellValueByColumnAndRow($pColumn = 0, $pRow = 1, $pValue = null, $returnCell = false)
- {
- $cell = $this->getCell(PHPExcel_Cell::stringFromColumnIndex($pColumn) . $pRow)->setValue($pValue);
- return ($returnCell) ? $cell : $this;
- }
-
- /**
- * Set a cell value
- *
- * @param string $pCoordinate Coordinate of the cell
- * @param mixed $pValue Value of the cell
- * @param string $pDataType Explicit data type
- * @param bool $returnCell Return the worksheet (false, default) or the cell (true)
- * @return PHPExcel_Worksheet|PHPExcel_Cell Depending on the last parameter being specified
- */
- public function setCellValueExplicit($pCoordinate = 'A1', $pValue = null, $pDataType = PHPExcel_Cell_DataType::TYPE_STRING, $returnCell = false)
- {
- // Set value
- $cell = $this->getCell($pCoordinate)->setValueExplicit($pValue, $pDataType);
- return ($returnCell) ? $cell : $this;
- }
-
- /**
- * Set a cell value by using numeric cell coordinates
- *
- * @param string $pColumn Numeric column coordinate of the cell
- * @param string $pRow Numeric row coordinate of the cell
- * @param mixed $pValue Value of the cell
- * @param string $pDataType Explicit data type
- * @param bool $returnCell Return the worksheet (false, default) or the cell (true)
- * @return PHPExcel_Worksheet|PHPExcel_Cell Depending on the last parameter being specified
- */
- public function setCellValueExplicitByColumnAndRow($pColumn = 0, $pRow = 1, $pValue = null, $pDataType = PHPExcel_Cell_DataType::TYPE_STRING, $returnCell = false)
- {
- $cell = $this->getCell(PHPExcel_Cell::stringFromColumnIndex($pColumn) . $pRow)->setValueExplicit($pValue, $pDataType);
- return ($returnCell) ? $cell : $this;
- }
-
- /**
- * Get cell at a specific coordinate
- *
- * @param string $pCoordinate Coordinate of the cell
- * @throws Exception
- * @return PHPExcel_Cell Cell that was found
- */
- public function getCell($pCoordinate = 'A1')
- {
- // Check cell collection
- if ($this->_cellCollection->isDataSet($pCoordinate)) {
- return $this->_cellCollection->getCacheData($pCoordinate);
- }
-
- // Worksheet reference?
- if (strpos($pCoordinate, '!') !== false) {
- $worksheetReference = PHPExcel_Worksheet::extractSheetTitle($pCoordinate, true);
- return $this->getParent()->getSheetByName($worksheetReference[0])->getCell($worksheetReference[1]);
- }
-
- // Named range?
- if ((!preg_match('/^'.PHPExcel_Calculation::CALCULATION_REGEXP_CELLREF.'$/i', $pCoordinate, $matches)) &&
- (preg_match('/^'.PHPExcel_Calculation::CALCULATION_REGEXP_NAMEDRANGE.'$/i', $pCoordinate, $matches))) {
- $namedRange = PHPExcel_NamedRange::resolveRange($pCoordinate, $this);
- if ($namedRange !== NULL) {
- $pCoordinate = $namedRange->getRange();
- return $namedRange->getWorksheet()->getCell($pCoordinate);
- }
- }
-
- // Uppercase coordinate
- $pCoordinate = strtoupper($pCoordinate);
-
- if (strpos($pCoordinate,':') !== false || strpos($pCoordinate,',') !== false) {
- throw new Exception('Cell coordinate can not be a range of cells.');
- } elseif (strpos($pCoordinate,'$') !== false) {
- throw new Exception('Cell coordinate must not be absolute.');
- } else {
- // Create new cell object
-
- // Coordinates
- $aCoordinates = PHPExcel_Cell::coordinateFromString($pCoordinate);
-
- $cell = $this->_cellCollection->addCacheData($pCoordinate,new PHPExcel_Cell($aCoordinates[0], $aCoordinates[1], null, PHPExcel_Cell_DataType::TYPE_NULL, $this));
- $this->_cellCollectionIsSorted = false;
-
- if (PHPExcel_Cell::columnIndexFromString($this->_cachedHighestColumn) < PHPExcel_Cell::columnIndexFromString($aCoordinates[0]))
- $this->_cachedHighestColumn = $aCoordinates[0];
-
- $this->_cachedHighestRow = max($this->_cachedHighestRow,$aCoordinates[1]);
-
- // Cell needs appropriate xfIndex
- $rowDimensions = $this->getRowDimensions();
- $columnDimensions = $this->getColumnDimensions();
-
- if ( isset($rowDimensions[$aCoordinates[1]]) && $rowDimensions[$aCoordinates[1]]->getXfIndex() !== null ) {
- // then there is a row dimension with explicit style, assign it to the cell
- $cell->setXfIndex($rowDimensions[$aCoordinates[1]]->getXfIndex());
- } else if ( isset($columnDimensions[$aCoordinates[0]]) ) {
- // then there is a column dimension, assign it to the cell
- $cell->setXfIndex($columnDimensions[$aCoordinates[0]]->getXfIndex());
- } else {
- // set to default index
- $cell->setXfIndex(0);
- }
-
- return $cell;
- }
- }
-
- /**
- * Get cell at a specific coordinate by using numeric cell coordinates
- *
- * @param string $pColumn Numeric column coordinate of the cell
- * @param string $pRow Numeric row coordinate of the cell
- * @return PHPExcel_Cell Cell that was found
- */
- public function getCellByColumnAndRow($pColumn = 0, $pRow = 1)
- {
- $columnLetter = PHPExcel_Cell::stringFromColumnIndex($pColumn);
- $coordinate = $columnLetter . $pRow;
-
- if (!$this->_cellCollection->isDataSet($coordinate)) {
- $cell = $this->_cellCollection->addCacheData($coordinate, new PHPExcel_Cell($columnLetter, $pRow, null, PHPExcel_Cell_DataType::TYPE_NULL, $this));
- $this->_cellCollectionIsSorted = false;
-
- if (PHPExcel_Cell::columnIndexFromString($this->_cachedHighestColumn) < $pColumn)
- $this->_cachedHighestColumn = $columnLetter;
-
- $this->_cachedHighestRow = max($this->_cachedHighestRow,$pRow);
-
- return $cell;
- }
-
- return $this->_cellCollection->getCacheData($coordinate);
- }
-
- /**
- * Cell at a specific coordinate exists?
- *
- * @param string $pCoordinate Coordinate of the cell
- * @throws Exception
- * @return boolean
- */
- public function cellExists($pCoordinate = 'A1')
- {
- // Worksheet reference?
- if (strpos($pCoordinate, '!') !== false) {
- $worksheetReference = PHPExcel_Worksheet::extractSheetTitle($pCoordinate, true);
- return $this->getParent()->getSheetByName($worksheetReference[0])->cellExists($worksheetReference[1]);
- }
-
- // Named range?
- if ((!preg_match('/^'.PHPExcel_Calculation::CALCULATION_REGEXP_CELLREF.'$/i', $pCoordinate, $matches)) &&
- (preg_match('/^'.PHPExcel_Calculation::CALCULATION_REGEXP_NAMEDRANGE.'$/i', $pCoordinate, $matches))) {
- $namedRange = PHPExcel_NamedRange::resolveRange($pCoordinate, $this);
- if ($namedRange !== NULL) {
- $pCoordinate = $namedRange->getRange();
- if ($this->getHashCode() != $namedRange->getWorksheet()->getHashCode()) {
- if (!$namedRange->getLocalOnly()) {
- return $namedRange->getWorksheet()->cellExists($pCoordinate);
- } else {
- throw new Exception('Named range ' . $namedRange->getName() . ' is not accessible from within sheet ' . $this->getTitle());
- }
- }
- }
- }
-
- // Uppercase coordinate
- $pCoordinate = strtoupper($pCoordinate);
-
- if (strpos($pCoordinate,':') !== false || strpos($pCoordinate,',') !== false) {
- throw new Exception('Cell coordinate can not be a range of cells.');
- } elseif (strpos($pCoordinate,'$') !== false) {
- throw new Exception('Cell coordinate must not be absolute.');
- } else {
- // Coordinates
- $aCoordinates = PHPExcel_Cell::coordinateFromString($pCoordinate);
-
- // Cell exists?
- return $this->_cellCollection->isDataSet($pCoordinate);
- }
- }
-
- /**
- * Cell at a specific coordinate by using numeric cell coordinates exists?
- *
- * @param string $pColumn Numeric column coordinate of the cell
- * @param string $pRow Numeric row coordinate of the cell
- * @return boolean
- */
- public function cellExistsByColumnAndRow($pColumn = 0, $pRow = 1)
- {
- return $this->cellExists(PHPExcel_Cell::stringFromColumnIndex($pColumn) . $pRow);
- }
-
- /**
- * Get row dimension at a specific row
- *
- * @param int $pRow Numeric index of the row
- * @return PHPExcel_Worksheet_RowDimension
- */
- public function getRowDimension($pRow = 1)
- {
- // Found
- $found = null;
-
- // Get row dimension
- if (!isset($this->_rowDimensions[$pRow])) {
- $this->_rowDimensions[$pRow] = new PHPExcel_Worksheet_RowDimension($pRow);
-
- $this->_cachedHighestRow = max($this->_cachedHighestRow,$pRow);
- }
- return $this->_rowDimensions[$pRow];
- }
-
- /**
- * Get column dimension at a specific column
- *
- * @param string $pColumn String index of the column
- * @return PHPExcel_Worksheet_ColumnDimension
- */
- public function getColumnDimension($pColumn = 'A')
- {
- // Uppercase coordinate
- $pColumn = strtoupper($pColumn);
-
- // Fetch dimensions
- if (!isset($this->_columnDimensions[$pColumn])) {
- $this->_columnDimensions[$pColumn] = new PHPExcel_Worksheet_ColumnDimension($pColumn);
-
- if (PHPExcel_Cell::columnIndexFromString($this->_cachedHighestColumn) < PHPExcel_Cell::columnIndexFromString($pColumn))
- $this->_cachedHighestColumn = $pColumn;
- }
- return $this->_columnDimensions[$pColumn];
- }
-
- /**
- * Get column dimension at a specific column by using numeric cell coordinates
- *
- * @param string $pColumn Numeric column coordinate of the cell
- * @return PHPExcel_Worksheet_ColumnDimension
- */
- public function getColumnDimensionByColumn($pColumn = 0)
- {
- return $this->getColumnDimension(PHPExcel_Cell::stringFromColumnIndex($pColumn));
- }
-
- /**
- * Get styles
- *
- * @return PHPExcel_Style[]
- */
- public function getStyles()
- {
- return $this->_styles;
- }
-
- /**
- * Get default style of workbork.
- *
- * @deprecated
- * @return PHPExcel_Style
- * @throws Exception
- */
- public function getDefaultStyle()
- {
- return $this->_parent->getDefaultStyle();
- }
-
- /**
- * Set default style - should only be used by PHPExcel_IReader implementations!
- *
- * @deprecated
- * @param PHPExcel_Style $pValue
- * @throws Exception
- * @return PHPExcel_Worksheet
- */
- public function setDefaultStyle(PHPExcel_Style $pValue)
- {
- $this->_parent->getDefaultStyle()->applyFromArray(array(
- 'font' => array(
- 'name' => $pValue->getFont()->getName(),
- 'size' => $pValue->getFont()->getSize(),
- ),
- ));
- return $this;
- }
-
- /**
- * Get style for cell
- *
- * @param string $pCellCoordinate Cell coordinate to get style for
- * @return PHPExcel_Style
- * @throws Exception
- */
- public function getStyle($pCellCoordinate = 'A1')
- {
- // set this sheet as active
- $this->_parent->setActiveSheetIndex($this->_parent->getIndex($this));
-
- // set cell coordinate as active
- $this->setSelectedCells($pCellCoordinate);
-
- return $this->_parent->getCellXfSupervisor();
- }
-
- /**
- * Get conditional styles for a cell
- *
- * @param string $pCoordinate
- * @return PHPExcel_Style_Conditional[]
- */
- public function getConditionalStyles($pCoordinate = 'A1')
- {
- if (!isset($this->_conditionalStylesCollection[$pCoordinate])) {
- $this->_conditionalStylesCollection[$pCoordinate] = array();
- }
- return $this->_conditionalStylesCollection[$pCoordinate];
- }
-
- /**
- * Do conditional styles exist for this cell?
- *
- * @param string $pCoordinate
- * @return boolean
- */
- public function conditionalStylesExists($pCoordinate = 'A1')
- {
- if (isset($this->_conditionalStylesCollection[$pCoordinate])) {
- return true;
- }
- return false;
- }
-
- /**
- * Removes conditional styles for a cell
- *
- * @param string $pCoordinate
- * @return PHPExcel_Worksheet
- */
- public function removeConditionalStyles($pCoordinate = 'A1')
- {
- unset($this->_conditionalStylesCollection[$pCoordinate]);
- return $this;
- }
-
- /**
- * Get collection of conditional styles
- *
- * @return array
- */
- public function getConditionalStylesCollection()
- {
- return $this->_conditionalStylesCollection;
- }
-
- /**
- * Set conditional styles
- *
- * @param $pCoordinate string E.g. 'A1'
- * @param $pValue PHPExcel_Style_Conditional[]
- * @return PHPExcel_Worksheet
- */
- public function setConditionalStyles($pCoordinate = 'A1', $pValue)
- {
- $this->_conditionalStylesCollection[$pCoordinate] = $pValue;
- return $this;
- }
-
- /**
- * Get style for cell by using numeric cell coordinates
- *
- * @param int $pColumn Numeric column coordinate of the cell
- * @param int $pRow Numeric row coordinate of the cell
- * @return PHPExcel_Style
- */
- public function getStyleByColumnAndRow($pColumn = 0, $pRow = 1)
- {
- return $this->getStyle(PHPExcel_Cell::stringFromColumnIndex($pColumn) . $pRow);
- }
-
- /**
- * Set shared cell style to a range of cells
- *
- * Please note that this will overwrite existing cell styles for cells in range!
- *
- * @deprecated
- * @param PHPExcel_Style $pSharedCellStyle Cell style to share
- * @param string $pRange Range of cells (i.e. "A1:B10"), or just one cell (i.e. "A1")
- * @throws Exception
- * @return PHPExcel_Worksheet
- */
- public function setSharedStyle(PHPExcel_Style $pSharedCellStyle = null, $pRange = '')
- {
- $this->duplicateStyle($pSharedCellStyle, $pRange);
- return $this;
- }
-
- /**
- * Duplicate cell style to a range of cells
- *
- * Please note that this will overwrite existing cell styles for cells in range!
- *
- * @param PHPExcel_Style $pCellStyle Cell style to duplicate
- * @param string $pRange Range of cells (i.e. "A1:B10"), or just one cell (i.e. "A1")
- * @throws Exception
- * @return PHPExcel_Worksheet
- */
- public function duplicateStyle(PHPExcel_Style $pCellStyle = null, $pRange = '')
- {
- // make sure we have a real style and not supervisor
- $style = $pCellStyle->getIsSupervisor() ? $pCellStyle->getSharedComponent() : $pCellStyle;
-
- // Add the style to the workbook if necessary
- $workbook = $this->_parent;
- if ($existingStyle = $this->_parent->getCellXfByHashCode($pCellStyle->getHashCode())) {
- // there is already such cell Xf in our collection
- $xfIndex = $existingStyle->getIndex();
- } else {
- // we don't have such a cell Xf, need to add
- $workbook->addCellXf($pCellStyle);
- $xfIndex = $pCellStyle->getIndex();
- }
-
- // Uppercase coordinate
- $pRange = strtoupper($pRange);
-
- // Is it a cell range or a single cell?
- $rangeA = '';
- $rangeB = '';
- if (strpos($pRange, ':') === false) {
- $rangeA = $pRange;
- $rangeB = $pRange;
- } else {
- list($rangeA, $rangeB) = explode(':', $pRange);
- }
-
- // Calculate range outer borders
- $rangeStart = PHPExcel_Cell::coordinateFromString($rangeA);
- $rangeEnd = PHPExcel_Cell::coordinateFromString($rangeB);
-
- // Translate column into index
- $rangeStart[0] = PHPExcel_Cell::columnIndexFromString($rangeStart[0]) - 1;
- $rangeEnd[0] = PHPExcel_Cell::columnIndexFromString($rangeEnd[0]) - 1;
-
- // Make sure we can loop upwards on rows and columns
- if ($rangeStart[0] > $rangeEnd[0] && $rangeStart[1] > $rangeEnd[1]) {
- $tmp = $rangeStart;
- $rangeStart = $rangeEnd;
- $rangeEnd = $tmp;
- }
-
- // Loop through cells and apply styles
- for ($col = $rangeStart[0]; $col <= $rangeEnd[0]; ++$col) {
- for ($row = $rangeStart[1]; $row <= $rangeEnd[1]; ++$row) {
- $this->getCell(PHPExcel_Cell::stringFromColumnIndex($col) . $row)->setXfIndex($xfIndex);
- }
- }
-
- return $this;
- }
-
- /**
- * Duplicate conditional style to a range of cells
- *
- * Please note that this will overwrite existing cell styles for cells in range!
- *
- * @param array of PHPExcel_Style_Conditional $pCellStyle Cell style to duplicate
- * @param string $pRange Range of cells (i.e. "A1:B10"), or just one cell (i.e. "A1")
- * @throws Exception
- * @return PHPExcel_Worksheet
- */
- public function duplicateConditionalStyle(array $pCellStyle = null, $pRange = '')
- {
- foreach($pCellStyle as $cellStyle) {
- if (!is_a($cellStyle,'PHPExcel_Style_Conditional')) {
- throw new Exception('Style is not a conditional style');
- }
- }
-
- // Uppercase coordinate
- $pRange = strtoupper($pRange);
-
- // Is it a cell range or a single cell?
- $rangeA = '';
- $rangeB = '';
- if (strpos($pRange, ':') === false) {
- $rangeA = $pRange;
- $rangeB = $pRange;
- } else {
- list($rangeA, $rangeB) = explode(':', $pRange);
- }
-
- // Calculate range outer borders
- $rangeStart = PHPExcel_Cell::coordinateFromString($rangeA);
- $rangeEnd = PHPExcel_Cell::coordinateFromString($rangeB);
-
- // Translate column into index
- $rangeStart[0] = PHPExcel_Cell::columnIndexFromString($rangeStart[0]) - 1;
- $rangeEnd[0] = PHPExcel_Cell::columnIndexFromString($rangeEnd[0]) - 1;
-
- // Make sure we can loop upwards on rows and columns
- if ($rangeStart[0] > $rangeEnd[0] && $rangeStart[1] > $rangeEnd[1]) {
- $tmp = $rangeStart;
- $rangeStart = $rangeEnd;
- $rangeEnd = $tmp;
- }
-
- // Loop through cells and apply styles
- for ($col = $rangeStart[0]; $col <= $rangeEnd[0]; ++$col) {
- for ($row = $rangeStart[1]; $row <= $rangeEnd[1]; ++$row) {
- $this->setConditionalStyles(PHPExcel_Cell::stringFromColumnIndex($col) . $row, $pCellStyle);
- }
- }
-
- return $this;
- }
-
- /**
- * Duplicate cell style array to a range of cells
- *
- * Please note that this will overwrite existing cell styles for cells in range,
- * if they are in the styles array. For example, if you decide to set a range of
- * cells to font bold, only include font bold in the styles array.
- *
- * @deprecated
- * @param array $pStyles Array containing style information
- * @param string $pRange Range of cells (i.e. "A1:B10"), or just one cell (i.e. "A1")
- * @param boolean $pAdvanced Advanced mode for setting borders.
- * @throws Exception
- * @return PHPExcel_Worksheet
- */
- public function duplicateStyleArray($pStyles = null, $pRange = '', $pAdvanced = true)
- {
- $this->getStyle($pRange)->applyFromArray($pStyles, $pAdvanced);
- return $this;
- }
-
- /**
- * Set break on a cell
- *
- * @param string $pCell Cell coordinate (e.g. A1)
- * @param int $pBreak Break type (type of PHPExcel_Worksheet::BREAK_*)
- * @throws Exception
- * @return PHPExcel_Worksheet
- */
- public function setBreak($pCell = 'A1', $pBreak = PHPExcel_Worksheet::BREAK_NONE)
- {
- // Uppercase coordinate
- $pCell = strtoupper($pCell);
-
- if ($pCell != '') {
- $this->_breaks[$pCell] = $pBreak;
- } else {
- throw new Exception('No cell coordinate specified.');
- }
-
- return $this;
- }
-
- /**
- * Set break on a cell by using numeric cell coordinates
- *
- * @param integer $pColumn Numeric column coordinate of the cell
- * @param integer $pRow Numeric row coordinate of the cell
- * @param integer $pBreak Break type (type of PHPExcel_Worksheet::BREAK_*)
- * @throws Exception
- * @return PHPExcel_Worksheet
- */
- public function setBreakByColumnAndRow($pColumn = 0, $pRow = 1, $pBreak = PHPExcel_Worksheet::BREAK_NONE)
- {
- return $this->setBreak(PHPExcel_Cell::stringFromColumnIndex($pColumn) . $pRow, $pBreak);
- }
-
- /**
- * Get breaks
- *
- * @return array[]
- */
- public function getBreaks()
- {
- return $this->_breaks;
- }
-
- /**
- * Set merge on a cell range
- *
- * @param string $pRange Cell range (e.g. A1:E1)
- * @throws Exception
- * @return PHPExcel_Worksheet
- */
- public function mergeCells($pRange = 'A1:A1')
- {
- // Uppercase coordinate
- $pRange = strtoupper($pRange);
-
- if (strpos($pRange,':') !== false) {
- $this->_mergeCells[$pRange] = $pRange;
-
- // make sure cells are created
-
- // get the cells in the range
- $aReferences = PHPExcel_Cell::extractAllCellReferencesInRange($pRange);
-
- // create upper left cell if it does not already exist
- $upperLeft = $aReferences[0];
- if (!$this->cellExists($upperLeft)) {
- $this->getCell($upperLeft)->setValueExplicit(null, PHPExcel_Cell_DataType::TYPE_NULL);
- }
-
- // create or blank out the rest of the cells in the range
- $count = count($aReferences);
- for ($i = 1; $i < $count; $i++) {
- $this->getCell($aReferences[$i])->setValueExplicit(null, PHPExcel_Cell_DataType::TYPE_NULL);
- }
-
- } else {
- throw new Exception('Merge must be set on a range of cells.');
- }
-
- return $this;
- }
-
- /**
- * Set merge on a cell range by using numeric cell coordinates
- *
- * @param int $pColumn1 Numeric column coordinate of the first cell
- * @param int $pRow1 Numeric row coordinate of the first cell
- * @param int $pColumn2 Numeric column coordinate of the last cell
- * @param int $pRow2 Numeric row coordinate of the last cell
- * @throws Exception
- * @return PHPExcel_Worksheet
- */
- public function mergeCellsByColumnAndRow($pColumn1 = 0, $pRow1 = 1, $pColumn2 = 0, $pRow2 = 1)
- {
- $cellRange = PHPExcel_Cell::stringFromColumnIndex($pColumn1) . $pRow1 . ':' . PHPExcel_Cell::stringFromColumnIndex($pColumn2) . $pRow2;
- return $this->mergeCells($cellRange);
- }
-
- /**
- * Remove merge on a cell range
- *
- * @param string $pRange Cell range (e.g. A1:E1)
- * @throws Exception
- * @return PHPExcel_Worksheet
- */
- public function unmergeCells($pRange = 'A1:A1')
- {
- // Uppercase coordinate
- $pRange = strtoupper($pRange);
-
- if (strpos($pRange,':') !== false) {
- if (isset($this->_mergeCells[$pRange])) {
- unset($this->_mergeCells[$pRange]);
- } else {
- throw new Exception('Cell range ' . $pRange . ' not known as merged.');
- }
- } else {
- throw new Exception('Merge can only be removed from a range of cells.');
- }
-
- return $this;
- }
-
- /**
- * Remove merge on a cell range by using numeric cell coordinates
- *
- * @param int $pColumn1 Numeric column coordinate of the first cell
- * @param int $pRow1 Numeric row coordinate of the first cell
- * @param int $pColumn2 Numeric column coordinate of the last cell
- * @param int $pRow2 Numeric row coordinate of the last cell
- * @throws Exception
- * @return PHPExcel_Worksheet
- */
- public function unmergeCellsByColumnAndRow($pColumn1 = 0, $pRow1 = 1, $pColumn2 = 0, $pRow2 = 1)
- {
- $cellRange = PHPExcel_Cell::stringFromColumnIndex($pColumn1) . $pRow1 . ':' . PHPExcel_Cell::stringFromColumnIndex($pColumn2) . $pRow2;
- return $this->unmergeCells($cellRange);
- }
-
- /**
- * Get merge cells array.
- *
- * @return array[]
- */
- public function getMergeCells()
- {
- return $this->_mergeCells;
- }
-
- /**
- * Set merge cells array for the entire sheet. Use instead mergeCells() to merge
- * a single cell range.
- *
- * @param array
- */
- public function setMergeCells($pValue = array())
- {
- $this->_mergeCells = $pValue;
-
- return $this;
- }
-
- /**
- * Set protection on a cell range
- *
- * @param string $pRange Cell (e.g. A1) or cell range (e.g. A1:E1)
- * @param string $pPassword Password to unlock the protection
- * @param boolean $pAlreadyHashed If the password has already been hashed, set this to true
- * @throws Exception
- * @return PHPExcel_Worksheet
- */
- public function protectCells($pRange = 'A1', $pPassword = '', $pAlreadyHashed = false)
- {
- // Uppercase coordinate
- $pRange = strtoupper($pRange);
-
- if (!$pAlreadyHashed) {
- $pPassword = PHPExcel_Shared_PasswordHasher::hashPassword($pPassword);
- }
- $this->_protectedCells[$pRange] = $pPassword;
-
- return $this;
- }
-
- /**
- * Set protection on a cell range by using numeric cell coordinates
- *
- * @param int $pColumn1 Numeric column coordinate of the first cell
- * @param int $pRow1 Numeric row coordinate of the first cell
- * @param int $pColumn2 Numeric column coordinate of the last cell
- * @param int $pRow2 Numeric row coordinate of the last cell
- * @param string $pPassword Password to unlock the protection
- * @param boolean $pAlreadyHashed If the password has already been hashed, set this to true
- * @throws Exception
- * @return PHPExcel_Worksheet
- */
- public function protectCellsByColumnAndRow($pColumn1 = 0, $pRow1 = 1, $pColumn2 = 0, $pRow2 = 1, $pPassword = '', $pAlreadyHashed = false)
- {
- $cellRange = PHPExcel_Cell::stringFromColumnIndex($pColumn1) . $pRow1 . ':' . PHPExcel_Cell::stringFromColumnIndex($pColumn2) . $pRow2;
- return $this->protectCells($cellRange, $pPassword, $pAlreadyHashed);
- }
-
- /**
- * Remove protection on a cell range
- *
- * @param string $pRange Cell (e.g. A1) or cell range (e.g. A1:E1)
- * @throws Exception
- * @return PHPExcel_Worksheet
- */
- public function unprotectCells($pRange = 'A1')
- {
- // Uppercase coordinate
- $pRange = strtoupper($pRange);
-
- if (isset($this->_protectedCells[$pRange])) {
- unset($this->_protectedCells[$pRange]);
- } else {
- throw new Exception('Cell range ' . $pRange . ' not known as protected.');
- }
- return $this;
- }
-
- /**
- * Remove protection on a cell range by using numeric cell coordinates
- *
- * @param int $pColumn1 Numeric column coordinate of the first cell
- * @param int $pRow1 Numeric row coordinate of the first cell
- * @param int $pColumn2 Numeric column coordinate of the last cell
- * @param int $pRow2 Numeric row coordinate of the last cell
- * @param string $pPassword Password to unlock the protection
- * @param boolean $pAlreadyHashed If the password has already been hashed, set this to true
- * @throws Exception
- * @return PHPExcel_Worksheet
- */
- public function unprotectCellsByColumnAndRow($pColumn1 = 0, $pRow1 = 1, $pColumn2 = 0, $pRow2 = 1, $pPassword = '', $pAlreadyHashed = false)
- {
- $cellRange = PHPExcel_Cell::stringFromColumnIndex($pColumn1) . $pRow1 . ':' . PHPExcel_Cell::stringFromColumnIndex($pColumn2) . $pRow2;
- return $this->unprotectCells($cellRange, $pPassword, $pAlreadyHashed);
- }
-
- /**
- * Get protected cells
- *
- * @return array[]
- */
- public function getProtectedCells()
- {
- return $this->_protectedCells;
- }
-
- /**
- * Get Autofilter
- *
- * @return PHPExcel_Worksheet_AutoFilter
- */
- public function getAutoFilter()
- {
- return $this->_autoFilter;
- }
-
- /**
- * Set AutoFilter
- *
- * @param PHPExcel_Worksheet_AutoFilter|string $pValue
- * A simple string containing a Cell range like 'A1:E10' is permitted for backward compatibility
- * @throws Exception
- * @return PHPExcel_Worksheet
- */
- public function setAutoFilter($pValue)
- {
- if (is_string($pValue)) {
- $this->_autoFilter->setRange($pValue);
- } elseif(is_object($pValue) && ($pValue instanceof PHPExcel_Worksheet_AutoFilter)) {
- $this->_autoFilter = $pValue;
- }
- return $this;
- }
-
- /**
- * Set Autofilter Range by using numeric cell coordinates
- *
- * @param int $pColumn1 Numeric column coordinate of the first cell
- * @param int $pRow1 Numeric row coordinate of the first cell
- * @param int $pColumn2 Numeric column coordinate of the second cell
- * @param int $pRow2 Numeric row coordinate of the second cell
- * @throws Exception
- * @return PHPExcel_Worksheet
- */
- public function setAutoFilterByColumnAndRow($pColumn1 = 0, $pRow1 = 1, $pColumn2 = 0, $pRow2 = 1)
- {
- return $this->setAutoFilter(
- PHPExcel_Cell::stringFromColumnIndex($pColumn1) . $pRow1
- . ':' .
- PHPExcel_Cell::stringFromColumnIndex($pColumn2) . $pRow2
- );
- }
-
- /**
- * Remove autofilter
- *
- * @return PHPExcel_Worksheet
- */
- public function removeAutoFilter()
- {
- $this->_autoFilter->setRange(NULL);
- return $this;
- }
-
- /**
- * Get Freeze Pane
- *
- * @return string
- */
- public function getFreezePane()
- {
- return $this->_freezePane;
- }
-
- /**
- * Freeze Pane
- *
- * @param string $pCell Cell (i.e. A2)
- * Examples:
- * A2 will freeze the rows above cell A2 (i.e row 1)
- * B1 will freeze the columns to the left of cell B1 (i.e column A)
- * B2 will freeze the rows above and to the left of cell A2
- * (i.e row 1 and column A)
- * @throws Exception
- * @return PHPExcel_Worksheet
- */
- public function freezePane($pCell = '')
- {
- // Uppercase coordinate
- $pCell = strtoupper($pCell);
-
- if (strpos($pCell,':') === false && strpos($pCell,',') === false) {
- $this->_freezePane = $pCell;
- } else {
- throw new Exception('Freeze pane can not be set on a range of cells.');
- }
- return $this;
- }
-
- /**
- * Freeze Pane by using numeric cell coordinates
- *
- * @param int $pColumn Numeric column coordinate of the cell
- * @param int $pRow Numeric row coordinate of the cell
- * @throws Exception
- * @return PHPExcel_Worksheet
- */
- public function freezePaneByColumnAndRow($pColumn = 0, $pRow = 1)
- {
- return $this->freezePane(PHPExcel_Cell::stringFromColumnIndex($pColumn) . $pRow);
- }
-
- /**
- * Unfreeze Pane
- *
- * @return PHPExcel_Worksheet
- */
- public function unfreezePane()
- {
- return $this->freezePane('');
- }
-
- /**
- * Insert a new row, updating all possible related data
- *
- * @param int $pBefore Insert before this one
- * @param int $pNumRows Number of rows to insert
- * @throws Exception
- * @return PHPExcel_Worksheet
- */
- public function insertNewRowBefore($pBefore = 1, $pNumRows = 1) {
- if ($pBefore >= 1) {
- $objReferenceHelper = PHPExcel_ReferenceHelper::getInstance();
- $objReferenceHelper->insertNewBefore('A' . $pBefore, 0, $pNumRows, $this);
- } else {
- throw new Exception("Rows can only be inserted before at least row 1.");
- }
- return $this;
- }
-
- /**
- * Insert a new column, updating all possible related data
- *
- * @param int $pBefore Insert before this one
- * @param int $pNumCols Number of columns to insert
- * @throws Exception
- * @return PHPExcel_Worksheet
- */
- public function insertNewColumnBefore($pBefore = 'A', $pNumCols = 1) {
- if (!is_numeric($pBefore)) {
- $objReferenceHelper = PHPExcel_ReferenceHelper::getInstance();
- $objReferenceHelper->insertNewBefore($pBefore . '1', $pNumCols, 0, $this);
- } else {
- throw new Exception("Column references should not be numeric.");
- }
- return $this;
- }
-
- /**
- * Insert a new column, updating all possible related data
- *
- * @param int $pBefore Insert before this one (numeric column coordinate of the cell)
- * @param int $pNumCols Number of columns to insert
- * @throws Exception
- * @return PHPExcel_Worksheet
- */
- public function insertNewColumnBeforeByIndex($pBefore = 0, $pNumCols = 1) {
- if ($pBefore >= 0) {
- return $this->insertNewColumnBefore(PHPExcel_Cell::stringFromColumnIndex($pBefore), $pNumCols);
- } else {
- throw new Exception("Columns can only be inserted before at least column A (0).");
- }
- }
-
- /**
- * Delete a row, updating all possible related data
- *
- * @param int $pRow Remove starting with this one
- * @param int $pNumRows Number of rows to remove
- * @throws Exception
- * @return PHPExcel_Worksheet
- */
- public function removeRow($pRow = 1, $pNumRows = 1) {
- if ($pRow >= 1) {
- $objReferenceHelper = PHPExcel_ReferenceHelper::getInstance();
- $objReferenceHelper->insertNewBefore('A' . ($pRow + $pNumRows), 0, -$pNumRows, $this);
- } else {
- throw new Exception("Rows to be deleted should at least start from row 1.");
- }
- return $this;
- }
-
- /**
- * Remove a column, updating all possible related data
- *
- * @param int $pColumn Remove starting with this one
- * @param int $pNumCols Number of columns to remove
- * @throws Exception
- * @return PHPExcel_Worksheet
- */
- public function removeColumn($pColumn = 'A', $pNumCols = 1) {
- if (!is_numeric($pColumn)) {
- $pColumn = PHPExcel_Cell::stringFromColumnIndex(PHPExcel_Cell::columnIndexFromString($pColumn) - 1 + $pNumCols);
- $objReferenceHelper = PHPExcel_ReferenceHelper::getInstance();
- $objReferenceHelper->insertNewBefore($pColumn . '1', -$pNumCols, 0, $this);
- } else {
- throw new Exception("Column references should not be numeric.");
- }
- return $this;
- }
-
- /**
- * Remove a column, updating all possible related data
- *
- * @param int $pColumn Remove starting with this one (numeric column coordinate of the cell)
- * @param int $pNumCols Number of columns to remove
- * @throws Exception
- * @return PHPExcel_Worksheet
- */
- public function removeColumnByIndex($pColumn = 0, $pNumCols = 1) {
- if ($pColumn >= 0) {
- return $this->removeColumn(PHPExcel_Cell::stringFromColumnIndex($pColumn), $pNumCols);
- } else {
- throw new Exception("Columns to be deleted should at least start from column 0");
- }
- }
-
- /**
- * Show gridlines?
- *
- * @return boolean
- */
- public function getShowGridlines() {
- return $this->_showGridlines;
- }
-
- /**
- * Set show gridlines
- *
- * @param boolean $pValue Show gridlines (true/false)
- * @return PHPExcel_Worksheet
- */
- public function setShowGridlines($pValue = false) {
- $this->_showGridlines = $pValue;
- return $this;
- }
-
- /**
- * Print gridlines?
- *
- * @return boolean
- */
- public function getPrintGridlines() {
- return $this->_printGridlines;
- }
-
- /**
- * Set print gridlines
- *
- * @param boolean $pValue Print gridlines (true/false)
- * @return PHPExcel_Worksheet
- */
- public function setPrintGridlines($pValue = false) {
- $this->_printGridlines = $pValue;
- return $this;
- }
-
- /**
- * Show row and column headers?
- *
- * @return boolean
- */
- public function getShowRowColHeaders() {
- return $this->_showRowColHeaders;
- }
-
- /**
- * Set show row and column headers
- *
- * @param boolean $pValue Show row and column headers (true/false)
- * @return PHPExcel_Worksheet
- */
- public function setShowRowColHeaders($pValue = false) {
- $this->_showRowColHeaders = $pValue;
- return $this;
- }
-
- /**
- * Show summary below? (Row/Column outlining)
- *
- * @return boolean
- */
- public function getShowSummaryBelow() {
- return $this->_showSummaryBelow;
- }
-
- /**
- * Set show summary below
- *
- * @param boolean $pValue Show summary below (true/false)
- * @return PHPExcel_Worksheet
- */
- public function setShowSummaryBelow($pValue = true) {
- $this->_showSummaryBelow = $pValue;
- return $this;
- }
-
- /**
- * Show summary right? (Row/Column outlining)
- *
- * @return boolean
- */
- public function getShowSummaryRight() {
- return $this->_showSummaryRight;
- }
-
- /**
- * Set show summary right
- *
- * @param boolean $pValue Show summary right (true/false)
- * @return PHPExcel_Worksheet
- */
- public function setShowSummaryRight($pValue = true) {
- $this->_showSummaryRight = $pValue;
- return $this;
- }
-
- /**
- * Get comments
- *
- * @return PHPExcel_Comment[]
- */
- public function getComments()
- {
- return $this->_comments;
- }
-
- /**
- * Set comments array for the entire sheet.
- *
- * @param array of PHPExcel_Comment
- * @return PHPExcel_Worksheet
- */
- public function setComments($pValue = array())
- {
- $this->_comments = $pValue;
-
- return $this;
- }
-
- /**
- * Get comment for cell
- *
- * @param string $pCellCoordinate Cell coordinate to get comment for
- * @return PHPExcel_Comment
- * @throws Exception
- */
- public function getComment($pCellCoordinate = 'A1')
- {
- // Uppercase coordinate
- $pCellCoordinate = strtoupper($pCellCoordinate);
-
- if (strpos($pCellCoordinate,':') !== false || strpos($pCellCoordinate,',') !== false) {
- throw new Exception('Cell coordinate string can not be a range of cells.');
- } else if (strpos($pCellCoordinate,'$') !== false) {
- throw new Exception('Cell coordinate string must not be absolute.');
- } else if ($pCellCoordinate == '') {
- throw new Exception('Cell coordinate can not be zero-length string.');
- } else {
- // Check if we already have a comment for this cell.
- // If not, create a new comment.
- if (isset($this->_comments[$pCellCoordinate])) {
- return $this->_comments[$pCellCoordinate];
- } else {
- $newComment = new PHPExcel_Comment();
- $this->_comments[$pCellCoordinate] = $newComment;
- return $newComment;
- }
- }
- }
-
- /**
- * Get comment for cell by using numeric cell coordinates
- *
- * @param int $pColumn Numeric column coordinate of the cell
- * @param int $pRow Numeric row coordinate of the cell
- * @return PHPExcel_Comment
- */
- public function getCommentByColumnAndRow($pColumn = 0, $pRow = 1)
- {
- return $this->getComment(PHPExcel_Cell::stringFromColumnIndex($pColumn) . $pRow);
- }
-
- /**
- * Get selected cell
- *
- * @deprecated
- * @return string
- */
- public function getSelectedCell()
- {
- return $this->getSelectedCells();
- }
-
- /**
- * Get active cell
- *
- * @return string Example: 'A1'
- */
- public function getActiveCell()
- {
- return $this->_activeCell;
- }
-
- /**
- * Get selected cells
- *
- * @return string
- */
- public function getSelectedCells()
- {
- return $this->_selectedCells;
- }
-
- /**
- * Selected cell
- *
- * @param string $pCoordinate Cell (i.e. A1)
- * @return PHPExcel_Worksheet
- */
- public function setSelectedCell($pCoordinate = 'A1')
- {
- return $this->setSelectedCells($pCoordinate);
- }
-
- /**
- * Select a range of cells.
- *
- * @param string $pCoordinate Cell range, examples: 'A1', 'B2:G5', 'A:C', '3:6'
- * @throws Exception
- * @return PHPExcel_Worksheet
- */
- public function setSelectedCells($pCoordinate = 'A1')
- {
- // Uppercase coordinate
- $pCoordinate = strtoupper($pCoordinate);
-
- // Convert 'A' to 'A:A'
- $pCoordinate = preg_replace('/^([A-Z]+)$/', '${1}:${1}', $pCoordinate);
-
- // Convert '1' to '1:1'
- $pCoordinate = preg_replace('/^([0-9]+)$/', '${1}:${1}', $pCoordinate);
-
- // Convert 'A:C' to 'A1:C1048576'
- $pCoordinate = preg_replace('/^([A-Z]+):([A-Z]+)$/', '${1}1:${2}1048576', $pCoordinate);
-
- // Convert '1:3' to 'A1:XFD3'
- $pCoordinate = preg_replace('/^([0-9]+):([0-9]+)$/', 'A${1}:XFD${2}', $pCoordinate);
-
- if (strpos($pCoordinate,':') !== false || strpos($pCoordinate,',') !== false) {
- list($first, ) = PHPExcel_Cell::splitRange($pCoordinate);
- $this->_activeCell = $first[0];
- } else {
- $this->_activeCell = $pCoordinate;
- }
- $this->_selectedCells = $pCoordinate;
- return $this;
- }
-
- /**
- * Selected cell by using numeric cell coordinates
- *
- * @param int $pColumn Numeric column coordinate of the cell
- * @param int $pRow Numeric row coordinate of the cell
- * @throws Exception
- * @return PHPExcel_Worksheet
- */
- public function setSelectedCellByColumnAndRow($pColumn = 0, $pRow = 1)
- {
- return $this->setSelectedCells(PHPExcel_Cell::stringFromColumnIndex($pColumn) . $pRow);
- }
-
- /**
- * Get right-to-left
- *
- * @return boolean
- */
- public function getRightToLeft() {
- return $this->_rightToLeft;
- }
-
- /**
- * Set right-to-left
- *
- * @param boolean $value Right-to-left true/false
- * @return PHPExcel_Worksheet
- */
- public function setRightToLeft($value = false) {
- $this->_rightToLeft = $value;
- return $this;
- }
-
- /**
- * Fill worksheet from values in array
- *
- * @param array $source Source array
- * @param mixed $nullValue Value in source array that stands for blank cell
- * @param string $startCell Insert array starting from this cell address as the top left coordinate
- * @param boolean $strictNullComparison Apply strict comparison when testing for null values in the array
- * @throws Exception
- * @return PHPExcel_Worksheet
- */
- public function fromArray($source = null, $nullValue = null, $startCell = 'A1', $strictNullComparison = false) {
- if (is_array($source)) {
- // Convert a 1-D array to 2-D (for ease of looping)
- if (!is_array(end($source))) {
- $source = array($source);
- }
-
- // start coordinate
- list ($startColumn, $startRow) = PHPExcel_Cell::coordinateFromString($startCell);
-
- // Loop through $source
- foreach ($source as $rowData) {
- $currentColumn = $startColumn;
- foreach($rowData as $cellValue) {
- if ($strictNullComparison) {
- if ($cellValue !== $nullValue) {
- // Set cell value
- $this->getCell($currentColumn . $startRow)->setValue($cellValue);
- }
- } else {
- if ($cellValue != $nullValue) {
- // Set cell value
- $this->getCell($currentColumn . $startRow)->setValue($cellValue);
- }
- }
- ++$currentColumn;
- }
- ++$startRow;
- }
- } else {
- throw new Exception("Parameter \$source should be an array.");
- }
- return $this;
- }
-
- /**
- * Create array from a range of cells
- *
- * @param string $pRange Range of cells (i.e. "A1:B10"), or just one cell (i.e. "A1")
- * @param mixed $nullValue Value returned in the array entry if a cell doesn't exist
- * @param boolean $calculateFormulas Should formulas be calculated?
- * @param boolean $formatData Should formatting be applied to cell values?
- * @param boolean $returnCellRef False - Return a simple array of rows and columns indexed by number counting from zero
- * True - Return rows and columns indexed by their actual row and column IDs
- * @return array
- */
- public function rangeToArray($pRange = 'A1', $nullValue = null, $calculateFormulas = true, $formatData = true, $returnCellRef = false) {
- // Returnvalue
- $returnValue = array();
-
- // Identify the range that we need to extract from the worksheet
- list($rangeStart, $rangeEnd) = PHPExcel_Cell::rangeBoundaries($pRange);
- $minCol = PHPExcel_Cell::stringFromColumnIndex($rangeStart[0] -1);
- $minRow = $rangeStart[1];
- $maxCol = PHPExcel_Cell::stringFromColumnIndex($rangeEnd[0] -1);
- $maxRow = $rangeEnd[1];
-
- $maxCol++;
-
- // Loop through rows
- $r = -1;
- for ($row = $minRow; $row <= $maxRow; ++$row) {
- $rRef = ($returnCellRef) ? $row : ++$r;
- $c = -1;
- // Loop through columns in the current row
- for ($col = $minCol; $col != $maxCol; ++$col) {
- $cRef = ($returnCellRef) ? $col : ++$c;
- // Using getCell() will create a new cell if it doesn't already exist. We don't want that to happen
- // so we test and retrieve directly against _cellCollection
- if ($this->_cellCollection->isDataSet($col.$row)) {
- // Cell exists
- $cell = $this->_cellCollection->getCacheData($col.$row);
- if ($cell->getValue() !== null) {
- if ($cell->getValue() instanceof PHPExcel_RichText) {
- $returnValue[$rRef][$cRef] = $cell->getValue()->getPlainText();
- } else {
- if ($calculateFormulas) {
- $returnValue[$rRef][$cRef] = $cell->getCalculatedValue();
- } else {
- $returnValue[$rRef][$cRef] = $cell->getValue();
- }
- }
-
- if ($formatData) {
- $style = $this->_parent->getCellXfByIndex($cell->getXfIndex());
- $returnValue[$rRef][$cRef] = PHPExcel_Style_NumberFormat::toFormattedString($returnValue[$rRef][$cRef], $style->getNumberFormat()->getFormatCode());
- }
- } else {
- // Cell holds a NULL
- $returnValue[$rRef][$cRef] = $nullValue;
- }
- } else {
- // Cell doesn't exist
- $returnValue[$rRef][$cRef] = $nullValue;
- }
- }
- }
-
- // Return
- return $returnValue;
- }
-
-
- /**
- * Create array from a range of cells
- *
- * @param string $pNamedRange Name of the Named Range
- * @param mixed $nullValue Value returned in the array entry if a cell doesn't exist
- * @param boolean $calculateFormulas Should formulas be calculated?
- * @param boolean $formatData Should formatting be applied to cell values?
- * @param boolean $returnCellRef False - Return a simple array of rows and columns indexed by number counting from zero
- * True - Return rows and columns indexed by their actual row and column IDs
- * @return array
- * @throws Exception
- */
- public function namedRangeToArray($pNamedRange = '', $nullValue = null, $calculateFormulas = true, $formatData = true, $returnCellRef = false) {
- $namedRange = PHPExcel_NamedRange::resolveRange($pNamedRange, $this);
- if ($namedRange !== NULL) {
- $pWorkSheet = $namedRange->getWorksheet();
- $pCellRange = $namedRange->getRange();
-
- return $pWorkSheet->rangeToArray( $pCellRange,
- $nullValue, $calculateFormulas, $formatData, $returnCellRef);
- }
-
- throw new Exception('Named Range '.$pNamedRange.' does not exist.');
- }
-
-
- /**
- * Create array from worksheet
- *
- * @param mixed $nullValue Value returned in the array entry if a cell doesn't exist
- * @param boolean $calculateFormulas Should formulas be calculated?
- * @param boolean $formatData Should formatting be applied to cell values?
- * @param boolean $returnCellRef False - Return a simple array of rows and columns indexed by number counting from zero
- * True - Return rows and columns indexed by their actual row and column IDs
- * @return array
- */
- public function toArray($nullValue = null, $calculateFormulas = true, $formatData = true, $returnCellRef = false) {
- // Garbage collect...
- $this->garbageCollect();
-
- // Identify the range that we need to extract from the worksheet
- $maxCol = $this->getHighestColumn();
- $maxRow = $this->getHighestRow();
- // Return
- return $this->rangeToArray( 'A1:'.$maxCol.$maxRow,
- $nullValue, $calculateFormulas, $formatData, $returnCellRef);
- }
-
- /**
- * Get row iterator
- *
- * @param integer $startRow The row number at which to start iterating
- * @return PHPExcel_Worksheet_RowIterator
- */
- public function getRowIterator($startRow = 1) {
- return new PHPExcel_Worksheet_RowIterator($this,$startRow);
- }
-
- /**
- * Run PHPExcel garabage collector.
- *
- * @return PHPExcel_Worksheet
- */
- public function garbageCollect() {
- // Build a reference table from images
-// $imageCoordinates = array();
-// $iterator = $this->getDrawingCollection()->getIterator();
-// while ($iterator->valid()) {
-// $imageCoordinates[$iterator->current()->getCoordinates()] = true;
-//
-// $iterator->next();
-// }
-//
- // Lookup highest column and highest row if cells are cleaned
- $colRow = $this->_cellCollection->getHighestRowAndColumn();
- $highestRow = $colRow['row'];
- $highestColumn = PHPExcel_Cell::columnIndexFromString($colRow['column']);
-
- // Loop through column dimensions
- foreach ($this->_columnDimensions as $dimension) {
- $highestColumn = max($highestColumn,PHPExcel_Cell::columnIndexFromString($dimension->getColumnIndex()));
- }
-
- // Loop through row dimensions
- foreach ($this->_rowDimensions as $dimension) {
- $highestRow = max($highestRow,$dimension->getRowIndex());
- }
-
- // Cache values
- if ($highestColumn < 0) {
- $this->_cachedHighestColumn = 'A';
- } else {
- $this->_cachedHighestColumn = PHPExcel_Cell::stringFromColumnIndex(--$highestColumn);
- }
- $this->_cachedHighestRow = $highestRow;
-
- // Return
- return $this;
- }
-
- /**
- * Get hash code
- *
- * @return string Hash code
- */
- public function getHashCode() {
- if ($this->_dirty) {
- $this->_hash = md5( $this->_title .
- $this->_autoFilter .
- ($this->_protection->isProtectionEnabled() ? 't' : 'f') .
- __CLASS__
- );
- $this->_dirty = false;
- }
- return $this->_hash;
- }
-
- /**
- * Extract worksheet title from range.
- *
- * Example: extractSheetTitle("testSheet!A1") ==> 'A1'
- * Example: extractSheetTitle("'testSheet 1'!A1", true) ==> array('testSheet 1', 'A1');
- *
- * @param string $pRange Range to extract title from
- * @param bool $returnRange Return range? (see example)
- * @return mixed
- */
- public static function extractSheetTitle($pRange, $returnRange = false) {
- // Sheet title included?
- if (($sep = strpos($pRange, '!')) === false) {
- return '';
- }
-
- if ($returnRange) {
- return array( trim(substr($pRange, 0, $sep),"'"),
- substr($pRange, $sep + 1)
- );
- }
-
- return substr($pRange, $sep + 1);
- }
-
- /**
- * Get hyperlink
- *
- * @param string $pCellCoordinate Cell coordinate to get hyperlink for
- */
- public function getHyperlink($pCellCoordinate = 'A1')
- {
- // return hyperlink if we already have one
- if (isset($this->_hyperlinkCollection[$pCellCoordinate])) {
- return $this->_hyperlinkCollection[$pCellCoordinate];
- }
-
- // else create hyperlink
- $this->_hyperlinkCollection[$pCellCoordinate] = new PHPExcel_Cell_Hyperlink();
- return $this->_hyperlinkCollection[$pCellCoordinate];
- }
-
- /**
- * Set hyperlnk
- *
- * @param string $pCellCoordinate Cell coordinate to insert hyperlink
- * @param PHPExcel_Cell_Hyperlink $pHyperlink
- * @return PHPExcel_Worksheet
- */
- public function setHyperlink($pCellCoordinate = 'A1', PHPExcel_Cell_Hyperlink $pHyperlink = null)
- {
- if ($pHyperlink === null) {
- unset($this->_hyperlinkCollection[$pCellCoordinate]);
- } else {
- $this->_hyperlinkCollection[$pCellCoordinate] = $pHyperlink;
- }
- return $this;
- }
-
- /**
- * Hyperlink at a specific coordinate exists?
- *
- * @param string $pCoordinate
- * @return boolean
- */
- public function hyperlinkExists($pCoordinate = 'A1')
- {
- return isset($this->_hyperlinkCollection[$pCoordinate]);
- }
-
- /**
- * Get collection of hyperlinks
- *
- * @return PHPExcel_Cell_Hyperlink[]
- */
- public function getHyperlinkCollection()
- {
- return $this->_hyperlinkCollection;
- }
-
- /**
- * Get data validation
- *
- * @param string $pCellCoordinate Cell coordinate to get data validation for
- */
- public function getDataValidation($pCellCoordinate = 'A1')
- {
- // return data validation if we already have one
- if (isset($this->_dataValidationCollection[$pCellCoordinate])) {
- return $this->_dataValidationCollection[$pCellCoordinate];
- }
-
- // else create data validation
- $this->_dataValidationCollection[$pCellCoordinate] = new PHPExcel_Cell_DataValidation();
- return $this->_dataValidationCollection[$pCellCoordinate];
- }
-
- /**
- * Set data validation
- *
- * @param string $pCellCoordinate Cell coordinate to insert data validation
- * @param PHPExcel_Cell_DataValidation $pDataValidation
- * @return PHPExcel_Worksheet
- */
- public function setDataValidation($pCellCoordinate = 'A1', PHPExcel_Cell_DataValidation $pDataValidation = null)
- {
- if ($pDataValidation === null) {
- unset($this->_dataValidationCollection[$pCellCoordinate]);
- } else {
- $this->_dataValidationCollection[$pCellCoordinate] = $pDataValidation;
- }
- return $this;
- }
-
- /**
- * Data validation at a specific coordinate exists?
- *
- * @param string $pCoordinate
- * @return boolean
- */
- public function dataValidationExists($pCoordinate = 'A1')
- {
- return isset($this->_dataValidationCollection[$pCoordinate]);
- }
-
- /**
- * Get collection of data validations
- *
- * @return PHPExcel_Cell_DataValidation[]
- */
- public function getDataValidationCollection()
- {
- return $this->_dataValidationCollection;
- }
-
- /**
- * Accepts a range, returning it as a range that falls within the current highest row and column of the worksheet
- *
- * @param string $range
- * @return string Adjusted range value
- */
- public function shrinkRangeToFit($range) {
- $maxCol = $this->getHighestColumn();
- $maxRow = $this->getHighestRow();
- $maxCol = PHPExcel_Cell::columnIndexFromString($maxCol);
-
- $rangeBlocks = explode(' ',$range);
- foreach ($rangeBlocks as &$rangeSet) {
- $rangeBoundaries = PHPExcel_Cell::getRangeBoundaries($rangeSet);
-
- if (PHPExcel_Cell::columnIndexFromString($rangeBoundaries[0][0]) > $maxCol) { $rangeBoundaries[0][0] = PHPExcel_Cell::stringFromColumnIndex($maxCol); }
- if ($rangeBoundaries[0][1] > $maxRow) { $rangeBoundaries[0][1] = $maxRow; }
- if (PHPExcel_Cell::columnIndexFromString($rangeBoundaries[1][0]) > $maxCol) { $rangeBoundaries[1][0] = PHPExcel_Cell::stringFromColumnIndex($maxCol); }
- if ($rangeBoundaries[1][1] > $maxRow) { $rangeBoundaries[1][1] = $maxRow; }
- $rangeSet = $rangeBoundaries[0][0].$rangeBoundaries[0][1].':'.$rangeBoundaries[1][0].$rangeBoundaries[1][1];
- }
- unset($rangeSet);
- $stRange = implode(' ',$rangeBlocks);
-
- return $stRange;
- }
-
-
- /**
- * Get tab color
- *
- * @return PHPExcel_Style_Color
- */
- public function getTabColor()
- {
- if ($this->_tabColor === NULL)
- $this->_tabColor = new PHPExcel_Style_Color();
-
- return $this->_tabColor;
- }
-
- /**
- * Reset tab color
- *
- * @return PHPExcel_Worksheet
- */
- public function resetTabColor()
- {
- $this->_tabColor = null;
- unset($this->_tabColor);
-
- return $this;
- }
-
- /**
- * Tab color set?
- *
- * @return boolean
- */
- public function isTabColorSet()
- {
- return ($this->_tabColor !== NULL);
- }
-
- /**
- * Copy worksheet (!= clone!)
- *
- * @return PHPExcel_Worksheet
- */
- public function copy() {
- $copied = clone $this;
-
- return $copied;
- }
-
- /**
- * Implement PHP __clone to create a deep clone, not just a shallow copy.
- */
- public function __clone() {
- foreach ($this as $key => $val) {
- if ($key == '_parent') {
- continue;
- }
-
- if (is_object($val) || (is_array($val))) {
- if ($key == '_cellCollection') {
- $newCollection = clone $this->_cellCollection;
- $newCollection->copyCellCollection($this);
- $this->_cellCollection = $newCollection;
- } elseif ($key == '_drawingCollection') {
- $newCollection = clone $this->_drawingCollection;
- $this->_drawingCollection = $newCollection;
- } elseif (($key == '_autoFilter') && (is_a($this->_autoFilter,'PHPExcel_Worksheet_AutoFilter'))) {
- $newAutoFilter = clone $this->_autoFilter;
- $this->_autoFilter = $newAutoFilter;
- $this->_autoFilter->setParent($this);
- } else {
- $this->{$key} = unserialize(serialize($val));
- }
- }
- }
- }
-}
diff --git a/admin/survey/excel/PHPExcel/Worksheet/AutoFilter.php b/admin/survey/excel/PHPExcel/Worksheet/AutoFilter.php
deleted file mode 100644
index 509aeed..0000000
--- a/admin/survey/excel/PHPExcel/Worksheet/AutoFilter.php
+++ /dev/null
@@ -1,855 +0,0 @@
-<?php
-/**
- * PHPExcel
- *
- * Copyright (c) 2006 - 2012 PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel_Worksheet
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-
-/**
- * PHPExcel_Worksheet_AutoFilter
- *
- * @category PHPExcel
- * @package PHPExcel_Worksheet
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- */
-class PHPExcel_Worksheet_AutoFilter
-{
- /**
- * Autofilter Worksheet
- *
- * @var PHPExcel_Worksheet
- */
- private $_workSheet = NULL;
-
-
- /**
- * Autofilter Range
- *
- * @var string
- */
- private $_range = '';
-
-
- /**
- * Autofilter Column Ruleset
- *
- * @var array of PHPExcel_Worksheet_AutoFilter_Column
- */
- private $_columns = array();
-
-
- /**
- * Create a new PHPExcel_Worksheet_AutoFilter
- */
- public function __construct($pRange = '', PHPExcel_Worksheet $pSheet = NULL)
- {
- $this->_range = $pRange;
- $this->_workSheet = $pSheet;
- }
-
- /**
- * Get AutoFilter Parent Worksheet
- *
- * @return PHPExcel_Worksheet
- */
- public function getParent() {
- return $this->_workSheet;
- }
-
- /**
- * Set AutoFilter Parent Worksheet
- *
- * @param PHPExcel_Worksheet
- * @return PHPExcel_Worksheet_AutoFilter
- */
- public function setParent(PHPExcel_Worksheet $pSheet = NULL) {
- $this->_workSheet = $pSheet;
-
- return $this;
- }
-
- /**
- * Get AutoFilter Range
- *
- * @return string
- */
- public function getRange() {
- return $this->_range;
- }
-
- /**
- * Set AutoFilter Range
- *
- * @param string $pRange Cell range (i.e. A1:E10)
- * @throws PHPExcel_Exception
- * @return PHPExcel_Worksheet_AutoFilter
- */
- public function setRange($pRange = '') {
- // Uppercase coordinate
- $cellAddress = explode('!',strtoupper($pRange));
- if (count($cellAddress) > 1) {
- list($worksheet,$pRange) = $cellAddress;
- }
-
- if (strpos($pRange,':') !== FALSE) {
- $this->_range = $pRange;
- } elseif(empty($pRange)) {
- $this->_range = '';
- } else {
- throw new PHPExcel_Exception('Autofilter must be set on a range of cells.');
- }
-
- if (empty($pRange)) {
- // Discard all column rules
- $this->_columns = array();
- } else {
- // Discard any column rules that are no longer valid within this range
- list($rangeStart,$rangeEnd) = PHPExcel_Cell::rangeBoundaries($this->_range);
- foreach($this->_columns as $key => $value) {
- $colIndex = PHPExcel_Cell::columnIndexFromString($key);
- if (($rangeStart[0] > $colIndex) || ($rangeEnd[0] < $colIndex)) {
- unset($this->_columns[$key]);
- }
- }
- }
-
- return $this;
- }
-
- /**
- * Get all AutoFilter Columns
- *
- * @throws PHPExcel_Exception
- * @return array of PHPExcel_Worksheet_AutoFilter_Column
- */
- public function getColumns() {
- return $this->_columns;
- }
-
- /**
- * Validate that the specified column is in the AutoFilter range
- *
- * @param string $column Column name (e.g. A)
- * @throws PHPExcel_Exception
- * @return integer The column offset within the autofilter range
- */
- public function testColumnInRange($column) {
- if (empty($this->_range)) {
- throw new PHPExcel_Exception("No autofilter range is defined.");
- }
-
- $columnIndex = PHPExcel_Cell::columnIndexFromString($column);
- list($rangeStart,$rangeEnd) = PHPExcel_Cell::rangeBoundaries($this->_range);
- if (($rangeStart[0] > $columnIndex) || ($rangeEnd[0] < $columnIndex)) {
- throw new PHPExcel_Exception("Column is outside of current autofilter range.");
- }
-
- return $columnIndex - $rangeStart[0];
- }
-
- /**
- * Get a specified AutoFilter Column Offset within the defined AutoFilter range
- *
- * @param string $pColumn Column name (e.g. A)
- * @throws PHPExcel_Exception
- * @return integer The offset of the specified column within the autofilter range
- */
- public function getColumnOffset($pColumn) {
- return $this->testColumnInRange($pColumn);
- }
-
- /**
- * Get a specified AutoFilter Column
- *
- * @param string $pColumn Column name (e.g. A)
- * @throws PHPExcel_Exception
- * @return PHPExcel_Worksheet_AutoFilter_Column
- */
- public function getColumn($pColumn) {
- $this->testColumnInRange($pColumn);
-
- if (!isset($this->_columns[$pColumn])) {
- $this->_columns[$pColumn] = new PHPExcel_Worksheet_AutoFilter_Column($pColumn, $this);
- }
-
- return $this->_columns[$pColumn];
- }
-
- /**
- * Get a specified AutoFilter Column by it's offset
- *
- * @param integer $pColumnOffset Column offset within range (starting from 0)
- * @throws PHPExcel_Exception
- * @return PHPExcel_Worksheet_AutoFilter_Column
- */
- public function getColumnByOffset($pColumnOffset = 0) {
- list($rangeStart,$rangeEnd) = PHPExcel_Cell::rangeBoundaries($this->_range);
- $pColumn = PHPExcel_Cell::stringFromColumnIndex($rangeStart[0] + $pColumnOffset - 1);
-
- return $this->getColumn($pColumn);
- }
-
- /**
- * Set AutoFilter
- *
- * @param PHPExcel_Worksheet_AutoFilter_Column|string $pColumn
- * A simple string containing a Column ID like 'A' is permitted
- * @throws PHPExcel_Exception
- * @return PHPExcel_Worksheet_AutoFilter
- */
- public function setColumn($pColumn)
- {
- if ((is_string($pColumn)) && (!empty($pColumn))) {
- $column = $pColumn;
- } elseif(is_object($pColumn) && ($pColumn instanceof PHPExcel_Worksheet_AutoFilter_Column)) {
- $column = $pColumn->getColumnIndex();
- } else {
- throw new PHPExcel_Exception("Column is not within the autofilter range.");
- }
- $this->testColumnInRange($column);
-
- if (is_string($pColumn)) {
- $this->_columns[$pColumn] = new PHPExcel_Worksheet_AutoFilter_Column($pColumn, $this);
- } elseif(is_object($pColumn) && ($pColumn instanceof PHPExcel_Worksheet_AutoFilter_Column)) {
- $pColumn->setParent($this);
- $this->_columns[$column] = $pColumn;
- }
- ksort($this->_columns);
-
- return $this;
- }
-
- /**
- * Clear a specified AutoFilter Column
- *
- * @param string $pColumn Column name (e.g. A)
- * @throws PHPExcel_Exception
- * @return PHPExcel_Worksheet_AutoFilter
- */
- public function clearColumn($pColumn) {
- $this->testColumnInRange($pColumn);
-
- if (isset($this->_columns[$pColumn])) {
- unset($this->_columns[$pColumn]);
- }
-
- return $this;
- }
-
- /**
- * Shift an AutoFilter Column Rule to a different column
- *
- * Note: This method bypasses validation of the destination column to ensure it is within this AutoFilter range.
- * Nor does it verify whether any column rule already exists at $toColumn, but will simply overrideany existing value.
- * Use with caution.
- *
- * @param string $fromColumn Column name (e.g. A)
- * @param string $toColumn Column name (e.g. B)
- * @return PHPExcel_Worksheet_AutoFilter
- */
- public function shiftColumn($fromColumn=NULL,$toColumn=NULL) {
- $fromColumn = strtoupper($fromColumn);
- $toColumn = strtoupper($toColumn);
-
- if (($fromColumn !== NULL) && (isset($this->_columns[$fromColumn])) && ($toColumn !== NULL)) {
- $this->_columns[$fromColumn]->setParent();
- $this->_columns[$fromColumn]->setColumnIndex($toColumn);
- $this->_columns[$toColumn] = $this->_columns[$fromColumn];
- $this->_columns[$toColumn]->setParent($this);
- unset($this->_columns[$fromColumn]);
-
- ksort($this->_columns);
- }
-
- return $this;
- }
-
-
- /**
- * Test if cell value is in the defined set of values
- *
- * @param mixed $cellValue
- * @param mixed[] $dataSet
- * @return boolean
- */
- private static function _filterTestInSimpleDataSet($cellValue,$dataSet)
- {
- $dataSetValues = $dataSet['filterValues'];
- $blanks = $dataSet['blanks'];
- if (($cellValue == '') || ($cellValue === NULL)) {
- return $blanks;
- }
- return in_array($cellValue,$dataSetValues);
- }
-
- /**
- * Test if cell value is in the defined set of Excel date values
- *
- * @param mixed $cellValue
- * @param mixed[] $dataSet
- * @return boolean
- */
- private static function _filterTestInDateGroupSet($cellValue,$dataSet)
- {
- $dateSet = $dataSet['filterValues'];
- $blanks = $dataSet['blanks'];
- if (($cellValue == '') || ($cellValue === NULL)) {
- return $blanks;
- }
-
- if (is_numeric($cellValue)) {
- $dateValue = PHPExcel_Shared_Date::ExcelToPHP($cellValue);
- if ($cellValue < 1) {
- // Just the time part
- $dtVal = date('His',$dateValue);
- $dateSet = $dateSet['time'];
- } elseif($cellValue == floor($cellValue)) {
- // Just the date part
- $dtVal = date('Ymd',$dateValue);
- $dateSet = $dateSet['date'];
- } else {
- // date and time parts
- $dtVal = date('YmdHis',$dateValue);
- $dateSet = $dateSet['dateTime'];
- }
- foreach($dateSet as $dateValue) {
- // Use of substr to extract value at the appropriate group level
- if (substr($dtVal,0,strlen($dateValue)) == $dateValue)
- return TRUE;
- }
- }
-
- return FALSE;
- }
-
- /**
- * Test if cell value is within a set of values defined by a ruleset
- *
- * @param mixed $cellValue
- * @param mixed[] $dataSet
- * @return boolean
- */
- private static function _filterTestInCustomDataSet($cellValue,$ruleSet)
- {
- $dataSet = $ruleSet['filterRules'];
- $join = $ruleSet['join'];
- $customRuleForBlanks = isset($ruleSet['customRuleForBlanks']) ? $ruleSet['customRuleForBlanks'] : FALSE;
-
- if (!$customRuleForBlanks) {
- // Blank cells are always ignored, so return a FALSE
- if (($cellValue == '') || ($cellValue === NULL)) {
- return FALSE;
- }
- }
- $returnVal = ($join == PHPExcel_Worksheet_AutoFilter_Column::AUTOFILTER_COLUMN_JOIN_AND);
- foreach($dataSet as $rule) {
- if (is_numeric($rule['value'])) {
- // Numeric values are tested using the appropriate operator
- switch ($rule['operator']) {
- case PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_COLUMN_RULE_EQUAL :
- $retVal = ($cellValue == $rule['value']);
- break;
- case PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_COLUMN_RULE_NOTEQUAL :
- $retVal = ($cellValue != $rule['value']);
- break;
- case PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_COLUMN_RULE_GREATERTHAN :
- $retVal = ($cellValue > $rule['value']);
- break;
- case PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_COLUMN_RULE_GREATERTHANOREQUAL :
- $retVal = ($cellValue >= $rule['value']);
- break;
- case PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_COLUMN_RULE_LESSTHAN :
- $retVal = ($cellValue < $rule['value']);
- break;
- case PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_COLUMN_RULE_LESSTHANOREQUAL :
- $retVal = ($cellValue <= $rule['value']);
- break;
- }
- } elseif($rule['value'] == '') {
- switch ($rule['operator']) {
- case PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_COLUMN_RULE_EQUAL :
- $retVal = (($cellValue == '') || ($cellValue === NULL));
- break;
- case PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_COLUMN_RULE_NOTEQUAL :
- $retVal = (($cellValue != '') && ($cellValue !== NULL));
- break;
- default :
- $retVal = TRUE;
- break;
- }
- } else {
- // String values are always tested for equality, factoring in for wildcards (hence a regexp test)
- $retVal = preg_match('/^'.$rule['value'].'$/i',$cellValue);
- }
- // If there are multiple conditions, then we need to test both using the appropriate join operator
- switch ($join) {
- case PHPExcel_Worksheet_AutoFilter_Column::AUTOFILTER_COLUMN_JOIN_OR :
- $returnVal = $returnVal || $retVal;
- // Break as soon as we have a TRUE match for OR joins,
- // to avoid unnecessary additional code execution
- if ($returnVal)
- return $returnVal;
- break;
- case PHPExcel_Worksheet_AutoFilter_Column::AUTOFILTER_COLUMN_JOIN_AND :
- $returnVal = $returnVal && $retVal;
- break;
- }
- }
-
- return $returnVal;
- }
-
- /**
- * Test if cell date value is matches a set of values defined by a set of months
- *
- * @param mixed $cellValue
- * @param mixed[] $dataSet
- * @return boolean
- */
- private static function _filterTestInPeriodDateSet($cellValue,$monthSet)
- {
- // Blank cells are always ignored, so return a FALSE
- if (($cellValue == '') || ($cellValue === NULL)) {
- return FALSE;
- }
-
- if (is_numeric($cellValue)) {
- $dateValue = date('m',PHPExcel_Shared_Date::ExcelToPHP($cellValue));
- if (in_array($dateValue,$monthSet)) {
- return TRUE;
- }
- }
-
- return FALSE;
- }
-
- /**
- * Search/Replace arrays to convert Excel wildcard syntax to a regexp syntax for preg_matching
- *
- * @var array
- */
- private static $_fromReplace = array('\*', '\?', '~~', '~.*', '~.?');
- private static $_toReplace = array('.*', '.', '~', '\*', '\?');
-
-
- /**
- * Convert a dynamic rule daterange to a custom filter range expression for ease of calculation
- *
- * @param string $dynamicRuleType
- * @param PHPExcel_Worksheet_AutoFilter_Column $filterColumn
- * @return mixed[]
- */
- private function _dynamicFilterDateRange($dynamicRuleType, &$filterColumn)
- {
- $rDateType = PHPExcel_Calculation_Functions::getReturnDateType();
- PHPExcel_Calculation_Functions::setReturnDateType(PHPExcel_Calculation_Functions::RETURNDATE_PHP_NUMERIC);
- $val = $maxVal = NULL;
-
- $ruleValues = array();
- $baseDate = PHPExcel_Calculation_DateTime::DATENOW();
- // Calculate start/end dates for the required date range based on current date
- switch ($dynamicRuleType) {
- case PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DYNAMIC_LASTWEEK :
- $baseDate = strtotime('-7 days',$baseDate);
- break;
- case PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DYNAMIC_NEXTWEEK :
- $baseDate = strtotime('-7 days',$baseDate);
- break;
- case PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DYNAMIC_LASTMONTH :
- $baseDate = strtotime('-1 month',gmmktime(0,0,0,1,date('m',$baseDate),date('Y',$baseDate)));
- break;
- case PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DYNAMIC_NEXTMONTH :
- $baseDate = strtotime('+1 month',gmmktime(0,0,0,1,date('m',$baseDate),date('Y',$baseDate)));
- break;
- case PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DYNAMIC_LASTQUARTER :
- $baseDate = strtotime('-3 month',gmmktime(0,0,0,1,date('m',$baseDate),date('Y',$baseDate)));
- break;
- case PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DYNAMIC_NEXTQUARTER :
- $baseDate = strtotime('+3 month',gmmktime(0,0,0,1,date('m',$baseDate),date('Y',$baseDate)));
- break;
- case PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DYNAMIC_LASTYEAR :
- $baseDate = strtotime('-1 year',gmmktime(0,0,0,1,date('m',$baseDate),date('Y',$baseDate)));
- break;
- case PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DYNAMIC_NEXTYEAR :
- $baseDate = strtotime('+1 year',gmmktime(0,0,0,1,date('m',$baseDate),date('Y',$baseDate)));
- break;
- }
-
- switch ($dynamicRuleType) {
- case PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DYNAMIC_TODAY :
- case PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DYNAMIC_YESTERDAY :
- case PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DYNAMIC_TOMORROW :
- $maxVal = (int) PHPExcel_Shared_Date::PHPtoExcel(strtotime('+1 day',$baseDate));
- $val = (int) PHPExcel_Shared_Date::PHPToExcel($baseDate);
- break;
- case PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DYNAMIC_YEARTODATE :
- $maxVal = (int) PHPExcel_Shared_Date::PHPtoExcel(strtotime('+1 day',$baseDate));
- $val = (int) PHPExcel_Shared_Date::PHPToExcel(gmmktime(0,0,0,1,1,date('Y',$baseDate)));
- break;
- case PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DYNAMIC_THISYEAR :
- case PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DYNAMIC_LASTYEAR :
- case PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DYNAMIC_NEXTYEAR :
- $maxVal = (int) PHPExcel_Shared_Date::PHPToExcel(gmmktime(0,0,0,31,12,date('Y',$baseDate)));
- ++$maxVal;
- $val = (int) PHPExcel_Shared_Date::PHPToExcel(gmmktime(0,0,0,1,1,date('Y',$baseDate)));
- break;
- case PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DYNAMIC_THISQUARTER :
- case PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DYNAMIC_LASTQUARTER :
- case PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DYNAMIC_NEXTQUARTER :
- $thisMonth = date('m',$baseDate);
- $thisQuarter = floor(--$thisMonth / 3);
- $maxVal = (int) PHPExcel_Shared_Date::PHPtoExcel(gmmktime(0,0,0,date('t',$baseDate),(1+$thisQuarter)*3,date('Y',$baseDate)));
- ++$maxVal;
- $val = (int) PHPExcel_Shared_Date::PHPToExcel(gmmktime(0,0,0,1,1+$thisQuarter*3,date('Y',$baseDate)));
- break;
- case PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DYNAMIC_THISMONTH :
- case PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DYNAMIC_LASTMONTH :
- case PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DYNAMIC_NEXTMONTH :
- $maxVal = (int) PHPExcel_Shared_Date::PHPtoExcel(gmmktime(0,0,0,date('t',$baseDate),date('m',$baseDate),date('Y',$baseDate)));
- ++$maxVal;
- $val = (int) PHPExcel_Shared_Date::PHPToExcel(gmmktime(0,0,0,1,date('m',$baseDate),date('Y',$baseDate)));
- break;
- case PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DYNAMIC_THISWEEK :
- case PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DYNAMIC_LASTWEEK :
- case PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DYNAMIC_NEXTWEEK :
- $dayOfWeek = date('w',$baseDate);
- $val = (int) PHPExcel_Shared_Date::PHPToExcel($baseDate) - $dayOfWeek;
- $maxVal = $val + 7;
- break;
- }
-
- switch ($dynamicRuleType) {
- // Adjust Today dates for Yesterday and Tomorrow
- case PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DYNAMIC_YESTERDAY :
- --$maxVal;
- --$val;
- break;
- case PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DYNAMIC_TOMORROW :
- ++$maxVal;
- ++$val;
- break;
- }
-
- // Set the filter column rule attributes ready for writing
- $filterColumn->setAttributes(array( 'val' => $val,
- 'maxVal' => $maxVal
- )
- );
-
- // Set the rules for identifying rows for hide/show
- $ruleValues[] = array( 'operator' => PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_COLUMN_RULE_GREATERTHANOREQUAL,
- 'value' => $val
- );
- $ruleValues[] = array( 'operator' => PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_COLUMN_RULE_LESSTHAN,
- 'value' => $maxVal
- );
- PHPExcel_Calculation_Functions::setReturnDateType($rDateType);
-
- return array(
- 'method' => '_filterTestInCustomDataSet',
- 'arguments' => array( 'filterRules' => $ruleValues,
- 'join' => PHPExcel_Worksheet_AutoFilter_Column::AUTOFILTER_COLUMN_JOIN_AND
- )
- );
- }
-
- private function _calculateTopTenValue($columnID,$startRow,$endRow,$ruleType,$ruleValue) {
- $range = $columnID.$startRow.':'.$columnID.$endRow;
- $dataValues = PHPExcel_Calculation_Functions::flattenArray(
- $this->_workSheet->rangeToArray($range,NULL,TRUE,FALSE)
- );
-
- $dataValues = array_filter($dataValues);
- if ($ruleType == PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_COLUMN_RULE_TOPTEN_TOP) {
- rsort($dataValues);
- } else {
- sort($dataValues);
- }
-
- return array_pop(array_slice($dataValues,0,$ruleValue));
- }
-
- /**
- * Apply the AutoFilter rules to the AutoFilter Range
- *
- * @throws PHPExcel_Exception
- * @return PHPExcel_Worksheet_AutoFilter
- */
- public function showHideRows()
- {
- list($rangeStart,$rangeEnd) = PHPExcel_Cell::rangeBoundaries($this->_range);
-
- // The heading row should always be visible
-// echo 'AutoFilter Heading Row ',$rangeStart[1],' is always SHOWN',PHP_EOL;
- $this->_workSheet->getRowDimension($rangeStart[1])->setVisible(TRUE);
-
- $columnFilterTests = array();
- foreach($this->_columns as $columnID => $filterColumn) {
- $rules = $filterColumn->getRules();
- switch ($filterColumn->getFilterType()) {
- case PHPExcel_Worksheet_AutoFilter_Column::AUTOFILTER_FILTERTYPE_FILTER :
- $ruleValues = array();
- // Build a list of the filter value selections
- foreach($rules as $rule) {
- $ruleType = $rule->getRuleType();
- $ruleValues[] = $rule->getValue();
- }
- // Test if we want to include blanks in our filter criteria
- $blanks = FALSE;
- $ruleDataSet = array_filter($ruleValues);
- if (count($ruleValues) != count($ruleDataSet))
- $blanks = TRUE;
- if ($ruleType == PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_FILTER) {
- // Filter on absolute values
- $columnFilterTests[$columnID] = array(
- 'method' => '_filterTestInSimpleDataSet',
- 'arguments' => array( 'filterValues' => $ruleDataSet,
- 'blanks' => $blanks
- )
- );
- } else {
- // Filter on date group values
- $arguments = array();
- foreach($ruleDataSet as $ruleValue) {
- $date = $time = '';
- if ((isset($ruleValue[PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DATEGROUP_YEAR])) &&
- ($ruleValue[PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DATEGROUP_YEAR] !== ''))
- $date .= sprintf('%04d',$ruleValue[PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DATEGROUP_YEAR]);
- if ((isset($ruleValue[PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DATEGROUP_MONTH])) &&
- ($ruleValue[PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DATEGROUP_MONTH] != ''))
- $date .= sprintf('%02d',$ruleValue[PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DATEGROUP_MONTH]);
- if ((isset($ruleValue[PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DATEGROUP_DAY])) &&
- ($ruleValue[PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DATEGROUP_DAY] !== ''))
- $date .= sprintf('%02d',$ruleValue[PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DATEGROUP_DAY]);
- if ((isset($ruleValue[PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DATEGROUP_HOUR])) &&
- ($ruleValue[PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DATEGROUP_HOUR] !== ''))
- $time .= sprintf('%02d',$ruleValue[PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DATEGROUP_HOUR]);
- if ((isset($ruleValue[PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DATEGROUP_MINUTE])) &&
- ($ruleValue[PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DATEGROUP_MINUTE] !== ''))
- $time .= sprintf('%02d',$ruleValue[PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DATEGROUP_MINUTE]);
- if ((isset($ruleValue[PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DATEGROUP_SECOND])) &&
- ($ruleValue[PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DATEGROUP_SECOND] !== ''))
- $time .= sprintf('%02d',$ruleValue[PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DATEGROUP_SECOND]);
- $dateTime = $date . $time;
- $arguments['date'][] = $date;
- $arguments['time'][] = $time;
- $arguments['dateTime'][] = $dateTime;
- }
- // Remove empty elements
- $arguments['date'] = array_filter($arguments['date']);
- $arguments['time'] = array_filter($arguments['time']);
- $arguments['dateTime'] = array_filter($arguments['dateTime']);
- $columnFilterTests[$columnID] = array(
- 'method' => '_filterTestInDateGroupSet',
- 'arguments' => array( 'filterValues' => $arguments,
- 'blanks' => $blanks
- )
- );
- }
- break;
- case PHPExcel_Worksheet_AutoFilter_Column::AUTOFILTER_FILTERTYPE_CUSTOMFILTER :
- $customRuleForBlanks = FALSE;
- $ruleValues = array();
- // Build a list of the filter value selections
- foreach($rules as $rule) {
- $ruleType = $rule->getRuleType();
- $ruleValue = $rule->getValue();
- if (!is_numeric($ruleValue)) {
- // Convert to a regexp allowing for regexp reserved characters, wildcards and escaped wildcards
- $ruleValue = preg_quote($ruleValue);
- $ruleValue = str_replace(self::$_fromReplace,self::$_toReplace,$ruleValue);
- if (trim($ruleValue) == '') {
- $customRuleForBlanks = TRUE;
- $ruleValue = trim($ruleValue);
- }
- }
- $ruleValues[] = array( 'operator' => $rule->getOperator(),
- 'value' => $ruleValue
- );
- }
- $join = $filterColumn->getJoin();
- $columnFilterTests[$columnID] = array(
- 'method' => '_filterTestInCustomDataSet',
- 'arguments' => array( 'filterRules' => $ruleValues,
- 'join' => $join,
- 'customRuleForBlanks' => $customRuleForBlanks
- )
- );
- break;
- case PHPExcel_Worksheet_AutoFilter_Column::AUTOFILTER_FILTERTYPE_DYNAMICFILTER :
- $ruleValues = array();
- foreach($rules as $rule) {
- // We should only ever have one Dynamic Filter Rule anyway
- $dynamicRuleType = $rule->getGrouping();
- if (($dynamicRuleType == PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DYNAMIC_ABOVEAVERAGE) ||
- ($dynamicRuleType == PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DYNAMIC_BELOWAVERAGE)) {
- // Number (Average) based
- // Calculate the average
- $averageFormula = '=AVERAGE('.$columnID.($rangeStart[1]+1).':'.$columnID.$rangeEnd[1].')';
- $average = PHPExcel_Calculation::getInstance()->calculateFormula($averageFormula,NULL,$this->_workSheet->getCell('A1'));
- // Set above/below rule based on greaterThan or LessTan
- $operator = ($dynamicRuleType === PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DYNAMIC_ABOVEAVERAGE)
- ? PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_COLUMN_RULE_GREATERTHAN
- : PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_COLUMN_RULE_LESSTHAN;
- $ruleValues[] = array( 'operator' => $operator,
- 'value' => $average
- );
- $columnFilterTests[$columnID] = array(
- 'method' => '_filterTestInCustomDataSet',
- 'arguments' => array( 'filterRules' => $ruleValues,
- 'join' => PHPExcel_Worksheet_AutoFilter_Column::AUTOFILTER_COLUMN_JOIN_OR
- )
- );
- } else {
- // Date based
- if ($dynamicRuleType{0} == 'M' || $dynamicRuleType{0} == 'Q') {
- // Month or Quarter
- list($periodType,$period) = sscanf($dynamicRuleType,'%[A-Z]%d');
- if ($periodType == 'M') {
- $ruleValues = array($period);
- } else {
- --$period;
- $periodEnd = (1+$period)*3;
- $periodStart = 1+$period*3;
- $ruleValues = range($periodStart,periodEnd);
- }
- $columnFilterTests[$columnID] = array(
- 'method' => '_filterTestInPeriodDateSet',
- 'arguments' => $ruleValues
- );
- $filterColumn->setAttributes(array());
- } else {
- // Date Range
- $columnFilterTests[$columnID] = $this->_dynamicFilterDateRange($dynamicRuleType, $filterColumn);
- break;
- }
- }
- }
- break;
- case PHPExcel_Worksheet_AutoFilter_Column::AUTOFILTER_FILTERTYPE_TOPTENFILTER :
- $ruleValues = array();
- $dataRowCount = $rangeEnd[1] - $rangeStart[1];
- foreach($rules as $rule) {
- // We should only ever have one Dynamic Filter Rule anyway
- $toptenRuleType = $rule->getGrouping();
- $ruleValue = $rule->getValue();
- $ruleOperator = $rule->getOperator();
- }
- if ($ruleOperator === PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_COLUMN_RULE_TOPTEN_PERCENT) {
- $ruleValue = floor($ruleValue * ($dataRowCount / 100));
- }
- if ($ruleValue < 1) $ruleValue = 1;
- if ($ruleValue > 500) $ruleValue = 500;
-
- $maxVal = $this->_calculateTopTenValue($columnID,$rangeStart[1]+1,$rangeEnd[1],$toptenRuleType,$ruleValue);
-
- $operator = ($toptenRuleType == PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_COLUMN_RULE_TOPTEN_TOP)
- ? PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_COLUMN_RULE_GREATERTHANOREQUAL
- : PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_COLUMN_RULE_LESSTHANOREQUAL;
- $ruleValues[] = array( 'operator' => $operator,
- 'value' => $maxVal
- );
- $columnFilterTests[$columnID] = array(
- 'method' => '_filterTestInCustomDataSet',
- 'arguments' => array( 'filterRules' => $ruleValues,
- 'join' => PHPExcel_Worksheet_AutoFilter_Column::AUTOFILTER_COLUMN_JOIN_OR
- )
- );
- $filterColumn->setAttributes(
- array('maxVal' => $maxVal)
- );
- break;
- }
- }
-
-// echo 'Column Filter Test CRITERIA',PHP_EOL;
-// var_dump($columnFilterTests);
-//
- // Execute the column tests for each row in the autoFilter range to determine show/hide,
- for ($row = $rangeStart[1]+1; $row <= $rangeEnd[1]; ++$row) {
-// echo 'Testing Row = ',$row,PHP_EOL;
- $result = TRUE;
- foreach($columnFilterTests as $columnID => $columnFilterTest) {
-// echo 'Testing cell ',$columnID.$row,PHP_EOL;
- $cellValue = $this->_workSheet->getCell($columnID.$row)->getCalculatedValue();
-// echo 'Value is ',$cellValue,PHP_EOL;
- // Execute the filter test
- $result = $result &&
- call_user_func_array(
- array('PHPExcel_Worksheet_AutoFilter',$columnFilterTest['method']),
- array(
- $cellValue,
- $columnFilterTest['arguments']
- )
- );
-// echo (($result) ? 'VALID' : 'INVALID'),PHP_EOL;
- // If filter test has resulted in FALSE, exit the loop straightaway rather than running any more tests
- if (!$result)
- break;
- }
- // Set show/hide for the row based on the result of the autoFilter result
-// echo (($result) ? 'SHOW' : 'HIDE'),PHP_EOL;
- $this->_workSheet->getRowDimension($row)->setVisible($result);
- }
-
- return $this;
- }
-
-
- /**
- * Implement PHP __clone to create a deep clone, not just a shallow copy.
- */
- public function __clone() {
- $vars = get_object_vars($this);
- foreach ($vars as $key => $value) {
- if (is_object($value)) {
- if ($key == '_workSheet') {
- // Detach from worksheet
- $this->$key = NULL;
- } else {
- $this->$key = clone $value;
- }
- } elseif ((is_array($value)) && ($key == '_columns')) {
- // The columns array of PHPExcel_Worksheet_AutoFilter objects
- $this->$key = array();
- foreach ($value as $k => $v) {
- $this->$key[$k] = clone $v;
- // attach the new cloned Column to this new cloned Autofilter object
- $this->$key[$k]->setParent($this);
- }
- } else {
- $this->$key = $value;
- }
- }
- }
-
- /**
- * toString method replicates previous behavior by returning the range if object is
- * referenced as a property of its parent.
- */
- public function __toString() {
- return (string) $this->_range;
- }
-
-}
diff --git a/admin/survey/excel/PHPExcel/Worksheet/AutoFilter/Column.php b/admin/survey/excel/PHPExcel/Worksheet/AutoFilter/Column.php
deleted file mode 100644
index d16fbe9..0000000
--- a/admin/survey/excel/PHPExcel/Worksheet/AutoFilter/Column.php
+++ /dev/null
@@ -1,381 +0,0 @@
-<?php
-/**
- * PHPExcel
- *
- * Copyright (c) 2006 - 2012 PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel_Worksheet
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-
-/**
- * PHPExcel_Worksheet_AutoFilter_Column
- *
- * @category PHPExcel
- * @package PHPExcel_Worksheet
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- */
-class PHPExcel_Worksheet_AutoFilter_Column
-{
- const AUTOFILTER_FILTERTYPE_FILTER = 'filters';
- const AUTOFILTER_FILTERTYPE_CUSTOMFILTER = 'customFilters';
- // Supports no more than 2 rules, with an And/Or join criteria
- // if more than 1 rule is defined
- const AUTOFILTER_FILTERTYPE_DYNAMICFILTER = 'dynamicFilter';
- // Even though the filter rule is constant, the filtered data can vary
- // e.g. filtered by date = TODAY
- const AUTOFILTER_FILTERTYPE_TOPTENFILTER = 'top10';
-
- private static $_filterTypes = array(
- // Currently we're not handling
- // colorFilter
- // extLst
- // iconFilter
- self::AUTOFILTER_FILTERTYPE_FILTER,
- self::AUTOFILTER_FILTERTYPE_CUSTOMFILTER,
- self::AUTOFILTER_FILTERTYPE_DYNAMICFILTER,
- self::AUTOFILTER_FILTERTYPE_TOPTENFILTER,
- );
-
- /* Multiple Rule Connections */
- const AUTOFILTER_COLUMN_JOIN_AND = 'and';
- const AUTOFILTER_COLUMN_JOIN_OR = 'or';
-
- private static $_ruleJoins = array(
- self::AUTOFILTER_COLUMN_JOIN_AND,
- self::AUTOFILTER_COLUMN_JOIN_OR,
- );
-
- /**
- * Autofilter
- *
- * @var PHPExcel_Worksheet_AutoFilter
- */
- private $_parent = NULL;
-
-
- /**
- * Autofilter Column Index
- *
- * @var string
- */
- private $_columnIndex = '';
-
-
- /**
- * Autofilter Column Filter Type
- *
- * @var string
- */
- private $_filterType = self::AUTOFILTER_FILTERTYPE_FILTER;
-
-
- /**
- * Autofilter Multiple Rules And/Or
- *
- * @var string
- */
- private $_join = self::AUTOFILTER_COLUMN_JOIN_OR;
-
-
- /**
- * Autofilter Column Rules
- *
- * @var array of PHPExcel_Worksheet_AutoFilter_Column_Rule
- */
- private $_ruleset = array();
-
-
- /**
- * Autofilter Column Dynamic Attributes
- *
- * @var array of mixed
- */
- private $_attributes = array();
-
-
- /**
- * Create a new PHPExcel_Worksheet_AutoFilter_Column
- */
- public function __construct($pColumn, PHPExcel_Worksheet_AutoFilter $pParent = NULL)
- {
- $this->_columnIndex = $pColumn;
- $this->_parent = $pParent;
- }
-
- /**
- * Get AutoFilter Column Index
- *
- * @return string
- */
- public function getColumnIndex() {
- return $this->_columnIndex;
- }
-
- /**
- * Set AutoFilter Column Index
- *
- * @param string $pColumn Column (e.g. A)
- * @throws Exception
- * @return PHPExcel_Worksheet_AutoFilter_Column
- */
- public function setColumnIndex($pColumn) {
- // Uppercase coordinate
- $pColumn = strtoupper($pColumn);
- if ($this->_parent !== NULL) {
- $this->_parent->testColumnInRange($pColumn);
- }
-
- $this->_columnIndex = $pColumn;
-
- return $this;
- }
-
- /**
- * Get this Column's AutoFilter Parent
- *
- * @return PHPExcel_Worksheet_AutoFilter
- */
- public function getParent() {
- return $this->_parent;
- }
-
- /**
- * Set this Column's AutoFilter Parent
- *
- * @param PHPExcel_Worksheet_AutoFilter
- * @return PHPExcel_Worksheet_AutoFilter_Column
- */
- public function setParent(PHPExcel_Worksheet_AutoFilter $pParent = NULL) {
- $this->_parent = $pParent;
-
- return $this;
- }
-
- /**
- * Get AutoFilter Type
- *
- * @return string
- */
- public function getFilterType() {
- return $this->_filterType;
- }
-
- /**
- * Set AutoFilter Type
- *
- * @param string $pFilterType
- * @throws Exception
- * @return PHPExcel_Worksheet_AutoFilter_Column
- */
- public function setFilterType($pFilterType = self::AUTOFILTER_FILTERTYPE_FILTER) {
- if (!in_array($pFilterType,self::$_filterTypes)) {
- throw new PHPExcel_Exception('Invalid filter type for column AutoFilter.');
- }
-
- $this->_filterType = $pFilterType;
-
- return $this;
- }
-
- /**
- * Get AutoFilter Multiple Rules And/Or Join
- *
- * @return string
- */
- public function getJoin() {
- return $this->_join;
- }
-
- /**
- * Set AutoFilter Multiple Rules And/Or
- *
- * @param string $pJoin And/Or
- * @throws Exception
- * @return PHPExcel_Worksheet_AutoFilter_Column
- */
- public function setJoin($pJoin = self::AUTOFILTER_COLUMN_JOIN_OR) {
- // Lowercase And/Or
- $pJoin = strtolower($pJoin);
- if (!in_array($pJoin,self::$_ruleJoins)) {
- throw new PHPExcel_Exception('Invalid rule connection for column AutoFilter.');
- }
-
- $this->_join = $pJoin;
-
- return $this;
- }
-
- /**
- * Set AutoFilter Attributes
- *
- * @param string[] $pAttributes
- * @throws Exception
- * @return PHPExcel_Worksheet_AutoFilter_Column
- */
- public function setAttributes($pAttributes = array()) {
- $this->_attributes = $pAttributes;
-
- return $this;
- }
-
- /**
- * Set An AutoFilter Attribute
- *
- * @param string $pName Attribute Name
- * @param string $pValue Attribute Value
- * @throws Exception
- * @return PHPExcel_Worksheet_AutoFilter_Column
- */
- public function setAttribute($pName, $pValue) {
- $this->_attributes[$pName] = $pValue;
-
- return $this;
- }
-
- /**
- * Get AutoFilter Column Attributes
- *
- * @return string
- */
- public function getAttributes() {
- return $this->_attributes;
- }
-
- /**
- * Get specific AutoFilter Column Attribute
- *
- * @param string $pName Attribute Name
- * @return string
- */
- public function getAttribute($pName) {
- if (isset($this->_attributes[$pName]))
- return $this->_attributes[$pName];
- return NULL;
- }
-
- /**
- * Get all AutoFilter Column Rules
- *
- * @throws PHPExcel_Exception
- * @return array of PHPExcel_Worksheet_AutoFilter_Column_Rule
- */
- public function getRules() {
- return $this->_ruleset;
- }
-
- /**
- * Get a specified AutoFilter Column Rule
- *
- * @param integer $pIndex Rule index in the ruleset array
- * @return PHPExcel_Worksheet_AutoFilter_Column_Rule
- */
- public function getRule($pIndex) {
- if (!isset($this->_ruleset[$pIndex])) {
- $this->_ruleset[$pIndex] = new PHPExcel_Worksheet_AutoFilter_Column_Rule($this);
- }
- return $this->_ruleset[$pIndex];
- }
-
- /**
- * Create a new AutoFilter Column Rule in the ruleset
- *
- * @return PHPExcel_Worksheet_AutoFilter_Column_Rule
- */
- public function createRule() {
- $this->_ruleset[] = new PHPExcel_Worksheet_AutoFilter_Column_Rule($this);
-
- return end($this->_ruleset);
- }
-
- /**
- * Add a new AutoFilter Column Rule to the ruleset
- *
- * @param PHPExcel_Worksheet_AutoFilter_Column_Rule $pRule
- * @param boolean $returnRule Flag indicating whether the rule object or the column object should be returned
- * @return PHPExcel_Worksheet_AutoFilter_Column|PHPExcel_Worksheet_AutoFilter_Column_Rule
- */
- public function addRule(PHPExcel_Worksheet_AutoFilter_Column_Rule $pRule, $returnRule=TRUE) {
- $pRule->setParent($this);
- $this->_ruleset[] = $pRule;
-
- return ($returnRule) ? $pRule : $this;
- }
-
- /**
- * Delete a specified AutoFilter Column Rule
- * If the number of rules is reduced to 1, then we reset And/Or logic to Or
- *
- * @param integer $pIndex Rule index in the ruleset array
- * @return PHPExcel_Worksheet_AutoFilter_Column
- */
- public function deleteRule($pIndex) {
- if (isset($this->_ruleset[$pIndex])) {
- unset($this->_ruleset[$pIndex]);
- // If we've just deleted down to a single rule, then reset And/Or joining to Or
- if (count($this->_ruleset) <= 1) {
- $this->setJoin(self::AUTOFILTER_COLUMN_JOIN_OR);
- }
- }
-
- return $this;
- }
-
- /**
- * Delete all AutoFilter Column Rules
- *
- * @return PHPExcel_Worksheet_AutoFilter_Column
- */
- public function clearRules() {
- $this->_ruleset = array();
- $this->setJoin(self::AUTOFILTER_COLUMN_JOIN_OR);
-
- return $this;
- }
-
- /**
- * Implement PHP __clone to create a deep clone, not just a shallow copy.
- */
- public function __clone() {
- $vars = get_object_vars($this);
- foreach ($vars as $key => $value) {
- if (is_object($value)) {
- if ($key == '_parent') {
- // Detach from autofilter parent
- $this->$key = NULL;
- } else {
- $this->$key = clone $value;
- }
- } elseif ((is_array($value)) && ($key == '_ruleset')) {
- // The columns array of PHPExcel_Worksheet_AutoFilter objects
- $this->$key = array();
- foreach ($value as $k => $v) {
- $this->$key[$k] = clone $v;
- // attach the new cloned Rule to this new cloned Autofilter Cloned object
- $this->$key[$k]->setParent($this);
- }
- } else {
- $this->$key = $value;
- }
- }
- }
-
-}
diff --git a/admin/survey/excel/PHPExcel/Worksheet/AutoFilter/Column/Rule.php b/admin/survey/excel/PHPExcel/Worksheet/AutoFilter/Column/Rule.php
deleted file mode 100644
index b779ede..0000000
--- a/admin/survey/excel/PHPExcel/Worksheet/AutoFilter/Column/Rule.php
+++ /dev/null
@@ -1,462 +0,0 @@
-<?php
-/**
- * PHPExcel
- *
- * Copyright (c) 2006 - 2012 PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel_Worksheet
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-
-/**
- * PHPExcel_Worksheet_AutoFilter_Column_Rule
- *
- * @category PHPExcel
- * @package PHPExcel_Worksheet
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- */
-class PHPExcel_Worksheet_AutoFilter_Column_Rule
-{
- const AUTOFILTER_RULETYPE_FILTER = 'filter';
- const AUTOFILTER_RULETYPE_DATEGROUP = 'dateGroupItem';
- const AUTOFILTER_RULETYPE_CUSTOMFILTER = 'customFilter';
- const AUTOFILTER_RULETYPE_DYNAMICFILTER = 'dynamicFilter';
- const AUTOFILTER_RULETYPE_TOPTENFILTER = 'top10Filter';
-
- private static $_ruleTypes = array(
- // Currently we're not handling
- // colorFilter
- // extLst
- // iconFilter
- self::AUTOFILTER_RULETYPE_FILTER,
- self::AUTOFILTER_RULETYPE_DATEGROUP,
- self::AUTOFILTER_RULETYPE_CUSTOMFILTER,
- self::AUTOFILTER_RULETYPE_DYNAMICFILTER,
- self::AUTOFILTER_RULETYPE_TOPTENFILTER,
- );
-
- const AUTOFILTER_RULETYPE_DATEGROUP_YEAR = 'year';
- const AUTOFILTER_RULETYPE_DATEGROUP_MONTH = 'month';
- const AUTOFILTER_RULETYPE_DATEGROUP_DAY = 'day';
- const AUTOFILTER_RULETYPE_DATEGROUP_HOUR = 'hour';
- const AUTOFILTER_RULETYPE_DATEGROUP_MINUTE = 'minute';
- const AUTOFILTER_RULETYPE_DATEGROUP_SECOND = 'second';
-
- private static $_dateTimeGroups = array(
- self::AUTOFILTER_RULETYPE_DATEGROUP_YEAR,
- self::AUTOFILTER_RULETYPE_DATEGROUP_MONTH,
- self::AUTOFILTER_RULETYPE_DATEGROUP_DAY,
- self::AUTOFILTER_RULETYPE_DATEGROUP_HOUR,
- self::AUTOFILTER_RULETYPE_DATEGROUP_MINUTE,
- self::AUTOFILTER_RULETYPE_DATEGROUP_SECOND,
- );
-
- const AUTOFILTER_RULETYPE_DYNAMIC_YESTERDAY = 'yesterday';
- const AUTOFILTER_RULETYPE_DYNAMIC_TODAY = 'today';
- const AUTOFILTER_RULETYPE_DYNAMIC_TOMORROW = 'tomorrow';
- const AUTOFILTER_RULETYPE_DYNAMIC_YEARTODATE = 'yearToDate';
- const AUTOFILTER_RULETYPE_DYNAMIC_THISYEAR = 'thisYear';
- const AUTOFILTER_RULETYPE_DYNAMIC_THISQUARTER = 'thisQuarter';
- const AUTOFILTER_RULETYPE_DYNAMIC_THISMONTH = 'thisMonth';
- const AUTOFILTER_RULETYPE_DYNAMIC_THISWEEK = 'thisWeek';
- const AUTOFILTER_RULETYPE_DYNAMIC_LASTYEAR = 'lastYear';
- const AUTOFILTER_RULETYPE_DYNAMIC_LASTQUARTER = 'lastQuarter';
- const AUTOFILTER_RULETYPE_DYNAMIC_LASTMONTH = 'lastMonth';
- const AUTOFILTER_RULETYPE_DYNAMIC_LASTWEEK = 'lastWeek';
- const AUTOFILTER_RULETYPE_DYNAMIC_NEXTYEAR = 'nextYear';
- const AUTOFILTER_RULETYPE_DYNAMIC_NEXTQUARTER = 'nextQuarter';
- const AUTOFILTER_RULETYPE_DYNAMIC_NEXTMONTH = 'nextMonth';
- const AUTOFILTER_RULETYPE_DYNAMIC_NEXTWEEK = 'nextWeek';
- const AUTOFILTER_RULETYPE_DYNAMIC_MONTH_1 = 'M1';
- const AUTOFILTER_RULETYPE_DYNAMIC_JANUARY = self::AUTOFILTER_RULETYPE_DYNAMIC_MONTH_1;
- const AUTOFILTER_RULETYPE_DYNAMIC_MONTH_2 = 'M2';
- const AUTOFILTER_RULETYPE_DYNAMIC_FEBRUARY = self::AUTOFILTER_RULETYPE_DYNAMIC_MONTH_2;
- const AUTOFILTER_RULETYPE_DYNAMIC_MONTH_3 = 'M3';
- const AUTOFILTER_RULETYPE_DYNAMIC_MARCH = self::AUTOFILTER_RULETYPE_DYNAMIC_MONTH_3;
- const AUTOFILTER_RULETYPE_DYNAMIC_MONTH_4 = 'M4';
- const AUTOFILTER_RULETYPE_DYNAMIC_APRIL = self::AUTOFILTER_RULETYPE_DYNAMIC_MONTH_4;
- const AUTOFILTER_RULETYPE_DYNAMIC_MONTH_5 = 'M5';
- const AUTOFILTER_RULETYPE_DYNAMIC_MAY = self::AUTOFILTER_RULETYPE_DYNAMIC_MONTH_5;
- const AUTOFILTER_RULETYPE_DYNAMIC_MONTH_6 = 'M6';
- const AUTOFILTER_RULETYPE_DYNAMIC_JUNE = self::AUTOFILTER_RULETYPE_DYNAMIC_MONTH_6;
- const AUTOFILTER_RULETYPE_DYNAMIC_MONTH_7 = 'M7';
- const AUTOFILTER_RULETYPE_DYNAMIC_JULY = self::AUTOFILTER_RULETYPE_DYNAMIC_MONTH_7;
- const AUTOFILTER_RULETYPE_DYNAMIC_MONTH_8 = 'M8';
- const AUTOFILTER_RULETYPE_DYNAMIC_AUGUST = self::AUTOFILTER_RULETYPE_DYNAMIC_MONTH_8;
- const AUTOFILTER_RULETYPE_DYNAMIC_MONTH_9 = 'M9';
- const AUTOFILTER_RULETYPE_DYNAMIC_SEPTEMBER = self::AUTOFILTER_RULETYPE_DYNAMIC_MONTH_9;
- const AUTOFILTER_RULETYPE_DYNAMIC_MONTH_10 = 'M10';
- const AUTOFILTER_RULETYPE_DYNAMIC_OCTOBER = self::AUTOFILTER_RULETYPE_DYNAMIC_MONTH_10;
- const AUTOFILTER_RULETYPE_DYNAMIC_MONTH_11 = 'M11';
- const AUTOFILTER_RULETYPE_DYNAMIC_NOVEMBER = self::AUTOFILTER_RULETYPE_DYNAMIC_MONTH_11;
- const AUTOFILTER_RULETYPE_DYNAMIC_MONTH_12 = 'M12';
- const AUTOFILTER_RULETYPE_DYNAMIC_DECEMBER = self::AUTOFILTER_RULETYPE_DYNAMIC_MONTH_12;
- const AUTOFILTER_RULETYPE_DYNAMIC_QUARTER_1 = 'Q1';
- const AUTOFILTER_RULETYPE_DYNAMIC_QUARTER_2 = 'Q2';
- const AUTOFILTER_RULETYPE_DYNAMIC_QUARTER_3 = 'Q3';
- const AUTOFILTER_RULETYPE_DYNAMIC_QUARTER_4 = 'Q4';
- const AUTOFILTER_RULETYPE_DYNAMIC_ABOVEAVERAGE = 'aboveAverage';
- const AUTOFILTER_RULETYPE_DYNAMIC_BELOWAVERAGE = 'belowAverage';
-
- private static $_dynamicTypes = array(
- self::AUTOFILTER_RULETYPE_DYNAMIC_YESTERDAY,
- self::AUTOFILTER_RULETYPE_DYNAMIC_TODAY,
- self::AUTOFILTER_RULETYPE_DYNAMIC_TOMORROW,
- self::AUTOFILTER_RULETYPE_DYNAMIC_YEARTODATE,
- self::AUTOFILTER_RULETYPE_DYNAMIC_THISYEAR,
- self::AUTOFILTER_RULETYPE_DYNAMIC_THISQUARTER,
- self::AUTOFILTER_RULETYPE_DYNAMIC_THISMONTH,
- self::AUTOFILTER_RULETYPE_DYNAMIC_THISWEEK,
- self::AUTOFILTER_RULETYPE_DYNAMIC_LASTYEAR,
- self::AUTOFILTER_RULETYPE_DYNAMIC_LASTQUARTER,
- self::AUTOFILTER_RULETYPE_DYNAMIC_LASTMONTH,
- self::AUTOFILTER_RULETYPE_DYNAMIC_LASTWEEK,
- self::AUTOFILTER_RULETYPE_DYNAMIC_NEXTYEAR,
- self::AUTOFILTER_RULETYPE_DYNAMIC_NEXTQUARTER,
- self::AUTOFILTER_RULETYPE_DYNAMIC_NEXTMONTH,
- self::AUTOFILTER_RULETYPE_DYNAMIC_NEXTWEEK,
- self::AUTOFILTER_RULETYPE_DYNAMIC_MONTH_1,
- self::AUTOFILTER_RULETYPE_DYNAMIC_MONTH_2,
- self::AUTOFILTER_RULETYPE_DYNAMIC_MONTH_3,
- self::AUTOFILTER_RULETYPE_DYNAMIC_MONTH_4,
- self::AUTOFILTER_RULETYPE_DYNAMIC_MONTH_5,
- self::AUTOFILTER_RULETYPE_DYNAMIC_MONTH_6,
- self::AUTOFILTER_RULETYPE_DYNAMIC_MONTH_7,
- self::AUTOFILTER_RULETYPE_DYNAMIC_MONTH_8,
- self::AUTOFILTER_RULETYPE_DYNAMIC_MONTH_9,
- self::AUTOFILTER_RULETYPE_DYNAMIC_MONTH_10,
- self::AUTOFILTER_RULETYPE_DYNAMIC_MONTH_11,
- self::AUTOFILTER_RULETYPE_DYNAMIC_MONTH_12,
- self::AUTOFILTER_RULETYPE_DYNAMIC_QUARTER_1,
- self::AUTOFILTER_RULETYPE_DYNAMIC_QUARTER_2,
- self::AUTOFILTER_RULETYPE_DYNAMIC_QUARTER_3,
- self::AUTOFILTER_RULETYPE_DYNAMIC_QUARTER_4,
- self::AUTOFILTER_RULETYPE_DYNAMIC_ABOVEAVERAGE,
- self::AUTOFILTER_RULETYPE_DYNAMIC_BELOWAVERAGE,
- );
-
- /*
- * The only valid filter rule operators for filter and customFilter types are:
- * <xsd:enumeration value="equal"/>
- * <xsd:enumeration value="lessThan"/>
- * <xsd:enumeration value="lessThanOrEqual"/>
- * <xsd:enumeration value="notEqual"/>
- * <xsd:enumeration value="greaterThanOrEqual"/>
- * <xsd:enumeration value="greaterThan"/>
- */
- const AUTOFILTER_COLUMN_RULE_EQUAL = 'equal';
- const AUTOFILTER_COLUMN_RULE_NOTEQUAL = 'notEqual';
- const AUTOFILTER_COLUMN_RULE_GREATERTHAN = 'greaterThan';
- const AUTOFILTER_COLUMN_RULE_GREATERTHANOREQUAL = 'greaterThanOrEqual';
- const AUTOFILTER_COLUMN_RULE_LESSTHAN = 'lessThan';
- const AUTOFILTER_COLUMN_RULE_LESSTHANOREQUAL = 'lessThanOrEqual';
-
- private static $_operators = array(
- self::AUTOFILTER_COLUMN_RULE_EQUAL,
- self::AUTOFILTER_COLUMN_RULE_NOTEQUAL,
- self::AUTOFILTER_COLUMN_RULE_GREATERTHAN,
- self::AUTOFILTER_COLUMN_RULE_GREATERTHANOREQUAL,
- self::AUTOFILTER_COLUMN_RULE_LESSTHAN,
- self::AUTOFILTER_COLUMN_RULE_LESSTHANOREQUAL,
- );
-
- const AUTOFILTER_COLUMN_RULE_TOPTEN_BY_VALUE = 'byValue';
- const AUTOFILTER_COLUMN_RULE_TOPTEN_PERCENT = 'byPercent';
-
- private static $_topTenValue = array(
- self::AUTOFILTER_COLUMN_RULE_TOPTEN_BY_VALUE,
- self::AUTOFILTER_COLUMN_RULE_TOPTEN_PERCENT,
- );
-
- const AUTOFILTER_COLUMN_RULE_TOPTEN_TOP = 'top';
- const AUTOFILTER_COLUMN_RULE_TOPTEN_BOTTOM = 'bottom';
-
- private static $_topTenType = array(
- self::AUTOFILTER_COLUMN_RULE_TOPTEN_TOP,
- self::AUTOFILTER_COLUMN_RULE_TOPTEN_BOTTOM,
- );
-
-
- /* Rule Operators (Numeric, Boolean etc) */
-// const AUTOFILTER_COLUMN_RULE_BETWEEN = 'between'; // greaterThanOrEqual 1 && lessThanOrEqual 2
- /* Rule Operators (Numeric Special) which are translated to standard numeric operators with calculated values */
-// const AUTOFILTER_COLUMN_RULE_TOPTEN = 'topTen'; // greaterThan calculated value
-// const AUTOFILTER_COLUMN_RULE_TOPTENPERCENT = 'topTenPercent'; // greaterThan calculated value
-// const AUTOFILTER_COLUMN_RULE_ABOVEAVERAGE = 'aboveAverage'; // Value is calculated as the average
-// const AUTOFILTER_COLUMN_RULE_BELOWAVERAGE = 'belowAverage'; // Value is calculated as the average
- /* Rule Operators (String) which are set as wild-carded values */
-// const AUTOFILTER_COLUMN_RULE_BEGINSWITH = 'beginsWith'; // A*
-// const AUTOFILTER_COLUMN_RULE_ENDSWITH = 'endsWith'; // *Z
-// const AUTOFILTER_COLUMN_RULE_CONTAINS = 'contains'; // *B*
-// const AUTOFILTER_COLUMN_RULE_DOESNTCONTAIN = 'notEqual'; // notEqual *B*
- /* Rule Operators (Date Special) which are translated to standard numeric operators with calculated values */
-// const AUTOFILTER_COLUMN_RULE_BEFORE = 'lessThan';
-// const AUTOFILTER_COLUMN_RULE_AFTER = 'greaterThan';
-// const AUTOFILTER_COLUMN_RULE_YESTERDAY = 'yesterday';
-// const AUTOFILTER_COLUMN_RULE_TODAY = 'today';
-// const AUTOFILTER_COLUMN_RULE_TOMORROW = 'tomorrow';
-// const AUTOFILTER_COLUMN_RULE_LASTWEEK = 'lastWeek';
-// const AUTOFILTER_COLUMN_RULE_THISWEEK = 'thisWeek';
-// const AUTOFILTER_COLUMN_RULE_NEXTWEEK = 'nextWeek';
-// const AUTOFILTER_COLUMN_RULE_LASTMONTH = 'lastMonth';
-// const AUTOFILTER_COLUMN_RULE_THISMONTH = 'thisMonth';
-// const AUTOFILTER_COLUMN_RULE_NEXTMONTH = 'nextMonth';
-// const AUTOFILTER_COLUMN_RULE_LASTQUARTER = 'lastQuarter';
-// const AUTOFILTER_COLUMN_RULE_THISQUARTER = 'thisQuarter';
-// const AUTOFILTER_COLUMN_RULE_NEXTQUARTER = 'nextQuarter';
-// const AUTOFILTER_COLUMN_RULE_LASTYEAR = 'lastYear';
-// const AUTOFILTER_COLUMN_RULE_THISYEAR = 'thisYear';
-// const AUTOFILTER_COLUMN_RULE_NEXTYEAR = 'nextYear';
-// const AUTOFILTER_COLUMN_RULE_YEARTODATE = 'yearToDate'; // <dynamicFilter val="40909" type="yearToDate" maxVal="41113"/>
-// const AUTOFILTER_COLUMN_RULE_ALLDATESINMONTH = 'allDatesInMonth'; // <dynamicFilter type="M2"/> for Month/February
-// const AUTOFILTER_COLUMN_RULE_ALLDATESINQUARTER = 'allDatesInQuarter'; // <dynamicFilter type="Q2"/> for Quarter 2
-
- /**
- * Autofilter Column
- *
- * @var PHPExcel_Worksheet_AutoFilter_Column
- */
- private $_parent = NULL;
-
-
- /**
- * Autofilter Rule Type
- *
- * @var string
- */
- private $_ruleType = self::AUTOFILTER_RULETYPE_FILTER;
-
-
- /**
- * Autofilter Rule Value
- *
- * @var string
- */
- private $_value = '';
-
- /**
- * Autofilter Rule Operator
- *
- * @var string
- */
- private $_operator = '';
-
- /**
- * DateTimeGrouping Group Value
- *
- * @var string
- */
- private $_grouping = '';
-
-
- /**
- * Create a new PHPExcel_Worksheet_AutoFilter_Column_Rule
- */
- public function __construct(PHPExcel_Worksheet_AutoFilter_Column $pParent = NULL)
- {
- $this->_parent = $pParent;
- }
-
- /**
- * Get AutoFilter Rule Type
- *
- * @return string
- */
- public function getRuleType() {
- return $this->_ruleType;
- }
-
- /**
- * Set AutoFilter Rule Type
- *
- * @param string $pRuleType
- * @throws Exception
- * @return PHPExcel_Worksheet_AutoFilter_Column
- */
- public function setRuleType($pRuleType = self::AUTOFILTER_RULETYPE_FILTER) {
- if (!in_array($pRuleType,self::$_ruleTypes)) {
- throw new PHPExcel_Exception('Invalid rule type for column AutoFilter Rule.');
- }
-
- $this->_ruleType = $pRuleType;
-
- return $this;
- }
-
- /**
- * Get AutoFilter Rule Value
- *
- * @return string
- */
- public function getValue() {
- return $this->_value;
- }
-
- /**
- * Set AutoFilter Rule Value
- *
- * @param string|string[] $pValue
- * @throws Exception
- * @return PHPExcel_Worksheet_AutoFilter_Column_Rule
- */
- public function setValue($pValue = '') {
- if (is_array($pValue)) {
- $grouping = -1;
- foreach($pValue as $key => $value) {
- // Validate array entries
- if (!in_array($key,self::$_dateTimeGroups)) {
- // Remove any invalid entries from the value array
- unset($pValue[$key]);
- } else {
- // Work out what the dateTime grouping will be
- $grouping = max($grouping,array_search($key,self::$_dateTimeGroups));
- }
- }
- if (count($pValue) == 0) {
- throw new PHPExcel_Exception('Invalid rule value for column AutoFilter Rule.');
- }
- // Set the dateTime grouping that we've anticipated
- $this->setGrouping(self::$_dateTimeGroups[$grouping]);
- }
- $this->_value = $pValue;
-
- return $this;
- }
-
- /**
- * Get AutoFilter Rule Operator
- *
- * @return string
- */
- public function getOperator() {
- return $this->_operator;
- }
-
- /**
- * Set AutoFilter Rule Operator
- *
- * @param string $pOperator
- * @throws Exception
- * @return PHPExcel_Worksheet_AutoFilter_Column_Rule
- */
- public function setOperator($pOperator = self::AUTOFILTER_COLUMN_RULE_EQUAL) {
- if (empty($pOperator))
- $pOperator = self::AUTOFILTER_COLUMN_RULE_EQUAL;
- if ((!in_array($pOperator,self::$_operators)) &&
- (!in_array($pOperator,self::$_topTenValue))) {
- throw new PHPExcel_Exception('Invalid operator for column AutoFilter Rule.');
- }
- $this->_operator = $pOperator;
-
- return $this;
- }
-
- /**
- * Get AutoFilter Rule Grouping
- *
- * @return string
- */
- public function getGrouping() {
- return $this->_grouping;
- }
-
- /**
- * Set AutoFilter Rule Grouping
- *
- * @param string $pGrouping
- * @throws Exception
- * @return PHPExcel_Worksheet_AutoFilter_Column_Rule
- */
- public function setGrouping($pGrouping = NULL) {
- if (($pGrouping !== NULL) &&
- (!in_array($pGrouping,self::$_dateTimeGroups)) &&
- (!in_array($pGrouping,self::$_dynamicTypes)) &&
- (!in_array($pGrouping,self::$_topTenType))) {
- throw new PHPExcel_Exception('Invalid rule type for column AutoFilter Rule.');
- }
-
- $this->_grouping = $pGrouping;
-
- return $this;
- }
-
- /**
- * Set AutoFilter Rule
- *
- * @param string $pOperator
- * @param string|string[] $pValue
- * @param string $pGrouping
- * @throws Exception
- * @return PHPExcel_Worksheet_AutoFilter_Column_Rule
- */
- public function setRule($pOperator = self::AUTOFILTER_COLUMN_RULE_EQUAL, $pValue = '', $pGrouping = NULL) {
- $this->setOperator($pOperator);
- $this->setValue($pValue);
- // Only set grouping if it's been passed in as a user-supplied argument,
- // otherwise we're calculating it when we setValue() and don't want to overwrite that
- // If the user supplies an argumnet for grouping, then on their own head be it
- if ($pGrouping !== NULL)
- $this->setGrouping($pGrouping);
-
- return $this;
- }
-
- /**
- * Get this Rule's AutoFilter Column Parent
- *
- * @return PHPExcel_Worksheet_AutoFilter_Column
- */
- public function getParent() {
- return $this->_parent;
- }
-
- /**
- * Set this Rule's AutoFilter Column Parent
- *
- * @param PHPExcel_Worksheet_AutoFilter_Column
- * @return PHPExcel_Worksheet_AutoFilter_Column_Rule
- */
- public function setParent(PHPExcel_Worksheet_AutoFilter_Column $pParent = NULL) {
- $this->_parent = $pParent;
-
- return $this;
- }
-
- /**
- * Implement PHP __clone to create a deep clone, not just a shallow copy.
- */
- public function __clone() {
- $vars = get_object_vars($this);
- foreach ($vars as $key => $value) {
- if (is_object($value)) {
- if ($key == '_parent') {
- // Detach from autofilter column parent
- $this->$key = NULL;
- } else {
- $this->$key = clone $value;
- }
- } else {
- $this->$key = $value;
- }
- }
- }
-
-}
diff --git a/admin/survey/excel/PHPExcel/Worksheet/BaseDrawing.php b/admin/survey/excel/PHPExcel/Worksheet/BaseDrawing.php
deleted file mode 100644
index 8f3d9cb..0000000
--- a/admin/survey/excel/PHPExcel/Worksheet/BaseDrawing.php
+++ /dev/null
@@ -1,485 +0,0 @@
-<?php
-/**
- * PHPExcel
- *
- * Copyright (c) 2006 - 2012 PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel_Worksheet
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-
-/**
- * PHPExcel_Worksheet_BaseDrawing
- *
- * @category PHPExcel
- * @package PHPExcel_Worksheet
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- */
-class PHPExcel_Worksheet_BaseDrawing implements PHPExcel_IComparable
-{
- /**
- * Image counter
- *
- * @var int
- */
- private static $_imageCounter = 0;
-
- /**
- * Image index
- *
- * @var int
- */
- private $_imageIndex = 0;
-
- /**
- * Name
- *
- * @var string
- */
- protected $_name;
-
- /**
- * Description
- *
- * @var string
- */
- protected $_description;
-
- /**
- * Worksheet
- *
- * @var PHPExcel_Worksheet
- */
- protected $_worksheet;
-
- /**
- * Coordinates
- *
- * @var string
- */
- protected $_coordinates;
-
- /**
- * Offset X
- *
- * @var int
- */
- protected $_offsetX;
-
- /**
- * Offset Y
- *
- * @var int
- */
- protected $_offsetY;
-
- /**
- * Width
- *
- * @var int
- */
- protected $_width;
-
- /**
- * Height
- *
- * @var int
- */
- protected $_height;
-
- /**
- * Proportional resize
- *
- * @var boolean
- */
- protected $_resizeProportional;
-
- /**
- * Rotation
- *
- * @var int
- */
- protected $_rotation;
-
- /**
- * Shadow
- *
- * @var PHPExcel_Worksheet_Drawing_Shadow
- */
- protected $_shadow;
-
- /**
- * Create a new PHPExcel_Worksheet_BaseDrawing
- */
- public function __construct()
- {
- // Initialise values
- $this->_name = '';
- $this->_description = '';
- $this->_worksheet = null;
- $this->_coordinates = 'A1';
- $this->_offsetX = 0;
- $this->_offsetY = 0;
- $this->_width = 0;
- $this->_height = 0;
- $this->_resizeProportional = true;
- $this->_rotation = 0;
- $this->_shadow = new PHPExcel_Worksheet_Drawing_Shadow();
-
- // Set image index
- self::$_imageCounter++;
- $this->_imageIndex = self::$_imageCounter;
- }
-
- /**
- * Get image index
- *
- * @return int
- */
- public function getImageIndex() {
- return $this->_imageIndex;
- }
-
- /**
- * Get Name
- *
- * @return string
- */
- public function getName() {
- return $this->_name;
- }
-
- /**
- * Set Name
- *
- * @param string $pValue
- * @return PHPExcel_Worksheet_BaseDrawing
- */
- public function setName($pValue = '') {
- $this->_name = $pValue;
- return $this;
- }
-
- /**
- * Get Description
- *
- * @return string
- */
- public function getDescription() {
- return $this->_description;
- }
-
- /**
- * Set Description
- *
- * @param string $pValue
- * @return PHPExcel_Worksheet_BaseDrawing
- */
- public function setDescription($pValue = '') {
- $this->_description = $pValue;
- return $this;
- }
-
- /**
- * Get Worksheet
- *
- * @return PHPExcel_Worksheet
- */
- public function getWorksheet() {
- return $this->_worksheet;
- }
-
- /**
- * Set Worksheet
- *
- * @param PHPExcel_Worksheet $pValue
- * @param bool $pOverrideOld If a Worksheet has already been assigned, overwrite it and remove image from old Worksheet?
- * @throws Exception
- * @return PHPExcel_Worksheet_BaseDrawing
- */
- public function setWorksheet(PHPExcel_Worksheet $pValue = null, $pOverrideOld = false) {
- if (is_null($this->_worksheet)) {
- // Add drawing to PHPExcel_Worksheet
- $this->_worksheet = $pValue;
- $this->_worksheet->getCell($this->_coordinates);
- $this->_worksheet->getDrawingCollection()->append($this);
- } else {
- if ($pOverrideOld) {
- // Remove drawing from old PHPExcel_Worksheet
- $iterator = $this->_worksheet->getDrawingCollection()->getIterator();
-
- while ($iterator->valid()) {
- if ($iterator->current()->getHashCode() == $this->getHashCode()) {
- $this->_worksheet->getDrawingCollection()->offsetUnset( $iterator->key() );
- $this->_worksheet = null;
- break;
- }
- }
-
- // Set new PHPExcel_Worksheet
- $this->setWorksheet($pValue);
- } else {
- throw new Exception("A PHPExcel_Worksheet has already been assigned. Drawings can only exist on one PHPExcel_Worksheet.");
- }
- }
- return $this;
- }
-
- /**
- * Get Coordinates
- *
- * @return string
- */
- public function getCoordinates() {
- return $this->_coordinates;
- }
-
- /**
- * Set Coordinates
- *
- * @param string $pValue
- * @return PHPExcel_Worksheet_BaseDrawing
- */
- public function setCoordinates($pValue = 'A1') {
- $this->_coordinates = $pValue;
- return $this;
- }
-
- /**
- * Get OffsetX
- *
- * @return int
- */
- public function getOffsetX() {
- return $this->_offsetX;
- }
-
- /**
- * Set OffsetX
- *
- * @param int $pValue
- * @return PHPExcel_Worksheet_BaseDrawing
- */
- public function setOffsetX($pValue = 0) {
- $this->_offsetX = $pValue;
- return $this;
- }
-
- /**
- * Get OffsetY
- *
- * @return int
- */
- public function getOffsetY() {
- return $this->_offsetY;
- }
-
- /**
- * Set OffsetY
- *
- * @param int $pValue
- * @return PHPExcel_Worksheet_BaseDrawing
- */
- public function setOffsetY($pValue = 0) {
- $this->_offsetY = $pValue;
- return $this;
- }
-
- /**
- * Get Width
- *
- * @return int
- */
- public function getWidth() {
- return $this->_width;
- }
-
- /**
- * Set Width
- *
- * @param int $pValue
- * @return PHPExcel_Worksheet_BaseDrawing
- */
- public function setWidth($pValue = 0) {
- // Resize proportional?
- if ($this->_resizeProportional && $pValue != 0) {
- $ratio = $this->_height / $this->_width;
- $this->_height = round($ratio * $pValue);
- }
-
- // Set width
- $this->_width = $pValue;
-
- return $this;
- }
-
- /**
- * Get Height
- *
- * @return int
- */
- public function getHeight() {
- return $this->_height;
- }
-
- /**
- * Set Height
- *
- * @param int $pValue
- * @return PHPExcel_Worksheet_BaseDrawing
- */
- public function setHeight($pValue = 0) {
- // Resize proportional?
- if ($this->_resizeProportional && $pValue != 0) {
- $ratio = $this->_width / $this->_height;
- $this->_width = round($ratio * $pValue);
- }
-
- // Set height
- $this->_height = $pValue;
-
- return $this;
- }
-
- /**
- * Set width and height with proportional resize
- * Example:
- * <code>
- * $objDrawing->setResizeProportional(true);
- * $objDrawing->setWidthAndHeight(160,120);
- * </code>
- *
- * @author Vincent@luo MSN:kele_100@hotmail.com
- * @param int $width
- * @param int $height
- * @return PHPExcel_Worksheet_BaseDrawing
- */
- public function setWidthAndHeight($width = 0, $height = 0) {
- $xratio = $width / $this->_width;
- $yratio = $height / $this->_height;
- if ($this->_resizeProportional && !($width == 0 || $height == 0)) {
- if (($xratio * $this->_height) < $height) {
- $this->_height = ceil($xratio * $this->_height);
- $this->_width = $width;
- } else {
- $this->_width = ceil($yratio * $this->_width);
- $this->_height = $height;
- }
- }
- return $this;
- }
-
- /**
- * Get ResizeProportional
- *
- * @return boolean
- */
- public function getResizeProportional() {
- return $this->_resizeProportional;
- }
-
- /**
- * Set ResizeProportional
- *
- * @param boolean $pValue
- * @return PHPExcel_Worksheet_BaseDrawing
- */
- public function setResizeProportional($pValue = true) {
- $this->_resizeProportional = $pValue;
- return $this;
- }
-
- /**
- * Get Rotation
- *
- * @return int
- */
- public function getRotation() {
- return $this->_rotation;
- }
-
- /**
- * Set Rotation
- *
- * @param int $pValue
- * @return PHPExcel_Worksheet_BaseDrawing
- */
- public function setRotation($pValue = 0) {
- $this->_rotation = $pValue;
- return $this;
- }
-
- /**
- * Get Shadow
- *
- * @return PHPExcel_Worksheet_Drawing_Shadow
- */
- public function getShadow() {
- return $this->_shadow;
- }
-
- /**
- * Set Shadow
- *
- * @param PHPExcel_Worksheet_Drawing_Shadow $pValue
- * @throws Exception
- * @return PHPExcel_Worksheet_BaseDrawing
- */
- public function setShadow(PHPExcel_Worksheet_Drawing_Shadow $pValue = null) {
- $this->_shadow = $pValue;
- return $this;
- }
-
- /**
- * Get hash code
- *
- * @return string Hash code
- */
- public function getHashCode() {
- return md5(
- $this->_name
- . $this->_description
- . $this->_worksheet->getHashCode()
- . $this->_coordinates
- . $this->_offsetX
- . $this->_offsetY
- . $this->_width
- . $this->_height
- . $this->_rotation
- . $this->_shadow->getHashCode()
- . __CLASS__
- );
- }
-
- /**
- * Implement PHP __clone to create a deep clone, not just a shallow copy.
- */
- public function __clone() {
- $vars = get_object_vars($this);
- foreach ($vars as $key => $value) {
- if (is_object($value)) {
- $this->$key = clone $value;
- } else {
- $this->$key = $value;
- }
- }
- }
-}
diff --git a/admin/survey/excel/PHPExcel/Worksheet/CellIterator.php b/admin/survey/excel/PHPExcel/Worksheet/CellIterator.php
deleted file mode 100644
index 3f3f2d9..0000000
--- a/admin/survey/excel/PHPExcel/Worksheet/CellIterator.php
+++ /dev/null
@@ -1,161 +0,0 @@
-<?php
-/**
- * PHPExcel
- *
- * Copyright (c) 2006 - 2012 PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel_Worksheet
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-
-/**
- * PHPExcel_Worksheet_CellIterator
- *
- * Used to iterate rows in a PHPExcel_Worksheet
- *
- * @category PHPExcel
- * @package PHPExcel_Worksheet
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- */
-class PHPExcel_Worksheet_CellIterator implements Iterator
-{
- /**
- * PHPExcel_Worksheet to iterate
- *
- * @var PHPExcel_Worksheet
- */
- private $_subject;
-
- /**
- * Row index
- *
- * @var int
- */
- private $_rowIndex;
-
- /**
- * Current iterator position
- *
- * @var int
- */
- private $_position = 0;
-
- /**
- * Loop only existing cells
- *
- * @var boolean
- */
- private $_onlyExistingCells = true;
-
- /**
- * Create a new cell iterator
- *
- * @param PHPExcel_Worksheet $subject
- * @param int $rowIndex
- */
- public function __construct(PHPExcel_Worksheet $subject = null, $rowIndex = 1) {
- // Set subject and row index
- $this->_subject = $subject;
- $this->_rowIndex = $rowIndex;
- }
-
- /**
- * Destructor
- */
- public function __destruct() {
- unset($this->_subject);
- }
-
- /**
- * Rewind iterator
- */
- public function rewind() {
- $this->_position = 0;
- }
-
- /**
- * Current PHPExcel_Cell
- *
- * @return PHPExcel_Cell
- */
- public function current() {
- return $this->_subject->getCellByColumnAndRow($this->_position, $this->_rowIndex);
- }
-
- /**
- * Current key
- *
- * @return int
- */
- public function key() {
- return $this->_position;
- }
-
- /**
- * Next value
- */
- public function next() {
- ++$this->_position;
- }
-
- /**
- * Are there any more PHPExcel_Cell instances available?
- *
- * @return boolean
- */
- public function valid() {
- // columnIndexFromString() returns an index based at one,
- // treat it as a count when comparing it to the base zero
- // position.
- $columnCount = PHPExcel_Cell::columnIndexFromString($this->_subject->getHighestColumn());
-
- if ($this->_onlyExistingCells) {
- // If we aren't looking at an existing cell, either
- // because the first column doesn't exist or next() has
- // been called onto a nonexistent cell, then loop until we
- // find one, or pass the last column.
- while ($this->_position < $columnCount &&
- !$this->_subject->cellExistsByColumnAndRow($this->_position, $this->_rowIndex)) {
- ++$this->_position;
- }
- }
-
- return $this->_position < $columnCount;
- }
-
- /**
- * Get loop only existing cells
- *
- * @return boolean
- */
- public function getIterateOnlyExistingCells() {
- return $this->_onlyExistingCells;
- }
-
- /**
- * Set the iterator to loop only existing cells
- *
- * @param boolean $value
- */
- public function setIterateOnlyExistingCells($value = true) {
- $this->_onlyExistingCells = $value;
- }
-}
diff --git a/admin/survey/excel/PHPExcel/Worksheet/ColumnDimension.php b/admin/survey/excel/PHPExcel/Worksheet/ColumnDimension.php
deleted file mode 100644
index a95cd1f..0000000
--- a/admin/survey/excel/PHPExcel/Worksheet/ColumnDimension.php
+++ /dev/null
@@ -1,266 +0,0 @@
-<?php
-/**
- * PHPExcel
- *
- * Copyright (c) 2006 - 2012 PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel_Worksheet
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-
-/**
- * PHPExcel_Worksheet_ColumnDimension
- *
- * @category PHPExcel
- * @package PHPExcel_Worksheet
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- */
-class PHPExcel_Worksheet_ColumnDimension
-{
- /**
- * Column index
- *
- * @var int
- */
- private $_columnIndex;
-
- /**
- * Column width
- *
- * When this is set to a negative value, the column width should be ignored by IWriter
- *
- * @var double
- */
- private $_width = -1;
-
- /**
- * Auto size?
- *
- * @var bool
- */
- private $_autoSize = false;
-
- /**
- * Visible?
- *
- * @var bool
- */
- private $_visible = true;
-
- /**
- * Outline level
- *
- * @var int
- */
- private $_outlineLevel = 0;
-
- /**
- * Collapsed
- *
- * @var bool
- */
- private $_collapsed = false;
-
- /**
- * Index to cellXf
- *
- * @var int
- */
- private $_xfIndex;
-
- /**
- * Create a new PHPExcel_Worksheet_ColumnDimension
- *
- * @param string $pIndex Character column index
- */
- public function __construct($pIndex = 'A')
- {
- // Initialise values
- $this->_columnIndex = $pIndex;
-
- // set default index to cellXf
- $this->_xfIndex = 0;
- }
-
- /**
- * Get ColumnIndex
- *
- * @return string
- */
- public function getColumnIndex() {
- return $this->_columnIndex;
- }
-
- /**
- * Set ColumnIndex
- *
- * @param string $pValue
- * @return PHPExcel_Worksheet_ColumnDimension
- */
- public function setColumnIndex($pValue) {
- $this->_columnIndex = $pValue;
- return $this;
- }
-
- /**
- * Get Width
- *
- * @return double
- */
- public function getWidth() {
- return $this->_width;
- }
-
- /**
- * Set Width
- *
- * @param double $pValue
- * @return PHPExcel_Worksheet_ColumnDimension
- */
- public function setWidth($pValue = -1) {
- $this->_width = $pValue;
- return $this;
- }
-
- /**
- * Get Auto Size
- *
- * @return bool
- */
- public function getAutoSize() {
- return $this->_autoSize;
- }
-
- /**
- * Set Auto Size
- *
- * @param bool $pValue
- * @return PHPExcel_Worksheet_ColumnDimension
- */
- public function setAutoSize($pValue = false) {
- $this->_autoSize = $pValue;
- return $this;
- }
-
- /**
- * Get Visible
- *
- * @return bool
- */
- public function getVisible() {
- return $this->_visible;
- }
-
- /**
- * Set Visible
- *
- * @param bool $pValue
- * @return PHPExcel_Worksheet_ColumnDimension
- */
- public function setVisible($pValue = true) {
- $this->_visible = $pValue;
- return $this;
- }
-
- /**
- * Get Outline Level
- *
- * @return int
- */
- public function getOutlineLevel() {
- return $this->_outlineLevel;
- }
-
- /**
- * Set Outline Level
- *
- * Value must be between 0 and 7
- *
- * @param int $pValue
- * @throws Exception
- * @return PHPExcel_Worksheet_ColumnDimension
- */
- public function setOutlineLevel($pValue) {
- if ($pValue < 0 || $pValue > 7) {
- throw new Exception("Outline level must range between 0 and 7.");
- }
-
- $this->_outlineLevel = $pValue;
- return $this;
- }
-
- /**
- * Get Collapsed
- *
- * @return bool
- */
- public function getCollapsed() {
- return $this->_collapsed;
- }
-
- /**
- * Set Collapsed
- *
- * @param bool $pValue
- * @return PHPExcel_Worksheet_ColumnDimension
- */
- public function setCollapsed($pValue = true) {
- $this->_collapsed = $pValue;
- return $this;
- }
-
- /**
- * Get index to cellXf
- *
- * @return int
- */
- public function getXfIndex()
- {
- return $this->_xfIndex;
- }
-
- /**
- * Set index to cellXf
- *
- * @param int $pValue
- * @return PHPExcel_Worksheet_ColumnDimension
- */
- public function setXfIndex($pValue = 0)
- {
- $this->_xfIndex = $pValue;
- return $this;
- }
-
- /**
- * Implement PHP __clone to create a deep clone, not just a shallow copy.
- */
- public function __clone() {
- $vars = get_object_vars($this);
- foreach ($vars as $key => $value) {
- if (is_object($value)) {
- $this->$key = clone $value;
- } else {
- $this->$key = $value;
- }
- }
- }
-
-}
diff --git a/admin/survey/excel/PHPExcel/Worksheet/Drawing.php b/admin/survey/excel/PHPExcel/Worksheet/Drawing.php
deleted file mode 100644
index 0e1d62e..0000000
--- a/admin/survey/excel/PHPExcel/Worksheet/Drawing.php
+++ /dev/null
@@ -1,148 +0,0 @@
-<?php
-/**
- * PHPExcel
- *
- * Copyright (c) 2006 - 2012 PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel_Worksheet_Drawing
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-
-/**
- * PHPExcel_Worksheet_Drawing
- *
- * @category PHPExcel
- * @package PHPExcel_Worksheet_Drawing
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- */
-class PHPExcel_Worksheet_Drawing extends PHPExcel_Worksheet_BaseDrawing implements PHPExcel_IComparable
-{
- /**
- * Path
- *
- * @var string
- */
- private $_path;
-
- /**
- * Create a new PHPExcel_Worksheet_Drawing
- */
- public function __construct()
- {
- // Initialise values
- $this->_path = '';
-
- // Initialize parent
- parent::__construct();
- }
-
- /**
- * Get Filename
- *
- * @return string
- */
- public function getFilename() {
- return basename($this->_path);
- }
-
- /**
- * Get indexed filename (using image index)
- *
- * @return string
- */
- public function getIndexedFilename() {
- $fileName = $this->getFilename();
- $fileName = str_replace(' ', '_', $fileName);
- return str_replace('.' . $this->getExtension(), '', $fileName) . $this->getImageIndex() . '.' . $this->getExtension();
- }
-
- /**
- * Get Extension
- *
- * @return string
- */
- public function getExtension() {
- $exploded = explode(".", basename($this->_path));
- return $exploded[count($exploded) - 1];
- }
-
- /**
- * Get Path
- *
- * @return string
- */
- public function getPath() {
- return $this->_path;
- }
-
- /**
- * Set Path
- *
- * @param string $pValue File path
- * @param boolean $pVerifyFile Verify file
- * @throws Exception
- * @return PHPExcel_Worksheet_Drawing
- */
- public function setPath($pValue = '', $pVerifyFile = true) {
- if ($pVerifyFile) {
- if (file_exists($pValue)) {
- $this->_path = $pValue;
-
- if ($this->_width == 0 && $this->_height == 0) {
- // Get width/height
- list($this->_width, $this->_height) = getimagesize($pValue);
- }
- } else {
- throw new Exception("File $pValue not found!");
- }
- } else {
- $this->_path = $pValue;
- }
- return $this;
- }
-
- /**
- * Get hash code
- *
- * @return string Hash code
- */
- public function getHashCode() {
- return md5(
- $this->_path
- . parent::getHashCode()
- . __CLASS__
- );
- }
-
- /**
- * Implement PHP __clone to create a deep clone, not just a shallow copy.
- */
- public function __clone() {
- $vars = get_object_vars($this);
- foreach ($vars as $key => $value) {
- if (is_object($value)) {
- $this->$key = clone $value;
- } else {
- $this->$key = $value;
- }
- }
- }
-}
diff --git a/admin/survey/excel/PHPExcel/Worksheet/Drawing/Shadow.php b/admin/survey/excel/PHPExcel/Worksheet/Drawing/Shadow.php
deleted file mode 100644
index 50696d6..0000000
--- a/admin/survey/excel/PHPExcel/Worksheet/Drawing/Shadow.php
+++ /dev/null
@@ -1,288 +0,0 @@
-<?php
-/**
- * PHPExcel
- *
- * Copyright (c) 2006 - 2012 PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel_Worksheet_Drawing
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-
-/**
- * PHPExcel_Worksheet_Drawing_Shadow
- *
- * @category PHPExcel
- * @package PHPExcel_Worksheet_Drawing
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- */
-class PHPExcel_Worksheet_Drawing_Shadow implements PHPExcel_IComparable
-{
- /* Shadow alignment */
- const SHADOW_BOTTOM = 'b';
- const SHADOW_BOTTOM_LEFT = 'bl';
- const SHADOW_BOTTOM_RIGHT = 'br';
- const SHADOW_CENTER = 'ctr';
- const SHADOW_LEFT = 'l';
- const SHADOW_TOP = 't';
- const SHADOW_TOP_LEFT = 'tl';
- const SHADOW_TOP_RIGHT = 'tr';
-
- /**
- * Visible
- *
- * @var boolean
- */
- private $_visible;
-
- /**
- * Blur radius
- *
- * Defaults to 6
- *
- * @var int
- */
- private $_blurRadius;
-
- /**
- * Shadow distance
- *
- * Defaults to 2
- *
- * @var int
- */
- private $_distance;
-
- /**
- * Shadow direction (in degrees)
- *
- * @var int
- */
- private $_direction;
-
- /**
- * Shadow alignment
- *
- * @var int
- */
- private $_alignment;
-
- /**
- * Color
- *
- * @var PHPExcel_Style_Color
- */
- private $_color;
-
- /**
- * Alpha
- *
- * @var int
- */
- private $_alpha;
-
- /**
- * Create a new PHPExcel_Worksheet_Drawing_Shadow
- */
- public function __construct()
- {
- // Initialise values
- $this->_visible = false;
- $this->_blurRadius = 6;
- $this->_distance = 2;
- $this->_direction = 0;
- $this->_alignment = PHPExcel_Worksheet_Drawing_Shadow::SHADOW_BOTTOM_RIGHT;
- $this->_color = new PHPExcel_Style_Color(PHPExcel_Style_Color::COLOR_BLACK);
- $this->_alpha = 50;
- }
-
- /**
- * Get Visible
- *
- * @return boolean
- */
- public function getVisible() {
- return $this->_visible;
- }
-
- /**
- * Set Visible
- *
- * @param boolean $pValue
- * @return PHPExcel_Worksheet_Drawing_Shadow
- */
- public function setVisible($pValue = false) {
- $this->_visible = $pValue;
- return $this;
- }
-
- /**
- * Get Blur radius
- *
- * @return int
- */
- public function getBlurRadius() {
- return $this->_blurRadius;
- }
-
- /**
- * Set Blur radius
- *
- * @param int $pValue
- * @return PHPExcel_Worksheet_Drawing_Shadow
- */
- public function setBlurRadius($pValue = 6) {
- $this->_blurRadius = $pValue;
- return $this;
- }
-
- /**
- * Get Shadow distance
- *
- * @return int
- */
- public function getDistance() {
- return $this->_distance;
- }
-
- /**
- * Set Shadow distance
- *
- * @param int $pValue
- * @return PHPExcel_Worksheet_Drawing_Shadow
- */
- public function setDistance($pValue = 2) {
- $this->_distance = $pValue;
- return $this;
- }
-
- /**
- * Get Shadow direction (in degrees)
- *
- * @return int
- */
- public function getDirection() {
- return $this->_direction;
- }
-
- /**
- * Set Shadow direction (in degrees)
- *
- * @param int $pValue
- * @return PHPExcel_Worksheet_Drawing_Shadow
- */
- public function setDirection($pValue = 0) {
- $this->_direction = $pValue;
- return $this;
- }
-
- /**
- * Get Shadow alignment
- *
- * @return int
- */
- public function getAlignment() {
- return $this->_alignment;
- }
-
- /**
- * Set Shadow alignment
- *
- * @param int $pValue
- * @return PHPExcel_Worksheet_Drawing_Shadow
- */
- public function setAlignment($pValue = 0) {
- $this->_alignment = $pValue;
- return $this;
- }
-
- /**
- * Get Color
- *
- * @return PHPExcel_Style_Color
- */
- public function getColor() {
- return $this->_color;
- }
-
- /**
- * Set Color
- *
- * @param PHPExcel_Style_Color $pValue
- * @throws Exception
- * @return PHPExcel_Worksheet_Drawing_Shadow
- */
- public function setColor(PHPExcel_Style_Color $pValue = null) {
- $this->_color = $pValue;
- return $this;
- }
-
- /**
- * Get Alpha
- *
- * @return int
- */
- public function getAlpha() {
- return $this->_alpha;
- }
-
- /**
- * Set Alpha
- *
- * @param int $pValue
- * @return PHPExcel_Worksheet_Drawing_Shadow
- */
- public function setAlpha($pValue = 0) {
- $this->_alpha = $pValue;
- return $this;
- }
-
- /**
- * Get hash code
- *
- * @return string Hash code
- */
- public function getHashCode() {
- return md5(
- ($this->_visible ? 't' : 'f')
- . $this->_blurRadius
- . $this->_distance
- . $this->_direction
- . $this->_alignment
- . $this->_color->getHashCode()
- . $this->_alpha
- . __CLASS__
- );
- }
-
- /**
- * Implement PHP __clone to create a deep clone, not just a shallow copy.
- */
- public function __clone() {
- $vars = get_object_vars($this);
- foreach ($vars as $key => $value) {
- if (is_object($value)) {
- $this->$key = clone $value;
- } else {
- $this->$key = $value;
- }
- }
- }
-}
diff --git a/admin/survey/excel/PHPExcel/Worksheet/HeaderFooter.php b/admin/survey/excel/PHPExcel/Worksheet/HeaderFooter.php
deleted file mode 100644
index ad1424b..0000000
--- a/admin/survey/excel/PHPExcel/Worksheet/HeaderFooter.php
+++ /dev/null
@@ -1,465 +0,0 @@
-<?php
-/**
- * PHPExcel
- *
- * Copyright (c) 2006 - 2012 PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel_Worksheet
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-
-/**
- * PHPExcel_Worksheet_HeaderFooter
- *
- * <code>
- * Header/Footer Formatting Syntax taken from Office Open XML Part 4 - Markup Language Reference, page 1970:
- *
- * There are a number of formatting codes that can be written inline with the actual header / footer text, which
- * affect the formatting in the header or footer.
- *
- * Example: This example shows the text "Center Bold Header" on the first line (center section), and the date on
- * the second line (center section).
- * &CCenter &"-,Bold"Bold&"-,Regular"Header_x000A_&D
- *
- * General Rules:
- * There is no required order in which these codes must appear.
- *
- * The first occurrence of the following codes turns the formatting ON, the second occurrence turns it OFF again:
- * - strikethrough
- * - superscript
- * - subscript
- * Superscript and subscript cannot both be ON at same time. Whichever comes first wins and the other is ignored,
- * while the first is ON.
- * &L - code for "left section" (there are three header / footer locations, "left", "center", and "right"). When
- * two or more occurrences of this section marker exist, the contents from all markers are concatenated, in the
- * order of appearance, and placed into the left section.
- * &P - code for "current page #"
- * &N - code for "total pages"
- * &font size - code for "text font size", where font size is a font size in points.
- * &K - code for "text font color"
- * RGB Color is specified as RRGGBB
- * Theme Color is specifed as TTSNN where TT is the theme color Id, S is either "+" or "-" of the tint/shade
- * value, NN is the tint/shade value.
- * &S - code for "text strikethrough" on / off
- * &X - code for "text super script" on / off
- * &Y - code for "text subscript" on / off
- * &C - code for "center section". When two or more occurrences of this section marker exist, the contents
- * from all markers are concatenated, in the order of appearance, and placed into the center section.
- *
- * &D - code for "date"
- * &T - code for "time"
- * &G - code for "picture as background"
- * &U - code for "text single underline"
- * &E - code for "double underline"
- * &R - code for "right section". When two or more occurrences of this section marker exist, the contents
- * from all markers are concatenated, in the order of appearance, and placed into the right section.
- * &Z - code for "this workbook's file path"
- * &F - code for "this workbook's file name"
- * &A - code for "sheet tab name"
- * &+ - code for add to page #.
- * &- - code for subtract from page #.
- * &"font name,font type" - code for "text font name" and "text font type", where font name and font type
- * are strings specifying the name and type of the font, separated by a comma. When a hyphen appears in font
- * name, it means "none specified". Both of font name and font type can be localized values.
- * &"-,Bold" - code for "bold font style"
- * &B - also means "bold font style".
- * &"-,Regular" - code for "regular font style"
- * &"-,Italic" - code for "italic font style"
- * &I - also means "italic font style"
- * &"-,Bold Italic" code for "bold italic font style"
- * &O - code for "outline style"
- * &H - code for "shadow style"
- * </code>
- *
- * @category PHPExcel
- * @package PHPExcel_Worksheet
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- */
-class PHPExcel_Worksheet_HeaderFooter
-{
- /* Header/footer image location */
- const IMAGE_HEADER_LEFT = 'LH';
- const IMAGE_HEADER_CENTER = 'CH';
- const IMAGE_HEADER_RIGHT = 'RH';
- const IMAGE_FOOTER_LEFT = 'LF';
- const IMAGE_FOOTER_CENTER = 'CF';
- const IMAGE_FOOTER_RIGHT = 'RF';
-
- /**
- * OddHeader
- *
- * @var string
- */
- private $_oddHeader = '';
-
- /**
- * OddFooter
- *
- * @var string
- */
- private $_oddFooter = '';
-
- /**
- * EvenHeader
- *
- * @var string
- */
- private $_evenHeader = '';
-
- /**
- * EvenFooter
- *
- * @var string
- */
- private $_evenFooter = '';
-
- /**
- * FirstHeader
- *
- * @var string
- */
- private $_firstHeader = '';
-
- /**
- * FirstFooter
- *
- * @var string
- */
- private $_firstFooter = '';
-
- /**
- * Different header for Odd/Even, defaults to false
- *
- * @var boolean
- */
- private $_differentOddEven = false;
-
- /**
- * Different header for first page, defaults to false
- *
- * @var boolean
- */
- private $_differentFirst = false;
-
- /**
- * Scale with document, defaults to true
- *
- * @var boolean
- */
- private $_scaleWithDocument = true;
-
- /**
- * Align with margins, defaults to true
- *
- * @var boolean
- */
- private $_alignWithMargins = true;
-
- /**
- * Header/footer images
- *
- * @var PHPExcel_Worksheet_HeaderFooterDrawing[]
- */
- private $_headerFooterImages = array();
-
- /**
- * Create a new PHPExcel_Worksheet_HeaderFooter
- */
- public function __construct()
- {
- }
-
- /**
- * Get OddHeader
- *
- * @return string
- */
- public function getOddHeader() {
- return $this->_oddHeader;
- }
-
- /**
- * Set OddHeader
- *
- * @param string $pValue
- * @return PHPExcel_Worksheet_HeaderFooter
- */
- public function setOddHeader($pValue) {
- $this->_oddHeader = $pValue;
- return $this;
- }
-
- /**
- * Get OddFooter
- *
- * @return string
- */
- public function getOddFooter() {
- return $this->_oddFooter;
- }
-
- /**
- * Set OddFooter
- *
- * @param string $pValue
- * @return PHPExcel_Worksheet_HeaderFooter
- */
- public function setOddFooter($pValue) {
- $this->_oddFooter = $pValue;
- return $this;
- }
-
- /**
- * Get EvenHeader
- *
- * @return string
- */
- public function getEvenHeader() {
- return $this->_evenHeader;
- }
-
- /**
- * Set EvenHeader
- *
- * @param string $pValue
- * @return PHPExcel_Worksheet_HeaderFooter
- */
- public function setEvenHeader($pValue) {
- $this->_evenHeader = $pValue;
- return $this;
- }
-
- /**
- * Get EvenFooter
- *
- * @return string
- */
- public function getEvenFooter() {
- return $this->_evenFooter;
- }
-
- /**
- * Set EvenFooter
- *
- * @param string $pValue
- * @return PHPExcel_Worksheet_HeaderFooter
- */
- public function setEvenFooter($pValue) {
- $this->_evenFooter = $pValue;
- return $this;
- }
-
- /**
- * Get FirstHeader
- *
- * @return string
- */
- public function getFirstHeader() {
- return $this->_firstHeader;
- }
-
- /**
- * Set FirstHeader
- *
- * @param string $pValue
- * @return PHPExcel_Worksheet_HeaderFooter
- */
- public function setFirstHeader($pValue) {
- $this->_firstHeader = $pValue;
- return $this;
- }
-
- /**
- * Get FirstFooter
- *
- * @return string
- */
- public function getFirstFooter() {
- return $this->_firstFooter;
- }
-
- /**
- * Set FirstFooter
- *
- * @param string $pValue
- * @return PHPExcel_Worksheet_HeaderFooter
- */
- public function setFirstFooter($pValue) {
- $this->_firstFooter = $pValue;
- return $this;
- }
-
- /**
- * Get DifferentOddEven
- *
- * @return boolean
- */
- public function getDifferentOddEven() {
- return $this->_differentOddEven;
- }
-
- /**
- * Set DifferentOddEven
- *
- * @param boolean $pValue
- * @return PHPExcel_Worksheet_HeaderFooter
- */
- public function setDifferentOddEven($pValue = false) {
- $this->_differentOddEven = $pValue;
- return $this;
- }
-
- /**
- * Get DifferentFirst
- *
- * @return boolean
- */
- public function getDifferentFirst() {
- return $this->_differentFirst;
- }
-
- /**
- * Set DifferentFirst
- *
- * @param boolean $pValue
- * @return PHPExcel_Worksheet_HeaderFooter
- */
- public function setDifferentFirst($pValue = false) {
- $this->_differentFirst = $pValue;
- return $this;
- }
-
- /**
- * Get ScaleWithDocument
- *
- * @return boolean
- */
- public function getScaleWithDocument() {
- return $this->_scaleWithDocument;
- }
-
- /**
- * Set ScaleWithDocument
- *
- * @param boolean $pValue
- * @return PHPExcel_Worksheet_HeaderFooter
- */
- public function setScaleWithDocument($pValue = true) {
- $this->_scaleWithDocument = $pValue;
- return $this;
- }
-
- /**
- * Get AlignWithMargins
- *
- * @return boolean
- */
- public function getAlignWithMargins() {
- return $this->_alignWithMargins;
- }
-
- /**
- * Set AlignWithMargins
- *
- * @param boolean $pValue
- * @return PHPExcel_Worksheet_HeaderFooter
- */
- public function setAlignWithMargins($pValue = true) {
- $this->_alignWithMargins = $pValue;
- return $this;
- }
-
- /**
- * Add header/footer image
- *
- * @param PHPExcel_Worksheet_HeaderFooterDrawing $image
- * @param string $location
- * @throws Exception
- * @return PHPExcel_Worksheet_HeaderFooter
- */
- public function addImage(PHPExcel_Worksheet_HeaderFooterDrawing $image = null, $location = self::IMAGE_HEADER_LEFT) {
- $this->_headerFooterImages[$location] = $image;
- return $this;
- }
-
- /**
- * Remove header/footer image
- *
- * @param string $location
- * @throws Exception
- * @return PHPExcel_Worksheet_HeaderFooter
- */
- public function removeImage($location = self::IMAGE_HEADER_LEFT) {
- if (isset($this->_headerFooterImages[$location])) {
- unset($this->_headerFooterImages[$location]);
- }
- return $this;
- }
-
- /**
- * Set header/footer images
- *
- * @param PHPExcel_Worksheet_HeaderFooterDrawing[] $images
- * @throws Exception
- * @return PHPExcel_Worksheet_HeaderFooter
- */
- public function setImages($images) {
- if (!is_array($images)) {
- throw new Exception('Invalid parameter!');
- }
-
- $this->_headerFooterImages = $images;
- return $this;
- }
-
- /**
- * Get header/footer images
- *
- * @return PHPExcel_Worksheet_HeaderFooterDrawing[]
- */
- public function getImages() {
- // Sort array
- $images = array();
- if (isset($this->_headerFooterImages[self::IMAGE_HEADER_LEFT])) $images[self::IMAGE_HEADER_LEFT] = $this->_headerFooterImages[self::IMAGE_HEADER_LEFT];
- if (isset($this->_headerFooterImages[self::IMAGE_HEADER_CENTER])) $images[self::IMAGE_HEADER_CENTER] = $this->_headerFooterImages[self::IMAGE_HEADER_CENTER];
- if (isset($this->_headerFooterImages[self::IMAGE_HEADER_RIGHT])) $images[self::IMAGE_HEADER_RIGHT] = $this->_headerFooterImages[self::IMAGE_HEADER_RIGHT];
- if (isset($this->_headerFooterImages[self::IMAGE_FOOTER_LEFT])) $images[self::IMAGE_FOOTER_LEFT] = $this->_headerFooterImages[self::IMAGE_FOOTER_LEFT];
- if (isset($this->_headerFooterImages[self::IMAGE_FOOTER_CENTER])) $images[self::IMAGE_FOOTER_CENTER] = $this->_headerFooterImages[self::IMAGE_FOOTER_CENTER];
- if (isset($this->_headerFooterImages[self::IMAGE_FOOTER_RIGHT])) $images[self::IMAGE_FOOTER_RIGHT] = $this->_headerFooterImages[self::IMAGE_FOOTER_RIGHT];
- $this->_headerFooterImages = $images;
-
- return $this->_headerFooterImages;
- }
-
- /**
- * Implement PHP __clone to create a deep clone, not just a shallow copy.
- */
- public function __clone() {
- $vars = get_object_vars($this);
- foreach ($vars as $key => $value) {
- if (is_object($value)) {
- $this->$key = clone $value;
- } else {
- $this->$key = $value;
- }
- }
- }
-}
diff --git a/admin/survey/excel/PHPExcel/Worksheet/HeaderFooterDrawing.php b/admin/survey/excel/PHPExcel/Worksheet/HeaderFooterDrawing.php
deleted file mode 100644
index 1074dc4..0000000
--- a/admin/survey/excel/PHPExcel/Worksheet/HeaderFooterDrawing.php
+++ /dev/null
@@ -1,350 +0,0 @@
-<?php
-/**
- * PHPExcel
- *
- * Copyright (c) 2006 - 2012 PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel_Worksheet
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-
-/**
- * PHPExcel_Worksheet_HeaderFooterDrawing
- *
- * @category PHPExcel
- * @package PHPExcel_Worksheet
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- */
-class PHPExcel_Worksheet_HeaderFooterDrawing extends PHPExcel_Worksheet_Drawing implements PHPExcel_IComparable
-{
- /**
- * Path
- *
- * @var string
- */
- private $_path;
-
- /**
- * Name
- *
- * @var string
- */
- protected $_name;
-
- /**
- * Offset X
- *
- * @var int
- */
- protected $_offsetX;
-
- /**
- * Offset Y
- *
- * @var int
- */
- protected $_offsetY;
-
- /**
- * Width
- *
- * @var int
- */
- protected $_width;
-
- /**
- * Height
- *
- * @var int
- */
- protected $_height;
-
- /**
- * Proportional resize
- *
- * @var boolean
- */
- protected $_resizeProportional;
-
- /**
- * Create a new PHPExcel_Worksheet_HeaderFooterDrawing
- */
- public function __construct()
- {
- // Initialise values
- $this->_path = '';
- $this->_name = '';
- $this->_offsetX = 0;
- $this->_offsetY = 0;
- $this->_width = 0;
- $this->_height = 0;
- $this->_resizeProportional = true;
- }
-
- /**
- * Get Name
- *
- * @return string
- */
- public function getName() {
- return $this->_name;
- }
-
- /**
- * Set Name
- *
- * @param string $pValue
- * @return PHPExcel_Worksheet_HeaderFooterDrawing
- */
- public function setName($pValue = '') {
- $this->_name = $pValue;
- return $this;
- }
-
- /**
- * Get OffsetX
- *
- * @return int
- */
- public function getOffsetX() {
- return $this->_offsetX;
- }
-
- /**
- * Set OffsetX
- *
- * @param int $pValue
- * @return PHPExcel_Worksheet_HeaderFooterDrawing
- */
- public function setOffsetX($pValue = 0) {
- $this->_offsetX = $pValue;
- return $this;
- }
-
- /**
- * Get OffsetY
- *
- * @return int
- */
- public function getOffsetY() {
- return $this->_offsetY;
- }
-
- /**
- * Set OffsetY
- *
- * @param int $pValue
- * @return PHPExcel_Worksheet_HeaderFooterDrawing
- */
- public function setOffsetY($pValue = 0) {
- $this->_offsetY = $pValue;
- return $this;
- }
-
- /**
- * Get Width
- *
- * @return int
- */
- public function getWidth() {
- return $this->_width;
- }
-
- /**
- * Set Width
- *
- * @param int $pValue
- * @return PHPExcel_Worksheet_HeaderFooterDrawing
- */
- public function setWidth($pValue = 0) {
- // Resize proportional?
- if ($this->_resizeProportional && $pValue != 0) {
- $ratio = $this->_width / $this->_height;
- $this->_height = round($ratio * $pValue);
- }
-
- // Set width
- $this->_width = $pValue;
-
- return $this;
- }
-
- /**
- * Get Height
- *
- * @return int
- */
- public function getHeight() {
- return $this->_height;
- }
-
- /**
- * Set Height
- *
- * @param int $pValue
- * @return PHPExcel_Worksheet_HeaderFooterDrawing
- */
- public function setHeight($pValue = 0) {
- // Resize proportional?
- if ($this->_resizeProportional && $pValue != 0) {
- $ratio = $this->_width / $this->_height;
- $this->_width = round($ratio * $pValue);
- }
-
- // Set height
- $this->_height = $pValue;
-
- return $this;
- }
-
- /**
- * Set width and height with proportional resize
- * Example:
- * <code>
- * $objDrawing->setResizeProportional(true);
- * $objDrawing->setWidthAndHeight(160,120);
- * </code>
- *
- * @author Vincent@luo MSN:kele_100@hotmail.com
- * @param int $width
- * @param int $height
- * @return PHPExcel_Worksheet_HeaderFooterDrawing
- */
- public function setWidthAndHeight($width = 0, $height = 0) {
- $xratio = $width / $this->_width;
- $yratio = $height / $this->_height;
- if ($this->_resizeProportional && !($width == 0 || $height == 0)) {
- if (($xratio * $this->_height) < $height) {
- $this->_height = ceil($xratio * $this->_height);
- $this->_width = $width;
- } else {
- $this->_width = ceil($yratio * $this->_width);
- $this->_height = $height;
- }
- }
- return $this;
- }
-
- /**
- * Get ResizeProportional
- *
- * @return boolean
- */
- public function getResizeProportional() {
- return $this->_resizeProportional;
- }
-
- /**
- * Set ResizeProportional
- *
- * @param boolean $pValue
- * @return PHPExcel_Worksheet_HeaderFooterDrawing
- */
- public function setResizeProportional($pValue = true) {
- $this->_resizeProportional = $pValue;
- return $this;
- }
-
- /**
- * Get Filename
- *
- * @return string
- */
- public function getFilename() {
- return basename($this->_path);
- }
-
- /**
- * Get Extension
- *
- * @return string
- */
- public function getExtension() {
- $parts = explode(".", basename($this->_path));
- return end($parts);
- }
-
- /**
- * Get Path
- *
- * @return string
- */
- public function getPath() {
- return $this->_path;
- }
-
- /**
- * Set Path
- *
- * @param string $pValue File path
- * @param boolean $pVerifyFile Verify file
- * @throws Exception
- * @return PHPExcel_Worksheet_HeaderFooterDrawing
- */
- public function setPath($pValue = '', $pVerifyFile = true) {
- if ($pVerifyFile) {
- if (file_exists($pValue)) {
- $this->_path = $pValue;
-
- if ($this->_width == 0 && $this->_height == 0) {
- // Get width/height
- list($this->_width, $this->_height) = getimagesize($pValue);
- }
- } else {
- throw new Exception("File $pValue not found!");
- }
- } else {
- $this->_path = $pValue;
- }
- return $this;
- }
-
- /**
- * Get hash code
- *
- * @return string Hash code
- */
- public function getHashCode() {
- return md5(
- $this->_path
- . $this->_name
- . $this->_offsetX
- . $this->_offsetY
- . $this->_width
- . $this->_height
- . __CLASS__
- );
- }
-
- /**
- * Implement PHP __clone to create a deep clone, not just a shallow copy.
- */
- public function __clone() {
- $vars = get_object_vars($this);
- foreach ($vars as $key => $value) {
- if (is_object($value)) {
- $this->$key = clone $value;
- } else {
- $this->$key = $value;
- }
- }
- }
-}
diff --git a/admin/survey/excel/PHPExcel/Worksheet/MemoryDrawing.php b/admin/survey/excel/PHPExcel/Worksheet/MemoryDrawing.php
deleted file mode 100644
index 8dc4be7..0000000
--- a/admin/survey/excel/PHPExcel/Worksheet/MemoryDrawing.php
+++ /dev/null
@@ -1,200 +0,0 @@
-<?php
-/**
- * PHPExcel
- *
- * Copyright (c) 2006 - 2012 PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel_Worksheet
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-
-/**
- * PHPExcel_Worksheet_MemoryDrawing
- *
- * @category PHPExcel
- * @package PHPExcel_Worksheet
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- */
-class PHPExcel_Worksheet_MemoryDrawing extends PHPExcel_Worksheet_BaseDrawing implements PHPExcel_IComparable
-{
- /* Rendering functions */
- const RENDERING_DEFAULT = 'imagepng';
- const RENDERING_PNG = 'imagepng';
- const RENDERING_GIF = 'imagegif';
- const RENDERING_JPEG = 'imagejpeg';
-
- /* MIME types */
- const MIMETYPE_DEFAULT = 'image/png';
- const MIMETYPE_PNG = 'image/png';
- const MIMETYPE_GIF = 'image/gif';
- const MIMETYPE_JPEG = 'image/jpeg';
-
- /**
- * Image resource
- *
- * @var resource
- */
- private $_imageResource;
-
- /**
- * Rendering function
- *
- * @var string
- */
- private $_renderingFunction;
-
- /**
- * Mime type
- *
- * @var string
- */
- private $_mimeType;
-
- /**
- * Unique name
- *
- * @var string
- */
- private $_uniqueName;
-
- /**
- * Create a new PHPExcel_Worksheet_MemoryDrawing
- */
- public function __construct()
- {
- // Initialise values
- $this->_imageResource = null;
- $this->_renderingFunction = self::RENDERING_DEFAULT;
- $this->_mimeType = self::MIMETYPE_DEFAULT;
- $this->_uniqueName = md5(rand(0, 9999). time() . rand(0, 9999));
-
- // Initialize parent
- parent::__construct();
- }
-
- /**
- * Get image resource
- *
- * @return resource
- */
- public function getImageResource() {
- return $this->_imageResource;
- }
-
- /**
- * Set image resource
- *
- * @param $value resource
- * @return PHPExcel_Worksheet_MemoryDrawing
- */
- public function setImageResource($value = null) {
- $this->_imageResource = $value;
-
- if (!is_null($this->_imageResource)) {
- // Get width/height
- $this->_width = imagesx($this->_imageResource);
- $this->_height = imagesy($this->_imageResource);
- }
- return $this;
- }
-
- /**
- * Get rendering function
- *
- * @return string
- */
- public function getRenderingFunction() {
- return $this->_renderingFunction;
- }
-
- /**
- * Set rendering function
- *
- * @param string $value
- * @return PHPExcel_Worksheet_MemoryDrawing
- */
- public function setRenderingFunction($value = PHPExcel_Worksheet_MemoryDrawing::RENDERING_DEFAULT) {
- $this->_renderingFunction = $value;
- return $this;
- }
-
- /**
- * Get mime type
- *
- * @return string
- */
- public function getMimeType() {
- return $this->_mimeType;
- }
-
- /**
- * Set mime type
- *
- * @param string $value
- * @return PHPExcel_Worksheet_MemoryDrawing
- */
- public function setMimeType($value = PHPExcel_Worksheet_MemoryDrawing::MIMETYPE_DEFAULT) {
- $this->_mimeType = $value;
- return $this;
- }
-
- /**
- * Get indexed filename (using image index)
- *
- * @return string
- */
- public function getIndexedFilename() {
- $extension = strtolower($this->getMimeType());
- $extension = explode('/', $extension);
- $extension = $extension[1];
-
- return $this->_uniqueName . $this->getImageIndex() . '.' . $extension;
- }
-
- /**
- * Get hash code
- *
- * @return string Hash code
- */
- public function getHashCode() {
- return md5(
- $this->_renderingFunction
- . $this->_mimeType
- . $this->_uniqueName
- . parent::getHashCode()
- . __CLASS__
- );
- }
-
- /**
- * Implement PHP __clone to create a deep clone, not just a shallow copy.
- */
- public function __clone() {
- $vars = get_object_vars($this);
- foreach ($vars as $key => $value) {
- if (is_object($value)) {
- $this->$key = clone $value;
- } else {
- $this->$key = $value;
- }
- }
- }
-}
diff --git a/admin/survey/excel/PHPExcel/Worksheet/PageMargins.php b/admin/survey/excel/PHPExcel/Worksheet/PageMargins.php
deleted file mode 100644
index c288fd8..0000000
--- a/admin/survey/excel/PHPExcel/Worksheet/PageMargins.php
+++ /dev/null
@@ -1,220 +0,0 @@
-<?php
-/**
- * PHPExcel
- *
- * Copyright (c) 2006 - 2012 PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel_Worksheet
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-
-/**
- * PHPExcel_Worksheet_PageMargins
- *
- * @category PHPExcel
- * @package PHPExcel_Worksheet
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- */
-class PHPExcel_Worksheet_PageMargins
-{
- /**
- * Left
- *
- * @var double
- */
- private $_left = 0.7;
-
- /**
- * Right
- *
- * @var double
- */
- private $_right = 0.7;
-
- /**
- * Top
- *
- * @var double
- */
- private $_top = 0.75;
-
- /**
- * Bottom
- *
- * @var double
- */
- private $_bottom = 0.75;
-
- /**
- * Header
- *
- * @var double
- */
- private $_header = 0.3;
-
- /**
- * Footer
- *
- * @var double
- */
- private $_footer = 0.3;
-
- /**
- * Create a new PHPExcel_Worksheet_PageMargins
- */
- public function __construct()
- {
- }
-
- /**
- * Get Left
- *
- * @return double
- */
- public function getLeft() {
- return $this->_left;
- }
-
- /**
- * Set Left
- *
- * @param double $pValue
- * @return PHPExcel_Worksheet_PageMargins
- */
- public function setLeft($pValue) {
- $this->_left = $pValue;
- return $this;
- }
-
- /**
- * Get Right
- *
- * @return double
- */
- public function getRight() {
- return $this->_right;
- }
-
- /**
- * Set Right
- *
- * @param double $pValue
- * @return PHPExcel_Worksheet_PageMargins
- */
- public function setRight($pValue) {
- $this->_right = $pValue;
- return $this;
- }
-
- /**
- * Get Top
- *
- * @return double
- */
- public function getTop() {
- return $this->_top;
- }
-
- /**
- * Set Top
- *
- * @param double $pValue
- * @return PHPExcel_Worksheet_PageMargins
- */
- public function setTop($pValue) {
- $this->_top = $pValue;
- return $this;
- }
-
- /**
- * Get Bottom
- *
- * @return double
- */
- public function getBottom() {
- return $this->_bottom;
- }
-
- /**
- * Set Bottom
- *
- * @param double $pValue
- * @return PHPExcel_Worksheet_PageMargins
- */
- public function setBottom($pValue) {
- $this->_bottom = $pValue;
- return $this;
- }
-
- /**
- * Get Header
- *
- * @return double
- */
- public function getHeader() {
- return $this->_header;
- }
-
- /**
- * Set Header
- *
- * @param double $pValue
- * @return PHPExcel_Worksheet_PageMargins
- */
- public function setHeader($pValue) {
- $this->_header = $pValue;
- return $this;
- }
-
- /**
- * Get Footer
- *
- * @return double
- */
- public function getFooter() {
- return $this->_footer;
- }
-
- /**
- * Set Footer
- *
- * @param double $pValue
- * @return PHPExcel_Worksheet_PageMargins
- */
- public function setFooter($pValue) {
- $this->_footer = $pValue;
- return $this;
- }
-
- /**
- * Implement PHP __clone to create a deep clone, not just a shallow copy.
- */
- public function __clone() {
- $vars = get_object_vars($this);
- foreach ($vars as $key => $value) {
- if (is_object($value)) {
- $this->$key = clone $value;
- } else {
- $this->$key = $value;
- }
- }
- }
-}
diff --git a/admin/survey/excel/PHPExcel/Worksheet/PageSetup.php b/admin/survey/excel/PHPExcel/Worksheet/PageSetup.php
deleted file mode 100644
index eede154..0000000
--- a/admin/survey/excel/PHPExcel/Worksheet/PageSetup.php
+++ /dev/null
@@ -1,798 +0,0 @@
-<?php
-/**
- * PHPExcel
- *
- * Copyright (c) 2006 - 2012 PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel_Worksheet
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-
-/**
- * PHPExcel_Worksheet_PageSetup
- *
- * <code>
- * Paper size taken from Office Open XML Part 4 - Markup Language Reference, page 1988:
- *
- * 1 = Letter paper (8.5 in. by 11 in.)
- * 2 = Letter small paper (8.5 in. by 11 in.)
- * 3 = Tabloid paper (11 in. by 17 in.)
- * 4 = Ledger paper (17 in. by 11 in.)
- * 5 = Legal paper (8.5 in. by 14 in.)
- * 6 = Statement paper (5.5 in. by 8.5 in.)
- * 7 = Executive paper (7.25 in. by 10.5 in.)
- * 8 = A3 paper (297 mm by 420 mm)
- * 9 = A4 paper (210 mm by 297 mm)
- * 10 = A4 small paper (210 mm by 297 mm)
- * 11 = A5 paper (148 mm by 210 mm)
- * 12 = B4 paper (250 mm by 353 mm)
- * 13 = B5 paper (176 mm by 250 mm)
- * 14 = Folio paper (8.5 in. by 13 in.)
- * 15 = Quarto paper (215 mm by 275 mm)
- * 16 = Standard paper (10 in. by 14 in.)
- * 17 = Standard paper (11 in. by 17 in.)
- * 18 = Note paper (8.5 in. by 11 in.)
- * 19 = #9 envelope (3.875 in. by 8.875 in.)
- * 20 = #10 envelope (4.125 in. by 9.5 in.)
- * 21 = #11 envelope (4.5 in. by 10.375 in.)
- * 22 = #12 envelope (4.75 in. by 11 in.)
- * 23 = #14 envelope (5 in. by 11.5 in.)
- * 24 = C paper (17 in. by 22 in.)
- * 25 = D paper (22 in. by 34 in.)
- * 26 = E paper (34 in. by 44 in.)
- * 27 = DL envelope (110 mm by 220 mm)
- * 28 = C5 envelope (162 mm by 229 mm)
- * 29 = C3 envelope (324 mm by 458 mm)
- * 30 = C4 envelope (229 mm by 324 mm)
- * 31 = C6 envelope (114 mm by 162 mm)
- * 32 = C65 envelope (114 mm by 229 mm)
- * 33 = B4 envelope (250 mm by 353 mm)
- * 34 = B5 envelope (176 mm by 250 mm)
- * 35 = B6 envelope (176 mm by 125 mm)
- * 36 = Italy envelope (110 mm by 230 mm)
- * 37 = Monarch envelope (3.875 in. by 7.5 in.).
- * 38 = 6 3/4 envelope (3.625 in. by 6.5 in.)
- * 39 = US standard fanfold (14.875 in. by 11 in.)
- * 40 = German standard fanfold (8.5 in. by 12 in.)
- * 41 = German legal fanfold (8.5 in. by 13 in.)
- * 42 = ISO B4 (250 mm by 353 mm)
- * 43 = Japanese double postcard (200 mm by 148 mm)
- * 44 = Standard paper (9 in. by 11 in.)
- * 45 = Standard paper (10 in. by 11 in.)
- * 46 = Standard paper (15 in. by 11 in.)
- * 47 = Invite envelope (220 mm by 220 mm)
- * 50 = Letter extra paper (9.275 in. by 12 in.)
- * 51 = Legal extra paper (9.275 in. by 15 in.)
- * 52 = Tabloid extra paper (11.69 in. by 18 in.)
- * 53 = A4 extra paper (236 mm by 322 mm)
- * 54 = Letter transverse paper (8.275 in. by 11 in.)
- * 55 = A4 transverse paper (210 mm by 297 mm)
- * 56 = Letter extra transverse paper (9.275 in. by 12 in.)
- * 57 = SuperA/SuperA/A4 paper (227 mm by 356 mm)
- * 58 = SuperB/SuperB/A3 paper (305 mm by 487 mm)
- * 59 = Letter plus paper (8.5 in. by 12.69 in.)
- * 60 = A4 plus paper (210 mm by 330 mm)
- * 61 = A5 transverse paper (148 mm by 210 mm)
- * 62 = JIS B5 transverse paper (182 mm by 257 mm)
- * 63 = A3 extra paper (322 mm by 445 mm)
- * 64 = A5 extra paper (174 mm by 235 mm)
- * 65 = ISO B5 extra paper (201 mm by 276 mm)
- * 66 = A2 paper (420 mm by 594 mm)
- * 67 = A3 transverse paper (297 mm by 420 mm)
- * 68 = A3 extra transverse paper (322 mm by 445 mm)
- * </code>
- *
- * @category PHPExcel
- * @package PHPExcel_Worksheet
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- */
-class PHPExcel_Worksheet_PageSetup
-{
- /* Paper size */
- const PAPERSIZE_LETTER = 1;
- const PAPERSIZE_LETTER_SMALL = 2;
- const PAPERSIZE_TABLOID = 3;
- const PAPERSIZE_LEDGER = 4;
- const PAPERSIZE_LEGAL = 5;
- const PAPERSIZE_STATEMENT = 6;
- const PAPERSIZE_EXECUTIVE = 7;
- const PAPERSIZE_A3 = 8;
- const PAPERSIZE_A4 = 9;
- const PAPERSIZE_A4_SMALL = 10;
- const PAPERSIZE_A5 = 11;
- const PAPERSIZE_B4 = 12;
- const PAPERSIZE_B5 = 13;
- const PAPERSIZE_FOLIO = 14;
- const PAPERSIZE_QUARTO = 15;
- const PAPERSIZE_STANDARD_1 = 16;
- const PAPERSIZE_STANDARD_2 = 17;
- const PAPERSIZE_NOTE = 18;
- const PAPERSIZE_NO9_ENVELOPE = 19;
- const PAPERSIZE_NO10_ENVELOPE = 20;
- const PAPERSIZE_NO11_ENVELOPE = 21;
- const PAPERSIZE_NO12_ENVELOPE = 22;
- const PAPERSIZE_NO14_ENVELOPE = 23;
- const PAPERSIZE_C = 24;
- const PAPERSIZE_D = 25;
- const PAPERSIZE_E = 26;
- const PAPERSIZE_DL_ENVELOPE = 27;
- const PAPERSIZE_C5_ENVELOPE = 28;
- const PAPERSIZE_C3_ENVELOPE = 29;
- const PAPERSIZE_C4_ENVELOPE = 30;
- const PAPERSIZE_C6_ENVELOPE = 31;
- const PAPERSIZE_C65_ENVELOPE = 32;
- const PAPERSIZE_B4_ENVELOPE = 33;
- const PAPERSIZE_B5_ENVELOPE = 34;
- const PAPERSIZE_B6_ENVELOPE = 35;
- const PAPERSIZE_ITALY_ENVELOPE = 36;
- const PAPERSIZE_MONARCH_ENVELOPE = 37;
- const PAPERSIZE_6_3_4_ENVELOPE = 38;
- const PAPERSIZE_US_STANDARD_FANFOLD = 39;
- const PAPERSIZE_GERMAN_STANDARD_FANFOLD = 40;
- const PAPERSIZE_GERMAN_LEGAL_FANFOLD = 41;
- const PAPERSIZE_ISO_B4 = 42;
- const PAPERSIZE_JAPANESE_DOUBLE_POSTCARD = 43;
- const PAPERSIZE_STANDARD_PAPER_1 = 44;
- const PAPERSIZE_STANDARD_PAPER_2 = 45;
- const PAPERSIZE_STANDARD_PAPER_3 = 46;
- const PAPERSIZE_INVITE_ENVELOPE = 47;
- const PAPERSIZE_LETTER_EXTRA_PAPER = 48;
- const PAPERSIZE_LEGAL_EXTRA_PAPER = 49;
- const PAPERSIZE_TABLOID_EXTRA_PAPER = 50;
- const PAPERSIZE_A4_EXTRA_PAPER = 51;
- const PAPERSIZE_LETTER_TRANSVERSE_PAPER = 52;
- const PAPERSIZE_A4_TRANSVERSE_PAPER = 53;
- const PAPERSIZE_LETTER_EXTRA_TRANSVERSE_PAPER = 54;
- const PAPERSIZE_SUPERA_SUPERA_A4_PAPER = 55;
- const PAPERSIZE_SUPERB_SUPERB_A3_PAPER = 56;
- const PAPERSIZE_LETTER_PLUS_PAPER = 57;
- const PAPERSIZE_A4_PLUS_PAPER = 58;
- const PAPERSIZE_A5_TRANSVERSE_PAPER = 59;
- const PAPERSIZE_JIS_B5_TRANSVERSE_PAPER = 60;
- const PAPERSIZE_A3_EXTRA_PAPER = 61;
- const PAPERSIZE_A5_EXTRA_PAPER = 62;
- const PAPERSIZE_ISO_B5_EXTRA_PAPER = 63;
- const PAPERSIZE_A2_PAPER = 64;
- const PAPERSIZE_A3_TRANSVERSE_PAPER = 65;
- const PAPERSIZE_A3_EXTRA_TRANSVERSE_PAPER = 66;
-
- /* Page orientation */
- const ORIENTATION_DEFAULT = 'default';
- const ORIENTATION_LANDSCAPE = 'landscape';
- const ORIENTATION_PORTRAIT = 'portrait';
-
- /* Print Range Set Method */
- const SETPRINTRANGE_OVERWRITE = 'O';
- const SETPRINTRANGE_INSERT = 'I';
-
-
- /**
- * Paper size
- *
- * @var int
- */
- private $_paperSize = PHPExcel_Worksheet_PageSetup::PAPERSIZE_LETTER;
-
- /**
- * Orientation
- *
- * @var string
- */
- private $_orientation = PHPExcel_Worksheet_PageSetup::ORIENTATION_DEFAULT;
-
- /**
- * Scale (Print Scale)
- *
- * Print scaling. Valid values range from 10 to 400
- * This setting is overridden when fitToWidth and/or fitToHeight are in use
- *
- * @var int?
- */
- private $_scale = 100;
-
- /**
- * Fit To Page
- * Whether scale or fitToWith / fitToHeight applies
- *
- * @var boolean
- */
- private $_fitToPage = FALSE;
-
- /**
- * Fit To Height
- * Number of vertical pages to fit on
- *
- * @var int?
- */
- private $_fitToHeight = 1;
-
- /**
- * Fit To Width
- * Number of horizontal pages to fit on
- *
- * @var int?
- */
- private $_fitToWidth = 1;
-
- /**
- * Columns to repeat at left
- *
- * @var array Containing start column and end column, empty array if option unset
- */
- private $_columnsToRepeatAtLeft = array('', '');
-
- /**
- * Rows to repeat at top
- *
- * @var array Containing start row number and end row number, empty array if option unset
- */
- private $_rowsToRepeatAtTop = array(0, 0);
-
- /**
- * Center page horizontally
- *
- * @var boolean
- */
- private $_horizontalCentered = FALSE;
-
- /**
- * Center page vertically
- *
- * @var boolean
- */
- private $_verticalCentered = FALSE;
-
- /**
- * Print area
- *
- * @var string
- */
- private $_printArea = NULL;
-
- /**
- * First page number
- *
- * @var int
- */
- private $_firstPageNumber = NULL;
-
- /**
- * Create a new PHPExcel_Worksheet_PageSetup
- */
- public function __construct()
- {
- }
-
- /**
- * Get Paper Size
- *
- * @return int
- */
- public function getPaperSize() {
- return $this->_paperSize;
- }
-
- /**
- * Set Paper Size
- *
- * @param int $pValue
- * @return PHPExcel_Worksheet_PageSetup
- */
- public function setPaperSize($pValue = PHPExcel_Worksheet_PageSetup::PAPERSIZE_LETTER) {
- $this->_paperSize = $pValue;
- return $this;
- }
-
- /**
- * Get Orientation
- *
- * @return string
- */
- public function getOrientation() {
- return $this->_orientation;
- }
-
- /**
- * Set Orientation
- *
- * @param string $pValue
- * @return PHPExcel_Worksheet_PageSetup
- */
- public function setOrientation($pValue = PHPExcel_Worksheet_PageSetup::ORIENTATION_DEFAULT) {
- $this->_orientation = $pValue;
- return $this;
- }
-
- /**
- * Get Scale
- *
- * @return int?
- */
- public function getScale() {
- return $this->_scale;
- }
-
- /**
- * Set Scale
- *
- * Print scaling. Valid values range from 10 to 400
- * This setting is overridden when fitToWidth and/or fitToHeight are in use
- *
- * @param int? $pValue
- * @param boolean $pUpdate Update fitToPage so scaling applies rather than fitToHeight / fitToWidth
- * @return PHPExcel_Worksheet_PageSetup
- * @throws Exception
- */
- public function setScale($pValue = 100, $pUpdate = true) {
- // Microsoft Office Excel 2007 only allows setting a scale between 10 and 400 via the user interface,
- // but it is apparently still able to handle any scale >= 0, where 0 results in 100
- if (($pValue >= 0) || is_null($pValue)) {
- $this->_scale = $pValue;
- if ($pUpdate) {
- $this->_fitToPage = false;
- }
- } else {
- throw new Exception("Scale must not be negative");
- }
- return $this;
- }
-
- /**
- * Get Fit To Page
- *
- * @return boolean
- */
- public function getFitToPage() {
- return $this->_fitToPage;
- }
-
- /**
- * Set Fit To Page
- *
- * @param boolean $pValue
- * @return PHPExcel_Worksheet_PageSetup
- */
- public function setFitToPage($pValue = TRUE) {
- $this->_fitToPage = $pValue;
- return $this;
- }
-
- /**
- * Get Fit To Height
- *
- * @return int?
- */
- public function getFitToHeight() {
- return $this->_fitToHeight;
- }
-
- /**
- * Set Fit To Height
- *
- * @param int? $pValue
- * @param boolean $pUpdate Update fitToPage so it applies rather than scaling
- * @return PHPExcel_Worksheet_PageSetup
- */
- public function setFitToHeight($pValue = 1, $pUpdate = TRUE) {
- $this->_fitToHeight = $pValue;
- if ($pUpdate) {
- $this->_fitToPage = TRUE;
- }
- return $this;
- }
-
- /**
- * Get Fit To Width
- *
- * @return int?
- */
- public function getFitToWidth() {
- return $this->_fitToWidth;
- }
-
- /**
- * Set Fit To Width
- *
- * @param int? $pValue
- * @param boolean $pUpdate Update fitToPage so it applies rather than scaling
- * @return PHPExcel_Worksheet_PageSetup
- */
- public function setFitToWidth($pValue = 1, $pUpdate = TRUE) {
- $this->_fitToWidth = $pValue;
- if ($pUpdate) {
- $this->_fitToPage = TRUE;
- }
- return $this;
- }
-
- /**
- * Is Columns to repeat at left set?
- *
- * @return boolean
- */
- public function isColumnsToRepeatAtLeftSet() {
- if (is_array($this->_columnsToRepeatAtLeft)) {
- if ($this->_columnsToRepeatAtLeft[0] != '' && $this->_columnsToRepeatAtLeft[1] != '') {
- return true;
- }
- }
-
- return false;
- }
-
- /**
- * Get Columns to repeat at left
- *
- * @return array Containing start column and end column, empty array if option unset
- */
- public function getColumnsToRepeatAtLeft() {
- return $this->_columnsToRepeatAtLeft;
- }
-
- /**
- * Set Columns to repeat at left
- *
- * @param array $pValue Containing start column and end column, empty array if option unset
- * @return PHPExcel_Worksheet_PageSetup
- */
- public function setColumnsToRepeatAtLeft($pValue = null) {
- if (is_array($pValue)) {
- $this->_columnsToRepeatAtLeft = $pValue;
- }
- return $this;
- }
-
- /**
- * Set Columns to repeat at left by start and end
- *
- * @param string $pStart
- * @param string $pEnd
- * @return PHPExcel_Worksheet_PageSetup
- */
- public function setColumnsToRepeatAtLeftByStartAndEnd($pStart = 'A', $pEnd = 'A') {
- $this->_columnsToRepeatAtLeft = array($pStart, $pEnd);
- return $this;
- }
-
- /**
- * Is Rows to repeat at top set?
- *
- * @return boolean
- */
- public function isRowsToRepeatAtTopSet() {
- if (is_array($this->_rowsToRepeatAtTop)) {
- if ($this->_rowsToRepeatAtTop[0] != 0 && $this->_rowsToRepeatAtTop[1] != 0) {
- return true;
- }
- }
-
- return false;
- }
-
- /**
- * Get Rows to repeat at top
- *
- * @return array Containing start column and end column, empty array if option unset
- */
- public function getRowsToRepeatAtTop() {
- return $this->_rowsToRepeatAtTop;
- }
-
- /**
- * Set Rows to repeat at top
- *
- * @param array $pValue Containing start column and end column, empty array if option unset
- * @return PHPExcel_Worksheet_PageSetup
- */
- public function setRowsToRepeatAtTop($pValue = null) {
- if (is_array($pValue)) {
- $this->_rowsToRepeatAtTop = $pValue;
- }
- return $this;
- }
-
- /**
- * Set Rows to repeat at top by start and end
- *
- * @param int $pStart
- * @param int $pEnd
- * @return PHPExcel_Worksheet_PageSetup
- */
- public function setRowsToRepeatAtTopByStartAndEnd($pStart = 1, $pEnd = 1) {
- $this->_rowsToRepeatAtTop = array($pStart, $pEnd);
- return $this;
- }
-
- /**
- * Get center page horizontally
- *
- * @return bool
- */
- public function getHorizontalCentered() {
- return $this->_horizontalCentered;
- }
-
- /**
- * Set center page horizontally
- *
- * @param bool $value
- * @return PHPExcel_Worksheet_PageSetup
- */
- public function setHorizontalCentered($value = false) {
- $this->_horizontalCentered = $value;
- return $this;
- }
-
- /**
- * Get center page vertically
- *
- * @return bool
- */
- public function getVerticalCentered() {
- return $this->_verticalCentered;
- }
-
- /**
- * Set center page vertically
- *
- * @param bool $value
- * @return PHPExcel_Worksheet_PageSetup
- */
- public function setVerticalCentered($value = false) {
- $this->_verticalCentered = $value;
- return $this;
- }
-
- /**
- * Get print area
- *
- * @param int $index Identifier for a specific print area range if several ranges have been set
- * Default behaviour, or a index value of 0, will return all ranges as a comma-separated string
- * Otherwise, the specific range identified by the value of $index will be returned
- * Print areas are numbered from 1
- * @throws Exception
- * @return string
- */
- public function getPrintArea($index = 0) {
- if ($index == 0) {
- return $this->_printArea;
- }
- $printAreas = explode(',',$this->_printArea);
- if (isset($printAreas[$index-1])) {
- return $printAreas[$index-1];
- }
- throw new Exception("Requested Print Area does not exist");
- }
-
- /**
- * Is print area set?
- *
- * @param int $index Identifier for a specific print area range if several ranges have been set
- * Default behaviour, or an index value of 0, will identify whether any print range is set
- * Otherwise, existence of the range identified by the value of $index will be returned
- * Print areas are numbered from 1
- * @return boolean
- */
- public function isPrintAreaSet($index = 0) {
- if ($index == 0) {
- return !is_null($this->_printArea);
- }
- $printAreas = explode(',',$this->_printArea);
- return isset($printAreas[$index-1]);
- }
-
- /**
- * Clear a print area
- *
- * @param int $index Identifier for a specific print area range if several ranges have been set
- * Default behaviour, or an index value of 0, will clear all print ranges that are set
- * Otherwise, the range identified by the value of $index will be removed from the series
- * Print areas are numbered from 1
- * @return PHPExcel_Worksheet_PageSetup
- */
- public function clearPrintArea($index = 0) {
- if ($index == 0) {
- $this->_printArea = NULL;
- } else {
- $printAreas = explode(',',$this->_printArea);
- if (isset($printAreas[$index-1])) {
- unset($printAreas[$index-1]);
- $this->_printArea = implode(',',$printAreas);
- }
- }
-
- return $this;
- }
-
- /**
- * Set print area. e.g. 'A1:D10' or 'A1:D10,G5:M20'
- *
- * @param string $value
- * @param int $index Identifier for a specific print area range allowing several ranges to be set
- * When the method is "O"verwrite, then a positive integer index will overwrite that indexed
- * entry in the print areas list; a negative index value will identify which entry to
- * overwrite working bacward through the print area to the list, with the last entry as -1.
- * Specifying an index value of 0, will overwrite <b>all</b> existing print ranges.
- * When the method is "I"nsert, then a positive index will insert after that indexed entry in
- * the print areas list, while a negative index will insert before the indexed entry.
- * Specifying an index value of 0, will always append the new print range at the end of the
- * list.
- * Print areas are numbered from 1
- * @param string $method Determines the method used when setting multiple print areas
- * Default behaviour, or the "O" method, overwrites existing print area
- * The "I" method, inserts the new print area before any specified index, or at the end of the list
- * @return PHPExcel_Worksheet_PageSetup
- * @throws Exception
- */
- public function setPrintArea($value, $index = 0, $method = self::SETPRINTRANGE_OVERWRITE) {
- if (strpos($value,'!') !== false) {
- throw new Exception('Cell coordinate must not specify a worksheet.');
- } elseif (strpos($value,':') === false) {
- throw new Exception('Cell coordinate must be a range of cells.');
- } elseif (strpos($value,'$') !== false) {
- throw new Exception('Cell coordinate must not be absolute.');
- }
- $value = strtoupper($value);
-
- if ($method == self::SETPRINTRANGE_OVERWRITE) {
- if ($index == 0) {
- $this->_printArea = $value;
- } else {
- $printAreas = explode(',',$this->_printArea);
- if($index < 0) {
- $index = count($printAreas) - abs($index) + 1;
- }
- if (($index <= 0) || ($index > count($printAreas))) {
- throw new Exception('Invalid index for setting print range.');
- }
- $printAreas[$index-1] = $value;
- $this->_printArea = implode(',',$printAreas);
- }
- } elseif($method == self::SETPRINTRANGE_INSERT) {
- if ($index == 0) {
- $this->_printArea .= ($this->_printArea == '') ? $value : ','.$value;
- } else {
- $printAreas = explode(',',$this->_printArea);
- if($index < 0) {
- $index = abs($index) - 1;
- }
- if ($index > count($printAreas)) {
- throw new Exception('Invalid index for setting print range.');
- }
- $printAreas = array_merge(array_slice($printAreas,0,$index),array($value),array_slice($printAreas,$index));
- $this->_printArea = implode(',',$printAreas);
- }
- } else {
- throw new Exception('Invalid method for setting print range.');
- }
-
- return $this;
- }
-
- /**
- * Add a new print area (e.g. 'A1:D10' or 'A1:D10,G5:M20') to the list of print areas
- *
- * @param string $value
- * @param int $index Identifier for a specific print area range allowing several ranges to be set
- * A positive index will insert after that indexed entry in the print areas list, while a
- * negative index will insert before the indexed entry.
- * Specifying an index value of 0, will always append the new print range at the end of the
- * list.
- * Print areas are numbered from 1
- * @return PHPExcel_Worksheet_PageSetup
- * @throws Exception
- */
- public function addPrintArea($value, $index = -1) {
- return $this->setPrintArea($value, $index, self::SETPRINTRANGE_INSERT);
- }
-
- /**
- * Set print area
- *
- * @param int $column1 Column 1
- * @param int $row1 Row 1
- * @param int $column2 Column 2
- * @param int $row2 Row 2
- * @param int $index Identifier for a specific print area range allowing several ranges to be set
- * When the method is "O"verwrite, then a positive integer index will overwrite that indexed
- * entry in the print areas list; a negative index value will identify which entry to
- * overwrite working bacward through the print area to the list, with the last entry as -1.
- * Specifying an index value of 0, will overwrite <b>all</b> existing print ranges.
- * When the method is "I"nsert, then a positive index will insert after that indexed entry in
- * the print areas list, while a negative index will insert before the indexed entry.
- * Specifying an index value of 0, will always append the new print range at the end of the
- * list.
- * Print areas are numbered from 1
- * @param string $method Determines the method used when setting multiple print areas
- * Default behaviour, or the "O" method, overwrites existing print area
- * The "I" method, inserts the new print area before any specified index, or at the end of the list
- * @return PHPExcel_Worksheet_PageSetup
- * @throws Exception
- */
- public function setPrintAreaByColumnAndRow($column1, $row1, $column2, $row2, $index = 0, $method = self::SETPRINTRANGE_OVERWRITE)
- {
- return $this->setPrintArea(PHPExcel_Cell::stringFromColumnIndex($column1) . $row1 . ':' . PHPExcel_Cell::stringFromColumnIndex($column2) . $row2, $index, $method);
- }
-
- /**
- * Add a new print area to the list of print areas
- *
- * @param int $column1 Start Column for the print area
- * @param int $row1 Start Row for the print area
- * @param int $column2 End Column for the print area
- * @param int $row2 End Row for the print area
- * @param int $index Identifier for a specific print area range allowing several ranges to be set
- * A positive index will insert after that indexed entry in the print areas list, while a
- * negative index will insert before the indexed entry.
- * Specifying an index value of 0, will always append the new print range at the end of the
- * list.
- * Print areas are numbered from 1
- * @return PHPExcel_Worksheet_PageSetup
- * @throws Exception
- */
- public function addPrintAreaByColumnAndRow($column1, $row1, $column2, $row2, $index = -1)
- {
- return $this->setPrintArea(PHPExcel_Cell::stringFromColumnIndex($column1) . $row1 . ':' . PHPExcel_Cell::stringFromColumnIndex($column2) . $row2, $index, self::SETPRINTRANGE_INSERT);
- }
-
- /**
- * Get first page number
- *
- * @return int
- */
- public function getFirstPageNumber() {
- return $this->_firstPageNumber;
- }
-
- /**
- * Set first page number
- *
- * @param int $value
- * @return PHPExcel_Worksheet_HeaderFooter
- */
- public function setFirstPageNumber($value = null) {
- $this->_firstPageNumber = $value;
- return $this;
- }
-
- /**
- * Reset first page number
- *
- * @return PHPExcel_Worksheet_HeaderFooter
- */
- public function resetFirstPageNumber() {
- return $this->setFirstPageNumber(null);
- }
-
- /**
- * Implement PHP __clone to create a deep clone, not just a shallow copy.
- */
- public function __clone() {
- $vars = get_object_vars($this);
- foreach ($vars as $key => $value) {
- if (is_object($value)) {
- $this->$key = clone $value;
- } else {
- $this->$key = $value;
- }
- }
- }
-}
diff --git a/admin/survey/excel/PHPExcel/Worksheet/Protection.php b/admin/survey/excel/PHPExcel/Worksheet/Protection.php
deleted file mode 100644
index 68e665e..0000000
--- a/admin/survey/excel/PHPExcel/Worksheet/Protection.php
+++ /dev/null
@@ -1,545 +0,0 @@
-<?php
-/**
- * PHPExcel
- *
- * Copyright (c) 2006 - 2012 PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel_Worksheet
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-
-/**
- * PHPExcel_Worksheet_Protection
- *
- * @category PHPExcel
- * @package PHPExcel_Worksheet
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- */
-class PHPExcel_Worksheet_Protection
-{
- /**
- * Sheet
- *
- * @var boolean
- */
- private $_sheet = false;
-
- /**
- * Objects
- *
- * @var boolean
- */
- private $_objects = false;
-
- /**
- * Scenarios
- *
- * @var boolean
- */
- private $_scenarios = false;
-
- /**
- * Format cells
- *
- * @var boolean
- */
- private $_formatCells = false;
-
- /**
- * Format columns
- *
- * @var boolean
- */
- private $_formatColumns = false;
-
- /**
- * Format rows
- *
- * @var boolean
- */
- private $_formatRows = false;
-
- /**
- * Insert columns
- *
- * @var boolean
- */
- private $_insertColumns = false;
-
- /**
- * Insert rows
- *
- * @var boolean
- */
- private $_insertRows = false;
-
- /**
- * Insert hyperlinks
- *
- * @var boolean
- */
- private $_insertHyperlinks = false;
-
- /**
- * Delete columns
- *
- * @var boolean
- */
- private $_deleteColumns = false;
-
- /**
- * Delete rows
- *
- * @var boolean
- */
- private $_deleteRows = false;
-
- /**
- * Select locked cells
- *
- * @var boolean
- */
- private $_selectLockedCells = false;
-
- /**
- * Sort
- *
- * @var boolean
- */
- private $_sort = false;
-
- /**
- * AutoFilter
- *
- * @var boolean
- */
- private $_autoFilter = false;
-
- /**
- * Pivot tables
- *
- * @var boolean
- */
- private $_pivotTables = false;
-
- /**
- * Select unlocked cells
- *
- * @var boolean
- */
- private $_selectUnlockedCells = false;
-
- /**
- * Password
- *
- * @var string
- */
- private $_password = '';
-
- /**
- * Create a new PHPExcel_Worksheet_Protection
- */
- public function __construct()
- {
- }
-
- /**
- * Is some sort of protection enabled?
- *
- * @return boolean
- */
- function isProtectionEnabled() {
- return $this->_sheet ||
- $this->_objects ||
- $this->_scenarios ||
- $this->_formatCells ||
- $this->_formatColumns ||
- $this->_formatRows ||
- $this->_insertColumns ||
- $this->_insertRows ||
- $this->_insertHyperlinks ||
- $this->_deleteColumns ||
- $this->_deleteRows ||
- $this->_selectLockedCells ||
- $this->_sort ||
- $this->_autoFilter ||
- $this->_pivotTables ||
- $this->_selectUnlockedCells;
- }
-
- /**
- * Get Sheet
- *
- * @return boolean
- */
- function getSheet() {
- return $this->_sheet;
- }
-
- /**
- * Set Sheet
- *
- * @param boolean $pValue
- * @return PHPExcel_Worksheet_Protection
- */
- function setSheet($pValue = false) {
- $this->_sheet = $pValue;
- return $this;
- }
-
- /**
- * Get Objects
- *
- * @return boolean
- */
- function getObjects() {
- return $this->_objects;
- }
-
- /**
- * Set Objects
- *
- * @param boolean $pValue
- * @return PHPExcel_Worksheet_Protection
- */
- function setObjects($pValue = false) {
- $this->_objects = $pValue;
- return $this;
- }
-
- /**
- * Get Scenarios
- *
- * @return boolean
- */
- function getScenarios() {
- return $this->_scenarios;
- }
-
- /**
- * Set Scenarios
- *
- * @param boolean $pValue
- * @return PHPExcel_Worksheet_Protection
- */
- function setScenarios($pValue = false) {
- $this->_scenarios = $pValue;
- return $this;
- }
-
- /**
- * Get FormatCells
- *
- * @return boolean
- */
- function getFormatCells() {
- return $this->_formatCells;
- }
-
- /**
- * Set FormatCells
- *
- * @param boolean $pValue
- * @return PHPExcel_Worksheet_Protection
- */
- function setFormatCells($pValue = false) {
- $this->_formatCells = $pValue;
- return $this;
- }
-
- /**
- * Get FormatColumns
- *
- * @return boolean
- */
- function getFormatColumns() {
- return $this->_formatColumns;
- }
-
- /**
- * Set FormatColumns
- *
- * @param boolean $pValue
- * @return PHPExcel_Worksheet_Protection
- */
- function setFormatColumns($pValue = false) {
- $this->_formatColumns = $pValue;
- return $this;
- }
-
- /**
- * Get FormatRows
- *
- * @return boolean
- */
- function getFormatRows() {
- return $this->_formatRows;
- }
-
- /**
- * Set FormatRows
- *
- * @param boolean $pValue
- * @return PHPExcel_Worksheet_Protection
- */
- function setFormatRows($pValue = false) {
- $this->_formatRows = $pValue;
- return $this;
- }
-
- /**
- * Get InsertColumns
- *
- * @return boolean
- */
- function getInsertColumns() {
- return $this->_insertColumns;
- }
-
- /**
- * Set InsertColumns
- *
- * @param boolean $pValue
- * @return PHPExcel_Worksheet_Protection
- */
- function setInsertColumns($pValue = false) {
- $this->_insertColumns = $pValue;
- return $this;
- }
-
- /**
- * Get InsertRows
- *
- * @return boolean
- */
- function getInsertRows() {
- return $this->_insertRows;
- }
-
- /**
- * Set InsertRows
- *
- * @param boolean $pValue
- * @return PHPExcel_Worksheet_Protection
- */
- function setInsertRows($pValue = false) {
- $this->_insertRows = $pValue;
- return $this;
- }
-
- /**
- * Get InsertHyperlinks
- *
- * @return boolean
- */
- function getInsertHyperlinks() {
- return $this->_insertHyperlinks;
- }
-
- /**
- * Set InsertHyperlinks
- *
- * @param boolean $pValue
- * @return PHPExcel_Worksheet_Protection
- */
- function setInsertHyperlinks($pValue = false) {
- $this->_insertHyperlinks = $pValue;
- return $this;
- }
-
- /**
- * Get DeleteColumns
- *
- * @return boolean
- */
- function getDeleteColumns() {
- return $this->_deleteColumns;
- }
-
- /**
- * Set DeleteColumns
- *
- * @param boolean $pValue
- * @return PHPExcel_Worksheet_Protection
- */
- function setDeleteColumns($pValue = false) {
- $this->_deleteColumns = $pValue;
- return $this;
- }
-
- /**
- * Get DeleteRows
- *
- * @return boolean
- */
- function getDeleteRows() {
- return $this->_deleteRows;
- }
-
- /**
- * Set DeleteRows
- *
- * @param boolean $pValue
- * @return PHPExcel_Worksheet_Protection
- */
- function setDeleteRows($pValue = false) {
- $this->_deleteRows = $pValue;
- return $this;
- }
-
- /**
- * Get SelectLockedCells
- *
- * @return boolean
- */
- function getSelectLockedCells() {
- return $this->_selectLockedCells;
- }
-
- /**
- * Set SelectLockedCells
- *
- * @param boolean $pValue
- * @return PHPExcel_Worksheet_Protection
- */
- function setSelectLockedCells($pValue = false) {
- $this->_selectLockedCells = $pValue;
- return $this;
- }
-
- /**
- * Get Sort
- *
- * @return boolean
- */
- function getSort() {
- return $this->_sort;
- }
-
- /**
- * Set Sort
- *
- * @param boolean $pValue
- * @return PHPExcel_Worksheet_Protection
- */
- function setSort($pValue = false) {
- $this->_sort = $pValue;
- return $this;
- }
-
- /**
- * Get AutoFilter
- *
- * @return boolean
- */
- function getAutoFilter() {
- return $this->_autoFilter;
- }
-
- /**
- * Set AutoFilter
- *
- * @param boolean $pValue
- * @return PHPExcel_Worksheet_Protection
- */
- function setAutoFilter($pValue = false) {
- $this->_autoFilter = $pValue;
- return $this;
- }
-
- /**
- * Get PivotTables
- *
- * @return boolean
- */
- function getPivotTables() {
- return $this->_pivotTables;
- }
-
- /**
- * Set PivotTables
- *
- * @param boolean $pValue
- * @return PHPExcel_Worksheet_Protection
- */
- function setPivotTables($pValue = false) {
- $this->_pivotTables = $pValue;
- return $this;
- }
-
- /**
- * Get SelectUnlockedCells
- *
- * @return boolean
- */
- function getSelectUnlockedCells() {
- return $this->_selectUnlockedCells;
- }
-
- /**
- * Set SelectUnlockedCells
- *
- * @param boolean $pValue
- * @return PHPExcel_Worksheet_Protection
- */
- function setSelectUnlockedCells($pValue = false) {
- $this->_selectUnlockedCells = $pValue;
- return $this;
- }
-
- /**
- * Get Password (hashed)
- *
- * @return string
- */
- function getPassword() {
- return $this->_password;
- }
-
- /**
- * Set Password
- *
- * @param string $pValue
- * @param boolean $pAlreadyHashed If the password has already been hashed, set this to true
- * @return PHPExcel_Worksheet_Protection
- */
- function setPassword($pValue = '', $pAlreadyHashed = false) {
- if (!$pAlreadyHashed) {
- $pValue = PHPExcel_Shared_PasswordHasher::hashPassword($pValue);
- }
- $this->_password = $pValue;
- return $this;
- }
-
- /**
- * Implement PHP __clone to create a deep clone, not just a shallow copy.
- */
- public function __clone() {
- $vars = get_object_vars($this);
- foreach ($vars as $key => $value) {
- if (is_object($value)) {
- $this->$key = clone $value;
- } else {
- $this->$key = $value;
- }
- }
- }
-}
diff --git a/admin/survey/excel/PHPExcel/Worksheet/Row.php b/admin/survey/excel/PHPExcel/Worksheet/Row.php
deleted file mode 100644
index 8d1aea0..0000000
--- a/admin/survey/excel/PHPExcel/Worksheet/Row.php
+++ /dev/null
@@ -1,90 +0,0 @@
-<?php
-/**
- * PHPExcel
- *
- * Copyright (c) 2006 - 2012 PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel_Worksheet
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-
-/**
- * PHPExcel_Worksheet_Row
- *
- * Represents a row in PHPExcel_Worksheet, used by PHPExcel_Worksheet_RowIterator
- *
- * @category PHPExcel
- * @package PHPExcel_Worksheet
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- */
-class PHPExcel_Worksheet_Row
-{
- /**
- * PHPExcel_Worksheet
- *
- * @var PHPExcel_Worksheet
- */
- private $_parent;
-
- /**
- * Row index
- *
- * @var int
- */
- private $_rowIndex = 0;
-
- /**
- * Create a new row
- *
- * @param PHPExcel_Worksheet $parent
- * @param int $rowIndex
- */
- public function __construct(PHPExcel_Worksheet $parent = null, $rowIndex = 1) {
- // Set parent and row index
- $this->_parent = $parent;
- $this->_rowIndex = $rowIndex;
- }
-
- /**
- * Destructor
- */
- public function __destruct() {
- unset($this->_parent);
- }
-
- /**
- * Get row index
- *
- * @return int
- */
- public function getRowIndex() {
- return $this->_rowIndex;
- }
-
- /**
- * Get cell iterator
- *
- * @return PHPExcel_Worksheet_CellIterator
- */
- public function getCellIterator() {
- return new PHPExcel_Worksheet_CellIterator($this->_parent, $this->_rowIndex);
- }
-}
diff --git a/admin/survey/excel/PHPExcel/Worksheet/RowDimension.php b/admin/survey/excel/PHPExcel/Worksheet/RowDimension.php
deleted file mode 100644
index 6f19957..0000000
--- a/admin/survey/excel/PHPExcel/Worksheet/RowDimension.php
+++ /dev/null
@@ -1,265 +0,0 @@
-<?php
-/**
- * PHPExcel
- *
- * Copyright (c) 2006 - 2012 PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel_Worksheet
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-
-/**
- * PHPExcel_Worksheet_RowDimension
- *
- * @category PHPExcel
- * @package PHPExcel_Worksheet
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- */
-class PHPExcel_Worksheet_RowDimension
-{
- /**
- * Row index
- *
- * @var int
- */
- private $_rowIndex;
-
- /**
- * Row height (in pt)
- *
- * When this is set to a negative value, the row height should be ignored by IWriter
- *
- * @var double
- */
- private $_rowHeight = -1;
-
- /**
- * ZeroHeight for Row?
- *
- * @var bool
- */
- private $_zeroHeight = false;
-
- /**
- * Visible?
- *
- * @var bool
- */
- private $_visible = true;
-
- /**
- * Outline level
- *
- * @var int
- */
- private $_outlineLevel = 0;
-
- /**
- * Collapsed
- *
- * @var bool
- */
- private $_collapsed = false;
-
- /**
- * Index to cellXf. Null value means row has no explicit cellXf format.
- *
- * @var int|null
- */
- private $_xfIndex;
-
- /**
- * Create a new PHPExcel_Worksheet_RowDimension
- *
- * @param int $pIndex Numeric row index
- */
- public function __construct($pIndex = 0)
- {
- // Initialise values
- $this->_rowIndex = $pIndex;
-
- // set row dimension as unformatted by default
- $this->_xfIndex = null;
- }
-
- /**
- * Get Row Index
- *
- * @return int
- */
- public function getRowIndex() {
- return $this->_rowIndex;
- }
-
- /**
- * Set Row Index
- *
- * @param int $pValue
- * @return PHPExcel_Worksheet_RowDimension
- */
- public function setRowIndex($pValue) {
- $this->_rowIndex = $pValue;
- return $this;
- }
-
- /**
- * Get Row Height
- *
- * @return double
- */
- public function getRowHeight() {
- return $this->_rowHeight;
- }
-
- /**
- * Set Row Height
- *
- * @param double $pValue
- * @return PHPExcel_Worksheet_RowDimension
- */
- public function setRowHeight($pValue = -1) {
- $this->_rowHeight = $pValue;
- return $this;
- }
-
- /**
- * Get ZeroHeight
- *
- * @return bool
- */
- public function getzeroHeight() {
- return $this->_zeroHeight;
- }
-
- /**
- * Set ZeroHeight
- *
- * @param bool $pValue
- * @return PHPExcel_Worksheet_RowDimension
- */
- public function setzeroHeight($pValue = false) {
- $this->_zeroHeight = $pValue;
- return $this;
- }
-
- /**
- * Get Visible
- *
- * @return bool
- */
- public function getVisible() {
- return $this->_visible;
- }
-
- /**
- * Set Visible
- *
- * @param bool $pValue
- * @return PHPExcel_Worksheet_RowDimension
- */
- public function setVisible($pValue = true) {
- $this->_visible = $pValue;
- return $this;
- }
-
- /**
- * Get Outline Level
- *
- * @return int
- */
- public function getOutlineLevel() {
- return $this->_outlineLevel;
- }
-
- /**
- * Set Outline Level
- *
- * Value must be between 0 and 7
- *
- * @param int $pValue
- * @throws Exception
- * @return PHPExcel_Worksheet_RowDimension
- */
- public function setOutlineLevel($pValue) {
- if ($pValue < 0 || $pValue > 7) {
- throw new Exception("Outline level must range between 0 and 7.");
- }
-
- $this->_outlineLevel = $pValue;
- return $this;
- }
-
- /**
- * Get Collapsed
- *
- * @return bool
- */
- public function getCollapsed() {
- return $this->_collapsed;
- }
-
- /**
- * Set Collapsed
- *
- * @param bool $pValue
- * @return PHPExcel_Worksheet_RowDimension
- */
- public function setCollapsed($pValue = true) {
- $this->_collapsed = $pValue;
- return $this;
- }
-
- /**
- * Get index to cellXf
- *
- * @return int
- */
- public function getXfIndex()
- {
- return $this->_xfIndex;
- }
-
- /**
- * Set index to cellXf
- *
- * @param int $pValue
- * @return PHPExcel_Worksheet_RowDimension
- */
- public function setXfIndex($pValue = 0)
- {
- $this->_xfIndex = $pValue;
- return $this;
- }
-
- /**
- * Implement PHP __clone to create a deep clone, not just a shallow copy.
- */
- public function __clone() {
- $vars = get_object_vars($this);
- foreach ($vars as $key => $value) {
- if (is_object($value)) {
- $this->$key = clone $value;
- } else {
- $this->$key = $value;
- }
- }
- }
-}
diff --git a/admin/survey/excel/PHPExcel/Worksheet/RowIterator.php b/admin/survey/excel/PHPExcel/Worksheet/RowIterator.php
deleted file mode 100644
index 598508d..0000000
--- a/admin/survey/excel/PHPExcel/Worksheet/RowIterator.php
+++ /dev/null
@@ -1,148 +0,0 @@
-<?php
-/**
- * PHPExcel
- *
- * Copyright (c) 2006 - 2012 PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel_Worksheet
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-
-/**
- * PHPExcel_Worksheet_RowIterator
- *
- * Used to iterate rows in a PHPExcel_Worksheet
- *
- * @category PHPExcel
- * @package PHPExcel_Worksheet
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- */
-class PHPExcel_Worksheet_RowIterator implements Iterator
-{
- /**
- * PHPExcel_Worksheet to iterate
- *
- * @var PHPExcel_Worksheet
- */
- private $_subject;
-
- /**
- * Current iterator position
- *
- * @var int
- */
- private $_position = 1;
-
- /**
- * Start position
- *
- * @var int
- */
- private $_startRow = 1;
-
-
- /**
- * Create a new row iterator
- *
- * @param PHPExcel_Worksheet $subject The worksheet to iterate over
- * @param integer $startRow The row number at which to start iterating
- */
- public function __construct(PHPExcel_Worksheet $subject = null, $startRow = 1) {
- // Set subject
- $this->_subject = $subject;
- $this->resetStart($startRow);
- }
-
- /**
- * Destructor
- */
- public function __destruct() {
- unset($this->_subject);
- }
-
- /**
- * (Re)Set the start row and the current row pointer
- *
- * @param integer $startRow The row number at which to start iterating
- */
- public function resetStart($startRow = 1) {
- $this->_startRow = $startRow;
- $this->seek($startRow);
- }
-
- /**
- * Set the row pointer to the selected row
- *
- * @param integer $row The row number to set the current pointer at
- */
- public function seek($row = 1) {
- $this->_position = $row;
- }
-
- /**
- * Rewind the iterator to the starting row
- */
- public function rewind() {
- $this->_position = $this->_startRow;
- }
-
- /**
- * Return the current row in this worksheet
- *
- * @return PHPExcel_Worksheet_Row
- */
- public function current() {
- return new PHPExcel_Worksheet_Row($this->_subject, $this->_position);
- }
-
- /**
- * Return the current iterator key
- *
- * @return int
- */
- public function key() {
- return $this->_position;
- }
-
- /**
- * Set the iterator to its next value
- */
- public function next() {
- ++$this->_position;
- }
-
- /**
- * Set the iterator to its previous value
- */
- public function prev() {
- if ($this->_position > 1)
- --$this->_position;
- }
-
- /**
- * Indicate if more rows exist in the worksheet
- *
- * @return boolean
- */
- public function valid() {
- return $this->_position <= $this->_subject->getHighestRow();
- }
-}
diff --git a/admin/survey/excel/PHPExcel/Worksheet/SheetView.php b/admin/survey/excel/PHPExcel/Worksheet/SheetView.php
deleted file mode 100644
index 7b4413a..0000000
--- a/admin/survey/excel/PHPExcel/Worksheet/SheetView.php
+++ /dev/null
@@ -1,188 +0,0 @@
-<?php
-/**
- * PHPExcel
- *
- * Copyright (c) 2006 - 2012 PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel_Worksheet
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-
-/**
- * PHPExcel_Worksheet_SheetView
- *
- * @category PHPExcel
- * @package PHPExcel_Worksheet
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- */
-class PHPExcel_Worksheet_SheetView
-{
-
- /* Sheet View types */
- const SHEETVIEW_NORMAL = 'normal';
- const SHEETVIEW_PAGE_LAYOUT = 'pageLayout';
- const SHEETVIEW_PAGE_BREAK_PREVIEW = 'pageBreakPreview';
-
- private static $_sheetViewTypes = array(
- self::SHEETVIEW_NORMAL,
- self::SHEETVIEW_PAGE_LAYOUT,
- self::SHEETVIEW_PAGE_BREAK_PREVIEW,
- );
-
- /**
- * ZoomScale
- *
- * Valid values range from 10 to 400.
- *
- * @var int
- */
- private $_zoomScale = 100;
-
- /**
- * ZoomScaleNormal
- *
- * Valid values range from 10 to 400.
- *
- * @var int
- */
- private $_zoomScaleNormal = 100;
-
- /**
- * View
- *
- * Valid values range from 10 to 400.
- *
- * @var string
- */
- private $_sheetviewType = self::SHEETVIEW_NORMAL;
-
- /**
- * Create a new PHPExcel_Worksheet_SheetView
- */
- public function __construct()
- {
- }
-
- /**
- * Get ZoomScale
- *
- * @return int
- */
- public function getZoomScale() {
- return $this->_zoomScale;
- }
-
- /**
- * Set ZoomScale
- *
- * Valid values range from 10 to 400.
- *
- * @param int $pValue
- * @throws Exception
- * @return PHPExcel_Worksheet_SheetView
- */
- public function setZoomScale($pValue = 100) {
- // Microsoft Office Excel 2007 only allows setting a scale between 10 and 400 via the user interface,
- // but it is apparently still able to handle any scale >= 1
- if (($pValue >= 1) || is_null($pValue)) {
- $this->_zoomScale = $pValue;
- } else {
- throw new Exception("Scale must be greater than or equal to 1.");
- }
- return $this;
- }
-
- /**
- * Get ZoomScaleNormal
- *
- * @return int
- */
- public function getZoomScaleNormal() {
- return $this->_zoomScaleNormal;
- }
-
- /**
- * Set ZoomScale
- *
- * Valid values range from 10 to 400.
- *
- * @param int $pValue
- * @throws Exception
- * @return PHPExcel_Worksheet_SheetView
- */
- public function setZoomScaleNormal($pValue = 100) {
- if (($pValue >= 1) || is_null($pValue)) {
- $this->_zoomScaleNormal = $pValue;
- } else {
- throw new Exception("Scale must be greater than or equal to 1.");
- }
- return $this;
- }
-
- /**
- * Get View
- *
- * @return string
- */
- public function getView() {
- return $this->_sheetviewType;
- }
-
- /**
- * Set View
- *
- * Valid values are
- * 'normal' self::SHEETVIEW_NORMAL
- * 'pageLayout' self::SHEETVIEW_PAGE_LAYOUT
- * 'pageBreakPreview' self::SHEETVIEW_PAGE_BREAK_PREVIEW
- *
- * @param string $pValue
- * @throws Exception
- * @return PHPExcel_Worksheet_SheetView
- */
- public function setView($pValue = NULL) {
- // MS Excel 2007 allows setting the view to 'normal', 'pageLayout' or 'pageBreakPreview'
- // via the user interface
- if ($pValue === NULL)
- $pValue = self::SHEETVIEW_NORMAL;
- if (in_array($pValue, self::$_sheetViewTypes)) {
- $this->_sheetviewType = $pValue;
- } else {
- throw new Exception("Invalid sheetview layout type.");
- }
-
- return $this;
- }
-
- /**
- * Implement PHP __clone to create a deep clone, not just a shallow copy.
- */
- public function __clone() {
- $vars = get_object_vars($this);
- foreach ($vars as $key => $value) {
- if (is_object($value)) {
- $this->$key = clone $value;
- } else {
- $this->$key = $value;
- }
- }
- }
-}
diff --git a/admin/survey/excel/PHPExcel/WorksheetIterator.php b/admin/survey/excel/PHPExcel/WorksheetIterator.php
deleted file mode 100644
index ad09e76..0000000
--- a/admin/survey/excel/PHPExcel/WorksheetIterator.php
+++ /dev/null
@@ -1,111 +0,0 @@
-<?php
-/**
- * PHPExcel
- *
- * Copyright (c) 2006 - 2012 PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-
-/**
- * PHPExcel_WorksheetIterator
- *
- * Used to iterate worksheets in PHPExcel
- *
- * @category PHPExcel
- * @package PHPExcel
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- */
-class PHPExcel_WorksheetIterator implements Iterator
-{
- /**
- * Spreadsheet to iterate
- *
- * @var PHPExcel
- */
- private $_subject;
-
- /**
- * Current iterator position
- *
- * @var int
- */
- private $_position = 0;
-
- /**
- * Create a new worksheet iterator
- *
- * @param PHPExcel $subject
- */
- public function __construct(PHPExcel $subject = null) {
- // Set subject
- $this->_subject = $subject;
- }
-
- /**
- * Destructor
- */
- public function __destruct() {
- unset($this->_subject);
- }
-
- /**
- * Rewind iterator
- */
- public function rewind() {
- $this->_position = 0;
- }
-
- /**
- * Current PHPExcel_Worksheet
- *
- * @return PHPExcel_Worksheet
- */
- public function current() {
- return $this->_subject->getSheet($this->_position);
- }
-
- /**
- * Current key
- *
- * @return int
- */
- public function key() {
- return $this->_position;
- }
-
- /**
- * Next value
- */
- public function next() {
- ++$this->_position;
- }
-
- /**
- * More PHPExcel_Worksheet instances available?
- *
- * @return boolean
- */
- public function valid() {
- return $this->_position < $this->_subject->getSheetCount();
- }
-}
diff --git a/admin/survey/excel/PHPExcel/Writer/CSV.php b/admin/survey/excel/PHPExcel/Writer/CSV.php
deleted file mode 100644
index fdaf096..0000000
--- a/admin/survey/excel/PHPExcel/Writer/CSV.php
+++ /dev/null
@@ -1,339 +0,0 @@
-<?php
-/**
- * PHPExcel
- *
- * Copyright (c) 2006 - 2012 PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel_Writer
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-
-/**
- * PHPExcel_Writer_CSV
- *
- * @category PHPExcel
- * @package PHPExcel_Writer
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- */
-class PHPExcel_Writer_CSV implements PHPExcel_Writer_IWriter {
- /**
- * PHPExcel object
- *
- * @var PHPExcel
- */
- private $_phpExcel;
-
- /**
- * Delimiter
- *
- * @var string
- */
- private $_delimiter = ',';
-
- /**
- * Enclosure
- *
- * @var string
- */
- private $_enclosure = '"';
-
- /**
- * Line ending
- *
- * @var string
- */
- private $_lineEnding = PHP_EOL;
-
- /**
- * Sheet index to write
- *
- * @var int
- */
- private $_sheetIndex = 0;
-
- /**
- * Pre-calculate formulas
- *
- * @var boolean
- */
- private $_preCalculateFormulas = true;
-
- /**
- * Whether to write a BOM (for UTF8).
- *
- * @var boolean
- */
- private $_useBOM = false;
-
- /**
- * Whether to write a fully Excel compatible CSV file.
- *
- * @var boolean
- */
- private $_excelCompatibility = false;
-
- /**
- * Create a new PHPExcel_Writer_CSV
- *
- * @param PHPExcel $phpExcel PHPExcel object
- */
- public function __construct(PHPExcel $phpExcel) {
- $this->_phpExcel = $phpExcel;
- }
-
- /**
- * Save PHPExcel to file
- *
- * @param string $pFilename
- * @throws Exception
- */
- public function save($pFilename = null) {
- // Fetch sheet
- $sheet = $this->_phpExcel->getSheet($this->_sheetIndex);
-
- $saveDebugLog = PHPExcel_Calculation::getInstance()->writeDebugLog;
- PHPExcel_Calculation::getInstance()->writeDebugLog = false;
- $saveArrayReturnType = PHPExcel_Calculation::getArrayReturnType();
- PHPExcel_Calculation::setArrayReturnType(PHPExcel_Calculation::RETURN_ARRAY_AS_VALUE);
-
- // Open file
- $fileHandle = fopen($pFilename, 'wb+');
- if ($fileHandle === false) {
- throw new Exception("Could not open file $pFilename for writing.");
- }
-
- if ($this->_excelCompatibility) {
- // Write the UTF-16LE BOM code
- fwrite($fileHandle, "\xFF\xFE"); // Excel uses UTF-16LE encoding
- $this->setEnclosure(); // Default enclosure is "
- $this->setDelimiter("\t"); // Excel delimiter is a TAB
- } elseif ($this->_useBOM) {
- // Write the UTF-8 BOM code
- fwrite($fileHandle, "\xEF\xBB\xBF");
- }
-
- // Identify the range that we need to extract from the worksheet
- $maxCol = $sheet->getHighestColumn();
- $maxRow = $sheet->getHighestRow();
-
- // Write rows to file
- for($row = 1; $row <= $maxRow; ++$row) {
- // Convert the row to an array...
- $cellsArray = $sheet->rangeToArray('A'.$row.':'.$maxCol.$row,'', $this->_preCalculateFormulas);
- // ... and write to the file
- $this->_writeLine($fileHandle, $cellsArray[0]);
- }
-
- // Close file
- fclose($fileHandle);
-
- PHPExcel_Calculation::setArrayReturnType($saveArrayReturnType);
- PHPExcel_Calculation::getInstance()->writeDebugLog = $saveDebugLog;
- }
-
- /**
- * Get delimiter
- *
- * @return string
- */
- public function getDelimiter() {
- return $this->_delimiter;
- }
-
- /**
- * Set delimiter
- *
- * @param string $pValue Delimiter, defaults to ,
- * @return PHPExcel_Writer_CSV
- */
- public function setDelimiter($pValue = ',') {
- $this->_delimiter = $pValue;
- return $this;
- }
-
- /**
- * Get enclosure
- *
- * @return string
- */
- public function getEnclosure() {
- return $this->_enclosure;
- }
-
- /**
- * Set enclosure
- *
- * @param string $pValue Enclosure, defaults to "
- * @return PHPExcel_Writer_CSV
- */
- public function setEnclosure($pValue = '"') {
- if ($pValue == '') {
- $pValue = null;
- }
- $this->_enclosure = $pValue;
- return $this;
- }
-
- /**
- * Get line ending
- *
- * @return string
- */
- public function getLineEnding() {
- return $this->_lineEnding;
- }
-
- /**
- * Set line ending
- *
- * @param string $pValue Line ending, defaults to OS line ending (PHP_EOL)
- * @return PHPExcel_Writer_CSV
- */
- public function setLineEnding($pValue = PHP_EOL) {
- $this->_lineEnding = $pValue;
- return $this;
- }
-
- /**
- * Get whether BOM should be used
- *
- * @return boolean
- */
- public function getUseBOM() {
- return $this->_useBOM;
- }
-
- /**
- * Set whether BOM should be used
- *
- * @param boolean $pValue Use UTF-8 byte-order mark? Defaults to false
- * @return PHPExcel_Writer_CSV
- */
- public function setUseBOM($pValue = false) {
- $this->_useBOM = $pValue;
- return $this;
- }
-
- /**
- * Get whether the file should be saved with full Excel Compatibility
- *
- * @return boolean
- */
- public function getExcelCompatibility() {
- return $this->_excelCompatibility;
- }
-
- /**
- * Set whether the file should be saved with full Excel Compatibility
- *
- * @param boolean $pValue Set the file to be written as a fully Excel compatible csv file
- * Note that this overrides other settings such as useBOM, enclosure and delimiter
- * @return PHPExcel_Writer_CSV
- */
- public function setExcelCompatibility($pValue = false) {
- $this->_excelCompatibility = $pValue;
- return $this;
- }
-
- /**
- * Get sheet index
- *
- * @return int
- */
- public function getSheetIndex() {
- return $this->_sheetIndex;
- }
-
- /**
- * Set sheet index
- *
- * @param int $pValue Sheet index
- * @return PHPExcel_Writer_CSV
- */
- public function setSheetIndex($pValue = 0) {
- $this->_sheetIndex = $pValue;
- return $this;
- }
-
- /**
- * Write line to CSV file
- *
- * @param mixed $pFileHandle PHP filehandle
- * @param array $pValues Array containing values in a row
- * @throws Exception
- */
- private function _writeLine($pFileHandle = null, $pValues = null) {
- if (is_array($pValues)) {
- // No leading delimiter
- $writeDelimiter = false;
-
- // Build the line
- $line = '';
-
- foreach ($pValues as $element) {
- // Escape enclosures
- $element = str_replace($this->_enclosure, $this->_enclosure . $this->_enclosure, $element);
-
- // Add delimiter
- if ($writeDelimiter) {
- $line .= $this->_delimiter;
- } else {
- $writeDelimiter = true;
- }
-
- // Add enclosed string
- $line .= $this->_enclosure . $element . $this->_enclosure;
- }
-
- // Add line ending
- $line .= $this->_lineEnding;
-
- // Write to file
- if ($this->_excelCompatibility) {
- fwrite($pFileHandle, mb_convert_encoding($line,"UTF-16LE","UTF-8"));
- } else {
- fwrite($pFileHandle, $line);
- }
- } else {
- throw new Exception("Invalid data row passed to CSV writer.");
- }
- }
-
- /**
- * Get Pre-Calculate Formulas
- *
- * @return boolean
- */
- public function getPreCalculateFormulas() {
- return $this->_preCalculateFormulas;
- }
-
- /**
- * Set Pre-Calculate Formulas
- *
- * @param boolean $pValue Pre-Calculate Formulas?
- * @return PHPExcel_Writer_CSV
- */
- public function setPreCalculateFormulas($pValue = true) {
- $this->_preCalculateFormulas = $pValue;
- return $this;
- }
-}
diff --git a/admin/survey/excel/PHPExcel/Writer/Excel2007.php b/admin/survey/excel/PHPExcel/Writer/Excel2007.php
deleted file mode 100644
index 0a01924..0000000
--- a/admin/survey/excel/PHPExcel/Writer/Excel2007.php
+++ /dev/null
@@ -1,583 +0,0 @@
-<?php
-/**
- * PHPExcel
- *
- * Copyright (c) 2006 - 2012 PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel_Writer_Excel2007
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-
-/**
- * PHPExcel_Writer_Excel2007
- *
- * @category PHPExcel
- * @package PHPExcel_Writer_Excel2007
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- */
-class PHPExcel_Writer_Excel2007 implements PHPExcel_Writer_IWriter
-{
- /**
- * Write charts that are defined in the workbook?
- * Identifies whether the Writer should write definitions for any charts that exist in the PHPExcel object;
- *
- * @var boolean
- */
- private $_includeCharts = false;
-
- /**
- * Pre-calculate formulas
- *
- * @var boolean
- */
- private $_preCalculateFormulas = true;
-
- /**
- * Office2003 compatibility
- *
- * @var boolean
- */
- private $_office2003compatibility = false;
-
- /**
- * Private writer parts
- *
- * @var PHPExcel_Writer_Excel2007_WriterPart[]
- */
- private $_writerParts = array();
-
- /**
- * Private PHPExcel
- *
- * @var PHPExcel
- */
- private $_spreadSheet;
-
- /**
- * Private string table
- *
- * @var string[]
- */
- private $_stringTable = array();
-
- /**
- * Private unique PHPExcel_Style_Conditional HashTable
- *
- * @var PHPExcel_HashTable
- */
- private $_stylesConditionalHashTable;
-
- /**
- * Private unique PHPExcel_Style_Fill HashTable
- *
- * @var PHPExcel_HashTable
- */
- private $_fillHashTable;
-
- /**
- * Private unique PHPExcel_Style_Font HashTable
- *
- * @var PHPExcel_HashTable
- */
- private $_fontHashTable;
-
- /**
- * Private unique PHPExcel_Style_Borders HashTable
- *
- * @var PHPExcel_HashTable
- */
- private $_bordersHashTable ;
-
- /**
- * Private unique PHPExcel_Style_NumberFormat HashTable
- *
- * @var PHPExcel_HashTable
- */
- private $_numFmtHashTable;
-
- /**
- * Private unique PHPExcel_Worksheet_BaseDrawing HashTable
- *
- * @var PHPExcel_HashTable
- */
- private $_drawingHashTable;
-
- /**
- * Use disk caching where possible?
- *
- * @var boolean
- */
- private $_useDiskCaching = false;
-
- /**
- * Disk caching directory
- *
- * @var string
- */
- private $_diskCachingDirectory = './';
-
- /**
- * Create a new PHPExcel_Writer_Excel2007
- *
- * @param PHPExcel $pPHPExcel
- */
- public function __construct(PHPExcel $pPHPExcel = null)
- {
- // Assign PHPExcel
- $this->setPHPExcel($pPHPExcel);
-
- $writerPartsArray = array( 'stringtable' => 'PHPExcel_Writer_Excel2007_StringTable',
- 'contenttypes' => 'PHPExcel_Writer_Excel2007_ContentTypes',
- 'docprops' => 'PHPExcel_Writer_Excel2007_DocProps',
- 'rels' => 'PHPExcel_Writer_Excel2007_Rels',
- 'theme' => 'PHPExcel_Writer_Excel2007_Theme',
- 'style' => 'PHPExcel_Writer_Excel2007_Style',
- 'workbook' => 'PHPExcel_Writer_Excel2007_Workbook',
- 'worksheet' => 'PHPExcel_Writer_Excel2007_Worksheet',
- 'drawing' => 'PHPExcel_Writer_Excel2007_Drawing',
- 'comments' => 'PHPExcel_Writer_Excel2007_Comments',
- 'chart' => 'PHPExcel_Writer_Excel2007_Chart',
- );
-
- // Initialise writer parts
- // and Assign their parent IWriters
- foreach ($writerPartsArray as $writer => $class) {
- $this->_writerParts[$writer] = new $class($this);
- }
-
- $hashTablesArray = array( '_stylesConditionalHashTable', '_fillHashTable', '_fontHashTable',
- '_bordersHashTable', '_numFmtHashTable', '_drawingHashTable'
- );
-
- // Set HashTable variables
- foreach ($hashTablesArray as $tableName) {
- $this->$tableName = new PHPExcel_HashTable();
- }
- }
-
- /**
- * Get writer part
- *
- * @param string $pPartName Writer part name
- * @return PHPExcel_Writer_Excel2007_WriterPart
- */
- public function getWriterPart($pPartName = '') {
- if ($pPartName != '' && isset($this->_writerParts[strtolower($pPartName)])) {
- return $this->_writerParts[strtolower($pPartName)];
- } else {
- return null;
- }
- }
-
- /**
- * Save PHPExcel to file
- *
- * @param string $pFilename
- * @throws Exception
- */
- public function save($pFilename = null)
- {
- if ($this->_spreadSheet !== NULL) {
- // garbage collect
- $this->_spreadSheet->garbageCollect();
-
- // If $pFilename is php://output or php://stdout, make it a temporary file...
- $originalFilename = $pFilename;
- if (strtolower($pFilename) == 'php://output' || strtolower($pFilename) == 'php://stdout') {
- $pFilename = @tempnam(PHPExcel_Shared_File::sys_get_temp_dir(), 'phpxltmp');
- if ($pFilename == '') {
- $pFilename = $originalFilename;
- }
- }
-
- $saveDebugLog = PHPExcel_Calculation::getInstance()->writeDebugLog;
- PHPExcel_Calculation::getInstance()->writeDebugLog = false;
- $saveDateReturnType = PHPExcel_Calculation_Functions::getReturnDateType();
- PHPExcel_Calculation_Functions::setReturnDateType(PHPExcel_Calculation_Functions::RETURNDATE_EXCEL);
-
- // Create string lookup table
- $this->_stringTable = array();
- for ($i = 0; $i < $this->_spreadSheet->getSheetCount(); ++$i) {
- $this->_stringTable = $this->getWriterPart('StringTable')->createStringTable($this->_spreadSheet->getSheet($i), $this->_stringTable);
- }
-
- // Create styles dictionaries
- $this->_stylesConditionalHashTable->addFromSource( $this->getWriterPart('Style')->allConditionalStyles($this->_spreadSheet) );
- $this->_fillHashTable->addFromSource( $this->getWriterPart('Style')->allFills($this->_spreadSheet) );
- $this->_fontHashTable->addFromSource( $this->getWriterPart('Style')->allFonts($this->_spreadSheet) );
- $this->_bordersHashTable->addFromSource( $this->getWriterPart('Style')->allBorders($this->_spreadSheet) );
- $this->_numFmtHashTable->addFromSource( $this->getWriterPart('Style')->allNumberFormats($this->_spreadSheet) );
-
- // Create drawing dictionary
- $this->_drawingHashTable->addFromSource( $this->getWriterPart('Drawing')->allDrawings($this->_spreadSheet) );
-
- // Create new ZIP file and open it for writing
- $zipClass = PHPExcel_Settings::getZipClass();
- $objZip = new $zipClass();
-
- // Retrieve OVERWRITE and CREATE constants from the instantiated zip class
- // This method of accessing constant values from a dynamic class should work with all appropriate versions of PHP
- $ro = new ReflectionObject($objZip);
- $zipOverWrite = $ro->getConstant('OVERWRITE');
- $zipCreate = $ro->getConstant('CREATE');
-
- if (file_exists($pFilename)) {
- unlink($pFilename);
- }
- // Try opening the ZIP file
- if ($objZip->open($pFilename, $zipOverWrite) !== true) {
- if ($objZip->open($pFilename, $zipCreate) !== true) {
- throw new Exception("Could not open " . $pFilename . " for writing.");
- }
- }
-
- // Add [Content_Types].xml to ZIP file
- $objZip->addFromString('[Content_Types].xml', $this->getWriterPart('ContentTypes')->writeContentTypes($this->_spreadSheet, $this->_includeCharts));
-
- // Add relationships to ZIP file
- $objZip->addFromString('_rels/.rels', $this->getWriterPart('Rels')->writeRelationships($this->_spreadSheet));
- $objZip->addFromString('xl/_rels/workbook.xml.rels', $this->getWriterPart('Rels')->writeWorkbookRelationships($this->_spreadSheet));
-
- // Add document properties to ZIP file
- $objZip->addFromString('docProps/app.xml', $this->getWriterPart('DocProps')->writeDocPropsApp($this->_spreadSheet));
- $objZip->addFromString('docProps/core.xml', $this->getWriterPart('DocProps')->writeDocPropsCore($this->_spreadSheet));
- $customPropertiesPart = $this->getWriterPart('DocProps')->writeDocPropsCustom($this->_spreadSheet);
- if ($customPropertiesPart !== NULL) {
- $objZip->addFromString('docProps/custom.xml', $customPropertiesPart);
- }
-
- // Add theme to ZIP file
- $objZip->addFromString('xl/theme/theme1.xml', $this->getWriterPart('Theme')->writeTheme($this->_spreadSheet));
-
- // Add string table to ZIP file
- $objZip->addFromString('xl/sharedStrings.xml', $this->getWriterPart('StringTable')->writeStringTable($this->_stringTable));
-
- // Add styles to ZIP file
- $objZip->addFromString('xl/styles.xml', $this->getWriterPart('Style')->writeStyles($this->_spreadSheet));
-
- // Add workbook to ZIP file
- $objZip->addFromString('xl/workbook.xml', $this->getWriterPart('Workbook')->writeWorkbook($this->_spreadSheet, $this->_preCalculateFormulas));
-
- $chartCount = 0;
- // Add worksheets
- for ($i = 0; $i < $this->_spreadSheet->getSheetCount(); ++$i) {
- $objZip->addFromString('xl/worksheets/sheet' . ($i + 1) . '.xml', $this->getWriterPart('Worksheet')->writeWorksheet($this->_spreadSheet->getSheet($i), $this->_stringTable, $this->_includeCharts));
- if ($this->_includeCharts) {
- $charts = $this->_spreadSheet->getSheet($i)->getChartCollection();
- if (count($charts) > 0) {
- foreach($charts as $chart) {
- $objZip->addFromString('xl/charts/chart' . ($chartCount + 1) . '.xml', $this->getWriterPart('Chart')->writeChart($chart));
- $chartCount++;
- }
- }
- }
- }
-
- $chartRef1 = $chartRef2 = 0;
- // Add worksheet relationships (drawings, ...)
- for ($i = 0; $i < $this->_spreadSheet->getSheetCount(); ++$i) {
-
- // Add relationships
- $objZip->addFromString('xl/worksheets/_rels/sheet' . ($i + 1) . '.xml.rels', $this->getWriterPart('Rels')->writeWorksheetRelationships($this->_spreadSheet->getSheet($i), ($i + 1), $this->_includeCharts));
-
- $drawings = $this->_spreadSheet->getSheet($i)->getDrawingCollection();
- $drawingCount = count($drawings);
- if ($this->_includeCharts) {
- $chartCount = $this->_spreadSheet->getSheet($i)->getChartCount();
- }
-
- // Add drawing and image relationship parts
- if (($drawingCount > 0) || ($chartCount > 0)) {
- // Drawing relationships
- $objZip->addFromString('xl/drawings/_rels/drawing' . ($i + 1) . '.xml.rels', $this->getWriterPart('Rels')->writeDrawingRelationships($this->_spreadSheet->getSheet($i),$chartRef1, $this->_includeCharts));
-
- // Drawings
- $objZip->addFromString('xl/drawings/drawing' . ($i + 1) . '.xml', $this->getWriterPart('Drawing')->writeDrawings($this->_spreadSheet->getSheet($i),$chartRef2,$this->_includeCharts));
- }
-
- // Add comment relationship parts
- if (count($this->_spreadSheet->getSheet($i)->getComments()) > 0) {
- // VML Comments
- $objZip->addFromString('xl/drawings/vmlDrawing' . ($i + 1) . '.vml', $this->getWriterPart('Comments')->writeVMLComments($this->_spreadSheet->getSheet($i)));
-
- // Comments
- $objZip->addFromString('xl/comments' . ($i + 1) . '.xml', $this->getWriterPart('Comments')->writeComments($this->_spreadSheet->getSheet($i)));
- }
-
- // Add header/footer relationship parts
- if (count($this->_spreadSheet->getSheet($i)->getHeaderFooter()->getImages()) > 0) {
- // VML Drawings
- $objZip->addFromString('xl/drawings/vmlDrawingHF' . ($i + 1) . '.vml', $this->getWriterPart('Drawing')->writeVMLHeaderFooterImages($this->_spreadSheet->getSheet($i)));
-
- // VML Drawing relationships
- $objZip->addFromString('xl/drawings/_rels/vmlDrawingHF' . ($i + 1) . '.vml.rels', $this->getWriterPart('Rels')->writeHeaderFooterDrawingRelationships($this->_spreadSheet->getSheet($i)));
-
- // Media
- foreach ($this->_spreadSheet->getSheet($i)->getHeaderFooter()->getImages() as $image) {
- $objZip->addFromString('xl/media/' . $image->getIndexedFilename(), file_get_contents($image->getPath()));
- }
- }
- }
-
- // Add media
- for ($i = 0; $i < $this->getDrawingHashTable()->count(); ++$i) {
- if ($this->getDrawingHashTable()->getByIndex($i) instanceof PHPExcel_Worksheet_Drawing) {
- $imageContents = null;
- $imagePath = $this->getDrawingHashTable()->getByIndex($i)->getPath();
-
- if (strpos($imagePath, 'zip://') !== false) {
- $imagePath = substr($imagePath, 6);
- $imagePathSplitted = explode('#', $imagePath);
-
- $imageZip = new ZipArchive();
- $imageZip->open($imagePathSplitted[0]);
- $imageContents = $imageZip->getFromName($imagePathSplitted[1]);
- $imageZip->close();
- unset($imageZip);
- } else {
- $imageContents = file_get_contents($imagePath);
- }
-
- $objZip->addFromString('xl/media/' . str_replace(' ', '_', $this->getDrawingHashTable()->getByIndex($i)->getIndexedFilename()), $imageContents);
- } else if ($this->getDrawingHashTable()->getByIndex($i) instanceof PHPExcel_Worksheet_MemoryDrawing) {
- ob_start();
- call_user_func(
- $this->getDrawingHashTable()->getByIndex($i)->getRenderingFunction(),
- $this->getDrawingHashTable()->getByIndex($i)->getImageResource()
- );
- $imageContents = ob_get_contents();
- ob_end_clean();
-
- $objZip->addFromString('xl/media/' . str_replace(' ', '_', $this->getDrawingHashTable()->getByIndex($i)->getIndexedFilename()), $imageContents);
- }
- }
-
- PHPExcel_Calculation_Functions::setReturnDateType($saveDateReturnType);
- PHPExcel_Calculation::getInstance()->writeDebugLog = $saveDebugLog;
-
- // Close file
- if ($objZip->close() === false) {
- throw new Exception("Could not close zip file $pFilename.");
- }
-
- // If a temporary file was used, copy it to the correct file stream
- if ($originalFilename != $pFilename) {
- if (copy($pFilename, $originalFilename) === false) {
- throw new Exception("Could not copy temporary zip file $pFilename to $originalFilename.");
- }
- @unlink($pFilename);
- }
- } else {
- throw new Exception("PHPExcel object unassigned.");
- }
- }
-
- /**
- * Get PHPExcel object
- *
- * @return PHPExcel
- * @throws Exception
- */
- public function getPHPExcel() {
- if ($this->_spreadSheet !== null) {
- return $this->_spreadSheet;
- } else {
- throw new Exception("No PHPExcel assigned.");
- }
- }
-
- /**
- * Set PHPExcel object
- *
- * @param PHPExcel $pPHPExcel PHPExcel object
- * @throws Exception
- * @return PHPExcel_Writer_Excel2007
- */
- public function setPHPExcel(PHPExcel $pPHPExcel = null) {
- $this->_spreadSheet = $pPHPExcel;
- return $this;
- }
-
- /**
- * Get string table
- *
- * @return string[]
- */
- public function getStringTable() {
- return $this->_stringTable;
- }
-
- /**
- * Get PHPExcel_Style_Conditional HashTable
- *
- * @return PHPExcel_HashTable
- */
- public function getStylesConditionalHashTable() {
- return $this->_stylesConditionalHashTable;
- }
-
- /**
- * Get PHPExcel_Style_Fill HashTable
- *
- * @return PHPExcel_HashTable
- */
- public function getFillHashTable() {
- return $this->_fillHashTable;
- }
-
- /**
- * Get PHPExcel_Style_Font HashTable
- *
- * @return PHPExcel_HashTable
- */
- public function getFontHashTable() {
- return $this->_fontHashTable;
- }
-
- /**
- * Get PHPExcel_Style_Borders HashTable
- *
- * @return PHPExcel_HashTable
- */
- public function getBordersHashTable() {
- return $this->_bordersHashTable;
- }
-
- /**
- * Get PHPExcel_Style_NumberFormat HashTable
- *
- * @return PHPExcel_HashTable
- */
- public function getNumFmtHashTable() {
- return $this->_numFmtHashTable;
- }
-
- /**
- * Get PHPExcel_Worksheet_BaseDrawing HashTable
- *
- * @return PHPExcel_HashTable
- */
- public function getDrawingHashTable() {
- return $this->_drawingHashTable;
- }
-
- /**
- * Write charts in workbook?
- * If this is true, then the Writer will write definitions for any charts that exist in the PHPExcel object.
- * If false (the default) it will ignore any charts defined in the PHPExcel object.
- *
- * @return boolean
- */
- public function getIncludeCharts() {
- return $this->_includeCharts;
- }
-
- /**
- * Set write charts in workbook
- * Set to true, to advise the Writer to include any charts that exist in the PHPExcel object.
- * Set to false (the default) to ignore charts.
- *
- * @param boolean $pValue
- *
- * @return PHPExcel_Writer_Excel2007
- */
- public function setIncludeCharts($pValue = false) {
- $this->_includeCharts = (boolean) $pValue;
- return $this;
- }
-
- /**
- * Get Pre-Calculate Formulas
- *
- * @return boolean
- */
- public function getPreCalculateFormulas() {
- return $this->_preCalculateFormulas;
- }
-
- /**
- * Set Pre-Calculate Formulas
- *
- * @param boolean $pValue Pre-Calculate Formulas?
- */
- public function setPreCalculateFormulas($pValue = true) {
- $this->_preCalculateFormulas = $pValue;
- }
-
- /**
- * Get Office2003 compatibility
- *
- * @return boolean
- */
- public function getOffice2003Compatibility() {
- return $this->_office2003compatibility;
- }
-
- /**
- * Set Pre-Calculate Formulas
- *
- * @param boolean $pValue Office2003 compatibility?
- * @return PHPExcel_Writer_Excel2007
- */
- public function setOffice2003Compatibility($pValue = false) {
- $this->_office2003compatibility = $pValue;
- return $this;
- }
-
- /**
- * Get use disk caching where possible?
- *
- * @return boolean
- */
- public function getUseDiskCaching() {
- return $this->_useDiskCaching;
- }
-
- /**
- * Set use disk caching where possible?
- *
- * @param boolean $pValue
- * @param string $pDirectory Disk caching directory
- * @throws Exception Exception when directory does not exist
- * @return PHPExcel_Writer_Excel2007
- */
- public function setUseDiskCaching($pValue = false, $pDirectory = null) {
- $this->_useDiskCaching = $pValue;
-
- if ($pDirectory !== NULL) {
- if (is_dir($pDirectory)) {
- $this->_diskCachingDirectory = $pDirectory;
- } else {
- throw new Exception("Directory does not exist: $pDirectory");
- }
- }
- return $this;
- }
-
- /**
- * Get disk caching directory
- *
- * @return string
- */
- public function getDiskCachingDirectory() {
- return $this->_diskCachingDirectory;
- }
-}
diff --git a/admin/survey/excel/PHPExcel/Writer/Excel2007/Chart.php b/admin/survey/excel/PHPExcel/Writer/Excel2007/Chart.php
deleted file mode 100644
index 1b54f04..0000000
--- a/admin/survey/excel/PHPExcel/Writer/Excel2007/Chart.php
+++ /dev/null
@@ -1,1181 +0,0 @@
-<?php
-/**
- * PHPExcel
- *
- * Copyright (c) 2006 - 2012 PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel_Writer_Excel2007
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-
-/**
- * PHPExcel_Writer_Excel2007_Chart
- *
- * @category PHPExcel
- * @package PHPExcel_Writer_Excel2007
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- */
-class PHPExcel_Writer_Excel2007_Chart extends PHPExcel_Writer_Excel2007_WriterPart
-{
- /**
- * Write charts to XML format
- *
- * @param PHPExcel_Chart $pChart
- * @return string XML Output
- * @throws Exception
- */
- public function writeChart(PHPExcel_Chart $pChart = null)
- {
- // Create XML writer
- $objWriter = null;
- if ($this->getParentWriter()->getUseDiskCaching()) {
- $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_DISK, $this->getParentWriter()->getDiskCachingDirectory());
- } else {
- $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_MEMORY);
- }
- // Ensure that data series values are up-to-date before we save
- $pChart->refresh();
-
- // XML header
- $objWriter->startDocument('1.0','UTF-8','yes');
-
- // c:chartSpace
- $objWriter->startElement('c:chartSpace');
- $objWriter->writeAttribute('xmlns:c', 'http://schemas.openxmlformats.org/drawingml/2006/chart');
- $objWriter->writeAttribute('xmlns:a', 'http://schemas.openxmlformats.org/drawingml/2006/main');
- $objWriter->writeAttribute('xmlns:r', 'http://schemas.openxmlformats.org/officeDocument/2006/relationships');
-
- $objWriter->startElement('c:date1904');
- $objWriter->writeAttribute('val', 0);
- $objWriter->endElement();
- $objWriter->startElement('c:lang');
- $objWriter->writeAttribute('val', "en-GB");
- $objWriter->endElement();
- $objWriter->startElement('c:roundedCorners');
- $objWriter->writeAttribute('val', 0);
- $objWriter->endElement();
-
- $this->_writeAlternateContent($objWriter);
-
- $objWriter->startElement('c:chart');
-
- $this->_writeTitle($pChart->getTitle(), $objWriter);
-
- $objWriter->startElement('c:autoTitleDeleted');
- $objWriter->writeAttribute('val', 0);
- $objWriter->endElement();
-
- $this->_writePlotArea($pChart->getPlotArea(),
- $pChart->getXAxisLabel(),
- $pChart->getYAxisLabel(),
- $objWriter,
- $pChart->getWorksheet()
- );
-
- $this->_writeLegend($pChart->getLegend(), $objWriter);
-
-
- $objWriter->startElement('c:plotVisOnly');
- $objWriter->writeAttribute('val', 1);
- $objWriter->endElement();
-
- $objWriter->startElement('c:dispBlanksAs');
- $objWriter->writeAttribute('val', "gap");
- $objWriter->endElement();
-
- $objWriter->startElement('c:showDLblsOverMax');
- $objWriter->writeAttribute('val', 0);
- $objWriter->endElement();
-
- $objWriter->endElement();
-
- $this->_writePrintSettings($objWriter);
-
- $objWriter->endElement();
-
- // Return
- return $objWriter->getData();
- }
-
- /**
- * Write Chart Title
- *
- * @param PHPExcel_Chart_Title $title
- * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer
- * @throws Exception
- */
- private function _writeTitle(PHPExcel_Chart_Title $title = null, $objWriter)
- {
- if (is_null($title)) {
- return;
- }
-
- $objWriter->startElement('c:title');
- $objWriter->startElement('c:tx');
- $objWriter->startElement('c:rich');
-
- $objWriter->startElement('a:bodyPr');
- $objWriter->endElement();
-
- $objWriter->startElement('a:lstStyle');
- $objWriter->endElement();
-
- $objWriter->startElement('a:p');
-
- $caption = $title->getCaption();
- if ((is_array($caption)) && (count($caption) > 0))
- $caption = $caption[0];
- $this->getParentWriter()->getWriterPart('stringtable')->writeRichTextForCharts($objWriter, $caption, 'a');
-
- $objWriter->endElement();
- $objWriter->endElement();
- $objWriter->endElement();
-
- $layout = $title->getLayout();
- $this->_writeLayout($layout, $objWriter);
-
- $objWriter->startElement('c:overlay');
- $objWriter->writeAttribute('val', 0);
- $objWriter->endElement();
-
- $objWriter->endElement();
- }
-
- /**
- * Write Chart Legend
- *
- * @param PHPExcel_Chart_Legend $legend
- * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer
- * @throws Exception
- */
- private function _writeLegend(PHPExcel_Chart_Legend $legend = null, $objWriter)
- {
- if (is_null($legend)) {
- return;
- }
-
- $objWriter->startElement('c:legend');
-
- $objWriter->startElement('c:legendPos');
- $objWriter->writeAttribute('val', $legend->getPosition());
- $objWriter->endElement();
-
- $layout = $legend->getLayout();
- $this->_writeLayout($layout, $objWriter);
-
- $objWriter->startElement('c:overlay');
- $objWriter->writeAttribute('val', ($legend->getOverlay()) ? '1' : '0');
- $objWriter->endElement();
-
- $objWriter->startElement('c:txPr');
- $objWriter->startElement('a:bodyPr');
- $objWriter->endElement();
-
- $objWriter->startElement('a:lstStyle');
- $objWriter->endElement();
-
- $objWriter->startElement('a:p');
- $objWriter->startElement('a:pPr');
- $objWriter->writeAttribute('rtl', 0);
-
- $objWriter->startElement('a:defRPr');
- $objWriter->endElement();
- $objWriter->endElement();
-
- $objWriter->startElement('a:endParaRPr');
- $objWriter->writeAttribute('lang', "en-US");
- $objWriter->endElement();
-
- $objWriter->endElement();
- $objWriter->endElement();
-
- $objWriter->endElement();
- }
-
- /**
- * Write Chart Plot Area
- *
- * @param PHPExcel_Chart_PlotArea $plotArea
- * @param PHPExcel_Chart_Title $xAxisLabel
- * @param PHPExcel_Chart_Title $yAxisLabel
- * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer
- * @throws Exception
- */
- private function _writePlotArea(PHPExcel_Chart_PlotArea $plotArea,
- PHPExcel_Chart_Title $xAxisLabel = NULL,
- PHPExcel_Chart_Title $yAxisLabel = NULL,
- $objWriter,
- PHPExcel_Worksheet $pSheet)
- {
- if (is_null($plotArea)) {
- return;
- }
-
- $id1 = $id2 = 0;
- $objWriter->startElement('c:plotArea');
-
- $layout = $plotArea->getLayout();
-
- $this->_writeLayout($layout, $objWriter);
-
- $chartTypes = self::_getChartType($plotArea);
- $catIsMultiLevelSeries = $valIsMultiLevelSeries = FALSE;
- $plotGroupingType = '';
- foreach($chartTypes as $chartType) {
- $objWriter->startElement('c:'.$chartType);
-
- $groupCount = $plotArea->getPlotGroupCount();
- for($i = 0; $i < $groupCount; ++$i) {
- $plotGroup = $plotArea->getPlotGroupByIndex($i);
- $groupType = $plotGroup->getPlotType();
- if ($groupType == $chartType) {
-
- $plotStyle = $plotGroup->getPlotStyle();
- if ($groupType === PHPExcel_Chart_DataSeries::TYPE_RADARCHART) {
- $objWriter->startElement('c:radarStyle');
- $objWriter->writeAttribute('val', $plotStyle );
- $objWriter->endElement();
- } elseif ($groupType === PHPExcel_Chart_DataSeries::TYPE_SCATTERCHART) {
- $objWriter->startElement('c:scatterStyle');
- $objWriter->writeAttribute('val', $plotStyle );
- $objWriter->endElement();
- }
-
- $this->_writePlotGroup($plotGroup, $chartType, $objWriter, $catIsMultiLevelSeries, $valIsMultiLevelSeries, $plotGroupingType, $pSheet);
- }
- }
-
- $this->_writeDataLbls($objWriter, $layout);
-
- if ($chartType === PHPExcel_Chart_DataSeries::TYPE_LINECHART) {
- // Line only, Line3D can't be smoothed
-
- $objWriter->startElement('c:smooth');
- $objWriter->writeAttribute('val', (integer) $plotGroup->getSmoothLine() );
- $objWriter->endElement();
- } elseif (($chartType === PHPExcel_Chart_DataSeries::TYPE_BARCHART) ||
- ($chartType === PHPExcel_Chart_DataSeries::TYPE_BARCHART_3D)) {
-
- $objWriter->startElement('c:gapWidth');
- $objWriter->writeAttribute('val', 150 );
- $objWriter->endElement();
-
- if ($plotGroupingType == 'percentStacked' ||
- $plotGroupingType == 'stacked') {
-
- $objWriter->startElement('c:overlap');
- $objWriter->writeAttribute('val', 100 );
- $objWriter->endElement();
- }
- } elseif ($chartType === PHPExcel_Chart_DataSeries::TYPE_BUBBLECHART) {
-
- $objWriter->startElement('c:bubbleScale');
- $objWriter->writeAttribute('val', 25 );
- $objWriter->endElement();
-
- $objWriter->startElement('c:showNegBubbles');
- $objWriter->writeAttribute('val', 0 );
- $objWriter->endElement();
- } elseif ($chartType === PHPExcel_Chart_DataSeries::TYPE_STOCKCHART) {
-
- $objWriter->startElement('c:hiLowLines');
- $objWriter->endElement();
- }
-
- // Generate 2 unique numbers to use for axId values
-// $id1 = $id2 = rand(10000000,99999999);
-// do {
-// $id2 = rand(10000000,99999999);
-// } while ($id1 == $id2);
- $id1 = '75091328';
- $id2 = '75089408';
-
- if (($chartType !== PHPExcel_Chart_DataSeries::TYPE_PIECHART) &&
- ($chartType !== PHPExcel_Chart_DataSeries::TYPE_PIECHART_3D) &&
- ($chartType !== PHPExcel_Chart_DataSeries::TYPE_DONUTCHART)) {
-
- $objWriter->startElement('c:axId');
- $objWriter->writeAttribute('val', $id1 );
- $objWriter->endElement();
- $objWriter->startElement('c:axId');
- $objWriter->writeAttribute('val', $id2 );
- $objWriter->endElement();
- } else {
- $objWriter->startElement('c:firstSliceAng');
- $objWriter->writeAttribute('val', 0);
- $objWriter->endElement();
-
- if ($chartType === PHPExcel_Chart_DataSeries::TYPE_DONUTCHART) {
-
- $objWriter->startElement('c:holeSize');
- $objWriter->writeAttribute('val', 50);
- $objWriter->endElement();
- }
- }
-
- $objWriter->endElement();
- }
-
- if (($chartType !== PHPExcel_Chart_DataSeries::TYPE_PIECHART) &&
- ($chartType !== PHPExcel_Chart_DataSeries::TYPE_PIECHART_3D) &&
- ($chartType !== PHPExcel_Chart_DataSeries::TYPE_DONUTCHART)) {
-
- if ($chartType === PHPExcel_Chart_DataSeries::TYPE_BUBBLECHART) {
- $this->_writeValAx($objWriter,$plotArea,$xAxisLabel,$chartType,$id1,$id2,$catIsMultiLevelSeries);
- } else {
- $this->_writeCatAx($objWriter,$plotArea,$xAxisLabel,$chartType,$id1,$id2,$catIsMultiLevelSeries);
- }
-
- $this->_writeValAx($objWriter,$plotArea,$yAxisLabel,$chartType,$id1,$id2,$valIsMultiLevelSeries);
- }
-
- $objWriter->endElement();
- }
-
- /**
- * Write Data Labels
- *
- * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer
- * @param PHPExcel_Chart_Layout $chartLayout Chart layout
- * @throws Exception
- */
- private function _writeDataLbls($objWriter, $chartLayout)
- {
- $objWriter->startElement('c:dLbls');
-
- $objWriter->startElement('c:showLegendKey');
- $showLegendKey = (empty($chartLayout)) ? 0 : $chartLayout->getShowLegendKey();
- $objWriter->writeAttribute('val', ((empty($showLegendKey)) ? 0 : 1) );
- $objWriter->endElement();
-
-
- $objWriter->startElement('c:showVal');
- $showVal = (empty($chartLayout)) ? 0 : $chartLayout->getShowVal();
- $objWriter->writeAttribute('val', ((empty($showVal)) ? 0 : 1) );
- $objWriter->endElement();
-
- $objWriter->startElement('c:showCatName');
- $showCatName = (empty($chartLayout)) ? 0 : $chartLayout->getShowCatName();
- $objWriter->writeAttribute('val', ((empty($showCatName)) ? 0 : 1) );
- $objWriter->endElement();
-
- $objWriter->startElement('c:showSerName');
- $showSerName = (empty($chartLayout)) ? 0 : $chartLayout->getShowSerName();
- $objWriter->writeAttribute('val', ((empty($showSerName)) ? 0 : 1) );
- $objWriter->endElement();
-
- $objWriter->startElement('c:showPercent');
- $showPercent = (empty($chartLayout)) ? 0 : $chartLayout->getShowPercent();
- $objWriter->writeAttribute('val', ((empty($showPercent)) ? 0 : 1) );
- $objWriter->endElement();
-
- $objWriter->startElement('c:showBubbleSize');
- $showBubbleSize = (empty($chartLayout)) ? 0 : $chartLayout->getShowBubbleSize();
- $objWriter->writeAttribute('val', ((empty($showBubbleSize)) ? 0 : 1) );
- $objWriter->endElement();
-
- $objWriter->startElement('c:showLeaderLines');
- $showLeaderLines = (empty($chartLayout)) ? 1 : $chartLayout->getShowLeaderLines();
- $objWriter->writeAttribute('val', ((empty($showLeaderLines)) ? 0 : 1) );
- $objWriter->endElement();
-
- $objWriter->endElement();
- }
-
- /**
- * Write Category Axis
- *
- * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer
- * @param PHPExcel_Chart_PlotArea $plotArea
- * @param PHPExcel_Chart_Title $xAxisLabel
- * @param string $groupType Chart type
- * @param string $id1
- * @param string $id2
- * @param boolean $isMultiLevelSeries
- * @throws Exception
- */
- private function _writeCatAx($objWriter, PHPExcel_Chart_PlotArea $plotArea, $xAxisLabel, $groupType, $id1, $id2, $isMultiLevelSeries)
- {
- $objWriter->startElement('c:catAx');
-
- if ($id1 > 0) {
- $objWriter->startElement('c:axId');
- $objWriter->writeAttribute('val', $id1);
- $objWriter->endElement();
- }
-
- $objWriter->startElement('c:scaling');
- $objWriter->startElement('c:orientation');
- $objWriter->writeAttribute('val', "minMax");
- $objWriter->endElement();
- $objWriter->endElement();
-
- $objWriter->startElement('c:delete');
- $objWriter->writeAttribute('val', 0);
- $objWriter->endElement();
-
- $objWriter->startElement('c:axPos');
- $objWriter->writeAttribute('val', "b");
- $objWriter->endElement();
-
- if (!is_null($xAxisLabel)) {
- $objWriter->startElement('c:title');
- $objWriter->startElement('c:tx');
- $objWriter->startElement('c:rich');
-
- $objWriter->startElement('a:bodyPr');
- $objWriter->endElement();
-
- $objWriter->startElement('a:lstStyle');
- $objWriter->endElement();
-
- $objWriter->startElement('a:p');
- $objWriter->startElement('a:r');
-
- $caption = $xAxisLabel->getCaption();
- if (is_array($caption))
- $caption = $caption[0];
- $objWriter->startElement('a:t');
-// $objWriter->writeAttribute('xml:space', 'preserve');
- $objWriter->writeRawData(PHPExcel_Shared_String::ControlCharacterPHP2OOXML( $caption ));
- $objWriter->endElement();
-
- $objWriter->endElement();
- $objWriter->endElement();
- $objWriter->endElement();
- $objWriter->endElement();
-
- $objWriter->startElement('c:overlay');
- $objWriter->writeAttribute('val', 0);
- $objWriter->endElement();
-
- $layout = $xAxisLabel->getLayout();
- $this->_writeLayout($layout, $objWriter);
-
- $objWriter->endElement();
-
- }
-
- $objWriter->startElement('c:numFmt');
- $objWriter->writeAttribute('formatCode', "General");
- $objWriter->writeAttribute('sourceLinked', 1);
- $objWriter->endElement();
-
- $objWriter->startElement('c:majorTickMark');
- $objWriter->writeAttribute('val', "out");
- $objWriter->endElement();
-
- $objWriter->startElement('c:minorTickMark');
- $objWriter->writeAttribute('val', "none");
- $objWriter->endElement();
-
- $objWriter->startElement('c:tickLblPos');
- $objWriter->writeAttribute('val', "nextTo");
- $objWriter->endElement();
-
- if ($id2 > 0) {
- $objWriter->startElement('c:crossAx');
- $objWriter->writeAttribute('val', $id2);
- $objWriter->endElement();
-
- $objWriter->startElement('c:crosses');
- $objWriter->writeAttribute('val', "autoZero");
- $objWriter->endElement();
- }
-
- $objWriter->startElement('c:auto');
- $objWriter->writeAttribute('val', 1);
- $objWriter->endElement();
-
- $objWriter->startElement('c:lblAlgn');
- $objWriter->writeAttribute('val', "ctr");
- $objWriter->endElement();
-
- $objWriter->startElement('c:lblOffset');
- $objWriter->writeAttribute('val', 100);
- $objWriter->endElement();
-
- if ($isMultiLevelSeries) {
- $objWriter->startElement('c:noMultiLvlLbl');
- $objWriter->writeAttribute('val', 0);
- $objWriter->endElement();
- }
- $objWriter->endElement();
-
- }
-
-
- /**
- * Write Value Axis
- *
- * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer
- * @param PHPExcel_Chart_PlotArea $plotArea
- * @param PHPExcel_Chart_Title $yAxisLabel
- * @param string $groupType Chart type
- * @param string $id1
- * @param string $id2
- * @param boolean $isMultiLevelSeries
- * @throws Exception
- */
- private function _writeValAx($objWriter, PHPExcel_Chart_PlotArea $plotArea, $yAxisLabel, $groupType, $id1, $id2, $isMultiLevelSeries)
- {
- $objWriter->startElement('c:valAx');
-
- if ($id2 > 0) {
- $objWriter->startElement('c:axId');
- $objWriter->writeAttribute('val', $id2);
- $objWriter->endElement();
- }
-
- $objWriter->startElement('c:scaling');
- $objWriter->startElement('c:orientation');
- $objWriter->writeAttribute('val', "minMax");
- $objWriter->endElement();
- $objWriter->endElement();
-
- $objWriter->startElement('c:delete');
- $objWriter->writeAttribute('val', 0);
- $objWriter->endElement();
-
- $objWriter->startElement('c:axPos');
- $objWriter->writeAttribute('val', "l");
- $objWriter->endElement();
-
- $objWriter->startElement('c:majorGridlines');
- $objWriter->endElement();
-
- if (!is_null($yAxisLabel)) {
- $objWriter->startElement('c:title');
- $objWriter->startElement('c:tx');
- $objWriter->startElement('c:rich');
-
- $objWriter->startElement('a:bodyPr');
- $objWriter->endElement();
-
- $objWriter->startElement('a:lstStyle');
- $objWriter->endElement();
-
- $objWriter->startElement('a:p');
- $objWriter->startElement('a:r');
-
- $caption = $yAxisLabel->getCaption();
- if (is_array($caption))
- $caption = $caption[0];
- $objWriter->startElement('a:t');
-// $objWriter->writeAttribute('xml:space', 'preserve');
- $objWriter->writeRawData(PHPExcel_Shared_String::ControlCharacterPHP2OOXML( $caption ));
- $objWriter->endElement();
-
- $objWriter->endElement();
- $objWriter->endElement();
- $objWriter->endElement();
- $objWriter->endElement();
-
- $objWriter->startElement('c:overlay');
- $objWriter->writeAttribute('val', 0);
- $objWriter->endElement();
-
- if ($groupType !== PHPExcel_Chart_DataSeries::TYPE_BUBBLECHART) {
- $layout = $yAxisLabel->getLayout();
- $this->_writeLayout($layout, $objWriter);
- }
-
- $objWriter->endElement();
- }
-
- $objWriter->startElement('c:numFmt');
- $objWriter->writeAttribute('formatCode', "General");
- $objWriter->writeAttribute('sourceLinked', 1);
- $objWriter->endElement();
-
- $objWriter->startElement('c:majorTickMark');
- $objWriter->writeAttribute('val', "out");
- $objWriter->endElement();
-
- $objWriter->startElement('c:minorTickMark');
- $objWriter->writeAttribute('val', "none");
- $objWriter->endElement();
-
- $objWriter->startElement('c:tickLblPos');
- $objWriter->writeAttribute('val', "nextTo");
- $objWriter->endElement();
-
- if ($id1 > 0) {
- $objWriter->startElement('c:crossAx');
- $objWriter->writeAttribute('val', $id2);
- $objWriter->endElement();
-
- $objWriter->startElement('c:crosses');
- $objWriter->writeAttribute('val', "autoZero");
- $objWriter->endElement();
-
- $objWriter->startElement('c:crossBetween');
- $objWriter->writeAttribute('val', "midCat");
- $objWriter->endElement();
- }
-
- if ($isMultiLevelSeries) {
- if ($groupType !== PHPExcel_Chart_DataSeries::TYPE_BUBBLECHART) {
- $objWriter->startElement('c:noMultiLvlLbl');
- $objWriter->writeAttribute('val', 0);
- $objWriter->endElement();
- }
- }
- $objWriter->endElement();
-
- }
-
-
- /**
- * Get the data series type(s) for a chart plot series
- *
- * @param PHPExcel_Chart_PlotArea $plotArea
- * @return string|array
- * @throws Exception
- */
- private static function _getChartType($plotArea)
- {
- $groupCount = $plotArea->getPlotGroupCount();
-
- if ($groupCount == 1) {
- $chartType = array($plotArea->getPlotGroupByIndex(0)->getPlotType());
- } else {
- $chartTypes = array();
- for($i = 0; $i < $groupCount; ++$i) {
- $chartTypes[] = $plotArea->getPlotGroupByIndex($i)->getPlotType();
- }
- $chartType = array_unique($chartTypes);
- if (count($chartTypes) == 0) {
- throw new Exception('Chart is not yet implemented');
- }
- }
-
- return $chartType;
- }
-
- /**
- * Write Plot Group (series of related plots)
- *
- * @param PHPExcel_Chart_DataSeries $plotGroup
- * @param string $groupType Type of plot for dataseries
- * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer
- * @param boolean &$catIsMultiLevelSeries Is category a multi-series category
- * @param boolean &$valIsMultiLevelSeries Is value set a multi-series set
- * @param string &$plotGroupingType Type of grouping for multi-series values
- * @param PHPExcel_Worksheet $pSheet
- * @throws Exception
- */
- private function _writePlotGroup( $plotGroup,
- $groupType,
- $objWriter,
- &$catIsMultiLevelSeries,
- &$valIsMultiLevelSeries,
- &$plotGroupingType,
- PHPExcel_Worksheet $pSheet
- )
- {
- if (is_null($plotGroup)) {
- return;
- }
-
- if (($groupType == PHPExcel_Chart_DataSeries::TYPE_BARCHART) ||
- ($groupType == PHPExcel_Chart_DataSeries::TYPE_BARCHART_3D)) {
- $objWriter->startElement('c:barDir');
- $objWriter->writeAttribute('val', $plotGroup->getPlotDirection());
- $objWriter->endElement();
- }
-
- if (!is_null($plotGroup->getPlotGrouping())) {
- $plotGroupingType = $plotGroup->getPlotGrouping();
- $objWriter->startElement('c:grouping');
- $objWriter->writeAttribute('val', $plotGroupingType);
- $objWriter->endElement();
- }
-
- // Get these details before the loop, because we can use the count to check for varyColors
- $plotSeriesOrder = $plotGroup->getPlotOrder();
- $plotSeriesCount = count($plotSeriesOrder);
-
- if (($groupType !== PHPExcel_Chart_DataSeries::TYPE_RADARCHART) &&
- ($groupType !== PHPExcel_Chart_DataSeries::TYPE_STOCKCHART)) {
-
- if ($groupType !== PHPExcel_Chart_DataSeries::TYPE_LINECHART) {
- if (($groupType == PHPExcel_Chart_DataSeries::TYPE_PIECHART) ||
- ($groupType == PHPExcel_Chart_DataSeries::TYPE_PIECHART_3D) ||
- ($groupType == PHPExcel_Chart_DataSeries::TYPE_DONUTCHART) ||
- ($plotSeriesCount > 1)) {
- $objWriter->startElement('c:varyColors');
- $objWriter->writeAttribute('val', 1);
- $objWriter->endElement();
- } else {
- $objWriter->startElement('c:varyColors');
- $objWriter->writeAttribute('val', 0);
- $objWriter->endElement();
- }
- }
- }
-
- foreach($plotSeriesOrder as $plotSeriesIdx => $plotSeriesRef) {
- $objWriter->startElement('c:ser');
-
- $objWriter->startElement('c:idx');
- $objWriter->writeAttribute('val', $plotSeriesIdx);
- $objWriter->endElement();
-
- $objWriter->startElement('c:order');
- $objWriter->writeAttribute('val', $plotSeriesRef);
- $objWriter->endElement();
-
- if (($groupType == PHPExcel_Chart_DataSeries::TYPE_PIECHART) ||
- ($groupType == PHPExcel_Chart_DataSeries::TYPE_PIECHART_3D) ||
- ($groupType == PHPExcel_Chart_DataSeries::TYPE_DONUTCHART)) {
-
- $objWriter->startElement('c:dPt');
- $objWriter->startElement('c:idx');
- $objWriter->writeAttribute('val', 3);
- $objWriter->endElement();
-
- $objWriter->startElement('c:bubble3D');
- $objWriter->writeAttribute('val', 0);
- $objWriter->endElement();
-
- $objWriter->startElement('c:spPr');
- $objWriter->startElement('a:solidFill');
- $objWriter->startElement('a:srgbClr');
- $objWriter->writeAttribute('val', 'FF9900');
- $objWriter->endElement();
- $objWriter->endElement();
- $objWriter->endElement();
- $objWriter->endElement();
- }
-
- // Labels
- $plotSeriesLabel = $plotGroup->getPlotLabelByIndex($plotSeriesRef);
- if ($plotSeriesLabel && ($plotSeriesLabel->getPointCount() > 0)) {
- $objWriter->startElement('c:tx');
- $objWriter->startElement('c:strRef');
- $this->_writePlotSeriesLabel($plotSeriesLabel, $objWriter);
- $objWriter->endElement();
- $objWriter->endElement();
- }
-
- // Formatting for the points
- if ($groupType == PHPExcel_Chart_DataSeries::TYPE_LINECHART) {
- $objWriter->startElement('c:spPr');
- $objWriter->startElement('a:ln');
- $objWriter->writeAttribute('w', 12700);
- $objWriter->endElement();
- $objWriter->endElement();
- }
-
- $plotSeriesValues = $plotGroup->getPlotValuesByIndex($plotSeriesRef);
- if ($plotSeriesValues) {
- $plotSeriesMarker = $plotSeriesValues->getPointMarker();
- if ($plotSeriesMarker) {
- $objWriter->startElement('c:marker');
- $objWriter->startElement('c:symbol');
- $objWriter->writeAttribute('val', $plotSeriesMarker);
- $objWriter->endElement();
-
- if ($plotSeriesMarker !== 'none') {
- $objWriter->startElement('c:size');
- $objWriter->writeAttribute('val', 3);
- $objWriter->endElement();
- }
- $objWriter->endElement();
- }
- }
-
- if (($groupType === PHPExcel_Chart_DataSeries::TYPE_BARCHART) ||
- ($groupType === PHPExcel_Chart_DataSeries::TYPE_BARCHART_3D) ||
- ($groupType === PHPExcel_Chart_DataSeries::TYPE_BUBBLECHART)) {
-
- $objWriter->startElement('c:invertIfNegative');
- $objWriter->writeAttribute('val', 0);
- $objWriter->endElement();
- }
-
- // Category Labels
- $plotSeriesCategory = $plotGroup->getPlotCategoryByIndex($plotSeriesRef);
- if ($plotSeriesCategory && ($plotSeriesCategory->getPointCount() > 0)) {
- $catIsMultiLevelSeries = $catIsMultiLevelSeries || $plotSeriesCategory->isMultiLevelSeries();
-
- if (($groupType == PHPExcel_Chart_DataSeries::TYPE_PIECHART) ||
- ($groupType == PHPExcel_Chart_DataSeries::TYPE_PIECHART_3D) ||
- ($groupType == PHPExcel_Chart_DataSeries::TYPE_DONUTCHART)) {
-
- if (!is_null($plotGroup->getPlotStyle())) {
- $plotStyle = $plotGroup->getPlotStyle();
- if ($plotStyle) {
- $objWriter->startElement('c:explosion');
- $objWriter->writeAttribute('val', 25);
- $objWriter->endElement();
- }
- }
- }
-
- if (($groupType === PHPExcel_Chart_DataSeries::TYPE_BUBBLECHART) ||
- ($groupType === PHPExcel_Chart_DataSeries::TYPE_SCATTERCHART)) {
- $objWriter->startElement('c:xVal');
- } else {
- $objWriter->startElement('c:cat');
- }
-
- $this->_writePlotSeriesValues($plotSeriesCategory, $objWriter, $groupType, 'str', $pSheet);
- $objWriter->endElement();
- }
-
- // Values
- if ($plotSeriesValues) {
- $valIsMultiLevelSeries = $valIsMultiLevelSeries || $plotSeriesValues->isMultiLevelSeries();
-
- if (($groupType === PHPExcel_Chart_DataSeries::TYPE_BUBBLECHART) ||
- ($groupType === PHPExcel_Chart_DataSeries::TYPE_SCATTERCHART)) {
- $objWriter->startElement('c:yVal');
- } else {
- $objWriter->startElement('c:val');
- }
-
- $this->_writePlotSeriesValues($plotSeriesValues, $objWriter, $groupType, 'num', $pSheet);
- $objWriter->endElement();
- }
-
- if ($groupType === PHPExcel_Chart_DataSeries::TYPE_BUBBLECHART) {
- $this->_writeBubbles($plotSeriesValues, $objWriter, $pSheet);
- }
-
- $objWriter->endElement();
-
- }
- }
-
- /**
- * Write Plot Series Label
- *
- * @param PHPExcel_Chart_DataSeriesValues $plotSeriesLabel
- * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer
- * @throws Exception
- */
- private function _writePlotSeriesLabel($plotSeriesLabel, $objWriter)
- {
- if (is_null($plotSeriesLabel)) {
- return;
- }
-
- $objWriter->startElement('c:f');
- $objWriter->writeRawData($plotSeriesLabel->getDataSource());
- $objWriter->endElement();
-
- $objWriter->startElement('c:strCache');
- $objWriter->startElement('c:ptCount');
- $objWriter->writeAttribute('val', $plotSeriesLabel->getPointCount() );
- $objWriter->endElement();
-
- foreach($plotSeriesLabel->getDataValues() as $plotLabelKey => $plotLabelValue) {
- $objWriter->startElement('c:pt');
- $objWriter->writeAttribute('idx', $plotLabelKey );
-
- $objWriter->startElement('c:v');
- $objWriter->writeRawData( $plotLabelValue );
- $objWriter->endElement();
- $objWriter->endElement();
- }
- $objWriter->endElement();
-
- }
-
- /**
- * Write Plot Series Values
- *
- * @param PHPExcel_Chart_DataSeriesValues $plotSeriesValues
- * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer
- * @param string $groupType Type of plot for dataseries
- * @param string $dataType Datatype of series values
- * @param PHPExcel_Worksheet $pSheet
- * @throws Exception
- */
- private function _writePlotSeriesValues( $plotSeriesValues,
- $objWriter,
- $groupType,
- $dataType='str',
- PHPExcel_Worksheet $pSheet
- )
- {
- if (is_null($plotSeriesValues)) {
- return;
- }
-
- if ($plotSeriesValues->isMultiLevelSeries()) {
- $levelCount = $plotSeriesValues->multiLevelCount();
-
- $objWriter->startElement('c:multiLvlStrRef');
-
- $objWriter->startElement('c:f');
- $objWriter->writeRawData( $plotSeriesValues->getDataSource() );
- $objWriter->endElement();
-
- $objWriter->startElement('c:multiLvlStrCache');
-
- $objWriter->startElement('c:ptCount');
- $objWriter->writeAttribute('val', $plotSeriesValues->getPointCount() );
- $objWriter->endElement();
-
- for ($level = 0; $level < $levelCount; ++$level) {
- $objWriter->startElement('c:lvl');
-
- foreach($plotSeriesValues->getDataValues() as $plotSeriesKey => $plotSeriesValue) {
- if (isset($plotSeriesValue[$level])) {
- $objWriter->startElement('c:pt');
- $objWriter->writeAttribute('idx', $plotSeriesKey );
-
- $objWriter->startElement('c:v');
- $objWriter->writeRawData( $plotSeriesValue[$level] );
- $objWriter->endElement();
- $objWriter->endElement();
- }
- }
-
- $objWriter->endElement();
- }
-
- $objWriter->endElement();
-
- $objWriter->endElement();
- } else {
- $objWriter->startElement('c:'.$dataType.'Ref');
-
- $objWriter->startElement('c:f');
- $objWriter->writeRawData( $plotSeriesValues->getDataSource() );
- $objWriter->endElement();
-
- $objWriter->startElement('c:'.$dataType.'Cache');
-
- if (($groupType != PHPExcel_Chart_DataSeries::TYPE_PIECHART) &&
- ($groupType != PHPExcel_Chart_DataSeries::TYPE_PIECHART_3D) &&
- ($groupType != PHPExcel_Chart_DataSeries::TYPE_DONUTCHART)) {
-
- if (($plotSeriesValues->getFormatCode() !== NULL) &&
- ($plotSeriesValues->getFormatCode() !== '')) {
- $objWriter->startElement('c:formatCode');
- $objWriter->writeRawData( $plotSeriesValues->getFormatCode() );
- $objWriter->endElement();
- }
- }
-
- $objWriter->startElement('c:ptCount');
- $objWriter->writeAttribute('val', $plotSeriesValues->getPointCount() );
- $objWriter->endElement();
-
- $dataValues = $plotSeriesValues->getDataValues();
- if (!empty($dataValues)) {
- if (is_array($dataValues)) {
- foreach($dataValues as $plotSeriesKey => $plotSeriesValue) {
- $objWriter->startElement('c:pt');
- $objWriter->writeAttribute('idx', $plotSeriesKey );
-
- $objWriter->startElement('c:v');
- $objWriter->writeRawData( $plotSeriesValue );
- $objWriter->endElement();
- $objWriter->endElement();
- }
- }
- }
-
- $objWriter->endElement();
-
- $objWriter->endElement();
- }
- }
-
- /**
- * Write Bubble Chart Details
- *
- * @param PHPExcel_Chart_DataSeriesValues $plotSeriesValues
- * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer
- * @throws Exception
- */
- private function _writeBubbles($plotSeriesValues, $objWriter, PHPExcel_Worksheet $pSheet)
- {
- if (is_null($plotSeriesValues)) {
- return;
- }
-
- $objWriter->startElement('c:bubbleSize');
- $objWriter->startElement('c:numLit');
-
- $objWriter->startElement('c:formatCode');
- $objWriter->writeRawData( 'General' );
- $objWriter->endElement();
-
- $objWriter->startElement('c:ptCount');
- $objWriter->writeAttribute('val', $plotSeriesValues->getPointCount() );
- $objWriter->endElement();
-
- $dataValues = $plotSeriesValues->getDataValues();
- if (!empty($dataValues)) {
- if (is_array($dataValues)) {
- foreach($dataValues as $plotSeriesKey => $plotSeriesValue) {
- $objWriter->startElement('c:pt');
- $objWriter->writeAttribute('idx', $plotSeriesKey );
- $objWriter->startElement('c:v');
- $objWriter->writeRawData( 1 );
- $objWriter->endElement();
- $objWriter->endElement();
- }
- }
- }
-
- $objWriter->endElement();
- $objWriter->endElement();
-
- $objWriter->startElement('c:bubble3D');
- $objWriter->writeAttribute('val', 0 );
- $objWriter->endElement();
- }
-
- /**
- * Write Layout
- *
- * @param PHPExcel_Chart_Layout $layout
- * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer
- * @throws Exception
- */
- private function _writeLayout(PHPExcel_Chart_Layout $layout = NULL, $objWriter)
- {
- $objWriter->startElement('c:layout');
-
- if (!is_null($layout)) {
- $objWriter->startElement('c:manualLayout');
-
- $layoutTarget = $layout->getLayoutTarget();
- if (!is_null($layoutTarget)) {
- $objWriter->startElement('c:layoutTarget');
- $objWriter->writeAttribute('val', $layoutTarget);
- $objWriter->endElement();
- }
-
- $xMode = $layout->getXMode();
- if (!is_null($xMode)) {
- $objWriter->startElement('c:xMode');
- $objWriter->writeAttribute('val', $xMode);
- $objWriter->endElement();
- }
-
- $yMode = $layout->getYMode();
- if (!is_null($yMode)) {
- $objWriter->startElement('c:yMode');
- $objWriter->writeAttribute('val', $yMode);
- $objWriter->endElement();
- }
-
- $x = $layout->getXPosition();
- if (!is_null($x)) {
- $objWriter->startElement('c:x');
- $objWriter->writeAttribute('val', $x);
- $objWriter->endElement();
- }
-
- $y = $layout->getYPosition();
- if (!is_null($y)) {
- $objWriter->startElement('c:y');
- $objWriter->writeAttribute('val', $y);
- $objWriter->endElement();
- }
-
- $w = $layout->getWidth();
- if (!is_null($w)) {
- $objWriter->startElement('c:w');
- $objWriter->writeAttribute('val', $w);
- $objWriter->endElement();
- }
-
- $h = $layout->getHeight();
- if (!is_null($h)) {
- $objWriter->startElement('c:h');
- $objWriter->writeAttribute('val', $h);
- $objWriter->endElement();
- }
-
- $objWriter->endElement();
- }
-
- $objWriter->endElement();
- }
-
- /**
- * Write Alternate Content block
- *
- * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer
- * @throws Exception
- */
- private function _writeAlternateContent($objWriter)
- {
- $objWriter->startElement('mc:AlternateContent');
- $objWriter->writeAttribute('xmlns:mc', 'http://schemas.openxmlformats.org/markup-compatibility/2006');
-
- $objWriter->startElement('mc:Choice');
- $objWriter->writeAttribute('xmlns:c14', 'http://schemas.microsoft.com/office/drawing/2007/8/2/chart');
- $objWriter->writeAttribute('Requires', 'c14');
-
- $objWriter->startElement('c14:style');
- $objWriter->writeAttribute('val', '102');
- $objWriter->endElement();
- $objWriter->endElement();
-
- $objWriter->startElement('mc:Fallback');
- $objWriter->startElement('c:style');
- $objWriter->writeAttribute('val', '2');
- $objWriter->endElement();
- $objWriter->endElement();
-
- $objWriter->endElement();
- }
-
- /**
- * Write Printer Settings
- *
- * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer
- * @throws Exception
- */
- private function _writePrintSettings($objWriter)
- {
- $objWriter->startElement('c:printSettings');
-
- $objWriter->startElement('c:headerFooter');
- $objWriter->endElement();
-
- $objWriter->startElement('c:pageMargins');
- $objWriter->writeAttribute('footer', 0.3);
- $objWriter->writeAttribute('header', 0.3);
- $objWriter->writeAttribute('r', 0.7);
- $objWriter->writeAttribute('l', 0.7);
- $objWriter->writeAttribute('t', 0.75);
- $objWriter->writeAttribute('b', 0.75);
- $objWriter->endElement();
-
- $objWriter->startElement('c:pageSetup');
- $objWriter->writeAttribute('orientation', "portrait");
- $objWriter->endElement();
-
- $objWriter->endElement();
- }
-
-}
diff --git a/admin/survey/excel/PHPExcel/Writer/Excel2007/Comments.php b/admin/survey/excel/PHPExcel/Writer/Excel2007/Comments.php
deleted file mode 100644
index 8c5fb7f..0000000
--- a/admin/survey/excel/PHPExcel/Writer/Excel2007/Comments.php
+++ /dev/null
@@ -1,268 +0,0 @@
-<?php
-/**
- * PHPExcel
- *
- * Copyright (c) 2006 - 2012 PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel_Writer_Excel2007
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-
-/**
- * PHPExcel_Writer_Excel2007_Comments
- *
- * @category PHPExcel
- * @package PHPExcel_Writer_Excel2007
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- */
-class PHPExcel_Writer_Excel2007_Comments extends PHPExcel_Writer_Excel2007_WriterPart
-{
- /**
- * Write comments to XML format
- *
- * @param PHPExcel_Worksheet $pWorksheet
- * @return string XML Output
- * @throws Exception
- */
- public function writeComments(PHPExcel_Worksheet $pWorksheet = null)
- {
- // Create XML writer
- $objWriter = null;
- if ($this->getParentWriter()->getUseDiskCaching()) {
- $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_DISK, $this->getParentWriter()->getDiskCachingDirectory());
- } else {
- $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_MEMORY);
- }
-
- // XML header
- $objWriter->startDocument('1.0','UTF-8','yes');
-
- // Comments cache
- $comments = $pWorksheet->getComments();
-
- // Authors cache
- $authors = array();
- $authorId = 0;
- foreach ($comments as $comment) {
- if (!isset($authors[$comment->getAuthor()])) {
- $authors[$comment->getAuthor()] = $authorId++;
- }
- }
-
- // comments
- $objWriter->startElement('comments');
- $objWriter->writeAttribute('xmlns', 'http://schemas.openxmlformats.org/spreadsheetml/2006/main');
-
- // Loop through authors
- $objWriter->startElement('authors');
- foreach ($authors as $author => $index) {
- $objWriter->writeElement('author', $author);
- }
- $objWriter->endElement();
-
- // Loop through comments
- $objWriter->startElement('commentList');
- foreach ($comments as $key => $value) {
- $this->_writeComment($objWriter, $key, $value, $authors);
- }
- $objWriter->endElement();
-
- $objWriter->endElement();
-
- // Return
- return $objWriter->getData();
- }
-
- /**
- * Write comment to XML format
- *
- * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer
- * @param string $pCellReference Cell reference
- * @param PHPExcel_Comment $pComment Comment
- * @param array $pAuthors Array of authors
- * @throws Exception
- */
- public function _writeComment(PHPExcel_Shared_XMLWriter $objWriter = null, $pCellReference = 'A1', PHPExcel_Comment $pComment = null, $pAuthors = null)
- {
- // comment
- $objWriter->startElement('comment');
- $objWriter->writeAttribute('ref', $pCellReference);
- $objWriter->writeAttribute('authorId', $pAuthors[$pComment->getAuthor()]);
-
- // text
- $objWriter->startElement('text');
- $this->getParentWriter()->getWriterPart('stringtable')->writeRichText($objWriter, $pComment->getText());
- $objWriter->endElement();
-
- $objWriter->endElement();
- }
-
- /**
- * Write VML comments to XML format
- *
- * @param PHPExcel_Worksheet $pWorksheet
- * @return string XML Output
- * @throws Exception
- */
- public function writeVMLComments(PHPExcel_Worksheet $pWorksheet = null)
- {
- // Create XML writer
- $objWriter = null;
- if ($this->getParentWriter()->getUseDiskCaching()) {
- $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_DISK, $this->getParentWriter()->getDiskCachingDirectory());
- } else {
- $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_MEMORY);
- }
-
- // XML header
- $objWriter->startDocument('1.0','UTF-8','yes');
-
- // Comments cache
- $comments = $pWorksheet->getComments();
-
- // xml
- $objWriter->startElement('xml');
- $objWriter->writeAttribute('xmlns:v', 'urn:schemas-microsoft-com:vml');
- $objWriter->writeAttribute('xmlns:o', 'urn:schemas-microsoft-com:office:office');
- $objWriter->writeAttribute('xmlns:x', 'urn:schemas-microsoft-com:office:excel');
-
- // o:shapelayout
- $objWriter->startElement('o:shapelayout');
- $objWriter->writeAttribute('v:ext', 'edit');
-
- // o:idmap
- $objWriter->startElement('o:idmap');
- $objWriter->writeAttribute('v:ext', 'edit');
- $objWriter->writeAttribute('data', '1');
- $objWriter->endElement();
-
- $objWriter->endElement();
-
- // v:shapetype
- $objWriter->startElement('v:shapetype');
- $objWriter->writeAttribute('id', '_x0000_t202');
- $objWriter->writeAttribute('coordsize', '21600,21600');
- $objWriter->writeAttribute('o:spt', '202');
- $objWriter->writeAttribute('path', 'm,l,21600r21600,l21600,xe');
-
- // v:stroke
- $objWriter->startElement('v:stroke');
- $objWriter->writeAttribute('joinstyle', 'miter');
- $objWriter->endElement();
-
- // v:path
- $objWriter->startElement('v:path');
- $objWriter->writeAttribute('gradientshapeok', 't');
- $objWriter->writeAttribute('o:connecttype', 'rect');
- $objWriter->endElement();
-
- $objWriter->endElement();
-
- // Loop through comments
- foreach ($comments as $key => $value) {
- $this->_writeVMLComment($objWriter, $key, $value);
- }
-
- $objWriter->endElement();
-
- // Return
- return $objWriter->getData();
- }
-
- /**
- * Write VML comment to XML format
- *
- * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer
- * @param string $pCellReference Cell reference
- * @param PHPExcel_Comment $pComment Comment
- * @throws Exception
- */
- public function _writeVMLComment(PHPExcel_Shared_XMLWriter $objWriter = null, $pCellReference = 'A1', PHPExcel_Comment $pComment = null)
- {
- // Metadata
- list($column, $row) = PHPExcel_Cell::coordinateFromString($pCellReference);
- $column = PHPExcel_Cell::columnIndexFromString($column);
- $id = 1024 + $column + $row;
- $id = substr($id, 0, 4);
-
- // v:shape
- $objWriter->startElement('v:shape');
- $objWriter->writeAttribute('id', '_x0000_s' . $id);
- $objWriter->writeAttribute('type', '#_x0000_t202');
- $objWriter->writeAttribute('style', 'position:absolute;margin-left:' . $pComment->getMarginLeft() . ';margin-top:' . $pComment->getMarginTop() . ';width:' . $pComment->getWidth() . ';height:' . $pComment->getHeight() . ';z-index:1;visibility:' . ($pComment->getVisible() ? 'visible' : 'hidden'));
- $objWriter->writeAttribute('fillcolor', '#' . $pComment->getFillColor()->getRGB());
- $objWriter->writeAttribute('o:insetmode', 'auto');
-
- // v:fill
- $objWriter->startElement('v:fill');
- $objWriter->writeAttribute('color2', '#' . $pComment->getFillColor()->getRGB());
- $objWriter->endElement();
-
- // v:shadow
- $objWriter->startElement('v:shadow');
- $objWriter->writeAttribute('on', 't');
- $objWriter->writeAttribute('color', 'black');
- $objWriter->writeAttribute('obscured', 't');
- $objWriter->endElement();
-
- // v:path
- $objWriter->startElement('v:path');
- $objWriter->writeAttribute('o:connecttype', 'none');
- $objWriter->endElement();
-
- // v:textbox
- $objWriter->startElement('v:textbox');
- $objWriter->writeAttribute('style', 'mso-direction-alt:auto');
-
- // div
- $objWriter->startElement('div');
- $objWriter->writeAttribute('style', 'text-align:left');
- $objWriter->endElement();
-
- $objWriter->endElement();
-
- // x:ClientData
- $objWriter->startElement('x:ClientData');
- $objWriter->writeAttribute('ObjectType', 'Note');
-
- // x:MoveWithCells
- $objWriter->writeElement('x:MoveWithCells', '');
-
- // x:SizeWithCells
- $objWriter->writeElement('x:SizeWithCells', '');
-
- // x:Anchor
- //$objWriter->writeElement('x:Anchor', $column . ', 15, ' . ($row - 2) . ', 10, ' . ($column + 4) . ', 15, ' . ($row + 5) . ', 18');
-
- // x:AutoFill
- $objWriter->writeElement('x:AutoFill', 'False');
-
- // x:Row
- $objWriter->writeElement('x:Row', ($row - 1));
-
- // x:Column
- $objWriter->writeElement('x:Column', ($column - 1));
-
- $objWriter->endElement();
-
- $objWriter->endElement();
- }
-}
diff --git a/admin/survey/excel/PHPExcel/Writer/Excel2007/ContentTypes.php b/admin/survey/excel/PHPExcel/Writer/Excel2007/ContentTypes.php
deleted file mode 100644
index 86c6a3f..0000000
--- a/admin/survey/excel/PHPExcel/Writer/Excel2007/ContentTypes.php
+++ /dev/null
@@ -1,261 +0,0 @@
-<?php
-/**
- * PHPExcel
- *
- * Copyright (c) 2006 - 2012 PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel_Writer_Excel2007
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-
-/**
- * PHPExcel_Writer_Excel2007_ContentTypes
- *
- * @category PHPExcel
- * @package PHPExcel_Writer_Excel2007
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- */
-class PHPExcel_Writer_Excel2007_ContentTypes extends PHPExcel_Writer_Excel2007_WriterPart
-{
- /**
- * Write content types to XML format
- *
- * @param PHPExcel $pPHPExcel
- * @param boolean $includeCharts Flag indicating if we should include drawing details for charts
- * @return string XML Output
- * @throws Exception
- */
- public function writeContentTypes(PHPExcel $pPHPExcel = null, $includeCharts = FALSE)
- {
- // Create XML writer
- $objWriter = null;
- if ($this->getParentWriter()->getUseDiskCaching()) {
- $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_DISK, $this->getParentWriter()->getDiskCachingDirectory());
- } else {
- $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_MEMORY);
- }
-
- // XML header
- $objWriter->startDocument('1.0','UTF-8','yes');
-
- // Types
- $objWriter->startElement('Types');
- $objWriter->writeAttribute('xmlns', 'http://schemas.openxmlformats.org/package/2006/content-types');
-
- // Theme
- $this->_writeOverrideContentType(
- $objWriter, '/xl/theme/theme1.xml', 'application/vnd.openxmlformats-officedocument.theme+xml'
- );
-
- // Styles
- $this->_writeOverrideContentType(
- $objWriter, '/xl/styles.xml', 'application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml'
- );
-
- // Rels
- $this->_writeDefaultContentType(
- $objWriter, 'rels', 'application/vnd.openxmlformats-package.relationships+xml'
- );
-
- // XML
- $this->_writeDefaultContentType(
- $objWriter, 'xml', 'application/xml'
- );
-
- // VML
- $this->_writeDefaultContentType(
- $objWriter, 'vml', 'application/vnd.openxmlformats-officedocument.vmlDrawing'
- );
-
- // Workbook
- $this->_writeOverrideContentType(
- $objWriter, '/xl/workbook.xml', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml'
- );
-
- // DocProps
- $this->_writeOverrideContentType(
- $objWriter, '/docProps/app.xml', 'application/vnd.openxmlformats-officedocument.extended-properties+xml'
- );
-
- $this->_writeOverrideContentType(
- $objWriter, '/docProps/core.xml', 'application/vnd.openxmlformats-package.core-properties+xml'
- );
-
- $customPropertyList = $pPHPExcel->getProperties()->getCustomProperties();
- if (!empty($customPropertyList)) {
- $this->_writeOverrideContentType(
- $objWriter, '/docProps/custom.xml', 'application/vnd.openxmlformats-officedocument.custom-properties+xml'
- );
- }
-
- // Worksheets
- $sheetCount = $pPHPExcel->getSheetCount();
- for ($i = 0; $i < $sheetCount; ++$i) {
- $this->_writeOverrideContentType(
- $objWriter, '/xl/worksheets/sheet' . ($i + 1) . '.xml', 'application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml'
- );
- }
-
- // Shared strings
- $this->_writeOverrideContentType(
- $objWriter, '/xl/sharedStrings.xml', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sharedStrings+xml'
- );
-
- // Add worksheet relationship content types
- $chart = 1;
- for ($i = 0; $i < $sheetCount; ++$i) {
- $drawings = $pPHPExcel->getSheet($i)->getDrawingCollection();
- $drawingCount = count($drawings);
- $chartCount = ($includeCharts) ? $pPHPExcel->getSheet($i)->getChartCount() : 0;
-
- // We need a drawing relationship for the worksheet if we have either drawings or charts
- if (($drawingCount > 0) || ($chartCount > 0)) {
- $this->_writeOverrideContentType(
- $objWriter, '/xl/drawings/drawing' . ($i + 1) . '.xml', 'application/vnd.openxmlformats-officedocument.drawing+xml'
- );
- }
-
- // If we have charts, then we need a chart relationship for every individual chart
- if ($chartCount > 0) {
- for ($c = 0; $c < $chartCount; ++$c) {
- $this->_writeOverrideContentType(
- $objWriter, '/xl/charts/chart' . $chart++ . '.xml', 'application/vnd.openxmlformats-officedocument.drawingml.chart+xml'
- );
- }
- }
- }
-
- // Comments
- for ($i = 0; $i < $sheetCount; ++$i) {
- if (count($pPHPExcel->getSheet($i)->getComments()) > 0) {
- $this->_writeOverrideContentType(
- $objWriter, '/xl/comments' . ($i + 1) . '.xml', 'application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml'
- );
- }
- }
-
- // Add media content-types
- $aMediaContentTypes = array();
- $mediaCount = $this->getParentWriter()->getDrawingHashTable()->count();
- for ($i = 0; $i < $mediaCount; ++$i) {
- $extension = '';
- $mimeType = '';
-
- if ($this->getParentWriter()->getDrawingHashTable()->getByIndex($i) instanceof PHPExcel_Worksheet_Drawing) {
- $extension = strtolower($this->getParentWriter()->getDrawingHashTable()->getByIndex($i)->getExtension());
- $mimeType = $this->_getImageMimeType( $this->getParentWriter()->getDrawingHashTable()->getByIndex($i)->getPath() );
- } else if ($this->getParentWriter()->getDrawingHashTable()->getByIndex($i) instanceof PHPExcel_Worksheet_MemoryDrawing) {
- $extension = strtolower($this->getParentWriter()->getDrawingHashTable()->getByIndex($i)->getMimeType());
- $extension = explode('/', $extension);
- $extension = $extension[1];
-
- $mimeType = $this->getParentWriter()->getDrawingHashTable()->getByIndex($i)->getMimeType();
- }
-
- if (!isset( $aMediaContentTypes[$extension]) ) {
- $aMediaContentTypes[$extension] = $mimeType;
-
- $this->_writeDefaultContentType(
- $objWriter, $extension, $mimeType
- );
- }
- }
-
- $sheetCount = $pPHPExcel->getSheetCount();
- for ($i = 0; $i < $sheetCount; ++$i) {
- if (count($pPHPExcel->getSheet()->getHeaderFooter()->getImages()) > 0) {
- foreach ($pPHPExcel->getSheet()->getHeaderFooter()->getImages() as $image) {
- if (!isset( $aMediaContentTypes[strtolower($image->getExtension())]) ) {
- $aMediaContentTypes[strtolower($image->getExtension())] = $this->_getImageMimeType( $image->getPath() );
-
- $this->_writeDefaultContentType(
- $objWriter, strtolower($image->getExtension()), $aMediaContentTypes[strtolower($image->getExtension())]
- );
- }
- }
- }
- }
-
- $objWriter->endElement();
-
- // Return
- return $objWriter->getData();
- }
-
- /**
- * Get image mime type
- *
- * @param string $pFile Filename
- * @return string Mime Type
- * @throws Exception
- */
- private function _getImageMimeType($pFile = '')
- {
- if (PHPExcel_Shared_File::file_exists($pFile)) {
- $image = getimagesize($pFile);
- return image_type_to_mime_type($image[2]);
- } else {
- throw new Exception("File $pFile does not exist");
- }
- }
-
- /**
- * Write Default content type
- *
- * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer
- * @param string $pPartname Part name
- * @param string $pContentType Content type
- * @throws Exception
- */
- private function _writeDefaultContentType(PHPExcel_Shared_XMLWriter $objWriter = null, $pPartname = '', $pContentType = '')
- {
- if ($pPartname != '' && $pContentType != '') {
- // Write content type
- $objWriter->startElement('Default');
- $objWriter->writeAttribute('Extension', $pPartname);
- $objWriter->writeAttribute('ContentType', $pContentType);
- $objWriter->endElement();
- } else {
- throw new Exception("Invalid parameters passed.");
- }
- }
-
- /**
- * Write Override content type
- *
- * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer
- * @param string $pPartname Part name
- * @param string $pContentType Content type
- * @throws Exception
- */
- private function _writeOverrideContentType(PHPExcel_Shared_XMLWriter $objWriter = null, $pPartname = '', $pContentType = '')
- {
- if ($pPartname != '' && $pContentType != '') {
- // Write content type
- $objWriter->startElement('Override');
- $objWriter->writeAttribute('PartName', $pPartname);
- $objWriter->writeAttribute('ContentType', $pContentType);
- $objWriter->endElement();
- } else {
- throw new Exception("Invalid parameters passed.");
- }
- }
-}
diff --git a/admin/survey/excel/PHPExcel/Writer/Excel2007/DocProps.php b/admin/survey/excel/PHPExcel/Writer/Excel2007/DocProps.php
deleted file mode 100644
index 8b8b5fe..0000000
--- a/admin/survey/excel/PHPExcel/Writer/Excel2007/DocProps.php
+++ /dev/null
@@ -1,272 +0,0 @@
-<?php
-/**
- * PHPExcel
- *
- * Copyright (c) 2006 - 2012 PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel_Writer_Excel2007
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-
-/**
- * PHPExcel_Writer_Excel2007_DocProps
- *
- * @category PHPExcel
- * @package PHPExcel_Writer_Excel2007
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- */
-class PHPExcel_Writer_Excel2007_DocProps extends PHPExcel_Writer_Excel2007_WriterPart
-{
-/**
- * Write docProps/app.xml to XML format
- *
- * @param PHPExcel $pPHPExcel
- * @return string XML Output
- * @throws Exception
- */
- public function writeDocPropsApp(PHPExcel $pPHPExcel = null)
- {
- // Create XML writer
- $objWriter = null;
- if ($this->getParentWriter()->getUseDiskCaching()) {
- $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_DISK, $this->getParentWriter()->getDiskCachingDirectory());
- } else {
- $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_MEMORY);
- }
-
- // XML header
- $objWriter->startDocument('1.0','UTF-8','yes');
-
- // Properties
- $objWriter->startElement('Properties');
- $objWriter->writeAttribute('xmlns', 'http://schemas.openxmlformats.org/officeDocument/2006/extended-properties');
- $objWriter->writeAttribute('xmlns:vt', 'http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes');
-
- // Application
- $objWriter->writeElement('Application', 'Microsoft Excel');
-
- // DocSecurity
- $objWriter->writeElement('DocSecurity', '0');
-
- // ScaleCrop
- $objWriter->writeElement('ScaleCrop', 'false');
-
- // HeadingPairs
- $objWriter->startElement('HeadingPairs');
-
- // Vector
- $objWriter->startElement('vt:vector');
- $objWriter->writeAttribute('size', '2');
- $objWriter->writeAttribute('baseType', 'variant');
-
- // Variant
- $objWriter->startElement('vt:variant');
- $objWriter->writeElement('vt:lpstr', 'Worksheets');
- $objWriter->endElement();
-
- // Variant
- $objWriter->startElement('vt:variant');
- $objWriter->writeElement('vt:i4', $pPHPExcel->getSheetCount());
- $objWriter->endElement();
-
- $objWriter->endElement();
-
- $objWriter->endElement();
-
- // TitlesOfParts
- $objWriter->startElement('TitlesOfParts');
-
- // Vector
- $objWriter->startElement('vt:vector');
- $objWriter->writeAttribute('size', $pPHPExcel->getSheetCount());
- $objWriter->writeAttribute('baseType', 'lpstr');
-
- $sheetCount = $pPHPExcel->getSheetCount();
- for ($i = 0; $i < $sheetCount; ++$i) {
- $objWriter->writeElement('vt:lpstr', $pPHPExcel->getSheet($i)->getTitle());
- }
-
- $objWriter->endElement();
-
- $objWriter->endElement();
-
- // Company
- $objWriter->writeElement('Company', $pPHPExcel->getProperties()->getCompany());
-
- // Company
- $objWriter->writeElement('Manager', $pPHPExcel->getProperties()->getManager());
-
- // LinksUpToDate
- $objWriter->writeElement('LinksUpToDate', 'false');
-
- // SharedDoc
- $objWriter->writeElement('SharedDoc', 'false');
-
- // HyperlinksChanged
- $objWriter->writeElement('HyperlinksChanged', 'false');
-
- // AppVersion
- $objWriter->writeElement('AppVersion', '12.0000');
-
- $objWriter->endElement();
-
- // Return
- return $objWriter->getData();
- }
-
- /**
- * Write docProps/core.xml to XML format
- *
- * @param PHPExcel $pPHPExcel
- * @return string XML Output
- * @throws Exception
- */
- public function writeDocPropsCore(PHPExcel $pPHPExcel = null)
- {
- // Create XML writer
- $objWriter = null;
- if ($this->getParentWriter()->getUseDiskCaching()) {
- $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_DISK, $this->getParentWriter()->getDiskCachingDirectory());
- } else {
- $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_MEMORY);
- }
-
- // XML header
- $objWriter->startDocument('1.0','UTF-8','yes');
-
- // cp:coreProperties
- $objWriter->startElement('cp:coreProperties');
- $objWriter->writeAttribute('xmlns:cp', 'http://schemas.openxmlformats.org/package/2006/metadata/core-properties');
- $objWriter->writeAttribute('xmlns:dc', 'http://purl.org/dc/elements/1.1/');
- $objWriter->writeAttribute('xmlns:dcterms', 'http://purl.org/dc/terms/');
- $objWriter->writeAttribute('xmlns:dcmitype', 'http://purl.org/dc/dcmitype/');
- $objWriter->writeAttribute('xmlns:xsi', 'http://www.w3.org/2001/XMLSchema-instance');
-
- // dc:creator
- $objWriter->writeElement('dc:creator', $pPHPExcel->getProperties()->getCreator());
-
- // cp:lastModifiedBy
- $objWriter->writeElement('cp:lastModifiedBy', $pPHPExcel->getProperties()->getLastModifiedBy());
-
- // dcterms:created
- $objWriter->startElement('dcterms:created');
- $objWriter->writeAttribute('xsi:type', 'dcterms:W3CDTF');
- $objWriter->writeRawData(date(DATE_W3C, $pPHPExcel->getProperties()->getCreated()));
- $objWriter->endElement();
-
- // dcterms:modified
- $objWriter->startElement('dcterms:modified');
- $objWriter->writeAttribute('xsi:type', 'dcterms:W3CDTF');
- $objWriter->writeRawData(date(DATE_W3C, $pPHPExcel->getProperties()->getModified()));
- $objWriter->endElement();
-
- // dc:title
- $objWriter->writeElement('dc:title', $pPHPExcel->getProperties()->getTitle());
-
- // dc:description
- $objWriter->writeElement('dc:description', $pPHPExcel->getProperties()->getDescription());
-
- // dc:subject
- $objWriter->writeElement('dc:subject', $pPHPExcel->getProperties()->getSubject());
-
- // cp:keywords
- $objWriter->writeElement('cp:keywords', $pPHPExcel->getProperties()->getKeywords());
-
- // cp:category
- $objWriter->writeElement('cp:category', $pPHPExcel->getProperties()->getCategory());
-
- $objWriter->endElement();
-
- // Return
- return $objWriter->getData();
- }
-
- /**
- * Write docProps/custom.xml to XML format
- *
- * @param PHPExcel $pPHPExcel
- * @return string XML Output
- * @throws Exception
- */
- public function writeDocPropsCustom(PHPExcel $pPHPExcel = null)
- {
- $customPropertyList = $pPHPExcel->getProperties()->getCustomProperties();
- if (empty($customPropertyList)) {
- return;
- }
-
- // Create XML writer
- $objWriter = null;
- if ($this->getParentWriter()->getUseDiskCaching()) {
- $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_DISK, $this->getParentWriter()->getDiskCachingDirectory());
- } else {
- $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_MEMORY);
- }
-
- // XML header
- $objWriter->startDocument('1.0','UTF-8','yes');
-
- // cp:coreProperties
- $objWriter->startElement('Properties');
- $objWriter->writeAttribute('xmlns', 'http://schemas.openxmlformats.org/officeDocument/2006/custom-properties');
- $objWriter->writeAttribute('xmlns:vt', 'http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes');
-
-
- foreach($customPropertyList as $key => $customProperty) {
- $propertyValue = $pPHPExcel->getProperties()->getCustomPropertyValue($customProperty);
- $propertyType = $pPHPExcel->getProperties()->getCustomPropertyType($customProperty);
-
- $objWriter->startElement('property');
- $objWriter->writeAttribute('fmtid', '{D5CDD505-2E9C-101B-9397-08002B2CF9AE}');
- $objWriter->writeAttribute('pid', $key+2);
- $objWriter->writeAttribute('name', $customProperty);
-
- switch($propertyType) {
- case 'i' :
- $objWriter->writeElement('vt:i4', $propertyValue);
- break;
- case 'f' :
- $objWriter->writeElement('vt:r8', $propertyValue);
- break;
- case 'b' :
- $objWriter->writeElement('vt:bool', ($propertyValue) ? 'true' : 'false');
- break;
- case 'd' :
- $objWriter->startElement('vt:filetime');
- $objWriter->writeRawData(date(DATE_W3C, $propertyValue));
- $objWriter->endElement();
- break;
- default :
- $objWriter->writeElement('vt:lpwstr', $propertyValue);
- break;
- }
-
- $objWriter->endElement();
- }
-
-
- $objWriter->endElement();
-
- // Return
- return $objWriter->getData();
- }
-
-}
diff --git a/admin/survey/excel/PHPExcel/Writer/Excel2007/Drawing.php b/admin/survey/excel/PHPExcel/Writer/Excel2007/Drawing.php
deleted file mode 100644
index 60987f4..0000000
--- a/admin/survey/excel/PHPExcel/Writer/Excel2007/Drawing.php
+++ /dev/null
@@ -1,598 +0,0 @@
-<?php
-/**
- * PHPExcel
- *
- * Copyright (c) 2006 - 2012 PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel_Writer_Excel2007
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-
-/**
- * PHPExcel_Writer_Excel2007_Drawing
- *
- * @category PHPExcel
- * @package PHPExcel_Writer_Excel2007
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- */
-class PHPExcel_Writer_Excel2007_Drawing extends PHPExcel_Writer_Excel2007_WriterPart
-{
- /**
- * Write drawings to XML format
- *
- * @param PHPExcel_Worksheet $pWorksheet
- * @param int &$chartRef Chart ID
- * @param boolean $includeCharts Flag indicating if we should include drawing details for charts
- * @return string XML Output
- * @throws Exception
- */
- public function writeDrawings(PHPExcel_Worksheet $pWorksheet = null, &$chartRef, $includeCharts = FALSE)
- {
- // Create XML writer
- $objWriter = null;
- if ($this->getParentWriter()->getUseDiskCaching()) {
- $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_DISK, $this->getParentWriter()->getDiskCachingDirectory());
- } else {
- $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_MEMORY);
- }
-
- // XML header
- $objWriter->startDocument('1.0','UTF-8','yes');
-
- // xdr:wsDr
- $objWriter->startElement('xdr:wsDr');
- $objWriter->writeAttribute('xmlns:xdr', 'http://schemas.openxmlformats.org/drawingml/2006/spreadsheetDrawing');
- $objWriter->writeAttribute('xmlns:a', 'http://schemas.openxmlformats.org/drawingml/2006/main');
-
- // Loop through images and write drawings
- $i = 1;
- $iterator = $pWorksheet->getDrawingCollection()->getIterator();
- while ($iterator->valid()) {
- $this->_writeDrawing($objWriter, $iterator->current(), $i);
-
- $iterator->next();
- ++$i;
- }
-
- if ($includeCharts) {
- $chartCount = $pWorksheet->getChartCount();
- // Loop through charts and write the chart position
- if ($chartCount > 0) {
- for ($c = 0; $c < $chartCount; ++$c) {
- $this->_writeChart($objWriter, $pWorksheet->getChartByIndex($c), $c+$i);
- }
- }
- }
-
-
- $objWriter->endElement();
-
- // Return
- return $objWriter->getData();
- }
-
- /**
- * Write drawings to XML format
- *
- * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer
- * @param PHPExcel_Chart $pChart
- * @param int $pRelationId
- * @throws Exception
- */
- public function _writeChart(PHPExcel_Shared_XMLWriter $objWriter = null, PHPExcel_Chart $pChart = null, $pRelationId = -1)
- {
- $tl = $pChart->getTopLeftPosition();
- $tl['colRow'] = PHPExcel_Cell::coordinateFromString($tl['cell']);
- $br = $pChart->getBottomRightPosition();
- $br['colRow'] = PHPExcel_Cell::coordinateFromString($br['cell']);
-
- $objWriter->startElement('xdr:twoCellAnchor');
-
- $objWriter->startElement('xdr:from');
- $objWriter->writeElement('xdr:col', PHPExcel_Cell::columnIndexFromString($tl['colRow'][0]) - 1);
- $objWriter->writeElement('xdr:colOff', PHPExcel_Shared_Drawing::pixelsToEMU($tl['xOffset']));
- $objWriter->writeElement('xdr:row', $tl['colRow'][1] - 1);
- $objWriter->writeElement('xdr:rowOff', PHPExcel_Shared_Drawing::pixelsToEMU($tl['yOffset']));
- $objWriter->endElement();
- $objWriter->startElement('xdr:to');
- $objWriter->writeElement('xdr:col', PHPExcel_Cell::columnIndexFromString($br['colRow'][0]) - 1);
- $objWriter->writeElement('xdr:colOff', PHPExcel_Shared_Drawing::pixelsToEMU($br['xOffset']));
- $objWriter->writeElement('xdr:row', $br['colRow'][1] - 1);
- $objWriter->writeElement('xdr:rowOff', PHPExcel_Shared_Drawing::pixelsToEMU($br['yOffset']));
- $objWriter->endElement();
-
- $objWriter->startElement('xdr:graphicFrame');
- $objWriter->writeAttribute('macro', '');
- $objWriter->startElement('xdr:nvGraphicFramePr');
- $objWriter->startElement('xdr:cNvPr');
- $objWriter->writeAttribute('name', 'Chart '.$pRelationId);
- $objWriter->writeAttribute('id', 1025 * $pRelationId);
- $objWriter->endElement();
- $objWriter->startElement('xdr:cNvGraphicFramePr');
- $objWriter->startElement('a:graphicFrameLocks');
- $objWriter->endElement();
- $objWriter->endElement();
- $objWriter->endElement();
-
- $objWriter->startElement('xdr:xfrm');
- $objWriter->startElement('a:off');
- $objWriter->writeAttribute('x', '0');
- $objWriter->writeAttribute('y', '0');
- $objWriter->endElement();
- $objWriter->startElement('a:ext');
- $objWriter->writeAttribute('cx', '0');
- $objWriter->writeAttribute('cy', '0');
- $objWriter->endElement();
- $objWriter->endElement();
-
- $objWriter->startElement('a:graphic');
- $objWriter->startElement('a:graphicData');
- $objWriter->writeAttribute('uri', 'http://schemas.openxmlformats.org/drawingml/2006/chart');
- $objWriter->startElement('c:chart');
- $objWriter->writeAttribute('xmlns:c', 'http://schemas.openxmlformats.org/drawingml/2006/chart');
- $objWriter->writeAttribute('xmlns:r', 'http://schemas.openxmlformats.org/officeDocument/2006/relationships');
- $objWriter->writeAttribute('r:id', 'rId'.$pRelationId);
- $objWriter->endElement();
- $objWriter->endElement();
- $objWriter->endElement();
- $objWriter->endElement();
-
- $objWriter->startElement('xdr:clientData');
- $objWriter->endElement();
-
- $objWriter->endElement();
- }
-
- /**
- * Write drawings to XML format
- *
- * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer
- * @param PHPExcel_Worksheet_BaseDrawing $pDrawing
- * @param int $pRelationId
- * @throws Exception
- */
- public function _writeDrawing(PHPExcel_Shared_XMLWriter $objWriter = null, PHPExcel_Worksheet_BaseDrawing $pDrawing = null, $pRelationId = -1)
- {
- if ($pRelationId >= 0) {
- // xdr:oneCellAnchor
- $objWriter->startElement('xdr:oneCellAnchor');
- // Image location
- $aCoordinates = PHPExcel_Cell::coordinateFromString($pDrawing->getCoordinates());
- $aCoordinates[0] = PHPExcel_Cell::columnIndexFromString($aCoordinates[0]);
-
- // xdr:from
- $objWriter->startElement('xdr:from');
- $objWriter->writeElement('xdr:col', $aCoordinates[0] - 1);
- $objWriter->writeElement('xdr:colOff', PHPExcel_Shared_Drawing::pixelsToEMU($pDrawing->getOffsetX()));
- $objWriter->writeElement('xdr:row', $aCoordinates[1] - 1);
- $objWriter->writeElement('xdr:rowOff', PHPExcel_Shared_Drawing::pixelsToEMU($pDrawing->getOffsetY()));
- $objWriter->endElement();
-
- // xdr:ext
- $objWriter->startElement('xdr:ext');
- $objWriter->writeAttribute('cx', PHPExcel_Shared_Drawing::pixelsToEMU($pDrawing->getWidth()));
- $objWriter->writeAttribute('cy', PHPExcel_Shared_Drawing::pixelsToEMU($pDrawing->getHeight()));
- $objWriter->endElement();
-
- // xdr:pic
- $objWriter->startElement('xdr:pic');
-
- // xdr:nvPicPr
- $objWriter->startElement('xdr:nvPicPr');
-
- // xdr:cNvPr
- $objWriter->startElement('xdr:cNvPr');
- $objWriter->writeAttribute('id', $pRelationId);
- $objWriter->writeAttribute('name', $pDrawing->getName());
- $objWriter->writeAttribute('descr', $pDrawing->getDescription());
- $objWriter->endElement();
-
- // xdr:cNvPicPr
- $objWriter->startElement('xdr:cNvPicPr');
-
- // a:picLocks
- $objWriter->startElement('a:picLocks');
- $objWriter->writeAttribute('noChangeAspect', '1');
- $objWriter->endElement();
-
- $objWriter->endElement();
-
- $objWriter->endElement();
-
- // xdr:blipFill
- $objWriter->startElement('xdr:blipFill');
-
- // a:blip
- $objWriter->startElement('a:blip');
- $objWriter->writeAttribute('xmlns:r', 'http://schemas.openxmlformats.org/officeDocument/2006/relationships');
- $objWriter->writeAttribute('r:embed', 'rId' . $pRelationId);
- $objWriter->endElement();
-
- // a:stretch
- $objWriter->startElement('a:stretch');
- $objWriter->writeElement('a:fillRect', null);
- $objWriter->endElement();
-
- $objWriter->endElement();
-
- // xdr:spPr
- $objWriter->startElement('xdr:spPr');
-
- // a:xfrm
- $objWriter->startElement('a:xfrm');
- $objWriter->writeAttribute('rot', PHPExcel_Shared_Drawing::degreesToAngle($pDrawing->getRotation()));
- $objWriter->endElement();
-
- // a:prstGeom
- $objWriter->startElement('a:prstGeom');
- $objWriter->writeAttribute('prst', 'rect');
-
- // a:avLst
- $objWriter->writeElement('a:avLst', null);
-
- $objWriter->endElement();
-
-// // a:solidFill
-// $objWriter->startElement('a:solidFill');
-
-// // a:srgbClr
-// $objWriter->startElement('a:srgbClr');
-// $objWriter->writeAttribute('val', 'FFFFFF');
-
-///* SHADE
-// // a:shade
-// $objWriter->startElement('a:shade');
-// $objWriter->writeAttribute('val', '85000');
-// $objWriter->endElement();
-//*/
-
-// $objWriter->endElement();
-
-// $objWriter->endElement();
-/*
- // a:ln
- $objWriter->startElement('a:ln');
- $objWriter->writeAttribute('w', '88900');
- $objWriter->writeAttribute('cap', 'sq');
-
- // a:solidFill
- $objWriter->startElement('a:solidFill');
-
- // a:srgbClr
- $objWriter->startElement('a:srgbClr');
- $objWriter->writeAttribute('val', 'FFFFFF');
- $objWriter->endElement();
-
- $objWriter->endElement();
-
- // a:miter
- $objWriter->startElement('a:miter');
- $objWriter->writeAttribute('lim', '800000');
- $objWriter->endElement();
-
- $objWriter->endElement();
-*/
-
- if ($pDrawing->getShadow()->getVisible()) {
- // a:effectLst
- $objWriter->startElement('a:effectLst');
-
- // a:outerShdw
- $objWriter->startElement('a:outerShdw');
- $objWriter->writeAttribute('blurRad', PHPExcel_Shared_Drawing::pixelsToEMU($pDrawing->getShadow()->getBlurRadius()));
- $objWriter->writeAttribute('dist', PHPExcel_Shared_Drawing::pixelsToEMU($pDrawing->getShadow()->getDistance()));
- $objWriter->writeAttribute('dir', PHPExcel_Shared_Drawing::degreesToAngle($pDrawing->getShadow()->getDirection()));
- $objWriter->writeAttribute('algn', $pDrawing->getShadow()->getAlignment());
- $objWriter->writeAttribute('rotWithShape', '0');
-
- // a:srgbClr
- $objWriter->startElement('a:srgbClr');
- $objWriter->writeAttribute('val', $pDrawing->getShadow()->getColor()->getRGB());
-
- // a:alpha
- $objWriter->startElement('a:alpha');
- $objWriter->writeAttribute('val', $pDrawing->getShadow()->getAlpha() * 1000);
- $objWriter->endElement();
-
- $objWriter->endElement();
-
- $objWriter->endElement();
-
- $objWriter->endElement();
- }
-/*
-
- // a:scene3d
- $objWriter->startElement('a:scene3d');
-
- // a:camera
- $objWriter->startElement('a:camera');
- $objWriter->writeAttribute('prst', 'orthographicFront');
- $objWriter->endElement();
-
- // a:lightRig
- $objWriter->startElement('a:lightRig');
- $objWriter->writeAttribute('rig', 'twoPt');
- $objWriter->writeAttribute('dir', 't');
-
- // a:rot
- $objWriter->startElement('a:rot');
- $objWriter->writeAttribute('lat', '0');
- $objWriter->writeAttribute('lon', '0');
- $objWriter->writeAttribute('rev', '0');
- $objWriter->endElement();
-
- $objWriter->endElement();
-
- $objWriter->endElement();
-*/
-/*
- // a:sp3d
- $objWriter->startElement('a:sp3d');
-
- // a:bevelT
- $objWriter->startElement('a:bevelT');
- $objWriter->writeAttribute('w', '25400');
- $objWriter->writeAttribute('h', '19050');
- $objWriter->endElement();
-
- // a:contourClr
- $objWriter->startElement('a:contourClr');
-
- // a:srgbClr
- $objWriter->startElement('a:srgbClr');
- $objWriter->writeAttribute('val', 'FFFFFF');
- $objWriter->endElement();
-
- $objWriter->endElement();
-
- $objWriter->endElement();
-*/
- $objWriter->endElement();
-
- $objWriter->endElement();
-
- // xdr:clientData
- $objWriter->writeElement('xdr:clientData', null);
-
- $objWriter->endElement();
- } else {
- throw new Exception("Invalid parameters passed.");
- }
- }
-
- /**
- * Write VML header/footer images to XML format
- *
- * @param PHPExcel_Worksheet $pWorksheet
- * @return string XML Output
- * @throws Exception
- */
- public function writeVMLHeaderFooterImages(PHPExcel_Worksheet $pWorksheet = null)
- {
- // Create XML writer
- $objWriter = null;
- if ($this->getParentWriter()->getUseDiskCaching()) {
- $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_DISK, $this->getParentWriter()->getDiskCachingDirectory());
- } else {
- $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_MEMORY);
- }
-
- // XML header
- $objWriter->startDocument('1.0','UTF-8','yes');
-
- // Header/footer images
- $images = $pWorksheet->getHeaderFooter()->getImages();
-
- // xml
- $objWriter->startElement('xml');
- $objWriter->writeAttribute('xmlns:v', 'urn:schemas-microsoft-com:vml');
- $objWriter->writeAttribute('xmlns:o', 'urn:schemas-microsoft-com:office:office');
- $objWriter->writeAttribute('xmlns:x', 'urn:schemas-microsoft-com:office:excel');
-
- // o:shapelayout
- $objWriter->startElement('o:shapelayout');
- $objWriter->writeAttribute('v:ext', 'edit');
-
- // o:idmap
- $objWriter->startElement('o:idmap');
- $objWriter->writeAttribute('v:ext', 'edit');
- $objWriter->writeAttribute('data', '1');
- $objWriter->endElement();
-
- $objWriter->endElement();
-
- // v:shapetype
- $objWriter->startElement('v:shapetype');
- $objWriter->writeAttribute('id', '_x0000_t75');
- $objWriter->writeAttribute('coordsize', '21600,21600');
- $objWriter->writeAttribute('o:spt', '75');
- $objWriter->writeAttribute('o:preferrelative', 't');
- $objWriter->writeAttribute('path', 'm@4@5l@4@11@9@11@9@5xe');
- $objWriter->writeAttribute('filled', 'f');
- $objWriter->writeAttribute('stroked', 'f');
-
- // v:stroke
- $objWriter->startElement('v:stroke');
- $objWriter->writeAttribute('joinstyle', 'miter');
- $objWriter->endElement();
-
- // v:formulas
- $objWriter->startElement('v:formulas');
-
- // v:f
- $objWriter->startElement('v:f');
- $objWriter->writeAttribute('eqn', 'if lineDrawn pixelLineWidth 0');
- $objWriter->endElement();
-
- // v:f
- $objWriter->startElement('v:f');
- $objWriter->writeAttribute('eqn', 'sum @0 1 0');
- $objWriter->endElement();
-
- // v:f
- $objWriter->startElement('v:f');
- $objWriter->writeAttribute('eqn', 'sum 0 0 @1');
- $objWriter->endElement();
-
- // v:f
- $objWriter->startElement('v:f');
- $objWriter->writeAttribute('eqn', 'prod @2 1 2');
- $objWriter->endElement();
-
- // v:f
- $objWriter->startElement('v:f');
- $objWriter->writeAttribute('eqn', 'prod @3 21600 pixelWidth');
- $objWriter->endElement();
-
- // v:f
- $objWriter->startElement('v:f');
- $objWriter->writeAttribute('eqn', 'prod @3 21600 pixelHeight');
- $objWriter->endElement();
-
- // v:f
- $objWriter->startElement('v:f');
- $objWriter->writeAttribute('eqn', 'sum @0 0 1');
- $objWriter->endElement();
-
- // v:f
- $objWriter->startElement('v:f');
- $objWriter->writeAttribute('eqn', 'prod @6 1 2');
- $objWriter->endElement();
-
- // v:f
- $objWriter->startElement('v:f');
- $objWriter->writeAttribute('eqn', 'prod @7 21600 pixelWidth');
- $objWriter->endElement();
-
- // v:f
- $objWriter->startElement('v:f');
- $objWriter->writeAttribute('eqn', 'sum @8 21600 0');
- $objWriter->endElement();
-
- // v:f
- $objWriter->startElement('v:f');
- $objWriter->writeAttribute('eqn', 'prod @7 21600 pixelHeight');
- $objWriter->endElement();
-
- // v:f
- $objWriter->startElement('v:f');
- $objWriter->writeAttribute('eqn', 'sum @10 21600 0');
- $objWriter->endElement();
-
- $objWriter->endElement();
-
- // v:path
- $objWriter->startElement('v:path');
- $objWriter->writeAttribute('o:extrusionok', 'f');
- $objWriter->writeAttribute('gradientshapeok', 't');
- $objWriter->writeAttribute('o:connecttype', 'rect');
- $objWriter->endElement();
-
- // o:lock
- $objWriter->startElement('o:lock');
- $objWriter->writeAttribute('v:ext', 'edit');
- $objWriter->writeAttribute('aspectratio', 't');
- $objWriter->endElement();
-
- $objWriter->endElement();
-
- // Loop through images
- foreach ($images as $key => $value) {
- $this->_writeVMLHeaderFooterImage($objWriter, $key, $value);
- }
-
- $objWriter->endElement();
-
- // Return
- return $objWriter->getData();
- }
-
- /**
- * Write VML comment to XML format
- *
- * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer
- * @param string $pReference Reference
- * @param PHPExcel_Worksheet_HeaderFooterDrawing $pImage Image
- * @throws Exception
- */
- public function _writeVMLHeaderFooterImage(PHPExcel_Shared_XMLWriter $objWriter = null, $pReference = '', PHPExcel_Worksheet_HeaderFooterDrawing $pImage = null)
- {
- // Calculate object id
- preg_match('{(\d+)}', md5($pReference), $m);
- $id = 1500 + (substr($m[1], 0, 2) * 1);
-
- // Calculate offset
- $width = $pImage->getWidth();
- $height = $pImage->getHeight();
- $marginLeft = $pImage->getOffsetX();
- $marginTop = $pImage->getOffsetY();
-
- // v:shape
- $objWriter->startElement('v:shape');
- $objWriter->writeAttribute('id', $pReference);
- $objWriter->writeAttribute('o:spid', '_x0000_s' . $id);
- $objWriter->writeAttribute('type', '#_x0000_t75');
- $objWriter->writeAttribute('style', "position:absolute;margin-left:{$marginLeft}px;margin-top:{$marginTop}px;width:{$width}px;height:{$height}px;z-index:1");
-
- // v:imagedata
- $objWriter->startElement('v:imagedata');
- $objWriter->writeAttribute('o:relid', 'rId' . $pReference);
- $objWriter->writeAttribute('o:title', $pImage->getName());
- $objWriter->endElement();
-
- // o:lock
- $objWriter->startElement('o:lock');
- $objWriter->writeAttribute('v:ext', 'edit');
- $objWriter->writeAttribute('rotation', 't');
- $objWriter->endElement();
-
- $objWriter->endElement();
- }
-
-
- /**
- * Get an array of all drawings
- *
- * @param PHPExcel $pPHPExcel
- * @return PHPExcel_Worksheet_Drawing[] All drawings in PHPExcel
- * @throws Exception
- */
- public function allDrawings(PHPExcel $pPHPExcel = null)
- {
- // Get an array of all drawings
- $aDrawings = array();
-
- // Loop through PHPExcel
- $sheetCount = $pPHPExcel->getSheetCount();
- for ($i = 0; $i < $sheetCount; ++$i) {
- // Loop through images and add to array
- $iterator = $pPHPExcel->getSheet($i)->getDrawingCollection()->getIterator();
- while ($iterator->valid()) {
- $aDrawings[] = $iterator->current();
-
- $iterator->next();
- }
- }
-
- return $aDrawings;
- }
-}
diff --git a/admin/survey/excel/PHPExcel/Writer/Excel2007/Rels.php b/admin/survey/excel/PHPExcel/Writer/Excel2007/Rels.php
deleted file mode 100644
index 6e2291d..0000000
--- a/admin/survey/excel/PHPExcel/Writer/Excel2007/Rels.php
+++ /dev/null
@@ -1,417 +0,0 @@
-<?php
-/**
- * PHPExcel
- *
- * Copyright (c) 2006 - 2012 PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel_Writer_Excel2007
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-
-/**
- * PHPExcel_Writer_Excel2007_Rels
- *
- * @category PHPExcel
- * @package PHPExcel_Writer_Excel2007
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- */
-class PHPExcel_Writer_Excel2007_Rels extends PHPExcel_Writer_Excel2007_WriterPart
-{
- /**
- * Write relationships to XML format
- *
- * @param PHPExcel $pPHPExcel
- * @return string XML Output
- * @throws Exception
- */
- public function writeRelationships(PHPExcel $pPHPExcel = null)
- {
- // Create XML writer
- $objWriter = null;
- if ($this->getParentWriter()->getUseDiskCaching()) {
- $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_DISK, $this->getParentWriter()->getDiskCachingDirectory());
- } else {
- $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_MEMORY);
- }
-
- // XML header
- $objWriter->startDocument('1.0','UTF-8','yes');
-
- // Relationships
- $objWriter->startElement('Relationships');
- $objWriter->writeAttribute('xmlns', 'http://schemas.openxmlformats.org/package/2006/relationships');
-
- $customPropertyList = $pPHPExcel->getProperties()->getCustomProperties();
- if (!empty($customPropertyList)) {
- // Relationship docProps/app.xml
- $this->_writeRelationship(
- $objWriter,
- 4,
- 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/custom-properties',
- 'docProps/custom.xml'
- );
-
- }
-
- // Relationship docProps/app.xml
- $this->_writeRelationship(
- $objWriter,
- 3,
- 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/extended-properties',
- 'docProps/app.xml'
- );
-
- // Relationship docProps/core.xml
- $this->_writeRelationship(
- $objWriter,
- 2,
- 'http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties',
- 'docProps/core.xml'
- );
-
- // Relationship xl/workbook.xml
- $this->_writeRelationship(
- $objWriter,
- 1,
- 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument',
- 'xl/workbook.xml'
- );
-
- $objWriter->endElement();
-
- // Return
- return $objWriter->getData();
- }
-
- /**
- * Write workbook relationships to XML format
- *
- * @param PHPExcel $pPHPExcel
- * @return string XML Output
- * @throws Exception
- */
- public function writeWorkbookRelationships(PHPExcel $pPHPExcel = null)
- {
- // Create XML writer
- $objWriter = null;
- if ($this->getParentWriter()->getUseDiskCaching()) {
- $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_DISK, $this->getParentWriter()->getDiskCachingDirectory());
- } else {
- $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_MEMORY);
- }
-
- // XML header
- $objWriter->startDocument('1.0','UTF-8','yes');
-
- // Relationships
- $objWriter->startElement('Relationships');
- $objWriter->writeAttribute('xmlns', 'http://schemas.openxmlformats.org/package/2006/relationships');
-
- // Relationship styles.xml
- $this->_writeRelationship(
- $objWriter,
- 1,
- 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles',
- 'styles.xml'
- );
-
- // Relationship theme/theme1.xml
- $this->_writeRelationship(
- $objWriter,
- 2,
- 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme',
- 'theme/theme1.xml'
- );
-
- // Relationship sharedStrings.xml
- $this->_writeRelationship(
- $objWriter,
- 3,
- 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/sharedStrings',
- 'sharedStrings.xml'
- );
-
- // Relationships with sheets
- $sheetCount = $pPHPExcel->getSheetCount();
- for ($i = 0; $i < $sheetCount; ++$i) {
- $this->_writeRelationship(
- $objWriter,
- ($i + 1 + 3),
- 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet',
- 'worksheets/sheet' . ($i + 1) . '.xml'
- );
- }
-
- $objWriter->endElement();
-
- // Return
- return $objWriter->getData();
- }
-
- /**
- * Write worksheet relationships to XML format
- *
- * Numbering is as follows:
- * rId1 - Drawings
- * rId_hyperlink_x - Hyperlinks
- *
- * @param PHPExcel_Worksheet $pWorksheet
- * @param int $pWorksheetId
- * @param boolean $includeCharts Flag indicating if we should write charts
- * @return string XML Output
- * @throws Exception
- */
- public function writeWorksheetRelationships(PHPExcel_Worksheet $pWorksheet = null, $pWorksheetId = 1, $includeCharts = FALSE)
- {
- // Create XML writer
- $objWriter = null;
- if ($this->getParentWriter()->getUseDiskCaching()) {
- $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_DISK, $this->getParentWriter()->getDiskCachingDirectory());
- } else {
- $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_MEMORY);
- }
-
- // XML header
- $objWriter->startDocument('1.0','UTF-8','yes');
-
- // Relationships
- $objWriter->startElement('Relationships');
- $objWriter->writeAttribute('xmlns', 'http://schemas.openxmlformats.org/package/2006/relationships');
-
- // Write drawing relationships?
- $d = 0;
- if ($includeCharts) {
- $charts = $pWorksheet->getChartCollection();
- } else {
- $charts = array();
- }
- if (($pWorksheet->getDrawingCollection()->count() > 0) ||
- (count($charts) > 0)) {
- $this->_writeRelationship(
- $objWriter,
- ++$d,
- 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/drawing',
- '../drawings/drawing' . $pWorksheetId . '.xml'
- );
- }
-
- // Write chart relationships?
-// $chartCount = 0;
-// $charts = $pWorksheet->getChartCollection();
-// echo 'Chart Rels: ' , count($charts) , '<br />';
-// if (count($charts) > 0) {
-// foreach($charts as $chart) {
-// $this->_writeRelationship(
-// $objWriter,
-// ++$d,
-// 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/chart',
-// '../charts/chart' . ++$chartCount . '.xml'
-// );
-// }
-// }
-//
- // Write hyperlink relationships?
- $i = 1;
- foreach ($pWorksheet->getHyperlinkCollection() as $hyperlink) {
- if (!$hyperlink->isInternal()) {
- $this->_writeRelationship(
- $objWriter,
- '_hyperlink_' . $i,
- 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink',
- $hyperlink->getUrl(),
- 'External'
- );
-
- ++$i;
- }
- }
-
- // Write comments relationship?
- $i = 1;
- if (count($pWorksheet->getComments()) > 0) {
- $this->_writeRelationship(
- $objWriter,
- '_comments_vml' . $i,
- 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/vmlDrawing',
- '../drawings/vmlDrawing' . $pWorksheetId . '.vml'
- );
-
- $this->_writeRelationship(
- $objWriter,
- '_comments' . $i,
- 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/comments',
- '../comments' . $pWorksheetId . '.xml'
- );
- }
-
- // Write header/footer relationship?
- $i = 1;
- if (count($pWorksheet->getHeaderFooter()->getImages()) > 0) {
- $this->_writeRelationship(
- $objWriter,
- '_headerfooter_vml' . $i,
- 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/vmlDrawing',
- '../drawings/vmlDrawingHF' . $pWorksheetId . '.vml'
- );
- }
-
- $objWriter->endElement();
-
- // Return
- return $objWriter->getData();
- }
-
- /**
- * Write drawing relationships to XML format
- *
- * @param PHPExcel_Worksheet $pWorksheet
- * @param int &$chartRef Chart ID
- * @param boolean $includeCharts Flag indicating if we should write charts
- * @return string XML Output
- * @throws Exception
- */
- public function writeDrawingRelationships(PHPExcel_Worksheet $pWorksheet = null, &$chartRef, $includeCharts = FALSE)
- {
- // Create XML writer
- $objWriter = null;
- if ($this->getParentWriter()->getUseDiskCaching()) {
- $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_DISK, $this->getParentWriter()->getDiskCachingDirectory());
- } else {
- $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_MEMORY);
- }
-
- // XML header
- $objWriter->startDocument('1.0','UTF-8','yes');
-
- // Relationships
- $objWriter->startElement('Relationships');
- $objWriter->writeAttribute('xmlns', 'http://schemas.openxmlformats.org/package/2006/relationships');
-
- // Loop through images and write relationships
- $i = 1;
- $iterator = $pWorksheet->getDrawingCollection()->getIterator();
- while ($iterator->valid()) {
- if ($iterator->current() instanceof PHPExcel_Worksheet_Drawing
- || $iterator->current() instanceof PHPExcel_Worksheet_MemoryDrawing) {
- // Write relationship for image drawing
- $this->_writeRelationship(
- $objWriter,
- $i,
- 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/image',
- '../media/' . str_replace(' ', '', $iterator->current()->getIndexedFilename())
- );
- }
-
- $iterator->next();
- ++$i;
- }
-
- if ($includeCharts) {
- // Loop through charts and write relationships
- $chartCount = $pWorksheet->getChartCount();
- if ($chartCount > 0) {
- for ($c = 0; $c < $chartCount; ++$c) {
- $this->_writeRelationship(
- $objWriter,
- $i++,
- 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/chart',
- '../charts/chart' . ++$chartRef . '.xml'
- );
- }
- }
- }
-
- $objWriter->endElement();
-
- // Return
- return $objWriter->getData();
- }
-
- /**
- * Write header/footer drawing relationships to XML format
- *
- * @param PHPExcel_Worksheet $pWorksheet
- * @return string XML Output
- * @throws Exception
- */
- public function writeHeaderFooterDrawingRelationships(PHPExcel_Worksheet $pWorksheet = null)
- {
- // Create XML writer
- $objWriter = null;
- if ($this->getParentWriter()->getUseDiskCaching()) {
- $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_DISK, $this->getParentWriter()->getDiskCachingDirectory());
- } else {
- $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_MEMORY);
- }
-
- // XML header
- $objWriter->startDocument('1.0','UTF-8','yes');
-
- // Relationships
- $objWriter->startElement('Relationships');
- $objWriter->writeAttribute('xmlns', 'http://schemas.openxmlformats.org/package/2006/relationships');
-
- // Loop through images and write relationships
- foreach ($pWorksheet->getHeaderFooter()->getImages() as $key => $value) {
- // Write relationship for image drawing
- $this->_writeRelationship(
- $objWriter,
- $key,
- 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/image',
- '../media/' . $value->getIndexedFilename()
- );
- }
-
- $objWriter->endElement();
-
- // Return
- return $objWriter->getData();
- }
-
- /**
- * Write Override content type
- *
- * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer
- * @param int $pId Relationship ID. rId will be prepended!
- * @param string $pType Relationship type
- * @param string $pTarget Relationship target
- * @param string $pTargetMode Relationship target mode
- * @throws Exception
- */
- private function _writeRelationship(PHPExcel_Shared_XMLWriter $objWriter = null, $pId = 1, $pType = '', $pTarget = '', $pTargetMode = '')
- {
- if ($pType != '' && $pTarget != '') {
- // Write relationship
- $objWriter->startElement('Relationship');
- $objWriter->writeAttribute('Id', 'rId' . $pId);
- $objWriter->writeAttribute('Type', $pType);
- $objWriter->writeAttribute('Target', $pTarget);
-
- if ($pTargetMode != '') {
- $objWriter->writeAttribute('TargetMode', $pTargetMode);
- }
-
- $objWriter->endElement();
- } else {
- throw new Exception("Invalid parameters passed.");
- }
- }
-}
diff --git a/admin/survey/excel/PHPExcel/Writer/Excel2007/StringTable.php b/admin/survey/excel/PHPExcel/Writer/Excel2007/StringTable.php
deleted file mode 100644
index a4c4e52..0000000
--- a/admin/survey/excel/PHPExcel/Writer/Excel2007/StringTable.php
+++ /dev/null
@@ -1,319 +0,0 @@
-<?php
-/**
- * PHPExcel
- *
- * Copyright (c) 2006 - 2012 PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel_Writer_Excel2007
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-
-/**
- * PHPExcel_Writer_Excel2007_StringTable
- *
- * @category PHPExcel
- * @package PHPExcel_Writer_Excel2007
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- */
-class PHPExcel_Writer_Excel2007_StringTable extends PHPExcel_Writer_Excel2007_WriterPart
-{
- /**
- * Create worksheet stringtable
- *
- * @param PHPExcel_Worksheet $pSheet Worksheet
- * @param string[] $pExistingTable Existing table to eventually merge with
- * @return string[] String table for worksheet
- * @throws Exception
- */
- public function createStringTable($pSheet = null, $pExistingTable = null)
- {
- if ($pSheet !== NULL) {
- // Create string lookup table
- $aStringTable = array();
- $cellCollection = null;
- $aFlippedStringTable = null; // For faster lookup
-
- // Is an existing table given?
- if (($pExistingTable !== NULL) && is_array($pExistingTable)) {
- $aStringTable = $pExistingTable;
- }
-
- // Fill index array
- $aFlippedStringTable = $this->flipStringTable($aStringTable);
-
- // Loop through cells
- foreach ($pSheet->getCellCollection() as $cellID) {
- $cell = $pSheet->getCell($cellID);
- $cellValue = $cell->getValue();
- if (!is_object($cellValue) &&
- ($cellValue !== NULL) &&
- $cellValue !== '' &&
- !isset($aFlippedStringTable[$cellValue]) &&
- ($cell->getDataType() == PHPExcel_Cell_DataType::TYPE_STRING || $cell->getDataType() == PHPExcel_Cell_DataType::TYPE_STRING2 || $cell->getDataType() == PHPExcel_Cell_DataType::TYPE_NULL)) {
- $aStringTable[] = $cellValue;
- $aFlippedStringTable[$cellValue] = true;
- } elseif ($cellValue instanceof PHPExcel_RichText &&
- ($cellValue !== NULL) &&
- !isset($aFlippedStringTable[$cellValue->getHashCode()])) {
- $aStringTable[] = $cellValue;
- $aFlippedStringTable[$cellValue->getHashCode()] = true;
- }
- }
-
- // Return
- return $aStringTable;
- } else {
- throw new Exception("Invalid PHPExcel_Worksheet object passed.");
- }
- }
-
- /**
- * Write string table to XML format
- *
- * @param string[] $pStringTable
- * @return string XML Output
- * @throws Exception
- */
- public function writeStringTable($pStringTable = null)
- {
- if ($pStringTable !== NULL) {
- // Create XML writer
- $objWriter = null;
- if ($this->getParentWriter()->getUseDiskCaching()) {
- $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_DISK, $this->getParentWriter()->getDiskCachingDirectory());
- } else {
- $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_MEMORY);
- }
-
- // XML header
- $objWriter->startDocument('1.0','UTF-8','yes');
-
- // String table
- $objWriter->startElement('sst');
- $objWriter->writeAttribute('xmlns', 'http://schemas.openxmlformats.org/spreadsheetml/2006/main');
- $objWriter->writeAttribute('uniqueCount', count($pStringTable));
-
- // Loop through string table
- foreach ($pStringTable as $textElement) {
- $objWriter->startElement('si');
-
- if (! $textElement instanceof PHPExcel_RichText) {
- $textToWrite = PHPExcel_Shared_String::ControlCharacterPHP2OOXML( $textElement );
- $objWriter->startElement('t');
- if ($textToWrite !== trim($textToWrite)) {
- $objWriter->writeAttribute('xml:space', 'preserve');
- }
- $objWriter->writeRawData($textToWrite);
- $objWriter->endElement();
- } else if ($textElement instanceof PHPExcel_RichText) {
- $this->writeRichText($objWriter, $textElement);
- }
-
- $objWriter->endElement();
- }
-
- $objWriter->endElement();
-
- // Return
- return $objWriter->getData();
- } else {
- throw new Exception("Invalid string table array passed.");
- }
- }
-
- /**
- * Write Rich Text
- *
- * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer
- * @param PHPExcel_RichText $pRichText Rich text
- * @param string $prefix Optional Namespace prefix
- * @throws Exception
- */
- public function writeRichText(PHPExcel_Shared_XMLWriter $objWriter = null, PHPExcel_RichText $pRichText = null, $prefix=NULL)
- {
- if ($prefix !== NULL)
- $prefix .= ':';
- // Loop through rich text elements
- $elements = $pRichText->getRichTextElements();
- foreach ($elements as $element) {
- // r
- $objWriter->startElement($prefix.'r');
-
- // rPr
- if ($element instanceof PHPExcel_RichText_Run) {
- // rPr
- $objWriter->startElement($prefix.'rPr');
-
- // rFont
- $objWriter->startElement($prefix.'rFont');
- $objWriter->writeAttribute('val', $element->getFont()->getName());
- $objWriter->endElement();
-
- // Bold
- $objWriter->startElement($prefix.'b');
- $objWriter->writeAttribute('val', ($element->getFont()->getBold() ? 'true' : 'false'));
- $objWriter->endElement();
-
- // Italic
- $objWriter->startElement($prefix.'i');
- $objWriter->writeAttribute('val', ($element->getFont()->getItalic() ? 'true' : 'false'));
- $objWriter->endElement();
-
- // Superscript / subscript
- if ($element->getFont()->getSuperScript() || $element->getFont()->getSubScript()) {
- $objWriter->startElement($prefix.'vertAlign');
- if ($element->getFont()->getSuperScript()) {
- $objWriter->writeAttribute('val', 'superscript');
- } else if ($element->getFont()->getSubScript()) {
- $objWriter->writeAttribute('val', 'subscript');
- }
- $objWriter->endElement();
- }
-
- // Strikethrough
- $objWriter->startElement($prefix.'strike');
- $objWriter->writeAttribute('val', ($element->getFont()->getStrikethrough() ? 'true' : 'false'));
- $objWriter->endElement();
-
- // Color
- $objWriter->startElement($prefix.'color');
- $objWriter->writeAttribute('rgb', $element->getFont()->getColor()->getARGB());
- $objWriter->endElement();
-
- // Size
- $objWriter->startElement($prefix.'sz');
- $objWriter->writeAttribute('val', $element->getFont()->getSize());
- $objWriter->endElement();
-
- // Underline
- $objWriter->startElement($prefix.'u');
- $objWriter->writeAttribute('val', $element->getFont()->getUnderline());
- $objWriter->endElement();
-
- $objWriter->endElement();
- }
-
- // t
- $objWriter->startElement($prefix.'t');
- $objWriter->writeAttribute('xml:space', 'preserve');
- $objWriter->writeRawData(PHPExcel_Shared_String::ControlCharacterPHP2OOXML( $element->getText() ));
- $objWriter->endElement();
-
- $objWriter->endElement();
- }
- }
-
- /**
- * Write Rich Text
- *
- * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer
- * @param string|PHPExcel_RichText $pRichText text string or Rich text
- * @param string $prefix Optional Namespace prefix
- * @throws Exception
- */
- public function writeRichTextForCharts(PHPExcel_Shared_XMLWriter $objWriter = null, $pRichText = null, $prefix=NULL)
- {
- if (!$pRichText instanceof PHPExcel_RichText) {
- $textRun = $pRichText;
- $pRichText = new PHPExcel_RichText();
- $pRichText->createTextRun($textRun);
- }
-
- if ($prefix !== NULL)
- $prefix .= ':';
- // Loop through rich text elements
- $elements = $pRichText->getRichTextElements();
- foreach ($elements as $element) {
- // r
- $objWriter->startElement($prefix.'r');
-
- // rPr
- $objWriter->startElement($prefix.'rPr');
-
- // Bold
- $objWriter->writeAttribute('b', ($element->getFont()->getBold() ? 1 : 0));
- // Italic
- $objWriter->writeAttribute('i', ($element->getFont()->getItalic() ? 1 : 0));
- // Underline
- $underlineType = $element->getFont()->getUnderline();
- switch($underlineType) {
- case 'single' :
- $underlineType = 'sng';
- break;
- case 'double' :
- $underlineType = 'dbl';
- break;
- }
- $objWriter->writeAttribute('u', $underlineType);
- // Strikethrough
- $objWriter->writeAttribute('strike', ($element->getFont()->getStrikethrough() ? 'sngStrike' : 'noStrike'));
-
- // rFont
- $objWriter->startElement($prefix.'latin');
- $objWriter->writeAttribute('typeface', $element->getFont()->getName());
- $objWriter->endElement();
-
- // Superscript / subscript
-// if ($element->getFont()->getSuperScript() || $element->getFont()->getSubScript()) {
-// $objWriter->startElement($prefix.'vertAlign');
-// if ($element->getFont()->getSuperScript()) {
-// $objWriter->writeAttribute('val', 'superscript');
-// } else if ($element->getFont()->getSubScript()) {
-// $objWriter->writeAttribute('val', 'subscript');
-// }
-// $objWriter->endElement();
-// }
-//
- $objWriter->endElement();
-
- // t
- $objWriter->startElement($prefix.'t');
-// $objWriter->writeAttribute('xml:space', 'preserve'); // Excel2010 accepts, Excel2007 complains
- $objWriter->writeRawData(PHPExcel_Shared_String::ControlCharacterPHP2OOXML( $element->getText() ));
- $objWriter->endElement();
-
- $objWriter->endElement();
- }
- }
-
- /**
- * Flip string table (for index searching)
- *
- * @param array $stringTable Stringtable
- * @return array
- */
- public function flipStringTable($stringTable = array()) {
- // Return value
- $returnValue = array();
-
- // Loop through stringtable and add flipped items to $returnValue
- foreach ($stringTable as $key => $value) {
- if (! $value instanceof PHPExcel_RichText) {
- $returnValue[$value] = $key;
- } else if ($value instanceof PHPExcel_RichText) {
- $returnValue[$value->getHashCode()] = $key;
- }
- }
-
- // Return
- return $returnValue;
- }
-}
diff --git a/admin/survey/excel/PHPExcel/Writer/Excel2007/Style.php b/admin/survey/excel/PHPExcel/Writer/Excel2007/Style.php
deleted file mode 100644
index 0a053f3..0000000
--- a/admin/survey/excel/PHPExcel/Writer/Excel2007/Style.php
+++ /dev/null
@@ -1,701 +0,0 @@
-<?php
-/**
- * PHPExcel
- *
- * Copyright (c) 2006 - 2012 PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel_Writer_Excel2007
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-
-/**
- * PHPExcel_Writer_Excel2007_Style
- *
- * @category PHPExcel
- * @package PHPExcel_Writer_Excel2007
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- */
-class PHPExcel_Writer_Excel2007_Style extends PHPExcel_Writer_Excel2007_WriterPart
-{
- /**
- * Write styles to XML format
- *
- * @param PHPExcel $pPHPExcel
- * @return string XML Output
- * @throws Exception
- */
- public function writeStyles(PHPExcel $pPHPExcel = null)
- {
- // Create XML writer
- $objWriter = null;
- if ($this->getParentWriter()->getUseDiskCaching()) {
- $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_DISK, $this->getParentWriter()->getDiskCachingDirectory());
- } else {
- $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_MEMORY);
- }
-
- // XML header
- $objWriter->startDocument('1.0','UTF-8','yes');
-
- // styleSheet
- $objWriter->startElement('styleSheet');
- $objWriter->writeAttribute('xml:space', 'preserve');
- $objWriter->writeAttribute('xmlns', 'http://schemas.openxmlformats.org/spreadsheetml/2006/main');
-
- // numFmts
- $objWriter->startElement('numFmts');
- $objWriter->writeAttribute('count', $this->getParentWriter()->getNumFmtHashTable()->count());
-
- // numFmt
- for ($i = 0; $i < $this->getParentWriter()->getNumFmtHashTable()->count(); ++$i) {
- $this->_writeNumFmt($objWriter, $this->getParentWriter()->getNumFmtHashTable()->getByIndex($i), $i);
- }
-
- $objWriter->endElement();
-
- // fonts
- $objWriter->startElement('fonts');
- $objWriter->writeAttribute('count', $this->getParentWriter()->getFontHashTable()->count());
-
- // font
- for ($i = 0; $i < $this->getParentWriter()->getFontHashTable()->count(); ++$i) {
- $this->_writeFont($objWriter, $this->getParentWriter()->getFontHashTable()->getByIndex($i));
- }
-
- $objWriter->endElement();
-
- // fills
- $objWriter->startElement('fills');
- $objWriter->writeAttribute('count', $this->getParentWriter()->getFillHashTable()->count());
-
- // fill
- for ($i = 0; $i < $this->getParentWriter()->getFillHashTable()->count(); ++$i) {
- $this->_writeFill($objWriter, $this->getParentWriter()->getFillHashTable()->getByIndex($i));
- }
-
- $objWriter->endElement();
-
- // borders
- $objWriter->startElement('borders');
- $objWriter->writeAttribute('count', $this->getParentWriter()->getBordersHashTable()->count());
-
- // border
- for ($i = 0; $i < $this->getParentWriter()->getBordersHashTable()->count(); ++$i) {
- $this->_writeBorder($objWriter, $this->getParentWriter()->getBordersHashTable()->getByIndex($i));
- }
-
- $objWriter->endElement();
-
- // cellStyleXfs
- $objWriter->startElement('cellStyleXfs');
- $objWriter->writeAttribute('count', 1);
-
- // xf
- $objWriter->startElement('xf');
- $objWriter->writeAttribute('numFmtId', 0);
- $objWriter->writeAttribute('fontId', 0);
- $objWriter->writeAttribute('fillId', 0);
- $objWriter->writeAttribute('borderId', 0);
- $objWriter->endElement();
-
- $objWriter->endElement();
-
- // cellXfs
- $objWriter->startElement('cellXfs');
- $objWriter->writeAttribute('count', count($pPHPExcel->getCellXfCollection()));
-
- // xf
- foreach ($pPHPExcel->getCellXfCollection() as $cellXf) {
- $this->_writeCellStyleXf($objWriter, $cellXf, $pPHPExcel);
- }
-
- $objWriter->endElement();
-
- // cellStyles
- $objWriter->startElement('cellStyles');
- $objWriter->writeAttribute('count', 1);
-
- // cellStyle
- $objWriter->startElement('cellStyle');
- $objWriter->writeAttribute('name', 'Normal');
- $objWriter->writeAttribute('xfId', 0);
- $objWriter->writeAttribute('builtinId', 0);
- $objWriter->endElement();
-
- $objWriter->endElement();
-
- // dxfs
- $objWriter->startElement('dxfs');
- $objWriter->writeAttribute('count', $this->getParentWriter()->getStylesConditionalHashTable()->count());
-
- // dxf
- for ($i = 0; $i < $this->getParentWriter()->getStylesConditionalHashTable()->count(); ++$i) {
- $this->_writeCellStyleDxf($objWriter, $this->getParentWriter()->getStylesConditionalHashTable()->getByIndex($i)->getStyle());
- }
-
- $objWriter->endElement();
-
- // tableStyles
- $objWriter->startElement('tableStyles');
- $objWriter->writeAttribute('defaultTableStyle', 'TableStyleMedium9');
- $objWriter->writeAttribute('defaultPivotStyle', 'PivotTableStyle1');
- $objWriter->endElement();
-
- $objWriter->endElement();
-
- // Return
- return $objWriter->getData();
- }
-
- /**
- * Write Fill
- *
- * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer
- * @param PHPExcel_Style_Fill $pFill Fill style
- * @throws Exception
- */
- private function _writeFill(PHPExcel_Shared_XMLWriter $objWriter = null, PHPExcel_Style_Fill $pFill = null)
- {
- // Check if this is a pattern type or gradient type
- if ($pFill->getFillType() === PHPExcel_Style_Fill::FILL_GRADIENT_LINEAR ||
- $pFill->getFillType() === PHPExcel_Style_Fill::FILL_GRADIENT_PATH) {
- // Gradient fill
- $this->_writeGradientFill($objWriter, $pFill);
- } elseif($pFill->getFillType() !== NULL) {
- // Pattern fill
- $this->_writePatternFill($objWriter, $pFill);
- }
- }
-
- /**
- * Write Gradient Fill
- *
- * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer
- * @param PHPExcel_Style_Fill $pFill Fill style
- * @throws Exception
- */
- private function _writeGradientFill(PHPExcel_Shared_XMLWriter $objWriter = null, PHPExcel_Style_Fill $pFill = null)
- {
- // fill
- $objWriter->startElement('fill');
-
- // gradientFill
- $objWriter->startElement('gradientFill');
- $objWriter->writeAttribute('type', $pFill->getFillType());
- $objWriter->writeAttribute('degree', $pFill->getRotation());
-
- // stop
- $objWriter->startElement('stop');
- $objWriter->writeAttribute('position', '0');
-
- // color
- $objWriter->startElement('color');
- $objWriter->writeAttribute('rgb', $pFill->getStartColor()->getARGB());
- $objWriter->endElement();
-
- $objWriter->endElement();
-
- // stop
- $objWriter->startElement('stop');
- $objWriter->writeAttribute('position', '1');
-
- // color
- $objWriter->startElement('color');
- $objWriter->writeAttribute('rgb', $pFill->getEndColor()->getARGB());
- $objWriter->endElement();
-
- $objWriter->endElement();
-
- $objWriter->endElement();
-
- $objWriter->endElement();
- }
-
- /**
- * Write Pattern Fill
- *
- * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer
- * @param PHPExcel_Style_Fill $pFill Fill style
- * @throws Exception
- */
- private function _writePatternFill(PHPExcel_Shared_XMLWriter $objWriter = null, PHPExcel_Style_Fill $pFill = null)
- {
- // fill
- $objWriter->startElement('fill');
-
- // patternFill
- $objWriter->startElement('patternFill');
- $objWriter->writeAttribute('patternType', $pFill->getFillType());
-
- if ($pFill->getFillType() !== PHPExcel_Style_Fill::FILL_NONE) {
- // fgColor
- if ($pFill->getStartColor()->getARGB()) {
- $objWriter->startElement('fgColor');
- $objWriter->writeAttribute('rgb', $pFill->getStartColor()->getARGB());
- $objWriter->endElement();
- }
- }
- if ($pFill->getFillType() !== PHPExcel_Style_Fill::FILL_NONE) {
- // bgColor
- if ($pFill->getEndColor()->getARGB()) {
- $objWriter->startElement('bgColor');
- $objWriter->writeAttribute('rgb', $pFill->getEndColor()->getARGB());
- $objWriter->endElement();
- }
- }
-
- $objWriter->endElement();
-
- $objWriter->endElement();
- }
-
- /**
- * Write Font
- *
- * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer
- * @param PHPExcel_Style_Font $pFont Font style
- * @throws Exception
- */
- private function _writeFont(PHPExcel_Shared_XMLWriter $objWriter = null, PHPExcel_Style_Font $pFont = null)
- {
- // font
- $objWriter->startElement('font');
- // Weird! The order of these elements actually makes a difference when opening Excel2007
- // files in Excel2003 with the compatibility pack. It's not documented behaviour,
- // and makes for a real WTF!
-
- // Bold. We explicitly write this element also when false (like MS Office Excel 2007 does
- // for conditional formatting). Otherwise it will apparently not be picked up in conditional
- // formatting style dialog
- if ($pFont->getBold() !== NULL) {
- $objWriter->startElement('b');
- $objWriter->writeAttribute('val', $pFont->getBold() ? '1' : '0');
- $objWriter->endElement();
- }
-
- // Italic
- if ($pFont->getItalic() !== NULL) {
- $objWriter->startElement('i');
- $objWriter->writeAttribute('val', $pFont->getItalic() ? '1' : '0');
- $objWriter->endElement();
- }
-
- // Strikethrough
- if ($pFont->getStrikethrough() !== NULL) {
- $objWriter->startElement('strike');
- $objWriter->writeAttribute('val', $pFont->getStrikethrough() ? '1' : '0');
- $objWriter->endElement();
- }
-
- // Underline
- if ($pFont->getUnderline() !== NULL) {
- $objWriter->startElement('u');
- $objWriter->writeAttribute('val', $pFont->getUnderline());
- $objWriter->endElement();
- }
-
- // Superscript / subscript
- if ($pFont->getSuperScript() === TRUE || $pFont->getSubScript() === TRUE) {
- $objWriter->startElement('vertAlign');
- if ($pFont->getSuperScript() === TRUE) {
- $objWriter->writeAttribute('val', 'superscript');
- } else if ($pFont->getSubScript() === TRUE) {
- $objWriter->writeAttribute('val', 'subscript');
- }
- $objWriter->endElement();
- }
-
- // Size
- if ($pFont->getSize() !== NULL) {
- $objWriter->startElement('sz');
- $objWriter->writeAttribute('val', $pFont->getSize());
- $objWriter->endElement();
- }
-
- // Foreground color
- if ($pFont->getColor()->getARGB() !== NULL) {
- $objWriter->startElement('color');
- $objWriter->writeAttribute('rgb', $pFont->getColor()->getARGB());
- $objWriter->endElement();
- }
-
- // Name
- if ($pFont->getName() !== NULL) {
- $objWriter->startElement('name');
- $objWriter->writeAttribute('val', $pFont->getName());
- $objWriter->endElement();
- }
-
- $objWriter->endElement();
- }
-
- /**
- * Write Border
- *
- * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer
- * @param PHPExcel_Style_Borders $pBorders Borders style
- * @throws Exception
- */
- private function _writeBorder(PHPExcel_Shared_XMLWriter $objWriter = null, PHPExcel_Style_Borders $pBorders = null)
- {
- // Write border
- $objWriter->startElement('border');
- // Diagonal?
- switch ($pBorders->getDiagonalDirection()) {
- case PHPExcel_Style_Borders::DIAGONAL_UP:
- $objWriter->writeAttribute('diagonalUp', 'true');
- $objWriter->writeAttribute('diagonalDown', 'false');
- break;
- case PHPExcel_Style_Borders::DIAGONAL_DOWN:
- $objWriter->writeAttribute('diagonalUp', 'false');
- $objWriter->writeAttribute('diagonalDown', 'true');
- break;
- case PHPExcel_Style_Borders::DIAGONAL_BOTH:
- $objWriter->writeAttribute('diagonalUp', 'true');
- $objWriter->writeAttribute('diagonalDown', 'true');
- break;
- }
-
- // BorderPr
- $this->_writeBorderPr($objWriter, 'left', $pBorders->getLeft());
- $this->_writeBorderPr($objWriter, 'right', $pBorders->getRight());
- $this->_writeBorderPr($objWriter, 'top', $pBorders->getTop());
- $this->_writeBorderPr($objWriter, 'bottom', $pBorders->getBottom());
- $this->_writeBorderPr($objWriter, 'diagonal', $pBorders->getDiagonal());
- $objWriter->endElement();
- }
-
- /**
- * Write Cell Style Xf
- *
- * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer
- * @param PHPExcel_Style $pStyle Style
- * @param PHPExcel $pPHPExcel Workbook
- * @throws Exception
- */
- private function _writeCellStyleXf(PHPExcel_Shared_XMLWriter $objWriter = null, PHPExcel_Style $pStyle = null, PHPExcel $pPHPExcel = null)
- {
- // xf
- $objWriter->startElement('xf');
- $objWriter->writeAttribute('xfId', 0);
- $objWriter->writeAttribute('fontId', (int)$this->getParentWriter()->getFontHashTable()->getIndexForHashCode($pStyle->getFont()->getHashCode()));
-
- if ($pStyle->getNumberFormat()->getBuiltInFormatCode() === false) {
- $objWriter->writeAttribute('numFmtId', (int)($this->getParentWriter()->getNumFmtHashTable()->getIndexForHashCode($pStyle->getNumberFormat()->getHashCode()) + 164) );
- } else {
- $objWriter->writeAttribute('numFmtId', (int)$pStyle->getNumberFormat()->getBuiltInFormatCode());
- }
-
- $objWriter->writeAttribute('fillId', (int)$this->getParentWriter()->getFillHashTable()->getIndexForHashCode($pStyle->getFill()->getHashCode()));
- $objWriter->writeAttribute('borderId', (int)$this->getParentWriter()->getBordersHashTable()->getIndexForHashCode($pStyle->getBorders()->getHashCode()));
-
- // Apply styles?
- $objWriter->writeAttribute('applyFont', ($pPHPExcel->getDefaultStyle()->getFont()->getHashCode() != $pStyle->getFont()->getHashCode()) ? '1' : '0');
- $objWriter->writeAttribute('applyNumberFormat', ($pPHPExcel->getDefaultStyle()->getNumberFormat()->getHashCode() != $pStyle->getNumberFormat()->getHashCode()) ? '1' : '0');
- $objWriter->writeAttribute('applyFill', ($pPHPExcel->getDefaultStyle()->getFill()->getHashCode() != $pStyle->getFill()->getHashCode()) ? '1' : '0');
- $objWriter->writeAttribute('applyBorder', ($pPHPExcel->getDefaultStyle()->getBorders()->getHashCode() != $pStyle->getBorders()->getHashCode()) ? '1' : '0');
- $objWriter->writeAttribute('applyAlignment', ($pPHPExcel->getDefaultStyle()->getAlignment()->getHashCode() != $pStyle->getAlignment()->getHashCode()) ? '1' : '0');
- if ($pStyle->getProtection()->getLocked() != PHPExcel_Style_Protection::PROTECTION_INHERIT || $pStyle->getProtection()->getHidden() != PHPExcel_Style_Protection::PROTECTION_INHERIT) {
- $objWriter->writeAttribute('applyProtection', 'true');
- }
-
- // alignment
- $objWriter->startElement('alignment');
- $objWriter->writeAttribute('horizontal', $pStyle->getAlignment()->getHorizontal());
- $objWriter->writeAttribute('vertical', $pStyle->getAlignment()->getVertical());
-
- $textRotation = 0;
- if ($pStyle->getAlignment()->getTextRotation() >= 0) {
- $textRotation = $pStyle->getAlignment()->getTextRotation();
- } else if ($pStyle->getAlignment()->getTextRotation() < 0) {
- $textRotation = 90 - $pStyle->getAlignment()->getTextRotation();
- }
- $objWriter->writeAttribute('textRotation', $textRotation);
-
- $objWriter->writeAttribute('wrapText', ($pStyle->getAlignment()->getWrapText() ? 'true' : 'false'));
- $objWriter->writeAttribute('shrinkToFit', ($pStyle->getAlignment()->getShrinkToFit() ? 'true' : 'false'));
-
- if ($pStyle->getAlignment()->getIndent() > 0) {
- $objWriter->writeAttribute('indent', $pStyle->getAlignment()->getIndent());
- }
- $objWriter->endElement();
-
- // protection
- if ($pStyle->getProtection()->getLocked() != PHPExcel_Style_Protection::PROTECTION_INHERIT || $pStyle->getProtection()->getHidden() != PHPExcel_Style_Protection::PROTECTION_INHERIT) {
- $objWriter->startElement('protection');
- if ($pStyle->getProtection()->getLocked() != PHPExcel_Style_Protection::PROTECTION_INHERIT) {
- $objWriter->writeAttribute('locked', ($pStyle->getProtection()->getLocked() == PHPExcel_Style_Protection::PROTECTION_PROTECTED ? 'true' : 'false'));
- }
- if ($pStyle->getProtection()->getHidden() != PHPExcel_Style_Protection::PROTECTION_INHERIT) {
- $objWriter->writeAttribute('hidden', ($pStyle->getProtection()->getHidden() == PHPExcel_Style_Protection::PROTECTION_PROTECTED ? 'true' : 'false'));
- }
- $objWriter->endElement();
- }
-
- $objWriter->endElement();
- }
-
- /**
- * Write Cell Style Dxf
- *
- * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer
- * @param PHPExcel_Style $pStyle Style
- * @throws Exception
- */
- private function _writeCellStyleDxf(PHPExcel_Shared_XMLWriter $objWriter = null, PHPExcel_Style $pStyle = null)
- {
- // dxf
- $objWriter->startElement('dxf');
-
- // font
- $this->_writeFont($objWriter, $pStyle->getFont());
-
- // numFmt
- $this->_writeNumFmt($objWriter, $pStyle->getNumberFormat());
-
- // fill
- $this->_writeFill($objWriter, $pStyle->getFill());
-
- // alignment
- $objWriter->startElement('alignment');
- if ($pStyle->getAlignment()->getHorizontal() !== NULL) {
- $objWriter->writeAttribute('horizontal', $pStyle->getAlignment()->getHorizontal());
- }
- if ($pStyle->getAlignment()->getVertical() !== NULL) {
- $objWriter->writeAttribute('vertical', $pStyle->getAlignment()->getVertical());
- }
-
- if ($pStyle->getAlignment()->getTextRotation() !== NULL) {
- $textRotation = 0;
- if ($pStyle->getAlignment()->getTextRotation() >= 0) {
- $textRotation = $pStyle->getAlignment()->getTextRotation();
- } else if ($pStyle->getAlignment()->getTextRotation() < 0) {
- $textRotation = 90 - $pStyle->getAlignment()->getTextRotation();
- }
- $objWriter->writeAttribute('textRotation', $textRotation);
- }
- $objWriter->endElement();
-
- // border
- $this->_writeBorder($objWriter, $pStyle->getBorders());
-
- // protection
- if (($pStyle->getProtection()->getLocked() !== NULL) ||
- ($pStyle->getProtection()->getHidden() !== NULL)) {
- if ($pStyle->getProtection()->getLocked() !== PHPExcel_Style_Protection::PROTECTION_INHERIT ||
- $pStyle->getProtection()->getHidden() !== PHPExcel_Style_Protection::PROTECTION_INHERIT) {
- $objWriter->startElement('protection');
- if (($pStyle->getProtection()->getLocked() !== NULL) &&
- ($pStyle->getProtection()->getLocked() !== PHPExcel_Style_Protection::PROTECTION_INHERIT)) {
- $objWriter->writeAttribute('locked', ($pStyle->getProtection()->getLocked() == PHPExcel_Style_Protection::PROTECTION_PROTECTED ? 'true' : 'false'));
- }
- if (($pStyle->getProtection()->getHidden() !== NULL) &&
- ($pStyle->getProtection()->getHidden() !== PHPExcel_Style_Protection::PROTECTION_INHERIT)) {
- $objWriter->writeAttribute('hidden', ($pStyle->getProtection()->getHidden() == PHPExcel_Style_Protection::PROTECTION_PROTECTED ? 'true' : 'false'));
- }
- $objWriter->endElement();
- }
- }
-
- $objWriter->endElement();
- }
-
- /**
- * Write BorderPr
- *
- * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer
- * @param string $pName Element name
- * @param PHPExcel_Style_Border $pBorder Border style
- * @throws Exception
- */
- private function _writeBorderPr(PHPExcel_Shared_XMLWriter $objWriter = null, $pName = 'left', PHPExcel_Style_Border $pBorder = null)
- {
- // Write BorderPr
- if ($pBorder->getBorderStyle() != PHPExcel_Style_Border::BORDER_NONE) {
- $objWriter->startElement($pName);
- $objWriter->writeAttribute('style', $pBorder->getBorderStyle());
-
- // color
- $objWriter->startElement('color');
- $objWriter->writeAttribute('rgb', $pBorder->getColor()->getARGB());
- $objWriter->endElement();
-
- $objWriter->endElement();
- }
- }
-
- /**
- * Write NumberFormat
- *
- * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer
- * @param PHPExcel_Style_NumberFormat $pNumberFormat Number Format
- * @param int $pId Number Format identifier
- * @throws Exception
- */
- private function _writeNumFmt(PHPExcel_Shared_XMLWriter $objWriter = null, PHPExcel_Style_NumberFormat $pNumberFormat = null, $pId = 0)
- {
- // Translate formatcode
- $formatCode = $pNumberFormat->getFormatCode();
-
- // numFmt
- if ($formatCode !== NULL) {
- $objWriter->startElement('numFmt');
- $objWriter->writeAttribute('numFmtId', ($pId + 164));
- $objWriter->writeAttribute('formatCode', $formatCode);
- $objWriter->endElement();
- }
- }
-
- /**
- * Get an array of all styles
- *
- * @param PHPExcel $pPHPExcel
- * @return PHPExcel_Style[] All styles in PHPExcel
- * @throws Exception
- */
- public function allStyles(PHPExcel $pPHPExcel = null)
- {
- $aStyles = $pPHPExcel->getCellXfCollection();
-
- return $aStyles;
- }
-
- /**
- * Get an array of all conditional styles
- *
- * @param PHPExcel $pPHPExcel
- * @return PHPExcel_Style_Conditional[] All conditional styles in PHPExcel
- * @throws Exception
- */
- public function allConditionalStyles(PHPExcel $pPHPExcel = null)
- {
- // Get an array of all styles
- $aStyles = array();
-
- $sheetCount = $pPHPExcel->getSheetCount();
- for ($i = 0; $i < $sheetCount; ++$i) {
- foreach ($pPHPExcel->getSheet($i)->getConditionalStylesCollection() as $conditionalStyles) {
- foreach ($conditionalStyles as $conditionalStyle) {
- $aStyles[] = $conditionalStyle;
- }
- }
- }
-
- return $aStyles;
- }
-
- /**
- * Get an array of all fills
- *
- * @param PHPExcel $pPHPExcel
- * @return PHPExcel_Style_Fill[] All fills in PHPExcel
- * @throws Exception
- */
- public function allFills(PHPExcel $pPHPExcel = null)
- {
- // Get an array of unique fills
- $aFills = array();
-
- // Two first fills are predefined
- $fill0 = new PHPExcel_Style_Fill();
- $fill0->setFillType(PHPExcel_Style_Fill::FILL_NONE);
- $aFills[] = $fill0;
-
- $fill1 = new PHPExcel_Style_Fill();
- $fill1->setFillType(PHPExcel_Style_Fill::FILL_PATTERN_GRAY125);
- $aFills[] = $fill1;
- // The remaining fills
- $aStyles = $this->allStyles($pPHPExcel);
- foreach ($aStyles as $style) {
- if (!array_key_exists($style->getFill()->getHashCode(), $aFills)) {
- $aFills[ $style->getFill()->getHashCode() ] = $style->getFill();
- }
- }
-
- return $aFills;
- }
-
- /**
- * Get an array of all fonts
- *
- * @param PHPExcel $pPHPExcel
- * @return PHPExcel_Style_Font[] All fonts in PHPExcel
- * @throws Exception
- */
- public function allFonts(PHPExcel $pPHPExcel = null)
- {
- // Get an array of unique fonts
- $aFonts = array();
- $aStyles = $this->allStyles($pPHPExcel);
-
- foreach ($aStyles as $style) {
- if (!array_key_exists($style->getFont()->getHashCode(), $aFonts)) {
- $aFonts[ $style->getFont()->getHashCode() ] = $style->getFont();
- }
- }
-
- return $aFonts;
- }
-
- /**
- * Get an array of all borders
- *
- * @param PHPExcel $pPHPExcel
- * @return PHPExcel_Style_Borders[] All borders in PHPExcel
- * @throws Exception
- */
- public function allBorders(PHPExcel $pPHPExcel = null)
- {
- // Get an array of unique borders
- $aBorders = array();
- $aStyles = $this->allStyles($pPHPExcel);
-
- foreach ($aStyles as $style) {
- if (!array_key_exists($style->getBorders()->getHashCode(), $aBorders)) {
- $aBorders[ $style->getBorders()->getHashCode() ] = $style->getBorders();
- }
- }
-
- return $aBorders;
- }
-
- /**
- * Get an array of all number formats
- *
- * @param PHPExcel $pPHPExcel
- * @return PHPExcel_Style_NumberFormat[] All number formats in PHPExcel
- * @throws Exception
- */
- public function allNumberFormats(PHPExcel $pPHPExcel = null)
- {
- // Get an array of unique number formats
- $aNumFmts = array();
- $aStyles = $this->allStyles($pPHPExcel);
-
- foreach ($aStyles as $style) {
- if ($style->getNumberFormat()->getBuiltInFormatCode() === false && !array_key_exists($style->getNumberFormat()->getHashCode(), $aNumFmts)) {
- $aNumFmts[ $style->getNumberFormat()->getHashCode() ] = $style->getNumberFormat();
- }
- }
-
- return $aNumFmts;
- }
-}
diff --git a/admin/survey/excel/PHPExcel/Writer/Excel2007/Theme.php b/admin/survey/excel/PHPExcel/Writer/Excel2007/Theme.php
deleted file mode 100644
index dcb6cfb..0000000
--- a/admin/survey/excel/PHPExcel/Writer/Excel2007/Theme.php
+++ /dev/null
@@ -1,871 +0,0 @@
-<?php
-/**
- * PHPExcel
- *
- * Copyright (c) 2006 - 2012 PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel_Writer_Excel2007
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-
-/**
- * PHPExcel_Writer_Excel2007_DocProps
- *
- * @category PHPExcel
- * @package PHPExcel_Writer_Excel2007
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- */
-class PHPExcel_Writer_Excel2007_Theme extends PHPExcel_Writer_Excel2007_WriterPart
-{
- /**
- * Map of Major fonts to write
- * @static array of string
- *
- */
- private static $_majorFonts = array(
- 'Jpan' => 'MS Pゴシック',
- 'Hang' => '맑은 고딕',
- 'Hans' => '宋体',
- 'Hant' => '新細明體',
- 'Arab' => 'Times New Roman',
- 'Hebr' => 'Times New Roman',
- 'Thai' => 'Tahoma',
- 'Ethi' => 'Nyala',
- 'Beng' => 'Vrinda',
- 'Gujr' => 'Shruti',
- 'Khmr' => 'MoolBoran',
- 'Knda' => 'Tunga',
- 'Guru' => 'Raavi',
- 'Cans' => 'Euphemia',
- 'Cher' => 'Plantagenet Cherokee',
- 'Yiii' => 'Microsoft Yi Baiti',
- 'Tibt' => 'Microsoft Himalaya',
- 'Thaa' => 'MV Boli',
- 'Deva' => 'Mangal',
- 'Telu' => 'Gautami',
- 'Taml' => 'Latha',
- 'Syrc' => 'Estrangelo Edessa',
- 'Orya' => 'Kalinga',
- 'Mlym' => 'Kartika',
- 'Laoo' => 'DokChampa',
- 'Sinh' => 'Iskoola Pota',
- 'Mong' => 'Mongolian Baiti',
- 'Viet' => 'Times New Roman',
- 'Uigh' => 'Microsoft Uighur',
- 'Geor' => 'Sylfaen',
- );
-
- /**
- * Map of Minor fonts to write
- * @static array of string
- *
- */
- private static $_minorFonts = array(
- 'Jpan' => 'MS Pゴシック',
- 'Hang' => '맑은 고딕',
- 'Hans' => '宋体',
- 'Hant' => '新細明體',
- 'Arab' => 'Arial',
- 'Hebr' => 'Arial',
- 'Thai' => 'Tahoma',
- 'Ethi' => 'Nyala',
- 'Beng' => 'Vrinda',
- 'Gujr' => 'Shruti',
- 'Khmr' => 'DaunPenh',
- 'Knda' => 'Tunga',
- 'Guru' => 'Raavi',
- 'Cans' => 'Euphemia',
- 'Cher' => 'Plantagenet Cherokee',
- 'Yiii' => 'Microsoft Yi Baiti',
- 'Tibt' => 'Microsoft Himalaya',
- 'Thaa' => 'MV Boli',
- 'Deva' => 'Mangal',
- 'Telu' => 'Gautami',
- 'Taml' => 'Latha',
- 'Syrc' => 'Estrangelo Edessa',
- 'Orya' => 'Kalinga',
- 'Mlym' => 'Kartika',
- 'Laoo' => 'DokChampa',
- 'Sinh' => 'Iskoola Pota',
- 'Mong' => 'Mongolian Baiti',
- 'Viet' => 'Arial',
- 'Uigh' => 'Microsoft Uighur',
- 'Geor' => 'Sylfaen',
- );
-
- /**
- * Map of core colours
- * @static array of string
- *
- */
- private static $_colourScheme = array(
- 'dk2' => '1F497D',
- 'lt2' => 'EEECE1',
- 'accent1' => '4F81BD',
- 'accent2' => 'C0504D',
- 'accent3' => '9BBB59',
- 'accent4' => '8064A2',
- 'accent5' => '4BACC6',
- 'accent6' => 'F79646',
- 'hlink' => '0000FF',
- 'folHlink' => '800080',
- );
-
- /**
- * Write theme to XML format
- *
- * @param PHPExcel $pPHPExcel
- * @return string XML Output
- * @throws Exception
- */
- public function writeTheme(PHPExcel $pPHPExcel = null)
- {
- // Create XML writer
- $objWriter = null;
- if ($this->getParentWriter()->getUseDiskCaching()) {
- $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_DISK, $this->getParentWriter()->getDiskCachingDirectory());
- } else {
- $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_MEMORY);
- }
-
- // XML header
- $objWriter->startDocument('1.0','UTF-8','yes');
-
- // a:theme
- $objWriter->startElement('a:theme');
- $objWriter->writeAttribute('xmlns:a', 'http://schemas.openxmlformats.org/drawingml/2006/main');
- $objWriter->writeAttribute('name', 'Office Theme');
-
- // a:themeElements
- $objWriter->startElement('a:themeElements');
-
- // a:clrScheme
- $objWriter->startElement('a:clrScheme');
- $objWriter->writeAttribute('name', 'Office');
-
- // a:dk1
- $objWriter->startElement('a:dk1');
-
- // a:sysClr
- $objWriter->startElement('a:sysClr');
- $objWriter->writeAttribute('val', 'windowText');
- $objWriter->writeAttribute('lastClr', '000000');
- $objWriter->endElement();
-
- $objWriter->endElement();
-
- // a:lt1
- $objWriter->startElement('a:lt1');
-
- // a:sysClr
- $objWriter->startElement('a:sysClr');
- $objWriter->writeAttribute('val', 'window');
- $objWriter->writeAttribute('lastClr', 'FFFFFF');
- $objWriter->endElement();
-
- $objWriter->endElement();
-
- // a:dk2
- $this->_writeColourScheme($objWriter);
-
- $objWriter->endElement();
-
- // a:fontScheme
- $objWriter->startElement('a:fontScheme');
- $objWriter->writeAttribute('name', 'Office');
-
- // a:majorFont
- $objWriter->startElement('a:majorFont');
- $this->_writeFonts($objWriter, 'Cambria', self::$_majorFonts);
- $objWriter->endElement();
-
- // a:minorFont
- $objWriter->startElement('a:minorFont');
- $this->_writeFonts($objWriter, 'Calibri', self::$_minorFonts);
- $objWriter->endElement();
-
- $objWriter->endElement();
-
- // a:fmtScheme
- $objWriter->startElement('a:fmtScheme');
- $objWriter->writeAttribute('name', 'Office');
-
- // a:fillStyleLst
- $objWriter->startElement('a:fillStyleLst');
-
- // a:solidFill
- $objWriter->startElement('a:solidFill');
-
- // a:schemeClr
- $objWriter->startElement('a:schemeClr');
- $objWriter->writeAttribute('val', 'phClr');
- $objWriter->endElement();
-
- $objWriter->endElement();
-
- // a:gradFill
- $objWriter->startElement('a:gradFill');
- $objWriter->writeAttribute('rotWithShape', '1');
-
- // a:gsLst
- $objWriter->startElement('a:gsLst');
-
- // a:gs
- $objWriter->startElement('a:gs');
- $objWriter->writeAttribute('pos', '0');
-
- // a:schemeClr
- $objWriter->startElement('a:schemeClr');
- $objWriter->writeAttribute('val', 'phClr');
-
- // a:tint
- $objWriter->startElement('a:tint');
- $objWriter->writeAttribute('val', '50000');
- $objWriter->endElement();
-
- // a:satMod
- $objWriter->startElement('a:satMod');
- $objWriter->writeAttribute('val', '300000');
- $objWriter->endElement();
-
- $objWriter->endElement();
-
- $objWriter->endElement();
-
- // a:gs
- $objWriter->startElement('a:gs');
- $objWriter->writeAttribute('pos', '35000');
-
- // a:schemeClr
- $objWriter->startElement('a:schemeClr');
- $objWriter->writeAttribute('val', 'phClr');
-
- // a:tint
- $objWriter->startElement('a:tint');
- $objWriter->writeAttribute('val', '37000');
- $objWriter->endElement();
-
- // a:satMod
- $objWriter->startElement('a:satMod');
- $objWriter->writeAttribute('val', '300000');
- $objWriter->endElement();
-
- $objWriter->endElement();
-
- $objWriter->endElement();
-
- // a:gs
- $objWriter->startElement('a:gs');
- $objWriter->writeAttribute('pos', '100000');
-
- // a:schemeClr
- $objWriter->startElement('a:schemeClr');
- $objWriter->writeAttribute('val', 'phClr');
-
- // a:tint
- $objWriter->startElement('a:tint');
- $objWriter->writeAttribute('val', '15000');
- $objWriter->endElement();
-
- // a:satMod
- $objWriter->startElement('a:satMod');
- $objWriter->writeAttribute('val', '350000');
- $objWriter->endElement();
-
- $objWriter->endElement();
-
- $objWriter->endElement();
-
- $objWriter->endElement();
-
- // a:lin
- $objWriter->startElement('a:lin');
- $objWriter->writeAttribute('ang', '16200000');
- $objWriter->writeAttribute('scaled', '1');
- $objWriter->endElement();
-
- $objWriter->endElement();
-
- // a:gradFill
- $objWriter->startElement('a:gradFill');
- $objWriter->writeAttribute('rotWithShape', '1');
-
- // a:gsLst
- $objWriter->startElement('a:gsLst');
-
- // a:gs
- $objWriter->startElement('a:gs');
- $objWriter->writeAttribute('pos', '0');
-
- // a:schemeClr
- $objWriter->startElement('a:schemeClr');
- $objWriter->writeAttribute('val', 'phClr');
-
- // a:shade
- $objWriter->startElement('a:shade');
- $objWriter->writeAttribute('val', '51000');
- $objWriter->endElement();
-
- // a:satMod
- $objWriter->startElement('a:satMod');
- $objWriter->writeAttribute('val', '130000');
- $objWriter->endElement();
-
- $objWriter->endElement();
-
- $objWriter->endElement();
-
- // a:gs
- $objWriter->startElement('a:gs');
- $objWriter->writeAttribute('pos', '80000');
-
- // a:schemeClr
- $objWriter->startElement('a:schemeClr');
- $objWriter->writeAttribute('val', 'phClr');
-
- // a:shade
- $objWriter->startElement('a:shade');
- $objWriter->writeAttribute('val', '93000');
- $objWriter->endElement();
-
- // a:satMod
- $objWriter->startElement('a:satMod');
- $objWriter->writeAttribute('val', '130000');
- $objWriter->endElement();
-
- $objWriter->endElement();
-
- $objWriter->endElement();
-
- // a:gs
- $objWriter->startElement('a:gs');
- $objWriter->writeAttribute('pos', '100000');
-
- // a:schemeClr
- $objWriter->startElement('a:schemeClr');
- $objWriter->writeAttribute('val', 'phClr');
-
- // a:shade
- $objWriter->startElement('a:shade');
- $objWriter->writeAttribute('val', '94000');
- $objWriter->endElement();
-
- // a:satMod
- $objWriter->startElement('a:satMod');
- $objWriter->writeAttribute('val', '135000');
- $objWriter->endElement();
-
- $objWriter->endElement();
-
- $objWriter->endElement();
-
- $objWriter->endElement();
-
- // a:lin
- $objWriter->startElement('a:lin');
- $objWriter->writeAttribute('ang', '16200000');
- $objWriter->writeAttribute('scaled', '0');
- $objWriter->endElement();
-
- $objWriter->endElement();
-
- $objWriter->endElement();
-
- // a:lnStyleLst
- $objWriter->startElement('a:lnStyleLst');
-
- // a:ln
- $objWriter->startElement('a:ln');
- $objWriter->writeAttribute('w', '9525');
- $objWriter->writeAttribute('cap', 'flat');
- $objWriter->writeAttribute('cmpd', 'sng');
- $objWriter->writeAttribute('algn', 'ctr');
-
- // a:solidFill
- $objWriter->startElement('a:solidFill');
-
- // a:schemeClr
- $objWriter->startElement('a:schemeClr');
- $objWriter->writeAttribute('val', 'phClr');
-
- // a:shade
- $objWriter->startElement('a:shade');
- $objWriter->writeAttribute('val', '95000');
- $objWriter->endElement();
-
- // a:satMod
- $objWriter->startElement('a:satMod');
- $objWriter->writeAttribute('val', '105000');
- $objWriter->endElement();
-
- $objWriter->endElement();
-
- $objWriter->endElement();
-
- // a:prstDash
- $objWriter->startElement('a:prstDash');
- $objWriter->writeAttribute('val', 'solid');
- $objWriter->endElement();
-
- $objWriter->endElement();
-
- // a:ln
- $objWriter->startElement('a:ln');
- $objWriter->writeAttribute('w', '25400');
- $objWriter->writeAttribute('cap', 'flat');
- $objWriter->writeAttribute('cmpd', 'sng');
- $objWriter->writeAttribute('algn', 'ctr');
-
- // a:solidFill
- $objWriter->startElement('a:solidFill');
-
- // a:schemeClr
- $objWriter->startElement('a:schemeClr');
- $objWriter->writeAttribute('val', 'phClr');
- $objWriter->endElement();
-
- $objWriter->endElement();
-
- // a:prstDash
- $objWriter->startElement('a:prstDash');
- $objWriter->writeAttribute('val', 'solid');
- $objWriter->endElement();
-
- $objWriter->endElement();
-
- // a:ln
- $objWriter->startElement('a:ln');
- $objWriter->writeAttribute('w', '38100');
- $objWriter->writeAttribute('cap', 'flat');
- $objWriter->writeAttribute('cmpd', 'sng');
- $objWriter->writeAttribute('algn', 'ctr');
-
- // a:solidFill
- $objWriter->startElement('a:solidFill');
-
- // a:schemeClr
- $objWriter->startElement('a:schemeClr');
- $objWriter->writeAttribute('val', 'phClr');
- $objWriter->endElement();
-
- $objWriter->endElement();
-
- // a:prstDash
- $objWriter->startElement('a:prstDash');
- $objWriter->writeAttribute('val', 'solid');
- $objWriter->endElement();
-
- $objWriter->endElement();
-
- $objWriter->endElement();
-
-
-
- // a:effectStyleLst
- $objWriter->startElement('a:effectStyleLst');
-
- // a:effectStyle
- $objWriter->startElement('a:effectStyle');
-
- // a:effectLst
- $objWriter->startElement('a:effectLst');
-
- // a:outerShdw
- $objWriter->startElement('a:outerShdw');
- $objWriter->writeAttribute('blurRad', '40000');
- $objWriter->writeAttribute('dist', '20000');
- $objWriter->writeAttribute('dir', '5400000');
- $objWriter->writeAttribute('rotWithShape', '0');
-
- // a:srgbClr
- $objWriter->startElement('a:srgbClr');
- $objWriter->writeAttribute('val', '000000');
-
- // a:alpha
- $objWriter->startElement('a:alpha');
- $objWriter->writeAttribute('val', '38000');
- $objWriter->endElement();
-
- $objWriter->endElement();
-
- $objWriter->endElement();
-
- $objWriter->endElement();
-
- $objWriter->endElement();
-
- // a:effectStyle
- $objWriter->startElement('a:effectStyle');
-
- // a:effectLst
- $objWriter->startElement('a:effectLst');
-
- // a:outerShdw
- $objWriter->startElement('a:outerShdw');
- $objWriter->writeAttribute('blurRad', '40000');
- $objWriter->writeAttribute('dist', '23000');
- $objWriter->writeAttribute('dir', '5400000');
- $objWriter->writeAttribute('rotWithShape', '0');
-
- // a:srgbClr
- $objWriter->startElement('a:srgbClr');
- $objWriter->writeAttribute('val', '000000');
-
- // a:alpha
- $objWriter->startElement('a:alpha');
- $objWriter->writeAttribute('val', '35000');
- $objWriter->endElement();
-
- $objWriter->endElement();
-
- $objWriter->endElement();
-
- $objWriter->endElement();
-
- $objWriter->endElement();
-
- // a:effectStyle
- $objWriter->startElement('a:effectStyle');
-
- // a:effectLst
- $objWriter->startElement('a:effectLst');
-
- // a:outerShdw
- $objWriter->startElement('a:outerShdw');
- $objWriter->writeAttribute('blurRad', '40000');
- $objWriter->writeAttribute('dist', '23000');
- $objWriter->writeAttribute('dir', '5400000');
- $objWriter->writeAttribute('rotWithShape', '0');
-
- // a:srgbClr
- $objWriter->startElement('a:srgbClr');
- $objWriter->writeAttribute('val', '000000');
-
- // a:alpha
- $objWriter->startElement('a:alpha');
- $objWriter->writeAttribute('val', '35000');
- $objWriter->endElement();
-
- $objWriter->endElement();
-
- $objWriter->endElement();
-
- $objWriter->endElement();
-
- // a:scene3d
- $objWriter->startElement('a:scene3d');
-
- // a:camera
- $objWriter->startElement('a:camera');
- $objWriter->writeAttribute('prst', 'orthographicFront');
-
- // a:rot
- $objWriter->startElement('a:rot');
- $objWriter->writeAttribute('lat', '0');
- $objWriter->writeAttribute('lon', '0');
- $objWriter->writeAttribute('rev', '0');
- $objWriter->endElement();
-
- $objWriter->endElement();
-
- // a:lightRig
- $objWriter->startElement('a:lightRig');
- $objWriter->writeAttribute('rig', 'threePt');
- $objWriter->writeAttribute('dir', 't');
-
- // a:rot
- $objWriter->startElement('a:rot');
- $objWriter->writeAttribute('lat', '0');
- $objWriter->writeAttribute('lon', '0');
- $objWriter->writeAttribute('rev', '1200000');
- $objWriter->endElement();
-
- $objWriter->endElement();
-
- $objWriter->endElement();
-
- // a:sp3d
- $objWriter->startElement('a:sp3d');
-
- // a:bevelT
- $objWriter->startElement('a:bevelT');
- $objWriter->writeAttribute('w', '63500');
- $objWriter->writeAttribute('h', '25400');
- $objWriter->endElement();
-
- $objWriter->endElement();
-
- $objWriter->endElement();
-
- $objWriter->endElement();
-
- // a:bgFillStyleLst
- $objWriter->startElement('a:bgFillStyleLst');
-
- // a:solidFill
- $objWriter->startElement('a:solidFill');
-
- // a:schemeClr
- $objWriter->startElement('a:schemeClr');
- $objWriter->writeAttribute('val', 'phClr');
- $objWriter->endElement();
-
- $objWriter->endElement();
-
- // a:gradFill
- $objWriter->startElement('a:gradFill');
- $objWriter->writeAttribute('rotWithShape', '1');
-
- // a:gsLst
- $objWriter->startElement('a:gsLst');
-
- // a:gs
- $objWriter->startElement('a:gs');
- $objWriter->writeAttribute('pos', '0');
-
- // a:schemeClr
- $objWriter->startElement('a:schemeClr');
- $objWriter->writeAttribute('val', 'phClr');
-
- // a:tint
- $objWriter->startElement('a:tint');
- $objWriter->writeAttribute('val', '40000');
- $objWriter->endElement();
-
- // a:satMod
- $objWriter->startElement('a:satMod');
- $objWriter->writeAttribute('val', '350000');
- $objWriter->endElement();
-
- $objWriter->endElement();
-
- $objWriter->endElement();
-
- // a:gs
- $objWriter->startElement('a:gs');
- $objWriter->writeAttribute('pos', '40000');
-
- // a:schemeClr
- $objWriter->startElement('a:schemeClr');
- $objWriter->writeAttribute('val', 'phClr');
-
- // a:tint
- $objWriter->startElement('a:tint');
- $objWriter->writeAttribute('val', '45000');
- $objWriter->endElement();
-
- // a:shade
- $objWriter->startElement('a:shade');
- $objWriter->writeAttribute('val', '99000');
- $objWriter->endElement();
-
- // a:satMod
- $objWriter->startElement('a:satMod');
- $objWriter->writeAttribute('val', '350000');
- $objWriter->endElement();
-
- $objWriter->endElement();
-
- $objWriter->endElement();
-
- // a:gs
- $objWriter->startElement('a:gs');
- $objWriter->writeAttribute('pos', '100000');
-
- // a:schemeClr
- $objWriter->startElement('a:schemeClr');
- $objWriter->writeAttribute('val', 'phClr');
-
- // a:shade
- $objWriter->startElement('a:shade');
- $objWriter->writeAttribute('val', '20000');
- $objWriter->endElement();
-
- // a:satMod
- $objWriter->startElement('a:satMod');
- $objWriter->writeAttribute('val', '255000');
- $objWriter->endElement();
-
- $objWriter->endElement();
-
- $objWriter->endElement();
-
- $objWriter->endElement();
-
- // a:path
- $objWriter->startElement('a:path');
- $objWriter->writeAttribute('path', 'circle');
-
- // a:fillToRect
- $objWriter->startElement('a:fillToRect');
- $objWriter->writeAttribute('l', '50000');
- $objWriter->writeAttribute('t', '-80000');
- $objWriter->writeAttribute('r', '50000');
- $objWriter->writeAttribute('b', '180000');
- $objWriter->endElement();
-
- $objWriter->endElement();
-
- $objWriter->endElement();
-
- // a:gradFill
- $objWriter->startElement('a:gradFill');
- $objWriter->writeAttribute('rotWithShape', '1');
-
- // a:gsLst
- $objWriter->startElement('a:gsLst');
-
- // a:gs
- $objWriter->startElement('a:gs');
- $objWriter->writeAttribute('pos', '0');
-
- // a:schemeClr
- $objWriter->startElement('a:schemeClr');
- $objWriter->writeAttribute('val', 'phClr');
-
- // a:tint
- $objWriter->startElement('a:tint');
- $objWriter->writeAttribute('val', '80000');
- $objWriter->endElement();
-
- // a:satMod
- $objWriter->startElement('a:satMod');
- $objWriter->writeAttribute('val', '300000');
- $objWriter->endElement();
-
- $objWriter->endElement();
-
- $objWriter->endElement();
-
- // a:gs
- $objWriter->startElement('a:gs');
- $objWriter->writeAttribute('pos', '100000');
-
- // a:schemeClr
- $objWriter->startElement('a:schemeClr');
- $objWriter->writeAttribute('val', 'phClr');
-
- // a:shade
- $objWriter->startElement('a:shade');
- $objWriter->writeAttribute('val', '30000');
- $objWriter->endElement();
-
- // a:satMod
- $objWriter->startElement('a:satMod');
- $objWriter->writeAttribute('val', '200000');
- $objWriter->endElement();
-
- $objWriter->endElement();
-
- $objWriter->endElement();
-
- $objWriter->endElement();
-
- // a:path
- $objWriter->startElement('a:path');
- $objWriter->writeAttribute('path', 'circle');
-
- // a:fillToRect
- $objWriter->startElement('a:fillToRect');
- $objWriter->writeAttribute('l', '50000');
- $objWriter->writeAttribute('t', '50000');
- $objWriter->writeAttribute('r', '50000');
- $objWriter->writeAttribute('b', '50000');
- $objWriter->endElement();
-
- $objWriter->endElement();
-
- $objWriter->endElement();
-
- $objWriter->endElement();
-
- $objWriter->endElement();
-
- $objWriter->endElement();
-
- // a:objectDefaults
- $objWriter->writeElement('a:objectDefaults', null);
-
- // a:extraClrSchemeLst
- $objWriter->writeElement('a:extraClrSchemeLst', null);
-
- $objWriter->endElement();
-
- // Return
- return $objWriter->getData();
- }
-
- /**
- * Write fonts to XML format
- *
- * @param PHPExcel_Shared_XMLWriter $objWriter
- * @param string $latinFont
- * @param array of string $fontSet
- * @return string XML Output
- * @throws Exception
- */
- private function _writeFonts($objWriter, $latinFont, $fontSet)
- {
- // a:latin
- $objWriter->startElement('a:latin');
- $objWriter->writeAttribute('typeface', $latinFont);
- $objWriter->endElement();
-
- // a:ea
- $objWriter->startElement('a:ea');
- $objWriter->writeAttribute('typeface', '');
- $objWriter->endElement();
-
- // a:cs
- $objWriter->startElement('a:cs');
- $objWriter->writeAttribute('typeface', '');
- $objWriter->endElement();
-
- foreach($fontSet as $fontScript => $typeface) {
- $objWriter->startElement('a:font');
- $objWriter->writeAttribute('script', $fontScript);
- $objWriter->writeAttribute('typeface', $typeface);
- $objWriter->endElement();
- }
-
- }
-
- /**
- * Write colour scheme to XML format
- *
- * @param PHPExcel_Shared_XMLWriter $objWriter
- * @return string XML Output
- * @throws Exception
- */
- private function _writeColourScheme($objWriter)
- {
- foreach(self::$_colourScheme as $colourName => $colourValue) {
- $objWriter->startElement('a:'.$colourName);
-
- $objWriter->startElement('a:srgbClr');
- $objWriter->writeAttribute('val', $colourValue);
- $objWriter->endElement();
-
- $objWriter->endElement();
- }
-
- }
-}
diff --git a/admin/survey/excel/PHPExcel/Writer/Excel2007/Workbook.php b/admin/survey/excel/PHPExcel/Writer/Excel2007/Workbook.php
deleted file mode 100644
index 45b853b..0000000
--- a/admin/survey/excel/PHPExcel/Writer/Excel2007/Workbook.php
+++ /dev/null
@@ -1,452 +0,0 @@
-<?php
-/**
- * PHPExcel
- *
- * Copyright (c) 2006 - 2012 PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel_Writer_Excel2007
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-
-/**
- * PHPExcel_Writer_Excel2007_Workbook
- *
- * @category PHPExcel
- * @package PHPExcel_Writer_Excel2007
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- */
-class PHPExcel_Writer_Excel2007_Workbook extends PHPExcel_Writer_Excel2007_WriterPart
-{
- /**
- * Write workbook to XML format
- *
- * @param PHPExcel $pPHPExcel
- * @param boolean $recalcRequired Indicate whether formulas should be recalculated before writing
- * @return string XML Output
- * @throws Exception
- */
- public function writeWorkbook(PHPExcel $pPHPExcel = null, $recalcRequired = FALSE)
- {
- // Create XML writer
- $objWriter = null;
- if ($this->getParentWriter()->getUseDiskCaching()) {
- $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_DISK, $this->getParentWriter()->getDiskCachingDirectory());
- } else {
- $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_MEMORY);
- }
-
- // XML header
- $objWriter->startDocument('1.0','UTF-8','yes');
-
- // workbook
- $objWriter->startElement('workbook');
- $objWriter->writeAttribute('xml:space', 'preserve');
- $objWriter->writeAttribute('xmlns', 'http://schemas.openxmlformats.org/spreadsheetml/2006/main');
- $objWriter->writeAttribute('xmlns:r', 'http://schemas.openxmlformats.org/officeDocument/2006/relationships');
-
- // fileVersion
- $this->_writeFileVersion($objWriter);
-
- // workbookPr
- $this->_writeWorkbookPr($objWriter);
-
- // workbookProtection
- $this->_writeWorkbookProtection($objWriter, $pPHPExcel);
-
- // bookViews
- if ($this->getParentWriter()->getOffice2003Compatibility() === false) {
- $this->_writeBookViews($objWriter, $pPHPExcel);
- }
-
- // sheets
- $this->_writeSheets($objWriter, $pPHPExcel);
-
- // definedNames
- $this->_writeDefinedNames($objWriter, $pPHPExcel);
-
- // calcPr
- $this->_writeCalcPr($objWriter,$recalcRequired);
-
- $objWriter->endElement();
-
- // Return
- return $objWriter->getData();
- }
-
- /**
- * Write file version
- *
- * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer
- * @throws Exception
- */
- private function _writeFileVersion(PHPExcel_Shared_XMLWriter $objWriter = null)
- {
- $objWriter->startElement('fileVersion');
- $objWriter->writeAttribute('appName', 'xl');
- $objWriter->writeAttribute('lastEdited', '4');
- $objWriter->writeAttribute('lowestEdited', '4');
- $objWriter->writeAttribute('rupBuild', '4505');
- $objWriter->endElement();
- }
-
- /**
- * Write WorkbookPr
- *
- * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer
- * @throws Exception
- */
- private function _writeWorkbookPr(PHPExcel_Shared_XMLWriter $objWriter = null)
- {
- $objWriter->startElement('workbookPr');
-
- if (PHPExcel_Shared_Date::getExcelCalendar() == PHPExcel_Shared_Date::CALENDAR_MAC_1904) {
- $objWriter->writeAttribute('date1904', '1');
- }
-
- $objWriter->writeAttribute('codeName', 'ThisWorkbook');
-
- $objWriter->endElement();
- }
-
- /**
- * Write BookViews
- *
- * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer
- * @param PHPExcel $pPHPExcel
- * @throws Exception
- */
- private function _writeBookViews(PHPExcel_Shared_XMLWriter $objWriter = null, PHPExcel $pPHPExcel = null)
- {
- // bookViews
- $objWriter->startElement('bookViews');
-
- // workbookView
- $objWriter->startElement('workbookView');
-
- $objWriter->writeAttribute('activeTab', $pPHPExcel->getActiveSheetIndex());
- $objWriter->writeAttribute('autoFilterDateGrouping', '1');
- $objWriter->writeAttribute('firstSheet', '0');
- $objWriter->writeAttribute('minimized', '0');
- $objWriter->writeAttribute('showHorizontalScroll', '1');
- $objWriter->writeAttribute('showSheetTabs', '1');
- $objWriter->writeAttribute('showVerticalScroll', '1');
- $objWriter->writeAttribute('tabRatio', '600');
- $objWriter->writeAttribute('visibility', 'visible');
-
- $objWriter->endElement();
-
- $objWriter->endElement();
- }
-
- /**
- * Write WorkbookProtection
- *
- * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer
- * @param PHPExcel $pPHPExcel
- * @throws Exception
- */
- private function _writeWorkbookProtection(PHPExcel_Shared_XMLWriter $objWriter = null, PHPExcel $pPHPExcel = null)
- {
- if ($pPHPExcel->getSecurity()->isSecurityEnabled()) {
- $objWriter->startElement('workbookProtection');
- $objWriter->writeAttribute('lockRevision', ($pPHPExcel->getSecurity()->getLockRevision() ? 'true' : 'false'));
- $objWriter->writeAttribute('lockStructure', ($pPHPExcel->getSecurity()->getLockStructure() ? 'true' : 'false'));
- $objWriter->writeAttribute('lockWindows', ($pPHPExcel->getSecurity()->getLockWindows() ? 'true' : 'false'));
-
- if ($pPHPExcel->getSecurity()->getRevisionsPassword() != '') {
- $objWriter->writeAttribute('revisionsPassword', $pPHPExcel->getSecurity()->getRevisionsPassword());
- }
-
- if ($pPHPExcel->getSecurity()->getWorkbookPassword() != '') {
- $objWriter->writeAttribute('workbookPassword', $pPHPExcel->getSecurity()->getWorkbookPassword());
- }
-
- $objWriter->endElement();
- }
- }
-
- /**
- * Write calcPr
- *
- * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer
- * @param boolean $recalcRequired Indicate whether formulas should be recalculated before writing
- * @throws Exception
- */
- private function _writeCalcPr(PHPExcel_Shared_XMLWriter $objWriter = null, $recalcRequired = TRUE)
- {
- $objWriter->startElement('calcPr');
-
- $objWriter->writeAttribute('calcId', '124519');
- $objWriter->writeAttribute('calcMode', 'auto');
- // fullCalcOnLoad isn't needed if we've recalculating for the save
- $objWriter->writeAttribute('fullCalcOnLoad', ($recalcRequired) ? '0' : '1');
-
- $objWriter->endElement();
- }
-
- /**
- * Write sheets
- *
- * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer
- * @param PHPExcel $pPHPExcel
- * @throws Exception
- */
- private function _writeSheets(PHPExcel_Shared_XMLWriter $objWriter = null, PHPExcel $pPHPExcel = null)
- {
- // Write sheets
- $objWriter->startElement('sheets');
- $sheetCount = $pPHPExcel->getSheetCount();
- for ($i = 0; $i < $sheetCount; ++$i) {
- // sheet
- $this->_writeSheet(
- $objWriter,
- $pPHPExcel->getSheet($i)->getTitle(),
- ($i + 1),
- ($i + 1 + 3),
- $pPHPExcel->getSheet($i)->getSheetState()
- );
- }
-
- $objWriter->endElement();
- }
-
- /**
- * Write sheet
- *
- * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer
- * @param string $pSheetname Sheet name
- * @param int $pSheetId Sheet id
- * @param int $pRelId Relationship ID
- * @param string $sheetState Sheet state (visible, hidden, veryHidden)
- * @throws Exception
- */
- private function _writeSheet(PHPExcel_Shared_XMLWriter $objWriter = null, $pSheetname = '', $pSheetId = 1, $pRelId = 1, $sheetState = 'visible')
- {
- if ($pSheetname != '') {
- // Write sheet
- $objWriter->startElement('sheet');
- $objWriter->writeAttribute('name', $pSheetname);
- $objWriter->writeAttribute('sheetId', $pSheetId);
- if ($sheetState != 'visible' && $sheetState != '') {
- $objWriter->writeAttribute('state', $sheetState);
- }
- $objWriter->writeAttribute('r:id', 'rId' . $pRelId);
- $objWriter->endElement();
- } else {
- throw new Exception("Invalid parameters passed.");
- }
- }
-
- /**
- * Write Defined Names
- *
- * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer
- * @param PHPExcel $pPHPExcel
- * @throws Exception
- */
- private function _writeDefinedNames(PHPExcel_Shared_XMLWriter $objWriter = null, PHPExcel $pPHPExcel = null)
- {
- // Write defined names
- $objWriter->startElement('definedNames');
-
- // Named ranges
- if (count($pPHPExcel->getNamedRanges()) > 0) {
- // Named ranges
- $this->_writeNamedRanges($objWriter, $pPHPExcel);
- }
-
- // Other defined names
- $sheetCount = $pPHPExcel->getSheetCount();
- for ($i = 0; $i < $sheetCount; ++$i) {
- // definedName for autoFilter
- $this->_writeDefinedNameForAutofilter($objWriter, $pPHPExcel->getSheet($i), $i);
-
- // definedName for Print_Titles
- $this->_writeDefinedNameForPrintTitles($objWriter, $pPHPExcel->getSheet($i), $i);
-
- // definedName for Print_Area
- $this->_writeDefinedNameForPrintArea($objWriter, $pPHPExcel->getSheet($i), $i);
- }
-
- $objWriter->endElement();
- }
-
- /**
- * Write named ranges
- *
- * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer
- * @param PHPExcel $pPHPExcel
- * @throws Exception
- */
- private function _writeNamedRanges(PHPExcel_Shared_XMLWriter $objWriter = null, PHPExcel $pPHPExcel)
- {
- // Loop named ranges
- $namedRanges = $pPHPExcel->getNamedRanges();
- foreach ($namedRanges as $namedRange) {
- $this->_writeDefinedNameForNamedRange($objWriter, $namedRange);
- }
- }
-
- /**
- * Write Defined Name for named range
- *
- * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer
- * @param PHPExcel_NamedRange $pNamedRange
- * @throws Exception
- */
- private function _writeDefinedNameForNamedRange(PHPExcel_Shared_XMLWriter $objWriter = null, PHPExcel_NamedRange $pNamedRange)
- {
- // definedName for named range
- $objWriter->startElement('definedName');
- $objWriter->writeAttribute('name', $pNamedRange->getName());
- if ($pNamedRange->getLocalOnly()) {
- $objWriter->writeAttribute('localSheetId', $pNamedRange->getScope()->getParent()->getIndex($pNamedRange->getScope()));
- }
-
- // Create absolute coordinate and write as raw text
- $range = PHPExcel_Cell::splitRange($pNamedRange->getRange());
- for ($i = 0; $i < count($range); $i++) {
- $range[$i][0] = '\'' . str_replace("'", "''", $pNamedRange->getWorksheet()->getTitle()) . '\'!' . PHPExcel_Cell::absoluteReference($range[$i][0]);
- if (isset($range[$i][1])) {
- $range[$i][1] = PHPExcel_Cell::absoluteReference($range[$i][1]);
- }
- }
- $range = PHPExcel_Cell::buildRange($range);
-
- $objWriter->writeRawData($range);
-
- $objWriter->endElement();
- }
-
- /**
- * Write Defined Name for autoFilter
- *
- * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer
- * @param PHPExcel_Worksheet $pSheet
- * @param int $pSheetId
- * @throws Exception
- */
- private function _writeDefinedNameForAutofilter(PHPExcel_Shared_XMLWriter $objWriter = null, PHPExcel_Worksheet $pSheet = null, $pSheetId = 0)
- {
- // definedName for autoFilter
- $autoFilterRange = $pSheet->getAutoFilter()->getRange();
- if (!empty($autoFilterRange)) {
- $objWriter->startElement('definedName');
- $objWriter->writeAttribute('name', '_xlnm._FilterDatabase');
- $objWriter->writeAttribute('localSheetId', $pSheetId);
- $objWriter->writeAttribute('hidden', '1');
-
- // Create absolute coordinate and write as raw text
- $range = PHPExcel_Cell::splitRange($autoFilterRange);
- $range = $range[0];
- // Strip any worksheet ref so we can make the cell ref absolute
- if (strpos($range[0],'!') !== false) {
- list($ws,$range[0]) = explode('!',$range[0]);
- }
-
- $range[0] = PHPExcel_Cell::absoluteCoordinate($range[0]);
- $range[1] = PHPExcel_Cell::absoluteCoordinate($range[1]);
- $range = implode(':', $range);
-
- $objWriter->writeRawData('\'' . str_replace("'", "''", $pSheet->getTitle()) . '\'!' . $range);
-
- $objWriter->endElement();
- }
- }
-
- /**
- * Write Defined Name for PrintTitles
- *
- * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer
- * @param PHPExcel_Worksheet $pSheet
- * @param int $pSheetId
- * @throws Exception
- */
- private function _writeDefinedNameForPrintTitles(PHPExcel_Shared_XMLWriter $objWriter = null, PHPExcel_Worksheet $pSheet = null, $pSheetId = 0)
- {
- // definedName for PrintTitles
- if ($pSheet->getPageSetup()->isColumnsToRepeatAtLeftSet() || $pSheet->getPageSetup()->isRowsToRepeatAtTopSet()) {
- $objWriter->startElement('definedName');
- $objWriter->writeAttribute('name', '_xlnm.Print_Titles');
- $objWriter->writeAttribute('localSheetId', $pSheetId);
-
- // Setting string
- $settingString = '';
-
- // Columns to repeat
- if ($pSheet->getPageSetup()->isColumnsToRepeatAtLeftSet()) {
- $repeat = $pSheet->getPageSetup()->getColumnsToRepeatAtLeft();
-
- $settingString .= '\'' . str_replace("'", "''", $pSheet->getTitle()) . '\'!$' . $repeat[0] . ':$' . $repeat[1];
- }
-
- // Rows to repeat
- if ($pSheet->getPageSetup()->isRowsToRepeatAtTopSet()) {
- if ($pSheet->getPageSetup()->isColumnsToRepeatAtLeftSet()) {
- $settingString .= ',';
- }
-
- $repeat = $pSheet->getPageSetup()->getRowsToRepeatAtTop();
-
- $settingString .= '\'' . str_replace("'", "''", $pSheet->getTitle()) . '\'!$' . $repeat[0] . ':$' . $repeat[1];
- }
-
- $objWriter->writeRawData($settingString);
-
- $objWriter->endElement();
- }
- }
-
- /**
- * Write Defined Name for PrintTitles
- *
- * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer
- * @param PHPExcel_Worksheet $pSheet
- * @param int $pSheetId
- * @throws Exception
- */
- private function _writeDefinedNameForPrintArea(PHPExcel_Shared_XMLWriter $objWriter = null, PHPExcel_Worksheet $pSheet = null, $pSheetId = 0)
- {
- // definedName for PrintArea
- if ($pSheet->getPageSetup()->isPrintAreaSet()) {
- $objWriter->startElement('definedName');
- $objWriter->writeAttribute('name', '_xlnm.Print_Area');
- $objWriter->writeAttribute('localSheetId', $pSheetId);
-
- // Setting string
- $settingString = '';
-
- // Print area
- $printArea = PHPExcel_Cell::splitRange($pSheet->getPageSetup()->getPrintArea());
-
- $chunks = array();
- foreach ($printArea as $printAreaRect) {
- $printAreaRect[0] = PHPExcel_Cell::absoluteReference($printAreaRect[0]);
- $printAreaRect[1] = PHPExcel_Cell::absoluteReference($printAreaRect[1]);
- $chunks[] = '\'' . str_replace("'", "''", $pSheet->getTitle()) . '\'!' . implode(':', $printAreaRect);
- }
-
- $objWriter->writeRawData(implode(',', $chunks));
-
- $objWriter->endElement();
- }
- }
-}
diff --git a/admin/survey/excel/PHPExcel/Writer/Excel2007/Worksheet.php b/admin/survey/excel/PHPExcel/Writer/Excel2007/Worksheet.php
deleted file mode 100644
index 9f4839b..0000000
--- a/admin/survey/excel/PHPExcel/Writer/Excel2007/Worksheet.php
+++ /dev/null
@@ -1,1215 +0,0 @@
-<?php
-/**
- * PHPExcel
- *
- * Copyright (c) 2006 - 2012 PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel_Writer_Excel2007
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-
-/**
- * PHPExcel_Writer_Excel2007_Worksheet
- *
- * @category PHPExcel
- * @package PHPExcel_Writer_Excel2007
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- */
-class PHPExcel_Writer_Excel2007_Worksheet extends PHPExcel_Writer_Excel2007_WriterPart
-{
- /**
- * Write worksheet to XML format
- *
- * @param PHPExcel_Worksheet $pSheet
- * @param string[] $pStringTable
- * @param boolean $includeCharts Flag indicating if we should write charts
- * @return string XML Output
- * @throws Exception
- */
- public function writeWorksheet($pSheet = null, $pStringTable = null, $includeCharts = FALSE)
- {
- if (!is_null($pSheet)) {
- // Create XML writer
- $objWriter = null;
- if ($this->getParentWriter()->getUseDiskCaching()) {
- $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_DISK, $this->getParentWriter()->getDiskCachingDirectory());
- } else {
- $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_MEMORY);
- }
-
- // XML header
- $objWriter->startDocument('1.0','UTF-8','yes');
-
- // Worksheet
- $objWriter->startElement('worksheet');
- $objWriter->writeAttribute('xml:space', 'preserve');
- $objWriter->writeAttribute('xmlns', 'http://schemas.openxmlformats.org/spreadsheetml/2006/main');
- $objWriter->writeAttribute('xmlns:r', 'http://schemas.openxmlformats.org/officeDocument/2006/relationships');
-
- // sheetPr
- $this->_writeSheetPr($objWriter, $pSheet);
-
- // Dimension
- $this->_writeDimension($objWriter, $pSheet);
-
- // sheetViews
- $this->_writeSheetViews($objWriter, $pSheet);
-
- // sheetFormatPr
- $this->_writeSheetFormatPr($objWriter, $pSheet);
-
- // cols
- $this->_writeCols($objWriter, $pSheet);
-
- // sheetData
- $this->_writeSheetData($objWriter, $pSheet, $pStringTable);
-
- // sheetProtection
- $this->_writeSheetProtection($objWriter, $pSheet);
-
- // protectedRanges
- $this->_writeProtectedRanges($objWriter, $pSheet);
-
- // autoFilter
- $this->_writeAutoFilter($objWriter, $pSheet);
-
- // mergeCells
- $this->_writeMergeCells($objWriter, $pSheet);
-
- // conditionalFormatting
- $this->_writeConditionalFormatting($objWriter, $pSheet);
-
- // dataValidations
- $this->_writeDataValidations($objWriter, $pSheet);
-
- // hyperlinks
- $this->_writeHyperlinks($objWriter, $pSheet);
-
- // Print options
- $this->_writePrintOptions($objWriter, $pSheet);
-
- // Page margins
- $this->_writePageMargins($objWriter, $pSheet);
-
- // Page setup
- $this->_writePageSetup($objWriter, $pSheet);
-
- // Header / footer
- $this->_writeHeaderFooter($objWriter, $pSheet);
-
- // Breaks
- $this->_writeBreaks($objWriter, $pSheet);
-
- // Drawings and/or Charts
- $this->_writeDrawings($objWriter, $pSheet, $includeCharts);
-
- // LegacyDrawing
- $this->_writeLegacyDrawing($objWriter, $pSheet);
-
- // LegacyDrawingHF
- $this->_writeLegacyDrawingHF($objWriter, $pSheet);
-
- $objWriter->endElement();
-
- // Return
- return $objWriter->getData();
- } else {
- throw new Exception("Invalid PHPExcel_Worksheet object passed.");
- }
- }
-
- /**
- * Write SheetPr
- *
- * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer
- * @param PHPExcel_Worksheet $pSheet Worksheet
- * @throws Exception
- */
- private function _writeSheetPr(PHPExcel_Shared_XMLWriter $objWriter = null, PHPExcel_Worksheet $pSheet = null)
- {
- // sheetPr
- $objWriter->startElement('sheetPr');
- //$objWriter->writeAttribute('codeName', $pSheet->getTitle());
- $autoFilterRange = $pSheet->getAutoFilter()->getRange();
- if (!empty($autoFilterRange)) {
- $objWriter->writeAttribute('filterMode', 1);
- $pSheet->getAutoFilter()->showHideRows();
- }
-
- // tabColor
- if ($pSheet->isTabColorSet()) {
- $objWriter->startElement('tabColor');
- $objWriter->writeAttribute('rgb', $pSheet->getTabColor()->getARGB());
- $objWriter->endElement();
- }
-
- // outlinePr
- $objWriter->startElement('outlinePr');
- $objWriter->writeAttribute('summaryBelow', ($pSheet->getShowSummaryBelow() ? '1' : '0'));
- $objWriter->writeAttribute('summaryRight', ($pSheet->getShowSummaryRight() ? '1' : '0'));
- $objWriter->endElement();
-
- // pageSetUpPr
- if ($pSheet->getPageSetup()->getFitToPage()) {
- $objWriter->startElement('pageSetUpPr');
- $objWriter->writeAttribute('fitToPage', '1');
- $objWriter->endElement();
- }
-
- $objWriter->endElement();
- }
-
- /**
- * Write Dimension
- *
- * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer
- * @param PHPExcel_Worksheet $pSheet Worksheet
- * @throws Exception
- */
- private function _writeDimension(PHPExcel_Shared_XMLWriter $objWriter = null, PHPExcel_Worksheet $pSheet = null)
- {
- // dimension
- $objWriter->startElement('dimension');
- $objWriter->writeAttribute('ref', $pSheet->calculateWorksheetDimension());
- $objWriter->endElement();
- }
-
- /**
- * Write SheetViews
- *
- * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer
- * @param PHPExcel_Worksheet $pSheet Worksheet
- * @throws Exception
- */
- private function _writeSheetViews(PHPExcel_Shared_XMLWriter $objWriter = NULL, PHPExcel_Worksheet $pSheet = NULL)
- {
- // sheetViews
- $objWriter->startElement('sheetViews');
-
- // Sheet selected?
- $sheetSelected = false;
- if ($this->getParentWriter()->getPHPExcel()->getIndex($pSheet) == $this->getParentWriter()->getPHPExcel()->getActiveSheetIndex())
- $sheetSelected = true;
-
-
- // sheetView
- $objWriter->startElement('sheetView');
- $objWriter->writeAttribute('tabSelected', $sheetSelected ? '1' : '0');
- $objWriter->writeAttribute('workbookViewId', '0');
-
- // Zoom scales
- if ($pSheet->getSheetView()->getZoomScale() != 100) {
- $objWriter->writeAttribute('zoomScale', $pSheet->getSheetView()->getZoomScale());
- }
- if ($pSheet->getSheetView()->getZoomScaleNormal() != 100) {
- $objWriter->writeAttribute('zoomScaleNormal', $pSheet->getSheetView()->getZoomScaleNormal());
- }
-
- // View Layout Type
- if ($pSheet->getSheetView()->getView() !== PHPExcel_Worksheet_SheetView::SHEETVIEW_NORMAL) {
- $objWriter->writeAttribute('view', $pSheet->getSheetView()->getView());
- }
-
- // Gridlines
- if ($pSheet->getShowGridlines()) {
- $objWriter->writeAttribute('showGridLines', 'true');
- } else {
- $objWriter->writeAttribute('showGridLines', 'false');
- }
-
- // Row and column headers
- if ($pSheet->getShowRowColHeaders()) {
- $objWriter->writeAttribute('showRowColHeaders', '1');
- } else {
- $objWriter->writeAttribute('showRowColHeaders', '0');
- }
-
- // Right-to-left
- if ($pSheet->getRightToLeft()) {
- $objWriter->writeAttribute('rightToLeft', 'true');
- }
-
- $activeCell = $pSheet->getActiveCell();
-
- // Pane
- $pane = '';
- $topLeftCell = $pSheet->getFreezePane();
- if (($topLeftCell != '') && ($topLeftCell != 'A1')) {
- $activeCell = $topLeftCell;
- // Calculate freeze coordinates
- $xSplit = $ySplit = 0;
-
- list($xSplit, $ySplit) = PHPExcel_Cell::coordinateFromString($topLeftCell);
- $xSplit = PHPExcel_Cell::columnIndexFromString($xSplit);
-
- // pane
- $pane = 'topRight';
- $objWriter->startElement('pane');
- if ($xSplit > 1)
- $objWriter->writeAttribute('xSplit', $xSplit - 1);
- if ($ySplit > 1) {
- $objWriter->writeAttribute('ySplit', $ySplit - 1);
- $pane = ($xSplit > 1) ? 'bottomRight' : 'bottomLeft';
- }
- $objWriter->writeAttribute('topLeftCell', $topLeftCell);
- $objWriter->writeAttribute('activePane', $pane);
- $objWriter->writeAttribute('state', 'frozen');
- $objWriter->endElement();
-
- if (($xSplit > 1) && ($ySplit > 1)) {
- // Write additional selections if more than two panes (ie both an X and a Y split)
- $objWriter->startElement('selection'); $objWriter->writeAttribute('pane', 'topRight'); $objWriter->endElement();
- $objWriter->startElement('selection'); $objWriter->writeAttribute('pane', 'bottomLeft'); $objWriter->endElement();
- }
- }
-
- // Selection
-// if ($pane != '') {
- // Only need to write selection element if we have a split pane
- // We cheat a little by over-riding the active cell selection, setting it to the split cell
- $objWriter->startElement('selection');
- if ($pane != '') {
- $objWriter->writeAttribute('pane', $pane);
- }
- $objWriter->writeAttribute('activeCell', $activeCell);
- $objWriter->writeAttribute('sqref', $activeCell);
- $objWriter->endElement();
-// }
-
- $objWriter->endElement();
-
- $objWriter->endElement();
- }
-
- /**
- * Write SheetFormatPr
- *
- * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer
- * @param PHPExcel_Worksheet $pSheet Worksheet
- * @throws Exception
- */
- private function _writeSheetFormatPr(PHPExcel_Shared_XMLWriter $objWriter = null, PHPExcel_Worksheet $pSheet = null)
- {
- // sheetFormatPr
- $objWriter->startElement('sheetFormatPr');
-
- // Default row height
- if ($pSheet->getDefaultRowDimension()->getRowHeight() >= 0) {
- $objWriter->writeAttribute('customHeight', 'true');
- $objWriter->writeAttribute('defaultRowHeight', PHPExcel_Shared_String::FormatNumber($pSheet->getDefaultRowDimension()->getRowHeight()));
- } else {
- $objWriter->writeAttribute('defaultRowHeight', '14.4');
- }
-
- // Set Zero Height row
- if ((string)$pSheet->getDefaultRowDimension()->getzeroHeight() == '1' ||
- strtolower((string)$pSheet->getDefaultRowDimension()->getzeroHeight()) == 'true' ) {
- $objWriter->writeAttribute('zeroHeight', '1');
- }
-
- // Default column width
- if ($pSheet->getDefaultColumnDimension()->getWidth() >= 0) {
- $objWriter->writeAttribute('defaultColWidth', PHPExcel_Shared_String::FormatNumber($pSheet->getDefaultColumnDimension()->getWidth()));
- }
-
- // Outline level - row
- $outlineLevelRow = 0;
- foreach ($pSheet->getRowDimensions() as $dimension) {
- if ($dimension->getOutlineLevel() > $outlineLevelRow) {
- $outlineLevelRow = $dimension->getOutlineLevel();
- }
- }
- $objWriter->writeAttribute('outlineLevelRow', (int)$outlineLevelRow);
-
- // Outline level - column
- $outlineLevelCol = 0;
- foreach ($pSheet->getColumnDimensions() as $dimension) {
- if ($dimension->getOutlineLevel() > $outlineLevelCol) {
- $outlineLevelCol = $dimension->getOutlineLevel();
- }
- }
- $objWriter->writeAttribute('outlineLevelCol', (int)$outlineLevelCol);
-
- $objWriter->endElement();
- }
-
- /**
- * Write Cols
- *
- * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer
- * @param PHPExcel_Worksheet $pSheet Worksheet
- * @throws Exception
- */
- private function _writeCols(PHPExcel_Shared_XMLWriter $objWriter = null, PHPExcel_Worksheet $pSheet = null)
- {
- // cols
- if (count($pSheet->getColumnDimensions()) > 0) {
- $objWriter->startElement('cols');
-
- $pSheet->calculateColumnWidths();
-
- // Loop through column dimensions
- foreach ($pSheet->getColumnDimensions() as $colDimension) {
- // col
- $objWriter->startElement('col');
- $objWriter->writeAttribute('min', PHPExcel_Cell::columnIndexFromString($colDimension->getColumnIndex()));
- $objWriter->writeAttribute('max', PHPExcel_Cell::columnIndexFromString($colDimension->getColumnIndex()));
-
- if ($colDimension->getWidth() < 0) {
- // No width set, apply default of 10
- $objWriter->writeAttribute('width', '9.10');
- } else {
- // Width set
- $objWriter->writeAttribute('width', PHPExcel_Shared_String::FormatNumber($colDimension->getWidth()));
- }
-
- // Column visibility
- if ($colDimension->getVisible() == false) {
- $objWriter->writeAttribute('hidden', 'true');
- }
-
- // Auto size?
- if ($colDimension->getAutoSize()) {
- $objWriter->writeAttribute('bestFit', 'true');
- }
-
- // Custom width?
- if ($colDimension->getWidth() != $pSheet->getDefaultColumnDimension()->getWidth()) {
- $objWriter->writeAttribute('customWidth', 'true');
- }
-
- // Collapsed
- if ($colDimension->getCollapsed() == true) {
- $objWriter->writeAttribute('collapsed', 'true');
- }
-
- // Outline level
- if ($colDimension->getOutlineLevel() > 0) {
- $objWriter->writeAttribute('outlineLevel', $colDimension->getOutlineLevel());
- }
-
- // Style
- $objWriter->writeAttribute('style', $colDimension->getXfIndex());
-
- $objWriter->endElement();
- }
-
- $objWriter->endElement();
- }
- }
-
- /**
- * Write SheetProtection
- *
- * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer
- * @param PHPExcel_Worksheet $pSheet Worksheet
- * @throws Exception
- */
- private function _writeSheetProtection(PHPExcel_Shared_XMLWriter $objWriter = null, PHPExcel_Worksheet $pSheet = null)
- {
- // sheetProtection
- $objWriter->startElement('sheetProtection');
-
- if ($pSheet->getProtection()->getPassword() != '') {
- $objWriter->writeAttribute('password', $pSheet->getProtection()->getPassword());
- }
-
- $objWriter->writeAttribute('sheet', ($pSheet->getProtection()->getSheet() ? 'true' : 'false'));
- $objWriter->writeAttribute('objects', ($pSheet->getProtection()->getObjects() ? 'true' : 'false'));
- $objWriter->writeAttribute('scenarios', ($pSheet->getProtection()->getScenarios() ? 'true' : 'false'));
- $objWriter->writeAttribute('formatCells', ($pSheet->getProtection()->getFormatCells() ? 'true' : 'false'));
- $objWriter->writeAttribute('formatColumns', ($pSheet->getProtection()->getFormatColumns() ? 'true' : 'false'));
- $objWriter->writeAttribute('formatRows', ($pSheet->getProtection()->getFormatRows() ? 'true' : 'false'));
- $objWriter->writeAttribute('insertColumns', ($pSheet->getProtection()->getInsertColumns() ? 'true' : 'false'));
- $objWriter->writeAttribute('insertRows', ($pSheet->getProtection()->getInsertRows() ? 'true' : 'false'));
- $objWriter->writeAttribute('insertHyperlinks', ($pSheet->getProtection()->getInsertHyperlinks() ? 'true' : 'false'));
- $objWriter->writeAttribute('deleteColumns', ($pSheet->getProtection()->getDeleteColumns() ? 'true' : 'false'));
- $objWriter->writeAttribute('deleteRows', ($pSheet->getProtection()->getDeleteRows() ? 'true' : 'false'));
- $objWriter->writeAttribute('selectLockedCells', ($pSheet->getProtection()->getSelectLockedCells() ? 'true' : 'false'));
- $objWriter->writeAttribute('sort', ($pSheet->getProtection()->getSort() ? 'true' : 'false'));
- $objWriter->writeAttribute('autoFilter', ($pSheet->getProtection()->getAutoFilter() ? 'true' : 'false'));
- $objWriter->writeAttribute('pivotTables', ($pSheet->getProtection()->getPivotTables() ? 'true' : 'false'));
- $objWriter->writeAttribute('selectUnlockedCells', ($pSheet->getProtection()->getSelectUnlockedCells() ? 'true' : 'false'));
- $objWriter->endElement();
- }
-
- /**
- * Write ConditionalFormatting
- *
- * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer
- * @param PHPExcel_Worksheet $pSheet Worksheet
- * @throws Exception
- */
- private function _writeConditionalFormatting(PHPExcel_Shared_XMLWriter $objWriter = null, PHPExcel_Worksheet $pSheet = null)
- {
- // Conditional id
- $id = 1;
-
- // Loop through styles in the current worksheet
- foreach ($pSheet->getConditionalStylesCollection() as $cellCoordinate => $conditionalStyles) {
- foreach ($conditionalStyles as $conditional) {
- // WHY was this again?
- // if ($this->getParentWriter()->getStylesConditionalHashTable()->getIndexForHashCode( $conditional->getHashCode() ) == '') {
- // continue;
- // }
- if ($conditional->getConditionType() != PHPExcel_Style_Conditional::CONDITION_NONE) {
- // conditionalFormatting
- $objWriter->startElement('conditionalFormatting');
- $objWriter->writeAttribute('sqref', $cellCoordinate);
-
- // cfRule
- $objWriter->startElement('cfRule');
- $objWriter->writeAttribute('type', $conditional->getConditionType());
- $objWriter->writeAttribute('dxfId', $this->getParentWriter()->getStylesConditionalHashTable()->getIndexForHashCode( $conditional->getHashCode() ));
- $objWriter->writeAttribute('priority', $id++);
-
- if (($conditional->getConditionType() == PHPExcel_Style_Conditional::CONDITION_CELLIS
- ||
- $conditional->getConditionType() == PHPExcel_Style_Conditional::CONDITION_CONTAINSTEXT)
- && $conditional->getOperatorType() != PHPExcel_Style_Conditional::OPERATOR_NONE) {
- $objWriter->writeAttribute('operator', $conditional->getOperatorType());
- }
-
- if ($conditional->getConditionType() == PHPExcel_Style_Conditional::CONDITION_CONTAINSTEXT
- && !is_null($conditional->getText())) {
- $objWriter->writeAttribute('text', $conditional->getText());
- }
-
- if ($conditional->getConditionType() == PHPExcel_Style_Conditional::CONDITION_CONTAINSTEXT
- && $conditional->getOperatorType() == PHPExcel_Style_Conditional::OPERATOR_CONTAINSTEXT
- && !is_null($conditional->getText())) {
- $objWriter->writeElement('formula', 'NOT(ISERROR(SEARCH("' . $conditional->getText() . '",' . $cellCoordinate . ')))');
- } else if ($conditional->getConditionType() == PHPExcel_Style_Conditional::CONDITION_CONTAINSTEXT
- && $conditional->getOperatorType() == PHPExcel_Style_Conditional::OPERATOR_BEGINSWITH
- && !is_null($conditional->getText())) {
- $objWriter->writeElement('formula', 'LEFT(' . $cellCoordinate . ',' . strlen($conditional->getText()) . ')="' . $conditional->getText() . '"');
- } else if ($conditional->getConditionType() == PHPExcel_Style_Conditional::CONDITION_CONTAINSTEXT
- && $conditional->getOperatorType() == PHPExcel_Style_Conditional::OPERATOR_ENDSWITH
- && !is_null($conditional->getText())) {
- $objWriter->writeElement('formula', 'RIGHT(' . $cellCoordinate . ',' . strlen($conditional->getText()) . ')="' . $conditional->getText() . '"');
- } else if ($conditional->getConditionType() == PHPExcel_Style_Conditional::CONDITION_CONTAINSTEXT
- && $conditional->getOperatorType() == PHPExcel_Style_Conditional::OPERATOR_NOTCONTAINS
- && !is_null($conditional->getText())) {
- $objWriter->writeElement('formula', 'ISERROR(SEARCH("' . $conditional->getText() . '",' . $cellCoordinate . '))');
- } else if ($conditional->getConditionType() == PHPExcel_Style_Conditional::CONDITION_CELLIS
- || $conditional->getConditionType() == PHPExcel_Style_Conditional::CONDITION_CONTAINSTEXT
- || $conditional->getConditionType() == PHPExcel_Style_Conditional::CONDITION_EXPRESSION) {
- foreach ($conditional->getConditions() as $formula) {
- // Formula
- $objWriter->writeElement('formula', $formula);
- }
- }
-
- $objWriter->endElement();
-
- $objWriter->endElement();
- }
- }
- }
- }
-
- /**
- * Write DataValidations
- *
- * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer
- * @param PHPExcel_Worksheet $pSheet Worksheet
- * @throws Exception
- */
- private function _writeDataValidations(PHPExcel_Shared_XMLWriter $objWriter = null, PHPExcel_Worksheet $pSheet = null)
- {
- // Datavalidation collection
- $dataValidationCollection = $pSheet->getDataValidationCollection();
-
- // Write data validations?
- if (!empty($dataValidationCollection)) {
- $objWriter->startElement('dataValidations');
- $objWriter->writeAttribute('count', count($dataValidationCollection));
-
- foreach ($dataValidationCollection as $coordinate => $dv) {
- $objWriter->startElement('dataValidation');
-
- if ($dv->getType() != '') {
- $objWriter->writeAttribute('type', $dv->getType());
- }
-
- if ($dv->getErrorStyle() != '') {
- $objWriter->writeAttribute('errorStyle', $dv->getErrorStyle());
- }
-
- if ($dv->getOperator() != '') {
- $objWriter->writeAttribute('operator', $dv->getOperator());
- }
-
- $objWriter->writeAttribute('allowBlank', ($dv->getAllowBlank() ? '1' : '0'));
- $objWriter->writeAttribute('showDropDown', (!$dv->getShowDropDown() ? '1' : '0'));
- $objWriter->writeAttribute('showInputMessage', ($dv->getShowInputMessage() ? '1' : '0'));
- $objWriter->writeAttribute('showErrorMessage', ($dv->getShowErrorMessage() ? '1' : '0'));
-
- if ($dv->getErrorTitle() !== '') {
- $objWriter->writeAttribute('errorTitle', $dv->getErrorTitle());
- }
- if ($dv->getError() !== '') {
- $objWriter->writeAttribute('error', $dv->getError());
- }
- if ($dv->getPromptTitle() !== '') {
- $objWriter->writeAttribute('promptTitle', $dv->getPromptTitle());
- }
- if ($dv->getPrompt() !== '') {
- $objWriter->writeAttribute('prompt', $dv->getPrompt());
- }
-
- $objWriter->writeAttribute('sqref', $coordinate);
-
- if ($dv->getFormula1() !== '') {
- $objWriter->writeElement('formula1', $dv->getFormula1());
- }
- if ($dv->getFormula2() !== '') {
- $objWriter->writeElement('formula2', $dv->getFormula2());
- }
-
- $objWriter->endElement();
- }
-
- $objWriter->endElement();
- }
- }
-
- /**
- * Write Hyperlinks
- *
- * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer
- * @param PHPExcel_Worksheet $pSheet Worksheet
- * @throws Exception
- */
- private function _writeHyperlinks(PHPExcel_Shared_XMLWriter $objWriter = null, PHPExcel_Worksheet $pSheet = null)
- {
- // Hyperlink collection
- $hyperlinkCollection = $pSheet->getHyperlinkCollection();
-
- // Relation ID
- $relationId = 1;
-
- // Write hyperlinks?
- if (!empty($hyperlinkCollection)) {
- $objWriter->startElement('hyperlinks');
-
- foreach ($hyperlinkCollection as $coordinate => $hyperlink) {
- $objWriter->startElement('hyperlink');
-
- $objWriter->writeAttribute('ref', $coordinate);
- if (!$hyperlink->isInternal()) {
- $objWriter->writeAttribute('r:id', 'rId_hyperlink_' . $relationId);
- ++$relationId;
- } else {
- $objWriter->writeAttribute('location', str_replace('sheet://', '', $hyperlink->getUrl()));
- }
-
- if ($hyperlink->getTooltip() != '') {
- $objWriter->writeAttribute('tooltip', $hyperlink->getTooltip());
- }
-
- $objWriter->endElement();
- }
-
- $objWriter->endElement();
- }
- }
-
- /**
- * Write ProtectedRanges
- *
- * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer
- * @param PHPExcel_Worksheet $pSheet Worksheet
- * @throws Exception
- */
- private function _writeProtectedRanges(PHPExcel_Shared_XMLWriter $objWriter = null, PHPExcel_Worksheet $pSheet = null)
- {
- if (count($pSheet->getProtectedCells()) > 0) {
- // protectedRanges
- $objWriter->startElement('protectedRanges');
-
- // Loop protectedRanges
- foreach ($pSheet->getProtectedCells() as $protectedCell => $passwordHash) {
- // protectedRange
- $objWriter->startElement('protectedRange');
- $objWriter->writeAttribute('name', 'p' . md5($protectedCell));
- $objWriter->writeAttribute('sqref', $protectedCell);
- $objWriter->writeAttribute('password', $passwordHash);
- $objWriter->endElement();
- }
-
- $objWriter->endElement();
- }
- }
-
- /**
- * Write MergeCells
- *
- * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer
- * @param PHPExcel_Worksheet $pSheet Worksheet
- * @throws Exception
- */
- private function _writeMergeCells(PHPExcel_Shared_XMLWriter $objWriter = null, PHPExcel_Worksheet $pSheet = null)
- {
- if (count($pSheet->getMergeCells()) > 0) {
- // mergeCells
- $objWriter->startElement('mergeCells');
-
- // Loop mergeCells
- foreach ($pSheet->getMergeCells() as $mergeCell) {
- // mergeCell
- $objWriter->startElement('mergeCell');
- $objWriter->writeAttribute('ref', $mergeCell);
- $objWriter->endElement();
- }
-
- $objWriter->endElement();
- }
- }
-
- /**
- * Write PrintOptions
- *
- * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer
- * @param PHPExcel_Worksheet $pSheet Worksheet
- * @throws Exception
- */
- private function _writePrintOptions(PHPExcel_Shared_XMLWriter $objWriter = null, PHPExcel_Worksheet $pSheet = null)
- {
- // printOptions
- $objWriter->startElement('printOptions');
-
- $objWriter->writeAttribute('gridLines', ($pSheet->getPrintGridlines() ? 'true': 'false'));
- $objWriter->writeAttribute('gridLinesSet', 'true');
-
- if ($pSheet->getPageSetup()->getHorizontalCentered()) {
- $objWriter->writeAttribute('horizontalCentered', 'true');
- }
-
- if ($pSheet->getPageSetup()->getVerticalCentered()) {
- $objWriter->writeAttribute('verticalCentered', 'true');
- }
-
- $objWriter->endElement();
- }
-
- /**
- * Write PageMargins
- *
- * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer
- * @param PHPExcel_Worksheet $pSheet Worksheet
- * @throws Exception
- */
- private function _writePageMargins(PHPExcel_Shared_XMLWriter $objWriter = null, PHPExcel_Worksheet $pSheet = null)
- {
- // pageMargins
- $objWriter->startElement('pageMargins');
- $objWriter->writeAttribute('left', PHPExcel_Shared_String::FormatNumber($pSheet->getPageMargins()->getLeft()));
- $objWriter->writeAttribute('right', PHPExcel_Shared_String::FormatNumber($pSheet->getPageMargins()->getRight()));
- $objWriter->writeAttribute('top', PHPExcel_Shared_String::FormatNumber($pSheet->getPageMargins()->getTop()));
- $objWriter->writeAttribute('bottom', PHPExcel_Shared_String::FormatNumber($pSheet->getPageMargins()->getBottom()));
- $objWriter->writeAttribute('header', PHPExcel_Shared_String::FormatNumber($pSheet->getPageMargins()->getHeader()));
- $objWriter->writeAttribute('footer', PHPExcel_Shared_String::FormatNumber($pSheet->getPageMargins()->getFooter()));
- $objWriter->endElement();
- }
-
- /**
- * Write AutoFilter
- *
- * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer
- * @param PHPExcel_Worksheet $pSheet Worksheet
- * @throws Exception
- */
- private function _writeAutoFilter(PHPExcel_Shared_XMLWriter $objWriter = null, PHPExcel_Worksheet $pSheet = null)
- {
- $autoFilterRange = $pSheet->getAutoFilter()->getRange();
- if (!empty($autoFilterRange)) {
- // autoFilter
- $objWriter->startElement('autoFilter');
-
- // Strip any worksheet reference from the filter coordinates
- $range = PHPExcel_Cell::splitRange($autoFilterRange);
- $range = $range[0];
- // Strip any worksheet ref
- if (strpos($range[0],'!') !== false) {
- list($ws,$range[0]) = explode('!',$range[0]);
- }
- $range = implode(':', $range);
-
- $objWriter->writeAttribute('ref', str_replace('$','',$range));
-
- $columns = $pSheet->getAutoFilter()->getColumns();
- if (count($columns > 0)) {
- foreach($columns as $columnID => $column) {
- $rules = $column->getRules();
- if (count($rules > 0)) {
- $objWriter->startElement('filterColumn');
- $objWriter->writeAttribute('colId', $pSheet->getAutoFilter()->getColumnOffset($columnID));
-
- $objWriter->startElement( $column->getFilterType());
- if ($column->getJoin() == PHPExcel_Worksheet_AutoFilter_Column::AUTOFILTER_COLUMN_JOIN_AND) {
- $objWriter->writeAttribute('and', 1);
- }
-
- foreach ($rules as $rule) {
- if (($column->getFilterType() === PHPExcel_Worksheet_AutoFilter_Column::AUTOFILTER_FILTERTYPE_FILTER) &&
- ($rule->getOperator() === PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_COLUMN_RULE_EQUAL) &&
- ($rule->getValue() === '')) {
- // Filter rule for Blanks
- $objWriter->writeAttribute('blank', 1);
- } elseif($rule->getRuleType() === PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DYNAMICFILTER) {
- // Dynamic Filter Rule
- $objWriter->writeAttribute('type', $rule->getGrouping());
- $val = $column->getAttribute('val');
- if ($val !== NULL) {
- $objWriter->writeAttribute('val', $val);
- }
- $maxVal = $column->getAttribute('maxVal');
- if ($maxVal !== NULL) {
- $objWriter->writeAttribute('maxVal', $maxVal);
- }
- } elseif($rule->getRuleType() === PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_TOPTENFILTER) {
- // Top 10 Filter Rule
- $objWriter->writeAttribute('val', $rule->getValue());
- $objWriter->writeAttribute('percent', (($rule->getOperator() === PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_COLUMN_RULE_TOPTEN_PERCENT) ? '1' : '0'));
- $objWriter->writeAttribute('top', (($rule->getGrouping() === PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_COLUMN_RULE_TOPTEN_TOP) ? '1': '0'));
- } else {
- // Filter, DateGroupItem or CustomFilter
- $objWriter->startElement($rule->getRuleType());
-
- if ($rule->getOperator() !== PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_COLUMN_RULE_EQUAL) {
- $objWriter->writeAttribute('operator', $rule->getOperator());
- }
- if ($rule->getRuleType() === PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DATEGROUP) {
- // Date Group filters
- foreach($rule->getValue() as $key => $value) {
- if ($value > '') $objWriter->writeAttribute($key, $value);
- }
- $objWriter->writeAttribute('dateTimeGrouping', $rule->getGrouping());
- } else {
- $objWriter->writeAttribute('val', $rule->getValue());
- }
-
- $objWriter->endElement();
- }
- }
-
- $objWriter->endElement();
-
- $objWriter->endElement();
- }
- }
- }
-
- $objWriter->endElement();
- }
- }
-
- /**
- * Write PageSetup
- *
- * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer
- * @param PHPExcel_Worksheet $pSheet Worksheet
- * @throws Exception
- */
- private function _writePageSetup(PHPExcel_Shared_XMLWriter $objWriter = null, PHPExcel_Worksheet $pSheet = null)
- {
- // pageSetup
- $objWriter->startElement('pageSetup');
- $objWriter->writeAttribute('paperSize', $pSheet->getPageSetup()->getPaperSize());
- $objWriter->writeAttribute('orientation', $pSheet->getPageSetup()->getOrientation());
-
- if (!is_null($pSheet->getPageSetup()->getScale())) {
- $objWriter->writeAttribute('scale', $pSheet->getPageSetup()->getScale());
- }
- if (!is_null($pSheet->getPageSetup()->getFitToHeight())) {
- $objWriter->writeAttribute('fitToHeight', $pSheet->getPageSetup()->getFitToHeight());
- } else {
- $objWriter->writeAttribute('fitToHeight', '0');
- }
- if (!is_null($pSheet->getPageSetup()->getFitToWidth())) {
- $objWriter->writeAttribute('fitToWidth', $pSheet->getPageSetup()->getFitToWidth());
- } else {
- $objWriter->writeAttribute('fitToWidth', '0');
- }
- if (!is_null($pSheet->getPageSetup()->getFirstPageNumber())) {
- $objWriter->writeAttribute('firstPageNumber', $pSheet->getPageSetup()->getFirstPageNumber());
- $objWriter->writeAttribute('useFirstPageNumber', '1');
- }
-
- $objWriter->endElement();
- }
-
- /**
- * Write Header / Footer
- *
- * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer
- * @param PHPExcel_Worksheet $pSheet Worksheet
- * @throws Exception
- */
- private function _writeHeaderFooter(PHPExcel_Shared_XMLWriter $objWriter = null, PHPExcel_Worksheet $pSheet = null)
- {
- // headerFooter
- $objWriter->startElement('headerFooter');
- $objWriter->writeAttribute('differentOddEven', ($pSheet->getHeaderFooter()->getDifferentOddEven() ? 'true' : 'false'));
- $objWriter->writeAttribute('differentFirst', ($pSheet->getHeaderFooter()->getDifferentFirst() ? 'true' : 'false'));
- $objWriter->writeAttribute('scaleWithDoc', ($pSheet->getHeaderFooter()->getScaleWithDocument() ? 'true' : 'false'));
- $objWriter->writeAttribute('alignWithMargins', ($pSheet->getHeaderFooter()->getAlignWithMargins() ? 'true' : 'false'));
-
- $objWriter->writeElement('oddHeader', $pSheet->getHeaderFooter()->getOddHeader());
- $objWriter->writeElement('oddFooter', $pSheet->getHeaderFooter()->getOddFooter());
- $objWriter->writeElement('evenHeader', $pSheet->getHeaderFooter()->getEvenHeader());
- $objWriter->writeElement('evenFooter', $pSheet->getHeaderFooter()->getEvenFooter());
- $objWriter->writeElement('firstHeader', $pSheet->getHeaderFooter()->getFirstHeader());
- $objWriter->writeElement('firstFooter', $pSheet->getHeaderFooter()->getFirstFooter());
- $objWriter->endElement();
- }
-
- /**
- * Write Breaks
- *
- * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer
- * @param PHPExcel_Worksheet $pSheet Worksheet
- * @throws Exception
- */
- private function _writeBreaks(PHPExcel_Shared_XMLWriter $objWriter = null, PHPExcel_Worksheet $pSheet = null)
- {
- // Get row and column breaks
- $aRowBreaks = array();
- $aColumnBreaks = array();
- foreach ($pSheet->getBreaks() as $cell => $breakType) {
- if ($breakType == PHPExcel_Worksheet::BREAK_ROW) {
- $aRowBreaks[] = $cell;
- } else if ($breakType == PHPExcel_Worksheet::BREAK_COLUMN) {
- $aColumnBreaks[] = $cell;
- }
- }
-
- // rowBreaks
- if (!empty($aRowBreaks)) {
- $objWriter->startElement('rowBreaks');
- $objWriter->writeAttribute('count', count($aRowBreaks));
- $objWriter->writeAttribute('manualBreakCount', count($aRowBreaks));
-
- foreach ($aRowBreaks as $cell) {
- $coords = PHPExcel_Cell::coordinateFromString($cell);
-
- $objWriter->startElement('brk');
- $objWriter->writeAttribute('id', $coords[1]);
- $objWriter->writeAttribute('man', '1');
- $objWriter->endElement();
- }
-
- $objWriter->endElement();
- }
-
- // Second, write column breaks
- if (!empty($aColumnBreaks)) {
- $objWriter->startElement('colBreaks');
- $objWriter->writeAttribute('count', count($aColumnBreaks));
- $objWriter->writeAttribute('manualBreakCount', count($aColumnBreaks));
-
- foreach ($aColumnBreaks as $cell) {
- $coords = PHPExcel_Cell::coordinateFromString($cell);
-
- $objWriter->startElement('brk');
- $objWriter->writeAttribute('id', PHPExcel_Cell::columnIndexFromString($coords[0]) - 1);
- $objWriter->writeAttribute('man', '1');
- $objWriter->endElement();
- }
-
- $objWriter->endElement();
- }
- }
-
- /**
- * Write SheetData
- *
- * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer
- * @param PHPExcel_Worksheet $pSheet Worksheet
- * @param string[] $pStringTable String table
- * @throws Exception
- */
- private function _writeSheetData(PHPExcel_Shared_XMLWriter $objWriter = null, PHPExcel_Worksheet $pSheet = null, $pStringTable = null)
- {
- if (is_array($pStringTable)) {
- // Flipped stringtable, for faster index searching
- $aFlippedStringTable = $this->getParentWriter()->getWriterPart('stringtable')->flipStringTable($pStringTable);
-
- // sheetData
- $objWriter->startElement('sheetData');
-
- // Get column count
- $colCount = PHPExcel_Cell::columnIndexFromString($pSheet->getHighestColumn());
-
- // Highest row number
- $highestRow = $pSheet->getHighestRow();
-
- // Loop through cells
- $cellsByRow = array();
- foreach ($pSheet->getCellCollection() as $cellID) {
- $cellAddress = PHPExcel_Cell::coordinateFromString($cellID);
- $cellsByRow[$cellAddress[1]][] = $cellID;
- }
-
- $currentRow = 0;
- while($currentRow++ < $highestRow) {
- // Get row dimension
- $rowDimension = $pSheet->getRowDimension($currentRow);
-
- // Write current row?
- $writeCurrentRow = isset($cellsByRow[$currentRow]) ||
- $rowDimension->getRowHeight() >= 0 ||
- $rowDimension->getVisible() == false ||
- $rowDimension->getCollapsed() == true ||
- $rowDimension->getOutlineLevel() > 0 ||
- $rowDimension->getXfIndex() !== null;
-
- if ($writeCurrentRow) {
- // Start a new row
- $objWriter->startElement('row');
- $objWriter->writeAttribute('r', $currentRow);
- $objWriter->writeAttribute('spans', '1:' . $colCount);
-
- // Row dimensions
- if ($rowDimension->getRowHeight() >= 0) {
- $objWriter->writeAttribute('customHeight', '1');
- $objWriter->writeAttribute('ht', PHPExcel_Shared_String::FormatNumber($rowDimension->getRowHeight()));
- }
-
- // Row visibility
- if ($rowDimension->getVisible() == false) {
- $objWriter->writeAttribute('hidden', 'true');
- }
-
- // Collapsed
- if ($rowDimension->getCollapsed() == true) {
- $objWriter->writeAttribute('collapsed', 'true');
- }
-
- // Outline level
- if ($rowDimension->getOutlineLevel() > 0) {
- $objWriter->writeAttribute('outlineLevel', $rowDimension->getOutlineLevel());
- }
-
- // Style
- if ($rowDimension->getXfIndex() !== null) {
- $objWriter->writeAttribute('s', $rowDimension->getXfIndex());
- $objWriter->writeAttribute('customFormat', '1');
- }
-
- // Write cells
- if (isset($cellsByRow[$currentRow])) {
- foreach($cellsByRow[$currentRow] as $cellAddress) {
- // Write cell
- $this->_writeCell($objWriter, $pSheet, $cellAddress, $pStringTable, $aFlippedStringTable);
- }
- }
-
- // End row
- $objWriter->endElement();
- }
- }
-
- $objWriter->endElement();
- } else {
- throw new Exception("Invalid parameters passed.");
- }
- }
-
- /**
- * Write Cell
- *
- * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer
- * @param PHPExcel_Worksheet $pSheet Worksheet
- * @param PHPExcel_Cell $pCellAddress Cell Address
- * @param string[] $pStringTable String table
- * @param string[] $pFlippedStringTable String table (flipped), for faster index searching
- * @throws Exception
- */
- private function _writeCell(PHPExcel_Shared_XMLWriter $objWriter = null, PHPExcel_Worksheet $pSheet = null, $pCellAddress = null, $pStringTable = null, $pFlippedStringTable = null)
- {
- if (is_array($pStringTable) && is_array($pFlippedStringTable)) {
- // Cell
- $pCell = $pSheet->getCell($pCellAddress);
- $objWriter->startElement('c');
- $objWriter->writeAttribute('r', $pCellAddress);
-
- // Sheet styles
- if ($pCell->getXfIndex() != '') {
- $objWriter->writeAttribute('s', $pCell->getXfIndex());
- }
-
- // If cell value is supplied, write cell value
- $cellValue = $pCell->getValue();
- if (is_object($cellValue) || $cellValue !== '') {
- // Map type
- $mappedType = $pCell->getDataType();
-
- // Write data type depending on its type
- switch (strtolower($mappedType)) {
- case 'inlinestr': // Inline string
- case 's': // String
- case 'b': // Boolean
- $objWriter->writeAttribute('t', $mappedType);
- break;
- case 'f': // Formula
- $calculatedValue = null;
- if ($this->getParentWriter()->getPreCalculateFormulas()) {
- $calculatedValue = $pCell->getCalculatedValue();
- } else {
- $calculatedValue = $cellValue;
- }
- if (is_string($calculatedValue)) {
- $objWriter->writeAttribute('t', 'str');
- }
- break;
- case 'e': // Error
- $objWriter->writeAttribute('t', $mappedType);
- }
-
- // Write data depending on its type
- switch (strtolower($mappedType)) {
- case 'inlinestr': // Inline string
- if (! $cellValue instanceof PHPExcel_RichText) {
- $objWriter->writeElement('t', PHPExcel_Shared_String::ControlCharacterPHP2OOXML( htmlspecialchars($cellValue) ) );
- } else if ($cellValue instanceof PHPExcel_RichText) {
- $objWriter->startElement('is');
- $this->getParentWriter()->getWriterPart('stringtable')->writeRichText($objWriter, $cellValue);
- $objWriter->endElement();
- }
-
- break;
- case 's': // String
- if (! $cellValue instanceof PHPExcel_RichText) {
- if (isset($pFlippedStringTable[$cellValue])) {
- $objWriter->writeElement('v', $pFlippedStringTable[$cellValue]);
- }
- } else if ($cellValue instanceof PHPExcel_RichText) {
- $objWriter->writeElement('v', $pFlippedStringTable[$cellValue->getHashCode()]);
- }
-
- break;
- case 'f': // Formula
- $attributes = $pCell->getFormulaAttributes();
- if($attributes['t'] == 'array') {
- $objWriter->startElement('f');
- $objWriter->writeAttribute('t', 'array');
- $objWriter->writeAttribute('ref', $pCellAddress);
- $objWriter->writeAttribute('aca', '1');
- $objWriter->writeAttribute('ca', '1');
- $objWriter->text(substr($cellValue, 1));
- $objWriter->endElement();
- } else {
- $objWriter->writeElement('f', substr($cellValue, 1));
- }
- if ($this->getParentWriter()->getOffice2003Compatibility() === false) {
- if ($this->getParentWriter()->getPreCalculateFormulas()) {
- $calculatedValue = $pCell->getCalculatedValue();
- if (!is_array($calculatedValue) && substr($calculatedValue, 0, 1) != '#') {
- $objWriter->writeElement('v', PHPExcel_Shared_String::FormatNumber($calculatedValue));
- } else {
- $objWriter->writeElement('v', '0');
- }
- } else {
- $objWriter->writeElement('v', '0');
- }
- }
- break;
- case 'n': // Numeric
- // force point as decimal separator in case current locale uses comma
- $objWriter->writeElement('v', str_replace(',', '.', $cellValue));
- break;
- case 'b': // Boolean
- $objWriter->writeElement('v', ($cellValue ? '1' : '0'));
- break;
- case 'e': // Error
- if (substr($cellValue, 0, 1) == '=') {
- $objWriter->writeElement('f', substr($cellValue, 1));
- $objWriter->writeElement('v', substr($cellValue, 1));
- } else {
- $objWriter->writeElement('v', $cellValue);
- }
-
- break;
- }
- }
-
- $objWriter->endElement();
- } else {
- throw new Exception("Invalid parameters passed.");
- }
- }
-
- /**
- * Write Drawings
- *
- * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer
- * @param PHPExcel_Worksheet $pSheet Worksheet
- * @param boolean $includeCharts Flag indicating if we should include drawing details for charts
- * @throws Exception
- */
- private function _writeDrawings(PHPExcel_Shared_XMLWriter $objWriter = null, PHPExcel_Worksheet $pSheet = null, $includeCharts = FALSE)
- {
- $chartCount = ($includeCharts) ? $pSheet->getChartCollection()->count() : 0;
- // If sheet contains drawings, add the relationships
- if (($pSheet->getDrawingCollection()->count() > 0) ||
- ($chartCount > 0)) {
- $objWriter->startElement('drawing');
- $objWriter->writeAttribute('r:id', 'rId1');
- $objWriter->endElement();
- }
- }
-
- /**
- * Write LegacyDrawing
- *
- * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer
- * @param PHPExcel_Worksheet $pSheet Worksheet
- * @throws Exception
- */
- private function _writeLegacyDrawing(PHPExcel_Shared_XMLWriter $objWriter = null, PHPExcel_Worksheet $pSheet = null)
- {
- // If sheet contains comments, add the relationships
- if (count($pSheet->getComments()) > 0) {
- $objWriter->startElement('legacyDrawing');
- $objWriter->writeAttribute('r:id', 'rId_comments_vml1');
- $objWriter->endElement();
- }
- }
-
- /**
- * Write LegacyDrawingHF
- *
- * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer
- * @param PHPExcel_Worksheet $pSheet Worksheet
- * @throws Exception
- */
- private function _writeLegacyDrawingHF(PHPExcel_Shared_XMLWriter $objWriter = null, PHPExcel_Worksheet $pSheet = null)
- {
- // If sheet contains images, add the relationships
- if (count($pSheet->getHeaderFooter()->getImages()) > 0) {
- $objWriter->startElement('legacyDrawingHF');
- $objWriter->writeAttribute('r:id', 'rId_headerfooter_vml1');
- $objWriter->endElement();
- }
- }
-}
diff --git a/admin/survey/excel/PHPExcel/Writer/Excel2007/WriterPart.php b/admin/survey/excel/PHPExcel/Writer/Excel2007/WriterPart.php
deleted file mode 100644
index b5f91b6..0000000
--- a/admin/survey/excel/PHPExcel/Writer/Excel2007/WriterPart.php
+++ /dev/null
@@ -1,81 +0,0 @@
-<?php
-/**
- * PHPExcel
- *
- * Copyright (c) 2006 - 2012 PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel_Writer_Excel2007
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-
-/**
- * PHPExcel_Writer_Excel2007_WriterPart
- *
- * @category PHPExcel
- * @package PHPExcel_Writer_Excel2007
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- */
-abstract class PHPExcel_Writer_Excel2007_WriterPart
-{
- /**
- * Parent IWriter object
- *
- * @var PHPExcel_Writer_IWriter
- */
- private $_parentWriter;
-
- /**
- * Set parent IWriter object
- *
- * @param PHPExcel_Writer_IWriter $pWriter
- * @throws Exception
- */
- public function setParentWriter(PHPExcel_Writer_IWriter $pWriter = null) {
- $this->_parentWriter = $pWriter;
- }
-
- /**
- * Get parent IWriter object
- *
- * @return PHPExcel_Writer_IWriter
- * @throws Exception
- */
- public function getParentWriter() {
- if (!is_null($this->_parentWriter)) {
- return $this->_parentWriter;
- } else {
- throw new Exception("No parent PHPExcel_Writer_IWriter assigned.");
- }
- }
-
- /**
- * Set parent IWriter object
- *
- * @param PHPExcel_Writer_IWriter $pWriter
- * @throws Exception
- */
- public function __construct(PHPExcel_Writer_IWriter $pWriter = null) {
- if (!is_null($pWriter)) {
- $this->_parentWriter = $pWriter;
- }
- }
-
-}
diff --git a/admin/survey/excel/PHPExcel/Writer/Excel5.php b/admin/survey/excel/PHPExcel/Writer/Excel5.php
deleted file mode 100644
index c188f95..0000000
--- a/admin/survey/excel/PHPExcel/Writer/Excel5.php
+++ /dev/null
@@ -1,961 +0,0 @@
-<?php
-/**
- * PHPExcel
- *
- * Copyright (c) 2006 - 2012 PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel_Writer_Excel5
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-
-/**
- * PHPExcel_Writer_Excel5
- *
- * @category PHPExcel
- * @package PHPExcel_Writer_Excel5
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- */
-class PHPExcel_Writer_Excel5 implements PHPExcel_Writer_IWriter
-{
- /**
- * Pre-calculate formulas
- *
- * @var boolean
- */
- private $_preCalculateFormulas = true;
-
- /**
- * PHPExcel object
- *
- * @var PHPExcel
- */
- private $_phpExcel;
-
- /**
- * Total number of shared strings in workbook
- *
- * @var int
- */
- private $_str_total = 0;
-
- /**
- * Number of unique shared strings in workbook
- *
- * @var int
- */
- private $_str_unique = 0;
-
- /**
- * Array of unique shared strings in workbook
- *
- * @var array
- */
- private $_str_table = array();
-
- /**
- * Color cache. Mapping between RGB value and color index.
- *
- * @var array
- */
- private $_colors;
-
- /**
- * Formula parser
- *
- * @var PHPExcel_Writer_Excel5_Parser
- */
- private $_parser;
-
- /**
- * Identifier clusters for drawings. Used in MSODRAWINGGROUP record.
- *
- * @var array
- */
- private $_IDCLs;
-
- /**
- * Basic OLE object summary information
- *
- * @var array
- */
- private $_summaryInformation;
-
- /**
- * Extended OLE object document summary information
- *
- * @var array
- */
- private $_documentSummaryInformation;
-
- /**
- * Create a new PHPExcel_Writer_Excel5
- *
- * @param PHPExcel $phpExcel PHPExcel object
- */
- public function __construct(PHPExcel $phpExcel) {
- $this->_phpExcel = $phpExcel;
-
- $this->_parser = new PHPExcel_Writer_Excel5_Parser();
- }
-
- /**
- * Save PHPExcel to file
- *
- * @param string $pFilename
- * @throws Exception
- */
- public function save($pFilename = null) {
-
- // garbage collect
- $this->_phpExcel->garbageCollect();
-
- $saveDebugLog = PHPExcel_Calculation::getInstance()->writeDebugLog;
- PHPExcel_Calculation::getInstance()->writeDebugLog = false;
- $saveDateReturnType = PHPExcel_Calculation_Functions::getReturnDateType();
- PHPExcel_Calculation_Functions::setReturnDateType(PHPExcel_Calculation_Functions::RETURNDATE_EXCEL);
-
- // initialize colors array
- $this->_colors = array();
-
- // Initialise workbook writer
- $this->_writerWorkbook = new PHPExcel_Writer_Excel5_Workbook($this->_phpExcel,
- $this->_str_total, $this->_str_unique, $this->_str_table,
- $this->_colors, $this->_parser);
-
- // Initialise worksheet writers
- $countSheets = $this->_phpExcel->getSheetCount();
- for ($i = 0; $i < $countSheets; ++$i) {
- $this->_writerWorksheets[$i] = new PHPExcel_Writer_Excel5_Worksheet($this->_str_total, $this->_str_unique,
- $this->_str_table, $this->_colors,
- $this->_parser,
- $this->_preCalculateFormulas,
- $this->_phpExcel->getSheet($i));
- }
-
- // build Escher objects. Escher objects for workbooks needs to be build before Escher object for workbook.
- $this->_buildWorksheetEschers();
- $this->_buildWorkbookEscher();
-
- // add 15 identical cell style Xfs
- // for now, we use the first cellXf instead of cellStyleXf
- $cellXfCollection = $this->_phpExcel->getCellXfCollection();
- for ($i = 0; $i < 15; ++$i) {
- $this->_writerWorkbook->addXfWriter($cellXfCollection[0], true);
- }
-
- // add all the cell Xfs
- foreach ($this->_phpExcel->getCellXfCollection() as $style) {
- $this->_writerWorkbook->addXfWriter($style, false);
- }
-
- // add fonts from rich text eleemnts
- for ($i = 0; $i < $countSheets; ++$i) {
- foreach ($this->_writerWorksheets[$i]->_phpSheet->getCellCollection() as $cellID) {
- $cell = $this->_writerWorksheets[$i]->_phpSheet->getCell($cellID);
- $cVal = $cell->getValue();
- if ($cVal instanceof PHPExcel_RichText) {
- $elements = $cVal->getRichTextElements();
- foreach ($elements as $element) {
- if ($element instanceof PHPExcel_RichText_Run) {
- $font = $element->getFont();
- $this->_writerWorksheets[$i]->_fntHashIndex[$font->getHashCode()] = $this->_writerWorkbook->_addFont($font);
- }
- }
- }
- }
- }
-
- // initialize OLE file
- $workbookStreamName = 'Workbook';
- $OLE = new PHPExcel_Shared_OLE_PPS_File(PHPExcel_Shared_OLE::Asc2Ucs($workbookStreamName));
-
- // Write the worksheet streams before the global workbook stream,
- // because the byte sizes of these are needed in the global workbook stream
- $worksheetSizes = array();
- for ($i = 0; $i < $countSheets; ++$i) {
- $this->_writerWorksheets[$i]->close();
- $worksheetSizes[] = $this->_writerWorksheets[$i]->_datasize;
- }
-
- // add binary data for global workbook stream
- $OLE->append( $this->_writerWorkbook->writeWorkbook($worksheetSizes) );
-
- // add binary data for sheet streams
- for ($i = 0; $i < $countSheets; ++$i) {
- $OLE->append($this->_writerWorksheets[$i]->getData());
- }
-
- $this->_documentSummaryInformation = $this->_writeDocumentSummaryInformation();
- // initialize OLE Document Summary Information
- if(isset($this->_documentSummaryInformation) && !empty($this->_documentSummaryInformation)){
- $OLE_DocumentSummaryInformation = new PHPExcel_Shared_OLE_PPS_File(PHPExcel_Shared_OLE::Asc2Ucs(chr(5) . 'DocumentSummaryInformation'));
- $OLE_DocumentSummaryInformation->append($this->_documentSummaryInformation);
- }
-
- $this->_summaryInformation = $this->_writeSummaryInformation();
- // initialize OLE Summary Information
- if(isset($this->_summaryInformation) && !empty($this->_summaryInformation)){
- $OLE_SummaryInformation = new PHPExcel_Shared_OLE_PPS_File(PHPExcel_Shared_OLE::Asc2Ucs(chr(5) . 'SummaryInformation'));
- $OLE_SummaryInformation->append($this->_summaryInformation);
- }
-
- // define OLE Parts
- $arrRootData = array($OLE);
- // initialize OLE Properties file
- if(isset($OLE_SummaryInformation)){
- $arrRootData[] = $OLE_SummaryInformation;
- }
- // initialize OLE Extended Properties file
- if(isset($OLE_DocumentSummaryInformation)){
- $arrRootData[] = $OLE_DocumentSummaryInformation;
- }
-
- $root = new PHPExcel_Shared_OLE_PPS_Root(time(), time(), $arrRootData);
- // save the OLE file
- $res = $root->save($pFilename);
-
- PHPExcel_Calculation_Functions::setReturnDateType($saveDateReturnType);
- PHPExcel_Calculation::getInstance()->writeDebugLog = $saveDebugLog;
- }
-
- /**
- * Set temporary storage directory
- *
- * @deprecated
- * @param string $pValue Temporary storage directory
- * @throws Exception Exception when directory does not exist
- * @return PHPExcel_Writer_Excel5
- */
- public function setTempDir($pValue = '') {
- return $this;
- }
-
- /**
- * Get Pre-Calculate Formulas
- *
- * @return boolean
- */
- public function getPreCalculateFormulas() {
- return $this->_preCalculateFormulas;
- }
-
- /**
- * Set Pre-Calculate Formulas
- *
- * @param boolean $pValue Pre-Calculate Formulas?
- */
- public function setPreCalculateFormulas($pValue = true) {
- $this->_preCalculateFormulas = $pValue;
- }
-
- /**
- * Build the Worksheet Escher objects
- *
- */
- private function _buildWorksheetEschers()
- {
- // 1-based index to BstoreContainer
- $blipIndex = 0;
- $lastReducedSpId = 0;
- $lastSpId = 0;
-
- foreach ($this->_phpExcel->getAllsheets() as $sheet) {
- // sheet index
- $sheetIndex = $sheet->getParent()->getIndex($sheet);
-
- $escher = null;
-
- // check if there are any shapes for this sheet
- $filterRange = $sheet->getAutoFilter()->getRange();
- if (count($sheet->getDrawingCollection()) == 0 && empty($filterRange)) {
- continue;
- }
-
- // create intermediate Escher object
- $escher = new PHPExcel_Shared_Escher();
-
- // dgContainer
- $dgContainer = new PHPExcel_Shared_Escher_DgContainer();
-
- // set the drawing index (we use sheet index + 1)
- $dgId = $sheet->getParent()->getIndex($sheet) + 1;
- $dgContainer->setDgId($dgId);
- $escher->setDgContainer($dgContainer);
-
- // spgrContainer
- $spgrContainer = new PHPExcel_Shared_Escher_DgContainer_SpgrContainer();
- $dgContainer->setSpgrContainer($spgrContainer);
-
- // add one shape which is the group shape
- $spContainer = new PHPExcel_Shared_Escher_DgContainer_SpgrContainer_SpContainer();
- $spContainer->setSpgr(true);
- $spContainer->setSpType(0);
- $spContainer->setSpId(($sheet->getParent()->getIndex($sheet) + 1) << 10);
- $spgrContainer->addChild($spContainer);
-
- // add the shapes
-
- $countShapes[$sheetIndex] = 0; // count number of shapes (minus group shape), in sheet
-
- foreach ($sheet->getDrawingCollection() as $drawing) {
- ++$blipIndex;
-
- ++$countShapes[$sheetIndex];
-
- // add the shape
- $spContainer = new PHPExcel_Shared_Escher_DgContainer_SpgrContainer_SpContainer();
-
- // set the shape type
- $spContainer->setSpType(0x004B);
- // set the shape flag
- $spContainer->setSpFlag(0x02);
-
- // set the shape index (we combine 1-based sheet index and $countShapes to create unique shape index)
- $reducedSpId = $countShapes[$sheetIndex];
- $spId = $reducedSpId
- | ($sheet->getParent()->getIndex($sheet) + 1) << 10;
- $spContainer->setSpId($spId);
-
- // keep track of last reducedSpId
- $lastReducedSpId = $reducedSpId;
-
- // keep track of last spId
- $lastSpId = $spId;
-
- // set the BLIP index
- $spContainer->setOPT(0x4104, $blipIndex);
-
- // set coordinates and offsets, client anchor
- $coordinates = $drawing->getCoordinates();
- $offsetX = $drawing->getOffsetX();
- $offsetY = $drawing->getOffsetY();
- $width = $drawing->getWidth();
- $height = $drawing->getHeight();
-
- $twoAnchor = PHPExcel_Shared_Excel5::oneAnchor2twoAnchor($sheet, $coordinates, $offsetX, $offsetY, $width, $height);
-
- $spContainer->setStartCoordinates($twoAnchor['startCoordinates']);
- $spContainer->setStartOffsetX($twoAnchor['startOffsetX']);
- $spContainer->setStartOffsetY($twoAnchor['startOffsetY']);
- $spContainer->setEndCoordinates($twoAnchor['endCoordinates']);
- $spContainer->setEndOffsetX($twoAnchor['endOffsetX']);
- $spContainer->setEndOffsetY($twoAnchor['endOffsetY']);
-
- $spgrContainer->addChild($spContainer);
- }
-
- // AutoFilters
- if(!empty($filterRange)){
- $rangeBounds = PHPExcel_Cell::rangeBoundaries($filterRange);
- $iNumColStart = $rangeBounds[0][0];
- $iNumColEnd = $rangeBounds[1][0];
-
- $iInc = $iNumColStart;
- while($iInc <= $iNumColEnd){
- ++$countShapes[$sheetIndex];
-
- // create an Drawing Object for the dropdown
- $oDrawing = new PHPExcel_Worksheet_BaseDrawing();
- // get the coordinates of drawing
- $cDrawing = PHPExcel_Cell::stringFromColumnIndex($iInc - 1) . $rangeBounds[0][1];
- $oDrawing->setCoordinates($cDrawing);
- $oDrawing->setWorksheet($sheet);
-
- // add the shape
- $spContainer = new PHPExcel_Shared_Escher_DgContainer_SpgrContainer_SpContainer();
- // set the shape type
- $spContainer->setSpType(0x00C9);
- // set the shape flag
- $spContainer->setSpFlag(0x01);
-
- // set the shape index (we combine 1-based sheet index and $countShapes to create unique shape index)
- $reducedSpId = $countShapes[$sheetIndex];
- $spId = $reducedSpId
- | ($sheet->getParent()->getIndex($sheet) + 1) << 10;
- $spContainer->setSpId($spId);
-
- // keep track of last reducedSpId
- $lastReducedSpId = $reducedSpId;
-
- // keep track of last spId
- $lastSpId = $spId;
-
- $spContainer->setOPT(0x007F, 0x01040104); // Protection -> fLockAgainstGrouping
- $spContainer->setOPT(0x00BF, 0x00080008); // Text -> fFitTextToShape
- $spContainer->setOPT(0x01BF, 0x00010000); // Fill Style -> fNoFillHitTest
- $spContainer->setOPT(0x01FF, 0x00080000); // Line Style -> fNoLineDrawDash
- $spContainer->setOPT(0x03BF, 0x000A0000); // Group Shape -> fPrint
-
- // set coordinates and offsets, client anchor
- $endCoordinates = PHPExcel_Cell::stringFromColumnIndex(PHPExcel_Cell::stringFromColumnIndex($iInc - 1));
- $endCoordinates .= $rangeBounds[0][1] + 1;
-
- $spContainer->setStartCoordinates($cDrawing);
- $spContainer->setStartOffsetX(0);
- $spContainer->setStartOffsetY(0);
- $spContainer->setEndCoordinates($endCoordinates);
- $spContainer->setEndOffsetX(0);
- $spContainer->setEndOffsetY(0);
-
- $spgrContainer->addChild($spContainer);
- $iInc++;
- }
- }
-
- // identifier clusters, used for workbook Escher object
- $this->_IDCLs[$dgId] = $lastReducedSpId;
-
- // set last shape index
- $dgContainer->setLastSpId($lastSpId);
-
- // set the Escher object
- $this->_writerWorksheets[$sheetIndex]->setEscher($escher);
- }
- }
-
- /**
- * Build the Escher object corresponding to the MSODRAWINGGROUP record
- */
- private function _buildWorkbookEscher()
- {
- $escher = null;
-
- // any drawings in this workbook?
- $found = false;
- foreach ($this->_phpExcel->getAllSheets() as $sheet) {
- if (count($sheet->getDrawingCollection()) > 0) {
- $found = true;
- break;
- }
- }
-
- // nothing to do if there are no drawings
- if (!$found) {
- return;
- }
-
- // if we reach here, then there are drawings in the workbook
- $escher = new PHPExcel_Shared_Escher();
-
- // dggContainer
- $dggContainer = new PHPExcel_Shared_Escher_DggContainer();
- $escher->setDggContainer($dggContainer);
-
- // set IDCLs (identifier clusters)
- $dggContainer->setIDCLs($this->_IDCLs);
-
- // this loop is for determining maximum shape identifier of all drawing
- $spIdMax = 0;
- $totalCountShapes = 0;
- $countDrawings = 0;
-
- foreach ($this->_phpExcel->getAllsheets() as $sheet) {
- $sheetCountShapes = 0; // count number of shapes (minus group shape), in sheet
-
- if (count($sheet->getDrawingCollection()) > 0) {
- ++$countDrawings;
-
- foreach ($sheet->getDrawingCollection() as $drawing) {
- ++$sheetCountShapes;
- ++$totalCountShapes;
-
- $spId = $sheetCountShapes
- | ($this->_phpExcel->getIndex($sheet) + 1) << 10;
- $spIdMax = max($spId, $spIdMax);
- }
- }
- }
-
- $dggContainer->setSpIdMax($spIdMax + 1);
- $dggContainer->setCDgSaved($countDrawings);
- $dggContainer->setCSpSaved($totalCountShapes + $countDrawings); // total number of shapes incl. one group shapes per drawing
-
- // bstoreContainer
- $bstoreContainer = new PHPExcel_Shared_Escher_DggContainer_BstoreContainer();
- $dggContainer->setBstoreContainer($bstoreContainer);
-
- // the BSE's (all the images)
- foreach ($this->_phpExcel->getAllsheets() as $sheet) {
- foreach ($sheet->getDrawingCollection() as $drawing) {
- if ($drawing instanceof PHPExcel_Worksheet_Drawing) {
-
- $filename = $drawing->getPath();
-
- list($imagesx, $imagesy, $imageFormat) = getimagesize($filename);
-
- switch ($imageFormat) {
-
- case 1: // GIF, not supported by BIFF8, we convert to PNG
- $blipType = PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE::BLIPTYPE_PNG;
- ob_start();
- imagepng(imagecreatefromgif($filename));
- $blipData = ob_get_contents();
- ob_end_clean();
- break;
-
- case 2: // JPEG
- $blipType = PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE::BLIPTYPE_JPEG;
- $blipData = file_get_contents($filename);
- break;
-
- case 3: // PNG
- $blipType = PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE::BLIPTYPE_PNG;
- $blipData = file_get_contents($filename);
- break;
-
- case 6: // Windows DIB (BMP), we convert to PNG
- $blipType = PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE::BLIPTYPE_PNG;
- ob_start();
- imagepng(PHPExcel_Shared_Drawing::imagecreatefrombmp($filename));
- $blipData = ob_get_contents();
- ob_end_clean();
- break;
-
- default: continue 2;
-
- }
-
- $blip = new PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE_Blip();
- $blip->setData($blipData);
-
- $BSE = new PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE();
- $BSE->setBlipType($blipType);
- $BSE->setBlip($blip);
-
- $bstoreContainer->addBSE($BSE);
-
- } else if ($drawing instanceof PHPExcel_Worksheet_MemoryDrawing) {
-
- switch ($drawing->getRenderingFunction()) {
-
- case PHPExcel_Worksheet_MemoryDrawing::RENDERING_JPEG:
- $blipType = PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE::BLIPTYPE_JPEG;
- $renderingFunction = 'imagejpeg';
- break;
-
- case PHPExcel_Worksheet_MemoryDrawing::RENDERING_GIF:
- case PHPExcel_Worksheet_MemoryDrawing::RENDERING_PNG:
- case PHPExcel_Worksheet_MemoryDrawing::RENDERING_DEFAULT:
- $blipType = PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE::BLIPTYPE_PNG;
- $renderingFunction = 'imagepng';
- break;
-
- }
-
- ob_start();
- call_user_func($renderingFunction, $drawing->getImageResource());
- $blipData = ob_get_contents();
- ob_end_clean();
-
- $blip = new PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE_Blip();
- $blip->setData($blipData);
-
- $BSE = new PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE();
- $BSE->setBlipType($blipType);
- $BSE->setBlip($blip);
-
- $bstoreContainer->addBSE($BSE);
- }
- }
- }
-
- // Set the Escher object
- $this->_writerWorkbook->setEscher($escher);
- }
-
- /**
- * Build the OLE Part for DocumentSummary Information
- * @return string
- */
- private function _writeDocumentSummaryInformation(){
-
- // offset: 0; size: 2; must be 0xFE 0xFF (UTF-16 LE byte order mark)
- $data = pack('v', 0xFFFE);
- // offset: 2; size: 2;
- $data .= pack('v', 0x0000);
- // offset: 4; size: 2; OS version
- $data .= pack('v', 0x0106);
- // offset: 6; size: 2; OS indicator
- $data .= pack('v', 0x0002);
- // offset: 8; size: 16
- $data .= pack('VVVV', 0x00, 0x00, 0x00, 0x00);
- // offset: 24; size: 4; section count
- $data .= pack('V', 0x0001);
-
- // offset: 28; size: 16; first section's class id: 02 d5 cd d5 9c 2e 1b 10 93 97 08 00 2b 2c f9 ae
- $data .= pack('vvvvvvvv', 0xD502, 0xD5CD, 0x2E9C, 0x101B, 0x9793, 0x0008, 0x2C2B, 0xAEF9);
- // offset: 44; size: 4; offset of the start
- $data .= pack('V', 0x30);
-
- // SECTION
- $dataSection = array();
- $dataSection_NumProps = 0;
- $dataSection_Summary = '';
- $dataSection_Content = '';
-
- // GKPIDDSI_CODEPAGE: CodePage
- $dataSection[] = array('summary'=> array('pack' => 'V', 'data' => 0x01),
- 'offset' => array('pack' => 'V'),
- 'type' => array('pack' => 'V', 'data' => 0x02), // 2 byte signed integer
- 'data' => array('data' => 1252));
- $dataSection_NumProps++;
-
- // GKPIDDSI_CATEGORY : Category
- if($this->_phpExcel->getProperties()->getCategory()){
- $dataProp = $this->_phpExcel->getProperties()->getCategory();
- $dataProp = 'Test result file';
- $dataSection[] = array('summary'=> array('pack' => 'V', 'data' => 0x02),
- 'offset' => array('pack' => 'V'),
- 'type' => array('pack' => 'V', 'data' => 0x1E),
- 'data' => array('data' => $dataProp, 'length' => strlen($dataProp)));
- $dataSection_NumProps++;
- }
- // GKPIDDSI_VERSION :Version of the application that wrote the property storage
- $dataSection[] = array('summary'=> array('pack' => 'V', 'data' => 0x17),
- 'offset' => array('pack' => 'V'),
- 'type' => array('pack' => 'V', 'data' => 0x03),
- 'data' => array('pack' => 'V', 'data' => 0x000C0000));
- $dataSection_NumProps++;
- // GKPIDDSI_SCALE : FALSE
- $dataSection[] = array('summary'=> array('pack' => 'V', 'data' => 0x0B),
- 'offset' => array('pack' => 'V'),
- 'type' => array('pack' => 'V', 'data' => 0x0B),
- 'data' => array('data' => false));
- $dataSection_NumProps++;
- // GKPIDDSI_LINKSDIRTY : True if any of the values for the linked properties have changed outside of the application
- $dataSection[] = array('summary'=> array('pack' => 'V', 'data' => 0x10),
- 'offset' => array('pack' => 'V'),
- 'type' => array('pack' => 'V', 'data' => 0x0B),
- 'data' => array('data' => false));
- $dataSection_NumProps++;
- // GKPIDDSI_SHAREDOC : FALSE
- $dataSection[] = array('summary'=> array('pack' => 'V', 'data' => 0x13),
- 'offset' => array('pack' => 'V'),
- 'type' => array('pack' => 'V', 'data' => 0x0B),
- 'data' => array('data' => false));
- $dataSection_NumProps++;
- // GKPIDDSI_HYPERLINKSCHANGED : True if any of the values for the _PID_LINKS (hyperlink text) have changed outside of the application
- $dataSection[] = array('summary'=> array('pack' => 'V', 'data' => 0x16),
- 'offset' => array('pack' => 'V'),
- 'type' => array('pack' => 'V', 'data' => 0x0B),
- 'data' => array('data' => false));
- $dataSection_NumProps++;
-
- // GKPIDDSI_DOCSPARTS
- // MS-OSHARED p75 (2.3.3.2.2.1)
- // Structure is VtVecUnalignedLpstrValue (2.3.3.1.9)
- // cElements
- $dataProp = pack('v', 0x0001);
- $dataProp .= pack('v', 0x0000);
- // array of UnalignedLpstr
- // cch
- $dataProp .= pack('v', 0x000A);
- $dataProp .= pack('v', 0x0000);
- // value
- $dataProp .= 'Worksheet'.chr(0);
-
- $dataSection[] = array('summary'=> array('pack' => 'V', 'data' => 0x0D),
- 'offset' => array('pack' => 'V'),
- 'type' => array('pack' => 'V', 'data' => 0x101E),
- 'data' => array('data' => $dataProp, 'length' => strlen($dataProp)));
- $dataSection_NumProps++;
-
- // GKPIDDSI_HEADINGPAIR
- // VtVecHeadingPairValue
- // cElements
- $dataProp = pack('v', 0x0002);
- $dataProp .= pack('v', 0x0000);
- // Array of vtHeadingPair
- // vtUnalignedString - headingString
- // stringType
- $dataProp .= pack('v', 0x001E);
- // padding
- $dataProp .= pack('v', 0x0000);
- // UnalignedLpstr
- // cch
- $dataProp .= pack('v', 0x0013);
- $dataProp .= pack('v', 0x0000);
- // value
- $dataProp .= 'Feuilles de calcul';
- // vtUnalignedString - headingParts
- // wType : 0x0003 = 32 bit signed integer
- $dataProp .= pack('v', 0x0300);
- // padding
- $dataProp .= pack('v', 0x0000);
- // value
- $dataProp .= pack('v', 0x0100);
- $dataProp .= pack('v', 0x0000);
- $dataProp .= pack('v', 0x0000);
- $dataProp .= pack('v', 0x0000);
-
- $dataSection[] = array('summary'=> array('pack' => 'V', 'data' => 0x0C),
- 'offset' => array('pack' => 'V'),
- 'type' => array('pack' => 'V', 'data' => 0x100C),
- 'data' => array('data' => $dataProp, 'length' => strlen($dataProp)));
- $dataSection_NumProps++;
-
- // 4 Section Length
- // 4 Property count
- // 8 * $dataSection_NumProps (8 = ID (4) + OffSet(4))
- $dataSection_Content_Offset = 8 + $dataSection_NumProps * 8;
- foreach ($dataSection as $dataProp){
- // Summary
- $dataSection_Summary .= pack($dataProp['summary']['pack'], $dataProp['summary']['data']);
- // Offset
- $dataSection_Summary .= pack($dataProp['offset']['pack'], $dataSection_Content_Offset);
- // DataType
- $dataSection_Content .= pack($dataProp['type']['pack'], $dataProp['type']['data']);
- // Data
- if($dataProp['type']['data'] == 0x02){ // 2 byte signed integer
- $dataSection_Content .= pack('V', $dataProp['data']['data']);
-
- $dataSection_Content_Offset += 4 + 4;
- }
- elseif($dataProp['type']['data'] == 0x03){ // 4 byte signed integer
- $dataSection_Content .= pack('V', $dataProp['data']['data']);
-
- $dataSection_Content_Offset += 4 + 4;
- }
- elseif($dataProp['type']['data'] == 0x0B){ // Boolean
- if($dataProp['data']['data'] == false){
- $dataSection_Content .= pack('V', 0x0000);
- } else {
- $dataSection_Content .= pack('V', 0x0001);
- }
- $dataSection_Content_Offset += 4 + 4;
- }
- elseif($dataProp['type']['data'] == 0x1E){ // null-terminated string prepended by dword string length
- // Null-terminated string
- $dataProp['data']['data'] .= chr(0);
- $dataProp['data']['length'] += 1;
- // Complete the string with null string for being a %4
- $dataProp['data']['length'] = $dataProp['data']['length'] + ((4 - $dataProp['data']['length'] % 4)==4 ? 0 : (4 - $dataProp['data']['length'] % 4));
- $dataProp['data']['data'] = str_pad($dataProp['data']['data'], $dataProp['data']['length'], chr(0), STR_PAD_RIGHT);
-
- $dataSection_Content .= pack('V', $dataProp['data']['length']);
- $dataSection_Content .= $dataProp['data']['data'];
-
- $dataSection_Content_Offset += 4 + 4 + strlen($dataProp['data']['data']);
- }
- elseif($dataProp['type']['data'] == 0x40){ // Filetime (64-bit value representing the number of 100-nanosecond intervals since January 1, 1601)
- $dataSection_Content .= $dataProp['data']['data'];
-
- $dataSection_Content_Offset += 4 + 8;
- }
- else {
- // Data Type Not Used at the moment
- $dataSection_Content .= $dataProp['data']['data'];
-
- $dataSection_Content_Offset += 4 + $dataProp['data']['length'];
- }
- }
- // Now $dataSection_Content_Offset contains the size of the content
-
- // section header
- // offset: $secOffset; size: 4; section length
- // + x Size of the content (summary + content)
- $data .= pack('V', $dataSection_Content_Offset);
- // offset: $secOffset+4; size: 4; property count
- $data .= pack('V', $dataSection_NumProps);
- // Section Summary
- $data .= $dataSection_Summary;
- // Section Content
- $data .= $dataSection_Content;
-
- return $data;
- }
-
- /**
- * Build the OLE Part for Summary Information
- * @return string
- */
- private function _writeSummaryInformation(){
- // offset: 0; size: 2; must be 0xFE 0xFF (UTF-16 LE byte order mark)
- $data = pack('v', 0xFFFE);
- // offset: 2; size: 2;
- $data .= pack('v', 0x0000);
- // offset: 4; size: 2; OS version
- $data .= pack('v', 0x0106);
- // offset: 6; size: 2; OS indicator
- $data .= pack('v', 0x0002);
- // offset: 8; size: 16
- $data .= pack('VVVV', 0x00, 0x00, 0x00, 0x00);
- // offset: 24; size: 4; section count
- $data .= pack('V', 0x0001);
-
- // offset: 28; size: 16; first section's class id: e0 85 9f f2 f9 4f 68 10 ab 91 08 00 2b 27 b3 d9
- $data .= pack('vvvvvvvv', 0x85E0, 0xF29F, 0x4FF9, 0x1068, 0x91AB, 0x0008, 0x272B, 0xD9B3);
- // offset: 44; size: 4; offset of the start
- $data .= pack('V', 0x30);
-
- // SECTION
- $dataSection = array();
- $dataSection_NumProps = 0;
- $dataSection_Summary = '';
- $dataSection_Content = '';
-
- // CodePage : CP-1252
- $dataSection[] = array('summary'=> array('pack' => 'V', 'data' => 0x01),
- 'offset' => array('pack' => 'V'),
- 'type' => array('pack' => 'V', 'data' => 0x02), // 2 byte signed integer
- 'data' => array('data' => 1252));
- $dataSection_NumProps++;
-
- // Title
- if($this->_phpExcel->getProperties()->getTitle()){
- $dataProp = $this->_phpExcel->getProperties()->getTitle();
- $dataSection[] = array('summary'=> array('pack' => 'V', 'data' => 0x02),
- 'offset' => array('pack' => 'V'),
- 'type' => array('pack' => 'V', 'data' => 0x1E), // null-terminated string prepended by dword string length
- 'data' => array('data' => $dataProp, 'length' => strlen($dataProp)));
- $dataSection_NumProps++;
- }
- // Subject
- if($this->_phpExcel->getProperties()->getSubject()){
- $dataProp = $this->_phpExcel->getProperties()->getSubject();
- $dataSection[] = array('summary'=> array('pack' => 'V', 'data' => 0x03),
- 'offset' => array('pack' => 'V'),
- 'type' => array('pack' => 'V', 'data' => 0x1E), // null-terminated string prepended by dword string length
- 'data' => array('data' => $dataProp, 'length' => strlen($dataProp)));
- $dataSection_NumProps++;
- }
- // Author (Creator)
- if($this->_phpExcel->getProperties()->getCreator()){
- $dataProp = $this->_phpExcel->getProperties()->getCreator();
- $dataSection[] = array('summary'=> array('pack' => 'V', 'data' => 0x04),
- 'offset' => array('pack' => 'V'),
- 'type' => array('pack' => 'V', 'data' => 0x1E), // null-terminated string prepended by dword string length
- 'data' => array('data' => $dataProp, 'length' => strlen($dataProp)));
- $dataSection_NumProps++;
- }
- // Keywords
- if($this->_phpExcel->getProperties()->getKeywords()){
- $dataProp = $this->_phpExcel->getProperties()->getKeywords();
- $dataSection[] = array('summary'=> array('pack' => 'V', 'data' => 0x05),
- 'offset' => array('pack' => 'V'),
- 'type' => array('pack' => 'V', 'data' => 0x1E), // null-terminated string prepended by dword string length
- 'data' => array('data' => $dataProp, 'length' => strlen($dataProp)));
- $dataSection_NumProps++;
- }
- // Comments (Description)
- if($this->_phpExcel->getProperties()->getDescription()){
- $dataProp = $this->_phpExcel->getProperties()->getDescription();
- $dataSection[] = array('summary'=> array('pack' => 'V', 'data' => 0x06),
- 'offset' => array('pack' => 'V'),
- 'type' => array('pack' => 'V', 'data' => 0x1E), // null-terminated string prepended by dword string length
- 'data' => array('data' => $dataProp, 'length' => strlen($dataProp)));
- $dataSection_NumProps++;
- }
- // Last Saved By (LastModifiedBy)
- if($this->_phpExcel->getProperties()->getLastModifiedBy()){
- $dataProp = $this->_phpExcel->getProperties()->getLastModifiedBy();
- $dataSection[] = array('summary'=> array('pack' => 'V', 'data' => 0x08),
- 'offset' => array('pack' => 'V'),
- 'type' => array('pack' => 'V', 'data' => 0x1E), // null-terminated string prepended by dword string length
- 'data' => array('data' => $dataProp, 'length' => strlen($dataProp)));
- $dataSection_NumProps++;
- }
- // Created Date/Time
- if($this->_phpExcel->getProperties()->getCreated()){
- $dataProp = $this->_phpExcel->getProperties()->getCreated();
- $dataSection[] = array('summary'=> array('pack' => 'V', 'data' => 0x0C),
- 'offset' => array('pack' => 'V'),
- 'type' => array('pack' => 'V', 'data' => 0x40), // Filetime (64-bit value representing the number of 100-nanosecond intervals since January 1, 1601)
- 'data' => array('data' => PHPExcel_Shared_OLE::LocalDate2OLE($dataProp)));
- $dataSection_NumProps++;
- }
- // Modified Date/Time
- if($this->_phpExcel->getProperties()->getModified()){
- $dataProp = $this->_phpExcel->getProperties()->getModified();
- $dataSection[] = array('summary'=> array('pack' => 'V', 'data' => 0x0D),
- 'offset' => array('pack' => 'V'),
- 'type' => array('pack' => 'V', 'data' => 0x40), // Filetime (64-bit value representing the number of 100-nanosecond intervals since January 1, 1601)
- 'data' => array('data' => PHPExcel_Shared_OLE::LocalDate2OLE($dataProp)));
- $dataSection_NumProps++;
- }
- // Security
- $dataSection[] = array('summary'=> array('pack' => 'V', 'data' => 0x13),
- 'offset' => array('pack' => 'V'),
- 'type' => array('pack' => 'V', 'data' => 0x03), // 4 byte signed integer
- 'data' => array('data' => 0x00));
- $dataSection_NumProps++;
-
-
- // 4 Section Length
- // 4 Property count
- // 8 * $dataSection_NumProps (8 = ID (4) + OffSet(4))
- $dataSection_Content_Offset = 8 + $dataSection_NumProps * 8;
- foreach ($dataSection as $dataProp){
- // Summary
- $dataSection_Summary .= pack($dataProp['summary']['pack'], $dataProp['summary']['data']);
- // Offset
- $dataSection_Summary .= pack($dataProp['offset']['pack'], $dataSection_Content_Offset);
- // DataType
- $dataSection_Content .= pack($dataProp['type']['pack'], $dataProp['type']['data']);
- // Data
- if($dataProp['type']['data'] == 0x02){ // 2 byte signed integer
- $dataSection_Content .= pack('V', $dataProp['data']['data']);
-
- $dataSection_Content_Offset += 4 + 4;
- }
- elseif($dataProp['type']['data'] == 0x03){ // 4 byte signed integer
- $dataSection_Content .= pack('V', $dataProp['data']['data']);
-
- $dataSection_Content_Offset += 4 + 4;
- }
- elseif($dataProp['type']['data'] == 0x1E){ // null-terminated string prepended by dword string length
- // Null-terminated string
- $dataProp['data']['data'] .= chr(0);
- $dataProp['data']['length'] += 1;
- // Complete the string with null string for being a %4
- $dataProp['data']['length'] = $dataProp['data']['length'] + ((4 - $dataProp['data']['length'] % 4)==4 ? 0 : (4 - $dataProp['data']['length'] % 4));
- $dataProp['data']['data'] = str_pad($dataProp['data']['data'], $dataProp['data']['length'], chr(0), STR_PAD_RIGHT);
-
- $dataSection_Content .= pack('V', $dataProp['data']['length']);
- $dataSection_Content .= $dataProp['data']['data'];
-
- $dataSection_Content_Offset += 4 + 4 + strlen($dataProp['data']['data']);
- }
- elseif($dataProp['type']['data'] == 0x40){ // Filetime (64-bit value representing the number of 100-nanosecond intervals since January 1, 1601)
- $dataSection_Content .= $dataProp['data']['data'];
-
- $dataSection_Content_Offset += 4 + 8;
- }
- else {
- // Data Type Not Used at the moment
- }
- }
- // Now $dataSection_Content_Offset contains the size of the content
-
- // section header
- // offset: $secOffset; size: 4; section length
- // + x Size of the content (summary + content)
- $data .= pack('V', $dataSection_Content_Offset);
- // offset: $secOffset+4; size: 4; property count
- $data .= pack('V', $dataSection_NumProps);
- // Section Summary
- $data .= $dataSection_Summary;
- // Section Content
- $data .= $dataSection_Content;
-
- return $data;
- }
-} \ No newline at end of file
diff --git a/admin/survey/excel/PHPExcel/Writer/Excel5/BIFFwriter.php b/admin/survey/excel/PHPExcel/Writer/Excel5/BIFFwriter.php
deleted file mode 100644
index 2c930c3..0000000
--- a/admin/survey/excel/PHPExcel/Writer/Excel5/BIFFwriter.php
+++ /dev/null
@@ -1,255 +0,0 @@
-<?php
-/**
- * PHPExcel
- *
- * Copyright (c) 2006 - 2012 PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel_Writer_Excel5
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-// Original file header of PEAR::Spreadsheet_Excel_Writer_BIFFwriter (used as the base for this class):
-// -----------------------------------------------------------------------------------------
-// * Module written/ported by Xavier Noguer <xnoguer@rezebra.com>
-// *
-// * The majority of this is _NOT_ my code. I simply ported it from the
-// * PERL Spreadsheet::WriteExcel module.
-// *
-// * The author of the Spreadsheet::WriteExcel module is John McNamara
-// * <jmcnamara@cpan.org>
-// *
-// * I _DO_ maintain this code, and John McNamara has nothing to do with the
-// * porting of this code to PHP. Any questions directly related to this
-// * class library should be directed to me.
-// *
-// * License Information:
-// *
-// * Spreadsheet_Excel_Writer: A library for generating Excel Spreadsheets
-// * Copyright (c) 2002-2003 Xavier Noguer xnoguer@rezebra.com
-// *
-// * This library is free software; you can redistribute it and/or
-// * modify it under the terms of the GNU Lesser General Public
-// * License as published by the Free Software Foundation; either
-// * version 2.1 of the License, or (at your option) any later version.
-// *
-// * This library is distributed in the hope that it will be useful,
-// * but WITHOUT ANY WARRANTY; without even the implied warranty of
-// * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// * Lesser General Public License for more details.
-// *
-// * You should have received a copy of the GNU Lesser General Public
-// * License along with this library; if not, write to the Free Software
-// * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-// */
-
-
-/**
- * PHPExcel_Writer_Excel5_BIFFwriter
- *
- * @category PHPExcel
- * @package PHPExcel_Writer_Excel5
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- */
-class PHPExcel_Writer_Excel5_BIFFwriter
-{
- /**
- * The byte order of this architecture. 0 => little endian, 1 => big endian
- * @var integer
- */
- private static $_byte_order;
-
- /**
- * The string containing the data of the BIFF stream
- * @var string
- */
- public $_data;
-
- /**
- * The size of the data in bytes. Should be the same as strlen($this->_data)
- * @var integer
- */
- public $_datasize;
-
- /**
- * The maximum length for a BIFF record (excluding record header and length field). See _addContinue()
- * @var integer
- * @see _addContinue()
- */
- public $_limit = 8224;
-
- /**
- * Constructor
- */
- public function __construct()
- {
- $this->_data = '';
- $this->_datasize = 0;
-// $this->_limit = 8224;
- }
-
- /**
- * Determine the byte order and store it as class data to avoid
- * recalculating it for each call to new().
- *
- * @return int
- */
- public static function getByteOrder()
- {
- if (!isset(self::$_byte_order)) {
- // Check if "pack" gives the required IEEE 64bit float
- $teststr = pack("d", 1.2345);
- $number = pack("C8", 0x8D, 0x97, 0x6E, 0x12, 0x83, 0xC0, 0xF3, 0x3F);
- if ($number == $teststr) {
- $byte_order = 0; // Little Endian
- } elseif ($number == strrev($teststr)){
- $byte_order = 1; // Big Endian
- } else {
- // Give up. I'll fix this in a later version.
- throw new Exception("Required floating point format not supported on this platform.");
- }
- self::$_byte_order = $byte_order;
- }
-
- return self::$_byte_order;
- }
-
- /**
- * General storage function
- *
- * @param string $data binary data to append
- * @access private
- */
- function _append($data)
- {
- if (strlen($data) - 4 > $this->_limit) {
- $data = $this->_addContinue($data);
- }
- $this->_data .= $data;
- $this->_datasize += strlen($data);
- }
-
- /**
- * General storage function like _append, but returns string instead of modifying $this->_data
- *
- * @param string $data binary data to write
- * @return string
- */
- public function writeData($data)
- {
- if (strlen($data) - 4 > $this->_limit) {
- $data = $this->_addContinue($data);
- }
- $this->_datasize += strlen($data);
-
- return $data;
- }
-
- /**
- * Writes Excel BOF record to indicate the beginning of a stream or
- * sub-stream in the BIFF file.
- *
- * @param integer $type Type of BIFF file to write: 0x0005 Workbook,
- * 0x0010 Worksheet.
- * @access private
- */
- function _storeBof($type)
- {
- $record = 0x0809; // Record identifier (BIFF5-BIFF8)
- $length = 0x0010;
-
- // by inspection of real files, MS Office Excel 2007 writes the following
- $unknown = pack("VV", 0x000100D1, 0x00000406);
-
- $build = 0x0DBB; // Excel 97
- $year = 0x07CC; // Excel 97
-
- $version = 0x0600; // BIFF8
-
- $header = pack("vv", $record, $length);
- $data = pack("vvvv", $version, $type, $build, $year);
- $this->_append($header . $data . $unknown);
- }
-
- /**
- * Writes Excel EOF record to indicate the end of a BIFF stream.
- *
- * @access private
- */
- function _storeEof()
- {
- $record = 0x000A; // Record identifier
- $length = 0x0000; // Number of bytes to follow
-
- $header = pack("vv", $record, $length);
- $this->_append($header);
- }
-
- /**
- * Writes Excel EOF record to indicate the end of a BIFF stream.
- *
- * @access private
- */
- public function writeEof()
- {
- $record = 0x000A; // Record identifier
- $length = 0x0000; // Number of bytes to follow
- $header = pack("vv", $record, $length);
- return $this->writeData($header);
- }
-
- /**
- * Excel limits the size of BIFF records. In Excel 5 the limit is 2084 bytes. In
- * Excel 97 the limit is 8228 bytes. Records that are longer than these limits
- * must be split up into CONTINUE blocks.
- *
- * This function takes a long BIFF record and inserts CONTINUE records as
- * necessary.
- *
- * @param string $data The original binary data to be written
- * @return string A very convenient string of continue blocks
- * @access private
- */
- function _addContinue($data)
- {
- $limit = $this->_limit;
- $record = 0x003C; // Record identifier
-
- // The first 2080/8224 bytes remain intact. However, we have to change
- // the length field of the record.
- $tmp = substr($data, 0, 2) . pack("v", $limit) . substr($data, 4, $limit);
-
- $header = pack("vv", $record, $limit); // Headers for continue records
-
- // Retrieve chunks of 2080/8224 bytes +4 for the header.
- $data_length = strlen($data);
- for ($i = $limit + 4; $i < ($data_length - $limit); $i += $limit) {
- $tmp .= $header;
- $tmp .= substr($data, $i, $limit);
- }
-
- // Retrieve the last chunk of data
- $header = pack("vv", $record, strlen($data) - $i);
- $tmp .= $header;
- $tmp .= substr($data, $i, strlen($data) - $i);
-
- return $tmp;
- }
-
-}
diff --git a/admin/survey/excel/PHPExcel/Writer/Excel5/Escher.php b/admin/survey/excel/PHPExcel/Writer/Excel5/Escher.php
deleted file mode 100644
index b0e85a2..0000000
--- a/admin/survey/excel/PHPExcel/Writer/Excel5/Escher.php
+++ /dev/null
@@ -1,537 +0,0 @@
-<?php
-/**
- * PHPExcel
- *
- * Copyright (c) 2006 - 2012 PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel_Writer_Excel5
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-
-/**
- * PHPExcel_Shared_Escher_DggContainer_BstoreContainer
- *
- * @category PHPExcel
- * @package PHPExcel_Writer_Excel5
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- */
-class PHPExcel_Writer_Excel5_Escher
-{
- /**
- * The object we are writing
- */
- private $_object;
-
- /**
- * The written binary data
- */
- private $_data;
-
- /**
- * Shape offsets. Positions in binary stream where a new shape record begins
- *
- * @var array
- */
- private $_spOffsets;
-
- /**
- * Shape types.
- *
- * @var array
- */
- private $_spTypes;
-
- /**
- * Constructor
- *
- * @param mixed
- */
- public function __construct($object)
- {
- $this->_object = $object;
- }
-
- /**
- * Process the object to be written
- */
- public function close()
- {
- // initialize
- $this->_data = '';
-
- switch (get_class($this->_object)) {
-
- case 'PHPExcel_Shared_Escher':
- if ($dggContainer = $this->_object->getDggContainer()) {
- $writer = new PHPExcel_Writer_Excel5_Escher($dggContainer);
- $this->_data = $writer->close();
- } else if ($dgContainer = $this->_object->getDgContainer()) {
- $writer = new PHPExcel_Writer_Excel5_Escher($dgContainer);
- $this->_data = $writer->close();
- $this->_spOffsets = $writer->getSpOffsets();
- $this->_spTypes = $writer->getSpTypes();
- }
- break;
-
- case 'PHPExcel_Shared_Escher_DggContainer':
- // this is a container record
-
- // initialize
- $innerData = '';
-
- // write the dgg
- $recVer = 0x0;
- $recInstance = 0x0000;
- $recType = 0xF006;
-
- $recVerInstance = $recVer;
- $recVerInstance |= $recInstance << 4;
-
- // dgg data
- $dggData =
- pack('VVVV'
- , $this->_object->getSpIdMax() // maximum shape identifier increased by one
- , $this->_object->getCDgSaved() + 1 // number of file identifier clusters increased by one
- , $this->_object->getCSpSaved()
- , $this->_object->getCDgSaved() // count total number of drawings saved
- );
-
- // add file identifier clusters (one per drawing)
- $IDCLs = $this->_object->getIDCLs();
-
- foreach ($IDCLs as $dgId => $maxReducedSpId) {
- $dggData .= pack('VV', $dgId, $maxReducedSpId + 1);
- }
-
- $header = pack('vvV', $recVerInstance, $recType, strlen($dggData));
- $innerData .= $header . $dggData;
-
- // write the bstoreContainer
- if ($bstoreContainer = $this->_object->getBstoreContainer()) {
- $writer = new PHPExcel_Writer_Excel5_Escher($bstoreContainer);
- $innerData .= $writer->close();
- }
-
- // write the record
- $recVer = 0xF;
- $recInstance = 0x0000;
- $recType = 0xF000;
- $length = strlen($innerData);
-
- $recVerInstance = $recVer;
- $recVerInstance |= $recInstance << 4;
-
- $header = pack('vvV', $recVerInstance, $recType, $length);
-
- $this->_data = $header . $innerData;
- break;
-
- case 'PHPExcel_Shared_Escher_DggContainer_BstoreContainer':
- // this is a container record
-
- // initialize
- $innerData = '';
-
- // treat the inner data
- if ($BSECollection = $this->_object->getBSECollection()) {
- foreach ($BSECollection as $BSE) {
- $writer = new PHPExcel_Writer_Excel5_Escher($BSE);
- $innerData .= $writer->close();
- }
- }
-
- // write the record
- $recVer = 0xF;
- $recInstance = count($this->_object->getBSECollection());
- $recType = 0xF001;
- $length = strlen($innerData);
-
- $recVerInstance = $recVer;
- $recVerInstance |= $recInstance << 4;
-
- $header = pack('vvV', $recVerInstance, $recType, $length);
-
- $this->_data = $header . $innerData;
- break;
-
- case 'PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE':
- // this is a semi-container record
-
- // initialize
- $innerData = '';
-
- // here we treat the inner data
- if ($blip = $this->_object->getBlip()) {
- $writer = new PHPExcel_Writer_Excel5_Escher($blip);
- $innerData .= $writer->close();
- }
-
- // initialize
- $data = '';
-
- $btWin32 = $this->_object->getBlipType();
- $btMacOS = $this->_object->getBlipType();
- $data .= pack('CC', $btWin32, $btMacOS);
-
- $rgbUid = pack('VVVV', 0,0,0,0); // todo
- $data .= $rgbUid;
-
- $tag = 0;
- $size = strlen($innerData);
- $cRef = 1;
- $foDelay = 0; //todo
- $unused1 = 0x0;
- $cbName = 0x0;
- $unused2 = 0x0;
- $unused3 = 0x0;
- $data .= pack('vVVVCCCC', $tag, $size, $cRef, $foDelay, $unused1, $cbName, $unused2, $unused3);
-
- $data .= $innerData;
-
- // write the record
- $recVer = 0x2;
- $recInstance = $this->_object->getBlipType();
- $recType = 0xF007;
- $length = strlen($data);
-
- $recVerInstance = $recVer;
- $recVerInstance |= $recInstance << 4;
-
- $header = pack('vvV', $recVerInstance, $recType, $length);
-
- $this->_data = $header;
-
- $this->_data .= $data;
- break;
-
- case 'PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE_Blip':
- // this is an atom record
-
- // write the record
- switch ($this->_object->getParent()->getBlipType()) {
-
- case PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE::BLIPTYPE_JPEG:
- // initialize
- $innerData = '';
-
- $rgbUid1 = pack('VVVV', 0,0,0,0); // todo
- $innerData .= $rgbUid1;
-
- $tag = 0xFF; // todo
- $innerData .= pack('C', $tag);
-
- $innerData .= $this->_object->getData();
-
- $recVer = 0x0;
- $recInstance = 0x46A;
- $recType = 0xF01D;
- $length = strlen($innerData);
-
- $recVerInstance = $recVer;
- $recVerInstance |= $recInstance << 4;
-
- $header = pack('vvV', $recVerInstance, $recType, $length);
-
- $this->_data = $header;
-
- $this->_data .= $innerData;
- break;
-
- case PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE::BLIPTYPE_PNG:
- // initialize
- $innerData = '';
-
- $rgbUid1 = pack('VVVV', 0,0,0,0); // todo
- $innerData .= $rgbUid1;
-
- $tag = 0xFF; // todo
- $innerData .= pack('C', $tag);
-
- $innerData .= $this->_object->getData();
-
- $recVer = 0x0;
- $recInstance = 0x6E0;
- $recType = 0xF01E;
- $length = strlen($innerData);
-
- $recVerInstance = $recVer;
- $recVerInstance |= $recInstance << 4;
-
- $header = pack('vvV', $recVerInstance, $recType, $length);
-
- $this->_data = $header;
-
- $this->_data .= $innerData;
- break;
-
- }
- break;
-
- case 'PHPExcel_Shared_Escher_DgContainer':
- // this is a container record
-
- // initialize
- $innerData = '';
-
- // write the dg
- $recVer = 0x0;
- $recInstance = $this->_object->getDgId();
- $recType = 0xF008;
- $length = 8;
-
- $recVerInstance = $recVer;
- $recVerInstance |= $recInstance << 4;
-
- $header = pack('vvV', $recVerInstance, $recType, $length);
-
- // number of shapes in this drawing (including group shape)
- $countShapes = count($this->_object->getSpgrContainer()->getChildren());
- $innerData .= $header . pack('VV', $countShapes, $this->_object->getLastSpId());
- //$innerData .= $header . pack('VV', 0, 0);
-
- // write the spgrContainer
- if ($spgrContainer = $this->_object->getSpgrContainer()) {
- $writer = new PHPExcel_Writer_Excel5_Escher($spgrContainer);
- $innerData .= $writer->close();
-
- // get the shape offsets relative to the spgrContainer record
- $spOffsets = $writer->getSpOffsets();
- $spTypes = $writer->getSpTypes();
-
- // save the shape offsets relative to dgContainer
- foreach ($spOffsets as & $spOffset) {
- $spOffset += 24; // add length of dgContainer header data (8 bytes) plus dg data (16 bytes)
- }
-
- $this->_spOffsets = $spOffsets;
- $this->_spTypes = $spTypes;
- }
-
- // write the record
- $recVer = 0xF;
- $recInstance = 0x0000;
- $recType = 0xF002;
- $length = strlen($innerData);
-
- $recVerInstance = $recVer;
- $recVerInstance |= $recInstance << 4;
-
- $header = pack('vvV', $recVerInstance, $recType, $length);
-
- $this->_data = $header . $innerData;
- break;
-
- case 'PHPExcel_Shared_Escher_DgContainer_SpgrContainer':
- // this is a container record
-
- // initialize
- $innerData = '';
-
- // initialize spape offsets
- $totalSize = 8;
- $spOffsets = array();
- $spTypes = array();
-
- // treat the inner data
- foreach ($this->_object->getChildren() as $spContainer) {
- $writer = new PHPExcel_Writer_Excel5_Escher($spContainer);
- $spData = $writer->close();
- $innerData .= $spData;
-
- // save the shape offsets (where new shape records begin)
- $totalSize += strlen($spData);
- $spOffsets[] = $totalSize;
-
- $spTypes = array_merge($spTypes, $writer->getSpTypes());
- }
-
- // write the record
- $recVer = 0xF;
- $recInstance = 0x0000;
- $recType = 0xF003;
- $length = strlen($innerData);
-
- $recVerInstance = $recVer;
- $recVerInstance |= $recInstance << 4;
-
- $header = pack('vvV', $recVerInstance, $recType, $length);
-
- $this->_data = $header . $innerData;
- $this->_spOffsets = $spOffsets;
- $this->_spTypes = $spTypes;
- break;
-
- case 'PHPExcel_Shared_Escher_DgContainer_SpgrContainer_SpContainer':
- // initialize
- $data = '';
-
- // build the data
-
- // write group shape record, if necessary?
- if ($this->_object->getSpgr()) {
- $recVer = 0x1;
- $recInstance = 0x0000;
- $recType = 0xF009;
- $length = 0x00000010;
-
- $recVerInstance = $recVer;
- $recVerInstance |= $recInstance << 4;
-
- $header = pack('vvV', $recVerInstance, $recType, $length);
-
- $data .= $header . pack('VVVV', 0,0,0,0);
- }
- $this->_spTypes[] = ($this->_object->getSpType());
-
- // write the shape record
- $recVer = 0x2;
- $recInstance = $this->_object->getSpType(); // shape type
- $recType = 0xF00A;
- $length = 0x00000008;
-
- $recVerInstance = $recVer;
- $recVerInstance |= $recInstance << 4;
-
- $header = pack('vvV', $recVerInstance, $recType, $length);
-
- $data .= $header . pack('VV', $this->_object->getSpId(), $this->_object->getSpgr() ? 0x0005 : 0x0A00);
-
-
- // the options
- if ($this->_object->getOPTCollection()) {
- $optData = '';
-
- $recVer = 0x3;
- $recInstance = count($this->_object->getOPTCollection());
- $recType = 0xF00B;
- foreach ($this->_object->getOPTCollection() as $property => $value) {
- $optData .= pack('vV', $property, $value);
- }
- $length = strlen($optData);
-
- $recVerInstance = $recVer;
- $recVerInstance |= $recInstance << 4;
-
- $header = pack('vvV', $recVerInstance, $recType, $length);
- $data .= $header . $optData;
- }
-
- // the client anchor
- if ($this->_object->getStartCoordinates()) {
- $clientAnchorData = '';
-
- $recVer = 0x0;
- $recInstance = 0x0;
- $recType = 0xF010;
-
- // start coordinates
- list($column, $row) = PHPExcel_Cell::coordinateFromString($this->_object->getStartCoordinates());
- $c1 = PHPExcel_Cell::columnIndexFromString($column) - 1;
- $r1 = $row - 1;
-
- // start offsetX
- $startOffsetX = $this->_object->getStartOffsetX();
-
- // start offsetY
- $startOffsetY = $this->_object->getStartOffsetY();
-
- // end coordinates
- list($column, $row) = PHPExcel_Cell::coordinateFromString($this->_object->getEndCoordinates());
- $c2 = PHPExcel_Cell::columnIndexFromString($column) - 1;
- $r2 = $row - 1;
-
- // end offsetX
- $endOffsetX = $this->_object->getEndOffsetX();
-
- // end offsetY
- $endOffsetY = $this->_object->getEndOffsetY();
-
- $clientAnchorData = pack('vvvvvvvvv', $this->_object->getSpFlag(),
- $c1, $startOffsetX, $r1, $startOffsetY,
- $c2, $endOffsetX, $r2, $endOffsetY);
-
- $length = strlen($clientAnchorData);
-
- $recVerInstance = $recVer;
- $recVerInstance |= $recInstance << 4;
-
- $header = pack('vvV', $recVerInstance, $recType, $length);
- $data .= $header . $clientAnchorData;
- }
-
- // the client data, just empty for now
- if (!$this->_object->getSpgr()) {
- $clientDataData = '';
-
- $recVer = 0x0;
- $recInstance = 0x0;
- $recType = 0xF011;
-
- $length = strlen($clientDataData);
-
- $recVerInstance = $recVer;
- $recVerInstance |= $recInstance << 4;
-
- $header = pack('vvV', $recVerInstance, $recType, $length);
- $data .= $header . $clientDataData;
- }
-
- // write the record
- $recVer = 0xF;
- $recInstance = 0x0000;
- $recType = 0xF004;
- $length = strlen($data);
-
- $recVerInstance = $recVer;
- $recVerInstance |= $recInstance << 4;
-
- $header = pack('vvV', $recVerInstance, $recType, $length);
-
- $this->_data = $header . $data;
- break;
-
- }
-
- return $this->_data;
- }
-
- /**
- * Gets the shape offsets
- *
- * @return array
- */
- public function getSpOffsets()
- {
- return $this->_spOffsets;
- }
-
- /**
- * Gets the shape types
- *
- * @return array
- */
- public function getSpTypes()
- {
- return $this->_spTypes;
- }
-
-
-}
diff --git a/admin/survey/excel/PHPExcel/Writer/Excel5/Font.php b/admin/survey/excel/PHPExcel/Writer/Excel5/Font.php
deleted file mode 100644
index a891117..0000000
--- a/admin/survey/excel/PHPExcel/Writer/Excel5/Font.php
+++ /dev/null
@@ -1,165 +0,0 @@
-<?php
-/**
- * PHPExcel
- *
- * Copyright (c) 2006 - 2012 PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel_Writer_Excel5
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-
-/**
- * PHPExcel_Writer_Excel5_Font
- *
- * @category PHPExcel
- * @package PHPExcel_Writer_Excel5
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- */
-class PHPExcel_Writer_Excel5_Font
-{
- /**
- * Color index
- *
- * @var int
- */
- private $_colorIndex;
-
- /**
- * Font
- *
- * @var PHPExcel_Style_Font
- */
- private $_font;
-
- /**
- * Constructor
- *
- * @param PHPExcel_Style_Font $font
- */
- public function __construct(PHPExcel_Style_Font $font = null)
- {
- $this->_colorIndex = 0x7FFF;
- $this->_font = $font;
- }
-
- /**
- * Set the color index
- *
- * @param int $colorIndex
- */
- public function setColorIndex($colorIndex)
- {
- $this->_colorIndex = $colorIndex;
- }
-
- /**
- * Get font record data
- *
- * @return string
- */
- public function writeFont()
- {
- $font_outline = 0;
- $font_shadow = 0;
-
- $icv = $this->_colorIndex; // Index to color palette
- if ($this->_font->getSuperScript()) {
- $sss = 1;
- } else if ($this->_font->getSubScript()) {
- $sss = 2;
- } else {
- $sss = 0;
- }
- $bFamily = 0; // Font family
- $bCharSet = PHPExcel_Shared_Font::getCharsetFromFontName($this->_font->getName()); // Character set
-
- $record = 0x31; // Record identifier
- $reserved = 0x00; // Reserved
- $grbit = 0x00; // Font attributes
- if ($this->_font->getItalic()) {
- $grbit |= 0x02;
- }
- if ($this->_font->getStrikethrough()) {
- $grbit |= 0x08;
- }
- if ($font_outline) {
- $grbit |= 0x10;
- }
- if ($font_shadow) {
- $grbit |= 0x20;
- }
-
- $data = pack("vvvvvCCCC",
- $this->_font->getSize() * 20, // Fontsize (in twips)
- $grbit,
- $icv, // Colour
- self::_mapBold($this->_font->getBold()), // Font weight
- $sss, // Superscript/Subscript
- self::_mapUnderline($this->_font->getUnderline()),
- $bFamily,
- $bCharSet,
- $reserved
- );
- $data .= PHPExcel_Shared_String::UTF8toBIFF8UnicodeShort($this->_font->getName());
-
- $length = strlen($data);
- $header = pack("vv", $record, $length);
-
- return($header . $data);
- }
-
- /**
- * Map to BIFF5-BIFF8 codes for bold
- *
- * @param boolean $bold
- * @return int
- */
- private static function _mapBold($bold) {
- if ($bold) {
- return 0x2BC; // 700 = Bold font weight
- }
- return 0x190; // 400 = Normal font weight
- }
-
- /**
- * Map of BIFF2-BIFF8 codes for underline styles
- * @static array of int
- *
- */
- private static $_mapUnderline = array( PHPExcel_Style_Font::UNDERLINE_NONE => 0x00,
- PHPExcel_Style_Font::UNDERLINE_SINGLE => 0x01,
- PHPExcel_Style_Font::UNDERLINE_DOUBLE => 0x02,
- PHPExcel_Style_Font::UNDERLINE_SINGLEACCOUNTING => 0x21,
- PHPExcel_Style_Font::UNDERLINE_DOUBLEACCOUNTING => 0x22,
- );
- /**
- * Map underline
- *
- * @param string
- * @return int
- */
- private static function _mapUnderline($underline) {
- if (isset(self::$_mapUnderline[$underline]))
- return self::$_mapUnderline[$underline];
- return 0x00;
- }
-
-}
diff --git a/admin/survey/excel/PHPExcel/Writer/Excel5/Parser.php b/admin/survey/excel/PHPExcel/Writer/Excel5/Parser.php
deleted file mode 100644
index f986055..0000000
--- a/admin/survey/excel/PHPExcel/Writer/Excel5/Parser.php
+++ /dev/null
@@ -1,1583 +0,0 @@
-<?php
-/**
- * PHPExcel
- *
- * Copyright (c) 2006 - 2012 PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel_Writer_Excel5
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-// Original file header of PEAR::Spreadsheet_Excel_Writer_Parser (used as the base for this class):
-// -----------------------------------------------------------------------------------------
-// * Class for parsing Excel formulas
-// *
-// * License Information:
-// *
-// * Spreadsheet_Excel_Writer: A library for generating Excel Spreadsheets
-// * Copyright (c) 2002-2003 Xavier Noguer xnoguer@rezebra.com
-// *
-// * This library is free software; you can redistribute it and/or
-// * modify it under the terms of the GNU Lesser General Public
-// * License as published by the Free Software Foundation; either
-// * version 2.1 of the License, or (at your option) any later version.
-// *
-// * This library is distributed in the hope that it will be useful,
-// * but WITHOUT ANY WARRANTY; without even the implied warranty of
-// * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// * Lesser General Public License for more details.
-// *
-// * You should have received a copy of the GNU Lesser General Public
-// * License along with this library; if not, write to the Free Software
-// * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-// */
-
-
-/**
- * PHPExcel_Writer_Excel5_Parser
- *
- * @category PHPExcel
- * @package PHPExcel_Writer_Excel5
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- */
-class PHPExcel_Writer_Excel5_Parser
-{
- /** Constants */
- // Sheet title in unquoted form
- // Invalid sheet title characters cannot occur in the sheet title:
- // *:/\?[]
- // Moreover, there are valid sheet title characters that cannot occur in unquoted form (there may be more?)
- // +-% '^&<>=,;#()"{}
- const REGEX_SHEET_TITLE_UNQUOTED = '[^\*\:\/\\\\\?\[\]\+\-\% \\\'\^\&\<\>\=\,\;\#\(\)\"\{\}]+';
-
- // Sheet title in quoted form (without surrounding quotes)
- // Invalid sheet title characters cannot occur in the sheet title:
- // *:/\?[] (usual invalid sheet title characters)
- // Single quote is represented as a pair ''
- const REGEX_SHEET_TITLE_QUOTED = '(([^\*\:\/\\\\\?\[\]\\\'])+|(\\\'\\\')+)+';
-
- /**
- * The index of the character we are currently looking at
- * @var integer
- */
- public $_current_char;
-
- /**
- * The token we are working on.
- * @var string
- */
- public $_current_token;
-
- /**
- * The formula to parse
- * @var string
- */
- public $_formula;
-
- /**
- * The character ahead of the current char
- * @var string
- */
- public $_lookahead;
-
- /**
- * The parse tree to be generated
- * @var string
- */
- public $_parse_tree;
-
- /**
- * Array of external sheets
- * @var array
- */
- public $_ext_sheets;
-
- /**
- * Array of sheet references in the form of REF structures
- * @var array
- */
- public $_references;
-
- /**
- * The class constructor
- *
- */
- public function __construct()
- {
- $this->_current_char = 0;
- $this->_current_token = ''; // The token we are working on.
- $this->_formula = ''; // The formula to parse.
- $this->_lookahead = ''; // The character ahead of the current char.
- $this->_parse_tree = ''; // The parse tree to be generated.
- $this->_initializeHashes(); // Initialize the hashes: ptg's and function's ptg's
- $this->_ext_sheets = array();
- $this->_references = array();
- }
-
- /**
- * Initialize the ptg and function hashes.
- *
- * @access private
- */
- function _initializeHashes()
- {
- // The Excel ptg indices
- $this->ptg = array(
- 'ptgExp' => 0x01,
- 'ptgTbl' => 0x02,
- 'ptgAdd' => 0x03,
- 'ptgSub' => 0x04,
- 'ptgMul' => 0x05,
- 'ptgDiv' => 0x06,
- 'ptgPower' => 0x07,
- 'ptgConcat' => 0x08,
- 'ptgLT' => 0x09,
- 'ptgLE' => 0x0A,
- 'ptgEQ' => 0x0B,
- 'ptgGE' => 0x0C,
- 'ptgGT' => 0x0D,
- 'ptgNE' => 0x0E,
- 'ptgIsect' => 0x0F,
- 'ptgUnion' => 0x10,
- 'ptgRange' => 0x11,
- 'ptgUplus' => 0x12,
- 'ptgUminus' => 0x13,
- 'ptgPercent' => 0x14,
- 'ptgParen' => 0x15,
- 'ptgMissArg' => 0x16,
- 'ptgStr' => 0x17,
- 'ptgAttr' => 0x19,
- 'ptgSheet' => 0x1A,
- 'ptgEndSheet' => 0x1B,
- 'ptgErr' => 0x1C,
- 'ptgBool' => 0x1D,
- 'ptgInt' => 0x1E,
- 'ptgNum' => 0x1F,
- 'ptgArray' => 0x20,
- 'ptgFunc' => 0x21,
- 'ptgFuncVar' => 0x22,
- 'ptgName' => 0x23,
- 'ptgRef' => 0x24,
- 'ptgArea' => 0x25,
- 'ptgMemArea' => 0x26,
- 'ptgMemErr' => 0x27,
- 'ptgMemNoMem' => 0x28,
- 'ptgMemFunc' => 0x29,
- 'ptgRefErr' => 0x2A,
- 'ptgAreaErr' => 0x2B,
- 'ptgRefN' => 0x2C,
- 'ptgAreaN' => 0x2D,
- 'ptgMemAreaN' => 0x2E,
- 'ptgMemNoMemN' => 0x2F,
- 'ptgNameX' => 0x39,
- 'ptgRef3d' => 0x3A,
- 'ptgArea3d' => 0x3B,
- 'ptgRefErr3d' => 0x3C,
- 'ptgAreaErr3d' => 0x3D,
- 'ptgArrayV' => 0x40,
- 'ptgFuncV' => 0x41,
- 'ptgFuncVarV' => 0x42,
- 'ptgNameV' => 0x43,
- 'ptgRefV' => 0x44,
- 'ptgAreaV' => 0x45,
- 'ptgMemAreaV' => 0x46,
- 'ptgMemErrV' => 0x47,
- 'ptgMemNoMemV' => 0x48,
- 'ptgMemFuncV' => 0x49,
- 'ptgRefErrV' => 0x4A,
- 'ptgAreaErrV' => 0x4B,
- 'ptgRefNV' => 0x4C,
- 'ptgAreaNV' => 0x4D,
- 'ptgMemAreaNV' => 0x4E,
- 'ptgMemNoMemN' => 0x4F,
- 'ptgFuncCEV' => 0x58,
- 'ptgNameXV' => 0x59,
- 'ptgRef3dV' => 0x5A,
- 'ptgArea3dV' => 0x5B,
- 'ptgRefErr3dV' => 0x5C,
- 'ptgAreaErr3d' => 0x5D,
- 'ptgArrayA' => 0x60,
- 'ptgFuncA' => 0x61,
- 'ptgFuncVarA' => 0x62,
- 'ptgNameA' => 0x63,
- 'ptgRefA' => 0x64,
- 'ptgAreaA' => 0x65,
- 'ptgMemAreaA' => 0x66,
- 'ptgMemErrA' => 0x67,
- 'ptgMemNoMemA' => 0x68,
- 'ptgMemFuncA' => 0x69,
- 'ptgRefErrA' => 0x6A,
- 'ptgAreaErrA' => 0x6B,
- 'ptgRefNA' => 0x6C,
- 'ptgAreaNA' => 0x6D,
- 'ptgMemAreaNA' => 0x6E,
- 'ptgMemNoMemN' => 0x6F,
- 'ptgFuncCEA' => 0x78,
- 'ptgNameXA' => 0x79,
- 'ptgRef3dA' => 0x7A,
- 'ptgArea3dA' => 0x7B,
- 'ptgRefErr3dA' => 0x7C,
- 'ptgAreaErr3d' => 0x7D
- );
-
- // Thanks to Michael Meeks and Gnumeric for the initial arg values.
- //
- // The following hash was generated by "function_locale.pl" in the distro.
- // Refer to function_locale.pl for non-English function names.
- //
- // The array elements are as follow:
- // ptg: The Excel function ptg code.
- // args: The number of arguments that the function takes:
- // >=0 is a fixed number of arguments.
- // -1 is a variable number of arguments.
- // class: The reference, value or array class of the function args.
- // vol: The function is volatile.
- //
- $this->_functions = array(
- // function ptg args class vol
- 'COUNT' => array( 0, -1, 0, 0 ),
- 'IF' => array( 1, -1, 1, 0 ),
- 'ISNA' => array( 2, 1, 1, 0 ),
- 'ISERROR' => array( 3, 1, 1, 0 ),
- 'SUM' => array( 4, -1, 0, 0 ),
- 'AVERAGE' => array( 5, -1, 0, 0 ),
- 'MIN' => array( 6, -1, 0, 0 ),
- 'MAX' => array( 7, -1, 0, 0 ),
- 'ROW' => array( 8, -1, 0, 0 ),
- 'COLUMN' => array( 9, -1, 0, 0 ),
- 'NA' => array( 10, 0, 0, 0 ),
- 'NPV' => array( 11, -1, 1, 0 ),
- 'STDEV' => array( 12, -1, 0, 0 ),
- 'DOLLAR' => array( 13, -1, 1, 0 ),
- 'FIXED' => array( 14, -1, 1, 0 ),
- 'SIN' => array( 15, 1, 1, 0 ),
- 'COS' => array( 16, 1, 1, 0 ),
- 'TAN' => array( 17, 1, 1, 0 ),
- 'ATAN' => array( 18, 1, 1, 0 ),
- 'PI' => array( 19, 0, 1, 0 ),
- 'SQRT' => array( 20, 1, 1, 0 ),
- 'EXP' => array( 21, 1, 1, 0 ),
- 'LN' => array( 22, 1, 1, 0 ),
- 'LOG10' => array( 23, 1, 1, 0 ),
- 'ABS' => array( 24, 1, 1, 0 ),
- 'INT' => array( 25, 1, 1, 0 ),
- 'SIGN' => array( 26, 1, 1, 0 ),
- 'ROUND' => array( 27, 2, 1, 0 ),
- 'LOOKUP' => array( 28, -1, 0, 0 ),
- 'INDEX' => array( 29, -1, 0, 1 ),
- 'REPT' => array( 30, 2, 1, 0 ),
- 'MID' => array( 31, 3, 1, 0 ),
- 'LEN' => array( 32, 1, 1, 0 ),
- 'VALUE' => array( 33, 1, 1, 0 ),
- 'TRUE' => array( 34, 0, 1, 0 ),
- 'FALSE' => array( 35, 0, 1, 0 ),
- 'AND' => array( 36, -1, 0, 0 ),
- 'OR' => array( 37, -1, 0, 0 ),
- 'NOT' => array( 38, 1, 1, 0 ),
- 'MOD' => array( 39, 2, 1, 0 ),
- 'DCOUNT' => array( 40, 3, 0, 0 ),
- 'DSUM' => array( 41, 3, 0, 0 ),
- 'DAVERAGE' => array( 42, 3, 0, 0 ),
- 'DMIN' => array( 43, 3, 0, 0 ),
- 'DMAX' => array( 44, 3, 0, 0 ),
- 'DSTDEV' => array( 45, 3, 0, 0 ),
- 'VAR' => array( 46, -1, 0, 0 ),
- 'DVAR' => array( 47, 3, 0, 0 ),
- 'TEXT' => array( 48, 2, 1, 0 ),
- 'LINEST' => array( 49, -1, 0, 0 ),
- 'TREND' => array( 50, -1, 0, 0 ),
- 'LOGEST' => array( 51, -1, 0, 0 ),
- 'GROWTH' => array( 52, -1, 0, 0 ),
- 'PV' => array( 56, -1, 1, 0 ),
- 'FV' => array( 57, -1, 1, 0 ),
- 'NPER' => array( 58, -1, 1, 0 ),
- 'PMT' => array( 59, -1, 1, 0 ),
- 'RATE' => array( 60, -1, 1, 0 ),
- 'MIRR' => array( 61, 3, 0, 0 ),
- 'IRR' => array( 62, -1, 0, 0 ),
- 'RAND' => array( 63, 0, 1, 1 ),
- 'MATCH' => array( 64, -1, 0, 0 ),
- 'DATE' => array( 65, 3, 1, 0 ),
- 'TIME' => array( 66, 3, 1, 0 ),
- 'DAY' => array( 67, 1, 1, 0 ),
- 'MONTH' => array( 68, 1, 1, 0 ),
- 'YEAR' => array( 69, 1, 1, 0 ),
- 'WEEKDAY' => array( 70, -1, 1, 0 ),
- 'HOUR' => array( 71, 1, 1, 0 ),
- 'MINUTE' => array( 72, 1, 1, 0 ),
- 'SECOND' => array( 73, 1, 1, 0 ),
- 'NOW' => array( 74, 0, 1, 1 ),
- 'AREAS' => array( 75, 1, 0, 1 ),
- 'ROWS' => array( 76, 1, 0, 1 ),
- 'COLUMNS' => array( 77, 1, 0, 1 ),
- 'OFFSET' => array( 78, -1, 0, 1 ),
- 'SEARCH' => array( 82, -1, 1, 0 ),
- 'TRANSPOSE' => array( 83, 1, 1, 0 ),
- 'TYPE' => array( 86, 1, 1, 0 ),
- 'ATAN2' => array( 97, 2, 1, 0 ),
- 'ASIN' => array( 98, 1, 1, 0 ),
- 'ACOS' => array( 99, 1, 1, 0 ),
- 'CHOOSE' => array( 100, -1, 1, 0 ),
- 'HLOOKUP' => array( 101, -1, 0, 0 ),
- 'VLOOKUP' => array( 102, -1, 0, 0 ),
- 'ISREF' => array( 105, 1, 0, 0 ),
- 'LOG' => array( 109, -1, 1, 0 ),
- 'CHAR' => array( 111, 1, 1, 0 ),
- 'LOWER' => array( 112, 1, 1, 0 ),
- 'UPPER' => array( 113, 1, 1, 0 ),
- 'PROPER' => array( 114, 1, 1, 0 ),
- 'LEFT' => array( 115, -1, 1, 0 ),
- 'RIGHT' => array( 116, -1, 1, 0 ),
- 'EXACT' => array( 117, 2, 1, 0 ),
- 'TRIM' => array( 118, 1, 1, 0 ),
- 'REPLACE' => array( 119, 4, 1, 0 ),
- 'SUBSTITUTE' => array( 120, -1, 1, 0 ),
- 'CODE' => array( 121, 1, 1, 0 ),
- 'FIND' => array( 124, -1, 1, 0 ),
- 'CELL' => array( 125, -1, 0, 1 ),
- 'ISERR' => array( 126, 1, 1, 0 ),
- 'ISTEXT' => array( 127, 1, 1, 0 ),
- 'ISNUMBER' => array( 128, 1, 1, 0 ),
- 'ISBLANK' => array( 129, 1, 1, 0 ),
- 'T' => array( 130, 1, 0, 0 ),
- 'N' => array( 131, 1, 0, 0 ),
- 'DATEVALUE' => array( 140, 1, 1, 0 ),
- 'TIMEVALUE' => array( 141, 1, 1, 0 ),
- 'SLN' => array( 142, 3, 1, 0 ),
- 'SYD' => array( 143, 4, 1, 0 ),
- 'DDB' => array( 144, -1, 1, 0 ),
- 'INDIRECT' => array( 148, -1, 1, 1 ),
- 'CALL' => array( 150, -1, 1, 0 ),
- 'CLEAN' => array( 162, 1, 1, 0 ),
- 'MDETERM' => array( 163, 1, 2, 0 ),
- 'MINVERSE' => array( 164, 1, 2, 0 ),
- 'MMULT' => array( 165, 2, 2, 0 ),
- 'IPMT' => array( 167, -1, 1, 0 ),
- 'PPMT' => array( 168, -1, 1, 0 ),
- 'COUNTA' => array( 169, -1, 0, 0 ),
- 'PRODUCT' => array( 183, -1, 0, 0 ),
- 'FACT' => array( 184, 1, 1, 0 ),
- 'DPRODUCT' => array( 189, 3, 0, 0 ),
- 'ISNONTEXT' => array( 190, 1, 1, 0 ),
- 'STDEVP' => array( 193, -1, 0, 0 ),
- 'VARP' => array( 194, -1, 0, 0 ),
- 'DSTDEVP' => array( 195, 3, 0, 0 ),
- 'DVARP' => array( 196, 3, 0, 0 ),
- 'TRUNC' => array( 197, -1, 1, 0 ),
- 'ISLOGICAL' => array( 198, 1, 1, 0 ),
- 'DCOUNTA' => array( 199, 3, 0, 0 ),
- 'USDOLLAR' => array( 204, -1, 1, 0 ),
- 'FINDB' => array( 205, -1, 1, 0 ),
- 'SEARCHB' => array( 206, -1, 1, 0 ),
- 'REPLACEB' => array( 207, 4, 1, 0 ),
- 'LEFTB' => array( 208, -1, 1, 0 ),
- 'RIGHTB' => array( 209, -1, 1, 0 ),
- 'MIDB' => array( 210, 3, 1, 0 ),
- 'LENB' => array( 211, 1, 1, 0 ),
- 'ROUNDUP' => array( 212, 2, 1, 0 ),
- 'ROUNDDOWN' => array( 213, 2, 1, 0 ),
- 'ASC' => array( 214, 1, 1, 0 ),
- 'DBCS' => array( 215, 1, 1, 0 ),
- 'RANK' => array( 216, -1, 0, 0 ),
- 'ADDRESS' => array( 219, -1, 1, 0 ),
- 'DAYS360' => array( 220, -1, 1, 0 ),
- 'TODAY' => array( 221, 0, 1, 1 ),
- 'VDB' => array( 222, -1, 1, 0 ),
- 'MEDIAN' => array( 227, -1, 0, 0 ),
- 'SUMPRODUCT' => array( 228, -1, 2, 0 ),
- 'SINH' => array( 229, 1, 1, 0 ),
- 'COSH' => array( 230, 1, 1, 0 ),
- 'TANH' => array( 231, 1, 1, 0 ),
- 'ASINH' => array( 232, 1, 1, 0 ),
- 'ACOSH' => array( 233, 1, 1, 0 ),
- 'ATANH' => array( 234, 1, 1, 0 ),
- 'DGET' => array( 235, 3, 0, 0 ),
- 'INFO' => array( 244, 1, 1, 1 ),
- 'DB' => array( 247, -1, 1, 0 ),
- 'FREQUENCY' => array( 252, 2, 0, 0 ),
- 'ERROR.TYPE' => array( 261, 1, 1, 0 ),
- 'REGISTER.ID' => array( 267, -1, 1, 0 ),
- 'AVEDEV' => array( 269, -1, 0, 0 ),
- 'BETADIST' => array( 270, -1, 1, 0 ),
- 'GAMMALN' => array( 271, 1, 1, 0 ),
- 'BETAINV' => array( 272, -1, 1, 0 ),
- 'BINOMDIST' => array( 273, 4, 1, 0 ),
- 'CHIDIST' => array( 274, 2, 1, 0 ),
- 'CHIINV' => array( 275, 2, 1, 0 ),
- 'COMBIN' => array( 276, 2, 1, 0 ),
- 'CONFIDENCE' => array( 277, 3, 1, 0 ),
- 'CRITBINOM' => array( 278, 3, 1, 0 ),
- 'EVEN' => array( 279, 1, 1, 0 ),
- 'EXPONDIST' => array( 280, 3, 1, 0 ),
- 'FDIST' => array( 281, 3, 1, 0 ),
- 'FINV' => array( 282, 3, 1, 0 ),
- 'FISHER' => array( 283, 1, 1, 0 ),
- 'FISHERINV' => array( 284, 1, 1, 0 ),
- 'FLOOR' => array( 285, 2, 1, 0 ),
- 'GAMMADIST' => array( 286, 4, 1, 0 ),
- 'GAMMAINV' => array( 287, 3, 1, 0 ),
- 'CEILING' => array( 288, 2, 1, 0 ),
- 'HYPGEOMDIST' => array( 289, 4, 1, 0 ),
- 'LOGNORMDIST' => array( 290, 3, 1, 0 ),
- 'LOGINV' => array( 291, 3, 1, 0 ),
- 'NEGBINOMDIST' => array( 292, 3, 1, 0 ),
- 'NORMDIST' => array( 293, 4, 1, 0 ),
- 'NORMSDIST' => array( 294, 1, 1, 0 ),
- 'NORMINV' => array( 295, 3, 1, 0 ),
- 'NORMSINV' => array( 296, 1, 1, 0 ),
- 'STANDARDIZE' => array( 297, 3, 1, 0 ),
- 'ODD' => array( 298, 1, 1, 0 ),
- 'PERMUT' => array( 299, 2, 1, 0 ),
- 'POISSON' => array( 300, 3, 1, 0 ),
- 'TDIST' => array( 301, 3, 1, 0 ),
- 'WEIBULL' => array( 302, 4, 1, 0 ),
- 'SUMXMY2' => array( 303, 2, 2, 0 ),
- 'SUMX2MY2' => array( 304, 2, 2, 0 ),
- 'SUMX2PY2' => array( 305, 2, 2, 0 ),
- 'CHITEST' => array( 306, 2, 2, 0 ),
- 'CORREL' => array( 307, 2, 2, 0 ),
- 'COVAR' => array( 308, 2, 2, 0 ),
- 'FORECAST' => array( 309, 3, 2, 0 ),
- 'FTEST' => array( 310, 2, 2, 0 ),
- 'INTERCEPT' => array( 311, 2, 2, 0 ),
- 'PEARSON' => array( 312, 2, 2, 0 ),
- 'RSQ' => array( 313, 2, 2, 0 ),
- 'STEYX' => array( 314, 2, 2, 0 ),
- 'SLOPE' => array( 315, 2, 2, 0 ),
- 'TTEST' => array( 316, 4, 2, 0 ),
- 'PROB' => array( 317, -1, 2, 0 ),
- 'DEVSQ' => array( 318, -1, 0, 0 ),
- 'GEOMEAN' => array( 319, -1, 0, 0 ),
- 'HARMEAN' => array( 320, -1, 0, 0 ),
- 'SUMSQ' => array( 321, -1, 0, 0 ),
- 'KURT' => array( 322, -1, 0, 0 ),
- 'SKEW' => array( 323, -1, 0, 0 ),
- 'ZTEST' => array( 324, -1, 0, 0 ),
- 'LARGE' => array( 325, 2, 0, 0 ),
- 'SMALL' => array( 326, 2, 0, 0 ),
- 'QUARTILE' => array( 327, 2, 0, 0 ),
- 'PERCENTILE' => array( 328, 2, 0, 0 ),
- 'PERCENTRANK' => array( 329, -1, 0, 0 ),
- 'MODE' => array( 330, -1, 2, 0 ),
- 'TRIMMEAN' => array( 331, 2, 0, 0 ),
- 'TINV' => array( 332, 2, 1, 0 ),
- 'CONCATENATE' => array( 336, -1, 1, 0 ),
- 'POWER' => array( 337, 2, 1, 0 ),
- 'RADIANS' => array( 342, 1, 1, 0 ),
- 'DEGREES' => array( 343, 1, 1, 0 ),
- 'SUBTOTAL' => array( 344, -1, 0, 0 ),
- 'SUMIF' => array( 345, -1, 0, 0 ),
- 'COUNTIF' => array( 346, 2, 0, 0 ),
- 'COUNTBLANK' => array( 347, 1, 0, 0 ),
- 'ISPMT' => array( 350, 4, 1, 0 ),
- 'DATEDIF' => array( 351, 3, 1, 0 ),
- 'DATESTRING' => array( 352, 1, 1, 0 ),
- 'NUMBERSTRING' => array( 353, 2, 1, 0 ),
- 'ROMAN' => array( 354, -1, 1, 0 ),
- 'GETPIVOTDATA' => array( 358, -1, 0, 0 ),
- 'HYPERLINK' => array( 359, -1, 1, 0 ),
- 'PHONETIC' => array( 360, 1, 0, 0 ),
- 'AVERAGEA' => array( 361, -1, 0, 0 ),
- 'MAXA' => array( 362, -1, 0, 0 ),
- 'MINA' => array( 363, -1, 0, 0 ),
- 'STDEVPA' => array( 364, -1, 0, 0 ),
- 'VARPA' => array( 365, -1, 0, 0 ),
- 'STDEVA' => array( 366, -1, 0, 0 ),
- 'VARA' => array( 367, -1, 0, 0 ),
- 'BAHTTEXT' => array( 368, 1, 0, 0 ),
- );
- }
-
- /**
- * Convert a token to the proper ptg value.
- *
- * @access private
- * @param mixed $token The token to convert.
- * @return mixed the converted token on success
- */
- function _convert($token)
- {
- if (preg_match("/\"([^\"]|\"\"){0,255}\"/", $token)) {
- return $this->_convertString($token);
-
- } elseif (is_numeric($token)) {
- return $this->_convertNumber($token);
-
- // match references like A1 or $A$1
- } elseif (preg_match('/^\$?([A-Ia-i]?[A-Za-z])\$?(\d+)$/',$token)) {
- return $this->_convertRef2d($token);
-
- // match external references like Sheet1!A1 or Sheet1:Sheet2!A1 or Sheet1!$A$1 or Sheet1:Sheet2!$A$1
- } elseif (preg_match("/^" . self::REGEX_SHEET_TITLE_UNQUOTED . "(\:" . self::REGEX_SHEET_TITLE_UNQUOTED . ")?\!\\$?[A-Ia-i]?[A-Za-z]\\$?(\d+)$/u",$token)) {
- return $this->_convertRef3d($token);
-
- // match external references like 'Sheet1'!A1 or 'Sheet1:Sheet2'!A1 or 'Sheet1'!$A$1 or 'Sheet1:Sheet2'!$A$1
- } elseif (preg_match("/^'" . self::REGEX_SHEET_TITLE_QUOTED . "(\:" . self::REGEX_SHEET_TITLE_QUOTED . ")?'\!\\$?[A-Ia-i]?[A-Za-z]\\$?(\d+)$/u",$token)) {
- return $this->_convertRef3d($token);
-
- // match ranges like A1:B2 or $A$1:$B$2
- } elseif (preg_match('/^(\$)?[A-Ia-i]?[A-Za-z](\$)?(\d+)\:(\$)?[A-Ia-i]?[A-Za-z](\$)?(\d+)$/', $token)) {
- return $this->_convertRange2d($token);
-
- // match external ranges like Sheet1!A1:B2 or Sheet1:Sheet2!A1:B2 or Sheet1!$A$1:$B$2 or Sheet1:Sheet2!$A$1:$B$2
- } elseif (preg_match("/^" . self::REGEX_SHEET_TITLE_UNQUOTED . "(\:" . self::REGEX_SHEET_TITLE_UNQUOTED . ")?\!\\$?([A-Ia-i]?[A-Za-z])?\\$?(\d+)\:\\$?([A-Ia-i]?[A-Za-z])?\\$?(\d+)$/u",$token)) {
- return $this->_convertRange3d($token);
-
- // match external ranges like 'Sheet1'!A1:B2 or 'Sheet1:Sheet2'!A1:B2 or 'Sheet1'!$A$1:$B$2 or 'Sheet1:Sheet2'!$A$1:$B$2
- } elseif (preg_match("/^'" . self::REGEX_SHEET_TITLE_QUOTED . "(\:" . self::REGEX_SHEET_TITLE_QUOTED . ")?'\!\\$?([A-Ia-i]?[A-Za-z])?\\$?(\d+)\:\\$?([A-Ia-i]?[A-Za-z])?\\$?(\d+)$/u",$token)) {
- return $this->_convertRange3d($token);
-
- // operators (including parentheses)
- } elseif (isset($this->ptg[$token])) {
- return pack("C", $this->ptg[$token]);
-
- // match error codes
- } elseif (preg_match("/^#[A-Z0\/]{3,5}[!?]{1}$/", $token) or $token == '#N/A') {
- return $this->_convertError($token);
-
- // commented so argument number can be processed correctly. See toReversePolish().
- /*elseif (preg_match("/[A-Z0-9\xc0-\xdc\.]+/",$token))
- {
- return($this->_convertFunction($token,$this->_func_args));
- }*/
-
- // if it's an argument, ignore the token (the argument remains)
- } elseif ($token == 'arg') {
- return '';
- }
-
- // TODO: use real error codes
- throw new Exception("Unknown token $token");
- }
-
- /**
- * Convert a number token to ptgInt or ptgNum
- *
- * @access private
- * @param mixed $num an integer or double for conversion to its ptg value
- */
- function _convertNumber($num)
- {
- // Integer in the range 0..2**16-1
- if ((preg_match("/^\d+$/", $num)) and ($num <= 65535)) {
- return pack("Cv", $this->ptg['ptgInt'], $num);
- } else { // A float
- if (PHPExcel_Writer_Excel5_BIFFwriter::getByteOrder()) { // if it's Big Endian
- $num = strrev($num);
- }
- return pack("Cd", $this->ptg['ptgNum'], $num);
- }
- }
-
- /**
- * Convert a string token to ptgStr
- *
- * @access private
- * @param string $string A string for conversion to its ptg value.
- * @return mixed the converted token on success
- */
- function _convertString($string)
- {
- // chop away beggining and ending quotes
- $string = substr($string, 1, strlen($string) - 2);
- if (strlen($string) > 255) {
- throw new Exception("String is too long");
- }
-
- return pack('C', $this->ptg['ptgStr']) . PHPExcel_Shared_String::UTF8toBIFF8UnicodeShort($string);
- }
-
- /**
- * Convert a function to a ptgFunc or ptgFuncVarV depending on the number of
- * args that it takes.
- *
- * @access private
- * @param string $token The name of the function for convertion to ptg value.
- * @param integer $num_args The number of arguments the function receives.
- * @return string The packed ptg for the function
- */
- function _convertFunction($token, $num_args)
- {
- $args = $this->_functions[$token][1];
-// $volatile = $this->_functions[$token][3];
-
- // Fixed number of args eg. TIME($i,$j,$k).
- if ($args >= 0) {
- return pack("Cv", $this->ptg['ptgFuncV'], $this->_functions[$token][0]);
- }
- // Variable number of args eg. SUM($i,$j,$k, ..).
- if ($args == -1) {
- return pack("CCv", $this->ptg['ptgFuncVarV'], $num_args, $this->_functions[$token][0]);
- }
- }
-
- /**
- * Convert an Excel range such as A1:D4 to a ptgRefV.
- *
- * @access private
- * @param string $range An Excel range in the A1:A2
- * @param int $class
- */
- function _convertRange2d($range, $class=0)
- {
-
- // TODO: possible class value 0,1,2 check Formula.pm
- // Split the range into 2 cell refs
- if (preg_match('/^(\$)?([A-Ia-i]?[A-Za-z])(\$)?(\d+)\:(\$)?([A-Ia-i]?[A-Za-z])(\$)?(\d+)$/', $range)) {
- list($cell1, $cell2) = explode(':', $range);
- } else {
- // TODO: use real error codes
- throw new Exception("Unknown range separator");
- }
-
- // Convert the cell references
- list($row1, $col1) = $this->_cellToPackedRowcol($cell1);
- list($row2, $col2) = $this->_cellToPackedRowcol($cell2);
-
- // The ptg value depends on the class of the ptg.
- if ($class == 0) {
- $ptgArea = pack("C", $this->ptg['ptgArea']);
- } elseif ($class == 1) {
- $ptgArea = pack("C", $this->ptg['ptgAreaV']);
- } elseif ($class == 2) {
- $ptgArea = pack("C", $this->ptg['ptgAreaA']);
- } else {
- // TODO: use real error codes
- throw new Exception("Unknown class $class");
- }
- return $ptgArea . $row1 . $row2 . $col1. $col2;
- }
-
- /**
- * Convert an Excel 3d range such as "Sheet1!A1:D4" or "Sheet1:Sheet2!A1:D4" to
- * a ptgArea3d.
- *
- * @access private
- * @param string $token An Excel range in the Sheet1!A1:A2 format.
- * @return mixed The packed ptgArea3d token on success.
- */
- function _convertRange3d($token)
- {
-// $class = 0; // formulas like Sheet1!$A$1:$A$2 in list type data validation need this class (0x3B)
-
- // Split the ref at the ! symbol
- list($ext_ref, $range) = explode('!', $token);
-
- // Convert the external reference part (different for BIFF8)
- $ext_ref = $this->_getRefIndex($ext_ref);
-
- // Split the range into 2 cell refs
- list($cell1, $cell2) = explode(':', $range);
-
- // Convert the cell references
- if (preg_match("/^(\\$)?[A-Ia-i]?[A-Za-z](\\$)?(\d+)$/", $cell1)) {
- list($row1, $col1) = $this->_cellToPackedRowcol($cell1);
- list($row2, $col2) = $this->_cellToPackedRowcol($cell2);
- } else { // It's a rows range (like 26:27)
- list($row1, $col1, $row2, $col2) = $this->_rangeToPackedRange($cell1.':'.$cell2);
- }
-
- // The ptg value depends on the class of the ptg.
-// if ($class == 0) {
- $ptgArea = pack("C", $this->ptg['ptgArea3d']);
-// } elseif ($class == 1) {
-// $ptgArea = pack("C", $this->ptg['ptgArea3dV']);
-// } elseif ($class == 2) {
-// $ptgArea = pack("C", $this->ptg['ptgArea3dA']);
-// } else {
-// throw new Exception("Unknown class $class");
-// }
-
- return $ptgArea . $ext_ref . $row1 . $row2 . $col1. $col2;
- }
-
- /**
- * Convert an Excel reference such as A1, $B2, C$3 or $D$4 to a ptgRefV.
- *
- * @access private
- * @param string $cell An Excel cell reference
- * @return string The cell in packed() format with the corresponding ptg
- */
- function _convertRef2d($cell)
- {
-// $class = 2; // as far as I know, this is magick.
-
- // Convert the cell reference
- $cell_array = $this->_cellToPackedRowcol($cell);
- list($row, $col) = $cell_array;
-
- // The ptg value depends on the class of the ptg.
-// if ($class == 0) {
-// $ptgRef = pack("C", $this->ptg['ptgRef']);
-// } elseif ($class == 1) {
-// $ptgRef = pack("C", $this->ptg['ptgRefV']);
-// } elseif ($class == 2) {
- $ptgRef = pack("C", $this->ptg['ptgRefA']);
-// } else {
-// // TODO: use real error codes
-// throw new Exception("Unknown class $class");
-// }
- return $ptgRef.$row.$col;
- }
-
- /**
- * Convert an Excel 3d reference such as "Sheet1!A1" or "Sheet1:Sheet2!A1" to a
- * ptgRef3d.
- *
- * @access private
- * @param string $cell An Excel cell reference
- * @return mixed The packed ptgRef3d token on success.
- */
- function _convertRef3d($cell)
- {
-// $class = 2; // as far as I know, this is magick.
-
- // Split the ref at the ! symbol
- list($ext_ref, $cell) = explode('!', $cell);
-
- // Convert the external reference part (different for BIFF8)
- $ext_ref = $this->_getRefIndex($ext_ref);
-
- // Convert the cell reference part
- list($row, $col) = $this->_cellToPackedRowcol($cell);
-
- // The ptg value depends on the class of the ptg.
-// if ($class == 0) {
-// $ptgRef = pack("C", $this->ptg['ptgRef3d']);
-// } elseif ($class == 1) {
-// $ptgRef = pack("C", $this->ptg['ptgRef3dV']);
-// } elseif ($class == 2) {
- $ptgRef = pack("C", $this->ptg['ptgRef3dA']);
-// } else {
-// throw new Exception("Unknown class $class");
-// }
-
- return $ptgRef . $ext_ref. $row . $col;
- }
-
- /**
- * Convert an error code to a ptgErr
- *
- * @access private
- * @param string $errorCode The error code for conversion to its ptg value
- * @return string The error code ptgErr
- */
- function _convertError($errorCode)
- {
- switch ($errorCode) {
- case '#NULL!': return pack("C", 0x00);
- case '#DIV/0!': return pack("C", 0x07);
- case '#VALUE!': return pack("C", 0x0F);
- case '#REF!': return pack("C", 0x17);
- case '#NAME?': return pack("C", 0x1D);
- case '#NUM!': return pack("C", 0x24);
- case '#N/A': return pack("C", 0x2A);
- }
- return pack("C", 0xFF);
- }
-
- /**
- * Convert the sheet name part of an external reference, for example "Sheet1" or
- * "Sheet1:Sheet2", to a packed structure.
- *
- * @access private
- * @param string $ext_ref The name of the external reference
- * @return string The reference index in packed() format
- */
- function _packExtRef($ext_ref)
- {
- $ext_ref = preg_replace("/^'/", '', $ext_ref); // Remove leading ' if any.
- $ext_ref = preg_replace("/'$/", '', $ext_ref); // Remove trailing ' if any.
-
- // Check if there is a sheet range eg., Sheet1:Sheet2.
- if (preg_match("/:/", $ext_ref)) {
- list($sheet_name1, $sheet_name2) = explode(':', $ext_ref);
-
- $sheet1 = $this->_getSheetIndex($sheet_name1);
- if ($sheet1 == -1) {
- throw new Exception("Unknown sheet name $sheet_name1 in formula");
- }
- $sheet2 = $this->_getSheetIndex($sheet_name2);
- if ($sheet2 == -1) {
- throw new Exception("Unknown sheet name $sheet_name2 in formula");
- }
-
- // Reverse max and min sheet numbers if necessary
- if ($sheet1 > $sheet2) {
- list($sheet1, $sheet2) = array($sheet2, $sheet1);
- }
- } else { // Single sheet name only.
- $sheet1 = $this->_getSheetIndex($ext_ref);
- if ($sheet1 == -1) {
- throw new Exception("Unknown sheet name $ext_ref in formula");
- }
- $sheet2 = $sheet1;
- }
-
- // References are stored relative to 0xFFFF.
- $offset = -1 - $sheet1;
-
- return pack('vdvv', $offset, 0x00, $sheet1, $sheet2);
- }
-
- /**
- * Look up the REF index that corresponds to an external sheet name
- * (or range). If it doesn't exist yet add it to the workbook's references
- * array. It assumes all sheet names given must exist.
- *
- * @access private
- * @param string $ext_ref The name of the external reference
- * @return mixed The reference index in packed() format on success
- */
- function _getRefIndex($ext_ref)
- {
- $ext_ref = preg_replace("/^'/", '', $ext_ref); // Remove leading ' if any.
- $ext_ref = preg_replace("/'$/", '', $ext_ref); // Remove trailing ' if any.
- $ext_ref = str_replace('\'\'', '\'', $ext_ref); // Replace escaped '' with '
-
- // Check if there is a sheet range eg., Sheet1:Sheet2.
- if (preg_match("/:/", $ext_ref)) {
- list($sheet_name1, $sheet_name2) = explode(':', $ext_ref);
-
- $sheet1 = $this->_getSheetIndex($sheet_name1);
- if ($sheet1 == -1) {
- throw new Exception("Unknown sheet name $sheet_name1 in formula");
- }
- $sheet2 = $this->_getSheetIndex($sheet_name2);
- if ($sheet2 == -1) {
- throw new Exception("Unknown sheet name $sheet_name2 in formula");
- }
-
- // Reverse max and min sheet numbers if necessary
- if ($sheet1 > $sheet2) {
- list($sheet1, $sheet2) = array($sheet2, $sheet1);
- }
- } else { // Single sheet name only.
- $sheet1 = $this->_getSheetIndex($ext_ref);
- if ($sheet1 == -1) {
- throw new Exception("Unknown sheet name $ext_ref in formula");
- }
- $sheet2 = $sheet1;
- }
-
- // assume all references belong to this document
- $supbook_index = 0x00;
- $ref = pack('vvv', $supbook_index, $sheet1, $sheet2);
- $total_references = count($this->_references);
- $index = -1;
- for ($i = 0; $i < $total_references; ++$i) {
- if ($ref == $this->_references[$i]) {
- $index = $i;
- break;
- }
- }
- // if REF was not found add it to references array
- if ($index == -1) {
- $this->_references[$total_references] = $ref;
- $index = $total_references;
- }
-
- return pack('v', $index);
- }
-
- /**
- * Look up the index that corresponds to an external sheet name. The hash of
- * sheet names is updated by the addworksheet() method of the
- * PHPExcel_Writer_Excel5_Workbook class.
- *
- * @access private
- * @param string $sheet_name Sheet name
- * @return integer The sheet index, -1 if the sheet was not found
- */
- function _getSheetIndex($sheet_name)
- {
- if (!isset($this->_ext_sheets[$sheet_name])) {
- return -1;
- } else {
- return $this->_ext_sheets[$sheet_name];
- }
- }
-
- /**
- * This method is used to update the array of sheet names. It is
- * called by the addWorksheet() method of the
- * PHPExcel_Writer_Excel5_Workbook class.
- *
- * @access public
- * @see PHPExcel_Writer_Excel5_Workbook::addWorksheet()
- * @param string $name The name of the worksheet being added
- * @param integer $index The index of the worksheet being added
- */
- function setExtSheet($name, $index)
- {
- $this->_ext_sheets[$name] = $index;
- }
-
- /**
- * pack() row and column into the required 3 or 4 byte format.
- *
- * @access private
- * @param string $cell The Excel cell reference to be packed
- * @return array Array containing the row and column in packed() format
- */
- function _cellToPackedRowcol($cell)
- {
- $cell = strtoupper($cell);
- list($row, $col, $row_rel, $col_rel) = $this->_cellToRowcol($cell);
- if ($col >= 256) {
- throw new Exception("Column in: $cell greater than 255");
- }
- // FIXME: change for BIFF8
- if ($row >= 16384) {
- throw new Exception("Row in: $cell greater than 16384 ");
- }
-
- // Set the high bits to indicate if row or col are relative.
- $col |= $col_rel << 14;
- $col |= $row_rel << 15;
- $col = pack('v', $col);
-
- $row = pack('v', $row);
-
- return array($row, $col);
- }
-
- /**
- * pack() row range into the required 3 or 4 byte format.
- * Just using maximum col/rows, which is probably not the correct solution
- *
- * @access private
- * @param string $range The Excel range to be packed
- * @return array Array containing (row1,col1,row2,col2) in packed() format
- */
- function _rangeToPackedRange($range)
- {
- preg_match('/(\$)?(\d+)\:(\$)?(\d+)/', $range, $match);
- // return absolute rows if there is a $ in the ref
- $row1_rel = empty($match[1]) ? 1 : 0;
- $row1 = $match[2];
- $row2_rel = empty($match[3]) ? 1 : 0;
- $row2 = $match[4];
- // Convert 1-index to zero-index
- --$row1;
- --$row2;
- // Trick poor inocent Excel
- $col1 = 0;
- $col2 = 16383; // FIXME: maximum possible value for Excel 5 (change this!!!)
-
- // FIXME: this changes for BIFF8
- if (($row1 >= 16384) or ($row2 >= 16384)) {
- throw new Exception("Row in: $range greater than 16384 ");
- }
-
- // Set the high bits to indicate if rows are relative.
- $col1 |= $row1_rel << 15;
- $col2 |= $row2_rel << 15;
- $col1 = pack('v', $col1);
- $col2 = pack('v', $col2);
-
- $row1 = pack('v', $row1);
- $row2 = pack('v', $row2);
-
- return array($row1, $col1, $row2, $col2);
- }
-
- /**
- * Convert an Excel cell reference such as A1 or $B2 or C$3 or $D$4 to a zero
- * indexed row and column number. Also returns two (0,1) values to indicate
- * whether the row or column are relative references.
- *
- * @access private
- * @param string $cell The Excel cell reference in A1 format.
- * @return array
- */
- function _cellToRowcol($cell)
- {
- preg_match('/(\$)?([A-I]?[A-Z])(\$)?(\d+)/',$cell,$match);
- // return absolute column if there is a $ in the ref
- $col_rel = empty($match[1]) ? 1 : 0;
- $col_ref = $match[2];
- $row_rel = empty($match[3]) ? 1 : 0;
- $row = $match[4];
-
- // Convert base26 column string to a number.
- $expn = strlen($col_ref) - 1;
- $col = 0;
- $col_ref_length = strlen($col_ref);
- for ($i = 0; $i < $col_ref_length; ++$i) {
- $col += (ord($col_ref{$i}) - 64) * pow(26, $expn);
- --$expn;
- }
-
- // Convert 1-index to zero-index
- --$row;
- --$col;
-
- return array($row, $col, $row_rel, $col_rel);
- }
-
- /**
- * Advance to the next valid token.
- *
- * @access private
- */
- function _advance()
- {
- $i = $this->_current_char;
- $formula_length = strlen($this->_formula);
- // eat up white spaces
- if ($i < $formula_length) {
- while ($this->_formula{$i} == " ") {
- ++$i;
- }
-
- if ($i < ($formula_length - 1)) {
- $this->_lookahead = $this->_formula{$i+1};
- }
- $token = '';
- }
-
- while ($i < $formula_length) {
- $token .= $this->_formula{$i};
-
- if ($i < ($formula_length - 1)) {
- $this->_lookahead = $this->_formula{$i+1};
- } else {
- $this->_lookahead = '';
- }
-
- if ($this->_match($token) != '') {
- //if ($i < strlen($this->_formula) - 1) {
- // $this->_lookahead = $this->_formula{$i+1};
- //}
- $this->_current_char = $i + 1;
- $this->_current_token = $token;
- return 1;
- }
-
- if ($i < ($formula_length - 2)) {
- $this->_lookahead = $this->_formula{$i+2};
- } else { // if we run out of characters _lookahead becomes empty
- $this->_lookahead = '';
- }
- ++$i;
- }
- //die("Lexical error ".$this->_current_char);
- }
-
- /**
- * Checks if it's a valid token.
- *
- * @access private
- * @param mixed $token The token to check.
- * @return mixed The checked token or false on failure
- */
- function _match($token)
- {
- switch($token) {
- case "+":
- case "-":
- case "*":
- case "/":
- case "(":
- case ")":
- case ",":
- case ";":
- case ">=":
- case "<=":
- case "=":
- case "<>":
- case "^":
- case "&":
- case "%":
- return $token;
- break;
- case ">":
- if ($this->_lookahead == '=') { // it's a GE token
- break;
- }
- return $token;
- break;
- case "<":
- // it's a LE or a NE token
- if (($this->_lookahead == '=') or ($this->_lookahead == '>')) {
- break;
- }
- return $token;
- break;
- default:
- // if it's a reference A1 or $A$1 or $A1 or A$1
- if (preg_match('/^\$?[A-Ia-i]?[A-Za-z]\$?[0-9]+$/',$token) and
- !preg_match("/[0-9]/",$this->_lookahead) and
- ($this->_lookahead != ':') and ($this->_lookahead != '.') and
- ($this->_lookahead != '!'))
- {
- return $token;
- }
- // If it's an external reference (Sheet1!A1 or Sheet1:Sheet2!A1 or Sheet1!$A$1 or Sheet1:Sheet2!$A$1)
- elseif (preg_match("/^" . self::REGEX_SHEET_TITLE_UNQUOTED . "(\:" . self::REGEX_SHEET_TITLE_UNQUOTED . ")?\!\\$?[A-Ia-i]?[A-Za-z]\\$?[0-9]+$/u",$token) and
- !preg_match("/[0-9]/",$this->_lookahead) and
- ($this->_lookahead != ':') and ($this->_lookahead != '.'))
- {
- return $token;
- }
- // If it's an external reference ('Sheet1'!A1 or 'Sheet1:Sheet2'!A1 or 'Sheet1'!$A$1 or 'Sheet1:Sheet2'!$A$1)
- elseif (preg_match("/^'" . self::REGEX_SHEET_TITLE_QUOTED . "(\:" . self::REGEX_SHEET_TITLE_QUOTED . ")?'\!\\$?[A-Ia-i]?[A-Za-z]\\$?[0-9]+$/u",$token) and
- !preg_match("/[0-9]/",$this->_lookahead) and
- ($this->_lookahead != ':') and ($this->_lookahead != '.'))
- {
- return $token;
- }
- // if it's a range A1:A2 or $A$1:$A$2
- elseif (preg_match('/^(\$)?[A-Ia-i]?[A-Za-z](\$)?[0-9]+:(\$)?[A-Ia-i]?[A-Za-z](\$)?[0-9]+$/', $token) and
- !preg_match("/[0-9]/",$this->_lookahead))
- {
- return $token;
- }
- // If it's an external range like Sheet1!A1:B2 or Sheet1:Sheet2!A1:B2 or Sheet1!$A$1:$B$2 or Sheet1:Sheet2!$A$1:$B$2
- elseif (preg_match("/^" . self::REGEX_SHEET_TITLE_UNQUOTED . "(\:" . self::REGEX_SHEET_TITLE_UNQUOTED . ")?\!\\$?([A-Ia-i]?[A-Za-z])?\\$?[0-9]+:\\$?([A-Ia-i]?[A-Za-z])?\\$?[0-9]+$/u",$token) and
- !preg_match("/[0-9]/",$this->_lookahead))
- {
- return $token;
- }
- // If it's an external range like 'Sheet1'!A1:B2 or 'Sheet1:Sheet2'!A1:B2 or 'Sheet1'!$A$1:$B$2 or 'Sheet1:Sheet2'!$A$1:$B$2
- elseif (preg_match("/^'" . self::REGEX_SHEET_TITLE_QUOTED . "(\:" . self::REGEX_SHEET_TITLE_QUOTED . ")?'\!\\$?([A-Ia-i]?[A-Za-z])?\\$?[0-9]+:\\$?([A-Ia-i]?[A-Za-z])?\\$?[0-9]+$/u",$token) and
- !preg_match("/[0-9]/",$this->_lookahead))
- {
- return $token;
- }
- // If it's a number (check that it's not a sheet name or range)
- elseif (is_numeric($token) and
- (!is_numeric($token.$this->_lookahead) or ($this->_lookahead == '')) and
- ($this->_lookahead != '!') and ($this->_lookahead != ':'))
- {
- return $token;
- }
- // If it's a string (of maximum 255 characters)
- elseif (preg_match("/\"([^\"]|\"\"){0,255}\"/",$token) and $this->_lookahead != '"' and (substr_count($token, '"')%2 == 0))
- {
- return $token;
- }
- // If it's an error code
- elseif (preg_match("/^#[A-Z0\/]{3,5}[!?]{1}$/", $token) or $token == '#N/A')
- {
- return $token;
- }
- // if it's a function call
- elseif (preg_match("/^[A-Z0-9\xc0-\xdc\.]+$/i",$token) and ($this->_lookahead == "("))
- {
- return $token;
- }
- // It's an argument of some description (e.g. a named range),
- // precise nature yet to be determined
- elseif(substr($token,-1) == ')') {
- return $token;
- }
- return '';
- }
- }
-
- /**
- * The parsing method. It parses a formula.
- *
- * @access public
- * @param string $formula The formula to parse, without the initial equal
- * sign (=).
- * @return mixed true on success
- */
- function parse($formula)
- {
- $this->_current_char = 0;
- $this->_formula = $formula;
- $this->_lookahead = isset($formula{1}) ? $formula{1} : '';
- $this->_advance();
- $this->_parse_tree = $this->_condition();
- return true;
- }
-
- /**
- * It parses a condition. It assumes the following rule:
- * Cond -> Expr [(">" | "<") Expr]
- *
- * @access private
- * @return mixed The parsed ptg'd tree on success
- */
- function _condition()
- {
- $result = $this->_expression();
- if ($this->_current_token == "<") {
- $this->_advance();
- $result2 = $this->_expression();
- $result = $this->_createTree('ptgLT', $result, $result2);
- } elseif ($this->_current_token == ">") {
- $this->_advance();
- $result2 = $this->_expression();
- $result = $this->_createTree('ptgGT', $result, $result2);
- } elseif ($this->_current_token == "<=") {
- $this->_advance();
- $result2 = $this->_expression();
- $result = $this->_createTree('ptgLE', $result, $result2);
- } elseif ($this->_current_token == ">=") {
- $this->_advance();
- $result2 = $this->_expression();
- $result = $this->_createTree('ptgGE', $result, $result2);
- } elseif ($this->_current_token == "=") {
- $this->_advance();
- $result2 = $this->_expression();
- $result = $this->_createTree('ptgEQ', $result, $result2);
- } elseif ($this->_current_token == "<>") {
- $this->_advance();
- $result2 = $this->_expression();
- $result = $this->_createTree('ptgNE', $result, $result2);
- } elseif ($this->_current_token == "&") {
- $this->_advance();
- $result2 = $this->_expression();
- $result = $this->_createTree('ptgConcat', $result, $result2);
- }
- return $result;
- }
-
- /**
- * It parses a expression. It assumes the following rule:
- * Expr -> Term [("+" | "-") Term]
- * -> "string"
- * -> "-" Term : Negative value
- * -> "+" Term : Positive value
- * -> Error code
- *
- * @access private
- * @return mixed The parsed ptg'd tree on success
- */
- function _expression()
- {
- // If it's a string return a string node
- if (preg_match("/\"([^\"]|\"\"){0,255}\"/", $this->_current_token)) {
- $tmp = str_replace('""', '"', $this->_current_token);
- if (($tmp == '"') || ($tmp == '')) $tmp = '""'; // Trap for "" that has been used for an empty string
- $result = $this->_createTree($tmp, '', '');
- $this->_advance();
- return $result;
- // If it's an error code
- } elseif (preg_match("/^#[A-Z0\/]{3,5}[!?]{1}$/", $this->_current_token) or $this->_current_token == '#N/A'){
- $result = $this->_createTree($this->_current_token, 'ptgErr', '');
- $this->_advance();
- return $result;
- // If it's a negative value
- } elseif ($this->_current_token == "-") {
- // catch "-" Term
- $this->_advance();
- $result2 = $this->_expression();
- $result = $this->_createTree('ptgUminus', $result2, '');
- return $result;
- // If it's a positive value
- } elseif ($this->_current_token == "+") {
- // catch "+" Term
- $this->_advance();
- $result2 = $this->_expression();
- $result = $this->_createTree('ptgUplus', $result2, '');
- return $result;
- }
- $result = $this->_term();
- while (($this->_current_token == "+") or
- ($this->_current_token == "-") or
- ($this->_current_token == "^")) {
- /**/
- if ($this->_current_token == "+") {
- $this->_advance();
- $result2 = $this->_term();
- $result = $this->_createTree('ptgAdd', $result, $result2);
- } elseif ($this->_current_token == "-") {
- $this->_advance();
- $result2 = $this->_term();
- $result = $this->_createTree('ptgSub', $result, $result2);
- } else {
- $this->_advance();
- $result2 = $this->_term();
- $result = $this->_createTree('ptgPower', $result, $result2);
- }
- }
- return $result;
- }
-
- /**
- * This function just introduces a ptgParen element in the tree, so that Excel
- * doesn't get confused when working with a parenthesized formula afterwards.
- *
- * @access private
- * @see _fact()
- * @return array The parsed ptg'd tree
- */
- function _parenthesizedExpression()
- {
- $result = $this->_createTree('ptgParen', $this->_expression(), '');
- return $result;
- }
-
- /**
- * It parses a term. It assumes the following rule:
- * Term -> Fact [("*" | "/") Fact]
- *
- * @access private
- * @return mixed The parsed ptg'd tree on success
- */
- function _term()
- {
- $result = $this->_fact();
- while (($this->_current_token == "*") or
- ($this->_current_token == "/")) {
- /**/
- if ($this->_current_token == "*") {
- $this->_advance();
- $result2 = $this->_fact();
- $result = $this->_createTree('ptgMul', $result, $result2);
- } else {
- $this->_advance();
- $result2 = $this->_fact();
- $result = $this->_createTree('ptgDiv', $result, $result2);
- }
- }
- return $result;
- }
-
- /**
- * It parses a factor. It assumes the following rule:
- * Fact -> ( Expr )
- * | CellRef
- * | CellRange
- * | Number
- * | Function
- *
- * @access private
- * @return mixed The parsed ptg'd tree on success
- */
- function _fact()
- {
- if ($this->_current_token == "(") {
- $this->_advance(); // eat the "("
- $result = $this->_parenthesizedExpression();
- if ($this->_current_token != ")") {
- throw new Exception("')' token expected.");
- }
- $this->_advance(); // eat the ")"
- return $result;
- }
- // if it's a reference
- if (preg_match('/^\$?[A-Ia-i]?[A-Za-z]\$?[0-9]+$/',$this->_current_token))
- {
- $result = $this->_createTree($this->_current_token, '', '');
- $this->_advance();
- return $result;
- }
- // If it's an external reference (Sheet1!A1 or Sheet1:Sheet2!A1 or Sheet1!$A$1 or Sheet1:Sheet2!$A$1)
- elseif (preg_match("/^" . self::REGEX_SHEET_TITLE_UNQUOTED . "(\:" . self::REGEX_SHEET_TITLE_UNQUOTED . ")?\!\\$?[A-Ia-i]?[A-Za-z]\\$?[0-9]+$/u",$this->_current_token))
- {
- $result = $this->_createTree($this->_current_token, '', '');
- $this->_advance();
- return $result;
- }
- // If it's an external reference ('Sheet1'!A1 or 'Sheet1:Sheet2'!A1 or 'Sheet1'!$A$1 or 'Sheet1:Sheet2'!$A$1)
- elseif (preg_match("/^'" . self::REGEX_SHEET_TITLE_QUOTED . "(\:" . self::REGEX_SHEET_TITLE_QUOTED . ")?'\!\\$?[A-Ia-i]?[A-Za-z]\\$?[0-9]+$/u",$this->_current_token))
- {
- $result = $this->_createTree($this->_current_token, '', '');
- $this->_advance();
- return $result;
- }
- // if it's a range A1:B2 or $A$1:$B$2
- elseif (preg_match('/^(\$)?[A-Ia-i]?[A-Za-z](\$)?[0-9]+:(\$)?[A-Ia-i]?[A-Za-z](\$)?[0-9]+$/',$this->_current_token) or
- preg_match('/^(\$)?[A-Ia-i]?[A-Za-z](\$)?[0-9]+\.\.(\$)?[A-Ia-i]?[A-Za-z](\$)?[0-9]+$/',$this->_current_token))
- {
- // must be an error?
- $result = $this->_createTree($this->_current_token, '', '');
- $this->_advance();
- return $result;
- }
- // If it's an external range (Sheet1!A1:B2 or Sheet1:Sheet2!A1:B2 or Sheet1!$A$1:$B$2 or Sheet1:Sheet2!$A$1:$B$2)
- elseif (preg_match("/^" . self::REGEX_SHEET_TITLE_UNQUOTED . "(\:" . self::REGEX_SHEET_TITLE_UNQUOTED . ")?\!\\$?([A-Ia-i]?[A-Za-z])?\\$?[0-9]+:\\$?([A-Ia-i]?[A-Za-z])?\\$?[0-9]+$/u",$this->_current_token))
- {
- // must be an error?
- //$result = $this->_current_token;
- $result = $this->_createTree($this->_current_token, '', '');
- $this->_advance();
- return $result;
- }
- // If it's an external range ('Sheet1'!A1:B2 or 'Sheet1'!A1:B2 or 'Sheet1'!$A$1:$B$2 or 'Sheet1'!$A$1:$B$2)
- elseif (preg_match("/^'" . self::REGEX_SHEET_TITLE_QUOTED . "(\:" . self::REGEX_SHEET_TITLE_QUOTED . ")?'\!\\$?([A-Ia-i]?[A-Za-z])?\\$?[0-9]+:\\$?([A-Ia-i]?[A-Za-z])?\\$?[0-9]+$/u",$this->_current_token))
- {
- // must be an error?
- //$result = $this->_current_token;
- $result = $this->_createTree($this->_current_token, '', '');
- $this->_advance();
- return $result;
- }
- // If it's a number or a percent
- elseif (is_numeric($this->_current_token))
- {
- if($this->_lookahead == '%'){
- $result = $this->_createTree('ptgPercent', $this->_current_token, '');
- } else {
- $result = $this->_createTree($this->_current_token, '', '');
- }
- $this->_advance();
- return $result;
- }
- // if it's a function call
- elseif (preg_match("/^[A-Z0-9\xc0-\xdc\.]+$/i",$this->_current_token))
- {
- $result = $this->_func();
- return $result;
- }
- throw new Exception("Syntax error: ".$this->_current_token.
- ", lookahead: ".$this->_lookahead.
- ", current char: ".$this->_current_char);
- }
-
- /**
- * It parses a function call. It assumes the following rule:
- * Func -> ( Expr [,Expr]* )
- *
- * @access private
- * @return mixed The parsed ptg'd tree on success
- */
- function _func()
- {
- $num_args = 0; // number of arguments received
- $function = strtoupper($this->_current_token);
- $result = ''; // initialize result
- $this->_advance();
- $this->_advance(); // eat the "("
- while ($this->_current_token != ')') {
- /**/
- if ($num_args > 0) {
- if ($this->_current_token == "," or
- $this->_current_token == ";")
- {
- $this->_advance(); // eat the "," or ";"
- } else {
- throw new Exception("Syntax error: comma expected in ".
- "function $function, arg #{$num_args}");
- }
- $result2 = $this->_condition();
- $result = $this->_createTree('arg', $result, $result2);
- } else { // first argument
- $result2 = $this->_condition();
- $result = $this->_createTree('arg', '', $result2);
- }
- ++$num_args;
- }
- if (!isset($this->_functions[$function])) {
- throw new Exception("Function $function() doesn't exist");
- }
- $args = $this->_functions[$function][1];
- // If fixed number of args eg. TIME($i,$j,$k). Check that the number of args is valid.
- if (($args >= 0) and ($args != $num_args)) {
- throw new Exception("Incorrect number of arguments in function $function() ");
- }
-
- $result = $this->_createTree($function, $result, $num_args);
- $this->_advance(); // eat the ")"
- return $result;
- }
-
- /**
- * Creates a tree. In fact an array which may have one or two arrays (sub-trees)
- * as elements.
- *
- * @access private
- * @param mixed $value The value of this node.
- * @param mixed $left The left array (sub-tree) or a final node.
- * @param mixed $right The right array (sub-tree) or a final node.
- * @return array A tree
- */
- function _createTree($value, $left, $right)
- {
- return array('value' => $value, 'left' => $left, 'right' => $right);
- }
-
- /**
- * Builds a string containing the tree in reverse polish notation (What you
- * would use in a HP calculator stack).
- * The following tree:
- *
- * +
- * / \
- * 2 3
- *
- * produces: "23+"
- *
- * The following tree:
- *
- * +
- * / \
- * 3 *
- * / \
- * 6 A1
- *
- * produces: "36A1*+"
- *
- * In fact all operands, functions, references, etc... are written as ptg's
- *
- * @access public
- * @param array $tree The optional tree to convert.
- * @return string The tree in reverse polish notation
- */
- function toReversePolish($tree = array())
- {
- $polish = ""; // the string we are going to return
- if (empty($tree)) { // If it's the first call use _parse_tree
- $tree = $this->_parse_tree;
- }
-
- if (is_array($tree['left'])) {
- $converted_tree = $this->toReversePolish($tree['left']);
- $polish .= $converted_tree;
- } elseif ($tree['left'] != '') { // It's a final node
- $converted_tree = $this->_convert($tree['left']);
- $polish .= $converted_tree;
- }
- if (is_array($tree['right'])) {
- $converted_tree = $this->toReversePolish($tree['right']);
- $polish .= $converted_tree;
- } elseif ($tree['right'] != '') { // It's a final node
- $converted_tree = $this->_convert($tree['right']);
- $polish .= $converted_tree;
- }
- // if it's a function convert it here (so we can set it's arguments)
- if (preg_match("/^[A-Z0-9\xc0-\xdc\.]+$/",$tree['value']) and
- !preg_match('/^([A-Ia-i]?[A-Za-z])(\d+)$/',$tree['value']) and
- !preg_match("/^[A-Ia-i]?[A-Za-z](\d+)\.\.[A-Ia-i]?[A-Za-z](\d+)$/",$tree['value']) and
- !is_numeric($tree['value']) and
- !isset($this->ptg[$tree['value']]))
- {
- // left subtree for a function is always an array.
- if ($tree['left'] != '') {
- $left_tree = $this->toReversePolish($tree['left']);
- } else {
- $left_tree = '';
- }
- // add it's left subtree and return.
- return $left_tree.$this->_convertFunction($tree['value'], $tree['right']);
- } else {
- $converted_tree = $this->_convert($tree['value']);
- }
- $polish .= $converted_tree;
- return $polish;
- }
-
-}
diff --git a/admin/survey/excel/PHPExcel/Writer/Excel5/Workbook.php b/admin/survey/excel/PHPExcel/Writer/Excel5/Workbook.php
deleted file mode 100644
index c9df493..0000000
--- a/admin/survey/excel/PHPExcel/Writer/Excel5/Workbook.php
+++ /dev/null
@@ -1,1450 +0,0 @@
-<?php
-/**
- * PHPExcel
- *
- * Copyright (c) 2006 - 2012 PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel_Writer_Excel5
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-// Original file header of PEAR::Spreadsheet_Excel_Writer_Workbook (used as the base for this class):
-// -----------------------------------------------------------------------------------------
-// /*
-// * Module written/ported by Xavier Noguer <xnoguer@rezebra.com>
-// *
-// * The majority of this is _NOT_ my code. I simply ported it from the
-// * PERL Spreadsheet::WriteExcel module.
-// *
-// * The author of the Spreadsheet::WriteExcel module is John McNamara
-// * <jmcnamara@cpan.org>
-// *
-// * I _DO_ maintain this code, and John McNamara has nothing to do with the
-// * porting of this code to PHP. Any questions directly related to this
-// * class library should be directed to me.
-// *
-// * License Information:
-// *
-// * Spreadsheet_Excel_Writer: A library for generating Excel Spreadsheets
-// * Copyright (c) 2002-2003 Xavier Noguer xnoguer@rezebra.com
-// *
-// * This library is free software; you can redistribute it and/or
-// * modify it under the terms of the GNU Lesser General Public
-// * License as published by the Free Software Foundation; either
-// * version 2.1 of the License, or (at your option) any later version.
-// *
-// * This library is distributed in the hope that it will be useful,
-// * but WITHOUT ANY WARRANTY; without even the implied warranty of
-// * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// * Lesser General Public License for more details.
-// *
-// * You should have received a copy of the GNU Lesser General Public
-// * License along with this library; if not, write to the Free Software
-// * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-// */
-
-
-/**
- * PHPExcel_Writer_Excel5_Workbook
- *
- * @category PHPExcel
- * @package PHPExcel_Writer_Excel5
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- */
-class PHPExcel_Writer_Excel5_Workbook extends PHPExcel_Writer_Excel5_BIFFwriter
-{
- /**
- * Formula parser
- *
- * @var PHPExcel_Writer_Excel5_Parser
- */
- private $_parser;
-
- /**
- * The BIFF file size for the workbook.
- * @var integer
- * @see _calcSheetOffsets()
- */
- public $_biffsize;
-
- /**
- * XF Writers
- * @var PHPExcel_Writer_Excel5_Xf[]
- */
- private $_xfWriters = array();
-
- /**
- * Array containing the colour palette
- * @var array
- */
- public $_palette;
-
- /**
- * The codepage indicates the text encoding used for strings
- * @var integer
- */
- public $_codepage;
-
- /**
- * The country code used for localization
- * @var integer
- */
- public $_country_code;
-
- /**
- * Workbook
- * @var PHPExcel
- */
- private $_phpExcel;
-
- /**
- * Fonts writers
- *
- * @var PHPExcel_Writer_Excel5_Font[]
- */
- private $_fontWriters = array();
-
- /**
- * Added fonts. Maps from font's hash => index in workbook
- *
- * @var array
- */
- private $_addedFonts = array();
-
- /**
- * Shared number formats
- *
- * @var array
- */
- private $_numberFormats = array();
-
- /**
- * Added number formats. Maps from numberFormat's hash => index in workbook
- *
- * @var array
- */
- private $_addedNumberFormats = array();
-
- /**
- * Sizes of the binary worksheet streams
- *
- * @var array
- */
- private $_worksheetSizes = array();
-
- /**
- * Offsets of the binary worksheet streams relative to the start of the global workbook stream
- *
- * @var array
- */
- private $_worksheetOffsets = array();
-
- /**
- * Total number of shared strings in workbook
- *
- * @var int
- */
- private $_str_total;
-
- /**
- * Number of unique shared strings in workbook
- *
- * @var int
- */
- private $_str_unique;
-
- /**
- * Array of unique shared strings in workbook
- *
- * @var array
- */
- private $_str_table;
-
- /**
- * Color cache
- */
- private $_colors;
-
- /**
- * Escher object corresponding to MSODRAWINGGROUP
- *
- * @var PHPExcel_Shared_Escher
- */
- private $_escher;
-
-
- /**
- * Class constructor
- *
- * @param PHPExcel $phpExcel The Workbook
- * @param int &$str_total Total number of strings
- * @param int &$str_unique Total number of unique strings
- * @param array &$str_table String Table
- * @param array &$colors Colour Table
- * @param mixed $parser The formula parser created for the Workbook
- */
- public function __construct(PHPExcel $phpExcel = null,
- &$str_total, &$str_unique, &$str_table, &$colors,
- $parser )
- {
- // It needs to call its parent's constructor explicitly
- parent::__construct();
-
- $this->_parser = $parser;
- $this->_biffsize = 0;
- $this->_palette = array();
- $this->_country_code = -1;
-
- $this->_str_total = &$str_total;
- $this->_str_unique = &$str_unique;
- $this->_str_table = &$str_table;
- $this->_colors = &$colors;
- $this->_setPaletteXl97();
-
- $this->_phpExcel = $phpExcel;
-
- // set BIFFwriter limit for CONTINUE records
- // $this->_limit = 8224;
- $this->_codepage = 0x04B0;
-
- // Add empty sheets and Build color cache
- $countSheets = $phpExcel->getSheetCount();
- for ($i = 0; $i < $countSheets; ++$i) {
- $phpSheet = $phpExcel->getSheet($i);
-
- $this->_parser->setExtSheet($phpSheet->getTitle(), $i); // Register worksheet name with parser
-
- $supbook_index = 0x00;
- $ref = pack('vvv', $supbook_index, $i, $i);
- $this->_parser->_references[] = $ref; // Register reference with parser
-
- // Sheet tab colors?
- if ($phpSheet->isTabColorSet()) {
- $this->_addColor($phpSheet->getTabColor()->getRGB());
- }
- }
-
- }
-
- /**
- * Add a new XF writer
- *
- * @param PHPExcel_Style
- * @param boolean Is it a style XF?
- * @return int Index to XF record
- */
- public function addXfWriter($style, $isStyleXf = false)
- {
- $xfWriter = new PHPExcel_Writer_Excel5_Xf($style);
- $xfWriter->setIsStyleXf($isStyleXf);
-
- // Add the font if not already added
- $fontIndex = $this->_addFont($style->getFont());
-
- // Assign the font index to the xf record
- $xfWriter->setFontIndex($fontIndex);
-
- // Background colors, best to treat these after the font so black will come after white in custom palette
- $xfWriter->setFgColor($this->_addColor($style->getFill()->getStartColor()->getRGB()));
- $xfWriter->setBgColor($this->_addColor($style->getFill()->getEndColor()->getRGB()));
- $xfWriter->setBottomColor($this->_addColor($style->getBorders()->getBottom()->getColor()->getRGB()));
- $xfWriter->setTopColor($this->_addColor($style->getBorders()->getTop()->getColor()->getRGB()));
- $xfWriter->setRightColor($this->_addColor($style->getBorders()->getRight()->getColor()->getRGB()));
- $xfWriter->setLeftColor($this->_addColor($style->getBorders()->getLeft()->getColor()->getRGB()));
- $xfWriter->setDiagColor($this->_addColor($style->getBorders()->getDiagonal()->getColor()->getRGB()));
-
- // Add the number format if it is not a built-in one and not already added
- if ($style->getNumberFormat()->getBuiltInFormatCode() === false) {
- $numberFormatHashCode = $style->getNumberFormat()->getHashCode();
-
- if (isset($this->_addedNumberFormats[$numberFormatHashCode])) {
- $numberFormatIndex = $this->_addedNumberFormats[$numberFormatHashCode];
- } else {
- $numberFormatIndex = 164 + count($this->_numberFormats);
- $this->_numberFormats[$numberFormatIndex] = $style->getNumberFormat();
- $this->_addedNumberFormats[$numberFormatHashCode] = $numberFormatIndex;
- }
- } else {
- $numberFormatIndex = (int) $style->getNumberFormat()->getBuiltInFormatCode();
- }
-
- // Assign the number format index to xf record
- $xfWriter->setNumberFormatIndex($numberFormatIndex);
-
- $this->_xfWriters[] = $xfWriter;
-
- $xfIndex = count($this->_xfWriters) - 1;
- return $xfIndex;
- }
-
- /**
- * Add a font to added fonts
- *
- * @param PHPExcel_Style_Font $font
- * @return int Index to FONT record
- */
- public function _addFont(PHPExcel_Style_Font $font)
- {
- $fontHashCode = $font->getHashCode();
- if(isset($this->_addedFonts[$fontHashCode])){
- $fontIndex = $this->_addedFonts[$fontHashCode];
- } else {
- $countFonts = count($this->_fontWriters);
- $fontIndex = ($countFonts < 4) ? $countFonts : $countFonts + 1;
-
- $fontWriter = new PHPExcel_Writer_Excel5_Font($font);
- $fontWriter->setColorIndex($this->_addColor($font->getColor()->getRGB()));
- $this->_fontWriters[] = $fontWriter;
-
- $this->_addedFonts[$fontHashCode] = $fontIndex;
- }
- return $fontIndex;
- }
- /**
- * Alter color palette adding a custom color
- *
- * @param string $rgb E.g. 'FF00AA'
- * @return int Color index
- */
- private function _addColor($rgb) {
- if (!isset($this->_colors[$rgb])) {
- if (count($this->_colors) < 57) {
- // then we add a custom color altering the palette
- $colorIndex = 8 + count($this->_colors);
- $this->_palette[$colorIndex] =
- array(
- hexdec(substr($rgb, 0, 2)),
- hexdec(substr($rgb, 2, 2)),
- hexdec(substr($rgb, 4)),
- 0
- );
- $this->_colors[$rgb] = $colorIndex;
- } else {
- // no room for more custom colors, just map to black
- $colorIndex = 0;
- }
- } else {
- // fetch already added custom color
- $colorIndex = $this->_colors[$rgb];
- }
-
- return $colorIndex;
- }
-
- /**
- * Sets the colour palette to the Excel 97+ default.
- *
- * @access private
- */
- function _setPaletteXl97()
- {
- $this->_palette = array(
- 0x08 => array(0x00, 0x00, 0x00, 0x00),
- 0x09 => array(0xff, 0xff, 0xff, 0x00),
- 0x0A => array(0xff, 0x00, 0x00, 0x00),
- 0x0B => array(0x00, 0xff, 0x00, 0x00),
- 0x0C => array(0x00, 0x00, 0xff, 0x00),
- 0x0D => array(0xff, 0xff, 0x00, 0x00),
- 0x0E => array(0xff, 0x00, 0xff, 0x00),
- 0x0F => array(0x00, 0xff, 0xff, 0x00),
- 0x10 => array(0x80, 0x00, 0x00, 0x00),
- 0x11 => array(0x00, 0x80, 0x00, 0x00),
- 0x12 => array(0x00, 0x00, 0x80, 0x00),
- 0x13 => array(0x80, 0x80, 0x00, 0x00),
- 0x14 => array(0x80, 0x00, 0x80, 0x00),
- 0x15 => array(0x00, 0x80, 0x80, 0x00),
- 0x16 => array(0xc0, 0xc0, 0xc0, 0x00),
- 0x17 => array(0x80, 0x80, 0x80, 0x00),
- 0x18 => array(0x99, 0x99, 0xff, 0x00),
- 0x19 => array(0x99, 0x33, 0x66, 0x00),
- 0x1A => array(0xff, 0xff, 0xcc, 0x00),
- 0x1B => array(0xcc, 0xff, 0xff, 0x00),
- 0x1C => array(0x66, 0x00, 0x66, 0x00),
- 0x1D => array(0xff, 0x80, 0x80, 0x00),
- 0x1E => array(0x00, 0x66, 0xcc, 0x00),
- 0x1F => array(0xcc, 0xcc, 0xff, 0x00),
- 0x20 => array(0x00, 0x00, 0x80, 0x00),
- 0x21 => array(0xff, 0x00, 0xff, 0x00),
- 0x22 => array(0xff, 0xff, 0x00, 0x00),
- 0x23 => array(0x00, 0xff, 0xff, 0x00),
- 0x24 => array(0x80, 0x00, 0x80, 0x00),
- 0x25 => array(0x80, 0x00, 0x00, 0x00),
- 0x26 => array(0x00, 0x80, 0x80, 0x00),
- 0x27 => array(0x00, 0x00, 0xff, 0x00),
- 0x28 => array(0x00, 0xcc, 0xff, 0x00),
- 0x29 => array(0xcc, 0xff, 0xff, 0x00),
- 0x2A => array(0xcc, 0xff, 0xcc, 0x00),
- 0x2B => array(0xff, 0xff, 0x99, 0x00),
- 0x2C => array(0x99, 0xcc, 0xff, 0x00),
- 0x2D => array(0xff, 0x99, 0xcc, 0x00),
- 0x2E => array(0xcc, 0x99, 0xff, 0x00),
- 0x2F => array(0xff, 0xcc, 0x99, 0x00),
- 0x30 => array(0x33, 0x66, 0xff, 0x00),
- 0x31 => array(0x33, 0xcc, 0xcc, 0x00),
- 0x32 => array(0x99, 0xcc, 0x00, 0x00),
- 0x33 => array(0xff, 0xcc, 0x00, 0x00),
- 0x34 => array(0xff, 0x99, 0x00, 0x00),
- 0x35 => array(0xff, 0x66, 0x00, 0x00),
- 0x36 => array(0x66, 0x66, 0x99, 0x00),
- 0x37 => array(0x96, 0x96, 0x96, 0x00),
- 0x38 => array(0x00, 0x33, 0x66, 0x00),
- 0x39 => array(0x33, 0x99, 0x66, 0x00),
- 0x3A => array(0x00, 0x33, 0x00, 0x00),
- 0x3B => array(0x33, 0x33, 0x00, 0x00),
- 0x3C => array(0x99, 0x33, 0x00, 0x00),
- 0x3D => array(0x99, 0x33, 0x66, 0x00),
- 0x3E => array(0x33, 0x33, 0x99, 0x00),
- 0x3F => array(0x33, 0x33, 0x33, 0x00),
- );
- }
-
- /**
- * Assemble worksheets into a workbook and send the BIFF data to an OLE
- * storage.
- *
- * @param array $pWorksheetSizes The sizes in bytes of the binary worksheet streams
- * @return string Binary data for workbook stream
- */
- public function writeWorkbook($pWorksheetSizes = null)
- {
- $this->_worksheetSizes = $pWorksheetSizes;
-
- // Calculate the number of selected worksheet tabs and call the finalization
- // methods for each worksheet
- $total_worksheets = $this->_phpExcel->getSheetCount();
-
- // Add part 1 of the Workbook globals, what goes before the SHEET records
- $this->_storeBof(0x0005);
- $this->_writeCodepage();
- $this->_writeWindow1();
-
- $this->_writeDatemode();
- $this->_writeAllFonts();
- $this->_writeAllNumFormats();
- $this->_writeAllXfs();
- $this->_writeAllStyles();
- $this->_writePalette();
-
- // Prepare part 3 of the workbook global stream, what goes after the SHEET records
- $part3 = '';
- if ($this->_country_code != -1) {
- $part3 .= $this->_writeCountry();
- }
- $part3 .= $this->_writeRecalcId();
-
- $part3 .= $this->_writeSupbookInternal();
- /* TODO: store external SUPBOOK records and XCT and CRN records
- in case of external references for BIFF8 */
- $part3 .= $this->_writeExternsheetBiff8();
- $part3 .= $this->_writeAllDefinedNamesBiff8();
- $part3 .= $this->_writeMsoDrawingGroup();
- $part3 .= $this->_writeSharedStringsTable();
-
- $part3 .= $this->writeEof();
-
- // Add part 2 of the Workbook globals, the SHEET records
- $this->_calcSheetOffsets();
- for ($i = 0; $i < $total_worksheets; ++$i) {
- $this->_writeBoundsheet($this->_phpExcel->getSheet($i), $this->_worksheetOffsets[$i]);
- }
-
- // Add part 3 of the Workbook globals
- $this->_data .= $part3;
-
- return $this->_data;
- }
-
- /**
- * Calculate offsets for Worksheet BOF records.
- *
- * @access private
- */
- function _calcSheetOffsets()
- {
- $boundsheet_length = 10; // fixed length for a BOUNDSHEET record
-
- // size of Workbook globals part 1 + 3
- $offset = $this->_datasize;
-
- // add size of Workbook globals part 2, the length of the SHEET records
- $total_worksheets = count($this->_phpExcel->getAllSheets());
- foreach ($this->_phpExcel->getWorksheetIterator() as $sheet) {
- $offset += $boundsheet_length + strlen(PHPExcel_Shared_String::UTF8toBIFF8UnicodeShort($sheet->getTitle()));
- }
-
- // add the sizes of each of the Sheet substreams, respectively
- for ($i = 0; $i < $total_worksheets; ++$i) {
- $this->_worksheetOffsets[$i] = $offset;
- $offset += $this->_worksheetSizes[$i];
- }
- $this->_biffsize = $offset;
- }
-
- /**
- * Store the Excel FONT records.
- */
- private function _writeAllFonts()
- {
- foreach ($this->_fontWriters as $fontWriter) {
- $this->_append($fontWriter->writeFont());
- }
- }
-
- /**
- * Store user defined numerical formats i.e. FORMAT records
- */
- private function _writeAllNumFormats()
- {
- foreach ($this->_numberFormats as $numberFormatIndex => $numberFormat) {
- $this->_writeNumFormat($numberFormat->getFormatCode(), $numberFormatIndex);
- }
- }
-
- /**
- * Write all XF records.
- */
- private function _writeAllXfs()
- {
- foreach ($this->_xfWriters as $xfWriter) {
- $this->_append($xfWriter->writeXf());
- }
- }
-
- /**
- * Write all STYLE records.
- */
- private function _writeAllStyles()
- {
- $this->_writeStyle();
- }
-
- /**
- * Write the EXTERNCOUNT and EXTERNSHEET records. These are used as indexes for
- * the NAME records.
- */
- private function _writeExterns()
- {
- $countSheets = $this->_phpExcel->getSheetCount();
- // Create EXTERNCOUNT with number of worksheets
- $this->_writeExterncount($countSheets);
-
- // Create EXTERNSHEET for each worksheet
- for ($i = 0; $i < $countSheets; ++$i) {
- $this->_writeExternsheet($this->_phpExcel->getSheet($i)->getTitle());
- }
- }
-
- /**
- * Write the NAME record to define the print area and the repeat rows and cols.
- */
- private function _writeNames()
- {
- // total number of sheets
- $total_worksheets = $this->_phpExcel->getSheetCount();
-
- // Create the print area NAME records
- for ($i = 0; $i < $total_worksheets; ++$i) {
- $sheetSetup = $this->_phpExcel->getSheet($i)->getPageSetup();
- // Write a Name record if the print area has been defined
- if ($sheetSetup->isPrintAreaSet()) {
- // Print area
- $printArea = PHPExcel_Cell::splitRange($sheetSetup->getPrintArea());
- $printArea = $printArea[0];
- $printArea[0] = PHPExcel_Cell::coordinateFromString($printArea[0]);
- $printArea[1] = PHPExcel_Cell::coordinateFromString($printArea[1]);
-
- $print_rowmin = $printArea[0][1] - 1;
- $print_rowmax = $printArea[1][1] - 1;
- $print_colmin = PHPExcel_Cell::columnIndexFromString($printArea[0][0]) - 1;
- $print_colmax = PHPExcel_Cell::columnIndexFromString($printArea[1][0]) - 1;
-
- $this->_writeNameShort(
- $i, // sheet index
- 0x06, // NAME type
- $print_rowmin,
- $print_rowmax,
- $print_colmin,
- $print_colmax
- );
- }
- }
-
- // Create the print title NAME records
- for ($i = 0; $i < $total_worksheets; ++$i) {
- $sheetSetup = $this->_phpExcel->getSheet($i)->getPageSetup();
-
- // simultaneous repeatColumns repeatRows
- if ($sheetSetup->isColumnsToRepeatAtLeftSet() && $sheetSetup->isRowsToRepeatAtTopSet()) {
- $repeat = $sheetSetup->getColumnsToRepeatAtLeft();
- $colmin = PHPExcel_Cell::columnIndexFromString($repeat[0]) - 1;
- $colmax = PHPExcel_Cell::columnIndexFromString($repeat[1]) - 1;
-
- $repeat = $sheetSetup->getRowsToRepeatAtTop();
- $rowmin = $repeat[0] - 1;
- $rowmax = $repeat[1] - 1;
-
- $this->_writeNameLong(
- $i, // sheet index
- 0x07, // NAME type
- $rowmin,
- $rowmax,
- $colmin,
- $colmax
- );
-
- // (exclusive) either repeatColumns or repeatRows
- } else if ($sheetSetup->isColumnsToRepeatAtLeftSet() || $sheetSetup->isRowsToRepeatAtTopSet()) {
-
- // Columns to repeat
- if ($sheetSetup->isColumnsToRepeatAtLeftSet()) {
- $repeat = $sheetSetup->getColumnsToRepeatAtLeft();
- $colmin = PHPExcel_Cell::columnIndexFromString($repeat[0]) - 1;
- $colmax = PHPExcel_Cell::columnIndexFromString($repeat[1]) - 1;
- } else {
- $colmin = 0;
- $colmax = 255;
- }
-
- // Rows to repeat
- if ($sheetSetup->isRowsToRepeatAtTopSet()) {
- $repeat = $sheetSetup->getRowsToRepeatAtTop();
- $rowmin = $repeat[0] - 1;
- $rowmax = $repeat[1] - 1;
- } else {
- $rowmin = 0;
- $rowmax = 16383;
- }
-
- $this->_writeNameShort(
- $i, // sheet index
- 0x07, // NAME type
- $rowmin,
- $rowmax,
- $colmin,
- $colmax
- );
- }
- }
- }
-
- /**
- * Writes all the DEFINEDNAME records (BIFF8).
- * So far this is only used for repeating rows/columns (print titles) and print areas
- */
- private function _writeAllDefinedNamesBiff8()
- {
- $chunk = '';
-
- // Named ranges
- if (count($this->_phpExcel->getNamedRanges()) > 0) {
- // Loop named ranges
- $namedRanges = $this->_phpExcel->getNamedRanges();
- foreach ($namedRanges as $namedRange) {
-
- // Create absolute coordinate
- $range = PHPExcel_Cell::splitRange($namedRange->getRange());
- for ($i = 0; $i < count($range); $i++) {
- $range[$i][0] = '\'' . str_replace("'", "''", $namedRange->getWorksheet()->getTitle()) . '\'!' . PHPExcel_Cell::absoluteCoordinate($range[$i][0]);
- if (isset($range[$i][1])) {
- $range[$i][1] = PHPExcel_Cell::absoluteCoordinate($range[$i][1]);
- }
- }
- $range = PHPExcel_Cell::buildRange($range); // e.g. Sheet1!$A$1:$B$2
-
- // parse formula
- try {
- $error = $this->_parser->parse($range);
- $formulaData = $this->_parser->toReversePolish();
-
- // make sure tRef3d is of type tRef3dR (0x3A)
- if (isset($formulaData{0}) and ($formulaData{0} == "\x7A" or $formulaData{0} == "\x5A")) {
- $formulaData = "\x3A" . substr($formulaData, 1);
- }
-
- if ($namedRange->getLocalOnly()) {
- // local scope
- $scope = $this->_phpExcel->getIndex($namedRange->getScope()) + 1;
- } else {
- // global scope
- $scope = 0;
- }
- $chunk .= $this->writeData($this->_writeDefinedNameBiff8($namedRange->getName(), $formulaData, $scope, false));
-
- } catch(Exception $e) {
- // do nothing
- }
- }
- }
-
- // total number of sheets
- $total_worksheets = $this->_phpExcel->getSheetCount();
-
- // write the print titles (repeating rows, columns), if any
- for ($i = 0; $i < $total_worksheets; ++$i) {
- $sheetSetup = $this->_phpExcel->getSheet($i)->getPageSetup();
- // simultaneous repeatColumns repeatRows
- if ($sheetSetup->isColumnsToRepeatAtLeftSet() && $sheetSetup->isRowsToRepeatAtTopSet()) {
- $repeat = $sheetSetup->getColumnsToRepeatAtLeft();
- $colmin = PHPExcel_Cell::columnIndexFromString($repeat[0]) - 1;
- $colmax = PHPExcel_Cell::columnIndexFromString($repeat[1]) - 1;
-
- $repeat = $sheetSetup->getRowsToRepeatAtTop();
- $rowmin = $repeat[0] - 1;
- $rowmax = $repeat[1] - 1;
-
- // construct formula data manually
- $formulaData = pack('Cv', 0x29, 0x17); // tMemFunc
- $formulaData .= pack('Cvvvvv', 0x3B, $i, 0, 65535, $colmin, $colmax); // tArea3d
- $formulaData .= pack('Cvvvvv', 0x3B, $i, $rowmin, $rowmax, 0, 255); // tArea3d
- $formulaData .= pack('C', 0x10); // tList
-
- // store the DEFINEDNAME record
- $chunk .= $this->writeData($this->_writeDefinedNameBiff8(pack('C', 0x07), $formulaData, $i + 1, true));
-
- // (exclusive) either repeatColumns or repeatRows
- } else if ($sheetSetup->isColumnsToRepeatAtLeftSet() || $sheetSetup->isRowsToRepeatAtTopSet()) {
-
- // Columns to repeat
- if ($sheetSetup->isColumnsToRepeatAtLeftSet()) {
- $repeat = $sheetSetup->getColumnsToRepeatAtLeft();
- $colmin = PHPExcel_Cell::columnIndexFromString($repeat[0]) - 1;
- $colmax = PHPExcel_Cell::columnIndexFromString($repeat[1]) - 1;
- } else {
- $colmin = 0;
- $colmax = 255;
- }
- // Rows to repeat
- if ($sheetSetup->isRowsToRepeatAtTopSet()) {
- $repeat = $sheetSetup->getRowsToRepeatAtTop();
- $rowmin = $repeat[0] - 1;
- $rowmax = $repeat[1] - 1;
- } else {
- $rowmin = 0;
- $rowmax = 65535;
- }
-
- // construct formula data manually because parser does not recognize absolute 3d cell references
- $formulaData = pack('Cvvvvv', 0x3B, $i, $rowmin, $rowmax, $colmin, $colmax);
-
- // store the DEFINEDNAME record
- $chunk .= $this->writeData($this->_writeDefinedNameBiff8(pack('C', 0x07), $formulaData, $i + 1, true));
- }
- }
-
- // write the print areas, if any
- for ($i = 0; $i < $total_worksheets; ++$i) {
- $sheetSetup = $this->_phpExcel->getSheet($i)->getPageSetup();
- if ($sheetSetup->isPrintAreaSet()) {
- // Print area, e.g. A3:J6,H1:X20
- $printArea = PHPExcel_Cell::splitRange($sheetSetup->getPrintArea());
- $countPrintArea = count($printArea);
-
- $formulaData = '';
- for ($j = 0; $j < $countPrintArea; ++$j) {
- $printAreaRect = $printArea[$j]; // e.g. A3:J6
- $printAreaRect[0] = PHPExcel_Cell::coordinateFromString($printAreaRect[0]);
- $printAreaRect[1] = PHPExcel_Cell::coordinateFromString($printAreaRect[1]);
-
- $print_rowmin = $printAreaRect[0][1] - 1;
- $print_rowmax = $printAreaRect[1][1] - 1;
- $print_colmin = PHPExcel_Cell::columnIndexFromString($printAreaRect[0][0]) - 1;
- $print_colmax = PHPExcel_Cell::columnIndexFromString($printAreaRect[1][0]) - 1;
-
- // construct formula data manually because parser does not recognize absolute 3d cell references
- $formulaData .= pack('Cvvvvv', 0x3B, $i, $print_rowmin, $print_rowmax, $print_colmin, $print_colmax);
-
- if ($j > 0) {
- $formulaData .= pack('C', 0x10); // list operator token ','
- }
- }
-
- // store the DEFINEDNAME record
- $chunk .= $this->writeData($this->_writeDefinedNameBiff8(pack('C', 0x06), $formulaData, $i + 1, true));
- }
- }
-
- // write autofilters, if any
- for ($i = 0; $i < $total_worksheets; ++$i) {
- $sheetAutoFilter = $this->_phpExcel->getSheet($i)->getAutoFilter();
- $autoFilterRange = $sheetAutoFilter->getRange();
- if(!empty($autoFilterRange)) {
- $rangeBounds = PHPExcel_Cell::rangeBoundaries($autoFilterRange);
-
- //Autofilter built in name
- $name = pack('C', 0x0D);
-
- $chunk .= $this->writeData($this->_writeShortNameBiff8($name, $i + 1, $rangeBounds, true));
- }
- }
-
- return $chunk;
- }
-
- /**
- * Write a DEFINEDNAME record for BIFF8 using explicit binary formula data
- *
- * @param string $name The name in UTF-8
- * @param string $formulaData The binary formula data
- * @param string $sheetIndex 1-based sheet index the defined name applies to. 0 = global
- * @param boolean $isBuiltIn Built-in name?
- * @return string Complete binary record data
- */
- private function _writeDefinedNameBiff8($name, $formulaData, $sheetIndex = 0, $isBuiltIn = false)
- {
- $record = 0x0018;
-
- // option flags
- $options = $isBuiltIn ? 0x20 : 0x00;
-
- // length of the name, character count
- $nlen = PHPExcel_Shared_String::CountCharacters($name);
-
- // name with stripped length field
- $name = substr(PHPExcel_Shared_String::UTF8toBIFF8UnicodeLong($name), 2);
-
- // size of the formula (in bytes)
- $sz = strlen($formulaData);
-
- // combine the parts
- $data = pack('vCCvvvCCCC', $options, 0, $nlen, $sz, 0, $sheetIndex, 0, 0, 0, 0)
- . $name . $formulaData;
- $length = strlen($data);
-
- $header = pack('vv', $record, $length);
-
- return $header . $data;
- }
-
- /**
- * Write a short NAME record
- *
- * @param string $name
- * @param string $sheetIndex 1-based sheet index the defined name applies to. 0 = global
- * @param int[][] $range rangeboundaries
- * @param bool $isHidden
- * @return string Complete binary record data
- * */
- private function _writeShortNameBiff8($name, $sheetIndex = 0, $rangeBounds, $isHidden = false){
- $record = 0x0018;
-
- // option flags
- $options = ($isHidden ? 0x21 : 0x00);
-
- $extra = pack('Cvvvvv',
- 0x3B,
- $sheetIndex - 1,
- $rangeBounds[0][1] - 1,
- $rangeBounds[1][1] - 1,
- $rangeBounds[0][0] - 1,
- $rangeBounds[1][0] - 1);
-
- // size of the formula (in bytes)
- $sz = strlen($extra);
-
- // combine the parts
- $data = pack('vCCvvvCCCCC', $options, 0, 1, $sz, 0, $sheetIndex, 0, 0, 0, 0, 0)
- . $name . $extra;
- $length = strlen($data);
-
- $header = pack('vv', $record, $length);
-
- return $header . $data;
- }
-
- /**
- * Stores the CODEPAGE biff record.
- */
- private function _writeCodepage()
- {
- $record = 0x0042; // Record identifier
- $length = 0x0002; // Number of bytes to follow
- $cv = $this->_codepage; // The code page
-
- $header = pack('vv', $record, $length);
- $data = pack('v', $cv);
-
- $this->_append($header . $data);
- }
-
- /**
- * Write Excel BIFF WINDOW1 record.
- */
- private function _writeWindow1()
- {
- $record = 0x003D; // Record identifier
- $length = 0x0012; // Number of bytes to follow
-
- $xWn = 0x0000; // Horizontal position of window
- $yWn = 0x0000; // Vertical position of window
- $dxWn = 0x25BC; // Width of window
- $dyWn = 0x1572; // Height of window
-
- $grbit = 0x0038; // Option flags
-
- // not supported by PHPExcel, so there is only one selected sheet, the active
- $ctabsel = 1; // Number of workbook tabs selected
-
- $wTabRatio = 0x0258; // Tab to scrollbar ratio
-
- // not supported by PHPExcel, set to 0
- $itabFirst = 0; // 1st displayed worksheet
- $itabCur = $this->_phpExcel->getActiveSheetIndex(); // Active worksheet
-
- $header = pack("vv", $record, $length);
- $data = pack("vvvvvvvvv", $xWn, $yWn, $dxWn, $dyWn,
- $grbit,
- $itabCur, $itabFirst,
- $ctabsel, $wTabRatio);
- $this->_append($header . $data);
- }
-
- /**
- * Writes Excel BIFF BOUNDSHEET record.
- *
- * @param PHPExcel_Worksheet $sheet Worksheet name
- * @param integer $offset Location of worksheet BOF
- */
- private function _writeBoundsheet($sheet, $offset)
- {
- $sheetname = $sheet->getTitle();
- $record = 0x0085; // Record identifier
-
- // sheet state
- switch ($sheet->getSheetState()) {
- case PHPExcel_Worksheet::SHEETSTATE_VISIBLE: $ss = 0x00; break;
- case PHPExcel_Worksheet::SHEETSTATE_HIDDEN: $ss = 0x01; break;
- case PHPExcel_Worksheet::SHEETSTATE_VERYHIDDEN: $ss = 0x02; break;
- default: $ss = 0x00; break;
- }
-
- // sheet type
- $st = 0x00;
-
- $grbit = 0x0000; // Visibility and sheet type
-
- $data = pack("VCC", $offset, $ss, $st);
- $data .= PHPExcel_Shared_String::UTF8toBIFF8UnicodeShort($sheetname);
-
- $length = strlen($data);
- $header = pack("vv", $record, $length);
- $this->_append($header . $data);
- }
-
- /**
- * Write Internal SUPBOOK record
- */
- private function _writeSupbookInternal()
- {
- $record = 0x01AE; // Record identifier
- $length = 0x0004; // Bytes to follow
-
- $header = pack("vv", $record, $length);
- $data = pack("vv", $this->_phpExcel->getSheetCount(), 0x0401);
- return $this->writeData($header . $data);
- }
-
- /**
- * Writes the Excel BIFF EXTERNSHEET record. These references are used by
- * formulas.
- *
- */
- private function _writeExternsheetBiff8()
- {
- $total_references = count($this->_parser->_references);
- $record = 0x0017; // Record identifier
- $length = 2 + 6 * $total_references; // Number of bytes to follow
-
- $supbook_index = 0; // FIXME: only using internal SUPBOOK record
- $header = pack("vv", $record, $length);
- $data = pack('v', $total_references);
- for ($i = 0; $i < $total_references; ++$i) {
- $data .= $this->_parser->_references[$i];
- }
- return $this->writeData($header . $data);
- }
-
- /**
- * Write Excel BIFF STYLE records.
- */
- private function _writeStyle()
- {
- $record = 0x0293; // Record identifier
- $length = 0x0004; // Bytes to follow
-
- $ixfe = 0x8000; // Index to cell style XF
- $BuiltIn = 0x00; // Built-in style
- $iLevel = 0xff; // Outline style level
-
- $header = pack("vv", $record, $length);
- $data = pack("vCC", $ixfe, $BuiltIn, $iLevel);
- $this->_append($header . $data);
- }
-
- /**
- * Writes Excel FORMAT record for non "built-in" numerical formats.
- *
- * @param string $format Custom format string
- * @param integer $ifmt Format index code
- */
- private function _writeNumFormat($format, $ifmt)
- {
- $record = 0x041E; // Record identifier
-
- $numberFormatString = PHPExcel_Shared_String::UTF8toBIFF8UnicodeLong($format);
- $length = 2 + strlen($numberFormatString); // Number of bytes to follow
-
-
- $header = pack("vv", $record, $length);
- $data = pack("v", $ifmt) . $numberFormatString;
- $this->_append($header . $data);
- }
-
- /**
- * Write DATEMODE record to indicate the date system in use (1904 or 1900).
- */
- private function _writeDatemode()
- {
- $record = 0x0022; // Record identifier
- $length = 0x0002; // Bytes to follow
-
- $f1904 = (PHPExcel_Shared_Date::getExcelCalendar() == PHPExcel_Shared_Date::CALENDAR_MAC_1904) ?
- 1 : 0; // Flag for 1904 date system
-
- $header = pack("vv", $record, $length);
- $data = pack("v", $f1904);
- $this->_append($header . $data);
- }
-
- /**
- * Write BIFF record EXTERNCOUNT to indicate the number of external sheet
- * references in the workbook.
- *
- * Excel only stores references to external sheets that are used in NAME.
- * The workbook NAME record is required to define the print area and the repeat
- * rows and columns.
- *
- * A similar method is used in Worksheet.php for a slightly different purpose.
- *
- * @param integer $cxals Number of external references
- */
- private function _writeExterncount($cxals)
- {
- $record = 0x0016; // Record identifier
- $length = 0x0002; // Number of bytes to follow
-
- $header = pack("vv", $record, $length);
- $data = pack("v", $cxals);
- $this->_append($header . $data);
- }
-
- /**
- * Writes the Excel BIFF EXTERNSHEET record. These references are used by
- * formulas. NAME record is required to define the print area and the repeat
- * rows and columns.
- *
- * A similar method is used in Worksheet.php for a slightly different purpose.
- *
- * @param string $sheetname Worksheet name
- */
- private function _writeExternsheet($sheetname)
- {
- $record = 0x0017; // Record identifier
- $length = 0x02 + strlen($sheetname); // Number of bytes to follow
-
- $cch = strlen($sheetname); // Length of sheet name
- $rgch = 0x03; // Filename encoding
-
- $header = pack("vv", $record, $length);
- $data = pack("CC", $cch, $rgch);
- $this->_append($header . $data . $sheetname);
- }
-
- /**
- * Store the NAME record in the short format that is used for storing the print
- * area, repeat rows only and repeat columns only.
- *
- * @param integer $index Sheet index
- * @param integer $type Built-in name type
- * @param integer $rowmin Start row
- * @param integer $rowmax End row
- * @param integer $colmin Start colum
- * @param integer $colmax End column
- */
- private function _writeNameShort($index, $type, $rowmin, $rowmax, $colmin, $colmax)
- {
- $record = 0x0018; // Record identifier
- $length = 0x0024; // Number of bytes to follow
-
- $grbit = 0x0020; // Option flags
- $chKey = 0x00; // Keyboard shortcut
- $cch = 0x01; // Length of text name
- $cce = 0x0015; // Length of text definition
- $ixals = $index + 1; // Sheet index
- $itab = $ixals; // Equal to ixals
- $cchCustMenu = 0x00; // Length of cust menu text
- $cchDescription = 0x00; // Length of description text
- $cchHelptopic = 0x00; // Length of help topic text
- $cchStatustext = 0x00; // Length of status bar text
- $rgch = $type; // Built-in name type
-
- $unknown03 = 0x3b;
- $unknown04 = 0xffff-$index;
- $unknown05 = 0x0000;
- $unknown06 = 0x0000;
- $unknown07 = 0x1087;
- $unknown08 = 0x8005;
-
- $header = pack("vv", $record, $length);
- $data = pack("v", $grbit);
- $data .= pack("C", $chKey);
- $data .= pack("C", $cch);
- $data .= pack("v", $cce);
- $data .= pack("v", $ixals);
- $data .= pack("v", $itab);
- $data .= pack("C", $cchCustMenu);
- $data .= pack("C", $cchDescription);
- $data .= pack("C", $cchHelptopic);
- $data .= pack("C", $cchStatustext);
- $data .= pack("C", $rgch);
- $data .= pack("C", $unknown03);
- $data .= pack("v", $unknown04);
- $data .= pack("v", $unknown05);
- $data .= pack("v", $unknown06);
- $data .= pack("v", $unknown07);
- $data .= pack("v", $unknown08);
- $data .= pack("v", $index);
- $data .= pack("v", $index);
- $data .= pack("v", $rowmin);
- $data .= pack("v", $rowmax);
- $data .= pack("C", $colmin);
- $data .= pack("C", $colmax);
- $this->_append($header . $data);
- }
-
- /**
- * Store the NAME record in the long format that is used for storing the repeat
- * rows and columns when both are specified. This shares a lot of code with
- * _writeNameShort() but we use a separate method to keep the code clean.
- * Code abstraction for reuse can be carried too far, and I should know. ;-)
- *
- * @param integer $index Sheet index
- * @param integer $type Built-in name type
- * @param integer $rowmin Start row
- * @param integer $rowmax End row
- * @param integer $colmin Start colum
- * @param integer $colmax End column
- */
- private function _writeNameLong($index, $type, $rowmin, $rowmax, $colmin, $colmax)
- {
- $record = 0x0018; // Record identifier
- $length = 0x003d; // Number of bytes to follow
- $grbit = 0x0020; // Option flags
- $chKey = 0x00; // Keyboard shortcut
- $cch = 0x01; // Length of text name
- $cce = 0x002e; // Length of text definition
- $ixals = $index + 1; // Sheet index
- $itab = $ixals; // Equal to ixals
- $cchCustMenu = 0x00; // Length of cust menu text
- $cchDescription = 0x00; // Length of description text
- $cchHelptopic = 0x00; // Length of help topic text
- $cchStatustext = 0x00; // Length of status bar text
- $rgch = $type; // Built-in name type
-
- $unknown01 = 0x29;
- $unknown02 = 0x002b;
- $unknown03 = 0x3b;
- $unknown04 = 0xffff-$index;
- $unknown05 = 0x0000;
- $unknown06 = 0x0000;
- $unknown07 = 0x1087;
- $unknown08 = 0x8008;
-
- $header = pack("vv", $record, $length);
- $data = pack("v", $grbit);
- $data .= pack("C", $chKey);
- $data .= pack("C", $cch);
- $data .= pack("v", $cce);
- $data .= pack("v", $ixals);
- $data .= pack("v", $itab);
- $data .= pack("C", $cchCustMenu);
- $data .= pack("C", $cchDescription);
- $data .= pack("C", $cchHelptopic);
- $data .= pack("C", $cchStatustext);
- $data .= pack("C", $rgch);
- $data .= pack("C", $unknown01);
- $data .= pack("v", $unknown02);
- // Column definition
- $data .= pack("C", $unknown03);
- $data .= pack("v", $unknown04);
- $data .= pack("v", $unknown05);
- $data .= pack("v", $unknown06);
- $data .= pack("v", $unknown07);
- $data .= pack("v", $unknown08);
- $data .= pack("v", $index);
- $data .= pack("v", $index);
- $data .= pack("v", 0x0000);
- $data .= pack("v", 0x3fff);
- $data .= pack("C", $colmin);
- $data .= pack("C", $colmax);
- // Row definition
- $data .= pack("C", $unknown03);
- $data .= pack("v", $unknown04);
- $data .= pack("v", $unknown05);
- $data .= pack("v", $unknown06);
- $data .= pack("v", $unknown07);
- $data .= pack("v", $unknown08);
- $data .= pack("v", $index);
- $data .= pack("v", $index);
- $data .= pack("v", $rowmin);
- $data .= pack("v", $rowmax);
- $data .= pack("C", 0x00);
- $data .= pack("C", 0xff);
- // End of data
- $data .= pack("C", 0x10);
- $this->_append($header . $data);
- }
-
- /**
- * Stores the COUNTRY record for localization
- *
- * @return string
- */
- private function _writeCountry()
- {
- $record = 0x008C; // Record identifier
- $length = 4; // Number of bytes to follow
-
- $header = pack('vv', $record, $length);
- /* using the same country code always for simplicity */
- $data = pack('vv', $this->_country_code, $this->_country_code);
- //$this->_append($header . $data);
- return $this->writeData($header . $data);
- }
-
- /**
- * Write the RECALCID record
- *
- * @return string
- */
- private function _writeRecalcId()
- {
- $record = 0x01C1; // Record identifier
- $length = 8; // Number of bytes to follow
-
- $header = pack('vv', $record, $length);
-
- // by inspection of real Excel files, MS Office Excel 2007 writes this
- $data = pack('VV', 0x000001C1, 0x00001E667);
-
- return $this->writeData($header . $data);
- }
-
- /**
- * Stores the PALETTE biff record.
- */
- private function _writePalette()
- {
- $aref = $this->_palette;
-
- $record = 0x0092; // Record identifier
- $length = 2 + 4 * count($aref); // Number of bytes to follow
- $ccv = count($aref); // Number of RGB values to follow
- $data = ''; // The RGB data
-
- // Pack the RGB data
- foreach ($aref as $color) {
- foreach ($color as $byte) {
- $data .= pack("C",$byte);
- }
- }
-
- $header = pack("vvv", $record, $length, $ccv);
- $this->_append($header . $data);
- }
-
- /**
- * Handling of the SST continue blocks is complicated by the need to include an
- * additional continuation byte depending on whether the string is split between
- * blocks or whether it starts at the beginning of the block. (There are also
- * additional complications that will arise later when/if Rich Strings are
- * supported).
- *
- * The Excel documentation says that the SST record should be followed by an
- * EXTSST record. The EXTSST record is a hash table that is used to optimise
- * access to SST. However, despite the documentation it doesn't seem to be
- * required so we will ignore it.
- *
- * @return string Binary data
- */
- private function _writeSharedStringsTable()
- {
- // maximum size of record data (excluding record header)
- $continue_limit = 8224;
-
- // initialize array of record data blocks
- $recordDatas = array();
-
- // start SST record data block with total number of strings, total number of unique strings
- $recordData = pack("VV", $this->_str_total, $this->_str_unique);
-
- // loop through all (unique) strings in shared strings table
- foreach (array_keys($this->_str_table) as $string) {
-
- // here $string is a BIFF8 encoded string
-
- // length = character count
- $headerinfo = unpack("vlength/Cencoding", $string);
-
- // currently, this is always 1 = uncompressed
- $encoding = $headerinfo["encoding"];
-
- // initialize finished writing current $string
- $finished = false;
-
- while ($finished === false) {
-
- // normally, there will be only one cycle, but if string cannot immediately be written as is
- // there will be need for more than one cylcle, if string longer than one record data block, there
- // may be need for even more cycles
-
- if (strlen($recordData) + strlen($string) <= $continue_limit) {
- // then we can write the string (or remainder of string) without any problems
- $recordData .= $string;
-
- if (strlen($recordData) + strlen($string) == $continue_limit) {
- // we close the record data block, and initialize a new one
- $recordDatas[] = $recordData;
- $recordData = '';
- }
-
- // we are finished writing this string
- $finished = true;
- } else {
- // special treatment writing the string (or remainder of the string)
- // If the string is very long it may need to be written in more than one CONTINUE record.
-
- // check how many bytes more there is room for in the current record
- $space_remaining = $continue_limit - strlen($recordData);
-
- // minimum space needed
- // uncompressed: 2 byte string length length field + 1 byte option flags + 2 byte character
- // compressed: 2 byte string length length field + 1 byte option flags + 1 byte character
- $min_space_needed = ($encoding == 1) ? 5 : 4;
-
- // We have two cases
- // 1. space remaining is less than minimum space needed
- // here we must waste the space remaining and move to next record data block
- // 2. space remaining is greater than or equal to minimum space needed
- // here we write as much as we can in the current block, then move to next record data block
-
- // 1. space remaining is less than minimum space needed
- if ($space_remaining < $min_space_needed) {
- // we close the block, store the block data
- $recordDatas[] = $recordData;
-
- // and start new record data block where we start writing the string
- $recordData = '';
-
- // 2. space remaining is greater than or equal to minimum space needed
- } else {
- // initialize effective remaining space, for Unicode strings this may need to be reduced by 1, see below
- $effective_space_remaining = $space_remaining;
-
- // for uncompressed strings, sometimes effective space remaining is reduced by 1
- if ( $encoding == 1 && (strlen($string) - $space_remaining) % 2 == 1 ) {
- --$effective_space_remaining;
- }
-
- // one block fininshed, store the block data
- $recordData .= substr($string, 0, $effective_space_remaining);
-
- $string = substr($string, $effective_space_remaining); // for next cycle in while loop
- $recordDatas[] = $recordData;
-
- // start new record data block with the repeated option flags
- $recordData = pack('C', $encoding);
- }
- }
- }
- }
-
- // Store the last record data block unless it is empty
- // if there was no need for any continue records, this will be the for SST record data block itself
- if (strlen($recordData) > 0) {
- $recordDatas[] = $recordData;
- }
-
- // combine into one chunk with all the blocks SST, CONTINUE,...
- $chunk = '';
- foreach ($recordDatas as $i => $recordData) {
- // first block should have the SST record header, remaing should have CONTINUE header
- $record = ($i == 0) ? 0x00FC : 0x003C;
-
- $header = pack("vv", $record, strlen($recordData));
- $data = $header . $recordData;
-
- $chunk .= $this->writeData($data);
- }
-
- return $chunk;
- }
-
- /**
- * Writes the MSODRAWINGGROUP record if needed. Possibly split using CONTINUE records.
- */
- private function _writeMsoDrawingGroup()
- {
- // write the Escher stream if necessary
- if (isset($this->_escher)) {
- $writer = new PHPExcel_Writer_Excel5_Escher($this->_escher);
- $data = $writer->close();
-
- $record = 0x00EB;
- $length = strlen($data);
- $header = pack("vv", $record, $length);
-
- return $this->writeData($header . $data);
-
- } else {
- return '';
- }
- }
-
- /**
- * Get Escher object
- *
- * @return PHPExcel_Shared_Escher
- */
- public function getEscher()
- {
- return $this->_escher;
- }
-
- /**
- * Set Escher object
- *
- * @param PHPExcel_Shared_Escher $pValue
- */
- public function setEscher(PHPExcel_Shared_Escher $pValue = null)
- {
- $this->_escher = $pValue;
- }
-
-}
diff --git a/admin/survey/excel/PHPExcel/Writer/Excel5/Worksheet.php b/admin/survey/excel/PHPExcel/Writer/Excel5/Worksheet.php
deleted file mode 100644
index 7f5053e..0000000
--- a/admin/survey/excel/PHPExcel/Writer/Excel5/Worksheet.php
+++ /dev/null
@@ -1,2954 +0,0 @@
-<?php
-/**
- * PHPExcel
- *
- * Copyright (c) 2006 - 2012 PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel_Writer_Excel5
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-// Original file header of PEAR::Spreadsheet_Excel_Writer_Worksheet (used as the base for this class):
-// -----------------------------------------------------------------------------------------
-// /*
-// * Module written/ported by Xavier Noguer <xnoguer@rezebra.com>
-// *
-// * The majority of this is _NOT_ my code. I simply ported it from the
-// * PERL Spreadsheet::WriteExcel module.
-// *
-// * The author of the Spreadsheet::WriteExcel module is John McNamara
-// * <jmcnamara@cpan.org>
-// *
-// * I _DO_ maintain this code, and John McNamara has nothing to do with the
-// * porting of this code to PHP. Any questions directly related to this
-// * class library should be directed to me.
-// *
-// * License Information:
-// *
-// * Spreadsheet_Excel_Writer: A library for generating Excel Spreadsheets
-// * Copyright (c) 2002-2003 Xavier Noguer xnoguer@rezebra.com
-// *
-// * This library is free software; you can redistribute it and/or
-// * modify it under the terms of the GNU Lesser General Public
-// * License as published by the Free Software Foundation; either
-// * version 2.1 of the License, or (at your option) any later version.
-// *
-// * This library is distributed in the hope that it will be useful,
-// * but WITHOUT ANY WARRANTY; without even the implied warranty of
-// * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// * Lesser General Public License for more details.
-// *
-// * You should have received a copy of the GNU Lesser General Public
-// * License along with this library; if not, write to the Free Software
-// * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-// */
-
-
-/**
- * PHPExcel_Writer_Excel5_Worksheet
- *
- * @category PHPExcel
- * @package PHPExcel_Writer_Excel5
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- */
-class PHPExcel_Writer_Excel5_Worksheet extends PHPExcel_Writer_Excel5_BIFFwriter
-{
- /**
- * Formula parser
- *
- * @var PHPExcel_Writer_Excel5_Parser
- */
- private $_parser;
-
- /**
- * Maximum number of characters for a string (LABEL record in BIFF5)
- * @var integer
- */
- public $_xls_strmax;
-
- /**
- * Array containing format information for columns
- * @var array
- */
- public $_colinfo;
-
- /**
- * Array containing the selected area for the worksheet
- * @var array
- */
- public $_selection;
-
- /**
- * The active pane for the worksheet
- * @var integer
- */
- public $_active_pane;
-
- /**
- * Whether to use outline.
- * @var integer
- */
- public $_outline_on;
-
- /**
- * Auto outline styles.
- * @var bool
- */
- public $_outline_style;
-
- /**
- * Whether to have outline summary below.
- * @var bool
- */
- public $_outline_below;
-
- /**
- * Whether to have outline summary at the right.
- * @var bool
- */
- public $_outline_right;
-
- /**
- * Reference to the total number of strings in the workbook
- * @var integer
- */
- public $_str_total;
-
- /**
- * Reference to the number of unique strings in the workbook
- * @var integer
- */
- public $_str_unique;
-
- /**
- * Reference to the array containing all the unique strings in the workbook
- * @var array
- */
- public $_str_table;
-
- /**
- * Color cache
- */
- private $_colors;
-
- /**
- * Index of first used row (at least 0)
- * @var int
- */
- private $_firstRowIndex;
-
- /**
- * Index of last used row. (no used rows means -1)
- * @var int
- */
- private $_lastRowIndex;
-
- /**
- * Index of first used column (at least 0)
- * @var int
- */
- private $_firstColumnIndex;
-
- /**
- * Index of last used column (no used columns means -1)
- * @var int
- */
- private $_lastColumnIndex;
-
- /**
- * Sheet object
- * @var PHPExcel_Worksheet
- */
- public $_phpSheet;
-
- /**
- * Count cell style Xfs
- *
- * @var int
- */
- private $_countCellStyleXfs;
-
- /**
- * Escher object corresponding to MSODRAWING
- *
- * @var PHPExcel_Shared_Escher
- */
- private $_escher;
-
- /**
- * Array of font hashes associated to FONT records index
- *
- * @var array
- */
- public $_fntHashIndex;
-
- /**
- * Constructor
- *
- * @param int &$str_total Total number of strings
- * @param int &$str_unique Total number of unique strings
- * @param array &$str_table String Table
- * @param array &$colors Colour Table
- * @param mixed $parser The formula parser created for the Workbook
- * @param boolean $preCalculateFormulas Flag indicating whether formulas should be calculated or just written
- * @param string $phpSheet The worksheet to write
- * @param PHPExcel_Worksheet $phpSheet
- */
- public function __construct(&$str_total, &$str_unique, &$str_table, &$colors,
- $parser, $preCalculateFormulas, $phpSheet)
- {
- // It needs to call its parent's constructor explicitly
- parent::__construct();
-
- // change BIFFwriter limit for CONTINUE records
-// $this->_limit = 8224;
-
-
- $this->_preCalculateFormulas = $preCalculateFormulas;
- $this->_str_total = &$str_total;
- $this->_str_unique = &$str_unique;
- $this->_str_table = &$str_table;
- $this->_colors = &$colors;
- $this->_parser = $parser;
-
- $this->_phpSheet = $phpSheet;
-
- //$this->ext_sheets = array();
- //$this->offset = 0;
- $this->_xls_strmax = 255;
- $this->_colinfo = array();
- $this->_selection = array(0,0,0,0);
- $this->_active_pane = 3;
-
- $this->_print_headers = 0;
-
- $this->_outline_style = 0;
- $this->_outline_below = 1;
- $this->_outline_right = 1;
- $this->_outline_on = 1;
-
- $this->_fntHashIndex = array();
-
- // calculate values for DIMENSIONS record
- $minR = 1;
- $minC = 'A';
-
- $maxR = $this->_phpSheet->getHighestRow();
- $maxC = $this->_phpSheet->getHighestColumn();
-
- // Determine lowest and highest column and row
-// $this->_firstRowIndex = ($minR > 65535) ? 65535 : $minR;
- $this->_lastRowIndex = ($maxR > 65535) ? 65535 : $maxR ;
-
- $this->_firstColumnIndex = PHPExcel_Cell::columnIndexFromString($minC);
- $this->_lastColumnIndex = PHPExcel_Cell::columnIndexFromString($maxC);
-
-// if ($this->_firstColumnIndex > 255) $this->_firstColumnIndex = 255;
- if ($this->_lastColumnIndex > 255) $this->_lastColumnIndex = 255;
-
- $this->_countCellStyleXfs = count($phpSheet->getParent()->getCellStyleXfCollection());
- }
-
- /**
- * Add data to the beginning of the workbook (note the reverse order)
- * and to the end of the workbook.
- *
- * @access public
- * @see PHPExcel_Writer_Excel5_Workbook::storeWorkbook()
- */
- function close()
- {
- $_phpSheet = $this->_phpSheet;
-
- $num_sheets = $_phpSheet->getParent()->getSheetCount();
-
- // Write BOF record
- $this->_storeBof(0x0010);
-
- // Write PRINTHEADERS
- $this->_writePrintHeaders();
-
- // Write PRINTGRIDLINES
- $this->_writePrintGridlines();
-
- // Write GRIDSET
- $this->_writeGridset();
-
- // Calculate column widths
- $_phpSheet->calculateColumnWidths();
-
- // Column dimensions
- if (($defaultWidth = $_phpSheet->getDefaultColumnDimension()->getWidth()) < 0) {
- $defaultWidth = PHPExcel_Shared_Font::getDefaultColumnWidthByFont($_phpSheet->getParent()->getDefaultStyle()->getFont());
- }
-
- $columnDimensions = $_phpSheet->getColumnDimensions();
- $maxCol = $this->_lastColumnIndex -1;
- for ($i = 0; $i <= $maxCol; ++$i) {
- $hidden = 0;
- $level = 0;
- $xfIndex = 15; // there are 15 cell style Xfs
-
- $width = $defaultWidth;
-
- $columnLetter = PHPExcel_Cell::stringFromColumnIndex($i);
- if (isset($columnDimensions[$columnLetter])) {
- $columnDimension = $columnDimensions[$columnLetter];
- if ($columnDimension->getWidth() >= 0) {
- $width = $columnDimension->getWidth();
- }
- $hidden = $columnDimension->getVisible() ? 0 : 1;
- $level = $columnDimension->getOutlineLevel();
- $xfIndex = $columnDimension->getXfIndex() + 15; // there are 15 cell style Xfs
- }
-
- // Components of _colinfo:
- // $firstcol first column on the range
- // $lastcol last column on the range
- // $width width to set
- // $xfIndex The optional cell style Xf index to apply to the columns
- // $hidden The optional hidden atribute
- // $level The optional outline level
- $this->_colinfo[] = array($i, $i, $width, $xfIndex, $hidden, $level);
- }
-
- // Write GUTS
- $this->_writeGuts();
-
- // Write DEFAULTROWHEIGHT
- $this->_writeDefaultRowHeight();
-
- // Write WSBOOL
- $this->_writeWsbool();
-
- // Write horizontal and vertical page breaks
- $this->_writeBreaks();
-
- // Write page header
- $this->_writeHeader();
-
- // Write page footer
- $this->_writeFooter();
-
- // Write page horizontal centering
- $this->_writeHcenter();
-
- // Write page vertical centering
- $this->_writeVcenter();
-
- // Write left margin
- $this->_writeMarginLeft();
-
- // Write right margin
- $this->_writeMarginRight();
-
- // Write top margin
- $this->_writeMarginTop();
-
- // Write bottom margin
- $this->_writeMarginBottom();
-
- // Write page setup
- $this->_writeSetup();
-
- // Write sheet protection
- $this->_writeProtect();
-
- // Write SCENPROTECT
- $this->_writeScenProtect();
-
- // Write OBJECTPROTECT
- $this->_writeObjectProtect();
-
- // Write sheet password
- $this->_writePassword();
-
- // Write DEFCOLWIDTH record
- $this->_writeDefcol();
-
- // Write the COLINFO records if they exist
- if (!empty($this->_colinfo)) {
- $colcount = count($this->_colinfo);
- for ($i = 0; $i < $colcount; ++$i) {
- $this->_writeColinfo($this->_colinfo[$i]);
- }
- }
- $autoFilterRange = $_phpSheet->getAutoFilter()->getRange();
- if (!empty($autoFilterRange)) {
- // Write AUTOFILTERINFO
- $this->_writeAutoFilterInfo();
- }
-
- // Write sheet dimensions
- $this->_writeDimensions();
-
- // Row dimensions
- foreach ($_phpSheet->getRowDimensions() as $rowDimension) {
- $xfIndex = $rowDimension->getXfIndex() + 15; // there are 15 cellXfs
- $this->_writeRow( $rowDimension->getRowIndex() - 1, $rowDimension->getRowHeight(), $xfIndex, ($rowDimension->getVisible() ? '0' : '1'), $rowDimension->getOutlineLevel() );
- }
-
- // Write Cells
- foreach ($_phpSheet->getCellCollection() as $cellID) {
- $cell = $_phpSheet->getCell($cellID);
- $row = $cell->getRow() - 1;
- $column = PHPExcel_Cell::columnIndexFromString($cell->getColumn()) - 1;
-
- // Don't break Excel!
-// if ($row + 1 > 65536 or $column + 1 > 256) {
- if ($row > 65535 || $column > 255) {
- break;
- }
-
- // Write cell value
- $xfIndex = $cell->getXfIndex() + 15; // there are 15 cell style Xfs
-
- $cVal = $cell->getValue();
- if ($cVal instanceof PHPExcel_RichText) {
- // $this->_writeString($row, $column, $cVal->getPlainText(), $xfIndex);
- $arrcRun = array();
- $str_len = strlen($cVal->getPlainText());
- $str_pos = 0;
- $elements = $cVal->getRichTextElements();
- foreach ($elements as $element) {
- // FONT Index
- if ($element instanceof PHPExcel_RichText_Run) {
- $str_fontidx = $this->_fntHashIndex[$element->getFont()->getHashCode()];
- }
- else {
- $str_fontidx = 0;
- }
- $arrcRun[] = array('strlen' => $str_pos, 'fontidx' => $str_fontidx);
- // Position FROM
- $str_pos += strlen($element->getText());
- }
- $this->_writeRichTextString($row, $column, $cVal->getPlainText(), $xfIndex, $arrcRun);
- } else {
- switch ($cell->getDatatype()) {
- case PHPExcel_Cell_DataType::TYPE_STRING:
- case PHPExcel_Cell_DataType::TYPE_NULL:
- if ($cVal === '' || $cVal === null) {
- $this->_writeBlank($row, $column, $xfIndex);
- } else {
- $this->_writeString($row, $column, $cVal, $xfIndex);
- }
- break;
-
- case PHPExcel_Cell_DataType::TYPE_NUMERIC:
- $this->_writeNumber($row, $column, $cVal, $xfIndex);
- break;
-
- case PHPExcel_Cell_DataType::TYPE_FORMULA:
- $calculatedValue = $this->_preCalculateFormulas ?
- $cell->getCalculatedValue() : null;
- $this->_writeFormula($row, $column, $cVal, $xfIndex, $calculatedValue);
- break;
-
- case PHPExcel_Cell_DataType::TYPE_BOOL:
- $this->_writeBoolErr($row, $column, $cVal, 0, $xfIndex);
- break;
-
- case PHPExcel_Cell_DataType::TYPE_ERROR:
- $this->_writeBoolErr($row, $column, self::_mapErrorCode($cVal), 1, $xfIndex);
- break;
-
- }
- }
- }
-
- // Append
- $this->_writeMsoDrawing();
-
- $this->_writeWindow2();
- $this->_writeZoom();
- if ($_phpSheet->getFreezePane()) {
- $this->_writePanes();
- }
- $this->_writeSelection();
- $this->_writeMergedCells();
-
- // Hyperlinks
- foreach ($_phpSheet->getHyperLinkCollection() as $coordinate => $hyperlink) {
- list($column, $row) = PHPExcel_Cell::coordinateFromString($coordinate);
-
- $url = $hyperlink->getUrl();
-
- if ( strpos($url, 'sheet://') !== false ) {
- // internal to current workbook
- $url = str_replace('sheet://', 'internal:', $url);
-
- } else if ( preg_match('/^(http:|https:|ftp:|mailto:)/', $url) ) {
- // URL
- // $url = $url;
-
- } else {
- // external (local file)
- $url = 'external:' . $url;
- }
-
- $this->_writeUrl($row - 1, PHPExcel_Cell::columnIndexFromString($column) - 1, $url);
- }
-
- $this->_writeDataValidity();
- $this->_writeSheetLayout();
- $this->_writeSheetProtection();
- $this->_writeRangeProtection();
-
- $this->_storeEof();
- }
-
- /**
- * Write a cell range address in BIFF8
- * always fixed range
- * See section 2.5.14 in OpenOffice.org's Documentation of the Microsoft Excel File Format
- *
- * @param string $range E.g. 'A1' or 'A1:B6'
- * @return string Binary data
- */
- private function _writeBIFF8CellRangeAddressFixed($range = 'A1')
- {
- $explodes = explode(':', $range);
-
- // extract first cell, e.g. 'A1'
- $firstCell = $explodes[0];
-
- // extract last cell, e.g. 'B6'
- if (count($explodes) == 1) {
- $lastCell = $firstCell;
- } else {
- $lastCell = $explodes[1];
- }
-
- $firstCellCoordinates = PHPExcel_Cell::coordinateFromString($firstCell); // e.g. array(0, 1)
- $lastCellCoordinates = PHPExcel_Cell::coordinateFromString($lastCell); // e.g. array(1, 6)
-
- return(pack('vvvv',
- $firstCellCoordinates[1] - 1,
- $lastCellCoordinates[1] - 1,
- PHPExcel_Cell::columnIndexFromString($firstCellCoordinates[0]) - 1,
- PHPExcel_Cell::columnIndexFromString($lastCellCoordinates[0]) - 1
- ));
- }
-
- /**
- * Retrieves data from memory in one chunk, or from disk in $buffer
- * sized chunks.
- *
- * @return string The data
- */
- function getData()
- {
- $buffer = 4096;
-
- // Return data stored in memory
- if (isset($this->_data)) {
- $tmp = $this->_data;
- unset($this->_data);
- return $tmp;
- }
- // No data to return
- return false;
- }
-
- /**
- * Set the option to print the row and column headers on the printed page.
- *
- * @access public
- * @param integer $print Whether to print the headers or not. Defaults to 1 (print).
- */
- function printRowColHeaders($print = 1)
- {
- $this->_print_headers = $print;
- }
-
- /**
- * This method sets the properties for outlining and grouping. The defaults
- * correspond to Excel's defaults.
- *
- * @param bool $visible
- * @param bool $symbols_below
- * @param bool $symbols_right
- * @param bool $auto_style
- */
- function setOutline($visible = true, $symbols_below = true, $symbols_right = true, $auto_style = false)
- {
- $this->_outline_on = $visible;
- $this->_outline_below = $symbols_below;
- $this->_outline_right = $symbols_right;
- $this->_outline_style = $auto_style;
-
- // Ensure this is a boolean vale for Window2
- if ($this->_outline_on) {
- $this->_outline_on = 1;
- }
- }
-
- /**
- * Write a double to the specified row and column (zero indexed).
- * An integer can be written as a double. Excel will display an
- * integer. $format is optional.
- *
- * Returns 0 : normal termination
- * -2 : row or column out of range
- *
- * @param integer $row Zero indexed row
- * @param integer $col Zero indexed column
- * @param float $num The number to write
- * @param mixed $xfIndex The optional XF format
- * @return integer
- */
- private function _writeNumber($row, $col, $num, $xfIndex)
- {
- $record = 0x0203; // Record identifier
- $length = 0x000E; // Number of bytes to follow
-
- $header = pack("vv", $record, $length);
- $data = pack("vvv", $row, $col, $xfIndex);
- $xl_double = pack("d", $num);
- if (self::getByteOrder()) { // if it's Big Endian
- $xl_double = strrev($xl_double);
- }
-
- $this->_append($header.$data.$xl_double);
- return(0);
- }
-
- /**
- * Write a LABELSST record or a LABEL record. Which one depends on BIFF version
- *
- * @param int $row Row index (0-based)
- * @param int $col Column index (0-based)
- * @param string $str The string
- * @param int $xfIndex Index to XF record
- */
- private function _writeString($row, $col, $str, $xfIndex)
- {
- $this->_writeLabelSst($row, $col, $str, $xfIndex);
- }
- /**
- * Write a LABELSST record or a LABEL record. Which one depends on BIFF version
- * It differs from _writeString by the writing of rich text strings.
- * @param int $row Row index (0-based)
- * @param int $col Column index (0-based)
- * @param string $str The string
- * @param mixed $xfIndex The XF format index for the cell
- * @param array $arrcRun Index to Font record and characters beginning
- */
- private function _writeRichTextString($row, $col, $str, $xfIndex, $arrcRun){
- $record = 0x00FD; // Record identifier
- $length = 0x000A; // Bytes to follow
-
- $str = PHPExcel_Shared_String::UTF8toBIFF8UnicodeShort($str, $arrcRun);
-
- /* check if string is already present */
- if (!isset($this->_str_table[$str])) {
- $this->_str_table[$str] = $this->_str_unique++;
- }
- $this->_str_total++;
-
- $header = pack('vv', $record, $length);
- $data = pack('vvvV', $row, $col, $xfIndex, $this->_str_table[$str]);
- $this->_append($header.$data);
- }
-
- /**
- * Write a string to the specified row and column (zero indexed).
- * NOTE: there is an Excel 5 defined limit of 255 characters.
- * $format is optional.
- * Returns 0 : normal termination
- * -2 : row or column out of range
- * -3 : long string truncated to 255 chars
- *
- * @access public
- * @param integer $row Zero indexed row
- * @param integer $col Zero indexed column
- * @param string $str The string to write
- * @param mixed $xfIndex The XF format index for the cell
- * @return integer
- */
- private function _writeLabel($row, $col, $str, $xfIndex)
- {
- $strlen = strlen($str);
- $record = 0x0204; // Record identifier
- $length = 0x0008 + $strlen; // Bytes to follow
-
- $str_error = 0;
-
- if ($strlen > $this->_xls_strmax) { // LABEL must be < 255 chars
- $str = substr($str, 0, $this->_xls_strmax);
- $length = 0x0008 + $this->_xls_strmax;
- $strlen = $this->_xls_strmax;
- $str_error = -3;
- }
-
- $header = pack("vv", $record, $length);
- $data = pack("vvvv", $row, $col, $xfIndex, $strlen);
- $this->_append($header . $data . $str);
- return($str_error);
- }
-
- /**
- * Write a string to the specified row and column (zero indexed).
- * This is the BIFF8 version (no 255 chars limit).
- * $format is optional.
- * Returns 0 : normal termination
- * -2 : row or column out of range
- * -3 : long string truncated to 255 chars
- *
- * @access public
- * @param integer $row Zero indexed row
- * @param integer $col Zero indexed column
- * @param string $str The string to write
- * @param mixed $xfIndex The XF format index for the cell
- * @return integer
- */
- private function _writeLabelSst($row, $col, $str, $xfIndex)
- {
- $record = 0x00FD; // Record identifier
- $length = 0x000A; // Bytes to follow
-
- $str = PHPExcel_Shared_String::UTF8toBIFF8UnicodeLong($str);
-
- /* check if string is already present */
- if (!isset($this->_str_table[$str])) {
- $this->_str_table[$str] = $this->_str_unique++;
- }
- $this->_str_total++;
-
- $header = pack('vv', $record, $length);
- $data = pack('vvvV', $row, $col, $xfIndex, $this->_str_table[$str]);
- $this->_append($header.$data);
- }
-
- /**
- * Writes a note associated with the cell given by the row and column.
- * NOTE records don't have a length limit.
- *
- * @param integer $row Zero indexed row
- * @param integer $col Zero indexed column
- * @param string $note The note to write
- */
- private function _writeNote($row, $col, $note)
- {
- $note_length = strlen($note);
- $record = 0x001C; // Record identifier
- $max_length = 2048; // Maximun length for a NOTE record
-
- // Length for this record is no more than 2048 + 6
- $length = 0x0006 + min($note_length, 2048);
- $header = pack("vv", $record, $length);
- $data = pack("vvv", $row, $col, $note_length);
- $this->_append($header . $data . substr($note, 0, 2048));
-
- for ($i = $max_length; $i < $note_length; $i += $max_length) {
- $chunk = substr($note, $i, $max_length);
- $length = 0x0006 + strlen($chunk);
- $header = pack("vv", $record, $length);
- $data = pack("vvv", -1, 0, strlen($chunk));
- $this->_append($header.$data.$chunk);
- }
- return(0);
- }
-
- /**
- * Write a blank cell to the specified row and column (zero indexed).
- * A blank cell is used to specify formatting without adding a string
- * or a number.
- *
- * A blank cell without a format serves no purpose. Therefore, we don't write
- * a BLANK record unless a format is specified.
- *
- * Returns 0 : normal termination (including no format)
- * -1 : insufficient number of arguments
- * -2 : row or column out of range
- *
- * @param integer $row Zero indexed row
- * @param integer $col Zero indexed column
- * @param mixed $xfIndex The XF format index
- */
- function _writeBlank($row, $col, $xfIndex)
- {
- $record = 0x0201; // Record identifier
- $length = 0x0006; // Number of bytes to follow
-
- $header = pack("vv", $record, $length);
- $data = pack("vvv", $row, $col, $xfIndex);
- $this->_append($header . $data);
- return 0;
- }
-
- /**
- * Write a boolean or an error type to the specified row and column (zero indexed)
- *
- * @param int $row Row index (0-based)
- * @param int $col Column index (0-based)
- * @param int $value
- * @param boolean $isError Error or Boolean?
- * @param int $xfIndex
- */
- private function _writeBoolErr($row, $col, $value, $isError, $xfIndex)
- {
- $record = 0x0205;
- $length = 8;
-
- $header = pack("vv", $record, $length);
- $data = pack("vvvCC", $row, $col, $xfIndex, $value, $isError);
- $this->_append($header . $data);
- return 0;
- }
-
- /**
- * Write a formula to the specified row and column (zero indexed).
- * The textual representation of the formula is passed to the parser in
- * Parser.php which returns a packed binary string.
- *
- * Returns 0 : normal termination
- * -1 : formula errors (bad formula)
- * -2 : row or column out of range
- *
- * @param integer $row Zero indexed row
- * @param integer $col Zero indexed column
- * @param string $formula The formula text string
- * @param mixed $xfIndex The XF format index
- * @param mixed $calculatedValue Calculated value
- * @return integer
- */
- private function _writeFormula($row, $col, $formula, $xfIndex, $calculatedValue)
- {
- $record = 0x0006; // Record identifier
-
- // Initialize possible additional value for STRING record that should be written after the FORMULA record?
- $stringValue = null;
-
- // calculated value
- if (isset($calculatedValue)) {
- // Since we can't yet get the data type of the calculated value,
- // we use best effort to determine data type
- if (is_bool($calculatedValue)) {
- // Boolean value
- $num = pack('CCCvCv', 0x01, 0x00, (int)$calculatedValue, 0x00, 0x00, 0xFFFF);
- } elseif (is_int($calculatedValue) || is_float($calculatedValue)) {
- // Numeric value
- $num = pack('d', $calculatedValue);
- } elseif (is_string($calculatedValue)) {
- if (array_key_exists($calculatedValue, PHPExcel_Cell_DataType::getErrorCodes())) {
- // Error value
- $num = pack('CCCvCv', 0x02, 0x00, self::_mapErrorCode($calculatedValue), 0x00, 0x00, 0xFFFF);
- } elseif ($calculatedValue === '') {
- // Empty string (and BIFF8)
- $num = pack('CCCvCv', 0x03, 0x00, 0x00, 0x00, 0x00, 0xFFFF);
- } else {
- // Non-empty string value (or empty string BIFF5)
- $stringValue = $calculatedValue;
- $num = pack('CCCvCv', 0x00, 0x00, 0x00, 0x00, 0x00, 0xFFFF);
- }
- } else {
- // We are really not supposed to reach here
- $num = pack('d', 0x00);
- }
- } else {
- $num = pack('d', 0x00);
- }
-
- $grbit = 0x03; // Option flags
- $unknown = 0x0000; // Must be zero
-
- // Strip the '=' or '@' sign at the beginning of the formula string
- if ($formula{0} == '=') {
- $formula = substr($formula,1);
- } else {
- // Error handling
- $this->_writeString($row, $col, 'Unrecognised character for formula');
- return -1;
- }
-
- // Parse the formula using the parser in Parser.php
- try {
- $error = $this->_parser->parse($formula);
- $formula = $this->_parser->toReversePolish();
-
- $formlen = strlen($formula); // Length of the binary string
- $length = 0x16 + $formlen; // Length of the record data
-
- $header = pack("vv", $record, $length);
-
- $data = pack("vvv", $row, $col, $xfIndex)
- . $num
- . pack("vVv", $grbit, $unknown, $formlen);
- $this->_append($header . $data . $formula);
-
- // Append also a STRING record if necessary
- if ($stringValue !== null) {
- $this->_writeStringRecord($stringValue);
- }
-
- return 0;
-
- } catch (Exception $e) {
- // do nothing
- }
-
- }
-
- /**
- * Write a STRING record. This
- *
- * @param string $stringValue
- */
- private function _writeStringRecord($stringValue)
- {
- $record = 0x0207; // Record identifier
- $data = PHPExcel_Shared_String::UTF8toBIFF8UnicodeLong($stringValue);
-
- $length = strlen($data);
- $header = pack('vv', $record, $length);
-
- $this->_append($header . $data);
- }
-
- /**
- * Write a hyperlink.
- * This is comprised of two elements: the visible label and
- * the invisible link. The visible label is the same as the link unless an
- * alternative string is specified. The label is written using the
- * _writeString() method. Therefore the 255 characters string limit applies.
- * $string and $format are optional.
- *
- * The hyperlink can be to a http, ftp, mail, internal sheet (not yet), or external
- * directory url.
- *
- * Returns 0 : normal termination
- * -2 : row or column out of range
- * -3 : long string truncated to 255 chars
- *
- * @param integer $row Row
- * @param integer $col Column
- * @param string $url URL string
- * @return integer
- */
- private function _writeUrl($row, $col, $url)
- {
- // Add start row and col to arg list
- return($this->_writeUrlRange($row, $col, $row, $col, $url));
- }
-
- /**
- * This is the more general form of _writeUrl(). It allows a hyperlink to be
- * written to a range of cells. This function also decides the type of hyperlink
- * to be written. These are either, Web (http, ftp, mailto), Internal
- * (Sheet1!A1) or external ('c:\temp\foo.xls#Sheet1!A1').
- *
- * @access private
- * @see _writeUrl()
- * @param integer $row1 Start row
- * @param integer $col1 Start column
- * @param integer $row2 End row
- * @param integer $col2 End column
- * @param string $url URL string
- * @return integer
- */
- function _writeUrlRange($row1, $col1, $row2, $col2, $url)
- {
- // Check for internal/external sheet links or default to web link
- if (preg_match('[^internal:]', $url)) {
- return($this->_writeUrlInternal($row1, $col1, $row2, $col2, $url));
- }
- if (preg_match('[^external:]', $url)) {
- return($this->_writeUrlExternal($row1, $col1, $row2, $col2, $url));
- }
- return($this->_writeUrlWeb($row1, $col1, $row2, $col2, $url));
- }
-
- /**
- * Used to write http, ftp and mailto hyperlinks.
- * The link type ($options) is 0x03 is the same as absolute dir ref without
- * sheet. However it is differentiated by the $unknown2 data stream.
- *
- * @access private
- * @see _writeUrl()
- * @param integer $row1 Start row
- * @param integer $col1 Start column
- * @param integer $row2 End row
- * @param integer $col2 End column
- * @param string $url URL string
- * @return integer
- */
- function _writeUrlWeb($row1, $col1, $row2, $col2, $url)
- {
- $record = 0x01B8; // Record identifier
- $length = 0x00000; // Bytes to follow
-
- // Pack the undocumented parts of the hyperlink stream
- $unknown1 = pack("H*", "D0C9EA79F9BACE118C8200AA004BA90B02000000");
- $unknown2 = pack("H*", "E0C9EA79F9BACE118C8200AA004BA90B");
-
- // Pack the option flags
- $options = pack("V", 0x03);
-
- // Convert URL to a null terminated wchar string
- $url = join("\0", preg_split("''", $url, -1, PREG_SPLIT_NO_EMPTY));
- $url = $url . "\0\0\0";
-
- // Pack the length of the URL
- $url_len = pack("V", strlen($url));
-
- // Calculate the data length
- $length = 0x34 + strlen($url);
-
- // Pack the header data
- $header = pack("vv", $record, $length);
- $data = pack("vvvv", $row1, $row2, $col1, $col2);
-
- // Write the packed data
- $this->_append($header . $data .
- $unknown1 . $options .
- $unknown2 . $url_len . $url);
- return 0;
- }
-
- /**
- * Used to write internal reference hyperlinks such as "Sheet1!A1".
- *
- * @access private
- * @see _writeUrl()
- * @param integer $row1 Start row
- * @param integer $col1 Start column
- * @param integer $row2 End row
- * @param integer $col2 End column
- * @param string $url URL string
- * @return integer
- */
- function _writeUrlInternal($row1, $col1, $row2, $col2, $url)
- {
- $record = 0x01B8; // Record identifier
- $length = 0x00000; // Bytes to follow
-
- // Strip URL type
- $url = preg_replace('/^internal:/', '', $url);
-
- // Pack the undocumented parts of the hyperlink stream
- $unknown1 = pack("H*", "D0C9EA79F9BACE118C8200AA004BA90B02000000");
-
- // Pack the option flags
- $options = pack("V", 0x08);
-
- // Convert the URL type and to a null terminated wchar string
- $url .= "\0";
-
- // character count
- $url_len = PHPExcel_Shared_String::CountCharacters($url);
- $url_len = pack('V', $url_len);
-
- $url = PHPExcel_Shared_String::ConvertEncoding($url, 'UTF-16LE', 'UTF-8');
-
- // Calculate the data length
- $length = 0x24 + strlen($url);
-
- // Pack the header data
- $header = pack("vv", $record, $length);
- $data = pack("vvvv", $row1, $row2, $col1, $col2);
-
- // Write the packed data
- $this->_append($header . $data .
- $unknown1 . $options .
- $url_len . $url);
- return 0;
- }
-
- /**
- * Write links to external directory names such as 'c:\foo.xls',
- * c:\foo.xls#Sheet1!A1', '../../foo.xls'. and '../../foo.xls#Sheet1!A1'.
- *
- * Note: Excel writes some relative links with the $dir_long string. We ignore
- * these cases for the sake of simpler code.
- *
- * @access private
- * @see _writeUrl()
- * @param integer $row1 Start row
- * @param integer $col1 Start column
- * @param integer $row2 End row
- * @param integer $col2 End column
- * @param string $url URL string
- * @return integer
- */
- function _writeUrlExternal($row1, $col1, $row2, $col2, $url)
- {
- // Network drives are different. We will handle them separately
- // MS/Novell network drives and shares start with \\
- if (preg_match('[^external:\\\\]', $url)) {
- return; //($this->_writeUrlExternal_net($row1, $col1, $row2, $col2, $url, $str, $format));
- }
-
- $record = 0x01B8; // Record identifier
- $length = 0x00000; // Bytes to follow
-
- // Strip URL type and change Unix dir separator to Dos style (if needed)
- //
- $url = preg_replace('/^external:/', '', $url);
- $url = preg_replace('/\//', "\\", $url);
-
- // Determine if the link is relative or absolute:
- // relative if link contains no dir separator, "somefile.xls"
- // relative if link starts with up-dir, "..\..\somefile.xls"
- // otherwise, absolute
-
- $absolute = 0x00; // relative path
- if ( preg_match('/^[A-Z]:/', $url) ) {
- $absolute = 0x02; // absolute path on Windows, e.g. C:\...
- }
- $link_type = 0x01 | $absolute;
-
- // Determine if the link contains a sheet reference and change some of the
- // parameters accordingly.
- // Split the dir name and sheet name (if it exists)
- $dir_long = $url;
- if (preg_match("/\#/", $url)) {
- $link_type |= 0x08;
- }
-
-
- // Pack the link type
- $link_type = pack("V", $link_type);
-
- // Calculate the up-level dir count e.g.. (..\..\..\ == 3)
- $up_count = preg_match_all("/\.\.\\\/", $dir_long, $useless);
- $up_count = pack("v", $up_count);
-
- // Store the short dos dir name (null terminated)
- $dir_short = preg_replace("/\.\.\\\/", '', $dir_long) . "\0";
-
- // Store the long dir name as a wchar string (non-null terminated)
- $dir_long = $dir_long . "\0";
-
- // Pack the lengths of the dir strings
- $dir_short_len = pack("V", strlen($dir_short) );
- $dir_long_len = pack("V", strlen($dir_long) );
- $stream_len = pack("V", 0);//strlen($dir_long) + 0x06);
-
- // Pack the undocumented parts of the hyperlink stream
- $unknown1 = pack("H*",'D0C9EA79F9BACE118C8200AA004BA90B02000000' );
- $unknown2 = pack("H*",'0303000000000000C000000000000046' );
- $unknown3 = pack("H*",'FFFFADDE000000000000000000000000000000000000000');
- $unknown4 = pack("v", 0x03 );
-
- // Pack the main data stream
- $data = pack("vvvv", $row1, $row2, $col1, $col2) .
- $unknown1 .
- $link_type .
- $unknown2 .
- $up_count .
- $dir_short_len.
- $dir_short .
- $unknown3 .
- $stream_len ;/*.
- $dir_long_len .
- $unknown4 .
- $dir_long .
- $sheet_len .
- $sheet ;*/
-
- // Pack the header data
- $length = strlen($data);
- $header = pack("vv", $record, $length);
-
- // Write the packed data
- $this->_append($header. $data);
- return 0;
- }
-
- /**
- * This method is used to set the height and format for a row.
- *
- * @param integer $row The row to set
- * @param integer $height Height we are giving to the row.
- * Use null to set XF without setting height
- * @param integer $xfIndex The optional cell style Xf index to apply to the columns
- * @param bool $hidden The optional hidden attribute
- * @param integer $level The optional outline level for row, in range [0,7]
- */
- private function _writeRow($row, $height, $xfIndex, $hidden = false, $level = 0)
- {
- $record = 0x0208; // Record identifier
- $length = 0x0010; // Number of bytes to follow
-
- $colMic = 0x0000; // First defined column
- $colMac = 0x0000; // Last defined column
- $irwMac = 0x0000; // Used by Excel to optimise loading
- $reserved = 0x0000; // Reserved
- $grbit = 0x0000; // Option flags
- $ixfe = $xfIndex;
-
- if ( $height < 0 ){
- $height = null;
- }
-
- // Use _writeRow($row, null, $XF) to set XF format without setting height
- if ($height != null) {
- $miyRw = $height * 20; // row height
- } else {
- $miyRw = 0xff; // default row height is 256
- }
-
- // Set the options flags. fUnsynced is used to show that the font and row
- // heights are not compatible. This is usually the case for WriteExcel.
- // The collapsed flag 0x10 doesn't seem to be used to indicate that a row
- // is collapsed. Instead it is used to indicate that the previous row is
- // collapsed. The zero height flag, 0x20, is used to collapse a row.
-
- $grbit |= $level;
- if ($hidden) {
- $grbit |= 0x0020;
- }
- if ($height !== null) {
- $grbit |= 0x0040; // fUnsynced
- }
- if ($xfIndex !== 0xF) {
- $grbit |= 0x0080;
- }
- $grbit |= 0x0100;
-
- $header = pack("vv", $record, $length);
- $data = pack("vvvvvvvv", $row, $colMic, $colMac, $miyRw,
- $irwMac,$reserved, $grbit, $ixfe);
- $this->_append($header.$data);
- }
-
- /**
- * Writes Excel DIMENSIONS to define the area in which there is data.
- */
- private function _writeDimensions()
- {
- $record = 0x0200; // Record identifier
-
- $length = 0x000E;
- $data = pack('VVvvv'
- , $this->_firstRowIndex
- , $this->_lastRowIndex + 1
- , $this->_firstColumnIndex
- , $this->_lastColumnIndex + 1
- , 0x0000 // reserved
- );
-
- $header = pack("vv", $record, $length);
- $this->_append($header.$data);
- }
-
- /**
- * Write BIFF record Window2.
- */
- private function _writeWindow2()
- {
- $record = 0x023E; // Record identifier
- $length = 0x0012;
-
- $grbit = 0x00B6; // Option flags
- $rwTop = 0x0000; // Top row visible in window
- $colLeft = 0x0000; // Leftmost column visible in window
-
-
- // The options flags that comprise $grbit
- $fDspFmla = 0; // 0 - bit
- $fDspGrid = $this->_phpSheet->getShowGridlines() ? 1 : 0; // 1
- $fDspRwCol = $this->_phpSheet->getShowRowColHeaders() ? 1 : 0; // 2
- $fFrozen = $this->_phpSheet->getFreezePane() ? 1 : 0; // 3
- $fDspZeros = 1; // 4
- $fDefaultHdr = 1; // 5
- $fArabic = $this->_phpSheet->getRightToLeft() ? 1 : 0; // 6
- $fDspGuts = $this->_outline_on; // 7
- $fFrozenNoSplit = 0; // 0 - bit
- // no support in PHPExcel for selected sheet, therefore sheet is only selected if it is the active sheet
- $fSelected = ($this->_phpSheet === $this->_phpSheet->getParent()->getActiveSheet()) ? 1 : 0;
- $fPaged = 1; // 2
-
- $grbit = $fDspFmla;
- $grbit |= $fDspGrid << 1;
- $grbit |= $fDspRwCol << 2;
- $grbit |= $fFrozen << 3;
- $grbit |= $fDspZeros << 4;
- $grbit |= $fDefaultHdr << 5;
- $grbit |= $fArabic << 6;
- $grbit |= $fDspGuts << 7;
- $grbit |= $fFrozenNoSplit << 8;
- $grbit |= $fSelected << 9;
- $grbit |= $fPaged << 10;
-
- $header = pack("vv", $record, $length);
- $data = pack("vvv", $grbit, $rwTop, $colLeft);
-
- // FIXME !!!
- $rgbHdr = 0x0040; // Row/column heading and gridline color index
- $zoom_factor_page_break = 0x0000;
- $zoom_factor_normal = 0x0000;
- $data .= pack("vvvvV", $rgbHdr, 0x0000, $zoom_factor_page_break, $zoom_factor_normal, 0x00000000);
-
- $this->_append($header.$data);
- }
-
- /**
- * Write BIFF record DEFAULTROWHEIGHT.
- */
- private function _writeDefaultRowHeight()
- {
- $defaultRowHeight = $this->_phpSheet->getDefaultRowDimension()->getRowHeight();
-
- if ($defaultRowHeight < 0) {
- return;
- }
-
- // convert to twips
- $defaultRowHeight = (int) 20 * $defaultRowHeight;
-
- $record = 0x0225; // Record identifier
- $length = 0x0004; // Number of bytes to follow
-
- $header = pack("vv", $record, $length);
- $data = pack("vv", 1, $defaultRowHeight);
- $this->_append($header . $data);
- }
-
- /**
- * Write BIFF record DEFCOLWIDTH if COLINFO records are in use.
- */
- private function _writeDefcol()
- {
- $defaultColWidth = 8;
-
- $record = 0x0055; // Record identifier
- $length = 0x0002; // Number of bytes to follow
-
- $header = pack("vv", $record, $length);
- $data = pack("v", $defaultColWidth);
- $this->_append($header . $data);
- }
-
- /**
- * Write BIFF record COLINFO to define column widths
- *
- * Note: The SDK says the record length is 0x0B but Excel writes a 0x0C
- * length record.
- *
- * @param array $col_array This is the only parameter received and is composed of the following:
- * 0 => First formatted column,
- * 1 => Last formatted column,
- * 2 => Col width (8.43 is Excel default),
- * 3 => The optional XF format of the column,
- * 4 => Option flags.
- * 5 => Optional outline level
- */
- private function _writeColinfo($col_array)
- {
- if (isset($col_array[0])) {
- $colFirst = $col_array[0];
- }
- if (isset($col_array[1])) {
- $colLast = $col_array[1];
- }
- if (isset($col_array[2])) {
- $coldx = $col_array[2];
- } else {
- $coldx = 8.43;
- }
- if (isset($col_array[3])) {
- $xfIndex = $col_array[3];
- } else {
- $xfIndex = 15;
- }
- if (isset($col_array[4])) {
- $grbit = $col_array[4];
- } else {
- $grbit = 0;
- }
- if (isset($col_array[5])) {
- $level = $col_array[5];
- } else {
- $level = 0;
- }
- $record = 0x007D; // Record identifier
- $length = 0x000C; // Number of bytes to follow
-
- $coldx *= 256; // Convert to units of 1/256 of a char
-
- $ixfe = $xfIndex;
- $reserved = 0x0000; // Reserved
-
- $level = max(0, min($level, 7));
- $grbit |= $level << 8;
-
- $header = pack("vv", $record, $length);
- $data = pack("vvvvvv", $colFirst, $colLast, $coldx,
- $ixfe, $grbit, $reserved);
- $this->_append($header.$data);
- }
-
- /**
- * Write BIFF record SELECTION.
- */
- private function _writeSelection()
- {
- // look up the selected cell range
- $selectedCells = $this->_phpSheet->getSelectedCells();
- $selectedCells = PHPExcel_Cell::splitRange($this->_phpSheet->getSelectedCells());
- $selectedCells = $selectedCells[0];
- if (count($selectedCells) == 2) {
- list($first, $last) = $selectedCells;
- } else {
- $first = $selectedCells[0];
- $last = $selectedCells[0];
- }
-
- list($colFirst, $rwFirst) = PHPExcel_Cell::coordinateFromString($first);
- $colFirst = PHPExcel_Cell::columnIndexFromString($colFirst) - 1; // base 0 column index
- --$rwFirst; // base 0 row index
-
- list($colLast, $rwLast) = PHPExcel_Cell::coordinateFromString($last);
- $colLast = PHPExcel_Cell::columnIndexFromString($colLast) - 1; // base 0 column index
- --$rwLast; // base 0 row index
-
- // make sure we are not out of bounds
- $colFirst = min($colFirst, 255);
- $colLast = min($colLast, 255);
-
- $rwFirst = min($rwFirst, 65535);
- $rwLast = min($rwLast, 65535);
-
- $record = 0x001D; // Record identifier
- $length = 0x000F; // Number of bytes to follow
-
- $pnn = $this->_active_pane; // Pane position
- $rwAct = $rwFirst; // Active row
- $colAct = $colFirst; // Active column
- $irefAct = 0; // Active cell ref
- $cref = 1; // Number of refs
-
- if (!isset($rwLast)) {
- $rwLast = $rwFirst; // Last row in reference
- }
- if (!isset($colLast)) {
- $colLast = $colFirst; // Last col in reference
- }
-
- // Swap last row/col for first row/col as necessary
- if ($rwFirst > $rwLast) {
- list($rwFirst, $rwLast) = array($rwLast, $rwFirst);
- }
-
- if ($colFirst > $colLast) {
- list($colFirst, $colLast) = array($colLast, $colFirst);
- }
-
- $header = pack("vv", $record, $length);
- $data = pack("CvvvvvvCC", $pnn, $rwAct, $colAct,
- $irefAct, $cref,
- $rwFirst, $rwLast,
- $colFirst, $colLast);
- $this->_append($header . $data);
- }
-
- /**
- * Store the MERGEDCELLS records for all ranges of merged cells
- */
- private function _writeMergedCells()
- {
- $mergeCells = $this->_phpSheet->getMergeCells();
- $countMergeCells = count($mergeCells);
-
- if ($countMergeCells == 0) {
- return;
- }
-
- // maximum allowed number of merged cells per record
- $maxCountMergeCellsPerRecord = 1027;
-
- // record identifier
- $record = 0x00E5;
-
- // counter for total number of merged cells treated so far by the writer
- $i = 0;
-
- // counter for number of merged cells written in record currently being written
- $j = 0;
-
- // initialize record data
- $recordData = '';
-
- // loop through the merged cells
- foreach ($mergeCells as $mergeCell) {
- ++$i;
- ++$j;
-
- // extract the row and column indexes
- $range = PHPExcel_Cell::splitRange($mergeCell);
- list($first, $last) = $range[0];
- list($firstColumn, $firstRow) = PHPExcel_Cell::coordinateFromString($first);
- list($lastColumn, $lastRow) = PHPExcel_Cell::coordinateFromString($last);
-
- $recordData .= pack('vvvv', $firstRow - 1, $lastRow - 1, PHPExcel_Cell::columnIndexFromString($firstColumn) - 1, PHPExcel_Cell::columnIndexFromString($lastColumn) - 1);
-
- // flush record if we have reached limit for number of merged cells, or reached final merged cell
- if ($j == $maxCountMergeCellsPerRecord or $i == $countMergeCells) {
- $recordData = pack('v', $j) . $recordData;
- $length = strlen($recordData);
- $header = pack('vv', $record, $length);
- $this->_append($header . $recordData);
-
- // initialize for next record, if any
- $recordData = '';
- $j = 0;
- }
- }
- }
-
- /**
- * Write SHEETLAYOUT record
- */
- private function _writeSheetLayout()
- {
- if (!$this->_phpSheet->isTabColorSet()) {
- return;
- }
-
- $recordData = pack(
- 'vvVVVvv'
- , 0x0862
- , 0x0000 // unused
- , 0x00000000 // unused
- , 0x00000000 // unused
- , 0x00000014 // size of record data
- , $this->_colors[$this->_phpSheet->getTabColor()->getRGB()] // color index
- , 0x0000 // unused
- );
-
- $length = strlen($recordData);
-
- $record = 0x0862; // Record identifier
- $header = pack('vv', $record, $length);
- $this->_append($header . $recordData);
- }
-
- /**
- * Write SHEETPROTECTION
- */
- private function _writeSheetProtection()
- {
- // record identifier
- $record = 0x0867;
-
- // prepare options
- $options = (int) !$this->_phpSheet->getProtection()->getObjects()
- | (int) !$this->_phpSheet->getProtection()->getScenarios() << 1
- | (int) !$this->_phpSheet->getProtection()->getFormatCells() << 2
- | (int) !$this->_phpSheet->getProtection()->getFormatColumns() << 3
- | (int) !$this->_phpSheet->getProtection()->getFormatRows() << 4
- | (int) !$this->_phpSheet->getProtection()->getInsertColumns() << 5
- | (int) !$this->_phpSheet->getProtection()->getInsertRows() << 6
- | (int) !$this->_phpSheet->getProtection()->getInsertHyperlinks() << 7
- | (int) !$this->_phpSheet->getProtection()->getDeleteColumns() << 8
- | (int) !$this->_phpSheet->getProtection()->getDeleteRows() << 9
- | (int) !$this->_phpSheet->getProtection()->getSelectLockedCells() << 10
- | (int) !$this->_phpSheet->getProtection()->getSort() << 11
- | (int) !$this->_phpSheet->getProtection()->getAutoFilter() << 12
- | (int) !$this->_phpSheet->getProtection()->getPivotTables() << 13
- | (int) !$this->_phpSheet->getProtection()->getSelectUnlockedCells() << 14 ;
-
- // record data
- $recordData = pack(
- 'vVVCVVvv'
- , 0x0867 // repeated record identifier
- , 0x0000 // not used
- , 0x0000 // not used
- , 0x00 // not used
- , 0x01000200 // unknown data
- , 0xFFFFFFFF // unknown data
- , $options // options
- , 0x0000 // not used
- );
-
- $length = strlen($recordData);
- $header = pack('vv', $record, $length);
-
- $this->_append($header . $recordData);
- }
-
- /**
- * Write BIFF record RANGEPROTECTION
- *
- * Openoffice.org's Documentaion of the Microsoft Excel File Format uses term RANGEPROTECTION for these records
- * Microsoft Office Excel 97-2007 Binary File Format Specification uses term FEAT for these records
- */
- private function _writeRangeProtection()
- {
- foreach ($this->_phpSheet->getProtectedCells() as $range => $password) {
- // number of ranges, e.g. 'A1:B3 C20:D25'
- $cellRanges = explode(' ', $range);
- $cref = count($cellRanges);
-
- $recordData = pack(
- 'vvVVvCVvVv',
- 0x0868,
- 0x00,
- 0x0000,
- 0x0000,
- 0x02,
- 0x0,
- 0x0000,
- $cref,
- 0x0000,
- 0x00
- );
-
- foreach ($cellRanges as $cellRange) {
- $recordData .= $this->_writeBIFF8CellRangeAddressFixed($cellRange);
- }
-
- // the rgbFeat structure
- $recordData .= pack(
- 'VV',
- 0x0000,
- hexdec($password)
- );
-
- $recordData .= PHPExcel_Shared_String::UTF8toBIFF8UnicodeLong('p' . md5($recordData));
-
- $length = strlen($recordData);
-
- $record = 0x0868; // Record identifier
- $header = pack("vv", $record, $length);
- $this->_append($header . $recordData);
- }
- }
-
- /**
- * Write BIFF record EXTERNCOUNT to indicate the number of external sheet
- * references in a worksheet.
- *
- * Excel only stores references to external sheets that are used in formulas.
- * For simplicity we store references to all the sheets in the workbook
- * regardless of whether they are used or not. This reduces the overall
- * complexity and eliminates the need for a two way dialogue between the formula
- * parser the worksheet objects.
- *
- * @param integer $count The number of external sheet references in this worksheet
- */
- private function _writeExterncount($count)
- {
- $record = 0x0016; // Record identifier
- $length = 0x0002; // Number of bytes to follow
-
- $header = pack("vv", $record, $length);
- $data = pack("v", $count);
- $this->_append($header . $data);
- }
-
- /**
- * Writes the Excel BIFF EXTERNSHEET record. These references are used by
- * formulas. A formula references a sheet name via an index. Since we store a
- * reference to all of the external worksheets the EXTERNSHEET index is the same
- * as the worksheet index.
- *
- * @param string $sheetname The name of a external worksheet
- */
- private function _writeExternsheet($sheetname)
- {
- $record = 0x0017; // Record identifier
-
- // References to the current sheet are encoded differently to references to
- // external sheets.
- //
- if ($this->_phpSheet->getTitle() == $sheetname) {
- $sheetname = '';
- $length = 0x02; // The following 2 bytes
- $cch = 1; // The following byte
- $rgch = 0x02; // Self reference
- } else {
- $length = 0x02 + strlen($sheetname);
- $cch = strlen($sheetname);
- $rgch = 0x03; // Reference to a sheet in the current workbook
- }
-
- $header = pack("vv", $record, $length);
- $data = pack("CC", $cch, $rgch);
- $this->_append($header . $data . $sheetname);
- }
-
- /**
- * Writes the Excel BIFF PANE record.
- * The panes can either be frozen or thawed (unfrozen).
- * Frozen panes are specified in terms of an integer number of rows and columns.
- * Thawed panes are specified in terms of Excel's units for rows and columns.
- */
- private function _writePanes()
- {
- $panes = array();
- if ($freezePane = $this->_phpSheet->getFreezePane()) {
- list($column, $row) = PHPExcel_Cell::coordinateFromString($freezePane);
- $panes[0] = $row - 1;
- $panes[1] = PHPExcel_Cell::columnIndexFromString($column) - 1;
- } else {
- // thaw panes
- return;
- }
-
- $y = isset($panes[0]) ? $panes[0] : null;
- $x = isset($panes[1]) ? $panes[1] : null;
- $rwTop = isset($panes[2]) ? $panes[2] : null;
- $colLeft = isset($panes[3]) ? $panes[3] : null;
- if (count($panes) > 4) { // if Active pane was received
- $pnnAct = $panes[4];
- } else {
- $pnnAct = null;
- }
- $record = 0x0041; // Record identifier
- $length = 0x000A; // Number of bytes to follow
-
- // Code specific to frozen or thawed panes.
- if ($this->_phpSheet->getFreezePane()) {
- // Set default values for $rwTop and $colLeft
- if (!isset($rwTop)) {
- $rwTop = $y;
- }
- if (!isset($colLeft)) {
- $colLeft = $x;
- }
- } else {
- // Set default values for $rwTop and $colLeft
- if (!isset($rwTop)) {
- $rwTop = 0;
- }
- if (!isset($colLeft)) {
- $colLeft = 0;
- }
-
- // Convert Excel's row and column units to the internal units.
- // The default row height is 12.75
- // The default column width is 8.43
- // The following slope and intersection values were interpolated.
- //
- $y = 20*$y + 255;
- $x = 113.879*$x + 390;
- }
-
-
- // Determine which pane should be active. There is also the undocumented
- // option to override this should it be necessary: may be removed later.
- //
- if (!isset($pnnAct)) {
- if ($x != 0 && $y != 0) {
- $pnnAct = 0; // Bottom right
- }
- if ($x != 0 && $y == 0) {
- $pnnAct = 1; // Top right
- }
- if ($x == 0 && $y != 0) {
- $pnnAct = 2; // Bottom left
- }
- if ($x == 0 && $y == 0) {
- $pnnAct = 3; // Top left
- }
- }
-
- $this->_active_pane = $pnnAct; // Used in _writeSelection
-
- $header = pack("vv", $record, $length);
- $data = pack("vvvvv", $x, $y, $rwTop, $colLeft, $pnnAct);
- $this->_append($header . $data);
- }
-
- /**
- * Store the page setup SETUP BIFF record.
- */
- private function _writeSetup()
- {
- $record = 0x00A1; // Record identifier
- $length = 0x0022; // Number of bytes to follow
-
- $iPaperSize = $this->_phpSheet->getPageSetup()->getPaperSize(); // Paper size
-
- $iScale = $this->_phpSheet->getPageSetup()->getScale() ?
- $this->_phpSheet->getPageSetup()->getScale() : 100; // Print scaling factor
-
- $iPageStart = 0x01; // Starting page number
- $iFitWidth = (int) $this->_phpSheet->getPageSetup()->getFitToWidth(); // Fit to number of pages wide
- $iFitHeight = (int) $this->_phpSheet->getPageSetup()->getFitToHeight(); // Fit to number of pages high
- $grbit = 0x00; // Option flags
- $iRes = 0x0258; // Print resolution
- $iVRes = 0x0258; // Vertical print resolution
-
- $numHdr = $this->_phpSheet->getPageMargins()->getHeader(); // Header Margin
-
- $numFtr = $this->_phpSheet->getPageMargins()->getFooter(); // Footer Margin
- $iCopies = 0x01; // Number of copies
-
- $fLeftToRight = 0x0; // Print over then down
-
- // Page orientation
- $fLandscape = ($this->_phpSheet->getPageSetup()->getOrientation() == PHPExcel_Worksheet_PageSetup::ORIENTATION_LANDSCAPE) ?
- 0x0 : 0x1;
-
- $fNoPls = 0x0; // Setup not read from printer
- $fNoColor = 0x0; // Print black and white
- $fDraft = 0x0; // Print draft quality
- $fNotes = 0x0; // Print notes
- $fNoOrient = 0x0; // Orientation not set
- $fUsePage = 0x0; // Use custom starting page
-
- $grbit = $fLeftToRight;
- $grbit |= $fLandscape << 1;
- $grbit |= $fNoPls << 2;
- $grbit |= $fNoColor << 3;
- $grbit |= $fDraft << 4;
- $grbit |= $fNotes << 5;
- $grbit |= $fNoOrient << 6;
- $grbit |= $fUsePage << 7;
-
- $numHdr = pack("d", $numHdr);
- $numFtr = pack("d", $numFtr);
- if (self::getByteOrder()) { // if it's Big Endian
- $numHdr = strrev($numHdr);
- $numFtr = strrev($numFtr);
- }
-
- $header = pack("vv", $record, $length);
- $data1 = pack("vvvvvvvv", $iPaperSize,
- $iScale,
- $iPageStart,
- $iFitWidth,
- $iFitHeight,
- $grbit,
- $iRes,
- $iVRes);
- $data2 = $numHdr.$numFtr;
- $data3 = pack("v", $iCopies);
- $this->_append($header . $data1 . $data2 . $data3);
- }
-
- /**
- * Store the header caption BIFF record.
- */
- private function _writeHeader()
- {
- $record = 0x0014; // Record identifier
-
- /* removing for now
- // need to fix character count (multibyte!)
- if (strlen($this->_phpSheet->getHeaderFooter()->getOddHeader()) <= 255) {
- $str = $this->_phpSheet->getHeaderFooter()->getOddHeader(); // header string
- } else {
- $str = '';
- }
- */
-
- $recordData = PHPExcel_Shared_String::UTF8toBIFF8UnicodeLong($this->_phpSheet->getHeaderFooter()->getOddHeader());
- $length = strlen($recordData);
-
- $header = pack("vv", $record, $length);
-
- $this->_append($header . $recordData);
- }
-
- /**
- * Store the footer caption BIFF record.
- */
- private function _writeFooter()
- {
- $record = 0x0015; // Record identifier
-
- /* removing for now
- // need to fix character count (multibyte!)
- if (strlen($this->_phpSheet->getHeaderFooter()->getOddFooter()) <= 255) {
- $str = $this->_phpSheet->getHeaderFooter()->getOddFooter();
- } else {
- $str = '';
- }
- */
-
- $recordData = PHPExcel_Shared_String::UTF8toBIFF8UnicodeLong($this->_phpSheet->getHeaderFooter()->getOddFooter());
- $length = strlen($recordData);
-
- $header = pack("vv", $record, $length);
-
- $this->_append($header . $recordData);
- }
-
- /**
- * Store the horizontal centering HCENTER BIFF record.
- *
- * @access private
- */
- private function _writeHcenter()
- {
- $record = 0x0083; // Record identifier
- $length = 0x0002; // Bytes to follow
-
- $fHCenter = $this->_phpSheet->getPageSetup()->getHorizontalCentered() ? 1 : 0; // Horizontal centering
-
- $header = pack("vv", $record, $length);
- $data = pack("v", $fHCenter);
-
- $this->_append($header.$data);
- }
-
- /**
- * Store the vertical centering VCENTER BIFF record.
- */
- private function _writeVcenter()
- {
- $record = 0x0084; // Record identifier
- $length = 0x0002; // Bytes to follow
-
- $fVCenter = $this->_phpSheet->getPageSetup()->getVerticalCentered() ? 1 : 0; // Horizontal centering
-
- $header = pack("vv", $record, $length);
- $data = pack("v", $fVCenter);
- $this->_append($header . $data);
- }
-
- /**
- * Store the LEFTMARGIN BIFF record.
- */
- private function _writeMarginLeft()
- {
- $record = 0x0026; // Record identifier
- $length = 0x0008; // Bytes to follow
-
- $margin = $this->_phpSheet->getPageMargins()->getLeft(); // Margin in inches
-
- $header = pack("vv", $record, $length);
- $data = pack("d", $margin);
- if (self::getByteOrder()) { // if it's Big Endian
- $data = strrev($data);
- }
-
- $this->_append($header . $data);
- }
-
- /**
- * Store the RIGHTMARGIN BIFF record.
- */
- private function _writeMarginRight()
- {
- $record = 0x0027; // Record identifier
- $length = 0x0008; // Bytes to follow
-
- $margin = $this->_phpSheet->getPageMargins()->getRight(); // Margin in inches
-
- $header = pack("vv", $record, $length);
- $data = pack("d", $margin);
- if (self::getByteOrder()) { // if it's Big Endian
- $data = strrev($data);
- }
-
- $this->_append($header . $data);
- }
-
- /**
- * Store the TOPMARGIN BIFF record.
- */
- private function _writeMarginTop()
- {
- $record = 0x0028; // Record identifier
- $length = 0x0008; // Bytes to follow
-
- $margin = $this->_phpSheet->getPageMargins()->getTop(); // Margin in inches
-
- $header = pack("vv", $record, $length);
- $data = pack("d", $margin);
- if (self::getByteOrder()) { // if it's Big Endian
- $data = strrev($data);
- }
-
- $this->_append($header . $data);
- }
-
- /**
- * Store the BOTTOMMARGIN BIFF record.
- */
- private function _writeMarginBottom()
- {
- $record = 0x0029; // Record identifier
- $length = 0x0008; // Bytes to follow
-
- $margin = $this->_phpSheet->getPageMargins()->getBottom(); // Margin in inches
-
- $header = pack("vv", $record, $length);
- $data = pack("d", $margin);
- if (self::getByteOrder()) { // if it's Big Endian
- $data = strrev($data);
- }
-
- $this->_append($header . $data);
- }
-
- /**
- * Write the PRINTHEADERS BIFF record.
- */
- private function _writePrintHeaders()
- {
- $record = 0x002a; // Record identifier
- $length = 0x0002; // Bytes to follow
-
- $fPrintRwCol = $this->_print_headers; // Boolean flag
-
- $header = pack("vv", $record, $length);
- $data = pack("v", $fPrintRwCol);
- $this->_append($header . $data);
- }
-
- /**
- * Write the PRINTGRIDLINES BIFF record. Must be used in conjunction with the
- * GRIDSET record.
- */
- private function _writePrintGridlines()
- {
- $record = 0x002b; // Record identifier
- $length = 0x0002; // Bytes to follow
-
- $fPrintGrid = $this->_phpSheet->getPrintGridlines() ? 1 : 0; // Boolean flag
-
- $header = pack("vv", $record, $length);
- $data = pack("v", $fPrintGrid);
- $this->_append($header . $data);
- }
-
- /**
- * Write the GRIDSET BIFF record. Must be used in conjunction with the
- * PRINTGRIDLINES record.
- */
- private function _writeGridset()
- {
- $record = 0x0082; // Record identifier
- $length = 0x0002; // Bytes to follow
-
- $fGridSet = !$this->_phpSheet->getPrintGridlines(); // Boolean flag
-
- $header = pack("vv", $record, $length);
- $data = pack("v", $fGridSet);
- $this->_append($header . $data);
- }
-
- /**
- * Write the AUTOFILTERINFO BIFF record. This is used to configure the number of autofilter select used in the sheet.
- */
- private function _writeAutoFilterInfo(){
- $record = 0x009D; // Record identifier
- $length = 0x0002; // Bytes to follow
-
- $rangeBounds = PHPExcel_Cell::rangeBoundaries($this->_phpSheet->getAutoFilter()->getRange());
- $iNumFilters = 1 + $rangeBounds[1][0] - $rangeBounds[0][0];
-
- $header = pack("vv", $record, $length);
- $data = pack("v", $iNumFilters);
- $this->_append($header . $data);
- }
-
- /**
- * Write the GUTS BIFF record. This is used to configure the gutter margins
- * where Excel outline symbols are displayed. The visibility of the gutters is
- * controlled by a flag in WSBOOL.
- *
- * @see _writeWsbool()
- */
- private function _writeGuts()
- {
- $record = 0x0080; // Record identifier
- $length = 0x0008; // Bytes to follow
-
- $dxRwGut = 0x0000; // Size of row gutter
- $dxColGut = 0x0000; // Size of col gutter
-
- // determine maximum row outline level
- $maxRowOutlineLevel = 0;
- foreach ($this->_phpSheet->getRowDimensions() as $rowDimension) {
- $maxRowOutlineLevel = max($maxRowOutlineLevel, $rowDimension->getOutlineLevel());
- }
-
- $col_level = 0;
-
- // Calculate the maximum column outline level. The equivalent calculation
- // for the row outline level is carried out in _writeRow().
- $colcount = count($this->_colinfo);
- for ($i = 0; $i < $colcount; ++$i) {
- $col_level = max($this->_colinfo[$i][5], $col_level);
- }
-
- // Set the limits for the outline levels (0 <= x <= 7).
- $col_level = max(0, min($col_level, 7));
-
- // The displayed level is one greater than the max outline levels
- if ($maxRowOutlineLevel) {
- ++$maxRowOutlineLevel;
- }
- if ($col_level) {
- ++$col_level;
- }
-
- $header = pack("vv", $record, $length);
- $data = pack("vvvv", $dxRwGut, $dxColGut, $maxRowOutlineLevel, $col_level);
-
- $this->_append($header.$data);
- }
-
- /**
- * Write the WSBOOL BIFF record, mainly for fit-to-page. Used in conjunction
- * with the SETUP record.
- */
- private function _writeWsbool()
- {
- $record = 0x0081; // Record identifier
- $length = 0x0002; // Bytes to follow
- $grbit = 0x0000;
-
- // The only option that is of interest is the flag for fit to page. So we
- // set all the options in one go.
- //
- // Set the option flags
- $grbit |= 0x0001; // Auto page breaks visible
- if ($this->_outline_style) {
- $grbit |= 0x0020; // Auto outline styles
- }
- if ($this->_phpSheet->getShowSummaryBelow()) {
- $grbit |= 0x0040; // Outline summary below
- }
- if ($this->_phpSheet->getShowSummaryRight()) {
- $grbit |= 0x0080; // Outline summary right
- }
- if ($this->_phpSheet->getPageSetup()->getFitToPage()) {
- $grbit |= 0x0100; // Page setup fit to page
- }
- if ($this->_outline_on) {
- $grbit |= 0x0400; // Outline symbols displayed
- }
-
- $header = pack("vv", $record, $length);
- $data = pack("v", $grbit);
- $this->_append($header . $data);
- }
-
- /**
- * Write the HORIZONTALPAGEBREAKS and VERTICALPAGEBREAKS BIFF records.
- */
- private function _writeBreaks()
- {
- // initialize
- $vbreaks = array();
- $hbreaks = array();
-
- foreach ($this->_phpSheet->getBreaks() as $cell => $breakType) {
- // Fetch coordinates
- $coordinates = PHPExcel_Cell::coordinateFromString($cell);
-
- // Decide what to do by the type of break
- switch ($breakType) {
- case PHPExcel_Worksheet::BREAK_COLUMN:
- // Add to list of vertical breaks
- $vbreaks[] = PHPExcel_Cell::columnIndexFromString($coordinates[0]) - 1;
- break;
-
- case PHPExcel_Worksheet::BREAK_ROW:
- // Add to list of horizontal breaks
- $hbreaks[] = $coordinates[1];
- break;
-
- case PHPExcel_Worksheet::BREAK_NONE:
- default:
- // Nothing to do
- break;
- }
- }
-
- //horizontal page breaks
- if (!empty($hbreaks)) {
-
- // Sort and filter array of page breaks
- sort($hbreaks, SORT_NUMERIC);
- if ($hbreaks[0] == 0) { // don't use first break if it's 0
- array_shift($hbreaks);
- }
-
- $record = 0x001b; // Record identifier
- $cbrk = count($hbreaks); // Number of page breaks
- $length = 2 + 6 * $cbrk; // Bytes to follow
-
- $header = pack("vv", $record, $length);
- $data = pack("v", $cbrk);
-
- // Append each page break
- foreach ($hbreaks as $hbreak) {
- $data .= pack("vvv", $hbreak, 0x0000, 0x00ff);
- }
-
- $this->_append($header . $data);
- }
-
- // vertical page breaks
- if (!empty($vbreaks)) {
-
- // 1000 vertical pagebreaks appears to be an internal Excel 5 limit.
- // It is slightly higher in Excel 97/200, approx. 1026
- $vbreaks = array_slice($vbreaks, 0, 1000);
-
- // Sort and filter array of page breaks
- sort($vbreaks, SORT_NUMERIC);
- if ($vbreaks[0] == 0) { // don't use first break if it's 0
- array_shift($vbreaks);
- }
-
- $record = 0x001a; // Record identifier
- $cbrk = count($vbreaks); // Number of page breaks
- $length = 2 + 6 * $cbrk; // Bytes to follow
-
- $header = pack("vv", $record, $length);
- $data = pack("v", $cbrk);
-
- // Append each page break
- foreach ($vbreaks as $vbreak) {
- $data .= pack("vvv", $vbreak, 0x0000, 0xffff);
- }
-
- $this->_append($header . $data);
- }
- }
-
- /**
- * Set the Biff PROTECT record to indicate that the worksheet is protected.
- */
- private function _writeProtect()
- {
- // Exit unless sheet protection has been specified
- if (!$this->_phpSheet->getProtection()->getSheet()) {
- return;
- }
-
- $record = 0x0012; // Record identifier
- $length = 0x0002; // Bytes to follow
-
- $fLock = 1; // Worksheet is protected
-
- $header = pack("vv", $record, $length);
- $data = pack("v", $fLock);
-
- $this->_append($header.$data);
- }
-
- /**
- * Write SCENPROTECT
- */
- private function _writeScenProtect()
- {
- // Exit if sheet protection is not active
- if (!$this->_phpSheet->getProtection()->getSheet()) {
- return;
- }
-
- // Exit if scenarios are not protected
- if (!$this->_phpSheet->getProtection()->getScenarios()) {
- return;
- }
-
- $record = 0x00DD; // Record identifier
- $length = 0x0002; // Bytes to follow
-
- $header = pack('vv', $record, $length);
- $data = pack('v', 1);
-
- $this->_append($header . $data);
- }
-
- /**
- * Write OBJECTPROTECT
- */
- private function _writeObjectProtect()
- {
- // Exit if sheet protection is not active
- if (!$this->_phpSheet->getProtection()->getSheet()) {
- return;
- }
-
- // Exit if objects are not protected
- if (!$this->_phpSheet->getProtection()->getObjects()) {
- return;
- }
-
- $record = 0x0063; // Record identifier
- $length = 0x0002; // Bytes to follow
-
- $header = pack('vv', $record, $length);
- $data = pack('v', 1);
-
- $this->_append($header . $data);
- }
-
- /**
- * Write the worksheet PASSWORD record.
- */
- private function _writePassword()
- {
- // Exit unless sheet protection and password have been specified
- if (!$this->_phpSheet->getProtection()->getSheet() || !$this->_phpSheet->getProtection()->getPassword()) {
- return;
- }
-
- $record = 0x0013; // Record identifier
- $length = 0x0002; // Bytes to follow
-
- $wPassword = hexdec($this->_phpSheet->getProtection()->getPassword()); // Encoded password
-
- $header = pack("vv", $record, $length);
- $data = pack("v", $wPassword);
-
- $this->_append($header . $data);
- }
-
- /**
- * Insert a 24bit bitmap image in a worksheet.
- *
- * @access public
- * @param integer $row The row we are going to insert the bitmap into
- * @param integer $col The column we are going to insert the bitmap into
- * @param mixed $bitmap The bitmap filename or GD-image resource
- * @param integer $x The horizontal position (offset) of the image inside the cell.
- * @param integer $y The vertical position (offset) of the image inside the cell.
- * @param float $scale_x The horizontal scale
- * @param float $scale_y The vertical scale
- */
- function insertBitmap($row, $col, $bitmap, $x = 0, $y = 0, $scale_x = 1, $scale_y = 1)
- {
- $bitmap_array = (is_resource($bitmap) ? $this->_processBitmapGd($bitmap) : $this->_processBitmap($bitmap));
- list($width, $height, $size, $data) = $bitmap_array; //$this->_processBitmap($bitmap);
-
- // Scale the frame of the image.
- $width *= $scale_x;
- $height *= $scale_y;
-
- // Calculate the vertices of the image and write the OBJ record
- $this->_positionImage($col, $row, $x, $y, $width, $height);
-
- // Write the IMDATA record to store the bitmap data
- $record = 0x007f;
- $length = 8 + $size;
- $cf = 0x09;
- $env = 0x01;
- $lcb = $size;
-
- $header = pack("vvvvV", $record, $length, $cf, $env, $lcb);
- $this->_append($header.$data);
- }
-
- /**
- * Calculate the vertices that define the position of the image as required by
- * the OBJ record.
- *
- * +------------+------------+
- * | A | B |
- * +-----+------------+------------+
- * | |(x1,y1) | |
- * | 1 |(A1)._______|______ |
- * | | | | |
- * | | | | |
- * +-----+----| BITMAP |-----+
- * | | | | |
- * | 2 | |______________. |
- * | | | (B2)|
- * | | | (x2,y2)|
- * +---- +------------+------------+
- *
- * Example of a bitmap that covers some of the area from cell A1 to cell B2.
- *
- * Based on the width and height of the bitmap we need to calculate 8 vars:
- * $col_start, $row_start, $col_end, $row_end, $x1, $y1, $x2, $y2.
- * The width and height of the cells are also variable and have to be taken into
- * account.
- * The values of $col_start and $row_start are passed in from the calling
- * function. The values of $col_end and $row_end are calculated by subtracting
- * the width and height of the bitmap from the width and height of the
- * underlying cells.
- * The vertices are expressed as a percentage of the underlying cell width as
- * follows (rhs values are in pixels):
- *
- * x1 = X / W *1024
- * y1 = Y / H *256
- * x2 = (X-1) / W *1024
- * y2 = (Y-1) / H *256
- *
- * Where: X is distance from the left side of the underlying cell
- * Y is distance from the top of the underlying cell
- * W is the width of the cell
- * H is the height of the cell
- * The SDK incorrectly states that the height should be expressed as a
- * percentage of 1024.
- *
- * @access private
- * @param integer $col_start Col containing upper left corner of object
- * @param integer $row_start Row containing top left corner of object
- * @param integer $x1 Distance to left side of object
- * @param integer $y1 Distance to top of object
- * @param integer $width Width of image frame
- * @param integer $height Height of image frame
- */
- function _positionImage($col_start, $row_start, $x1, $y1, $width, $height)
- {
- // Initialise end cell to the same as the start cell
- $col_end = $col_start; // Col containing lower right corner of object
- $row_end = $row_start; // Row containing bottom right corner of object
-
- // Zero the specified offset if greater than the cell dimensions
- if ($x1 >= PHPExcel_Shared_Excel5::sizeCol($this->_phpSheet, PHPExcel_Cell::stringFromColumnIndex($col_start))) {
- $x1 = 0;
- }
- if ($y1 >= PHPExcel_Shared_Excel5::sizeRow($this->_phpSheet, $row_start + 1)) {
- $y1 = 0;
- }
-
- $width = $width + $x1 -1;
- $height = $height + $y1 -1;
-
- // Subtract the underlying cell widths to find the end cell of the image
- while ($width >= PHPExcel_Shared_Excel5::sizeCol($this->_phpSheet, PHPExcel_Cell::stringFromColumnIndex($col_end))) {
- $width -= PHPExcel_Shared_Excel5::sizeCol($this->_phpSheet, PHPExcel_Cell::stringFromColumnIndex($col_end));
- ++$col_end;
- }
-
- // Subtract the underlying cell heights to find the end cell of the image
- while ($height >= PHPExcel_Shared_Excel5::sizeRow($this->_phpSheet, $row_end + 1)) {
- $height -= PHPExcel_Shared_Excel5::sizeRow($this->_phpSheet, $row_end + 1);
- ++$row_end;
- }
-
- // Bitmap isn't allowed to start or finish in a hidden cell, i.e. a cell
- // with zero eight or width.
- //
- if (PHPExcel_Shared_Excel5::sizeCol($this->_phpSheet, PHPExcel_Cell::stringFromColumnIndex($col_start)) == 0) {
- return;
- }
- if (PHPExcel_Shared_Excel5::sizeCol($this->_phpSheet, PHPExcel_Cell::stringFromColumnIndex($col_end)) == 0) {
- return;
- }
- if (PHPExcel_Shared_Excel5::sizeRow($this->_phpSheet, $row_start + 1) == 0) {
- return;
- }
- if (PHPExcel_Shared_Excel5::sizeRow($this->_phpSheet, $row_end + 1) == 0) {
- return;
- }
-
- // Convert the pixel values to the percentage value expected by Excel
- $x1 = $x1 / PHPExcel_Shared_Excel5::sizeCol($this->_phpSheet, PHPExcel_Cell::stringFromColumnIndex($col_start)) * 1024;
- $y1 = $y1 / PHPExcel_Shared_Excel5::sizeRow($this->_phpSheet, $row_start + 1) * 256;
- $x2 = $width / PHPExcel_Shared_Excel5::sizeCol($this->_phpSheet, PHPExcel_Cell::stringFromColumnIndex($col_end)) * 1024; // Distance to right side of object
- $y2 = $height / PHPExcel_Shared_Excel5::sizeRow($this->_phpSheet, $row_end + 1) * 256; // Distance to bottom of object
-
- $this->_writeObjPicture($col_start, $x1,
- $row_start, $y1,
- $col_end, $x2,
- $row_end, $y2);
- }
-
- /**
- * Store the OBJ record that precedes an IMDATA record. This could be generalise
- * to support other Excel objects.
- *
- * @param integer $colL Column containing upper left corner of object
- * @param integer $dxL Distance from left side of cell
- * @param integer $rwT Row containing top left corner of object
- * @param integer $dyT Distance from top of cell
- * @param integer $colR Column containing lower right corner of object
- * @param integer $dxR Distance from right of cell
- * @param integer $rwB Row containing bottom right corner of object
- * @param integer $dyB Distance from bottom of cell
- */
- private function _writeObjPicture($colL,$dxL,$rwT,$dyT,$colR,$dxR,$rwB,$dyB)
- {
- $record = 0x005d; // Record identifier
- $length = 0x003c; // Bytes to follow
-
- $cObj = 0x0001; // Count of objects in file (set to 1)
- $OT = 0x0008; // Object type. 8 = Picture
- $id = 0x0001; // Object ID
- $grbit = 0x0614; // Option flags
-
- $cbMacro = 0x0000; // Length of FMLA structure
- $Reserved1 = 0x0000; // Reserved
- $Reserved2 = 0x0000; // Reserved
-
- $icvBack = 0x09; // Background colour
- $icvFore = 0x09; // Foreground colour
- $fls = 0x00; // Fill pattern
- $fAuto = 0x00; // Automatic fill
- $icv = 0x08; // Line colour
- $lns = 0xff; // Line style
- $lnw = 0x01; // Line weight
- $fAutoB = 0x00; // Automatic border
- $frs = 0x0000; // Frame style
- $cf = 0x0009; // Image format, 9 = bitmap
- $Reserved3 = 0x0000; // Reserved
- $cbPictFmla = 0x0000; // Length of FMLA structure
- $Reserved4 = 0x0000; // Reserved
- $grbit2 = 0x0001; // Option flags
- $Reserved5 = 0x0000; // Reserved
-
-
- $header = pack("vv", $record, $length);
- $data = pack("V", $cObj);
- $data .= pack("v", $OT);
- $data .= pack("v", $id);
- $data .= pack("v", $grbit);
- $data .= pack("v", $colL);
- $data .= pack("v", $dxL);
- $data .= pack("v", $rwT);
- $data .= pack("v", $dyT);
- $data .= pack("v", $colR);
- $data .= pack("v", $dxR);
- $data .= pack("v", $rwB);
- $data .= pack("v", $dyB);
- $data .= pack("v", $cbMacro);
- $data .= pack("V", $Reserved1);
- $data .= pack("v", $Reserved2);
- $data .= pack("C", $icvBack);
- $data .= pack("C", $icvFore);
- $data .= pack("C", $fls);
- $data .= pack("C", $fAuto);
- $data .= pack("C", $icv);
- $data .= pack("C", $lns);
- $data .= pack("C", $lnw);
- $data .= pack("C", $fAutoB);
- $data .= pack("v", $frs);
- $data .= pack("V", $cf);
- $data .= pack("v", $Reserved3);
- $data .= pack("v", $cbPictFmla);
- $data .= pack("v", $Reserved4);
- $data .= pack("v", $grbit2);
- $data .= pack("V", $Reserved5);
-
- $this->_append($header . $data);
- }
-
- /**
- * Convert a GD-image into the internal format.
- *
- * @access private
- * @param resource $image The image to process
- * @return array Array with data and properties of the bitmap
- */
- function _processBitmapGd($image) {
- $width = imagesx($image);
- $height = imagesy($image);
-
- $data = pack("Vvvvv", 0x000c, $width, $height, 0x01, 0x18);
- for ($j=$height; $j--; ) {
- for ($i=0; $i < $width; ++$i) {
- $color = imagecolorsforindex($image, imagecolorat($image, $i, $j));
- foreach (array("red", "green", "blue") as $key) {
- $color[$key] = $color[$key] + round((255 - $color[$key]) * $color["alpha"] / 127);
- }
- $data .= chr($color["blue"]) . chr($color["green"]) . chr($color["red"]);
- }
- if (3*$width % 4) {
- $data .= str_repeat("\x00", 4 - 3*$width % 4);
- }
- }
-
- return array($width, $height, strlen($data), $data);
- }
-
- /**
- * Convert a 24 bit bitmap into the modified internal format used by Windows.
- * This is described in BITMAPCOREHEADER and BITMAPCOREINFO structures in the
- * MSDN library.
- *
- * @access private
- * @param string $bitmap The bitmap to process
- * @return array Array with data and properties of the bitmap
- */
- function _processBitmap($bitmap)
- {
- // Open file.
- $bmp_fd = @fopen($bitmap,"rb");
- if (!$bmp_fd) {
- throw new Exception("Couldn't import $bitmap");
- }
-
- // Slurp the file into a string.
- $data = fread($bmp_fd, filesize($bitmap));
-
- // Check that the file is big enough to be a bitmap.
- if (strlen($data) <= 0x36) {
- throw new Exception("$bitmap doesn't contain enough data.\n");
- }
-
- // The first 2 bytes are used to identify the bitmap.
- $identity = unpack("A2ident", $data);
- if ($identity['ident'] != "BM") {
- throw new Exception("$bitmap doesn't appear to be a valid bitmap image.\n");
- }
-
- // Remove bitmap data: ID.
- $data = substr($data, 2);
-
- // Read and remove the bitmap size. This is more reliable than reading
- // the data size at offset 0x22.
- //
- $size_array = unpack("Vsa", substr($data, 0, 4));
- $size = $size_array['sa'];
- $data = substr($data, 4);
- $size -= 0x36; // Subtract size of bitmap header.
- $size += 0x0C; // Add size of BIFF header.
-
- // Remove bitmap data: reserved, offset, header length.
- $data = substr($data, 12);
-
- // Read and remove the bitmap width and height. Verify the sizes.
- $width_and_height = unpack("V2", substr($data, 0, 8));
- $width = $width_and_height[1];
- $height = $width_and_height[2];
- $data = substr($data, 8);
- if ($width > 0xFFFF) {
- throw new Exception("$bitmap: largest image width supported is 65k.\n");
- }
- if ($height > 0xFFFF) {
- throw new Exception("$bitmap: largest image height supported is 65k.\n");
- }
-
- // Read and remove the bitmap planes and bpp data. Verify them.
- $planes_and_bitcount = unpack("v2", substr($data, 0, 4));
- $data = substr($data, 4);
- if ($planes_and_bitcount[2] != 24) { // Bitcount
- throw new Exception("$bitmap isn't a 24bit true color bitmap.\n");
- }
- if ($planes_and_bitcount[1] != 1) {
- throw new Exception("$bitmap: only 1 plane supported in bitmap image.\n");
- }
-
- // Read and remove the bitmap compression. Verify compression.
- $compression = unpack("Vcomp", substr($data, 0, 4));
- $data = substr($data, 4);
-
- //$compression = 0;
- if ($compression['comp'] != 0) {
- throw new Exception("$bitmap: compression not supported in bitmap image.\n");
- }
-
- // Remove bitmap data: data size, hres, vres, colours, imp. colours.
- $data = substr($data, 20);
-
- // Add the BITMAPCOREHEADER data
- $header = pack("Vvvvv", 0x000c, $width, $height, 0x01, 0x18);
- $data = $header . $data;
-
- return (array($width, $height, $size, $data));
- }
-
- /**
- * Store the window zoom factor. This should be a reduced fraction but for
- * simplicity we will store all fractions with a numerator of 100.
- */
- private function _writeZoom()
- {
- // If scale is 100 we don't need to write a record
- if ($this->_phpSheet->getSheetView()->getZoomScale() == 100) {
- return;
- }
-
- $record = 0x00A0; // Record identifier
- $length = 0x0004; // Bytes to follow
-
- $header = pack("vv", $record, $length);
- $data = pack("vv", $this->_phpSheet->getSheetView()->getZoomScale(), 100);
- $this->_append($header . $data);
- }
-
- /**
- * Get Escher object
- *
- * @return PHPExcel_Shared_Escher
- */
- public function getEscher()
- {
- return $this->_escher;
- }
-
- /**
- * Set Escher object
- *
- * @param PHPExcel_Shared_Escher $pValue
- */
- public function setEscher(PHPExcel_Shared_Escher $pValue = null)
- {
- $this->_escher = $pValue;
- }
-
- /**
- * Write MSODRAWING record
- */
- private function _writeMsoDrawing()
- {
- // write the Escher stream if necessary
- if (isset($this->_escher)) {
- $writer = new PHPExcel_Writer_Excel5_Escher($this->_escher);
- $data = $writer->close();
- $spOffsets = $writer->getSpOffsets();
- $spTypes = $writer->getSpTypes();
- // write the neccesary MSODRAWING, OBJ records
-
- // split the Escher stream
- $spOffsets[0] = 0;
- $nm = count($spOffsets) - 1; // number of shapes excluding first shape
- for ($i = 1; $i <= $nm; ++$i) {
- // MSODRAWING record
- $record = 0x00EC; // Record identifier
-
- // chunk of Escher stream for one shape
- $dataChunk = substr($data, $spOffsets[$i -1], $spOffsets[$i] - $spOffsets[$i - 1]);
-
- $length = strlen($dataChunk);
- $header = pack("vv", $record, $length);
-
- $this->_append($header . $dataChunk);
-
- // OBJ record
- $record = 0x005D; // record identifier
- $objData = '';
-
- // ftCmo
- if($spTypes[$i] == 0x00C9){
- // Add ftCmo (common object data) subobject
- $objData .=
- pack('vvvvvVVV'
- , 0x0015 // 0x0015 = ftCmo
- , 0x0012 // length of ftCmo data
- , 0x0014 // object type, 0x0014 = filter
- , $i // object id number, Excel seems to use 1-based index, local for the sheet
- , 0x2101 // option flags, 0x2001 is what OpenOffice.org uses
- , 0 // reserved
- , 0 // reserved
- , 0 // reserved
- );
-
- // Add ftSbs Scroll bar subobject
- $objData .= pack('vv', 0x00C, 0x0014);
- $objData .= pack('H*', '0000000000000000640001000A00000010000100');
- // Add ftLbsData (List box data) subobject
- $objData .= pack('vv', 0x0013, 0x1FEE);
- $objData .= pack('H*', '00000000010001030000020008005700');
- }
- else {
- // Add ftCmo (common object data) subobject
- $objData .=
- pack('vvvvvVVV'
- , 0x0015 // 0x0015 = ftCmo
- , 0x0012 // length of ftCmo data
- , 0x0008 // object type, 0x0008 = picture
- , $i // object id number, Excel seems to use 1-based index, local for the sheet
- , 0x6011 // option flags, 0x6011 is what OpenOffice.org uses
- , 0 // reserved
- , 0 // reserved
- , 0 // reserved
- );
- }
-
- // ftEnd
- $objData .=
- pack('vv'
- , 0x0000 // 0x0000 = ftEnd
- , 0x0000 // length of ftEnd data
- );
-
- $length = strlen($objData);
- $header = pack('vv', $record, $length);
- $this->_append($header . $objData);
- }
- }
- }
-
- /**
- * Store the DATAVALIDATIONS and DATAVALIDATION records.
- */
- private function _writeDataValidity()
- {
- // Datavalidation collection
- $dataValidationCollection = $this->_phpSheet->getDataValidationCollection();
-
- // Write data validations?
- if (!empty($dataValidationCollection)) {
-
- // DATAVALIDATIONS record
- $record = 0x01B2; // Record identifier
- $length = 0x0012; // Bytes to follow
-
- $grbit = 0x0000; // Prompt box at cell, no cached validity data at DV records
- $horPos = 0x00000000; // Horizontal position of prompt box, if fixed position
- $verPos = 0x00000000; // Vertical position of prompt box, if fixed position
- $objId = 0xFFFFFFFF; // Object identifier of drop down arrow object, or -1 if not visible
-
- $header = pack('vv', $record, $length);
- $data = pack('vVVVV', $grbit, $horPos, $verPos, $objId,
- count($dataValidationCollection));
- $this->_append($header.$data);
-
- // DATAVALIDATION records
- $record = 0x01BE; // Record identifier
-
- foreach ($dataValidationCollection as $cellCoordinate => $dataValidation) {
- // initialize record data
- $data = '';
-
- // options
- $options = 0x00000000;
-
- // data type
- $type = $dataValidation->getType();
- switch ($type) {
- case PHPExcel_Cell_DataValidation::TYPE_NONE: $type = 0x00; break;
- case PHPExcel_Cell_DataValidation::TYPE_WHOLE: $type = 0x01; break;
- case PHPExcel_Cell_DataValidation::TYPE_DECIMAL: $type = 0x02; break;
- case PHPExcel_Cell_DataValidation::TYPE_LIST: $type = 0x03; break;
- case PHPExcel_Cell_DataValidation::TYPE_DATE: $type = 0x04; break;
- case PHPExcel_Cell_DataValidation::TYPE_TIME: $type = 0x05; break;
- case PHPExcel_Cell_DataValidation::TYPE_TEXTLENGTH: $type = 0x06; break;
- case PHPExcel_Cell_DataValidation::TYPE_CUSTOM: $type = 0x07; break;
- }
- $options |= $type << 0;
-
- // error style
- $errorStyle = $dataValidation->getType();
- switch ($errorStyle) {
- case PHPExcel_Cell_DataValidation::STYLE_STOP: $errorStyle = 0x00; break;
- case PHPExcel_Cell_DataValidation::STYLE_WARNING: $errorStyle = 0x01; break;
- case PHPExcel_Cell_DataValidation::STYLE_INFORMATION: $errorStyle = 0x02; break;
- }
- $options |= $errorStyle << 4;
-
- // explicit formula?
- if ($type == 0x03 && preg_match('/^\".*\"$/', $dataValidation->getFormula1())) {
- $options |= 0x01 << 7;
- }
-
- // empty cells allowed
- $options |= $dataValidation->getAllowBlank() << 8;
-
- // show drop down
- $options |= (!$dataValidation->getShowDropDown()) << 9;
-
- // show input message
- $options |= $dataValidation->getShowInputMessage() << 18;
-
- // show error message
- $options |= $dataValidation->getShowErrorMessage() << 19;
-
- // condition operator
- $operator = $dataValidation->getOperator();
- switch ($operator) {
- case PHPExcel_Cell_DataValidation::OPERATOR_BETWEEN: $operator = 0x00 ; break;
- case PHPExcel_Cell_DataValidation::OPERATOR_NOTBETWEEN: $operator = 0x01 ; break;
- case PHPExcel_Cell_DataValidation::OPERATOR_EQUAL: $operator = 0x02 ; break;
- case PHPExcel_Cell_DataValidation::OPERATOR_NOTEQUAL: $operator = 0x03 ; break;
- case PHPExcel_Cell_DataValidation::OPERATOR_GREATERTHAN: $operator = 0x04 ; break;
- case PHPExcel_Cell_DataValidation::OPERATOR_LESSTHAN: $operator = 0x05 ; break;
- case PHPExcel_Cell_DataValidation::OPERATOR_GREATERTHANOREQUAL: $operator = 0x06; break;
- case PHPExcel_Cell_DataValidation::OPERATOR_LESSTHANOREQUAL: $operator = 0x07 ; break;
- }
- $options |= $operator << 20;
-
- $data = pack('V', $options);
-
- // prompt title
- $promptTitle = $dataValidation->getPromptTitle() !== '' ?
- $dataValidation->getPromptTitle() : chr(0);
- $data .= PHPExcel_Shared_String::UTF8toBIFF8UnicodeLong($promptTitle);
-
- // error title
- $errorTitle = $dataValidation->getErrorTitle() !== '' ?
- $dataValidation->getErrorTitle() : chr(0);
- $data .= PHPExcel_Shared_String::UTF8toBIFF8UnicodeLong($errorTitle);
-
- // prompt text
- $prompt = $dataValidation->getPrompt() !== '' ?
- $dataValidation->getPrompt() : chr(0);
- $data .= PHPExcel_Shared_String::UTF8toBIFF8UnicodeLong($prompt);
-
- // error text
- $error = $dataValidation->getError() !== '' ?
- $dataValidation->getError() : chr(0);
- $data .= PHPExcel_Shared_String::UTF8toBIFF8UnicodeLong($error);
-
- // formula 1
- try {
- $formula1 = $dataValidation->getFormula1();
- if ($type == 0x03) { // list type
- $formula1 = str_replace(',', chr(0), $formula1);
- }
- $this->_parser->parse($formula1);
- $formula1 = $this->_parser->toReversePolish();
- $sz1 = strlen($formula1);
-
- } catch(Exception $e) {
- $sz1 = 0;
- $formula1 = '';
- }
- $data .= pack('vv', $sz1, 0x0000);
- $data .= $formula1;
-
- // formula 2
- try {
- $formula2 = $dataValidation->getFormula2();
- if ($formula2 === '') {
- throw new Exception('No formula2');
- }
- $this->_parser->parse($formula2);
- $formula2 = $this->_parser->toReversePolish();
- $sz2 = strlen($formula2);
-
- } catch(Exception $e) {
- $sz2 = 0;
- $formula2 = '';
- }
- $data .= pack('vv', $sz2, 0x0000);
- $data .= $formula2;
-
- // cell range address list
- $data .= pack('v', 0x0001);
- $data .= $this->_writeBIFF8CellRangeAddressFixed($cellCoordinate);
-
- $length = strlen($data);
- $header = pack("vv", $record, $length);
-
- $this->_append($header . $data);
- }
- }
- }
-
- /**
- * Map Error code
- *
- * @param string $errorCode
- * @return int
- */
- private static function _mapErrorCode($errorCode) {
- switch ($errorCode) {
- case '#NULL!': return 0x00;
- case '#DIV/0!': return 0x07;
- case '#VALUE!': return 0x0F;
- case '#REF!': return 0x17;
- case '#NAME?': return 0x1D;
- case '#NUM!': return 0x24;
- case '#N/A': return 0x2A;
- }
-
- return 0;
- }
-
-} \ No newline at end of file
diff --git a/admin/survey/excel/PHPExcel/Writer/Excel5/Xf.php b/admin/survey/excel/PHPExcel/Writer/Excel5/Xf.php
deleted file mode 100644
index 60835c5..0000000
--- a/admin/survey/excel/PHPExcel/Writer/Excel5/Xf.php
+++ /dev/null
@@ -1,546 +0,0 @@
-<?php
-/**
- * PHPExcel
- *
- * Copyright (c) 2006 - 2012 PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel_Writer_Excel5
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-// Original file header of PEAR::Spreadsheet_Excel_Writer_Format (used as the base for this class):
-// -----------------------------------------------------------------------------------------
-// /*
-// * Module written/ported by Xavier Noguer <xnoguer@rezebra.com>
-// *
-// * The majority of this is _NOT_ my code. I simply ported it from the
-// * PERL Spreadsheet::WriteExcel module.
-// *
-// * The author of the Spreadsheet::WriteExcel module is John McNamara
-// * <jmcnamara@cpan.org>
-// *
-// * I _DO_ maintain this code, and John McNamara has nothing to do with the
-// * porting of this code to PHP. Any questions directly related to this
-// * class library should be directed to me.
-// *
-// * License Information:
-// *
-// * Spreadsheet_Excel_Writer: A library for generating Excel Spreadsheets
-// * Copyright (c) 2002-2003 Xavier Noguer xnoguer@rezebra.com
-// *
-// * This library is free software; you can redistribute it and/or
-// * modify it under the terms of the GNU Lesser General Public
-// * License as published by the Free Software Foundation; either
-// * version 2.1 of the License, or (at your option) any later version.
-// *
-// * This library is distributed in the hope that it will be useful,
-// * but WITHOUT ANY WARRANTY; without even the implied warranty of
-// * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// * Lesser General Public License for more details.
-// *
-// * You should have received a copy of the GNU Lesser General Public
-// * License along with this library; if not, write to the Free Software
-// * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-// */
-
-
-/**
- * PHPExcel_Writer_Excel5_Xf
- *
- * @category PHPExcel
- * @package PHPExcel_Writer_Excel5
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- */
-class PHPExcel_Writer_Excel5_Xf
-{
- /**
- * Style XF or a cell XF ?
- *
- * @var boolean
- */
- private $_isStyleXf;
-
- /**
- * Index to the FONT record. Index 4 does not exist
- * @var integer
- */
- private $_fontIndex;
-
- /**
- * An index (2 bytes) to a FORMAT record (number format).
- * @var integer
- */
- public $_numberFormatIndex;
-
- /**
- * 1 bit, apparently not used.
- * @var integer
- */
- public $_text_justlast;
-
- /**
- * The cell's foreground color.
- * @var integer
- */
- public $_fg_color;
-
- /**
- * The cell's background color.
- * @var integer
- */
- public $_bg_color;
-
- /**
- * Color of the bottom border of the cell.
- * @var integer
- */
- public $_bottom_color;
-
- /**
- * Color of the top border of the cell.
- * @var integer
- */
- public $_top_color;
-
- /**
- * Color of the left border of the cell.
- * @var integer
- */
- public $_left_color;
-
- /**
- * Color of the right border of the cell.
- * @var integer
- */
- public $_right_color;
-
- /**
- * Constructor
- *
- * @access public
- * @param PHPExcel_Style The XF format
- */
- public function __construct(PHPExcel_Style $style = null)
- {
- $this->_isStyleXf = false;
- $this->_fontIndex = 0;
-
- $this->_numberFormatIndex = 0;
-
- $this->_text_justlast = 0;
-
- $this->_fg_color = 0x40;
- $this->_bg_color = 0x41;
-
- $this->_diag = 0;
-
- $this->_bottom_color = 0x40;
- $this->_top_color = 0x40;
- $this->_left_color = 0x40;
- $this->_right_color = 0x40;
- $this->_diag_color = 0x40;
- $this->_style = $style;
-
- }
-
-
- /**
- * Generate an Excel BIFF XF record (style or cell).
- *
- * @return string The XF record
- */
- function writeXf()
- {
- // Set the type of the XF record and some of the attributes.
- if ($this->_isStyleXf) {
- $style = 0xFFF5;
- } else {
- $style = self::_mapLocked($this->_style->getProtection()->getLocked());
- $style |= self::_mapHidden($this->_style->getProtection()->getHidden()) << 1;
- }
-
- // Flags to indicate if attributes have been set.
- $atr_num = ($this->_numberFormatIndex != 0)?1:0;
- $atr_fnt = ($this->_fontIndex != 0)?1:0;
- $atr_alc = ((int) $this->_style->getAlignment()->getWrapText())?1:0;
- $atr_bdr = (self::_mapBorderStyle($this->_style->getBorders()->getBottom()->getBorderStyle()) ||
- self::_mapBorderStyle($this->_style->getBorders()->getTop()->getBorderStyle()) ||
- self::_mapBorderStyle($this->_style->getBorders()->getLeft()->getBorderStyle()) ||
- self::_mapBorderStyle($this->_style->getBorders()->getRight()->getBorderStyle()))?1:0;
- $atr_pat = (($this->_fg_color != 0x40) ||
- ($this->_bg_color != 0x41) ||
- self::_mapFillType($this->_style->getFill()->getFillType()))?1:0;
- $atr_prot = self::_mapLocked($this->_style->getProtection()->getLocked())
- | self::_mapHidden($this->_style->getProtection()->getHidden());
-
- // Zero the default border colour if the border has not been set.
- if (self::_mapBorderStyle($this->_style->getBorders()->getBottom()->getBorderStyle()) == 0) {
- $this->_bottom_color = 0;
- }
- if (self::_mapBorderStyle($this->_style->getBorders()->getTop()->getBorderStyle()) == 0) {
- $this->_top_color = 0;
- }
- if (self::_mapBorderStyle($this->_style->getBorders()->getRight()->getBorderStyle()) == 0) {
- $this->_right_color = 0;
- }
- if (self::_mapBorderStyle($this->_style->getBorders()->getLeft()->getBorderStyle()) == 0) {
- $this->_left_color = 0;
- }
- if (self::_mapBorderStyle($this->_style->getBorders()->getDiagonal()->getBorderStyle()) == 0) {
- $this->_diag_color = 0;
- }
-
- $record = 0x00E0; // Record identifier
- $length = 0x0014; // Number of bytes to follow
-
- $ifnt = $this->_fontIndex; // Index to FONT record
- $ifmt = $this->_numberFormatIndex; // Index to FORMAT record
-
- $align = $this->_mapHAlign($this->_style->getAlignment()->getHorizontal()); // Alignment
- $align |= (int) $this->_style->getAlignment()->getWrapText() << 3;
- $align |= self::_mapVAlign($this->_style->getAlignment()->getVertical()) << 4;
- $align |= $this->_text_justlast << 7;
-
- $used_attrib = $atr_num << 2;
- $used_attrib |= $atr_fnt << 3;
- $used_attrib |= $atr_alc << 4;
- $used_attrib |= $atr_bdr << 5;
- $used_attrib |= $atr_pat << 6;
- $used_attrib |= $atr_prot << 7;
-
- $icv = $this->_fg_color; // fg and bg pattern colors
- $icv |= $this->_bg_color << 7;
-
- $border1 = self::_mapBorderStyle($this->_style->getBorders()->getLeft()->getBorderStyle()); // Border line style and color
- $border1 |= self::_mapBorderStyle($this->_style->getBorders()->getRight()->getBorderStyle()) << 4;
- $border1 |= self::_mapBorderStyle($this->_style->getBorders()->getTop()->getBorderStyle()) << 8;
- $border1 |= self::_mapBorderStyle($this->_style->getBorders()->getBottom()->getBorderStyle()) << 12;
- $border1 |= $this->_left_color << 16;
- $border1 |= $this->_right_color << 23;
-
- $diagonalDirection = $this->_style->getBorders()->getDiagonalDirection();
- $diag_tl_to_rb = $diagonalDirection == PHPExcel_Style_Borders::DIAGONAL_BOTH
- || $diagonalDirection == PHPExcel_Style_Borders::DIAGONAL_DOWN;
- $diag_tr_to_lb = $diagonalDirection == PHPExcel_Style_Borders::DIAGONAL_BOTH
- || $diagonalDirection == PHPExcel_Style_Borders::DIAGONAL_UP;
- $border1 |= $diag_tl_to_rb << 30;
- $border1 |= $diag_tr_to_lb << 31;
-
- $border2 = $this->_top_color; // Border color
- $border2 |= $this->_bottom_color << 7;
- $border2 |= $this->_diag_color << 14;
- $border2 |= self::_mapBorderStyle($this->_style->getBorders()->getDiagonal()->getBorderStyle()) << 21;
- $border2 |= self::_mapFillType($this->_style->getFill()->getFillType()) << 26;
-
- $header = pack("vv", $record, $length);
-
- //BIFF8 options: identation, shrinkToFit and text direction
- $biff8_options = $this->_style->getAlignment()->getIndent();
- $biff8_options |= (int) $this->_style->getAlignment()->getShrinkToFit() << 4;
-
- $data = pack("vvvC", $ifnt, $ifmt, $style, $align);
- $data .= pack("CCC"
- , self::_mapTextRotation($this->_style->getAlignment()->getTextRotation())
- , $biff8_options
- , $used_attrib
- );
- $data .= pack("VVv", $border1, $border2, $icv);
-
- return($header . $data);
- }
-
- /**
- * Is this a style XF ?
- *
- * @param boolean $value
- */
- public function setIsStyleXf($value)
- {
- $this->_isStyleXf = $value;
- }
-
- /**
- * Sets the cell's bottom border color
- *
- * @access public
- * @param int $colorIndex Color index
- */
- function setBottomColor($colorIndex)
- {
- $this->_bottom_color = $colorIndex;
- }
-
- /**
- * Sets the cell's top border color
- *
- * @access public
- * @param int $colorIndex Color index
- */
- function setTopColor($colorIndex)
- {
- $this->_top_color = $colorIndex;
- }
-
- /**
- * Sets the cell's left border color
- *
- * @access public
- * @param int $colorIndex Color index
- */
- function setLeftColor($colorIndex)
- {
- $this->_left_color = $colorIndex;
- }
-
- /**
- * Sets the cell's right border color
- *
- * @access public
- * @param int $colorIndex Color index
- */
- function setRightColor($colorIndex)
- {
- $this->_right_color = $colorIndex;
- }
-
- /**
- * Sets the cell's diagonal border color
- *
- * @access public
- * @param int $colorIndex Color index
- */
- function setDiagColor($colorIndex)
- {
- $this->_diag_color = $colorIndex;
- }
-
-
- /**
- * Sets the cell's foreground color
- *
- * @access public
- * @param int $colorIndex Color index
- */
- function setFgColor($colorIndex)
- {
- $this->_fg_color = $colorIndex;
- }
-
- /**
- * Sets the cell's background color
- *
- * @access public
- * @param int $colorIndex Color index
- */
- function setBgColor($colorIndex)
- {
- $this->_bg_color = $colorIndex;
- }
-
- /**
- * Sets the index to the number format record
- * It can be date, time, currency, etc...
- *
- * @access public
- * @param integer $numberFormatIndex Index to format record
- */
- function setNumberFormatIndex($numberFormatIndex)
- {
- $this->_numberFormatIndex = $numberFormatIndex;
- }
-
- /**
- * Set the font index.
- *
- * @param int $value Font index, note that value 4 does not exist
- */
- public function setFontIndex($value)
- {
- $this->_fontIndex = $value;
- }
-
- /**
- * Map of BIFF2-BIFF8 codes for border styles
- * @static array of int
- *
- */
- private static $_mapBorderStyle = array ( PHPExcel_Style_Border::BORDER_NONE => 0x00,
- PHPExcel_Style_Border::BORDER_THIN => 0x01,
- PHPExcel_Style_Border::BORDER_MEDIUM => 0x02,
- PHPExcel_Style_Border::BORDER_DASHED => 0x03,
- PHPExcel_Style_Border::BORDER_DOTTED => 0x04,
- PHPExcel_Style_Border::BORDER_THICK => 0x05,
- PHPExcel_Style_Border::BORDER_DOUBLE => 0x06,
- PHPExcel_Style_Border::BORDER_HAIR => 0x07,
- PHPExcel_Style_Border::BORDER_MEDIUMDASHED => 0x08,
- PHPExcel_Style_Border::BORDER_DASHDOT => 0x09,
- PHPExcel_Style_Border::BORDER_MEDIUMDASHDOT => 0x0A,
- PHPExcel_Style_Border::BORDER_DASHDOTDOT => 0x0B,
- PHPExcel_Style_Border::BORDER_MEDIUMDASHDOTDOT => 0x0C,
- PHPExcel_Style_Border::BORDER_SLANTDASHDOT => 0x0D,
- );
-
- /**
- * Map border style
- *
- * @param string $borderStyle
- * @return int
- */
- private static function _mapBorderStyle($borderStyle) {
- if (isset(self::$_mapBorderStyle[$borderStyle]))
- return self::$_mapBorderStyle[$borderStyle];
- return 0x00;
- }
-
- /**
- * Map of BIFF2-BIFF8 codes for fill types
- * @static array of int
- *
- */
- private static $_mapFillType = array( PHPExcel_Style_Fill::FILL_NONE => 0x00,
- PHPExcel_Style_Fill::FILL_SOLID => 0x01,
- PHPExcel_Style_Fill::FILL_PATTERN_MEDIUMGRAY => 0x02,
- PHPExcel_Style_Fill::FILL_PATTERN_DARKGRAY => 0x03,
- PHPExcel_Style_Fill::FILL_PATTERN_LIGHTGRAY => 0x04,
- PHPExcel_Style_Fill::FILL_PATTERN_DARKHORIZONTAL => 0x05,
- PHPExcel_Style_Fill::FILL_PATTERN_DARKVERTICAL => 0x06,
- PHPExcel_Style_Fill::FILL_PATTERN_DARKDOWN => 0x07,
- PHPExcel_Style_Fill::FILL_PATTERN_DARKUP => 0x08,
- PHPExcel_Style_Fill::FILL_PATTERN_DARKGRID => 0x09,
- PHPExcel_Style_Fill::FILL_PATTERN_DARKTRELLIS => 0x0A,
- PHPExcel_Style_Fill::FILL_PATTERN_LIGHTHORIZONTAL => 0x0B,
- PHPExcel_Style_Fill::FILL_PATTERN_LIGHTVERTICAL => 0x0C,
- PHPExcel_Style_Fill::FILL_PATTERN_LIGHTDOWN => 0x0D,
- PHPExcel_Style_Fill::FILL_PATTERN_LIGHTUP => 0x0E,
- PHPExcel_Style_Fill::FILL_PATTERN_LIGHTGRID => 0x0F,
- PHPExcel_Style_Fill::FILL_PATTERN_LIGHTTRELLIS => 0x10,
- PHPExcel_Style_Fill::FILL_PATTERN_GRAY125 => 0x11,
- PHPExcel_Style_Fill::FILL_PATTERN_GRAY0625 => 0x12,
- PHPExcel_Style_Fill::FILL_GRADIENT_LINEAR => 0x00, // does not exist in BIFF8
- PHPExcel_Style_Fill::FILL_GRADIENT_PATH => 0x00, // does not exist in BIFF8
- );
- /**
- * Map fill type
- *
- * @param string $fillType
- * @return int
- */
- private static function _mapFillType($fillType) {
- if (isset(self::$_mapFillType[$fillType]))
- return self::$_mapFillType[$fillType];
- return 0x00;
- }
-
- /**
- * Map of BIFF2-BIFF8 codes for horizontal alignment
- * @static array of int
- *
- */
- private static $_mapHAlign = array( PHPExcel_Style_Alignment::HORIZONTAL_GENERAL => 0,
- PHPExcel_Style_Alignment::HORIZONTAL_LEFT => 1,
- PHPExcel_Style_Alignment::HORIZONTAL_CENTER => 2,
- PHPExcel_Style_Alignment::HORIZONTAL_RIGHT => 3,
- PHPExcel_Style_Alignment::HORIZONTAL_JUSTIFY => 5,
- PHPExcel_Style_Alignment::HORIZONTAL_CENTER_CONTINUOUS => 6,
- );
- /**
- * Map to BIFF2-BIFF8 codes for horizontal alignment
- *
- * @param string $hAlign
- * @return int
- */
- private function _mapHAlign($hAlign)
- {
- if (isset(self::$_mapHAlign[$hAlign]))
- return self::$_mapHAlign[$hAlign];
- return 0;
- }
-
- /**
- * Map of BIFF2-BIFF8 codes for vertical alignment
- * @static array of int
- *
- */
- private static $_mapVAlign = array( PHPExcel_Style_Alignment::VERTICAL_TOP => 0,
- PHPExcel_Style_Alignment::VERTICAL_CENTER => 1,
- PHPExcel_Style_Alignment::VERTICAL_BOTTOM => 2,
- PHPExcel_Style_Alignment::VERTICAL_JUSTIFY => 3,
- );
- /**
- * Map to BIFF2-BIFF8 codes for vertical alignment
- *
- * @param string $vAlign
- * @return int
- */
- private static function _mapVAlign($vAlign) {
- if (isset(self::$_mapVAlign[$vAlign]))
- return self::$_mapVAlign[$vAlign];
- return 2;
- }
-
- /**
- * Map to BIFF8 codes for text rotation angle
- *
- * @param int $textRotation
- * @return int
- */
- private static function _mapTextRotation($textRotation) {
- if ($textRotation >= 0) {
- return $textRotation;
- }
- if ($textRotation == -165) {
- return 255;
- }
- if ($textRotation < 0) {
- return 90 - $textRotation;
- }
- }
-
- /**
- * Map locked
- *
- * @param string
- * @return int
- */
- private static function _mapLocked($locked) {
- switch ($locked) {
- case PHPExcel_Style_Protection::PROTECTION_INHERIT: return 1;
- case PHPExcel_Style_Protection::PROTECTION_PROTECTED: return 1;
- case PHPExcel_Style_Protection::PROTECTION_UNPROTECTED: return 0;
- default: return 1;
- }
- }
-
- /**
- * Map hidden
- *
- * @param string
- * @return int
- */
- private static function _mapHidden($hidden) {
- switch ($hidden) {
- case PHPExcel_Style_Protection::PROTECTION_INHERIT: return 0;
- case PHPExcel_Style_Protection::PROTECTION_PROTECTED: return 1;
- case PHPExcel_Style_Protection::PROTECTION_UNPROTECTED: return 0;
- default: return 0;
- }
- }
-
-}
diff --git a/admin/survey/excel/PHPExcel/Writer/HTML.php b/admin/survey/excel/PHPExcel/Writer/HTML.php
deleted file mode 100644
index fbd6994..0000000
--- a/admin/survey/excel/PHPExcel/Writer/HTML.php
+++ /dev/null
@@ -1,1377 +0,0 @@
-<?php
-/**
- * PHPExcel
- *
- * Copyright (c) 2006 - 2012 PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel_Writer
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-
-/**
- * PHPExcel_Writer_HTML
- *
- * @category PHPExcel
- * @package PHPExcel_Writer
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- */
-class PHPExcel_Writer_HTML implements PHPExcel_Writer_IWriter {
- /**
- * PHPExcel object
- *
- * @var PHPExcel
- */
- protected $_phpExcel;
-
- /**
- * Sheet index to write
- *
- * @var int
- */
- private $_sheetIndex = 0;
-
- /**
- * Pre-calculate formulas
- *
- * @var boolean
- */
- private $_preCalculateFormulas = true;
-
- /**
- * Images root
- *
- * @var string
- */
- private $_imagesRoot = '.';
-
- /**
- * Use inline CSS?
- *
- * @var boolean
- */
- private $_useInlineCss = false;
-
- /**
- * Array of CSS styles
- *
- * @var array
- */
- private $_cssStyles = null;
-
- /**
- * Array of column widths in points
- *
- * @var array
- */
- private $_columnWidths = null;
-
- /**
- * Default font
- *
- * @var PHPExcel_Style_Font
- */
- private $_defaultFont;
-
- /**
- * Flag whether spans have been calculated
- *
- * @var boolean
- */
- private $_spansAreCalculated = false;
-
- /**
- * Excel cells that should not be written as HTML cells
- *
- * @var array
- */
- private $_isSpannedCell = array();
-
- /**
- * Excel cells that are upper-left corner in a cell merge
- *
- * @var array
- */
- private $_isBaseCell = array();
-
- /**
- * Excel rows that should not be written as HTML rows
- *
- * @var array
- */
- private $_isSpannedRow = array();
-
- /**
- * Is the current writer creating PDF?
- *
- * @var boolean
- */
- protected $_isPdf = false;
-
- /**
- * Generate the Navigation block
- *
- * @var boolean
- */
- private $_generateSheetNavigationBlock = true;
-
- /**
- * Create a new PHPExcel_Writer_HTML
- *
- * @param PHPExcel $phpExcel PHPExcel object
- */
- public function __construct(PHPExcel $phpExcel) {
- $this->_phpExcel = $phpExcel;
- $this->_defaultFont = $this->_phpExcel->getDefaultStyle()->getFont();
- }
-
- /**
- * Save PHPExcel to file
- *
- * @param string $pFilename
- * @throws Exception
- */
- public function save($pFilename = null) {
- // garbage collect
- $this->_phpExcel->garbageCollect();
-
- $saveDebugLog = PHPExcel_Calculation::getInstance()->writeDebugLog;
- PHPExcel_Calculation::getInstance()->writeDebugLog = false;
- $saveArrayReturnType = PHPExcel_Calculation::getArrayReturnType();
- PHPExcel_Calculation::setArrayReturnType(PHPExcel_Calculation::RETURN_ARRAY_AS_VALUE);
-
- // Build CSS
- $this->buildCSS(!$this->_useInlineCss);
-
- // Open file
- $fileHandle = fopen($pFilename, 'wb+');
- if ($fileHandle === false) {
- throw new Exception("Could not open file $pFilename for writing.");
- }
-
- // Write headers
- fwrite($fileHandle, $this->generateHTMLHeader(!$this->_useInlineCss));
-
- // Write navigation (tabs)
- if ((!$this->_isPdf) && ($this->_generateSheetNavigationBlock)) {
- fwrite($fileHandle, $this->generateNavigation());
- }
-
- // Write data
- fwrite($fileHandle, $this->generateSheetData());
-
- // Write footer
- fwrite($fileHandle, $this->generateHTMLFooter());
-
- // Close file
- fclose($fileHandle);
-
- PHPExcel_Calculation::setArrayReturnType($saveArrayReturnType);
- PHPExcel_Calculation::getInstance()->writeDebugLog = $saveDebugLog;
- }
-
- /**
- * Map VAlign
- *
- * @param string $vAlign Vertical alignment
- * @return string
- */
- private function _mapVAlign($vAlign) {
- switch ($vAlign) {
- case PHPExcel_Style_Alignment::VERTICAL_BOTTOM: return 'bottom';
- case PHPExcel_Style_Alignment::VERTICAL_TOP: return 'top';
- case PHPExcel_Style_Alignment::VERTICAL_CENTER:
- case PHPExcel_Style_Alignment::VERTICAL_JUSTIFY: return 'middle';
- default: return 'baseline';
- }
- }
-
- /**
- * Map HAlign
- *
- * @param string $hAlign Horizontal alignment
- * @return string|false
- */
- private function _mapHAlign($hAlign) {
- switch ($hAlign) {
- case PHPExcel_Style_Alignment::HORIZONTAL_GENERAL: return false;
- case PHPExcel_Style_Alignment::HORIZONTAL_LEFT: return 'left';
- case PHPExcel_Style_Alignment::HORIZONTAL_RIGHT: return 'right';
- case PHPExcel_Style_Alignment::HORIZONTAL_CENTER:
- case PHPExcel_Style_Alignment::HORIZONTAL_CENTER_CONTINUOUS: return 'center';
- case PHPExcel_Style_Alignment::HORIZONTAL_JUSTIFY: return 'justify';
- default: return false;
- }
- }
-
- /**
- * Map border style
- *
- * @param int $borderStyle Sheet index
- * @return string
- */
- private function _mapBorderStyle($borderStyle) {
- switch ($borderStyle) {
- case PHPExcel_Style_Border::BORDER_NONE: return 'none';
- case PHPExcel_Style_Border::BORDER_DASHDOT: return '1px dashed';
- case PHPExcel_Style_Border::BORDER_DASHDOTDOT: return '1px dotted';
- case PHPExcel_Style_Border::BORDER_DASHED: return '1px dashed';
- case PHPExcel_Style_Border::BORDER_DOTTED: return '1px dotted';
- case PHPExcel_Style_Border::BORDER_DOUBLE: return '3px double';
- case PHPExcel_Style_Border::BORDER_HAIR: return '1px solid';
- case PHPExcel_Style_Border::BORDER_MEDIUM: return '2px solid';
- case PHPExcel_Style_Border::BORDER_MEDIUMDASHDOT: return '2px dashed';
- case PHPExcel_Style_Border::BORDER_MEDIUMDASHDOTDOT: return '2px dotted';
- case PHPExcel_Style_Border::BORDER_MEDIUMDASHED: return '2px dashed';
- case PHPExcel_Style_Border::BORDER_SLANTDASHDOT: return '2px dashed';
- case PHPExcel_Style_Border::BORDER_THICK: return '3px solid';
- case PHPExcel_Style_Border::BORDER_THIN: return '1px solid';
- default: return '1px solid'; // map others to thin
- }
- }
-
- /**
- * Get sheet index
- *
- * @return int
- */
- public function getSheetIndex() {
- return $this->_sheetIndex;
- }
-
- /**
- * Set sheet index
- *
- * @param int $pValue Sheet index
- * @return PHPExcel_Writer_HTML
- */
- public function setSheetIndex($pValue = 0) {
- $this->_sheetIndex = $pValue;
- return $this;
- }
-
- /**
- * Get sheet index
- *
- * @return boolean
- */
- public function getGenerateSheetNavigationBlock() {
- return $this->_generateSheetNavigationBlock;
- }
-
- /**
- * Set sheet index
- *
- * @param boolean $pValue Flag indicating whether the sheet navigation block should be generated or not
- * @return PHPExcel_Writer_HTML
- */
- public function setGenerateSheetNavigationBlock($pValue = true) {
- $this->_generateSheetNavigationBlock = (bool) $pValue;
- return $this;
- }
-
- /**
- * Write all sheets (resets sheetIndex to NULL)
- */
- public function writeAllSheets() {
- $this->_sheetIndex = null;
- return $this;
- }
-
- /**
- * Generate HTML header
- *
- * @param boolean $pIncludeStyles Include styles?
- * @return string
- * @throws Exception
- */
- public function generateHTMLHeader($pIncludeStyles = false) {
- // PHPExcel object known?
- if (is_null($this->_phpExcel)) {
- throw new Exception('Internal PHPExcel object not set to an instance of an object.');
- }
-
- // Construct HTML
- $properties = $this->_phpExcel->getProperties();
- $html = '<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">' . PHP_EOL;
- $html .= '<!-- Generated by PHPExcel - http://www.phpexcel.net -->' . PHP_EOL;
- $html .= '<html>' . PHP_EOL;
- $html .= ' <head>' . PHP_EOL;
- $html .= ' <meta http-equiv="Content-Type" content="text/html; charset=utf-8">' . PHP_EOL;
- if ($properties->getTitle() > '')
- $html .= ' <title>' . htmlspecialchars($properties->getTitle()) . '</title>' . PHP_EOL;
-
- if ($properties->getCreator() > '')
- $html .= ' <meta name="author" content="' . htmlspecialchars($properties->getCreator()) . '" />' . PHP_EOL;
- if ($properties->getTitle() > '')
- $html .= ' <meta name="title" content="' . htmlspecialchars($properties->getTitle()) . '" />' . PHP_EOL;
- if ($properties->getDescription() > '')
- $html .= ' <meta name="description" content="' . htmlspecialchars($properties->getDescription()) . '" />' . PHP_EOL;
- if ($properties->getSubject() > '')
- $html .= ' <meta name="subject" content="' . htmlspecialchars($properties->getSubject()) . '" />' . PHP_EOL;
- if ($properties->getKeywords() > '')
- $html .= ' <meta name="keywords" content="' . htmlspecialchars($properties->getKeywords()) . '" />' . PHP_EOL;
- if ($properties->getCategory() > '')
- $html .= ' <meta name="category" content="' . htmlspecialchars($properties->getCategory()) . '" />' . PHP_EOL;
- if ($properties->getCompany() > '')
- $html .= ' <meta name="company" content="' . htmlspecialchars($properties->getCompany()) . '" />' . PHP_EOL;
- if ($properties->getManager() > '')
- $html .= ' <meta name="manager" content="' . htmlspecialchars($properties->getManager()) . '" />' . PHP_EOL;
-
- if ($pIncludeStyles) {
- $html .= $this->generateStyles(true);
- }
-
- $html .= ' </head>' . PHP_EOL;
- $html .= '' . PHP_EOL;
- $html .= ' <body>' . PHP_EOL;
-
- // Return
- return $html;
- }
-
- /**
- * Generate sheet data
- *
- * @return string
- * @throws Exception
- */
- public function generateSheetData() {
- // PHPExcel object known?
- if (is_null($this->_phpExcel)) {
- throw new Exception('Internal PHPExcel object not set to an instance of an object.');
- }
-
- // Ensure that Spans have been calculated?
- if (!$this->_spansAreCalculated) {
- $this->_calculateSpans();
- }
-
- // Fetch sheets
- $sheets = array();
- if (is_null($this->_sheetIndex)) {
- $sheets = $this->_phpExcel->getAllSheets();
- } else {
- $sheets[] = $this->_phpExcel->getSheet($this->_sheetIndex);
- }
-
- // Construct HTML
- $html = '';
-
- // Loop all sheets
- $sheetId = 0;
- foreach ($sheets as $sheet) {
- // Write table header
- $html .= $this->_generateTableHeader($sheet);
-
- // Get worksheet dimension
- $dimension = explode(':', $sheet->calculateWorksheetDimension());
- $dimension[0] = PHPExcel_Cell::coordinateFromString($dimension[0]);
- $dimension[0][0] = PHPExcel_Cell::columnIndexFromString($dimension[0][0]) - 1;
- $dimension[1] = PHPExcel_Cell::coordinateFromString($dimension[1]);
- $dimension[1][0] = PHPExcel_Cell::columnIndexFromString($dimension[1][0]) - 1;
-
- // row min,max
- $rowMin = $dimension[0][1];
- $rowMax = $dimension[1][1];
-
- // calculate start of <tbody>, <thead>
- $tbodyStart = $rowMin;
- $tbodyEnd = $rowMax;
- $theadStart = $theadEnd = 0; // default: no <thead> no </thead>
- if ($sheet->getPageSetup()->isRowsToRepeatAtTopSet()) {
- $rowsToRepeatAtTop = $sheet->getPageSetup()->getRowsToRepeatAtTop();
-
- // we can only support repeating rows that start at top row
- if ($rowsToRepeatAtTop[0] == 1) {
- $theadStart = $rowsToRepeatAtTop[0];
- $theadEnd = $rowsToRepeatAtTop[1];
- $tbodyStart = $rowsToRepeatAtTop[1] + 1;
- }
- }
-
- // Loop through cells
- $row = $rowMin-1;
- while($row++ < $rowMax) {
- // <thead> ?
- if ($row == $theadStart) {
- $html .= ' <thead>' . PHP_EOL;
- }
-
- // <tbody> ?
- if ($row == $tbodyStart) {
- $html .= ' <tbody>' . PHP_EOL;
- }
-
- // Write row if there are HTML table cells in it
- if ( !isset($this->_isSpannedRow[$sheet->getParent()->getIndex($sheet)][$row]) ) {
- // Start a new rowData
- $rowData = array();
- // Loop through columns
- $column = $dimension[0][0] - 1;
- while($column++ < $dimension[1][0]) {
- // Cell exists?
- if ($sheet->cellExistsByColumnAndRow($column, $row)) {
- $rowData[$column] = $sheet->getCellByColumnAndRow($column, $row);
- } else {
- $rowData[$column] = '';
- }
- }
- $html .= $this->_generateRow($sheet, $rowData, $row - 1);
- }
-
- // </thead> ?
- if ($row == $theadEnd) {
- $html .= ' </thead>' . PHP_EOL;
- }
-
- // </tbody> ?
- if ($row == $tbodyEnd) {
- $html .= ' </tbody>' . PHP_EOL;
- }
- }
-
- // Write table footer
- $html .= $this->_generateTableFooter();
-
- // Writing PDF?
- if ($this->_isPdf) {
- if (is_null($this->_sheetIndex) && $sheetId + 1 < $this->_phpExcel->getSheetCount()) {
- $html .= '<div style="page-break-before:always" />';
- }
- }
-
- // Next sheet
- ++$sheetId;
- }
-
- // Return
- return $html;
- }
-
- /**
- * Generate sheet tabs
- *
- * @return string
- * @throws Exception
- */
- public function generateNavigation()
- {
- // PHPExcel object known?
- if (is_null($this->_phpExcel)) {
- throw new Exception('Internal PHPExcel object not set to an instance of an object.');
- }
-
- // Fetch sheets
- $sheets = array();
- if (is_null($this->_sheetIndex)) {
- $sheets = $this->_phpExcel->getAllSheets();
- } else {
- $sheets[] = $this->_phpExcel->getSheet($this->_sheetIndex);
- }
-
- // Construct HTML
- $html = '';
-
- // Only if there are more than 1 sheets
- if (count($sheets) > 1) {
- // Loop all sheets
- $sheetId = 0;
-
- $html .= '<ul class="navigation">' . PHP_EOL;
-
- foreach ($sheets as $sheet) {
- $html .= ' <li class="sheet' . $sheetId . '"><a href="#sheet' . $sheetId . '">' . $sheet->getTitle() . '</a></li>' . PHP_EOL;
- ++$sheetId;
- }
-
- $html .= '</ul>' . PHP_EOL;
- }
-
- return $html;
- }
-
- /**
- * Generate image tag in cell
- *
- * @param PHPExcel_Worksheet $pSheet PHPExcel_Worksheet
- * @param string $coordinates Cell coordinates
- * @return string
- * @throws Exception
- */
- private function _writeImageTagInCell(PHPExcel_Worksheet $pSheet, $coordinates) {
- // Construct HTML
- $html = '';
-
- // Write images
- foreach ($pSheet->getDrawingCollection() as $drawing) {
- if ($drawing instanceof PHPExcel_Worksheet_Drawing) {
- if ($drawing->getCoordinates() == $coordinates) {
- $filename = $drawing->getPath();
-
- // Strip off eventual '.'
- if (substr($filename, 0, 1) == '.') {
- $filename = substr($filename, 1);
- }
-
- // Prepend images root
- $filename = $this->getImagesRoot() . $filename;
-
- // Strip off eventual '.'
- if (substr($filename, 0, 1) == '.' && substr($filename, 0, 2) != './') {
- $filename = substr($filename, 1);
- }
-
- // Convert UTF8 data to PCDATA
- $filename = htmlspecialchars($filename);
-
- $html .= PHP_EOL;
- $html .= ' <img style="position: relative; left: ' . $drawing->getOffsetX() . 'px; top: ' . $drawing->getOffsetY() . 'px; width: ' . $drawing->getWidth() . 'px; height: ' . $drawing->getHeight() . 'px;" src="' . $filename . '" border="0" width="' . $drawing->getWidth() . '" height="' . $drawing->getHeight() . '" />' . PHP_EOL;
- }
- }
- }
-
- // Return
- return $html;
- }
-
- /**
- * Generate CSS styles
- *
- * @param boolean $generateSurroundingHTML Generate surrounding HTML tags? (<style> and </style>)
- * @return string
- * @throws Exception
- */
- public function generateStyles($generateSurroundingHTML = true) {
- // PHPExcel object known?
- if (is_null($this->_phpExcel)) {
- throw new Exception('Internal PHPExcel object not set to an instance of an object.');
- }
-
- // Build CSS
- $css = $this->buildCSS($generateSurroundingHTML);
-
- // Construct HTML
- $html = '';
-
- // Start styles
- if ($generateSurroundingHTML) {
- $html .= ' <style type="text/css">' . PHP_EOL;
- $html .= ' html { ' . $this->_assembleCSS($css['html']) . ' }' . PHP_EOL;
- }
-
- // Write all other styles
- foreach ($css as $styleName => $styleDefinition) {
- if ($styleName != 'html') {
- $html .= ' ' . $styleName . ' { ' . $this->_assembleCSS($styleDefinition) . ' }' . PHP_EOL;
- }
- }
-
- // End styles
- if ($generateSurroundingHTML) {
- $html .= ' </style>' . PHP_EOL;
- }
-
- // Return
- return $html;
- }
-
- /**
- * Build CSS styles
- *
- * @param boolean $generateSurroundingHTML Generate surrounding HTML style? (html { })
- * @return array
- * @throws Exception
- */
- public function buildCSS($generateSurroundingHTML = true) {
- // PHPExcel object known?
- if (is_null($this->_phpExcel)) {
- throw new Exception('Internal PHPExcel object not set to an instance of an object.');
- }
-
- // Cached?
- if (!is_null($this->_cssStyles)) {
- return $this->_cssStyles;
- }
-
- // Ensure that spans have been calculated
- if (!$this->_spansAreCalculated) {
- $this->_calculateSpans();
- }
-
- // Construct CSS
- $css = array();
-
- // Start styles
- if ($generateSurroundingHTML) {
- // html { }
- $css['html']['font-family'] = 'Calibri, Arial, Helvetica, sans-serif';
- $css['html']['font-size'] = '11pt';
- $css['html']['background-color'] = 'white';
- }
-
-
- // table { }
- $css['table']['border-collapse'] = 'collapse';
- if (!$this->_isPdf) {
- $css['table']['page-break-after'] = 'always';
- }
-
- // .gridlines td { }
- $css['.gridlines td']['border'] = '1px dotted black';
-
- // .b {}
- $css['.b']['text-align'] = 'center'; // BOOL
-
- // .e {}
- $css['.e']['text-align'] = 'center'; // ERROR
-
- // .f {}
- $css['.f']['text-align'] = 'right'; // FORMULA
-
- // .inlineStr {}
- $css['.inlineStr']['text-align'] = 'left'; // INLINE
-
- // .n {}
- $css['.n']['text-align'] = 'right'; // NUMERIC
-
- // .s {}
- $css['.s']['text-align'] = 'left'; // STRING
-
- // Calculate cell style hashes
- foreach ($this->_phpExcel->getCellXfCollection() as $index => $style) {
- $css['td.style' . $index] = $this->_createCSSStyle( $style );
- }
-
- // Fetch sheets
- $sheets = array();
- if (is_null($this->_sheetIndex)) {
- $sheets = $this->_phpExcel->getAllSheets();
- } else {
- $sheets[] = $this->_phpExcel->getSheet($this->_sheetIndex);
- }
-
- // Build styles per sheet
- foreach ($sheets as $sheet) {
- // Calculate hash code
- $sheetIndex = $sheet->getParent()->getIndex($sheet);
-
- // Build styles
- // Calculate column widths
- $sheet->calculateColumnWidths();
-
- // col elements, initialize
- $highestColumnIndex = PHPExcel_Cell::columnIndexFromString($sheet->getHighestColumn()) - 1;
- $column = -1;
- while($column++ < $highestColumnIndex) {
- $this->_columnWidths[$sheetIndex][$column] = 42; // approximation
- $css['table.sheet' . $sheetIndex . ' col.col' . $column]['width'] = '42pt';
- }
-
- // col elements, loop through columnDimensions and set width
- foreach ($sheet->getColumnDimensions() as $columnDimension) {
- if (($width = PHPExcel_Shared_Drawing::cellDimensionToPixels($columnDimension->getWidth(), $this->_defaultFont)) >= 0) {
- $width = PHPExcel_Shared_Drawing::pixelsToPoints($width);
- $column = PHPExcel_Cell::columnIndexFromString($columnDimension->getColumnIndex()) - 1;
- $this->_columnWidths[$sheetIndex][$column] = $width;
- $css['table.sheet' . $sheetIndex . ' col.col' . $column]['width'] = $width . 'pt';
-
- if ($columnDimension->getVisible() === false) {
- $css['table.sheet' . $sheetIndex . ' col.col' . $column]['visibility'] = 'collapse';
- $css['table.sheet' . $sheetIndex . ' col.col' . $column]['*display'] = 'none'; // target IE6+7
- }
- }
- }
-
- // Default row height
- $rowDimension = $sheet->getDefaultRowDimension();
-
- // table.sheetN tr { }
- $css['table.sheet' . $sheetIndex . ' tr'] = array();
-
- if ($rowDimension->getRowHeight() == -1) {
- $pt_height = PHPExcel_Shared_Font::getDefaultRowHeightByFont($this->_phpExcel->getDefaultStyle()->getFont());
- } else {
- $pt_height = $rowDimension->getRowHeight();
- }
- $css['table.sheet' . $sheetIndex . ' tr']['height'] = $pt_height . 'pt';
- if ($rowDimension->getVisible() === false) {
- $css['table.sheet' . $sheetIndex . ' tr']['display'] = 'none';
- $css['table.sheet' . $sheetIndex . ' tr']['visibility'] = 'hidden';
- }
-
- // Calculate row heights
- foreach ($sheet->getRowDimensions() as $rowDimension) {
- $row = $rowDimension->getRowIndex() - 1;
-
- // table.sheetN tr.rowYYYYYY { }
- $css['table.sheet' . $sheetIndex . ' tr.row' . $row] = array();
-
- if ($rowDimension->getRowHeight() == -1) {
- $pt_height = PHPExcel_Shared_Font::getDefaultRowHeightByFont($this->_phpExcel->getDefaultStyle()->getFont());
- } else {
- $pt_height = $rowDimension->getRowHeight();
- }
- $css['table.sheet' . $sheetIndex . ' tr.row' . $row]['height'] = $pt_height . 'pt';
- if ($rowDimension->getVisible() === false) {
- $css['table.sheet' . $sheetIndex . ' tr.row' . $row]['display'] = 'none';
- $css['table.sheet' . $sheetIndex . ' tr.row' . $row]['visibility'] = 'hidden';
- }
- }
- }
-
- // Cache
- if (is_null($this->_cssStyles)) {
- $this->_cssStyles = $css;
- }
-
- // Return
- return $css;
- }
-
- /**
- * Create CSS style
- *
- * @param PHPExcel_Style $pStyle PHPExcel_Style
- * @return array
- */
- private function _createCSSStyle(PHPExcel_Style $pStyle) {
- // Construct CSS
- $css = '';
-
- // Create CSS
- $css = array_merge(
- $this->_createCSSStyleAlignment($pStyle->getAlignment())
- , $this->_createCSSStyleBorders($pStyle->getBorders())
- , $this->_createCSSStyleFont($pStyle->getFont())
- , $this->_createCSSStyleFill($pStyle->getFill())
- );
-
- // Return
- return $css;
- }
-
- /**
- * Create CSS style (PHPExcel_Style_Alignment)
- *
- * @param PHPExcel_Style_Alignment $pStyle PHPExcel_Style_Alignment
- * @return array
- */
- private function _createCSSStyleAlignment(PHPExcel_Style_Alignment $pStyle) {
- // Construct CSS
- $css = array();
-
- // Create CSS
- $css['vertical-align'] = $this->_mapVAlign($pStyle->getVertical());
- if ($textAlign = $this->_mapHAlign($pStyle->getHorizontal())) {
- $css['text-align'] = $textAlign;
- if(in_array($textAlign,array('left','right')))
- $css['padding-'.$textAlign] = (string)((int)$pStyle->getIndent() * 9).'px';
- }
-
- // Return
- return $css;
- }
-
- /**
- * Create CSS style (PHPExcel_Style_Font)
- *
- * @param PHPExcel_Style_Font $pStyle PHPExcel_Style_Font
- * @return array
- */
- private function _createCSSStyleFont(PHPExcel_Style_Font $pStyle) {
- // Construct CSS
- $css = array();
-
- // Create CSS
- if ($pStyle->getBold()) {
- $css['font-weight'] = 'bold';
- }
- if ($pStyle->getUnderline() != PHPExcel_Style_Font::UNDERLINE_NONE && $pStyle->getStrikethrough()) {
- $css['text-decoration'] = 'underline line-through';
- } else if ($pStyle->getUnderline() != PHPExcel_Style_Font::UNDERLINE_NONE) {
- $css['text-decoration'] = 'underline';
- } else if ($pStyle->getStrikethrough()) {
- $css['text-decoration'] = 'line-through';
- }
- if ($pStyle->getItalic()) {
- $css['font-style'] = 'italic';
- }
-
- $css['color'] = '#' . $pStyle->getColor()->getRGB();
- $css['font-family'] = '\'' . $pStyle->getName() . '\'';
- $css['font-size'] = $pStyle->getSize() . 'pt';
-
- // Return
- return $css;
- }
-
- /**
- * Create CSS style (PHPExcel_Style_Borders)
- *
- * @param PHPExcel_Style_Borders $pStyle PHPExcel_Style_Borders
- * @return array
- */
- private function _createCSSStyleBorders(PHPExcel_Style_Borders $pStyle) {
- // Construct CSS
- $css = array();
-
- // Create CSS
- $css['border-bottom'] = $this->_createCSSStyleBorder($pStyle->getBottom());
- $css['border-top'] = $this->_createCSSStyleBorder($pStyle->getTop());
- $css['border-left'] = $this->_createCSSStyleBorder($pStyle->getLeft());
- $css['border-right'] = $this->_createCSSStyleBorder($pStyle->getRight());
-
- // Return
- return $css;
- }
-
- /**
- * Create CSS style (PHPExcel_Style_Border)
- *
- * @param PHPExcel_Style_Border $pStyle PHPExcel_Style_Border
- * @return string
- */
- private function _createCSSStyleBorder(PHPExcel_Style_Border $pStyle) {
- // Create CSS
- $css = $this->_mapBorderStyle($pStyle->getBorderStyle()) . ' #' . $pStyle->getColor()->getRGB();
-
- // Return
- return $css;
- }
-
- /**
- * Create CSS style (PHPExcel_Style_Fill)
- *
- * @param PHPExcel_Style_Fill $pStyle PHPExcel_Style_Fill
- * @return array
- */
- private function _createCSSStyleFill(PHPExcel_Style_Fill $pStyle) {
- // Construct HTML
- $css = array();
-
- // Create CSS
- $value = $pStyle->getFillType() == PHPExcel_Style_Fill::FILL_NONE ?
- 'white' : '#' . $pStyle->getStartColor()->getRGB();
- $css['background-color'] = $value;
-
- // Return
- return $css;
- }
-
- /**
- * Generate HTML footer
- */
- public function generateHTMLFooter() {
- // Construct HTML
- $html = '';
- $html .= ' </body>' . PHP_EOL;
- $html .= '</html>' . PHP_EOL;
-
- // Return
- return $html;
- }
-
- /**
- * Generate table header
- *
- * @param PHPExcel_Worksheet $pSheet The worksheet for the table we are writing
- * @return string
- * @throws Exception
- */
- private function _generateTableHeader($pSheet) {
- $sheetIndex = $pSheet->getParent()->getIndex($pSheet);
-
- // Construct HTML
- $html = '';
-
- if (!$this->_useInlineCss) {
- $gridlines = $pSheet->getShowGridLines() ? ' gridlines' : '';
- $html .= ' <table border="0" cellpadding="0" cellspacing="0" id="sheet' . $sheetIndex . '" class="sheet' . $sheetIndex . $gridlines . '">' . PHP_EOL;
- } else {
- $style = isset($this->_cssStyles['table']) ?
- $this->_assembleCSS($this->_cssStyles['table']) : '';
-
- if ($this->_isPdf && $pSheet->getShowGridLines()) {
- $html .= ' <table border="1" cellpadding="1" id="sheet' . $sheetIndex . '" cellspacing="4" style="' . $style . '">' . PHP_EOL;
- } else {
- $html .= ' <table border="0" cellpadding="1" id="sheet' . $sheetIndex . '" cellspacing="4" style="' . $style . '">' . PHP_EOL;
- }
- }
-
- // Write <col> elements
- $highestColumnIndex = PHPExcel_Cell::columnIndexFromString($pSheet->getHighestColumn()) - 1;
- $i = -1;
- while($i++ < $highestColumnIndex) {
- if (!$this->_isPdf) {
- if (!$this->_useInlineCss) {
- $html .= ' <col class="col' . $i . '">' . PHP_EOL;
- } else {
- $style = isset($this->_cssStyles['table.sheet' . $sheetIndex . ' col.col' . $i]) ?
- $this->_assembleCSS($this->_cssStyles['table.sheet' . $sheetIndex . ' col.col' . $i]) : '';
- $html .= ' <col style="' . $style . '">' . PHP_EOL;
- }
- }
- }
-
- // Return
- return $html;
- }
-
- /**
- * Generate table footer
- *
- * @throws Exception
- */
- private function _generateTableFooter() {
- // Construct HTML
- $html = '';
- $html .= ' </table>' . PHP_EOL;
-
- // Return
- return $html;
- }
-
- /**
- * Generate row
- *
- * @param PHPExcel_Worksheet $pSheet PHPExcel_Worksheet
- * @param array $pValues Array containing cells in a row
- * @param int $pRow Row number (0-based)
- * @return string
- * @throws Exception
- */
- private function _generateRow(PHPExcel_Worksheet $pSheet, $pValues = null, $pRow = 0) {
- if (is_array($pValues)) {
- // Construct HTML
- $html = '';
-
- // Sheet index
- $sheetIndex = $pSheet->getParent()->getIndex($pSheet);
-
- // DomPDF and breaks
- if ($this->_isPdf && count($pSheet->getBreaks()) > 0) {
- $breaks = $pSheet->getBreaks();
-
- // check if a break is needed before this row
- if (isset($breaks['A' . $pRow])) {
- // close table: </table>
- $html .= $this->_generateTableFooter();
-
- // insert page break
- $html .= '<div style="page-break-before:always" />';
-
- // open table again: <table> + <col> etc.
- $html .= $this->_generateTableHeader($pSheet);
- }
- }
-
- // Write row start
- if (!$this->_useInlineCss) {
- $html .= ' <tr class="row' . $pRow . '">' . PHP_EOL;
- } else {
- $style = isset($this->_cssStyles['table.sheet' . $sheetIndex . ' tr.row' . $pRow])
- ? $this->_assembleCSS($this->_cssStyles['table.sheet' . $sheetIndex . ' tr.row' . $pRow]) : '';
-
- $html .= ' <tr style="' . $style . '">' . PHP_EOL;
- }
-
- // Write cells
- $colNum = 0;
- foreach ($pValues as $cell) {
- $coordinate = PHPExcel_Cell::stringFromColumnIndex($colNum) . ($pRow + 1);
-
- if (!$this->_useInlineCss) {
- $cssClass = '';
- $cssClass = 'column' . $colNum;
- } else {
- $cssClass = array();
- if (isset($this->_cssStyles['table.sheet' . $sheetIndex . ' td.column' . $colNum])) {
- $this->_cssStyles['table.sheet' . $sheetIndex . ' td.column' . $colNum];
- }
- }
- $colSpan = 1;
- $rowSpan = 1;
-
- // initialize
- $cellData = '';
-
- // PHPExcel_Cell
- if ($cell instanceof PHPExcel_Cell) {
- if (is_null($cell->getParent())) {
- $cell->attach($pSheet);
- }
- // Value
- if ($cell->getValue() instanceof PHPExcel_RichText) {
- // Loop through rich text elements
- $elements = $cell->getValue()->getRichTextElements();
- foreach ($elements as $element) {
- // Rich text start?
- if ($element instanceof PHPExcel_RichText_Run) {
- $cellData .= '<span style="' . $this->_assembleCSS($this->_createCSSStyleFont($element->getFont())) . '">';
-
- if ($element->getFont()->getSuperScript()) {
- $cellData .= '<sup>';
- } else if ($element->getFont()->getSubScript()) {
- $cellData .= '<sub>';
- }
- }
-
- // Convert UTF8 data to PCDATA
- $cellText = $element->getText();
- $cellData .= htmlspecialchars($cellText);
-
- if ($element instanceof PHPExcel_RichText_Run) {
- if ($element->getFont()->getSuperScript()) {
- $cellData .= '</sup>';
- } else if ($element->getFont()->getSubScript()) {
- $cellData .= '</sub>';
- }
-
- $cellData .= '</span>';
- }
- }
- } else {
- if ($this->_preCalculateFormulas) {
- $cellData = PHPExcel_Style_NumberFormat::toFormattedString(
- $cell->getCalculatedValue(),
- $pSheet->getParent()->getCellXfByIndex( $cell->getXfIndex() )->getNumberFormat()->getFormatCode(),
- array($this, 'formatColor')
- );
- } else {
- $cellData = PHPExcel_Style_NumberFormat::ToFormattedString(
- $cell->getValue(),
- $pSheet->getParent()->getCellXfByIndex( $cell->getXfIndex() )->getNumberFormat()->getFormatCode(),
- array($this, 'formatColor')
- );
- }
- $cellData = htmlspecialchars($cellData);
- if ($pSheet->getParent()->getCellXfByIndex( $cell->getXfIndex() )->getFont()->getSuperScript()) {
- $cellData = '<sup>'.$cellData.'</sup>';
- } elseif ($pSheet->getParent()->getCellXfByIndex( $cell->getXfIndex() )->getFont()->getSubScript()) {
- $cellData = '<sub>'.$cellData.'</sub>';
- }
- }
-
- // Converts the cell content so that spaces occuring at beginning of each new line are replaced by &nbsp;
- // Example: " Hello\n to the world" is converted to "&nbsp;&nbsp;Hello\n&nbsp;to the world"
- $cellData = preg_replace("/(?m)(?:^|\\G) /", '&nbsp;', $cellData);
-
- // convert newline "\n" to '<br>'
- $cellData = nl2br($cellData);
-
- // Extend CSS class?
- if (!$this->_useInlineCss) {
- $cssClass .= ' style' . $cell->getXfIndex();
- $cssClass .= ' ' . $cell->getDataType();
- } else {
- if (isset($this->_cssStyles['td.style' . $cell->getXfIndex()])) {
- $cssClass = array_merge($cssClass, $this->_cssStyles['td.style' . $cell->getXfIndex()]);
- }
-
- // General horizontal alignment: Actual horizontal alignment depends on dataType
- $sharedStyle = $pSheet->getParent()->getCellXfByIndex( $cell->getXfIndex() );
- if ($sharedStyle->getAlignment()->getHorizontal() == PHPExcel_Style_Alignment::HORIZONTAL_GENERAL
- && isset($this->_cssStyles['.' . $cell->getDataType()]['text-align']))
- {
- $cssClass['text-align'] = $this->_cssStyles['.' . $cell->getDataType()]['text-align'];
- }
- }
- }
-
- // Hyperlink?
- if ($pSheet->hyperlinkExists($coordinate) && !$pSheet->getHyperlink($coordinate)->isInternal()) {
- $cellData = '<a href="' . htmlspecialchars($pSheet->getHyperlink($coordinate)->getUrl()) . '" title="' . htmlspecialchars($pSheet->getHyperlink($coordinate)->getTooltip()) . '">' . $cellData . '</a>';
- }
-
- // Should the cell be written or is it swallowed by a rowspan or colspan?
- $writeCell = ! ( isset($this->_isSpannedCell[$pSheet->getParent()->getIndex($pSheet)][$pRow + 1][$colNum])
- && $this->_isSpannedCell[$pSheet->getParent()->getIndex($pSheet)][$pRow + 1][$colNum] );
-
- // Colspan and Rowspan
- $colspan = 1;
- $rowspan = 1;
- if (isset($this->_isBaseCell[$pSheet->getParent()->getIndex($pSheet)][$pRow + 1][$colNum])) {
- $spans = $this->_isBaseCell[$pSheet->getParent()->getIndex($pSheet)][$pRow + 1][$colNum];
- $rowSpan = $spans['rowspan'];
- $colSpan = $spans['colspan'];
- }
-
- // Write
- if ($writeCell) {
- // Column start
- $html .= ' <td';
- if (!$this->_useInlineCss) {
- $html .= ' class="' . $cssClass . '"';
- } else {
- //** Necessary redundant code for the sake of PHPExcel_Writer_PDF **
- // We must explicitly write the width of the <td> element because TCPDF
- // does not recognize e.g. <col style="width:42pt">
- $width = 0;
- $i = $colNum - 1;
- $e = $colNum + $colSpan - 1;
- while($i++ < $e) {
- if (isset($this->_columnWidths[$sheetIndex][$i])) {
- $width += $this->_columnWidths[$sheetIndex][$i];
- }
- }
- $cssClass['width'] = $width . 'pt';
-
- // We must also explicitly write the height of the <td> element because TCPDF
- // does not recognize e.g. <tr style="height:50pt">
- if (isset($this->_cssStyles['table.sheet' . $sheetIndex . ' tr.row' . $pRow]['height'])) {
- $height = $this->_cssStyles['table.sheet' . $sheetIndex . ' tr.row' . $pRow]['height'];
- $cssClass['height'] = $height;
- }
- //** end of redundant code **
-
- $html .= ' style="' . $this->_assembleCSS($cssClass) . '"';
- }
- if ($colSpan > 1) {
- $html .= ' colspan="' . $colSpan . '"';
- }
- if ($rowSpan > 1) {
- $html .= ' rowspan="' . $rowSpan . '"';
- }
- $html .= '>';
-
- // Image?
- $html .= $this->_writeImageTagInCell($pSheet, $coordinate);
-
- // Cell data
- $html .= $cellData;
-
- // Column end
- $html .= '</td>' . PHP_EOL;
- }
-
- // Next column
- ++$colNum;
- }
-
- // Write row end
- $html .= ' </tr>' . PHP_EOL;
-
- // Return
- return $html;
- } else {
- throw new Exception("Invalid parameters passed.");
- }
- }
-
- /**
- * Takes array where of CSS properties / values and converts to CSS string
- *
- * @param array
- * @return string
- */
- private function _assembleCSS($pValue = array())
- {
- $pairs = array();
- foreach ($pValue as $property => $value) {
- $pairs[] = $property . ':' . $value;
- }
- $string = implode('; ', $pairs);
-
- return $string;
- }
-
- /**
- * Get Pre-Calculate Formulas
- *
- * @return boolean
- */
- public function getPreCalculateFormulas() {
- return $this->_preCalculateFormulas;
- }
-
- /**
- * Set Pre-Calculate Formulas
- *
- * @param boolean $pValue Pre-Calculate Formulas?
- * @return PHPExcel_Writer_HTML
- */
- public function setPreCalculateFormulas($pValue = true) {
- $this->_preCalculateFormulas = $pValue;
- return $this;
- }
-
- /**
- * Get images root
- *
- * @return string
- */
- public function getImagesRoot() {
- return $this->_imagesRoot;
- }
-
- /**
- * Set images root
- *
- * @param string $pValue
- * @return PHPExcel_Writer_HTML
- */
- public function setImagesRoot($pValue = '.') {
- $this->_imagesRoot = $pValue;
- return $this;
- }
-
- /**
- * Get use inline CSS?
- *
- * @return boolean
- */
- public function getUseInlineCss() {
- return $this->_useInlineCss;
- }
-
- /**
- * Set use inline CSS?
- *
- * @param boolean $pValue
- * @return PHPExcel_Writer_HTML
- */
- public function setUseInlineCss($pValue = false) {
- $this->_useInlineCss = $pValue;
- return $this;
- }
-
- /**
- * Add color to formatted string as inline style
- *
- * @param string $pValue Plain formatted value without color
- * @param string $pFormat Format code
- * @return string
- */
- public function formatColor($pValue, $pFormat)
- {
- // Color information, e.g. [Red] is always at the beginning
- $color = null; // initialize
- $matches = array();
-
- $color_regex = '/^\\[[a-zA-Z]+\\]/';
- if (preg_match($color_regex, $pFormat, $matches)) {
- $color = str_replace('[', '', $matches[0]);
- $color = str_replace(']', '', $color);
- $color = strtolower($color);
- }
-
- // convert to PCDATA
- $value = htmlspecialchars($pValue);
-
- // color span tag
- if ($color !== null) {
- $value = '<span style="color:' . $color . '">' . $value . '</span>';
- }
-
- return $value;
- }
-
- /**
- * Calculate information about HTML colspan and rowspan which is not always the same as Excel's
- */
- private function _calculateSpans()
- {
- // Identify all cells that should be omitted in HTML due to cell merge.
- // In HTML only the upper-left cell should be written and it should have
- // appropriate rowspan / colspan attribute
- $sheetIndexes = $this->_sheetIndex !== null ?
- array($this->_sheetIndex) : range(0, $this->_phpExcel->getSheetCount() - 1);
-
- foreach ($sheetIndexes as $sheetIndex) {
- $sheet = $this->_phpExcel->getSheet($sheetIndex);
-
- $candidateSpannedRow = array();
-
- // loop through all Excel merged cells
- foreach ($sheet->getMergeCells() as $cells) {
- list($cells, ) = PHPExcel_Cell::splitRange($cells);
- $first = $cells[0];
- $last = $cells[1];
-
- list($fc, $fr) = PHPExcel_Cell::coordinateFromString($first);
- $fc = PHPExcel_Cell::columnIndexFromString($fc) - 1;
-
- list($lc, $lr) = PHPExcel_Cell::coordinateFromString($last);
- $lc = PHPExcel_Cell::columnIndexFromString($lc) - 1;
-
- // loop through the individual cells in the individual merge
- $r = $fr - 1;
- while($r++ < $lr) {
- // also, flag this row as a HTML row that is candidate to be omitted
- $candidateSpannedRow[$r] = $r;
-
- $c = $fc - 1;
- while($c++ < $lc) {
- if ( !($c == $fc && $r == $fr) ) {
- // not the upper-left cell (should not be written in HTML)
- $this->_isSpannedCell[$sheetIndex][$r][$c] = array(
- 'baseCell' => array($fr, $fc),
- );
- } else {
- // upper-left is the base cell that should hold the colspan/rowspan attribute
- $this->_isBaseCell[$sheetIndex][$r][$c] = array(
- 'xlrowspan' => $lr - $fr + 1, // Excel rowspan
- 'rowspan' => $lr - $fr + 1, // HTML rowspan, value may change
- 'xlcolspan' => $lc - $fc + 1, // Excel colspan
- 'colspan' => $lc - $fc + 1, // HTML colspan, value may change
- );
- }
- }
- }
- }
-
- // Identify which rows should be omitted in HTML. These are the rows where all the cells
- // participate in a merge and the where base cells are somewhere above.
- $countColumns = PHPExcel_Cell::columnIndexFromString($sheet->getHighestColumn());
- foreach ($candidateSpannedRow as $rowIndex) {
- if (isset($this->_isSpannedCell[$sheetIndex][$rowIndex])) {
- if (count($this->_isSpannedCell[$sheetIndex][$rowIndex]) == $countColumns) {
- $this->_isSpannedRow[$sheetIndex][$rowIndex] = $rowIndex;
- };
- }
- }
-
- // For each of the omitted rows we found above, the affected rowspans should be subtracted by 1
- if ( isset($this->_isSpannedRow[$sheetIndex]) ) {
- foreach ($this->_isSpannedRow[$sheetIndex] as $rowIndex) {
- $adjustedBaseCells = array();
- $c = -1;
- $e = $countColumns - 1;
- while($c++ < $e) {
- $baseCell = $this->_isSpannedCell[$sheetIndex][$rowIndex][$c]['baseCell'];
-
- if ( !in_array($baseCell, $adjustedBaseCells) ) {
- // subtract rowspan by 1
- --$this->_isBaseCell[$sheetIndex][ $baseCell[0] ][ $baseCell[1] ]['rowspan'];
- $adjustedBaseCells[] = $baseCell;
- }
- }
- }
- }
-
- // TODO: Same for columns
- }
-
- // We have calculated the spans
- $this->_spansAreCalculated = true;
- }
-
-}
diff --git a/admin/survey/excel/PHPExcel/Writer/IWriter.php b/admin/survey/excel/PHPExcel/Writer/IWriter.php
deleted file mode 100644
index 55dc87e..0000000
--- a/admin/survey/excel/PHPExcel/Writer/IWriter.php
+++ /dev/null
@@ -1,45 +0,0 @@
-<?php
-/**
- * PHPExcel
- *
- * Copyright (c) 2006 - 2012 PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel_Writer
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-
-/**
- * PHPExcel_Writer_IWriter
- *
- * @category PHPExcel
- * @package PHPExcel_Writer
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- */
-interface PHPExcel_Writer_IWriter
-{
- /**
- * Save PHPExcel to file
- *
- * @param string $pFilename
- * @throws Exception
- */
- public function save($pFilename = null);
-}
diff --git a/admin/survey/excel/PHPExcel/Writer/PDF.php b/admin/survey/excel/PHPExcel/Writer/PDF.php
deleted file mode 100644
index 33a2a9b..0000000
--- a/admin/survey/excel/PHPExcel/Writer/PDF.php
+++ /dev/null
@@ -1,76 +0,0 @@
-<?php
-/**
- * PHPExcel
- *
- * Copyright (c) 2006 - 2012 PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel_Writer
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-
-/**
- * PHPExcel_Writer_PDF
- *
- * @category PHPExcel
- * @package PHPExcel_Writer
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- */
-class PHPExcel_Writer_PDF {
-
- private $_renderer = NULL;
-
- /**
- * Create a new PHPExcel_Writer_PDF
- *
- * @param PHPExcel $phpExcel PHPExcel object
- */
- public function __construct(PHPExcel $phpExcel) {
-
- $pdfLibraryName = PHPExcel_Settings::getPdfRendererName();
- if (is_null($pdfLibraryName)) {
- throw new Exception("PDF Rendering library has not been defined.");
- }
-
- $pdfLibraryPath = PHPExcel_Settings::getPdfRendererPath();
- if (is_null($pdfLibraryName)) {
- throw new Exception("PDF Rendering library path has not been defined.");
- }
- $includePath = str_replace('\\','/',get_include_path());
- $rendererPath = str_replace('\\','/',$pdfLibraryPath);
- if (strpos($rendererPath,$includePath) === false) {
- set_include_path(get_include_path() . PATH_SEPARATOR . $pdfLibraryPath);
- }
-
- $rendererName = 'PHPExcel_Writer_PDF_'.$pdfLibraryName;
- $this->_renderer = new $rendererName($phpExcel);
- }
-
-
- public function __call($name, $arguments)
- {
- if ($this->_renderer === NULL) {
- throw new Exception("PDF Renderer has not been defined.");
- }
-
- return call_user_func_array(array($this->_renderer,$name),$arguments);
- }
-
-}
diff --git a/admin/survey/excel/PHPExcel/Writer/PDF/Core.php b/admin/survey/excel/PHPExcel/Writer/PDF/Core.php
deleted file mode 100644
index 7858974..0000000
--- a/admin/survey/excel/PHPExcel/Writer/PDF/Core.php
+++ /dev/null
@@ -1,239 +0,0 @@
-<?php
-/**
- * PHPExcel
- *
- * Copyright (c) 2006 - 2012 PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel_Writer
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-
-/**
- * PHPExcel_Writer_PDF_Core
- *
- * @category PHPExcel
- * @package PHPExcel_Writer
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- */
-abstract class PHPExcel_Writer_PDF_Core extends PHPExcel_Writer_HTML {
- /**
- * Temporary storage directory
- *
- * @var string
- */
- private $_tempDir = '';
-
- /**
- * Font
- *
- * @var string
- */
- private $_font = 'freesans';
-
- /**
- * Orientation (Over-ride)
- *
- * @var string
- */
- private $_orientation = null;
-
- /**
- * Paper size (Over-ride)
- *
- * @var int
- */
- private $_paperSize = null;
-
-
- /**
- * Paper Sizes xRef List
- *
- * @var array
- */
- protected static $_paperSizes = array(
- // Excel Paper Size TCPDF Paper Size
- PHPExcel_Worksheet_PageSetup::PAPERSIZE_LETTER => 'LETTER', // (8.5 in. by 11 in.)
- PHPExcel_Worksheet_PageSetup::PAPERSIZE_LETTER_SMALL => 'LETTER', // (8.5 in. by 11 in.)
- PHPExcel_Worksheet_PageSetup::PAPERSIZE_TABLOID => array(792.00,1224.00), // (11 in. by 17 in.)
- PHPExcel_Worksheet_PageSetup::PAPERSIZE_LEDGER => array(1224.00,792.00), // (17 in. by 11 in.)
- PHPExcel_Worksheet_PageSetup::PAPERSIZE_LEGAL => 'LEGAL', // (8.5 in. by 14 in.)
- PHPExcel_Worksheet_PageSetup::PAPERSIZE_STATEMENT => array(396.00,612.00), // (5.5 in. by 8.5 in.)
- PHPExcel_Worksheet_PageSetup::PAPERSIZE_EXECUTIVE => 'EXECUTIVE', // (7.25 in. by 10.5 in.)
- PHPExcel_Worksheet_PageSetup::PAPERSIZE_A3 => 'A3', // (297 mm by 420 mm)
- PHPExcel_Worksheet_PageSetup::PAPERSIZE_A4 => 'A4', // (210 mm by 297 mm)
- PHPExcel_Worksheet_PageSetup::PAPERSIZE_A4_SMALL => 'A4', // (210 mm by 297 mm)
- PHPExcel_Worksheet_PageSetup::PAPERSIZE_A5 => 'A5', // (148 mm by 210 mm)
- PHPExcel_Worksheet_PageSetup::PAPERSIZE_B4 => 'B4', // (250 mm by 353 mm)
- PHPExcel_Worksheet_PageSetup::PAPERSIZE_B5 => 'B5', // (176 mm by 250 mm)
- PHPExcel_Worksheet_PageSetup::PAPERSIZE_FOLIO => 'FOLIO', // (8.5 in. by 13 in.)
- PHPExcel_Worksheet_PageSetup::PAPERSIZE_QUARTO => array(609.45,779.53), // (215 mm by 275 mm)
- PHPExcel_Worksheet_PageSetup::PAPERSIZE_STANDARD_1 => array(720.00,1008.00), // (10 in. by 14 in.)
- PHPExcel_Worksheet_PageSetup::PAPERSIZE_STANDARD_2 => array(792.00,1224.00), // (11 in. by 17 in.)
- PHPExcel_Worksheet_PageSetup::PAPERSIZE_NOTE => 'LETTER', // (8.5 in. by 11 in.)
- PHPExcel_Worksheet_PageSetup::PAPERSIZE_NO9_ENVELOPE => array(279.00,639.00), // (3.875 in. by 8.875 in.)
- PHPExcel_Worksheet_PageSetup::PAPERSIZE_NO10_ENVELOPE => array(297.00,684.00), // (4.125 in. by 9.5 in.)
- PHPExcel_Worksheet_PageSetup::PAPERSIZE_NO11_ENVELOPE => array(324.00,747.00), // (4.5 in. by 10.375 in.)
- PHPExcel_Worksheet_PageSetup::PAPERSIZE_NO12_ENVELOPE => array(342.00,792.00), // (4.75 in. by 11 in.)
- PHPExcel_Worksheet_PageSetup::PAPERSIZE_NO14_ENVELOPE => array(360.00,828.00), // (5 in. by 11.5 in.)
- PHPExcel_Worksheet_PageSetup::PAPERSIZE_C => array(1224.00,1584.00), // (17 in. by 22 in.)
- PHPExcel_Worksheet_PageSetup::PAPERSIZE_D => array(1584.00,2448.00), // (22 in. by 34 in.)
- PHPExcel_Worksheet_PageSetup::PAPERSIZE_E => array(2448.00,3168.00), // (34 in. by 44 in.)
- PHPExcel_Worksheet_PageSetup::PAPERSIZE_DL_ENVELOPE => array(311.81,623.62), // (110 mm by 220 mm)
- PHPExcel_Worksheet_PageSetup::PAPERSIZE_C5_ENVELOPE => 'C5', // (162 mm by 229 mm)
- PHPExcel_Worksheet_PageSetup::PAPERSIZE_C3_ENVELOPE => 'C3', // (324 mm by 458 mm)
- PHPExcel_Worksheet_PageSetup::PAPERSIZE_C4_ENVELOPE => 'C4', // (229 mm by 324 mm)
- PHPExcel_Worksheet_PageSetup::PAPERSIZE_C6_ENVELOPE => 'C6', // (114 mm by 162 mm)
- PHPExcel_Worksheet_PageSetup::PAPERSIZE_C65_ENVELOPE => array(323.15,649.13), // (114 mm by 229 mm)
- PHPExcel_Worksheet_PageSetup::PAPERSIZE_B4_ENVELOPE => 'B4', // (250 mm by 353 mm)
- PHPExcel_Worksheet_PageSetup::PAPERSIZE_B5_ENVELOPE => 'B5', // (176 mm by 250 mm)
- PHPExcel_Worksheet_PageSetup::PAPERSIZE_B6_ENVELOPE => array(498.90,354.33), // (176 mm by 125 mm)
- PHPExcel_Worksheet_PageSetup::PAPERSIZE_ITALY_ENVELOPE => array(311.81,651.97), // (110 mm by 230 mm)
- PHPExcel_Worksheet_PageSetup::PAPERSIZE_MONARCH_ENVELOPE => array(279.00,540.00), // (3.875 in. by 7.5 in.)
- PHPExcel_Worksheet_PageSetup::PAPERSIZE_6_3_4_ENVELOPE => array(261.00,468.00), // (3.625 in. by 6.5 in.)
- PHPExcel_Worksheet_PageSetup::PAPERSIZE_US_STANDARD_FANFOLD => array(1071.00,792.00), // (14.875 in. by 11 in.)
- PHPExcel_Worksheet_PageSetup::PAPERSIZE_GERMAN_STANDARD_FANFOLD => array(612.00,864.00), // (8.5 in. by 12 in.)
- PHPExcel_Worksheet_PageSetup::PAPERSIZE_GERMAN_LEGAL_FANFOLD => 'FOLIO', // (8.5 in. by 13 in.)
- PHPExcel_Worksheet_PageSetup::PAPERSIZE_ISO_B4 => 'B4', // (250 mm by 353 mm)
- PHPExcel_Worksheet_PageSetup::PAPERSIZE_JAPANESE_DOUBLE_POSTCARD => array(566.93,419.53), // (200 mm by 148 mm)
- PHPExcel_Worksheet_PageSetup::PAPERSIZE_STANDARD_PAPER_1 => array(648.00,792.00), // (9 in. by 11 in.)
- PHPExcel_Worksheet_PageSetup::PAPERSIZE_STANDARD_PAPER_2 => array(720.00,792.00), // (10 in. by 11 in.)
- PHPExcel_Worksheet_PageSetup::PAPERSIZE_STANDARD_PAPER_3 => array(1080.00,792.00), // (15 in. by 11 in.)
- PHPExcel_Worksheet_PageSetup::PAPERSIZE_INVITE_ENVELOPE => array(623.62,623.62), // (220 mm by 220 mm)
- PHPExcel_Worksheet_PageSetup::PAPERSIZE_LETTER_EXTRA_PAPER => array(667.80,864.00), // (9.275 in. by 12 in.)
- PHPExcel_Worksheet_PageSetup::PAPERSIZE_LEGAL_EXTRA_PAPER => array(667.80,1080.00), // (9.275 in. by 15 in.)
- PHPExcel_Worksheet_PageSetup::PAPERSIZE_TABLOID_EXTRA_PAPER => array(841.68,1296.00), // (11.69 in. by 18 in.)
- PHPExcel_Worksheet_PageSetup::PAPERSIZE_A4_EXTRA_PAPER => array(668.98,912.76), // (236 mm by 322 mm)
- PHPExcel_Worksheet_PageSetup::PAPERSIZE_LETTER_TRANSVERSE_PAPER => array(595.80,792.00), // (8.275 in. by 11 in.)
- PHPExcel_Worksheet_PageSetup::PAPERSIZE_A4_TRANSVERSE_PAPER => 'A4', // (210 mm by 297 mm)
- PHPExcel_Worksheet_PageSetup::PAPERSIZE_LETTER_EXTRA_TRANSVERSE_PAPER => array(667.80,864.00), // (9.275 in. by 12 in.)
- PHPExcel_Worksheet_PageSetup::PAPERSIZE_SUPERA_SUPERA_A4_PAPER => array(643.46,1009.13), // (227 mm by 356 mm)
- PHPExcel_Worksheet_PageSetup::PAPERSIZE_SUPERB_SUPERB_A3_PAPER => array(864.57,1380.47), // (305 mm by 487 mm)
- PHPExcel_Worksheet_PageSetup::PAPERSIZE_LETTER_PLUS_PAPER => array(612.00,913.68), // (8.5 in. by 12.69 in.)
- PHPExcel_Worksheet_PageSetup::PAPERSIZE_A4_PLUS_PAPER => array(595.28,935.43), // (210 mm by 330 mm)
- PHPExcel_Worksheet_PageSetup::PAPERSIZE_A5_TRANSVERSE_PAPER => 'A5', // (148 mm by 210 mm)
- PHPExcel_Worksheet_PageSetup::PAPERSIZE_JIS_B5_TRANSVERSE_PAPER => array(515.91,728.50), // (182 mm by 257 mm)
- PHPExcel_Worksheet_PageSetup::PAPERSIZE_A3_EXTRA_PAPER => array(912.76,1261.42), // (322 mm by 445 mm)
- PHPExcel_Worksheet_PageSetup::PAPERSIZE_A5_EXTRA_PAPER => array(493.23,666.14), // (174 mm by 235 mm)
- PHPExcel_Worksheet_PageSetup::PAPERSIZE_ISO_B5_EXTRA_PAPER => array(569.76,782.36), // (201 mm by 276 mm)
- PHPExcel_Worksheet_PageSetup::PAPERSIZE_A2_PAPER => 'A2', // (420 mm by 594 mm)
- PHPExcel_Worksheet_PageSetup::PAPERSIZE_A3_TRANSVERSE_PAPER => 'A3', // (297 mm by 420 mm)
- PHPExcel_Worksheet_PageSetup::PAPERSIZE_A3_EXTRA_TRANSVERSE_PAPER => array(912.76,1261.42) // (322 mm by 445 mm)
- );
-
- /**
- * Create a new PHPExcel_Writer_PDF
- *
- * @param PHPExcel $phpExcel PHPExcel object
- */
- public function __construct(PHPExcel $phpExcel) {
- parent::__construct($phpExcel);
- $this->setUseInlineCss(true);
- $this->_tempDir = PHPExcel_Shared_File::sys_get_temp_dir();
- }
-
- /**
- * Get Font
- *
- * @return string
- */
- public function getFont() {
- return $this->_font;
- }
-
- /**
- * Set font. Examples:
- * 'arialunicid0-chinese-simplified'
- * 'arialunicid0-chinese-traditional'
- * 'arialunicid0-korean'
- * 'arialunicid0-japanese'
- *
- * @param string $fontName
- */
- public function setFont($fontName) {
- $this->_font = $fontName;
- return $this;
- }
-
- /**
- * Get Paper Size
- *
- * @return int
- */
- public function getPaperSize() {
- return $this->_paperSize;
- }
-
- /**
- * Set Paper Size
- *
- * @param int $pValue
- * @return PHPExcel_Writer_PDF
- */
- public function setPaperSize($pValue = PHPExcel_Worksheet_PageSetup::PAPERSIZE_LETTER) {
- $this->_paperSize = $pValue;
- return $this;
- }
-
- /**
- * Get Orientation
- *
- * @return string
- */
- public function getOrientation() {
- return $this->_orientation;
- }
-
- /**
- * Set Orientation
- *
- * @param string $pValue
- * @return PHPExcel_Writer_PDF
- */
- public function setOrientation($pValue = PHPExcel_Worksheet_PageSetup::ORIENTATION_DEFAULT) {
- $this->_orientation = $pValue;
- return $this;
- }
-
- /**
- * Get temporary storage directory
- *
- * @return string
- */
- public function getTempDir() {
- return $this->_tempDir;
- }
-
- /**
- * Set temporary storage directory
- *
- * @param string $pValue Temporary storage directory
- * @throws Exception Exception when directory does not exist
- * @return PHPExcel_Writer_PDF
- */
- public function setTempDir($pValue = '') {
- if (is_dir($pValue)) {
- $this->_tempDir = $pValue;
- } else {
- throw new Exception("Directory does not exist: $pValue");
- }
- return $this;
- }
-}
diff --git a/admin/survey/excel/PHPExcel/Writer/PDF/DomPDF.php b/admin/survey/excel/PHPExcel/Writer/PDF/DomPDF.php
deleted file mode 100644
index 05cb124..0000000
--- a/admin/survey/excel/PHPExcel/Writer/PDF/DomPDF.php
+++ /dev/null
@@ -1,128 +0,0 @@
-<?php
-/**
- * PHPExcel
- *
- * Copyright (c) 2006 - 2012 PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel_Writer
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-
-/** Require DomPDF library */
-$pdfRendererClassFile = PHPExcel_Settings::getPdfRendererPath() . '/dompdf_config.inc.php';
-if (file_exists($pdfRendererClassFile)) {
- require_once $pdfRendererClassFile;
-} else {
- throw new Exception('Unable to load PDF Rendering library');
-}
-
-/**
- * PHPExcel_Writer_PDF_DomPDF
- *
- * @category PHPExcel
- * @package PHPExcel_Writer
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- */
-class PHPExcel_Writer_PDF_DomPDF extends PHPExcel_Writer_PDF_Core implements PHPExcel_Writer_IWriter {
- /**
- * Create a new PHPExcel_Writer_PDF
- *
- * @param PHPExcel $phpExcel PHPExcel object
- */
- public function __construct(PHPExcel $phpExcel) {
- parent::__construct($phpExcel);
- }
-
- /**
- * Save PHPExcel to file
- *
- * @param string $pFileName
- * @throws Exception
- */
- public function save($pFilename = null) {
- // garbage collect
- $this->_phpExcel->garbageCollect();
-
- $saveArrayReturnType = PHPExcel_Calculation::getArrayReturnType();
- PHPExcel_Calculation::setArrayReturnType(PHPExcel_Calculation::RETURN_ARRAY_AS_VALUE);
-
- // Open file
- $fileHandle = fopen($pFilename, 'w');
- if ($fileHandle === false) {
- throw new Exception("Could not open file $pFilename for writing.");
- }
-
- // Set PDF
- $this->_isPdf = true;
- // Build CSS
- $this->buildCSS(true);
-
- // Default PDF paper size
- $paperSize = 'LETTER'; // Letter (8.5 in. by 11 in.)
-
- // Check for paper size and page orientation
- if (is_null($this->getSheetIndex())) {
- $orientation = ($this->_phpExcel->getSheet(0)->getPageSetup()->getOrientation() == PHPExcel_Worksheet_PageSetup::ORIENTATION_LANDSCAPE) ? 'L' : 'P';
- $printPaperSize = $this->_phpExcel->getSheet(0)->getPageSetup()->getPaperSize();
- $printMargins = $this->_phpExcel->getSheet(0)->getPageMargins();
- } else {
- $orientation = ($this->_phpExcel->getSheet($this->getSheetIndex())->getPageSetup()->getOrientation() == PHPExcel_Worksheet_PageSetup::ORIENTATION_LANDSCAPE) ? 'L' : 'P';
- $printPaperSize = $this->_phpExcel->getSheet($this->getSheetIndex())->getPageSetup()->getPaperSize();
- $printMargins = $this->_phpExcel->getSheet($this->getSheetIndex())->getPageMargins();
- }
-
- // Override Page Orientation
- if (!is_null($this->getOrientation())) {
- $orientation = ($this->getOrientation() == PHPExcel_Worksheet_PageSetup::ORIENTATION_DEFAULT) ?
- PHPExcel_Worksheet_PageSetup::ORIENTATION_PORTRAIT : $this->getOrientation();
- }
- // Override Paper Size
- if (!is_null($this->getPaperSize())) {
- $printPaperSize = $this->getPaperSize();
- }
-
- if (isset(self::$_paperSizes[$printPaperSize])) {
- $paperSize = self::$_paperSizes[$printPaperSize];
- }
-
- $orientation = ($orientation == 'L') ? 'landscape' : 'portrait';
-
- // Create PDF
- $pdf = new DOMPDF();
- $pdf->set_paper(strtolower($paperSize), $orientation);
-
- $pdf->load_html(
- $this->generateHTMLHeader(false) .
- $this->generateSheetData() .
- $this->generateHTMLFooter()
- );
- $pdf->render();
-
- // Write to file
- fwrite($fileHandle, $pdf->output());
-
- // Close file
- fclose($fileHandle);
-
- PHPExcel_Calculation::setArrayReturnType($saveArrayReturnType);
- }
-
-}
diff --git a/admin/survey/excel/PHPExcel/Writer/PDF/mPDF.php b/admin/survey/excel/PHPExcel/Writer/PDF/mPDF.php
deleted file mode 100644
index 9393a21..0000000
--- a/admin/survey/excel/PHPExcel/Writer/PDF/mPDF.php
+++ /dev/null
@@ -1,135 +0,0 @@
-<?php
-/**
- * PHPExcel
- *
- * Copyright (c) 2006 - 2012 PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel_Writer
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-
-/** Require mPDF library */
-$pdfRendererClassFile = PHPExcel_Settings::getPdfRendererPath() . '/mpdf.php';
-if (file_exists($pdfRendererClassFile)) {
- require_once $pdfRendererClassFile;
-} else {
- throw new Exception('Unable to load PDF Rendering library');
-}
-
-/**
- * PHPExcel_Writer_PDF_mPDF
- *
- * @category PHPExcel
- * @package PHPExcel_Writer
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- */
-class PHPExcel_Writer_PDF_mPDF extends PHPExcel_Writer_PDF_Core implements PHPExcel_Writer_IWriter {
- /**
- * Create a new PHPExcel_Writer_PDF
- *
- * @param PHPExcel $phpExcel PHPExcel object
- */
- public function __construct(PHPExcel $phpExcel) {
- parent::__construct($phpExcel);
- }
-
- /**
- * Save PHPExcel to file
- *
- * @param string $pFileName
- * @throws Exception
- */
- public function save($pFilename = null) {
- // garbage collect
- $this->_phpExcel->garbageCollect();
-
- $saveArrayReturnType = PHPExcel_Calculation::getArrayReturnType();
- PHPExcel_Calculation::setArrayReturnType(PHPExcel_Calculation::RETURN_ARRAY_AS_VALUE);
-
- // Open file
- $fileHandle = fopen($pFilename, 'w');
- if ($fileHandle === false) {
- throw new Exception("Could not open file $pFilename for writing.");
- }
-
- // Set PDF
- $this->_isPdf = true;
- // Build CSS
- $this->buildCSS(true);
-
- // Default PDF paper size
- $paperSize = 'LETTER'; // Letter (8.5 in. by 11 in.)
-
- // Check for paper size and page orientation
- if (is_null($this->getSheetIndex())) {
- $orientation = ($this->_phpExcel->getSheet(0)->getPageSetup()->getOrientation() == PHPExcel_Worksheet_PageSetup::ORIENTATION_LANDSCAPE) ? 'L' : 'P';
- $printPaperSize = $this->_phpExcel->getSheet(0)->getPageSetup()->getPaperSize();
- $printMargins = $this->_phpExcel->getSheet(0)->getPageMargins();
- } else {
- $orientation = ($this->_phpExcel->getSheet($this->getSheetIndex())->getPageSetup()->getOrientation() == PHPExcel_Worksheet_PageSetup::ORIENTATION_LANDSCAPE) ? 'L' : 'P';
- $printPaperSize = $this->_phpExcel->getSheet($this->getSheetIndex())->getPageSetup()->getPaperSize();
- $printMargins = $this->_phpExcel->getSheet($this->getSheetIndex())->getPageMargins();
- }
- $this->setOrientation($orientation);
-
- // Override Page Orientation
- if (!is_null($this->getOrientation())) {
- $orientation = ($this->getOrientation() == PHPExcel_Worksheet_PageSetup::ORIENTATION_DEFAULT) ?
- PHPExcel_Worksheet_PageSetup::ORIENTATION_PORTRAIT : $this->getOrientation();
- }
- $orientation = strtoupper($orientation);
-
- // Override Paper Size
- if (!is_null($this->getPaperSize())) {
- $printPaperSize = $this->getPaperSize();
- }
-
- if (isset(self::$_paperSizes[$printPaperSize])) {
- $paperSize = self::$_paperSizes[$printPaperSize];
- }
-
- // Create PDF
- $pdf = new mpdf();
- $pdf->_setPageSize(strtoupper($paperSize), $orientation);
- $pdf->DefOrientation = $orientation;
- // Document info
- $pdf->SetTitle($this->_phpExcel->getProperties()->getTitle());
- $pdf->SetAuthor($this->_phpExcel->getProperties()->getCreator());
- $pdf->SetSubject($this->_phpExcel->getProperties()->getSubject());
- $pdf->SetKeywords($this->_phpExcel->getProperties()->getKeywords());
- $pdf->SetCreator($this->_phpExcel->getProperties()->getCreator());
-
- $pdf->WriteHTML(
- $this->generateHTMLHeader(false) .
- $this->generateSheetData() .
- $this->generateHTMLFooter()
- );
-
- // Write to file
- fwrite($fileHandle, $pdf->Output('','S'));
-
- // Close file
- fclose($fileHandle);
-
- PHPExcel_Calculation::setArrayReturnType($saveArrayReturnType);
- }
-
-}
diff --git a/admin/survey/excel/PHPExcel/Writer/PDF/tcPDF.php b/admin/survey/excel/PHPExcel/Writer/PDF/tcPDF.php
deleted file mode 100644
index aa1b0fb..0000000
--- a/admin/survey/excel/PHPExcel/Writer/PDF/tcPDF.php
+++ /dev/null
@@ -1,147 +0,0 @@
-<?php
-/**
- * PHPExcel
- *
- * Copyright (c) 2006 - 2012 PHPExcel
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * @category PHPExcel
- * @package PHPExcel_Writer
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
- * @version 1.7.8, 2012-10-12
- */
-
-
-/** Require tcPDF library */
-$pdfRendererClassFile = PHPExcel_Settings::getPdfRendererPath() . '/tcpdf.php';
-if (file_exists($pdfRendererClassFile)) {
- $k_path_url = PHPExcel_Settings::getPdfRendererPath();
- require_once $pdfRendererClassFile;
-} else {
- throw new Exception('Unable to load PDF Rendering library');
-}
-
-/**
- * PHPExcel_Writer_PDF_tcPDF
- *
- * @category PHPExcel
- * @package PHPExcel_Writer
- * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
- */
-class PHPExcel_Writer_PDF_tcPDF extends PHPExcel_Writer_PDF_Core implements PHPExcel_Writer_IWriter {
- /**
- * Create a new PHPExcel_Writer_PDF
- *
- * @param PHPExcel $phpExcel PHPExcel object
- */
- public function __construct(PHPExcel $phpExcel) {
- parent::__construct($phpExcel);
- }
-
- /**
- * Save PHPExcel to file
- *
- * @param string $pFileName
- * @throws Exception
- */
- public function save($pFilename = null) {
- // garbage collect
- $this->_phpExcel->garbageCollect();
-
- $saveArrayReturnType = PHPExcel_Calculation::getArrayReturnType();
- PHPExcel_Calculation::setArrayReturnType(PHPExcel_Calculation::RETURN_ARRAY_AS_VALUE);
-
- // Open file
- $fileHandle = fopen($pFilename, 'w');
- if ($fileHandle === false) {
- throw new Exception("Could not open file $pFilename for writing.");
- }
-
- // Set PDF
- $this->_isPdf = true;
- // Build CSS
- $this->buildCSS(true);
-
- // Default PDF paper size
- $paperSize = 'LETTER'; // Letter (8.5 in. by 11 in.)
-
- // Check for paper size and page orientation
- if (is_null($this->getSheetIndex())) {
- $orientation = ($this->_phpExcel->getSheet(0)->getPageSetup()->getOrientation() == PHPExcel_Worksheet_PageSetup::ORIENTATION_LANDSCAPE) ? 'L' : 'P';
- $printPaperSize = $this->_phpExcel->getSheet(0)->getPageSetup()->getPaperSize();
- $printMargins = $this->_phpExcel->getSheet(0)->getPageMargins();
- } else {
- $orientation = ($this->_phpExcel->getSheet($this->getSheetIndex())->getPageSetup()->getOrientation() == PHPExcel_Worksheet_PageSetup::ORIENTATION_LANDSCAPE) ? 'L' : 'P';
- $printPaperSize = $this->_phpExcel->getSheet($this->getSheetIndex())->getPageSetup()->getPaperSize();
- $printMargins = $this->_phpExcel->getSheet($this->getSheetIndex())->getPageMargins();
- }
-
- // Override Page Orientation
- if (!is_null($this->getOrientation())) {
- $orientation = ($this->getOrientation() == PHPExcel_Worksheet_PageSetup::ORIENTATION_LANDSCAPE) ?
- 'L' : 'P';
- }
- // Override Paper Size
- if (!is_null($this->getPaperSize())) {
- $printPaperSize = $this->getPaperSize();
- }
-
-
- if (isset(self::$_paperSizes[$printPaperSize])) {
- $paperSize = self::$_paperSizes[$printPaperSize];
- }
-
-
- // Create PDF
- $pdf = new TCPDF($orientation, 'pt', $paperSize);
- $pdf->setFontSubsetting(false);
- // Set margins, converting inches to points (using 72 dpi)
- $pdf->SetMargins($printMargins->getLeft() * 72,$printMargins->getTop() * 72,$printMargins->getRight() * 72);
- $pdf->SetAutoPageBreak(true,$printMargins->getBottom() * 72);
-// $pdf->setHeaderMargin($printMargins->getHeader() * 72);
-// $pdf->setFooterMargin($printMargins->getFooter() * 72);
-
- $pdf->setPrintHeader(false);
- $pdf->setPrintFooter(false);
-
- $pdf->AddPage();
-
- // Set the appropriate font
- $pdf->SetFont($this->getFont());
- $pdf->writeHTML(
- $this->generateHTMLHeader(false) .
- $this->generateSheetData() .
- $this->generateHTMLFooter()
- );
-
- // Document info
- $pdf->SetTitle($this->_phpExcel->getProperties()->getTitle());
- $pdf->SetAuthor($this->_phpExcel->getProperties()->getCreator());
- $pdf->SetSubject($this->_phpExcel->getProperties()->getSubject());
- $pdf->SetKeywords($this->_phpExcel->getProperties()->getKeywords());
- $pdf->SetCreator($this->_phpExcel->getProperties()->getCreator());
-
- // Write to file
- fwrite($fileHandle, $pdf->output($pFilename, 'S'));
-
- // Close file
- fclose($fileHandle);
-
- PHPExcel_Calculation::setArrayReturnType($saveArrayReturnType);
- }
-
-}
diff --git a/admin/survey/excel/PHPExcel/locale/cs/config b/admin/survey/excel/PHPExcel/locale/cs/config
deleted file mode 100644
index 38a4412..0000000
--- a/admin/survey/excel/PHPExcel/locale/cs/config
+++ /dev/null
@@ -1,47 +0,0 @@
-##
-## PHPExcel
-##
-## Copyright (c) 2006 - 2011 PHPExcel
-##
-## This library is free software; you can redistribute it and/or
-## modify it under the terms of the GNU Lesser General Public
-## License as published by the Free Software Foundation; either
-## version 2.1 of the License, or (at your option) any later version.
-##
-## This library is distributed in the hope that it will be useful,
-## but WITHOUT ANY WARRANTY; without even the implied warranty of
-## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-## Lesser General Public License for more details.
-##
-## You should have received a copy of the GNU Lesser General Public
-## License along with this library; if not, write to the Free Software
-## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-##
-## @category PHPExcel
-## @package PHPExcel_Settings
-## @copyright Copyright (c) 2006 - 2011 PHPExcel (http://www.codeplex.com/PHPExcel)
-## @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
-## @version 1.7.8, 2012-10-12
-##
-##
-
-
-ArgumentSeparator = ;
-
-
-##
-## (For future use)
-##
-currencySymbol = Kč
-
-
-##
-## Excel Error Codes (For future use)
-##
-NULL = #NULL!
-DIV0 = #DIV/0!
-VALUE = #HODNOTA!
-REF = #REF!
-NAME = #NÁZEV?
-NUM = #NUM!
-NA = #N/A
diff --git a/admin/survey/excel/PHPExcel/locale/cs/functions b/admin/survey/excel/PHPExcel/locale/cs/functions
deleted file mode 100644
index 992dc37..0000000
--- a/admin/survey/excel/PHPExcel/locale/cs/functions
+++ /dev/null
@@ -1,438 +0,0 @@
-##
-## PHPExcel
-##
-## Copyright (c) 2006 - 2011 PHPExcel
-##
-## This library is free software; you can redistribute it and/or
-## modify it under the terms of the GNU Lesser General Public
-## License as published by the Free Software Foundation; either
-## version 2.1 of the License, or (at your option) any later version.
-##
-## This library is distributed in the hope that it will be useful,
-## but WITHOUT ANY WARRANTY; without even the implied warranty of
-## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-## Lesser General Public License for more details.
-##
-## You should have received a copy of the GNU Lesser General Public
-## License along with this library; if not, write to the Free Software
-## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-##
-## @category PHPExcel
-## @package PHPExcel_Calculation
-## @copyright Copyright (c) 2006 - 2011 PHPExcel (http://www.codeplex.com/PHPExcel)
-## @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
-## @version 1.7.8, 2012-10-12
-##
-## Data in this file derived from http://www.piuha.fi/excel-function-name-translation/
-##
-##
-
-
-##
-## Add-in and Automation functions Funkce doplňků a automatizace
-##
-GETPIVOTDATA = ZÍSKATKONTDATA ## Vrátí data uložená v kontingenční tabulce. Pomocí funkce ZÍSKATKONTDATA můžete načíst souhrnná data z kontingenční tabulky, pokud jsou tato data v kontingenční sestavě zobrazena.
-
-
-##
-## Cube functions Funkce pro práci s krychlemi
-##
-CUBEKPIMEMBER = CUBEKPIMEMBER ## Vrátí název, vlastnost a velikost klíčového ukazatele výkonu (KUV) a zobrazí v buňce název a vlastnost. Klíčový ukazatel výkonu je kvantifikovatelná veličina, například hrubý měsíční zisk nebo čtvrtletní obrat na zaměstnance, která se používá pro sledování výkonnosti organizace.
-CUBEMEMBER = CUBEMEMBER ## Vrátí člen nebo n-tici v hierarchii krychle. Slouží k ověření, zda v krychli existuje člen nebo n-tice.
-CUBEMEMBERPROPERTY = CUBEMEMBERPROPERTY ## Vrátí hodnotu vlastnosti člena v krychli. Slouží k ověření, zda v krychli existuje člen s daným názvem, a k vrácení konkrétní vlastnosti tohoto člena.
-CUBERANKEDMEMBER = CUBERANKEDMEMBER ## Vrátí n-tý nebo pořadový člen sady. Použijte ji pro vrácení jednoho nebo více prvků sady, například obchodníka s nejvyšším obratem nebo deseti nejlepších studentů.
-CUBESET = CUBESET ## Definuje vypočtenou sadu členů nebo n-tic odesláním výrazu sady do krychle na serveru, který vytvoří sadu a potom ji vrátí do aplikace Microsoft Office Excel.
-CUBESETCOUNT = CUBESETCOUNT ## Vrátí počet položek v množině
-CUBEVALUE = CUBEVALUE ## Vrátí úhrnnou hodnotu z krychle.
-
-
-##
-## Database functions Funkce databáze
-##
-DAVERAGE = DPRŮMĚR ## Vrátí průměr vybraných položek databáze.
-DCOUNT = DPOČET ## Spočítá buňky databáze obsahující čísla.
-DCOUNTA = DPOČET2 ## Spočítá buňky databáze, které nejsou prázdné.
-DGET = DZÍSKAT ## Extrahuje z databáze jeden záznam splňující zadaná kritéria.
-DMAX = DMAX ## Vrátí maximální hodnotu z vybraných položek databáze.
-DMIN = DMIN ## Vrátí minimální hodnotu z vybraných položek databáze.
-DPRODUCT = DSOUČIN ## Vynásobí hodnoty určitého pole záznamů v databázi, které splňují daná kritéria.
-DSTDEV = DSMODCH.VÝBĚR ## Odhadne směrodatnou odchylku výběru vybraných položek databáze.
-DSTDEVP = DSMODCH ## Vypočte směrodatnou odchylku základního souboru vybraných položek databáze.
-DSUM = DSUMA ## Sečte čísla ve sloupcovém poli záznamů databáze, která splňují daná kritéria.
-DVAR = DVAR.VÝBĚR ## Odhadne rozptyl výběru vybraných položek databáze.
-DVARP = DVAR ## Vypočte rozptyl základního souboru vybraných položek databáze.
-
-
-##
-## Date and time functions Funkce data a času
-##
-DATE = DATUM ## Vrátí pořadové číslo určitého data.
-DATEVALUE = DATUMHODN ## Převede datum ve formě textu na pořadové číslo.
-DAY = DEN ## Převede pořadové číslo na den v měsíci.
-DAYS360 = ROK360 ## Vrátí počet dní mezi dvěma daty na základě roku s 360 dny.
-EDATE = EDATE ## Vrátí pořadové číslo data, které označuje určený počet měsíců před nebo po počátečním datu.
-EOMONTH = EOMONTH ## Vrátí pořadové číslo posledního dne měsíce před nebo po zadaném počtu měsíců.
-HOUR = HODINA ## Převede pořadové číslo na hodinu.
-MINUTE = MINUTA ## Převede pořadové číslo na minutu.
-MONTH = MĚSÍC ## Převede pořadové číslo na měsíc.
-NETWORKDAYS = NETWORKDAYS ## Vrátí počet celých pracovních dní mezi dvěma daty.
-NOW = NYNÍ ## Vrátí pořadové číslo aktuálního data a času.
-SECOND = SEKUNDA ## Převede pořadové číslo na sekundu.
-TIME = ČAS ## Vrátí pořadové číslo určitého času.
-TIMEVALUE = ČASHODN ## Převede čas ve formě textu na pořadové číslo.
-TODAY = DNES ## Vrátí pořadové číslo dnešního data.
-WEEKDAY = DENTÝDNE ## Převede pořadové číslo na den v týdnu.
-WEEKNUM = WEEKNUM ## Převede pořadové číslo na číslo představující číselnou pozici týdne v roce.
-WORKDAY = WORKDAY ## Vrátí pořadové číslo data před nebo po zadaném počtu pracovních dní.
-YEAR = ROK ## Převede pořadové číslo na rok.
-YEARFRAC = YEARFRAC ## Vrátí část roku vyjádřenou zlomkem a představující počet celých dní mezi počátečním a koncovým datem.
-
-
-##
-## Engineering functions Inženýrské funkce (Technické funkce)
-##
-BESSELI = BESSELI ## Vrátí modifikovanou Besselovu funkci In(x).
-BESSELJ = BESSELJ ## Vrátí modifikovanou Besselovu funkci Jn(x).
-BESSELK = BESSELK ## Vrátí modifikovanou Besselovu funkci Kn(x).
-BESSELY = BESSELY ## Vrátí Besselovu funkci Yn(x).
-BIN2DEC = BIN2DEC ## Převede binární číslo na desítkové.
-BIN2HEX = BIN2HEX ## Převede binární číslo na šestnáctkové.
-BIN2OCT = BIN2OCT ## Převede binární číslo na osmičkové.
-COMPLEX = COMPLEX ## Převede reálnou a imaginární část na komplexní číslo.
-CONVERT = CONVERT ## Převede číslo do jiného jednotkového měrného systému.
-DEC2BIN = DEC2BIN ## Převede desítkového čísla na dvojkové
-DEC2HEX = DEC2HEX ## Převede desítkové číslo na šestnáctkové.
-DEC2OCT = DEC2OCT ## Převede desítkové číslo na osmičkové.
-DELTA = DELTA ## Testuje rovnost dvou hodnot.
-ERF = ERF ## Vrátí chybovou funkci.
-ERFC = ERFC ## Vrátí doplňkovou chybovou funkci.
-GESTEP = GESTEP ## Testuje, zda je číslo větší než mezní hodnota.
-HEX2BIN = HEX2BIN ## Převede šestnáctkové číslo na binární.
-HEX2DEC = HEX2DEC ## Převede šestnáctkové číslo na desítkové.
-HEX2OCT = HEX2OCT ## Převede šestnáctkové číslo na osmičkové.
-IMABS = IMABS ## Vrátí absolutní hodnotu (modul) komplexního čísla.
-IMAGINARY = IMAGINARY ## Vrátí imaginární část komplexního čísla.
-IMARGUMENT = IMARGUMENT ## Vrátí argument théta, úhel vyjádřený v radiánech.
-IMCONJUGATE = IMCONJUGATE ## Vrátí komplexně sdružené číslo ke komplexnímu číslu.
-IMCOS = IMCOS ## Vrátí kosinus komplexního čísla.
-IMDIV = IMDIV ## Vrátí podíl dvou komplexních čísel.
-IMEXP = IMEXP ## Vrátí exponenciální tvar komplexního čísla.
-IMLN = IMLN ## Vrátí přirozený logaritmus komplexního čísla.
-IMLOG10 = IMLOG10 ## Vrátí dekadický logaritmus komplexního čísla.
-IMLOG2 = IMLOG2 ## Vrátí logaritmus komplexního čísla při základu 2.
-IMPOWER = IMPOWER ## Vrátí komplexní číslo umocněné na celé číslo.
-IMPRODUCT = IMPRODUCT ## Vrátí součin komplexních čísel.
-IMREAL = IMREAL ## Vrátí reálnou část komplexního čísla.
-IMSIN = IMSIN ## Vrátí sinus komplexního čísla.
-IMSQRT = IMSQRT ## Vrátí druhou odmocninu komplexního čísla.
-IMSUB = IMSUB ## Vrátí rozdíl mezi dvěma komplexními čísly.
-IMSUM = IMSUM ## Vrátí součet dvou komplexních čísel.
-OCT2BIN = OCT2BIN ## Převede osmičkové číslo na binární.
-OCT2DEC = OCT2DEC ## Převede osmičkové číslo na desítkové.
-OCT2HEX = OCT2HEX ## Převede osmičkové číslo na šestnáctkové.
-
-
-##
-## Financial functions Finanční funkce
-##
-ACCRINT = ACCRINT ## Vrátí nahromaděný úrok z cenného papíru, ze kterého je úrok placen v pravidelných termínech.
-ACCRINTM = ACCRINTM ## Vrátí nahromaděný úrok z cenného papíru, ze kterého je úrok placen k datu splatnosti.
-AMORDEGRC = AMORDEGRC ## Vrátí lineární amortizaci v každém účetním období pomocí koeficientu amortizace.
-AMORLINC = AMORLINC ## Vrátí lineární amortizaci v každém účetním období.
-COUPDAYBS = COUPDAYBS ## Vrátí počet dnů od začátku období placení kupónů do data splatnosti.
-COUPDAYS = COUPDAYS ## Vrátí počet dnů v období placení kupónů, které obsahuje den zúčtování.
-COUPDAYSNC = COUPDAYSNC ## Vrátí počet dnů od data zúčtování do následujícího data placení kupónu.
-COUPNCD = COUPNCD ## Vrátí následující datum placení kupónu po datu zúčtování.
-COUPNUM = COUPNUM ## Vrátí počet kupónů splatných mezi datem zúčtování a datem splatnosti.
-COUPPCD = COUPPCD ## Vrátí předchozí datum placení kupónu před datem zúčtování.
-CUMIPMT = CUMIPMT ## Vrátí kumulativní úrok splacený mezi dvěma obdobími.
-CUMPRINC = CUMPRINC ## Vrátí kumulativní jistinu splacenou mezi dvěma obdobími půjčky.
-DB = ODPIS.ZRYCH ## Vrátí odpis aktiva za určité období pomocí degresivní metody odpisu s pevným zůstatkem.
-DDB = ODPIS.ZRYCH2 ## Vrátí odpis aktiva za určité období pomocí dvojité degresivní metody odpisu nebo jiné metody, kterou zadáte.
-DISC = DISC ## Vrátí diskontní sazbu cenného papíru.
-DOLLARDE = DOLLARDE ## Převede částku v korunách vyjádřenou zlomkem na částku v korunách vyjádřenou desetinným číslem.
-DOLLARFR = DOLLARFR ## Převede částku v korunách vyjádřenou desetinným číslem na částku v korunách vyjádřenou zlomkem.
-DURATION = DURATION ## Vrátí roční dobu cenného papíru s pravidelnými úrokovými sazbami.
-EFFECT = EFFECT ## Vrátí efektivní roční úrokovou sazbu.
-FV = BUDHODNOTA ## Vrátí budoucí hodnotu investice.
-FVSCHEDULE = FVSCHEDULE ## Vrátí budoucí hodnotu počáteční jistiny po použití série sazeb složitého úroku.
-INTRATE = INTRATE ## Vrátí úrokovou sazbu plně investovaného cenného papíru.
-IPMT = PLATBA.ÚROK ## Vrátí výšku úroku investice za dané období.
-IRR = MÍRA.VÝNOSNOSTI ## Vrátí vnitřní výnosové procento série peněžních toků.
-ISPMT = ISPMT ## Vypočte výši úroku z investice zaplaceného během určitého období.
-MDURATION = MDURATION ## Vrátí Macauleyho modifikovanou dobu cenného papíru o nominální hodnotě 100 Kč.
-MIRR = MOD.MÍRA.VÝNOSNOSTI ## Vrátí vnitřní sazbu výnosu, přičemž kladné a záporné hodnoty peněžních prostředků jsou financovány podle různých sazeb.
-NOMINAL = NOMINAL ## Vrátí nominální roční úrokovou sazbu.
-NPER = POČET.OBDOBÍ ## Vrátí počet období pro investici.
-NPV = ČISTÁ.SOUČHODNOTA ## Vrátí čistou současnou hodnotu investice vypočítanou na základě série pravidelných peněžních toků a diskontní sazby.
-ODDFPRICE = ODDFPRICE ## Vrátí cenu cenného papíru o nominální hodnotě 100 Kč s odlišným prvním obdobím.
-ODDFYIELD = ODDFYIELD ## Vrátí výnos cenného papíru s odlišným prvním obdobím.
-ODDLPRICE = ODDLPRICE ## Vrátí cenu cenného papíru o nominální hodnotě 100 Kč s odlišným posledním obdobím.
-ODDLYIELD = ODDLYIELD ## Vrátí výnos cenného papíru s odlišným posledním obdobím.
-PMT = PLATBA ## Vrátí hodnotu pravidelné splátky anuity.
-PPMT = PLATBA.ZÁKLAD ## Vrátí hodnotu splátky jistiny pro zadanou investici za dané období.
-PRICE = PRICE ## Vrátí cenu cenného papíru o nominální hodnotě 100 Kč, ze kterého je úrok placen v pravidelných termínech.
-PRICEDISC = PRICEDISC ## Vrátí cenu diskontního cenného papíru o nominální hodnotě 100 Kč.
-PRICEMAT = PRICEMAT ## Vrátí cenu cenného papíru o nominální hodnotě 100 Kč, ze kterého je úrok placen k datu splatnosti.
-PV = SOUČHODNOTA ## Vrátí současnou hodnotu investice.
-RATE = ÚROKOVÁ.MÍRA ## Vrátí úrokovou sazbu vztaženou na období anuity.
-RECEIVED = RECEIVED ## Vrátí částku obdrženou k datu splatnosti plně investovaného cenného papíru.
-SLN = ODPIS.LIN ## Vrátí přímé odpisy aktiva pro jedno období.
-SYD = ODPIS.NELIN ## Vrátí směrné číslo ročních odpisů aktiva pro zadané období.
-TBILLEQ = TBILLEQ ## Vrátí výnos směnky státní pokladny ekvivalentní výnosu obligace.
-TBILLPRICE = TBILLPRICE ## Vrátí cenu směnky státní pokladny o nominální hodnotě 100 Kč.
-TBILLYIELD = TBILLYIELD ## Vrátí výnos směnky státní pokladny.
-VDB = ODPIS.ZA.INT ## Vrátí odpis aktiva pro určité období nebo část období pomocí degresivní metody odpisu.
-XIRR = XIRR ## Vrátí vnitřní výnosnost pro harmonogram peněžních toků, který nemusí být nutně periodický.
-XNPV = XNPV ## Vrátí čistou současnou hodnotu pro harmonogram peněžních toků, který nemusí být nutně periodický.
-YIELD = YIELD ## Vrátí výnos cenného papíru, ze kterého je úrok placen v pravidelných termínech.
-YIELDDISC = YIELDDISC ## Vrátí roční výnos diskontního cenného papíru, například směnky státní pokladny.
-YIELDMAT = YIELDMAT ## Vrátí roční výnos cenného papíru, ze kterého je úrok placen k datu splatnosti.
-
-
-##
-## Information functions Informační funkce
-##
-CELL = POLÍČKO ## Vrátí informace o formátování, umístění nebo obsahu buňky.
-ERROR.TYPE = CHYBA.TYP ## Vrátí číslo odpovídající typu chyby.
-INFO = O.PROSTŘEDÍ ## Vrátí informace o aktuálním pracovním prostředí.
-ISBLANK = JE.PRÁZDNÉ ## Vrátí hodnotu PRAVDA, pokud se argument hodnota odkazuje na prázdnou buňku.
-ISERR = JE.CHYBA ## Vrátí hodnotu PRAVDA, pokud je argument hodnota libovolná chybová hodnota (kromě #N/A).
-ISERROR = JE.CHYBHODN ## Vrátí hodnotu PRAVDA, pokud je argument hodnota libovolná chybová hodnota.
-ISEVEN = ISEVEN ## Vrátí hodnotu PRAVDA, pokud je číslo sudé.
-ISLOGICAL = JE.LOGHODN ## Vrátí hodnotu PRAVDA, pokud je argument hodnota logická hodnota.
-ISNA = JE.NEDEF ## Vrátí hodnotu PRAVDA, pokud je argument hodnota chybová hodnota #N/A.
-ISNONTEXT = JE.NETEXT ## Vrátí hodnotu PRAVDA, pokud argument hodnota není text.
-ISNUMBER = JE.ČÍSLO ## Vrátí hodnotu PRAVDA, pokud je argument hodnota číslo.
-ISODD = ISODD ## Vrátí hodnotu PRAVDA, pokud je číslo liché.
-ISREF = JE.ODKAZ ## Vrátí hodnotu PRAVDA, pokud je argument hodnota odkaz.
-ISTEXT = JE.TEXT ## Vrátí hodnotu PRAVDA, pokud je argument hodnota text.
-N = N ## Vrátí hodnotu převedenou na číslo.
-NA = NEDEF ## Vrátí chybovou hodnotu #N/A.
-TYPE = TYP ## Vrátí číslo označující datový typ hodnoty.
-
-
-##
-## Logical functions Logické funkce
-##
-AND = A ## Vrátí hodnotu PRAVDA, mají-li všechny argumenty hodnotu PRAVDA.
-FALSE = NEPRAVDA ## Vrátí logickou hodnotu NEPRAVDA.
-IF = KDYŽ ## Určí, který logický test má proběhnout.
-IFERROR = IFERROR ## Pokud je vzorec vyhodnocen jako chyba, vrátí zadanou hodnotu. V opačném případě vrátí výsledek vzorce.
-NOT = NE ## Provede logickou negaci argumentu funkce.
-OR = NEBO ## Vrátí hodnotu PRAVDA, je-li alespoň jeden argument roven hodnotě PRAVDA.
-TRUE = PRAVDA ## Vrátí logickou hodnotu PRAVDA.
-
-
-##
-## Lookup and reference functions Vyhledávací funkce
-##
-ADDRESS = ODKAZ ## Vrátí textový odkaz na jednu buňku listu.
-AREAS = POČET.BLOKŮ ## Vrátí počet oblastí v odkazu.
-CHOOSE = ZVOLIT ## Zvolí hodnotu ze seznamu hodnot.
-COLUMN = SLOUPEC ## Vrátí číslo sloupce odkazu.
-COLUMNS = SLOUPCE ## Vrátí počet sloupců v odkazu.
-HLOOKUP = VVYHLEDAT ## Prohledá horní řádek matice a vrátí hodnotu určené buňky.
-HYPERLINK = HYPERTEXTOVÝ.ODKAZ ## Vytvoří zástupce nebo odkaz, který otevře dokument uložený na síťovém serveru, v síti intranet nebo Internet.
-INDEX = INDEX ## Pomocí rejstříku zvolí hodnotu z odkazu nebo matice.
-INDIRECT = NEPŘÍMÝ.ODKAZ ## Vrátí odkaz určený textovou hodnotou.
-LOOKUP = VYHLEDAT ## Vyhledá hodnoty ve vektoru nebo matici.
-MATCH = POZVYHLEDAT ## Vyhledá hodnoty v odkazu nebo matici.
-OFFSET = POSUN ## Vrátí posun odkazu od zadaného odkazu.
-ROW = ŘÁDEK ## Vrátí číslo řádku odkazu.
-ROWS = ŘÁDKY ## Vrátí počet řádků v odkazu.
-RTD = RTD ## Načte data reálného času z programu, který podporuje automatizaci modelu COM (Automatizace: Způsob práce s objekty určité aplikace z jiné aplikace nebo nástroje pro vývoj. Automatizace (dříve nazývaná automatizace OLE) je počítačovým standardem a je funkcí modelu COM (Component Object Model).).
-TRANSPOSE = TRANSPOZICE ## Vrátí transponovanou matici.
-VLOOKUP = SVYHLEDAT ## Prohledá první sloupec matice, přesune kurzor v řádku a vrátí hodnotu buňky.
-
-
-##
-## Math and trigonometry functions Matematické a trigonometrické funkce
-##
-ABS = ABS ## Vrátí absolutní hodnotu čísla.
-ACOS = ARCCOS ## Vrátí arkuskosinus čísla.
-ACOSH = ARCCOSH ## Vrátí hyperbolický arkuskosinus čísla.
-ASIN = ARCSIN ## Vrátí arkussinus čísla.
-ASINH = ARCSINH ## Vrátí hyperbolický arkussinus čísla.
-ATAN = ARCTG ## Vrátí arkustangens čísla.
-ATAN2 = ARCTG2 ## Vrátí arkustangens x-ové a y-ové souřadnice.
-ATANH = ARCTGH ## Vrátí hyperbolický arkustangens čísla.
-CEILING = ZAOKR.NAHORU ## Zaokrouhlí číslo na nejbližší celé číslo nebo na nejbližší násobek zadané hodnoty.
-COMBIN = KOMBINACE ## Vrátí počet kombinací pro daný počet položek.
-COS = COS ## Vrátí kosinus čísla.
-COSH = COSH ## Vrátí hyperbolický kosinus čísla.
-DEGREES = DEGREES ## Převede radiány na stupně.
-EVEN = ZAOKROUHLIT.NA.SUDÉ ## Zaokrouhlí číslo nahoru na nejbližší celé sudé číslo.
-EXP = EXP ## Vrátí základ přirozeného logaritmu e umocněný na zadané číslo.
-FACT = FAKTORIÁL ## Vrátí faktoriál čísla.
-FACTDOUBLE = FACTDOUBLE ## Vrátí dvojitý faktoriál čísla.
-FLOOR = ZAOKR.DOLŮ ## Zaokrouhlí číslo dolů, směrem k nule.
-GCD = GCD ## Vrátí největší společný dělitel.
-INT = CELÁ.ČÁST ## Zaokrouhlí číslo dolů na nejbližší celé číslo.
-LCM = LCM ## Vrátí nejmenší společný násobek.
-LN = LN ## Vrátí přirozený logaritmus čísla.
-LOG = LOGZ ## Vrátí logaritmus čísla při zadaném základu.
-LOG10 = LOG ## Vrátí dekadický logaritmus čísla.
-MDETERM = DETERMINANT ## Vrátí determinant matice.
-MINVERSE = INVERZE ## Vrátí inverzní matici.
-MMULT = SOUČIN.MATIC ## Vrátí součin dvou matic.
-MOD = MOD ## Vrátí zbytek po dělení.
-MROUND = MROUND ## Vrátí číslo zaokrouhlené na požadovaný násobek.
-MULTINOMIAL = MULTINOMIAL ## Vrátí mnohočlen z množiny čísel.
-ODD = ZAOKROUHLIT.NA.LICHÉ ## Zaokrouhlí číslo nahoru na nejbližší celé liché číslo.
-PI = PI ## Vrátí hodnotu čísla pí.
-POWER = POWER ## Umocní číslo na zadanou mocninu.
-PRODUCT = SOUČIN ## Vynásobí argumenty funkce.
-QUOTIENT = QUOTIENT ## Vrátí celou část dělení.
-RADIANS = RADIANS ## Převede stupně na radiány.
-RAND = NÁHČÍSLO ## Vrátí náhodné číslo mezi 0 a 1.
-RANDBETWEEN = RANDBETWEEN ## Vrátí náhodné číslo mezi zadanými čísly.
-ROMAN = ROMAN ## Převede arabskou číslici na římskou ve formátu textu.
-ROUND = ZAOKROUHLIT ## Zaokrouhlí číslo na zadaný počet číslic.
-ROUNDDOWN = ROUNDDOWN ## Zaokrouhlí číslo dolů, směrem k nule.
-ROUNDUP = ROUNDUP ## Zaokrouhlí číslo nahoru, směrem od nuly.
-SERIESSUM = SERIESSUM ## Vrátí součet mocninné řady určené podle vzorce.
-SIGN = SIGN ## Vrátí znaménko čísla.
-SIN = SIN ## Vrátí sinus daného úhlu.
-SINH = SINH ## Vrátí hyperbolický sinus čísla.
-SQRT = ODMOCNINA ## Vrátí kladnou druhou odmocninu.
-SQRTPI = SQRTPI ## Vrátí druhou odmocninu výrazu (číslo * pí).
-SUBTOTAL = SUBTOTAL ## Vrátí souhrn v seznamu nebo databázi.
-SUM = SUMA ## Sečte argumenty funkce.
-SUMIF = SUMIF ## Sečte buňky vybrané podle zadaných kritérií.
-SUMIFS = SUMIFS ## Sečte buňky určené více zadanými podmínkami.
-SUMPRODUCT = SOUČIN.SKALÁRNÍ ## Vrátí součet součinů odpovídajících prvků matic.
-SUMSQ = SUMA.ČTVERCŮ ## Vrátí součet čtverců argumentů.
-SUMX2MY2 = SUMX2MY2 ## Vrátí součet rozdílu čtverců odpovídajících hodnot ve dvou maticích.
-SUMX2PY2 = SUMX2PY2 ## Vrátí součet součtu čtverců odpovídajících hodnot ve dvou maticích.
-SUMXMY2 = SUMXMY2 ## Vrátí součet čtverců rozdílů odpovídajících hodnot ve dvou maticích.
-TAN = TGTG ## Vrátí tangens čísla.
-TANH = TGH ## Vrátí hyperbolický tangens čísla.
-TRUNC = USEKNOUT ## Zkrátí číslo na celé číslo.
-
-
-##
-## Statistical functions Statistické funkce
-##
-AVEDEV = PRŮMODCHYLKA ## Vrátí průměrnou hodnotu absolutních odchylek datových bodů od jejich střední hodnoty.
-AVERAGE = PRŮMĚR ## Vrátí průměrnou hodnotu argumentů.
-AVERAGEA = AVERAGEA ## Vrátí průměrnou hodnotu argumentů včetně čísel, textu a logických hodnot.
-AVERAGEIF = AVERAGEIF ## Vrátí průměrnou hodnotu (aritmetický průměr) všech buněk v oblasti, které vyhovují příslušné podmínce.
-AVERAGEIFS = AVERAGEIFS ## Vrátí průměrnou hodnotu (aritmetický průměr) všech buněk vyhovujících několika podmínkám.
-BETADIST = BETADIST ## Vrátí hodnotu součtového rozdělení beta.
-BETAINV = BETAINV ## Vrátí inverzní hodnotu součtového rozdělení pro zadané rozdělení beta.
-BINOMDIST = BINOMDIST ## Vrátí hodnotu binomického rozdělení pravděpodobnosti jednotlivých veličin.
-CHIDIST = CHIDIST ## Vrátí jednostrannou pravděpodobnost rozdělení chí-kvadrát.
-CHIINV = CHIINV ## Vrátí hodnotu funkce inverzní k distribuční funkci jednostranné pravděpodobnosti rozdělení chí-kvadrát.
-CHITEST = CHITEST ## Vrátí test nezávislosti.
-CONFIDENCE = CONFIDENCE ## Vrátí interval spolehlivosti pro střední hodnotu základního souboru.
-CORREL = CORREL ## Vrátí korelační koeficient mezi dvěma množinami dat.
-COUNT = POČET ## Vrátí počet čísel v seznamu argumentů.
-COUNTA = POČET2 ## Vrátí počet hodnot v seznamu argumentů.
-COUNTBLANK = COUNTBLANK ## Spočítá počet prázdných buněk v oblasti.
-COUNTIF = COUNTIF ## Spočítá buňky v oblasti, které odpovídají zadaným kritériím.
-COUNTIFS = COUNTIFS ## Spočítá buňky v oblasti, které odpovídají více kritériím.
-COVAR = COVAR ## Vrátí hodnotu kovariance, průměrnou hodnotu součinů párových odchylek
-CRITBINOM = CRITBINOM ## Vrátí nejmenší hodnotu, pro kterou má součtové binomické rozdělení hodnotu větší nebo rovnu hodnotě kritéria.
-DEVSQ = DEVSQ ## Vrátí součet čtverců odchylek.
-EXPONDIST = EXPONDIST ## Vrátí hodnotu exponenciálního rozdělení.
-FDIST = FDIST ## Vrátí hodnotu rozdělení pravděpodobnosti F.
-FINV = FINV ## Vrátí hodnotu inverzní funkce k distribuční funkci rozdělení F.
-FISHER = FISHER ## Vrátí hodnotu Fisherovy transformace.
-FISHERINV = FISHERINV ## Vrátí hodnotu inverzní funkce k Fisherově transformaci.
-FORECAST = FORECAST ## Vrátí hodnotu lineárního trendu.
-FREQUENCY = ČETNOSTI ## Vrátí četnost rozdělení jako svislou matici.
-FTEST = FTEST ## Vrátí výsledek F-testu.
-GAMMADIST = GAMMADIST ## Vrátí hodnotu rozdělení gama.
-GAMMAINV = GAMMAINV ## Vrátí hodnotu inverzní funkce k distribuční funkci součtového rozdělení gama.
-GAMMALN = GAMMALN ## Vrátí přirozený logaritmus funkce gama, Γ(x).
-GEOMEAN = GEOMEAN ## Vrátí geometrický průměr.
-GROWTH = LOGLINTREND ## Vrátí hodnoty exponenciálního trendu.
-HARMEAN = HARMEAN ## Vrátí harmonický průměr.
-HYPGEOMDIST = HYPGEOMDIST ## Vrátí hodnotu hypergeometrického rozdělení.
-INTERCEPT = INTERCEPT ## Vrátí úsek lineární regresní čáry.
-KURT = KURT ## Vrátí hodnotu excesu množiny dat.
-LARGE = LARGE ## Vrátí k-tou největší hodnotu množiny dat.
-LINEST = LINREGRESE ## Vrátí parametry lineárního trendu.
-LOGEST = LOGLINREGRESE ## Vrátí parametry exponenciálního trendu.
-LOGINV = LOGINV ## Vrátí inverzní funkci k distribuční funkci logaritmicko-normálního rozdělení.
-LOGNORMDIST = LOGNORMDIST ## Vrátí hodnotu součtového logaritmicko-normálního rozdělení.
-MAX = MAX ## Vrátí maximální hodnotu seznamu argumentů.
-MAXA = MAXA ## Vrátí maximální hodnotu seznamu argumentů včetně čísel, textu a logických hodnot.
-MEDIAN = MEDIAN ## Vrátí střední hodnotu zadaných čísel.
-MIN = MIN ## Vrátí minimální hodnotu seznamu argumentů.
-MINA = MINA ## Vrátí nejmenší hodnotu v seznamu argumentů včetně čísel, textu a logických hodnot.
-MODE = MODE ## Vrátí hodnotu, která se v množině dat vyskytuje nejčastěji.
-NEGBINOMDIST = NEGBINOMDIST ## Vrátí hodnotu negativního binomického rozdělení.
-NORMDIST = NORMDIST ## Vrátí hodnotu normálního součtového rozdělení.
-NORMINV = NORMINV ## Vrátí inverzní funkci k funkci normálního součtového rozdělení.
-NORMSDIST = NORMSDIST ## Vrátí hodnotu standardního normálního součtového rozdělení.
-NORMSINV = NORMSINV ## Vrátí inverzní funkci k funkci standardního normálního součtového rozdělení.
-PEARSON = PEARSON ## Vrátí Pearsonův výsledný momentový korelační koeficient.
-PERCENTILE = PERCENTIL ## Vrátí hodnotu k-tého percentilu hodnot v oblasti.
-PERCENTRANK = PERCENTRANK ## Vrátí pořadí hodnoty v množině dat vyjádřené procentuální částí množiny dat.
-PERMUT = PERMUTACE ## Vrátí počet permutací pro zadaný počet objektů.
-POISSON = POISSON ## Vrátí hodnotu distribuční funkce Poissonova rozdělení.
-PROB = PROB ## Vrátí pravděpodobnost výskytu hodnot v oblasti mezi dvěma mezními hodnotami.
-QUARTILE = QUARTIL ## Vrátí hodnotu kvartilu množiny dat.
-RANK = RANK ## Vrátí pořadí čísla v seznamu čísel.
-RSQ = RKQ ## Vrátí druhou mocninu Pearsonova výsledného momentového korelačního koeficientu.
-SKEW = SKEW ## Vrátí zešikmení rozdělení.
-SLOPE = SLOPE ## Vrátí směrnici lineární regresní čáry.
-SMALL = SMALL ## Vrátí k-tou nejmenší hodnotu množiny dat.
-STANDARDIZE = STANDARDIZE ## Vrátí normalizovanou hodnotu.
-STDEV = SMODCH.VÝBĚR ## Vypočte směrodatnou odchylku výběru.
-STDEVA = STDEVA ## Vypočte směrodatnou odchylku výběru včetně čísel, textu a logických hodnot.
-STDEVP = SMODCH ## Vypočte směrodatnou odchylku základního souboru.
-STDEVPA = STDEVPA ## Vypočte směrodatnou odchylku základního souboru včetně čísel, textu a logických hodnot.
-STEYX = STEYX ## Vrátí standardní chybu předpovězené hodnoty y pro každou hodnotu x v regresi.
-TDIST = TDIST ## Vrátí hodnotu Studentova t-rozdělení.
-TINV = TINV ## Vrátí inverzní funkci k distribuční funkci Studentova t-rozdělení.
-TREND = LINTREND ## Vrátí hodnoty lineárního trendu.
-TRIMMEAN = TRIMMEAN ## Vrátí střední hodnotu vnitřní části množiny dat.
-TTEST = TTEST ## Vrátí pravděpodobnost spojenou se Studentovým t-testem.
-VAR = VAR.VÝBĚR ## Vypočte rozptyl výběru.
-VARA = VARA ## Vypočte rozptyl výběru včetně čísel, textu a logických hodnot.
-VARP = VAR ## Vypočte rozptyl základního souboru.
-VARPA = VARPA ## Vypočte rozptyl základního souboru včetně čísel, textu a logických hodnot.
-WEIBULL = WEIBULL ## Vrátí hodnotu Weibullova rozdělení.
-ZTEST = ZTEST ## Vrátí jednostrannou P-hodnotu z-testu.
-
-
-##
-## Text functions Textové funkce
-##
-ASC = ASC ## Změní znaky s plnou šířkou (dvoubajtové)v řetězci znaků na znaky s poloviční šířkou (jednobajtové).
-BAHTTEXT = BAHTTEXT ## Převede číslo na text ve formátu, měny ß (baht).
-CHAR = ZNAK ## Vrátí znak určený číslem kódu.
-CLEAN = VYČISTIT ## Odebere z textu všechny netisknutelné znaky.
-CODE = KÓD ## Vrátí číselný kód prvního znaku zadaného textového řetězce.
-CONCATENATE = CONCATENATE ## Spojí několik textových položek do jedné.
-DOLLAR = KČ ## Převede číslo na text ve formátu měny Kč (česká koruna).
-EXACT = STEJNÉ ## Zkontroluje, zda jsou dvě textové hodnoty shodné.
-FIND = NAJÍT ## Nalezne textovou hodnotu uvnitř jiné (rozlišuje malá a velká písmena).
-FINDB = FINDB ## Nalezne textovou hodnotu uvnitř jiné (rozlišuje malá a velká písmena).
-FIXED = ZAOKROUHLIT.NA.TEXT ## Zformátuje číslo jako text s pevným počtem desetinných míst.
-JIS = JIS ## Změní znaky s poloviční šířkou (jednobajtové) v řetězci znaků na znaky s plnou šířkou (dvoubajtové).
-LEFT = ZLEVA ## Vrátí první znaky textové hodnoty umístěné nejvíce vlevo.
-LEFTB = LEFTB ## Vrátí první znaky textové hodnoty umístěné nejvíce vlevo.
-LEN = DÉLKA ## Vrátí počet znaků textového řetězce.
-LENB = LENB ## Vrátí počet znaků textového řetězce.
-LOWER = MALÁ ## Převede text na malá písmena.
-MID = ČÁST ## Vrátí určitý počet znaků textového řetězce počínaje zadaným místem.
-MIDB = MIDB ## Vrátí určitý počet znaků textového řetězce počínaje zadaným místem.
-PHONETIC = ZVUKOVÉ ## Extrahuje fonetické znaky (furigana) z textového řetězce.
-PROPER = VELKÁ2 ## Převede první písmeno každého slova textové hodnoty na velké.
-REPLACE = NAHRADIT ## Nahradí znaky uvnitř textu.
-REPLACEB = NAHRADITB ## Nahradí znaky uvnitř textu.
-REPT = OPAKOVAT ## Zopakuje text podle zadaného počtu opakování.
-RIGHT = ZPRAVA ## Vrátí první znaky textové hodnoty umístěné nejvíce vpravo.
-RIGHTB = RIGHTB ## Vrátí první znaky textové hodnoty umístěné nejvíce vpravo.
-SEARCH = HLEDAT ## Nalezne textovou hodnotu uvnitř jiné (malá a velká písmena nejsou rozlišována).
-SEARCHB = SEARCHB ## Nalezne textovou hodnotu uvnitř jiné (malá a velká písmena nejsou rozlišována).
-SUBSTITUTE = DOSADIT ## V textovém řetězci nahradí starý text novým.
-T = T ## Převede argumenty na text.
-TEXT = HODNOTA.NA.TEXT ## Zformátuje číslo a převede ho na text.
-TRIM = PROČISTIT ## Odstraní z textu mezery.
-UPPER = VELKÁ ## Převede text na velká písmena.
-VALUE = HODNOTA ## Převede textový argument na číslo.
diff --git a/admin/survey/excel/PHPExcel/locale/da/config b/admin/survey/excel/PHPExcel/locale/da/config
deleted file mode 100644
index 49292f1..0000000
--- a/admin/survey/excel/PHPExcel/locale/da/config
+++ /dev/null
@@ -1,48 +0,0 @@
-##
-## PHPExcel
-##
-## Copyright (c) 2006 - 2011 PHPExcel
-##
-## This library is free software; you can redistribute it and/or
-## modify it under the terms of the GNU Lesser General Public
-## License as published by the Free Software Foundation; either
-## version 2.1 of the License, or (at your option) any later version.
-##
-## This library is distributed in the hope that it will be useful,
-## but WITHOUT ANY WARRANTY; without even the implied warranty of
-## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-## Lesser General Public License for more details.
-##
-## You should have received a copy of the GNU Lesser General Public
-## License along with this library; if not, write to the Free Software
-## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-##
-## @category PHPExcel
-## @package PHPExcel_Settings
-## @copyright Copyright (c) 2006 - 2011 PHPExcel (http://www.codeplex.com/PHPExcel)
-## @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
-## @version 1.7.8, 2012-10-12
-##
-##
-
-
-ArgumentSeparator = ;
-
-
-##
-## (For future use)
-##
-currencySymbol = kr
-
-
-
-##
-## Excel Error Codes (For future use)
-##
-NULL = #NUL!
-DIV0 = #DIVISION/0!
-VALUE = #VÆRDI!
-REF = #REFERENCE!
-NAME = #NAVN?
-NUM = #NUM!
-NA = #I/T
diff --git a/admin/survey/excel/PHPExcel/locale/da/functions b/admin/survey/excel/PHPExcel/locale/da/functions
deleted file mode 100644
index affc19a..0000000
--- a/admin/survey/excel/PHPExcel/locale/da/functions
+++ /dev/null
@@ -1,438 +0,0 @@
-##
-## PHPExcel
-##
-## Copyright (c) 2006 - 2011 PHPExcel
-##
-## This library is free software; you can redistribute it and/or
-## modify it under the terms of the GNU Lesser General Public
-## License as published by the Free Software Foundation; either
-## version 2.1 of the License, or (at your option) any later version.
-##
-## This library is distributed in the hope that it will be useful,
-## but WITHOUT ANY WARRANTY; without even the implied warranty of
-## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-## Lesser General Public License for more details.
-##
-## You should have received a copy of the GNU Lesser General Public
-## License along with this library; if not, write to the Free Software
-## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-##
-## @category PHPExcel
-## @package PHPExcel_Calculation
-## @copyright Copyright (c) 2006 - 2011 PHPExcel (http://www.codeplex.com/PHPExcel)
-## @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
-## @version 1.7.8, 2012-10-12
-##
-## Data in this file derived from http://www.piuha.fi/excel-function-name-translation/
-##
-##
-
-
-##
-## Add-in and Automation functions Tilføjelsesprogram- og automatiseringsfunktioner
-##
-GETPIVOTDATA = HENTPIVOTDATA ## Returnerer data, der er lagret i en pivottabelrapport
-
-
-##
-## Cube functions Kubefunktioner
-##
-CUBEKPIMEMBER = KUBE.KPI.MEDLEM ## Returnerer navn, egenskab og mål for en KPI-indikator og viser navnet og egenskaben i cellen. En KPI-indikator er en målbar størrelse, f.eks. bruttooverskud pr. måned eller personaleudskiftning pr. kvartal, der bruges til at overvåge en organisations præstationer.
-CUBEMEMBER = KUBE.MEDLEM ## Returnerer et medlem eller en tupel fra kubehierarkiet. Bruges til at validere, om et medlem eller en tupel findes i kuben.
-CUBEMEMBERPROPERTY = KUBEMEDLEM.EGENSKAB ## Returnerer værdien af en egenskab for et medlem i kuben. Bruges til at validere, om et medlemsnavn findes i kuben, og returnere den angivne egenskab for medlemmet.
-CUBERANKEDMEMBER = KUBEMEDLEM.RANG ## Returnerer det n'te eller rangordnede medlem i et sæt. Bruges til at returnere et eller flere elementer i et sæt, f.eks. topsælgere eller de 10 bedste elever.
-CUBESET = KUBESÆT ## Definerer et beregnet sæt medlemmer eller tupler ved at sende et sætudtryk til kuben på serveren, som opretter sættet og returnerer det til Microsoft Office Excel.
-CUBESETCOUNT = KUBESÆT.TÆL ## Returnerer antallet af elementer i et sæt.
-CUBEVALUE = KUBEVÆRDI ## Returnerer en sammenlagt (aggregeret) værdi fra en kube.
-
-
-##
-## Database functions Databasefunktioner
-##
-DAVERAGE = DMIDDEL ## Returnerer gennemsnittet af markerede databaseposter
-DCOUNT = DTÆL ## Tæller de celler, der indeholder tal, i en database
-DCOUNTA = DTÆLV ## Tæller udfyldte celler i en database
-DGET = DHENT ## Uddrager en enkelt post, der opfylder de angivne kriterier, fra en database
-DMAX = DMAKS ## Returnerer den største værdi blandt markerede databaseposter
-DMIN = DMIN ## Returnerer den mindste værdi blandt markerede databaseposter
-DPRODUCT = DPRODUKT ## Ganger værdierne i et bestemt felt med poster, der opfylder kriterierne i en database
-DSTDEV = DSTDAFV ## Beregner et skøn over standardafvigelsen baseret på en stikprøve af markerede databaseposter
-DSTDEVP = DSTDAFVP ## Beregner standardafvigelsen baseret på hele populationen af markerede databaseposter
-DSUM = DSUM ## Sammenlægger de tal i feltkolonnen i databasen, der opfylder kriterierne
-DVAR = DVARIANS ## Beregner varians baseret på en stikprøve af markerede databaseposter
-DVARP = DVARIANSP ## Beregner varians baseret på hele populationen af markerede databaseposter
-
-
-##
-## Date and time functions Dato- og klokkeslætsfunktioner
-##
-DATE = DATO ## Returnerer serienummeret for en bestemt dato
-DATEVALUE = DATOVÆRDI ## Konverterer en dato i form af tekst til et serienummer
-DAY = DAG ## Konverterer et serienummer til en dag i måneden
-DAYS360 = DAGE360 ## Beregner antallet af dage mellem to datoer på grundlag af et år med 360 dage
-EDATE = EDATO ## Returnerer serienummeret for den dato, der ligger det angivne antal måneder før eller efter startdatoen
-EOMONTH = SLUT.PÅ.MÅNED ## Returnerer serienummeret på den sidste dag i måneden før eller efter et angivet antal måneder
-HOUR = TIME ## Konverterer et serienummer til en time
-MINUTE = MINUT ## Konverterer et serienummer til et minut
-MONTH = MÅNED ## Konverterer et serienummer til en måned
-NETWORKDAYS = ANTAL.ARBEJDSDAGE ## Returnerer antallet af hele arbejdsdage mellem to datoer
-NOW = NU ## Returnerer serienummeret for den aktuelle dato eller det aktuelle klokkeslæt
-SECOND = SEKUND ## Konverterer et serienummer til et sekund
-TIME = KLOKKESLÆT ## Returnerer serienummeret for et bestemt klokkeslæt
-TIMEVALUE = TIDSVÆRDI ## Konverterer et klokkeslæt i form af tekst til et serienummer
-TODAY = IDAG ## Returnerer serienummeret for dags dato
-WEEKDAY = UGEDAG ## Konverterer et serienummer til en ugedag
-WEEKNUM = UGE.NR ## Konverterer et serienummer til et tal, der angiver ugenummeret i året
-WORKDAY = ARBEJDSDAG ## Returnerer serienummeret for dagen før eller efter det angivne antal arbejdsdage
-YEAR = ÅR ## Konverterer et serienummer til et år
-YEARFRAC = ÅR.BRØK ## Returnerer årsbrøken, der repræsenterer antallet af hele dage mellem startdato og slutdato
-
-
-##
-## Engineering functions Tekniske funktioner
-##
-BESSELI = BESSELI ## Returnerer den modificerede Bessel-funktion In(x)
-BESSELJ = BESSELJ ## Returnerer Bessel-funktionen Jn(x)
-BESSELK = BESSELK ## Returnerer den modificerede Bessel-funktion Kn(x)
-BESSELY = BESSELY ## Returnerer Bessel-funktionen Yn(x)
-BIN2DEC = BIN.TIL.DEC ## Konverterer et binært tal til et decimaltal
-BIN2HEX = BIN.TIL.HEX ## Konverterer et binært tal til et heksadecimalt tal
-BIN2OCT = BIN.TIL.OKT ## Konverterer et binært tal til et oktaltal.
-COMPLEX = KOMPLEKS ## Konverterer reelle og imaginære koefficienter til et komplekst tal
-CONVERT = KONVERTER ## Konverterer et tal fra én måleenhed til en anden
-DEC2BIN = DEC.TIL.BIN ## Konverterer et decimaltal til et binært tal
-DEC2HEX = DEC.TIL.HEX ## Konverterer et decimaltal til et heksadecimalt tal
-DEC2OCT = DEC.TIL.OKT ## Konverterer et decimaltal til et oktaltal
-DELTA = DELTA ## Tester, om to værdier er ens
-ERF = FEJLFUNK ## Returner fejlfunktionen
-ERFC = FEJLFUNK.KOMP ## Returnerer den komplementære fejlfunktion
-GESTEP = GETRIN ## Tester, om et tal er større end en grænseværdi
-HEX2BIN = HEX.TIL.BIN ## Konverterer et heksadecimalt tal til et binært tal
-HEX2DEC = HEX.TIL.DEC ## Konverterer et decimaltal til et heksadecimalt tal
-HEX2OCT = HEX.TIL.OKT ## Konverterer et heksadecimalt tal til et oktaltal
-IMABS = IMAGABS ## Returnerer den absolutte værdi (modulus) for et komplekst tal
-IMAGINARY = IMAGINÆR ## Returnerer den imaginære koefficient for et komplekst tal
-IMARGUMENT = IMAGARGUMENT ## Returnerer argumentet theta, en vinkel udtrykt i radianer
-IMCONJUGATE = IMAGKONJUGERE ## Returnerer den komplekse konjugation af et komplekst tal
-IMCOS = IMAGCOS ## Returnerer et komplekst tals cosinus
-IMDIV = IMAGDIV ## Returnerer kvotienten for to komplekse tal
-IMEXP = IMAGEKSP ## Returnerer et komplekst tals eksponentialfunktion
-IMLN = IMAGLN ## Returnerer et komplekst tals naturlige logaritme
-IMLOG10 = IMAGLOG10 ## Returnerer et komplekst tals sædvanlige logaritme (titalslogaritme)
-IMLOG2 = IMAGLOG2 ## Returnerer et komplekst tals sædvanlige logaritme (totalslogaritme)
-IMPOWER = IMAGPOTENS ## Returnerer et komplekst tal opløftet i en heltalspotens
-IMPRODUCT = IMAGPRODUKT ## Returnerer produktet af komplekse tal
-IMREAL = IMAGREELT ## Returnerer den reelle koefficient for et komplekst tal
-IMSIN = IMAGSIN ## Returnerer et komplekst tals sinus
-IMSQRT = IMAGKVROD ## Returnerer et komplekst tals kvadratrod
-IMSUB = IMAGSUB ## Returnerer forskellen mellem to komplekse tal
-IMSUM = IMAGSUM ## Returnerer summen af komplekse tal
-OCT2BIN = OKT.TIL.BIN ## Konverterer et oktaltal til et binært tal
-OCT2DEC = OKT.TIL.DEC ## Konverterer et oktaltal til et decimaltal
-OCT2HEX = OKT.TIL.HEX ## Konverterer et oktaltal til et heksadecimalt tal
-
-
-##
-## Financial functions Finansielle funktioner
-##
-ACCRINT = PÅLØBRENTE ## Returnerer den påløbne rente for et værdipapir med periodiske renteudbetalinger
-ACCRINTM = PÅLØBRENTE.UDLØB ## Returnerer den påløbne rente for et værdipapir, hvor renteudbetalingen finder sted ved papirets udløb
-AMORDEGRC = AMORDEGRC ## Returnerer afskrivningsbeløbet for hver regnskabsperiode ved hjælp af en afskrivningskoefficient
-AMORLINC = AMORLINC ## Returnerer afskrivningsbeløbet for hver regnskabsperiode
-COUPDAYBS = KUPONDAGE.SA ## Returnerer antallet af dage fra starten af kuponperioden til afregningsdatoen
-COUPDAYS = KUPONDAGE.A ## Returnerer antallet af dage fra begyndelsen af kuponperioden til afregningsdatoen
-COUPDAYSNC = KUPONDAGE.ANK ## Returnerer antallet af dage i den kuponperiode, der indeholder afregningsdatoen
-COUPNCD = KUPONDAG.NÆSTE ## Returnerer den næste kupondato efter afregningsdatoen
-COUPNUM = KUPONBETALINGER ## Returnerer antallet af kuponudbetalinger mellem afregnings- og udløbsdatoen
-COUPPCD = KUPONDAG.FORRIGE ## Returnerer den forrige kupondato før afregningsdatoen
-CUMIPMT = AKKUM.RENTE ## Returnerer den akkumulerede rente, der betales på et lån mellem to perioder
-CUMPRINC = AKKUM.HOVEDSTOL ## Returnerer den akkumulerede nedbringelse af hovedstol mellem to perioder
-DB = DB ## Returnerer afskrivningen på et aktiv i en angivet periode ved anvendelse af saldometoden
-DDB = DSA ## Returnerer afskrivningsbeløbet for et aktiv over en bestemt periode ved anvendelse af dobbeltsaldometoden eller en anden afskrivningsmetode, som du angiver
-DISC = DISKONTO ## Returnerer et værdipapirs diskonto
-DOLLARDE = KR.DECIMAL ## Konverterer en kronepris udtrykt som brøk til en kronepris udtrykt som decimaltal
-DOLLARFR = KR.BRØK ## Konverterer en kronepris udtrykt som decimaltal til en kronepris udtrykt som brøk
-DURATION = VARIGHED ## Returnerer den årlige løbetid for et værdipapir med periodiske renteudbetalinger
-EFFECT = EFFEKTIV.RENTE ## Returnerer den årlige effektive rente
-FV = FV ## Returnerer fremtidsværdien af en investering
-FVSCHEDULE = FVTABEL ## Returnerer den fremtidige værdi af en hovedstol, når der er tilskrevet rente og rentes rente efter forskellige rentesatser
-INTRATE = RENTEFOD ## Returnerer renten på et fuldt ud investeret værdipapir
-IPMT = R.YDELSE ## Returnerer renten fra en investering for en given periode
-IRR = IA ## Returnerer den interne rente for en række pengestrømme
-ISPMT = ISPMT ## Beregner den betalte rente i løbet af en bestemt investeringsperiode
-MDURATION = MVARIGHED ## Returnerer Macauleys modificerede løbetid for et værdipapir med en formodet pari på kr. 100
-MIRR = MIA ## Returnerer den interne forrentning, hvor positive og negative pengestrømme finansieres til forskellig rente
-NOMINAL = NOMINEL ## Returnerer den årlige nominelle rente
-NPER = NPER ## Returnerer antallet af perioder for en investering
-NPV = NUTIDSVÆRDI ## Returnerer nettonutidsværdien for en investering baseret på en række periodiske pengestrømme og en diskonteringssats
-ODDFPRICE = ULIGE.KURS.PÅLYDENDE ## Returnerer kursen pr. kr. 100 nominel værdi for et værdipapir med en ulige (kort eller lang) første periode
-ODDFYIELD = ULIGE.FØRSTE.AFKAST ## Returnerer afkastet for et værdipapir med ulige første periode
-ODDLPRICE = ULIGE.SIDSTE.KURS ## Returnerer kursen pr. kr. 100 nominel værdi for et værdipapir med ulige sidste periode
-ODDLYIELD = ULIGE.SIDSTE.AFKAST ## Returnerer afkastet for et værdipapir med ulige sidste periode
-PMT = YDELSE ## Returnerer renten fra en investering for en given periode
-PPMT = H.YDELSE ## Returnerer ydelsen på hovedstolen for en investering i en given periode
-PRICE = KURS ## Returnerer kursen pr. kr 100 nominel værdi for et værdipapir med periodiske renteudbetalinger
-PRICEDISC = KURS.DISKONTO ## Returnerer kursen pr. kr 100 nominel værdi for et diskonteret værdipapir
-PRICEMAT = KURS.UDLØB ## Returnerer kursen pr. kr 100 nominel værdi for et værdipapir, hvor renten udbetales ved papirets udløb
-PV = NV ## Returnerer den nuværende værdi af en investering
-RATE = RENTE ## Returnerer renten i hver periode for en annuitet
-RECEIVED = MODTAGET.VED.UDLØB ## Returnerer det beløb, der modtages ved udløbet af et fuldt ud investeret værdipapir
-SLN = LA ## Returnerer den lineære afskrivning for et aktiv i en enkelt periode
-SYD = ÅRSAFSKRIVNING ## Returnerer den årlige afskrivning på et aktiv i en bestemt periode
-TBILLEQ = STATSOBLIGATION ## Returnerer det obligationsækvivalente afkast for en statsobligation
-TBILLPRICE = STATSOBLIGATION.KURS ## Returnerer kursen pr. kr 100 nominel værdi for en statsobligation
-TBILLYIELD = STATSOBLIGATION.AFKAST ## Returnerer en afkastet på en statsobligation
-VDB = VSA ## Returnerer afskrivningen på et aktiv i en angivet periode, herunder delperioder, ved brug af dobbeltsaldometoden
-XIRR = INTERN.RENTE ## Returnerer den interne rente for en plan over pengestrømme, der ikke behøver at være periodiske
-XNPV = NETTO.NUTIDSVÆRDI ## Returnerer nutidsværdien for en plan over pengestrømme, der ikke behøver at være periodiske
-YIELD = AFKAST ## Returnerer afkastet for et værdipapir med periodiske renteudbetalinger
-YIELDDISC = AFKAST.DISKONTO ## Returnerer det årlige afkast for et diskonteret værdipapir, f.eks. en statsobligation
-YIELDMAT = AFKAST.UDLØBSDATO ## Returnerer det årlige afkast for et værdipapir, hvor renten udbetales ved papirets udløb
-
-
-##
-## Information functions Informationsfunktioner
-##
-CELL = CELLE ## Returnerer oplysninger om formatering, placering eller indhold af en celle
-ERROR.TYPE = FEJLTYPE ## Returnerer et tal, der svarer til en fejltype
-INFO = INFO ## Returnerer oplysninger om det aktuelle operativmiljø
-ISBLANK = ER.TOM ## Returnerer SAND, hvis værdien er tom
-ISERR = ER.FJL ## Returnerer SAND, hvis værdien er en fejlværdi undtagen #I/T
-ISERROR = ER.FEJL ## Returnerer SAND, hvis værdien er en fejlværdi
-ISEVEN = ER.LIGE ## Returnerer SAND, hvis tallet er lige
-ISLOGICAL = ER.LOGISK ## Returnerer SAND, hvis værdien er en logisk værdi
-ISNA = ER.IKKE.TILGÆNGELIG ## Returnerer SAND, hvis værdien er fejlværdien #I/T
-ISNONTEXT = ER.IKKE.TEKST ## Returnerer SAND, hvis værdien ikke er tekst
-ISNUMBER = ER.TAL ## Returnerer SAND, hvis værdien er et tal
-ISODD = ER.ULIGE ## Returnerer SAND, hvis tallet er ulige
-ISREF = ER.REFERENCE ## Returnerer SAND, hvis værdien er en reference
-ISTEXT = ER.TEKST ## Returnerer SAND, hvis værdien er tekst
-N = TAL ## Returnerer en værdi konverteret til et tal
-NA = IKKE.TILGÆNGELIG ## Returnerer fejlværdien #I/T
-TYPE = VÆRDITYPE ## Returnerer et tal, der angiver datatypen for en værdi
-
-
-##
-## Logical functions Logiske funktioner
-##
-AND = OG ## Returnerer SAND, hvis alle argumenterne er sande
-FALSE = FALSK ## Returnerer den logiske værdi FALSK
-IF = HVIS ## Angiver en logisk test, der skal udføres
-IFERROR = HVIS.FEJL ## Returnerer en værdi, du angiver, hvis en formel evauleres som en fejl. Returnerer i modsat fald resultatet af formlen
-NOT = IKKE ## Vender argumentets logik om
-OR = ELLER ## Returneret værdien SAND, hvis mindst ét argument er sandt
-TRUE = SAND ## Returnerer den logiske værdi SAND
-
-
-##
-## Lookup and reference functions Opslags- og referencefunktioner
-##
-ADDRESS = ADRESSE ## Returnerer en reference som tekst til en enkelt celle i et regneark
-AREAS = OMRÅDER ## Returnerer antallet af områder i en reference
-CHOOSE = VÆLG ## Vælger en værdi på en liste med værdier
-COLUMN = KOLONNE ## Returnerer kolonnenummeret i en reference
-COLUMNS = KOLONNER ## Returnerer antallet af kolonner i en reference
-HLOOKUP = VOPSLAG ## Søger i den øverste række af en matrix og returnerer værdien af den angivne celle
-HYPERLINK = HYPERLINK ## Opretter en genvej kaldet et hyperlink, der åbner et dokument, som er lagret på en netværksserver, på et intranet eller på internettet
-INDEX = INDEKS ## Anvender et indeks til at vælge en værdi fra en reference eller en matrix
-INDIRECT = INDIREKTE ## Returnerer en reference, der er angivet af en tekstværdi
-LOOKUP = SLÅ.OP ## Søger værdier i en vektor eller en matrix
-MATCH = SAMMENLIGN ## Søger værdier i en reference eller en matrix
-OFFSET = FORSKYDNING ## Returnerer en reference forskudt i forhold til en given reference
-ROW = RÆKKE ## Returnerer rækkenummeret for en reference
-ROWS = RÆKKER ## Returnerer antallet af rækker i en reference
-RTD = RTD ## Henter realtidsdata fra et program, der understøtter COM-automatisering (Automation: En metode til at arbejde med objekter fra et andet program eller udviklingsværktøj. Automation, som tidligere blev kaldt OLE Automation, er en industristandard og en funktion i COM (Component Object Model).)
-TRANSPOSE = TRANSPONER ## Returnerer en transponeret matrix
-VLOOKUP = LOPSLAG ## Søger i øverste række af en matrix og flytter på tværs af rækken for at returnere en celleværdi
-
-
-##
-## Math and trigonometry functions Matematiske og trigonometriske funktioner
-##
-ABS = ABS ## Returnerer den absolutte værdi af et tal
-ACOS = ARCCOS ## Returnerer et tals arcus cosinus
-ACOSH = ARCCOSH ## Returnerer den inverse hyperbolske cosinus af tal
-ASIN = ARCSIN ## Returnerer et tals arcus sinus
-ASINH = ARCSINH ## Returnerer den inverse hyperbolske sinus for tal
-ATAN = ARCTAN ## Returnerer et tals arcus tangens
-ATAN2 = ARCTAN2 ## Returnerer de angivne x- og y-koordinaters arcus tangens
-ATANH = ARCTANH ## Returnerer et tals inverse hyperbolske tangens
-CEILING = AFRUND.LOFT ## Afrunder et tal til nærmeste heltal eller til nærmeste multiplum af betydning
-COMBIN = KOMBIN ## Returnerer antallet af kombinationer for et givet antal objekter
-COS = COS ## Returnerer et tals cosinus
-COSH = COSH ## Returnerer den inverse hyperbolske cosinus af et tal
-DEGREES = GRADER ## Konverterer radianer til grader
-EVEN = LIGE ## Runder et tal op til nærmeste lige heltal
-EXP = EKSP ## Returnerer e opløftet til en potens af et angivet tal
-FACT = FAKULTET ## Returnerer et tals fakultet
-FACTDOUBLE = DOBBELT.FAKULTET ## Returnerer et tals dobbelte fakultet
-FLOOR = AFRUND.GULV ## Runder et tal ned mod nul
-GCD = STØRSTE.FÆLLES.DIVISOR ## Returnerer den største fælles divisor
-INT = HELTAL ## Nedrunder et tal til det nærmeste heltal
-LCM = MINDSTE.FÆLLES.MULTIPLUM ## Returnerer det mindste fælles multiplum
-LN = LN ## Returnerer et tals naturlige logaritme
-LOG = LOG ## Returnerer logaritmen for et tal på grundlag af et angivet grundtal
-LOG10 = LOG10 ## Returnerer titalslogaritmen af et tal
-MDETERM = MDETERM ## Returnerer determinanten for en matrix
-MINVERSE = MINVERT ## Returnerer den inverse matrix for en matrix
-MMULT = MPRODUKT ## Returnerer matrixproduktet af to matrixer
-MOD = REST ## Returnerer restværdien fra division
-MROUND = MAFRUND ## Returnerer et tal afrundet til det ønskede multiplum
-MULTINOMIAL = MULTINOMIAL ## Returnerer et multinomialt talsæt
-ODD = ULIGE ## Runder et tal op til nærmeste ulige heltal
-PI = PI ## Returnerer værdien af pi
-POWER = POTENS ## Returnerer resultatet af et tal opløftet til en potens
-PRODUCT = PRODUKT ## Multiplicerer argumenterne
-QUOTIENT = KVOTIENT ## Returnerer heltalsdelen ved division
-RADIANS = RADIANER ## Konverterer grader til radianer
-RAND = SLUMP ## Returnerer et tilfældigt tal mellem 0 og 1
-RANDBETWEEN = SLUMP.MELLEM ## Returnerer et tilfældigt tal mellem de tal, der angives
-ROMAN = ROMERTAL ## Konverterer et arabertal til romertal som tekst
-ROUND = AFRUND ## Afrunder et tal til et angivet antal decimaler
-ROUNDDOWN = RUND.NED ## Runder et tal ned mod nul
-ROUNDUP = RUND.OP ## Runder et tal op, væk fra 0 (nul)
-SERIESSUM = SERIESUM ## Returnerer summen af en potensserie baseret på en formel
-SIGN = FORTEGN ## Returnerer et tals fortegn
-SIN = SIN ## Returnerer en given vinkels sinusværdi
-SINH = SINH ## Returnerer den hyperbolske sinus af et tal
-SQRT = KVROD ## Returnerer en positiv kvadratrod
-SQRTPI = KVRODPI ## Returnerer kvadratroden af (tal * pi;)
-SUBTOTAL = SUBTOTAL ## Returnerer en subtotal på en liste eller i en database
-SUM = SUM ## Lægger argumenterne sammen
-SUMIF = SUM.HVIS ## Lægger de celler sammen, der er specificeret af et givet kriterium.
-SUMIFS = SUM.HVISER ## Lægger de celler i et område sammen, der opfylder flere kriterier.
-SUMPRODUCT = SUMPRODUKT ## Returnerer summen af produkter af ens matrixkomponenter
-SUMSQ = SUMKV ## Returnerer summen af argumenternes kvadrater
-SUMX2MY2 = SUMX2MY2 ## Returnerer summen af differensen mellem kvadrater af ens værdier i to matrixer
-SUMX2PY2 = SUMX2PY2 ## Returnerer summen af summen af kvadrater af tilsvarende værdier i to matrixer
-SUMXMY2 = SUMXMY2 ## Returnerer summen af kvadrater af differenser mellem ens værdier i to matrixer
-TAN = TAN ## Returnerer et tals tangens
-TANH = TANH ## Returnerer et tals hyperbolske tangens
-TRUNC = AFKORT ## Afkorter et tal til et heltal
-
-
-##
-## Statistical functions Statistiske funktioner
-##
-AVEDEV = MAD ## Returnerer den gennemsnitlige numeriske afvigelse fra stikprøvens middelværdi
-AVERAGE = MIDDEL ## Returnerer middelværdien af argumenterne
-AVERAGEA = MIDDELV ## Returnerer middelværdien af argumenterne og medtager tal, tekst og logiske værdier
-AVERAGEIF = MIDDEL.HVIS ## Returnerer gennemsnittet (den aritmetiske middelværdi) af alle de celler, der opfylder et givet kriterium, i et område
-AVERAGEIFS = MIDDEL.HVISER ## Returnerer gennemsnittet (den aritmetiske middelværdi) af alle de celler, der opfylder flere kriterier.
-BETADIST = BETAFORDELING ## Returnerer den kumulative betafordelingsfunktion
-BETAINV = BETAINV ## Returnerer den inverse kumulative fordelingsfunktion for en angivet betafordeling
-BINOMDIST = BINOMIALFORDELING ## Returnerer punktsandsynligheden for binomialfordelingen
-CHIDIST = CHIFORDELING ## Returnerer fraktilsandsynligheden for en chi2-fordeling
-CHIINV = CHIINV ## Returnerer den inverse fraktilsandsynlighed for en chi2-fordeling
-CHITEST = CHITEST ## Foretager en test for uafhængighed
-CONFIDENCE = KONFIDENSINTERVAL ## Returnerer et konfidensinterval for en population
-CORREL = KORRELATION ## Returnerer korrelationskoefficienten mellem to datasæt
-COUNT = TÆL ## Tæller antallet af tal på en liste med argumenter
-COUNTA = TÆLV ## Tæller antallet af værdier på en liste med argumenter
-COUNTBLANK = ANTAL.BLANKE ## Tæller antallet af tomme celler i et område
-COUNTIF = TÆLHVIS ## Tæller antallet af celler, som opfylder de givne kriterier, i et område
-COUNTIFS = TÆL.HVISER ## Tæller antallet af de celler, som opfylder flere kriterier, i et område
-COVAR = KOVARIANS ## Beregner kovariansen mellem to stokastiske variabler
-CRITBINOM = KRITBINOM ## Returnerer den mindste værdi for x, for hvilken det gælder, at fordelingsfunktionen er mindre end eller lig med kriterieværdien.
-DEVSQ = SAK ## Returnerer summen af de kvadrerede afvigelser fra middelværdien
-EXPONDIST = EKSPFORDELING ## Returnerer eksponentialfordelingen
-FDIST = FFORDELING ## Returnerer fraktilsandsynligheden for F-fordelingen
-FINV = FINV ## Returnerer den inverse fraktilsandsynlighed for F-fordelingen
-FISHER = FISHER ## Returnerer Fisher-transformationen
-FISHERINV = FISHERINV ## Returnerer den inverse Fisher-transformation
-FORECAST = PROGNOSE ## Returnerer en prognoseværdi baseret på lineær tendens
-FREQUENCY = FREKVENS ## Returnerer en frekvensfordeling i en søjlevektor
-FTEST = FTEST ## Returnerer resultatet af en F-test til sammenligning af varians
-GAMMADIST = GAMMAFORDELING ## Returnerer fordelingsfunktionen for gammafordelingen
-GAMMAINV = GAMMAINV ## Returnerer den inverse fordelingsfunktion for gammafordelingen
-GAMMALN = GAMMALN ## Returnerer den naturlige logaritme til gammafordelingen, G(x)
-GEOMEAN = GEOMIDDELVÆRDI ## Returnerer det geometriske gennemsnit
-GROWTH = FORØGELSE ## Returnerer værdier langs en eksponentiel tendens
-HARMEAN = HARMIDDELVÆRDI ## Returnerer det harmoniske gennemsnit
-HYPGEOMDIST = HYPGEOFORDELING ## Returnerer punktsandsynligheden i en hypergeometrisk fordeling
-INTERCEPT = SKÆRING ## Returnerer afskæringsværdien på y-aksen i en lineær regression
-KURT = TOPSTEJL ## Returnerer kurtosisværdien for en stokastisk variabel
-LARGE = STOR ## Returnerer den k'te største værdi i et datasæt
-LINEST = LINREGR ## Returnerer parameterestimaterne for en lineær tendens
-LOGEST = LOGREGR ## Returnerer parameterestimaterne for en eksponentiel tendens
-LOGINV = LOGINV ## Returnerer den inverse fordelingsfunktion for lognormalfordelingen
-LOGNORMDIST = LOGNORMFORDELING ## Returnerer fordelingsfunktionen for lognormalfordelingen
-MAX = MAKS ## Returnerer den maksimale værdi på en liste med argumenter.
-MAXA = MAKSV ## Returnerer den maksimale værdi på en liste med argumenter og medtager tal, tekst og logiske værdier
-MEDIAN = MEDIAN ## Returnerer medianen for de angivne tal
-MIN = MIN ## Returnerer den mindste værdi på en liste med argumenter.
-MINA = MINV ## Returnerer den mindste værdi på en liste med argumenter og medtager tal, tekst og logiske værdier
-MODE = HYPPIGST ## Returnerer den hyppigste værdi i et datasæt
-NEGBINOMDIST = NEGBINOMFORDELING ## Returnerer den negative binomialfordeling
-NORMDIST = NORMFORDELING ## Returnerer fordelingsfunktionen for normalfordelingen
-NORMINV = NORMINV ## Returnerer den inverse fordelingsfunktion for normalfordelingen
-NORMSDIST = STANDARDNORMFORDELING ## Returnerer fordelingsfunktionen for standardnormalfordelingen
-NORMSINV = STANDARDNORMINV ## Returnerer den inverse fordelingsfunktion for standardnormalfordelingen
-PEARSON = PEARSON ## Returnerer Pearsons korrelationskoefficient
-PERCENTILE = FRAKTIL ## Returnerer den k'te fraktil for datasættet
-PERCENTRANK = PROCENTPLADS ## Returnerer den procentuelle rang for en given værdi i et datasæt
-PERMUT = PERMUT ## Returnerer antallet af permutationer for et givet sæt objekter
-POISSON = POISSON ## Returnerer fordelingsfunktionen for en Poisson-fordeling
-PROB = SANDSYNLIGHED ## Returnerer intervalsandsynligheden
-QUARTILE = KVARTIL ## Returnerer kvartilen i et givet datasæt
-RANK = PLADS ## Returnerer rangen for et tal på en liste med tal
-RSQ = FORKLARINGSGRAD ## Returnerer R2-værdien fra en simpel lineær regression
-SKEW = SKÆVHED ## Returnerer skævheden for en stokastisk variabel
-SLOPE = HÆLDNING ## Returnerer estimatet på hældningen fra en simpel lineær regression
-SMALL = MINDSTE ## Returnerer den k'te mindste værdi i datasættet
-STANDARDIZE = STANDARDISER ## Returnerer en standardiseret værdi
-STDEV = STDAFV ## Estimerer standardafvigelsen på basis af en stikprøve
-STDEVA = STDAFVV ## Beregner standardafvigelsen på basis af en prøve og medtager tal, tekst og logiske værdier
-STDEVP = STDAFVP ## Beregner standardafvigelsen på basis af en hel population
-STDEVPA = STDAFVPV ## Beregner standardafvigelsen på basis af en hel population og medtager tal, tekst og logiske værdier
-STEYX = STFYX ## Returnerer standardafvigelsen for de estimerede y-værdier i den simple lineære regression
-TDIST = TFORDELING ## Returnerer fordelingsfunktionen for Student's t-fordeling
-TINV = TINV ## Returnerer den inverse fordelingsfunktion for Student's t-fordeling
-TREND = TENDENS ## Returnerer værdi under antagelse af en lineær tendens
-TRIMMEAN = TRIMMIDDELVÆRDI ## Returnerer den trimmede middelværdi for datasættet
-TTEST = TTEST ## Returnerer den sandsynlighed, der er forbundet med Student's t-test
-VAR = VARIANS ## Beregner variansen på basis af en prøve
-VARA = VARIANSV ## Beregner variansen på basis af en prøve og medtager tal, tekst og logiske værdier
-VARP = VARIANSP ## Beregner variansen på basis af hele populationen
-VARPA = VARIANSPV ## Beregner variansen på basis af hele populationen og medtager tal, tekst og logiske værdier
-WEIBULL = WEIBULL ## Returnerer fordelingsfunktionen for Weibull-fordelingen
-ZTEST = ZTEST ## Returnerer sandsynlighedsværdien ved en en-sidet z-test
-
-
-##
-## Text functions Tekstfunktioner
-##
-ASC = ASC ## Ændrer engelske tegn i fuld bredde (dobbelt-byte) eller katakana i en tegnstreng til tegn i halv bredde (enkelt-byte)
-BAHTTEXT = BAHTTEKST ## Konverterer et tal til tekst ved hjælp af valutaformatet ß (baht)
-CHAR = TEGN ## Returnerer det tegn, der svarer til kodenummeret
-CLEAN = RENS ## Fjerner alle tegn, der ikke kan udskrives, fra tekst
-CODE = KODE ## Returnerer en numerisk kode for det første tegn i en tekststreng
-CONCATENATE = SAMMENKÆDNING ## Sammenkæder adskillige tekstelementer til ét tekstelement
-DOLLAR = KR ## Konverterer et tal til tekst ved hjælp af valutaformatet kr. (kroner)
-EXACT = EKSAKT ## Kontrollerer, om to tekstværdier er identiske
-FIND = FIND ## Søger efter en tekstværdi i en anden tekstværdi (der skelnes mellem store og små bogstaver)
-FINDB = FINDB ## Søger efter en tekstværdi i en anden tekstværdi (der skelnes mellem store og små bogstaver)
-FIXED = FAST ## Formaterer et tal som tekst med et fast antal decimaler
-JIS = JIS ## Ændrer engelske tegn i halv bredde (enkelt-byte) eller katakana i en tegnstreng til tegn i fuld bredde (dobbelt-byte)
-LEFT = VENSTRE ## Returnerer tegnet længst til venstre i en tekstværdi
-LEFTB = VENSTREB ## Returnerer tegnet længst til venstre i en tekstværdi
-LEN = LÆNGDE ## Returnerer antallet af tegn i en tekststreng
-LENB = LÆNGDEB ## Returnerer antallet af tegn i en tekststreng
-LOWER = SMÅ.BOGSTAVER ## Konverterer tekst til små bogstaver
-MID = MIDT ## Returnerer et bestemt antal tegn fra en tekststreng fra og med den angivne startposition
-MIDB = MIDTB ## Returnerer et bestemt antal tegn fra en tekststreng fra og med den angivne startposition
-PHONETIC = FONETISK ## Uddrager de fonetiske (furigana) tegn fra en tekststreng
-PROPER = STORT.FORBOGSTAV ## Konverterer første bogstav i hvert ord i teksten til stort bogstav
-REPLACE = ERSTAT ## Erstatter tegn i tekst
-REPLACEB = ERSTATB ## Erstatter tegn i tekst
-REPT = GENTAG ## Gentager tekst et givet antal gange
-RIGHT = HØJRE ## Returnerer tegnet længste til højre i en tekstværdi
-RIGHTB = HØJREB ## Returnerer tegnet længste til højre i en tekstværdi
-SEARCH = SØG ## Søger efter en tekstværdi i en anden tekstværdi (der skelnes ikke mellem store og små bogstaver)
-SEARCHB = SØGB ## Søger efter en tekstværdi i en anden tekstværdi (der skelnes ikke mellem store og små bogstaver)
-SUBSTITUTE = UDSKIFT ## Udskifter gammel tekst med ny tekst i en tekststreng
-T = T ## Konverterer argumenterne til tekst
-TEXT = TEKST ## Formaterer et tal og konverterer det til tekst
-TRIM = FJERN.OVERFLØDIGE.BLANKE ## Fjerner mellemrum fra tekst
-UPPER = STORE.BOGSTAVER ## Konverterer tekst til store bogstaver
-VALUE = VÆRDI ## Konverterer et tekstargument til et tal
diff --git a/admin/survey/excel/PHPExcel/locale/de/config b/admin/survey/excel/PHPExcel/locale/de/config
deleted file mode 100644
index 9519349..0000000
--- a/admin/survey/excel/PHPExcel/locale/de/config
+++ /dev/null
@@ -1,47 +0,0 @@
-##
-## PHPExcel
-##
-## Copyright (c) 2006 - 2011 PHPExcel
-##
-## This library is free software; you can redistribute it and/or
-## modify it under the terms of the GNU Lesser General Public
-## License as published by the Free Software Foundation; either
-## version 2.1 of the License, or (at your option) any later version.
-##
-## This library is distributed in the hope that it will be useful,
-## but WITHOUT ANY WARRANTY; without even the implied warranty of
-## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-## Lesser General Public License for more details.
-##
-## You should have received a copy of the GNU Lesser General Public
-## License along with this library; if not, write to the Free Software
-## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-##
-## @category PHPExcel
-## @package PHPExcel_Settings
-## @copyright Copyright (c) 2006 - 2011 PHPExcel (http://www.codeplex.com/PHPExcel)
-## @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
-## @version 1.7.8, 2012-10-12
-##
-##
-
-
-ArgumentSeparator = ;
-
-
-##
-## (For future use)
-##
-currencySymbol = €
-
-
-##
-## Excel Error Codes (For future use)
-##
-NULL = #NULL!
-DIV0 = #DIV/0!
-VALUE = #WERT!
-REF = #BEZUG!
-NAME = #NAME?
-NUM = #ZAHL!
-NA = #NV
diff --git a/admin/survey/excel/PHPExcel/locale/de/functions b/admin/survey/excel/PHPExcel/locale/de/functions
deleted file mode 100644
index 1c19c5b..0000000
--- a/admin/survey/excel/PHPExcel/locale/de/functions
+++ /dev/null
@@ -1,438 +0,0 @@
-##
-## PHPExcel
-##
-## Copyright (c) 2006 - 2011 PHPExcel
-##
-## This library is free software; you can redistribute it and/or
-## modify it under the terms of the GNU Lesser General Public
-## License as published by the Free Software Foundation; either
-## version 2.1 of the License, or (at your option) any later version.
-##
-## This library is distributed in the hope that it will be useful,
-## but WITHOUT ANY WARRANTY; without even the implied warranty of
-## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-## Lesser General Public License for more details.
-##
-## You should have received a copy of the GNU Lesser General Public
-## License along with this library; if not, write to the Free Software
-## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-##
-## @category PHPExcel
-## @package PHPExcel_Calculation
-## @copyright Copyright (c) 2006 - 2011 PHPExcel (http://www.codeplex.com/PHPExcel)
-## @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
-## @version 1.7.8, 2012-10-12
-##
-## Data in this file derived from http://www.piuha.fi/excel-function-name-translation/
-##
-##
-
-
-##
-## Add-in and Automation functions Add-In- und Automatisierungsfunktionen
-##
-GETPIVOTDATA = PIVOTDATENZUORDNEN ## In einem PivotTable-Bericht gespeicherte Daten werden zurückgegeben.
-
-
-##
-## Cube functions Cubefunktionen
-##
-CUBEKPIMEMBER = CUBEKPIELEMENT ## Gibt Name, Eigenschaft und Measure eines Key Performance Indicators (KPI) zurück und zeigt den Namen und die Eigenschaft in der Zelle an. Ein KPI ist ein quantifizierbares Maß, wie z. B. der monatliche Bruttogewinn oder die vierteljährliche Mitarbeiterfluktuation, mit dessen Hilfe das Leistungsverhalten eines Unternehmens überwacht werden kann.
-CUBEMEMBER = CUBEELEMENT ## Gibt ein Element oder ein Tuple in einer Cubehierarchie zurück. Wird verwendet, um zu überprüfen, ob das Element oder Tuple im Cube vorhanden ist.
-CUBEMEMBERPROPERTY = CUBEELEMENTEIGENSCHAFT ## Gibt den Wert einer Elementeigenschaft im Cube zurück. Wird verwendet, um zu überprüfen, ob ein Elementname im Cube vorhanden ist, und um die für dieses Element angegebene Eigenschaft zurückzugeben.
-CUBERANKEDMEMBER = CUBERANGELEMENT ## Gibt das n-te oder n-rangige Element in einer Menge zurück. Wird verwendet, um mindestens ein Element in einer Menge zurückzugeben, wie z. B. bester Vertriebsmitarbeiter oder 10 beste Kursteilnehmer.
-CUBESET = CUBEMENGE ## Definiert eine berechnete Menge Elemente oder Tuples durch Senden eines Mengenausdrucks an den Cube auf dem Server, der die Menge erstellt und an Microsoft Office Excel zurückgibt.
-CUBESETCOUNT = CUBEMENGENANZAHL ## Gibt die Anzahl der Elemente in einer Menge zurück.
-CUBEVALUE = CUBEWERT ## Gibt einen Aggregatwert aus einem Cube zurück.
-
-
-##
-## Database functions Datenbankfunktionen
-##
-DAVERAGE = DBMITTELWERT ## Gibt den Mittelwert der ausgewählten Datenbankeinträge zurück
-DCOUNT = DBANZAHL ## Zählt die Zellen mit Zahlen in einer Datenbank
-DCOUNTA = DBANZAHL2 ## Zählt nicht leere Zellen in einer Datenbank
-DGET = DBAUSZUG ## Extrahiert aus einer Datenbank einen einzelnen Datensatz, der den angegebenen Kriterien entspricht
-DMAX = DBMAX ## Gibt den größten Wert aus ausgewählten Datenbankeinträgen zurück
-DMIN = DBMIN ## Gibt den kleinsten Wert aus ausgewählten Datenbankeinträgen zurück
-DPRODUCT = DBPRODUKT ## Multipliziert die Werte in einem bestimmten Feld mit Datensätzen, die den Kriterien in einer Datenbank entsprechen
-DSTDEV = DBSTDABW ## Schätzt die Standardabweichung auf der Grundlage einer Stichprobe aus ausgewählten Datenbankeinträgen
-DSTDEVP = DBSTDABWN ## Berechnet die Standardabweichung auf der Grundlage der Grundgesamtheit ausgewählter Datenbankeinträge
-DSUM = DBSUMME ## Addiert die Zahlen in der Feldspalte mit Datensätzen in der Datenbank, die den Kriterien entsprechen
-DVAR = DBVARIANZ ## Schätzt die Varianz auf der Grundlage ausgewählter Datenbankeinträge
-DVARP = DBVARIANZEN ## Berechnet die Varianz auf der Grundlage der Grundgesamtheit ausgewählter Datenbankeinträge
-
-
-##
-## Date and time functions Datums- und Zeitfunktionen
-##
-DATE = DATUM ## Gibt die fortlaufende Zahl eines bestimmten Datums zurück
-DATEVALUE = DATWERT ## Wandelt ein Datum in Form von Text in eine fortlaufende Zahl um
-DAY = TAG ## Wandelt eine fortlaufende Zahl in den Tag des Monats um
-DAYS360 = TAGE360 ## Berechnet die Anzahl der Tage zwischen zwei Datumsangaben ausgehend von einem Jahr, das 360 Tage hat
-EDATE = EDATUM ## Gibt die fortlaufende Zahl des Datums zurück, bei dem es sich um die angegebene Anzahl von Monaten vor oder nach dem Anfangstermin handelt
-EOMONTH = MONATSENDE ## Gibt die fortlaufende Zahl des letzten Tags des Monats vor oder nach einer festgelegten Anzahl von Monaten zurück
-HOUR = STUNDE ## Wandelt eine fortlaufende Zahl in eine Stunde um
-MINUTE = MINUTE ## Wandelt eine fortlaufende Zahl in eine Minute um
-MONTH = MONAT ## Wandelt eine fortlaufende Zahl in einen Monat um
-NETWORKDAYS = NETTOARBEITSTAGE ## Gibt die Anzahl von ganzen Arbeitstagen zwischen zwei Datumswerten zurück
-NOW = JETZT ## Gibt die fortlaufende Zahl des aktuellen Datums und der aktuellen Uhrzeit zurück
-SECOND = SEKUNDE ## Wandelt eine fortlaufende Zahl in eine Sekunde um
-TIME = ZEIT ## Gibt die fortlaufende Zahl einer bestimmten Uhrzeit zurück
-TIMEVALUE = ZEITWERT ## Wandelt eine Uhrzeit in Form von Text in eine fortlaufende Zahl um
-TODAY = HEUTE ## Gibt die fortlaufende Zahl des heutigen Datums zurück
-WEEKDAY = WOCHENTAG ## Wandelt eine fortlaufende Zahl in den Wochentag um
-WEEKNUM = KALENDERWOCHE ## Wandelt eine fortlaufende Zahl in eine Zahl um, die angibt, in welche Woche eines Jahres das angegebene Datum fällt
-WORKDAY = ARBEITSTAG ## Gibt die fortlaufende Zahl des Datums vor oder nach einer bestimmten Anzahl von Arbeitstagen zurück
-YEAR = JAHR ## Wandelt eine fortlaufende Zahl in ein Jahr um
-YEARFRAC = BRTEILJAHRE ## Gibt die Anzahl der ganzen Tage zwischen Ausgangsdatum und Enddatum in Bruchteilen von Jahren zurück
-
-
-##
-## Engineering functions Konstruktionsfunktionen
-##
-BESSELI = BESSELI ## Gibt die geänderte Besselfunktion In(x) zurück
-BESSELJ = BESSELJ ## Gibt die Besselfunktion Jn(x) zurück
-BESSELK = BESSELK ## Gibt die geänderte Besselfunktion Kn(x) zurück
-BESSELY = BESSELY ## Gibt die Besselfunktion Yn(x) zurück
-BIN2DEC = BININDEZ ## Wandelt eine binäre Zahl (Dualzahl) in eine dezimale Zahl um
-BIN2HEX = BININHEX ## Wandelt eine binäre Zahl (Dualzahl) in eine hexadezimale Zahl um
-BIN2OCT = BININOKT ## Wandelt eine binäre Zahl (Dualzahl) in eine oktale Zahl um
-COMPLEX = KOMPLEXE ## Wandelt den Real- und Imaginärteil in eine komplexe Zahl um
-CONVERT = UMWANDELN ## Wandelt eine Zahl von einem Maßsystem in ein anderes um
-DEC2BIN = DEZINBIN ## Wandelt eine dezimale Zahl in eine binäre Zahl (Dualzahl) um
-DEC2HEX = DEZINHEX ## Wandelt eine dezimale Zahl in eine hexadezimale Zahl um
-DEC2OCT = DEZINOKT ## Wandelt eine dezimale Zahl in eine oktale Zahl um
-DELTA = DELTA ## Überprüft, ob zwei Werte gleich sind
-ERF = GAUSSFEHLER ## Gibt die Gauss'sche Fehlerfunktion zurück
-ERFC = GAUSSFKOMPL ## Gibt das Komplement zur Gauss'schen Fehlerfunktion zurück
-GESTEP = GGANZZAHL ## Überprüft, ob eine Zahl größer als ein gegebener Schwellenwert ist
-HEX2BIN = HEXINBIN ## Wandelt eine hexadezimale Zahl in eine Binärzahl um
-HEX2DEC = HEXINDEZ ## Wandelt eine hexadezimale Zahl in eine dezimale Zahl um
-HEX2OCT = HEXINOKT ## Wandelt eine hexadezimale Zahl in eine Oktalzahl um
-IMABS = IMABS ## Gibt den Absolutbetrag (Modulo) einer komplexen Zahl zurück
-IMAGINARY = IMAGINÄRTEIL ## Gibt den Imaginärteil einer komplexen Zahl zurück
-IMARGUMENT = IMARGUMENT ## Gibt das Argument Theta zurück, einen Winkel, der als Bogenmaß ausgedrückt wird
-IMCONJUGATE = IMKONJUGIERTE ## Gibt die konjugierte komplexe Zahl zu einer komplexen Zahl zurück
-IMCOS = IMCOS ## Gibt den Kosinus einer komplexen Zahl zurück
-IMDIV = IMDIV ## Gibt den Quotienten zweier komplexer Zahlen zurück
-IMEXP = IMEXP ## Gibt die algebraische Form einer in exponentieller Schreibweise vorliegenden komplexen Zahl zurück
-IMLN = IMLN ## Gibt den natürlichen Logarithmus einer komplexen Zahl zurück
-IMLOG10 = IMLOG10 ## Gibt den Logarithmus einer komplexen Zahl zur Basis 10 zurück
-IMLOG2 = IMLOG2 ## Gibt den Logarithmus einer komplexen Zahl zur Basis 2 zurück
-IMPOWER = IMAPOTENZ ## Potenziert eine komplexe Zahl mit einer ganzen Zahl
-IMPRODUCT = IMPRODUKT ## Gibt das Produkt von komplexen Zahlen zurück
-IMREAL = IMREALTEIL ## Gibt den Realteil einer komplexen Zahl zurück
-IMSIN = IMSIN ## Gibt den Sinus einer komplexen Zahl zurück
-IMSQRT = IMWURZEL ## Gibt die Quadratwurzel einer komplexen Zahl zurück
-IMSUB = IMSUB ## Gibt die Differenz zwischen zwei komplexen Zahlen zurück
-IMSUM = IMSUMME ## Gibt die Summe von komplexen Zahlen zurück
-OCT2BIN = OKTINBIN ## Wandelt eine oktale Zahl in eine binäre Zahl (Dualzahl) um
-OCT2DEC = OKTINDEZ ## Wandelt eine oktale Zahl in eine dezimale Zahl um
-OCT2HEX = OKTINHEX ## Wandelt eine oktale Zahl in eine hexadezimale Zahl um
-
-
-##
-## Financial functions Finanzmathematische Funktionen
-##
-ACCRINT = AUFGELZINS ## Gibt die aufgelaufenen Zinsen (Stückzinsen) eines Wertpapiers mit periodischen Zinszahlungen zurück
-ACCRINTM = AUFGELZINSF ## Gibt die aufgelaufenen Zinsen (Stückzinsen) eines Wertpapiers zurück, die bei Fälligkeit ausgezahlt werden
-AMORDEGRC = AMORDEGRK ## Gibt die Abschreibung für die einzelnen Abschreibungszeiträume mithilfe eines Abschreibungskoeffizienten zurück
-AMORLINC = AMORLINEARK ## Gibt die Abschreibung für die einzelnen Abschreibungszeiträume zurück
-COUPDAYBS = ZINSTERMTAGVA ## Gibt die Anzahl der Tage vom Anfang des Zinstermins bis zum Abrechnungstermin zurück
-COUPDAYS = ZINSTERMTAGE ## Gibt die Anzahl der Tage der Zinsperiode zurück, die den Abrechnungstermin einschließt
-COUPDAYSNC = ZINSTERMTAGNZ ## Gibt die Anzahl der Tage vom Abrechnungstermin bis zum nächsten Zinstermin zurück
-COUPNCD = ZINSTERMNZ ## Gibt das Datum des ersten Zinstermins nach dem Abrechnungstermin zurück
-COUPNUM = ZINSTERMZAHL ## Gibt die Anzahl der Zinstermine zwischen Abrechnungs- und Fälligkeitsdatum zurück
-COUPPCD = ZINSTERMVZ ## Gibt das Datum des letzten Zinstermins vor dem Abrechnungstermin zurück
-CUMIPMT = KUMZINSZ ## Berechnet die kumulierten Zinsen, die zwischen zwei Perioden zu zahlen sind
-CUMPRINC = KUMKAPITAL ## Berechnet die aufgelaufene Tilgung eines Darlehens, die zwischen zwei Perioden zu zahlen ist
-DB = GDA2 ## Gibt die geometrisch-degressive Abschreibung eines Wirtschaftsguts für eine bestimmte Periode zurück
-DDB = GDA ## Gibt die Abschreibung eines Anlageguts für einen angegebenen Zeitraum unter Verwendung der degressiven Doppelraten-Abschreibung oder eines anderen von Ihnen angegebenen Abschreibungsverfahrens zurück
-DISC = DISAGIO ## Gibt den in Prozent ausgedrückten Abzinsungssatz eines Wertpapiers zurück
-DOLLARDE = NOTIERUNGDEZ ## Wandelt eine Notierung, die als Dezimalbruch ausgedrückt wurde, in eine Dezimalzahl um
-DOLLARFR = NOTIERUNGBRU ## Wandelt eine Notierung, die als Dezimalzahl ausgedrückt wurde, in einen Dezimalbruch um
-DURATION = DURATION ## Gibt die jährliche Duration eines Wertpapiers mit periodischen Zinszahlungen zurück
-EFFECT = EFFEKTIV ## Gibt die jährliche Effektivverzinsung zurück
-FV = ZW ## Gibt den zukünftigen Wert (Endwert) einer Investition zurück
-FVSCHEDULE = ZW2 ## Gibt den aufgezinsten Wert des Anfangskapitals für eine Reihe periodisch unterschiedlicher Zinssätze zurück
-INTRATE = ZINSSATZ ## Gibt den Zinssatz eines voll investierten Wertpapiers zurück
-IPMT = ZINSZ ## Gibt die Zinszahlung einer Investition für die angegebene Periode zurück
-IRR = IKV ## Gibt den internen Zinsfuß einer Investition ohne Finanzierungskosten oder Reinvestitionsgewinne zurück
-ISPMT = ISPMT ## Berechnet die während eines bestimmten Zeitraums für eine Investition gezahlten Zinsen
-MDURATION = MDURATION ## Gibt die geänderte Dauer für ein Wertpapier mit einem angenommenen Nennwert von 100 € zurück
-MIRR = QIKV ## Gibt den internen Zinsfuß zurück, wobei positive und negative Zahlungen zu unterschiedlichen Sätzen finanziert werden
-NOMINAL = NOMINAL ## Gibt die jährliche Nominalverzinsung zurück
-NPER = ZZR ## Gibt die Anzahl der Zahlungsperioden einer Investition zurück
-NPV = NBW ## Gibt den Nettobarwert einer Investition auf Basis periodisch anfallender Zahlungen und eines Abzinsungsfaktors zurück
-ODDFPRICE = UNREGER.KURS ## Gibt den Kurs pro 100 € Nennwert eines Wertpapiers mit einem unregelmäßigen ersten Zinstermin zurück
-ODDFYIELD = UNREGER.REND ## Gibt die Rendite eines Wertpapiers mit einem unregelmäßigen ersten Zinstermin zurück
-ODDLPRICE = UNREGLE.KURS ## Gibt den Kurs pro 100 € Nennwert eines Wertpapiers mit einem unregelmäßigen letzten Zinstermin zurück
-ODDLYIELD = UNREGLE.REND ## Gibt die Rendite eines Wertpapiers mit einem unregelmäßigen letzten Zinstermin zurück
-PMT = RMZ ## Gibt die periodische Zahlung für eine Annuität zurück
-PPMT = KAPZ ## Gibt die Kapitalrückzahlung einer Investition für eine angegebene Periode zurück
-PRICE = KURS ## Gibt den Kurs pro 100 € Nennwert eines Wertpapiers zurück, das periodisch Zinsen auszahlt
-PRICEDISC = KURSDISAGIO ## Gibt den Kurs pro 100 € Nennwert eines unverzinslichen Wertpapiers zurück
-PRICEMAT = KURSFÄLLIG ## Gibt den Kurs pro 100 € Nennwert eines Wertpapiers zurück, das Zinsen am Fälligkeitsdatum auszahlt
-PV = BW ## Gibt den Barwert einer Investition zurück
-RATE = ZINS ## Gibt den Zinssatz pro Zeitraum einer Annuität zurück
-RECEIVED = AUSZAHLUNG ## Gibt den Auszahlungsbetrag eines voll investierten Wertpapiers am Fälligkeitstermin zurück
-SLN = LIA ## Gibt die lineare Abschreibung eines Wirtschaftsguts pro Periode zurück
-SYD = DIA ## Gibt die arithmetisch-degressive Abschreibung eines Wirtschaftsguts für eine bestimmte Periode zurück
-TBILLEQ = TBILLÄQUIV ## Gibt die Rendite für ein Wertpapier zurück
-TBILLPRICE = TBILLKURS ## Gibt den Kurs pro 100 € Nennwert eines Wertpapiers zurück
-TBILLYIELD = TBILLRENDITE ## Gibt die Rendite für ein Wertpapier zurück
-VDB = VDB ## Gibt die degressive Abschreibung eines Wirtschaftsguts für eine bestimmte Periode oder Teilperiode zurück
-XIRR = XINTZINSFUSS ## Gibt den internen Zinsfuß einer Reihe nicht periodisch anfallender Zahlungen zurück
-XNPV = XKAPITALWERT ## Gibt den Nettobarwert (Kapitalwert) einer Reihe nicht periodisch anfallender Zahlungen zurück
-YIELD = RENDITE ## Gibt die Rendite eines Wertpapiers zurück, das periodisch Zinsen auszahlt
-YIELDDISC = RENDITEDIS ## Gibt die jährliche Rendite eines unverzinslichen Wertpapiers zurück
-YIELDMAT = RENDITEFÄLL ## Gibt die jährliche Rendite eines Wertpapiers zurück, das Zinsen am Fälligkeitsdatum auszahlt
-
-
-##
-## Information functions Informationsfunktionen
-##
-CELL = ZELLE ## Gibt Informationen zu Formatierung, Position oder Inhalt einer Zelle zurück
-ERROR.TYPE = FEHLER.TYP ## Gibt eine Zahl zurück, die einem Fehlertyp entspricht
-INFO = INFO ## Gibt Informationen zur aktuellen Betriebssystemumgebung zurück
-ISBLANK = ISTLEER ## Gibt WAHR zurück, wenn der Wert leer ist
-ISERR = ISTFEHL ## Gibt WAHR zurück, wenn der Wert ein beliebiger Fehlerwert außer #N/V ist
-ISERROR = ISTFEHLER ## Gibt WAHR zurück, wenn der Wert ein beliebiger Fehlerwert ist
-ISEVEN = ISTGERADE ## Gibt WAHR zurück, wenn es sich um eine gerade Zahl handelt
-ISLOGICAL = ISTLOG ## Gibt WAHR zurück, wenn der Wert ein Wahrheitswert ist
-ISNA = ISTNV ## Gibt WAHR zurück, wenn der Wert der Fehlerwert #N/V ist
-ISNONTEXT = ISTKTEXT ## Gibt WAHR zurück, wenn der Wert ein Element ist, das keinen Text enthält
-ISNUMBER = ISTZAHL ## Gibt WAHR zurück, wenn der Wert eine Zahl ist
-ISODD = ISTUNGERADE ## Gibt WAHR zurück, wenn es sich um eine ungerade Zahl handelt
-ISREF = ISTBEZUG ## Gibt WAHR zurück, wenn der Wert ein Bezug ist
-ISTEXT = ISTTEXT ## Gibt WAHR zurück, wenn der Wert ein Element ist, das Text enthält
-N = N ## Gibt den in eine Zahl umgewandelten Wert zurück
-NA = NV ## Gibt den Fehlerwert #NV zurück
-TYPE = TYP ## Gibt eine Zahl zurück, die den Datentyp des angegebenen Werts anzeigt
-
-
-##
-## Logical functions Logische Funktionen
-##
-AND = UND ## Gibt WAHR zurück, wenn alle zugehörigen Argumente WAHR sind
-FALSE = FALSCH ## Gibt den Wahrheitswert FALSCH zurück
-IF = WENN ## Gibt einen logischen Test zum Ausführen an
-IFERROR = WENNFEHLER ## Gibt einen von Ihnen festgelegten Wert zurück, wenn die Auswertung der Formel zu einem Fehler führt; andernfalls wird das Ergebnis der Formel zurückgegeben
-NOT = NICHT ## Kehrt den Wahrheitswert der zugehörigen Argumente um
-OR = ODER ## Gibt WAHR zurück, wenn ein Argument WAHR ist
-TRUE = WAHR ## Gibt den Wahrheitswert WAHR zurück
-
-
-##
-## Lookup and reference functions Nachschlage- und Verweisfunktionen
-##
-ADDRESS = ADRESSE ## Gibt einen Bezug auf eine einzelne Zelle in einem Tabellenblatt als Text zurück
-AREAS = BEREICHE ## Gibt die Anzahl der innerhalb eines Bezugs aufgeführten Bereiche zurück
-CHOOSE = WAHL ## Wählt einen Wert aus eine Liste mit Werten aus
-COLUMN = SPALTE ## Gibt die Spaltennummer eines Bezugs zurück
-COLUMNS = SPALTEN ## Gibt die Anzahl der Spalten in einem Bezug zurück
-HLOOKUP = HVERWEIS ## Sucht in der obersten Zeile einer Matrix und gibt den Wert der angegebenen Zelle zurück
-HYPERLINK = HYPERLINK ## Erstellt eine Verknüpfung, über die ein auf einem Netzwerkserver, in einem Intranet oder im Internet gespeichertes Dokument geöffnet wird
-INDEX = INDEX ## Verwendet einen Index, um einen Wert aus einem Bezug oder einer Matrix auszuwählen
-INDIRECT = INDIREKT ## Gibt einen Bezug zurück, der von einem Textwert angegeben wird
-LOOKUP = LOOKUP ## Sucht Werte in einem Vektor oder einer Matrix
-MATCH = VERGLEICH ## Sucht Werte in einem Bezug oder einer Matrix
-OFFSET = BEREICH.VERSCHIEBEN ## Gibt einen Bezugoffset aus einem gegebenen Bezug zurück
-ROW = ZEILE ## Gibt die Zeilennummer eines Bezugs zurück
-ROWS = ZEILEN ## Gibt die Anzahl der Zeilen in einem Bezug zurück
-RTD = RTD ## Ruft Echtzeitdaten von einem Programm ab, das die COM-Automatisierung (Automatisierung: Ein Verfahren, bei dem aus einer Anwendung oder einem Entwicklungstool heraus mit den Objekten einer anderen Anwendung gearbeitet wird. Die früher als OLE-Automatisierung bezeichnete Automatisierung ist ein Industriestandard und eine Funktion von COM (Component Object Model).) unterstützt
-TRANSPOSE = MTRANS ## Gibt die transponierte Matrix einer Matrix zurück
-VLOOKUP = SVERWEIS ## Sucht in der ersten Spalte einer Matrix und arbeitet sich durch die Zeile, um den Wert einer Zelle zurückzugeben
-
-
-##
-## Math and trigonometry functions Mathematische und trigonometrische Funktionen
-##
-ABS = ABS ## Gibt den Absolutwert einer Zahl zurück
-ACOS = ARCCOS ## Gibt den Arkuskosinus einer Zahl zurück
-ACOSH = ARCCOSHYP ## Gibt den umgekehrten hyperbolischen Kosinus einer Zahl zurück
-ASIN = ARCSIN ## Gibt den Arkussinus einer Zahl zurück
-ASINH = ARCSINHYP ## Gibt den umgekehrten hyperbolischen Sinus einer Zahl zurück
-ATAN = ARCTAN ## Gibt den Arkustangens einer Zahl zurück
-ATAN2 = ARCTAN2 ## Gibt den Arkustangens einer x- und einer y-Koordinate zurück
-ATANH = ARCTANHYP ## Gibt den umgekehrten hyperbolischen Tangens einer Zahl zurück
-CEILING = OBERGRENZE ## Rundet eine Zahl auf die nächste ganze Zahl oder das nächste Vielfache von Schritt
-COMBIN = KOMBINATIONEN ## Gibt die Anzahl der Kombinationen für eine bestimmte Anzahl von Objekten zurück
-COS = COS ## Gibt den Kosinus einer Zahl zurück
-COSH = COSHYP ## Gibt den hyperbolischen Kosinus einer Zahl zurück
-DEGREES = GRAD ## Wandelt Bogenmaß (Radiant) in Grad um
-EVEN = GERADE ## Rundet eine Zahl auf die nächste gerade ganze Zahl auf
-EXP = EXP ## Potenziert die Basis e mit der als Argument angegebenen Zahl
-FACT = FAKULTÄT ## Gibt die Fakultät einer Zahl zurück
-FACTDOUBLE = ZWEIFAKULTÄT ## Gibt die Fakultät zu Zahl mit Schrittlänge 2 zurück
-FLOOR = UNTERGRENZE ## Rundet die Zahl auf Anzahl_Stellen ab
-GCD = GGT ## Gibt den größten gemeinsamen Teiler zurück
-INT = GANZZAHL ## Rundet eine Zahl auf die nächstkleinere ganze Zahl ab
-LCM = KGV ## Gibt das kleinste gemeinsame Vielfache zurück
-LN = LN ## Gibt den natürlichen Logarithmus einer Zahl zurück
-LOG = LOG ## Gibt den Logarithmus einer Zahl zu der angegebenen Basis zurück
-LOG10 = LOG10 ## Gibt den Logarithmus einer Zahl zur Basis 10 zurück
-MDETERM = MDET ## Gibt die Determinante einer Matrix zurück
-MINVERSE = MINV ## Gibt die inverse Matrix einer Matrix zurück
-MMULT = MMULT ## Gibt das Produkt zweier Matrizen zurück
-MOD = REST ## Gibt den Rest einer Division zurück
-MROUND = VRUNDEN ## Gibt eine auf das gewünschte Vielfache gerundete Zahl zurück
-MULTINOMIAL = POLYNOMIAL ## Gibt den Polynomialkoeffizienten einer Gruppe von Zahlen zurück
-ODD = UNGERADE ## Rundet eine Zahl auf die nächste ungerade ganze Zahl auf
-PI = PI ## Gibt den Wert Pi zurück
-POWER = POTENZ ## Gibt als Ergebnis eine potenzierte Zahl zurück
-PRODUCT = PRODUKT ## Multipliziert die zugehörigen Argumente
-QUOTIENT = QUOTIENT ## Gibt den ganzzahligen Anteil einer Division zurück
-RADIANS = BOGENMASS ## Wandelt Grad in Bogenmaß (Radiant) um
-RAND = ZUFALLSZAHL ## Gibt eine Zufallszahl zwischen 0 und 1 zurück
-RANDBETWEEN = ZUFALLSBEREICH ## Gibt eine Zufallszahl aus dem festgelegten Bereich zurück
-ROMAN = RÖMISCH ## Wandelt eine arabische Zahl in eine römische Zahl als Text um
-ROUND = RUNDEN ## Rundet eine Zahl auf eine bestimmte Anzahl von Dezimalstellen
-ROUNDDOWN = ABRUNDEN ## Rundet die Zahl auf Anzahl_Stellen ab
-ROUNDUP = AUFRUNDEN ## Rundet die Zahl auf Anzahl_Stellen auf
-SERIESSUM = POTENZREIHE ## Gibt die Summe von Potenzen (zur Berechnung von Potenzreihen und dichotomen Wahrscheinlichkeiten) zurück
-SIGN = VORZEICHEN ## Gibt das Vorzeichen einer Zahl zurück
-SIN = SIN ## Gibt den Sinus einer Zahl zurück
-SINH = SINHYP ## Gibt den hyperbolischen Sinus einer Zahl zurück
-SQRT = WURZEL ## Gibt die Quadratwurzel einer Zahl zurück
-SQRTPI = WURZELPI ## Gibt die Wurzel aus der mit Pi (pi) multiplizierten Zahl zurück
-SUBTOTAL = TEILERGEBNIS ## Gibt ein Teilergebnis in einer Liste oder Datenbank zurück
-SUM = SUMME ## Addiert die zugehörigen Argumente
-SUMIF = SUMMEWENN ## Addiert Zahlen, die mit den Suchkriterien übereinstimmen
-SUMIFS = SUMMEWENNS ## Die Zellen, die mehrere Kriterien erfüllen, werden in einem Bereich hinzugefügt
-SUMPRODUCT = SUMMENPRODUKT ## Gibt die Summe der Produkte zusammengehöriger Matrixkomponenten zurück
-SUMSQ = QUADRATESUMME ## Gibt die Summe der quadrierten Argumente zurück
-SUMX2MY2 = SUMMEX2MY2 ## Gibt die Summe der Differenzen der Quadrate für zusammengehörige Komponenten zweier Matrizen zurück
-SUMX2PY2 = SUMMEX2PY2 ## Gibt die Summe der Quadrate für zusammengehörige Komponenten zweier Matrizen zurück
-SUMXMY2 = SUMMEXMY2 ## Gibt die Summe der quadrierten Differenzen für zusammengehörige Komponenten zweier Matrizen zurück
-TAN = TAN ## Gibt den Tangens einer Zahl zurück
-TANH = TANHYP ## Gibt den hyperbolischen Tangens einer Zahl zurück
-TRUNC = KÜRZEN ## Schneidet die Kommastellen einer Zahl ab und gibt als Ergebnis eine ganze Zahl zurück
-
-
-##
-## Statistical functions Statistische Funktionen
-##
-AVEDEV = MITTELABW ## Gibt die durchschnittliche absolute Abweichung einer Reihe von Merkmalsausprägungen und ihrem Mittelwert zurück
-AVERAGE = MITTELWERT ## Gibt den Mittelwert der zugehörigen Argumente zurück
-AVERAGEA = MITTELWERTA ## Gibt den Mittelwert der zugehörigen Argumente, die Zahlen, Text und Wahrheitswerte enthalten, zurück
-AVERAGEIF = MITTELWERTWENN ## Der Durchschnittswert (arithmetisches Mittel) für alle Zellen in einem Bereich, die einem angegebenen Kriterium entsprechen, wird zurückgegeben
-AVERAGEIFS = MITTELWERTWENNS ## Gibt den Durchschnittswert (arithmetisches Mittel) aller Zellen zurück, die mehreren Kriterien entsprechen
-BETADIST = BETAVERT ## Gibt die Werte der kumulierten Betaverteilungsfunktion zurück
-BETAINV = BETAINV ## Gibt das Quantil der angegebenen Betaverteilung zurück
-BINOMDIST = BINOMVERT ## Gibt Wahrscheinlichkeiten einer binomialverteilten Zufallsvariablen zurück
-CHIDIST = CHIVERT ## Gibt Werte der Verteilungsfunktion (1-Alpha) einer Chi-Quadrat-verteilten Zufallsgröße zurück
-CHIINV = CHIINV ## Gibt Quantile der Verteilungsfunktion (1-Alpha) der Chi-Quadrat-Verteilung zurück
-CHITEST = CHITEST ## Gibt die Teststatistik eines Unabhängigkeitstests zurück
-CONFIDENCE = KONFIDENZ ## Ermöglicht die Berechnung des 1-Alpha Konfidenzintervalls für den Erwartungswert einer Zufallsvariablen
-CORREL = KORREL ## Gibt den Korrelationskoeffizienten zweier Reihen von Merkmalsausprägungen zurück
-COUNT = ANZAHL ## Gibt die Anzahl der Zahlen in der Liste mit Argumenten an
-COUNTA = ANZAHL2 ## Gibt die Anzahl der Werte in der Liste mit Argumenten an
-COUNTBLANK = ANZAHLLEEREZELLEN ## Gibt die Anzahl der leeren Zellen in einem Bereich an
-COUNTIF = ZÄHLENWENN ## Gibt die Anzahl der Zellen in einem Bereich an, deren Inhalte mit den Suchkriterien übereinstimmen
-COUNTIFS = ZÄHLENWENNS ## Gibt die Anzahl der Zellen in einem Bereich an, deren Inhalte mit mehreren Suchkriterien übereinstimmen
-COVAR = KOVAR ## Gibt die Kovarianz zurück, den Mittelwert der für alle Datenpunktpaare gebildeten Produkte der Abweichungen
-CRITBINOM = KRITBINOM ## Gibt den kleinsten Wert zurück, für den die kumulierten Wahrscheinlichkeiten der Binomialverteilung kleiner oder gleich einer Grenzwahrscheinlichkeit sind
-DEVSQ = SUMQUADABW ## Gibt die Summe der quadrierten Abweichungen der Datenpunkte von ihrem Stichprobenmittelwert zurück
-EXPONDIST = EXPONVERT ## Gibt Wahrscheinlichkeiten einer exponential verteilten Zufallsvariablen zurück
-FDIST = FVERT ## Gibt Werte der Verteilungsfunktion (1-Alpha) einer F-verteilten Zufallsvariablen zurück
-FINV = FINV ## Gibt Quantile der F-Verteilung zurück
-FISHER = FISHER ## Gibt die Fisher-Transformation zurück
-FISHERINV = FISHERINV ## Gibt die Umkehrung der Fisher-Transformation zurück
-FORECAST = PROGNOSE ## Gibt einen Wert zurück, der sich aus einem linearen Trend ergibt
-FREQUENCY = HÄUFIGKEIT ## Gibt eine Häufigkeitsverteilung als vertikale Matrix zurück
-FTEST = FTEST ## Gibt die Teststatistik eines F-Tests zurück
-GAMMADIST = GAMMAVERT ## Gibt Wahrscheinlichkeiten einer gammaverteilten Zufallsvariablen zurück
-GAMMAINV = GAMMAINV ## Gibt Quantile der Gammaverteilung zurück
-GAMMALN = GAMMALN ## Gibt den natürlichen Logarithmus der Gammafunktion zurück, Γ(x)
-GEOMEAN = GEOMITTEL ## Gibt das geometrische Mittel zurück
-GROWTH = VARIATION ## Gibt Werte zurück, die sich aus einem exponentiellen Trend ergeben
-HARMEAN = HARMITTEL ## Gibt das harmonische Mittel zurück
-HYPGEOMDIST = HYPGEOMVERT ## Gibt Wahrscheinlichkeiten einer hypergeometrisch-verteilten Zufallsvariablen zurück
-INTERCEPT = ACHSENABSCHNITT ## Gibt den Schnittpunkt der Regressionsgeraden zurück
-KURT = KURT ## Gibt die Kurtosis (Exzess) einer Datengruppe zurück
-LARGE = KGRÖSSTE ## Gibt den k-größten Wert einer Datengruppe zurück
-LINEST = RGP ## Gibt die Parameter eines linearen Trends zurück
-LOGEST = RKP ## Gibt die Parameter eines exponentiellen Trends zurück
-LOGINV = LOGINV ## Gibt Quantile der Lognormalverteilung zurück
-LOGNORMDIST = LOGNORMVERT ## Gibt Werte der Verteilungsfunktion einer lognormalverteilten Zufallsvariablen zurück
-MAX = MAX ## Gibt den Maximalwert einer Liste mit Argumenten zurück
-MAXA = MAXA ## Gibt den Maximalwert einer Liste mit Argumenten zurück, die Zahlen, Text und Wahrheitswerte enthalten
-MEDIAN = MEDIAN ## Gibt den Median der angegebenen Zahlen zurück
-MIN = MIN ## Gibt den Minimalwert einer Liste mit Argumenten zurück
-MINA = MINA ## Gibt den kleinsten Wert einer Liste mit Argumenten zurück, die Zahlen, Text und Wahrheitswerte enthalten
-MODE = MODALWERT ## Gibt den am häufigsten vorkommenden Wert in einer Datengruppe zurück
-NEGBINOMDIST = NEGBINOMVERT ## Gibt Wahrscheinlichkeiten einer negativen, binominal verteilten Zufallsvariablen zurück
-NORMDIST = NORMVERT ## Gibt Wahrscheinlichkeiten einer normal verteilten Zufallsvariablen zurück
-NORMINV = NORMINV ## Gibt Quantile der Normalverteilung zurück
-NORMSDIST = STANDNORMVERT ## Gibt Werte der Verteilungsfunktion einer standardnormalverteilten Zufallsvariablen zurück
-NORMSINV = STANDNORMINV ## Gibt Quantile der Standardnormalverteilung zurück
-PEARSON = PEARSON ## Gibt den Pearsonschen Korrelationskoeffizienten zurück
-PERCENTILE = QUANTIL ## Gibt das Alpha-Quantil einer Gruppe von Daten zurück
-PERCENTRANK = QUANTILSRANG ## Gibt den prozentualen Rang (Alpha) eines Werts in einer Datengruppe zurück
-PERMUT = VARIATIONEN ## Gibt die Anzahl der Möglichkeiten zurück, um k Elemente aus einer Menge von n Elementen ohne Zurücklegen zu ziehen
-POISSON = POISSON ## Gibt Wahrscheinlichkeiten einer poissonverteilten Zufallsvariablen zurück
-PROB = WAHRSCHBEREICH ## Gibt die Wahrscheinlichkeit für ein von zwei Werten eingeschlossenes Intervall zurück
-QUARTILE = QUARTILE ## Gibt die Quartile der Datengruppe zurück
-RANK = RANG ## Gibt den Rang zurück, den eine Zahl innerhalb einer Liste von Zahlen einnimmt
-RSQ = BESTIMMTHEITSMASS ## Gibt das Quadrat des Pearsonschen Korrelationskoeffizienten zurück
-SKEW = SCHIEFE ## Gibt die Schiefe einer Verteilung zurück
-SLOPE = STEIGUNG ## Gibt die Steigung der Regressionsgeraden zurück
-SMALL = KKLEINSTE ## Gibt den k-kleinsten Wert einer Datengruppe zurück
-STANDARDIZE = STANDARDISIERUNG ## Gibt den standardisierten Wert zurück
-STDEV = STABW ## Schätzt die Standardabweichung ausgehend von einer Stichprobe
-STDEVA = STABWA ## Schätzt die Standardabweichung ausgehend von einer Stichprobe, die Zahlen, Text und Wahrheitswerte enthält
-STDEVP = STABWN ## Berechnet die Standardabweichung ausgehend von der Grundgesamtheit
-STDEVPA = STABWNA ## Berechnet die Standardabweichung ausgehend von der Grundgesamtheit, die Zahlen, Text und Wahrheitswerte enthält
-STEYX = STFEHLERYX ## Gibt den Standardfehler der geschätzten y-Werte für alle x-Werte der Regression zurück
-TDIST = TVERT ## Gibt Werte der Verteilungsfunktion (1-Alpha) einer (Student) t-verteilten Zufallsvariablen zurück
-TINV = TINV ## Gibt Quantile der t-Verteilung zurück
-TREND = TREND ## Gibt Werte zurück, die sich aus einem linearen Trend ergeben
-TRIMMEAN = GESTUTZTMITTEL ## Gibt den Mittelwert einer Datengruppe zurück, ohne die Randwerte zu berücksichtigen
-TTEST = TTEST ## Gibt die Teststatistik eines Student'schen t-Tests zurück
-VAR = VARIANZ ## Schätzt die Varianz ausgehend von einer Stichprobe
-VARA = VARIANZA ## Schätzt die Varianz ausgehend von einer Stichprobe, die Zahlen, Text und Wahrheitswerte enthält
-VARP = VARIANZEN ## Berechnet die Varianz ausgehend von der Grundgesamtheit
-VARPA = VARIANZENA ## Berechnet die Varianz ausgehend von der Grundgesamtheit, die Zahlen, Text und Wahrheitswerte enthält
-WEIBULL = WEIBULL ## Gibt Wahrscheinlichkeiten einer weibullverteilten Zufallsvariablen zurück
-ZTEST = GTEST ## Gibt den einseitigen Wahrscheinlichkeitswert für einen Gausstest (Normalverteilung) zurück
-
-
-##
-## Text functions Textfunktionen
-##
-ASC = ASC ## Konvertiert DB-Text in einer Zeichenfolge (lateinische Buchstaben oder Katakana) in SB-Text
-BAHTTEXT = BAHTTEXT ## Wandelt eine Zahl in Text im Währungsformat ß (Baht) um
-CHAR = ZEICHEN ## Gibt das der Codezahl entsprechende Zeichen zurück
-CLEAN = SÄUBERN ## Löscht alle nicht druckbaren Zeichen aus einem Text
-CODE = CODE ## Gibt die Codezahl des ersten Zeichens in einem Text zurück
-CONCATENATE = VERKETTEN ## Verknüpft mehrere Textelemente zu einem Textelement
-DOLLAR = DM ## Wandelt eine Zahl in Text im Währungsformat € (Euro) um
-EXACT = IDENTISCH ## Prüft, ob zwei Textwerte identisch sind
-FIND = FINDEN ## Sucht nach einem Textwert, der in einem anderen Textwert enthalten ist (Groß-/Kleinschreibung wird unterschieden)
-FINDB = FINDENB ## Sucht nach einem Textwert, der in einem anderen Textwert enthalten ist (Groß-/Kleinschreibung wird unterschieden)
-FIXED = FEST ## Formatiert eine Zahl als Text mit einer festen Anzahl von Dezimalstellen
-JIS = JIS ## Konvertiert SB-Text in einer Zeichenfolge (lateinische Buchstaben oder Katakana) in DB-Text
-LEFT = LINKS ## Gibt die Zeichen ganz links in einem Textwert zurück
-LEFTB = LINKSB ## Gibt die Zeichen ganz links in einem Textwert zurück
-LEN = LÄNGE ## Gibt die Anzahl der Zeichen in einer Zeichenfolge zurück
-LENB = LÄNGEB ## Gibt die Anzahl der Zeichen in einer Zeichenfolge zurück
-LOWER = KLEIN ## Wandelt Text in Kleinbuchstaben um
-MID = TEIL ## Gibt eine bestimmte Anzahl Zeichen aus einer Zeichenfolge ab der von Ihnen angegebenen Stelle zurück
-MIDB = TEILB ## Gibt eine bestimmte Anzahl Zeichen aus einer Zeichenfolge ab der von Ihnen angegebenen Stelle zurück
-PHONETIC = PHONETIC ## Extrahiert die phonetischen (Furigana-)Zeichen aus einer Textzeichenfolge
-PROPER = GROSS2 ## Wandelt den ersten Buchstaben aller Wörter eines Textwerts in Großbuchstaben um
-REPLACE = ERSETZEN ## Ersetzt Zeichen in Text
-REPLACEB = ERSETZENB ## Ersetzt Zeichen in Text
-REPT = WIEDERHOLEN ## Wiederholt einen Text so oft wie angegeben
-RIGHT = RECHTS ## Gibt die Zeichen ganz rechts in einem Textwert zurück
-RIGHTB = RECHTSB ## Gibt die Zeichen ganz rechts in einem Textwert zurück
-SEARCH = SUCHEN ## Sucht nach einem Textwert, der in einem anderen Textwert enthalten ist (Groß-/Kleinschreibung wird nicht unterschieden)
-SEARCHB = SUCHENB ## Sucht nach einem Textwert, der in einem anderen Textwert enthalten ist (Groß-/Kleinschreibung wird nicht unterschieden)
-SUBSTITUTE = WECHSELN ## Ersetzt in einer Zeichenfolge neuen Text gegen alten
-T = T ## Wandelt die zugehörigen Argumente in Text um
-TEXT = TEXT ## Formatiert eine Zahl und wandelt sie in Text um
-TRIM = GLÄTTEN ## Entfernt Leerzeichen aus Text
-UPPER = GROSS ## Wandelt Text in Großbuchstaben um
-VALUE = WERT ## Wandelt ein Textargument in eine Zahl um
diff --git a/admin/survey/excel/PHPExcel/locale/en/uk/config b/admin/survey/excel/PHPExcel/locale/en/uk/config
deleted file mode 100644
index 1bcfcb2..0000000
--- a/admin/survey/excel/PHPExcel/locale/en/uk/config
+++ /dev/null
@@ -1,32 +0,0 @@
-##
-## PHPExcel
-##
-## Copyright (c) 2006 - 2011 PHPExcel
-##
-## This library is free software; you can redistribute it and/or
-## modify it under the terms of the GNU Lesser General Public
-## License as published by the Free Software Foundation; either
-## version 2.1 of the License, or (at your option) any later version.
-##
-## This library is distributed in the hope that it will be useful,
-## but WITHOUT ANY WARRANTY; without even the implied warranty of
-## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-## Lesser General Public License for more details.
-##
-## You should have received a copy of the GNU Lesser General Public
-## License along with this library; if not, write to the Free Software
-## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-##
-## @category PHPExcel
-## @package PHPExcel_Settings
-## @copyright Copyright (c) 2006 - 2011 PHPExcel (http://www.codeplex.com/PHPExcel)
-## @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
-## @version 1.7.8, 2012-10-12
-##
-##
-
-
-##
-## (For future use)
-##
-currencySymbol = £
diff --git a/admin/survey/excel/PHPExcel/locale/es/config b/admin/survey/excel/PHPExcel/locale/es/config
deleted file mode 100644
index 039f5b8..0000000
--- a/admin/survey/excel/PHPExcel/locale/es/config
+++ /dev/null
@@ -1,47 +0,0 @@
-##
-## PHPExcel
-##
-## Copyright (c) 2006 - 2011 PHPExcel
-##
-## This library is free software; you can redistribute it and/or
-## modify it under the terms of the GNU Lesser General Public
-## License as published by the Free Software Foundation; either
-## version 2.1 of the License, or (at your option) any later version.
-##
-## This library is distributed in the hope that it will be useful,
-## but WITHOUT ANY WARRANTY; without even the implied warranty of
-## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-## Lesser General Public License for more details.
-##
-## You should have received a copy of the GNU Lesser General Public
-## License along with this library; if not, write to the Free Software
-## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-##
-## @category PHPExcel
-## @package PHPExcel_Settings
-## @copyright Copyright (c) 2006 - 2011 PHPExcel (http://www.codeplex.com/PHPExcel)
-## @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
-## @version 1.7.8, 2012-10-12
-##
-##
-
-
-ArgumentSeparator = ;
-
-
-##
-## (For future use)
-##
-currencySymbol = $ ## I'm surprised that the Excel Documentation suggests $ rather than €
-
-
-##
-## Excel Error Codes (For future use)
-##
-NULL = #¡NULO!
-DIV0 = #¡DIV/0!
-VALUE = #¡VALOR!
-REF = #¡REF!
-NAME = #¿NOMBRE?
-NUM = #¡NÚM!
-NA = #N/A
diff --git a/admin/survey/excel/PHPExcel/locale/es/functions b/admin/survey/excel/PHPExcel/locale/es/functions
deleted file mode 100644
index 9d47f0e..0000000
--- a/admin/survey/excel/PHPExcel/locale/es/functions
+++ /dev/null
@@ -1,438 +0,0 @@
-##
-## PHPExcel
-##
-## Copyright (c) 2006 - 2011 PHPExcel
-##
-## This library is free software; you can redistribute it and/or
-## modify it under the terms of the GNU Lesser General Public
-## License as published by the Free Software Foundation; either
-## version 2.1 of the License, or (at your option) any later version.
-##
-## This library is distributed in the hope that it will be useful,
-## but WITHOUT ANY WARRANTY; without even the implied warranty of
-## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-## Lesser General Public License for more details.
-##
-## You should have received a copy of the GNU Lesser General Public
-## License along with this library; if not, write to the Free Software
-## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-##
-## @category PHPExcel
-## @package PHPExcel_Calculation
-## @copyright Copyright (c) 2006 - 2011 PHPExcel (http://www.codeplex.com/PHPExcel)
-## @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
-## @version 1.7.8, 2012-10-12
-##
-## Data in this file derived from http://www.piuha.fi/excel-function-name-translation/
-##
-##
-
-
-##
-## Add-in and Automation functions Funciones de complementos y automatización
-##
-GETPIVOTDATA = IMPORTARDATOSDINAMICOS ## Devuelve los datos almacenados en un informe de tabla dinámica.
-
-
-##
-## Cube functions Funciones de cubo
-##
-CUBEKPIMEMBER = MIEMBROKPICUBO ## Devuelve un nombre, propiedad y medida de indicador de rendimiento clave (KPI) y muestra el nombre y la propiedad en la celda. Un KPI es una medida cuantificable, como los beneficios brutos mensuales o la facturación trimestral por empleado, que se usa para supervisar el rendimiento de una organización.
-CUBEMEMBER = MIEMBROCUBO ## Devuelve un miembro o tupla en una jerarquía de cubo. Se usa para validar la existencia del miembro o la tupla en el cubo.
-CUBEMEMBERPROPERTY = PROPIEDADMIEMBROCUBO ## Devuelve el valor de una propiedad de miembro del cubo Se usa para validar la existencia de un nombre de miembro en el cubo y para devolver la propiedad especificada para este miembro.
-CUBERANKEDMEMBER = MIEMBRORANGOCUBO ## Devuelve el miembro n, o clasificado, de un conjunto. Se usa para devolver uno o más elementos de un conjunto, por ejemplo, el representante con mejores ventas o los diez mejores alumnos.
-CUBESET = CONJUNTOCUBO ## Define un conjunto calculado de miembros o tuplas mediante el envío de una expresión de conjunto al cubo en el servidor, lo que crea el conjunto y, después, devuelve dicho conjunto a Microsoft Office Excel.
-CUBESETCOUNT = RECUENTOCONJUNTOCUBO ## Devuelve el número de elementos de un conjunto.
-CUBEVALUE = VALORCUBO ## Devuelve un valor agregado de un cubo.
-
-
-##
-## Database functions Funciones de base de datos
-##
-DAVERAGE = BDPROMEDIO ## Devuelve el promedio de las entradas seleccionadas en la base de datos.
-DCOUNT = BDCONTAR ## Cuenta el número de celdas que contienen números en una base de datos.
-DCOUNTA = BDCONTARA ## Cuenta el número de celdas no vacías en una base de datos.
-DGET = BDEXTRAER ## Extrae de una base de datos un único registro que cumple los criterios especificados.
-DMAX = BDMAX ## Devuelve el valor máximo de las entradas seleccionadas de la base de datos.
-DMIN = BDMIN ## Devuelve el valor mínimo de las entradas seleccionadas de la base de datos.
-DPRODUCT = BDPRODUCTO ## Multiplica los valores de un campo concreto de registros de una base de datos que cumplen los criterios especificados.
-DSTDEV = BDDESVEST ## Calcula la desviación estándar a partir de una muestra de entradas seleccionadas en la base de datos.
-DSTDEVP = BDDESVESTP ## Calcula la desviación estándar en función de la población total de las entradas seleccionadas de la base de datos.
-DSUM = BDSUMA ## Suma los números de la columna de campo de los registros de la base de datos que cumplen los criterios.
-DVAR = BDVAR ## Calcula la varianza a partir de una muestra de entradas seleccionadas de la base de datos.
-DVARP = BDVARP ## Calcula la varianza a partir de la población total de entradas seleccionadas de la base de datos.
-
-
-##
-## Date and time functions Funciones de fecha y hora
-##
-DATE = FECHA ## Devuelve el número de serie correspondiente a una fecha determinada.
-DATEVALUE = FECHANUMERO ## Convierte una fecha con formato de texto en un valor de número de serie.
-DAY = DIA ## Convierte un número de serie en un valor de día del mes.
-DAYS360 = DIAS360 ## Calcula el número de días entre dos fechas a partir de un año de 360 días.
-EDATE = FECHA.MES ## Devuelve el número de serie de la fecha equivalente al número indicado de meses anteriores o posteriores a la fecha inicial.
-EOMONTH = FIN.MES ## Devuelve el número de serie correspondiente al último día del mes anterior o posterior a un número de meses especificado.
-HOUR = HORA ## Convierte un número de serie en un valor de hora.
-MINUTE = MINUTO ## Convierte un número de serie en un valor de minuto.
-MONTH = MES ## Convierte un número de serie en un valor de mes.
-NETWORKDAYS = DIAS.LAB ## Devuelve el número de todos los días laborables existentes entre dos fechas.
-NOW = AHORA ## Devuelve el número de serie correspondiente a la fecha y hora actuales.
-SECOND = SEGUNDO ## Convierte un número de serie en un valor de segundo.
-TIME = HORA ## Devuelve el número de serie correspondiente a una hora determinada.
-TIMEVALUE = HORANUMERO ## Convierte una hora con formato de texto en un valor de número de serie.
-TODAY = HOY ## Devuelve el número de serie correspondiente al día actual.
-WEEKDAY = DIASEM ## Convierte un número de serie en un valor de día de la semana.
-WEEKNUM = NUM.DE.SEMANA ## Convierte un número de serie en un número que representa el lugar numérico correspondiente a una semana de un año.
-WORKDAY = DIA.LAB ## Devuelve el número de serie de la fecha que tiene lugar antes o después de un número determinado de días laborables.
-YEAR = AÑO ## Convierte un número de serie en un valor de año.
-YEARFRAC = FRAC.AÑO ## Devuelve la fracción de año que representa el número total de días existentes entre el valor de fecha_inicial y el de fecha_final.
-
-
-##
-## Engineering functions Funciones de ingeniería
-##
-BESSELI = BESSELI ## Devuelve la función Bessel In(x) modificada.
-BESSELJ = BESSELJ ## Devuelve la función Bessel Jn(x).
-BESSELK = BESSELK ## Devuelve la función Bessel Kn(x) modificada.
-BESSELY = BESSELY ## Devuelve la función Bessel Yn(x).
-BIN2DEC = BIN.A.DEC ## Convierte un número binario en decimal.
-BIN2HEX = BIN.A.HEX ## Convierte un número binario en hexadecimal.
-BIN2OCT = BIN.A.OCT ## Convierte un número binario en octal.
-COMPLEX = COMPLEJO ## Convierte coeficientes reales e imaginarios en un número complejo.
-CONVERT = CONVERTIR ## Convierte un número de un sistema de medida a otro.
-DEC2BIN = DEC.A.BIN ## Convierte un número decimal en binario.
-DEC2HEX = DEC.A.HEX ## Convierte un número decimal en hexadecimal.
-DEC2OCT = DEC.A.OCT ## Convierte un número decimal en octal.
-DELTA = DELTA ## Comprueba si dos valores son iguales.
-ERF = FUN.ERROR ## Devuelve la función de error.
-ERFC = FUN.ERROR.COMPL ## Devuelve la función de error complementario.
-GESTEP = MAYOR.O.IGUAL ## Comprueba si un número es mayor que un valor de umbral.
-HEX2BIN = HEX.A.BIN ## Convierte un número hexadecimal en binario.
-HEX2DEC = HEX.A.DEC ## Convierte un número hexadecimal en decimal.
-HEX2OCT = HEX.A.OCT ## Convierte un número hexadecimal en octal.
-IMABS = IM.ABS ## Devuelve el valor absoluto (módulo) de un número complejo.
-IMAGINARY = IMAGINARIO ## Devuelve el coeficiente imaginario de un número complejo.
-IMARGUMENT = IM.ANGULO ## Devuelve el argumento theta, un ángulo expresado en radianes.
-IMCONJUGATE = IM.CONJUGADA ## Devuelve la conjugada compleja de un número complejo.
-IMCOS = IM.COS ## Devuelve el coseno de un número complejo.
-IMDIV = IM.DIV ## Devuelve el cociente de dos números complejos.
-IMEXP = IM.EXP ## Devuelve el valor exponencial de un número complejo.
-IMLN = IM.LN ## Devuelve el logaritmo natural (neperiano) de un número complejo.
-IMLOG10 = IM.LOG10 ## Devuelve el logaritmo en base 10 de un número complejo.
-IMLOG2 = IM.LOG2 ## Devuelve el logaritmo en base 2 de un número complejo.
-IMPOWER = IM.POT ## Devuelve un número complejo elevado a una potencia entera.
-IMPRODUCT = IM.PRODUCT ## Devuelve el producto de números complejos.
-IMREAL = IM.REAL ## Devuelve el coeficiente real de un número complejo.
-IMSIN = IM.SENO ## Devuelve el seno de un número complejo.
-IMSQRT = IM.RAIZ2 ## Devuelve la raíz cuadrada de un número complejo.
-IMSUB = IM.SUSTR ## Devuelve la diferencia entre dos números complejos.
-IMSUM = IM.SUM ## Devuelve la suma de números complejos.
-OCT2BIN = OCT.A.BIN ## Convierte un número octal en binario.
-OCT2DEC = OCT.A.DEC ## Convierte un número octal en decimal.
-OCT2HEX = OCT.A.HEX ## Convierte un número octal en hexadecimal.
-
-
-##
-## Financial functions Funciones financieras
-##
-ACCRINT = INT.ACUM ## Devuelve el interés acumulado de un valor bursátil con pagos de interés periódicos.
-ACCRINTM = INT.ACUM.V ## Devuelve el interés acumulado de un valor bursátil con pagos de interés al vencimiento.
-AMORDEGRC = AMORTIZ.PROGRE ## Devuelve la amortización de cada período contable mediante el uso de un coeficiente de amortización.
-AMORLINC = AMORTIZ.LIN ## Devuelve la amortización de cada uno de los períodos contables.
-COUPDAYBS = CUPON.DIAS.L1 ## Devuelve el número de días desde el principio del período de un cupón hasta la fecha de liquidación.
-COUPDAYS = CUPON.DIAS ## Devuelve el número de días del período (entre dos cupones) donde se encuentra la fecha de liquidación.
-COUPDAYSNC = CUPON.DIAS.L2 ## Devuelve el número de días desde la fecha de liquidación hasta la fecha del próximo cupón.
-COUPNCD = CUPON.FECHA.L2 ## Devuelve la fecha del próximo cupón después de la fecha de liquidación.
-COUPNUM = CUPON.NUM ## Devuelve el número de pagos de cupón entre la fecha de liquidación y la fecha de vencimiento.
-COUPPCD = CUPON.FECHA.L1 ## Devuelve la fecha de cupón anterior a la fecha de liquidación.
-CUMIPMT = PAGO.INT.ENTRE ## Devuelve el interés acumulado pagado entre dos períodos.
-CUMPRINC = PAGO.PRINC.ENTRE ## Devuelve el capital acumulado pagado de un préstamo entre dos períodos.
-DB = DB ## Devuelve la amortización de un bien durante un período específico a través del método de amortización de saldo fijo.
-DDB = DDB ## Devuelve la amortización de un bien durante un período específico a través del método de amortización por doble disminución de saldo u otro método que se especifique.
-DISC = TASA.DESC ## Devuelve la tasa de descuento de un valor bursátil.
-DOLLARDE = MONEDA.DEC ## Convierte una cotización de un valor bursátil expresada en forma fraccionaria en una cotización de un valor bursátil expresada en forma decimal.
-DOLLARFR = MONEDA.FRAC ## Convierte una cotización de un valor bursátil expresada en forma decimal en una cotización de un valor bursátil expresada en forma fraccionaria.
-DURATION = DURACION ## Devuelve la duración anual de un valor bursátil con pagos de interés periódico.
-EFFECT = INT.EFECTIVO ## Devuelve la tasa de interés anual efectiva.
-FV = VF ## Devuelve el valor futuro de una inversión.
-FVSCHEDULE = VF.PLAN ## Devuelve el valor futuro de un capital inicial después de aplicar una serie de tasas de interés compuesto.
-INTRATE = TASA.INT ## Devuelve la tasa de interés para la inversión total de un valor bursátil.
-IPMT = PAGOINT ## Devuelve el pago de intereses de una inversión durante un período determinado.
-IRR = TIR ## Devuelve la tasa interna de retorno para una serie de flujos de efectivo periódicos.
-ISPMT = INT.PAGO.DIR ## Calcula el interés pagado durante un período específico de una inversión.
-MDURATION = DURACION.MODIF ## Devuelve la duración de Macauley modificada de un valor bursátil con un valor nominal supuesto de 100 $.
-MIRR = TIRM ## Devuelve la tasa interna de retorno donde se financian flujos de efectivo positivos y negativos a tasas diferentes.
-NOMINAL = TASA.NOMINAL ## Devuelve la tasa nominal de interés anual.
-NPER = NPER ## Devuelve el número de períodos de una inversión.
-NPV = VNA ## Devuelve el valor neto actual de una inversión en función de una serie de flujos periódicos de efectivo y una tasa de descuento.
-ODDFPRICE = PRECIO.PER.IRREGULAR.1 ## Devuelve el precio por un valor nominal de 100 $ de un valor bursátil con un primer período impar.
-ODDFYIELD = RENDTO.PER.IRREGULAR.1 ## Devuelve el rendimiento de un valor bursátil con un primer período impar.
-ODDLPRICE = PRECIO.PER.IRREGULAR.2 ## Devuelve el precio por un valor nominal de 100 $ de un valor bursátil con un último período impar.
-ODDLYIELD = RENDTO.PER.IRREGULAR.2 ## Devuelve el rendimiento de un valor bursátil con un último período impar.
-PMT = PAGO ## Devuelve el pago periódico de una anualidad.
-PPMT = PAGOPRIN ## Devuelve el pago de capital de una inversión durante un período determinado.
-PRICE = PRECIO ## Devuelve el precio por un valor nominal de 100 $ de un valor bursátil que paga una tasa de interés periódico.
-PRICEDISC = PRECIO.DESCUENTO ## Devuelve el precio por un valor nominal de 100 $ de un valor bursátil con descuento.
-PRICEMAT = PRECIO.VENCIMIENTO ## Devuelve el precio por un valor nominal de 100 $ de un valor bursátil que paga interés a su vencimiento.
-PV = VALACT ## Devuelve el valor actual de una inversión.
-RATE = TASA ## Devuelve la tasa de interés por período de una anualidad.
-RECEIVED = CANTIDAD.RECIBIDA ## Devuelve la cantidad recibida al vencimiento de un valor bursátil completamente invertido.
-SLN = SLN ## Devuelve la amortización por método directo de un bien en un período dado.
-SYD = SYD ## Devuelve la amortización por suma de dígitos de los años de un bien durante un período especificado.
-TBILLEQ = LETRA.DE.TES.EQV.A.BONO ## Devuelve el rendimiento de un bono equivalente a una letra del Tesoro (de EE.UU.)
-TBILLPRICE = LETRA.DE.TES.PRECIO ## Devuelve el precio por un valor nominal de 100 $ de una letra del Tesoro (de EE.UU.)
-TBILLYIELD = LETRA.DE.TES.RENDTO ## Devuelve el rendimiento de una letra del Tesoro (de EE.UU.)
-VDB = DVS ## Devuelve la amortización de un bien durante un período específico o parcial a través del método de cálculo del saldo en disminución.
-XIRR = TIR.NO.PER ## Devuelve la tasa interna de retorno para un flujo de efectivo que no es necesariamente periódico.
-XNPV = VNA.NO.PER ## Devuelve el valor neto actual para un flujo de efectivo que no es necesariamente periódico.
-YIELD = RENDTO ## Devuelve el rendimiento de un valor bursátil que paga intereses periódicos.
-YIELDDISC = RENDTO.DESC ## Devuelve el rendimiento anual de un valor bursátil con descuento; por ejemplo, una letra del Tesoro (de EE.UU.)
-YIELDMAT = RENDTO.VENCTO ## Devuelve el rendimiento anual de un valor bursátil que paga intereses al vencimiento.
-
-
-##
-## Information functions Funciones de información
-##
-CELL = CELDA ## Devuelve información acerca del formato, la ubicación o el contenido de una celda.
-ERROR.TYPE = TIPO.DE.ERROR ## Devuelve un número que corresponde a un tipo de error.
-INFO = INFO ## Devuelve información acerca del entorno operativo en uso.
-ISBLANK = ESBLANCO ## Devuelve VERDADERO si el valor está en blanco.
-ISERR = ESERR ## Devuelve VERDADERO si el valor es cualquier valor de error excepto #N/A.
-ISERROR = ESERROR ## Devuelve VERDADERO si el valor es cualquier valor de error.
-ISEVEN = ES.PAR ## Devuelve VERDADERO si el número es par.
-ISLOGICAL = ESLOGICO ## Devuelve VERDADERO si el valor es un valor lógico.
-ISNA = ESNOD ## Devuelve VERDADERO si el valor es el valor de error #N/A.
-ISNONTEXT = ESNOTEXTO ## Devuelve VERDADERO si el valor no es texto.
-ISNUMBER = ESNUMERO ## Devuelve VERDADERO si el valor es un número.
-ISODD = ES.IMPAR ## Devuelve VERDADERO si el número es impar.
-ISREF = ESREF ## Devuelve VERDADERO si el valor es una referencia.
-ISTEXT = ESTEXTO ## Devuelve VERDADERO si el valor es texto.
-N = N ## Devuelve un valor convertido en un número.
-NA = ND ## Devuelve el valor de error #N/A.
-TYPE = TIPO ## Devuelve un número que indica el tipo de datos de un valor.
-
-
-##
-## Logical functions Funciones lógicas
-##
-AND = Y ## Devuelve VERDADERO si todos sus argumentos son VERDADERO.
-FALSE = FALSO ## Devuelve el valor lógico FALSO.
-IF = SI ## Especifica una prueba lógica que realizar.
-IFERROR = SI.ERROR ## Devuelve un valor que se especifica si una fórmula lo evalúa como un error; de lo contrario, devuelve el resultado de la fórmula.
-NOT = NO ## Invierte el valor lógico del argumento.
-OR = O ## Devuelve VERDADERO si cualquier argumento es VERDADERO.
-TRUE = VERDADERO ## Devuelve el valor lógico VERDADERO.
-
-
-##
-## Lookup and reference functions Funciones de búsqueda y referencia
-##
-ADDRESS = DIRECCION ## Devuelve una referencia como texto a una sola celda de una hoja de cálculo.
-AREAS = AREAS ## Devuelve el número de áreas de una referencia.
-CHOOSE = ELEGIR ## Elige un valor de una lista de valores.
-COLUMN = COLUMNA ## Devuelve el número de columna de una referencia.
-COLUMNS = COLUMNAS ## Devuelve el número de columnas de una referencia.
-HLOOKUP = BUSCARH ## Busca en la fila superior de una matriz y devuelve el valor de la celda indicada.
-HYPERLINK = HIPERVINCULO ## Crea un acceso directo o un salto que abre un documento almacenado en un servidor de red, en una intranet o en Internet.
-INDEX = INDICE ## Usa un índice para elegir un valor de una referencia o matriz.
-INDIRECT = INDIRECTO ## Devuelve una referencia indicada por un valor de texto.
-LOOKUP = BUSCAR ## Busca valores de un vector o una matriz.
-MATCH = COINCIDIR ## Busca valores de una referencia o matriz.
-OFFSET = DESREF ## Devuelve un desplazamiento de referencia respecto a una referencia dada.
-ROW = FILA ## Devuelve el número de fila de una referencia.
-ROWS = FILAS ## Devuelve el número de filas de una referencia.
-RTD = RDTR ## Recupera datos en tiempo real desde un programa compatible con la automatización COM (automatización: modo de trabajar con los objetos de una aplicación desde otra aplicación o herramienta de entorno. La automatización, antes denominada automatización OLE, es un estándar de la industria y una función del Modelo de objetos componentes (COM).).
-TRANSPOSE = TRANSPONER ## Devuelve la transposición de una matriz.
-VLOOKUP = BUSCARV ## Busca en la primera columna de una matriz y se mueve en horizontal por la fila para devolver el valor de una celda.
-
-
-##
-## Math and trigonometry functions Funciones matemáticas y trigonométricas
-##
-ABS = ABS ## Devuelve el valor absoluto de un número.
-ACOS = ACOS ## Devuelve el arcocoseno de un número.
-ACOSH = ACOSH ## Devuelve el coseno hiperbólico inverso de un número.
-ASIN = ASENO ## Devuelve el arcoseno de un número.
-ASINH = ASENOH ## Devuelve el seno hiperbólico inverso de un número.
-ATAN = ATAN ## Devuelve la arcotangente de un número.
-ATAN2 = ATAN2 ## Devuelve la arcotangente de las coordenadas "x" e "y".
-ATANH = ATANH ## Devuelve la tangente hiperbólica inversa de un número.
-CEILING = MULTIPLO.SUPERIOR ## Redondea un número al entero más próximo o al múltiplo significativo más cercano.
-COMBIN = COMBINAT ## Devuelve el número de combinaciones para un número determinado de objetos.
-COS = COS ## Devuelve el coseno de un número.
-COSH = COSH ## Devuelve el coseno hiperbólico de un número.
-DEGREES = GRADOS ## Convierte radianes en grados.
-EVEN = REDONDEA.PAR ## Redondea un número hasta el entero par más próximo.
-EXP = EXP ## Devuelve e elevado a la potencia de un número dado.
-FACT = FACT ## Devuelve el factorial de un número.
-FACTDOUBLE = FACT.DOBLE ## Devuelve el factorial doble de un número.
-FLOOR = MULTIPLO.INFERIOR ## Redondea un número hacia abajo, en dirección hacia cero.
-GCD = M.C.D ## Devuelve el máximo común divisor.
-INT = ENTERO ## Redondea un número hacia abajo hasta el entero más próximo.
-LCM = M.C.M ## Devuelve el mínimo común múltiplo.
-LN = LN ## Devuelve el logaritmo natural (neperiano) de un número.
-LOG = LOG ## Devuelve el logaritmo de un número en una base especificada.
-LOG10 = LOG10 ## Devuelve el logaritmo en base 10 de un número.
-MDETERM = MDETERM ## Devuelve la determinante matricial de una matriz.
-MINVERSE = MINVERSA ## Devuelve la matriz inversa de una matriz.
-MMULT = MMULT ## Devuelve el producto de matriz de dos matrices.
-MOD = RESIDUO ## Devuelve el resto de la división.
-MROUND = REDOND.MULT ## Devuelve un número redondeado al múltiplo deseado.
-MULTINOMIAL = MULTINOMIAL ## Devuelve el polinomio de un conjunto de números.
-ODD = REDONDEA.IMPAR ## Redondea un número hacia arriba hasta el entero impar más próximo.
-PI = PI ## Devuelve el valor de pi.
-POWER = POTENCIA ## Devuelve el resultado de elevar un número a una potencia.
-PRODUCT = PRODUCTO ## Multiplica sus argumentos.
-QUOTIENT = COCIENTE ## Devuelve la parte entera de una división.
-RADIANS = RADIANES ## Convierte grados en radianes.
-RAND = ALEATORIO ## Devuelve un número aleatorio entre 0 y 1.
-RANDBETWEEN = ALEATORIO.ENTRE ## Devuelve un número aleatorio entre los números que especifique.
-ROMAN = NUMERO.ROMANO ## Convierte un número arábigo en número romano, con formato de texto.
-ROUND = REDONDEAR ## Redondea un número al número de decimales especificado.
-ROUNDDOWN = REDONDEAR.MENOS ## Redondea un número hacia abajo, en dirección hacia cero.
-ROUNDUP = REDONDEAR.MAS ## Redondea un número hacia arriba, en dirección contraria a cero.
-SERIESSUM = SUMA.SERIES ## Devuelve la suma de una serie de potencias en función de la fórmula.
-SIGN = SIGNO ## Devuelve el signo de un número.
-SIN = SENO ## Devuelve el seno de un ángulo determinado.
-SINH = SENOH ## Devuelve el seno hiperbólico de un número.
-SQRT = RAIZ ## Devuelve la raíz cuadrada positiva de un número.
-SQRTPI = RAIZ2PI ## Devuelve la raíz cuadrada de un número multiplicado por PI (número * pi).
-SUBTOTAL = SUBTOTALES ## Devuelve un subtotal en una lista o base de datos.
-SUM = SUMA ## Suma sus argumentos.
-SUMIF = SUMAR.SI ## Suma las celdas especificadas que cumplen unos criterios determinados.
-SUMIFS = SUMAR.SI.CONJUNTO ## Suma las celdas de un rango que cumplen varios criterios.
-SUMPRODUCT = SUMAPRODUCTO ## Devuelve la suma de los productos de los correspondientes componentes de matriz.
-SUMSQ = SUMA.CUADRADOS ## Devuelve la suma de los cuadrados de los argumentos.
-SUMX2MY2 = SUMAX2MENOSY2 ## Devuelve la suma de la diferencia de los cuadrados de los valores correspondientes de dos matrices.
-SUMX2PY2 = SUMAX2MASY2 ## Devuelve la suma de la suma de los cuadrados de los valores correspondientes de dos matrices.
-SUMXMY2 = SUMAXMENOSY2 ## Devuelve la suma de los cuadrados de las diferencias de los valores correspondientes de dos matrices.
-TAN = TAN ## Devuelve la tangente de un número.
-TANH = TANH ## Devuelve la tangente hiperbólica de un número.
-TRUNC = TRUNCAR ## Trunca un número a un entero.
-
-
-##
-## Statistical functions Funciones estadísticas
-##
-AVEDEV = DESVPROM ## Devuelve el promedio de las desviaciones absolutas de la media de los puntos de datos.
-AVERAGE = PROMEDIO ## Devuelve el promedio de sus argumentos.
-AVERAGEA = PROMEDIOA ## Devuelve el promedio de sus argumentos, incluidos números, texto y valores lógicos.
-AVERAGEIF = PROMEDIO.SI ## Devuelve el promedio (media aritmética) de todas las celdas de un rango que cumplen unos criterios determinados.
-AVERAGEIFS = PROMEDIO.SI.CONJUNTO ## Devuelve el promedio (media aritmética) de todas las celdas que cumplen múltiples criterios.
-BETADIST = DISTR.BETA ## Devuelve la función de distribución beta acumulativa.
-BETAINV = DISTR.BETA.INV ## Devuelve la función inversa de la función de distribución acumulativa de una distribución beta especificada.
-BINOMDIST = DISTR.BINOM ## Devuelve la probabilidad de una variable aleatoria discreta siguiendo una distribución binomial.
-CHIDIST = DISTR.CHI ## Devuelve la probabilidad de una variable aleatoria continua siguiendo una distribución chi cuadrado de una sola cola.
-CHIINV = PRUEBA.CHI.INV ## Devuelve la función inversa de la probabilidad de una variable aleatoria continua siguiendo una distribución chi cuadrado de una sola cola.
-CHITEST = PRUEBA.CHI ## Devuelve la prueba de independencia.
-CONFIDENCE = INTERVALO.CONFIANZA ## Devuelve el intervalo de confianza de la media de una población.
-CORREL = COEF.DE.CORREL ## Devuelve el coeficiente de correlación entre dos conjuntos de datos.
-COUNT = CONTAR ## Cuenta cuántos números hay en la lista de argumentos.
-COUNTA = CONTARA ## Cuenta cuántos valores hay en la lista de argumentos.
-COUNTBLANK = CONTAR.BLANCO ## Cuenta el número de celdas en blanco de un rango.
-COUNTIF = CONTAR.SI ## Cuenta el número de celdas, dentro del rango, que cumplen el criterio especificado.
-COUNTIFS = CONTAR.SI.CONJUNTO ## Cuenta el número de celdas, dentro del rango, que cumplen varios criterios.
-COVAR = COVAR ## Devuelve la covarianza, que es el promedio de los productos de las desviaciones para cada pareja de puntos de datos.
-CRITBINOM = BINOM.CRIT ## Devuelve el menor valor cuya distribución binomial acumulativa es menor o igual a un valor de criterio.
-DEVSQ = DESVIA2 ## Devuelve la suma de los cuadrados de las desviaciones.
-EXPONDIST = DISTR.EXP ## Devuelve la distribución exponencial.
-FDIST = DISTR.F ## Devuelve la distribución de probabilidad F.
-FINV = DISTR.F.INV ## Devuelve la función inversa de la distribución de probabilidad F.
-FISHER = FISHER ## Devuelve la transformación Fisher.
-FISHERINV = PRUEBA.FISHER.INV ## Devuelve la función inversa de la transformación Fisher.
-FORECAST = PRONOSTICO ## Devuelve un valor en una tendencia lineal.
-FREQUENCY = FRECUENCIA ## Devuelve una distribución de frecuencia como una matriz vertical.
-FTEST = PRUEBA.F ## Devuelve el resultado de una prueba F.
-GAMMADIST = DISTR.GAMMA ## Devuelve la distribución gamma.
-GAMMAINV = DISTR.GAMMA.INV ## Devuelve la función inversa de la distribución gamma acumulativa.
-GAMMALN = GAMMA.LN ## Devuelve el logaritmo natural de la función gamma, G(x).
-GEOMEAN = MEDIA.GEOM ## Devuelve la media geométrica.
-GROWTH = CRECIMIENTO ## Devuelve valores en una tendencia exponencial.
-HARMEAN = MEDIA.ARMO ## Devuelve la media armónica.
-HYPGEOMDIST = DISTR.HIPERGEOM ## Devuelve la distribución hipergeométrica.
-INTERCEPT = INTERSECCION.EJE ## Devuelve la intersección de la línea de regresión lineal.
-KURT = CURTOSIS ## Devuelve la curtosis de un conjunto de datos.
-LARGE = K.ESIMO.MAYOR ## Devuelve el k-ésimo mayor valor de un conjunto de datos.
-LINEST = ESTIMACION.LINEAL ## Devuelve los parámetros de una tendencia lineal.
-LOGEST = ESTIMACION.LOGARITMICA ## Devuelve los parámetros de una tendencia exponencial.
-LOGINV = DISTR.LOG.INV ## Devuelve la función inversa de la distribución logarítmico-normal.
-LOGNORMDIST = DISTR.LOG.NORM ## Devuelve la distribución logarítmico-normal acumulativa.
-MAX = MAX ## Devuelve el valor máximo de una lista de argumentos.
-MAXA = MAXA ## Devuelve el valor máximo de una lista de argumentos, incluidos números, texto y valores lógicos.
-MEDIAN = MEDIANA ## Devuelve la mediana de los números dados.
-MIN = MIN ## Devuelve el valor mínimo de una lista de argumentos.
-MINA = MINA ## Devuelve el valor mínimo de una lista de argumentos, incluidos números, texto y valores lógicos.
-MODE = MODA ## Devuelve el valor más común de un conjunto de datos.
-NEGBINOMDIST = NEGBINOMDIST ## Devuelve la distribución binomial negativa.
-NORMDIST = DISTR.NORM ## Devuelve la distribución normal acumulativa.
-NORMINV = DISTR.NORM.INV ## Devuelve la función inversa de la distribución normal acumulativa.
-NORMSDIST = DISTR.NORM.ESTAND ## Devuelve la distribución normal estándar acumulativa.
-NORMSINV = DISTR.NORM.ESTAND.INV ## Devuelve la función inversa de la distribución normal estándar acumulativa.
-PEARSON = PEARSON ## Devuelve el coeficiente de momento de correlación de producto Pearson.
-PERCENTILE = PERCENTIL ## Devuelve el k-ésimo percentil de los valores de un rango.
-PERCENTRANK = RANGO.PERCENTIL ## Devuelve el rango porcentual de un valor de un conjunto de datos.
-PERMUT = PERMUTACIONES ## Devuelve el número de permutaciones de un número determinado de objetos.
-POISSON = POISSON ## Devuelve la distribución de Poisson.
-PROB = PROBABILIDAD ## Devuelve la probabilidad de que los valores de un rango se encuentren entre dos límites.
-QUARTILE = CUARTIL ## Devuelve el cuartil de un conjunto de datos.
-RANK = JERARQUIA ## Devuelve la jerarquía de un número en una lista de números.
-RSQ = COEFICIENTE.R2 ## Devuelve el cuadrado del coeficiente de momento de correlación de producto Pearson.
-SKEW = COEFICIENTE.ASIMETRIA ## Devuelve la asimetría de una distribución.
-SLOPE = PENDIENTE ## Devuelve la pendiente de la línea de regresión lineal.
-SMALL = K.ESIMO.MENOR ## Devuelve el k-ésimo menor valor de un conjunto de datos.
-STANDARDIZE = NORMALIZACION ## Devuelve un valor normalizado.
-STDEV = DESVEST ## Calcula la desviación estándar a partir de una muestra.
-STDEVA = DESVESTA ## Calcula la desviación estándar a partir de una muestra, incluidos números, texto y valores lógicos.
-STDEVP = DESVESTP ## Calcula la desviación estándar en función de toda la población.
-STDEVPA = DESVESTPA ## Calcula la desviación estándar en función de toda la población, incluidos números, texto y valores lógicos.
-STEYX = ERROR.TIPICO.XY ## Devuelve el error estándar del valor de "y" previsto para cada "x" de la regresión.
-TDIST = DISTR.T ## Devuelve la distribución de t de Student.
-TINV = DISTR.T.INV ## Devuelve la función inversa de la distribución de t de Student.
-TREND = TENDENCIA ## Devuelve valores en una tendencia lineal.
-TRIMMEAN = MEDIA.ACOTADA ## Devuelve la media del interior de un conjunto de datos.
-TTEST = PRUEBA.T ## Devuelve la probabilidad asociada a una prueba t de Student.
-VAR = VAR ## Calcula la varianza en función de una muestra.
-VARA = VARA ## Calcula la varianza en función de una muestra, incluidos números, texto y valores lógicos.
-VARP = VARP ## Calcula la varianza en función de toda la población.
-VARPA = VARPA ## Calcula la varianza en función de toda la población, incluidos números, texto y valores lógicos.
-WEIBULL = DIST.WEIBULL ## Devuelve la distribución de Weibull.
-ZTEST = PRUEBA.Z ## Devuelve el valor de una probabilidad de una cola de una prueba z.
-
-
-##
-## Text functions Funciones de texto
-##
-ASC = ASC ## Convierte las letras inglesas o katakana de ancho completo (de dos bytes) dentro de una cadena de caracteres en caracteres de ancho medio (de un byte).
-BAHTTEXT = TEXTOBAHT ## Convierte un número en texto, con el formato de moneda ß (Baht).
-CHAR = CARACTER ## Devuelve el carácter especificado por el número de código.
-CLEAN = LIMPIAR ## Quita del texto todos los caracteres no imprimibles.
-CODE = CODIGO ## Devuelve un código numérico del primer carácter de una cadena de texto.
-CONCATENATE = CONCATENAR ## Concatena varios elementos de texto en uno solo.
-DOLLAR = MONEDA ## Convierte un número en texto, con el formato de moneda $ (dólar).
-EXACT = IGUAL ## Comprueba si dos valores de texto son idénticos.
-FIND = ENCONTRAR ## Busca un valor de texto dentro de otro (distingue mayúsculas de minúsculas).
-FINDB = ENCONTRARB ## Busca un valor de texto dentro de otro (distingue mayúsculas de minúsculas).
-FIXED = DECIMAL ## Da formato a un número como texto con un número fijo de decimales.
-JIS = JIS ## Convierte las letras inglesas o katakana de ancho medio (de un byte) dentro de una cadena de caracteres en caracteres de ancho completo (de dos bytes).
-LEFT = IZQUIERDA ## Devuelve los caracteres del lado izquierdo de un valor de texto.
-LEFTB = IZQUIERDAB ## Devuelve los caracteres del lado izquierdo de un valor de texto.
-LEN = LARGO ## Devuelve el número de caracteres de una cadena de texto.
-LENB = LARGOB ## Devuelve el número de caracteres de una cadena de texto.
-LOWER = MINUSC ## Pone el texto en minúsculas.
-MID = EXTRAE ## Devuelve un número específico de caracteres de una cadena de texto que comienza en la posición que se especifique.
-MIDB = EXTRAEB ## Devuelve un número específico de caracteres de una cadena de texto que comienza en la posición que se especifique.
-PHONETIC = FONETICO ## Extrae los caracteres fonéticos (furigana) de una cadena de texto.
-PROPER = NOMPROPIO ## Pone en mayúscula la primera letra de cada palabra de un valor de texto.
-REPLACE = REEMPLAZAR ## Reemplaza caracteres de texto.
-REPLACEB = REEMPLAZARB ## Reemplaza caracteres de texto.
-REPT = REPETIR ## Repite el texto un número determinado de veces.
-RIGHT = DERECHA ## Devuelve los caracteres del lado derecho de un valor de texto.
-RIGHTB = DERECHAB ## Devuelve los caracteres del lado derecho de un valor de texto.
-SEARCH = HALLAR ## Busca un valor de texto dentro de otro (no distingue mayúsculas de minúsculas).
-SEARCHB = HALLARB ## Busca un valor de texto dentro de otro (no distingue mayúsculas de minúsculas).
-SUBSTITUTE = SUSTITUIR ## Sustituye texto nuevo por texto antiguo en una cadena de texto.
-T = T ## Convierte sus argumentos a texto.
-TEXT = TEXTO ## Da formato a un número y lo convierte en texto.
-TRIM = ESPACIOS ## Quita los espacios del texto.
-UPPER = MAYUSC ## Pone el texto en mayúsculas.
-VALUE = VALOR ## Convierte un argumento de texto en un número.
diff --git a/admin/survey/excel/PHPExcel/locale/fi/config b/admin/survey/excel/PHPExcel/locale/fi/config
deleted file mode 100644
index ba274e1..0000000
--- a/admin/survey/excel/PHPExcel/locale/fi/config
+++ /dev/null
@@ -1,47 +0,0 @@
-##
-## PHPExcel
-##
-## Copyright (c) 2006 - 2011 PHPExcel
-##
-## This library is free software; you can redistribute it and/or
-## modify it under the terms of the GNU Lesser General Public
-## License as published by the Free Software Foundation; either
-## version 2.1 of the License, or (at your option) any later version.
-##
-## This library is distributed in the hope that it will be useful,
-## but WITHOUT ANY WARRANTY; without even the implied warranty of
-## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-## Lesser General Public License for more details.
-##
-## You should have received a copy of the GNU Lesser General Public
-## License along with this library; if not, write to the Free Software
-## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-##
-## @category PHPExcel
-## @package PHPExcel_Settings
-## @copyright Copyright (c) 2006 - 2011 PHPExcel (http://www.codeplex.com/PHPExcel)
-## @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
-## @version 1.7.8, 2012-10-12
-##
-##
-
-
-ArgumentSeparator = ;
-
-
-##
-## (For future use)
-##
-currencySymbol = $ # Symbol not known, should it be a € (Euro)?
-
-
-##
-## Excel Error Codes (For future use)
-##
-NULL = #TYHJÄ!
-DIV0 = #JAKO/0!
-VALUE = #ARVO!
-REF = #VIITTAUS!
-NAME = #NIMI?
-NUM = #LUKU!
-NA = #PUUTTUU
diff --git a/admin/survey/excel/PHPExcel/locale/fi/functions b/admin/survey/excel/PHPExcel/locale/fi/functions
deleted file mode 100644
index 25e08ea..0000000
--- a/admin/survey/excel/PHPExcel/locale/fi/functions
+++ /dev/null
@@ -1,438 +0,0 @@
-##
-## PHPExcel
-##
-## Copyright (c) 2006 - 2011 PHPExcel
-##
-## This library is free software; you can redistribute it and/or
-## modify it under the terms of the GNU Lesser General Public
-## License as published by the Free Software Foundation; either
-## version 2.1 of the License, or (at your option) any later version.
-##
-## This library is distributed in the hope that it will be useful,
-## but WITHOUT ANY WARRANTY; without even the implied warranty of
-## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-## Lesser General Public License for more details.
-##
-## You should have received a copy of the GNU Lesser General Public
-## License along with this library; if not, write to the Free Software
-## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-##
-## @category PHPExcel
-## @package PHPExcel_Calculation
-## @copyright Copyright (c) 2006 - 2011 PHPExcel (http://www.codeplex.com/PHPExcel)
-## @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
-## @version 1.7.8, 2012-10-12
-##
-## Data in this file derived from http://www.piuha.fi/excel-function-name-translation/
-##
-##
-
-
-##
-## Add-in and Automation functions Apuohjelma- ja automaatiofunktiot
-##
-GETPIVOTDATA = NOUDA.PIVOT.TIEDOT ## Palauttaa pivot-taulukkoraporttiin tallennettuja tietoja.
-
-
-##
-## Cube functions Kuutiofunktiot
-##
-CUBEKPIMEMBER = KUUTIOKPIJÄSEN ## Palauttaa suorituskykyilmaisimen (KPI) nimen, ominaisuuden sekä mitan ja näyttää nimen sekä ominaisuuden solussa. KPI on mitattavissa oleva suure, kuten kuukauden bruttotuotto tai vuosineljänneksen työntekijäkohtainen liikevaihto, joiden avulla tarkkaillaan organisaation suorituskykyä.
-CUBEMEMBER = KUUTIONJÄSEN ## Palauttaa kuutiohierarkian jäsenen tai monikon. Tällä funktiolla voit tarkistaa, että jäsen tai monikko on olemassa kuutiossa.
-CUBEMEMBERPROPERTY = KUUTIONJÄSENENOMINAISUUS ## Palauttaa kuution jäsenominaisuuden arvon. Tällä funktiolla voit tarkistaa, että nimi on olemassa kuutiossa, ja palauttaa tämän jäsenen määritetyn ominaisuuden.
-CUBERANKEDMEMBER = KUUTIONLUOKITELTUJÄSEN ## Palauttaa joukon n:nnen jäsenen. Tällä funktiolla voit palauttaa joukosta elementtejä, kuten parhaan myyjän tai 10 parasta opiskelijaa.
-CUBESET = KUUTIOJOUKKO ## Määrittää lasketun jäsen- tai monikkojoukon lähettämällä joukon lausekkeita palvelimessa olevalle kuutiolle. Palvelin luo joukon ja palauttaa sen Microsoft Office Excelille.
-CUBESETCOUNT = KUUTIOJOUKKOJENMÄÄRÄ ## Palauttaa joukon kohteiden määrän.
-CUBEVALUE = KUUTIONARVO ## Palauttaa koostetun arvon kuutiosta.
-
-
-##
-## Database functions Tietokantafunktiot
-##
-DAVERAGE = TKESKIARVO ## Palauttaa valittujen tietokantamerkintöjen keskiarvon.
-DCOUNT = TLASKE ## Laskee tietokannan lukuja sisältävien solujen määrän.
-DCOUNTA = TLASKEA ## Laskee tietokannan tietoja sisältävien solujen määrän.
-DGET = TNOUDA ## Hakee määritettyjä ehtoja vastaavan tietueen tietokannasta.
-DMAX = TMAKS ## Palauttaa suurimman arvon tietokannasta valittujen arvojen joukosta.
-DMIN = TMIN ## Palauttaa pienimmän arvon tietokannasta valittujen arvojen joukosta.
-DPRODUCT = TTULO ## Kertoo määritetyn ehdon täyttävien tietokannan tietueiden tietyssä kentässä olevat arvot.
-DSTDEV = TKESKIHAJONTA ## Laskee keskihajonnan tietokannasta valituista arvoista muodostuvan otoksen perusteella.
-DSTDEVP = TKESKIHAJONTAP ## Laskee keskihajonnan tietokannasta valittujen arvojen koko populaation perusteella.
-DSUM = TSUMMA ## Lisää luvut määritetyn ehdon täyttävien tietokannan tietueiden kenttäsarakkeeseen.
-DVAR = TVARIANSSI ## Laskee varianssin tietokannasta valittujen arvojen otoksen perusteella.
-DVARP = TVARIANSSIP ## Laskee varianssin tietokannasta valittujen arvojen koko populaation perusteella.
-
-
-##
-## Date and time functions Päivämäärä- ja aikafunktiot
-##
-DATE = PÄIVÄYS ## Palauttaa annetun päivämäärän järjestysluvun.
-DATEVALUE = PÄIVÄYSARVO ## Muuntaa tekstimuodossa olevan päivämäärän järjestysluvuksi.
-DAY = PÄIVÄ ## Muuntaa järjestysluvun kuukauden päiväksi.
-DAYS360 = PÄIVÄT360 ## Laskee kahden päivämäärän välisten päivien määrän käyttäen perustana 360-päiväistä vuotta.
-EDATE = PÄIVÄ.KUUKAUSI ## Palauttaa järjestyslukuna päivämäärän, joka poikkeaa aloituspäivän päivämäärästä annetun kuukausimäärän verran joko eteen- tai taaksepäin.
-EOMONTH = KUUKAUSI.LOPPU ## Palauttaa järjestyslukuna sen kuukauden viimeisen päivämäärän, joka poikkeaa annetun kuukausimäärän verran eteen- tai taaksepäin.
-HOUR = TUNNIT ## Muuntaa järjestysluvun tunneiksi.
-MINUTE = MINUUTIT ## Muuntaa järjestysluvun minuuteiksi.
-MONTH = KUUKAUSI ## Muuntaa järjestysluvun kuukausiksi.
-NETWORKDAYS = TYÖPÄIVÄT ## Palauttaa kahden päivämäärän välissä olevien täysien työpäivien määrän.
-NOW = NYT ## Palauttaa kuluvan päivämäärän ja ajan järjestysnumeron.
-SECOND = SEKUNNIT ## Muuntaa järjestysluvun sekunneiksi.
-TIME = AIKA ## Palauttaa annetun kellonajan järjestysluvun.
-TIMEVALUE = AIKA_ARVO ## Muuntaa tekstimuodossa olevan kellonajan järjestysluvuksi.
-TODAY = TÄMÄ.PÄIVÄ ## Palauttaa kuluvan päivän päivämäärän järjestysluvun.
-WEEKDAY = VIIKONPÄIVÄ ## Muuntaa järjestysluvun viikonpäiväksi.
-WEEKNUM = VIIKKO.NRO ## Muuntaa järjestysluvun luvuksi, joka ilmaisee viikon järjestysluvun vuoden alusta laskettuna.
-WORKDAY = TYÖPÄIVÄ ## Palauttaa järjestysluvun päivämäärälle, joka sijaitsee annettujen työpäivien verran eteen tai taaksepäin.
-YEAR = VUOSI ## Muuntaa järjestysluvun vuosiksi.
-YEARFRAC = VUOSI.OSA ## Palauttaa määritettyjen päivämäärien (aloituspäivä ja lopetuspäivä) välisen osan vuodesta.
-
-
-##
-## Engineering functions Tekniset funktiot
-##
-BESSELI = BESSELI ## Palauttaa muunnetun Bessel-funktion In(x).
-BESSELJ = BESSELJ ## Palauttaa Bessel-funktion Jn(x).
-BESSELK = BESSELK ## Palauttaa muunnetun Bessel-funktion Kn(x).
-BESSELY = BESSELY ## Palauttaa Bessel-funktion Yn(x).
-BIN2DEC = BINDES ## Muuntaa binaariluvun desimaaliluvuksi.
-BIN2HEX = BINHEKSA ## Muuntaa binaariluvun heksadesimaaliluvuksi.
-BIN2OCT = BINOKT ## Muuntaa binaariluvun oktaaliluvuksi.
-COMPLEX = KOMPLEKSI ## Muuntaa reaali- ja imaginaariosien kertoimet kompleksiluvuksi.
-CONVERT = MUUNNA ## Muuntaa luvun toisen mittajärjestelmän mukaiseksi.
-DEC2BIN = DESBIN ## Muuntaa desimaaliluvun binaariluvuksi.
-DEC2HEX = DESHEKSA ## Muuntaa kymmenjärjestelmän luvun heksadesimaaliluvuksi.
-DEC2OCT = DESOKT ## Muuntaa kymmenjärjestelmän luvun oktaaliluvuksi.
-DELTA = SAMA.ARVO ## Tarkistaa, ovatko kaksi arvoa yhtä suuria.
-ERF = VIRHEFUNKTIO ## Palauttaa virhefunktion.
-ERFC = VIRHEFUNKTIO.KOMPLEMENTTI ## Palauttaa komplementtivirhefunktion.
-GESTEP = RAJA ## Testaa, onko luku suurempi kuin kynnysarvo.
-HEX2BIN = HEKSABIN ## Muuntaa heksadesimaaliluvun binaariluvuksi.
-HEX2DEC = HEKSADES ## Muuntaa heksadesimaaliluvun desimaaliluvuksi.
-HEX2OCT = HEKSAOKT ## Muuntaa heksadesimaaliluvun oktaaliluvuksi.
-IMABS = KOMPLEKSI.ITSEISARVO ## Palauttaa kompleksiluvun itseisarvon (moduluksen).
-IMAGINARY = KOMPLEKSI.IMAG ## Palauttaa kompleksiluvun imaginaariosan kertoimen.
-IMARGUMENT = KOMPLEKSI.ARG ## Palauttaa theeta-argumentin, joka on radiaaneina annettu kulma.
-IMCONJUGATE = KOMPLEKSI.KONJ ## Palauttaa kompleksiluvun konjugaattiluvun.
-IMCOS = KOMPLEKSI.COS ## Palauttaa kompleksiluvun kosinin.
-IMDIV = KOMPLEKSI.OSAM ## Palauttaa kahden kompleksiluvun osamäärän.
-IMEXP = KOMPLEKSI.EKSP ## Palauttaa kompleksiluvun eksponentin.
-IMLN = KOMPLEKSI.LN ## Palauttaa kompleksiluvun luonnollisen logaritmin.
-IMLOG10 = KOMPLEKSI.LOG10 ## Palauttaa kompleksiluvun kymmenkantaisen logaritmin.
-IMLOG2 = KOMPLEKSI.LOG2 ## Palauttaa kompleksiluvun kaksikantaisen logaritmin.
-IMPOWER = KOMPLEKSI.POT ## Palauttaa kokonaislukupotenssiin korotetun kompleksiluvun.
-IMPRODUCT = KOMPLEKSI.TULO ## Palauttaa kompleksilukujen tulon.
-IMREAL = KOMPLEKSI.REAALI ## Palauttaa kompleksiluvun reaaliosan kertoimen.
-IMSIN = KOMPLEKSI.SIN ## Palauttaa kompleksiluvun sinin.
-IMSQRT = KOMPLEKSI.NELIÖJ ## Palauttaa kompleksiluvun neliöjuuren.
-IMSUB = KOMPLEKSI.EROTUS ## Palauttaa kahden kompleksiluvun erotuksen.
-IMSUM = KOMPLEKSI.SUM ## Palauttaa kompleksilukujen summan.
-OCT2BIN = OKTBIN ## Muuntaa oktaaliluvun binaariluvuksi.
-OCT2DEC = OKTDES ## Muuntaa oktaaliluvun desimaaliluvuksi.
-OCT2HEX = OKTHEKSA ## Muuntaa oktaaliluvun heksadesimaaliluvuksi.
-
-
-##
-## Financial functions Rahoitusfunktiot
-##
-ACCRINT = KERTYNYT.KORKO ## Laskee arvopaperille kertyneen koron, kun korko kertyy säännöllisin väliajoin.
-ACCRINTM = KERTYNYT.KORKO.LOPUSSA ## Laskee arvopaperille kertyneen koron, kun korko maksetaan eräpäivänä.
-AMORDEGRC = AMORDEGRC ## Laskee kunkin laskentakauden poiston poistokerrointa käyttämällä.
-AMORLINC = AMORLINC ## Palauttaa kunkin laskentakauden poiston.
-COUPDAYBS = KORKOPÄIVÄT.ALUSTA ## Palauttaa koronmaksukauden aloituspäivän ja tilityspäivän välisen ajanjakson päivien määrän.
-COUPDAYS = KORKOPÄIVÄT ## Palauttaa päivien määrän koronmaksukaudelta, johon tilityspäivä kuuluu.
-COUPDAYSNC = KORKOPÄIVÄT.SEURAAVA ## Palauttaa tilityspäivän ja seuraavan koronmaksupäivän välisen ajanjakson päivien määrän.
-COUPNCD = KORKOMAKSU.SEURAAVA ## Palauttaa tilityspäivän jälkeisen seuraavan koronmaksupäivän.
-COUPNUM = KORKOPÄIVÄJAKSOT ## Palauttaa arvopaperin ostopäivän ja erääntymispäivän välisten koronmaksupäivien määrän.
-COUPPCD = KORKOPÄIVÄ.EDELLINEN ## Palauttaa tilityspäivää edeltävän koronmaksupäivän.
-CUMIPMT = MAKSETTU.KORKO ## Palauttaa kahden jakson välisenä aikana kertyneen koron.
-CUMPRINC = MAKSETTU.LYHENNYS ## Palauttaa lainalle kahden jakson välisenä aikana kertyneen lyhennyksen.
-DB = DB ## Palauttaa kauden kirjanpidollisen poiston amerikkalaisen DB-menetelmän (Fixed-declining balance) mukaan.
-DDB = DDB ## Palauttaa kauden kirjanpidollisen poiston amerikkalaisen DDB-menetelmän (Double-Declining Balance) tai jonkin muun määrittämäsi menetelmän mukaan.
-DISC = DISKONTTOKORKO ## Palauttaa arvopaperin diskonttokoron.
-DOLLARDE = VALUUTTA.DES ## Muuntaa murtolukuna ilmoitetun valuuttamäärän desimaaliluvuksi.
-DOLLARFR = VALUUTTA.MURTO ## Muuntaa desimaalilukuna ilmaistun valuuttamäärän murtoluvuksi.
-DURATION = KESTO ## Palauttaa keston arvopaperille, jonka koronmaksu tapahtuu säännöllisesti.
-EFFECT = KORKO.EFEKT ## Palauttaa todellisen vuosikoron.
-FV = TULEVA.ARVO ## Palauttaa sijoituksen tulevan arvon.
-FVSCHEDULE = TULEVA.ARVO.ERIKORKO ## Palauttaa pääoman tulevan arvon, kun pääomalle on kertynyt korkoa vaihtelevasti.
-INTRATE = KORKO.ARVOPAPERI ## Palauttaa arvopaperin korkokannan täysin sijoitetulle arvopaperille.
-IPMT = IPMT ## Laskee sijoitukselle tai lainalle tiettynä ajanjaksona kertyvän koron.
-IRR = SISÄINEN.KORKO ## Laskee sisäisen korkokannan kassavirrasta muodostuvalle sarjalle.
-ISPMT = ONMAKSU ## Laskee sijoituksen maksetun koron tietyllä jaksolla.
-MDURATION = KESTO.MUUNN ## Palauttaa muunnetun Macauley-keston arvopaperille, jonka oletettu nimellisarvo on 100 euroa.
-MIRR = MSISÄINEN ## Palauttaa sisäisen korkokannan, kun positiivisten ja negatiivisten kassavirtojen rahoituskorko on erilainen.
-NOMINAL = KORKO.VUOSI ## Palauttaa vuosittaisen nimelliskoron.
-NPER = NJAKSO ## Palauttaa sijoituksen jaksojen määrän.
-NPV = NNA ## Palauttaa sijoituksen nykyarvon toistuvista kassavirroista muodostuvan sarjan ja diskonttokoron perusteella.
-ODDFPRICE = PARITON.ENS.NIMELLISARVO ## Palauttaa arvopaperin hinnan tilanteessa, jossa ensimmäinen jakso on pariton.
-ODDFYIELD = PARITON.ENS.TUOTTO ## Palauttaa arvopaperin tuoton tilanteessa, jossa ensimmäinen jakso on pariton.
-ODDLPRICE = PARITON.VIIM.NIMELLISARVO ## Palauttaa arvopaperin hinnan tilanteessa, jossa viimeinen jakso on pariton.
-ODDLYIELD = PARITON.VIIM.TUOTTO ## Palauttaa arvopaperin tuoton tilanteessa, jossa viimeinen jakso on pariton.
-PMT = MAKSU ## Palauttaa annuiteetin kausittaisen maksuerän.
-PPMT = PPMT ## Laskee sijoitukselle tai lainalle tiettynä ajanjaksona maksettavan lyhennyksen.
-PRICE = HINTA ## Palauttaa hinnan 100 euron nimellisarvoa kohden arvopaperille, jonka korko maksetaan säännöllisin väliajoin.
-PRICEDISC = HINTA.DISK ## Palauttaa diskontatun arvopaperin hinnan 100 euron nimellisarvoa kohden.
-PRICEMAT = HINTA.LUNASTUS ## Palauttaa hinnan 100 euron nimellisarvoa kohden arvopaperille, jonka korko maksetaan erääntymispäivänä.
-PV = NA ## Palauttaa sijoituksen nykyarvon.
-RATE = KORKO ## Palauttaa annuiteetin kausittaisen korkokannan.
-RECEIVED = SAATU.HINTA ## Palauttaa arvopaperin tuoton erääntymispäivänä kokonaan maksetulle sijoitukselle.
-SLN = STP ## Palauttaa sijoituksen tasapoiston yhdeltä jaksolta.
-SYD = VUOSIPOISTO ## Palauttaa sijoituksen vuosipoiston annettuna kautena amerikkalaisen SYD-menetelmän (Sum-of-Year's Digits) avulla.
-TBILLEQ = OBLIG.TUOTTOPROS ## Palauttaa valtion obligaation tuoton vastaavana joukkovelkakirjan tuottona.
-TBILLPRICE = OBLIG.HINTA ## Palauttaa obligaation hinnan 100 euron nimellisarvoa kohden.
-TBILLYIELD = OBLIG.TUOTTO ## Palauttaa obligaation tuoton.
-VDB = VDB ## Palauttaa annetun kauden tai kauden osan kirjanpidollisen poiston amerikkalaisen DB-menetelmän (Fixed-declining balance) mukaan.
-XIRR = SISÄINEN.KORKO.JAKSOTON ## Palauttaa sisäisen korkokannan kassavirtojen sarjoille, jotka eivät välttämättä ole säännöllisiä.
-XNPV = NNA.JAKSOTON ## Palauttaa nettonykyarvon kassavirtasarjalle, joka ei välttämättä ole kausittainen.
-YIELD = TUOTTO ## Palauttaa tuoton arvopaperille, jonka korko maksetaan säännöllisin väliajoin.
-YIELDDISC = TUOTTO.DISK ## Palauttaa diskontatun arvopaperin, kuten obligaation, vuosittaisen tuoton.
-YIELDMAT = TUOTTO.ERÄP ## Palauttaa erääntymispäivänään korkoa tuottavan arvopaperin vuosittaisen tuoton.
-
-
-##
-## Information functions Erikoisfunktiot
-##
-CELL = SOLU ## Palauttaa tietoja solun muotoilusta, sijainnista ja sisällöstä.
-ERROR.TYPE = VIRHEEN.LAJI ## Palauttaa virhetyyppiä vastaavan luvun.
-INFO = KUVAUS ## Palauttaa tietoja nykyisestä käyttöympäristöstä.
-ISBLANK = ONTYHJÄ ## Palauttaa arvon TOSI, jos arvo on tyhjä.
-ISERR = ONVIRH ## Palauttaa arvon TOSI, jos arvo on mikä tahansa virhearvo paitsi arvo #PUUTTUU!.
-ISERROR = ONVIRHE ## Palauttaa arvon TOSI, jos arvo on mikä tahansa virhearvo.
-ISEVEN = ONPARILLINEN ## Palauttaa arvon TOSI, jos arvo on parillinen.
-ISLOGICAL = ONTOTUUS ## Palauttaa arvon TOSI, jos arvo on mikä tahansa looginen arvo.
-ISNA = ONPUUTTUU ## Palauttaa arvon TOSI, jos virhearvo on #PUUTTUU!.
-ISNONTEXT = ONEI_TEKSTI ## Palauttaa arvon TOSI, jos arvo ei ole teksti.
-ISNUMBER = ONLUKU ## Palauttaa arvon TOSI, jos arvo on luku.
-ISODD = ONPARITON ## Palauttaa arvon TOSI, jos arvo on pariton.
-ISREF = ONVIITT ## Palauttaa arvon TOSI, jos arvo on viittaus.
-ISTEXT = ONTEKSTI ## Palauttaa arvon TOSI, jos arvo on teksti.
-N = N ## Palauttaa arvon luvuksi muunnettuna.
-NA = PUUTTUU ## Palauttaa virhearvon #PUUTTUU!.
-TYPE = TYYPPI ## Palauttaa luvun, joka ilmaisee arvon tietotyypin.
-
-
-##
-## Logical functions Loogiset funktiot
-##
-AND = JA ## Palauttaa arvon TOSI, jos kaikkien argumenttien arvo on TOSI.
-FALSE = EPÄTOSI ## Palauttaa totuusarvon EPÄTOSI.
-IF = JOS ## Määrittää suoritettavan loogisen testin.
-IFERROR = JOSVIRHE ## Palauttaa määrittämäsi arvon, jos kaavan tulos on virhe; muussa tapauksessa palauttaa kaavan tuloksen.
-NOT = EI ## Kääntää argumentin loogisen arvon.
-OR = TAI ## Palauttaa arvon TOSI, jos minkä tahansa argumentin arvo on TOSI.
-TRUE = TOSI ## Palauttaa totuusarvon TOSI.
-
-
-##
-## Lookup and reference functions Haku- ja viitefunktiot
-##
-ADDRESS = OSOITE ## Palauttaa laskentataulukon soluun osoittavan viittauksen tekstinä.
-AREAS = ALUEET ## Palauttaa viittauksessa olevien alueiden määrän.
-CHOOSE = VALITSE.INDEKSI ## Valitsee arvon arvoluettelosta.
-COLUMN = SARAKE ## Palauttaa viittauksen sarakenumeron.
-COLUMNS = SARAKKEET ## Palauttaa viittauksessa olevien sarakkeiden määrän.
-HLOOKUP = VHAKU ## Suorittaa haun matriisin ylimmältä riviltä ja palauttaa määritetyn solun arvon.
-HYPERLINK = HYPERLINKKI ## Luo pikakuvakkeen tai tekstin, joka avaa verkkopalvelimeen, intranetiin tai Internetiin tallennetun tiedoston.
-INDEX = INDEKSI ## Valitsee arvon viittauksesta tai matriisista indeksin mukaan.
-INDIRECT = EPÄSUORA ## Palauttaa tekstiarvona ilmaistun viittauksen.
-LOOKUP = HAKU ## Etsii arvoja vektorista tai matriisista.
-MATCH = VASTINE ## Etsii arvoja viittauksesta tai matriisista.
-OFFSET = SIIRTYMÄ ## Palauttaa annetun viittauksen siirtymän.
-ROW = RIVI ## Palauttaa viittauksen rivinumeron.
-ROWS = RIVIT ## Palauttaa viittauksessa olevien rivien määrän.
-RTD = RTD ## Noutaa COM-automaatiota (automaatio: Tapa käsitellä sovelluksen objekteja toisesta sovelluksesta tai kehitystyökalusta. Automaatio, jota aiemmin kutsuttiin OLE-automaatioksi, on teollisuusstandardi ja COM-mallin (Component Object Model) ominaisuus.) tukevasta ohjelmasta reaaliaikaisia tietoja.
-TRANSPOSE = TRANSPONOI ## Palauttaa matriisin käänteismatriisin.
-VLOOKUP = PHAKU ## Suorittaa haun matriisin ensimmäisestä sarakkeesta ja palauttaa rivillä olevan solun arvon.
-
-
-##
-## Math and trigonometry functions Matemaattiset ja trigonometriset funktiot
-##
-ABS = ITSEISARVO ## Palauttaa luvun itseisarvon.
-ACOS = ACOS ## Palauttaa luvun arkuskosinin.
-ACOSH = ACOSH ## Palauttaa luvun käänteisen hyperbolisen kosinin.
-ASIN = ASIN ## Palauttaa luvun arkussinin.
-ASINH = ASINH ## Palauttaa luvun käänteisen hyperbolisen sinin.
-ATAN = ATAN ## Palauttaa luvun arkustangentin.
-ATAN2 = ATAN2 ## Palauttaa arkustangentin x- ja y-koordinaatin perusteella.
-ATANH = ATANH ## Palauttaa luvun käänteisen hyperbolisen tangentin.
-CEILING = PYÖRISTÄ.KERR.YLÖS ## Pyöristää luvun lähimpään kokonaislukuun tai tarkkuusargumentin lähimpään kerrannaiseen.
-COMBIN = KOMBINAATIO ## Palauttaa mahdollisten kombinaatioiden määrän annetulle objektien määrälle.
-COS = COS ## Palauttaa luvun kosinin.
-COSH = COSH ## Palauttaa luvun hyperbolisen kosinin.
-DEGREES = ASTEET ## Muuntaa radiaanit asteiksi.
-EVEN = PARILLINEN ## Pyöristää luvun ylöspäin lähimpään parilliseen kokonaislukuun.
-EXP = EKSPONENTTI ## Palauttaa e:n korotettuna annetun luvun osoittamaan potenssiin.
-FACT = KERTOMA ## Palauttaa luvun kertoman.
-FACTDOUBLE = KERTOMA.OSA ## Palauttaa luvun osakertoman.
-FLOOR = PYÖRISTÄ.KERR.ALAS ## Pyöristää luvun alaspäin (nollaa kohti).
-GCD = SUURIN.YHT.TEKIJÄ ## Palauttaa suurimman yhteisen tekijän.
-INT = KOKONAISLUKU ## Pyöristää luvun alaspäin lähimpään kokonaislukuun.
-LCM = PIENIN.YHT.JAETTAVA ## Palauttaa pienimmän yhteisen tekijän.
-LN = LUONNLOG ## Palauttaa luvun luonnollisen logaritmin.
-LOG = LOG ## Laskee luvun logaritmin käyttämällä annettua kantalukua.
-LOG10 = LOG10 ## Palauttaa luvun kymmenkantaisen logaritmin.
-MDETERM = MDETERM ## Palauttaa matriisin matriisideterminantin.
-MINVERSE = MKÄÄNTEINEN ## Palauttaa matriisin käänteismatriisin.
-MMULT = MKERRO ## Palauttaa kahden matriisin tulon.
-MOD = JAKOJ ## Palauttaa jakolaskun jäännöksen.
-MROUND = PYÖRISTÄ.KERR ## Palauttaa luvun pyöristettynä annetun luvun kerrannaiseen.
-MULTINOMIAL = MULTINOMI ## Palauttaa lukujoukon multinomin.
-ODD = PARITON ## Pyöristää luvun ylöspäin lähimpään parittomaan kokonaislukuun.
-PI = PII ## Palauttaa piin arvon.
-POWER = POTENSSI ## Palauttaa luvun korotettuna haluttuun potenssiin.
-PRODUCT = TULO ## Kertoo annetut argumentit.
-QUOTIENT = OSAMÄÄRÄ ## Palauttaa osamäärän kokonaislukuosan.
-RADIANS = RADIAANIT ## Muuntaa asteet radiaaneiksi.
-RAND = SATUNNAISLUKU ## Palauttaa satunnaisluvun väliltä 0–1.
-RANDBETWEEN = SATUNNAISLUKU.VÄLILTÄ ## Palauttaa satunnaisluvun määritettyjen lukujen väliltä.
-ROMAN = ROMAN ## Muuntaa arabialaisen numeron tekstimuotoiseksi roomalaiseksi numeroksi.
-ROUND = PYÖRISTÄ ## Pyöristää luvun annettuun määrään desimaaleja.
-ROUNDDOWN = PYÖRISTÄ.DES.ALAS ## Pyöristää luvun alaspäin (nollaa kohti).
-ROUNDUP = PYÖRISTÄ.DES.YLÖS ## Pyöristää luvun ylöspäin (poispäin nollasta).
-SERIESSUM = SARJA.SUMMA ## Palauttaa kaavaan perustuvan potenssisarjan arvon.
-SIGN = ETUMERKKI ## Palauttaa luvun etumerkin.
-SIN = SIN ## Palauttaa annetun kulman sinin.
-SINH = SINH ## Palauttaa luvun hyperbolisen sinin.
-SQRT = NELIÖJUURI ## Palauttaa positiivisen neliöjuuren.
-SQRTPI = NELIÖJUURI.PII ## Palauttaa tulon (luku * pii) neliöjuuren.
-SUBTOTAL = VÄLISUMMA ## Palauttaa luettelon tai tietokannan välisumman.
-SUM = SUMMA ## Laskee yhteen annetut argumentit.
-SUMIF = SUMMA.JOS ## Laskee ehdot täyttävien solujen summan.
-SUMIFS = SUMMA.JOS.JOUKKO ## Laskee yhteen solualueen useita ehtoja vastaavat solut.
-SUMPRODUCT = TULOJEN.SUMMA ## Palauttaa matriisin toisiaan vastaavien osien tulojen summan.
-SUMSQ = NELIÖSUMMA ## Palauttaa argumenttien neliöiden summan.
-SUMX2MY2 = NELIÖSUMMIEN.EROTUS ## Palauttaa kahden matriisin toisiaan vastaavien arvojen laskettujen neliösummien erotuksen.
-SUMX2PY2 = NELIÖSUMMIEN.SUMMA ## Palauttaa kahden matriisin toisiaan vastaavien arvojen neliösummien summan.
-SUMXMY2 = EROTUSTEN.NELIÖSUMMA ## Palauttaa kahden matriisin toisiaan vastaavien arvojen erotusten neliösumman.
-TAN = TAN ## Palauttaa luvun tangentin.
-TANH = TANH ## Palauttaa luvun hyperbolisen tangentin.
-TRUNC = KATKAISE ## Katkaisee luvun kokonaisluvuksi.
-
-
-##
-## Statistical functions Tilastolliset funktiot
-##
-AVEDEV = KESKIPOIKKEAMA ## Palauttaa hajontojen itseisarvojen keskiarvon.
-AVERAGE = KESKIARVO ## Palauttaa argumenttien keskiarvon.
-AVERAGEA = KESKIARVOA ## Palauttaa argumenttien, mukaan lukien lukujen, tekstin ja loogisten arvojen, keskiarvon.
-AVERAGEIF = KESKIARVO.JOS ## Palauttaa alueen niiden solujen keskiarvon (aritmeettisen keskiarvon), jotka täyttävät annetut ehdot.
-AVERAGEIFS = KESKIARVO.JOS.JOUKKO ## Palauttaa niiden solujen keskiarvon (aritmeettisen keskiarvon), jotka vastaavat useita ehtoja.
-BETADIST = BEETAJAKAUMA ## Palauttaa kumulatiivisen beetajakaumafunktion arvon.
-BETAINV = BEETAJAKAUMA.KÄÄNT ## Palauttaa määritetyn beetajakauman käänteisen kumulatiivisen jakaumafunktion arvon.
-BINOMDIST = BINOMIJAKAUMA ## Palauttaa yksittäisen termin binomijakaumatodennäköisyyden.
-CHIDIST = CHIJAKAUMA ## Palauttaa yksisuuntaisen chi-neliön jakauman todennäköisyyden.
-CHIINV = CHIJAKAUMA.KÄÄNT ## Palauttaa yksisuuntaisen chi-neliön jakauman todennäköisyyden käänteisarvon.
-CHITEST = CHITESTI ## Palauttaa riippumattomuustestin tuloksen.
-CONFIDENCE = LUOTTAMUSVÄLI ## Palauttaa luottamusvälin populaation keskiarvolle.
-CORREL = KORRELAATIO ## Palauttaa kahden arvojoukon korrelaatiokertoimen.
-COUNT = LASKE ## Laskee argumenttiluettelossa olevien lukujen määrän.
-COUNTA = LASKE.A ## Laskee argumenttiluettelossa olevien arvojen määrän.
-COUNTBLANK = LASKE.TYHJÄT ## Laskee alueella olevien tyhjien solujen määrän.
-COUNTIF = LASKE.JOS ## Laskee alueella olevien sellaisten solujen määrän, joiden sisältö vastaa annettuja ehtoja.
-COUNTIFS = LASKE.JOS.JOUKKO ## Laskee alueella olevien sellaisten solujen määrän, joiden sisältö vastaa useita ehtoja.
-COVAR = KOVARIANSSI ## Palauttaa kovarianssin, joka on keskiarvo havaintoaineiston kunkin pisteparin poikkeamien tuloista.
-CRITBINOM = BINOMIJAKAUMA.KRIT ## Palauttaa pienimmän arvon, jossa binomijakauman kertymäfunktion arvo on pienempi tai yhtä suuri kuin vertailuarvo.
-DEVSQ = OIKAISTU.NELIÖSUMMA ## Palauttaa keskipoikkeamien neliösumman.
-EXPONDIST = EKSPONENTIAALIJAKAUMA ## Palauttaa eksponentiaalijakauman.
-FDIST = FJAKAUMA ## Palauttaa F-todennäköisyysjakauman.
-FINV = FJAKAUMA.KÄÄNT ## Palauttaa F-todennäköisyysjakauman käänteisfunktion.
-FISHER = FISHER ## Palauttaa Fisher-muunnoksen.
-FISHERINV = FISHER.KÄÄNT ## Palauttaa käänteisen Fisher-muunnoksen.
-FORECAST = ENNUSTE ## Palauttaa lineaarisen trendin arvon.
-FREQUENCY = TAAJUUS ## Palauttaa frekvenssijakautuman pystysuuntaisena matriisina.
-FTEST = FTESTI ## Palauttaa F-testin tuloksen.
-GAMMADIST = GAMMAJAKAUMA ## Palauttaa gammajakauman.
-GAMMAINV = GAMMAJAKAUMA.KÄÄNT ## Palauttaa käänteisen gammajakauman kertymäfunktion.
-GAMMALN = GAMMALN ## Palauttaa gammafunktion luonnollisen logaritmin G(x).
-GEOMEAN = KESKIARVO.GEOM ## Palauttaa geometrisen keskiarvon.
-GROWTH = KASVU ## Palauttaa eksponentiaalisen trendin arvon.
-HARMEAN = KESKIARVO.HARM ## Palauttaa harmonisen keskiarvon.
-HYPGEOMDIST = HYPERGEOM.JAKAUMA ## Palauttaa hypergeometrisen jakauman.
-INTERCEPT = LEIKKAUSPISTE ## Palauttaa lineaarisen regressiosuoran leikkauspisteen.
-KURT = KURT ## Palauttaa tietoalueen vinous-arvon eli huipukkuuden.
-LARGE = SUURI ## Palauttaa tietojoukon k:nneksi suurimman arvon.
-LINEST = LINREGR ## Palauttaa lineaarisen trendin parametrit.
-LOGEST = LOGREGR ## Palauttaa eksponentiaalisen trendin parametrit.
-LOGINV = LOGNORM.JAKAUMA.KÄÄNT ## Palauttaa lognormeeratun jakauman käänteisfunktion.
-LOGNORMDIST = LOGNORM.JAKAUMA ## Palauttaa lognormaalisen jakauman kertymäfunktion.
-MAX = MAKS ## Palauttaa suurimman arvon argumenttiluettelosta.
-MAXA = MAKSA ## Palauttaa argumenttien, mukaan lukien lukujen, tekstin ja loogisten arvojen, suurimman arvon.
-MEDIAN = MEDIAANI ## Palauttaa annettujen lukujen mediaanin.
-MIN = MIN ## Palauttaa pienimmän arvon argumenttiluettelosta.
-MINA = MINA ## Palauttaa argumenttien, mukaan lukien lukujen, tekstin ja loogisten arvojen, pienimmän arvon.
-MODE = MOODI ## Palauttaa tietojoukossa useimmin esiintyvän arvon.
-NEGBINOMDIST = BINOMIJAKAUMA.NEG ## Palauttaa negatiivisen binomijakauman.
-NORMDIST = NORM.JAKAUMA ## Palauttaa normaalijakauman kertymäfunktion.
-NORMINV = NORM.JAKAUMA.KÄÄNT ## Palauttaa käänteisen normaalijakauman kertymäfunktion.
-NORMSDIST = NORM.JAKAUMA.NORMIT ## Palauttaa normitetun normaalijakauman kertymäfunktion.
-NORMSINV = NORM.JAKAUMA.NORMIT.KÄÄNT ## Palauttaa normitetun normaalijakauman kertymäfunktion käänteisarvon.
-PEARSON = PEARSON ## Palauttaa Pearsonin tulomomenttikorrelaatiokertoimen.
-PERCENTILE = PROSENTTIPISTE ## Palauttaa alueen arvojen k:nnen prosenttipisteen.
-PERCENTRANK = PROSENTTIJÄRJESTYS ## Palauttaa tietojoukon arvon prosentuaalisen järjestysluvun.
-PERMUT = PERMUTAATIO ## Palauttaa mahdollisten permutaatioiden määrän annetulle objektien määrälle.
-POISSON = POISSON ## Palauttaa Poissonin todennäköisyysjakauman.
-PROB = TODENNÄKÖISYYS ## Palauttaa todennäköisyyden sille, että arvot ovat tietyltä väliltä.
-QUARTILE = NELJÄNNES ## Palauttaa tietoalueen neljänneksen.
-RANK = ARVON.MUKAAN ## Palauttaa luvun paikan lukuarvoluettelossa.
-RSQ = PEARSON.NELIÖ ## Palauttaa Pearsonin tulomomenttikorrelaatiokertoimen neliön.
-SKEW = JAKAUMAN.VINOUS ## Palauttaa jakauman vinouden.
-SLOPE = KULMAKERROIN ## Palauttaa lineaarisen regressiosuoran kulmakertoimen.
-SMALL = PIENI ## Palauttaa tietojoukon k:nneksi pienimmän arvon.
-STANDARDIZE = NORMITA ## Palauttaa normitetun arvon.
-STDEV = KESKIHAJONTA ## Laskee populaation keskihajonnan otoksen perusteella.
-STDEVA = KESKIHAJONTAA ## Laskee populaation keskihajonnan otoksen perusteella, mukaan lukien luvut, tekstin ja loogiset arvot.
-STDEVP = KESKIHAJONTAP ## Laskee normaalijakautuman koko populaation perusteella.
-STDEVPA = KESKIHAJONTAPA ## Laskee populaation keskihajonnan koko populaation perusteella, mukaan lukien luvut, tekstin ja totuusarvot.
-STEYX = KESKIVIRHE ## Palauttaa regression kutakin x-arvoa vastaavan ennustetun y-arvon keskivirheen.
-TDIST = TJAKAUMA ## Palauttaa t-jakautuman.
-TINV = TJAKAUMA.KÄÄNT ## Palauttaa käänteisen t-jakauman.
-TREND = SUUNTAUS ## Palauttaa lineaarisen trendin arvoja.
-TRIMMEAN = KESKIARVO.TASATTU ## Palauttaa tietojoukon tasatun keskiarvon.
-TTEST = TTESTI ## Palauttaa t-testiin liittyvän todennäköisyyden.
-VAR = VAR ## Arvioi populaation varianssia otoksen perusteella.
-VARA = VARA ## Laskee populaation varianssin otoksen perusteella, mukaan lukien luvut, tekstin ja loogiset arvot.
-VARP = VARP ## Laskee varianssin koko populaation perusteella.
-VARPA = VARPA ## Laskee populaation varianssin koko populaation perusteella, mukaan lukien luvut, tekstin ja totuusarvot.
-WEIBULL = WEIBULL ## Palauttaa Weibullin jakauman.
-ZTEST = ZTESTI ## Palauttaa z-testin yksisuuntaisen todennäköisyysarvon.
-
-
-##
-## Text functions Tekstifunktiot
-##
-ASC = ASC ## Muuntaa merkkijonossa olevat englanninkieliset DBCS- tai katakana-merkit SBCS-merkeiksi.
-BAHTTEXT = BAHTTEKSTI ## Muuntaa luvun tekstiksi ß (baht) -valuuttamuotoa käyttämällä.
-CHAR = MERKKI ## Palauttaa koodin lukua vastaavan merkin.
-CLEAN = SIIVOA ## Poistaa tekstistä kaikki tulostumattomat merkit.
-CODE = KOODI ## Palauttaa tekstimerkkijonon ensimmäisen merkin numerokoodin.
-CONCATENATE = KETJUTA ## Yhdistää useat merkkijonot yhdeksi merkkijonoksi.
-DOLLAR = VALUUTTA ## Muuntaa luvun tekstiksi $ (dollari) -valuuttamuotoa käyttämällä.
-EXACT = VERTAA ## Tarkistaa, ovatko kaksi tekstiarvoa samanlaiset.
-FIND = ETSI ## Etsii tekstiarvon toisen tekstin sisältä (tunnistaa isot ja pienet kirjaimet).
-FINDB = ETSIB ## Etsii tekstiarvon toisen tekstin sisältä (tunnistaa isot ja pienet kirjaimet).
-FIXED = KIINTEÄ ## Muotoilee luvun tekstiksi, jossa on kiinteä määrä desimaaleja.
-JIS = JIS ## Muuntaa merkkijonossa olevat englanninkieliset SBCS- tai katakana-merkit DBCS-merkeiksi.
-LEFT = VASEN ## Palauttaa tekstiarvon vasemmanpuoliset merkit.
-LEFTB = VASENB ## Palauttaa tekstiarvon vasemmanpuoliset merkit.
-LEN = PITUUS ## Palauttaa tekstimerkkijonon merkkien määrän.
-LENB = PITUUSB ## Palauttaa tekstimerkkijonon merkkien määrän.
-LOWER = PIENET ## Muuntaa tekstin pieniksi kirjaimiksi.
-MID = POIMI.TEKSTI ## Palauttaa määritetyn määrän merkkejä merkkijonosta alkaen annetusta kohdasta.
-MIDB = POIMI.TEKSTIB ## Palauttaa määritetyn määrän merkkejä merkkijonosta alkaen annetusta kohdasta.
-PHONETIC = FONEETTINEN ## Hakee foneettiset (furigana) merkit merkkijonosta.
-PROPER = ERISNIMI ## Muuttaa merkkijonon kunkin sanan ensimmäisen kirjaimen isoksi.
-REPLACE = KORVAA ## Korvaa tekstissä olevat merkit.
-REPLACEB = KORVAAB ## Korvaa tekstissä olevat merkit.
-REPT = TOISTA ## Toistaa tekstin annetun määrän kertoja.
-RIGHT = OIKEA ## Palauttaa tekstiarvon oikeanpuoliset merkit.
-RIGHTB = OIKEAB ## Palauttaa tekstiarvon oikeanpuoliset merkit.
-SEARCH = KÄY.LÄPI ## Etsii tekstiarvon toisen tekstin sisältä (isot ja pienet kirjaimet tulkitaan samoiksi merkeiksi).
-SEARCHB = KÄY.LÄPIB ## Etsii tekstiarvon toisen tekstin sisältä (isot ja pienet kirjaimet tulkitaan samoiksi merkeiksi).
-SUBSTITUTE = VAIHDA ## Korvaa merkkijonossa olevan tekstin toisella.
-T = T ## Muuntaa argumentit tekstiksi.
-TEXT = TEKSTI ## Muotoilee luvun ja muuntaa sen tekstiksi.
-TRIM = POISTA.VÄLIT ## Poistaa välilyönnit tekstistä.
-UPPER = ISOT ## Muuntaa tekstin isoiksi kirjaimiksi.
-VALUE = ARVO ## Muuntaa tekstiargumentin luvuksi.
diff --git a/admin/survey/excel/PHPExcel/locale/fr/config b/admin/survey/excel/PHPExcel/locale/fr/config
deleted file mode 100644
index 8ae183a..0000000
--- a/admin/survey/excel/PHPExcel/locale/fr/config
+++ /dev/null
@@ -1,47 +0,0 @@
-##
-## PHPExcel
-##
-## Copyright (c) 2006 - 2011 PHPExcel
-##
-## This library is free software; you can redistribute it and/or
-## modify it under the terms of the GNU Lesser General Public
-## License as published by the Free Software Foundation; either
-## version 2.1 of the License, or (at your option) any later version.
-##
-## This library is distributed in the hope that it will be useful,
-## but WITHOUT ANY WARRANTY; without even the implied warranty of
-## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-## Lesser General Public License for more details.
-##
-## You should have received a copy of the GNU Lesser General Public
-## License along with this library; if not, write to the Free Software
-## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-##
-## @category PHPExcel
-## @package PHPExcel_Settings
-## @copyright Copyright (c) 2006 - 2011 PHPExcel (http://www.codeplex.com/PHPExcel)
-## @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
-## @version 1.7.8, 2012-10-12
-##
-##
-
-
-ArgumentSeparator = ;
-
-
-##
-## (For future use)
-##
-currencySymbol = €
-
-
-##
-## Excel Error Codes (For future use)
-##
-NULL = #NUL!
-DIV0 = #DIV/0!
-VALUE = #VALEUR!
-REF = #REF!
-NAME = #NOM?
-NUM = #NOMBRE!
-NA = #N/A
diff --git a/admin/survey/excel/PHPExcel/locale/fr/functions b/admin/survey/excel/PHPExcel/locale/fr/functions
deleted file mode 100644
index ebb8339..0000000
--- a/admin/survey/excel/PHPExcel/locale/fr/functions
+++ /dev/null
@@ -1,438 +0,0 @@
-##
-## PHPExcel
-##
-## Copyright (c) 2006 - 2011 PHPExcel
-##
-## This library is free software; you can redistribute it and/or
-## modify it under the terms of the GNU Lesser General Public
-## License as published by the Free Software Foundation; either
-## version 2.1 of the License, or (at your option) any later version.
-##
-## This library is distributed in the hope that it will be useful,
-## but WITHOUT ANY WARRANTY; without even the implied warranty of
-## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-## Lesser General Public License for more details.
-##
-## You should have received a copy of the GNU Lesser General Public
-## License along with this library; if not, write to the Free Software
-## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-##
-## @category PHPExcel
-## @package PHPExcel_Calculation
-## @copyright Copyright (c) 2006 - 2011 PHPExcel (http://www.codeplex.com/PHPExcel)
-## @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
-## @version 1.7.8, 2012-10-12
-##
-## Data in this file derived from http://www.piuha.fi/excel-function-name-translation/
-##
-##
-
-
-##
-## Add-in and Automation functions Fonctions de complément et d’automatisation
-##
-GETPIVOTDATA = LIREDONNEESTABCROISDYNAMIQUE ## Renvoie les données stockées dans un rapport de tableau croisé dynamique.
-
-
-##
-## Cube functions Fonctions Cube
-##
-CUBEKPIMEMBER = MEMBREKPICUBE ## Renvoie un nom, une propriété et une mesure d’indicateur de performance clé et affiche le nom et la propriété dans la cellule. Un indicateur de performance clé est une mesure quantifiable, telle que la marge bénéficiaire brute mensuelle ou la rotation trimestrielle du personnel, utilisée pour évaluer les performances d’une entreprise.
-CUBEMEMBER = MEMBRECUBE ## Renvoie un membre ou un uplet dans une hiérarchie de cubes. Utilisez cette fonction pour valider l’existence du membre ou de l’uplet dans le cube.
-CUBEMEMBERPROPERTY = PROPRIETEMEMBRECUBE ## Renvoie la valeur d’une propriété de membre du cube. Utilisez cette fonction pour valider l’existence d’un nom de membre dans le cube et pour renvoyer la propriété spécifiée pour ce membre.
-CUBERANKEDMEMBER = RANGMEMBRECUBE ## Renvoie le nième membre ou le membre placé à un certain rang dans un ensemble. Utilisez cette fonction pour renvoyer un ou plusieurs éléments d’un ensemble, tels que les meilleurs vendeurs ou les 10 meilleurs étudiants.
-CUBESET = JEUCUBE ## Définit un ensemble calculé de membres ou d’uplets en envoyant une expression définie au cube sur le serveur qui crée l’ensemble et le renvoie à Microsoft Office Excel.
-CUBESETCOUNT = NBJEUCUBE ## Renvoie le nombre d’éléments dans un jeu.
-CUBEVALUE = VALEURCUBE ## Renvoie une valeur d’agrégation issue d’un cube.
-
-
-##
-## Database functions Fonctions de base de données
-##
-DAVERAGE = BDMOYENNE ## Renvoie la moyenne des entrées de base de données sélectionnées.
-DCOUNT = BCOMPTE ## Compte le nombre de cellules d’une base de données qui contiennent des nombres.
-DCOUNTA = BDNBVAL ## Compte les cellules non vides d’une base de données.
-DGET = BDLIRE ## Extrait d’une base de données un enregistrement unique répondant aux critères spécifiés.
-DMAX = BDMAX ## Renvoie la valeur maximale des entrées de base de données sélectionnées.
-DMIN = BDMIN ## Renvoie la valeur minimale des entrées de base de données sélectionnées.
-DPRODUCT = BDPRODUIT ## Multiplie les valeurs d’un champ particulier des enregistrements d’une base de données, qui répondent aux critères spécifiés.
-DSTDEV = BDECARTYPE ## Calcule l’écart type pour un échantillon d’entrées de base de données sélectionnées.
-DSTDEVP = BDECARTYPEP ## Calcule l’écart type pour l’ensemble d’une population d’entrées de base de données sélectionnées.
-DSUM = BDSOMME ## Ajoute les nombres dans la colonne de champ des enregistrements de la base de données, qui répondent aux critères.
-DVAR = BDVAR ## Calcule la variance pour un échantillon d’entrées de base de données sélectionnées.
-DVARP = BDVARP ## Calcule la variance pour l’ensemble d’une population d’entrées de base de données sélectionnées.
-
-
-##
-## Date and time functions Fonctions de date et d’heure
-##
-DATE = DATE ## Renvoie le numéro de série d’une date précise.
-DATEVALUE = DATEVAL ## Convertit une date représentée sous forme de texte en numéro de série.
-DAY = JOUR ## Convertit un numéro de série en jour du mois.
-DAYS360 = JOURS360 ## Calcule le nombre de jours qui séparent deux dates sur la base d’une année de 360 jours.
-EDATE = MOIS.DECALER ## Renvoie le numéro séquentiel de la date qui représente une date spécifiée (l’argument date_départ), corrigée en plus ou en moins du nombre de mois indiqué.
-EOMONTH = FIN.MOIS ## Renvoie le numéro séquentiel de la date du dernier jour du mois précédant ou suivant la date_départ du nombre de mois indiqué.
-HOUR = HEURE ## Convertit un numéro de série en heure.
-MINUTE = MINUTE ## Convertit un numéro de série en minute.
-MONTH = MOIS ## Convertit un numéro de série en mois.
-NETWORKDAYS = NB.JOURS.OUVRES ## Renvoie le nombre de jours ouvrés entiers compris entre deux dates.
-NOW = MAINTENANT ## Renvoie le numéro de série de la date et de l’heure du jour.
-SECOND = SECONDE ## Convertit un numéro de série en seconde.
-TIME = TEMPS ## Renvoie le numéro de série d’une heure précise.
-TIMEVALUE = TEMPSVAL ## Convertit une date représentée sous forme de texte en numéro de série.
-TODAY = AUJOURDHUI ## Renvoie le numéro de série de la date du jour.
-WEEKDAY = JOURSEM ## Convertit un numéro de série en jour de la semaine.
-WEEKNUM = NO.SEMAINE ## Convertit un numéro de série en un numéro représentant l’ordre de la semaine dans l’année.
-WORKDAY = SERIE.JOUR.OUVRE ## Renvoie le numéro de série de la date avant ou après le nombre de jours ouvrés spécifiés.
-YEAR = ANNEE ## Convertit un numéro de série en année.
-YEARFRAC = FRACTION.ANNEE ## Renvoie la fraction de l’année représentant le nombre de jours entre la date de début et la date de fin.
-
-
-##
-## Engineering functions Fonctions d’ingénierie
-##
-BESSELI = BESSELI ## Renvoie la fonction Bessel modifiée In(x).
-BESSELJ = BESSELJ ## Renvoie la fonction Bessel Jn(x).
-BESSELK = BESSELK ## Renvoie la fonction Bessel modifiée Kn(x).
-BESSELY = BESSELY ## Renvoie la fonction Bessel Yn(x).
-BIN2DEC = BINDEC ## Convertit un nombre binaire en nombre décimal.
-BIN2HEX = BINHEX ## Convertit un nombre binaire en nombre hexadécimal.
-BIN2OCT = BINOCT ## Convertit un nombre binaire en nombre octal.
-COMPLEX = COMPLEXE ## Convertit des coefficients réel et imaginaire en un nombre complexe.
-CONVERT = CONVERT ## Convertit un nombre d’une unité de mesure à une autre.
-DEC2BIN = DECBIN ## Convertit un nombre décimal en nombre binaire.
-DEC2HEX = DECHEX ## Convertit un nombre décimal en nombre hexadécimal.
-DEC2OCT = DECOCT ## Convertit un nombre décimal en nombre octal.
-DELTA = DELTA ## Teste l’égalité de deux nombres.
-ERF = ERF ## Renvoie la valeur de la fonction d’erreur.
-ERFC = ERFC ## Renvoie la valeur de la fonction d’erreur complémentaire.
-GESTEP = SUP.SEUIL ## Teste si un nombre est supérieur à une valeur de seuil.
-HEX2BIN = HEXBIN ## Convertit un nombre hexadécimal en nombre binaire.
-HEX2DEC = HEXDEC ## Convertit un nombre hexadécimal en nombre décimal.
-HEX2OCT = HEXOCT ## Convertit un nombre hexadécimal en nombre octal.
-IMABS = COMPLEXE.MODULE ## Renvoie la valeur absolue (module) d’un nombre complexe.
-IMAGINARY = COMPLEXE.IMAGINAIRE ## Renvoie le coefficient imaginaire d’un nombre complexe.
-IMARGUMENT = COMPLEXE.ARGUMENT ## Renvoie l’argument thêta, un angle exprimé en radians.
-IMCONJUGATE = COMPLEXE.CONJUGUE ## Renvoie le nombre complexe conjugué d’un nombre complexe.
-IMCOS = IMCOS ## Renvoie le cosinus d’un nombre complexe.
-IMDIV = COMPLEXE.DIV ## Renvoie le quotient de deux nombres complexes.
-IMEXP = COMPLEXE.EXP ## Renvoie la fonction exponentielle d’un nombre complexe.
-IMLN = COMPLEXE.LN ## Renvoie le logarithme népérien d’un nombre complexe.
-IMLOG10 = COMPLEXE.LOG10 ## Calcule le logarithme en base 10 d’un nombre complexe.
-IMLOG2 = COMPLEXE.LOG2 ## Calcule le logarithme en base 2 d’un nombre complexe.
-IMPOWER = COMPLEXE.PUISSANCE ## Renvoie un nombre complexe élevé à une puissance entière.
-IMPRODUCT = COMPLEXE.PRODUIT ## Renvoie le produit de plusieurs nombres complexes.
-IMREAL = COMPLEXE.REEL ## Renvoie le coefficient réel d’un nombre complexe.
-IMSIN = COMPLEXE.SIN ## Renvoie le sinus d’un nombre complexe.
-IMSQRT = COMPLEXE.RACINE ## Renvoie la racine carrée d’un nombre complexe.
-IMSUB = COMPLEXE.DIFFERENCE ## Renvoie la différence entre deux nombres complexes.
-IMSUM = COMPLEXE.SOMME ## Renvoie la somme de plusieurs nombres complexes.
-OCT2BIN = OCTBIN ## Convertit un nombre octal en nombre binaire.
-OCT2DEC = OCTDEC ## Convertit un nombre octal en nombre décimal.
-OCT2HEX = OCTHEX ## Convertit un nombre octal en nombre hexadécimal.
-
-
-##
-## Financial functions Fonctions financières
-##
-ACCRINT = INTERET.ACC ## Renvoie l’intérêt couru non échu d’un titre dont l’intérêt est perçu périodiquement.
-ACCRINTM = INTERET.ACC.MAT ## Renvoie l’intérêt couru non échu d’un titre dont l’intérêt est perçu à l’échéance.
-AMORDEGRC = AMORDEGRC ## Renvoie l’amortissement correspondant à chaque période comptable en utilisant un coefficient d’amortissement.
-AMORLINC = AMORLINC ## Renvoie l’amortissement d’un bien à la fin d’une période fiscale donnée.
-COUPDAYBS = NB.JOURS.COUPON.PREC ## Renvoie le nombre de jours entre le début de la période de coupon et la date de liquidation.
-COUPDAYS = NB.JOURS.COUPONS ## Renvoie le nombre de jours pour la période du coupon contenant la date de liquidation.
-COUPDAYSNC = NB.JOURS.COUPON.SUIV ## Renvoie le nombre de jours entre la date de liquidation et la date du coupon suivant la date de liquidation.
-COUPNCD = DATE.COUPON.SUIV ## Renvoie la première date de coupon ultérieure à la date de règlement.
-COUPNUM = NB.COUPONS ## Renvoie le nombre de coupons dus entre la date de règlement et la date d’échéance.
-COUPPCD = DATE.COUPON.PREC ## Renvoie la date de coupon précédant la date de règlement.
-CUMIPMT = CUMUL.INTER ## Renvoie l’intérêt cumulé payé sur un emprunt entre deux périodes.
-CUMPRINC = CUMUL.PRINCPER ## Renvoie le montant cumulé des remboursements du capital d’un emprunt effectués entre deux périodes.
-DB = DB ## Renvoie l’amortissement d’un bien pour une période spécifiée en utilisant la méthode de l’amortissement dégressif à taux fixe.
-DDB = DDB ## Renvoie l’amortissement d’un bien pour toute période spécifiée, en utilisant la méthode de l’amortissement dégressif à taux double ou selon un coefficient à spécifier.
-DISC = TAUX.ESCOMPTE ## Calcule le taux d’escompte d’une transaction.
-DOLLARDE = PRIX.DEC ## Convertit un prix en euros, exprimé sous forme de fraction, en un prix en euros exprimé sous forme de nombre décimal.
-DOLLARFR = PRIX.FRAC ## Convertit un prix en euros, exprimé sous forme de nombre décimal, en un prix en euros exprimé sous forme de fraction.
-DURATION = DUREE ## Renvoie la durée, en années, d’un titre dont l’intérêt est perçu périodiquement.
-EFFECT = TAUX.EFFECTIF ## Renvoie le taux d’intérêt annuel effectif.
-FV = VC ## Renvoie la valeur future d’un investissement.
-FVSCHEDULE = VC.PAIEMENTS ## Calcule la valeur future d’un investissement en appliquant une série de taux d’intérêt composites.
-INTRATE = TAUX.INTERET ## Affiche le taux d’intérêt d’un titre totalement investi.
-IPMT = INTPER ## Calcule le montant des intérêts d’un investissement pour une période donnée.
-IRR = TRI ## Calcule le taux de rentabilité interne d’un investissement pour une succession de trésoreries.
-ISPMT = ISPMT ## Calcule le montant des intérêts d’un investissement pour une période donnée.
-MDURATION = DUREE.MODIFIEE ## Renvoie la durée de Macauley modifiée pour un titre ayant une valeur nominale hypothétique de 100_euros.
-MIRR = TRIM ## Calcule le taux de rentabilité interne lorsque les paiements positifs et négatifs sont financés à des taux différents.
-NOMINAL = TAUX.NOMINAL ## Calcule le taux d’intérêt nominal annuel.
-NPER = NPM ## Renvoie le nombre de versements nécessaires pour rembourser un emprunt.
-NPV = VAN ## Calcule la valeur actuelle nette d’un investissement basé sur une série de décaissements et un taux d’escompte.
-ODDFPRICE = PRIX.PCOUPON.IRREG ## Renvoie le prix par tranche de valeur nominale de 100 euros d’un titre dont la première période de coupon est irrégulière.
-ODDFYIELD = REND.PCOUPON.IRREG ## Renvoie le taux de rendement d’un titre dont la première période de coupon est irrégulière.
-ODDLPRICE = PRIX.DCOUPON.IRREG ## Renvoie le prix par tranche de valeur nominale de 100 euros d’un titre dont la première période de coupon est irrégulière.
-ODDLYIELD = REND.DCOUPON.IRREG ## Renvoie le taux de rendement d’un titre dont la dernière période de coupon est irrégulière.
-PMT = VPM ## Calcule le paiement périodique d’un investissement donné.
-PPMT = PRINCPER ## Calcule, pour une période donnée, la part de remboursement du principal d’un investissement.
-PRICE = PRIX.TITRE ## Renvoie le prix d’un titre rapportant des intérêts périodiques, pour une valeur nominale de 100 euros.
-PRICEDISC = VALEUR.ENCAISSEMENT ## Renvoie la valeur d’encaissement d’un escompte commercial, pour une valeur nominale de 100 euros.
-PRICEMAT = PRIX.TITRE.ECHEANCE ## Renvoie le prix d’un titre dont la valeur nominale est 100 euros et qui rapporte des intérêts à l’échéance.
-PV = PV ## Calcule la valeur actuelle d’un investissement.
-RATE = TAUX ## Calcule le taux d’intérêt par période pour une annuité.
-RECEIVED = VALEUR.NOMINALE ## Renvoie la valeur nominale à échéance d’un effet de commerce.
-SLN = AMORLIN ## Calcule l’amortissement linéaire d’un bien pour une période donnée.
-SYD = SYD ## Calcule l’amortissement d’un bien pour une période donnée sur la base de la méthode américaine Sum-of-Years Digits (amortissement dégressif à taux décroissant appliqué à une valeur constante).
-TBILLEQ = TAUX.ESCOMPTE.R ## Renvoie le taux d’escompte rationnel d’un bon du Trésor.
-TBILLPRICE = PRIX.BON.TRESOR ## Renvoie le prix d’un bon du Trésor d’une valeur nominale de 100 euros.
-TBILLYIELD = RENDEMENT.BON.TRESOR ## Calcule le taux de rendement d’un bon du Trésor.
-VDB = VDB ## Renvoie l’amortissement d’un bien pour une période spécifiée ou partielle en utilisant une méthode de l’amortissement dégressif à taux fixe.
-XIRR = TRI.PAIEMENTS ## Calcule le taux de rentabilité interne d’un ensemble de paiements non périodiques.
-XNPV = VAN.PAIEMENTS ## Renvoie la valeur actuelle nette d’un ensemble de paiements non périodiques.
-YIELD = RENDEMENT.TITRE ## Calcule le rendement d’un titre rapportant des intérêts périodiquement.
-YIELDDISC = RENDEMENT.SIMPLE ## Calcule le taux de rendement d’un emprunt à intérêt simple (par exemple, un bon du Trésor).
-YIELDMAT = RENDEMENT.TITRE.ECHEANCE ## Renvoie le rendement annuel d’un titre qui rapporte des intérêts à l’échéance.
-
-
-##
-## Information functions Fonctions d’information
-##
-CELL = CELLULE ## Renvoie des informations sur la mise en forme, l’emplacement et le contenu d’une cellule.
-ERROR.TYPE = TYPE.ERREUR ## Renvoie un nombre correspondant à un type d’erreur.
-INFO = INFORMATIONS ## Renvoie des informations sur l’environnement d’exploitation actuel.
-ISBLANK = ESTVIDE ## Renvoie VRAI si l’argument valeur est vide.
-ISERR = ESTERR ## Renvoie VRAI si l’argument valeur fait référence à une valeur d’erreur, sauf #N/A.
-ISERROR = ESTERREUR ## Renvoie VRAI si l’argument valeur fait référence à une valeur d’erreur.
-ISEVEN = EST.PAIR ## Renvoie VRAI si le chiffre est pair.
-ISLOGICAL = ESTLOGIQUE ## Renvoie VRAI si l’argument valeur fait référence à une valeur logique.
-ISNA = ESTNA ## Renvoie VRAI si l’argument valeur fait référence à la valeur d’erreur #N/A.
-ISNONTEXT = ESTNONTEXTE ## Renvoie VRAI si l’argument valeur ne se présente pas sous forme de texte.
-ISNUMBER = ESTNUM ## Renvoie VRAI si l’argument valeur représente un nombre.
-ISODD = EST.IMPAIR ## Renvoie VRAI si le chiffre est impair.
-ISREF = ESTREF ## Renvoie VRAI si l’argument valeur est une référence.
-ISTEXT = ESTTEXTE ## Renvoie VRAI si l’argument valeur se présente sous forme de texte.
-N = N ## Renvoie une valeur convertie en nombre.
-NA = NA ## Renvoie la valeur d’erreur #N/A.
-TYPE = TYPE ## Renvoie un nombre indiquant le type de données d’une valeur.
-
-
-##
-## Logical functions Fonctions logiques
-##
-AND = ET ## Renvoie VRAI si tous ses arguments sont VRAI.
-FALSE = FAUX ## Renvoie la valeur logique FAUX.
-IF = SI ## Spécifie un test logique à effectuer.
-IFERROR = SIERREUR ## Renvoie une valeur que vous spécifiez si une formule génère une erreur ; sinon, elle renvoie le résultat de la formule.
-NOT = NON ## Inverse la logique de cet argument.
-OR = OU ## Renvoie VRAI si un des arguments est VRAI.
-TRUE = VRAI ## Renvoie la valeur logique VRAI.
-
-
-##
-## Lookup and reference functions Fonctions de recherche et de référence
-##
-ADDRESS = ADRESSE ## Renvoie une référence sous forme de texte à une seule cellule d’une feuille de calcul.
-AREAS = ZONES ## Renvoie le nombre de zones dans une référence.
-CHOOSE = CHOISIR ## Choisit une valeur dans une liste.
-COLUMN = COLONNE ## Renvoie le numéro de colonne d’une référence.
-COLUMNS = COLONNES ## Renvoie le nombre de colonnes dans une référence.
-HLOOKUP = RECHERCHEH ## Effectue une recherche dans la première ligne d’une matrice et renvoie la valeur de la cellule indiquée.
-HYPERLINK = LIEN_HYPERTEXTE ## Crée un raccourci ou un renvoi qui ouvre un document stocké sur un serveur réseau, sur un réseau Intranet ou sur Internet.
-INDEX = INDEX ## Utilise un index pour choisir une valeur provenant d’une référence ou d’une matrice.
-INDIRECT = INDIRECT ## Renvoie une référence indiquée par une valeur de texte.
-LOOKUP = RECHERCHE ## Recherche des valeurs dans un vecteur ou une matrice.
-MATCH = EQUIV ## Recherche des valeurs dans une référence ou une matrice.
-OFFSET = DECALER ## Renvoie une référence décalée par rapport à une référence donnée.
-ROW = LIGNE ## Renvoie le numéro de ligne d’une référence.
-ROWS = LIGNES ## Renvoie le nombre de lignes dans une référence.
-RTD = RTD ## Extrait les données en temps réel à partir d’un programme prenant en charge l’automation COM (Automation : utilisation des objets d'une application à partir d'une autre application ou d'un autre outil de développement. Autrefois appelée OLE Automation, Automation est une norme industrielle et une fonctionnalité du modèle d'objet COM (Component Object Model).).
-TRANSPOSE = TRANSPOSE ## Renvoie la transposition d’une matrice.
-VLOOKUP = RECHERCHEV ## Effectue une recherche dans la première colonne d’une matrice et se déplace sur la ligne pour renvoyer la valeur d’une cellule.
-
-
-##
-## Math and trigonometry functions Fonctions mathématiques et trigonométriques
-##
-ABS = ABS ## Renvoie la valeur absolue d’un nombre.
-ACOS = ACOS ## Renvoie l’arccosinus d’un nombre.
-ACOSH = ACOSH ## Renvoie le cosinus hyperbolique inverse d’un nombre.
-ASIN = ASIN ## Renvoie l’arcsinus d’un nombre.
-ASINH = ASINH ## Renvoie le sinus hyperbolique inverse d’un nombre.
-ATAN = ATAN ## Renvoie l’arctangente d’un nombre.
-ATAN2 = ATAN2 ## Renvoie l’arctangente des coordonnées x et y.
-ATANH = ATANH ## Renvoie la tangente hyperbolique inverse d’un nombre.
-CEILING = PLAFOND ## Arrondit un nombre au nombre entier le plus proche ou au multiple le plus proche de l’argument précision en s’éloignant de zéro.
-COMBIN = COMBIN ## Renvoie le nombre de combinaisons que l’on peut former avec un nombre donné d’objets.
-COS = COS ## Renvoie le cosinus d’un nombre.
-COSH = COSH ## Renvoie le cosinus hyperbolique d’un nombre.
-DEGREES = DEGRES ## Convertit des radians en degrés.
-EVEN = PAIR ## Arrondit un nombre au nombre entier pair le plus proche en s’éloignant de zéro.
-EXP = EXP ## Renvoie e élevé à la puissance d’un nombre donné.
-FACT = FACT ## Renvoie la factorielle d’un nombre.
-FACTDOUBLE = FACTDOUBLE ## Renvoie la factorielle double d’un nombre.
-FLOOR = PLANCHER ## Arrondit un nombre en tendant vers 0 (zéro).
-GCD = PGCD ## Renvoie le plus grand commun diviseur.
-INT = ENT ## Arrondit un nombre à l’entier immédiatement inférieur.
-LCM = PPCM ## Renvoie le plus petit commun multiple.
-LN = LN ## Renvoie le logarithme népérien d’un nombre.
-LOG = LOG ## Renvoie le logarithme d’un nombre dans la base spécifiée.
-LOG10 = LOG10 ## Calcule le logarithme en base 10 d’un nombre.
-MDETERM = DETERMAT ## Renvoie le déterminant d’une matrice.
-MINVERSE = INVERSEMAT ## Renvoie la matrice inverse d’une matrice.
-MMULT = PRODUITMAT ## Renvoie le produit de deux matrices.
-MOD = MOD ## Renvoie le reste d’une division.
-MROUND = ARRONDI.AU.MULTIPLE ## Donne l’arrondi d’un nombre au multiple spécifié.
-MULTINOMIAL = MULTINOMIALE ## Calcule la multinomiale d’un ensemble de nombres.
-ODD = IMPAIR ## Renvoie le nombre, arrondi à la valeur du nombre entier impair le plus proche en s’éloignant de zéro.
-PI = PI ## Renvoie la valeur de pi.
-POWER = PUISSANCE ## Renvoie la valeur du nombre élevé à une puissance.
-PRODUCT = PRODUIT ## Multiplie ses arguments.
-QUOTIENT = QUOTIENT ## Renvoie la partie entière du résultat d’une division.
-RADIANS = RADIANS ## Convertit des degrés en radians.
-RAND = ALEA ## Renvoie un nombre aléatoire compris entre 0 et 1.
-RANDBETWEEN = ALEA.ENTRE.BORNES ## Renvoie un nombre aléatoire entre les nombres que vous spécifiez.
-ROMAN = ROMAIN ## Convertit des chiffres arabes en chiffres romains, sous forme de texte.
-ROUND = ARRONDI ## Arrondit un nombre au nombre de chiffres indiqué.
-ROUNDDOWN = ARRONDI.INF ## Arrondit un nombre en tendant vers 0 (zéro).
-ROUNDUP = ARRONDI.SUP ## Arrondit un nombre à l’entier supérieur, en s’éloignant de zéro.
-SERIESSUM = SOMME.SERIES ## Renvoie la somme d’une série géométrique en s’appuyant sur la formule suivante :
-SIGN = SIGNE ## Renvoie le signe d’un nombre.
-SIN = SIN ## Renvoie le sinus d’un angle donné.
-SINH = SINH ## Renvoie le sinus hyperbolique d’un nombre.
-SQRT = RACINE ## Renvoie la racine carrée d’un nombre.
-SQRTPI = RACINE.PI ## Renvoie la racine carrée de (nombre * pi).
-SUBTOTAL = SOUS.TOTAL ## Renvoie un sous-total dans une liste ou une base de données.
-SUM = SOMME ## Calcule la somme de ses arguments.
-SUMIF = SOMME.SI ## Additionne les cellules spécifiées si elles répondent à un critère donné.
-SUMIFS = SOMME.SI.ENS ## Ajoute les cellules d’une plage qui répondent à plusieurs critères.
-SUMPRODUCT = SOMMEPROD ## Multiplie les valeurs correspondantes des matrices spécifiées et calcule la somme de ces produits.
-SUMSQ = SOMME.CARRES ## Renvoie la somme des carrés des arguments.
-SUMX2MY2 = SOMME.X2MY2 ## Renvoie la somme de la différence des carrés des valeurs correspondantes de deux matrices.
-SUMX2PY2 = SOMME.X2PY2 ## Renvoie la somme de la somme des carrés des valeurs correspondantes de deux matrices.
-SUMXMY2 = SOMME.XMY2 ## Renvoie la somme des carrés des différences entre les valeurs correspondantes de deux matrices.
-TAN = TAN ## Renvoie la tangente d’un nombre.
-TANH = TANH ## Renvoie la tangente hyperbolique d’un nombre.
-TRUNC = TRONQUE ## Renvoie la partie entière d’un nombre.
-
-
-##
-## Statistical functions Fonctions statistiques
-##
-AVEDEV = ECART.MOYEN ## Renvoie la moyenne des écarts absolus observés dans la moyenne des points de données.
-AVERAGE = MOYENNE ## Renvoie la moyenne de ses arguments.
-AVERAGEA = AVERAGEA ## Renvoie la moyenne de ses arguments, nombres, texte et valeurs logiques inclus.
-AVERAGEIF = MOYENNE.SI ## Renvoie la moyenne (arithmétique) de toutes les cellules d’une plage qui répondent à des critères donnés.
-AVERAGEIFS = MOYENNE.SI.ENS ## Renvoie la moyenne (arithmétique) de toutes les cellules qui répondent à plusieurs critères.
-BETADIST = LOI.BETA ## Renvoie la fonction de distribution cumulée.
-BETAINV = BETA.INVERSE ## Renvoie l’inverse de la fonction de distribution cumulée pour une distribution bêta spécifiée.
-BINOMDIST = LOI.BINOMIALE ## Renvoie la probabilité d’une variable aléatoire discrète suivant la loi binomiale.
-CHIDIST = LOI.KHIDEUX ## Renvoie la probabilité unilatérale de la distribution khi-deux.
-CHIINV = KHIDEUX.INVERSE ## Renvoie l’inverse de la probabilité unilatérale de la distribution khi-deux.
-CHITEST = TEST.KHIDEUX ## Renvoie le test d’indépendance.
-CONFIDENCE = INTERVALLE.CONFIANCE ## Renvoie l’intervalle de confiance pour une moyenne de population.
-CORREL = COEFFICIENT.CORRELATION ## Renvoie le coefficient de corrélation entre deux séries de données.
-COUNT = NB ## Détermine les nombres compris dans la liste des arguments.
-COUNTA = NBVAL ## Détermine le nombre de valeurs comprises dans la liste des arguments.
-COUNTBLANK = NB.VIDE ## Compte le nombre de cellules vides dans une plage.
-COUNTIF = NB.SI ## Compte le nombre de cellules qui répondent à un critère donné dans une plage.
-COUNTIFS = NB.SI.ENS ## Compte le nombre de cellules à l’intérieur d’une plage qui répondent à plusieurs critères.
-COVAR = COVARIANCE ## Renvoie la covariance, moyenne des produits des écarts pour chaque série d’observations.
-CRITBINOM = CRITERE.LOI.BINOMIALE ## Renvoie la plus petite valeur pour laquelle la distribution binomiale cumulée est inférieure ou égale à une valeur de critère.
-DEVSQ = SOMME.CARRES.ECARTS ## Renvoie la somme des carrés des écarts.
-EXPONDIST = LOI.EXPONENTIELLE ## Renvoie la distribution exponentielle.
-FDIST = LOI.F ## Renvoie la distribution de probabilité F.
-FINV = INVERSE.LOI.F ## Renvoie l’inverse de la distribution de probabilité F.
-FISHER = FISHER ## Renvoie la transformation de Fisher.
-FISHERINV = FISHER.INVERSE ## Renvoie l’inverse de la transformation de Fisher.
-FORECAST = PREVISION ## Calcule une valeur par rapport à une tendance linéaire.
-FREQUENCY = FREQUENCE ## Calcule la fréquence d’apparition des valeurs dans une plage de valeurs, puis renvoie des nombres sous forme de matrice verticale.
-FTEST = TEST.F ## Renvoie le résultat d’un test F.
-GAMMADIST = LOI.GAMMA ## Renvoie la probabilité d’une variable aléatoire suivant une loi Gamma.
-GAMMAINV = LOI.GAMMA.INVERSE ## Renvoie, pour une probabilité donnée, la valeur d’une variable aléatoire suivant une loi Gamma.
-GAMMALN = LNGAMMA ## Renvoie le logarithme népérien de la fonction Gamma, G(x)
-GEOMEAN = MOYENNE.GEOMETRIQUE ## Renvoie la moyenne géométrique.
-GROWTH = CROISSANCE ## Calcule des valeurs par rapport à une tendance exponentielle.
-HARMEAN = MOYENNE.HARMONIQUE ## Renvoie la moyenne harmonique.
-HYPGEOMDIST = LOI.HYPERGEOMETRIQUE ## Renvoie la probabilité d’une variable aléatoire discrète suivant une loi hypergéométrique.
-INTERCEPT = ORDONNEE.ORIGINE ## Renvoie l’ordonnée à l’origine d’une droite de régression linéaire.
-KURT = KURTOSIS ## Renvoie le kurtosis d’une série de données.
-LARGE = GRANDE.VALEUR ## Renvoie la k-ième plus grande valeur d’une série de données.
-LINEST = DROITEREG ## Renvoie les paramètres d’une tendance linéaire.
-LOGEST = LOGREG ## Renvoie les paramètres d’une tendance exponentielle.
-LOGINV = LOI.LOGNORMALE.INVERSE ## Renvoie l’inverse de la probabilité pour une variable aléatoire suivant la loi lognormale.
-LOGNORMDIST = LOI.LOGNORMALE ## Renvoie la probabilité d’une variable aléatoire continue suivant une loi lognormale.
-MAX = MAX ## Renvoie la valeur maximale contenue dans une liste d’arguments.
-MAXA = MAXA ## Renvoie la valeur maximale d’une liste d’arguments, nombres, texte et valeurs logiques inclus.
-MEDIAN = MEDIANE ## Renvoie la valeur médiane des nombres donnés.
-MIN = MIN ## Renvoie la valeur minimale contenue dans une liste d’arguments.
-MINA = MINA ## Renvoie la plus petite valeur d’une liste d’arguments, nombres, texte et valeurs logiques inclus.
-MODE = MODE ## Renvoie la valeur la plus courante d’une série de données.
-NEGBINOMDIST = LOI.BINOMIALE.NEG ## Renvoie la probabilité d’une variable aléatoire discrète suivant une loi binomiale négative.
-NORMDIST = LOI.NORMALE ## Renvoie la probabilité d’une variable aléatoire continue suivant une loi normale.
-NORMINV = LOI.NORMALE.INVERSE ## Renvoie, pour une probabilité donnée, la valeur d’une variable aléatoire suivant une loi normale standard.
-NORMSDIST = LOI.NORMALE.STANDARD ## Renvoie la probabilité d’une variable aléatoire continue suivant une loi normale standard.
-NORMSINV = LOI.NORMALE.STANDARD.INVERSE ## Renvoie l’inverse de la distribution cumulée normale standard.
-PEARSON = PEARSON ## Renvoie le coefficient de corrélation d’échantillonnage de Pearson.
-PERCENTILE = CENTILE ## Renvoie le k-ième centile des valeurs d’une plage.
-PERCENTRANK = RANG.POURCENTAGE ## Renvoie le rang en pourcentage d’une valeur d’une série de données.
-PERMUT = PERMUTATION ## Renvoie le nombre de permutations pour un nombre donné d’objets.
-POISSON = LOI.POISSON ## Renvoie la probabilité d’une variable aléatoire suivant une loi de Poisson.
-PROB = PROBABILITE ## Renvoie la probabilité que des valeurs d’une plage soient comprises entre deux limites.
-QUARTILE = QUARTILE ## Renvoie le quartile d’une série de données.
-RANK = RANG ## Renvoie le rang d’un nombre contenu dans une liste.
-RSQ = COEFFICIENT.DETERMINATION ## Renvoie la valeur du coefficient de détermination R^2 d’une régression linéaire.
-SKEW = COEFFICIENT.ASYMETRIE ## Renvoie l’asymétrie d’une distribution.
-SLOPE = PENTE ## Renvoie la pente d’une droite de régression linéaire.
-SMALL = PETITE.VALEUR ## Renvoie la k-ième plus petite valeur d’une série de données.
-STANDARDIZE = CENTREE.REDUITE ## Renvoie une valeur centrée réduite.
-STDEV = ECARTYPE ## Évalue l’écart type d’une population en se basant sur un échantillon de cette population.
-STDEVA = STDEVA ## Évalue l’écart type d’une population en se basant sur un échantillon de cette population, nombres, texte et valeurs logiques inclus.
-STDEVP = ECARTYPEP ## Calcule l’écart type d’une population à partir de la population entière.
-STDEVPA = STDEVPA ## Calcule l’écart type d’une population à partir de l’ensemble de la population, nombres, texte et valeurs logiques inclus.
-STEYX = ERREUR.TYPE.XY ## Renvoie l’erreur type de la valeur y prévue pour chaque x de la régression.
-TDIST = LOI.STUDENT ## Renvoie la probabilité d’une variable aléatoire suivant une loi T de Student.
-TINV = LOI.STUDENT.INVERSE ## Renvoie, pour une probabilité donnée, la valeur d’une variable aléatoire suivant une loi T de Student.
-TREND = TENDANCE ## Renvoie des valeurs par rapport à une tendance linéaire.
-TRIMMEAN = MOYENNE.REDUITE ## Renvoie la moyenne de l’intérieur d’une série de données.
-TTEST = TEST.STUDENT ## Renvoie la probabilité associée à un test T de Student.
-VAR = VAR ## Calcule la variance sur la base d’un échantillon.
-VARA = VARA ## Estime la variance d’une population en se basant sur un échantillon de cette population, nombres, texte et valeurs logiques incluses.
-VARP = VAR.P ## Calcule la variance sur la base de l’ensemble de la population.
-VARPA = VARPA ## Calcule la variance d’une population en se basant sur la population entière, nombres, texte et valeurs logiques inclus.
-WEIBULL = LOI.WEIBULL ## Renvoie la probabilité d’une variable aléatoire suivant une loi de Weibull.
-ZTEST = TEST.Z ## Renvoie la valeur de probabilité unilatérale d’un test z.
-
-
-##
-## Text functions Fonctions de texte
-##
-ASC = ASC ## Change les caractères anglais ou katakana à pleine chasse (codés sur deux octets) à l’intérieur d’une chaîne de caractères en caractères à demi-chasse (codés sur un octet).
-BAHTTEXT = BAHTTEXT ## Convertit un nombre en texte en utilisant le format monétaire ß (baht).
-CHAR = CAR ## Renvoie le caractère spécifié par le code numérique.
-CLEAN = EPURAGE ## Supprime tous les caractères de contrôle du texte.
-CODE = CODE ## Renvoie le numéro de code du premier caractère du texte.
-CONCATENATE = CONCATENER ## Assemble plusieurs éléments textuels de façon à n’en former qu’un seul.
-DOLLAR = EURO ## Convertit un nombre en texte en utilisant le format monétaire € (euro).
-EXACT = EXACT ## Vérifie si deux valeurs de texte sont identiques.
-FIND = TROUVE ## Trouve un valeur textuelle dans une autre, en respectant la casse.
-FINDB = TROUVERB ## Trouve un valeur textuelle dans une autre, en respectant la casse.
-FIXED = CTXT ## Convertit un nombre au format texte avec un nombre de décimales spécifié.
-JIS = JIS ## Change les caractères anglais ou katakana à demi-chasse (codés sur un octet) à l’intérieur d’une chaîne de caractères en caractères à à pleine chasse (codés sur deux octets).
-LEFT = GAUCHE ## Renvoie des caractères situés à l’extrême gauche d’une chaîne de caractères.
-LEFTB = GAUCHEB ## Renvoie des caractères situés à l’extrême gauche d’une chaîne de caractères.
-LEN = NBCAR ## Renvoie le nombre de caractères contenus dans une chaîne de texte.
-LENB = LENB ## Renvoie le nombre de caractères contenus dans une chaîne de texte.
-LOWER = MINUSCULE ## Convertit le texte en minuscules.
-MID = STXT ## Renvoie un nombre déterminé de caractères d’une chaîne de texte à partir de la position que vous indiquez.
-MIDB = STXTB ## Renvoie un nombre déterminé de caractères d’une chaîne de texte à partir de la position que vous indiquez.
-PHONETIC = PHONETIQUE ## Extrait les caractères phonétiques (furigana) d’une chaîne de texte.
-PROPER = NOMPROPRE ## Met en majuscules la première lettre de chaque mot dans une chaîne textuelle.
-REPLACE = REMPLACER ## Remplace des caractères dans un texte.
-REPLACEB = REMPLACERB ## Remplace des caractères dans un texte.
-REPT = REPT ## Répète un texte un certain nombre de fois.
-RIGHT = DROITE ## Renvoie des caractères situés à l’extrême droite d’une chaîne de caractères.
-RIGHTB = DROITEB ## Renvoie des caractères situés à l’extrême droite d’une chaîne de caractères.
-SEARCH = CHERCHE ## Trouve un texte dans un autre texte (sans respecter la casse).
-SEARCHB = CHERCHERB ## Trouve un texte dans un autre texte (sans respecter la casse).
-SUBSTITUTE = SUBSTITUE ## Remplace l’ancien texte d’une chaîne de caractères par un nouveau.
-T = T ## Convertit ses arguments en texte.
-TEXT = TEXTE ## Convertit un nombre au format texte.
-TRIM = SUPPRESPACE ## Supprime les espaces du texte.
-UPPER = MAJUSCULE ## Convertit le texte en majuscules.
-VALUE = CNUM ## Convertit un argument textuel en nombre
diff --git a/admin/survey/excel/PHPExcel/locale/hu/config b/admin/survey/excel/PHPExcel/locale/hu/config
deleted file mode 100644
index 725b569..0000000
--- a/admin/survey/excel/PHPExcel/locale/hu/config
+++ /dev/null
@@ -1,47 +0,0 @@
-##
-## PHPExcel
-##
-## Copyright (c) 2006 - 2011 PHPExcel
-##
-## This library is free software; you can redistribute it and/or
-## modify it under the terms of the GNU Lesser General Public
-## License as published by the Free Software Foundation; either
-## version 2.1 of the License, or (at your option) any later version.
-##
-## This library is distributed in the hope that it will be useful,
-## but WITHOUT ANY WARRANTY; without even the implied warranty of
-## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-## Lesser General Public License for more details.
-##
-## You should have received a copy of the GNU Lesser General Public
-## License along with this library; if not, write to the Free Software
-## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-##
-## @category PHPExcel
-## @package PHPExcel_Settings
-## @copyright Copyright (c) 2006 - 2011 PHPExcel (http://www.codeplex.com/PHPExcel)
-## @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
-## @version 1.7.8, 2012-10-12
-##
-##
-
-
-ArgumentSeparator = ;
-
-
-##
-## (For future use)
-##
-currencySymbol = Ft
-
-
-##
-## Excel Error Codes (For future use)
-##
-NULL = #NULLA!
-DIV0 = #ZÉRÓOSZTÓ!
-VALUE = #ÉRTÉK!
-REF = #HIV!
-NAME = #NÉV?
-NUM = #SZÁM!
-NA = #HIÁNYZIK
diff --git a/admin/survey/excel/PHPExcel/locale/hu/functions b/admin/survey/excel/PHPExcel/locale/hu/functions
deleted file mode 100644
index a3855c0..0000000
--- a/admin/survey/excel/PHPExcel/locale/hu/functions
+++ /dev/null
@@ -1,438 +0,0 @@
-##
-## PHPExcel
-##
-## Copyright (c) 2006 - 2011 PHPExcel
-##
-## This library is free software; you can redistribute it and/or
-## modify it under the terms of the GNU Lesser General Public
-## License as published by the Free Software Foundation; either
-## version 2.1 of the License, or (at your option) any later version.
-##
-## This library is distributed in the hope that it will be useful,
-## but WITHOUT ANY WARRANTY; without even the implied warranty of
-## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-## Lesser General Public License for more details.
-##
-## You should have received a copy of the GNU Lesser General Public
-## License along with this library; if not, write to the Free Software
-## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-##
-## @category PHPExcel
-## @package PHPExcel_Calculation
-## @copyright Copyright (c) 2006 - 2011 PHPExcel (http://www.codeplex.com/PHPExcel)
-## @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
-## @version 1.7.8, 2012-10-12
-##
-## Data in this file derived from http://www.piuha.fi/excel-function-name-translation/
-##
-##
-
-
-##
-## Add-in and Automation functions Bővítmények és automatizálási függvények
-##
-GETPIVOTDATA = KIMUTATÁSADATOT.VESZ ## A kimutatásokban tárolt adatok visszaadására használható.
-
-
-##
-## Cube functions Kockafüggvények
-##
-CUBEKPIMEMBER = KOCKA.FŐTELJMUT ## Egy fő teljesítménymutató (KPI) nevét, tulajdonságát és mértékegységét adja eredményül, a nevet és a tulajdonságot megjeleníti a cellában. A KPI-k számszerűsíthető mérési lehetőséget jelentenek – ilyen mutató például a havi bruttó nyereség vagy az egy alkalmazottra jutó negyedéves forgalom –, egy szervezet teljesítményének nyomonkövetésére használhatók.
-CUBEMEMBER = KOCKA.TAG ## Kockahierachia tagját vagy rekordját adja eredményül. Ellenőrizhető vele, hogy szerepel-e a kockában az adott tag vagy rekord.
-CUBEMEMBERPROPERTY = KOCKA.TAG.TUL ## A kocka egyik tagtulajdonságának értékét adja eredményül. Használatával ellenőrizhető, hogy szerepel-e egy tagnév a kockában, eredménye pedig az erre a tagra vonatkozó, megadott tulajdonság.
-CUBERANKEDMEMBER = KOCKA.HALM.ELEM ## Egy halmaz rangsor szerinti n-edik tagját adja eredményül. Használatával egy halmaz egy vagy több elemét kaphatja meg, például a legnagyobb teljesítményű üzletkötőt vagy a 10 legjobb tanulót.
-CUBESET = KOCKA.HALM ## Számított tagok vagy rekordok halmazát adja eredményül, ehhez egy beállított kifejezést elküld a kiszolgálón található kockának, majd ezt a halmazt adja vissza a Microsoft Office Excel alkalmazásnak.
-CUBESETCOUNT = KOCKA.HALM.DB ## Egy halmaz elemszámát adja eredményül.
-CUBEVALUE = KOCKA.ÉRTÉK ## Kockából összesített értéket ad eredményül.
-
-
-##
-## Database functions Adatbázis-kezelő függvények
-##
-DAVERAGE = AB.ÁTLAG ## A kijelölt adatbáziselemek átlagát számítja ki.
-DCOUNT = AB.DARAB ## Megszámolja, hogy az adatbázisban hány cella tartalmaz számokat.
-DCOUNTA = AB.DARAB2 ## Megszámolja az adatbázisban lévő nem üres cellákat.
-DGET = AB.MEZŐ ## Egy adatbázisból egyetlen olyan rekordot ad vissza, amely megfelel a megadott feltételeknek.
-DMAX = AB.MAX ## A kiválasztott adatbáziselemek közül a legnagyobb értéket adja eredményül.
-DMIN = AB.MIN ## A kijelölt adatbáziselemek közül a legkisebb értéket adja eredményül.
-DPRODUCT = AB.SZORZAT ## Az adatbázis megadott feltételeknek eleget tevő rekordjaira összeszorozza a megadott mezőben található számértékeket, és eredményül ezt a szorzatot adja.
-DSTDEV = AB.SZÓRÁS ## A kijelölt adatbáziselemek egy mintája alapján megbecsüli a szórást.
-DSTDEVP = AB.SZÓRÁS2 ## A kijelölt adatbáziselemek teljes sokasága alapján kiszámítja a szórást.
-DSUM = AB.SZUM ## Összeadja a feltételnek megfelelő adatbázisrekordok mezőoszlopában a számokat.
-DVAR = AB.VAR ## A kijelölt adatbáziselemek mintája alapján becslést ad a szórásnégyzetre.
-DVARP = AB.VAR2 ## A kijelölt adatbáziselemek teljes sokasága alapján kiszámítja a szórásnégyzetet.
-
-
-##
-## Date and time functions Dátumfüggvények
-##
-DATE = DÁTUM ## Adott dátum dátumértékét adja eredményül.
-DATEVALUE = DÁTUMÉRTÉK ## Szövegként megadott dátumot dátumértékké alakít át.
-DAY = NAP ## Dátumértéket a hónap egy napjává (0-31) alakít.
-DAYS360 = NAP360 ## Két dátum közé eső napok számát számítja ki a 360 napos év alapján.
-EDATE = EDATE ## Adott dátumnál adott számú hónappal korábbi vagy későbbi dátum dátumértékét adja eredményül.
-EOMONTH = EOMONTH ## Adott dátumnál adott számú hónappal korábbi vagy későbbi hónap utolsó napjának dátumértékét adja eredményül.
-HOUR = ÓRA ## Időértéket órákká alakít.
-MINUTE = PERC ## Időértéket percekké alakít.
-MONTH = HÓNAP ## Időértéket hónapokká alakít.
-NETWORKDAYS = NETWORKDAYS ## Két dátum között a teljes munkanapok számát adja meg.
-NOW = MOST ## A napi dátum dátumértékét és a pontos idő időértékét adja eredményül.
-SECOND = MPERC ## Időértéket másodpercekké alakít át.
-TIME = IDŐ ## Adott időpont időértékét adja meg.
-TIMEVALUE = IDŐÉRTÉK ## Szövegként megadott időpontot időértékké alakít át.
-TODAY = MA ## A napi dátum dátumértékét adja eredményül.
-WEEKDAY = HÉT.NAPJA ## Dátumértéket a hét napjává alakítja át.
-WEEKNUM = WEEKNUM ## Visszatérési értéke egy szám, amely azt mutatja meg, hogy a megadott dátum az év hányadik hetére esik.
-WORKDAY = WORKDAY ## Adott dátumnál adott munkanappal korábbi vagy későbbi dátum dátumértékét adja eredményül.
-YEAR = ÉV ## Sorszámot évvé alakít át.
-YEARFRAC = YEARFRAC ## Az adott dátumok közötti teljes napok számát törtévként adja meg.
-
-
-##
-## Engineering functions Mérnöki függvények
-##
-BESSELI = BESSELI ## Az In(x) módosított Bessel-függvény értékét adja eredményül.
-BESSELJ = BESSELJ ## A Jn(x) Bessel-függvény értékét adja eredményül.
-BESSELK = BESSELK ## A Kn(x) módosított Bessel-függvény értékét adja eredményül.
-BESSELY = BESSELY ## Az Yn(x) módosított Bessel-függvény értékét adja eredményül.
-BIN2DEC = BIN2DEC ## Bináris számot decimálissá alakít át.
-BIN2HEX = BIN2HEX ## Bináris számot hexadecimálissá alakít át.
-BIN2OCT = BIN2OCT ## Bináris számot oktálissá alakít át.
-COMPLEX = COMPLEX ## Valós és képzetes részből komplex számot képez.
-CONVERT = CONVERT ## Mértékegységeket vált át.
-DEC2BIN = DEC2BIN ## Decimális számot binárissá alakít át.
-DEC2HEX = DEC2HEX ## Decimális számot hexadecimálissá alakít át.
-DEC2OCT = DEC2OCT ## Decimális számot oktálissá alakít át.
-DELTA = DELTA ## Azt vizsgálja, hogy két érték egyenlő-e.
-ERF = ERF ## A hibafüggvény értékét adja eredményül.
-ERFC = ERFC ## A kiegészített hibafüggvény értékét adja eredményül.
-GESTEP = GESTEP ## Azt vizsgálja, hogy egy szám nagyobb-e adott küszöbértéknél.
-HEX2BIN = HEX2BIN ## Hexadecimális számot binárissá alakít át.
-HEX2DEC = HEX2DEC ## Hexadecimális számot decimálissá alakít át.
-HEX2OCT = HEX2OCT ## Hexadecimális számot oktálissá alakít át.
-IMABS = IMABS ## Komplex szám abszolút értékét (modulusát) adja eredményül.
-IMAGINARY = IMAGINARY ## Komplex szám képzetes részét adja eredményül.
-IMARGUMENT = IMARGUMENT ## A komplex szám radiánban kifejezett théta argumentumát adja eredményül.
-IMCONJUGATE = IMCONJUGATE ## Komplex szám komplex konjugáltját adja eredményül.
-IMCOS = IMCOS ## Komplex szám koszinuszát adja eredményül.
-IMDIV = IMDIV ## Két komplex szám hányadosát adja eredményül.
-IMEXP = IMEXP ## Az e szám komplex kitevőjű hatványát adja eredményül.
-IMLN = IMLN ## Komplex szám természetes logaritmusát adja eredményül.
-IMLOG10 = IMLOG10 ## Komplex szám tízes alapú logaritmusát adja eredményül.
-IMLOG2 = IMLOG2 ## Komplex szám kettes alapú logaritmusát adja eredményül.
-IMPOWER = IMPOWER ## Komplex szám hatványát adja eredményül.
-IMPRODUCT = IMPRODUCT ## Komplex számok szorzatát adja eredményül.
-IMREAL = IMREAL ## Komplex szám valós részét adja eredményül.
-IMSIN = IMSIN ## Komplex szám szinuszát adja eredményül.
-IMSQRT = IMSQRT ## Komplex szám négyzetgyökét adja eredményül.
-IMSUB = IMSUB ## Két komplex szám különbségét adja eredményül.
-IMSUM = IMSUM ## Komplex számok összegét adja eredményül.
-OCT2BIN = OCT2BIN ## Oktális számot binárissá alakít át.
-OCT2DEC = OCT2DEC ## Oktális számot decimálissá alakít át.
-OCT2HEX = OCT2HEX ## Oktális számot hexadecimálissá alakít át.
-
-
-##
-## Financial functions Pénzügyi függvények
-##
-ACCRINT = ACCRINT ## Periodikusan kamatozó értékpapír felszaporodott kamatát adja eredményül.
-ACCRINTM = ACCRINTM ## Lejáratkor kamatozó értékpapír felszaporodott kamatát adja eredményül.
-AMORDEGRC = AMORDEGRC ## Állóeszköz lineáris értékcsökkenését adja meg az egyes könyvelési időszakokra vonatkozóan.
-AMORLINC = AMORLINC ## Az egyes könyvelési időszakokban az értékcsökkenést adja meg.
-COUPDAYBS = COUPDAYBS ## A szelvényidőszak kezdetétől a kifizetés időpontjáig eltelt napokat adja vissza.
-COUPDAYS = COUPDAYS ## A kifizetés időpontját magában foglaló szelvényperiódus hosszát adja meg napokban.
-COUPDAYSNC = COUPDAYSNC ## A kifizetés időpontja és a legközelebbi szelvénydátum közötti napok számát adja meg.
-COUPNCD = COUPNCD ## A kifizetést követő legelső szelvénydátumot adja eredményül.
-COUPNUM = COUPNUM ## A kifizetés és a lejárat időpontja között kifizetendő szelvények számát adja eredményül.
-COUPPCD = COUPPCD ## A kifizetés előtti utolsó szelvénydátumot adja eredményül.
-CUMIPMT = CUMIPMT ## Két fizetési időszak között kifizetett kamat halmozott értékét adja eredményül.
-CUMPRINC = CUMPRINC ## Két fizetési időszak között kifizetett részletek halmozott (kamatot nem tartalmazó) értékét adja eredményül.
-DB = KCS2 ## Eszköz adott időszak alatti értékcsökkenését számítja ki a lineáris leírási modell alkalmazásával.
-DDB = KCSA ## Eszköz értékcsökkenését számítja ki adott időszakra vonatkozóan a progresszív vagy egyéb megadott leírási modell alkalmazásával.
-DISC = DISC ## Értékpapír leszámítolási kamatlábát adja eredményül.
-DOLLARDE = DOLLARDE ## Egy közönséges törtként megadott számot tizedes törtté alakít át.
-DOLLARFR = DOLLARFR ## Tizedes törtként megadott számot közönséges törtté alakít át.
-DURATION = DURATION ## Periodikus kamatfizetésű értékpapír éves kamatérzékenységét adja eredményül.
-EFFECT = EFFECT ## Az éves tényleges kamatláb értékét adja eredményül.
-FV = JBÉ ## Befektetés jövőbeli értékét számítja ki.
-FVSCHEDULE = FVSCHEDULE ## A kezdőtőke adott kamatlábak szerint megnövelt jövőbeli értékét adja eredményül.
-INTRATE = INTRATE ## A lejáratig teljesen lekötött értékpapír kamatrátáját adja eredményül.
-IPMT = RRÉSZLET ## Hiteltörlesztésen belül a tőketörlesztés nagyságát számítja ki adott időszakra.
-IRR = BMR ## A befektetés belső megtérülési rátáját számítja ki pénzáramláshoz.
-ISPMT = LRÉSZLETKAMAT ## A befektetés adott időszakára fizetett kamatot számítja ki.
-MDURATION = MDURATION ## Egy 100 Ft névértékű értékpapír Macauley-féle módosított kamatérzékenységét adja eredményül.
-MIRR = MEGTÉRÜLÉS ## A befektetés belső megtérülési rátáját számítja ki a költségek és a bevételek különböző kamatlába mellett.
-NOMINAL = NOMINAL ## Az éves névleges kamatláb értékét adja eredményül.
-NPER = PER.SZÁM ## A törlesztési időszakok számát adja meg.
-NPV = NMÉ ## Befektetéshez kapcsolódó pénzáramlás nettó jelenértékét számítja ki ismert pénzáramlás és kamatláb mellett.
-ODDFPRICE = ODDFPRICE ## Egy 100 Ft névértékű, a futamidő elején töredék-időszakos értékpapír árát adja eredményül.
-ODDFYIELD = ODDFYIELD ## A futamidő elején töredék-időszakos értékpapír hozamát adja eredményül.
-ODDLPRICE = ODDLPRICE ## Egy 100 Ft névértékű, a futamidő végén töredék-időszakos értékpapír árát adja eredményül.
-ODDLYIELD = ODDLYIELD ## A futamidő végén töredék-időszakos értékpapír hozamát adja eredményül.
-PMT = RÉSZLET ## A törlesztési időszakra vonatkozó törlesztési összeget számítja ki.
-PPMT = PRÉSZLET ## Hiteltörlesztésen belül a tőketörlesztés nagyságát számítja ki adott időszakra.
-PRICE = PRICE ## Egy 100 Ft névértékű, periodikusan kamatozó értékpapír árát adja eredményül.
-PRICEDISC = PRICEDISC ## Egy 100 Ft névértékű leszámítolt értékpapír árát adja eredményül.
-PRICEMAT = PRICEMAT ## Egy 100 Ft névértékű, a lejáratkor kamatozó értékpapír árát adja eredményül.
-PV = MÉ ## Befektetés jelenlegi értékét számítja ki.
-RATE = RÁTA ## Egy törlesztési időszakban az egy időszakra eső kamatláb nagyságát számítja ki.
-RECEIVED = RECEIVED ## A lejáratig teljesen lekötött értékpapír lejáratakor kapott összegét adja eredményül.
-SLN = LCSA ## Tárgyi eszköz egy időszakra eső amortizációját adja meg bruttó érték szerinti lineáris leírási kulcsot alkalmazva.
-SYD = SYD ## Tárgyi eszköz értékcsökkenését számítja ki adott időszakra az évek számjegyösszegével dolgozó módszer alapján.
-TBILLEQ = TBILLEQ ## Kincstárjegy kötvény-egyenértékű hozamát adja eredményül.
-TBILLPRICE = TBILLPRICE ## Egy 100 Ft névértékű kincstárjegy árát adja eredményül.
-TBILLYIELD = TBILLYIELD ## Kincstárjegy hozamát adja eredményül.
-VDB = ÉCSRI ## Tárgyi eszköz amortizációját számítja ki megadott vagy részidőszakra a csökkenő egyenleg módszerének alkalmazásával.
-XIRR = XIRR ## Ütemezett készpénzforgalom (cash flow) belső megtérülési kamatrátáját adja eredményül.
-XNPV = XNPV ## Ütemezett készpénzforgalom (cash flow) nettó jelenlegi értékét adja eredményül.
-YIELD = YIELD ## Periodikusan kamatozó értékpapír hozamát adja eredményül.
-YIELDDISC = YIELDDISC ## Leszámítolt értékpapír (például kincstárjegy) éves hozamát adja eredményül.
-YIELDMAT = YIELDMAT ## Lejáratkor kamatozó értékpapír éves hozamát adja eredményül.
-
-
-##
-## Information functions Információs függvények
-##
-CELL = CELLA ## Egy cella formátumára, elhelyezkedésére vagy tartalmára vonatkozó adatokat ad eredményül.
-ERROR.TYPE = HIBA.TÍPUS ## Egy hibatípushoz tartozó számot ad eredményül.
-INFO = INFÓ ## A rendszer- és munkakörnyezet pillanatnyi állapotáról ad felvilágosítást.
-ISBLANK = ÜRES ## Eredménye IGAZ, ha az érték üres.
-ISERR = HIBA ## Eredménye IGAZ, ha az érték valamelyik hibaérték a #HIÁNYZIK kivételével.
-ISERROR = HIBÁS ## Eredménye IGAZ, ha az érték valamelyik hibaérték.
-ISEVEN = ISEVEN ## Eredménye IGAZ, ha argumentuma páros szám.
-ISLOGICAL = LOGIKAI ## Eredménye IGAZ, ha az érték logikai érték.
-ISNA = NINCS ## Eredménye IGAZ, ha az érték a #HIÁNYZIK hibaérték.
-ISNONTEXT = NEM.SZÖVEG ## Eredménye IGAZ, ha az érték nem szöveg.
-ISNUMBER = SZÁM ## Eredménye IGAZ, ha az érték szám.
-ISODD = ISODD ## Eredménye IGAZ, ha argumentuma páratlan szám.
-ISREF = HIVATKOZÁS ## Eredménye IGAZ, ha az érték hivatkozás.
-ISTEXT = SZÖVEG.E ## Eredménye IGAZ, ha az érték szöveg.
-N = N ## Argumentumának értékét számmá alakítja.
-NA = HIÁNYZIK ## Eredménye a #HIÁNYZIK hibaérték.
-TYPE = TÍPUS ## Érték adattípusának azonosítószámát adja eredményül.
-
-
-##
-## Logical functions Logikai függvények
-##
-AND = ÉS ## Eredménye IGAZ, ha minden argumentuma IGAZ.
-FALSE = HAMIS ## A HAMIS logikai értéket adja eredményül.
-IF = HA ## Logikai vizsgálatot hajt végre.
-IFERROR = HAHIBA ## A megadott értéket adja vissza, ha egy képlet hibához vezet; más esetben a képlet értékét adja eredményül.
-NOT = NEM ## Argumentuma értékének ellentettjét adja eredményül.
-OR = VAGY ## Eredménye IGAZ, ha bármely argumentuma IGAZ.
-TRUE = IGAZ ## Az IGAZ logikai értéket adja eredményül.
-
-
-##
-## Lookup and reference functions Keresési és hivatkozási függvények
-##
-ADDRESS = CÍM ## A munkalap egy cellájára való hivatkozást adja szövegként eredményül.
-AREAS = TERÜLET ## Hivatkozásban a területek számát adja eredményül.
-CHOOSE = VÁLASZT ## Értékek listájából választ ki egy elemet.
-COLUMN = OSZLOP ## Egy hivatkozás oszlopszámát adja eredményül.
-COLUMNS = OSZLOPOK ## A hivatkozásban található oszlopok számát adja eredményül.
-HLOOKUP = VKERES ## A megadott tömb felső sorában adott értékű elemet keres, és a megtalált elem oszlopából adott sorban elhelyezkedő értékkel tér vissza.
-HYPERLINK = HIPERHIVATKOZÁS ## Hálózati kiszolgálón, intraneten vagy az interneten tárolt dokumentumot megnyitó parancsikont vagy hivatkozást hoz létre.
-INDEX = INDEX ## Tömb- vagy hivatkozás indexszel megadott értékét adja vissza.
-INDIRECT = INDIREKT ## Szöveg megadott hivatkozást ad eredményül.
-LOOKUP = KERES ## Vektorban vagy tömbben keres meg értékeket.
-MATCH = HOL.VAN ## Hivatkozásban vagy tömbben értékeket keres.
-OFFSET = OFSZET ## Hivatkozás egy másik hivatkozástól számított távolságát adja meg.
-ROW = SOR ## Egy hivatkozás sorának számát adja meg.
-ROWS = SOROK ## Egy hivatkozás sorainak számát adja meg.
-RTD = RTD ## Valós idejű adatokat keres vissza a COM automatizmust (automatizálás: Egy alkalmazás objektumaival való munka másik alkalmazásból vagy fejlesztőeszközből. A korábban OLE automatizmusnak nevezett automatizálás iparági szabvány, a Component Object Model (COM) szolgáltatása.) támogató programból.
-TRANSPOSE = TRANSZPONÁLÁS ## Egy tömb transzponáltját adja eredményül.
-VLOOKUP = FKERES ## A megadott tömb bal szélső oszlopában megkeres egy értéket, majd annak sora és a megadott oszlop metszéspontjában levő értéked adja eredményül.
-
-
-##
-## Math and trigonometry functions Matematikai és trigonometrikus függvények
-##
-ABS = ABS ## Egy szám abszolút értékét adja eredményül.
-ACOS = ARCCOS ## Egy szám arkusz koszinuszát számítja ki.
-ACOSH = ACOSH ## Egy szám inverz koszinusz hiperbolikuszát számítja ki.
-ASIN = ARCSIN ## Egy szám arkusz szinuszát számítja ki.
-ASINH = ASINH ## Egy szám inverz szinusz hiperbolikuszát számítja ki.
-ATAN = ARCTAN ## Egy szám arkusz tangensét számítja ki.
-ATAN2 = ARCTAN2 ## X és y koordináták alapján számítja ki az arkusz tangens értéket.
-ATANH = ATANH ## A szám inverz tangens hiperbolikuszát számítja ki.
-CEILING = PLAFON ## Egy számot a legközelebbi egészre vagy a pontosságként megadott érték legközelebb eső többszörösére kerekít.
-COMBIN = KOMBINÁCIÓK ## Adott számú objektum összes lehetséges kombinációinak számát számítja ki.
-COS = COS ## Egy szám koszinuszát számítja ki.
-COSH = COSH ## Egy szám koszinusz hiperbolikuszát számítja ki.
-DEGREES = FOK ## Radiánt fokká alakít át.
-EVEN = PÁROS ## Egy számot a legközelebbi páros egész számra kerekít.
-EXP = KITEVŐ ## Az e adott kitevőjű hatványát adja eredményül.
-FACT = FAKT ## Egy szám faktoriálisát számítja ki.
-FACTDOUBLE = FACTDOUBLE ## Egy szám dupla faktoriálisát adja eredményül.
-FLOOR = PADLÓ ## Egy számot lefelé, a nulla felé kerekít.
-GCD = GCD ## A legnagyobb közös osztót adja eredményül.
-INT = INT ## Egy számot lefelé kerekít a legközelebbi egészre.
-LCM = LCM ## A legkisebb közös többszöröst adja eredményül.
-LN = LN ## Egy szám természetes logaritmusát számítja ki.
-LOG = LOG ## Egy szám adott alapú logaritmusát számítja ki.
-LOG10 = LOG10 ## Egy szám 10-es alapú logaritmusát számítja ki.
-MDETERM = MDETERM ## Egy tömb mátrix-determinánsát számítja ki.
-MINVERSE = INVERZ.MÁTRIX ## Egy tömb mátrix inverzét adja eredményül.
-MMULT = MSZORZAT ## Két tömb mátrix-szorzatát adja meg.
-MOD = MARADÉK ## Egy szám osztási maradékát adja eredményül.
-MROUND = MROUND ## A kívánt többszörösére kerekített értéket ad eredményül.
-MULTINOMIAL = MULTINOMIAL ## Számhalmaz multinomiálisát adja eredményül.
-ODD = PÁRATLAN ## Egy számot a legközelebbi páratlan számra kerekít.
-PI = PI ## A pi matematikai állandót adja vissza.
-POWER = HATVÁNY ## Egy szám adott kitevőjű hatványát számítja ki.
-PRODUCT = SZORZAT ## Argumentumai szorzatát számítja ki.
-QUOTIENT = QUOTIENT ## Egy hányados egész részét adja eredményül.
-RADIANS = RADIÁN ## Fokot radiánná alakít át.
-RAND = VÉL ## Egy 0 és 1 közötti véletlen számot ad eredményül.
-RANDBETWEEN = RANDBETWEEN ## Megadott számok közé eső véletlen számot állít elő.
-ROMAN = RÓMAI ## Egy számot római számokkal kifejezve szövegként ad eredményül.
-ROUND = KEREKÍTÉS ## Egy számot adott számú számjegyre kerekít.
-ROUNDDOWN = KEREKÍTÉS.LE ## Egy számot lefelé, a nulla felé kerekít.
-ROUNDUP = KEREKÍTÉS.FEL ## Egy számot felfelé, a nullától távolabbra kerekít.
-SERIESSUM = SERIESSUM ## Hatványsor összegét adja eredményül.
-SIGN = ELŐJEL ## Egy szám előjelét adja meg.
-SIN = SIN ## Egy szög szinuszát számítja ki.
-SINH = SINH ## Egy szám szinusz hiperbolikuszát számítja ki.
-SQRT = GYÖK ## Egy szám pozitív négyzetgyökét számítja ki.
-SQRTPI = SQRTPI ## A (szám*pi) négyzetgyökét adja eredményül.
-SUBTOTAL = RÉSZÖSSZEG ## Lista vagy adatbázis részösszegét adja eredményül.
-SUM = SZUM ## Összeadja az argumentumlistájában lévő számokat.
-SUMIF = SZUMHA ## A megadott feltételeknek eleget tevő cellákban található értékeket adja össze.
-SUMIFS = SZUMHATÖBB ## Több megadott feltételnek eleget tévő tartománycellák összegét adja eredményül.
-SUMPRODUCT = SZORZATÖSSZEG ## A megfelelő tömbelemek szorzatának összegét számítja ki.
-SUMSQ = NÉGYZETÖSSZEG ## Argumentumai négyzetének összegét számítja ki.
-SUMX2MY2 = SZUMX2BŐLY2 ## Két tömb megfelelő elemei négyzetének különbségét összegzi.
-SUMX2PY2 = SZUMX2MEGY2 ## Két tömb megfelelő elemei négyzetének összegét összegzi.
-SUMXMY2 = SZUMXBŐLY2 ## Két tömb megfelelő elemei különbségének négyzetösszegét számítja ki.
-TAN = TAN ## Egy szám tangensét számítja ki.
-TANH = TANH ## Egy szám tangens hiperbolikuszát számítja ki.
-TRUNC = CSONK ## Egy számot egésszé csonkít.
-
-
-##
-## Statistical functions Statisztikai függvények
-##
-AVEDEV = ÁTL.ELTÉRÉS ## Az adatpontoknak átlaguktól való átlagos abszolút eltérését számítja ki.
-AVERAGE = ÁTLAG ## Argumentumai átlagát számítja ki.
-AVERAGEA = ÁTLAGA ## Argumentumai átlagát számítja ki (beleértve a számokat, szöveget és logikai értékeket).
-AVERAGEIF = ÁTLAGHA ## A megadott feltételnek eleget tévő tartomány celláinak átlagát (számtani közepét) adja eredményül.
-AVERAGEIFS = ÁTLAGHATÖBB ## A megadott feltételeknek eleget tévő cellák átlagát (számtani közepét) adja eredményül.
-BETADIST = BÉTA.ELOSZLÁS ## A béta-eloszlás függvényt számítja ki.
-BETAINV = INVERZ.BÉTA ## Adott béta-eloszláshoz kiszámítja a béta eloszlásfüggvény inverzét.
-BINOMDIST = BINOM.ELOSZLÁS ## A diszkrét binomiális eloszlás valószínűségértékét számítja ki.
-CHIDIST = KHI.ELOSZLÁS ## A khi-négyzet-eloszlás egyszélű valószínűségértékét számítja ki.
-CHIINV = INVERZ.KHI ## A khi-négyzet-eloszlás egyszélű valószínűségértékének inverzét számítja ki.
-CHITEST = KHI.PRÓBA ## Függetlenségvizsgálatot hajt végre.
-CONFIDENCE = MEGBÍZHATÓSÁG ## Egy statisztikai sokaság várható értékének megbízhatósági intervallumát adja eredményül.
-CORREL = KORREL ## Két adathalmaz korrelációs együtthatóját számítja ki.
-COUNT = DARAB ## Megszámolja, hogy argumentumlistájában hány szám található.
-COUNTA = DARAB2 ## Megszámolja, hogy argumentumlistájában hány érték található.
-COUNTBLANK = DARABÜRES ## Egy tartományban összeszámolja az üres cellákat.
-COUNTIF = DARABTELI ## Egy tartományban összeszámolja azokat a cellákat, amelyek eleget tesznek a megadott feltételnek.
-COUNTIFS = DARABHATÖBB ## Egy tartományban összeszámolja azokat a cellákat, amelyek eleget tesznek több feltételnek.
-COVAR = KOVAR ## A kovarianciát, azaz a páronkénti eltérések szorzatának átlagát számítja ki.
-CRITBINOM = KRITBINOM ## Azt a legkisebb számot adja eredményül, amelyre a binomiális eloszlásfüggvény értéke nem kisebb egy adott határértéknél.
-DEVSQ = SQ ## Az átlagtól való eltérések négyzetének összegét számítja ki.
-EXPONDIST = EXP.ELOSZLÁS ## Az exponenciális eloszlás értékét számítja ki.
-FDIST = F.ELOSZLÁS ## Az F-eloszlás értékét számítja ki.
-FINV = INVERZ.F ## Az F-eloszlás inverzének értékét számítja ki.
-FISHER = FISHER ## Fisher-transzformációt hajt végre.
-FISHERINV = INVERZ.FISHER ## A Fisher-transzformáció inverzét hajtja végre.
-FORECAST = ELŐREJELZÉS ## Az ismert értékek alapján lineáris regresszióval becsült értéket ad eredményül.
-FREQUENCY = GYAKORISÁG ## A gyakorisági vagy empirikus eloszlás értékét függőleges tömbként adja eredményül.
-FTEST = F.PRÓBA ## Az F-próba értékét adja eredményül.
-GAMMADIST = GAMMA.ELOSZLÁS ## A gamma-eloszlás értékét számítja ki.
-GAMMAINV = INVERZ.GAMMA ## A gamma-eloszlás eloszlásfüggvénye inverzének értékét számítja ki.
-GAMMALN = GAMMALN ## A gamma-függvény természetes logaritmusát számítja ki.
-GEOMEAN = MÉRTANI.KÖZÉP ## Argumentumai mértani középértékét számítja ki.
-GROWTH = NÖV ## Exponenciális regresszió alapján ad becslést.
-HARMEAN = HARM.KÖZÉP ## Argumentumai harmonikus átlagát számítja ki.
-HYPGEOMDIST = HIPERGEOM.ELOSZLÁS ## A hipergeometriai eloszlás értékét számítja ki.
-INTERCEPT = METSZ ## A regressziós egyenes y tengellyel való metszéspontját határozza meg.
-KURT = CSÚCSOSSÁG ## Egy adathalmaz csúcsosságát számítja ki.
-LARGE = NAGY ## Egy adathalmaz k-adik legnagyobb elemét adja eredményül.
-LINEST = LIN.ILL ## A legkisebb négyzetek módszerével az adatokra illesztett egyenes paramétereit határozza meg.
-LOGEST = LOG.ILL ## Az adatokra illesztett exponenciális görbe paramétereit határozza meg.
-LOGINV = INVERZ.LOG.ELOSZLÁS ## A lognormális eloszlás inverzét számítja ki.
-LOGNORMDIST = LOG.ELOSZLÁS ## A lognormális eloszlásfüggvény értékét számítja ki.
-MAX = MAX ## Az argumentumai között szereplő legnagyobb számot adja meg.
-MAXA = MAX2 ## Az argumentumai között szereplő legnagyobb számot adja meg (beleértve a számokat, szöveget és logikai értékeket).
-MEDIAN = MEDIÁN ## Adott számhalmaz mediánját számítja ki.
-MIN = MIN ## Az argumentumai között szereplő legkisebb számot adja meg.
-MINA = MIN2 ## Az argumentumai között szereplő legkisebb számot adja meg, beleértve a számokat, szöveget és logikai értékeket.
-MODE = MÓDUSZ ## Egy adathalmazból kiválasztja a leggyakrabban előforduló számot.
-NEGBINOMDIST = NEGBINOM.ELOSZL ## A negatív binomiális eloszlás értékét számítja ki.
-NORMDIST = NORM.ELOSZL ## A normális eloszlás értékét számítja ki.
-NORMINV = INVERZ.NORM ## A normális eloszlás eloszlásfüggvénye inverzének értékét számítja ki.
-NORMSDIST = STNORMELOSZL ## A standard normális eloszlás eloszlásfüggvényének értékét számítja ki.
-NORMSINV = INVERZ.STNORM ## A standard normális eloszlás eloszlásfüggvénye inverzének értékét számítja ki.
-PEARSON = PEARSON ## A Pearson-féle korrelációs együtthatót számítja ki.
-PERCENTILE = PERCENTILIS ## Egy tartományban található értékek k-adik percentilisét, azaz százalékosztályát adja eredményül.
-PERCENTRANK = SZÁZALÉKRANG ## Egy értéknek egy adathalmazon belül vett százalékos rangját (elhelyezkedését) számítja ki.
-PERMUT = VARIÁCIÓK ## Adott számú objektum k-ad osztályú ismétlés nélküli variációinak számát számítja ki.
-POISSON = POISSON ## A Poisson-eloszlás értékét számítja ki.
-PROB = VALÓSZÍNŰSÉG ## Annak valószínűségét számítja ki, hogy adott értékek két határérték közé esnek.
-QUARTILE = KVARTILIS ## Egy adathalmaz kvartilisét (negyedszintjét) számítja ki.
-RANK = SORSZÁM ## Kiszámítja, hogy egy szám hányadik egy számsorozatban.
-RSQ = RNÉGYZET ## Kiszámítja a Pearson-féle szorzatmomentum korrelációs együtthatójának négyzetét.
-SKEW = FERDESÉG ## Egy eloszlás ferdeségét határozza meg.
-SLOPE = MEREDEKSÉG ## Egy lineáris regressziós egyenes meredekségét számítja ki.
-SMALL = KICSI ## Egy adathalmaz k-adik legkisebb elemét adja meg.
-STANDARDIZE = NORMALIZÁLÁS ## Normalizált értéket ad eredményül.
-STDEV = SZÓRÁS ## Egy statisztikai sokaság mintájából kiszámítja annak szórását.
-STDEVA = SZÓRÁSA ## Egy statisztikai sokaság mintájából kiszámítja annak szórását (beleértve a számokat, szöveget és logikai értékeket).
-STDEVP = SZÓRÁSP ## Egy statisztikai sokaság egészéből kiszámítja annak szórását.
-STDEVPA = SZÓRÁSPA ## Egy statisztikai sokaság egészéből kiszámítja annak szórását (beleértve számokat, szöveget és logikai értékeket).
-STEYX = STHIBAYX ## Egy regresszió esetén az egyes x-értékek alapján meghatározott y-értékek standard hibáját számítja ki.
-TDIST = T.ELOSZLÁS ## A Student-féle t-eloszlás értékét számítja ki.
-TINV = INVERZ.T ## A Student-féle t-eloszlás inverzét számítja ki.
-TREND = TREND ## Lineáris trend értékeit számítja ki.
-TRIMMEAN = RÉSZÁTLAG ## Egy adathalmaz középső részének átlagát számítja ki.
-TTEST = T.PRÓBA ## A Student-féle t-próbához tartozó valószínűséget számítja ki.
-VAR = VAR ## Minta alapján becslést ad a varianciára.
-VARA = VARA ## Minta alapján becslést ad a varianciára (beleértve számokat, szöveget és logikai értékeket).
-VARP = VARP ## Egy statisztikai sokaság varianciáját számítja ki.
-VARPA = VARPA ## Egy statisztikai sokaság varianciáját számítja ki (beleértve számokat, szöveget és logikai értékeket).
-WEIBULL = WEIBULL ## A Weibull-féle eloszlás értékét számítja ki.
-ZTEST = Z.PRÓBA ## Az egyszélű z-próbával kapott valószínűségértéket számítja ki.
-
-
-##
-## Text functions Szövegműveletekhez használható függvények
-##
-ASC = ASC ## Szöveg teljes szélességű (kétbájtos) latin és katakana karaktereit félszélességű (egybájtos) karakterekké alakítja.
-BAHTTEXT = BAHTSZÖVEG ## Számot szöveggé alakít a ß (baht) pénznemformátum használatával.
-CHAR = KARAKTER ## A kódszámmal meghatározott karaktert adja eredményül.
-CLEAN = TISZTÍT ## A szövegből eltávolítja az összes nem nyomtatható karaktert.
-CODE = KÓD ## Karaktersorozat első karakterének numerikus kódját adja eredményül.
-CONCATENATE = ÖSSZEFŰZ ## Több szövegelemet egyetlen szöveges elemmé fűz össze.
-DOLLAR = FORINT ## Számot pénznem formátumú szöveggé alakít át.
-EXACT = AZONOS ## Megvizsgálja, hogy két érték azonos-e.
-FIND = SZÖVEG.TALÁL ## Karaktersorozatot keres egy másikban (a kis- és nagybetűk megkülönböztetésével).
-FINDB = SZÖVEG.TALÁL2 ## Karaktersorozatot keres egy másikban (a kis- és nagybetűk megkülönböztetésével).
-FIXED = FIX ## Számot szöveges formátumúra alakít adott számú tizedesjegyre kerekítve.
-JIS = JIS ## A félszélességű (egybájtos) latin és a katakana karaktereket teljes szélességű (kétbájtos) karakterekké alakítja.
-LEFT = BAL ## Szöveg bal szélső karaktereit adja eredményül.
-LEFTB = BAL2 ## Szöveg bal szélső karaktereit adja eredményül.
-LEN = HOSSZ ## Szöveg karakterekben mért hosszát adja eredményül.
-LENB = HOSSZ2 ## Szöveg karakterekben mért hosszát adja eredményül.
-LOWER = KISBETŰ ## Szöveget kisbetűssé alakít át.
-MID = KÖZÉP ## A szöveg adott pozíciójától kezdve megadott számú karaktert ad vissza eredményként.
-MIDB = KÖZÉP2 ## A szöveg adott pozíciójától kezdve megadott számú karaktert ad vissza eredményként.
-PHONETIC = PHONETIC ## Szöveg furigana (fonetikus) karaktereit adja vissza.
-PROPER = TNÉV ## Szöveg minden szavának kezdőbetűjét nagybetűsre cseréli.
-REPLACE = CSERE ## A szövegen belül karaktereket cserél.
-REPLACEB = CSERE2 ## A szövegen belül karaktereket cserél.
-REPT = SOKSZOR ## Megadott számú alkalommal megismétel egy szövegrészt.
-RIGHT = JOBB ## Szövegrész jobb szélső karaktereit adja eredményül.
-RIGHTB = JOBB2 ## Szövegrész jobb szélső karaktereit adja eredményül.
-SEARCH = SZÖVEG.KERES ## Karaktersorozatot keres egy másikban (a kis- és nagybetűk között nem tesz különbséget).
-SEARCHB = SZÖVEG.KERES2 ## Karaktersorozatot keres egy másikban (a kis- és nagybetűk között nem tesz különbséget).
-SUBSTITUTE = HELYETTE ## Szövegben adott karaktereket másikra cserél.
-T = T ## Argumentumát szöveggé alakítja át.
-TEXT = SZÖVEG ## Számértéket alakít át adott számformátumú szöveggé.
-TRIM = TRIM ## A szövegből eltávolítja a szóközöket.
-UPPER = NAGYBETŰS ## Szöveget nagybetűssé alakít át.
-VALUE = ÉRTÉK ## Szöveget számmá alakít át.
diff --git a/admin/survey/excel/PHPExcel/locale/it/config b/admin/survey/excel/PHPExcel/locale/it/config
deleted file mode 100644
index 5baad53..0000000
--- a/admin/survey/excel/PHPExcel/locale/it/config
+++ /dev/null
@@ -1,47 +0,0 @@
-##
-## PHPExcel
-##
-## Copyright (c) 2006 - 2011 PHPExcel
-##
-## This library is free software; you can redistribute it and/or
-## modify it under the terms of the GNU Lesser General Public
-## License as published by the Free Software Foundation; either
-## version 2.1 of the License, or (at your option) any later version.
-##
-## This library is distributed in the hope that it will be useful,
-## but WITHOUT ANY WARRANTY; without even the implied warranty of
-## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-## Lesser General Public License for more details.
-##
-## You should have received a copy of the GNU Lesser General Public
-## License along with this library; if not, write to the Free Software
-## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-##
-## @category PHPExcel
-## @package PHPExcel_Settings
-## @copyright Copyright (c) 2006 - 2011 PHPExcel (http://www.codeplex.com/PHPExcel)
-## @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
-## @version 1.7.8, 2012-10-12
-##
-##
-
-
-ArgumentSeparator = ;
-
-
-##
-## (For future use)
-##
-currencySymbol = €
-
-
-##
-## Excel Error Codes (For future use)
-##
-NULL = #NULLO!
-DIV0 = #DIV/0!
-VALUE = #VALORE!
-REF = #RIF!
-NAME = #NOME?
-NUM = #NUM!
-NA = #N/D
diff --git a/admin/survey/excel/PHPExcel/locale/it/functions b/admin/survey/excel/PHPExcel/locale/it/functions
deleted file mode 100644
index 3d09204..0000000
--- a/admin/survey/excel/PHPExcel/locale/it/functions
+++ /dev/null
@@ -1,438 +0,0 @@
-##
-## PHPExcel
-##
-## Copyright (c) 2006 - 2011 PHPExcel
-##
-## This library is free software; you can redistribute it and/or
-## modify it under the terms of the GNU Lesser General Public
-## License as published by the Free Software Foundation; either
-## version 2.1 of the License, or (at your option) any later version.
-##
-## This library is distributed in the hope that it will be useful,
-## but WITHOUT ANY WARRANTY; without even the implied warranty of
-## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-## Lesser General Public License for more details.
-##
-## You should have received a copy of the GNU Lesser General Public
-## License along with this library; if not, write to the Free Software
-## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-##
-## @category PHPExcel
-## @package PHPExcel_Calculation
-## @copyright Copyright (c) 2006 - 2011 PHPExcel (http://www.codeplex.com/PHPExcel)
-## @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
-## @version 1.7.8, 2012-10-12
-##
-## Data in this file derived from http://www.piuha.fi/excel-function-name-translation/
-##
-##
-
-
-##
-## Add-in and Automation functions Funzioni di automazione e dei componenti aggiuntivi
-##
-GETPIVOTDATA = INFO.DATI.TAB.PIVOT ## Restituisce i dati memorizzati in un rapporto di tabella pivot
-
-
-##
-## Cube functions Funzioni cubo
-##
-CUBEKPIMEMBER = MEMBRO.KPI.CUBO ## Restituisce il nome, la proprietà e la misura di un indicatore di prestazioni chiave (KPI) e visualizza il nome e la proprietà nella cella. Un KPI è una misura quantificabile, ad esempio l'utile lordo mensile o il fatturato trimestrale dei dipendenti, utilizzata per il monitoraggio delle prestazioni di un'organizzazione.
-CUBEMEMBER = MEMBRO.CUBO ## Restituisce un membro o una tupla in una gerarchia di cubi. Consente di verificare l'esistenza del membro o della tupla nel cubo.
-CUBEMEMBERPROPERTY = PROPRIETÀ.MEMBRO.CUBO ## Restituisce il valore di una proprietà di un membro del cubo. Consente di verificare l'esistenza di un nome di membro all'interno del cubo e di restituire la proprietà specificata per tale membro.
-CUBERANKEDMEMBER = MEMBRO.CUBO.CON.RANGO ## Restituisce l'n-esimo membro o il membro ordinato di un insieme. Consente di restituire uno o più elementi in un insieme, ad esempio l'agente di vendita migliore o i primi 10 studenti.
-CUBESET = SET.CUBO ## Definisce un insieme di tuple o membri calcolati mediante l'invio di un'espressione di insieme al cubo sul server. In questo modo l'insieme viene creato e restituito a Microsoft Office Excel.
-CUBESETCOUNT = CONTA.SET.CUBO ## Restituisce il numero di elementi di un insieme.
-CUBEVALUE = VALORE.CUBO ## Restituisce un valore aggregato da un cubo.
-
-
-##
-## Database functions Funzioni di database
-##
-DAVERAGE = DB.MEDIA ## Restituisce la media di voci del database selezionate
-DCOUNT = DB.CONTA.NUMERI ## Conta le celle di un database contenenti numeri
-DCOUNTA = DB.CONTA.VALORI ## Conta le celle non vuote in un database
-DGET = DB.VALORI ## Estrae da un database un singolo record che soddisfa i criteri specificati
-DMAX = DB.MAX ## Restituisce il valore massimo dalle voci selezionate in un database
-DMIN = DB.MIN ## Restituisce il valore minimo dalle voci di un database selezionate
-DPRODUCT = DB.PRODOTTO ## Moltiplica i valori in un determinato campo di record che soddisfano i criteri del database
-DSTDEV = DB.DEV.ST ## Restituisce una stima della deviazione standard sulla base di un campione di voci di un database selezionate
-DSTDEVP = DB.DEV.ST.POP ## Calcola la deviazione standard sulla base di tutte le voci di un database selezionate
-DSUM = DB.SOMMA ## Aggiunge i numeri nel campo colonna di record del database che soddisfa determinati criteri
-DVAR = DB.VAR ## Restituisce una stima della varianza sulla base di un campione da voci di un database selezionate
-DVARP = DB.VAR.POP ## Calcola la varianza sulla base di tutte le voci di un database selezionate
-
-
-##
-## Date and time functions Funzioni data e ora
-##
-DATE = DATA ## Restituisce il numero seriale di una determinata data
-DATEVALUE = DATA.VALORE ## Converte una data sotto forma di testo in un numero seriale
-DAY = GIORNO ## Converte un numero seriale in un giorno del mese
-DAYS360 = GIORNO360 ## Calcola il numero di giorni compreso tra due date basandosi su un anno di 360 giorni
-EDATE = DATA.MESE ## Restituisce il numero seriale della data che rappresenta il numero di mesi prima o dopo la data di inizio
-EOMONTH = FINE.MESE ## Restituisce il numero seriale dell'ultimo giorno del mese, prima o dopo un determinato numero di mesi
-HOUR = ORA ## Converte un numero seriale in un'ora
-MINUTE = MINUTO ## Converte un numero seriale in un minuto
-MONTH = MESE ## Converte un numero seriale in un mese
-NETWORKDAYS = GIORNI.LAVORATIVI.TOT ## Restituisce il numero di tutti i giorni lavorativi compresi fra due date
-NOW = ADESSO ## Restituisce il numero seriale della data e dell'ora corrente
-SECOND = SECONDO ## Converte un numero seriale in un secondo
-TIME = ORARIO ## Restituisce il numero seriale di una determinata ora
-TIMEVALUE = ORARIO.VALORE ## Converte un orario in forma di testo in un numero seriale
-TODAY = OGGI ## Restituisce il numero seriale relativo alla data odierna
-WEEKDAY = GIORNO.SETTIMANA ## Converte un numero seriale in un giorno della settimana
-WEEKNUM = NUM.SETTIMANA ## Converte un numero seriale in un numero che rappresenta la posizione numerica di una settimana nell'anno
-WORKDAY = GIORNO.LAVORATIVO ## Restituisce il numero della data prima o dopo un determinato numero di giorni lavorativi
-YEAR = ANNO ## Converte un numero seriale in un anno
-YEARFRAC = FRAZIONE.ANNO ## Restituisce la frazione dell'anno che rappresenta il numero dei giorni compresi tra una data_ iniziale e una data_finale
-
-
-##
-## Engineering functions Funzioni ingegneristiche
-##
-BESSELI = BESSEL.I ## Restituisce la funzione di Bessel modificata In(x)
-BESSELJ = BESSEL.J ## Restituisce la funzione di Bessel Jn(x)
-BESSELK = BESSEL.K ## Restituisce la funzione di Bessel modificata Kn(x)
-BESSELY = BESSEL.Y ## Restituisce la funzione di Bessel Yn(x)
-BIN2DEC = BINARIO.DECIMALE ## Converte un numero binario in decimale
-BIN2HEX = BINARIO.HEX ## Converte un numero binario in esadecimale
-BIN2OCT = BINARIO.OCT ## Converte un numero binario in ottale
-COMPLEX = COMPLESSO ## Converte i coefficienti reali e immaginari in numeri complessi
-CONVERT = CONVERTI ## Converte un numero da un sistema di misura in un altro
-DEC2BIN = DECIMALE.BINARIO ## Converte un numero decimale in binario
-DEC2HEX = DECIMALE.HEX ## Converte un numero decimale in esadecimale
-DEC2OCT = DECIMALE.OCT ## Converte un numero decimale in ottale
-DELTA = DELTA ## Verifica se due valori sono uguali
-ERF = FUNZ.ERRORE ## Restituisce la funzione di errore
-ERFC = FUNZ.ERRORE.COMP ## Restituisce la funzione di errore complementare
-GESTEP = SOGLIA ## Verifica se un numero è maggiore del valore di soglia
-HEX2BIN = HEX.BINARIO ## Converte un numero esadecimale in binario
-HEX2DEC = HEX.DECIMALE ## Converte un numero esadecimale in decimale
-HEX2OCT = HEX.OCT ## Converte un numero esadecimale in ottale
-IMABS = COMP.MODULO ## Restituisce il valore assoluto (modulo) di un numero complesso
-IMAGINARY = COMP.IMMAGINARIO ## Restituisce il coefficiente immaginario di un numero complesso
-IMARGUMENT = COMP.ARGOMENTO ## Restituisce l'argomento theta, un angolo espresso in radianti
-IMCONJUGATE = COMP.CONIUGATO ## Restituisce il complesso coniugato del numero complesso
-IMCOS = COMP.COS ## Restituisce il coseno di un numero complesso
-IMDIV = COMP.DIV ## Restituisce il quoziente di due numeri complessi
-IMEXP = COMP.EXP ## Restituisce il valore esponenziale di un numero complesso
-IMLN = COMP.LN ## Restituisce il logaritmo naturale di un numero complesso
-IMLOG10 = COMP.LOG10 ## Restituisce il logaritmo in base 10 di un numero complesso
-IMLOG2 = COMP.LOG2 ## Restituisce un logaritmo in base 2 di un numero complesso
-IMPOWER = COMP.POTENZA ## Restituisce il numero complesso elevato a una potenza intera
-IMPRODUCT = COMP.PRODOTTO ## Restituisce il prodotto di numeri complessi compresi tra 2 e 29
-IMREAL = COMP.PARTE.REALE ## Restituisce il coefficiente reale di un numero complesso
-IMSIN = COMP.SEN ## Restituisce il seno di un numero complesso
-IMSQRT = COMP.RADQ ## Restituisce la radice quadrata di un numero complesso
-IMSUB = COMP.DIFF ## Restituisce la differenza fra due numeri complessi
-IMSUM = COMP.SOMMA ## Restituisce la somma di numeri complessi
-OCT2BIN = OCT.BINARIO ## Converte un numero ottale in binario
-OCT2DEC = OCT.DECIMALE ## Converte un numero ottale in decimale
-OCT2HEX = OCT.HEX ## Converte un numero ottale in esadecimale
-
-
-##
-## Financial functions Funzioni finanziarie
-##
-ACCRINT = INT.MATURATO.PER ## Restituisce l'interesse maturato di un titolo che paga interessi periodici
-ACCRINTM = INT.MATURATO.SCAD ## Restituisce l'interesse maturato di un titolo che paga interessi alla scadenza
-AMORDEGRC = AMMORT.DEGR ## Restituisce l'ammortamento per ogni periodo contabile utilizzando un coefficiente di ammortamento
-AMORLINC = AMMORT.PER ## Restituisce l'ammortamento per ogni periodo contabile
-COUPDAYBS = GIORNI.CED.INIZ.LIQ ## Restituisce il numero dei giorni che vanno dall'inizio del periodo di durata della cedola alla data di liquidazione
-COUPDAYS = GIORNI.CED ## Restituisce il numero dei giorni relativi al periodo della cedola che contiene la data di liquidazione
-COUPDAYSNC = GIORNI.CED.NUOVA ## Restituisce il numero di giorni che vanno dalla data di liquidazione alla data della cedola successiva
-COUPNCD = DATA.CED.SUCC ## Restituisce un numero che rappresenta la data della cedola successiva alla data di liquidazione
-COUPNUM = NUM.CED ## Restituisce il numero di cedole pagabili fra la data di liquidazione e la data di scadenza
-COUPPCD = DATA.CED.PREC ## Restituisce un numero che rappresenta la data della cedola precedente alla data di liquidazione
-CUMIPMT = INT.CUMUL ## Restituisce l'interesse cumulativo pagato fra due periodi
-CUMPRINC = CAP.CUM ## Restituisce il capitale cumulativo pagato per estinguere un debito fra due periodi
-DB = DB ## Restituisce l'ammortamento di un bene per un periodo specificato utilizzando il metodo di ammortamento a quote fisse decrescenti
-DDB = AMMORT ## Restituisce l'ammortamento di un bene per un periodo specificato utilizzando il metodo di ammortamento a doppie quote decrescenti o altri metodi specificati
-DISC = TASSO.SCONTO ## Restituisce il tasso di sconto per un titolo
-DOLLARDE = VALUTA.DEC ## Converte un prezzo valuta, espresso come frazione, in prezzo valuta, espresso come numero decimale
-DOLLARFR = VALUTA.FRAZ ## Converte un prezzo valuta, espresso come numero decimale, in prezzo valuta, espresso come frazione
-DURATION = DURATA ## Restituisce la durata annuale di un titolo con i pagamenti di interesse periodico
-EFFECT = EFFETTIVO ## Restituisce l'effettivo tasso di interesse annuo
-FV = VAL.FUT ## Restituisce il valore futuro di un investimento
-FVSCHEDULE = VAL.FUT.CAPITALE ## Restituisce il valore futuro di un capitale iniziale dopo aver applicato una serie di tassi di interesse composti
-INTRATE = TASSO.INT ## Restituisce il tasso di interesse per un titolo interamente investito
-IPMT = INTERESSI ## Restituisce il valore degli interessi per un investimento relativo a un periodo specifico
-IRR = TIR.COST ## Restituisce il tasso di rendimento interno per una serie di flussi di cassa
-ISPMT = INTERESSE.RATA ## Calcola l'interesse di un investimento pagato durante un periodo specifico
-MDURATION = DURATA.M ## Restituisce la durata Macauley modificata per un titolo con un valore presunto di € 100
-MIRR = TIR.VAR ## Restituisce il tasso di rendimento interno in cui i flussi di cassa positivi e negativi sono finanziati a tassi differenti
-NOMINAL = NOMINALE ## Restituisce il tasso di interesse nominale annuale
-NPER = NUM.RATE ## Restituisce un numero di periodi relativi a un investimento
-NPV = VAN ## Restituisce il valore attuale netto di un investimento basato su una serie di flussi di cassa periodici e sul tasso di sconto
-ODDFPRICE = PREZZO.PRIMO.IRR ## Restituisce il prezzo di un titolo dal valore nominale di € 100 avente il primo periodo di durata irregolare
-ODDFYIELD = REND.PRIMO.IRR ## Restituisce il rendimento di un titolo avente il primo periodo di durata irregolare
-ODDLPRICE = PREZZO.ULTIMO.IRR ## Restituisce il prezzo di un titolo dal valore nominale di € 100 avente l'ultimo periodo di durata irregolare
-ODDLYIELD = REND.ULTIMO.IRR ## Restituisce il rendimento di un titolo avente l'ultimo periodo di durata irregolare
-PMT = RATA ## Restituisce il pagamento periodico di una rendita annua
-PPMT = P.RATA ## Restituisce il pagamento sul capitale di un investimento per un dato periodo
-PRICE = PREZZO ## Restituisce il prezzo di un titolo dal valore nominale di € 100 che paga interessi periodici
-PRICEDISC = PREZZO.SCONT ## Restituisce il prezzo di un titolo scontato dal valore nominale di € 100
-PRICEMAT = PREZZO.SCAD ## Restituisce il prezzo di un titolo dal valore nominale di € 100 che paga gli interessi alla scadenza
-PV = VA ## Restituisce il valore attuale di un investimento
-RATE = TASSO ## Restituisce il tasso di interesse per un periodo di un'annualità
-RECEIVED = RICEV.SCAD ## Restituisce l'ammontare ricevuto alla scadenza di un titolo interamente investito
-SLN = AMMORT.COST ## Restituisce l'ammortamento a quote costanti di un bene per un singolo periodo
-SYD = AMMORT.ANNUO ## Restituisce l'ammortamento a somma degli anni di un bene per un periodo specificato
-TBILLEQ = BOT.EQUIV ## Restituisce il rendimento equivalente ad un'obbligazione per un Buono ordinario del Tesoro
-TBILLPRICE = BOT.PREZZO ## Restituisce il prezzo di un Buono del Tesoro dal valore nominale di € 100
-TBILLYIELD = BOT.REND ## Restituisce il rendimento di un Buono del Tesoro
-VDB = AMMORT.VAR ## Restituisce l'ammortamento di un bene per un periodo specificato o parziale utilizzando il metodo a doppie quote proporzionali ai valori residui
-XIRR = TIR.X ## Restituisce il tasso di rendimento interno di un impiego di flussi di cassa
-XNPV = VAN.X ## Restituisce il valore attuale netto di un impiego di flussi di cassa non necessariamente periodici
-YIELD = REND ## Restituisce il rendimento di un titolo che frutta interessi periodici
-YIELDDISC = REND.TITOLI.SCONT ## Restituisce il rendimento annuale di un titolo scontato, ad esempio un Buono del Tesoro
-YIELDMAT = REND.SCAD ## Restituisce il rendimento annuo di un titolo che paga interessi alla scadenza
-
-
-##
-## Information functions Funzioni relative alle informazioni
-##
-CELL = CELLA ## Restituisce le informazioni sulla formattazione, la posizione o i contenuti di una cella
-ERROR.TYPE = ERRORE.TIPO ## Restituisce un numero che corrisponde a un tipo di errore
-INFO = INFO ## Restituisce le informazioni sull'ambiente operativo corrente
-ISBLANK = VAL.VUOTO ## Restituisce VERO se il valore è vuoto
-ISERR = VAL.ERR ## Restituisce VERO se il valore è un valore di errore qualsiasi tranne #N/D
-ISERROR = VAL.ERRORE ## Restituisce VERO se il valore è un valore di errore qualsiasi
-ISEVEN = VAL.PARI ## Restituisce VERO se il numero è pari
-ISLOGICAL = VAL.LOGICO ## Restituisce VERO se il valore è un valore logico
-ISNA = VAL.NON.DISP ## Restituisce VERO se il valore è un valore di errore #N/D
-ISNONTEXT = VAL.NON.TESTO ## Restituisce VERO se il valore non è in formato testo
-ISNUMBER = VAL.NUMERO ## Restituisce VERO se il valore è un numero
-ISODD = VAL.DISPARI ## Restituisce VERO se il numero è dispari
-ISREF = VAL.RIF ## Restituisce VERO se il valore è un riferimento
-ISTEXT = VAL.TESTO ## Restituisce VERO se il valore è in formato testo
-N = NUM ## Restituisce un valore convertito in numero
-NA = NON.DISP ## Restituisce il valore di errore #N/D
-TYPE = TIPO ## Restituisce un numero che indica il tipo di dati relativi a un valore
-
-
-##
-## Logical functions Funzioni logiche
-##
-AND = E ## Restituisce VERO se tutti gli argomenti sono VERO
-FALSE = FALSO ## Restituisce il valore logico FALSO
-IF = SE ## Specifica un test logico da eseguire
-IFERROR = SE.ERRORE ## Restituisce un valore specificato se una formula fornisce un errore come risultato; in caso contrario, restituisce il risultato della formula
-NOT = NON ## Inverte la logica degli argomenti
-OR = O ## Restituisce VERO se un argomento qualsiasi è VERO
-TRUE = VERO ## Restituisce il valore logico VERO
-
-
-##
-## Lookup and reference functions Funzioni di ricerca e di riferimento
-##
-ADDRESS = INDIRIZZO ## Restituisce un riferimento come testo in una singola cella di un foglio di lavoro
-AREAS = AREE ## Restituisce il numero di aree in un riferimento
-CHOOSE = SCEGLI ## Sceglie un valore da un elenco di valori
-COLUMN = RIF.COLONNA ## Restituisce il numero di colonna di un riferimento
-COLUMNS = COLONNE ## Restituisce il numero di colonne in un riferimento
-HLOOKUP = CERCA.ORIZZ ## Effettua una ricerca nella riga superiore di una matrice e restituisce il valore della cella specificata
-HYPERLINK = COLLEG.IPERTESTUALE ## Crea un collegamento che apre un documento memorizzato in un server di rete, una rete Intranet o Internet
-INDEX = INDICE ## Utilizza un indice per scegliere un valore da un riferimento o da una matrice
-INDIRECT = INDIRETTO ## Restituisce un riferimento specificato da un valore testo
-LOOKUP = CERCA ## Ricerca i valori in un vettore o in una matrice
-MATCH = CONFRONTA ## Ricerca i valori in un riferimento o in una matrice
-OFFSET = SCARTO ## Restituisce uno scarto di riferimento da un riferimento dato
-ROW = RIF.RIGA ## Restituisce il numero di riga di un riferimento
-ROWS = RIGHE ## Restituisce il numero delle righe in un riferimento
-RTD = DATITEMPOREALE ## Recupera dati in tempo reale da un programma che supporta l'automazione COM (automazione: Metodo per utilizzare gli oggetti di un'applicazione da un'altra applicazione o da un altro strumento di sviluppo. Precedentemente nota come automazione OLE, l'automazione è uno standard del settore e una caratteristica del modello COM (Component Object Model).)
-TRANSPOSE = MATR.TRASPOSTA ## Restituisce la trasposizione di una matrice
-VLOOKUP = CERCA.VERT ## Effettua una ricerca nella prima colonna di una matrice e si sposta attraverso la riga per restituire il valore di una cella
-
-
-##
-## Math and trigonometry functions Funzioni matematiche e trigonometriche
-##
-ABS = ASS ## Restituisce il valore assoluto di un numero.
-ACOS = ARCCOS ## Restituisce l'arcocoseno di un numero
-ACOSH = ARCCOSH ## Restituisce l'inverso del coseno iperbolico di un numero
-ASIN = ARCSEN ## Restituisce l'arcoseno di un numero
-ASINH = ARCSENH ## Restituisce l'inverso del seno iperbolico di un numero
-ATAN = ARCTAN ## Restituisce l'arcotangente di un numero
-ATAN2 = ARCTAN.2 ## Restituisce l'arcotangente delle coordinate x e y specificate
-ATANH = ARCTANH ## Restituisce l'inverso della tangente iperbolica di un numero
-CEILING = ARROTONDA.ECCESSO ## Arrotonda un numero per eccesso all'intero più vicino o al multiplo più vicino a peso
-COMBIN = COMBINAZIONE ## Restituisce il numero di combinazioni possibili per un numero assegnato di elementi
-COS = COS ## Restituisce il coseno dell'angolo specificato
-COSH = COSH ## Restituisce il coseno iperbolico di un numero
-DEGREES = GRADI ## Converte i radianti in gradi
-EVEN = PARI ## Arrotonda il valore assoluto di un numero per eccesso al più vicino intero pari
-EXP = ESP ## Restituisce il numero e elevato alla potenza di num
-FACT = FATTORIALE ## Restituisce il fattoriale di un numero
-FACTDOUBLE = FATT.DOPPIO ## Restituisce il fattoriale doppio di un numero
-FLOOR = ARROTONDA.DIFETTO ## Arrotonda un numero per difetto al multiplo più vicino a zero
-GCD = MCD ## Restituisce il massimo comune divisore
-INT = INT ## Arrotonda un numero per difetto al numero intero più vicino
-LCM = MCM ## Restituisce il minimo comune multiplo
-LN = LN ## Restituisce il logaritmo naturale di un numero
-LOG = LOG ## Restituisce il logaritmo di un numero in una specificata base
-LOG10 = LOG10 ## Restituisce il logaritmo in base 10 di un numero
-MDETERM = MATR.DETERM ## Restituisce il determinante di una matrice
-MINVERSE = MATR.INVERSA ## Restituisce l'inverso di una matrice
-MMULT = MATR.PRODOTTO ## Restituisce il prodotto di due matrici
-MOD = RESTO ## Restituisce il resto della divisione
-MROUND = ARROTONDA.MULTIPLO ## Restituisce un numero arrotondato al multiplo desiderato
-MULTINOMIAL = MULTINOMIALE ## Restituisce il multinomiale di un insieme di numeri
-ODD = DISPARI ## Arrotonda un numero per eccesso al più vicino intero dispari
-PI = PI.GRECO ## Restituisce il valore di pi greco
-POWER = POTENZA ## Restituisce il risultato di un numero elevato a potenza
-PRODUCT = PRODOTTO ## Moltiplica i suoi argomenti
-QUOTIENT = QUOZIENTE ## Restituisce la parte intera di una divisione
-RADIANS = RADIANTI ## Converte i gradi in radianti
-RAND = CASUALE ## Restituisce un numero casuale compreso tra 0 e 1
-RANDBETWEEN = CASUALE.TRA ## Restituisce un numero casuale compreso tra i numeri specificati
-ROMAN = ROMANO ## Restituisce il numero come numero romano sotto forma di testo
-ROUND = ARROTONDA ## Arrotonda il numero al numero di cifre specificato
-ROUNDDOWN = ARROTONDA.PER.DIF ## Arrotonda il valore assoluto di un numero per difetto
-ROUNDUP = ARROTONDA.PER.ECC ## Arrotonda il valore assoluto di un numero per eccesso
-SERIESSUM = SOMMA.SERIE ## Restituisce la somma di una serie di potenze in base alla formula
-SIGN = SEGNO ## Restituisce il segno di un numero
-SIN = SEN ## Restituisce il seno di un dato angolo
-SINH = SENH ## Restituisce il seno iperbolico di un numero
-SQRT = RADQ ## Restituisce una radice quadrata
-SQRTPI = RADQ.PI.GRECO ## Restituisce la radice quadrata di un numero (numero * pi greco)
-SUBTOTAL = SUBTOTALE ## Restituisce un subtotale in un elenco o in un database
-SUM = SOMMA ## Somma i suoi argomenti
-SUMIF = SOMMA.SE ## Somma le celle specificate da un dato criterio
-SUMIFS = SOMMA.PIÙ.SE ## Somma le celle in un intervallo che soddisfano più criteri
-SUMPRODUCT = MATR.SOMMA.PRODOTTO ## Restituisce la somma dei prodotti dei componenti corrispondenti della matrice
-SUMSQ = SOMMA.Q ## Restituisce la somma dei quadrati degli argomenti
-SUMX2MY2 = SOMMA.DIFF.Q ## Restituisce la somma della differenza dei quadrati dei corrispondenti elementi in due matrici
-SUMX2PY2 = SOMMA.SOMMA.Q ## Restituisce la somma della somma dei quadrati dei corrispondenti elementi in due matrici
-SUMXMY2 = SOMMA.Q.DIFF ## Restituisce la somma dei quadrati delle differenze dei corrispondenti elementi in due matrici
-TAN = TAN ## Restituisce la tangente di un numero
-TANH = TANH ## Restituisce la tangente iperbolica di un numero
-TRUNC = TRONCA ## Tronca la parte decimale di un numero
-
-
-##
-## Statistical functions Funzioni statistiche
-##
-AVEDEV = MEDIA.DEV ## Restituisce la media delle deviazioni assolute delle coordinate rispetto alla loro media
-AVERAGE = MEDIA ## Restituisce la media degli argomenti
-AVERAGEA = MEDIA.VALORI ## Restituisce la media degli argomenti, inclusi i numeri, il testo e i valori logici
-AVERAGEIF = MEDIA.SE ## Restituisce la media aritmetica di tutte le celle in un intervallo che soddisfano un determinato criterio
-AVERAGEIFS = MEDIA.PIÙ.SE ## Restituisce la media aritmetica di tutte le celle che soddisfano più criteri
-BETADIST = DISTRIB.BETA ## Restituisce la funzione di distribuzione cumulativa beta
-BETAINV = INV.BETA ## Restituisce l'inverso della funzione di distribuzione cumulativa per una distribuzione beta specificata
-BINOMDIST = DISTRIB.BINOM ## Restituisce la distribuzione binomiale per il termine individuale
-CHIDIST = DISTRIB.CHI ## Restituisce la probabilità a una coda per la distribuzione del chi quadrato
-CHIINV = INV.CHI ## Restituisce l'inverso della probabilità ad una coda per la distribuzione del chi quadrato
-CHITEST = TEST.CHI ## Restituisce il test per l'indipendenza
-CONFIDENCE = CONFIDENZA ## Restituisce l'intervallo di confidenza per una popolazione
-CORREL = CORRELAZIONE ## Restituisce il coefficiente di correlazione tra due insiemi di dati
-COUNT = CONTA.NUMERI ## Conta la quantità di numeri nell'elenco di argomenti
-COUNTA = CONTA.VALORI ## Conta il numero di valori nell'elenco di argomenti
-COUNTBLANK = CONTA.VUOTE ## Conta il numero di celle vuote all'interno di un intervallo
-COUNTIF = CONTA.SE ## Conta il numero di celle all'interno di un intervallo che soddisfa i criteri specificati
-COUNTIFS = CONTA.PIÙ.SE ## Conta il numero di celle in un intervallo che soddisfano più criteri.
-COVAR = COVARIANZA ## Calcola la covarianza, la media dei prodotti delle deviazioni accoppiate
-CRITBINOM = CRIT.BINOM ## Restituisce il più piccolo valore per il quale la distribuzione cumulativa binomiale risulta maggiore o uguale ad un valore di criterio
-DEVSQ = DEV.Q ## Restituisce la somma dei quadrati delle deviazioni
-EXPONDIST = DISTRIB.EXP ## Restituisce la distribuzione esponenziale
-FDIST = DISTRIB.F ## Restituisce la distribuzione di probabilità F
-FINV = INV.F ## Restituisce l'inverso della distribuzione della probabilità F
-FISHER = FISHER ## Restituisce la trasformazione di Fisher
-FISHERINV = INV.FISHER ## Restituisce l'inverso della trasformazione di Fisher
-FORECAST = PREVISIONE ## Restituisce i valori lungo una tendenza lineare
-FREQUENCY = FREQUENZA ## Restituisce la distribuzione di frequenza come matrice verticale
-FTEST = TEST.F ## Restituisce il risultato di un test F
-GAMMADIST = DISTRIB.GAMMA ## Restituisce la distribuzione gamma
-GAMMAINV = INV.GAMMA ## Restituisce l'inverso della distribuzione cumulativa gamma
-GAMMALN = LN.GAMMA ## Restituisce il logaritmo naturale della funzione gamma, G(x)
-GEOMEAN = MEDIA.GEOMETRICA ## Restituisce la media geometrica
-GROWTH = CRESCITA ## Restituisce i valori lungo una linea di tendenza esponenziale
-HARMEAN = MEDIA.ARMONICA ## Restituisce la media armonica
-HYPGEOMDIST = DISTRIB.IPERGEOM ## Restituisce la distribuzione ipergeometrica
-INTERCEPT = INTERCETTA ## Restituisce l'intercetta della retta di regressione lineare
-KURT = CURTOSI ## Restituisce la curtosi di un insieme di dati
-LARGE = GRANDE ## Restituisce il k-esimo valore più grande in un insieme di dati
-LINEST = REGR.LIN ## Restituisce i parametri di una tendenza lineare
-LOGEST = REGR.LOG ## Restituisce i parametri di una linea di tendenza esponenziale
-LOGINV = INV.LOGNORM ## Restituisce l'inverso di una distribuzione lognormale
-LOGNORMDIST = DISTRIB.LOGNORM ## Restituisce la distribuzione lognormale cumulativa
-MAX = MAX ## Restituisce il valore massimo in un elenco di argomenti
-MAXA = MAX.VALORI ## Restituisce il valore massimo in un elenco di argomenti, inclusi i numeri, il testo e i valori logici
-MEDIAN = MEDIANA ## Restituisce la mediana dei numeri specificati
-MIN = MIN ## Restituisce il valore minimo in un elenco di argomenti
-MINA = MIN.VALORI ## Restituisce il più piccolo valore in un elenco di argomenti, inclusi i numeri, il testo e i valori logici
-MODE = MODA ## Restituisce il valore più comune in un insieme di dati
-NEGBINOMDIST = DISTRIB.BINOM.NEG ## Restituisce la distribuzione binomiale negativa
-NORMDIST = DISTRIB.NORM ## Restituisce la distribuzione cumulativa normale
-NORMINV = INV.NORM ## Restituisce l'inverso della distribuzione cumulativa normale standard
-NORMSDIST = DISTRIB.NORM.ST ## Restituisce la distribuzione cumulativa normale standard
-NORMSINV = INV.NORM.ST ## Restituisce l'inverso della distribuzione cumulativa normale
-PEARSON = PEARSON ## Restituisce il coefficiente del momento di correlazione di Pearson
-PERCENTILE = PERCENTILE ## Restituisce il k-esimo dato percentile di valori in un intervallo
-PERCENTRANK = PERCENT.RANGO ## Restituisce il rango di un valore in un insieme di dati come percentuale
-PERMUT = PERMUTAZIONE ## Restituisce il numero delle permutazioni per un determinato numero di oggetti
-POISSON = POISSON ## Restituisce la distribuzione di Poisson
-PROB = PROBABILITÀ ## Calcola la probabilità che dei valori in un intervallo siano compresi tra due limiti
-QUARTILE = QUARTILE ## Restituisce il quartile di un insieme di dati
-RANK = RANGO ## Restituisce il rango di un numero in un elenco di numeri
-RSQ = RQ ## Restituisce la radice quadrata del coefficiente di momento di correlazione di Pearson
-SKEW = ASIMMETRIA ## Restituisce il grado di asimmetria di una distribuzione
-SLOPE = PENDENZA ## Restituisce la pendenza di una retta di regressione lineare
-SMALL = PICCOLO ## Restituisce il k-esimo valore più piccolo in un insieme di dati
-STANDARDIZE = NORMALIZZA ## Restituisce un valore normalizzato
-STDEV = DEV.ST ## Restituisce una stima della deviazione standard sulla base di un campione
-STDEVA = DEV.ST.VALORI ## Restituisce una stima della deviazione standard sulla base di un campione, inclusi i numeri, il testo e i valori logici
-STDEVP = DEV.ST.POP ## Calcola la deviazione standard sulla base di un'intera popolazione
-STDEVPA = DEV.ST.POP.VALORI ## Calcola la deviazione standard sulla base sull'intera popolazione, inclusi i numeri, il testo e i valori logici
-STEYX = ERR.STD.YX ## Restituisce l'errore standard del valore previsto per y per ogni valore x nella regressione
-TDIST = DISTRIB.T ## Restituisce la distribuzione t di Student
-TINV = INV.T ## Restituisce l'inversa della distribuzione t di Student
-TREND = TENDENZA ## Restituisce i valori lungo una linea di tendenza lineare
-TRIMMEAN = MEDIA.TRONCATA ## Restituisce la media della parte interna di un insieme di dati
-TTEST = TEST.T ## Restituisce la probabilità associata ad un test t di Student
-VAR = VAR ## Stima la varianza sulla base di un campione
-VARA = VAR.VALORI ## Stima la varianza sulla base di un campione, inclusi i numeri, il testo e i valori logici
-VARP = VAR.POP ## Calcola la varianza sulla base dell'intera popolazione
-VARPA = VAR.POP.VALORI ## Calcola la deviazione standard sulla base sull'intera popolazione, inclusi i numeri, il testo e i valori logici
-WEIBULL = WEIBULL ## Restituisce la distribuzione di Weibull
-ZTEST = TEST.Z ## Restituisce il valore di probabilità a una coda per un test z
-
-
-##
-## Text functions Funzioni di testo
-##
-ASC = ASC ## Modifica le lettere inglesi o il katakana a doppio byte all'interno di una stringa di caratteri in caratteri a singolo byte
-BAHTTEXT = BAHTTESTO ## Converte un numero in testo, utilizzando il formato valuta ß (baht)
-CHAR = CODICE.CARATT ## Restituisce il carattere specificato dal numero di codice
-CLEAN = LIBERA ## Elimina dal testo tutti i caratteri che non è possibile stampare
-CODE = CODICE ## Restituisce il codice numerico del primo carattere di una stringa di testo
-CONCATENATE = CONCATENA ## Unisce diversi elementi di testo in un unico elemento di testo
-DOLLAR = VALUTA ## Converte un numero in testo, utilizzando il formato valuta € (euro)
-EXACT = IDENTICO ## Verifica se due valori di testo sono uguali
-FIND = TROVA ## Rileva un valore di testo all'interno di un altro (distinzione tra maiuscole e minuscole)
-FINDB = TROVA.B ## Rileva un valore di testo all'interno di un altro (distinzione tra maiuscole e minuscole)
-FIXED = FISSO ## Formatta un numero come testo con un numero fisso di decimali
-JIS = ORDINAMENTO.JIS ## Modifica le lettere inglesi o i caratteri katakana a byte singolo all'interno di una stringa di caratteri in caratteri a byte doppio.
-LEFT = SINISTRA ## Restituisce il carattere più a sinistra di un valore di testo
-LEFTB = SINISTRA.B ## Restituisce il carattere più a sinistra di un valore di testo
-LEN = LUNGHEZZA ## Restituisce il numero di caratteri di una stringa di testo
-LENB = LUNB ## Restituisce il numero di caratteri di una stringa di testo
-LOWER = MINUSC ## Converte il testo in lettere minuscole
-MID = MEDIA ## Restituisce un numero specifico di caratteri di una stringa di testo a partire dalla posizione specificata
-MIDB = MEDIA.B ## Restituisce un numero specifico di caratteri di una stringa di testo a partire dalla posizione specificata
-PHONETIC = FURIGANA ## Estrae i caratteri fonetici (furigana) da una stringa di testo.
-PROPER = MAIUSC.INIZ ## Converte in maiuscolo la prima lettera di ogni parola di un valore di testo
-REPLACE = RIMPIAZZA ## Sostituisce i caratteri all'interno di un testo
-REPLACEB = SOSTITUISCI.B ## Sostituisce i caratteri all'interno di un testo
-REPT = RIPETI ## Ripete un testo per un dato numero di volte
-RIGHT = DESTRA ## Restituisce il carattere più a destra di un valore di testo
-RIGHTB = DESTRA.B ## Restituisce il carattere più a destra di un valore di testo
-SEARCH = RICERCA ## Rileva un valore di testo all'interno di un altro (non è sensibile alle maiuscole e minuscole)
-SEARCHB = CERCA.B ## Rileva un valore di testo all'interno di un altro (non è sensibile alle maiuscole e minuscole)
-SUBSTITUTE = SOSTITUISCI ## Sostituisce il nuovo testo al testo contenuto in una stringa
-T = T ## Converte gli argomenti in testo
-TEXT = TESTO ## Formatta un numero e lo converte in testo
-TRIM = ANNULLA.SPAZI ## Elimina gli spazi dal testo
-UPPER = MAIUSC ## Converte il testo in lettere maiuscole
-VALUE = VALORE ## Converte un argomento di testo in numero
diff --git a/admin/survey/excel/PHPExcel/locale/nl/config b/admin/survey/excel/PHPExcel/locale/nl/config
deleted file mode 100644
index d56b38f..0000000
--- a/admin/survey/excel/PHPExcel/locale/nl/config
+++ /dev/null
@@ -1,47 +0,0 @@
-##
-## PHPExcel
-##
-## Copyright (c) 2006 - 2011 PHPExcel
-##
-## This library is free software; you can redistribute it and/or
-## modify it under the terms of the GNU Lesser General Public
-## License as published by the Free Software Foundation; either
-## version 2.1 of the License, or (at your option) any later version.
-##
-## This library is distributed in the hope that it will be useful,
-## but WITHOUT ANY WARRANTY; without even the implied warranty of
-## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-## Lesser General Public License for more details.
-##
-## You should have received a copy of the GNU Lesser General Public
-## License along with this library; if not, write to the Free Software
-## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-##
-## @category PHPExcel
-## @package PHPExcel_Settings
-## @copyright Copyright (c) 2006 - 2011 PHPExcel (http://www.codeplex.com/PHPExcel)
-## @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
-## @version 1.7.8, 2012-10-12
-##
-##
-
-
-ArgumentSeparator = ;
-
-
-##
-## (For future use)
-##
-currencySymbol = €
-
-
-##
-## Excel Error Codes (For future use)
-##
-NULL = #LEEG!
-DIV0 = #DEEL/0!
-VALUE = #WAARDE!
-REF = #VERW!
-NAME = #NAAM?
-NUM = #GETAL!
-NA = #N/B
diff --git a/admin/survey/excel/PHPExcel/locale/nl/functions b/admin/survey/excel/PHPExcel/locale/nl/functions
deleted file mode 100644
index 6e94121..0000000
--- a/admin/survey/excel/PHPExcel/locale/nl/functions
+++ /dev/null
@@ -1,438 +0,0 @@
-##
-## PHPExcel
-##
-## Copyright (c) 2006 - 2011 PHPExcel
-##
-## This library is free software; you can redistribute it and/or
-## modify it under the terms of the GNU Lesser General Public
-## License as published by the Free Software Foundation; either
-## version 2.1 of the License, or (at your option) any later version.
-##
-## This library is distributed in the hope that it will be useful,
-## but WITHOUT ANY WARRANTY; without even the implied warranty of
-## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-## Lesser General Public License for more details.
-##
-## You should have received a copy of the GNU Lesser General Public
-## License along with this library; if not, write to the Free Software
-## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-##
-## @category PHPExcel
-## @package PHPExcel_Calculation
-## @copyright Copyright (c) 2006 - 2011 PHPExcel (http://www.codeplex.com/PHPExcel)
-## @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
-## @version 1.7.8, 2012-10-12
-##
-## Data in this file derived from http://www.piuha.fi/excel-function-name-translation/
-##
-##
-
-
-##
-## Add-in and Automation functions Automatiseringsfuncties en functies in invoegtoepassingen
-##
-GETPIVOTDATA = DRAAITABEL.OPHALEN ## Geeft gegevens uit een draaitabelrapport als resultaat
-
-
-##
-## Cube functions Kubusfuncties
-##
-CUBEKPIMEMBER = KUBUSKPILID ## Retourneert de naam, eigenschap en waarde van een KPI (prestatie-indicator) en geeft de naam en de eigenschap in de cel weer. Een KPI is een meetbare waarde, zoals de maandelijkse brutowinst of de omzet per kwartaal per werknemer, die wordt gebruikt om de prestaties van een organisatie te bewaken
-CUBEMEMBER = KUBUSLID ## Retourneert een lid of tupel in een kubushiërarchie. Wordt gebruikt om te controleren of het lid of de tupel in de kubus aanwezig is
-CUBEMEMBERPROPERTY = KUBUSLIDEIGENSCHAP ## Retourneert de waarde van een lideigenschap in de kubus. Wordt gebruikt om te controleren of de lidnaam in de kubus bestaat en retourneert de opgegeven eigenschap voor dit lid
-CUBERANKEDMEMBER = KUBUSGERANGCHIKTLID ## Retourneert het zoveelste, gerangschikte lid in een set. Wordt gebruikt om een of meer elementen in een set te retourneren, zoals de tien beste verkopers of de tien beste studenten
-CUBESET = KUBUSSET ## Definieert een berekende set leden of tupels door een ingestelde expressie naar de kubus op de server te sturen, alwaar de set wordt gemaakt en vervolgens wordt geretourneerd naar Microsoft Office Excel
-CUBESETCOUNT = KUBUSSETAANTAL ## Retourneert het aantal onderdelen in een set
-CUBEVALUE = KUBUSWAARDE ## Retourneert een samengestelde waarde van een kubus
-
-
-##
-## Database functions Databasefuncties
-##
-DAVERAGE = DBGEMIDDELDE ## Berekent de gemiddelde waarde in geselecteerde databasegegevens
-DCOUNT = DBAANTAL ## Telt de cellen met getallen in een database
-DCOUNTA = DBAANTALC ## Telt de niet-lege cellen in een database
-DGET = DBLEZEN ## Retourneert één record dat voldoet aan de opgegeven criteria uit een database
-DMAX = DBMAX ## Retourneert de maximumwaarde in de geselecteerde databasegegevens
-DMIN = DBMIN ## Retourneert de minimumwaarde in de geselecteerde databasegegevens
-DPRODUCT = DBPRODUCT ## Vermenigvuldigt de waarden in een bepaald veld van de records die voldoen aan de criteria in een database
-DSTDEV = DBSTDEV ## Maakt een schatting van de standaarddeviatie op basis van een steekproef uit geselecteerde databasegegevens
-DSTDEVP = DBSTDEVP ## Berekent de standaarddeviatie op basis van de volledige populatie van geselecteerde databasegegevens
-DSUM = DBSOM ## Telt de getallen uit een kolom records in de database op die voldoen aan de criteria
-DVAR = DBVAR ## Maakt een schatting van de variantie op basis van een steekproef uit geselecteerde databasegegevens
-DVARP = DBVARP ## Berekent de variantie op basis van de volledige populatie van geselecteerde databasegegevens
-
-
-##
-## Date and time functions Datum- en tijdfuncties
-##
-DATE = DATUM ## Geeft als resultaat het seriële getal van een opgegeven datum
-DATEVALUE = DATUMWAARDE ## Converteert een datum in de vorm van tekst naar een serieel getal
-DAY = DAG ## Converteert een serieel getal naar een dag van de maand
-DAYS360 = DAGEN360 ## Berekent het aantal dagen tussen twee datums op basis van een jaar met 360 dagen
-EDATE = ZELFDE.DAG ## Geeft als resultaat het seriële getal van een datum die het opgegeven aantal maanden voor of na de begindatum ligt
-EOMONTH = LAATSTE.DAG ## Geeft als resultaat het seriële getal van de laatste dag van de maand voor of na het opgegeven aantal maanden
-HOUR = UUR ## Converteert een serieel getal naar uren
-MINUTE = MINUUT ## Converteert een serieel naar getal minuten
-MONTH = MAAND ## Converteert een serieel getal naar een maand
-NETWORKDAYS = NETTO.WERKDAGEN ## Geeft als resultaat het aantal hele werkdagen tussen twee datums
-NOW = NU ## Geeft als resultaat het seriële getal van de huidige datum en tijd
-SECOND = SECONDE ## Converteert een serieel getal naar seconden
-TIME = TIJD ## Geeft als resultaat het seriële getal van een bepaald tijdstip
-TIMEVALUE = TIJDWAARDE ## Converteert de tijd in de vorm van tekst naar een serieel getal
-TODAY = VANDAAG ## Geeft als resultaat het seriële getal van de huidige datum
-WEEKDAY = WEEKDAG ## Converteert een serieel getal naar een weekdag
-WEEKNUM = WEEKNUMMER ## Converteert een serieel getal naar een weeknummer
-WORKDAY = WERKDAG ## Geeft als resultaat het seriële getal van de datum voor of na een bepaald aantal werkdagen
-YEAR = JAAR ## Converteert een serieel getal naar een jaar
-YEARFRAC = JAAR.DEEL ## Geeft als resultaat het gedeelte van het jaar, uitgedrukt in het aantal hele dagen tussen begindatum en einddatum
-
-
-##
-## Engineering functions Technische functies
-##
-BESSELI = BESSEL.Y ## Geeft als resultaat de gewijzigde Bessel-functie In(x)
-BESSELJ = BESSEL.J ## Geeft als resultaat de Bessel-functie Jn(x)
-BESSELK = BESSEL.K ## Geeft als resultaat de gewijzigde Bessel-functie Kn(x)
-BESSELY = BESSEL.Y ## Geeft als resultaat de gewijzigde Bessel-functie Yn(x)
-BIN2DEC = BIN.N.DEC ## Converteert een binair getal naar een decimaal getal
-BIN2HEX = BIN.N.HEX ## Converteert een binair getal naar een hexadecimaal getal
-BIN2OCT = BIN.N.OCT ## Converteert een binair getal naar een octaal getal
-COMPLEX = COMPLEX ## Converteert reële en imaginaire coëfficiënten naar een complex getal
-CONVERT = CONVERTEREN ## Converteert een getal in de ene maateenheid naar een getal in een andere maateenheid
-DEC2BIN = DEC.N.BIN ## Converteert een decimaal getal naar een binair getal
-DEC2HEX = DEC.N.HEX ## Converteert een decimaal getal naar een hexadecimaal getal
-DEC2OCT = DEC.N.OCT ## Converteert een decimaal getal naar een octaal getal
-DELTA = DELTA ## Test of twee waarden gelijk zijn
-ERF = FOUTFUNCTIE ## Geeft als resultaat de foutfunctie
-ERFC = FOUT.COMPLEMENT ## Geeft als resultaat de complementaire foutfunctie
-GESTEP = GROTER.DAN ## Test of een getal groter is dan de drempelwaarde
-HEX2BIN = HEX.N.BIN ## Converteert een hexadecimaal getal naar een binair getal
-HEX2DEC = HEX.N.DEC ## Converteert een hexadecimaal getal naar een decimaal getal
-HEX2OCT = HEX.N.OCT ## Converteert een hexadecimaal getal naar een octaal getal
-IMABS = C.ABS ## Geeft als resultaat de absolute waarde (modulus) van een complex getal
-IMAGINARY = C.IM.DEEL ## Geeft als resultaat de imaginaire coëfficiënt van een complex getal
-IMARGUMENT = C.ARGUMENT ## Geeft als resultaat het argument thèta, een hoek uitgedrukt in radialen
-IMCONJUGATE = C.TOEGEVOEGD ## Geeft als resultaat het complexe toegevoegde getal van een complex getal
-IMCOS = C.COS ## Geeft als resultaat de cosinus van een complex getal
-IMDIV = C.QUOTIENT ## Geeft als resultaat het quotiënt van twee complexe getallen
-IMEXP = C.EXP ## Geeft als resultaat de exponent van een complex getal
-IMLN = C.LN ## Geeft als resultaat de natuurlijke logaritme van een complex getal
-IMLOG10 = C.LOG10 ## Geeft als resultaat de logaritme met grondtal 10 van een complex getal
-IMLOG2 = C.LOG2 ## Geeft als resultaat de logaritme met grondtal 2 van een complex getal
-IMPOWER = C.MACHT ## Geeft als resultaat een complex getal dat is verheven tot de macht van een geheel getal
-IMPRODUCT = C.PRODUCT ## Geeft als resultaat het product van complexe getallen
-IMREAL = C.REEEL.DEEL ## Geeft als resultaat de reële coëfficiënt van een complex getal
-IMSIN = C.SIN ## Geeft als resultaat de sinus van een complex getal
-IMSQRT = C.WORTEL ## Geeft als resultaat de vierkantswortel van een complex getal
-IMSUB = C.VERSCHIL ## Geeft als resultaat het verschil tussen twee complexe getallen
-IMSUM = C.SOM ## Geeft als resultaat de som van complexe getallen
-OCT2BIN = OCT.N.BIN ## Converteert een octaal getal naar een binair getal
-OCT2DEC = OCT.N.DEC ## Converteert een octaal getal naar een decimaal getal
-OCT2HEX = OCT.N.HEX ## Converteert een octaal getal naar een hexadecimaal getal
-
-
-##
-## Financial functions Financiële functies
-##
-ACCRINT = SAMENG.RENTE ## Berekent de opgelopen rente voor een waardepapier waarvan de rente periodiek wordt uitgekeerd
-ACCRINTM = SAMENG.RENTE.V ## Berekent de opgelopen rente voor een waardepapier waarvan de rente op de vervaldatum wordt uitgekeerd
-AMORDEGRC = AMORDEGRC ## Geeft als resultaat de afschrijving voor elke boekingsperiode door een afschrijvingscoëfficiënt toe te passen
-AMORLINC = AMORLINC ## Berekent de afschrijving voor elke boekingsperiode
-COUPDAYBS = COUP.DAGEN.BB ## Berekent het aantal dagen vanaf het begin van de coupontermijn tot de stortingsdatum
-COUPDAYS = COUP.DAGEN ## Geeft als resultaat het aantal dagen in de coupontermijn waarin de stortingsdatum valt
-COUPDAYSNC = COUP.DAGEN.VV ## Geeft als resultaat het aantal dagen vanaf de stortingsdatum tot de volgende couponvervaldatum
-COUPNCD = COUP.DATUM.NB ## Geeft als resultaat de volgende coupondatum na de stortingsdatum
-COUPNUM = COUP.AANTAL ## Geeft als resultaat het aantal coupons dat nog moet worden uitbetaald tussen de stortingsdatum en de vervaldatum
-COUPPCD = COUP.DATUM.VB ## Geeft als resultaat de vorige couponvervaldatum vóór de stortingsdatum
-CUMIPMT = CUM.RENTE ## Geeft als resultaat de cumulatieve rente die tussen twee termijnen is uitgekeerd
-CUMPRINC = CUM.HOOFDSOM ## Geeft als resultaat de cumulatieve hoofdsom van een lening die tussen twee termijnen is terugbetaald
-DB = DB ## Geeft als resultaat de afschrijving van activa voor een bepaalde periode met behulp van de 'fixed declining balance'-methode
-DDB = DDB ## Geeft als resultaat de afschrijving van activa over een bepaalde termijn met behulp van de 'double declining balance'-methode of een andere methode die u opgeeft
-DISC = DISCONTO ## Geeft als resultaat het discontopercentage voor een waardepapier
-DOLLARDE = EURO.DE ## Converteert een prijs in euro's, uitgedrukt in een breuk, naar een prijs in euro's, uitgedrukt in een decimaal getal
-DOLLARFR = EURO.BR ## Converteert een prijs in euro's, uitgedrukt in een decimaal getal, naar een prijs in euro's, uitgedrukt in een breuk
-DURATION = DUUR ## Geeft als resultaat de gewogen gemiddelde looptijd voor een waardepapier met periodieke rentebetalingen
-EFFECT = EFFECT.RENTE ## Geeft als resultaat het effectieve jaarlijkse rentepercentage
-FV = TW ## Geeft als resultaat de toekomstige waarde van een investering
-FVSCHEDULE = TOEK.WAARDE2 ## Geeft als resultaat de toekomstige waarde van een bepaalde hoofdsom na het toepassen van een reeks samengestelde rentepercentages
-INTRATE = RENTEPERCENTAGE ## Geeft als resultaat het rentepercentage voor een volgestort waardepapier
-IPMT = IBET ## Geeft als resultaat de te betalen rente voor een investering over een bepaalde termijn
-IRR = IR ## Geeft als resultaat de interne rentabiliteit voor een reeks cashflows
-ISPMT = ISBET ## Geeft als resultaat de rente die is betaald tijdens een bepaalde termijn van een investering
-MDURATION = AANG.DUUR ## Geeft als resultaat de aangepaste Macauley-looptijd voor een waardepapier, aangenomen dat de nominale waarde € 100 bedraagt
-MIRR = GIR ## Geeft als resultaat de interne rentabiliteit voor een serie cashflows, waarbij voor betalingen een ander rentepercentage geldt dan voor inkomsten
-NOMINAL = NOMINALE.RENTE ## Geeft als resultaat het nominale jaarlijkse rentepercentage
-NPER = NPER ## Geeft als resultaat het aantal termijnen van een investering
-NPV = NHW ## Geeft als resultaat de netto huidige waarde van een investering op basis van een reeks periodieke cashflows en een discontopercentage
-ODDFPRICE = AFW.ET.PRIJS ## Geeft als resultaat de prijs per € 100 nominale waarde voor een waardepapier met een afwijkende eerste termijn
-ODDFYIELD = AFW.ET.REND ## Geeft als resultaat het rendement voor een waardepapier met een afwijkende eerste termijn
-ODDLPRICE = AFW.LT.PRIJS ## Geeft als resultaat de prijs per € 100 nominale waarde voor een waardepapier met een afwijkende laatste termijn
-ODDLYIELD = AFW.LT.REND ## Geeft als resultaat het rendement voor een waardepapier met een afwijkende laatste termijn
-PMT = BET ## Geeft als resultaat de periodieke betaling voor een annuïteit
-PPMT = PBET ## Geeft als resultaat de afbetaling op de hoofdsom voor een bepaalde termijn
-PRICE = PRIJS.NOM ## Geeft als resultaat de prijs per € 100 nominale waarde voor een waardepapier waarvan de rente periodiek wordt uitgekeerd
-PRICEDISC = PRIJS.DISCONTO ## Geeft als resultaat de prijs per € 100 nominale waarde voor een verdisconteerd waardepapier
-PRICEMAT = PRIJS.VERVALDAG ## Geeft als resultaat de prijs per € 100 nominale waarde voor een waardepapier waarvan de rente wordt uitgekeerd op de vervaldatum
-PV = HW ## Geeft als resultaat de huidige waarde van een investering
-RATE = RENTE ## Geeft als resultaat het periodieke rentepercentage voor een annuïteit
-RECEIVED = OPBRENGST ## Geeft als resultaat het bedrag dat op de vervaldatum wordt uitgekeerd voor een volgestort waardepapier
-SLN = LIN.AFSCHR ## Geeft als resultaat de lineaire afschrijving van activa over één termijn
-SYD = SYD ## Geeft als resultaat de afschrijving van activa over een bepaalde termijn met behulp van de 'Sum-Of-Years-Digits'-methode
-TBILLEQ = SCHATK.OBL ## Geeft als resultaat het rendement op schatkistpapier, dat op dezelfde manier wordt berekend als het rendement op obligaties
-TBILLPRICE = SCHATK.PRIJS ## Bepaalt de prijs per € 100 nominale waarde voor schatkistpapier
-TBILLYIELD = SCHATK.REND ## Berekent het rendement voor schatkistpapier
-VDB = VDB ## Geeft als resultaat de afschrijving van activa over een gehele of gedeeltelijke termijn met behulp van de 'declining balance'-methode
-XIRR = IR.SCHEMA ## Berekent de interne rentabiliteit voor een betalingsschema van cashflows
-XNPV = NHW2 ## Berekent de huidige nettowaarde voor een betalingsschema van cashflows
-YIELD = RENDEMENT ## Geeft als resultaat het rendement voor een waardepapier waarvan de rente periodiek wordt uitgekeerd
-YIELDDISC = REND.DISCONTO ## Geeft als resultaat het jaarlijkse rendement voor een verdisconteerd waardepapier, bijvoorbeeld schatkistpapier
-YIELDMAT = REND.VERVAL ## Geeft als resultaat het jaarlijkse rendement voor een waardepapier waarvan de rente wordt uitgekeerd op de vervaldatum
-
-
-##
-## Information functions Informatiefuncties
-##
-CELL = CEL ## Geeft als resultaat informatie over de opmaak, locatie of inhoud van een cel
-ERROR.TYPE = TYPE.FOUT ## Geeft als resultaat een getal dat overeenkomt met een van de foutwaarden van Microsoft Excel
-INFO = INFO ## Geeft als resultaat informatie over de huidige besturingsomgeving
-ISBLANK = ISLEEG ## Geeft als resultaat WAAR als de waarde leeg is
-ISERR = ISFOUT2 ## Geeft als resultaat WAAR als de waarde een foutwaarde is, met uitzondering van #N/B
-ISERROR = ISFOUT ## Geeft als resultaat WAAR als de waarde een foutwaarde is
-ISEVEN = IS.EVEN ## Geeft als resultaat WAAR als het getal even is
-ISLOGICAL = ISLOGISCH ## Geeft als resultaat WAAR als de waarde een logische waarde is
-ISNA = ISNB ## Geeft als resultaat WAAR als de waarde de foutwaarde #N/B is
-ISNONTEXT = ISGEENTEKST ## Geeft als resultaat WAAR als de waarde geen tekst is
-ISNUMBER = ISGETAL ## Geeft als resultaat WAAR als de waarde een getal is
-ISODD = IS.ONEVEN ## Geeft als resultaat WAAR als het getal oneven is
-ISREF = ISVERWIJZING ## Geeft als resultaat WAAR als de waarde een verwijzing is
-ISTEXT = ISTEKST ## Geeft als resultaat WAAR als de waarde tekst is
-N = N ## Geeft als resultaat een waarde die is geconverteerd naar een getal
-NA = NB ## Geeft als resultaat de foutwaarde #N/B
-TYPE = TYPE ## Geeft als resultaat een getal dat het gegevenstype van een waarde aangeeft
-
-
-##
-## Logical functions Logische functies
-##
-AND = EN ## Geeft als resultaat WAAR als alle argumenten WAAR zijn
-FALSE = ONWAAR ## Geeft als resultaat de logische waarde ONWAAR
-IF = ALS ## Geeft een logische test aan
-IFERROR = ALS.FOUT ## Retourneert een waarde die u opgeeft als een formule een fout oplevert, anders wordt het resultaat van de formule geretourneerd
-NOT = NIET ## Keert de logische waarde van het argument om
-OR = OF ## Geeft als resultaat WAAR als minimaal een van de argumenten WAAR is
-TRUE = WAAR ## Geeft als resultaat de logische waarde WAAR
-
-
-##
-## Lookup and reference functions Zoek- en verwijzingsfuncties
-##
-ADDRESS = ADRES ## Geeft als resultaat een verwijzing, in de vorm van tekst, naar één bepaalde cel in een werkblad
-AREAS = BEREIKEN ## Geeft als resultaat het aantal bereiken in een verwijzing
-CHOOSE = KIEZEN ## Kiest een waarde uit een lijst met waarden
-COLUMN = KOLOM ## Geeft als resultaat het kolomnummer van een verwijzing
-COLUMNS = KOLOMMEN ## Geeft als resultaat het aantal kolommen in een verwijzing
-HLOOKUP = HORIZ.ZOEKEN ## Zoekt in de bovenste rij van een matrix naar een bepaalde waarde en geeft als resultaat de gevonden waarde in de opgegeven cel
-HYPERLINK = HYPERLINK ## Maakt een snelkoppeling of een sprong waarmee een document wordt geopend dat is opgeslagen op een netwerkserver, een intranet of op internet
-INDEX = INDEX ## Kiest met een index een waarde uit een verwijzing of een matrix
-INDIRECT = INDIRECT ## Geeft als resultaat een verwijzing die wordt aangegeven met een tekstwaarde
-LOOKUP = ZOEKEN ## Zoekt naar bepaalde waarden in een vector of een matrix
-MATCH = VERGELIJKEN ## Zoekt naar bepaalde waarden in een verwijzing of een matrix
-OFFSET = VERSCHUIVING ## Geeft als resultaat een nieuwe verwijzing die is verschoven ten opzichte van een bepaalde verwijzing
-ROW = RIJ ## Geeft als resultaat het rijnummer van een verwijzing
-ROWS = RIJEN ## Geeft als resultaat het aantal rijen in een verwijzing
-RTD = RTG ## Haalt realtimegegevens op uit een programma dat COM-automatisering (automatisering: een methode waarmee de ene toepassing objecten van een andere toepassing of ontwikkelprogramma kan besturen. Automatisering werd vroeger OLE-automatisering genoemd. Automatisering is een industrienorm die deel uitmaakt van het Component Object Model (COM).) ondersteunt
-TRANSPOSE = TRANSPONEREN ## Geeft als resultaat de getransponeerde van een matrix
-VLOOKUP = VERT.ZOEKEN ## Zoekt in de meest linkse kolom van een matrix naar een bepaalde waarde en geeft als resultaat de waarde in de opgegeven cel
-
-
-##
-## Math and trigonometry functions Wiskundige en trigonometrische functies
-##
-ABS = ABS ## Geeft als resultaat de absolute waarde van een getal
-ACOS = BOOGCOS ## Geeft als resultaat de boogcosinus van een getal
-ACOSH = BOOGCOSH ## Geeft als resultaat de inverse cosinus hyperbolicus van een getal
-ASIN = BOOGSIN ## Geeft als resultaat de boogsinus van een getal
-ASINH = BOOGSINH ## Geeft als resultaat de inverse sinus hyperbolicus van een getal
-ATAN = BOOGTAN ## Geeft als resultaat de boogtangens van een getal
-ATAN2 = BOOGTAN2 ## Geeft als resultaat de boogtangens van de x- en y-coördinaten
-ATANH = BOOGTANH ## Geeft als resultaat de inverse tangens hyperbolicus van een getal
-CEILING = AFRONDEN.BOVEN ## Rondt de absolute waarde van een getal naar boven af op het dichtstbijzijnde gehele getal of het dichtstbijzijnde significante veelvoud
-COMBIN = COMBINATIES ## Geeft als resultaat het aantal combinaties voor een bepaald aantal objecten
-COS = COS ## Geeft als resultaat de cosinus van een getal
-COSH = COSH ## Geeft als resultaat de cosinus hyperbolicus van een getal
-DEGREES = GRADEN ## Converteert radialen naar graden
-EVEN = EVEN ## Rondt het getal af op het dichtstbijzijnde gehele even getal
-EXP = EXP ## Verheft e tot de macht van een bepaald getal
-FACT = FACULTEIT ## Geeft als resultaat de faculteit van een getal
-FACTDOUBLE = DUBBELE.FACULTEIT ## Geeft als resultaat de dubbele faculteit van een getal
-FLOOR = AFRONDEN.BENEDEN ## Rondt de absolute waarde van een getal naar beneden af
-GCD = GGD ## Geeft als resultaat de grootste gemene deler
-INT = INTEGER ## Rondt een getal naar beneden af op het dichtstbijzijnde gehele getal
-LCM = KGV ## Geeft als resultaat het kleinste gemene veelvoud
-LN = LN ## Geeft als resultaat de natuurlijke logaritme van een getal
-LOG = LOG ## Geeft als resultaat de logaritme met het opgegeven grondtal van een getal
-LOG10 = LOG10 ## Geeft als resultaat de logaritme met grondtal 10 van een getal
-MDETERM = DETERMINANTMAT ## Geeft als resultaat de determinant van een matrix
-MINVERSE = INVERSEMAT ## Geeft als resultaat de inverse van een matrix
-MMULT = PRODUCTMAT ## Geeft als resultaat het product van twee matrices
-MOD = REST ## Geeft als resultaat het restgetal van een deling
-MROUND = AFRONDEN.N.VEELVOUD ## Geeft als resultaat een getal afgerond op het gewenste veelvoud
-MULTINOMIAL = MULTINOMIAAL ## Geeft als resultaat de multinomiaalcoëfficiënt van een reeks getallen
-ODD = ONEVEN ## Rondt de absolute waarde van het getal naar boven af op het dichtstbijzijnde gehele oneven getal
-PI = PI ## Geeft als resultaat de waarde van pi
-POWER = MACHT ## Verheft een getal tot een macht
-PRODUCT = PRODUCT ## Vermenigvuldigt de argumenten met elkaar
-QUOTIENT = QUOTIENT ## Geeft als resultaat de uitkomst van een deling als geheel getal
-RADIANS = RADIALEN ## Converteert graden naar radialen
-RAND = ASELECT ## Geeft als resultaat een willekeurig getal tussen 0 en 1
-RANDBETWEEN = ASELECTTUSSEN ## Geeft een willekeurig getal tussen de getallen die u hebt opgegeven
-ROMAN = ROMEINS ## Converteert een Arabisch getal naar een Romeins getal en geeft het resultaat weer in de vorm van tekst
-ROUND = AFRONDEN ## Rondt een getal af op het opgegeven aantal decimalen
-ROUNDDOWN = AFRONDEN.NAAR.BENEDEN ## Rondt de absolute waarde van een getal naar beneden af
-ROUNDUP = AFRONDEN.NAAR.BOVEN ## Rondt de absolute waarde van een getal naar boven af
-SERIESSUM = SOM.MACHTREEKS ## Geeft als resultaat de som van een machtreeks die is gebaseerd op de formule
-SIGN = POS.NEG ## Geeft als resultaat het teken van een getal
-SIN = SIN ## Geeft als resultaat de sinus van de opgegeven hoek
-SINH = SINH ## Geeft als resultaat de sinus hyperbolicus van een getal
-SQRT = WORTEL ## Geeft als resultaat de positieve vierkantswortel van een getal
-SQRTPI = WORTEL.PI ## Geeft als resultaat de vierkantswortel van (getal * pi)
-SUBTOTAL = SUBTOTAAL ## Geeft als resultaat een subtotaal voor een bereik
-SUM = SOM ## Telt de argumenten op
-SUMIF = SOM.ALS ## Telt de getallen bij elkaar op die voldoen aan een bepaald criterium
-SUMIFS = SOMMEN.ALS ## Telt de cellen in een bereik op die aan meerdere criteria voldoen
-SUMPRODUCT = SOMPRODUCT ## Geeft als resultaat de som van de producten van de corresponderende matrixelementen
-SUMSQ = KWADRATENSOM ## Geeft als resultaat de som van de kwadraten van de argumenten
-SUMX2MY2 = SOM.X2MINY2 ## Geeft als resultaat de som van het verschil tussen de kwadraten van corresponderende waarden in twee matrices
-SUMX2PY2 = SOM.X2PLUSY2 ## Geeft als resultaat de som van de kwadratensom van corresponderende waarden in twee matrices
-SUMXMY2 = SOM.XMINY.2 ## Geeft als resultaat de som van de kwadraten van de verschillen tussen de corresponderende waarden in twee matrices
-TAN = TAN ## Geeft als resultaat de tangens van een getal
-TANH = TANH ## Geeft als resultaat de tangens hyperbolicus van een getal
-TRUNC = GEHEEL ## Kapt een getal af tot een geheel getal
-
-
-##
-## Statistical functions Statistische functies
-##
-AVEDEV = GEM.DEVIATIE ## Geeft als resultaat het gemiddelde van de absolute deviaties van gegevenspunten ten opzichte van hun gemiddelde waarde
-AVERAGE = GEMIDDELDE ## Geeft als resultaat het gemiddelde van de argumenten
-AVERAGEA = GEMIDDELDEA ## Geeft als resultaat het gemiddelde van de argumenten, inclusief getallen, tekst en logische waarden
-AVERAGEIF = GEMIDDELDE.ALS ## Geeft het gemiddelde (rekenkundig gemiddelde) als resultaat van alle cellen in een bereik die voldoen aan de opgegeven criteria
-AVERAGEIFS = GEMIDDELDEN.ALS ## Geeft het gemiddelde (rekenkundig gemiddelde) als resultaat van alle cellen die aan meerdere criteria voldoen
-BETADIST = BETA.VERD ## Geeft als resultaat de cumulatieve bèta-verdelingsfunctie
-BETAINV = BETA.INV ## Geeft als resultaat de inverse van de cumulatieve verdelingsfunctie voor een gegeven bèta-verdeling
-BINOMDIST = BINOMIALE.VERD ## Geeft als resultaat de binomiale verdeling
-CHIDIST = CHI.KWADRAAT ## Geeft als resultaat de eenzijdige kans van de chi-kwadraatverdeling
-CHIINV = CHI.KWADRAAT.INV ## Geeft als resultaat de inverse van een eenzijdige kans van de chi-kwadraatverdeling
-CHITEST = CHI.TOETS ## Geeft als resultaat de onafhankelijkheidstoets
-CONFIDENCE = BETROUWBAARHEID ## Geeft als resultaat het betrouwbaarheidsinterval van een gemiddelde waarde voor de elementen van een populatie
-CORREL = CORRELATIE ## Geeft als resultaat de correlatiecoëfficiënt van twee gegevensverzamelingen
-COUNT = AANTAL ## Telt het aantal getallen in de argumentenlijst
-COUNTA = AANTALARG ## Telt het aantal waarden in de argumentenlijst
-COUNTBLANK = AANTAL.LEGE.CELLEN ## Telt het aantal lege cellen in een bereik
-COUNTIF = AANTAL.ALS ## Telt in een bereik het aantal cellen die voldoen aan een bepaald criterium
-COUNTIFS = AANTALLEN.ALS ## Telt in een bereik het aantal cellen die voldoen aan meerdere criteria
-COVAR = COVARIANTIE ## Geeft als resultaat de covariantie, het gemiddelde van de producten van de gepaarde deviaties
-CRITBINOM = CRIT.BINOM ## Geeft als resultaat de kleinste waarde waarvoor de binomiale verdeling kleiner is dan of gelijk is aan het criterium
-DEVSQ = DEV.KWAD ## Geeft als resultaat de som van de deviaties in het kwadraat
-EXPONDIST = EXPON.VERD ## Geeft als resultaat de exponentiële verdeling
-FDIST = F.VERDELING ## Geeft als resultaat de F-verdeling
-FINV = F.INVERSE ## Geeft als resultaat de inverse van de F-verdeling
-FISHER = FISHER ## Geeft als resultaat de Fisher-transformatie
-FISHERINV = FISHER.INV ## Geeft als resultaat de inverse van de Fisher-transformatie
-FORECAST = VOORSPELLEN ## Geeft als resultaat een waarde op basis van een lineaire trend
-FREQUENCY = FREQUENTIE ## Geeft als resultaat een frequentieverdeling in de vorm van een verticale matrix
-FTEST = F.TOETS ## Geeft als resultaat een F-toets
-GAMMADIST = GAMMA.VERD ## Geeft als resultaat de gamma-verdeling
-GAMMAINV = GAMMA.INV ## Geeft als resultaat de inverse van de cumulatieve gamma-verdeling
-GAMMALN = GAMMA.LN ## Geeft als resultaat de natuurlijke logaritme van de gamma-functie, G(x)
-GEOMEAN = MEETK.GEM ## Geeft als resultaat het meetkundige gemiddelde
-GROWTH = GROEI ## Geeft als resultaat de waarden voor een exponentiële trend
-HARMEAN = HARM.GEM ## Geeft als resultaat het harmonische gemiddelde
-HYPGEOMDIST = HYPERGEO.VERD ## Geeft als resultaat de hypergeometrische verdeling
-INTERCEPT = SNIJPUNT ## Geeft als resultaat het snijpunt van de lineaire regressielijn met de y-as
-KURT = KURTOSIS ## Geeft als resultaat de kurtosis van een gegevensverzameling
-LARGE = GROOTSTE ## Geeft als resultaat de op k-1 na grootste waarde in een gegevensverzameling
-LINEST = LIJNSCH ## Geeft als resultaat de parameters van een lineaire trend
-LOGEST = LOGSCH ## Geeft als resultaat de parameters van een exponentiële trend
-LOGINV = LOG.NORM.INV ## Geeft als resultaat de inverse van de logaritmische normale verdeling
-LOGNORMDIST = LOG.NORM.VERD ## Geeft als resultaat de cumulatieve logaritmische normale verdeling
-MAX = MAX ## Geeft als resultaat de maximumwaarde in een lijst met argumenten
-MAXA = MAXA ## Geeft als resultaat de maximumwaarde in een lijst met argumenten, inclusief getallen, tekst en logische waarden
-MEDIAN = MEDIAAN ## Geeft als resultaat de mediaan van de opgegeven getallen
-MIN = MIN ## Geeft als resultaat de minimumwaarde in een lijst met argumenten
-MINA = MINA ## Geeft als resultaat de minimumwaarde in een lijst met argumenten, inclusief getallen, tekst en logische waarden
-MODE = MODUS ## Geeft als resultaat de meest voorkomende waarde in een gegevensverzameling
-NEGBINOMDIST = NEG.BINOM.VERD ## Geeft als resultaat de negatieve binomiaalverdeling
-NORMDIST = NORM.VERD ## Geeft als resultaat de cumulatieve normale verdeling
-NORMINV = NORM.INV ## Geeft als resultaat de inverse van de cumulatieve standaardnormale verdeling
-NORMSDIST = STAND.NORM.VERD ## Geeft als resultaat de cumulatieve standaardnormale verdeling
-NORMSINV = STAND.NORM.INV ## Geeft als resultaat de inverse van de cumulatieve normale verdeling
-PEARSON = PEARSON ## Geeft als resultaat de correlatiecoëfficiënt van Pearson
-PERCENTILE = PERCENTIEL ## Geeft als resultaat het k-de percentiel van waarden in een bereik
-PERCENTRANK = PERCENT.RANG ## Geeft als resultaat de positie, in procenten uitgedrukt, van een waarde in de rangorde van een gegevensverzameling
-PERMUT = PERMUTATIES ## Geeft als resultaat het aantal permutaties voor een gegeven aantal objecten
-POISSON = POISSON ## Geeft als resultaat de Poisson-verdeling
-PROB = KANS ## Geeft als resultaat de kans dat waarden zich tussen twee grenzen bevinden
-QUARTILE = KWARTIEL ## Geeft als resultaat het kwartiel van een gegevensverzameling
-RANK = RANG ## Geeft als resultaat het rangnummer van een getal in een lijst getallen
-RSQ = R.KWADRAAT ## Geeft als resultaat het kwadraat van de Pearson-correlatiecoëfficiënt
-SKEW = SCHEEFHEID ## Geeft als resultaat de mate van asymmetrie van een verdeling
-SLOPE = RICHTING ## Geeft als resultaat de richtingscoëfficiënt van een lineaire regressielijn
-SMALL = KLEINSTE ## Geeft als resultaat de op k-1 na kleinste waarde in een gegevensverzameling
-STANDARDIZE = NORMALISEREN ## Geeft als resultaat een genormaliseerde waarde
-STDEV = STDEV ## Maakt een schatting van de standaarddeviatie op basis van een steekproef
-STDEVA = STDEVA ## Maakt een schatting van de standaarddeviatie op basis van een steekproef, inclusief getallen, tekst en logische waarden
-STDEVP = STDEVP ## Berekent de standaarddeviatie op basis van de volledige populatie
-STDEVPA = STDEVPA ## Berekent de standaarddeviatie op basis van de volledige populatie, inclusief getallen, tekst en logische waarden
-STEYX = STAND.FOUT.YX ## Geeft als resultaat de standaardfout in de voorspelde y-waarde voor elke x in een regressie
-TDIST = T.VERD ## Geeft als resultaat de Student T-verdeling
-TINV = T.INV ## Geeft als resultaat de inverse van de Student T-verdeling
-TREND = TREND ## Geeft als resultaat de waarden voor een lineaire trend
-TRIMMEAN = GETRIMD.GEM ## Geeft als resultaat het gemiddelde van waarden in een gegevensverzameling
-TTEST = T.TOETS ## Geeft als resultaat de kans met behulp van de Student T-toets
-VAR = VAR ## Maakt een schatting van de variantie op basis van een steekproef
-VARA = VARA ## Maakt een schatting van de variantie op basis van een steekproef, inclusief getallen, tekst en logische waarden
-VARP = VARP ## Berekent de variantie op basis van de volledige populatie
-VARPA = VARPA ## Berekent de standaarddeviatie op basis van de volledige populatie, inclusief getallen, tekst en logische waarden
-WEIBULL = WEIBULL ## Geeft als resultaat de Weibull-verdeling
-ZTEST = Z.TOETS ## Geeft als resultaat de eenzijdige kanswaarde van een Z-toets
-
-
-##
-## Text functions Tekstfuncties
-##
-ASC = ASC ## Wijzigt Nederlandse letters of katakanatekens over de volle breedte (dubbel-bytetekens) binnen een tekenreeks in tekens over de halve breedte (enkel-bytetekens)
-BAHTTEXT = BAHT.TEKST ## Converteert een getal naar tekst met de valutanotatie ß (baht)
-CHAR = TEKEN ## Geeft als resultaat het teken dat hoort bij de opgegeven code
-CLEAN = WISSEN.CONTROL ## Verwijdert alle niet-afdrukbare tekens uit een tekst
-CODE = CODE ## Geeft als resultaat de numerieke code voor het eerste teken in een tekenreeks
-CONCATENATE = TEKST.SAMENVOEGEN ## Voegt verschillende tekstfragmenten samen tot één tekstfragment
-DOLLAR = EURO ## Converteert een getal naar tekst met de valutanotatie € (euro)
-EXACT = GELIJK ## Controleert of twee tekenreeksen identiek zijn
-FIND = VIND.ALLES ## Zoekt een bepaalde tekenreeks in een tekst (waarbij onderscheid wordt gemaakt tussen hoofdletters en kleine letters)
-FINDB = VIND.ALLES.B ## Zoekt een bepaalde tekenreeks in een tekst (waarbij onderscheid wordt gemaakt tussen hoofdletters en kleine letters)
-FIXED = VAST ## Maakt een getal als tekst met een vast aantal decimalen op
-JIS = JIS ## Wijzigt Nederlandse letters of katakanatekens over de halve breedte (enkel-bytetekens) binnen een tekenreeks in tekens over de volle breedte (dubbel-bytetekens)
-LEFT = LINKS ## Geeft als resultaat de meest linkse tekens in een tekenreeks
-LEFTB = LINKSB ## Geeft als resultaat de meest linkse tekens in een tekenreeks
-LEN = LENGTE ## Geeft als resultaat het aantal tekens in een tekenreeks
-LENB = LENGTEB ## Geeft als resultaat het aantal tekens in een tekenreeks
-LOWER = KLEINE.LETTERS ## Zet tekst om in kleine letters
-MID = MIDDEN ## Geeft als resultaat een bepaald aantal tekens van een tekenreeks vanaf de positie die u opgeeft
-MIDB = DEELB ## Geeft als resultaat een bepaald aantal tekens van een tekenreeks vanaf de positie die u opgeeft
-PHONETIC = FONETISCH ## Haalt de fonetische tekens (furigana) uit een tekenreeks op
-PROPER = BEGINLETTERS ## Zet de eerste letter van elk woord in een tekst om in een hoofdletter
-REPLACE = VERVANG ## Vervangt tekens binnen een tekst
-REPLACEB = VERVANGENB ## Vervangt tekens binnen een tekst
-REPT = HERHALING ## Herhaalt een tekst een aantal malen
-RIGHT = RECHTS ## Geeft als resultaat de meest rechtse tekens in een tekenreeks
-RIGHTB = RECHTSB ## Geeft als resultaat de meest rechtse tekens in een tekenreeks
-SEARCH = VIND.SPEC ## Zoekt een bepaalde tekenreeks in een tekst (waarbij geen onderscheid wordt gemaakt tussen hoofdletters en kleine letters)
-SEARCHB = VIND.SPEC.B ## Zoekt een bepaalde tekenreeks in een tekst (waarbij geen onderscheid wordt gemaakt tussen hoofdletters en kleine letters)
-SUBSTITUTE = SUBSTITUEREN ## Vervangt oude tekst door nieuwe tekst in een tekenreeks
-T = T ## Converteert de argumenten naar tekst
-TEXT = TEKST ## Maakt een getal op en converteert het getal naar tekst
-TRIM = SPATIES.WISSEN ## Verwijdert de spaties uit een tekst
-UPPER = HOOFDLETTERS ## Zet tekst om in hoofdletters
-VALUE = WAARDE ## Converteert tekst naar een getal
diff --git a/admin/survey/excel/PHPExcel/locale/no/config b/admin/survey/excel/PHPExcel/locale/no/config
deleted file mode 100644
index 482e4bc..0000000
--- a/admin/survey/excel/PHPExcel/locale/no/config
+++ /dev/null
@@ -1,47 +0,0 @@
-##
-## PHPExcel
-##
-## Copyright (c) 2006 - 2011 PHPExcel
-##
-## This library is free software; you can redistribute it and/or
-## modify it under the terms of the GNU Lesser General Public
-## License as published by the Free Software Foundation; either
-## version 2.1 of the License, or (at your option) any later version.
-##
-## This library is distributed in the hope that it will be useful,
-## but WITHOUT ANY WARRANTY; without even the implied warranty of
-## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-## Lesser General Public License for more details.
-##
-## You should have received a copy of the GNU Lesser General Public
-## License along with this library; if not, write to the Free Software
-## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-##
-## @category PHPExcel
-## @package PHPExcel_Settings
-## @copyright Copyright (c) 2006 - 2011 PHPExcel (http://www.codeplex.com/PHPExcel)
-## @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
-## @version 1.7.8, 2012-10-12
-##
-##
-
-
-ArgumentSeparator = ;
-
-
-##
-## (For future use)
-##
-currencySymbol = kr
-
-
-##
-## Excel Error Codes (For future use)
-##
-NULL = #NULL!
-DIV0 = #DIV/0!
-VALUE = #VERDI!
-REF = #REF!
-NAME = #NAVN?
-NUM = #NUM!
-NA = #I/T
diff --git a/admin/survey/excel/PHPExcel/locale/no/functions b/admin/survey/excel/PHPExcel/locale/no/functions
deleted file mode 100644
index eb5ae02..0000000
--- a/admin/survey/excel/PHPExcel/locale/no/functions
+++ /dev/null
@@ -1,438 +0,0 @@
-##
-## PHPExcel
-##
-## Copyright (c) 2006 - 2011 PHPExcel
-##
-## This library is free software; you can redistribute it and/or
-## modify it under the terms of the GNU Lesser General Public
-## License as published by the Free Software Foundation; either
-## version 2.1 of the License, or (at your option) any later version.
-##
-## This library is distributed in the hope that it will be useful,
-## but WITHOUT ANY WARRANTY; without even the implied warranty of
-## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-## Lesser General Public License for more details.
-##
-## You should have received a copy of the GNU Lesser General Public
-## License along with this library; if not, write to the Free Software
-## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-##
-## @category PHPExcel
-## @package PHPExcel_Calculation
-## @copyright Copyright (c) 2006 - 2011 PHPExcel (http://www.codeplex.com/PHPExcel)
-## @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
-## @version 1.7.8, 2012-10-12
-##
-## Data in this file derived from http://www.piuha.fi/excel-function-name-translation/
-##
-##
-
-
-##
-## Add-in and Automation functions Funksjonene Tillegg og Automatisering
-##
-GETPIVOTDATA = HENTPIVOTDATA ## Returnerer data som er lagret i en pivottabellrapport
-
-
-##
-## Cube functions Kubefunksjoner
-##
-CUBEKPIMEMBER = KUBEKPIMEDLEM ## Returnerer navnet, egenskapen og målet for en viktig ytelsesindikator (KPI), og viser navnet og egenskapen i cellen. En KPI er en målbar enhet, for eksempel månedlig bruttoinntjening eller kvartalsvis inntjening per ansatt, og brukes til å overvåke ytelsen i en organisasjon.
-CUBEMEMBER = KUBEMEDLEM ## Returnerer et medlem eller en tuppel i et kubehierarki. Brukes til å validere at medlemmet eller tuppelen finnes i kuben.
-CUBEMEMBERPROPERTY = KUBEMEDLEMEGENSKAP ## Returnerer verdien til en medlemsegenskap i kuben. Brukes til å validere at et medlemsnavn finnes i kuben, og til å returnere den angitte egenskapen for dette medlemmet.
-CUBERANKEDMEMBER = KUBERANGERTMEDLEM ## Returnerer det n-te, eller rangerte, medlemmet i et sett. Brukes til å returnere ett eller flere elementer i et sett, for eksempel de 10 beste studentene.
-CUBESET = KUBESETT ## Definerer et beregnet sett av medlemmer eller tuppeler ved å sende et settuttrykk til kuben på serveren, noe som oppretter settet og deretter returnerer dette settet til Microsoft Office Excel.
-CUBESETCOUNT = KUBESETTANTALL ## Returnerer antallet elementer i et sett.
-CUBEVALUE = KUBEVERDI ## Returnerer en aggregert verdi fra en kube.
-
-
-##
-## Database functions Databasefunksjoner
-##
-DAVERAGE = DGJENNOMSNITT ## Returnerer gjennomsnittet av merkede databaseposter
-DCOUNT = DANTALL ## Teller celler som inneholder tall i en database
-DCOUNTA = DANTALLA ## Teller celler som ikke er tomme i en database
-DGET = DHENT ## Trekker ut fra en database en post som oppfyller angitte vilkår
-DMAX = DMAKS ## Returnerer maksimumsverdien fra merkede databaseposter
-DMIN = DMIN ## Returnerer minimumsverdien fra merkede databaseposter
-DPRODUCT = DPRODUKT ## Multipliserer verdiene i et bestemt felt med poster som oppfyller vilkårene i en database
-DSTDEV = DSTDAV ## Estimerer standardavviket basert på et utvalg av merkede databaseposter
-DSTDEVP = DSTAVP ## Beregner standardavviket basert på at merkede databaseposter utgjør hele populasjonen
-DSUM = DSUMMER ## Legger til tallene i feltkolonnen med poster, i databasen som oppfyller vilkårene
-DVAR = DVARIANS ## Estimerer variansen basert på et utvalg av merkede databaseposter
-DVARP = DVARIANSP ## Beregner variansen basert på at merkede databaseposter utgjør hele populasjonen
-
-
-##
-## Date and time functions Dato- og tidsfunksjoner
-##
-DATE = DATO ## Returnerer serienummeret som svarer til en bestemt dato
-DATEVALUE = DATOVERDI ## Konverterer en dato med tekstformat til et serienummer
-DAY = DAG ## Konverterer et serienummer til en dag i måneden
-DAYS360 = DAGER360 ## Beregner antall dager mellom to datoer basert på et år med 360 dager
-EDATE = DAG.ETTER ## Returnerer serienummeret som svarer til datoen som er det indikerte antall måneder før eller etter startdatoen
-EOMONTH = MÅNEDSSLUTT ## Returnerer serienummeret som svarer til siste dag i måneden, før eller etter et angitt antall måneder
-HOUR = TIME ## Konverterer et serienummer til en time
-MINUTE = MINUTT ## Konverterer et serienummer til et minutt
-MONTH = MÅNED ## Konverterer et serienummer til en måned
-NETWORKDAYS = NETT.ARBEIDSDAGER ## Returnerer antall hele arbeidsdager mellom to datoer
-NOW = NÅ ## Returnerer serienummeret som svarer til gjeldende dato og klokkeslett
-SECOND = SEKUND ## Konverterer et serienummer til et sekund
-TIME = TID ## Returnerer serienummeret som svarer til et bestemt klokkeslett
-TIMEVALUE = TIDSVERDI ## Konverterer et klokkeslett i tekstformat til et serienummer
-TODAY = IDAG ## Returnerer serienummeret som svarer til dagens dato
-WEEKDAY = UKEDAG ## Konverterer et serienummer til en ukedag
-WEEKNUM = UKENR ## Konverterer et serienummer til et tall som representerer hvilket nummer uken har i et år
-WORKDAY = ARBEIDSDAG ## Returnerer serienummeret som svarer til datoen før eller etter et angitt antall arbeidsdager
-YEAR = ÅR ## Konverterer et serienummer til et år
-YEARFRAC = ÅRDEL ## Returnerer brøkdelen for året, som svarer til antall hele dager mellom startdato og sluttdato
-
-
-##
-## Engineering functions Tekniske funksjoner
-##
-BESSELI = BESSELI ## Returnerer den endrede Bessel-funksjonen In(x)
-BESSELJ = BESSELJ ## Returnerer Bessel-funksjonen Jn(x)
-BESSELK = BESSELK ## Returnerer den endrede Bessel-funksjonen Kn(x)
-BESSELY = BESSELY ## Returnerer Bessel-funksjonen Yn(x)
-BIN2DEC = BINTILDES ## Konverterer et binært tall til et desimaltall
-BIN2HEX = BINTILHEKS ## Konverterer et binært tall til et heksadesimaltall
-BIN2OCT = BINTILOKT ## Konverterer et binært tall til et oktaltall
-COMPLEX = KOMPLEKS ## Konverterer reelle og imaginære koeffisienter til et komplekst tall
-CONVERT = KONVERTER ## Konverterer et tall fra ett målsystem til et annet
-DEC2BIN = DESTILBIN ## Konverterer et desimaltall til et binærtall
-DEC2HEX = DESTILHEKS ## Konverterer et heltall i 10-tallsystemet til et heksadesimalt tall
-DEC2OCT = DESTILOKT ## Konverterer et heltall i 10-tallsystemet til et oktaltall
-DELTA = DELTA ## Undersøker om to verdier er like
-ERF = FEILF ## Returnerer feilfunksjonen
-ERFC = FEILFK ## Returnerer den komplementære feilfunksjonen
-GESTEP = GRENSEVERDI ## Tester om et tall er større enn en terskelverdi
-HEX2BIN = HEKSTILBIN ## Konverterer et heksadesimaltall til et binært tall
-HEX2DEC = HEKSTILDES ## Konverterer et heksadesimalt tall til et heltall i 10-tallsystemet
-HEX2OCT = HEKSTILOKT ## Konverterer et heksadesimalt tall til et oktaltall
-IMABS = IMABS ## Returnerer absoluttverdien (koeffisienten) til et komplekst tall
-IMAGINARY = IMAGINÆR ## Returnerer den imaginære koeffisienten til et komplekst tall
-IMARGUMENT = IMARGUMENT ## Returnerer argumentet theta, som er en vinkel uttrykt i radianer
-IMCONJUGATE = IMKONJUGERT ## Returnerer den komplekse konjugaten til et komplekst tall
-IMCOS = IMCOS ## Returnerer cosinus til et komplekst tall
-IMDIV = IMDIV ## Returnerer kvotienten til to komplekse tall
-IMEXP = IMEKSP ## Returnerer eksponenten til et komplekst tall
-IMLN = IMLN ## Returnerer den naturlige logaritmen for et komplekst tall
-IMLOG10 = IMLOG10 ## Returnerer logaritmen med grunntall 10 for et komplekst tall
-IMLOG2 = IMLOG2 ## Returnerer logaritmen med grunntall 2 for et komplekst tall
-IMPOWER = IMOPPHØY ## Returnerer et komplekst tall opphøyd til en heltallspotens
-IMPRODUCT = IMPRODUKT ## Returnerer produktet av komplekse tall
-IMREAL = IMREELL ## Returnerer den reelle koeffisienten til et komplekst tall
-IMSIN = IMSIN ## Returnerer sinus til et komplekst tall
-IMSQRT = IMROT ## Returnerer kvadratroten av et komplekst tall
-IMSUB = IMSUB ## Returnerer differansen mellom to komplekse tall
-IMSUM = IMSUMMER ## Returnerer summen av komplekse tall
-OCT2BIN = OKTTILBIN ## Konverterer et oktaltall til et binært tall
-OCT2DEC = OKTTILDES ## Konverterer et oktaltall til et desimaltall
-OCT2HEX = OKTTILHEKS ## Konverterer et oktaltall til et heksadesimaltall
-
-
-##
-## Financial functions Økonomiske funksjoner
-##
-ACCRINT = PÅLØPT.PERIODISK.RENTE ## Returnerer påløpte renter for et verdipapir som betaler periodisk rente
-ACCRINTM = PÅLØPT.FORFALLSRENTE ## Returnerer den påløpte renten for et verdipapir som betaler rente ved forfall
-AMORDEGRC = AMORDEGRC ## Returnerer avskrivningen for hver regnskapsperiode ved hjelp av en avskrivingskoeffisient
-AMORLINC = AMORLINC ## Returnerer avskrivingen for hver regnskapsperiode
-COUPDAYBS = OBLIG.DAGER.FF ## Returnerer antall dager fra begynnelsen av den rentebærende perioden til innløsningsdatoen
-COUPDAYS = OBLIG.DAGER ## Returnerer antall dager i den rentebærende perioden som inneholder innløsningsdatoen
-COUPDAYSNC = OBLIG.DAGER.NF ## Returnerer antall dager fra betalingsdato til neste renteinnbetalingsdato
-COUPNCD = OBLIG.DAGER.EF ## Returnerer obligasjonsdatoen som kommer etter oppgjørsdatoen
-COUPNUM = OBLIG.ANTALL ## Returnerer antall obligasjoner som skal betales mellom oppgjørsdatoen og forfallsdatoen
-COUPPCD = OBLIG.DAG.FORRIGE ## Returnerer obligasjonsdatoen som kommer før oppgjørsdatoen
-CUMIPMT = SAMLET.RENTE ## Returnerer den kumulative renten som er betalt mellom to perioder
-CUMPRINC = SAMLET.HOVEDSTOL ## Returnerer den kumulative hovedstolen som er betalt for et lån mellom to perioder
-DB = DAVSKR ## Returnerer avskrivningen for et aktivum i en angitt periode, foretatt med fast degressiv avskrivning
-DDB = DEGRAVS ## Returnerer avskrivningen for et aktivum for en gitt periode, ved hjelp av dobbel degressiv avskrivning eller en metode som du selv angir
-DISC = DISKONTERT ## Returnerer diskonteringsraten for et verdipapir
-DOLLARDE = DOLLARDE ## Konverterer en valutapris uttrykt som en brøk, til en valutapris uttrykt som et desimaltall
-DOLLARFR = DOLLARBR ## Konverterer en valutapris uttrykt som et desimaltall, til en valutapris uttrykt som en brøk
-DURATION = VARIGHET ## Returnerer årlig varighet for et verdipapir med renter som betales periodisk
-EFFECT = EFFEKTIV.RENTE ## Returnerer den effektive årlige rentesatsen
-FV = SLUTTVERDI ## Returnerer fremtidig verdi for en investering
-FVSCHEDULE = SVPLAN ## Returnerer den fremtidige verdien av en inngående hovedstol etter å ha anvendt en serie med sammensatte rentesatser
-INTRATE = RENTESATS ## Returnerer rentefoten av et fullfinansiert verdipapir
-IPMT = RAVDRAG ## Returnerer betalte renter på en investering for en gitt periode
-IRR = IR ## Returnerer internrenten for en serie kontantstrømmer
-ISPMT = ER.AVDRAG ## Beregner renten som er betalt for en investering i løpet av en bestemt periode
-MDURATION = MVARIGHET ## Returnerer Macauleys modifiserte varighet for et verdipapir med en antatt pålydende verdi på kr 100,00
-MIRR = MODIR ## Returnerer internrenten der positive og negative kontantstrømmer finansieres med forskjellige satser
-NOMINAL = NOMINELL ## Returnerer årlig nominell rentesats
-NPER = PERIODER ## Returnerer antall perioder for en investering
-NPV = NNV ## Returnerer netto nåverdi for en investering, basert på en serie periodiske kontantstrømmer og en rentesats
-ODDFPRICE = AVVIKFP.PRIS ## Returnerer pris pålydende kr 100 for et verdipapir med en odde første periode
-ODDFYIELD = AVVIKFP.AVKASTNING ## Returnerer avkastingen for et verdipapir med en odde første periode
-ODDLPRICE = AVVIKSP.PRIS ## Returnerer pris pålydende kr 100 for et verdipapir med en odde siste periode
-ODDLYIELD = AVVIKSP.AVKASTNING ## Returnerer avkastingen for et verdipapir med en odde siste periode
-PMT = AVDRAG ## Returnerer periodisk betaling for en annuitet
-PPMT = AMORT ## Returnerer betalingen på hovedstolen for en investering i en gitt periode
-PRICE = PRIS ## Returnerer prisen per pålydende kr 100 for et verdipapir som gir periodisk avkastning
-PRICEDISC = PRIS.DISKONTERT ## Returnerer prisen per pålydende kr 100 for et diskontert verdipapir
-PRICEMAT = PRIS.FORFALL ## Returnerer prisen per pålydende kr 100 av et verdipapir som betaler rente ved forfall
-PV = NÅVERDI ## Returnerer nåverdien av en investering
-RATE = RENTE ## Returnerer rentesatsen per periode for en annuitet
-RECEIVED = MOTTATT.AVKAST ## Returnerer summen som mottas ved forfallsdato for et fullinvestert verdipapir
-SLN = LINAVS ## Returnerer den lineære avskrivningen for et aktivum i én periode
-SYD = ÅRSAVS ## Returnerer årsavskrivningen for et aktivum i en angitt periode
-TBILLEQ = TBILLEKV ## Returnerer den obligasjonsekvivalente avkastningen for en statsobligasjon
-TBILLPRICE = TBILLPRIS ## Returnerer prisen per pålydende kr 100 for en statsobligasjon
-TBILLYIELD = TBILLAVKASTNING ## Returnerer avkastningen til en statsobligasjon
-VDB = VERDIAVS ## Returnerer avskrivningen for et aktivum i en angitt periode eller delperiode, ved hjelp av degressiv avskrivning
-XIRR = XIR ## Returnerer internrenten for en serie kontantstrømmer som ikke nødvendigvis er periodiske
-XNPV = XNNV ## Returnerer netto nåverdi for en serie kontantstrømmer som ikke nødvendigvis er periodiske
-YIELD = AVKAST ## Returnerer avkastningen på et verdipapir som betaler periodisk rente
-YIELDDISC = AVKAST.DISKONTERT ## Returnerer årlig avkastning for et diskontert verdipapir, for eksempel en statskasseveksel
-YIELDMAT = AVKAST.FORFALL ## Returnerer den årlige avkastningen for et verdipapir som betaler rente ved forfallsdato
-
-
-##
-## Information functions Informasjonsfunksjoner
-##
-CELL = CELLE ## Returnerer informasjon om formatering, plassering eller innholdet til en celle
-ERROR.TYPE = FEIL.TYPE ## Returnerer et tall som svarer til en feiltype
-INFO = INFO ## Returnerer informasjon om gjeldende operativmiljø
-ISBLANK = ERTOM ## Returnerer SANN hvis verdien er tom
-ISERR = ERFEIL ## Returnerer SANN hvis verdien er en hvilken som helst annen feilverdi enn #I/T
-ISERROR = ERFEIL ## Returnerer SANN hvis verdien er en hvilken som helst feilverdi
-ISEVEN = ERPARTALL ## Returnerer SANN hvis tallet er et partall
-ISLOGICAL = ERLOGISK ## Returnerer SANN hvis verdien er en logisk verdi
-ISNA = ERIT ## Returnerer SANN hvis verdien er feilverdien #I/T
-ISNONTEXT = ERIKKETEKST ## Returnerer SANN hvis verdien ikke er tekst
-ISNUMBER = ERTALL ## Returnerer SANN hvis verdien er et tall
-ISODD = ERODDETALL ## Returnerer SANN hvis tallet er et oddetall
-ISREF = ERREF ## Returnerer SANN hvis verdien er en referanse
-ISTEXT = ERTEKST ## Returnerer SANN hvis verdien er tekst
-N = N ## Returnerer en verdi som er konvertert til et tall
-NA = IT ## Returnerer feilverdien #I/T
-TYPE = VERDITYPE ## Returnerer et tall som indikerer datatypen til en verdi
-
-
-##
-## Logical functions Logiske funksjoner
-##
-AND = OG ## Returnerer SANN hvis alle argumentene er lik SANN
-FALSE = USANN ## Returnerer den logiske verdien USANN
-IF = HVIS ## Angir en logisk test som skal utføres
-IFERROR = HVISFEIL ## Returnerer en verdi du angir hvis en formel evaluerer til en feil. Ellers returnerer den resultatet av formelen.
-NOT = IKKE ## Reverserer logikken til argumentet
-OR = ELLER ## Returnerer SANN hvis ett eller flere argumenter er lik SANN
-TRUE = SANN ## Returnerer den logiske verdien SANN
-
-
-##
-## Lookup and reference functions Oppslag- og referansefunksjoner
-##
-ADDRESS = ADRESSE ## Returnerer en referanse som tekst til en enkelt celle i et regneark
-AREAS = OMRÅDER ## Returnerer antall områder i en referanse
-CHOOSE = VELG ## Velger en verdi fra en liste med verdier
-COLUMN = KOLONNE ## Returnerer kolonnenummeret for en referanse
-COLUMNS = KOLONNER ## Returnerer antall kolonner i en referanse
-HLOOKUP = FINN.KOLONNE ## Leter i den øverste raden i en matrise og returnerer verdien for den angitte cellen
-HYPERLINK = HYPERKOBLING ## Oppretter en snarvei eller et hopp som åpner et dokument som er lagret på en nettverksserver, et intranett eller Internett
-INDEX = INDEKS ## Bruker en indeks til å velge en verdi fra en referanse eller matrise
-INDIRECT = INDIREKTE ## Returnerer en referanse angitt av en tekstverdi
-LOOKUP = SLÅ.OPP ## Slår opp verdier i en vektor eller matrise
-MATCH = SAMMENLIGNE ## Slår opp verdier i en referanse eller matrise
-OFFSET = FORSKYVNING ## Returnerer en referanseforskyvning fra en gitt referanse
-ROW = RAD ## Returnerer radnummeret for en referanse
-ROWS = RADER ## Returnerer antall rader i en referanse
-RTD = RTD ## Henter sanntidsdata fra et program som støtter COM-automatisering (automatisering: En måte å arbeide på med programobjekter fra et annet program- eller utviklingsverktøy. Tidligere kalt OLE-automatisering. Automatisering er en bransjestandard og en funksjon i Component Object Model (COM).)
-TRANSPOSE = TRANSPONER ## Returnerer transponeringen av en matrise
-VLOOKUP = FINN.RAD ## Leter i den første kolonnen i en matrise og flytter bortover raden for å returnere verdien til en celle
-
-
-##
-## Math and trigonometry functions Matematikk- og trigonometrifunksjoner
-##
-ABS = ABS ## Returnerer absoluttverdien til et tall
-ACOS = ARCCOS ## Returnerer arcus cosinus til et tall
-ACOSH = ARCCOSH ## Returnerer den inverse hyperbolske cosinus til et tall
-ASIN = ARCSIN ## Returnerer arcus sinus til et tall
-ASINH = ARCSINH ## Returnerer den inverse hyperbolske sinus til et tall
-ATAN = ARCTAN ## Returnerer arcus tangens til et tall
-ATAN2 = ARCTAN2 ## Returnerer arcus tangens fra x- og y-koordinater
-ATANH = ARCTANH ## Returnerer den inverse hyperbolske tangens til et tall
-CEILING = AVRUND.GJELDENDE.MULTIPLUM ## Runder av et tall til nærmeste heltall eller til nærmeste signifikante multiplum
-COMBIN = KOMBINASJON ## Returnerer antall kombinasjoner for ett gitt antall objekter
-COS = COS ## Returnerer cosinus til et tall
-COSH = COSH ## Returnerer den hyperbolske cosinus til et tall
-DEGREES = GRADER ## Konverterer radianer til grader
-EVEN = AVRUND.TIL.PARTALL ## Runder av et tall oppover til nærmeste heltall som er et partall
-EXP = EKSP ## Returnerer e opphøyd i en angitt potens
-FACT = FAKULTET ## Returnerer fakultet til et tall
-FACTDOUBLE = DOBBELFAKT ## Returnerer et talls doble fakultet
-FLOOR = AVRUND.GJELDENDE.MULTIPLUM.NED ## Avrunder et tall nedover, mot null
-GCD = SFF ## Returnerer høyeste felles divisor
-INT = HELTALL ## Avrunder et tall nedover til nærmeste heltall
-LCM = MFM ## Returnerer minste felles multiplum
-LN = LN ## Returnerer den naturlige logaritmen til et tall
-LOG = LOG ## Returnerer logaritmen for et tall til et angitt grunntall
-LOG10 = LOG10 ## Returnerer logaritmen med grunntall 10 for et tall
-MDETERM = MDETERM ## Returnerer matrisedeterminanten til en matrise
-MINVERSE = MINVERS ## Returnerer den inverse matrisen til en matrise
-MMULT = MMULT ## Returnerer matriseproduktet av to matriser
-MOD = REST ## Returnerer resten fra en divisjon
-MROUND = MRUND ## Returnerer et tall avrundet til det ønskede multiplum
-MULTINOMIAL = MULTINOMINELL ## Returnerer det multinominelle for et sett med tall
-ODD = AVRUND.TIL.ODDETALL ## Runder av et tall oppover til nærmeste heltall som er et oddetall
-PI = PI ## Returnerer verdien av pi
-POWER = OPPHØYD.I ## Returnerer resultatet av et tall opphøyd i en potens
-PRODUCT = PRODUKT ## Multipliserer argumentene
-QUOTIENT = KVOTIENT ## Returnerer heltallsdelen av en divisjon
-RADIANS = RADIANER ## Konverterer grader til radianer
-RAND = TILFELDIG ## Returnerer et tilfeldig tall mellom 0 og 1
-RANDBETWEEN = TILFELDIGMELLOM ## Returnerer et tilfeldig tall innenfor et angitt område
-ROMAN = ROMERTALL ## Konverterer vanlige tall til romertall, som tekst
-ROUND = AVRUND ## Avrunder et tall til et angitt antall sifre
-ROUNDDOWN = AVRUND.NED ## Avrunder et tall nedover, mot null
-ROUNDUP = AVRUND.OPP ## Runder av et tall oppover, bort fra null
-SERIESSUM = SUMMER.REKKE ## Returnerer summen av en geometrisk rekke, basert på formelen
-SIGN = FORTEGN ## Returnerer fortegnet for et tall
-SIN = SIN ## Returnerer sinus til en gitt vinkel
-SINH = SINH ## Returnerer den hyperbolske sinus til et tall
-SQRT = ROT ## Returnerer en positiv kvadratrot
-SQRTPI = ROTPI ## Returnerer kvadratroten av (tall * pi)
-SUBTOTAL = DELSUM ## Returnerer en delsum i en liste eller database
-SUM = SUMMER ## Legger sammen argumentene
-SUMIF = SUMMERHVIS ## Legger sammen cellene angitt ved et gitt vilkår
-SUMIFS = SUMMER.HVIS.SETT ## Legger sammen cellene i et område som oppfyller flere vilkår
-SUMPRODUCT = SUMMERPRODUKT ## Returnerer summen av produktene av tilsvarende matrisekomponenter
-SUMSQ = SUMMERKVADRAT ## Returnerer kvadratsummen av argumentene
-SUMX2MY2 = SUMMERX2MY2 ## Returnerer summen av differansen av kvadratene for tilsvarende verdier i to matriser
-SUMX2PY2 = SUMMERX2PY2 ## Returnerer summen av kvadratsummene for tilsvarende verdier i to matriser
-SUMXMY2 = SUMMERXMY2 ## Returnerer summen av kvadratene av differansen for tilsvarende verdier i to matriser
-TAN = TAN ## Returnerer tangens for et tall
-TANH = TANH ## Returnerer den hyperbolske tangens for et tall
-TRUNC = AVKORT ## Korter av et tall til et heltall
-
-
-##
-## Statistical functions Statistiske funksjoner
-##
-AVEDEV = GJENNOMSNITTSAVVIK ## Returnerer datapunktenes gjennomsnittlige absoluttavvik fra middelverdien
-AVERAGE = GJENNOMSNITT ## Returnerer gjennomsnittet for argumentene
-AVERAGEA = GJENNOMSNITTA ## Returnerer gjennomsnittet for argumentene, inkludert tall, tekst og logiske verdier
-AVERAGEIF = GJENNOMSNITTHVIS ## Returnerer gjennomsnittet (aritmetisk gjennomsnitt) av alle cellene i et område som oppfyller et bestemt vilkår
-AVERAGEIFS = GJENNOMSNITT.HVIS.SETT ## Returnerer gjennomsnittet (aritmetisk middelverdi) av alle celler som oppfyller flere vilkår.
-BETADIST = BETA.FORDELING ## Returnerer den kumulative betafordelingsfunksjonen
-BETAINV = INVERS.BETA.FORDELING ## Returnerer den inverse verdien til fordelingsfunksjonen for en angitt betafordeling
-BINOMDIST = BINOM.FORDELING ## Returnerer den individuelle binomiske sannsynlighetsfordelingen
-CHIDIST = KJI.FORDELING ## Returnerer den ensidige sannsynligheten for en kjikvadrert fordeling
-CHIINV = INVERS.KJI.FORDELING ## Returnerer den inverse av den ensidige sannsynligheten for den kjikvadrerte fordelingen
-CHITEST = KJI.TEST ## Utfører testen for uavhengighet
-CONFIDENCE = KONFIDENS ## Returnerer konfidensintervallet til gjennomsnittet for en populasjon
-CORREL = KORRELASJON ## Returnerer korrelasjonskoeffisienten mellom to datasett
-COUNT = ANTALL ## Teller hvor mange tall som er i argumentlisten
-COUNTA = ANTALLA ## Teller hvor mange verdier som er i argumentlisten
-COUNTBLANK = TELLBLANKE ## Teller antall tomme celler i et område.
-COUNTIF = ANTALL.HVIS ## Teller antall celler i et område som oppfyller gitte vilkår
-COUNTIFS = ANTALL.HVIS.SETT ## Teller antallet ikke-tomme celler i et område som oppfyller flere vilkår
-COVAR = KOVARIANS ## Returnerer kovariansen, gjennomsnittet av produktene av parvise avvik
-CRITBINOM = GRENSE.BINOM ## Returnerer den minste verdien der den kumulative binomiske fordelingen er mindre enn eller lik en vilkårsverdi
-DEVSQ = AVVIK.KVADRERT ## Returnerer summen av kvadrerte avvik
-EXPONDIST = EKSP.FORDELING ## Returnerer eksponentialfordelingen
-FDIST = FFORDELING ## Returnerer F-sannsynlighetsfordelingen
-FINV = FFORDELING.INVERS ## Returnerer den inverse av den sannsynlige F-fordelingen
-FISHER = FISHER ## Returnerer Fisher-transformasjonen
-FISHERINV = FISHERINV ## Returnerer den inverse av Fisher-transformasjonen
-FORECAST = PROGNOSE ## Returnerer en verdi langs en lineær trend
-FREQUENCY = FREKVENS ## Returnerer en frekvensdistribusjon som en loddrett matrise
-FTEST = FTEST ## Returnerer resultatet av en F-test
-GAMMADIST = GAMMAFORDELING ## Returnerer gammafordelingen
-GAMMAINV = GAMMAINV ## Returnerer den inverse av den gammakumulative fordelingen
-GAMMALN = GAMMALN ## Returnerer den naturlige logaritmen til gammafunksjonen G(x)
-GEOMEAN = GJENNOMSNITT.GEOMETRISK ## Returnerer den geometriske middelverdien
-GROWTH = VEKST ## Returnerer verdier langs en eksponentiell trend
-HARMEAN = GJENNOMSNITT.HARMONISK ## Returnerer den harmoniske middelverdien
-HYPGEOMDIST = HYPGEOM.FORDELING ## Returnerer den hypergeometriske fordelingen
-INTERCEPT = SKJÆRINGSPUNKT ## Returnerer skjæringspunktet til den lineære regresjonslinjen
-KURT = KURT ## Returnerer kurtosen til et datasett
-LARGE = N.STØRST ## Returnerer den n-te største verdien i et datasett
-LINEST = RETTLINJE ## Returnerer parameterne til en lineær trend
-LOGEST = KURVE ## Returnerer parameterne til en eksponentiell trend
-LOGINV = LOGINV ## Returnerer den inverse lognormale fordelingen
-LOGNORMDIST = LOGNORMFORD ## Returnerer den kumulative lognormale fordelingen
-MAX = STØRST ## Returnerer maksimumsverdien i en argumentliste
-MAXA = MAKSA ## Returnerer maksimumsverdien i en argumentliste, inkludert tall, tekst og logiske verdier
-MEDIAN = MEDIAN ## Returnerer medianen til tallene som er gitt
-MIN = MIN ## Returnerer minimumsverdien i en argumentliste
-MINA = MINA ## Returnerer den minste verdien i en argumentliste, inkludert tall, tekst og logiske verdier
-MODE = MODUS ## Returnerer den vanligste verdien i et datasett
-NEGBINOMDIST = NEGBINOM.FORDELING ## Returnerer den negative binomiske fordelingen
-NORMDIST = NORMALFORDELING ## Returnerer den kumulative normalfordelingen
-NORMINV = NORMINV ## Returnerer den inverse kumulative normalfordelingen
-NORMSDIST = NORMSFORDELING ## Returnerer standard kumulativ normalfordeling
-NORMSINV = NORMSINV ## Returnerer den inverse av den den kumulative standard normalfordelingen
-PEARSON = PEARSON ## Returnerer produktmomentkorrelasjonskoeffisienten, Pearson
-PERCENTILE = PERSENTIL ## Returnerer den n-te persentil av verdiene i et område
-PERCENTRANK = PROSENTDEL ## Returnerer prosentrangeringen av en verdi i et datasett
-PERMUT = PERMUTER ## Returnerer antall permutasjoner for et gitt antall objekter
-POISSON = POISSON ## Returnerer Poissons sannsynlighetsfordeling
-PROB = SANNSYNLIG ## Returnerer sannsynligheten for at verdier i et område ligger mellom to grenser
-QUARTILE = KVARTIL ## Returnerer kvartilen til et datasett
-RANK = RANG ## Returnerer rangeringen av et tall, eller plassen tallet har i en rekke
-RSQ = RKVADRAT ## Returnerer kvadratet av produktmomentkorrelasjonskoeffisienten (Pearsons r)
-SKEW = SKJEVFORDELING ## Returnerer skjevheten i en fordeling
-SLOPE = STIGNINGSTALL ## Returnerer stigningtallet for den lineære regresjonslinjen
-SMALL = N.MINST ## Returnerer den n-te minste verdien i et datasett
-STANDARDIZE = NORMALISER ## Returnerer en normalisert verdi
-STDEV = STDAV ## Estimere standardavvik på grunnlag av et utvalg
-STDEVA = STDAVVIKA ## Estimerer standardavvik basert på et utvalg, inkludert tall, tekst og logiske verdier
-STDEVP = STDAVP ## Beregner standardavvik basert på hele populasjonen
-STDEVPA = STDAVVIKPA ## Beregner standardavvik basert på hele populasjonen, inkludert tall, tekst og logiske verdier
-STEYX = STANDARDFEIL ## Returnerer standardfeilen for den predikerte y-verdien for hver x i regresjonen
-TDIST = TFORDELING ## Returnerer en Student t-fordeling
-TINV = TINV ## Returnerer den inverse Student t-fordelingen
-TREND = TREND ## Returnerer verdier langs en lineær trend
-TRIMMEAN = TRIMMET.GJENNOMSNITT ## Returnerer den interne middelverdien til et datasett
-TTEST = TTEST ## Returnerer sannsynligheten assosiert med en Student t-test
-VAR = VARIANS ## Estimerer varians basert på et utvalg
-VARA = VARIANSA ## Estimerer varians basert på et utvalg, inkludert tall, tekst og logiske verdier
-VARP = VARIANSP ## Beregner varians basert på hele populasjonen
-VARPA = VARIANSPA ## Beregner varians basert på hele populasjonen, inkludert tall, tekst og logiske verdier
-WEIBULL = WEIBULL.FORDELING ## Returnerer Weibull-fordelingen
-ZTEST = ZTEST ## Returnerer den ensidige sannsynlighetsverdien for en z-test
-
-
-##
-## Text functions Tekstfunksjoner
-##
-ASC = STIGENDE ## Endrer fullbreddes (dobbeltbyte) engelske bokstaver eller katakana i en tegnstreng, til halvbreddes (enkeltbyte) tegn
-BAHTTEXT = BAHTTEKST ## Konverterer et tall til tekst, og bruker valutaformatet ß (baht)
-CHAR = TEGNKODE ## Returnerer tegnet som svarer til kodenummeret
-CLEAN = RENSK ## Fjerner alle tegn som ikke kan skrives ut, fra teksten
-CODE = KODE ## Returnerer en numerisk kode for det første tegnet i en tekststreng
-CONCATENATE = KJEDE.SAMMEN ## Slår sammen flere tekstelementer til ett tekstelement
-DOLLAR = VALUTA ## Konverterer et tall til tekst, og bruker valutaformatet $ (dollar)
-EXACT = EKSAKT ## Kontrollerer om to tekstverdier er like
-FIND = FINN ## Finner en tekstverdi inne i en annen (skiller mellom store og små bokstaver)
-FINDB = FINNB ## Finner en tekstverdi inne i en annen (skiller mellom store og små bokstaver)
-FIXED = FASTSATT ## Formaterer et tall som tekst med et bestemt antall desimaler
-JIS = JIS ## Endrer halvbreddes (enkeltbyte) engelske bokstaver eller katakana i en tegnstreng, til fullbreddes (dobbeltbyte) tegn
-LEFT = VENSTRE ## Returnerer tegnene lengst til venstre i en tekstverdi
-LEFTB = VENSTREB ## Returnerer tegnene lengst til venstre i en tekstverdi
-LEN = LENGDE ## Returnerer antall tegn i en tekststreng
-LENB = LENGDEB ## Returnerer antall tegn i en tekststreng
-LOWER = SMÅ ## Konverterer tekst til små bokstaver
-MID = DELTEKST ## Returnerer et angitt antall tegn fra en tekststreng, og begynner fra posisjonen du angir
-MIDB = DELTEKSTB ## Returnerer et angitt antall tegn fra en tekststreng, og begynner fra posisjonen du angir
-PHONETIC = FURIGANA ## Trekker ut fonetiske tegn (furigana) fra en tekststreng
-PROPER = STOR.FORBOKSTAV ## Gir den første bokstaven i hvert ord i en tekstverdi stor forbokstav
-REPLACE = ERSTATT ## Erstatter tegn i en tekst
-REPLACEB = ERSTATTB ## Erstatter tegn i en tekst
-REPT = GJENTA ## Gjentar tekst et gitt antall ganger
-RIGHT = HØYRE ## Returnerer tegnene lengst til høyre i en tekstverdi
-RIGHTB = HØYREB ## Returnerer tegnene lengst til høyre i en tekstverdi
-SEARCH = SØK ## Finner en tekstverdi inne i en annen (skiller ikke mellom store og små bokstaver)
-SEARCHB = SØKB ## Finner en tekstverdi inne i en annen (skiller ikke mellom store og små bokstaver)
-SUBSTITUTE = BYTT.UT ## Bytter ut gammel tekst med ny tekst i en tekststreng
-T = T ## Konverterer argumentene til tekst
-TEXT = TEKST ## Formaterer et tall og konverterer det til tekst
-TRIM = TRIMME ## Fjerner mellomrom fra tekst
-UPPER = STORE ## Konverterer tekst til store bokstaver
-VALUE = VERDI ## Konverterer et tekstargument til et tall
diff --git a/admin/survey/excel/PHPExcel/locale/pl/config b/admin/survey/excel/PHPExcel/locale/pl/config
deleted file mode 100644
index 6823761..0000000
--- a/admin/survey/excel/PHPExcel/locale/pl/config
+++ /dev/null
@@ -1,47 +0,0 @@
-##
-## PHPExcel
-##
-## Copyright (c) 2006 - 2011 PHPExcel
-##
-## This library is free software; you can redistribute it and/or
-## modify it under the terms of the GNU Lesser General Public
-## License as published by the Free Software Foundation; either
-## version 2.1 of the License, or (at your option) any later version.
-##
-## This library is distributed in the hope that it will be useful,
-## but WITHOUT ANY WARRANTY; without even the implied warranty of
-## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-## Lesser General Public License for more details.
-##
-## You should have received a copy of the GNU Lesser General Public
-## License along with this library; if not, write to the Free Software
-## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-##
-## @category PHPExcel
-## @package PHPExcel_Settings
-## @copyright Copyright (c) 2006 - 2011 PHPExcel (http://www.codeplex.com/PHPExcel)
-## @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
-## @version 1.7.8, 2012-10-12
-##
-##
-
-
-ArgumentSeparator = ;
-
-
-##
-## (For future use)
-##
-currencySymbol = zł
-
-
-##
-## Excel Error Codes (For future use)
-##
-NULL = #ZERO!
-DIV0 = #DZIEL/0!
-VALUE = #ARG!
-REF = #ADR!
-NAME = #NAZWA?
-NUM = #LICZBA!
-NA = #N/D!
diff --git a/admin/survey/excel/PHPExcel/locale/pl/functions b/admin/survey/excel/PHPExcel/locale/pl/functions
deleted file mode 100644
index 1485843..0000000
--- a/admin/survey/excel/PHPExcel/locale/pl/functions
+++ /dev/null
@@ -1,438 +0,0 @@
-##
-## PHPExcel
-##
-## Copyright (c) 2006 - 2011 PHPExcel
-##
-## This library is free software; you can redistribute it and/or
-## modify it under the terms of the GNU Lesser General Public
-## License as published by the Free Software Foundation; either
-## version 2.1 of the License, or (at your option) any later version.
-##
-## This library is distributed in the hope that it will be useful,
-## but WITHOUT ANY WARRANTY; without even the implied warranty of
-## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-## Lesser General Public License for more details.
-##
-## You should have received a copy of the GNU Lesser General Public
-## License along with this library; if not, write to the Free Software
-## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-##
-## @category PHPExcel
-## @package PHPExcel_Calculation
-## @copyright Copyright (c) 2006 - 2011 PHPExcel (http://www.codeplex.com/PHPExcel)
-## @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
-## @version 1.7.8, 2012-10-12
-##
-## Data in this file derived from http://www.piuha.fi/excel-function-name-translation/
-##
-##
-
-
-##
-## Add-in and Automation functions Funkcje dodatków i automatyzacji
-##
-GETPIVOTDATA = WEŹDANETABELI ## Zwraca dane przechowywane w raporcie tabeli przestawnej.
-
-
-##
-## Cube functions Funkcje modułów
-##
-CUBEKPIMEMBER = ELEMENT.KPI.MODUŁU ## Zwraca nazwę, właściwość i miarę kluczowego wskaźnika wydajności (KPI) oraz wyświetla nazwę i właściwość w komórce. Wskaźnik KPI jest miarą ilościową, taką jak miesięczny zysk brutto lub kwartalna fluktuacja pracowników, używaną do monitorowania wydajności organizacji.
-CUBEMEMBER = ELEMENT.MODUŁU ## Zwraca element lub krotkę z hierarchii modułu. Służy do sprawdzania, czy element lub krotka istnieje w module.
-CUBEMEMBERPROPERTY = WŁAŚCIWOŚĆ.ELEMENTU.MODUŁU ## Zwraca wartość właściwości elementu w module. Służy do sprawdzania, czy nazwa elementu istnieje w module, i zwracania określonej właściwości dla tego elementu.
-CUBERANKEDMEMBER = USZEREGOWANY.ELEMENT.MODUŁU ## Zwraca n-ty (albo uszeregowany) element zestawu. Służy do zwracania elementu lub elementów zestawu, na przykład najlepszego sprzedawcy lub 10 najlepszych studentów.
-CUBESET = ZESTAW.MODUŁÓW ## Definiuje obliczony zestaw elementów lub krotek, wysyłając wyrażenie zestawu do serwera modułu, który tworzy zestaw i zwraca go do programu Microsoft Office Excel.
-CUBESETCOUNT = LICZNIK.MODUŁÓW.ZESTAWU ## Zwraca liczbę elementów zestawu.
-CUBEVALUE = WARTOŚĆ.MODUŁU ## Zwraca zagregowaną wartość z modułu.
-
-
-##
-## Database functions Funkcje baz danych
-##
-DAVERAGE = BD.ŚREDNIA ## Zwraca wartość średniej wybranych wpisów bazy danych.
-DCOUNT = BD.ILE.REKORDÓW ## Zlicza komórki zawierające liczby w bazie danych.
-DCOUNTA = BD.ILE.REKORDÓW.A ## Zlicza niepuste komórki w bazie danych.
-DGET = BD.POLE ## Wyodrębnia z bazy danych jeden rekord spełniający określone kryteria.
-DMAX = BD.MAX ## Zwraca wartość maksymalną z wybranych wpisów bazy danych.
-DMIN = BD.MIN ## Zwraca wartość minimalną z wybranych wpisów bazy danych.
-DPRODUCT = BD.ILOCZYN ## Mnoży wartości w konkretnym, spełniającym kryteria polu rekordów bazy danych.
-DSTDEV = BD.ODCH.STANDARD ## Szacuje odchylenie standardowe na podstawie próbki z wybranych wpisów bazy danych.
-DSTDEVP = BD.ODCH.STANDARD.POPUL ## Oblicza odchylenie standardowe na podstawie całej populacji wybranych wpisów bazy danych.
-DSUM = BD.SUMA ## Dodaje liczby w kolumnie pól rekordów bazy danych, które spełniają kryteria.
-DVAR = BD.WARIANCJA ## Szacuje wariancję na podstawie próbki z wybranych wpisów bazy danych.
-DVARP = BD.WARIANCJA.POPUL ## Oblicza wariancję na podstawie całej populacji wybranych wpisów bazy danych.
-
-
-##
-## Date and time functions Funkcje dat, godzin i czasu
-##
-DATE = DATA ## Zwraca liczbę seryjną dla wybranej daty.
-DATEVALUE = DATA.WARTOŚĆ ## Konwertuje datę w formie tekstu na liczbę seryjną.
-DAY = DZIEŃ ## Konwertuje liczbę seryjną na dzień miesiąca.
-DAYS360 = DNI.360 ## Oblicza liczbę dni między dwiema datami na podstawie roku 360-dniowego.
-EDATE = UPŁDNI ## Zwraca liczbę seryjną daty jako wskazaną liczbę miesięcy przed określoną datą początkową lub po niej.
-EOMONTH = EOMONTH ## Zwraca liczbę seryjną ostatniego dnia miesiąca przed określoną liczbą miesięcy lub po niej.
-HOUR = GODZINA ## Konwertuje liczbę seryjną na godzinę.
-MINUTE = MINUTA ## Konwertuje liczbę seryjną na minutę.
-MONTH = MIESIĄC ## Konwertuje liczbę seryjną na miesiąc.
-NETWORKDAYS = NETWORKDAYS ## Zwraca liczbę pełnych dni roboczych między dwiema datami.
-NOW = TERAZ ## Zwraca liczbę seryjną bieżącej daty i godziny.
-SECOND = SEKUNDA ## Konwertuje liczbę seryjną na sekundę.
-TIME = CZAS ## Zwraca liczbę seryjną określonego czasu.
-TIMEVALUE = CZAS.WARTOŚĆ ## Konwertuje czas w formie tekstu na liczbę seryjną.
-TODAY = DZIŚ ## Zwraca liczbę seryjną dla daty bieżącej.
-WEEKDAY = DZIEŃ.TYG ## Konwertuje liczbę seryjną na dzień tygodnia.
-WEEKNUM = WEEKNUM ## Konwertuje liczbę seryjną na liczbę reprezentującą numer tygodnia w roku.
-WORKDAY = WORKDAY ## Zwraca liczbę seryjną dla daty przed określoną liczbą dni roboczych lub po niej.
-YEAR = ROK ## Konwertuje liczbę seryjną na rok.
-YEARFRAC = YEARFRAC ## Zwraca część roku reprezentowaną przez pełną liczbę dni między datą początkową a datą końcową.
-
-
-##
-## Engineering functions Funkcje inżynierskie
-##
-BESSELI = BESSELI ## Zwraca wartość zmodyfikowanej funkcji Bessela In(x).
-BESSELJ = BESSELJ ## Zwraca wartość funkcji Bessela Jn(x).
-BESSELK = BESSELK ## Zwraca wartość zmodyfikowanej funkcji Bessela Kn(x).
-BESSELY = BESSELY ## Zwraca wartość funkcji Bessela Yn(x).
-BIN2DEC = BIN2DEC ## Konwertuje liczbę w postaci dwójkowej na liczbę w postaci dziesiętnej.
-BIN2HEX = BIN2HEX ## Konwertuje liczbę w postaci dwójkowej na liczbę w postaci szesnastkowej.
-BIN2OCT = BIN2OCT ## Konwertuje liczbę w postaci dwójkowej na liczbę w postaci ósemkowej.
-COMPLEX = COMPLEX ## Konwertuje część rzeczywistą i urojoną na liczbę zespoloną.
-CONVERT = CONVERT ## Konwertuje liczbę z jednego systemu miar na inny.
-DEC2BIN = DEC2BIN ## Konwertuje liczbę w postaci dziesiętnej na postać dwójkową.
-DEC2HEX = DEC2HEX ## Konwertuje liczbę w postaci dziesiętnej na liczbę w postaci szesnastkowej.
-DEC2OCT = DEC2OCT ## Konwertuje liczbę w postaci dziesiętnej na liczbę w postaci ósemkowej.
-DELTA = DELTA ## Sprawdza, czy dwie wartości są równe.
-ERF = ERF ## Zwraca wartość funkcji błędu.
-ERFC = ERFC ## Zwraca wartość komplementarnej funkcji błędu.
-GESTEP = GESTEP ## Sprawdza, czy liczba jest większa niż wartość progowa.
-HEX2BIN = HEX2BIN ## Konwertuje liczbę w postaci szesnastkowej na liczbę w postaci dwójkowej.
-HEX2DEC = HEX2DEC ## Konwertuje liczbę w postaci szesnastkowej na liczbę w postaci dziesiętnej.
-HEX2OCT = HEX2OCT ## Konwertuje liczbę w postaci szesnastkowej na liczbę w postaci ósemkowej.
-IMABS = IMABS ## Zwraca wartość bezwzględną (moduł) liczby zespolonej.
-IMAGINARY = IMAGINARY ## Zwraca wartość części urojonej liczby zespolonej.
-IMARGUMENT = IMARGUMENT ## Zwraca wartość argumentu liczby zespolonej, przy czym kąt wyrażony jest w radianach.
-IMCONJUGATE = IMCONJUGATE ## Zwraca wartość liczby sprzężonej danej liczby zespolonej.
-IMCOS = IMCOS ## Zwraca wartość cosinusa liczby zespolonej.
-IMDIV = IMDIV ## Zwraca wartość ilorazu dwóch liczb zespolonych.
-IMEXP = IMEXP ## Zwraca postać wykładniczą liczby zespolonej.
-IMLN = IMLN ## Zwraca wartość logarytmu naturalnego liczby zespolonej.
-IMLOG10 = IMLOG10 ## Zwraca wartość logarytmu dziesiętnego liczby zespolonej.
-IMLOG2 = IMLOG2 ## Zwraca wartość logarytmu liczby zespolonej przy podstawie 2.
-IMPOWER = IMPOWER ## Zwraca wartość liczby zespolonej podniesionej do potęgi całkowitej.
-IMPRODUCT = IMPRODUCT ## Zwraca wartość iloczynu liczb zespolonych.
-IMREAL = IMREAL ## Zwraca wartość części rzeczywistej liczby zespolonej.
-IMSIN = IMSIN ## Zwraca wartość sinusa liczby zespolonej.
-IMSQRT = IMSQRT ## Zwraca wartość pierwiastka kwadratowego z liczby zespolonej.
-IMSUB = IMSUB ## Zwraca wartość różnicy dwóch liczb zespolonych.
-IMSUM = IMSUM ## Zwraca wartość sumy liczb zespolonych.
-OCT2BIN = OCT2BIN ## Konwertuje liczbę w postaci ósemkowej na liczbę w postaci dwójkowej.
-OCT2DEC = OCT2DEC ## Konwertuje liczbę w postaci ósemkowej na liczbę w postaci dziesiętnej.
-OCT2HEX = OCT2HEX ## Konwertuje liczbę w postaci ósemkowej na liczbę w postaci szesnastkowej.
-
-
-##
-## Financial functions Funkcje finansowe
-##
-ACCRINT = ACCRINT ## Zwraca narosłe odsetki dla papieru wartościowego z oprocentowaniem okresowym.
-ACCRINTM = ACCRINTM ## Zwraca narosłe odsetki dla papieru wartościowego z oprocentowaniem w terminie wykupu.
-AMORDEGRC = AMORDEGRC ## Zwraca amortyzację dla każdego okresu rozliczeniowego z wykorzystaniem współczynnika amortyzacji.
-AMORLINC = AMORLINC ## Zwraca amortyzację dla każdego okresu rozliczeniowego.
-COUPDAYBS = COUPDAYBS ## Zwraca liczbę dni od początku okresu dywidendy do dnia rozliczeniowego.
-COUPDAYS = COUPDAYS ## Zwraca liczbę dni w okresie dywidendy, z uwzględnieniem dnia rozliczeniowego.
-COUPDAYSNC = COUPDAYSNC ## Zwraca liczbę dni od dnia rozliczeniowego do daty następnego dnia dywidendy.
-COUPNCD = COUPNCD ## Zwraca dzień następnej dywidendy po dniu rozliczeniowym.
-COUPNUM = COUPNUM ## Zwraca liczbę dywidend płatnych między dniem rozliczeniowym a dniem wykupu.
-COUPPCD = COUPPCD ## Zwraca dzień poprzedniej dywidendy przed dniem rozliczeniowym.
-CUMIPMT = CUMIPMT ## Zwraca wartość procentu składanego płatnego między dwoma okresami.
-CUMPRINC = CUMPRINC ## Zwraca wartość kapitału skumulowanego spłaty pożyczki między dwoma okresami.
-DB = DB ## Zwraca amortyzację środka trwałego w danym okresie metodą degresywną z zastosowaniem stałej bazowej.
-DDB = DDB ## Zwraca amortyzację środka trwałego za podany okres metodą degresywną z zastosowaniem podwójnej bazowej lub metodą określoną przez użytkownika.
-DISC = DISC ## Zwraca wartość stopy dyskontowej papieru wartościowego.
-DOLLARDE = DOLLARDE ## Konwertuje cenę w postaci ułamkowej na cenę wyrażoną w postaci dziesiętnej.
-DOLLARFR = DOLLARFR ## Konwertuje cenę wyrażoną w postaci dziesiętnej na cenę wyrażoną w postaci ułamkowej.
-DURATION = DURATION ## Zwraca wartość rocznego przychodu z papieru wartościowego o okresowych wypłatach oprocentowania.
-EFFECT = EFFECT ## Zwraca wartość efektywnej rocznej stopy procentowej.
-FV = FV ## Zwraca przyszłą wartość lokaty.
-FVSCHEDULE = FVSCHEDULE ## Zwraca przyszłą wartość kapitału początkowego wraz z szeregiem procentów składanych.
-INTRATE = INTRATE ## Zwraca wartość stopy procentowej papieru wartościowego całkowicie ulokowanego.
-IPMT = IPMT ## Zwraca wysokość spłaty oprocentowania lokaty za dany okres.
-IRR = IRR ## Zwraca wartość wewnętrznej stopy zwrotu dla serii przepływów gotówkowych.
-ISPMT = ISPMT ## Oblicza wysokość spłaty oprocentowania za dany okres lokaty.
-MDURATION = MDURATION ## Zwraca wartość zmodyfikowanego okresu Macauleya dla papieru wartościowego o założonej wartości nominalnej 100 zł.
-MIRR = MIRR ## Zwraca wartość wewnętrznej stopy zwrotu dla przypadku, gdy dodatnie i ujemne przepływy gotówkowe mają różne stopy.
-NOMINAL = NOMINAL ## Zwraca wysokość nominalnej rocznej stopy procentowej.
-NPER = NPER ## Zwraca liczbę okresów dla lokaty.
-NPV = NPV ## Zwraca wartość bieżącą netto lokaty na podstawie szeregu okresowych przepływów gotówkowych i stopy dyskontowej.
-ODDFPRICE = ODDFPRICE ## Zwraca cenę za 100 zł wartości nominalnej papieru wartościowego z nietypowym pierwszym okresem.
-ODDFYIELD = ODDFYIELD ## Zwraca rentowność papieru wartościowego z nietypowym pierwszym okresem.
-ODDLPRICE = ODDLPRICE ## Zwraca cenę za 100 zł wartości nominalnej papieru wartościowego z nietypowym ostatnim okresem.
-ODDLYIELD = ODDLYIELD ## Zwraca rentowność papieru wartościowego z nietypowym ostatnim okresem.
-PMT = PMT ## Zwraca wartość okresowej płatności raty rocznej.
-PPMT = PPMT ## Zwraca wysokość spłaty kapitału w przypadku lokaty dla danego okresu.
-PRICE = PRICE ## Zwraca cenę za 100 zł wartości nominalnej papieru wartościowego z oprocentowaniem okresowym.
-PRICEDISC = PRICEDISC ## Zwraca cenę za 100 zł wartości nominalnej papieru wartościowego zdyskontowanego.
-PRICEMAT = PRICEMAT ## Zwraca cenę za 100 zł wartości nominalnej papieru wartościowego z oprocentowaniem w terminie wykupu.
-PV = PV ## Zwraca wartość bieżącą lokaty.
-RATE = RATE ## Zwraca wysokość stopy procentowej w okresie raty rocznej.
-RECEIVED = RECEIVED ## Zwraca wartość kapitału otrzymanego przy wykupie papieru wartościowego całkowicie ulokowanego.
-SLN = SLN ## Zwraca amortyzację środka trwałego za jeden okres metodą liniową.
-SYD = SYD ## Zwraca amortyzację środka trwałego za dany okres metodą sumy cyfr lat amortyzacji.
-TBILLEQ = TBILLEQ ## Zwraca rentowność ekwiwalentu obligacji dla bonu skarbowego.
-TBILLPRICE = TBILLPRICE ## Zwraca cenę za 100 zł wartości nominalnej bonu skarbowego.
-TBILLYIELD = TBILLYIELD ## Zwraca rentowność bonu skarbowego.
-VDB = VDB ## Oblicza amortyzację środka trwałego w danym okresie lub jego części metodą degresywną.
-XIRR = XIRR ## Zwraca wartość wewnętrznej stopy zwrotu dla serii rozłożonych w czasie przepływów gotówkowych, niekoniecznie okresowych.
-XNPV = XNPV ## Zwraca wartość bieżącą netto dla serii rozłożonych w czasie przepływów gotówkowych, niekoniecznie okresowych.
-YIELD = YIELD ## Zwraca rentowność papieru wartościowego z oprocentowaniem okresowym.
-YIELDDISC = YIELDDISC ## Zwraca roczną rentowność zdyskontowanego papieru wartościowego, na przykład bonu skarbowego.
-YIELDMAT = YIELDMAT ## Zwraca roczną rentowność papieru wartościowego oprocentowanego przy wykupie.
-
-
-##
-## Information functions Funkcje informacyjne
-##
-CELL = KOMÓRKA ## Zwraca informacje o formacie, położeniu lub zawartości komórki.
-ERROR.TYPE = NR.BŁĘDU ## Zwraca liczbę odpowiadającą typowi błędu.
-INFO = INFO ## Zwraca informację o aktualnym środowisku pracy.
-ISBLANK = CZY.PUSTA ## Zwraca wartość PRAWDA, jeśli wartość jest pusta.
-ISERR = CZY.BŁ ## Zwraca wartość PRAWDA, jeśli wartość jest dowolną wartością błędu, z wyjątkiem #N/D!.
-ISERROR = CZY.BŁĄD ## Zwraca wartość PRAWDA, jeśli wartość jest dowolną wartością błędu.
-ISEVEN = ISEVEN ## Zwraca wartość PRAWDA, jeśli liczba jest parzysta.
-ISLOGICAL = CZY.LOGICZNA ## Zwraca wartość PRAWDA, jeśli wartość jest wartością logiczną.
-ISNA = CZY.BRAK ## Zwraca wartość PRAWDA, jeśli wartość jest wartością błędu #N/D!.
-ISNONTEXT = CZY.NIE.TEKST ## Zwraca wartość PRAWDA, jeśli wartość nie jest tekstem.
-ISNUMBER = CZY.LICZBA ## Zwraca wartość PRAWDA, jeśli wartość jest liczbą.
-ISODD = ISODD ## Zwraca wartość PRAWDA, jeśli liczba jest nieparzysta.
-ISREF = CZY.ADR ## Zwraca wartość PRAWDA, jeśli wartość jest odwołaniem.
-ISTEXT = CZY.TEKST ## Zwraca wartość PRAWDA, jeśli wartość jest tekstem.
-N = L ## Zwraca wartość przekonwertowaną na postać liczbową.
-NA = BRAK ## Zwraca wartość błędu #N/D!.
-TYPE = TYP ## Zwraca liczbę wskazującą typ danych wartości.
-
-
-##
-## Logical functions Funkcje logiczne
-##
-AND = ORAZ ## Zwraca wartość PRAWDA, jeśli wszystkie argumenty mają wartość PRAWDA.
-FALSE = FAŁSZ ## Zwraca wartość logiczną FAŁSZ.
-IF = JEŻELI ## Określa warunek logiczny do sprawdzenia.
-IFERROR = JEŻELI.BŁĄD ## Zwraca określoną wartość, jeśli wynikiem obliczenia formuły jest błąd; w przeciwnym przypadku zwraca wynik formuły.
-NOT = NIE ## Odwraca wartość logiczną argumentu.
-OR = LUB ## Zwraca wartość PRAWDA, jeśli co najmniej jeden z argumentów ma wartość PRAWDA.
-TRUE = PRAWDA ## Zwraca wartość logiczną PRAWDA.
-
-
-##
-## Lookup and reference functions Funkcje wyszukiwania i odwołań
-##
-ADDRESS = ADRES ## Zwraca odwołanie do jednej komórki w arkuszu jako wartość tekstową.
-AREAS = OBSZARY ## Zwraca liczbę obszarów występujących w odwołaniu.
-CHOOSE = WYBIERZ ## Wybiera wartość z listy wartości.
-COLUMN = NR.KOLUMNY ## Zwraca numer kolumny z odwołania.
-COLUMNS = LICZBA.KOLUMN ## Zwraca liczbę kolumn dla danego odwołania.
-HLOOKUP = WYSZUKAJ.POZIOMO ## Przegląda górny wiersz tablicy i zwraca wartość wskazanej komórki.
-HYPERLINK = HIPERŁĄCZE ## Tworzy skrót lub skok, który pozwala otwierać dokument przechowywany na serwerze sieciowym, w sieci intranet lub w Internecie.
-INDEX = INDEKS ## Używa indeksu do wybierania wartości z odwołania lub tablicy.
-INDIRECT = ADR.POŚR ## Zwraca odwołanie określone przez wartość tekstową.
-LOOKUP = WYSZUKAJ ## Wyszukuje wartości w wektorze lub tablicy.
-MATCH = PODAJ.POZYCJĘ ## Wyszukuje wartości w odwołaniu lub w tablicy.
-OFFSET = PRZESUNIĘCIE ## Zwraca adres przesunięty od danego odwołania.
-ROW = WIERSZ ## Zwraca numer wiersza odwołania.
-ROWS = ILE.WIERSZY ## Zwraca liczbę wierszy dla danego odwołania.
-RTD = RTD ## Pobiera dane w czasie rzeczywistym z programu obsługującego automatyzację COM (Automatyzacja: Sposób pracy z obiektami aplikacji pochodzącymi z innej aplikacji lub narzędzia projektowania. Nazywana wcześniej Automatyzacją OLE, Automatyzacja jest standardem przemysłowym i funkcją obiektowego modelu składników (COM, Component Object Model).).
-TRANSPOSE = TRANSPONUJ ## Zwraca transponowaną tablicę.
-VLOOKUP = WYSZUKAJ.PIONOWO ## Przeszukuje pierwszą kolumnę tablicy i przechodzi wzdłuż wiersza, aby zwrócić wartość komórki.
-
-
-##
-## Math and trigonometry functions Funkcje matematyczne i trygonometryczne
-##
-ABS = MODUŁ.LICZBY ## Zwraca wartość absolutną liczby.
-ACOS = ACOS ## Zwraca arcus cosinus liczby.
-ACOSH = ACOSH ## Zwraca arcus cosinus hiperboliczny liczby.
-ASIN = ASIN ## Zwraca arcus sinus liczby.
-ASINH = ASINH ## Zwraca arcus sinus hiperboliczny liczby.
-ATAN = ATAN ## Zwraca arcus tangens liczby.
-ATAN2 = ATAN2 ## Zwraca arcus tangens liczby na podstawie współrzędnych x i y.
-ATANH = ATANH ## Zwraca arcus tangens hiperboliczny liczby.
-CEILING = ZAOKR.W.GÓRĘ ## Zaokrągla liczbę do najbliższej liczby całkowitej lub do najbliższej wielokrotności dokładności.
-COMBIN = KOMBINACJE ## Zwraca liczbę kombinacji dla danej liczby obiektów.
-COS = COS ## Zwraca cosinus liczby.
-COSH = COSH ## Zwraca cosinus hiperboliczny liczby.
-DEGREES = STOPNIE ## Konwertuje radiany na stopnie.
-EVEN = ZAOKR.DO.PARZ ## Zaokrągla liczbę w górę do najbliższej liczby parzystej.
-EXP = EXP ## Zwraca wartość liczby e podniesionej do potęgi określonej przez podaną liczbę.
-FACT = SILNIA ## Zwraca silnię liczby.
-FACTDOUBLE = FACTDOUBLE ## Zwraca podwójną silnię liczby.
-FLOOR = ZAOKR.W.DÓŁ ## Zaokrągla liczbę w dół, w kierunku zera.
-GCD = GCD ## Zwraca największy wspólny dzielnik.
-INT = ZAOKR.DO.CAŁK ## Zaokrągla liczbę w dół do najbliższej liczby całkowitej.
-LCM = LCM ## Zwraca najmniejszą wspólną wielokrotność.
-LN = LN ## Zwraca logarytm naturalny podanej liczby.
-LOG = LOG ## Zwraca logarytm danej liczby przy zadanej podstawie.
-LOG10 = LOG10 ## Zwraca logarytm dziesiętny liczby.
-MDETERM = WYZNACZNIK.MACIERZY ## Zwraca wyznacznik macierzy tablicy.
-MINVERSE = MACIERZ.ODW ## Zwraca odwrotność macierzy tablicy.
-MMULT = MACIERZ.ILOCZYN ## Zwraca iloczyn macierzy dwóch tablic.
-MOD = MOD ## Zwraca resztę z dzielenia.
-MROUND = MROUND ## Zwraca liczbę zaokrągloną do żądanej wielokrotności.
-MULTINOMIAL = MULTINOMIAL ## Zwraca wielomian dla zbioru liczb.
-ODD = ZAOKR.DO.NPARZ ## Zaokrągla liczbę w górę do najbliższej liczby nieparzystej.
-PI = PI ## Zwraca wartość liczby Pi.
-POWER = POTĘGA ## Zwraca liczbę podniesioną do potęgi.
-PRODUCT = ILOCZYN ## Mnoży argumenty.
-QUOTIENT = QUOTIENT ## Zwraca iloraz (całkowity).
-RADIANS = RADIANY ## Konwertuje stopnie na radiany.
-RAND = LOS ## Zwraca liczbę pseudolosową z zakresu od 0 do 1.
-RANDBETWEEN = RANDBETWEEN ## Zwraca liczbę pseudolosową z zakresu określonego przez podane argumenty.
-ROMAN = RZYMSKIE ## Konwertuje liczbę arabską na rzymską jako tekst.
-ROUND = ZAOKR ## Zaokrągla liczbę do określonej liczby cyfr.
-ROUNDDOWN = ZAOKR.DÓŁ ## Zaokrągla liczbę w dół, w kierunku zera.
-ROUNDUP = ZAOKR.GÓRA ## Zaokrągla liczbę w górę, w kierunku od zera.
-SERIESSUM = SERIESSUM ## Zwraca sumę szeregu potęgowego na podstawie wzoru.
-SIGN = ZNAK.LICZBY ## Zwraca znak liczby.
-SIN = SIN ## Zwraca sinus danego kąta.
-SINH = SINH ## Zwraca sinus hiperboliczny liczby.
-SQRT = PIERWIASTEK ## Zwraca dodatni pierwiastek kwadratowy.
-SQRTPI = SQRTPI ## Zwraca pierwiastek kwadratowy iloczynu (liczba * Pi).
-SUBTOTAL = SUMY.POŚREDNIE ## Zwraca sumę częściową listy lub bazy danych.
-SUM = SUMA ## Dodaje argumenty.
-SUMIF = SUMA.JEŻELI ## Dodaje komórki określone przez podane kryterium.
-SUMIFS = SUMA.WARUNKÓW ## Dodaje komórki w zakresie, które spełniają wiele kryteriów.
-SUMPRODUCT = SUMA.ILOCZYNÓW ## Zwraca sumę iloczynów odpowiednich elementów tablicy.
-SUMSQ = SUMA.KWADRATÓW ## Zwraca sumę kwadratów argumentów.
-SUMX2MY2 = SUMA.X2.M.Y2 ## Zwraca sumę różnic kwadratów odpowiednich wartości w dwóch tablicach.
-SUMX2PY2 = SUMA.X2.P.Y2 ## Zwraca sumę sum kwadratów odpowiednich wartości w dwóch tablicach.
-SUMXMY2 = SUMA.XMY.2 ## Zwraca sumę kwadratów różnic odpowiednich wartości w dwóch tablicach.
-TAN = TAN ## Zwraca tangens liczby.
-TANH = TANH ## Zwraca tangens hiperboliczny liczby.
-TRUNC = LICZBA.CAŁK ## Przycina liczbę do wartości całkowitej.
-
-
-##
-## Statistical functions Funkcje statystyczne
-##
-AVEDEV = ODCH.ŚREDNIE ## Zwraca średnią wartość odchyleń absolutnych punktów danych od ich wartości średniej.
-AVERAGE = ŚREDNIA ## Zwraca wartość średnią argumentów.
-AVERAGEA = ŚREDNIA.A ## Zwraca wartość średnią argumentów, z uwzględnieniem liczb, tekstów i wartości logicznych.
-AVERAGEIF = ŚREDNIA.JEŻELI ## Zwraca średnią (średnią arytmetyczną) wszystkich komórek w zakresie, które spełniają podane kryteria.
-AVERAGEIFS = ŚREDNIA.WARUNKÓW ## Zwraca średnią (średnią arytmetyczną) wszystkich komórek, które spełniają jedno lub więcej kryteriów.
-BETADIST = ROZKŁAD.BETA ## Zwraca skumulowaną funkcję gęstości prawdopodobieństwa beta.
-BETAINV = ROZKŁAD.BETA.ODW ## Zwraca odwrotność skumulowanej funkcji gęstości prawdopodobieństwa beta.
-BINOMDIST = ROZKŁAD.DWUM ## Zwraca pojedynczy składnik dwumianowego rozkładu prawdopodobieństwa.
-CHIDIST = ROZKŁAD.CHI ## Zwraca wartość jednostronnego prawdopodobieństwa rozkładu chi-kwadrat.
-CHIINV = ROZKŁAD.CHI.ODW ## Zwraca odwrotność wartości jednostronnego prawdopodobieństwa rozkładu chi-kwadrat.
-CHITEST = TEST.CHI ## Zwraca test niezależności.
-CONFIDENCE = UFNOŚĆ ## Zwraca interwał ufności dla średniej populacji.
-CORREL = WSP.KORELACJI ## Zwraca współczynnik korelacji dwóch zbiorów danych.
-COUNT = ILE.LICZB ## Zlicza liczby znajdujące się na liście argumentów.
-COUNTA = ILE.NIEPUSTYCH ## Zlicza wartości znajdujące się na liście argumentów.
-COUNTBLANK = LICZ.PUSTE ## Zwraca liczbę pustych komórek w pewnym zakresie.
-COUNTIF = LICZ.JEŻELI ## Zlicza komórki wewnątrz zakresu, które spełniają podane kryteria.
-COUNTIFS = LICZ.WARUNKI ## Zlicza komórki wewnątrz zakresu, które spełniają wiele kryteriów.
-COVAR = KOWARIANCJA ## Zwraca kowariancję, czyli średnią wartość iloczynów odpowiednich odchyleń.
-CRITBINOM = PRÓG.ROZKŁAD.DWUM ## Zwraca najmniejszą wartość, dla której skumulowany rozkład dwumianowy jest mniejszy niż wartość kryterium lub równy jej.
-DEVSQ = ODCH.KWADRATOWE ## Zwraca sumę kwadratów odchyleń.
-EXPONDIST = ROZKŁAD.EXP ## Zwraca rozkład wykładniczy.
-FDIST = ROZKŁAD.F ## Zwraca rozkład prawdopodobieństwa F.
-FINV = ROZKŁAD.F.ODW ## Zwraca odwrotność rozkładu prawdopodobieństwa F.
-FISHER = ROZKŁAD.FISHER ## Zwraca transformację Fishera.
-FISHERINV = ROZKŁAD.FISHER.ODW ## Zwraca odwrotność transformacji Fishera.
-FORECAST = REGLINX ## Zwraca wartość trendu liniowego.
-FREQUENCY = CZĘSTOŚĆ ## Zwraca rozkład częstotliwości jako tablicę pionową.
-FTEST = TEST.F ## Zwraca wynik testu F.
-GAMMADIST = ROZKŁAD.GAMMA ## Zwraca rozkład gamma.
-GAMMAINV = ROZKŁAD.GAMMA.ODW ## Zwraca odwrotność skumulowanego rozkładu gamma.
-GAMMALN = ROZKŁAD.LIN.GAMMA ## Zwraca logarytm naturalny funkcji gamma, Γ(x).
-GEOMEAN = ŚREDNIA.GEOMETRYCZNA ## Zwraca średnią geometryczną.
-GROWTH = REGEXPW ## Zwraca wartości trendu wykładniczego.
-HARMEAN = ŚREDNIA.HARMONICZNA ## Zwraca średnią harmoniczną.
-HYPGEOMDIST = ROZKŁAD.HIPERGEOM ## Zwraca rozkład hipergeometryczny.
-INTERCEPT = ODCIĘTA ## Zwraca punkt przecięcia osi pionowej z linią regresji liniowej.
-KURT = KURTOZA ## Zwraca kurtozę zbioru danych.
-LARGE = MAX.K ## Zwraca k-tą największą wartość ze zbioru danych.
-LINEST = REGLINP ## Zwraca parametry trendu liniowego.
-LOGEST = REGEXPP ## Zwraca parametry trendu wykładniczego.
-LOGINV = ROZKŁAD.LOG.ODW ## Zwraca odwrotność rozkładu logarytmu naturalnego.
-LOGNORMDIST = ROZKŁAD.LOG ## Zwraca skumulowany rozkład logarytmu naturalnego.
-MAX = MAX ## Zwraca maksymalną wartość listy argumentów.
-MAXA = MAX.A ## Zwraca maksymalną wartość listy argumentów, z uwzględnieniem liczb, tekstów i wartości logicznych.
-MEDIAN = MEDIANA ## Zwraca medianę podanych liczb.
-MIN = MIN ## Zwraca minimalną wartość listy argumentów.
-MINA = MIN.A ## Zwraca najmniejszą wartość listy argumentów, z uwzględnieniem liczb, tekstów i wartości logicznych.
-MODE = WYST.NAJCZĘŚCIEJ ## Zwraca wartość najczęściej występującą w zbiorze danych.
-NEGBINOMDIST = ROZKŁAD.DWUM.PRZEC ## Zwraca ujemny rozkład dwumianowy.
-NORMDIST = ROZKŁAD.NORMALNY ## Zwraca rozkład normalny skumulowany.
-NORMINV = ROZKŁAD.NORMALNY.ODW ## Zwraca odwrotność rozkładu normalnego skumulowanego.
-NORMSDIST = ROZKŁAD.NORMALNY.S ## Zwraca standardowy rozkład normalny skumulowany.
-NORMSINV = ROZKŁAD.NORMALNY.S.ODW ## Zwraca odwrotność standardowego rozkładu normalnego skumulowanego.
-PEARSON = PEARSON ## Zwraca współczynnik korelacji momentu iloczynu Pearsona.
-PERCENTILE = PERCENTYL ## Wyznacza k-ty percentyl wartości w zakresie.
-PERCENTRANK = PROCENT.POZYCJA ## Zwraca procentową pozycję wartości w zbiorze danych.
-PERMUT = PERMUTACJE ## Zwraca liczbę permutacji dla danej liczby obiektów.
-POISSON = ROZKŁAD.POISSON ## Zwraca rozkład Poissona.
-PROB = PRAWDPD ## Zwraca prawdopodobieństwo, że wartości w zakresie leżą pomiędzy dwiema granicami.
-QUARTILE = KWARTYL ## Wyznacza kwartyl zbioru danych.
-RANK = POZYCJA ## Zwraca pozycję liczby na liście liczb.
-RSQ = R.KWADRAT ## Zwraca kwadrat współczynnika korelacji momentu iloczynu Pearsona.
-SKEW = SKOŚNOŚĆ ## Zwraca skośność rozkładu.
-SLOPE = NACHYLENIE ## Zwraca nachylenie linii regresji liniowej.
-SMALL = MIN.K ## Zwraca k-tą najmniejszą wartość ze zbioru danych.
-STANDARDIZE = NORMALIZUJ ## Zwraca wartość znormalizowaną.
-STDEV = ODCH.STANDARDOWE ## Szacuje odchylenie standardowe na podstawie próbki.
-STDEVA = ODCH.STANDARDOWE.A ## Szacuje odchylenie standardowe na podstawie próbki, z uwzględnieniem liczb, tekstów i wartości logicznych.
-STDEVP = ODCH.STANDARD.POPUL ## Oblicza odchylenie standardowe na podstawie całej populacji.
-STDEVPA = ODCH.STANDARD.POPUL.A ## Oblicza odchylenie standardowe na podstawie całej populacji, z uwzględnieniem liczb, teksów i wartości logicznych.
-STEYX = REGBŁSTD ## Zwraca błąd standardowy przewidzianej wartości y dla każdej wartości x w regresji.
-TDIST = ROZKŁAD.T ## Zwraca rozkład t-Studenta.
-TINV = ROZKŁAD.T.ODW ## Zwraca odwrotność rozkładu t-Studenta.
-TREND = REGLINW ## Zwraca wartości trendu liniowego.
-TRIMMEAN = ŚREDNIA.WEWN ## Zwraca średnią wartość dla wnętrza zbioru danych.
-TTEST = TEST.T ## Zwraca prawdopodobieństwo związane z testem t-Studenta.
-VAR = WARIANCJA ## Szacuje wariancję na podstawie próbki.
-VARA = WARIANCJA.A ## Szacuje wariancję na podstawie próbki, z uwzględnieniem liczb, tekstów i wartości logicznych.
-VARP = WARIANCJA.POPUL ## Oblicza wariancję na podstawie całej populacji.
-VARPA = WARIANCJA.POPUL.A ## Oblicza wariancję na podstawie całej populacji, z uwzględnieniem liczb, tekstów i wartości logicznych.
-WEIBULL = ROZKŁAD.WEIBULL ## Zwraca rozkład Weibulla.
-ZTEST = TEST.Z ## Zwraca wartość jednostronnego prawdopodobieństwa testu z.
-
-
-##
-## Text functions Funkcje tekstowe
-##
-ASC = ASC ## Zamienia litery angielskie lub katakana o pełnej szerokości (dwubajtowe) w ciągu znaków na znaki o szerokości połówkowej (jednobajtowe).
-BAHTTEXT = BAHTTEXT ## Konwertuje liczbę na tekst, stosując format walutowy ß (baht).
-CHAR = ZNAK ## Zwraca znak o podanym numerze kodu.
-CLEAN = OCZYŚĆ ## Usuwa z tekstu wszystkie znaki, które nie mogą być drukowane.
-CODE = KOD ## Zwraca kod numeryczny pierwszego znaku w ciągu tekstowym.
-CONCATENATE = ZŁĄCZ.TEKSTY ## Łączy kilka oddzielnych tekstów w jeden tekst.
-DOLLAR = KWOTA ## Konwertuje liczbę na tekst, stosując format walutowy $ (dolar).
-EXACT = PORÓWNAJ ## Sprawdza identyczność dwóch wartości tekstowych.
-FIND = ZNAJDŹ ## Znajduje jedną wartość tekstową wewnątrz innej (z uwzględnieniem wielkich i małych liter).
-FINDB = ZNAJDŹB ## Znajduje jedną wartość tekstową wewnątrz innej (z uwzględnieniem wielkich i małych liter).
-FIXED = ZAOKR.DO.TEKST ## Formatuje liczbę jako tekst przy stałej liczbie miejsc dziesiętnych.
-JIS = JIS ## Zmienia litery angielskie lub katakana o szerokości połówkowej (jednobajtowe) w ciągu znaków na znaki o pełnej szerokości (dwubajtowe).
-LEFT = LEWY ## Zwraca skrajne lewe znaki z wartości tekstowej.
-LEFTB = LEWYB ## Zwraca skrajne lewe znaki z wartości tekstowej.
-LEN = DŁ ## Zwraca liczbę znaków ciągu tekstowego.
-LENB = DŁ.B ## Zwraca liczbę znaków ciągu tekstowego.
-LOWER = LITERY.MAŁE ## Konwertuje wielkie litery tekstu na małe litery.
-MID = FRAGMENT.TEKSTU ## Zwraca określoną liczbę znaków z ciągu tekstowego, zaczynając od zadanej pozycji.
-MIDB = FRAGMENT.TEKSTU.B ## Zwraca określoną liczbę znaków z ciągu tekstowego, zaczynając od zadanej pozycji.
-PHONETIC = PHONETIC ## Wybiera znaki fonetyczne (furigana) z ciągu tekstowego.
-PROPER = Z.WIELKIEJ.LITERY ## Zastępuje pierwszą literę każdego wyrazu tekstu wielką literą.
-REPLACE = ZASTĄP ## Zastępuje znaki w tekście.
-REPLACEB = ZASTĄP.B ## Zastępuje znaki w tekście.
-REPT = POWT ## Powiela tekst daną liczbę razy.
-RIGHT = PRAWY ## Zwraca skrajne prawe znaki z wartości tekstowej.
-RIGHTB = PRAWYB ## Zwraca skrajne prawe znaki z wartości tekstowej.
-SEARCH = SZUKAJ.TEKST ## Wyszukuje jedną wartość tekstową wewnątrz innej (bez uwzględniania wielkości liter).
-SEARCHB = SZUKAJ.TEKST.B ## Wyszukuje jedną wartość tekstową wewnątrz innej (bez uwzględniania wielkości liter).
-SUBSTITUTE = PODSTAW ## Podstawia nowy tekst w miejsce poprzedniego tekstu w ciągu tekstowym.
-T = T ## Konwertuje argumenty na tekst.
-TEXT = TEKST ## Formatuje liczbę i konwertuje ją na tekst.
-TRIM = USUŃ.ZBĘDNE.ODSTĘPY ## Usuwa spacje z tekstu.
-UPPER = LITERY.WIELKIE ## Konwertuje znaki tekstu na wielkie litery.
-VALUE = WARTOŚĆ ## Konwertuje argument tekstowy na liczbę.
diff --git a/admin/survey/excel/PHPExcel/locale/pt/br/config b/admin/survey/excel/PHPExcel/locale/pt/br/config
deleted file mode 100644
index b8e6964..0000000
--- a/admin/survey/excel/PHPExcel/locale/pt/br/config
+++ /dev/null
@@ -1,47 +0,0 @@
-##
-## PHPExcel
-##
-## Copyright (c) 2006 - 2011 PHPExcel
-##
-## This library is free software; you can redistribute it and/or
-## modify it under the terms of the GNU Lesser General Public
-## License as published by the Free Software Foundation; either
-## version 2.1 of the License, or (at your option) any later version.
-##
-## This library is distributed in the hope that it will be useful,
-## but WITHOUT ANY WARRANTY; without even the implied warranty of
-## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-## Lesser General Public License for more details.
-##
-## You should have received a copy of the GNU Lesser General Public
-## License along with this library; if not, write to the Free Software
-## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-##
-## @category PHPExcel
-## @package PHPExcel_Settings
-## @copyright Copyright (c) 2006 - 2011 PHPExcel (http://www.codeplex.com/PHPExcel)
-## @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
-## @version 1.7.8, 2012-10-12
-##
-##
-
-
-ArgumentSeparator = ;
-
-
-##
-## (For future use)
-##
-currencySymbol = R$
-
-
-##
-## Excel Error Codes (For future use)
-##
-NULL = #NULO!
-DIV0 = #DIV/0!
-VALUE = #VALOR!
-REF = #REF!
-NAME = #NOME?
-NUM = #NÚM!
-NA = #N/D
diff --git a/admin/survey/excel/PHPExcel/locale/pt/br/functions b/admin/survey/excel/PHPExcel/locale/pt/br/functions
deleted file mode 100644
index c53e4c9..0000000
--- a/admin/survey/excel/PHPExcel/locale/pt/br/functions
+++ /dev/null
@@ -1,408 +0,0 @@
-##
-## Add-in and Automation functions Funções Suplemento e Automação
-##
-GETPIVOTDATA = INFODADOSTABELADINÂMICA ## Retorna os dados armazenados em um relatório de tabela dinâmica
-
-
-##
-## Cube functions Funções de Cubo
-##
-CUBEKPIMEMBER = MEMBROKPICUBO ## Retorna o nome de um KPI (indicador de desempenho-chave), uma propriedade e uma medida e exibe o nome e a propriedade na célula. Um KPI é uma medida quantificável, como o lucro bruto mensal ou a rotatividade trimestral dos funcionários, usada para monitorar o desempenho de uma organização.
-CUBEMEMBER = MEMBROCUBO ## Retorna um membro ou tupla em uma hierarquia de cubo. Use para validar se o membro ou tupla existe no cubo.
-CUBEMEMBERPROPERTY = PROPRIEDADEMEMBROCUBO ## Retorna o valor da propriedade de um membro no cubo. Usada para validar a existência do nome do membro no cubo e para retornar a propriedade especificada para esse membro.
-CUBERANKEDMEMBER = MEMBROCLASSIFICADOCUBO ## Retorna o enésimo membro, ou o membro ordenado, em um conjunto. Use para retornar um ou mais elementos em um conjunto, assim como o melhor vendedor ou os dez melhores alunos.
-CUBESET = CONJUNTOCUBO ## Define um conjunto calculado de membros ou tuplas enviando uma expressão do conjunto para o cubo no servidor, que cria o conjunto e o retorna para o Microsoft Office Excel.
-CUBESETCOUNT = CONTAGEMCONJUNTOCUBO ## Retorna o número de itens em um conjunto.
-CUBEVALUE = VALORCUBO ## Retorna um valor agregado de um cubo.
-
-
-##
-## Database functions Funções de banco de dados
-##
-DAVERAGE = BDMÉDIA ## Retorna a média das entradas selecionadas de um banco de dados
-DCOUNT = BDCONTAR ## Conta as células que contêm números em um banco de dados
-DCOUNTA = BDCONTARA ## Conta células não vazias em um banco de dados
-DGET = BDEXTRAIR ## Extrai de um banco de dados um único registro que corresponde a um critério específico
-DMAX = BDMÁX ## Retorna o valor máximo de entradas selecionadas de um banco de dados
-DMIN = BDMÍN ## Retorna o valor mínimo de entradas selecionadas de um banco de dados
-DPRODUCT = BDMULTIPL ## Multiplica os valores em um campo específico de registros que correspondem ao critério em um banco de dados
-DSTDEV = BDEST ## Estima o desvio padrão com base em uma amostra de entradas selecionadas de um banco de dados
-DSTDEVP = BDDESVPA ## Calcula o desvio padrão com base na população inteira de entradas selecionadas de um banco de dados
-DSUM = BDSOMA ## Adiciona os números à coluna de campos de registros do banco de dados que correspondem ao critério
-DVAR = BDVAREST ## Estima a variância com base em uma amostra de entradas selecionadas de um banco de dados
-DVARP = BDVARP ## Calcula a variância com base na população inteira de entradas selecionadas de um banco de dados
-
-
-##
-## Date and time functions Funções de data e hora
-##
-DATE = DATA ## Retorna o número de série de uma data específica
-DATEVALUE = DATA.VALOR ## Converte uma data na forma de texto para um número de série
-DAY = DIA ## Converte um número de série em um dia do mês
-DAYS360 = DIAS360 ## Calcula o número de dias entre duas datas com base em um ano de 360 dias
-EDATE = DATAM ## Retorna o número de série da data que é o número indicado de meses antes ou depois da data inicial
-EOMONTH = FIMMÊS ## Retorna o número de série do último dia do mês antes ou depois de um número especificado de meses
-HOUR = HORA ## Converte um número de série em uma hora
-MINUTE = MINUTO ## Converte um número de série em um minuto
-MONTH = MÊS ## Converte um número de série em um mês
-NETWORKDAYS = DIATRABALHOTOTAL ## Retorna o número de dias úteis inteiros entre duas datas
-NOW = AGORA ## Retorna o número de série seqüencial da data e hora atuais
-SECOND = SEGUNDO ## Converte um número de série em um segundo
-TIME = HORA ## Retorna o número de série de uma hora específica
-TIMEVALUE = VALOR.TEMPO ## Converte um horário na forma de texto para um número de série
-TODAY = HOJE ## Retorna o número de série da data de hoje
-WEEKDAY = DIA.DA.SEMANA ## Converte um número de série em um dia da semana
-WEEKNUM = NÚMSEMANA ## Converte um número de série em um número que representa onde a semana cai numericamente em um ano
-WORKDAY = DIATRABALHO ## Retorna o número de série da data antes ou depois de um número específico de dias úteis
-YEAR = ANO ## Converte um número de série em um ano
-YEARFRAC = FRAÇÃOANO ## Retorna a fração do ano que representa o número de dias entre data_inicial e data_final
-
-
-##
-## Engineering functions Funções de engenharia
-##
-BESSELI = BESSELI ## Retorna a função de Bessel In(x) modificada
-BESSELJ = BESSELJ ## Retorna a função de Bessel Jn(x)
-BESSELK = BESSELK ## Retorna a função de Bessel Kn(x) modificada
-BESSELY = BESSELY ## Retorna a função de Bessel Yn(x)
-BIN2DEC = BIN2DEC ## Converte um número binário em decimal
-BIN2HEX = BIN2HEX ## Converte um número binário em hexadecimal
-BIN2OCT = BIN2OCT ## Converte um número binário em octal
-COMPLEX = COMPLEX ## Converte coeficientes reais e imaginários e um número complexo
-CONVERT = CONVERTER ## Converte um número de um sistema de medida para outro
-DEC2BIN = DECABIN ## Converte um número decimal em binário
-DEC2HEX = DECAHEX ## Converte um número decimal em hexadecimal
-DEC2OCT = DECAOCT ## Converte um número decimal em octal
-DELTA = DELTA ## Testa se dois valores são iguais
-ERF = FUNERRO ## Retorna a função de erro
-ERFC = FUNERROCOMPL ## Retorna a função de erro complementar
-GESTEP = DEGRAU ## Testa se um número é maior do que um valor limite
-HEX2BIN = HEXABIN ## Converte um número hexadecimal em binário
-HEX2DEC = HEXADEC ## Converte um número hexadecimal em decimal
-HEX2OCT = HEXAOCT ## Converte um número hexadecimal em octal
-IMABS = IMABS ## Retorna o valor absoluto (módulo) de um número complexo
-IMAGINARY = IMAGINÁRIO ## Retorna o coeficiente imaginário de um número complexo
-IMARGUMENT = IMARG ## Retorna o argumento teta, um ângulo expresso em radianos
-IMCONJUGATE = IMCONJ ## Retorna o conjugado complexo de um número complexo
-IMCOS = IMCOS ## Retorna o cosseno de um número complexo
-IMDIV = IMDIV ## Retorna o quociente de dois números complexos
-IMEXP = IMEXP ## Retorna o exponencial de um número complexo
-IMLN = IMLN ## Retorna o logaritmo natural de um número complexo
-IMLOG10 = IMLOG10 ## Retorna o logaritmo de base 10 de um número complexo
-IMLOG2 = IMLOG2 ## Retorna o logaritmo de base 2 de um número complexo
-IMPOWER = IMPOT ## Retorna um número complexo elevado a uma potência inteira
-IMPRODUCT = IMPROD ## Retorna o produto de números complexos
-IMREAL = IMREAL ## Retorna o coeficiente real de um número complexo
-IMSIN = IMSENO ## Retorna o seno de um número complexo
-IMSQRT = IMRAIZ ## Retorna a raiz quadrada de um número complexo
-IMSUB = IMSUBTR ## Retorna a diferença entre dois números complexos
-IMSUM = IMSOMA ## Retorna a soma de números complexos
-OCT2BIN = OCTABIN ## Converte um número octal em binário
-OCT2DEC = OCTADEC ## Converte um número octal em decimal
-OCT2HEX = OCTAHEX ## Converte um número octal em hexadecimal
-
-
-##
-## Financial functions Funções financeiras
-##
-ACCRINT = JUROSACUM ## Retorna a taxa de juros acumulados de um título que paga uma taxa periódica de juros
-ACCRINTM = JUROSACUMV ## Retorna os juros acumulados de um título que paga juros no vencimento
-AMORDEGRC = AMORDEGRC ## Retorna a depreciação para cada período contábil usando o coeficiente de depreciação
-AMORLINC = AMORLINC ## Retorna a depreciação para cada período contábil
-COUPDAYBS = CUPDIASINLIQ ## Retorna o número de dias do início do período de cupom até a data de liquidação
-COUPDAYS = CUPDIAS ## Retorna o número de dias no período de cupom que contém a data de quitação
-COUPDAYSNC = CUPDIASPRÓX ## Retorna o número de dias da data de liquidação até a data do próximo cupom
-COUPNCD = CUPDATAPRÓX ## Retorna a próxima data de cupom após a data de quitação
-COUPNUM = CUPNÚM ## Retorna o número de cupons pagáveis entre as datas de quitação e vencimento
-COUPPCD = CUPDATAANT ## Retorna a data de cupom anterior à data de quitação
-CUMIPMT = PGTOJURACUM ## Retorna os juros acumulados pagos entre dois períodos
-CUMPRINC = PGTOCAPACUM ## Retorna o capital acumulado pago sobre um empréstimo entre dois períodos
-DB = BD ## Retorna a depreciação de um ativo para um período especificado, usando o método de balanço de declínio fixo
-DDB = BDD ## Retorna a depreciação de um ativo com relação a um período especificado usando o método de saldos decrescentes duplos ou qualquer outro método especificado por você
-DISC = DESC ## Retorna a taxa de desconto de um título
-DOLLARDE = MOEDADEC ## Converte um preço em formato de moeda, na forma fracionária, em um preço na forma decimal
-DOLLARFR = MOEDAFRA ## Converte um preço, apresentado na forma decimal, em um preço apresentado na forma fracionária
-DURATION = DURAÇÃO ## Retorna a duração anual de um título com pagamentos de juros periódicos
-EFFECT = EFETIVA ## Retorna a taxa de juros anual efetiva
-FV = VF ## Retorna o valor futuro de um investimento
-FVSCHEDULE = VFPLANO ## Retorna o valor futuro de um capital inicial após a aplicação de uma série de taxas de juros compostas
-INTRATE = TAXAJUROS ## Retorna a taxa de juros de um título totalmente investido
-IPMT = IPGTO ## Retorna o pagamento de juros para um investimento em um determinado período
-IRR = TIR ## Retorna a taxa interna de retorno de uma série de fluxos de caixa
-ISPMT = ÉPGTO ## Calcula os juros pagos durante um período específico de um investimento
-MDURATION = MDURAÇÃO ## Retorna a duração de Macauley modificada para um título com um valor de paridade equivalente a R$ 100
-MIRR = MTIR ## Calcula a taxa interna de retorno em que fluxos de caixa positivos e negativos são financiados com diferentes taxas
-NOMINAL = NOMINAL ## Retorna a taxa de juros nominal anual
-NPER = NPER ## Retorna o número de períodos de um investimento
-NPV = VPL ## Retorna o valor líquido atual de um investimento com base em uma série de fluxos de caixa periódicos e em uma taxa de desconto
-ODDFPRICE = PREÇOPRIMINC ## Retorna o preço por R$ 100 de valor nominal de um título com um primeiro período indefinido
-ODDFYIELD = LUCROPRIMINC ## Retorna o rendimento de um título com um primeiro período indefinido
-ODDLPRICE = PREÇOÚLTINC ## Retorna o preço por R$ 100 de valor nominal de um título com um último período de cupom indefinido
-ODDLYIELD = LUCROÚLTINC ## Retorna o rendimento de um título com um último período indefinido
-PMT = PGTO ## Retorna o pagamento periódico de uma anuidade
-PPMT = PPGTO ## Retorna o pagamento de capital para determinado período de investimento
-PRICE = PREÇO ## Retorna a preço por R$ 100,00 de valor nominal de um título que paga juros periódicos
-PRICEDISC = PREÇODESC ## Retorna o preço por R$ 100,00 de valor nominal de um título descontado
-PRICEMAT = PREÇOVENC ## Retorna o preço por R$ 100,00 de valor nominal de um título que paga juros no vencimento
-PV = VP ## Retorna o valor presente de um investimento
-RATE = TAXA ## Retorna a taxa de juros por período de uma anuidade
-RECEIVED = RECEBER ## Retorna a quantia recebida no vencimento de um título totalmente investido
-SLN = DPD ## Retorna a depreciação em linha reta de um ativo durante um período
-SYD = SDA ## Retorna a depreciação dos dígitos da soma dos anos de um ativo para um período especificado
-TBILLEQ = OTN ## Retorna o rendimento de um título equivalente a uma obrigação do Tesouro
-TBILLPRICE = OTNVALOR ## Retorna o preço por R$ 100,00 de valor nominal de uma obrigação do Tesouro
-TBILLYIELD = OTNLUCRO ## Retorna o rendimento de uma obrigação do Tesouro
-VDB = BDV ## Retorna a depreciação de um ativo para um período especificado ou parcial usando um método de balanço declinante
-XIRR = XTIR ## Fornece a taxa interna de retorno para um programa de fluxos de caixa que não é necessariamente periódico
-XNPV = XVPL ## Retorna o valor presente líquido de um programa de fluxos de caixa que não é necessariamente periódico
-YIELD = LUCRO ## Retorna o lucro de um título que paga juros periódicos
-YIELDDISC = LUCRODESC ## Retorna o rendimento anual de um título descontado. Por exemplo, uma obrigação do Tesouro
-YIELDMAT = LUCROVENC ## Retorna o lucro anual de um título que paga juros no vencimento
-
-
-##
-## Information functions Funções de informação
-##
-CELL = CÉL ## Retorna informações sobre formatação, localização ou conteúdo de uma célula
-ERROR.TYPE = TIPO.ERRO ## Retorna um número correspondente a um tipo de erro
-INFO = INFORMAÇÃO ## Retorna informações sobre o ambiente operacional atual
-ISBLANK = ÉCÉL.VAZIA ## Retorna VERDADEIRO se o valor for vazio
-ISERR = ÉERRO ## Retorna VERDADEIRO se o valor for um valor de erro diferente de #N/D
-ISERROR = ÉERROS ## Retorna VERDADEIRO se o valor for um valor de erro
-ISEVEN = ÉPAR ## Retorna VERDADEIRO se o número for par
-ISLOGICAL = ÉLÓGICO ## Retorna VERDADEIRO se o valor for um valor lógico
-ISNA = É.NÃO.DISP ## Retorna VERDADEIRO se o valor for o valor de erro #N/D
-ISNONTEXT = É.NÃO.TEXTO ## Retorna VERDADEIRO se o valor for diferente de texto
-ISNUMBER = ÉNÚM ## Retorna VERDADEIRO se o valor for um número
-ISODD = ÉIMPAR ## Retorna VERDADEIRO se o número for ímpar
-ISREF = ÉREF ## Retorna VERDADEIRO se o valor for uma referência
-ISTEXT = ÉTEXTO ## Retorna VERDADEIRO se o valor for texto
-N = N ## Retorna um valor convertido em um número
-NA = NÃO.DISP ## Retorna o valor de erro #N/D
-TYPE = TIPO ## Retorna um número indicando o tipo de dados de um valor
-
-
-##
-## Logical functions Funções lógicas
-##
-AND = E ## Retorna VERDADEIRO se todos os seus argumentos forem VERDADEIROS
-FALSE = FALSO ## Retorna o valor lógico FALSO
-IF = SE ## Especifica um teste lógico a ser executado
-IFERROR = SEERRO ## Retornará um valor que você especifica se uma fórmula for avaliada para um erro; do contrário, retornará o resultado da fórmula
-NOT = NÃO ## Inverte o valor lógico do argumento
-OR = OU ## Retorna VERDADEIRO se um dos argumentos for VERDADEIRO
-TRUE = VERDADEIRO ## Retorna o valor lógico VERDADEIRO
-
-
-##
-## Lookup and reference functions Funções de pesquisa e referência
-##
-ADDRESS = ENDEREÇO ## Retorna uma referência como texto para uma única célula em uma planilha
-AREAS = ÁREAS ## Retorna o número de áreas em uma referência
-CHOOSE = ESCOLHER ## Escolhe um valor a partir de uma lista de valores
-COLUMN = COL ## Retorna o número da coluna de uma referência
-COLUMNS = COLS ## Retorna o número de colunas em uma referência
-HLOOKUP = PROCH ## Procura na linha superior de uma matriz e retorna o valor da célula especificada
-HYPERLINK = HYPERLINK ## Cria um atalho ou salto que abre um documento armazenado em um servidor de rede, uma intranet ou na Internet
-INDEX = ÍNDICE ## Usa um índice para escolher um valor de uma referência ou matriz
-INDIRECT = INDIRETO ## Retorna uma referência indicada por um valor de texto
-LOOKUP = PROC ## Procura valores em um vetor ou em uma matriz
-MATCH = CORRESP ## Procura valores em uma referência ou em uma matriz
-OFFSET = DESLOC ## Retorna um deslocamento de referência com base em uma determinada referência
-ROW = LIN ## Retorna o número da linha de uma referência
-ROWS = LINS ## Retorna o número de linhas em uma referência
-RTD = RTD ## Recupera dados em tempo real de um programa que ofereça suporte a automação COM (automação: uma forma de trabalhar com objetos de um aplicativo a partir de outro aplicativo ou ferramenta de desenvolvimento. Chamada inicialmente de automação OLE, a automação é um padrão industrial e um recurso do modelo de objeto componente (COM).)
-TRANSPOSE = TRANSPOR ## Retorna a transposição de uma matriz
-VLOOKUP = PROCV ## Procura na primeira coluna de uma matriz e move ao longo da linha para retornar o valor de uma célula
-
-
-##
-## Math and trigonometry functions Funções matemáticas e trigonométricas
-##
-ABS = ABS ## Retorna o valor absoluto de um número
-ACOS = ACOS ## Retorna o arco cosseno de um número
-ACOSH = ACOSH ## Retorna o cosseno hiperbólico inverso de um número
-ASIN = ASEN ## Retorna o arco seno de um número
-ASINH = ASENH ## Retorna o seno hiperbólico inverso de um número
-ATAN = ATAN ## Retorna o arco tangente de um número
-ATAN2 = ATAN2 ## Retorna o arco tangente das coordenadas x e y especificadas
-ATANH = ATANH ## Retorna a tangente hiperbólica inversa de um número
-CEILING = TETO ## Arredonda um número para o inteiro mais próximo ou para o múltiplo mais próximo de significância
-COMBIN = COMBIN ## Retorna o número de combinações de um determinado número de objetos
-COS = COS ## Retorna o cosseno de um número
-COSH = COSH ## Retorna o cosseno hiperbólico de um número
-DEGREES = GRAUS ## Converte radianos em graus
-EVEN = PAR ## Arredonda um número para cima até o inteiro par mais próximo
-EXP = EXP ## Retorna e elevado à potência de um número especificado
-FACT = FATORIAL ## Retorna o fatorial de um número
-FACTDOUBLE = FATDUPLO ## Retorna o fatorial duplo de um número
-FLOOR = ARREDMULTB ## Arredonda um número para baixo até zero
-GCD = MDC ## Retorna o máximo divisor comum
-INT = INT ## Arredonda um número para baixo até o número inteiro mais próximo
-LCM = MMC ## Retorna o mínimo múltiplo comum
-LN = LN ## Retorna o logaritmo natural de um número
-LOG = LOG ## Retorna o logaritmo de um número de uma base especificada
-LOG10 = LOG10 ## Retorna o logaritmo de base 10 de um número
-MDETERM = MATRIZ.DETERM ## Retorna o determinante de uma matriz de uma variável do tipo matriz
-MINVERSE = MATRIZ.INVERSO ## Retorna a matriz inversa de uma matriz
-MMULT = MATRIZ.MULT ## Retorna o produto de duas matrizes
-MOD = RESTO ## Retorna o resto da divisão
-MROUND = MARRED ## Retorna um número arredondado ao múltiplo desejado
-MULTINOMIAL = MULTINOMIAL ## Retorna o multinomial de um conjunto de números
-ODD = ÍMPAR ## Arredonda um número para cima até o inteiro ímpar mais próximo
-PI = PI ## Retorna o valor de Pi
-POWER = POTÊNCIA ## Fornece o resultado de um número elevado a uma potência
-PRODUCT = MULT ## Multiplica seus argumentos
-QUOTIENT = QUOCIENTE ## Retorna a parte inteira de uma divisão
-RADIANS = RADIANOS ## Converte graus em radianos
-RAND = ALEATÓRIO ## Retorna um número aleatório entre 0 e 1
-RANDBETWEEN = ALEATÓRIOENTRE ## Retorna um número aleatório entre os números especificados
-ROMAN = ROMANO ## Converte um algarismo arábico em romano, como texto
-ROUND = ARRED ## Arredonda um número até uma quantidade especificada de dígitos
-ROUNDDOWN = ARREDONDAR.PARA.BAIXO ## Arredonda um número para baixo até zero
-ROUNDUP = ARREDONDAR.PARA.CIMA ## Arredonda um número para cima, afastando-o de zero
-SERIESSUM = SOMASEQÜÊNCIA ## Retorna a soma de uma série polinomial baseada na fórmula
-SIGN = SINAL ## Retorna o sinal de um número
-SIN = SEN ## Retorna o seno de um ângulo dado
-SINH = SENH ## Retorna o seno hiperbólico de um número
-SQRT = RAIZ ## Retorna uma raiz quadrada positiva
-SQRTPI = RAIZPI ## Retorna a raiz quadrada de (núm* pi)
-SUBTOTAL = SUBTOTAL ## Retorna um subtotal em uma lista ou em um banco de dados
-SUM = SOMA ## Soma seus argumentos
-SUMIF = SOMASE ## Adiciona as células especificadas por um determinado critério
-SUMIFS = SOMASE ## Adiciona as células em um intervalo que atende a vários critérios
-SUMPRODUCT = SOMARPRODUTO ## Retorna a soma dos produtos de componentes correspondentes de matrizes
-SUMSQ = SOMAQUAD ## Retorna a soma dos quadrados dos argumentos
-SUMX2MY2 = SOMAX2DY2 ## Retorna a soma da diferença dos quadrados dos valores correspondentes em duas matrizes
-SUMX2PY2 = SOMAX2SY2 ## Retorna a soma da soma dos quadrados dos valores correspondentes em duas matrizes
-SUMXMY2 = SOMAXMY2 ## Retorna a soma dos quadrados das diferenças dos valores correspondentes em duas matrizes
-TAN = TAN ## Retorna a tangente de um número
-TANH = TANH ## Retorna a tangente hiperbólica de um número
-TRUNC = TRUNCAR ## Trunca um número para um inteiro
-
-
-##
-## Statistical functions Funções estatísticas
-##
-AVEDEV = DESV.MÉDIO ## Retorna a média aritmética dos desvios médios dos pontos de dados a partir de sua média
-AVERAGE = MÉDIA ## Retorna a média dos argumentos
-AVERAGEA = MÉDIAA ## Retorna a média dos argumentos, inclusive números, texto e valores lógicos
-AVERAGEIF = MÉDIASE ## Retorna a média (média aritmética) de todas as células em um intervalo que atendem a um determinado critério
-AVERAGEIFS = MÉDIASES ## Retorna a média (média aritmética) de todas as células que atendem a múltiplos critérios.
-BETADIST = DISTBETA ## Retorna a função de distribuição cumulativa beta
-BETAINV = BETA.ACUM.INV ## Retorna o inverso da função de distribuição cumulativa para uma distribuição beta especificada
-BINOMDIST = DISTRBINOM ## Retorna a probabilidade de distribuição binomial do termo individual
-CHIDIST = DIST.QUI ## Retorna a probabilidade unicaudal da distribuição qui-quadrada
-CHIINV = INV.QUI ## Retorna o inverso da probabilidade uni-caudal da distribuição qui-quadrada
-CHITEST = TESTE.QUI ## Retorna o teste para independência
-CONFIDENCE = INT.CONFIANÇA ## Retorna o intervalo de confiança para uma média da população
-CORREL = CORREL ## Retorna o coeficiente de correlação entre dois conjuntos de dados
-COUNT = CONT.NÚM ## Calcula quantos números há na lista de argumentos
-COUNTA = CONT.VALORES ## Calcula quantos valores há na lista de argumentos
-COUNTBLANK = CONTAR.VAZIO ## Conta o número de células vazias no intervalo especificado
-COUNTIF = CONT.SE ## Calcula o número de células não vazias em um intervalo que corresponde a determinados critérios
-COUNTIFS = CONT.SES ## Conta o número de células dentro de um intervalo que atende a múltiplos critérios
-COVAR = COVAR ## Retorna a covariância, a média dos produtos dos desvios pares
-CRITBINOM = CRIT.BINOM ## Retorna o menor valor para o qual a distribuição binomial cumulativa é menor ou igual ao valor padrão
-DEVSQ = DESVQ ## Retorna a soma dos quadrados dos desvios
-EXPONDIST = DISTEXPON ## Retorna a distribuição exponencial
-FDIST = DISTF ## Retorna a distribuição de probabilidade F
-FINV = INVF ## Retorna o inverso da distribuição de probabilidades F
-FISHER = FISHER ## Retorna a transformação Fisher
-FISHERINV = FISHERINV ## Retorna o inverso da transformação Fisher
-FORECAST = PREVISÃO ## Retorna um valor ao longo de uma linha reta
-FREQUENCY = FREQÜÊNCIA ## Retorna uma distribuição de freqüência como uma matriz vertical
-FTEST = TESTEF ## Retorna o resultado de um teste F
-GAMMADIST = DISTGAMA ## Retorna a distribuição gama
-GAMMAINV = INVGAMA ## Retorna o inverso da distribuição cumulativa gama
-GAMMALN = LNGAMA ## Retorna o logaritmo natural da função gama, G(x)
-GEOMEAN = MÉDIA.GEOMÉTRICA ## Retorna a média geométrica
-GROWTH = CRESCIMENTO ## Retorna valores ao longo de uma tendência exponencial
-HARMEAN = MÉDIA.HARMÔNICA ## Retorna a média harmônica
-HYPGEOMDIST = DIST.HIPERGEOM ## Retorna a distribuição hipergeométrica
-INTERCEPT = INTERCEPÇÃO ## Retorna a intercepção da linha de regressão linear
-KURT = CURT ## Retorna a curtose de um conjunto de dados
-LARGE = MAIOR ## Retorna o maior valor k-ésimo de um conjunto de dados
-LINEST = PROJ.LIN ## Retorna os parâmetros de uma tendência linear
-LOGEST = PROJ.LOG ## Retorna os parâmetros de uma tendência exponencial
-LOGINV = INVLOG ## Retorna o inverso da distribuição lognormal
-LOGNORMDIST = DIST.LOGNORMAL ## Retorna a distribuição lognormal cumulativa
-MAX = MÁXIMO ## Retorna o valor máximo em uma lista de argumentos
-MAXA = MÁXIMOA ## Retorna o maior valor em uma lista de argumentos, inclusive números, texto e valores lógicos
-MEDIAN = MED ## Retorna a mediana dos números indicados
-MIN = MÍNIMO ## Retorna o valor mínimo em uma lista de argumentos
-MINA = MÍNIMOA ## Retorna o menor valor em uma lista de argumentos, inclusive números, texto e valores lógicos
-MODE = MODO ## Retorna o valor mais comum em um conjunto de dados
-NEGBINOMDIST = DIST.BIN.NEG ## Retorna a distribuição binomial negativa
-NORMDIST = DIST.NORM ## Retorna a distribuição cumulativa normal
-NORMINV = INV.NORM ## Retorna o inverso da distribuição cumulativa normal
-NORMSDIST = DIST.NORMP ## Retorna a distribuição cumulativa normal padrão
-NORMSINV = INV.NORMP ## Retorna o inverso da distribuição cumulativa normal padrão
-PEARSON = PEARSON ## Retorna o coeficiente de correlação do momento do produto Pearson
-PERCENTILE = PERCENTIL ## Retorna o k-ésimo percentil de valores em um intervalo
-PERCENTRANK = ORDEM.PORCENTUAL ## Retorna a ordem percentual de um valor em um conjunto de dados
-PERMUT = PERMUT ## Retorna o número de permutações de um determinado número de objetos
-POISSON = POISSON ## Retorna a distribuição Poisson
-PROB = PROB ## Retorna a probabilidade de valores em um intervalo estarem entre dois limites
-QUARTILE = QUARTIL ## Retorna o quartil do conjunto de dados
-RANK = ORDEM ## Retorna a posição de um número em uma lista de números
-RSQ = RQUAD ## Retorna o quadrado do coeficiente de correlação do momento do produto de Pearson
-SKEW = DISTORÇÃO ## Retorna a distorção de uma distribuição
-SLOPE = INCLINAÇÃO ## Retorna a inclinação da linha de regressão linear
-SMALL = MENOR ## Retorna o menor valor k-ésimo do conjunto de dados
-STANDARDIZE = PADRONIZAR ## Retorna um valor normalizado
-STDEV = DESVPAD ## Estima o desvio padrão com base em uma amostra
-STDEVA = DESVPADA ## Estima o desvio padrão com base em uma amostra, inclusive números, texto e valores lógicos
-STDEVP = DESVPADP ## Calcula o desvio padrão com base na população total
-STDEVPA = DESVPADPA ## Calcula o desvio padrão com base na população total, inclusive números, texto e valores lógicos
-STEYX = EPADYX ## Retorna o erro padrão do valor-y previsto para cada x da regressão
-TDIST = DISTT ## Retorna a distribuição t de Student
-TINV = INVT ## Retorna o inverso da distribuição t de Student
-TREND = TENDÊNCIA ## Retorna valores ao longo de uma tendência linear
-TRIMMEAN = MÉDIA.INTERNA ## Retorna a média do interior de um conjunto de dados
-TTEST = TESTET ## Retorna a probabilidade associada ao teste t de Student
-VAR = VAR ## Estima a variância com base em uma amostra
-VARA = VARA ## Estima a variância com base em uma amostra, inclusive números, texto e valores lógicos
-VARP = VARP ## Calcula a variância com base na população inteira
-VARPA = VARPA ## Calcula a variância com base na população total, inclusive números, texto e valores lógicos
-WEIBULL = WEIBULL ## Retorna a distribuição Weibull
-ZTEST = TESTEZ ## Retorna o valor de probabilidade uni-caudal de um teste-z
-
-
-##
-## Text functions Funções de texto
-##
-ASC = ASC ## Altera letras do inglês ou katakana de largura total (bytes duplos) dentro de uma seqüência de caracteres para caracteres de meia largura (byte único)
-BAHTTEXT = BAHTTEXT ## Converte um número em um texto, usando o formato de moeda ß (baht)
-CHAR = CARACT ## Retorna o caractere especificado pelo número de código
-CLEAN = TIRAR ## Remove todos os caracteres do texto que não podem ser impressos
-CODE = CÓDIGO ## Retorna um código numérico para o primeiro caractere de uma seqüência de caracteres de texto
-CONCATENATE = CONCATENAR ## Agrupa vários itens de texto em um único item de texto
-DOLLAR = MOEDA ## Converte um número em texto, usando o formato de moeda $ (dólar)
-EXACT = EXATO ## Verifica se dois valores de texto são idênticos
-FIND = PROCURAR ## Procura um valor de texto dentro de outro (diferencia maiúsculas de minúsculas)
-FINDB = PROCURARB ## Procura um valor de texto dentro de outro (diferencia maiúsculas de minúsculas)
-FIXED = DEF.NÚM.DEC ## Formata um número como texto com um número fixo de decimais
-JIS = JIS ## Altera letras do inglês ou katakana de meia largura (byte único) dentro de uma seqüência de caracteres para caracteres de largura total (bytes duplos)
-LEFT = ESQUERDA ## Retorna os caracteres mais à esquerda de um valor de texto
-LEFTB = ESQUERDAB ## Retorna os caracteres mais à esquerda de um valor de texto
-LEN = NÚM.CARACT ## Retorna o número de caracteres em uma seqüência de texto
-LENB = NÚM.CARACTB ## Retorna o número de caracteres em uma seqüência de texto
-LOWER = MINÚSCULA ## Converte texto para minúsculas
-MID = EXT.TEXTO ## Retorna um número específico de caracteres de uma seqüência de texto começando na posição especificada
-MIDB = EXT.TEXTOB ## Retorna um número específico de caracteres de uma seqüência de texto começando na posição especificada
-PHONETIC = FONÉTICA ## Extrai os caracteres fonéticos (furigana) de uma seqüência de caracteres de texto
-PROPER = PRI.MAIÚSCULA ## Coloca a primeira letra de cada palavra em maiúscula em um valor de texto
-REPLACE = MUDAR ## Muda os caracteres dentro do texto
-REPLACEB = MUDARB ## Muda os caracteres dentro do texto
-REPT = REPT ## Repete o texto um determinado número de vezes
-RIGHT = DIREITA ## Retorna os caracteres mais à direita de um valor de texto
-RIGHTB = DIREITAB ## Retorna os caracteres mais à direita de um valor de texto
-SEARCH = LOCALIZAR ## Localiza um valor de texto dentro de outro (não diferencia maiúsculas de minúsculas)
-SEARCHB = LOCALIZARB ## Localiza um valor de texto dentro de outro (não diferencia maiúsculas de minúsculas)
-SUBSTITUTE = SUBSTITUIR ## Substitui um novo texto por um texto antigo em uma seqüência de texto
-T = T ## Converte os argumentos em texto
-TEXT = TEXTO ## Formata um número e o converte em texto
-TRIM = ARRUMAR ## Remove espaços do texto
-UPPER = MAIÚSCULA ## Converte o texto em maiúsculas
-VALUE = VALOR ## Converte um argumento de texto em um número
diff --git a/admin/survey/excel/PHPExcel/locale/pt/config b/admin/survey/excel/PHPExcel/locale/pt/config
deleted file mode 100644
index 595ee96..0000000
--- a/admin/survey/excel/PHPExcel/locale/pt/config
+++ /dev/null
@@ -1,47 +0,0 @@
-##
-## PHPExcel
-##
-## Copyright (c) 2006 - 2011 PHPExcel
-##
-## This library is free software; you can redistribute it and/or
-## modify it under the terms of the GNU Lesser General Public
-## License as published by the Free Software Foundation; either
-## version 2.1 of the License, or (at your option) any later version.
-##
-## This library is distributed in the hope that it will be useful,
-## but WITHOUT ANY WARRANTY; without even the implied warranty of
-## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-## Lesser General Public License for more details.
-##
-## You should have received a copy of the GNU Lesser General Public
-## License along with this library; if not, write to the Free Software
-## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-##
-## @category PHPExcel
-## @package PHPExcel_Settings
-## @copyright Copyright (c) 2006 - 2011 PHPExcel (http://www.codeplex.com/PHPExcel)
-## @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
-## @version 1.7.8, 2012-10-12
-##
-##
-
-
-ArgumentSeparator = ;
-
-
-##
-## (For future use)
-##
-currencySymbol = €
-
-
-##
-## Excel Error Codes (For future use)
-##
-NULL = #NULO!
-DIV0 = #DIV/0!
-VALUE = #VALOR!
-REF = #REF!
-NAME = #NOME?
-NUM = #NÚM!
-NA = #N/D
diff --git a/admin/survey/excel/PHPExcel/locale/pt/functions b/admin/survey/excel/PHPExcel/locale/pt/functions
deleted file mode 100644
index d8e9082..0000000
--- a/admin/survey/excel/PHPExcel/locale/pt/functions
+++ /dev/null
@@ -1,408 +0,0 @@
-##
-## Add-in and Automation functions Funções de Suplemento e Automatização
-##
-GETPIVOTDATA = OBTERDADOSDIN ## Devolve dados armazenados num relatório de Tabela Dinâmica
-
-
-##
-## Cube functions Funções de cubo
-##
-CUBEKPIMEMBER = MEMBROKPICUBO ## Devolve o nome, propriedade e medição de um KPI (key performance indicator) e apresenta o nome e a propriedade na célula. Um KPI é uma medida quantificável, como, por exemplo, o lucro mensal bruto ou a rotatividade trimestral de pessoal, utilizada para monitorizar o desempenho de uma organização.
-CUBEMEMBER = MEMBROCUBO ## Devolve um membro ou cadeia de identificação numa hierarquia de cubo. Utilizada para validar a existência do membro ou cadeia de identificação no cubo.
-CUBEMEMBERPROPERTY = PROPRIEDADEMEMBROCUBO ## Devolve o valor de uma propriedade de membro no cubo. Utilizada para validar a existência de um nome de membro no cubo e para devolver a propriedade especificada para esse membro.
-CUBERANKEDMEMBER = MEMBROCLASSIFICADOCUBO ## Devolve o enésimo ou a classificação mais alta num conjunto. Utilizada para devolver um ou mais elementos num conjunto, tal como o melhor vendedor ou os 10 melhores alunos.
-CUBESET = CONJUNTOCUBO ## Define um conjunto calculado de membros ou cadeias de identificação enviando uma expressão de conjunto para o cubo no servidor, que cria o conjunto e, em seguida, devolve o conjunto ao Microsoft Office Excel.
-CUBESETCOUNT = CONTARCONJUNTOCUBO ## Devolve o número de itens num conjunto.
-CUBEVALUE = VALORCUBO ## Devolve um valor agregado do cubo.
-
-
-##
-## Database functions Funções de base de dados
-##
-DAVERAGE = BDMÉDIA ## Devolve a média das entradas da base de dados seleccionadas
-DCOUNT = BDCONTAR ## Conta as células que contêm números numa base de dados
-DCOUNTA = BDCONTAR.VAL ## Conta as células que não estejam em branco numa base de dados
-DGET = BDOBTER ## Extrai de uma base de dados um único registo que corresponde aos critérios especificados
-DMAX = BDMÁX ## Devolve o valor máximo das entradas da base de dados seleccionadas
-DMIN = BDMÍN ## Devolve o valor mínimo das entradas da base de dados seleccionadas
-DPRODUCT = BDMULTIPL ## Multiplica os valores de um determinado campo de registos que correspondem aos critérios numa base de dados
-DSTDEV = BDDESVPAD ## Calcula o desvio-padrão com base numa amostra de entradas da base de dados seleccionadas
-DSTDEVP = BDDESVPADP ## Calcula o desvio-padrão com base na população total das entradas da base de dados seleccionadas
-DSUM = BDSOMA ## Adiciona os números na coluna de campo dos registos de base de dados que correspondem aos critérios
-DVAR = BDVAR ## Calcula a variância com base numa amostra das entradas de base de dados seleccionadas
-DVARP = BDVARP ## Calcula a variância com base na população total das entradas de base de dados seleccionadas
-
-
-##
-## Date and time functions Funções de data e hora
-##
-DATE = DATA ## Devolve o número de série de uma determinada data
-DATEVALUE = DATA.VALOR ## Converte uma data em forma de texto num número de série
-DAY = DIA ## Converte um número de série num dia do mês
-DAYS360 = DIAS360 ## Calcula o número de dias entre duas datas com base num ano com 360 dias
-EDATE = DATAM ## Devolve um número de série de data que corresponde ao número de meses indicado antes ou depois da data de início
-EOMONTH = FIMMÊS ## Devolve o número de série do último dia do mês antes ou depois de um número de meses especificado
-HOUR = HORA ## Converte um número de série numa hora
-MINUTE = MINUTO ## Converte um número de série num minuto
-MONTH = MÊS ## Converte um número de série num mês
-NETWORKDAYS = DIATRABALHOTOTAL ## Devolve o número total de dias úteis entre duas datas
-NOW = AGORA ## Devolve o número de série da data e hora actuais
-SECOND = SEGUNDO ## Converte um número de série num segundo
-TIME = TEMPO ## Devolve o número de série de um determinado tempo
-TIMEVALUE = VALOR.TEMPO ## Converte um tempo em forma de texto num número de série
-TODAY = HOJE ## Devolve o número de série da data actual
-WEEKDAY = DIA.SEMANA ## Converte um número de série num dia da semana
-WEEKNUM = NÚMSEMANA ## Converte um número de série num número que representa o número da semana num determinado ano
-WORKDAY = DIA.TRABALHO ## Devolve o número de série da data antes ou depois de um número de dias úteis especificado
-YEAR = ANO ## Converte um número de série num ano
-YEARFRAC = FRACÇÃOANO ## Devolve a fracção de ano que representa o número de dias inteiros entre a data_de_início e a data_de_fim
-
-
-##
-## Engineering functions Funções de engenharia
-##
-BESSELI = BESSELI ## Devolve a função de Bessel modificada In(x)
-BESSELJ = BESSELJ ## Devolve a função de Bessel Jn(x)
-BESSELK = BESSELK ## Devolve a função de Bessel modificada Kn(x)
-BESSELY = BESSELY ## Devolve a função de Bessel Yn(x)
-BIN2DEC = BINADEC ## Converte um número binário em decimal
-BIN2HEX = BINAHEX ## Converte um número binário em hexadecimal
-BIN2OCT = BINAOCT ## Converte um número binário em octal
-COMPLEX = COMPLEXO ## Converte coeficientes reais e imaginários num número complexo
-CONVERT = CONVERTER ## Converte um número de um sistema de medida noutro
-DEC2BIN = DECABIN ## Converte um número decimal em binário
-DEC2HEX = DECAHEX ## Converte um número decimal em hexadecimal
-DEC2OCT = DECAOCT ## Converte um número decimal em octal
-DELTA = DELTA ## Testa se dois valores são iguais
-ERF = FUNCERRO ## Devolve a função de erro
-ERFC = FUNCERROCOMPL ## Devolve a função de erro complementar
-GESTEP = DEGRAU ## Testa se um número é maior do que um valor limite
-HEX2BIN = HEXABIN ## Converte um número hexadecimal em binário
-HEX2DEC = HEXADEC ## Converte um número hexadecimal em decimal
-HEX2OCT = HEXAOCT ## Converte um número hexadecimal em octal
-IMABS = IMABS ## Devolve o valor absoluto (módulo) de um número complexo
-IMAGINARY = IMAGINÁRIO ## Devolve o coeficiente imaginário de um número complexo
-IMARGUMENT = IMARG ## Devolve o argumento Teta, um ângulo expresso em radianos
-IMCONJUGATE = IMCONJ ## Devolve o conjugado complexo de um número complexo
-IMCOS = IMCOS ## Devolve o co-seno de um número complexo
-IMDIV = IMDIV ## Devolve o quociente de dois números complexos
-IMEXP = IMEXP ## Devolve o exponencial de um número complexo
-IMLN = IMLN ## Devolve o logaritmo natural de um número complexo
-IMLOG10 = IMLOG10 ## Devolve o logaritmo de base 10 de um número complexo
-IMLOG2 = IMLOG2 ## Devolve o logaritmo de base 2 de um número complexo
-IMPOWER = IMPOT ## Devolve um número complexo elevado a uma potência inteira
-IMPRODUCT = IMPROD ## Devolve o produto de números complexos
-IMREAL = IMREAL ## Devolve o coeficiente real de um número complexo
-IMSIN = IMSENO ## Devolve o seno de um número complexo
-IMSQRT = IMRAIZ ## Devolve a raiz quadrada de um número complexo
-IMSUB = IMSUBTR ## Devolve a diferença entre dois números complexos
-IMSUM = IMSOMA ## Devolve a soma de números complexos
-OCT2BIN = OCTABIN ## Converte um número octal em binário
-OCT2DEC = OCTADEC ## Converte um número octal em decimal
-OCT2HEX = OCTAHEX ## Converte um número octal em hexadecimal
-
-
-##
-## Financial functions Funções financeiras
-##
-ACCRINT = JUROSACUM ## Devolve os juros acumulados de um título que paga juros periódicos
-ACCRINTM = JUROSACUMV ## Devolve os juros acumulados de um título que paga juros no vencimento
-AMORDEGRC = AMORDEGRC ## Devolve a depreciação correspondente a cada período contabilístico utilizando um coeficiente de depreciação
-AMORLINC = AMORLINC ## Devolve a depreciação correspondente a cada período contabilístico
-COUPDAYBS = CUPDIASINLIQ ## Devolve o número de dias entre o início do período do cupão e a data de regularização
-COUPDAYS = CUPDIAS ## Devolve o número de dias no período do cupão que contém a data de regularização
-COUPDAYSNC = CUPDIASPRÓX ## Devolve o número de dias entre a data de regularização e a data do cupão seguinte
-COUPNCD = CUPDATAPRÓX ## Devolve a data do cupão seguinte após a data de regularização
-COUPNUM = CUPNÚM ## Devolve o número de cupões a serem pagos entre a data de regularização e a data de vencimento
-COUPPCD = CUPDATAANT ## Devolve a data do cupão anterior antes da data de regularização
-CUMIPMT = PGTOJURACUM ## Devolve os juros cumulativos pagos entre dois períodos
-CUMPRINC = PGTOCAPACUM ## Devolve o capital cumulativo pago a título de empréstimo entre dois períodos
-DB = BD ## Devolve a depreciação de um activo relativo a um período especificado utilizando o método das quotas degressivas fixas
-DDB = BDD ## Devolve a depreciação de um activo relativo a um período especificado utilizando o método das quotas degressivas duplas ou qualquer outro método especificado
-DISC = DESC ## Devolve a taxa de desconto de um título
-DOLLARDE = MOEDADEC ## Converte um preço em unidade monetária, expresso como uma fracção, num preço em unidade monetária, expresso como um número decimal
-DOLLARFR = MOEDAFRA ## Converte um preço em unidade monetária, expresso como um número decimal, num preço em unidade monetária, expresso como uma fracção
-DURATION = DURAÇÃO ## Devolve a duração anual de um título com pagamentos de juros periódicos
-EFFECT = EFECTIVA ## Devolve a taxa de juros anual efectiva
-FV = VF ## Devolve o valor futuro de um investimento
-FVSCHEDULE = VFPLANO ## Devolve o valor futuro de um capital inicial após a aplicação de uma série de taxas de juro compostas
-INTRATE = TAXAJUROS ## Devolve a taxa de juros de um título investido na totalidade
-IPMT = IPGTO ## Devolve o pagamento dos juros de um investimento durante um determinado período
-IRR = TIR ## Devolve a taxa de rentabilidade interna para uma série de fluxos monetários
-ISPMT = É.PGTO ## Calcula os juros pagos durante um período específico de um investimento
-MDURATION = MDURAÇÃO ## Devolve a duração modificada de Macauley de um título com um valor de paridade equivalente a € 100
-MIRR = MTIR ## Devolve a taxa interna de rentabilidade em que os fluxos monetários positivos e negativos são financiados com taxas diferentes
-NOMINAL = NOMINAL ## Devolve a taxa de juros nominal anual
-NPER = NPER ## Devolve o número de períodos de um investimento
-NPV = VAL ## Devolve o valor actual líquido de um investimento com base numa série de fluxos monetários periódicos e numa taxa de desconto
-ODDFPRICE = PREÇOPRIMINC ## Devolve o preço por € 100 do valor nominal de um título com um período inicial incompleto
-ODDFYIELD = LUCROPRIMINC ## Devolve o lucro de um título com um período inicial incompleto
-ODDLPRICE = PREÇOÚLTINC ## Devolve o preço por € 100 do valor nominal de um título com um período final incompleto
-ODDLYIELD = LUCROÚLTINC ## Devolve o lucro de um título com um período final incompleto
-PMT = PGTO ## Devolve o pagamento periódico de uma anuidade
-PPMT = PPGTO ## Devolve o pagamento sobre o capital de um investimento num determinado período
-PRICE = PREÇO ## Devolve o preço por € 100 do valor nominal de um título que paga juros periódicos
-PRICEDISC = PREÇODESC ## Devolve o preço por € 100 do valor nominal de um título descontado
-PRICEMAT = PREÇOVENC ## Devolve o preço por € 100 do valor nominal de um título que paga juros no vencimento
-PV = VA ## Devolve o valor actual de um investimento
-RATE = TAXA ## Devolve a taxa de juros por período de uma anuidade
-RECEIVED = RECEBER ## Devolve o montante recebido no vencimento de um título investido na totalidade
-SLN = AMORT ## Devolve uma depreciação linear de um activo durante um período
-SYD = AMORTD ## Devolve a depreciação por algarismos da soma dos anos de um activo durante um período especificado
-TBILLEQ = OTN ## Devolve o lucro de um título equivalente a uma Obrigação do Tesouro
-TBILLPRICE = OTNVALOR ## Devolve o preço por € 100 de valor nominal de uma Obrigação do Tesouro
-TBILLYIELD = OTNLUCRO ## Devolve o lucro de uma Obrigação do Tesouro
-VDB = BDV ## Devolve a depreciação de um activo relativo a um período específico ou parcial utilizando um método de quotas degressivas
-XIRR = XTIR ## Devolve a taxa interna de rentabilidade de um plano de fluxos monetários que não seja necessariamente periódica
-XNPV = XVAL ## Devolve o valor actual líquido de um plano de fluxos monetários que não seja necessariamente periódico
-YIELD = LUCRO ## Devolve o lucro de um título que paga juros periódicos
-YIELDDISC = LUCRODESC ## Devolve o lucro anual de um título emitido abaixo do valor nominal, por exemplo, uma Obrigação do Tesouro
-YIELDMAT = LUCROVENC ## Devolve o lucro anual de um título que paga juros na data de vencimento
-
-
-##
-## Information functions Funções de informação
-##
-CELL = CÉL ## Devolve informações sobre a formatação, localização ou conteúdo de uma célula
-ERROR.TYPE = TIPO.ERRO ## Devolve um número correspondente a um tipo de erro
-INFO = INFORMAÇÃO ## Devolve informações sobre o ambiente de funcionamento actual
-ISBLANK = É.CÉL.VAZIA ## Devolve VERDADEIRO se o valor estiver em branco
-ISERR = É.ERROS ## Devolve VERDADEIRO se o valor for um valor de erro diferente de #N/D
-ISERROR = É.ERRO ## Devolve VERDADEIRO se o valor for um valor de erro
-ISEVEN = ÉPAR ## Devolve VERDADEIRO se o número for par
-ISLOGICAL = É.LÓGICO ## Devolve VERDADEIRO se o valor for lógico
-ISNA = É.NÃO.DISP ## Devolve VERDADEIRO se o valor for o valor de erro #N/D
-ISNONTEXT = É.NÃO.TEXTO ## Devolve VERDADEIRO se o valor não for texto
-ISNUMBER = É.NÚM ## Devolve VERDADEIRO se o valor for um número
-ISODD = ÉÍMPAR ## Devolve VERDADEIRO se o número for ímpar
-ISREF = É.REF ## Devolve VERDADEIRO se o valor for uma referência
-ISTEXT = É.TEXTO ## Devolve VERDADEIRO se o valor for texto
-N = N ## Devolve um valor convertido num número
-NA = NÃO.DISP ## Devolve o valor de erro #N/D
-TYPE = TIPO ## Devolve um número que indica o tipo de dados de um valor
-
-
-##
-## Logical functions Funções lógicas
-##
-AND = E ## Devolve VERDADEIRO se todos os respectivos argumentos corresponderem a VERDADEIRO
-FALSE = FALSO ## Devolve o valor lógico FALSO
-IF = SE ## Especifica um teste lógico a ser executado
-IFERROR = SE.ERRO ## Devolve um valor definido pelo utilizador se ocorrer um erro na fórmula, e devolve o resultado da fórmula se não ocorrer nenhum erro
-NOT = NÃO ## Inverte a lógica do respectivo argumento
-OR = OU ## Devolve VERDADEIRO se qualquer argumento for VERDADEIRO
-TRUE = VERDADEIRO ## Devolve o valor lógico VERDADEIRO
-
-
-##
-## Lookup and reference functions Funções de pesquisa e referência
-##
-ADDRESS = ENDEREÇO ## Devolve uma referência a uma única célula numa folha de cálculo como texto
-AREAS = ÁREAS ## Devolve o número de áreas numa referência
-CHOOSE = SELECCIONAR ## Selecciona um valor a partir de uma lista de valores
-COLUMN = COL ## Devolve o número da coluna de uma referência
-COLUMNS = COLS ## Devolve o número de colunas numa referência
-HLOOKUP = PROCH ## Procura na linha superior de uma matriz e devolve o valor da célula indicada
-HYPERLINK = HIPERLIGAÇÃO ## Cria um atalho ou hiperligação que abre um documento armazenado num servidor de rede, numa intranet ou na Internet
-INDEX = ÍNDICE ## Utiliza um índice para escolher um valor de uma referência ou de uma matriz
-INDIRECT = INDIRECTO ## Devolve uma referência indicada por um valor de texto
-LOOKUP = PROC ## Procura valores num vector ou numa matriz
-MATCH = CORRESP ## Procura valores numa referência ou numa matriz
-OFFSET = DESLOCAMENTO ## Devolve o deslocamento de referência de uma determinada referência
-ROW = LIN ## Devolve o número da linha de uma referência
-ROWS = LINS ## Devolve o número de linhas numa referência
-RTD = RTD ## Obtém dados em tempo real a partir de um programa que suporte automatização COM (automatização: modo de trabalhar com objectos de uma aplicação a partir de outra aplicação ou ferramenta de desenvolvimento. Anteriormente conhecida como automatização OLE, a automatização é uma norma da indústria de software e uma funcionalidade COM (Component Object Model).)
-TRANSPOSE = TRANSPOR ## Devolve a transposição de uma matriz
-VLOOKUP = PROCV ## Procura na primeira coluna de uma matriz e percorre a linha para devolver o valor de uma célula
-
-
-##
-## Math and trigonometry functions Funções matemáticas e trigonométricas
-##
-ABS = ABS ## Devolve o valor absoluto de um número
-ACOS = ACOS ## Devolve o arco de co-seno de um número
-ACOSH = ACOSH ## Devolve o co-seno hiperbólico inverso de um número
-ASIN = ASEN ## Devolve o arco de seno de um número
-ASINH = ASENH ## Devolve o seno hiperbólico inverso de um número
-ATAN = ATAN ## Devolve o arco de tangente de um número
-ATAN2 = ATAN2 ## Devolve o arco de tangente das coordenadas x e y
-ATANH = ATANH ## Devolve a tangente hiperbólica inversa de um número
-CEILING = ARRED.EXCESSO ## Arredonda um número para o número inteiro mais próximo ou para o múltiplo de significância mais próximo
-COMBIN = COMBIN ## Devolve o número de combinações de um determinado número de objectos
-COS = COS ## Devolve o co-seno de um número
-COSH = COSH ## Devolve o co-seno hiperbólico de um número
-DEGREES = GRAUS ## Converte radianos em graus
-EVEN = PAR ## Arredonda um número por excesso para o número inteiro mais próximo
-EXP = EXP ## Devolve e elevado à potência de um determinado número
-FACT = FACTORIAL ## Devolve o factorial de um número
-FACTDOUBLE = FACTDUPLO ## Devolve o factorial duplo de um número
-FLOOR = ARRED.DEFEITO ## Arredonda um número por defeito até zero
-GCD = MDC ## Devolve o maior divisor comum
-INT = INT ## Arredonda um número por defeito para o número inteiro mais próximo
-LCM = MMC ## Devolve o mínimo múltiplo comum
-LN = LN ## Devolve o logaritmo natural de um número
-LOG = LOG ## Devolve o logaritmo de um número com uma base especificada
-LOG10 = LOG10 ## Devolve o logaritmo de base 10 de um número
-MDETERM = MATRIZ.DETERM ## Devolve o determinante matricial de uma matriz
-MINVERSE = MATRIZ.INVERSA ## Devolve o inverso matricial de uma matriz
-MMULT = MATRIZ.MULT ## Devolve o produto matricial de duas matrizes
-MOD = RESTO ## Devolve o resto da divisão
-MROUND = MARRED ## Devolve um número arredondado para o múltiplo pretendido
-MULTINOMIAL = POLINOMIAL ## Devolve o polinomial de um conjunto de números
-ODD = ÍMPAR ## Arredonda por excesso um número para o número inteiro ímpar mais próximo
-PI = PI ## Devolve o valor de pi
-POWER = POTÊNCIA ## Devolve o resultado de um número elevado a uma potência
-PRODUCT = PRODUTO ## Multiplica os respectivos argumentos
-QUOTIENT = QUOCIENTE ## Devolve a parte inteira de uma divisão
-RADIANS = RADIANOS ## Converte graus em radianos
-RAND = ALEATÓRIO ## Devolve um número aleatório entre 0 e 1
-RANDBETWEEN = ALEATÓRIOENTRE ## Devolve um número aleatório entre os números especificados
-ROMAN = ROMANO ## Converte um número árabe em romano, como texto
-ROUND = ARRED ## Arredonda um número para um número de dígitos especificado
-ROUNDDOWN = ARRED.PARA.BAIXO ## Arredonda um número por defeito até zero
-ROUNDUP = ARRED.PARA.CIMA ## Arredonda um número por excesso, afastando-o de zero
-SERIESSUM = SOMASÉRIE ## Devolve a soma de uma série de potências baseada na fórmula
-SIGN = SINAL ## Devolve o sinal de um número
-SIN = SEN ## Devolve o seno de um determinado ângulo
-SINH = SENH ## Devolve o seno hiperbólico de um número
-SQRT = RAIZQ ## Devolve uma raiz quadrada positiva
-SQRTPI = RAIZPI ## Devolve a raiz quadrada de (núm * pi)
-SUBTOTAL = SUBTOTAL ## Devolve um subtotal numa lista ou base de dados
-SUM = SOMA ## Adiciona os respectivos argumentos
-SUMIF = SOMA.SE ## Adiciona as células especificadas por um determinado critério
-SUMIFS = SOMA.SE.S ## Adiciona as células num intervalo que cumpre vários critérios
-SUMPRODUCT = SOMARPRODUTO ## Devolve a soma dos produtos de componentes de matrizes correspondentes
-SUMSQ = SOMARQUAD ## Devolve a soma dos quadrados dos argumentos
-SUMX2MY2 = SOMAX2DY2 ## Devolve a soma da diferença dos quadrados dos valores correspondentes em duas matrizes
-SUMX2PY2 = SOMAX2SY2 ## Devolve a soma da soma dos quadrados dos valores correspondentes em duas matrizes
-SUMXMY2 = SOMAXMY2 ## Devolve a soma dos quadrados da diferença dos valores correspondentes em duas matrizes
-TAN = TAN ## Devolve a tangente de um número
-TANH = TANH ## Devolve a tangente hiperbólica de um número
-TRUNC = TRUNCAR ## Trunca um número para um número inteiro
-
-
-##
-## Statistical functions Funções estatísticas
-##
-AVEDEV = DESV.MÉDIO ## Devolve a média aritmética dos desvios absolutos à média dos pontos de dados
-AVERAGE = MÉDIA ## Devolve a média dos respectivos argumentos
-AVERAGEA = MÉDIAA ## Devolve uma média dos respectivos argumentos, incluindo números, texto e valores lógicos
-AVERAGEIF = MÉDIA.SE ## Devolve a média aritmética de todas as células num intervalo que cumprem determinado critério
-AVERAGEIFS = MÉDIA.SE.S ## Devolve a média aritmética de todas as células que cumprem múltiplos critérios
-BETADIST = DISTBETA ## Devolve a função de distribuição cumulativa beta
-BETAINV = BETA.ACUM.INV ## Devolve o inverso da função de distribuição cumulativa relativamente a uma distribuição beta específica
-BINOMDIST = DISTRBINOM ## Devolve a probabilidade de distribuição binomial de termo individual
-CHIDIST = DIST.CHI ## Devolve a probabilidade unicaudal da distribuição qui-quadrada
-CHIINV = INV.CHI ## Devolve o inverso da probabilidade unicaudal da distribuição qui-quadrada
-CHITEST = TESTE.CHI ## Devolve o teste para independência
-CONFIDENCE = INT.CONFIANÇA ## Devolve o intervalo de confiança correspondente a uma média de população
-CORREL = CORREL ## Devolve o coeficiente de correlação entre dois conjuntos de dados
-COUNT = CONTAR ## Conta os números que existem na lista de argumentos
-COUNTA = CONTAR.VAL ## Conta os valores que existem na lista de argumentos
-COUNTBLANK = CONTAR.VAZIO ## Conta o número de células em branco num intervalo
-COUNTIF = CONTAR.SE ## Calcula o número de células num intervalo que corresponde aos critérios determinados
-COUNTIFS = CONTAR.SE.S ## Conta o número de células num intervalo que cumprem múltiplos critérios
-COVAR = COVAR ## Devolve a covariância, que é a média dos produtos de desvios de pares
-CRITBINOM = CRIT.BINOM ## Devolve o menor valor em que a distribuição binomial cumulativa é inferior ou igual a um valor de critério
-DEVSQ = DESVQ ## Devolve a soma dos quadrados dos desvios
-EXPONDIST = DISTEXPON ## Devolve a distribuição exponencial
-FDIST = DISTF ## Devolve a distribuição da probabilidade F
-FINV = INVF ## Devolve o inverso da distribuição da probabilidade F
-FISHER = FISHER ## Devolve a transformação Fisher
-FISHERINV = FISHERINV ## Devolve o inverso da transformação Fisher
-FORECAST = PREVISÃO ## Devolve um valor ao longo de uma tendência linear
-FREQUENCY = FREQUÊNCIA ## Devolve uma distribuição de frequência como uma matriz vertical
-FTEST = TESTEF ## Devolve o resultado de um teste F
-GAMMADIST = DISTGAMA ## Devolve a distribuição gama
-GAMMAINV = INVGAMA ## Devolve o inverso da distribuição gama cumulativa
-GAMMALN = LNGAMA ## Devolve o logaritmo natural da função gama, Γ(x)
-GEOMEAN = MÉDIA.GEOMÉTRICA ## Devolve a média geométrica
-GROWTH = CRESCIMENTO ## Devolve valores ao longo de uma tendência exponencial
-HARMEAN = MÉDIA.HARMÓNICA ## Devolve a média harmónica
-HYPGEOMDIST = DIST.HIPERGEOM ## Devolve a distribuição hipergeométrica
-INTERCEPT = INTERCEPTAR ## Devolve a intercepção da linha de regressão linear
-KURT = CURT ## Devolve a curtose de um conjunto de dados
-LARGE = MAIOR ## Devolve o maior valor k-ésimo de um conjunto de dados
-LINEST = PROJ.LIN ## Devolve os parâmetros de uma tendência linear
-LOGEST = PROJ.LOG ## Devolve os parâmetros de uma tendência exponencial
-LOGINV = INVLOG ## Devolve o inverso da distribuição normal logarítmica
-LOGNORMDIST = DIST.NORMALLOG ## Devolve a distribuição normal logarítmica cumulativa
-MAX = MÁXIMO ## Devolve o valor máximo numa lista de argumentos
-MAXA = MÁXIMOA ## Devolve o valor máximo numa lista de argumentos, incluindo números, texto e valores lógicos
-MEDIAN = MED ## Devolve a mediana dos números indicados
-MIN = MÍNIMO ## Devolve o valor mínimo numa lista de argumentos
-MINA = MÍNIMOA ## Devolve o valor mínimo numa lista de argumentos, incluindo números, texto e valores lógicos
-MODE = MODA ## Devolve o valor mais comum num conjunto de dados
-NEGBINOMDIST = DIST.BIN.NEG ## Devolve a distribuição binominal negativa
-NORMDIST = DIST.NORM ## Devolve a distribuição cumulativa normal
-NORMINV = INV.NORM ## Devolve o inverso da distribuição cumulativa normal
-NORMSDIST = DIST.NORMP ## Devolve a distribuição cumulativa normal padrão
-NORMSINV = INV.NORMP ## Devolve o inverso da distribuição cumulativa normal padrão
-PEARSON = PEARSON ## Devolve o coeficiente de correlação momento/produto de Pearson
-PERCENTILE = PERCENTIL ## Devolve o k-ésimo percentil de valores num intervalo
-PERCENTRANK = ORDEM.PERCENTUAL ## Devolve a ordem percentual de um valor num conjunto de dados
-PERMUT = PERMUTAR ## Devolve o número de permutações de um determinado número de objectos
-POISSON = POISSON ## Devolve a distribuição de Poisson
-PROB = PROB ## Devolve a probabilidade dos valores num intervalo se encontrarem entre dois limites
-QUARTILE = QUARTIL ## Devolve o quartil de um conjunto de dados
-RANK = ORDEM ## Devolve a ordem de um número numa lista numérica
-RSQ = RQUAD ## Devolve o quadrado do coeficiente de correlação momento/produto de Pearson
-SKEW = DISTORÇÃO ## Devolve a distorção de uma distribuição
-SLOPE = DECLIVE ## Devolve o declive da linha de regressão linear
-SMALL = MENOR ## Devolve o menor valor de k-ésimo de um conjunto de dados
-STANDARDIZE = NORMALIZAR ## Devolve um valor normalizado
-STDEV = DESVPAD ## Calcula o desvio-padrão com base numa amostra
-STDEVA = DESVPADA ## Calcula o desvio-padrão com base numa amostra, incluindo números, texto e valores lógicos
-STDEVP = DESVPADP ## Calcula o desvio-padrão com base na população total
-STDEVPA = DESVPADPA ## Calcula o desvio-padrão com base na população total, incluindo números, texto e valores lógicos
-STEYX = EPADYX ## Devolve o erro-padrão do valor de y previsto para cada x na regressão
-TDIST = DISTT ## Devolve a distribuição t de Student
-TINV = INVT ## Devolve o inverso da distribuição t de Student
-TREND = TENDÊNCIA ## Devolve valores ao longo de uma tendência linear
-TRIMMEAN = MÉDIA.INTERNA ## Devolve a média do interior de um conjunto de dados
-TTEST = TESTET ## Devolve a probabilidade associada ao teste t de Student
-VAR = VAR ## Calcula a variância com base numa amostra
-VARA = VARA ## Calcula a variância com base numa amostra, incluindo números, texto e valores lógicos
-VARP = VARP ## Calcula a variância com base na população total
-VARPA = VARPA ## Calcula a variância com base na população total, incluindo números, texto e valores lógicos
-WEIBULL = WEIBULL ## Devolve a distribuição Weibull
-ZTEST = TESTEZ ## Devolve o valor de probabilidade unicaudal de um teste-z
-
-
-##
-## Text functions Funções de texto
-##
-ASC = ASC ## Altera letras ou katakana de largura total (byte duplo) numa cadeia de caracteres para caracteres de largura média (byte único)
-BAHTTEXT = TEXTO.BAHT ## Converte um número em texto, utilizando o formato monetário ß (baht)
-CHAR = CARÁCT ## Devolve o carácter especificado pelo número de código
-CLEAN = LIMPAR ## Remove do texto todos os caracteres não imprimíveis
-CODE = CÓDIGO ## Devolve um código numérico correspondente ao primeiro carácter numa cadeia de texto
-CONCATENATE = CONCATENAR ## Agrupa vários itens de texto num único item de texto
-DOLLAR = MOEDA ## Converte um número em texto, utilizando o formato monetário € (Euro)
-EXACT = EXACTO ## Verifica se dois valores de texto são idênticos
-FIND = LOCALIZAR ## Localiza um valor de texto dentro de outro (sensível às maiúsculas e minúsculas)
-FINDB = LOCALIZARB ## Localiza um valor de texto dentro de outro (sensível às maiúsculas e minúsculas)
-FIXED = FIXA ## Formata um número como texto com um número fixo de decimais
-JIS = JIS ## Altera letras ou katakana de largura média (byte único) numa cadeia de caracteres para caracteres de largura total (byte duplo)
-LEFT = ESQUERDA ## Devolve os caracteres mais à esquerda de um valor de texto
-LEFTB = ESQUERDAB ## Devolve os caracteres mais à esquerda de um valor de texto
-LEN = NÚM.CARACT ## Devolve o número de caracteres de uma cadeia de texto
-LENB = NÚM.CARACTB ## Devolve o número de caracteres de uma cadeia de texto
-LOWER = MINÚSCULAS ## Converte o texto em minúsculas
-MID = SEG.TEXTO ## Devolve um número específico de caracteres de uma cadeia de texto, a partir da posição especificada
-MIDB = SEG.TEXTOB ## Devolve um número específico de caracteres de uma cadeia de texto, a partir da posição especificada
-PHONETIC = FONÉTICA ## Retira os caracteres fonéticos (furigana) de uma cadeia de texto
-PROPER = INICIAL.MAIÚSCULA ## Coloca em maiúsculas a primeira letra de cada palavra de um valor de texto
-REPLACE = SUBSTITUIR ## Substitui caracteres no texto
-REPLACEB = SUBSTITUIRB ## Substitui caracteres no texto
-REPT = REPETIR ## Repete texto um determinado número de vezes
-RIGHT = DIREITA ## Devolve os caracteres mais à direita de um valor de texto
-RIGHTB = DIREITAB ## Devolve os caracteres mais à direita de um valor de texto
-SEARCH = PROCURAR ## Localiza um valor de texto dentro de outro (não sensível a maiúsculas e minúsculas)
-SEARCHB = PROCURARB ## Localiza um valor de texto dentro de outro (não sensível a maiúsculas e minúsculas)
-SUBSTITUTE = SUBST ## Substitui texto novo por texto antigo numa cadeia de texto
-T = T ## Converte os respectivos argumentos em texto
-TEXT = TEXTO ## Formata um número e converte-o em texto
-TRIM = COMPACTAR ## Remove espaços do texto
-UPPER = MAIÚSCULAS ## Converte texto em maiúsculas
-VALUE = VALOR ## Converte um argumento de texto num número
diff --git a/admin/survey/excel/PHPExcel/locale/ru/config b/admin/survey/excel/PHPExcel/locale/ru/config
deleted file mode 100644
index aa7e685..0000000
--- a/admin/survey/excel/PHPExcel/locale/ru/config
+++ /dev/null
@@ -1,47 +0,0 @@
-##
-## PHPExcel
-##
-## Copyright (c) 2006 - 2011 PHPExcel
-##
-## This library is free software; you can redistribute it and/or
-## modify it under the terms of the GNU Lesser General Public
-## License as published by the Free Software Foundation; either
-## version 2.1 of the License, or (at your option) any later version.
-##
-## This library is distributed in the hope that it will be useful,
-## but WITHOUT ANY WARRANTY; without even the implied warranty of
-## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-## Lesser General Public License for more details.
-##
-## You should have received a copy of the GNU Lesser General Public
-## License along with this library; if not, write to the Free Software
-## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-##
-## @category PHPExcel
-## @package PHPExcel_Settings
-## @copyright Copyright (c) 2006 - 2011 PHPExcel (http://www.codeplex.com/PHPExcel)
-## @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
-## @version 1.7.8, 2012-10-12
-##
-##
-
-
-ArgumentSeparator = ;
-
-
-##
-## (For future use)
-##
-currencySymbol = р
-
-
-##
-## Excel Error Codes (For future use)
-##
-NULL = #ПУСТО!
-DIV0 = #ДЕЛ/0!
-VALUE = #ЗНАЧ!
-REF = #ССЫЛ!
-NAME = #ИМЯ?
-NUM = #ЧИСЛО!
-NA = #Н/Д
diff --git a/admin/survey/excel/PHPExcel/locale/ru/functions b/admin/survey/excel/PHPExcel/locale/ru/functions
deleted file mode 100644
index f37afc2..0000000
--- a/admin/survey/excel/PHPExcel/locale/ru/functions
+++ /dev/null
@@ -1,438 +0,0 @@
-##
-## PHPExcel
-##
-## Copyright (c) 2006 - 2011 PHPExcel
-##
-## This library is free software; you can redistribute it and/or
-## modify it under the terms of the GNU Lesser General Public
-## License as published by the Free Software Foundation; either
-## version 2.1 of the License, or (at your option) any later version.
-##
-## This library is distributed in the hope that it will be useful,
-## but WITHOUT ANY WARRANTY; without even the implied warranty of
-## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-## Lesser General Public License for more details.
-##
-## You should have received a copy of the GNU Lesser General Public
-## License along with this library; if not, write to the Free Software
-## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-##
-## @category PHPExcel
-## @package PHPExcel_Calculation
-## @copyright Copyright (c) 2006 - 2011 PHPExcel (http://www.codeplex.com/PHPExcel)
-## @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
-## @version 1.7.8, 2012-10-12
-##
-## Data in this file derived from information provided by web-junior (http://www.web-junior.net/)
-##
-##
-
-
-##
-## Add-in and Automation functions Функции надстроек и автоматизации
-##
-GETPIVOTDATA = ПОЛУЧИТЬ.ДАННЫЕ.СВОДНОЙ.ТАБЛИЦЫ ## Возвращает данные, хранящиеся в отчете сводной таблицы.
-
-
-##
-## Cube functions Функции Куб
-##
-CUBEKPIMEMBER = КУБЭЛЕМЕНТКИП ## Возвращает свойство ключевого индикатора производительности «(КИП)» и отображает имя «КИП» в ячейке. «КИП» представляет собой количественную величину, такую как ежемесячная валовая прибыль или ежеквартальная текучесть кадров, используемой для контроля эффективности работы организации.
-CUBEMEMBER = КУБЭЛЕМЕНТ ## Возвращает элемент или кортеж из куба. Используется для проверки существования элемента или кортежа в кубе.
-CUBEMEMBERPROPERTY = КУБСВОЙСТВОЭЛЕМЕНТА ## Возвращает значение свойства элемента из куба. Используется для проверки существования имени элемента в кубе и возвращает указанное свойство для этого элемента.
-CUBERANKEDMEMBER = КУБПОРЭЛЕМЕНТ ## Возвращает n-ый или ранжированный элемент в множество. Используется для возвращения одного или нескольких элементов в множество, например, лучшего продавца или 10 лучших студентов.
-CUBESET = КУБМНОЖ ## Определяет вычислительное множество элементов или кортежей, отправляя на сервер выражение, которое создает множество, а затем возвращает его в Microsoft Office Excel.
-CUBESETCOUNT = КУБЧИСЛОЭЛМНОЖ ## Возвращает число элементов множества.
-CUBEVALUE = КУБЗНАЧЕНИЕ ## Возвращает обобщенное значение из куба.
-
-
-##
-## Database functions Функции для работы с базами данных
-##
-DAVERAGE = ДСРЗНАЧ ## Возвращает среднее значение выбранных записей базы данных.
-DCOUNT = БСЧЁТ ## Подсчитывает количество числовых ячеек в базе данных.
-DCOUNTA = БСЧЁТА ## Подсчитывает количество непустых ячеек в базе данных.
-DGET = БИЗВЛЕЧЬ ## Извлекает из базы данных одну запись, удовлетворяющую заданному условию.
-DMAX = ДМАКС ## Возвращает максимальное значение среди выделенных записей базы данных.
-DMIN = ДМИН ## Возвращает минимальное значение среди выделенных записей базы данных.
-DPRODUCT = БДПРОИЗВЕД ## Перемножает значения определенного поля в записях базы данных, удовлетворяющих условию.
-DSTDEV = ДСТАНДОТКЛ ## Оценивает стандартное отклонение по выборке для выделенных записей базы данных.
-DSTDEVP = ДСТАНДОТКЛП ## Вычисляет стандартное отклонение по генеральной совокупности для выделенных записей базы данных
-DSUM = БДСУММ ## Суммирует числа в поле для записей базы данных, удовлетворяющих условию.
-DVAR = БДДИСП ## Оценивает дисперсию по выборке из выделенных записей базы данных
-DVARP = БДДИСПП ## Вычисляет дисперсию по генеральной совокупности для выделенных записей базы данных
-
-
-##
-## Date and time functions Функции даты и времени
-##
-DATE = ДАТА ## Возвращает заданную дату в числовом формате.
-DATEVALUE = ДАТАЗНАЧ ## Преобразует дату из текстового формата в числовой формат.
-DAY = ДЕНЬ ## Преобразует дату в числовом формате в день месяца.
-DAYS360 = ДНЕЙ360 ## Вычисляет количество дней между двумя датами на основе 360-дневного года.
-EDATE = ДАТАМЕС ## Возвращает дату в числовом формате, отстоящую на заданное число месяцев вперед или назад от начальной даты.
-EOMONTH = КОНМЕСЯЦА ## Возвращает дату в числовом формате для последнего дня месяца, отстоящего вперед или назад на заданное число месяцев.
-HOUR = ЧАС ## Преобразует дату в числовом формате в часы.
-MINUTE = МИНУТЫ ## Преобразует дату в числовом формате в минуты.
-MONTH = МЕСЯЦ ## Преобразует дату в числовом формате в месяцы.
-NETWORKDAYS = ЧИСТРАБДНИ ## Возвращает количество рабочих дней между двумя датами.
-NOW = ТДАТА ## Возвращает текущую дату и время в числовом формате.
-SECOND = СЕКУНДЫ ## Преобразует дату в числовом формате в секунды.
-TIME = ВРЕМЯ ## Возвращает заданное время в числовом формате.
-TIMEVALUE = ВРЕМЗНАЧ ## Преобразует время из текстового формата в числовой формат.
-TODAY = СЕГОДНЯ ## Возвращает текущую дату в числовом формате.
-WEEKDAY = ДЕНЬНЕД ## Преобразует дату в числовом формате в день недели.
-WEEKNUM = НОМНЕДЕЛИ ## Преобразует числовое представление в число, которое указывает, на какую неделю года приходится указанная дата.
-WORKDAY = РАБДЕНЬ ## Возвращает дату в числовом формате, отстоящую вперед или назад на заданное количество рабочих дней.
-YEAR = ГОД ## Преобразует дату в числовом формате в год.
-YEARFRAC = ДОЛЯГОДА ## Возвращает долю года, которую составляет количество дней между начальной и конечной датами.
-
-
-##
-## Engineering functions Инженерные функции
-##
-BESSELI = БЕССЕЛЬ.I ## Возвращает модифицированную функцию Бесселя In(x).
-BESSELJ = БЕССЕЛЬ.J ## Возвращает функцию Бесселя Jn(x).
-BESSELK = БЕССЕЛЬ.K ## Возвращает модифицированную функцию Бесселя Kn(x).
-BESSELY = БЕССЕЛЬ.Y ## Возвращает функцию Бесселя Yn(x).
-BIN2DEC = ДВ.В.ДЕС ## Преобразует двоичное число в десятичное.
-BIN2HEX = ДВ.В.ШЕСТН ## Преобразует двоичное число в шестнадцатеричное.
-BIN2OCT = ДВ.В.ВОСЬМ ## Преобразует двоичное число в восьмеричное.
-COMPLEX = КОМПЛЕКСН ## Преобразует коэффициенты при вещественной и мнимой частях комплексного числа в комплексное число.
-CONVERT = ПРЕОБР ## Преобразует число из одной системы единиц измерения в другую.
-DEC2BIN = ДЕС.В.ДВ ## Преобразует десятичное число в двоичное.
-DEC2HEX = ДЕС.В.ШЕСТН ## Преобразует десятичное число в шестнадцатеричное.
-DEC2OCT = ДЕС.В.ВОСЬМ ## Преобразует десятичное число в восьмеричное.
-DELTA = ДЕЛЬТА ## Проверяет равенство двух значений.
-ERF = ФОШ ## Возвращает функцию ошибки.
-ERFC = ДФОШ ## Возвращает дополнительную функцию ошибки.
-GESTEP = ПОРОГ ## Проверяет, не превышает ли данное число порогового значения.
-HEX2BIN = ШЕСТН.В.ДВ ## Преобразует шестнадцатеричное число в двоичное.
-HEX2DEC = ШЕСТН.В.ДЕС ## Преобразует шестнадцатеричное число в десятичное.
-HEX2OCT = ШЕСТН.В.ВОСЬМ ## Преобразует шестнадцатеричное число в восьмеричное.
-IMABS = МНИМ.ABS ## Возвращает абсолютную величину (модуль) комплексного числа.
-IMAGINARY = МНИМ.ЧАСТЬ ## Возвращает коэффициент при мнимой части комплексного числа.
-IMARGUMENT = МНИМ.АРГУМЕНТ ## Возвращает значение аргумента комплексного числа (тета) — угол, выраженный в радианах.
-IMCONJUGATE = МНИМ.СОПРЯЖ ## Возвращает комплексно-сопряженное комплексное число.
-IMCOS = МНИМ.COS ## Возвращает косинус комплексного числа.
-IMDIV = МНИМ.ДЕЛ ## Возвращает частное от деления двух комплексных чисел.
-IMEXP = МНИМ.EXP ## Возвращает экспоненту комплексного числа.
-IMLN = МНИМ.LN ## Возвращает натуральный логарифм комплексного числа.
-IMLOG10 = МНИМ.LOG10 ## Возвращает обычный (десятичный) логарифм комплексного числа.
-IMLOG2 = МНИМ.LOG2 ## Возвращает двоичный логарифм комплексного числа.
-IMPOWER = МНИМ.СТЕПЕНЬ ## Возвращает комплексное число, возведенное в целую степень.
-IMPRODUCT = МНИМ.ПРОИЗВЕД ## Возвращает произведение от 2 до 29 комплексных чисел.
-IMREAL = МНИМ.ВЕЩ ## Возвращает коэффициент при вещественной части комплексного числа.
-IMSIN = МНИМ.SIN ## Возвращает синус комплексного числа.
-IMSQRT = МНИМ.КОРЕНЬ ## Возвращает значение квадратного корня из комплексного числа.
-IMSUB = МНИМ.РАЗН ## Возвращает разность двух комплексных чисел.
-IMSUM = МНИМ.СУММ ## Возвращает сумму комплексных чисел.
-OCT2BIN = ВОСЬМ.В.ДВ ## Преобразует восьмеричное число в двоичное.
-OCT2DEC = ВОСЬМ.В.ДЕС ## Преобразует восьмеричное число в десятичное.
-OCT2HEX = ВОСЬМ.В.ШЕСТН ## Преобразует восьмеричное число в шестнадцатеричное.
-
-
-##
-## Financial functions Финансовые функции
-##
-ACCRINT = НАКОПДОХОД ## Возвращает накопленный процент по ценным бумагам с периодической выплатой процентов.
-ACCRINTM = НАКОПДОХОДПОГАШ ## Возвращает накопленный процент по ценным бумагам, проценты по которым выплачиваются в срок погашения.
-AMORDEGRC = АМОРУМ ## Возвращает величину амортизации для каждого периода, используя коэффициент амортизации.
-AMORLINC = АМОРУВ ## Возвращает величину амортизации для каждого периода.
-COUPDAYBS = ДНЕЙКУПОНДО ## Возвращает количество дней от начала действия купона до даты соглашения.
-COUPDAYS = ДНЕЙКУПОН ## Возвращает число дней в периоде купона, содержащем дату соглашения.
-COUPDAYSNC = ДНЕЙКУПОНПОСЛЕ ## Возвращает число дней от даты соглашения до срока следующего купона.
-COUPNCD = ДАТАКУПОНПОСЛЕ ## Возвращает следующую дату купона после даты соглашения.
-COUPNUM = ЧИСЛКУПОН ## Возвращает количество купонов, которые могут быть оплачены между датой соглашения и сроком вступления в силу.
-COUPPCD = ДАТАКУПОНДО ## Возвращает предыдущую дату купона перед датой соглашения.
-CUMIPMT = ОБЩПЛАТ ## Возвращает общую выплату, произведенную между двумя периодическими выплатами.
-CUMPRINC = ОБЩДОХОД ## Возвращает общую выплату по займу между двумя периодами.
-DB = ФУО ## Возвращает величину амортизации актива для заданного периода, рассчитанную методом фиксированного уменьшения остатка.
-DDB = ДДОБ ## Возвращает величину амортизации актива за данный период, используя метод двойного уменьшения остатка или иной явно указанный метод.
-DISC = СКИДКА ## Возвращает норму скидки для ценных бумаг.
-DOLLARDE = РУБЛЬ.ДЕС ## Преобразует цену в рублях, выраженную в виде дроби, в цену в рублях, выраженную десятичным числом.
-DOLLARFR = РУБЛЬ.ДРОБЬ ## Преобразует цену в рублях, выраженную десятичным числом, в цену в рублях, выраженную в виде дроби.
-DURATION = ДЛИТ ## Возвращает ежегодную продолжительность действия ценных бумаг с периодическими выплатами по процентам.
-EFFECT = ЭФФЕКТ ## Возвращает действующие ежегодные процентные ставки.
-FV = БС ## Возвращает будущую стоимость инвестиции.
-FVSCHEDULE = БЗРАСПИС ## Возвращает будущую стоимость первоначальной основной суммы после начисления ряда сложных процентов.
-INTRATE = ИНОРМА ## Возвращает процентную ставку для полностью инвестированных ценных бумаг.
-IPMT = ПРПЛТ ## Возвращает величину выплаты прибыли на вложения за данный период.
-IRR = ВСД ## Возвращает внутреннюю ставку доходности для ряда потоков денежных средств.
-ISPMT = ПРОЦПЛАТ ## Вычисляет выплаты за указанный период инвестиции.
-MDURATION = МДЛИТ ## Возвращает модифицированную длительность Маколея для ценных бумаг с предполагаемой номинальной стоимостью 100 рублей.
-MIRR = МВСД ## Возвращает внутреннюю ставку доходности, при которой положительные и отрицательные денежные потоки имеют разные значения ставки.
-NOMINAL = НОМИНАЛ ## Возвращает номинальную годовую процентную ставку.
-NPER = КПЕР ## Возвращает общее количество периодов выплаты для данного вклада.
-NPV = ЧПС ## Возвращает чистую приведенную стоимость инвестиции, основанной на серии периодических денежных потоков и ставке дисконтирования.
-ODDFPRICE = ЦЕНАПЕРВНЕРЕГ ## Возвращает цену за 100 рублей нарицательной стоимости ценных бумаг с нерегулярным первым периодом.
-ODDFYIELD = ДОХОДПЕРВНЕРЕГ ## Возвращает доход по ценным бумагам с нерегулярным первым периодом.
-ODDLPRICE = ЦЕНАПОСЛНЕРЕГ ## Возвращает цену за 100 рублей нарицательной стоимости ценных бумаг с нерегулярным последним периодом.
-ODDLYIELD = ДОХОДПОСЛНЕРЕГ ## Возвращает доход по ценным бумагам с нерегулярным последним периодом.
-PMT = ПЛТ ## Возвращает величину выплаты за один период аннуитета.
-PPMT = ОСПЛТ ## Возвращает величину выплат в погашение основной суммы по инвестиции за заданный период.
-PRICE = ЦЕНА ## Возвращает цену за 100 рублей нарицательной стоимости ценных бумаг, по которым производится периодическая выплата процентов.
-PRICEDISC = ЦЕНАСКИДКА ## Возвращает цену за 100 рублей номинальной стоимости ценных бумаг, на которые сделана скидка.
-PRICEMAT = ЦЕНАПОГАШ ## Возвращает цену за 100 рублей номинальной стоимости ценных бумаг, проценты по которым выплачиваются в срок погашения.
-PV = ПС ## Возвращает приведенную (к текущему моменту) стоимость инвестиции.
-RATE = СТАВКА ## Возвращает процентную ставку по аннуитету за один период.
-RECEIVED = ПОЛУЧЕНО ## Возвращает сумму, полученную к сроку погашения полностью обеспеченных ценных бумаг.
-SLN = АПЛ ## Возвращает величину линейной амортизации актива за один период.
-SYD = АСЧ ## Возвращает величину амортизации актива за данный период, рассчитанную методом суммы годовых чисел.
-TBILLEQ = РАВНОКЧЕК ## Возвращает эквивалентный облигации доход по казначейскому чеку.
-TBILLPRICE = ЦЕНАКЧЕК ## Возвращает цену за 100 рублей нарицательной стоимости для казначейского чека.
-TBILLYIELD = ДОХОДКЧЕК ## Возвращает доход по казначейскому чеку.
-VDB = ПУО ## Возвращает величину амортизации актива для указанного или частичного периода при использовании метода сокращающегося баланса.
-XIRR = ЧИСТВНДОХ ## Возвращает внутреннюю ставку доходности для графика денежных потоков, которые не обязательно носят периодический характер.
-XNPV = ЧИСТНЗ ## Возвращает чистую приведенную стоимость для денежных потоков, которые не обязательно являются периодическими.
-YIELD = ДОХОД ## Возвращает доход от ценных бумаг, по которым производятся периодические выплаты процентов.
-YIELDDISC = ДОХОДСКИДКА ## Возвращает годовой доход по ценным бумагам, на которые сделана скидка (пример — казначейские чеки).
-YIELDMAT = ДОХОДПОГАШ ## Возвращает годовой доход от ценных бумаг, проценты по которым выплачиваются в срок погашения.
-
-
-##
-## Information functions Информационные функции
-##
-CELL = ЯЧЕЙКА ## Возвращает информацию о формате, расположении или содержимом ячейки.
-ERROR.TYPE = ТИП.ОШИБКИ ## Возвращает числовой код, соответствующий типу ошибки.
-INFO = ИНФОРМ ## Возвращает информацию о текущей операционной среде.
-ISBLANK = ЕПУСТО ## Возвращает значение ИСТИНА, если аргумент является ссылкой на пустую ячейку.
-ISERR = ЕОШ ## Возвращает значение ИСТИНА, если аргумент ссылается на любое значение ошибки, кроме #Н/Д.
-ISERROR = ЕОШИБКА ## Возвращает значение ИСТИНА, если аргумент ссылается на любое значение ошибки.
-ISEVEN = ЕЧЁТН ## Возвращает значение ИСТИНА, если значение аргумента является четным числом.
-ISLOGICAL = ЕЛОГИЧ ## Возвращает значение ИСТИНА, если аргумент ссылается на логическое значение.
-ISNA = ЕНД ## Возвращает значение ИСТИНА, если аргумент ссылается на значение ошибки #Н/Д.
-ISNONTEXT = ЕНЕТЕКСТ ## Возвращает значение ИСТИНА, если значение аргумента не является текстом.
-ISNUMBER = ЕЧИСЛО ## Возвращает значение ИСТИНА, если аргумент ссылается на число.
-ISODD = ЕНЕЧЁТ ## Возвращает значение ИСТИНА, если значение аргумента является нечетным числом.
-ISREF = ЕССЫЛКА ## Возвращает значение ИСТИНА, если значение аргумента является ссылкой.
-ISTEXT = ЕТЕКСТ ## Возвращает значение ИСТИНА, если значение аргумента является текстом.
-N = Ч ## Возвращает значение, преобразованное в число.
-NA = НД ## Возвращает значение ошибки #Н/Д.
-TYPE = ТИП ## Возвращает число, обозначающее тип данных значения.
-
-
-##
-## Logical functions Логические функции
-##
-AND = И ## Renvoie VRAI si tous ses arguments sont VRAI.
-FALSE = ЛОЖЬ ## Возвращает логическое значение ЛОЖЬ.
-IF = ЕСЛИ ## Выполняет проверку условия.
-IFERROR = ЕСЛИОШИБКА ## Возвращает введённое значение, если вычисление по формуле вызывает ошибку; в противном случае функция возвращает результат вычисления.
-NOT = НЕ ## Меняет логическое значение своего аргумента на противоположное.
-OR = ИЛИ ## Возвращает значение ИСТИНА, если хотя бы один аргумент имеет значение ИСТИНА.
-TRUE = ИСТИНА ## Возвращает логическое значение ИСТИНА.
-
-
-##
-## Lookup and reference functions Функции ссылки и поиска
-##
-ADDRESS = АДРЕС ## Возвращает ссылку на отдельную ячейку листа в виде текста.
-AREAS = ОБЛАСТИ ## Возвращает количество областей в ссылке.
-CHOOSE = ВЫБОР ## Выбирает значение из списка значений по индексу.
-COLUMN = СТОЛБЕЦ ## Возвращает номер столбца, на который указывает ссылка.
-COLUMNS = ЧИСЛСТОЛБ ## Возвращает количество столбцов в ссылке.
-HLOOKUP = ГПР ## Ищет в первой строке массива и возвращает значение отмеченной ячейки
-HYPERLINK = ГИПЕРССЫЛКА ## Создает ссылку, открывающую документ, который находится на сервере сети, в интрасети или в Интернете.
-INDEX = ИНДЕКС ## Использует индекс для выбора значения из ссылки или массива.
-INDIRECT = ДВССЫЛ ## Возвращает ссылку, заданную текстовым значением.
-LOOKUP = ПРОСМОТР ## Ищет значения в векторе или массиве.
-MATCH = ПОИСКПОЗ ## Ищет значения в ссылке или массиве.
-OFFSET = СМЕЩ ## Возвращает смещение ссылки относительно заданной ссылки.
-ROW = СТРОКА ## Возвращает номер строки, определяемой ссылкой.
-ROWS = ЧСТРОК ## Возвращает количество строк в ссылке.
-RTD = ДРВ ## Извлекает данные реального времени из программ, поддерживающих автоматизацию COM (Программирование объектов. Стандартное средство для работы с объектами некоторого приложения из другого приложения или средства разработки. Программирование объектов (ранее называемое программированием OLE) является функцией модели COM (Component Object Model, модель компонентных объектов).).
-TRANSPOSE = ТРАНСП ## Возвращает транспонированный массив.
-VLOOKUP = ВПР ## Ищет значение в первом столбце массива и возвращает значение из ячейки в найденной строке и указанном столбце.
-
-
-##
-## Math and trigonometry functions Математические и тригонометрические функции
-##
-ABS = ABS ## Возвращает модуль (абсолютную величину) числа.
-ACOS = ACOS ## Возвращает арккосинус числа.
-ACOSH = ACOSH ## Возвращает гиперболический арккосинус числа.
-ASIN = ASIN ## Возвращает арксинус числа.
-ASINH = ASINH ## Возвращает гиперболический арксинус числа.
-ATAN = ATAN ## Возвращает арктангенс числа.
-ATAN2 = ATAN2 ## Возвращает арктангенс для заданных координат x и y.
-ATANH = ATANH ## Возвращает гиперболический арктангенс числа.
-CEILING = ОКРВВЕРХ ## Округляет число до ближайшего целого или до ближайшего кратного указанному значению.
-COMBIN = ЧИСЛКОМБ ## Возвращает количество комбинаций для заданного числа объектов.
-COS = COS ## Возвращает косинус числа.
-COSH = COSH ## Возвращает гиперболический косинус числа.
-DEGREES = ГРАДУСЫ ## Преобразует радианы в градусы.
-EVEN = ЧЁТН ## Округляет число до ближайшего четного целого.
-EXP = EXP ## Возвращает число e, возведенное в указанную степень.
-FACT = ФАКТР ## Возвращает факториал числа.
-FACTDOUBLE = ДВФАКТР ## Возвращает двойной факториал числа.
-FLOOR = ОКРВНИЗ ## Округляет число до ближайшего меньшего по модулю значения.
-GCD = НОД ## Возвращает наибольший общий делитель.
-INT = ЦЕЛОЕ ## Округляет число до ближайшего меньшего целого.
-LCM = НОК ## Возвращает наименьшее общее кратное.
-LN = LN ## Возвращает натуральный логарифм числа.
-LOG = LOG ## Возвращает логарифм числа по заданному основанию.
-LOG10 = LOG10 ## Возвращает десятичный логарифм числа.
-MDETERM = МОПРЕД ## Возвращает определитель матрицы массива.
-MINVERSE = МОБР ## Возвращает обратную матрицу массива.
-MMULT = МУМНОЖ ## Возвращает произведение матриц двух массивов.
-MOD = ОСТАТ ## Возвращает остаток от деления.
-MROUND = ОКРУГЛТ ## Возвращает число, округленное с требуемой точностью.
-MULTINOMIAL = МУЛЬТИНОМ ## Возвращает мультиномиальный коэффициент множества чисел.
-ODD = НЕЧЁТ ## Округляет число до ближайшего нечетного целого.
-PI = ПИ ## Возвращает число пи.
-POWER = СТЕПЕНЬ ## Возвращает результат возведения числа в степень.
-PRODUCT = ПРОИЗВЕД ## Возвращает произведение аргументов.
-QUOTIENT = ЧАСТНОЕ ## Возвращает целую часть частного при делении.
-RADIANS = РАДИАНЫ ## Преобразует градусы в радианы.
-RAND = СЛЧИС ## Возвращает случайное число в интервале от 0 до 1.
-RANDBETWEEN = СЛУЧМЕЖДУ ## Возвращает случайное число в интервале между двумя заданными числами.
-ROMAN = РИМСКОЕ ## Преобразует арабские цифры в римские в виде текста.
-ROUND = ОКРУГЛ ## Округляет число до указанного количества десятичных разрядов.
-ROUNDDOWN = ОКРУГЛВНИЗ ## Округляет число до ближайшего меньшего по модулю значения.
-ROUNDUP = ОКРУГЛВВЕРХ ## Округляет число до ближайшего большего по модулю значения.
-SERIESSUM = РЯД.СУММ ## Возвращает сумму степенного ряда, вычисленную по формуле.
-SIGN = ЗНАК ## Возвращает знак числа.
-SIN = SIN ## Возвращает синус заданного угла.
-SINH = SINH ## Возвращает гиперболический синус числа.
-SQRT = КОРЕНЬ ## Возвращает положительное значение квадратного корня.
-SQRTPI = КОРЕНЬПИ ## Возвращает квадратный корень из значения выражения (число * ПИ).
-SUBTOTAL = ПРОМЕЖУТОЧНЫЕ.ИТОГИ ## Возвращает промежуточный итог в списке или базе данных.
-SUM = СУММ ## Суммирует аргументы.
-SUMIF = СУММЕСЛИ ## Суммирует ячейки, удовлетворяющие заданному условию.
-SUMIFS = СУММЕСЛИМН ## Суммирует диапазон ячеек, удовлетворяющих нескольким условиям.
-SUMPRODUCT = СУММПРОИЗВ ## Возвращает сумму произведений соответствующих элементов массивов.
-SUMSQ = СУММКВ ## Возвращает сумму квадратов аргументов.
-SUMX2MY2 = СУММРАЗНКВ ## Возвращает сумму разностей квадратов соответствующих значений в двух массивах.
-SUMX2PY2 = СУММСУММКВ ## Возвращает сумму сумм квадратов соответствующих элементов двух массивов.
-SUMXMY2 = СУММКВРАЗН ## Возвращает сумму квадратов разностей соответствующих значений в двух массивах.
-TAN = TAN ## Возвращает тангенс числа.
-TANH = TANH ## Возвращает гиперболический тангенс числа.
-TRUNC = ОТБР ## Отбрасывает дробную часть числа.
-
-
-##
-## Statistical functions Статистические функции
-##
-AVEDEV = СРОТКЛ ## Возвращает среднее арифметическое абсолютных значений отклонений точек данных от среднего.
-AVERAGE = СРЗНАЧ ## Возвращает среднее арифметическое аргументов.
-AVERAGEA = СРЗНАЧА ## Возвращает среднее арифметическое аргументов, включая числа, текст и логические значения.
-AVERAGEIF = СРЗНАЧЕСЛИ ## Возвращает среднее значение (среднее арифметическое) всех ячеек в диапазоне, которые удовлетворяют данному условию.
-AVERAGEIFS = СРЗНАЧЕСЛИМН ## Возвращает среднее значение (среднее арифметическое) всех ячеек, которые удовлетворяют нескольким условиям.
-BETADIST = БЕТАРАСП ## Возвращает интегральную функцию бета-распределения.
-BETAINV = БЕТАОБР ## Возвращает обратную интегральную функцию указанного бета-распределения.
-BINOMDIST = БИНОМРАСП ## Возвращает отдельное значение биномиального распределения.
-CHIDIST = ХИ2РАСП ## Возвращает одностороннюю вероятность распределения хи-квадрат.
-CHIINV = ХИ2ОБР ## Возвращает обратное значение односторонней вероятности распределения хи-квадрат.
-CHITEST = ХИ2ТЕСТ ## Возвращает тест на независимость.
-CONFIDENCE = ДОВЕРИТ ## Возвращает доверительный интервал для среднего значения по генеральной совокупности.
-CORREL = КОРРЕЛ ## Возвращает коэффициент корреляции между двумя множествами данных.
-COUNT = СЧЁТ ## Подсчитывает количество чисел в списке аргументов.
-COUNTA = СЧЁТЗ ## Подсчитывает количество значений в списке аргументов.
-COUNTBLANK = СЧИТАТЬПУСТОТЫ ## Подсчитывает количество пустых ячеек в диапазоне
-COUNTIF = СЧЁТЕСЛИ ## Подсчитывает количество ячеек в диапазоне, удовлетворяющих заданному условию
-COUNTIFS = СЧЁТЕСЛИМН ## Подсчитывает количество ячеек внутри диапазона, удовлетворяющих нескольким условиям.
-COVAR = КОВАР ## Возвращает ковариацию, среднее произведений парных отклонений
-CRITBINOM = КРИТБИНОМ ## Возвращает наименьшее значение, для которого интегральное биномиальное распределение меньше или равно заданному критерию.
-DEVSQ = КВАДРОТКЛ ## Возвращает сумму квадратов отклонений.
-EXPONDIST = ЭКСПРАСП ## Возвращает экспоненциальное распределение.
-FDIST = FРАСП ## Возвращает F-распределение вероятности.
-FINV = FРАСПОБР ## Возвращает обратное значение для F-распределения вероятности.
-FISHER = ФИШЕР ## Возвращает преобразование Фишера.
-FISHERINV = ФИШЕРОБР ## Возвращает обратное преобразование Фишера.
-FORECAST = ПРЕДСКАЗ ## Возвращает значение линейного тренда.
-FREQUENCY = ЧАСТОТА ## Возвращает распределение частот в виде вертикального массива.
-FTEST = ФТЕСТ ## Возвращает результат F-теста.
-GAMMADIST = ГАММАРАСП ## Возвращает гамма-распределение.
-GAMMAINV = ГАММАОБР ## Возвращает обратное гамма-распределение.
-GAMMALN = ГАММАНЛОГ ## Возвращает натуральный логарифм гамма функции, Γ(x).
-GEOMEAN = СРГЕОМ ## Возвращает среднее геометрическое.
-GROWTH = РОСТ ## Возвращает значения в соответствии с экспоненциальным трендом.
-HARMEAN = СРГАРМ ## Возвращает среднее гармоническое.
-HYPGEOMDIST = ГИПЕРГЕОМЕТ ## Возвращает гипергеометрическое распределение.
-INTERCEPT = ОТРЕЗОК ## Возвращает отрезок, отсекаемый на оси линией линейной регрессии.
-KURT = ЭКСЦЕСС ## Возвращает эксцесс множества данных.
-LARGE = НАИБОЛЬШИЙ ## Возвращает k-ое наибольшее значение в множестве данных.
-LINEST = ЛИНЕЙН ## Возвращает параметры линейного тренда.
-LOGEST = ЛГРФПРИБЛ ## Возвращает параметры экспоненциального тренда.
-LOGINV = ЛОГНОРМОБР ## Возвращает обратное логарифмическое нормальное распределение.
-LOGNORMDIST = ЛОГНОРМРАСП ## Возвращает интегральное логарифмическое нормальное распределение.
-MAX = МАКС ## Возвращает наибольшее значение в списке аргументов.
-MAXA = МАКСА ## Возвращает наибольшее значение в списке аргументов, включая числа, текст и логические значения.
-MEDIAN = МЕДИАНА ## Возвращает медиану заданных чисел.
-MIN = МИН ## Возвращает наименьшее значение в списке аргументов.
-MINA = МИНА ## Возвращает наименьшее значение в списке аргументов, включая числа, текст и логические значения.
-MODE = МОДА ## Возвращает значение моды множества данных.
-NEGBINOMDIST = ОТРБИНОМРАСП ## Возвращает отрицательное биномиальное распределение.
-NORMDIST = НОРМРАСП ## Возвращает нормальную функцию распределения.
-NORMINV = НОРМОБР ## Возвращает обратное нормальное распределение.
-NORMSDIST = НОРМСТРАСП ## Возвращает стандартное нормальное интегральное распределение.
-NORMSINV = НОРМСТОБР ## Возвращает обратное значение стандартного нормального распределения.
-PEARSON = ПИРСОН ## Возвращает коэффициент корреляции Пирсона.
-PERCENTILE = ПЕРСЕНТИЛЬ ## Возвращает k-ую персентиль для значений диапазона.
-PERCENTRANK = ПРОЦЕНТРАНГ ## Возвращает процентную норму значения в множестве данных.
-PERMUT = ПЕРЕСТ ## Возвращает количество перестановок для заданного числа объектов.
-POISSON = ПУАССОН ## Возвращает распределение Пуассона.
-PROB = ВЕРОЯТНОСТЬ ## Возвращает вероятность того, что значение из диапазона находится внутри заданных пределов.
-QUARTILE = КВАРТИЛЬ ## Возвращает квартиль множества данных.
-RANK = РАНГ ## Возвращает ранг числа в списке чисел.
-RSQ = КВПИРСОН ## Возвращает квадрат коэффициента корреляции Пирсона.
-SKEW = СКОС ## Возвращает асимметрию распределения.
-SLOPE = НАКЛОН ## Возвращает наклон линии линейной регрессии.
-SMALL = НАИМЕНЬШИЙ ## Возвращает k-ое наименьшее значение в множестве данных.
-STANDARDIZE = НОРМАЛИЗАЦИЯ ## Возвращает нормализованное значение.
-STDEV = СТАНДОТКЛОН ## Оценивает стандартное отклонение по выборке.
-STDEVA = СТАНДОТКЛОНА ## Оценивает стандартное отклонение по выборке, включая числа, текст и логические значения.
-STDEVP = СТАНДОТКЛОНП ## Вычисляет стандартное отклонение по генеральной совокупности.
-STDEVPA = СТАНДОТКЛОНПА ## Вычисляет стандартное отклонение по генеральной совокупности, включая числа, текст и логические значения.
-STEYX = СТОШYX ## Возвращает стандартную ошибку предсказанных значений y для каждого значения x в регрессии.
-TDIST = СТЬЮДРАСП ## Возвращает t-распределение Стьюдента.
-TINV = СТЬЮДРАСПОБР ## Возвращает обратное t-распределение Стьюдента.
-TREND = ТЕНДЕНЦИЯ ## Возвращает значения в соответствии с линейным трендом.
-TRIMMEAN = УРЕЗСРЕДНЕЕ ## Возвращает среднее внутренности множества данных.
-TTEST = ТТЕСТ ## Возвращает вероятность, соответствующую критерию Стьюдента.
-VAR = ДИСП ## Оценивает дисперсию по выборке.
-VARA = ДИСПА ## Оценивает дисперсию по выборке, включая числа, текст и логические значения.
-VARP = ДИСПР ## Вычисляет дисперсию для генеральной совокупности.
-VARPA = ДИСПРА ## Вычисляет дисперсию для генеральной совокупности, включая числа, текст и логические значения.
-WEIBULL = ВЕЙБУЛЛ ## Возвращает распределение Вейбулла.
-ZTEST = ZТЕСТ ## Возвращает двустороннее P-значение z-теста.
-
-
-##
-## Text functions Текстовые функции
-##
-ASC = ASC ## Для языков с двухбайтовыми наборами знаков (например, катакана) преобразует полноширинные (двухбайтовые) знаки в полуширинные (однобайтовые).
-BAHTTEXT = БАТТЕКСТ ## Преобразует число в текст, используя денежный формат ß (БАТ).
-CHAR = СИМВОЛ ## Возвращает знак с заданным кодом.
-CLEAN = ПЕЧСИМВ ## Удаляет все непечатаемые знаки из текста.
-CODE = КОДСИМВ ## Возвращает числовой код первого знака в текстовой строке.
-CONCATENATE = СЦЕПИТЬ ## Объединяет несколько текстовых элементов в один.
-DOLLAR = РУБЛЬ ## Преобразует число в текст, используя денежный формат.
-EXACT = СОВПАД ## Проверяет идентичность двух текстовых значений.
-FIND = НАЙТИ ## Ищет вхождения одного текстового значения в другом (с учетом регистра).
-FINDB = НАЙТИБ ## Ищет вхождения одного текстового значения в другом (с учетом регистра).
-FIXED = ФИКСИРОВАННЫЙ ## Форматирует число и преобразует его в текст с заданным числом десятичных знаков.
-JIS = JIS ## Для языков с двухбайтовыми наборами знаков (например, катакана) преобразует полуширинные (однобайтовые) знаки в текстовой строке в полноширинные (двухбайтовые).
-LEFT = ЛЕВСИМВ ## Возвращает крайние слева знаки текстового значения.
-LEFTB = ЛЕВБ ## Возвращает крайние слева знаки текстового значения.
-LEN = ДЛСТР ## Возвращает количество знаков в текстовой строке.
-LENB = ДЛИНБ ## Возвращает количество знаков в текстовой строке.
-LOWER = СТРОЧН ## Преобразует все буквы текста в строчные.
-MID = ПСТР ## Возвращает заданное число знаков из строки текста, начиная с указанной позиции.
-MIDB = ПСТРБ ## Возвращает заданное число знаков из строки текста, начиная с указанной позиции.
-PHONETIC = PHONETIC ## Извлекает фонетические (фуригана) знаки из текстовой строки.
-PROPER = ПРОПНАЧ ## Преобразует первую букву в каждом слове текста в прописную.
-REPLACE = ЗАМЕНИТЬ ## Заменяет знаки в тексте.
-REPLACEB = ЗАМЕНИТЬБ ## Заменяет знаки в тексте.
-REPT = ПОВТОР ## Повторяет текст заданное число раз.
-RIGHT = ПРАВСИМВ ## Возвращает крайние справа знаки текстовой строки.
-RIGHTB = ПРАВБ ## Возвращает крайние справа знаки текстовой строки.
-SEARCH = ПОИСК ## Ищет вхождения одного текстового значения в другом (без учета регистра).
-SEARCHB = ПОИСКБ ## Ищет вхождения одного текстового значения в другом (без учета регистра).
-SUBSTITUTE = ПОДСТАВИТЬ ## Заменяет в текстовой строке старый текст новым.
-T = Т ## Преобразует аргументы в текст.
-TEXT = ТЕКСТ ## Форматирует число и преобразует его в текст.
-TRIM = СЖПРОБЕЛЫ ## Удаляет из текста пробелы.
-UPPER = ПРОПИСН ## Преобразует все буквы текста в прописные.
-VALUE = ЗНАЧЕН ## Преобразует текстовый аргумент в число.
diff --git a/admin/survey/excel/PHPExcel/locale/sv/config b/admin/survey/excel/PHPExcel/locale/sv/config
deleted file mode 100644
index 6a59778..0000000
--- a/admin/survey/excel/PHPExcel/locale/sv/config
+++ /dev/null
@@ -1,47 +0,0 @@
-##
-## PHPExcel
-##
-## Copyright (c) 2006 - 2011 PHPExcel
-##
-## This library is free software; you can redistribute it and/or
-## modify it under the terms of the GNU Lesser General Public
-## License as published by the Free Software Foundation; either
-## version 2.1 of the License, or (at your option) any later version.
-##
-## This library is distributed in the hope that it will be useful,
-## but WITHOUT ANY WARRANTY; without even the implied warranty of
-## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-## Lesser General Public License for more details.
-##
-## You should have received a copy of the GNU Lesser General Public
-## License along with this library; if not, write to the Free Software
-## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-##
-## @category PHPExcel
-## @package PHPExcel_Settings
-## @copyright Copyright (c) 2006 - 2011 PHPExcel (http://www.codeplex.com/PHPExcel)
-## @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
-## @version 1.7.8, 2012-10-12
-##
-##
-
-
-ArgumentSeparator = ;
-
-
-##
-## (For future use)
-##
-currencySymbol = kr
-
-
-##
-## Excel Error Codes (For future use)
-##
-NULL = #Skärning!
-DIV0 = #Division/0!
-VALUE = #Värdefel!
-REF = #Referens!
-NAME = #Namn?
-NUM = #Ogiltigt!
-NA = #Saknas!
diff --git a/admin/survey/excel/PHPExcel/locale/sv/functions b/admin/survey/excel/PHPExcel/locale/sv/functions
deleted file mode 100644
index b1dd995..0000000
--- a/admin/survey/excel/PHPExcel/locale/sv/functions
+++ /dev/null
@@ -1,408 +0,0 @@
-##
-## Add-in and Automation functions Tilläggs- och automatiseringsfunktioner
-##
-GETPIVOTDATA = HÄMTA.PIVOTDATA ## Returnerar data som lagrats i en pivottabellrapport
-
-
-##
-## Cube functions Kubfunktioner
-##
-CUBEKPIMEMBER = KUBKPIMEDLEM ## Returnerar namn, egenskap och mått för en KPI och visar namnet och egenskapen i cellen. En KPI, eller prestandaindikator, är ett kvantifierbart mått, t.ex. månatlig bruttovinst eller personalomsättning per kvartal, som används för att analysera ett företags resultat.
-CUBEMEMBER = KUBMEDLEM ## Returnerar en medlem eller ett par i en kubhierarki. Används för att verifiera att medlemmen eller paret finns i kuben.
-CUBEMEMBERPROPERTY = KUBMEDLEMSEGENSKAP ## Returnerar värdet för en medlemsegenskap i kuben. Används för att verifiera att ett medlemsnamn finns i kuben, samt för att returnera den angivna egenskapen för medlemmen.
-CUBERANKEDMEMBER = KUBRANGORDNADMEDLEM ## Returnerar den n:te, eller rangordnade, medlemmen i en uppsättning. Används för att returnera ett eller flera element i en uppsättning, till exempelvis den bästa försäljaren eller de tio bästa eleverna.
-CUBESET = KUBINSTÄLLNING ## Definierar en beräknad uppsättning medlemmar eller par genom att skicka ett bestämt uttryck till kuben på servern, som skapar uppsättningen och sedan returnerar den till Microsoft Office Excel.
-CUBESETCOUNT = KUBINSTÄLLNINGANTAL ## Returnerar antalet objekt i en uppsättning.
-CUBEVALUE = KUBVÄRDE ## Returnerar ett mängdvärde från en kub.
-
-
-##
-## Database functions Databasfunktioner
-##
-DAVERAGE = DMEDEL ## Returnerar medelvärdet av databasposterna
-DCOUNT = DANTAL ## Räknar antalet celler som innehåller tal i en databas
-DCOUNTA = DANTALV ## Räknar ifyllda celler i en databas
-DGET = DHÄMTA ## Hämtar en enstaka post från en databas som uppfyller de angivna villkoren
-DMAX = DMAX ## Returnerar det största värdet från databasposterna
-DMIN = DMIN ## Returnerar det minsta värdet från databasposterna
-DPRODUCT = DPRODUKT ## Multiplicerar värdena i ett visst fält i poster som uppfyller villkoret
-DSTDEV = DSTDAV ## Uppskattar standardavvikelsen baserat på ett urval av databasposterna
-DSTDEVP = DSTDAVP ## Beräknar standardavvikelsen utifrån hela populationen av valda databasposter
-DSUM = DSUMMA ## Summerar talen i kolumnfält i databasposter som uppfyller villkoret
-DVAR = DVARIANS ## Uppskattar variansen baserat på ett urval av databasposterna
-DVARP = DVARIANSP ## Beräknar variansen utifrån hela populationen av valda databasposter
-
-
-##
-## Date and time functions Tid- och datumfunktioner
-##
-DATE = DATUM ## Returnerar ett serienummer för ett visst datum
-DATEVALUE = DATUMVÄRDE ## Konverterar ett datum i textformat till ett serienummer
-DAY = DAG ## Konverterar ett serienummer till dag i månaden
-DAYS360 = DAGAR360 ## Beräknar antalet dagar mellan två datum baserat på ett 360-dagarsår
-EDATE = EDATUM ## Returnerar serienumret för ett datum som infaller ett visst antal månader före eller efter startdatumet
-EOMONTH = SLUTMÅNAD ## Returnerar serienumret för sista dagen i månaden ett visst antal månader tidigare eller senare
-HOUR = TIMME ## Konverterar ett serienummer till en timme
-MINUTE = MINUT ## Konverterar ett serienummer till en minut
-MONTH = MÅNAD ## Konverterar ett serienummer till en månad
-NETWORKDAYS = NETTOARBETSDAGAR ## Returnerar antalet hela arbetsdagar mellan två datum
-NOW = NU ## Returnerar serienumret för dagens datum och aktuell tid
-SECOND = SEKUND ## Konverterar ett serienummer till en sekund
-TIME = KLOCKSLAG ## Returnerar serienumret för en viss tid
-TIMEVALUE = TIDVÄRDE ## Konverterar en tid i textformat till ett serienummer
-TODAY = IDAG ## Returnerar serienumret för dagens datum
-WEEKDAY = VECKODAG ## Konverterar ett serienummer till en dag i veckan
-WEEKNUM = VECKONR ## Konverterar ett serienummer till ett veckonummer
-WORKDAY = ARBETSDAGAR ## Returnerar serienumret för ett datum ett visst antal arbetsdagar tidigare eller senare
-YEAR = ÅR ## Konverterar ett serienummer till ett år
-YEARFRAC = ÅRDEL ## Returnerar en del av ett år som representerar antalet hela dagar mellan start- och slutdatum
-
-
-##
-## Engineering functions Tekniska funktioner
-##
-BESSELI = BESSELI ## Returnerar den modifierade Bessel-funktionen In(x)
-BESSELJ = BESSELJ ## Returnerar Bessel-funktionen Jn(x)
-BESSELK = BESSELK ## Returnerar den modifierade Bessel-funktionen Kn(x)
-BESSELY = BESSELY ## Returnerar Bessel-funktionen Yn(x)
-BIN2DEC = BIN.TILL.DEC ## Omvandlar ett binärt tal till decimalt
-BIN2HEX = BIN.TILL.HEX ## Omvandlar ett binärt tal till hexadecimalt
-BIN2OCT = BIN.TILL.OKT ## Omvandlar ett binärt tal till oktalt
-COMPLEX = KOMPLEX ## Omvandlar reella och imaginära koefficienter till ett komplext tal
-CONVERT = KONVERTERA ## Omvandlar ett tal från ett måttsystem till ett annat
-DEC2BIN = DEC.TILL.BIN ## Omvandlar ett decimalt tal till binärt
-DEC2HEX = DEC.TILL.HEX ## Omvandlar ett decimalt tal till hexadecimalt
-DEC2OCT = DEC.TILL.OKT ## Omvandlar ett decimalt tal till oktalt
-DELTA = DELTA ## Testar om två värden är lika
-ERF = FELF ## Returnerar felfunktionen
-ERFC = FELFK ## Returnerar den komplementära felfunktionen
-GESTEP = SLSTEG ## Testar om ett tal är större än ett tröskelvärde
-HEX2BIN = HEX.TILL.BIN ## Omvandlar ett hexadecimalt tal till binärt
-HEX2DEC = HEX.TILL.DEC ## Omvandlar ett hexadecimalt tal till decimalt
-HEX2OCT = HEX.TILL.OKT ## Omvandlar ett hexadecimalt tal till oktalt
-IMABS = IMABS ## Returnerar absolutvärdet (modulus) för ett komplext tal
-IMAGINARY = IMAGINÄR ## Returnerar den imaginära koefficienten för ett komplext tal
-IMARGUMENT = IMARGUMENT ## Returnerar det komplexa talets argument, en vinkel uttryckt i radianer
-IMCONJUGATE = IMKONJUGAT ## Returnerar det komplexa talets konjugat
-IMCOS = IMCOS ## Returnerar cosinus för ett komplext tal
-IMDIV = IMDIV ## Returnerar kvoten för två komplexa tal
-IMEXP = IMEUPPHÖJT ## Returnerar exponenten för ett komplext tal
-IMLN = IMLN ## Returnerar den naturliga logaritmen för ett komplext tal
-IMLOG10 = IMLOG10 ## Returnerar 10-logaritmen för ett komplext tal
-IMLOG2 = IMLOG2 ## Returnerar 2-logaritmen för ett komplext tal
-IMPOWER = IMUPPHÖJT ## Returnerar ett komplext tal upphöjt till en exponent
-IMPRODUCT = IMPRODUKT ## Returnerar produkten av komplexa tal
-IMREAL = IMREAL ## Returnerar den reella koefficienten för ett komplext tal
-IMSIN = IMSIN ## Returnerar sinus för ett komplext tal
-IMSQRT = IMROT ## Returnerar kvadratroten av ett komplext tal
-IMSUB = IMDIFF ## Returnerar differensen mellan två komplexa tal
-IMSUM = IMSUM ## Returnerar summan av komplexa tal
-OCT2BIN = OKT.TILL.BIN ## Omvandlar ett oktalt tal till binärt
-OCT2DEC = OKT.TILL.DEC ## Omvandlar ett oktalt tal till decimalt
-OCT2HEX = OKT.TILL.HEX ## Omvandlar ett oktalt tal till hexadecimalt
-
-
-##
-## Financial functions Finansiella funktioner
-##
-ACCRINT = UPPLRÄNTA ## Returnerar den upplupna räntan för värdepapper med periodisk ränta
-ACCRINTM = UPPLOBLRÄNTA ## Returnerar den upplupna räntan för ett värdepapper som ger avkastning på förfallodagen
-AMORDEGRC = AMORDEGRC ## Returnerar avskrivningen för varje redovisningsperiod med hjälp av en avskrivningskoefficient
-AMORLINC = AMORLINC ## Returnerar avskrivningen för varje redovisningsperiod
-COUPDAYBS = KUPDAGBB ## Returnerar antal dagar från början av kupongperioden till likviddagen
-COUPDAYS = KUPDAGARS ## Returnerar antalet dagar i kupongperioden som innehåller betalningsdatumet
-COUPDAYSNC = KUPDAGNK ## Returnerar antalet dagar från betalningsdatumet till nästa kupongdatum
-COUPNCD = KUPNKD ## Returnerar nästa kupongdatum efter likviddagen
-COUPNUM = KUPANT ## Returnerar kuponger som förfaller till betalning mellan likviddagen och förfallodagen
-COUPPCD = KUPFKD ## Returnerar föregående kupongdatum före likviddagen
-CUMIPMT = KUMRÄNTA ## Returnerar den ackumulerade räntan som betalats mellan två perioder
-CUMPRINC = KUMPRIS ## Returnerar det ackumulerade kapitalbeloppet som betalats på ett lån mellan två perioder
-DB = DB ## Returnerar avskrivningen för en tillgång under en angiven tid enligt metoden för fast degressiv avskrivning
-DDB = DEGAVSKR ## Returnerar en tillgångs värdeminskning under en viss period med hjälp av dubbel degressiv avskrivning eller någon annan metod som du anger
-DISC = DISK ## Returnerar diskonteringsräntan för ett värdepapper
-DOLLARDE = DECTAL ## Omvandlar ett pris uttryckt som ett bråk till ett decimaltal
-DOLLARFR = BRÅK ## Omvandlar ett pris i kronor uttryckt som ett decimaltal till ett bråk
-DURATION = LÖPTID ## Returnerar den årliga löptiden för en säkerhet med periodiska räntebetalningar
-EFFECT = EFFRÄNTA ## Returnerar den årliga effektiva räntesatsen
-FV = SLUTVÄRDE ## Returnerar det framtida värdet på en investering
-FVSCHEDULE = FÖRRÄNTNING ## Returnerar det framtida värdet av ett begynnelsekapital beräknat på olika räntenivåer
-INTRATE = ÅRSRÄNTA ## Returnerar räntesatsen för ett betalt värdepapper
-IPMT = RBETALNING ## Returnerar räntedelen av en betalning för en given period
-IRR = IR ## Returnerar internräntan för en serie betalningar
-ISPMT = RALÅN ## Beräknar räntan som har betalats under en specifik betalningsperiod
-MDURATION = MLÖPTID ## Returnerar den modifierade Macauley-löptiden för ett värdepapper med det antagna nominella värdet 100 kr
-MIRR = MODIR ## Returnerar internräntan där positiva och negativa betalningar finansieras med olika räntor
-NOMINAL = NOMRÄNTA ## Returnerar den årliga nominella räntesatsen
-NPER = PERIODER ## Returnerar antalet perioder för en investering
-NPV = NETNUVÄRDE ## Returnerar nuvärdet av en serie periodiska betalningar vid en given diskonteringsränta
-ODDFPRICE = UDDAFPRIS ## Returnerar priset per 100 kr nominellt värde för ett värdepapper med en udda första period
-ODDFYIELD = UDDAFAVKASTNING ## Returnerar avkastningen för en säkerhet med en udda första period
-ODDLPRICE = UDDASPRIS ## Returnerar priset per 100 kr nominellt värde för ett värdepapper med en udda sista period
-ODDLYIELD = UDDASAVKASTNING ## Returnerar avkastningen för en säkerhet med en udda sista period
-PMT = BETALNING ## Returnerar den periodiska betalningen för en annuitet
-PPMT = AMORT ## Returnerar amorteringsdelen av en annuitetsbetalning för en given period
-PRICE = PRIS ## Returnerar priset per 100 kr nominellt värde för ett värdepapper som ger periodisk ränta
-PRICEDISC = PRISDISK ## Returnerar priset per 100 kr nominellt värde för ett diskonterat värdepapper
-PRICEMAT = PRISFÖRF ## Returnerar priset per 100 kr nominellt värde för ett värdepapper som ger ränta på förfallodagen
-PV = PV ## Returnerar nuvärdet av en serie lika stora periodiska betalningar
-RATE = RÄNTA ## Returnerar räntesatsen per period i en annuitet
-RECEIVED = BELOPP ## Returnerar beloppet som utdelas på förfallodagen för ett betalat värdepapper
-SLN = LINAVSKR ## Returnerar den linjära avskrivningen för en tillgång under en period
-SYD = ÅRSAVSKR ## Returnerar den årliga avskrivningssumman för en tillgång under en angiven period
-TBILLEQ = SSVXEKV ## Returnerar avkastningen motsvarande en obligation för en statsskuldväxel
-TBILLPRICE = SSVXPRIS ## Returnerar priset per 100 kr nominellt värde för en statsskuldväxel
-TBILLYIELD = SSVXRÄNTA ## Returnerar avkastningen för en statsskuldväxel
-VDB = VDEGRAVSKR ## Returnerar avskrivningen för en tillgång under en angiven period (med degressiv avskrivning)
-XIRR = XIRR ## Returnerar internräntan för en serie betalningar som inte nödvändigtvis är periodiska
-XNPV = XNUVÄRDE ## Returnerar det nuvarande nettovärdet för en serie betalningar som inte nödvändigtvis är periodiska
-YIELD = NOMAVK ## Returnerar avkastningen för ett värdepapper som ger periodisk ränta
-YIELDDISC = NOMAVKDISK ## Returnerar den årliga avkastningen för diskonterade värdepapper, exempelvis en statsskuldväxel
-YIELDMAT = NOMAVKFÖRF ## Returnerar den årliga avkastningen för ett värdepapper som ger ränta på förfallodagen
-
-
-##
-## Information functions Informationsfunktioner
-##
-CELL = CELL ## Returnerar information om formatering, plats och innehåll i en cell
-ERROR.TYPE = FEL.TYP ## Returnerar ett tal som motsvarar ett felvärde
-INFO = INFO ## Returnerar information om operativsystemet
-ISBLANK = ÄRREF ## Returnerar SANT om värdet är tomt
-ISERR = Ä ## Returnerar SANT om värdet är ett felvärde annat än #SAKNAS!
-ISERROR = ÄRFEL ## Returnerar SANT om värdet är ett felvärde
-ISEVEN = ÄRJÄMN ## Returnerar SANT om talet är jämnt
-ISLOGICAL = ÄREJTEXT ## Returnerar SANT om värdet är ett logiskt värde
-ISNA = ÄRLOGISK ## Returnerar SANT om värdet är felvärdet #SAKNAS!
-ISNONTEXT = ÄRSAKNAD ## Returnerar SANT om värdet inte är text
-ISNUMBER = ÄRTAL ## Returnerar SANT om värdet är ett tal
-ISODD = ÄRUDDA ## Returnerar SANT om talet är udda
-ISREF = ÄRTOM ## Returnerar SANT om värdet är en referens
-ISTEXT = ÄRTEXT ## Returnerar SANT om värdet är text
-N = N ## Returnerar ett värde omvandlat till ett tal
-NA = SAKNAS ## Returnerar felvärdet #SAKNAS!
-TYPE = VÄRDETYP ## Returnerar ett tal som anger värdets datatyp
-
-
-##
-## Logical functions Logiska funktioner
-##
-AND = OCH ## Returnerar SANT om alla argument är sanna
-FALSE = FALSKT ## Returnerar det logiska värdet FALSKT
-IF = OM ## Anger vilket logiskt test som ska utföras
-IFERROR = OMFEL ## Returnerar ett värde som du anger om en formel utvärderar till ett fel; annars returneras resultatet av formeln
-NOT = ICKE ## Inverterar logiken för argumenten
-OR = ELLER ## Returnerar SANT om något argument är SANT
-TRUE = SANT ## Returnerar det logiska värdet SANT
-
-
-##
-## Lookup and reference functions Sök- och referensfunktioner
-##
-ADDRESS = ADRESS ## Returnerar en referens som text till en enstaka cell i ett kalkylblad
-AREAS = OMRÅDEN ## Returnerar antalet områden i en referens
-CHOOSE = VÄLJ ## Väljer ett värde i en lista över värden
-COLUMN = KOLUMN ## Returnerar kolumnnumret för en referens
-COLUMNS = KOLUMNER ## Returnerar antalet kolumner i en referens
-HLOOKUP = LETAKOLUMN ## Söker i den översta raden i en matris och returnerar värdet för angiven cell
-HYPERLINK = HYPERLÄNK ## Skapar en genväg eller ett hopp till ett dokument i nätverket, i ett intranät eller på Internet
-INDEX = INDEX ## Använder ett index för ett välja ett värde i en referens eller matris
-INDIRECT = INDIREKT ## Returnerar en referens som anges av ett textvärde
-LOOKUP = LETAUPP ## Letar upp värden i en vektor eller matris
-MATCH = PASSA ## Letar upp värden i en referens eller matris
-OFFSET = FÖRSKJUTNING ## Returnerar en referens förskjuten i förhållande till en given referens
-ROW = RAD ## Returnerar radnumret för en referens
-ROWS = RADER ## Returnerar antalet rader i en referens
-RTD = RTD ## Hämtar realtidsdata från ett program som stöder COM-automation (Automation: Ett sätt att arbeta med ett programs objekt från ett annat program eller utvecklingsverktyg. Detta kallades tidigare för OLE Automation, och är en branschstandard och ingår i Component Object Model (COM).)
-TRANSPOSE = TRANSPONERA ## Transponerar en matris
-VLOOKUP = LETARAD ## Letar i den första kolumnen i en matris och flyttar över raden för att returnera värdet för en cell
-
-
-##
-## Math and trigonometry functions Matematiska och trigonometriska funktioner
-##
-ABS = ABS ## Returnerar absolutvärdet av ett tal
-ACOS = ARCCOS ## Returnerar arcus cosinus för ett tal
-ACOSH = ARCCOSH ## Returnerar inverterad hyperbolisk cosinus för ett tal
-ASIN = ARCSIN ## Returnerar arcus cosinus för ett tal
-ASINH = ARCSINH ## Returnerar hyperbolisk arcus sinus för ett tal
-ATAN = ARCTAN ## Returnerar arcus tangens för ett tal
-ATAN2 = ARCTAN2 ## Returnerar arcus tangens för en x- och en y- koordinat
-ATANH = ARCTANH ## Returnerar hyperbolisk arcus tangens för ett tal
-CEILING = RUNDA.UPP ## Avrundar ett tal till närmaste heltal eller närmaste signifikanta multipel
-COMBIN = KOMBIN ## Returnerar antalet kombinationer för ett givet antal objekt
-COS = COS ## Returnerar cosinus för ett tal
-COSH = COSH ## Returnerar hyperboliskt cosinus för ett tal
-DEGREES = GRADER ## Omvandlar radianer till grader
-EVEN = JÄMN ## Avrundar ett tal uppåt till närmaste heltal
-EXP = EXP ## Returnerar e upphöjt till ett givet tal
-FACT = FAKULTET ## Returnerar fakulteten för ett tal
-FACTDOUBLE = DUBBELFAKULTET ## Returnerar dubbelfakulteten för ett tal
-FLOOR = RUNDA.NED ## Avrundar ett tal nedåt mot noll
-GCD = SGD ## Returnerar den största gemensamma nämnaren
-INT = HELTAL ## Avrundar ett tal nedåt till närmaste heltal
-LCM = MGM ## Returnerar den minsta gemensamma multipeln
-LN = LN ## Returnerar den naturliga logaritmen för ett tal
-LOG = LOG ## Returnerar logaritmen för ett tal för en given bas
-LOG10 = LOG10 ## Returnerar 10-logaritmen för ett tal
-MDETERM = MDETERM ## Returnerar matrisen som är avgörandet av en matris
-MINVERSE = MINVERT ## Returnerar matrisinversen av en matris
-MMULT = MMULT ## Returnerar matrisprodukten av två matriser
-MOD = REST ## Returnerar resten vid en division
-MROUND = MAVRUNDA ## Returnerar ett tal avrundat till en given multipel
-MULTINOMIAL = MULTINOMIAL ## Returnerar multinomialen för en uppsättning tal
-ODD = UDDA ## Avrundar ett tal uppåt till närmaste udda heltal
-PI = PI ## Returnerar värdet pi
-POWER = UPPHÖJT.TILL ## Returnerar resultatet av ett tal upphöjt till en exponent
-PRODUCT = PRODUKT ## Multiplicerar argumenten
-QUOTIENT = KVOT ## Returnerar heltalsdelen av en division
-RADIANS = RADIANER ## Omvandlar grader till radianer
-RAND = SLUMP ## Returnerar ett slumptal mellan 0 och 1
-RANDBETWEEN = SLUMP.MELLAN ## Returnerar ett slumptal mellan de tal som du anger
-ROMAN = ROMERSK ## Omvandlar vanliga (arabiska) siffror till romerska som text
-ROUND = AVRUNDA ## Avrundar ett tal till ett angivet antal siffror
-ROUNDDOWN = AVRUNDA.NEDÅT ## Avrundar ett tal nedåt mot noll
-ROUNDUP = AVRUNDA.UPPÅT ## Avrundar ett tal uppåt, från noll
-SERIESSUM = SERIESUMMA ## Returnerar summan av en potensserie baserat på formeln
-SIGN = TECKEN ## Returnerar tecknet för ett tal
-SIN = SIN ## Returnerar sinus för en given vinkel
-SINH = SINH ## Returnerar hyperbolisk sinus för ett tal
-SQRT = ROT ## Returnerar den positiva kvadratroten
-SQRTPI = ROTPI ## Returnerar kvadratroten för (tal * pi)
-SUBTOTAL = DELSUMMA ## Returnerar en delsumma i en lista eller databas
-SUM = SUMMA ## Summerar argumenten
-SUMIF = SUMMA.OM ## Summerar celler enligt ett angivet villkor
-SUMIFS = SUMMA.OMF ## Lägger till cellerna i ett område som uppfyller flera kriterier
-SUMPRODUCT = PRODUKTSUMMA ## Returnerar summan av produkterna i motsvarande matriskomponenter
-SUMSQ = KVADRATSUMMA ## Returnerar summan av argumentens kvadrater
-SUMX2MY2 = SUMMAX2MY2 ## Returnerar summan av differensen mellan kvadraterna för motsvarande värden i två matriser
-SUMX2PY2 = SUMMAX2PY2 ## Returnerar summan av summan av kvadraterna av motsvarande värden i två matriser
-SUMXMY2 = SUMMAXMY2 ## Returnerar summan av kvadraten av skillnaden mellan motsvarande värden i två matriser
-TAN = TAN ## Returnerar tangens för ett tal
-TANH = TANH ## Returnerar hyperbolisk tangens för ett tal
-TRUNC = AVKORTA ## Avkortar ett tal till ett heltal
-
-
-##
-## Statistical functions Statistiska funktioner
-##
-AVEDEV = MEDELAVV ## Returnerar medelvärdet för datapunkters absoluta avvikelse från deras medelvärde
-AVERAGE = MEDEL ## Returnerar medelvärdet av argumenten
-AVERAGEA = AVERAGEA ## Returnerar medelvärdet av argumenten, inklusive tal, text och logiska värden
-AVERAGEIF = MEDELOM ## Returnerar medelvärdet (aritmetiskt medelvärde) för alla celler i ett område som uppfyller ett givet kriterium
-AVERAGEIFS = MEDELOMF ## Returnerar medelvärdet (det aritmetiska medelvärdet) för alla celler som uppfyller flera villkor.
-BETADIST = BETAFÖRD ## Returnerar den kumulativa betafördelningsfunktionen
-BETAINV = BETAINV ## Returnerar inversen till den kumulativa fördelningsfunktionen för en viss betafördelning
-BINOMDIST = BINOMFÖRD ## Returnerar den individuella binomialfördelningen
-CHIDIST = CHI2FÖRD ## Returnerar den ensidiga sannolikheten av c2-fördelningen
-CHIINV = CHI2INV ## Returnerar inversen av chi2-fördelningen
-CHITEST = CHI2TEST ## Returnerar oberoendetesten
-CONFIDENCE = KONFIDENS ## Returnerar konfidensintervallet för en populations medelvärde
-CORREL = KORREL ## Returnerar korrelationskoefficienten mellan två datamängder
-COUNT = ANTAL ## Räknar hur många tal som finns bland argumenten
-COUNTA = ANTALV ## Räknar hur många värden som finns bland argumenten
-COUNTBLANK = ANTAL.TOMMA ## Räknar antalet tomma celler i ett område
-COUNTIF = ANTAL.OM ## Räknar antalet celler i ett område som uppfyller angivna villkor.
-COUNTIFS = ANTAL.OMF ## Räknar antalet celler i ett område som uppfyller flera villkor.
-COVAR = KOVAR ## Returnerar kovariansen, d.v.s. medelvärdet av produkterna för parade avvikelser
-CRITBINOM = KRITBINOM ## Returnerar det minsta värdet för vilket den kumulativa binomialfördelningen är mindre än eller lika med ett villkorsvärde
-DEVSQ = KVADAVV ## Returnerar summan av kvadrater på avvikelser
-EXPONDIST = EXPONFÖRD ## Returnerar exponentialfördelningen
-FDIST = FFÖRD ## Returnerar F-sannolikhetsfördelningen
-FINV = FINV ## Returnerar inversen till F-sannolikhetsfördelningen
-FISHER = FISHER ## Returnerar Fisher-transformationen
-FISHERINV = FISHERINV ## Returnerar inversen till Fisher-transformationen
-FORECAST = PREDIKTION ## Returnerar ett värde längs en linjär trendlinje
-FREQUENCY = FREKVENS ## Returnerar en frekvensfördelning som en lodrät matris
-FTEST = FTEST ## Returnerar resultatet av en F-test
-GAMMADIST = GAMMAFÖRD ## Returnerar gammafördelningen
-GAMMAINV = GAMMAINV ## Returnerar inversen till den kumulativa gammafördelningen
-GAMMALN = GAMMALN ## Returnerar den naturliga logaritmen för gammafunktionen, G(x)
-GEOMEAN = GEOMEDEL ## Returnerar det geometriska medelvärdet
-GROWTH = EXPTREND ## Returnerar värden längs en exponentiell trend
-HARMEAN = HARMMEDEL ## Returnerar det harmoniska medelvärdet
-HYPGEOMDIST = HYPGEOMFÖRD ## Returnerar den hypergeometriska fördelningen
-INTERCEPT = SKÄRNINGSPUNKT ## Returnerar skärningspunkten för en linjär regressionslinje
-KURT = TOPPIGHET ## Returnerar toppigheten av en mängd data
-LARGE = STÖRSTA ## Returnerar det n:te största värdet i en mängd data
-LINEST = REGR ## Returnerar parametrar till en linjär trendlinje
-LOGEST = EXPREGR ## Returnerar parametrarna i en exponentiell trend
-LOGINV = LOGINV ## Returnerar inversen till den lognormala fördelningen
-LOGNORMDIST = LOGNORMFÖRD ## Returnerar den kumulativa lognormala fördelningen
-MAX = MAX ## Returnerar det största värdet i en lista av argument
-MAXA = MAXA ## Returnerar det största värdet i en lista av argument, inklusive tal, text och logiska värden
-MEDIAN = MEDIAN ## Returnerar medianen för angivna tal
-MIN = MIN ## Returnerar det minsta värdet i en lista med argument
-MINA = MINA ## Returnerar det minsta värdet i en lista över argument, inklusive tal, text och logiska värden
-MODE = TYPVÄRDE ## Returnerar det vanligaste värdet i en datamängd
-NEGBINOMDIST = NEGBINOMFÖRD ## Returnerar den negativa binomialfördelningen
-NORMDIST = NORMFÖRD ## Returnerar den kumulativa normalfördelningen
-NORMINV = NORMINV ## Returnerar inversen till den kumulativa normalfördelningen
-NORMSDIST = NORMSFÖRD ## Returnerar den kumulativa standardnormalfördelningen
-NORMSINV = NORMSINV ## Returnerar inversen till den kumulativa standardnormalfördelningen
-PEARSON = PEARSON ## Returnerar korrelationskoefficienten till Pearsons momentprodukt
-PERCENTILE = PERCENTIL ## Returnerar den n:te percentilen av värden i ett område
-PERCENTRANK = PROCENTRANG ## Returnerar procentrangen för ett värde i en datamängd
-PERMUT = PERMUT ## Returnerar antal permutationer för ett givet antal objekt
-POISSON = POISSON ## Returnerar Poisson-fördelningen
-PROB = SANNOLIKHET ## Returnerar sannolikheten att värden i ett område ligger mellan två gränser
-QUARTILE = KVARTIL ## Returnerar kvartilen av en mängd data
-RANK = RANG ## Returnerar rangordningen för ett tal i en lista med tal
-RSQ = RKV ## Returnerar kvadraten av Pearsons produktmomentkorrelationskoefficient
-SKEW = SNEDHET ## Returnerar snedheten för en fördelning
-SLOPE = LUTNING ## Returnerar lutningen på en linjär regressionslinje
-SMALL = MINSTA ## Returnerar det n:te minsta värdet i en mängd data
-STANDARDIZE = STANDARDISERA ## Returnerar ett normaliserat värde
-STDEV = STDAV ## Uppskattar standardavvikelsen baserat på ett urval
-STDEVA = STDEVA ## Uppskattar standardavvikelsen baserat på ett urval, inklusive tal, text och logiska värden
-STDEVP = STDAVP ## Beräknar standardavvikelsen baserat på hela populationen
-STDEVPA = STDEVPA ## Beräknar standardavvikelsen baserat på hela populationen, inklusive tal, text och logiska värden
-STEYX = STDFELYX ## Returnerar standardfelet för ett förutspått y-värde för varje x-värde i regressionen
-TDIST = TFÖRD ## Returnerar Students t-fördelning
-TINV = TINV ## Returnerar inversen till Students t-fördelning
-TREND = TREND ## Returnerar värden längs en linjär trend
-TRIMMEAN = TRIMMEDEL ## Returnerar medelvärdet av mittpunkterna i en datamängd
-TTEST = TTEST ## Returnerar sannolikheten beräknad ur Students t-test
-VAR = VARIANS ## Uppskattar variansen baserat på ett urval
-VARA = VARA ## Uppskattar variansen baserat på ett urval, inklusive tal, text och logiska värden
-VARP = VARIANSP ## Beräknar variansen baserat på hela populationen
-VARPA = VARPA ## Beräknar variansen baserat på hela populationen, inklusive tal, text och logiska värden
-WEIBULL = WEIBULL ## Returnerar Weibull-fördelningen
-ZTEST = ZTEST ## Returnerar det ensidiga sannolikhetsvärdet av ett z-test
-
-
-##
-## Text functions Textfunktioner
-##
-ASC = ASC ## Ändrar helbredds (dubbel byte) engelska bokstäver eller katakana inom en teckensträng till tecken med halvt breddsteg (enkel byte)
-BAHTTEXT = BAHTTEXT ## Omvandlar ett tal till text med valutaformatet ß (baht)
-CHAR = TECKENKOD ## Returnerar tecknet som anges av kod
-CLEAN = STÄDA ## Tar bort alla icke utskrivbara tecken i en text
-CODE = KOD ## Returnerar en numerisk kod för det första tecknet i en textsträng
-CONCATENATE = SAMMANFOGA ## Sammanfogar flera textdelar till en textsträng
-DOLLAR = VALUTA ## Omvandlar ett tal till text med valutaformat
-EXACT = EXAKT ## Kontrollerar om två textvärden är identiska
-FIND = HITTA ## Hittar en text i en annan (skiljer på gemener och versaler)
-FINDB = HITTAB ## Hittar en text i en annan (skiljer på gemener och versaler)
-FIXED = FASTTAL ## Formaterar ett tal som text med ett fast antal decimaler
-JIS = JIS ## Ändrar halvbredds (enkel byte) engelska bokstäver eller katakana inom en teckensträng till tecken med helt breddsteg (dubbel byte)
-LEFT = VÄNSTER ## Returnerar tecken längst till vänster i en sträng
-LEFTB = VÄNSTERB ## Returnerar tecken längst till vänster i en sträng
-LEN = LÄNGD ## Returnerar antalet tecken i en textsträng
-LENB = LÄNGDB ## Returnerar antalet tecken i en textsträng
-LOWER = GEMENER ## Omvandlar text till gemener
-MID = EXTEXT ## Returnerar angivet antal tecken från en text med början vid den position som du anger
-MIDB = EXTEXTB ## Returnerar angivet antal tecken från en text med början vid den position som du anger
-PHONETIC = PHONETIC ## Returnerar de fonetiska (furigana) tecknen i en textsträng
-PROPER = INITIAL ## Ändrar första bokstaven i varje ord i ett textvärde till versal
-REPLACE = ERSÄTT ## Ersätter tecken i text
-REPLACEB = ERSÄTTB ## Ersätter tecken i text
-REPT = REP ## Upprepar en text ett bestämt antal gånger
-RIGHT = HÖGER ## Returnerar tecken längst till höger i en sträng
-RIGHTB = HÖGERB ## Returnerar tecken längst till höger i en sträng
-SEARCH = SÖK ## Hittar ett textvärde i ett annat (skiljer inte på gemener och versaler)
-SEARCHB = SÖKB ## Hittar ett textvärde i ett annat (skiljer inte på gemener och versaler)
-SUBSTITUTE = BYT.UT ## Ersätter gammal text med ny text i en textsträng
-T = T ## Omvandlar argumenten till text
-TEXT = TEXT ## Formaterar ett tal och omvandlar det till text
-TRIM = RENSA ## Tar bort blanksteg från text
-UPPER = VERSALER ## Omvandlar text till versaler
-VALUE = TEXTNUM ## Omvandlar ett textargument till ett tal
diff --git a/admin/survey/excel/PHPExcel/locale/tr/config b/admin/survey/excel/PHPExcel/locale/tr/config
deleted file mode 100644
index bd75af6..0000000
--- a/admin/survey/excel/PHPExcel/locale/tr/config
+++ /dev/null
@@ -1,47 +0,0 @@
-##
-## PHPExcel
-##
-## Copyright (c) 2006 - 2011 PHPExcel
-##
-## This library is free software; you can redistribute it and/or
-## modify it under the terms of the GNU Lesser General Public
-## License as published by the Free Software Foundation; either
-## version 2.1 of the License, or (at your option) any later version.
-##
-## This library is distributed in the hope that it will be useful,
-## but WITHOUT ANY WARRANTY; without even the implied warranty of
-## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-## Lesser General Public License for more details.
-##
-## You should have received a copy of the GNU Lesser General Public
-## License along with this library; if not, write to the Free Software
-## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-##
-## @category PHPExcel
-## @package PHPExcel_Settings
-## @copyright Copyright (c) 2006 - 2011 PHPExcel (http://www.codeplex.com/PHPExcel)
-## @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
-## @version 1.7.8, 2012-10-12
-##
-##
-
-
-ArgumentSeparator = ;
-
-
-##
-## (For future use)
-##
-currencySymbol = YTL
-
-
-##
-## Excel Error Codes (For future use)
-##
-NULL = #BOŞ!
-DIV0 = #SAYI/0!
-VALUE = #DEĞER!
-REF = #BAŞV!
-NAME = #AD?
-NUM = #SAYI!
-NA = #YOK
diff --git a/admin/survey/excel/PHPExcel/locale/tr/functions b/admin/survey/excel/PHPExcel/locale/tr/functions
deleted file mode 100644
index f8cd30f..0000000
--- a/admin/survey/excel/PHPExcel/locale/tr/functions
+++ /dev/null
@@ -1,438 +0,0 @@
-##
-## PHPExcel
-##
-## Copyright (c) 2006 - 2011 PHPExcel
-##
-## This library is free software; you can redistribute it and/or
-## modify it under the terms of the GNU Lesser General Public
-## License as published by the Free Software Foundation; either
-## version 2.1 of the License, or (at your option) any later version.
-##
-## This library is distributed in the hope that it will be useful,
-## but WITHOUT ANY WARRANTY; without even the implied warranty of
-## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-## Lesser General Public License for more details.
-##
-## You should have received a copy of the GNU Lesser General Public
-## License along with this library; if not, write to the Free Software
-## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-##
-## @category PHPExcel
-## @package PHPExcel_Calculation
-## @copyright Copyright (c) 2006 - 2011 PHPExcel (http://www.codeplex.com/PHPExcel)
-## @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
-## @version 1.7.8, 2012-10-12
-##
-## Data in this file derived from http://www.piuha.fi/excel-function-name-translation/
-##
-##
-
-
-##
-## Add-in and Automation functions Eklenti ve Otomasyon fonksiyonları
-##
-GETPIVOTDATA = ÖZETVERİAL ## Bir Özet Tablo raporunda saklanan verileri verir.
-
-
-##
-## Cube functions Küp işlevleri
-##
-CUBEKPIMEMBER = KÜPKPIÜYE ## Kilit performans göstergesi (KPI-Key Performance Indicator) adını, özelliğini ve ölçüsünü verir ve hücredeki ad ve özelliği gösterir. KPI, bir kurumun performansını izlemek için kullanılan aylık brüt kâr ya da üç aylık çalışan giriş çıkışları gibi ölçülebilen bir birimdir.
-CUBEMEMBER = KÜPÜYE ## Bir küp hiyerarşisinde bir üyeyi veya kaydı verir. Üye veya kaydın küpte varolduğunu doğrulamak için kullanılır.
-CUBEMEMBERPROPERTY = KÜPÜYEÖZELLİĞİ ## Bir küpte bir üyenin özelliğinin değerini verir. Küp içinde üye adının varlığını doğrulamak ve bu üyenin belli özelliklerini getirmek için kullanılır.
-CUBERANKEDMEMBER = KÜPÜYESIRASI ## Bir küme içindeki üyenin derecesini veya kaçıncı olduğunu verir. En iyi satış elemanı, veya en iyi on öğrenci gibi bir kümedeki bir veya daha fazla öğeyi getirmek için kullanılır.
-CUBESET = KÜPKÜME ## Kümeyi oluşturan ve ardından bu kümeyi Microsoft Office Excel'e getiren sunucudaki küpe küme ifadelerini göndererek hesaplanan üye veya kayıt kümesini tanımlar.
-CUBESETCOUNT = KÜPKÜMESAY ## Bir kümedeki öğelerin sayısını getirir.
-CUBEVALUE = KÜPDEĞER ## Bir küpten toplam değeri getirir.
-
-
-##
-## Database functions Veritabanı işlevleri
-##
-DAVERAGE = VSEÇORT ## Seçili veritabanı girdilerinin ortalamasını verir.
-DCOUNT = VSEÇSAY ## Veritabanında sayı içeren hücre sayısını hesaplar.
-DCOUNTA = VSEÇSAYDOLU ## Veritabanındaki boş olmayan hücreleri sayar.
-DGET = VAL ## Veritabanından, belirtilen ölçütlerle eşleşen tek bir rapor çıkarır.
-DMAX = VSEÇMAK ## Seçili veritabanı girişlerinin en yüksek değerini verir.
-DMIN = VSEÇMİN ## Seçili veritabanı girişlerinin en düşük değerini verir.
-DPRODUCT = VSEÇÇARP ## Kayıtların belli bir alanında bulunan, bir veritabanındaki ölçütlerle eşleşen değerleri çarpar.
-DSTDEV = VSEÇSTDSAPMA ## Seçili veritabanı girişlerinden oluşan bir örneğe dayanarak, standart sapmayı tahmin eder.
-DSTDEVP = VSEÇSTDSAPMAS ## Standart sapmayı, seçili veritabanı girişlerinin tüm popülasyonunu esas alarak hesaplar.
-DSUM = VSEÇTOPLA ## Kayıtların alan sütununda bulunan, ölçütle eşleşen sayıları toplar.
-DVAR = VSEÇVAR ## Seçili veritabanı girişlerinden oluşan bir örneği esas alarak farkı tahmin eder.
-DVARP = VSEÇVARS ## Seçili veritabanı girişlerinin tüm popülasyonunu esas alarak farkı hesaplar.
-
-
-##
-## Date and time functions Tarih ve saat işlevleri
-##
-DATE = TARİH ## Belirli bir tarihin seri numarasını verir.
-DATEVALUE = TARİHSAYISI ## Metin biçimindeki bir tarihi seri numarasına dönüştürür.
-DAY = GÜN ## Seri numarasını, ayın bir gününe dönüştürür.
-DAYS360 = GÜN360 ## İki tarih arasındaki gün sayısını, 360 günlük yılı esas alarak hesaplar.
-EDATE = SERİTARİH ## Başlangıç tarihinden itibaren, belirtilen ay sayısından önce veya sonraki tarihin seri numarasını verir.
-EOMONTH = SERİAY ## Belirtilen sayıda ay önce veya sonraki ayın son gününün seri numarasını verir.
-HOUR = SAAT ## Bir seri numarasını saate dönüştürür.
-MINUTE = DAKİKA ## Bir seri numarasını dakikaya dönüştürür.
-MONTH = AY ## Bir seri numarasını aya dönüştürür.
-NETWORKDAYS = TAMİŞGÜNÜ ## İki tarih arasındaki tam çalışma günlerinin sayısını verir.
-NOW = ŞİMDİ ## Geçerli tarihin ve saatin seri numarasını verir.
-SECOND = SANİYE ## Bir seri numarasını saniyeye dönüştürür.
-TIME = ZAMAN ## Belirli bir zamanın seri numarasını verir.
-TIMEVALUE = ZAMANSAYISI ## Metin biçimindeki zamanı seri numarasına dönüştürür.
-TODAY = BUGÜN ## Bugünün tarihini seri numarasına dönüştürür.
-WEEKDAY = HAFTANINGÜNÜ ## Bir seri numarasını, haftanın gününe dönüştürür.
-WEEKNUM = HAFTASAY ## Dizisel değerini, haftanın yıl içinde bulunduğu konumu sayısal olarak gösteren sayıya dönüştürür.
-WORKDAY = İŞGÜNÜ ## Belirtilen sayıda çalışma günü öncesinin ya da sonrasının tarihinin seri numarasını verir.
-YEAR = YIL ## Bir seri numarasını yıla dönüştürür.
-YEARFRAC = YILORAN ## Başlangıç_tarihi ve bitiş_tarihi arasındaki tam günleri gösteren yıl kesrini verir.
-
-
-##
-## Engineering functions Mühendislik işlevleri
-##
-BESSELI = BESSELI ## Değiştirilmiş Bessel fonksiyonu In(x)'i verir.
-BESSELJ = BESSELJ ## Bessel fonksiyonu Jn(x)'i verir.
-BESSELK = BESSELK ## Değiştirilmiş Bessel fonksiyonu Kn(x)'i verir.
-BESSELY = BESSELY ## Bessel fonksiyonu Yn(x)'i verir.
-BIN2DEC = BIN2DEC ## İkili bir sayıyı, ondalık sayıya dönüştürür.
-BIN2HEX = BIN2HEX ## İkili bir sayıyı, onaltılıya dönüştürür.
-BIN2OCT = BIN2OCT ## İkili bir sayıyı, sekizliye dönüştürür.
-COMPLEX = KARMAŞIK ## Gerçek ve sanal katsayıları, karmaşık sayıya dönüştürür.
-CONVERT = ÇEVİR ## Bir sayıyı, bir ölçüm sisteminden bir başka ölçüm sistemine dönüştürür.
-DEC2BIN = DEC2BIN ## Ondalık bir sayıyı, ikiliye dönüştürür.
-DEC2HEX = DEC2HEX ## Ondalık bir sayıyı, onaltılıya dönüştürür.
-DEC2OCT = DEC2OCT ## Ondalık bir sayıyı sekizliğe dönüştürür.
-DELTA = DELTA ## İki değerin eşit olup olmadığını sınar.
-ERF = HATAİŞLEV ## Hata işlevini verir.
-ERFC = TÜMHATAİŞLEV ## Tümleyici hata işlevini verir.
-GESTEP = BESINIR ## Bir sayının eşik değerinden büyük olup olmadığını sınar.
-HEX2BIN = HEX2BIN ## Onaltılı bir sayıyı ikiliye dönüştürür.
-HEX2DEC = HEX2DEC ## Onaltılı bir sayıyı ondalığa dönüştürür.
-HEX2OCT = HEX2OCT ## Onaltılı bir sayıyı sekizliğe dönüştürür.
-IMABS = SANMUTLAK ## Karmaşık bir sayının mutlak değerini (modül) verir.
-IMAGINARY = SANAL ## Karmaşık bir sayının sanal katsayısını verir.
-IMARGUMENT = SANBAĞ_DEĞİŞKEN ## Radyanlarla belirtilen bir açı olan teta bağımsız değişkenini verir.
-IMCONJUGATE = SANEŞLENEK ## Karmaşık bir sayının karmaşık eşleniğini verir.
-IMCOS = SANCOS ## Karmaşık bir sayının kosinüsünü verir.
-IMDIV = SANBÖL ## İki karmaşık sayının bölümünü verir.
-IMEXP = SANÜS ## Karmaşık bir sayının üssünü verir.
-IMLN = SANLN ## Karmaşık bir sayının doğal logaritmasını verir.
-IMLOG10 = SANLOG10 ## Karmaşık bir sayının, 10 tabanında logaritmasını verir.
-IMLOG2 = SANLOG2 ## Karmaşık bir sayının 2 tabanında logaritmasını verir.
-IMPOWER = SANÜSSÜ ## Karmaşık bir sayıyı, bir tamsayı üssüne yükseltilmiş olarak verir.
-IMPRODUCT = SANÇARP ## Karmaşık sayıların çarpımını verir.
-IMREAL = SANGERÇEK ## Karmaşık bir sayının, gerçek katsayısını verir.
-IMSIN = SANSIN ## Karmaşık bir sayının sinüsünü verir.
-IMSQRT = SANKAREKÖK ## Karmaşık bir sayının karekökünü verir.
-IMSUB = SANÇIKAR ## İki karmaşık sayının farkını verir.
-IMSUM = SANTOPLA ## Karmaşık sayıların toplamını verir.
-OCT2BIN = OCT2BIN ## Sekizli bir sayıyı ikiliye dönüştürür.
-OCT2DEC = OCT2DEC ## Sekizli bir sayıyı ondalığa dönüştürür.
-OCT2HEX = OCT2HEX ## Sekizli bir sayıyı onaltılıya dönüştürür.
-
-
-##
-## Financial functions Finansal fonksiyonlar
-##
-ACCRINT = GERÇEKFAİZ ## Dönemsel faiz ödeyen hisse senedine ilişkin tahakkuk eden faizi getirir.
-ACCRINTM = GERÇEKFAİZV ## Vadesinde ödeme yapan bir tahvilin tahakkuk etmiş faizini verir.
-AMORDEGRC = AMORDEGRC ## Yıpranma katsayısı kullanarak her hesap döneminin değer kaybını verir.
-AMORLINC = AMORLINC ## Her hesap dönemi içindeki yıpranmayı verir.
-COUPDAYBS = KUPONGÜNBD ## Kupon süresinin başlangıcından alış tarihine kadar olan süredeki gün sayısını verir.
-COUPDAYS = KUPONGÜN ## Kupon süresindeki, gün sayısını, alış tarihini de içermek üzere, verir.
-COUPDAYSNC = KUPONGÜNDSK ## Alış tarihinden bir sonraki kupon tarihine kadar olan gün sayısını verir.
-COUPNCD = KUPONGÜNSKT ## Alış tarihinden bir sonraki kupon tarihini verir.
-COUPNUM = KUPONSAYI ## Alış tarihiyle vade tarihi arasında ödenecek kuponların sayısını verir.
-COUPPCD = KUPONGÜNÖKT ## Alış tarihinden bir önceki kupon tarihini verir.
-CUMIPMT = AİÇVERİMORANI ## İki dönem arasında ödenen kümülatif faizi verir.
-CUMPRINC = ANA_PARA_ÖDEMESİ ## İki dönem arasında bir borç üzerine ödenen birikimli temeli verir.
-DB = AZALANBAKİYE ## Bir malın belirtilen bir süre içindeki yıpranmasını, sabit azalan bakiye yöntemini kullanarak verir.
-DDB = ÇİFTAZALANBAKİYE ## Bir malın belirtilen bir süre içindeki yıpranmasını, çift azalan bakiye yöntemi ya da sizin belirttiğiniz başka bir yöntemi kullanarak verir.
-DISC = İNDİRİM ## Bir tahvilin indirim oranını verir.
-DOLLARDE = LİRAON ## Kesir olarak tanımlanmış lira fiyatını, ondalık sayı olarak tanımlanmış lira fiyatına dönüştürür.
-DOLLARFR = LİRAKES ## Ondalık sayı olarak tanımlanmış lira fiyatını, kesir olarak tanımlanmış lira fiyatına dönüştürür.
-DURATION = SÜRE ## Belli aralıklarla faiz ödemesi yapan bir tahvilin yıllık süresini verir.
-EFFECT = ETKİN ## Efektif yıllık faiz oranını verir.
-FV = ANBD ## Bir yatırımın gelecekteki değerini verir.
-FVSCHEDULE = GDPROGRAM ## Bir seri birleşik faiz oranı uyguladıktan sonra, bir başlangıçtaki anaparanın gelecekteki değerini verir.
-INTRATE = FAİZORANI ## Tam olarak yatırım yapılmış bir tahvilin faiz oranını verir.
-IPMT = FAİZTUTARI ## Bir yatırımın verilen bir süre için faiz ödemesini verir.
-IRR = İÇ_VERİM_ORANI ## Bir para akışı serisi için, iç verim oranını verir.
-ISPMT = ISPMT ## Yatırımın belirli bir dönemi boyunca ödenen faizi hesaplar.
-MDURATION = MSÜRE ## Varsayılan par değeri 10.000.000 lira olan bir tahvil için Macauley değiştirilmiş süreyi verir.
-MIRR = D_İÇ_VERİM_ORANI ## Pozitif ve negatif para akışlarının farklı oranlarda finanse edildiği durumlarda, iç verim oranını verir.
-NOMINAL = NOMİNAL ## Yıllık nominal faiz oranını verir.
-NPER = DÖNEM_SAYISI ## Bir yatırımın dönem sayısını verir.
-NPV = NBD ## Bir yatırımın bugünkü net değerini, bir dönemsel para akışları serisine ve bir indirim oranına bağlı olarak verir.
-ODDFPRICE = TEKYDEĞER ## Tek bir ilk dönemi olan bir tahvilin değerini, her 100.000.000 lirada bir verir.
-ODDFYIELD = TEKYÖDEME ## Tek bir ilk dönemi olan bir tahvilin ödemesini verir.
-ODDLPRICE = TEKSDEĞER ## Tek bir son dönemi olan bir tahvilin fiyatını her 10.000.000 lirada bir verir.
-ODDLYIELD = TEKSÖDEME ## Tek bir son dönemi olan bir tahvilin ödemesini verir.
-PMT = DEVRESEL_ÖDEME ## Bir yıllık dönemsel ödemeyi verir.
-PPMT = ANA_PARA_ÖDEMESİ ## Verilen bir süre için, bir yatırımın anaparasına dayanan ödemeyi verir.
-PRICE = DEĞER ## Dönemsel faiz ödeyen bir tahvilin fiyatını 10.000.00 liralık değer başına verir.
-PRICEDISC = DEĞERİND ## İndirimli bir tahvilin fiyatını 10.000.000 liralık nominal değer başına verir.
-PRICEMAT = DEĞERVADE ## Faizini vade sonunda ödeyen bir tahvilin fiyatını 10.000.000 nominal değer başına verir.
-PV = BD ## Bir yatırımın bugünkü değerini verir.
-RATE = FAİZ_ORANI ## Bir yıllık dönem başına düşen faiz oranını verir.
-RECEIVED = GETİRİ ## Tam olarak yatırılmış bir tahvilin vadesinin bitiminde alınan miktarı verir.
-SLN = DA ## Bir malın bir dönem içindeki doğrusal yıpranmasını verir.
-SYD = YAT ## Bir malın belirli bir dönem için olan amortismanını verir.
-TBILLEQ = HTAHEŞ ## Bir Hazine bonosunun bono eşdeğeri ödemesini verir.
-TBILLPRICE = HTAHDEĞER ## Bir Hazine bonosunun değerini, 10.000.000 liralık nominal değer başına verir.
-TBILLYIELD = HTAHÖDEME ## Bir Hazine bonosunun ödemesini verir.
-VDB = DAB ## Bir malın amortismanını, belirlenmiş ya da kısmi bir dönem için, bir azalan bakiye yöntemi kullanarak verir.
-XIRR = AİÇVERİMORANI ## Dönemsel olması gerekmeyen bir para akışları programı için, iç verim oranını verir.
-XNPV = ANBD ## Dönemsel olması gerekmeyen bir para akışları programı için, bugünkü net değeri verir.
-YIELD = ÖDEME ## Belirli aralıklarla faiz ödeyen bir tahvilin ödemesini verir.
-YIELDDISC = ÖDEMEİND ## İndirimli bir tahvilin yıllık ödemesini verir; örneğin, bir Hazine bonosunun.
-YIELDMAT = ÖDEMEVADE ## Vadesinin bitiminde faiz ödeyen bir tahvilin yıllık ödemesini verir.
-
-
-##
-## Information functions Bilgi fonksiyonları
-##
-CELL = HÜCRE ## Bir hücrenin biçimlendirmesi, konumu ya da içeriği hakkında bilgi verir.
-ERROR.TYPE = HATA.TİPİ ## Bir hata türüne ilişkin sayıları verir.
-INFO = BİLGİ ## Geçerli işletim ortamı hakkında bilgi verir.
-ISBLANK = EBOŞSA ## Değer boşsa, DOĞRU verir.
-ISERR = EHATA ## Değer, #YOK dışındaki bir hata değeriyse, DOĞRU verir.
-ISERROR = EHATALIYSA ## Değer, herhangi bir hata değeriyse, DOĞRU verir.
-ISEVEN = ÇİFTTİR ## Sayı çiftse, DOĞRU verir.
-ISLOGICAL = EMANTIKSALSA ## Değer, mantıksal bir değerse, DOĞRU verir.
-ISNA = EYOKSA ## Değer, #YOK hata değeriyse, DOĞRU verir.
-ISNONTEXT = EMETİNDEĞİLSE ## Değer, metin değilse, DOĞRU verir.
-ISNUMBER = ESAYIYSA ## Değer, bir sayıysa, DOĞRU verir.
-ISODD = TEKTİR ## Sayı tekse, DOĞRU verir.
-ISREF = EREFSE ## Değer bir başvuruysa, DOĞRU verir.
-ISTEXT = EMETİNSE ## Değer bir metinse DOĞRU verir.
-N = N ## Sayıya dönüştürülmüş bir değer verir.
-NA = YOKSAY ## #YOK hata değerini verir.
-TYPE = TİP ## Bir değerin veri türünü belirten bir sayı verir.
-
-
-##
-## Logical functions Mantıksal fonksiyonlar
-##
-AND = VE ## Bütün bağımsız değişkenleri DOĞRU ise, DOĞRU verir.
-FALSE = YANLIŞ ## YANLIŞ mantıksal değerini verir.
-IF = EĞER ## Gerçekleştirilecek bir mantıksal sınama belirtir.
-IFERROR = EĞERHATA ## Formül hatalıysa belirttiğiniz değeri verir; bunun dışındaki durumlarda formülün sonucunu verir.
-NOT = DEĞİL ## Bağımsız değişkeninin mantığını tersine çevirir.
-OR = YADA ## Bağımsız değişkenlerden herhangi birisi DOĞRU ise, DOĞRU verir.
-TRUE = DOĞRU ## DOĞRU mantıksal değerini verir.
-
-
-##
-## Lookup and reference functions Arama ve Başvuru fonksiyonları
-##
-ADDRESS = ADRES ## Bir başvuruyu, çalışma sayfasındaki tek bir hücreye metin olarak verir.
-AREAS = ALANSAY ## Renvoie le nombre de zones dans une référence.
-CHOOSE = ELEMAN ## Değerler listesinden bir değer seçer.
-COLUMN = SÜTUN ## Bir başvurunun sütun sayısını verir.
-COLUMNS = SÜTUNSAY ## Bir başvurudaki sütunların sayısını verir.
-HLOOKUP = YATAYARA ## Bir dizinin en üst satırına bakar ve belirtilen hücrenin değerini verir.
-HYPERLINK = KÖPRÜ ## Bir ağ sunucusunda, bir intranette ya da Internet'te depolanan bir belgeyi açan bir kısayol ya da atlama oluşturur.
-INDEX = İNDİS ## Başvurudan veya diziden bir değer seçmek için, bir dizin kullanır.
-INDIRECT = DOLAYLI ## Metin değeriyle belirtilen bir başvuru verir.
-LOOKUP = ARA ## Bir vektördeki veya dizideki değerleri arar.
-MATCH = KAÇINCI ## Bir başvurudaki veya dizideki değerleri arar.
-OFFSET = KAYDIR ## Verilen bir başvurudan, bir başvuru kaydırmayı verir.
-ROW = SATIR ## Bir başvurunun satır sayısını verir.
-ROWS = SATIRSAY ## Bir başvurudaki satırların sayısını verir.
-RTD = RTD ## COM otomasyonunu destekleyen programdan gerçek zaman verileri alır.
-TRANSPOSE = DEVRİK_DÖNÜŞÜM ## Bir dizinin devrik dönüşümünü verir.
-VLOOKUP = DÜŞEYARA ## Bir dizinin ilk sütununa bakar ve bir hücrenin değerini vermek için satır boyunca hareket eder.
-
-
-##
-## Math and trigonometry functions Matematik ve trigonometri fonksiyonları
-##
-ABS = MUTLAK ## Bir sayının mutlak değerini verir.
-ACOS = ACOS ## Bir sayının ark kosinüsünü verir.
-ACOSH = ACOSH ## Bir sayının ters hiperbolik kosinüsünü verir.
-ASIN = ASİN ## Bir sayının ark sinüsünü verir.
-ASINH = ASİNH ## Bir sayının ters hiperbolik sinüsünü verir.
-ATAN = ATAN ## Bir sayının ark tanjantını verir.
-ATAN2 = ATAN2 ## Ark tanjantı, x- ve y- koordinatlarından verir.
-ATANH = ATANH ## Bir sayının ters hiperbolik tanjantını verir.
-CEILING = TAVANAYUVARLA ## Bir sayıyı, en yakın tamsayıya ya da en yakın katına yuvarlar.
-COMBIN = KOMBİNASYON ## Verilen sayıda öğenin kombinasyon sayısını verir.
-COS = COS ## Bir sayının kosinüsünü verir.
-COSH = COSH ## Bir sayının hiperbolik kosinüsünü verir.
-DEGREES = DERECE ## Radyanları dereceye dönüştürür.
-EVEN = ÇİFT ## Bir sayıyı, en yakın daha büyük çift tamsayıya yuvarlar.
-EXP = ÜS ## e'yi, verilen bir sayının üssüne yükseltilmiş olarak verir.
-FACT = ÇARPINIM ## Bir sayının faktörünü verir.
-FACTDOUBLE = ÇİFTFAKTÖR ## Bir sayının çift çarpınımını verir.
-FLOOR = TABANAYUVARLA ## Bir sayıyı, daha küçük sayıya, sıfıra yakınsayarak yuvarlar.
-GCD = OBEB ## En büyük ortak böleni verir.
-INT = TAMSAYI ## Bir sayıyı aşağıya doğru en yakın tamsayıya yuvarlar.
-LCM = OKEK ## En küçük ortak katı verir.
-LN = LN ## Bir sayının doğal logaritmasını verir.
-LOG = LOG ## Bir sayının, belirtilen bir tabandaki logaritmasını verir.
-LOG10 = LOG10 ## Bir sayının 10 tabanında logaritmasını verir.
-MDETERM = DETERMİNANT ## Bir dizinin dizey determinantını verir.
-MINVERSE = DİZEY_TERS ## Bir dizinin dizey tersini verir.
-MMULT = DÇARP ## İki dizinin dizey çarpımını verir.
-MOD = MODÜLO ## Bölmeden kalanı verir.
-MROUND = KYUVARLA ## İstenen kata yuvarlanmış bir sayı verir.
-MULTINOMIAL = ÇOKTERİMLİ ## Bir sayılar kümesinin çok terimlisini verir.
-ODD = TEK ## Bir sayıyı en yakın daha büyük tek sayıya yuvarlar.
-PI = Pİ ## Pi değerini verir.
-POWER = KUVVET ## Bir üsse yükseltilmiş sayının sonucunu verir.
-PRODUCT = ÇARPIM ## Bağımsız değişkenlerini çarpar.
-QUOTIENT = BÖLÜM ## Bir bölme işleminin tamsayı kısmını verir.
-RADIANS = RADYAN ## Dereceleri radyanlara dönüştürür.
-RAND = S_SAYI_ÜRET ## 0 ile 1 arasında rastgele bir sayı verir.
-RANDBETWEEN = RASTGELEARALIK ## Belirttiğiniz sayılar arasında rastgele bir sayı verir.
-ROMAN = ROMEN ## Bir normal rakamı, metin olarak, romen rakamına çevirir.
-ROUND = YUVARLA ## Bir sayıyı, belirtilen basamak sayısına yuvarlar.
-ROUNDDOWN = AŞAĞIYUVARLA ## Bir sayıyı, daha küçük sayıya, sıfıra yakınsayarak yuvarlar.
-ROUNDUP = YUKARIYUVARLA ## Bir sayıyı daha büyük sayıya, sıfırdan ıraksayarak yuvarlar.
-SERIESSUM = SERİTOPLA ## Bir üs serisinin toplamını, formüle bağlı olarak verir.
-SIGN = İŞARET ## Bir sayının işaretini verir.
-SIN = SİN ## Verilen bir açının sinüsünü verir.
-SINH = SİNH ## Bir sayının hiperbolik sinüsünü verir.
-SQRT = KAREKÖK ## Pozitif bir karekök verir.
-SQRTPI = KAREKÖKPİ ## (* Pi sayısının) kare kökünü verir.
-SUBTOTAL = ALTTOPLAM ## Bir listedeki ya da veritabanındaki bir alt toplamı verir.
-SUM = TOPLA ## Bağımsız değişkenlerini toplar.
-SUMIF = ETOPLA ## Verilen ölçütle belirlenen hücreleri toplar.
-SUMIFS = SUMIFS ## Bir aralıktaki, birden fazla ölçüte uyan hücreleri ekler.
-SUMPRODUCT = TOPLA.ÇARPIM ## İlişkili dizi bileşenlerinin çarpımlarının toplamını verir.
-SUMSQ = TOPKARE ## Bağımsız değişkenlerin karelerinin toplamını verir.
-SUMX2MY2 = TOPX2EY2 ## İki dizideki ilişkili değerlerin farkının toplamını verir.
-SUMX2PY2 = TOPX2AY2 ## İki dizideki ilişkili değerlerin karelerinin toplamının toplamını verir.
-SUMXMY2 = TOPXEY2 ## İki dizideki ilişkili değerlerin farklarının karelerinin toplamını verir.
-TAN = TAN ## Bir sayının tanjantını verir.
-TANH = TANH ## Bir sayının hiperbolik tanjantını verir.
-TRUNC = NSAT ## Bir sayının, tamsayı durumuna gelecek şekilde, fazlalıklarını atar.
-
-
-##
-## Statistical functions İstatistiksel fonksiyonlar
-##
-AVEDEV = ORTSAP ## Veri noktalarının ortalamalarından mutlak sapmalarının ortalamasını verir.
-AVERAGE = ORTALAMA ## Bağımsız değişkenlerinin ortalamasını verir.
-AVERAGEA = ORTALAMAA ## Bağımsız değişkenlerinin, sayılar, metin ve mantıksal değerleri içermek üzere ortalamasını verir.
-AVERAGEIF = EĞERORTALAMA ## Verili ölçütü karşılayan bir aralıktaki bütün hücrelerin ortalamasını (aritmetik ortalama) hesaplar.
-AVERAGEIFS = EĞERLERORTALAMA ## Birden çok ölçüte uyan tüm hücrelerin ortalamasını (aritmetik ortalama) hesaplar.
-BETADIST = BETADAĞ ## Beta birikimli dağılım fonksiyonunu verir.
-BETAINV = BETATERS ## Belirli bir beta dağılımı için birikimli dağılım fonksiyonunun tersini verir.
-BINOMDIST = BİNOMDAĞ ## Tek terimli binom dağılımı olasılığını verir.
-CHIDIST = KİKAREDAĞ ## Kikare dağılımın tek kuyruklu olasılığını verir.
-CHIINV = KİKARETERS ## Kikare dağılımın kuyruklu olasılığının tersini verir.
-CHITEST = KİKARETEST ## Bağımsızlık sınamalarını verir.
-CONFIDENCE = GÜVENİRLİK ## Bir popülasyon ortalaması için güvenirlik aralığını verir.
-CORREL = KORELASYON ## İki veri kümesi arasındaki bağlantı katsayısını verir.
-COUNT = BAĞ_DEĞ_SAY ## Bağımsız değişkenler listesinde kaç tane sayı bulunduğunu sayar.
-COUNTA = BAĞ_DEĞ_DOLU_SAY ## Bağımsız değişkenler listesinde kaç tane değer bulunduğunu sayar.
-COUNTBLANK = BOŞLUKSAY ## Aralıktaki boş hücre sayısını hesaplar.
-COUNTIF = EĞERSAY ## Verilen ölçütlere uyan bir aralık içindeki hücreleri sayar.
-COUNTIFS = ÇOKEĞERSAY ## Birden çok ölçüte uyan bir aralık içindeki hücreleri sayar.
-COVAR = KOVARYANS ## Eşleştirilmiş sapmaların ortalaması olan kovaryansı verir.
-CRITBINOM = KRİTİKBİNOM ## Birikimli binom dağılımının bir ölçüt değerinden küçük veya ölçüt değerine eşit olduğu en küçük değeri verir.
-DEVSQ = SAPKARE ## Sapmaların karelerinin toplamını verir.
-EXPONDIST = ÜSTELDAĞ ## Üstel dağılımı verir.
-FDIST = FDAĞ ## F olasılık dağılımını verir.
-FINV = FTERS ## F olasılık dağılımının tersini verir.
-FISHER = FISHER ## Fisher dönüşümünü verir.
-FISHERINV = FISHERTERS ## Fisher dönüşümünün tersini verir.
-FORECAST = TAHMİN ## Bir doğrusal eğilim boyunca bir değer verir.
-FREQUENCY = SIKLIK ## Bir sıklık dağılımını, dikey bir dizi olarak verir.
-FTEST = FTEST ## Bir F-test'in sonucunu verir.
-GAMMADIST = GAMADAĞ ## Gama dağılımını verir.
-GAMMAINV = GAMATERS ## Gama kümülatif dağılımının tersini verir.
-GAMMALN = GAMALN ## Gama fonksiyonunun (?(x)) doğal logaritmasını verir.
-GEOMEAN = GEOORT ## Geometrik ortayı verir.
-GROWTH = BÜYÜME ## Üstel bir eğilim boyunca değerler verir.
-HARMEAN = HARORT ## Harmonik ortayı verir.
-HYPGEOMDIST = HİPERGEOMDAĞ ## Hipergeometrik dağılımı verir.
-INTERCEPT = KESMENOKTASI ## Doğrusal çakıştırma çizgisinin kesişme noktasını verir.
-KURT = BASIKLIK ## Bir veri kümesinin basıklığını verir.
-LARGE = BÜYÜK ## Bir veri kümesinde k. en büyük değeri verir.
-LINEST = DOT ## Doğrusal bir eğilimin parametrelerini verir.
-LOGEST = LOT ## Üstel bir eğilimin parametrelerini verir.
-LOGINV = LOGTERS ## Bir lognormal dağılımının tersini verir.
-LOGNORMDIST = LOGNORMDAĞ ## Birikimli lognormal dağılımını verir.
-MAX = MAK ## Bir bağımsız değişkenler listesindeki en büyük değeri verir.
-MAXA = MAKA ## Bir bağımsız değişkenler listesindeki, sayılar, metin ve mantıksal değerleri içermek üzere, en büyük değeri verir.
-MEDIAN = ORTANCA ## Belirtilen sayıların orta değerini verir.
-MIN = MİN ## Bir bağımsız değişkenler listesindeki en küçük değeri verir.
-MINA = MİNA ## Bir bağımsız değişkenler listesindeki, sayılar, metin ve mantıksal değerleri de içermek üzere, en küçük değeri verir.
-MODE = ENÇOK_OLAN ## Bir veri kümesindeki en sık rastlanan değeri verir.
-NEGBINOMDIST = NEGBİNOMDAĞ ## Negatif binom dağılımını verir.
-NORMDIST = NORMDAĞ ## Normal birikimli dağılımı verir.
-NORMINV = NORMTERS ## Normal kümülatif dağılımın tersini verir.
-NORMSDIST = NORMSDAĞ ## Standart normal birikimli dağılımı verir.
-NORMSINV = NORMSTERS ## Standart normal birikimli dağılımın tersini verir.
-PEARSON = PEARSON ## Pearson çarpım moment korelasyon katsayısını verir.
-PERCENTILE = YÜZDEBİRLİK ## Bir aralık içerisinde bulunan değerlerin k. frekans toplamını verir.
-PERCENTRANK = YÜZDERANK ## Bir veri kümesindeki bir değerin yüzde mertebesini verir.
-PERMUT = PERMÜTASYON ## Verilen sayıda nesne için permütasyon sayısını verir.
-POISSON = POISSON ## Poisson dağılımını verir.
-PROB = OLASILIK ## Bir aralıktaki değerlerin iki sınır arasında olması olasılığını verir.
-QUARTILE = DÖRTTEBİRLİK ## Bir veri kümesinin dörtte birliğini verir.
-RANK = RANK ## Bir sayılar listesinde bir sayının mertebesini verir.
-RSQ = RKARE ## Pearson çarpım moment korelasyon katsayısının karesini verir.
-SKEW = ÇARPIKLIK ## Bir dağılımın çarpıklığını verir.
-SLOPE = EĞİM ## Doğrusal çakışma çizgisinin eğimini verir.
-SMALL = KÜÇÜK ## Bir veri kümesinde k. en küçük değeri verir.
-STANDARDIZE = STANDARTLAŞTIRMA ## Normalleştirilmiş bir değer verir.
-STDEV = STDSAPMA ## Bir örneğe dayanarak standart sapmayı tahmin eder.
-STDEVA = STDSAPMAA ## Standart sapmayı, sayılar, metin ve mantıksal değerleri içermek üzere, bir örneğe bağlı olarak tahmin eder.
-STDEVP = STDSAPMAS ## Standart sapmayı, tüm popülasyona bağlı olarak hesaplar.
-STDEVPA = STDSAPMASA ## Standart sapmayı, sayılar, metin ve mantıksal değerleri içermek üzere, tüm popülasyona bağlı olarak hesaplar.
-STEYX = STHYX ## Regresyondaki her x için tahmini y değerinin standart hatasını verir.
-TDIST = TDAĞ ## T-dağılımını verir.
-TINV = TTERS ## T-dağılımının tersini verir.
-TREND = EĞİLİM ## Doğrusal bir eğilim boyunca değerler verir.
-TRIMMEAN = KIRPORTALAMA ## Bir veri kümesinin içinin ortalamasını verir.
-TTEST = TTEST ## T-test'le ilişkilendirilmiş olasılığı verir.
-VAR = VAR ## Varyansı, bir örneğe bağlı olarak tahmin eder.
-VARA = VARA ## Varyansı, sayılar, metin ve mantıksal değerleri içermek üzere, bir örneğe bağlı olarak tahmin eder.
-VARP = VARS ## Varyansı, tüm popülasyona dayanarak hesaplar.
-VARPA = VARSA ## Varyansı, sayılar, metin ve mantıksal değerleri içermek üzere, tüm popülasyona bağlı olarak hesaplar.
-WEIBULL = WEIBULL ## Weibull dağılımını hesaplar.
-ZTEST = ZTEST ## Z-testinin tek kuyruklu olasılık değerini hesaplar.
-
-
-##
-## Text functions Metin fonksiyonları
-##
-ASC = ASC ## Bir karakter dizesindeki çift enli (iki bayt) İngilizce harfleri veya katakanayı yarım enli (tek bayt) karakterlerle değiştirir.
-BAHTTEXT = BAHTTEXT ## Sayıyı, ß (baht) para birimi biçimini kullanarak metne dönüştürür.
-CHAR = DAMGA ## Kod sayısıyla belirtilen karakteri verir.
-CLEAN = TEMİZ ## Metindeki bütün yazdırılamaz karakterleri kaldırır.
-CODE = KOD ## Bir metin dizesindeki ilk karakter için sayısal bir kod verir.
-CONCATENATE = BİRLEŞTİR ## Pek çok metin öğesini bir metin öğesi olarak birleştirir.
-DOLLAR = LİRA ## Bir sayıyı YTL (yeni Türk lirası) para birimi biçimini kullanarak metne dönüştürür.
-EXACT = ÖZDEŞ ## İki metin değerinin özdeş olup olmadığını anlamak için, değerleri denetler.
-FIND = BUL ## Bir metin değerini, bir başkasının içinde bulur (büyük küçük harf duyarlıdır).
-FINDB = BULB ## Bir metin değerini, bir başkasının içinde bulur (büyük küçük harf duyarlıdır).
-FIXED = SAYIDÜZENLE ## Bir sayıyı, sabit sayıda ondalıkla, metin olarak biçimlendirir.
-JIS = JIS ## Bir karakter dizesindeki tek enli (tek bayt) İngilizce harfleri veya katakanayı çift enli (iki bayt) karakterlerle değiştirir.
-LEFT = SOL ## Bir metin değerinden en soldaki karakterleri verir.
-LEFTB = SOLB ## Bir metin değerinden en soldaki karakterleri verir.
-LEN = UZUNLUK ## Bir metin dizesindeki karakter sayısını verir.
-LENB = UZUNLUKB ## Bir metin dizesindeki karakter sayısını verir.
-LOWER = KÜÇÜKHARF ## Metni küçük harfe çevirir.
-MID = ORTA ## Bir metin dizesinden belirli sayıda karakteri, belirttiğiniz konumdan başlamak üzere verir.
-MIDB = ORTAB ## Bir metin dizesinden belirli sayıda karakteri, belirttiğiniz konumdan başlamak üzere verir.
-PHONETIC = SES ## Metin dizesinden ses (furigana) karakterlerini ayıklar.
-PROPER = YAZIM.DÜZENİ ## Bir metin değerinin her bir sözcüğünün ilk harfini büyük harfe çevirir.
-REPLACE = DEĞİŞTİR ## Metnin içindeki karakterleri değiştirir.
-REPLACEB = DEĞİŞTİRB ## Metnin içindeki karakterleri değiştirir.
-REPT = YİNELE ## Metni belirtilen sayıda yineler.
-RIGHT = SAĞ ## Bir metin değerinden en sağdaki karakterleri verir.
-RIGHTB = SAĞB ## Bir metin değerinden en sağdaki karakterleri verir.
-SEARCH = BUL ## Bir metin değerini, bir başkasının içinde bulur (büyük küçük harf duyarlı değildir).
-SEARCHB = BULB ## Bir metin değerini, bir başkasının içinde bulur (büyük küçük harf duyarlı değildir).
-SUBSTITUTE = YERİNEKOY ## Bir metin dizesinde, eski metnin yerine yeni metin koyar.
-T = M ## Bağımsız değerlerini metne dönüştürür.
-TEXT = METNEÇEVİR ## Bir sayıyı biçimlendirir ve metne dönüştürür.
-TRIM = KIRP ## Metindeki boşlukları kaldırır.
-UPPER = BÜYÜKHARF ## Metni büyük harfe çevirir.
-VALUE = SAYIYAÇEVİR ## Bir metin bağımsız değişkenini sayıya dönüştürür.
diff --git a/admin/survey/modules/mod_360_1KA/results/.gitignore b/admin/survey/modules/mod_360_1KA/results/.gitignore
deleted file mode 100644
index a3a0c8b..0000000
--- a/admin/survey/modules/mod_360_1KA/results/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-*
-!.gitignore \ No newline at end of file
diff --git a/admin/survey/modules/mod_kakovost/R/calc.usability.R b/admin/survey/modules/mod_kakovost/R/calc.usability.R
deleted file mode 100644
index 4e4bb0c..0000000
--- a/admin/survey/modules/mod_kakovost/R/calc.usability.R
+++ /dev/null
@@ -1,72 +0,0 @@
-calc.usability <- function(m.all, return.type){
- # return.type:
- # 1: return only absolute
- # 2: return only %
- # 3: return both (even rows: absolute, odd rows: %)
-
- ## calculations
- m.all[, Prekinitve:=v3]
- m.all[, Neodgovori:=v1]
- m.all[, Nevsebinski:=v96+v97+v98+v99]
- m.all[, Izpostavljen:=allqs-(v2+v3+v4+v5)]
- setnames(m.all, "va", "Veljavni")
-
- m.all[, UNL:=Neodgovori/Izpostavljen]
- m.all[is.na(UNL)==T, UNL:=0]
- m.all[, UML:=(v3/allqs)+(1-(v3/allqs))*UNL]
- m.all[, UCL:=1-UML]
- m.all[, UIL:=v2/(v2+Izpostavljen)]
- m.all[is.na(UIL)==T, UIL:=0]
- m.all[, UAQ:=v4/allqs]
-
- m.all[, Uporabnost:=1-UML]
-
- #tidy up
- setcolorder(m.all, c("recnum", "allqs", "Veljavni", "Nevsebinski", "Neodgovori",
- "Izpostavljen", "Prekinitve", "Uporabnost",
- "v1", "v2", "v3", "v4", "v5", "v96", "v97", "v98", "v99",
- "UNL", "UML", "UCL", "UIL", "UAQ"))
-
- if(return.type==1){
- return(m.all)
- }else{
- m.all.p <- copy(m.all)
-
- m.all.p[, (c("Veljavni", "Nevsebinski", "Neodgovori")) := lapply(.SD, "/", m.all.p$Izpostavljen), .SDcols=c("Veljavni", "Nevsebinski", "Neodgovori")]
- m.all.p[, (c("Prekinitve", "v1", "v2", "v3", "v4", "v5", "v96", "v97", "v98", "v99")) := lapply(.SD, "/", m.all.p$allqs), .SDcols=c("Prekinitve", "v1", "v2", "v3", "v4", "v5", "v96", "v97", "v98", "v99")]
- m.all.p[, Izpostavljen:=1]
-
- if(return.type==2){
- return(m.all.p)
- }else{
- m.all[, Uporabnost:=Veljavni]
- m.all[, c("UNL", "UML", "UCL", "UIL", "UAQ"):=NA]
- m.all <- m.all[, lapply(.SD, as.character)]
-
- m.all.p[, allqs:=NA]
- m.all.p[, allqs:=as.character(allqs)]
-
- change.cols <- c("Veljavni", "Nevsebinski", "Neodgovori", "Izpostavljen", "Prekinitve", "Uporabnost",
- "v1", "v2", "v3", "v4", "v5", "v96", "v97", "v98", "v99",
- "UNL", "UML", "UCL", "UIL", "UAQ")
- m.all.p[, (change.cols):=lapply(.SD, function(x){paste0(round(x*100, 0), "%")}), .SD=change.cols]
-
- m.1ka <- data.table(matrix("", nrow=nrow(m.all)*2, ncol=ncol(m.all)))
-
- a.rows <- as.integer(seq(1, nrow(m.1ka), by=2))
- p.rows <- as.integer(seq(2, nrow(m.1ka), by=2))
-
- set(m.1ka, a.rows, 1:ncol(m.1ka), value=m.all)
- suppressWarnings(set(m.1ka, p.rows, 1:ncol(m.1ka), value=m.all.p))
-
- setnames(m.1ka, colnames(m.all))
- m.1ka[, Status:=NA_character_]
- setcolorder(m.1ka, c("recnum", "allqs", "Veljavni", "Nevsebinski", "Neodgovori",
- "Izpostavljen", "Prekinitve", "Uporabnost", "Status",
- "v1", "v2", "v3", "v4", "v5", "v96", "v97", "v98", "v99",
- "UNL", "UML", "UCL", "UIL", "UAQ"))
-
- return(m.1ka)
- }
- }
-} \ No newline at end of file
diff --git a/admin/survey/modules/mod_kakovost/R/gen.survey.str.R b/admin/survey/modules/mod_kakovost/R/gen.survey.str.R
deleted file mode 100644
index 32e1f57..0000000
--- a/admin/survey/modules/mod_kakovost/R/gen.survey.str.R
+++ /dev/null
@@ -1,71 +0,0 @@
-gen.survey.str <- function(colnames.dsa, questions.file, items.file){
- #import questions file
- questions <- fread(questions.file, skip=1, header=F,
- select=c(2, 5, 6, 8, 9, 10),
- col.names=c("question.id", "variable", "tip", "size", "visible", "params"))
-
- #create variable list from survey data file
- #remove "recnum" and "_text" fields
- var.data <- colnames.dsa[sapply(colnames.dsa, function(x){substr(x, nchar(x)-4, nchar(x))})!="_text"]
-
- #create variable list from questions file
- var.questions <- questions$variable
-
- #generate data.table from var.data list
- survey.str <- data.table(variable = var.data)
-
- setkey(questions, "variable")
- setkey(survey.str, "variable")
-
- #if all var.data in var.questions, do the simple merge and return file
- if(all(var.data %in% var.questions)){
- survey.str <- questions[survey.str,]
- return(survey.str)
- }else{ #if not, import items file and do additional merge with it...
- #import items file
- items <- fread(items.file, skip=1, header=F,
- select=c(2, 3, 4),
- col.names=c("question.id", "item.id", "variable"))
-
- setkey(items, "question.id")
- setkey(questions, "question.id")
-
- #bind variables from questions and items (for the later, only take instances with no match in the questions file...)
- survey.str.qi <- rbindlist(list(questions[var.questions %in% var.data,],
- items[questions[!(var.questions %in% var.data), -"variable", with=F], nomatch=0L]),
- fill=T)
-
- #merge questions+items with survey data...
- setkey(survey.str.qi, "variable")
- setkey(survey.str, "variable")
- survey.str <- survey.str.qi[survey.str,]
-
- #if all var.data is now matched, return the survey.str
- if(!(any(is.na(survey.str)))){
- return(survey.str)
- }else{ #if not, do additional merging...
- #create index of all NA instaces from survey.str...
- index <- apply(cbind(survey.str[, is.na(tip)],
- (sapply(survey.str[, variable], function(x){
- substr(x, 1, regexpr("\\_[^\\_]*$", x)-1)
- }) %in% survey.str.qi$variable)
- ),
- 1, all)
-
- #... using regex to find matches among unmatched instances from survey.str.qi
- add <- merge(survey.str[index, list(variable, substr(variable, 1, regexpr("\\_[^\\_]*$", variable)-1))],
- survey.str.qi[!(variable %in% survey.str$variable),],
- by.x="V2", by.y="variable", all.y=F)[, list(question.id, item.id, tip, visible, size, params)]
-
- #update survey.str with new values
- survey.str[index, c("question.id", "item.id", "tip", "visible", "size", "params") := as.list(add)]
-
- #if there is no NAs left, return survey.str, else return msg
- if(!(any(is.na(survey.str$tip)))){
- return(survey.str)
- }else{
- return(paste("No match found for: ", survey.str[is.na(tip), variable]))
- }
- }
- }
-}
diff --git a/admin/survey/modules/mod_kakovost/R/gen.usability.matrix.R b/admin/survey/modules/mod_kakovost/R/gen.usability.matrix.R
deleted file mode 100644
index a2b1465..0000000
--- a/admin/survey/modules/mod_kakovost/R/gen.usability.matrix.R
+++ /dev/null
@@ -1,181 +0,0 @@
-gen.usability.matrix <- function(dsa, survey.str){
- #define special values to detect
- #order of this values is important:
- # in case of conflicts @ chk.t types of questions the order sets the priporty of which values to keep
- special.v <- c(-1, -3, -5, -96, -97, -98, -99, -4, -2)
-
- #define which variables belong to checkbox-like* questions
- #(* i.e.: check for special values @ ANY variable per question/item ID)
- # 2: normal checkbox
- # 16: multicheckbox
- # 17: ranking
- chkbox.t <- c(2, 16, 17)
-
- ##all other variables belong to normal** questions
- #(** i.e.: check for special values @ each variable per question/item ID)
- #if there are no normal questions, create 0 matrix, otherwise...
- if(nrow(survey.str[!(tip %in% chkbox.t),])==0){
- m.n <- matrix(0, nrow = nrow(dsa), ncol=length(special.v)+1)
- }else{
- #create list of all normal questions
- c.n <- colnames(dsa)[which(colnames(dsa) %in% survey.str[!(tip %in% chkbox.t), variable])]
-
- #...count all non-special values for each variable
- #... + count each special value for each variable
- m.n <- cbind(rowSums(sapply(dsa[, c.n, with=FALSE], function(x){!(x %in% special.v)})),
- sapply(special.v, function(x){as.integer(rowSums(dsa[, c.n, with=FALSE]==x, na.rm=TRUE))}))
- }
-
- ##procedure for tip:2
- #only run if there is an at least one tip:2 variable
- if(survey.str[, any(tip==2)]){
- #get list of all unique tip:2 question ids
- q.2 <- unique(survey.str[tip==2, question.id])
- #get list of all corresponding variables for each q.2 id
- c.2 <- lapply(q.2, function(x){colnames(dsa)[which(colnames(dsa) %in% survey.str[question.id==x & tip==2, variable])]})
-
- #(do this for each instance in c.2):
- #for each set of variables:
- # check if any variable contains at least one non-special value
- # + (for each special value) check if any variable contains at least special value
- m.2 <- lapply(c.2, function(x){
- cbind(apply(dsa[, x, with=FALSE], 1, function(q){any(!(q %in% special.v))}),
- sapply(special.v, function(y){
- apply(dsa[, x, with=FALSE], 1, function(q){any(q==y)})
- })
- )
- })
-
- # (do this for each instance in c.2)
- # if multiple special values per respondent exist, keep only the first one
- m.2 <- lapply(m.2, function(x){
- if(any(rowSums(x)>1)){
- p <- x[rowSums(x)>1,]
- for(i in 1:nrow(p)){
- a <- p[i,]
- f <- TRUE
- for(j in 1:length(a)){
- print(j)
- if(a[j] & f){
- f <- FALSE
- }else if(a[j] & !f){
- a[j] <- FALSE
- }
- }
- p[i,] <- a
- }
- x[rowSums(x)>1,] <- p
- }else{x}
- })
-
-
- #add to m.n
- m.n <- m.n + Reduce('+', m.2)
- }
-
- ##procedure for tip:16
- #only run if there is an at least one tip:16 variable
- if(survey.str[, any(tip==16)]){
- #get list of all unique tip:16 item ids
- q.16 <- unique(survey.str[tip==16, item.id])
-
- #get list of all corresponding variables for each q.16 id
- c.16 <- lapply(q.16, function(x){colnames(dsa)[which(colnames(dsa) %in% survey.str[item.id==x & tip==16, variable])]})
- #(do this for each special value):
- #for each set of variables, check if any variable contains at least one special value
- # m.16 <- sapply(special.v, function(x){
- # rowSums(sapply(c.16, function(y){
- # apply(dsa[, y, with=FALSE], 1, function(q){any(q==x)})
- # }))
- # })
-
- #(do this for each instance in c.16):
- #for each set of variables:
- # check if any variable contains at least one non-special value
- # + (for each special value) check if any variable contains at least special value
- m.16 <- lapply(c.16, function(x){
- cbind(apply(dsa[, x, with=FALSE], 1, function(q){any(!(q %in% special.v))}),
- sapply(special.v, function(y){
- apply(dsa[, x, with=FALSE], 1, function(q){any(q==y)})
- })
- )
- })
-
- # (do this for each instance in c.16)
- # if multiple special values per respondent exist, keep only the first one
- m.16 <- lapply(m.16, function(x){
- if(any(rowSums(x)>1)){
- p <- x[rowSums(x)>1,]
- for(i in 1:nrow(p)){
- a <- p[i,]
- f <- TRUE
- for(j in 1:length(a)){
- print(j)
- if(a[j] & f){
- f <- FALSE
- }else if(a[j] & !f){
- a[j] <- FALSE
- }
- }
- p[i,] <- a
- }
- x[rowSums(x)>1,] <- p
- }else{x}
- })
-
- m.n <- m.n + Reduce('+', m.16)
- }
-
- ##procedure for tip:17
- #only run if there is an at least one tip:17 variable
- if(survey.str[, any(tip==17)]){
- #get list of all unique tip:17 question ids
- q.17 <- unique(survey.str[tip==17, question.id])
-
- #get list of all corresponding variables for each q.17 id
- c.17 <- lapply(q.17, function(x){colnames(dsa)[which(colnames(dsa) %in% survey.str[question.id==x & tip==17, variable])]})
-
- #similiar procedure as for tip:2 and tip:16....
- m.17 <- lapply(c.17, function(x){
- cbind(apply(dsa[, x, with=FALSE], 1, function(q){any(!(q %in% special.v))}),
- sapply(special.v, function(y){
- apply(dsa[, x, with=FALSE], 1, function(q){any(q==y)})
- })
- )
- })
-
- #... the only difference is that we are checking for all rowsums > 0, not > 1
- m.17 <- lapply(m.17, function(x){
- if(any(rowSums(x)>1)){
- p <- x[rowSums(x)>0,]
- for(i in 1:nrow(p)){
- a <- p[i,]
- f <- TRUE
- for(j in 1:length(a)){
- if(a[j] & f){
- f <- FALSE
- }else if(a[j] & !f){
- a[j] <- FALSE
- }
- }
- p[i,] <- a
- }
- x[rowSums(x)>0,] <- p
- }else{x}
- })
-
- m.n <- m.n + Reduce('+', m.17)
- }
-
- m.n <- cbind(m.n, rowSums(m.n))
-
- if(all(m.n[, ncol(m.n)][1]==m.n[, ncol(m.n)])){
- m.n <- as.data.table(m.n)
- m.n[, recnum:=dsa$recnum]
- setnames(m.n, colnames(m.n)[-length(colnames(m.n))], c("va", "v1", "v3", "v5", "v96", "v97", "v98", "v99", "v4", "v2", "allqs"))
- setcolorder(m.n, c("recnum", colnames(m.n)[-length(colnames(m.n))]))
- return(m.n)
- }else{
- print("not all rowsums equal!")
- }
-} \ No newline at end of file
diff --git a/admin/survey/modules/mod_uporabnost/results/.gitignore b/admin/survey/modules/mod_uporabnost/results/.gitignore
deleted file mode 100644
index a3a0c8b..0000000
--- a/admin/survey/modules/mod_uporabnost/results/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-*
-!.gitignore \ No newline at end of file
diff --git a/admin/survey/modules/mod_uporabnost/temp/.gitignore b/admin/survey/modules/mod_uporabnost/temp/.gitignore
deleted file mode 100644
index a3a0c8b..0000000
--- a/admin/survey/modules/mod_uporabnost/temp/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-*
-!.gitignore \ No newline at end of file
diff --git a/admin/survey/script/LanguageTechnology.js b/admin/survey/script/LanguageTechnology.js
deleted file mode 100644
index 1e57342..0000000
--- a/admin/survey/script/LanguageTechnology.js
+++ /dev/null
@@ -1,1415 +0,0 @@
-var var_lt_timeout = 6000000;
-//var var_lt_timeout = 60000;
-var languageTechnologySettings = {};
-//var languageTechnologyWordCustom = {};
-
-
-
-function onload_init_language_technology() {
- if ($("div#language_technology.language_technology" ).length == 0) {
- return false;
- }
- $("div#language_technology.language_technology" ).attr("onselectstart","return false")
-
- // prikažemo nastavitve prve spremenljivke
- showLanguageTechnologyFirst();
-
- $("div#language_technology.language_technology" ).on("click", 'div.spremenljivka_content', function() {
- spr_id = $(this).attr('spr_id');
- showLanguageTechnology(spr_id );
- });
-
-// runLanguageTechnology();
-}
-
-function displaySpremenljivkaContainers(spremenljivka) {
- if ($('#lt_'+spremenljivka).length > 0) {
- // pobrišemo obstojece dive
- $('#lt_'+spremenljivka).remove();
- }
-
- $sprContainer = $('li#branching_'+spremenljivka);
-
- var ltLang = $.extend({}, lang);
-
- // narišemo vse nove potrebne dive
- $ltDiv = $("<div/>", {
- id: 'lt_'+spremenljivka,
- class: 'lt_div'
- })
- .append(
- $("<div/>", {
- id: 'lt_word_data_'+spremenljivka,
- class: 'lt_word_data'
- })
- .append(
- $("<div/>", {
- id: 'lt_words_'+spremenljivka,
- class: 'lt_words',
- })
- .append( $('<div/>', {
- class: 'lt_header',
- text: ltLang['srv_language_technology_flagged_wordings']
- })
- )
- )
- .append( $("<div/>", {
- id: 'lt_synonyms_'+spremenljivka,
- class: 'lt_word_synonym lt_words_synonyms' }
- )
- )
- .append( $("<div/>", { class: 'clr' }))
- .append( $("<div/>", {
- id: 'lt_results_'+spremenljivka,
- class: 'lt_word_hypernym_hyponym' })
- .append(
- $("<span/>", {
- id: 'lt_hypernyms_'+spremenljivka,
- class: 'lt_word_hypernym',
- }).hide()
- .append( $("<div/>", {class:'lt_header', text: 'Hypernyms'}) )
- .append( $("<div/>", {class:'lt_box_content'}) )
- )
- .append(
- $("<span/>", {
- id: 'lt_hyponyms_'+spremenljivka,
- class: 'lt_word_hyponym',
- }).hide()
- .append( $("<div/>", {class:'lt_header', text: 'Hyponyms'}) )
- .append( $("<div/>", {class:'lt_box_content'}) )
- )
- .append(
- $("<span/>", {
- id: 'lt_chwo_'+spremenljivka,
- class: 'lt_word_chosen_wording',
- }).hide()
- .append( $("<div/>", {class:'lt_header', text: 'Properties of alternative wordings:'}) )
- .append( $("<div/>", {class:'lt_box_content'}) )
- )
- )
- );
-
- $sprContainer.after($ltDiv);
-
-};
-
-function showLanguageTechnologyFirst() {
- // poiščemo prvo spremenljivko
- spr_id = $( "div#language_technology.language_technology div.spremenljivka_content" ).first().attr('spr_id');
-
- showLanguageTechnology(spr_id );
-}
-
-function showLanguageTechnology(spr_id ) {
-
- settings = readLanguageTechnologySettings(spr_id);
-
- $("#vprasanje_float_editing.language_technology").find('#lt_min_FWD_spr').val(settings.lt_min_FWD);
- $("#vprasanje_float_editing.language_technology").find('#lt_special_setting').prop("checked", settings.lt_special_setting);
- $("#vprasanje_float_editing.language_technology").attr('spr_id', spr_id);
- vprasanje_pozicija(spr_id);
-}
-
-
-function runLanguageTechnology() {
- spr_id = $("#vprasanje_float_editing.language_technology").attr('spr_id');
- settings = readLanguageTechnologySettings(spr_id);
-
- // ali imamo zakeširano (ne delamo ajaxa)
- if (true || LT_Cache_response.isSet(spr_id) == false) {
-
- ///return false;
- var request = {
- spremenljivka: spr_id,
- anketa: srv_meta_anketa_id,
- settings: settings
- };
-
- // nardimo ajax klic
- $.ajax({
- cache: false,
- timeout: var_lt_timeout,
- xhrFields: { withCredentials: true },
- url: 'ajax.php?a=runLanguageTechnology',
- type: 'post',
- //dataType: 'json',
- data: request,
- spremenljivka: spr_id,
- container: $('li#branching_'+spr_id),
- beforeSend: function() {
- // odstranimo morebitne predhodne higlighte
- //cleanLanguageTechnology()
- this.container.fadeTo(500, 0.4);
- },
- success: function (response) {
-
- if (response['error']['hasError'] == false && response['data'] != undefined) {
- // shranimo celoten response spremenljivke da potem lovimo shranjene podatke
- LT_Cache_response.set(this.spremenljivka, response['data']);
- displayProblematicWords(this.spremenljivka);
- }
- if (response['error'] != undefined) {
- if (response['error']['hasError'] == true) {
- alert(response['error']['msg']);
- // cleanUpAndReturn();
- return false;
- }
- delete response['error'];
- }
- if (response['setting'] != undefined) {
- languageTechnologySettings = response['setting'];
- delete response['setting'];
- }
-
- return true;
- },
- error: function(x, t, m) {
- if(t==="timeout") {
- alert("got timeout");
- } else {
- alert('Prišlo je do neznane napake.');
- }
- },
- complete: function() {
- this.container.fadeTo(500, 1);
- }
- });
- } else {
- // imamo cache
- displayProblematicWords(spr_id);
- }
-
-}
-
-
-function readLanguageTechnologySettings(spr_id) {
-
- lt_special_setting = false;
- // če imamo lastne nastavitve za spremenljivko
- if (typeof languageTechnologySettings[spr_id] != 'undefined') {
- lt_min_FWD = languageTechnologySettings[spr_id]['lt_min_FWD'];
- lt_special_setting = languageTechnologySettings[spr_id]['lt_special_setting'];
- lt_language = languageTechnologySettings[spr_id]['lt_language'];
-
- } else {
- // imamo globalne nastavitve
- lt_min_FWD = $('#lt_min_FWD').val();
- lt_special_setting = false;
- lt_language = $('#lt_language').val();
- }
-
-
- var result = {
- lt_special_setting: lt_special_setting,
- lt_min_FWD: lt_min_FWD,
- lt_language: lt_language
- };
- return result;
-}
-
-function saveLanguageTechnologySetting(){
- lt_special_setting = $("#vprasanje_float_editing.language_technology").find('#lt_special_setting').prop("checked");
- lt_min_FWD = $("#vprasanje_float_editing.language_technology").find('#lt_min_FWD_spr').val();
- spr_id = $("#vprasanje_float_editing.language_technology").attr('spr_id');
-
- // ce mamo globalne nastavitve
- if (lt_special_setting == false) {
- $('#lt_min_FWD').val(lt_min_FWD);
- // odstranimo lastne nastavitve
- delete(languageTechnologySettings[spr_id]);
- } else {
- // shranimo lastne nasravitve
- languageTechnologySettings[spr_id] = [];
- languageTechnologySettings[spr_id]['lt_min_FWD'] = lt_min_FWD;
- languageTechnologySettings[spr_id]['lt_special_setting'] = lt_special_setting;
-
- }
-}
-
-
-function displayProblematicWords(spremenljivka) {
-
- var ltLang = $.extend({}, lang); // deep copy
-
- var $divContainer = $('li#branching_'+spremenljivka);
- // počistimo predhodne označbe
- //$divContainer.find('span.highlight').unhighlight()
- $divContainer.unhighlight()
-
- displaySpremenljivkaContainers(spremenljivka);
- $('#lt_word_data_'+spremenljivka).show();
-
- // dodamo seznam vseh besed
- var words = LT_Cache_response.get(spremenljivka);
-
- if (words.length > 0) {
- $LTWordsTable = $('<table/>', {id: 'LTWordsTable'+spremenljivka, class: 'LTWordsTable'})
- .append($('<tr/>')
- .append($('<th/>', {text: 'Beseda'}))
- .append($('<th/>', {text: 'FWD'}))
- .append($('<th/>', {text: 'Tag'}))
- .append($('<th/>', {text: 'NoM'}))
- )
- .appendTo($('#lt_words_'+spremenljivka))
- .on('click', 'tr td:not(select, option)', function(e) {
- wordIndex = $(this).closest('tr').data('wordIndex');
- word = $(this).closest('tr').data('word');
- tag = $(this).closest('tr').data('tag');
- if ($(e.target).is('select') || $(e.target).is('option')) {
- e.stopPropagation();
- return false;
- }
- displayWord(spremenljivka, wordIndex, tag);
- });
-
- $.each(words, function(wi, $wordData) {
- var wordIndex = wi;
-
- var word = $wordData.word;
- var fwd = $wordData.FWD;
- var tag = $wordData.Tag.toLowerCase();
- var nom = $wordData.NoM;
-
- // obarvamo besedo
-
- //console.log($divContainer.find("*"))
- console.log(word,'word')
- //$divContainer.find("*").highlight(word);
- $('#spremenljivka_contentdiv'+spremenljivka).highlight(word);
- $LTWordRow = $('<tr/>')
- .append($('<td/>')
- .append($('<span/>', {class: 'sprites'}))
- .append($('<span/>', {text: word}))
- )
- .append($('<td/>', {text: fwd}))
- .append($('<td/>', {})
- .append($("<select/>", {'data-word': word, 'data-tag': tag })
- .append($("<option/>", {value: 'n', text: ltLang['srv_language_technology_noun'] + (tag == 'n' ? '*' : '')}))
- .append($("<option/>", {value: 'v', text: ltLang['srv_language_technology_verb'] + (tag == 'v' ? '*' : '')}))
- .append($("<option/>", {value: 'a', text: ltLang['srv_language_technology_adjective'] + (tag == 'a' ? '*' : '')}))
- .append($("<option/>", {value: 'adv', text: ltLang['srv_language_technology_adverb'] + (tag == 'adv' ? '*' : '')}))
- .append($("<option/>", {value: 'e', text: ltLang['srv_language_technology_existential'] + (tag == 'e' ? '*' : '')}))
- .on('change', function() {
- var word =$(this).data('word');
- var wordType = $(this).val();
- changeWordType(spremenljivka, wordIndex, word, wordType, tag);
- }).val(tag)
- )
- )
- .append($('<td/>', {text: nom}))
- .data('word', word)
- .data('wordIndex', wordIndex)
- .data('tag', tag)
- .appendTo($LTWordsTable);
-
- });
- }
-}
-
-
-
-function displayWord(spremenljivka, wordIndex, tag) {
-
- displaySpremenljivkaWordings(spremenljivka, wordIndex);
-
- // holder ul =
- $LTWordsTable = $('div#lt_words_'+spremenljivka+' table.LTWordsTable');
-
- // deaktiviramo ostale checkboxe in liste
- $LTWordsTable.find('tr').removeClass('active');
- $LTWordsTable.find('tr td:first-child span.sprites').removeClass('arrow_small2_r');
-
- // aktiviramo izbran list in checkbox
- $LTWordsTable.find('tr').eq(wordIndex+1).addClass('active');
- $LTWordsTable.find('tr').eq(wordIndex+1).find('td:first-child span.sprites').addClass('arrow_small2_r');
-
- // izberemo pravilno opcijo
- $("#lt_word_detail_div_"+spremenljivka).find("select").val(tag);
- // prikažemo sopomenke besede
- displayWordSynsets(spremenljivka, wordIndex);
-}
-
-function displayWordSynsets(spremenljivka, wordIndex) {
- var ltLang = $.extend({}, lang);
-
- $LTWordSynonyms = $('div#lt_synonyms_' + spremenljivka);
-
- $LTWordSynonyms.html($('<div/>', {
- class: 'lt_header',
- text: ltLang['srv_language_technology_relevant_meanings']
- })
- );
-
- var words = LT_Cache_response.get(spremenljivka);
- var synsets = words[wordIndex]['Synset'];
- var wordType = words[wordIndex]['Tag'];
-
- // izrišemo sopomenke - synonyms
- $SynsetUl = $("<ul/>", {
- class: 'lt_word_synset'
- })
- .appendTo($LTWordSynonyms)
- .on('click', 'li input', function(event ) {
- event.stopPropagation();
- synsetIndex = $(this).closest('li').index();
-
- checked = $(this).is(':checked') == true;
- clickWordSynset(spremenljivka, wordIndex, wordType, synsetIndex, checked);
-
- })
- .on('click', 'li:not(input)', function(event ) {
- event.stopPropagation();
- synsetIndex = $(this).index();
-
- // change input
- checked = $(this).find('input').is(':checked') != true;
- $(this).find('input').prop("checked", checked);
- clickWordSynset(spremenljivka, wordIndex, wordType, synsetIndex, checked);
-
- });
- var index = 0;
- // počistimo predhodne
-
- $('#lt_hypernyms_'+spremenljivka).css('display','inline-block').find('div.lt_box_content').text('No hypernyms');
- $('#lt_hyponyms_'+spremenljivka).css('display','inline-block').find('div.lt_box_content').text('No hyponyms');
-
-
- if (synsets.length) {
- // ajax za hypernyme in hyponyme
- displaySynsetHypernymHyponym(spremenljivka, wordIndex, wordType);
-
- var selectedSynset = undefined;
-
- $.each(synsets, function(si, $synset) {
- index = si;
- // če imamo izbrano besedo, jo izrišemo wordIndex = selectedWordIndex
-/// isSet = isSetSynset(spremenljivka, wordIndex, si);
- isSet = LT_Synonyms.isSet(spremenljivka, wordIndex, si);
- selectedClass = '';
- if (isSet) {
- selectedClass = ' selectedWord';
- }
-
- $SynsetLi = $("<li/>", {class: 'lt_relevant_meaning' + selectedClass})
- .append($('<span/>').append($('<input/>', {type: 'checkbox'})))
- .append($('<span/>', {text: cleanUpSynonym($synset.synonyms)}))
- .appendTo($SynsetUl);
- if (isSet) {
- $SynsetLi.find('input').prop('checked', true);
- }
-
- });
- index++;
- }
-
- //if (!synsets.length) {
-/*
- ///isSet = isSetSynset(spremenljivka, wordIndex, index);
- isSet = LT_Synonyms.isSet(spremenljivka, wordIndex, index);
- selectedClass = '';
- if (isSet) {
- selectedClass = 'selectedWord';
- }
- $SynsetLi = $("<li/>", {class: selectedClass})
- .append($('<span/>').append($('<input/>', {type: 'checkbox'})))
- .append($('<span/>').append(
- $('<input/>', {type:'text', value:getCustomWording(spremenljivka, wordIndex)})
- .on('change', function() {
- words = $(this).val();
- addCustomWording(spremenljivka, wordIndex, words);
- })
- ))
- .appendTo($SynsetUl)
-
- if (isSet) {
- $SynsetLi.find('input').prop('checked', true);
- }
- */
-}
-/*
-function getCustomWording(spremenljivka, wordIndex) {
- result = '';
- if (languageTechnologyWordCustom['sp_'+spremenljivka] != undefined) {
- if (languageTechnologyWordCustom['sp_'+spremenljivka]['wi_'+wordIndex] != undefined) {
- result = languageTechnologyWordCustom['sp_'+spremenljivka]['wi_'+wordIndex];
- }
- }
- //if (languageTechnologyWordCustom[spremenljivka+'_'+wordIndex] != undefined) {
- // result = languageTechnologyWordCustom[spremenljivka+'_'+wordIndex];
- //}
- return result;
-}
-
-function addCustomWording(spremenljivka, wordIndex, words) {
- if (languageTechnologyWordCustom['sp_'+spremenljivka] == undefined) {
- languageTechnologyWordCustom['sp_'+spremenljivka] = {};
- }
- if (languageTechnologyWordCustom['sp_'+spremenljivka]['wi_'+wordIndex] == undefined) {
- languageTechnologyWordCustom['sp_'+spremenljivka]['wi_'+wordIndex] = words;
- }
-
-
- //languageTechnologyWordCustom[spremenljivka+'_'+wordIndex] = words;
-}
-*/
-
-function cleanUpSynonym(synonyms) {
- return synonyms.substr(0, synonyms.indexOf('|'));
-}
-
-
-function changeWordType(spremenljivka, wordIndex, word, wordType) {
-
- var wkey = spremenljivka +'_'+ wordIndex+'_' + word + '_' + wordType;
-
- // preverimo cache
- if (LT_Cache_words.isSet(wkey) == false) {
- // nardimo request
- var request = {
- spremenljivka: spremenljivka,
- anketa: srv_meta_anketa_id,
- lt_word: word,
- lt_tag: wordType,
- lt_language: $("#lt_language").val(),
- lt_min_FWD: $("#lt_min_FWD").val(),
- lt_min_nNoM: $("#lt_min_nNoM").val(),
- lt_min_vNoM: $("#lt_min_vNoM").val()
- };
- // nardimo ajax klic
- $.ajax({
- cache: false,
- timeout: var_lt_timeout,
- xhrFields: { withCredentials: true },
- url: 'ajax.php?a=runLanguageTechnologyWord',
- type: 'post',
- //dataType: 'json',
- data: request,
- spremenljivka: spremenljivka,
- wordIndex: wordIndex,
- container: $('li#branching_'+spremenljivka),
- beforeSend: function() {
- },
- success: function (response) {
-
- if (response['error'] != undefined) {
- if (response['error']['hasError'] == true) {
- alert(response['error']['msg']);
-
- // cleanUpAndReturn();
- return false;
- }
- delete response['error'];
- }
- if (response['setting'] != undefined) {
- languageTechnologySettings = response['setting'];
- delete response['setting'];
- }
-
- // zamenjamo besedo v cache responsu
- var _words = LT_Cache_response.get(this.spremenljivka);
- _words[this.wordIndex] = response[0];
- LT_Cache_response.set(this.spremenljivka, _words);
-
- LT_Cache_words.set(wkey, response[0]);
-
- displayNewWordType(spremenljivka, wordIndex, response[0], word, wordType);
-
- return true;
- },
- error: function(x, t, m) {
- if(t==="timeout") {
- alert("got timeout");
- } else {
- alert('Prišlo je do neznane napake.');
- }
- },
- complete: function() {
- }
- });
- } else {
- _wordCache = LT_Cache_words.get(wkey);
-
- // zamenjamo besedo v responsu
- var _words = LT_Cache_response.get(spremenljivka);
- _words[wordIndex] = _wordCache;
- LT_Cache_response.set(spremenljivka, _words);
-
- displayNewWordType(spremenljivka, wordIndex, _wordCache)
- return true;
-
- }
-}
-
-function displayNewWordType(spremenljivka, wordIndex, wordData) {
-
- // TODO počistimo morebitne izbrane ysnonyms, hyponyme, hypernyme
- LT_Synonyms.unSet(spremenljivka, wordIndex);
- LT_Hypernyms.unSet(spremenljivka, wordIndex);
- LT_Hyponym.unSet(spremenljivka, wordIndex);
-
- changeWordSynonym(spremenljivka, wordIndex)
-
- // popravimo podatke v tabeli besede
- $LTWordsTableTr = $('div#lt_words_'+spremenljivka+' table.LTWordsTable').find('tr').eq(wordIndex+1);
- $LTWordsTableTr.find('td:nth-child(2)').html(wordData.FWD)
- $LTWordsTableTr.find('td:nth-child(4)').html(wordData.NoM);
-
-
- // prikažemo na novo
- displaySpremenljivkaWordings(spremenljivka, wordIndex);
-
- /// changeWordSynonym(spremenljivka, wordIndex);
- displayWordSynsets(spremenljivka, wordIndex);
-}
-
-function clickWordSynset(spremenljivka, wordIndex, wordType, synsetIndex, checked) {
-
- selectWordSynset(spremenljivka, wordIndex, wordType, synsetIndex, checked);
- ///changeWordHypernym(spremenljivka, wordIndex, synsetIndex, checked);
- ///displayWordHypernym(spremenljivka, wordIndex);
- displaySpremenljivkaWordings(spremenljivka, wordIndex);
-}
-
-function clickWordHH(spremenljivka, wordIndex, type, hyponymIndex, checked) {
- selectWordHH(spremenljivka, wordIndex, type, hyponymIndex, checked);
- // todo clean
- if (checked) {
- $('#lt_'+type+'s_'+spremenljivka+' div.lt_box_content ul li').eq(hyponymIndex).addClass('selectedWord');
- } else {
- $('#lt_'+type+'s_'+spremenljivka+' div.lt_box_content ul li').eq(hyponymIndex).removeClass('selectedWord');
- }
- displaySpremenljivkaWordings(spremenljivka, wordIndex);
-}
-
-function displaySynsetHypernymHyponym(spremenljivka, wordIndex, wordType) {
-
- var _words = LT_Cache_response.get(spremenljivka);
- var synsets = _words[wordIndex]['Synset'];
- // preverimo cache
- var wkey = spremenljivka +'_'+ wordIndex+'_' + wordType;
-
- if (true || LT_Cache_word_hypo_hyper_nyms.isSet(wkey) == false) {
-
- settings = readLanguageTechnologySettings(spremenljivka);
-
- var request = {
- spremenljivka: spremenljivka,
- anketa: srv_meta_anketa_id,
- synsets: synsets,
- settings: settings
- };
-
-
- // nardimo ajax klic
- $.ajax({
- cache: false,
- async: true,
- timeout: var_lt_timeout,
- xhrFields: { withCredentials: true },
- url: 'ajax.php?a=runLanguageTechnologyHypoHypernym',
- type: 'post',
- //dataType: 'json',
- data: request,
- spremenljivka: spr_id,
- container: $('li#branching_'+spr_id),
- success: function (response) {
- if (response['error']['hasError'] == false) {
- var cleanhypernyms = $.map(response.data.hypernyms, function(el) { return el; });
- var cleanhyponyms = $.map(response.data.hyponyms, function(el) { return el; });
-
- var _cache = {};
- _cache.cleanhypernyms = cleanhypernyms;
- _cache.cleanhyponyms = cleanhyponyms;
-
- LT_Cache_word_hypo_hyper_nyms.set(wkey, _cache);
- showSynsetHypernymsHyponyms(spremenljivka, wordIndex, wordType, cleanhypernyms, cleanhyponyms);
- }
-
- if (response['error'] != undefined) {
- if (response['error']['hasError'] == true) {
- alert(response['error']['msg']);
- return false;
- }
- }
- return true;
- },
- error: function(x, t, m) {
- if(t==="timeout") {
- alert("got timeout");
- } else {
- alert('Prišlo je do neznane napake.');
- }
- },
- complete: function() {
- this.container.fadeTo(500, 1);
- }
- });
- } else {
- //LT_Cache_word_hypo_hyper_nyms
- _cache = LT_Cache_word_hypo_hyper_nyms.get(wkey);
- cleanhypernyms = _cache['cleanhypernyms'];
- cleanhyponyms = _cache['cleanhyponyms'];
- showSynsetHypernymsHyponyms(spremenljivka, wordIndex, wordType, cleanhypernyms, cleanhyponyms);
- }
-}
-
-function showSynsetHypernymsHyponyms(spremenljivka, wordIndex, wordType, cleanhypernyms, cleanhyponyms) {
-
- // dodamo k spremenljivki izbrane hypernyme
- sprData = LT_Cache_response.get(spremenljivka);
- sprData[wordIndex]['cleanhypernyms'] = cleanhypernyms;
- sprData[wordIndex]['cleanhyponyms'] = cleanhyponyms;
- LT_Cache_response.set(spremenljivka, sprData);
- // izrišemo hipernime in hyponime, ter po potrebi izberemo checkboxe
- $lt_word_hypernym = $('#lt_hypernyms_'+spremenljivka + ' div.lt_box_content');
- if (cleanhypernyms.length > 0) {
- $lt_word_hypernym.text('');
- // izrišemo sopomenke - synonyms
- $hypernymsUl = $("<ul/>", {
- class: 'lt_word_hypernym_ul'
- })
- .appendTo($lt_word_hypernym)
- .on('click', 'li input', function(event ) {
- event.stopPropagation();
- hypernymIndex = $(this).closest('li').index();
-
- checked = $(this).is(':checked') == true;
- clickWordHH(spremenljivka, wordIndex, 'hypernym', hypernymIndex, checked);
-
- })
- .on('click', 'li:not(input)', function(event ) {
- event.stopPropagation();
- hypernymIndex = $(this).index();
- // change input
- checked = $(this).find('input').is(':checked') != true;
- $(this).find('input').prop("checked", checked);
- clickWordHH(spremenljivka, wordIndex, 'hypernym', hypernymIndex, checked);
- });
-
- // todo check checkboxes
- $.each(cleanhypernyms, function(si, $hypernym) {
- isset = LT_Hypernyms.isSet(spremenljivka, wordIndex, si);
-
- $HypernymLi = $('<li' + (isset ? ' class="selectedWord"' : '') + '><span><input type="checkbox"'
- + (isset ? 'checked="checked"' : '')+ '></span><span>'+$hypernym+'</span></li>')
- .appendTo($hypernymsUl);
- })
- } else {
- $lt_word_hypernym.text('No hypernyms');
- }
-
- $lt_word_hyponym = $('#lt_hyponyms_'+spremenljivka+' div.lt_box_content');
- if (cleanhyponyms.length > 0) {
- $lt_word_hyponym.text('');
- $hyponymsUl = $("<ul/>", {
- class: 'lt_word_hyponym_ul'
- })
- .appendTo($lt_word_hyponym)
- .on('click', 'li input', function(event ) {
- event.stopPropagation();
- hyponymIndex = $(this).closest('li').index();
-
- checked = $(this).is(':checked') == true;
- clickWordHH(spremenljivka, wordIndex, 'hyponym', hyponymIndex, checked);
- })
- .on('click', 'li:not(input)', function(event ) {
- event.stopPropagation();
- hyponymIndex = $(this).index();
-
- // change input
- checked = $(this).find('input').is(':checked') != true;
- $(this).find('input').prop("checked", checked);
- clickWordHH(spremenljivka, wordIndex, 'hyponym', hyponymIndex, checked);
- });
- // todo check checkboxes
- $.each(cleanhyponyms, function(si, $hyponym) {
- isset = LT_Hyponym.isSet(spremenljivka, wordIndex, si);
- $HyponymLi = $('<li' + (isset ? ' class="selectedWord"' : '') + '><span><input type="checkbox"' + (isset ? ' checked="checked"' : '') + '></span><span>'+$hyponym+'</span></li>')
- .appendTo($hyponymsUl);
- })
- } else {
- $lt_word_hyponym.text('No hyponyms');
- }
-}
-
-function selectWordSynset(spremenljivka, wordIndex, wordType, synsetIndex, checked) {
-//console.log('selectWordSynset:'+spremenljivka+':'+wordIndex+':'+wordType+':'+synsetIndex+':'+checked)
-
- if (checked) {
-/// setSynset(spremenljivka, wordIndex, synsetIndex);
- LT_Synonyms.set(spremenljivka, wordIndex, synsetIndex);
-
- } else {
-/// unsetSynset(spremenljivka, wordIndex, synsetIndex);
- LT_Synonyms.unSet(spremenljivka, wordIndex, synsetIndex);
-
- }
- // holder ul =
- $ul = $("#lt_synonyms_"+spremenljivka+" ul");
- ///isSet = isSetSynset(spremenljivka, wordIndex, synsetIndex);
- isSet = LT_Synonyms.isSet(spremenljivka, wordIndex, synsetIndex);
- if (isSet) {
- $ul.find('li').eq(synsetIndex).addClass('selectedWord');
- } else {
- $ul.find('li').eq(synsetIndex).removeClass('selectedWord');
- }
-
- changeWordSynonym(spremenljivka, wordIndex);
-
-}
-
-function selectWordHH(spremenljivka, wordIndex, type, hyponymIndex, checked) {
-
- // get the word type
- if (checked) {
- if (type == 'hyponym') {
- LT_Hyponym.set(spremenljivka, wordIndex, hyponymIndex);
- } else if (type == 'hypernym') {
- LT_Hypernyms.set(spremenljivka, wordIndex, hyponymIndex);
- }
- } else {
- if (type == 'hyponym') {
- LT_Hyponym.unSet(spremenljivka, wordIndex, hyponymIndex);
- } else if (type == 'hypernym') {
- LT_Hypernyms.unSet(spremenljivka, wordIndex, hyponymIndex);
- }
- }
- changeWordSynonym(spremenljivka, wordIndex);
-}
-
-function changeWordSynonym(spremenljivka, wordIndex){
- //wordHasSynset = wordHasSynsets(spremenljivka, wordIndex);
- wordHasSynset = LT_Synonyms.hasSub(spremenljivka, wordIndex);
-
- wordHasHypernym = LT_Hypernyms.hasSub(spremenljivka, wordIndex);
-
- wordHasHyponym = LT_Hyponym.hasSub(spremenljivka, wordIndex);
-
- if (wordHasSynset || wordHasHypernym || wordHasHyponym) {
- $("#LTWordsTable" + spremenljivka).find('tr').eq(wordIndex+1).addClass('selectedWord');
- } else {
- $("#LTWordsTable" + spremenljivka).find('tr').eq(wordIndex+1).removeClass('selectedWord');
- }
-}
-
-
-
-function stripAccents(str) {
- var rExps=[
- {re:/[\xC0-\xC6]/g, ch:'A'},
- {re:/[\xE0-\xE6]/g, ch:'a'},
- {re:/[\xC8-\xCB]/g, ch:'E'},
- {re:/[\xE8-\xEB]/g, ch:'e'},
- {re:/[\xCC-\xCF]/g, ch:'I'},
- {re:/[\xEC-\xEF]/g, ch:'i'},
- {re:/[\xD2-\xD6]/g, ch:'O'},
- {re:/[\xF2-\xF6]/g, ch:'o'},
- {re:/[\xD9-\xDC]/g, ch:'U'},
- {re:/[\xF9-\xFC]/g, ch:'u'},
- {re:/[\xD1]/g, ch:'N'},
- {re:/[\xF1]/g, ch:'n'} ];
- for(var i=0, len=rExps.length; i<len; i++)
- str=str.replace(rExps[i].re, rExps[i].ch);
- return str;
-};
-
-jQuery.extend({
-highlight: function (node, re, nodeName, className) {
- if (node.nodeType === 3) {
- //var match = node.data.match(re);
- var match = stripAccents(node.data).match(re);
- if (match) {
- var highlight = document.createElement(nodeName || 'span');
- highlight.className = className || 'highlight';
- var wordNode = node.splitText(match.index);
- wordNode.splitText(match[0].length);
- var wordClone = wordNode.cloneNode(true);
- highlight.appendChild(wordClone);
- wordNode.parentNode.replaceChild(highlight, wordNode);
- return 1; //skip added node in parent
- }
- } else if ((node.nodeType === 1 && node.childNodes) && // only element nodes that have children
- !/(script|style)/i.test(node.tagName) && // ignore script and style nodes
- !(node.tagName === nodeName.toUpperCase() && node.className === className)) { // skip if already highlighted
- for (var i = 0; i < node.childNodes.length; i++) {
- i += jQuery.highlight(node.childNodes[i], re, nodeName, className);
- }
- }
- return 0;
-}
-});
-
-jQuery.fn.unhighlight = function (options) {
-var settings = { className: 'highlight', element: 'span' };
-jQuery.extend(settings, options);
-
-return this.find(settings.element + "." + settings.className).each(function () {
- var parent = this.parentNode;
- parent.replaceChild(this.firstChild, this);
- parent.normalize();
-}).end();
-};
-
-jQuery.fn.highlight = function (words, options) {
-var settings = { className: 'highlight', element: 'span', caseSensitive: false, wordsOnly: false };
-jQuery.extend(settings, options);
-
-if (words.constructor === String) {
- words = [words];
-}
-
-words = jQuery.map(words, function(word, i) {
- return stripAccents(word);
-});
-
-var flag = settings.caseSensitive ? "" : "i";
-var pattern = "(" + words.join("|") + ")";
-if (settings.wordsOnly) {
- pattern = "\\b" + pattern + "\\b";
-}
-
-var re = new RegExp(pattern, flag);
-
-return this.each(function () {
- jQuery.highlight(this, re, settings.element, settings.className);
-});
-};
-
-/** Tag remover
- * $('div span').tagRemover();
- *
- */
-(function($) {
- $.fn.tagRemover = function() {
- return this.each(function() {
- var $this = $(this);
- var text = $this.text();
- $this.replaceWith(text);
- });
- }
-})(jQuery);
-
-
-/****** LT OBJECT CONTROLS ******/
-
-
-/**
-* IndexHolder plugin
-*/
-(function($) {
-
- $.indexHolder= $.indexHolder || {};
- $.indexHolder = function(options) {
- var defaults = {
- // size: 1 no steings
- };
- var plugin = this;
- var d = '*';
- plugin.settings = {};
-
- //local variables
- plugin.data = {};
- plugin.anythingSet = false;
-
- //constructor
- var init = function() {
- plugin.settings = $.extend({}, defaults, options);
- return plugin;
- };
-
- //private methods
- var set = function(args) {
- for(var i = 0; i < args.length; ++i) {
- args[i] = "" + args[i];
- }
- if (args.length >= 1) {
- if (plugin.data == undefined) {
- plugin.data = {};
- }
- if (args.length == 1) {
- plugin.data[args[0]] = d;
- } else {
- // length > 1
- if (plugin.data[args[0]] == undefined) {
- plugin.data[args[0]] = {};
- }
-
- if (args.length == 2) {
- plugin.data[args[0]][args[1]] = d;
- } else {
- // length > 2
- if (plugin.data[args[0]][args[1]] == undefined) {
- plugin.data[args[0]][args[1]] = {};
- }
-
- if (args.length == 3) {
- plugin.data[args[0]][args[1]][args[2]] = d;
- } else {
- alert ('To many arguments! Plugin: dataHolder');
- }
- }
- }
- } else {
- alert ('Missing arguments! Plugin: dataHolder');
- }
- };
-
- var getData = function(args) {
- result = null;
- for(var i = 0; i < args.length; ++i) {
- args[i] = "" + args[i];
- }
- data = plugin.data;
- if (args.length > 0) {
- arg0 = args[0];
- if (data[arg0] == undefined) {
- return result;
- }
- result = data[arg0];
- data = result;
- if (args.length == 1) {
- return result;
- }
-
- arg1 = args[1];
- if (data[arg1] == undefined) {
- return result;
- }
- result = data[arg1];
- data = result;
- if (args.length == 2) {
- return result;
- }
- } else {
- result = data;
- }
- return result;
- }
-
- var isSet = function(args) {
- for(var i = 0; i < args.length; ++i) {
- args[i] = "" + args[i];
- }
- res = false;
-
- if (args.length == 0) {
- alert ('Missing arguments! Plugin: dataHolder');
- return res;
- }
-
- if (plugin.data[args[0]] != undefined) {
- if (args.length == 1 && plugin.data[args[0]] == d) {
- res = true;
- } else {
- if (plugin.data[args[0]][args[1]] != undefined) {
- if (args.length == 2 && plugin.data[args[0]][args[1]] == d) {
- res = true;
- } else {
- if (plugin.data[args[0]][args[1]][args[2]] != undefined) {
- if (args.length == 3 && plugin.data[args[0]][args[1]][args[2]] == d) {
- res = true;
- } else {
- alert ('To many arguments! Plugin: dataHolder');
- }
- }
- }
- }
- }
- }
- return res;
- }
-
-
- var hasSub = function(args) {
- for(var i = 0; i < args.length; ++i) {
- args[i] = "" + args[i];
- }
- res = false;
-
- if (args.length == 0) {
- res = $.isEmptyObject(plugin.data) == false || plugin.data == d;
- return res;
- }
-
- if(plugin.data[args[0]] == undefined) {
- return res;
- }
-
- if (args.length == 1) {
- res = $.isEmptyObject(plugin.data[args[0]]) == false || plugin.data[args[0]] == d;
- } else {
- if(plugin.data[args[0]][args[1]] == undefined) {
- return res;
- }
- if (args.length == 2) {
- res = $.isEmptyObject(plugin.data[args[0]][args[1]]) == false || plugin.data[args[0]][args[1]] == d;
- } else {
- if(plugin.data[args[0]][args[1]][args[2]] == undefined) {
- return res;
- }
- if (args.length == 3) {
- res = $.isEmptyObject(plugin.data[args[0]][args[1]][args[2]]) == false || plugin.data[args[0]][args[1]][args[2]] == d;
- } else {
- alert ('To many arguments! Plugin: dataHolder');
- }
- }
- }
-
- return res;
- }
-
- var unSet = function(args) {
-
- for(var i = 0; i < args.length; ++i) {
- args[i] = "" + args[i];
- }
-
- if (args.length == 1 && plugin.data[args[0]] != undefined) {
- delete plugin.data[args[0]];
- } else
- if (args.length == 2 && plugin.data[args[0]] != undefined && plugin.data[args[0]][args[1]] != undefined) {
- delete plugin.data[args[0]][args[1]];
- } else
- if (args.length == 3 && plugin.data[args[0]] != undefined && plugin.data[args[0]][args[1]] != undefined && plugin.data[args[0]][args[1]][args[2]] != undefined) {
- delete plugin.data[args[0]][args[1]][args[2]];
- }
- }
-
- //public methods
- plugin.set = function(args) {
- set(arguments);
- }
-
- plugin.getData = function(args) {
- return getData(arguments);
- }
-
- plugin.isSet = function(args) {
- res = isSet(arguments);
- return res;
- }
-
- plugin.hasSub = function(args) {
- res = hasSub(arguments);
- return res;
- }
-
- plugin.unSet = function(args) {
- unSet(arguments);
- }
-
- init();
- };
-})(jQuery);
-
-var LT_Synonyms = new $.indexHolder({});
-var LT_Hypernyms = new $.indexHolder({});
-var LT_Hyponym = new $.indexHolder({});
-
-
-/**
-* ltCache plugin
-*/
-(function($) {
-
- $.ltCache = $.ltCache || {};
- $.ltCache = function(options) {
- var defaults = {
- // size: 1 no steings
- };
- var plugin = this;
- plugin.settings = {};
-
- //local variables
- plugin.data = {};
-
-
- //constructor
- var init = function() {
- plugin.settings = $.extend({}, defaults, options);
- return plugin;
- };
-
- //private methods
- var set = function(key, value) {
- plugin.data[key] = value;
- };
-
- var get = function(key, value) {
- if (isSet(key)) {
- return plugin.data[key];
- } else {
- return plugin.data;
- }
- return plugin.data;
- };
-
- var isSet = function(key) {
- if ($.isEmptyObject(plugin.data[key]) || plugin.data[key] == undefined) {
- return false;
- } else {
- return true;
- }
- };
-
- var clear = function(key) {
- if (key == undefined) {
- plugin.data = {}
- } else {
- delete plugin.data[key];
- }
- }
-
- // public method
- plugin.set = function(key, value) {
- set(key, value);
- }
-
- plugin.get = function(key, value) {
- return get(key, value);
- }
-
- plugin.isSet = function(key) {
- return isSet(key);
- }
-
- plugin.clear = function(key) {
- return clear(key);
- }
-
- init();
- };
-})(jQuery);
-
-var LT_Cache_response = new $.ltCache({});
-var LT_Cache_words = new $.ltCache({});
-var LT_Cache_word_hypo_hyper_nyms = new $.ltCache({});
-
-function displaySpremenljivkaWordings(spremenljivka, wi) {
- response = LT_Cache_response.get(spremenljivka);
- // vedno smo na eni besedi
- response = response[wi];
- //polovimo synonyme
- wordsSynonyms = LT_Synonyms.getData(spremenljivka);
- wordsHypernyms = LT_Hypernyms.getData(spremenljivka);
- wordsHyponyms = LT_Hyponym.getData(spremenljivka);
-
- cleanhypernyms = response['cleanhypernyms']
- cleanhyponyms = response['cleanhyponyms']
-
- var selectedSynsetWords = {};
- var selectedHypernyms = {};
- var selectedHyponyms = {};
- var cntSynsets = 0;
- var cntHypernyms = 0;
- var cntHyponyms = 0;
-
- cLang = 'eng';
-
- if (wordsSynonyms != undefined && wordsSynonyms[wi] != undefined) {
-
- $.each(wordsSynonyms[wi], function(si, $s) {
- if (response != undefined
- && response['Synset'] != undefined
- && response['Synset'][si] != undefined
- && response['Synset'][si]['FWDNoM'] != undefined)
- {
- data = response['Synset'][si]['FWDNoM'];
- _wordsObjects = parseSynonymWords(data, cLang);
- $.each(_wordsObjects, function (woi, $wo) {
- if (selectedSynsetWords[$wo.word] == undefined) {
- cntSynsets++;
- selectedSynsetWords[$wo.word] = $wo;
- }
- });
- }
- })
- }
-
- // hypernymi
- if (wordsHypernyms != undefined && wordsHypernyms[wi] != undefined) {
- $.each(wordsHypernyms[wi], function(si, $s) {
- cntHypernyms++;
- selectedHypernyms[cleanhypernyms[si]] = cleanhypernyms[si];
- })
- }
- // hyponymi
- if (wordsHyponyms != undefined && wordsHyponyms[wi] != undefined) {
- $.each(wordsHyponyms[wi], function(si, $s) {
- cntHyponyms++;
- selectedHyponyms[cleanhyponyms[si]] = cleanhyponyms[si];
- })
- }
-
-
- //izrišemo synsete
- $w_holder = $('#lt_chwo_'+spremenljivka+'');
- $w_holder.css('display','inline-block');
-
- if (cntSynsets > 0 || cntHypernyms > 0 || cntHyponyms > 0) {
-
- $h = $w_holder.find('div.lt_box_content').empty();
- if (cntSynsets > 0) {
- $lt_result_div = $("<div/>", {class: 'lt_result_div'})
- .append(
- $("<div/>", {class: 'lt_result_hdr'})
- .append($('<span/>', { text: 'Synonyms' }))
- .append($('<span/>', { text: 'WF*'}))
- .append($('<span/>', { text: 'NoM'}))
- )
- $.each(selectedSynsetWords, function(w, _wordsObject) {
- //console.log(_wordsObject);
- $lt_result_div.append(
- $("<div/>", {class: 'lt_result_dtls'})
- .append($('<span/>', { text: _wordsObject.word}))
- .append($('<span/>', { text: _wordsObject.freq}))
- .append($('<span/>', { text: _wordsObject.nom}))
- )
- });
- $h.append($lt_result_div);
- }
-
- if (cntHypernyms > 0) {
- $lt_result_div = $("<div/>", {class: 'lt_result_div'})
- .append(
- $("<div/>", {class: 'lt_result_hdr'})
- .append($('<span/>', { text: 'Hypernyms' }))
- )
- $.each(selectedHypernyms, function(w, _wordsObject) {
- //console.log(_wordsObject);
- $lt_result_div.append(
- $("<div/>", {class: 'lt_result_dtls'})
- .append($('<span/>', { text: _wordsObject}))
- )
- });
- $h.append($lt_result_div);
- }
-
- if (cntHyponyms > 0) {
- $lt_result_div = $("<div/>", {class: 'lt_result_div'})
- .append(
- $("<div/>", {class: 'lt_result_hdr'})
- .append($('<span/>', { text: 'Hyponyms' }))
- )
- $.each(selectedHyponyms, function(w, _wordsObject) {
- //console.log(_wordsObject);
- $lt_result_div.append(
- $("<div/>", {class: 'lt_result_dtls'})
- .append($('<span/>', { text: _wordsObject}))
- )
- });
- $h.append($lt_result_div);
- }
- } else {
- $w_holder.find('div.lt_box_content').text('Ni izbranih besed')
- }
-
- //omogočimo še izvoz v excel
- enableExcel(spremenljivka);
-}
-
-function enableExcel(spremenljivka) {
- //polovimo synonyme
- wordsSynonyms = LT_Synonyms.getData(spremenljivka);
- wordsHypernyms = LT_Hypernyms.getData(spremenljivka);
- wordsHyponyms = LT_Hyponym.getData(spremenljivka);
-
- cnt = 0;
- if (wordsSynonyms) {
- $.each(wordsSynonyms, function(i, x) { if (x) { $.each(x, function(j, y) { if (y == '*') { cnt++; } }) } })
- }
- if (wordsHypernyms) {
- $.each(wordsHypernyms, function(i, x) { if (x) { $.each(x, function(j, y) { if (y == '*') { cnt++; } }) } })
- }
- if (wordsHyponyms) {
- $.each(wordsHyponyms, function(i, x) { if (x) { $.each(x, function(j, y) { if (y == '*') { cnt++; } }) } })
- }
-
- if (cnt > 0){
- $("#lt_export_excel span").removeClass("xls_grey_16 xls_16").addClass("xls_16");
- } else {
- $("#lt_export_excel span").removeClass("xls_grey_16 xls_16").addClass("xls_grey_16");
- }
-}
-
-function parseSynonymWords(synsetsText, language) {
- synsetWords = [];
- // angleščina
- if (language.toLowerCase() == 'eng') {
- synsetArray = synsetsText.split(";");
- $.each(synsetArray, function(i, synsetText) {
- if (synsetText.trim() != '' && synsetText != undefined) {
- // linguistic: FW = 2457, NoM = 2; lingual: FW <800 , NoM = 2;
- tmp = synsetText.split(':');
- word = tmp[0].trim();
- tmp = tmp[1].trim().split(',');
- freq = tmp[0].replace('FW','').replace('= ', '').replace(';', '').trim();
- nom = tmp[1].replace('NoM','').replace('= ', '').replace(';', '').trim();
- synsetWords.push({word:word, nom:nom, freq:freq});
- }
- });
- // slovenščina
- } else {
- synsetArray = synsetsText.split(";");
- $.each(synsetArray, function(i, synsetText) {
- if (synsetText.trim() != '' && synsetText != undefined) {
- tmp = synsetText.split(':');
- word = tmp[0].trim();
- tmp = tmp[1].trim().split(',');
- freq = tmp[0].replace('FW','').replace('= ', '').replace(';', '').trim();
- nom = tmp[1].replace('NoM','').replace('= ', '').replace(';', '').trim();
- synsetWords.push({word:word, nom:nom, freq:freq});
- }
-
- });
-
- }
-
- return synsetWords;
-}
-
-function lt_export_excel() {
- lt_data = {};
- response = LT_Cache_response.get();
-
- wordsSynonyms = LT_Synonyms.getData();
- wordsHypernyms = LT_Hypernyms.getData();
- wordsHyponyms = LT_Hyponym.getData();
-
- lt_data['response'] = response;
- lt_data['wordsSynonyms'] = wordsSynonyms;
- lt_data['wordsHypernyms'] = wordsHypernyms;
- lt_data['wordsHyponyms'] = wordsHyponyms;
-
-
- var request = {
- anketa: srv_meta_anketa_id,
- lt_data: lt_data,
- language: $("#lt_language").val()
- };
- $.ajax({
- timeout: var_lt_timeout,
- cache: false,
- xhrFields: { withCredentials: true },
- url: 'ajax.php?a=exportLanguageTechnology',
- type: 'post',
- data: request,
- success: function (response) {
- if (response['error'] == true) {
- alert(response['msg']);
- return false;
- }
- window.open(response['url']);
- },
- error: function(x, t, m) {
- if(t==="timeout") {
- alert("got timeout");
- } else {
- alert('Prišlo je do neznane napake.');
- }
- },
- complete: function() {
- }
- });
-}
-
diff --git a/admin/survey/script/LanguageTechnology_old.js b/admin/survey/script/LanguageTechnology_old.js
deleted file mode 100644
index a5302ff..0000000
--- a/admin/survey/script/LanguageTechnology_old.js
+++ /dev/null
@@ -1,841 +0,0 @@
-//var languageTechnology = [];
-var var_timeout = 60000;
-// test
-var languageTechnologyResponse = {};
-var languageTechnology = {};
-var languageTechnologySettings = {};
-var languageTechnologyWordCache = {};
-var languageTechnologyWordCustom = {};
-
-function cleanLanguageTechnology() {
- //languageTechnology = [];
- $('div#branching').find('.spremenljivka_content').each(function(){
- var spremenljivka = $(this).attr('spr_id');
- var $divContainer = $('li#branching_'+spremenljivka);
-
- $('#lt_'+spremenljivka).remove();
- $divContainer.find('span.highlight').tagRemover();
-
- $divContainer.fadeTo(500, 1);
-
- });
-}
-function runLanguageTechnology() {
-
- $('div#branching').find('.spremenljivka_content').each(function(){
-
- var spremenljivka = $(this).attr('spr_id');
- var request = {
- spremenljivka: spremenljivka,
- anketa: srv_meta_anketa_id,
- lt_language: $("#lt_language").val(),
- lt_min_FWD: $("#lt_min_FWD").val(),
- lt_min_nNoM: $("#lt_min_nNoM").val(),
- lt_min_vNoM: $("#lt_min_vNoM").val()
- };
- // nardimo ajax klic
- $.ajax({
- cache: false,
- timeout: var_timeout,
- xhrFields: { withCredentials: true },
- url: 'ajax.php?a=runLanguageTechnology',
- type: 'post',
- //dataType: 'json',
- data: request,
- spremenljivka: spremenljivka,
- container: $('li#branching_'+spremenljivka),
- beforeSend: function() {
- // odstranimo morebitne predhodne higlighte
- cleanLanguageTechnology()
- this.container.fadeTo(500, 0.4);
- },
- success: function (response) {
-
- if (response['error'] != undefined) {
- if (response['error']['hasError'] == true) {
- alert(response['error']['msg']);
-
- // cleanUpAndReturn();
- return false;
- }
- delete response['error'];
- }
- if (response['setting'] != undefined) {
- languageTechnologySettings = response['setting'];
- delete response['setting'];
- }
-
- // shranimo celoten response spremenljivke da potem lovimo shranjene podatke
- languageTechnologyResponse[this.spremenljivka] = response;
-
- displayProblematicWords(this.spremenljivka);
-
-
- return true;
- },
- error: function(x, t, m) {
- if(t==="timeout") {
- alert("got timeout");
- } else {
- alert('Prišlo je do neznane napake.');
- }
- },
- complete: function() {
- this.container.fadeTo(500, 1);
- }
- });
-
-
- });
-}
-
-function displayProblematicWords(spremenljivka) {
- var $divContainer = $('li#branching_'+spremenljivka);
- // pobrišemo obstoječe dive
- $('#lt_'+spremenljivka).remove();
-
- // narišemo vse nove potrebne dive
- $divContainer.after(
- $("<div/>", {
- id: 'lt_'+spremenljivka,
- class: 'lt_div'
- })
- .append(
- $("<div/>", {class: 'lt_word_data'})
- .append(
- $("<div/>", {
- id: 'lt_words_'+spremenljivka,
- class: 'lt_words',
- })
- .on('click', 'ul li', function() {
- wordIndex = $(this).index();
- displayProblematicWord(spremenljivka, wordIndex)
- })
- .append( $('<div/>', {
- text: lang['srv_language_technology_flagged_wordings'],
- class: 'lt_header'
- }))
- .append(
- $("<ul/>", {
- id: 'lt_words_ul_' + spremenljivka,
- class: 'lt_word_list',
- })
- )
- )
- ).append( $("<div/>", { class: 'clr' })) // clear;
- .append( $("<div/>", { class: 'lt_word_synonym' }))
- );
-
- // dodamo seznam vseh besed
- var words = languageTechnologyResponse[spremenljivka];
- $.each(words, function(wi, $wordData) {
-
- var $word = $wordData.word.toLowerCase();
-
- // obarvamo besedo
- $divContainer.find("*").highlight($word);
-
- $LTWord = $("<li/>")
-
- .append($('<span/>', {class: 'sprites'}))
-// .append($('<input/>', {type: 'radio'}))
- .append($('<span/>', {text: $word}))
- .appendTo($("#lt_words_ul_" + spremenljivka));
-
- });
-
-}
-
-function displayProblematicWord(spremenljivka, wordIndex) {
- // odstranimo podatke o besedi
- $("#lt_word_hypernym_div_"+spremenljivka).remove();
- $("#lt_word_detail_div_"+spremenljivka).remove();
-
- // holder ul =
- $ul = $("#lt_words_ul_"+spremenljivka);
-
- // deaktiviramo ostale checkboxe in liste
- $ul.find('li').removeClass('active');
- $ul.find('li span:first-child').removeClass('arrow_small2_r');
-
- // aktiviramo izbran list in checkbox
- $ul.find('li').eq(wordIndex).addClass('active');
- $ul.find('li').eq(wordIndex).find('span:first-child').addClass('arrow_small2_r');
- //$ul.find('li').eq(wordIndex).addClass('active');
- /*
- wordHasSynonim = wordHasSynonims(spremenljivka, wordIndex);
- if (wordHasSynonim) {
- } else {
- $ul.find('li').eq(wordIndex).removeClass('active');
- }
- */
- // prikažemo podatke besede
- var word = languageTechnologyResponse[spremenljivka][wordIndex]['word'];
- var fwd = languageTechnologyResponse[spremenljivka][wordIndex]['FWD'];
- var nom = languageTechnologyResponse[spremenljivka][wordIndex]['NoM'];
- var tag = languageTechnologyResponse[spremenljivka][wordIndex]['Tag'];
- var tag_lang = "";
- switch(tag) {
- case 'n':
- tag_lang = lang['srv_language_technology_noun'];
- break;
- case 'v':
- tag_lang = lang['srv_language_technology_verb'];
- break;
- case 'a':
- tag_lang = lang['srv_language_technology_adjective'];
- break;
- case 'ad':
- tag_lang = lang['srv_language_technology_adverb'];
- break;
- case 'e':
- tag_lang = lang['srv_language_technology_existential'];
- break;
- }
-
-
- $LTWordDetailDiv = $("<div/>", {
- id: 'lt_word_detail_div_'+spremenljivka,
- class: 'lt_word_detail_div',
-
- })
- .append( $('<div/>', {
- text: lang['srv_language_technology_wording_properites'],
- class: 'lt_header no_padding'}
- )
- )
- .append($("<div/>").append($('<span/>', { text: 'Beseda: ' })).append($('<span/>', { text: word, class: 'strong' })))
- .append($("<div/>").append($('<span/>', { text: 'FWD: ' })).append($('<span/>', { text: fwd })))
- .append($("<div/>").append($('<span/>', { text: 'Tag: ' })).append(
- // dodamo dropdown
- $('<span/>').append($("<select/>", {'data-word': word})
- .append($("<option/>", {value: 'n', text: lang['srv_language_technology_noun']}))
- .append($("<option/>", {value: 'v', text: lang['srv_language_technology_verb']}))
- .append($("<option/>", {value: 'a', text: lang['srv_language_technology_adjective']}))
- .append($("<option/>", {value: 'adv', text: lang['srv_language_technology_adverb']}))
- .append($("<option/>", {value: 'e', text: lang['srv_language_technology_existential']}))
- .on('change', function() {
- var word =$(this).data('word');
- var wordType = $(this).val();
- changeWordType(spremenljivka, wordIndex, word, wordType);
- })
- )
- )
- )
- .append($("<div/>").append($('<span/>', { text: 'NoM: ' })).append($('<span/>', { text: nom })))
- .appendTo($("#lt_"+spremenljivka+" div.lt_word_data"));
-
- // izberemo pravilno opcijo
- $("#lt_word_detail_div_"+spremenljivka).find("select").val(tag);
- // prikažemo sopomenke besede
- displayWordSynonyms(spremenljivka, wordIndex);
-}
-
-function displayWordSynonyms(spremenljivka, wordIndex) {
- // če že obstaja izbrišemo
- $("#lt_words_synonyms_" + spremenljivka).remove();
-
- // naredimo div
- $LTWordSynonyms = $("<div/>", {
- id: 'lt_words_synonyms_' + spremenljivka,
- class: 'lt_words_synonyms',
- }).appendTo($("#lt_"+spremenljivka+" div.lt_word_synonym"))
- .append( $('<div/>', {
- text: lang['srv_language_technology_relevant_meanings'],
- class: 'lt_header'
- }));
-
- var synsets = languageTechnologyResponse[spremenljivka][wordIndex]['Synset'];
-
- // izrišemo sopomenke - synonyms
- $SynsetUl = $("<ul/>", {
- class: 'lt_word_synset'
- })
- .appendTo($("#lt_words_synonyms_" + spremenljivka))
- .on('click', 'li input', function(event ) {
- event.stopPropagation();
- synonymIndex = $(this).closest('li').index();
- checked = $(this).is(':checked') == true;
- displaySynonimHypernim(spremenljivka, wordIndex, synonymIndex, checked);
- })
- .on('click', 'li:not(input)', function(event ) {
- event.stopPropagation();
-
- synonymIndex = $(this).index();
- // change input
- checked = $(this).find('input').is(':checked') != true;
- $(this).find('input').prop("checked", checked);
-
- displaySynonimHypernim(spremenljivka, wordIndex, synonymIndex, checked);
- });
- var index = 0;
- if (synsets.length) {
- var selectedSynonim = undefined;
-
- $.each(synsets, function(si, $synset) {
- index = si;
- // če imamo izbrano besedo, jo izrišemo wordIndex = selectedWordIndex
- isSet = isSetSynonim(spremenljivka, wordIndex, si);
- selectedClass = '';
- if (isSet) {
- selectedClass = 'selectedWord';
- }
-
- /*
- * "synonyms":"karakteristika, znacilnost, posebnost",
- * "FWDNoM":"karakteristika NoM: 3 Frek: 707, znacilnost NoM: 6 Frek: 7846, posebnost NoM: 8 Frek: 4549"},
- */
- $SynsetLi = $("<li/>", {class: selectedClass})
- .append($('<span/>').append($('<input/>', {type: 'checkbox'})))
- .append($('<span/>', {text: $synset.synonyms,}))
- .appendTo($SynsetUl);
- if (isSet) {
- $SynsetLi.find('input').prop('checked', true);
- }
-
- });
- index++;
- }
-
- //if (!synsets.length) {
-
- isSet = isSetSynonim(spremenljivka, wordIndex, index);
- selectedClass = '';
- if (isSet) {
- selectedClass = 'selectedWord';
- }
- $SynsetLi = $("<li/>", {class: selectedClass})
- .append($('<span/>').append($('<input/>', {type: 'checkbox'})))
- .append($('<span/>').append(
- $('<input/>', {type:'text', value:getCustomWording(spremenljivka, wordIndex)})
- .on('change', function() {
- words = $(this).val();
- addCustomWording(spremenljivka, wordIndex, words);
- })
- ))
- .appendTo($SynsetUl)
-
- if (isSet) {
- $SynsetLi.find('input').prop('checked', true);
- }
-
- // no wording
- //$("#lt_words_synonyms_" + spremenljivka).html('<p>' + lang['srv_language_technology_no_alternative'] + '</p>');
- //}
- displayWordHypernym(spremenljivka, wordIndex);
-}
-
-function displaySynonimHypernim(spremenljivka, wordIndex, synonymIndex) {
- changeWordHypernym(spremenljivka, wordIndex, synonymIndex, checked);
-
- displayWordHypernym(spremenljivka, wordIndex);
-}
-
-function displayWordHypernym(spremenljivka, wordIndex) {
- // odstranimo stare podatke
- $("#lt_word_hypernym_div_"+spremenljivka).remove();
-
- // div za hypernime
- $LTWordHypernymDiv = $("<div/>", {
- id: 'lt_word_hypernym_div_'+spremenljivka,
- class: 'lt_word_hypernym_div',
- });
- // polovimo vse hypernyme
- hypernyms = getWordHypernyms(spremenljivka, wordIndex);
-
- if (!$.isEmptyObject(hypernyms)) {
- $LTWordHypernymDiv
- .empty()
- .append(
- $("<div/>", {class: 'hypernym_header'})
- .append($('<span/>', { text: lang['srv_language_technology_alternative_wordings'] }))
- .append($('<span/>', { text: 'WF*'}))
- .append($('<span/>', { text: 'NoM'}))
- );
-
- $.each(hypernyms, function(i, Synset) {
- $LTWordHypernymDiv.append($("<div/>", {class: 'hypernym_details'})
- .append($('<span/>', { text: Synset['word'] }))
- .append($('<span/>', { text: Synset['freq']}))
- .append($('<span/>', { text: Synset['nom']}))
- );
- });
-
-
- } else {
- // ni hyperninov
- $LTWordHypernymDiv
- .empty()
- .append(
- $("<div/>", {class:'lt_padding', text: lang['srv_language_technology_no_alternative_selected']})
- );
-
- }
-
- $("#lt_words_synonyms_"+spremenljivka).after($LTWordHypernymDiv);
-
- return true;
-
-
-
- // odstranimo stare podatke
- $("#lt_word_hypernym_div_"+spremenljivka).remove();
-
- // div za hypernime
- $LTWordHypernymDiv = $("<div/>", {
- id: 'lt_word_hypernym_div_'+spremenljivka,
- class: 'lt_word_hypernym_div',
- })
- .empty()
- .append(
- $("<div/>", {class: 'hypernym_header'})
- .append($('<span/>', { text: lang['srv_language_technology_alternative_wordings'] }))
- .append($('<span/>', { text: 'WF*'}))
- .append($('<span/>', { text: 'NoM'}))
- );
- $("#lt_words_synonyms_"+spremenljivka).after($LTWordHypernymDiv);
-}
-
-function changeWordHypernym(spremenljivka, wordIndex, synonymIndex, checked) {
-
- if (checked) {
- setSynonim(spremenljivka, wordIndex, synonymIndex);
- } else {
- unsetSynonim(spremenljivka, wordIndex, synonymIndex);
- }
- // holder ul =
- $ul = $("#lt_words_synonyms_"+spremenljivka+" ul");
- isSet = isSetSynonim(spremenljivka, wordIndex, synonymIndex);
- if (isSet) {
- $ul.find('li').eq(synonymIndex).addClass('selectedWord');
- } else {
- $ul.find('li').eq(synonymIndex).removeClass('selectedWord');
- }
-
- changeWordSynonym(spremenljivka, wordIndex);
-}
-
-function changeWordSynonym(spremenljivka, wordIndex){
- wordHasSynonim = wordHasSynonims(spremenljivka, wordIndex);
- if (wordHasSynonim ) {
- $("#lt_words_ul_" + spremenljivka).find("li").eq(wordIndex).addClass('selectedWord');
- } else {
- $("#lt_words_ul_" + spremenljivka).find("li").eq(wordIndex).removeClass('selectedWord');
- }
-}
-
-function parseHypernyms(synsetsText, language) {
- synsetWords = [];
- // angleščina
- if (language.toLowerCase() == 'eng') {
- synsetArray = synsetsText.split(";");
- $.each(synsetArray, function(i, synsetText) {
- if (synsetText.trim() != '' && synsetText != undefined) {
- // linguistic: FW = 2457, NoM = 2; lingual: FW <800 , NoM = 2;
- tmp = synsetText.split(':');
- word = tmp[0].trim();
- tmp = tmp[1].trim().split(',');
- freq = tmp[0].replace('FW','').replace('= ', '').replace(';', '').trim();
- nom = tmp[1].replace('NoM','').replace('= ', '').replace(';', '').trim();
- synsetWords.push({word:word, nom:nom, freq:freq});
- }
- });
- // slovenščina
- } else {
- synsetArray = synsetsText.split(";");
- $.each(synsetArray, function(i, synsetText) {
- if (synsetText.trim() != '' && synsetText != undefined) {
- tmp = synsetText.split(':');
- word = tmp[0].trim();
- tmp = tmp[1].trim().split(',');
- freq = tmp[0].replace('FW','').replace('= ', '').replace(';', '').trim();
- nom = tmp[1].replace('NoM','').replace('= ', '').replace(';', '').trim();
- synsetWords.push({word:word, nom:nom, freq:freq});
- }
-
- });
-
- }
-
- return synsetWords;
-}
-
-function getCustomWording(spremenljivka, wordIndex) {
- result = '';
- if (languageTechnologyWordCustom['sp_'+spremenljivka] != undefined) {
- if (languageTechnologyWordCustom['sp_'+spremenljivka]['wi_'+wordIndex] != undefined) {
- result = languageTechnologyWordCustom['sp_'+spremenljivka]['wi_'+wordIndex];
- }
- }
- //if (languageTechnologyWordCustom[spremenljivka+'_'+wordIndex] != undefined) {
- // result = languageTechnologyWordCustom[spremenljivka+'_'+wordIndex];
- //}
- return result;
-}
-
-function addCustomWording(spremenljivka, wordIndex, words) {
- if (languageTechnologyWordCustom['sp_'+spremenljivka] == undefined) {
- languageTechnologyWordCustom['sp_'+spremenljivka] = {};
- }
- if (languageTechnologyWordCustom['sp_'+spremenljivka]['wi_'+wordIndex] == undefined) {
- languageTechnologyWordCustom['sp_'+spremenljivka]['wi_'+wordIndex] = words;
- }
-
-
- //languageTechnologyWordCustom[spremenljivka+'_'+wordIndex] = words;
-}
-
-
-
-function setSynonim(spremenljivka, wordIndex, synonymIndex) {
- if (languageTechnology['sp_'+spremenljivka] == undefined) {
- languageTechnology['sp_'+spremenljivka] = {};
- }
- if (languageTechnology['sp_'+spremenljivka]['wi_'+wordIndex] == undefined) {
- languageTechnology['sp_'+spremenljivka]['wi_'+wordIndex] = {};
- }
- if (languageTechnology['sp_'+spremenljivka]['wi_'+wordIndex]['si_'+synonymIndex] == undefined) {
- languageTechnology['sp_'+spremenljivka]['wi_'+wordIndex]['si_'+synonymIndex] = '1';
- }
-
- enableDisableExcelExport();
-}
-
-function unsetSynonim(spremenljivka, wordIndex, synonymIndex) {
- if (languageTechnology['sp_'+spremenljivka] != undefined) {
- if (languageTechnology['sp_'+spremenljivka]['wi_'+wordIndex] != undefined) {
- if (languageTechnology['sp_'+spremenljivka]['wi_'+wordIndex]['si_'+synonymIndex] != undefined ) {
- delete languageTechnology['sp_'+spremenljivka]['wi_'+wordIndex]['si_'+synonymIndex];
- }
- if ($.isEmptyObject(languageTechnology['sp_'+spremenljivka]['wi_'+wordIndex])) {
- delete languageTechnology['sp_'+spremenljivka]['wi_'+wordIndex];
- }
- }
- if ($.isEmptyObject(languageTechnology['sp_'+spremenljivka])) {
- delete languageTechnology['sp_'+spremenljivka];
- }
- }
- enableDisableExcelExport();
-}
-function resetWordSynonyms(spremenljivka, wordIndex) {
- if (languageTechnology['sp_'+spremenljivka] != undefined) {
- if (languageTechnology['sp_'+spremenljivka]['wi_'+wordIndex] != undefined) {
- wordHasSynonim = $.isEmptyObject(languageTechnology['sp_'+spremenljivka]['wi_'+wordIndex]) == false;
- if (wordHasSynonim) {
- $.each(languageTechnology['sp_'+spremenljivka]['wi_'+wordIndex], function(si, synonymIndex) {
- unsetSynonim(spremenljivka, wordIndex, si.replace('si_',''))
- });
- }
- }
- }
-}
-
-function isSetSynonim(spremenljivka, wordIndex, synonymIndex) {
- isSet = false;
- if (languageTechnology['sp_'+spremenljivka] != undefined) {
- if (languageTechnology['sp_'+spremenljivka]['wi_'+wordIndex] != undefined) {
- if (languageTechnology['sp_'+spremenljivka]['wi_'+wordIndex]['si_'+synonymIndex] != undefined) {
- isSet = true;
- }
- }
- }
- return isSet;
-}
-
-function wordHasSynonims(spremenljivka, wordIndex) {
- wordHasSynonim = false;
- if (languageTechnology['sp_'+spremenljivka] != undefined) {
- if (languageTechnology['sp_'+spremenljivka]['wi_'+wordIndex] != undefined) {
- wordHasSynonim = $.isEmptyObject(languageTechnology['sp_'+spremenljivka]['wi_'+wordIndex]) == false;
- }
- }
- return wordHasSynonim;
-}
-
-
-function getWordHypernyms(spremenljivka, wordIndex) {
- result = {};
- var synsetArray = languageTechnologyResponse[spremenljivka][wordIndex]['Synset'];
-
- izbrani = [];
- if (wordHasSynonims(spremenljivka, wordIndex)) {
- izbrani = languageTechnology['sp_'+spremenljivka]['wi_'+wordIndex];
- }
- // jezik
- if (languageTechnologySettings['lt_language'] != undefined) {
- var language = languageTechnologySettings['lt_language'];
- } else {
- var language = $("#lt_language").val()
- }
-
-
-
- $.each(synsetArray, function(i, synsetText) {
-
- if (izbrani['si_'+i] != undefined) {
- hypernyms = parseHypernyms(synsetText['FWDNoM'], language);
- $.each (hypernyms, function (i, hypernym) {
- word = hypernym['word'];
- if (result[word] == undefined) {
- result[word] = hypernym;
- }
- })
-
- //hypernyms.push();
- }
- });
- return result;
-}
-
-function enableDisableExcelExport() {
- // preverimo ali imamp kak synonym
- var has = false;
- $.each(languageTechnology, function(spremenljvkaKey, spremenljivkaData) {
- $.each(spremenljivkaData, function(wordKey, wordData) {
- $.each(wordData, function(synsetKey, synsetData) {
- has = true;
- return false; // break
- });
- if (has) {
- return false; // break
- }
- })
- if (has) {
- return false; // break
- }
- });
- if (has) {
- $("#lt_export_excel span").removeClass("xls_grey_16 xls_16").addClass("xls_16");
- } else {
- $("#lt_export_excel span").removeClass("xls_grey_16 xls_16").addClass("xls_grey_16");
- }
- return has;
-}
-
-function prepareExcelData() {
- result = [];
- izbrani = languageTechnology;
- // naredimo kopijo mustang responsa, drugače so težave z referencami
- var response = jQuery.extend(true, {}, languageTechnologyResponse);
-
- $.each(izbrani, function(spremenljvkaKey, spremenljivkaData) {
- spremenljivka = spremenljvkaKey.replace('sp_','');
- $.each(spremenljivkaData, function(wordKey, wordData) {
- word = wordKey.replace('wi_','');
- var wordSynonyms = [];
- $.each(wordData, function(synsetKey, synsetData) {
- sysnset = synsetKey.replace('si_','');
- wordSynonyms.push(response[spremenljivka][word]['Synset'][sysnset]);
- });
-
- var wd = jQuery.extend(true, {}, response[spremenljivka][word]);
- delete wd['Synset'];
- wd['synonyms'] = wordSynonyms;
-
- result.push({spremenljivka:spremenljivka, data:wd});
- })
- });
- return result;
-}
-function lt_export_excel() {
- if (!enableDisableExcelExport()) {
-// return false;
- }
-
- var request = {
- anketa: srv_meta_anketa_id,
- mustangData: prepareExcelData(),
- language: $("#lt_language").val()
- };
- $.ajax({
- timeout: var_timeout,
- cache: false,
- xhrFields: { withCredentials: true },
- url: 'ajax.php?a=exportLanguageTechnology',
- type: 'post',
- data: request,
- success: function (response) {
- if (response['error'] == true) {
- alert(response['msg']);
- return false;
- }
- window.open(response['url']);
- },
- error: function(x, t, m) {
- if(t==="timeout") {
- alert("got timeout");
- } else {
- alert('Prišlo je do neznane napake.');
- }
- },
- complete: function() {
- }
- });
-}
-
-
-function changeWordType(spremenljivka, wordIndex, word, wordType) {
- var wkey = spremenljivka +'_'+ wordIndex+'_' + word + '_' + wordType;
- // preverimo cachež
-
- if (languageTechnologyWordCache[wkey] == undefined) {
- console.log('2');
- // nardimo request
- var request = {
- spremenljivka: spremenljivka,
- anketa: srv_meta_anketa_id,
- lt_word: word,
- lt_tag: wordType,
- lt_language: $("#lt_language").val(),
- lt_min_FWD: $("#lt_min_FWD").val(),
- lt_min_nNoM: $("#lt_min_nNoM").val(),
- lt_min_vNoM: $("#lt_min_vNoM").val()
- };
- // nardimo ajax klic
- $.ajax({
- cache: false,
- timeout: var_timeout,
- xhrFields: { withCredentials: true },
- url: 'ajax.php?a=runLanguageTechnologyWord',
- type: 'post',
- //dataType: 'json',
- data: request,
- spremenljivka: spremenljivka,
- wordIndex: wordIndex,
- container: $('li#branching_'+spremenljivka),
- beforeSend: function() {
- },
- success: function (response) {
-
- if (response['error'] != undefined) {
- if (response['error']['hasError'] == true) {
- alert(response['error']['msg']);
-
- // cleanUpAndReturn();
- return false;
- }
- delete response['error'];
- }
- if (response['setting'] != undefined) {
- languageTechnologySettings = response['setting'];
- delete response['setting'];
- }
- // zamenjamo besedo v responsu
- languageTechnologyResponse[this.spremenljivka][this.wordIndex] = response[0];
- // TODO počistimo morebitne izbrane indexe za to besedo
- resetWordSynonyms(spremenljivka, wordIndex);
- // prikažemo na novo
- changeWordSynonym(this.spremenljivka, this.wordIndex);
- displayWordSynonyms(this.spremenljivka, this.wordIndex);
-
-
-
- return true;
- },
- error: function(x, t, m) {
- if(t==="timeout") {
- alert("got timeout");
- } else {
- alert('Prišlo je do neznane napake.');
- }
- },
- complete: function() {
- }
- });
- }
-}
-
-function stripAccents(str) {
- var rExps=[
- {re:/[\xC0-\xC6]/g, ch:'A'},
- {re:/[\xE0-\xE6]/g, ch:'a'},
- {re:/[\xC8-\xCB]/g, ch:'E'},
- {re:/[\xE8-\xEB]/g, ch:'e'},
- {re:/[\xCC-\xCF]/g, ch:'I'},
- {re:/[\xEC-\xEF]/g, ch:'i'},
- {re:/[\xD2-\xD6]/g, ch:'O'},
- {re:/[\xF2-\xF6]/g, ch:'o'},
- {re:/[\xD9-\xDC]/g, ch:'U'},
- {re:/[\xF9-\xFC]/g, ch:'u'},
- {re:/[\xD1]/g, ch:'N'},
- {re:/[\xF1]/g, ch:'n'} ];
- for(var i=0, len=rExps.length; i<len; i++)
- str=str.replace(rExps[i].re, rExps[i].ch);
- return str;
-};
-
-jQuery.extend({
-highlight: function (node, re, nodeName, className) {
- if (node.nodeType === 3) {
- //var match = node.data.match(re);
- var match = stripAccents(node.data).match(re);
- if (match) {
- var highlight = document.createElement(nodeName || 'span');
- highlight.className = className || 'highlight';
- var wordNode = node.splitText(match.index);
- wordNode.splitText(match[0].length);
- var wordClone = wordNode.cloneNode(true);
- highlight.appendChild(wordClone);
- wordNode.parentNode.replaceChild(highlight, wordNode);
- return 1; //skip added node in parent
- }
- } else if ((node.nodeType === 1 && node.childNodes) && // only element nodes that have children
- !/(script|style)/i.test(node.tagName) && // ignore script and style nodes
- !(node.tagName === nodeName.toUpperCase() && node.className === className)) { // skip if already highlighted
- for (var i = 0; i < node.childNodes.length; i++) {
- i += jQuery.highlight(node.childNodes[i], re, nodeName, className);
- }
- }
- return 0;
-}
-});
-
-jQuery.fn.unhighlight = function (options) {
-var settings = { className: 'highlight', element: 'span' };
-jQuery.extend(settings, options);
-
-return this.find(settings.element + "." + settings.className).each(function () {
- var parent = this.parentNode;
- parent.replaceChild(this.firstChild, this);
- parent.normalize();
-}).end();
-};
-
-jQuery.fn.highlight = function (words, options) {
-var settings = { className: 'highlight', element: 'span', caseSensitive: false, wordsOnly: false };
-jQuery.extend(settings, options);
-
-if (words.constructor === String) {
- words = [words];
-}
-
-words = jQuery.map(words, function(word, i) {
- return stripAccents(word);
-});
-
-var flag = settings.caseSensitive ? "" : "i";
-var pattern = "(" + words.join("|") + ")";
-if (settings.wordsOnly) {
- pattern = "\\b" + pattern + "\\b";
-}
-
-var re = new RegExp(pattern, flag);
-
-return this.each(function () {
- jQuery.highlight(this, re, settings.element, settings.className);
-});
-};
-
-/** Tag remover
- * $('div span').tagRemover();
- *
- */
-(function($) {
- $.fn.tagRemover = function() {
- return this.each(function() {
- var $this = $(this);
- var text = $this.text();
- $this.replaceWith(text);
- });
- }
-})(jQuery); \ No newline at end of file
diff --git a/admin/survey/script/telefon.js b/admin/survey/script/telefon.js
deleted file mode 100644
index 15f393f..0000000
--- a/admin/survey/script/telefon.js
+++ /dev/null
@@ -1,31 +0,0 @@
-// meta podatki
-var srv_meta_anketa_id = $("#srv_meta_anketa").val();
-
-// avtomatsko vsake 30 sekund preverimo, ce se je pojavila kaksna nova stevilka
-function preveri_nove_stevilke () {
- $.timer(30000, function (timer) {
-
- $('#preveri_stevilke').load('ajax.php?t=telefon&a=preveri_stevilke', {anketa: srv_meta_anketa_id});
- timer.stop();
- });
-}
-
-// dashboard filter na datum
-function tel_date_filter () {
-
- // Ce imamo nastavljen datum "od"
- var dateFrom = $('#tel_dash_dateFrom').val();
- var dateFromText = '';
- if(dateFrom != '')
- dateFromText = '&date_from=' + dateFrom;
-
- // Ce imamo nastavljen datum "do"
- var dateTo = $('#tel_dash_dateTo').val();
- var dateToText = '';
- if(dateTo != '')
- dateToText = '&date_to=' + dateTo;
-
- var srv_site_url = $("#srv_site_url").val();
- srv_site_url += 'admin/survey/index.php?anketa='+srv_meta_anketa_id+'&a=telephone&m=dashboard'+dateFromText+dateToText;
- window.location.href = srv_site_url;
-} \ No newline at end of file