From 4617e9efde4b825cc61ed760bcf8ceefededaa62 Mon Sep 17 00:00:00 2001 From: MARICHAL Emmanuel Date: Mon, 10 Oct 2016 14:33:33 +0200 Subject: [PATCH] First version --- .gitignore | 70 ++++++++++++++ README.md | 138 ++++++++++++++++++++++++++++ gulpfile.js | 132 ++++++++++++++++++++++++++ package.json | 24 +++++ src/account.mjml | 45 +++++++++ src/backoffice_order.mjml | 28 ++++++ src/bankwire.mjml | 41 +++++++++ src/cheque.mjml | 41 +++++++++ src/config/fake.json | 60 ++++++++++++ src/config/settings.json | 21 +++++ src/contact.mjml | 31 +++++++ src/contact_form.mjml | 32 +++++++ src/credit_slip.mjml | 36 ++++++++ src/css/global.css | 65 +++++++++++++ src/download_product.mjml | 34 +++++++ src/employee_password.mjml | 31 +++++++ src/forward_msg.mjml | 31 +++++++ src/guest_to_customer.mjml | 30 ++++++ src/img/facebook.png | Bin 0 -> 2100 bytes src/img/instagram.png | Bin 0 -> 2601 bytes src/img/twitter.png | Bin 0 -> 2363 bytes src/import.mjml | 28 ++++++ src/in_transit.mjml | 37 ++++++++ src/log_alert.mjml | 30 ++++++ src/newsletter.mjml | 26 ++++++ src/order_canceled.mjml | 32 +++++++ src/order_changed.mjml | 32 +++++++ src/order_conf.mjml | 136 +++++++++++++++++++++++++++ src/order_conf_cart_rules.tpl | 14 +++ src/order_conf_product_list.tpl | 50 ++++++++++ src/order_customer_comment.mjml | 31 +++++++ src/order_merchant_comment.mjml | 31 +++++++ src/order_return_state.mjml | 30 ++++++ src/outofstock.mjml | 33 +++++++ src/partials/account.mjml | 7 ++ src/partials/footer.mjml | 21 +++++ src/partials/guest_to_customer.mjml | 7 ++ src/partials/header.mjml | 9 ++ src/partials/logo.mjml | 10 ++ src/password.mjml | 40 ++++++++ src/password_query.mjml | 33 +++++++ src/payment.mjml | 34 +++++++ src/payment_error.mjml | 34 +++++++ src/preparation.mjml | 34 +++++++ src/preview.jpg | Bin 0 -> 72327 bytes src/refund.mjml | 32 +++++++ src/reply_msg.mjml | 38 ++++++++ src/shipped.mjml | 34 +++++++ src/test.mjml | 26 ++++++ src/voucher.mjml | 32 +++++++ src/voucher_new.mjml | 30 ++++++ 51 files changed, 1821 insertions(+) create mode 100644 .gitignore create mode 100644 README.md create mode 100644 gulpfile.js create mode 100644 package.json create mode 100644 src/account.mjml create mode 100644 src/backoffice_order.mjml create mode 100644 src/bankwire.mjml create mode 100644 src/cheque.mjml create mode 100644 src/config/fake.json create mode 100644 src/config/settings.json create mode 100644 src/contact.mjml create mode 100644 src/contact_form.mjml create mode 100644 src/credit_slip.mjml create mode 100644 src/css/global.css create mode 100644 src/download_product.mjml create mode 100644 src/employee_password.mjml create mode 100644 src/forward_msg.mjml create mode 100644 src/guest_to_customer.mjml create mode 100644 src/img/facebook.png create mode 100644 src/img/instagram.png create mode 100644 src/img/twitter.png create mode 100644 src/import.mjml create mode 100644 src/in_transit.mjml create mode 100644 src/log_alert.mjml create mode 100644 src/newsletter.mjml create mode 100644 src/order_canceled.mjml create mode 100644 src/order_changed.mjml create mode 100644 src/order_conf.mjml create mode 100644 src/order_conf_cart_rules.tpl create mode 100644 src/order_conf_product_list.tpl create mode 100644 src/order_customer_comment.mjml create mode 100644 src/order_merchant_comment.mjml create mode 100644 src/order_return_state.mjml create mode 100644 src/outofstock.mjml create mode 100644 src/partials/account.mjml create mode 100644 src/partials/footer.mjml create mode 100644 src/partials/guest_to_customer.mjml create mode 100644 src/partials/header.mjml create mode 100644 src/partials/logo.mjml create mode 100644 src/password.mjml create mode 100644 src/password_query.mjml create mode 100644 src/payment.mjml create mode 100644 src/payment_error.mjml create mode 100644 src/preparation.mjml create mode 100644 src/preview.jpg create mode 100644 src/refund.mjml create mode 100644 src/reply_msg.mjml create mode 100644 src/shipped.mjml create mode 100644 src/test.mjml create mode 100644 src/voucher.mjml create mode 100644 src/voucher_new.mjml diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..2ed013a --- /dev/null +++ b/.gitignore @@ -0,0 +1,70 @@ +dist/ +langs/ +node_modules/ + +# Created by https://www.gitignore.io/api/macos,windows,linux + +### macOS ### +*.DS_Store +.AppleDouble +.LSOverride + +# Icon must end with two \r +Icon + + +# Thumbnails +._* + +# Files that might appear in the root of a volume +.DocumentRevisions-V100 +.fseventsd +.Spotlight-V100 +.TemporaryItems +.Trashes +.VolumeIcon.icns +.com.apple.timemachine.donotpresent + +# Directories potentially created on remote AFP share +.AppleDB +.AppleDesktop +Network Trash Folder +Temporary Items +.apdisk + + +### Windows ### +# Windows image file caches +Thumbs.db +ehthumbs.db + +# Folder config file +Desktop.ini + +# Recycle Bin used on file shares +$RECYCLE.BIN/ + +# Windows Installer files +*.cab +*.msi +*.msm +*.msp + +# Windows shortcuts +*.lnk + + +### Linux ### +*~ + +# temporary files which can be created if a process still has a handle open of a deleted file +.fuse_hidden* + +# KDE directory preferences +.directory + +# Linux trash folder which might appear on any partition or disk +.Trash-* + +# .nfs files are created when an open file is removed but is still being accessed +.nfs* diff --git a/README.md b/README.md new file mode 100644 index 0000000..b041e71 --- /dev/null +++ b/README.md @@ -0,0 +1,138 @@ +## What is this? + +The PrestaShop Emails SDK is a toolkit to create custom emails for PrestaShop 1.5, 1.6 and 1.7. + +## Installation + +You first need to install [Node.js](https://nodejs.org). + +Install Gulp: + +`npm install -g gulp` + +Download or clone the repository + +Install all the dependencies: + +``` +cd email-templates-sdk +npm install +``` +Before anything, you need to download required languages: + +`gulp langs:dl` + +## Usage + +During development, you just need to watch files: + +`gulp watch` + +This will detect changes on your files and output a compiled version in `./dist/en/`. +3 languages are available during development but more languages are available when the emails are installed on PrestaShop. More information below. + +## Build + +To install the emails on PrestaShop, you need to build a package: + +`gulp build` + +This will create a zip file in `./dist/` with the name you set in the `./src/config/settings.json`. + +To install the zip file that contains the emails, you need to use the Emails Manager available in the PrestaShop back office (soon). +This is also this file you will need to submit on [PrestaShop Addons](https://addons.prestashop.com) if you want to sell it. +The emails are translated by the module during the installation and the dynamic variables & conditions are processed (see "Dynamic variables" and "Conditions" for more information). + +## MJML: Emails made easy + +Building emails is not easy. We know that and Mailjet too. This is why they created a framework to develop emails and make sure they will work fine for all email clients. + +We chose to use this framework to help you develop your emails for PrestaShop. The better part is that Mailjet improves MJML everyday and you can enjoy it directly. + +All the PrestaShop's emails have been converted in a MJML format so you can create your own emails based on it. + +You can find a complete documentation on the [official website](https://mjml.io/documentation/). + +## Translations + +Emails are automatically translated when they are installed. This is why you can find variables like this in your templates: + +`${{ lang.my_variable }}$` + +Make sure to use these variables and not hard coded text. + +## Dynamic variables + +In order to allow the merchants to customize they emails, you can create dynamic variables. In your email, you just need to include a variable where you want: + +`{{$my_var}}` + +For every variable, you need to declare it in `./src/config/settings.json` + +``` +{ + "product_key": "", + "name": "preston", + "version": "1.0", + "inputs": [ + { + "type": "text", // Two types are supported: text or color + "name": "my_var", + "default": "", + "required": false, + "label": { + "en": "English label", + "fr": "French label", + ... + }, + "desc": { + "en": "English description", + "fr": "French description", + ... + } + } + ] +} + +``` + +To help you during your development, you can use the `./src/config/fake.json` to declare fake data. This will replace the variables in the compiled versions. + +You can replace : + +* Your dynamic variables. +* Default variables like {shop_name}. The default fake.json already comes with almost all the default variables. +* Whatever you want! + +Note: A few variables for PrestaShop 1.5 are also available in the `fake.json`. When you want to test for this version, just temporarly replace the variables in your templates. + +## Conditions + +You will sometimes need to add some conditions. Social links are a good example as the merchants are not using all of them. + +Your conditions must be really simple and only check if a variable is here. + +```html +{{if $my_var}} + // Your code +{/if} +``` +You can find real examples in the default template's footer. + +## Partials + +If you want to include the same code in multiple files, you can use partials. Create a new file in the `./src/partials/` folder and then, include it where you want: + +`` + +## Global CSS + +MJML lets you custom every components with attributes and we really recommend you to do it like this but sometimes, you will need to add some global CSS. Media queries are a good example. + +Another good example is the `order_conf.html` email. On PrestaShop 1.5, the products list is hard coded and you can't change the HTML so you will need to custom the style. You will have to do it in the global CSS. Take a look at the default template for an example. + +Starting 1.6, tpl files are used in the `order_conf.html` and we provide a better version in this SDK. You can edit the files as much as you want, they will replace the default files. + +## Tests & Compatibility + +We recommend you to test your emails with Litmus. On PrestaShop Addons, we will use it to make sure that your emails are valid on the most common email clients, both desktop and mobile. You can also create a few accounts (GMail, Yahoo...) to test it yourself. \ No newline at end of file diff --git a/gulpfile.js b/gulpfile.js new file mode 100644 index 0000000..f2141ca --- /dev/null +++ b/gulpfile.js @@ -0,0 +1,132 @@ +var gulp = require('gulp'); +var mjml = require('gulp-mjml') +var mjmlEngine = require('mjml') +var i18n = require('gulp-html-i18n') +var download = require("gulp-download-stream"); +var buffer = require('vinyl-buffer') +var replace_task = require('gulp-replace-task'); +var ext_replace = require('gulp-ext-replace'); +var zip = require('gulp-zip'); +var replace = require('gulp-replace'); +var rename = require("gulp-rename"); +var clean = require('gulp-clean'); +var fs = require('fs'); + +var fake = require('./src/config/fake.json'); +var settings = require('./src/config/settings.json'); + +// Compile files [dev mode] +gulp.task('build:dev', function () { + var css = fs.readFileSync(__dirname+'/src/css/global.css', 'utf8'); + + return gulp.src(['src/*.mjml']) + + // Compile MJML to HTML + .pipe(mjml(mjmlEngine)) + + // Delete conditions + .pipe(replace('{{/if}}', '')) + .pipe(replace(/{{if \$[a-z_]+}}/ig, '')) + + // We need to decode some curly brackets because of MJML + .pipe(replace('%7B%7B', '{{')) + .pipe(replace('%7D%7D', '}}')) + + // CSS injection in the header + .pipe(replace('', '')) + + // Translate + .pipe(i18n({ + langDir: './langs', + trace: true, + createLangDirs: true + })) + + // Replace variables with fake data + .pipe(replace_task({ + patterns: [{json: fake}], + usePrefix: false + })) + + .pipe(gulp.dest('./dist/html/')) +}); + +// Compile files with MJML +gulp.task('build:mjml', function () { + var css = fs.readFileSync(__dirname+'/src/css/global.css', 'utf8'); + return gulp.src(['src/*.mjml']) + + // Compile MJML to HTML + .pipe(mjml(mjmlEngine)) + + // We need to decode some curly brackets because of MJML + .pipe(replace('%7B%7B', '{{')) + .pipe(replace('%7D%7D', '}}')) + + // CSS injection in the header + .pipe(replace('', '')) + + // Rename files + .pipe(ext_replace('.tpl')) + + .pipe(gulp.dest('./dist/'+settings.name)) +}); + +// Copy images in dist folder +gulp.task('build:copy:img', function() { + return gulp.src('src/img/*.{jpg,jpeg,png,gif}') + .pipe(gulp.dest('./dist/'+settings.name+'/img/')); +}); + +// Copy tpls in dist folder +gulp.task('build:copy:tpl', function () { + return gulp.src('src/*.tpl') + .pipe(gulp.dest('./dist/'+settings.name+'/tpl/')); +}); + +// Copy preview img in dist folder +gulp.task('build:copy:preview', function() { + return gulp.src('src/preview.jpg') + .pipe(gulp.dest('./dist/'+settings.name+'/')); +}); + +// Copy settings in dist folder +gulp.task('build:copy:settings', function() { + return gulp.src('src/config/settings.json') + .pipe(gulp.dest('./dist/'+settings.name+'/')); +}); + +// Compress folder +gulp.task('build:compress', ['build:copy:settings', 'build:mjml', 'build:copy:tpl', 'build:copy:img', 'build:copy:preview'], function() { + return gulp.src('./dist/'+settings.name+'/**/*') + .pipe(zip(settings.name+'.zip')) + .pipe(gulp.dest('./dist/')); +}); + +// Copy images in dist folder +gulp.task('build', ['build:copy:settings', 'build:mjml', 'build:copy:img', 'build:copy:preview', 'build:copy:tpl', 'build:compress']); + +// Watch changes +gulp.task('watch', function () { + gulp.watch('src/**/*.mjml', ['build:dev']); + gulp.watch('src/css/global.css', ['build:dev']); +}); + +// Download translations +gulp.task('langs:dl', ['langs:clean'], function () { + ['en', 'fr', 'es'].forEach(function(lang) { + download('http://scritik.addons.prestashop.net/request/1/contributor/dependencies/6c7a3d34fa01934e71f53aae16f2698b/'+lang) + .pipe(buffer()) + .pipe(rename("lang.json")) + .pipe(gulp.dest('langs/'+lang+'/')); + }) +}); + +// Remove previously downloaded langs +gulp.task('langs:clean', function () { + return gulp.src('langs/', {read: false}) + .pipe(clean()); +}); + +// Run all tasks if no args +gulp.task('default', ['watch']); diff --git a/package.json b/package.json new file mode 100644 index 0000000..b5ecfeb --- /dev/null +++ b/package.json @@ -0,0 +1,24 @@ +{ + "name": "ps-mails-sdk", + "version": "1.0.0", + "description": "PrestaShop emails SDK", + "main": "index.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "author": "PrestaShop", + "license": "ISC", + "devDependencies": { + "gulp": "^3.9.1", + "gulp-clean": "^0.3.2", + "gulp-download-stream": "0.0.13", + "gulp-ext-replace": "^0.3.0", + "gulp-html-i18n": "^0.6.1", + "gulp-mjml": "^1.0.1", + "gulp-rename": "^1.2.2", + "gulp-replace": "^0.5.4", + "gulp-replace-task": "^0.11.0", + "gulp-zip": "^3.2.0", + "vinyl-buffer": "^1.0.0" + } +} diff --git a/src/account.mjml b/src/account.mjml new file mode 100644 index 0000000..ae672cc --- /dev/null +++ b/src/account.mjml @@ -0,0 +1,45 @@ + + + + + + + + + + + + + ${{ lang.hi_firstname_lastname }}$ + ${{ lang.thank_you_for_creating_a_customer_account_at_shop_name }}$ + + + + + + ${{ lang.your_shop_name_login_details }}$ + + ${{ lang.here_are_your_login_details }}$ + ${{ lang.email_address }}$ {email} + + + + + + ${{ lang.important_security_tips }}$ + + +
    +
  1. ${{ lang.always_keep_your_account_details_safe }}$
  2. +
  3. ${{ lang.never_disclose_your_login_details_to_anyone }}$
  4. +
  5. ${{ lang.change_your_password_regularly }}$
  6. +
  7. ${{ lang.should_you_suspect_someone_is_using_your_account_illegally_please_notify_us_immediately }}$
  8. +
+
+
+
+ + +
+
+
diff --git a/src/backoffice_order.mjml b/src/backoffice_order.mjml new file mode 100644 index 0000000..84c7377 --- /dev/null +++ b/src/backoffice_order.mjml @@ -0,0 +1,28 @@ + + + + + + + + + + + + + ${{ lang.hi_firstname_lastname }}$ + + + + + + ${{ lang.a_new_order_has_been_generated_on_your_behalf }}$ + + ${{ lang.please_go_on_order_link_to_finalize_the_payment }}$ + + + + + + + diff --git a/src/bankwire.mjml b/src/bankwire.mjml new file mode 100644 index 0000000..977e39e --- /dev/null +++ b/src/bankwire.mjml @@ -0,0 +1,41 @@ + + + + + + + + + + + + + ${{ lang.hi_firstname_lastname }}$ + ${{ lang.thank_you_for_shopping_with_shop_name }}$ + + + + + + ${{ lang.order_order_name }}$ - ${{ lang.awaiting_wire_payment }}$ + + ${{ lang.your_order_with_the_reference_order_name_has_been_placed_successfully_and_will_be_shipped_as_soon_as_we_receive_your_payment }}$ + + + + + + ${{ lang.you_have_selected_to_pay_by_wire_transfer }}$ + + ${{ lang.here_are_the_bank_details_for_your_transfer }}$ + ${{ lang.amount }}$ {total_paid} + ${{ lang.account_owner }}$ {bankwire_owner} + ${{ lang.account_details }}$ {bankwire_details} + ${{ lang.bank_address }}$ {bankwire_address} + + + + + + + diff --git a/src/cheque.mjml b/src/cheque.mjml new file mode 100644 index 0000000..2bc17a6 --- /dev/null +++ b/src/cheque.mjml @@ -0,0 +1,41 @@ + + + + + + + + + + + + + ${{ lang.hi_firstname_lastname }}$ + ${{ lang.thank_you_for_shopping_with_shop_name }}$ + + + + + + ${{ lang.order_order_name }}$ - ${{ lang.awaiting_check_payment }}$ + + ${{ lang.your_order_with_the_reference_order_name_has_been_placed_successfully_and_will_be_shipped_as_soon_as_we_receive_your_payment }}$ + + + + + + ${{ lang.you_have_selected_to_pay_by_check }}$ + + ${{ lang.here_are_the_bank_details_for_your_check }}$ + ${{ lang.amount }}$ {total_paid} + ${{ lang.payable_to_the_order_of }}$ {cheque_name} + ${{ lang.please_mail_your_check_to }}$ + {cheque_address_html} + + + + + + + diff --git a/src/config/fake.json b/src/config/fake.json new file mode 100644 index 0000000..39b8681 --- /dev/null +++ b/src/config/fake.json @@ -0,0 +1,60 @@ +{ + + "{{$main_color}}":"#555454", + "{{$second_color}}":"#555454", + "{{$mails_img_url}}": "../../../src/img/", + "{{$facebook_link}}": "https://www.facebook.com/prestashop", + "{{$twitter_link}}": "https://www.twitter.com/prestashop", + "{{$googleplus_link}}": "https://plus.google.com/+prestashop", + "{{$instagram_link}}": "https://www.instagram.com/prestashop/", + "{{$youtube_link}}": "https://www.youtube.com/user/prestashop/", + "{{$pinterest_link}}": "https://www.pinterest.com/prestashop/", + "{shop_logo}": "https://img-cdn.prestashop.com/logo.png", + "{shop_name}": "PrestaShop", + "{firstname}": "John", + "{lastname}": "Doe", + "{email}": "addons@prestashop.com", + "{order_name}": "HG56787DJSH", + "{order_link}": "http://www.google.com", + "{date}": "2042-01-01", + "{payment}": "Bankwire", + "{carrier}": "Post", + "{street}": "12 rue d'Amsterdam", + "{postcode}": "75009", + "{city}": "Paris", + "{phone_number}": "+33 (0)1 02 03 04 05", + "{total_products}":"120€", + "{total_discounts}":"0€", + "{total_wrapping}":"0€", + "{total_shipping}":"10€", + "{total_tax_paid}":"15€60", + "{total_paid}": "145€60", + "{bankwire_owner}": "PrestaShop", + "{bankwire_details}": "Lorem ipsum dolor sit amet", + "{bankwire_address}": "12 rue d'Amsterdam
75009 Paris", + "{cheque_name}":"PrestaShop", + "{cheque_address_html}":"12 rue d'Amsterdam, 75009 Paris", + "{message}":"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam tincidunt sapien augue, vitae tempus ipsum pulvinar at. Suspendisse id purus ligula. Curabitur condimentum nulla tortor, vel sodales turpis feugiat at. Quisque et felis libero. Mauris at sagittis leo. Curabitur ultricies ultricies est, id sagittis nisl semper id. Nullam varius in ipsum non pellentesque. Donec euismod, diam vel tincidunt laoreet, mi erat molestie tortor, non iaculis ante elit eu urna. Integer in ligula nisl. Duis semper tortor ac enim tempus faucibus. Curabitur elit diam, malesuada eu ligula quis, pretium imperdiet ligula. In consectetur convallis est et cursus. Sed vel aliquet metus. Cras eu convallis ante, et suscipit diam. Quisque eu condimentum eros. Suspendisse sagittis enim at libero tempor fringilla.", + "{messages}":"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam tincidunt sapien augue, vitae tempus ipsum pulvinar at. Suspendisse id purus ligula. Curabitur condimentum nulla tortor, vel sodales turpis feugiat at. Quisque et felis libero. Mauris at sagittis leo. Curabitur ultricies ultricies est, id sagittis nisl semper id. Nullam varius in ipsum non pellentesque. Donec euismod, diam vel tincidunt laoreet, mi erat molestie tortor, non iaculis ante elit eu urna. Integer in ligula nisl. Duis semper tortor ac enim tempus faucibus. Curabitur elit diam, malesuada eu ligula quis, pretium imperdiet ligula. In consectetur convallis est et cursus. Sed vel aliquet metus. Cras eu convallis ante, et suscipit diam. Quisque eu condimentum eros. Suspendisse sagittis enim at libero tempor fringilla.", + "{product_name}":"Smartphone", + "{attached_file}":"attachment.png", + "{nbProducts}":"3", + "{employee}":"Preston", + "{comment}":"Lorem ipsum dolor sit amet", + "{followup}": "http://www.prestashop.com", + "{id_order_return}":"FGHTYJ", + "{url}":"http://www.prestashop.com", + "{reply}":"Lorem ipsum dolor sit amet", + "{voucher_num}":"PRESTACODE", + "{voucher_amount}":"42€", + "{state_order_return}":"Delivered", + "{link}":"http://www.prestashop.com", + "{delivery_block_html}":"12 rue d'Amsterdam
75009 Paris", + "{invoice_block_html}":"12 rue d'Amsterdam
75009 Paris", + "{products_15}":"demo_1iPod Nano - Color : Black, Disk space : 16GB189,68 €1189,68 €", + "{discounts_15}":"New voucher name3€", + "{virtualProducts_15}":"", + "{products}":"

FJKIU

Preston

60€

1

60€

FJKIU

Preston Customization 1

60€

1

60€

Customization 2

2

", + "{discounts}":"

New voucher

3€

", + "{virtualProducts}":"" +} diff --git a/src/config/settings.json b/src/config/settings.json new file mode 100644 index 0000000..b565f5f --- /dev/null +++ b/src/config/settings.json @@ -0,0 +1,21 @@ +{ + "product_key": "", + "name": "preston", + "version": "1.0", + "inputs": [ + { + "type": "text", + "name": "var_name", + "default": "foo", + "required": false, + "label": { + "en": "English label", + "fr": "French label" + }, + "desc": { + "en": "English description", + "fr": "French description" + } + } + ] +} diff --git a/src/contact.mjml b/src/contact.mjml new file mode 100644 index 0000000..9fee6f2 --- /dev/null +++ b/src/contact.mjml @@ -0,0 +1,31 @@ + + + + + + + + + + + + + ${{ lang.message_from_a_shop_name_customer }}$ + + + + + + ${{ lang.message }}$ + {message} + + ${{ lang.order_id }}$ {order_name} + ${{ lang.product }}$ {product_name} + ${{ lang.attached_file }}$ {attached_file} + + + + + + + diff --git a/src/contact_form.mjml b/src/contact_form.mjml new file mode 100644 index 0000000..4218144 --- /dev/null +++ b/src/contact_form.mjml @@ -0,0 +1,32 @@ + + + + + + + + + + + + + ${{ lang.your_message_to_shop_name_customer_service }}$ + ${{ lang.your_message_has_been_sent_successfully }}$ + + + + + + ${{ lang.message }}$ + {message} + + ${{ lang.order_id }}$ {order_name} + ${{ lang.product }}$ {product_name} + ${{ lang.attached_file }}$ {attached_file} + + + + + + + diff --git a/src/credit_slip.mjml b/src/credit_slip.mjml new file mode 100644 index 0000000..484265b --- /dev/null +++ b/src/credit_slip.mjml @@ -0,0 +1,36 @@ + + + + + + + + + + + + + ${{ lang.hi_firstname_lastname }}$ + + + + + + ${{ lang.order_order_name }}$ - ${{ lang.credit_slip_created }}$ + + ${{ lang.we_have_generated_a_credit_slip_in_your_name_for_order_with_the_reference_order_name }}$ + + + + + + + ${{ lang.you_can_review_this_credit_slip_and_download_your_invoice_from_the_my_credit_slips_section_of_your_account_by_clicking_my_account_on_our_shop }}$ + + + + + + + + diff --git a/src/css/global.css b/src/css/global.css new file mode 100644 index 0000000..47b7588 --- /dev/null +++ b/src/css/global.css @@ -0,0 +1,65 @@ +/**** Global ****/ + +div a, div span, div strong, td a{color: {{$second_color}};} + +.mj-inline-links a, .mj-inline-links a span{color: #ffffff !important;} + +/**** Download Product ****/ + +ul{color: #818181; font-size: 14px; margin: 0; padding: 0 0 0 25px} +ul li{padding-bottom: 10px} +ul li:last-child{padding-bottom: 0} +ul li a{display: block;} + +/**** Order Conf ***/ +th{font-size: 13px; color: #414a56; font-weight: bold; width: 20% !important; font-family: Arial !important;} + +table.table-list{font-family: Arial !important;} +table.table-list tr{background-color: #f8f8f8 !important;} +table.table-list tr td{border: none !important; border-bottom: 1px solid #D6D4D4 !important; width: 20% !important; color: #919191 !important; padding-left: 10px !important;} +table.table-list tr td:first-child{text-align: left !important;} +table.table-list tr td:last-child{text-align: right !important;} +table.table-list tr.conf_body td{border: none !important; color: #919191 !important;} + +/**** Media Query ****/ + +@media only screen and (max-width: 768px) { + .mj-inline-links a{ + display: block !important; + padding: 15px 10px 5px !important; + } + .mj-inline-links a span{margin-right: 0 !important} +} + +@media only screen and (min-width: 301px) and (max-width: 500px) { + .table, .table-recap{width: 295px !important; margin: auto;} + .table-recap tr td, .conf_body td{text-align:center !important;} + .table-recap tr th{font-size: 10px !important} + .table-recap tr td{font-size: 12px !important} + table.table-list tr td {width: 100% !important} + table.table-list tr td:first-child{text-align: center !important;} + table.table-list tr td:last-child{text-align: center !important;} + } +@media only screen and (max-device-width: 480px) { + .table{width: 295px!important; margin: auto;} + .table tr th{text-align:center!important; padding: 15px 10px !important} + .table td{text-align:center!important;} + .table td, .table th{width: auto!important;} + .table table, .table thead, .table tbody, .table th, .table td, .table tr { + display: block !important; + } + table.table-list tr td {width: 100% !important} + table.table-list tr td:first-child{text-align: center !important;} + table.table-list tr td:last-child{text-align: center !important;} + } +@media only screen and (max-width: 300px){ + .table{width: 200px !important; margin: auto;} + .table td{text-align:center !important;} + .table tr td{font-size: 12px !important} + .table table, .table thead, .table tbody, .table th, .table td, .table tr { + display: block !important; + } + table.table-list tr td {width: 100% !important} + table.table-list tr td:first-child{text-align: center !important;} + table.table-list tr td:last-child{text-align: center !important;} +} diff --git a/src/download_product.mjml b/src/download_product.mjml new file mode 100644 index 0000000..2289935 --- /dev/null +++ b/src/download_product.mjml @@ -0,0 +1,34 @@ + + + + + + + + + + + + + ${{ lang.hi_firstname_lastname }}$ + ${{ lang.thank_you_for_your_order_with_the_reference_order_name_from_shop_name }}$ + + + + + + ${{ lang.products_now_available_for_download }}$ + + ${{ lang.you_have_nbproducts_products_now_available_for_download_using_the_following_links }}$ + {virtualProducts} + + + + + + + + + + + diff --git a/src/employee_password.mjml b/src/employee_password.mjml new file mode 100644 index 0000000..5ed7fff --- /dev/null +++ b/src/employee_password.mjml @@ -0,0 +1,31 @@ + + + + + + + + + + + + + ${{ lang.hi_firstname_lastname }}$ + + + + + + ${{ lang.your_shop_name_login_information }}$ + + ${{ lang.here_is_your_personal_login_information_for_shop_name }}$ + ${{ lang.first_name }}$ {firstname} + ${{ lang.last_name }}$ {lastname} + ${{ lang.email_address }}$ {email} + + + + + + + diff --git a/src/forward_msg.mjml b/src/forward_msg.mjml new file mode 100644 index 0000000..13eac37 --- /dev/null +++ b/src/forward_msg.mjml @@ -0,0 +1,31 @@ + + + + + + + + + + + + + ${{ lang.hi_firstname_lastname }}$ + + + + + + ${{ lang.customer_service__forwarded_discussion }}$ + + ${{ lang.employee_wanted_to_forward_this_discussion_to_you }}$ + ${{ lang.discussion_history }}$ + {messages} + ${{ lang.employee_added_comment }}$ + + + + + + + diff --git a/src/guest_to_customer.mjml b/src/guest_to_customer.mjml new file mode 100644 index 0000000..144543c --- /dev/null +++ b/src/guest_to_customer.mjml @@ -0,0 +1,30 @@ + + + + + + + + + + + + + ${{ lang.hi_firstname_lastname }}$ + + + + + + ${{ lang.your_customer_account_creation }}$ + + ${{ lang.your_guest_account_for_shop_name_has_been_transformed_into_a_customer_account }}$ + + ${{ lang.email_address }}$ {email} + + + + + + + diff --git a/src/img/facebook.png b/src/img/facebook.png new file mode 100644 index 0000000000000000000000000000000000000000..d291ea4154e31980c79ced46318e03595c567a8d GIT binary patch literal 2100 zcmV-42+Q}0P)KP+-PEAz*I{w zyF0U&b}1Nq;=u=_fe=kJCIpEW49Ej&)Sx~<5$NuA*Z(`SXEJTtI)@gRmBg*=U$H_}?0m$(!im#)cbtagd@LjKz*Lu?<|$D;7&OO$V!P zdGAii7+j~BPE5Akt+M4@;ZRW0jTDh_o&sXSoMYXbJ#d0suzfVT&!Xd@Xz9n_dc(@r)OfxY=^d>_6Js>+ zT;aTG7e1BE%=6k)L-%mnG$d;`Etr#Wz_G1;cgu$JIxTvJKmrIrRum&su8#@2 zAF_AHGu|+rGHuiY-#ap?#Pdhxp7hqBaTW?NsL)PF{&}Rg$Sg`nUII|sM3sQl1V**K zu@cQO>77vivT8Vet=66;SPPCiFBxNWFj8HbmHPuUz=F)GW(EM}H`shI|s6a5vu_mx6NckK4ucZh!XlgnIH(5RjUHCCfF*^PAZnea`!}@tuW7z7>F7_8 z4D$JAq*$`omm|dr00PHIt*FE%K}PJ@pL=;MQc~z{WHz2bbk17 z#2)!Yn;SGAC7iTs=ZbirGhs$9Bho?mp~J9VSm}c1B4{Xa*Tg){`oTrhkF~vX;32Z~ z*)X8-cSxa1(NpRkj`7XUqSWVf zt0CuQlp{y}vF+*iSNK?i*%h+224CA4BBim=2dZTjH)j(BPfrv)#ol+NL$#N|h|c?Hf?S2GSB%vT2G%5}+fft&v0!JYr`=>a{ELU4sDyqdt#tHOf=rznt znG6F1ebuU`?`jCfc5nt2hnK)RLZAuASOD9spd~Y95U-)-D;g=V3doNIZY*e?>E*~D+;Q2;Z161|Ot8`UK_f*dVzJ57li@(Sf|joH zIbJy0VJ8;{ebA=}T2<)$;6c2wAe=Uw9ajmu>d776bzk#<2D+|6T}7)3ogXCi;8R%8 zNIx}u^rv=xFU#_HkRb#1#6>`5<2h20*TS@ zTlD_>g41f2^GZbAPyFJR?#VzrX`HoAL~o6?s;q2S&4x~+G&(EkgND>KtSa5|}XP24Kl2h=vWOpbhs25p+cwv{c3 z1}Z29h3<=*X}7%gF1w3`ZeGk*So?x}fx+?c zG=}anA*rV$I^h9#uY{=^@eI;V41mBXg|~2)ML&8s)!GX6;ffLR^0nJ=)=|(ohE^4v zLqG~eTE8W)@m^$rAKch~>-0XJFmU9tbkv8K(A#-G`I#?R-eiX)g2M!O7c4B=F`ZRW zQ1}u*ccN8=BZRW>?ti^%4&|)8zYVa^VHg4`!JW>x@O-b}B$DTif eJJQSffc+2G4GUMPi(sGt0000iTqyy^j}7QzF_t{MGhm8E9k<08~bM?gOk&^woi+Wh1wq< zxy28jEAXC3p~7l3b(a>;_D2S$-Z1)|Qs>TTw{zz&UHo?e*af?;-k0T&`vB}(g9lxC z-4L!zPF^&VlP~JA^kWb0_~~s*Hd6B~va&WM1?_udw}Q1D=D^f>Ylt8Z5M)vBvkO{Z zrl7|&*v~BDe{jU@qK0!?EM3&&*#g+d1P-~@z|Qi;{+q^X^krYyc8uNLw8s4! zrX;{{4PY7;+2K|WvDBz@9SoTI_A$=weAn*7E+#N-3FiaK)i(6Q%1hAbIBQBGz(~w4 z!6%p9*CD#F=EqKs>GJT7QO|tlyNqYZc!AG`G@5bZhhyG`cDcFT%f4cjxiI zy}0g&c1gruF z{V)Rsy@X#9W^#&v|E$Nx?`u`iGUE1A@YMw`7}cui5kX3Fp=!2nxvP-Sr|^;!Ru6{(-YZm1K>+w`PboCriaJcyZ5if|36xT(sqhI z&-tqcgr)s zA`!D2wvVo{#J&%jNoR(j88xdsN`XW%xADi1pvQ=%I+;rt{kb9yqRO=u%ZBqKUQ34S z;FLa|8YDAc*fx5-2YSUS06R?3UAvF)nR5iKcmMc9W+L}{X+zbZW0|7mr3z=lPwxLz zMG^k&iZk*&hGMxEv<73U=Rc{rMr@n?Q{RmY9{e3_;{;Z0P|3sW&!4Uatqh-9$N2>q zwx$SHFGoK7!p)GzaRLL&^+97|eoe0c&}zUPJ>&Oi@zhp5J|1p=`uR`#4ClHH+jgyC zW~WvFDe77IM^OUt zDjMgECbG99pSXbl0QxW1u(Mj1pz{qum-F{?ygvY%MW}HVp!KA4KO$!-97_#)30BH9 zp<%j9zr1MFaCKz*l+ly=xHUYy8Y^)c0M9)t#%^jBG;HOZF_2jwkO!+~hEtrRewGF; zocpbzgVgwx3QW-MnJ#FUk{|#AX1Yn88^~4U-<@Fj^p-tG8KO@-0#DKmXr!@R(S1tJm1xCA3i}fD ziOlYnG{iVSW9b2mOV9HIzJ#W2b9Ca<)G+^efKzwENMGU#K%->twe}@IYj`h>I>K{_ z{1g5ZwN3e1Hc}XUV2lLOE9f6J+k}`ywq1KO#9KZ^TS38n3FeDfmT`G&paE*Y~;(O55|_d zd-w-0x=3qFhRFX7_sxK%IV0)3ML950BE!6g*D+zTWWqEK&`g*P)PUxSQyP%l%j`(0 zL@f}8d4ioEHd3@YsVS=vujtL)4F-{k+(CDz# zCvf~Euf@4DnEW2v6H`;T$y3%)l`TnMpQRB}8r#c2gI!m}wl30-vGaqauP(I;lm|;B zbx-@qu^SoAsZFxRRFfWou8h&ndcs-FeUicRypEFKzH$JY(B}Zt7m%X_nC1kqDqO`k z@yxrbi+}*z%)r>HB0!cr0evCFgGuNs_oUVBtYxx8O_D8cIn;mOs5wVTJcz9aIGe-r zQ!b0jj=Zf`++y{F@^XHbYuILQjjgJ(wu}BsoJA;u5KAPu$QkMpWA^Gso?E)Z3y>qL z?h-wPzdp1E54p&p-vG<&8uve3x8g}yEqkr1Y@n;eXvwHa!=c5?F~n`v7^>apmV@_l zOZP{H3D_?SOorz!nQ?owBD1NQj!VxdMBwztdQ~fdE6|b=WO$J&txON%nV1hxThnbZ zHUq)*40B=vZ+#yxSPxQmo-L*KR%*)z-KDzvW-|~{d7Z5)8i%UVTQ*2UEF*&x87AQN z$B*4uN5{P*RsR8al&vaRvx&S6 zKwMU8oDH338|sX71WP|mBIqS(bS?TCQ2P+}*07Xm6XBlVtpS!oIahT-8x7h7Wx&u( zc9F)Oryr(UQ$|M(xAe=FN>jGDTFY+pACoAXrM|wZYgDIoIbi<-nLFDvV*mu>00000 LNkvXXu0mjfJ}mnT literal 0 HcmV?d00001 diff --git a/src/img/twitter.png b/src/img/twitter.png new file mode 100644 index 0000000000000000000000000000000000000000..7e7f28cd61220b48560a2a37064248631e4fc523 GIT binary patch literal 2363 zcmV-B3B>k^P)uj#tI7&o^q`afTuZT1PYW;fWbCzfyn|0!5L^mwo< zpYA{17aYA(30duGG_^`KEY;ta_W8o*{c6-)zS`Jz@zoyvB=>g!eBr_K0XhKBdiv$B zE>uIqUVkhT?~IQp{L%D&HDVpr`qFuSU#39QqN%(V9y@}2_I7TZ=vSiY4G)Ee+V9o3 zpW$`_Bd{P;nEf0azCsBnUj&FOfECwl-fMTgHf49lCu{(>)kq3v2?J;w_t=4rlXjQ5 zZ;$PdjUR>$V2y{h?xC|KZRXMIPLlD{s%YXYpE34~KQ{3LK?XKW+VE;YG0eQMuvt)z zu^BZ?vuLHyChkcJ!{2#sjNk+D-80zGpc))m<#tZXs=%ywyu0%zJmAZ~rmuxZwTP7~ z0WAWE-GmiY!{laiS|l|iA`~0{Ta8-L6-MG*Ntc#nj30f*=xQX@0n&h;BUpHkpIb6# z!)A^YTC@2ZT(fp`^bTGofG6x`f&c4aEt>ZGW7)sRNrZk{fv5Pu`8Bfuz|(8Ce8Zd= zrwTRg@p2E3|JfOv5Pz;BZk$Uf3mzNMcEe zYU}g9&RCYJa?lqZzNIF=c~KS)2>%b1H9n|r@=${ttHTV}V$^6@+jjKa%z?v2Du-I# zF*z!Vzc2f4yRI*BoT@Lb%4O{QMQA6J0gF~!%oH9HT8$#Xf>8tX3_!6GVy*N~NaoM{ z@$msv%L84T_HYCAWC11qFM_Ya?-{O-_TVtfeucLQSoRVu&8&0`QMFLBAmG6)5Lw96 zuK>k+!F#jJ!vu^FQ_5a{@YSKq*(}j~y`wi^6CY^d)Q}doHsJofbO1qCqlt)4G!u8% zk226~e%MQ}H1ok#7AazZ8H9M+(>-)gXWzt1Rx>6IqT;TQ`7Y!HKy5`(D>B~`89CL{ z^TnA;$h=Ptnb}g=FCI@5Mv)E#rl|*B9=K>$j@{iAyEX1idbwK2*!&>WzjkzwT+i=# zdq!748YlU^Kzx$m3mP_#`wn!xvh!Nrb8me6$&0{88XY8`+0iq6H6rpcX+XfVDikB= z9NS&T!2nIF9_L#S4v{YXdZsON(Wm$NkJ5yJ`;;ag>LcurYm>*Rou*bi!l%!LNGBB^0G=^OTL9 zf8^JbXSjvGqkHI5H8kc`BGyKKG#k{qcROvTE9++)u$KldL6`RO{WR8`Yd#7+QfO zK1RAVXm9gWD5{JS9KN6&w3z8K1rndld#&oGU=eamjig^Ilc9=NVqZ&p<};Fymw?e`IV>r`7n-ogpcvC?G+m^u z&SjdRgGx=;6HwU3dASA z_q?>@3ONo|9cp>D1`vaecg&mwT21!2Fuj4Wvt?x%ZSju3d7a^v^4a`cDJm~}a@|FX zwwir`8Z=k2xku@wmKNrc;miSP{JXV**vvtl7^UpWQom8VpRxZ{639}N;m26i@~Kj@ zv_P~-i$9SUE8Ns=c=o}=KqTA_9#!$=2OeBtz_N=>6_5{9sOMdH+U8txH5>+FkqK5L z0%zD4(!(eqtbU}&>+9CNaiSa`n)-=CPBc)G^x7@^L>noka2}2MkRv77V-T>IDJ74a zeaYiirF(Q4&(;_=p8W72g`sQ}EF4gfle^%sk$iz3Zt09#epz;BXj-1*Q56$Z>Mz6U zOwEmxRor99^KC0n9d@)lm6b^+Jv^_!xA?-zTcFGD@#Kg6!3!h;l8jvnLGOhD|)P*w2`L+E)8 z8{~Bso+B(?kka*@ASzvXMP7&>Mk~3-lOGPnJeS~@ S1DCF`xj!2w1*udlSR<@UF z@5mjp`H@s;i4M)odNmSdF~@vP&7P2XiDqOj4umGogDtJL26~BByxaP3;_RdKI(+0k h+^GDmyp`X`{{f|eY27SmL~Q^7002ovPDHLkV1j>gh|2%~ literal 0 HcmV?d00001 diff --git a/src/import.mjml b/src/import.mjml new file mode 100644 index 0000000..fe08b26 --- /dev/null +++ b/src/import.mjml @@ -0,0 +1,28 @@ + + + + + + + + + + + + + ${{ lang.hi_firstname_lastname }}$ + + + + + + ${{ lang.import_complete }}$ + + ${{ lang.the_file_filename_has_been_successfully_imported_to_your_shop }}$ + + + + + + + diff --git a/src/in_transit.mjml b/src/in_transit.mjml new file mode 100644 index 0000000..63c2cfb --- /dev/null +++ b/src/in_transit.mjml @@ -0,0 +1,37 @@ + + + + + + + + + + + + + ${{ lang.hi_firstname_lastname }}$ + + + + + + ${{ lang.order_order_name }}$ - ${{ lang.in_transit }}$ + + ${{ lang.your_order_with_the_reference_order_name_is_currently_in_transit }}$ + + ${{ lang.you_can_track_your_package_using_the_following_link }}$ + + ${{ lang.followup }}$ + + + + + + + + + + + + diff --git a/src/log_alert.mjml b/src/log_alert.mjml new file mode 100644 index 0000000..089680f --- /dev/null +++ b/src/log_alert.mjml @@ -0,0 +1,30 @@ + + + + + + + + + + + + + ${{ lang.hi_firstname_lastname }}$ + + + + + + ${{ lang.you_have_received_a_new_log_alert }}$ + + ${{ lang.warning_you_have_received_a_new_log_alert_in_your_back_office }}$ + + ${{ lang.you_can_check_for_it_in_the_tools__logs_section_of_your_back_office }}$ + + + + + + + diff --git a/src/newsletter.mjml b/src/newsletter.mjml new file mode 100644 index 0000000..159d61d --- /dev/null +++ b/src/newsletter.mjml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + ${{ lang.hi_firstname_lastname }}$ + + + + + + {message} + + + + + + + diff --git a/src/order_canceled.mjml b/src/order_canceled.mjml new file mode 100644 index 0000000..f37e96a --- /dev/null +++ b/src/order_canceled.mjml @@ -0,0 +1,32 @@ + + + + + + + + + + + + + ${{ lang.hi_firstname_lastname }}$ + + + + + + ${{ lang.order_order_name }}$ - ${{ lang.order_canceled }}$ + + ${{ lang.your_order_with_the_reference_order_name_from_shop_name_has_been_canceled }}$ + + + + + + + + + + + diff --git a/src/order_changed.mjml b/src/order_changed.mjml new file mode 100644 index 0000000..d509825 --- /dev/null +++ b/src/order_changed.mjml @@ -0,0 +1,32 @@ + + + + + + + + + + + + + ${{ lang.hi_firstname_lastname }}$ + + + + + + ${{ lang.order_order_name }}$ - ${{ lang.order_changed }}$ + + ${{ lang.your_order_with_the_reference_order_name_from_shop_name_has_been_changed_by_the_merchant }}$ + + + + + + + + + + + diff --git a/src/order_conf.mjml b/src/order_conf.mjml new file mode 100644 index 0000000..1cc4ff3 --- /dev/null +++ b/src/order_conf.mjml @@ -0,0 +1,136 @@ + + + + + + + + + + + + + ${{ lang.hi_firstname_lastname }}$ + ${{ lang.thank_you_for_shopping_with_shop_name }}$ + + + + + + ${{ lang.order_details }}$ + + ${{ lang.order }}$ {order_name} ${{ lang.placed_on }}$ {date} + ${{ lang.payment }}$ {payment} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ${{ lang.shipping }}$ + + ${{ lang.carrier }}$ {carrier} + + + + + + ${{ lang.delivery_address }}$ + + {delivery_block_html} + + + + + + ${{ lang.billing_address }}$ + + {invoice_block_html} + + + + + + + + + + + diff --git a/src/order_conf_cart_rules.tpl b/src/order_conf_cart_rules.tpl new file mode 100644 index 0000000..bf408a7 --- /dev/null +++ b/src/order_conf_cart_rules.tpl @@ -0,0 +1,14 @@ +{foreach $list as $cart_rule} + + + +

{$cart_rule['voucher_name']}

+
+ + + +

{$cart_rule['voucher_reduction']}

+
+ + +{/foreach} diff --git a/src/order_conf_product_list.tpl b/src/order_conf_product_list.tpl new file mode 100644 index 0000000..b548d05 --- /dev/null +++ b/src/order_conf_product_list.tpl @@ -0,0 +1,50 @@ + + + +

{$product['reference']}

+
+ + + +

{$product['name']} + {if count($product['customization']) == 1} + {foreach $product['customization'] as $customization} + {$customization['customization_text']} + {/foreach} + {/if} +

+ {hook h='displayProductPriceBlock' product=$product type="unit_price"} +
+ + + +

{$product['unit_price']}

+
+ + + +

{$product['quantity']}

+
+ + + +

{$product['price']}

+
+ + +{if count($product['customization']) > 1} + {foreach $product['customization'] as $customization} + + + +

{$customization['customization_text']}

+
+ + + + {if count($product['customization']) > 1} +

{$customization['customization_quantity']}

+ {/if} +
+ + diff --git a/src/order_customer_comment.mjml b/src/order_customer_comment.mjml new file mode 100644 index 0000000..cae1acf --- /dev/null +++ b/src/order_customer_comment.mjml @@ -0,0 +1,31 @@ + + + + + + + + + + + + + ${{ lang.hi_firstname_lastname }}$ + + + + + + ${{ lang.message_from_a_customer }}$ + + ${{ lang.you_have_received_a_new_message_regarding_order_with_the_reference }}$ {order_name} + + ${{ lang.customer }}$ {firstname} {lastname} ({email}) + {message} + + + + + + + diff --git a/src/order_merchant_comment.mjml b/src/order_merchant_comment.mjml new file mode 100644 index 0000000..55ad196 --- /dev/null +++ b/src/order_merchant_comment.mjml @@ -0,0 +1,31 @@ + + + + + + + + + + + + + ${{ lang.hi_firstname_lastname }}$ + + + + + + ${{ lang.message_from_shop_name }}$ + + ${{ lang.you_have_received_a_new_message_from_shop_name_regarding_order_with_the_reference_order_name }}$ + + ${{ lang.message }}$ + {message} + + + + + + + diff --git a/src/order_return_state.mjml b/src/order_return_state.mjml new file mode 100644 index 0000000..09faf50 --- /dev/null +++ b/src/order_return_state.mjml @@ -0,0 +1,30 @@ + + + + + + + + + + + + + ${{ lang.hi_firstname_lastname }}$ + + + + + + ${{ lang.return_id_order_return__update }}$ + + ${{ lang.we_have_updated_the_progress_on_your_return_id_order_return_the_new_status_is }}$ {state_order_return} + + + + + + + + + diff --git a/src/outofstock.mjml b/src/outofstock.mjml new file mode 100644 index 0000000..97df15b --- /dev/null +++ b/src/outofstock.mjml @@ -0,0 +1,33 @@ + + + + + + + + + + + + + ${{ lang.hi_firstname_lastname }}$ + ${{ lang.thank_you_for_your_order_with_the_reference_order_name_from_shop_name }}$ + + + + + + ${{ lang.order_order_name }}$ - ${{ lang.items_out_of_stock }}$ + + ${{ lang.unfortunately_one_or_more_items_are_currently_out_of_stock_this_may_cause_a_slight_delay_in_your_delivery_please_accept_our_apologies_and_rest_assured_that_we_are_working_hard_to_rectify_this }}$ + + + + + + + + + + + diff --git a/src/partials/account.mjml b/src/partials/account.mjml new file mode 100644 index 0000000..0e000af --- /dev/null +++ b/src/partials/account.mjml @@ -0,0 +1,7 @@ + + + + ${{ lang.you_can_review_your_order_and_download_your_invoice_from_the_order_history_section_of_your_customer_account_by_clicking_my_account_on_our_shop }}$ + + + diff --git a/src/partials/footer.mjml b/src/partials/footer.mjml new file mode 100644 index 0000000..1e0e891 --- /dev/null +++ b/src/partials/footer.mjml @@ -0,0 +1,21 @@ + + + {{if $twitter}} + + Twitter + + {{/if}} + {{if $facebook}} + + Facebook + + {{/if}} + + + + + + + ${{ lang.shop_name_powered_by_prestashop }}$ + + diff --git a/src/partials/guest_to_customer.mjml b/src/partials/guest_to_customer.mjml new file mode 100644 index 0000000..b4334b7 --- /dev/null +++ b/src/partials/guest_to_customer.mjml @@ -0,0 +1,7 @@ + + + + ${{ lang.if_you_have_a_guest_account_you_can_follow_your_order_via_the_guest_tracking_section_on_our_shop }}$ + + + diff --git a/src/partials/header.mjml b/src/partials/header.mjml new file mode 100644 index 0000000..cd94a48 --- /dev/null +++ b/src/partials/header.mjml @@ -0,0 +1,9 @@ + + ${{ lang.message_from_shop_name }}$ + + + + + + + diff --git a/src/partials/logo.mjml b/src/partials/logo.mjml new file mode 100644 index 0000000..df5e0e0 --- /dev/null +++ b/src/partials/logo.mjml @@ -0,0 +1,10 @@ + + + + + {shop_name} + + + + + diff --git a/src/password.mjml b/src/password.mjml new file mode 100644 index 0000000..9a5b217 --- /dev/null +++ b/src/password.mjml @@ -0,0 +1,40 @@ + + + + + + + + + + + + + ${{ lang.hi_firstname_lastname }}$ + + + + + + ${{ lang.your_new_shop_name_login_details }}$ + + ${{ lang.email_address }}$ {email} + + + + + + + ${{ lang.you_can_review_this_credit_slip_and_download_your_invoice_from_the_my_credit_slips_section_of_your_account_by_clicking_my_account_on_our_shop }}$ + + + + ${{ lang.if_you_have_a_guest_account_you_can_follow_your_order_via_the_guest_tracking_section_on_our_shop }}$ + + + + + + + + diff --git a/src/password_query.mjml b/src/password_query.mjml new file mode 100644 index 0000000..dd8a92a --- /dev/null +++ b/src/password_query.mjml @@ -0,0 +1,33 @@ + + + + + + + + + + + + + ${{ lang.hi_firstname_lastname }}$ + + + + + + ${{ lang.password_reset_request_for_shop_name }}$ + + ${{ lang.you_have_requested_to_reset_your_shop_name_login_details }}$ + + ${{ lang.please_note_that_this_will_change_your_current_password }}$ + + ${{ lang.to_confirm_this_action_please_use_the_following_link }}$ + {url} + + + + + + + diff --git a/src/payment.mjml b/src/payment.mjml new file mode 100644 index 0000000..794e98f --- /dev/null +++ b/src/payment.mjml @@ -0,0 +1,34 @@ + + + + + + + + + + + + + ${{ lang.hi_firstname_lastname }}$ + + + + + + ${{ lang.order_order_name }}$ - ${{ lang.payment_processed }}$ + + ${{ lang.your_payment_for_order_with_the_reference_order_name_was_successfully_processed }}$ + + ${{ lang.thank_you_for_shopping_with_shop_name }}$ + + + + + + + + + + + diff --git a/src/payment_error.mjml b/src/payment_error.mjml new file mode 100644 index 0000000..4623c90 --- /dev/null +++ b/src/payment_error.mjml @@ -0,0 +1,34 @@ + + + + + + + + + + + + + ${{ lang.hi_firstname_lastname }}$ + + + + + + ${{ lang.order_order_name }}$ - ${{ lang.payment_processing_error }}$ + + ${{ lang.there_is_a_problem_with_your_payment_for_shop_name_order_with_the_reference_order_name_please_contact_us_at_your_earliest_convenience }}$ + + ${{ lang.we_cannot_ship_your_order_until_we_receive_your_payment }}$ + + + + + + + + + + + diff --git a/src/preparation.mjml b/src/preparation.mjml new file mode 100644 index 0000000..e1a8f0f --- /dev/null +++ b/src/preparation.mjml @@ -0,0 +1,34 @@ + + + + + + + + + + + + + ${{ lang.hi_firstname_lastname }}$ + + + + + + ${{ lang.order_order_name }}$ - ${{ lang.processing }}$ + + ${{ lang.we_are_currently_processing_your_shop_name_order_with_the_reference_order_name }}$ + + ${{ lang.thank_you_for_shopping_with_shop_name }}$ + + + + + + + + + + + diff --git a/src/preview.jpg b/src/preview.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a1845b8b17d880f410ed63cf65ad969630a1ccbd GIT binary patch literal 72327 zcmeFZ2V7I#wl5k4M5Q;8-UUHGdX?DdA0jBdL_nlOKtOsRO793r7f`D7PLLLQ6_6SM zX#u1L5^69ZdHKHk?mqYKx6irvyx-aH_ul*MxiZ7dS~Dwij5+39qx=WNAH)>^gRZ8I zCV-3#0MI5K0OBgZOvBIlB>_|ibl%6=bzj60+a(~SyD|rW?^gu_S;?KL0%3p2aznTow z+;MY>fI5opw^uXvun&TXodCuwE)dX1XYp^*zjxW^7_=W^Q5s!r`T( zle3H08*d+9KmUNxu<(e;sOXsFln<$C=^2?>`2~eV#U)=#%j)VI8k=CvUt79+di(kZ z28V_xr>19S5kKbUSCMP$8^1QUws$axN5?0pXV~-Kf6_(b=YJ!M^#0!{`#ZWANpxMJ zpdhE9`jalQOTK>+&PYMYFMXNmz9E&Z2eW|8yDKaYl0MgVT@{oyLbKX=PF%Y#B)2Mz z`IEH2DEr?dEad+dWq%{=-{@KZJOo_&tB_wJ%@R2|X{IPhg_4T$&q8&D>aTL;|18)3 zD%5`#+P@Vd=_X{Pdyu|-ne?K)N_F*b*Z#K~#6^-=$`I!PG~{F?VIpS)009@%`7xq^ z{~uIx;`jdrEftkTJ)#bOgvcm!ZwL2zU5rmZp|lV~{HTI{{T-wJuM_{`$3IydDu#_? zU=&=u-EWyU|9@BA6d?jY zA~+O&x1h=sdU6QuSRQ*T@DDZ^a^mDah2BCT(c1$6Pn}Pc`Cqf)?0$BAF;*^j_PH2& z90o4X9G^o6Y?!}3Puh_Vfo|rv*&lgdf|{KDyuOF7<4wg_o%ei-|f$Af@Ho zVsE=nypMQ#EEtnk<1#N>DL3=oP=kd=G(QIL&#dAf^DZEH2e6~6gs($H0Ah%MgQ@^x z{!V266d`)z)IWiZGV<+i1NUkIalg6~7^#+g?y_oCAF>`nqadJiY>WvT(~Zjd!-f9W zZ+#Xo*7l(^#^c<(2bH_Y`3kPCH+rsc)6ucRR~`kMRgWCZYpv~<_?9i=@1m`zEX^%s z?|)hBTzJu(@fuw~XCem_w@+8*eFIt6i7e2g(lD*47J;3d*B{}7rI@pjOZ3-J`fj*$ z_ykmM7s`xx!NJ*1e=?fMAoJWN>+sC5KehaizcIo($t{ zdzt%u3u0agTF@_pXH~wrChgP42^(F_4)g(@@F1XgaLKXAXTJoTp3}jxC46y^JU)(x z{n@b)ed;@I`gQO&{Z(w!RPSjC;Gr+W#hx zn0ofx>1~dO*O()6`N$53Pn5fxDR?wDE@IH*QE5w-yo_5@x6!)MYDWCS`ZS;JbnRD_ z{6<(6=-nyYV0EtE-B+9UmNvgBAh)CLVnk@zL#&+##cP;0v_zcFa*lYlC{Mh2NEo4s zsRhYQJ^pqnL<*9mn1b`Up3^p*EC{l;|$N3 zj{NAeKkwcPq#swJvNHgCUt-?h5$1z->IeCV^LN^o?Csj!KKp@6z2@QbA#v-$?9Tk@ zl4|R%g60roTCUnVZ@ll$yyHtOG5`&=rNbLd@ysd6nc{S>z?(V0T-&aDSjo?ZR#~{u zZ`#gReqFl_J)mlA>Ls;Y#M}7kT4yxSBHu{>dB<}kaa6>5V zL20|tH^*Ev51Yr1DI?bkj6Qx{mB^AV)#x8}$=rQrD!;nSjs^DpeltH1cCx5wQ3FfL z&)R+57O{V2U4w4$@X@!jE;DJ0^-J^*#H6la54zMk#yNYBnw8nlx{=tKjuh+u%jKu;lVvdBXxD!(VaM zA>U4~iB<&p_Nq{Y9}js~GrO1sXy#p3TWCFBYl0=-Rn!p|lR~;Mxz1hrQ5F#K*|yNk zYNw_0n}UgnhuRsNBGc_BJuJ`b+Y)-k1ilDoya%w$ueY$F*l|F=yr=q{J$X!c!P4cy z1;NG!#O>lNO*LD_o41JoGy_=hw1NmovBkoO06VQH=y6EE(hdJW?Wrsm6ifcW%K-NX zb$%>)|Dn~xm2qaL-}tncN)=~cw2hqZdblLNuh@;y5RZ?hwxF?bJQLf1`c<@6th&(X z8j!&`fWkMx=R=KpX&`OZ@Q_5;^9aX#efQbPl}4fWIyf-CVR&cTo24r#@MFZQ{EUSm zuVQNr|7(AgRoFX*XFd$~7So6Igwcsn2J4m{Mb!-n>DaHDh6 zC1J=)lM&6S&jZ>1U#zsiZkgLHI_6J;Z#ElTfxN-q!caX`5qSp*TFqnF;bT74mo;r@ zZRYpCEf{0sSujmwn#b|f!&B$S*tpk>Qx&}hwgf%UWAPPD1VrIMpSCSN&1G{gKAvA% z_y5FlF`X=q?~HHr$`v0a0$k{0EYiDyVH_pVZ)BKFz9vhkcWaV`J^jg?dB^Xj(#+g_ z3O91TxCss;S8=xhe@VlrQR!pPJ+X@obJ22?52`wO@th|Kc@P7ngHVjH#kJ`bJ2NZM z)L2{PKOPROFh9C-Mjf;HhBtAU5~A<5!(Jj82vHqF3e z1?*d#{?ox1cVn60oNjjXP_`>0})W?8;Cgh19;U5?#U$YsH( zCssTryUEG9B`FN>7G@kF!N}0}u8Oag?A0=Oq`%C9dR-GwGvLCCS(|M!lJ=mW zC%WG`h1o%wOPZi3bt<(y zD^E89&1TtO%6JRvvJ|e*Om6ssTTEuSQ(2=wVY7R3Z`Bhf(Ea5O<@1|7LE*i=(vDMa zUiARuU8fse$6Ojpblq~y8iiW|WH2nqd%6q$uQD<*^xJH#DcQdKrN1T!6 zCe>N!H{1xXu@5LC`N8}9g2%A_4jw2g_Mrv(n_I0;>5rclf*n4E$)Am14k*#wSD!ge z4_A}O_tWZ8F%54}V!8{|sgD@@@tk?1``xpY#VB@>QlS)^{lH*9kUbJBtua;Zy5F&% zS9(5L?7U1zV0Vr#c7Ea<%w4ZRW*4R5-pW0=nv>}1*?V@gFtVEnpi!5^IzEZ*voOj0 zVpAEXGMgI6kccYKoenE^^x(n}PK-=LKp#GGH#-Qjo*l$=a6^Z6h;Llmf-c-{sDr)BB`og2#Akqr(9fJ=+1A7yBoC*9**w1&z=kQt{ z-Z%5H6#eD0OcHaP6%UvMoEDV-C>;&1gUDb&Zy`@tXvu=PoL_ILJWjE_p8F<4$JRm3 z+*$BvZ+*y^nJUxR4OvJpViNs}nfXDERK@Voy45&t))Y5)Vxxq00ErCNWDsrc z$4ws_nd;gYS(NV`u$7tOv{pw)to)4Ttk$~^HS(VKCJu6$dRZyk#t;b4L z;vLXuebm;bD_jAE9kTImvqNtJrBKv8oc+k4_x?}acnn|)nAb`xn>o*Wo4RTLoRz~j^B}@UvHG`1tuEUtJk1;6BH>Qi|hAD&0A=5yH@} zW>%u+uktlC8n>t3w{>NY6p*KJ@Z}YJb>ku$>$oxpUC98|!4lLo)^cn{`q<7?vX-__ zPd$bxyg)y@SR1Y{eB2lBklA0kBuH~_uxkar60goaRoOxBchIlHbOATSh&d;ZBxZEk zI?_y31(92S#e=m7)I#%7SjLscSl=H8u}{VmTQ{jWtHsrEkZ-|qwLhvWegWrZb+eP< zK4$?0GG(u4r$O|ic@ZE=pz}CZlnCghH67>>m_6P0@yc*JY1f9I21P@Z>T8-FQ;RVy z8M!{W;>;x*LfF8J5U$Er;csEx%OLmA%e|FAiy)@C{e4$?J>dzXM^SFJv^|UCycq!k zIyKU3em9$?Lg8pb{lFFXJ=|*IJ2<5pJI#_vbTtRgY}!j@)IZSscI;`O(w)iX_%#h@ zp`Ew>uc+?&#Nv1eOT0~PkMK?EZ%r_Tff)j53+V^pBm(tF*5jSny` zx7(Wem7_gb!1kgd+u7f}I^~>0QEq=RX`iG`>JkC-XZ^Vnh<%_VDB9w~eD{E@@Il1E z{?8FFrunt8I{zDKNosX3qH4d{vU@)J1WM|V0tYKydwl8WoU z=-Qh>u-}ZLB<#eQ#0wa4NvB zt`h-WH{RG6sA8Fs`jb0fGPO@!?{dsK4lGJhyh9p6ql5|rIDTV-8L-(a?s(?v{$;v0 z$BOYPaGLrhj8OX2ke9^tlM(q3dlIND8D< zoB0{^X1%N}i9BNBY(Ab7T4a9D{yCM~+*5{bT`2Xo5%^T3+_*#g$Sb^ z@yxrYzL<}&`HNY2fiui^N$hKL76mM$wh{K$QnTz^(Z>a`&q5B%JSXR^L;!^i5s=h_ zOuPtvlX$`H0s0I@KV=Mt+AZ@2Mf#9$^#`>>@=$vEOV}}4)JIH~Y@3G5Tui4fsMSp+ z;D@-*a7n$pK7B8@%JOL@=GMxG zcCkNw$V=V9KjdDId%k-ba=^Q*J}3d5s3(kPxJe&mU1WV3t#8w0V?zJ1)MTh@Ol!GT z>91*3J0XbufsJ1?h+a~}9@u(el7v7vw$57IBFi$TUZ4~{Y`eC+Vxnoj#~n%62@4<; z16{@=EZ}{hP>bBq)h+ym$*_~RxDr`ct{x;J&Jmj>^17q)-LgFX0@`&i{Sjzk*PPHl z*SzHCw{#BmMZKIwKp!i*F0@`$Y<@(X@ZYYr>^&OWBDebH%AKDUHCt<28K z-P3eGn|Z$~J5Khb(-f`@GAo%o=URX`#8ycN(49V{LnK+;fFTIp!zN>^XVbH3>2^2l zI~yOgVe73gvK==-1ds*BSHKdkjclv?}RQ|DXGhqI1?3??h3jHl#B)oCp?TSExL+Z6Au7PRYn1bDW# zbZgEo!!HxWz`qgUaF;}qcHQG~^#shz{8P`K-9XlRJmb;B=eT8MUa8>JeO|P|K~%u6 z91PRh>Ngm@WPJIYfiHKf^ex(rj@csy9yUl|=-Pp;4lchrdL?G_boa3M$&T8a#L&TE ztIMFlw_shCpm?3W-OtCtylAhLeZf)mjfk?T1olyD%PiWx*`~R^i_NC(yc)&$Hn6Ky zOos?|WdWP`^x~q|?#B*IGEgbaC-?3*6^2l!e%7cyNUaxJZ{i&JnyzKhtlMo1_Uyrz zmex-nf7k@y+NmPHMd2W1^lamy=|NGjITReD9D8)n9zQ;^tRn!5e+T`6fE^^X9N+uYIX`tX-)m)%pEzi8}OxQIn3ejA?yu3k3~zpJ+R-aq4Pp&l3>oC~2O zd?VS9w^l%V@$i>KKp6CK|M>a#x=423Y1`-me16nGu_nKWcKPYI2z9HgT`aP<6K>hn z8jG+SJL~k{`H&pbj+nEMn>o*Eg8i!Q1O9m0528C(ZgX6rXW;hR)^#g}F>tE>n3T#G zBGVCKk|Apa6g-EtCXoG>I+eI6IDtm{z(^Ljx2M|)N^BXW;5*5?WMgsb%E&Fkt^C_? zMboD#!}W^GR5w&xe8>MVMT+cIZ$Nvj&4_?*Wg>uYya}AG2LE~rtp9l)1dLRbK8WEr zL=*`>^{(to@whCKsH7)f(5v&fiHT=6$HtglLg*YMre|a6S{AUAqPB~qk3NB44xY*t z$0$a;S1-3m<``GJGmt$yQ2P=lf?=@a_a9oLDhje+t^UE=*CAi$ejQ?hiJQ&kn}JR` zzT?BasvQym!gDsP_f=%RboP@o+Au$t>%n;p$_K$6N!%oCauN=*PX`XYhyYg~#J;?Z zIHQ=07>6qFeIz`}yoAp7aF|`bbh`8bow2grIO*{RCAbhnfx?&kC(%HgG zAx|Sh+|8mFDYa+%EQU57_<0sX4Zy!wS;q_r9R_C$=LjvUbs}JwRD<9-01XY6CuDzD zsfaWG)rKp{JXU{!S$g~X=2!82pzmH)7_X@B{jDLMY&*z>ayJc;RN{eQ?`**H^YG?EpGN8A|RuBAdd$^jU6q9 zyw-O_%DGlJ?QRYgyQD=8JdVDnZozWiF}9=pWBs~Evs{MIZ@;$5k2NNxoI||wZwJK< zzb#rYH7dKc2LzYm6Mv8lL3a&IaJ2X8GQ$FOIcFcWfSc1#R{o^5q-$-Snw@H%g5m{l zhaUp8jzV$4ej-T4cj`dDKm%-I)h>?&y6}41&??HnO#6&eO1Us?)-vo~$|y_Rqq^oJ z3z_hK1;iFlwlAjo!Sv0q=!4!xo9;0U4SnTLb?psdnq|$=?h++$25lbHunVm)TfyS- z=9t9(>%Kf(7~b9>6H8{X=ue>rlb_Ai@;#}AlZP4;uJ(|3_A6Isn>SLVkOY9`PO7ts zG1KGmYD-^rI&^Ssl^@9@v8L`0kUL9%rO3SbB|&J6da(aaS;5`G@%!VfzcX<_2wh4i zI$jn91kcKYq)?L&tSmJJht3%jwC@c_{*d?~=>d{-fnVw1_uK59rz=7yk8Ob!>Z#ou z??JM`+M4HzBO*WJS!!33t)#6hUeoUZdlD}%`RVn{CV>$QAaFGW_>1*IzkT=yz>QIy z$yhPqFkt01)x^g6wB!9*@Y42=-_N-o8aMlg{SmI|na( zP10(9%=b9DDGXe??R59UbK@A%YUQTIIka?)?uh+4h@=kLL5H@nj)Zo3_yvD1yzJVF z9B&vAK&>WGrd8!<-_^l8DSsn0tgU7e zQNj5mtT9GpO$*PQy>`9Ceog9Q;8t#m=W+yyFtLlbB3>6Z_-!mbK<` ztr}^oq|Cr5lz!4H!7E`s+zY^pSBz9qdPXX7uT?!hz!K({zuC^{DOs(F_6We=;0;%n zulOzNtB^djcNIZ3A|8!168!CN^FWdg-s7uQTH(QD5E`^Xe%3&!IuF+J;k2M?@`1qw zN}`H^2&lj9A)eS7bL!&gCx$ZVvpsl<(7J$(<~Zq@Yds}xPCqz%iGW78YP6~8EYyix zCUEXs-4fQ}h*QPuA>Ozr z248p8T_OUWG`ACaW|H=9*6F+u(kfXJPy##Lcy_z~Gl11L+2GjL>MR-}ylTL{J)n(= zh%MP|y6x%eEpAq|BC@2Mia4&~U@xLHDcpVXSaz!cRbtC*BcVPuJu3N#)tDq>Y(4@38yc zCT4`BnW7D(;t3)XYS7hN?i@(^y-|BT|KJhD{TIuWGYx&**2;E~l)_qrf+0W?BEWHZ zet3j%?W!Va3PRK+&{n_MBBUB5(o7Y8>D9A%y<}IP@~XAd%h^k@1eB?3@=9CfO;mG2 z#IX*TTYQN~k+23Jb7d1G5f!hpgzd}iFwf*F4n+02VnN+J%xKLIS@a>t)~ffW?1huZ z^%`Tw7IpfyV^|+itW}9&=Eis#d0nmL6aX|c|78Ti~h5rDt0*xSKB!S)dAiiYhG#HRtU z#=v-u#vAs{DH|Zkc}}Mn&2|GD)!)?W@F~v9t6-%as1TeH!jIAFA_91B+hHeukyI%Aie=}PUteG}9IFm9+>(H7 zfY?Z5*9$IwRlk0!6Dph~mJ=3Ib2TO|Te_L%XNcO*qhw%2FV zsIjIOG&g^2G~nw}KEY&FQ3hBMk9?x^gwh8{TFUO#Jbpbrin*L_1Z$oSPQ&hv&vX~P;$^OZ&JHJ zfBVrt31KFEqS!s-*IYc0V|4zurnJu!YsIC7_Ns+|S1noiVA86IAp(Y;pb-~u zwFn=^K{fKDyEe4w$Y_y--Chfx>@s~Oe`jG-p(0&rvQI?Pjd#h9sn{#-%%t8rYJeC- zv^nU79}T`dDOHJ)POkF_K5W|G9Lc**pd?8S<{}RwQL^pIWy3ddT+Z1prb9RF19s|t zFAKf)4X{~XmeMJYuI@INcSQQ`eM9ilLL67mr5bRza?*-yZ zCL*3SL*u9y3=dstd}b#q3?F?Kj0YHN7``o|0+4l*7d`ij?OI~QKyJAsN0}eb<|nE$ zKWT{BHU%y+mD{5$osr3pSy_=mQZ(3th@KUfb&`X`?)B5`kM^S@q6!ObFWPO!BvHHN z28V&jJk-pZR8$Ms5)GOva_p_Qu|mDoZIpkYfZk!o%2h5qh1WjoRIhl`ox6B7gZq~2 zBdXD3vzti8gv$7;_OgYGtg-(4xDjzp{-49Z2xr~ukr|ffhu;eJ4CwF*SpU_lqlj=d z>4L4J_xH2<`>Fk}+>Pyz891t%jmgM33{)|!6OY0_9w7p1OM39)A-}753feW-Hm*qijlVg;jHWGoTMo8el}qs zUW*9O(g)Ra2xEg*4A|>*kOy?z7E`^_oXc|$J-6<%7HaYZ(Rw3Yx;*;}-712+knXJO z8A=I0I zUrtM*_ixYGWEqG0$&%jQI5)hn_LQQei61aCj<7}d$QL22$%yPh$UA@)bn7wisSsk^h%VLNx2<{R9mm}2iC9WGDBs^-aD{!=U@^UQZbkwY0sg&esto*n4qSHMwC46o zAp)vXE=~z=$XHnn?@|6;oon#K-doeY{+)Iw+_Sjc*IfV6GYW!es{6O}NS zP&Wrn9#pi*&Jx0mHFx$zM6crfgdFaJHW?0@IHUn*>G6YVlS5Q%hvM>hGT zRu@jkA1t`j|94{)BN|MNyr@h0l*yZfPl_S5wUq*A|Nyw)|@xLh3}@()Bn#KJ`ebc>|K z51W(_0fQf)J+6drz+;lPW<&fb5wNZcT#W|4%n)!KjvNZuliUg*!!|3Mmk6>0QCZ!VLR4_eq?-8PAU50#{DNuvLVNTy&CkvE|m zrhn4d^7k~7efkG%Xd(hgeBdJSAoWj12>(4J60vp$B(lTC@nt(ueEL17fAQrn0r?kS z{v|K}<970|b!7do{pDZ#?*IJI{nzv8|I^QDUgHT3mMj06bcO#%vRuTGpt+QR4id(z z9~d7X5-lHFso8TMLD`Y*uDYKvE7fRIJUD=kul@8}wA%XO3q-35tGA*U3(;6D-)>lZ zJhpTh)&g^_>$mtNENt+qobgzmIV)b?aBpVx)}&|Up2=D5L4)aLUY}HSu=)fE5DlWn z9_S(5UE3b|x)-va2&J$wu_qo-1Fc|C3!LJrdI_`=B7yd)EgL&Ch0R~i^zu^63pOum zieFr~v5}D+wCkpY8{Z$&Ixv+nYO|I4Wr~00du#}zCQL&a+FVz8?$6&Qi)3BQu)?hx8qo{to zGdUW$Xv<`|cyI6Kn23o7#{tckZef|h4IQ)Ly%DZzWs$u^+`X;>BEZ=k?~7Q+aFk^6 zCnJx|8af?^WiCqdUhXSqJl4Y3qaIl!fCh(4gQc3|sR!`o+TVg25LKKQBoMP1)24x> z56NRkGGeEC$ky3ZnG{+=6t4;l*1lu(8~JR`ypg6roA{yi$3;S0;2Mx~39o0s24=IU z+YaVen0>Hu7RA4)IG7uIm~gl3-0j%cstvJUmA<3b@_6^zIjA!Gg1+fXbq4$uFDo{s z3q&Tr%;;xen5R39+Lt?t*_mt74bdY(neW1G@!?Fz^BQ2i2T@BL7g_3Teg!=$Cl?8g z74agdbf592z_dJle_jvrCak=32Vn8G3TbIde}{=eqdz( zc(0pj-x7yI&8%ILkIpT2Myn5~U*Y`ymxWDNXd4IpWCuEAJ1$@lj}^{QyB&ABA5M%` z^V=2Yun7C>xq4-5p_yEp7X=p0grm8t($;ffXm3<&*9h$V2kvEz_+iRwFOWA_1@ai1 zSwNa7))NDoc|TK&tQ&TWoT*O5U%x)mxTM{58%#%K(_U+CbF^-qjjJR$%y}LGh0pTJ z-1Uu4v0>&sU=4zfMi-?!~l=G2I)+l3~t+%)xB*%12ltFaz7 zy4UeM|L3%7IX;aD@Hnw%J#Sp)otrw%#-ci_j%PldYKdcGB1t;*bR^WJ%z3A4i-**K6%m_A$8kfow1_W85rQx z`lUI>H0W)Frr^PR=;pJH!o1BN5eUIjZX?9T&kMPHxC#;Al;e&ZgW;a|X|1xoRRagE zs#^O#V6N{>^*_sD?S$MxkHvuILOZ?$_G0R2p}sWYag4deY~NA>IUzgPpAU z?_u3BqJ{q<+WGH&1^*e}z&|G&?tjh>1oD#>gW{T0Y=;U2%zLHHkv@zA(VKG7HtHsV z(@s7-8t&g(=CMJH|FM6tPhuCcRQVMXMFB^5|qWDmM!7gbDnD$I5 z>Dkc~-`Wh+S&9mqI6wk?L7uMCU$qEoHJx@{(E~#jlpy_jQ6J+E>jYMxf!84OYBI{c5Hg3N?>Z{*~sm=r9iuUMx%%9D4D{Y2Ms=M$HpviZYwKChl?4^s}gX$>9# zGE`5QVh}Nf&fe5fW5=-gpTiTk!*2N|KkP68NIobFVe^`}NC{^3J6cWM?A1|oEv8kL zU-VmYUbngr%)9KMN=h^l3Rg$3p2F^mtFj(uo!|HHIa*wp8b*FR|4`WEnOOOO z1D-Z=aLy}1nBt`cI)msSJTr~%QOnE{ZCaoDG{dbt)n-iZsOQtDxMoQ z3@KmM?7w$;MJl5ZEh#vncmPm=Uz5*~?FGR~;u|lnuSy!Ww~;*jzG?;+@%1cNLFj$J94MTxze#3+y+Z)4Sl$FH(Rnp)nxJ zU?p%1EJp5FoyS`8w0p!j0lApA*ErhxsGB0SI1%EJ#y{;U$iAKN>D+NhA~`iL#WDyN zkWgIXW!Wln2nMxko#hp?o{!*Ip+ojq3~7~-BIA>z58#^Rha+8t%NI53w0JFSIFddx z_tKO+SnB#N^UsQw_>0fqZh3eJNpTe6XRW8emeG?~ z`nggzaChmPg-a?^K(p{*z84Ujk6py6`FSB>-Kx-t0NX@uS4KY9Ypz8Fjmfh>F}de- zYn=VMibgV=6kk{k-SQ56Arn4_@k9Wx|H1_Ayieh2L*r4h-u~3nt*W*d{0eD>MGrZ6 zG?2)0k1$W>t^g) z4P?yLRPCK#=x}}`dwm(Z_TgQ+a2@#R>Ud{$9FRp_(hTo;Q8`FhPA`qj?VTl*4mEoM+bmB>&O-C5KYX2{!B+)lZRQk#81 zgo5M>T_yQtyB@-~GWcHM!I-A7AlzGsu?L{_fUMv* zp<_joWD5Vc0G?Gx`5NfzR=tjEsY_F>0c~G=#rJ6PQI?jE9s2o09Byxp*3X~R09HP( zaCx(kPrd#(z40@+%sCxlnxY~4U!uFx2YBu`)k#Xc ziY}n1!;Ty1Khfd+3>|0_lsutP)*OauQg~Qf2x!J~xiB(N8XLX^YytKt z?*|4t7SD};abX?+gTb7mYDY>5qWN*xeSPg%jh`{;@Bw7Nyyh6k2t07L6mMVd!qAm( zX&L)fD%Agd)Qw9*l!|UfSNN*Da&I}aEI)=LM$p{Z;C&Ec9HYV^KHNr&fv;-y=IB~; zcJT<;&q%Gtj)Pw;a~1R5lPnec>`f7uI>^qxBR=Dj1@^EK&96Vcu+*Ii?{PLwJIkL$ z>gk2Li;b-ReBdEu(2!HdzxrV{(nFi}ns@|eyf=>muh7ughRH2%68P;dFewycnVlUC z7&5CwP3jcRE4zMq5F#5FQ@u(A#K7s*jKQCm`~t0-I%0c04d^oLe*SSd-#?|#ZuGgp zZ_Vgi9i?qTCNjJd_1)D1arZK5D(?RsDD>|^qGbOAiu8^5e+QR-r+D@cFsRV~@=Qqb zNw^vwXfIiW!Vz9{jY-R5NJMVSL`H;^>)tg@Ps&^!dY+Ntf{! zs23aw0yeKMUNhT?pr*{Qf4ab+#zs z*RQ3yC8^W`9=BhNcVjp&y2FuQvbnX%)U@flVCOP}Uwe=B8fudO# zlbm1e7x<;ec9I7p`Qk!=+T2VUw*(@dPBSLy0@(SycTKMfEz7jez^_#2jvoa3MuSI2 zir_f+BRpFw{B|QR1H>5CK6wDS`(@e1ltU^KuV1pukz^~`0s$8LB}o*gO)Nr6lEMrU3|bsiT)x{o@CtE$Z+YtPv4s(1jeOM>J3wCtdQwoFg6 z!7`nnvY`72-ZeO-GbuqDBJZ`TZ?perIj;XF6i*j-$>WGL9u5)}I!<5o~%Vt2#!PvU$s~2K-*GloYh1Zy$q(|yD{0S;ieE0ax=k7M@Ul0K({)`hz|i-eH8pXh zzw_4m?j|n`_Lo;iHL8Zy=LlY-NS~aOuSXdlaVb47k^g;_HvYqP4`*~2hvmI!uGit5 zjDi5M@U2U4@2DDwl=WT*q$;y>(>F4QY`l)09ED^#EB;C`3AR}FX3U1mrL_RFoag)% z8f}8;ak$G#=!DdGBP zs)pQPWi3jDO9Tf6`7Zr7%8L7#)d9mF<4u2dfIbpL+A;3o4F{3GZ5r1kG~Vb3K4_jj zp|!NY+#P!>DIYBWTX1WMyACs8(qQ-Juh)ndQq9cLq)-%DqbFqpL9aSrMe?#(S?r!J zT~kSISYGfA=8pKi6Brxb*xc9{(`oIJ{!+<)nWCJ9_l~LuzwPg+tptUZ2=3RKPNH$c zd!OnyoduI}n}5$tLl7I2D7eOfIi#urr{QmL3&shu6l(Xu@9nn{h=5U7)!s>swRVF( z4rsI#rx`{V-ou&CblzlbX|p^)d!%u#=HZo>j7{H7WW_&qz7L(`)*6_<8D9v|o51T; z?X)Zvt)aXgBD{H)VU&a>-_!?R@37fVsX#O-n~06)@L$c z?h+LiGKwSPTaBO>qzGmyvxbRom;3BxTS(4}LzZ$lV<&Eb^KB|M$}dpBWJD>Nt(%@h z;-I%WV%{fxZPC3qAgw;%CB5U$loSa!=PJ(a_0jD`dU_^lYY53|F_cvRhUgoXsyFU+9Z#VgvG)<|Oi%N^>aP8Od-Qc_I%WLQ- zyRsC$vgjklkmG2LaC=p;K6TtT>mEGAlkF^9KE&O8B`jU^U17$^t!Ku|??QLO8EQN~ z)vc2!Xa=m{W=tXYDisSNARcvQ?L9fqY_Rz2*X-$q)Y;tc5@;=e(Mdz9Ms+ci4{dzT^w=m*qwwajTpf=laG@jP-iV)KPD{T) z)C2Qa=6cF@Q(EVSJeZshA5!>^jh;@&hku7S1CRhM)vJ``@6uDY%?D^)YzjfYDL$s-_@^3N%oxS$hj*4O{?_ZZC}72PkQV7_JJ50 zsxSHZ_UH1oVWHm0>;+e#S<{SgVD=#Y#L~{M8F{WuH;L62>uAYe-Xmf*;_){ofBLkT?-wz3k)uxWXRXe@X->5CO(#QsTj;Tgwa`{CQV) z1DX=o1cN*YDsAZMc?iA2HOCFmfZu04q3h=tOS6 zjl=6K#d-#Qod|f=p*M8fw(vu4lP{j>f_M3hU_A#hM4%F5+9Zmx{RVp=)$T(Z&^AHv zD~4v?C)LYKqNCE^xzu_=3%2;SWk-bYaD7vgP?CV)YH(rWEC}JJ$?oaz`u2QSdltji4`SKkVZ&6#u5kyuvJJ3#VRcU7{XIA_2&hpZ!`-nrWjDBId!J*#%7W1DS;4Ox=FP|cHMCZ^U&VcxI9 zdrC81y@2v#8VY>ICFfO3vn+GxDZ3Td@9Mpua*O1v=~18S+B;@MCfoFo#%&?s^!C;W zGpQ2s>vK0!leI&1P2&&v-yg2$m3-;sR-L7jN>7uVw?xOlm#<%dmJ5qU)g2oT+&?zp zirmu|&mR_H&z@k6ie_FrvdB&(_yWSb?dqvqKWD2N;dn>~*JrXu;4+ zr5MXTb=u=k!}O|I+KXt02Yih%SkRS*zq3P@C>iGYA~Axdu{ z(pw;k(wl&QfPhk^cS4W!4$`HDgf10d zo_asy9%J0uy}4@a?X&3;YVs3_norEROS!Z@Zf%AEFiVIrF#YKA);L(k8(?3jS9iU% z_q+B@ZQ3S`*%E#FhH0Fao=;DjhQD=8(^bk1H2enNh?Dn^88M>4H!8kZw6rjG{S1!e^iq4HfUD0LsBoQ--g1@l^9Z&9za7c} zMYK@6<~}I8y}GnikM!nHyS^Ltk>AUbtNd#Q~tNB{+~z29=^^8 zfnJb(C)24UHH;9)r|-@F7%lSkCfz8RSaJ}d9@qr8Ctl85o1+0D%_58YIRALD@SB@e z>6=E9>!}Y<)JLbrr&x;~TvXjrv`c&>Du2lQV(FE4JuD;+t!|sn+{C?}Mh7F@*VP+& z#8{Hm>nn>!cb=bCVmOD?vQOAPaE-ZP@o^f~du+q2-B-`2Rk|7Ni zo(r#ep~}0ORU^EYzO`{xB-mvN)nE<>j_$5S#ZxNiF&wN<*g33w6ixLy-?g8uE0Qm+ z+$;Aqg-4lSAQ8)W#-Pebfwsi6BswZnDz&Bw=q2SFT*)N%Z*}uRiEeRAoNfWP?v!X} zgblka$HnSj7cW-@jQL^%{%}41H^;^Q+fHwF{ohUYK419yzwq<>FOl{AC6wl0!R-7C zNY6jb8@^HaDl4j0%3zavRq)Ibz1DBf6UF0;pjsu}-<}HJNdd1#wV#oIXLKd_^Jl6L zdSKw0`9DAKU)f97G)-OnoZHp^P7(hP+PM4B#J`it@6-GZ2K#r|>hDjoU;ivknFYuW zHw9HVsF4=@E?a*mQ+m11!H+`+=aeHS_8r)zO&>c$EfW*PzfDM#fmANUeCS$yf2LTA zC#*5=XR>u@?qGp~%qv5~sV}j79MCIJXw4YVZs%wrritL+S z|4FqjTr+Mc3e7V5k|51&pz=`fL)1Ik%clQ^#JKqL;J4qv*>7I;s&Dhr3>N9B_?8^M z#}Fx$M;1nDN(E9q7nPKaTZxvZUZCU;Z&A2D?2bf|<(NtzQ&mTBkiDdn2p1oP&d#oprJeO(zRiuY|-^`umHqug+hd)~AF#GR$Z=X+<;m zGkPI)SY!f;CK>j~4JwhMR3hDzW^X=iwhEB!`wR5rChK*4a|NDXjO`gJ?DZ+x5dHfZXP?$2FA>~R1=H$dwORM%=tEbKF=MMz+g&wOh zTRGn1n*VfF31s)Tj(Na!DGgL?Hqk+%YN{TAIaZyDV$p_4o0V(kje!ddX}6m*kyb8z z?n0B#cq7=NE|V?0|068^|K0bPB2R+Xbw`14_|>Vs&)6a^bey#il4aNX%pMHaL|BxQ_IBDA{uP_q|OeCxyv86T8-z;@(g;?L4Y#DY=KG zKh!!F<_L&`C=@=b2nXF`rLvVA48gCf=tM2RkqmKmPZzUjg)`=#Ffn)yEH;y=m5AeV zQchHf*KpQlIGa|E^Wp8%F@rv7?D%s&k&O+MF!%A@JfpebePsaC!t_= zY}+GUisZ4kHmVy{q;fL839H!MB&5}2wBGq%H62)!-1)nP(wGu;}CLi&|2P#5!b3l;jxSaR)Uan>p2 zGvW=GThAM;N53;>D8L{B)2`y?YN;oy*u@@|R@MjmbT18Fx)4?WzFd0zoRu0y+4T^W z1jd8|;u5%B6w=zIXY5kx@e3r_igWq}3dNUfsuaLwzXJna5>%JoZp&SZ>oeBOJLuXH zN#40`WNJQpu^^!>+j-{`hp(k`G9S7H!A=_Dq;?mZjDDEVFKOq*kLS;{uo4M;UFO!( zdHwd+xz@htA57cF6va={4ZNlSq&wUlF{O(^17YrDQ0bi%Drrtw0g491+8U`l} z@Iw2(S<%1V4m;M2r*^p&w+duackE#6J9T1Lk3MD8WubQTe7#GW)310@9Rv{Cv8qJH z1@u+hDZXex(Qv-Mur>d=BA`aFg;a$-#ut5p^5n;#4tH6~872s|#+!+1O~oxpM+4%i z@To9{VPC7kw^1CeX>3hBybTfn&^$o=ac(=Jx zWt({=>P}czTYGKM^E5h6_rY^tM!cSOVX}CC8NQhdXCQ?;drcQo{P22adk)S=2wLm%~5J{5ALYu_HT(cl%C9$qqGFZM8dveXVTSsx3p%F zW(Vb?`)Eee_jH;nL^un&H9F{!bmcppVill5$6JmlIT!T%UK}W}&+qyyRHM^?R35m( z7(i&oaz>l+k2PI%kXW4(2$oWhgj`*likrC`Z5+`PF~X!yU8Z(H<^H>#>=51vx(T=r zP9Un7XjMGrRe(`W$7{8E>W>#-PI~P&_EI+Qnnyb(lt1|*`jGkdw;=8ZM{3>AmN!UL za0eWur6f?qBBLZ^f18{T1vOiE#1e7qG;Q2(BVo-|*xROeUR;M@E$1oNZ>j)sZ~Tw} zj3E@hl~CfI6W!#rDK*w!LQLHEar2pOY}OhO}qqC{FR9Xfp8+EfXG)$h?Q3r;Z&|4trC9eke#ng zKc7r_D16g~S?Kfok2;>8bZ}bD+fy>FkPF#3Qm_NZ8!YT1p=SL+yVXB5*DGMQ+-%ya zAtnTKlhIzI%;;6FjhyvGd;>Av&pQ!qIXm7jB37%B&6~M4t!Z#*I&F{-GjVjD8HGHTlc(v((C9O8GVm6B91}EiZvu1JI!H@!SSX2t8+h9rJRIGNyx6N% zf4i;!)xoVJmt`r}>rkEop|@!g`c)1o8dkdvA_x&3Ge1g~O5TJzm0uwBaAaDdze=nz zX_O>UP0(=vYVXfcSxX3{4!6YJt4?*?sy1LLZ8o~HTWb!Q2M7&GuaDj<=;oCYvhl6J z(&xNLFj#=*2E!!Nnfn|a_u0>G(y-oBbkb+mpHKa{7^nkUua~D+aL6N`CzO*o@R}80 zCYxbc5gBYMI!cntBne|%C9HRmN2i;chS{4-^(nCiT00{rkwG*kEZ`-YWzkVYrY3S6 zIzTkVAVyRS(^S(mdM5gY`A%?8OkIFFSxlPei}M<@?TvdV2Nyv1CAaH6*9$$9p{6EM zh4h`B2K;DtswO*uxAfdJ!BaJ}AltMquKHgMR{x&c5c#>*WXLs->b4PSAVVjgUg1ea zjhC&CyXyJr23_|S&=Cs45*j9yWOWZd>#0ix}86Lj$bc``ld|`QM-iH2Y6DQmb zsbmjsE;4B$fpE7S5|Xn?1q{(eqM1;~YAwm)IB#56^N)6Z(<{%|7TybQrw0Jw)*`_K zhipwdlV({{GhB4$xf(OSbWMD+Q8feT!!CRE;@OB-vbwo2E6*tg;LMU)JEjjQFT~c} zEfE&5+C}dx$bN4U8pMT7Eb!N6uc4=o$8+)g8ayhcy!nF&kMN~np4896;%Co?P{q&I z__!hH73AR(`1E&`sK{zFwubKwR$j@^4C*M;?n-Vd!}hg%1k8Dr<*iiin|Sun6TnxA zX9>A^c4qRUdnUF}sUHeF0+I4k>}|M8*#P5Wn&$=SVqVr$ygxiatoE_3*{C6s6xv@!l19H&qFyJDl4l-&DKvK zI>_>_STA__^>g#@BgoEOW9>RO{oP;4%xk?3Rk0nize%MUr-Ro+g;@D!Ml{e#EmODA33;0?qAF(H> z%xNkpIlA9r8yl*Q&aH1c?(if+k1tloI*^)t?3^HJO^sbp1zG=5j+?l|um*382xE)> zvDn+KD#2Wt0DQ63`H{&~(jd#@`;!;Qkay;erc`DjmHzBrjq-l;U~0l7*NND{Tq+d) zom}*~-Fpd@n!wqzQ08v~5@CQ*0{9ZZ_8xpQCy(1=h|L zTR?8b9Dalj_J{3n2bi&r!?|(MEoO{(deo%*J&DKF)%9jh?TjG-nzi`7g4WWrTp#<~WRJCLSfRO*N1HOnM-k-p(sSCgvBrJddCl$i`>U$JZjH)o zVZ~^*aEA{FR+(B~p0CMzq`>Gu9S64ecP(R03f$0aFD~cEf0c*lvPOR}Bk~f^1;q0> zt$=;>8A>1uCZFK(-2|;)6`ZKtzjV@8rtl*yiCLP_f@lHuNb4>xiQ8I^_4Uwz7Nz)Y zvQ{ni{{m%opnbJ^4opinIWLi92?x8_pG1EA(l5|k;(f8bypqilBAafSwEapIs&_?)L;H2i?z2pLLk`$(Gyx5|MczK z$SIEV1a7>X3Qnc@9*@pYn~XmVUg;pSu=Ak6`b4B~M052dL8six$ltK{)*w%@WKQg> zxNRz8K4M22F~YAkn@2x6y`oWaDy&7gY$gb{MMwHe;Hks3TASzFqg#_32hyP!sHS%& zo+0~k(it@#jn(=r5*vvAjc)8`)SR)%=3I8Bp}ow3jvZ1)|NEfSr@|7x%2+Pz&?JAI zq1b0J%{*bmSwc9j1RER%g==BZOmMCdA_OZ}Umug@HKEl|K5Ueca(&L^LwJv;!%O5+ zBKNncSsBzSb!#exArAFg{w@Y})%3JpcSN#YUA;cFy{)2^HnY^4?4uLKrEj!%<;UGn z0V(KNV%09%Z{xr>ss!&?J+V7NA|I@idn}mo=J&e&fAnicC<${sx_=%u12#_kd+nFM zfbspa>YLx)eaVzu=J;_k0dTtm7~u*0UbX|uVppO6G}r3#O5E}$dg-X^L}tVEM~6qm z9(@lGN=6U_et{mHw4e!m<-b4+l4L*K3=$B3X#Qghwc_Y%$xXoej~S;$3Ox)&;nb}F zfjA(R_Q;a)IC8BPc22>dWGBJCsspZtf0v;Rk5QWka&IJ7yh>|MhRz7x3| z^(ju{RT;D8$D_n6mhZRYQ;*CwCEiTcP5op4^3TbCbZE$fDT+wl>1X606q&921P3ot z=RNl;KA569sSyzs=!R~ebIG^i{Umsn7vEj-rEp_Ya$QyOr#ZKZ0>1SYEPREBfKRHkgLsJQ7*UHPsreG~;Mpd+NKR^ye@ z-!8=jkE8YjY^7Vl+HImZx;IqaoucN_w@um&g2laD3>}=#@K}%foul<07SC|lkL7kVv;Lpsp zUXCoPnwhv^C7&=YTC7xPTOq_W1rZNgZJx{bq(LTEF)Z~YWX&3{_$pm{7V%$Ev8*0; zNIjnWRphszWbbe6=f7fA^v{yZe>aUN`cRccf#Y8lSnLiA4q2Y>61FuTHB`}5;^?5B zyPxBEBVtIyrTgR!aadHaKev}$8*+Hn?8bz=MzI?1u&wCDA*DT1x-U`IV*z>~=j&oA z)E3=v67S(Uv283QK-C(fP)@YyCBP6d+VMHrYXtQa5(U=(8Npx!xcWs|;*<+Ax^q#j zre^DUZ(DVK8t4zY;jQOa+hF9Y{?vGZpa$^*g?Q+Ep1ja; z76O-m{&~a3y<||}*y>x_>|wXx;-*mH}?(u-)7*gjKg zKROp`V}^cN_13*bk_q8f=Ldt6W+mYw22pJkxYHP68~ zGCc@Zd=5`}bDt9XEdI0L$jw+4!C>o2X4CSs@fOX1+4U4Ecux(k`x3Bay&oh3!32j; zJ;0pQ_l9hVeGa;td7{_ed#-j=hex1DfJu36XI=Lb>;$UGHSZTjC*uT%yPW4VBJuPGBb@C9-8&R zsE5II1sVmu+3|eK@}j0IM7^8MC9*ufrt8kjn3(Uo&-T>?Mk{+8W##fV%zjdGn-u62 zIFrRZ4!tf~{AJ{>PERYBB~3d$L|%a7@YL0Po3TnGW z+X&$;z3Alo2J1Q^yj56{=YQ+RJH`6U67%Q~xI zt%v5X68kv5D|RlwhkS2!J}Tc~uIVnp;t_Dy?Z-w_5$vZolAY4CD)qm^ygdXy=CUqY zd+^4pS@Wjt?}g=Oyt_}Y0)%Tf#y%O`yvqn=EJ`$>KcDlC>FMnuF(eO_Wv%cf+-xV2 z?{LTTId#-iLf^EPKaXTVo{FRBsF8{tgPz7)LkWr4CS7v##nhT^LX!8q*B3nWFm!wS z3!#!Et$t5|KW$m=OE$t*ON`ak~Jn{&7d5B=ih(+OxS>D_?7sGNn^F>>4@M2U)A zZX0Tsf2D4VR}$^e!3)2JmwUvLKVYU<{RMiHYgkISQM6{pPR%zEoadFOF=U>sl4x#Z z_FTp0${LlpA?|Cfz(vp|L_^!C-&Ob7c-pqupqB5L2xIX=u;@;r2lKW%OQ!%&G#)tl++js^&3@+p*1Gg|B> z<0e~vVd@$G4Fm=K?2)*4lYjfJIMSbd!^fsr=y4Bq!bSFY)L!}yYPL9eR?Ei;FwqA1 zaOo>KbwGZa>t9Xg5uN@m82d?usPV75_cv?uzhp!H&(_cS-C;_m1h+VW*|Ssyx1y+W zVx037`BuW+PKwlbQS z@#&l31*m$Pr!1^l_%fa02oKJcP$#_k-1M8-+>{+pl0NrRg*fFq{hcGZaEmZR0Lm^s z)F-MoTP8wYCd1g4#E&aF43%`NLRqFsl}4teV>JUC=uLl=Aa=Ch1}dB+Ndy=vN6-Tfy12ym>0eViWb z=bw{_sb{m!7l&q}iMfEsoa7DLl2gBQk_H0Mtt!E_PE<(4P2vO<><{8S%vX6??%>C= zpNa}JoSof0FdzMr=cc-nxS?T&>aQ3WR+de3@Ayn?(%>PTL$h`WD!5e6g`03@2Q0h$ zK5L$im2CFcB#{lX+i&|Gnd>c@7Cu|CCf~@Gd(iJqVnm!ckP7WspxsJG{vu*yoIcu+ zPvDD9l0--?uH;PS>jV zh8xspvKxHLm!yQ$c(!+B3fYHvAHPxZhnf0Mldgw%GHRRH$vz>mmQGxWlzQjj$6wE@ z+Rkw-ZAj|6-qjTvo%Bi68*NITyJ@qK*CZp;x;`s$e`F7XrOSwvC8^invz*%A89#Co zpfm?|VsCDWewT-Wcdu9{uPiN{nD}!pqp~`sdi(oF5S_&Iy`jTXdK`5S!U4?Yz{$e+ z%_k=nb1K_m>b{5ADCia~tg3lALo1gl_08liQ2X`5FA#h&P;XKEgtK`H6Mn2b zxidr2Ca)is)!?Z;ld=xnuMJ$9DR;sF?o(-NO*W^`#f-^cpl`oG;K7PAF%L~@_g^3i zfI|QCw2>ai7y`CKMfyNdkwl9eFOvs#xaimN8qOI%srlO05bl>;3xyX!k9j`3+p)jV zZGb9P6<9;2e6iF-J_Y%jD%@6**jo}OckQUCnH^74@{JsKE zY0~V@h$NWYfkiYr)3($rT2Z!eq7I9mG3s@zP@^oX_I<=^rC^2|P7N!TiRYBKD-7wL zUMV>OuYKX2Eg6FV%x0-me*f?xNGh<;wE?7usoV~Bo;K7Ki(!p1bj$v@=-#Y~cI>)p zu+>7tAf2&7cTP`8%$u{9cW;3vOfvmPIIlGcbk1*66ZvtZaEg%qS@MN8mWaB=it2RO z`Kr-srRxk!RwBGZR%!yaRuo`~8#X0wn*?BQiFxVN2%c8~jxUwjX9mqIHk)dAtqut8 ztu0Xfv?GQyg!trmHjpU$VVBB8eU|g39sPn_1gl{^KQj|`7qGB@q<4TPoJVb5xVuh2A=2Vho=HSR)W67EaNzxK=a@->WSEURX! zPAc}H?<(%(7g|aieb7^LDd-)<4V|LLfBuw-JA|WHO}6VuaSCG@O)SF*yX_EvaePN& zhL>V%-E*HuO>84@-Tdbe4esQgmWM??U$1^mzF$<$CU{iZC;tAR)=i7nOv46dl|wZt1r>km_@;OabnIt0$2lpl_tW0It)PrwWJ!}|pc@*J@VoMKfV#50+L}sob zWvlbP+SNrBeO39Ym1!jPI-)?*qpWH;C0$}sNBxFk>!tW$Ljn@7izP?mD67i+1bz%7TrZF~^TgA6awJq{6AAISSVi@aj%m)7ZJ8O^%l@GB5dTY6}x(H(_$q zdcgD*LybbEQ0W*1N$Iq6?t{SqguF=zD6-MkB!Tw?%n@YulPs{*7sK!NcSQ1*Sh&LA zfg`pblgcOO*YyGOaq2o@l)!>s7REIwLtdv2(g4vqsbk&HeujfR^mms|=W7r;{$*vQoF$SSe(UI@iH+;#xt zqsBVFhepE(4kBiPv)Z)MlgmM_2?F+lC&e0%W9>->N1pzW#hzE5$kZlZlksEt;CCV6 zW$@cyAjYQagj}p>J?;dn5Sg_$!H}$%R%?0uY^RT5d@r)JZ`kih_tmAJG%i=J1zh&K zYam$V@C&351=r?;=xD)yu1OIjflyPm<^PS({=aCas{T7MGT?6r-(P0`{RbkPH;%NDH?1br`TEccm7&GxBB`k^16P-4Qbb>di-AqTbuKdGF+ zm#)rvgRswDPP;8Qp8l(JhG=E;m~7#Tae_J?<=37f-c5Y3e6~|yatzSNh;b*aNxwi4 zF_MyBXOA)CM)dqF!_N3I2*MRBe#diQo?&gPSR;M@!h0NUY!WZJmU5MO>dhJyJc%+%~!AZUdh84Y#rc!+fdL69l<;iG4;% z5}-4gfRNNqH%vuN-2j_jgPG`51#VKm0u3P?TcqBOG+qgjbclpKG39yoR<%BAj&<5{ zfZ-{wt22U}ETHu1#rGzjQu(AVjx(dQZAMh!Y23cDa@X8?)0uk zTYikxyF#xh$ofWpV*J{(tk`lAz=DuDjPKj-|LqU+9dZgiCv~NfNzZYHD^CzLzL?sw zn5uTcI8PQxrgQ^rMSX4%>)_|K zZiZ*?NO33v5{?hZ1Eqed*CusJM|ofj3hpUyr<)M%R6Ym_s_ryk^T#JtRFt8*&IJt~lDNW9g-`$C<8 zty~qvcH?5}>Z!~;_;uxaI(tvIt0xS9**sdmGVRe-UT0;zkV(j}Oa%1(j#0=RA!Xso z)vVa3i)#*WK+?vm8|SjTi&`Ps^rf+%CN%J67|z-GM28X$N{lqJ6(a3mdG>`vYX=dx z&euJP5h{;3f0IcNL>3l(|1@5nHEYHma6t@_SHiM3>bC9@UOfMq=&UYMo$@N%$lUVH z?Rhp~1snxaN$zUSe!ZU?5cc(-Zm3PeAic!I894CYmJ7Uvr}E1o=)KCvp<+sLttGDH zUoL8SX3LidO#!f=O=m*Nf#Cg*5kd#&_y#vZ=NB^9lBJWdCG>VNYsXKf*h-+@XHsSr zj4Ts-YN9vh)SVJzppO^5z`-aR7>EGTtsJfN zcE8Znj#0tAdsR79sobHK>=|Fdu={FQoDb=^@~&9w7swKJ#&{KoK8P|UUU99*!9gNU zjw0@<(nliu%uvysSkE9k+N%*6YR`*DbtFb7#-8cML935}yfUyP)90FPe;eA~J%}?d zJrrTZSB;0XQd1LXH6UuZ!JyCM(@!UEN?j=0H+0%sP>!^)8E~DUpOU)Gz!&nshbn&dng^{)gwB7zv0S*nd!#4Fo;d! zF|aeF&4rha*gx+*9!5_TYs;23&(b%(1io3tA*7jcBUAM~nwGisG{ASmD?hDOuR zpBTP=E?;lixqUWDxWgSanW#qy#;0QqLg3nY>vQbirB)?Vd~Z~0C^IqYz7ct3@M@;L zT3@g*3>0&X?UU2FiJ5EK<0Qbb<(5FEdN0mX9@2s$YdAlTW=v;XRdZ)c$3;KD#Fu%~ zs!Nq31r3&NEK3IWk|kxmm|3)3uGzjo>NUHB^C*BxMTf|1xn>wjjr{QPS$Kxns8{qb ztWjNf=0d(uDS_lom}yHswhrT{2QE}l5)}0jqVD5=5uFg+mv;3u0nUj5)7v%)#v9d<8Iuj$u%y?{-SZ_($5CN+ zm7|GT1kS~#_1Jw41=Pg)p)I@uJ2)x)O+k2KAF5ZCes#^qCZvQ1HC`zqOMH<1laZ#> zWmjpb!s>^UU~4FyQ7noupu0AC58M8eP!u&6P0XGsmSMB(%&Aw zo+b`LtM)|b|gtz5C7YC!qt|-FvUx*y8mVn z^p}v}e^$WvuLiXLQ@`&ou-g7bimpGHHvO5Y)4%xh^V5Gr{vZ4;rT+QMZ&$m&AXoku zQTr%ji7-Nz!e#iKQGYJ>TR(q+Uc^p;%PC3ys7*Rvqh0x0kImWi8rKNtQJ-YZNGIfN z8kTYjz9`T+n>dJ|{|x7jlL8lz6)chg)Ct@rcknhX+mvvl(;`HvJnY(`k6y`ZD2$`$ z#v(Eb`=~)MKtC|1=S!RyS#aOyG_vzL4JpxP)=iJu(3$M&!eFt}TCvfS*Zvoe)!{Y+=;VSYrc7w94}2ABSgGx+$h86BR+H?DuYv)ybQ9a6b{#XGTL zV?<;xONOSA%(;fHfh0klISYM_F_8hn^Ar}WzC%o}=_IB{a^^Bi94Vh76OODGi z?Boqw=W%l3gR@l+wmtJ(=NlhfT(}{Ynouz4Tr>GtE1R@0*!c_O^!-#WN_F`G?~~%l zp%06kU+CF9^+!~3?LzV~xYa@`vC*?Jgo#A}^hg1Mnn|=F0k{ZbL^BmqKF`|9YG$%s z#~OjlMYmyGm5Du`e3{= zwWaL$(n)JOGu5c)*2gpL+7CB-7GPu}kKyGe(wQqBn}-79$0f9^ z|K6)J$&0Er4TO`~7{s%-@%yRVuN`w=Pp59&ifdXvHn9~Qdr=*B!&P~f|y!daHc11nK1eD%UAgn#A zXgw30rWC36O|)5A%gJ|Qi6ayBJG$>l-e635k57{yz-6kZ0%8&p)+E;y)+Zdau~gj_-Q^Ywr8-kZL=^+=nx{EReEhWOQK#cR;1 z65hefMinPr3V(dbpR;nfSc!0PXR|DdftHxhJWccV+qvX?oEt_PV%VeJ`zU>#Fr7V> zYja1SLaphzy7B~d?syVj z*ttS4-?tFp-8q7|?9aUlzDA@5OiNn*?bnX8oPH)!l^doB*e@1dBFKG$1mr{0Q6Db3Rz8O z4Xm?xuBN0{L%OpaeV*v)ixmSAMAtEMF*5J=YqupM6-}#0dFpCM3YXI6mW3_kAo2a2VH@RS=veI32fi zsT82&NUL?-;LA#zf-Fz{0!^FDy3y&66f`!efyYGBk4Ona5I#7K1yFzYa3Q5K;K4!3 zmGoP$ib!wy4Lz9GA>4{U&ag%ClyR9uP7pAJ3wRRCsO1JCt6R;WC8OO-FAAn5wBTG5mi}o$;g(@%=U2HQ)1R3rtchs z>;3zx9QSfv)dsHMqZPZa!fzAeJ`)Xah5om2GX_s5)m&Ze^SnZ0x2s|@EJEg#rXDZ( zJ1%^s2s@(FC4lFtsfg}4ik3)WEqB})P)JY->TG{VC-EfFXcwuD>O0>puw>PVTZn+~ zW1<6D%o0z;WID9Y8!|N*VGy*b&|F&8Wd}c&9m5uS8^OG5ngi1h6DW7BKUlE}2xOjc{Kj!65y0#nc1dGP_OI5^ zmOBUD-n-g|M=2>e(wi$q@WXkiPwT?OrexZ^VZIZsAQC6RWzx~qM9}@7i;CjHICJmP(LSD zE%&;aj!JOxlJiex$|LlF;xACNRv6?!+a0xZ86NDO(TRlxHqqc_`xmQk{Y0>c-JHWx z>@0-}*wG|QlNiaOMt%(E3W%ys8!(|hrAiT8!4sL9_Cp`))k6U{8St?9u0MORX{hBVPt*3l=1Zvwsy zHd-xh;ANFqr!FJsoTMn4$~` zZOLsUjv{a$5yArN@O3E2+voeeFB%RDRcJSyrp?s zL*m%4#lo)soT8pYl@lfM3DJYQ@`D@QjyyZk(9WcT_1-7j-P09_S-EOr?Ggg>f`BB2 zCWfJK0`~!v<93=u(}{g|SnqwG?NbLtUv?&u4wn-;zs*G8A6|dzz{xsipIG-UR*fe4 zhLqdR^3_`*LiulYC=9svMIg5ctq1<39|ZI~m}+f;gJ*b8>mq?0>IhfNm5IOCIQFUI zj^5TgeopZP0UuEIn|YAKPXxhGK?IOeSYbc%y@+fMol=4X_i zO)kmwy}R68swQW^wjG49+@`Xv>j?bnK)QjK2`hw)T<_0V^XcE|x3arwxbx|{a!Q0D z8TrH4ppH4=F#t~bU9WKBO5wnE`lz=ZLZJJM*umyWr%ohdkh9-|ij)0dgzdv*GbRG` zi>h^N5E9Ead@(>P|M@Yj4`Uc1hhR>g*wTBTQZu z)ZbK~-4ivX+`UcLH3BHjPK)`=Wx)7zoaGg$~DV99J4+e}Nv4ZWLpKb)xLdRLrff zI&w;81%wnz7gIk!rIb#z@y_bb_^B#ZB!HAgQo5WA@Jf}w^PVPXE^BLng1_OA#6TU6 zSWWT*0JJl1)THOyz~M>Jj@ofhTVTQn8vc*^*YXBuyjk4{e@TAJ~&Q#vtv#JuL4U!dMF@b4#* zXu=**`Xt!XAGU5f0REO9P>o^-X@c|>iI*qPi4JM zfC}r+7FMpOyC`}EF$mFium-LpfR8D)9H3!u#DEzIgU|5U$dCqg%w)rZOHUp2lSRKA zm_U{9JmaDh?QoQ|umC-b`2-hkapBYhMz1?{Ivc2%II*wQ^Q?2FPnEL|S3DS=RgoQs+5X zUtfOAs$XX`*>)>K`DK8{iIt0K2xV&j#E(Dhe1BNu8BaCk8*ff@*H`UYzfaLw_SXW; zXOB2wC%i;~dV)I6qg8Vp+FxB&`1rUun=V3L=Lx+eNN;nXy~dLrs{u&sKa!okC;{CzrQEE1lI zM;`c$6g7y?M+eWbBFC#l1fCIslB0?w6$jGB+3%|gB=!YeEmPvyj-P#nYU?cWQ~%?- z5Cn*NZ?WiOelsC}o|Jm_7buZFS?x~K_(_~5`bbF3L<&eQ_-a7#HgxllNn{I&7Vk>f zHl2_{Gp~nRPx%#1glvuDri{zuEkn*dXVibuw!)nPVlbb%e;V1qb(1>Kpq(TFAy29B zfZvv)XYnT2lIa2*Gnc*Pjyg6ckC3pV_31w!g#2UlZ%K}i4yS(T7+(^7LI{e+k;JFu ziJ)H!if~hPq}5}2h1|WALM%#Y_^v5Kan|-Mn{^|@Kh*hx^`s`e;52Og%ir~5f3|wL zfBaqk_h+ZW>#~3B_mNrro0jo+<8bW{8_Ai@ydg8Ae`pY|osa&T?(xs(o*)%Ru9COS zpDxO$41d>0{@IT5`KC`Q{Zjhx&&ufEZ$c%%i@)lST1KpsOlW%pT z$aD3`xw*ltdkrSfO6RKU;@di%$&`Og$4Uftv+tkzPx6WXMdF{sFXeVv$WaD z)%B7=HGYQIwewO6uTqTR&G5LYU>*VT@)GTqPdRnM$wL9DN))3%<-sL(W;cFwKc-!E z^~=;86Uk_({Fte-{6IEXc?x6XlErrGoF_d@XVkGWQg&T`G{?kOT@WxZi63CNlcBTK zb}SU2;T7Esp|_P)X&DSuU>S9KC!5fS=@rj?P&Pd%ouJ(-)0eO3ApjOGNA~17s(l*}_Q5&Fz4M*)JDAwN zopBWVp}Gp4UA*DxW7AO*JcVktB$VZ%)x?519x$eH#q}FFym6??=)l2;DKvvUH66y* zcjej^+BwdQ`128^@PP@5Iq5VC(b!G?Y2^gFLW|3J#>QqHu^QJzP(DiB_g`OLjH0G* za0W*Z1r|1aTH5BS<8YbA>79g#*GLc9_V%oxF|~U(I#ettXq)o_c zXL)(7t5l5fx+R*TSfKBp*-*Q@OnAlgCXkieHLgQhZekhPc2A-eOx?s~R#Y{cQ|669 z;!cB7vu9^#*P3o14Y{g=$i6%d@^X6lu|l%vrOtrm6(8~A-h=qJ?T7kJWJnx+dunvMxRg^&Li zbMGC_1{k;hYK>}DhdqkcEQ;E#S+qt~?HQzMhDK@!A+5a?MQhgH)Qp|lMOAHL#I6-d z%plT}_kI63<2vIy@9%e=>-_B>BcA8^e((GK-1$ghSFU!VndpIK}2*brd~|FLC)sCYi>qTGAd^p)Bz>gDlt15amYeJ5N+CwrYk| zZ|mYtb`5aUi32unm|(URTz~5ceW~(BRcg0*KK+*z%q>A^+Ja;wD8Yg@>g>dM7aoeD z>Xg6CD!}!(seC(8m@2MvbXLaO1zx5oo!*`O+4p@uye#^2jz_2lSvL@x!GSGL0>Cvk z-aKN(1w!)&9Wy?EOY~$_QuC3IkxfMZH6S%KwhvYB+9X9(7$eVcR6F{vy$hUSoneHC zeI5xf78Vb!!}sd-cjHWfoI+vV^Kg#b4_+)d=7i91OFIKPX@GbYE+cv?l)mIG;OVd( zr|dxb@2Ow8${^Z)W5Z3eAXp;^DOfpyEzwOr`wVERzy}DX`)1bLn(qV`i~)0icVYG` z$mooc-ZWgo_tRETfBRB;DS&A}fNn+N6h7KkX|%m^G1^Sh+p7MOT6 zn)k3~FrLpcQKOcSzJjH44RB!bbO~Tyz(EB8?r?&`Zt0(_bdL~ z;j)Hc5;XIdx8$zp#I>(h}|1?Ar8iTm)Vdxi-*SCYwe9z zI`cM*9kPvR$GP30a6c>vv6dg;7l8S5DVmRz|3YL`SPC!F@`2^j6wMshN}PoC!Q=&N znL7#q15{smwyu!=j74(}xrGOP`^F6XVf(Na2aIW_U$t>F$$U-lyVbY`;JJm~ks1=y zOyM^x?pBqvMx>1}p`8z3Tbkd{XWA|jTWmlQug!JFme2h3Y&F-dLMoekS5<5sslIf( zwbq*yL&B6$&mc)k z3xxlD0#K!!Cjc?FJPg+QU{_TB!b|b>_&gD-^CxjCFGDP7hUk0Ef1=)%`K*jm%@X#p zFG73nLWTE_@>XNx)lpM5!SkNt0*!9GROw}R6GLEs*k5TRyQbKV=8pcONFfHH`EjldZXPn)0T-}XHqBeBr-SirS^@FLGYn>dyOP*FvhWjZWsMlu`JPtg zC4?XSNUxm7S8h>7fAMOzTVp*8^(`j`dcn>BEw^Qi``^ACQPQ6dyzFQfy5WU)@`zpe z;_oUMDeZWP4EvUt5nd@pzPfi(%tB8O5mVklSLX*5w89&eZ_(LktQ;NCDoOhIi)A6E zPan(Ku9EpV<2A{PUxv1#x~?xtXLy;lo1LVP=O*ia6x!6xzo$;zMX?5CA6Vja6;Gdn zN?W;`f?PIV<8-J8ebs@|yG(%`+I@qoKiq#Al|9*l?uh2sjG$va&Dszm`+PH+%Ir!2 zx@%$rF>YhOV5v`}73;}td zl3bY`2$+CL=k2KQO*=lG1)0^`E^0Gp6|!tOBsG;jnl%-oUC!} z%X8P-mLOr3gEht#7x_3>)IE<{@@;W@FP?@X>hSq{Rn*4Eu5kH&Of3-#(;^CWvVCvG z5i@M_a1%!DEWuo@9U0wV{nx@CbUMntp&0YA`)I!MJi4B;v(nUK-FmnmSsUgZ`IZuJ zN*+{oh(T+|p*>c|$QT(;o;xVOB1#Q@C*uj^8yRhDw%sXo_9^N2?YH#q=If)qV!Sgt zc$SvDU2_G^MEe3lpeB&IxXhzW%ilE_AgUu5%T@69g4@E1&Gnjilg3+Vr`h4cR;ANGGeznM3X%;x=d+g31chUss(sZ86*8K0Kt z^a2s-H;r`o)WyAM{ke>k_bd6##1L^|ixH`#M)~cOCqa0!ZO<;B5MiTlmeSj5mRoIY zxs`K2c}k4axbAse`aFl$y%1sDzQ39=$?tx$)6~I1HFtPl5ZOph_?L7b`TY7v!MANCx*m3!*RUJAczYma z#LIbQi^#J|uWK>hMCn0ORJ1UwezI51+)l{R;WcL9yd=8#S++Is!`w$(Zg5snq9(1~Q|f z%@(Wd_t(u8Ar}VrTGOP(l_ZHMZ`~?hn(>Azt9hfCZP|*C5K1*aHWTrCpYW{@uH9P+ zHJ&>wfn;MKKru`;DjMmFbql5k?!&$2gKk%Fuw}eRP0}s)t)+ZFnztkJ@&L;K)9fHq zc%xvT)%Y7OvLLhZD|uGdT0WAK5C?6$MxFkj3tz2;-#@0Ypp4_m@`1;}@7UoZ>OpH_ z5=OW$wN1Eu@l3}cH{W6#EweP%9MKd?(Y{BH_Me%|&e+XCJ%1WAO8!D}kI(X*1vuOb zP%|WC_22nqt$U^RsTyTFl~T8q<8R;dtRB2;16_&G;(8)`Xd8O*TxXSs8%=oI(-UGN zq&MY$6k9Rt^H5+CTv-1o-ov9PobiRz?>LsX>uXfsev9UI5DwRD0=rrhkR=3Bqp>3~ zd$nl^nCdEXwz#caLqi%=u)WD5s=+eEJ***Fl&jpM*`!5)J2(xwOE|**nPyrj7YTwu z`q7cLi~9K`IHx49H47y_=~pv2kTK{g?+_TZ$M5L?paP<^m8)7g!NC znHOt32WRpU`^8~gniFU-?eZ%*(whDkQ&{EG*LG1P*5o&r!|zrJKKY$namk@p0W(>C?9>A1Ekp?5;(y zr3^H_*9-F?P{UDM+K}lisiMDH<<1C=(BxZ_eDO;V1 zTkEQ+*^#d(13pV}HJqL2;_cqpTWbfQgdfis=UKd^U2yyw5;tSKd^?dtzgOa}1r+{z zyt<0xu;)}^GTw8CdkLVpW~W@iyUwDM+WCH7``#^=j$^FfsUUjMIe1j>NVuzFk$gH_ zk?1`4v%-|^58iXRnje1SF$Eh%zzr&oa(~xv5~>gHd0~L^1h2LIs#T1AH-~DZ5|{Ek zH1l}_o_e95^l)|Jk#qL9q^wp-QLVW0Z;OH+;S?E@gmk=QCl~Z&oE+6@$$|!qb}Q_Y zTXt@U%1l@;Snw-e8Nf=4@`enx1Z(dwp~YHS(PXKngRIYYJWp{S4pQX=9BOs6ODYBH z<~P9T3$HeFFABf%s0(wX)_hF6Y+tegl(Hd>Sw)61;8jGSa=Sg|l-fbgdJ*F%Vg^eC z_iELr=bpz7wK9w{>^&$rtK)xCEk6Kk5Q_2c-~^H*25~Uqa)Pu)?Vr4vWU#zZeY=GVmS-PdJkSZ0yvLukUE5_b*J>7>}tpUr{erx%sP0ooSu_USxvW+^C7Q*O@{ul+H6O?_*O>7hZ3(<4t0DGYY>u7&^p4UMJ1gm zLC$Tr@whDe6c>8*=h?q7Xs4i{a31d@=W?aARd_9+(v~>X_H;mXy-KvBOlwigl$Awn z`GQUnnDGTj^ue64SL(yQXFj8uTe;j=Z@t^k@J)GM6*~bk!OZyAB|dK6;Enc{=80nf zz{PTj)-LYdtsz=d)3}W~HG!uB%<}cfOIZ^NP!TLXj8|DnezKu)ubfNY)b10U z^0ldn!GG4j{Gc%ZL=+-qR=_kv&h?DdBVPdwsnSj}f=h1I7uyazfgH^Ep@mO|kT9vy!un3wv5TMzzQatI{h<{NMNtCb$`%$>X#%3By_3?*DZfL&M@IKUO z8)jg`z4S7JEo6h?eG;7*_C?P_Z}M&ey`EUZz*gV{9W%|^h@xOoAvKiU^C-0#Gm#+w zp4g9S#0egFL2SPtIX4l}u9lCCBxi>eo~l-lK7!@}yl)Ilu@pMu9ZByp#avTm1xgCs)#br z$(JOv2@^aztQsbnw?pD?!*eGE%zR(c^Kr9d@_JnZVF;!BvThy+0sn}@yeoxhPHZF7 zus}sYOlL?_^y&O4m^?dU2)QPPKsln!WnMmhH1-iusM6(+%i*pZ!%o2SwAPO5a-k50 zqP1oKj1xpenA7^@aenxe%G;S-?%@XCE!m7F2M~8l$=$+y|8IP}|AR~C|F#?ce{Zw+ z&sVRlD86Pzvjp$@*^^!b{c6(Kpt-4iBBI1O_^lCN!YZZG4SWUHg+*O5jn>tU z@@6at;i4OP+j~|P$h;)mVD2Y5hZ@Xvp%{iEjXt*>w-f?%J+9kcL-d{!)~J>lZ)v z?qA86#A821CWyC-dd~C@lkR2*&)cAQ4}<@JS2I+F6la{U@`~SQ`{fRkDwb=w$kW3&Y$Rw<)-)7Vo5VqPelPTso{a7Skieve?kvJ@&5tz_wU0+3C9 z!gnM7(Zs0a{JqD0Y|hDA%FJrYIzOmlKW8}<9=VPl180m({8K{aP0!HhTTpn^KMF@I z9U*eSRv7Pm5_e+8E&iwasNzzJ7FXf#i<3#mKMgA5ql2E7e10C+_9f?q8}TWDCul|Q zt&Mr_c}_~{z-6*Gbgve0A}$TCwr&2rhHN1*;?e)}~KaK&IH zid>l0Hby4ZeBG1n5D(;Rks&{Q*_t@A~q48w^B=`iiJszAVT71%8=O-fhnWK<9W(&J^m#Nb97bw*1J~L za)J!tcd~p64Ud1?VHuehW`Dm9uF7xto35$~Jec3#o*ho|Jn(Mpyd;r2P8ZH}buKgb z$6z}5P`-^NJu8I9&6zMh4TQq5`{xBtxyiXWrTv2J#J>) zW^S1^A<|%SFH^I9V#U`+?tncheDd%cFN!~|+4;%xr>C+(ReLH~A1gd<>=2SevpK^q1AT44FjG2^NHlb~M7 zw`_N_4%6WEX^0i)v6@aEXz#XFQBG`7{*L@ihUZcvYKK+x1Q7K}?}nPxLVfF1{%5pC zw7|@r43YJ-?2W$!vIH*V=Yv>&h+uZyAXuSg9i7Q5WgI#pmqvBP)>T37n@=K!vJh%C z-@_R^vVMkiZU&LYa%E5U7ZJmM*?zB$R}u9Hvc*J$Nsb`fOAN*VM=Hu|kbHjgW6fq` zwm6IWEIlPEgemXlYfs70y(2@z!}-jje-xbLhw96>k*!!BiSEImX`l!GG=W4*sJFq9 z8drIuIWPlpvZC}?8Wsg-dd|HAytlet+#Om>ll{YHAOh{r?>i*Ynwm=tWNahpNcUl$ zc!`*5qD{q)hlLHnYFItgcoOzhFmhvoZk9ZbRtjbfi!0?Wy|gh8Onp`UK~;S>XB=i& z=oZk_m~Wxjh>qO1YwR>r&vPK}(u_fTH*b2D{lxY?(JMO?Pd~HWM&`;f`S5!$sM zEJ##A;@blRi&iczTms1NlSbyrhWVK$*7y68?a~@D0&5aXW7lDnW6k`~{ z2-Ny7=w6S0AHVsiRQ>zgAcBJMKmwo(};YBs>mI%}*#hAs<{MkhF@aQ!elTu~Cw@0lXE=wZqLYNoK~? zFzgIgK@Yl&$e(CVfMDFm^?KhuiW0vAqI+JI@#;-MK58Ur zTZ_C_)d^NiC5NmzFGq$C!6Z(eM_L!kgbLHT3GYM>!f$1>fu0PNydsyk^p63r5`$c) z)i?1Yy}2&Xs)bUMyP`Z_4gmpw_wdDpL@iu!XoVX?rYar5-Vpbzo9(KOZ$@|)ON5U- zAFU;oVt48%hWD?pscIUUtuJC{;L02`8$y=?jzQ_*cCt_>P;%Br25e!MZQGVRbYuY| zfiL~{yrX5RR4@2?PR@V#7+9U{tIr5Um}b71;Xr98 zw7+Qz(QSEVU}yRv^p5u&V_2{K{g{1K7t4ufxj%q+d~_}Mk8a<9#@X&(Ws5^QBGRUz z497`oo=tVy)$?li8QyyUHOtE%KEGnBNpX+jn%(OXiF!!=Fd1@$ng`S>9s)65@b#I0 z6w+k!hbjw<5zpGgEjA9jW)E78IvS-S4duOV6bv0%K@x1l0@KD`av;HaLySE>*gek;= z!~2*Fs(%{V+cq0e{GByPWr!eF&zKPfktbvc=fkO=DZ7;pa@PWR*?9SPEoG-wB^11t z&C`v_iKMR1!=3w6sj#)SlbyS}fnPW!JUstVY|9V2{~B-QeXQnmSzJT;_8M1kkdp>vs6<6@A9#@=rGF{i) zkufwsGD&WM=6v99s`ArIQ7w(9gYWbs{zz-D&CMCKrq8Ug!geTf~#8>;+7mv|_y^KYj~8a8H{r+LX!Ll#LR{>}p-+gT{B}#GH#Kn!H^LBqFJh ztYDz2{qjGGd)uu<9#+}gA6aS_nqu*MRuk<;?o7=IOZ}6q)AtW49jz?EcBpF)@Yl6>2UZ68&lgeA=XB(OOxFtkjddD3E-QS-HGy}2$syCI}Lhm*JSXoAEI@>Nlp z4CWgRg2T&}P-0Ob= zKX?Co@%&B^=3*1_+%Zk+>k}BU1vPt4c>=^$CzcRIcKZ#rM0Zv0Pc}YBwq*D_N^qqW z`QN)+-o_NqXY{_5i9zS7U}rjQ%&(nq()J#dDG6Uo4D}a_^QL^xUcfO$Cb>#kxxhoR z-Z+n>JUG(i%AT^piwb}nxckWp;$U>R-YvO~ z@f^Hz``WfG-8lN?c!s5Y;QR&Vl-laqdHiI$XQ@cp!F7QLno>+Rll_&S#XPnQdH6`p zKB3TCXokt4Lq&IY7&4>~pkfoGUE1<_<`76uMv|3L@^?Pp<=6T;b?vBg!iQ?wC+OvF zui*&1NZ$**CJI@wX|Jf*PWJy}twov7&*t(W>8c%+`Hj2FG>gB-{Nvw{8esJ#tFBel6({|k{=19c|)_7XgvAn zQ{P>C4iQ$xFQt?o$4_=#?O3T@+7vDQT`&+$>?O!6SEeOn7v3iiw`ud$+92P6{6 zVZ&=ufUINiw2rbY`e(%aW+w*L1Zsm}J0mxXArg4lSGK2JvzIY{3^!^ zbn>H8U(hnoe5h{__(*)*oTjtRTZgHj)X^@4_9x$h(FZ1K1M+76)&~<~>vV*T>QU}+ zI^MqWvhZ`$G#Qg=PQJPce1{T!Dr{isl^5u^1_Tt{3%nyysbn4)=;ME)_HBNrHH231 zv1Ibn=&xD+$Km`f3-daaRb1ZlK~ex^h*=XnECo6=L~kT^1)C7+8qx2G7nm%pw-^op z6PJtLXep{uY$A;;O+QyqsIlEYpq1@|&UCSmq{lHb$5TGaG+>o|(RsiKhX+{6sF#gG zgFi`!Qz#8Da%}iz9ZyzAa{z3IDmHh6OqiSXW4?%gS;mLu3S!Y0DJEVbX_7!}znl zkH61D6Nv|=+LMo5qM|u?MIKW42(^{#^tl|@%}mT)p7-Ddc8XZ*kt8(aQUa$csKNvd zRjVf?E{g$mCcQH)WiOO1Wna`I+d3yVlXrew-j4;eXAXq`nwo*h0^zhiiYhkw9r8VJ zIwfiUWo!saM)!T?`|?&> z)c&B{RMwxaaAiq^+j-e@^-hC5ZYGKKwHV3>OqM1~?d))Qr7l!T(Wu=s%FeP5EbP=l zKn8HK;hN>b=a*Prq`t-qI+XiK>y%GFex`S>+Ix#gSuzJxwpVB-CP=brzA zXO!fdl6h`wNDqtLIfkD}L&k^mVyxQ0=VGkO>AzRV==#t9cXhD;Phb20M_ufHz3=?- zq62VT$d=@&ovV+spGmWx;`50+7`OSe`dS?l?I%k9ac;h7%hnIK^JcEE!6R(15I&`O z5O$w8PMhn4I3}&jR17~q3~J`Xg4xe+7@1F;ABxCzB4;4IWO}VLgn@wQ%e_%4n|N<& zpwtcSJ_W9>e()ke$PKW)%*lM0rqAR`uz~iy!;G2>^_|YA<1kJ;`4D5XyCW4SjVk?b z^8!m{;KCmJ$v=Us`*DB2*(`AnBZlb-qSiAUMg5%2mKWLMK@|mC}x$$ zfuWDzNa_>2#l1VwF79#(vWymfPHGJq8zwCw*4%TlWmF_5J4M_$SUxT0lds2s;yPTJKNy@#=dEt@ljM( z)I((Syu1)A%8rjGT7_ypaQn)ix{>_gupN0{h$2C>obVBM4~p*N$R&p-XU30(s~RAC zgA8L%7t|-QUb4UBsT46^tw(ALM3Caa?$D;oSqXW#fFmL&!}f%zjWTi@T0#ad1psl< zf|uWXxafV9CHiw1Q?&6kss8yd1meuM{lK!tExuyBEfE`U)t3N~XwK)6q95M-T_^Dq zjVG&oY_z&t*^;|=HKvJdDK-_Nbg@BRhIe)EsF%1LtU1~zYr9Lvo4&fjG{wW1h)ms9(3ur}V!sWp2(lv+ zZ;P|Bm*9hzzFjmo5w!YLNwk!#9j3RMhaK0jZ?~G}Mg>n%MVv3X6U%y=GGBdCd(ZMB zdYECBDr}+UT)H<{HMU3P2@V-1v6s8I^bkN;ne_X3Pu|S%`t&uM4#z0+Dkf4gDKsmQ zq3$wU$@FdKJ=_AfTpU!sJD4}pcEY=V{M42?!Z%yYvF$>e{+{D3A1(Qsxbw{niFvVd zso$S-b3%!AWmwFRs8;6MR8zELcIT(v_oqh3Y#;de_4Rxi1!|UZCAPiMOh3D>E zX;pyB{?Yhu{fwn&%NakJ<14h=STns8Xhi3;QKoSL(u0>?TqLbu9Y#+4RZV%>MMlO1?B+WAd&p^ZLB ztfK!)&%mRbbTlG?9wBcgJ8$l`%GH**!LPS#T#ImOz!ACGGw2poFEp2Q71c-FL`pMg zESJRzkA7Ej-fZ_8oF|QBAj12}c+(s6eSe=POVAIlbf~+HC_~np69CcT89R)ByB{|$2+S+C!;XPtYwpy!n7Z|^n6F%`)=vN6SFr|i`!f(-Rahz?@VqXnP z0PuDFGsSux{a4BwCJZL`VEfbtJ!EdaURT&mjf!ht3nt`I~?h-Hv@LA z)10Xubc?nyZCecNlxYo0lUCX<60?gP6x0E}r#LzugrF#U(Qp3Ph5o3wcI$jF<=#-C zs4c6_|2=n)yhZ{6nkA-g=(&ttZd2L)sfZ6xr{^I)%;nKnjXuU`415}`CM2)veEsVE zrq#2nDEiafh|8%FJH{#DE&HpOu87NCoYE@%Lyj~K65Y;CqMLlQ=R=2NbX6ExT>6@K zW+j+`oO7a%+!KBO{QYmU$axJId)9nXQ>}{2`mwOx8|a43gwm;o?x&r%+fGK6dUA+ z(0B^iJHw)|fj*5@U^%3*YF9413Ll|<%{_eufW2wGrNH$!+-b79^7vZ3IHr2JO%5we zP1))nyK$fDQPis40P`Q1CgIF$d6X;n%2qI!p65AQKh(G-M$d>|Wyi%i>5olxEgT72k-R@kP#+sYZ(ViulW<2*(pBZ1TCiw>HGz_$s0{%x)d6VZ}a|r;AbxzSxuTy_?_urZL`gNwPRXIc?I(p zt=T@gjQq%-9N2Yjju`7~FwWvXW+8pwV8~BS+w%DK+=Q(zJ-my=fsdYO=UE*H(R(`- zr0iZZOj{7LHNW`P&|pc6AyP_1uwNiOC1#gr*@RL9uNe-mI5UJM_MXF|K3!(|&6#!U z3b7ClwZ69PK@X*x(WkG`Uv!srI%JMJrbuQ;2^;L6A-w}zQ6S+KS`l@r=<^hSMA<^f z6`DiPiSEP#Lcy!4N*N1pk1{pcj*;oI+qrI}oM9%(2XT_Ai@pPhkb$dY2;xL^xz)l} zlP%|kbG+RY=E$W%m+SS?&N#^ZTk?+ZjNyxeK19;ZggyJE@R#IGrHayJ4!9j$MhFFf zt)A4#iUG8yD_K^%#4%Ow-my+ibV^b>O*_I#^PZ%=YRy}kZc^wI|LH0)@6=wqu44(I zdKi#sNv4_~S%4cV922fJxv9Oa!@4*|SW?9~AJRR3^COP607>3*fsv!DmkL5gW(bK~ zbX6z7pTy^m1ksy~r1Ts@dAEsgTh9prYtJJ{tj}`-pGt_8Bph~~Q%!*wRN6~hy#R?7^))2Fg)Z{(KXF-PE3;-Eez8cxUe^7ixPULT zSEmEch$KZgCK~~lcuCO3zaCvpODeODm7QqhVz@k7)SMP=u36C;V|eywq31x4kuQYv zhF7WxZA~t@=GE%2J`NFfbSa^i*~`)20WM!EAjF#2kLOtI)f6_}Df)rX7HaXO(7K@+ zcAt8_f+xR|1*Y6W2+T)Y0(b7X%D1K-AtpMC;;g_~ic^O7o0_5!=}ay$G=F`a7W(RD zxy4nTI(!GZ160GvvLwTHMtnprI0)?JShJ;5209q@^Aj7ldExGE(BpMG!$9ujR`XA` zJ`-$-L@MboydOPX+;Ha4U(|7Qgggu2?pXuIND?Ggo}-znj{--&TUpttqHIGd6 z=a{rCF=+qFC8G%MJGG2P1Gyfla9Tq{mJVMgV=r!NO~}6RY1TG!o`N{m#>hK!K6sw| zcvO^uSx3?HF~k*4eRQd{Y(>1QkhKe8NrDt>mDbTDIW*GRe;H`LN)=UUzd(adSKduj zrRwAb+7e=W6=r&=Qf#IhE~UDc-1Hv2X=+H+%lr=%e>A2s6!A)z=%& zZTx=pQQwzjin*m$#oKcSoDx@|qFsz`nwt{Wb`RX*CFbOU8Wb06Lm^qP8p3%$5xIEL zj@uY2C_V-H6u?{1N9s+-?KMK;!#*Al4B-};W4KUR%0#Tw5EGGC3utt!x;Ts*{ zD2w*5&N|{^seV5kwNEw41qTeeS04wd+7i<3R&sejB>HI#Y1pl7>-4;+v-sd6qe_Os z!ZTy`o1dD~eLWhupNzl)aesSq?>4Hk5v6gH1HJY=B$~F)99=Qzo;AG-DwdN&fK??b zJ?oDvL;UVN!6^!tSZxAtN9IX3&T+Ii6LOuvs#7-=Q4m-Wq0kuiNUTz3GydD8%7oXc zy(QSu$71kT)yI%4rJrq*6EF=OVh)Q9V~cGd2cvQQT!(7Rq8!S6#?+yvy1*NW67Ay_ zu0`Z_sovg~1%!=#BX{5lPOdbtr1@0|*K5xeKvY&&Y2&(;cpu(pm$uQ2yijuq7MN() zt=u|)cVG#Hcb}*T#jhtB>3*sC)|{noOr^PXAN6{ZD(4Bi@TzKPjzDCuLRuTHt+#23 z*~U-1k^ITRcr4b1$-@$ zV<+d)gwKdd&xM;-q*k*$O3KyG*Q3{Qc>8cr>Fr#RWfVLq;+gwvNsDw4(!RXyq7kvx zmZByq0Yb?iPh=h+@O50~H3q!~ajw*S#1hTHB`zpmL`7-7T<>W+450eN%H zn?LQ13O?k;K4$h%QQAf2w2=dzv^5`P#q4`HURTh>mhIFIF&uEV$VInT$q#{w5~d2( z6y4R4k~h>PtKqtrIZBWf@`9D;I+O^aFW+kQjjyuSD9V)s?lpIg&`+fVRdVWvzN32A zJ0wrB!}Q^r8U!cbd#+gqcU(#2Tm%I(Pc@eM%ls8ZuV!o9nZI)S|y^ ze0V4AY#FHPau&>;3kQnYF8X%1-ogH?>OkuMCUdxdRTYu`oVJGlPOlzb;fzwEtKQ|A z&45Iy%yW*4^^BZA9g~0DhhmDer1;Llzf(#*w6o!fAU&}nBzBW%@k&I$?RxEnG<`4>ZCz>HtXmCpnvK@*qS*}PRdPMcX z5HW1l5Kc|hozu?z&DFF%wUxxV-QFdx$#w}RnDf0Q7F=*+V8wQ;!Fc!Ue-!U7G#LVG z8nQQe8k#jNX6|PX>DaXNql6aW%L=xnKun&GzrW)kQXd!yA*RFI$Onrm2prgZ{hRB+ z4?h;G+tFBe?|5m0OcR8JTp4YygC<3IGP~_HHOV&`l%MAt5Wou+0=aWoMU@~8S>w4k z9~<;iN0#~UJ~TQ*)W7hBkBLE2s)&8pHAVT{j+j_Y0!^z{DD3(Q52oiKPCqIWc%d~X zms#h~1{ZSv-<*8-S(rG%&4)ZdCKGOeO??zC_9Zg+z4` zK44n{hRJ~wo6z-6!LQsG7KOhDk1$w5^LGyQryI7sMMv+*M+wAj`5w3_u7B1S$lrN) z#)5tL`<0*}&;BW96X6*tW3D?yc5{is*AYj=TiU|qp2)ruQc4X;@6tyMiD5729M*e1 z-^H2&)iA^}*>cp)1kc}SNEh>cwB*!)vJoTxSe0L}9QrVn`LWFSBrf@OR1-Jdw31w_ zPfkVUXuhSMc-fWz3tMgoBCPYi4Kz`m09wJX(m`&6xRq^e8s;&SgH0jbbUpt31pvmN zoIuZCqf~A@S(YJkzM;06|7EBsbvc-Ymgwn%>3a26X@M74ZWX{VGRf~IC4wjUvy%j% zV;^4s8uBf*{(fHivUp^7o4gCnYC2lvoYC?QZmlKzPF)Fv=qHhvThi5N7!lA+vbU0X*jmSsQFOc-0q_|?)JA?_y7K*FwT{vl{mTh^LbRxyp)PaAreTcdgQ1|e6TeU(b7&vFjOq9FUnr(kjn+;(&9#MN*Ug(7PW z=*y~@PWsDIF_=~b3Y1Y2X*GJ`^{Rc!n`z=$(Z*{3K=cXmB*e|llLNKA(o^Wrn*0*G zP-vS8Y^`mKBu`K{Lns~*>x^>Lhv@tPL4QUH6j@$YX3IlU4~hWTRG@F4i$T5*p2w1 zaZ{>K5O)0O3J2`s%iWyA71jRdg!r;uTaL-2`5+<@(8QQ&s$kw%Z#@evhfC zKWg5Ji!oU%y+4zzcOg_=&)r7uyFlqxmy~st6xIGYVyk?_@b`7I+vnD{djFDy108G3 zr>CZ554v>H9-1zgjXYAGT29NxYw5SOO_6@bf(t>0Ada9yxvuZE>WQNDKlexYleK$^ z->B(EUWk&dC)H?`)A1#Tp$my!SP48ZXnqv{g4$h~GZQ-F)_8~q4VC0otk?gZbzaPS!6 z>efB+FN)~R^RHUTPUY(Tn4n|wrnnKNhGX|Z)56qoB_}H%pof+=)}tpj|0wKHO$9@9 zn>Cra^+9_jOWXagxhpPI+%jU^xbFg)3xluD9M@N&LD%$Y2r~6_Uomex7)6TO5tROy zgFaNH?uF%Y4a|CbHM{%h{ZsM}$M-Tuq4^X}xYdNnoCs3BMfr>{g{L!WZ;9-~#c%E}0u`es=G02Q+M349CsQ#>Wci}4eG++%l5e_5jcHq%gsV`A@?`!t*l4Nce_ zB5j`2MLhs>8^nX|z3;gbBNNTf=Ot;+*nDP9y~K)$`nY)UWIg!>H_ zx3NZRKa<%pC`f}{vii`^B@5w(5Kdq7kR9UE@Tr=M7`fCXJ&;SM85%A zb+iR>FHSzuZ84p*i?g!TbapvX{-H^_<9)lq|4^~CFb0J*Vw=-voo_MB@?kY z)ER6Qq=uX5ufnr-DL~>QvIWy`Ro0DwseW^7fHxJogzrD(_EvMC`~ByK!{ftHPHa){cgtBopBseXa&{$Loj38#w;O*-RBWAxYvUkp!=4!Af~r-{H^fEcuJPo5 zwj_&YcQnqvZ-~S};@_*_>{~0o6J}em+c{|agfan1-?y{=) zXicr zn|p`IC8hC8J*B<=z);P}p3G-X`BC#r;x06_Cr5GOSj^fD72tySM{)Pq|6NLN^b_24 zA@2m3_=*6vK9%_tP~k3gXa@J5bpIV5$NzOeT>H%GVcg8Wlb@g^dVi zBDfikJ6xFj6st+mZ%uV)68+$49tHNi&i+OP{~OuIb7PzA+6S_2+ujKre&_>_JeR8o z4xW*zv)+-YD1`X&Db`B2CbM7s-39dDGXBi6-FWH+KajxM`VNWglOr2zKasb5PE|!o zxnsbrB}IZT?(_wcPy;ERTkN|XL1cGc9kAofCTcLk`4l{{Z z{xn_xbWQE`SmUmq2R3<}vlLmsA79Zp(vY^xN2P_no@AoSev86;D4F)RTFtM~IP9{e zH#*i_l?7WIyDC=IJx}meZLrpOFusJk3qE^vfc(5fbiCMNT*GFyf}(;Zq)d(F2NANv)S zxrT^^1fOeRK5p0uzw`Bz^!G0CJB=eEzYR_w1FZVQ+N`&~YjE{eJu=jJU)$08QrG^5 z&hS-i7;+vF`~>Gq9=}24G4qbQlGb~r=ifUERHK{_@f)mWsQCK3VEXdj(z{JjYa$Wi zm9J~f(*=$v@H#cEq*JhbOIE{cn;ODXiT|a&E02e&?fX-bC=pR)=_Xmma#xl@Cf!Av ztYNYzTb5}OvYS$fNMtF+l*yi%VvI11T|$)YHe(FRzRZke490lRv)%9g>3KfS`_%pP z&-=OmIG;0f=A3KJxz4rzuJ5u@ZZa`d4oD;0374P-1| zUA8n&ko6Si3f(j2RK@O+?Qx-(WOT${npYFb4U}_k%VYGLju*YB9AF(*3lja{ z^5yc?MYZ*S%(1=ZfDL_|0_X>9TYul=b^W#Ju?K|8XMio7nCTzz!IV>DxeC8alF$ByP%P55Yz?}@62HFX6zKA9&|aL` zUr)bqr1?Y1(a4#HuMA~RUJsvIGUM9in=X{f-6MEF;#R18Ou`|D5(Vdn*BfMIbM)ds z#^|maeyr{@=0&)|ILX&yx5N(mx8{93C9(Srod)eE_@RR)ENglWhi^ThSC=c6;`wIq zU5UZ9c73hiSl&_mi?Hysd;MRZod10`{I@^yEm|GH{ZgbK5G3DBf!D6{?$8y?W5Nv zW2Ihb-e&bzHB_8$_kHt1Ehcc1*y+;xVNtrkS%% zT*W6zA!Dw~Ka<$z zO+$MLy5$|GY*Z<2PDDO_BBm}&BWXJZCYt_uhiY8n+u`eSweMu3r|O#Lp`#wNRl{n0 zEXSEfW=J*VWk^7&daPfGzIxuhS~oMx(uX@p1CvMkYW8%~F#a8<`A;_+M27}jU!s_Z zIqcTw>Dl9W);1U^IC5xe9%tdz0qG5NDwyid(voXDYwA&1-R;!ZzA=+Z#sDYPI6z0CIPbb94hF~v2n+Zpo#Pl(kIyi%EY#s=>T{5F zhzZ|QE)prqO?oz3xhT;M`+5{3j(yx0Wv^|N<4&HMav2W_)XTY@qZB~)_D|lp7A~;v zz}D}^(RMZsgFUU5`3=rZyiKrsTs*3iep7p2*k!5Ob&o}V>BrI`#6qvi2jxh;f+Blp zVBn2$BljowtKQ5T9m)V;lfxabmMq0L^r1&$p4VP(p^9C~mLMcd77|cx#i6SPc2K3- zbw%jeK>1bTFU{?5dXGss;o^o`)!uCwZ)6rv;8{8&Ur;B4#*_RuS~5-(ACFg;l;BRv zbf5Y-i-U3xz+DiMgkSPng`%Wmn~lBtM~<^kV`B>(!V9!ks!&*Gg-Z3Gj5boz2P5MY zFuy$i7NfJT&;6EZ^7nc){gHCYR~+o&op0OW5-wzl&{n_EBol3DuwSW`t}j{GvA5fk z!do=ic`HI8;$3;}Jlt-C(0WMdFA=El62qQR#RJh&x9`dJ^tZ!^+#H3e#qg|&25n%v zvF72kfZbTSox<5pbf3hQ)iQ?k?uuv^m{1&OE5!iyWz0A1r#r=ZA@G(~p9qs6DAR?N zGYU=FSBYevERgkIX=$s^dYkx!mr2qqTN9?|0o({+hC2mE>`S2Avy)MEP?El*19cJ@i-vuikJ@Yg zH@n~O-TMKY1MH&>CMV!y{|U(2DujxdIJL+8>|W4U+m`PRd;FpI`Bgjghtv9PI530$ zZIEzF=3k6AxW04Bg9T*o5~#0cvga?$%9EA@J5y)HpOWM-upCCBF$$aN3}rvXL(AfsL86b>umPrW`ZkdQIZ*?rO`Q zH}YqW{8>i+f7hD5W(R+37ypCF)AxoT{%||~-|QE@p-=ds(T33o*&v`52TTCMgbM-u zL6d=R&eg8id1IVGFut^qKMAWG`13Ff?sPn&-%+|h%xe8O5W^f2FRkj)&>`jlL($Drm6m1CL0fi|-#cE*eO3Ar90vA2r1HH$lWA zwg;t2M>|3o{=kBvMd#Iu^jWc=}SW`Wr91vViCWJ(h zh3tHdMr9nR0e44sB_1m>oqk+y!fwqGv+PsUYDIcz1t?4om%2oOS5Iv zqL3x%#bxUXz!;E~r_Tt;p{&GUB6|5Bya>-R8M05BC3NS7dOv2!6zJK1ESU!txhS1G zh-#M>3{q zKH4r{NJbxXAsewVs+90~1FOGROi`%8Xhs(>I$eGW7iw!YN*2;=iw)0}+ z$qb87J7X)%nm0agQofOR-&U)^Mm5r;$_%j=zXvyB)YO+zBmA~<8aMm-T6Lpts-u1ABi$KS3R zW}FT!jpGd{IxbVLU-P*$`iSqg!=nl=?)N6LrU|?$&aX=!97b_u)6gHrQuo$$xnsy%mJtZb)i82uP z*)TUcs=;YMlc`CHF4IF5RrkG?J!)?g9Zj~};(U%ab|m%cI9NM!{jKvzCU51l$9Zzw zIpUs+s)0KjRtnjb+U1_VJORI-s!CI74okKs+f8BB(%v(P{!3jOk=Zq8SZ&^zDQYP! z8b`b5zG&S$f~wafvAXYeI1X;-+iH{6iPPbn@I{2 zP6Eo9vY0FC|Bbhz#EDrr50WKDBp zzuQpFCTfRi&{1ZLy%|zb0OlZtv!jZETag}Mc4a$}l?>IWWCn#dgT3qOShma<2?QTeLw{5$!ll!H> zqOfe)gM+q#>1xY3X->>P4t4!Hn{Go0LAF?ePG)u65MC2RJ5Ri+N_d&IT!()vd|?`%DcS3yqidUBV&=VrEh(%sQI&_ojQEww%VYuf@`>Bus%B=Y`I3T2h?_^1mNH6If)=4d`LU z6L@ofe>edhu0xqCV;)GLq&-DUfOVMN;d2!${K2S3Vq6AKJsB<&eyz>2$GtybOYSAx zt4u_AfJSSa5nU#6y!OH2L(FDVG1<@K^u$JQfjxkl7+|`!kC&ll(iLDTG^kORRE*Kp z+68^3=yn1EKZCpb*5_EMlwT(yqRUYjQ2SY?MLi7i3O6uB`9<3XiMd#_hYr|jj(It@$yy%2uhXHO&TV>(uAVP2iIBjzmHr6d%|n_t*1i_ z8&Gi^an@r}872u)Fje^=M*aG<_O((MO;o6lhXuX#?9oUIt8M6lpKfVPl`$ZVrUT>P zOjyI78S$8V1fL;!M(QJ0*23JUV;iY1FQ+|s38_Bie)aP}tSjH=%R=f+4iD(y=4E1x z)Nw$S;Ai{_K4dmRx!bNGBLNkSpn2fwb5;6dhKOPe8j)*z>CjH)K+Te->efe!;7Z}i zi*5AYysK6v92APmR8pDC07%GzjGw7N0UtKSgRWrNSET;8=7qZ`!lQN+k=MgGolB+8oLt zXLS7-iw#-44DOW}m##3w(GyGFm#_f^{wlf-4LNr0I}Q4kKN&!eZXG>-reu~o&SiU* z6EE8s7-THl_+xhso}5TWd)hA87w*}H*KU2g4n|8HQC4~O&{FWoG@w0o59~IXejf9`o{0Dqg`}!707IebJmqJIQb8&7unu_rK(Af*oT^RysX5 z%gQKKLu)>BW8fA~IazUk%O1o$MXjmM8<0UeiOrsW1<1c&#kM2&vOF5KpE)W&0?6?U z)f|T1Me$=n0=ALwmq)u(rkGcAb-wV!^LBbO{N&g-bPrp}hrGjNqsu<|1km;aY5giC z%>eKbLdqO4_!2AnfX;{uJf|-7TK{_uLA@49)URyTc$tTkYdlZNtl7t1nMOsOWfUB2 z3`TY9py{QB=;*k<2svLkz!BHNrlpx;D#6}No_NSrEH{gf*7!54+@#Nc-Dzi&n;trX zncr8iJtu$(wGm0PcDKoaHSbf(Z;E7B&~&*OTJ=aFR3mic#Fq-EUEYD(+>1Cj;W_;M z1LtMsY1yl{u1NrnzCS|)I-`d88B*v%uZ(JRr)H^ClE~zu{h>FLfk!DM)voKHG>;)j zf=S=IQ8dewo>vFif%9Av*lMGZklOeVdI%0~d!jOTxzxHX`G#|OV&KYC<>14FFZ7yb zqXNGr64iZWhCNhn3-+3rT@5Ew>0|_9$x9)-Viyph{F@E>|F!>Lkj~`HKcG9$cjRZs zfxZq|ZvM~}v+*#SVIoh^%6U#5<3m(#(ESUG)`&M=eb=dW!3CMvF_Q;R)8%=@#ExS! z;`*XOQoNLKuAk)!JqPl>bY&RZWE}wf;2PF7kRK1zwK&2d2ms{;Af>-P)L&ul*tyo7 ziR^N7Vv9i*Wq4@Xl zS?L**fK8BoDv}OFliE)vK*pSWM~L)xK#yfZ2*HIM(aHrdgeR>{2ke+`&1QOYv z+?-UBxwQ$sQ|t;~v-6Q6$q7HDXy;pvQTCyfz5OB+-adbOjD4^3*hTXvtm%-uyKm>Q ztW~5wkqth%;WC=*`{eL=d?>G|H&RIfucT}tlWL~Phaabq1{^j9d{)6u2U+> zTM8qTS>E)SmJ+h*XB6LLmP~SojSAJeyO@?Ca%1O?c1Fdi#$C7Lhhg4l9kfexdkXLw zb1%*t>$xuL`f-%L6g6&WTODL!|2iJnUxhuaoF? zLlJirH;xv_<9rcS;Usi^ahA?+alGXBZLr|)~N)F z=m+~_3#VzZcx*OCBy@}8z*%Y1apLN_8bG9d92$aZ=Pb7T^8;dv>QTG&#Dj#Uy=h!5 z=xO?LNBb4U+)p^Nx1wCUV4dXigq^CVj?0UUS7j*4Cp4PqmgbWdeN0}FN*@7}|BCqf z|Eq@oHq0cuJ@K}^CG8kg7mR9~NY5X9-7FpUGj-OcH1U-Mw zKMm%YD~C`wxTWD0oK4WA0#`^}-8#H;1*j2* + + + + + + + + + + + + ${{ lang.hi_firstname_lastname }}$ + + + + + + ${{ lang.order_order_name }}$ - ${{ lang.refund_processed }}$ + + ${{ lang.we_have_processed_your_shop_name_refund_for_order_with_the_reference_order_name }}$ + + + + + + + + + + + diff --git a/src/reply_msg.mjml b/src/reply_msg.mjml new file mode 100644 index 0000000..901d2d8 --- /dev/null +++ b/src/reply_msg.mjml @@ -0,0 +1,38 @@ + + + + + + + + + + + + + ${{ lang.hi_firstname_lastname }}$ + + + + + + {reply} + + + + + + + ${{ lang.please_do_not_reply_directly_to_this_email_we_will_not_receive_it }}$ + + + + ${{ lang.in_order_to_reply_please_use_the_following_link_link }}$ + + + + + + + + diff --git a/src/shipped.mjml b/src/shipped.mjml new file mode 100644 index 0000000..b0b13a3 --- /dev/null +++ b/src/shipped.mjml @@ -0,0 +1,34 @@ + + + + + + + + + + + + + ${{ lang.hi_firstname_lastname }}$ + + + + + + ${{ lang.order_order_name }}$ - ${{ lang.shipped }}$ + + ${{ lang.your_order_with_the_reference_order_name_has_been_shipped }}$ + + ${{ lang.thank_you_for_shopping_with_shop_name }}$ + + + + + + + + + + + diff --git a/src/test.mjml b/src/test.mjml new file mode 100644 index 0000000..d4edec7 --- /dev/null +++ b/src/test.mjml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + ${{ lang.hello }}$ + + + + + + ${{ lang.this_is_a_test_email_from_your_shop_if_you_can_read_this_the_test_was_successful }}$ + + + + + + + diff --git a/src/voucher.mjml b/src/voucher.mjml new file mode 100644 index 0000000..945a41e --- /dev/null +++ b/src/voucher.mjml @@ -0,0 +1,32 @@ + + + + + + + + + + + + + ${{ lang.hi_firstname_lastname }}$ + + + + + + ${{ lang.order_order_name }}$ - ${{ lang.voucher_created }}$ + + ${{ lang.a_voucher_has_been_created_in_your_name_as_a_result_of_your_order_with_the_reference_order_name }}$ + + ${{ lang.voucher_code_voucher_num_in_the_amount_of_voucher_amount }}$ + + ${{ lang.simply_copypaste_this_code_during_the_payment_process_for_your_next_order }}$ + + + + + + + diff --git a/src/voucher_new.mjml b/src/voucher_new.mjml new file mode 100644 index 0000000..665c8f7 --- /dev/null +++ b/src/voucher_new.mjml @@ -0,0 +1,30 @@ + + + + + + + + + + + + + ${{ lang.hi_firstname_lastname }}$ + + + + + + ${{ lang.this_is_to_inform_you_about_the_creation_of_a_voucher }}$ + + ${{ lang.here_is_the_code_of_your_voucher }}$ {voucher_num} + + ${{ lang.simply_copypaste_this_code_during_the_payment_process_for_your_next_order }}$ + + + + + + +