From 5273dfbbf3c08dbc77ab379dd843b9da73e8494b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ga=C3=ABl=20M=C3=A9tais?= Date: Tue, 20 Dec 2016 12:16:28 +0800 Subject: [PATCH] Webfonts analyzis (#209) Add 3 new rules about webfonts --- Gruntfile.js | 2 +- front/src/css/rule.css | 2 +- .../src/js/directives/offendersDirectives.js | 6 + front/src/less/rule.less | 2 +- front/src/views/rule.html | 58 ++- lib/metadata/policies.js | 39 +- lib/metadata/scoreProfileGeneric.json | 9 + .../charactersCount/charactersCount.js | 71 ++++ lib/tools/redownload/contentTypeChecker.js | 26 +- lib/tools/redownload/fileMinifier.js | 12 +- lib/tools/redownload/fontAnalyzer.js | 379 ++++++++++++++++++ lib/tools/redownload/gzipCompressor.js | 4 +- lib/tools/redownload/imageOptimizer.js | 10 +- lib/tools/redownload/redownload.js | 164 +++++++- package.json | 1 + server_config/server_install.sh | 2 +- test/core/fileMinifierTest.js | 4 +- test/core/fontAnalyzerTest.js | 112 ++++++ test/core/gzipCompressorTest.js | 30 +- test/core/imageOptimizerTest.js | 10 +- test/core/redownloadTest.js | 9 +- test/www/SourceSansPro/OFL.txt | 93 +++++ .../SourceSansPro/SourceSansPro-Regular.woff | Bin 0 -> 128612 bytes test/www/font-page.html | 23 ++ 24 files changed, 999 insertions(+), 69 deletions(-) create mode 100644 lib/tools/phantomas/custom_modules/modules/charactersCount/charactersCount.js create mode 100644 lib/tools/redownload/fontAnalyzer.js create mode 100644 test/core/fontAnalyzerTest.js create mode 100644 test/www/SourceSansPro/OFL.txt create mode 100644 test/www/SourceSansPro/SourceSansPro-Regular.woff create mode 100644 test/www/font-page.html diff --git a/Gruntfile.js b/Gruntfile.js index 3ccabe9..93e5887 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -143,7 +143,7 @@ module.exports = function(grunt) { options: { reporter: 'spec', }, - src: ['test/core/imageOptimizerTest.js'] + src: ['test/core/fontAnalyzerTest.js'] }, coverage: { options: { diff --git a/front/src/css/rule.css b/front/src/css/rule.css index 686d735..9676b7d 100644 --- a/front/src/css/rule.css +++ b/front/src/css/rule.css @@ -237,7 +237,7 @@ .totalWeightPie canvas { max-width: inherit; } -.hugeFile { +.offenderProblem { font-weight: bold; color: #e74c3c; } diff --git a/front/src/js/directives/offendersDirectives.js b/front/src/js/directives/offendersDirectives.js index ae84679..609871b 100644 --- a/front/src/js/directives/offendersDirectives.js +++ b/front/src/js/directives/offendersDirectives.js @@ -918,4 +918,10 @@ }; }); + offendersDirectives.filter('addSpaces', function() { + return function(str) { + return str.split('').join(' '); + }; + }); + })(); \ No newline at end of file diff --git a/front/src/less/rule.less b/front/src/less/rule.less index a4310ed..7eaa056 100644 --- a/front/src/less/rule.less +++ b/front/src/less/rule.less @@ -261,7 +261,7 @@ } } -.hugeFile { +.offenderProblem { font-weight: bold; color: #e74c3c; } diff --git a/front/src/views/rule.html b/front/src/views/rule.html index 99aca48..3e9c304 100644 --- a/front/src/views/rule.html +++ b/front/src/views/rule.html @@ -158,6 +158,11 @@
{{offender}}
+ +
+ + ({{offender.size | bytes}}) +
@@ -250,7 +255,7 @@
-
{{request.weight | bytes}}
+
{{request.weight | bytes}}
@@ -403,6 +408,57 @@ +
+
+

+
+
+
Weight
+
{{font.weight | bytes}}
+
{{font.weight | bytes}}
+
+
+
Number of glyphs
+
{{font.numGlyphs}}
+
{{font.numGlyphs}} (better < 500)
+
+
+
Average glyph complexity
+
{{font.averageGlyphComplexity}}
+
{{font.averageGlyphComplexity}} (better < 35)
+
+
+
+
+ +
+
+

({{font.weight | bytes}})

+
+
+
+ This font seems to be an icon font + but only {{font.numGlyphsInCommonWithPageContent}} of its {{font.glyphs}} glyphs possibly used! + and {{font.numGlyphsInCommonWithPageContent}} of its {{font.glyphs}} glyphs possibly used. +
+
+
+
+
+
{{range.name}}
+
{{range.numGlyphsInCommonWithPageContent}} of its {{range.charset.length}} glyphs possibly used
+
{{range.numGlyphsInCommonWithPageContent}} of its {{range.charset.length}} glyphs are used
+
+
+ glyphes list +
{{range.charset | addSpaces}}
+
+
+
+
+
+
+

Protocols advertised by the server

diff --git a/lib/metadata/policies.js b/lib/metadata/policies.js index 65e7d3f..9fc69bf 100644 --- a/lib/metadata/policies.js +++ b/lib/metadata/policies.js @@ -941,7 +941,7 @@ var policies = { "totalRequests": { "tool": "redownload", "label": "Requests number", - "message": "

This is one of the most important performance rule. Every request is slowing down the page loading.

There are several technics to reduce their number:

  • Concatenate JS files
  • Concatenate CSS files
  • Embed or inline small JS or CSS files in the HTML
  • Create sprites or icon fonts
  • Base64 encode small images in HTML or stylesheets
  • Use lazyloading for images

", + "message": "

This is one of the most important performance rule. Every request is slowing down the page loading.

There are several technics to reduce their number:

  • Concatenate JS files
  • Concatenate CSS files
  • Embed or inline small JS or CSS files in the HTML
  • Create sprites
  • Base64 encode small images in HTML or stylesheets
  • Use lazyloading for images

", "isOkThreshold": 15, "isBadThreshold": 100, "isAbnormalThreshold": 180, @@ -1042,6 +1042,43 @@ var policies = { "isAbnormalThreshold": 30, "hasOffenders": true }, + "fontsCount": { + "tool": "redownload", + "label": "Webfonts number", + "message": "

This is the number of custom web fonts loaded on the page.

Webfonts are beautiful, but heavy. You should keep their number as low as possible.

", + "isOkThreshold": 1, + "isBadThreshold": 5, + "isAbnormalThreshold": 7, + "hasOffenders": true, + "offendersTransformFn": function(offenders) { + return offenders; + } + }, + "heavyFonts": { + "tool": "redownload", + "label": "Overweighted webfonts", + "message": "

This metric is the sum of all bytes above 40KB in loaded fonts. Over this size, the font is probably not optimized for the web.

It can be a compresson issue, a font that contains too many glyphs or a font with complex shapes.

Sorry, Yellow Lab Tools is not yet compatible with the WOFF2 font format that generates 20-30% smaller fonts. You can proceed to a manual verification on a modern browser.

", + "isOkThreshold": 0, + "isBadThreshold": 102400, + "isAbnormalThreshold": 204800, + "unit": 'bytes', + "hasOffenders": true, + "offendersTransformFn": function(offenders) { + return offenders; + } + }, + "unusedUnicodeRanges": { + "tool": "redownload", + "label": "Unused Unicode ranges", + "message": "

This metric counts the number of unused Unicode ranges inside each font. For example, one font could include Cyrillic glyphs but none of them are used on the page.

Because of technical limitations, Yellow Lab Tools checks each font against the glyphs of the entire page. As a result, estimated use is >= to reality. For example, if you read that 10 glyphs are \"possibly used\", it means that these 10 glyphs are used on the page but nothing guaranties that they are displayed using this font.

Tools such as Font Squirrel can remove some unicode ranges from a font.

In the case of an icon font, make sure you only keep the icons that are used on the website and to remove the others. Several tools are able to extract SVG images from a font, then some other tools can generate a font from the SVGs you want to keep.

", + "isOkThreshold": 0, + "isBadThreshold": 8, + "isAbnormalThreshold": 12, + "hasOffenders": true, + "offendersTransformFn": function(offenders) { + return offenders; + } + }, "http2": { "label": "HTTP/2 or SPDY", "message": "

HTTP/2 is the latest version of the HTTP protocol and is designed to optimize load speed. SPDY is deprecated but still very well supported.

The latest versions of all major browsers are now compatible. The difficulty is on the server side, where technologies are not quite ready yet.

", diff --git a/lib/metadata/scoreProfileGeneric.json b/lib/metadata/scoreProfileGeneric.json index 958db6a..23ce229 100644 --- a/lib/metadata/scoreProfileGeneric.json +++ b/lib/metadata/scoreProfileGeneric.json @@ -93,6 +93,14 @@ "cssRedundantChildNodesSelectors": 1 } }, + "fonts": { + "label": "Web fonts", + "policies": { + "fontsCount": 1, + "heavyFonts": 1, + "unusedUnicodeRanges": 1 + } + }, "serverConfig": { "label": "Server config", "policies": { @@ -115,6 +123,7 @@ "cssSyntaxError": 1, "cssComplexity": 1, "badCSS": 1, + "fonts": 1, "serverConfig": 1 } } \ No newline at end of file diff --git a/lib/tools/phantomas/custom_modules/modules/charactersCount/charactersCount.js b/lib/tools/phantomas/custom_modules/modules/charactersCount/charactersCount.js new file mode 100644 index 0000000..2a43da0 --- /dev/null +++ b/lib/tools/phantomas/custom_modules/modules/charactersCount/charactersCount.js @@ -0,0 +1,71 @@ +/** + * Lists the number of different characters + */ +/* global document: true, Node: true, window: true */ + +exports.version = '1.0'; + +exports.module = function(phantomas) { + 'use strict'; + + //phantomas.setMetric('differentCharacters'); // @desc the number of different characters in the body @offenders + + phantomas.on('report', function() { + phantomas.log("charactersCount: starting to analyze characters on page..."); + + phantomas.evaluate(function() { + (function(phantomas) { + + phantomas.spyEnabled(false, 'analyzing characters on page'); + + function getLetterCount(arr){ + return arr.reduce(function(prev, next){ + prev[next] = 1; + return prev; + }, {}); + } + + if (document.body && document.body.textContent) { + var allText = ''; + + // Traverse all DOM Tree to read text + var runner = new phantomas.nodeRunner(); + runner.walk(document.body, function(node, depth) { + switch (node.nodeType) { + + // Grabing text nodes + case Node.TEXT_NODE: + if (node.parentNode.tagName !== 'SCRIPT' && node.parentNode.tagName !== 'STYLE') { + allText += node.nodeValue; + } + break; + + // Grabing CSS content properties + case Node.ELEMENT_NODE: + if (node.tagName !== 'SCRIPT' && node.tagName !== 'STYLE') { + allText += window.getComputedStyle(node).getPropertyValue('content'); + allText += window.getComputedStyle(node, ':before').getPropertyValue('content'); + allText += window.getComputedStyle(node, ':after').getPropertyValue('content'); + } + break; + } + }); + + // Reduce all text found in page into a string of unique chars + var charactersList = getLetterCount(allText.split('')); + var charsetString = Object.keys(charactersList).sort().join(''); + + // Remove blank characters + charsetString = charsetString.replace(/\s/g, ''); + + phantomas.setMetric('differentCharacters', charsetString.length); + phantomas.addOffender('differentCharacters', charsetString); + } + + phantomas.spyEnabled(true); + }(window.__phantomas)); + }); + + phantomas.log("charactersCount: analyzing characters done."); + }); +}; diff --git a/lib/tools/redownload/contentTypeChecker.js b/lib/tools/redownload/contentTypeChecker.js index d5fa7ce..49d242b 100644 --- a/lib/tools/redownload/contentTypeChecker.js +++ b/lib/tools/redownload/contentTypeChecker.js @@ -18,11 +18,11 @@ var ContentTypeChecker = function() { debug('Entering contentTypeChecker'); // Ignore very small files as they are generally tracking pixels - if (entry.weightCheck && entry.weightCheck.body && entry.weightCheck.bodySize > 100) { + if (entry.weightCheck && entry.weightCheck.bodyBuffer && entry.weightCheck.bodySize > 100) { var foundType; try { - foundType = findContentType(entry.weightCheck.body); + foundType = findContentType(entry.weightCheck.bodyBuffer); if (!entry.contentType || entry.contentType === '') { if (foundType === null) { @@ -51,43 +51,43 @@ var ContentTypeChecker = function() { return deferred.promise; } - function findContentType(body) { - var buffer = new Buffer(body, 'binary'); + function findContentType(bodyBuffer) { + var bodyStr = bodyBuffer.toString(); - if (isJpg(buffer)) { + if (isJpg(bodyBuffer)) { return contentTypes.jpeg; } - if (isPng(buffer)) { + if (isPng(bodyBuffer)) { return contentTypes.png; } // https://github.com/sindresorhus/is-svg/issues/7 - if (/= 0) { + count ++; + } + }); + return count; + } + + function getCharacterSetAsString(characterSet) { + var str = ''; + characterSet.forEach(function(charCode) { + str += String.fromCharCode(charCode); + }); + return str; + } + + function getUnicodeRangeFromChar(char) { + return UNICODE_RANGES.find(function(range) { + return (char >= range.rangeStart && char <= range.rangeEnd); + }) || {name: 'Others'}; + } + + + var UNICODE_RANGES = [ + { + name: 'Basic Latin', + rangeStart: 0x0020, + rangeEnd: 0x007F + }, + { + name: 'Latin-1 Supplement', + rangeStart: 0x00A0, + rangeEnd: 0x00FF + }, + { + name: 'Latin Extended', + rangeStart: 0x0100, + rangeEnd: 0x024F + }, + { + name: 'IPA Extensions', + rangeStart: 0x0250, + rangeEnd: 0x02AF + }, + { + name: 'Greek and Coptic', + rangeStart: 0x0370, + rangeEnd: 0x03FF + }, + { + name: 'Cyrillic', + rangeStart: 0x0400, + rangeEnd: 0x052F + }, + { + name: 'Armenian', + rangeStart: 0x0530, + rangeEnd: 0x058F + }, + { + name: 'Hebrew', + rangeStart: 0x0590, + rangeEnd: 0x05FF + }, + { + name: 'Arabic', + rangeStart: 0x0600, + rangeEnd: 0x06FF + }, + { + name: 'Syriac', + rangeStart: 0x0700, + rangeEnd: 0x074F + }, + { + name: 'Thaana', + rangeStart: 0x0780, + rangeEnd: 0x07BF + }, + { + name: 'Devanagari', + rangeStart: 0x0900, + rangeEnd: 0x097F + }, + { + name: 'Bengali', + rangeStart: 0x0980, + rangeEnd: 0x09FF + }, + { + name: 'Gurmukhi', + rangeStart: 0x0A00, + rangeEnd: 0x0A7F + }, + { + name: 'Gujarati', + rangeStart: 0x0A80, + rangeEnd: 0x0AFF + }, + { + name: 'Oriya', + rangeStart: 0x0B00, + rangeEnd: 0x0B7F + }, + { + name: 'Tamil', + rangeStart: 0x0B80, + rangeEnd: 0x0BFF + }, + { + name: 'Telugu', + rangeStart: 0x0C00, + rangeEnd: 0x0C7F + }, + { + name: 'Kannada', + rangeStart: 0x0C80, + rangeEnd: 0x0CFF + }, + { + name: 'Malayalam', + rangeStart: 0x0D00, + rangeEnd: 0x0D7F + }, + { + name: 'Sinhala', + rangeStart: 0x0D80, + rangeEnd: 0x0DFF + }, + { + name: 'Thai', + rangeStart: 0x0E00, + rangeEnd: 0x0E7F + }, + { + name: 'Lao', + rangeStart: 0x0E80, + rangeEnd: 0x0EFF + }, + { + name: 'Tibetan', + rangeStart: 0x0F00, + rangeEnd: 0x0FFF + }, + { + name: 'Myanmar', + rangeStart: 0x1000, + rangeEnd: 0x109F + }, + { + name: 'Georgian', + rangeStart: 0x10A0, + rangeEnd: 0x10FF + }, + { + name: 'Hangul Jamo', + rangeStart: 0x1100, + rangeEnd: 0x11FF + }, + { + name: 'Ethiopic', + rangeStart: 0x1200, + rangeEnd: 0x137F + }, + { + name: 'Cherokee', + rangeStart: 0x13A0, + rangeEnd: 0x13FF + }, + { + name: 'Unified Canadian Aboriginal Syllabics', + rangeStart: 0x1400, + rangeEnd: 0x167F + }, + { + name: 'Ogham', + rangeStart: 0x1680, + rangeEnd: 0x169F + }, + { + name: 'Runic', + rangeStart: 0x16A0, + rangeEnd: 0x16FF + }, + { + name: 'Tagalog', + rangeStart: 0x1700, + rangeEnd: 0x171F + }, + { + name: 'Hanunoo', + rangeStart: 0x1720, + rangeEnd: 0x173F + }, + { + name: 'Buhid', + rangeStart: 0x1740, + rangeEnd: 0x175F + }, + { + name: 'Tagbanwa', + rangeStart: 0x1760, + rangeEnd: 0x177F + }, + { + name: 'Khmer', + rangeStart: 0x1780, + rangeEnd: 0x17FF + }, + { + name: 'Mongolian', + rangeStart: 0x1800, + rangeEnd: 0x18AF + }, + { + name: 'Limbu', + rangeStart: 0x1900, + rangeEnd: 0x194F + }, + { + name: 'Tai Le', + rangeStart: 0x1950, + rangeEnd: 0x197F + }, + { + name: 'Hiragana', + rangeStart: 0x3040, + rangeEnd: 0x309F + }, + { + name: 'Katakana', + rangeStart: 0x30A0, + rangeEnd: 0x30FF + }, + { + name: 'Bopomofo', + rangeStart: 0x3100, + rangeEnd: 0x312F + } + ]; + + return { + analyzeFont: analyzeFont, + getMetricsFromFont: getMetricsFromFont, + readUnicodeRanges: readUnicodeRanges, + getAverageGlyphComplexity: getAverageGlyphComplexity, + countPossiblyUsedGlyphs: countPossiblyUsedGlyphs, + getCharacterSetAsString: getCharacterSetAsString, + getUnicodeRangeFromChar: getUnicodeRangeFromChar + }; +}; + +module.exports = new FontAnalyzer(); \ No newline at end of file diff --git a/lib/tools/redownload/gzipCompressor.js b/lib/tools/redownload/gzipCompressor.js index d607a24..82c9380 100644 --- a/lib/tools/redownload/gzipCompressor.js +++ b/lib/tools/redownload/gzipCompressor.js @@ -16,12 +16,12 @@ var GzipCompressor = function() { function gzipUncompressedFile(entry) { var deferred = Q.defer(); - if (entryTypeCanBeGzipped(entry) && entry.weightCheck && !entry.weightCheck.isCompressed && entry.weightCheck.body) { + if (entryTypeCanBeGzipped(entry) && entry.weightCheck && !entry.weightCheck.isCompressed && entry.weightCheck.bodyBuffer) { debug('Compression missing, trying to gzip file %s', entry.url); var uncompressedSize = entry.weightCheck.uncompressedSize; - zlib.gzip(new Buffer(entry.weightCheck.body, 'utf8'), function(err, buffer) { + zlib.gzip(entry.weightCheck.bodyBuffer, function(err, buffer) { if (err) { debug('Could not compress uncompressed file with gzip'); debug(err); diff --git a/lib/tools/redownload/imageOptimizer.js b/lib/tools/redownload/imageOptimizer.js index 2cb2117..042502a 100644 --- a/lib/tools/redownload/imageOptimizer.js +++ b/lib/tools/redownload/imageOptimizer.js @@ -14,7 +14,7 @@ var ImageOptimizer = function() { function optimizeImage(entry) { var deferred = Q.defer(); - if (!entry.weightCheck || !entry.weightCheck.body) { + if (!entry.weightCheck || !entry.weightCheck.bodyBuffer) { // No valid file available deferred.resolve(entry); return deferred.promise; @@ -28,7 +28,7 @@ var ImageOptimizer = function() { debug('File is a JPEG'); // Starting softly with a lossless compression - return compressJpegLosslessly(new Buffer(entry.weightCheck.body, 'binary')) + return compressJpegLosslessly(entry.weightCheck.bodyBuffer) .then(function(newFile) { if (!newFile) { @@ -48,7 +48,7 @@ var ImageOptimizer = function() { // Now let's compress lossy to MAX_JPEG_QUALITY - return compressJpegLossly(new Buffer(entry.weightCheck.body, 'binary')); + return compressJpegLossly(entry.weightCheck.bodyBuffer); }) .then(function(newFile) { @@ -86,7 +86,7 @@ var ImageOptimizer = function() { debug('File is a PNG'); // Starting softly with a lossless compression - return compressPngLosslessly(new Buffer(entry.weightCheck.body, 'binary')) + return compressPngLosslessly(entry.weightCheck.bodyBuffer) .then(function(newFile) { if (!newFile) { @@ -120,7 +120,7 @@ var ImageOptimizer = function() { debug('File is an SVG'); // Starting softly with a lossless compression - return compressSvgLosslessly(new Buffer(entry.weightCheck.body, 'utf8')) + return compressSvgLosslessly(entry.weightCheck.bodyBuffer) .then(function(newFile) { if (!newFile) { diff --git a/lib/tools/redownload/redownload.js b/lib/tools/redownload/redownload.js index 97eff8a..d487473 100644 --- a/lib/tools/redownload/redownload.js +++ b/lib/tools/redownload/redownload.js @@ -18,6 +18,7 @@ var imageOptimizer = require('./imageOptimizer'); var fileMinifier = require('./fileMinifier'); var gzipCompressor = require('./gzipCompressor'); var contentTypeChecker = require('./contentTypeChecker'); +var fontAnalyzer = require('./fontAnalyzer'); var Redownload = function() { @@ -44,6 +45,12 @@ var Redownload = function() { }; } + // Prevent a bug with the font analyzer on empty pages + var differentCharacters = ''; + if (data.toolsResults.phantomas.offenders.differentCharacters && data.toolsResults.phantomas.offenders.differentCharacters.length > 0) { + differentCharacters = data.toolsResults.phantomas.offenders.differentCharacters[0]; + } + // Transform every request into a download function with a callback when done var redownloadList = requestsList.map(function(entry) { return function(callback) { @@ -58,8 +65,12 @@ var Redownload = function() { .then(gzipCompressor.compressFile) + .then(function(entry) { + return fontAnalyzer.analyzeFont(entry, differentCharacters); + }) + .then(function(newEntry) { - debug('File %s - Redownloaded, optimized, minified, compressed: done', entry.url); + debug('File %s - Redownloaded, optimized, minified, compressed, analyzed: done', entry.url); callback(null, newEntry); }) @@ -134,6 +145,18 @@ var Redownload = function() { offenders.identicalFiles = listIdenticalFiles(results); metrics.identicalFiles = offenders.identicalFiles.avoidableRequests; + // Fonts count + offenders.fontsCount = listFonts(results); + metrics.fontsCount = offenders.fontsCount.count; + + // Heavy fonts + offenders.heavyFonts = listHeavyFonts(results); + metrics.heavyFonts = offenders.heavyFonts.totalGain; + + // Unused Unicode ranges + offenders.unusedUnicodeRanges = listUnusedUnicodeRanges(results); + metrics.unusedUnicodeRanges = offenders.unusedUnicodeRanges.count; + data.toolsResults.redownload = { metrics: metrics, @@ -381,7 +404,7 @@ var Redownload = function() { var avoidableRequestsCount = 0; requests.forEach(function(req) { - var requestHash = md5(req.weightCheck.body); + var requestHash = md5(req.weightCheck.bodyBuffer); // Try to exclude tracking pixels if (req.weightCheck.bodySize < 80 && req.type === 'image') { @@ -414,6 +437,126 @@ var Redownload = function() { }; } + function listFonts(requests) { + var list = []; + + requests.forEach(function(req) { + if (req.isWebFont) { + list.push({ + url: req.url, + size: req.weightCheck.bodySize + }); + } + }); + + return { + count: list.length, + list: list + }; + } + + function listHeavyFonts(requests) { + var list = []; + var totalGain = 0; + var heavyFontsCount = 0; + var MAX_FONT_WEIGHT = 40 * 1024; + + requests.forEach(function(req) { + if (req.isWebFont && req.fontMetrics) { + list.push({ + url: req.url, + weight: req.weightCheck.bodySize, + numGlyphs: req.fontMetrics.numGlyphs, + averageGlyphComplexity: req.fontMetrics.averageGlyphComplexity + }); + if (req.weightCheck.bodySize > MAX_FONT_WEIGHT) { + totalGain += req.weightCheck.bodySize - MAX_FONT_WEIGHT; + heavyFontsCount ++; + } + } + }); + + return { + count: heavyFontsCount, + fonts: list, + totalGain: totalGain + }; + } + + function listUnusedUnicodeRanges(requests) { + var list = []; + var unusedUnicodeRanges = 0; + + requests.forEach(function(req) { + if (req.isWebFont && req.fontMetrics && req.fontMetrics.unicodeRanges) { + var ranges = []; + var others = null; + var rangeNames = Object.keys(req.fontMetrics.unicodeRanges); + + rangeNames.forEach(function(rangeName) { + var range = req.fontMetrics.unicodeRanges[rangeName]; + + // Exclude "Others" + if (rangeName === 'Others') { + if (range.numGlyphsInCommonWithPageContent === 0 && range.charset.length > 50) { + range.underused = true; + unusedUnicodeRanges ++; + } + + others = range; + } else if (range.charset.length > 0) { + // Now lets detect if the current Unicode range is unused. + // Reminder: range.coverage = glyphs declared in this range, divided by the range size + if (range.coverage > 0.25 && range.numGlyphsInCommonWithPageContent === 0) { + range.underused = true; + unusedUnicodeRanges ++; + } + + ranges.push(range); + } + }); + + + // Detect if it's a icons font : if more than 90% of the icons are + // in the "Others", it looks like one. + if (others && others.charset.length / req.fontMetrics.numGlyphs > 0.9) { + + list.push({ + url: req.url, + weight: req.weightCheck.bodySize, + isIconFont: true, + glyphs: req.fontMetrics.numGlyphs, + numGlyphsInCommonWithPageContent: req.fontMetrics.numGlyphsInCommonWithPageContent + }); + + // And if less than 5% of the icons are used, let's report it as underused + if (others && others.numGlyphsInCommonWithPageContent / others.charset.length <= 0.05) { + unusedUnicodeRanges ++; + } + + // Not an icons font + } else { + if (others) { + // Insert back "Others" at the end of the list + ranges.push(others); + } + + list.push({ + url: req.url, + weight: req.weightCheck.bodySize, + isIconFont: false, + unicodeRanges: ranges + }); + } + } + }); + + return { + count: unusedUnicodeRanges, + fonts: list + }; + } + function redownloadEntry(entry, httpAuth) { var deferred = Q.defer(); @@ -521,7 +664,7 @@ var Redownload = function() { var uncompressedSize = 0; // size after uncompression var bodySize = 0; // bytes size over the wire - var body = ''; // plain text body (after uncompressing gzip/deflate) + var bodyChunks = []; // an array of buffers var isCompressed = false; function tally() { @@ -531,8 +674,10 @@ var Redownload = function() { return; } + var body = Buffer.concat(bodyChunks); + var result = { - body: body, + bodyBuffer: body, headersSize: Buffer.byteLength(rawHeaders, 'utf8'), bodySize: bodySize, isCompressed: isCompressed, @@ -548,7 +693,8 @@ var Redownload = function() { var gzip = zlib.createGunzip(); gzip.on('data', function (data) { - body += data; + + bodyChunks.push(data); uncompressedSize += data.length; }).on('end', function () { isCompressed = true; @@ -570,7 +716,7 @@ var Redownload = function() { var deflate = zlib.createInflate(); deflate.on('data', function (data) { - body += data; + bodyChunks.push(data); uncompressedSize += data.length; }).on('end', function () { isCompressed = true; @@ -587,12 +733,8 @@ var Redownload = function() { break; default: - if (contentType === 'image/jpeg' || contentType === 'image/png') { - res.setEncoding('binary'); - } - res.on('data', function (data) { - body += data; + bodyChunks.push(data); uncompressedSize += data.length; bodySize += data.length; }).on('end', function () { diff --git a/package.json b/package.json index 2e3d0ff..64f36e6 100644 --- a/package.json +++ b/package.json @@ -39,6 +39,7 @@ "easyxml": "2.0.1", "ejs": "^2.5.1", "express": "4.14.0", + "fontkit": "1.4.2", "imagemin": "5.2.2", "imagemin-jpegoptim": "5.0.0", "imagemin-jpegtran": "5.0.2", diff --git a/server_config/server_install.sh b/server_config/server_install.sh index 410e633..5cca95b 100644 --- a/server_config/server_install.sh +++ b/server_config/server_install.sh @@ -3,7 +3,7 @@ # APT-GET sudo apt-get update sudo apt-get install lsb-release libfontconfig1 libfreetype6 libjpeg-dev -y --force-yes > /dev/null 2>&1 -sudo apt-get install curl git python-software-properties build-essential make g++ -y --force-yes > /dev/null 2>&1 +sudo apt-get install curl git software-properties-common build-essential make g++ -y --force-yes > /dev/null 2>&1 # Installation of NodeJS curl -sL https://deb.nodesource.com/setup_0.12 | sudo -E bash - diff --git a/test/core/fileMinifierTest.js b/test/core/fileMinifierTest.js index 348810b..9dfe8fc 100644 --- a/test/core/fileMinifierTest.js +++ b/test/core/fileMinifierTest.js @@ -37,7 +37,7 @@ describe('fileMinifier', function() { type: 'js', contentLength: 999, weightCheck: { - body: fileContent.toString('utf8'), + bodyBuffer: fileContent, totalWeight: fileSize + 200, headersSize: 200, bodySize: fileSize, @@ -179,7 +179,7 @@ describe('fileMinifier', function() { type: 'css', contentLength: 999, weightCheck: { - body: fileContent.toString('utf8'), + bodyBuffer: fileContent, totalWeight: fileSize + 200, headersSize: 200, bodySize: fileSize, diff --git a/test/core/fontAnalyzerTest.js b/test/core/fontAnalyzerTest.js new file mode 100644 index 0000000..5ad0b13 --- /dev/null +++ b/test/core/fontAnalyzerTest.js @@ -0,0 +1,112 @@ +var should = require('chai').should(); +var fontAnalyzer = require('../../lib/tools/redownload/fontAnalyzer'); +var fs = require('fs'); +var path = require('path'); + +describe('fontAnalyzer', function() { + + it('should extract metrics from a font', function(done) { + var fileContent = fs.readFileSync(path.resolve(__dirname, '../www/SourceSansPro/SourceSansPro-Regular.woff')); + var fileSize = fileContent.length; + + var entry = { + method: 'GET', + url: 'http://localhost:8388/SourceSansPro/SourceSansPro-Regular.woff', + requestHeaders: { + 'User-Agent': 'something', + Referer: 'http://www.google.fr/', + Accept: '*/*', + 'Accept-Encoding': 'gzip, deflate' + }, + status: 200, + isWebFont: true, + type: 'webfont', + contentType: 'image/jpeg', + contentLength: 999, + weightCheck: { + bodyBuffer: fileContent, + totalWeight: fileSize + 200, + headersSize: 200, + bodySize: fileSize, + isCompressed: false, + uncompressedSize: fileSize + } + }; + + fontAnalyzer.getMetricsFromFont(entry, 'ABCD') + + .then(function(metrics) { + + metrics.should.be.an('Object'); + metrics.should.have.a.property('name').that.equals('Source Sans Pro'); + metrics.should.have.a.property('numGlyphs').that.equals(1944); + metrics.should.have.a.property('averageGlyphComplexity').that.equals(26.6); + metrics.should.have.a.property('compressedWeight').that.equals(fileSize); + + metrics.should.have.a.property('unicodeRanges').that.is.an('Object'); + metrics.unicodeRanges.should.have.a.property('Basic Latin'); + metrics.unicodeRanges['Basic Latin'].should.have.a.property('charset').that.is.a('String'); + metrics.unicodeRanges['Basic Latin'].charset.length.should.equal(95); + metrics.unicodeRanges['Basic Latin'].name.should.equal('Basic Latin'); + metrics.unicodeRanges['Basic Latin'].rangeStart.should.equal(0x0020); + metrics.unicodeRanges['Basic Latin'].rangeEnd.should.equal(0x007F); + metrics.unicodeRanges['Basic Latin'].coverage.should.equal(95 / 96); + metrics.unicodeRanges['Basic Latin'].numGlyphsInCommonWithPageContent.should.equal(4); + + metrics.unicodeRanges.Cyrillic.numGlyphsInCommonWithPageContent.should.equal(0); + + metrics.should.have.a.property('numGlyphsInCommonWithPageContent').that.equals(4); + + should.equal(metrics.unicodeRanges.Others.coverage, undefined); + + done(); + }) + + .fail(function(err) { + done(err); + }); + }); + + it('should sort glyphes by unicode ranges', function() { + var ranges = fontAnalyzer.readUnicodeRanges([0x0041, 0x0042, 0x0043, 0x0044, 0x0416], '0123AMZ'); + + ranges.should.deep.equal({ + 'Basic Latin': { + name: 'Basic Latin', + rangeStart: 32, + rangeEnd: 127, + charset: 'ABCD', + coverage: 0.041666666666666664, + numGlyphsInCommonWithPageContent: 1 + }, + 'Cyrillic': { + name: 'Cyrillic', + rangeStart: 1024, + rangeEnd: 1327, + charset: 'Ж', + coverage: 0.003289473684210526, + numGlyphsInCommonWithPageContent: 0 + } + }); + }); + + it('should transform an array of char codes into a string', function() { + var str = fontAnalyzer.getCharacterSetAsString([0x0041, 0x0042, 0x0043, 0x0044, 0x0416]); + str.should.equal('ABCDЖ'); + }); + + it('should find the right unicode range for a char', function() { + fontAnalyzer.getUnicodeRangeFromChar(0x0020).should.deep.equal({ + name: 'Basic Latin', + rangeStart: 0x0020, + rangeEnd: 0x007F + }); + + fontAnalyzer.getUnicodeRangeFromChar(0x0021).name.should.equal('Basic Latin'); + fontAnalyzer.getUnicodeRangeFromChar(0x007F).name.should.equal('Basic Latin'); + fontAnalyzer.getUnicodeRangeFromChar(0x007E).name.should.equal('Basic Latin'); + fontAnalyzer.getUnicodeRangeFromChar(0x0000).name.should.equal('Others'); + fontAnalyzer.getUnicodeRangeFromChar(0xFFFFFFFFF).name.should.equal('Others'); + }); + +}); diff --git a/test/core/gzipCompressorTest.js b/test/core/gzipCompressorTest.js index c436e02..4439f1c 100644 --- a/test/core/gzipCompressorTest.js +++ b/test/core/gzipCompressorTest.js @@ -23,7 +23,7 @@ describe('gzipCompressor', function() { type: 'js', contentLength: 999, weightCheck: { - body: fileContent.toString('utf8'), + bodyBuffer: fileContent, totalWeight: fileSize + 200, headersSize: 200, bodySize: fileSize, @@ -64,7 +64,7 @@ describe('gzipCompressor', function() { type: 'js', contentLength: 999, weightCheck: { - body: fileContent.toString('utf8'), + bodyBuffer: fileContent, bodyAfterOptimization: minifiedContent.toString('utf8'), totalWeight: fileSize + 200, headersSize: 200, @@ -108,7 +108,7 @@ describe('gzipCompressor', function() { type: 'js', contentLength: 999, weightCheck: { - body: fileContent.toString('utf8'), + bodyBuffer: fileContent, bodyAfterOptimization: minifiedContent.toString('utf8'), totalWeight: gzipedSize + 200, headersSize: 200, @@ -150,7 +150,7 @@ describe('gzipCompressor', function() { type: 'js', contentLength: 999, weightCheck: { - body: fileContent.toString('utf8'), + bodyBuffer: fileContent, totalWeight: gzipedSize + 200, headersSize: 200, bodySize: gzipedSize, @@ -188,7 +188,7 @@ describe('gzipCompressor', function() { type: 'css', contentLength: 999, weightCheck: { - body: fileContent.toString('utf8'), + bodyBuffer: fileContent, totalWeight: fileSize + 200, headersSize: 200, bodySize: fileSize, @@ -224,7 +224,7 @@ describe('gzipCompressor', function() { type: 'html', contentLength: 999, weightCheck: { - body: fileContent.toString('utf8'), + bodyBuffer: fileContent, totalWeight: fileSize + 200, headersSize: 200, bodySize: fileSize, @@ -261,7 +261,7 @@ describe('gzipCompressor', function() { type: 'image', contentLength: 999, weightCheck: { - body: fileContent.toString('utf8'), + bodyBuffer: fileContent, totalWeight: fileSize + 200, headersSize: 200, bodySize: fileSize, @@ -297,7 +297,7 @@ describe('gzipCompressor', function() { type: 'xml', contentLength: 999, weightCheck: { - body: fileContent.toString('utf8'), + bodyBuffer: fileContent, totalWeight: fileSize + 200, headersSize: 200, bodySize: fileSize, @@ -333,7 +333,7 @@ describe('gzipCompressor', function() { type: 'json', contentLength: 999, weightCheck: { - body: fileContent.toString('utf8'), + bodyBuffer: fileContent, totalWeight: fileSize + 200, headersSize: 200, bodySize: fileSize, @@ -370,7 +370,7 @@ describe('gzipCompressor', function() { type: 'webfont', contentLength: 999, weightCheck: { - body: fileContent.toString('utf8'), + bodyBuffer: fileContent, totalWeight: fileSize + 200, headersSize: 200, bodySize: fileSize, @@ -407,7 +407,7 @@ describe('gzipCompressor', function() { type: 'favicon', contentLength: 999, weightCheck: { - body: fileContent.toString('utf8'), + bodyBuffer: fileContent, totalWeight: fileSize + 200, headersSize: 200, bodySize: fileSize, @@ -444,7 +444,7 @@ describe('gzipCompressor', function() { contentType: 'image/jpeg', contentLength: 999, weightCheck: { - body: fileContent.toString('utf8'), + bodyBuffer: fileContent, totalWeight: fileSize + 200, headersSize: 200, bodySize: fileSize, @@ -482,7 +482,7 @@ describe('gzipCompressor', function() { contentType: 'image/png', contentLength: 999, weightCheck: { - body: fileContent.toString('utf8'), + bodyBuffer: fileContent, totalWeight: fileSize + 200, headersSize: 200, bodySize: fileSize, @@ -519,7 +519,7 @@ describe('gzipCompressor', function() { contentType: 'image/gif', contentLength: 999, weightCheck: { - body: fileContent.toString('utf8'), + bodyBuffer: fileContent, totalWeight: fileSize + 200, headersSize: 200, bodySize: fileSize, @@ -556,7 +556,7 @@ describe('gzipCompressor', function() { contentType: 'image/webp', contentLength: 999, weightCheck: { - body: fileContent.toString('utf8'), + bodyBuffer: fileContent, totalWeight: fileSize + 200, headersSize: 200, bodySize: fileSize, diff --git a/test/core/imageOptimizerTest.js b/test/core/imageOptimizerTest.js index e858962..3238e3f 100644 --- a/test/core/imageOptimizerTest.js +++ b/test/core/imageOptimizerTest.js @@ -52,7 +52,7 @@ describe('imageOptimizer', function() { contentType: 'image/jpeg', contentLength: 999, weightCheck: { - body: fileContent, + bodyBuffer: fileContent, totalWeight: fileSize + 200, headersSize: 200, bodySize: fileSize, @@ -137,7 +137,7 @@ describe('imageOptimizer', function() { contentType: 'image/png', contentLength: 999, weightCheck: { - body: fileContent, + bodyBuffer: fileContent, totalWeight: fileSize + 200, headersSize: 200, bodySize: fileSize, @@ -194,7 +194,7 @@ describe('imageOptimizer', function() { contentType: 'image/svg+xml', contentLength: 999, weightCheck: { - body: fileContent, + bodyBuffer: fileContent, totalWeight: fileSize + 200, headersSize: 200, bodySize: fileSize, @@ -242,7 +242,7 @@ describe('imageOptimizer', function() { contentType: 'image/jpeg', contentLength: 999, weightCheck: { - body: fileContent, + bodyBuffer: fileContent, totalWeight: fileSize + 200, headersSize: 200, bodySize: fileSize, @@ -285,7 +285,7 @@ describe('imageOptimizer', function() { contentType: 'image/png', contentLength: 999, weightCheck: { - body: fileContent, + bodyBuffer: fileContent, totalWeight: fileSize + 200, headersSize: 200, bodySize: fileSize, diff --git a/test/core/redownloadTest.js b/test/core/redownloadTest.js index 8a12ab3..0b65ee1 100644 --- a/test/core/redownloadTest.js +++ b/test/core/redownloadTest.js @@ -195,7 +195,7 @@ describe('redownload', function() { newEntry.weightCheck.uncompressedSize.should.equal(newEntry.weightCheck.bodySize); newEntry.weightCheck.isCompressed.should.equal(false); newEntry.weightCheck.headersSize.should.be.above(200).and.below(400); - newEntry.weightCheck.body.toString().should.have.string('1.8.3'); + newEntry.weightCheck.bodyBuffer.toString().should.have.string('1.8.3'); done(); }) @@ -226,12 +226,11 @@ describe('redownload', function() { .then(function(newEntry) { newEntry.weightCheck.bodySize.should.equal(4193); - newEntry.weightCheck.body.should.equal(fileContent.toString('binary')); + newEntry.weightCheck.bodyBuffer.should.deep.equal(fileContent); // Opening the image in lwip to check if the format is good var lwip = require('lwip'); - var buffer = new Buffer(newEntry.weightCheck.body, 'binary'); - lwip.open(buffer, 'png', function(err, image) { + lwip.open(newEntry.weightCheck.bodyBuffer, 'png', function(err, image) { image.width().should.equal(620); image.height().should.equal(104); done(err); @@ -312,7 +311,7 @@ describe('redownload', function() { type: 'html', contentLength: 999, weightCheck: { - body: 'blabla', + bodyBuffer: 'blabla', headersSize: 200, bodySize: 500, isCompressed: false, diff --git a/test/www/SourceSansPro/OFL.txt b/test/www/SourceSansPro/OFL.txt new file mode 100644 index 0000000..1804534 --- /dev/null +++ b/test/www/SourceSansPro/OFL.txt @@ -0,0 +1,93 @@ +Copyright 2010, 2012 Adobe Systems Incorporated (http://www.adobe.com/), with Reserved Font Name 'Source'. All Rights Reserved. Source is a trademark of Adobe Systems Incorporated in the United States and/or other countries. + +This Font Software is licensed under the SIL Open Font License, Version 1.1. + +This license is copied below, and is also available with a FAQ at: http://scripts.sil.org/OFL + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. \ No newline at end of file diff --git a/test/www/SourceSansPro/SourceSansPro-Regular.woff b/test/www/SourceSansPro/SourceSansPro-Regular.woff new file mode 100644 index 0000000000000000000000000000000000000000..3e03cc0f9e65aacfcd7d4e1371155c829f007cde GIT binary patch literal 128612 zcmZU)1yGwo8#NlFrAVQ;6)4i81xj!&UfiWP6sNcZ2=49_cWv=f+}#Q85L}8oL6S?q z@4s{ZxnE|_vu979v+wR~X0o%{fRv=907w7;0O`gQfd5>hdVK*P12CT1|GdOR)g%E( zJ0#C<@c%<3X;O`ZnvC?brVaq$z6JnD9^;5!UP?K^}OFV zTVn?R0Gk&8pwI>YxIsz#R8H8RTa;zxV>09lpA>?(2D(#+WO*;D$Q!~G90zK?yi zd={Uz_2)MAGw3jaUh7!ex;)Pb*$)7~tOo!njWSuW^}gGGd(Qhv007|4J!__~%v-f> zjoqKejQl)bz`K7yZ$S36GqyDYASpgS=Y=%@fF;O;RJP?{@9Y9VQkwt(XlelfIV^Et zuDyek*|V1=>Dj0D49)a!Poe)=BV^>*B}p<~Lma_t06NOQxdR|m2^RmYuNL6^@Re8g zD1*;!^yf81`lq`ueKRsOGHO3R6+%H7i1O7$l=EJY`q2#fdA|e{`n){F8*xmORbzkjm7|IbLq0Du23axq~4Cz4N00LiAWX=z_m z(^9qZNK)H@NbgBn05>%{!$f0 zj{FP!Zv1s-I+7(!1d;r6lU=SlTuhtXv=wqM9NAe^Xg@J%82IkBKM0G^qKC)$asoT} zKwyy2ZKiX_g05-%zM*)~*pJR^R#&(Dq(#iQw!(3*pw_TQohhqo@sLHv!PO-DP%a07 z>u+suV~^NqZHuvL%8KS*(uf+88bx1moCf7lumtZqFA;u;wu++>kc}9lS2YchBiacb z&6CnGi+GELFcbbjA*;YHWBr}dwCRTHB;$pbZv)mRu7n|;k~E%eX}1j1bo%$=)8;6b zGuMv*)Ne)LDE)U|!-Z@jPmD+F5(*v`C5x$Q^dMW74hHDla`iHp9ovuQG$JAM##COC zi&3TWOvXe}G|;y>&RBaw(va5Io7>rEanr%aGW?Uczv!VkQ%3cPgvW0VOu(fv^#lB0 z*RO8Blq&if`hZQZvgrzLi)gP{y)kENt;$ci(~PvJfxJ{Fy2J;wX>OuaX>WSk_9>wU z^$Rkpa3*SIs!`@JuI6z7p}l!1bwp=IQlTWrQs6SZbnD3 ztuea-u=lR%?O!j(3RGn?yfPw3Ux5})7&YX955KlTrZV74a{IbJMPuL zTn#`*Y%WyUj$qu>>&!)>saP4Zw>H1u&)y`3k1{it`Z0OwyuNVqa{B08YIYny%2~JJ z8$Zx>ZkWPH3LIR#Q-QW#X3<{Vb`4PX<|MUw5n*OmQR)r~4LU5A>ak&wH*!*GJw)UwmII@Ao`R z=aPHBEj&^f4|7KM8ETlH9&jDh7{pJ@NRY$g{U}JFu2P@e{L&QVB4-furq|guNgV8lrB9HD+fafXBQQxXN8WtefXL=h}&#dY(WTv zP!UHek!0bEU;^>Fl9#{EFsWn+K}>R*Vv%e5+j7|@>&CVyT3tm31}Hr4J{Ti{BQLxO zPAI)kW_^mn9}O;;K(tgizhN^*&)m(##E&>USFwMV7KeMg1 zPmYTlO3*WYp3+8_RJhch8colduYHE4alGe^ZD;%N^a~69x0fOQdw~gIpQyG-sOZ9H z9;)NW#?>~Z)s_(V_*=Q^5LiVCT%|vJPwjZGbnCAkky^>+-yU75hriT(t<0){z(%OW zmk`}~j^Px~`YE^uJQn<(w_-d7`ZyuVO zIIc4Akw(9dgv_^HPSA;d=XS%Up{CNd+$O_N>%*}L(X_BRvZH!nY)#VbS8>p8)u$gP zWBr!)ob?gV_dX|+27NVEh-@AeM`g(EUQNIGcU@q6!`G0Wcl#(PdA;+5ov(5zqpPae z<-%dYv>)=@6cY7pl^!|6pU9)j{Wxs*mg=F1aG58IMfEGopONn|^*Vl5j(y&CuMPE? z4&ze|Z{nYazOv^rAy<7X$g-FEHf?X=vj}-%&;{Qh-{85jjHjUby-U$SpTMt_D6U)D zQ)$hKhTq~C0pA(-Z(;~sI##3iF8F^i8dvEoSiIpA>>_af&=;jOde_&R*>{vO>`bSh zzVqEQBoX9j4*3)^CBLFB*1xFvGSjNnuF6^BJ4+f0;`$o)eV%2$vw~$y45e!6y zrWl$wQ^L>JPbt2tyO762@-2NPy`xirzLLzZ)!L-f@VLR~SDJ}Fb) zN-HfTt7+yQ-b^n19Mc^gSLHeDtT1QJ<)-=Ol=~K&Un8+@51k7)JPWobgFWkvO<^zYfX)-tz|(jZ043>uNj93>O^HYNUD{JWFG^D_S8 zcKlGhjzadB>;p4a#nK+F*)+|~l($m{QzDKQyXQh%TXMrIeDniszYYz; zxIN?lLR>tWbY0il7ZmP5w2j_1KyS6pAM%ex$-RcX9 zk?8rHmirg&-#@_*z8>Am?RP3ZLTnb6q|!!pInk)N=8n4Oe2%}#8g(~#jp{s?!uxm; zIiyc|qAkLkPD6n@BpcJTZ7e~mY)Ww-y!7xdL`h%pA$Xu;^dZ_Ytpsg`-LRF>wQ`fH zd1^>7X?4t__|Ym#VcBFPd3;Hy-2#?wDIz$rXViLI%*BKHQ79DM=a0yH|JV3lSld1TBq)qhl%^TjVfQKJA!f zsRP?eQ}5X;1ogqELD|7%pW-j~&TB<6&`?n7P!jNmMJ_owc$>o@Z8`R7ziV+{obloh z!^;2;hEOCK`G9r<>(x(jcIoFhW35X1=?{0V%WB^I1Bt8_A(!6*91~K0t6T(RtM=)a zVT8m{#<0*Ahnw-4)mC?@2>*(mmc_PzeZijcUhfVFqt%M)zw2yslt6gp%;s*Z)G5*a%xh?OI9Tv zdtHyaCNw%f1&~^0k379 z=rjUX(oR@F^#TJ~hdRxgCwB7#_7~(&=JSw`U9N=jB|$emB~+i$rbJ!XHF6`=!?E** zT^OFCu?v{glYgnW{t^wH##KMccHCOk?pPIySI_+%uR5%fZLRu|DQ`(VG^Vhily$a8 zI5zKo#*b{OW+p7AVCw*tKc1|`VwLwcldbPMN4{k0y$hj`B)%o#agpx?)t^|n>243N z(|XdS7Y5Is8qB3VqH2fLivrp?f5|{ORNxT>?ozs7gZ;EiAV2BHzz*tBF`8 ziKV2`C5v7ys;nWaPan***y58-+}WioK+d`&40oM%Q0nX8jt{&sv` z-(+hH`JHuiTpxREK~*2SwBgp8WoNN$<`%4PHotW37PxB3vwY0zh}INQ8Bw-D)`+jK z1`0l0=Wk{`apS?u{xqooa$fan82sp5w(?TzZ@UAui7FDpVE5Ha)bVhWyU#XqnKnrJc(0*F({x8LbelQLS;RA64-=Ex8FS$QrL~*;c??EzD5cj_U$|>~#H861rSTZ; z?3fq9M!(mhGEDwa8B7?>KX0a52eQwe}rei z$xg!$sNP!L*=b2K=#R~Ie9NG|<$ROojnI=Eh{clO9c8SebQ7M|$gv?@4hGpVd~^Ij zFbY3ZyHSAh6g|dYgpPzJiKq*gdYQw@FH%MxlAyY4RgcLR9y^%B#6Q^X5y_cs=>hnn z_!I6*2iX*0Zn#nv)R9i*fcT=+Mac>}1uxQt-=|DP7xAR5sWvye*jlAb*~qn+LRcB~ zBcPF8-M-#ct2l^j%RMs*Gn-+})7DouR37H@$n5s>E5A{OnUW~f-Hb??Y!mu4+r;20eqP0OD8^{>RnGNT{_;KDj>^7rp^$E7>)q{(r ze=4f$op_onD>GVVuRpI`u|6(S1Vh^pt`?;W-oK?mjVS$a@@cfx^Ga1!lJl+OSjApT`fkJWm6M2e zBCQE$S^0nNcjwPZ&J(*bHy6B`*X8sZP~@IB#^ z9nWI4Y=Fox$SwA+;c*#GF;B%`iteIN8z9^AhQ9(OX=zrO{??Ri&tkuR4};%AP~j|R zlI6ZJ*G+Sh_zF`5nX7@=^F(P0O-Ktpg7x!sc)ks`0)2!XE~h?mY4c(3zTFvlBah2C z!=!6zK$W-+SBVq<3x78xtwOmb4E=tM1B^<=6lX5$5w21pVm10onXD!v*A2YC{ntNf z_euq*Sup8~k_xG7t-FA{6S~I}g5k zWhfErNbZ@WJFVQFDs{GVh1yV10<-o^5OA=#k0zd$XpcA8G`K>B(lNyoIT-5nK3P)V zmb`xiv<(GXlHwE>J-%xjh@EVCWbp2#wR|rknsbr(Cp{;h>yfi!$HEe*RLGGnYIyPe zJ_0^|nfrq1^X=Fz@BrI0?KJn}BXU-M$jKIPU-Cru(4D1X&*A{+6T^LWdBqo7FsGMh zw}o#h43%qe5-009KA;f}TH6fW_of`SzW}!eh-@UcMu_apwua1K@EbtLqjqj#z_op< zEAgi zzWb^E${bk=#Lg8><9haXem~mK`S;8jvUGE;S~4h$OAgHLQs<3Mytv5Mh)~w|2U?` zM$fxtj_dP#+gG!fX##T;_B_q_M;}1>t4CzZA5Z97X1QvX_0&r9%-uo-7JoGFw&zf- zquqD;g!#_k+{UVr!^!oBLe&I>1MD_l&SWSRwlt!zj*VHq%2C3(e8CyTmbc->C^Vij z`K3KT%2AhWOlu0b65oHpb;Sb8PxB&g>qpslrTh{J6ZQ-|Eotz0)z*VEjV2f+yuI-! zv1F1pTd@W9{yu$gBDOWoXLG)hQADw%wutCxAB!~~xH$bab7HZTD(m?KsmTjaw~g|X zkV<0jyvs#cE7zupTYtcH-%~ijZoOb%s#1=}QRwfm^z@h))+)qe3dM^^VKc*u16081 zg{iQkYefbsIamoacTh_20Zr+(M;dIj9B7<~U*1tJ4Q^TCE9F)^(%5dv{K=x9#?BTi z5=_21lfMtyn`(H(@E)j2w;yfT6}SXlw!ylvKH+2xj4A_1v3Oz&d|`c$*3oryi!_I} z0S3E#r7P&>`5s-ZmLC?Mj*)JRbdfL`@Hp+vfQ#~i)5?bb|`choLfg zCc|dRrECpt<`yrHV9K-PqkHBBi>BNKu}juf)wW}9wLMAcS>`E>z?Lz}%L3R?ww+SV z$5BXq5h;2!Jj`RJyjsW>XL)4J=3yE0J2N?kNrt<{%_%D+w{%yJSUjs#2WT)U zI4`2ww-0hw^$-l_0{zn6*Seead40ck4R>}K>G&YoFN3g&h*FX&DBdWcQ={j;%^7AO zZl>t-;}kC@=j&UI})*S2B8W{R_B^oj8D+uVUIMc`BDOFJsRqvLvD5cI*Y(eG2} z)loV>#F$P&ev#}NwMp5hW9SGnvCVDVs}V!W$4(HSVE)7Qm%6D1vo;dhfI!Q+FA`5! z@;sv^`&Xk++Ai7zs>FrCu?v&LG2t!N9CieG>@`zS?tP`^qgy!z;iPwI--}%QSF3dK zmV7K}NE?iphs(&Lbl6FsrIjMVpu*JabR1ucu+3>v{J&V+?r9rF9XlbBr!X zbNN_zB-Rc{VoCuzJ)eRiU8i3#v}-S*6=Tw()Sv7XfYl%;b6lZe(WgDHDG<@=i!vy05Jx|iN5hAo)bvi&y7^3P4umF#=DP z<=P3UZ{=?+N}Z{vh;3-9kHOE_W%jRUI!?uD?@ULF(;-MzrHHf z^@u^YaD zN*$tJH9842s>ka=Qp~Q#ZakWHLG3i+Ud0tO*8nnugPh}ztX*%rob%815NsVZI$uJP zq^!u9Ycp*D^DrE}f;TSMpka4*fr4=zD!N<3HxCA7U!K+vIeOdYnN@l2LZWaN7gtNU z3LIDi7HZ09Tv5^ualx)?mRxhX9Lk0hm;||8+AS7gt6+vdL^hBp3y$ThspbF!>9kT< zb6o8R2l!R#)4mrbfpvctsYy#qlGszDF5^tNFlp(|zBtC0iqF#JEQ3c&JZ0~nIFwI4 zK8I}g8b{0|cY7dRZ3gS8meM=vZxKwA?t_v9{!|iJkNh~&d2!xj77r)4^L znZw{hHJ40^XHiBlsr_gbvS3|D!<9X6`kDDcNAj;w)rcSV_I1RJ4;<4HWi2<1XdME~ z1$z{TT_7?zOrZh<3B1f>aZ9SjaSN`XknP`Wgp(SN8X*f?^ufKcKI3sKune)%`A2X_ z?-Uh=OeP}Df64q8BkHQzFXpIBD{F=;;kh0{DIZ`oVTdNsf+6Uwu?}+-FBdU$ls0gX zRLX?%-15z#)F$cu=sUNu*VZD=1vGn>%}h=)FCD+x&DH|LaA<{*S54PDq`U~y2Ro^v z@2Fkk{Bg*JNGHUlZr;IfX*Ks%fMl_GTBC`iP8Kl6V6)h7gf(Rznz#>XdxRl&z%w0?jCKsj$r#DxAQQq+fYLixFl2TH=_aUBSK3won+D$&T$+$O zr_<{n>?W&h`0*+}7%sCuP#=?!o4rU&n3k!#sHC4&wOl}$)}p&lhPj%MtGT$9jOsc# zT*p1n*lL?c7ls7>k&ydiK~Xk2(~i3B}^KIvdkt9zwyWFji5;KPp!dW!gF?W zcxf`){ews-Ki|Omd0qsLpCCQ9Y zB)_SJmDkc@L~oJgTEiyP344Tq7A%ha8!vLu{|2S+UCuHN;j{2od)wDpWR5T*zKw?U zh-nPdt%9bhs}d3iS&H*tvga|+y;&Y3Eq!tW_h0iHIBZ5v0ejH0?tWY~>{Dmn5pB*= zf6ylsQVVT#3X_a<2ZagIw?C@8`Qqx#L5kleXdacFcX?5%V@*a&xtY*J#bucP* zl^BJnX&`#&^Y=!2!kWaS1{yK|ob&l4+v=M^R0wA{N(Fb5LGKYP7 zaoESzE39n{9<`cMsGVlWXr4JUQQb;gCN=OUU&P9_t25A4m`e#4;cy8g+n1N9F1@u= z30XK+$SMlQX)+^qg4`uy_15eD3=?V6ARW}Qi#CaOUR}bv^Vcm2gEU=}ZW8A(5;ZN@ z4t}oMbYmdm8ca4Hl&_Gl8JxERz4RJ6R_TphB_`dpfih{Xowi_Iai5^|4L`tB{RK6= zLN;-w`}P=|Zfi(jH6-4l(rq8xKc9yUY(^5q>Zz>goQqf2s|engZ;lYgwyI%4*+QV; zJ2OXcUk`EQ028IR=s9m6Ee-*js^BAsd+=F1wMrol4jN-nD>1faVG1@OK^l2TM8wr> zUWC}hPTnt?Hp?%BVl2U#G*70bMQ=F2FsKxUV!09qWMf|w98inX20LJH@Jim-IJAll zl5e0&de%DRiw$<<)zGwQ^2$(WYFOrfffA-O1-WC75gc@NGh$F@_xy~wGTPt_R&MDz zh`9Qe7c4eGzk&77S}Yc}=kVj7RhN2!F|**=IS*)Oz6^4^$mM5&W3eTq_jCG?r3qB?T}KVp=ln+tFOv1F_;CX@o#aEF8X_3M6gaPKSA_>#tgL$4cOgVzIlwcmh07^_b!nCYlGYnC* zkOqRZg5UqIJB*5FpAMDH|}mdG-5QPTRLI|{ECX1 zqvI7bK@$$Hu!`vqTumk?C7NONypoFsPHVFIuAbIJU^oiJ zksKEV7jCysg-a%quSm8)D;C+iTnCK-`3cmWMxR~3>ZqUK!}WPvgciUWev5qIpZk%< zT3y2SH*aKEGeJ>~xNz+LK>n3y*m0OAQPF^Sc2p@JZe5QUL~{S>u63M@=C4%mqHd;S zP?dCMO)}8Wu>UJRTiD*7j4IFSaNmxISux024gWK)`(Ct6M{C zqF*_PMbloUy3bD+6UWSNCYNC-!^ zTs^$3k*_JGaBQG~_C*cS;?~%0XT~+qJWdXJ_*M)aG08s4DItkOLK!(4!bBJ}O?IUF z#BK+22rzAleN{|9;Q4Bp-r)Al$2&)Dza1h5yS^ksD4PlsBGgTV@opK391}jsB8w<8 zGfzQ_d7%VP{(=3nIBJFS3S|t~@Qh6_we6RocVBE6PDIQ1@l_AL5az^@|0A!CYEIXl&614~Jo}NZ|!P>;%b4qWSar;0wkJ2_`6WoNLXd=!tS) z51X?FL1^uWhQ?ci967?!+o2u81B7!OA&wzrR!i`&U1i-SE`)C;H1n!HZ27Hc`rF5) z9xdm=a6Z^L`lcX{#QB5}-}b`W$MFL5z35F`3y&)IUhVe$Og3L$pJ2R4& zxNq;_E#yh;E{8$zwvX`A>}iGN9NgYJ?S>8EZ7<=a>8E_tuXOMA7>EvshH=loJ$BbBw{N`)g-uF* zfLR{LvsJ*ju7{((hm+(cPS3(N_o_Dc@pZDBWac5u&C?d-eZz)35dh#fd$aqJew>hE zFZ-L|0bZ8vmtTkyJ~9(9SMC2)<&9TP|I8rxT4btH;s*PRm8G7;k3670Ylu-obp1j< z@N{hdvKHUZ25;N;dDn%Rc=sT`Ugi4^4R+Bg^Dc8v<5Z^gH?Q;e^4FlLgLG3Bk(ZJD zf89Hxo99mLb%!IGE{urJHSt~Y_AVJom{cg1DK;sbe}^ZIWroQwumwHI8+Ed=Wwl5p zwp#Uw=XNnO2{CjHj*}7kqe$XL?aRse)8P!d>H3ZDVhw z>`*b5xh`@Xzl)H=1Du zgw5&H5ryig=SFe#A>+|mngrzL^UhA?8!%G`eL|4|yhmr6L4WJ`%kp95=@jnhk^STa z8*jPQv8if*V&q3A?%dLBi)))n`= z^RumufkU8A<+?Y>b#>NNYhGXfzXVj&%si|Avl5L8eAXIDdez7lgepY0Pc4dr?j^G> zhir&It*%}zYvVSkyygFQYxg550N0l8)KRDN-(1DQVhsK z6+m~xJEB{VsZKPe?@`?K;D980WRH%RX478^rtJ+0D%H?3x={zi3GUVQmGVT2J})#8 zq%yLr871I*p652S9V$56r-P?gGIoVIZ#QI^lvF(uh7;8diZ3`ce11Ku!+u_f>m2e+M50Gge3^;GOX|R}Zu(C^r^i?PkSWib=D@LG+C4M_E{0j8`xYBi z%^l8qw&@%LQs>tjL$pxF%yOHsI8*$0IpRW5bSp2}NA!M=zW?8_QWdy@`L7&JzN@9A zJJoRyJRp~c8r}cCPKf5wWn1(dnv<(H_>KtLA)T@f5Ok(_*U|rdxm-GCgI_0mCD%PB?U(Z zmJi%Z?a}r21*Oi$`ipAkH$-fy^ZlL$!z$=RZ2<6r+e~({|W2^ zoo`VtwcLzYj<<|r1BI|}co+Ud)+nQR8qRNwT7^jLarzI<0>F0vr#xk@XJ_Q5pnImR zBmB^_=kayBS>=CYCLVRu3H}QY$yMBjw(Uz^bujD8+1;`+t&}Re-_1jRKa^#Z|07rO z#TFbwJQF;@v1)g`eb|aMfoh{h5v20x-&6nk!~>^^l=f+|6hb>vl(|jy3wxJ zmA2Aq^8?qkevaJ-o{X`NcRsd04fn0HK93>99evI%i)-Wa0{hJWv$#DwH`u%Fx)Ya6?RlzvnryX5UzR7qx$}Cn8~ErGR{WK7v|A*jp6?D(nA5Z? zIA1y5^T{yh^5Clx9P_$yaFK==r^i=&+=MUEN?-O+wf$o)@yOALQ|60y5fd%SyiMEg{&@%vE?w_TOJ*rl4;am*~@3y0UE1N-h#(y<$Qa)!9j`N>AbHGZK=V415+ z`81Tjt-N5v(Oc+5*j(CBj3a9BSfC+`|;2fmKGL`KjEbsjoW1 zIJuL_Ujw-;CdI9E;I=QeH^vKy71o-!;oBO*8fex!Y`OwU!;e_h{IK?A#P(67Srzl>B@PYTDCo zqF@gFdXlDQH{Yf=0E_7CU#+o?aq5QC-L zsaoOzgXY_*-}5lxr{kU)oPJ@xhpPr0h%oQN_VF}SSm&36M%S+?LqZ{qyI<=X2UQWp zOqm+&Wmj4XATIq`_p)m(1u&QGY~w%T%jG?LXLB~cUe#q7*zwZ$HJt2`>%T&uVPpr9 z??<@KW8Iz2`TSvK{5!;eA)WC8k<*S{n76dWgKV14FE+VLEGmKJAC(q zX2l=2mwOpFj>9jq;G}pFWnqo87xtdNh1amTGxWJX10`_ie^3JsupMg2)8=PCV zAR8aZ4Qekmv9RdiDbS8Vo~x;(WJ@~z0J^0<6`+OaXq!|B@twV(Bl zd=PMlZo#wrPj}!WUcR||XaW}~tyH611VSPgkJ6V2nOKp74JcTQpbam7!Iqle_IsF) zE8&2+%l$`c{sQ|jpE6Y%S7D`?{XEEN~l%$ zEq185iwfJPFWcxkY@Qz_C}v$+MLS#FQ~i9004kLEiq--YuP2NC7`j=6wTeq;U9a*9 zN$8)ssw}_Ax!o+a0msuZ^>w|`$3{ea?|j zPg_Smh~=^7tpCD{Md90VulD1X9(m|D!I<;MRHMBQz375Id(zJZ|4d$81ouRunSL`h z%w`j_8z%7}ERzLAOwzS*hQ}smDyWLcKw*DdF(qK0BLi9X7LU8JA0C9$`pK`jf(O)$ zl)41^>KGkLrZyV9Txi)!&dt-oX6cIxfqc<78J5j5s|uc3c9hdQ3IifpRMXc^we9xY zDH&r=<~nwo&XG;g<^GBu*l2{mi)m_Nj#9QX6!X>YM= z8@L4*Yagg7B_lCInj@ED09;A;!7EiJkuSWa1GN8^zqj}%3Tlu^)3Lt!c#wVxWdibgW ziTm|PoQ+2>`KorNuRW@Fhtkk&D9d5ht%eeps~wlKqbUN0CtgjLJLCT)nA@yzEuT-2 zf%=`NFLr--W)h_?Be$`rHz==)xnjs~cUF-7Jb zGr}J)-)ir!ech$hHpfY6Li@28XqJsMGG^t0BiiFc_G7v_Gh~O8rNo%;^@tTiZk}HV zG8u*-8|IO?zlEH?H^bQ|vx5k6rqqSAB2D0p%I!BzXRx*-G3)&F(2s2%*)=+ zGd;8nua$E^Gn@+(g*S$f(>A+R}9871=CacP|{r`}i z5uNt(SsPr#h&$EZ6qQERs4f}*4_^PeJfBZ_Hg#W_$sK@#J~d@DSM}! z-+}j_huji0PQN3Fj*wZ(NqQ(eEV__8ZUeQICWXRBVu$sZoh$yc=cqe8(5pIOOy@o` zMNxVVv{XD7w^mPrV;L6i2rQ)>|8o`!$W%@ExI%SK&v~YYa24DG2wr2!ZUAMB*#a}i z-0W-b$NusN_=-Z=&h{nYZKWsg;jN}G*+#t6vbBy5n6IAtz8m)4{_^OsUh~}g z^#oSVheDrJgpRKt?fq7bq+YjLvM)b>&)yXJORpj2zf48jzZMYT|8hv}eAOc4xm?$9 z{fHeM>PX?{mI{~Ji@vws)-7l!TiuKPIPWo2+8`w`UD)xVo%1|Dd|u(+dP*y?J$;6= z%XX>?da61s}WG z;khSC`a+UDvF7Imi%(xpWAC5P;Yy7NZ>HYvt~ZepVk~pay^3 zbwC6;p$loY!L_vzB6{(ow>f)nv1^=X>zm&9j@z*9hAhB5O!62A$osP2*a&=<$FFQy zrTg_F%FTLd<2xu&d0Ej%0Cs$)?*}omxsDeDxU)1|m(1W)Dpuy@v#f^Nojc7BJK_4er^ZSzZ*eqJcE-f6K`$Kp3f z;jPSpu9z+9w~xHu1GcyhPa&~=llV}bea7rH_w4>lUP|BAba$?Emw^sO%dmOf)~{~% zw9OcqtD(W#IL=2ZjG6Bnv)MH#vT{4JU2cPxr?K$$Z|&a5xd_E~gtI4(z7OAfz7Fk3 zKb`%ZN_D+>y-k)%YnAb8F0$VMezN0fUwiPnil=q0{WkAsY^^Z6+I6D!+)oEJ$D+S= zRgdkD`(;(_PE+f}8()~;I8E&<6?__#f0&$!h5NMMo>JdU=2$#s74;~V&{Amf!(D(% zCDd7H2N%G*w2e^#85W@K;Lwa#F~zwLUdz(s%Y9eBCc|$b^XsHvmOnq4Ehe+v4!!f% zE6cGtzNqtRj+r|gg*BgweXoXmhqmSPRyG*UcMzF~j~a(jhFo|s#2D{p2J(bvZ?K14 z8aJ+z852wG(-Qlz#!3&9di+Jis@%A!$07jKxke%X&b3C{Kz?-6t|Du*i6C>3xto}h zq7dI{Z*(nR=<@QaTyt3AG$Sq2@X$LXWPDR&cEdn+60B}NGbAF6`Yw{F>Q6_;?C&s1 zzhQ}mS$1i?T0N>#)dHQ4W}EsVVE%Ruw?Ls)jjCU3;OoCH6bC3ac-zMj)Fm78naPKH zdMl(S#xWT}SiVV*u?}x7>?!h||8Sl?T^A$RZN+!CQjm!RA6k3}U4LCK&5PN8L;xlb zR%mvrW+rZ9!r{%ovCK!6V0MT?`GkeVD8T+ox-;>Zx6!($*p_9Li~TzBrz{-X;qGP` zCL##hIn%coUwJ{KwBpbcJ~e%earbvxB|yUpvrVbrk~^?Om5 zjqHZHfP2PJ5}0$f@iP5jwkNac>XjFrd!-;iRWc6m!H@7&zNm{j1x+LO3RR6&MLhfr zUxZ5JY$m)U25{LoRu&RcX>B0*#On)bvN4)A8e#RbjqIuCYXqdM$DGLMq9MO6{6zEE z>!0!N2j!0EI#f~Wo5+9&nxi|RpF$usPzyaw)Kin0dTnQhT#tI)>E@hoy_EBBohf$X zLf?!3hpn#)tD_6H4DJ$wI|O%k4GzKG-Cctd+}+*XB{&@1-5n0@9Nb~}@11X+=DE9H z_Fh%BYS-GU{q$Gy!;zE3Q+JhzGt33M{x!9GzNo^;;q%_neB^xWYuFj&s#@!1QZpv; ze}QsL;W_hyF;+er>0LhtLdW)qdutky8tEjWBa4i?&ay!hrD&`h|lLerBf?y}pLufr(97(lM=PDNXWyuR~oM zfFXw0?^8QoW_9EEN5E1DBf})J`sc9O`n0%nkeWAC?ELOHcBur(XwfWlGV0>D%hCQU zH@s-HqIHf8=7+K_D=eV=b$~2W-M_^TTr#cK(jLc4Tm}2jA0CX4a8G(jI^|wn>Ve;o zJQ;l{yq73UN&g~T@xg3C0_^vk7y~b39X$EGf;1{{z~e$(R|L390gmIKGB1Uy!%-M zT$*F3AR#LnJM_(3(xQqJcU+VVgi!y>u2 z=UiA^*aSGd+J4E})6L&IkpyT*2)1uEg&`rO81E#hX7n_;cn=00Pu}KL`U*~u=?H|Vs#eu4CB?M%Tc(t7fXlL?A1fx zG=IO!8#gjP5pjVX&6qxq-(K1H;oEfm&};e(YXLT{u^GSbBHOT(o!^iO}{Q@J2CEVDJoOj4$rw9Hdj(+^my-@MsT%chP_ zzR2_l!Ry1OTbTxr%lcY3Z%h(a;w{#{A%-j|GBZ^Dw67y$!w{GAy`WnM`3gycFE0j4 zQSLgS7=vPb;PD z6i0`d7u$|$b`sC(#_jB_rse!ncP~W+{9urf3SNYJ6(DW!(n;ZkkP?9cqqz{RkQ#6Y zyOi&-eVr;L#K(bj%_F4|xa84DX_{=?Re7WzNWM1JkO-B=!QDf^>on2Z>@PPeGYkA~Lt)&&=QCt>+2<@dnG-^P7tX$aPNxTF)(zNR z=nMe@on%CZLU6vR5x<|X&KsUbB}f#%EsK;g6Ts&A8%;7$OU20RbhX#ld$K!pU4=~g z)!<`CR?GWgu7$`i;Zf{0tb&1}hDGNXU2@JPlyP=LKYozwlWf6? zS3=1zoH3Qq1AnvTWRye0`62ZXG4?St_YhVr`n35$Lt>AFfjAaaMV$yT42}3BnnJEV zA)dAbZLVdUosS4fr}-g0gue?c(+aA`5*BU;+I2mpdvZm^*p9)(Jr(>&lVoAiYA~hiSLM2LHN=3=_kAO@kL7OU zSk|nQ9d-At^xxoR*?Gz>31E!ioe?#f-wl$B7oBGLxU~0ce%}eqv7%DB=L$Tj^XAN`TODYhblEx5z)NWK#FMF`*b=8b73w&2GUhZ#sSVyHMlhs%e zpN~K0d$);|b}J!t#~4!gbjRq;=th-U%Et{lh}(*@0&CiCh_padmR!9G?3{Xku79`p zsvXUSH%$$QUkUyxv1GpUTlY^Sy`xPdjS3xt@)^weFM-1duF#G2%9!R)SFW`52=Ofo zmr$i&95F9#V6V@-AC6S%i5rtyp0b&4&TJCPG1ey)sjyMayIt_kp?`UoBXM~1P9wu= zn>akIAzDhIsoZp+7goPiYHO8&zipTcn19=XX8--RH0;5{)5Aej{ZZ2m60$K7V6h8_ zrhVJX6~qt1eVy%H3TEA{@-xVf%b|HLaRUbjHj1rm!|b%WT~5j#t!6?rbHXroab7Xn zM~9DwLloacF`m&t6$V=NX5&T;g#@{~Y@%iIar3x2(O~|-MUDlqWKK>YJ_SyhF+~g& zLasj&a1qK$l5!BbIAyxAZeH$zsj5i(;Nhca!=-0%RW&EbwL1Jc2aWY}%;|ZX79}Rg z3C;DRZ)l9M%AeM}J{zlt_tUQ0&=zb4-7>VEM@NVBiR2rwpX4-dxZaM8mb;I%Jg>C% z<_no|;9A2#e)jx+00nDI>^MG2a3PPZHGY~#LGIek#jGeMG)av%{4n`JJ6EqPuJt?V z*v7#H{~y`uUocn*n4!J!`hPZ#jy*6>5B=>T&bwiP*qV5_L^sI^devfCe9SzaPSR0P zc3<BRX5g`vg-}$$@Z_@L1!63$ zmPDNGo$xHOfmh(Sb=-5KF1S^2TyzBxjM-GyYFb8yE;@_b$9>9=%K3}Eok04{(;MML zu=NFa-tQo~BFDtcqZkMKq_rbq`$re0)xTvr0a%2;56~7img|e>AZK0a3=_fvf%1u< zdEvKmqz^fx35ZPm74eJ~Hqx*b*}BC>p;Am-Jig==MwWR4%5W*Upp85fy*7z&^{kdm zl#)ui)50HPU?8;e{eK zqB9&BYDQC{jl%Yc&5Dv)_dkB3o2E#ztS~zwx;Yw){H#$?KjOSO*mp33xap59 zELNsm(+5jmtv4xn_vKnG0m^(ve6o25|LgxSKQ*$9ujXDuTbukb9tkl{WdpllZ)0P^ zKU)U#0U>Df`cxdZ0|(9j3%2?`+y1Hu^ja0?7vo@Mn!ipbS`flS5gyDx(bmGOtdwDO zH-;%1OwMuND7qjS&8+ z#xM<-4=rfnOCJGuygD*m+2LAgA1VJ5$`g$XDJhLvB{j^=X?>+cdfSaK-jJK;k=8w4 zb95#{zGWK4w|?LGawxFT2serusXDT8*)!U^6E#+pO`!VesN)z`NXBu(kbo5+<5H)$ z*H0k&dfcsJnIEMxXk)`OWbdu1gx$Y)ZGrISz!VoUwySW4!D=+}XGcVc(K4zYRtYCw zKn-fU*I6Rz_4o5%%a(uYEnYl0VMyXKIDr_xQZgxsMIxUZN=RXtzf)ihc+!(kOfX9l zPclXb2k#oJe&FD%^5D1!ac zK<)sPpBWNsQ9i`D8hIojrmM0mEU1X22K^DhL$|>!W#_vHw%&E9pKZ)rRMWZ`u8)SQ z3FS59h2D3YA*i!N!9&aAAY-(PPCfOHb+UXSFcLvi;V4q!{E;9;Cuwd?Iq=(rN1uVW z-?FqeG@O>ppe!~7AUJvM&t;o!%-*|cGxe>)j|4e5;zKd zt{1wvvKNzLoUf(T<2?fL%08}-wB8ikfx(Oxt3`C)4I%8UEYD5Vke?{F&?4(X6I!J# ze2;2Zc3qE-4k^0%E>%Hzp{;R}-gP@=(adR5&n<%~@5YAgsomajm1Fl=!SpS-s5ff8 z1#$gR6(quCm>!Ll02fu&XPW9?*>BV(?p*g{XEC7wixy3k<$+(rJn>)-Pv{(h9Z z+CU0@soYD#jv0o9j3MZR7yNw#~{tXH2y{(-w=qQlj|K}Rr~Xv6-pg4z)1a^^!yCs4D`;d0 zT*v%OG?Qm6xE$&I(|I-GU0W-^epdgRz(&v~m~}7cQ}=pYU;k{XLx&rv#W%%E&Nl_t zs=pdJf4PJ<>!v=}ac)t<^iZ*cJ?t+owJ9(O_3(Gl%q642wetB2MaSf!&tvDDyXhl+ zOVSrqCC52>CJyfiDtz#hI5eIOhCSwgtaPvZdnks@@o-U>o&7*HPxwGJV;Bog-$!JkOfk{$a=d$(XJumngC^I{thzO566UQ=;qjR*&y6~4soY92KoCgg6rpTnrvSn6b)Zpq$ll6 zTY>9}IGuN`EB4a zo4A^h-qEZqe0?CkJ|H5jVJ^$Q#Lh1KhE(~H<3ep~!4U~$5G*4w><~p_tVz~|p$Klk z)8~hJAMF^*wU{I1_&w;qCs*M!ks*XeHbW?IGcNtlvgIH1!-CPeFge@1LjfP6pCr z=$X4m@2*_IZQJKPs>2~K>maqv3oUEm)VePClIH|+SqZW%FbL~RziW9ixWl)sOL{ox z(dH-soe||LL8>7wD(?P3B#cW#cfDXnW^bY3WgNXkht^>a_{Vw4*Id%~;s1*w%rDgK z0Q&h>Bt2Mrv98})d=qy+at*d@iaIr)-(s2HI81qQHkE?xl)T~r!*Yagh&82Q=e2Xd zEt1?x0eEf-oiy$~LeFFFrg+w!MPquB%fO`!e~%*^Pze%|8u9p7Zh6fPe-edm5Oetk z>b^6eo)Mt+D6l+N%%xwra)R|4wBL7L9rZm;AL0#wqudXGYSf**8rB4CLwef?P+s$$ z=HDJ;zUml_ zY;3&|ZA0>r!#defJLHVkepZ)94VT62;}90|;1^PuZNTl8lU$sXX~tb#Y;1NOJelmz zQIBd*sXLr%t5R+d<5ZjFZd+Y}vNFRC$)>pjYqnJhSx<-9J*fr?e$4~bJ!hHqlzWYh zON?2E-DRO_*;%tYoRgNHRNUcqKamHuAO((WS19Fn^d`%{bTQuS@l;KF#~tZF zMBCdUao^GZHP?S0YyRWEqXI$p{_#b2 z1e=fEv5fE|*k$Kyfz2s?k|(|#?u_3-ipULYg_~9kI6CplC)@eJtpy8MR=LtOb&uQ< zME-o?IrN7lDtcOzOZGyK#pYZ0l#B*q(!ZjUECC=Z5%@%MQmKMzEx^_nXITT|P|dPev?ug8NG zJKKi+%Qp)3s_@J=Wm1t`59;@+Te`?!887DebZdMH^iQ~J`gYna&#~|+8*_a zk0tGI5fXJ2?ElBlMA$D&BXol3m4MA_PWrGSt$g&043b=UQGK%PD z=YEQ{Z$S>P=?iEAUMiymH$p7U3i;lhpuXTI+XqbB2zfOs^yySenDqt|9G1&voz5v7 zF#ey=4QDj;jt6QE)&3d@O#o^e2s`>^1KFYcl(+Pu5Ns}~uJH%fRm`%6F3w9YbPO9r z!zoq%H|)PY!q78t7YX+I560;_2OZ%#`)f-`Rysd@s{%8VwGQ=2*^kABp*!hAay ztajZlynmvl7psChviPqP2h4s7;0gBJBWE`hi&@jpkiPdS)*w+WY!pO1eH^N_=g;33 zGG}K!VCHjP+ab#)W0z`1JzTy*aul23d|gqcLUAtYRUTlSTDv~7`RUh_yHjmm^uBb1 z#JTM)0_>r;e%y>z9mUylU$$)lgg5l7?1oh>%fP5JKN7LZ_ zYzCIkOWsXSN{;aWCM47zIIm~45b2_2+q+D?vO_%#yCPpopk3(XpDoqWc0=>2_EBxG zFg^hWOhN}>E4&-s)UmM!p6yiG=~*HFF$bE?DNsg`2o73r=eC%sWcVojSD=y8&=SXZ zG)9iN-r+AEg{o|i3*(QXoqI*CpOsu-fV^M@hCxm6`d``LE7SH*fJAz>Ft&}jJmtQC z{E$^~`ax4?OmIz=^=G-qBPoR&4ylj}5bF}>6qhF(0lBjh{#vMmzGZlJ%D73kPK>YR z-y&wR7$A>Kgpe9o82(bn58x~EO7v-H_cb{~;;aCcT9HRZjL3nKW zmaFl+PkvF^3sd9wzO>Pyi^Wh>0s~%_yF!UOubAh;w)X);+@&|LN2b7o+p(*im%6Kp zp$FCF-U*=)tGvq{)`HQ!!r{U0<~}@LdCj~Z3)jZ9rcOGI=8Jc2Q8sM*W7r)}FS=(? zr@F$`CdGckX?%%3bkOhH_FihYzLg&w;sN`1Zf4*`pTN3%w+9s88bJG(@m<2R-PEm?eqwzyqm#-=p#S zp%$y*=e3Gf^IdBJST7{$d}{6aLu)P%Pfk5AbXUT4=+ozCxfyJ8yoaQ#d+YdjjsZOK z2(1sY^e!^1Br7rK4zeWGF5-stPoKtO!K~YXVH7o$Yp_|HRf`!!;S;=xkeB-ll!Dg3 zQ|@58d@=`2maG{^@~#ukBre40NgeJPreMq z9a5_LAMXhGq5tPC>)Sugx2pfgNx=K@{x23k9(DOX%XJf9p-vgQK9xdHDsmb}Ky)i?d31I&Rf;SooYp)xXnRH=HbQWoq%U zGW%ZJfPbs2=JzRR5QP1uzUjWnZa|#!I*@C-0j4_K-%@?*iNyJ?#}{^SF@1f@HI;tC z?1ItkcbdQt=;_FM7AV!M{q*HoIJxO`k?~tf_tEyq~nUUd0$wUad*awbePJ zd*iNa5*&s57J$)jPKb(j&CF37V*TN*)T?WIMk3j=KKt(ZBWDt`Ve>s*n6r3R9Rc)G zaUhb_gaU(Nj`U5#Dk11H* z)J(mw|Kq70>&58?+a0=J-OndKM)wqGxg3Puf2Gv*3HR`kaP#h7s|oh`&37<4PrxCO zji}$EIr!1RX-wgw1S|KkAPZZ8cSRg#*YNx;XoIewO@VR(AIa;wEn+`c+teX~oNFq(C8TGh@OSY!FFHos!PTg74oOG9yJs^Fm zjQmv+^-}pBrxD2_c~)jbAlUs#zOHr$ashn%RxoNoNy75L(c4onwKSKcE${(E7(whM z3$>lSq9!IS)H#)<779{@)RSdld`Q2zWY!HB7)6|o3sH)P6wEWoB$fQ`L=nb&ovQu1 z{a{xZhgggiFuPJNZajs%p-(-L!k6)Y<)ohK!f;~ zC>l`>3#o&&FXO<8mBlj;^H{$5hOk#)ACY}8cvpqyvJ9p(X<}PjZ(E1B6K)>&n%JO_ z@3@O4#vNwR8CHVB8CTovAYwziI9{sIUy`+#krw+W`r7t9uIzH;+Qk!m;=`>4GV?SNfY&7oiT&;!7X(p4UmoD75bSY zc9c57jZ4oM>ff3jF$UtO*BhkFu#bByqBJVZf25l@VfQcY#6NiON3mh}E6X+WT>o?m zHH-ZeaJhk%>Ayg~%!V92*wsqJ zT{n1p9Fzs`7XT#3_(1KiM64}X;e)d4`6@krIY8M(=P4Gx!k*mz1|D%!uHIK>0+ToK z!FPFsuil77M~X8Z*g~^DdYnS)(tojNjH4CAfZuVat`zFcF4LTaqkGKsWso277jGs%}r0CjqpD?8QsDsjMO-@|HS!6%y6f~`-cup{= z==IC}gY=_vz!}xvc%!sWhWKe0V606N4n%PHYV;;63uX8q-{M~6TBXTaAvE9E6_kZM zBeFe5er89xH)^cl#3fHrH2_>)Aiq-=&B7%0`e@w!%`80lIv)Q-dRmzdId!lB8x9t_It#H}m@1Clcb`V+nja_eM`TWs zozOIk#E$lf#K!vFZ+4DfdwI6Njy~SvQrJ3WuGxi_a&W+rDB$9B;-BehLmRpFT68qh z9XMag_LkIa+fB<@8~Cyk?4W8NvyAe3cXG89Im5GZA$$3MYbtY{Ugv|!jagjyWg}RJ z??XLYp=D$8Sy;-PMrJfSM~>?(a=Tba^fUow-|@}07U>CK@AoK?x-I^~+IEY-y!7_n zMj!f-)lnq+;fQ-@pj|oSSZ>1}+ZSpd2Yq>~#|QqkuF37!hP;E|=)3lY51Ot*CuM)- zhR@33qjlJog`U)P63Ou9mrd?R)~!(cAo_n)_PP0M)Y}ca%{anw9RqSMZb>6JRj}y3 zXVM*yF;)$;)e&lEiKGeEn#VRkW_XkVD|t}zq;jz+{JzE`9`G9mPcUZrEN|6Uu4-9< zNU@VTg;kTrTtMfWxYqA0J}tcN~jW;wp|Z$ zCEIV{ErRmv_7@Su$y_PZ9yGbhPnsd-Do+rIwUr<*oE&8!!1O5${=bCv70pkoA?p6o zCy{`j7o(ih$Qx(9o)`U`(_qNQosY4nXc`_^M1W>+BqBg{l~6nvJzrj;BgbHywmhe0 z0@QK+$cFmKe7?;+B8cxm`Ko29YdXU+M)ee*<%l@?_AS-FGlcAqP|5`&mVxi{h#y_y z4448YC3=EE-?s3J`L`>tS>zRez$2B7GW1b?(z{_A@9#hM*ex^Y0_j#kXVj^~x!8!y ziFRNEUBc)e9riB7v&5;R!3N~MdzNT^G)aimQ}RbFFyS;Pm&ONN+xCT4(ES;}?yl&Yrf6RD zP=8>`I{qUepga%9bodw@aXowgwgacXBU#9#{$RD{2h*8urh)$uN@|^)|HD5YPb9f@ z9;Y_w*d8>$WZ*j5Q&6Z~D3aJgNAW|1({(^vP|TKstU0p<>>K6|}+$nO6vKV&g z^gZdm#B%wdzqGto&UqVJ8D$(*Ffwtj&7I<0T)i518<6Ui&Dt~^tBoEYOMqVmy3>6> zZZY^r2e5{nfo8yU!Fw7Qs5hkE>Tc&rXk3L(k5>kG(Ul>#qmKum<+DE${QgOlq)Ewi zMQ`|Saz^p11GDp!{Y$3$I(+=jHH0_bfVRllO@Fc$aYXz^F+s~5V=5YcO0uo!+kK0l zW>*zJ!)b%Ou!}rxnvi2(fFJt2iGU~&!)|%C6%TIpa0auToZ2&l&B{Q2l7_l zS*7~LU`}#mtcQ3W$ECwireP8}Zl-6$N%$-paNtd--wOM&#f@@^b1-nn#$ZCfs`u9fiC5T#NI}Ng}8mP8s3w z3;8tps9=UFRPpqq%y~56ZSQtVU01-@I(?4aEg+z~$GlQx5b@gH>B%MnT`vhQ?Zl$I zlXwG-_Fpxl`1nIEQgWdW@YsR(wvAHV$s84f4|Du&Vy+Rt-F8S!&quI@I&3h1#eT*I zqnKrrgALCz#z}hO%G7eEDN?EQ58ncQdE`~o5~}aI>#CH= zl@5GWw!;5c&++f8NuPcoGL~O{a`%U#Kef~$Yvl9f-F*C4^-tB~fVE0MT13FFU`D1l zcCQUT_WnvLPO$z;;*cXO%jsK0`(0Mpr13oPj~|yriB37bp6=_LHvEPeoxP`1wcYd$67#d$M^Ot>&r*OEybsN*LO(dENZ?s~|nlG*8;{`VuA2 z=kimadC}nbyWIS$h|KNEq{H!b-bwP8%Z|1o7DE+C&gWV})fP5qH8z+T7l@0l4g{x)Ij47P%GN-S)=%J zDVpD3pligQ4)hZ@(vA0}y6*MYlWBW}wz7f$;Yk0HiLY0Kc6Xu~Kaw^-`T8>}jpN@+V7eYbL6Hm#kzVjWXV}Pvr6U(rr+azu*|S>(xEQSnW>N`$r3bOaR7 zj*2lIf`K>U@hunRtQ)RoP0D8V%I39!KEdto@ZM2}7YO~2S)Lwkujuo=dA|=s5rIzK z^fB#yR+ejjO;XwXVs6QHl#9N3>!#{>pEmtv^!+ov;O&4!oc_U;g&^E2(Q#VL(z_#| z<#tfqIMdFP62sQ?u5$G={9nSvE&0zQ#l+GeW&60>_L91V{-L1mHKkF0hc7O@C!&46=9!*-IPxr*@-k=d z+*!(#Q0q>cgfvf#d`b1tgN-O@|8E` zNEK>rrbUpxT<9jF3ub?g6n}bz0Koppn3f$SN{(HocUc@gPO<+^@UC|;X7k3O_p2>9 zBbBud=v$bQ|y+Vry5c%S4oN{V-H_<2#yKCHN3(>$#c|<746F!NO?? z3N+oy%r1YD4RIVFnEBV6#O2$x%EL}R^#Xl(^Qy=E?gv3enT9oY5bMY=^dfU$zBroB z%%23H<_hC8fd7*c3V-%p5j#da6Q_k&6D1ttvdXV5U7IL+c$kBJ)?glIU?`*w46tJZ zJ2Eo=YlzUQ!xPaPt+^WJl;d|Kp-?o=aR!)7!r%+#s2p~+7~_{!PTtO(UPgp&kp9o~ zan?KOn@h1x2i~-^kUWsSED)I{DvKDE(c}FiUTBwaS%`@v3B$%`bkfFnAsH9V{4~II z?EDNt-1661;^X#Xm0Gb0Tv6qAK~T)_HJEFTiD~0yqfmEG-V}*L0@l-M`GEe2W_gZA!^M zy2w?+zj^q2V+Ub6N8nG^7{~)=&5&EZtZ-nT(g(w3in9KaY#*jhtu}~tndz9n1@joP zUSFpleqzi6FLhlU&YRoP^+*~2CD&8L*yc$}vvJF?=S%&a9hk5%GGS9RD_1l1=JM;a zViK@LNwbBnq&{8eb-h13dN_00>ugToe>~WvuJT|2TfR7Q{IF7dSiM{cc5TGxruyzF zExH_0mQX@IVqqaAg;<=5=DcZZtxh2a zM7WO?bjPdoHI1zn@%3o{R`d1*(m1XY7<r~M# zi)b;~>i=DHAx2+UPZ!+V%srCD%v{}N^ZlA+V5j{~BcQ;01H^&6stmm@j(_uTG$nLZ z>J27oWW}rn7R(#W8GC5@?>z~hW4$}6Z5ms6=S}&i)#7}_uuKaR;f+TbL27rh5OK>8 zv4ZQcp=C0yZ<}G_879H9Wh13f?mjl>pj*Gov6{w8Wo>Nh2y?k z>;5t*M634*F4;`}E#CNZ)urSZErW#d^hZYKmC|E*zjxtzB9d<@)|HRKE7An*QZzT> z*p1=Yh)2eRzi0BO8i#PaXJ})NZ&yRkkHW&)-nQ`B)gj5klyJo7!r8@NRjPO9^EE1E zf;zb^?jo|isuM+qCdWVvxiVx^K zO56KrV861L zLBM?|KQt7Jj6{%$D$+f%z>~E6BHg^{cgGg?b!`O!w)@7!Y7e~_<%zS(Jhcr^57Wm; zw|qDMK;E>%eZ>+bUm-w|YLqI;0}h@9?5W{|h42umkx?wxAaCZ7_gLsO*Bg0Gc>m#@ z@iZ5;T0nFfWG|Ba;Ig!#P_*tOv)ZiV^UWO^IcE4rVknIWLU&VTMnuehCk)n`*jcjQ zfuKpaT#i+ARvOxmU;hMm2-0YE9O|pDLgMXTMA>{(vSFu?to;S&7r6|-Kc#C>SMvm#>(lIpP*|B6t=mY7sZu+)XS7v?~BQ{4`KtXu|tI&-~R zcQI5tmTh6fKMPbyQrKWpcKxCv6QZX-8>bxnSQ`+P)v5BAZ=Mzl-Dwr`4>|v|rTX)Y zFg8KQyv*1ye?ewu$v=zVY!xHIVw7cZZD5K@=Wbve5G_t$S;mi^I^BuKCHR+xG`L2U z?&UtHHsKfEUtR~3_FX(gNPGcn#gVGW-R>xbrkAV_gLzIS=O>}ImEXm9V&n1u4iAdM zRyeIVQs+(*R{7Q_#idg@mt!WPOm1O*ga^S%q*d^@KC|$a!f?GLs$mtZrU={8jnmyg1^Oi{-_QpF`W)-9ibMEi~Ow^;XhA)qQ zx6OWs6qPJ=rStBE2cR34I|kV{EZ;VE5ppNExZsj4s6wf5z`FLL1g`?!&T-xti9`4U z1xeR64fSs}iaVSt$9?jP(Z7^D87A7E-+i*tjm*yb#-({(*gM=V46zVwQggif3#8kT1n%6!CK5`3(F%1Xn>XHz+fUO$2R>#;g!$5P#uT$<#C0zD7BF$Ii;U z%fcCg8nQw2pU-xzZx9Cf$dO^DQtMTs*P&DDD}!m#QiGA`i){kQOprV2DYtYa*e6Cy zvu{V+^SY&jm1q0AZ&H?4pa&0Zn}%mk0m{eqGdS$oe0 z%tk~+az`9@{p{&UN52f^MeBIqIj2(tXFn9QsMw(N=9dP3^K9!7Q{Yxg{fkfpG&qH(sC9z1_NE} zz3pvJE8|>iwQlj8G5kq1Hc9?2=%Vgoyw_n%1+hL{I;v6C*Y(lZdf7wp8OVcZs1`~x zQK0oNsW8pL1V7Xq=ccbo!CnQWFh4ja3Ce=Pp{3nSMEP3#2JUa=xu61hj*_z#tGd;M z%>?$-2t4&{zce>ppz<8!woaAKsA*+utm@iu$Dac`X4iWKg^Y~r&f~(#^WG}l6EHg+ zZKyW8yV-ry8%SoR!lb|)XRzjfF2+zfC$QAXC3&YDpTk;?)U@ivM(%P< z$*`T>4wJF3 z1&u9`i-aX0yQ%rXo!q!(P!3GlaCf-~{mHIy!!&g|WsQ-HMPjMSvz9BRn_eJ$r!w=< z(=9ov36|vvF+OenqrtYHmNcx;VX;oY(Iy=on6sr>9?F=WP^Kl#cu#uj$whyyos(%< zfl|u+`0rkn_z|k{bngU^q{)1s_!(u3<+c2%D1IWX`WsTKLpK)QYimkWlw6Dn zT7jEXg^L(6Kxjkb)k42azH+v@+P8{vA(DYO^tGIcE{Rd{-FO`a|MI)H)Z1viU@c*c zwMz4p8wjG9?V!vjU||8ov|eKK{jBh=SZz|ARjev?GJ+0k#`m6MvwP`DfPkqw8nHJ0 zBd=~YVptmw>g9F&k%+s&&&1Hj2e=+Ts=PNsg`UpEE#Pa#()ZRO2)=$9=>7RLzNI*< z(QRtN`-dghy&TH!kZ|AyMv@?tL zo2rrB8YeSpes^_4)?&4Zaq=mFt=`0CLta}Q%W17&V-cRXnJTxl{*N39#ghzn_?oq1 z)o!(o`gf}wJ)mBMS2H9nZ4=_T56pXZ|Epj1W#S{EsgL^&PIBqP4hUXM=`R`>4SJol z-slN+p-XCsN_uTUNnvi`cP7G5Vqdn3Z4Ew~v(d4oX3*fq!Myr(`%dM8e%H>q5Q0rZ z87IK>Za*^a%U++3^~HL>lz+naAgP2!VN~lOAza!j z&0#&~yV7DE1|)%v2hBkE5t^y|3jej8o z?#AY}Jmz@{^Oi#{L;W(1NWI&d(=jhC{!E{>b$<7{tiz5u@HIXv7iwoFr-h!y%j^3Y ztR~_anjFNh0Nr};u!_{9t>AN>CqxQ_b<#1y0+k*vw_mX^jYy;~ zUhc9>`tyAn{)0d2rodl9vKPRu20}SH0#>?jitT5cg$kxL>=q)_D2Pg7{WB!K(3Yq^ z)63Y)OHHmnv?wanRpeH!_#S;K3w2`08gSDzV-e{{+;Bk-H`-IesgBY4PJOQbk&iUG z{kGFPS-SI~0|?s~v$q2L-JED~Y6k>;?iD#N9vObZH*{|)uIiPi-?Q+d&rT%y24ZHB zpkG$c0?>c~v$hA8WZe4>QYRewYXLT9ckUP(XPF|xm6SFepxNKWf@(j${zc|T{yq}i zT(^viyH-c0b+$U-PH%irdR8BaHK4|fO4U3N9BF)Sxs_2KP1$f(4Ouz=#P6NL-cedx z)u1mR<|-G1GwNewd+KHiKj_t~64IxanVy)wWYrO$X6tVgG?P7EfUw#JipBU2~-Yq{2XB* z&`#u$2yX7Jh>o>)Va_d9Jrp)k%DYv}Hrml5r777`p;wrB>GERPE16JOCzCBc$I>ON zS#ljKKaFEcQ9ZlH>UmbdsV0~*!(($G%q_;oGX4*o+z=3PNCQQId-r4}H+esqz|a~B_t;$O}QgD3p7ow@G!`Xx^8S0EIOe5@Pa&|6eC zqs=d;w`Nfz= z%D)vuQOjNxr)~wzmjSNgG-EFebCYFxh-9dK;`baEAb-*AIFk-yC{)x-%(1(QZ;@ao z@loB>^io*tt`-t#FXZ1W;SvD3TS% ztY)5NuX%YQwv%K&g#@tThWH>9fl9TfZ&nThnYy+fH0^L-wkFGNjiZ-C`4G>IMhe4~ zy65BwK3>=D?dqlq>Do+?&X-+p#}~i<6G9kE;xVFQUJlaAh&N2?ci57e(cOY>-TlB zPYCuk@yKp#zGf!DLp}p(Q!z*GYrV>9qu-do!+r3koQ|--6ty{AVw-aB_SfS3fe0dK z7e0$A=8$a+aQOQu>oXLm`IHTKet2QwHnMEN9yQ|TUUZTL0blULYdm7{^wIHJ{Jyp% zOPhbg#O6VByn694hz2S-y}T9>=&N|!_Ky)P9I<~OAvkT>g&-8s{*TQH8k|}z;#uwsJPl9Du zsNc}Z*kZ^K&BA--RuifbrAn;TU6D$QFQ?yGA{gcB#ghDp9G}>hiwB8LB_{4Bo9ylv z^+rzCZ6R~RR`kt_Gw&Dd$tJg;Y9!d?L+H-;~0q^EY0x z?0*P-y+NqR5x?o$>$XgW%G={!^!^`O;HE$Q035YXS>y@ungR4R+q|$X3Fv}6&V$$? z(zy(C-yq~LXSdd`!(MK zo$;LrVdka#!wag?nBDw668PX}%Iu&TMouf7fI|j# zwVFdLxsX3k<>I2{n$Jmt;R-KuR_eI`vpId#tUJ&XB$~5qh4eZsEAgO9vH=<%%g}u- z0t;V8UDfERKxI+&35^$bp##I2phYq01Ui z-AL1auW9iNRCh(qpW^>F_P^&R*M_-yT9S$xeix?-i@jx#Z4*fHPHiWgmI z=e_jo@P3a*H_L29tf1#|4-V4c{BaaX)?pRNPh+YRU>y70ft&K4(W#06Uj z{hIXP1T8&&kbJ`#QkCrTRuoA_kZ4~>GD7#q^1u|cHy;Hm$fekC!Qm}C)#p)Or^mk`GYse{8%ca znu2a6Zxs_sZ-)uS8-wpYV^=@faKngONen%2D3E0~DMuaVXO-xdf9}|3)+e)3P~)F? zD5a+p;#B87AzvPUGAYJB9qT+ZmuT_*GkGt451c6NGx@F|ooI1CZDJ&`%yJ>lh*?oz z*H6mlYL!|sIMZ=ej*(YhSy)*I-`7c_3~GO>7Zwl5(`F)uVvC)u{J__eKraWhVNW-u!9tBb zf5fXb9&1Q+52&#Ddn`xk(~8aEznR0+PjmhGpZ&YRBPFO&>~;RqZoZpjG6zI!5pub=lm zBA`EL_eLrxzmMC!(mVEeycs4>_~Bt7Z5;~5*1y+p6+-`C6AxR-9i+;aHWJ72aeuj%8|bw*^pE@l>fnZqpXgF$(a zq?Z2gyrrALGOX>+s%1-=FJc{oiOcY*zbY?z{0LOqz_tf82aY!M&5y}!q>Ga z@-nsDaige6VjZmvTs#@xzr(hBicyb-zp7*ygueA|kx<%CvZ{mANOVM;{sJ1}4efFa zWJ_?AS`VT+xeLy0+|HYn+`SkDeck@+|_d%+3jM>-x?XYFo%fy5x@Fu9~{v zbyoI$*6&LzgR{H7we8L(&L*T-svsXD@QSwf-MQhpUE3QJC`YIYCTtyaj*`O?#=&2@xdx&NC@U0}osqct{m*koGMO$zfxeNimVk6qN_7!?B7VXS z2BLdMgNl~d&BWkfMoAN6rt{|Wey`XD46saFuly&NET;PQD#%IZJoHxGIVJ6Y?1O$#5|3BO zC_Cv!>(@pX;jv$&V-&)6>K#kZML(M z$SmH1+P_lgHH!-#{&A{L$0->z)F@O66&v=d9JvN+AjRT%MY>K! z62mwVnXSg)s5VesMUs1-w1^Ga(Ukk=iqlQan{bVve6QsNukHl7drv98-W}FH$<_*H zc(|J(HGLCP!c9@pKCTil%-m4F=OVF4rB*pi>F3yDl$mgb*^@;F2AB7E)FBiQ-S+Xa z>XxS58oC|*pYGuIKNGr3j-fQK>4hVZ#KLe2bK1gE%~X>^=OL}XwKd6&_h;*wnhkVs zWDwR8{#XSjbI?OW*VE@!$f+5|VMK-YiYWhXC&;S^Wf%&Xl=Y=i=^`7wGr9xz6rN;f z+<1Da#iTFd$nu2^L!b^KUnh+PI?kqKP4Myrt>w;FLNU7fQ>}N@JXBE{#G%xl0%HW7G2~cm8?d zEI-5z_6IYvSanKAOG{1HBJ8^O)hNyK4n8fWV@Pb4fGXZMxXMC>~iXypbiaU}!)BeaG8mIx48OtMSVgDu}8)_S}}PGSHlr zvi3q>mZ@e?OLI+wQ0It)SRliAOLdY-fH34N@<1kXKmeKS)H$oGUE8<J}o&l<~;F^}O%kL-qJ3+RymsbKAWwlB-jw;mq%B6j1Z~pN1P3R)w4H7%oJ`*5h6ph2t)-UGJo@6paLRZnI-CH(; zquVZfV`8@L>bf;BHPGXgX^OCrNom!w6M4DtAv8+ULCrEEF-o5#jYO>4dm>P@!1kJ_ ziK&o8X6D?>G54jm`-Cw}?Im?8V7tEUPDqTM@GCz@s|hg! zs*YQIF-tC=n^zC;#5|C$}9_a~MzRe}#)jVP%h+Bsf zX7g`meHSf38ZmwVrAp)}rrMI|j7bUqcAf*?jxZYYB46>J4$T)K`#ormvC>=m{4MI2 zI_JcM;aBUecoa=deSYuoQxIiDI=;D7dRBk)&vm~7`@#K0*CeXWMQ5^q=fZl4bIR-A zqPBFV1%iB)ym>n6usxq<2%G#N{Z2D;FK4ImyjeOg^a#6(e02%#Gzn^VlJ zD+lJoaO4IlYl}Dnid+Z47YbQLewM#7Cl@8Vuj*5P5lI)kqc#P<^Bi6IZV~Iz9Ze|J zTBIq^1+%4;vWDzY*5~BKha*#@Xr2srZ%*#0@vOBgne;kT5<>R`+`rCy(!KKTwYc?JC;yW3pQ#&X-Q+ zI{5L``@c+O)v~m!rghzB24b$`#%z1MDPk^sxI%28dfqWD@Q_cM<4@8@5bFyA5Fo(9CH;*D!BM$=Dx~!1Q-XqiBaWl!U}=br2L@%4BNyPEUD@&}68`{YNkBYtzk3n}|ULFe& z$mp2V;$NSeQ)hy2goyp8N1`cjdFnKPlb>#QyuhzSsP{$SiJj=Dx_9GyL*dtKh4IJB zvC5f@W9W3mR~czX7yklTKU`W|92(l=W9Ir%OcRr`A4~6QCML8rCY)ucM10Oiy@B&| zKT!UW!|n)ROk)Czla(w0le0v!JZ>Hv<9lC6>^8a;T_WQ-vi$U2_F&?&3CqDLa^)Y( z4)`_kaiA>T%eUpJK>MCQ%hzIPOn%Px3v&dn6Qn|^B6m5Q9h}=e7J9r%{GO&g+s8|B z=lAI~)<34+VQVvxT2UtzKz8~7?-X^yjvuCCi}gt5JgJ&h-;>Eo`>gfUgJ`{%$lwE; zSFUy6C$Q`LLQJjbVY!|C?y3M-?z#hq=>Q`4A(~uL(OHD;2ZCfI_T)$uWE7d)6ekLV zkc_=*eAe~p_IlBu-yS`lNrzBJi+bxXCT*sqc6DWEH^V9ZQpRHTQ?p}KKM@zF<-kV>XNhn%9<(M)& zkaVSWjH#^G=Q;c*%x2V>!WG9?%D=P1E1;5$-$)tMjye?>gL>oeo+XSUZwNbu`osRT zl=t0q^mqv!PN+Ag-_7Ui`1zv#L;0bb3m;-G?L0;X<=m=Oj_j|@%sg{?3AWqyf!Y}> zmvaH+gXhN|WBPf`h@bdbdA%|Jb0j!WXraSrGTb`fz*z>dZ;O%^&XDsG4`9;Z>ck;u zT~T$*d#5$8T}f&2O-3&FXUdv`%ti{w-QEX)qT(GqeHdOLSVzQusqm+4cjexxw#e(o z)`CsQiqkyoSen-}tUrRw1=s2uT8~6?>*UiIybAO8jc;#0Ugdp~2n|?7nWaT*RaQhJ zfy?*q{+%}{m$qRdHz^OOR@=|?4roZ7Ypf#M?>4XExbPx=mv@_lsVMvvpgm*#H$H9rzzLVDKdb6t+9tfrKN zFlenggwS3GbbQ1wnKlO)#_03=9Sdj1`9O!8z**N)s?F$(3^PZ`eAyNP{hmCPe_OP| z4B2+j7zx`#0-D3u604n-G(yT{AQ~?alFM{MRj$(=XD6JI&TXkO{P`}lUzu3sBgsJ& zFC-}2>4niww469z6TYrDeJ>;At9uEfYnw-FJiVY0n{PdekM0#$V|x7B9BV0Waes2M zMi{zd=jFoC-Y`qZG%R8AcR^d035F>v4AUfN(t(dps6D>>u+*kLedzTZ`x<3s8A(gZ znSFk!ERrgg64swyhNHn{r(eJcDYigz-lOjr^}u+(xty;fl{EdBNJIhKq>A-jO4RP|j0PSjm6m{O1%!ZXGO8YTTdL+YNQB z2WP?dZzr}?-|QHM~0 zKqn;=k}9E3&!3YPi+Mrw$0KA=?z_eMkry}duH5-s7sIDV)YRP^0Q%Q`>@&^3eP?@o z2h)AN#+*|>CGyz2rfBgRUPG*~;-qF9SkTqF@C@9uP!OCw9+RnN@C68@Gk6FfMn%zb zUm74Q3YT@8%%lBiVZMi*j0jYB?2C9DAh(LE$lwu=T>c_8gIVSwu{xL~V9FErYRoIbD%hk1W&i zsaJ3#&c#>IZz6qqWg>-1)L|K?*ukeGA$1GQy-Z|PrLB-KpxVF9 zecD7&8R4GQ_0g6PCFnq64`SzPd#?2?(s*iiX$xBx$?SqjYnlFw`yjkG#iOlEKvZqx zBU$Mcnah!VljZ=@lSt`RAqcK5Gjif*x*tMpj0_7+&t2<|GZ$TJ=o}(0C-}}k>`F9B zBy5nX-Y?+vcox*dICJAXRm6=0PdqN=^AU2-KmODW2nPM6c6#qFn+GKxk3S!0E9Exc zqVio!UX-aYQAGPZr;UDp-448Gk#MJcIi#WqFxlT*8N#M=n`JA7*zWg3oGWrb^!d^( z>qPwlHm85POMh2+f0ujF0KaV)-}?{TSGEguUPN5zpL7?6zpxW@mX}^(HgCt=4zuaC zO3ccg`=EEkl$F5~x0(|lNzOl~i$?d7vgh2w0ly8hXEUZ30o`Wq42R#WjNg9@<>Au5 zRWrQ%M9ukY4SoJw-*_qByP{0E%X2C+AEQq99-~YYwTLKTVe(jS_COUC>#U9{UK+2| zN^-SUfI+!az+ZxG(SAp%ds=*fe%I62w&NhOe`y^Z0Bjc(e@0`A&u?2obNvbJ%0A!i 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%0DDzAIqn$GtWYvHZz%9_B$N|8_LbVYj@TuBfPu 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 z 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

_DV*UE-ZU*=Tf-!@5SM_Nf$xD!;lTCX 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 X*@ib^?J{G#I#r>60WSNRoB#j-6Y literal 0 HcmV?d00001 diff --git a/test/www/font-page.html b/test/www/font-page.html new file mode 100644 index 0000000..bf0cdfc --- /dev/null +++ b/test/www/font-page.html @@ -0,0 +1,23 @@ + + + + + +

Some text
+ + \ No newline at end of file